<?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>14868</bug_id>
          
          <creation_ts>2007-08-03 01:41:29 -0700</creation_ts>
          <short_desc>Import variable lookup optimizations from KJS</short_desc>
          <delta_ts>2008-06-07 02:12:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>15439</dependson>
    
    <dependson>15440</dependson>
    
    <dependson>15442</dependson>
    
    <dependson>15444</dependson>
    
    <dependson>15478</dependson>
    
    <dependson>15490</dependson>
    
    <dependson>15524</dependson>
    
    <dependson>15559</dependson>
    
    <dependson>15570</dependson>
    
    <dependson>15683</dependson>
    
    <dependson>15684</dependson>
    
    <dependson>15740</dependson>
    
    <dependson>15744</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3098</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-08-03 01:41:29 -0700</bug_when>
    <thetext>We should take advantage of the recent optimizations to KJS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3096</commentid>
    <comment_count>1</comment_count>
      <attachid>15815</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-08-03 01:54:26 -0700</bug_when>
    <thetext>Created attachment 15815
Proposed patch

Here is a first attempt at a patch to import these changes into WebKit, most likely into the feature branch. I wasn&apos;t really sure how to deal with all of the different coding styles, so I am sure there are some problems in that area. I ported over all of our later changes where we diverge with KJS, so this passes all of our JSC and layout tests, with a few exceptions:

* Two of the JSC tests require function declarations to be processed in the scope of a with block, whereas this seems incorrect from my reading of the ECMA spec. Internet Explorer also agrees with my understanding of the spec and the new code, so it is unlikely that there would be any compatibility issues with this change.

* In the fast/js/kde/function test, there was a strange test case about nested function declarations. The new code fails this test, but the behaviour expected in the test case seems completely wrong to me. I don&apos;t really even know why it&apos;s there.

I&apos;ve added the new and updated tests from KDE, which give pretty good coverage of any changes in functionality, but I would still like to make a set of tests with better code coverage of nodes.cpp than the current tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2970</commentid>
    <comment_count>2</comment_count>
      <attachid>15815</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2007-08-04 17:07:35 -0700</bug_when>
    <thetext>Comment on attachment 15815
Proposed patch

Need an extra space for indenting the comment at
+  if (!body-&gt;builtSymbolList()) {
+   // now handle other locals (functions, variables)
+    body-&gt;processDecls(&amp;newExec);

I&apos;m less keen on +  //### Document this, ugh.

function.h should also probably have you copyright info now

ActivationImp
  putLocal -&gt; replace assert with ASSERT
  putLocalChecked -&gt; return on a new line
  isLocalReadOnly -&gt; i&apos;m not sure but i believe VS will want !!(_locals[propertyID].attr &amp; ReadOnly)

VarAccessNode
  optimizeLocalAccess -&gt; no braces for &quot;} else {&quot; (and the closing &apos;}&apos;)

NonLocalVarAccessNode
  evaluateReference -&gt; s/assert/ASSERT/

nodes.h should possibly gain your copyright

there are quite a few other places where assert is used instead of ASSERT

There are quite a few portions of this patch that look fairly trivial to make independent of this major patch -- for instance the [int] optimisation seems completely distinct from the improved scope lookup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2359</commentid>
    <comment_count>3</comment_count>
      <attachid>15958</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-08-14 04:30:21 -0700</bug_when>
    <thetext>Created attachment 15958
Revised proposed patch

(In reply to comment #2)
&gt; (From update of attachment 15815 [edit])
&gt; Need an extra space for indenting the comment at
&gt; +  if (!body-&gt;builtSymbolList()) {
&gt; +   // now handle other locals (functions, variables)
&gt; +    body-&gt;processDecls(&amp;newExec);

Fixed.

&gt; I&apos;m less keen on +  //### Document this, ugh.

I removed it. The same line it is commenting is without comment in the current WebKit tree.

&gt; function.h should also probably have you copyright info now

Done.

&gt; ActivationImp
&gt;   putLocal -&gt; replace assert with ASSERT

Fixed.

&gt;   putLocalChecked -&gt; return on a new line

Fixed.

&gt;   isLocalReadOnly -&gt; i&apos;m not sure but i believe VS will want
&gt; !!(_locals[propertyID].attr &amp; ReadOnly)

Fixed.

&gt; VarAccessNode
&gt;   optimizeLocalAccess -&gt; no braces for &quot;} else {&quot; (and the closing &apos;}&apos;)

Fixed. I also made it so there are no lone returns inside of else if and else blocks.

&gt; NonLocalVarAccessNode
&gt;   evaluateReference -&gt; s/assert/ASSERT/

Fixed.

&gt; nodes.h should possibly gain your copyright

Done.

&gt; there are quite a few other places where assert is used instead of ASSERT

I changed them all.

&gt; There are quite a few portions of this patch that look fairly trivial to make
&gt; independent of this major patch -- for instance the [int] optimisation seems
&gt; completely distinct from the improved scope lookup

Can you be more specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956</commentid>
    <comment_count>4</comment_count>
      <attachid>16192</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-09-04 05:26:35 -0700</bug_when>
    <thetext>Created attachment 16192
Reduction showing bug in patch

The attachment contains two JavaScript files that demonstrate a bug in this patch.  Running &quot;testkjs foo.js foo.js&quot; with the patch applied gives the output:
--&gt; undefined
--&gt; 151
OK.

Without the patch it gives:
--&gt; 202
--&gt; 201
OK.

The numbers are timing-related so the different values are expected.  What is incorrect is &quot;undefined&quot; being displayed in the first instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953</commentid>
    <comment_count>5</comment_count>
      <attachid>16194</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-09-04 05:43:43 -0700</bug_when>
    <thetext>Created attachment 16194
Updated reduction, now with less code!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954</commentid>
    <comment_count>6</comment_count>
      <attachid>16195</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-09-04 05:52:24 -0700</bug_when>
    <thetext>Created attachment 16195
Further reduction after some insight from Maciej</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>943</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-09-04 10:50:10 -0700</bug_when>
    <thetext>Thanks for the nicely reduced test case. I should be able to find the problem today. A few things to note:

1) It only occurs when result is being assigned a new value. If I make it var result = ... then it behaves properly. If I do the print inline then it behaves properly.

2) It does not require the function being called to be anonymous. If I make a normal function definition for f, then it still occurs.

3) It works every subsequent time in the interpreter, and also if it is called twice in the same file.

4) It only works with 28 or more assignments in the function the way it is. However, for each additional declaration at the top level (including the function itself if it is declared), it takes one less assignment to trigger the bug. But after adding too many, it gets harder to trigger the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940</commentid>
    <comment_count>8</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-09-04 11:42:24 -0700</bug_when>
    <thetext>I figured out exactly what the problem is. The sequence of steps in an assignment under the patch is:

- Left side is evaluated to a reference, this involves getting a writeable PropertySlot pointing into the global object&apos;s PropertyMap hashtable
- Right side is evaluated, adding new properties to the global object and causing a rehash of the global PropertyMap
- As a result, the PropertySlot points to the right place

This can be fixed by not using writeable PropertySlots for HashMap properties, it might be too hard to be worth the effort to make it actually work right (you would need a way to detect if it has been invalidated before writing). I fixed these places and verified that you still get an 18% improvement on JS iBench. There may be other trouble spots too though. I didn&apos;t think through whether giving direct access to an Array&apos;s storage is ok, for instance.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924</commentid>
    <comment_count>9</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-09-04 20:34:27 -0700</bug_when>
    <thetext>I agree that it isn&apos;t worth it trying to make the hash table optimization work right, at least for now. We can just disable it. There is also a problem with having directly writeable array slots, due to the possibility of the array being resized.

I will make both changes and upload a new version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914</commentid>
    <comment_count>10</comment_count>
      <attachid>16203</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-09-04 22:25:02 -0700</bug_when>
    <thetext>Created attachment 16203
Revised proposed patch

This hopefully fixes the problems with directly writeable slots in every place they might occur.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915</commentid>
    <comment_count>11</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-09-04 22:33:52 -0700</bug_when>
    <thetext>Your new patch might have been slightly overzealous in removing it, I think direct access to __proto__ is still ok for instance (but perhaps irrelevant). Also, it would be nice to add a test case based on Mark&apos;s reduction to LayoutTests, and perhaps also one that reproduces a similar problem for arrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838</commentid>
    <comment_count>12</comment_count>
      <attachid>16215</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-09-07 07:05:11 -0700</bug_when>
    <thetext>Created attachment 16215
Revised proposed patch

Here&apos;s a revised patch. It has the following differences:

- it now patches cleanly against ToT.
- I cleaned up some style problems, like a few ASSERT usages that I somehow missed
- I added test cases for the direct write bugs. The array one wouldn&apos;t actually fail for any version of the code, because AssignBracketNode doesn&apos;t do direct writes.

I hope I didn&apos;t miss anything. There is only one bad thing of which I am aware. When I run the entirety of the layout tests or just fast/dom, fast/dom/constructors-overriding.html will sometimes crash, but I can&apos;t get it to crash on its own. The crash is in ActivationImp::mark(), which is modified by this patch. It doesn&apos;t seem to crash without the patch (I didn&apos;t try on my machine, I am just going by the build bot and Mark).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825</commentid>
    <comment_count>13</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2007-09-07 10:28:19 -0700</bug_when>
    <thetext>I found a possible source for the GC crash. With a debug build, there are assertion failures at line 2026 of nodes.cpp, which is

        ASSERT(variableObject-&gt;getDirect(ident) || ident == exec-&gt;propertyNames().arguments);
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57274</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-09-28 13:39:35 -0700</bug_when>
    <thetext>FYI, the claim in this assertion is that a statement like

var x = 1;

should first create &apos;x&apos;, initialized to &apos;undefined&apos;, before the &apos;= 1&apos; assignment executes. This assert would trigger if processVarDecls did not run before evaluate, or if processVarDecls put &apos;x&apos; in the wrong place, or if &apos;x&apos; was deleted before evaluate ran.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57398</commentid>
    <comment_count>15</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-09-29 19:31:49 -0700</bug_when>
    <thetext>Geoff is working on reviewing the patch and cleaning it up to land (possibly in pieces).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57586</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-10-01 16:09:08 -0700</bug_when>
    <thetext>Here are a few problems I&apos;ve noticed with the patch so far:

1. The ASSERT mentioned above happens because some code calls getDirect on an ActivationImp, looking for a local variable. Since local variables are not stored in the PropertyMap, this call is not valid. It&apos;s easy enough to fix the ASSERT by changing it to use hasProperty. However, we need to audit all calls to getDirect and its ilk, since they are no longer valid in all cases.

2. As seen in JavaScriptCore/tests/mozilla/js1_5/Regress/regress-159334.js, a sufficiently long script causes stack overflow due to too much recursion in SemanticChecker::check because SemanticChecker::check uses recursion to follow arbitrary `next&apos; pointers in a linked list. The same problem probably applies to other NodeVisitors. (The same problem does not apply to normal execution because normal execution follows `next&apos; pointers in linked lists iteratively.)

3. The HashTraits for Identifier will cause crashes if used in other contexts since they do not ref/deref the UString::Rep*. They seem OK in this context, but I can&apos;t prove that.

Despite these problems, I see some parts of this patch that can land immediately. I&apos;m going to try to break those off and land them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57588</commentid>
    <comment_count>17</comment_count>
      <attachid>16490</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-10-01 16:27:25 -0700</bug_when>
    <thetext>Created attachment 16490
reduction

Reduction of the recursion crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58863</commentid>
    <comment_count>18</comment_count>
      <attachid>16215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-19 10:57:47 -0700</bug_when>
    <thetext>Comment on attachment 16215
Revised proposed patch

Thanks for this excellent work!

Geoff Garen is working on integrating this code. For now I&apos;m going to clear the review flag on this patch; but he&apos;s on the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82541</commentid>
    <comment_count>19</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-07 02:12:49 -0700</bug_when>
    <thetext>This was dealt with long ago, and we are now on SquirrelFish, so we can definitely close this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15815</attachid>
            <date>2007-08-03 01:54:26 -0700</date>
            <delta_ts>2007-08-14 04:30:21 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>scope.diff</filename>
            <type>text/plain</type>
            <size>295121</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzA5IEBACisyMDA3LTA4LTAyICBDYW1lcm9u
IFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wb3J0cyB0aGUgdmFyaWFi
bGUgbG9va3VwIG9wdGltaXphdGlvbnMgdGhhdCB3ZXJlCisgICAgICAgIGltcGxlbWVudGVkIGlu
IEtKUywgd2hpbGUgYmVpbmcgY2FyZWZ1bCB0byBub3QgdW5kbyBhbnkgYnVnIGZpeGVzCisgICAg
ICAgIGFuZCBvcHRpbWl6YXRpb25zIGFkZGVkIHRvIEphdmFTY3JpcHRDb3JlLiBUaGUgcmVsZXZh
bnQgcmV2aXNpb25zCisgICAgICAgIGluIEtERSBhcmUKKworICAgICAgICAgICAgNjQ3MDA1Cisg
ICAgICAgICAgICA2NDcxNDAKKyAgICAgICAgICAgIDY0ODQyNAorICAgICAgICAgICAgNjUxMTg1
CisgICAgICAgICAgICA2NjIyNjMKKyAgICAgICAgICAgIDY2ODUzOQorICAgICAgICAgICAgNjcw
NTQ3CisgICAgICAgICAgICA2NzQzMTQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGtqcy9BbGxJbk9uZUZpbGUuY3BwOgorICAgICAgICAqIGtqcy9Db21tb25JZGVudGlm
aWVycy5oOgorICAgICAgICAoV1RGOjpJZGVudEhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpJ
ZGVudEhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6KToKKyAgICAgICAgKiBranMvQ29udGV4
dC5jcHA6CisgICAgICAgIChLSlM6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAqIGtqcy9Q
YXJzZXIuY3BwOgorICAgICAgICAoS0pTOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBranMv
UGFyc2VyLmg6CisgICAgICAgICoga2pzL2FycmF5X29iamVjdC5jcHA6CisgICAgICAgIChBcnJh
eUluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9jb21wbGV0aW9u
Lmg6CisgICAgICAgIChLSlM6OkNvbXBsZXRpb246OkNvbXBsZXRpb24pOgorICAgICAgICAoS0pT
OjpDb21wbGV0aW9uOjp0YXJnZXQpOgorICAgICAgICAqIGtqcy9jb250ZXh0Lmg6CisgICAgICAg
IChLSlM6OkNvbnRleHQ6OnBvcFNjb3BlKToKKyAgICAgICAgKiBranMvZnVuY3Rpb24uY3BwOgor
ICAgICAgICAoS0pTOjpMb29rdXBPcHRpbWl6ZXI6Okxvb2t1cE9wdGltaXplcik6CisgICAgICAg
IChLSlM6Okxvb2t1cE9wdGltaXplcjo6b3B0aW1pemUpOgorICAgICAgICAoS0pTOjpMb29rdXBP
cHRpbWl6ZXI6Oik6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpjYWxsQXNGdW5jdGlvbik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJhbWV0ZXJzKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25JbXA6OmdldFBhcmFtZXRlck5hbWUpOgorICAgICAgICAoS0pTOjpBY3Rp
dmF0aW9uSW1wOjpBY3RpdmF0aW9uSW1wKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6
c2V0dXBMb2NhbHMpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpzZXR1cEZ1bmN0aW9u
TG9jYWxzKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpB
Y3RpdmF0aW9uSW1wOjpwdXQpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjptYXJrKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6fkFjdGl2YXRpb25JbXApOgorICAgICAgICAo
S0pTOjpBY3RpdmF0aW9uSW1wOjpjcmVhdGVBcmd1bWVudHNPYmplY3QpOgorICAgICAgICAoS0pT
OjpHbG9iYWxGdW5jSW1wOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICoga2pzL2Z1bmN0aW9u
Lmg6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OkFjdGl2YXRpb25JbXA6OnB1dExv
Y2FsKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6aW5pdExvY2FsKToKKyAgICAgICAg
KEtKUzo6QWN0aXZhdGlvbkltcDo6cHV0TG9jYWxDaGVja2VkKToKKyAgICAgICAgKEtKUzo6QWN0
aXZhdGlvbkltcDo6Z2V0TG9jYWxEaXJlY3QpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1w
Ojppc0xvY2FsUmVhZE9ubHkpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjppc0FjdGl2
YXRpb24pOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpudW1Mb2NhbHMpOgorICAgICAg
ICAoS0pTOjpBY3RpdmF0aW9uSW1wOjp2YWxpZExvY2FsKToKKyAgICAgICAgKiBranMvZ3JhbW1h
ci55OgorICAgICAgICAqIGtqcy9pbnRlcm5hbC5jcHA6CisgICAgICAgICoga2pzL2ludGVybmFs
Lmg6CisgICAgICAgICoga2pzL2ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEtKUzo6SW50ZXJw
cmV0ZXI6OmluaXRHbG9iYWxPYmplY3QpOgorICAgICAgICAoS0pTOjpJbnRlcnByZXRlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAqIGtqcy9saXN0LmNwcDoKKyAgICAgICAgKEtKUzo6TGlzdDo6TGlz
dCk6CisgICAgICAgICoga2pzL2xpc3QuaDoKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAg
ICAgICAoS0pTOjpOb2RlOjpjcmVhdGVFcnJvck5vZGUpOgorICAgICAgICAoS0pTOjpOb2RlVmlz
aXRvcjo6fk5vZGVWaXNpdG9yKToKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6RnVu
Y0RlY2xWaXNpdG9yOjpGdW5jRGVjbFZpc2l0b3IpOgorICAgICAgICAoS0pTOjpGdW5jRGVjbFZp
c2l0b3I6Oik6CisgICAgICAgIChLSlM6Ok5vZGU6OnByb2Nlc3NEZWNscyk6CisgICAgICAgIChL
SlM6Ok5vZGU6OnByb2Nlc3NWYXJEZWNsKToKKyAgICAgICAgKEtKUzo6Tm9kZTo6cHJvY2Vzc0Z1
bmNEZWNsKToKKyAgICAgICAgKEtKUzo6Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2Vzcyk6CisgICAg
ICAgIChLSlM6Ok5vZGVWaXNpdG9yOjp2aXNpdCk6CisgICAgICAgIChLSlM6OlZhckFjY2Vzc05v
ZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6VmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGVSZWZl
cmVuY2UpOgorICAgICAgICAoS0pTOjpWYXJBY2Nlc3NOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNz
KToKKyAgICAgICAgKEtKUzo6VmFyQWNjZXNzTm9kZTo6bG9jYWxJRCk6CisgICAgICAgIChLSlM6
OkxvY2FsVmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpMb2NhbFZhckFj
Y2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKToKKyAgICAgICAgKEtKUzo6Tm9uTG9jYWxWYXJB
Y2Nlc3NOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6Ok5vbkxvY2FsVmFyQWNjZXNzTm9k
ZTo6ZXZhbHVhdGVSZWZlcmVuY2UpOgorICAgICAgICAoS0pTOjpHcm91cE5vZGU6OnJlY3Vyc2VW
aXNpdCk6CisgICAgICAgIChLSlM6OkVsZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpBcnJheU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6Ok9iamVjdExp
dGVyYWxOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eUxpc3ROb2Rl
OjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eU5vZGU6OnJlY3Vyc2VWaXNp
dCk6CisgICAgICAgIChLSlM6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmV2YWx1YXRlUmVmZXJlbmNl
KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6RG90QWNjZXNzb3JOb2RlOjpldmFsdWF0ZVJlZmVyZW5jZSk6CisgICAgICAg
IChLSlM6OkRvdEFjY2Vzc29yTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXJn
dW1lbnRMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXJndW1lbnRzTm9k
ZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6TmV3RXhwck5vZGU6OnJlY3Vyc2VWaXNp
dCk6CisgICAgICAgIChLSlM6Om5vdEFuT2JqZWN0TWVzc2FnZSk6CisgICAgICAgIChLSlM6Om5v
dENhbGxhYmxlTWVzc2FnZSk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OnJlY3Vyc2VW
aXNpdCk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFJlZmVyZW5jZU5vZGU6OmV2YWx1YXRl
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OnJlY3Vyc2VWaXNpdCk6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAg
ICAgIChLSlM6OkxvY2FsUG9zdGZpeE5vZGU6Oik6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2Rl
OjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2RlOjpyZWN1cnNlVmlzaXQpOgor
ICAgICAgICAoS0pTOjpQb3N0Zml4Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2Vzcyk6CisgICAgICAg
IChLSlM6OlBvc3RmaXhFcnJvck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6RGVsZXRl
UmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpEZWxldGVSZWZlcmVuY2VO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpEZWxldGVWYWx1ZU5vZGU6OnJlY3Vy
c2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZvaWROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpUeXBlT2ZSZWZlcmVuY2VOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OlR5
cGVPZlJlZmVyZW5jZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlR5cGVPZlZh
bHVlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpUeXBlT2ZWYWx1ZU5vZGU6OnJlY3Vy
c2VWaXNpdCk6CisgICAgICAgIChLSlM6OkxvY2FsUHJlZml4Tm9kZTo6KToKKyAgICAgICAgKEtK
Uzo6UHJlZml4Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjpyZWN1
cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNz
KToKKyAgICAgICAgKEtKUzo6UHJlZml4RXJyb3JOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChL
SlM6OlVuYXJ5UGx1c05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6Ok5lZ2F0ZU5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkJpdHdpc2VOb3ROb2RlOjpyZWN1cnNl
VmlzaXQpOgorICAgICAgICAoS0pTOjpMb2dpY2FsTm90Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6TXVsdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkFkZE5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlNoaWZ0Tm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6UmVsYXRpb25hbE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAg
IChLSlM6OkVxdWFsTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Qml0T3Blck5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkJpbmFyeUxvZ2ljYWxOb2RlOjpyZWN1
cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDb25kaXRpb25hbE5vZGU6OnJlY3Vyc2VWaXNpdCk6
CisgICAgICAgIChLSlM6OkxvY2FsQXNzaWduTm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWdu
Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25Ob2RlOjpyZWN1cnNlVmlzaXQp
OgorICAgICAgICAoS0pTOjpBc3NpZ25Ob2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNzKToKKyAgICAg
ICAgKEtKUzo6QXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25E
b3ROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXJyb3JOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChL
SlM6OkNvbW1hTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXhwck5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhckRlY2xOb2RlOjpldmFsdWF0ZSk6
CisgICAgICAgIChLSlM6OlZhckRlY2xOb2RlOjpwcm9jZXNzVmFyRGVjbCk6CisgICAgICAgIChL
SlM6OlZhckRlY2xOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpWYXJEZWNsTGlz
dE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5vZGU6OnJl
Y3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5vZGU6Om9wdGltaXplTG9j
YWxBY2Nlc3MpOgorICAgICAgICAoS0pTOjpTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpleGVjdXRl
KToKKyAgICAgICAgKEtKUzo6U3RhdGljVmFyU3RhdGVtZW50Tm9kZTo6cmVjdXJzZVZpc2l0KToK
KyAgICAgICAgKEtKUzo6QmxvY2tOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6QmxvY2tO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpFeHByU3RhdGVtZW50Tm9kZTo6cmVj
dXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6SWZOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpEb1doaWxlTm9kZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OkRvV2hpbGVOb2Rl
OjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpXaGlsZU5vZGU6OmV4ZWN1dGUpOgorICAg
ICAgICAoS0pTOjpXaGlsZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkZvck5v
ZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pTOjpGb3JOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAg
ICAgICAoS0pTOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAgICAgIChLSlM6OkZvckluTm9k
ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OkZvckluTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6Q29udGludWVOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6QnJlYWtO
b2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6UmV0dXJuTm9kZTo6ZXhlY3V0ZSk6CisgICAg
ICAgIChLSlM6OlJldHVybk5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OldpdGhO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDYXNlQ2xhdXNlTm9kZTo6cmVjdXJz
ZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Q2xhdXNlTGlzdE5vZGU6OnJlY3Vyc2VWaXNpdCk6Cisg
ICAgICAgIChLSlM6OkNhc2VCbG9ja05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6
OlN3aXRjaE5vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pTOjpTd2l0Y2hOb2RlOjpyZWN1cnNl
VmlzaXQpOgorICAgICAgICAoS0pTOjpMYWJlbE5vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pT
OjpMYWJlbE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlRocm93Tm9kZTo6cmVj
dXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6VHJ5Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAg
ICAgKEtKUzo6VHJ5Tm9kZTo6cmVjdXJzZVZpc2l0Tm9uQ2F0Y2gpOgorICAgICAgICAoS0pTOjpQ
YXJhbWV0ZXJOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkJvZHlO
b2RlOjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6
YWRkVmFyRGVjbCk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OmFkZEZ1bmNEZWNs
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6YWRkU3ltYm9sKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6bG9va3VwU3ltYm9sSUQpOgorICAgICAgICAoS0pTOjpG
dW5jdGlvbkJvZHlOb2RlOjphZGRQYXJhbSk6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6
cHJvY2Vzc0Z1bmNEZWNsKToKKyAgICAgICAgKEtKUzo6RnVuY0RlY2xOb2RlOjptYWtlRnVuY3Rp
b25PYmplY3QpOgorICAgICAgICAoS0pTOjpGdW5jRGVjbE5vZGU6OnJlY3Vyc2VWaXNpdCk6Cisg
ICAgICAgIChLSlM6OkZ1bmNFeHByTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6
U291cmNlRWxlbWVudHNOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6U291cmNlRWxlbWVu
dHNOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpFcnJvck5vZGU6OmV4ZWN1dGUp
OgorICAgICAgICAqIGtqcy9ub2Rlcy5oOgorICAgICAgICAoS0pTOjpOb2RlOjopOgorICAgICAg
ICAoS0pTOjpOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKToKKyAgICAgICAgKEtKUzo6TG9jYXRpb25O
b2RlOjopOgorICAgICAgICAoS0pTOjpWYXJBY2Nlc3NOb2RlOjopOgorICAgICAgICAoS0pTOjpM
b2NhbFZhckFjY2Vzc05vZGU6Oik6CisgICAgICAgIChLSlM6Ok5vbkxvY2FsVmFyQWNjZXNzTm9k
ZTo6KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6KToKKyAgICAgICAgKEtK
Uzo6RG90QWNjZXNzb3JOb2RlOjopOgorICAgICAgICAoS0pTOjpBcmd1bWVudHNOb2RlOjopOgor
ICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjopOgorICAgICAgICAoS0pT
OjpQb3N0Zml4Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6RGVsZXRlUmVmZXJlbmNlTm9kZTo6KToK
KyAgICAgICAgKEtKUzo6VHlwZU9mUmVmZXJlbmNlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6UHJl
Zml4Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWduTm9kZTo6KToKKyAgICAgICAgKEtKUzo6
QXNzaWduQnJhY2tldE5vZGU6Oik6CisgICAgICAgIChLSlM6OkFzc2lnbkRvdE5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OkFzc2lnbkVycm9yTm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXhw
ck5vZGU6Oik6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5v
ZGU6OmlzVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEtKUzo6RG9XaGlsZU5vZGU6Oik6CisgICAg
ICAgIChLSlM6OldoaWxlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6Rm9yTm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6Rm9ySW5Ob2RlOjopOgorICAgICAgICAoS0pTOjpDb250aW51ZU5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OkJyZWFrTm9kZTo6KToKKyAgICAgICAgKEtKUzo6V2l0aE5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OlRyeU5vZGU6Oik6CisgICAgICAgIChLSlM6OlBhcmFtZXRlck5vZGU6Oik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OlN5bWJvbDo6U3ltYm9sKToKKyAgICAg
ICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6UGFyYW1ldGVyOjpQYXJhbWV0ZXIpOgorICAgICAg
ICAoS0pTOjpGdW5jdGlvbkJvZHlOb2RlOjopOgorICAgICAgICAoS0pTOjpGdW5jRXhwck5vZGU6
Oik6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6KToKKyAgICAgICAgKEtKUzo6Q2xhdXNl
TGlzdE5vZGU6Oik6CisgICAgICAgIChLSlM6OlN3aXRjaE5vZGU6Oik6CisgICAgICAgIChLSlM6
OkVycm9yTm9kZTo6KToKKyAgICAgICAgKiBranMvbm9kZXMyc3RyaW5nLmNwcDoKKyAgICAgICAg
KFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChWYXJBY2Nlc3NOb2RlOjpzdHJl
YW1Ubyk6CisgICAgICAgIChGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjpzdHJlYW1Ubyk6Cisg
ICAgICAgIChGdW5jdGlvbkNhbGxQYXJlbkRvdE5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKFBv
c3RmaXhOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChEZWxldGVSZWZlcmVuY2VOb2RlOjpzdHJl
YW1Ubyk6CisgICAgICAgIChUeXBlT2ZSZWZlcmVuY2VOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAg
IChQcmVmaXhOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChBc3NpZ25Ob2RlOjpzdHJlYW1Ubyk6
CisgICAgICAgIChTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChF
cnJvck5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKiBranMvb2JqZWN0LmNwcDoKKyAgICAgICAg
KEtKUzo6SlNPYmplY3Q6OmNsYXNzTmFtZSk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpkZWZh
dWx0VmFsdWUpOgorICAgICAgICAoS0pTOjpFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBranMv
b2JqZWN0Lmg6CisgICAgICAgIChLSlM6OkdldHRlclNldHRlckltcDo6R2V0dGVyU2V0dGVySW1w
KToKKyAgICAgICAgKEtKUzo6R2V0dGVyU2V0dGVySW1wOjppc0xvY2FsSW5qZWN0ZWQpOgorICAg
ICAgICAoS0pTOjpHZXR0ZXJTZXR0ZXJJbXA6OnNldExvY2FsSW5qZWN0ZWQpOgorICAgICAgICAo
S0pTOjpKU09iamVjdDo6Z2V0RGlyZWN0TG9jYXRpb24pOgorICAgICAgICAoS0pTOjpKU09iamVj
dDo6aXNBY3RpdmF0aW9uKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmlzTG9jYWxJbmplY3Rl
ZCk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpzZXRMb2NhbEluamVjdGVkKToKKyAgICAgICAg
KEtKUzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9wcm9wZXJ0eV9tYXAuY3BwOgor
ICAgICAgICAoS0pTOjpQcm9wZXJ0eU1hcDo6Z2V0TG9jYXRpb24pOgorICAgICAgICAoS0pTOjpQ
cm9wZXJ0eU1hcDo6cHV0KToKKyAgICAgICAgKiBranMvcHJvcGVydHlfbWFwLmg6CisgICAgICAg
IChLSlM6OlByb3BlcnR5TWFwOjppc0xvY2FsSW5qZWN0ZWQpOgorICAgICAgICAoS0pTOjpQcm9w
ZXJ0eU1hcDo6c2V0TG9jYWxJbmplY3RlZCk6CisgICAgICAgIChLSlM6OlByb3BlcnR5TWFwOjpQ
cm9wZXJ0eU1hcCk6CisgICAgICAgICoga2pzL3Byb3BlcnR5X3Nsb3QuaDoKKyAgICAgICAgKEtK
Uzo6UHJvcGVydHlTbG90OjopOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6OnNldFZhbHVl
U2xvdCk6CisgICAgICAgIChLSlM6OlByb3BlcnR5U2xvdDo6c2V0UG90ZW50aWFsbHlXcml0ZWFi
bGUpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6OnNldFJlYWRPbmx5KToKKyAgICAgICAg
KEtKUzo6UHJvcGVydHlTbG90OjpnZXREaXJlY3RXcml0ZUxvY2F0aW9uKToKKyAgICAgICAgKiBr
anMvcmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAoS0pTOjpSZWZlcmVuY2U6OlJlZmVyZW5j
ZSk6CisgICAgICAgIChLSlM6OlJlZmVyZW5jZTo6cmVhZCk6CisgICAgICAgIChLSlM6OlJlZmVy
ZW5jZTo6d3JpdGUpOgorICAgICAgICAoS0pTOjpSZWZlcmVuY2U6OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKiBranMvc2VtYW50aWNfY2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoS0pT
OjpTZW1hbnRpY0NoZWNrZXI6OmVudGVyU2VtYW50aWNDb250ZXh0KToKKyAgICAgICAgKEtKUzo6
U2VtYW50aWNDaGVja2VyOjpleGl0U2VtYW50aWNDb250ZXh0KToKKyAgICAgICAgKEtKUzo6U2Vt
YW50aWNDaGVja2VyOjp2aXNpdCk6CisgICAgICAgIChLSlM6OlNlbWFudGljQ2hlY2tlcjo6Y2hl
Y2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAg
ICAgIChLSlM6OlN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKToKKyAgICAgICAgKEtKUzo6
TGFiZWxOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6
Y2hlY2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpGdW5jRXhwck5vZGU6OmNoZWNrU2VtYW50
aWNzKToKKyAgICAgICAgKEtKUzo6Q29udGludWVOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAg
ICAgIChLSlM6OkJyZWFrTm9kZTo6Y2hlY2tTZW1hbnRpY3MpOgorICAgICAgICAqIGtqcy9zZW1h
bnRpY19jaGVja2VyLmg6IEFkZGVkLgorICAgICAgICAoS0pTOjpTZW1hbnRpY0NvbnRleHQ6OlNl
bWFudGljQ29udGV4dCk6CisgICAgICAgIChLSlM6OlNlbWFudGljQ2hlY2tlcjo6c2VtYW50aWND
b250ZXh0KToKKyAgICAgICAgKiBranMvdmFsdWUuaDoKKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxh
L2V4cGVjdGVkLmh0bWw6CisKIDIwMDctMDgtMDIgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KIAogICAgICAgICBCdWlsZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
d29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIF9fWk4zS0pTMTFJbnRlcnByZXRlckQy
RXYKIF9fWk4zS0pTMTFKU0ltbWVkaWF0ZTR0eXBlRVBLTlNfN0pTVmFsdWVFCiBfX1pOM0tKUzEx
SlNJbW1lZGlhdGU4dG9PYmplY3RFUEtOU183SlNWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4z
S0pTMTFKU0ltbWVkaWF0ZTh0b1N0cmluZ0VQS05TXzdKU1ZhbHVlRQotX19aTjNLSlMxMVByb3Bl
cnR5TWFwMTFnZXRMb2NhdGlvbkVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zS0pTMTFQcm9wZXJ0
eU1hcDExZ2V0TG9jYXRpb25FUktOU18xMElkZW50aWZpZXJFUmIKIF9fWk4zS0pTMTFQcm9wZXJ0
eU1hcDVjbGVhckV2CiBfX1pOM0tKUzExUHJvcGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQ
cm9wZXJ0aWVzRQogX19aTjNLSlMxMVByb3BlcnR5TWFwRDFFdgpJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUzNyw2ICs1MzcsOSBAQAog
CQk3MDczQkUzRDA1ODEyOTFFMDA1RUUyQzkgLyogcnVudGltZV9hcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydW50aW1lX2FycmF5Lmg7
IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX2FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJNzBCMTZBMjYwNTY5QTEwOTAwREI3NTZEIC8qIHJ1bnRpbWVf
b2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IHJ1bnRpbWVfb2JqZWN0LmNwcDsgcGF0aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2Jq
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk3MEIx
NkEyNzA1NjlBMTA5MDBEQjc1NkQgLyogcnVudGltZV9vYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZV9vYmplY3QuaDsgcGF0
aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJN0UzRDJBMUUwQzYyRUQ0RDAwRUMwNjkzIC8qIHJlZmVyZW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVmZXJlbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFM0QyQTFGMEM2MkVENEQwMEVDMDY5MyAvKiBzZW1hbnRp
Y19jaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzZW1h
bnRpY19jaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0UzRDJBMjAw
QzYyRUQ0RDAwRUMwNjkzIC8qIHNlbWFudGljX2NoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHNlbWFudGljX2NoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODRBQkYxREUwNzBCNjI4QzAwQTNBQzA1IC8qIG5wcnVudGltZV9pbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbnBydW50aW1l
X2ltcGwuaDsgcGF0aCA9IGJpbmRpbmdzL25wcnVudGltZV9pbXBsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJOTMwMjA0M0EwQjc5MDc1MDAwMEM2MTE1IC8q
IEZhc3RNYWxsb2NQQ1JFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZhc3RNYWxsb2NQQ1JFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwM0Y1
NjcwOTkxMThGQTAwQUQ3MUI4IC8qIE93blB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPd25QdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1Nyw3ICs1
NjAsNyBAQAogCQk5MzNBMzQ5RDAzOEFFODBGMDA4NjM1Q0UgLyogaWRlbnRpZmllci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGlkZW50
aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkz
NUFGNDY5MDlFOUQ5REIwMEFDRDFEOCAvKiBGb3J3YXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1
QUY0NkIwOUU5RDlEQjAwQUNEMUQ4IC8qIFVudXNlZFBhcmFtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVudXNlZFBhcmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTkzNUY2OUY2MDgyNDRGRUEwMDNEMUE0NSAvKiBkZnRhYmxlcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gZGZ0YWJsZXM7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNUY2OUY2MDgyNDRGRUEwMDNEMUE0NSAvKiBkZnRh
YmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmNsdWRlSW5JbmRleCA9IDA7IGxh
c3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgcGF0aCA9IGRm
dGFibGVzOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzY0QjI3MzA0
NUI3RDZDMDBBOUNBQzEgLyogZnBjb25zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGZwY29uc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkzNzREM0E3MDM4RDlENzQwMDg2MzVDRSAvKiBz
Y29wZV9jaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHNjb3BlX2NoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJOTM3NEQzQTgwMzhEOUQ3NDAwODYzNUNFIC8qIHNjb3BlX2NoYWluLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2NvcGVf
Y2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CkBAIC05
MzIsNiArOTM1LDkgQEAKIAkJNjU0MTcyMDAwMzlFMDFCQTAwNThCRkVCIC8qIGtqcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0UzRDJBMUUwQzYyRUQ0
RDAwRUMwNjkzIC8qIHJlZmVyZW5jZS5oICovLAorCQkJCTdFM0QyQTFGMEM2MkVENEQwMEVDMDY5
MyAvKiBzZW1hbnRpY19jaGVja2VyLmNwcCAqLywKKwkJCQk3RTNEMkEyMDBDNjJFRDREMDBFQzA2
OTMgLyogc2VtYW50aWNfY2hlY2tlci5oICovLAogCQkJCTY1QzdBMTcxMEE4RUFBQ0IwMEZBMzdF
QSAvKiBKU1dyYXBwZXJPYmplY3QuY3BwICovLAogCQkJCTY1RUE3MzYyMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgKi8sCiAJCQkJNjVFQTczNjMwQkFFMzVEMTAwMUJC
NTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
QWxsSW5PbmVGaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQWxsSW5P
bmVGaWxlLmNwcAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQWxsSW5P
bmVGaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgInJl
Z2V4cC5jcHAiCiAjaW5jbHVkZSAicmVnZXhwX29iamVjdC5jcHAiCiAjaW5jbHVkZSAic2NvcGVf
Y2hhaW4uY3BwIgorI2luY2x1ZGUgInNlbWFudGljX2NoZWNrZXIuY3BwIgogI2luY2x1ZGUgInN0
cmluZ19vYmplY3QuY3BwIgogI2luY2x1ZGUgInVzdHJpbmcuY3BwIgogI2luY2x1ZGUgInZhbHVl
LmNwcCIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lv
biAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiAvLyBMaXN0IG9mIHByb3BlcnR5IG5h
bWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwog
Ly8gd2F5cyB3aXRob3V0IHJlcGVhdGluZyB0aGUgbGlzdC4KQEAgLTYyLDUgKzY0LDIzIEBAIG5h
bWVzcGFjZSBLSlMgewogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBLSlMKIAorLy8gIyMjIGJldHRl
ciBwbGFjZSBpbiBpZGVudGlmaWVyLmguIG9ubHkgaGVyZSBiZWNhdXNlIG9mIHRoZSBzaGFyZWQg
bnVsbAorbmFtZXNwYWNlIFdURiB7CisgICAgLy8gUHJvdmlkZSBoYXNoaW5nIG9mIElkZW50aWZp
ZXJzIC0tLSB1c2luZyB0aGUgcmVwIHB0cgorICAgIHN0cnVjdCBJZGVudEhhc2ggeworICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLSlM6OklkZW50aWZpZXImIGtleSkgeworICAg
ICAgICAgICAgcmV0dXJuIFB0ckhhc2g8S0pTOjpVU3RyaW5nOjpSZXAqPjo6aGFzaChrZXkudXN0
cmluZygpLnJlcCgpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBLSlM6OklkZW50aWZpZXImIGEsIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgYikgeyByZXR1cm4g
YSA9PSBiOyB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEtK
Uzo6SWRlbnRpZmllcj4geyB0eXBlZGVmIElkZW50SGFzaCBIYXNoOyB9OworCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxLSlM6OklkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFp
dHM8S0pTOjpJZGVudGlmaWVyPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBLSlM6OklkZW50aWZp
ZXImIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIEtKUzo6Q29tbW9uSWRlbnRpZmllcnM6OnNoYXJl
ZCgpLT5udWxsSWRlbnRpZmllcjsgfQorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAj
ZW5kaWYgLy8gS0pTX0NPTU1PTl9JREVOVElGSUVSU19ICiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ29udGV4
dC5jcHAJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0NvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMSArMzQsMTkgQEAgQ29udGV4dDo6Q29udGV4dChKU09i
amVjdCogZ2xvYiwgSW50ZXJwcgogICAgICwgbV9jdXJyZW50Qm9keShjdXJyZW50Qm9keSkKICAg
ICAsIG1fZnVuY3Rpb24oZnVuYykKICAgICAsIG1fYXJndW1lbnRzKGFyZ3MpCi0gICAgLCBtX2l0
ZXJhdGlvbkRlcHRoKDApCi0gICAgLCBtX3N3aXRjaERlcHRoKDApIAogewogICAgIG1fY29kZVR5
cGUgPSB0eXBlOwogICAgIG1fY2FsbGluZ0NvbnRleHQgPSBjYWxsaW5nQ29uOwogICAgIAogICAg
IC8vIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBhY3RpdmF0aW9uIG9iamVjdCAoRUNNQSAxMC4xLjYp
Ci0gICAgaWYgKHR5cGUgPT0gRnVuY3Rpb25Db2RlIHx8IHR5cGUgPT0gQW5vbnltb3VzQ29kZSAp
IHsKKyAgICBpZiAodHlwZSA9PSBGdW5jdGlvbkNvZGUpIHsKICAgICAgICAgbV9hY3RpdmF0aW9u
ID0gbmV3IEFjdGl2YXRpb25JbXAoZnVuYywgKmFyZ3MpOwogICAgICAgICBtX3ZhcmlhYmxlID0g
bV9hY3RpdmF0aW9uOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYWN0aXZhdGlvbiA9IDA7CiAg
ICAgICAgIG1fdmFyaWFibGUgPSBnbG9iOwogICAgIH0KLSAgICAKKwogICAgIC8vIEVDTUEgMTAu
MgogICAgIHN3aXRjaCh0eXBlKSB7CiAgICAgY2FzZSBFdmFsQ29kZToKQEAgLTY0LDE1ICs2Miw4
IEBAIENvbnRleHQ6OkNvbnRleHQoSlNPYmplY3QqIGdsb2IsIEludGVycHIKICAgICAgICAgbV90
aGlzVmFsID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihnbG9iKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGdW5jdGlvbkNvZGU6Ci0gICAgY2FzZSBBbm9ueW1vdXNDb2RlOgotICAgICAgICBp
ZiAodHlwZSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgICAgIHNjb3BlID0gZnVuYy0+c2Nv
cGUoKTsKLSAgICAgICAgICAgIHNjb3BlLnB1c2gobV9hY3RpdmF0aW9uKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHNjb3BlLmNsZWFyKCk7Ci0gICAgICAgICAgICBzY29wZS5wdXNo
KGdsb2IpOwotICAgICAgICAgICAgc2NvcGUucHVzaChtX2FjdGl2YXRpb24pOwotICAgICAgICB9
CisgICAgICAgIHNjb3BlID0gZnVuYy0+c2NvcGUoKTsKKyAgICAgICAgc2NvcGUucHVzaChtX2Fj
dGl2YXRpb24pOwogICAgICAgICBtX3ZhcmlhYmxlID0gbV9hY3RpdmF0aW9uOyAvLyBUT0RPOiBE
b250RGVsZXRlID8gKEVDTUEgMTAuMi4zKQogICAgICAgICBtX3RoaXNWYWwgPSB0aGlzVjsKICAg
ICAgICAgYnJlYWs7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkocmV2aXNpb24gMjQ1NTgpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAibGV4ZXIuaCIKICNpbmNsdWRlICJub2Rlcy5oIgorI2luY2x1
ZGUgInNlbWFudGljX2NoZWNrZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTAxLDYgKzEwMiwxMCBAQCBQYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBQYXJzZXI6OnBhcnNlKGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAg
IC8vIFNlbWFudGljYWxseSBjaGVjayB0aGUgcGFyc2VkIHByb2dyYW0sIGFuZCBkbyBzb21lIG9m
IHRoZSBiaW5kaW5nLi4KKyAgICBTZW1hbnRpY0NoZWNrZXIgc2M7CisgICAgc2MuY2hlY2tTZW1h
bnRpY3MocHJvZy5nZXQoKSk7CisKICAgICByZXR1cm4gcHJvZzsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Q
YXJzZXIuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICog
QGludGVybmFsCiAgICAgICoKICAgICAgKiBQYXJzZXMgRUNNQVNjcmlwdCBzb3VyY2UgY29kZSBh
bmQgY29udmVydHMgaW50byBQcm9ncmFtTm9kZSBvYmplY3RzLCB3aGljaAotICAgICAqIHJlcHJl
c2VudCB0aGUgcm9vdCBvZiBhIHBhcnNlIHRyZWUuIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb252
ZW5pZW50IHdvcmthcm91bmQKLSAgICAgKiBmb3IgdGhlIHByb2JsZW0gb2YgdGhlIGJpc29uIHBh
cnNlciB3b3JraW5nIGluIGEgc3RhdGljIGNvbnRleHQuCisgICAgICogcmVwcmVzZW50IHRoZSBy
b290IG9mIGEgcGFyc2UgdHJlZS4gVGhlIHRyZWUgaXMgdGhlbiBzZW1hbnRpY2FsbHkKKyAgICAg
KiBjaGVja2VkIHdpdGggYSBzZW1hbnRpYyBhbmFseXplci4gVGhpcyBjbGFzcyBwcm92aWRlcyBh
IGNvbnZlbmllbnQKKyAgICAgKiB3b3JrYXJvdW5kIGZvciB0aGUgcHJvYmxlbSBvZiB0aGUgYmlz
b24gcGFyc2VyIHdvcmtpbmcgaW4gYSBzdGF0aWMgY29udGV4dC4KICAgICAgKi8KICAgICBjbGFz
cyBQYXJzZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBBcnJheUluc3RhbmNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRQogICAgICAgSlNWYWx1ZSAqdiA9IHN0b3JhZ2VbaW5kZXhd
OwogICAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgCi0gICAgICBzbG90
LnNldFZhbHVlU2xvdCh0aGlzLCAmc3RvcmFnZVtpbmRleF0pOworICAgICAgc2xvdC5zZXRWYWx1
ZVNsb3QodGhpcywgJnN0b3JhZ2VbaW5kZXhdLCBQcm9wZXJ0eVNsb3Q6OlBlcm1pdERpcmVjdFdy
aXRlKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgfQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IGJvb2wgQXJyYXlJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlTbG90KEUKICAgICBKU1ZhbHVlICp2
ID0gc3RvcmFnZVtpbmRleF07CiAgICAgaWYgKCF2KQogICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsICZzdG9yYWdlW2luZGV4XSk7CisgICAgc2xvdC5zZXRW
YWx1ZVNsb3QodGhpcywgJnN0b3JhZ2VbaW5kZXhdLCBQcm9wZXJ0eVNsb3Q6OlBlcm1pdERpcmVj
dFdyaXRlKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvY29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb21wbGV0
aW9uLmgJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NvbXBsZXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAor
ICBjbGFzcyBOb2RlOworCiAgIC8qKgogICAgKiBDb21wbGV0aW9uIHR5cGVzLgogICAgKi8KQEAg
LTQ3LDE3ICs0OSwxNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICovCiAgIGNsYXNzIENvbXBsZXRp
b24gewogICBwdWJsaWM6Ci0gICAgQ29tcGxldGlvbihDb21wbFR5cGUgYyA9IE5vcm1hbCwgSlNW
YWx1ZSAqdiA9IE5VTEwsIGNvbnN0IElkZW50aWZpZXIgJnQgPSBDb21tb25JZGVudGlmaWVyczo6
c2hhcmVkKCktPm51bGxJZGVudGlmaWVyKQorICAgIENvbXBsZXRpb24oQ29tcGxUeXBlIGMgPSBO
b3JtYWwsIEpTVmFsdWUgKnYgPSBOVUxMLCBjb25zdCBOb2RlKiB0ID0gMCkKICAgICAgICAgOiBj
b21wKGMpLCB2YWwodiksIHRhcih0KSB7IH0KIAogICAgIENvbXBsVHlwZSBjb21wbFR5cGUoKSBj
b25zdCB7IHJldHVybiBjb21wOyB9CiAgICAgSlNWYWx1ZSAqdmFsdWUoKSBjb25zdCB7IHJldHVy
biB2YWw7IH0KLSAgICBJZGVudGlmaWVyIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHRhcjsgfQor
ICAgIGNvbnN0IE5vZGUqIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHRhcjsgfQogICAgIGJvb2wg
aXNWYWx1ZUNvbXBsZXRpb24oKSBjb25zdCB7IHJldHVybiAhIXZhbDsgfQogICBwcml2YXRlOgog
ICAgIENvbXBsVHlwZSBjb21wOwogICAgIEpTVmFsdWUgKnZhbDsKLSAgICBJZGVudGlmaWVyIHRh
cjsKKyAgICBjb25zdCBOb2RlKiB0YXI7CiAgIH07CiAKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9jb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbnRleHQu
aAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsMTUgKzEwOCw2IEBAIG5hbWVzcGFjZSBLSlMgIHsKIAogICAgIHZv
aWQgcHVzaFNjb3BlKEpTT2JqZWN0KiBzKSB7IHNjb3BlLnB1c2gocyk7IH0KICAgICB2b2lkIHBv
cFNjb3BlKCkgeyBzY29wZS5wb3AoKTsgfQotICAgIExhYmVsU3RhY2sqIHNlZW5MYWJlbHMoKSB7
IHJldHVybiAmbHM7IH0KLQotICAgIHZvaWQgcHVzaEl0ZXJhdGlvbigpIHsgbV9pdGVyYXRpb25E
ZXB0aCsrOyB9Ci0gICAgdm9pZCBwb3BJdGVyYXRpb24oKSB7IG1faXRlcmF0aW9uRGVwdGgtLTsg
fQotICAgIGJvb2wgaW5JdGVyYXRpb24oKSBjb25zdCB7IHJldHVybiAobV9pdGVyYXRpb25EZXB0
aCA+IDApOyB9Ci0KLSAgICB2b2lkIHB1c2hTd2l0Y2goKSB7IG1fc3dpdGNoRGVwdGgrKzsgfQot
ICAgIHZvaWQgcG9wU3dpdGNoKCkgeyBtX3N3aXRjaERlcHRoLS07IH0KLSAgICBib29sIGluU3dp
dGNoKCkgY29uc3QgeyByZXR1cm4gKG1fc3dpdGNoRGVwdGggPiAwKTsgfQogCiAgICAgdm9pZCBt
YXJrKCk7CiAKQEAgLTE0MCw5ICsxMzEsNiBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAgSlNPYmpl
Y3QqIG1fdmFyaWFibGU7CiAgICAgSlNPYmplY3QqIG1fdGhpc1ZhbDsKIAotICAgIExhYmVsU3Rh
Y2sgbHM7Ci0gICAgaW50IG1faXRlcmF0aW9uRGVwdGg7Ci0gICAgaW50IG1fc3dpdGNoRGVwdGg7
CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKICAgfTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrc2ltIE9ybG92aWNo
IChtYWtzaW1Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNo
IChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00OSw2ICs1MCw0NCBA
QCB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAogbmFtZXNwYWNlIEtKUyB7CiAKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvb2t1cE9wdGltaXplciAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KK2NsYXNzIExvb2t1cE9wdGltaXplciA6IHB1YmxpYyBOb2RlVmlzaXRv
ciB7CitwdWJsaWM6CisgIExvb2t1cE9wdGltaXplcihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHkpIDogbV9leGVjKGV4ZWMpLCBtX2JvZHkoYm9keSkge30KKworICB2b2lk
IG9wdGltaXplKCkgeworICAgIHZpc2l0KG1fYm9keSk7CisgIH0KKyAgCisgIHZpcnR1YWwgTm9k
ZSogdmlzaXQoTm9kZSogbm9kZSkgS0pTX0ZBU1RfQ0FMTAorICB7CisgICAgLy9EbyBub3QgcmVj
dXJzZSBpbnNpZGUgbm9kZXMgdGhhdCBpbnRyb2R1Y2UgbmV3IHNjb3BlczoKKyAgICAvL3RoYXQg
aW5jbHVkZXMgJ3dpdGgnIGFuZCB2YXJpb3VzIGZ1bmN0aW9uIGxpdGVyYWxzLgorICAgIGlmIChu
b2RlLT5pbnRyb2R1Y2VzTmV3U2NvcGUoKSkgcmV0dXJuIDA7CisKKyAgICAvL0NhdGNoIGNhbiBp
bnRyb2R1Y2UgYSBuZXcgc2NvcGUgYXMgd2VsbCwgYnV0IAorICAgIC8vdGhlIHJlc3Qgb2YgdHJ5
IGlzIGZpbmUuLgorICAgIGlmIChub2RlLT5pc1RyeU5vZGUoKSkgeworICAgICAgIHN0YXRpY19j
YXN0PFRyeU5vZGUqPihub2RlKS0+cmVjdXJzZVZpc2l0Tm9uQ2F0Y2godGhpcyk7CisgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgLy9Ob3cgdHJ5IG9wdGltaXppbmcuLgorICAgIGlmIChO
b2RlKiByZXN1bHROb2RlID0gbm9kZS0+b3B0aW1pemVMb2NhbEFjY2VzcyhtX2V4ZWMsIG1fYm9k
eSkpIHsKKyAgICAgIC8vV2Ugb3B0aW1pemVkIHRoaXMgbm9kZSwgYnV0IGl0IG1heSBtYWtlIHNl
bnNlIHRvIG9wdGltaXplIAorICAgICAgLy9pbnNpZGUgaXQgYXMgd2VsbCwgc28gcmVjdXJzZSwg
dG9vLiAKKyAgICAgIE5vZGVWaXNpdG9yOjp2aXNpdChyZXN1bHROb2RlKTsKKyAgICAgIHJldHVy
biByZXN1bHROb2RlOworICAgIH0KKworICAgIC8vSnVzdCByZWN1cnNlLi4KKyAgICByZXR1cm4g
Tm9kZVZpc2l0b3I6OnZpc2l0KG5vZGUpOworICB9Citwcml2YXRlOgorICBFeGVjU3RhdGUqICAg
ICAgICBtX2V4ZWM7CisgIEZ1bmN0aW9uQm9keU5vZGUqIG1fYm9keTsKK307CisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uSW1wOjppbmZvID0geyJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwLCAwfTsKQEAgLTgxLDExICsx
MjAsMzAgQEAgSlNWYWx1ZSogRnVuY3Rpb25JbXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZQogICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgbmV3RXhlYy5zZXRFeGNlcHRpb24oZXhlYy0+ZXhj
ZXB0aW9uKCkpOwogICBjdHguc2V0RXhlY1N0YXRlKCZuZXdFeGVjKTsKKyAKKyAgLy8gQ29tcHV0
ZSB0aGUgc2V0IG9mIGFsbCBsb2NhbCB2YXJpYWJsZXMsIGFuZCBmdW5jdGlvbnMuCisgIC8vIGFu
ZCBvcHRpbWl6ZSBhY2Nlc3MgdG8gdGhlbSB0aGUgZmlyc3QgdGltZSB3ZSdyZSBjYWxsZWQuCisg
IC8vIFRoZSBBU1QgYnVpbGRpbmcgYWxyZWFkeSB0b29rIGNhcmUgb2YgcGFyYW1ldGVyIGRlY2xh
cmF0aW9ucyBmb3IgdXMuCisgIGlmICghYm9keS0+YnVpbHRTeW1ib2xMaXN0KCkpIHsKKyAgIC8v
IG5vdyBoYW5kbGUgb3RoZXIgbG9jYWxzIChmdW5jdGlvbnMsIHZhcmlhYmxlcykKKyAgICBib2R5
LT5wcm9jZXNzRGVjbHMoJm5ld0V4ZWMpOworICAgIGJvZHktPnNldEJ1aWx0U3ltYm9sTGlzdCgp
OworCisgICAgTG9va3VwT3B0aW1pemVyIG9wdGltaXplcigmbmV3RXhlYywgYm9keS5nZXQoKSk7
CisgICAgb3B0aW1pemVyLm9wdGltaXplKCk7CisgIH0KIAotICAvLyBhc3NpZ24gdXNlciBzdXBw
bGllZCBhcmd1bWVudHMgdG8gcGFyYW1ldGVycworICBBY3RpdmF0aW9uSW1wKiBhY3RpdmF0aW9u
ID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGN0eC5hY3RpdmF0aW9uT2JqZWN0KCkpOwor
CisgIC8vIEhlcmUsIHdlIGFjdHVhbGx5IGZpbGwgc3R1ZmYgaW4sIGdvaW5nIGJ5IGluY3JlYXNp
bmcgcHJpb3JpdGllczogCisgIC8vIGZpcnN0LCBpbml0aWFsaXplIGZsYWdzIGFuZCBzZXQgdG8g
dW5kZWZpbmVkLi4uCisgIGFjdGl2YXRpb24tPnNldHVwTG9jYWxzKCk7CisgIAorICAvLyBOZXh0
LCBhc3NpZ24gdXNlciBzdXBwbGllZCBhcmd1bWVudHMgdG8gcGFyYW1ldGVycwogICBwYXNzSW5Q
YXJhbWV0ZXJzKCZuZXdFeGVjLCBhcmdzKTsKLSAgLy8gYWRkIHZhcmlhYmxlIGRlY2xhcmF0aW9u
cyAoaW5pdGlhbGl6ZWQgdG8gdW5kZWZpbmVkKQotICBwcm9jZXNzVmFyRGVjbHMoJm5ld0V4ZWMp
OworCisgIC8vIE5vdywgZmlsbCBpbiBmdW5jdGlvbiBvYmplY3RzLiBUaGVzZSBzaG91bGQgb3Zl
cnJpZGUgZXZlcnl0aGluZyBlbHNlCisgIGFjdGl2YXRpb24tPnNldHVwRnVuY3Rpb25Mb2NhbHMo
Jm5ld0V4ZWMpOwogCiAgIERlYnVnZ2VyKiBkYmcgPSBleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIo
KS0+ZGVidWdnZXIoKTsKICAgaW50IHNpZCA9IC0xOwpAQCAtMTUwLDkgKzIwOCw4IEBAIEpTVmFs
dWUqIEZ1bmN0aW9uSW1wOjpjYWxsQXNGdW5jdGlvbihFeGUKIC8vIEVDTUEgMTAuMS4zcQogaW5s
aW5lIHZvaWQgRnVuY3Rpb25JbXA6OnBhc3NJblBhcmFtZXRlcnMoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBMaXN0JiBhcmdzKQogewotICAgIFZlY3RvcjxQYXJhbWV0ZXI+JiBwYXJhbWV0ZXJzID0g
Ym9keS0+cGFyYW1ldGVycygpOwotCi0gICAgSlNPYmplY3QqIHZhcmlhYmxlID0gZXhlYy0+Y29u
dGV4dCgpLT52YXJpYWJsZU9iamVjdCgpOworICAgIEFTU0VSVChleGVjLT5jb250ZXh0KCktPnZh
cmlhYmxlT2JqZWN0KCktPmlzQWN0aXZhdGlvbigpKTsKKyAgICBBY3RpdmF0aW9uSW1wKiB2YXJp
YWJsZSA9IHN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihleGVjLT5jb250ZXh0KCktPnZhcmlh
YmxlT2JqZWN0KCkpOwogCiAjaWZkZWYgS0pTX1ZFUkJPU0UKICAgICBmcHJpbnRmKHN0ZGVyciwg
Ii0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgpA
QCAtMTYwLDIwICsyMTcsMjMgQEAgaW5saW5lIHZvaWQgRnVuY3Rpb25JbXA6OnBhc3NJblBhcmFt
ZXRlcgogICAgICAgICAgIGZ1bmN0aW9uTmFtZSgpLmlzRW1wdHkoKSA/ICIoaW50ZXJuYWwpIiA6
IGZ1bmN0aW9uTmFtZSgpLmFzY2lpKCkpOwogI2VuZGlmCiAKLSAgICBzaXplX3Qgc2l6ZSA9IHBh
cmFtZXRlcnMuc2l6ZSgpOworICAgIExpc3RJdGVyYXRvciBpdCA9IGFyZ3MuYmVnaW4oKTsKKyAg
ICBzaXplX3Qgc2l6ZSA9IGJvZHktPm51bVBhcmFtcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGludCB3cml0ZVRvID0gYm9keS0+cGFyYW1TeW1i
b2xJRChpKTsKKyAgICAgICAgSlNWYWx1ZSogdmFsID0ganNVbmRlZmluZWQoKTsKKyAgICAgICAg
aWYgKGl0ICE9IGFyZ3MuZW5kKCkpIHsKKyAgICAgICAgICAgIHZhbCA9ICppdDsKKyAgICAgICAg
ICAgICsraXQ7CisgICAgICAgIH0KICNpZmRlZiBLSlNfVkVSQk9TRQogICAgICAgZnByaW50Zihz
dGRlcnIsICJzZXR0aW5nIHBhcmFtZXRlciAlcyAiLCBwYXJhbWV0ZXJzLmF0KGkpLm5hbWUuYXNj
aWkoKSk7CiAgICAgICBwcmludEluZm8oZXhlYywgInRvIiwgYXJnc1tpXSk7CiAjZW5kaWYKLSAg
ICAgIHZhcmlhYmxlLT5wdXQoZXhlYywgcGFyYW1ldGVyc1tpXS5uYW1lLCBhcmdzW2ldKTsKKyAg
ICAgIHZhcmlhYmxlLT5wdXRMb2NhbCh3cml0ZVRvLCB2YWwpOwogICAgIH0KIH0KIAotdm9pZCBG
dW5jdGlvbkltcDo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopCi17Ci19Ci0KIEpTVmFsdWUq
IEZ1bmN0aW9uSW1wOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KQogewogICBGdW5jdGlvbkltcCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uSW1wKj4o
c2xvdC5zbG90QmFzZSgpKTsKQEAgLTI2MSwxOCArMzIxLDE2IEBAIGJvb2wgRnVuY3Rpb25JbXA6
OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGEKICAqLwogSWRlbnRpZmllciBGdW5jdGlvbkltcDo6Z2V0
UGFyYW1ldGVyTmFtZShpbnQgaW5kZXgpCiB7Ci0gICAgVmVjdG9yPFBhcmFtZXRlcj4mIHBhcmFt
ZXRlcnMgPSBib2R5LT5wYXJhbWV0ZXJzKCk7Ci0KLSAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90
PihpbmRleCkgPj0gYm9keS0+bnVtUGFyYW1zKCkpCisgICAgaWYgKHN0YXRpY19jYXN0PHNpemVf
dD4oaW5kZXgpID49IHN0YXRpY19jYXN0PHNpemVfdD4oYm9keS0+bnVtUGFyYW1zKCkpKQogICAg
ICAgICByZXR1cm4gQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5udWxsSWRlbnRpZmllcjsK
ICAgCi0gICAgSWRlbnRpZmllciBuYW1lID0gcGFyYW1ldGVyc1tpbmRleF0ubmFtZTsKKyAgICBJ
ZGVudGlmaWVyIG5hbWUgPSBib2R5LT5wYXJhbU5hbWUoaW5kZXgpOwogCiAgICAgLy8gQXJlIHRo
ZXJlIGFueSBzdWJzZXF1ZW50IHBhcmFtZXRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lPwotICAgIHNp
emVfdCBzaXplID0gcGFyYW1ldGVycy5zaXplKCk7CisgICAgc2l6ZV90IHNpemUgPSBib2R5LT5u
dW1QYXJhbXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gaW5kZXggKyAxOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICBpZiAocGFyYW1ldGVyc1tpXS5uYW1lID09IG5hbWUpCi0gICAgICAgICAgICBy
ZXR1cm4gQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5udWxsSWRlbnRpZmllcjsKKyAgICAg
ICAgaWYgKGJvZHktPnBhcmFtTmFtZShpKSA9PSBuYW1lKQorICAgICAgICByZXR1cm4gQ29tbW9u
SWRlbnRpZmllcnM6OnNoYXJlZCgpLT5udWxsSWRlbnRpZmllcjsKIAogICAgIHJldHVybiBuYW1l
OwogfQpAQCAtMzIzLDExICszODEsNiBAQCBDb21wbGV0aW9uIERlY2xhcmVkRnVuY3Rpb25JbXA6
OmV4ZWN1dGUoCiAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwganNVbmRlZmluZWQoKSk7IC8v
IFRPRE86IG9yIFJldHVyblZhbHVlID8KIH0KIAotdm9pZCBEZWNsYXJlZEZ1bmN0aW9uSW1wOjpw
cm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKiBleGVjKQotewotICBib2R5LT5wcm9jZXNzVmFyRGVj
bHMoZXhlYyk7Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJbmRleFRv
TmFtZU1hcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gV2UgbWFwIGlu
ZGV4ZXMgaW4gdGhlIGFyZ3VtZW50cyBhcnJheSB0byB0aGVpciBjb3JyZXNwb25kaW5nIGFyZ3Vt
ZW50IG5hbWVzLiAKQEAgLTQ2NiwyMCArNTE5LDQxIEBAIGNvbnN0IENsYXNzSW5mbyBBY3RpdmF0
aW9uSW1wOjppbmZvID0geyIKIAogLy8gRUNNQSAxMC4xLjYKIEFjdGl2YXRpb25JbXA6OkFjdGl2
YXRpb25JbXAoRnVuY3Rpb25JbXAqIGZ1bmN0aW9uLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpCi0g
ICAgOiBfZnVuY3Rpb24oZnVuY3Rpb24pLCBfYXJndW1lbnRzKGFyZ3VtZW50cyksIF9hcmd1bWVu
dHNPYmplY3QoMCkKKyAgICA6IF9mdW5jdGlvbihmdW5jdGlvbiksIF9hcmd1bWVudHModHJ1ZSks
IF9sb2NhbHMoMCkKIHsKKyAgX2FyZ3VtZW50cy5jb3B5RnJvbShhcmd1bWVudHMpOwogICAvLyBG
SVhNRTogRG8gd2UgbmVlZCB0byBzdXBwb3J0IGVudW1lcmF0aW5nIHRoZSBhcmd1bWVudHMgcHJv
cGVydHk/CiB9CiAKK3ZvaWQgQWN0aXZhdGlvbkltcDo6c2V0dXBMb2NhbHMoKSB7CisgICAgaW50
IG51bUxvY2FscyA9IF9mdW5jdGlvbi0+Ym9keS0+bnVtTG9jYWxzKCk7CisgICAgX2xvY2FscyAg
PSBuZXcgTG9jYWxbbnVtTG9jYWxzICsgMV07CisgICAgX2xvY2Fsc1swXS52YWx1ZSA9IDA7Cisg
ICAgX2xvY2Fsc1swXS5hdHRyICA9IG51bUxvY2FscyArIDE7IAorICAgIAorICAgIGZvciAoaW50
IGwgPSAxOyBsIDwgbnVtTG9jYWxzICsgMTsgKytsKSB7CisgICAgICAgIF9sb2NhbHNbbF0udmFs
dWUgPSBqc1VuZGVmaW5lZCgpOworICAgICAgICBfbG9jYWxzW2xdLmF0dHIgID0gX2Z1bmN0aW9u
LT5ib2R5LT5nZXRMb2NhbEF0dHIobCk7IAorICAgIH0KK30KKwordm9pZCBBY3RpdmF0aW9uSW1w
OjpzZXR1cEZ1bmN0aW9uTG9jYWxzKEV4ZWNTdGF0ZSAqZXhlYykgeworICBpbnQgbnVtTG9jYWxz
ID0gX2Z1bmN0aW9uLT5ib2R5LT5udW1Mb2NhbHMoKTsKKyAgZm9yIChpbnQgbCA9IDE7IGwgPCBu
dW1Mb2NhbHMgKyAxOyArK2wpIHsKKyAgICBpZiAoRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCA9IF9m
dW5jdGlvbi0+Ym9keS0+Z2V0TG9jYWxGdW5jRGVjbChsKSkKKyAgICAgIF9sb2NhbHNbbF0udmFs
dWUgPSBmdW5jRGVjbC0+bWFrZUZ1bmN0aW9uT2JqZWN0KGV4ZWMpOworICB9Cit9CisKIEpTVmFs
dWUqIEFjdGl2YXRpb25JbXA6OmFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
QWN0aXZhdGlvbkltcCogdGhpc09iaiA9IHN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihzbG90
LnNsb3RCYXNlKCkpOwogCiAgIC8vIGRlZmF1bHQ6IHJldHVybiBidWlsdGluIGFyZ3VtZW50cyBh
cnJheQotICBpZiAoIXRoaXNPYmotPl9hcmd1bWVudHNPYmplY3QpCisgIGlmICghdGhpc09iai0+
X2xvY2Fsc1swXS52YWx1ZSkKICAgICB0aGlzT2JqLT5jcmVhdGVBcmd1bWVudHNPYmplY3QoZXhl
Yyk7CiAgIAotICByZXR1cm4gdGhpc09iai0+X2FyZ3VtZW50c09iamVjdDsKKyAgcmV0dXJuIHRo
aXNPYmotPl9sb2NhbHNbMF0udmFsdWU7CiB9CiAKIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
IEFjdGl2YXRpb25JbXA6OmdldEFyZ3VtZW50c0dldHRlcigpCkBAIC00OTMsMTEgKzU2NywyMiBA
QCBib29sIEFjdGl2YXRpb25JbXA6OmdldE93blByb3BlcnR5U2xvdChFCiAgICAgLy8gd2UgZG9u
J3QgY2FsbCBKU09iamVjdCBiZWNhdXNlIHdlIHdvbid0IGhhdmUgZ2V0dGVyL3NldHRlciBwcm9w
ZXJ0aWVzCiAgICAgLy8gYW5kIHdlIGRvbid0IHdhbnQgdG8gc3VwcG9ydCBfX3Byb3RvX18KIAot
ICAgIGlmIChKU1ZhbHVlKiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5h
bWUpKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsIGxvY2F0aW9uKTsKKyAgICAv
LyBTZWUgaWYgd2UncmUgZG9pbmcgZmFsbGJhY2sgIGxvb2t1cCBvbiBhIGxvY2FsLi4KKyAgICBp
bnQgaWQgPSBfZnVuY3Rpb24tPmJvZHktPmxvb2t1cFN5bWJvbElEKHByb3BlcnR5TmFtZSk7CisK
KyAgICBpZiAodmFsaWRMb2NhbChpZCkpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhp
cywgJl9sb2NhbHNbaWRdLnZhbHVlLCBfbG9jYWxzW2lkXS5hdHRyICYgUmVhZE9ubHkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHJvOworICAgIGlmIChKU1ZhbHVl
KiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUsIHJvKSkgeworICAg
ICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCBsb2NhdGlvbiwgcm8pOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKKyAgICAvLyBJbXBvcnRhbnQ6IGlmIHlvdSBhZGQgbW9yZSBkeW5h
bWljIHByb3BlcnRpZXMgaGVyZSwgCisgICAgLy8gbWFrZSBzdXJlIHRvIG1ha2UgdGhlIG9wdGlt
aXplUmVzb2x2ZXIgY2FsbCBob25vciB0aGVtLgogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzLCBnZXRBcmd1bWVudHNHZXR0ZXIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTA4
LDYgKzU5MywxMSBAQCBib29sIEFjdGl2YXRpb25JbXA6OmdldE93blByb3BlcnR5U2xvdChFCiAK
IGJvb2wgQWN0aXZhdGlvbkltcDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CisgICAgLy8gSWYgc29tZW9uZSB0cmllcyB0
byBkZWxldGUgYSBsb2NhbCwgcmV0dXJuIGZhbHNlLCB0aGF0J3Mgbm90IHBlcm1pdHRlZAorICAg
IGludCBpZCA9IF9mdW5jdGlvbi0+Ym9keS0+bG9va3VwU3ltYm9sSUQocHJvcGVydHlOYW1lKTsK
KyAgICBpZiAodmFsaWRMb2NhbChpZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoZXhl
YywgcHJvcGVydHlOYW1lKTsKQEAgLTUxOCw3ICs2MDgsMTUgQEAgdm9pZCBBY3RpdmF0aW9uSW1w
OjpwdXQoRXhlY1N0YXRlKiwgY29ucwogICAvLyBUaGVyZSdzIG5vIHdheSB0aGF0IGFuIGFjdGl2
YXRpb24gb2JqZWN0IGNhbiBoYXZlIGEgcHJvdG90eXBlIG9yIGdldHRlci9zZXR0ZXIgcHJvcGVy
dGllcwogICBhc3NlcnQoIV9wcm9wLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAgIGFz
c2VydChwcm90b3R5cGUoKSA9PSBqc051bGwoKSk7CisgIAorICAvLyBTZWUgaWYgd2UncmUgc2V0
dGluZyBhIGxvY2FsLi4KKyAgaW50IGlkID0gX2Z1bmN0aW9uLT5ib2R5LT5sb29rdXBTeW1ib2xJ
RChwcm9wZXJ0eU5hbWUpOworICBpZiAodmFsaWRMb2NhbChpZCkpIHsKKyAgICAgIHB1dExvY2Fs
Q2hlY2tlZChpZCwgdmFsdWUpOworICAgICAgcmV0dXJuOworICB9CiAKKyAgLy8jIyMgRG9jdW1l
bnQgdGhpcywgdWdoLgogICBfcHJvcC5wdXQocHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgKGF0
dHIgPT0gTm9uZSB8fCBhdHRyID09IERvbnREZWxldGUpKTsKIH0KIApAQCAtNTI2LDE2ICs2MjQs
MjQgQEAgdm9pZCBBY3RpdmF0aW9uSW1wOjptYXJrKCkKIHsKICAgICBpZiAoX2Z1bmN0aW9uICYm
ICFfZnVuY3Rpb24tPm1hcmtlZCgpKSAKICAgICAgICAgX2Z1bmN0aW9uLT5tYXJrKCk7Ci0gICAg
aWYgKF9hcmd1bWVudHNPYmplY3QgJiYgIV9hcmd1bWVudHNPYmplY3QtPm1hcmtlZCgpKQotICAg
ICAgICBfYXJndW1lbnRzT2JqZWN0LT5tYXJrKCk7CisKKyAgICBmb3IgKGludCBwb3MgPSAwOyBw
b3MgPCBudW1Mb2NhbHMoKTsgKytwb3MpIHsKKyAgICAgICAgSlNWYWx1ZSAqdmFsID0gX2xvY2Fs
c1twb3NdLnZhbHVlOworICAgICAgICBpZiAodmFsICYmICF2YWwtPm1hcmtlZCgpKQorICAgICAg
ICAgICAgdmFsLT5tYXJrKCk7CisgICAgfQorCiAgICAgSlNPYmplY3Q6Om1hcmsoKTsKIH0KIAor
QWN0aXZhdGlvbkltcDo6fkFjdGl2YXRpb25JbXAoKQoreworICAgIGRlbGV0ZVtdIF9sb2NhbHM7
Cit9CisKIHZvaWQgQWN0aXZhdGlvbkltcDo6Y3JlYXRlQXJndW1lbnRzT2JqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgX2FyZ3VtZW50c09iamVjdCA9IG5ldyBBcmd1bWVudHMoZXhlYywgX2Z1
bmN0aW9uLCBfYXJndW1lbnRzLCBjb25zdF9jYXN0PEFjdGl2YXRpb25JbXAqPih0aGlzKSk7Ci0g
IC8vIFRoZSBhcmd1bWVudHMgbGlzdCBpcyBvbmx5IG5lZWRlZCB0byBjcmVhdGUgdGhlIGFyZ3Vt
ZW50cyBvYmplY3QsIHNvIGRpc2NhcmQgaXQgbm93Ci0gIF9hcmd1bWVudHMucmVzZXQoKTsKKyAg
X2xvY2Fsc1swXS52YWx1ZSA9IG5ldyBBcmd1bWVudHMoZXhlYywgX2Z1bmN0aW9uLCBfYXJndW1l
bnRzLCBjb25zdF9jYXN0PEFjdGl2YXRpb25JbXAqPih0aGlzKSk7CiB9CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHbG9iYWxGdW5jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC04MzEsNyArOTM3LDcgQEAgSlNWYWx1ZSogR2xvYmFsRnVuY0ltcDo6
Y2FsbEFzRnVuY3Rpb24oRQogICAgICAgICBjdHguc2V0RXhlY1N0YXRlKCZuZXdFeGVjKTsKICAg
ICAgICAgCiAgICAgICAgIC8vIGV4ZWN1dGUgdGhlIGNvZGUKLSAgICAgICAgcHJvZ05vZGUtPnBy
b2Nlc3NWYXJEZWNscygmbmV3RXhlYyk7CisgICAgICAgIHByb2dOb2RlLT5wcm9jZXNzRGVjbHMo
Jm5ld0V4ZWMpOwogICAgICAgICBDb21wbGV0aW9uIGMgPSBwcm9nTm9kZS0+ZXhlY3V0ZSgmbmV3
RXhlYyk7CiAKICAgICAgICAgLy8gaWYgYW4gZXhjZXB0aW9uIG9jY3VyZWQsIHByb3BvZ2F0ZSBp
dCBiYWNrIHRvIHRoZSBwcmV2aW91cyBleGVjdXRpb24gb2JqZWN0CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvZnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVu
Y3Rpb24uaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIGxpYnJhcmllcwogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAo
bWFrc2ltQGtkZS5vcmcpCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYsOCArMzcsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKIAogICBlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwKICAgICAgICAg
ICAgICAgICAgIEV2YWxDb2RlLAotICAgICAgICAgICAgICAgICAgRnVuY3Rpb25Db2RlLAotICAg
ICAgICAgICAgICAgICAgQW5vbnltb3VzQ29kZSB9OworICAgICAgICAgICAgICAgICAgRnVuY3Rp
b25Db2RlIH07CiAKICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbkltcCA6IHB1YmxpYyBKU09iamVj
dCB7CiAgIHB1YmxpYzoKQEAgLTEzNyw3ICsxMzcsNiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBz
dGF0aWMgSlNWYWx1ZSogbGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogCiAgICAgdm9pZCBwYXNzSW5QYXJh
bWV0ZXJzKEV4ZWNTdGF0ZSosIGNvbnN0IExpc3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c1ZhckRlY2xzKEV4ZWNTdGF0ZSopOwogICB9OwogCiAgIGNsYXNzIERlY2xhcmVkRnVuY3Rpb25J
bXAgOiBwdWJsaWMgRnVuY3Rpb25JbXAgewpAQCAtMTUzLDkgKzE1Miw2IEBAIG5hbWVzcGFjZSBL
SlMgewogCiAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsg
cmV0dXJuICZpbmZvOyB9CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwotCi0gIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKTsKICAg
fTsKIAogICBjbGFzcyBJbmRleFRvTmFtZU1hcCB7CkBAIC0xOTMsMTggKzE4OSw0OSBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgY2xhc3MgQWN0aXZhdGlvbkltcCA6IHB1YmxpYyBKU09iamVjdCB7CiAg
IHB1YmxpYzoKICAgICBBY3RpdmF0aW9uSW1wKEZ1bmN0aW9uSW1wKiBmdW5jdGlvbiwgY29uc3Qg
TGlzdCYgYXJndW1lbnRzKTsKKyAgICB+QWN0aXZhdGlvbkltcCgpOwogCiAgICAgdmlydHVhbCBi
b29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlTbG90Jik7CiAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBpbnQgYXR0ciA9IE5vbmUpOwog
ICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOwogCisgICAgLy9UaGlzIGlzIG9ubHkgdXNlZCBieSBkZWNsYXJh
dGlvbiBjb2RlLCBzbyBpdCBuZXZlciBjaGVjayByL28gYXR0cgorICAgIHZvaWQgcHV0TG9jYWwo
aW50IHByb3BlcnR5SUQsIEpTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgYXNzZXJ0KHZh
bGlkTG9jYWwocHJvcGVydHlJRCkpOworICAgICAgICBfbG9jYWxzW3Byb3BlcnR5SURdLnZhbHVl
ID0gdmFsdWU7CisgICAgICAgIC8vV2UgZG8gbm90IGhhdmUgdG8gdG91Y2ggdGhlIGZsYWdzIGhl
cmUgLS0gdGhleSdyZSBwcmUtY29tcHV0ZWQuLgorICAgIH0KKworICAgIHZvaWQgaW5pdExvY2Fs
KGludCBwcm9wZXJ0eUlELCBKU1ZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVCh2
YWxpZExvY2FsKHByb3BlcnR5SUQpKTsKKyAgICAgICAgX2xvY2Fsc1twcm9wZXJ0eUlEXS52YWx1
ZSA9IHZhbHVlOworICAgIH0KKworICAgIHZvaWQgcHV0TG9jYWxDaGVja2VkKGludCBwcm9wZXJ0
eUlELCBKU1ZhbHVlICp2YWx1ZSkgeworICAgICAgaWYgKGlzTG9jYWxSZWFkT25seShwcm9wZXJ0
eUlEKSkgcmV0dXJuOworICAgICAgX2xvY2Fsc1twcm9wZXJ0eUlEXS52YWx1ZSA9IHZhbHVlOwor
ICAgIH0KKworICAgIEpTVmFsdWUqKiBnZXRMb2NhbERpcmVjdChpbnQgcHJvcGVydHlJRCkgewor
ICAgICAgYXNzZXJ0KHZhbGlkTG9jYWwocHJvcGVydHlJRCkpOworICAgICAgcmV0dXJuICZfbG9j
YWxzW3Byb3BlcnR5SURdLnZhbHVlOworICAgIH0KKworICAgIGJvb2wgaXNMb2NhbFJlYWRPbmx5
KGludCBwcm9wZXJ0eUlEKSB7CisgICAgICByZXR1cm4gX2xvY2Fsc1twcm9wZXJ0eUlEXS5hdHRy
ICYgUmVhZE9ubHk7CisgICAgfQorCiAgICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNz
SW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5m
byBpbmZvOwogCiAgICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKIAotICAgIGJvb2wgaXNBY3RpdmF0
aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRpb24oKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2b2lkIHNldHVwTG9jYWxzKCk7CisgICAgdm9p
ZCBzZXR1cEZ1bmN0aW9uTG9jYWxzKEV4ZWNTdGF0ZSAqZXhlYyk7CiAgICAgdm9pZCByZWxlYXNl
QXJndW1lbnRzKCkgeyBfYXJndW1lbnRzLnJlc2V0KCk7IH0KIAogICBwcml2YXRlOgpAQCAtMjEy
LDkgKzIzOSwyMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBzdGF0aWMgSlNWYWx1ZSogYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IFByb3BlcnR5U2xvdCYgc2xvdCk7CiAgICAgdm9pZCBjcmVhdGVBcmd1bWVudHNPYmplY3QoRXhl
Y1N0YXRlKik7CiAKKyAgICBzdHJ1Y3QgTG9jYWwgeworICAgICAgICBKU1ZhbHVlKiB2YWx1ZTsK
KyAgICAgICAgaW50ICAgICAgYXR0cjsKKyAgICB9OworCiAgICAgRnVuY3Rpb25JbXAqIF9mdW5j
dGlvbjsKICAgICBMaXN0IF9hcmd1bWVudHM7Ci0gICAgbXV0YWJsZSBBcmd1bWVudHMqIF9hcmd1
bWVudHNPYmplY3Q7CisKKyAgICAvL0xpc3Qgb2YgbG9jYWxzLCBidXQgdGhlIGVudHJ5IDAgaXMg
c3BlY2lhbDogCisgICAgLy90aGUgdmFsdWUgaGVyZSBpcyB0aGUgYXJndW1lbnRzIG9iamVjdCwg
CisgICAgLy90aGUgYXR0ciBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSAoZS5nLiBudW1Mb2Nh
bHMgKyAxKQorICAgIExvY2FsICpfbG9jYWxzOworCisgICAgaW50ICBudW1Mb2NhbHMoKSBjb25z
dCAgICAgICAgeyByZXR1cm4gX2xvY2Fsc1swXS5hdHRyOyB9CisgICAgYm9vbCB2YWxpZExvY2Fs
KGludCBpKSBjb25zdCB7IHJldHVybiAwIDwgaSAmJiBpIDwgbnVtTG9jYWxzKCk7IH0KICAgfTsK
IAogICBjbGFzcyBHbG9iYWxGdW5jSW1wIDogcHVibGljIEludGVybmFsRnVuY3Rpb25JbXAgewpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL2dyYW1tYXIueQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvZ3JhbW1hci55CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9ncmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw4ICsyNTIsOCBAQCBQcmltYXJ5
RXhwck5vQnJhY2U6CiAgICAgVEhJUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAk
JCA9IG5ldyBUaGlzTm9kZSgpOyB9CiAgIHwgTGl0ZXJhbAogICB8IEFycmF5TGl0ZXJhbAotICB8
IElERU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgUmVzb2x2ZU5v
ZGUoKiQxKTsgfQotICB8ICcoJyBFeHByICcpJyAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQg
PSAoJDItPmlzUmVzb2x2ZU5vZGUoKSB8fCAkMi0+aXNHcm91cE5vZGUoKSkgPworICB8IElERU5U
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgVmFyQWNjZXNzTm9kZSgq
JDEpOyB9CisgIHwgJygnIEV4cHIgJyknICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9ICgk
Mi0+aXNWYXJBY2Nlc3NOb2RlKCkgfHwgJDItPmlzR3JvdXBOb2RlKCkpID8KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDIgOiBuZXcgR3JvdXBOb2RlKCQyKTsg
fQogOwogCkBAIC04MDgsNyArODA4LDcgQEAgRGVmYXVsdENsYXVzZToKIDsKIAogTGFiZWxsZWRT
dGF0ZW1lbnQ6Ci0gICAgSURFTlQgJzonIFN0YXRlbWVudCAgICAgICAgICAgICAgICAgeyAkMy0+
cHVzaExhYmVsKCokMSk7ICQkID0gbmV3IExhYmVsTm9kZSgqJDEsICQzKTsgfQorICAgIElERU5U
ICc6JyBTdGF0ZW1lbnQgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgTGFiZWxOb2RlKCokMSwg
JDMpOyB9CiA7CiAKIFRocm93U3RhdGVtZW50OgpAQCAtODc3LDM3ICs4NzcsMjYgQEAgc3RhdGlj
IE5vZGUqIG1ha2VBc3NpZ25Ob2RlKE5vZGUqIGxvYywgTwogICAgIGlmICghbi0+aXNMb2NhdGlv
bigpKQogICAgICAgICByZXR1cm4gbmV3IEFzc2lnbkVycm9yTm9kZShsb2MsIG9wLCBleHByKTsK
IAotICAgIGlmIChuLT5pc1Jlc29sdmVOb2RlKCkpIHsKLSAgICAgICAgUmVzb2x2ZU5vZGUgKnJl
c29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSAqPihuKTsKLSAgICAgICAgcmV0dXJuIG5l
dyBBc3NpZ25SZXNvbHZlTm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBleHByKTsKLSAg
ICB9Ci0gICAgaWYgKG4tPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CisgICAgaWYgKG4tPmlz
VmFyQWNjZXNzTm9kZSgpKSB7CisgICAgICAgIHJldHVybiBuZXcgQXNzaWduTm9kZShzdGF0aWNf
Y2FzdDxMb2NhdGlvbk5vZGUqPihuKSwgb3AsIGV4cHIpOworICAgIH0gZWxzZSBpZiAobi0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAqYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7CiAgICAgICAgIHJl
dHVybiBuZXcgQXNzaWduQnJhY2tldE5vZGUoYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJz
Y3JpcHQoKSwgb3AsIGV4cHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydChuLT5pc0Rv
dEFjY2Vzc29yTm9kZSgpKTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlICpkb3QgPSBzdGF0aWNf
Y2FzdDxEb3RBY2Nlc3Nvck5vZGUgKj4obik7CisgICAgICAgIHJldHVybiBuZXcgQXNzaWduRG90
Tm9kZShkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByKTsKICAgICB9Ci0g
ICAgYXNzZXJ0KG4tPmlzRG90QWNjZXNzb3JOb2RlKCkpOwotICAgIERvdEFjY2Vzc29yTm9kZSAq
ZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlICo+KG4pOwotICAgIHJldHVybiBuZXcg
QXNzaWduRG90Tm9kZShkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByKTsK
IH0KIAotc3RhdGljIE5vZGUqIG1ha2VQcmVmaXhOb2RlKE5vZGUgKmV4cHIsIE9wZXJhdG9yIG9w
KQorc3RhdGljIE5vZGUqIG1ha2VQcmVmaXhOb2RlKE5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wKQog
eyAKICAgICBOb2RlICpuID0gZXhwci0+bm9kZUluc2lkZUFsbFBhcmVucygpOwogCiAgICAgaWYg
KCFuLT5pc0xvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgUHJlZml4RXJyb3JOb2RlKGV4
cHIsIG9wKTsKLSAgICAKLSAgICBpZiAobi0+aXNSZXNvbHZlTm9kZSgpKSB7Ci0gICAgICAgIFJl
c29sdmVOb2RlICpyZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUgKj4obik7Ci0gICAg
ICAgIHJldHVybiBuZXcgUHJlZml4UmVzb2x2ZU5vZGUocmVzb2x2ZS0+aWRlbnRpZmllcigpLCBv
cCk7Ci0gICAgfQotICAgIGlmIChuLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewotICAgICAg
ICBCcmFja2V0QWNjZXNzb3JOb2RlICpicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vz
c29yTm9kZSAqPihuKTsKLSAgICAgICAgcmV0dXJuIG5ldyBQcmVmaXhCcmFja2V0Tm9kZShicmFj
a2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCk7Ci0gICAgfQotICAgIGFzc2Vy
dChuLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9IHN0
YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICByZXR1cm4gbmV3IFByZWZpeERv
dE5vZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCk7CisKKyAgICByZXR1cm4g
bmV3IFByZWZpeE5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25Ob2RlKj4obiksIG9wKTsKIH0KIAog
c3RhdGljIE5vZGUqIG1ha2VQb3N0Zml4Tm9kZShOb2RlKiBleHByLCBPcGVyYXRvciBvcCkKQEAg
LTkxNywyOSArOTA2LDE4IEBAIHN0YXRpYyBOb2RlKiBtYWtlUG9zdGZpeE5vZGUoTm9kZSogZXhw
ciwKICAgICBpZiAoIW4tPmlzTG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIG5ldyBQb3N0Zml4
RXJyb3JOb2RlKGV4cHIsIG9wKTsKICAgICAKLSAgICBpZiAobi0+aXNSZXNvbHZlTm9kZSgpKSB7
Ci0gICAgICAgIFJlc29sdmVOb2RlICpyZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUg
Kj4obik7Ci0gICAgICAgIHJldHVybiBuZXcgUG9zdGZpeFJlc29sdmVOb2RlKHJlc29sdmUtPmlk
ZW50aWZpZXIoKSwgb3ApOwotICAgIH0KLSAgICBpZiAobi0+aXNCcmFja2V0QWNjZXNzb3JOb2Rl
KCkpIHsKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAqYnJhY2tldCA9IHN0YXRpY19jYXN0
PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7Ci0gICAgICAgIHJldHVybiBuZXcgUG9zdGZpeEJy
YWNrZXROb2RlKGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wKTsKLSAg
ICB9Ci0gICAgYXNzZXJ0KG4tPmlzRG90QWNjZXNzb3JOb2RlKCkpOwotICAgIERvdEFjY2Vzc29y
Tm9kZSAqZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlICo+KG4pOwotICAgIHJldHVy
biBuZXcgUG9zdGZpeERvdE5vZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCk7
CisgICAgcmV0dXJuIG5ldyBQb3N0Zml4Tm9kZShzdGF0aWNfY2FzdDxMb2NhdGlvbk5vZGUqPihu
KSwgb3ApOwogfQogCiBzdGF0aWMgTm9kZSAqbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoTm9kZSAqZnVu
YywgQXJndW1lbnRzTm9kZSAqYXJncykKIHsKICAgICBOb2RlICpuID0gZnVuYy0+bm9kZUluc2lk
ZUFsbFBhcmVucygpOwotICAgIAorCiAgICAgaWYgKCFuLT5pc0xvY2F0aW9uKCkpCiAgICAgICAg
IHJldHVybiBuZXcgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGZ1bmMsIGFyZ3MpOwotICAgIGVsc2Ug
aWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVzb2x2ZSA9
IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IEZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSwgYXJncyk7Ci0gICAgfSBl
bHNlIGlmIChuLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgeworICAgIGVsc2UgaWYgKG4tPmlz
VmFyQWNjZXNzTm9kZSgpKQorICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbFJlZmVyZW5j
ZU5vZGUoc3RhdGljX2Nhc3Q8VmFyQWNjZXNzTm9kZSo+KGZ1bmMpLCBhcmdzKTsKKyAgICBlbHNl
IGlmIChuLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNz
b3JOb2RlICpicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSAqPihuKTsK
ICAgICAgICAgaWYgKG4gIT0gZnVuYykKICAgICAgICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb25D
YWxsUGFyZW5CcmFja2V0Tm9kZShicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBhcmdzKTsKQEAgLTk1OSwxMCArOTM3LDEzIEBAIHN0YXRpYyBOb2RlICptYWtlVHlwZU9mTm9k
ZShOb2RlICpleHByKQogewogICAgIE5vZGUgKm4gPSBleHByLT5ub2RlSW5zaWRlQWxsUGFyZW5z
KCk7CiAKLSAgICBpZiAobi0+aXNSZXNvbHZlTm9kZSgpKSB7Ci0gICAgICAgIFJlc29sdmVOb2Rl
ICpyZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUgKj4obik7Ci0gICAgICAgIHJldHVy
biBuZXcgVHlwZU9mUmVzb2x2ZU5vZGUocmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKLSAgICB9IGVs
c2UKKyAgICAvLyBXZSBvbmx5IG5lZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHBhdGggZm9yIHZhcmlh
YmxlIHJlZmVyZW5jZXMsCisgICAgLy8gc2luY2UgdGhleSBtYXkgdGhyb3cgYSBSZXNvbHZlRXJy
b3Igb24gZXZhbHVhdGUgd2hlcmUgd2UgZG9uJ3QKKyAgICAvLyB3YW50IHRoYXQuCisKKyAgICBp
ZiAobi0+aXNWYXJBY2Nlc3NOb2RlKCkpCisgICAgICAgIHJldHVybiBuZXcgVHlwZU9mUmVmZXJl
bmNlTm9kZShzdGF0aWNfY2FzdDxMb2NhdGlvbk5vZGUqPihuKSk7CisgICAgZWxzZQogICAgICAg
ICByZXR1cm4gbmV3IFR5cGVPZlZhbHVlTm9kZShleHByKTsKIH0KIApAQCAtOTcyLDE3ICs5NTMs
OCBAQCBzdGF0aWMgTm9kZSAqbWFrZURlbGV0ZU5vZGUoTm9kZSAqZXhwcikKICAgICAKICAgICBp
ZiAoIW4tPmlzTG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIG5ldyBEZWxldGVWYWx1ZU5vZGUo
ZXhwcik7Ci0gICAgZWxzZSBpZiAobi0+aXNSZXNvbHZlTm9kZSgpKSB7Ci0gICAgICAgIFJlc29s
dmVOb2RlICpyZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUgKj4obik7Ci0gICAgICAg
IHJldHVybiBuZXcgRGVsZXRlUmVzb2x2ZU5vZGUocmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKLSAg
ICB9IGVsc2UgaWYgKG4tPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7Ci0gICAgICAgIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUgKmJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2Rl
ICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IERlbGV0ZUJyYWNrZXROb2RlKGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFzc2Vy
dChuLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlICpkb3Qg
PSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUgKj4obik7Ci0gICAgICAgIHJldHVybiBuZXcg
RGVsZXRlRG90Tm9kZShkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCkpOwotICAgIH0KKyAg
ICBlbHNlCisgICAgICAgIHJldHVybiBuZXcgRGVsZXRlUmVmZXJlbmNlTm9kZShzdGF0aWNfY2Fz
dDxMb2NhdGlvbk5vZGUqPihuKSk7IC8vICMjIyBub3QgMTAwJSBmYWl0aGZ1bCBsaXN0aW5nPwog
fQogCiBzdGF0aWMgYm9vbCBtYWtlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eU5vZGUoUHJvcGVydHlO
b2RlKiYgcmVzdWx0LCBJZGVudGlmaWVyJiBnZXRPclNldCwgSWRlbnRpZmllciYgbmFtZSwgUGFy
YW1ldGVyTm9kZSAqcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlICpib2R5KQpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL2ludGVybmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvaW50ZXJuYWwuY3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9p
bnRlcm5hbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSwzMiArMTY1LDYgQEAgSlNPYmplY3Qg
KkdldHRlclNldHRlckltcDo6dG9PYmplY3QoRXhlYwogICAgIHJldHVybiBqc051bGwoKS0+dG9P
YmplY3QoZXhlYyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMYWJl
bFN0YWNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWJvb2wgTGFiZWxT
dGFjazo6cHVzaChjb25zdCBJZGVudGlmaWVyICZpZCkKLXsKLSAgaWYgKGNvbnRhaW5zKGlkKSkK
LSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgU3RhY2tFbGVtICpuZXd0b3MgPSBuZXcgU3RhY2tFbGVt
OwotICBuZXd0b3MtPmlkID0gaWQ7Ci0gIG5ld3Rvcy0+cHJldiA9IHRvczsKLSAgdG9zID0gbmV3
dG9zOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBMYWJlbFN0YWNrOjpjb250YWlucyhjb25z
dCBJZGVudGlmaWVyICZpZCkgY29uc3QKLXsKLSAgaWYgKGlkLmlzRW1wdHkoKSkKLSAgICByZXR1
cm4gdHJ1ZTsKLQotICBmb3IgKFN0YWNrRWxlbSAqY3VyciA9IHRvczsgY3VycjsgY3VyciA9IGN1
cnItPnByZXYpCi0gICAgaWYgKGN1cnItPmlkID09IGlkKQotICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgcmV0dXJuIGZhbHNlOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
SW50ZXJuYWxGdW5jdGlvbkltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjb25zdCBD
bGFzc0luZm8gSW50ZXJuYWxGdW5jdGlvbkltcDo6aW5mbyA9IHsiRnVuY3Rpb24iLCAwLCAwLCAw
fTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5oCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9pbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NCw0MiArODQsNiBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICBkb3VibGUgdmFsOwogICB9OwogCi0KLSAgLyoqCi0gICAqIEBz
aG9ydCBUaGUgImxhYmVsIHNldCIgaW4gRWNtYS0yNjIgc3BlYwotICAgKi8KLSAgY2xhc3MgTGFi
ZWxTdGFjayA6IE5vbmNvcHlhYmxlIHsKLSAgcHVibGljOgotICAgIExhYmVsU3RhY2soKQotICAg
ICAgOiB0b3MoMCkKLSAgICB7Ci0gICAgfQotICAgIH5MYWJlbFN0YWNrKCk7Ci0KLSAgICAvKioK
LSAgICAgKiBJZiBpZCBpcyBub3QgZW1wdHkgYW5kIGlzIG5vdCBpbiB0aGUgc3RhY2sgYWxyZWFk
eSwgcHV0cyBpdCBvbiB0b3Agb2YKLSAgICAgKiB0aGUgc3RhY2sgYW5kIHJldHVybnMgdHJ1ZSwg
b3RoZXJ3aXNlIHJldHVybnMgZmFsc2UKLSAgICAgKi8KLSAgICBib29sIHB1c2goY29uc3QgSWRl
bnRpZmllciAmaWQpOwotICAgIC8qKgotICAgICAqIElzIHRoZSBpZCBpbiB0aGUgc3RhY2s/Ci0g
ICAgICovCi0gICAgYm9vbCBjb250YWlucyhjb25zdCBJZGVudGlmaWVyICZpZCkgY29uc3Q7Ci0g
ICAgLyoqCi0gICAgICogUmVtb3ZlcyBmcm9tIHRoZSBzdGFjayB0aGUgbGFzdCBwdXNoZWQgaWQg
KHdoYXQgZWxzZT8pCi0gICAgICovCi0gICAgdm9pZCBwb3AoKTsKLQotICBwcml2YXRlOgotICAg
IHN0cnVjdCBTdGFja0VsZW0gewotICAgICAgSWRlbnRpZmllciBpZDsKLSAgICAgIFN0YWNrRWxl
bSAqcHJldjsKLSAgICB9OwotCi0gICAgU3RhY2tFbGVtICp0b3M7Ci0gIH07Ci0KLQogICAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZhbHVh
dGlvbgogICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0NywyMyArMTExLDYgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgIHZvaWQgcHJpbnRJbmZvKEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgY2hhciAq
cywgSlNWYWx1ZSAqLCBpbnQgbGluZW5vID0gLTEpOwogI2VuZGlmCiAKLWlubGluZSBMYWJlbFN0
YWNrOjp+TGFiZWxTdGFjaygpCi17Ci0gICAgU3RhY2tFbGVtICpwcmV2OwotICAgIGZvciAoU3Rh
Y2tFbGVtICplID0gdG9zOyBlOyBlID0gcHJldikgewotICAgICAgICBwcmV2ID0gZS0+cHJldjsK
LSAgICAgICAgZGVsZXRlIGU7Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBMYWJlbFN0YWNrOjpw
b3AoKQotewotICAgIGlmIChTdGFja0VsZW0gKmUgPSB0b3MpIHsKLSAgICAgICAgdG9zID0gZS0+
cHJldjsKLSAgICAgICAgZGVsZXRlIGU7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZQogCiAj
ZW5kaWYgLy8gIElOVEVSTkFMX0gKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdEds
b2JhbE9iamVjdCgpCiAgICAgbV9GdW5jdGlvblByb3RvdHlwZSA9IG5ldyBGdW5jdGlvblByb3Rv
dHlwZSgmbV9nbG9iYWxFeGVjKTsKICAgICBtX09iamVjdFByb3RvdHlwZSA9IG5ldyBPYmplY3RQ
cm90b3R5cGUoJm1fZ2xvYmFsRXhlYywgbV9GdW5jdGlvblByb3RvdHlwZSk7CiAgICAgbV9GdW5j
dGlvblByb3RvdHlwZS0+c2V0UHJvdG90eXBlKG1fT2JqZWN0UHJvdG90eXBlKTsKLSAgICAKKwog
ICAgIG1fQXJyYXlQcm90b3R5cGUgPSBuZXcgQXJyYXlQcm90b3R5cGUoJm1fZ2xvYmFsRXhlYywg
bV9PYmplY3RQcm90b3R5cGUpOwogICAgIG1fU3RyaW5nUHJvdG90eXBlID0gbmV3IFN0cmluZ1By
b3RvdHlwZSgmbV9nbG9iYWxFeGVjLCBtX09iamVjdFByb3RvdHlwZSk7CiAgICAgbV9Cb29sZWFu
UHJvdG90eXBlID0gbmV3IEJvb2xlYW5Qcm90b3R5cGUoJm1fZ2xvYmFsRXhlYywgbV9PYmplY3RQ
cm90b3R5cGUsIG1fRnVuY3Rpb25Qcm90b3R5cGUpOwpAQCAtMzYxLDcgKzM2MSw3IEBAIENvbXBs
ZXRpb24gSW50ZXJwcmV0ZXI6OmV2YWx1YXRlKGNvbnN0IFUKICAgICAgICAgQ29udGV4dCBjdHgo
Z2xvYmFsT2JqLCB0aGlzLCB0aGlzT2JqLCBwcm9nTm9kZS5nZXQoKSk7CiAgICAgICAgIEV4ZWNT
dGF0ZSBuZXdFeGVjKHRoaXMsICZjdHgpOwogICAgICAgICBjdHguc2V0RXhlY1N0YXRlKCZuZXdF
eGVjKTsKLSAgICAgICAgcHJvZ05vZGUtPnByb2Nlc3NWYXJEZWNscygmbmV3RXhlYyk7CisgICAg
ICAgIHByb2dOb2RlLT5wcm9jZXNzRGVjbHMoJm5ld0V4ZWMpOwogICAgICAgICByZXMgPSBwcm9n
Tm9kZS0+ZXhlY3V0ZSgmbmV3RXhlYyk7CiAgICAgfQogICAgIApJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9saXN0LmNw
cAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbGlzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MCw2ICsxODAsMjIgQEAgTGlzdDo6TGlzdCgpIDogX2ltcEJhc2UoYWxs
b2NhdGVMaXN0SW1wKAogI2VuZGlmCiB9CiAKK0xpc3Q6Okxpc3QoYm9vbCBuZWVkc01hcmtpbmcp
IDogX2ltcEJhc2UoYWxsb2NhdGVMaXN0SW1wKCkpCit7CisgICAgTGlzdEltcCAqaW1wID0gc3Rh
dGljX2Nhc3Q8TGlzdEltcCAqPihfaW1wQmFzZSk7CisgICAgaW1wLT5zaXplID0gMDsKKyAgICBp
bXAtPnJlZkNvdW50ID0gMTsKKyAgICBpbXAtPnZhbHVlUmVmQ291bnQgPSAhbmVlZHNNYXJraW5n
OworICAgIGltcC0+Y2FwYWNpdHkgPSAwOworICAgIGltcC0+b3ZlcmZsb3cgPSAwOworCisjaWYg
RFVNUF9TVEFUSVNUSUNTCisgICAgaWYgKCsrbnVtTGlzdHMgPiBudW1MaXN0c0hpZ2hXYXRlck1h
cmspCisgICAgICAgIG51bUxpc3RzSGlnaFdhdGVyTWFyayA9IG51bUxpc3RzOworICAgIGltcC0+
c2l6ZUhpZ2hXYXRlck1hcmsgPSAwOworI2VuZGlmCit9CisKIHZvaWQgTGlzdDo6bWFya1ZhbHVl
cygpCiB7CiAgICAgc3RhdGljX2Nhc3Q8TGlzdEltcCAqPihfaW1wQmFzZSktPm1hcmtWYWx1ZXMo
KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9saXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL2xpc3QuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvbGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIGNsYXNzIExpc3QgewogICAgIHB1YmxpYzoKICAgICAgICAgTGlzdCgpOworICAgICAg
ICBleHBsaWNpdCBMaXN0KGJvb2wgbmVlZHNNYXJraW5nKTsKICAgICAgICAgfkxpc3QoKSB7IGRl
cmVmKCk7IH0KIAogICAgICAgICBMaXN0KGNvbnN0IExpc3QgJmIpIDogX2ltcEJhc2UoYi5faW1w
QmFzZSkgewpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJKHJldmlzaW9uIDI0
NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgU291cmNlU3RyZWFtJiBv
cGVyYXRvcjw8KGNoYXIpOwogICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChGb3JtYXQgZik7
CiAgICAgU291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IE5vZGUgKik7CisgICAgU291cmNl
U3RyZWFtJiBvcGVyYXRvcjw8KE9wZXJhdG9yIG9wKTsgLy8gRklYTUU6IGFkZCBLSlNfTk9fSU5M
SU5FCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChS
ZWZQdHI8VD4gbikgeyByZXR1cm4gdGhpcy0+b3BlcmF0b3I8PChuLmdldCgpKTsgfQogCiAgIHBy
aXZhdGU6CkBAIC0xMjUsNiArMTI2LDEyIEBAIFNvdXJjZVN0cmVhbSYgU291cmNlU3RyZWFtOjpv
cGVyYXRvcjw8KEYKICAgcmV0dXJuICp0aGlzOwogfQogCitTb3VyY2VTdHJlYW0mIFNvdXJjZVN0
cmVhbTo6b3BlcmF0b3I8PChPcGVyYXRvciBvcCkKK3sKKyAgQVNTRVJUKG9wID09IE9wUGx1c1Bs
dXMgfHwgb3AgPT0gT3BNaW51c01pbnVzKTsKKyAgcmV0dXJuICp0aGlzIDw8ICgob3AgPT0gT3BQ
bHVzUGx1cykgPyAiKysiIDogIi0tIik7Cit9CisKIFVTdHJpbmcgTm9kZTo6dG9TdHJpbmcoKSBj
b25zdAogewogICBTb3VyY2VTdHJlYW0gc3RyOwpAQCAtMTU0LDcgKzE2MSw3IEBAIHZvaWQgUmVn
RXhwTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICYKIAogdm9pZCBUaGlzTm9kZTo6c3RyZWFt
VG8oU291cmNlU3RyZWFtICZzKSBjb25zdCB7IHMgPDwgInRoaXMiOyB9CiAKLXZvaWQgUmVzb2x2
ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QgeyBzIDw8IGlkZW50OyB9Cit2
b2lkIFZhckFjY2Vzc05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QgeyBzIDw8
IGlkZW50OyB9CiAKIHZvaWQgR3JvdXBOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNv
bnN0CiB7CkBAIC0yNjAsOSArMjY3LDkgQEAgdm9pZCBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OnN0
cmVhbVRvKFNvdQogICBzIDw8IGV4cHIgPDwgYXJnczsKIH0KIAotdm9pZCBGdW5jdGlvbkNhbGxS
ZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBGdW5jdGlv
bkNhbGxSZWZlcmVuY2VOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7Ci0g
IHMgPDwgaWRlbnQgPDwgYXJnczsKKyAgcyA8PCBleHByIDw8IGFyZ3M7CiB9CiAKIHZvaWQgRnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKQEAg
LTI4MiwzNCArMjg5LDEyIEBAIHZvaWQgRnVuY3Rpb25DYWxsRG90Tm9kZTo6c3RyZWFtVG8oU291
cmMKIAogdm9pZCBGdW5jdGlvbkNhbGxQYXJlbkRvdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSAmcykgY29uc3QKIHsKLSAgcyA8PCAiKCIgPDwgU291cmNlU3RyZWFtOjpEb3RFeHByIDw8IGJh
c2UgPDwgIi4iIDw8IGlkZW50IDw8ICIpIiA8PCBhcmdzOwotfQotCi12b2lkIFBvc3RmaXhSZXNv
bHZlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAotewotICBzIDw8IG1faWRl
bnQ7Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8ICIrKyI7Ci0gIGVsc2UK
LSAgICBzIDw8ICItLSI7Ci19Ci0KLXZvaWQgUG9zdGZpeEJyYWNrZXROb2RlOjpzdHJlYW1UbyhT
b3VyY2VTdHJlYW0gJnMpIGNvbnN0Ci17Ci0gIHMgPDwgbV9iYXNlIDw8ICJbIiA8PCBtX3N1YnNj
cmlwdCA8PCAiXSI7Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8ICIrKyI7
Ci0gIGVsc2UKLSAgICBzIDw8ICItLSI7CisgIHMgPDwgIigiIDw8IFNvdXJjZVN0cmVhbTo6RG90
RXhwciA8PCBiYXNlIDw8ICcuJyA8PCBpZGVudCA8PCAiKSIgPDwgYXJnczsKIH0KIAotdm9pZCBQ
b3N0Zml4RG90Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBQb3N0
Zml4Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewotICBzIDw8IFNvdXJj
ZVN0cmVhbTo6RG90RXhwciA8PCBtX2Jhc2UgPDwgIi4iIDw8IG1faWRlbnQ7Ci0gIGlmIChtX29w
ZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8ICIrKyI7Ci0gIGVsc2UKLSAgICBzIDw8ICItLSI7
CisgIHMgPDwgbV9sb2MgPDwgbV9vcGVyOwogfQogCiB2b2lkIFBvc3RmaXhFcnJvck5vZGU6OnN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKQEAgLTMyMSwxOSArMzA2LDkgQEAgdm9pZCBQ
b3N0Zml4RXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdAogICAgIHMgPDwgIi0tIjsKIH0KIAot
dm9pZCBEZWxldGVSZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAot
ewotICBzIDw8ICJkZWxldGUgIiA8PCBtX2lkZW50OwotfQotCi12b2lkIERlbGV0ZUJyYWNrZXRO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Ci17Ci0gIHMgPDwgImRlbGV0ZSAi
IDw8IG1fYmFzZSA8PCAiWyIgPDwgbV9zdWJzY3JpcHQgPDwgIl0iOwotfQotCi12b2lkIERlbGV0
ZURvdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgRGVsZXRlUmVm
ZXJlbmNlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewotICBzIDw8ICJk
ZWxldGUgIiA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgbV9iYXNlIDw8ICIuIiA8PCBtX2lk
ZW50OworICBzIDw8ICJkZWxldGUgIiA8PCBsb2M7CiB9CiAKIHZvaWQgRGVsZXRlVmFsdWVOb2Rl
OjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CkBAIC0zNTEsMzYgKzMyNiwxNCBAQCB2
b2lkIFR5cGVPZlZhbHVlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyCiAgIHMgPDwgInR5cGVvZiAi
IDw8IG1fZXhwcjsKIH0KIAotdm9pZCBUeXBlT2ZSZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtICZzKSBjb25zdAotewotICBzIDw8ICJ0eXBlb2YgIiA8PCBtX2lkZW50OwotfQotCi12
b2lkIFByZWZpeFJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Ci17
Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8ICIrKyI7Ci0gIGVsc2UKLSAg
ICBzIDw8ICItLSI7Ci0gIHMgPDwgbV9pZGVudDsKLX0KLQotdm9pZCBQcmVmaXhCcmFja2V0Tm9k
ZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBUeXBlT2ZSZWZlcmVuY2VO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7Ci0gIGlmIChtX29wZXIgPT0g
T3BQbHVzUGx1cykKLSAgICBzIDw8ICIrKyI7Ci0gIGVsc2UKLSAgICBzIDw8ICItLSI7Ci0gIHMg
PDwgbV9iYXNlIDw8ICJbIiA8PCBtX3N1YnNjcmlwdCA8PCAiXSI7CisgIHMgPDwgInR5cGVvZiAi
IDw8IGxvYzsKIH0KIAotdm9pZCBQcmVmaXhEb3ROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0g
JnMpIGNvbnN0Cit2b2lkIFByZWZpeE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29u
c3QKIHsKLSAgaWYgKG1fb3BlciA9PSBPcFBsdXNQbHVzKQotICAgIHMgPDwgIisrIjsKLSAgZWxz
ZQotICAgIHMgPDwgIi0tIjsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgbV9iYXNl
IDw8ICIuIiA8PCBtX2lkZW50OworICBzIDw8IG1fb3BlciA8PCBtX2xvYzsKIH0KIAogdm9pZCBQ
cmVmaXhFcnJvck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKQEAgLTU1Miw5
ICs1MDUsOSBAQCBzdGF0aWMgdm9pZCBzdHJlYW1Bc3NpZ25tZW50T3BlcmF0b3JUbyhTCiAgIHMg
PDwgb3BTdHI7CiB9CiAKLXZvaWQgQXNzaWduUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0
cmVhbSAmcykgY29uc3QKK3ZvaWQgQXNzaWduTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZz
KSBjb25zdAogewotICBzIDw8IG1faWRlbnQ7CisgIHMgPDwgbV9sb2M7CiAgIHN0cmVhbUFzc2ln
bm1lbnRPcGVyYXRvclRvKHMsIG1fb3Blcik7CiAgIHMgPDwgbV9yaWdodDsKIH0KQEAgLTYwNyw2
ICs1NjAsMTEgQEAgdm9pZCBWYXJTdGF0ZW1lbnROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdAogICBz
IDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCBuZXh0IDw8ICI7IjsKIH0KIAordm9pZCBTdGF0aWNW
YXJTdGF0ZW1lbnROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit7CisgIHMg
PDwgb3JpZ2luYWxTdGF0ZW1lbnQ7Cit9CisKIHZvaWQgQmxvY2tOb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0gJnMpIGNvbnN0CiB7CiAgIHMgPDwgU291cmNlU3RyZWFtOjpFbmRsIDw8ICJ7IiA8
PCBTb3VyY2VTdHJlYW06OkluZGVudApAQCAtNzc0LDMgKzczMiw4IEBAIHZvaWQgU291cmNlRWxl
bWVudHNOb2RlOjpzdHJlYW1UbyhTb3VyY2UKICAgZm9yIChjb25zdCBTb3VyY2VFbGVtZW50c05v
ZGUgKm4gPSB0aGlzOyBuOyBuID0gbi0+bmV4dC5nZXQoKSkKICAgICBzIDw8IG4tPm5vZGU7CiB9
CisKK3ZvaWQgRXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0Cit7Cisg
IHMgPDwga2lkOworfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCShyZXZpc2lvbiAyNDU1OCkKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3
IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2Fy
aWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQorICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtz
aW0gT3Jsb3ZpY2ggKG1ha3NpbUBrZGUub3JnKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM3
LDExICszOCwxMiBAQAogI2luY2x1ZGUgImxleGVyLmgiCiAjaW5jbHVkZSAib3BlcmF0aW9ucy5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCisjaW5jbHVkZSA8d3RmL0Fsd2F5c0lu
bGluZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3Vu
dGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IEtKUzsKK25hbWVzcGFjZSBLSlMgewogCiAjZGVmaW5lIEtKU19CUkVBS1BPSU5UIFwKICAgaWYg
KERlYnVnZ2VyOjpkZWJ1Z2dlcnNQcmVzZW50ID4gMCAmJiAhaGl0U3RhdGVtZW50KGV4ZWMpKSBc
CkBAIC03MSw2ICs3MywxNyBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwogICBpZiAoQ29sbGVjdG9y
Ojppc091dE9mTWVtb3J5KCkpIFwKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgLy8gd2lsbCBi
ZSBwaWNrZWQgdXAgYnkgS0pTX0NIRUNLRVhDRVBUSU9OCiAKKyNkZWZpbmUgS0pTX0NIRUNLRVhD
RVBUSU9OUkVGRVJFTkNFIFwKKyAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7IFwKKyAgICBo
YW5kbGVFeGNlcHRpb24oZXhlYyk7IFwKKyAgICByZWYuZm91bmQgPSB0cnVlOyBcCisgICAgcmV0
dXJuIHJlZjsgXAorICB9IFwKKyAgaWYgKENvbGxlY3Rvcjo6aXNPdXRPZk1lbW9yeSgpKSB7IFwK
KyAgICByZWYuZm91bmQgPSB0cnVlOyBcCisgICAgcmV0dXJuIHJlZjsgXAorICB9CisKICNkZWZp
bmUgS0pTX0NIRUNLRVhDRVBUSU9OTElTVCBcCiAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
eyBcCiAgICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOyBcCkBAIC0yMTcsNiArMjMwLDE4IEBAIENv
bXBsZXRpb24gTm9kZTo6Y3JlYXRlRXJyb3JDb21wbGV0aW9uKEUKICAgICByZXR1cm4gQ29tcGxl
dGlvbihUaHJvdywgRXJyb3I6OmNyZWF0ZShleGVjLCBlLCBtZXNzYWdlLCBsaW5lTm8oKSwgY3Vy
cmVudFNvdXJjZUlkKGV4ZWMpLCBjdXJyZW50U291cmNlVVJMKGV4ZWMpKSk7CiB9CiAKK05vZGUq
IE5vZGU6OmNyZWF0ZUVycm9yTm9kZShFcnJvclR5cGUgZSwgY29uc3QgY2hhciAqbXNnKQorewor
ICAgIHJldHVybiBuZXcgRXJyb3JOb2RlKHRoaXMsIGUsIG1zZyk7Cit9CisKK05vZGUqIE5vZGU6
OmNyZWF0ZUVycm9yTm9kZShFcnJvclR5cGUgZSwgY29uc3QgY2hhciAqbXNnLCBjb25zdCBJZGVu
dGlmaWVyICZpZGVudCkKK3sKKyAgICBVU3RyaW5nIG1lc3NhZ2UgPSBtc2c7CisgICAgc3Vic3Rp
dHV0ZShtZXNzYWdlLCBpZGVudC51c3RyaW5nKCkpOworICAgIHJldHVybiBuZXcgRXJyb3JOb2Rl
KHRoaXMsIGUsIG1lc3NhZ2UpOworfQorCiBKU1ZhbHVlICpOb2RlOjp0aHJvd0Vycm9yKEV4ZWNT
dGF0ZSogZXhlYywgRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICByZXR1cm4g
S0pTOjp0aHJvd0Vycm9yKGV4ZWMsIGUsIG1zZywgbGluZU5vKCksIGN1cnJlbnRTb3VyY2VJZChl
eGVjKSwgY3VycmVudFNvdXJjZVVSTChleGVjKSk7CkBAIC0zMDMsNiArMzI4LDcwIEBAIE5vZGUg
Kk5vZGU6Om5vZGVJbnNpZGVBbGxQYXJlbnMoKQogICAgIHJldHVybiB0aGlzOwogfQogCitOb2Rl
VmlzaXRvcjo6fk5vZGVWaXNpdG9yKCkKK3sKK30KKworY2xhc3MgVmFyRGVjbFZpc2l0b3I6IHB1
YmxpYyBOb2RlVmlzaXRvciB7CisgIHByaXZhdGU6CisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7Cisg
IHB1YmxpYzoKKyAgICBWYXJEZWNsVmlzaXRvcihFeGVjU3RhdGUqIGV4ZWMpIDogbV9leGVjKGV4
ZWMpCisgICAge30KKworICAgIHZpcnR1YWwgTm9kZSogdmlzaXQoTm9kZSogbm9kZSkgS0pTX0ZB
U1RfQ0FMTCB7CisgICAgICBub2RlLT5wcm9jZXNzVmFyRGVjbChtX2V4ZWMpOworCisgICAgICAv
L0RvIG5vdCByZWN1cnNlIGluc2lkZSBmdW5jdGlvbiBib2RpZXMuLi4KKyAgICAgIGlmIChub2Rl
LT5pbnRyb2R1Y2VzTmV3U3RhdGljU2NvcGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAg
IHJldHVybiBOb2RlVmlzaXRvcjo6dmlzaXQobm9kZSk7CisgICAgfQorfTsKKworY2xhc3MgRnVu
Y0RlY2xWaXNpdG9yIDogcHVibGljIE5vZGVWaXNpdG9yIHsKKyAgcHJpdmF0ZToKKyAgICBFeGVj
U3RhdGUqIG1fZXhlYzsKKyAgcHVibGljOgorICAgIEZ1bmNEZWNsVmlzaXRvcihFeGVjU3RhdGUq
IGV4ZWMpIDogbV9leGVjKGV4ZWMpCisgICAge30KKworICAgIHZpcnR1YWwgTm9kZSogdmlzaXQo
Tm9kZSogbm9kZSkgS0pTX0ZBU1RfQ0FMTCB7CisgICAgICBub2RlLT5wcm9jZXNzRnVuY0RlY2wo
bV9leGVjKTsKKworICAgICAgaWYgKG5vZGUtPmludHJvZHVjZXNOZXdTdGF0aWNTY29wZSgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgICAgcmV0dXJuIE5vZGVWaXNpdG9yOjp2aXNpdChub2Rl
KTsKKyAgICB9Cit9OworCit2b2lkIE5vZGU6OnByb2Nlc3NEZWNscyhFeGVjU3RhdGUgKmV4ZWMp
IHsKKyAgVmFyRGVjbFZpc2l0b3IgdlZpc2l0KGV4ZWMpOworICB2VmlzaXQudmlzaXQodGhpcyk7
CisKKyAgRnVuY0RlY2xWaXNpdG9yIGZWaXNpdChleGVjKTsKKyAgZlZpc2l0LnZpc2l0KHRoaXMp
OworfQorCit2b2lkIE5vZGU6OnByb2Nlc3NWYXJEZWNsKEV4ZWNTdGF0ZSopCit7fQorCit2b2lk
IE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKQore30KKworTm9kZSogTm9kZTo6b3B0
aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBOb2RlVmlzaXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOb2RlKiBO
b2RlVmlzaXRvcjo6dmlzaXQoTm9kZSAqbm9kZSkgeworICBub2RlLT5yZWN1cnNlVmlzaXQodGhp
cyk7CisgIHJldHVybiAwOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
U3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBTdGF0ZW1l
bnROb2RlOjpTdGF0ZW1lbnROb2RlKCkgCkBAIC0zMjcsMTAgKzQxNiw2IEBAIGJvb2wgU3RhdGVt
ZW50Tm9kZTo6aGl0U3RhdGVtZW50KEV4ZWNTdGEKICAgICByZXR1cm4gdHJ1ZTsgLy8gY29udGlu
dWUKIH0KIAotdm9pZCBTdGF0ZW1lbnROb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKikK
LXsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE51bGxOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNWYWx1ZSAqTnVsbE5vZGU6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSAqKQpAQCAtMzc5LDMxICs0NjQsMTY2IEBAIEpTVmFsdWUgKlRoaXNO
b2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmUKICAgcmV0dXJuIGV4ZWMtPmNvbnRleHQoKS0+dGhp
c1ZhbHVlKCk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNvbHZl
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gVmFyQWNjZXNzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi0vLyBFQ01BIDExLjEuMiAmIDEwLjEuNAotSlNWYWx1ZSAqUmVzb2x2ZU5vZGU6
OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKLXsKK0pTVmFsdWUqIFZhckFjY2Vzc05vZGU6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgewogICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4
ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOwogICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9
IGNoYWluLmJlZ2luKCk7CiAgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsK
LSAgCisKICAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNo
YWluCiAgIGFzc2VydChpdGVyICE9IGVuZCk7CiAKICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gIGRv
IHsgCi0gICAgSlNPYmplY3QgKm8gPSAqaXRlcjsKKyAgSlNPYmplY3QgKnNjb3BlT2JqOworICBk
byB7CisgICAgc2NvcGVPYmogPSAqaXRlcjsKKworICAgIGlmIChzY29wZU9iai0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4
ZWMsIHNjb3BlT2JqLCBpZGVudCk7CisKKyAgICArK2l0ZXI7CisgIH0gd2hpbGUgKGl0ZXIgIT0g
ZW5kKTsKKworICByZXR1cm4gdGhyb3dVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50
KTsKK30KKworUmVmZXJlbmNlIFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNT
dGF0ZSogZXhlYykgeworICBSZWZlcmVuY2UgcmVmKGlkZW50KTsKKyAgcmVmLmZvdW5kID0gdHJ1
ZTsKKyAgaW50IGxlbmd0aCA9IDA7CisKKyAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVj
LT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKKyAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBj
aGFpbi5iZWdpbigpOworICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4uZW5kKCk7CisK
KyAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCisg
IEFTU0VSVChpdGVyICE9IGVuZCk7CisKKyAgSlNPYmplY3QgKnNjb3BlT2JqOworICBkbyB7Cisg
ICAgc2NvcGVPYmogPSAqaXRlcjsKKyAgICByZWYuYmFzZSA9IHNjb3BlT2JqOworCisgICAgaWYg
KHNjb3BlT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHJlZi5wcm9wZXJ0eVNsb3Qp
KQorICAgICAgcmV0dXJuIHJlZjsKKworICAgICsraXRlcjsKKyAgICArK2xlbmd0aDsKKyAgfSB3
aGlsZSAoaXRlciAhPSBlbmQpOworCisgIHJlZi5mb3VuZCA9IGZhbHNlOworICByZWYucHJvcGVy
dHlTbG90LnNldFVuZGVmaW5lZChzY29wZU9iaik7IC8vb3V0ZXJtb3N0IHNjb3BlLgorICByZXR1
cm4gcmVmOworfQorCitOb2RlKiBWYXJBY2Nlc3NOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNzKEV4
ZWNTdGF0ZSAqZXhlYywgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSkKK3sKKyAgaW50IGluZGV4ID0g
bm9kZS0+bG9va3VwU3ltYm9sSUQoaWRlbnQpOworCisgIC8vIElmIHRoZSBzeW1ib2wgaXNuJ3Qg
bG9jYWwsIHdlIGNhbiBzdGlsbCBvcHRpbWl6ZSAKKyAgLy8gYSBiaXQsIGFuZCBza2lwIHRoZSBs
b2NhbCBzY29wZSBmb3IgbG9va3VwLgorICAvLyAodW5sZXNzICdldmFsJyBpbmplY3RzIGEgbmV3
IGxvY2FsLCBidXQgTm9uTG9jYWxSZXNvbHZlcgorICAvLyBpcyBjYXJlZnVsIGFib3V0IHRoYXQp
CisgIGlmIChpbmRleCA9PSAtMSkgeworICAgIGlmIChpZGVudCA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYXJndW1lbnRzKQorICAgICAgcmV0dXJuIDA7IC8vRHluYW1pYyBwcm9wZXJ0eS4uCisg
ICAgZWxzZQorICAgICAgcmV0dXJuIG5ldyBOb25Mb2NhbFZhckFjY2Vzc05vZGUoaWRlbnQpOwor
ICB9IGVsc2UgeworICAgICAgcmV0dXJuIG5ldyBMb2NhbFZhckFjY2Vzc05vZGUoaWRlbnQsIGlu
ZGV4KTsKKyAgfQorfQorCitpbnQgVmFyQWNjZXNzTm9kZTo6bG9jYWxJRChGdW5jdGlvbkJvZHlO
b2RlKiBub2RlKQoreworICByZXR1cm4gbm9kZS0+bG9va3VwU3ltYm9sSUQoaWRlbnQpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9jYWxWYXJBY2Nlc3NOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0pTVmFsdWUqIExvY2FsVmFyQWNjZXNz
Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQoreworICBBY3RpdmF0aW9uSW1wKiBzY29w
ZSA9IHN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihleGVjLT5jb250ZXh0KCktPmFjdGl2YXRp
b25PYmplY3QoKSk7CisgIHJldHVybiAqc2NvcGUtPmdldExvY2FsRGlyZWN0KGluZGV4KTsKK30K
KworUmVmZXJlbmNlIExvY2FsVmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0
YXRlICpleGVjKQoreworICBBY3RpdmF0aW9uSW1wKiBzY29wZSA9IHN0YXRpY19jYXN0PEFjdGl2
YXRpb25JbXAqPihleGVjLT5jb250ZXh0KCktPmFjdGl2YXRpb25PYmplY3QoKSk7CisgIFJlZmVy
ZW5jZSByZWYoaWRlbnQpOyAvLyMjIyBGSVhNRTogdGhlIGlkZW50IGlzIGZvciBkZWxldGUsIGJ1
dCBpdCBtYWtlcyBpdCB0YWtlIHRoZSBzdXBlci1zbG93IHBhdGguLgorICByZWYuYmFzZSAgPSBz
Y29wZTsKKyAgcmVmLmZvdW5kID0gdHJ1ZTsKKyAgcmVmLnByb3BlcnR5U2xvdC5zZXRQb3RlbnRp
YWxseVdyaXRlYWJsZSgpOworICByZWYucHJvcGVydHlTbG90LnNldFZhbHVlU2xvdChzY29wZSwg
c2NvcGUtPmdldExvY2FsRGlyZWN0KGluZGV4KSwgc2NvcGUtPmlzTG9jYWxSZWFkT25seShpbmRl
eCkpOworICByZXR1cm4gcmVmOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gTm9uTG9jYWxWYXJBY2Nlc3NOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKU1Zh
bHVlKiBOb25Mb2NhbFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgewor
ICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigp
OworICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7CisgIFNjb3BlQ2hh
aW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKKworICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZl
IHNvbWV0aGluZyBpbiB0aGUgc2NvcGUgY2hhaW4KKyAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKwor
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgSlNPYmplY3QgKnNjb3BlT2JqID0gKml0ZXI7CisKKyAg
aWYgKCFzY29wZU9iai0+aXNMb2NhbEluamVjdGVkKCkpIHsKKyAgICAvLyBVbmxlc3MgZXZhbCBp
bnRyb2R1Y2VkIG5ldyB2YXJpYWJsZXMgZHluYW1pY2FsbHksCisgICAgLy8gd2Uga25vdyB0aGlz
IGlzbid0IGluIHRoZSB0b3Agc2NvcGUKKyAgICArK2l0ZXI7CisgIH0KKworICBkbyB7CisgICAg
c2NvcGVPYmogPSAqaXRlcjsKKworICAgIGlmIChzY29wZU9iai0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIHNjb3Bl
T2JqLCBpZGVudCk7CiAKLSAgICBpZiAoby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBz
bG90KSkKLSAgICAgIHJldHVybiBzbG90LmdldFZhbHVlKGV4ZWMsIG8sIGlkZW50KTsKLSAgICAK
ICAgICArK2l0ZXI7CiAgIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKIAogICByZXR1cm4gdGhyb3dV
bmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKIH0KIAorUmVmZXJlbmNlIE5vbkxv
Y2FsVmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0YXRlKiBleGVjKSB7Cisg
IFJlZmVyZW5jZSByZWYoaWRlbnQpOworICByZWYuZm91bmQgPSB0cnVlOworCisgIGNvbnN0IFNj
b3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7CisgIFNjb3Bl
Q2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVnaW4oKTsKKyAgU2NvcGVDaGFpbkl0ZXJhdG9y
IGVuZCA9IGNoYWluLmVuZCgpOworCisgIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5n
IGluIHRoZSBzY29wZSBjaGFpbgorICBhc3NlcnQoaXRlciAhPSBlbmQpOworCisgIEpTT2JqZWN0
ICpzY29wZU9iaiA9ICppdGVyOworICBpZiAoIXNjb3BlT2JqLT5pc0xvY2FsSW5qZWN0ZWQoKSkg
eworICAgLy8gVW5sZXNzIGV2YWwgaW50cm9kdWNlZCBuZXcgdmFyaWFibGVzIGR5bmFtaWNhbGx5
LAorICAgLy8gd2Uga25vdyB0aGlzIGlzbid0IGluIHRoZSB0b3Agc2NvcGUKKyAgICsraXRlcjsK
KyAgfQorCisgIGRvIHsKKyAgICBzY29wZU9iaiA9ICppdGVyOworICAgIHJlZi5iYXNlID0gc2Nv
cGVPYmo7CisKKyAgICBpZiAoc2NvcGVPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwg
cmVmLnByb3BlcnR5U2xvdCkpCisgICAgICByZXR1cm4gcmVmOworCisgICAgKytpdGVyOworICB9
IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgcmVmLmJhc2UgPSBzY29wZU9iajsKKyAgcmVmLmZv
dW5kID0gZmFsc2U7CisgIHJlZi5wcm9wZXJ0eVNsb3Quc2V0VW5kZWZpbmVkKHNjb3BlT2JqKTsg
Ly9vdXRlcm1vc3Qgc2NvcGUuCisgIHJldHVybiByZWY7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBHcm91cE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIC8vIEVDTUEgMTEuMS42CkBAIC00MjEsNiArNjQxLDExIEBAIE5vZGUgKkdyb3Vw
Tm9kZTo6bm9kZUluc2lkZUFsbFBhcmVucygpCiAgICAgcmV0dXJuIG47CiB9CiAKK3ZvaWQgR3Jv
dXBOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBncm91cCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBFbGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIC8vIEVDTUEgMTEuMS40CkBAIC00NDIsNiArNjY3LDEyIEBAIHZvaWQgRWxlbWVudE5vZGU6
OmJyZWFrQ3ljbGUoKSAKICAgICBuZXh0ID0gMDsKIH0KIAordm9pZCBFbGVtZW50Tm9kZTo6cmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgbmV4dCk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBub2RlKTsKK30K
KwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFycmF5Tm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xLjQKQEAgLTQ2Niw2ICs2
OTcsMTEgQEAgSlNWYWx1ZSAqQXJyYXlOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKgogICByZXR1
cm4gYXJyYXk7CiB9CiAKK3ZvaWQgQXJyYXlOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBlbGVtZW50KTsKK30K
KwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE9iamVjdExpdGVyYWxOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xLjUKQEAgLTQ3Nyw2ICs3
MTMsMTEgQEAgSlNWYWx1ZSAqT2JqZWN0TGl0ZXJhbE5vZGU6OmV2YWx1YXRlKEV4ZQogICByZXR1
cm4gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5PYmplY3QoKS0+Y29uc3RydWN0
KGV4ZWMsTGlzdDo6ZW1wdHkoKSk7CiB9CiAKK3ZvaWQgT2JqZWN0TGl0ZXJhbE5vZGU6OnJlY3Vy
c2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZp
c2l0b3IsIGxpc3QpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJv
cGVydHlMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDEx
LjEuNQpAQCAtNTE0LDYgKzc1NSwxMiBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmJyZWFrQ3lj
bGUoKSAKICAgICBuZXh0ID0gMDsKIH0KIAordm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjpyZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBub2RlKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydHlOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBFQ01BIDExLjEuNQogSlNWYWx1ZSAqUHJvcGVydHlOb2Rl
OjpldmFsdWF0ZShFeGVjU3RhdGUqKQpAQCAtNTIyLDYgKzc2OSwxMiBAQCBKU1ZhbHVlICpQcm9w
ZXJ0eU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0CiAgIHJldHVybiBqc051bGwoKTsKIH0KIAordm9p
ZCBQcm9wZXJ0eU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAg
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5hbWUpOworICAgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgYXNzaWduKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQ
cm9wZXJ0eU5hbWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNN
QSAxMS4xLjUKQEAgLTU1NCw2ICs4MDcsNDIgQEAgSlNWYWx1ZSAqQnJhY2tldEFjY2Vzc29yTm9k
ZTo6ZXZhbHVhdGUoRQogICByZXR1cm4gby0+Z2V0KGV4ZWMsIElkZW50aWZpZXIodjItPnRvU3Ry
aW5nKGV4ZWMpKSk7CiB9CiAKK1JlZmVyZW5jZSBCcmFja2V0QWNjZXNzb3JOb2RlOjpldmFsdWF0
ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgIFJlZmVyZW5jZSAgcmVmOworICBKU1Zh
bHVlICp2MSA9IGV4cHIxLT5ldmFsdWF0ZShleGVjKTsKKyAgS0pTX0NIRUNLRVhDRVBUSU9OUkVG
RVJFTkNFCisKKyAgSlNWYWx1ZSAqdjIgPSBleHByMi0+ZXZhbHVhdGUoZXhlYyk7CisgIEtKU19D
SEVDS0VYQ0VQVElPTlJFRkVSRU5DRQorCisgIEpTT2JqZWN0ICpvID0gdjEtPnRvT2JqZWN0KGV4
ZWMpOworICByZWYuYmFzZSAgPSBvOworICByZWYuZm91bmQgPSB0cnVlOyAvL0Fsd2F5cyBmb3Ig
dGhlc2Ugc29ydHMgb2YgdGhpbmdzLi4KKyAgCisgIC8vIFNwZWNpYWwgY2FzZSBmb3IgaW5kaWNl
cywgdG8gYXZvaWQgY29udmVydGluZyBkb3VibGUtPnN0cmluZworICB1aW50MzJfdCBpOworICBp
ZiAodjItPmdldFVJbnQzMihpKSkgeworICAgIHJlZi5pZGVudCA9IElkZW50aWZpZXI6OmZyb20o
aSk7CisgICAgaWYgKCFvLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaSwgcmVmLnByb3BlcnR5U2xv
dCkpCisgICAgICByZWYucHJvcGVydHlTbG90LnNldFVuZGVmaW5lZChvKTsKKyAgICByZXR1cm4g
cmVmOworICB9CisKKyAgLy9PdGhlcndpc2UgZG8gaXQgc3ltYm9saWNhbGx5Li4KKyAgSWRlbnRp
ZmllciBpZGVudCh2Mi0+dG9TdHJpbmcoZXhlYykpOworICByZWYuaWRlbnQgPSBpZGVudDsKKyAg
aWYgKCFvLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHJlZi5wcm9wZXJ0eVNsb3QpKQor
ICAgIHJlZi5wcm9wZXJ0eVNsb3Quc2V0VW5kZWZpbmVkKG8pOworICByZXR1cm4gcmVmOworfQor
Cit2b2lkIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlz
aXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByMSk7CisgIHJlY3Vyc2VW
aXNpdExpbmsodmlzaXRvciwgZXhwcjIpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRG90QWNjZXNzb3JOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIC8vIEVDTUEgMTEuMi4xYgpAQCAtNTY1LDYgKzg1NCwyOSBAQCBKU1ZhbHVlICpEb3RBY2Nl
c3Nvck5vZGU6OmV2YWx1YXRlKEV4ZWNTCiAKIH0KIAorUmVmZXJlbmNlIERvdEFjY2Vzc29yTm9k
ZTo6ZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0YXRlKiBleGVjKQoreworICBSZWZlcmVuY2UgIHJl
ZihpZGVudCk7CisgIEpTVmFsdWUgKnYgPSBleHByLT5ldmFsdWF0ZShleGVjKTsKKyAgS0pTX0NI
RUNLRVhDRVBUSU9OUkVGRVJFTkNFCisKKyAgSlNPYmplY3QgKm8gPSB2LT50b09iamVjdChleGVj
KTsKKworICByZWYuZm91bmQgPSB0cnVlOyAvL0Fsd2F5cyBmb3IgdGhlc2Ugc29ydHMgb2YgdGhp
bmdzLi4KKyAgcmVmLmJhc2UgID0gbzsKKyAgaWYgKCFvLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnQsIHJlZi5wcm9wZXJ0eVNsb3QpKSB7CisgICAgLy9DdXJyZW50bHkgdW5kZWZpbmVkLCBu
b3RlIHRoYXQsIGJ1dCBkb24ndCB0cmlnZ2VyCisgICAgLy9hICJub3QgZm91bmQiIGVycm9yCisg
ICAgcmVmLnByb3BlcnR5U2xvdC5zZXRVbmRlZmluZWQobyk7CisgIH0KKyAgcmV0dXJuIHJlZjsK
K30KKwordm9pZCBEb3RBY2Nlc3Nvck5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlz
aXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOworfQorCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXJndW1lbnRMaXN0Tm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBKU1ZhbHVlICpBcmd1bWVudExpc3ROb2RlOjpldmFsdWF0
ZShFeGVjU3RhdGUgKikKQEAgLTU5Miw2ICs5MDQsMTIgQEAgdm9pZCBBcmd1bWVudExpc3ROb2Rl
OjpicmVha0N5Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgQXJndW1lbnRMaXN0Tm9k
ZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgbmV4dCk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHBy
KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50c05vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNWYWx1ZSAqQXJndW1lbnRzTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICopCkBAIC02MDAsNiArOTE4LDExIEBAIEpTVmFsdWUgKkFy
Z3VtZW50c05vZGU6OmV2YWx1YXRlKEV4ZWNTdGEKICAgcmV0dXJuIDA7IC8vIGR1bW15LCBzZWUg
ZXZhbHVhdGVMaXN0KCkKIH0KIAordm9pZCBBcmd1bWVudHNOb2RlOjpyZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBsaXN0
KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5ld0V4cHJOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4yLjIKQEAgLTYy
Nyw2ICs5NTAsMjIgQEAgSlNWYWx1ZSAqTmV3RXhwck5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZQog
ICByZXR1cm4gY29uc3RyLT5jb25zdHJ1Y3QoZXhlYywgYXJnTGlzdCk7CiB9CiAKK3ZvaWQgTmV3
RXhwck5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgYXJncyk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBub3RBbk9iamVjdE1lc3NhZ2UoKQor
eworICAgIHJldHVybiAiVmFsdWUgJXMgKHJlc3VsdCBvZiBleHByZXNzaW9uICVzKSBpcyBub3Qg
YW4gb2JqZWN0LiI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBub3RDYWxsYWJsZU1lc3NhZ2Uo
KQoreworICAgIHJldHVybiAiT2JqZWN0ICVzIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgZG9l
cyBub3QgYWxsb3cgY2FsbHMuIjsKK30KKwogLy8gRUNNQSAxMS4yLjMKIEpTVmFsdWUgKkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQogewpAQCAtNjM0LDcw
ICs5NzMsNzQgQEAgSlNWYWx1ZSAqRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpldmFsdWF0ZQogICBL
SlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogCiAgIGlmICghdi0+aXNPYmplY3QoKSkgewotICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgIlZhbHVlICVzIChyZXN1bHQgb2YgZXhw
cmVzc2lvbiAlcykgaXMgbm90IG9iamVjdC4iLCB2LCBleHByLmdldCgpKTsKKyAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsIG5vdEFuT2JqZWN0TWVzc2FnZSgpLCB2LCBleHBy
LmdldCgpKTsKICAgfQogICAKICAgSlNPYmplY3QgKmZ1bmMgPSBzdGF0aWNfY2FzdDxKU09iamVj
dCo+KHYpOwogCiAgIGlmICghZnVuYy0+aW1wbGVtZW50c0NhbGwoKSkgewotICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgIk9iamVjdCAlcyAocmVzdWx0IG9mIGV4cHJlc3Np
b24gJXMpIGRvZXMgbm90IGFsbG93IGNhbGxzLiIsIHYsIGV4cHIuZ2V0KCkpOworICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgbm90Q2FsbGFibGVNZXNzYWdlKCksIHYsIGV4
cHIuZ2V0KCkpOwogICB9CiAKICAgTGlzdCBhcmdMaXN0ID0gYXJncy0+ZXZhbHVhdGVMaXN0KGV4
ZWMpOwogICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogCi0gIEpTT2JqZWN0ICp0aGlzT2JqID0g
IGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT5nbG9iYWxPYmplY3QoKTsKKyAgSlNPYmplY3Qg
KnRoaXNPYmogPSBleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCk7CiAK
ICAgcmV0dXJuIGZ1bmMtPmNhbGwoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7CiB9CiAKLS8vIEVD
TUEgMTEuMi4zCi1KU1ZhbHVlICpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlICpleGVjKQordm9pZCBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OnJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVj
LT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBj
aGFpbi5iZWdpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4uZW5kKCk7Ci0g
IAotICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBpbiB0aGUgc2NvcGUgY2hhaW4K
LSAgYXNzZXJ0KGl0ZXIgIT0gZW5kKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4
cHIpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgYXJncyk7Cit9CiAKLSAgUHJvcGVy
dHlTbG90IHNsb3Q7Ci0gIEpTT2JqZWN0ICpiYXNlOwotICBkbyB7IAotICAgIGJhc2UgPSAqaXRl
cjsKLSAgICBpZiAoYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgewot
ICAgICAgSlNWYWx1ZSAqdiA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwgaWRlbnQpOwotICAg
ICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgICAgICAgCi0gICAgICBpZiAoIXYtPmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCAiVmFs
dWUgJXMgKHJlc3VsdCBvZiBleHByZXNzaW9uICVzKSBpcyBub3Qgb2JqZWN0LiIsIHYsIGlkZW50
KTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgSlNPYmplY3QgKmZ1bmMgPSBzdGF0aWNfY2FzdDxK
U09iamVjdCo+KHYpOwotICAgICAgCi0gICAgICBpZiAoIWZ1bmMtPmltcGxlbWVudHNDYWxsKCkp
IHsKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCAiT2JqZWN0ICVz
IChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgZG9lcyBub3QgYWxsb3cgY2FsbHMuIiwgdiwgaWRl
bnQpOwotICAgICAgfQotICAgICAgCi0gICAgICBMaXN0IGFyZ0xpc3QgPSBhcmdzLT5ldmFsdWF0
ZUxpc3QoZXhlYyk7Ci0gICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotICAgICAgICAKLSAg
ICAgIEpTT2JqZWN0ICp0aGlzT2JqID0gYmFzZTsKLSAgICAgIC8vIEVDTUEgMTEuMi4zIHNheXMg
dGhhdCBpbiB0aGlzIHNpdHVhdGlvbiB0aGUgdGhpcyB2YWx1ZSBzaG91bGQgYmUgbnVsbC4KLSAg
ICAgIC8vIEhvd2V2ZXIsIHNlY3Rpb24gMTAuMi4zIHNheXMgdGhhdCBpbiB0aGUgY2FzZSB3aGVy
ZSB0aGUgdmFsdWUgcHJvdmlkZWQKLSAgICAgIC8vIGJ5IHRoZSBjYWxsZXIgaXMgbnVsbCwgdGhl
IGdsb2JhbCBvYmplY3Qgc2hvdWxkIGJlIHVzZWQuIEl0IGFsc28gc2F5cwotICAgICAgLy8gdGhh
dCB0aGUgc2VjdGlvbiBkb2VzIG5vdCBhcHBseSB0byBpbnRlcmFsIGZ1bmN0aW9ucywgYnV0IGZv
ciBzaW1wbGljaXR5Ci0gICAgICAvLyBvZiBpbXBsZW1lbnRhdGlvbiB3ZSB1c2UgdGhlIGdsb2Jh
bCBvYmplY3QgYW55d2F5IGhlcmUuIFRoaXMgZ3VhcmFudGVlcwotICAgICAgLy8gdGhhdCBpbiBo
b3N0IG9iamVjdHMgeW91IGFsd2F5cyBnZXQgYSB2YWxpZCBvYmplY3QgZm9yIHRoaXMuCi0gICAg
ICBpZiAodGhpc09iai0+aXNBY3RpdmF0aW9uKCkpCi0gICAgICAgIHRoaXNPYmogPSBleGVjLT5k
eW5hbWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCk7CitKU1ZhbHVlICpGdW5jdGlvbkNh
bGxSZWZlcmVuY2VOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCit7CisgIC8vRXZhbHVh
dGUgdGhlIGxvY2F0aW9uCisgIFJlZmVyZW5jZSByZWYgPSBleHByLT5ldmFsdWF0ZVJlZmVyZW5j
ZShleGVjKTsKIAotICAgICAgcmV0dXJuIGZ1bmMtPmNhbGwoZXhlYywgdGhpc09iaiwgYXJnTGlz
dCk7Ci0gICAgfQotICAgICsraXRlcjsKLSAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOwotICAKLSAg
cmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgIC8vaGFu
ZGxlIGVycm9yLi4KKyAgaWYgKCFyZWYuZm91bmQpCisgICAgcmV0dXJuIHRocm93VW5kZWZpbmVk
VmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRlbnQpOworCisgIEtKU19DSEVDS0VYQ0VQVElPTlZB
TFVFCisKKyAgSlNWYWx1ZSAqdiA9IHJlZi5yZWFkKGV4ZWMpOworICBLSlNfQ0hFQ0tFWENFUFRJ
T05WQUxVRQorCisgIGlmICghdi0+aXNPYmplY3QoKSkgeworICAgIHJldHVybiB0aHJvd0Vycm9y
KGV4ZWMsIFR5cGVFcnJvciwgbm90QW5PYmplY3RNZXNzYWdlKCksIHYsIGV4cHIuZ2V0KCkpOwor
ICB9CisKKyAgSlNPYmplY3QgKmZ1bmMgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHYpOworCisg
IGlmICghZnVuYy0+aW1wbGVtZW50c0NhbGwoKSkgeworICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIFR5cGVFcnJvciwgbm90Q2FsbGFibGVNZXNzYWdlKCksIHYsIGV4cHIuZ2V0KCkpOworICB9
CisKKyAgTGlzdCBhcmdMaXN0ID0gYXJncy0+ZXZhbHVhdGVMaXN0KGV4ZWMpOworICBLSlNfQ0hF
Q0tFWENFUFRJT05WQUxVRQorCisgIC8vIEVDTUEgMTEuMi4zIHNheXMgdGhhdCBpbiB0aGlzIHNp
dHVhdGlvbiB0aGUgdGhpcyB2YWx1ZSBzaG91bGQgYmUgbnVsbC4KKyAgLy8gSG93ZXZlciwgc2Vj
dGlvbiAxMC4yLjMgc2F5cyB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZSB2YWx1ZSBwcm92aWRl
ZAorICAvLyBieSB0aGUgY2FsbGVyIGlzIG51bGwsIHRoZSBnbG9iYWwgb2JqZWN0IHNob3VsZCBi
ZSB1c2VkLiBJdCBhbHNvIHNheXMKKyAgLy8gdGhhdCB0aGUgc2VjdGlvbiBkb2VzIG5vdCBhcHBs
eSB0byBpbnRlcmFsIGZ1bmN0aW9ucywgYnV0IGZvciBzaW1wbGljaXR5CisgIC8vIG9mIGltcGxl
bWVudGF0aW9uIHdlIHVzZSB0aGUgZ2xvYmFsIG9iamVjdCBhbnl3YXkgaGVyZS4gVGhpcyBndWFy
YW50ZWVzCisgIC8vIHRoYXQgaW4gaG9zdCBvYmplY3RzIHlvdSBhbHdheXMgZ2V0IGEgdmFsaWQg
b2JqZWN0IGZvciB0aGlzLgorCisgIEpTT2JqZWN0ICp0aGlzT2JqID0gcmVmLmJhc2U7CisgIGlm
ICh0aGlzT2JqLT5pc0FjdGl2YXRpb24oKSkKKyAgICB0aGlzT2JqID0gZXhlYy0+ZHluYW1pY0lu
dGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpOworCisgIHJldHVybiBmdW5jLT5jYWxsKGV4ZWMs
IHRoaXNPYmosIGFyZ0xpc3QpOworfQorCit2b2lkIEZ1bmN0aW9uQ2FsbFJlZmVyZW5jZU5vZGU6
OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGV4cHIpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgYXJncyk7
CiB9CiAKIC8vIEVDTUEgMTEuMi4zCkBAIC03NDksNiArMTA5MiwxMyBAQCBKU1ZhbHVlICpGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZTo6ZXZhbHVhCiAgIHJldHVybiBmdW5jLT5jYWxsKGV4ZWMsIHRo
aXNPYmosIGFyZ0xpc3QpOwogfQogCit2b2lkIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpyZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBiYXNlKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHN1YnNjcmlwdCk7
CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBhcmdzKTsKK30KKwogc3RhdGljIGNvbnN0
IGNoYXIgKmRvdEV4cHJOb3RBbk9iamVjdFN0cmluZygpIEtKU19GQVNUX0NBTEw7CiBzdGF0aWMg
Y29uc3QgY2hhciAqZG90RXhwck5vdEFuT2JqZWN0U3RyaW5nKCkKIHsKQEAgLTc5MSwxNjIgKzEx
NDEsOTUgQEAgSlNWYWx1ZSAqRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZXZhbHVhdGUoRQogICByZXR1
cm4gZnVuYy0+Y2FsbChleGVjLCB0aGlzT2JqLCBhcmdMaXN0KTsKIH0KIAotLy8gRUNNQSAxMS4z
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQb3N0Zml4UmVzb2x2ZU5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlICpQb3N0Zml4UmVz
b2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgRnVuY3Rpb25DYWxsRG90
Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBjb25zdCBTY29w
ZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOwotICBTY29wZUNo
YWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBl
bmQgPSBjaGFpbi5lbmQoKTsKLSAgCi0gIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5n
IGluIHRoZSBzY29wZSBjaGFpbgotICBhc3NlcnQoaXRlciAhPSBlbmQpOwotCi0gIFByb3BlcnR5
U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7
Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50LCBzbG90KSkgewot
ICAgICAgICBKU1ZhbHVlICp2ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KTsK
LQotICAgICAgICBkb3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICAKLSAgICAg
ICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAxIDogbiAt
IDE7Ci0gICAgICAgIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCBqc051bWJlcihuZXdWYWx1ZSkp
OwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKG4pOwotICAgIH0KLQotICAgICsr
aXRlcjsKLSAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOwotCi0gIHJldHVybiB0aHJvd1VuZGVmaW5l
ZFZhcmlhYmxlRXJyb3IoZXhlYywgbV9pZGVudCk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBiYXNlKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFyZ3MpOwogfQogCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeEJyYWNrZXROb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1ZSAqUG9zdGZpeEJyYWNrZXRO
b2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIEpTVmFsdWUgKmJhc2VWYWx1ZSA9
IG1fYmFzZS0+ZXZhbHVhdGUoZXhlYyk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0gIEpT
VmFsdWUgKnN1YnNjcmlwdCA9IG1fc3Vic2NyaXB0LT5ldmFsdWF0ZShleGVjKTsKLSAgS0pTX0NI
RUNLRVhDRVBUSU9OVkFMVUUKKy8vIEVDTUEgMTEuMwogCi0gIEpTT2JqZWN0ICpiYXNlID0gYmFz
ZVZhbHVlLT50b09iamVjdChleGVjKTsKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBQb3N0Zml4Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgdWlu
dDMyX3QgcHJvcGVydHlJbmRleDsKLSAgaWYgKHN1YnNjcmlwdC0+Z2V0VUludDMyKHByb3BlcnR5
SW5kZXgpKSB7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgSlNWYWx1ZSAqdiA9IGJhc2Ut
PmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eUluZGV4LCBzbG90KSA/IHNsb3QuZ2V0VmFs
dWUoZXhlYywgYmFzZSwgcHJvcGVydHlJbmRleCkgOiBqc1VuZGVmaW5lZCgpOwotICAgIEtKU19D
SEVDS0VYQ0VQVElPTlZBTFVFCitjbGFzcyBMb2NhbFBvc3RmaXhOb2RlIDogcHVibGljIFBvc3Rm
aXhOb2RlCit7CitwdWJsaWM6CisgIExvY2FsUG9zdGZpeE5vZGUoTG9jYXRpb25Ob2RlICpsLCBP
cGVyYXRvciBvLCBpbnQgaWR4KSAgS0pTX0ZBU1RfQ0FMTCA6IFBvc3RmaXhOb2RlKGwsIG8pLCBp
bmRleChpZHgpIHt9CiAKKyAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKSAgS0pT
X0ZBU1RfQ0FMTCB7CisgICAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3Rp
dmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworICAgIEpT
VmFsdWUqIHYgPSAqc2NvcGUtPmdldExvY2FsRGlyZWN0KGluZGV4KTsKICAgICBkb3VibGUgbiA9
IHYtPnRvTnVtYmVyKGV4ZWMpOwotCiAgICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBP
cFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7Ci0gICAgYmFzZS0+cHV0KGV4ZWMsIHByb3BlcnR5
SW5kZXgsIGpzTnVtYmVyKG5ld1ZhbHVlKSk7Ci0gICAgICAgIAorICAgIHNjb3BlLT5wdXRMb2Nh
bENoZWNrZWQoaW5kZXgsIGpzTnVtYmVyKG5ld1ZhbHVlKSk7CiAgICAgcmV0dXJuIGpzTnVtYmVy
KG4pOwogICB9Citwcml2YXRlOgorICBpbnQgaW5kZXg7Cit9OwogCi0gIElkZW50aWZpZXIgcHJv
cGVydHlOYW1lKHN1YnNjcmlwdC0+dG9TdHJpbmcoZXhlYykpOwotICBQcm9wZXJ0eVNsb3Qgc2xv
dDsKLSAgSlNWYWx1ZSAqdiA9IGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBwcm9wZXJ0eU5hbWUpIDoganNV
bmRlZmluZWQoKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLQotICBkb3VibGUgbiA9IHYt
PnRvTnVtYmVyKGV4ZWMpOwotICAKLSAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBs
dXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7Ci0gIGJhc2UtPnB1dChleGVjLCBwcm9wZXJ0eU5hbWUs
IGpzTnVtYmVyKG5ld1ZhbHVlKSk7Ci0gICAgICAgIAotICByZXR1cm4ganNOdW1iZXIobik7Ci19
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQb3N0Zml4RG90Tm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlBvc3RmaXhEb3ROb2Rl
OjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCitKU1ZhbHVlKiBQb3N0Zml4Tm9kZTo6ZXZhbHVh
dGUoRXhlY1N0YXRlKiBleGVjKQogewotICBKU1ZhbHVlICpiYXNlVmFsdWUgPSBtX2Jhc2UtPmV2
YWx1YXRlKGV4ZWMpOwotICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotICBKU09iamVjdCAqYmFz
ZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7CisgIC8vRXZhbHVhdGUgdGhlIGxvY2F0aW9u
CisgIFJlZmVyZW5jZSByZWYgPSBtX2xvYy0+ZXZhbHVhdGVSZWZlcmVuY2UoZXhlYyk7CisKKyAg
Ly9oYW5kbGUgZXJyb3IuLgorICBpZiAoIXJlZi5mb3VuZCkKKyAgICByZXR1cm4gdGhyb3dVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIHJlZi5pZGVudCk7CiAKLSAgUHJvcGVydHlTbG90IHNs
b3Q7Ci0gIEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgbV9pZGVudCwg
c2xvdCkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIG1faWRlbnQpIDoganNVbmRlZmluZWQo
KTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAorICAvL2RvIHRoZSBvcAorICBKU1ZhbHVl
ICp2ID0gcmVmLnJlYWQoZXhlYyk7CiAgIGRvdWJsZSBuID0gdi0+dG9OdW1iZXIoZXhlYyk7Ci0g
IAogICBkb3VibGUgbmV3VmFsdWUgPSAobV9vcGVyID09IE9wUGx1c1BsdXMpID8gbiArIDEgOiBu
IC0gMTsKLSAgYmFzZS0+cHV0KGV4ZWMsIG1faWRlbnQsIGpzTnVtYmVyKG5ld1ZhbHVlKSk7Ci0g
ICAgICAgIAorICByZWYud3JpdGUoZXhlYywganNOdW1iZXIobmV3VmFsdWUpKTsKICAgcmV0dXJu
IGpzTnVtYmVyKG4pOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9z
dGZpeEVycm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1Zh
bHVlKiBQb3N0Zml4RXJyb3JOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit2b2lkIFBv
c3RmaXhOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gICAgdGhy
b3dFcnJvcihleGVjLCBSZWZlcmVuY2VFcnJvciwgIlBvc3RmaXggJXMgb3BlcmF0b3IgYXBwbGll
ZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iLAotICAgICAgICBtX29wZXIgPT0g
T3BQbHVzUGx1cyA/ICIrKyIgOiAiLS0iKTsKLSAgICBoYW5kbGVFeGNlcHRpb24oZXhlYyk7Ci0g
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICBOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIG1fbG9jKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0
ZVJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIEVD
TUEgMTEuNC4xCi0KLUpTVmFsdWUgKkRlbGV0ZVJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUgKmV4ZWMpCitOb2RlKiBQb3N0Zml4Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2VzcyhFeGVjU3Rh
dGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpCiB7Ci0gIGNvbnN0IFNjb3BlQ2hhaW4m
IGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Ci0gIFNjb3BlQ2hhaW5JdGVy
YXRvciBpdGVyID0gY2hhaW4uYmVnaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNo
YWluLmVuZCgpOwotICAKLSAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhl
IHNjb3BlIGNoYWluCi0gIGFzc2VydChpdGVyICE9IGVuZCk7Ci0KLSAgUHJvcGVydHlTbG90IHNs
b3Q7Ci0gIEpTT2JqZWN0ICpiYXNlOwotICBkbyB7IAotICAgIGJhc2UgPSAqaXRlcjsKLSAgICBp
ZiAoYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQsIHNsb3QpKSB7Ci0gICAgICAg
IHJldHVybiBqc0Jvb2xlYW4oYmFzZS0+ZGVsZXRlUHJvcGVydHkoZXhlYywgbV9pZGVudCkpOwot
ICAgIH0KLQotICAgICsraXRlcjsKLSAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOwotCi0gIHJldHVy
biBqc0Jvb2xlYW4odHJ1ZSk7CisgIGlmIChtX2xvYy0+aXNWYXJBY2Nlc3NOb2RlKCkpIHsKKyAg
ICBWYXJBY2Nlc3NOb2RlKiBpZGVudCA9IHN0YXRpY19jYXN0PFZhckFjY2Vzc05vZGUqPihtX2xv
Yy5nZXQoKSk7CisgICAgaW50IGlkID0gaWRlbnQtPmxvY2FsSUQobm9kZSk7CisgICAgaWYgKGlk
ICE9IC0xKQorICAgICAgcmV0dXJuIG5ldyBMb2NhbFBvc3RmaXhOb2RlKG1fbG9jLmdldCgpLCBt
X29wZXIsIGlkKTsKKyAgfQorICByZXR1cm4gMDsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIERlbGV0ZUJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCitKU1ZhbHVlKiBQb3N0Zml4RXJyb3JOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMpIAoreyAKKyAgICB0aHJvd0Vycm9yKGV4ZWMsIFJlZmVyZW5jZUVycm9yLCAiUG9zdGZp
eCAlcyBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiIs
IAorCSAgICAgICBtX29wZXIgPT0gT3BQbHVzUGx1cyA/ICIrKyIgOiAiLS0iKTsgCisgICAgaGFu
ZGxlRXhjZXB0aW9uKGV4ZWMpOyAKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsgCit9IAorCisv
LyBFQ01BIDExLjQuMQogCi1KU1ZhbHVlICpEZWxldGVCcmFja2V0Tm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlICpleGVjKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0ZVJl
ZmVyZW5jZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSlNWYWx1ZSogRGVs
ZXRlUmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogewotICBKU1ZhbHVl
ICpiYXNlVmFsdWUgPSBtX2Jhc2UtPmV2YWx1YXRlKGV4ZWMpOwotICBLSlNfQ0hFQ0tFWENFUFRJ
T05WQUxVRQotICBKU1ZhbHVlICpzdWJzY3JpcHQgPSBtX3N1YnNjcmlwdC0+ZXZhbHVhdGUoZXhl
Yyk7CisgIC8vRXZhbHVhdGUgdGhlIGxvY2F0aW9uCisgIFJlZmVyZW5jZSByZWYgPSBsb2MtPmV2
YWx1YXRlUmVmZXJlbmNlKGV4ZWMpOwogICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogCi0gIEpT
T2JqZWN0ICpiYXNlID0gYmFzZVZhbHVlLT50b09iamVjdChleGVjKTsKLQotICB1aW50MzJfdCBw
cm9wZXJ0eUluZGV4OwotICBpZiAoc3Vic2NyaXB0LT5nZXRVSW50MzIocHJvcGVydHlJbmRleCkp
Ci0gICAgICByZXR1cm4ganNCb29sZWFuKGJhc2UtPmRlbGV0ZVByb3BlcnR5KGV4ZWMsIHByb3Bl
cnR5SW5kZXgpKTsKLQotICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZShzdWJzY3JpcHQtPnRvU3Ry
aW5nKGV4ZWMpKTsKLSAgcmV0dXJuIGpzQm9vbGVhbihiYXNlLT5kZWxldGVQcm9wZXJ0eShleGVj
LCBwcm9wZXJ0eU5hbWUpKTsKKyAgLy9oYW5kbGUgZXJyb3IuLgorICBpZiAoIXJlZi5mb3VuZCkK
KyAgICByZXR1cm4ganNCb29sZWFuKHRydWUpOworICBlbHNlCisgICAgcmV0dXJuIGpzQm9vbGVh
bihyZWYuZGVsZXRlUHJvcGVydHkoZXhlYykpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRGVsZXRlRG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotSlNWYWx1ZSAqRGVsZXRlRG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQor
dm9pZCBEZWxldGVSZWZlcmVuY2VOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpCiB7Ci0gIEpTVmFsdWUgKmJhc2VWYWx1ZSA9IG1fYmFzZS0+ZXZhbHVhdGUoZXhlYyk7Ci0g
IEpTT2JqZWN0ICpiYXNlID0gYmFzZVZhbHVlLT50b09iamVjdChleGVjKTsKLSAgS0pTX0NIRUNL
RVhDRVBUSU9OVkFMVUUKLQotICByZXR1cm4ganNCb29sZWFuKGJhc2UtPmRlbGV0ZVByb3BlcnR5
KGV4ZWMsIG1faWRlbnQpKTsKKyAgIE5vZGU6OnJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbG9j
KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0ZVZhbHVlTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTU5LDYgKzEyNDIsMTEg
QEAgSlNWYWx1ZSAqRGVsZXRlVmFsdWVOb2RlOjpldmFsdWF0ZShFeGVjUwogICByZXR1cm4ganNC
b29sZWFuKHRydWUpOwogfQogCit2b2lkIERlbGV0ZVZhbHVlTm9kZTo6cmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fZXhw
cik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWb2lkTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuNC4yCkBAIC05
NzAsMTEgKzEyNTgsMTUgQEAgSlNWYWx1ZSAqVm9pZE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAq
ZQogICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAordm9pZCBWb2lkTm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IGV4cHIpOworfQorCiAvLyBFQ01BIDExLjQuMwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gVHlwZU9mVmFsdWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKLXN0YXRpYyBKU1ZhbHVlICp0eXBlU3RyaW5nRm9yVmFsdWUoSlNWYWx1ZSAqdikgS0pT
X0ZBU1RfQ0FMTDsKIHN0YXRpYyBKU1ZhbHVlICp0eXBlU3RyaW5nRm9yVmFsdWUoSlNWYWx1ZSAq
dikKIHsKICAgICBzd2l0Y2ggKHYtPnR5cGUoKSkgewpAQCAtMTAwMiwxNDQgKzEyOTQsMTAxIEBA
IHN0YXRpYyBKU1ZhbHVlICp0eXBlU3RyaW5nRm9yVmFsdWUoSlNWYWwKICAgICB9CiB9CiAKLUpT
VmFsdWUgKlR5cGVPZlJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCitKU1Zh
bHVlKiBUeXBlT2ZSZWZlcmVuY2VOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0g
IGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7
Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVnaW4oKTsKLSAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAKLSAgLy8gd2UgbXVzdCBhbHdheXMgaGF2
ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCi0gIGFzc2VydChpdGVyICE9IGVuZCk7Ci0K
LSAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gIEpTT2JqZWN0ICpiYXNlOwotICBkbyB7IAotICAgIGJh
c2UgPSAqaXRlcjsKLSAgICBpZiAoYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQs
IHNsb3QpKSB7Ci0gICAgICAgIEpTVmFsdWUgKnYgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2Us
IG1faWRlbnQpOwotICAgICAgICByZXR1cm4gdHlwZVN0cmluZ0ZvclZhbHVlKHYpOwotICAgIH0K
LQotICAgICsraXRlcjsKLSAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOwotCi0gIHJldHVybiBqc1N0
cmluZygidW5kZWZpbmVkIik7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBUeXBlT2ZWYWx1ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
SlNWYWx1ZSAqVHlwZU9mVmFsdWVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCi17Ci0g
IEpTVmFsdWUgKnYgPSBtX2V4cHItPmV2YWx1YXRlKGV4ZWMpOworICAvL0V2YWx1YXRlIHRoZSBs
b2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gbG9jLT5ldmFsdWF0ZVJlZmVyZW5jZShleGVjKTsK
ICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAotICByZXR1cm4gdHlwZVN0cmluZ0ZvclZhbHVl
KHYpOwotfQotCi0vLyBFQ01BIDExLjQuNCBhbmQgMTEuNC41Ci0KLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBQcmVmaXhSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlByZWZpeFJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVj
U3RhdGUgKmV4ZWMpCi17Ci0gIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4
dCgpLT5zY29wZUNoYWluKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVn
aW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAKLSAgLy8g
d2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCi0gIGFzc2Vy
dChpdGVyICE9IGVuZCk7Ci0KLSAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gIEpTT2JqZWN0ICpiYXNl
OwotICBkbyB7IAotICAgIGJhc2UgPSAqaXRlcjsKLSAgICBpZiAoYmFzZS0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIG1faWRlbnQsIHNsb3QpKSB7Ci0gICAgICAgIEpTVmFsdWUgKnYgPSBzbG90Lmdl
dFZhbHVlKGV4ZWMsIGJhc2UsIG1faWRlbnQpOwotCi0gICAgICAgIGRvdWJsZSBuID0gdi0+dG9O
dW1iZXIoZXhlYyk7Ci0gICAgICAgIAotICAgICAgICBkb3VibGUgbmV3VmFsdWUgPSAobV9vcGVy
ID09IE9wUGx1c1BsdXMpID8gbiArIDEgOiBuIC0gMTsKLSAgICAgICAgSlNWYWx1ZSAqbjIgPSBq
c051bWJlcihuZXdWYWx1ZSk7Ci0gICAgICAgIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCBuMik7
Ci0KLSAgICAgICAgcmV0dXJuIG4yOwotICAgIH0KLQotICAgICsraXRlcjsKLSAgfSB3aGlsZSAo
aXRlciAhPSBlbmQpOworICAvL2hhbmRsZSBlcnJvci4uCisgIGlmICghcmVmLmZvdW5kKQorICAg
IHJldHVybiBqc1N0cmluZygidW5kZWZpbmVkIik7CisgIGVsc2UKKyAgICByZXR1cm4gdHlwZVN0
cmluZ0ZvclZhbHVlKHJlZi5yZWFkKGV4ZWMpKTsKK30KIAotICByZXR1cm4gdGhyb3dVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKGV4ZWMsIG1faWRlbnQpOwordm9pZCBUeXBlT2ZSZWZlcmVuY2VOb2Rl
OjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICBOb2RlOjpyZWN1cnNl
VmlzaXRMaW5rKHZpc2l0b3IsIGxvYyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBQcmVmaXhCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHlwZU9mVmFsdWVOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUpTVmFsdWUgKlByZWZpeEJyYWNr
ZXROb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCitKU1ZhbHVlICpUeXBlT2ZWYWx1ZU5v
ZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFzZVZhbHVlID0g
bV9iYXNlLT5ldmFsdWF0ZShleGVjKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgSlNW
YWx1ZSAqc3Vic2NyaXB0ID0gbV9zdWJzY3JpcHQtPmV2YWx1YXRlKGV4ZWMpOworICBKU1ZhbHVl
ICp2ID0gbV9leHByLT5ldmFsdWF0ZShleGVjKTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUK
IAotICBKU09iamVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7CisgIHJldHVy
biB0eXBlU3RyaW5nRm9yVmFsdWUodik7Cit9CiAKLSAgdWludDMyX3QgcHJvcGVydHlJbmRleDsK
LSAgaWYgKHN1YnNjcmlwdC0+Z2V0VUludDMyKHByb3BlcnR5SW5kZXgpKSB7Ci0gICAgUHJvcGVy
dHlTbG90IHNsb3Q7Ci0gICAgSlNWYWx1ZSAqdiA9IGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVj
LCBwcm9wZXJ0eUluZGV4LCBzbG90KSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwgcHJvcGVy
dHlJbmRleCkgOiBqc1VuZGVmaW5lZCgpOwotICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCit2
b2lkIFR5cGVPZlZhbHVlTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQor
eworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fZXhwcik7Cit9CiAKLSAgICBkb3VibGUg
biA9IHYtPnRvTnVtYmVyKGV4ZWMpOworLy8gRUNNQSAxMS40LjQgYW5kIDExLjQuNQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJlZml4Tm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK2NsYXNzIExvY2FsUHJlZml4Tm9kZSA6IHB1Ymxp
YyBQcmVmaXhOb2RlCit7CitwdWJsaWM6CisgIExvY2FsUHJlZml4Tm9kZShMb2NhdGlvbk5vZGUg
KmwsIE9wZXJhdG9yIG8sIGludCBpZHgpIEtKU19GQVNUX0NBTEwgOiBQcmVmaXhOb2RlKGwsIG8p
LCBpbmRleChpZHgpIHt9CisKKyAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKSBL
SlNfRkFTVF9DQUxMIHsKKyAgICBBY3RpdmF0aW9uSW1wKiBzY29wZSA9IHN0YXRpY19jYXN0PEFj
dGl2YXRpb25JbXAqPihleGVjLT5jb250ZXh0KCktPmFjdGl2YXRpb25PYmplY3QoKSk7CisgICAg
SlNWYWx1ZSogdiA9ICpzY29wZS0+Z2V0TG9jYWxEaXJlY3QoaW5kZXgpOworICAgIGRvdWJsZSBu
ID0gdi0+dG9OdW1iZXIoZXhlYyk7CiAgICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBP
cFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7CiAgICAgSlNWYWx1ZSAqbjIgPSBqc051bWJlcihu
ZXdWYWx1ZSk7Ci0gICAgYmFzZS0+cHV0KGV4ZWMsIHByb3BlcnR5SW5kZXgsIG4yKTsKLQorICAg
IHNjb3BlLT5wdXRMb2NhbENoZWNrZWQoaW5kZXgsIG4yKTsKICAgICByZXR1cm4gbjI7CiAgIH0K
K3ByaXZhdGU6CisgIGludCBpbmRleDsKK307CiAKLSAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUo
c3Vic2NyaXB0LT50b1N0cmluZyhleGVjKSk7Ci0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU1Zh
bHVlICp2ID0gYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkg
PyBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIHByb3BlcnR5TmFtZSkgOiBqc1VuZGVmaW5lZCgp
OwotICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotCi0gIGRvdWJsZSBuID0gdi0+dG9OdW1iZXIo
ZXhlYyk7Ci0gIAotICBkb3VibGUgbmV3VmFsdWUgPSAobV9vcGVyID09IE9wUGx1c1BsdXMpID8g
biArIDEgOiBuIC0gMTsKLSAgSlNWYWx1ZSAqbjIgPSBqc051bWJlcihuZXdWYWx1ZSk7Ci0gIGJh
c2UtPnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIG4yKTsKLQotICByZXR1cm4gbjI7Ci19Ci0KLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcmVmaXhEb3ROb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1ZSAqUHJlZml4RG90Tm9kZTo6ZXZhbHVh
dGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSogUHJlZml4Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjKQogewotICBKU1ZhbHVlICpiYXNlVmFsdWUgPSBtX2Jhc2UtPmV2YWx1YXRlKGV4
ZWMpOworICAvL0V2YWx1YXRlIHRoZSBsb2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gbV9sb2Mt
PmV2YWx1YXRlUmVmZXJlbmNlKGV4ZWMpOwogICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotICBK
U09iamVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7CiAKLSAgUHJvcGVydHlT
bG90IHNsb3Q7Ci0gIEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgbV9p
ZGVudCwgc2xvdCkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIG1faWRlbnQpIDoganNVbmRl
ZmluZWQoKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKyAgLy9oYW5kbGUgZXJyb3IuLgor
ICBpZiAoIXJlZi5mb3VuZCkKKyAgICByZXR1cm4gdGhyb3dVbmRlZmluZWRWYXJpYWJsZUVycm9y
KGV4ZWMsIHJlZi5pZGVudCk7CiAKKyAgSlNWYWx1ZSAqdiA9IHJlZi5yZWFkKGV4ZWMpOwogICBk
b3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMpOwotICAKICAgZG91YmxlIG5ld1ZhbHVlID0gKG1f
b3BlciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7CiAgIEpTVmFsdWUgKm4yID0ganNO
dW1iZXIobmV3VmFsdWUpOwotICBiYXNlLT5wdXQoZXhlYywgbV9pZGVudCwgbjIpOwotCisgIHJl
Zi53cml0ZShleGVjLCBuMik7CiAgIHJldHVybiBuMjsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFByZWZpeEVycm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQordm9pZCBQcmVmaXhOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpCit7CisgICBOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fbG9jKTsKK30K
IAotSlNWYWx1ZSogUHJlZml4RXJyb3JOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitO
b2RlKiBQcmVmaXhOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNzKEV4ZWNTdGF0ZSAqZXhlYywgRnVu
Y3Rpb25Cb2R5Tm9kZSogbm9kZSkKIHsKLSAgICB0aHJvd0Vycm9yKGV4ZWMsIFJlZmVyZW5jZUVy
cm9yLCAiUHJlZml4ICVzIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSBy
ZWZlcmVuY2UuIiwKLSAgICAgICAgbV9vcGVyID09IE9wUGx1c1BsdXMgPyAiKysiIDogIi0tIik7
CisgIGlmIChtX2xvYy0+aXNWYXJBY2Nlc3NOb2RlKCkpIHsKKyAgICBWYXJBY2Nlc3NOb2RlKiBp
ZGVudCA9IHN0YXRpY19jYXN0PFZhckFjY2Vzc05vZGUqPihtX2xvYy5nZXQoKSk7CisgICAgaW50
IGlkID0gaWRlbnQtPmxvY2FsSUQobm9kZSk7CisgICAgaWYgKGlkICE9IC0xKQorICAgICAgcmV0
dXJuIG5ldyBMb2NhbFByZWZpeE5vZGUobV9sb2MuZ2V0KCksIG1fb3BlciwgaWQpOworICB9Cisg
IHJldHVybiAwOworfQorCitKU1ZhbHVlKiBQcmVmaXhFcnJvck5vZGU6OmV2YWx1YXRlKEV4ZWNT
dGF0ZSogZXhlYykgCit7IAorICAgIHRocm93RXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJQ
cmVmaXggJXMgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iLCAKKyAgICAgICAgbV9vcGVyID09IE9wUGx1c1BsdXMgPyAiKysiIDogIi0tIik7IAogICAg
IGhhbmRsZUV4Y2VwdGlvbihleGVjKTsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsgCiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBVbmFyeVBsdXNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x
MTUzLDYgKzE0MDIsMTEgQEAgSlNWYWx1ZSAqVW5hcnlQbHVzTm9kZTo6ZXZhbHVhdGUoRXhlY1N0
YQogICByZXR1cm4ganNOdW1iZXIodi0+dG9OdW1iZXIoZXhlYykpOwogfQogCit2b2lkIFVuYXJ5
UGx1c05vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIE5lZ2F0ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogLy8gRUNNQSAxMS40LjcKQEAgLTExNjUsNiArMTQxOSwxMSBAQCBKU1ZhbHVlICpOZWdhdGVO
b2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgCiAgIHJldHVybiBqc051bWJlcigtbik7CiB9CiAKK3Zv
aWQgTmVnYXRlTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQml0d2lzZU5vdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiAvLyBFQ01BIDExLjQuOApAQCAtMTE3NSw2ICsxNDM0LDExIEBAIEpTVmFsdWUgKkJp
dHdpc2VOb3ROb2RlOjpldmFsdWF0ZShFeGVjU3QKICAgcmV0dXJuIGpzTnVtYmVyKH52LT50b0lu
dDMyKGV4ZWMpKTsKIH0KIAordm9pZCBCaXR3aXNlTm90Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOwor
fQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9naWNhbE5vdE5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjQuOQpAQCAtMTE4NSw2
ICsxNDQ5LDExIEBAIEpTVmFsdWUgKkxvZ2ljYWxOb3ROb2RlOjpldmFsdWF0ZShFeGVjU3QKICAg
cmV0dXJuIGpzQm9vbGVhbighdi0+dG9Cb29sZWFuKGV4ZWMpKTsKIH0KIAordm9pZCBMb2dpY2Fs
Tm90Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNl
VmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gTXVsdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAvLyBFQ01BIDExLjUKQEAgLTExOTksNiArMTQ2OCwxMiBAQCBKU1ZhbHVlICpNdWx0Tm9kZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlICplCiAgIHJldHVybiBtdWx0KGV4ZWMsIHYxLCB2Miwgb3Blcik7
CiB9CiAKK3ZvaWQgTXVsdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikK
K3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCB0ZXJtMSk7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgdGVybTIpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gQWRkTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBF
Q01BIDExLjYKQEAgLTEyMTMsNiArMTQ4OCwxMiBAQCBKU1ZhbHVlICpBZGROb2RlOjpldmFsdWF0
ZShFeGVjU3RhdGUgKmV4CiAgIHJldHVybiBhZGQoZXhlYywgdjEsIHYyLCBvcGVyKTsKIH0KIAor
dm9pZCBBZGROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdGVybTEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIHRlcm0yKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNoaWZ0
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS43
CkBAIC0xMjM4LDYgKzE1MTksMTIgQEAgSlNWYWx1ZSAqU2hpZnROb2RlOjpldmFsdWF0ZShFeGVj
U3RhdGUgKgogICB9CiB9CiAKK3ZvaWQgU2hpZnROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdGVybTEpOworICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRlcm0yKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFJlbGF0aW9uYWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLy8gRUNNQSAxMS44CkBAIC0xMjg2LDYgKzE1NzMsMTIgQEAgSlNWYWx1ZSAqUmVs
YXRpb25hbE5vZGU6OmV2YWx1YXRlKEV4ZWNTdAogICByZXR1cm4ganNCb29sZWFuKGIpOwogfQog
Cit2b2lkIFJlbGF0aW9uYWxOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
Cit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEVxdWFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8g
RUNNQSAxMS45CkBAIC0xMzA5LDYgKzE2MDIsMTIgQEAgSlNWYWx1ZSAqRXF1YWxOb2RlOjpldmFs
dWF0ZShFeGVjU3RhdGUgKgogICByZXR1cm4ganNCb29sZWFuKHJlc3VsdCk7CiB9CiAKK3ZvaWQg
RXF1YWxOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vy
c2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpdE9wZXJO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xMApA
QCAtMTMzMSw2ICsxNjMwLDEyIEBAIEpTVmFsdWUgKkJpdE9wZXJOb2RlOjpldmFsdWF0ZShFeGVj
U3RhdGUKICAgcmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CiB9CiAKK3ZvaWQgQml0T3Blck5vZGU6
OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBleHByMSk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjIpOwor
fQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmluYXJ5TG9naWNhbE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjExCkBAIC0xMzQ4LDYg
KzE2NTMsMTIgQEAgSlNWYWx1ZSAqQmluYXJ5TG9naWNhbE5vZGU6OmV2YWx1YXRlKEV4ZQogICBy
ZXR1cm4gdjI7CiB9CiAKK3ZvaWQgQmluYXJ5TG9naWNhbE5vZGU6OnJlY3Vyc2VWaXNpdChOb2Rl
VmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByMSk7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjIpOworfQorCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29uZGl0aW9uYWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjEyCkBAIC0xNDMyLDM3ICsxNzQzLDQ5IEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgKnZhbHVlRm9yUmUKICAgcmV0dXJuIHY7CiB9CiAKLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25SZXNvbHZlTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlICpBc3NpZ25SZXNvbHZlTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQordm9pZCBDb25kaXRpb25hbE5vZGU6OnJlY3Vy
c2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgY29uc3QgU2NvcGVDaGFpbiYgY2hh
aW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9y
IGl0ZXIgPSBjaGFpbi5iZWdpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4u
ZW5kKCk7Ci0gIAotICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBpbiB0aGUgc2Nv
cGUgY2hhaW4KLSAgYXNzZXJ0KGl0ZXIgIT0gZW5kKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBsb2dpY2FsKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByMSk7CisgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjIpOworfQogCi0gIFByb3BlcnR5U2xvdCBzbG90
OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYg
KGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50LCBzbG90KSkKLSAgICAgIGdvdG8g
Zm91bmQ7CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gICAgKytpdGVyOwotICB9IHdoaWxl
IChpdGVyICE9IGVuZCk7CisvLyBBbiBzcGVjaWFsIHZlcnNpb24gd2hlcmUgTEhTIGlzIGFsd2F5
cyBsb2NhbCBhbmQgd2hlcmUgbm8gCisvLyByZWFkLW1vZGlmeS13cml0ZSBpcyBwb3NzaWJsZS4K
K2NsYXNzIExvY2FsQXNzaWduTm9kZSA6IHB1YmxpYyBBc3NpZ25Ob2RlIHsKK3B1YmxpYzoKKyAg
TG9jYWxBc3NpZ25Ob2RlKExvY2F0aW9uTm9kZSogbG9jLCBOb2RlICpyaWdodCwgaW50IGlkeCkg
IEtKU19GQVNUX0NBTEwgOiAKKyAgICAgIEFzc2lnbk5vZGUobG9jLCBPcEVxdWFsLCByaWdodCks
IGluZGV4KGlkeCkge30KIAotICBpZiAobV9vcGVyICE9IE9wRXF1YWwpCi0gICAgcmV0dXJuIHRo
cm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBtX2lkZW50KTsKKyAgSlNWYWx1ZSogZXZh
bHVhdGUoRXhlY1N0YXRlKiBleGVjKSAgS0pTX0ZBU1RfQ0FMTCB7CisgICAgQWN0aXZhdGlvbklt
cCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5h
Y3RpdmF0aW9uT2JqZWN0KCkpOworICAgIEpTVmFsdWUgKnYgPSBtX3JpZ2h0LT5ldmFsdWF0ZShl
eGVjKTsKKyAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQorICAgIHNjb3BlLT5wdXRMb2NhbENo
ZWNrZWQoaW5kZXgsIHYpOworICAgIHJldHVybiB2OworICB9Citwcml2YXRlOgorICBpbnQgaW5k
ZXg7Cit9OworCitKU1ZhbHVlKiBBc3NpZ25Ob2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMp
IHsKKyAgUmVmZXJlbmNlIHJlZiA9IG1fbG9jLT5ldmFsdWF0ZVJlZmVyZW5jZShleGVjKTsKKwor
ICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQorCisgIC8vTG9va3VwIGZhaWx1cmUgaXMgT0sgZm9y
IGFzc2lnbm1lbnRzLCBidXQgbm90IAorICAvL3JlYWQtbW9kaWZ5LXdyaXRlIG9wcywgZS5nLiAr
PQorICBpZiAoIXJlZi5mb3VuZCAmJiBtX29wZXIgIT0gT3BFcXVhbCkKKyAgICByZXR1cm4gdGhy
b3dVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIHJlZi5pZGVudCk7CiAKLSBmb3VuZDoKICAg
SlNWYWx1ZSAqdjsKIAogICBpZiAobV9vcGVyID09IE9wRXF1YWwpIHsKICAgICB2ID0gbV9yaWdo
dC0+ZXZhbHVhdGUoZXhlYyk7CiAgIH0gZWxzZSB7Ci0gICAgSlNWYWx1ZSAqdjEgPSBzbG90Lmdl
dFZhbHVlKGV4ZWMsIGJhc2UsIG1faWRlbnQpOworICAgIEpTVmFsdWUgKnYxID0gcmVmLnJlYWQo
ZXhlYyk7CiAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKICAgICBKU1ZhbHVlICp2MiA9IG1f
cmlnaHQtPmV2YWx1YXRlKGV4ZWMpOwogICAgIHYgPSB2YWx1ZUZvclJlYWRNb2RpZnlBc3NpZ25t
ZW50KGV4ZWMsIHYxLCB2MiwgbV9vcGVyKTsKQEAgLTE0NzAsMTAgKzE3OTMsMjggQEAgSlNWYWx1
ZSAqQXNzaWduUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZQogCiAgIEtKU19DSEVDS0VYQ0VQVElP
TlZBTFVFCiAKLSAgYmFzZS0+cHV0KGV4ZWMsIG1faWRlbnQsIHYpOworICByZWYud3JpdGUoZXhl
Yywgdik7CiAgIHJldHVybiB2OwogfQogCit2b2lkIEFzc2lnbk5vZGU6OnJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgIE5vZGU6OnJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgbV9sb2MpOworICAgTm9kZTo6cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX3JpZ2h0KTsK
K30KKworTm9kZSogQXNzaWduTm9kZTo6b3B0aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4
ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpCit7CisgIGlmIChtX2xvYy0+aXNWYXJBY2Nlc3NO
b2RlKCkgJiYgbV9vcGVyID09IE9wRXF1YWwpIHsKKyAgICBWYXJBY2Nlc3NOb2RlKiBpZGVudCA9
IHN0YXRpY19jYXN0PFZhckFjY2Vzc05vZGUqPihtX2xvYy5nZXQoKSk7CisgICAgaW50IGlkID0g
aWRlbnQtPmxvY2FsSUQobm9kZSk7CisgICAgaWYgKGlkICE9IC0xKSB7CisgICAgICAgIHJldHVy
biBuZXcgTG9jYWxBc3NpZ25Ob2RlKG1fbG9jLmdldCgpLCBtX3JpZ2h0LmdldCgpLCBpZCk7Cisg
ICAgfQorICB9CisgIHJldHVybiAwOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQXNzaWduRG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBKU1ZhbHVlICpBc3NpZ25Eb3ROb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCkBAIC0x
NDkyLDYgKzE4MzMsOCBAQCBKU1ZhbHVlICpBc3NpZ25Eb3ROb2RlOjpldmFsdWF0ZShFeGVjU3Rh
CiAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKICAgICBKU1ZhbHVlICp2MiA9IG1fcmlnaHQt
PmV2YWx1YXRlKGV4ZWMpOwogICAgIHYgPSB2YWx1ZUZvclJlYWRNb2RpZnlBc3NpZ25tZW50KGV4
ZWMsIHYxLCB2MiwgbV9vcGVyKTsKKworICAgIC8vIyMjIGNhbiBkbyBkaXJlY3Qgd3JpdGUgaGVy
ZS4uCiAgIH0KIAogICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQpAQCAtMTUwMCwxMyArMTg0Mywx
MCBAQCBKU1ZhbHVlICpBc3NpZ25Eb3ROb2RlOjpldmFsdWF0ZShFeGVjU3RhCiAgIHJldHVybiB2
OwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduRXJyb3JOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUqIEFzc2lnbkVy
cm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQordm9pZCBBc3NpZ25Eb3ROb2RlOjpy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gICAgdGhyb3dFcnJvcihleGVj
LCBSZWZlcmVuY2VFcnJvciwgIkxlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVy
ZW5jZS4iKTsKLSAgICBoYW5kbGVFeGNlcHRpb24oZXhlYyk7Ci0gICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9iYXNlKTsKKyAgcmVjdXJzZVZp
c2l0TGluayh2aXNpdG9yLCBtX3JpZ2h0KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEFzc2lnbkJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC0xNTMxLDYgKzE4NzEsOCBAQCBKU1ZhbHVlICpBc3NpZ25CcmFja2V0Tm9kZTo6
ZXZhbHVhdGUoRXhlCiAgICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogICAgICAgSlNWYWx1
ZSAqdjIgPSBtX3JpZ2h0LT5ldmFsdWF0ZShleGVjKTsKICAgICAgIHYgPSB2YWx1ZUZvclJlYWRN
b2RpZnlBc3NpZ25tZW50KGV4ZWMsIHYxLCB2MiwgbV9vcGVyKTsKKworICAgICAgLy8jIyMgY2Fu
IGRvIGRpcmVjdCB3cml0ZSBoZXJlLi4KICAgICB9CiAKICAgICBLSlNfQ0hFQ0tFWENFUFRJT05W
QUxVRQpAQCAtMTU1MCw2ICsxODkyLDggQEAgSlNWYWx1ZSAqQXNzaWduQnJhY2tldE5vZGU6OmV2
YWx1YXRlKEV4ZQogICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAgICAgSlNWYWx1ZSAqdjIg
PSBtX3JpZ2h0LT5ldmFsdWF0ZShleGVjKTsKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNz
aWdubWVudChleGVjLCB2MSwgdjIsIG1fb3Blcik7CisKKyAgICAvLyMjIyBjYW4gZG8gZGlyZWN0
IHdyaXRlIGhlcmUuLgogICB9CiAKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKQEAgLTE1NTgs
NiArMTkwMiwyMCBAQCBKU1ZhbHVlICpBc3NpZ25CcmFja2V0Tm9kZTo6ZXZhbHVhdGUoRXhlCiAg
IHJldHVybiB2OwogfQogCit2b2lkIEFzc2lnbkJyYWNrZXROb2RlOjpyZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9iYXNl
KTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX3N1YnNjcmlwdCk7CisgIHJlY3Vyc2VW
aXNpdExpbmsodmlzaXRvciwgbV9yaWdodCk7Cit9CisKK0pTVmFsdWUqIEFzc2lnbkVycm9yTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKSAKK3sgCisgICAgdGhyb3dFcnJvcihleGVjLCBS
ZWZlcmVuY2VFcnJvciwgIkxlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iKTsgCisgICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOyAKKyAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsgCit9IAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29tbWFOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjE0CkBA
IC0xNTcxLDYgKzE5MjksMTIgQEAgSlNWYWx1ZSAqQ29tbWFOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUgKgogICByZXR1cm4gdjsKIH0KIAordm9pZCBDb21tYU5vZGU6OnJlY3Vyc2VWaXNpdChOb2Rl
VmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByMSk7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjIpOworfQorCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduRXhwck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiAvLyBFQ01BIDEyLjIKQEAgLTE1NzksOCArMTk0MywxMiBAQCBKU1ZhbHVl
ICpBc3NpZ25FeHByTm9kZTo6ZXZhbHVhdGUoRXhlY1N0CiAgIHJldHVybiBleHByLT5ldmFsdWF0
ZShleGVjKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZhckRlY2xO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgQXNzaWduRXhwck5v
ZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0
TGluayh2aXNpdG9yLCBleHByKTsKK30KIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFZhckRlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAK
IFZhckRlY2xOb2RlOjpWYXJEZWNsTm9kZShjb25zdCBJZGVudGlmaWVyICZpZCwgQXNzaWduRXhw
ck5vZGUgKmluLCBUeXBlIHQpCiAgICAgOiB2YXJUeXBlKHQpLCBpZGVudChpZCksIGluaXQoaW4p
CkBAIC0xNjE2LDcgKzE5ODQsNyBAQCBKU1ZhbHVlKiBWYXJEZWNsTm9kZTo6aGFuZGxlU2xvd0Nh
c2UoRXhlCiB9CiAKIC8vIEVDTUEgMTIuMgotSlNWYWx1ZSogVmFyRGVjbE5vZGU6OmV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYykKK0pTVmFsdWUgKlZhckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUgKmV4ZWMpCiB7CiAgICAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0
KCktPnNjb3BlQ2hhaW4oKTsKICAgICBKU09iamVjdCogdmFyaWFibGVPYmplY3QgPSBleGVjLT5j
b250ZXh0KCktPnZhcmlhYmxlT2JqZWN0KCk7CkBAIC0xNjI2LDcgKzE5OTQsMTQgQEAgSlNWYWx1
ZSogVmFyRGVjbE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZQogICAgIGJvb2wgaW5HbG9iYWxTY29w
ZSA9ICsrY2hhaW4uYmVnaW4oKSA9PSBjaGFpbi5lbmQoKTsKIAogICAgIGlmIChpbkdsb2JhbFNj
b3BlICYmIChpbml0IHx8ICF2YXJpYWJsZU9iamVjdC0+Z2V0RGlyZWN0KGlkZW50KSkpIHsKLSAg
ICAgICAgSlNWYWx1ZSogdmFsID0gaW5pdCA/IGluaXQtPmV2YWx1YXRlKGV4ZWMpIDoganNVbmRl
ZmluZWQoKTsKKyAgICAgICAgSlNWYWx1ZSAqdmFsOworCisgICAgICAgIGlmIChpbml0KSB7Cisg
ICAgICAgICAgICB2YWwgPSBpbml0LT5ldmFsdWF0ZShleGVjKTsKKyAgICAgICAgICAgIEtKU19D
SEVDS0VYQ0VQVElPTlZBTFVFCisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdmFsID0ganNV
bmRlZmluZWQoKTsKKwogICAgICAgICBpbnQgZmxhZ3MgPSBJbnRlcm5hbDsKICAgICAgICAgaWYg
KGV4ZWMtPmNvbnRleHQoKS0+Y29kZVR5cGUoKSAhPSBFdmFsQ29kZSkKICAgICAgICAgICAgIGZs
YWdzIHw9IERvbnREZWxldGU7CkBAIC0xNjM0LDIwICsyMDA5LDIwIEBAIEpTVmFsdWUqIFZhckRl
Y2xOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUKICAgICAgICAgICAgIGZsYWdzIHw9IFJlYWRPbmx5
OwogICAgICAgICB2YXJpYWJsZU9iamVjdC0+cHV0RGlyZWN0KGlkZW50LCB2YWwsIGZsYWdzKTsK
ICAgICB9IGVsc2UgaWYgKGluaXQpIHsKLSAgICAgICAgSlNWYWx1ZSogdmFsID0gaW5pdC0+ZXZh
bHVhdGUoZXhlYyk7Ci0gICAgICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0gICAgICAgICAg
ICAKKyAgICAgICAgSlNWYWx1ZSAqdmFsID0gaW5pdC0+ZXZhbHVhdGUoZXhlYyk7CisKICAgICAg
ICAgLy8gaWYgdGhlIHZhcmlhYmxlIG9iamVjdCBpcyB0aGUgdG9wIG9mIHRoZSBzY29wZSBjaGFp
biwgdGhlbiB0aGF0IG11c3QKLSAgICAgICAgLy8gYmUgd2hlcmUgdGhpcyB2YXJpYWJsZSBpcyBk
ZWNsYXJlZCwgcHJvY2Vzc1ZhckRlY2xzIHdvdWxkIGhhdmUgcHV0IAorICAgICAgICAvLyBiZSB3
aGVyZSB0aGlzIHZhcmlhYmxlIGlzIGRlY2xhcmVkLCBwcm9jZXNzVmFyRGVjbHMgd291bGQgaGF2
ZSBwdXQKICAgICAgICAgLy8gaXQgdGhlcmUuIERvbid0IHNlYXJjaCB0aGUgc2NvcGUgY2hhaW4s
IHRvIG9wdGltaXplIHRoaXMgdmVyeSBjb21tb24gY2FzZS4KKwogICAgICAgICBpZiAoY2hhaW4u
dG9wKCkgIT0gdmFyaWFibGVPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gaGFuZGxlU2xvd0Nh
c2UoZXhlYywgY2hhaW4sIHZhbCk7CiAKLSAgICAgICAgdW5zaWduZWQgZmxhZ3MgPSAwOworICAg
ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MgPSAwOwogICAgICAgICB2YXJpYWJsZU9iamVjdC0+Z2V0
UHJvcGVydHlBdHRyaWJ1dGVzKGlkZW50LCBmbGFncyk7CiAgICAgICAgIGlmICh2YXJUeXBlID09
IFZhckRlY2xOb2RlOjpDb25zdGFudCkKICAgICAgICAgICAgIGZsYWdzIHw9IFJlYWRPbmx5Owot
ICAgICAgICAKKwogICAgICAgICBBU1NFUlQodmFyaWFibGVPYmplY3QtPmdldERpcmVjdChpZGVu
dCkgfHwgaWRlbnQgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyk7CiAgICAgICAg
IHZhcmlhYmxlT2JqZWN0LT5wdXQoZXhlYywgaWRlbnQsIHZhbCwgZmxhZ3MpOwogICAgIH0KQEAg
LTE2NTYsMjMgKzIwMzEsNTAgQEAgSlNWYWx1ZSogVmFyRGVjbE5vZGU6OmV2YWx1YXRlKEV4ZWNT
dGF0ZQogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY2hhbmdlIHRoZSBpbmhl
cml0ZW5jZSBoaWVyYXJjaHkgc28gdGhpcwogICAgIC8vIG5vZGUgZG9lc24ndCBldmVuIGhhdmUg
YW4gZXZhbHVhdGUgbWV0aG9kLCBidXQgaW5zdGVhZCBhIGRpZmZlcmVudGx5IG5hbWVkCiAgICAg
Ly8gb25lIHdpdGggYSB2b2lkIHJldHVybi4KKwogICAgIHJldHVybiAwOwogfQogCi12b2lkIFZh
ckRlY2xOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBWYXJEZWNs
Tm9kZTo6cHJvY2Vzc1ZhckRlY2woRXhlY1N0YXRlICpleGVjKQogewogICBKU09iamVjdCogdmFy
aWFibGUgPSBleGVjLT5jb250ZXh0KCktPnZhcmlhYmxlT2JqZWN0KCk7CisgIAorICAvLyBGaXJz
dCwgZGV0ZXJtaW5lIHdoaWNoIGZsYWdzIHdlIHdhbnQgdG8gdXNlLi4KKyAgaW50IGZsYWdzID0g
RG9udERlbGV0ZTsgCisgIGlmICh2YXJUeXBlID09IFZhckRlY2xOb2RlOjpDb25zdGFudCkKKyAg
ICBmbGFncyB8PSBSZWFkT25seTsKKworICAvLyBBcmUgd2UgaW5zaWRlIGEgZnVuY3Rpb24/IElm
IHNvLCB3ZSBmaWxsIGluIHRoZSBzeW1ib2wgdGFibGUKKyAgc3dpdGNoIChleGVjLT5jb250ZXh0
KCktPmNvZGVUeXBlKCkpIHsKKyAgICBjYXNlIEZ1bmN0aW9uQ29kZToKKyAgICAgIC8vIEluc2lk
ZSBhIGZ1bmN0aW9uLCB3ZSdyZSBqdXN0IGNvbXB1dGluZyBzdGF0aWMgaW5mb3JtYXRpb24uCisg
ICAgICAvLyBzbywganVzdCBmaWxsIGluIHRoZSBzeW1ib2wgdGFibGUuCisgICAgICBleGVjLT5j
b250ZXh0KCktPmN1cnJlbnRCb2R5KCktPmFkZFZhckRlY2woaWRlbnQsIGZsYWdzLCBleGVjKTsK
KyAgICAgIHJldHVybjsKKyAgICBjYXNlIEV2YWxDb2RlOgorICAgICAgLy8gZXZhbC1pbmplY3Rl
ZCB2YXJpYWJsZXMgY2FuIGJlIGRlbGV0ZWQuLgorICAgICAgZmxhZ3MgJj0gfkRvbnREZWxldGU7
CisKKyAgICAgIC8vIElmIGEgdmFyaWFibGUgYnkgdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLCBk
b24ndCBjbG9iYmVyIGl0IC0KKyAgICAgIC8vIGV2YWwgbWF5IGJlIHRyeWluZyB0byBpbmplY3Qg
YSB2YXJpYWJsZSB0aGF0IGFscmVhZHkgZXhpc3RzLi4KKyAgICAgIGlmICghdmFyaWFibGUtPmhh
c1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkgeworICAgICAgICB2YXJpYWJsZS0+cHV0KGV4ZWMsIGlk
ZW50LCBqc1VuZGVmaW5lZCgpLCBmbGFncyk7CisgICAgICAgIC8vIGV2YWwgaW5qZWN0ZWQgYSBu
ZXcgbG9jYWwgaW50byBzY29wZSEgQmV0dGVyIG1hcmsgdGhhdCBkb3duLCAKKyAgICAgICAgLy8g
c28gdGhhdCBOb25Mb2NhbFJlc29sdmVyIHN0b3BzIHNraXBwaW5nIHRoZSBsb2NhbCBzY29wZQor
ICAgICAgICB2YXJpYWJsZS0+c2V0TG9jYWxJbmplY3RlZCgpOworICAgICAgfQorICAgICAgYnJl
YWs7CisgICAgY2FzZSBHbG9iYWxDb2RlOgorICAgICAgLy8gSWYgYSB2YXJpYWJsZSBieSB0aGlz
IG5hbWUgYWxyZWFkeSBleGlzdHMsIGRvbid0IGNsb2JiZXIgaXQgLQorICAgICAgLy8gIyMjIEkg
YW0gbm90IHN1ZSB0aGlzIGlzIG5lZWRlZCBmb3IgR2xvYmFsQ29kZQorICAgICAgaWYgKCF2YXJp
YWJsZS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKQorICAgICAgICB2YXJpYWJsZS0+cHV0KGV4
ZWMsIGlkZW50LCBqc1VuZGVmaW5lZCgpLCBmbGFncyk7CisgIH07Cit9CiAKLSAgLy8gSWYgYSB2
YXJpYWJsZSBieSB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMsIGRvbid0IGNsb2JiZXIgaXQgLQot
ICAvLyBpdCBtaWdodCBiZSBhIGZ1bmN0aW9uIHBhcmFtZXRlcgotICBpZiAoIXZhcmlhYmxlLT5o
YXNQcm9wZXJ0eShleGVjLCBpZGVudCkpIHsKLSAgICBpbnQgZmxhZ3MgPSBJbnRlcm5hbDsKLSAg
ICBpZiAoZXhlYy0+Y29udGV4dCgpLT5jb2RlVHlwZSgpICE9IEV2YWxDb2RlKQotICAgICAgZmxh
Z3MgfD0gRG9udERlbGV0ZTsKLSAgICBpZiAodmFyVHlwZSA9PSBWYXJEZWNsTm9kZTo6Q29uc3Rh
bnQpCi0gICAgICBmbGFncyB8PSBSZWFkT25seTsKLSAgICB2YXJpYWJsZS0+cHV0KGV4ZWMsIGlk
ZW50LCBqc1VuZGVmaW5lZCgpLCBmbGFncyk7Ci0gIH0KK3ZvaWQgVmFyRGVjbE5vZGU6OnJlY3Vy
c2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBpbml0KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZhckRl
Y2xMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE2ODcsMTcgKzIw
ODksMTcgQEAgSlNWYWx1ZSAqVmFyRGVjbExpc3ROb2RlOjpldmFsdWF0ZShFeGVjUwogICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIAotdm9pZCBWYXJEZWNsTGlzdE5vZGU6OnByb2Nlc3NWYXJE
ZWNscyhFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGZvciAoVmFyRGVjbExpc3ROb2RlICpuID0gdGhp
czsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0gICAgbi0+dmFyLT5wcm9jZXNzVmFyRGVjbHMoZXhl
Yyk7Ci19Ci0KIHZvaWQgVmFyRGVjbExpc3ROb2RlOjpicmVha0N5Y2xlKCkgCiB7IAogICAgIG5l
eHQgPSAwOwogfQogCit2b2lkIFZhckRlY2xMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNp
dG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHZhcik7CisgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbmV4dCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBWYXJTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIC8vIEVDTUEgMTIuMgpAQCAtMTcxMSw5ICsyMTEzLDU5IEBAIENvbXBsZXRpb24gVmFy
U3RhdGVtZW50Tm9kZTo6ZXhlY3V0ZShFeGUKICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsKTsK
IH0KIAotdm9pZCBWYXJTdGF0ZW1lbnROb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpl
eGVjKQordm9pZCBWYXJTdGF0ZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbmV4dCk7Cit9CisKK05vZGUq
IFZhclN0YXRlbWVudE5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlKiwgRnVuY3Rp
b25Cb2R5Tm9kZSogZnVuY0JvZHkpCit7CisgIFN0YXRpY1ZhclN0YXRlbWVudE5vZGUqIHN0YXRp
Y1ZlciA9IG5ldyBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlKCk7CisgIHN0YXRpY1Zlci0+b3JpZ2lu
YWxTdGF0ZW1lbnQgPSB0aGlzOworCisgIGZvciAoVmFyRGVjbExpc3ROb2RlICpuID0gbmV4dC5n
ZXQoKTsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpIHsKKyAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQg
dGhpbmdzIHdoaWNoIGhhdmUgYW4gaW5pdGlhbGl6ZXIgLS0tIAorICAgIC8vIGV2ZXJ5dGhpbmcg
ZWxzZSBpcyBhIG5vLW9wIGF0IGV4ZWN1dGlvbiB0aW1lLCAKKyAgICAvLyBhbmQgb25seSBtYWtl
cyBhIGRpZmZlcmVuY2UgYXQgcHJvY2Vzc1ZhckRlY2wgdGltZQorICAgIGlmIChuLT52YXItPmlu
aXQpIHsKKyAgICAgIFN0YXRpY1ZhclN0YXRlbWVudE5vZGU6OkluaXRpYWxpemVyIGluaXQ7Cisg
ICAgICBpbml0LmluaXRFeHByID0gbi0+dmFyLT5pbml0LT5nZXRFeHByKCk7IC8vU2tpcCB0aGUg
QXNzaWduRXhwck5vZGUgYXMgd2VsbC4uLgorICAgICAgaW5pdC5sb2NhbElEICA9IGZ1bmNCb2R5
LT5sb29rdXBTeW1ib2xJRChuLT52YXItPmlkZW50KTsKKyAgICAgIGlmIChpbml0LmxvY2FsSUQg
PT0gLTEpIHsgLy9PdWNoLCBhIGR5bmFtaWMgcHJvcGVydHkhIEJhaWwgb3V0LCBiYWlsIG91dCEK
KyAgICAgICAgbmV3Tm9kZXMtPnJlbW92ZShzdGF0aWNWZXIpOworICAgICAgICBkZWxldGUgc3Rh
dGljVmVyOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgICAgIHN0YXRpY1Zlci0+aW5p
dGlhbGl6ZXJzLmFwcGVuZChpbml0KTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHN0YXRpY1ZlcjsK
K307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdGF0aWNWYXJTdGF0ZW1l
bnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbXBsZXRpb24gU3RhdGljVmFyU3Rh
dGVtZW50Tm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKmV4ZWMpCit7CisgIEtKU19CUkVBS1BPSU5U
OworICBBY3RpdmF0aW9uSW1wKiBzY29wZSA9IHN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihl
eGVjLT5jb250ZXh0KCktPmFjdGl2YXRpb25PYmplY3QoKSk7CisKKyAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbml0aWFsaXplcnMuc2l6ZSgpOyArK2kpIHsKKyAgICBKU1ZhbHVlKiB2YWwgPSBp
bml0aWFsaXplcnNbaV0uaW5pdEV4cHItPmV2YWx1YXRlKGV4ZWMpOworICAgIEtKU19DSEVDS0VY
Q0VQVElPTgorICAgIHNjb3BlLT5wdXRMb2NhbChpbml0aWFsaXplcnNbaV0ubG9jYWxJRCwgdmFs
KTsKKyAgICAvLyBOb3RlOiBmbGFncyBhcmUgYWxyZWFkeSB0YWtlbiBjYXJlIG9mIGF0IGRlY2xh
cmF0aW9uIHRpbWUKKyAgfQorICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwpOworfQorCit2b2lk
IFN0YXRpY1ZhclN0YXRlbWVudE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikKIHsKLSAgbmV4dC0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGluaXRpYWxpemVycy5zaXplKCk7ICsraSkgeworICAgTm9kZSogb2xkSW5pdGlhbGl6
ZXIgPSBpbml0aWFsaXplcnNbaV0uaW5pdEV4cHIuZ2V0KCk7CisgICBOb2RlKiBuZXdJbml0aWFs
aXplciA9IHZpc2l0b3ItPnZpc2l0KG9sZEluaXRpYWxpemVyKTsKKyAgIGlmIChuZXdJbml0aWFs
aXplcikKKyAgICBpbml0aWFsaXplcnNbaV0uaW5pdEV4cHIgPSBuZXdJbml0aWFsaXplcjsKKyAg
fQogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmxvY2tOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTczNSwxNSArMjE4NywxMiBAQCBD
b21wbGV0aW9uIEJsb2NrTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiAgIGlmICghc291cmNlKQog
ICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCk7CiAKLSAgc291cmNlLT5wcm9jZXNzRnVuY0Rl
Y2woZXhlYyk7Ci0KICAgcmV0dXJuIHNvdXJjZS0+ZXhlY3V0ZShleGVjKTsKIH0KIAotdm9pZCBC
bG9ja05vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCit2b2lkIEJsb2NrTm9k
ZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBpZiAoc291cmNlKQot
ICAgIHNvdXJjZS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICAgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgc291cmNlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEVtcHR5U3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3Njcs
NiArMjIxNiwxMSBAQCBDb21wbGV0aW9uIEV4cHJTdGF0ZW1lbnROb2RlOjpleGVjdXRlKEV4CiAg
IHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwgdik7CiB9CiAKK3ZvaWQgRXhwclN0YXRlbWVudE5v
ZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0
TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIElmTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8g
RUNNQSAxMi41CkBAIC0xNzkwLDEyICsyMjQ0LDExIEBAIENvbXBsZXRpb24gSWZOb2RlOjpleGVj
dXRlKEV4ZWNTdGF0ZSAqZXgKICAgcmV0dXJuIHN0YXRlbWVudDItPmV4ZWN1dGUoZXhlYyk7CiB9
CiAKLXZvaWQgSWZOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBJ
Zk5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgc3RhdGVtZW50
MS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotCi0gIGlmIChzdGF0ZW1lbnQyKQotICAgIHN0YXRl
bWVudDItPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9y
LCBleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQxKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQyKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIERvV2hpbGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTE4MDcsMjEgKzIyNjAsMjMgQEAgQ29tcGxldGlvbiBEb1doaWxlTm9kZTo6
ZXhlY3V0ZShFeGVjU3RhdAogCiAgIEpTVmFsdWUgKmJ2OwogICBDb21wbGV0aW9uIGM7CisgIEpT
VmFsdWUqIHZhbHVlID0gMDsKIAogICBkbyB7CiAgICAgLy8gYmFpbCBvdXQgb24gZXJyb3IKICAg
ICBLSlNfQ0hFQ0tFWENFUFRJT04KIAotICAgIGV4ZWMtPmNvbnRleHQoKS0+cHVzaEl0ZXJhdGlv
bigpOwogICAgIGMgPSBzdGF0ZW1lbnQtPmV4ZWN1dGUoZXhlYyk7Ci0gICAgZXhlYy0+Y29udGV4
dCgpLT5wb3BJdGVyYXRpb24oKTsKICAgICAKICAgICBpZiAoZXhlYy0+ZHluYW1pY0ludGVycHJl
dGVyKCktPnRpbWVkT3V0KCkpCiAgICAgICAgIHJldHVybiBDb21wbGV0aW9uKEludGVycnVwdGVk
KTsKIAotICAgIGlmICghKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiBscy5jb250YWlu
cyhjLnRhcmdldCgpKSkpIHsKLSAgICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBCcmVhaykgJiYg
bHMuY29udGFpbnMoYy50YXJnZXQoKSkpCi0gICAgICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1h
bCwgMCk7CisgICAgaWYgKGMuaXNWYWx1ZUNvbXBsZXRpb24oKSkKKyAgICAgICAgdmFsdWUgPSBj
LnZhbHVlKCk7CisKKyAgICBpZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgKGMu
dGFyZ2V0KCkgPT0gdGhpcykpKSB7CisgICAgICBpZiAoKGMuY29tcGxUeXBlKCkgPT0gQnJlYWsp
ICYmIChjLnRhcmdldCgpID09IHRoaXMpKQorICAgICAgICByZXR1cm4gQ29tcGxldGlvbihOb3Jt
YWwsIHZhbHVlKTsKICAgICAgIGlmIChjLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkKICAgICAgICAg
cmV0dXJuIGM7CiAgICAgfQpAQCAtMTgyOSwxMiArMjI4NCwxMyBAQCBDb21wbGV0aW9uIERvV2hp
bGVOb2RlOjpleGVjdXRlKEV4ZWNTdGF0CiAgICAgS0pTX0NIRUNLRVhDRVBUSU9OCiAgIH0gd2hp
bGUgKGJ2LT50b0Jvb2xlYW4oZXhlYykpOwogCi0gIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwg
MCk7CisgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwgdmFsdWUpOwogfQogCi12b2lkIERvV2hp
bGVOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBEb1doaWxlTm9k
ZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBzdGF0ZW1lbnQtPnBy
b2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsK
KyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2hpbGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtMTg2MCw5ICsyMzE2LDcgQEAgQ29tcGxldGlvbiBXaGlsZU5vZGU6
OmV4ZWN1dGUoRXhlY1N0YXRlIAogICAgIGlmICghYikKICAgICAgIHJldHVybiBDb21wbGV0aW9u
KE5vcm1hbCwgdmFsdWUpOwogCi0gICAgZXhlYy0+Y29udGV4dCgpLT5wdXNoSXRlcmF0aW9uKCk7
CiAgICAgYyA9IHN0YXRlbWVudC0+ZXhlY3V0ZShleGVjKTsKLSAgICBleGVjLT5jb250ZXh0KCkt
PnBvcEl0ZXJhdGlvbigpOwogCiAgICAgaWYgKGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT50
aW1lZE91dCgpKQogICAgICAgICByZXR1cm4gQ29tcGxldGlvbihJbnRlcnJ1cHRlZCk7CkBAIC0x
ODcwLDkgKzIzMjQsOSBAQCBDb21wbGV0aW9uIFdoaWxlTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUg
CiAgICAgaWYgKGMuaXNWYWx1ZUNvbXBsZXRpb24oKSkKICAgICAgIHZhbHVlID0gYy52YWx1ZSgp
OwogCi0gICAgaWYgKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiBscy5jb250YWlucyhj
LnRhcmdldCgpKSkKKyAgICBpZiAoKGMuY29tcGxUeXBlKCkgPT0gQ29udGludWUpICYmIChjLnRh
cmdldCgpID09IHRoaXMpKQogICAgICAgY29udGludWU7Ci0gICAgaWYgKChjLmNvbXBsVHlwZSgp
ID09IEJyZWFrKSAmJiBscy5jb250YWlucyhjLnRhcmdldCgpKSkKKyAgICBpZiAoKGMuY29tcGxU
eXBlKCkgPT0gQnJlYWspICYmIChjLnRhcmdldCgpID09IHRoaXMpKQogICAgICAgcmV0dXJuIENv
bXBsZXRpb24oTm9ybWFsLCB2YWx1ZSk7CiAgICAgaWYgKGMuY29tcGxUeXBlKCkgIT0gTm9ybWFs
KQogICAgICAgcmV0dXJuIGM7CkBAIC0xODgxLDkgKzIzMzUsMTAgQEAgQ29tcGxldGlvbiBXaGls
ZU5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICByZXR1cm4gQ29tcGxldGlvbigpOyAvLyB3b3Jr
IGFyb3VuZCBnY2MgNC4wIGJ1ZwogfQogCi12b2lkIFdoaWxlTm9kZTo6cHJvY2Vzc1ZhckRlY2xz
KEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgV2hpbGVOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCiB7Ci0gIHN0YXRlbWVudC0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIHN0YXRlbWVudCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBG
b3JOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTA3LDEz
ICsyMzYyLDExIEBAIENvbXBsZXRpb24gRm9yTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKmUKICAg
ICAvLyBiYWlsIG91dCBvbiBlcnJvcgogICAgIEtKU19DSEVDS0VYQ0VQVElPTgogCi0gICAgZXhl
Yy0+Y29udGV4dCgpLT5wdXNoSXRlcmF0aW9uKCk7CiAgICAgQ29tcGxldGlvbiBjID0gc3RhdGVt
ZW50LT5leGVjdXRlKGV4ZWMpOwotICAgIGV4ZWMtPmNvbnRleHQoKS0+cG9wSXRlcmF0aW9uKCk7
CiAgICAgaWYgKGMuaXNWYWx1ZUNvbXBsZXRpb24oKSkKICAgICAgIGN2YWwgPSBjLnZhbHVlKCk7
Ci0gICAgaWYgKCEoKGMuY29tcGxUeXBlKCkgPT0gQ29udGludWUpICYmIGxzLmNvbnRhaW5zKGMu
dGFyZ2V0KCkpKSkgewotICAgICAgaWYgKChjLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiBscy5j
b250YWlucyhjLnRhcmdldCgpKSkKKyAgICBpZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51
ZSkgJiYgKGMudGFyZ2V0KCkgPT0gdGhpcykpKSB7CisgICAgICBpZiAoKGMuY29tcGxUeXBlKCkg
PT0gQnJlYWspICYmIChjLnRhcmdldCgpID09IHRoaXMpKQogICAgICAgICByZXR1cm4gQ29tcGxl
dGlvbihOb3JtYWwsIGN2YWwpOwogICAgICAgaWYgKGMuY29tcGxUeXBlKCkgIT0gTm9ybWFsKQog
ICAgICAgcmV0dXJuIGM7CkBAIC0xOTMxLDEyICsyMzg0LDEyIEBAIENvbXBsZXRpb24gRm9yTm9k
ZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKmUKICAgcmV0dXJuIENvbXBsZXRpb24oKTsgLy8gd29yayBh
cm91bmQgZ2NjIDQuMCBidWcKIH0KIAotdm9pZCBGb3JOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhl
Y1N0YXRlICpleGVjKQordm9pZCBGb3JOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpCiB7Ci0gIGlmIChleHByMSkKLSAgICBleHByMS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMp
OwotCi0gIHN0YXRlbWVudC0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGV4cHIxKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByMik7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjMpOworICByZWN1cnNlVmlzaXRMaW5r
KHZpc2l0b3IsIHN0YXRlbWVudCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBGb3JJbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x
OTUxLDcgKzI0MDQsNyBAQCBGb3JJbk5vZGU6OkZvckluTm9kZShjb25zdCBJZGVudGlmaWVyICZp
CiB7CiAgIC8vIGZvciggdmFyIGZvbyA9IGJhciBpbiBiYXogKQogICB2YXJEZWNsID0gbmV3IFZh
ckRlY2xOb2RlKGlkZW50LCBpbml0LmdldCgpLCBWYXJEZWNsTm9kZTo6VmFyaWFibGUpOwotICBs
ZXhwciA9IG5ldyBSZXNvbHZlTm9kZShpZGVudCk7CisgIGxleHByID0gbmV3IFZhckFjY2Vzc05v
ZGUoaWRlbnQpOwogfQogCiAvLyBFQ01BIDEyLjYuNApAQCAtMTk4MSw2OSArMjQzNCwyOCBAQCBD
b21wbGV0aW9uIEZvckluTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiAgIEtKU19DSEVDS0VYQ0VQ
VElPTgogICB2ID0gZS0+dG9PYmplY3QoZXhlYyk7CiAgIHYtPmdldFByb3BlcnR5TmFtZXMoZXhl
YywgcHJvcGVydHlOYW1lcyk7Ci0gIAorCiAgIFByb3BlcnR5TmFtZUFycmF5SXRlcmF0b3IgZW5k
ID0gcHJvcGVydHlOYW1lcy5lbmQoKTsKICAgZm9yIChQcm9wZXJ0eU5hbWVBcnJheUl0ZXJhdG9y
IGl0ID0gcHJvcGVydHlOYW1lcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgIGNv
bnN0IElkZW50aWZpZXIgJm5hbWUgPSAqaXQ7Ci0gICAgICBpZiAoIXYtPmhhc1Byb3BlcnR5KGV4
ZWMsIG5hbWUpKQotICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICBKU1ZhbHVlICpzdHIgPSBq
c1N0cmluZyhuYW1lLnVzdHJpbmcoKSk7Ci0KLSAgICAgIGlmIChsZXhwci0+aXNSZXNvbHZlTm9k
ZSgpKSB7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXIgJmlkZW50ID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUgKj4obGV4cHIuZ2V0KCkpLT5pZGVudGlmaWVyKCk7Ci0KLSAgICAgICAgY29uc3Qg
U2NvcGVDaGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKLSAgICAg
ICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOwotICAgICAgICBTY29w
ZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4uZW5kKCk7Ci0gIAotICAgICAgICAvLyB3ZSBtdXN0
IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBpbiB0aGUgc2NvcGUgY2hhaW4KLSAgICAgICAgYXNzZXJ0
KGl0ZXIgIT0gZW5kKTsKKyAgICBjb25zdCBJZGVudGlmaWVyICZuYW1lID0gKml0OworICAgIGlm
ICghdi0+aGFzUHJvcGVydHkoZXhlYywgbmFtZSkpCisgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgICAgICBKU09iamVjdCAqbzsKLSAgICAgICAgZG8g
eyAKLSAgICAgICAgICAgIG8gPSAqaXRlcjsKLSAgICAgICAgICAgIGlmIChvLT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgby0+cHV0KGV4ZWMs
IGlkZW50LCBzdHIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgKytpdGVyOwotICAgICAgICB9IHdoaWxlIChpdGVyICE9IGVuZCk7Ci0gICAgICAg
IAotICAgICAgICBpZiAoaXRlciA9PSBlbmQpCi0gICAgICAgICAgICBvLT5wdXQoZXhlYywgaWRl
bnQsIHN0cik7Ci0gICAgfSBlbHNlIGlmIChsZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewot
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29y
Tm9kZSAqPihsZXhwci5nZXQoKSktPmlkZW50aWZpZXIoKTsKLSAgICAgICAgSlNWYWx1ZSAqdiA9
IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSAqPihsZXhwci5nZXQoKSktPmJhc2UoKS0+ZXZh
bHVhdGUoZXhlYyk7Ci0gICAgICAgIEtKU19DSEVDS0VYQ0VQVElPTgotICAgICAgICBKU09iamVj
dCAqbyA9IHYtPnRvT2JqZWN0KGV4ZWMpOworICAgIEpTVmFsdWUgKnN0ciA9IGpzU3RyaW5nKG5h
bWUudXN0cmluZygpKTsKIAotICAgICAgICBvLT5wdXQoZXhlYywgaWRlbnQsIHN0cik7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KGxleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSk7
Ci0gICAgICAgIEpTVmFsdWUgKnYgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlICo+
KGxleHByLmdldCgpKS0+YmFzZSgpLT5ldmFsdWF0ZShleGVjKTsKLSAgICAgICAgS0pTX0NIRUNL
RVhDRVBUSU9OCi0gICAgICAgIEpTVmFsdWUgKnYyID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vz
c29yTm9kZSAqPihsZXhwci5nZXQoKSktPnN1YnNjcmlwdCgpLT5ldmFsdWF0ZShleGVjKTsKLSAg
ICAgICAgS0pTX0NIRUNLRVhDRVBUSU9OCi0gICAgICAgIEpTT2JqZWN0ICpvID0gdi0+dG9PYmpl
Y3QoZXhlYyk7Ci0KLSAgICAgICAgdWludDMyX3QgaTsKLSAgICAgICAgaWYgKHYyLT5nZXRVSW50
MzIoaSkpCi0gICAgICAgICAgICBvLT5wdXQoZXhlYywgaSwgc3RyKTsKLSAgICAgICAgby0+cHV0
KGV4ZWMsIElkZW50aWZpZXIodjItPnRvU3RyaW5nKGV4ZWMpKSwgc3RyKTsKLSAgICB9CisgICAg
YXNzZXJ0IChsZXhwci0+aXNMb2NhdGlvbigpKTsKKyAgICBMb2NhdGlvbk5vZGUqIGxvYyA9IHN0
YXRpY19jYXN0PExvY2F0aW9uTm9kZSo+KGxleHByLmdldCgpKTsKIAorICAgIFJlZmVyZW5jZSAg
ICAgcmVmID0gbG9jLT5ldmFsdWF0ZVJlZmVyZW5jZShleGVjKTsKICAgICBLSlNfQ0hFQ0tFWENF
UFRJT04KKyAgICByZWYud3JpdGUoZXhlYywgc3RyKTsKIAotICAgIGV4ZWMtPmNvbnRleHQoKS0+
cHVzaEl0ZXJhdGlvbigpOwogICAgIGMgPSBzdGF0ZW1lbnQtPmV4ZWN1dGUoZXhlYyk7Ci0gICAg
ZXhlYy0+Y29udGV4dCgpLT5wb3BJdGVyYXRpb24oKTsKICAgICBpZiAoYy5pc1ZhbHVlQ29tcGxl
dGlvbigpKQogICAgICAgcmV0dmFsID0gYy52YWx1ZSgpOwogCi0gICAgaWYgKCEoKGMuY29tcGxU
eXBlKCkgPT0gQ29udGludWUpICYmIGxzLmNvbnRhaW5zKGMudGFyZ2V0KCkpKSkgewotICAgICAg
aWYgKChjLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiBscy5jb250YWlucyhjLnRhcmdldCgpKSkK
KyAgICBpZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgKGMudGFyZ2V0KCkgPT0g
dGhpcykpKSB7CisgICAgICBpZiAoKGMuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIChjLnRhcmdl
dCgpID09IHRoaXMpKQogICAgICAgICBicmVhazsKICAgICAgIGlmIChjLmNvbXBsVHlwZSgpICE9
IE5vcm1hbCkgewogICAgICAgICByZXR1cm4gYzsKQEAgLTIwNTcsMTEgKzI0NjksMTMgQEAgQ29t
cGxldGlvbiBGb3JJbk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICByZXR1cm4gQ29tcGxldGlv
bihOb3JtYWwsIHJldHZhbCk7CiB9CiAKLXZvaWQgRm9ySW5Ob2RlOjpwcm9jZXNzVmFyRGVjbHMo
RXhlY1N0YXRlICpleGVjKQordm9pZCBGb3JJbk5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikKIHsKLSAgaWYgKHZhckRlY2wpCi0gICAgdmFyRGVjbC0+cHJvY2Vzc1ZhckRl
Y2xzKGV4ZWMpOwotICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBpbml0KTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBs
ZXhwcik7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7CisgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgdmFyRGVjbCk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3Rh
dGVtZW50KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnRpbnVl
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwNzEsMTIgKzI0ODUs
NyBAQCBDb21wbGV0aW9uIENvbnRpbnVlTm9kZTo6ZXhlY3V0ZShFeGVjU3RhCiB7CiAgIEtKU19C
UkVBS1BPSU5UOwogCi0gIGlmIChpZGVudC5pc0VtcHR5KCkgJiYgIWV4ZWMtPmNvbnRleHQoKS0+
aW5JdGVyYXRpb24oKSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5
bnRheEVycm9yLCAiSW52YWxpZCBjb250aW51ZSBzdGF0ZW1lbnQuIik7Ci0gIGVsc2UgaWYgKCFp
ZGVudC5pc0VtcHR5KCkgJiYgIWV4ZWMtPmNvbnRleHQoKS0+c2VlbkxhYmVscygpLT5jb250YWlu
cyhpZGVudCkpCi0gICAgcmV0dXJuIGNyZWF0ZUVycm9yQ29tcGxldGlvbihleGVjLCBTeW50YXhF
cnJvciwgIkxhYmVsICVzIG5vdCBmb3VuZC4iLCBpZGVudCk7Ci0gIGVsc2UKLSAgICByZXR1cm4g
Q29tcGxldGlvbihDb250aW51ZSwgMCwgaWRlbnQpOworICByZXR1cm4gQ29tcGxldGlvbihDb250
aW51ZSwgMCwgdGFyZ2V0KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEJyZWFrTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwODYs
MTMgKzI0OTUsNyBAQCBDb21wbGV0aW9uIEJyZWFrTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiB7
CiAgIEtKU19CUkVBS1BPSU5UOwogCi0gIGlmIChpZGVudC5pc0VtcHR5KCkgJiYgIWV4ZWMtPmNv
bnRleHQoKS0+aW5JdGVyYXRpb24oKSAmJgotICAgICAgIWV4ZWMtPmNvbnRleHQoKS0+aW5Td2l0
Y2goKSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9y
LCAiSW52YWxpZCBicmVhayBzdGF0ZW1lbnQuIik7Ci0gIGVsc2UgaWYgKCFpZGVudC5pc0VtcHR5
KCkgJiYgIWV4ZWMtPmNvbnRleHQoKS0+c2VlbkxhYmVscygpLT5jb250YWlucyhpZGVudCkpCi0g
ICAgcmV0dXJuIGNyZWF0ZUVycm9yQ29tcGxldGlvbihleGVjLCBTeW50YXhFcnJvciwgIkxhYmVs
ICVzIG5vdCBmb3VuZC4iKTsKLSAgZWxzZQotICAgIHJldHVybiBDb21wbGV0aW9uKEJyZWFrLCAw
LCBpZGVudCk7CisgIHJldHVybiBDb21wbGV0aW9uKEJyZWFrLCAwLCB0YXJnZXQpOwogfQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmV0dXJuTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjEwMyw3ICsyNTA2LDcgQEAgQ29tcGxldGlvbiBS
ZXR1cm5Ob2RlOjpleGVjdXRlKEV4ZWNTdGF0ZQogICBLSlNfQlJFQUtQT0lOVDsKIAogICBDb2Rl
VHlwZSBjb2RlVHlwZSA9IGV4ZWMtPmNvbnRleHQoKS0+Y29kZVR5cGUoKTsKLSAgaWYgKGNvZGVU
eXBlICE9IEZ1bmN0aW9uQ29kZSAmJiBjb2RlVHlwZSAhPSBBbm9ueW1vdXNDb2RlICkgeworICBp
ZiAoY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlKSB7CiAgICAgcmV0dXJuIGNyZWF0ZUVycm9yQ29t
cGxldGlvbihleGVjLCBTeW50YXhFcnJvciwgIkludmFsaWQgcmV0dXJuIHN0YXRlbWVudC4iKTsK
ICAgfQogCkBAIC0yMTE2LDYgKzI1MTksMTEgQEAgQ29tcGxldGlvbiBSZXR1cm5Ob2RlOjpleGVj
dXRlKEV4ZWNTdGF0ZQogICByZXR1cm4gQ29tcGxldGlvbihSZXR1cm5WYWx1ZSwgdik7CiB9CiAK
K3ZvaWQgUmV0dXJuTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQorewor
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHZhbHVlKTsKK30KKwogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIFdpdGhOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogLy8gRUNNQSAxMi4xMApAQCAtMjEzNCw5ICsyNTQyLDEwIEBAIENvbXBsZXRp
b24gV2l0aE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICoKICAgcmV0dXJuIHJlczsKIH0KIAotdm9p
ZCBXaXRoTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgV2l0aE5v
ZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgc3RhdGVtZW50LT5w
cm9jZXNzVmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50KTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENhc2VDbGF1c2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTIxNTksMTYgKzI1NjgsMTAgQEAgQ29tcGxldGlvbiBDYXNlQ2xh
dXNlTm9kZTo6ZXZhbFN0YXRlbWVudAogICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwganNV
bmRlZmluZWQoKSk7CiB9CiAKLXZvaWQgQ2FzZUNsYXVzZU5vZGU6OnByb2Nlc3NWYXJEZWNscyhF
eGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGlmIChzb3VyY2UpCi0gICAgc291cmNlLT5wcm9jZXNzVmFy
RGVjbHMoZXhlYyk7Ci19Ci0KLXZvaWQgQ2FzZUNsYXVzZU5vZGU6OnByb2Nlc3NGdW5jRGVjbChF
eGVjU3RhdGUqIGV4ZWMpCit2b2lkIENhc2VDbGF1c2VOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGlmIChzb3VyY2UpCi0gICAgICBzb3VyY2UtPnByb2Nlc3NG
dW5jRGVjbChleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBzb3VyY2UpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQ2xhdXNlTGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMjE4MCwyNiArMjU4MywxNyBAQCBKU1ZhbHVlICpDbGF1c2VMaXN0Tm9kZTo6ZXZh
bHVhdGUoRXhlY1N0CiAgIHJldHVybiAwOwogfQogCi0vLyBFQ01BIDEyLjExCi12b2lkIENsYXVz
ZUxpc3ROb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQotewotICBmb3IgKENs
YXVzZUxpc3ROb2RlICpuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0gICAgaWYgKG4t
PmNsYXVzZSkKLSAgICAgIG4tPmNsYXVzZS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotfQotCi12
b2lkIENsYXVzZUxpc3ROb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKiBleGVjKQotewot
ICBmb3IgKENsYXVzZUxpc3ROb2RlKiBuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0g
ICAgaWYgKG4tPmNsYXVzZSkKLSAgICAgIG4tPmNsYXVzZS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMp
OwotfQotCiB2b2lkIENsYXVzZUxpc3ROb2RlOjpicmVha0N5Y2xlKCkgCiB7IAogICAgIG5leHQg
PSAwOwogfQogCit2b2lkIENsYXVzZUxpc3ROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgY2xhdXNlKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBuZXh0KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIENhc2VCbG9ja05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogQ2FzZUJsb2NrTm9kZTo6Q2FzZUJsb2NrTm9kZShDbGF1c2VMaXN0Tm9kZSAqbDEsIENh
c2VDbGF1c2VOb2RlICpkLApAQCAtMjI5MiwyNCArMjY4NiwxMSBAQCBDb21wbGV0aW9uIENhc2VC
bG9ja05vZGU6OmV2YWxCbG9jayhFeGVjCiAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCk7CiB9
CiAKLXZvaWQgQ2FzZUJsb2NrTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykK
K3ZvaWQgQ2FzZUJsb2NrTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQog
ewotICBpZiAobGlzdDEpCi0gICAgbGlzdDEtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLSAgaWYg
KGRlZikKLSAgICBkZWYtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLSAgaWYgKGxpc3QyKQotICAg
IGxpc3QyLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Ci19Ci0KLXZvaWQgQ2FzZUJsb2NrTm9kZTo6
cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgaWYgKGxpc3QxKQotICAgbGlz
dDEtPnByb2Nlc3NGdW5jRGVjbChleGVjKTsKLSAgaWYgKGRlZikKLSAgICBkZWYtPnByb2Nlc3NG
dW5jRGVjbChleGVjKTsKLSAgaWYgKGxpc3QyKQotICAgIGxpc3QyLT5wcm9jZXNzRnVuY0RlY2wo
ZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbGlzdDEpOworICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIGRlZik7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbGlzdDIp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3dpdGNoTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjMyMiwyMyArMjcwMywxNyBAQCBD
b21wbGV0aW9uIFN3aXRjaE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlCiAgIEpTVmFsdWUgKnYgPSBl
eHByLT5ldmFsdWF0ZShleGVjKTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OCiAKLSAgZXhlYy0+Y29u
dGV4dCgpLT5wdXNoU3dpdGNoKCk7CiAgIENvbXBsZXRpb24gcmVzID0gYmxvY2stPmV2YWxCbG9j
ayhleGVjLHYpOwotICBleGVjLT5jb250ZXh0KCktPnBvcFN3aXRjaCgpOwogCi0gIGlmICgocmVz
LmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiBscy5jb250YWlucyhyZXMudGFyZ2V0KCkpKQorICBp
ZiAoKHJlcy5jb21wbFR5cGUoKSA9PSBCcmVhaykgJiYgKHJlcy50YXJnZXQoKSA9PSB0aGlzKSkK
ICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHJlcy52YWx1ZSgpKTsKICAgcmV0dXJuIHJl
czsKIH0KIAotdm9pZCBTd2l0Y2hOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVj
KQotewotICBibG9jay0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotfQotCi12b2lkIFN3aXRjaE5v
ZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqIGV4ZWMpCit2b2lkIFN3aXRjaE5vZGU6OnJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgYmxvY2stPnByb2Nlc3NGdW5j
RGVjbChleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBibG9jayk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBMYWJlbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC0yMzQ2LDE5ICsyNzIxLDE2IEBAIHZvaWQgU3dpdGNoTm9kZTo6cHJvY2Vzc0Z1bmNEZWNs
KEV4ZWNTdGEKIC8vIEVDTUEgMTIuMTIKIENvbXBsZXRpb24gTGFiZWxOb2RlOjpleGVjdXRlKEV4
ZWNTdGF0ZSAqZXhlYykKIHsKLSAgaWYgKCFleGVjLT5jb250ZXh0KCktPnNlZW5MYWJlbHMoKS0+
cHVzaChsYWJlbCkpCi0gICAgcmV0dXJuIGNyZWF0ZUVycm9yQ29tcGxldGlvbihleGVjLCBTeW50
YXhFcnJvciwgIkR1cGxpY2F0ZWQgbGFiZWwgJXMgZm91bmQuIiwgbGFiZWwpOwogICBDb21wbGV0
aW9uIGUgPSBzdGF0ZW1lbnQtPmV4ZWN1dGUoZXhlYyk7Ci0gIGV4ZWMtPmNvbnRleHQoKS0+c2Vl
bkxhYmVscygpLT5wb3AoKTsKIAotICBpZiAoKGUuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIChl
LnRhcmdldCgpID09IGxhYmVsKSkKKyAgaWYgKChlLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiAo
ZS50YXJnZXQoKSA9PSB0aGlzKSkKICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIGUudmFs
dWUoKSk7CiAgIHJldHVybiBlOwogfQogCi12b2lkIExhYmVsTm9kZTo6cHJvY2Vzc1ZhckRlY2xz
KEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgTGFiZWxOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCiB7Ci0gIHN0YXRlbWVudC0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHN0YXRlbWVudCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBUaHJvd05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC0yMzc1LDYgKzI3NDcsMTEgQEAgQ29tcGxldGlvbiBUaHJvd05vZGU6OmV4
ZWN1dGUoRXhlY1N0YXRlIAogICByZXR1cm4gQ29tcGxldGlvbihUaHJvdywgdik7CiB9CiAKK3Zv
aWQgVGhyb3dOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBUcnlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIC8vIEVDTUEgMTIuMTQKQEAgLTI0MDEsMTMgKzI3NzgsMTcgQEAgQ29tcGxldGlvbiBU
cnlOb2RlOjpleGVjdXRlKEV4ZWNTdGF0ZSAqZQogICByZXR1cm4gYzsKIH0KIAotdm9pZCBUcnlO
b2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBUcnlOb2RlOjpyZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIHRyeUJsb2NrLT5wcm9jZXNzVmFy
RGVjbHMoZXhlYyk7Ci0gIGlmIChjYXRjaEJsb2NrKQotICAgIGNhdGNoQmxvY2stPnByb2Nlc3NW
YXJEZWNscyhleGVjKTsKLSAgaWYgKGZpbmFsbHlCbG9jaykKLSAgICBmaW5hbGx5QmxvY2stPnBy
b2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRyeUJs
b2NrKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGNhdGNoQmxvY2spOworICAgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZmluYWxseUJsb2NrKTsKK30KKwordm9pZCBUcnlOb2Rl
OjpyZWN1cnNlVmlzaXROb25DYXRjaChOb2RlVmlzaXRvciogdmlzaXRvcikKK3sKKyAgICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRyeUJsb2NrKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZp
c2l0b3IsIGZpbmFsbHlCbG9jayk7IC8vIyMjIGNoZWNrIHRoaXM/CiB9CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQYXJhbWV0ZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCkBAIC0yNDIzLDI2ICsyODA0LDgwIEBAIHZvaWQgUGFyYW1ldGVyTm9kZTo6
YnJlYWtDeWNsZSgpIAogICAgIG5leHQgPSAwOwogfQogCit2b2lkIFBhcmFtZXRlck5vZGU6OnJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5r
KHZpc2l0b3IsIG5leHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RnVuY3Rpb25Cb2R5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBGdW5jdGlv
bkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKFNvdXJjZUVsZW1lbnRzTm9kZSAqcykKICAgICA6
IEJsb2NrTm9kZShzKQogICAgICwgbV9zb3VyY2VVUkwoTGV4ZXI6OmN1cnIoKS0+c291cmNlVVJM
KCkpCiAgICAgLCBtX3NvdXJjZUlkKFBhcnNlcjo6c2lkKQorICAgICwgbV9idWlsdFN5bWJvbExp
c3QoZmFsc2UpCiB7CiAKICAgc2V0TG9jKC0xLCAtMSk7CiB9CiAKLXZvaWQgRnVuY3Rpb25Cb2R5
Tm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgRnVuY3Rpb25Cb2R5
Tm9kZTo6YWRkVmFyRGVjbChjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IGF0dHIsIEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICBpZiAoc291cmNlKQotICAgICAgICBzb3VyY2UtPnByb2Nlc3NG
dW5jRGVjbChleGVjKTsKKyAgLy8gVGhlcmUgaXMgb25lIG5hc3R5IHNwZWNpYWwgY2FzZTogaWdu
b3JlIGEgJ3ZhcicgZGVjbGFyYXRpb24gb2YgJ2FyZ3VtZW50cyc7CisgIC8vIGl0IGVmZmVjdGl2
ZWx5IGRvZXNuJ3QgZG8gYW55dGhpbmcgc2luY2UgdGhlIG1hZ2ljICdhcmd1bWVudHMnIGlzIGFs
cmVhZHkgCisgIC8vIGluIHNjb3BlIGFueXdheSwgYW5kIGlmIHdlIGFsbG9jYXRlZCBhIGxvY2Fs
LCB3ZSB3b3VsZCBoYXZlIHRvIHdvcnJ5IGFib3V0CisgIC8vIGtlZXBpbmcgdHJhY2sgb2Ygd2hl
dGhlciBpdCB3YXMgaW5pdGlhbGl6ZWQgb3Igbm90IG9uIHdoYXQgaXMgc3VwcG9zZWQgdG8gYmUg
dGhlIAorICAvLyBmYXN0IHBhdGguIFNvIHdlIGp1c3QgbWFrZSB0aGlzIGdvIHRocm91Z2ggdGhl
IHByb3BlcnR5IG1hcCBpbnN0ZWFkLgorICAvLyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBtYXR0
ZXIgZm9yIHBhcmFtZXRlcnMgb3IgZnVuY3Rpb24gZGVjbGFyYXRpb25zLAorICAvLyBzaW5jZSB0
aG9zZSBvdmVyd3JpdGUgdGhlIG1hZ2ljICdhcmd1bWVudHMnIGFueXdheS4KKyAgaWYgKGlkZW50
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCisgICAgcmV0dXJuOworCisgICh2
b2lkKSBhZGRTeW1ib2woaWRlbnQsIGF0dHIpOworfQorCit2b2lkIEZ1bmN0aW9uQm9keU5vZGU6
OmFkZEZ1bmNEZWNsKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgYXR0ciwgRnVuY0RlY2xO
b2RlKiBmdW5jRGVjbCkKK3sKKyAgKHZvaWQpIGFkZFN5bWJvbChpZGVudCwgYXR0ciwgZnVuY0Rl
Y2wpOworfQorCitpbnQgRnVuY3Rpb25Cb2R5Tm9kZTo6YWRkU3ltYm9sKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBpbnQgZmxhZ3MsIEZ1bmNEZWNsTm9kZSogZnVuY0RlY2wpCit7CisgIC8vIFdl
IGdldCBzeW1ib2xzIGluIHRoZSBvcmRlciBzcGVjaWZpZWQgaW4gMTAuMS4zLCBidXQgc29tZXRp
bWVzCisgIC8vIHRoZSBsYXRlciBvbmVzIGFyZSBzdXBwb3NlZCB0byBsb3NlLiBUaGlzIC1tb3N0
bHktIGRvZXMgbm90IAorICAvLyBtYXR0ZXIgZm9yIHVzIC0tLSB3ZSBwcmltYXJpbHkgY29uY2Vy
biBvdXJzZWx2ZXMgd2l0aCBuYW1lL0lECisgIC8vIG1hcHBpbmcsIGJ1dCB0aGVyZSBpcyBhbiBp
c3N1ZSBvZiBhdHRyaWJ1dGVzIGFuZCBmdW5jRGVjbCdzLgorICAvLyBIb3dldmVyLCB0aGUgb25s
eSBmbGFnIHRoYXQgbWF0dGVycyBoZXJlIGlzIFJlYWRPbmx5IC0tIAorICAvLyBldmVyeXRoaW5n
IGVsc2UganVzdCBoYXMgRG9udERlbGV0ZSBzZXQ7IGFuZCBpdCdzIGZyb20gY29uc3QsIAorICAv
LyBzbyB3ZSBjYW4ganVzdCBpZ25vcmUgaXQgb24gcmVwZXRpdGlvbnMsIHNpbmNlIHZhci9jb25z
dCBzaG91bGQgbG9zZQorICAvLyBhbmQgYXJlIGF0IHRoZSBlbmQuCisgIC8vCisgIC8vIEFuZCBm
b3IgZnVuY0RlY2wsIHNpbmNlIGZ1bmN0aW9ucyB3aW4gb3ZlciBldmVyeXRoaW5nLCB3ZSBhbHdh
eXMgc2V0IGl0IGlmIG5vbi16ZXJvCisgIGlmIChKU1ZhbHVlKiBvbGRJZFZhbCA9IG1fc3ltYm9s
VGFibGUuZ2V0KGlkZW50KSkgeworICAgIGludCBvbGRJZCA9IChpbnQpb2xkSWRWYWwtPmdldE51
bWJlcigpOworICAgIGlmIChmdW5jRGVjbCkKKyAgICAgIG1fc3ltYm9sTGlzdFtvbGRJZCAtIDFd
LmZ1bmNEZWNsID0gZnVuY0RlY2w7CisgICAgcmV0dXJuIG9sZElkOworICB9CisgICAgCisgIGlu
dCBpZCA9IG1fc3ltYm9sTGlzdC5zaXplKCkgKyAxOyAgICAgICAgIC8vRmlyc3QgZW50cnkgZ2V0
cyAxLCBldGMuCisgIG1fc3ltYm9sVGFibGUucHV0KGlkZW50LCBqc051bWJlcihpZCksIDApOwor
ICBtX3N5bWJvbExpc3QuYXBwZW5kIChTeW1ib2woaWRlbnQsIGZsYWdzLCBmdW5jRGVjbCkpOwor
ICByZXR1cm4gaWQ7Cit9CisKK2ludCBGdW5jdGlvbkJvZHlOb2RlOjpsb29rdXBTeW1ib2xJRChj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKK3sKKyAgSlNWYWx1ZSogdmFsID0gbV9zeW1i
b2xUYWJsZS5nZXQoaWRlbnQpOworICBpZiAoIXZhbCkKKyAgICByZXR1cm4gLTE7CisgIHJldHVy
biAoaW50KSB2YWwtPmdldE51bWJlcigpOwogfQogCiB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmFk
ZFBhcmFtKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogewotICBtX3BhcmFtZXRlcnMuYXBwZW5k
KFBhcmFtZXRlcihpZGVudCkpOworICBpbnQgaWQgPSBhZGRTeW1ib2woaWRlbnQsIERvbnREZWxl
dGUpOworICBtX3BhcmFtTGlzdC5hcHBlbmQoUGFyYW1ldGVyKGlkZW50LCBpZCkpOwogfQogCiBV
U3RyaW5nIEZ1bmN0aW9uQm9keU5vZGU6OnBhcmFtU3RyaW5nKCkgY29uc3QKQEAgLTI0NTgsNyAr
Mjg5Myw2IEBAIFVTdHJpbmcgRnVuY3Rpb25Cb2R5Tm9kZTo6cGFyYW1TdHJpbmcoKSAKICAgcmV0
dXJuIHM7CiB9CiAKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmNEZWNs
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBGdW5jRGVjbE5v
ZGU6OmFkZFBhcmFtcygpIApAQCAtMjQ3Miw3ICsyOTA2LDI4IEBAIHZvaWQgRnVuY0RlY2xOb2Rl
Ojpwcm9jZXNzRnVuY0RlY2woRXhlY1MKIHsKICAgQ29udGV4dCAqY29udGV4dCA9IGV4ZWMtPmNv
bnRleHQoKTsKIAorICAvLyBTZWUgd2hldGhlciB3ZSBqdXN0IG5lZWQgdG8gZmlsbCBpbiB0aGUg
c3ltYm9sIHRhYmxlLCAKKyAgLy8gb3IgYWN0dWFsbHkgZmlkZGxlIHdpdGggb2JqZWN0cy4KKyAg
aW50IGZsYWdzID0gSW50ZXJuYWwgfCBEb250RGVsZXRlOworICBzd2l0Y2ggKGV4ZWMtPmNvbnRl
eHQoKS0+Y29kZVR5cGUoKSkgeworICAgIGNhc2UgRnVuY3Rpb25Db2RlOgorICAgICAgLy8gSW5z
aWRlIGEgZnVuY3Rpb24sIGp1c3QgbmVlZCBzeW1ib2wgaW5mbworICAgICAgZXhlYy0+Y29udGV4
dCgpLT5jdXJyZW50Qm9keSgpLT5hZGRGdW5jRGVjbChpZGVudCwgZmxhZ3MsIHRoaXMpOworICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRXZhbENvZGU6CisgICAgICAvLyBldmFsLWluamVjdGVkIHN5
bWJvbHMgY2FuIGJlIGRlbGV0ZWQuLi4KKyAgICAgIGZsYWdzICY9IH5Eb250RGVsZXRlOworICAg
ICAgCisgICAgICAvLyBmYWxsdGhyb3VnaCBpbnRlbnRpb25hbAorICAgIGNhc2UgR2xvYmFsQ29k
ZToKKyAgICAgIGNvbnRleHQtPnZhcmlhYmxlT2JqZWN0KCktPnB1dChleGVjLCBpZGVudCwgbWFr
ZUZ1bmN0aW9uT2JqZWN0KGV4ZWMpLCBmbGFncyk7CisgIH07Cit9CisKK0Z1bmN0aW9uSW1wKiBG
dW5jRGVjbE5vZGU6Om1ha2VGdW5jdGlvbk9iamVjdChFeGVjU3RhdGUgKmV4ZWMpCit7CiAgIC8v
IFRPRE86IGxldCB0aGlzIGJlIGFuIG9iamVjdCB3aXRoIFtbQ2xhc3NdXSBwcm9wZXJ0eSAiRnVu
Y3Rpb24iCisgIENvbnRleHQgKmNvbnRleHQgPSBleGVjLT5jb250ZXh0KCk7CiAgIEZ1bmN0aW9u
SW1wICpmdW5jID0gbmV3IERlY2xhcmVkRnVuY3Rpb25JbXAoZXhlYywgaWRlbnQsIGJvZHkuZ2V0
KCksIGNvbnRleHQtPnNjb3BlQ2hhaW4oKSk7CiAKICAgSlNPYmplY3QgKnByb3RvID0gZXhlYy0+
bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5PYmplY3QoKS0+Y29uc3RydWN0KGV4ZWMsIExp
c3Q6OmVtcHR5KCkpOwpAQCAtMjQ4MSwxOSArMjkzNiw3IEBAIHZvaWQgRnVuY0RlY2xOb2RlOjpw
cm9jZXNzRnVuY0RlY2woRXhlY1MKIAogICBmdW5jLT5wdXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCwganNOdW1iZXIoYm9keS0+bnVtUGFyYW1zKCkpLCBSZWFkT25seXxEb250
RGVsZXRlfERvbnRFbnVtKTsKIAotICAvLyBFQ01BIDEwLjIuMgotICBjb250ZXh0LT52YXJpYWJs
ZU9iamVjdCgpLT5wdXQoZXhlYywgaWRlbnQsIGZ1bmMsIEludGVybmFsIHwgKGNvbnRleHQtPmNv
ZGVUeXBlKCkgPT0gRXZhbENvZGUgPyAwIDogRG9udERlbGV0ZSkpOwotCi0gIGlmIChib2R5KSB7
Ci0gICAgLy8gaGFjayB0aGUgc2NvcGUgc28gdGhhdCB0aGUgZnVuY3Rpb24gZ2V0cyBwdXQgYXMg
YSBwcm9wZXJ0eSBvZiBmdW5jLCBhbmQgaXQncyBzY29wZQotICAgIC8vIGNvbnRhaW5zIHRoZSBm
dW5jIGFzIHdlbGwgYXMgb3VyIGN1cnJlbnQgc2NvcGUKLSAgICBKU09iamVjdCAqb2xkVmFyID0g
Y29udGV4dC0+dmFyaWFibGVPYmplY3QoKTsKLSAgICBjb250ZXh0LT5zZXRWYXJpYWJsZU9iamVj
dChmdW5jKTsKLSAgICBjb250ZXh0LT5wdXNoU2NvcGUoZnVuYyk7Ci0gICAgYm9keS0+cHJvY2Vz
c0Z1bmNEZWNsKGV4ZWMpOwotICAgIGNvbnRleHQtPnBvcFNjb3BlKCk7Ci0gICAgY29udGV4dC0+
c2V0VmFyaWFibGVPYmplY3Qob2xkVmFyKTsKLSAgfQorICByZXR1cm4gZnVuYzsKIH0KIAogQ29t
cGxldGlvbiBGdW5jRGVjbE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICopCkBAIC0yNTAxLDYgKzI5
NDQsMTIgQEAgQ29tcGxldGlvbiBGdW5jRGVjbE5vZGU6OmV4ZWN1dGUoRXhlY1N0YQogICAgIHJl
dHVybiBDb21wbGV0aW9uKE5vcm1hbCk7CiB9CiAKK3ZvaWQgRnVuY0RlY2xOb2RlOjpyZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBwYXJhbSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBib2R5KTsKK30KKwog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmNFeHByTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMwpAQCAtMjUzNyw2ICsyOTg2LDEy
IEBAIEpTVmFsdWUgKkZ1bmNFeHByTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXQKICAgcmV0dXJuIGZ1
bmM7CiB9CiAKK3ZvaWQgRnVuY0V4cHJOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBwYXJhbSk7CisgICAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBib2R5KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIFNvdXJjZUVsZW1lbnRzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogaW50IFNvdXJjZUVsZW1lbnRzTm9kZTo6Y291bnQgPSAwOwpAQCAtMjU2NywxMCArMzAy
MiwxMyBAQCBDb21wbGV0aW9uIFNvdXJjZUVsZW1lbnRzTm9kZTo6ZXhlY3V0ZShFCiAgIAogICBm
b3IgKFNvdXJjZUVsZW1lbnRzTm9kZSAqbiA9IG5leHQuZ2V0KCk7IG47IG4gPSBuLT5uZXh0Lmdl
dCgpKSB7CiAgICAgQ29tcGxldGlvbiBjMiA9IG4tPm5vZGUtPmV4ZWN1dGUoZXhlYyk7Ci0gICAg
aWYgKGMyLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkKLSAgICAgIHJldHVybiBjMjsKLSAgICAvLyBU
aGUgc3BlYyBzYXlzIHRvIHJldHVybiBjMiBoZXJlLCBidXQgaXQgc2VlbXMgdGhhdCBtb3ppbGxh
IHJldHVybnMgYzEgaWYKLSAgICAvLyBjMiBkb2Vzbid0IGhhdmUgYSB2YWx1ZQorICAgIGlmIChj
Mi5jb21wbFR5cGUoKSAhPSBOb3JtYWwpIHsKKyAgICAgICAgaWYgKGMyLmNvbXBsVHlwZSgpID09
IFRocm93IHx8IGMyLmlzVmFsdWVDb21wbGV0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gYzI7
CisKKyAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oYzIuY29tcGxUeXBlKCksIGMxLnZhbHVlKCks
IGMyLnRhcmdldCgpKTsKKyAgICB9CisKICAgICBpZiAoYzIudmFsdWUoKSkKICAgICAgIGMxID0g
YzI7CiAgIH0KQEAgLTI1NzksMjMgKzMwMzcsMjkgQEAgQ29tcGxldGlvbiBTb3VyY2VFbGVtZW50
c05vZGU6OmV4ZWN1dGUoRQogfQogCiAvLyBFQ01BIDE0Ci12b2lkIFNvdXJjZUVsZW1lbnRzTm9k
ZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSAqZXhlYykKLXsKLSAgZm9yIChTb3VyY2VFbGVt
ZW50c05vZGUgKm4gPSB0aGlzOyBuOyBuID0gbi0+bmV4dC5nZXQoKSkKLSAgICBuLT5ub2RlLT5w
cm9jZXNzRnVuY0RlY2woZXhlYyk7Ci19Ci0KLXZvaWQgU291cmNlRWxlbWVudHNOb2RlOjpwcm9j
ZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQotewotICBmb3IgKFNvdXJjZUVsZW1lbnRzTm9k
ZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgpKQotICAgIG4tPm5vZGUtPnByb2Nlc3NW
YXJEZWNscyhleGVjKTsKLX0KIAogdm9pZCBTb3VyY2VFbGVtZW50c05vZGU6OmJyZWFrQ3ljbGUo
KSAKIHsgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgU291cmNlRWxlbWVudHNOb2RlOjpyZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBub2RlKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoU291
cmNlRWxlbWVudHNOb2RlICpzKSA6IEZ1bmN0aW9uQm9keU5vZGUocykKIHsKIH0KKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVycm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworQ29tcGxldGlvbiBFcnJvck5vZGU6OmV4ZWN1dGUoRXhlY1N0
YXRlICpleGVjKQoreworICAgIHJldHVybiBjcmVhdGVFcnJvckNvbXBsZXRpb24oZXhlYywgU3lu
dGF4RXJyb3IsIG1lc3NhZ2UuY3N0cmluZygpLmNfc3RyKCkpOworfQorCit9IC8vbmFtZXNwYWNl
IEtKUwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL25vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJp
Z2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzaW0gT3Jsb3ZpY2ggKG1ha3NpbUBr
ZGUub3JnKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDggKzI4LDEwIEBACiAKICNpbmNs
dWRlICJQYXJzZXIuaCIKICNpbmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUgInJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKICNpZiBQTEFURk9STShYODYpICYmIENPTVBJ
TEVSKEdDQykKICNkZWZpbmUgS0pTX0ZBU1RfQ0FMTCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMp
KSkKQEAgLTQ0LDEyICs0NywxOSBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAorICBjbGFzcyBTdGF0
aWNWYXJTdGF0ZW1lbnROb2RlOwogICBjbGFzcyBQcm9ncmFtTm9kZTsKICAgY2xhc3MgUHJvcGVy
dHlOYW1lTm9kZTsKICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKICAgY2xhc3MgUmVnRXhwOwog
ICBjbGFzcyBTb3VyY2VFbGVtZW50c05vZGU7CiAgIGNsYXNzIFNvdXJjZVN0cmVhbTsKKyAgY2xh
c3MgRnVuY0RlY2xOb2RlOworICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlOworICBjbGFzcyBOb2Rl
OworICAKKyAgY2xhc3MgVmFyRGVjbFZpc2l0b3I7CisgIGNsYXNzIEZ1bmNEZWNsVmlzaXRvcjsK
IAogICBlbnVtIE9wZXJhdG9yIHsgT3BFcXVhbCwKICAgICAgICAgICAgICAgICAgIE9wRXFFcSwK
QEAgLTgyLDYgKzkyLDIxIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICAgICAgICAgICAgT3BJ
bnN0YW5jZU9mCiAgIH07CiAKKyAgY2xhc3MgTm9kZVZpc2l0b3IgeworICBwdWJsaWM6CisgICAg
LyoqCisgICAgIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMg
dG8gcHJvY2VzcyBub2RlcywgYW5kIAorICAgICBwZXJoYXBzIHJldHVybiBwb2ludGVycyBmb3Ig
cmVwbGFjZW1lbnQgbm9kZXMuIElmIHRoZSBub2RlIHNob3VsZCBub3QgYmUgCisgICAgIGNoYW5n
ZWQsIHJldHVybiAwLiBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgbm9kZS4KKwor
ICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhc2tzIHRoZSBub2RlIHRvIHZpc2l0IGl0
cyBraWRzLCBhbmQgZG8gCisgICAgIHJlcGxhY2VtZW50cyBvbiB0aGVtIGlmIG5lZWRlZCwgYnV0
IGRvZXMgbm90IGNoYW5nZSBhbnl0aGluZyBmb3IgdGhpcyBub2RlCisgICAgKi8KKyAgICB2aXJ0
dWFsIH5Ob2RlVmlzaXRvcigpOworCisgICAgdmlydHVhbCBOb2RlKiB2aXNpdChOb2RlKiBub2Rl
KSBLSlNfRkFTVF9DQUxMOworICB9OworCiAgIGNsYXNzIE5vZGUgewogICBwdWJsaWM6CiAgICAg
Tm9kZSgpIEtKU19GQVNUX0NBTEw7CkBAIC05MCw3ICsxMTUsNiBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICB2aXJ0dWFsIEpTVmFsdWUgKmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykgS0pTX0ZBU1Rf
Q0FMTCA9IDA7CiAgICAgVVN0cmluZyB0b1N0cmluZygpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEwgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTCB7fQogICAgIGludCBsaW5lTm8oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0
dXJuIG1fbGluZTsgfQogCiAgICAgdm9pZCByZWYoKSBLSlNfRkFTVF9DQUxMOwpAQCAtMTAxLDE3
ICsxMjUsNjcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCBOb2RlICpub2RlSW5zaWRl
QWxsUGFyZW5zKCkgS0pTX0ZBU1RfQ0FMTDsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9u
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhckFjY2Vzc05vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29yTm9kZSgp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIGlzR3JvdXBOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1RyeU5vZGUoKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGludHJvZHVjZXNOZXdT
dGF0aWNTY29wZSAoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGludHJvZHVjZXNOZXdEeW5hbWljU2NvcGUoKSBjb25zdCBLSlNfRkFTVF9D
QUxMIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzSXRlcmF0aW9uU3RhdGVt
ZW50KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJTdGF0ZW1lbnQoKSBjb25zdCBLSlNfRkFTVF9D
QUxMIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGludHJvZHVjZXNOZXdTY29wZSgpIGNv
bnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaW50cm9kdWNlc05ld1N0YXRpY1Njb3BlKCkgfHwg
aW50cm9kdWNlc05ld0R5bmFtaWNTY29wZSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtD
eWNsZSgpIEtKU19GQVNUX0NBTEwgeyB9CiAKLSAgcHJvdGVjdGVkOgorICAgIC8vIFByb2Nlc3Nl
cyBhbGwgZnVuY3Rpb24gYW5kIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBiZWxvdyB0aGlzIG5vZGUs
IAorICAgIC8vIGFkZGluZyB0aGVtIHRvIHN5bWJvbCB0YWJsZSBvciB0aGUgY3VycmVudCBvYmpl
Y3QgZGVwZW5kaW5nIG9uIHRoZSAKKyAgICAvLyBleGVjdXRpb24gY29udGV4dC4uCisgICAgdm9p
ZCBwcm9jZXNzRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKworICAgIC8qCisgICAg
ICBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBtZXRob2Qgc2hvdWxkIGNhbGwgdmlzaXRvci0+dmlz
aXQgb24gYWxsIHRoZSAKKyAgICAgIGNoaWxkcmVuIG5vZGVzLCBhbmQgaWYgdGhleSByZXR1cm4g
dmFsdWUgaXMgbm9uLTAsIHVwZGF0ZSB0aGUgbGluayB0byB0aGUgY2hpbGQuCisgICAgICBUaGUg
cmVjdXJzZVZpc2l0TGluayBoZWxwZXIgdGFrZXMgY2FyZSBvZiB0aGlzCisgICAgKi8KKyAgICB2
aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICogLyp2aXNpdG9yKi8pIEtKU19G
QVNUX0NBTEwge30KKworICAgIC8qCisgICAgICBOb2RlcyB0aGF0IGNhbiBiZSBvcHRpbWl6ZWQg
dG8gdGFrZSBhZHZhbnRhZ2Ugb2YgbnVtZXJpYyBiaW5kaW5nIHRvIAorICAgICAgbG9jYWxzIHNo
b3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZC4KKyAgICAqLworICAgIHZpcnR1YWwgTm9kZSogb3B0
aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUp
IEtKU19GQVNUX0NBTEw7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2
b2lkIHJlY3Vyc2VWaXNpdExpbmsoTm9kZVZpc2l0b3IqIHZpc2l0b3IsIFJlZlB0cjxUPiYgbGlu
aykKKyAgICB7CisgICAgICAgIGlmICghbGluaykKKyAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgVCogbmV3TGluayA9IHN0YXRpY19jYXN0PFQqPih2aXNpdG9yLT52aXNpdChsaW5rLmdldCgp
KSk7CisgICAgICAgIGlmIChuZXdMaW5rKQorICAgICAgICAgIGxpbmsgPSBuZXdMaW5rOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RhdGljIHZvaWQgcmVjdXJzZVZp
c2l0TGluayhOb2RlVmlzaXRvciogdmlzaXRvciwgTGlzdFJlZlB0cjxUPiYgbGluaykKKyAgICB7
CisgICAgICAgIGlmICghbGluaykKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgVCogbmV3
TGluayA9IHN0YXRpY19jYXN0PFQqPih2aXNpdG9yLT52aXNpdChsaW5rLmdldCgpKSk7CisgICAg
ICAgIGlmIChuZXdMaW5rKQorICAgICAgICAgIGxpbmsgPSBuZXdMaW5rOworICAgIH0KKwogICAg
IENvbXBsZXRpb24gY3JlYXRlRXJyb3JDb21wbGV0aW9uKEV4ZWNTdGF0ZSAqLCBFcnJvclR5cGUs
IGNvbnN0IGNoYXIgKm1zZykgS0pTX0ZBU1RfQ0FMTDsKICAgICBDb21wbGV0aW9uIGNyZWF0ZUVy
cm9yQ29tcGxldGlvbihFeGVjU3RhdGUgKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFyICptc2csIGNv
bnN0IElkZW50aWZpZXIgJikgS0pTX0ZBU1RfQ0FMTDsKIAorICAgIE5vZGUqIGNyZWF0ZUVycm9y
Tm9kZShFcnJvclR5cGUgZSwgY29uc3QgY2hhciAqbXNnKTsKKyAgICBOb2RlKiBjcmVhdGVFcnJv
ck5vZGUoRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIgKm1zZywgY29uc3QgSWRlbnRpZmllciAmaWRl
bnQpOworCiAgICAgSlNWYWx1ZSAqdGhyb3dFcnJvcihFeGVjU3RhdGUgKiwgRXJyb3JUeXBlLCBj
b25zdCBjaGFyICptc2cpIEtKU19GQVNUX0NBTEw7CiAgICAgSlNWYWx1ZSogdGhyb3dFcnJvcihF
eGVjU3RhdGUgKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFyKiBtc2csIGNvbnN0IGNoYXIqKSBLSlNf
RkFTVF9DQUxMOwogICAgIEpTVmFsdWUgKnRocm93RXJyb3IoRXhlY1N0YXRlICosIEVycm9yVHlw
ZSwgY29uc3QgY2hhciAqbXNnLCBKU1ZhbHVlICosIE5vZGUgKikgS0pTX0ZBU1RfQ0FMTDsKQEAg
LTEyNSwxMyArMTk5LDMzIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZvaWQgaGFuZGxlRXhjZXB0
aW9uKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdm9pZCBoYW5kbGVFeGNlcHRpb24o
RXhlY1N0YXRlKiwgSlNWYWx1ZSopIEtKU19GQVNUX0NBTEw7CiAKK3Byb3RlY3RlZDoKKyAgICAv
KiBOb2RlcyB0aGF0IGNhbiBkbyBzZW1hbnRpYyBjaGVja2luZyBzaG91bGQgb3ZlcnJpZGUgdGhp
cywKKyAgICAgICBhbmQgcmV0dXJuIGFuIGFwcHJvcHJpYXRlIGVycm9yIG5vZGUgaWYgYXBwcm9w
cmlhdGUuIFRoZSByZWltcGxlbWVudGF0aW9ucworICAgICAgIHNob3VsZCBjYWxsIHRoZSBwYXJl
bnQgY2xhc3MncyBjaGVja1NlbWFudGljcyBtZXRob2QgYXQgcG9pbnQgd2hlcmUKKyAgICAgICBy
ZWN1cnNpb24gc2hvdWxkIG9jY3VyCisgICAgKi8KKyAgICBmcmllbmQgY2xhc3MgU2VtYW50aWND
aGVja2VyOworICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2Vy
KiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CisKICAgICBpbnQgbV9saW5lOwogICBw
cml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbChFeGVjU3RhdGUqIHN0YXRl
KSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRnVuY0RlY2woRXhlY1N0
YXRlKiBzdGF0ZSkgS0pTX0ZBU1RfQ0FMTDsKKyAgICBmcmllbmQgY2xhc3MgVmFyRGVjbFZpc2l0
b3I7CisgICAgZnJpZW5kIGNsYXNzIEZ1bmNEZWNsVmlzaXRvcjsKKwogICAgIC8vIGRpc2FsbG93
IGFzc2lnbm1lbnQKICAgICBOb2RlJiBvcGVyYXRvcj0oY29uc3QgTm9kZSYpIEtKU19GQVNUX0NB
TEw7CiAgICAgTm9kZShjb25zdCBOb2RlICZvdGhlcikgS0pTX0ZBU1RfQ0FMTDsKICAgfTsKIAor
ICBjbGFzcyBMb2NhdGlvbk5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIHB1YmxpYzoKKyAgICB2aXJ0
dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgUmVmZXJlbmNlIGV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSogZXhl
YykgS0pTX0ZBU1RfQ0FMTCA9IDA7CisgIH07CisKICAgY2xhc3MgU3RhdGVtZW50Tm9kZSA6IHB1
YmxpYyBOb2RlIHsKICAgcHVibGljOgogICAgIFN0YXRlbWVudE5vZGUoKSBLSlNfRkFTVF9DQUxM
OwpAQCAtMTQwLDEwICsyMzQsMTIgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgaW50IGxhc3RMaW5l
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAgICAgYm9vbCBo
aXRTdGF0ZW1lbnQoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIENvbXBs
ZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgPSAwOwotICAgIHZv
aWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIgJmlkKSBLSlNfRkFTVF9DQUxMIHsgbHMucHVz
aChpZCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgIHByb3RlY3RlZDoKLSAgICBMYWJlbFN0YWNrIGxzOworICAgIC8qIFRo
aXMgaW1wbGVtZW50YXRpb24gb2YgY2hlY2tTZW1hbnRpY3MgYXBwbGllcyB0aGUgYWNjdW11bGF0
ZWQgbGFiZWxzIHRvCisgICAgICAgdGhpcyBzdGF0ZW1lbnQsIG1hbmFnZXMgdGhlIHRhcmdldHMg
Zm9yIGxhYmVsbGVzcyBicmVhayBhbmQgY29udGludWUsCisgICAgICAgYW5kIHJlY3Vyc2VzLgor
ICAgICovCisgICAgdmlydHVhbCBOb2RlKiBjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIq
IHNlbWFudGljQ2hlY2tlcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBKU1ZhbHVl
ICpldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7IH0KICAgICBpbnQgbV9sYXN0TGluZTsKQEAgLTIwMCwxOCArMjk2LDM5IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOwogICB9OwogCi0gIGNsYXNzIFJlc29sdmVOb2RlIDogcHVibGljIE5vZGUg
eworICBjbGFzcyBWYXJBY2Nlc3NOb2RlIDogcHVibGljIExvY2F0aW9uTm9kZSB7CiAgIHB1Ymxp
YzoKLSAgICBSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyICZzKSBLSlNfRkFTVF9DQUxMIDog
aWRlbnQocykgeyB9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICBWYXJBY2Nlc3NOb2RlKGNvbnN0IElkZW50aWZpZXImIHMpIEtKU19GQVNUX0NB
TEwgOiBpZGVudChzKSB7fQorICAgIHZpcnR1YWwgTm9kZSogb3B0aW1pemVMb2NhbEFjY2VzcyhF
eGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEw7CisK
KyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJBY2Nlc3NOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBKU1ZhbHVlKiBldmFsdWF0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUmVmZXJlbmNlIGV2YWx1YXRlUmVm
ZXJlbmNlKEV4ZWNTdGF0ZSogZXhlYykgS0pTX0ZBU1RfQ0FMTDsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0xvY2F0aW9uKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IHRydWU7IH0KLSAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBpZGVudDsgfQorICAgIC8vIFJldHVybnMgdGhlIElEIG9mIHRoZSBs
b2NhbCB0aGlzIGlzIGJvdW5kIHRvLCAKKyAgICAvLyBvciAtMSBpZiBub24tbG9jYWwKKyAgICBp
bnQgbG9jYWxJRChGdW5jdGlvbkJvZHlOb2RlKiBmdW5jQm9keSkgS0pTX0ZBU1RfQ0FMTDsKKyAg
cHJvdGVjdGVkOgorICAgIElkZW50aWZpZXIgaWRlbnQ7CisgIH07CiAKKyAgY2xhc3MgTG9jYWxW
YXJBY2Nlc3NOb2RlIDogcHVibGljIFZhckFjY2Vzc05vZGUgeworICBwdWJsaWM6CisgICAgTG9j
YWxWYXJBY2Nlc3NOb2RlKGNvbnN0IElkZW50aWZpZXImIHMsIHVpbnQzMl90IGkpIEtKU19GQVNU
X0NBTEwgOiBWYXJBY2Nlc3NOb2RlKHMpLCBpbmRleChpKSB7fQorICAgIAorICAgIHZpcnR1YWwg
SlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFs
IFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIEtKU19GQVNUX0NB
TEw7CiAgIHByaXZhdGU6Ci0gICAgSWRlbnRpZmllciBpZGVudDsKKyAgICB1aW50MzJfdCBpbmRl
eDsKKyAgfTsKKworICBjbGFzcyBOb25Mb2NhbFZhckFjY2Vzc05vZGUgOiBwdWJsaWMgVmFyQWNj
ZXNzTm9kZSB7CisgIHB1YmxpYzoKKyAgICBOb25Mb2NhbFZhckFjY2Vzc05vZGUoY29uc3QgSWRl
bnRpZmllciYgcykgS0pTX0ZBU1RfQ0FMTCA6IFZhckFjY2Vzc05vZGUocykge30KKworICAgIHZp
cnR1YWwgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2
aXJ0dWFsIFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIEtKU19G
QVNUX0NBTEw7CiAgIH07CiAKICAgY2xhc3MgR3JvdXBOb2RlIDogcHVibGljIE5vZGUgewpAQCAt
MjIxLDYgKzMzOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgTm9kZSAqbm9kZUlu
c2lkZUFsbFBhcmVucygpIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCBib29sIGlz
R3JvdXBOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZ3JvdXA7CiAgIH07CkBAIC0yMzUsNiAr
MzUzLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50Tm9k
ZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQucmVsZWFzZSgpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEFycmF5Tm9kZTsKICAgICBMaXN0UmVmUHRy
PEVsZW1lbnROb2RlPiBuZXh0OwpAQCAtMjUxLDYgKzM3MCw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgOiBlbGVtZW50KGVsZS0+bmV4dC5yZWxlYXNlKCkpLCBlbGlzaW9uKGVsaSksIG9wdCh0
cnVlKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGVsZW1lbnQuZ2V0KCkpOyB9CiAgICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgIFJlZlB0cjxFbGVtZW50Tm9kZT4gZWxlbWVudDsKICAgICBpbnQg
ZWxpc2lvbjsKQEAgLTI3Niw2ICszOTYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBKU1ZhbHVl
KiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIGZyaWVuZCBj
bGFzcyBQcm9wZXJ0eUxpc3ROb2RlOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRy
PFByb3BlcnR5TmFtZU5vZGU+IG5hbWU7CiAgICAgUmVmUHRyPE5vZGU+IGFzc2lnbjsKQEAgLTI5
Myw2ICs0MTQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPFByb3Bl
cnR5TGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJl
bGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNf
RkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPYmplY3RMaXRlcmFsTm9k
ZTsKICAgICBSZWZQdHI8UHJvcGVydHlOb2RlPiBub2RlOwpAQCAtMzA1LDM4ICs0MjcsNDEgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoUHJvcGVydHlMaXN0Tm9kZSAq
bCkgS0pTX0ZBU1RfQ0FMTCA6IGxpc3QobC0+bmV4dC5yZWxlYXNlKCkpIHsgUGFyc2VyOjpyZW1v
dmVOb2RlQ3ljbGUobGlzdC5nZXQoKSk7IH0KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQo
Tm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVm
UHRyPFByb3BlcnR5TGlzdE5vZGU+IGxpc3Q7CiAgIH07CiAKLSAgY2xhc3MgQnJhY2tldEFjY2Vz
c29yTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgQnJhY2tldEFjY2Vzc29yTm9kZSA6IHB1
YmxpYyBMb2NhdGlvbk5vZGUgewogICBwdWJsaWM6CiAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShO
b2RlICplMSwgTm9kZSAqZTIpIEtKU19GQVNUX0NBTEwgOiBleHByMShlMSksIGV4cHIyKGUyKSB7
fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisgICAg
UmVmZXJlbmNlIGV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUo
KSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KICAgICBOb2RlICpiYXNlKCkg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBleHByMS5nZXQoKTsgfQogICAgIE5vZGUgKnN1YnNjcmlw
dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZXhwcjIuZ2V0KCk7IH0KIAotICBwcml2YXRlOgor
ICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19G
QVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29yTm9kZSgpIGNvbnN0
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRy
PE5vZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKICAgfTsKIAotICBjbGFzcyBE
b3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSA6
IHB1YmxpYyBMb2NhdGlvbk5vZGUgewogICBwdWJsaWM6CiAgICAgRG90QWNjZXNzb3JOb2RlKE5v
ZGUgKmUsIGNvbnN0IElkZW50aWZpZXIgJnMpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpLCBpZGVu
dChzKSB7IH0KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OworICAgIFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNf
RkFTVF9DQUxMOwogCi0gICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNEb3RBY2Nlc3Nvck5v
ZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KICAgICBOb2RlICpiYXNl
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBleHByLmdldCgpOyB9CiAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWRl
bnQ7IH0KIAotICBwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGlzRG90QWNj
ZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CisgIHByb3Rl
Y3RlZDoKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgICBJZGVudGlmaWVyIGlkZW50OwogICB9
OwpAQCAtMzUyLDYgKzQ3Nyw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NSZWZQ
dHI8QXJndW1lbnRMaXN0Tm9kZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IG5leHQucmVsZWFzZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFT
VF9DQUxMOworCisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlz
aXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQXJndW1l
bnRzTm9kZTsKICAgICBMaXN0UmVmUHRyPEFyZ3VtZW50TGlzdE5vZGU+IG5leHQ7CkBAIC0zNjQs
OCArNDkxLDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEFyZ3VtZW50c05vZGUoQXJndW1lbnRM
aXN0Tm9kZSAqbCkgS0pTX0ZBU1RfQ0FMTAogICAgICAgOiBsaXN0KGwtPm5leHQucmVsZWFzZSgp
KSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGxpc3QuZ2V0KCkpOyB9CiAgICAgSlNWYWx1ZSog
ZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICBMaXN0IGV2YWx1YXRlTGlz
dChFeGVjU3RhdGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbGlzdCA/IGxpc3QtPmV2
YWx1YXRlTGlzdChleGVjKSA6IExpc3QoKTsgfQorICAgIExpc3QgZXZhbHVhdGVMaXN0KEV4ZWNT
dGF0ZSAqZXhlYykgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBsaXN0ID8gbGlzdC0+ZXZhbHVhdGVM
aXN0KGV4ZWMpIDogTGlzdDo6ZW1wdHkoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworCisgICAgdmlydHVhbCB2b2lkIHJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0
ZToKICAgICBSZWZQdHI8QXJndW1lbnRMaXN0Tm9kZT4gbGlzdDsKICAgfTsKQEAgLTM3Niw2ICs1
MDUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBOZXdFeHByTm9kZShOb2RlICplLCBBcmd1bWVu
dHNOb2RlICphKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSwgYXJncyhhKSB7fQogICAgIEpTVmFs
dWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVh
bCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsK
ICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgICBSZWZQdHI8QXJndW1lbnRz
Tm9kZT4gYXJnczsKQEAgLTM4NiwxOCArNTE2LDIwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEZ1
bmN0aW9uQ2FsbFZhbHVlTm9kZShOb2RlICplLCBBcmd1bWVudHNOb2RlICphKSBLSlNfRkFTVF9D
QUxMIDogZXhwcihlKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Tm9kZT4gZXhwcjsKICAgICBSZWZQdHI8QXJndW1lbnRzTm9kZT4gYXJnczsKICAgfTsKIAot
ICBjbGFzcyBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3Mg
RnVuY3Rpb25DYWxsUmVmZXJlbmNlTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAg
IEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXImIGksIEFyZ3VtZW50c05v
ZGUgKmEpIEtKU19GQVNUX0NBTEwgOiBpZGVudChpKSwgYXJncyhhKSB7fQorICAgIEZ1bmN0aW9u
Q2FsbFJlZmVyZW5jZU5vZGUoTG9jYXRpb25Ob2RlICplLCBBcmd1bWVudHNOb2RlICphKSBLSlNf
RkFTVF9DQUxMIDogZXhwcihlKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKLSAg
ICBJZGVudGlmaWVyIGlkZW50OworICAgIFJlZlB0cjxMb2NhdGlvbk5vZGU+IGV4cHI7CiAgICAg
UmVmUHRyPEFyZ3VtZW50c05vZGU+IGFyZ3M7CiAgIH07CiAKQEAgLTQwNiw2ICs1MzgsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShOb2RlICpiLCBOb2Rl
ICpzLCBBcmd1bWVudHNOb2RlICphKSBLSlNfRkFTVF9DQUxMIDogYmFzZShiKSwgc3Vic2NyaXB0
KHMpLCBhcmdzKGEpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+
IGJhc2U7CiAgICAgUmVmUHRyPE5vZGU+IHN1YnNjcmlwdDsKQEAgLTQxNiw2ICs1NDksNyBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgogICAgIEZ1bmN0aW9uQ2FsbFBhcmVuQnJhY2tldE5v
ZGUoTm9kZSAqYiwgTm9kZSAqcywgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IEZ1
bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGIsIHMsIGEpIHt9CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgLy8gRklYTUUgLSBz
aG91bGQgaGF2ZSByZWN1cnNlIG9yIG5vdD8KICAgfTsKIAogICBjbGFzcyBGdW5jdGlvbkNhbGxE
b3ROb2RlIDogcHVibGljIE5vZGUgewpAQCAtNDIzLDYgKzU1Nyw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoTm9kZSAqYiwgY29uc3QgSWRlbnRpZmllciAmaSwg
QXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGJhc2UoYiksIGlkZW50KGkpLCBhcmdz
KGEpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KSBLSlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IGJhc2U7CiAg
ICAgSWRlbnRpZmllciBpZGVudDsKQEAgLTQzMywzNyArNTY4LDE4IEBAIG5hbWVzcGFjZSBLSlMg
ewogICBwdWJsaWM6CiAgICAgRnVuY3Rpb25DYWxsUGFyZW5Eb3ROb2RlKE5vZGUgKmIsIGNvbnN0
IElkZW50aWZpZXIgJmksIEFyZ3VtZW50c05vZGUgKmEpIEtKU19GQVNUX0NBTEwgOiBGdW5jdGlv
bkNhbGxEb3ROb2RlKGIsIGksIGEpIHt9CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgLy8gRklYTUUgLSBzaG91bGQgaGF2
ZSByZWN1cnNlIG9yIG5vdD8KICAgfTsKIAotICBjbGFzcyBQb3N0Zml4UmVzb2x2ZU5vZGUgOiBw
dWJsaWMgTm9kZSB7CisgIGNsYXNzIFBvc3RmaXhOb2RlIDogcHVibGljIE5vZGUgewogICBwdWJs
aWM6Ci0gICAgUG9zdGZpeFJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXImIGksIE9wZXJhdG9y
IG8pIEtKU19GQVNUX0NBTEwgOiBtX2lkZW50KGkpLCBtX29wZXIobykge30KKyAgICBQb3N0Zml4
Tm9kZShMb2NhdGlvbk5vZGUgKmwsIE9wZXJhdG9yIG8pIEtKU19GQVNUX0NBTEwgOiBtX2xvYyhs
KSwgbV9vcGVyKG8pIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBJZGVudGlmaWVyIG1faWRlbnQ7Ci0gICAg
T3BlcmF0b3IgbV9vcGVyOwotICB9OwotCi0gIGNsYXNzIFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1
YmxpYyBOb2RlIHsKLSAgcHVibGljOgotICAgIFBvc3RmaXhCcmFja2V0Tm9kZShOb2RlICpiLCBO
b2RlICpzLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9iYXNlKGIpLCBtX3N1YnNjcmlw
dChzKSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwot
ICAgIFJlZlB0cjxOb2RlPiBtX3N1YnNjcmlwdDsKLSAgICBPcGVyYXRvciBtX29wZXI7Ci0gIH07
Ci0KLSAgY2xhc3MgUG9zdGZpeERvdE5vZGUgOiBwdWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAg
ICBQb3N0Zml4RG90Tm9kZShOb2RlICpiLCBjb25zdCBJZGVudGlmaWVyJiBpLCBPcGVyYXRvciBv
KSBLSlNfRkFTVF9DQUxMIDogbV9iYXNlKGIpLCBtX2lkZW50KGkpLCBtX29wZXIobykge30KLSAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICBw
cml2YXRlOgotICAgIFJlZlB0cjxOb2RlPiBtX2Jhc2U7Ci0gICAgSWRlbnRpZmllciBtX2lkZW50
OworICAgIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KyAgICB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqIHZpc2l0b3IpIEtKU19GQVNUX0NB
TEw7CisgICAgTm9kZSogb3B0aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0
aW9uQm9keU5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICBSZWZQ
dHI8TG9jYXRpb25Ob2RlPiBtX2xvYzsKICAgICBPcGVyYXRvciBtX29wZXI7CiAgIH07CiAKQEAg
LTQ3NywzMyArNTkzLDE0IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIE9wZXJhdG9yIG1fb3BlcjsK
ICAgfTsKIAotICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgY2xh
c3MgRGVsZXRlUmVmZXJlbmNlTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIERl
bGV0ZVJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXImIGkpIEtKU19GQVNUX0NBTEwgOiBtX2lk
ZW50KGkpIHt9CisgICAgRGVsZXRlUmVmZXJlbmNlTm9kZShMb2NhdGlvbk5vZGUgKmwpIEtKU19G
QVNUX0NBTEwgOiBsb2MobCkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqIHZp
c2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6Ci0gICAgSWRlbnRpZmllciBtX2lkZW50
OwotICB9OwotCi0gIGNsYXNzIERlbGV0ZUJyYWNrZXROb2RlIDogcHVibGljIE5vZGUgewotICBw
dWJsaWM6Ci0gICAgRGVsZXRlQnJhY2tldE5vZGUoTm9kZSAqYmFzZSwgTm9kZSAqc3Vic2NyaXB0
KSBLSlNfRkFTVF9DQUxMIDogbV9iYXNlKGJhc2UpLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpIHt9
Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
LSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAgIFJlZlB0cjxOb2RlPiBt
X3N1YnNjcmlwdDsKLSAgfTsKLQotICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIE5vZGUg
ewotICBwdWJsaWM6Ci0gICAgRGVsZXRlRG90Tm9kZShOb2RlICpiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpKSBLSlNfRkFTVF9DQUxMIDogbV9iYXNlKGJhc2UpLCBtX2lkZW50KGkpIHt9Ci0gICAg
SlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJp
dmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAgIElkZW50aWZpZXIgbV9pZGVudDsK
KyAgICBSZWZQdHI8TG9jYXRpb25Ob2RlPiBsb2M7CiAgIH07CiAKICAgY2xhc3MgRGVsZXRlVmFs
dWVOb2RlIDogcHVibGljIE5vZGUgewpAQCAtNTExLDYgKzYwOCw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIERlbGV0ZVZhbHVlTm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogbV9leHByKGUp
IHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBL
SlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBtX2V4cHI7CiAgIH07
CkBAIC01MjAsMTcgKzYxOCwxOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBWb2lkTm9kZShOb2Rl
ICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgfTsKIAotICBjbGFzcyBUeXBlT2ZSZXNvbHZlTm9kZSA6
IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgVHlwZU9mUmVmZXJlbmNlTm9kZSA6IHB1YmxpYyBOb2Rl
IHsKICAgcHVibGljOgotICAgIFR5cGVPZlJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXImIGkp
IEtKU19GQVNUX0NBTEwgOiBtX2lkZW50KGkpIHt9CisgICAgVHlwZU9mUmVmZXJlbmNlTm9kZShM
b2NhdGlvbk5vZGUgKmwpIEtKU19GQVNUX0NBTEwgOiBsb2MobCkge30KICAgICBKU1ZhbHVlKiBl
dmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIHJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqIHZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6Ci0g
ICAgSWRlbnRpZmllciBtX2lkZW50OworICAgIFJlZlB0cjxMb2NhdGlvbk5vZGU+IGxvYzsKICAg
fTsKIAogICBjbGFzcyBUeXBlT2ZWYWx1ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CkBAIC01MzgsMzkg
KzYzOCwyMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBUeXBlT2ZWYWx1ZU5vZGUoTm9kZSAqZSkg
S0pTX0ZBU1RfQ0FMTCA6IG1fZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gbV9leHByOwogICB9OwogCi0gIGNsYXNzIFByZWZpeFJlc29sdmVOb2RlIDog
cHVibGljIE5vZGUgeworICBjbGFzcyBQcmVmaXhOb2RlIDogcHVibGljIE5vZGUgewogICBwdWJs
aWM6Ci0gICAgUHJlZml4UmVzb2x2ZU5vZGUoY29uc3QgSWRlbnRpZmllciYgaSwgT3BlcmF0b3Ig
bykgS0pTX0ZBU1RfQ0FMTCA6IG1faWRlbnQoaSksIG1fb3BlcihvKSB7fQorICAgIFByZWZpeE5v
ZGUoTG9jYXRpb25Ob2RlICpsLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9sb2MobCks
IG1fb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgSWRlbnRpZmllciBtX2lkZW50OwotICAgIE9w
ZXJhdG9yIG1fb3BlcjsKLSAgfTsKLQotICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1Ymxp
YyBOb2RlIHsKLSAgcHVibGljOgotICAgIFByZWZpeEJyYWNrZXROb2RlKE5vZGUgKmIsIE5vZGUg
KnMsIE9wZXJhdG9yIG8pIEtKU19GQVNUX0NBTEwgOiBtX2Jhc2UoYiksIG1fc3Vic2NyaXB0KHMp
LCBtX29wZXIobykge30KLSAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOwotICBwcml2YXRlOgotICAgIFJlZlB0cjxOb2RlPiBtX2Jhc2U7Ci0gICAg
UmVmUHRyPE5vZGU+IG1fc3Vic2NyaXB0OwotICAgIE9wZXJhdG9yIG1fb3BlcjsKLSAgfTsKLQot
ICBjbGFzcyBQcmVmaXhEb3ROb2RlIDogcHVibGljIE5vZGUgewotICBwdWJsaWM6Ci0gICAgUHJl
Zml4RG90Tm9kZShOb2RlICpiLCBjb25zdCBJZGVudGlmaWVyJiBpLCBPcGVyYXRvciBvKSBLSlNf
RkFTVF9DQUxMIDogbV9iYXNlKGIpLCBtX2lkZW50KGkpLCBtX29wZXIobykge30KLSAgICBKU1Zh
bHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICBwcml2YXRl
OgotICAgIFJlZlB0cjxOb2RlPiBtX2Jhc2U7Ci0gICAgSWRlbnRpZmllciBtX2lkZW50OworICAg
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2
b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqIHZpc2l0b3IpIEtKU19GQVNUX0NBTEw7Cisg
ICAgTm9kZSogb3B0aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9k
eU5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICBSZWZQdHI8TG9j
YXRpb25Ob2RlPiBtX2xvYzsKICAgICBPcGVyYXRvciBtX29wZXI7CiAgIH07CiAKQEAgLTU4OSw2
ICs2NzAsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBVbmFyeVBsdXNOb2RlKE5vZGUgKmUpIEtK
U19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0
cjxOb2RlPiBleHByOwogICB9OwpAQCAtNTk4LDYgKzY4MCw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgIE5lZ2F0ZU5vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NB
TEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC02MDcsNiAr
NjkwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQml0d2lzZU5vdE5vZGUoTm9kZSAqZSkgS0pT
X0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRy
PE5vZGU+IGV4cHI7CiAgIH07CkBAIC02MTYsNiArNzAwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgTG9naWNhbE5vdE5vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNU
X0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC02MjUs
NiArNzEwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgTXVsdE5vZGUoTm9kZSAqdDEsIE5vZGUg
KnQyLCBjaGFyIG9wKSBLSlNfRkFTVF9DQUxMIDogdGVybTEodDEpLCB0ZXJtMih0MiksIG9wZXIo
b3ApIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAg
ICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC02MzYsNiArNzIyLDcgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgQWRkTm9kZShOb2RlICp0MSwgTm9kZSAqdDIsIGNoYXIgb3ApIEtKU19GQVNUX0NBTEwg
OiB0ZXJtMSh0MSksIHRlcm0yKHQyKSwgb3BlcihvcCkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6
CiAgICAgUmVmUHRyPE5vZGU+IHRlcm0xOwogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMjsKQEAgLTY0
OCw2ICs3MzUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIDogdGVybTEodDEpLCB0ZXJtMih0
MiksIG9wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IHRl
cm0xOwogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMjsKQEAgLTY2MCw2ICs3NDgsNyBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgIGV4cHIxKGUxKSwgZXhwcjIoZTIpLCBvcGVyKG8pIHt9CiAgICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4g
ZXhwcjI7CkBAIC02NzIsNiArNzYxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICA6IGV4cHIx
KGUxKSwgZXhwcjIoZTIpLCBvcGVyKG8pIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0
KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJl
ZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC02ODQsNiArNzc0
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBleHByMShlMSksIGV4cHIyKGUyKSwgb3Blcihv
KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikg
S0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAg
UmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtNjk5LDYgKzc5MCw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgZXhwcjEoZTEpLCBleHByMihlMiksIG9wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFs
dWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCBy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZh
dGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAg
LTcxNCwzMCArODA2LDM0IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgbG9naWNhbChsKSwgZXhw
cjEoZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5v
ZGU+IGxvZ2ljYWw7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBl
eHByMjsKICAgfTsKIAotICBjbGFzcyBBc3NpZ25SZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsK
KyAgY2xhc3MgQXNzaWduTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIEFzc2ln
blJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXIgJmlkZW50LCBPcGVyYXRvciBvcGVyLCBOb2Rl
ICpyaWdodCkgS0pTX0ZBU1RfQ0FMTAotICAgICAgOiBtX2lkZW50KGlkZW50KSwgbV9vcGVyKG9w
ZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQorICAgIEFzc2lnbk5vZGUoTG9jYXRpb25Ob2RlKiBsb2Ms
IE9wZXJhdG9yIG9wZXIsIE5vZGUgKnJpZ2h0KSBLSlNfRkFTVF9DQUxMIDoKKyAgICAgIG1fbG9j
KGxvYyksIG1fb3BlcihvcGVyKSwgbV9yaWdodChyaWdodCkge30KKyAgICB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgSlNWYWx1ZSogZXZhbHVh
dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqIHZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgTm9kZSogb3B0aW1p
emVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpIEtK
U19GQVNUX0NBTEw7CiAgIHByb3RlY3RlZDoKLSAgICBJZGVudGlmaWVyIG1faWRlbnQ7CisgICAg
UmVmUHRyPExvY2F0aW9uTm9kZT4gbV9sb2M7CiAgICAgT3BlcmF0b3IgbV9vcGVyOwogICAgIFJl
ZlB0cjxOb2RlPiBtX3JpZ2h0OwogICB9OwogCiAgIGNsYXNzIEFzc2lnbkJyYWNrZXROb2RlIDog
cHVibGljIE5vZGUgewogICBwdWJsaWM6Ci0gICAgQXNzaWduQnJhY2tldE5vZGUoTm9kZSAqYmFz
ZSwgTm9kZSAqc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBOb2RlICpyaWdodCkgS0pTX0ZBU1Rf
Q0FMTAotICAgICAgOiBtX2Jhc2UoYmFzZSksIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCksIG1fb3Bl
cihvcGVyKSwgbV9yaWdodChyaWdodCkge30KKyAgICBBc3NpZ25CcmFja2V0Tm9kZShOb2RlICpi
YXNlLCBOb2RlICpzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIE5vZGUgKnJpZ2h0KSBLSlNfRkFT
VF9DQUxMIDoKKyAgICAgIG1fYmFzZShiYXNlKSwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KSwgbV9v
cGVyKG9wZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxOb2RlPiBtX2Jhc2U7CiAgICAgUmVmUHRyPE5vZGU+IG1fc3Vic2NyaXB0OwpAQCAt
NzQ3LDEwICs4NDMsMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgY2xhc3MgQXNzaWduRG90Tm9k
ZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIEFzc2lnbkRvdE5vZGUoTm9kZSAqYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIE5vZGUgKnJpZ2h0KSBL
SlNfRkFTVF9DQUxMCi0gICAgICA6IG1fYmFzZShiYXNlKSwgbV9pZGVudChpZGVudCksIG1fb3Bl
cihvcGVyKSwgbV9yaWdodChyaWdodCkge30KKyAgICBBc3NpZ25Eb3ROb2RlKE5vZGUgKmJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBOb2RlICpyaWdodCkgS0pT
X0ZBU1RfQ0FMTCA6CisgICAgICBtX2Jhc2UoYmFzZSksIG1faWRlbnQoaWRlbnQpLCBtX29wZXIo
b3BlciksIG1fcmlnaHQocmlnaHQpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6CiAgICAgUmVm
UHRyPE5vZGU+IG1fYmFzZTsKICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CkBAIC03NTgsMTUgKzg1
NSwxNSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBSZWZQdHI8Tm9kZT4gbV9yaWdodDsKICAgfTsK
IAotICBjbGFzcyBBc3NpZ25FcnJvck5vZGUgOiBwdWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAg
ICBBc3NpZ25FcnJvck5vZGUoTm9kZSogbGVmdCwgT3BlcmF0b3Igb3BlciwgTm9kZSogcmlnaHQp
IEtKU19GQVNUX0NBTEwKLSAgICAgIDogbV9sZWZ0KGxlZnQpLCBtX29wZXIob3BlciksIG1fcmln
aHQocmlnaHQpIHt9CisgIGNsYXNzIEFzc2lnbkVycm9yTm9kZSA6IHB1YmxpYyBOb2RlIHsgCisg
IHB1YmxpYzogCisgICAgQXNzaWduRXJyb3JOb2RlKE5vZGUqIGxlZnQsIE9wZXJhdG9yIG9wZXIs
IE5vZGUqIHJpZ2h0KSAgS0pTX0ZBU1RfQ0FMTCA6CisgICAgICBtX2xlZnQobGVmdCksIG1fb3Bl
cihvcGVyKSwgbV9yaWdodChyaWdodCkge30gCiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJvdGVjdGVkOgotICAgIFJlZlB0cjxOb2Rl
PiBtX2xlZnQ7Ci0gICAgT3BlcmF0b3IgbV9vcGVyOworICBwcm90ZWN0ZWQ6IAorICAgIFJlZlB0
cjxOb2RlPiBtX2xlZnQ7IAorICAgIE9wZXJhdG9yIG1fb3BlcjsgCiAgICAgUmVmUHRyPE5vZGU+
IG1fcmlnaHQ7CiAgIH07CiAKQEAgLTc3NSw2ICs4NzIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBDb21tYU5vZGUoTm9kZSAqZTEsIE5vZGUgKmUyKSBLSlNfRkFTVF9DQUxMIDogZXhwcjEoZTEp
LCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4
cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTc4NSw2ICs4ODMsOSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICBBc3NpZ25FeHByTm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhw
cihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikgS0pTX0ZBU1RfQ0FMTDsKKworICAgIE5vZGUqIGdldEV4cHIoKSBLSlNfRkFTVF9DQUxMIHsg
cmV0dXJuIGV4cHIuZ2V0KCk7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsK
ICAgfTsKQEAgLTc5NCw5ICs4OTUsMTIgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgZW51bSBUeXBl
IHsgVmFyaWFibGUsIENvbnN0YW50IH07CiAgICAgVmFyRGVjbE5vZGUoY29uc3QgSWRlbnRpZmll
ciAmaWQsIEFzc2lnbkV4cHJOb2RlICppbiwgVHlwZSB0KSBLSlNfRkFTVF9DQUxMOwogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2
b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNU
X0NBTEw7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2woRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVmFyU3RhdGVtZW50Tm9k
ZTsKICAgICBKU1ZhbHVlKiBoYW5kbGVTbG93Q2FzZShFeGVjU3RhdGUqLCBjb25zdCBTY29wZUNo
YWluJiwgSlNWYWx1ZSopIEtKU19GQVNUX0NBTEwgS0pTX05PX0lOTElORTsKICAgICBUeXBlIHZh
clR5cGU7CiAgICAgSWRlbnRpZmllciBpZGVudDsKQEAgLTgxMCwxMCArOTE0LDEwIEBAIG5hbWVz
cGFjZSBLSlMgewogICAgIFZhckRlY2xMaXN0Tm9kZShWYXJEZWNsTGlzdE5vZGUgKmwsIFZhckRl
Y2xOb2RlICp2KSBLSlNfRkFTVF9DQUxMCiAgICAgICA6IG5leHQobC0+bmV4dCksIHZhcih2KSB7
IGwtPm5leHQgPSB0aGlzOyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgUGFzc1JlZlB0cjxWYXJEZWNsTGlzdE5vZGU+IHJl
bGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGb3JOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBWYXJT
dGF0ZW1lbnROb2RlOwpAQCAtODI0LDE5ICs5MjgsMzcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIGNs
YXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgIHB1YmxpYzoK
ICAgICBWYXJTdGF0ZW1lbnROb2RlKFZhckRlY2xMaXN0Tm9kZSAqbCkgS0pTX0ZBU1RfQ0FMTCA6
IG5leHQobC0+bmV4dC5yZWxlYXNlKCkpIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUobmV4dC5n
ZXQoKSk7IH0KKyAgICB2aXJ0dWFsIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRl
ICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmly
dHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGlzVmFyU3RhdGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxWYXJEZWNsTGlzdE5vZGU+IG5l
eHQ7CiAgIH07CiAKKyAgLy8gQSB2ZXJzaW9uIG9mIFZhclN0YXRlbWVudE5vZGUgb3B0aW1pemVk
IGZvciBsb2NhbCBhY2Nlc3MgLS0tIGl0IHN0b3JlcyB0aGUgCisgIC8vIGluZGV4IGxvY2F0aW9u
cywgYW5kIGFjY2Vzc2VzIHRoZW0gZGlyZWN0bHkuCisgIGNsYXNzIFN0YXRpY1ZhclN0YXRlbWVu
dE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CisgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4
ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICBwcml2
YXRlOgorICAgIHN0cnVjdCBJbml0aWFsaXplciB7CisgICAgICBpbnQgbG9jYWxJRDsKKyAgICAg
IFJlZlB0cjxOb2RlPiBpbml0RXhwcjsKKyAgICB9OworICAgIFdURjo6VmVjdG9yPEluaXRpYWxp
emVyPiBpbml0aWFsaXplcnM7CisgICAgUmVmUHRyPFZhclN0YXRlbWVudE5vZGU+IG9yaWdpbmFs
U3RhdGVtZW50OworICAgIGZyaWVuZCBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlOworICB9OworCiAg
IGNsYXNzIEJsb2NrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgcHVibGljOgogICAg
IEJsb2NrTm9kZShTb3VyY2VFbGVtZW50c05vZGUgKnMpIEtKU19GQVNUX0NBTEw7CiAgICAgdmly
dHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikg
S0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxTb3VyY2VFbGVtZW50c05v
ZGU+IHNvdXJjZTsKICAgfTsKQEAgLTg1Myw2ICs5NzUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBFeHByU3RhdGVtZW50Tm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7IH0K
ICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAg
IH07CkBAIC04NjIsOCArOTg1LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgSWZOb2RlKE5vZGUg
KmUsIFN0YXRlbWVudE5vZGUgKnMxLCBTdGF0ZW1lbnROb2RlICpzMikgS0pTX0ZBU1RfQ0FMTAog
ICAgICAgOiBleHByKGUpLCBzdGF0ZW1lbnQxKHMxKSwgc3RhdGVtZW50MihzMikge30KICAgICB2
aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwogICAg
IFJlZlB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0ZW1lbnQxOwpAQCAtODc0LDggKzk5Nyw5IEBAIG5h
bWVzcGFjZSBLSlMgewogICBwdWJsaWM6CiAgICAgRG9XaGlsZU5vZGUoU3RhdGVtZW50Tm9kZSAq
cywgTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IHN0YXRlbWVudChzKSwgZXhwcihlKSB7fQogICAg
IHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0g
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGlzSXRlcmF0aW9uU3RhdGVtZW50
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAg
UmVmUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsK
QEAgLTg4NSw4ICsxMDA5LDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIHB1YmxpYzoKICAgICBXaGls
ZU5vZGUoTm9kZSAqZSwgU3RhdGVtZW50Tm9kZSAqcykgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSks
IHN0YXRlbWVudChzKSB7fQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29s
IGlzSXRlcmF0aW9uU3RhdGVtZW50KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVl
OyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPFN0YXRl
bWVudE5vZGU+IHN0YXRlbWVudDsKQEAgLTg5OSw4ICsxMDI0LDkgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgRm9yTm9kZShWYXJEZWNsTGlzdE5vZGUgKmUxLCBOb2RlICplMiwgTm9kZSAqZTMsIFN0
YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEwgOgogICAgICAgZXhwcjEoZTEtPm5leHQucmVs
ZWFzZSgpKSwgZXhwcjIoZTIpLCBleHByMyhlMyksIHN0YXRlbWVudChzKSB7IFBhcnNlcjo6cmVt
b3ZlTm9kZUN5Y2xlKGV4cHIxLmdldCgpKTsgfQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVj
dXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NW
YXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9p
ZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAg
dmlydHVhbCBib29sIGlzSXRlcmF0aW9uU3RhdGVtZW50KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwogICAg
IFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTkxMyw4ICsxMDM5LDkgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgRm9ySW5Ob2RlKE5vZGUgKmwsIE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMpIEtKU19G
QVNUX0NBTEw7CiAgICAgRm9ySW5Ob2RlKGNvbnN0IElkZW50aWZpZXIgJmksIEFzc2lnbkV4cHJO
b2RlICppbiwgTm9kZSAqZSwgU3RhdGVtZW50Tm9kZSAqcykgS0pTX0ZBU1RfQ0FMTDsKICAgICB2
aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIElk
ZW50aWZpZXIgaWRlbnQ7CiAgICAgUmVmUHRyPEFzc2lnbkV4cHJOb2RlPiBpbml0OwpAQCAtOTI2
LDIyICsxMDUzLDI4IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgIGNsYXNzIENvbnRpbnVlTm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgcHVibGljOgotICAgIENvbnRpbnVlTm9kZSgpIEtK
U19GQVNUX0NBTEwgeyB9Ci0gICAgQ29udGludWVOb2RlKGNvbnN0IElkZW50aWZpZXIgJmkpIEtK
U19GQVNUX0NBTEwgOiBpZGVudChpKSB7IH0KKyAgICBDb250aW51ZU5vZGUoKSBLSlNfRkFTVF9D
QUxMIDogdGFyZ2V0KDApIHsgfQorICAgIENvbnRpbnVlTm9kZShjb25zdCBJZGVudGlmaWVyICZp
KSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSksIHRhcmdldCgwKSB7IH0KICAgICB2aXJ0dWFsIENv
bXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICBwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCBOb2RlKiBjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIq
IHNlbWFudGljQ2hlY2tlcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBJZGVudGlm
aWVyIGlkZW50OworICAgIGNvbnN0IE5vZGUqIHRhcmdldDsKICAgfTsKIAogICBjbGFzcyBCcmVh
a05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgIHB1YmxpYzoKLSAgICBCcmVha05vZGUo
KSBLSlNfRkFTVF9DQUxMIHsgfQotICAgIEJyZWFrTm9kZShjb25zdCBJZGVudGlmaWVyICZpKSBL
SlNfRkFTVF9DQUxMIDogaWRlbnQoaSkgeyB9CisgICAgQnJlYWtOb2RlKCkgS0pTX0ZBU1RfQ0FM
TCA6IHRhcmdldCgwKSB7IH0KKyAgICBCcmVha05vZGUoY29uc3QgSWRlbnRpZmllciAmaSkgS0pT
X0ZBU1RfQ0FMTCA6IGlkZW50KGkpLCB0YXJnZXQoMCkgeyB9CiAgICAgdmlydHVhbCBDb21wbGV0
aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBzZW1h
bnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBp
ZGVudDsKKyAgICBjb25zdCBOb2RlKiB0YXJnZXQ7CiAgIH07CiAKICAgY2xhc3MgUmV0dXJuTm9k
ZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTk0OSwxNiArMTA4MiwxOSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICBSZXR1cm5Ob2RlKE5vZGUgKnYpIEtKU19GQVNUX0NBTEwgOiB2YWx1ZSh2
KSB7fQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAq
dmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gdmFs
dWU7CisgICAgY29uc3QgTm9kZSogdGFyZ2V0OwogICB9OwogCiAgIGNsYXNzIFdpdGhOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICBwdWJsaWM6CiAgICAgV2l0aE5vZGUoTm9kZSAqZSwg
U3RhdGVtZW50Tm9kZSAqcykgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIHN0YXRlbWVudChzKSB7
fQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGludHJvZHVjZXNOZXdE
eW5hbWljU2NvcGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KICAgcHJp
dmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4g
c3RhdGVtZW50OwpAQCAtOTY4LDggKzExMDQsMTAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIHB1Ymxp
YzoKICAgICBMYWJlbE5vZGUoY29uc3QgSWRlbnRpZmllciAmbCwgU3RhdGVtZW50Tm9kZSAqcykg
S0pTX0ZBU1RfQ0FMTCA6IGxhYmVsKGwpLCBzdGF0ZW1lbnQocykgeyB9CiAgICAgdmlydHVhbCBD
b21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Cisg
ICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZB
U1RfQ0FMTDsKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRpY3Mo
U2VtYW50aWNDaGVja2VyKiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZh
dGU6CiAgICAgSWRlbnRpZmllciBsYWJlbDsKICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gc3Rh
dGVtZW50OwpAQCAtOTgwLDYgKzExMTgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBUaHJvd05v
ZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICB2aXJ0dWFsIENvbXBs
ZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC05ODksOCArMTEy
OCwxMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBUcnlOb2RlKFN0YXRlbWVudE5vZGUgKmIsIGNv
bnN0IElkZW50aWZpZXIgJmUsIFN0YXRlbWVudE5vZGUgKmMsIFN0YXRlbWVudE5vZGUgKmYpIEtK
U19GQVNUX0NBTEwKICAgICAgIDogdHJ5QmxvY2soYiksIGV4Y2VwdGlvbklkZW50KGUpLCBjYXRj
aEJsb2NrKGMpLCBmaW5hbGx5QmxvY2soZikgeyB9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4
ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2
b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKKwor
ICAgIHZvaWQgcmVjdXJzZVZpc2l0Tm9uQ2F0Y2goTm9kZVZpc2l0b3IgKnZpc2l0b3IpOworICAg
IHZpcnR1YWwgYm9vbCBpc1RyeU5vZGUoKSAgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0
cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IHRyeUJsb2NrOwog
ICAgIElkZW50aWZpZXIgZXhjZXB0aW9uSWRlbnQ7CkBAIC0xMDA1LDExICsxMTQ3LDEzIEBAIG5h
bWVzcGFjZSBLSlMgewogICAgIFBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSAqbmV4dCwgY29u
c3QgSWRlbnRpZmllciAmaSkgS0pTX0ZBU1RfQ0FMTAogICAgICAgOiBpZChpKSwgbmV4dChuZXh0
LT5uZXh0KSB7IG5leHQtPm5leHQgPSB0aGlzOyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICBJZGVudGlmaWVyIGlkZW50KCkgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBpZDsgfQotICAgIFBhcmFtZXRlck5vZGUgKm5leHRQYXJhbSgpIEtKU19G
QVNUX0NBTEwgeyByZXR1cm4gbmV4dC5nZXQoKTsgfQorICAgIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBpZDsgfQorICAgIFBhcmFtZXRlck5vZGUgKm5l
eHRQYXJhbSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbmV4dC5nZXQoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OwogICAgIFBhc3NSZWZQdHI8UGFyYW1ldGVyTm9kZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFTVF9D
QUxMIHsgcmV0dXJuIG5leHQucmVsZWFzZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3lj
bGUoKSBLSlNfRkFTVF9DQUxMOworCisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2Rl
VmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRnVuY0RlY2xOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBGdW5jRXhwck5vZGU7CkBAIC0x
MDI1LDIyICsxMTY5LDc4IEBAIG5hbWVzcGFjZSBLSlMgewogICB9OwogCiAgIC8vIGluaGVyaXRl
ZCBieSBQcm9ncmFtTm9kZQorCisgIC8qKgorICAgVGhpcyBBU1Qgbm9kZSBjb3JyZXNwb25kcyB0
byB0aGUgZnVuY3Rpb24gYm9keSBpbiB0aGUgQVNULCBidXQgaXMgdXNlZCB0byAKKyAgIGtlZXAg
dHJhY2sgb2YgbXVjaCBvZiB0aGUgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gdGhlIHdob2xlIGZ1
bmN0aW9uLAorICAgc3VjaCBhcyBwYXJhbWV0ZXIgbmFtZXMgYW5kIHN5bWJvbCB0YWJsZXMuIFRo
aXMgaXMgYmVjYXVzZSB0aGVyZSBhcmUgYm90aCBmdW5jdGlvbiAKKyAgIGRlY2xhcmF0aW9ucyBh
bmQgZXhwcmVzc2lvbnMsIHNvIHRoZXJlIGlzIG5vIG5hdHVyYWwgc2luZ2xlIHBsYWNlIHRvIHB1
dCB0aGlzIHN0dWZmIAorICAgYWJvdmUgdGhlIGJvZHkKKyAgKi8KICAgY2xhc3MgRnVuY3Rpb25C
b2R5Tm9kZSA6IHB1YmxpYyBCbG9ja05vZGUgeworICBwcml2YXRlOgorICAgIHN0cnVjdCBTeW1i
b2wgeworICAgICAgU3ltYm9sKGNvbnN0IElkZW50aWZpZXImIF9uYW1lLCBpbnQgX2F0dHIsIEZ1
bmNEZWNsTm9kZSogX2Z1bmNEZWNsKSA6IG5hbWUoX25hbWUpLCBmdW5jRGVjbChfZnVuY0RlY2wp
LCBhdHRyKF9hdHRyKSB7fQorICAgICAgU3ltYm9sKCkge30KKyAgICAgIElkZW50aWZpZXIgICAg
bmFtZTsKKyAgICAgIEZ1bmNEZWNsTm9kZSogZnVuY0RlY2w7CisgICAgICBpbnQgICAgICAgICAg
IGF0dHI7CisgICAgfTsKKworICAgIHN0cnVjdCBQYXJhbWV0ZXIgeworICAgICAgUGFyYW1ldGVy
KCkge30KKyAgICAgIFBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyICZuLCBpbnQgaWQpIDogbmFt
ZShuKSwgc3ltYm9sSUQoaWQpIHsgfQorICAgICAgSWRlbnRpZmllciBuYW1lOworICAgICAgaW50
ICAgICAgICBzeW1ib2xJRDsKKyAgICB9OwogICBwdWJsaWM6CiAgICAgRnVuY3Rpb25Cb2R5Tm9k
ZShTb3VyY2VFbGVtZW50c05vZGUgKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgaW50IHNvdXJj
ZUlkKCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3NvdXJjZUlkOyB9CiAgICAgY29uc3QgVVN0
cmluZyYgc291cmNlVVJMKCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfQor
IAorICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAvLyBTeW1ib2wgdGFibGUgZnVuY3Rpb25zCisgICAg
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworICAgIGJvb2wgYnVpbHRTeW1ib2xMaXN0KCkgICAgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBtX2J1aWx0U3ltYm9sTGlzdDsgfQorICAgIHZvaWQgc2V0QnVpbHRT
eW1ib2xMaXN0KCkgICAgICAgS0pTX0ZBU1RfQ0FMTCB7IG1fYnVpbHRTeW1ib2xMaXN0ID0gdHJ1
ZTsgfQorICAgIGludCAgbnVtTG9jYWxzKCkgICAgICAgICAgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBtX3N5bWJvbExpc3Quc2l6ZSgpOyB9CisgICAgaW50ICBnZXRMb2NhbEF0dHIoaW50
IGlkKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1fc3ltYm9sTGlzdFtpZC0xXS5hdHRy
OyB9CisgICAgRnVuY0RlY2xOb2RlKiBnZXRMb2NhbEZ1bmNEZWNsKGludCBpZCkgY29uc3QgS0pT
X0ZBU1RfQ0FMTCB7IHJldHVybiBtX3N5bWJvbExpc3RbaWQtMV0uZnVuY0RlY2w7IH0KKyAgICAK
KyAgICAvL1JldHVybnMgLTEgaWYgbm90IGZvdW5kLi4KKyAgICBpbnQgIGxvb2t1cFN5bWJvbElE
KGNvbnN0IElkZW50aWZpZXIgJmlkZW50KSBjb25zdCBLSlNfRkFTVF9DQUxMOwogCi0gICAgdm9p
ZCBhZGRQYXJhbShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICBz
aXplX3QgbnVtUGFyYW1zKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3BhcmFtZXRl
cnMuc2l6ZSgpOyB9Ci0gICAgSWRlbnRpZmllciBwYXJhbU5hbWUoc2l6ZV90IHBvcykgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3BhcmFtZXRlcnNbcG9zXS5uYW1lOyB9Ci0gICAgVVN0
cmluZyBwYXJhbVN0cmluZygpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gICAgVmVjdG9yPFBhcmFt
ZXRlcj4mIHBhcmFtZXRlcnMoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsg
fQorICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAvLyBQYXJhbWV0ZXIgYXJyYXkgZnVuY3Rpb25zCisg
ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLworICAgIHZvaWQgYWRkUGFyYW0oY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpIEtKU19GQVNUX0NBTEw7IC8vQWxzbyBjcmVhdGVzIHRoZSBzeW1ib2wgZm9yIHRoZQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3BhcmFtZXRlciwgY2Fs
ZWQgb24gY3JlYXRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy90aGUgZW5jbG9zaW5nIGV4cHIgb3IgZGVjbAorCisgICAgdm9pZCBhZGRWYXJEZWNsKGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgYXR0ciwgRXhlY1N0YXRlKiBleGVjKSBLSlNfRkFT
VF9DQUxMOworICAgIHZvaWQgYWRkRnVuY0RlY2woY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGlu
dCBhdHRyLCBGdW5jRGVjbE5vZGUqIGZ1bmNEZWNsKSBLSlNfRkFTVF9DQUxMOworCisgICAgaW50
IG51bVBhcmFtcygpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbUxpc3Quc2l6
ZSgpOyB9CisgICAgaW50IHBhcmFtU3ltYm9sSUQoaW50IHBvcykgY29uc3QgS0pTX0ZBU1RfQ0FM
TCB7IHJldHVybiBtX3BhcmFtTGlzdFtwb3NdLnN5bWJvbElEOyB9CisgICAgY29uc3QgSWRlbnRp
ZmllciYgcGFyYW1OYW1lKGludCBwb3MpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9w
YXJhbUxpc3RbcG9zXS5uYW1lOyB9CisgICAgVVN0cmluZyAgICBwYXJhbVN0cmluZygpIGNvbnN0
IEtKU19GQVNUX0NBTEw7ICAgCiAgIHByaXZhdGU6CiAgICAgVVN0cmluZyBtX3NvdXJjZVVSTDsK
LSAgICBpbnQgbV9zb3VyY2VJZDsKLSAgICBWZWN0b3I8UGFyYW1ldGVyPiBtX3BhcmFtZXRlcnM7
CisgICAgaW50IG1fc291cmNlSWQgOiAzMTsKKyAgICBib29sIG1fYnVpbHRTeW1ib2xMaXN0IDog
MTsKKworICAgIGludCBhZGRTeW1ib2woY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBhdHRy
LCBGdW5jRGVjbE5vZGUqIGZ1bmNEZWNsID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKworICAgIC8vIE5v
dGU6IHRoZSBjb252ZW50aW9uIGhlcmUgaXMgdGhhdCB0aGUgcG9zaXRpb24gMAorICAgIC8vIGlz
IHRoZSBpbmRleCAxLCBwb3NpdGlvbiAxIGlzIHRoZSBpbmRleCAyLCBldGMuCisgICAgV1RGOjpW
ZWN0b3I8U3ltYm9sPiBtX3N5bWJvbExpc3Q7CisgICAgCisgICAgLy8gVGhpcyBpcyB0aGUgbWFw
IG9mIHRoZSBhYm92ZSwgdGhlIGpzVmFsdWVzIGFyZSB0aGUgSURzLgorICAgIC8vICMjIyB1Z2gu
IExhenktbGF6eS1sYXp5LiBCdXQgdGhpcyB3b3JrcywgdG9vLgorICAgIFByb3BlcnR5TWFwIG1f
c3ltYm9sVGFibGU7CisKKyAgICAvLyBUaGUgbGlzdCBvZiBwYXJhbWV0ZXJzLCBhbmQgdGhlaXIg
bG9jYWwgSURzIGluIHRoZQorICAgIFdURjo6VmVjdG9yPFBhcmFtZXRlcj4gbV9wYXJhbUxpc3Q7
CiAgIH07CiAKICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVibGljIE5vZGUgewpAQCAtMTA0OSw2
ICsxMjQ5LDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgOiBpZGVudChpKSwgcGFyYW0ocCA/
IHAtPm5leHQucmVsZWFzZSgpIDogMCksIGJvZHkoYikgeyBpZiAocCkgeyBQYXJzZXI6OnJlbW92
ZU5vZGVDeWNsZShwYXJhbS5nZXQoKSk7IH0gYWRkUGFyYW1zKCk7IH0KICAgICB2aXJ0dWFsIEpT
VmFsdWUgKmV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIGJvb2wgaW50cm9kdWNlc05ld1N0YXRpY1Njb3BlKCkgY29uc3QgS0pT
X0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIE5v
ZGUqIGNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2VyKSBLSlNf
RkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIHZvaWQgYWRkUGFyYW1zKCkgS0pTX0ZBU1RfQ0FM
TDsKICAgICAvLyBVc2VkIGZvciBzdHJlYW1UbwpAQCAtMTA2NSw4ICsxMjY5LDE0IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgIEZ1bmNEZWNsTm9kZShjb25zdCBJZGVudGlmaWVyICZpLCBQYXJhbWV0
ZXJOb2RlICpwLCBGdW5jdGlvbkJvZHlOb2RlICpiKSBLSlNfRkFTVF9DQUxMCiAgICAgICA6IGlk
ZW50KGkpLCBwYXJhbShwLT5uZXh0LnJlbGVhc2UoKSksIGJvZHkoYikgeyBQYXJzZXI6OnJlbW92
ZU5vZGVDeWNsZShwYXJhbS5nZXQoKSk7IGFkZFBhcmFtcygpOyB9CiAgICAgdmlydHVhbCBDb21w
bGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAg
dmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIGJvb2wgaW50cm9kdWNlc05ld1N0YXRpY1Njb3BlKCkgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisgICAgRnVuY3Rpb25JbXAqIG1h
a2VGdW5jdGlvbk9iamVjdChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOworICBwcm90ZWN0ZWQ6
CisgICAgdmlydHVhbCBOb2RlKiBjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIHNlbWFu
dGljQ2hlY2tlcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFBhcmFt
cygpIEtKU19GQVNUX0NBTEw7CiAgICAgSWRlbnRpZmllciBpZGVudDsKQEAgLTEwODMsMTEgKzEy
OTMsMTAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgU291cmNlRWxlbWVudHNOb2RlKFNvdXJjZUVs
ZW1lbnRzTm9kZSAqczEsIFN0YXRlbWVudE5vZGUgKnMyKSBLSlNfRkFTVF9DQUxMOwogICAgIAog
ICAgIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZv
aWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVh
bCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwog
ICAgIFBhc3NSZWZQdHI8U291cmNlRWxlbWVudHNOb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gbmV4dC5yZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtD
eWNsZSgpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2Rl
VmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgQmxvY2tOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBDYXNlQ2xhdXNlTm9kZTsKQEAgLTEx
MDIsOSArMTMxMSw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgOiBleHByKGUpLCBzb3VyY2Uo
cy0+bmV4dC5yZWxlYXNlKCkpIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUoc291cmNlLmdldCgp
KTsgfQogICAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICAgIENvbXBsZXRpb24gZXZhbFN0YXRlbWVudHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKLSAgICAgIHZvaWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
Ci0gICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgICBSZWZQdHI8Tm9k
ZT4gZXhwcjsKICAgICAgIFJlZlB0cjxTb3VyY2VFbGVtZW50c05vZGU+IHNvdXJjZTsKQEAgLTEx
MTksMTEgKzEzMjcsMTAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBKU1ZhbHVlKiBldmFsdWF0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgQ2FzZUNsYXVzZU5vZGUgKmdldENs
YXVzZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gY2xhdXNlLmdldCgpOyB9CiAgICAg
ICBDbGF1c2VMaXN0Tm9kZSAqZ2V0TmV4dCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
bmV4dC5nZXQoKTsgfQotICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwotICAgICAgdm9pZCBwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgICAgUGFzc1JlZlB0cjxDbGF1c2VMaXN0Tm9k
ZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQucmVsZWFzZSgpOyB9
CiAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNUX0NBTEw7CisgICAgICB2
aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9D
QUxMOwogICBwcml2YXRlOgogICAgICAgZnJpZW5kIGNsYXNzIENhc2VCbG9ja05vZGU7CiAgICAg
ICBSZWZQdHI8Q2FzZUNsYXVzZU5vZGU+IGNsYXVzZTsKQEAgLTExMzUsOSArMTM0Miw4IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgQ2FzZUJsb2NrTm9kZShDbGF1c2VMaXN0Tm9kZSAqbDEsIENh
c2VDbGF1c2VOb2RlICpkLCBDbGF1c2VMaXN0Tm9kZSAqbDIpIEtKU19GQVNUX0NBTEw7CiAgICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgQ29t
cGxldGlvbiBldmFsQmxvY2soRXhlY1N0YXRlICpleGVjLCBKU1ZhbHVlICppbnB1dCkgS0pTX0ZB
U1RfQ0FMTDsKLSAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKLSAgICAgIHZvaWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgICBSZWZQ
dHI8Q2xhdXNlTGlzdE5vZGU+IGxpc3QxOwogICAgICAgUmVmUHRyPENhc2VDbGF1c2VOb2RlPiBk
ZWY7CkBAIC0xMTQ4LDkgKzEzNTQsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgogICAg
ICAgU3dpdGNoTm9kZShOb2RlICplLCBDYXNlQmxvY2tOb2RlICpiKSBLSlNfRkFTVF9DQUxMIDog
ZXhwcihlKSwgYmxvY2soYikgeyB9CiAgICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJE
ZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OworICAgICAgdmlydHVhbCBib29sIGlzU3dpdGNoU3RhdGVtZW50KCkgY29uc3QgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgICBSZWZQdHI8Tm9kZT4gZXhw
cjsKICAgICAgIFJlZlB0cjxDYXNlQmxvY2tOb2RlPiBibG9jazsKQEAgLTExNjEsNiArMTM2Nywy
NiBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQcm9ncmFtTm9kZShTb3VyY2VFbGVtZW50c05vZGUg
KnMpIEtKU19GQVNUX0NBTEw7CiAgIH07CiAKKyAgLyoqCisgICBUaGlzIG5vZGUgcmVwcmVzZW50
cyBzdGF0aWNhbGx5IGRldGVjdGFibGUgZXJyb3JzIHRoYXQgbXVzdCBiZSByZXBvcnRlZAorICAg
YXQgcnVudGltZS4gVGhlIHNlbWFudGljIGNoZWNrZXIgc3BsaWNlcyBpdCBpbiBhYm92ZSB0aGUg
b3JpZ2luYWwgbm9kZQorICAgaW4gdGhlIHByb2dyYW0sIGFuZCBpdCBkb2VzIHRoZSBlcnJvciBy
ZXBvcnRpbmc7IHRoZSBjaGlsZCBub2RlIGlzCisgICB1c2VkIGZvciB0ZXh0IHNlcmlhbGl6YXRp
b24uCisKKyAgIE5vdGU6IHdlIGRvIG5vdCB2aXNpdCBraWRzIG9mIHRoaXMgbm9kZSBpbiB0aGUg
dmlzaXRvciBpbnRlcmZhY2UsCisgICBzaW5jZSB0aGV5IGRvIG5vdCBydW4sIGFueXdheQorICAq
LworICBjbGFzcyBFcnJvck5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CisgIHB1YmxpYzoK
KyAgICBFcnJvck5vZGUoTm9kZSogaywgRXJyb3JUeXBlIGUsIGNvbnN0IFVTdHJpbmcmIG0pIEtK
U19GQVNUX0NBTEwgOgorICAgICAgICBraWQoayksIGVycm9yVHlwZShlKSwgbWVzc2FnZShtKSB7
fQorICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisgIHByaXZhdGU6CisgICAgUmVmUHRyPE5vZGU+IGtpZDsKKyAgICBFcnJvclR5
cGUgICAgZXJyb3JUeXBlOworICAgIFVTdHJpbmcgICAgICBtZXNzYWdlOworICB9OwogfSAvLyBu
YW1lc3BhY2UKIAogI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcAkocmV2aXNpb24gMjQ1
NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUzLDkgKzE1Myw4IEBAIGNvbnN0IENsYXNzSW5mbyAqSlNPYmplY3Q6OmNsYXNzSW5mbygpIGMK
IFVTdHJpbmcgSlNPYmplY3Q6OmNsYXNzTmFtZSgpIGNvbnN0CiB7CiAgIGNvbnN0IENsYXNzSW5m
byAqY2kgPSBjbGFzc0luZm8oKTsKLSAgaWYgKCBjaSApCi0gICAgcmV0dXJuIGNpLT5jbGFzc05h
bWU7Ci0gIHJldHVybiAiT2JqZWN0IjsKKworICByZXR1cm4gY2kgPyBjaS0+Y2xhc3NOYW1lIDog
Ik9iamVjdCI7CiB9CiAKIEpTVmFsdWUgKkpTT2JqZWN0OjpnZXQoRXhlY1N0YXRlICpleGVjLCBj
b25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUpIGNvbnN0CkBAIC0zNjMsMjEgKzM2MiwyMSBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlICp0cnlHZXRBbmRDCiAvLyBFQ01BIDguNi4y
LjYKIEpTVmFsdWUqIEpTT2JqZWN0OjpkZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1R5
cGUgaGludCkgY29uc3QKIHsKLSAgSWRlbnRpZmllciBmaXJzdFByb3BlcnR5TmFtZTsKLSAgSWRl
bnRpZmllciBzZWNvbmRQcm9wZXJ0eU5hbWU7CisgIGNvbnN0IElkZW50aWZpZXIqIGZpcnN0UHJv
cGVydHlOYW1lOworICBjb25zdCBJZGVudGlmaWVyKiBzZWNvbmRQcm9wZXJ0eU5hbWU7CiAgIC8q
IFByZWZlciBTdHJpbmcgZm9yIERhdGUgb2JqZWN0cyAqLwogICBpZiAoKGhpbnQgPT0gU3RyaW5n
VHlwZSkgfHwgKGhpbnQgIT0gU3RyaW5nVHlwZSkgJiYgKGhpbnQgIT0gTnVtYmVyVHlwZSkgJiYg
KF9wcm90byA9PSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbkRhdGVQcm90b3R5
cGUoKSkpIHsKLSAgICBmaXJzdFByb3BlcnR5TmFtZSA9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50
b1N0cmluZzsKLSAgICBzZWNvbmRQcm9wZXJ0eU5hbWUgPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
dmFsdWVPZjsKKyAgICBmaXJzdFByb3BlcnR5TmFtZSA9ICZleGVjLT5wcm9wZXJ0eU5hbWVzKCku
dG9TdHJpbmc7CisgICAgc2Vjb25kUHJvcGVydHlOYW1lID0gJmV4ZWMtPnByb3BlcnR5TmFtZXMo
KS52YWx1ZU9mOwogICB9IGVsc2UgewotICAgIGZpcnN0UHJvcGVydHlOYW1lID0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLnZhbHVlT2Y7Ci0gICAgc2Vjb25kUHJvcGVydHlOYW1lID0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRvU3RyaW5nOworICAgIGZpcnN0UHJvcGVydHlOYW1lID0gJmV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS52YWx1ZU9mOworICAgIHNlY29uZFByb3BlcnR5TmFtZSA9ICZleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudG9TdHJpbmc7CiAgIH0KIAogICBKU1ZhbHVlICp2OwotICBpZiAoKHYg
PSB0cnlHZXRBbmRDYWxsUHJvcGVydHkoZXhlYywgdGhpcywgZmlyc3RQcm9wZXJ0eU5hbWUpKSkK
KyAgaWYgKCh2ID0gdHJ5R2V0QW5kQ2FsbFByb3BlcnR5KGV4ZWMsIHRoaXMsICpmaXJzdFByb3Bl
cnR5TmFtZSkpKQogICAgIHJldHVybiB2OwotICBpZiAoKHYgPSB0cnlHZXRBbmRDYWxsUHJvcGVy
dHkoZXhlYywgdGhpcywgc2Vjb25kUHJvcGVydHlOYW1lKSkpCisgIGlmICgodiA9IHRyeUdldEFu
ZENhbGxQcm9wZXJ0eShleGVjLCB0aGlzLCAqc2Vjb25kUHJvcGVydHlOYW1lKSkpCiAgICAgcmV0
dXJuIHY7CiAKICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNTk0LDI4ICs1OTMsMjkg
QEAgY29uc3QgY2hhciAqIGNvbnN0ICogY29uc3QgRXJyb3I6OmVycm9yTgogSlNPYmplY3QgKkVy
cm9yOjpjcmVhdGUoRXhlY1N0YXRlICpleGVjLCBFcnJvclR5cGUgZXJydHlwZSwgY29uc3QgVVN0
cmluZyAmbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQg
c291cmNlSWQsIGNvbnN0IFVTdHJpbmcgJnNvdXJjZVVSTCkKIHsKKyAgSW50ZXJwcmV0ZXIqIGlu
dGVycCA9IGV4ZWMtPmxleGljYWxJbnRlcnByZXRlcigpOwogICBKU09iamVjdCAqY29uczsKICAg
c3dpdGNoIChlcnJ0eXBlKSB7CiAgIGNhc2UgRXZhbEVycm9yOgotICAgIGNvbnMgPSBleGVjLT5s
ZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbkV2YWxFcnJvcigpOworICAgIGNvbnMgPSBpbnRl
cnAtPmJ1aWx0aW5FdmFsRXJyb3IoKTsKICAgICBicmVhazsKICAgY2FzZSBSYW5nZUVycm9yOgot
ICAgIGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpblJhbmdlRXJyb3Io
KTsKKyAgICBjb25zID0gaW50ZXJwLT5idWlsdGluUmFuZ2VFcnJvcigpOwogICAgIGJyZWFrOwog
ICBjYXNlIFJlZmVyZW5jZUVycm9yOgotICAgIGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0
ZXIoKS0+YnVpbHRpblJlZmVyZW5jZUVycm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRp
blJlZmVyZW5jZUVycm9yKCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgU3ludGF4RXJyb3I6Ci0gICAg
Y29ucyA9IGV4ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluU3ludGF4RXJyb3IoKTsK
KyAgICBjb25zID0gaW50ZXJwLT5idWlsdGluU3ludGF4RXJyb3IoKTsKICAgICBicmVhazsKICAg
Y2FzZSBUeXBlRXJyb3I6Ci0gICAgY29ucyA9IGV4ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5i
dWlsdGluVHlwZUVycm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpblR5cGVFcnJvcigp
OwogICAgIGJyZWFrOwogICBjYXNlIFVSSUVycm9yOgotICAgIGNvbnMgPSBleGVjLT5sZXhpY2Fs
SW50ZXJwcmV0ZXIoKS0+YnVpbHRpblVSSUVycm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVp
bHRpblVSSUVycm9yKCk7CiAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6Ci0gICAgY29ucyA9IGV4ZWMt
PmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluRXJyb3IoKTsKKyAgICBjb25zID0gaW50ZXJw
LT5idWlsdGluRXJyb3IoKTsKICAgICBicmVhazsKICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9ranMvb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5o
CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMjQgKzgwLDI5IEBAIG5hbWVzcGFjZSBLSlMgewogICBwdWJsaWM6CiAg
ICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBHZXR0ZXJTZXR0ZXJUeXBlOyB9CiAgICAg
ICAKLSAgICBHZXR0ZXJTZXR0ZXJJbXAoKSA6IGdldHRlcigwKSwgc2V0dGVyKDApIHsgfQorICAg
IEdldHRlclNldHRlckltcCgpIDogZ2V0dGVyKDApLCBzZXR0ZXIoMCksIG1fbG9jYWxJbmplY3Rl
ZChmYWxzZSkgeyB9CiAgICAgICAKICAgICB2aXJ0dWFsIEpTVmFsdWUgKnRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSAqZXhlYywgSlNUeXBlIHByZWZlcnJlZCA9IFVuc3BlY2lmaWVkVHlwZSkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAg
IHZpcnR1YWwgZG91YmxlIHRvTnVtYmVyKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CiAgICAgdmly
dHVhbCBVU3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7CiAgICAgdmlydHVh
bCBKU09iamVjdCAqdG9PYmplY3QoRXhlY1N0YXRlICpleGVjKSBjb25zdDsKLSAgICAgIAorCiAg
ICAgdmlydHVhbCB2b2lkIG1hcmsoKTsKICAgICAgIAogICAgIEpTT2JqZWN0ICpnZXRHZXR0ZXIo
KSB7IHJldHVybiBnZXR0ZXI7IH0KICAgICB2b2lkIHNldEdldHRlcihKU09iamVjdCAqZykgeyBn
ZXR0ZXIgPSBnOyB9CiAgICAgSlNPYmplY3QgKmdldFNldHRlcigpIHsgcmV0dXJuIHNldHRlcjsg
fQogICAgIHZvaWQgc2V0U2V0dGVyKEpTT2JqZWN0ICpzKSB7IHNldHRlciA9IHM7IH0KLSAgICAg
IAorCisgICAgYm9vbCBpc0xvY2FsSW5qZWN0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsSW5q
ZWN0ZWQ7IH0KKyAgICB2b2lkIHNldExvY2FsSW5qZWN0ZWQoKSB7IG1fbG9jYWxJbmplY3RlZCA9
IHRydWU7IH0KICAgcHJpdmF0ZToKICAgICBKU09iamVjdCAqZ2V0dGVyOwotICAgIEpTT2JqZWN0
ICpzZXR0ZXI7ICAKKyAgICBKU09iamVjdCAqc2V0dGVyOyAKKworICAgIGJvb2wgbV9sb2NhbElu
amVjdGVkIDogMTsgLy8gVXNlZCB3aGVuIHRoaXMgb2JqZWN0IGlzIHRoZSBhY3RpdmUgc2NvcGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBkZW5vdGUgZHluYW1pYyBhZGRp
dGlvbiBvZiBsb2NhbCB2YXJpYWJsZXMKICAgfTsKICAgCiAgIGNsYXNzIEpTT2JqZWN0IDogcHVi
bGljIEpTQ2VsbCB7CkBAIC00MzIsNyArNDM3LDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEpT
VmFsdWUgKmdldERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAg
ICAgICAgIHsgcmV0dXJuIF9wcm9wLmdldChwcm9wZXJ0eU5hbWUpOyB9CiAgICAgSlNWYWx1ZSAq
KmdldERpcmVjdExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKLSAgICAg
ICAgeyByZXR1cm4gX3Byb3AuZ2V0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsgfQorICAgICAgICB7
IGJvb2wgZHVtbXk7IHJldHVybiBfcHJvcC5nZXRMb2NhdGlvbihwcm9wZXJ0eU5hbWUsIGR1bW15
KTsgfQorICAgIEpTVmFsdWUgKipnZXREaXJlY3RMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIGJvb2wmIHJvKQorICAgICAgICB7IHJldHVybiBfcHJvcC5nZXRMb2NhdGlv
bihwcm9wZXJ0eU5hbWUsIHJvKTsgfQorCiAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRlbnRp
ZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIgPSAwKTsKICAgICB2
b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUsIGludCB2YWx1ZSwg
aW50IGF0dHIgPSAwKTsKIApAQCAtNDU0LDcgKzQ2MiwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICB2b2lkIHNhdmVQcm9wZXJ0aWVzKFNhdmVkUHJvcGVydGllcyAmcCkgY29uc3QgeyBfcHJvcC5z
YXZlKHApOyB9CiAgICAgdm9pZCByZXN0b3JlUHJvcGVydGllcyhjb25zdCBTYXZlZFByb3BlcnRp
ZXMgJnApIHsgX3Byb3AucmVzdG9yZShwKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzQWN0aXZh
dGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGlzTG9jYWxJbmplY3RlZCgpIGNv
bnN0IHsgcmV0dXJuIF9wcm9wLmlzTG9jYWxJbmplY3RlZCgpOyB9CisgICAgdm9pZCBzZXRMb2Nh
bEluamVjdGVkKCkgeyBfcHJvcC5zZXRMb2NhbEluamVjdGVkKCk7IH0KICAgcHJvdGVjdGVkOgog
ICAgIFByb3BlcnR5TWFwIF9wcm9wOwogICBwcml2YXRlOgpAQCAtNTUwLDYgKzU2MSw3IEBAIGlu
bGluZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KGNvbnN0IENsYXMKIGlubGluZSBib29sIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCAqb2JqZWN0
ID0gdGhpczsKKyAgICBzbG90LnNldFBvdGVudGlhbGx5V3JpdGVhYmxlKCk7CiAgICAgd2hpbGUg
KHRydWUpIHsKICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1OCw2ICs1
NzAsOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4CiAgICAgICAg
IGlmICghcHJvdG8tPmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICAgICAgc2xvdC5zZXRSZWFkT25seSgpOworCiAgICAgICAgIG9iamVjdCA9IHN0YXRpY19jYXN0
PEpTT2JqZWN0ICo+KHByb3RvKTsKICAgICB9CiB9CkBAIC01NjUsMjYgKzU3OSwyNiBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4CiAvLyBJdCBtYXkgc2VlbSBjcmF6
eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlLCBlc3BlY2lhbGx5IGEgdmlydHVhbCBm
dW5jdGlvbiwKIC8vIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlIHRvIHByb3BlcnR5IGxv
b2t1cCB0aGF0IGRlcml2ZWQgY2xhc3NlcyBjYW4gaW5saW5lIHRoZWlyCiAvLyBiYXNlIGNsYXNz
IGNhbGwgdG8gdGhpcy4KLUFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blBy
b3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChKU1ZhbHVlICoqbG9jYXRpb24gPSBn
ZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpKSB7CisgICAgYm9vbCBybzsKKyAgICBpZiAo
SlNWYWx1ZSAqKmxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lLCBybykp
IHsKICAgICAgICAgaWYgKF9wcm9wLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2Nh
dGlvblswXS0+dHlwZSgpID09IEdldHRlclNldHRlclR5cGUpCiAgICAgICAgICAgICBmaWxsR2V0
dGVyUHJvcGVydHlTbG90KHNsb3QsIGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhpcywgbG9jYXRpb24pOworICAgICAgICAgICAgc2xvdC5z
ZXRWYWx1ZVNsb3QodGhpcywgbG9jYXRpb24sIHJvKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgLy8gbm9uLXN0YW5kYXJkIE5ldHNjYXBlIGV4dGVuc2lvbgogICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90bykgewot
ICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCAmX3Byb3RvKTsKKyAgICAgICAgc2xvdC5z
ZXRWYWx1ZVNsb3QodGhpcywgJl9wcm90bywgUHJvcGVydHlTbG90OjpQZXJtaXREaXJlY3RXcml0
ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotCiAvLyBGSVhNRTogUHV0IHRoaXMgZnVuY3Rpb24gaW4gYSBzZXBhcmF0ZSBmaWxlIG5hbWVk
IHNvbWV0aGluZyBsaWtlIHNjb3BlX2NoYWluX21hcmsuaCAtLSBjYW4ndCBwdXQgaXQgaW4gc2Nv
cGVfY2hhaW4uaCBzaW5jZSBpdCBkZXBlbmRzIG9uIEpTT2JqZWN0LgogCiBpbmxpbmUgdm9pZCBT
Y29wZUNoYWluOjptYXJrKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9tYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9tYXAuY3BwCShy
ZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9tYXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgSlNWYWx1ZSAqUHJvcGVydHlNYXA6Omdl
dChjb25zdCBJZGVudGlmaQogICAgIHJldHVybiAwOwogfQogCi1KU1ZhbHVlICoqUHJvcGVydHlN
YXA6OmdldExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUpCitKU1ZhbHVlICoqUHJvcGVy
dHlNYXA6OmdldExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUsIGJvb2wmIHJlYWRPbmx5
KQogewogICAgIGFzc2VydCghbmFtZS5pc051bGwoKSk7CiAgICAgCkBAIC0yNDQsOCArMjQ0LDEw
IEBAIEpTVmFsdWUgKipQcm9wZXJ0eU1hcDo6Z2V0TG9jYXRpb24oY29uc3QKICAgICBpZiAoIW1f
dXNpbmdUYWJsZSkgewogI2lmIFVTRV9TSU5HTEVfRU5UUlkKICAgICAgICAgVVN0cmluZzo6UmVw
ICprZXkgPSBtX3NpbmdsZUVudHJ5S2V5OwotICAgICAgICBpZiAocmVwID09IGtleSkKKyAgICAg
ICAgaWYgKHJlcCA9PSBrZXkpIHsKKyAgICAgICAgICAgIHJlYWRPbmx5ID0gbV9zaW5nbGVFbnRy
eUF0dHJpYnV0ZXMgJiBSZWFkT25seTsKICAgICAgICAgICAgIHJldHVybiAmbV91LnNpbmdsZUVu
dHJ5VmFsdWU7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBA
IC0yNjAsOCArMjYyLDEwIEBAIEpTVmFsdWUgKipQcm9wZXJ0eU1hcDo6Z2V0TG9jYXRpb24oY29u
c3QKICAgICBudW1Db2xsaXNpb25zICs9IGVudHJpZXNbaV0ua2V5ICYmIGVudHJpZXNbaV0ua2V5
ICE9IHJlcDsKICNlbmRpZgogICAgIHdoaWxlIChVU3RyaW5nOjpSZXAgKmtleSA9IGVudHJpZXNb
aV0ua2V5KSB7Ci0gICAgICAgIGlmIChyZXAgPT0ga2V5KQorICAgICAgICBpZiAocmVwID09IGtl
eSkgeworICAgICAgICAgICAgcmVhZE9ubHkgPSBlbnRyaWVzW2ldLmF0dHJpYnV0ZXMgJiBSZWFk
T25seTsKICAgICAgICAgICAgIHJldHVybiAmZW50cmllc1tpXS52YWx1ZTsKKyAgICAgICAgfQog
ICAgICAgICBpZiAoayA9PSAwKQogICAgICAgICAgICAgayA9IDEgfCAoaCAlIHNpemVNYXNrKTsK
ICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsKQEAgLTI5Niw3ICszMDAsNyBAQCB2b2lk
IFByb3BlcnR5TWFwOjpwdXQoY29uc3QgSWRlbnRpZmllciAmCiB7CiAgICAgYXNzZXJ0KCFuYW1l
LmlzTnVsbCgpKTsKICAgICBhc3NlcnQodmFsdWUgIT0gMCk7Ci0gICAgCisKICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7CiAKICAgICBVU3RyaW5nOjpSZXAgKnJlcCA9IG5hbWUuX3VzdHJpbmcucmVw
KCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlfbWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL3Byb3BlcnR5X21hcC5oCShyZXZpc2lvbiAyNDU1OCkKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9tYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNzYs
NyArNzYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdm9pZCByZW1vdmUoY29uc3QgSWRl
bnRpZmllciAmbmFtZSk7CiAgICAgICAgIEpTVmFsdWUgKmdldChjb25zdCBJZGVudGlmaWVyICZu
YW1lKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSAqZ2V0KGNvbnN0IElkZW50aWZpZXIgJm5hbWUs
IHVuc2lnbmVkICZhdHRyaWJ1dGVzKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSAqKmdldExvY2F0
aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUpOworICAgICAgICBKU1ZhbHVlICoqZ2V0TG9jYXRp
b24oY29uc3QgSWRlbnRpZmllciAmbmFtZSwgYm9vbCYgcmVhZE9ubHkpOwogCiAgICAgICAgIHZv
aWQgbWFyaygpIGNvbnN0OwogICAgICAgICB2b2lkIGdldEVudW1lcmFibGVQcm9wZXJ0eU5hbWVz
KFByb3BlcnR5TmFtZUFycmF5JikgY29uc3Q7CkBAIC04OSw2ICs4OSw5IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgICAgICB2b2lkIHNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXMoYm9vbCBmKSB7
IG1fZ2V0dGVyU2V0dGVyRmxhZyA9IGY7IH0KIAogICAgICAgICBib29sIGNvbnRhaW5zR2V0dGVy
c09yU2V0dGVycygpIGNvbnN0OworCisgICAgICAgIGJvb2wgaXNMb2NhbEluamVjdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbEluamVjdGVkOyB9CisgICAgICAgIHZvaWQgc2V0TG9jYWxJbmpl
Y3RlZCgpIHsgbV9sb2NhbEluamVjdGVkID0gdHJ1ZTsgfQogICAgIHByaXZhdGU6CiAgICAgICAg
IHN0YXRpYyBib29sIGtleXNNYXRjaChjb25zdCBVU3RyaW5nOjpSZXAgKiwgY29uc3QgVVN0cmlu
Zzo6UmVwICopOwogICAgICAgICB2b2lkIGV4cGFuZCgpOwpAQCAtMTExLDEzICsxMTQsMTUgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHNob3J0IG1fc2luZ2xlRW50cnlBdHRyaWJ1dGVzOwog
ICAgICAgICBib29sIG1fZ2V0dGVyU2V0dGVyRmxhZyA6IDE7CiAgICAgICAgIGJvb2wgbV91c2lu
Z1RhYmxlIDogMTsKKyAgICAgICAgYm9vbCBtX2xvY2FsSW5qZWN0ZWQgOiAxOyAvLyBVc2VkIHdo
ZW4gdGhpcyBvYmplY3QgaXMgdGhlIGFjdGl2ZSBzY29wZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyB0byBkZW5vdGUgZHluYW1pYyBhZGRpdGlvbiBvZiBsb2NhbCB2YXJp
YWJsZXMKICAgICB9OwogCiAgICAgaW5saW5lIFByb3BlcnR5TWFwOjpQcm9wZXJ0eU1hcCgpIAog
ICAgICAgICA6IG1fc2luZ2xlRW50cnlLZXkoMCkKICAgICAgICAgLCBtX2dldHRlclNldHRlckZs
YWcoZmFsc2UpCiAgICAgICAgICwgbV91c2luZ1RhYmxlKGZhbHNlKQotCisgICAgICAgICwgbV9s
b2NhbEluamVjdGVkKGZhbHNlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9wcm9wZXJ0eV9zbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3By
b3BlcnR5X3Nsb3QuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvcHJv
cGVydHlfc2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1MywxNiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gKm1fZGF0YS52YWx1ZVNsb3Q7CiAgICAgICAgIHJldHVybiBtX2dl
dFZhbHVlKGV4ZWMsIG9yaWdpbmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHByb3BlcnR5TmFt
ZSksICp0aGlzKTsgCiAgICAgfQotICAgIAotICAgIHZvaWQgc2V0VmFsdWVTbG90KEpTT2JqZWN0
ICpzbG90QmFzZSwgSlNWYWx1ZSAqKnZhbHVlU2xvdCkgCisKKyAgICAvLyBSZWFkYWJpbGl0eSBo
ZWxwZXIgZm9yIGJlbG93Li4KKyAgICBlbnVtIHsKKyAgICAgICAgUGVybWl0RGlyZWN0V3JpdGUg
PSAwLAorICAgICAgICBGb3JiaWREaXJlY3RXcml0ZSA9IDEKKyAgICB9OworCisgICAgdm9pZCBz
ZXRWYWx1ZVNsb3QoSlNPYmplY3QgKnNsb3RCYXNlLCBKU1ZhbHVlICoqdmFsdWVTbG90LCBib29s
IG1ha2VSZWFkT25seSkgCiAgICAgeworICAgICAgICBtX3JlYWRPbmx5IHw9IG1ha2VSZWFkT25s
eTsKICAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwogICAgICAgICBtX2RhdGEudmFsdWVT
bG90ID0gdmFsdWVTbG90OwogICAgICAgICBtX2dldFZhbHVlID0gVkFMVUVfU0xPVF9NQVJLRVI7
CkBAIC0xMDIsNiArMTA5LDIxIEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoRW50cnkgKnN0YXRp
Y0VudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnN0YXRpY0VudHJ5OyB9CiAgICAgdW5zaWdu
ZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaW5kZXg7IH0KIAorICAgIC8vIEZvciBk
aXJlY3QvdmFsdWUgc2xvdHMgd2UgYWxzbyBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgdGhleSdyZSAK
KyAgICAvLyB3cml0ZWFibGUuIFRoaXMgaXMgY2xlYXJlZCB3aGVuIHRoZSBsb29rdXAgc3VjY2Vl
ZHMgaW4gdGhlIAorICAgIC8vIHByb3RvdHlwZSBzaW5jZSB0aGUgd3JpdGUgc2hvdWxkIGdvIGVs
c2V3aGVyZS4KKyAgICAvLyAjIyMgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gZ2l2ZSBpdCBhIHJlYWwg
J3JlYWQgb25seScgdmFsdWUsIHYucy4gCisgICAgLy8gYSAnbm90IHN1cmUnIG9uZSwgc2luY2Ug
cmlnaHQgbm90IGFuIGF0dGVtcHQgdG8gd3JpdGUgYSBjb25zdCAKKyAgICAvLyB3aWxsIHRha2Ug
dGhlIHNsb3cgcGF0aC4KKyAgICB2b2lkIHNldFBvdGVudGlhbGx5V3JpdGVhYmxlKCkgeyBtX3Jl
YWRPbmx5ID0gZmFsc2U7IH0KKyAgICB2b2lkIHNldFJlYWRPbmx5KCkgICAgICAgICAgICAgeyBt
X3JlYWRPbmx5ID0gdHJ1ZTsgIH0KKworICAgIC8vIFRoaXMgcmV0dXJucyBhIHBvaW50ZXIgd2hl
cmUgdGhlIHZhbHVlIG1heSBiZSBzdG9yZWQsCisgICAgLy8gb3IgMCBpZiB0aGlzIGlzIG5vdCBw
b3NzaWJsZS4KKyAgICBKU1ZhbHVlKiogZ2V0RGlyZWN0V3JpdGVMb2NhdGlvbigpCisgICAgewor
ICAgICAgICByZXR1cm4gKChtX2dldFZhbHVlID09IFZBTFVFX1NMT1RfTUFSS0VSKSAmICFtX3Jl
YWRPbmx5KSA/IG1fZGF0YS52YWx1ZVNsb3QgOiAwOworICAgIH0KIHByaXZhdGU6CiAgICAgc3Rh
dGljIEpTVmFsdWUgKnVuZGVmaW5lZEdldHRlcihFeGVjU3RhdGUgKiwgSlNPYmplY3QgKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBKU1ZhbHVl
ICpmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUgKiwgSlNPYmplY3QgKiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwpAQCAtMTE1LDYgKzEzNyw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNvbnN0IEhhc2hFbnRyeSAqc3RhdGljRW50cnk7CiAgICAgICAgIHVuc2lnbmVkIGlu
ZGV4OwogICAgIH0gbV9kYXRhOworCisgICAgYm9vbCBtX3JlYWRPbmx5OwogfTsKIAogfQpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL3JlZmVyZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9yZWZlcmVuY2UuaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy9yZWZlcmVuY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLy8gLSotIGMtYmFz
aWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxp
YnJhcmllcworICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzaW0gT3Jsb3ZpY2ggKG1ha3NpbUBr
ZGUub3JnKQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSRUZFUkVOQ0VfSAorI2RlZmluZSBSRUZF
UkVOQ0VfSAorCisjaW5jbHVkZSAib2JqZWN0LmgiCisjaW5jbHVkZSAicHJvcGVydHlfc2xvdC5o
IgorCituYW1lc3BhY2UgS0pTIHsKKworc3RydWN0IFJlZmVyZW5jZSB7CisgICAgLy8jIyMgc29t
ZSBwcm90ZWN0aW9uIGhlcmUhCisgICAgUHJvcGVydHlTbG90ICBwcm9wZXJ0eVNsb3Q7CisgICAg
Ym9vbCAgICAgICAgICBmb3VuZDsgLy9ub3RlOiBzaG91bGQgZml0IGludG8gcGFkZGluZyBvZiBh
Ym92ZS4uCisKKyAgICBKU09iamVjdCogICAgIGJhc2U7ICAvL1RoaXMgaXNuJ3QgdGhlIHNhbWUg
YXMgc2xvdCdzIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgLy9hcyB0aGF0IG1heSBi
ZSBkaWZmZXJlbnQgaW4gY2FzZSBwcm90b3R5cGVzIGFyZSBpbnZvbHZlZC4uCisgICAgSWRlbnRp
ZmllciAgICBpZGVudDsKKworICAgIFJlZmVyZW5jZSgpIHsgfQorCisgICAgUmVmZXJlbmNlKGNv
bnN0IElkZW50aWZpZXImIGkpIDogaWRlbnQoaSkgeyB9CisKKyAgICAvLyBOb3RlOiBmb3IgcmVm
ZXJlbmNlcywgd2UgbWFrZSBzdXJlIHRoZSBzbG90IHBvaW50cyB0byB0aGUgb3V0ZXIKKyAgICAv
LyBzY29wZSBpZiBsb29rdXAgZmFpbGVkLi4KKyAgICBKU1ZhbHVlKiByZWFkKEV4ZWNTdGF0ZSog
ZXhlYykgeworICAgICAgICByZXR1cm4gcHJvcGVydHlTbG90LmdldFZhbHVlKGV4ZWMsIGJhc2Us
IGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIHdyaXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSogdmFsKSB7CisgICAgICAgIGlmIChKU1ZhbHVlKiogbG9jID0gcHJvcGVydHlTbG90LmdldERp
cmVjdFdyaXRlTG9jYXRpb24oKSkKKyAgICAgICAgICAgICpsb2MgPSB2YWw7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGJhc2UtPnB1dChleGVjLCBpZGVudCwgdmFsKTsKKyAgICB9CisKKyAg
ICBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykgeworICAgICAgICByZXR1cm4g
YmFzZS0+ZGVsZXRlUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIH0KK307CisKK30KKworI2Vu
ZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvc2VtYW50aWNfY2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuY3BwCShyZXZpc2lv
biAwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE5MCBAQAorLy8gLSotIGMtYmFzaWMtb2Zmc2V0OiAyIC0qLQorLyoK
KyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcworICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5vcmcpCisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaW5jbHVkZSAic2VtYW50aWNfY2hlY2tlci5oIgorCituYW1lc3BhY2UgS0pTIHsKKwor
Cit2b2lkIFNlbWFudGljQ2hlY2tlcjo6ZW50ZXJTZW1hbnRpY0NvbnRleHQoKQoreworICBjb250
ZXh0U3RhY2suYXBwZW5kKFNlbWFudGljQ29udGV4dCgpKTsKK30KKwordm9pZCBTZW1hbnRpY0No
ZWNrZXI6OmV4aXRTZW1hbnRpY0NvbnRleHQoKQoreworICBjb250ZXh0U3RhY2sucmVtb3ZlTGFz
dCgpOworfQorCitOb2RlKiBTZW1hbnRpY0NoZWNrZXI6OnZpc2l0KE5vZGUqIG5vZGUpCit7Cisg
IHJldHVybiBub2RlLT5jaGVja1NlbWFudGljcyh0aGlzKTsKK30KKwordm9pZCBTZW1hbnRpY0No
ZWNrZXI6OmNoZWNrU2VtYW50aWNzKE5vZGUqIG5vZGUpIHsKKyAgZW50ZXJTZW1hbnRpY0NvbnRl
eHQoKTsKKyAgdmlzaXQobm9kZSk7CisgIGV4aXRTZW1hbnRpY0NvbnRleHQoKTsKK30KKworTm9k
ZSogTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBjaGVja2VyU3RhdGUpCit7
CisgIHJlY3Vyc2VWaXNpdChjaGVja2VyU3RhdGUpOworICByZXR1cm4gMDsKK30KKworTm9kZSog
U3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBjaGVja2VyU3Rh
dGUpCit7CisgIFNlbWFudGljQ29udGV4dCogY3R4ID0gY2hlY2tlclN0YXRlLT5zZW1hbnRpY0Nv
bnRleHQoKTsKKworICBib29sIGlzTG9vcCAgID0gaXNJdGVyYXRpb25TdGF0ZW1lbnQoKTsKKyAg
Ym9vbCBpc1N3aXRjaCA9IGlzU3dpdGNoU3RhdGVtZW50KCk7CisgIAorICBpZiAoIWN0eC0+cGVu
ZGluZ0xhYmVscy5pc0VtcHR5KCkpIHsKKyAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHByb3Blcmx5
IGJpbmQgdGhlIGxhYmVscyBhdCB0aGlzIHBvaW50LAorICAgIC8vIG5vdyB0aGF0IHdlIGdvdCB0
byBzb21lIHJlYWwgY29kZS4gSG93IHdlIGJpbmQgZGVwZW5kcyBvbgorICAgIC8vIHdoYXQgdGhl
IGN1cnJlbnQgc3RhdGVtZW50IGlzOiBpZiBpdCdzIGEgc3dpdGNoIG9yIGEgbG9vcCwKKyAgICAv
LyB3ZSBiaW5kIHRvIHRoYXQsIG90aGVyd2lzZSBiaW5kIHRvIHRoZSBsYWJlbCBpdHNlbGYsIGZv
ciB0aGUKKyAgICAvLyBsYWJlbDogYnJlYWsgbGFiZWw7IHR5cGUgb2YgdXNhZ2UuCisgICAgTm9k
ZSogbGFiZWxUYXJnZXQgPSAoaXNMb29wIHx8IGlzU3dpdGNoKSA/IHRoaXMgOiBjdHgtPmxhc3RM
YWJlbDsKKyAgICAKKyAgICBmb3IgKEhhc2hTZXQ8SWRlbnRpZmllcj46Oml0ZXJhdG9yIGkgPSAg
IGN0eC0+cGVuZGluZ0xhYmVscy5iZWdpbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaSAhPSBjdHgtPnBlbmRpbmdMYWJlbHMuZW5kKCk7ICsraSkgeworICAgICAg
Y3R4LT5sYWJlbFRhcmdldHMuYWRkKCppLCBsYWJlbFRhcmdldCk7CisgICAgfQorCisgICAgY3R4
LT5wZW5kaW5nTGFiZWxzLmNsZWFyKCk7CisgIH0KKworICBpZiAoaXNMb29wKSB7CisgICAgY3R4
LT5kZWZhdWx0Q29udGludWVUYXJnZXRzLmFwcGVuZCh0aGlzKTsKKyAgICBjdHgtPmRlZmF1bHRC
cmVha1RhcmdldHMuYXBwZW5kKHRoaXMpOworICB9CisKKyAgaWYgKGlzU3dpdGNoKQorICAgIGN0
eC0+ZGVmYXVsdEJyZWFrVGFyZ2V0cy5hcHBlbmQodGhpcyk7CisKKyAgKHZvaWQpIE5vZGU6OmNo
ZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7CisKKyAgaWYgKGlzTG9vcCkgeworICAgIGN0eC0+
ZGVmYXVsdENvbnRpbnVlVGFyZ2V0cy5yZW1vdmVMYXN0KCk7CisgICAgY3R4LT5kZWZhdWx0QnJl
YWtUYXJnZXRzLnJlbW92ZUxhc3QoKTsKKyAgfQorCisgIGlmIChpc1N3aXRjaCkKKyAgICBjdHgt
PmRlZmF1bHRCcmVha1RhcmdldHMucmVtb3ZlTGFzdCgpOworCisgIHJldHVybiAwOworfQorCitO
b2RlKiBMYWJlbE5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogY2hlY2tlclN0
YXRlKQoreworICBTZW1hbnRpY0NvbnRleHQqIGN0eCA9IGNoZWNrZXJTdGF0ZS0+c2VtYW50aWND
b250ZXh0KCk7CisKKyAgLy8gQWRkIHRoZSBsYWJlbCB0byB0aGUgc2VlbiBzZXQsIGFuZCBzZWUg
aWYgaXQncyBhbHJlYWR5IHRoZXJlLi4KKyAgaWYgKCFjdHgtPnNlZW5MYWJlbHMuYWRkKGxhYmVs
KS5zZWNvbmQpCisgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50YXhFcnJvciwgIkR1cGxp
Y2F0ZWQgbGFiZWwgJXMgZm91bmQuIiwgbGFiZWwpOworCisgIC8vIEFkZCBpdCB0byB0aGUgc2V0
IG9mIHBlbmRpbmcgbGFiZWxzLCBtZW1vcml6ZSB0aGlzIG5vZGUgYXMKKyAgLy8gY2FuZGlkYXRl
IGZvciBiaW5kaW5nIHRoZSBuYW1lCisgIGN0eC0+cGVuZGluZ0xhYmVscy5hZGQobGFiZWwpOwor
ICBjdHgtPmxhc3RMYWJlbCA9IHRoaXM7CisKKyAgLy8gV2UgZG8gbm90IGNhbGwgdXAgdG8gU3Rh
dGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MsIHNpbmNlIHRoYXQgd291bGQKKyAgLy8gYXBwbHkg
YWNjdW11bGF0ZWQgbGFiZWxzLCBhbmQgd2Ugd2FudCB0byBkZWZlciB0aGVtIHVudGlsIHdlIGdl
dCB0aGUKKyAgLy8gZmlyc3Qgbm9uLWxhYmVsIHN0YXRlbWVudC4KKyAgKHZvaWQpTm9kZTo6Y2hl
Y2tTZW1hbnRpY3MoY2hlY2tlclN0YXRlKTsKKworICBjdHgtPmxhYmVsVGFyZ2V0cy5yZW1vdmUo
bGFiZWwpOworICBjdHgtPnNlZW5MYWJlbHMucmVtb3ZlKGxhYmVsKTsKKyAgcmV0dXJuIDA7Cit9
CisKK05vZGUqIEZ1bmNEZWNsTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBj
aGVja2VyU3RhdGUpCit7CisgIGNoZWNrZXJTdGF0ZS0+ZW50ZXJTZW1hbnRpY0NvbnRleHQoKTsK
KyAgKHZvaWQpU3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoY2hlY2tlclN0YXRlKTsKKyAg
Y2hlY2tlclN0YXRlLT5leGl0U2VtYW50aWNDb250ZXh0KCk7CisgIHJldHVybiAwOworfQorCitO
b2RlKiBGdW5jRXhwck5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogY2hlY2tl
clN0YXRlKQoreworICBjaGVja2VyU3RhdGUtPmVudGVyU2VtYW50aWNDb250ZXh0KCk7CisgICh2
b2lkKU5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7CisgIGNoZWNrZXJTdGF0ZS0+
ZXhpdFNlbWFudGljQ29udGV4dCgpOworICByZXR1cm4gMDsKK30KKworTm9kZSogQ29udGludWVO
b2RlOjpjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIGNoZWNrZXJTdGF0ZSkKK3sKKyAg
U3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoY2hlY2tlclN0YXRlKTsgLy9SZXNvbHZlIHF1
ZXVlZCBsYWJlbHMgaWYgbmVlZCBiZS4uCisKKyAgU2VtYW50aWNDb250ZXh0KiBjdHggPSBjaGVj
a2VyU3RhdGUtPnNlbWFudGljQ29udGV4dCgpOworCisgIC8vIEJpbmQgdGhlIGxhYmVsLi4KKyAg
aWYgKGlkZW50LmlzRW1wdHkoKSkgeworICAgIGlmIChjdHgtPmRlZmF1bHRDb250aW51ZVRhcmdl
dHMuaXNFbXB0eSgpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50YXhFcnJvciwg
IkludmFsaWQgY29udGludWUgc3RhdGVtZW50LiIpOworICAgIGVsc2UKKyAgICAgIHRhcmdldCA9
IGN0eC0+ZGVmYXVsdENvbnRpbnVlVGFyZ2V0cy5sYXN0KCk7CisgIH0gZWxzZSAgeworICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHdlIGtub3cgdGhpcyBsYWJlbCwgYW5kIHRoYXQgaXQgaXMgYSAKKyAg
ICAvLyBsb29wLXN0eWxlIGxhYmVscy4KKyAgICBpZiAoIWN0eC0+c2VlbkxhYmVscy5jb250YWlu
cyhpZGVudCkpCisgICAgICByZXR1cm4gY3JlYXRlRXJyb3JOb2RlKFN5bnRheEVycm9yLCAiTGFi
ZWwgJXMgbm90IGZvdW5kLiIsIGlkZW50KTsKKyAgICB0YXJnZXQgPSBjdHgtPmxhYmVsVGFyZ2V0
cy5nZXQoaWRlbnQpOworCisgICAgaWYgKCF0YXJnZXQtPmlzSXRlcmF0aW9uU3RhdGVtZW50KCkp
CisgICAgICByZXR1cm4gY3JlYXRlRXJyb3JOb2RlKFN5bnRheEVycm9yLCAiSW52YWxpZCBjb250
aW51ZSBzdGF0ZW1lbnQuIik7CisgIH0KKworICByZXR1cm4gMDsKK30KKworTm9kZSogQnJlYWtO
b2RlOjpjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIGNoZWNrZXJTdGF0ZSkKK3sKKyAg
U3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoY2hlY2tlclN0YXRlKTsgLy9SZXNvbHZlIHF1
ZXVlZCBsYWJlbHMgaWYgbmVlZCBiZS4uCisKKyAgU2VtYW50aWNDb250ZXh0KiBjdHggPSBjaGVj
a2VyU3RhdGUtPnNlbWFudGljQ29udGV4dCgpOworCisgIC8vIEJpbmQgdGhlIGxhYmVsLi4KKyAg
aWYgKGlkZW50LmlzRW1wdHkoKSkgeworICAgIGlmIChjdHgtPmRlZmF1bHRCcmVha1RhcmdldHMu
aXNFbXB0eSgpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50YXhFcnJvciwgIklu
dmFsaWQgYnJlYWsgc3RhdGVtZW50LiIpOworICAgIGVsc2UKKyAgICAgIHRhcmdldCA9IGN0eC0+
ZGVmYXVsdEJyZWFrVGFyZ2V0cy5sYXN0KCk7CisgIH0gZWxzZSAgeworICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHdlIGtub3cgdGhpcyBsYWJlbAorICAgIGlmICghY3R4LT5zZWVuTGFiZWxzLmNvbnRh
aW5zKGlkZW50KSkKKyAgICAgIHJldHVybiBjcmVhdGVFcnJvck5vZGUoU3ludGF4RXJyb3IsICJM
YWJlbCAlcyBub3QgZm91bmQuIiwgaWRlbnQpOworICAgIHRhcmdldCA9IGN0eC0+bGFiZWxUYXJn
ZXRzLmdldChpZGVudCk7CisgIH0KKworICByZXR1cm4gMDsKK30KKworCit9IC8vbmFtZXNwYWNl
IEtKUwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvc2VtYW50aWNfY2hlY2tlci5oCShyZXZpc2lvbiAw
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3NSBAQAorLy8gLSotIGMtYmFzaWMtb2Zmc2V0OiAyIC0qLQorLyoKKyAqICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcworICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5vcmcpCisgKgorICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aWZuZGVmIFNFTUFOVElDX0NIRUNLRVJfSAorI2RlZmluZSBTRU1BTlRJQ19DSEVDS0VSX0gKKwor
I2luY2x1ZGUgIm5vZGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2luZyBXVEY6Okhh
c2hTZXQ7Cit1c2luZyBXVEY6Okhhc2hNYXA7Cit1c2luZyBXVEY6OlZlY3RvcjsKKworbmFtZXNw
YWNlIEtKUyB7CisgIGNsYXNzIFNlbWFudGljQ29udGV4dCB7CisgIHB1YmxpYzoKKyAgICBTZW1h
bnRpY0NvbnRleHQoKSB7fQorCisgICAgSGFzaFNldDxJZGVudGlmaWVyPiBzZWVuTGFiZWxzOwor
ICAgIEhhc2hTZXQ8SWRlbnRpZmllcj4gcGVuZGluZ0xhYmVsczsKKyAgICBMYWJlbE5vZGUqICAg
ICAgICAgIGxhc3RMYWJlbDsKKyAgICBIYXNoTWFwPElkZW50aWZpZXIsIE5vZGUqPiBsYWJlbFRh
cmdldHM7CisKKyAgICBWZWN0b3I8Tm9kZSo+IGRlZmF1bHRDb250aW51ZVRhcmdldHM7CisgICAg
VmVjdG9yPE5vZGUqPiBkZWZhdWx0QnJlYWtUYXJnZXRzOworICB9OworCisKKyAgLyoqCisgICBU
aGlzIGNsYXNzIGlzIHVzZWQgdG8gc3RhdGljYWxseSBkZXRlY3Qgc29tZSBjbGFzc2VzIG9mIGVy
cm9ycyBpbiB0aGUKKyAgIHByb2dyYW0sIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBhbiBhcHByb3By
aWF0ZSBlcnJvciBub2RlLgorICAqLworICBjbGFzcyBTZW1hbnRpY0NoZWNrZXIgOiBwdWJsaWMg
Tm9kZVZpc2l0b3IgeworICBwdWJsaWM6CisgICAgdm9pZCBjaGVja1NlbWFudGljcyhOb2RlKiBu
b2RlKTsKKworICAgIFNlbWFudGljQ29udGV4dCogc2VtYW50aWNDb250ZXh0KCkgeyByZXR1cm4g
JmNvbnRleHRTdGFjay5sYXN0KCk7IH0KKworICAgIHZvaWQgZW50ZXJTZW1hbnRpY0NvbnRleHQo
KTsKKyAgICB2b2lkIGV4aXRTZW1hbnRpY0NvbnRleHQoKTsKKworICAgIC8vIyMjIHNob3VsZCBw
cm9sbHkgbWFrZSBwcml2YXRlIC0tLSBjaGVjayBvdGhlciB1c2VzLi4KKyAgICB2aXJ0dWFsIE5v
ZGUqIHZpc2l0KE5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEw7CisKKyAgcHJpdmF0ZToKKyAgICBW
ZWN0b3I8U2VtYW50aWNDb250ZXh0PiBjb250ZXh0U3RhY2s7CisgIH07Cit9OworCisjZW5kaWYK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy92YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy92YWx1ZS5oCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tq
cy92YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDYgQEAgcHVibGljOgogICAg
IC8vIEdhcmJhZ2UgY29sbGVjdGlvbi4KICAgICB2b2lkIG1hcmsoKTsKICAgICBib29sIG1hcmtl
ZCgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9uIGRldGFpbHMuCiAg
ICAgSlNDZWxsICphc0NlbGwoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEv
ZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxh
L2V4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUvdGVzdHMv
bW96aWxsYS9leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDExICs3LDExIEBACiA8
cCBjbGFzcz0ncmVzdWx0c19zdW1tYXJ5Jz4KIFRlc3QgTGlzdDogQWxsIHRlc3RzPGJyPgogU2tp
cCBMaXN0OiAobm9uZSk8YnI+Ci0xMTM1IHRlc3Qocykgc2VsZWN0ZWQsIDExMjcgdGVzdChzKSBj
b21wbGV0ZWQsIDY0IGZhaWx1cmVzIHJlcG9ydGVkICg1LjY3JSBmYWlsZWQpPGJyPgotRW5naW5l
IGNvbW1hbmQgbGluZTogL1VzZXJzL2RhcmluL0J1aWxkL0RlYnVnL3Rlc3RranMgPGJyPgotT1Mg
dHlwZTogRGFyd2luIGlsMDMwMWUtZGhjcDIwMS5hcHBsZS5jb20gOS4wLjBiMiBEYXJ3aW4gS2Vy
bmVsIFZlcnNpb24gOS4wLjBiMjogVHVlIEp1biAyNiAxODo0MDo1NSBQRFQgMjAwNzsgcm9vdDp4
bnUtMTEzOS4xfjEvUkVMRUFTRV9QUEMgUG93ZXIgTWFjaW50b3NoPGJyPgotVGVzdGNhc2UgZXhl
Y3V0aW9uIHRpbWU6IDcgbWludXRlcywgMTMgc2Vjb25kcy48YnI+Ci1UZXN0cyBjb21wbGV0ZWQg
b24gVGh1IEp1bCAxOSAxMzoxMDowOCAyMDA3Ljxicj48YnI+CisxMTM1IHRlc3Qocykgc2VsZWN0
ZWQsIDExMjcgdGVzdChzKSBjb21wbGV0ZWQsIDY2IGZhaWx1cmVzIHJlcG9ydGVkICg1Ljg1JSBm
YWlsZWQpPGJyPgorRW5naW5lIGNvbW1hbmQgbGluZTogL1VzZXJzL0NhbWVyb24vV2ViS2l0L1dl
YktpdEJ1aWxkL1JlbGVhc2UvdGVzdGtqcyA8YnI+CitPUyB0eXBlOiBEYXJ3aW4gY3BlMDAxYjYz
OTNhNzQ2LWNtMDA0MDdiODYwMWNkLmNwZS5uZXQuY2FibGUucm9nZXJzLmNvbSA4LjEwLjEgRGFy
d2luIEtlcm5lbCBWZXJzaW9uIDguMTAuMTogV2VkIE1heSAyMyAxNjozMzowMCBQRFQgMjAwNzsg
cm9vdDp4bnUtNzkyLjIyLjV+MS9SRUxFQVNFX0kzODYgaTM4NiBpMzg2PGJyPgorVGVzdGNhc2Ug
ZXhlY3V0aW9uIHRpbWU6IDQyIHNlY29uZHMuPGJyPgorVGVzdHMgY29tcGxldGVkIG9uIFRodSBB
dWcgIDIgMjE6NTM6MzIgMjAwNy48YnI+PGJyPgogWyA8YSBocmVmPScjZmFpbF9kZXRhaWwnPkZh
aWx1cmUgRGV0YWlsczwvYT4gfCA8YSBocmVmPScjcmV0ZXN0X2xpc3QnPlJldGVzdCBMaXN0PC9h
PiB8IDxhIGhyZWY9J21lbnUuaHRtbCc+VGVzdCBTZWxlY3Rpb24gUGFnZTwvYT4gXTxicj4KIDxo
cj4KIDxhIG5hbWU9J2ZhaWxfZGV0YWlsJz48L2E+CkBAIC0zNSwxOSArMzUsMTcgQEAgRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+
CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2Fz
ZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDYxOCBLSlM6Ok5vZGU8YnI+CiAtLT4gUmVnRXhwL2hl
eC0wMDEuanMgSlMgcmVnZXhwIGFuY2hvcmluZyBvbiBlbXB0eSBtYXRjaCBidWc8YnI+CiAtLT4g
QlVHTlVNQkVSOiBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NTc8YnI+Ci1bNjcwNDZdIC4vZWNtYV8yL1JlZ0V4cC9yZWdyZXNzLTAwMS5qcyBsaW5lIDE4OiBU
eXBlRXJyb3I6IE9iamVjdCAvYXx8Yi8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9hfHxiLykgZG9l
cyBub3QgYWxsb3cgY2FsbHMuPGJyPgorWzEwNTNdIC4vZWNtYV8yL1JlZ0V4cC9yZWdyZXNzLTAw
MS5qcyBsaW5lIDE4OiBUeXBlRXJyb3I6IE9iamVjdCAvYXx8Yi8gKHJlc3VsdCBvZiBleHByZXNz
aW9uIC9hfHxiLykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgogPC90dD48YnI+CiA8YSBuYW1l
PSdmYWlsdXJlNCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9lY21hXzIvUmVnRXhwL3VuaWNvZGUtMDAxLmpzJz5lY21hXzIvUmVnRXhwL3VuaWNv
ZGUtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlMyc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTUnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3Rl
ZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFs
IDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDY3MSBLSlM6
Ok5vZGU8YnI+CiAtLT4gUmVnRXhwL3VuaWNvZGUtMDAxLmpzIG5ldyBSZWdFeHAoIHBhdHRlcm4s
IGZsYWdzICk8YnI+Ci1bNjcwNDddIC4vZWNtYV8yL1JlZ0V4cC91bmljb2RlLTAwMS5qcyBsaW5l
IDMzOiBUeXBlRXJyb3I6IE51bGwgdmFsdWU8YnI+CitbMTA1NF0gLi9lY21hXzIvUmVnRXhwL3Vu
aWNvZGUtMDAxLmpzIGxpbmUgMzM6IFR5cGVFcnJvcjogTnVsbCB2YWx1ZTxicj4KIDwvdHQ+PGJy
PgogPGEgbmFtZT0nZmFpbHVyZTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL0RhdGUvMTUuOS41LjcuanMnPmVjbWFfMy9EYXRlLzE1
LjkuNS43LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNCc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTYnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KQEAgLTYyLDggKzYw
LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAoTW9uIEZlYiAyOCAyMDAwIDE2
OjAwOjAwIEdNVC0wODAwIChQU1QpKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDQ6MDA6MDAgUE0g
UFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDE2OjAwOjAwPGJyPgogLS0+IChNb24gRmViIDI4IDIwMDAg
MTU6NTk6NTkgR01ULTA4MDAgKFBTVCkpLnRvTG9jYWxlVGltZVN0cmluZygpID0gMzo1OTo1OSBQ
TSBQU1QgRkFJTEVEISBleHBlY3RlZDogMTU6NTk6NTk8YnI+CiAtLT4gKFR1ZSBGZWIgMjkgMjAw
MCAwMDowMDowMCBHTVQtMDgwMCAoUFNUKSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgPSAxMjowMDow
MCBBTSBQU1QgRkFJTEVEISBleHBlY3RlZDogMDA6MDA6MDA8YnI+Ci0tLT4gKFRodSBKdWwgMTkg
MjAwNyAxMzowOTowMSBHTVQtMDcwMCAoUERUKSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgPSAxOjA5
OjAxIFBNIFBEVCBGQUlMRUQhIGV4cGVjdGVkOiAxMzowOTowMTxicj4KLS0tPiAoVGh1IEp1bCAx
OSAyMDA3IDIxOjA5OjAxIEdNVC0wNzAwIChQRFQpKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDk6
MDk6MDEgUE0gUERUIEZBSUxFRCEgZXhwZWN0ZWQ6IDIxOjA5OjAxPGJyPgorLS0+IChUaHUgQXVn
IDAyIDIwMDcgMjE6NTM6MjEgR01ULTA3MDAgKFBEVCkpLnRvTG9jYWxlVGltZVN0cmluZygpID0g
OTo1MzoyMSBQTSBQRFQgRkFJTEVEISBleHBlY3RlZDogMjE6NTM6MjE8YnI+CistLT4gKEZyaSBB
dWcgMDMgMjAwNyAwNTo1MzoyMSBHTVQtMDcwMCAoUERUKSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkg
PSA1OjUzOjIxIEFNIFBEVCBGQUlMRUQhIGV4cGVjdGVkOiAwNTo1MzoyMTxicj4KIC0tPiAoRnJp
IERlYyAzMSAyMDA0IDE2OjAwOjAwIEdNVC0wODAwIChQU1QpKS50b0xvY2FsZVRpbWVTdHJpbmco
KSA9IDQ6MDA6MDAgUE0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDE2OjAwOjAwPGJyPgogLS0+IChG
cmkgRGVjIDMxIDIwMDQgMTU6NTk6NTkgR01ULTA4MDAgKFBTVCkpLnRvTG9jYWxlVGltZVN0cmlu
ZygpID0gMzo1OTo1OSBQTSBQU1QgRkFJTEVEISBleHBlY3RlZDogMTU6NTk6NTk8YnI+CiAtLT4g
KFNhdCBKYW4gMDEgMjAwNSAwMDowMDowMCBHTVQtMDgwMCAoUFNUKSkudG9Mb2NhbGVUaW1lU3Ry
aW5nKCkgPSAxMjowMDowMCBBTSBQU1QgRkFJTEVEISBleHBlY3RlZDogMDA6MDA6MDA8YnI+CkBA
IC03MywxMCArNzEsMjkgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIDx0dD5FeHBlY3Rl
ZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFs
IDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6
Ok5vZGU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU3Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvMTUuMTAu
Mi0xLmpzJz5lY21hXzMvUmVnRXhwLzE1LjEwLjItMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVm
PSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPShub25lKScgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgKG5vbmUpPC9hPjxicj4KK1Rlc3RjYXNlIHBy
b2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU3Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9GdW5jdGlv
bi9zY29wZS0wMDEuanMnPmVjbWFfMy9GdW5jdGlvbi9zY29wZS0wMDEuanM8L2E+IGZhaWxlZDwv
Yj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0o
bm9uZSknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIChub25lKTwvYT48YnI+CiAg
WyA8YSBocmVmPScjZmFpbHVyZTYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmU4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+Cis8dHQ+LS0+IFNUQVRVUzogVGVzdGluZyB0aGF0IGZ1bmN0aW9ucyBhcmUg
c2NvcGVkIHN0YXRpY2FsbHksIG5vdCBkeW5hbWljYWxseTxicj4KK0ZhaWx1cmUgbWVzc2FnZXMg
d2VyZTo8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIEIg
b2YgdGVzdDxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVk
IHZhbHVlICcyJywgQWN0dWFsIHZhbHVlICcxJzxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQg
ZnJvbSB0ZXN0KCldIDxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNl
Y3Rpb24gQyBvZiB0ZXN0PGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0g
RXhwZWN0ZWQgdmFsdWUgJzInLCBBY3R1YWwgdmFsdWUgJzEnPGJyPgorLS0+IEZBSUxFRCE6IFty
ZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gU2VjdGlvbiBEIG9mIHRlc3Q8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20g
dGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMycsIEFjdHVhbCB2YWx1ZSAnMSc8YnI+CistLT4gRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVk
IGZyb20gdGVzdCgpXSBTZWN0aW9uIEUgb2YgdGVzdDxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcyJywgQWN0dWFsIHZhbHVlICcxJzxicj4K
Ky0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKy0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gRiBvZiB0ZXN0PGJyPgorLS0+IEZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzInLCBBY3R1YWwgdmFsdWUg
JzEnPGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorPC90dD48
YnI+Cis8YSBuYW1lPSdmYWlsdXJlOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwLzE1LjEwLjItMS5qcyc+ZWNtYV8zL1Jl
Z0V4cC8xNS4xMC4yLTEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxh
Lm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0obm9uZSknIHRhcmdldD0nb3RoZXJfd2luZG93
Jz5CdWcgTnVtYmVyIChub25lKTwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTcnPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU5Jz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRV
UzogUmVnRXhwIGNvbmZvcm1hbmNlIHRlc3Q8YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJy
PgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiA3IG9mIHRlc3Qg
LTxicj4KQEAgLTEwMSw4ICsxMTgsOCBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+
IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gQWN0dWFsOiBudWxsPGJyPgogLS0+IEZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdm
YWlsdXJlOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9lY21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAxLmpzJz5lY21hXzMvUmVnRXhwL3Blcmxz
dHJlc3MtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcg
TnVtYmVyIDg1NzIxPC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNyc+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU5Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFf
My9SZWdFeHAvcGVybHN0cmVzcy0wMDEuanMnPmVjbWFfMy9SZWdFeHAvcGVybHN0cmVzcy0wMDEu
anM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD04NTcyMScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgODU3
MjE8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlMTAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBUZXN0aW5nIHJlZ3Vs
YXIgZXhwcmVzc2lvbiBlZGdlIGNhc2VzPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4K
IC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMjE4IG9mIHRlc3Qg
LTxicj4KQEAgLTE0MSw4ICsxNTgsOCBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+
IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gQWN0dWFsOiBbImFhYmJhYSIsICJhYSIs
ICJiYiJdPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90
dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAyLmpzJz5l
Y21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0
dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEnIHRhcmdldD0n
b3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDg1NzIxPC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWls
dXJlOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEwJz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8
YSBuYW1lPSdmYWlsdXJlMTAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9wZXJsc3RyZXNzLTAwMi5qcyc+ZWNtYV8zL1Jl
Z0V4cC9wZXJsc3RyZXNzLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVn
emlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg1NzIxJyB0YXJnZXQ9J290aGVyX3dp
bmRvdyc+QnVnIE51bWJlciA4NTcyMTwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTknPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxMSc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBT
VEFUVVM6IFRlc3RpbmcgcmVndWxhciBleHByZXNzaW9uIGVkZ2UgY2FzZXM8YnI+CiBGYWlsdXJl
IG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0g
U2VjdGlvbiA0MCBvZiB0ZXN0IC08YnI+CkBAIC0xNjAsOCArMTc3LDggQEAgRmFpbHVyZSBtZXNz
YWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVh
bDogbnVsbDxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwv
dHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTEwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVzcy03Mjk2NC5qcyc+
ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTcyOTY0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0
dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5NjQnIHRhcmdldD0n
b3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDcyOTY0PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWls
dXJlOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTExJz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8
YSBuYW1lPSdmYWlsdXJlMTEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTcyOTY0LmpzJz5lY21hXzMvUmVn
RXhwL3JlZ3Jlc3MtNzI5NjQuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk2NCcgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnPkJ1ZyBOdW1iZXIgNzI5NjQ8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMCc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEyJz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNU
QVRVUzogVGVzdGluZyByZWd1bGFyIGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgbm9uLUxhdGluMSBj
aGFyYWN0ZXJzPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMyBvZiB0ZXN0IC08YnI+CkBAIC0xNzksOCAr
MTk2LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogbnVsbDxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQg
ZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTExJz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdF
eHAvcmVncmVzcy03ODE1Ni5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTc4MTU2LmpzPC9hPiBm
YWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzgxNTYnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDc4MTU2PC9hPjxi
cj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUxMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTEyJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVz
cy03ODE1Ni5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTc4MTU2LmpzPC9hPiBmYWlsZWQ8L2I+
IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzgx
NTYnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDc4MTU2PC9hPjxicj4KKyBbIDxh
IGhyZWY9JyNmYWlsdXJlMTEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUxMyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgcmVndWxhciBleHByZXNzaW9ucyB3
aXRoICBeLCAkLCBhbmQgdGhlIG0gZmxhZyAtPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMiBvZiB0ZXN0
IC08YnI+CkBAIC0xOTgsMjQgKzIxNSwyMyBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgog
LS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gQWN0dWFsOiBudWxsPGJyPgogLS0+
IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90dD48YnI+Ci08YSBuYW1l
PSdmYWlsdXJlMTInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qcyc+ZWNtYV8zL1JlZ0V4cC9y
ZWdyZXNzLTEwMDE5OS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVy
ZTExJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTMnPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxh
IG5hbWU9J2ZhaWx1cmUxMyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMTAwMTk5LmpzJz5lY21hXzMvUmVn
RXhwL3JlZ3Jlc3MtMTAwMTk5LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlMTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNCc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0
ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgot
TEVBSzogODUzIEtKUzo6Tm9kZTxicj4KLVs2NzIxOV0gLi9lY21hXzMvUmVnRXhwL3JlZ3Jlc3Mt
MTAwMTk5LmpzIGxpbmUgNDg6IFN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lv
bjogbWlzc2luZyB0ZXJtaW5hdGluZyBdIGZvciBjaGFyYWN0ZXIgY2xhc3M8YnI+CitbMTE4MV0g
Li9lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMTAwMTk5LmpzIGxpbmUgNDg6IFN5bnRheEVycm9yOiBJ
bnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogbWlzc2luZyB0ZXJtaW5hdGluZyBdIGZvciBjaGFy
YWN0ZXIgY2xhc3M8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxMyc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhw
L3JlZ3Jlc3MtMTg4MjA2LmpzJz5lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMTg4MjA2LmpzPC9hPiBm
YWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4MjA2JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxODgyMDY8L2E+
PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTE0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTQnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdy
ZXNzLTE4ODIwNi5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTE4ODIwNi5qczwvYT4gZmFpbGVk
PC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODIwNicgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTg4MjA2PC9hPjxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlMTMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUxNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IEludmFsaWQgdXNlIG9mIHJlZ2V4cCBx
dWFudGlmaWVycyBzaG91bGQgZ2VuZXJhdGUgU3ludGF4RXJyb3JzPGJyPgogRmFpbHVyZSBtZXNz
YWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rp
b24gMyBvZiB0ZXN0IC08YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBF
eHBlY3RlZCB2YWx1ZSAnU3ludGF4RXJyb3InLCBBY3R1YWwgdmFsdWUgJ0RpZCBub3QgZ2VuZXJh
dGUgQU5ZIGVycm9yISEhJzxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCld
IDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTE0Jz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVzcy0y
MDk5MTkuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy0yMDk5MTkuanM8L2E+IGZhaWxlZDwvYj4g
PGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5
MTknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDIwOTkxOTwvYT48YnI+Ci0gWyA8
YSBocmVmPScjZmFpbHVyZTEzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMTUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMjA5OTE5
LmpzJz5lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMjA5OTE5LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhy
ZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5OTE5JyB0
YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMDk5MTk8L2E+PGJyPgorIFsgPGEgaHJl
Zj0nI2ZhaWx1cmUxNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTE2
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogVGVzdGluZyByZWdleHAgc3VibWF0Y2hlcyB3aXRoIHF1
YW50aWZpZXJzPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMSBvZiB0ZXN0IC08YnI+CkBAIC0yNTQsNDEg
KzI3MCwzOSBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBv
cnRlZCBmcm9tIHRlc3QoKV0gQWN0dWFsOiBbIjEuMDAwLDAwIiwgIiIsICIsMDAiXTxicj4KIC0t
PiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFt
ZT0nZmFpbHVyZTE1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2VjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzJz5lY21hXzMvU3Rh
dGVtZW50cy9yZWdyZXNzLTE5NDM2NC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVm
PScjZmFpbHVyZTE0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTYn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvU3RhdGVtZW50cy9yZWdyZXNzLTE5NDM2NC5q
cyc+ZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanM8L2E+IGZhaWxlZDwvYj4gPGJy
PgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTE3Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgog
VGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ug
b3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzOTcgS0pTOjpOb2RlPGJyPgotWzY3Mjc1XSAuL2VjbWFf
My9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzIGxpbmUgMTogU3ludGF4RXJyb3I6IFBhcnNl
IGVycm9yPGJyPgorWzEyMDddIC4vZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanMg
bGluZSAxOiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9
J2ZhaWx1cmUxNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9lY21hXzMvVW5pY29kZS91Yy0wMDEuanMnPmVjbWFfMy9Vbmljb2RlL3VjLTAwMS5q
czwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjEwJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMzYx
MDwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTE1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlMTcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNyc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvVW5pY29k
ZS91Yy0wMDEuanMnPmVjbWFfMy9Vbmljb2RlL3VjLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBo
cmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwJyB0
YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMzYxMDwvYT48YnI+CisgWyA8YSBocmVm
PScjZmFpbHVyZTE2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTgn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KIDx0dD4tLT4gU1RBVFVTOiBVbmljb2RlIGZvcm1hdC1jb250cm9sIGNoYXJhY3RlciAo
Q2F0ZWdvcnkgQ2YpIHRlc3QuPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBG
QUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFVuaWNvZGUgZm9ybWF0LWNvbnRyb2wgY2hh
cmFjdGVyIHRlc3QgKENhdGVnb3J5IENmLik8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnbm8gZXJyb3InLCBBY3R1YWwgdmFsdWUgJ25v4oCO
IGVycm9yJzxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwv
dHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTE3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9Vbmljb2RlL3VjLTAwMi5qcyc+ZWNtYV8z
L1VuaWNvZGUvdWMtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTMnIHRhcmdldD0nb3RoZXJfd2luZG93
Jz5CdWcgTnVtYmVyIDIzNjEzPC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTYnPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxOCc+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFp
bHVyZTE4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVm
PScuL2VjbWFfMy9Vbmljb2RlL3VjLTAwMi5qcyc+ZWNtYV8zL1VuaWNvZGUvdWMtMDAyLmpzPC9h
PiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MTMnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDIzNjEzPC9h
Pjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTcnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmUxOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFVuaWNvZGUgbm9uLWJyZWFr
aW5nIHNwYWNlIGNoYXJhY3RlciB0ZXN0Ljxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBVbmljb2RlIG5vbi1icmVha2lu
ZyBzcGFjZSBjaGFyYWN0ZXIgcmVnZXhwIHRlc3QuPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRl
ZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzAnLCBBY3R1YWwgdmFsdWUgJy0xJzxicj4K
IC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEg
bmFtZT0nZmFpbHVyZTE4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV8yL09iamVjdHMvdG9TdHJpbmctMDAxLmpzJz5qczFfMi9PYmplY3Rz
L3RvU3RyaW5nLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVy
ZTE3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTknPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxh
IG5hbWU9J2ZhaWx1cmUxOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9qczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qcyc+anMxXzIvT2JqZWN0
cy90b1N0cmluZy0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1
cmUxOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTIwJz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8
dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3
aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFL
OiA0MDMgS0pTOjpOb2RlPGJyPgogLS0+IEpTMV8yIE9iamVjdC50b1N0cmluZygpPGJyPgotWzY3
MzA2XSAuL2pzMV8yL09iamVjdHMvdG9TdHJpbmctMDAxLmpzIGxpbmUgMTAzOiBUeXBlRXJyb3I6
IE9iamVjdCAvXlx7KC4qKVx9JC8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9eXHsoLiopXH0kLykg
ZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgorWzEyMjhdIC4vanMxXzIvT2JqZWN0cy90b1N0cmlu
Zy0wMDEuanMgbGluZSAxMDM6IFR5cGVFcnJvcjogT2JqZWN0IC9eXHsoLiopXH0kLyAocmVzdWx0
IG9mIGV4cHJlc3Npb24gL15ceyguKilcfSQvKSBkb2VzIG5vdCBhbGxvdyBjYWxscy48YnI+CiA8
L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9GdW5jdGlvbl9vYmplY3Qu
anMnPmpzMV8yL2Z1bmN0aW9uL0Z1bmN0aW9uX29iamVjdC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+
Ci0gWyA8YSBocmVmPScjZmFpbHVyZTE4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlMjAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyMCc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9GdW5jdGlv
bl9vYmplY3QuanMnPmpzMV8yL2Z1bmN0aW9uL0Z1bmN0aW9uX29iamVjdC5qczwvYT4gZmFpbGVk
PC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTE5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlMjEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdl
cmU6PGJyPgogLS0+IGYubmFtZSA9IHVuZGVmaW5lZCBGQUlMRUQhIGV4cGVjdGVkOiBhX3Rlc3Rf
ZnVuY3Rpb248YnI+CkBAIC0yOTYsMjcgKzMxMCwyNSBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6
PGJyPgogLS0+IChuZXcgRnVuY3Rpb24oKSkubmFtZSA9IHVuZGVmaW5lZCBGQUlMRUQhIGV4cGVj
dGVkOiBhbm9ueW1vdXM8YnI+CiB9IEZBSUxFRCEgZXhwZWN0ZWQ6IDxicj4KIDwvdHQ+PGJyPgot
PGEgbmFtZT0nZmFpbHVyZTIwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL2Z1bmN0aW9uLTAwMS1uLmpzJz5qczFfMi9m
dW5jdGlvbi9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVm
PScjZmFpbHVyZTE5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjEn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyMSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9mdW5jdGlvbi0wMDEtbi5qcyc+
anMxXzIvZnVuY3Rpb24vZnVuY3Rpb24tMDAxLW4uanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsg
PGEgaHJlZj0nI2ZhaWx1cmUyMCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTIyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDMsIGdvdCAwPGJyPgogVGVzdGNh
c2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0
IHdhczo8YnI+CiBPSy48YnI+Ci1MRUFLOiAzMzEgS0pTOjpOb2RlPGJyPgogLS0+IGZ1bmN0aW9u
LTAwMS5qcyBmdW5jdGlvbnMgbm90IHNlcGFyYXRlZCBieSBzZW1pY29sb25zIGFyZSBlcnJvcnMg
aW4gdmVyc2lvbiAxMjAgYW5kIGhpZ2hlcjxicj4KIC0tPiBldmFsKCJmdW5jdGlvbiBmKCl7fWZ1
bmN0aW9uIGcoKXt9IikgPSB1bmRlZmluZWQgRkFJTEVEISBleHBlY3RlZDogZXJyb3I8YnI+CiA8
L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyMSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9yZWdleHBhcmctMS5qcyc+
anMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEg
aHJlZj0nI2ZhaWx1cmUyMCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTIyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanMn
PmpzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0xLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxh
IGhyZWY9JyNmYWlsdXJlMjEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUyMyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNl
IHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3
YXM6PGJyPgotTEVBSzogMzMzIEtKUzo6Tm9kZTxicj4KIC0tPiBKU18xLjIgVGhlIHZhcmlhYmxl
IHN0YXRtZW50PGJyPgotWzY3MzM5XSAuL2pzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0xLmpzIGxp
bmUgODA6IFR5cGVFcnJvcjogT2JqZWN0IC9hYmMvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiB4KSBk
b2VzIG5vdCBhbGxvdyBjYWxscy48YnI+CitbMTI0MV0gLi9qczFfMi9mdW5jdGlvbi9yZWdleHBh
cmctMS5qcyBsaW5lIDgwOiBUeXBlRXJyb3I6IE9iamVjdCAvYWJjLyAocmVzdWx0IG9mIGV4cHJl
c3Npb24geCkgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdm
YWlsdXJlMjInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vanMxXzIvZnVuY3Rpb24vdG9zdHJpbmctMS5qcyc+anMxXzIvZnVuY3Rpb24vdG9zdHJp
bmctMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTIxJz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjMnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2Zh
aWx1cmUyMyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfMi9mdW5jdGlvbi90b3N0cmluZy0xLmpzJz5qczFfMi9mdW5jdGlvbi90b3N0cmlu
Zy0xLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjInPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pjxicj4KIEZh
aWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiB9IEZBSUxFRCEgZXhwZWN0ZWQ6IDxicj4KQEAgLTMy
NSw4ICszMzcsOCBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogfSBGQUlMRUQhIGV4cGVj
dGVkOiA8YnI+CiB9IEZBSUxFRCEgZXhwZWN0ZWQ6IDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTIzJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTIuanMnPmpzMV8yL2Z1bmN0aW9uL3Rvc3Ry
aW5nLTIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMic+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI0Jz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdm
YWlsdXJlMjQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vanMxXzIvZnVuY3Rpb24vdG9zdHJpbmctMi5qcyc+anMxXzIvZnVuY3Rpb24vdG9zdHJp
bmctMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTIzJz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjUnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBG
YWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+CkBAIC0z
MzksMjIgKzM1MSwyMiBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogfSBGQUlMRUQhIGV4
cGVjdGVkOiA8YnI+CiB9IEZBSUxFRCEgZXhwZWN0ZWQ6IDxicj4KIDwvdHQ+PGJyPgotPGEgbmFt
ZT0nZmFpbHVyZTI0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV8yL29wZXJhdG9yL2VxdWFsaXR5LmpzJz5qczFfMi9vcGVyYXRvci9lcXVh
bGl0eS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTIzJz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjUnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2Zh
aWx1cmUyNSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfMi9vcGVyYXRvci9lcXVhbGl0eS5qcyc+anMxXzIvb3BlcmF0b3IvZXF1YWxpdHku
anM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAobmV3IFN0cmluZygneCcpID09ICd4JykgICAgICAg
ICAgICAgICAgICA9IHRydWUgRkFJTEVEISBleHBlY3RlZDogZmFsc2U8YnI+CiAtLT4gKCd4JyA9
PSBuZXcgU3RyaW5nKCd4JykpICAgICAgICAgICAgICAgICAgPSB0cnVlIEZBSUxFRCEgZXhwZWN0
ZWQ6IGZhbHNlPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMjUnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL1Jl
Z0V4cF9sYXN0SW5kZXguanMnPmpzMV8yL3JlZ2V4cC9SZWdFeHBfbGFzdEluZGV4LmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjQnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTI2Jz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3Jl
Z2V4cC9SZWdFeHBfbGFzdEluZGV4LmpzJz5qczFfMi9yZWdleHAvUmVnRXhwX2xhc3RJbmRleC5q
czwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTI1Jz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBGYWlsdXJl
IG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IHJlPS94Li9nOyByZS5sYXN0SW5kZXg9NDsgcmUuZXhl
YygneHlhYmNkeGEnKSA9IHhhIEZBSUxFRCEgZXhwZWN0ZWQ6IFsieGEiXTxicj4KIC0tPiByZS5l
eGVjKCd4eWFiY2RlZicpID0geHkgRkFJTEVEISBleHBlY3RlZDogWyJ4eSJdPGJyPgogPC90dD48
YnI+Ci08YSBuYW1lPSdmYWlsdXJlMjYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL1JlZ0V4cF9tdWx0aWxpbmUuanMnPmpz
MV8yL3JlZ2V4cC9SZWdFeHBfbXVsdGlsaW5lLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlMjUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUyNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTI3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9SZWdFeHBfbXVsdGlsaW5l
LmpzJz5qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+
CisgWyA8YSBocmVmPScjZmFpbHVyZTI2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlMjgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgog
LS0+IChtdWx0aWxpbmUgPT0gdHJ1ZSkgJzEyM1xuNDU2Jy5tYXRjaCgvXjQuLi8pID0gbnVsbCBG
QUlMRUQhIGV4cGVjdGVkOiA0NTY8YnI+CkBAIC0zNjMsOCArMzc1LDggQEAgRmFpbHVyZSBtZXNz
YWdlcyB3ZXJlOjxicj4KIC0tPiAobXVsdGlsaW5lID09IHRydWUpICdhMTFcbmEyMlxuYTIzXG5h
MjQnLm1hdGNoKC9hLi4kL2cpID0gYTI0IEZBSUxFRCEgZXhwZWN0ZWQ6IGExMSxhMjIsYTIzLGEy
NDxicj4KIC0tPiAobXVsdGlsaW5lID09IHRydWUpICdhMTFcbmEyMlxuYTIzXG5hMjQnLm1hdGNo
KG5ldyBSZWdFeHAoJ2EuLiQnLCdnJykpID0gYTI0IEZBSUxFRCEgZXhwZWN0ZWQ6IGExMSxhMjIs
YTIzLGEyNDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTI3Jz48L2E+PGRkPjxiPlRl
c3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9SZWdF
eHBfbXVsdGlsaW5lX2FzX2FycmF5LmpzJz5qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZV9h
c19hcnJheS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTI2Jz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjgnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9
J2ZhaWx1cmUyOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZV9hc19hcnJheS5qcyc+anMxXzIv
cmVnZXhwL1JlZ0V4cF9tdWx0aWxpbmVfYXNfYXJyYXkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgor
IFsgPGEgaHJlZj0nI2ZhaWx1cmUyNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTI5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0t
PiAoWyckKiddID09IHRydWUpICcxMjNcbjQ1NicubWF0Y2goL140Li4vKSA9IG51bGwgRkFJTEVE
ISBleHBlY3RlZDogNDU2PGJyPgpAQCAtMzczLDU4ICszODUsNTQgQEAgRmFpbHVyZSBtZXNzYWdl
cyB3ZXJlOjxicj4KIC0tPiAoWyckKiddID09IHRydWUpICdhMTFcbmEyMlxuYTIzXG5hMjQnLm1h
dGNoKC9hLi4kL2cpID0gYTI0IEZBSUxFRCEgZXhwZWN0ZWQ6IGExMSxhMjIsYTIzLGEyNDxicj4K
IC0tPiAoWyckKiddID09IHRydWUpICdhMTFcbmEyMlxuYTIzXG5hMjQnLm1hdGNoKG5ldyBSZWdF
eHAoJ2EuLiQnLCdnJykpID0gYTI0IEZBSUxFRCEgZXhwZWN0ZWQ6IGExMSxhMjIsYTIzLGEyNDxi
cj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTI4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9iZWdpbkxpbmUuanMn
PmpzMV8yL3JlZ2V4cC9iZWdpbkxpbmUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJl
Zj0nI2ZhaWx1cmUyNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI5
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL2JlZ2luTGluZS5qcyc+anMxXzIv
cmVnZXhwL2JlZ2luTGluZS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFp
bHVyZTI4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzAnPk5leHQg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4K
IDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogMTIzeHl6Jy5tYXRjaChuZXcg
UmVnRXhwKCdeXGQrJykpID0gbnVsbCBGQUlMRUQhIGV4cGVjdGVkOiAxMjM8YnI+CiA8L3R0Pjxi
cj4KLTxhIG5hbWU9J2ZhaWx1cmUyOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvY29tcGlsZS5qcyc+anMxXzIvcmVnZXhw
L2NvbXBpbGUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyOCc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMwJz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1l
PSdmYWlsdXJlMzAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzIvcmVnZXhwL2NvbXBpbGUuanMnPmpzMV8yL3JlZ2V4cC9jb21waWxlLmpz
PC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjknPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQg
Y29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4K
IENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzI5IEtKUzo6Tm9kZTxi
cj4KIC0tPiBFeGVjdXRpbmcgc2NyaXB0OiBjb21waWxlLmpzPGJyPgogLS0+IEFzIGRlc2NyaWJl
ZCBpbiBOZXRzY2FwZSBkb2MgIldoYXRzIG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIgUmVnRXhwOiBj
b21waWxlPGJyPgotWzY3Mzc2XSAuL2pzMV8yL3JlZ2V4cC9jb21waWxlLmpzIGxpbmUgNDM6IFR5
cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiByZWd1bGFyRXhw
cmVzc2lvbi5jb21waWxlKSBpcyBub3Qgb2JqZWN0Ljxicj4KK1sxMjY4XSAuL2pzMV8yL3JlZ2V4
cC9jb21waWxlLmpzIGxpbmUgNDM6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQg
b2YgZXhwcmVzc2lvbiByZWd1bGFyRXhwcmVzc2lvbi5jb21waWxlKSBpcyBub3Qgb2JqZWN0Ljxi
cj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTMwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9lbmRMaW5lLmpzJz5q
czFfMi9yZWdleHAvZW5kTGluZS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScj
ZmFpbHVyZTI5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzEnPk5l
eHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmUzMSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvZW5kTGluZS5qcyc+anMxXzIvcmVnZXhw
L2VuZExpbmUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMCc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMyJz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJy
PgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIHh5eicubWF0Y2gobmV3IFJlZ0V4cCgnXGQr
JCcpKSA9IG51bGwgRkFJTEVEISBleHBlY3RlZDogODkwPGJyPgogPC90dD48YnI+Ci08YSBuYW1l
PSdmYWlsdXJlMzEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtNjM1OS5qcyc+anMxXzIvcmVnZXhwL3JlZ3Jl
c3MtNjM1OS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxs
YS5vcmcvc2hvd19idWcuY2dpP2lkPWh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjM1OScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgaHR0cDovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5PC9hPjxicj4KLSBbIDxhIGhy
ZWY9JyNmYWlsdXJlMzAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUz
Mic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTMyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanMnPmpz
MV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1odHRwOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcg
TnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM1OTwv
YT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTMxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlMzMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyOSBLSlM6Ok5vZGU8YnI+CiAtLT4gQlVHTlVN
QkVSOiBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTk8YnI+
Ci1bNjczOTddIC4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtNjM1OS5qcyBsaW5lIDU2OiBUeXBlRXJy
b3I6IE9iamVjdCAvKGEqKWJcMSsvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvKGEqKWJcMSsvKSBk
b2VzIG5vdCBhbGxvdyBjYWxscy48YnI+CitbMTI4NF0gLi9qczFfMi9yZWdleHAvcmVncmVzcy02
MzU5LmpzIGxpbmUgNTY6IFR5cGVFcnJvcjogT2JqZWN0IC8oYSopYlwxKy8gKHJlc3VsdCBvZiBl
eHByZXNzaW9uIC8oYSopYlwxKy8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJy
PgotPGEgbmFtZT0nZmFpbHVyZTMyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3Ro
ZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTkxNDEuanMnPmpzMV8yL3Jl
Z2V4cC9yZWdyZXNzLTkxNDEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1odHRwOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPTkxNDEnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVy
IGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0MTwvYT48YnI+
Ci0gWyA8YSBocmVmPScjZmFpbHVyZTMxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlMzMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzMyc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvcmVncmVzcy05
MTQxLmpzJz5qczFfMi9yZWdleHAvcmVncmVzcy05MTQxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhy
ZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9aHR0cDovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQxJyB0YXJnZXQ9J290aGVyX3dp
bmRvdyc+QnVnIE51bWJlciBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTkxNDE8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMic+UHJldmlvdXMgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2Rl
IDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29t
cGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjkgS0pTOjpOb2RlPGJyPgog
LS0+IEJVR05VTUJFUjogaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTQxPGJyPgotWzY3Mzk4XSAuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTkxNDEuanMgbGluZSA3
MzogVHlwZUVycm9yOiBPYmplY3QgLyg/Onh4fHgpKi8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC8o
Pzp4eHx4KSovKSBkb2VzIG5vdCBhbGxvdyBjYWxscy48YnI+CitbMTI4NV0gLi9qczFfMi9yZWdl
eHAvcmVncmVzcy05MTQxLmpzIGxpbmUgNzM6IFR5cGVFcnJvcjogT2JqZWN0IC8oPzp4eHx4KSov
IChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvKD86eHh8eCkqLykgZG9lcyBub3QgYWxsb3cgY2FsbHMu
PGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMzMnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3Jt
LmpzJz5qczFfMi9yZWdleHAvc2ltcGxlX2Zvcm0uanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsg
PGEgaHJlZj0nI2ZhaWx1cmUzMic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTM0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpz
Jz5qczFfMi9yZWdleHAvc2ltcGxlX2Zvcm0uanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUzMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTM1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2Ug
dGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdh
czo8YnI+Ci1MRUFLOiAzMjkgS0pTOjpOb2RlPGJyPgogLS0+IEV4ZWN1dGluZyBzY3JpcHQ6IHNp
bXBsZV9mb3JtLmpzPGJyPgogLS0+IEFzIGRlc2NyaWJlZCBpbiBOZXRzY2FwZSBkb2MgIldoYXRz
IG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIgUmVnRXhwOiBzaW1wbGUgZm9ybTxicj4KLVs2NzM5OV0g
Li9qczFfMi9yZWdleHAvc2ltcGxlX2Zvcm0uanMgbGluZSA0MzogVHlwZUVycm9yOiBPYmplY3Qg
L1swLTldezN9LyAocmVzdWx0IG9mIGV4cHJlc3Npb24gL1swLTldezN9LykgZG9lcyBub3QgYWxs
b3cgY2FsbHMuPGJyPgorWzEyODZdIC4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzIGxpbmUg
NDM6IFR5cGVFcnJvcjogT2JqZWN0IC9bMC05XXszfS8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9b
MC05XXszfS8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTM0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV8yL3JlZ2V4cC9zdHJpbmdfc3BsaXQuanMnPmpzMV8yL3JlZ2V4cC9zdHJpbmdf
c3BsaXQuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMyc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM1Jz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdm
YWlsdXJlMzUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vanMxXzIvcmVnZXhwL3N0cmluZ19zcGxpdC5qcyc+anMxXzIvcmVnZXhwL3N0cmluZ19z
cGxpdC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM0Jz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzYnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBG
YWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+ICdhYmMnLnNwbGl0KC9bYS16XS8pID0gLCws
IEZBSUxFRCEgZXhwZWN0ZWQ6ICwsPGJyPgpAQCAtNDMyLDE1NSArNDQwLDEzOSBAQCBGYWlsdXJl
IG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+ICdhYmMnLnNwbGl0KG5ldyBSZWdFeHAoJ1thLXpdJykp
ID0gLCwsIEZBSUxFRCEgZXhwZWN0ZWQ6ICwsPGJyPgogLS0+ICdhYmMnLnNwbGl0KG5ldyBSZWdF
eHAoJ1thLXpdJykpID0gLCwsIEZBSUxFRCEgZXhwZWN0ZWQ6ICwsPGJyPgogPC90dD48YnI+Ci08
YSBuYW1lPSdmYWlsdXJlMzUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzIvdmVyc2lvbjEyMC9ib29sZWFuLTAwMS5qcyc+anMxXzIvdmVy
c2lvbjEyMC9ib29sZWFuLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScj
ZmFpbHVyZTM0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzYnPk5l
eHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmUzNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIwL2Jvb2xlYW4tMDAxLmpzJz5qczFf
Mi92ZXJzaW9uMTIwL2Jvb2xlYW4tMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhy
ZWY9JyNmYWlsdXJlMzUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUz
Nyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgogPHR0Pjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gbmV3IEJv
b2xlYW4oZmFsc2UpID0gdHJ1ZSBGQUlMRUQhIGV4cGVjdGVkOiBmYWxzZTxicj4KIDwvdHQ+PGJy
PgotPGEgbmFtZT0nZmFpbHVyZTM2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3Ro
ZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3ZlcnNpb24xMjAvcmVncmVzcy05OTY2My5qcyc+anMx
XzIvdmVyc2lvbjEyMC9yZWdyZXNzLTk5NjYzLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlMzUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUzNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTM3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3ZlcnNpb24xMjAvcmVncmVzcy05OTY2
My5qcyc+anMxXzIvdmVyc2lvbjEyMC9yZWdyZXNzLTk5NjYzLmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUzOCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFJlZ3Jlc3Npb24gdGVzdCBmb3Ig
QnVnemlsbGEgYnVnIDk5NjYzPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBT
ZWN0aW9uIDEgb2YgdGVzdCAtIGdvdCBFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaXQgRkFJ
TEVEISBleHBlY3RlZDogYSAicmVhZC1vbmx5IiBlcnJvcjxicj4KIC0tPiBTZWN0aW9uIDIgb2Yg
dGVzdCAtIGdvdCBFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaXQgRkFJTEVEISBleHBlY3Rl
ZDogYSAicmVhZC1vbmx5IiBlcnJvcjxicj4KIC0tPiBTZWN0aW9uIDMgb2YgdGVzdCAtIGdvdCBF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogaXQgRkFJTEVEISBleHBlY3RlZDogYSAicmVhZC1v
bmx5IiBlcnJvcjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTM3Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8zL1NjcmlwdC9m
dW5jdGlvbi0wMDEtbi5qcyc+anMxXzMvU2NyaXB0L2Z1bmN0aW9uLTAwMS1uLmpzPC9hPiBmYWls
ZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAyNzgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDEwMjc4PC9hPjxicj4K
LSBbIDxhIGhyZWY9JyNmYWlsdXJlMzYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUzOCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTM4Jz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8zL1NjcmlwdC9mdW5jdGlvbi0w
MDEtbi5qcyc+anMxXzMvU2NyaXB0L2Z1bmN0aW9uLTAwMS1uLmpzPC9hPiBmYWlsZWQ8L2I+IDxh
IGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzgn
IHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDEwMjc4PC9hPjxicj4KKyBbIDxhIGhy
ZWY9JyNmYWlsdXJlMzcnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUz
OSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAzLCBnb3QgMDxicj4KIFRlc3RjYXNlIHRl
cm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6
PGJyPgogT0suPGJyPgotTEVBSzogMzkxIEtKUzo6Tm9kZTxicj4KIC0tPiBCVUdOVU1CRVI6IDEw
Mjc4PGJyPgogLS0+IGZ1bmN0aW9uLTAwMS5qcyBmdW5jdGlvbnMgbm90IHNlcGFyYXRlZCBieSBz
ZW1pY29sb25zIGFyZSBlcnJvcnMgaW4gdmVyc2lvbiAxMjAgYW5kIGhpZ2hlcjxicj4KIC0tPiBl
dmFsKCJmdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoKXt9IikgPSB1bmRlZmluZWQgRkFJTEVEISBl
eHBlY3RlZDogZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzOCc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMy9TY3Jp
cHQvc2NyaXB0LTAwMS5qcyc+anMxXzMvU2NyaXB0L3NjcmlwdC0wMDEuanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUzNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTM5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzknPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzMvU2NyaXB0L3Nj
cmlwdC0wMDEuanMnPmpzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmU0MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4K
IFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNl
IG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzg5IEtKUzo6Tm9kZTxicj4KIC0tPiBzY3JpcHQtMDAx
IE5hdGl2ZVNjcmlwdDxicj4KLVs2NzQzNV0gLi9qczFfMy9TY3JpcHQvc2NyaXB0LTAwMS5qcyBs
aW5lIDEzMzogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNjcmlwdDxicj4K
K1sxMzEyXSAuL2pzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzIGxpbmUgMTMzOiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgogPC90dD48YnI+Ci08YSBuYW1l
PSdmYWlsdXJlMzknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzMvcmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qcyc+anMxXzMvcmVncmVzcy9m
dW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+
QnVnIE51bWJlciAxMDI3ODwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTM4Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDAnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1
cmU0MCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfMy9yZWdyZXNzL2Z1bmN0aW9uLTAwMS1uLmpzJz5qczFfMy9yZWdyZXNzL2Z1bmN0aW9u
LTAwMS1uLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVt
YmVyIDEwMjc4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzknPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0MSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAzLCBnb3QgMDxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgogT0suPGJyPgotTEVBSzogMzkxIEtKUzo6
Tm9kZTxicj4KIC0tPiBCVUdOVU1CRVI6IDEwMjc4PGJyPgogLS0+IGZ1bmN0aW9uLTAwMS5qcyBm
dW5jdGlvbnMgbm90IHNlcGFyYXRlZCBieSBzZW1pY29sb25zIGFyZSBlcnJvcnMgaW4gdmVyc2lv
biAxMjAgYW5kIGhpZ2hlcjxicj4KIC0tPiBldmFsKCJmdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGco
KXt9IikgPSB1bmRlZmluZWQgRkFJTEVEISBleHBlY3RlZDogZXJyb3I8YnI+CiA8L3R0Pjxicj4K
LTxhIG5hbWU9J2ZhaWx1cmU0MCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpzJz5qczFf
NS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlMzknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmU0MSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgotPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KLVRlc3RjYXNl
IHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KLUNvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3
YXM6PGJyPgotTEVBSzogMzIzIEtKUzo6Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0nZmFp
bHVyZTQxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVm
PScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIuanMnPmpzMV81L0V4Y2VwdGlvbnMv
Y2F0Y2hndWFyZC0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorPGEgbmFtZT0nZmFpbHVyZTQx
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDEuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hn
dWFyZC0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0MCc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQyJz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhw
ZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNp
Z25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjMg
S0pTOjpOb2RlPGJyPgotPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNDInPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9u
cy9jYXRjaGd1YXJkLTAwMy5qcyc+anMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMy5qczwv
YT4gZmFpbGVkPC9iPiA8YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+
Cis8YSBuYW1lPSdmYWlsdXJlNDInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMi5qcyc+anMx
XzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8
YSBocmVmPScjZmFpbHVyZTQxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlNDMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6Ok5vZGU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2Zh
aWx1cmU0Myc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfNS9FeGNlcHRpb25zL2VycnN0YWNrLTAwMS5qcyc+anMxXzUvRXhjZXB0aW9ucy9l
cnJzdGFjay0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorVGVzdGNhc2UgcHJvZHVjZWQgbm8g
b3V0cHV0ITwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQzJz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hn
dWFyZC0wMDMuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDMuanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0Mic+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTQ0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiA0NzMgS0pTOjpOb2RlPGJyPgotWzY3NDkw
XSAuL2pzMV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzIGxpbmUgMjQ3OiBUeXBlRXJyb3I6
IFVuZGVmaW5lZCB2YWx1ZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTQ0Jz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4
Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qcyc+anMxXzUvRXhjZXB0aW9ucy9yZWdyZXNzLTUwNDQ3
LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTA0NDcnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDUw
NDQ3PC9hPjxicj4KK1Rlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KKzxhIG5h
bWU9J2ZhaWx1cmU0NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRv
dycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2VycnN0YWNrLTAwMS5qcyc+anMxXzUvRXhjZXB0
aW9ucy9lcnJzdGFjay0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2Zh
aWx1cmU0Myc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQ1Jz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRl
ZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1M
RUFLOiA2NTQgS0pTOjpOb2RlPGJyPgotLS0+IEJVR05VTUJFUjogNTA0NDc8YnI+Ci0tLT4gU1RB
VFVTOiBUZXN0IChub24tRUNNQSkgRXJyb3Igb2JqZWN0IHByb3BlcnRpZXMgZmlsZU5hbWUsIGxp
bmVOdW1iZXI8YnI+Ci1bNjc0OTFdIC4vanMxXzUvRXhjZXB0aW9ucy9yZWdyZXNzLTUwNDQ3Lmpz
IGxpbmUgNjU6IFR5cGVFcnJvcjogVW5kZWZpbmVkIHZhbHVlPGJyPgorWzEzNTddIC4vanMxXzUv
RXhjZXB0aW9ucy9lcnJzdGFjay0wMDEuanMgbGluZSAyNDc6IFR5cGVFcnJvcjogVW5kZWZpbmVk
IHZhbHVlPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNDUnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dldHNl
dC0wMDEuanMnPmpzMV81L0dldFNldC9nZXRzZXQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KzxhIG5hbWU9J2ZhaWx1cmU0NSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanMnPmpzMV81
L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRw
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDQ3JyB0YXJnZXQ9J290
aGVyX3dpbmRvdyc+QnVnIE51bWJlciA1MDQ0NzwvYT48YnI+CiAgWyA8YSBocmVmPScjZmFpbHVy
ZTQ0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDYnPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0
dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdp
dGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6
IDMyMyBLSlM6Ok5vZGU8YnI+CistLT4gQlVHTlVNQkVSOiA1MDQ0Nzxicj4KKy0tPiBTVEFUVVM6
IFRlc3QgKG5vbi1FQ01BKSBFcnJvciBvYmplY3QgcHJvcGVydGllcyBmaWxlTmFtZSwgbGluZU51
bWJlcjxicj4KK1sxMzU4XSAuL2pzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qcyBsaW5l
IDY1OiBUeXBlRXJyb3I6IFVuZGVmaW5lZCB2YWx1ZTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTQ2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV81L0dldFNldC9nZXRzZXQtMDAyLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAw
Mi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDYnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dl
dHNldC0wMDEuanMnPmpzMV81L0dldFNldC9nZXRzZXQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmU0Nyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4K
IFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNl
IG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzIzIEtKUzo6Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEg
bmFtZT0nZmFpbHVyZTQ3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV81L0dldFNldC9nZXRzZXQtMDAzLmpzJz5qczFfNS9HZXRTZXQvZ2V0
c2V0LTAwMy5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRw
dXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dldHNldC0wMDIuanMn
PmpzMV81L0dldFNldC9nZXRzZXQtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhy
ZWY9JyNmYWlsdXJlNDYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0
OCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRl
cm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6
PGJyPgotTEVBSzogMzIzIEtKUzo6Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVy
ZTQ4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMS5qcyc+anMxXzUvT2JqZWN0L3JlZ3Jlc3Mt
OTA1OTYtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KK1Rlc3RjYXNlIHByb2R1Y2VkIG5vIG91
dHB1dCE8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMy5q
cyc+anMxXzUvR2V0U2V0L2dldHNldC0wMDMuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEg
aHJlZj0nI2ZhaWx1cmU0Nyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTQ5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2Ug
dGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdh
czo8YnI+Ci1MRUFLOiA3NjUgS0pTOjpOb2RlPGJyPgotWzY3NTE2XSAuL2pzMV81L09iamVjdC9y
ZWdyZXNzLTkwNTk2LTAwMS5qcyBsaW5lIDQ4OiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAo
cmVzdWx0IG9mIGV4cHJlc3Npb24gb2JqLnRvU291cmNlKSBpcyBub3Qgb2JqZWN0Ljxicj4KLTwv
dHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTQ5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5q
cyc+anMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
K1Rlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0
OSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9q
czFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTkw
NTk2LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTQ4Jz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTAnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBl
Y3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2ln
bmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDc2OSBL
SlM6Ok5vZGU8YnI+Ci1bNjc1MTddIC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAyLmpz
IGxpbmUgNDg6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiB1bmV2YWw8YnI+
CitbMTM3M10gLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanMgbGluZSA0ODogVHlw
ZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJj
ZSkgaXMgbm90IG9iamVjdC48YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1MCc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9P
YmplY3QvcmVncmVzcy05NjI4NC0wMDEuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAw
MS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cis8YSBuYW1lPSdmYWlsdXJlNTAnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3Jl
Z3Jlc3MtOTA1OTYtMDAyLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDIuanM8L2E+
IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0OSc+UHJldmlvdXMgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTUxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2Rl
IDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29t
cGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzOTcgS0pTOjpOb2RlPGJyPgot
WzY3NTE5XSAuL2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMS5qcyBsaW5lIDQ5OiBUeXBl
RXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gb2JqMS50b1NvdXJj
ZSkgaXMgbm90IG9iamVjdC48YnI+CitbMTM3NF0gLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5
Ni0wMDIuanMgbGluZSA0ODogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IHVu
ZXZhbDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTUxJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNz
LTk2Mjg0LTAwMi5qcyc+anMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAyLmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0w
MDEuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTUwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlNTInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+
CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2Fz
ZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDM5NyBLSlM6Ok5vZGU8YnI+Ci1bNjc1MjBdIC4vanMx
XzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAyLmpzIGxpbmUgNDk6IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiB1bmV2YWw8YnI+CitbMTM3Nl0gLi9qczFfNS9PYmplY3QvcmVn
cmVzcy05NjI4NC0wMDEuanMgbGluZSA0OTogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJl
c3VsdCBvZiBleHByZXNzaW9uIG9iajEudG9Tb3VyY2UpIGlzIG5vdCBvYmplY3QuPGJyPgogPC90
dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzJz5q
czFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0
cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDAwOScgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNDQwMDk8L2E+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTUy
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qcyc+anMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYy
ODQtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNTEnPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1Myc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVj
dGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWdu
YWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzk2IEtK
Uzo6Tm9kZTxicj4KK1sxMzc3XSAuL2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qcyBs
aW5lIDQ5OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogdW5ldmFsPGJyPgor
PC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNTMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5Lmpz
Jz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0n
aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00NDAwOScgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNDQwMDk8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2Zh
aWx1cmU1Mic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTU0Jz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
Cis8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgorVGVzdGNhc2UgdGVybWluYXRl
ZCB3aXRoIHNpZ25hbCAwPGJyPgorQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CiAt
LT4gQlVHTlVNQkVSOiA0NDAwOTxicj4KIC0tPiBTVEFUVVM6IFRlc3RpbmcgdGhhdCB3ZSBkb24n
dCBjcmFzaCBvbiBvYmoudG9Tb3VyY2UoKTxicj4KLVs2NzUyNV0gLi9qczFfNS9SZWdyZXNzL3Jl
Z3Jlc3MtNDQwMDkuanMgbGluZSA2MDogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3Vs
dCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJjZSkgaXMgbm90IG9iamVjdC48YnI+CitbMTM4Ml0g
Li9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanMgbGluZSA2MDogVHlwZUVycm9yOiBWYWx1
ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJjZSkgaXMgbm90IG9i
amVjdC48YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1Myc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtNjg0OTgtMDAzLmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNjg0OTgtMDAzLmpzPC9hPiBm
YWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Njg0OTgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDY4NDk4PC9hPjxi
cj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmU1NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTU0Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVz
cy02ODQ5OC0wMDMuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy02ODQ5OC0wMDMuanM8L2E+IGZh
aWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD02ODQ5OCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNjg0OTg8L2E+PGJy
PgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU1Myc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTU1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogVGVzdGluZyBjYWxsaW5nIG9iai5l
dmFsKHN0cik8YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFty
ZXBvcnRlZCBmcm9tIHRlc3QoKV0gVGVzdGluZyBjYWxsaW5nIG9iai5ldmFsKHN0cik7IGN1cnJl
bnRseSBhdCBleHBlY3RbMV0gd2l0aGluIHRlc3QgLTxicj4KQEAgLTU4OCw4ICs1ODAsOCBAQCBG
YWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzQzJywgQWN0dWFsIHZhbHVlICdmYWxzZSc8YnI+CiAtLT4g
RkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9
J2ZhaWx1cmU1NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTAzNjAyLmpzJz5qczFfNS9SZWdyZXNzL3Jl
Z3Jlc3MtMTAzNjAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNjAyJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+
QnVnIE51bWJlciAxMDM2MDI8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU1Myc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTU1Jz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWls
dXJlNTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9
Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNz
LTEwMzYwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxs
YS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYwMicgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBO
dW1iZXIgMTAzNjAyPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTQnPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1Nic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFJl
YXNzaWdubWVudCB0byBhIGNvbnN0IGlzIE5PVCBhbiBlcnJvciBwZXIgRUNNQTxicj4KIEZhaWx1
cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBTZWN0aW9uIDEgb2YgdGVzdCAtPGJyPgpAQCAtNTk5LDMxICs1OTEsMjggQEAgRmFpbHVyZSBt
ZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4
cGVjdGVkIHZhbHVlICcxJywgQWN0dWFsIHZhbHVlICcyJzxicj4KIC0tPiBGQUlMRUQhOiBbcmVw
b3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTU1Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81
L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcu
anM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU1NCc+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTU2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJl
NTYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
anMxXzUvUmVncmVzcy9yZWdyZXNzLTEwNDA3Ny5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTEw
NDA3Ny5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTU1Jz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTcnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3Rl
ZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFs
IDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6
Ok5vZGU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1Nic+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtMTI3NTU3LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzPC9hPiBmYWlsZWQ8
L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI2ZhaWx1cmU1Nyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90
b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorVGVzdGNhc2UgcHJvZHVjZWQgbm8gb3V0cHV0ITwv
dHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTU3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMjc1NTcuanMn
PmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMjc1NTcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsg
PGEgaHJlZj0nI2ZhaWx1cmU1Nic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTU4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNh
c2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0
IHdhczo8YnI+Ci1MRUFLOiA0MTkgS0pTOjpOb2RlPGJyPgotWzY3NjYxXSAuL2pzMV81L1JlZ3Jl
c3MvcmVncmVzcy0xMjc1NTcuanMgbGluZSA3NTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IGNsb25lPGJyPgorWzE0MDhdIC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1
Ny5qcyBsaW5lIDc1OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogY2xvbmU8
YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1Nyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcy
Njk5LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmU1OCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTU4Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVz
cy0xNzI2OTkuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzI2OTkuanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU1Nyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTU5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAz
PGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVz
dGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzOTcgS0pTOjpOb2RlPGJyPgotWzY3NzYwXSAu
L2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzI2OTkuanMgbGluZSA2MTogVVJJRXJyb3I6IFVSSSBl
cnJvcjxicj4KK1sxNDE5XSAuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzI2OTkuanMgbGluZSA2
MTogVVJJRXJyb3I6IFVSSSBlcnJvcjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTU4
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV81L1JlZ3Jlc3MvcmVncmVzcy0xNzk1MjQuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzk1
MjQuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzk1MjQnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVy
IDE3OTUyNDwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTU3Jz5QcmV2aW91cyBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
dGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1OSc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9S
ZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0Lmpz
PC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc5NTI0JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxNzk1
MjQ8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU1OCc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTYwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogRG9uJ3QgY3Jhc2gg
b24gZXh0cmFuZW91cyBhcmd1bWVudHMgdG8gc3RyLm1hdGNoKCksIGV0Yy48YnI+CiBGYWlsdXJl
IG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0g
U2VjdGlvbiAxNCBvZiB0ZXN0IC08YnI+CkBAIC02NzMsMTYgKzY2MiwyMiBAQCBGYWlsdXJlIG1l
c3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhw
ZWN0ZWQgdmFsdWUgJ1NIT1VMRCBIQVZFIEZBTExFTiBJTlRPIENBVENILUJMT0NLIScsIEFjdHVh
bCB2YWx1ZSAnQUJDIFpiYyc8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1OSc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9TY29wZS9yZWdyZXNzLTIy
MDU4NC5qcyc+anMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanM8L2E+IGZhaWxlZDwvYj4gPGJy
PgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU1OCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTYwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlNjAnPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvU2NvcGUvcmVncmVzcy0x
ODQxMDcuanMnPmpzMV81L1Njb3BlL3JlZ3Jlc3MtMTg0MTA3LmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmU2MSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4K
IFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNl
IG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzk3IEtKUzo6Tm9kZTxicj4KLVs2NzgyM10gLi9qczFf
NS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qcyBsaW5lIDU2OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgorWzE0MzVdIC4vanMxXzUvU2NvcGUvcmVncmVzcy0x
ODQxMDcuanMgbGluZSAxMjM6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiB5
PGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNjAnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvU2NvcGUvc2NvcGUtMDAxLmpz
Jz5qczFfNS9TY29wZS9zY29wZS0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD01MzI2OCcgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnPkJ1ZyBOdW1iZXIgNTMyNjg8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU1
OSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTYxJz5OZXh0IEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBu
YW1lPSdmYWlsdXJlNjEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMnPmpzMV81L1Njb3BlL3Jl
Z3Jlc3MtMjIwNTg0LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJl
NjAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2Mic+TmV4dCBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0
PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0
aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgorWzE0NDRd
IC4vanMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMgbGluZSA1NjogUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IFNjcmlwdDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFp
bHVyZTYyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVm
PScuL2pzMV81L1Njb3BlL3Njb3BlLTAwMS5qcyc+anMxXzUvU2NvcGUvc2NvcGUtMDAxLmpzPC9h
PiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTMyNjgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDUzMjY4PC9h
Pjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNjEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmU2Myc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3Rpbmcgc2NvcGUgYWZ0
ZXIgY2hhbmdpbmcgb2JqLl9fcHJvdG9fXzxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTdGVwIDE6ICBzZXR0aW5nIG9i
ai5fX3Byb3RvX18gPSBnbG9iYWwgb2JqZWN0PGJyPgpAQCAtNjkzLDggKzY4OCw4IEBAIEZhaWx1
cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBFeHBlY3RlZCB2YWx1ZSAndW5kZWZpbmVkJywgQWN0dWFsIHZhbHVlICcxJzxicj4KIC0tPiBG
QUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTYxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDE1NzQuanMnPmpzMV82L1JlZ3Jlc3MvcmVn
cmVzcy0zMDE1NzQuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE1NzQnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5C
dWcgTnVtYmVyIDMwMTU3NDwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTYwJz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjInPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1
cmU2Myc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzAxNTc0LmpzJz5qczFfNi9SZWdyZXNzL3JlZ3Jlc3Mt
MzAxNTc0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxNTc0JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51
bWJlciAzMDE1NzQ8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU2Mic+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTY0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogRTRY
IHNob3VsZCBiZSBlbmFibGVkIGV2ZW4gd2hlbiBlNHg9MSBub3Qgc3BlY2lmaWVkPGJyPgogRmFp
bHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBFNFggc2hvdWxkIGJlIGVuYWJs
ZWQgZXZlbiB3aGVuIGU0eD0xIG5vdCBzcGVjaWZpZWQ6IFhNTCgpPGJyPgpAQCAtNzA0LDMwICs2
OTksMjcgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBFeHBlY3Rl
ZCB2YWx1ZSAnTm8gZXJyb3InLCBBY3R1YWwgdmFsdWUgJ2Vycm9yOiBSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogWE1MJzxicj4KIC0tPiBGQUlMRUQhOiA8YnI+CiA8L3R0Pjxi
cj4KLTxhIG5hbWU9J2ZhaWx1cmU2Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzA5MjQyLmpzJz5qczFf
Ni9SZWdyZXNzL3JlZ3Jlc3MtMzA5MjQyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhy
ZWY9JyNmYWlsdXJlNjEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2
Myc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTY0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDkyNDIuanMn
PmpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDkyNDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsg
PGEgaHJlZj0nI2ZhaWx1cmU2Myc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTY1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNh
c2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0
IHdhczo8YnI+Ci1MRUFLOiAxMjEyIEtKUzo6Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTYzJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMTQ4ODcuanMnPmpzMV82L1JlZ3Jlc3MvcmVn
cmVzcy0zMTQ4ODcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU2
Mic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTY0Jz5OZXh0IEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CitUZXN0
Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNjUnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYv
UmVncmVzcy9yZWdyZXNzLTMxNDg4Ny5qcyc+anMxXzYvUmVncmVzcy9yZWdyZXNzLTMxNDg4Ny5q
czwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTY0Jz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0
IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+
CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDEyMTIgS0pTOjpOb2Rl
PGJyPgotPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNjQnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2
NTkxLmpzJz5qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanM8L2E+IGZhaWxlZDwvYj4gPGEg
aHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDY1OTEn
IHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDMwNjU5MTwvYT48YnI+Ci0gWyA8YSBo
cmVmPScjZmFpbHVyZTYzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
NjUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KK1Rlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KKzxhIG5hbWU9
J2ZhaWx1cmU2Nic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanMnPmpzMV82L1N0cmluZy9yZWdy
ZXNzLTMwNjU5MS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjU5MScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1
ZyBOdW1iZXIgMzA2NTkxPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNjUnPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2Nyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4
aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxi
cj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMTIxMiBLSlM6Ok5v
ZGU8YnI+CiAtLT4gQlVHTlVNQkVSOiAzMDY1OTE8YnI+CiAtLT4gU1RBVFVTOiBTdHJpbmcgc3Rh
dGljIG1ldGhvZHM8YnI+CiAtLT4gU1RBVFVTOiBTZWUgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA0ODI4PGJyPgotWzY3ODQ1XSAuL2pzMV82L1N0cmluZy9y
ZWdyZXNzLTMwNjU5MS5qcyBsaW5lIDQ4OiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVz
dWx0IG9mIGV4cHJlc3Npb24gU3RyaW5nLnNwbGl0KSBpcyBub3Qgb2JqZWN0Ljxicj4KK1sxNDY2
XSAuL2pzMV82L1N0cmluZy9yZWdyZXNzLTMwNjU5MS5qcyBsaW5lIDQ4OiBUeXBlRXJyb3I6IFZh
bHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gU3RyaW5nLnNwbGl0KSBpcyBub3Qg
b2JqZWN0Ljxicj4KIDwvdHQ+PGJyPgogPC9kbD4KIFsgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IHwgPGEgaHJlZj0nI2ZhaWxfZGV0YWlsJz5Ub3Agb2YgRmFpbHVyZXM8L2E+
IF08YnI+CkBAIC03MzUsMTUgKzcyNywxNiBAQCBMRUFLOiAxMjEyIEtKUzo6Tm9kZTxicj4KIDxw
cmU+CiA8YSBuYW1lPSdyZXRlc3RfbGlzdCc+PC9hPgogPGgyPlJldGVzdCBMaXN0PC9oMj48YnI+
Ci0jIFJldGVzdCBMaXN0LCBranMsIGdlbmVyYXRlZCBUaHUgSnVsIDE5IDEzOjEwOjA4IDIwMDcu
CisjIFJldGVzdCBMaXN0LCBranMsIGdlbmVyYXRlZCBUaHUgQXVnICAyIDIxOjUzOjMyIDIwMDcu
CiAjIE9yaWdpbmFsIHRlc3QgYmFzZSB3YXM6IEFsbCB0ZXN0cy4KLSMgMTEyNyBvZiAxMTM1IHRl
c3Qocykgd2VyZSBjb21wbGV0ZWQsIDY0IGZhaWx1cmVzIHJlcG9ydGVkLgorIyAxMTI3IG9mIDEx
MzUgdGVzdChzKSB3ZXJlIGNvbXBsZXRlZCwgNjYgZmFpbHVyZXMgcmVwb3J0ZWQuCiBlY21hL1R5
cGVDb252ZXJzaW9uLzkuMy4xLTMuanMKIGVjbWFfMi9FeGNlcHRpb25zL2Z1bmN0aW9uLTAwMS5q
cwogZWNtYV8yL1JlZ0V4cC9yZWdyZXNzLTAwMS5qcwogZWNtYV8yL1JlZ0V4cC91bmljb2RlLTAw
MS5qcwogZWNtYV8zL0RhdGUvMTUuOS41LjcuanMKIGVjbWFfMy9GdW5FeHByL2ZlLTAwMS5qcwor
ZWNtYV8zL0Z1bmN0aW9uL3Njb3BlLTAwMS5qcwogZWNtYV8zL1JlZ0V4cC8xNS4xMC4yLTEuanMK
IGVjbWFfMy9SZWdFeHAvcGVybHN0cmVzcy0wMDEuanMKIGVjbWFfMy9SZWdFeHAvcGVybHN0cmVz
cy0wMDIuanMKQEAgLTc5Niw2ICs3ODksNyBAQCBqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTA0MDc3
LmpzCiBqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzCiBqczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtMTcyNjk5LmpzCiBqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0LmpzCitqczFfNS9TY29w
ZS9yZWdyZXNzLTE4NDEwNy5qcwoganMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMKIGpzMV81
L1Njb3BlL3Njb3BlLTAwMS5qcwoganMxXzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qcwpJbmRl
eDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4MzUpCisrKyBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAwNy0wOC0wMiAgQ2FtZXJvbiBad2Fy
aWNoICA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZm9yd2FyZGluZyBoZWFkZXJzIGZvciBranMvQ29t
bW9uSWRlbnRpZmllcnMuaC4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNo
RnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNo
VHJhaXRzLmg6IEFkZGVkLgorCiAyMDA3LTA3LTE2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgpJbmRleDogSmF2YVNjcmlwdEdsdWUv
Rm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oCShyZXZpc2lv
biAwKQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlv
bnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0hhc2hGdW5jdGlvbnMuaD4KSW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJz
L3d0Zi9IYXNoVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL0hhc2hUcmFpdHMuaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRHbHVl
L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoVHJhaXRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYXNoVHJhaXRzLmg+CkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjQ4MzUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0
IEBACisyMDA3LTA4LTAyICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNh
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
V2ViQ29yZSB3b3JrIHdpdGggdGhlIG5ldyB2YXJpYWJsZSBsb29rdXAgb3B0aW1pemF0aW9ucyBp
bgorICAgICAgICBKYXZhU2NyaXB0Q29yZS4gSW4gcGFydGljdWxhciwgYWRkIGZvcndhcmRpbmcg
aGVhZGVycyBmb3IKKyAgICAgICAga2pzL0NvbW1vbklkZW50aWZpZXJzLmgsIGFkZCBleHBsaWNp
dCBXZWJDb3JlOjogbmFtZXNwYWNlIG1hcmtpbmdzIHRvCisgICAgICAgIGF2b2lkIHByb2JsZW1z
IHdpdGggbmV3IHN5bWJvbHMgaW4gdGhlIGV4cG9ydGVkIEtKUyBuYW1lc3BhY2VzLCBhbmQKKyAg
ICAgICAgc3VwcG9ydCB0aGUgbmV3IG1ldGhvZCBvZiBwYXNzaW5nIGFyb3VuZCBSZWFkT25seSBh
dHRyaWJ1dGVzLgorCisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlv
bnMuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAg
KEtKUzo6WFNMVFByb2Nlc3NvclByb3RvdHlwZUZ1bmN0aW9uOjpjYWxsQXNGdW5jdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3MvanMva2pzX2JpbmRpbmcuY3BwOgorICAgICAgICAoS0pTOjpTY3Jp
cHRJbnRlcnByZXRlcjo6Z2V0RE9NTm9kZUZvckRvY3VtZW50KToKKyAgICAgICAgKEtKUzo6U2Ny
aXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU5vZGVGb3JEb2N1bWVudCk6CisgICAgICAgIChLSlM6
OlNjcmlwdEludGVycHJldGVyOjpwdXRET01Ob2RlRm9yRG9jdW1lbnQpOgorICAgICAgICAoS0pT
OjpTY3JpcHRJbnRlcnByZXRlcjo6dXBkYXRlRE9NTm9kZURvY3VtZW50KToKKwogMjAwNy0wOC0w
MiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEdlb2ZmCkluZGV4OiBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0
aW9ucy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFz
aEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSGFzaEZ1bmN0aW9ucy5oPgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDI0NDIzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDggQEAg
Ym9vbCBKU0RPTVdpbmRvdzo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbAogICAgIH0KIAogICAgIC8v
IExvb2sgZm9yIG92ZXJyaWRlcyBmaXJzdAotICAgIEtKUzo6SlNWYWx1ZSoqIHZhbCA9IGdldERp
cmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CisgICAgYm9vbCBybzsKKyAgICBLSlM6OkpTVmFs
dWUqKiB2YWwgPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUsIHJvKTsKICAgICBpZiAo
dmFsKSB7CiAgICAgICAgIGlmICghaXNTYWZlU2NyaXB0KGV4ZWMpKSB7CiAgICAgICAgICAgICBz
bG90LnNldFVuZGVmaW5lZCh0aGlzKTsKQEAgLTY1LDcgKzY2LDcgQEAgYm9vbCBKU0RPTVdpbmRv
dzo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbAogICAgICAgICBpZiAoX3Byb3AuaGFzR2V0dGVyU2V0
dGVyUHJvcGVydGllcygpICYmIHZhbFswXS0+dHlwZSgpID09IEtKUzo6R2V0dGVyU2V0dGVyVHlw
ZSkKICAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgdmFsKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhpcywgdmFsKTsKKyAgICAg
ICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsIHZhbCwgcm8pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5j
cHAJKHJldmlzaW9uIDI0NDIzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNz
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIEpTVmFsdWUgKlhTTFRQcm9j
ZXNzb3JQcm90b3R5cGVGdW5jdGlvbjoKICAgICAgICAgICAgIEpTVmFsdWUgKm5vZGVWYWwgPSBh
cmdzWzBdOwogICAgICAgICAgICAgSlNWYWx1ZSAqZG9jVmFsID0gYXJnc1sxXTsKICAgICAgICAg
ICAgIGlmIChub2RlVmFsLT5pc09iamVjdCgmSlNOb2RlOjppbmZvKSAmJiBkb2NWYWwtPmlzT2Jq
ZWN0KCZKU0RvY3VtZW50OjppbmZvKSkgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBz
dGF0aWNfY2FzdDxKU05vZGUqPihub2RlVmFsKS0+aW1wbCgpOworICAgICAgICAgICAgICAgIFdl
YkNvcmU6Ok5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxKU05vZGUqPihub2RlVmFsKS0+aW1wbCgp
OwogICAgICAgICAgICAgICAgIERvY3VtZW50KiBkb2MgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KHN0YXRpY19jYXN0PEpTRG9jdW1lbnQgKj4oZG9jVmFsKS0+aW1wbCgpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBwcm9jZXNzb3IudHJhbnNmb3JtVG9GcmFnbWVudChub2Rl
LCBkb2MpLmdldCgpKTsKICAgICAgICAgICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
a2pzX2JpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2Jp
bmRpbmcuY3BwCShyZXZpc2lvbiAyNDQyMykKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2Jp
bmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBFdmVudE5hbWVzOwogbmFtZXNwYWNlIEtKUyB7CiAKIHR5cGVkZWYgSGFzaE1hcDx2b2lkKiwg
RE9NT2JqZWN0Kj4gRE9NT2JqZWN0TWFwOwotdHlwZWRlZiBIYXNoTWFwPE5vZGUqLCBKU05vZGUq
PiBOb2RlTWFwOwordHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6Ok5vZGUqLCBKU05vZGUqPiBOb2Rl
TWFwOwogdHlwZWRlZiBIYXNoTWFwPERvY3VtZW50KiwgTm9kZU1hcCo+IE5vZGVQZXJEb2NNYXA7
CiAKIC8vIEZvciBkZWJ1Z2dpbmcsIGtlZXAgYSBzZXQgb2Ygd3JhcHBlcnMgY3VycmVudGx5IHJl
Z2lzdGVyZWQsIGFuZCBjaGVjayB0aGF0CkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBTY3JpcHRJ
bnRlcnByZXRlcjo6Zm9yZ2V0RE9NT2JqZWN0KAogICAgIGRvbU9iamVjdHMoKS5yZW1vdmUob2Jq
ZWN0SGFuZGxlKTsKIH0KIAotSlNOb2RlKiBTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NTm9kZUZv
ckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK0pTTm9kZSogU2NyaXB0
SW50ZXJwcmV0ZXI6OmdldERPTU5vZGVGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIFdl
YkNvcmU6Ok5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEpTTm9kZSo+KGRvbU9iamVjdHMoKS5nZXQobm9kZSkpOwpAQCAtMTY1LDcg
KzE2NSw3IEBAIEpTTm9kZSogU2NyaXB0SW50ZXJwcmV0ZXI6OmdldERPTU5vZGVGb3IKICAgICBy
ZXR1cm4gTlVMTDsKIH0KIAotdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NTm9kZUZv
ckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK3ZvaWQgU2NyaXB0SW50
ZXJwcmV0ZXI6OmZvcmdldERPTU5vZGVGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIFdl
YkNvcmU6Ok5vZGUqIG5vZGUpCiB7CiAgICAgUkVNT1ZFX1dSQVBQRVIoZ2V0RE9NTm9kZUZvckRv
Y3VtZW50KGRvY3VtZW50LCBub2RlKSk7CiAgICAgaWYgKCFkb2N1bWVudCkgewpAQCAtMTc3LDcg
KzE3Nyw3IEBAIHZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU5vZGVGb3IKICAgICAg
ICAgZG9jdW1lbnREaWN0LT5yZW1vdmUobm9kZSk7CiB9CiAKLXZvaWQgU2NyaXB0SW50ZXJwcmV0
ZXI6OnB1dERPTU5vZGVGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUs
IEpTTm9kZSogd3JhcHBlcikKK3ZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OnB1dERPTU5vZGVGb3JE
b2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIFdlYkNvcmU6Ok5vZGUqIG5vZGUsIEpTTm9kZSog
d3JhcHBlcikKIHsKICAgICBBRERfV1JBUFBFUih3cmFwcGVyKTsKICAgICBpZiAoIWRvY3VtZW50
KSB7CkBAIC0yMjgsNyArMjI4LDcgQEAgRXhlY1N0YXRlKiBTY3JpcHRJbnRlcnByZXRlcjo6Z2xv
YmFsRXhlYwogICAgIHJldHVybiBJbnRlcnByZXRlcjo6Z2xvYmFsRXhlYygpOwogfQogCi12b2lk
IFNjcmlwdEludGVycHJldGVyOjp1cGRhdGVET01Ob2RlRG9jdW1lbnQoTm9kZSogbm9kZSwgRG9j
dW1lbnQqIG9sZERvYywgRG9jdW1lbnQqIG5ld0RvYykKK3ZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6
OnVwZGF0ZURPTU5vZGVEb2N1bWVudChXZWJDb3JlOjpOb2RlKiBub2RlLCBEb2N1bWVudCogb2xk
RG9jLCBEb2N1bWVudCogbmV3RG9jKQogewogICAgIEFTU0VSVChvbGREb2MgIT0gbmV3RG9jKTsK
ICAgICBKU05vZGUqIHdyYXBwZXIgPSBnZXRET01Ob2RlRm9yRG9jdW1lbnQob2xkRG9jLCBub2Rl
KTsKSW5kZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQ4MzUpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTEgQEAKKzIwMDctMDgtMDIgIENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3
YXRlcmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgZm9yd2FyZGluZyBoZWFkZXJzIGZvciBDb21tb25JZGVudGlmaWVycy5oLgorCisg
ICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlvbnMuaDogQWRkZWQuCisK
IDIwMDctMDgtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFRpbQpJbmRleDogV2ViS2l0L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNo
RnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9I
YXNoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvRm9yd2FyZGluZ0hlYWRlcnMv
d3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hhc2hGdW5jdGlvbnMuaD4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NDIz
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMDctMDgtMDMgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMg
Zm9yIHRoZSB2YXJpYWJsZSBsb29rdXAgb3B0aW1pemF0aW9ucyBpbXBvcnRlZCBmcm9tIEtKUywg
YW5kIGEKKyAgICAgICAgZmV3IHNsaWdodCBjaGFuZ2VzIHRvIHRoZSBleHBlY3RlZCByZXN1bHRz
IG9mIGV4aXN0aW5nIHRlc3RzIGNhdXNlZCBieQorICAgICAgICB0aGUgbmV3IGNvZGUuIFRoZSBy
ZWxldmFudCByZXZpc2lvbnMgaW4gS0RFIGFyZQorCisgICAgICAgICAgICA2NzA1NDgKKyAgICAg
ICAgICAgIDY3MTQ4MQorICAgICAgICAgICAgNjcxNDg0CisgICAgICAgICAgICA2NzE1MzYKKyAg
ICAgICAgICAgIDY3MTU0MQorICAgICAgICAgICAgNjcxNTQ4CisgICAgICAgICAgICA2NzQxNjcK
KworICAgICAgICAqIGRvbS9odG1sL2xldmVsMi9odG1sL0hUTUxGcmFtZUVsZW1lbnQwOS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQxMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNjb3Bl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNj
b3BlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMva2RlL2NvbXBsZXRpb24tZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMva2RlL2Z1bmMtZGVjbC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMva2RlL2Z1bmMtZGVjbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL2tkZS9mdW5jdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9q
cy9rZGUvaXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9sdmFs
LWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9s
dmFsLWV4Y2VwdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvb3BlcmF0
b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvYXJndW1l
bnRzLXNjb3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvY29t
cGxldGlvbi5qczoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuYy1kZWNsLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuY3Rpb24uanM6Cisg
ICAgICAgICogZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2l0ZXJhdGlvbi5qczoKKyAgICAgICAgKiBm
YXN0L2pzL2tkZS9yZXNvdXJjZXMvbHZhbC1leGNlcHRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvb3BlcmF0b3JzLmpzOgorICAgICAgICAqIGZhc3QvanMv
a2RlL3Jlc291cmNlcy9zY29wZS5qczoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9zY29wZS1leHBl
Y3RlZC50eHQ6CisKIDIwMDctMDctMTggIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDIvaHRtbC9IVE1MRnJhbWVFbGVtZW50MDktZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxGcmFtZUVsZW1lbnQw
OS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwv
bGV2ZWwyL2h0bWwvSFRNTEZyYW1lRWxlbWVudDA5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2OTI6IFZhbHVlIGNvbXBs
ZXRlIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBzZXRVcFBhZ2UpIGlzIG5vdCBvYmplY3QuCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgNjkyOiBWYWx1ZSBjb21wbGV0ZSAocmVzdWx0IG9mIGV4cHJlc3Np
b24gc2V0VXBQYWdlKSBpcyBub3QgYW4gb2JqZWN0LgogVGVzdDoJaHR0cDovL3d3dy53My5vcmcv
MjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZlbDIvaHRtbC9IVE1MRnJhbWVFbGVtZW50MDkKIFN0YXR1
czoJU3VjY2VzcwpJbmRleDogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQxMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwyL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQxMS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQxMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgNjkyOiBWYWx1ZSBjb21wbGV0ZSAocmVzdWx0IG9mIGV4cHJl
c3Npb24gc2V0VXBQYWdlKSBpcyBub3Qgb2JqZWN0LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY5
MjogVmFsdWUgY29tcGxldGUgKHJlc3VsdCBvZiBleHByZXNzaW9uIHNldFVwUGFnZSkgaXMgbm90
IGFuIG9iamVjdC4KIFRlc3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUv
bGV2ZWwyL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQxMQogU3RhdHVzOglTdWNjZXNzCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9hcmd1bWVudHMtc2NvcGUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2FyZ3VtZW50cy1zY29wZS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9hcmd1bWVudHMt
c2NvcGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACitLREUgSlMg
VGVzdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0MAorUEFTUyB0
ZXN0MQorUEFTUyB0ZXN0MgorUEFTUyB0ZXN0MworUEFTUyB0ZXN0NC4oMSkKK1BBU1MgdGVzdDQu
KDIpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNjb3BlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNjb3BlLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9hcmd1bWVudHMtc2NvcGUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJLREUgSlMgVGVzdCIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2FyZ3VtZW50cy1zY29wZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9jb21wbGV0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9jb21wbGV0aW9uLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9jb21wbGV0
aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDExIEBAIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogUEFTUyBmb28oKSwgaSBpcyAyCiBQ
QVNTIGNhdWdodCBpcyB0cnVlCitQQVNTIHZhbCBpcyAxMQorUEFTUyB2YWwgaXMgMTIKK1BBU1Mg
dmFsIGlzIDEzCitQQVNTIHZhbCBpcyAxNAorUEFTUyB2YWwgaXMgMTUKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9rZGUvZnVuYy1kZWNsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL2tkZS9mdW5jLWRlY2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9rZGUvZnVuYy1kZWNsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMiBAQAorS0RFIEpTIFRlc3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgRnVuY3Rpb24gZGVjbGFyYXRpb24gdGFrZXMgZWZmZWN0IGF0IGVudHJ5CitQ
QVNTIERlY2wgbm90IHlldCBvdmVyd3JpdHRlbgorUEFTUyBBZnRlciBhc3NpZ24gKDApCitQQVNT
IGZ1bmN0aW9uIGRlY2xzIGhhdmUgbm8gZXhlY3V0aW9uIGNvbnRlbnQKK1BBU1MgQWZ0ZXIgYXNz
aWduICMyICgwKQorUEFTUyBEZWNsIGFscmVhZHkgb3ZlcndyaXR0ZW4KK1BBU1MgQWZ0ZXIgYXNz
aWduICgxKQorUEFTUyBmdW5jdGlvbiBkZWNscyBoYXZlIG5vIGV4ZWN1dGlvbiBjb250ZW50CitQ
QVNTIEFmdGVyIGFzc2lnbiAjMiAoMSkKK1BBU1MgRGVjbCBhbHJlYWR5IG92ZXJ3cml0dGVuCitQ
QVNTIEFmdGVyIGFzc2lnbiAoMikKK1BBU1MgZnVuY3Rpb24gZGVjbHMgaGF2ZSBubyBleGVjdXRp
b24gY29udGVudAorUEFTUyBBZnRlciBhc3NpZ24gIzIgKDIpCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9rZGUvZnVuYy1kZWNsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9r
ZGUvZnVuYy1kZWNsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tk
ZS9mdW5jLWRlY2wuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJLREUgSlMgVGVzdCIpOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Z1bmMtZGVjbC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9mdW5jdGlvbi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvZnVuY3Rpb24tZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1
bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNiBAQCBQQVNT
IG9yZ0Z1bmNDbG9uZSgnd29ybGQnKSBpcyAnSGVsbG8gd29yCiBQQVNTIGdyb3VwQ2xvbmUoMSwg
MikgaXMgOQogUEFTUyBTdHJpbmcoTWF0aC5zaW4pIGlzIHNpblN0cgogUEFTUyBzaGFkb3coKSBp
cyAyCi1QQVNTIG5lc3RlZHJldCBpcyAnb3V0ZXIgbmVzdCcKLVBBU1Mgbm90X25lc3RlZHJldCBp
cyAnZ2xvYmFsIG5lc3QnCiBQQVNTIHNhbXBsZS5wcm90b3R5cGUucHJvdG90eXBlIGlzIHVuZGVm
aW5lZC4KIFBBU1Mgc2FtcGxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9PSBzYW1wbGUgaXMgdHJ1
ZQogUEFTUyBjYXVnaHQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvaXRl
cmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tk
ZS9pdGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRlc3Rz
L2Zhc3QvanMva2RlL2l0ZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTks
NiArOSwyMiBAQCBQQVNTIGNvdW50IGlzIDEwCiBQQVNTIHByb3BlcnRpZXMgaXMgJ2E9MTE7Yj0y
MjsnCiBQQVNTIGxpc3QgaXMgJ1swXT0xMDA7WzFdPTEwMTsnCiBQQVNTIGxpc3QgaXMgJzEyMycK
K1BBU1MgaW1tZWRpYXRlV2hpbGVCcmVhayBpcyB1bmRlZmluZWQuCitQQVNTIGxhdGVyV2hpbGVC
cmVhayBpcyAnZm9vJworUEFTUyB3aGlsZUVuZCBpcyAyCitQQVNTIGltbWVkaWF0ZURvV2hpbGVC
cmVhayBpcyB1bmRlZmluZWQuCitQQVNTIGxhdGVyRG9XaGlsZUJyZWFrIGlzICdiYXInCitQQVNT
IGRvV2hpbGVFbmQgaXMgMworUEFTUyBpbW1lZGlhdGVGb3JCcmVhayBpcyB1bmRlZmluZWQuCitQ
QVNTIGxhdGVyRm9yQnJlYWsgaXMgJ3ppbGNoJworUEFTUyBmb3JFbmQgaXMgJ3F1YXJrJworUEFT
UyBpdGVycyBpcyAxMAorUEFTUyBmb286IGNvbnRpbnVlIGZvbzsgIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogSW52YWxpZCBjb250aW51ZSBzdGF0ZW1lbnQuLgorUEFTUyBjb250aW51ZTsg
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogSW52YWxpZCBjb250aW51ZSBzdGF0ZW1lbnQu
LgorUEFTUyBicmVhazsgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIGJyZWFr
IHN0YXRlbWVudC4uCitQQVNTIGZvbzogYnJlYWsgZm9vOyAgaXMgdW5kZWZpbmVkLgorUEFTUyBm
b286IHsgYSA9IDE7IGJyZWFrIGZvbzsgYSA9IDI7IH0gaXMgMQorUEFTUyBpdGVycyBpcyAxMAog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9sdmFsLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2x2YWwtZXhjZXB0aW9ucy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9sdmFsLWV4Y2Vw
dGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACitLREUgSlMg
VGVzdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBmdW5jdGlvbiAoKSAK
K3sKKyAgYSA9IHg7Cit9IHRocmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogeC4KK1BBU1MgZnVuY3Rpb24gKCkgCit7CisgIHggKz0gImZvbyI7Cit9IHRo
cmV3IGV4Y2VwdGlvbiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogeC4KK1BB
U1MgZnVuY3Rpb24gKCkgCit7CisgIGIgPSBhLng7Cit9IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0
aW9uCitQQVNTIGZ1bmN0aW9uICgpIAoreworICBiID0gYVsieCJdOworfSBkaWQgbm90IHRocm93
IGFuIGV4Y2VwdGlvbgorUEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAgYVsieCJdICs9ICJiYXoiOwor
fSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUyBhWyd4J10gaXMgInVuZGVmaW5lZGJh
eiIKK1BBU1MgZnVuY3Rpb24gKCkgCit7CisgIGIgPSBhLnk7Cit9IGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTIGZ1bmN0aW9uICgpIAoreworICBhLnkgKz0gImdsYXJjaCI7Cit9IGRp
ZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTIGFbJ3knXSBpcyAidW5kZWZpbmVkZ2xhcmNo
IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2x2YWwtZXhjZXB0aW9ucy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2x2YWwtZXhjZXB0aW9ucy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25zLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbigiS0RFIEpTIFRlc3QiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9sdmFsLWV4Y2VwdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvb3BlcmF0b3JzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9vcGVyYXRvcnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL29wZXJhdG9ycy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDEwIEBAIFBBU1MgISExIGlz
IHRydWUKIFBBU1MgITAgaXMgdHJ1ZQogUEFTUyAhISdhJyBpcyB0cnVlCiBQQVNTICEnJyBpcyB0
cnVlCitQQVNTICs5IGlzIDkKK1BBU1MgdmFyIGkgPSAxMDsgK2kgaXMgMTAKK1BBU1MgLTExIGlz
IC0xMQorUEFTUyB2YXIgaSA9IDEyOyAtaSBpcyAtMTIKIFBBU1MgdmFyIGkgPSAwOyArK2k7IGlz
IDEKIFBBU1MgdmFyIGkgPSAwOyArK2k7IGkgaXMgMQogUEFTUyB2YXIgaSA9IDA7IGkrKzsgaXMg
MApAQCAtMjUsNiArMjksOCBAQCBQQVNTIHZhciBpID0gdHJ1ZTsgaS0tIGlzIDEKIFBBU1MgdmFy
IGkgPSB0cnVlOyBpLS07IGkgaXMgMAogUEFTUyB+MCBpcyAtMQogUEFTUyB+MSBpcyAtMgorUEFT
UyB+TmFOIGlzIC0xCitQQVNTIH5JbmZpbml0eSBpcyAtMQogUEFTUyB+TWF0aC5wb3coMiwgMzMp
IGlzIC0xCiBQQVNTIH4oTWF0aC5wb3coMiwgMzIpICsgTWF0aC5wb3coMiwgMzEpICsgMikgaXMg
MjE0NzQ4MzY0NQogUEFTUyB+bnVsbCBpcyAtMQpAQCAtNDAsNiArNDYsMjEgQEAgUEFTUyAtOCA+
PiAyNCBpcyAtMQogUEFTUyA4ID4+PiAyIGlzIDIKIFBBU1MgLTggPj4+IDI0IGlzIDI1NQogUEFT
UyAoLTIyMDAwMDAwMDAgPj4gMSkgPDwgMSBpcyAyMDk0OTY3Mjk2CitQQVNTIEluZmluaXR5ID4+
IDEgaXMgMAorUEFTUyBJbmZpbml0eSA8PCAxIGlzIDAKK1BBU1MgSW5maW5pdHkgPj4+IDEgaXMg
MAorUEFTUyBOYU4gPj4gMSBpcyAwCitQQVNTIE5hTiA8PCAxIGlzIDAKK1BBU1MgTmFOID4+PiAx
IGlzIDAKK1BBU1MgOC4xID4+IDEgaXMgNAorUEFTUyA4LjEgPDwgMSBpcyAxNgorUEFTUyA4LjEg
Pj4+IDEgaXMgNAorUEFTUyA4LjkgPj4gMSBpcyA0CitQQVNTIDguOSA8PCAxIGlzIDE2CitQQVNT
IDguOSA+Pj4gMSBpcyA0CitQQVNTIE1hdGgucG93KDIsIDMyKSA+PiAxIGlzIDAKK1BBU1MgTWF0
aC5wb3coMiwgMzIpIDw8IDEgaXMgMAorUEFTUyBNYXRoLnBvdygyLCAzMikgPj4+IDEgaXMgMAog
UEFTUyAxKzIgaXMgMwogUEFTUyAnYScrJ2InIGlzICdhYicKIFBBU1MgJ2EnKzIgaXMgJ2EyJwpA
QCAtMTUyLDYgKzE3Myw4IEBAIFBBU1MgTmFOID09PSBOYU4gaXMgZmFsc2UKIFBBU1MgMC4wID09
PSAwIGlzIHRydWUKIFBBU1MgJ2FiYycgPT09ICdhYmMnIGlzIHRydWUKIFBBU1MgJ2EnID09PSAn
eCcgaXMgZmFsc2UKK1BBU1MgMSA9PT0gJzEnIGlzIGZhbHNlCitQQVNTICcxJyA9PT0gMSBpcyBm
YWxzZQogUEFTUyB0cnVlID09PSB0cnVlIGlzIHRydWUKIFBBU1MgZmFsc2UgPT09IGZhbHNlIGlz
IHRydWUKIFBBU1MgdHJ1ZSA9PT0gZmFsc2UgaXMgZmFsc2UKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMva2RlL3Njb3BlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2pzL2tkZS9zY29wZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9rZGUvc2NvcGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00
LDYgKzQsOSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAKIAog
UEFTUyBmKDIpIGlzIDIyCitQQVNTIE9CSkVDVC50b1N0cmluZygpIGlzICdoZWxsbycKK1BBU1Mg
cyBpcyAnaGVsbG8nCitQQVNTIGcgaXMgJ2ZvbycKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVz
b3VyY2VzL2FyZ3VtZW50cy1zY29wZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL2tkZS9yZXNvdXJjZXMvYXJndW1lbnRzLXNjb3BlLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2FyZ3VtZW50cy1zY29wZS5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MSBAQAorLy8gV2UgY2FuJ3QgdXNlIG5vcm1hbCBzaG91bGRCZSBo
ZXJlLCBzaW5jZSB0aGV5J2QgZXZhbCBpbiB0aGUgd3JvbmcgY29udGV4dC4uLgorCitmdW5jdGlv
biBzaG91bGRCZU9mVHlwZShtc2csIHZhbCwgdHlwZSkgeworICBpZiAodHlwZW9mKHZhbCkgIT0g
dHlwZSkKKyAgICB0ZXN0RmFpbGVkKG1zZyArICI6IHZhbHVlIGhhcyB0eXBlICIgKyB0eXBlb2Yo
dmFsKSArICIgLCBub3Q6IiArIHR5cGUpOworICBlbHNlCisgICAgdGVzdFBhc3NlZChtc2cpOwor
fQorCitmdW5jdGlvbiB0ZXN0MCgpIHsKKyAgICB2YXIgYXJndW1lbnRzOworICAgIC8vIHZhciBl
eGVjdXRpb24gc2hvdWxkIG5vdCBvdmVyd3JpdGUgc29tZXRoaW5nIHRoYXQgd2FzIAorICAgIC8v
IGluIHNjb3BlIGJlZm9yZWhhbmQgLS0gZS5nLiB0aGUgYXJndW1lbnRzIHRoaW5nCisgICAgc2hv
dWxkQmVPZlR5cGUoInRlc3QwIiwgYXJndW1lbnRzLCAnb2JqZWN0Jyk7CisgfQorCitmdW5jdGlv
biB0ZXN0MSgpIHsKKyAgICAvLyBObyBuZWVkIHRvIHVuZGVmLWluaXRpYWxpemUgc29tZXRoaW5n
IGluIHNjb3BlIGFscmVhZHkhCisgICAgc2hvdWxkQmVPZlR5cGUoInRlc3QxIiwgYXJndW1lbnRz
LCAnb2JqZWN0Jyk7CisgICAgdmFyIGFyZ3VtZW50czsKK30KKworZnVuY3Rpb24gdGVzdDIoYXJn
dW1lbnRzKSB7CisgICAgLy8gRm9ybWFscyBPVE9IIGNhbiBvdmVyd3JpdGUgdGhlIGFyZ3Mgb2Jq
ZWN0CisgICAgc2hvdWxkQmVPZlR5cGUoInRlc3QyIiwgYXJndW1lbnRzLCAnbnVtYmVyJyk7Cit9
CisKKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgLy8gRGl0dG8gZm9yIGZ1bmN0aW9ucy4uCisg
ICAgc2hvdWxkQmVPZlR5cGUoInRlc3QzIiwgYXJndW1lbnRzLCAnZnVuY3Rpb24nKTsKKyAgICBm
dW5jdGlvbiBhcmd1bWVudHMoKSB7fQorfQorCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICAvLyBI
ZXJlLCB0aGUgLWRlY2xhcmF0aW9uLSBwYXJ0IG9mIHRoZSB2YXIgYmVsb3cgc2hvdWxkIGhhdmUg
bm8gCisgICAgLy8gZWZmZWN0Li4KKyAgICBzaG91bGRCZU9mVHlwZSgndGVzdDQuKDEpJywgYXJn
dW1lbnRzLCAnb2JqZWN0Jyk7CisgICAgdmFyIGFyZ3VtZW50cyA9IDQ7CisgICAgLy8gLi4gYnV0
IHRoZSBhc3NpZ25tZW50IHNob3VkIGp1c3QgaGFwcGVuCisgICAgc2hvdWxkQmVPZlR5cGUoJ3Rl
c3Q0LigyKScsIGFyZ3VtZW50cywgJ251bWJlcicpOworfQorCisKK3Rlc3QwKCk7Cit0ZXN0MSgp
OwordGVzdDIoNDIpOwordGVzdDMoKTsKK3Rlc3Q0KCk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2NvbXBs
ZXRpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2Vz
L2NvbXBsZXRpb24uanMJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9r
ZGUvcmVzb3VyY2VzL2NvbXBsZXRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEyLDQgKzEyLDE2
IEBAIHZhciBjYXVnaHQgPSBmYWxzZTsKIHRyeSB7IGV2YWwoInJldHVybjsiKTsgfSBjYXRjaChl
KSB7IGNhdWdodCA9IHRydWU7IH0KIHNob3VsZEJlVHJ1ZSgiY2F1Z2h0Iik7CiAKKy8vIHZhbHVl
IGNvbXBsZXRpb25zIHRha2UgcHJlY2VkZW5jZQordmFyIHZhbCA9IGV2YWwoIjExOyB7IH0iKTsK
K3Nob3VsZEJlKCJ2YWwiLCAiMTEiKTsKK3ZhbCA9IGV2YWwoIjEyOyA7Iik7CitzaG91bGRCZSgi
dmFsIiwgIjEyIik7Cit2YWwgPSBldmFsKCIxMzsgaWYoZmFsc2UpOyIpOworc2hvdWxkQmUoInZh
bCIsICIxMyIpOwordmFsID0gZXZhbCgiMTQ7IGZ1bmN0aW9uIGYoKSB7fSIpOworc2hvdWxkQmUo
InZhbCIsICIxNCIpOwordmFsID0gZXZhbCgiMTU7IHZhciB2ID0gMCIpOworc2hvdWxkQmUoInZh
bCIsICIxNSIpOworCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuYy1kZWNsLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jLWRlY2wuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuYy1kZWNsLmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ2IEBACisvLyBXZSBjYW4ndCB1c2Ugbm9ybWFsIHNob3VsZEJlIGhl
cmUsIHNpbmNlIHRoZXknZCBldmFsIGluIHRoZSB3cm9uZyBjb250ZXh0Li4uCitmdW5jdGlvbiBz
aG91bGRCZU9mVHlwZShtc2csIHZhbCwgdHlwZSkgeworICBpZiAodHlwZW9mKHZhbCkgIT0gdHlw
ZSkKKyAgICB0ZXN0RmFpbGVkKG1zZyArICI6IHZhbHVlIGhhcyB0eXBlICIgKyB0eXBlb2YodmFs
KSArICIgLCBub3Q6IiArIHR5cGUpOworICBlbHNlCisgICAgdGVzdFBhc3NlZChtc2cpOworfQor
CitmdW5jdGlvbiBzaG91bGRCZVZhbChtc2csIHZhbCwgZXhwZWN0ZWQpIHsKKyAgaWYgKHZhbCAh
PSBleHBlY3RlZCkKKyAgICB0ZXN0RmFpbGVkKG1zZyArICI6IHZhbHVlIGlzICIgKyB2YWwgKyAi
ICwgbm90OiIgKyBleHBlY3RlZCk7CisgIGVsc2UKKyAgICB0ZXN0UGFzc2VkKG1zZyk7Cit9CisK
K2YgPSAiZ2xvYmFsIjsKKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgdHJ5IHsKKyAgICBzaG91bGRC
ZU9mVHlwZSgiRnVuY3Rpb24gZGVjbGFyYXRpb24gdGFrZXMgZWZmZWN0IGF0IGVudHJ5IiwgZiwg
ImZ1bmN0aW9uIik7CisgIH0KKyAgY2F0Y2ggKGUpIHsKKyAgICB0ZXN0RmFpbGVkKCJTY29waW5n
IHZlcnkgYnJva2VuISIpOworICB9CisKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpIHsK
KyAgICBpZiAoaSA9PSAwKQorICAgICAgc2hvdWxkQmVPZlR5cGUoIkRlY2wgbm90IHlldCBvdmVy
d3JpdHRlbiIsIGYsICdmdW5jdGlvbicpOworICAgIGVsc2UKKyAgICAgIHNob3VsZEJlT2ZUeXBl
KCJEZWNsIGFscmVhZHkgb3ZlcndyaXR0ZW4iLCBmLCAnbnVtYmVyJyk7CisKKyAgICBmID0gMzsK
KyAgICBzaG91bGRCZVZhbCgiQWZ0ZXIgYXNzaWduICgiK2krIikiLCBmLCAzKTsKKworICAgIGZ1
bmN0aW9uIGYoKSB7fTsKKyAgICBzaG91bGRCZVZhbCgiZnVuY3Rpb24gZGVjbHMgaGF2ZSBubyBl
eGVjdXRpb24gY29udGVudCIsIGYsIDMpOworCisgICAgZiA9IDU7CisKKyAgICBzaG91bGRCZVZh
bCgiQWZ0ZXIgYXNzaWduICMyICgiK2krIikiLCBmLCA1KTsKKyAgfQorfQorCit0ZXN0KCk7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9rZGUvcmVzb3VyY2VzL2Z1bmN0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMva2RlL3Jlc291cmNlcy9mdW5jdGlvbi5qcwkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuY3Rpb24uanMJKHdvcmtpbmcgY29weSkK
QEAgLTE3MiwzMiArMTcyLDYgQEAgZnVuY3Rpb24gc2hhZG93KCkgeyByZXR1cm4gMjsgfQogc2hv
dWxkQmUoInNoYWRvdygpIiwgIjIiKTsKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8gbmVzdGVkIGZ1bmN0aW9ucwotCi12YXIgbmVzdF9wcm9wZXJ0eSA9ICJnbG9iYWwgbmVz
dCI7Ci0KLWZ1bmN0aW9uIG5lc3RlZF9vdXRlcigpIHsKLQotICBmdW5jdGlvbiBuZXN0ZWRfaW5u
ZXIoKSB7Ci0gICAgcmV0dXJuIG5lc3RfcHJvcGVydHk7Ci0gIH0KLQotfQotCi1mdW5jdGlvbiBu
b3RfbmVzdGVkKCkgewotICByZXR1cm4gbmVzdF9wcm9wZXJ0eTsKLX0KLQotbmVzdGVkX291dGVy
Lm5lc3RfcHJvcGVydHkgPSAib3V0ZXIgbmVzdCI7Ci0KLXZhciBuZXN0ZWQgPSBuZXN0ZWRfb3V0
ZXIubmVzdGVkX2lubmVyOwotdmFyIG5lc3RlZHJldCA9IG5lc3RlZCgpOwotc2hvdWxkQmUoIm5l
c3RlZHJldCIsIidvdXRlciBuZXN0JyIpOwotCi12YXIgbm90X25lc3RlZHJldCA9IG5vdF9uZXN0
ZWQoKTsKLXNob3VsZEJlKCJub3RfbmVzdGVkcmV0IiwiJ2dsb2JhbCBuZXN0JyIpOwotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLyBvdGhlciBwcm9wZXJ0aWVzCiAvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiBmdW5jdGlvbiBzYW1wbGUoKSB7IH0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9pdGVyYXRpb24uanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2l0ZXJhdGlvbi5qcwkocmV2aXNp
b24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvaXRlcmF0aW9u
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC01Myw0ICs1Myw2NyBAQCBmb3IgKHZhciBhID0gWzEsMiwz
XSwgbGVuZ3RoID0gYS5sZW5ndGgsCiAgIGxpc3QgKz0gYVtpXTsKIH0KIHNob3VsZEJlKCJsaXN0
IiwgIicxMjMnIik7Ci1zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlCisKKy8vIGNvbXBsZXRpb24g
dmFsdWVzCit2YXIgaW1tZWRpYXRlV2hpbGVCcmVhayA9IGV2YWwoIndoaWxlICh0cnVlKSB7IGJy
ZWFrOyB9Iik7CitzaG91bGRCZVVuZGVmaW5lZCgiaW1tZWRpYXRlV2hpbGVCcmVhayIsICInZm9v
JyIpOwordmFyIGxhdGVyV2hpbGVCcmVhayA9IGV2YWwoIndoaWxlICh0cnVlKSB7ICdmb28nOyBi
cmVhazsgfSIpOworc2hvdWxkQmUoImxhdGVyV2hpbGVCcmVhayIsICInZm9vJyIpOwordmFyIHdo
aWxlRW5kID0gZXZhbCgidmFyIHkgPSAwOyB3aGlsZSAoeSA8IDIpIHsgKyt5IH0iKTsKK3Nob3Vs
ZEJlKCJ3aGlsZUVuZCIsICIyIik7CisKK3ZhciBpbW1lZGlhdGVEb1doaWxlQnJlYWsgPSBldmFs
KCJkbyB7IGJyZWFrOyB9IHdoaWxlKGZhbHNlKTsgIik7CitzaG91bGRCZVVuZGVmaW5lZCgiaW1t
ZWRpYXRlRG9XaGlsZUJyZWFrIiwgIidmb28nIik7Cit2YXIgbGF0ZXJEb1doaWxlQnJlYWsgPSBl
dmFsKCJkbyB7ICdiYXInOyBicmVhazsgfSB3aGlsZSh0cnVlKTsiKTsKK3Nob3VsZEJlKCJsYXRl
ckRvV2hpbGVCcmVhayIsICInYmFyJyIpOwordmFyIGRvV2hpbGVFbmQgPSBldmFsKCJ2YXIgeSA9
IDA7IGRvIHsgKyt5IH0gd2hpbGUgKHkgPCAzKTsiKTsKK3Nob3VsZEJlKCJkb1doaWxlRW5kIiwg
IjMiKTsKKwordmFyIGltbWVkaWF0ZUZvckJyZWFrID0gZXZhbCgiZm9yKDs7KSB7IGJyZWFrOyB9
Iik7CitzaG91bGRCZVVuZGVmaW5lZCgiaW1tZWRpYXRlRm9yQnJlYWsiLCAiJ2ZvbyciKTsKK3Zh
ciBsYXRlckZvckJyZWFrID0gZXZhbCgiZm9yKDs7KSB7ICd6aWxjaCc7IGJyZWFrOyB9Iik7Citz
aG91bGRCZSgibGF0ZXJGb3JCcmVhayIsICInemlsY2gnIik7Cit2YXIgZm9yRW5kID0gZXZhbCgi
Zm9yKHZhciB5ID0gMDsgeSA8IDQ7ICsreSkgeyAncXVhcmsnIH0iKTsKK3Nob3VsZEJlKCJmb3JF
bmQiLCAiJ3F1YXJrJyIpOworCisvLyBWYXJpb3VzIHN0dWZmIGZvciBjb250cm9sIGZsb3cgYW5k
IGVycm9yIGhhbmRsaW5nIG9mIGJyZWFrL2NvbnRpbnVlCit2YXIgaXRlcnM7CisKKy8vIFRlc3Qg
d2hldGhlciB3ZSBoYW5kbGUgbXVsdGlwbGUgbGFiZWxzIG9uIHRoZSBzYW1lIHN0YXRlbWVudCBy
aWdodAorLy8gTm90ZTogdGhpcyBpcyBpbiBhIGZ1bmN0aW9uIHNpbmNlIGtvbnEgMy54IGp1c3Qg
YnJlYWtzIG91dCBvZiB0aGUgd2hvbGUgdGhpbmcuCitmdW5jdGlvbiB0ZXN0TGFiZWxOZXN0KCkg
eworICBpdGVycyA9IDA7CisgIGZvbzogYmFyOiB3aGlsZSAodHJ1ZSkgeworICAgICsraXRlcnM7
CisgICAgaWYgKGl0ZXJzIDwgMTApCisgICAgICBjb250aW51ZSBmb287CisgICAgZWxzZQorICAg
ICAgYnJlYWs7CisgIH0KK30KKwordGVzdExhYmVsTmVzdCgpOworc2hvdWxkQmUoJ2l0ZXJzJywg
JzEwJyk7CisKKy8vIFRlc3QgdG8gbWFrZSBzdXJlIGRvaW5nIGNvbnRpbnVlIG91dHNpZGUgYSBs
b29wCisvLyB0aHJvd3MgcHJvcGVybHkuICgzLnggZGlkbid0KSwgYW5kIHNvIGRvZXMgYSBsYWJl
bC1sZXNzCisvLyBicmVhayBvdXRzaWRlIG9mIGl0Lgorc2hvdWxkVGhyb3coJ2ZvbzogY29udGlu
dWUgZm9vOyAnKTsKK3Nob3VsZFRocm93KCdjb250aW51ZTsgJyk7CitzaG91bGRUaHJvdygnYnJl
YWs7Jyk7CisKKy8vIFRoZXNlIG9uZXMgc2hvdWxkIGJlIGZpbmUgT1RPSAorc2hvdWxkQmVVbmRl
ZmluZWQoJ2ZvbzogYnJlYWsgZm9vOyAnKTsKK3Nob3VsZEJlKCdmb286IHsgYSA9IDE7IGJyZWFr
IGZvbzsgYSA9IDI7IH0nLCAnMScpOworCisvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgYnJlYWsgb3V0
IHRvbyBmYXIuCitmdW5jdGlvbiB0ZXN0TG9jYWxCcmVhaygpIHsKKyAgbDogYnJlYWsgbDsKK30K
KworZm9yIChpdGVycyA9IDA7IGl0ZXJzIDwgMTA7ICsraXRlcnMpCisgIHRlc3RMb2NhbEJyZWFr
KCk7CisKK3Nob3VsZEJlKCdpdGVycycsICcxMCcpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9sdmFsLWV4
Y2VwdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3Vy
Y2VzL2x2YWwtZXhjZXB0aW9ucy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMva2RlL3Jlc291cmNlcy9sdmFsLWV4Y2VwdGlvbnMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTIgQEAKKy8vIFRlc3RzIGZvciByYWlzaW5nIC0tLSBhbmQgbm9uLXJhaXNpbmcgZXhjZXB0
aW9ucyBvbiBhY2Nlc3MgdG8gcmVmZXJlbmNlIHRvIHVuZGVmaW5lZCB0aGluZ3MuLi4KKworLy8g
TG9jYWxzIHNob3VsZCB0aHJvdyBvbiBhY2Nlc3MgaWYgdW5kZWZpbmVkLi4KK2ZuU2hvdWxkVGhy
b3coZnVuY3Rpb24oKSB7IGEgPSB4OyB9LCBSZWZlcmVuY2VFcnJvcik7CisKKy8vIFJlYWQtbW9k
aWZ5LXdyaXRlIHZlcnNpb25zIG9mIGFzc2lnbm1lbnQgc2hvdWxkIHRocm93IGFzIHdlbGwKK2Zu
U2hvdWxkVGhyb3coZnVuY3Rpb24oKSB7IHggKz0gImZvbyI7IH0sIFJlZmVyZW5jZUVycm9yKTsK
KworLy8gT3RoZXIgcmVmZXJlbmNlIHR5cGVzIHNob3VsZCBqdXN0IHJldHVybiB1bmRlZmluZWQu
Li4KK2EgPSBuZXcgT2JqZWN0KCk7CitmblNob3VsZE5vdFRocm93KGZ1bmN0aW9uKCkgeyBiID0g
YS54OyB9KTsKK2ZuU2hvdWxkTm90VGhyb3coZnVuY3Rpb24oKSB7IGIgPSBhWyd4J107IH0pOwor
Zm5TaG91bGROb3RUaHJvdyhmdW5jdGlvbigpIHsgYVsneCddICs9ICdiYXonOyB9KTsKK3Nob3Vs
ZEJlKCJhWyd4J10iLCAnInVuZGVmaW5lZGJheiInKTsKK2ZuU2hvdWxkTm90VGhyb3coZnVuY3Rp
b24oKSB7IGIgPSBhLnk7IH0pOworZm5TaG91bGROb3RUaHJvdyhmdW5jdGlvbigpIHsgYS55ICs9
ICdnbGFyY2gnOyB9KTsKK3Nob3VsZEJlKCJhWyd5J10iLCAnInVuZGVmaW5lZGdsYXJjaCInKTsK
KworCisvLyBIZWxwZXJzIQorZnVuY3Rpb24gZm5TaG91bGRUaHJvdyhmLCBleFR5cGUpCit7Cisg
IHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgIF9hdiA9IGYoKTsKKyAg
fSBjYXRjaCAoZSkgeworICAgICBleGNlcHRpb24gPSBlOworICB9CisKKyAgaWYgKGV4Y2VwdGlv
bikgeworICAgIGlmICh0eXBlb2YgZXhUeXBlID09ICJ1bmRlZmluZWQiIHx8IGV4Y2VwdGlvbiBp
bnN0YW5jZW9mIGV4VHlwZSkKKyAgICAgIHRlc3RQYXNzZWQoZiArICIgdGhyZXcgZXhjZXB0aW9u
ICIgKyBleGNlcHRpb24gKyAiLiIpOworICAgIGVsc2UKKyAgICAgIHRlc3RGYWlsZWQoZiArICIg
c2hvdWxkIHRocm93IGV4Y2VwdGlvbiAiICsgZXhUeXBlICsgIi4gVGhyZXcgZXhjZXB0aW9uICIg
KyBleGNlcHRpb24gKyAiLiIpOworICB9IGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5l
ZCIpCisgICAgdGVzdEZhaWxlZChmICsgIiBzaG91bGQgdGhyb3cgZXhjZXB0aW9uICIgKyBleFR5
cGUgKyAiLiBXYXMgdW5kZWZpbmVkLiIpOworICBlbHNlCisgICAgdGVzdEZhaWxlZChmICsgIiBz
aG91bGQgdGhyb3cgZXhjZXB0aW9uICIgKyBleFR5cGUgKyAiLiBXYXMgIiArIF9hdiArICIuIik7
Cit9CisKK2Z1bmN0aW9uIGZuU2hvdWxkTm90VGhyb3coZikKK3sKKyAgdHJ5IHsKKyAgICBmKCk7
CisgICAgdGVzdFBhc3NlZChmICsgIiBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbiIpOworICB9
IGNhdGNoIChlKSB7CisgICAgdGVzdEZhaWxlZChmICsgIiB0aHJldyBhbiBleGNlcHRpb24gIiAr
IGUgKyAiIHdoZW4gbm8gZXhjZXB0aW9uIGV4cGVjdGVkIik7CisgIH0KK30KKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNv
dXJjZXMvb3BlcmF0b3JzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2Rl
L3Jlc291cmNlcy9vcGVyYXRvcnMuanMJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9rZGUvcmVzb3VyY2VzL29wZXJhdG9ycy5qcwkod29ya2luZyBjb3B5KQpAQCAtOCw2
ICs4LDE0IEBAIHNob3VsZEJlVHJ1ZSgiITAiKTsKIHNob3VsZEJlVHJ1ZSgiISEnYSciKTsKIHNo
b3VsZEJlVHJ1ZSgiIScnIik7CiAKKy8vIHVuYXJ5IHBsdXMKK3Nob3VsZEJlKCIrOSIsICI5Iik7
CitzaG91bGRCZSgidmFyIGkgPSAxMDsgK2kiLCAiMTAiKTsKKworLy8gbmVnYXRpb24KK3Nob3Vs
ZEJlKCItMTEiLCAiLTExIik7CitzaG91bGRCZSgidmFyIGkgPSAxMjsgLWkiLCAiLTEyIik7CisK
IC8vIGluY3JlbWVudAogc2hvdWxkQmUoInZhciBpID0gMDsgKytpOyIsICIxIik7CiBzaG91bGRC
ZSgidmFyIGkgPSAwOyArK2k7IGkiLCAiMSIpOwpAQCAtMjcsNiArMzUsOCBAQCBzaG91bGRCZSgi
dmFyIGkgPSB0cnVlOyBpLS07IGkiLCAiMCIpOwogLy8gYml0d2lzZSBvcGVyYXRvcnMKIHNob3Vs
ZEJlKCJ+MCIsICItMSIpOwogc2hvdWxkQmUoIn4xIiwgIi0yIik7CitzaG91bGRCZSgifk5hTiIs
ICItMSIpOworc2hvdWxkQmUoIn5JbmZpbml0eSIsICItMSIpOwogc2hvdWxkQmUoIn5NYXRoLnBv
dygyLCAzMykiLCAiLTEiKTsgLy8gMzIgYml0IG92ZXJmbG93CiBzaG91bGRCZSgifihNYXRoLnBv
dygyLCAzMikgKyBNYXRoLnBvdygyLCAzMSkgKyAyKSIsCiAgICAgICAgICAiMjE0NzQ4MzY0NSIp
OyAvLyBhIHNpZ25lZG5lc3MgaXNzdWUKQEAgLTQ0LDYgKzU0LDIxIEBAIHNob3VsZEJlKCItOCA+
PiAyNCIsICItMSIpOwogc2hvdWxkQmUoIjggPj4+IDIiLCAiMiIpOwogc2hvdWxkQmUoIi04ID4+
PiAyNCIsICIyNTUiKTsKIHNob3VsZEJlKCIoLTIyMDAwMDAwMDAgPj4gMSkgPDwgMSIsICIyMDk0
OTY3Mjk2Iik7CitzaG91bGRCZSgiSW5maW5pdHkgPj4gMSIsICIwIik7CitzaG91bGRCZSgiSW5m
aW5pdHkgPDwgMSIsICIwIik7CitzaG91bGRCZSgiSW5maW5pdHkgPj4+IDEiLCAiMCIpOworc2hv
dWxkQmUoIk5hTiA+PiAxIiwgIjAiKTsKK3Nob3VsZEJlKCJOYU4gPDwgMSIsICIwIik7CitzaG91
bGRCZSgiTmFOID4+PiAxIiwgIjAiKTsKK3Nob3VsZEJlKCI4LjEgPj4gMSIsICI0Iik7CitzaG91
bGRCZSgiOC4xIDw8IDEiLCAiMTYiKTsKK3Nob3VsZEJlKCI4LjEgPj4+IDEiLCAiNCIpOworc2hv
dWxkQmUoIjguOSA+PiAxIiwgIjQiKTsKK3Nob3VsZEJlKCI4LjkgPDwgMSIsICIxNiIpOworc2hv
dWxkQmUoIjguOSA+Pj4gMSIsICI0Iik7CitzaG91bGRCZSgiTWF0aC5wb3coMiwgMzIpID4+IDEi
LCAiMCIpOworc2hvdWxkQmUoIk1hdGgucG93KDIsIDMyKSA8PCAxIiwgIjAiKTsKK3Nob3VsZEJl
KCJNYXRoLnBvdygyLCAzMikgPj4+IDEiLCAiMCIpOwogCiAvLyBhZGRpdGlvbgogc2hvdWxkQmUo
IjErMiIsICIzIik7CkBAIC0xODAsNiArMjA1LDggQEAgc2hvdWxkQmUoIk5hTiA9PT0gTmFOIiwg
ImZhbHNlIik7CiBzaG91bGRCZSgiMC4wID09PSAwIiwgInRydWUiKTsKIHNob3VsZEJlKCInYWJj
JyA9PT0gJ2FiYyciLCAidHJ1ZSIpOwogc2hvdWxkQmUoIidhJyA9PT0gJ3gnIiwgImZhbHNlIik7
CitzaG91bGRCZSgiMSA9PT0gJzEnIiwgImZhbHNlIik7CitzaG91bGRCZSgiJzEnID09PSAxIiwg
ImZhbHNlIik7CiBzaG91bGRCZSgidHJ1ZSA9PT0gdHJ1ZSIsICJ0cnVlIik7CiBzaG91bGRCZSgi
ZmFsc2UgPT09IGZhbHNlIiwgInRydWUiKTsKIHNob3VsZEJlKCJ0cnVlID09PSBmYWxzZSIsICJm
YWxzZSIpOwpAQCAtMjE2LDQgKzI0Myw0IEBAIHNob3VsZEJlVHJ1ZSgiJ2EnIGluIHsgYToxLCBi
OjIgfSIpOwogc2hvdWxkQmUoIihuZXcgQm9vbGVhbigpKSBpbnN0YW5jZW9mIEJvb2xlYW4iLCAi
dHJ1ZSIpOwogc2hvdWxkQmUoIihuZXcgQm9vbGVhbigpKSBpbnN0YW5jZW9mIE51bWJlciIsICJm
YWxzZSIpOwogCi1zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlCit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9zY29w
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvc2Nv
cGUuanMJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3Vy
Y2VzL3Njb3BlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02LDQgKzYsMzEgQEAgd2l0aCAoYikgewog
fQogCiBzaG91bGRCZSgiZigyKSIsICIyMiIpOwotc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZQor
Cit2YXIgT0JKRUNUID0gbmV3IE15T2JqZWN0KCAiaGVsbG8iICk7CitmdW5jdGlvbiBNeU9iamVj
dCh2YWx1ZSkgeworICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB0aGlzLnRvU3RyaW5nID0g
bmV3IEZ1bmN0aW9uKCAicmV0dXJuIHRoaXMudmFsdWUrJyciICk7CisgICAgcmV0dXJuIHRoaXM7
Cit9CitzaG91bGRCZSgiT0JKRUNULnRvU3RyaW5nKCkiLCAiJ2hlbGxvJyIpOwordmFyIHM7Cit3
aXRoIChPQkpFQ1QpIHsKKyAgICBzID0gdG9TdHJpbmcoKTsKK30KK3Nob3VsZEJlKCJzIiwgIido
ZWxsbyciKTsKKworCisvLyBNYWtlIHN1cmUgdGhhdCBmb3IgLi4uIGluIHJlZXZhbHVhdGVzIHRo
ZSBzY29waW5nIGV2ZXJ5IHRpbWUhCitQID0geyBmb28gOiAxLCBiYXIgOiAyLCBiYXogOiAzIH0K
KworZnVuY3Rpb24gdGVzdEZvckluKCkgeworICAgZm9yIChnIGluIFApIHsKKyAgICAgICAgZXZh
bCgidmFyIGc7IikgLy9DaGFuZ2UgdGhlIHNjb3BlIG9mIGcgaGFsZi13YXlzIHRocm91Z2ggdGhl
IGxvb3AKKyAgIH0KK30KKwordGVzdEZvckluKCk7CitzaG91bGRCZSgiZyIsICInZm9vJyIpOyAv
L0JlZm9yZSB0aGUgZXZhbCwgZyB3YXMgaW4gb3V0ZXIgc2NvcGUsIGJ1dCBub3QgYWZ0ZXIhCisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="6614"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15958</attachid>
            <date>2007-08-14 04:30:21 -0700</date>
            <delta_ts>2007-09-04 22:25:02 -0700</delta_ts>
            <desc>Revised proposed patch</desc>
            <filename>scope.diff</filename>
            <type>text/plain</type>
            <size>295200</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzA5IEBACisyMDA3LTA4LTAyICBDYW1lcm9u
IFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wb3J0cyB0aGUgdmFyaWFi
bGUgbG9va3VwIG9wdGltaXphdGlvbnMgdGhhdCB3ZXJlCisgICAgICAgIGltcGxlbWVudGVkIGlu
IEtKUywgd2hpbGUgYmVpbmcgY2FyZWZ1bCB0byBub3QgdW5kbyBhbnkgYnVnIGZpeGVzCisgICAg
ICAgIGFuZCBvcHRpbWl6YXRpb25zIGFkZGVkIHRvIEphdmFTY3JpcHRDb3JlLiBUaGUgcmVsZXZh
bnQgcmV2aXNpb25zCisgICAgICAgIGluIEtERSBhcmUKKworICAgICAgICAgICAgNjQ3MDA1Cisg
ICAgICAgICAgICA2NDcxNDAKKyAgICAgICAgICAgIDY0ODQyNAorICAgICAgICAgICAgNjUxMTg1
CisgICAgICAgICAgICA2NjIyNjMKKyAgICAgICAgICAgIDY2ODUzOQorICAgICAgICAgICAgNjcw
NTQ3CisgICAgICAgICAgICA2NzQzMTQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGtqcy9BbGxJbk9uZUZpbGUuY3BwOgorICAgICAgICAqIGtqcy9Db21tb25JZGVudGlm
aWVycy5oOgorICAgICAgICAoV1RGOjpJZGVudEhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpJ
ZGVudEhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6KToKKyAgICAgICAgKiBranMvQ29udGV4
dC5jcHA6CisgICAgICAgIChLSlM6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAqIGtqcy9Q
YXJzZXIuY3BwOgorICAgICAgICAoS0pTOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBranMv
UGFyc2VyLmg6CisgICAgICAgICoga2pzL2FycmF5X29iamVjdC5jcHA6CisgICAgICAgIChBcnJh
eUluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9jb21wbGV0aW9u
Lmg6CisgICAgICAgIChLSlM6OkNvbXBsZXRpb246OkNvbXBsZXRpb24pOgorICAgICAgICAoS0pT
OjpDb21wbGV0aW9uOjp0YXJnZXQpOgorICAgICAgICAqIGtqcy9jb250ZXh0Lmg6CisgICAgICAg
IChLSlM6OkNvbnRleHQ6OnBvcFNjb3BlKToKKyAgICAgICAgKiBranMvZnVuY3Rpb24uY3BwOgor
ICAgICAgICAoS0pTOjpMb29rdXBPcHRpbWl6ZXI6Okxvb2t1cE9wdGltaXplcik6CisgICAgICAg
IChLSlM6Okxvb2t1cE9wdGltaXplcjo6b3B0aW1pemUpOgorICAgICAgICAoS0pTOjpMb29rdXBP
cHRpbWl6ZXI6Oik6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpjYWxsQXNGdW5jdGlvbik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJhbWV0ZXJzKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25JbXA6OmdldFBhcmFtZXRlck5hbWUpOgorICAgICAgICAoS0pTOjpBY3Rp
dmF0aW9uSW1wOjpBY3RpdmF0aW9uSW1wKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6
c2V0dXBMb2NhbHMpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpzZXR1cEZ1bmN0aW9u
TG9jYWxzKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpB
Y3RpdmF0aW9uSW1wOjpwdXQpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjptYXJrKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6fkFjdGl2YXRpb25JbXApOgorICAgICAgICAo
S0pTOjpBY3RpdmF0aW9uSW1wOjpjcmVhdGVBcmd1bWVudHNPYmplY3QpOgorICAgICAgICAoS0pT
OjpHbG9iYWxGdW5jSW1wOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICoga2pzL2Z1bmN0aW9u
Lmg6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OkFjdGl2YXRpb25JbXA6OnB1dExv
Y2FsKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6aW5pdExvY2FsKToKKyAgICAgICAg
KEtKUzo6QWN0aXZhdGlvbkltcDo6cHV0TG9jYWxDaGVja2VkKToKKyAgICAgICAgKEtKUzo6QWN0
aXZhdGlvbkltcDo6Z2V0TG9jYWxEaXJlY3QpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1w
Ojppc0xvY2FsUmVhZE9ubHkpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjppc0FjdGl2
YXRpb24pOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpudW1Mb2NhbHMpOgorICAgICAg
ICAoS0pTOjpBY3RpdmF0aW9uSW1wOjp2YWxpZExvY2FsKToKKyAgICAgICAgKiBranMvZ3JhbW1h
ci55OgorICAgICAgICAqIGtqcy9pbnRlcm5hbC5jcHA6CisgICAgICAgICoga2pzL2ludGVybmFs
Lmg6CisgICAgICAgICoga2pzL2ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEtKUzo6SW50ZXJw
cmV0ZXI6OmluaXRHbG9iYWxPYmplY3QpOgorICAgICAgICAoS0pTOjpJbnRlcnByZXRlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAqIGtqcy9saXN0LmNwcDoKKyAgICAgICAgKEtKUzo6TGlzdDo6TGlz
dCk6CisgICAgICAgICoga2pzL2xpc3QuaDoKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAg
ICAgICAoS0pTOjpOb2RlOjpjcmVhdGVFcnJvck5vZGUpOgorICAgICAgICAoS0pTOjpOb2RlVmlz
aXRvcjo6fk5vZGVWaXNpdG9yKToKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6RnVu
Y0RlY2xWaXNpdG9yOjpGdW5jRGVjbFZpc2l0b3IpOgorICAgICAgICAoS0pTOjpGdW5jRGVjbFZp
c2l0b3I6Oik6CisgICAgICAgIChLSlM6Ok5vZGU6OnByb2Nlc3NEZWNscyk6CisgICAgICAgIChL
SlM6Ok5vZGU6OnByb2Nlc3NWYXJEZWNsKToKKyAgICAgICAgKEtKUzo6Tm9kZTo6cHJvY2Vzc0Z1
bmNEZWNsKToKKyAgICAgICAgKEtKUzo6Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2Vzcyk6CisgICAg
ICAgIChLSlM6Ok5vZGVWaXNpdG9yOjp2aXNpdCk6CisgICAgICAgIChLSlM6OlZhckFjY2Vzc05v
ZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6VmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGVSZWZl
cmVuY2UpOgorICAgICAgICAoS0pTOjpWYXJBY2Nlc3NOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNz
KToKKyAgICAgICAgKEtKUzo6VmFyQWNjZXNzTm9kZTo6bG9jYWxJRCk6CisgICAgICAgIChLSlM6
OkxvY2FsVmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpMb2NhbFZhckFj
Y2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKToKKyAgICAgICAgKEtKUzo6Tm9uTG9jYWxWYXJB
Y2Nlc3NOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6Ok5vbkxvY2FsVmFyQWNjZXNzTm9k
ZTo6ZXZhbHVhdGVSZWZlcmVuY2UpOgorICAgICAgICAoS0pTOjpHcm91cE5vZGU6OnJlY3Vyc2VW
aXNpdCk6CisgICAgICAgIChLSlM6OkVsZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpBcnJheU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6Ok9iamVjdExp
dGVyYWxOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eUxpc3ROb2Rl
OjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eU5vZGU6OnJlY3Vyc2VWaXNp
dCk6CisgICAgICAgIChLSlM6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmV2YWx1YXRlUmVmZXJlbmNl
KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6RG90QWNjZXNzb3JOb2RlOjpldmFsdWF0ZVJlZmVyZW5jZSk6CisgICAgICAg
IChLSlM6OkRvdEFjY2Vzc29yTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXJn
dW1lbnRMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXJndW1lbnRzTm9k
ZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6TmV3RXhwck5vZGU6OnJlY3Vyc2VWaXNp
dCk6CisgICAgICAgIChLSlM6Om5vdEFuT2JqZWN0TWVzc2FnZSk6CisgICAgICAgIChLSlM6Om5v
dENhbGxhYmxlTWVzc2FnZSk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OnJlY3Vyc2VW
aXNpdCk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFJlZmVyZW5jZU5vZGU6OmV2YWx1YXRl
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OnJlY3Vyc2VWaXNpdCk6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAg
ICAgIChLSlM6OkxvY2FsUG9zdGZpeE5vZGU6Oik6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2Rl
OjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2RlOjpyZWN1cnNlVmlzaXQpOgor
ICAgICAgICAoS0pTOjpQb3N0Zml4Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2Vzcyk6CisgICAgICAg
IChLSlM6OlBvc3RmaXhFcnJvck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6RGVsZXRl
UmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpEZWxldGVSZWZlcmVuY2VO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpEZWxldGVWYWx1ZU5vZGU6OnJlY3Vy
c2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZvaWROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpUeXBlT2ZSZWZlcmVuY2VOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OlR5
cGVPZlJlZmVyZW5jZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlR5cGVPZlZh
bHVlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpUeXBlT2ZWYWx1ZU5vZGU6OnJlY3Vy
c2VWaXNpdCk6CisgICAgICAgIChLSlM6OkxvY2FsUHJlZml4Tm9kZTo6KToKKyAgICAgICAgKEtK
Uzo6UHJlZml4Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjpyZWN1
cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNz
KToKKyAgICAgICAgKEtKUzo6UHJlZml4RXJyb3JOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChL
SlM6OlVuYXJ5UGx1c05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6Ok5lZ2F0ZU5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkJpdHdpc2VOb3ROb2RlOjpyZWN1cnNl
VmlzaXQpOgorICAgICAgICAoS0pTOjpMb2dpY2FsTm90Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6TXVsdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkFkZE5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlNoaWZ0Tm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6UmVsYXRpb25hbE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAg
IChLSlM6OkVxdWFsTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Qml0T3Blck5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkJpbmFyeUxvZ2ljYWxOb2RlOjpyZWN1
cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDb25kaXRpb25hbE5vZGU6OnJlY3Vyc2VWaXNpdCk6
CisgICAgICAgIChLSlM6OkxvY2FsQXNzaWduTm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWdu
Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25Ob2RlOjpyZWN1cnNlVmlzaXQp
OgorICAgICAgICAoS0pTOjpBc3NpZ25Ob2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNzKToKKyAgICAg
ICAgKEtKUzo6QXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25E
b3ROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXJyb3JOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChL
SlM6OkNvbW1hTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXhwck5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhckRlY2xOb2RlOjpldmFsdWF0ZSk6
CisgICAgICAgIChLSlM6OlZhckRlY2xOb2RlOjpwcm9jZXNzVmFyRGVjbCk6CisgICAgICAgIChL
SlM6OlZhckRlY2xOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpWYXJEZWNsTGlz
dE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5vZGU6OnJl
Y3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5vZGU6Om9wdGltaXplTG9j
YWxBY2Nlc3MpOgorICAgICAgICAoS0pTOjpTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpleGVjdXRl
KToKKyAgICAgICAgKEtKUzo6U3RhdGljVmFyU3RhdGVtZW50Tm9kZTo6cmVjdXJzZVZpc2l0KToK
KyAgICAgICAgKEtKUzo6QmxvY2tOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6QmxvY2tO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpFeHByU3RhdGVtZW50Tm9kZTo6cmVj
dXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6SWZOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpEb1doaWxlTm9kZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OkRvV2hpbGVOb2Rl
OjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpXaGlsZU5vZGU6OmV4ZWN1dGUpOgorICAg
ICAgICAoS0pTOjpXaGlsZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkZvck5v
ZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pTOjpGb3JOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAg
ICAgICAoS0pTOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAgICAgIChLSlM6OkZvckluTm9k
ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OkZvckluTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6Q29udGludWVOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6QnJlYWtO
b2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6UmV0dXJuTm9kZTo6ZXhlY3V0ZSk6CisgICAg
ICAgIChLSlM6OlJldHVybk5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OldpdGhO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDYXNlQ2xhdXNlTm9kZTo6cmVjdXJz
ZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Q2xhdXNlTGlzdE5vZGU6OnJlY3Vyc2VWaXNpdCk6Cisg
ICAgICAgIChLSlM6OkNhc2VCbG9ja05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6
OlN3aXRjaE5vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pTOjpTd2l0Y2hOb2RlOjpyZWN1cnNl
VmlzaXQpOgorICAgICAgICAoS0pTOjpMYWJlbE5vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pT
OjpMYWJlbE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlRocm93Tm9kZTo6cmVj
dXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6VHJ5Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAg
ICAgKEtKUzo6VHJ5Tm9kZTo6cmVjdXJzZVZpc2l0Tm9uQ2F0Y2gpOgorICAgICAgICAoS0pTOjpQ
YXJhbWV0ZXJOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkJvZHlO
b2RlOjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6
YWRkVmFyRGVjbCk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OmFkZEZ1bmNEZWNs
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6YWRkU3ltYm9sKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6bG9va3VwU3ltYm9sSUQpOgorICAgICAgICAoS0pTOjpG
dW5jdGlvbkJvZHlOb2RlOjphZGRQYXJhbSk6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6
cHJvY2Vzc0Z1bmNEZWNsKToKKyAgICAgICAgKEtKUzo6RnVuY0RlY2xOb2RlOjptYWtlRnVuY3Rp
b25PYmplY3QpOgorICAgICAgICAoS0pTOjpGdW5jRGVjbE5vZGU6OnJlY3Vyc2VWaXNpdCk6Cisg
ICAgICAgIChLSlM6OkZ1bmNFeHByTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6
U291cmNlRWxlbWVudHNOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6U291cmNlRWxlbWVu
dHNOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpFcnJvck5vZGU6OmV4ZWN1dGUp
OgorICAgICAgICAqIGtqcy9ub2Rlcy5oOgorICAgICAgICAoS0pTOjpOb2RlOjopOgorICAgICAg
ICAoS0pTOjpOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKToKKyAgICAgICAgKEtKUzo6TG9jYXRpb25O
b2RlOjopOgorICAgICAgICAoS0pTOjpWYXJBY2Nlc3NOb2RlOjopOgorICAgICAgICAoS0pTOjpM
b2NhbFZhckFjY2Vzc05vZGU6Oik6CisgICAgICAgIChLSlM6Ok5vbkxvY2FsVmFyQWNjZXNzTm9k
ZTo6KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6KToKKyAgICAgICAgKEtK
Uzo6RG90QWNjZXNzb3JOb2RlOjopOgorICAgICAgICAoS0pTOjpBcmd1bWVudHNOb2RlOjopOgor
ICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjopOgorICAgICAgICAoS0pT
OjpQb3N0Zml4Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6RGVsZXRlUmVmZXJlbmNlTm9kZTo6KToK
KyAgICAgICAgKEtKUzo6VHlwZU9mUmVmZXJlbmNlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6UHJl
Zml4Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWduTm9kZTo6KToKKyAgICAgICAgKEtKUzo6
QXNzaWduQnJhY2tldE5vZGU6Oik6CisgICAgICAgIChLSlM6OkFzc2lnbkRvdE5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OkFzc2lnbkVycm9yTm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXhw
ck5vZGU6Oik6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5v
ZGU6OmlzVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEtKUzo6RG9XaGlsZU5vZGU6Oik6CisgICAg
ICAgIChLSlM6OldoaWxlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6Rm9yTm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6Rm9ySW5Ob2RlOjopOgorICAgICAgICAoS0pTOjpDb250aW51ZU5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OkJyZWFrTm9kZTo6KToKKyAgICAgICAgKEtKUzo6V2l0aE5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OlRyeU5vZGU6Oik6CisgICAgICAgIChLSlM6OlBhcmFtZXRlck5vZGU6Oik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OlN5bWJvbDo6U3ltYm9sKToKKyAgICAg
ICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6UGFyYW1ldGVyOjpQYXJhbWV0ZXIpOgorICAgICAg
ICAoS0pTOjpGdW5jdGlvbkJvZHlOb2RlOjopOgorICAgICAgICAoS0pTOjpGdW5jRXhwck5vZGU6
Oik6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6KToKKyAgICAgICAgKEtKUzo6Q2xhdXNl
TGlzdE5vZGU6Oik6CisgICAgICAgIChLSlM6OlN3aXRjaE5vZGU6Oik6CisgICAgICAgIChLSlM6
OkVycm9yTm9kZTo6KToKKyAgICAgICAgKiBranMvbm9kZXMyc3RyaW5nLmNwcDoKKyAgICAgICAg
KFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChWYXJBY2Nlc3NOb2RlOjpzdHJl
YW1Ubyk6CisgICAgICAgIChGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjpzdHJlYW1Ubyk6Cisg
ICAgICAgIChGdW5jdGlvbkNhbGxQYXJlbkRvdE5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKFBv
c3RmaXhOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChEZWxldGVSZWZlcmVuY2VOb2RlOjpzdHJl
YW1Ubyk6CisgICAgICAgIChUeXBlT2ZSZWZlcmVuY2VOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAg
IChQcmVmaXhOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChBc3NpZ25Ob2RlOjpzdHJlYW1Ubyk6
CisgICAgICAgIChTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChF
cnJvck5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKiBranMvb2JqZWN0LmNwcDoKKyAgICAgICAg
KEtKUzo6SlNPYmplY3Q6OmNsYXNzTmFtZSk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpkZWZh
dWx0VmFsdWUpOgorICAgICAgICAoS0pTOjpFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBranMv
b2JqZWN0Lmg6CisgICAgICAgIChLSlM6OkdldHRlclNldHRlckltcDo6R2V0dGVyU2V0dGVySW1w
KToKKyAgICAgICAgKEtKUzo6R2V0dGVyU2V0dGVySW1wOjppc0xvY2FsSW5qZWN0ZWQpOgorICAg
ICAgICAoS0pTOjpHZXR0ZXJTZXR0ZXJJbXA6OnNldExvY2FsSW5qZWN0ZWQpOgorICAgICAgICAo
S0pTOjpKU09iamVjdDo6Z2V0RGlyZWN0TG9jYXRpb24pOgorICAgICAgICAoS0pTOjpKU09iamVj
dDo6aXNBY3RpdmF0aW9uKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmlzTG9jYWxJbmplY3Rl
ZCk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpzZXRMb2NhbEluamVjdGVkKToKKyAgICAgICAg
KEtKUzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9wcm9wZXJ0eV9tYXAuY3BwOgor
ICAgICAgICAoS0pTOjpQcm9wZXJ0eU1hcDo6Z2V0TG9jYXRpb24pOgorICAgICAgICAoS0pTOjpQ
cm9wZXJ0eU1hcDo6cHV0KToKKyAgICAgICAgKiBranMvcHJvcGVydHlfbWFwLmg6CisgICAgICAg
IChLSlM6OlByb3BlcnR5TWFwOjppc0xvY2FsSW5qZWN0ZWQpOgorICAgICAgICAoS0pTOjpQcm9w
ZXJ0eU1hcDo6c2V0TG9jYWxJbmplY3RlZCk6CisgICAgICAgIChLSlM6OlByb3BlcnR5TWFwOjpQ
cm9wZXJ0eU1hcCk6CisgICAgICAgICoga2pzL3Byb3BlcnR5X3Nsb3QuaDoKKyAgICAgICAgKEtK
Uzo6UHJvcGVydHlTbG90OjopOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6OnNldFZhbHVl
U2xvdCk6CisgICAgICAgIChLSlM6OlByb3BlcnR5U2xvdDo6c2V0UG90ZW50aWFsbHlXcml0ZWFi
bGUpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6OnNldFJlYWRPbmx5KToKKyAgICAgICAg
KEtKUzo6UHJvcGVydHlTbG90OjpnZXREaXJlY3RXcml0ZUxvY2F0aW9uKToKKyAgICAgICAgKiBr
anMvcmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAoS0pTOjpSZWZlcmVuY2U6OlJlZmVyZW5j
ZSk6CisgICAgICAgIChLSlM6OlJlZmVyZW5jZTo6cmVhZCk6CisgICAgICAgIChLSlM6OlJlZmVy
ZW5jZTo6d3JpdGUpOgorICAgICAgICAoS0pTOjpSZWZlcmVuY2U6OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKiBranMvc2VtYW50aWNfY2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoS0pT
OjpTZW1hbnRpY0NoZWNrZXI6OmVudGVyU2VtYW50aWNDb250ZXh0KToKKyAgICAgICAgKEtKUzo6
U2VtYW50aWNDaGVja2VyOjpleGl0U2VtYW50aWNDb250ZXh0KToKKyAgICAgICAgKEtKUzo6U2Vt
YW50aWNDaGVja2VyOjp2aXNpdCk6CisgICAgICAgIChLSlM6OlNlbWFudGljQ2hlY2tlcjo6Y2hl
Y2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAg
ICAgIChLSlM6OlN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKToKKyAgICAgICAgKEtKUzo6
TGFiZWxOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6
Y2hlY2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpGdW5jRXhwck5vZGU6OmNoZWNrU2VtYW50
aWNzKToKKyAgICAgICAgKEtKUzo6Q29udGludWVOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAg
ICAgIChLSlM6OkJyZWFrTm9kZTo6Y2hlY2tTZW1hbnRpY3MpOgorICAgICAgICAqIGtqcy9zZW1h
bnRpY19jaGVja2VyLmg6IEFkZGVkLgorICAgICAgICAoS0pTOjpTZW1hbnRpY0NvbnRleHQ6OlNl
bWFudGljQ29udGV4dCk6CisgICAgICAgIChLSlM6OlNlbWFudGljQ2hlY2tlcjo6c2VtYW50aWND
b250ZXh0KToKKyAgICAgICAgKiBranMvdmFsdWUuaDoKKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxh
L2V4cGVjdGVkLmh0bWw6CisKIDIwMDctMDgtMDIgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KIAogICAgICAgICBCdWlsZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
d29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIF9fWk4zS0pTMTFJbnRlcnByZXRlckQy
RXYKIF9fWk4zS0pTMTFKU0ltbWVkaWF0ZTR0eXBlRVBLTlNfN0pTVmFsdWVFCiBfX1pOM0tKUzEx
SlNJbW1lZGlhdGU4dG9PYmplY3RFUEtOU183SlNWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4z
S0pTMTFKU0ltbWVkaWF0ZTh0b1N0cmluZ0VQS05TXzdKU1ZhbHVlRQotX19aTjNLSlMxMVByb3Bl
cnR5TWFwMTFnZXRMb2NhdGlvbkVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zS0pTMTFQcm9wZXJ0
eU1hcDExZ2V0TG9jYXRpb25FUktOU18xMElkZW50aWZpZXJFUmIKIF9fWk4zS0pTMTFQcm9wZXJ0
eU1hcDVjbGVhckV2CiBfX1pOM0tKUzExUHJvcGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQ
cm9wZXJ0aWVzRQogX19aTjNLSlMxMVByb3BlcnR5TWFwRDFFdgpJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUzNyw2ICs1MzcsOSBAQAog
CQk3MDczQkUzRDA1ODEyOTFFMDA1RUUyQzkgLyogcnVudGltZV9hcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydW50aW1lX2FycmF5Lmg7
IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX2FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJNzBCMTZBMjYwNTY5QTEwOTAwREI3NTZEIC8qIHJ1bnRpbWVf
b2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IHJ1bnRpbWVfb2JqZWN0LmNwcDsgcGF0aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2Jq
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk3MEIx
NkEyNzA1NjlBMTA5MDBEQjc1NkQgLyogcnVudGltZV9vYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZV9vYmplY3QuaDsgcGF0
aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJN0UzRDJBMUUwQzYyRUQ0RDAwRUMwNjkzIC8qIHJlZmVyZW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVmZXJlbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFM0QyQTFGMEM2MkVENEQwMEVDMDY5MyAvKiBzZW1hbnRp
Y19jaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzZW1h
bnRpY19jaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0UzRDJBMjAw
QzYyRUQ0RDAwRUMwNjkzIC8qIHNlbWFudGljX2NoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHNlbWFudGljX2NoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODRBQkYxREUwNzBCNjI4QzAwQTNBQzA1IC8qIG5wcnVudGltZV9pbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbnBydW50aW1l
X2ltcGwuaDsgcGF0aCA9IGJpbmRpbmdzL25wcnVudGltZV9pbXBsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJOTMwMjA0M0EwQjc5MDc1MDAwMEM2MTE1IC8q
IEZhc3RNYWxsb2NQQ1JFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZhc3RNYWxsb2NQQ1JFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwM0Y1
NjcwOTkxMThGQTAwQUQ3MUI4IC8qIE93blB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPd25QdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1Nyw3ICs1
NjAsNyBAQAogCQk5MzNBMzQ5RDAzOEFFODBGMDA4NjM1Q0UgLyogaWRlbnRpZmllci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGlkZW50
aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkz
NUFGNDY5MDlFOUQ5REIwMEFDRDFEOCAvKiBGb3J3YXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1
QUY0NkIwOUU5RDlEQjAwQUNEMUQ4IC8qIFVudXNlZFBhcmFtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVudXNlZFBhcmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTkzNUY2OUY2MDgyNDRGRUEwMDNEMUE0NSAvKiBkZnRhYmxlcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gZGZ0YWJsZXM7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNUY2OUY2MDgyNDRGRUEwMDNEMUE0NSAvKiBkZnRh
YmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmNsdWRlSW5JbmRleCA9IDA7IGxh
c3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgcGF0aCA9IGRm
dGFibGVzOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzY0QjI3MzA0
NUI3RDZDMDBBOUNBQzEgLyogZnBjb25zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGZwY29uc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkzNzREM0E3MDM4RDlENzQwMDg2MzVDRSAvKiBz
Y29wZV9jaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHNjb3BlX2NoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJOTM3NEQzQTgwMzhEOUQ3NDAwODYzNUNFIC8qIHNjb3BlX2NoYWluLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2NvcGVf
Y2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CkBAIC05
MzIsNiArOTM1LDkgQEAKIAkJNjU0MTcyMDAwMzlFMDFCQTAwNThCRkVCIC8qIGtqcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0UzRDJBMUUwQzYyRUQ0
RDAwRUMwNjkzIC8qIHJlZmVyZW5jZS5oICovLAorCQkJCTdFM0QyQTFGMEM2MkVENEQwMEVDMDY5
MyAvKiBzZW1hbnRpY19jaGVja2VyLmNwcCAqLywKKwkJCQk3RTNEMkEyMDBDNjJFRDREMDBFQzA2
OTMgLyogc2VtYW50aWNfY2hlY2tlci5oICovLAogCQkJCTY1QzdBMTcxMEE4RUFBQ0IwMEZBMzdF
QSAvKiBKU1dyYXBwZXJPYmplY3QuY3BwICovLAogCQkJCTY1RUE3MzYyMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgKi8sCiAJCQkJNjVFQTczNjMwQkFFMzVEMTAwMUJC
NTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
QWxsSW5PbmVGaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQWxsSW5P
bmVGaWxlLmNwcAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQWxsSW5P
bmVGaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgInJl
Z2V4cC5jcHAiCiAjaW5jbHVkZSAicmVnZXhwX29iamVjdC5jcHAiCiAjaW5jbHVkZSAic2NvcGVf
Y2hhaW4uY3BwIgorI2luY2x1ZGUgInNlbWFudGljX2NoZWNrZXIuY3BwIgogI2luY2x1ZGUgInN0
cmluZ19vYmplY3QuY3BwIgogI2luY2x1ZGUgInVzdHJpbmcuY3BwIgogI2luY2x1ZGUgInZhbHVl
LmNwcCIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lv
biAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiAvLyBMaXN0IG9mIHByb3BlcnR5IG5h
bWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwog
Ly8gd2F5cyB3aXRob3V0IHJlcGVhdGluZyB0aGUgbGlzdC4KQEAgLTYyLDUgKzY0LDIzIEBAIG5h
bWVzcGFjZSBLSlMgewogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBLSlMKIAorLy8gIyMjIGJldHRl
ciBwbGFjZSBpbiBpZGVudGlmaWVyLmguIG9ubHkgaGVyZSBiZWNhdXNlIG9mIHRoZSBzaGFyZWQg
bnVsbAorbmFtZXNwYWNlIFdURiB7CisgICAgLy8gUHJvdmlkZSBoYXNoaW5nIG9mIElkZW50aWZp
ZXJzIC0tLSB1c2luZyB0aGUgcmVwIHB0cgorICAgIHN0cnVjdCBJZGVudEhhc2ggeworICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLSlM6OklkZW50aWZpZXImIGtleSkgeworICAg
ICAgICAgICAgcmV0dXJuIFB0ckhhc2g8S0pTOjpVU3RyaW5nOjpSZXAqPjo6aGFzaChrZXkudXN0
cmluZygpLnJlcCgpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBLSlM6OklkZW50aWZpZXImIGEsIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgYikgeyByZXR1cm4g
YSA9PSBiOyB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEtK
Uzo6SWRlbnRpZmllcj4geyB0eXBlZGVmIElkZW50SGFzaCBIYXNoOyB9OworCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxLSlM6OklkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFp
dHM8S0pTOjpJZGVudGlmaWVyPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBLSlM6OklkZW50aWZp
ZXImIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIEtKUzo6Q29tbW9uSWRlbnRpZmllcnM6OnNoYXJl
ZCgpLT5udWxsSWRlbnRpZmllcjsgfQorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAj
ZW5kaWYgLy8gS0pTX0NPTU1PTl9JREVOVElGSUVSU19ICiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ29udGV4
dC5jcHAJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0NvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMSArMzQsMTkgQEAgQ29udGV4dDo6Q29udGV4dChKU09i
amVjdCogZ2xvYiwgSW50ZXJwcgogICAgICwgbV9jdXJyZW50Qm9keShjdXJyZW50Qm9keSkKICAg
ICAsIG1fZnVuY3Rpb24oZnVuYykKICAgICAsIG1fYXJndW1lbnRzKGFyZ3MpCi0gICAgLCBtX2l0
ZXJhdGlvbkRlcHRoKDApCi0gICAgLCBtX3N3aXRjaERlcHRoKDApIAogewogICAgIG1fY29kZVR5
cGUgPSB0eXBlOwogICAgIG1fY2FsbGluZ0NvbnRleHQgPSBjYWxsaW5nQ29uOwogICAgIAogICAg
IC8vIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBhY3RpdmF0aW9uIG9iamVjdCAoRUNNQSAxMC4xLjYp
Ci0gICAgaWYgKHR5cGUgPT0gRnVuY3Rpb25Db2RlIHx8IHR5cGUgPT0gQW5vbnltb3VzQ29kZSAp
IHsKKyAgICBpZiAodHlwZSA9PSBGdW5jdGlvbkNvZGUpIHsKICAgICAgICAgbV9hY3RpdmF0aW9u
ID0gbmV3IEFjdGl2YXRpb25JbXAoZnVuYywgKmFyZ3MpOwogICAgICAgICBtX3ZhcmlhYmxlID0g
bV9hY3RpdmF0aW9uOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYWN0aXZhdGlvbiA9IDA7CiAg
ICAgICAgIG1fdmFyaWFibGUgPSBnbG9iOwogICAgIH0KLSAgICAKKwogICAgIC8vIEVDTUEgMTAu
MgogICAgIHN3aXRjaCh0eXBlKSB7CiAgICAgY2FzZSBFdmFsQ29kZToKQEAgLTY0LDE1ICs2Miw4
IEBAIENvbnRleHQ6OkNvbnRleHQoSlNPYmplY3QqIGdsb2IsIEludGVycHIKICAgICAgICAgbV90
aGlzVmFsID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihnbG9iKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGdW5jdGlvbkNvZGU6Ci0gICAgY2FzZSBBbm9ueW1vdXNDb2RlOgotICAgICAgICBp
ZiAodHlwZSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgICAgIHNjb3BlID0gZnVuYy0+c2Nv
cGUoKTsKLSAgICAgICAgICAgIHNjb3BlLnB1c2gobV9hY3RpdmF0aW9uKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHNjb3BlLmNsZWFyKCk7Ci0gICAgICAgICAgICBzY29wZS5wdXNo
KGdsb2IpOwotICAgICAgICAgICAgc2NvcGUucHVzaChtX2FjdGl2YXRpb24pOwotICAgICAgICB9
CisgICAgICAgIHNjb3BlID0gZnVuYy0+c2NvcGUoKTsKKyAgICAgICAgc2NvcGUucHVzaChtX2Fj
dGl2YXRpb24pOwogICAgICAgICBtX3ZhcmlhYmxlID0gbV9hY3RpdmF0aW9uOyAvLyBUT0RPOiBE
b250RGVsZXRlID8gKEVDTUEgMTAuMi4zKQogICAgICAgICBtX3RoaXNWYWwgPSB0aGlzVjsKICAg
ICAgICAgYnJlYWs7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkocmV2aXNpb24gMjQ1NTgpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAibGV4ZXIuaCIKICNpbmNsdWRlICJub2Rlcy5oIgorI2luY2x1
ZGUgInNlbWFudGljX2NoZWNrZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTAxLDYgKzEwMiwxMCBAQCBQYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBQYXJzZXI6OnBhcnNlKGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAg
IC8vIFNlbWFudGljYWxseSBjaGVjayB0aGUgcGFyc2VkIHByb2dyYW0sIGFuZCBkbyBzb21lIG9m
IHRoZSBiaW5kaW5nLi4KKyAgICBTZW1hbnRpY0NoZWNrZXIgc2M7CisgICAgc2MuY2hlY2tTZW1h
bnRpY3MocHJvZy5nZXQoKSk7CisKICAgICByZXR1cm4gcHJvZzsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Q
YXJzZXIuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICog
QGludGVybmFsCiAgICAgICoKICAgICAgKiBQYXJzZXMgRUNNQVNjcmlwdCBzb3VyY2UgY29kZSBh
bmQgY29udmVydHMgaW50byBQcm9ncmFtTm9kZSBvYmplY3RzLCB3aGljaAotICAgICAqIHJlcHJl
c2VudCB0aGUgcm9vdCBvZiBhIHBhcnNlIHRyZWUuIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb252
ZW5pZW50IHdvcmthcm91bmQKLSAgICAgKiBmb3IgdGhlIHByb2JsZW0gb2YgdGhlIGJpc29uIHBh
cnNlciB3b3JraW5nIGluIGEgc3RhdGljIGNvbnRleHQuCisgICAgICogcmVwcmVzZW50IHRoZSBy
b290IG9mIGEgcGFyc2UgdHJlZS4gVGhlIHRyZWUgaXMgdGhlbiBzZW1hbnRpY2FsbHkKKyAgICAg
KiBjaGVja2VkIHdpdGggYSBzZW1hbnRpYyBhbmFseXplci4gVGhpcyBjbGFzcyBwcm92aWRlcyBh
IGNvbnZlbmllbnQKKyAgICAgKiB3b3JrYXJvdW5kIGZvciB0aGUgcHJvYmxlbSBvZiB0aGUgYmlz
b24gcGFyc2VyIHdvcmtpbmcgaW4gYSBzdGF0aWMgY29udGV4dC4KICAgICAgKi8KICAgICBjbGFz
cyBQYXJzZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBBcnJheUluc3RhbmNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRQogICAgICAgSlNWYWx1ZSAqdiA9IHN0b3JhZ2VbaW5kZXhd
OwogICAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgCi0gICAgICBzbG90
LnNldFZhbHVlU2xvdCh0aGlzLCAmc3RvcmFnZVtpbmRleF0pOworICAgICAgc2xvdC5zZXRWYWx1
ZVNsb3QodGhpcywgJnN0b3JhZ2VbaW5kZXhdLCBQcm9wZXJ0eVNsb3Q6OlBlcm1pdERpcmVjdFdy
aXRlKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgfQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IGJvb2wgQXJyYXlJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlTbG90KEUKICAgICBKU1ZhbHVlICp2
ID0gc3RvcmFnZVtpbmRleF07CiAgICAgaWYgKCF2KQogICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsICZzdG9yYWdlW2luZGV4XSk7CisgICAgc2xvdC5zZXRW
YWx1ZVNsb3QodGhpcywgJnN0b3JhZ2VbaW5kZXhdLCBQcm9wZXJ0eVNsb3Q6OlBlcm1pdERpcmVj
dFdyaXRlKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvY29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb21wbGV0
aW9uLmgJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NvbXBsZXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAor
ICBjbGFzcyBOb2RlOworCiAgIC8qKgogICAgKiBDb21wbGV0aW9uIHR5cGVzLgogICAgKi8KQEAg
LTQ3LDE3ICs0OSwxNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICovCiAgIGNsYXNzIENvbXBsZXRp
b24gewogICBwdWJsaWM6Ci0gICAgQ29tcGxldGlvbihDb21wbFR5cGUgYyA9IE5vcm1hbCwgSlNW
YWx1ZSAqdiA9IE5VTEwsIGNvbnN0IElkZW50aWZpZXIgJnQgPSBDb21tb25JZGVudGlmaWVyczo6
c2hhcmVkKCktPm51bGxJZGVudGlmaWVyKQorICAgIENvbXBsZXRpb24oQ29tcGxUeXBlIGMgPSBO
b3JtYWwsIEpTVmFsdWUgKnYgPSBOVUxMLCBjb25zdCBOb2RlKiB0ID0gMCkKICAgICAgICAgOiBj
b21wKGMpLCB2YWwodiksIHRhcih0KSB7IH0KIAogICAgIENvbXBsVHlwZSBjb21wbFR5cGUoKSBj
b25zdCB7IHJldHVybiBjb21wOyB9CiAgICAgSlNWYWx1ZSAqdmFsdWUoKSBjb25zdCB7IHJldHVy
biB2YWw7IH0KLSAgICBJZGVudGlmaWVyIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHRhcjsgfQor
ICAgIGNvbnN0IE5vZGUqIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHRhcjsgfQogICAgIGJvb2wg
aXNWYWx1ZUNvbXBsZXRpb24oKSBjb25zdCB7IHJldHVybiAhIXZhbDsgfQogICBwcml2YXRlOgog
ICAgIENvbXBsVHlwZSBjb21wOwogICAgIEpTVmFsdWUgKnZhbDsKLSAgICBJZGVudGlmaWVyIHRh
cjsKKyAgICBjb25zdCBOb2RlKiB0YXI7CiAgIH07CiAKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9jb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbnRleHQu
aAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsMTUgKzEwOCw2IEBAIG5hbWVzcGFjZSBLSlMgIHsKIAogICAgIHZv
aWQgcHVzaFNjb3BlKEpTT2JqZWN0KiBzKSB7IHNjb3BlLnB1c2gocyk7IH0KICAgICB2b2lkIHBv
cFNjb3BlKCkgeyBzY29wZS5wb3AoKTsgfQotICAgIExhYmVsU3RhY2sqIHNlZW5MYWJlbHMoKSB7
IHJldHVybiAmbHM7IH0KLQotICAgIHZvaWQgcHVzaEl0ZXJhdGlvbigpIHsgbV9pdGVyYXRpb25E
ZXB0aCsrOyB9Ci0gICAgdm9pZCBwb3BJdGVyYXRpb24oKSB7IG1faXRlcmF0aW9uRGVwdGgtLTsg
fQotICAgIGJvb2wgaW5JdGVyYXRpb24oKSBjb25zdCB7IHJldHVybiAobV9pdGVyYXRpb25EZXB0
aCA+IDApOyB9Ci0KLSAgICB2b2lkIHB1c2hTd2l0Y2goKSB7IG1fc3dpdGNoRGVwdGgrKzsgfQot
ICAgIHZvaWQgcG9wU3dpdGNoKCkgeyBtX3N3aXRjaERlcHRoLS07IH0KLSAgICBib29sIGluU3dp
dGNoKCkgY29uc3QgeyByZXR1cm4gKG1fc3dpdGNoRGVwdGggPiAwKTsgfQogCiAgICAgdm9pZCBt
YXJrKCk7CiAKQEAgLTE0MCw5ICsxMzEsNiBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAgSlNPYmpl
Y3QqIG1fdmFyaWFibGU7CiAgICAgSlNPYmplY3QqIG1fdGhpc1ZhbDsKIAotICAgIExhYmVsU3Rh
Y2sgbHM7Ci0gICAgaW50IG1faXRlcmF0aW9uRGVwdGg7Ci0gICAgaW50IG1fc3dpdGNoRGVwdGg7
CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKICAgfTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrc2ltIE9ybG92aWNo
IChtYWtzaW1Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNo
IChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00OSw2ICs1MCw0NCBA
QCB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAogbmFtZXNwYWNlIEtKUyB7CiAKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvb2t1cE9wdGltaXplciAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KK2NsYXNzIExvb2t1cE9wdGltaXplciA6IHB1YmxpYyBOb2RlVmlzaXRv
ciB7CitwdWJsaWM6CisgIExvb2t1cE9wdGltaXplcihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHkpIDogbV9leGVjKGV4ZWMpLCBtX2JvZHkoYm9keSkge30KKworICB2b2lk
IG9wdGltaXplKCkgeworICAgIHZpc2l0KG1fYm9keSk7CisgIH0KKyAgCisgIHZpcnR1YWwgTm9k
ZSogdmlzaXQoTm9kZSogbm9kZSkgS0pTX0ZBU1RfQ0FMTAorICB7CisgICAgLy9EbyBub3QgcmVj
dXJzZSBpbnNpZGUgbm9kZXMgdGhhdCBpbnRyb2R1Y2UgbmV3IHNjb3BlczoKKyAgICAvL3RoYXQg
aW5jbHVkZXMgJ3dpdGgnIGFuZCB2YXJpb3VzIGZ1bmN0aW9uIGxpdGVyYWxzLgorICAgIGlmIChu
b2RlLT5pbnRyb2R1Y2VzTmV3U2NvcGUoKSkgcmV0dXJuIDA7CisKKyAgICAvL0NhdGNoIGNhbiBp
bnRyb2R1Y2UgYSBuZXcgc2NvcGUgYXMgd2VsbCwgYnV0IAorICAgIC8vdGhlIHJlc3Qgb2YgdHJ5
IGlzIGZpbmUuLgorICAgIGlmIChub2RlLT5pc1RyeU5vZGUoKSkgeworICAgICAgIHN0YXRpY19j
YXN0PFRyeU5vZGUqPihub2RlKS0+cmVjdXJzZVZpc2l0Tm9uQ2F0Y2godGhpcyk7CisgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgLy9Ob3cgdHJ5IG9wdGltaXppbmcuLgorICAgIGlmIChO
b2RlKiByZXN1bHROb2RlID0gbm9kZS0+b3B0aW1pemVMb2NhbEFjY2VzcyhtX2V4ZWMsIG1fYm9k
eSkpIHsKKyAgICAgIC8vV2Ugb3B0aW1pemVkIHRoaXMgbm9kZSwgYnV0IGl0IG1heSBtYWtlIHNl
bnNlIHRvIG9wdGltaXplIAorICAgICAgLy9pbnNpZGUgaXQgYXMgd2VsbCwgc28gcmVjdXJzZSwg
dG9vLiAKKyAgICAgIE5vZGVWaXNpdG9yOjp2aXNpdChyZXN1bHROb2RlKTsKKyAgICAgIHJldHVy
biByZXN1bHROb2RlOworICAgIH0KKworICAgIC8vSnVzdCByZWN1cnNlLi4KKyAgICByZXR1cm4g
Tm9kZVZpc2l0b3I6OnZpc2l0KG5vZGUpOworICB9Citwcml2YXRlOgorICBFeGVjU3RhdGUqICAg
ICAgICBtX2V4ZWM7CisgIEZ1bmN0aW9uQm9keU5vZGUqIG1fYm9keTsKK307CisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uSW1wOjppbmZvID0geyJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwLCAwfTsKQEAgLTgxLDExICsx
MjAsMzAgQEAgSlNWYWx1ZSogRnVuY3Rpb25JbXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZQogICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgbmV3RXhlYy5zZXRFeGNlcHRpb24oZXhlYy0+ZXhj
ZXB0aW9uKCkpOwogICBjdHguc2V0RXhlY1N0YXRlKCZuZXdFeGVjKTsKKyAKKyAgLy8gQ29tcHV0
ZSB0aGUgc2V0IG9mIGFsbCBsb2NhbCB2YXJpYWJsZXMsIGFuZCBmdW5jdGlvbnMuCisgIC8vIGFu
ZCBvcHRpbWl6ZSBhY2Nlc3MgdG8gdGhlbSB0aGUgZmlyc3QgdGltZSB3ZSdyZSBjYWxsZWQuCisg
IC8vIFRoZSBBU1QgYnVpbGRpbmcgYWxyZWFkeSB0b29rIGNhcmUgb2YgcGFyYW1ldGVyIGRlY2xh
cmF0aW9ucyBmb3IgdXMuCisgIGlmICghYm9keS0+YnVpbHRTeW1ib2xMaXN0KCkpIHsKKyAgICAv
LyBub3cgaGFuZGxlIG90aGVyIGxvY2FscyAoZnVuY3Rpb25zLCB2YXJpYWJsZXMpCisgICAgYm9k
eS0+cHJvY2Vzc0RlY2xzKCZuZXdFeGVjKTsKKyAgICBib2R5LT5zZXRCdWlsdFN5bWJvbExpc3Qo
KTsKKworICAgIExvb2t1cE9wdGltaXplciBvcHRpbWl6ZXIoJm5ld0V4ZWMsIGJvZHkuZ2V0KCkp
OworICAgIG9wdGltaXplci5vcHRpbWl6ZSgpOworICB9CiAKLSAgLy8gYXNzaWduIHVzZXIgc3Vw
cGxpZWQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMKKyAgQWN0aXZhdGlvbkltcCogYWN0aXZhdGlv
biA9IHN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihjdHguYWN0aXZhdGlvbk9iamVjdCgpKTsK
KworICAvLyBIZXJlLCB3ZSBhY3R1YWxseSBmaWxsIHN0dWZmIGluLCBnb2luZyBieSBpbmNyZWFz
aW5nIHByaW9yaXRpZXM6IAorICAvLyBmaXJzdCwgaW5pdGlhbGl6ZSBmbGFncyBhbmQgc2V0IHRv
IHVuZGVmaW5lZC4uLgorICBhY3RpdmF0aW9uLT5zZXR1cExvY2FscygpOworICAKKyAgLy8gTmV4
dCwgYXNzaWduIHVzZXIgc3VwcGxpZWQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMKICAgcGFzc0lu
UGFyYW1ldGVycygmbmV3RXhlYywgYXJncyk7Ci0gIC8vIGFkZCB2YXJpYWJsZSBkZWNsYXJhdGlv
bnMgKGluaXRpYWxpemVkIHRvIHVuZGVmaW5lZCkKLSAgcHJvY2Vzc1ZhckRlY2xzKCZuZXdFeGVj
KTsKKworICAvLyBOb3csIGZpbGwgaW4gZnVuY3Rpb24gb2JqZWN0cy4gVGhlc2Ugc2hvdWxkIG92
ZXJyaWRlIGV2ZXJ5dGhpbmcgZWxzZQorICBhY3RpdmF0aW9uLT5zZXR1cEZ1bmN0aW9uTG9jYWxz
KCZuZXdFeGVjKTsKIAogICBEZWJ1Z2dlciogZGJnID0gZXhlYy0+ZHluYW1pY0ludGVycHJldGVy
KCktPmRlYnVnZ2VyKCk7CiAgIGludCBzaWQgPSAtMTsKQEAgLTE1MCw5ICsyMDgsOCBAQCBKU1Zh
bHVlKiBGdW5jdGlvbkltcDo6Y2FsbEFzRnVuY3Rpb24oRXhlCiAvLyBFQ01BIDEwLjEuM3EKIGlu
bGluZSB2b2lkIEZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJhbWV0ZXJzKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgTGlzdCYgYXJncykKIHsKLSAgICBWZWN0b3I8UGFyYW1ldGVyPiYgcGFyYW1ldGVycyA9
IGJvZHktPnBhcmFtZXRlcnMoKTsKLQotICAgIEpTT2JqZWN0KiB2YXJpYWJsZSA9IGV4ZWMtPmNv
bnRleHQoKS0+dmFyaWFibGVPYmplY3QoKTsKKyAgICBBU1NFUlQoZXhlYy0+Y29udGV4dCgpLT52
YXJpYWJsZU9iamVjdCgpLT5pc0FjdGl2YXRpb24oKSk7CisgICAgQWN0aXZhdGlvbkltcCogdmFy
aWFibGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT52YXJp
YWJsZU9iamVjdCgpKTsKIAogI2lmZGVmIEtKU19WRVJCT1NFCiAgICAgZnByaW50ZihzdGRlcnIs
ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIK
QEAgLTE2MCwyMCArMjE3LDIzIEBAIGlubGluZSB2b2lkIEZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJh
bWV0ZXIKICAgICAgICAgICBmdW5jdGlvbk5hbWUoKS5pc0VtcHR5KCkgPyAiKGludGVybmFsKSIg
OiBmdW5jdGlvbk5hbWUoKS5hc2NpaSgpKTsKICNlbmRpZgogCi0gICAgc2l6ZV90IHNpemUgPSBw
YXJhbWV0ZXJzLnNpemUoKTsKKyAgICBMaXN0SXRlcmF0b3IgaXQgPSBhcmdzLmJlZ2luKCk7Cisg
ICAgc2l6ZV90IHNpemUgPSBib2R5LT5udW1QYXJhbXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpbnQgd3JpdGVUbyA9IGJvZHktPnBhcmFtU3lt
Ym9sSUQoaSk7CisgICAgICAgIEpTVmFsdWUqIHZhbCA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAg
IGlmIChpdCAhPSBhcmdzLmVuZCgpKSB7CisgICAgICAgICAgICB2YWwgPSAqaXQ7CisgICAgICAg
ICAgICArK2l0OworICAgICAgICB9CiAjaWZkZWYgS0pTX1ZFUkJPU0UKICAgICAgIGZwcmludGYo
c3RkZXJyLCAic2V0dGluZyBwYXJhbWV0ZXIgJXMgIiwgcGFyYW1ldGVycy5hdChpKS5uYW1lLmFz
Y2lpKCkpOwogICAgICAgcHJpbnRJbmZvKGV4ZWMsICJ0byIsIGFyZ3NbaV0pOwogI2VuZGlmCi0g
ICAgICB2YXJpYWJsZS0+cHV0KGV4ZWMsIHBhcmFtZXRlcnNbaV0ubmFtZSwgYXJnc1tpXSk7Cisg
ICAgICB2YXJpYWJsZS0+cHV0TG9jYWwod3JpdGVUbywgdmFsKTsKICAgICB9CiB9CiAKLXZvaWQg
RnVuY3Rpb25JbXA6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKQotewotfQotCiBKU1ZhbHVl
KiBGdW5jdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgRnVuY3Rpb25JbXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkltcCo+
KHNsb3Quc2xvdEJhc2UoKSk7CkBAIC0yNjEsMTggKzMyMSwxNiBAQCBib29sIEZ1bmN0aW9uSW1w
OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhCiAgKi8KIElkZW50aWZpZXIgRnVuY3Rpb25JbXA6Omdl
dFBhcmFtZXRlck5hbWUoaW50IGluZGV4KQogewotICAgIFZlY3RvcjxQYXJhbWV0ZXI+JiBwYXJh
bWV0ZXJzID0gYm9keS0+cGFyYW1ldGVycygpOwotCi0gICAgaWYgKHN0YXRpY19jYXN0PHNpemVf
dD4oaW5kZXgpID49IGJvZHktPm51bVBhcmFtcygpKQorICAgIGlmIChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGluZGV4KSA+PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvZHktPm51bVBhcmFtcygpKSkKICAg
ICAgICAgcmV0dXJuIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7
CiAgIAotICAgIElkZW50aWZpZXIgbmFtZSA9IHBhcmFtZXRlcnNbaW5kZXhdLm5hbWU7CisgICAg
SWRlbnRpZmllciBuYW1lID0gYm9keS0+cGFyYW1OYW1lKGluZGV4KTsKIAogICAgIC8vIEFyZSB0
aGVyZSBhbnkgc3Vic2VxdWVudCBwYXJhbWV0ZXJzIHdpdGggdGhlIHNhbWUgbmFtZT8KLSAgICBz
aXplX3Qgc2l6ZSA9IHBhcmFtZXRlcnMuc2l6ZSgpOworICAgIHNpemVfdCBzaXplID0gYm9keS0+
bnVtUGFyYW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4ICsgMTsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgaWYgKHBhcmFtZXRlcnNbaV0ubmFtZSA9PSBuYW1lKQotICAgICAgICAgICAg
cmV0dXJuIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7CisgICAg
ICAgIGlmIChib2R5LT5wYXJhbU5hbWUoaSkgPT0gbmFtZSkKKyAgICAgICAgcmV0dXJuIENvbW1v
bklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7CiAKICAgICByZXR1cm4gbmFt
ZTsKIH0KQEAgLTMyMywxMSArMzgxLDYgQEAgQ29tcGxldGlvbiBEZWNsYXJlZEZ1bmN0aW9uSW1w
OjpleGVjdXRlKAogICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIGpzVW5kZWZpbmVkKCkpOyAv
LyBUT0RPOiBvciBSZXR1cm5WYWx1ZSA/CiB9CiAKLXZvaWQgRGVjbGFyZWRGdW5jdGlvbkltcDo6
cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgYm9keS0+cHJvY2Vzc1ZhckRl
Y2xzKGV4ZWMpOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSW5kZXhU
b05hbWVNYXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIFdlIG1hcCBp
bmRleGVzIGluIHRoZSBhcmd1bWVudHMgYXJyYXkgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBhcmd1
bWVudCBuYW1lcy4gCkBAIC00NjYsMjAgKzUxOSw0MSBAQCBjb25zdCBDbGFzc0luZm8gQWN0aXZh
dGlvbkltcDo6aW5mbyA9IHsiCiAKIC8vIEVDTUEgMTAuMS42CiBBY3RpdmF0aW9uSW1wOjpBY3Rp
dmF0aW9uSW1wKEZ1bmN0aW9uSW1wKiBmdW5jdGlvbiwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQot
ICAgIDogX2Z1bmN0aW9uKGZ1bmN0aW9uKSwgX2FyZ3VtZW50cyhhcmd1bWVudHMpLCBfYXJndW1l
bnRzT2JqZWN0KDApCisgICAgOiBfZnVuY3Rpb24oZnVuY3Rpb24pLCBfYXJndW1lbnRzKHRydWUp
LCBfbG9jYWxzKDApCiB7CisgIF9hcmd1bWVudHMuY29weUZyb20oYXJndW1lbnRzKTsKICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgdG8gc3VwcG9ydCBlbnVtZXJhdGluZyB0aGUgYXJndW1lbnRzIHBy
b3BlcnR5PwogfQogCit2b2lkIEFjdGl2YXRpb25JbXA6OnNldHVwTG9jYWxzKCkgeworICAgIGlu
dCBudW1Mb2NhbHMgPSBfZnVuY3Rpb24tPmJvZHktPm51bUxvY2FscygpOworICAgIF9sb2NhbHMg
ID0gbmV3IExvY2FsW251bUxvY2FscyArIDFdOworICAgIF9sb2NhbHNbMF0udmFsdWUgPSAwOwor
ICAgIF9sb2NhbHNbMF0uYXR0ciAgPSBudW1Mb2NhbHMgKyAxOyAKKyAgICAKKyAgICBmb3IgKGlu
dCBsID0gMTsgbCA8IG51bUxvY2FscyArIDE7ICsrbCkgeworICAgICAgICBfbG9jYWxzW2xdLnZh
bHVlID0ganNVbmRlZmluZWQoKTsKKyAgICAgICAgX2xvY2Fsc1tsXS5hdHRyICA9IF9mdW5jdGlv
bi0+Ym9keS0+Z2V0TG9jYWxBdHRyKGwpOyAKKyAgICB9Cit9CisKK3ZvaWQgQWN0aXZhdGlvbklt
cDo6c2V0dXBGdW5jdGlvbkxvY2FscyhFeGVjU3RhdGUgKmV4ZWMpIHsKKyAgaW50IG51bUxvY2Fs
cyA9IF9mdW5jdGlvbi0+Ym9keS0+bnVtTG9jYWxzKCk7CisgIGZvciAoaW50IGwgPSAxOyBsIDwg
bnVtTG9jYWxzICsgMTsgKytsKSB7CisgICAgaWYgKEZ1bmNEZWNsTm9kZSogZnVuY0RlY2wgPSBf
ZnVuY3Rpb24tPmJvZHktPmdldExvY2FsRnVuY0RlY2wobCkpCisgICAgICBfbG9jYWxzW2xdLnZh
bHVlID0gZnVuY0RlY2wtPm1ha2VGdW5jdGlvbk9iamVjdChleGVjKTsKKyAgfQorfQorCiBKU1Zh
bHVlKiBBY3RpdmF0aW9uSW1wOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
IEFjdGl2YXRpb25JbXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oc2xv
dC5zbG90QmFzZSgpKTsKIAogICAvLyBkZWZhdWx0OiByZXR1cm4gYnVpbHRpbiBhcmd1bWVudHMg
YXJyYXkKLSAgaWYgKCF0aGlzT2JqLT5fYXJndW1lbnRzT2JqZWN0KQorICBpZiAoIXRoaXNPYmot
Pl9sb2NhbHNbMF0udmFsdWUpCiAgICAgdGhpc09iai0+Y3JlYXRlQXJndW1lbnRzT2JqZWN0KGV4
ZWMpOwogICAKLSAgcmV0dXJuIHRoaXNPYmotPl9hcmd1bWVudHNPYmplY3Q7CisgIHJldHVybiB0
aGlzT2JqLT5fbG9jYWxzWzBdLnZhbHVlOwogfQogCiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
YyBBY3RpdmF0aW9uSW1wOjpnZXRBcmd1bWVudHNHZXR0ZXIoKQpAQCAtNDkzLDExICs1NjcsMjIg
QEAgYm9vbCBBY3RpdmF0aW9uSW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRQogICAgIC8vIHdlIGRv
bid0IGNhbGwgSlNPYmplY3QgYmVjYXVzZSB3ZSB3b24ndCBoYXZlIGdldHRlci9zZXR0ZXIgcHJv
cGVydGllcwogICAgIC8vIGFuZCB3ZSBkb24ndCB3YW50IHRvIHN1cHBvcnQgX19wcm90b19fCiAK
LSAgICBpZiAoSlNWYWx1ZSoqIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlO
YW1lKSkgewotICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCBsb2NhdGlvbik7CisgICAg
Ly8gU2VlIGlmIHdlJ3JlIGRvaW5nIGZhbGxiYWNrICBsb29rdXAgb24gYSBsb2NhbC4uCisgICAg
aW50IGlkID0gX2Z1bmN0aW9uLT5ib2R5LT5sb29rdXBTeW1ib2xJRChwcm9wZXJ0eU5hbWUpOwor
CisgICAgaWYgKHZhbGlkTG9jYWwoaWQpKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRo
aXMsICZfbG9jYWxzW2lkXS52YWx1ZSwgX2xvY2Fsc1tpZF0uYXR0ciAmIFJlYWRPbmx5KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgYm9vbCBybzsKKyAgICBpZiAoSlNWYWx1
ZSoqIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lLCBybykpIHsKKyAg
ICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhpcywgbG9jYXRpb24sIHJvKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogCisgICAgLy8gSW1wb3J0YW50OiBpZiB5b3UgYWRkIG1vcmUgZHlu
YW1pYyBwcm9wZXJ0aWVzIGhlcmUsIAorICAgIC8vIG1ha2Ugc3VyZSB0byBtYWtlIHRoZSBvcHRp
bWl6ZVJlc29sdmVyIGNhbGwgaG9ub3IgdGhlbS4KICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20o
dGhpcywgZ2V0QXJndW1lbnRzR2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUw
OCw2ICs1OTMsMTEgQEAgYm9vbCBBY3RpdmF0aW9uSW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRQog
CiBib29sIEFjdGl2YXRpb25JbXA6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogeworICAgIC8vIElmIHNvbWVvbmUgdHJpZXMg
dG8gZGVsZXRlIGEgbG9jYWwsIHJldHVybiBmYWxzZSwgdGhhdCdzIG5vdCBwZXJtaXR0ZWQKKyAg
ICBpbnQgaWQgPSBfZnVuY3Rpb24tPmJvZHktPmxvb2t1cFN5bWJvbElEKHByb3BlcnR5TmFtZSk7
CisgICAgaWYgKHZhbGlkTG9jYWwoaWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KGV4
ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC01MTgsNiArNjA4LDEzIEBAIHZvaWQgQWN0aXZhdGlvbklt
cDo6cHV0KEV4ZWNTdGF0ZSosIGNvbnMKICAgLy8gVGhlcmUncyBubyB3YXkgdGhhdCBhbiBhY3Rp
dmF0aW9uIG9iamVjdCBjYW4gaGF2ZSBhIHByb3RvdHlwZSBvciBnZXR0ZXIvc2V0dGVyIHByb3Bl
cnRpZXMKICAgYXNzZXJ0KCFfcHJvcC5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwogICBh
c3NlcnQocHJvdG90eXBlKCkgPT0ganNOdWxsKCkpOworICAKKyAgLy8gU2VlIGlmIHdlJ3JlIHNl
dHRpbmcgYSBsb2NhbC4uCisgIGludCBpZCA9IF9mdW5jdGlvbi0+Ym9keS0+bG9va3VwU3ltYm9s
SUQocHJvcGVydHlOYW1lKTsKKyAgaWYgKHZhbGlkTG9jYWwoaWQpKSB7CisgICAgICBwdXRMb2Nh
bENoZWNrZWQoaWQsIHZhbHVlKTsKKyAgICAgIHJldHVybjsKKyAgfQogCiAgIF9wcm9wLnB1dChw
cm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAoYXR0ciA9PSBOb25lIHx8IGF0dHIgPT0gRG9udERl
bGV0ZSkpOwogfQpAQCAtNTI2LDE2ICs2MjMsMjQgQEAgdm9pZCBBY3RpdmF0aW9uSW1wOjptYXJr
KCkKIHsKICAgICBpZiAoX2Z1bmN0aW9uICYmICFfZnVuY3Rpb24tPm1hcmtlZCgpKSAKICAgICAg
ICAgX2Z1bmN0aW9uLT5tYXJrKCk7Ci0gICAgaWYgKF9hcmd1bWVudHNPYmplY3QgJiYgIV9hcmd1
bWVudHNPYmplY3QtPm1hcmtlZCgpKQotICAgICAgICBfYXJndW1lbnRzT2JqZWN0LT5tYXJrKCk7
CisKKyAgICBmb3IgKGludCBwb3MgPSAwOyBwb3MgPCBudW1Mb2NhbHMoKTsgKytwb3MpIHsKKyAg
ICAgICAgSlNWYWx1ZSAqdmFsID0gX2xvY2Fsc1twb3NdLnZhbHVlOworICAgICAgICBpZiAodmFs
ICYmICF2YWwtPm1hcmtlZCgpKQorICAgICAgICAgICAgdmFsLT5tYXJrKCk7CisgICAgfQorCiAg
ICAgSlNPYmplY3Q6Om1hcmsoKTsKIH0KIAorQWN0aXZhdGlvbkltcDo6fkFjdGl2YXRpb25JbXAo
KQoreworICAgIGRlbGV0ZVtdIF9sb2NhbHM7Cit9CisKIHZvaWQgQWN0aXZhdGlvbkltcDo6Y3Jl
YXRlQXJndW1lbnRzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgX2FyZ3VtZW50c09iamVj
dCA9IG5ldyBBcmd1bWVudHMoZXhlYywgX2Z1bmN0aW9uLCBfYXJndW1lbnRzLCBjb25zdF9jYXN0
PEFjdGl2YXRpb25JbXAqPih0aGlzKSk7Ci0gIC8vIFRoZSBhcmd1bWVudHMgbGlzdCBpcyBvbmx5
IG5lZWRlZCB0byBjcmVhdGUgdGhlIGFyZ3VtZW50cyBvYmplY3QsIHNvIGRpc2NhcmQgaXQgbm93
Ci0gIF9hcmd1bWVudHMucmVzZXQoKTsKKyAgX2xvY2Fsc1swXS52YWx1ZSA9IG5ldyBBcmd1bWVu
dHMoZXhlYywgX2Z1bmN0aW9uLCBfYXJndW1lbnRzLCBjb25zdF9jYXN0PEFjdGl2YXRpb25JbXAq
Pih0aGlzKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHbG9iYWxG
dW5jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MzEsNyArOTM2LDcg
QEAgSlNWYWx1ZSogR2xvYmFsRnVuY0ltcDo6Y2FsbEFzRnVuY3Rpb24oRQogICAgICAgICBjdHgu
c2V0RXhlY1N0YXRlKCZuZXdFeGVjKTsKICAgICAgICAgCiAgICAgICAgIC8vIGV4ZWN1dGUgdGhl
IGNvZGUKLSAgICAgICAgcHJvZ05vZGUtPnByb2Nlc3NWYXJEZWNscygmbmV3RXhlYyk7CisgICAg
ICAgIHByb2dOb2RlLT5wcm9jZXNzRGVjbHMoJm5ld0V4ZWMpOwogICAgICAgICBDb21wbGV0aW9u
IGMgPSBwcm9nTm9kZS0+ZXhlY3V0ZSgmbmV3RXhlYyk7CiAKICAgICAgICAgLy8gaWYgYW4gZXhj
ZXB0aW9uIG9jY3VyZWQsIHByb3BvZ2F0ZSBpdCBiYWNrIHRvIHRoZSBwcmV2aW91cyBleGVjdXRp
b24gb2JqZWN0CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkocmV2aXNpb24gMjQ1NTgpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDgg
QEAKICAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcwogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0zNiw4ICszOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgIGVu
dW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLAogICAgICAgICAgICAgICAgICAgRXZhbENvZGUsCi0g
ICAgICAgICAgICAgICAgICBGdW5jdGlvbkNvZGUsCi0gICAgICAgICAgICAgICAgICBBbm9ueW1v
dXNDb2RlIH07CisgICAgICAgICAgICAgICAgICBGdW5jdGlvbkNvZGUgfTsKIAogICBjbGFzcyBJ
bnRlcm5hbEZ1bmN0aW9uSW1wIDogcHVibGljIEpTT2JqZWN0IHsKICAgcHVibGljOgpAQCAtMTM3
LDcgKzEzOCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHN0YXRpYyBKU1ZhbHVlKiBsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90Jik7CiAKICAgICB2b2lkIHBhc3NJblBhcmFtZXRlcnMoRXhlY1N0YXRlKiwgY29u
c3QgTGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKik7
CiAgIH07CiAKICAgY2xhc3MgRGVjbGFyZWRGdW5jdGlvbkltcCA6IHB1YmxpYyBGdW5jdGlvbklt
cCB7CkBAIC0xNTMsOSArMTUzLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICB2aXJ0dWFsIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87Ci0KLSAgcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopOwogICB9OwogCiAgIGNsYXNzIEluZGV4VG9O
YW1lTWFwIHsKQEAgLTE5MywxOCArMTkwLDUxIEBAIG5hbWVzcGFjZSBLSlMgewogICBjbGFzcyBB
Y3RpdmF0aW9uSW1wIDogcHVibGljIEpTT2JqZWN0IHsKICAgcHVibGljOgogICAgIEFjdGl2YXRp
b25JbXAoRnVuY3Rpb25JbXAqIGZ1bmN0aW9uLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpOworICAg
IH5BY3RpdmF0aW9uSW1wKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNWYWx1ZSogdmFsdWUsIGludCBhdHRyID0gTm9uZSk7CiAgICAgdmlydHVhbCBib29sIGRlbGV0
ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAK
KyAgICAvL1RoaXMgaXMgb25seSB1c2VkIGJ5IGRlY2xhcmF0aW9uIGNvZGUsIHNvIGl0IG5ldmVy
IGNoZWNrIHIvbyBhdHRyCisgICAgdm9pZCBwdXRMb2NhbChpbnQgcHJvcGVydHlJRCwgSlNWYWx1
ZSogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodmFsaWRMb2NhbChwcm9wZXJ0eUlEKSk7
CisgICAgICAgIF9sb2NhbHNbcHJvcGVydHlJRF0udmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgLy9X
ZSBkbyBub3QgaGF2ZSB0byB0b3VjaCB0aGUgZmxhZ3MgaGVyZSAtLSB0aGV5J3JlIHByZS1jb21w
dXRlZC4uCisgICAgfQorCisgICAgdm9pZCBpbml0TG9jYWwoaW50IHByb3BlcnR5SUQsIEpTVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkTG9jYWwocHJvcGVydHlJRCkp
OworICAgICAgICBfbG9jYWxzW3Byb3BlcnR5SURdLnZhbHVlID0gdmFsdWU7CisgICAgfQorCisg
ICAgdm9pZCBwdXRMb2NhbENoZWNrZWQoaW50IHByb3BlcnR5SUQsIEpTVmFsdWUgKnZhbHVlKSB7
CisgICAgICBpZiAoaXNMb2NhbFJlYWRPbmx5KHByb3BlcnR5SUQpKQorICAgICAgICByZXR1cm47
CisKKyAgICAgIF9sb2NhbHNbcHJvcGVydHlJRF0udmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKyAg
ICBKU1ZhbHVlKiogZ2V0TG9jYWxEaXJlY3QoaW50IHByb3BlcnR5SUQpIHsKKyAgICAgIEFTU0VS
VCh2YWxpZExvY2FsKHByb3BlcnR5SUQpKTsKKyAgICAgIHJldHVybiAmX2xvY2Fsc1twcm9wZXJ0
eUlEXS52YWx1ZTsKKyAgICB9CisKKyAgICBib29sIGlzTG9jYWxSZWFkT25seShpbnQgcHJvcGVy
dHlJRCkgeworICAgICAgcmV0dXJuICEhKF9sb2NhbHNbcHJvcGVydHlJRF0uYXR0ciAmIFJlYWRP
bmx5KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkg
Y29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87
CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogCi0gICAgYm9vbCBpc0FjdGl2YXRpb24oKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAorICAgIHZvaWQgc2V0dXBMb2NhbHMoKTsKKyAgICB2b2lkIHNldHVw
RnVuY3Rpb25Mb2NhbHMoRXhlY1N0YXRlICpleGVjKTsKICAgICB2b2lkIHJlbGVhc2VBcmd1bWVu
dHMoKSB7IF9hcmd1bWVudHMucmVzZXQoKTsgfQogCiAgIHByaXZhdGU6CkBAIC0yMTIsOSArMjQy
LDIxIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHN0YXRpYyBKU1ZhbHVlKiBhcmd1bWVudHNHZXR0
ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90KTsKICAgICB2b2lkIGNyZWF0ZUFyZ3VtZW50c09iamVjdChFeGVjU3RhdGUq
KTsKIAorICAgIHN0cnVjdCBMb2NhbCB7CisgICAgICAgIEpTVmFsdWUqIHZhbHVlOworICAgICAg
ICBpbnQgICAgICBhdHRyOworICAgIH07CisKICAgICBGdW5jdGlvbkltcCogX2Z1bmN0aW9uOwog
ICAgIExpc3QgX2FyZ3VtZW50czsKLSAgICBtdXRhYmxlIEFyZ3VtZW50cyogX2FyZ3VtZW50c09i
amVjdDsKKworICAgIC8vTGlzdCBvZiBsb2NhbHMsIGJ1dCB0aGUgZW50cnkgMCBpcyBzcGVjaWFs
OiAKKyAgICAvL3RoZSB2YWx1ZSBoZXJlIGlzIHRoZSBhcmd1bWVudHMgb2JqZWN0LCAKKyAgICAv
L3RoZSBhdHRyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IChlLmcuIG51bUxvY2FscyArIDEp
CisgICAgTG9jYWwgKl9sb2NhbHM7CisKKyAgICBpbnQgIG51bUxvY2FscygpIGNvbnN0IHsgcmV0
dXJuIF9sb2NhbHNbMF0uYXR0cjsgfQorICAgIGJvb2wgdmFsaWRMb2NhbChpbnQgaSkgY29uc3Qg
eyByZXR1cm4gMCA8IGkgJiYgaSA8IG51bUxvY2FscygpOyB9CiAgIH07CiAKICAgY2xhc3MgR2xv
YmFsRnVuY0ltcCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uSW1wIHsKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2dy
YW1tYXIueQkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1hci55
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCArMjUyLDggQEAgUHJpbWFyeUV4cHJOb0JyYWNlOgog
ICAgIFRISVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgVGhpc05v
ZGUoKTsgfQogICB8IExpdGVyYWwKICAgfCBBcnJheUxpdGVyYWwKLSAgfCBJREVOVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IFJlc29sdmVOb2RlKCokMSk7IH0KLSAg
fCAnKCcgRXhwciAnKScgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gKCQyLT5pc1Jlc29s
dmVOb2RlKCkgfHwgJDItPmlzR3JvdXBOb2RlKCkpID8KKyAgfCBJREVOVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IFZhckFjY2Vzc05vZGUoKiQxKTsgfQorICB8ICco
JyBFeHByICcpJyAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAoJDItPmlzVmFyQWNjZXNz
Tm9kZSgpIHx8ICQyLT5pc0dyb3VwTm9kZSgpKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICQyIDogbmV3IEdyb3VwTm9kZSgkMik7IH0KIDsKIApAQCAtODA4
LDcgKzgwOCw3IEBAIERlZmF1bHRDbGF1c2U6CiA7CiAKIExhYmVsbGVkU3RhdGVtZW50OgotICAg
IElERU5UICc6JyBTdGF0ZW1lbnQgICAgICAgICAgICAgICAgIHsgJDMtPnB1c2hMYWJlbCgqJDEp
OyAkJCA9IG5ldyBMYWJlbE5vZGUoKiQxLCAkMyk7IH0KKyAgICBJREVOVCAnOicgU3RhdGVtZW50
ICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IExhYmVsTm9kZSgqJDEsICQzKTsgfQogOwogCiBU
aHJvd1N0YXRlbWVudDoKQEAgLTg3NywzNyArODc3LDI2IEBAIHN0YXRpYyBOb2RlKiBtYWtlQXNz
aWduTm9kZShOb2RlKiBsb2MsIE8KICAgICBpZiAoIW4tPmlzTG9jYXRpb24oKSkKICAgICAgICAg
cmV0dXJuIG5ldyBBc3NpZ25FcnJvck5vZGUobG9jLCBvcCwgZXhwcik7CiAKLSAgICBpZiAobi0+
aXNSZXNvbHZlTm9kZSgpKSB7Ci0gICAgICAgIFJlc29sdmVOb2RlICpyZXNvbHZlID0gc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUgKj4obik7Ci0gICAgICAgIHJldHVybiBuZXcgQXNzaWduUmVzb2x2
ZU5vZGUocmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7Ci0gICAgfQotICAgIGlmIChu
LT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgeworICAgIGlmIChuLT5pc1ZhckFjY2Vzc05vZGUo
KSkgeworICAgICAgICByZXR1cm4gbmV3IEFzc2lnbk5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25O
b2RlKj4obiksIG9wLCBleHByKTsKKyAgICB9IGVsc2UgaWYgKG4tPmlzQnJhY2tldEFjY2Vzc29y
Tm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUgKmJyYWNrZXQgPSBzdGF0aWNf
Y2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlICo+KG4pOwogICAgICAgICByZXR1cm4gbmV3IEFzc2ln
bkJyYWNrZXROb2RlKGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBl
eHByKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobi0+aXNEb3RBY2Nlc3Nvck5vZGUo
KSk7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlICo+KG4pOworICAgICAgICByZXR1cm4gbmV3IEFzc2lnbkRvdE5vZGUoZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7CiAgICAgfQotICAgIGFzc2VydChuLT5p
c0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9IHN0YXRpY19j
YXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICByZXR1cm4gbmV3IEFzc2lnbkRvdE5vZGUo
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7CiB9CiAKLXN0YXRpYyBO
b2RlKiBtYWtlUHJlZml4Tm9kZShOb2RlICpleHByLCBPcGVyYXRvciBvcCkKK3N0YXRpYyBOb2Rl
KiBtYWtlUHJlZml4Tm9kZShOb2RlKiBleHByLCBPcGVyYXRvciBvcCkKIHsgCiAgICAgTm9kZSAq
biA9IGV4cHItPm5vZGVJbnNpZGVBbGxQYXJlbnMoKTsKIAogICAgIGlmICghbi0+aXNMb2NhdGlv
bigpKQogICAgICAgICByZXR1cm4gbmV3IFByZWZpeEVycm9yTm9kZShleHByLCBvcCk7Ci0gICAg
Ci0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVz
b2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3
IFByZWZpeFJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3ApOwotICAgIH0KLSAg
ICBpZiAobi0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKLSAgICAgICAgQnJhY2tldEFjY2Vz
c29yTm9kZSAqYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7
Ci0gICAgICAgIHJldHVybiBuZXcgUHJlZml4QnJhY2tldE5vZGUoYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgb3ApOwotICAgIH0KLSAgICBhc3NlcnQobi0+aXNEb3RBY2Nl
c3Nvck5vZGUoKSk7Ci0gICAgRG90QWNjZXNzb3JOb2RlICpkb3QgPSBzdGF0aWNfY2FzdDxEb3RB
Y2Nlc3Nvck5vZGUgKj4obik7Ci0gICAgcmV0dXJuIG5ldyBQcmVmaXhEb3ROb2RlKGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3ApOworCisgICAgcmV0dXJuIG5ldyBQcmVmaXhOb2Rl
KHN0YXRpY19jYXN0PExvY2F0aW9uTm9kZSo+KG4pLCBvcCk7CiB9CiAKIHN0YXRpYyBOb2RlKiBt
YWtlUG9zdGZpeE5vZGUoTm9kZSogZXhwciwgT3BlcmF0b3Igb3ApCkBAIC05MTcsMjkgKzkwNiwx
OCBAQCBzdGF0aWMgTm9kZSogbWFrZVBvc3RmaXhOb2RlKE5vZGUqIGV4cHIsCiAgICAgaWYgKCFu
LT5pc0xvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgUG9zdGZpeEVycm9yTm9kZShleHBy
LCBvcCk7CiAgICAgCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNv
bHZlTm9kZSAqcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAg
ICByZXR1cm4gbmV3IFBvc3RmaXhSZXNvbHZlTm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCksIG9w
KTsKLSAgICB9Ci0gICAgaWYgKG4tPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7Ci0gICAgICAg
IEJyYWNrZXRBY2Nlc3Nvck5vZGUgKmJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNz
b3JOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IFBvc3RmaXhCcmFja2V0Tm9kZShicmFj
a2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCk7Ci0gICAgfQotICAgIGFzc2Vy
dChuLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9IHN0
YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICByZXR1cm4gbmV3IFBvc3RmaXhE
b3ROb2RlKGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3ApOworICAgIHJldHVybiBu
ZXcgUG9zdGZpeE5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25Ob2RlKj4obiksIG9wKTsKIH0KIAog
c3RhdGljIE5vZGUgKm1ha2VGdW5jdGlvbkNhbGxOb2RlKE5vZGUgKmZ1bmMsIEFyZ3VtZW50c05v
ZGUgKmFyZ3MpCiB7CiAgICAgTm9kZSAqbiA9IGZ1bmMtPm5vZGVJbnNpZGVBbGxQYXJlbnMoKTsK
LSAgICAKKwogICAgIGlmICghbi0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IEZ1
bmN0aW9uQ2FsbFZhbHVlTm9kZShmdW5jLCBhcmdzKTsKLSAgICBlbHNlIGlmIChuLT5pc1Jlc29s
dmVOb2RlKCkpIHsKLSAgICAgICAgUmVzb2x2ZU5vZGUgKnJlc29sdmUgPSBzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSAqPihuKTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCksIGFyZ3MpOwotICAgIH0gZWxzZSBpZiAobi0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKKyAgICBlbHNlIGlmIChuLT5pc1ZhckFjY2Vzc05vZGUo
KSkKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlKHN0YXRpY19j
YXN0PFZhckFjY2Vzc05vZGUqPihmdW5jKSwgYXJncyk7CisgICAgZWxzZSBpZiAobi0+aXNCcmFj
a2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAqYnJhY2tl
dCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7CiAgICAgICAgIGlmIChu
ICE9IGZ1bmMpCiAgICAgICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbFBhcmVuQnJhY2tl
dE5vZGUoYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncyk7CkBAIC05
NTksMTAgKzkzNywxMyBAQCBzdGF0aWMgTm9kZSAqbWFrZVR5cGVPZk5vZGUoTm9kZSAqZXhwcikK
IHsKICAgICBOb2RlICpuID0gZXhwci0+bm9kZUluc2lkZUFsbFBhcmVucygpOwogCi0gICAgaWYg
KG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVzb2x2ZSA9IHN0
YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IFR5cGVPZlJl
c29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgfSBlbHNlCisgICAgLy8gV2Ug
b25seSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCBwYXRoIGZvciB2YXJpYWJsZSByZWZlcmVuY2Vz
LAorICAgIC8vIHNpbmNlIHRoZXkgbWF5IHRocm93IGEgUmVzb2x2ZUVycm9yIG9uIGV2YWx1YXRl
IHdoZXJlIHdlIGRvbid0CisgICAgLy8gd2FudCB0aGF0LgorCisgICAgaWYgKG4tPmlzVmFyQWNj
ZXNzTm9kZSgpKQorICAgICAgICByZXR1cm4gbmV3IFR5cGVPZlJlZmVyZW5jZU5vZGUoc3RhdGlj
X2Nhc3Q8TG9jYXRpb25Ob2RlKj4obikpOworICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG5ldyBU
eXBlT2ZWYWx1ZU5vZGUoZXhwcik7CiB9CiAKQEAgLTk3MiwxNyArOTUzLDggQEAgc3RhdGljIE5v
ZGUgKm1ha2VEZWxldGVOb2RlKE5vZGUgKmV4cHIpCiAgICAgCiAgICAgaWYgKCFuLT5pc0xvY2F0
aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgRGVsZXRlVmFsdWVOb2RlKGV4cHIpOwotICAgIGVs
c2UgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVzb2x2
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IERl
bGV0ZVJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgfSBlbHNlIGlmIChu
LT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewotICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
ICpicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyBEZWxldGVCcmFja2V0Tm9kZShicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQobi0+aXNEb3RBY2Nl
c3Nvck5vZGUoKSk7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nhc3Q8
RG90QWNjZXNzb3JOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IERlbGV0ZURvdE5vZGUo
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgZWxzZQorICAgICAg
ICByZXR1cm4gbmV3IERlbGV0ZVJlZmVyZW5jZU5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25Ob2Rl
Kj4obikpOyAvLyAjIyMgbm90IDEwMCUgZmFpdGhmdWwgbGlzdGluZz8KIH0KIAogc3RhdGljIGJv
b2wgbWFrZUdldHRlck9yU2V0dGVyUHJvcGVydHlOb2RlKFByb3BlcnR5Tm9kZSomIHJlc3VsdCwg
SWRlbnRpZmllciYgZ2V0T3JTZXQsIElkZW50aWZpZXImIG5hbWUsIFBhcmFtZXRlck5vZGUgKnBh
cmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSAqYm9keSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9p
bnRlcm5hbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmNw
cAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjUsMzIgKzE2NSw2IEBAIEpTT2JqZWN0ICpHZXR0ZXJTZXR0ZXJJ
bXA6OnRvT2JqZWN0KEV4ZWMKICAgICByZXR1cm4ganNOdWxsKCktPnRvT2JqZWN0KGV4ZWMpOwog
fQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTGFiZWxTdGFjayAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1ib29sIExhYmVsU3RhY2s6OnB1c2goY29u
c3QgSWRlbnRpZmllciAmaWQpCi17Ci0gIGlmIChjb250YWlucyhpZCkpCi0gICAgcmV0dXJuIGZh
bHNlOwotCi0gIFN0YWNrRWxlbSAqbmV3dG9zID0gbmV3IFN0YWNrRWxlbTsKLSAgbmV3dG9zLT5p
ZCA9IGlkOwotICBuZXd0b3MtPnByZXYgPSB0b3M7Ci0gIHRvcyA9IG5ld3RvczsKLSAgcmV0dXJu
IHRydWU7Ci19Ci0KLWJvb2wgTGFiZWxTdGFjazo6Y29udGFpbnMoY29uc3QgSWRlbnRpZmllciAm
aWQpIGNvbnN0Ci17Ci0gIGlmIChpZC5pc0VtcHR5KCkpCi0gICAgcmV0dXJuIHRydWU7Ci0KLSAg
Zm9yIChTdGFja0VsZW0gKmN1cnIgPSB0b3M7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2KQotICAg
IGlmIChjdXJyLT5pZCA9PSBpZCkKLSAgICAgIHJldHVybiB0cnVlOwotCi0gIHJldHVybiBmYWxz
ZTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEludGVybmFsRnVuY3Rp
b25JbXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIEludGVy
bmFsRnVuY3Rpb25JbXA6OmluZm8gPSB7IkZ1bmN0aW9uIiwgMCwgMCwgMH07CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvaW50ZXJuYWwuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50
ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNDIgKzg0LDYgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgZG91YmxlIHZhbDsKICAgfTsKIAotCi0gIC8qKgotICAgKiBAc2hvcnQgVGhlICJsYWJl
bCBzZXQiIGluIEVjbWEtMjYyIHNwZWMKLSAgICovCi0gIGNsYXNzIExhYmVsU3RhY2sgOiBOb25j
b3B5YWJsZSB7Ci0gIHB1YmxpYzoKLSAgICBMYWJlbFN0YWNrKCkKLSAgICAgIDogdG9zKDApCi0g
ICAgewotICAgIH0KLSAgICB+TGFiZWxTdGFjaygpOwotCi0gICAgLyoqCi0gICAgICogSWYgaWQg
aXMgbm90IGVtcHR5IGFuZCBpcyBub3QgaW4gdGhlIHN0YWNrIGFscmVhZHksIHB1dHMgaXQgb24g
dG9wIG9mCi0gICAgICogdGhlIHN0YWNrIGFuZCByZXR1cm5zIHRydWUsIG90aGVyd2lzZSByZXR1
cm5zIGZhbHNlCi0gICAgICovCi0gICAgYm9vbCBwdXNoKGNvbnN0IElkZW50aWZpZXIgJmlkKTsK
LSAgICAvKioKLSAgICAgKiBJcyB0aGUgaWQgaW4gdGhlIHN0YWNrPwotICAgICAqLwotICAgIGJv
b2wgY29udGFpbnMoY29uc3QgSWRlbnRpZmllciAmaWQpIGNvbnN0OwotICAgIC8qKgotICAgICAq
IFJlbW92ZXMgZnJvbSB0aGUgc3RhY2sgdGhlIGxhc3QgcHVzaGVkIGlkICh3aGF0IGVsc2U/KQot
ICAgICAqLwotICAgIHZvaWQgcG9wKCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdHJ1Y3QgU3RhY2tF
bGVtIHsKLSAgICAgIElkZW50aWZpZXIgaWQ7Ci0gICAgICBTdGFja0VsZW0gKnByZXY7Ci0gICAg
fTsKLQotICAgIFN0YWNrRWxlbSAqdG9zOwotICB9OwotCi0KICAgLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2YWx1YXRpb24KICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkBAIC0xNDcsMjMgKzExMSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICB2
b2lkIHByaW50SW5mbyhFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IGNoYXIgKnMsIEpTVmFsdWUgKiwg
aW50IGxpbmVubyA9IC0xKTsKICNlbmRpZgogCi1pbmxpbmUgTGFiZWxTdGFjazo6fkxhYmVsU3Rh
Y2soKQotewotICAgIFN0YWNrRWxlbSAqcHJldjsKLSAgICBmb3IgKFN0YWNrRWxlbSAqZSA9IHRv
czsgZTsgZSA9IHByZXYpIHsKLSAgICAgICAgcHJldiA9IGUtPnByZXY7Ci0gICAgICAgIGRlbGV0
ZSBlOwotICAgIH0KLX0KLQotaW5saW5lIHZvaWQgTGFiZWxTdGFjazo6cG9wKCkKLXsKLSAgICBp
ZiAoU3RhY2tFbGVtICplID0gdG9zKSB7Ci0gICAgICAgIHRvcyA9IGUtPnByZXY7Ci0gICAgICAg
IGRlbGV0ZSBlOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vICBJTlRF
Uk5BTF9ICkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI0NTU4
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRHbG9iYWxPYmplY3QoKQog
ICAgIG1fRnVuY3Rpb25Qcm90b3R5cGUgPSBuZXcgRnVuY3Rpb25Qcm90b3R5cGUoJm1fZ2xvYmFs
RXhlYyk7CiAgICAgbV9PYmplY3RQcm90b3R5cGUgPSBuZXcgT2JqZWN0UHJvdG90eXBlKCZtX2ds
b2JhbEV4ZWMsIG1fRnVuY3Rpb25Qcm90b3R5cGUpOwogICAgIG1fRnVuY3Rpb25Qcm90b3R5cGUt
PnNldFByb3RvdHlwZShtX09iamVjdFByb3RvdHlwZSk7Ci0gICAgCisKICAgICBtX0FycmF5UHJv
dG90eXBlID0gbmV3IEFycmF5UHJvdG90eXBlKCZtX2dsb2JhbEV4ZWMsIG1fT2JqZWN0UHJvdG90
eXBlKTsKICAgICBtX1N0cmluZ1Byb3RvdHlwZSA9IG5ldyBTdHJpbmdQcm90b3R5cGUoJm1fZ2xv
YmFsRXhlYywgbV9PYmplY3RQcm90b3R5cGUpOwogICAgIG1fQm9vbGVhblByb3RvdHlwZSA9IG5l
dyBCb29sZWFuUHJvdG90eXBlKCZtX2dsb2JhbEV4ZWMsIG1fT2JqZWN0UHJvdG90eXBlLCBtX0Z1
bmN0aW9uUHJvdG90eXBlKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBDb21wbGV0aW9uIEludGVycHJl
dGVyOjpldmFsdWF0ZShjb25zdCBVCiAgICAgICAgIENvbnRleHQgY3R4KGdsb2JhbE9iaiwgdGhp
cywgdGhpc09iaiwgcHJvZ05vZGUuZ2V0KCkpOwogICAgICAgICBFeGVjU3RhdGUgbmV3RXhlYyh0
aGlzLCAmY3R4KTsKICAgICAgICAgY3R4LnNldEV4ZWNTdGF0ZSgmbmV3RXhlYyk7Ci0gICAgICAg
IHByb2dOb2RlLT5wcm9jZXNzVmFyRGVjbHMoJm5ld0V4ZWMpOworICAgICAgICBwcm9nTm9kZS0+
cHJvY2Vzc0RlY2xzKCZuZXdFeGVjKTsKICAgICAgICAgcmVzID0gcHJvZ05vZGUtPmV4ZWN1dGUo
Jm5ld0V4ZWMpOwogICAgIH0KICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9saXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbGlzdC5jcHAJKHJldmlzaW9uIDI0
NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODAsNiArMTgwLDIyIEBAIExpc3Q6Okxpc3QoKSA6IF9pbXBCYXNlKGFsbG9jYXRlTGlzdEltcCgK
ICNlbmRpZgogfQogCitMaXN0OjpMaXN0KGJvb2wgbmVlZHNNYXJraW5nKSA6IF9pbXBCYXNlKGFs
bG9jYXRlTGlzdEltcCgpKQoreworICAgIExpc3RJbXAgKmltcCA9IHN0YXRpY19jYXN0PExpc3RJ
bXAgKj4oX2ltcEJhc2UpOworICAgIGltcC0+c2l6ZSA9IDA7CisgICAgaW1wLT5yZWZDb3VudCA9
IDE7CisgICAgaW1wLT52YWx1ZVJlZkNvdW50ID0gIW5lZWRzTWFya2luZzsKKyAgICBpbXAtPmNh
cGFjaXR5ID0gMDsKKyAgICBpbXAtPm92ZXJmbG93ID0gMDsKKworI2lmIERVTVBfU1RBVElTVElD
UworICAgIGlmICgrK251bUxpc3RzID4gbnVtTGlzdHNIaWdoV2F0ZXJNYXJrKQorICAgICAgICBu
dW1MaXN0c0hpZ2hXYXRlck1hcmsgPSBudW1MaXN0czsKKyAgICBpbXAtPnNpemVIaWdoV2F0ZXJN
YXJrID0gMDsKKyNlbmRpZgorfQorCiB2b2lkIExpc3Q6Om1hcmtWYWx1ZXMoKQogewogICAgIHN0
YXRpY19jYXN0PExpc3RJbXAgKj4oX2ltcEJhc2UpLT5tYXJrVmFsdWVzKCk7CkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvbGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9s
aXN0LmgJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBjbGFzcyBM
aXN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIExpc3QoKTsKKyAgICAgICAgZXhwbGljaXQgTGlz
dChib29sIG5lZWRzTWFya2luZyk7CiAgICAgICAgIH5MaXN0KCkgeyBkZXJlZigpOyB9CiAKICAg
ICAgICAgTGlzdChjb25zdCBMaXN0ICZiKSA6IF9pbXBCYXNlKGIuX2ltcEJhc2UpIHsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9ub2RlczJzdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChjaGFy
KTsKICAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoRm9ybWF0IGYpOwogICAgIFNvdXJjZVN0
cmVhbSYgb3BlcmF0b3I8PChjb25zdCBOb2RlICopOworICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0
b3I8PChPcGVyYXRvciBvcCk7IC8vIEZJWE1FOiBhZGQgS0pTX05PX0lOTElORQogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoUmVmUHRyPFQ+IG4pIHsg
cmV0dXJuIHRoaXMtPm9wZXJhdG9yPDwobi5nZXQoKSk7IH0KIAogICBwcml2YXRlOgpAQCAtMTI1
LDYgKzEyNiwxMiBAQCBTb3VyY2VTdHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PChGCiAg
IHJldHVybiAqdGhpczsKIH0KIAorU291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9y
PDwoT3BlcmF0b3Igb3ApCit7CisgIEFTU0VSVChvcCA9PSBPcFBsdXNQbHVzIHx8IG9wID09IE9w
TWludXNNaW51cyk7CisgIHJldHVybiAqdGhpcyA8PCAoKG9wID09IE9wUGx1c1BsdXMpID8gIisr
IiA6ICItLSIpOworfQorCiBVU3RyaW5nIE5vZGU6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgU291
cmNlU3RyZWFtIHN0cjsKQEAgLTE1NCw3ICsxNjEsNyBAQCB2b2lkIFJlZ0V4cE5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmCiAKIHZvaWQgVGhpc05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSAmcykgY29uc3QgeyBzIDw8ICJ0aGlzIjsgfQogCi12b2lkIFJlc29sdmVOb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0IHsgcyA8PCBpZGVudDsgfQordm9pZCBWYXJBY2Nlc3NO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0IHsgcyA8PCBpZGVudDsgfQogCiB2
b2lkIEdyb3VwTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewpAQCAtMjYw
LDkgKzI2Nyw5IEBAIHZvaWQgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpzdHJlYW1UbyhTb3UKICAg
cyA8PCBleHByIDw8IGFyZ3M7CiB9CiAKLXZvaWQgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OnN0
cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgRnVuY3Rpb25DYWxsUmVmZXJlbmNl
Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewotICBzIDw8IGlkZW50IDw8
IGFyZ3M7CisgIHMgPDwgZXhwciA8PCBhcmdzOwogfQogCiB2b2lkIEZ1bmN0aW9uQ2FsbEJyYWNr
ZXROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CkBAIC0yODIsMzQgKzI4OSwx
MiBAQCB2b2lkIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OnN0cmVhbVRvKFNvdXJjCiAKIHZvaWQgRnVu
Y3Rpb25DYWxsUGFyZW5Eb3ROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7
Ci0gIHMgPDwgIigiIDw8IFNvdXJjZVN0cmVhbTo6RG90RXhwciA8PCBiYXNlIDw8ICIuIiA8PCBp
ZGVudCA8PCAiKSIgPDwgYXJnczsKLX0KLQotdm9pZCBQb3N0Zml4UmVzb2x2ZU5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKLXsKLSAgcyA8PCBtX2lkZW50OwotICBpZiAobV9v
cGVyID09IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0i
OwotfQotCi12b2lkIFBvc3RmaXhCcmFja2V0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZz
KSBjb25zdAotewotICBzIDw8IG1fYmFzZSA8PCAiWyIgPDwgbV9zdWJzY3JpcHQgPDwgIl0iOwot
ICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAg
cyA8PCAiLS0iOworICBzIDw8ICIoIiA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgYmFzZSA8
PCAnLicgPDwgaWRlbnQgPDwgIikiIDw8IGFyZ3M7CiB9CiAKLXZvaWQgUG9zdGZpeERvdE5vZGU6
OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgUG9zdGZpeE5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkRvdEV4
cHIgPDwgbV9iYXNlIDw8ICIuIiA8PCBtX2lkZW50OwotICBpZiAobV9vcGVyID09IE9wUGx1c1Bs
dXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOworICBzIDw8IG1fbG9j
IDw8IG1fb3BlcjsKIH0KIAogdm9pZCBQb3N0Zml4RXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mIHMpIGNvbnN0CkBAIC0zMjEsMTkgKzMwNiw5IEBAIHZvaWQgUG9zdGZpeEVycm9yTm9k
ZTo6c3RyZWFtVG8oU291cmNlU3QKICAgICBzIDw8ICItLSI7CiB9CiAKLXZvaWQgRGVsZXRlUmVz
b2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKLXsKLSAgcyA8PCAiZGVs
ZXRlICIgPDwgbV9pZGVudDsKLX0KLQotdm9pZCBEZWxldGVCcmFja2V0Tm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtICZzKSBjb25zdAotewotICBzIDw8ICJkZWxldGUgIiA8PCBtX2Jhc2UgPDwg
IlsiIDw8IG1fc3Vic2NyaXB0IDw8ICJdIjsKLX0KLQotdm9pZCBEZWxldGVEb3ROb2RlOjpzdHJl
YW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIERlbGV0ZVJlZmVyZW5jZU5vZGU6OnN0
cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKIHsKLSAgcyA8PCAiZGVsZXRlICIgPDwgU291
cmNlU3RyZWFtOjpEb3RFeHByIDw8IG1fYmFzZSA8PCAiLiIgPDwgbV9pZGVudDsKKyAgcyA8PCAi
ZGVsZXRlICIgPDwgbG9jOwogfQogCiB2b2lkIERlbGV0ZVZhbHVlTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtICZzKSBjb25zdApAQCAtMzUxLDM2ICszMjYsMTQgQEAgdm9pZCBUeXBlT2ZWYWx1
ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cgogICBzIDw8ICJ0eXBlb2YgIiA8PCBtX2V4cHI7CiB9
CiAKLXZvaWQgVHlwZU9mUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29u
c3QKLXsKLSAgcyA8PCAidHlwZW9mICIgPDwgbV9pZGVudDsKLX0KLQotdm9pZCBQcmVmaXhSZXNv
bHZlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAotewotICBpZiAobV9vcGVy
ID09IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOwot
ICBzIDw8IG1faWRlbnQ7Ci19Ci0KLXZvaWQgUHJlZml4QnJhY2tldE5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgVHlwZU9mUmVmZXJlbmNlTm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtICZzKSBjb25zdAogewotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0g
ICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOwotICBzIDw8IG1fYmFzZSA8PCAi
WyIgPDwgbV9zdWJzY3JpcHQgPDwgIl0iOworICBzIDw8ICJ0eXBlb2YgIiA8PCBsb2M7CiB9CiAK
LXZvaWQgUHJlZml4RG90Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9p
ZCBQcmVmaXhOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7Ci0gIGlmICht
X29wZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8ICIrKyI7Ci0gIGVsc2UKLSAgICBzIDw8ICIt
LSI7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpEb3RFeHByIDw8IG1fYmFzZSA8PCAiLiIgPDwgbV9p
ZGVudDsKKyAgcyA8PCBtX29wZXIgPDwgbV9sb2M7CiB9CiAKIHZvaWQgUHJlZml4RXJyb3JOb2Rl
OjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CkBAIC01NTIsOSArNTA1LDkgQEAgc3Rh
dGljIHZvaWQgc3RyZWFtQXNzaWdubWVudE9wZXJhdG9yVG8oUwogICBzIDw8IG9wU3RyOwogfQog
Ci12b2lkIEFzc2lnblJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0
Cit2b2lkIEFzc2lnbk5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKIHsKLSAg
cyA8PCBtX2lkZW50OworICBzIDw8IG1fbG9jOwogICBzdHJlYW1Bc3NpZ25tZW50T3BlcmF0b3JU
byhzLCBtX29wZXIpOwogICBzIDw8IG1fcmlnaHQ7CiB9CkBAIC02MDcsNiArNTYwLDExIEBAIHZv
aWQgVmFyU3RhdGVtZW50Tm9kZTo6c3RyZWFtVG8oU291cmNlU3QKICAgcyA8PCBTb3VyY2VTdHJl
YW06OkVuZGwgPDwgbmV4dCA8PCAiOyI7CiB9CiAKK3ZvaWQgU3RhdGljVmFyU3RhdGVtZW50Tm9k
ZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAoreworICBzIDw8IG9yaWdpbmFsU3Rh
dGVtZW50OworfQorCiB2b2lkIEJsb2NrTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBj
b25zdAogewogICBzIDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCAieyIgPDwgU291cmNlU3RyZWFt
OjpJbmRlbnQKQEAgLTc3NCwzICs3MzIsOCBAQCB2b2lkIFNvdXJjZUVsZW1lbnRzTm9kZTo6c3Ry
ZWFtVG8oU291cmNlCiAgIGZvciAoY29uc3QgU291cmNlRWxlbWVudHNOb2RlICpuID0gdGhpczsg
bjsgbiA9IG4tPm5leHQuZ2V0KCkpCiAgICAgcyA8PCBuLT5ub2RlOwogfQorCit2b2lkIEVycm9y
Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAoreworICBzIDw8IGtpZDsKK30K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL25vZGVzLmNwcAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvbm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHly
aWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAo
QykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNo
QHV3YXRlcmxvby5jYSkKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrc2ltIE9ybG92aWNoICht
YWtzaW1Aa2RlLm9yZykKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNywxMSArMzgsMTIgQEAK
ICNpbmNsdWRlICJsZXhlci5oIgogI2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQ
cm9wZXJ0eU5hbWVBcnJheS5oIgorI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7CituYW1lc3Bh
Y2UgS0pTIHsKIAogI2RlZmluZSBLSlNfQlJFQUtQT0lOVCBcCiAgIGlmIChEZWJ1Z2dlcjo6ZGVi
dWdnZXJzUHJlc2VudCA+IDAgJiYgIWhpdFN0YXRlbWVudChleGVjKSkgXApAQCAtNzEsNiArNzMs
MTcgQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKICAgaWYgKENvbGxlY3Rvcjo6aXNPdXRPZk1lbW9y
eSgpKSBcCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IC8vIHdpbGwgYmUgcGlja2VkIHVwIGJ5
IEtKU19DSEVDS0VYQ0VQVElPTgogCisjZGVmaW5lIEtKU19DSEVDS0VYQ0VQVElPTlJFRkVSRU5D
RSBcCisgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeyBcCisgICAgaGFuZGxlRXhjZXB0aW9u
KGV4ZWMpOyBcCisgICAgcmVmLmZvdW5kID0gdHJ1ZTsgXAorICAgIHJldHVybiByZWY7IFwKKyAg
fSBcCisgIGlmIChDb2xsZWN0b3I6OmlzT3V0T2ZNZW1vcnkoKSkgeyBcCisgICAgcmVmLmZvdW5k
ID0gdHJ1ZTsgXAorICAgIHJldHVybiByZWY7IFwKKyAgfQorCiAjZGVmaW5lIEtKU19DSEVDS0VY
Q0VQVElPTkxJU1QgXAogICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsgXAogICAgIGhhbmRs
ZUV4Y2VwdGlvbihleGVjKTsgXApAQCAtMjE3LDYgKzIzMCwxOCBAQCBDb21wbGV0aW9uIE5vZGU6
OmNyZWF0ZUVycm9yQ29tcGxldGlvbihFCiAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3csIEVy
cm9yOjpjcmVhdGUoZXhlYywgZSwgbWVzc2FnZSwgbGluZU5vKCksIGN1cnJlbnRTb3VyY2VJZChl
eGVjKSwgY3VycmVudFNvdXJjZVVSTChleGVjKSkpOwogfQogCitOb2RlKiBOb2RlOjpjcmVhdGVF
cnJvck5vZGUoRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgICByZXR1cm4gbmV3
IEVycm9yTm9kZSh0aGlzLCBlLCBtc2cpOworfQorCitOb2RlKiBOb2RlOjpjcmVhdGVFcnJvck5v
ZGUoRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIgKm1zZywgY29uc3QgSWRlbnRpZmllciAmaWRlbnQp
Cit7CisgICAgVVN0cmluZyBtZXNzYWdlID0gbXNnOworICAgIHN1YnN0aXR1dGUobWVzc2FnZSwg
aWRlbnQudXN0cmluZygpKTsKKyAgICByZXR1cm4gbmV3IEVycm9yTm9kZSh0aGlzLCBlLCBtZXNz
YWdlKTsKK30KKwogSlNWYWx1ZSAqTm9kZTo6dGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVy
cm9yVHlwZSBlLCBjb25zdCBjaGFyICptc2cpCiB7CiAgICAgcmV0dXJuIEtKUzo6dGhyb3dFcnJv
cihleGVjLCBlLCBtc2csIGxpbmVObygpLCBjdXJyZW50U291cmNlSWQoZXhlYyksIGN1cnJlbnRT
b3VyY2VVUkwoZXhlYykpOwpAQCAtMzAzLDYgKzMyOCw3MCBAQCBOb2RlICpOb2RlOjpub2RlSW5z
aWRlQWxsUGFyZW5zKCkKICAgICByZXR1cm4gdGhpczsKIH0KIAorTm9kZVZpc2l0b3I6On5Ob2Rl
VmlzaXRvcigpCit7Cit9CisKK2NsYXNzIFZhckRlY2xWaXNpdG9yOiBwdWJsaWMgTm9kZVZpc2l0
b3IgeworICBwcml2YXRlOgorICAgIEV4ZWNTdGF0ZSogbV9leGVjOworICBwdWJsaWM6CisgICAg
VmFyRGVjbFZpc2l0b3IoRXhlY1N0YXRlKiBleGVjKSA6IG1fZXhlYyhleGVjKQorICAgIHt9CisK
KyAgICB2aXJ0dWFsIE5vZGUqIHZpc2l0KE5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEwgeworICAg
ICAgbm9kZS0+cHJvY2Vzc1ZhckRlY2wobV9leGVjKTsKKworICAgICAgLy9EbyBub3QgcmVjdXJz
ZSBpbnNpZGUgZnVuY3Rpb24gYm9kaWVzLi4uCisgICAgICBpZiAobm9kZS0+aW50cm9kdWNlc05l
d1N0YXRpY1Njb3BlKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgICByZXR1cm4gTm9kZVZp
c2l0b3I6OnZpc2l0KG5vZGUpOworICAgIH0KK307CisKK2NsYXNzIEZ1bmNEZWNsVmlzaXRvciA6
IHB1YmxpYyBOb2RlVmlzaXRvciB7CisgIHByaXZhdGU6CisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7
CisgIHB1YmxpYzoKKyAgICBGdW5jRGVjbFZpc2l0b3IoRXhlY1N0YXRlKiBleGVjKSA6IG1fZXhl
YyhleGVjKQorICAgIHt9CisKKyAgICB2aXJ0dWFsIE5vZGUqIHZpc2l0KE5vZGUqIG5vZGUpIEtK
U19GQVNUX0NBTEwgeworICAgICAgbm9kZS0+cHJvY2Vzc0Z1bmNEZWNsKG1fZXhlYyk7CisKKyAg
ICAgIGlmIChub2RlLT5pbnRyb2R1Y2VzTmV3U3RhdGljU2NvcGUoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICAgIHJldHVybiBOb2RlVmlzaXRvcjo6dmlzaXQobm9kZSk7CisgICAgfQorfTsK
Kwordm9pZCBOb2RlOjpwcm9jZXNzRGVjbHMoRXhlY1N0YXRlICpleGVjKSB7CisgIFZhckRlY2xW
aXNpdG9yIHZWaXNpdChleGVjKTsKKyAgdlZpc2l0LnZpc2l0KHRoaXMpOworCisgIEZ1bmNEZWNs
VmlzaXRvciBmVmlzaXQoZXhlYyk7CisgIGZWaXNpdC52aXNpdCh0aGlzKTsKK30KKwordm9pZCBO
b2RlOjpwcm9jZXNzVmFyRGVjbChFeGVjU3RhdGUqKQore30KKwordm9pZCBOb2RlOjpwcm9jZXNz
RnVuY0RlY2woRXhlY1N0YXRlKikKK3t9CisKK05vZGUqIE5vZGU6Om9wdGltaXplTG9jYWxBY2Nl
c3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKQoreworICAgIHJldHVy
biAwOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVZpc2l0b3Ig
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9kZSogTm9kZVZpc2l0b3I6OnZp
c2l0KE5vZGUgKm5vZGUpIHsKKyAgbm9kZS0+cmVjdXJzZVZpc2l0KHRoaXMpOworICByZXR1cm4g
MDsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRlbWVudE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU3RhdGVtZW50Tm9kZTo6U3RhdGVt
ZW50Tm9kZSgpIApAQCAtMzI3LDEwICs0MTYsNiBAQCBib29sIFN0YXRlbWVudE5vZGU6OmhpdFN0
YXRlbWVudChFeGVjU3RhCiAgICAgcmV0dXJuIHRydWU7IC8vIGNvbnRpbnVlCiB9CiAKLXZvaWQg
U3RhdGVtZW50Tm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopCi17Ci19Ci0KIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOdWxsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIEpTVmFsdWUgKk51bGxOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUgKikKQEAgLTM3OSwzMSArNDY0LDE2NiBAQCBKU1ZhbHVlICpUaGlzTm9kZTo6ZXZhbHVhdGUo
RXhlY1N0YXRlICplCiAgIHJldHVybiBleGVjLT5jb250ZXh0KCktPnRoaXNWYWx1ZSgpOwogfQog
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVzb2x2ZU5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFZhckFjY2Vzc05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8g
RUNNQSAxMS4xLjIgJiAxMC4xLjQKLUpTVmFsdWUgKlJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVj
U3RhdGUgKmV4ZWMpCi17CitKU1ZhbHVlKiBWYXJBY2Nlc3NOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUqIGV4ZWMpIHsKICAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCkt
PnNjb3BlQ2hhaW4oKTsKICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigp
OwogICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4uZW5kKCk7Ci0gIAorCiAgIC8vIHdl
IG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgogICBhc3NlcnQo
aXRlciAhPSBlbmQpOwogCiAgIFByb3BlcnR5U2xvdCBzbG90OwotICBkbyB7IAotICAgIEpTT2Jq
ZWN0ICpvID0gKml0ZXI7CisgIEpTT2JqZWN0ICpzY29wZU9iajsKKyAgZG8geworICAgIHNjb3Bl
T2JqID0gKml0ZXI7CisKKyAgICBpZiAoc2NvcGVPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpCisgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBzY29wZU9iaiwg
aWRlbnQpOwogCi0gICAgaWYgKG8tPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkp
Ci0gICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBvLCBpZGVudCk7Ci0gICAgCiAgICAg
KytpdGVyOwogICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CiAKICAgcmV0dXJuIHRocm93VW5kZWZp
bmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CiB9CiAKK1JlZmVyZW5jZSBWYXJBY2Nlc3NO
b2RlOjpldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgUmVmZXJlbmNlIHJl
ZihpZGVudCk7CisgIHJlZi5mb3VuZCA9IHRydWU7CisgIGludCBsZW5ndGggPSAwOworCisgIGNv
bnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Cisg
IFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVnaW4oKTsKKyAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOworCisgIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29t
ZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgorICBBU1NFUlQoaXRlciAhPSBlbmQpOworCisgIEpT
T2JqZWN0ICpzY29wZU9iajsKKyAgZG8geworICAgIHNjb3BlT2JqID0gKml0ZXI7CisgICAgcmVm
LmJhc2UgPSBzY29wZU9iajsKKworICAgIGlmIChzY29wZU9iai0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCByZWYucHJvcGVydHlTbG90KSkKKyAgICAgIHJldHVybiByZWY7CisKKyAgICAr
K2l0ZXI7CisgICAgKytsZW5ndGg7CisgIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKKworICByZWYu
Zm91bmQgPSBmYWxzZTsKKyAgcmVmLnByb3BlcnR5U2xvdC5zZXRVbmRlZmluZWQoc2NvcGVPYmop
OyAvL291dGVybW9zdCBzY29wZS4KKyAgcmV0dXJuIHJlZjsKK30KKworTm9kZSogVmFyQWNjZXNz
Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5v
ZGUqIG5vZGUpCit7CisgIGludCBpbmRleCA9IG5vZGUtPmxvb2t1cFN5bWJvbElEKGlkZW50KTsK
KworICAvLyBJZiB0aGUgc3ltYm9sIGlzbid0IGxvY2FsLCB3ZSBjYW4gc3RpbGwgb3B0aW1pemUg
CisgIC8vIGEgYml0LCBhbmQgc2tpcCB0aGUgbG9jYWwgc2NvcGUgZm9yIGxvb2t1cC4KKyAgLy8g
KHVubGVzcyAnZXZhbCcgaW5qZWN0cyBhIG5ldyBsb2NhbCwgYnV0IE5vbkxvY2FsUmVzb2x2ZXIK
KyAgLy8gaXMgY2FyZWZ1bCBhYm91dCB0aGF0KQorICBpZiAoaW5kZXggPT0gLTEpIHsKKyAgICBp
ZiAoaWRlbnQgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKKyAgICAgIHJldHVy
biAwOyAvL0R5bmFtaWMgcHJvcGVydHkuLgorCisgICAgcmV0dXJuIG5ldyBOb25Mb2NhbFZhckFj
Y2Vzc05vZGUoaWRlbnQpOworICB9CisKKyAgcmV0dXJuIG5ldyBMb2NhbFZhckFjY2Vzc05vZGUo
aWRlbnQsIGluZGV4KTsKK30KKworaW50IFZhckFjY2Vzc05vZGU6OmxvY2FsSUQoRnVuY3Rpb25C
b2R5Tm9kZSogbm9kZSkKK3sKKyAgcmV0dXJuIG5vZGUtPmxvb2t1cFN5bWJvbElEKGlkZW50KTsK
K30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvY2FsVmFyQWNjZXNzTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKU1ZhbHVlKiBMb2NhbFZhckFj
Y2Vzc05vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3sKKyAgQWN0aXZhdGlvbkltcCog
c2NvcGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3Rp
dmF0aW9uT2JqZWN0KCkpOworICByZXR1cm4gKnNjb3BlLT5nZXRMb2NhbERpcmVjdChpbmRleCk7
Cit9CisKK1JlZmVyZW5jZSBMb2NhbFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKEV4
ZWNTdGF0ZSAqZXhlYykKK3sKKyAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxB
Y3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworICBS
ZWZlcmVuY2UgcmVmKGlkZW50KTsgLy8jIyMgRklYTUU6IHRoZSBpZGVudCBpcyBmb3IgZGVsZXRl
LCBidXQgaXQgbWFrZXMgaXQgdGFrZSB0aGUgc3VwZXItc2xvdyBwYXRoLi4KKyAgcmVmLmJhc2Ug
ID0gc2NvcGU7CisgIHJlZi5mb3VuZCA9IHRydWU7CisgIHJlZi5wcm9wZXJ0eVNsb3Quc2V0UG90
ZW50aWFsbHlXcml0ZWFibGUoKTsKKyAgcmVmLnByb3BlcnR5U2xvdC5zZXRWYWx1ZVNsb3Qoc2Nv
cGUsIHNjb3BlLT5nZXRMb2NhbERpcmVjdChpbmRleCksIHNjb3BlLT5pc0xvY2FsUmVhZE9ubHko
aW5kZXgpKTsKKyAgcmV0dXJuIHJlZjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIE5vbkxvY2FsVmFyQWNjZXNzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
SlNWYWx1ZSogTm9uTG9jYWxWYXJBY2Nlc3NOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMp
IHsKKyAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3BlQ2hh
aW4oKTsKKyAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOworICBTY29w
ZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4uZW5kKCk7CisKKyAgLy8gd2UgbXVzdCBhbHdheXMg
aGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCisgIEFTU0VSVChpdGVyICE9IGVuZCk7
CisKKyAgUHJvcGVydHlTbG90IHNsb3Q7CisgIEpTT2JqZWN0ICpzY29wZU9iaiA9ICppdGVyOwor
CisgIGlmICghc2NvcGVPYmotPmlzTG9jYWxJbmplY3RlZCgpKSB7CisgICAgLy8gVW5sZXNzIGV2
YWwgaW50cm9kdWNlZCBuZXcgdmFyaWFibGVzIGR5bmFtaWNhbGx5LAorICAgIC8vIHdlIGtub3cg
dGhpcyBpc24ndCBpbiB0aGUgdG9wIHNjb3BlCisgICAgKytpdGVyOworICB9CisKKyAgZG8gewor
ICAgIHNjb3BlT2JqID0gKml0ZXI7CisKKyAgICBpZiAoc2NvcGVPYmotPmdldFByb3BlcnR5U2xv
dChleGVjLCBpZGVudCwgc2xvdCkpCisgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBz
Y29wZU9iaiwgaWRlbnQpOworCisgICAgKytpdGVyOworICB9IHdoaWxlIChpdGVyICE9IGVuZCk7
CisKKyAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7Cit9
CisKK1JlZmVyZW5jZSBOb25Mb2NhbFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKEV4
ZWNTdGF0ZSogZXhlYykgeworICBSZWZlcmVuY2UgcmVmKGlkZW50KTsKKyAgcmVmLmZvdW5kID0g
dHJ1ZTsKKworICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2Nv
cGVDaGFpbigpOworICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7Cisg
IFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKKworICAvLyB3ZSBtdXN0IGFs
d2F5cyBoYXZlIHNvbWV0aGluZyBpbiB0aGUgc2NvcGUgY2hhaW4KKyAgQVNTRVJUKGl0ZXIgIT0g
ZW5kKTsKKworICBKU09iamVjdCAqc2NvcGVPYmogPSAqaXRlcjsKKyAgaWYgKCFzY29wZU9iai0+
aXNMb2NhbEluamVjdGVkKCkpIHsKKyAgIC8vIFVubGVzcyBldmFsIGludHJvZHVjZWQgbmV3IHZh
cmlhYmxlcyBkeW5hbWljYWxseSwKKyAgIC8vIHdlIGtub3cgdGhpcyBpc24ndCBpbiB0aGUgdG9w
IHNjb3BlCisgICArK2l0ZXI7CisgIH0KKworICBkbyB7CisgICAgc2NvcGVPYmogPSAqaXRlcjsK
KyAgICByZWYuYmFzZSA9IHNjb3BlT2JqOworCisgICAgaWYgKHNjb3BlT2JqLT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnQsIHJlZi5wcm9wZXJ0eVNsb3QpKQorICAgICAgcmV0dXJuIHJlZjsK
KworICAgICsraXRlcjsKKyAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOworCisgIHJlZi5iYXNlID0g
c2NvcGVPYmo7CisgIHJlZi5mb3VuZCA9IGZhbHNlOworICByZWYucHJvcGVydHlTbG90LnNldFVu
ZGVmaW5lZChzY29wZU9iaik7IC8vb3V0ZXJtb3N0IHNjb3BlLgorICByZXR1cm4gcmVmOworfQor
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR3JvdXBOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjEuNgpAQCAtNDIxLDYgKzY0
MSwxMSBAQCBOb2RlICpHcm91cE5vZGU6Om5vZGVJbnNpZGVBbGxQYXJlbnMoKQogICAgIHJldHVy
biBuOwogfQogCit2b2lkIEdyb3VwTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZ3JvdXApOworfQorCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRWxlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjEuNApAQCAtNDQyLDYgKzY2NywxMiBA
QCB2b2lkIEVsZW1lbnROb2RlOjpicmVha0N5Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3Zv
aWQgRWxlbWVudE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAg
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworICAgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgbm9kZSk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBB
cnJheU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEg
MTEuMS40CkBAIC00NjYsNiArNjk3LDExIEBAIEpTVmFsdWUgKkFycmF5Tm9kZTo6ZXZhbHVhdGUo
RXhlY1N0YXRlICoKICAgcmV0dXJuIGFycmF5OwogfQogCit2b2lkIEFycmF5Tm9kZTo6cmVjdXJz
ZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlz
aXRvciwgZWxlbWVudCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBP
YmplY3RMaXRlcmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEg
MTEuMS41CkBAIC00NzcsNiArNzEzLDExIEBAIEpTVmFsdWUgKk9iamVjdExpdGVyYWxOb2RlOjpl
dmFsdWF0ZShFeGUKICAgcmV0dXJuIGV4ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGlu
T2JqZWN0KCktPmNvbnN0cnVjdChleGVjLExpc3Q6OmVtcHR5KCkpOwogfQogCit2b2lkIE9iamVj
dExpdGVyYWxOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAg
cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBsaXN0KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFByb3BlcnR5TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLy8gRUNNQSAxMS4xLjUKQEAgLTUxNCw2ICs3NTUsMTIgQEAgdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjpicmVha0N5Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgUHJvcGVy
dHlMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbm9kZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBuZXh0KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3Bl
cnR5Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gRUNNQSAxMS4xLjUKIEpT
VmFsdWUgKlByb3BlcnR5Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKikKQEAgLTUyMiw2ICs3Njks
MTIgQEAgSlNWYWx1ZSAqUHJvcGVydHlOb2RlOjpldmFsdWF0ZShFeGVjU3RhdAogICByZXR1cm4g
anNOdWxsKCk7CiB9CiAKK3ZvaWQgUHJvcGVydHlOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBuYW1lKTsKKyAg
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFzc2lnbik7Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVydHlOYW1lTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMS41CkBAIC01NTQsNiArODA3LDQyIEBAIEpTVmFsdWUg
KkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmV2YWx1YXRlKEUKICAgcmV0dXJuIG8tPmdldChleGVjLCBJ
ZGVudGlmaWVyKHYyLT50b1N0cmluZyhleGVjKSkpOwogfQogCitSZWZlcmVuY2UgQnJhY2tldEFj
Y2Vzc29yTm9kZTo6ZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0YXRlKiBleGVjKQoreworICBSZWZl
cmVuY2UgIHJlZjsKKyAgSlNWYWx1ZSAqdjEgPSBleHByMS0+ZXZhbHVhdGUoZXhlYyk7CisgIEtK
U19DSEVDS0VYQ0VQVElPTlJFRkVSRU5DRQorCisgIEpTVmFsdWUgKnYyID0gZXhwcjItPmV2YWx1
YXRlKGV4ZWMpOworICBLSlNfQ0hFQ0tFWENFUFRJT05SRUZFUkVOQ0UKKworICBKU09iamVjdCAq
byA9IHYxLT50b09iamVjdChleGVjKTsKKyAgcmVmLmJhc2UgID0gbzsKKyAgcmVmLmZvdW5kID0g
dHJ1ZTsgLy9BbHdheXMgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5ncy4uCisgIAorICAvLyBTcGVj
aWFsIGNhc2UgZm9yIGluZGljZXMsIHRvIGF2b2lkIGNvbnZlcnRpbmcgZG91YmxlLT5zdHJpbmcK
KyAgdWludDMyX3QgaTsKKyAgaWYgKHYyLT5nZXRVSW50MzIoaSkpIHsKKyAgICByZWYuaWRlbnQg
PSBJZGVudGlmaWVyOjpmcm9tKGkpOworICAgIGlmICghby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IGksIHJlZi5wcm9wZXJ0eVNsb3QpKQorICAgICAgcmVmLnByb3BlcnR5U2xvdC5zZXRVbmRlZmlu
ZWQobyk7CisgICAgcmV0dXJuIHJlZjsKKyAgfQorCisgIC8vT3RoZXJ3aXNlIGRvIGl0IHN5bWJv
bGljYWxseS4uCisgIElkZW50aWZpZXIgaWRlbnQodjItPnRvU3RyaW5nKGV4ZWMpKTsKKyAgcmVm
LmlkZW50ID0gaWRlbnQ7CisgIGlmICghby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBy
ZWYucHJvcGVydHlTbG90KSkKKyAgICByZWYucHJvcGVydHlTbG90LnNldFVuZGVmaW5lZChvKTsK
KyAgcmV0dXJuIHJlZjsKK30KKwordm9pZCBCcmFja2V0QWNjZXNzb3JOb2RlOjpyZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
ZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERvdEFjY2Vzc29yTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjIuMWIKQEAgLTU2NSw2ICs4NTQsMjkg
QEAgSlNWYWx1ZSAqRG90QWNjZXNzb3JOb2RlOjpldmFsdWF0ZShFeGVjUwogCiB9CiAKK1JlZmVy
ZW5jZSBEb3RBY2Nlc3Nvck5vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgUmVmZXJlbmNlICByZWYoaWRlbnQpOworICBKU1ZhbHVlICp2ID0gZXhwci0+ZXZhbHVh
dGUoZXhlYyk7CisgIEtKU19DSEVDS0VYQ0VQVElPTlJFRkVSRU5DRQorCisgIEpTT2JqZWN0ICpv
ID0gdi0+dG9PYmplY3QoZXhlYyk7CisKKyAgcmVmLmZvdW5kID0gdHJ1ZTsgLy9BbHdheXMgZm9y
IHRoZXNlIHNvcnRzIG9mIHRoaW5ncy4uCisgIHJlZi5iYXNlICA9IG87CisgIGlmICghby0+Z2V0
UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCByZWYucHJvcGVydHlTbG90KSkgeworICAgIC8vQ3Vy
cmVudGx5IHVuZGVmaW5lZCwgbm90ZSB0aGF0LCBidXQgZG9uJ3QgdHJpZ2dlcgorICAgIC8vYSAi
bm90IGZvdW5kIiBlcnJvcgorICAgIHJlZi5wcm9wZXJ0eVNsb3Quc2V0VW5kZWZpbmVkKG8pOwor
ICB9CisgIHJldHVybiByZWY7Cit9CisKK3ZvaWQgRG90QWNjZXNzb3JOb2RlOjpyZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9y
LCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50
TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNWYWx1ZSAqQXJndW1l
bnRMaXN0Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICopCkBAIC01OTIsNiArOTA0LDEyIEBAIHZv
aWQgQXJndW1lbnRMaXN0Tm9kZTo6YnJlYWtDeWNsZSgpIAogICAgIG5leHQgPSAwOwogfQogCit2
b2lkIEFyZ3VtZW50TGlzdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikK
K3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworICAgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBBcmd1bWVudHNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEpT
VmFsdWUgKkFyZ3VtZW50c05vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqKQpAQCAtNjAwLDYgKzkx
OCwxMSBAQCBKU1ZhbHVlICpBcmd1bWVudHNOb2RlOjpldmFsdWF0ZShFeGVjU3RhCiAgIHJldHVy
biAwOyAvLyBkdW1teSwgc2VlIGV2YWx1YXRlTGlzdCgpCiB9CiAKK3ZvaWQgQXJndW1lbnRzTm9k
ZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgbGlzdCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBOZXdFeHByTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8v
IEVDTUEgMTEuMi4yCkBAIC02MjcsNiArOTUwLDIyIEBAIEpTVmFsdWUgKk5ld0V4cHJOb2RlOjpl
dmFsdWF0ZShFeGVjU3RhdGUKICAgcmV0dXJuIGNvbnN0ci0+Y29uc3RydWN0KGV4ZWMsIGFyZ0xp
c3QpOwogfQogCit2b2lkIE5ld0V4cHJOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFyZ3MpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogbm90
QW5PYmplY3RNZXNzYWdlKCkKK3sKKyAgICByZXR1cm4gIlZhbHVlICVzIChyZXN1bHQgb2YgZXhw
cmVzc2lvbiAlcykgaXMgbm90IGFuIG9iamVjdC4iOworfQorCitzdGF0aWMgY29uc3QgY2hhciog
bm90Q2FsbGFibGVNZXNzYWdlKCkKK3sKKyAgICByZXR1cm4gIk9iamVjdCAlcyAocmVzdWx0IG9m
IGV4cHJlc3Npb24gJXMpIGRvZXMgbm90IGFsbG93IGNhbGxzLiI7Cit9CisKIC8vIEVDTUEgMTEu
Mi4zCiBKU1ZhbHVlICpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAq
ZXhlYykKIHsKQEAgLTYzNCw3MCArOTczLDc0IEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZTo6ZXZhbHVhdGUKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAogICBpZiAoIXYtPmlz
T2JqZWN0KCkpIHsKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJWYWx1
ZSAlcyAocmVzdWx0IG9mIGV4cHJlc3Npb24gJXMpIGlzIG5vdCBvYmplY3QuIiwgdiwgZXhwci5n
ZXQoKSk7CisgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCBub3RBbk9iamVj
dE1lc3NhZ2UoKSwgdiwgZXhwci5nZXQoKSk7CiAgIH0KICAgCiAgIEpTT2JqZWN0ICpmdW5jID0g
c3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KTsKIAogICBpZiAoIWZ1bmMtPmltcGxlbWVudHNDYWxs
KCkpIHsKLSAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJPYmplY3QgJXMg
KHJlc3VsdCBvZiBleHByZXNzaW9uICVzKSBkb2VzIG5vdCBhbGxvdyBjYWxscy4iLCB2LCBleHBy
LmdldCgpKTsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsIG5vdENhbGxh
YmxlTWVzc2FnZSgpLCB2LCBleHByLmdldCgpKTsKICAgfQogCiAgIExpc3QgYXJnTGlzdCA9IGFy
Z3MtPmV2YWx1YXRlTGlzdChleGVjKTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAotICBK
U09iamVjdCAqdGhpc09iaiA9ICBleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgIEpTT2JqZWN0ICp0aGlzT2JqID0gZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCkt
Pmdsb2JhbE9iamVjdCgpOwogCiAgIHJldHVybiBmdW5jLT5jYWxsKGV4ZWMsIHRoaXNPYmosIGFy
Z0xpc3QpOwogfQogCi0vLyBFQ01BIDExLjIuMwotSlNWYWx1ZSAqRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgRnVuY3Rpb25DYWxsVmFsdWVO
b2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGNvbnN0IFNjb3Bl
Q2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Ci0gIFNjb3BlQ2hh
aW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVnaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVu
ZCA9IGNoYWluLmVuZCgpOwotICAKLSAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcg
aW4gdGhlIHNjb3BlIGNoYWluCi0gIGFzc2VydChpdGVyICE9IGVuZCk7CisgICAgcmVjdXJzZVZp
c2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFy
Z3MpOworfQogCi0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8g
eyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVj
LCBpZGVudCwgc2xvdCkpIHsKLSAgICAgIEpTVmFsdWUgKnYgPSBzbG90LmdldFZhbHVlKGV4ZWMs
IGJhc2UsIGlkZW50KTsKLSAgICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0gICAgICAgIAot
ICAgICAgaWYgKCF2LT5pc09iamVjdCgpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4
ZWMsIFR5cGVFcnJvciwgIlZhbHVlICVzIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgaXMgbm90
IG9iamVjdC4iLCB2LCBpZGVudCk7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIEpTT2JqZWN0ICpm
dW5jID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KTsKLSAgICAgIAotICAgICAgaWYgKCFmdW5j
LT5pbXBsZW1lbnRzQ2FsbCgpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5
cGVFcnJvciwgIk9iamVjdCAlcyAocmVzdWx0IG9mIGV4cHJlc3Npb24gJXMpIGRvZXMgbm90IGFs
bG93IGNhbGxzLiIsIHYsIGlkZW50KTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgTGlzdCBhcmdM
aXN0ID0gYXJncy0+ZXZhbHVhdGVMaXN0KGV4ZWMpOwotICAgICAgS0pTX0NIRUNLRVhDRVBUSU9O
VkFMVUUKLSAgICAgICAgCi0gICAgICBKU09iamVjdCAqdGhpc09iaiA9IGJhc2U7Ci0gICAgICAv
LyBFQ01BIDExLjIuMyBzYXlzIHRoYXQgaW4gdGhpcyBzaXR1YXRpb24gdGhlIHRoaXMgdmFsdWUg
c2hvdWxkIGJlIG51bGwuCi0gICAgICAvLyBIb3dldmVyLCBzZWN0aW9uIDEwLjIuMyBzYXlzIHRo
YXQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHZhbHVlIHByb3ZpZGVkCi0gICAgICAvLyBieSB0aGUg
Y2FsbGVyIGlzIG51bGwsIHRoZSBnbG9iYWwgb2JqZWN0IHNob3VsZCBiZSB1c2VkLiBJdCBhbHNv
IHNheXMKLSAgICAgIC8vIHRoYXQgdGhlIHNlY3Rpb24gZG9lcyBub3QgYXBwbHkgdG8gaW50ZXJh
bCBmdW5jdGlvbnMsIGJ1dCBmb3Igc2ltcGxpY2l0eQotICAgICAgLy8gb2YgaW1wbGVtZW50YXRp
b24gd2UgdXNlIHRoZSBnbG9iYWwgb2JqZWN0IGFueXdheSBoZXJlLiBUaGlzIGd1YXJhbnRlZXMK
LSAgICAgIC8vIHRoYXQgaW4gaG9zdCBvYmplY3RzIHlvdSBhbHdheXMgZ2V0IGEgdmFsaWQgb2Jq
ZWN0IGZvciB0aGlzLgotICAgICAgaWYgKHRoaXNPYmotPmlzQWN0aXZhdGlvbigpKQotICAgICAg
ICB0aGlzT2JqID0gZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpOwor
SlNWYWx1ZSAqRnVuY3Rpb25DYWxsUmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpl
eGVjKQoreworICAvL0V2YWx1YXRlIHRoZSBsb2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gZXhw
ci0+ZXZhbHVhdGVSZWZlcmVuY2UoZXhlYyk7CiAKLSAgICAgIHJldHVybiBmdW5jLT5jYWxsKGV4
ZWMsIHRoaXNPYmosIGFyZ0xpc3QpOwotICAgIH0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0
ZXIgIT0gZW5kKTsKLSAgCi0gIHJldHVybiB0aHJvd1VuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpOworICAvL2hhbmRsZSBlcnJvci4uCisgIGlmICghcmVmLmZvdW5kKQorICAgIHJl
dHVybiB0aHJvd1VuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgcmVmLmlkZW50KTsKKworICBL
SlNfQ0hFQ0tFWENFUFRJT05WQUxVRQorCisgIEpTVmFsdWUgKnYgPSByZWYucmVhZChleGVjKTsK
KyAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKworICBpZiAoIXYtPmlzT2JqZWN0KCkpIHsKKyAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsIG5vdEFuT2JqZWN0TWVzc2FnZSgp
LCB2LCBleHByLmdldCgpKTsKKyAgfQorCisgIEpTT2JqZWN0ICpmdW5jID0gc3RhdGljX2Nhc3Q8
SlNPYmplY3QqPih2KTsKKworICBpZiAoIWZ1bmMtPmltcGxlbWVudHNDYWxsKCkpIHsKKyAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsIG5vdENhbGxhYmxlTWVzc2FnZSgpLCB2
LCBleHByLmdldCgpKTsKKyAgfQorCisgIExpc3QgYXJnTGlzdCA9IGFyZ3MtPmV2YWx1YXRlTGlz
dChleGVjKTsKKyAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKworICAvLyBFQ01BIDExLjIuMyBz
YXlzIHRoYXQgaW4gdGhpcyBzaXR1YXRpb24gdGhlIHRoaXMgdmFsdWUgc2hvdWxkIGJlIG51bGwu
CisgIC8vIEhvd2V2ZXIsIHNlY3Rpb24gMTAuMi4zIHNheXMgdGhhdCBpbiB0aGUgY2FzZSB3aGVy
ZSB0aGUgdmFsdWUgcHJvdmlkZWQKKyAgLy8gYnkgdGhlIGNhbGxlciBpcyBudWxsLCB0aGUgZ2xv
YmFsIG9iamVjdCBzaG91bGQgYmUgdXNlZC4gSXQgYWxzbyBzYXlzCisgIC8vIHRoYXQgdGhlIHNl
Y3Rpb24gZG9lcyBub3QgYXBwbHkgdG8gaW50ZXJhbCBmdW5jdGlvbnMsIGJ1dCBmb3Igc2ltcGxp
Y2l0eQorICAvLyBvZiBpbXBsZW1lbnRhdGlvbiB3ZSB1c2UgdGhlIGdsb2JhbCBvYmplY3QgYW55
d2F5IGhlcmUuIFRoaXMgZ3VhcmFudGVlcworICAvLyB0aGF0IGluIGhvc3Qgb2JqZWN0cyB5b3Ug
YWx3YXlzIGdldCBhIHZhbGlkIG9iamVjdCBmb3IgdGhpcy4KKworICBKU09iamVjdCAqdGhpc09i
aiA9IHJlZi5iYXNlOworICBpZiAodGhpc09iai0+aXNBY3RpdmF0aW9uKCkpCisgICAgdGhpc09i
aiA9IGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT5nbG9iYWxPYmplY3QoKTsKKworICByZXR1
cm4gZnVuYy0+Y2FsbChleGVjLCB0aGlzT2JqLCBhcmdMaXN0KTsKK30KKwordm9pZCBGdW5jdGlv
bkNhbGxSZWZlcmVuY2VOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7
CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGFyZ3MpOwogfQogCiAvLyBFQ01BIDExLjIuMwpAQCAtNzQ5LDYgKzEwOTIs
MTMgQEAgSlNWYWx1ZSAqRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmV2YWx1YQogICByZXR1cm4g
ZnVuYy0+Y2FsbChleGVjLCB0aGlzT2JqLCBhcmdMaXN0KTsKIH0KIAordm9pZCBGdW5jdGlvbkNh
bGxCcmFja2V0Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAg
IHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgYmFzZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBzdWJzY3JpcHQpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgYXJncyk7
Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyICpkb3RFeHByTm90QW5PYmplY3RTdHJpbmcoKSBLSlNf
RkFTVF9DQUxMOwogc3RhdGljIGNvbnN0IGNoYXIgKmRvdEV4cHJOb3RBbk9iamVjdFN0cmluZygp
CiB7CkBAIC03OTEsMTYyICsxMTQxLDk1IEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbERvdE5vZGU6
OmV2YWx1YXRlKEUKICAgcmV0dXJuIGZ1bmMtPmNhbGwoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7
CiB9CiAKLS8vIEVDTUEgMTEuMwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
UG9zdGZpeFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQot
SlNWYWx1ZSAqUG9zdGZpeFJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCit2
b2lkIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikKIHsKLSAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3Bl
Q2hhaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOwotICBT
Y29wZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4uZW5kKCk7Ci0gIAotICAvLyB3ZSBtdXN0IGFs
d2F5cyBoYXZlIHNvbWV0aGluZyBpbiB0aGUgc2NvcGUgY2hhaW4KLSAgYXNzZXJ0KGl0ZXIgIT0g
ZW5kKTsKLQotICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgSlNPYmplY3QgKmJhc2U7Ci0gIGRvIHsg
Ci0gICAgYmFzZSA9ICppdGVyOwotICAgIGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
bV9pZGVudCwgc2xvdCkpIHsKLSAgICAgICAgSlNWYWx1ZSAqdiA9IHNsb3QuZ2V0VmFsdWUoZXhl
YywgYmFzZSwgbV9pZGVudCk7Ci0KLSAgICAgICAgZG91YmxlIG4gPSB2LT50b051bWJlcihleGVj
KTsKLSAgICAgICAgCi0gICAgICAgIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVz
UGx1cykgPyBuICsgMSA6IG4gLSAxOwotICAgICAgICBiYXNlLT5wdXQoZXhlYywgbV9pZGVudCwg
anNOdW1iZXIobmV3VmFsdWUpKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBqc051bWJlcihu
KTsKLSAgICB9Ci0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLQotICBy
ZXR1cm4gdGhyb3dVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIG1faWRlbnQpOworICAgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgYmFzZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBhcmdzKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3Rm
aXhCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFs
dWUgKlBvc3RmaXhCcmFja2V0Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQotewotICBK
U1ZhbHVlICpiYXNlVmFsdWUgPSBtX2Jhc2UtPmV2YWx1YXRlKGV4ZWMpOwotICBLSlNfQ0hFQ0tF
WENFUFRJT05WQUxVRQotICBKU1ZhbHVlICpzdWJzY3JpcHQgPSBtX3N1YnNjcmlwdC0+ZXZhbHVh
dGUoZXhlYyk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCisvLyBFQ01BIDExLjMKIAotICBK
U09iamVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7CisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi0gIHVpbnQzMl90IHByb3BlcnR5SW5kZXg7Ci0gIGlmIChzdWJzY3JpcHQt
PmdldFVJbnQzMihwcm9wZXJ0eUluZGV4KSkgewotICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAg
IEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlJbmRleCwg
c2xvdCkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIHByb3BlcnR5SW5kZXgpIDoganNVbmRl
ZmluZWQoKTsKLSAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQorY2xhc3MgTG9jYWxQb3N0Zml4
Tm9kZSA6IHB1YmxpYyBQb3N0Zml4Tm9kZQoreworcHVibGljOgorICBMb2NhbFBvc3RmaXhOb2Rl
KExvY2F0aW9uTm9kZSAqbCwgT3BlcmF0b3IgbywgaW50IGlkeCkgIEtKU19GQVNUX0NBTEwgOiBQ
b3N0Zml4Tm9kZShsLCBvKSwgaW5kZXgoaWR4KSB7fQogCisgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSogZXhlYykgIEtKU19GQVNUX0NBTEwgeworICAgIEFjdGl2YXRpb25JbXAqIHNjb3Bl
ID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPmNvbnRleHQoKS0+YWN0aXZhdGlv
bk9iamVjdCgpKTsKKyAgICBKU1ZhbHVlKiB2ID0gKnNjb3BlLT5nZXRMb2NhbERpcmVjdChpbmRl
eCk7CiAgICAgZG91YmxlIG4gPSB2LT50b051bWJlcihleGVjKTsKLQogICAgIGRvdWJsZSBuZXdW
YWx1ZSA9IChtX29wZXIgPT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwotICAgIGJhc2Ut
PnB1dChleGVjLCBwcm9wZXJ0eUluZGV4LCBqc051bWJlcihuZXdWYWx1ZSkpOwotICAgICAgICAK
KyAgICBzY29wZS0+cHV0TG9jYWxDaGVja2VkKGluZGV4LCBqc051bWJlcihuZXdWYWx1ZSkpOwog
ICAgIHJldHVybiBqc051bWJlcihuKTsKICAgfQorcHJpdmF0ZToKKyAgaW50IGluZGV4OworfTsK
IAotICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZShzdWJzY3JpcHQtPnRvU3RyaW5nKGV4ZWMpKTsK
LSAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gIEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwg
cHJvcGVydHlOYW1lKSA6IGpzVW5kZWZpbmVkKCk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVF
Ci0KLSAgZG91YmxlIG4gPSB2LT50b051bWJlcihleGVjKTsKLSAgCi0gIGRvdWJsZSBuZXdWYWx1
ZSA9IChtX29wZXIgPT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwotICBiYXNlLT5wdXQo
ZXhlYywgcHJvcGVydHlOYW1lLCBqc051bWJlcihuZXdWYWx1ZSkpOwotICAgICAgICAKLSAgcmV0
dXJuIGpzTnVtYmVyKG4pOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
UG9zdGZpeERvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1Zh
bHVlICpQb3N0Zml4RG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSog
UG9zdGZpeE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFz
ZVZhbHVlID0gbV9iYXNlLT5ldmFsdWF0ZShleGVjKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFM
VUUKLSAgSlNPYmplY3QgKmJhc2UgPSBiYXNlVmFsdWUtPnRvT2JqZWN0KGV4ZWMpOworICAvL0V2
YWx1YXRlIHRoZSBsb2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gbV9sb2MtPmV2YWx1YXRlUmVm
ZXJlbmNlKGV4ZWMpOworCisgIC8vaGFuZGxlIGVycm9yLi4KKyAgaWYgKCFyZWYuZm91bmQpCisg
ICAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRlbnQpOwog
Ci0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU1ZhbHVlICp2ID0gYmFzZS0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIG1faWRlbnQsIHNsb3QpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lk
ZW50KSA6IGpzVW5kZWZpbmVkKCk7CiAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAKKyAgLy9k
byB0aGUgb3AKKyAgSlNWYWx1ZSAqdiA9IHJlZi5yZWFkKGV4ZWMpOwogICBkb3VibGUgbiA9IHYt
PnRvTnVtYmVyKGV4ZWMpOwotICAKICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBs
dXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7Ci0gIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCBqc051
bWJlcihuZXdWYWx1ZSkpOwotICAgICAgICAKKyAgcmVmLndyaXRlKGV4ZWMsIGpzTnVtYmVyKG5l
d1ZhbHVlKSk7CiAgIHJldHVybiBqc051bWJlcihuKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFBvc3RmaXhFcnJvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotSlNWYWx1ZSogUG9zdGZpeEVycm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0
YXRlKiBleGVjKQordm9pZCBQb3N0Zml4Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2
aXNpdG9yKQogewotICAgIHRocm93RXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJQb3N0Zml4
ICVzIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIiwK
LSAgICAgICAgbV9vcGVyID09IE9wUGx1c1BsdXMgPyAiKysiIDogIi0tIik7Ci0gICAgaGFuZGxl
RXhjZXB0aW9uKGV4ZWMpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgTm9kZTo6cmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2xvYyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBEZWxldGVSZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi0vLyBFQ01BIDExLjQuMQotCi1KU1ZhbHVlICpEZWxldGVSZXNvbHZlTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorTm9kZSogUG9zdGZpeE5vZGU6Om9wdGltaXpl
TG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKQogewot
ICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigp
OwotICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7Ci0gIFNjb3BlQ2hh
aW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKLSAgCi0gIC8vIHdlIG11c3QgYWx3YXlzIGhh
dmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgotICBhc3NlcnQoaXRlciAhPSBlbmQpOwot
Ci0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBi
YXNlID0gKml0ZXI7Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50
LCBzbG90KSkgewotICAgICAgICByZXR1cm4ganNCb29sZWFuKGJhc2UtPmRlbGV0ZVByb3BlcnR5
KGV4ZWMsIG1faWRlbnQpKTsKLSAgICB9Ci0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIg
IT0gZW5kKTsKLQotICByZXR1cm4ganNCb29sZWFuKHRydWUpOworICBpZiAobV9sb2MtPmlzVmFy
QWNjZXNzTm9kZSgpKSB7CisgICAgVmFyQWNjZXNzTm9kZSogaWRlbnQgPSBzdGF0aWNfY2FzdDxW
YXJBY2Nlc3NOb2RlKj4obV9sb2MuZ2V0KCkpOworICAgIGludCBpZCA9IGlkZW50LT5sb2NhbElE
KG5vZGUpOworICAgIGlmIChpZCAhPSAtMSkKKyAgICAgIHJldHVybiBuZXcgTG9jYWxQb3N0Zml4
Tm9kZShtX2xvYy5nZXQoKSwgbV9vcGVyLCBpZCk7CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAKLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVCcmFja2V0Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSlNWYWx1ZSogUG9zdGZpeEVycm9yTm9kZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKSAKK3sgCisgICAgdGhyb3dFcnJvcihleGVjLCBSZWZl
cmVuY2VFcnJvciwgIlBvc3RmaXggJXMgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZS4iLCAKKwkgICAgICAgbV9vcGVyID09IE9wUGx1c1BsdXMgPyAiKysi
IDogIi0tIik7IAorICAgIGhhbmRsZUV4Y2VwdGlvbihleGVjKTsgCisgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7IAorfSAKKworLy8gRUNNQSAxMS40LjEKIAotSlNWYWx1ZSAqRGVsZXRlQnJhY2tl
dE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBEZWxldGVSZWZlcmVuY2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK0pTVmFsdWUqIERlbGV0ZVJlZmVyZW5jZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFzZVZhbHVlID0gbV9iYXNlLT5ldmFsdWF0ZShleGVjKTsK
LSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgSlNWYWx1ZSAqc3Vic2NyaXB0ID0gbV9zdWJz
Y3JpcHQtPmV2YWx1YXRlKGV4ZWMpOworICAvL0V2YWx1YXRlIHRoZSBsb2NhdGlvbgorICBSZWZl
cmVuY2UgcmVmID0gbG9jLT5ldmFsdWF0ZVJlZmVyZW5jZShleGVjKTsKICAgS0pTX0NIRUNLRVhD
RVBUSU9OVkFMVUUKIAotICBKU09iamVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhl
Yyk7Ci0KLSAgdWludDMyX3QgcHJvcGVydHlJbmRleDsKLSAgaWYgKHN1YnNjcmlwdC0+Z2V0VUlu
dDMyKHByb3BlcnR5SW5kZXgpKQotICAgICAgcmV0dXJuIGpzQm9vbGVhbihiYXNlLT5kZWxldGVQ
cm9wZXJ0eShleGVjLCBwcm9wZXJ0eUluZGV4KSk7Ci0KLSAgSWRlbnRpZmllciBwcm9wZXJ0eU5h
bWUoc3Vic2NyaXB0LT50b1N0cmluZyhleGVjKSk7Ci0gIHJldHVybiBqc0Jvb2xlYW4oYmFzZS0+
ZGVsZXRlUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSk7CisgIC8vaGFuZGxlIGVycm9yLi4K
KyAgaWYgKCFyZWYuZm91bmQpCisgICAgcmV0dXJuIGpzQm9vbGVhbih0cnVlKTsKKyAgZWxzZQor
ICAgIHJldHVybiBqc0Jvb2xlYW4ocmVmLmRlbGV0ZVByb3BlcnR5KGV4ZWMpKTsKIH0KIAotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlbGV0ZURvdE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUpTVmFsdWUgKkRlbGV0ZURvdE5vZGU6OmV2YWx1YXRl
KEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgRGVsZXRlUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZpc2l0
KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBKU1ZhbHVlICpiYXNlVmFsdWUgPSBtX2Jhc2Ut
PmV2YWx1YXRlKGV4ZWMpOwotICBKU09iamVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3Qo
ZXhlYyk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0KLSAgcmV0dXJuIGpzQm9vbGVhbihi
YXNlLT5kZWxldGVQcm9wZXJ0eShleGVjLCBtX2lkZW50KSk7CisgICBOb2RlOjpyZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIGxvYyk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBEZWxldGVWYWx1ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTk1OSw2ICsxMjQyLDExIEBAIEpTVmFsdWUgKkRlbGV0ZVZhbHVlTm9kZTo6ZXZhbHVhdGUo
RXhlY1MKICAgcmV0dXJuIGpzQm9vbGVhbih0cnVlKTsKIH0KIAordm9pZCBEZWxldGVWYWx1ZU5v
ZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0
TGluayh2aXNpdG9yLCBtX2V4cHIpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gVm9pZE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAv
LyBFQ01BIDExLjQuMgpAQCAtOTcwLDExICsxMjU4LDE1IEBAIEpTVmFsdWUgKlZvaWROb2RlOjpl
dmFsdWF0ZShFeGVjU3RhdGUgKmUKICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK3ZvaWQg
Vm9pZE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gRUNNQSAxMS40LjMKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1zdGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZh
bHVlKEpTVmFsdWUgKnYpIEtKU19GQVNUX0NBTEw7CiBzdGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmlu
Z0ZvclZhbHVlKEpTVmFsdWUgKnYpCiB7CiAgICAgc3dpdGNoICh2LT50eXBlKCkpIHsKQEAgLTEw
MDIsMTQ0ICsxMjk0LDEwMSBAQCBzdGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZhbHVlKEpT
VmFsCiAgICAgfQogfQogCi1KU1ZhbHVlICpUeXBlT2ZSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlICpleGVjKQorSlNWYWx1ZSogVHlwZU9mUmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjKQogewotICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRl
eHQoKS0+c2NvcGVDaGFpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJl
Z2luKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKLSAgCi0gIC8v
IHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgotICBhc3Nl
cnQoaXRlciAhPSBlbmQpOwotCi0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFz
ZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5
U2xvdChleGVjLCBtX2lkZW50LCBzbG90KSkgewotICAgICAgICBKU1ZhbHVlICp2ID0gc2xvdC5n
ZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KTsKLSAgICAgICAgcmV0dXJuIHR5cGVTdHJpbmdG
b3JWYWx1ZSh2KTsKLSAgICB9Ci0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5k
KTsKLQotICByZXR1cm4ganNTdHJpbmcoInVuZGVmaW5lZCIpOwotfQotCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gVHlwZU9mVmFsdWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlR5cGVPZlZhbHVlTm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlICpleGVjKQotewotICBKU1ZhbHVlICp2ID0gbV9leHByLT5ldmFsdWF0ZShleGVjKTsK
KyAgLy9FdmFsdWF0ZSB0aGUgbG9jYXRpb24KKyAgUmVmZXJlbmNlIHJlZiA9IGxvYy0+ZXZhbHVh
dGVSZWZlcmVuY2UoZXhlYyk7CiAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAKLSAgcmV0dXJu
IHR5cGVTdHJpbmdGb3JWYWx1ZSh2KTsKLX0KLQotLy8gRUNNQSAxMS40LjQgYW5kIDExLjQuNQot
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJlZml4UmVzb2x2ZU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlICpQcmVmaXhSZXNvbHZl
Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQotewotICBjb25zdCBTY29wZUNoYWluJiBj
aGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOwotICBTY29wZUNoYWluSXRlcmF0
b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFp
bi5lbmQoKTsKLSAgCi0gIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBz
Y29wZSBjaGFpbgotICBhc3NlcnQoaXRlciAhPSBlbmQpOwotCi0gIFByb3BlcnR5U2xvdCBzbG90
OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYg
KGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50LCBzbG90KSkgewotICAgICAgICBK
U1ZhbHVlICp2ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KTsKLQotICAgICAg
ICBkb3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMpOwotICAgICAgICAKLSAgICAgICAgZG91Ymxl
IG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7Ci0gICAg
ICAgIEpTVmFsdWUgKm4yID0ganNOdW1iZXIobmV3VmFsdWUpOwotICAgICAgICBiYXNlLT5wdXQo
ZXhlYywgbV9pZGVudCwgbjIpOwotCi0gICAgICAgIHJldHVybiBuMjsKLSAgICB9Ci0KLSAgICAr
K2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKKyAgLy9oYW5kbGUgZXJyb3IuLgorICBp
ZiAoIXJlZi5mb3VuZCkKKyAgICByZXR1cm4ganNTdHJpbmcoInVuZGVmaW5lZCIpOworICBlbHNl
CisgICAgcmV0dXJuIHR5cGVTdHJpbmdGb3JWYWx1ZShyZWYucmVhZChleGVjKSk7Cit9CiAKLSAg
cmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBtX2lkZW50KTsKK3ZvaWQg
VHlwZU9mUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQor
eworICAgTm9kZTo6cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBsb2MpOwogfQogCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJlZml4QnJhY2tldE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1K
U1ZhbHVlICpQcmVmaXhCcmFja2V0Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNW
YWx1ZSAqVHlwZU9mVmFsdWVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCiB7Ci0gIEpT
VmFsdWUgKmJhc2VWYWx1ZSA9IG1fYmFzZS0+ZXZhbHVhdGUoZXhlYyk7Ci0gIEtKU19DSEVDS0VY
Q0VQVElPTlZBTFVFCi0gIEpTVmFsdWUgKnN1YnNjcmlwdCA9IG1fc3Vic2NyaXB0LT5ldmFsdWF0
ZShleGVjKTsKKyAgSlNWYWx1ZSAqdiA9IG1fZXhwci0+ZXZhbHVhdGUoZXhlYyk7CiAgIEtKU19D
SEVDS0VYQ0VQVElPTlZBTFVFCiAKLSAgSlNPYmplY3QgKmJhc2UgPSBiYXNlVmFsdWUtPnRvT2Jq
ZWN0KGV4ZWMpOworICByZXR1cm4gdHlwZVN0cmluZ0ZvclZhbHVlKHYpOworfQogCi0gIHVpbnQz
Ml90IHByb3BlcnR5SW5kZXg7Ci0gIGlmIChzdWJzY3JpcHQtPmdldFVJbnQzMihwcm9wZXJ0eUlu
ZGV4KSkgewotICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgIEpTVmFsdWUgKnYgPSBiYXNlLT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlJbmRleCwgc2xvdCkgPyBzbG90LmdldFZhbHVl
KGV4ZWMsIGJhc2UsIHByb3BlcnR5SW5kZXgpIDoganNVbmRlZmluZWQoKTsKLSAgICBLSlNfQ0hF
Q0tFWENFUFRJT05WQUxVRQordm9pZCBUeXBlT2ZWYWx1ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2Rl
VmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2V4cHIp
OworfQogCi0gICAgZG91YmxlIG4gPSB2LT50b051bWJlcihleGVjKTsKKy8vIEVDTUEgMTEuNC40
IGFuZCAxMS40LjUKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByZWZpeE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitjbGFzcyBMb2Nh
bFByZWZpeE5vZGUgOiBwdWJsaWMgUHJlZml4Tm9kZQoreworcHVibGljOgorICBMb2NhbFByZWZp
eE5vZGUoTG9jYXRpb25Ob2RlICpsLCBPcGVyYXRvciBvLCBpbnQgaWR4KSBLSlNfRkFTVF9DQUxM
IDogUHJlZml4Tm9kZShsLCBvKSwgaW5kZXgoaWR4KSB7fQorCisgIEpTVmFsdWUqIGV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYykgS0pTX0ZBU1RfQ0FMTCB7CisgICAgQWN0aXZhdGlvbkltcCogc2Nv
cGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0
aW9uT2JqZWN0KCkpOworICAgIEpTVmFsdWUqIHYgPSAqc2NvcGUtPmdldExvY2FsRGlyZWN0KGlu
ZGV4KTsKKyAgICBkb3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMpOwogICAgIGRvdWJsZSBuZXdW
YWx1ZSA9IChtX29wZXIgPT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwogICAgIEpTVmFs
dWUgKm4yID0ganNOdW1iZXIobmV3VmFsdWUpOwotICAgIGJhc2UtPnB1dChleGVjLCBwcm9wZXJ0
eUluZGV4LCBuMik7Ci0KKyAgICBzY29wZS0+cHV0TG9jYWxDaGVja2VkKGluZGV4LCBuMik7CiAg
ICAgcmV0dXJuIG4yOwogICB9Citwcml2YXRlOgorICBpbnQgaW5kZXg7Cit9OwogCi0gIElkZW50
aWZpZXIgcHJvcGVydHlOYW1lKHN1YnNjcmlwdC0+dG9TdHJpbmcoZXhlYykpOwotICBQcm9wZXJ0
eVNsb3Qgc2xvdDsKLSAgSlNWYWx1ZSAqdiA9IGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBwcm9wZXJ0eU5h
bWUpIDoganNVbmRlZmluZWQoKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLQotICBkb3Vi
bGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMpOwotICAKLSAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3Bl
ciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7Ci0gIEpTVmFsdWUgKm4yID0ganNOdW1i
ZXIobmV3VmFsdWUpOwotICBiYXNlLT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCBuMik7Ci0KLSAg
cmV0dXJuIG4yOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJlZml4
RG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlBy
ZWZpeERvdE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK0pTVmFsdWUqIFByZWZpeE5v
ZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFzZVZhbHVlID0g
bV9iYXNlLT5ldmFsdWF0ZShleGVjKTsKKyAgLy9FdmFsdWF0ZSB0aGUgbG9jYXRpb24KKyAgUmVm
ZXJlbmNlIHJlZiA9IG1fbG9jLT5ldmFsdWF0ZVJlZmVyZW5jZShleGVjKTsKICAgS0pTX0NIRUNL
RVhDRVBUSU9OVkFMVUUKLSAgSlNPYmplY3QgKmJhc2UgPSBiYXNlVmFsdWUtPnRvT2JqZWN0KGV4
ZWMpOwogCi0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU1ZhbHVlICp2ID0gYmFzZS0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIG1faWRlbnQsIHNsb3QpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNl
LCBtX2lkZW50KSA6IGpzVW5kZWZpbmVkKCk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCisg
IC8vaGFuZGxlIGVycm9yLi4KKyAgaWYgKCFyZWYuZm91bmQpCisgICAgcmV0dXJuIHRocm93VW5k
ZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRlbnQpOwogCisgIEpTVmFsdWUgKnYgPSBy
ZWYucmVhZChleGVjKTsKICAgZG91YmxlIG4gPSB2LT50b051bWJlcihleGVjKTsKLSAgCiAgIGRv
dWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwog
ICBKU1ZhbHVlICpuMiA9IGpzTnVtYmVyKG5ld1ZhbHVlKTsKLSAgYmFzZS0+cHV0KGV4ZWMsIG1f
aWRlbnQsIG4yKTsKLQorICByZWYud3JpdGUoZXhlYywgbjIpOwogICByZXR1cm4gbjI7CiB9CiAK
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcmVmaXhFcnJvck5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgUHJlZml4Tm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgTm9kZTo6cmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBtX2xvYyk7Cit9CiAKLUpTVmFsdWUqIFByZWZpeEVycm9yTm9kZTo6ZXZhbHVhdGUo
RXhlY1N0YXRlKiBleGVjKQorTm9kZSogUHJlZml4Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2VzcyhF
eGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpCiB7Ci0gICAgdGhyb3dFcnJv
cihleGVjLCBSZWZlcmVuY2VFcnJvciwgIlByZWZpeCAlcyBvcGVyYXRvciBhcHBsaWVkIHRvIHZh
bHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiIsCi0gICAgICAgIG1fb3BlciA9PSBPcFBsdXNQ
bHVzID8gIisrIiA6ICItLSIpOworICBpZiAobV9sb2MtPmlzVmFyQWNjZXNzTm9kZSgpKSB7Cisg
ICAgVmFyQWNjZXNzTm9kZSogaWRlbnQgPSBzdGF0aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9s
b2MuZ2V0KCkpOworICAgIGludCBpZCA9IGlkZW50LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChp
ZCAhPSAtMSkKKyAgICAgIHJldHVybiBuZXcgTG9jYWxQcmVmaXhOb2RlKG1fbG9jLmdldCgpLCBt
X29wZXIsIGlkKTsKKyAgfQorICByZXR1cm4gMDsKK30KKworSlNWYWx1ZSogUHJlZml4RXJyb3JO
b2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpIAoreyAKKyAgICB0aHJvd0Vycm9yKGV4ZWMs
IFJlZmVyZW5jZUVycm9yLCAiUHJlZml4ICVzIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhh
dCBpcyBub3QgYSByZWZlcmVuY2UuIiwgCisgICAgICAgIG1fb3BlciA9PSBPcFBsdXNQbHVzID8g
IisrIiA6ICItLSIpOyAKICAgICBoYW5kbGVFeGNlcHRpb24oZXhlYyk7Ci0gICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IAogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtMTE1Myw2ICsxNDAyLDExIEBAIEpTVmFsdWUgKlVuYXJ5UGx1c05v
ZGU6OmV2YWx1YXRlKEV4ZWNTdGEKICAgcmV0dXJuIGpzTnVtYmVyKHYtPnRvTnVtYmVyKGV4ZWMp
KTsKIH0KIAordm9pZCBVbmFyeVBsdXNOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZWdhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuNC43CkBAIC0xMTY1LDYgKzE0MTksMTEg
QEAgSlNWYWx1ZSAqTmVnYXRlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlIAogICByZXR1cm4ganNO
dW1iZXIoLW4pOwogfQogCit2b2lkIE5lZ2F0ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpdHdpc2VOb3ROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS40LjgKQEAgLTExNzUsNiArMTQz
NCwxMSBAQCBKU1ZhbHVlICpCaXR3aXNlTm90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0CiAgIHJldHVy
biBqc051bWJlcih+di0+dG9JbnQzMihleGVjKSk7CiB9CiAKK3ZvaWQgQml0d2lzZU5vdE5vZGU6
OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IExvZ2ljYWxOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNN
QSAxMS40LjkKQEAgLTExODUsNiArMTQ0OSwxMSBAQCBKU1ZhbHVlICpMb2dpY2FsTm90Tm9kZTo6
ZXZhbHVhdGUoRXhlY1N0CiAgIHJldHVybiBqc0Jvb2xlYW4oIXYtPnRvQm9vbGVhbihleGVjKSk7
CiB9CiAKK3ZvaWQgTG9naWNhbE5vdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlz
aXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE11bHROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS41CkBAIC0xMTk5LDYgKzE0NjgsMTIgQEAg
SlNWYWx1ZSAqTXVsdE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZQogICByZXR1cm4gbXVsdChl
eGVjLCB2MSwgdjIsIG9wZXIpOwogfQogCit2b2lkIE11bHROb2RlOjpyZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdGVybTEp
OworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRlcm0yKTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFkZE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS42CkBAIC0xMjEzLDYgKzE0ODgsMTIgQEAgSlNWYWx1
ZSAqQWRkTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleAogICByZXR1cm4gYWRkKGV4ZWMsIHYx
LCB2Miwgb3Blcik7CiB9CiAKK3ZvaWQgQWRkTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRlcm0xKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCB0ZXJtMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBTaGlmdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIC8vIEVDTUEgMTEuNwpAQCAtMTIzOCw2ICsxNTE5LDEyIEBAIEpTVmFsdWUgKlNoaWZ0
Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICoKICAgfQogfQogCit2b2lkIFNoaWZ0Tm9kZTo6cmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZp
c2l0b3IsIHRlcm0xKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCB0ZXJtMik7Cit9CisK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWxhdGlvbmFsTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuOApAQCAtMTI4Niw2ICsxNTcz
LDEyIEBAIEpTVmFsdWUgKlJlbGF0aW9uYWxOb2RlOjpldmFsdWF0ZShFeGVjU3QKICAgcmV0dXJu
IGpzQm9vbGVhbihiKTsKIH0KIAordm9pZCBSZWxhdGlvbmFsTm9kZTo6cmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIx
KTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByMik7Cit9CisKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFcXVhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuOQpAQCAtMTMwOSw2ICsxNjAyLDEyIEBAIEpTVmFs
dWUgKkVxdWFsTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICoKICAgcmV0dXJuIGpzQm9vbGVhbihy
ZXN1bHQpOwogfQogCit2b2lkIEVxdWFsTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2
aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIxKTsKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBleHByMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBCaXRPcGVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIC8vIEVDTUEgMTEuMTAKQEAgLTEzMzEsNiArMTYzMCwxMiBAQCBKU1ZhbHVlICpCaXRPcGVy
Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlCiAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQog
Cit2b2lkIEJpdE9wZXJOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5r
KHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEJpbmFyeUxvZ2ljYWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNN
QSAxMS4xMQpAQCAtMTM0OCw2ICsxNjUzLDEyIEBAIEpTVmFsdWUgKkJpbmFyeUxvZ2ljYWxOb2Rl
OjpldmFsdWF0ZShFeGUKICAgcmV0dXJuIHYyOwogfQogCit2b2lkIEJpbmFyeUxvZ2ljYWxOb2Rl
OjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsK
K30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbmRpdGlvbmFsTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xMgpAQCAtMTQzMiwz
NyArMTc0Myw0OSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlICp2YWx1ZUZvclJlCiAg
IHJldHVybiB2OwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWdu
UmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1
ZSAqQXNzaWduUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgQ29u
ZGl0aW9uYWxOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGNv
bnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Ci0g
IFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVnaW4oKTsKLSAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAKLSAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBz
b21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCi0gIGFzc2VydChpdGVyICE9IGVuZCk7CisgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbG9naWNhbCk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlz
aXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KIAot
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgSlNPYmplY3QgKmJhc2U7Ci0gIGRvIHsgCi0gICAgYmFz
ZSA9ICppdGVyOwotICAgIGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgbV9pZGVudCwg
c2xvdCkpCi0gICAgICBnb3RvIGZvdW5kOworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEFzc2lnbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAg
ICsraXRlcjsKLSAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOworLy8gQW4gc3BlY2lhbCB2ZXJzaW9u
IHdoZXJlIExIUyBpcyBhbHdheXMgbG9jYWwgYW5kIHdoZXJlIG5vIAorLy8gcmVhZC1tb2RpZnkt
d3JpdGUgaXMgcG9zc2libGUuCitjbGFzcyBMb2NhbEFzc2lnbk5vZGUgOiBwdWJsaWMgQXNzaWdu
Tm9kZSB7CitwdWJsaWM6CisgIExvY2FsQXNzaWduTm9kZShMb2NhdGlvbk5vZGUqIGxvYywgTm9k
ZSAqcmlnaHQsIGludCBpZHgpICBLSlNfRkFTVF9DQUxMIDogCisgICAgICBBc3NpZ25Ob2RlKGxv
YywgT3BFcXVhbCwgcmlnaHQpLCBpbmRleChpZHgpIHt9CiAKLSAgaWYgKG1fb3BlciAhPSBPcEVx
dWFsKQotICAgIHJldHVybiB0aHJvd1VuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgbV9pZGVu
dCk7CisgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgIEtKU19GQVNUX0NBTEwg
eworICAgIEFjdGl2YXRpb25JbXAqIHNjb3BlID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+
KGV4ZWMtPmNvbnRleHQoKS0+YWN0aXZhdGlvbk9iamVjdCgpKTsKKyAgICBKU1ZhbHVlICp2ID0g
bV9yaWdodC0+ZXZhbHVhdGUoZXhlYyk7CisgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKyAg
ICBzY29wZS0+cHV0TG9jYWxDaGVja2VkKGluZGV4LCB2KTsKKyAgICByZXR1cm4gdjsKKyAgfQor
cHJpdmF0ZToKKyAgaW50IGluZGV4OworfTsKKworSlNWYWx1ZSogQXNzaWduTm9kZTo6ZXZhbHVh
dGUoRXhlY1N0YXRlKiBleGVjKSB7CisgIFJlZmVyZW5jZSByZWYgPSBtX2xvYy0+ZXZhbHVhdGVS
ZWZlcmVuY2UoZXhlYyk7CisKKyAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKworICAvL0xvb2t1
cCBmYWlsdXJlIGlzIE9LIGZvciBhc3NpZ25tZW50cywgYnV0IG5vdCAKKyAgLy9yZWFkLW1vZGlm
eS13cml0ZSBvcHMsIGUuZy4gKz0KKyAgaWYgKCFyZWYuZm91bmQgJiYgbV9vcGVyICE9IE9wRXF1
YWwpCisgICAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRl
bnQpOwogCi0gZm91bmQ6CiAgIEpTVmFsdWUgKnY7CiAKICAgaWYgKG1fb3BlciA9PSBPcEVxdWFs
KSB7CiAgICAgdiA9IG1fcmlnaHQtPmV2YWx1YXRlKGV4ZWMpOwogICB9IGVsc2UgewotICAgIEpT
VmFsdWUgKnYxID0gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KTsKKyAgICBKU1Zh
bHVlICp2MSA9IHJlZi5yZWFkKGV4ZWMpOwogICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAg
ICAgSlNWYWx1ZSAqdjIgPSBtX3JpZ2h0LT5ldmFsdWF0ZShleGVjKTsKICAgICB2ID0gdmFsdWVG
b3JSZWFkTW9kaWZ5QXNzaWdubWVudChleGVjLCB2MSwgdjIsIG1fb3Blcik7CkBAIC0xNDcwLDEw
ICsxNzkzLDI4IEBAIEpTVmFsdWUgKkFzc2lnblJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGUKIAog
ICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogCi0gIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCB2
KTsKKyAgcmVmLndyaXRlKGV4ZWMsIHYpOwogICByZXR1cm4gdjsKIH0KIAordm9pZCBBc3NpZ25O
b2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICBOb2RlOjpyZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fbG9jKTsKKyAgIE5vZGU6OnJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgbV9yaWdodCk7Cit9CisKK05vZGUqIEFzc2lnbk5vZGU6Om9wdGltaXplTG9jYWxB
Y2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKQoreworICBpZiAo
bV9sb2MtPmlzVmFyQWNjZXNzTm9kZSgpICYmIG1fb3BlciA9PSBPcEVxdWFsKSB7CisgICAgVmFy
QWNjZXNzTm9kZSogaWRlbnQgPSBzdGF0aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9sb2MuZ2V0
KCkpOworICAgIGludCBpZCA9IGlkZW50LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChpZCAhPSAt
MSkgeworICAgICAgICByZXR1cm4gbmV3IExvY2FsQXNzaWduTm9kZShtX2xvYy5nZXQoKSwgbV9y
aWdodC5nZXQoKSwgaWQpOworICAgIH0KKyAgfQorICByZXR1cm4gMDsKK30KKwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkRvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogSlNWYWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlICpleGVjKQpAQCAtMTQ5Miw2ICsxODMzLDggQEAgSlNWYWx1ZSAqQXNzaWduRG90Tm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YQogICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAgICAgSlNW
YWx1ZSAqdjIgPSBtX3JpZ2h0LT5ldmFsdWF0ZShleGVjKTsKICAgICB2ID0gdmFsdWVGb3JSZWFk
TW9kaWZ5QXNzaWdubWVudChleGVjLCB2MSwgdjIsIG1fb3Blcik7CisKKyAgICAvLyMjIyBjYW4g
ZG8gZGlyZWN0IHdyaXRlIGhlcmUuLgogICB9CiAKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUK
QEAgLTE1MDAsMTMgKzE4NDMsMTAgQEAgSlNWYWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUo
RXhlY1N0YQogICByZXR1cm4gdjsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEFzc2lnbkVycm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1KU1ZhbHVlKiBBc3NpZ25FcnJvck5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3Zv
aWQgQXNzaWduRG90Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewot
ICAgIHRocm93RXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdu
bWVudCBpcyBub3QgYSByZWZlcmVuY2UuIik7Ci0gICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOwot
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1f
YmFzZSk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9yaWdodCk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25CcmFja2V0Tm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTUzMSw2ICsxODcxLDggQEAgSlNWYWx1ZSAq
QXNzaWduQnJhY2tldE5vZGU6OmV2YWx1YXRlKEV4ZQogICAgICAgS0pTX0NIRUNLRVhDRVBUSU9O
VkFMVUUKICAgICAgIEpTVmFsdWUgKnYyID0gbV9yaWdodC0+ZXZhbHVhdGUoZXhlYyk7CiAgICAg
ICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVudChleGVjLCB2MSwgdjIsIG1fb3Blcik7
CisKKyAgICAgIC8vIyMjIGNhbiBkbyBkaXJlY3Qgd3JpdGUgaGVyZS4uCiAgICAgfQogCiAgICAg
S0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKQEAgLTE1NTAsNiArMTg5Miw4IEBAIEpTVmFsdWUgKkFz
c2lnbkJyYWNrZXROb2RlOjpldmFsdWF0ZShFeGUKICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxV
RQogICAgIEpTVmFsdWUgKnYyID0gbV9yaWdodC0+ZXZhbHVhdGUoZXhlYyk7CiAgICAgdiA9IHZh
bHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1lbnQoZXhlYywgdjEsIHYyLCBtX29wZXIpOworCisgICAg
Ly8jIyMgY2FuIGRvIGRpcmVjdCB3cml0ZSBoZXJlLi4KICAgfQogCiAgIEtKU19DSEVDS0VYQ0VQ
VElPTlZBTFVFCkBAIC0xNTU4LDYgKzE5MDIsMjAgQEAgSlNWYWx1ZSAqQXNzaWduQnJhY2tldE5v
ZGU6OmV2YWx1YXRlKEV4ZQogICByZXR1cm4gdjsKIH0KIAordm9pZCBBc3NpZ25CcmFja2V0Tm9k
ZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIG1fYmFzZSk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9zdWJz
Y3JpcHQpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fcmlnaHQpOworfQorCitKU1Zh
bHVlKiBBc3NpZ25FcnJvck5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgCit7IAorICAg
IHRocm93RXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVu
dCBpcyBub3QgYSByZWZlcmVuY2UuIik7IAorICAgIGhhbmRsZUV4Y2VwdGlvbihleGVjKTsgCisg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IAorfSAKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIENvbW1hTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogLy8gRUNNQSAxMS4xNApAQCAtMTU3MSw2ICsxOTI5LDEyIEBAIEpTVmFsdWUgKkNvbW1hTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICoKICAgcmV0dXJuIHY7CiB9CiAKK3ZvaWQgQ29tbWFOb2Rl
OjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsK
K30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkV4cHJOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMi4yCkBAIC0xNTc5LDgg
KzE5NDMsMTIgQEAgSlNWYWx1ZSAqQXNzaWduRXhwck5vZGU6OmV2YWx1YXRlKEV4ZWNTdAogICBy
ZXR1cm4gZXhwci0+ZXZhbHVhdGUoZXhlYyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBWYXJEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Cit2b2lkIEFzc2lnbkV4cHJOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
Cit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7Cit9CiAKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWYXJEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgICAgCiBWYXJEZWNsTm9kZTo6VmFyRGVjbE5vZGUoY29uc3QgSWRlbnRp
ZmllciAmaWQsIEFzc2lnbkV4cHJOb2RlICppbiwgVHlwZSB0KQogICAgIDogdmFyVHlwZSh0KSwg
aWRlbnQoaWQpLCBpbml0KGluKQpAQCAtMTYxNiw3ICsxOTg0LDcgQEAgSlNWYWx1ZSogVmFyRGVj
bE5vZGU6OmhhbmRsZVNsb3dDYXNlKEV4ZQogfQogCiAvLyBFQ01BIDEyLjIKLUpTVmFsdWUqIFZh
ckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCitKU1ZhbHVlICpWYXJEZWNsTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQogewogICAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNo
YWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7CiAgICAgSlNPYmplY3QqIHZhcmlh
YmxlT2JqZWN0ID0gZXhlYy0+Y29udGV4dCgpLT52YXJpYWJsZU9iamVjdCgpOwpAQCAtMTYyNiw3
ICsxOTk0LDE0IEBAIEpTVmFsdWUqIFZhckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUKICAg
ICBib29sIGluR2xvYmFsU2NvcGUgPSArK2NoYWluLmJlZ2luKCkgPT0gY2hhaW4uZW5kKCk7CiAK
ICAgICBpZiAoaW5HbG9iYWxTY29wZSAmJiAoaW5pdCB8fCAhdmFyaWFibGVPYmplY3QtPmdldERp
cmVjdChpZGVudCkpKSB7Ci0gICAgICAgIEpTVmFsdWUqIHZhbCA9IGluaXQgPyBpbml0LT5ldmFs
dWF0ZShleGVjKSA6IGpzVW5kZWZpbmVkKCk7CisgICAgICAgIEpTVmFsdWUgKnZhbDsKKworICAg
ICAgICBpZiAoaW5pdCkgeworICAgICAgICAgICAgdmFsID0gaW5pdC0+ZXZhbHVhdGUoZXhlYyk7
CisgICAgICAgICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQorICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHZhbCA9IGpzVW5kZWZpbmVkKCk7CisKICAgICAgICAgaW50IGZsYWdzID0gSW50
ZXJuYWw7CiAgICAgICAgIGlmIChleGVjLT5jb250ZXh0KCktPmNvZGVUeXBlKCkgIT0gRXZhbENv
ZGUpCiAgICAgICAgICAgICBmbGFncyB8PSBEb250RGVsZXRlOwpAQCAtMTYzNCwyMCArMjAwOSwy
MCBAQCBKU1ZhbHVlKiBWYXJEZWNsTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlCiAgICAgICAgICAg
ICBmbGFncyB8PSBSZWFkT25seTsKICAgICAgICAgdmFyaWFibGVPYmplY3QtPnB1dERpcmVjdChp
ZGVudCwgdmFsLCBmbGFncyk7CiAgICAgfSBlbHNlIGlmIChpbml0KSB7Ci0gICAgICAgIEpTVmFs
dWUqIHZhbCA9IGluaXQtPmV2YWx1YXRlKGV4ZWMpOwotICAgICAgICBLSlNfQ0hFQ0tFWENFUFRJ
T05WQUxVRQotICAgICAgICAgICAgCisgICAgICAgIEpTVmFsdWUgKnZhbCA9IGluaXQtPmV2YWx1
YXRlKGV4ZWMpOworCiAgICAgICAgIC8vIGlmIHRoZSB2YXJpYWJsZSBvYmplY3QgaXMgdGhlIHRv
cCBvZiB0aGUgc2NvcGUgY2hhaW4sIHRoZW4gdGhhdCBtdXN0Ci0gICAgICAgIC8vIGJlIHdoZXJl
IHRoaXMgdmFyaWFibGUgaXMgZGVjbGFyZWQsIHByb2Nlc3NWYXJEZWNscyB3b3VsZCBoYXZlIHB1
dCAKKyAgICAgICAgLy8gYmUgd2hlcmUgdGhpcyB2YXJpYWJsZSBpcyBkZWNsYXJlZCwgcHJvY2Vz
c1ZhckRlY2xzIHdvdWxkIGhhdmUgcHV0CiAgICAgICAgIC8vIGl0IHRoZXJlLiBEb24ndCBzZWFy
Y2ggdGhlIHNjb3BlIGNoYWluLCB0byBvcHRpbWl6ZSB0aGlzIHZlcnkgY29tbW9uIGNhc2UuCisK
ICAgICAgICAgaWYgKGNoYWluLnRvcCgpICE9IHZhcmlhYmxlT2JqZWN0KQogICAgICAgICAgICAg
cmV0dXJuIGhhbmRsZVNsb3dDYXNlKGV4ZWMsIGNoYWluLCB2YWwpOwogCi0gICAgICAgIHVuc2ln
bmVkIGZsYWdzID0gMDsKKyAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzID0gMDsKICAgICAgICAg
dmFyaWFibGVPYmplY3QtPmdldFByb3BlcnR5QXR0cmlidXRlcyhpZGVudCwgZmxhZ3MpOwogICAg
ICAgICBpZiAodmFyVHlwZSA9PSBWYXJEZWNsTm9kZTo6Q29uc3RhbnQpCiAgICAgICAgICAgICBm
bGFncyB8PSBSZWFkT25seTsKLSAgICAgICAgCisKICAgICAgICAgQVNTRVJUKHZhcmlhYmxlT2Jq
ZWN0LT5nZXREaXJlY3QoaWRlbnQpIHx8IGlkZW50ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5h
cmd1bWVudHMpOwogICAgICAgICB2YXJpYWJsZU9iamVjdC0+cHV0KGV4ZWMsIGlkZW50LCB2YWws
IGZsYWdzKTsKICAgICB9CkBAIC0xNjU2LDIzICsyMDMxLDUwIEBAIEpTVmFsdWUqIFZhckRlY2xO
b2RlOjpldmFsdWF0ZShFeGVjU3RhdGUKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVy
IHRvIGNoYW5nZSB0aGUgaW5oZXJpdGVuY2UgaGllcmFyY2h5IHNvIHRoaXMKICAgICAvLyBub2Rl
IGRvZXNuJ3QgZXZlbiBoYXZlIGFuIGV2YWx1YXRlIG1ldGhvZCwgYnV0IGluc3RlYWQgYSBkaWZm
ZXJlbnRseSBuYW1lZAogICAgIC8vIG9uZSB3aXRoIGEgdm9pZCByZXR1cm4uCisKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBWYXJEZWNsTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAq
ZXhlYykKK3ZvaWQgVmFyRGVjbE5vZGU6OnByb2Nlc3NWYXJEZWNsKEV4ZWNTdGF0ZSAqZXhlYykK
IHsKICAgSlNPYmplY3QqIHZhcmlhYmxlID0gZXhlYy0+Y29udGV4dCgpLT52YXJpYWJsZU9iamVj
dCgpOworICAKKyAgLy8gRmlyc3QsIGRldGVybWluZSB3aGljaCBmbGFncyB3ZSB3YW50IHRvIHVz
ZS4uCisgIGludCBmbGFncyA9IERvbnREZWxldGU7IAorICBpZiAodmFyVHlwZSA9PSBWYXJEZWNs
Tm9kZTo6Q29uc3RhbnQpCisgICAgZmxhZ3MgfD0gUmVhZE9ubHk7CisKKyAgLy8gQXJlIHdlIGlu
c2lkZSBhIGZ1bmN0aW9uPyBJZiBzbywgd2UgZmlsbCBpbiB0aGUgc3ltYm9sIHRhYmxlCisgIHN3
aXRjaCAoZXhlYy0+Y29udGV4dCgpLT5jb2RlVHlwZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkNv
ZGU6CisgICAgICAvLyBJbnNpZGUgYSBmdW5jdGlvbiwgd2UncmUganVzdCBjb21wdXRpbmcgc3Rh
dGljIGluZm9ybWF0aW9uLgorICAgICAgLy8gc28sIGp1c3QgZmlsbCBpbiB0aGUgc3ltYm9sIHRh
YmxlLgorICAgICAgZXhlYy0+Y29udGV4dCgpLT5jdXJyZW50Qm9keSgpLT5hZGRWYXJEZWNsKGlk
ZW50LCBmbGFncywgZXhlYyk7CisgICAgICByZXR1cm47CisgICAgY2FzZSBFdmFsQ29kZToKKyAg
ICAgIC8vIGV2YWwtaW5qZWN0ZWQgdmFyaWFibGVzIGNhbiBiZSBkZWxldGVkLi4KKyAgICAgIGZs
YWdzICY9IH5Eb250RGVsZXRlOworCisgICAgICAvLyBJZiBhIHZhcmlhYmxlIGJ5IHRoaXMgbmFt
ZSBhbHJlYWR5IGV4aXN0cywgZG9uJ3QgY2xvYmJlciBpdCAtCisgICAgICAvLyBldmFsIG1heSBi
ZSB0cnlpbmcgdG8gaW5qZWN0IGEgdmFyaWFibGUgdGhhdCBhbHJlYWR5IGV4aXN0cy4uCisgICAg
ICBpZiAoIXZhcmlhYmxlLT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCkpIHsKKyAgICAgICAgdmFy
aWFibGUtPnB1dChleGVjLCBpZGVudCwganNVbmRlZmluZWQoKSwgZmxhZ3MpOworICAgICAgICAv
LyBldmFsIGluamVjdGVkIGEgbmV3IGxvY2FsIGludG8gc2NvcGUhIEJldHRlciBtYXJrIHRoYXQg
ZG93biwgCisgICAgICAgIC8vIHNvIHRoYXQgTm9uTG9jYWxSZXNvbHZlciBzdG9wcyBza2lwcGlu
ZyB0aGUgbG9jYWwgc2NvcGUKKyAgICAgICAgdmFyaWFibGUtPnNldExvY2FsSW5qZWN0ZWQoKTsK
KyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICAgIC8vIElm
IGEgdmFyaWFibGUgYnkgdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLCBkb24ndCBjbG9iYmVyIGl0
IC0KKyAgICAgIC8vICMjIyBJIGFtIG5vdCBzdWUgdGhpcyBpcyBuZWVkZWQgZm9yIEdsb2JhbENv
ZGUKKyAgICAgIGlmICghdmFyaWFibGUtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkKKyAgICAg
ICAgdmFyaWFibGUtPnB1dChleGVjLCBpZGVudCwganNVbmRlZmluZWQoKSwgZmxhZ3MpOworICB9
OworfQogCi0gIC8vIElmIGEgdmFyaWFibGUgYnkgdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLCBk
b24ndCBjbG9iYmVyIGl0IC0KLSAgLy8gaXQgbWlnaHQgYmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIK
LSAgaWYgKCF2YXJpYWJsZS0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpKSB7Ci0gICAgaW50IGZs
YWdzID0gSW50ZXJuYWw7Ci0gICAgaWYgKGV4ZWMtPmNvbnRleHQoKS0+Y29kZVR5cGUoKSAhPSBF
dmFsQ29kZSkKLSAgICAgIGZsYWdzIHw9IERvbnREZWxldGU7Ci0gICAgaWYgKHZhclR5cGUgPT0g
VmFyRGVjbE5vZGU6OkNvbnN0YW50KQotICAgICAgZmxhZ3MgfD0gUmVhZE9ubHk7Ci0gICAgdmFy
aWFibGUtPnB1dChleGVjLCBpZGVudCwganNVbmRlZmluZWQoKSwgZmxhZ3MpOwotICB9Cit2b2lk
IFZhckRlY2xOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgaW5pdCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBWYXJEZWNsTGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC0xNjg3LDE3ICsyMDg5LDE3IEBAIEpTVmFsdWUgKlZhckRlY2xMaXN0Tm9kZTo6ZXZh
bHVhdGUoRXhlY1MKICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLXZvaWQgVmFyRGVjbExp
c3ROb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQotewotICBmb3IgKFZhckRl
Y2xMaXN0Tm9kZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgpKQotICAgIG4tPnZhci0+
cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotfQotCiB2b2lkIFZhckRlY2xMaXN0Tm9kZTo6YnJlYWtD
eWNsZSgpIAogeyAKICAgICBuZXh0ID0gMDsKIH0KIAordm9pZCBWYXJEZWNsTGlzdE5vZGU6OnJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCB2YXIpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVmFyU3RhdGVtZW50Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDEyLjIKQEAgLTE3MTEsOSArMjExMyw1
OSBAQCBDb21wbGV0aW9uIFZhclN0YXRlbWVudE5vZGU6OmV4ZWN1dGUoRXhlCiAgIHJldHVybiBD
b21wbGV0aW9uKE5vcm1hbCk7CiB9CiAKLXZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6cHJvY2Vzc1Zh
ckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IG5leHQpOworfQorCitOb2RlKiBWYXJTdGF0ZW1lbnROb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNz
KEV4ZWNTdGF0ZSosIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmNCb2R5KQoreworICBTdGF0aWNWYXJT
dGF0ZW1lbnROb2RlKiBzdGF0aWNWZXIgPSBuZXcgU3RhdGljVmFyU3RhdGVtZW50Tm9kZSgpOwor
ICBzdGF0aWNWZXItPm9yaWdpbmFsU3RhdGVtZW50ID0gdGhpczsKKworICBmb3IgKFZhckRlY2xM
aXN0Tm9kZSAqbiA9IG5leHQuZ2V0KCk7IG47IG4gPSBuLT5uZXh0LmdldCgpKSB7CisgICAgLy8g
V2Ugb25seSBjYXJlIGFib3V0IHRoaW5ncyB3aGljaCBoYXZlIGFuIGluaXRpYWxpemVyIC0tLSAK
KyAgICAvLyBldmVyeXRoaW5nIGVsc2UgaXMgYSBuby1vcCBhdCBleGVjdXRpb24gdGltZSwgCisg
ICAgLy8gYW5kIG9ubHkgbWFrZXMgYSBkaWZmZXJlbmNlIGF0IHByb2Nlc3NWYXJEZWNsIHRpbWUK
KyAgICBpZiAobi0+dmFyLT5pbml0KSB7CisgICAgICBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpJ
bml0aWFsaXplciBpbml0OworICAgICAgaW5pdC5pbml0RXhwciA9IG4tPnZhci0+aW5pdC0+Z2V0
RXhwcigpOyAvL1NraXAgdGhlIEFzc2lnbkV4cHJOb2RlIGFzIHdlbGwuLi4KKyAgICAgIGluaXQu
bG9jYWxJRCAgPSBmdW5jQm9keS0+bG9va3VwU3ltYm9sSUQobi0+dmFyLT5pZGVudCk7CisgICAg
ICBpZiAoaW5pdC5sb2NhbElEID09IC0xKSB7IC8vT3VjaCwgYSBkeW5hbWljIHByb3BlcnR5ISBC
YWlsIG91dCwgYmFpbCBvdXQhCisgICAgICAgIG5ld05vZGVzLT5yZW1vdmUoc3RhdGljVmVyKTsK
KyAgICAgICAgZGVsZXRlIHN0YXRpY1ZlcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9Cisg
ICAgICBzdGF0aWNWZXItPmluaXRpYWxpemVycy5hcHBlbmQoaW5pdCk7CisgICAgfQorICB9Cisg
IHJldHVybiBzdGF0aWNWZXI7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gU3RhdGljVmFyU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb21w
bGV0aW9uIFN0YXRpY1ZhclN0YXRlbWVudE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKQor
eworICBLSlNfQlJFQUtQT0lOVDsKKyAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2Fz
dDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOwor
CisgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5pdGlhbGl6ZXJzLnNpemUoKTsgKytpKSB7Cisg
ICAgSlNWYWx1ZSogdmFsID0gaW5pdGlhbGl6ZXJzW2ldLmluaXRFeHByLT5ldmFsdWF0ZShleGVj
KTsKKyAgICBLSlNfQ0hFQ0tFWENFUFRJT04KKyAgICBzY29wZS0+cHV0TG9jYWwoaW5pdGlhbGl6
ZXJzW2ldLmxvY2FsSUQsIHZhbCk7CisgICAgLy8gTm90ZTogZmxhZ3MgYXJlIGFscmVhZHkgdGFr
ZW4gY2FyZSBvZiBhdCBkZWNsYXJhdGlvbiB0aW1lCisgIH0KKyAgcmV0dXJuIENvbXBsZXRpb24o
Tm9ybWFsKTsKK30KKwordm9pZCBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQo
Tm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIG5leHQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsK
KyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMuc2l6ZSgpOyArK2kpIHsKKyAg
IE5vZGUqIG9sZEluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXJzW2ldLmluaXRFeHByLmdldCgpOwor
ICAgTm9kZSogbmV3SW5pdGlhbGl6ZXIgPSB2aXNpdG9yLT52aXNpdChvbGRJbml0aWFsaXplcik7
CisgICBpZiAobmV3SW5pdGlhbGl6ZXIpCisgICAgaW5pdGlhbGl6ZXJzW2ldLmluaXRFeHByID0g
bmV3SW5pdGlhbGl6ZXI7CisgIH0KIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEJsb2NrTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3
MzUsMTUgKzIxODcsMTIgQEAgQ29tcGxldGlvbiBCbG9ja05vZGU6OmV4ZWN1dGUoRXhlY1N0YXRl
IAogICBpZiAoIXNvdXJjZSkKICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwpOwogCi0gIHNv
dXJjZS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOwotCiAgIHJldHVybiBzb3VyY2UtPmV4ZWN1dGUo
ZXhlYyk7CiB9CiAKLXZvaWQgQmxvY2tOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpl
eGVjKQordm9pZCBCbG9ja05vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikK
IHsKLSAgaWYgKHNvdXJjZSkKLSAgICBzb3VyY2UtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAg
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHNvdXJjZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0eVN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCkBAIC0xNzY3LDYgKzIyMTYsMTEgQEAgQ29tcGxldGlvbiBFeHByU3RhdGVtZW50
Tm9kZTo6ZXhlY3V0ZShFeAogICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHYpOwogfQogCit2
b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
Cit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJZk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTIuNQpAQCAtMTc5MCwxMiArMjI0NCwxMSBAQCBDb21w
bGV0aW9uIElmTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKmV4CiAgIHJldHVybiBzdGF0ZW1lbnQy
LT5leGVjdXRlKGV4ZWMpOwogfQogCi12b2lkIElmTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNT
dGF0ZSAqZXhlYykKK3ZvaWQgSWZOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpCiB7Ci0gIHN0YXRlbWVudDEtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLQotICBpZiAoc3Rh
dGVtZW50MikKLSAgICBzdGF0ZW1lbnQyLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vy
c2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
c3RhdGVtZW50MSk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50Mik7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEb1doaWxlTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODA3LDIxICsyMjYwLDIzIEBAIENvbXBs
ZXRpb24gRG9XaGlsZU5vZGU6OmV4ZWN1dGUoRXhlY1N0YXQKIAogICBKU1ZhbHVlICpidjsKICAg
Q29tcGxldGlvbiBjOworICBKU1ZhbHVlKiB2YWx1ZSA9IDA7CiAKICAgZG8gewogICAgIC8vIGJh
aWwgb3V0IG9uIGVycm9yCiAgICAgS0pTX0NIRUNLRVhDRVBUSU9OCiAKLSAgICBleGVjLT5jb250
ZXh0KCktPnB1c2hJdGVyYXRpb24oKTsKICAgICBjID0gc3RhdGVtZW50LT5leGVjdXRlKGV4ZWMp
OwotICAgIGV4ZWMtPmNvbnRleHQoKS0+cG9wSXRlcmF0aW9uKCk7CiAgICAgCiAgICAgaWYgKGV4
ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT50aW1lZE91dCgpKQogICAgICAgICByZXR1cm4gQ29t
cGxldGlvbihJbnRlcnJ1cHRlZCk7CiAKLSAgICBpZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250
aW51ZSkgJiYgbHMuY29udGFpbnMoYy50YXJnZXQoKSkpKSB7Ci0gICAgICBpZiAoKGMuY29tcGxU
eXBlKCkgPT0gQnJlYWspICYmIGxzLmNvbnRhaW5zKGMudGFyZ2V0KCkpKQotICAgICAgICByZXR1
cm4gQ29tcGxldGlvbihOb3JtYWwsIDApOworICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkp
CisgICAgICAgIHZhbHVlID0gYy52YWx1ZSgpOworCisgICAgaWYgKCEoKGMuY29tcGxUeXBlKCkg
PT0gQ29udGludWUpICYmIChjLnRhcmdldCgpID09IHRoaXMpKSkgeworICAgICAgaWYgKChjLmNv
bXBsVHlwZSgpID09IEJyZWFrKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKKyAgICAgICAgcmV0
dXJuIENvbXBsZXRpb24oTm9ybWFsLCB2YWx1ZSk7CiAgICAgICBpZiAoYy5jb21wbFR5cGUoKSAh
PSBOb3JtYWwpCiAgICAgICAgIHJldHVybiBjOwogICAgIH0KQEAgLTE4MjksMTIgKzIyODQsMTMg
QEAgQ29tcGxldGlvbiBEb1doaWxlTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdAogICAgIEtKU19DSEVD
S0VYQ0VQVElPTgogICB9IHdoaWxlIChidi0+dG9Cb29sZWFuKGV4ZWMpKTsKIAotICByZXR1cm4g
Q29tcGxldGlvbihOb3JtYWwsIDApOworICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHZhbHVl
KTsKIH0KIAotdm9pZCBEb1doaWxlTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhl
YykKK3ZvaWQgRG9XaGlsZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikK
IHsKLSAgc3RhdGVtZW50LT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgZXhwcik7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50
KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdoaWxlTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4NjAsOSArMjMxNiw3IEBAIENv
bXBsZXRpb24gV2hpbGVOb2RlOjpleGVjdXRlKEV4ZWNTdGF0ZSAKICAgICBpZiAoIWIpCiAgICAg
ICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHZhbHVlKTsKIAotICAgIGV4ZWMtPmNvbnRleHQo
KS0+cHVzaEl0ZXJhdGlvbigpOwogICAgIGMgPSBzdGF0ZW1lbnQtPmV4ZWN1dGUoZXhlYyk7Ci0g
ICAgZXhlYy0+Y29udGV4dCgpLT5wb3BJdGVyYXRpb24oKTsKIAogICAgIGlmIChleGVjLT5keW5h
bWljSW50ZXJwcmV0ZXIoKS0+dGltZWRPdXQoKSkKICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24o
SW50ZXJydXB0ZWQpOwpAQCAtMTg3MCw5ICsyMzI0LDkgQEAgQ29tcGxldGlvbiBXaGlsZU5vZGU6
OmV4ZWN1dGUoRXhlY1N0YXRlIAogICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAg
ICB2YWx1ZSA9IGMudmFsdWUoKTsKIAotICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51
ZSkgJiYgbHMuY29udGFpbnMoYy50YXJnZXQoKSkpCisgICAgaWYgKChjLmNvbXBsVHlwZSgpID09
IENvbnRpbnVlKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKICAgICAgIGNvbnRpbnVlOwotICAg
IGlmICgoYy5jb21wbFR5cGUoKSA9PSBCcmVhaykgJiYgbHMuY29udGFpbnMoYy50YXJnZXQoKSkp
CisgICAgaWYgKChjLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlz
KSkKICAgICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwgdmFsdWUpOwogICAgIGlmIChjLmNv
bXBsVHlwZSgpICE9IE5vcm1hbCkKICAgICAgIHJldHVybiBjOwpAQCAtMTg4MSw5ICsyMzM1LDEw
IEBAIENvbXBsZXRpb24gV2hpbGVOb2RlOjpleGVjdXRlKEV4ZWNTdGF0ZSAKICAgcmV0dXJuIENv
bXBsZXRpb24oKTsgLy8gd29yayBhcm91bmQgZ2NjIDQuMCBidWcKIH0KIAotdm9pZCBXaGlsZU5v
ZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCit2b2lkIFdoaWxlTm9kZTo6cmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBzdGF0ZW1lbnQtPnByb2Nlc3NW
YXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gRm9yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtMTkwNywxMyArMjM2MiwxMSBAQCBDb21wbGV0aW9uIEZvck5vZGU6OmV4ZWN1
dGUoRXhlY1N0YXRlICplCiAgICAgLy8gYmFpbCBvdXQgb24gZXJyb3IKICAgICBLSlNfQ0hFQ0tF
WENFUFRJT04KIAotICAgIGV4ZWMtPmNvbnRleHQoKS0+cHVzaEl0ZXJhdGlvbigpOwogICAgIENv
bXBsZXRpb24gYyA9IHN0YXRlbWVudC0+ZXhlY3V0ZShleGVjKTsKLSAgICBleGVjLT5jb250ZXh0
KCktPnBvcEl0ZXJhdGlvbigpOwogICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAg
ICBjdmFsID0gYy52YWx1ZSgpOwotICAgIGlmICghKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVl
KSAmJiBscy5jb250YWlucyhjLnRhcmdldCgpKSkpIHsKLSAgICAgIGlmICgoYy5jb21wbFR5cGUo
KSA9PSBCcmVhaykgJiYgbHMuY29udGFpbnMoYy50YXJnZXQoKSkpCisgICAgaWYgKCEoKGMuY29t
cGxUeXBlKCkgPT0gQ29udGludWUpICYmIChjLnRhcmdldCgpID09IHRoaXMpKSkgeworICAgICAg
aWYgKChjLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKICAg
ICAgICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsLCBjdmFsKTsKICAgICAgIGlmIChjLmNvbXBs
VHlwZSgpICE9IE5vcm1hbCkKICAgICAgIHJldHVybiBjOwpAQCAtMTkzMSwxMiArMjM4NCwxMiBA
QCBDb21wbGV0aW9uIEZvck5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICplCiAgIHJldHVybiBDb21w
bGV0aW9uKCk7IC8vIHdvcmsgYXJvdW5kIGdjYyA0LjAgYnVnCiB9CiAKLXZvaWQgRm9yTm9kZTo6
cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgRm9yTm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBpZiAoZXhwcjEpCi0gICAgZXhwcjEtPnBy
b2Nlc3NWYXJEZWNscyhleGVjKTsKLQotICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVj
KTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByMSk7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgZXhwcjIpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIzKTsK
KyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRm9ySW5Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpAQCAtMTk1MSw3ICsyNDA0LDcgQEAgRm9ySW5Ob2RlOjpGb3JJbk5vZGUo
Y29uc3QgSWRlbnRpZmllciAmaQogewogICAvLyBmb3IoIHZhciBmb28gPSBiYXIgaW4gYmF6ICkK
ICAgdmFyRGVjbCA9IG5ldyBWYXJEZWNsTm9kZShpZGVudCwgaW5pdC5nZXQoKSwgVmFyRGVjbE5v
ZGU6OlZhcmlhYmxlKTsKLSAgbGV4cHIgPSBuZXcgUmVzb2x2ZU5vZGUoaWRlbnQpOworICBsZXhw
ciA9IG5ldyBWYXJBY2Nlc3NOb2RlKGlkZW50KTsKIH0KIAogLy8gRUNNQSAxMi42LjQKQEAgLTE5
ODEsNjkgKzI0MzQsMjggQEAgQ29tcGxldGlvbiBGb3JJbk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRl
IAogICBLSlNfQ0hFQ0tFWENFUFRJT04KICAgdiA9IGUtPnRvT2JqZWN0KGV4ZWMpOwogICB2LT5n
ZXRQcm9wZXJ0eU5hbWVzKGV4ZWMsIHByb3BlcnR5TmFtZXMpOwotICAKKwogICBQcm9wZXJ0eU5h
bWVBcnJheUl0ZXJhdG9yIGVuZCA9IHByb3BlcnR5TmFtZXMuZW5kKCk7CiAgIGZvciAoUHJvcGVy
dHlOYW1lQXJyYXlJdGVyYXRvciBpdCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICBjb25zdCBJZGVudGlmaWVyICZuYW1lID0gKml0OwotICAgICAgaWYg
KCF2LT5oYXNQcm9wZXJ0eShleGVjLCBuYW1lKSkKLSAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgSlNWYWx1ZSAqc3RyID0ganNTdHJpbmcobmFtZS51c3RyaW5nKCkpOwotCi0gICAgICBpZiAo
bGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBjb25zdCBJZGVudGlmaWVyICZpZGVu
dCA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KGxleHByLmdldCgpKS0+aWRlbnRpZmllcigp
OwotCi0gICAgICAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5z
Y29wZUNoYWluKCk7Ci0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVn
aW4oKTsKLSAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAK
LSAgICAgICAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNo
YWluCi0gICAgICAgIGFzc2VydChpdGVyICE9IGVuZCk7CisgICAgY29uc3QgSWRlbnRpZmllciAm
bmFtZSA9ICppdDsKKyAgICBpZiAoIXYtPmhhc1Byb3BlcnR5KGV4ZWMsIG5hbWUpKQorICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmpl
Y3QgKm87Ci0gICAgICAgIGRvIHsgCi0gICAgICAgICAgICBvID0gKml0ZXI7Ci0gICAgICAgICAg
ICBpZiAoby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgewotICAgICAgICAg
ICAgICAgIG8tPnB1dChleGVjLCBpZGVudCwgc3RyKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsraXRlcjsKLSAgICAgICAgfSB3aGlsZSAoaXRl
ciAhPSBlbmQpOwotICAgICAgICAKLSAgICAgICAgaWYgKGl0ZXIgPT0gZW5kKQotICAgICAgICAg
ICAgby0+cHV0KGV4ZWMsIGlkZW50LCBzdHIpOwotICAgIH0gZWxzZSBpZiAobGV4cHItPmlzRG90
QWNjZXNzb3JOb2RlKCkpIHsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUgKj4obGV4cHIuZ2V0KCkpLT5pZGVudGlmaWVyKCk7Ci0g
ICAgICAgIEpTVmFsdWUgKnYgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUgKj4obGV4cHIu
Z2V0KCkpLT5iYXNlKCktPmV2YWx1YXRlKGV4ZWMpOwotICAgICAgICBLSlNfQ0hFQ0tFWENFUFRJ
T04KLSAgICAgICAgSlNPYmplY3QgKm8gPSB2LT50b09iamVjdChleGVjKTsKKyAgICBKU1ZhbHVl
ICpzdHIgPSBqc1N0cmluZyhuYW1lLnVzdHJpbmcoKSk7CiAKLSAgICAgICAgby0+cHV0KGV4ZWMs
IGlkZW50LCBzdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFzc2VydChsZXhwci0+aXNCcmFj
a2V0QWNjZXNzb3JOb2RlKCkpOwotICAgICAgICBKU1ZhbHVlICp2ID0gc3RhdGljX2Nhc3Q8QnJh
Y2tldEFjY2Vzc29yTm9kZSAqPihsZXhwci5nZXQoKSktPmJhc2UoKS0+ZXZhbHVhdGUoZXhlYyk7
Ci0gICAgICAgIEtKU19DSEVDS0VYQ0VQVElPTgotICAgICAgICBKU1ZhbHVlICp2MiA9IHN0YXRp
Y19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obGV4cHIuZ2V0KCkpLT5zdWJzY3JpcHQoKS0+
ZXZhbHVhdGUoZXhlYyk7Ci0gICAgICAgIEtKU19DSEVDS0VYQ0VQVElPTgotICAgICAgICBKU09i
amVjdCAqbyA9IHYtPnRvT2JqZWN0KGV4ZWMpOwotCi0gICAgICAgIHVpbnQzMl90IGk7Ci0gICAg
ICAgIGlmICh2Mi0+Z2V0VUludDMyKGkpKQotICAgICAgICAgICAgby0+cHV0KGV4ZWMsIGksIHN0
cik7Ci0gICAgICAgIG8tPnB1dChleGVjLCBJZGVudGlmaWVyKHYyLT50b1N0cmluZyhleGVjKSks
IHN0cik7Ci0gICAgfQorICAgIEFTU0VSVChsZXhwci0+aXNMb2NhdGlvbigpKTsKKyAgICBMb2Nh
dGlvbk5vZGUqIGxvYyA9IHN0YXRpY19jYXN0PExvY2F0aW9uTm9kZSo+KGxleHByLmdldCgpKTsK
IAorICAgIFJlZmVyZW5jZSByZWYgPSBsb2MtPmV2YWx1YXRlUmVmZXJlbmNlKGV4ZWMpOwogICAg
IEtKU19DSEVDS0VYQ0VQVElPTgorICAgIHJlZi53cml0ZShleGVjLCBzdHIpOwogCi0gICAgZXhl
Yy0+Y29udGV4dCgpLT5wdXNoSXRlcmF0aW9uKCk7CiAgICAgYyA9IHN0YXRlbWVudC0+ZXhlY3V0
ZShleGVjKTsKLSAgICBleGVjLT5jb250ZXh0KCktPnBvcEl0ZXJhdGlvbigpOwogICAgIGlmIChj
LmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAgICByZXR2YWwgPSBjLnZhbHVlKCk7CiAKLSAgICBp
ZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgbHMuY29udGFpbnMoYy50YXJnZXQo
KSkpKSB7Ci0gICAgICBpZiAoKGMuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIGxzLmNvbnRhaW5z
KGMudGFyZ2V0KCkpKQorICAgIGlmICghKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiAo
Yy50YXJnZXQoKSA9PSB0aGlzKSkpIHsKKyAgICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBCcmVh
aykgJiYgKGMudGFyZ2V0KCkgPT0gdGhpcykpCiAgICAgICAgIGJyZWFrOwogICAgICAgaWYgKGMu
Y29tcGxUeXBlKCkgIT0gTm9ybWFsKSB7CiAgICAgICAgIHJldHVybiBjOwpAQCAtMjA1NywxMSAr
MjQ2OSwxMyBAQCBDb21wbGV0aW9uIEZvckluTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiAgIHJl
dHVybiBDb21wbGV0aW9uKE5vcm1hbCwgcmV0dmFsKTsKIH0KIAotdm9pZCBGb3JJbk5vZGU6OnBy
b2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCit2b2lkIEZvckluTm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBpZiAodmFyRGVjbCkKLSAgICB2YXJEZWNs
LT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Ci0gIHN0YXRlbWVudC0+cHJvY2Vzc1ZhckRlY2xzKGV4
ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGluaXQpOworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGxleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsK
KyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCB2YXJEZWNsKTsKKyAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQ29udGludWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
MjA3MSwxMiArMjQ4NSw3IEBAIENvbXBsZXRpb24gQ29udGludWVOb2RlOjpleGVjdXRlKEV4ZWNT
dGEKIHsKICAgS0pTX0JSRUFLUE9JTlQ7CiAKLSAgaWYgKGlkZW50LmlzRW1wdHkoKSAmJiAhZXhl
Yy0+Y29udGV4dCgpLT5pbkl0ZXJhdGlvbigpKQotICAgIHJldHVybiBjcmVhdGVFcnJvckNvbXBs
ZXRpb24oZXhlYywgU3ludGF4RXJyb3IsICJJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4iKTsK
LSAgZWxzZSBpZiAoIWlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+Y29udGV4dCgpLT5zZWVuTGFi
ZWxzKCktPmNvbnRhaW5zKGlkZW50KSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9u
KGV4ZWMsIFN5bnRheEVycm9yLCAiTGFiZWwgJXMgbm90IGZvdW5kLiIsIGlkZW50KTsKLSAgZWxz
ZQotICAgIHJldHVybiBDb21wbGV0aW9uKENvbnRpbnVlLCAwLCBpZGVudCk7CisgIHJldHVybiBD
b21wbGV0aW9uKENvbnRpbnVlLCAwLCB0YXJnZXQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gQnJlYWtOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMjA4NiwxMyArMjQ5NSw3IEBAIENvbXBsZXRpb24gQnJlYWtOb2RlOjpleGVjdXRl
KEV4ZWNTdGF0ZSAKIHsKICAgS0pTX0JSRUFLUE9JTlQ7CiAKLSAgaWYgKGlkZW50LmlzRW1wdHko
KSAmJiAhZXhlYy0+Y29udGV4dCgpLT5pbkl0ZXJhdGlvbigpICYmCi0gICAgICAhZXhlYy0+Y29u
dGV4dCgpLT5pblN3aXRjaCgpKQotICAgIHJldHVybiBjcmVhdGVFcnJvckNvbXBsZXRpb24oZXhl
YywgU3ludGF4RXJyb3IsICJJbnZhbGlkIGJyZWFrIHN0YXRlbWVudC4iKTsKLSAgZWxzZSBpZiAo
IWlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+Y29udGV4dCgpLT5zZWVuTGFiZWxzKCktPmNvbnRh
aW5zKGlkZW50KSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRh
eEVycm9yLCAiTGFiZWwgJXMgbm90IGZvdW5kLiIpOwotICBlbHNlCi0gICAgcmV0dXJuIENvbXBs
ZXRpb24oQnJlYWssIDAsIGlkZW50KTsKKyAgcmV0dXJuIENvbXBsZXRpb24oQnJlYWssIDAsIHRh
cmdldCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXR1cm5Ob2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTAzLDcgKzI1MDYsNyBA
QCBDb21wbGV0aW9uIFJldHVybk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlCiAgIEtKU19CUkVBS1BP
SU5UOwogCiAgIENvZGVUeXBlIGNvZGVUeXBlID0gZXhlYy0+Y29udGV4dCgpLT5jb2RlVHlwZSgp
OwotICBpZiAoY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlICYmIGNvZGVUeXBlICE9IEFub255bW91
c0NvZGUgKSB7CisgIGlmIChjb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUpIHsKICAgICByZXR1cm4g
Y3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiSW52YWxpZCByZXR1cm4g
c3RhdGVtZW50LiIpOwogICB9CiAKQEAgLTIxMTYsNiArMjUxOSwxMSBAQCBDb21wbGV0aW9uIFJl
dHVybk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlCiAgIHJldHVybiBDb21wbGV0aW9uKFJldHVyblZh
bHVlLCB2KTsKIH0KIAordm9pZCBSZXR1cm5Ob2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdmFsdWUpOworfQorCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2l0aE5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDEyLjEwCkBAIC0yMTM0LDkgKzI1NDIs
MTAgQEAgQ29tcGxldGlvbiBXaXRoTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKgogICByZXR1cm4g
cmVzOwogfQogCi12b2lkIFdpdGhOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVj
KQordm9pZCBXaXRoTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewot
ICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQpOwog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUNsYXVzZU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjE1OSwxNiArMjU2OCwxMCBAQCBDb21w
bGV0aW9uIENhc2VDbGF1c2VOb2RlOjpldmFsU3RhdGVtZW50CiAgICAgcmV0dXJuIENvbXBsZXRp
b24oTm9ybWFsLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAotdm9pZCBDYXNlQ2xhdXNlTm9kZTo6cHJv
Y2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKLXsKLSAgaWYgKHNvdXJjZSkKLSAgICBzb3Vy
Y2UtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLX0KLQotdm9pZCBDYXNlQ2xhdXNlTm9kZTo6cHJv
Y2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgQ2FzZUNsYXVzZU5vZGU6OnJlY3Vy
c2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgaWYgKHNvdXJjZSkKLSAgICAgIHNv
dXJjZS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IGV4cHIpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHNvdXJjZSk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGF1c2VMaXN0Tm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTgwLDI2ICsyNTgzLDE3IEBAIEpTVmFsdWUgKkNsYXVz
ZUxpc3ROb2RlOjpldmFsdWF0ZShFeGVjU3QKICAgcmV0dXJuIDA7CiB9CiAKLS8vIEVDTUEgMTIu
MTEKLXZvaWQgQ2xhdXNlTGlzdE5vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMp
Ci17Ci0gIGZvciAoQ2xhdXNlTGlzdE5vZGUgKm4gPSB0aGlzOyBuOyBuID0gbi0+bmV4dC5nZXQo
KSkKLSAgICBpZiAobi0+Y2xhdXNlKQotICAgICAgbi0+Y2xhdXNlLT5wcm9jZXNzVmFyRGVjbHMo
ZXhlYyk7Ci19Ci0KLXZvaWQgQ2xhdXNlTGlzdE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gIGZvciAoQ2xhdXNlTGlzdE5vZGUqIG4gPSB0aGlzOyBuOyBuID0gbi0+
bmV4dC5nZXQoKSkKLSAgICBpZiAobi0+Y2xhdXNlKQotICAgICAgbi0+Y2xhdXNlLT5wcm9jZXNz
RnVuY0RlY2woZXhlYyk7Ci19Ci0KIHZvaWQgQ2xhdXNlTGlzdE5vZGU6OmJyZWFrQ3ljbGUoKSAK
IHsgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgQ2xhdXNlTGlzdE5vZGU6OnJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBj
bGF1c2UpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUJsb2NrTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBDYXNlQmxvY2tOb2RlOjpDYXNlQmxvY2tOb2RlKENsYXVzZUxp
c3ROb2RlICpsMSwgQ2FzZUNsYXVzZU5vZGUgKmQsCkBAIC0yMjkyLDI0ICsyNjg2LDExIEBAIENv
bXBsZXRpb24gQ2FzZUJsb2NrTm9kZTo6ZXZhbEJsb2NrKEV4ZWMKICAgcmV0dXJuIENvbXBsZXRp
b24oTm9ybWFsKTsKIH0KIAotdm9pZCBDYXNlQmxvY2tOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhl
Y1N0YXRlICpleGVjKQordm9pZCBDYXNlQmxvY2tOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCiB7Ci0gIGlmIChsaXN0MSkKLSAgICBsaXN0MS0+cHJvY2Vzc1ZhckRlY2xz
KGV4ZWMpOwotICBpZiAoZGVmKQotICAgIGRlZi0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotICBp
ZiAobGlzdDIpCi0gICAgbGlzdDItPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLX0KLQotdm9pZCBD
YXNlQmxvY2tOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKiBleGVjKQotewotICBpZiAo
bGlzdDEpCi0gICBsaXN0MS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOwotICBpZiAoZGVmKQotICAg
IGRlZi0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOwotICBpZiAobGlzdDIpCi0gICAgbGlzdDItPnBy
b2Nlc3NGdW5jRGVjbChleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBsaXN0MSk7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZGVmKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBsaXN0Mik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBT
d2l0Y2hOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzIyLDIz
ICsyNzAzLDE3IEBAIENvbXBsZXRpb24gU3dpdGNoTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUKICAg
SlNWYWx1ZSAqdiA9IGV4cHItPmV2YWx1YXRlKGV4ZWMpOwogICBLSlNfQ0hFQ0tFWENFUFRJT04K
IAotICBleGVjLT5jb250ZXh0KCktPnB1c2hTd2l0Y2goKTsKICAgQ29tcGxldGlvbiByZXMgPSBi
bG9jay0+ZXZhbEJsb2NrKGV4ZWMsdik7Ci0gIGV4ZWMtPmNvbnRleHQoKS0+cG9wU3dpdGNoKCk7
CiAKLSAgaWYgKChyZXMuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIGxzLmNvbnRhaW5zKHJlcy50
YXJnZXQoKSkpCisgIGlmICgocmVzLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiAocmVzLnRhcmdl
dCgpID09IHRoaXMpKQogICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwgcmVzLnZhbHVlKCkp
OwogICByZXR1cm4gcmVzOwogfQogCi12b2lkIFN3aXRjaE5vZGU6OnByb2Nlc3NWYXJEZWNscyhF
eGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGJsb2NrLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Ci19Ci0K
LXZvaWQgU3dpdGNoTm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQg
U3dpdGNoTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBibG9j
ay0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4
cHIpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGJsb2NrKTsKIH0KIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExhYmVsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTIzNDYsMTkgKzI3MjEsMTYgQEAgdm9pZCBTd2l0Y2hOb2RlOjpw
cm9jZXNzRnVuY0RlY2woRXhlY1N0YQogLy8gRUNNQSAxMi4xMgogQ29tcGxldGlvbiBMYWJlbE5v
ZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKQogewotICBpZiAoIWV4ZWMtPmNvbnRleHQoKS0+
c2VlbkxhYmVscygpLT5wdXNoKGxhYmVsKSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0
aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiRHVwbGljYXRlZCBsYWJlbCAlcyBmb3VuZC4iLCBsYWJl
bCk7CiAgIENvbXBsZXRpb24gZSA9IHN0YXRlbWVudC0+ZXhlY3V0ZShleGVjKTsKLSAgZXhlYy0+
Y29udGV4dCgpLT5zZWVuTGFiZWxzKCktPnBvcCgpOwogCi0gIGlmICgoZS5jb21wbFR5cGUoKSA9
PSBCcmVhaykgJiYgKGUudGFyZ2V0KCkgPT0gbGFiZWwpKQorICBpZiAoKGUuY29tcGxUeXBlKCkg
PT0gQnJlYWspICYmIChlLnRhcmdldCgpID09IHRoaXMpKQogICAgIHJldHVybiBDb21wbGV0aW9u
KE5vcm1hbCwgZS52YWx1ZSgpKTsKICAgcmV0dXJuIGU7CiB9CiAKLXZvaWQgTGFiZWxOb2RlOjpw
cm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBMYWJlbE5vZGU6OnJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgc3RhdGVtZW50LT5wcm9jZXNzVmFyRGVj
bHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50KTsKIH0KIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRocm93Tm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNzUsNiArMjc0NywxMSBAQCBDb21wbGV0aW9u
IFRocm93Tm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiAgIHJldHVybiBDb21wbGV0aW9uKFRocm93
LCB2KTsKIH0KIAordm9pZCBUaHJvd05vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlz
aXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRyeU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMi4xNApAQCAtMjQwMSwxMyArMjc3OCwxNyBA
QCBDb21wbGV0aW9uIFRyeU5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICplCiAgIHJldHVybiBjOwog
fQogCi12b2lkIFRyeU5vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCit2b2lk
IFRyeU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgdHJ5Qmxv
Y2stPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLSAgaWYgKGNhdGNoQmxvY2spCi0gICAgY2F0Y2hC
bG9jay0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotICBpZiAoZmluYWxseUJsb2NrKQotICAgIGZp
bmFsbHlCbG9jay0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICAgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgdHJ5QmxvY2spOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgY2F0Y2hC
bG9jayk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBmaW5hbGx5QmxvY2spOworfQor
Cit2b2lkIFRyeU5vZGU6OnJlY3Vyc2VWaXNpdE5vbkNhdGNoKE5vZGVWaXNpdG9yKiB2aXNpdG9y
KQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdHJ5QmxvY2spOworICAgIHJlY3Vy
c2VWaXNpdExpbmsodmlzaXRvciwgZmluYWxseUJsb2NrKTsgLy8jIyMgY2hlY2sgdGhpcz8KIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBhcmFtZXRlck5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI0MjMsMjYgKzI4MDQsODAgQEAgdm9pZCBQ
YXJhbWV0ZXJOb2RlOjpicmVha0N5Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgUGFy
YW1ldGVyTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbmV4dCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoU291cmNlRWxlbWVudHNO
b2RlICpzKQogICAgIDogQmxvY2tOb2RlKHMpCiAgICAgLCBtX3NvdXJjZVVSTChMZXhlcjo6Y3Vy
cigpLT5zb3VyY2VVUkwoKSkKICAgICAsIG1fc291cmNlSWQoUGFyc2VyOjpzaWQpCisgICAgLCBt
X2J1aWx0U3ltYm9sTGlzdChmYWxzZSkKIHsKIAogICBzZXRMb2MoLTEsIC0xKTsKIH0KIAotdm9p
ZCBGdW5jdGlvbkJvZHlOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlICpleGVjKQordm9p
ZCBGdW5jdGlvbkJvZHlOb2RlOjphZGRWYXJEZWNsKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBp
bnQgYXR0ciwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChzb3VyY2UpCi0gICAgICAgIHNv
dXJjZS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOworICAvLyBUaGVyZSBpcyBvbmUgbmFzdHkgc3Bl
Y2lhbCBjYXNlOiBpZ25vcmUgYSAndmFyJyBkZWNsYXJhdGlvbiBvZiAnYXJndW1lbnRzJzsKKyAg
Ly8gaXQgZWZmZWN0aXZlbHkgZG9lc24ndCBkbyBhbnl0aGluZyBzaW5jZSB0aGUgbWFnaWMgJ2Fy
Z3VtZW50cycgaXMgYWxyZWFkeSAKKyAgLy8gaW4gc2NvcGUgYW55d2F5LCBhbmQgaWYgd2UgYWxs
b2NhdGVkIGEgbG9jYWwsIHdlIHdvdWxkIGhhdmUgdG8gd29ycnkgYWJvdXQKKyAgLy8ga2VlcGlu
ZyB0cmFjayBvZiB3aGV0aGVyIGl0IHdhcyBpbml0aWFsaXplZCBvciBub3Qgb24gd2hhdCBpcyBz
dXBwb3NlZCB0byBiZSB0aGUgCisgIC8vIGZhc3QgcGF0aC4gU28gd2UganVzdCBtYWtlIHRoaXMg
Z28gdGhyb3VnaCB0aGUgcHJvcGVydHkgbWFwIGluc3RlYWQuCisgIC8vIE5vdGUgdGhhdCB0aGlz
IGRvZXMgbm90IG1hdHRlciBmb3IgcGFyYW1ldGVycyBvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMs
CisgIC8vIHNpbmNlIHRob3NlIG92ZXJ3cml0ZSB0aGUgbWFnaWMgJ2FyZ3VtZW50cycgYW55d2F5
LgorICBpZiAoaWRlbnQgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKKyAgICBy
ZXR1cm47CisKKyAgKHZvaWQpIGFkZFN5bWJvbChpZGVudCwgYXR0cik7Cit9CisKK3ZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6YWRkRnVuY0RlY2woY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBh
dHRyLCBGdW5jRGVjbE5vZGUqIGZ1bmNEZWNsKQoreworICAodm9pZCkgYWRkU3ltYm9sKGlkZW50
LCBhdHRyLCBmdW5jRGVjbCk7Cit9CisKK2ludCBGdW5jdGlvbkJvZHlOb2RlOjphZGRTeW1ib2wo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBmbGFncywgRnVuY0RlY2xOb2RlKiBmdW5jRGVj
bCkKK3sKKyAgLy8gV2UgZ2V0IHN5bWJvbHMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBpbiAxMC4x
LjMsIGJ1dCBzb21ldGltZXMKKyAgLy8gdGhlIGxhdGVyIG9uZXMgYXJlIHN1cHBvc2VkIHRvIGxv
c2UuIFRoaXMgLW1vc3RseS0gZG9lcyBub3QgCisgIC8vIG1hdHRlciBmb3IgdXMgLS0tIHdlIHBy
aW1hcmlseSBjb25jZXJuIG91cnNlbHZlcyB3aXRoIG5hbWUvSUQKKyAgLy8gbWFwcGluZywgYnV0
IHRoZXJlIGlzIGFuIGlzc3VlIG9mIGF0dHJpYnV0ZXMgYW5kIGZ1bmNEZWNsJ3MuCisgIC8vIEhv
d2V2ZXIsIHRoZSBvbmx5IGZsYWcgdGhhdCBtYXR0ZXJzIGhlcmUgaXMgUmVhZE9ubHkgLS0gCisg
IC8vIGV2ZXJ5dGhpbmcgZWxzZSBqdXN0IGhhcyBEb250RGVsZXRlIHNldDsgYW5kIGl0J3MgZnJv
bSBjb25zdCwgCisgIC8vIHNvIHdlIGNhbiBqdXN0IGlnbm9yZSBpdCBvbiByZXBldGl0aW9ucywg
c2luY2UgdmFyL2NvbnN0IHNob3VsZCBsb3NlCisgIC8vIGFuZCBhcmUgYXQgdGhlIGVuZC4KKyAg
Ly8KKyAgLy8gQW5kIGZvciBmdW5jRGVjbCwgc2luY2UgZnVuY3Rpb25zIHdpbiBvdmVyIGV2ZXJ5
dGhpbmcsIHdlIGFsd2F5cyBzZXQgaXQgaWYgbm9uLXplcm8KKyAgaWYgKEpTVmFsdWUqIG9sZElk
VmFsID0gbV9zeW1ib2xUYWJsZS5nZXQoaWRlbnQpKSB7CisgICAgaW50IG9sZElkID0gKGludClv
bGRJZFZhbC0+Z2V0TnVtYmVyKCk7CisgICAgaWYgKGZ1bmNEZWNsKQorICAgICAgbV9zeW1ib2xM
aXN0W29sZElkIC0gMV0uZnVuY0RlY2wgPSBmdW5jRGVjbDsKKyAgICByZXR1cm4gb2xkSWQ7Cisg
IH0KKyAgICAKKyAgaW50IGlkID0gbV9zeW1ib2xMaXN0LnNpemUoKSArIDE7ICAgICAgICAgLy9G
aXJzdCBlbnRyeSBnZXRzIDEsIGV0Yy4KKyAgbV9zeW1ib2xUYWJsZS5wdXQoaWRlbnQsIGpzTnVt
YmVyKGlkKSwgMCk7CisgIG1fc3ltYm9sTGlzdC5hcHBlbmQgKFN5bWJvbChpZGVudCwgZmxhZ3Ms
IGZ1bmNEZWNsKSk7CisgIHJldHVybiBpZDsKK30KKworaW50IEZ1bmN0aW9uQm9keU5vZGU6Omxv
b2t1cFN5bWJvbElEKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworICBKU1ZhbHVl
KiB2YWwgPSBtX3N5bWJvbFRhYmxlLmdldChpZGVudCk7CisgIGlmICghdmFsKQorICAgIHJldHVy
biAtMTsKKyAgcmV0dXJuIChpbnQpIHZhbC0+Z2V0TnVtYmVyKCk7CiB9CiAKIHZvaWQgRnVuY3Rp
b25Cb2R5Tm9kZTo6YWRkUGFyYW0oY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gIG1fcGFy
YW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKGlkZW50KSk7CisgIGludCBpZCA9IGFkZFN5bWJvbChp
ZGVudCwgRG9udERlbGV0ZSk7CisgIG1fcGFyYW1MaXN0LmFwcGVuZChQYXJhbWV0ZXIoaWRlbnQs
IGlkKSk7CiB9CiAKIFVTdHJpbmcgRnVuY3Rpb25Cb2R5Tm9kZTo6cGFyYW1TdHJpbmcoKSBjb25z
dApAQCAtMjQ1OCw3ICsyODkzLDYgQEAgVVN0cmluZyBGdW5jdGlvbkJvZHlOb2RlOjpwYXJhbVN0
cmluZygpIAogICByZXR1cm4gczsKIH0KIAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRnVuY0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2
b2lkIEZ1bmNEZWNsTm9kZTo6YWRkUGFyYW1zKCkgCkBAIC0yNDcyLDcgKzI5MDYsMjggQEAgdm9p
ZCBGdW5jRGVjbE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjUwogewogICBDb250ZXh0ICpjb250
ZXh0ID0gZXhlYy0+Y29udGV4dCgpOwogCisgIC8vIFNlZSB3aGV0aGVyIHdlIGp1c3QgbmVlZCB0
byBmaWxsIGluIHRoZSBzeW1ib2wgdGFibGUsIAorICAvLyBvciBhY3R1YWxseSBmaWRkbGUgd2l0
aCBvYmplY3RzLgorICBpbnQgZmxhZ3MgPSBJbnRlcm5hbCB8IERvbnREZWxldGU7CisgIHN3aXRj
aCAoZXhlYy0+Y29udGV4dCgpLT5jb2RlVHlwZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvZGU6
CisgICAgICAvLyBJbnNpZGUgYSBmdW5jdGlvbiwganVzdCBuZWVkIHN5bWJvbCBpbmZvCisgICAg
ICBleGVjLT5jb250ZXh0KCktPmN1cnJlbnRCb2R5KCktPmFkZEZ1bmNEZWNsKGlkZW50LCBmbGFn
cywgdGhpcyk7CisgICAgICByZXR1cm47CisgICAgY2FzZSBFdmFsQ29kZToKKyAgICAgIC8vIGV2
YWwtaW5qZWN0ZWQgc3ltYm9scyBjYW4gYmUgZGVsZXRlZC4uLgorICAgICAgZmxhZ3MgJj0gfkRv
bnREZWxldGU7CisgICAgICAKKyAgICAgIC8vIGZhbGx0aHJvdWdoIGludGVudGlvbmFsCisgICAg
Y2FzZSBHbG9iYWxDb2RlOgorICAgICAgY29udGV4dC0+dmFyaWFibGVPYmplY3QoKS0+cHV0KGV4
ZWMsIGlkZW50LCBtYWtlRnVuY3Rpb25PYmplY3QoZXhlYyksIGZsYWdzKTsKKyAgfTsKK30KKwor
RnVuY3Rpb25JbXAqIEZ1bmNEZWNsTm9kZTo6bWFrZUZ1bmN0aW9uT2JqZWN0KEV4ZWNTdGF0ZSAq
ZXhlYykKK3sKICAgLy8gVE9ETzogbGV0IHRoaXMgYmUgYW4gb2JqZWN0IHdpdGggW1tDbGFzc11d
IHByb3BlcnR5ICJGdW5jdGlvbiIKKyAgQ29udGV4dCAqY29udGV4dCA9IGV4ZWMtPmNvbnRleHQo
KTsKICAgRnVuY3Rpb25JbXAgKmZ1bmMgPSBuZXcgRGVjbGFyZWRGdW5jdGlvbkltcChleGVjLCBp
ZGVudCwgYm9keS5nZXQoKSwgY29udGV4dC0+c2NvcGVDaGFpbigpKTsKIAogICBKU09iamVjdCAq
cHJvdG8gPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbk9iamVjdCgpLT5jb25z
dHJ1Y3QoZXhlYywgTGlzdDo6ZW1wdHkoKSk7CkBAIC0yNDgxLDE5ICsyOTM2LDcgQEAgdm9pZCBG
dW5jRGVjbE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjUwogCiAgIGZ1bmMtPnB1dChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihib2R5LT5udW1QYXJhbXMoKSks
IFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwogCi0gIC8vIEVDTUEgMTAuMi4yCi0gIGNv
bnRleHQtPnZhcmlhYmxlT2JqZWN0KCktPnB1dChleGVjLCBpZGVudCwgZnVuYywgSW50ZXJuYWwg
fCAoY29udGV4dC0+Y29kZVR5cGUoKSA9PSBFdmFsQ29kZSA/IDAgOiBEb250RGVsZXRlKSk7Ci0K
LSAgaWYgKGJvZHkpIHsKLSAgICAvLyBoYWNrIHRoZSBzY29wZSBzbyB0aGF0IHRoZSBmdW5jdGlv
biBnZXRzIHB1dCBhcyBhIHByb3BlcnR5IG9mIGZ1bmMsIGFuZCBpdCdzIHNjb3BlCi0gICAgLy8g
Y29udGFpbnMgdGhlIGZ1bmMgYXMgd2VsbCBhcyBvdXIgY3VycmVudCBzY29wZQotICAgIEpTT2Jq
ZWN0ICpvbGRWYXIgPSBjb250ZXh0LT52YXJpYWJsZU9iamVjdCgpOwotICAgIGNvbnRleHQtPnNl
dFZhcmlhYmxlT2JqZWN0KGZ1bmMpOwotICAgIGNvbnRleHQtPnB1c2hTY29wZShmdW5jKTsKLSAg
ICBib2R5LT5wcm9jZXNzRnVuY0RlY2woZXhlYyk7Ci0gICAgY29udGV4dC0+cG9wU2NvcGUoKTsK
LSAgICBjb250ZXh0LT5zZXRWYXJpYWJsZU9iamVjdChvbGRWYXIpOwotICB9CisgIHJldHVybiBm
dW5jOwogfQogCiBDb21wbGV0aW9uIEZ1bmNEZWNsTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKikK
QEAgLTI1MDEsNiArMjk0NCwxMiBAQCBDb21wbGV0aW9uIEZ1bmNEZWNsTm9kZTo6ZXhlY3V0ZShF
eGVjU3RhCiAgICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsKTsKIH0KIAordm9pZCBGdW5jRGVj
bE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNl
VmlzaXRMaW5rKHZpc2l0b3IsIHBhcmFtKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IGJvZHkpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0V4cHJO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDEzCkBAIC0y
NTM3LDYgKzI5ODYsMTIgQEAgSlNWYWx1ZSAqRnVuY0V4cHJOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dAogICByZXR1cm4gZnVuYzsKIH0KIAordm9pZCBGdW5jRXhwck5vZGU6OnJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHBh
cmFtKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGJvZHkpOworfQorCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU291cmNlRWxlbWVudHNOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBpbnQgU291cmNlRWxlbWVudHNOb2RlOjpjb3VudCA9IDA7CkBA
IC0yNTY3LDEwICszMDIyLDEzIEBAIENvbXBsZXRpb24gU291cmNlRWxlbWVudHNOb2RlOjpleGVj
dXRlKEUKICAgCiAgIGZvciAoU291cmNlRWxlbWVudHNOb2RlICpuID0gbmV4dC5nZXQoKTsgbjsg
biA9IG4tPm5leHQuZ2V0KCkpIHsKICAgICBDb21wbGV0aW9uIGMyID0gbi0+bm9kZS0+ZXhlY3V0
ZShleGVjKTsKLSAgICBpZiAoYzIuY29tcGxUeXBlKCkgIT0gTm9ybWFsKQotICAgICAgcmV0dXJu
IGMyOwotICAgIC8vIFRoZSBzcGVjIHNheXMgdG8gcmV0dXJuIGMyIGhlcmUsIGJ1dCBpdCBzZWVt
cyB0aGF0IG1vemlsbGEgcmV0dXJucyBjMSBpZgotICAgIC8vIGMyIGRvZXNuJ3QgaGF2ZSBhIHZh
bHVlCisgICAgaWYgKGMyLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkgeworICAgICAgICBpZiAoYzIu
Y29tcGxUeXBlKCkgPT0gVGhyb3cgfHwgYzIuaXNWYWx1ZUNvbXBsZXRpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybiBjMjsKKworICAgICAgICByZXR1cm4gQ29tcGxldGlvbihjMi5jb21wbFR5cGUo
KSwgYzEudmFsdWUoKSwgYzIudGFyZ2V0KCkpOworICAgIH0KKwogICAgIGlmIChjMi52YWx1ZSgp
KQogICAgICAgYzEgPSBjMjsKICAgfQpAQCAtMjU3OSwyMyArMzAzNywyOSBAQCBDb21wbGV0aW9u
IFNvdXJjZUVsZW1lbnRzTm9kZTo6ZXhlY3V0ZShFCiB9CiAKIC8vIEVDTUEgMTQKLXZvaWQgU291
cmNlRWxlbWVudHNOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlICpleGVjKQotewotICBm
b3IgKFNvdXJjZUVsZW1lbnRzTm9kZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgpKQot
ICAgIG4tPm5vZGUtPnByb2Nlc3NGdW5jRGVjbChleGVjKTsKLX0KLQotdm9pZCBTb3VyY2VFbGVt
ZW50c05vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGZvciAoU291
cmNlRWxlbWVudHNOb2RlICpuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0gICAgbi0+
bm9kZS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotfQogCiB2b2lkIFNvdXJjZUVsZW1lbnRzTm9k
ZTo6YnJlYWtDeWNsZSgpIAogeyAKICAgICBuZXh0ID0gMDsKIH0KIAordm9pZCBTb3VyY2VFbGVt
ZW50c05vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5vZGUpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgbmV4dCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFt
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIFByb2dyYW1Ob2RlOjpQ
cm9ncmFtTm9kZShTb3VyY2VFbGVtZW50c05vZGUgKnMpIDogRnVuY3Rpb25Cb2R5Tm9kZShzKQog
ewogfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXJyb3JOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb21wbGV0aW9uIEVycm9yTm9kZTo6
ZXhlY3V0ZShFeGVjU3RhdGUgKmV4ZWMpCit7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yQ29tcGxl
dGlvbihleGVjLCBTeW50YXhFcnJvciwgbWVzc2FnZS5jc3RyaW5nKCkuY19zdHIoKSk7Cit9CisK
K30gLy9uYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkocmV2aXNpb24gMjQ1NTgpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDgg
QEAKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQog
ICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3NpbSBPcmxv
dmljaCAobWFrc2ltQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndh
cmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
Nyw4ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwu
aCIKKyNpbmNsdWRlICJyZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvTGlzdFJlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiAjaWYg
UExBVEZPUk0oWDg2KSAmJiBDT01QSUxFUihHQ0MpCiAjZGVmaW5lIEtKU19GQVNUX0NBTEwgX19h
dHRyaWJ1dGVfXygocmVncGFybSgzKSkpCkBAIC00NCwxMiArNDgsMTkgQEAKIAogbmFtZXNwYWNl
IEtKUyB7CiAKKyAgY2xhc3MgU3RhdGljVmFyU3RhdGVtZW50Tm9kZTsKICAgY2xhc3MgUHJvZ3Jh
bU5vZGU7CiAgIGNsYXNzIFByb3BlcnR5TmFtZU5vZGU7CiAgIGNsYXNzIFByb3BlcnR5TGlzdE5v
ZGU7CiAgIGNsYXNzIFJlZ0V4cDsKICAgY2xhc3MgU291cmNlRWxlbWVudHNOb2RlOwogICBjbGFz
cyBTb3VyY2VTdHJlYW07CisgIGNsYXNzIEZ1bmNEZWNsTm9kZTsKKyAgY2xhc3MgRnVuY3Rpb25C
b2R5Tm9kZTsKKyAgY2xhc3MgTm9kZTsKKyAgCisgIGNsYXNzIFZhckRlY2xWaXNpdG9yOworICBj
bGFzcyBGdW5jRGVjbFZpc2l0b3I7CiAKICAgZW51bSBPcGVyYXRvciB7IE9wRXF1YWwsCiAgICAg
ICAgICAgICAgICAgICBPcEVxRXEsCkBAIC04Miw2ICs5MywyMSBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgICAgICAgICAgICAgIE9wSW5zdGFuY2VPZgogICB9OwogCisgIGNsYXNzIE5vZGVWaXNp
dG9yIHsKKyAgcHVibGljOgorICAgIC8qKgorICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgb3Zl
cnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHByb2Nlc3Mgbm9kZXMsIGFuZCAKKyAgICAgcGVyaGFw
cyByZXR1cm4gcG9pbnRlcnMgZm9yIHJlcGxhY2VtZW50IG5vZGVzLiBJZiB0aGUgbm9kZSBzaG91
bGQgbm90IGJlIAorICAgICBjaGFuZ2VkLCByZXR1cm4gMC4gT3RoZXJ3aXNlLCByZXR1cm4gdGhl
IHJlcGxhY2VtZW50IG5vZGUuCisKKyAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYXNr
cyB0aGUgbm9kZSB0byB2aXNpdCBpdHMga2lkcywgYW5kIGRvIAorICAgICByZXBsYWNlbWVudHMg
b24gdGhlbSBpZiBuZWVkZWQsIGJ1dCBkb2VzIG5vdCBjaGFuZ2UgYW55dGhpbmcgZm9yIHRoaXMg
bm9kZQorICAgICovCisgICAgdmlydHVhbCB+Tm9kZVZpc2l0b3IoKTsKKworICAgIHZpcnR1YWwg
Tm9kZSogdmlzaXQoTm9kZSogbm9kZSkgS0pTX0ZBU1RfQ0FMTDsKKyAgfTsKKwogICBjbGFzcyBO
b2RlIHsKICAgcHVibGljOgogICAgIE5vZGUoKSBLSlNfRkFTVF9DQUxMOwpAQCAtOTAsNyArMTE2
LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0ZShFeGVj
U3RhdGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgPSAwOwogICAgIFVTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1Zh
ckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEwge30KICAgICBpbnQgbGluZU5vKCkgY29u
c3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2xpbmU7IH0KIAogICAgIHZvaWQgcmVmKCkgS0pT
X0ZBU1RfQ0FMTDsKQEAgLTEwMSwxNyArMTI2LDY3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZp
cnR1YWwgTm9kZSAqbm9kZUluc2lkZUFsbFBhcmVucygpIEtKU19GQVNUX0NBTEw7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NB
TEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJBY2Nlc3NOb2RlKCkg
Y29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0dyb3VwTm9kZSgpIGNv
bnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNU
cnlOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpbnRyb2R1Y2VzTmV3U3RhdGljU2NvcGUgKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbnRyb2R1Y2VzTmV3RHluYW1pY1Nj
b3BlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2hTdGF0ZW1lbnQoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmFyU3RhdGVt
ZW50KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBp
bnRyb2R1Y2VzTmV3U2NvcGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGludHJvZHVj
ZXNOZXdTdGF0aWNTY29wZSgpIHx8IGludHJvZHVjZXNOZXdEeW5hbWljU2NvcGUoKTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFTVF9DQUxMIHsgfQogCi0gIHByb3Rl
Y3RlZDoKKyAgICAvLyBQcm9jZXNzZXMgYWxsIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSBkZWNsYXJh
dGlvbnMgYmVsb3cgdGhpcyBub2RlLCAKKyAgICAvLyBhZGRpbmcgdGhlbSB0byBzeW1ib2wgdGFi
bGUgb3IgdGhlIGN1cnJlbnQgb2JqZWN0IGRlcGVuZGluZyBvbiB0aGUgCisgICAgLy8gZXhlY3V0
aW9uIGNvbnRleHQuLgorICAgIHZvaWQgcHJvY2Vzc0RlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CisKKyAgICAvKgorICAgICAgSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIHNo
b3VsZCBjYWxsIHZpc2l0b3ItPnZpc2l0IG9uIGFsbCB0aGUgCisgICAgICBjaGlsZHJlbiBub2Rl
cywgYW5kIGlmIHRoZXkgcmV0dXJuIHZhbHVlIGlzIG5vbi0wLCB1cGRhdGUgdGhlIGxpbmsgdG8g
dGhlIGNoaWxkLgorICAgICAgVGhlIHJlY3Vyc2VWaXNpdExpbmsgaGVscGVyIHRha2VzIGNhcmUg
b2YgdGhpcworICAgICovCisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqIC8qdmlzaXRvciovKSBLSlNfRkFTVF9DQUxMIHt9CisKKyAgICAvKgorICAgICAgTm9kZXMg
dGhhdCBjYW4gYmUgb3B0aW1pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIG51bWVyaWMgYmluZGlu
ZyB0byAKKyAgICAgIGxvY2FscyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAgKi8K
KyAgICB2aXJ0dWFsIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBzdGF0aWMgdm9pZCByZWN1cnNlVmlzaXRMaW5rKE5vZGVWaXNpdG9yKiB2
aXNpdG9yLCBSZWZQdHI8VD4mIGxpbmspCisgICAgeworICAgICAgICBpZiAoIWxpbmspCisgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIFQqIG5ld0xpbmsgPSBzdGF0aWNfY2FzdDxUKj4odmlz
aXRvci0+dmlzaXQobGluay5nZXQoKSkpOworICAgICAgICBpZiAobmV3TGluaykKKyAgICAgICAg
ICBsaW5rID0gbmV3TGluazsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IHN0YXRpYyB2b2lkIHJlY3Vyc2VWaXNpdExpbmsoTm9kZVZpc2l0b3IqIHZpc2l0b3IsIExpc3RS
ZWZQdHI8VD4mIGxpbmspCisgICAgeworICAgICAgICBpZiAoIWxpbmspCisgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFQqIG5ld0xpbmsgPSBzdGF0aWNfY2FzdDxUKj4odmlzaXRvci0+dmlz
aXQobGluay5nZXQoKSkpOworICAgICAgICBpZiAobmV3TGluaykKKyAgICAgICAgICBsaW5rID0g
bmV3TGluazsKKyAgICB9CisKICAgICBDb21wbGV0aW9uIGNyZWF0ZUVycm9yQ29tcGxldGlvbihF
eGVjU3RhdGUgKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFyICptc2cpIEtKU19GQVNUX0NBTEw7CiAg
ICAgQ29tcGxldGlvbiBjcmVhdGVFcnJvckNvbXBsZXRpb24oRXhlY1N0YXRlICosIEVycm9yVHlw
ZSwgY29uc3QgY2hhciAqbXNnLCBjb25zdCBJZGVudGlmaWVyICYpIEtKU19GQVNUX0NBTEw7CiAK
KyAgICBOb2RlKiBjcmVhdGVFcnJvck5vZGUoRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIgKm1zZyk7
CisgICAgTm9kZSogY3JlYXRlRXJyb3JOb2RlKEVycm9yVHlwZSBlLCBjb25zdCBjaGFyICptc2cs
IGNvbnN0IElkZW50aWZpZXIgJmlkZW50KTsKKwogICAgIEpTVmFsdWUgKnRocm93RXJyb3IoRXhl
Y1N0YXRlICosIEVycm9yVHlwZSwgY29uc3QgY2hhciAqbXNnKSBLSlNfRkFTVF9DQUxMOwogICAg
IEpTVmFsdWUqIHRocm93RXJyb3IoRXhlY1N0YXRlICosIEVycm9yVHlwZSwgY29uc3QgY2hhciog
bXNnLCBjb25zdCBjaGFyKikgS0pTX0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVlICp0aHJvd0Vycm9y
KEV4ZWNTdGF0ZSAqLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIgKm1zZywgSlNWYWx1ZSAqLCBOb2Rl
ICopIEtKU19GQVNUX0NBTEw7CkBAIC0xMjUsMTMgKzIwMCwzMyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICB2b2lkIGhhbmRsZUV4Y2VwdGlvbihFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAg
IHZvaWQgaGFuZGxlRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUqKSBLSlNfRkFTVF9DQUxM
OwogCitwcm90ZWN0ZWQ6CisgICAgLyogTm9kZXMgdGhhdCBjYW4gZG8gc2VtYW50aWMgY2hlY2tp
bmcgc2hvdWxkIG92ZXJyaWRlIHRoaXMsCisgICAgICAgYW5kIHJldHVybiBhbiBhcHByb3ByaWF0
ZSBlcnJvciBub2RlIGlmIGFwcHJvcHJpYXRlLiBUaGUgcmVpbXBsZW1lbnRhdGlvbnMKKyAgICAg
ICBzaG91bGQgY2FsbCB0aGUgcGFyZW50IGNsYXNzJ3MgY2hlY2tTZW1hbnRpY3MgbWV0aG9kIGF0
IHBvaW50IHdoZXJlCisgICAgICAgcmVjdXJzaW9uIHNob3VsZCBvY2N1cgorICAgICovCisgICAg
ZnJpZW5kIGNsYXNzIFNlbWFudGljQ2hlY2tlcjsKKyAgICB2aXJ0dWFsIE5vZGUqIGNoZWNrU2Vt
YW50aWNzKFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2VyKSBLSlNfRkFTVF9DQUxMOwor
CiAgICAgaW50IG1fbGluZTsKICAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1Zh
ckRlY2woRXhlY1N0YXRlKiBzdGF0ZSkgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogc3RhdGUpIEtKU19GQVNUX0NBTEw7CisgICAgZnJp
ZW5kIGNsYXNzIFZhckRlY2xWaXNpdG9yOworICAgIGZyaWVuZCBjbGFzcyBGdW5jRGVjbFZpc2l0
b3I7CisKICAgICAvLyBkaXNhbGxvdyBhc3NpZ25tZW50CiAgICAgTm9kZSYgb3BlcmF0b3I9KGNv
bnN0IE5vZGUmKSBLSlNfRkFTVF9DQUxMOwogICAgIE5vZGUoY29uc3QgTm9kZSAmb3RoZXIpIEtK
U19GQVNUX0NBTEw7CiAgIH07CiAKKyAgY2xhc3MgTG9jYXRpb25Ob2RlIDogcHVibGljIE5vZGUg
eworICBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIFJlZmVyZW5jZSBldmFsdWF0ZVJl
ZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIEtKU19GQVNUX0NBTEwgPSAwOworICB9OworCiAgIGNs
YXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKICAgICBTdGF0ZW1l
bnROb2RlKCkgS0pTX0ZBU1RfQ0FMTDsKQEAgLTE0MCwxMCArMjM1LDEyIEBAIG5hbWVzcGFjZSBL
SlMgewogICAgIGludCBsYXN0TGluZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9s
YXN0TGluZTsgfQogICAgIGJvb2wgaGl0U3RhdGVtZW50KEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKSBLSlNf
RkFTVF9DQUxMID0gMDsKLSAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyICZpZCkg
S0pTX0ZBU1RfQ0FMTCB7IGxzLnB1c2goaWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NG
dW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6Ci0gICAgTGFi
ZWxTdGFjayBsczsKKyAgICAvKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGNoZWNrU2VtYW50aWNz
IGFwcGxpZXMgdGhlIGFjY3VtdWxhdGVkIGxhYmVscyB0bworICAgICAgIHRoaXMgc3RhdGVtZW50
LCBtYW5hZ2VzIHRoZSB0YXJnZXRzIGZvciBsYWJlbGxlc3MgYnJlYWsgYW5kIGNvbnRpbnVlLAor
ICAgICAgIGFuZCByZWN1cnNlcy4KKyAgICAqLworICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1h
bnRpY3MoU2VtYW50aWNDaGVja2VyKiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAg
IHByaXZhdGU6CiAgICAgSlNWYWx1ZSAqZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TCB7IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CiAgICAgaW50IG1fbGFzdExpbmU7CkBAIC0yMDAs
MTggKzI5NywzOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgfTsKIAotICBjbGFzcyBSZXNv
bHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgVmFyQWNjZXNzTm9kZSA6IHB1YmxpYyBM
b2NhdGlvbk5vZGUgewogICBwdWJsaWM6Ci0gICAgUmVzb2x2ZU5vZGUoY29uc3QgSWRlbnRpZmll
ciAmcykgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KHMpIHsgfQotICAgIEpTVmFsdWUqIGV2YWx1YXRl
KEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisgICAgVmFyQWNjZXNzTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBzKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQocykge30KKyAgICB2aXJ0dWFsIE5vZGUq
IG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBu
b2RlKSBLSlNfRkFTVF9DQUxMOworCisgICAgdmlydHVhbCBib29sIGlzVmFyQWNjZXNzTm9kZSgp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwg
SlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFs
IFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIEtKU19GQVNUX0NB
TEw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWRlbnQ7IH0KKyAgICAvLyBS
ZXR1cm5zIHRoZSBJRCBvZiB0aGUgbG9jYWwgdGhpcyBpcyBib3VuZCB0bywgCisgICAgLy8gb3Ig
LTEgaWYgbm9uLWxvY2FsCisgICAgaW50IGxvY2FsSUQoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY0Jv
ZHkpIEtKU19GQVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICBJZGVudGlmaWVyIGlkZW50Owor
ICB9OwogCisgIGNsYXNzIExvY2FsVmFyQWNjZXNzTm9kZSA6IHB1YmxpYyBWYXJBY2Nlc3NOb2Rl
IHsKKyAgcHVibGljOgorICAgIExvY2FsVmFyQWNjZXNzTm9kZShjb25zdCBJZGVudGlmaWVyJiBz
LCB1aW50MzJfdCBpKSBLSlNfRkFTVF9DQUxMIDogVmFyQWNjZXNzTm9kZShzKSwgaW5kZXgoaSkg
e30KKyAgICAKKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7CisgICAgdmlydHVhbCBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0
YXRlKiBleGVjKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgotICAgIElkZW50aWZpZXIgaWRl
bnQ7CisgICAgdWludDMyX3QgaW5kZXg7CisgIH07CisKKyAgY2xhc3MgTm9uTG9jYWxWYXJBY2Nl
c3NOb2RlIDogcHVibGljIFZhckFjY2Vzc05vZGUgeworICBwdWJsaWM6CisgICAgTm9uTG9jYWxW
YXJBY2Nlc3NOb2RlKGNvbnN0IElkZW50aWZpZXImIHMpIEtKU19GQVNUX0NBTEwgOiBWYXJBY2Nl
c3NOb2RlKHMpIHt9CisKKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVuY2Uo
RXhlY1N0YXRlKiBleGVjKSBLSlNfRkFTVF9DQUxMOwogICB9OwogCiAgIGNsYXNzIEdyb3VwTm9k
ZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTIyMSw2ICszMzksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICB2aXJ0dWFsIE5vZGUgKm5vZGVJbnNpZGVBbGxQYXJlbnMoKSBLSlNfRkFTVF9DQUxMOwogICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OwogICAgIHZpcnR1YWwgYm9vbCBpc0dyb3VwTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGdy
b3VwOwogICB9OwpAQCAtMjM1LDYgKzM1NCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAg
IFBhc3NSZWZQdHI8RWxlbWVudE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJl
dHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pT
X0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2
aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBcnJh
eU5vZGU7CiAgICAgTGlzdFJlZlB0cjxFbGVtZW50Tm9kZT4gbmV4dDsKQEAgLTI1MSw2ICszNzEs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIDogZWxlbWVudChlbGUtPm5leHQucmVsZWFzZSgp
KSwgZWxpc2lvbihlbGkpLCBvcHQodHJ1ZSkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShlbGVt
ZW50LmdldCgpKTsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAq
dmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudE5v
ZGU+IGVsZW1lbnQ7CiAgICAgaW50IGVsaXNpb247CkBAIC0yNzYsNiArMzk3LDcgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwog
ICBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9wZXJ0eU5hbWVOb2RlPiBuYW1lOwogICAgIFJlZlB0
cjxOb2RlPiBhc3NpZ247CkBAIC0yOTMsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7
CiAgICAgUGFzc1JlZlB0cjxQcm9wZXJ0eUxpc3ROb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gbmV4dC5yZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtD
eWNsZSgpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2Rl
VmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0TGl0ZXJhbE5vZGU7CiAgICAgUmVmUHRyPFByb3BlcnR5Tm9kZT4gbm9kZTsK
QEAgLTMwNSwzOCArNDI4LDQxIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIE9iamVjdExpdGVyYWxO
b2RlKFByb3BlcnR5TGlzdE5vZGUgKmwpIEtKU19GQVNUX0NBTEwgOiBsaXN0KGwtPm5leHQucmVs
ZWFzZSgpKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGxpc3QuZ2V0KCkpOyB9CiAgICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9wZXJ0eUxpc3ROb2RlPiBsaXN0OwogICB9Owog
Ci0gIGNsYXNzIEJyYWNrZXRBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIEJy
YWNrZXRBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTG9jYXRpb25Ob2RlIHsKICAgcHVibGljOgogICAg
IEJyYWNrZXRBY2Nlc3Nvck5vZGUoTm9kZSAqZTEsIE5vZGUgKmUyKSBLSlNfRkFTVF9DQUxMIDog
ZXhwcjEoZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOworICAgIFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogCi0gICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24o
KSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVl
OyB9CiAgICAgTm9kZSAqYmFzZSgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZXhwcjEuZ2V0KCk7
IH0KICAgICBOb2RlICpzdWJzY3JpcHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGV4cHIyLmdl
dCgpOyB9CiAKLSAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNr
ZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KKyAg
cHJvdGVjdGVkOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhw
cjI7CiAgIH07CiAKLSAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIDogcHVibGljIE5vZGUgeworICBj
bGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTG9jYXRpb25Ob2RlIHsKICAgcHVibGljOgog
ICAgIERvdEFjY2Vzc29yTm9kZShOb2RlICplLCBjb25zdCBJZGVudGlmaWVyICZzKSBLSlNfRkFT
VF9DQUxMIDogZXhwcihlKSwgaWRlbnQocykgeyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVuY2Uo
RXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xv
Y2F0aW9uKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0
cnVlOyB9CiAgICAgTm9kZSAqYmFzZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZXhw
ci5nZXQoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIGlkZW50OyB9CiAKLSAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAg
SWRlbnRpZmllciBpZGVudDsKICAgfTsKQEAgLTM1Miw2ICs0NzgsOCBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPEFyZ3VtZW50TGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIEFyZ3VtZW50c05vZGU7CiAgICAgTGlzdFJlZlB0cjxBcmd1bWVudExp
c3ROb2RlPiBuZXh0OwpAQCAtMzY0LDggKzQ5MiwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBB
cmd1bWVudHNOb2RlKEFyZ3VtZW50TGlzdE5vZGUgKmwpIEtKU19GQVNUX0NBTEwKICAgICAgIDog
bGlzdChsLT5uZXh0LnJlbGVhc2UoKSkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShsaXN0Lmdl
dCgpKTsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
Ci0gICAgTGlzdCBldmFsdWF0ZUxpc3QoRXhlY1N0YXRlICpleGVjKSBLSlNfRkFTVF9DQUxMIHsg
cmV0dXJuIGxpc3QgPyBsaXN0LT5ldmFsdWF0ZUxpc3QoZXhlYykgOiBMaXN0KCk7IH0KKyAgICBM
aXN0IGV2YWx1YXRlTGlzdChFeGVjU3RhdGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
bGlzdCA/IGxpc3QtPmV2YWx1YXRlTGlzdChleGVjKSA6IExpc3Q6OmVtcHR5KCk7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtK
U19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPEFyZ3VtZW50TGlzdE5vZGU+IGxp
c3Q7CiAgIH07CkBAIC0zNzYsNiArNTA2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgTmV3RXhw
ck5vZGUoTm9kZSAqZSwgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSks
IGFyZ3MoYSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNf
RkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7
CiAgICAgUmVmUHRyPEFyZ3VtZW50c05vZGU+IGFyZ3M7CkBAIC0zODYsMTggKzUxNywyMCBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoTm9kZSAqZSwgQXJndW1l
bnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30KICAgICBKU1Zh
bHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPEFyZ3VtZW50
c05vZGU+IGFyZ3M7CiAgIH07CiAKLSAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBw
dWJsaWMgTm9kZSB7CisgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlZmVyZW5jZU5vZGUgOiBwdWJsaWMg
Tm9kZSB7CiAgIHB1YmxpYzoKLSAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBpLCBBcmd1bWVudHNOb2RlICphKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSksIGFy
Z3MoYSkge30KKyAgICBGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlKExvY2F0aW9uTm9kZSAqZSwg
QXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30KICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNU
X0NBTEw7CiAgIHByaXZhdGU6Ci0gICAgSWRlbnRpZmllciBpZGVudDsKKyAgICBSZWZQdHI8TG9j
YXRpb25Ob2RlPiBleHByOwogICAgIFJlZlB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOwogICB9Owog
CkBAIC00MDYsNiArNTM5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgRnVuY3Rpb25DYWxsQnJh
Y2tldE5vZGUoTm9kZSAqYiwgTm9kZSAqcywgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FM
TCA6IGJhc2UoYiksIHN1YnNjcmlwdChzKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1
YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVj
dGVkOgogICAgIFJlZlB0cjxOb2RlPiBiYXNlOwogICAgIFJlZlB0cjxOb2RlPiBzdWJzY3JpcHQ7
CkBAIC00MTYsNiArNTUwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIHB1YmxpYzoKICAgICBGdW5j
dGlvbkNhbGxQYXJlbkJyYWNrZXROb2RlKE5vZGUgKmIsIE5vZGUgKnMsIEFyZ3VtZW50c05vZGUg
KmEpIEtKU19GQVNUX0NBTEwgOiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShiLCBzLCBhKSB7fQog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOworICAgIC8vIEZJWE1FIC0gc2hvdWxkIGhhdmUgcmVjdXJzZSBvciBub3Q/CiAgIH07CiAK
ICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTQyMyw2ICs1
NTgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKE5vZGUgKmIs
IGNvbnN0IElkZW50aWZpZXIgJmksIEFyZ3VtZW50c05vZGUgKmEpIEtKU19GQVNUX0NBTEwgOiBi
YXNlKGIpLCBpZGVudChpKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVjdGVkOgogICAg
IFJlZlB0cjxOb2RlPiBiYXNlOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CkBAIC00MzMsMzcgKzU2
OSwxOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgogICAgIEZ1bmN0aW9uQ2FsbFBhcmVu
RG90Tm9kZShOb2RlICpiLCBjb25zdCBJZGVudGlmaWVyICZpLCBBcmd1bWVudHNOb2RlICphKSBL
SlNfRkFTVF9DQUxMIDogRnVuY3Rpb25DYWxsRG90Tm9kZShiLCBpLCBhKSB7fQogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IC8vIEZJWE1FIC0gc2hvdWxkIGhhdmUgcmVjdXJzZSBvciBub3Q/CiAgIH07CiAKLSAgY2xhc3Mg
UG9zdGZpeFJlc29sdmVOb2RlIDogcHVibGljIE5vZGUgeworICBjbGFzcyBQb3N0Zml4Tm9kZSA6
IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIFBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBJ
ZGVudGlmaWVyJiBpLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSwgbV9v
cGVyKG8pIHt9CisgICAgUG9zdGZpeE5vZGUoTG9jYXRpb25Ob2RlICpsLCBPcGVyYXRvciBvKSBL
SlNfRkFTVF9DQUxMIDogbV9sb2MobCksIG1fb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1
YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgSWRl
bnRpZmllciBtX2lkZW50OwotICAgIE9wZXJhdG9yIG1fb3BlcjsKLSAgfTsKLQotICBjbGFzcyBQ
b3N0Zml4QnJhY2tldE5vZGUgOiBwdWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICBQb3N0Zml4
QnJhY2tldE5vZGUoTm9kZSAqYiwgTm9kZSAqcywgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6
IG1fYmFzZShiKSwgbV9zdWJzY3JpcHQocyksIG1fb3BlcihvKSB7fQotICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAg
UmVmUHRyPE5vZGU+IG1fYmFzZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9zdWJzY3JpcHQ7Ci0gICAg
T3BlcmF0b3IgbV9vcGVyOwotICB9OwotCi0gIGNsYXNzIFBvc3RmaXhEb3ROb2RlIDogcHVibGlj
IE5vZGUgewotICBwdWJsaWM6Ci0gICAgUG9zdGZpeERvdE5vZGUoTm9kZSAqYiwgY29uc3QgSWRl
bnRpZmllciYgaSwgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiKSwgbV9pZGVu
dChpKSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwot
ICAgIElkZW50aWZpZXIgbV9pZGVudDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KiB2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3Mo
RXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOwor
ICBwcm90ZWN0ZWQ6CisgICAgUmVmUHRyPExvY2F0aW9uTm9kZT4gbV9sb2M7CiAgICAgT3BlcmF0
b3IgbV9vcGVyOwogICB9OwogCkBAIC00NzcsMzMgKzU5NCwxNCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICBPcGVyYXRvciBtX29wZXI7CiAgIH07CiAKLSAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIERlbGV0ZVJlZmVyZW5jZU5vZGUgOiBwdWJsaWMgTm9k
ZSB7CiAgIHB1YmxpYzoKLSAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBp
KSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSB7fQorICAgIERlbGV0ZVJlZmVyZW5jZU5vZGUo
TG9jYXRpb25Ob2RlICpsKSBLSlNfRkFTVF9DQUxMIDogbG9jKGwpIHt9CiAgICAgSlNWYWx1ZSog
ZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgot
ICAgIElkZW50aWZpZXIgbV9pZGVudDsKLSAgfTsKLQotICBjbGFzcyBEZWxldGVCcmFja2V0Tm9k
ZSA6IHB1YmxpYyBOb2RlIHsKLSAgcHVibGljOgotICAgIERlbGV0ZUJyYWNrZXROb2RlKE5vZGUg
KmJhc2UsIE5vZGUgKnN1YnNjcmlwdCkgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiYXNlKSwgbV9z
dWJzY3JpcHQoc3Vic2NyaXB0KSB7fQotICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fYmFz
ZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9zdWJzY3JpcHQ7Ci0gIH07Ci0KLSAgY2xhc3MgRGVsZXRl
RG90Tm9kZSA6IHB1YmxpYyBOb2RlIHsKLSAgcHVibGljOgotICAgIERlbGV0ZURvdE5vZGUoTm9k
ZSAqYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaSkgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiYXNl
KSwgbV9pZGVudChpKSB7fQotICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsKLSAg
ICBJZGVudGlmaWVyIG1faWRlbnQ7CisgICAgUmVmUHRyPExvY2F0aW9uTm9kZT4gbG9jOwogICB9
OwogCiAgIGNsYXNzIERlbGV0ZVZhbHVlTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTUxMSw2ICs2
MDksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBEZWxldGVWYWx1ZU5vZGUoTm9kZSAqZSkgS0pT
X0ZBU1RfQ0FMTCA6IG1fZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Tm9kZT4gbV9leHByOwogICB9OwpAQCAtNTIwLDE3ICs2MTksMTkgQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgVm9pZE5vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNU
X0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAKLSAgY2xh
c3MgVHlwZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIFR5cGVPZlJlZmVy
ZW5jZU5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBUeXBlT2ZSZXNvbHZlTm9k
ZShjb25zdCBJZGVudGlmaWVyJiBpKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSB7fQorICAg
IFR5cGVPZlJlZmVyZW5jZU5vZGUoTG9jYXRpb25Ob2RlICpsKSBLSlNfRkFTVF9DQUxMIDogbG9j
KGwpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
LSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFT
VF9DQUxMOwogICBwcml2YXRlOgotICAgIElkZW50aWZpZXIgbV9pZGVudDsKKyAgICBSZWZQdHI8
TG9jYXRpb25Ob2RlPiBsb2M7CiAgIH07CiAKICAgY2xhc3MgVHlwZU9mVmFsdWVOb2RlIDogcHVi
bGljIE5vZGUgewpAQCAtNTM4LDM5ICs2MzksMjAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVHlw
ZU9mVmFsdWVOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBtX2V4cHIoZSkge30KICAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NB
TEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fZXhwcjsKICAgfTsKIAotICBjbGFz
cyBQcmVmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgUHJlZml4Tm9kZSA6
IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIFByZWZpeFJlc29sdmVOb2RlKGNvbnN0IElk
ZW50aWZpZXImIGksIE9wZXJhdG9yIG8pIEtKU19GQVNUX0NBTEwgOiBtX2lkZW50KGkpLCBtX29w
ZXIobykge30KKyAgICBQcmVmaXhOb2RlKExvY2F0aW9uTm9kZSAqbCwgT3BlcmF0b3IgbykgS0pT
X0ZBU1RfQ0FMTCA6IG1fbG9jKGwpLCBtX29wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFsdWF0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICBwcml2YXRlOgotICAgIElkZW50
aWZpZXIgbV9pZGVudDsKLSAgICBPcGVyYXRvciBtX29wZXI7Ci0gIH07Ci0KLSAgY2xhc3MgUHJl
Zml4QnJhY2tldE5vZGUgOiBwdWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICBQcmVmaXhCcmFj
a2V0Tm9kZShOb2RlICpiLCBOb2RlICpzLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9i
YXNlKGIpLCBtX3N1YnNjcmlwdChzKSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZhbHVh
dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBSZWZQ
dHI8Tm9kZT4gbV9iYXNlOwotICAgIFJlZlB0cjxOb2RlPiBtX3N1YnNjcmlwdDsKLSAgICBPcGVy
YXRvciBtX29wZXI7Ci0gIH07Ci0KLSAgY2xhc3MgUHJlZml4RG90Tm9kZSA6IHB1YmxpYyBOb2Rl
IHsKLSAgcHVibGljOgotICAgIFByZWZpeERvdE5vZGUoTm9kZSAqYiwgY29uc3QgSWRlbnRpZmll
ciYgaSwgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiKSwgbV9pZGVudChpKSwg
bV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAgIElk
ZW50aWZpZXIgbV9pZGVudDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNp
dG9yKSBLSlNfRkFTVF9DQUxMOworICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0
YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOworICBwcm90
ZWN0ZWQ6CisgICAgUmVmUHRyPExvY2F0aW9uTm9kZT4gbV9sb2M7CiAgICAgT3BlcmF0b3IgbV9v
cGVyOwogICB9OwogCkBAIC01ODksNiArNjcxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVW5h
cnlQbHVzTm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIEpTVmFs
dWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVh
bCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsK
ICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgfTsKQEAgLTU5OCw2ICs2ODEs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBOZWdhdGVOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NB
TEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBl
eHByOwogICB9OwpAQCAtNjA3LDYgKzY5MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEJpdHdp
c2VOb3ROb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1
ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwog
ICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwogICB9OwpAQCAtNjE2LDYgKzcwMSw3
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIExvZ2ljYWxOb3ROb2RlKE5vZGUgKmUpIEtKU19GQVNU
X0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNp
dG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2Rl
PiBleHByOwogICB9OwpAQCAtNjI1LDYgKzcxMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIE11
bHROb2RlKE5vZGUgKnQxLCBOb2RlICp0MiwgY2hhciBvcCkgS0pTX0ZBU1RfQ0FMTCA6IHRlcm0x
KHQxKSwgdGVybTIodDIpLCBvcGVyKG9wKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gdGVybTE7CiAgICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpAQCAtNjM2LDYgKzcy
Myw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEFkZE5vZGUoTm9kZSAqdDEsIE5vZGUgKnQyLCBj
aGFyIG9wKSBLSlNfRkFTVF9DQUxMIDogdGVybTEodDEpLCB0ZXJtMih0MiksIG9wZXIob3ApIHt9
CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNf
RkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAgICBSZWZQ
dHI8Tm9kZT4gdGVybTI7CkBAIC02NDgsNiArNzM2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
ICA6IHRlcm0xKHQxKSwgdGVybTIodDIpLCBvcGVyKG8pIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVh
dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRl
OgogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAgICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC02
NjAsNiArNzQ5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBleHByMShlMSksIGV4cHIyKGUy
KSwgb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAq
dmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhw
cjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtNjcyLDYgKzc2Miw3IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgICAgOiBleHByMShlMSksIGV4cHIyKGUyKSwgb3BlcihvKSB7fQogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+
IGV4cHIyOwpAQCAtNjg0LDYgKzc3NSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgZXhwcjEo
ZTEpLCBleHByMihlMiksIG9wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQo
Tm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVm
UHRyPE5vZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTY5OSw2ICs3OTEs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIGV4cHIxKGUxKSwgZXhwcjIoZTIpLCBvcGVyKG8p
IHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBL
SlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBS
ZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC03MTQsMzAgKzgwNywzNCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgIGxvZ2ljYWwobCksIGV4cHIxKGUxKSwgZXhwcjIoZTIpIHt9CiAgICAgSlNWYWx1ZSog
ZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBw
cml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBsb2dpY2FsOwogICAgIFJlZlB0cjxOb2RlPiBleHBy
MTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CiAgIH07CiAKLSAgY2xhc3MgQXNzaWduUmVzb2x2
ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIEFzc2lnbk5vZGUgOiBwdWJsaWMgTm9kZSB7
CiAgIHB1YmxpYzoKLSAgICBBc3NpZ25SZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyICZpZGVu
dCwgT3BlcmF0b3Igb3BlciwgTm9kZSAqcmlnaHQpIEtKU19GQVNUX0NBTEwKLSAgICAgIDogbV9p
ZGVudChpZGVudCksIG1fb3BlcihvcGVyKSwgbV9yaWdodChyaWdodCkge30KKyAgICBBc3NpZ25O
b2RlKExvY2F0aW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcGVyLCBOb2RlICpyaWdodCkgS0pTX0ZB
U1RfQ0FMTCA6CisgICAgICBtX2xvYyhsb2MpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQp
IHt9CisgICAgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OwogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7
CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9D
QUxMOworICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5j
dGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6Ci0gICAgSWRl
bnRpZmllciBtX2lkZW50OworICAgIFJlZlB0cjxMb2NhdGlvbk5vZGU+IG1fbG9jOwogICAgIE9w
ZXJhdG9yIG1fb3BlcjsKICAgICBSZWZQdHI8Tm9kZT4gbV9yaWdodDsKICAgfTsKIAogICBjbGFz
cyBBc3NpZ25CcmFja2V0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIEFzc2ln
bkJyYWNrZXROb2RlKE5vZGUgKmJhc2UsIE5vZGUgKnN1YnNjcmlwdCwgT3BlcmF0b3Igb3Blciwg
Tm9kZSAqcmlnaHQpIEtKU19GQVNUX0NBTEwKLSAgICAgIDogbV9iYXNlKGJhc2UpLCBtX3N1YnNj
cmlwdChzdWJzY3JpcHQpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CisgICAgQXNz
aWduQnJhY2tldE5vZGUoTm9kZSAqYmFzZSwgTm9kZSAqc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVy
LCBOb2RlICpyaWdodCkgS0pTX0ZBU1RfQ0FMTCA6CisgICAgICBtX2Jhc2UoYmFzZSksIG1fc3Vi
c2NyaXB0KHN1YnNjcmlwdCksIG1fb3BlcihvcGVyKSwgbV9yaWdodChyaWdodCkge30KICAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NB
TEw7CiAgIHByb3RlY3RlZDoKICAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwogICAgIFJlZlB0cjxO
b2RlPiBtX3N1YnNjcmlwdDsKQEAgLTc0NywxMCArODQ0LDExIEBAIG5hbWVzcGFjZSBLSlMgewog
CiAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBB
c3NpZ25Eb3ROb2RlKE5vZGUgKmJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRv
ciBvcGVyLCBOb2RlICpyaWdodCkgS0pTX0ZBU1RfQ0FMTAotICAgICAgOiBtX2Jhc2UoYmFzZSks
IG1faWRlbnQoaWRlbnQpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CisgICAgQXNz
aWduRG90Tm9kZShOb2RlICpiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Ig
b3BlciwgTm9kZSAqcmlnaHQpIEtKU19GQVNUX0NBTEwgOgorICAgICAgbV9iYXNlKGJhc2UpLCBt
X2lkZW50KGlkZW50KSwgbV9vcGVyKG9wZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQogICAgIEpTVmFs
dWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVh
bCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsK
ICAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxOb2RlPiBtX2Jhc2U7CiAgICAgSWRlbnRpZmllciBt
X2lkZW50OwpAQCAtNzU4LDE1ICs4NTYsMTUgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUmVmUHRy
PE5vZGU+IG1fcmlnaHQ7CiAgIH07CiAKLSAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGlj
IE5vZGUgewotICBwdWJsaWM6Ci0gICAgQXNzaWduRXJyb3JOb2RlKE5vZGUqIGxlZnQsIE9wZXJh
dG9yIG9wZXIsIE5vZGUqIHJpZ2h0KSBLSlNfRkFTVF9DQUxMCi0gICAgICA6IG1fbGVmdChsZWZ0
KSwgbV9vcGVyKG9wZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQorICBjbGFzcyBBc3NpZ25FcnJvck5v
ZGUgOiBwdWJsaWMgTm9kZSB7IAorICBwdWJsaWM6IAorICAgIEFzc2lnbkVycm9yTm9kZShOb2Rl
KiBsZWZ0LCBPcGVyYXRvciBvcGVyLCBOb2RlKiByaWdodCkgIEtKU19GQVNUX0NBTEwgOgorICAg
ICAgbV9sZWZ0KGxlZnQpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9IAogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByb3Rl
Y3RlZDoKLSAgICBSZWZQdHI8Tm9kZT4gbV9sZWZ0OwotICAgIE9wZXJhdG9yIG1fb3BlcjsKKyAg
cHJvdGVjdGVkOiAKKyAgICBSZWZQdHI8Tm9kZT4gbV9sZWZ0OyAKKyAgICBPcGVyYXRvciBtX29w
ZXI7IAogICAgIFJlZlB0cjxOb2RlPiBtX3JpZ2h0OwogICB9OwogCkBAIC03NzUsNiArODczLDcg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQ29tbWFOb2RlKE5vZGUgKmUxLCBOb2RlICplMikgS0pT
X0ZBU1RfQ0FMTCA6IGV4cHIxKGUxKSwgZXhwcjIoZTIpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVh
dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRl
OgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC03
ODUsNiArODg0LDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQXNzaWduRXhwck5vZGUoTm9kZSAq
ZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisKKyAgICBOb2RlKiBnZXRF
eHByKCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBleHByLmdldCgpOyB9CiAgIHByaXZhdGU6CiAg
ICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC03OTQsOSArODk2LDEyIEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgIGVudW0gVHlwZSB7IFZhcmlhYmxlLCBDb25zdGFudCB9OwogICAgIFZhckRl
Y2xOb2RlKGNvbnN0IElkZW50aWZpZXIgJmlkLCBBc3NpZ25FeHByTm9kZSAqaW4sIFR5cGUgdCkg
S0pTX0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNp
dG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NW
YXJEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIFZhclN0YXRlbWVudE5vZGU7CiAgICAgSlNWYWx1ZSogaGFuZGxlU2xvd0Nhc2UoRXhl
Y1N0YXRlKiwgY29uc3QgU2NvcGVDaGFpbiYsIEpTVmFsdWUqKSBLSlNfRkFTVF9DQUxMIEtKU19O
T19JTkxJTkU7CiAgICAgVHlwZSB2YXJUeXBlOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CkBAIC04
MTAsMTAgKzkxNSwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBWYXJEZWNsTGlzdE5vZGUoVmFy
RGVjbExpc3ROb2RlICpsLCBWYXJEZWNsTm9kZSAqdikgS0pTX0ZBU1RfQ0FMTAogICAgICAgOiBu
ZXh0KGwtPm5leHQpLCB2YXIodikgeyBsLT5uZXh0ID0gdGhpczsgfQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NSZWZQ
dHI8VmFyRGVjbExpc3ROb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
bmV4dC5yZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRm9yTm9kZTsK
ICAgICBmcmllbmQgY2xhc3MgVmFyU3RhdGVtZW50Tm9kZTsKQEAgLTgyNCwxOSArOTI5LDM3IEBA
IG5hbWVzcGFjZSBLSlMgewogICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRl
bWVudE5vZGUgewogICBwdWJsaWM6CiAgICAgVmFyU3RhdGVtZW50Tm9kZShWYXJEZWNsTGlzdE5v
ZGUgKmwpIEtKU19GQVNUX0NBTEwgOiBuZXh0KGwtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNlcjo6
cmVtb3ZlTm9kZUN5Y2xlKG5leHQuZ2V0KCkpOyB9CisgICAgdmlydHVhbCBOb2RlKiBvcHRpbWl6
ZUxvY2FsQWNjZXNzKEV4ZWNTdGF0ZSAqZXhlYywgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSkgS0pT
X0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc1Zh
clN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8VmFyRGVjbExpc3ROb2RlPiBuZXh0OwogICB9OwogCisgIC8vIEEgdmVyc2lvbiBvZiBWYXJT
dGF0ZW1lbnROb2RlIG9wdGltaXplZCBmb3IgbG9jYWwgYWNjZXNzIC0tLSBpdCBzdG9yZXMgdGhl
IAorICAvLyBpbmRleCBsb2NhdGlvbnMsIGFuZCBhY2Nlc3NlcyB0aGVtIGRpcmVjdGx5LgorICBj
bGFzcyBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAg
IHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Cisg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikg
S0pTX0ZBU1RfQ0FMTDsKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5pdGlhbGl6ZXIgeworICAg
ICAgaW50IGxvY2FsSUQ7CisgICAgICBSZWZQdHI8Tm9kZT4gaW5pdEV4cHI7CisgICAgfTsKKyAg
ICBXVEY6OlZlY3RvcjxJbml0aWFsaXplcj4gaW5pdGlhbGl6ZXJzOworICAgIFJlZlB0cjxWYXJT
dGF0ZW1lbnROb2RlPiBvcmlnaW5hbFN0YXRlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgVmFyU3Rh
dGVtZW50Tm9kZTsKKyAgfTsKKwogICBjbGFzcyBCbG9ja05vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSB7CiAgIHB1YmxpYzoKICAgICBCbG9ja05vZGUoU291cmNlRWxlbWVudHNOb2RlICpzKSBL
SlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQo
Tm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByb3RlY3RlZDoKICAgICBS
ZWZQdHI8U291cmNlRWxlbWVudHNOb2RlPiBzb3VyY2U7CiAgIH07CkBAIC04NTMsNiArOTc2LDcg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgRXhwclN0YXRlbWVudE5vZGUoTm9kZSAqZSkgS0pTX0ZB
U1RfQ0FMTCA6IGV4cHIoZSkgeyB9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNl
U3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAg
IFJlZlB0cjxOb2RlPiBleHByOwogICB9OwpAQCAtODYyLDggKzk4Niw4IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgIElmTm9kZShOb2RlICplLCBTdGF0ZW1lbnROb2RlICpzMSwgU3RhdGVtZW50Tm9k
ZSAqczIpIEtKU19GQVNUX0NBTEwKICAgICAgIDogZXhwcihlKSwgc3RhdGVtZW50MShzMSksIHN0
YXRlbWVudDIoczIpIHt9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gZXhwcjsKICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50MTsK
QEAgLTg3NCw4ICs5OTgsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgogICAgIERvV2hp
bGVOb2RlKFN0YXRlbWVudE5vZGUgKnMsIE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBzdGF0ZW1l
bnQocyksIGV4cHIoZSkge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNl
U3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9v
bCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1
ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0ZW1lbnQ7CiAg
ICAgUmVmUHRyPE5vZGU+IGV4cHI7CkBAIC04ODUsOCArMTAxMCw5IEBAIG5hbWVzcGFjZSBLSlMg
ewogICBwdWJsaWM6CiAgICAgV2hpbGVOb2RlKE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMpIEtK
U19GQVNUX0NBTEwgOiBleHByKGUpLCBzdGF0ZW1lbnQocykge30KICAgICB2aXJ0dWFsIENvbXBs
ZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9D
QUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtKU19G
QVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBl
eHByOwogICAgIFJlZlB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0ZW1lbnQ7CkBAIC04OTksOCArMTAy
NSw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEZvck5vZGUoVmFyRGVjbExpc3ROb2RlICplMSwg
Tm9kZSAqZTIsIE5vZGUgKmUzLCBTdGF0ZW1lbnROb2RlICpzKSBLSlNfRkFTVF9DQUxMIDoKICAg
ICAgIGV4cHIxKGUxLT5uZXh0LnJlbGVhc2UoKSksIGV4cHIyKGUyKSwgZXhwcjMoZTMpLCBzdGF0
ZW1lbnQocykgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShleHByMS5nZXQoKSk7IH0KICAgICB2
aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJl
ZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC05MTMsOCArMTA0
MCw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEZvckluTm9kZShOb2RlICpsLCBOb2RlICplLCBT
dGF0ZW1lbnROb2RlICpzKSBLSlNfRkFTVF9DQUxMOwogICAgIEZvckluTm9kZShjb25zdCBJZGVu
dGlmaWVyICZpLCBBc3NpZ25FeHByTm9kZSAqaW4sIE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMp
IEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIGJvb2wg
aXNJdGVyYXRpb25TdGF0ZW1lbnQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7
IH0KICAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyIGlkZW50OwogICAgIFJlZlB0cjxBc3NpZ25F
eHByTm9kZT4gaW5pdDsKQEAgLTkyNiwyMiArMTA1NCwyOCBAQCBuYW1lc3BhY2UgS0pTIHsKIAog
ICBjbGFzcyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgIHB1YmxpYzoK
LSAgICBDb250aW51ZU5vZGUoKSBLSlNfRkFTVF9DQUxMIHsgfQotICAgIENvbnRpbnVlTm9kZShj
b25zdCBJZGVudGlmaWVyICZpKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSkgeyB9CisgICAgQ29u
dGludWVOb2RlKCkgS0pTX0ZBU1RfQ0FMTCA6IHRhcmdldCgwKSB7IH0KKyAgICBDb250aW51ZU5v
ZGUoY29uc3QgSWRlbnRpZmllciAmaSkgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KGkpLCB0YXJnZXQo
MCkgeyB9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1h
bnRpY3MoU2VtYW50aWNDaGVja2VyKiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAg
IHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBpZGVudDsKKyAgICBjb25zdCBOb2RlKiB0YXJnZXQ7
CiAgIH07CiAKICAgY2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICBw
dWJsaWM6Ci0gICAgQnJlYWtOb2RlKCkgS0pTX0ZBU1RfQ0FMTCB7IH0KLSAgICBCcmVha05vZGUo
Y29uc3QgSWRlbnRpZmllciAmaSkgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KGkpIHsgfQorICAgIEJy
ZWFrTm9kZSgpIEtKU19GQVNUX0NBTEwgOiB0YXJnZXQoMCkgeyB9CisgICAgQnJlYWtOb2RlKGNv
bnN0IElkZW50aWZpZXIgJmkpIEtKU19GQVNUX0NBTEwgOiBpZGVudChpKSwgdGFyZ2V0KDApIHsg
fQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIE5vZGUqIGNoZWNrU2VtYW50aWNz
KFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2VyKSBLSlNfRkFTVF9DQUxMOwogICBwcml2
YXRlOgogICAgIElkZW50aWZpZXIgaWRlbnQ7CisgICAgY29uc3QgTm9kZSogdGFyZ2V0OwogICB9
OwogCiAgIGNsYXNzIFJldHVybk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC05NDks
MTYgKzEwODMsMTkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUmV0dXJuTm9kZShOb2RlICp2KSBL
SlNfRkFTVF9DQUxMIDogdmFsdWUodikge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6
CiAgICAgUmVmUHRyPE5vZGU+IHZhbHVlOworICAgIGNvbnN0IE5vZGUqIHRhcmdldDsKICAgfTsK
IAogICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgcHVibGljOgog
ICAgIFdpdGhOb2RlKE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEwgOiBl
eHByKGUpLCBzdGF0ZW1lbnQocykge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVj
bHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgYm9vbCBpbnRyb2R1Y2VzTmV3RHluYW1pY1Njb3BlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAg
UmVmUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKQEAgLTk2OCw4ICsxMTA1LDEwIEBAIG5h
bWVzcGFjZSBLSlMgewogICBwdWJsaWM6CiAgICAgTGFiZWxOb2RlKGNvbnN0IElkZW50aWZpZXIg
JmwsIFN0YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEwgOiBsYWJlbChsKSwgc3RhdGVtZW50
KHMpIHsgfQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IE5vZGUqIGNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2VyKSBL
SlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbGFiZWw7CiAgICAgUmVm
UHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKQEAgLTk4MCw2ICsxMTE5LDcgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgVGhyb3dOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUp
IHt9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2
aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHBy
OwogICB9OwpAQCAtOTg5LDggKzExMjksMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVHJ5Tm9k
ZShTdGF0ZW1lbnROb2RlICpiLCBjb25zdCBJZGVudGlmaWVyICZlLCBTdGF0ZW1lbnROb2RlICpj
LCBTdGF0ZW1lbnROb2RlICpmKSBLSlNfRkFTVF9DQUxMCiAgICAgICA6IHRyeUJsb2NrKGIpLCBl
eGNlcHRpb25JZGVudChlKSwgY2F0Y2hCbG9jayhjKSwgZmluYWxseUJsb2NrKGYpIHsgfQogICAg
IHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0g
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpIEtKU19GQVNUX0NBTEw7CisKKyAgICB2b2lkIHJlY3Vyc2VWaXNpdE5vbkNhdGNoKE5vZGVW
aXNpdG9yICp2aXNpdG9yKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcnlOb2RlKCkgIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxTdGF0
ZW1lbnROb2RlPiB0cnlCbG9jazsKICAgICBJZGVudGlmaWVyIGV4Y2VwdGlvbklkZW50OwpAQCAt
MTAwNSwxMSArMTE0OCwxMyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQYXJhbWV0ZXJOb2RlKFBh
cmFtZXRlck5vZGUgKm5leHQsIGNvbnN0IElkZW50aWZpZXIgJmkpIEtKU19GQVNUX0NBTEwKICAg
ICAgIDogaWQoaSksIG5leHQobmV4dC0+bmV4dCkgeyBuZXh0LT5uZXh0ID0gdGhpczsgfQogICAg
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgSWRlbnRp
ZmllciBpZGVudCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWQ7IH0KLSAgICBQYXJhbWV0ZXJO
b2RlICpuZXh0UGFyYW0oKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQuZ2V0KCk7IH0KKyAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWQ7IH0K
KyAgICBQYXJhbWV0ZXJOb2RlICpuZXh0UGFyYW0oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0
dXJuIG5leHQuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPFBhcmFtZXRlck5vZGU+IHJl
bGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKworICAgIHZpcnR1YWwg
dm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAg
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZ1bmNEZWNsTm9kZTsKICAgICBmcmllbmQgY2xh
c3MgRnVuY0V4cHJOb2RlOwpAQCAtMTAyNSwyMiArMTE3MCw3OCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgfTsKIAogICAvLyBpbmhlcml0ZWQgYnkgUHJvZ3JhbU5vZGUKKworICAvKioKKyAgIFRoaXMg
QVNUIG5vZGUgY29ycmVzcG9uZHMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkgaW4gdGhlIEFTVCwgYnV0
IGlzIHVzZWQgdG8gCisgICBrZWVwIHRyYWNrIG9mIG11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIHJl
bGV2YW50IHRvIHRoZSB3aG9sZSBmdW5jdGlvbiwKKyAgIHN1Y2ggYXMgcGFyYW1ldGVyIG5hbWVz
IGFuZCBzeW1ib2wgdGFibGVzLiBUaGlzIGlzIGJlY2F1c2UgdGhlcmUgYXJlIGJvdGggZnVuY3Rp
b24gCisgICBkZWNsYXJhdGlvbnMgYW5kIGV4cHJlc3Npb25zLCBzbyB0aGVyZSBpcyBubyBuYXR1
cmFsIHNpbmdsZSBwbGFjZSB0byBwdXQgdGhpcyBzdHVmZiAKKyAgIGFib3ZlIHRoZSBib2R5Cisg
ICovCiAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgQmxvY2tOb2RlIHsKKyAgcHJp
dmF0ZToKKyAgICBzdHJ1Y3QgU3ltYm9sIHsKKyAgICAgIFN5bWJvbChjb25zdCBJZGVudGlmaWVy
JiBfbmFtZSwgaW50IF9hdHRyLCBGdW5jRGVjbE5vZGUqIF9mdW5jRGVjbCkgOiBuYW1lKF9uYW1l
KSwgZnVuY0RlY2woX2Z1bmNEZWNsKSwgYXR0cihfYXR0cikge30KKyAgICAgIFN5bWJvbCgpIHt9
CisgICAgICBJZGVudGlmaWVyICAgIG5hbWU7CisgICAgICBGdW5jRGVjbE5vZGUqIGZ1bmNEZWNs
OworICAgICAgaW50ICAgICAgICAgICBhdHRyOworICAgIH07CisKKyAgICBzdHJ1Y3QgUGFyYW1l
dGVyIHsKKyAgICAgIFBhcmFtZXRlcigpIHt9CisgICAgICBQYXJhbWV0ZXIoY29uc3QgSWRlbnRp
ZmllciAmbiwgaW50IGlkKSA6IG5hbWUobiksIHN5bWJvbElEKGlkKSB7IH0KKyAgICAgIElkZW50
aWZpZXIgbmFtZTsKKyAgICAgIGludCAgICAgICAgc3ltYm9sSUQ7CisgICAgfTsKICAgcHVibGlj
OgogICAgIEZ1bmN0aW9uQm9keU5vZGUoU291cmNlRWxlbWVudHNOb2RlICopIEtKU19GQVNUX0NB
TEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIGludCBzb3VyY2VJZCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3Vy
Y2VJZDsgfQogICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCgpIEtKU19GQVNUX0NBTEwgeyBy
ZXR1cm4gbV9zb3VyY2VVUkw7IH0KKyAKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgLy8gU3ltYm9s
IHRhYmxlIGZ1bmN0aW9ucworICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICBib29sIGJ1aWx0U3ltYm9s
TGlzdCgpICAgIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9idWlsdFN5bWJvbExpc3Q7
IH0KKyAgICB2b2lkIHNldEJ1aWx0U3ltYm9sTGlzdCgpICAgICAgIEtKU19GQVNUX0NBTEwgeyBt
X2J1aWx0U3ltYm9sTGlzdCA9IHRydWU7IH0KKyAgICBpbnQgIG51bUxvY2FscygpICAgICAgICAg
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zeW1ib2xMaXN0LnNpemUoKTsgfQorICAg
IGludCAgZ2V0TG9jYWxBdHRyKGludCBpZCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBt
X3N5bWJvbExpc3RbaWQtMV0uYXR0cjsgfQorICAgIEZ1bmNEZWNsTm9kZSogZ2V0TG9jYWxGdW5j
RGVjbChpbnQgaWQpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zeW1ib2xMaXN0W2lk
LTFdLmZ1bmNEZWNsOyB9CisgICAgCisgICAgLy9SZXR1cm5zIC0xIGlmIG5vdCBmb3VuZC4uCisg
ICAgaW50ICBsb29rdXBTeW1ib2xJRChjb25zdCBJZGVudGlmaWVyICZpZGVudCkgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKIAotICAgIHZvaWQgYWRkUGFyYW0oY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IEtKU19GQVNUX0NBTEw7Ci0gICAgc2l6ZV90IG51bVBhcmFtcygpIGNvbnN0IEtKU19GQVNUX0NB
TEwgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNpemUoKTsgfQotICAgIElkZW50aWZpZXIgcGFyYW1O
YW1lKHNpemVfdCBwb3MpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
W3Bvc10ubmFtZTsgfQotICAgIFVTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdCBLSlNfRkFTVF9D
QUxMOwotICAgIFZlY3RvcjxQYXJhbWV0ZXI+JiBwYXJhbWV0ZXJzKCkgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgLy8gUGFyYW1l
dGVyIGFycmF5IGZ1bmN0aW9ucworICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICB2b2lkIGFkZFBhcmFt
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBLSlNfRkFTVF9DQUxMOyAvL0Fsc28gY3JlYXRlcyB0
aGUgc3ltYm9sIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy9wYXJhbWV0ZXIsIGNhbGVkIG9uIGNyZWF0aW5nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlIGVuY2xvc2luZyBleHByIG9yIGRlY2wKKwor
ICAgIHZvaWQgYWRkVmFyRGVjbChjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IGF0dHIsIEV4
ZWNTdGF0ZSogZXhlYykgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIGFkZEZ1bmNEZWNsKGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBpbnQgYXR0ciwgRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCkgS0pT
X0ZBU1RfQ0FMTDsKKworICAgIGludCBudW1QYXJhbXMoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsg
cmV0dXJuIG1fcGFyYW1MaXN0LnNpemUoKTsgfQorICAgIGludCBwYXJhbVN5bWJvbElEKGludCBw
b3MpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbUxpc3RbcG9zXS5zeW1ib2xJ
RDsgfQorICAgIGNvbnN0IElkZW50aWZpZXImIHBhcmFtTmFtZShpbnQgcG9zKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIG1fcGFyYW1MaXN0W3Bvc10ubmFtZTsgfQorICAgIFVTdHJpbmcg
ICAgcGFyYW1TdHJpbmcoKSBjb25zdCBLSlNfRkFTVF9DQUxMOyAgIAogICBwcml2YXRlOgogICAg
IFVTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgaW50IG1fc291cmNlSWQ7Ci0gICAgVmVjdG9yPFBh
cmFtZXRlcj4gbV9wYXJhbWV0ZXJzOworICAgIGludCBtX3NvdXJjZUlkIDogMzE7CisgICAgYm9v
bCBtX2J1aWx0U3ltYm9sTGlzdCA6IDE7CisKKyAgICBpbnQgYWRkU3ltYm9sKGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBpbnQgYXR0ciwgRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCA9IDApIEtKU19G
QVNUX0NBTEw7CisKKyAgICAvLyBOb3RlOiB0aGUgY29udmVudGlvbiBoZXJlIGlzIHRoYXQgdGhl
IHBvc2l0aW9uIDAKKyAgICAvLyBpcyB0aGUgaW5kZXggMSwgcG9zaXRpb24gMSBpcyB0aGUgaW5k
ZXggMiwgZXRjLgorICAgIFdURjo6VmVjdG9yPFN5bWJvbD4gbV9zeW1ib2xMaXN0OworICAgIAor
ICAgIC8vIFRoaXMgaXMgdGhlIG1hcCBvZiB0aGUgYWJvdmUsIHRoZSBqc1ZhbHVlcyBhcmUgdGhl
IElEcy4KKyAgICAvLyAjIyMgdWdoLiBMYXp5LWxhenktbGF6eS4gQnV0IHRoaXMgd29ya3MsIHRv
by4KKyAgICBQcm9wZXJ0eU1hcCBtX3N5bWJvbFRhYmxlOworCisgICAgLy8gVGhlIGxpc3Qgb2Yg
cGFyYW1ldGVycywgYW5kIHRoZWlyIGxvY2FsIElEcyBpbiB0aGUKKyAgICBXVEY6OlZlY3RvcjxQ
YXJhbWV0ZXI+IG1fcGFyYW1MaXN0OwogICB9OwogCiAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1
YmxpYyBOb2RlIHsKQEAgLTEwNDksNiArMTI1MCwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
IDogaWRlbnQoaSksIHBhcmFtKHAgPyBwLT5uZXh0LnJlbGVhc2UoKSA6IDApLCBib2R5KGIpIHsg
aWYgKHApIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUocGFyYW0uZ2V0KCkpOyB9IGFkZFBhcmFt
cygpOyB9CiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGludHJvZHVjZXNOZXdT
dGF0aWNTY29wZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICBwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCBOb2RlKiBjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIq
IHNlbWFudGljQ2hlY2tlcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICB2b2lkIGFk
ZFBhcmFtcygpIEtKU19GQVNUX0NBTEw7CiAgICAgLy8gVXNlZCBmb3Igc3RyZWFtVG8KQEAgLTEw
NjUsOCArMTI3MCwxNCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBGdW5jRGVjbE5vZGUoY29uc3Qg
SWRlbnRpZmllciAmaSwgUGFyYW1ldGVyTm9kZSAqcCwgRnVuY3Rpb25Cb2R5Tm9kZSAqYikgS0pT
X0ZBU1RfQ0FMTAogICAgICAgOiBpZGVudChpKSwgcGFyYW0ocC0+bmV4dC5yZWxlYXNlKCkpLCBi
b2R5KGIpIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUocGFyYW0uZ2V0KCkpOyBhZGRQYXJhbXMo
KTsgfQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25z
dCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGludHJvZHVjZXNO
ZXdTdGF0aWNTY29wZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OworICAgIEZ1bmN0aW9uSW1wKiBtYWtlRnVuY3Rpb25PYmplY3QoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRpY3Mo
U2VtYW50aWNDaGVja2VyKiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZh
dGU6CiAgICAgdm9pZCBhZGRQYXJhbXMoKSBLSlNfRkFTVF9DQUxMOwogICAgIElkZW50aWZpZXIg
aWRlbnQ7CkBAIC0xMDgzLDExICsxMjk0LDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFNvdXJj
ZUVsZW1lbnRzTm9kZShTb3VyY2VFbGVtZW50c05vZGUgKnMxLCBTdGF0ZW1lbnROb2RlICpzMikg
S0pTX0ZBU1RfQ0FMTDsKICAgICAKICAgICBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKLSAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPFNvdXJjZUVsZW1lbnRzTm9kZT4g
cmVsZWFzZU5leHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQucmVsZWFzZSgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwg
dm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAg
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrTm9kZTsKICAgICBmcmllbmQgY2xhc3Mg
Q2FzZUNsYXVzZU5vZGU7CkBAIC0xMTAyLDkgKzEzMTIsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAgIDogZXhwcihlKSwgc291cmNlKHMtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNlcjo6cmVtb3Zl
Tm9kZUN5Y2xlKHNvdXJjZS5nZXQoKSk7IH0KICAgICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICBDb21wbGV0aW9uIGV2YWxTdGF0ZW1lbnRzKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNs
cyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0dWFsIHZvaWQg
cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2
YXRlOgogICAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgICBSZWZQdHI8U291cmNlRWxlbWVu
dHNOb2RlPiBzb3VyY2U7CkBAIC0xMTE5LDExICsxMzI4LDEwIEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICAg
IENhc2VDbGF1c2VOb2RlICpnZXRDbGF1c2UoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IGNsYXVzZS5nZXQoKTsgfQogICAgICAgQ2xhdXNlTGlzdE5vZGUgKmdldE5leHQoKSBjb25zdCBL
SlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQuZ2V0KCk7IH0KLSAgICAgIHZpcnR1YWwgdm9pZCBw
cm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgIHZvaWQgcHJv
Y2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIFBh
c3NSZWZQdHI8Q2xhdXNlTGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJl
dHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBL
SlNfRkFTVF9DQUxMOworICAgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICAgIGZyaWVuZCBjbGFz
cyBDYXNlQmxvY2tOb2RlOwogICAgICAgUmVmUHRyPENhc2VDbGF1c2VOb2RlPiBjbGF1c2U7CkBA
IC0xMTM1LDkgKzEzNDMsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIENhc2VCbG9ja05vZGUo
Q2xhdXNlTGlzdE5vZGUgKmwxLCBDYXNlQ2xhdXNlTm9kZSAqZCwgQ2xhdXNlTGlzdE5vZGUgKmwy
KSBLSlNfRkFTVF9DQUxMOwogICAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICAgIENvbXBsZXRpb24gZXZhbEJsb2NrKEV4ZWNTdGF0ZSAqZXhlYywg
SlNWYWx1ZSAqaW5wdXQpIEtKU19GQVNUX0NBTEw7Ci0gICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgICB2b2lkIHByb2Nlc3NG
dW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0dWFs
IHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwog
ICBwcml2YXRlOgogICAgICAgUmVmUHRyPENsYXVzZUxpc3ROb2RlPiBsaXN0MTsKICAgICAgIFJl
ZlB0cjxDYXNlQ2xhdXNlTm9kZT4gZGVmOwpAQCAtMTE0OCw5ICsxMzU1LDkgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgIHB1YmxpYzoKICAgICAgIFN3aXRjaE5vZGUoTm9kZSAqZSwgQ2FzZUJsb2NrTm9k
ZSAqYikgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGJsb2NrKGIpIHsgfQogICAgICAgdmlydHVh
bCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAg
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNf
RkFTVF9DQUxMOworICAgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAq
dmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaFN0YXRl
bWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgog
ICAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgICBSZWZQdHI8Q2FzZUJsb2NrTm9kZT4gYmxv
Y2s7CkBAIC0xMTYxLDYgKzEzNjgsMjYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUHJvZ3JhbU5v
ZGUoU291cmNlRWxlbWVudHNOb2RlICpzKSBLSlNfRkFTVF9DQUxMOwogICB9OwogCisgIC8qKgor
ICAgVGhpcyBub2RlIHJlcHJlc2VudHMgc3RhdGljYWxseSBkZXRlY3RhYmxlIGVycm9ycyB0aGF0
IG11c3QgYmUgcmVwb3J0ZWQKKyAgIGF0IHJ1bnRpbWUuIFRoZSBzZW1hbnRpYyBjaGVja2VyIHNw
bGljZXMgaXQgaW4gYWJvdmUgdGhlIG9yaWdpbmFsIG5vZGUKKyAgIGluIHRoZSBwcm9ncmFtLCBh
bmQgaXQgZG9lcyB0aGUgZXJyb3IgcmVwb3J0aW5nOyB0aGUgY2hpbGQgbm9kZSBpcworICAgdXNl
ZCBmb3IgdGV4dCBzZXJpYWxpemF0aW9uLgorCisgICBOb3RlOiB3ZSBkbyBub3QgdmlzaXQga2lk
cyBvZiB0aGlzIG5vZGUgaW4gdGhlIHZpc2l0b3IgaW50ZXJmYWNlLAorICAgc2luY2UgdGhleSBk
byBub3QgcnVuLCBhbnl3YXkKKyAgKi8KKyAgY2xhc3MgRXJyb3JOb2RlIDogcHVibGljIFN0YXRl
bWVudE5vZGUgeworICBwdWJsaWM6CisgICAgRXJyb3JOb2RlKE5vZGUqIGssIEVycm9yVHlwZSBl
LCBjb25zdCBVU3RyaW5nJiBtKSBLSlNfRkFTVF9DQUxMIDoKKyAgICAgICAga2lkKGspLCBlcnJv
clR5cGUoZSksIG1lc3NhZ2UobSkge30KKyAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICBwcml2YXRlOgorICAgIFJlZlB0cjxO
b2RlPiBraWQ7CisgICAgRXJyb3JUeXBlICAgIGVycm9yVHlwZTsKKyAgICBVU3RyaW5nICAgICAg
bWVzc2FnZTsKKyAgfTsKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL29i
amVjdC5jcHAJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw5ICsxNTMsOCBAQCBjb25zdCBDbGFzc0luZm8gKkpT
T2JqZWN0OjpjbGFzc0luZm8oKSBjCiBVU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoKSBjb25z
dAogewogICBjb25zdCBDbGFzc0luZm8gKmNpID0gY2xhc3NJbmZvKCk7Ci0gIGlmICggY2kgKQot
ICAgIHJldHVybiBjaS0+Y2xhc3NOYW1lOwotICByZXR1cm4gIk9iamVjdCI7CisKKyAgcmV0dXJu
IGNpID8gY2ktPmNsYXNzTmFtZSA6ICJPYmplY3QiOwogfQogCiBKU1ZhbHVlICpKU09iamVjdDo6
Z2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25z
dApAQCAtMzYzLDIxICszNjIsMjEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSAqdHJ5
R2V0QW5kQwogLy8gRUNNQSA4LjYuMi42CiBKU1ZhbHVlKiBKU09iamVjdDo6ZGVmYXVsdFZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgSlNUeXBlIGhpbnQpIGNvbnN0CiB7Ci0gIElkZW50aWZpZXIgZmly
c3RQcm9wZXJ0eU5hbWU7Ci0gIElkZW50aWZpZXIgc2Vjb25kUHJvcGVydHlOYW1lOworICBjb25z
dCBJZGVudGlmaWVyKiBmaXJzdFByb3BlcnR5TmFtZTsKKyAgY29uc3QgSWRlbnRpZmllciogc2Vj
b25kUHJvcGVydHlOYW1lOwogICAvKiBQcmVmZXIgU3RyaW5nIGZvciBEYXRlIG9iamVjdHMgKi8K
ICAgaWYgKChoaW50ID09IFN0cmluZ1R5cGUpIHx8IChoaW50ICE9IFN0cmluZ1R5cGUpICYmICho
aW50ICE9IE51bWJlclR5cGUpICYmIChfcHJvdG8gPT0gZXhlYy0+bGV4aWNhbEludGVycHJldGVy
KCktPmJ1aWx0aW5EYXRlUHJvdG90eXBlKCkpKSB7Ci0gICAgZmlyc3RQcm9wZXJ0eU5hbWUgPSBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmc7Ci0gICAgc2Vjb25kUHJvcGVydHlOYW1lID0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2Y7CisgICAgZmlyc3RQcm9wZXJ0eU5hbWUgPSAm
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nOworICAgIHNlY29uZFByb3BlcnR5TmFtZSA9
ICZleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZjsKICAgfSBlbHNlIHsKLSAgICBmaXJzdFBy
b3BlcnR5TmFtZSA9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mOwotICAgIHNlY29uZFBy
b3BlcnR5TmFtZSA9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZzsKKyAgICBmaXJzdFBy
b3BlcnR5TmFtZSA9ICZleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZjsKKyAgICBzZWNvbmRQ
cm9wZXJ0eU5hbWUgPSAmZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nOwogICB9CiAKICAg
SlNWYWx1ZSAqdjsKLSAgaWYgKCh2ID0gdHJ5R2V0QW5kQ2FsbFByb3BlcnR5KGV4ZWMsIHRoaXMs
IGZpcnN0UHJvcGVydHlOYW1lKSkpCisgIGlmICgodiA9IHRyeUdldEFuZENhbGxQcm9wZXJ0eShl
eGVjLCB0aGlzLCAqZmlyc3RQcm9wZXJ0eU5hbWUpKSkKICAgICByZXR1cm4gdjsKLSAgaWYgKCh2
ID0gdHJ5R2V0QW5kQ2FsbFByb3BlcnR5KGV4ZWMsIHRoaXMsIHNlY29uZFByb3BlcnR5TmFtZSkp
KQorICBpZiAoKHYgPSB0cnlHZXRBbmRDYWxsUHJvcGVydHkoZXhlYywgdGhpcywgKnNlY29uZFBy
b3BlcnR5TmFtZSkpKQogICAgIHJldHVybiB2OwogCiAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKQEAgLTU5NCwyOCArNTkzLDI5IEBAIGNvbnN0IGNoYXIgKiBjb25zdCAqIGNvbnN0IEVycm9y
OjplcnJvck4KIEpTT2JqZWN0ICpFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSAqZXhlYywgRXJyb3JU
eXBlIGVycnR5cGUsIGNvbnN0IFVTdHJpbmcgJm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGxpbmVubywgaW50IHNvdXJjZUlkLCBjb25zdCBVU3RyaW5nICZzb3VyY2VVUkwp
CiB7CisgIEludGVycHJldGVyKiBpbnRlcnAgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKTsK
ICAgSlNPYmplY3QgKmNvbnM7CiAgIHN3aXRjaCAoZXJydHlwZSkgewogICBjYXNlIEV2YWxFcnJv
cjoKLSAgICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5FdmFsRXJy
b3IoKTsKKyAgICBjb25zID0gaW50ZXJwLT5idWlsdGluRXZhbEVycm9yKCk7CiAgICAgYnJlYWs7
CiAgIGNhc2UgUmFuZ2VFcnJvcjoKLSAgICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJldGVy
KCktPmJ1aWx0aW5SYW5nZUVycm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpblJhbmdl
RXJyb3IoKTsKICAgICBicmVhazsKICAgY2FzZSBSZWZlcmVuY2VFcnJvcjoKLSAgICBjb25zID0g
ZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5SZWZlcmVuY2VFcnJvcigpOworICAg
IGNvbnMgPSBpbnRlcnAtPmJ1aWx0aW5SZWZlcmVuY2VFcnJvcigpOwogICAgIGJyZWFrOwogICBj
YXNlIFN5bnRheEVycm9yOgotICAgIGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+
YnVpbHRpblN5bnRheEVycm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpblN5bnRheEVy
cm9yKCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgVHlwZUVycm9yOgotICAgIGNvbnMgPSBleGVjLT5s
ZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpblR5cGVFcnJvcigpOworICAgIGNvbnMgPSBpbnRl
cnAtPmJ1aWx0aW5UeXBlRXJyb3IoKTsKICAgICBicmVhazsKICAgY2FzZSBVUklFcnJvcjoKLSAg
ICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5VUklFcnJvcigpOwor
ICAgIGNvbnMgPSBpbnRlcnAtPmJ1aWx0aW5VUklFcnJvcigpOwogICAgIGJyZWFrOwogICBkZWZh
dWx0OgotICAgIGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbkVycm9y
KCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpbkVycm9yKCk7CiAgICAgYnJlYWs7CiAgIH0K
IApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9vYmplY3QuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDI0ICs4MCwyOSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgcHVibGljOgogICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gR2V0
dGVyU2V0dGVyVHlwZTsgfQogICAgICAgCi0gICAgR2V0dGVyU2V0dGVySW1wKCkgOiBnZXR0ZXIo
MCksIHNldHRlcigwKSB7IH0KKyAgICBHZXR0ZXJTZXR0ZXJJbXAoKSA6IGdldHRlcigwKSwgc2V0
dGVyKDApLCBtX2xvY2FsSW5qZWN0ZWQoZmFsc2UpIHsgfQogICAgICAgCiAgICAgdmlydHVhbCBK
U1ZhbHVlICp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIEpTVHlwZSBwcmVmZXJyZWQgPSBV
bnNwZWNpZmllZFR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0
YXRlICpleGVjKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUg
KmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKmV4
ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwgSlNPYmplY3QgKnRvT2JqZWN0KEV4ZWNTdGF0ZSAqZXhl
YykgY29uc3Q7Ci0gICAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAgICAgICAKICAg
ICBKU09iamVjdCAqZ2V0R2V0dGVyKCkgeyByZXR1cm4gZ2V0dGVyOyB9CiAgICAgdm9pZCBzZXRH
ZXR0ZXIoSlNPYmplY3QgKmcpIHsgZ2V0dGVyID0gZzsgfQogICAgIEpTT2JqZWN0ICpnZXRTZXR0
ZXIoKSB7IHJldHVybiBzZXR0ZXI7IH0KICAgICB2b2lkIHNldFNldHRlcihKU09iamVjdCAqcykg
eyBzZXR0ZXIgPSBzOyB9Ci0gICAgICAKKworICAgIGJvb2wgaXNMb2NhbEluamVjdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbEluamVjdGVkOyB9CisgICAgdm9pZCBzZXRMb2NhbEluamVjdGVk
KCkgeyBtX2xvY2FsSW5qZWN0ZWQgPSB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgSlNPYmplY3Qg
KmdldHRlcjsKLSAgICBKU09iamVjdCAqc2V0dGVyOyAgCisgICAgSlNPYmplY3QgKnNldHRlcjsg
CisKKyAgICBib29sIG1fbG9jYWxJbmplY3RlZCA6IDE7IC8vIFVzZWQgd2hlbiB0aGlzIG9iamVj
dCBpcyB0aGUgYWN0aXZlIHNjb3BlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
dG8gZGVub3RlIGR5bmFtaWMgYWRkaXRpb24gb2YgbG9jYWwgdmFyaWFibGVzCiAgIH07CiAgIAog
ICBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNDMyLDcgKzQzNywxMCBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICBKU1ZhbHVlICpnZXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7IHJldHVybiBfcHJvcC5nZXQocHJvcGVydHlO
YW1lKTsgfQogICAgIEpTVmFsdWUgKipnZXREaXJlY3RMb2NhdGlvbihjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCi0gICAgICAgIHsgcmV0dXJuIF9wcm9wLmdldExvY2F0aW9uKHByb3Bl
cnR5TmFtZSk7IH0KKyAgICAgICAgeyBib29sIGR1bW15OyByZXR1cm4gX3Byb3AuZ2V0TG9jYXRp
b24ocHJvcGVydHlOYW1lLCBkdW1teSk7IH0KKyAgICBKU1ZhbHVlICoqZ2V0RGlyZWN0TG9jYXRp
b24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBib29sJiBybykKKyAgICAgICAgeyBy
ZXR1cm4gX3Byb3AuZ2V0TG9jYXRpb24ocHJvcGVydHlOYW1lLCBybyk7IH0KKwogICAgIHZvaWQg
cHV0RGlyZWN0KGNvbnN0IElkZW50aWZpZXIgJnByb3BlcnR5TmFtZSwgSlNWYWx1ZSAqdmFsdWUs
IGludCBhdHRyID0gMCk7CiAgICAgdm9pZCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciAmcHJv
cGVydHlOYW1lLCBpbnQgdmFsdWUsIGludCBhdHRyID0gMCk7CiAKQEAgLTQ1NCw3ICs0NjIsMTAg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdm9pZCBzYXZlUHJvcGVydGllcyhTYXZlZFByb3BlcnRp
ZXMgJnApIGNvbnN0IHsgX3Byb3Auc2F2ZShwKTsgfQogICAgIHZvaWQgcmVzdG9yZVByb3BlcnRp
ZXMoY29uc3QgU2F2ZWRQcm9wZXJ0aWVzICZwKSB7IF9wcm9wLnJlc3RvcmUocCk7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0FjdGl2YXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9v
bCBpc0xvY2FsSW5qZWN0ZWQoKSBjb25zdCB7IHJldHVybiBfcHJvcC5pc0xvY2FsSW5qZWN0ZWQo
KTsgfQorICAgIHZvaWQgc2V0TG9jYWxJbmplY3RlZCgpIHsgX3Byb3Auc2V0TG9jYWxJbmplY3Rl
ZCgpOyB9CiAgIHByb3RlY3RlZDoKICAgICBQcm9wZXJ0eU1hcCBfcHJvcDsKICAgcHJpdmF0ZToK
QEAgLTU1MCw2ICs1NjEsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc09iamVjdChjb25zdCBD
bGFzCiBpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgSlNPYmplY3QgKm9iamVjdCA9IHRoaXM7CisgICAgc2xvdC5zZXRQb3RlbnRpYWxseVdy
aXRlYWJsZSgpOwogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlmIChvYmplY3QtPmdldE93
blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC01NTgsNiArNTcwLDggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFBy
b3BlcnR5U2xvdChFeAogICAgICAgICBpZiAoIXByb3RvLT5pc09iamVjdCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIHNsb3Quc2V0UmVhZE9ubHkoKTsKKwogICAgICAg
ICBvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCAqPihwcm90byk7CiAgICAgfQogfQpAQCAt
NTY1LDI2ICs1NzksMjYgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChF
eAogLy8gSXQgbWF5IHNlZW0gY3JhenkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSwg
ZXNwZWNpYWxseSBhIHZpcnR1YWwgZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMgYSBiaWcgZGlm
ZmVyZW5jZSB0byBwcm9wZXJ0eSBsb29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMgY2FuIGlubGlu
ZSB0aGVpcgogLy8gYmFzZSBjbGFzcyBjYWxsIHRvIHRoaXMuCi1BTFdBWVNfSU5MSU5FIGJvb2wg
SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBi
b29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAo
SlNWYWx1ZSAqKmxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKSkgewor
ICAgIGJvb2wgcm87CisgICAgaWYgKEpTVmFsdWUgKipsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0
aW9uKHByb3BlcnR5TmFtZSwgcm8pKSB7CiAgICAgICAgIGlmIChfcHJvcC5oYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKCkgJiYgbG9jYXRpb25bMF0tPnR5cGUoKSA9PSBHZXR0ZXJTZXR0ZXJUeXBl
KQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCBsb2NhdGlvbik7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsIGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsIGxvY2F0aW9uLCBybyk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIG5vbi1zdGFuZGFyZCBOZXRzY2Fw
ZSBleHRlbnNpb24KICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS51bmRlcnNjb3JlUHJvdG8pIHsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhpcywgJl9w
cm90byk7CisgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsICZfcHJvdG8sIFByb3BlcnR5
U2xvdDo6UGVybWl0RGlyZWN0V3JpdGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLQogLy8gRklYTUU6IFB1dCB0aGlzIGZ1bmN0aW9uIGlu
IGEgc2VwYXJhdGUgZmlsZSBuYW1lZCBzb21ldGhpbmcgbGlrZSBzY29wZV9jaGFpbl9tYXJrLmgg
LS0gY2FuJ3QgcHV0IGl0IGluIHNjb3BlX2NoYWluLmggc2luY2UgaXQgZGVwZW5kcyBvbiBKU09i
amVjdC4KIAogaW5saW5lIHZvaWQgU2NvcGVDaGFpbjo6bWFyaygpCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvcHJvcGVydHlfbWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvcHJvcGVydHlfbWFwLmNwcAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvcHJvcGVydHlfbWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDcgKzIzNSw3IEBAIEpT
VmFsdWUgKlByb3BlcnR5TWFwOjpnZXQoY29uc3QgSWRlbnRpZmkKICAgICByZXR1cm4gMDsKIH0K
IAotSlNWYWx1ZSAqKlByb3BlcnR5TWFwOjpnZXRMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyICZu
YW1lKQorSlNWYWx1ZSAqKlByb3BlcnR5TWFwOjpnZXRMb2NhdGlvbihjb25zdCBJZGVudGlmaWVy
ICZuYW1lLCBib29sJiByZWFkT25seSkKIHsKICAgICBhc3NlcnQoIW5hbWUuaXNOdWxsKCkpOwog
ICAgIApAQCAtMjQ0LDggKzI0NCwxMCBAQCBKU1ZhbHVlICoqUHJvcGVydHlNYXA6OmdldExvY2F0
aW9uKGNvbnN0CiAgICAgaWYgKCFtX3VzaW5nVGFibGUpIHsKICNpZiBVU0VfU0lOR0xFX0VOVFJZ
CiAgICAgICAgIFVTdHJpbmc6OlJlcCAqa2V5ID0gbV9zaW5nbGVFbnRyeUtleTsKLSAgICAgICAg
aWYgKHJlcCA9PSBrZXkpCisgICAgICAgIGlmIChyZXAgPT0ga2V5KSB7CisgICAgICAgICAgICBy
ZWFkT25seSA9IG1fc2luZ2xlRW50cnlBdHRyaWJ1dGVzICYgUmVhZE9ubHk7CiAgICAgICAgICAg
ICByZXR1cm4gJm1fdS5zaW5nbGVFbnRyeVZhbHVlOworICAgICAgICB9CiAjZW5kaWYKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMjYwLDggKzI2MiwxMCBAQCBKU1ZhbHVlICoqUHJvcGVy
dHlNYXA6OmdldExvY2F0aW9uKGNvbnN0CiAgICAgbnVtQ29sbGlzaW9ucyArPSBlbnRyaWVzW2ld
LmtleSAmJiBlbnRyaWVzW2ldLmtleSAhPSByZXA7CiAjZW5kaWYKICAgICB3aGlsZSAoVVN0cmlu
Zzo6UmVwICprZXkgPSBlbnRyaWVzW2ldLmtleSkgewotICAgICAgICBpZiAocmVwID09IGtleSkK
KyAgICAgICAgaWYgKHJlcCA9PSBrZXkpIHsKKyAgICAgICAgICAgIHJlYWRPbmx5ID0gZW50cmll
c1tpXS5hdHRyaWJ1dGVzICYgUmVhZE9ubHk7CiAgICAgICAgICAgICByZXR1cm4gJmVudHJpZXNb
aV0udmFsdWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgIGsg
PSAxIHwgKGggJSBzaXplTWFzayk7CiAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1hc2s7CkBA
IC0yOTYsNyArMzAwLDcgQEAgdm9pZCBQcm9wZXJ0eU1hcDo6cHV0KGNvbnN0IElkZW50aWZpZXIg
JgogewogICAgIGFzc2VydCghbmFtZS5pc051bGwoKSk7CiAgICAgYXNzZXJ0KHZhbHVlICE9IDAp
OwotICAgIAorCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogCiAgICAgVVN0cmluZzo6UmVwICpy
ZXAgPSBuYW1lLl91c3RyaW5nLnJlcCgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3Byb3Bl
cnR5X21hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9tYXAu
aAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlfbWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IElkZW50aWZpZXIgJm5hbWUpOwogICAgICAgICBKU1ZhbHVlICpn
ZXQoY29uc3QgSWRlbnRpZmllciAmbmFtZSkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgKmdldChj
b25zdCBJZGVudGlmaWVyICZuYW1lLCB1bnNpZ25lZCAmYXR0cmlidXRlcykgY29uc3Q7Ci0gICAg
ICAgIEpTVmFsdWUgKipnZXRMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyICZuYW1lKTsKKyAgICAg
ICAgSlNWYWx1ZSAqKmdldExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUsIGJvb2wmIHJl
YWRPbmx5KTsKIAogICAgICAgICB2b2lkIG1hcmsoKSBjb25zdDsKICAgICAgICAgdm9pZCBnZXRF
bnVtZXJhYmxlUHJvcGVydHlOYW1lcyhQcm9wZXJ0eU5hbWVBcnJheSYpIGNvbnN0OwpAQCAtODks
NiArODksOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdm9pZCBzZXRIYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKGJvb2wgZikgeyBtX2dldHRlclNldHRlckZsYWcgPSBmOyB9CiAKICAgICAg
ICAgYm9vbCBjb250YWluc0dldHRlcnNPclNldHRlcnMoKSBjb25zdDsKKworICAgICAgICBib29s
IGlzTG9jYWxJbmplY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxJbmplY3RlZDsgfQorICAg
ICAgICB2b2lkIHNldExvY2FsSW5qZWN0ZWQoKSB7IG1fbG9jYWxJbmplY3RlZCA9IHRydWU7IH0K
ICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgYm9vbCBrZXlzTWF0Y2goY29uc3QgVVN0cmlu
Zzo6UmVwICosIGNvbnN0IFVTdHJpbmc6OlJlcCAqKTsKICAgICAgICAgdm9pZCBleHBhbmQoKTsK
QEAgLTExMSwxMyArMTE0LDE1IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzaG9ydCBtX3Np
bmdsZUVudHJ5QXR0cmlidXRlczsKICAgICAgICAgYm9vbCBtX2dldHRlclNldHRlckZsYWcgOiAx
OwogICAgICAgICBib29sIG1fdXNpbmdUYWJsZSA6IDE7CisgICAgICAgIGJvb2wgbV9sb2NhbElu
amVjdGVkIDogMTsgLy8gVXNlZCB3aGVuIHRoaXMgb2JqZWN0IGlzIHRoZSBhY3RpdmUgc2NvcGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGVub3RlIGR5bmFtaWMg
YWRkaXRpb24gb2YgbG9jYWwgdmFyaWFibGVzCiAgICAgfTsKIAogICAgIGlubGluZSBQcm9wZXJ0
eU1hcDo6UHJvcGVydHlNYXAoKSAKICAgICAgICAgOiBtX3NpbmdsZUVudHJ5S2V5KDApCiAgICAg
ICAgICwgbV9nZXR0ZXJTZXR0ZXJGbGFnKGZhbHNlKQogICAgICAgICAsIG1fdXNpbmdUYWJsZShm
YWxzZSkKLQorICAgICAgICAsIG1fbG9jYWxJbmplY3RlZChmYWxzZSkKICAgICB7CiAgICAgfQog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlfc2xvdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9zbG90LmgJKHJldmlzaW9uIDI0NTU4KQorKysg
SmF2YVNjcmlwdENvcmUva2pzL3Byb3BlcnR5X3Nsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
OSArNTMsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuICptX2RhdGEudmFsdWVTbG90
OwogICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZShleGVjLCBvcmlnaW5hbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbShwcm9wZXJ0eU5hbWUpLCAqdGhpcyk7IAogICAgIH0KLSAgICAKLSAgICB2b2lk
IHNldFZhbHVlU2xvdChKU09iamVjdCAqc2xvdEJhc2UsIEpTVmFsdWUgKip2YWx1ZVNsb3QpIAor
CisgICAgLy8gUmVhZGFiaWxpdHkgaGVscGVyIGZvciBiZWxvdy4uCisgICAgZW51bSB7CisgICAg
ICAgIFBlcm1pdERpcmVjdFdyaXRlID0gMCwKKyAgICAgICAgRm9yYmlkRGlyZWN0V3JpdGUgPSAx
CisgICAgfTsKKworICAgIHZvaWQgc2V0VmFsdWVTbG90KEpTT2JqZWN0ICpzbG90QmFzZSwgSlNW
YWx1ZSAqKnZhbHVlU2xvdCwgYm9vbCBtYWtlUmVhZE9ubHkpIAogICAgIHsKKyAgICAgICAgbV9y
ZWFkT25seSB8PSBtYWtlUmVhZE9ubHk7CiAgICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsK
ICAgICAgICAgbV9kYXRhLnZhbHVlU2xvdCA9IHZhbHVlU2xvdDsKICAgICAgICAgbV9nZXRWYWx1
ZSA9IFZBTFVFX1NMT1RfTUFSS0VSOwpAQCAtMTAyLDYgKzEwOSwyMSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgSGFzaEVudHJ5ICpzdGF0aWNFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zdGF0
aWNFbnRyeTsgfQogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlu
ZGV4OyB9CiAKKyAgICAvLyBGb3IgZGlyZWN0L3ZhbHVlIHNsb3RzIHdlIGFsc28ga2VlcCB0cmFj
ayBvZiB3aGV0aGVyIHRoZXkncmUgCisgICAgLy8gd3JpdGVhYmxlLiBUaGlzIGlzIGNsZWFyZWQg
d2hlbiB0aGUgbG9va3VwIHN1Y2NlZWRzIGluIHRoZSAKKyAgICAvLyBwcm90b3R5cGUgc2luY2Ug
dGhlIHdyaXRlIHNob3VsZCBnbyBlbHNld2hlcmUuCisgICAgLy8gIyMjIGl0IG1heSBtYWtlIHNl
bnNlIHRvIGdpdmUgaXQgYSByZWFsICdyZWFkIG9ubHknIHZhbHVlLCB2LnMuIAorICAgIC8vIGEg
J25vdCBzdXJlJyBvbmUsIHNpbmNlIHJpZ2h0IG5vdCBhbiBhdHRlbXB0IHRvIHdyaXRlIGEgY29u
c3QgCisgICAgLy8gd2lsbCB0YWtlIHRoZSBzbG93IHBhdGguCisgICAgdm9pZCBzZXRQb3RlbnRp
YWxseVdyaXRlYWJsZSgpIHsgbV9yZWFkT25seSA9IGZhbHNlOyB9CisgICAgdm9pZCBzZXRSZWFk
T25seSgpICAgICAgICAgICAgIHsgbV9yZWFkT25seSA9IHRydWU7ICB9CisKKyAgICAvLyBUaGlz
IHJldHVybnMgYSBwb2ludGVyIHdoZXJlIHRoZSB2YWx1ZSBtYXkgYmUgc3RvcmVkLAorICAgIC8v
IG9yIDAgaWYgdGhpcyBpcyBub3QgcG9zc2libGUuCisgICAgSlNWYWx1ZSoqIGdldERpcmVjdFdy
aXRlTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuICgobV9nZXRWYWx1ZSA9PSBWQUxV
RV9TTE9UX01BUktFUikgJiAhbV9yZWFkT25seSkgPyBtX2RhdGEudmFsdWVTbG90IDogMDsKKyAg
ICB9CiBwcml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlICp1bmRlZmluZWRHZXR0ZXIoRXhlY1N0
YXRlICosIEpTT2JqZWN0ICosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICBzdGF0aWMgSlNWYWx1ZSAqZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlICosIEpTT2Jq
ZWN0ICosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTExNSw2
ICsxMzcsOCBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBIYXNoRW50cnkgKnN0YXRpY0VudHJ5
OwogICAgICAgICB1bnNpZ25lZCBpbmRleDsKICAgICB9IG1fZGF0YTsKKworICAgIGJvb2wgbV9y
ZWFkT25seTsKIH07CiAKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9yZWZlcmVuY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvcmVmZXJlbmNlLmgJKHJldmlzaW9uIDAp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvcmVmZXJlbmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjQgQEAKKy8vIC0qLSBjLWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFr
c2ltIE9ybG92aWNoIChtYWtzaW1Aa2RlLm9yZykKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUkVG
RVJFTkNFX0gKKyNkZWZpbmUgUkVGRVJFTkNFX0gKKworI2luY2x1ZGUgIm9iamVjdC5oIgorI2lu
Y2x1ZGUgInByb3BlcnR5X3Nsb3QuaCIKKworbmFtZXNwYWNlIEtKUyB7CisKK3N0cnVjdCBSZWZl
cmVuY2UgeworICAgIC8vIyMjIHNvbWUgcHJvdGVjdGlvbiBoZXJlIQorICAgIFByb3BlcnR5U2xv
dCAgcHJvcGVydHlTbG90OworICAgIGJvb2wgICAgICAgICAgZm91bmQ7IC8vbm90ZTogc2hvdWxk
IGZpdCBpbnRvIHBhZGRpbmcgb2YgYWJvdmUuLgorCisgICAgSlNPYmplY3QqICAgICBiYXNlOyAg
Ly9UaGlzIGlzbid0IHRoZSBzYW1lIGFzIHNsb3QncyBiYXNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vYXMgdGhhdCBtYXkgYmUgZGlmZmVyZW50IGluIGNhc2UgcHJvdG90eXBlcyBhcmUg
aW52b2x2ZWQuLgorICAgIElkZW50aWZpZXIgICAgaWRlbnQ7CisKKyAgICBSZWZlcmVuY2UoKSB7
IH0KKworICAgIFJlZmVyZW5jZShjb25zdCBJZGVudGlmaWVyJiBpKSA6IGlkZW50KGkpIHsgfQor
CisgICAgLy8gTm90ZTogZm9yIHJlZmVyZW5jZXMsIHdlIG1ha2Ugc3VyZSB0aGUgc2xvdCBwb2lu
dHMgdG8gdGhlIG91dGVyCisgICAgLy8gc2NvcGUgaWYgbG9va3VwIGZhaWxlZC4uCisgICAgSlNW
YWx1ZSogcmVhZChFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5U2xv
dC5nZXRWYWx1ZShleGVjLCBiYXNlLCBpZGVudCk7CisgICAgfQorCisgICAgdm9pZCB3cml0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbCkgeworICAgICAgICBpZiAoSlNWYWx1ZSoqIGxv
YyA9IHByb3BlcnR5U2xvdC5nZXREaXJlY3RXcml0ZUxvY2F0aW9uKCkpCisgICAgICAgICAgICAq
bG9jID0gdmFsOworICAgICAgICBlbHNlCisgICAgICAgICAgICBiYXNlLT5wdXQoZXhlYywgaWRl
bnQsIHZhbCk7CisgICAgfQorCisgICAgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMpIHsKKyAgICAgICAgcmV0dXJuIGJhc2UtPmRlbGV0ZVByb3BlcnR5KGV4ZWMsIGlkZW50KTsK
KyAgICB9Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3NlbWFu
dGljX2NoZWNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9zZW1hbnRp
Y19jaGVja2VyLmNwcAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9zZW1hbnRp
Y19jaGVja2VyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTAgQEAKKy8vIC0qLSBjLWJh
c2ljLW9mZnNldDogMiAtKi0KKy8qCisgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBs
aWJyYXJpZXMKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRl
bkBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQorICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21w
dXRlciwgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzaW0gT3Jsb3ZpY2ggKG1ha3Np
bUBrZGUub3JnKQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgInNlbWFudGljX2NoZWNrZXIuaCIK
KworbmFtZXNwYWNlIEtKUyB7CisKKwordm9pZCBTZW1hbnRpY0NoZWNrZXI6OmVudGVyU2VtYW50
aWNDb250ZXh0KCkKK3sKKyAgY29udGV4dFN0YWNrLmFwcGVuZChTZW1hbnRpY0NvbnRleHQoKSk7
Cit9CisKK3ZvaWQgU2VtYW50aWNDaGVja2VyOjpleGl0U2VtYW50aWNDb250ZXh0KCkKK3sKKyAg
Y29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKK30KKworTm9kZSogU2VtYW50aWNDaGVja2VyOjp2
aXNpdChOb2RlKiBub2RlKQoreworICByZXR1cm4gbm9kZS0+Y2hlY2tTZW1hbnRpY3ModGhpcyk7
Cit9CisKK3ZvaWQgU2VtYW50aWNDaGVja2VyOjpjaGVja1NlbWFudGljcyhOb2RlKiBub2RlKSB7
CisgIGVudGVyU2VtYW50aWNDb250ZXh0KCk7CisgIHZpc2l0KG5vZGUpOworICBleGl0U2VtYW50
aWNDb250ZXh0KCk7Cit9CisKK05vZGUqIE5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hl
Y2tlciogY2hlY2tlclN0YXRlKQoreworICByZWN1cnNlVmlzaXQoY2hlY2tlclN0YXRlKTsKKyAg
cmV0dXJuIDA7Cit9CisKK05vZGUqIFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFu
dGljQ2hlY2tlciogY2hlY2tlclN0YXRlKQoreworICBTZW1hbnRpY0NvbnRleHQqIGN0eCA9IGNo
ZWNrZXJTdGF0ZS0+c2VtYW50aWNDb250ZXh0KCk7CisKKyAgYm9vbCBpc0xvb3AgICA9IGlzSXRl
cmF0aW9uU3RhdGVtZW50KCk7CisgIGJvb2wgaXNTd2l0Y2ggPSBpc1N3aXRjaFN0YXRlbWVudCgp
OworICAKKyAgaWYgKCFjdHgtPnBlbmRpbmdMYWJlbHMuaXNFbXB0eSgpKSB7CisgICAgLy8gV2Ug
d291bGQgbGlrZSB0byBwcm9wZXJseSBiaW5kIHRoZSBsYWJlbHMgYXQgdGhpcyBwb2ludCwKKyAg
ICAvLyBub3cgdGhhdCB3ZSBnb3QgdG8gc29tZSByZWFsIGNvZGUuIEhvdyB3ZSBiaW5kIGRlcGVu
ZHMgb24KKyAgICAvLyB3aGF0IHRoZSBjdXJyZW50IHN0YXRlbWVudCBpczogaWYgaXQncyBhIHN3
aXRjaCBvciBhIGxvb3AsCisgICAgLy8gd2UgYmluZCB0byB0aGF0LCBvdGhlcndpc2UgYmluZCB0
byB0aGUgbGFiZWwgaXRzZWxmLCBmb3IgdGhlCisgICAgLy8gbGFiZWw6IGJyZWFrIGxhYmVsOyB0
eXBlIG9mIHVzYWdlLgorICAgIE5vZGUqIGxhYmVsVGFyZ2V0ID0gKGlzTG9vcCB8fCBpc1N3aXRj
aCkgPyB0aGlzIDogY3R4LT5sYXN0TGFiZWw7CisgICAgCisgICAgZm9yIChIYXNoU2V0PElkZW50
aWZpZXI+OjppdGVyYXRvciBpID0gICBjdHgtPnBlbmRpbmdMYWJlbHMuYmVnaW4oKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY3R4LT5wZW5kaW5nTGFiZWxz
LmVuZCgpOyArK2kpIHsKKyAgICAgIGN0eC0+bGFiZWxUYXJnZXRzLmFkZCgqaSwgbGFiZWxUYXJn
ZXQpOworICAgIH0KKworICAgIGN0eC0+cGVuZGluZ0xhYmVscy5jbGVhcigpOworICB9CisKKyAg
aWYgKGlzTG9vcCkgeworICAgIGN0eC0+ZGVmYXVsdENvbnRpbnVlVGFyZ2V0cy5hcHBlbmQodGhp
cyk7CisgICAgY3R4LT5kZWZhdWx0QnJlYWtUYXJnZXRzLmFwcGVuZCh0aGlzKTsKKyAgfQorCisg
IGlmIChpc1N3aXRjaCkKKyAgICBjdHgtPmRlZmF1bHRCcmVha1RhcmdldHMuYXBwZW5kKHRoaXMp
OworCisgICh2b2lkKSBOb2RlOjpjaGVja1NlbWFudGljcyhjaGVja2VyU3RhdGUpOworCisgIGlm
IChpc0xvb3ApIHsKKyAgICBjdHgtPmRlZmF1bHRDb250aW51ZVRhcmdldHMucmVtb3ZlTGFzdCgp
OworICAgIGN0eC0+ZGVmYXVsdEJyZWFrVGFyZ2V0cy5yZW1vdmVMYXN0KCk7CisgIH0KKworICBp
ZiAoaXNTd2l0Y2gpCisgICAgY3R4LT5kZWZhdWx0QnJlYWtUYXJnZXRzLnJlbW92ZUxhc3QoKTsK
KworICByZXR1cm4gMDsKK30KKworTm9kZSogTGFiZWxOb2RlOjpjaGVja1NlbWFudGljcyhTZW1h
bnRpY0NoZWNrZXIqIGNoZWNrZXJTdGF0ZSkKK3sKKyAgU2VtYW50aWNDb250ZXh0KiBjdHggPSBj
aGVja2VyU3RhdGUtPnNlbWFudGljQ29udGV4dCgpOworCisgIC8vIEFkZCB0aGUgbGFiZWwgdG8g
dGhlIHNlZW4gc2V0LCBhbmQgc2VlIGlmIGl0J3MgYWxyZWFkeSB0aGVyZS4uCisgIGlmICghY3R4
LT5zZWVuTGFiZWxzLmFkZChsYWJlbCkuc2Vjb25kKQorICAgIHJldHVybiBjcmVhdGVFcnJvck5v
ZGUoU3ludGF4RXJyb3IsICJEdXBsaWNhdGVkIGxhYmVsICVzIGZvdW5kLiIsIGxhYmVsKTsKKwor
ICAvLyBBZGQgaXQgdG8gdGhlIHNldCBvZiBwZW5kaW5nIGxhYmVscywgbWVtb3JpemUgdGhpcyBu
b2RlIGFzCisgIC8vIGNhbmRpZGF0ZSBmb3IgYmluZGluZyB0aGUgbmFtZQorICBjdHgtPnBlbmRp
bmdMYWJlbHMuYWRkKGxhYmVsKTsKKyAgY3R4LT5sYXN0TGFiZWwgPSB0aGlzOworCisgIC8vIFdl
IGRvIG5vdCBjYWxsIHVwIHRvIFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzLCBzaW5jZSB0
aGF0IHdvdWxkCisgIC8vIGFwcGx5IGFjY3VtdWxhdGVkIGxhYmVscywgYW5kIHdlIHdhbnQgdG8g
ZGVmZXIgdGhlbSB1bnRpbCB3ZSBnZXQgdGhlCisgIC8vIGZpcnN0IG5vbi1sYWJlbCBzdGF0ZW1l
bnQuCisgICh2b2lkKU5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7CisKKyAgY3R4
LT5sYWJlbFRhcmdldHMucmVtb3ZlKGxhYmVsKTsKKyAgY3R4LT5zZWVuTGFiZWxzLnJlbW92ZShs
YWJlbCk7CisgIHJldHVybiAwOworfQorCitOb2RlKiBGdW5jRGVjbE5vZGU6OmNoZWNrU2VtYW50
aWNzKFNlbWFudGljQ2hlY2tlciogY2hlY2tlclN0YXRlKQoreworICBjaGVja2VyU3RhdGUtPmVu
dGVyU2VtYW50aWNDb250ZXh0KCk7CisgICh2b2lkKVN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50
aWNzKGNoZWNrZXJTdGF0ZSk7CisgIGNoZWNrZXJTdGF0ZS0+ZXhpdFNlbWFudGljQ29udGV4dCgp
OworICByZXR1cm4gMDsKK30KKworTm9kZSogRnVuY0V4cHJOb2RlOjpjaGVja1NlbWFudGljcyhT
ZW1hbnRpY0NoZWNrZXIqIGNoZWNrZXJTdGF0ZSkKK3sKKyAgY2hlY2tlclN0YXRlLT5lbnRlclNl
bWFudGljQ29udGV4dCgpOworICAodm9pZClOb2RlOjpjaGVja1NlbWFudGljcyhjaGVja2VyU3Rh
dGUpOworICBjaGVja2VyU3RhdGUtPmV4aXRTZW1hbnRpY0NvbnRleHQoKTsKKyAgcmV0dXJuIDA7
Cit9CisKK05vZGUqIENvbnRpbnVlTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2Vy
KiBjaGVja2VyU3RhdGUpCit7CisgIFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNr
ZXJTdGF0ZSk7IC8vUmVzb2x2ZSBxdWV1ZWQgbGFiZWxzIGlmIG5lZWQgYmUuLgorCisgIFNlbWFu
dGljQ29udGV4dCogY3R4ID0gY2hlY2tlclN0YXRlLT5zZW1hbnRpY0NvbnRleHQoKTsKKworICAv
LyBCaW5kIHRoZSBsYWJlbC4uCisgIGlmIChpZGVudC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoY3R4
LT5kZWZhdWx0Q29udGludWVUYXJnZXRzLmlzRW1wdHkoKSkKKyAgICAgIHJldHVybiBjcmVhdGVF
cnJvck5vZGUoU3ludGF4RXJyb3IsICJJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4iKTsKKyAg
ICBlbHNlCisgICAgICB0YXJnZXQgPSBjdHgtPmRlZmF1bHRDb250aW51ZVRhcmdldHMubGFzdCgp
OworICB9IGVsc2UgIHsKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBrbm93IHRoaXMgbGFiZWws
IGFuZCB0aGF0IGl0IGlzIGEgCisgICAgLy8gbG9vcC1zdHlsZSBsYWJlbHMuCisgICAgaWYgKCFj
dHgtPnNlZW5MYWJlbHMuY29udGFpbnMoaWRlbnQpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9y
Tm9kZShTeW50YXhFcnJvciwgIkxhYmVsICVzIG5vdCBmb3VuZC4iLCBpZGVudCk7CisgICAgdGFy
Z2V0ID0gY3R4LT5sYWJlbFRhcmdldHMuZ2V0KGlkZW50KTsKKworICAgIGlmICghdGFyZ2V0LT5p
c0l0ZXJhdGlvblN0YXRlbWVudCgpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50
YXhFcnJvciwgIkludmFsaWQgY29udGludWUgc3RhdGVtZW50LiIpOworICB9CisKKyAgcmV0dXJu
IDA7Cit9CisKK05vZGUqIEJyZWFrTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2Vy
KiBjaGVja2VyU3RhdGUpCit7CisgIFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNr
ZXJTdGF0ZSk7IC8vUmVzb2x2ZSBxdWV1ZWQgbGFiZWxzIGlmIG5lZWQgYmUuLgorCisgIFNlbWFu
dGljQ29udGV4dCogY3R4ID0gY2hlY2tlclN0YXRlLT5zZW1hbnRpY0NvbnRleHQoKTsKKworICAv
LyBCaW5kIHRoZSBsYWJlbC4uCisgIGlmIChpZGVudC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoY3R4
LT5kZWZhdWx0QnJlYWtUYXJnZXRzLmlzRW1wdHkoKSkKKyAgICAgIHJldHVybiBjcmVhdGVFcnJv
ck5vZGUoU3ludGF4RXJyb3IsICJJbnZhbGlkIGJyZWFrIHN0YXRlbWVudC4iKTsKKyAgICBlbHNl
CisgICAgICB0YXJnZXQgPSBjdHgtPmRlZmF1bHRCcmVha1RhcmdldHMubGFzdCgpOworICB9IGVs
c2UgIHsKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBrbm93IHRoaXMgbGFiZWwKKyAgICBpZiAo
IWN0eC0+c2VlbkxhYmVscy5jb250YWlucyhpZGVudCkpCisgICAgICByZXR1cm4gY3JlYXRlRXJy
b3JOb2RlKFN5bnRheEVycm9yLCAiTGFiZWwgJXMgbm90IGZvdW5kLiIsIGlkZW50KTsKKyAgICB0
YXJnZXQgPSBjdHgtPmxhYmVsVGFyZ2V0cy5nZXQoaWRlbnQpOworICB9CisKKyAgcmV0dXJuIDA7
Cit9CisKKworfSAvL25hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9zZW1h
bnRpY19jaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGlj
X2NoZWNrZXIuaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9zZW1hbnRpY19j
aGVja2VyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKKy8vIC0qLSBjLWJhc2ljLW9m
ZnNldDogMiAtKi0KKy8qCisgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJp
ZXMKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUu
b3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQor
ICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwg
SW5jLgorICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzaW0gT3Jsb3ZpY2ggKG1ha3NpbUBrZGUu
b3JnKQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTRU1BTlRJQ19DSEVDS0VSX0gKKyNkZWZpbmUg
U0VNQU5USUNfQ0hFQ0tFUl9ICisKKyNpbmNsdWRlICJub2Rlcy5oIgorCisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKwordXNpbmcgV1RGOjpIYXNoU2V0OwordXNpbmcgV1RGOjpIYXNoTWFwOwordXNpbmcg
V1RGOjpWZWN0b3I7CisKK25hbWVzcGFjZSBLSlMgeworICBjbGFzcyBTZW1hbnRpY0NvbnRleHQg
eworICBwdWJsaWM6CisgICAgU2VtYW50aWNDb250ZXh0KCkge30KKworICAgIEhhc2hTZXQ8SWRl
bnRpZmllcj4gc2VlbkxhYmVsczsKKyAgICBIYXNoU2V0PElkZW50aWZpZXI+IHBlbmRpbmdMYWJl
bHM7CisgICAgTGFiZWxOb2RlKiAgICAgICAgICBsYXN0TGFiZWw7CisgICAgSGFzaE1hcDxJZGVu
dGlmaWVyLCBOb2RlKj4gbGFiZWxUYXJnZXRzOworCisgICAgVmVjdG9yPE5vZGUqPiBkZWZhdWx0
Q29udGludWVUYXJnZXRzOworICAgIFZlY3RvcjxOb2RlKj4gZGVmYXVsdEJyZWFrVGFyZ2V0czsK
KyAgfTsKKworCisgIC8qKgorICAgVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHN0YXRpY2FsbHkgZGV0
ZWN0IHNvbWUgY2xhc3NlcyBvZiBlcnJvcnMgaW4gdGhlCisgICBwcm9ncmFtLCBhbmQgcmVwbGFj
ZSB0aGVtIHdpdGggYW4gYXBwcm9wcmlhdGUgZXJyb3Igbm9kZS4KKyAgKi8KKyAgY2xhc3MgU2Vt
YW50aWNDaGVja2VyIDogcHVibGljIE5vZGVWaXNpdG9yIHsKKyAgcHVibGljOgorICAgIHZvaWQg
Y2hlY2tTZW1hbnRpY3MoTm9kZSogbm9kZSk7CisKKyAgICBTZW1hbnRpY0NvbnRleHQqIHNlbWFu
dGljQ29udGV4dCgpIHsgcmV0dXJuICZjb250ZXh0U3RhY2subGFzdCgpOyB9CisKKyAgICB2b2lk
IGVudGVyU2VtYW50aWNDb250ZXh0KCk7CisgICAgdm9pZCBleGl0U2VtYW50aWNDb250ZXh0KCk7
CisKKyAgICAvLyMjIyBzaG91bGQgcHJvbGx5IG1ha2UgcHJpdmF0ZSAtLS0gY2hlY2sgb3RoZXIg
dXNlcy4uCisgICAgdmlydHVhbCBOb2RlKiB2aXNpdChOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxM
OworCisgIHByaXZhdGU6CisgICAgVmVjdG9yPFNlbWFudGljQ29udGV4dD4gY29udGV4dFN0YWNr
OworICB9OworfTsKKworI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvdmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvdmFsdWUuaAkocmV2aXNpb24gMjQ1NTgp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvdmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcg
KzEwOCw2IEBAIHB1YmxpYzoKICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgdm9pZCBt
YXJrKCk7CiAgICAgYm9vbCBtYXJrZWQoKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICAvLyBJbXBs
ZW1lbnRhdGlvbiBkZXRhaWxzLgogICAgIEpTQ2VsbCAqYXNDZWxsKCk7CkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb3ppbGxhL2V4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUvdGVzdHMvbW96aWxsYS9leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyNDU1OCkKKysr
IEphdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtNywxMSArNywxMSBAQAogPHAgY2xhc3M9J3Jlc3VsdHNfc3VtbWFyeSc+CiBUZXN0IExp
c3Q6IEFsbCB0ZXN0czxicj4KIFNraXAgTGlzdDogKG5vbmUpPGJyPgotMTEzNSB0ZXN0KHMpIHNl
bGVjdGVkLCAxMTI3IHRlc3QocykgY29tcGxldGVkLCA2NCBmYWlsdXJlcyByZXBvcnRlZCAoNS42
NyUgZmFpbGVkKTxicj4KLUVuZ2luZSBjb21tYW5kIGxpbmU6IC9Vc2Vycy9kYXJpbi9CdWlsZC9E
ZWJ1Zy90ZXN0a2pzIDxicj4KLU9TIHR5cGU6IERhcndpbiBpbDAzMDFlLWRoY3AyMDEuYXBwbGUu
Y29tIDkuMC4wYjIgRGFyd2luIEtlcm5lbCBWZXJzaW9uIDkuMC4wYjI6IFR1ZSBKdW4gMjYgMTg6
NDA6NTUgUERUIDIwMDc7IHJvb3Q6eG51LTExMzkuMX4xL1JFTEVBU0VfUFBDIFBvd2VyIE1hY2lu
dG9zaDxicj4KLVRlc3RjYXNlIGV4ZWN1dGlvbiB0aW1lOiA3IG1pbnV0ZXMsIDEzIHNlY29uZHMu
PGJyPgotVGVzdHMgY29tcGxldGVkIG9uIFRodSBKdWwgMTkgMTM6MTA6MDggMjAwNy48YnI+PGJy
PgorMTEzNSB0ZXN0KHMpIHNlbGVjdGVkLCAxMTI3IHRlc3QocykgY29tcGxldGVkLCA2NiBmYWls
dXJlcyByZXBvcnRlZCAoNS44NSUgZmFpbGVkKTxicj4KK0VuZ2luZSBjb21tYW5kIGxpbmU6IC9V
c2Vycy9DYW1lcm9uL1dlYktpdC9XZWJLaXRCdWlsZC9SZWxlYXNlL3Rlc3RranMgPGJyPgorT1Mg
dHlwZTogRGFyd2luIGNwZTAwMWI2MzkzYTc0Ni1jbTAwNDA3Yjg2MDFjZC5jcGUubmV0LmNhYmxl
LnJvZ2Vycy5jb20gOC4xMC4xIERhcndpbiBLZXJuZWwgVmVyc2lvbiA4LjEwLjE6IFdlZCBNYXkg
MjMgMTY6MzM6MDAgUERUIDIwMDc7IHJvb3Q6eG51LTc5Mi4yMi41fjEvUkVMRUFTRV9JMzg2IGkz
ODYgaTM4Njxicj4KK1Rlc3RjYXNlIGV4ZWN1dGlvbiB0aW1lOiA0MiBzZWNvbmRzLjxicj4KK1Rl
c3RzIGNvbXBsZXRlZCBvbiBUaHUgQXVnICAyIDIxOjUzOjMyIDIwMDcuPGJyPjxicj4KIFsgPGEg
aHJlZj0nI2ZhaWxfZGV0YWlsJz5GYWlsdXJlIERldGFpbHM8L2E+IHwgPGEgaHJlZj0nI3JldGVz
dF9saXN0Jz5SZXRlc3QgTGlzdDwvYT4gfCA8YSBocmVmPSdtZW51Lmh0bWwnPlRlc3QgU2VsZWN0
aW9uIFBhZ2U8L2E+IF08YnI+CiA8aHI+CiA8YSBuYW1lPSdmYWlsX2RldGFpbCc+PC9hPgpAQCAt
MzUsMTkgKzM1LDE3IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiA8dHQ+RXhwZWN0ZWQg
ZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAw
PGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiA2MTggS0pTOjpO
b2RlPGJyPgogLS0+IFJlZ0V4cC9oZXgtMDAxLmpzIEpTIHJlZ2V4cCBhbmNob3Jpbmcgb24gZW1w
dHkgbWF0Y2ggYnVnPGJyPgogLS0+IEJVR05VTUJFUjogaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3PGJyPgotWzY3MDQ2XSAuL2VjbWFfMi9SZWdFeHAvcmVn
cmVzcy0wMDEuanMgbGluZSAxODogVHlwZUVycm9yOiBPYmplY3QgL2F8fGIvIChyZXN1bHQgb2Yg
ZXhwcmVzc2lvbiAvYXx8Yi8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KK1sxMDUzXSAuL2Vj
bWFfMi9SZWdFeHAvcmVncmVzcy0wMDEuanMgbGluZSAxODogVHlwZUVycm9yOiBPYmplY3QgL2F8
fGIvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvYXx8Yi8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxi
cj4KIDwvdHQ+PGJyPgogPGEgbmFtZT0nZmFpbHVyZTQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8yL1JlZ0V4cC91bmljb2RlLTAwMS5q
cyc+ZWNtYV8yL1JlZ0V4cC91bmljb2RlLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8
YSBocmVmPScjZmFpbHVyZTMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmU1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2Ug
dGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdh
czo8YnI+Ci1MRUFLOiA2NzEgS0pTOjpOb2RlPGJyPgogLS0+IFJlZ0V4cC91bmljb2RlLTAwMS5q
cyBuZXcgUmVnRXhwKCBwYXR0ZXJuLCBmbGFncyApPGJyPgotWzY3MDQ3XSAuL2VjbWFfMi9SZWdF
eHAvdW5pY29kZS0wMDEuanMgbGluZSAzMzogVHlwZUVycm9yOiBOdWxsIHZhbHVlPGJyPgorWzEw
NTRdIC4vZWNtYV8yL1JlZ0V4cC91bmljb2RlLTAwMS5qcyBsaW5lIDMzOiBUeXBlRXJyb3I6IE51
bGwgdmFsdWU8YnI+CiA8L3R0Pjxicj4KIDxhIG5hbWU9J2ZhaWx1cmU1Jz48L2E+PGRkPjxiPlRl
c3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9EYXRlLzE1Ljku
NS43LmpzJz5lY21hXzMvRGF0ZS8xNS45LjUuNy5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8
YSBocmVmPScjZmFpbHVyZTQnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmU2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CkBAIC02Miw4ICs2MCw4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAt
LT4gKE1vbiBGZWIgMjggMjAwMCAxNjowMDowMCBHTVQtMDgwMCAoUFNUKSkudG9Mb2NhbGVUaW1l
U3RyaW5nKCkgPSA0OjAwOjAwIFBNIFBTVCBGQUlMRUQhIGV4cGVjdGVkOiAxNjowMDowMDxicj4K
IC0tPiAoTW9uIEZlYiAyOCAyMDAwIDE1OjU5OjU5IEdNVC0wODAwIChQU1QpKS50b0xvY2FsZVRp
bWVTdHJpbmcoKSA9IDM6NTk6NTkgUE0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDE1OjU5OjU5PGJy
PgogLS0+IChUdWUgRmViIDI5IDIwMDAgMDA6MDA6MDAgR01ULTA4MDAgKFBTVCkpLnRvTG9jYWxl
VGltZVN0cmluZygpID0gMTI6MDA6MDAgQU0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDAwOjAwOjAw
PGJyPgotLS0+IChUaHUgSnVsIDE5IDIwMDcgMTM6MDk6MDEgR01ULTA3MDAgKFBEVCkpLnRvTG9j
YWxlVGltZVN0cmluZygpID0gMTowOTowMSBQTSBQRFQgRkFJTEVEISBleHBlY3RlZDogMTM6MDk6
MDE8YnI+Ci0tLT4gKFRodSBKdWwgMTkgMjAwNyAyMTowOTowMSBHTVQtMDcwMCAoUERUKSkudG9M
b2NhbGVUaW1lU3RyaW5nKCkgPSA5OjA5OjAxIFBNIFBEVCBGQUlMRUQhIGV4cGVjdGVkOiAyMTow
OTowMTxicj4KKy0tPiAoVGh1IEF1ZyAwMiAyMDA3IDIxOjUzOjIxIEdNVC0wNzAwIChQRFQpKS50
b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDk6NTM6MjEgUE0gUERUIEZBSUxFRCEgZXhwZWN0ZWQ6IDIx
OjUzOjIxPGJyPgorLS0+IChGcmkgQXVnIDAzIDIwMDcgMDU6NTM6MjEgR01ULTA3MDAgKFBEVCkp
LnRvTG9jYWxlVGltZVN0cmluZygpID0gNTo1MzoyMSBBTSBQRFQgRkFJTEVEISBleHBlY3RlZDog
MDU6NTM6MjE8YnI+CiAtLT4gKEZyaSBEZWMgMzEgMjAwNCAxNjowMDowMCBHTVQtMDgwMCAoUFNU
KSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgPSA0OjAwOjAwIFBNIFBTVCBGQUlMRUQhIGV4cGVjdGVk
OiAxNjowMDowMDxicj4KIC0tPiAoRnJpIERlYyAzMSAyMDA0IDE1OjU5OjU5IEdNVC0wODAwIChQ
U1QpKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDM6NTk6NTkgUE0gUFNUIEZBSUxFRCEgZXhwZWN0
ZWQ6IDE1OjU5OjU5PGJyPgogLS0+IChTYXQgSmFuIDAxIDIwMDUgMDA6MDA6MDAgR01ULTA4MDAg
KFBTVCkpLnRvTG9jYWxlVGltZVN0cmluZygpID0gMTI6MDA6MDAgQU0gUFNUIEZBSUxFRCEgZXhw
ZWN0ZWQ6IDAwOjAwOjAwPGJyPgpAQCAtNzMsMTAgKzcxLDI5IEBAIEZhaWx1cmUgbWVzc2FnZXMg
d2VyZTo8YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2Ug
dGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdh
czo8YnI+Ci1MRUFLOiAzMjMgS0pTOjpOb2RlPGJyPgotPC90dD48YnI+Ci08YSBuYW1lPSdmYWls
dXJlNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9lY21hXzMvUmVnRXhwLzE1LjEwLjItMS5qcyc+ZWNtYV8zL1JlZ0V4cC8xNS4xMC4yLTEuanM8
L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3df
YnVnLmNnaT9pZD0obm9uZSknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIChub25l
KTwvYT48YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1l
PSdmYWlsdXJlNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9lY21hXzMvRnVuY3Rpb24vc2NvcGUtMDAxLmpzJz5lY21hXzMvRnVuY3Rpb24vc2Nv
cGUtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9KG5vbmUpJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51
bWJlciAobm9uZSk8L2E+PGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU2Jz5QcmV2aW91cyBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlOCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0Pi0tPiBTVEFUVVM6IFRlc3Rp
bmcgdGhhdCBmdW5jdGlvbnMgYXJlIHNjb3BlZCBzdGF0aWNhbGx5LCBub3QgZHluYW1pY2FsbHk8
YnI+CitGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBm
cm9tIHRlc3QoKV0gU2VjdGlvbiBCIG9mIHRlc3Q8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVk
IGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMicsIEFjdHVhbCB2YWx1ZSAnMSc8YnI+Cist
LT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CistLT4gRkFJTEVEITogW3Jl
cG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIEMgb2YgdGVzdDxicj4KKy0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcyJywgQWN0dWFsIHZhbHVlICcx
Jzxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKy0tPiBGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gRCBvZiB0ZXN0PGJyPgorLS0+IEZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzMnLCBBY3R1YWwg
dmFsdWUgJzEnPGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgor
LS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiBFIG9mIHRlc3Q8YnI+
CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMics
IEFjdHVhbCB2YWx1ZSAnMSc8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSA8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIEYgb2Yg
dGVzdDxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZh
bHVlICcyJywgQWN0dWFsIHZhbHVlICcxJzxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTgnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC8x
NS4xMC4yLTEuanMnPmVjbWFfMy9SZWdFeHAvMTUuMTAuMi0xLmpzPC9hPiBmYWlsZWQ8L2I+IDxh
IGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9KG5vbmUp
JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAobm9uZSk8L2E+PGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmU3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
OSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFJlZ0V4cCBjb25mb3JtYW5jZSB0ZXN0PGJyPgogRmFp
bHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIFNlY3Rpb24gNyBvZiB0ZXN0IC08YnI+CkBAIC0xMDEsOCArMTE4LDggQEAgRmFpbHVyZSBt
ZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFj
dHVhbDogbnVsbDxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4K
IDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9wZXJsc3RyZXNzLTAwMS5q
cyc+ZWNtYV8zL1JlZ0V4cC9wZXJsc3RyZXNzLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVm
PSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg1NzIxJyB0YXJn
ZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA4NTcyMTwvYT48YnI+Ci0gWyA8YSBocmVmPScj
ZmFpbHVyZTcnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU5Jz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
Cis8YSBuYW1lPSdmYWlsdXJlOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAxLmpzJz5lY21hXzMv
UmVnRXhwL3BlcmxzdHJlc3MtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEnIHRhcmdldD0nb3RoZXJf
d2luZG93Jz5CdWcgTnVtYmVyIDg1NzIxPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlOCc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEwJz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+
IFNUQVRVUzogVGVzdGluZyByZWd1bGFyIGV4cHJlc3Npb24gZWRnZSBjYXNlczxicj4KIEZhaWx1
cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBTZWN0aW9uIDIxOCBvZiB0ZXN0IC08YnI+CkBAIC0xNDEsOCArMTU4LDggQEAgRmFpbHVyZSBt
ZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFj
dHVhbDogWyJhYWJiYWEiLCAiYWEiLCAiYmIiXTxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQg
ZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTknPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4
cC9wZXJsc3RyZXNzLTAwMi5qcyc+ZWNtYV8zL1JlZ0V4cC9wZXJsc3RyZXNzLTAwMi5qczwvYT4g
ZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTg1NzIxJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA4NTcyMTwvYT48
YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUxMCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTEwJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcGVybHN0
cmVzcy0wMDIuanMnPmVjbWFfMy9SZWdFeHAvcGVybHN0cmVzcy0wMDIuanM8L2E+IGZhaWxlZDwv
Yj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04
NTcyMScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgODU3MjE8L2E+PGJyPgorIFsg
PGEgaHJlZj0nI2ZhaWx1cmU5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMTEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBUZXN0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBl
ZGdlIGNhc2VzPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gNDAgb2YgdGVzdCAtPGJyPgpAQCAtMTYwLDgg
KzE3Nyw4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSBBY3R1YWw6IG51bGw8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVk
IGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxMCc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVn
RXhwL3JlZ3Jlc3MtNzI5NjQuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy03Mjk2NC5qczwvYT4g
ZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTcyOTY0JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA3Mjk2NDwvYT48
YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUxMSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTExJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVz
cy03Mjk2NC5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTcyOTY0LmpzPC9hPiBmYWlsZWQ8L2I+
IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5
NjQnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDcyOTY0PC9hPjxicj4KKyBbIDxh
IGhyZWY9JyNmYWlsdXJlMTAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUxMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgcmVndWxhciBleHByZXNzaW9ucyBj
b250YWluaW5nIG5vbi1MYXRpbjEgY2hhcmFjdGVyczxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2Vy
ZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDMgb2Yg
dGVzdCAtPGJyPgpAQCAtMTc5LDggKzE5Niw4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBBY3R1YWw6IG51bGw8YnI+CiAt
LT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5h
bWU9J2ZhaWx1cmUxMSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRv
dycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtNzgxNTYuanMnPmVjbWFfMy9SZWdFeHAv
cmVncmVzcy03ODE1Ni5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTU2JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+
QnVnIE51bWJlciA3ODE1NjwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTEwJz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTInPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1
cmUxMic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtNzgxNTYuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy03
ODE1Ni5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPTc4MTU2JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJl
ciA3ODE1NjwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTExJz5QcmV2aW91cyBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
dGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBUZXN0aW5n
IHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2l0aCAgXiwgJCwgYW5kIHRoZSBtIGZsYWcgLTxicj4KIEZh
aWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVz
dCgpXSBTZWN0aW9uIDIgb2YgdGVzdCAtPGJyPgpAQCAtMTk4LDI0ICsyMTUsMjMgQEAgRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCld
IEFjdHVhbDogbnVsbDxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxi
cj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTEyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVzcy0xMDAx
OTkuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy0xMDAxOTkuanM8L2E+IGZhaWxlZDwvYj4gPGJy
PgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTEzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTMnPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNz
LTEwMDE5OS5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlMTQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDg1MyBLSlM6Ok5vZGU8YnI+Ci1bNjcyMTldIC4v
ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qcyBsaW5lIDQ4OiBTeW50YXhFcnJvcjogSW52
YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3NpbmcgdGVybWluYXRpbmcgXSBmb3IgY2hhcmFj
dGVyIGNsYXNzPGJyPgorWzExODFdIC4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qcyBs
aW5lIDQ4OiBTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3Npbmcg
dGVybWluYXRpbmcgXSBmb3IgY2hhcmFjdGVyIGNsYXNzPGJyPgogPC90dD48YnI+Ci08YSBuYW1l
PSdmYWlsdXJlMTMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTE4ODIwNi5qcyc+ZWNtYV8zL1JlZ0V4cC9y
ZWdyZXNzLTE4ODIwNi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODIwNicgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
PkJ1ZyBOdW1iZXIgMTg4MjA2PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTInPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNCc+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFp
bHVyZTE0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVm
PScuL2VjbWFfMy9SZWdFeHAvcmVncmVzcy0xODgyMDYuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVz
cy0xODgyMDYuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgyMDYnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcg
TnVtYmVyIDE4ODIwNjwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEzJz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBJ
bnZhbGlkIHVzZSBvZiByZWdleHAgcXVhbnRpZmllcnMgc2hvdWxkIGdlbmVyYXRlIFN5bnRheEVy
cm9yczxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDMgb2YgdGVzdCAtPGJyPgogLS0+IEZBSUxFRCE6IFty
ZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ1N5bnRheEVycm9yJywgQWN0dWFs
IHZhbHVlICdEaWQgbm90IGdlbmVyYXRlIEFOWSBlcnJvciEhISc8YnI+CiAtLT4gRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUx
NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9l
Y21hXzMvUmVnRXhwL3JlZ3Jlc3MtMjA5OTE5LmpzJz5lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMjA5
OTE5LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA5OTE5JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJl
ciAyMDk5MTk8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMyc+UHJldmlvdXMgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTE1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTUnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8z
L1JlZ0V4cC9yZWdyZXNzLTIwOTkxOS5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTIwOTkxOS5q
czwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hv
d19idWcuY2dpP2lkPTIwOTkxOScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMjA5
OTE5PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTQnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgcmVn
ZXhwIHN1Ym1hdGNoZXMgd2l0aCBxdWFudGlmaWVyczxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2Vy
ZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDEgb2Yg
dGVzdCAtPGJyPgpAQCAtMjU0LDQxICsyNzAsMzkgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogWyIxLjAwMCww
MCIsICIiLCAiLDAwIl08YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8
YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxNSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvU3RhdGVtZW50cy9yZWdyZXNz
LTE5NDM2NC5qcyc+ZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTE2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTYnPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1N0YXRl
bWVudHMvcmVncmVzcy0xOTQzNjQuanMnPmVjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0
LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTUnPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4
aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxi
cj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzk3IEtKUzo6Tm9k
ZTxicj4KLVs2NzI3NV0gLi9lY21hXzMvU3RhdGVtZW50cy9yZWdyZXNzLTE5NDM2NC5qcyBsaW5l
IDE6IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvcjxicj4KK1sxMjA3XSAuL2VjbWFfMy9TdGF0ZW1l
bnRzL3JlZ3Jlc3MtMTk0MzY0LmpzIGxpbmUgMTogU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yPGJy
PgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMTYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1VuaWNvZGUvdWMtMDAxLmpzJz5l
Y21hXzMvVW5pY29kZS91Yy0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYxMCcgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnPkJ1ZyBOdW1iZXIgMjM2MTA8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNSc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTE3Jz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1l
PSdmYWlsdXJlMTcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vZWNtYV8zL1VuaWNvZGUvdWMtMDAxLmpzJz5lY21hXzMvVW5pY29kZS91Yy0wMDEu
anM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzYxMCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMjM2
MTA8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNic+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTE4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogVW5pY29kZSBmb3Jt
YXQtY29udHJvbCBjaGFyYWN0ZXIgKENhdGVnb3J5IENmKSB0ZXN0Ljxicj4KIEZhaWx1cmUgbWVz
c2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBVbmlj
b2RlIGZvcm1hdC1jb250cm9sIGNoYXJhY3RlciB0ZXN0IChDYXRlZ29yeSBDZi4pPGJyPgogLS0+
IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ25vIGVycm9y
JywgQWN0dWFsIHZhbHVlICdub+KAjiBlcnJvcic8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVk
IGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxNyc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvVW5p
Y29kZS91Yy0wMDIuanMnPmVjbWFfMy9Vbmljb2RlL3VjLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8
YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEz
JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMzYxMzwvYT48YnI+Ci0gWyA8YSBo
cmVmPScjZmFpbHVyZTE2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
MTgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvVW5pY29kZS91Yy0wMDIuanMnPmVjbWFf
My9Vbmljb2RlL3VjLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemls
bGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEzJyB0YXJnZXQ9J290aGVyX3dpbmRv
dyc+QnVnIE51bWJlciAyMzYxMzwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTE3Jz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTknPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RB
VFVTOiBVbmljb2RlIG5vbi1icmVha2luZyBzcGFjZSBjaGFyYWN0ZXIgdGVzdC48YnI+CiBGYWls
dXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gVW5pY29kZSBub24tYnJlYWtpbmcgc3BhY2UgY2hhcmFjdGVyIHJlZ2V4cCB0ZXN0Ljxicj4K
IC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcwJywg
QWN0dWFsIHZhbHVlICctMSc8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxOCc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9PYmplY3RzL3RvU3RyaW5n
LTAwMS5qcyc+anMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJy
PgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTE5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTknPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvT2JqZWN0cy90b1N0cmlu
Zy0wMDEuanMnPmpzMV8yL09iamVjdHMvdG9TdHJpbmctMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUyMCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4K
IFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNl
IG91dHB1dCB3YXM6PGJyPgotTEVBSzogNDAzIEtKUzo6Tm9kZTxicj4KIC0tPiBKUzFfMiBPYmpl
Y3QudG9TdHJpbmcoKTxicj4KLVs2NzMwNl0gLi9qczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5q
cyBsaW5lIDEwMzogVHlwZUVycm9yOiBPYmplY3QgL15ceyguKilcfSQvIChyZXN1bHQgb2YgZXhw
cmVzc2lvbiAvXlx7KC4qKVx9JC8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KK1sxMjI4XSAu
L2pzMV8yL09iamVjdHMvdG9TdHJpbmctMDAxLmpzIGxpbmUgMTAzOiBUeXBlRXJyb3I6IE9iamVj
dCAvXlx7KC4qKVx9JC8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9eXHsoLiopXH0kLykgZG9lcyBu
b3QgYWxsb3cgY2FsbHMuPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMTknPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVu
Y3Rpb24vRnVuY3Rpb25fb2JqZWN0LmpzJz5qczFfMi9mdW5jdGlvbi9GdW5jdGlvbl9vYmplY3Qu
anM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxOCc+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTIwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJl
MjAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
anMxXzIvZnVuY3Rpb24vRnVuY3Rpb25fb2JqZWN0LmpzJz5qczFfMi9mdW5jdGlvbi9GdW5jdGlv
bl9vYmplY3QuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxOSc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTIxJz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJy
PgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBmLm5hbWUgPSB1bmRlZmluZWQgRkFJ
TEVEISBleHBlY3RlZDogYV90ZXN0X2Z1bmN0aW9uPGJyPgpAQCAtMjk2LDI3ICszMTAsMjUgQEAg
RmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAobmV3IEZ1bmN0aW9uKCkpLm5hbWUgPSB1
bmRlZmluZWQgRkFJTEVEISBleHBlY3RlZDogYW5vbnltb3VzPGJyPgogfSBGQUlMRUQhIGV4cGVj
dGVkOiA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyMCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9mdW5j
dGlvbi0wMDEtbi5qcyc+anMxXzIvZnVuY3Rpb24vZnVuY3Rpb24tMDAxLW4uanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTIxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjEnPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rp
b24vZnVuY3Rpb24tMDAxLW4uanMnPmpzMV8yL2Z1bmN0aW9uL2Z1bmN0aW9uLTAwMS1uLmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjAnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAzLCBnb3QgMDxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgogT0suPGJyPgotTEVBSzogMzMxIEtKUzo6
Tm9kZTxicj4KIC0tPiBmdW5jdGlvbi0wMDEuanMgZnVuY3Rpb25zIG5vdCBzZXBhcmF0ZWQgYnkg
c2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIwIGFuZCBoaWdoZXI8YnI+CiAtLT4g
ZXZhbCgiZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKCl7fSIpID0gdW5kZWZpbmVkIEZBSUxFRCEg
ZXhwZWN0ZWQ6IGVycm9yPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMjEnPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVu
Y3Rpb24vcmVnZXhwYXJnLTEuanMnPmpzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0xLmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjAnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTIyJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1
bmN0aW9uL3JlZ2V4cGFyZy0xLmpzJz5qczFfMi9mdW5jdGlvbi9yZWdleHBhcmctMS5qczwvYT4g
ZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTIxJz5QcmV2aW91cyBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
dGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUg
MCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21w
bGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMzMyBLSlM6Ok5vZGU8YnI+CiAt
LT4gSlNfMS4yIFRoZSB2YXJpYWJsZSBzdGF0bWVudDxicj4KLVs2NzMzOV0gLi9qczFfMi9mdW5j
dGlvbi9yZWdleHBhcmctMS5qcyBsaW5lIDgwOiBUeXBlRXJyb3I6IE9iamVjdCAvYWJjLyAocmVz
dWx0IG9mIGV4cHJlc3Npb24geCkgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgorWzEyNDFdIC4v
anMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanMgbGluZSA4MDogVHlwZUVycm9yOiBPYmplY3Qg
L2FiYy8gKHJlc3VsdCBvZiBleHByZXNzaW9uIHgpIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4K
IDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTIyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTEuanMn
PmpzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEg
aHJlZj0nI2ZhaWx1cmUyMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTIzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vdG9zdHJpbmctMS5qcyc+
anMxXzIvZnVuY3Rpb24vdG9zdHJpbmctMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTIyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
MjQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KIDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogfSBGQUlMRUQh
IGV4cGVjdGVkOiA8YnI+CkBAIC0zMjUsOCArMzM3LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJl
Ojxicj4KIH0gRkFJTEVEISBleHBlY3RlZDogPGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+
CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyMyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi90b3N0cmluZy0yLmpz
Jz5qczFfMi9mdW5jdGlvbi90b3N0cmluZy0yLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlMjInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUyNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTI0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTIuanMn
PmpzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUyMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTI1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIH0gRkFJTEVE
ISBleHBlY3RlZDogPGJyPgpAQCAtMzM5LDIyICszNTEsMjIgQEAgRmFpbHVyZSBtZXNzYWdlcyB3
ZXJlOjxicj4KIH0gRkFJTEVEISBleHBlY3RlZDogPGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8
YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyNCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9vcGVyYXRvci9lcXVhbGl0eS5q
cyc+anMxXzIvb3BlcmF0b3IvZXF1YWxpdHkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEg
aHJlZj0nI2ZhaWx1cmUyMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTI1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvb3BlcmF0b3IvZXF1YWxpdHkuanMnPmpz
MV8yL29wZXJhdG9yL2VxdWFsaXR5LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9
JyNmYWlsdXJlMjQnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNic+
TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBd
PGJyPgogPHR0Pjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKG5ldyBTdHJp
bmcoJ3gnKSA9PSAneCcpICAgICAgICAgICAgICAgICAgPSB0cnVlIEZBSUxFRCEgZXhwZWN0ZWQ6
IGZhbHNlPGJyPgogLS0+ICgneCcgPT0gbmV3IFN0cmluZygneCcpKSAgICAgICAgICAgICAgICAg
ID0gdHJ1ZSBGQUlMRUQhIGV4cGVjdGVkOiBmYWxzZTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTI1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV8yL3JlZ2V4cC9SZWdFeHBfbGFzdEluZGV4LmpzJz5qczFfMi9yZWdleHAvUmVn
RXhwX2xhc3RJbmRleC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVy
ZTI0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjYnPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxh
IG5hbWU9J2ZhaWx1cmUyNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX2xhc3RJbmRleC5qcyc+anMxXzIvcmVn
ZXhwL1JlZ0V4cF9sYXN0SW5kZXguanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0n
I2ZhaWx1cmUyNSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI3Jz5O
ZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08
YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiByZT0veC4vZzsg
cmUubGFzdEluZGV4PTQ7IHJlLmV4ZWMoJ3h5YWJjZHhhJykgPSB4YSBGQUlMRUQhIGV4cGVjdGVk
OiBbInhhIl08YnI+CiAtLT4gcmUuZXhlYygneHlhYmNkZWYnKSA9IHh5IEZBSUxFRCEgZXhwZWN0
ZWQ6IFsieHkiXTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTI2Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9S
ZWdFeHBfbXVsdGlsaW5lLmpzJz5qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZS5qczwvYT4g
ZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTI1Jz5QcmV2aW91cyBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
dGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyNyc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9y
ZWdleHAvUmVnRXhwX211bHRpbGluZS5qcyc+anMxXzIvcmVnZXhwL1JlZ0V4cF9tdWx0aWxpbmUu
anM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNic+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAobXVsdGlsaW5lID09IHRydWUpICcxMjNcbjQ1Nicu
bWF0Y2goL140Li4vKSA9IG51bGwgRkFJTEVEISBleHBlY3RlZDogNDU2PGJyPgpAQCAtMzYzLDgg
KzM3NSw4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKG11bHRpbGluZSA9PSB0
cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0Jy5tYXRjaCgvYS4uJC9nKSA9IGEyNCBGQUlMRUQhIGV4
cGVjdGVkOiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiAtLT4gKG11bHRpbGluZSA9PSB0cnVlKSAnYTEx
XG5hMjJcbmEyM1xuYTI0Jy5tYXRjaChuZXcgUmVnRXhwKCdhLi4kJywnZycpKSA9IGEyNCBGQUlM
RUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2Zh
aWx1cmUyNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZV9hc19hcnJheS5qcyc+anMxXzIvcmVn
ZXhwL1JlZ0V4cF9tdWx0aWxpbmVfYXNfYXJyYXkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsg
PGEgaHJlZj0nI2ZhaWx1cmUyNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTI4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL1JlZ0V4cF9tdWx0aWxp
bmVfYXNfYXJyYXkuanMnPmpzMV8yL3JlZ2V4cC9SZWdFeHBfbXVsdGlsaW5lX2FzX2FycmF5Lmpz
PC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjcnPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pjxicj4KIEZhaWx1cmUg
bWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKFsnJConXSA9PSB0cnVlKSAnMTIzXG40NTYnLm1hdGNo
KC9eNC4uLykgPSBudWxsIEZBSUxFRCEgZXhwZWN0ZWQ6IDQ1Njxicj4KQEAgLTM3Myw1OCArMzg1
LDU0IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKFsnJConXSA9PSB0cnVlKSAn
YTExXG5hMjJcbmEyM1xuYTI0Jy5tYXRjaCgvYS4uJC9nKSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVk
OiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiAtLT4gKFsnJConXSA9PSB0cnVlKSAnYTExXG5hMjJcbmEy
M1xuYTI0Jy5tYXRjaChuZXcgUmVnRXhwKCdhLi4kJywnZycpKSA9IGEyNCBGQUlMRUQhIGV4cGVj
dGVkOiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyOCc+
PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFf
Mi9yZWdleHAvYmVnaW5MaW5lLmpzJz5qczFfMi9yZWdleHAvYmVnaW5MaW5lLmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjcnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmUyOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTI5Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4
cC9iZWdpbkxpbmUuanMnPmpzMV8yL3JlZ2V4cC9iZWdpbkxpbmUuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTMwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KIDEyM3h5eicubWF0Y2gobmV3IFJlZ0V4cCgnXlxkKycpKSA9IG51bGwgRkFJTEVEISBleHBl
Y3RlZDogMTIzPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMjknPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL2Nv
bXBpbGUuanMnPmpzMV8yL3JlZ2V4cC9jb21waWxlLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBb
IDxhIGhyZWY9JyNmYWlsdXJlMjgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmUzMCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTMwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9jb21waWxlLmpzJz5q
czFfMi9yZWdleHAvY29tcGlsZS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScj
ZmFpbHVyZTI5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzEnPk5l
eHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxi
cj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5h
dGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4K
LUxFQUs6IDMyOSBLSlM6Ok5vZGU8YnI+CiAtLT4gRXhlY3V0aW5nIHNjcmlwdDogY29tcGlsZS5q
czxicj4KIC0tPiBBcyBkZXNjcmliZWQgaW4gTmV0c2NhcGUgZG9jICJXaGF0cyBuZXcgaW4gSmF2
YVNjcmlwdCAxLjIiIFJlZ0V4cDogY29tcGlsZTxicj4KLVs2NzM3Nl0gLi9qczFfMi9yZWdleHAv
Y29tcGlsZS5qcyBsaW5lIDQzOiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9m
IGV4cHJlc3Npb24gcmVndWxhckV4cHJlc3Npb24uY29tcGlsZSkgaXMgbm90IG9iamVjdC48YnI+
CitbMTI2OF0gLi9qczFfMi9yZWdleHAvY29tcGlsZS5qcyBsaW5lIDQzOiBUeXBlRXJyb3I6IFZh
bHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gcmVndWxhckV4cHJlc3Npb24uY29t
cGlsZSkgaXMgbm90IG9iamVjdC48YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzMCc+
PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFf
Mi9yZWdleHAvZW5kTGluZS5qcyc+anMxXzIvcmVnZXhwL2VuZExpbmUuanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTMxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzEnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL2Vu
ZExpbmUuanMnPmpzMV8yL3JlZ2V4cC9lbmRMaW5lLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBb
IDxhIGhyZWY9JyNmYWlsdXJlMzAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmUzMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgogPHR0Pjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiB4eXon
Lm1hdGNoKG5ldyBSZWdFeHAoJ1xkKyQnKSkgPSBudWxsIEZBSUxFRCEgZXhwZWN0ZWQ6IDg5MDxi
cj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTMxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTku
anMnPmpzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0n
aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1odHRwOi8vYnVnemls
bGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTknIHRhcmdldD0nb3RoZXJfd2luZG93
Jz5CdWcgTnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjM1OTwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTMwJz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMzInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzMic+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdl
eHAvcmVncmVzcy02MzU5LmpzJz5qczFfMi9yZWdleHAvcmVncmVzcy02MzU5LmpzPC9hPiBmYWls
ZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5JyB0YXJn
ZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTYzNTk8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMzJz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0
ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25h
bCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjkgS0pT
OjpOb2RlPGJyPgogLS0+IEJVR05VTUJFUjogaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3No
b3dfYnVnLmNnaT9pZD02MzU5PGJyPgotWzY3Mzk3XSAuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYz
NTkuanMgbGluZSA1NjogVHlwZUVycm9yOiBPYmplY3QgLyhhKiliXDErLyAocmVzdWx0IG9mIGV4
cHJlc3Npb24gLyhhKiliXDErLykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgorWzEyODRdIC4v
anMxXzIvcmVnZXhwL3JlZ3Jlc3MtNjM1OS5qcyBsaW5lIDU2OiBUeXBlRXJyb3I6IE9iamVjdCAv
KGEqKWJcMSsvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvKGEqKWJcMSsvKSBkb2VzIG5vdCBhbGxv
dyBjYWxscy48YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzMic+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvcmVn
cmVzcy05MTQxLmpzJz5qczFfMi9yZWdleHAvcmVncmVzcy05MTQxLmpzPC9hPiBmYWlsZWQ8L2I+
IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9aHR0
cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQxJyB0YXJnZXQ9J290
aGVyX3dpbmRvdyc+QnVnIE51bWJlciBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxNDE8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJl
MzMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
anMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qcyc+anMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5q
czwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hv
d19idWcuY2dpP2lkPWh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTE0MScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgaHR0cDovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQxPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWls
dXJlMzInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNCc+TmV4dCBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgog
PHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQg
d2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVB
SzogMzI5IEtKUzo6Tm9kZTxicj4KIC0tPiBCVUdOVU1CRVI6IGh0dHA6Ly9idWd6aWxsYS5tb3pp
bGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0MTxicj4KLVs2NzM5OF0gLi9qczFfMi9yZWdleHAv
cmVncmVzcy05MTQxLmpzIGxpbmUgNzM6IFR5cGVFcnJvcjogT2JqZWN0IC8oPzp4eHx4KSovIChy
ZXN1bHQgb2YgZXhwcmVzc2lvbiAvKD86eHh8eCkqLykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJy
PgorWzEyODVdIC4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qcyBsaW5lIDczOiBUeXBlRXJy
b3I6IE9iamVjdCAvKD86eHh8eCkqLyAocmVzdWx0IG9mIGV4cHJlc3Npb24gLyg/Onh4fHgpKi8p
IGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTMz
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV8yL3JlZ2V4cC9zaW1wbGVfZm9ybS5qcyc+anMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMzInPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTM0Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8y
L3JlZ2V4cC9zaW1wbGVfZm9ybS5qcyc+anMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzMnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAw
LCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBs
ZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzI5IEtKUzo6Tm9kZTxicj4KIC0t
PiBFeGVjdXRpbmcgc2NyaXB0OiBzaW1wbGVfZm9ybS5qczxicj4KIC0tPiBBcyBkZXNjcmliZWQg
aW4gTmV0c2NhcGUgZG9jICJXaGF0cyBuZXcgaW4gSmF2YVNjcmlwdCAxLjIiIFJlZ0V4cDogc2lt
cGxlIGZvcm08YnI+Ci1bNjczOTldIC4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzIGxpbmUg
NDM6IFR5cGVFcnJvcjogT2JqZWN0IC9bMC05XXszfS8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9b
MC05XXszfS8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KK1sxMjg2XSAuL2pzMV8yL3JlZ2V4
cC9zaW1wbGVfZm9ybS5qcyBsaW5lIDQzOiBUeXBlRXJyb3I6IE9iamVjdCAvWzAtOV17M30vIChy
ZXN1bHQgb2YgZXhwcmVzc2lvbiAvWzAtOV17M30vKSBkb2VzIG5vdCBhbGxvdyBjYWxscy48YnI+
CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzNCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvc3RyaW5nX3NwbGl0Lmpz
Jz5qczFfMi9yZWdleHAvc3RyaW5nX3NwbGl0LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlMzMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUzNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTM1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9zdHJpbmdfc3BsaXQuanMn
PmpzMV8yL3JlZ2V4cC9zdHJpbmdfc3BsaXQuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUzNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTM2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAnYWJj
Jy5zcGxpdCgvW2Etel0vKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KQEAgLTQzMiwx
NTUgKzQ0MCwxMzkgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAnYWJjJy5zcGxp
dChuZXcgUmVnRXhwKCdbYS16XScpKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KIC0t
PiAnYWJjJy5zcGxpdChuZXcgUmVnRXhwKCdbYS16XScpKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVk
OiAsLDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTM1Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3ZlcnNpb24xMjAvYm9v
bGVhbi0wMDEuanMnPmpzMV8yL3ZlcnNpb24xMjAvYm9vbGVhbi0wMDEuanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUzNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTM2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzYnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvdmVyc2lvbjEy
MC9ib29sZWFuLTAwMS5qcyc+anMxXzIvdmVyc2lvbjEyMC9ib29sZWFuLTAwMS5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM1Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMzcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2Vz
IHdlcmU6PGJyPgogLS0+IG5ldyBCb29sZWFuKGZhbHNlKSA9IHRydWUgRkFJTEVEISBleHBlY3Rl
ZDogZmFsc2U8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzNic+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIw
L3JlZ3Jlc3MtOTk2NjMuanMnPmpzMV8yL3ZlcnNpb24xMjAvcmVncmVzcy05OTY2My5qczwvYT4g
ZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTM1Jz5QcmV2aW91cyBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
dGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzNyc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi92
ZXJzaW9uMTIwL3JlZ3Jlc3MtOTk2NjMuanMnPmpzMV8yL3ZlcnNpb24xMjAvcmVncmVzcy05OTY2
My5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM2Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzgnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVT
OiBSZWdyZXNzaW9uIHRlc3QgZm9yIEJ1Z3ppbGxhIGJ1ZyA5OTY2Mzxicj4KIEZhaWx1cmUgbWVz
c2FnZXMgd2VyZTo8YnI+CiAtLT4gU2VjdGlvbiAxIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxFRCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8
YnI+CiAtLT4gU2VjdGlvbiAyIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IGl0IEZBSUxFRCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8YnI+CiAtLT4gU2Vj
dGlvbiAzIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxF
RCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9
J2ZhaWx1cmUzNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfMy9TY3JpcHQvZnVuY3Rpb24tMDAxLW4uanMnPmpzMV8zL1NjcmlwdC9mdW5j
dGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVn
IE51bWJlciAxMDI3ODwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTM2Jz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUz
OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9q
czFfMy9TY3JpcHQvZnVuY3Rpb24tMDAxLW4uanMnPmpzMV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEt
bi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAx
MDI3ODwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM3Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMzknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMywg
Z290IDA8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0
ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KIE9LLjxicj4KLUxFQUs6IDM5MSBLSlM6Ok5vZGU8
YnI+CiAtLT4gQlVHTlVNQkVSOiAxMDI3ODxicj4KIC0tPiBmdW5jdGlvbi0wMDEuanMgZnVuY3Rp
b25zIG5vdCBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIw
IGFuZCBoaWdoZXI8YnI+CiAtLT4gZXZhbCgiZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKCl7fSIp
ID0gdW5kZWZpbmVkIEZBSUxFRCEgZXhwZWN0ZWQ6IGVycm9yPGJyPgogPC90dD48YnI+Ci08YSBu
YW1lPSdmYWlsdXJlMzgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzMvU2NyaXB0L3NjcmlwdC0wMDEuanMnPmpzMV8zL1NjcmlwdC9zY3Jp
cHQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMzcnPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzOSc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0n
ZmFpbHVyZTM5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzJz5qczFfMy9TY3JpcHQvc2NyaXB0LTAw
MS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM4Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDAnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBl
eGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8
YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDM4OSBLSlM6Ok5v
ZGU8YnI+CiAtLT4gc2NyaXB0LTAwMSBOYXRpdmVTY3JpcHQ8YnI+Ci1bNjc0MzVdIC4vanMxXzMv
U2NyaXB0L3NjcmlwdC0wMDEuanMgbGluZSAxMzM6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBTY3JpcHQ8YnI+CitbMTMxMl0gLi9qczFfMy9TY3JpcHQvc2NyaXB0LTAwMS5q
cyBsaW5lIDEzMzogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNjcmlwdDxi
cj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTM5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8zL3JlZ3Jlc3MvZnVuY3Rpb24tMDAx
LW4uanMnPmpzMV8zL3JlZ3Jlc3MvZnVuY3Rpb24tMDAxLW4uanM8L2E+IGZhaWxlZDwvYj4gPGEg
aHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3OCcg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTAyNzg8L2E+PGJyPgotIFsgPGEgaHJl
Zj0nI2ZhaWx1cmUzOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQw
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzMvcmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qcyc+
anMxXzMvcmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdo
dHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9
J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxMDI3ODwvYT48YnI+CisgWyA8YSBocmVmPScjZmFp
bHVyZTM5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDEnPk5leHQg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4K
IDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMywgZ290IDA8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVk
IHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KIE9L
Ljxicj4KLUxFQUs6IDM5MSBLSlM6Ok5vZGU8YnI+CiAtLT4gQlVHTlVNQkVSOiAxMDI3ODxicj4K
IC0tPiBmdW5jdGlvbi0wMDEuanMgZnVuY3Rpb25zIG5vdCBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9u
cyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIwIGFuZCBoaWdoZXI8YnI+CiAtLT4gZXZhbCgiZnVu
Y3Rpb24gZigpe31mdW5jdGlvbiBnKCl7fSIpID0gdW5kZWZpbmVkIEZBSUxFRCEgZXhwZWN0ZWQ6
IGVycm9yPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNDAnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9j
YXRjaGd1YXJkLTAwMS5qcyc+anMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMS5qczwvYT4g
ZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTM5Jz5QcmV2aW91cyBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
dGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KLTx0dD5FeHBlY3RlZCBleGl0IGNvZGUg
MCwgZ290IDM8YnI+Ci1UZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+Ci1Db21w
bGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6Ok5vZGU8YnI+Ci08
L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAy
LmpzJz5qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmU0MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpzJz5q
czFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBb
IDxhIGhyZWY9JyNmYWlsdXJlNDAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmU0Mic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3Rj
YXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1
dCB3YXM6PGJyPgotTEVBSzogMzIzIEtKUzo6Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTQyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDMuanMnPmpzMV81L0V4Y2VwdGlv
bnMvY2F0Y2hndWFyZC0wMDMuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorVGVzdGNhc2UgcHJvZHVj
ZWQgbm8gb3V0cHV0ITwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQyJz48L2E+PGRkPjxiPlRl
c3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMv
Y2F0Y2hndWFyZC0wMDIuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIuanM8L2E+
IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0MSc+UHJldmlvdXMgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2Rl
IDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29t
cGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjMgS0pTOjpOb2RlPGJyPgot
PC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNDMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9lcnJzdGFjay0wMDEu
anMnPmpzMV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
K1Rlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0
Myc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9q
czFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAzLmpzJz5qczFfNS9FeGNlcHRpb25zL2NhdGNo
Z3VhcmQtMDAzLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDIn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0NCc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4
cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBz
aWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogNDcz
IEtKUzo6Tm9kZTxicj4KLVs2NzQ5MF0gLi9qczFfNS9FeGNlcHRpb25zL2VycnN0YWNrLTAwMS5q
cyBsaW5lIDI0NzogVHlwZUVycm9yOiBVbmRlZmluZWQgdmFsdWU8YnI+Ci08L3R0Pjxicj4KLTxh
IG5hbWU9J2ZhaWx1cmU0NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanMnPmpzMV81L0V4
Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTUwNDQ3JyB0YXJnZXQ9J290aGVy
X3dpbmRvdyc+QnVnIE51bWJlciA1MDQ0NzwvYT48YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBv
dXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDQnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9lcnJzdGFj
ay0wMDEuanMnPmpzMV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzPC9hPiBmYWlsZWQ8L2I+
IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmU0NSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxi
cj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3Rj
YXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogNjU0IEtKUzo6Tm9kZTxicj4KLS0tPiBCVUdOVU1C
RVI6IDUwNDQ3PGJyPgotLS0+IFNUQVRVUzogVGVzdCAobm9uLUVDTUEpIEVycm9yIG9iamVjdCBw
cm9wZXJ0aWVzIGZpbGVOYW1lLCBsaW5lTnVtYmVyPGJyPgotWzY3NDkxXSAuL2pzMV81L0V4Y2Vw
dGlvbnMvcmVncmVzcy01MDQ0Ny5qcyBsaW5lIDY1OiBUeXBlRXJyb3I6IFVuZGVmaW5lZCB2YWx1
ZTxicj4KK1sxMzU3XSAuL2pzMV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzIGxpbmUgMjQ3
OiBUeXBlRXJyb3I6IFVuZGVmaW5lZCB2YWx1ZTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFp
bHVyZTQ1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVm
PScuL2pzMV81L0dldFNldC9nZXRzZXQtMDAxLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMS5q
czwvYT4gZmFpbGVkPC9iPiA8YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDUnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9y
ZWdyZXNzLTUwNDQ3LmpzJz5qczFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanM8L2E+IGZh
aWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDQ0NycgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNTA0NDc8L2E+PGJy
PgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0NCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTQ2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9w
IG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgog
VGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ug
b3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjMgS0pTOjpOb2RlPGJyPgorLS0+IEJVR05VTUJFUjog
NTA0NDc8YnI+CistLT4gU1RBVFVTOiBUZXN0IChub24tRUNNQSkgRXJyb3Igb2JqZWN0IHByb3Bl
cnRpZXMgZmlsZU5hbWUsIGxpbmVOdW1iZXI8YnI+CitbMTM1OF0gLi9qczFfNS9FeGNlcHRpb25z
L3JlZ3Jlc3MtNTA0NDcuanMgbGluZSA2NTogVHlwZUVycm9yOiBVbmRlZmluZWQgdmFsdWU8YnI+
CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0Nic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qcyc+
anMxXzUvR2V0U2V0L2dldHNldC0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorPGEgbmFtZT0n
ZmFpbHVyZTQ2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV81L0dldFNldC9nZXRzZXQtMDAxLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAw
MS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTQ1Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDcnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBl
eGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8
YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6Ok5v
ZGU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0Nyc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAw
My5qcyc+anMxXzUvR2V0U2V0L2dldHNldC0wMDMuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorVGVz
dGNhc2UgcHJvZHVjZWQgbm8gb3V0cHV0ITwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQ3Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81
L0dldFNldC9nZXRzZXQtMDAyLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTQ2Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlNDgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwg
Z290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0
ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6Ok5vZGU8YnI+Ci08L3R0
Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanMn
PmpzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CitU
ZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDgn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMx
XzUvR2V0U2V0L2dldHNldC0wMDMuanMnPmpzMV81L0dldFNldC9nZXRzZXQtMDAzLmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDcnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0OSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAw
LCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBs
ZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogNzY1IEtKUzo6Tm9kZTxicj4KLVs2
NzUxNl0gLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanMgbGluZSA0ODogVHlwZUVy
cm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJjZSkg
aXMgbm90IG9iamVjdC48YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0OSc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmpl
Y3QvcmVncmVzcy05MDU5Ni0wMDIuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5q
czwvYT4gZmFpbGVkPC9iPiA8YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48
YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAxLmpzJz5q
czFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsg
PGEgaHJlZj0nI2ZhaWx1cmU0OCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTUwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNh
c2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0
IHdhczo8YnI+Ci1MRUFLOiA3NjkgS0pTOjpOb2RlPGJyPgotWzY3NTE3XSAuL2pzMV81L09iamVj
dC9yZWdyZXNzLTkwNTk2LTAwMi5qcyBsaW5lIDQ4OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogdW5ldmFsPGJyPgorWzEzNzNdIC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1
OTYtMDAxLmpzIGxpbmUgNDg6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2Yg
ZXhwcmVzc2lvbiBvYmoudG9Tb3VyY2UpIGlzIG5vdCBvYmplY3QuPGJyPgogPC90dD48YnI+Ci08
YSBuYW1lPSdmYWlsdXJlNTAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzJz5qczFfNS9P
YmplY3QvcmVncmVzcy05NjI4NC0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorPGEgbmFtZT0n
ZmFpbHVyZTUwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5qcyc+anMxXzUvT2JqZWN0L3Jl
Z3Jlc3MtOTA1OTYtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWls
dXJlNDknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1MSc+TmV4dCBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgog
PHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQg
d2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVB
SzogMzk3IEtKUzo6Tm9kZTxicj4KLVs2NzUxOV0gLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4
NC0wMDEuanMgbGluZSA0OTogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBl
eHByZXNzaW9uIG9iajEudG9Tb3VyY2UpIGlzIG5vdCBvYmplY3QuPGJyPgorWzEzNzRdIC4vanMx
XzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAyLmpzIGxpbmUgNDg6IFJlZmVyZW5jZUVycm9yOiBD
YW4ndCBmaW5kIHZhcmlhYmxlOiB1bmV2YWw8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1
cmU1MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIuanMnPmpzMV81L09iamVjdC9yZWdyZXNz
LTk2Mjg0LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cis8YSBuYW1lPSdmYWlsdXJlNTEnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUv
T2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0w
MDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU1MCc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTUyJz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQg
ZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAw
PGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzOTcgS0pTOjpO
b2RlPGJyPgotWzY3NTIwXSAuL2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qcyBsaW5l
IDQ5OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogdW5ldmFsPGJyPgorWzEz
NzZdIC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzIGxpbmUgNDk6IFR5cGVFcnJv
cjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmoxLnRvU291cmNlKSBp
cyBub3Qgb2JqZWN0Ljxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTUyJz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jl
c3MvcmVncmVzcy00NDAwOS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzPC9hPiBm
YWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDQwMDknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDQ0MDA5PC9hPjxi
cj4KKzxhIG5hbWU9J2ZhaWx1cmU1Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIuanMnPmpz
MV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8
YSBocmVmPScjZmFpbHVyZTUxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlNTMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KLUxFQUs6IDM5NiBLSlM6Ok5vZGU8YnI+CitbMTM3N10gLi9qczFfNS9PYmplY3Qv
cmVncmVzcy05NjI4NC0wMDIuanMgbGluZSA0OTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQg
dmFyaWFibGU6IHVuZXZhbDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTUzJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1Jl
Z3Jlc3MvcmVncmVzcy00NDAwOS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzPC9h
PiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDQwMDknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDQ0MDA5PC9h
Pjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmU1NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxi
cj4KK1Rlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3Rj
YXNlIG91dHB1dCB3YXM6PGJyPgogLS0+IEJVR05VTUJFUjogNDQwMDk8YnI+CiAtLT4gU1RBVFVT
OiBUZXN0aW5nIHRoYXQgd2UgZG9uJ3QgY3Jhc2ggb24gb2JqLnRvU291cmNlKCk8YnI+Ci1bNjc1
MjVdIC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzIGxpbmUgNjA6IFR5cGVFcnJvcjog
VmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmoudG9Tb3VyY2UpIGlzIG5v
dCBvYmplY3QuPGJyPgorWzEzODJdIC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzIGxp
bmUgNjA6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBv
YmoudG9Tb3VyY2UpIGlzIG5vdCBvYmplY3QuPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWls
dXJlNTMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9
Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTY4NDk4LTAwMy5qcyc+anMxXzUvUmVncmVzcy9yZWdy
ZXNzLTY4NDk4LTAwMy5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDk4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+
QnVnIE51bWJlciA2ODQ5ODwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTUyJz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTQnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1
cmU1NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNjg0OTgtMDAzLmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtNjg0OTgtMDAzLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0OTgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5C
dWcgTnVtYmVyIDY4NDk4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTMnPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1NSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6
IFRlc3RpbmcgY2FsbGluZyBvYmouZXZhbChzdHIpPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJl
Ojxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFRlc3RpbmcgY2FsbGlu
ZyBvYmouZXZhbChzdHIpOyBjdXJyZW50bHkgYXQgZXhwZWN0WzFdIHdpdGhpbiB0ZXN0IC08YnI+
CkBAIC01ODgsOCArNTgwLDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICc0MycsIEFjdHVhbCB2
YWx1ZSAnZmFsc2UnPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJy
PgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEwMzYw
Mi5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBo
cmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYwMicg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTAzNjAyPC9hPjxicj4KLSBbIDxhIGhy
ZWY9JyNmYWlsdXJlNTMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1
NSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTU1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDM2MDIuanMn
PmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDM2MDIuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0n
aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM2MDInIHRhcmdl
dD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDEwMzYwMjwvYT48YnI+CisgWyA8YSBocmVmPScj
ZmFpbHVyZTU0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTYnPk5l
eHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxi
cj4KIDx0dD4tLT4gU1RBVFVTOiBSZWFzc2lnbm1lbnQgdG8gYSBjb25zdCBpcyBOT1QgYW4gZXJy
b3IgcGVyIEVDTUE8YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAxIG9mIHRlc3QgLTxicj4KQEAgLTU5OSwz
MSArNTkxLDI4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3Jl
cG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMScsIEFjdHVhbCB2YWx1ZSAnMic8
YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4K
LTxhIG5hbWU9J2ZhaWx1cmU1NSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTA0MDc3LmpzJz5qczFfNS9S
ZWdyZXNzL3JlZ3Jlc3MtMTA0MDc3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9
JyNmYWlsdXJlNTQnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1Nic+
TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBd
PGJyPgorPGEgbmFtZT0nZmFpbHVyZTU2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0n
b3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcuanMnPmpz
MV81L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmU1NSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTU3Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2Ug
dGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdh
czo8YnI+Ci1MRUFLOiAzMjMgS0pTOjpOb2RlPGJyPgotPC90dD48YnI+Ci08YSBuYW1lPSdmYWls
dXJlNTYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9
Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNz
LTEyNzU1Ny5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTU1Jz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTcnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KK1Rlc3RjYXNl
IHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1Nyc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdy
ZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTYnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1OCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogNDE5IEtKUzo6Tm9kZTxicj4K
LVs2NzY2MV0gLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzIGxpbmUgNzU6IFJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBjbG9uZTxicj4KK1sxNDA4XSAuL2pzMV81
L1JlZ3Jlc3MvcmVncmVzcy0xMjc1NTcuanMgbGluZSA3NTogUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IGNsb25lPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTcn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMx
XzUvUmVncmVzcy9yZWdyZXNzLTE3MjY5OS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTE3MjY5
OS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTU2Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTgnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1
cmU1OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3Mt
MTcyNjk5LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTcnPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1OSc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVj
dGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWdu
YWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzk3IEtK
Uzo6Tm9kZTxicj4KLVs2Nzc2MF0gLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzIGxp
bmUgNjE6IFVSSUVycm9yOiBVUkkgZXJyb3I8YnI+CitbMTQxOV0gLi9qczFfNS9SZWdyZXNzL3Jl
Z3Jlc3MtMTcyNjk5LmpzIGxpbmUgNjE6IFVSSUVycm9yOiBVUkkgZXJyb3I8YnI+CiA8L3R0Pjxi
cj4KLTxhIG5hbWU9J2ZhaWx1cmU1OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0LmpzJz5qczFf
NS9SZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NTI0JyB0YXJnZXQ9J290
aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxNzk1MjQ8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1
cmU1Nyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTU5Jz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8
YSBuYW1lPSdmYWlsdXJlNTknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTE3OTUyNC5qcyc+anMxXzUvUmVn
cmVzcy9yZWdyZXNzLTE3OTUyNC5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVn
emlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTUyNCcgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnPkJ1ZyBOdW1iZXIgMTc5NTI0PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTgn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2MCc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0t
PiBTVEFUVVM6IERvbid0IGNyYXNoIG9uIGV4dHJhbmVvdXMgYXJndW1lbnRzIHRvIHN0ci5tYXRj
aCgpLCBldGMuPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMTQgb2YgdGVzdCAtPGJyPgpAQCAtNjczLDE2
ICs2NjIsMjIgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVw
b3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICdTSE9VTEQgSEFWRSBGQUxMRU4gSU5U
TyBDQVRDSC1CTE9DSyEnLCBBY3R1YWwgdmFsdWUgJ0FCQyBaYmMnPGJyPgogLS0+IEZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJl
NTknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
anMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMnPmpzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0
LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTgnPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVy
ZTYwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV81L1Njb3BlL3JlZ3Jlc3MtMTg0MTA3LmpzJz5qczFfNS9TY29wZS9yZWdyZXNzLTE4NDEw
Ny5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTU5Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjEnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBl
eGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8
YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDM5NyBLSlM6Ok5v
ZGU8YnI+Ci1bNjc4MjNdIC4vanMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMgbGluZSA1Njog
UmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNjcmlwdDxicj4KK1sxNDM1XSAu
L2pzMV81L1Njb3BlL3JlZ3Jlc3MtMTg0MTA3LmpzIGxpbmUgMTIzOiBSZWZlcmVuY2VFcnJvcjog
Q2FuJ3QgZmluZCB2YXJpYWJsZTogeTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTYw
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV81L1Njb3BlL3Njb3BlLTAwMS5qcyc+anMxXzUvU2NvcGUvc2NvcGUtMDAxLmpzPC9hPiBmYWls
ZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTMyNjgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDUzMjY4PC9hPjxicj4K
LSBbIDxhIGhyZWY9JyNmYWlsdXJlNTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmU2MSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTYxJz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1Njb3BlL3JlZ3Jlc3MtMjIw
NTg0LmpzJz5qczFfNS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+
CisgWyA8YSBocmVmPScjZmFpbHVyZTYwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlNjInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitU
ZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBv
dXRwdXQgd2FzOjxicj4KK1sxNDQ0XSAuL2pzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzIGxp
bmUgNTY6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTY3JpcHQ8YnI+Cis8
L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU2Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9TY29wZS9zY29wZS0wMDEuanMnPmpzMV81
L1Njb3BlL3Njb3BlLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemls
bGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTUzMjY4JyB0YXJnZXQ9J290aGVyX3dpbmRv
dyc+QnVnIE51bWJlciA1MzI2ODwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTYxJz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjMnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RB
VFVTOiBUZXN0aW5nIHNjb3BlIGFmdGVyIGNoYW5naW5nIG9iai5fX3Byb3RvX188YnI+CiBGYWls
dXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gU3RlcCAxOiAgc2V0dGluZyBvYmouX19wcm90b19fID0gZ2xvYmFsIG9iamVjdDxicj4KQEAg
LTY5Myw4ICs2ODgsOCBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ3VuZGVmaW5lZCcsIEFjdHVh
bCB2YWx1ZSAnMSc8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+
CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU2MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzAxNTc0
LmpzJz5qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzAxNTc0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhy
ZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxNTc0JyB0
YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAzMDE1NzQ8L2E+PGJyPgotIFsgPGEgaHJl
Zj0nI2ZhaWx1cmU2MCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTYy
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlNjMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qcyc+
anMxXzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdo
dHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTU3NCcgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMzAxNTc0PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlNjInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2NCc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgogPHR0Pi0tPiBTVEFUVVM6IEU0WCBzaG91bGQgYmUgZW5hYmxlZCBldmVuIHdoZW4gZTR4PTEg
bm90IHNwZWNpZmllZDxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVE
ITogRTRYIHNob3VsZCBiZSBlbmFibGVkIGV2ZW4gd2hlbiBlNHg9MSBub3Qgc3BlY2lmaWVkOiBY
TUwoKTxicj4KQEAgLTcwNCwzMCArNjk5LDI3IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CiAtLT4gRkFJTEVEITogRXhwZWN0ZWQgdmFsdWUgJ05vIGVycm9yJywgQWN0dWFsIHZhbHVlICdl
cnJvcjogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFhNTCc8YnI+CiAtLT4g
RkFJTEVEITogPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNjInPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9y
ZWdyZXNzLTMwOTI0Mi5qcyc+anMxXzYvUmVncmVzcy9yZWdyZXNzLTMwOTI0Mi5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTYxJz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlNjMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU2NCc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdy
ZXNzL3JlZ3Jlc3MtMzA5MjQyLmpzJz5qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzA5MjQyLmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNjMnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2NSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMTIxMiBLSlM6Ok5vZGU8YnI+
Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU2Myc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3
LmpzJz5qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
LSBbIDxhIGhyZWY9JyNmYWlsdXJlNjInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmU2NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorVGVzdGNhc2UgcHJvZHVjZWQgbm8gb3V0cHV0ITwvdHQ+PGJyPgor
PGEgbmFtZT0nZmFpbHVyZTY1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMTQ4ODcuanMnPmpzMV82L1Jl
Z3Jlc3MvcmVncmVzcy0zMTQ4ODcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0n
I2ZhaWx1cmU2NCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTY2Jz5O
ZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08
YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWlu
YXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+
Ci1MRUFLOiAxMjEyIEtKUzo6Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTY0
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV82L1N0cmluZy9yZWdyZXNzLTMwNjU5MS5qcyc+anMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2NTkx
LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzA2NTkxJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAz
MDY1OTE8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU2Myc+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTY1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRw
dXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNjYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2NTkx
LmpzJz5qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJl
Zj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDY1OTEnIHRh
cmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDMwNjU5MTwvYT48YnI+CisgWyA8YSBocmVm
PScjZmFpbHVyZTY1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjcn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJt
aW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxi
cj4KLUxFQUs6IDEyMTIgS0pTOjpOb2RlPGJyPgogLS0+IEJVR05VTUJFUjogMzA2NTkxPGJyPgog
LS0+IFNUQVRVUzogU3RyaW5nIHN0YXRpYyBtZXRob2RzPGJyPgogLS0+IFNUQVRVUzogU2VlIGh0
dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNDgyODxicj4KLVs2
Nzg0NV0gLi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanMgbGluZSA0ODogVHlwZUVycm9y
OiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIFN0cmluZy5zcGxpdCkgaXMg
bm90IG9iamVjdC48YnI+CitbMTQ2Nl0gLi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanMg
bGluZSA0ODogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9u
IFN0cmluZy5zcGxpdCkgaXMgbm90IG9iamVjdC48YnI+CiA8L3R0Pjxicj4KIDwvZGw+CiBbIDxh
IGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiB8IDxhIGhyZWY9JyNmYWlsX2RldGFp
bCc+VG9wIG9mIEZhaWx1cmVzPC9hPiBdPGJyPgpAQCAtNzM1LDE1ICs3MjcsMTYgQEAgTEVBSzog
MTIxMiBLSlM6Ok5vZGU8YnI+CiA8cHJlPgogPGEgbmFtZT0ncmV0ZXN0X2xpc3QnPjwvYT4KIDxo
Mj5SZXRlc3QgTGlzdDwvaDI+PGJyPgotIyBSZXRlc3QgTGlzdCwga2pzLCBnZW5lcmF0ZWQgVGh1
IEp1bCAxOSAxMzoxMDowOCAyMDA3LgorIyBSZXRlc3QgTGlzdCwga2pzLCBnZW5lcmF0ZWQgVGh1
IEF1ZyAgMiAyMTo1MzozMiAyMDA3LgogIyBPcmlnaW5hbCB0ZXN0IGJhc2Ugd2FzOiBBbGwgdGVz
dHMuCi0jIDExMjcgb2YgMTEzNSB0ZXN0KHMpIHdlcmUgY29tcGxldGVkLCA2NCBmYWlsdXJlcyBy
ZXBvcnRlZC4KKyMgMTEyNyBvZiAxMTM1IHRlc3Qocykgd2VyZSBjb21wbGV0ZWQsIDY2IGZhaWx1
cmVzIHJlcG9ydGVkLgogZWNtYS9UeXBlQ29udmVyc2lvbi85LjMuMS0zLmpzCiBlY21hXzIvRXhj
ZXB0aW9ucy9mdW5jdGlvbi0wMDEuanMKIGVjbWFfMi9SZWdFeHAvcmVncmVzcy0wMDEuanMKIGVj
bWFfMi9SZWdFeHAvdW5pY29kZS0wMDEuanMKIGVjbWFfMy9EYXRlLzE1LjkuNS43LmpzCiBlY21h
XzMvRnVuRXhwci9mZS0wMDEuanMKK2VjbWFfMy9GdW5jdGlvbi9zY29wZS0wMDEuanMKIGVjbWFf
My9SZWdFeHAvMTUuMTAuMi0xLmpzCiBlY21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAxLmpzCiBl
Y21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAyLmpzCkBAIC03OTYsNiArNzg5LDcgQEAganMxXzUv
UmVncmVzcy9yZWdyZXNzLTEwNDA3Ny5qcwoganMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5q
cwoganMxXzUvUmVncmVzcy9yZWdyZXNzLTE3MjY5OS5qcwoganMxXzUvUmVncmVzcy9yZWdyZXNz
LTE3OTUyNC5qcworanMxXzUvU2NvcGUvcmVncmVzcy0xODQxMDcuanMKIGpzMV81L1Njb3BlL3Jl
Z3Jlc3MtMjIwNTg0LmpzCiBqczFfNS9TY29wZS9zY29wZS0wMDEuanMKIGpzMV82L1JlZ3Jlc3Mv
cmVncmVzcy0zMDE1NzQuanMKSW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM1KQorKysgSmF2
YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MDctMDgtMDIgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZvcndhcmRp
bmcgaGVhZGVycyBmb3Iga2pzL0NvbW1vbklkZW50aWZpZXJzLmguCisKKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3
YXJkaW5nSGVhZGVycy93dGYvSGFzaFRyYWl0cy5oOiBBZGRlZC4KKwogMjAwNy0wNy0xNiAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4K
SW5kZXg6IEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hh
c2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYXNoRnVuY3Rpb25zLmg+CkluZGV4OiBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaFRyYWl0cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoVHJhaXRzLmgJKHJldmlzaW9u
IDApCisrKyBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaFRyYWl0cy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFz
aFRyYWl0cy5oPgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAwNy0wOC0wMiAgQ2FtZXJvbiBad2FyaWNoICA8
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIFdlYkNvcmUgd29yayB3aXRoIHRoZSBuZXcgdmFyaWFibGUg
bG9va3VwIG9wdGltaXphdGlvbnMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUuIEluIHBhcnRp
Y3VsYXIsIGFkZCBmb3J3YXJkaW5nIGhlYWRlcnMgZm9yCisgICAgICAgIGtqcy9Db21tb25JZGVu
dGlmaWVycy5oLCBhZGQgZXhwbGljaXQgV2ViQ29yZTo6IG5hbWVzcGFjZSBtYXJraW5ncyB0bwor
ICAgICAgICBhdm9pZCBwcm9ibGVtcyB3aXRoIG5ldyBzeW1ib2xzIGluIHRoZSBleHBvcnRlZCBL
SlMgbmFtZXNwYWNlcywgYW5kCisgICAgICAgIHN1cHBvcnQgdGhlIG5ldyBtZXRob2Qgb2YgcGFz
c2luZyBhcm91bmQgUmVhZE9ubHkgYXR0cmlidXRlcy4KKworICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojpj
dXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFBy
b2Nlc3Nvci5jcHA6CisgICAgICAgIChLSlM6OlhTTFRQcm9jZXNzb3JQcm90b3R5cGVGdW5jdGlv
bjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNw
cDoKKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6OmdldERPTU5vZGVGb3JEb2N1bWVu
dCk6CisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01Ob2RlRm9yRG9j
dW1lbnQpOgorICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6cHV0RE9NTm9kZUZvckRv
Y3VtZW50KToKKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6OnVwZGF0ZURPTU5vZGVE
b2N1bWVudCk6CisKIDIwMDctMDgtMDIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSBAQAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hhc2hGdW5jdGlvbnMuaD4KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNDQyMykK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw3ICs1NCw4IEBAIGJvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3Bl
cnR5U2wKICAgICB9CiAKICAgICAvLyBMb29rIGZvciBvdmVycmlkZXMgZmlyc3QKLSAgICBLSlM6
OkpTVmFsdWUqKiB2YWwgPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOworICAgIGJv
b2wgcm87CisgICAgS0pTOjpKU1ZhbHVlKiogdmFsID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVy
dHlOYW1lLCBybyk7CiAgICAgaWYgKHZhbCkgewogICAgICAgICBpZiAoIWlzU2FmZVNjcmlwdChl
eGVjKSkgewogICAgICAgICAgICAgc2xvdC5zZXRVbmRlZmluZWQodGhpcyk7CkBAIC02NSw3ICs2
Niw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3BlcnR5U2wKICAgICAgICAg
aWYgKF9wcm9wLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWxbMF0tPnR5cGUoKSA9
PSBLSlM6OkdldHRlclNldHRlclR5cGUpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVydHlT
bG90KHNsb3QsIHZhbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVT
bG90KHRoaXMsIHZhbCk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCB2YWws
IHJvKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hTTFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAyNDQyMykKKysrIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEs
NyBAQCBKU1ZhbHVlICpYU0xUUHJvY2Vzc29yUHJvdG90eXBlRnVuY3Rpb246CiAgICAgICAgICAg
ICBKU1ZhbHVlICpub2RlVmFsID0gYXJnc1swXTsKICAgICAgICAgICAgIEpTVmFsdWUgKmRvY1Zh
bCA9IGFyZ3NbMV07CiAgICAgICAgICAgICBpZiAobm9kZVZhbC0+aXNPYmplY3QoJkpTTm9kZTo6
aW5mbykgJiYgZG9jVmFsLT5pc09iamVjdCgmSlNEb2N1bWVudDo6aW5mbykpIHsKLSAgICAgICAg
ICAgICAgICBOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8SlNOb2RlKj4obm9kZVZhbCktPmltcGwo
KTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8SlNO
b2RlKj4obm9kZVZhbCktPmltcGwoKTsKICAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzdGF0aWNfY2FzdDxKU0RvY3VtZW50ICo+KGRvY1ZhbCkt
PmltcGwoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgcHJvY2Vzc29yLnRy
YW5zZm9ybVRvRnJhZ21lbnQobm9kZSwgZG9jKS5nZXQoKSk7CiAgICAgICAgICAgICB9CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkocmV2aXNpb24gMjQ0MjMpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyAr
NTYsNyBAQCB1c2luZyBuYW1lc3BhY2UgRXZlbnROYW1lczsKIG5hbWVzcGFjZSBLSlMgewogCiB0
eXBlZGVmIEhhc2hNYXA8dm9pZCosIERPTU9iamVjdCo+IERPTU9iamVjdE1hcDsKLXR5cGVkZWYg
SGFzaE1hcDxOb2RlKiwgSlNOb2RlKj4gTm9kZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxXZWJDb3Jl
OjpOb2RlKiwgSlNOb2RlKj4gTm9kZU1hcDsKIHR5cGVkZWYgSGFzaE1hcDxEb2N1bWVudCosIE5v
ZGVNYXAqPiBOb2RlUGVyRG9jTWFwOwogCiAvLyBGb3IgZGVidWdnaW5nLCBrZWVwIGEgc2V0IG9m
IHdyYXBwZXJzIGN1cnJlbnRseSByZWdpc3RlcmVkLCBhbmQgY2hlY2sgdGhhdApAQCAtMTU1LDcg
KzE1NSw3IEBAIHZvaWQgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdCgKICAgICBk
b21PYmplY3RzKCkucmVtb3ZlKG9iamVjdEhhbmRsZSk7CiB9CiAKLUpTTm9kZSogU2NyaXB0SW50
ZXJwcmV0ZXI6OmdldERPTU5vZGVGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUq
IG5vZGUpCitKU05vZGUqIFNjcmlwdEludGVycHJldGVyOjpnZXRET01Ob2RlRm9yRG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpOb2RlKiBub2RlKQogewogICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU05vZGUqPihkb21PYmplY3RzKCku
Z2V0KG5vZGUpKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBKU05vZGUqIFNjcmlwdEludGVycHJldGVy
OjpnZXRET01Ob2RlRm9yCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXZvaWQgU2NyaXB0SW50ZXJw
cmV0ZXI6OmZvcmdldERPTU5vZGVGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUq
IG5vZGUpCit2b2lkIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01Ob2RlRm9yRG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3JlOjpOb2RlKiBub2RlKQogewogICAgIFJFTU9WRV9X
UkFQUEVSKGdldERPTU5vZGVGb3JEb2N1bWVudChkb2N1bWVudCwgbm9kZSkpOwogICAgIGlmICgh
ZG9jdW1lbnQpIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNjcmlwdEludGVycHJldGVyOjpm
b3JnZXRET01Ob2RlRm9yCiAgICAgICAgIGRvY3VtZW50RGljdC0+cmVtb3ZlKG5vZGUpOwogfQog
Ci12b2lkIFNjcmlwdEludGVycHJldGVyOjpwdXRET01Ob2RlRm9yRG9jdW1lbnQoRG9jdW1lbnQq
IGRvY3VtZW50LCBOb2RlKiBub2RlLCBKU05vZGUqIHdyYXBwZXIpCit2b2lkIFNjcmlwdEludGVy
cHJldGVyOjpwdXRET01Ob2RlRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJDb3Jl
OjpOb2RlKiBub2RlLCBKU05vZGUqIHdyYXBwZXIpCiB7CiAgICAgQUREX1dSQVBQRVIod3JhcHBl
cik7CiAgICAgaWYgKCFkb2N1bWVudCkgewpAQCAtMjI4LDcgKzIyOCw3IEBAIEV4ZWNTdGF0ZSog
U2NyaXB0SW50ZXJwcmV0ZXI6Omdsb2JhbEV4ZWMKICAgICByZXR1cm4gSW50ZXJwcmV0ZXI6Omds
b2JhbEV4ZWMoKTsKIH0KIAotdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6dXBkYXRlRE9NTm9kZURv
Y3VtZW50KE5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2MsIERvY3VtZW50KiBuZXdEb2MpCit2
b2lkIFNjcmlwdEludGVycHJldGVyOjp1cGRhdGVET01Ob2RlRG9jdW1lbnQoV2ViQ29yZTo6Tm9k
ZSogbm9kZSwgRG9jdW1lbnQqIG9sZERvYywgRG9jdW1lbnQqIG5ld0RvYykKIHsKICAgICBBU1NF
UlQob2xkRG9jICE9IG5ld0RvYyk7CiAgICAgSlNOb2RlKiB3cmFwcGVyID0gZ2V0RE9NTm9kZUZv
ckRvY3VtZW50KG9sZERvYywgbm9kZSk7CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM1KQorKysgV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA3LTA4LTAyICBDYW1lcm9u
IFp3YXJpY2ggPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVycyBmb3IgQ29t
bW9uSWRlbnRpZmllcnMuaC4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNo
RnVuY3Rpb25zLmg6IEFkZGVkLgorCiAyMDA3LTA4LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW0KSW5kZXg6IFdlYktpdC9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9G
b3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IYXNoRnVuY3Rpb25zLmg+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDA3LTA4LTAzICBDYW1lcm9uIFp3YXJpY2ggIDxj
d3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRlc3RzIGZvciB0aGUgdmFyaWFibGUgbG9va3VwIG9wdGltaXphdGlv
bnMgaW1wb3J0ZWQgZnJvbSBLSlMsIGFuZCBhCisgICAgICAgIGZldyBzbGlnaHQgY2hhbmdlcyB0
byB0aGUgZXhwZWN0ZWQgcmVzdWx0cyBvZiBleGlzdGluZyB0ZXN0cyBjYXVzZWQgYnkKKyAgICAg
ICAgdGhlIG5ldyBjb2RlLiBUaGUgcmVsZXZhbnQgcmV2aXNpb25zIGluIEtERSBhcmUKKworICAg
ICAgICAgICAgNjcwNTQ4CisgICAgICAgICAgICA2NzE0ODEKKyAgICAgICAgICAgIDY3MTQ4NAor
ICAgICAgICAgICAgNjcxNTM2CisgICAgICAgICAgICA2NzE1NDEKKyAgICAgICAgICAgIDY3MTU0
OAorICAgICAgICAgICAgNjc0MTY3CisKKyAgICAgICAgKiBkb20vaHRtbC9sZXZlbDIvaHRtbC9I
VE1MRnJhbWVFbGVtZW50MDktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGRvbS9odG1sL2xldmVs
Mi9odG1sL0hUTUxJRnJhbWVFbGVtZW50MTEtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
anMva2RlL2FyZ3VtZW50cy1zY29wZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMva2RlL2FyZ3VtZW50cy1zY29wZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L2tkZS9jb21wbGV0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9mdW5j
LWRlY2wtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9mdW5jLWRl
Y2wuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvZnVuY3Rpb24tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvanMva2RlL2l0ZXJhdGlvbi1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25zLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvanMva2RlL29wZXJhdG9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9q
cy9rZGUvcmVzb3VyY2VzL2FyZ3VtZW50cy1zY29wZS5qczogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9rZGUvcmVzb3VyY2VzL2NvbXBsZXRpb24uanM6CisgICAgICAgICogZmFzdC9qcy9rZGUv
cmVzb3VyY2VzL2Z1bmMtZGVjbC5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvcmVz
b3VyY2VzL2Z1bmN0aW9uLmpzOgorICAgICAgICAqIGZhc3QvanMva2RlL3Jlc291cmNlcy9pdGVy
YXRpb24uanM6CisgICAgICAgICogZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2x2YWwtZXhjZXB0aW9u
cy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvcmVzb3VyY2VzL29wZXJhdG9ycy5q
czoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvc2NvcGUuanM6CisgICAgICAgICog
ZmFzdC9qcy9rZGUvc2NvcGUtZXhwZWN0ZWQudHh0OgorCiAyMDA3LTA3LTE4ICBNYWNpZWogU3Rh
Y2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyLgpJ
bmRleDogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEZyYW1lRWxlbWVudDA5
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIv
aHRtbC9IVE1MRnJhbWVFbGVtZW50MDktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDQyMykKKysr
IExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxGcmFtZUVsZW1lbnQwOS1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgNjkyOiBWYWx1ZSBjb21wbGV0ZSAocmVzdWx0IG9mIGV4cHJlc3Npb24gc2V0VXBQYWdl
KSBpcyBub3Qgb2JqZWN0LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY5MjogVmFsdWUgY29tcGxl
dGUgKHJlc3VsdCBvZiBleHByZXNzaW9uIHNldFVwUGFnZSkgaXMgbm90IGFuIG9iamVjdC4KIFRl
c3Q6CWh0dHA6Ly93d3cudzMub3JnLzIwMDEvRE9NLVRlc3QtU3VpdGUvbGV2ZWwyL2h0bWwvSFRN
TEZyYW1lRWxlbWVudDA5CiBTdGF0dXM6CVN1Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL2RvbS9o
dG1sL2xldmVsMi9odG1sL0hUTUxJRnJhbWVFbGVtZW50MTEtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxJRnJhbWVFbGVtZW50
MTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMi9odG1sL0hUTUxJRnJhbWVFbGVtZW50MTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY5MjogVmFsdWUgY29t
cGxldGUgKHJlc3VsdCBvZiBleHByZXNzaW9uIHNldFVwUGFnZSkgaXMgbm90IG9iamVjdC4KK0NP
TlNPTEUgTUVTU0FHRTogbGluZSA2OTI6IFZhbHVlIGNvbXBsZXRlIChyZXN1bHQgb2YgZXhwcmVz
c2lvbiBzZXRVcFBhZ2UpIGlzIG5vdCBhbiBvYmplY3QuCiBUZXN0OglodHRwOi8vd3d3LnczLm9y
Zy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMi9odG1sL0hUTUxJRnJhbWVFbGVtZW50MTEKIFN0
YXR1czoJU3VjY2VzcwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNj
b3BlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9h
cmd1bWVudHMtc2NvcGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorS0RFIEpTIFRlc3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgdGVzdDAKK1BBU1MgdGVzdDEKK1BBU1MgdGVzdDIKK1BBU1MgdGVzdDMKK1BBU1Mg
dGVzdDQuKDEpCitQQVNTIHRlc3Q0LigyKQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2FyZ3Vt
ZW50cy1zY29wZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Fy
Z3VtZW50cy1zY29wZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9r
ZGUvYXJndW1lbnRzLXNjb3BlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiS0RFIEpTIFRlc3QiKTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hcmd1bWVudHMtc2NvcGUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvY29t
cGxldGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9r
ZGUvY29tcGxldGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9qcy9rZGUvY29tcGxldGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTUsNiArNSwxMSBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiAK
IFBBU1MgZm9vKCksIGkgaXMgMgogUEFTUyBjYXVnaHQgaXMgdHJ1ZQorUEFTUyB2YWwgaXMgMTEK
K1BBU1MgdmFsIGlzIDEyCitQQVNTIHZhbCBpcyAxMworUEFTUyB2YWwgaXMgMTQKK1BBU1MgdmFs
IGlzIDE1CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1bmMtZGVjbC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvZnVuYy1kZWNsLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1bmMtZGVjbC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK0tERSBKUyBUZXN0CisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEZ1bmN0aW9uIGRlY2xhcmF0aW9uIHRh
a2VzIGVmZmVjdCBhdCBlbnRyeQorUEFTUyBEZWNsIG5vdCB5ZXQgb3ZlcndyaXR0ZW4KK1BBU1Mg
QWZ0ZXIgYXNzaWduICgwKQorUEFTUyBmdW5jdGlvbiBkZWNscyBoYXZlIG5vIGV4ZWN1dGlvbiBj
b250ZW50CitQQVNTIEFmdGVyIGFzc2lnbiAjMiAoMCkKK1BBU1MgRGVjbCBhbHJlYWR5IG92ZXJ3
cml0dGVuCitQQVNTIEFmdGVyIGFzc2lnbiAoMSkKK1BBU1MgZnVuY3Rpb24gZGVjbHMgaGF2ZSBu
byBleGVjdXRpb24gY29udGVudAorUEFTUyBBZnRlciBhc3NpZ24gIzIgKDEpCitQQVNTIERlY2wg
YWxyZWFkeSBvdmVyd3JpdHRlbgorUEFTUyBBZnRlciBhc3NpZ24gKDIpCitQQVNTIGZ1bmN0aW9u
IGRlY2xzIGhhdmUgbm8gZXhlY3V0aW9uIGNvbnRlbnQKK1BBU1MgQWZ0ZXIgYXNzaWduICMyICgy
KQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1bmMtZGVjbC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1bmMtZGVjbC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvZnVuYy1kZWNsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
S0RFIEpTIFRlc3QiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mdW5jLWRl
Y2wuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9rZGUvZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMva2RlL2Z1bmN0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL2tkZS9mdW5jdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDggKzM0LDYgQEAgUEFTUyBvcmdGdW5jQ2xvbmUoJ3dvcmxkJykgaXMgJ0hlbGxvIHdv
cgogUEFTUyBncm91cENsb25lKDEsIDIpIGlzIDkKIFBBU1MgU3RyaW5nKE1hdGguc2luKSBpcyBz
aW5TdHIKIFBBU1Mgc2hhZG93KCkgaXMgMgotUEFTUyBuZXN0ZWRyZXQgaXMgJ291dGVyIG5lc3Qn
Ci1QQVNTIG5vdF9uZXN0ZWRyZXQgaXMgJ2dsb2JhbCBuZXN0JwogUEFTUyBzYW1wbGUucHJvdG90
eXBlLnByb3RvdHlwZSBpcyB1bmRlZmluZWQuCiBQQVNTIHNhbXBsZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IgPT0gc2FtcGxlIGlzIHRydWUKIFBBU1MgY2F1Z2h0IGlzIHRydWUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMva2RlL2l0ZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvaXRlcmF0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9pdGVyYXRpb24tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC05LDYgKzksMjIgQEAgUEFTUyBjb3VudCBpcyAxMAogUEFTUyBw
cm9wZXJ0aWVzIGlzICdhPTExO2I9MjI7JwogUEFTUyBsaXN0IGlzICdbMF09MTAwO1sxXT0xMDE7
JwogUEFTUyBsaXN0IGlzICcxMjMnCitQQVNTIGltbWVkaWF0ZVdoaWxlQnJlYWsgaXMgdW5kZWZp
bmVkLgorUEFTUyBsYXRlcldoaWxlQnJlYWsgaXMgJ2ZvbycKK1BBU1Mgd2hpbGVFbmQgaXMgMgor
UEFTUyBpbW1lZGlhdGVEb1doaWxlQnJlYWsgaXMgdW5kZWZpbmVkLgorUEFTUyBsYXRlckRvV2hp
bGVCcmVhayBpcyAnYmFyJworUEFTUyBkb1doaWxlRW5kIGlzIDMKK1BBU1MgaW1tZWRpYXRlRm9y
QnJlYWsgaXMgdW5kZWZpbmVkLgorUEFTUyBsYXRlckZvckJyZWFrIGlzICd6aWxjaCcKK1BBU1Mg
Zm9yRW5kIGlzICdxdWFyaycKK1BBU1MgaXRlcnMgaXMgMTAKK1BBU1MgZm9vOiBjb250aW51ZSBm
b287ICB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgY29udGludWUgc3RhdGVt
ZW50Li4KK1BBU1MgY29udGludWU7ICB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFs
aWQgY29udGludWUgc3RhdGVtZW50Li4KK1BBU1MgYnJlYWs7IHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogSW52YWxpZCBicmVhayBzdGF0ZW1lbnQuLgorUEFTUyBmb286IGJyZWFrIGZvbzsg
IGlzIHVuZGVmaW5lZC4KK1BBU1MgZm9vOiB7IGEgPSAxOyBicmVhayBmb287IGEgPSAyOyB9IGlz
IDEKK1BBU1MgaXRlcnMgaXMgMTAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRp
b25zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9s
dmFsLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzOSBAQAorS0RFIEpTIFRlc3QKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgZnVuY3Rpb24gKCkgCit7CisgIGEgPSB4OworfSB0aHJldyBleGNlcHRpb24gUmVm
ZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IHguCitQQVNTIGZ1bmN0aW9uICgpIAor
eworICB4ICs9ICJmb28iOworfSB0aHJldyBleGNlcHRpb24gUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IHguCitQQVNTIGZ1bmN0aW9uICgpIAoreworICBiID0gYS54OworfSBk
aWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAgYiA9IGFb
IngiXTsKK30gZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1MgZnVuY3Rpb24gKCkgCit7
CisgIGFbIngiXSArPSAiYmF6IjsKK30gZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1Mg
YVsneCddIGlzICJ1bmRlZmluZWRiYXoiCitQQVNTIGZ1bmN0aW9uICgpIAoreworICBiID0gYS55
OworfSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAg
YS55ICs9ICJnbGFyY2giOworfSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgorUEFTUyBhWyd5
J10gaXMgInVuZGVmaW5lZGdsYXJjaCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9sdmFsLWV4
Y2VwdGlvbnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9sdmFs
LWV4Y2VwdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2Rl
L2x2YWwtZXhjZXB0aW9ucy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIktERSBKUyBUZXN0Iik7Cis8
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbHZhbC1leGNlcHRpb25zLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL29wZXJh
dG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUv
b3BlcmF0b3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2pzL2tkZS9vcGVyYXRvcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2
ICsxMSwxMCBAQCBQQVNTICEhMSBpcyB0cnVlCiBQQVNTICEwIGlzIHRydWUKIFBBU1MgISEnYScg
aXMgdHJ1ZQogUEFTUyAhJycgaXMgdHJ1ZQorUEFTUyArOSBpcyA5CitQQVNTIHZhciBpID0gMTA7
ICtpIGlzIDEwCitQQVNTIC0xMSBpcyAtMTEKK1BBU1MgdmFyIGkgPSAxMjsgLWkgaXMgLTEyCiBQ
QVNTIHZhciBpID0gMDsgKytpOyBpcyAxCiBQQVNTIHZhciBpID0gMDsgKytpOyBpIGlzIDEKIFBB
U1MgdmFyIGkgPSAwOyBpKys7IGlzIDAKQEAgLTI1LDYgKzI5LDggQEAgUEFTUyB2YXIgaSA9IHRy
dWU7IGktLSBpcyAxCiBQQVNTIHZhciBpID0gdHJ1ZTsgaS0tOyBpIGlzIDAKIFBBU1MgfjAgaXMg
LTEKIFBBU1MgfjEgaXMgLTIKK1BBU1Mgfk5hTiBpcyAtMQorUEFTUyB+SW5maW5pdHkgaXMgLTEK
IFBBU1Mgfk1hdGgucG93KDIsIDMzKSBpcyAtMQogUEFTUyB+KE1hdGgucG93KDIsIDMyKSArIE1h
dGgucG93KDIsIDMxKSArIDIpIGlzIDIxNDc0ODM2NDUKIFBBU1Mgfm51bGwgaXMgLTEKQEAgLTQw
LDYgKzQ2LDIxIEBAIFBBU1MgLTggPj4gMjQgaXMgLTEKIFBBU1MgOCA+Pj4gMiBpcyAyCiBQQVNT
IC04ID4+PiAyNCBpcyAyNTUKIFBBU1MgKC0yMjAwMDAwMDAwID4+IDEpIDw8IDEgaXMgMjA5NDk2
NzI5NgorUEFTUyBJbmZpbml0eSA+PiAxIGlzIDAKK1BBU1MgSW5maW5pdHkgPDwgMSBpcyAwCitQ
QVNTIEluZmluaXR5ID4+PiAxIGlzIDAKK1BBU1MgTmFOID4+IDEgaXMgMAorUEFTUyBOYU4gPDwg
MSBpcyAwCitQQVNTIE5hTiA+Pj4gMSBpcyAwCitQQVNTIDguMSA+PiAxIGlzIDQKK1BBU1MgOC4x
IDw8IDEgaXMgMTYKK1BBU1MgOC4xID4+PiAxIGlzIDQKK1BBU1MgOC45ID4+IDEgaXMgNAorUEFT
UyA4LjkgPDwgMSBpcyAxNgorUEFTUyA4LjkgPj4+IDEgaXMgNAorUEFTUyBNYXRoLnBvdygyLCAz
MikgPj4gMSBpcyAwCitQQVNTIE1hdGgucG93KDIsIDMyKSA8PCAxIGlzIDAKK1BBU1MgTWF0aC5w
b3coMiwgMzIpID4+PiAxIGlzIDAKIFBBU1MgMSsyIGlzIDMKIFBBU1MgJ2EnKydiJyBpcyAnYWIn
CiBQQVNTICdhJysyIGlzICdhMicKQEAgLTE1Miw2ICsxNzMsOCBAQCBQQVNTIE5hTiA9PT0gTmFO
IGlzIGZhbHNlCiBQQVNTIDAuMCA9PT0gMCBpcyB0cnVlCiBQQVNTICdhYmMnID09PSAnYWJjJyBp
cyB0cnVlCiBQQVNTICdhJyA9PT0gJ3gnIGlzIGZhbHNlCitQQVNTIDEgPT09ICcxJyBpcyBmYWxz
ZQorUEFTUyAnMScgPT09IDEgaXMgZmFsc2UKIFBBU1MgdHJ1ZSA9PT0gdHJ1ZSBpcyB0cnVlCiBQ
QVNTIGZhbHNlID09PSBmYWxzZSBpcyB0cnVlCiBQQVNTIHRydWUgPT09IGZhbHNlIGlzIGZhbHNl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9zY29wZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvc2NvcGUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyNDQyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Njb3BlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDkgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQQogCiAKIFBBU1MgZigyKSBpcyAyMgorUEFTUyBPQkpFQ1QudG9TdHJp
bmcoKSBpcyAnaGVsbG8nCitQQVNTIHMgaXMgJ2hlbGxvJworUEFTUyBnIGlzICdmb28nCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9hcmd1bWVudHMtc2NvcGUuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2FyZ3VtZW50cy1zY29wZS5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9hcmd1
bWVudHMtc2NvcGUuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8vIFdlIGNhbid0
IHVzZSBub3JtYWwgc2hvdWxkQmUgaGVyZSwgc2luY2UgdGhleSdkIGV2YWwgaW4gdGhlIHdyb25n
IGNvbnRleHQuLi4KKworZnVuY3Rpb24gc2hvdWxkQmVPZlR5cGUobXNnLCB2YWwsIHR5cGUpIHsK
KyAgaWYgKHR5cGVvZih2YWwpICE9IHR5cGUpCisgICAgdGVzdEZhaWxlZChtc2cgKyAiOiB2YWx1
ZSBoYXMgdHlwZSAiICsgdHlwZW9mKHZhbCkgKyAiICwgbm90OiIgKyB0eXBlKTsKKyAgZWxzZQor
ICAgIHRlc3RQYXNzZWQobXNnKTsKK30KKworZnVuY3Rpb24gdGVzdDAoKSB7CisgICAgdmFyIGFy
Z3VtZW50czsKKyAgICAvLyB2YXIgZXhlY3V0aW9uIHNob3VsZCBub3Qgb3ZlcndyaXRlIHNvbWV0
aGluZyB0aGF0IHdhcyAKKyAgICAvLyBpbiBzY29wZSBiZWZvcmVoYW5kIC0tIGUuZy4gdGhlIGFy
Z3VtZW50cyB0aGluZworICAgIHNob3VsZEJlT2ZUeXBlKCJ0ZXN0MCIsIGFyZ3VtZW50cywgJ29i
amVjdCcpOworIH0KKworZnVuY3Rpb24gdGVzdDEoKSB7CisgICAgLy8gTm8gbmVlZCB0byB1bmRl
Zi1pbml0aWFsaXplIHNvbWV0aGluZyBpbiBzY29wZSBhbHJlYWR5IQorICAgIHNob3VsZEJlT2ZU
eXBlKCJ0ZXN0MSIsIGFyZ3VtZW50cywgJ29iamVjdCcpOworICAgIHZhciBhcmd1bWVudHM7Cit9
CisKK2Z1bmN0aW9uIHRlc3QyKGFyZ3VtZW50cykgeworICAgIC8vIEZvcm1hbHMgT1RPSCBjYW4g
b3ZlcndyaXRlIHRoZSBhcmdzIG9iamVjdAorICAgIHNob3VsZEJlT2ZUeXBlKCJ0ZXN0MiIsIGFy
Z3VtZW50cywgJ251bWJlcicpOworfQorCisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIC8vIERp
dHRvIGZvciBmdW5jdGlvbnMuLgorICAgIHNob3VsZEJlT2ZUeXBlKCJ0ZXN0MyIsIGFyZ3VtZW50
cywgJ2Z1bmN0aW9uJyk7CisgICAgZnVuY3Rpb24gYXJndW1lbnRzKCkge30KK30KKworZnVuY3Rp
b24gdGVzdDQoKSB7CisgICAgLy8gSGVyZSwgdGhlIC1kZWNsYXJhdGlvbi0gcGFydCBvZiB0aGUg
dmFyIGJlbG93IHNob3VsZCBoYXZlIG5vIAorICAgIC8vIGVmZmVjdC4uCisgICAgc2hvdWxkQmVP
ZlR5cGUoJ3Rlc3Q0LigxKScsIGFyZ3VtZW50cywgJ29iamVjdCcpOworICAgIHZhciBhcmd1bWVu
dHMgPSA0OworICAgIC8vIC4uIGJ1dCB0aGUgYXNzaWdubWVudCBzaG91ZCBqdXN0IGhhcHBlbgor
ICAgIHNob3VsZEJlT2ZUeXBlKCd0ZXN0NC4oMiknLCBhcmd1bWVudHMsICdudW1iZXInKTsKK30K
KworCit0ZXN0MCgpOwordGVzdDEoKTsKK3Rlc3QyKDQyKTsKK3Rlc3QzKCk7Cit0ZXN0NCgpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
anMva2RlL3Jlc291cmNlcy9jb21wbGV0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvanMva2RlL3Jlc291cmNlcy9jb21wbGV0aW9uLmpzCShyZXZpc2lvbiAyNDQyMykKKysr
IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9jb21wbGV0aW9uLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw0ICsxMiwxNiBAQCB2YXIgY2F1Z2h0ID0gZmFsc2U7CiB0cnkgeyBldmFs
KCJyZXR1cm47Iik7IH0gY2F0Y2goZSkgeyBjYXVnaHQgPSB0cnVlOyB9CiBzaG91bGRCZVRydWUo
ImNhdWdodCIpOwogCisvLyB2YWx1ZSBjb21wbGV0aW9ucyB0YWtlIHByZWNlZGVuY2UKK3ZhciB2
YWwgPSBldmFsKCIxMTsgeyB9Iik7CitzaG91bGRCZSgidmFsIiwgIjExIik7Cit2YWwgPSBldmFs
KCIxMjsgOyIpOworc2hvdWxkQmUoInZhbCIsICIxMiIpOwordmFsID0gZXZhbCgiMTM7IGlmKGZh
bHNlKTsiKTsKK3Nob3VsZEJlKCJ2YWwiLCAiMTMiKTsKK3ZhbCA9IGV2YWwoIjE0OyBmdW5jdGlv
biBmKCkge30iKTsKK3Nob3VsZEJlKCJ2YWwiLCAiMTQiKTsKK3ZhbCA9IGV2YWwoIjE1OyB2YXIg
diA9IDAiKTsKK3Nob3VsZEJlKCJ2YWwiLCAiMTUiKTsKKwogc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2Z1bmMtZGVjbC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuYy1k
ZWNsLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2Vz
L2Z1bmMtZGVjbC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLy8gV2UgY2FuJ3Qg
dXNlIG5vcm1hbCBzaG91bGRCZSBoZXJlLCBzaW5jZSB0aGV5J2QgZXZhbCBpbiB0aGUgd3Jvbmcg
Y29udGV4dC4uLgorZnVuY3Rpb24gc2hvdWxkQmVPZlR5cGUobXNnLCB2YWwsIHR5cGUpIHsKKyAg
aWYgKHR5cGVvZih2YWwpICE9IHR5cGUpCisgICAgdGVzdEZhaWxlZChtc2cgKyAiOiB2YWx1ZSBo
YXMgdHlwZSAiICsgdHlwZW9mKHZhbCkgKyAiICwgbm90OiIgKyB0eXBlKTsKKyAgZWxzZQorICAg
IHRlc3RQYXNzZWQobXNnKTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVWYWwobXNnLCB2YWwsIGV4
cGVjdGVkKSB7CisgIGlmICh2YWwgIT0gZXhwZWN0ZWQpCisgICAgdGVzdEZhaWxlZChtc2cgKyAi
OiB2YWx1ZSBpcyAiICsgdmFsICsgIiAsIG5vdDoiICsgZXhwZWN0ZWQpOworICBlbHNlCisgICAg
dGVzdFBhc3NlZChtc2cpOworfQorCitmID0gImdsb2JhbCI7CisKK2Z1bmN0aW9uIHRlc3QoKSB7
CisgIHRyeSB7CisgICAgc2hvdWxkQmVPZlR5cGUoIkZ1bmN0aW9uIGRlY2xhcmF0aW9uIHRha2Vz
IGVmZmVjdCBhdCBlbnRyeSIsIGYsICJmdW5jdGlvbiIpOworICB9CisgIGNhdGNoIChlKSB7Cisg
ICAgdGVzdEZhaWxlZCgiU2NvcGluZyB2ZXJ5IGJyb2tlbiEiKTsKKyAgfQorCisgIGZvciAodmFy
IGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgaWYgKGkgPT0gMCkKKyAgICAgIHNob3VsZEJlT2ZU
eXBlKCJEZWNsIG5vdCB5ZXQgb3ZlcndyaXR0ZW4iLCBmLCAnZnVuY3Rpb24nKTsKKyAgICBlbHNl
CisgICAgICBzaG91bGRCZU9mVHlwZSgiRGVjbCBhbHJlYWR5IG92ZXJ3cml0dGVuIiwgZiwgJ251
bWJlcicpOworCisgICAgZiA9IDM7CisgICAgc2hvdWxkQmVWYWwoIkFmdGVyIGFzc2lnbiAoIitp
KyIpIiwgZiwgMyk7CisKKyAgICBmdW5jdGlvbiBmKCkge307CisgICAgc2hvdWxkQmVWYWwoImZ1
bmN0aW9uIGRlY2xzIGhhdmUgbm8gZXhlY3V0aW9uIGNvbnRlbnQiLCBmLCAzKTsKKworICAgIGYg
PSA1OworCisgICAgc2hvdWxkQmVWYWwoIkFmdGVyIGFzc2lnbiAjMiAoIitpKyIpIiwgZiwgNSk7
CisgIH0KK30KKwordGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jdGlvbi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuY3Rpb24uanMJKHJl
dmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2Z1bmN0
aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMzIgKzE3Miw2IEBAIGZ1bmN0aW9uIHNoYWRv
dygpIHsgcmV0dXJuIDI7IH0KIHNob3VsZEJlKCJzaGFkb3coKSIsICIyIik7CiAKIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG5lc3RlZCBmdW5jdGlvbnMKLQotdmFyIG5lc3Rf
cHJvcGVydHkgPSAiZ2xvYmFsIG5lc3QiOwotCi1mdW5jdGlvbiBuZXN0ZWRfb3V0ZXIoKSB7Ci0K
LSAgZnVuY3Rpb24gbmVzdGVkX2lubmVyKCkgewotICAgIHJldHVybiBuZXN0X3Byb3BlcnR5Owot
ICB9Ci0KLX0KLQotZnVuY3Rpb24gbm90X25lc3RlZCgpIHsKLSAgcmV0dXJuIG5lc3RfcHJvcGVy
dHk7Ci19Ci0KLW5lc3RlZF9vdXRlci5uZXN0X3Byb3BlcnR5ID0gIm91dGVyIG5lc3QiOwotCi12
YXIgbmVzdGVkID0gbmVzdGVkX291dGVyLm5lc3RlZF9pbm5lcjsKLXZhciBuZXN0ZWRyZXQgPSBu
ZXN0ZWQoKTsKLXNob3VsZEJlKCJuZXN0ZWRyZXQiLCInb3V0ZXIgbmVzdCciKTsKLQotdmFyIG5v
dF9uZXN0ZWRyZXQgPSBub3RfbmVzdGVkKCk7Ci1zaG91bGRCZSgibm90X25lc3RlZHJldCIsIidn
bG9iYWwgbmVzdCciKTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gb3Ro
ZXIgcHJvcGVydGllcwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogZnVuY3Rpb24g
c2FtcGxlKCkgeyB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvaXRl
cmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNl
cy9pdGVyYXRpb24uanMJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9r
ZGUvcmVzb3VyY2VzL2l0ZXJhdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtNTMsNCArNTMsNjcg
QEAgZm9yICh2YXIgYSA9IFsxLDIsM10sIGxlbmd0aCA9IGEubGVuZ3RoLAogICBsaXN0ICs9IGFb
aV07CiB9CiBzaG91bGRCZSgibGlzdCIsICInMTIzJyIpOwotc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZQorCisvLyBjb21wbGV0aW9uIHZhbHVlcwordmFyIGltbWVkaWF0ZVdoaWxlQnJlYWsgPSBl
dmFsKCJ3aGlsZSAodHJ1ZSkgeyBicmVhazsgfSIpOworc2hvdWxkQmVVbmRlZmluZWQoImltbWVk
aWF0ZVdoaWxlQnJlYWsiLCAiJ2ZvbyciKTsKK3ZhciBsYXRlcldoaWxlQnJlYWsgPSBldmFsKCJ3
aGlsZSAodHJ1ZSkgeyAnZm9vJzsgYnJlYWs7IH0iKTsKK3Nob3VsZEJlKCJsYXRlcldoaWxlQnJl
YWsiLCAiJ2ZvbyciKTsKK3ZhciB3aGlsZUVuZCA9IGV2YWwoInZhciB5ID0gMDsgd2hpbGUgKHkg
PCAyKSB7ICsreSB9Iik7CitzaG91bGRCZSgid2hpbGVFbmQiLCAiMiIpOworCit2YXIgaW1tZWRp
YXRlRG9XaGlsZUJyZWFrID0gZXZhbCgiZG8geyBicmVhazsgfSB3aGlsZShmYWxzZSk7ICIpOwor
c2hvdWxkQmVVbmRlZmluZWQoImltbWVkaWF0ZURvV2hpbGVCcmVhayIsICInZm9vJyIpOwordmFy
IGxhdGVyRG9XaGlsZUJyZWFrID0gZXZhbCgiZG8geyAnYmFyJzsgYnJlYWs7IH0gd2hpbGUodHJ1
ZSk7Iik7CitzaG91bGRCZSgibGF0ZXJEb1doaWxlQnJlYWsiLCAiJ2JhciciKTsKK3ZhciBkb1do
aWxlRW5kID0gZXZhbCgidmFyIHkgPSAwOyBkbyB7ICsreSB9IHdoaWxlICh5IDwgMyk7Iik7Citz
aG91bGRCZSgiZG9XaGlsZUVuZCIsICIzIik7CisKK3ZhciBpbW1lZGlhdGVGb3JCcmVhayA9IGV2
YWwoImZvcig7OykgeyBicmVhazsgfSIpOworc2hvdWxkQmVVbmRlZmluZWQoImltbWVkaWF0ZUZv
ckJyZWFrIiwgIidmb28nIik7Cit2YXIgbGF0ZXJGb3JCcmVhayA9IGV2YWwoImZvcig7OykgeyAn
emlsY2gnOyBicmVhazsgfSIpOworc2hvdWxkQmUoImxhdGVyRm9yQnJlYWsiLCAiJ3ppbGNoJyIp
OwordmFyIGZvckVuZCA9IGV2YWwoImZvcih2YXIgeSA9IDA7IHkgPCA0OyArK3kpIHsgJ3F1YXJr
JyB9Iik7CitzaG91bGRCZSgiZm9yRW5kIiwgIidxdWFyayciKTsKKworLy8gVmFyaW91cyBzdHVm
ZiBmb3IgY29udHJvbCBmbG93IGFuZCBlcnJvciBoYW5kbGluZyBvZiBicmVhay9jb250aW51ZQor
dmFyIGl0ZXJzOworCisvLyBUZXN0IHdoZXRoZXIgd2UgaGFuZGxlIG11bHRpcGxlIGxhYmVscyBv
biB0aGUgc2FtZSBzdGF0ZW1lbnQgcmlnaHQKKy8vIE5vdGU6IHRoaXMgaXMgaW4gYSBmdW5jdGlv
biBzaW5jZSBrb25xIDMueCBqdXN0IGJyZWFrcyBvdXQgb2YgdGhlIHdob2xlIHRoaW5nLgorZnVu
Y3Rpb24gdGVzdExhYmVsTmVzdCgpIHsKKyAgaXRlcnMgPSAwOworICBmb286IGJhcjogd2hpbGUg
KHRydWUpIHsKKyAgICArK2l0ZXJzOworICAgIGlmIChpdGVycyA8IDEwKQorICAgICAgY29udGlu
dWUgZm9vOworICAgIGVsc2UKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3Rlc3RMYWJlbE5lc3Qo
KTsKK3Nob3VsZEJlKCdpdGVycycsICcxMCcpOworCisvLyBUZXN0IHRvIG1ha2Ugc3VyZSBkb2lu
ZyBjb250aW51ZSBvdXRzaWRlIGEgbG9vcAorLy8gdGhyb3dzIHByb3Blcmx5LiAoMy54IGRpZG4n
dCksIGFuZCBzbyBkb2VzIGEgbGFiZWwtbGVzcworLy8gYnJlYWsgb3V0c2lkZSBvZiBpdC4KK3No
b3VsZFRocm93KCdmb286IGNvbnRpbnVlIGZvbzsgJyk7CitzaG91bGRUaHJvdygnY29udGludWU7
ICcpOworc2hvdWxkVGhyb3coJ2JyZWFrOycpOworCisvLyBUaGVzZSBvbmVzIHNob3VsZCBiZSBm
aW5lIE9UT0gKK3Nob3VsZEJlVW5kZWZpbmVkKCdmb286IGJyZWFrIGZvbzsgJyk7CitzaG91bGRC
ZSgnZm9vOiB7IGEgPSAxOyBicmVhayBmb287IGEgPSAyOyB9JywgJzEnKTsKKworLy8gTWFrZSBz
dXJlIHdlIGRvbid0IGJyZWFrIG91dCB0b28gZmFyLgorZnVuY3Rpb24gdGVzdExvY2FsQnJlYWso
KSB7CisgIGw6IGJyZWFrIGw7Cit9CisKK2ZvciAoaXRlcnMgPSAwOyBpdGVycyA8IDEwOyArK2l0
ZXJzKQorICB0ZXN0TG9jYWxCcmVhaygpOworCitzaG91bGRCZSgnaXRlcnMnLCAnMTAnKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L2tkZS9yZXNvdXJjZXMvbHZhbC1leGNlcHRpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9sdmFsLWV4Y2VwdGlvbnMuanMJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvbHZhbC1leGNlcHRpb25zLmpz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvLyBUZXN0cyBmb3IgcmFpc2luZyAtLS0g
YW5kIG5vbi1yYWlzaW5nIGV4Y2VwdGlvbnMgb24gYWNjZXNzIHRvIHJlZmVyZW5jZSB0byB1bmRl
ZmluZWQgdGhpbmdzLi4uCisKKy8vIExvY2FscyBzaG91bGQgdGhyb3cgb24gYWNjZXNzIGlmIHVu
ZGVmaW5lZC4uCitmblNob3VsZFRocm93KGZ1bmN0aW9uKCkgeyBhID0geDsgfSwgUmVmZXJlbmNl
RXJyb3IpOworCisvLyBSZWFkLW1vZGlmeS13cml0ZSB2ZXJzaW9ucyBvZiBhc3NpZ25tZW50IHNo
b3VsZCB0aHJvdyBhcyB3ZWxsCitmblNob3VsZFRocm93KGZ1bmN0aW9uKCkgeyB4ICs9ICJmb28i
OyB9LCBSZWZlcmVuY2VFcnJvcik7CisKKy8vIE90aGVyIHJlZmVyZW5jZSB0eXBlcyBzaG91bGQg
anVzdCByZXR1cm4gdW5kZWZpbmVkLi4uCithID0gbmV3IE9iamVjdCgpOworZm5TaG91bGROb3RU
aHJvdyhmdW5jdGlvbigpIHsgYiA9IGEueDsgfSk7CitmblNob3VsZE5vdFRocm93KGZ1bmN0aW9u
KCkgeyBiID0gYVsneCddOyB9KTsKK2ZuU2hvdWxkTm90VGhyb3coZnVuY3Rpb24oKSB7IGFbJ3gn
XSArPSAnYmF6JzsgfSk7CitzaG91bGRCZSgiYVsneCddIiwgJyJ1bmRlZmluZWRiYXoiJyk7Citm
blNob3VsZE5vdFRocm93KGZ1bmN0aW9uKCkgeyBiID0gYS55OyB9KTsKK2ZuU2hvdWxkTm90VGhy
b3coZnVuY3Rpb24oKSB7IGEueSArPSAnZ2xhcmNoJzsgfSk7CitzaG91bGRCZSgiYVsneSddIiwg
JyJ1bmRlZmluZWRnbGFyY2giJyk7CisKKworLy8gSGVscGVycyEKK2Z1bmN0aW9uIGZuU2hvdWxk
VGhyb3coZiwgZXhUeXBlKQoreworICB2YXIgZXhjZXB0aW9uOworICB2YXIgX2F2OworICB0cnkg
eworICAgICBfYXYgPSBmKCk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0gZTsK
KyAgfQorCisgIGlmIChleGNlcHRpb24pIHsKKyAgICBpZiAodHlwZW9mIGV4VHlwZSA9PSAidW5k
ZWZpbmVkIiB8fCBleGNlcHRpb24gaW5zdGFuY2VvZiBleFR5cGUpCisgICAgICB0ZXN0UGFzc2Vk
KGYgKyAiIHRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKKyAgICBlbHNlCisg
ICAgICB0ZXN0RmFpbGVkKGYgKyAiIHNob3VsZCB0aHJvdyBleGNlcHRpb24gIiArIGV4VHlwZSAr
ICIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKKyAgfSBlbHNlIGlmICh0
eXBlb2YgX2F2ID09ICJ1bmRlZmluZWQiKQorICAgIHRlc3RGYWlsZWQoZiArICIgc2hvdWxkIHRo
cm93IGV4Y2VwdGlvbiAiICsgZXhUeXBlICsgIi4gV2FzIHVuZGVmaW5lZC4iKTsKKyAgZWxzZQor
ICAgIHRlc3RGYWlsZWQoZiArICIgc2hvdWxkIHRocm93IGV4Y2VwdGlvbiAiICsgZXhUeXBlICsg
Ii4gV2FzICIgKyBfYXYgKyAiLiIpOworfQorCitmdW5jdGlvbiBmblNob3VsZE5vdFRocm93KGYp
Cit7CisgIHRyeSB7CisgICAgZigpOworICAgIHRlc3RQYXNzZWQoZiArICIgZGlkIG5vdCB0aHJv
dyBhbiBleGNlcHRpb24iKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIHRlc3RGYWlsZWQoZiArICIg
dGhyZXcgYW4gZXhjZXB0aW9uICIgKyBlICsgIiB3aGVuIG5vIGV4Y2VwdGlvbiBleHBlY3RlZCIp
OworICB9Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL29wZXJhdG9ycy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvb3BlcmF0b3JzLmpzCShyZXZpc2lvbiAy
NDQyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9vcGVyYXRvcnMuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCwxNCBAQCBzaG91bGRCZVRydWUoIiEwIik7CiBzaG91
bGRCZVRydWUoIiEhJ2EnIik7CiBzaG91bGRCZVRydWUoIiEnJyIpOwogCisvLyB1bmFyeSBwbHVz
CitzaG91bGRCZSgiKzkiLCAiOSIpOworc2hvdWxkQmUoInZhciBpID0gMTA7ICtpIiwgIjEwIik7
CisKKy8vIG5lZ2F0aW9uCitzaG91bGRCZSgiLTExIiwgIi0xMSIpOworc2hvdWxkQmUoInZhciBp
ID0gMTI7IC1pIiwgIi0xMiIpOworCiAvLyBpbmNyZW1lbnQKIHNob3VsZEJlKCJ2YXIgaSA9IDA7
ICsraTsiLCAiMSIpOwogc2hvdWxkQmUoInZhciBpID0gMDsgKytpOyBpIiwgIjEiKTsKQEAgLTI3
LDYgKzM1LDggQEAgc2hvdWxkQmUoInZhciBpID0gdHJ1ZTsgaS0tOyBpIiwgIjAiKTsKIC8vIGJp
dHdpc2Ugb3BlcmF0b3JzCiBzaG91bGRCZSgifjAiLCAiLTEiKTsKIHNob3VsZEJlKCJ+MSIsICIt
MiIpOworc2hvdWxkQmUoIn5OYU4iLCAiLTEiKTsKK3Nob3VsZEJlKCJ+SW5maW5pdHkiLCAiLTEi
KTsKIHNob3VsZEJlKCJ+TWF0aC5wb3coMiwgMzMpIiwgIi0xIik7IC8vIDMyIGJpdCBvdmVyZmxv
dwogc2hvdWxkQmUoIn4oTWF0aC5wb3coMiwgMzIpICsgTWF0aC5wb3coMiwgMzEpICsgMikiLAog
ICAgICAgICAgIjIxNDc0ODM2NDUiKTsgLy8gYSBzaWduZWRuZXNzIGlzc3VlCkBAIC00NCw2ICs1
NCwyMSBAQCBzaG91bGRCZSgiLTggPj4gMjQiLCAiLTEiKTsKIHNob3VsZEJlKCI4ID4+PiAyIiwg
IjIiKTsKIHNob3VsZEJlKCItOCA+Pj4gMjQiLCAiMjU1Iik7CiBzaG91bGRCZSgiKC0yMjAwMDAw
MDAwID4+IDEpIDw8IDEiLCAiMjA5NDk2NzI5NiIpOworc2hvdWxkQmUoIkluZmluaXR5ID4+IDEi
LCAiMCIpOworc2hvdWxkQmUoIkluZmluaXR5IDw8IDEiLCAiMCIpOworc2hvdWxkQmUoIkluZmlu
aXR5ID4+PiAxIiwgIjAiKTsKK3Nob3VsZEJlKCJOYU4gPj4gMSIsICIwIik7CitzaG91bGRCZSgi
TmFOIDw8IDEiLCAiMCIpOworc2hvdWxkQmUoIk5hTiA+Pj4gMSIsICIwIik7CitzaG91bGRCZSgi
OC4xID4+IDEiLCAiNCIpOworc2hvdWxkQmUoIjguMSA8PCAxIiwgIjE2Iik7CitzaG91bGRCZSgi
OC4xID4+PiAxIiwgIjQiKTsKK3Nob3VsZEJlKCI4LjkgPj4gMSIsICI0Iik7CitzaG91bGRCZSgi
OC45IDw8IDEiLCAiMTYiKTsKK3Nob3VsZEJlKCI4LjkgPj4+IDEiLCAiNCIpOworc2hvdWxkQmUo
Ik1hdGgucG93KDIsIDMyKSA+PiAxIiwgIjAiKTsKK3Nob3VsZEJlKCJNYXRoLnBvdygyLCAzMikg
PDwgMSIsICIwIik7CitzaG91bGRCZSgiTWF0aC5wb3coMiwgMzIpID4+PiAxIiwgIjAiKTsKIAog
Ly8gYWRkaXRpb24KIHNob3VsZEJlKCIxKzIiLCAiMyIpOwpAQCAtMTgwLDYgKzIwNSw4IEBAIHNo
b3VsZEJlKCJOYU4gPT09IE5hTiIsICJmYWxzZSIpOwogc2hvdWxkQmUoIjAuMCA9PT0gMCIsICJ0
cnVlIik7CiBzaG91bGRCZSgiJ2FiYycgPT09ICdhYmMnIiwgInRydWUiKTsKIHNob3VsZEJlKCIn
YScgPT09ICd4JyIsICJmYWxzZSIpOworc2hvdWxkQmUoIjEgPT09ICcxJyIsICJmYWxzZSIpOwor
c2hvdWxkQmUoIicxJyA9PT0gMSIsICJmYWxzZSIpOwogc2hvdWxkQmUoInRydWUgPT09IHRydWUi
LCAidHJ1ZSIpOwogc2hvdWxkQmUoImZhbHNlID09PSBmYWxzZSIsICJ0cnVlIik7CiBzaG91bGRC
ZSgidHJ1ZSA9PT0gZmFsc2UiLCAiZmFsc2UiKTsKQEAgLTIxNiw0ICsyNDMsNCBAQCBzaG91bGRC
ZVRydWUoIidhJyBpbiB7IGE6MSwgYjoyIH0iKTsKIHNob3VsZEJlKCIobmV3IEJvb2xlYW4oKSkg
aW5zdGFuY2VvZiBCb29sZWFuIiwgInRydWUiKTsKIHNob3VsZEJlKCIobmV3IEJvb2xlYW4oKSkg
aW5zdGFuY2VvZiBOdW1iZXIiLCAiZmFsc2UiKTsKIAotc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZQordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL2tkZS9yZXNvdXJjZXMvc2NvcGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9rZGUvcmVzb3VyY2VzL3Njb3BlLmpzCShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRl
c3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9zY29wZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNiw0
ICs2LDMxIEBAIHdpdGggKGIpIHsKIH0KIAogc2hvdWxkQmUoImYoMikiLCAiMjIiKTsKLXN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWUKKwordmFyIE9CSkVDVCA9IG5ldyBNeU9iamVjdCggImhlbGxv
IiApOworZnVuY3Rpb24gTXlPYmplY3QodmFsdWUpIHsKKyAgICB0aGlzLnZhbHVlID0gdmFsdWU7
CisgICAgdGhpcy50b1N0cmluZyA9IG5ldyBGdW5jdGlvbiggInJldHVybiB0aGlzLnZhbHVlKycn
IiApOworICAgIHJldHVybiB0aGlzOworfQorc2hvdWxkQmUoIk9CSkVDVC50b1N0cmluZygpIiwg
IidoZWxsbyciKTsKK3ZhciBzOword2l0aCAoT0JKRUNUKSB7CisgICAgcyA9IHRvU3RyaW5nKCk7
Cit9CitzaG91bGRCZSgicyIsICInaGVsbG8nIik7CisKKworLy8gTWFrZSBzdXJlIHRoYXQgZm9y
IC4uLiBpbiByZWV2YWx1YXRlcyB0aGUgc2NvcGluZyBldmVyeSB0aW1lIQorUCA9IHsgZm9vIDog
MSwgYmFyIDogMiwgYmF6IDogMyB9CisKK2Z1bmN0aW9uIHRlc3RGb3JJbigpIHsKKyAgIGZvciAo
ZyBpbiBQKSB7CisgICAgICAgIGV2YWwoInZhciBnOyIpIC8vQ2hhbmdlIHRoZSBzY29wZSBvZiBn
IGhhbGYtd2F5cyB0aHJvdWdoIHRoZSBsb29wCisgICB9Cit9CisKK3Rlc3RGb3JJbigpOworc2hv
dWxkQmUoImciLCAiJ2ZvbyciKTsgLy9CZWZvcmUgdGhlIGV2YWwsIGcgd2FzIGluIG91dGVyIHNj
b3BlLCBidXQgbm90IGFmdGVyIQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16192</attachid>
            <date>2007-09-04 05:26:35 -0700</date>
            <delta_ts>2007-09-04 05:43:43 -0700</delta_ts>
            <desc>Reduction showing bug in patch</desc>
            <filename>bug.zip</filename>
            <type>application/octet-stream</type>
            <size>1383</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAAuzJDcAAAAAAAAAAAAAAAAEABAAYnVnL1VYDABzTt1GdU7dRvUBFABQSwMEFAAI
AAgAC7EkNwAAAAAAAAAAAAAAAAoAEABidWcvYmFyLmpzVVgMAHpO3Ua2St1G9QEUAD3PSRKCMBBG
4X2fIkstNs5itR4GEZxBI+Bwet/PgizyVVKVV50s7MLEbQ9TtxxmbgeYuxWwcCth6XaEldsJ1m5n
SO3CvnG76jWVmyRzl3QqSaiWlB6S1FPSipLYS6ZujaTXagx6naT3lvQ+kt5X0vtJelbWMYy6LIa8
bqumiP2nhsOW4fo1XCXJ2ALL7Q9QSwcI7v3kHI4AAAAAAQAAUEsDBAoAAAAAAA2zJDcAAAAAAAAA
AAAAAAAJABAAX19NQUNPU1gvVVgMAHpO3UZ6Tt1G9QEUAFBLAwQKAAAAAAANsyQ3AAAAAAAAAAAA
AAAADQAQAF9fTUFDT1NYL2J1Zy9VWAwAek7dRnpO3Ub1ARQAUEsDBBQACAAIAAuxJDcAAAAAAAAA
AAAAAAAVABAAX19NQUNPU1gvYnVnLy5fYmFyLmpzVVgMAHpO3Ua2St1G9QEUAGNgFWNnYGJg8E1M
VvAPVohQgAKQGAMnEBsBcScQg/i7GYgCjiEhQQymliegOmYAsTKaEkaEuGhyfq5ebmJyUX5uYklq
sV5yYlFqCUM1F8gVyfk5pbl5CrYKJhbWYIGczLxUINfI3JqrFgBQSwcIoJfCfWoAAAC7AAAAUEsD
BBQACAAIADaxJDcAAAAAAAAAAAAAAAAKABAAYnVnL2Zvby5qc1VYDAB6Tt1GCEvdRvUBFAArSyxS
KMnMTbXmApEKtgpFpXkaSkmJRXpZxUqa1lwFRZl5JRogOSAHAFBLBwgjmRNqKQAAAC0AAABQSwME
FAAIAAgANrEkNwAAAAAAAAAAAAAAABUAEABfX01BQ09TWC9idWcvLl9mb28uanNVWAwAek7dRghL
3Ub1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxOxCD+DsZiAKOISFBDKZWZ6A6ZgCxIpoS
RoS4aHJ+rl5uYnJRfm5iSWqxXnJiUWoJQzUXyBXJ+TmluXkKtgqW1mB+TmZeKpBnYM1VCwBQSwcI
apSGcGgAAAC5AAAAUEsBAhUDCgAAAAAAC7MkNwAAAAAAAAAAAAAAAAQADAAAAAAAAAAAQO1BAAAA
AGJ1Zy9VWAgAc07dRnVO3UZQSwECFQMUAAgACAALsSQ37v3kHI4AAAAAAQAACgAMAAAAAAAAAABA
pIEyAAAAYnVnL2Jhci5qc1VYCAB6Tt1GtkrdRlBLAQIVAwoAAAAAAA2zJDcAAAAAAAAAAAAAAAAJ
AAwAAAAAAAAAAED9QQgBAABfX01BQ09TWC9VWAgAek7dRnpO3UZQSwECFQMKAAAAAAANsyQ3AAAA
AAAAAAAAAAAADQAMAAAAAAAAAABA/UE/AQAAX19NQUNPU1gvYnVnL1VYCAB6Tt1Gek7dRlBLAQIV
AxQACAAIAAuxJDegl8J9agAAALsAAAAVAAwAAAAAAAAAAECkgXoBAABfX01BQ09TWC9idWcvLl9i
YXIuanNVWAgAek7dRrZK3UZQSwECFQMUAAgACAA2sSQ3I5kTaikAAAAtAAAACgAMAAAAAAAAAABA
pIE3AgAAYnVnL2Zvby5qc1VYCAB6Tt1GCEvdRlBLAQIVAxQACAAIADaxJDdqlIZwaAAAALkAAAAV
AAwAAAAAAAAAAECkgagCAABfX01BQ09TWC9idWcvLl9mb28uanNVWAgAek7dRghL3UZQSwUGAAAA
AAcABwDuAQAAYwMAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16194</attachid>
            <date>2007-09-04 05:43:43 -0700</date>
            <delta_ts>2007-09-04 05:52:24 -0700</delta_ts>
            <desc>Updated reduction, now with less code!</desc>
            <filename>bug.zip</filename>
            <type>application/octet-stream</type>
            <size>1353</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAAuzJDcAAAAAAAAAAAAAAAAEABAAYnVnL1VYDAD8UN1GdU7dRvUBFABQSwMEFAAI
AAgAnLQkNwAAAAAAAAAAAAAAAAoAEABidWcvYmFyLmpzVVgMAN9S3UZoUd1G9QEUAB3PxxHCUBAE
0ftEoRDwiJoimC+8BwHCRE8Pl32n7dot1bzqWQ30rQUMrCUMrRWMrDWMrQ1MrC1MrR3U2jNn1iHb
VI6RzCnSOUdCl0jpGkndIq02ErvH2npEes+cQa+L9F6R3jvS+0R630ivK21Vyv+FH1BLBwhKcf37
cgAAANAAAABQSwMECgAAAAAAZrUkNwAAAAAAAAAAAAAAAAkAEABfX01BQ09TWC9VWAwA31LdRt9S
3Ub1ARQAUEsDBAoAAAAAAGa1JDcAAAAAAAAAAAAAAAANABAAX19NQUNPU1gvYnVnL1VYDADfUt1G
31LdRvUBFABQSwMEFAAIAAgAnLQkNwAAAAAAAAAAAAAAABUAEABfX01BQ09TWC9idWcvLl9iYXIu
anNVWAwA31LdRmhR3Ub1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxBxCD+LsYiAKOISFB
DKaWJ6A6ZgCxEpoSRoS4aHJ+rl5uYnJRfm5iSWqxXnJiUWoJQzUXyBXJ+TmluXkKtgpm1mB+TmZe
KpBnBOTWAgBQSwcIpAHGIWgAAAC6AAAAUEsDBBQACAAIAIu0JDcAAAAAAAAAAAAAAAAKABAAYnVn
L2Zvby5qc1VYDADfUt1GRVHdRvUBFAArSyxSKMnMTbXmApEKtgpFpXkaSkmJRXpZxUqa1lwFRZl5
JRogOSAHAFBLBwgjmRNqKQAAAC0AAABQSwMEFAAIAAgAi7QkNwAAAAAAAAAAAAAAABUAEABfX01B
Q09TWC9idWcvLl9mb28uanNVWAwA31LdRkVR3Ub1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQ
GwFxOxCD+DsZiAKOISFBDKZWZ6A6ZgCxIpoSRoS4aHJ+rl5uYnJRfm5iSWqxXnJiUWoJQzUXyBXJ
+TmluXkKtgrm1mB+TmZeKpBnaM1VCwBQSwcIhuEX0WgAAAC5AAAAUEsBAhUDCgAAAAAAC7MkNwAA
AAAAAAAAAAAAAAQADAAAAAAAAAAAQO1BAAAAAGJ1Zy9VWAgA/FDdRnVO3UZQSwECFQMUAAgACACc
tCQ3SnH9+3IAAADQAAAACgAMAAAAAAAAAABApIEyAAAAYnVnL2Jhci5qc1VYCADfUt1GaFHdRlBL
AQIVAwoAAAAAAGa1JDcAAAAAAAAAAAAAAAAJAAwAAAAAAAAAAED9QewAAABfX01BQ09TWC9VWAgA
31LdRt9S3UZQSwECFQMKAAAAAABmtSQ3AAAAAAAAAAAAAAAADQAMAAAAAAAAAABA/UEjAQAAX19N
QUNPU1gvYnVnL1VYCADfUt1G31LdRlBLAQIVAxQACAAIAJy0JDekAcYhaAAAALoAAAAVAAwAAAAA
AAAAAECkgV4BAABfX01BQ09TWC9idWcvLl9iYXIuanNVWAgA31LdRmhR3UZQSwECFQMUAAgACACL
tCQ3I5kTaikAAAAtAAAACgAMAAAAAAAAAABApIEZAgAAYnVnL2Zvby5qc1VYCADfUt1GRVHdRlBL
AQIVAxQACAAIAIu0JDeG4RfRaAAAALkAAAAVAAwAAAAAAAAAAECkgYoCAABfX01BQ09TWC9idWcv
Ll9mb28uanNVWAgA31LdRkVR3UZQSwUGAAAAAAcABwDuAQAARQMAAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16195</attachid>
            <date>2007-09-04 05:52:24 -0700</date>
            <delta_ts>2007-09-04 05:52:24 -0700</delta_ts>
            <desc>Further reduction after some insight from Maciej</desc>
            <filename>foo.js</filename>
            <type>text/plain</type>
            <size>395</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">dmFyIHJlc3VsdDsKcmVzdWx0ID0gKGZ1bmN0aW9uKCkgewogICAgYSA9IDA7CiAgICBiID0gMTsK
ICAgIGMgPSAyOwogICAgZCA9IDM7CiAgICBlID0gNDsKICAgIGYgPSA1OwogICAgZyA9IDY7CiAg
ICBoID0gNzsKICAgIGkgPSA4CiAgICBqID0gOTsKICAgIGsgPSAxMDsKICAgIGwgPSAxMTsKICAg
IG0gPSAxMjsKICAgIG4gPSAxMzsKICAgIG8gPSAxNDsKICAgIHAgPSAxNTsKICAgIHEgPSAxNjsK
ICAgIHIgPSAxNzsKICAgIHMgPSAxODsKICAgIHQgPSAxOTsKICAgIHUgPSAyMDsKICAgIHYgPSAy
MTsKICAgIHcgPSAyMjsKICAgIHggPSAyMzsKICAgIHkgPSAyNDsKICAgIHogPSAyNTsKICAgIGFh
ID0gMDsKICAgIGJiID0gMTsKICAgIHJldHVybiAxOwp9KSgpOwpwcmludChyZXN1bHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16203</attachid>
            <date>2007-09-04 22:25:02 -0700</date>
            <delta_ts>2007-09-07 07:05:11 -0700</delta_ts>
            <desc>Revised proposed patch</desc>
            <filename>scope.diff</filename>
            <type>text/plain</type>
            <size>295345</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzA5IEBACisyMDA3LTA4LTAyICBDYW1lcm9u
IFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wb3J0cyB0aGUgdmFyaWFi
bGUgbG9va3VwIG9wdGltaXphdGlvbnMgdGhhdCB3ZXJlCisgICAgICAgIGltcGxlbWVudGVkIGlu
IEtKUywgd2hpbGUgYmVpbmcgY2FyZWZ1bCB0byBub3QgdW5kbyBhbnkgYnVnIGZpeGVzCisgICAg
ICAgIGFuZCBvcHRpbWl6YXRpb25zIGFkZGVkIHRvIEphdmFTY3JpcHRDb3JlLiBUaGUgcmVsZXZh
bnQgcmV2aXNpb25zCisgICAgICAgIGluIEtERSBhcmUKKworICAgICAgICAgICAgNjQ3MDA1Cisg
ICAgICAgICAgICA2NDcxNDAKKyAgICAgICAgICAgIDY0ODQyNAorICAgICAgICAgICAgNjUxMTg1
CisgICAgICAgICAgICA2NjIyNjMKKyAgICAgICAgICAgIDY2ODUzOQorICAgICAgICAgICAgNjcw
NTQ3CisgICAgICAgICAgICA2NzQzMTQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGtqcy9BbGxJbk9uZUZpbGUuY3BwOgorICAgICAgICAqIGtqcy9Db21tb25JZGVudGlm
aWVycy5oOgorICAgICAgICAoV1RGOjpJZGVudEhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpJ
ZGVudEhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6KToKKyAgICAgICAgKiBranMvQ29udGV4
dC5jcHA6CisgICAgICAgIChLSlM6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAqIGtqcy9Q
YXJzZXIuY3BwOgorICAgICAgICAoS0pTOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBranMv
UGFyc2VyLmg6CisgICAgICAgICoga2pzL2FycmF5X29iamVjdC5jcHA6CisgICAgICAgIChBcnJh
eUluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9jb21wbGV0aW9u
Lmg6CisgICAgICAgIChLSlM6OkNvbXBsZXRpb246OkNvbXBsZXRpb24pOgorICAgICAgICAoS0pT
OjpDb21wbGV0aW9uOjp0YXJnZXQpOgorICAgICAgICAqIGtqcy9jb250ZXh0Lmg6CisgICAgICAg
IChLSlM6OkNvbnRleHQ6OnBvcFNjb3BlKToKKyAgICAgICAgKiBranMvZnVuY3Rpb24uY3BwOgor
ICAgICAgICAoS0pTOjpMb29rdXBPcHRpbWl6ZXI6Okxvb2t1cE9wdGltaXplcik6CisgICAgICAg
IChLSlM6Okxvb2t1cE9wdGltaXplcjo6b3B0aW1pemUpOgorICAgICAgICAoS0pTOjpMb29rdXBP
cHRpbWl6ZXI6Oik6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpjYWxsQXNGdW5jdGlvbik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJhbWV0ZXJzKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25JbXA6OmdldFBhcmFtZXRlck5hbWUpOgorICAgICAgICAoS0pTOjpBY3Rp
dmF0aW9uSW1wOjpBY3RpdmF0aW9uSW1wKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6
c2V0dXBMb2NhbHMpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpzZXR1cEZ1bmN0aW9u
TG9jYWxzKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpB
Y3RpdmF0aW9uSW1wOjpwdXQpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjptYXJrKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6fkFjdGl2YXRpb25JbXApOgorICAgICAgICAo
S0pTOjpBY3RpdmF0aW9uSW1wOjpjcmVhdGVBcmd1bWVudHNPYmplY3QpOgorICAgICAgICAoS0pT
OjpHbG9iYWxGdW5jSW1wOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICoga2pzL2Z1bmN0aW9u
Lmg6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OkFjdGl2YXRpb25JbXA6OnB1dExv
Y2FsKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6aW5pdExvY2FsKToKKyAgICAgICAg
KEtKUzo6QWN0aXZhdGlvbkltcDo6cHV0TG9jYWxDaGVja2VkKToKKyAgICAgICAgKEtKUzo6QWN0
aXZhdGlvbkltcDo6Z2V0TG9jYWxEaXJlY3QpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1w
Ojppc0xvY2FsUmVhZE9ubHkpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjppc0FjdGl2
YXRpb24pOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpudW1Mb2NhbHMpOgorICAgICAg
ICAoS0pTOjpBY3RpdmF0aW9uSW1wOjp2YWxpZExvY2FsKToKKyAgICAgICAgKiBranMvZ3JhbW1h
ci55OgorICAgICAgICAqIGtqcy9pbnRlcm5hbC5jcHA6CisgICAgICAgICoga2pzL2ludGVybmFs
Lmg6CisgICAgICAgICoga2pzL2ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEtKUzo6SW50ZXJw
cmV0ZXI6OmluaXRHbG9iYWxPYmplY3QpOgorICAgICAgICAoS0pTOjpJbnRlcnByZXRlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAqIGtqcy9saXN0LmNwcDoKKyAgICAgICAgKEtKUzo6TGlzdDo6TGlz
dCk6CisgICAgICAgICoga2pzL2xpc3QuaDoKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOgorICAg
ICAgICAoS0pTOjpOb2RlOjpjcmVhdGVFcnJvck5vZGUpOgorICAgICAgICAoS0pTOjpOb2RlVmlz
aXRvcjo6fk5vZGVWaXNpdG9yKToKKyAgICAgICAgKEtKUzo6KToKKyAgICAgICAgKEtKUzo6RnVu
Y0RlY2xWaXNpdG9yOjpGdW5jRGVjbFZpc2l0b3IpOgorICAgICAgICAoS0pTOjpGdW5jRGVjbFZp
c2l0b3I6Oik6CisgICAgICAgIChLSlM6Ok5vZGU6OnByb2Nlc3NEZWNscyk6CisgICAgICAgIChL
SlM6Ok5vZGU6OnByb2Nlc3NWYXJEZWNsKToKKyAgICAgICAgKEtKUzo6Tm9kZTo6cHJvY2Vzc0Z1
bmNEZWNsKToKKyAgICAgICAgKEtKUzo6Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2Vzcyk6CisgICAg
ICAgIChLSlM6Ok5vZGVWaXNpdG9yOjp2aXNpdCk6CisgICAgICAgIChLSlM6OlZhckFjY2Vzc05v
ZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6VmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGVSZWZl
cmVuY2UpOgorICAgICAgICAoS0pTOjpWYXJBY2Nlc3NOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNz
KToKKyAgICAgICAgKEtKUzo6VmFyQWNjZXNzTm9kZTo6bG9jYWxJRCk6CisgICAgICAgIChLSlM6
OkxvY2FsVmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpMb2NhbFZhckFj
Y2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKToKKyAgICAgICAgKEtKUzo6Tm9uTG9jYWxWYXJB
Y2Nlc3NOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6Ok5vbkxvY2FsVmFyQWNjZXNzTm9k
ZTo6ZXZhbHVhdGVSZWZlcmVuY2UpOgorICAgICAgICAoS0pTOjpHcm91cE5vZGU6OnJlY3Vyc2VW
aXNpdCk6CisgICAgICAgIChLSlM6OkVsZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpBcnJheU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6Ok9iamVjdExp
dGVyYWxOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eUxpc3ROb2Rl
OjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eU5vZGU6OnJlY3Vyc2VWaXNp
dCk6CisgICAgICAgIChLSlM6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmV2YWx1YXRlUmVmZXJlbmNl
KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6RG90QWNjZXNzb3JOb2RlOjpldmFsdWF0ZVJlZmVyZW5jZSk6CisgICAgICAg
IChLSlM6OkRvdEFjY2Vzc29yTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXJn
dW1lbnRMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXJndW1lbnRzTm9k
ZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6TmV3RXhwck5vZGU6OnJlY3Vyc2VWaXNp
dCk6CisgICAgICAgIChLSlM6Om5vdEFuT2JqZWN0TWVzc2FnZSk6CisgICAgICAgIChLSlM6Om5v
dENhbGxhYmxlTWVzc2FnZSk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OnJlY3Vyc2VW
aXNpdCk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFJlZmVyZW5jZU5vZGU6OmV2YWx1YXRl
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OnJlY3Vyc2VWaXNpdCk6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAg
ICAgIChLSlM6OkxvY2FsUG9zdGZpeE5vZGU6Oik6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2Rl
OjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2RlOjpyZWN1cnNlVmlzaXQpOgor
ICAgICAgICAoS0pTOjpQb3N0Zml4Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2Vzcyk6CisgICAgICAg
IChLSlM6OlBvc3RmaXhFcnJvck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6RGVsZXRl
UmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpEZWxldGVSZWZlcmVuY2VO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpEZWxldGVWYWx1ZU5vZGU6OnJlY3Vy
c2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZvaWROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpUeXBlT2ZSZWZlcmVuY2VOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OlR5
cGVPZlJlZmVyZW5jZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlR5cGVPZlZh
bHVlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpUeXBlT2ZWYWx1ZU5vZGU6OnJlY3Vy
c2VWaXNpdCk6CisgICAgICAgIChLSlM6OkxvY2FsUHJlZml4Tm9kZTo6KToKKyAgICAgICAgKEtK
Uzo6UHJlZml4Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjpyZWN1
cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNz
KToKKyAgICAgICAgKEtKUzo6UHJlZml4RXJyb3JOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChL
SlM6OlVuYXJ5UGx1c05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6Ok5lZ2F0ZU5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkJpdHdpc2VOb3ROb2RlOjpyZWN1cnNl
VmlzaXQpOgorICAgICAgICAoS0pTOjpMb2dpY2FsTm90Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6TXVsdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkFkZE5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlNoaWZ0Tm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6UmVsYXRpb25hbE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAg
IChLSlM6OkVxdWFsTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Qml0T3Blck5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkJpbmFyeUxvZ2ljYWxOb2RlOjpyZWN1
cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDb25kaXRpb25hbE5vZGU6OnJlY3Vyc2VWaXNpdCk6
CisgICAgICAgIChLSlM6OkxvY2FsQXNzaWduTm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWdu
Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25Ob2RlOjpyZWN1cnNlVmlzaXQp
OgorICAgICAgICAoS0pTOjpBc3NpZ25Ob2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNzKToKKyAgICAg
ICAgKEtKUzo6QXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25E
b3ROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6
ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6cmVjdXJzZVZpc2l0
KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXJyb3JOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChL
SlM6OkNvbW1hTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXhwck5v
ZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhckRlY2xOb2RlOjpldmFsdWF0ZSk6
CisgICAgICAgIChLSlM6OlZhckRlY2xOb2RlOjpwcm9jZXNzVmFyRGVjbCk6CisgICAgICAgIChL
SlM6OlZhckRlY2xOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpWYXJEZWNsTGlz
dE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5vZGU6OnJl
Y3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5vZGU6Om9wdGltaXplTG9j
YWxBY2Nlc3MpOgorICAgICAgICAoS0pTOjpTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpleGVjdXRl
KToKKyAgICAgICAgKEtKUzo6U3RhdGljVmFyU3RhdGVtZW50Tm9kZTo6cmVjdXJzZVZpc2l0KToK
KyAgICAgICAgKEtKUzo6QmxvY2tOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6QmxvY2tO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpFeHByU3RhdGVtZW50Tm9kZTo6cmVj
dXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6SWZOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAg
ICAoS0pTOjpEb1doaWxlTm9kZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OkRvV2hpbGVOb2Rl
OjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpXaGlsZU5vZGU6OmV4ZWN1dGUpOgorICAg
ICAgICAoS0pTOjpXaGlsZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkZvck5v
ZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pTOjpGb3JOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAg
ICAgICAoS0pTOjpGb3JJbk5vZGU6OkZvckluTm9kZSk6CisgICAgICAgIChLSlM6OkZvckluTm9k
ZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OkZvckluTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAg
ICAgICAgKEtKUzo6Q29udGludWVOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6QnJlYWtO
b2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6UmV0dXJuTm9kZTo6ZXhlY3V0ZSk6CisgICAg
ICAgIChLSlM6OlJldHVybk5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OldpdGhO
b2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDYXNlQ2xhdXNlTm9kZTo6cmVjdXJz
ZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Q2xhdXNlTGlzdE5vZGU6OnJlY3Vyc2VWaXNpdCk6Cisg
ICAgICAgIChLSlM6OkNhc2VCbG9ja05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6
OlN3aXRjaE5vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pTOjpTd2l0Y2hOb2RlOjpyZWN1cnNl
VmlzaXQpOgorICAgICAgICAoS0pTOjpMYWJlbE5vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pT
OjpMYWJlbE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlRocm93Tm9kZTo6cmVj
dXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6VHJ5Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAg
ICAgKEtKUzo6VHJ5Tm9kZTo6cmVjdXJzZVZpc2l0Tm9uQ2F0Y2gpOgorICAgICAgICAoS0pTOjpQ
YXJhbWV0ZXJOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkJvZHlO
b2RlOjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6
YWRkVmFyRGVjbCk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OmFkZEZ1bmNEZWNs
KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6YWRkU3ltYm9sKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6bG9va3VwU3ltYm9sSUQpOgorICAgICAgICAoS0pTOjpG
dW5jdGlvbkJvZHlOb2RlOjphZGRQYXJhbSk6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6
cHJvY2Vzc0Z1bmNEZWNsKToKKyAgICAgICAgKEtKUzo6RnVuY0RlY2xOb2RlOjptYWtlRnVuY3Rp
b25PYmplY3QpOgorICAgICAgICAoS0pTOjpGdW5jRGVjbE5vZGU6OnJlY3Vyc2VWaXNpdCk6Cisg
ICAgICAgIChLSlM6OkZ1bmNFeHByTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6
U291cmNlRWxlbWVudHNOb2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6U291cmNlRWxlbWVu
dHNOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpFcnJvck5vZGU6OmV4ZWN1dGUp
OgorICAgICAgICAqIGtqcy9ub2Rlcy5oOgorICAgICAgICAoS0pTOjpOb2RlOjopOgorICAgICAg
ICAoS0pTOjpOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKToKKyAgICAgICAgKEtKUzo6TG9jYXRpb25O
b2RlOjopOgorICAgICAgICAoS0pTOjpWYXJBY2Nlc3NOb2RlOjopOgorICAgICAgICAoS0pTOjpM
b2NhbFZhckFjY2Vzc05vZGU6Oik6CisgICAgICAgIChLSlM6Ok5vbkxvY2FsVmFyQWNjZXNzTm9k
ZTo6KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6KToKKyAgICAgICAgKEtK
Uzo6RG90QWNjZXNzb3JOb2RlOjopOgorICAgICAgICAoS0pTOjpBcmd1bWVudHNOb2RlOjopOgor
ICAgICAgICAoS0pTOjpGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjopOgorICAgICAgICAoS0pT
OjpQb3N0Zml4Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6RGVsZXRlUmVmZXJlbmNlTm9kZTo6KToK
KyAgICAgICAgKEtKUzo6VHlwZU9mUmVmZXJlbmNlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6UHJl
Zml4Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWduTm9kZTo6KToKKyAgICAgICAgKEtKUzo6
QXNzaWduQnJhY2tldE5vZGU6Oik6CisgICAgICAgIChLSlM6OkFzc2lnbkRvdE5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OkFzc2lnbkVycm9yTm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXhw
ck5vZGU6Oik6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OlZhclN0YXRlbWVudE5v
ZGU6OmlzVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEtKUzo6RG9XaGlsZU5vZGU6Oik6CisgICAg
ICAgIChLSlM6OldoaWxlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6Rm9yTm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6Rm9ySW5Ob2RlOjopOgorICAgICAgICAoS0pTOjpDb250aW51ZU5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OkJyZWFrTm9kZTo6KToKKyAgICAgICAgKEtKUzo6V2l0aE5vZGU6Oik6Cisg
ICAgICAgIChLSlM6OlRyeU5vZGU6Oik6CisgICAgICAgIChLSlM6OlBhcmFtZXRlck5vZGU6Oik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OlN5bWJvbDo6U3ltYm9sKToKKyAgICAg
ICAgKEtKUzo6RnVuY3Rpb25Cb2R5Tm9kZTo6UGFyYW1ldGVyOjpQYXJhbWV0ZXIpOgorICAgICAg
ICAoS0pTOjpGdW5jdGlvbkJvZHlOb2RlOjopOgorICAgICAgICAoS0pTOjpGdW5jRXhwck5vZGU6
Oik6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6KToKKyAgICAgICAgKEtKUzo6Q2xhdXNl
TGlzdE5vZGU6Oik6CisgICAgICAgIChLSlM6OlN3aXRjaE5vZGU6Oik6CisgICAgICAgIChLSlM6
OkVycm9yTm9kZTo6KToKKyAgICAgICAgKiBranMvbm9kZXMyc3RyaW5nLmNwcDoKKyAgICAgICAg
KFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAgICAgIChWYXJBY2Nlc3NOb2RlOjpzdHJl
YW1Ubyk6CisgICAgICAgIChGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjpzdHJlYW1Ubyk6Cisg
ICAgICAgIChGdW5jdGlvbkNhbGxQYXJlbkRvdE5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKFBv
c3RmaXhOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChEZWxldGVSZWZlcmVuY2VOb2RlOjpzdHJl
YW1Ubyk6CisgICAgICAgIChUeXBlT2ZSZWZlcmVuY2VOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAg
IChQcmVmaXhOb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChBc3NpZ25Ob2RlOjpzdHJlYW1Ubyk6
CisgICAgICAgIChTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpzdHJlYW1Ubyk6CisgICAgICAgIChF
cnJvck5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKiBranMvb2JqZWN0LmNwcDoKKyAgICAgICAg
KEtKUzo6SlNPYmplY3Q6OmNsYXNzTmFtZSk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpkZWZh
dWx0VmFsdWUpOgorICAgICAgICAoS0pTOjpFcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBranMv
b2JqZWN0Lmg6CisgICAgICAgIChLSlM6OkdldHRlclNldHRlckltcDo6R2V0dGVyU2V0dGVySW1w
KToKKyAgICAgICAgKEtKUzo6R2V0dGVyU2V0dGVySW1wOjppc0xvY2FsSW5qZWN0ZWQpOgorICAg
ICAgICAoS0pTOjpHZXR0ZXJTZXR0ZXJJbXA6OnNldExvY2FsSW5qZWN0ZWQpOgorICAgICAgICAo
S0pTOjpKU09iamVjdDo6Z2V0RGlyZWN0TG9jYXRpb24pOgorICAgICAgICAoS0pTOjpKU09iamVj
dDo6aXNBY3RpdmF0aW9uKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmlzTG9jYWxJbmplY3Rl
ZCk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpzZXRMb2NhbEluamVjdGVkKToKKyAgICAgICAg
KEtKUzo6SlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdCk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9wcm9wZXJ0eV9tYXAuY3BwOgor
ICAgICAgICAoS0pTOjpQcm9wZXJ0eU1hcDo6Z2V0TG9jYXRpb24pOgorICAgICAgICAoS0pTOjpQ
cm9wZXJ0eU1hcDo6cHV0KToKKyAgICAgICAgKiBranMvcHJvcGVydHlfbWFwLmg6CisgICAgICAg
IChLSlM6OlByb3BlcnR5TWFwOjppc0xvY2FsSW5qZWN0ZWQpOgorICAgICAgICAoS0pTOjpQcm9w
ZXJ0eU1hcDo6c2V0TG9jYWxJbmplY3RlZCk6CisgICAgICAgIChLSlM6OlByb3BlcnR5TWFwOjpQ
cm9wZXJ0eU1hcCk6CisgICAgICAgICoga2pzL3Byb3BlcnR5X3Nsb3QuaDoKKyAgICAgICAgKEtK
Uzo6UHJvcGVydHlTbG90OjopOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6OnNldFZhbHVl
U2xvdCk6CisgICAgICAgIChLSlM6OlByb3BlcnR5U2xvdDo6c2V0UG90ZW50aWFsbHlXcml0ZWFi
bGUpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6OnNldFJlYWRPbmx5KToKKyAgICAgICAg
KEtKUzo6UHJvcGVydHlTbG90OjpnZXREaXJlY3RXcml0ZUxvY2F0aW9uKToKKyAgICAgICAgKiBr
anMvcmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAoS0pTOjpSZWZlcmVuY2U6OlJlZmVyZW5j
ZSk6CisgICAgICAgIChLSlM6OlJlZmVyZW5jZTo6cmVhZCk6CisgICAgICAgIChLSlM6OlJlZmVy
ZW5jZTo6d3JpdGUpOgorICAgICAgICAoS0pTOjpSZWZlcmVuY2U6OmRlbGV0ZVByb3BlcnR5KToK
KyAgICAgICAgKiBranMvc2VtYW50aWNfY2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAoS0pT
OjpTZW1hbnRpY0NoZWNrZXI6OmVudGVyU2VtYW50aWNDb250ZXh0KToKKyAgICAgICAgKEtKUzo6
U2VtYW50aWNDaGVja2VyOjpleGl0U2VtYW50aWNDb250ZXh0KToKKyAgICAgICAgKEtKUzo6U2Vt
YW50aWNDaGVja2VyOjp2aXNpdCk6CisgICAgICAgIChLSlM6OlNlbWFudGljQ2hlY2tlcjo6Y2hl
Y2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAg
ICAgIChLSlM6OlN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKToKKyAgICAgICAgKEtKUzo6
TGFiZWxOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsTm9kZTo6
Y2hlY2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpGdW5jRXhwck5vZGU6OmNoZWNrU2VtYW50
aWNzKToKKyAgICAgICAgKEtKUzo6Q29udGludWVOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAg
ICAgIChLSlM6OkJyZWFrTm9kZTo6Y2hlY2tTZW1hbnRpY3MpOgorICAgICAgICAqIGtqcy9zZW1h
bnRpY19jaGVja2VyLmg6IEFkZGVkLgorICAgICAgICAoS0pTOjpTZW1hbnRpY0NvbnRleHQ6OlNl
bWFudGljQ29udGV4dCk6CisgICAgICAgIChLSlM6OlNlbWFudGljQ2hlY2tlcjo6c2VtYW50aWND
b250ZXh0KToKKyAgICAgICAgKiBranMvdmFsdWUuaDoKKyAgICAgICAgKiB0ZXN0cy9tb3ppbGxh
L2V4cGVjdGVkLmh0bWw6CisKIDIwMDctMDgtMDIgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNv
bT4KIAogICAgICAgICBCdWlsZCBmaXguCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhw
CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAko
d29ya2luZyBjb3B5KQpAQCAtMTI5LDcgKzEyOSw3IEBAIF9fWk4zS0pTMTFJbnRlcnByZXRlckQy
RXYKIF9fWk4zS0pTMTFKU0ltbWVkaWF0ZTR0eXBlRVBLTlNfN0pTVmFsdWVFCiBfX1pOM0tKUzEx
SlNJbW1lZGlhdGU4dG9PYmplY3RFUEtOU183SlNWYWx1ZUVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk4z
S0pTMTFKU0ltbWVkaWF0ZTh0b1N0cmluZ0VQS05TXzdKU1ZhbHVlRQotX19aTjNLSlMxMVByb3Bl
cnR5TWFwMTFnZXRMb2NhdGlvbkVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zS0pTMTFQcm9wZXJ0
eU1hcDExZ2V0TG9jYXRpb25FUktOU18xMElkZW50aWZpZXJFUmIKIF9fWk4zS0pTMTFQcm9wZXJ0
eU1hcDVjbGVhckV2CiBfX1pOM0tKUzExUHJvcGVydHlNYXA3cmVzdG9yZUVSS05TXzE1U2F2ZWRQ
cm9wZXJ0aWVzRQogX19aTjNLSlMxMVByb3BlcnR5TWFwRDFFdgpJbmRleDogSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUzNyw2ICs1MzcsOSBAQAog
CQk3MDczQkUzRDA1ODEyOTFFMDA1RUUyQzkgLyogcnVudGltZV9hcnJheS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBydW50aW1lX2FycmF5Lmg7
IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX2FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgfTsKIAkJNzBCMTZBMjYwNTY5QTEwOTAwREI3NTZEIC8qIHJ1bnRpbWVf
b2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IHJ1bnRpbWVfb2JqZWN0LmNwcDsgcGF0aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2Jq
ZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk3MEIx
NkEyNzA1NjlBMTA5MDBEQjc1NkQgLyogcnVudGltZV9vYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZV9vYmplY3QuaDsgcGF0
aCA9IGJpbmRpbmdzL3J1bnRpbWVfb2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgfTsKKwkJN0UzRDJBMUUwQzYyRUQ0RDAwRUMwNjkzIC8qIHJlZmVyZW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVmZXJlbmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFM0QyQTFGMEM2MkVENEQwMEVDMDY5MyAvKiBzZW1hbnRp
Y19jaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzZW1h
bnRpY19jaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0UzRDJBMjAw
QzYyRUQ0RDAwRUMwNjkzIC8qIHNlbWFudGljX2NoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHNlbWFudGljX2NoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODRBQkYxREUwNzBCNjI4QzAwQTNBQzA1IC8qIG5wcnVudGltZV9pbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gbnBydW50aW1l
X2ltcGwuaDsgcGF0aCA9IGJpbmRpbmdzL25wcnVudGltZV9pbXBsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJOTMwMjA0M0EwQjc5MDc1MDAwMEM2MTE1IC8q
IEZhc3RNYWxsb2NQQ1JFLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZhc3RNYWxsb2NQQ1JFLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwM0Y1
NjcwOTkxMThGQTAwQUQ3MUI4IC8qIE93blB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPd25QdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU1Nyw3ICs1
NjAsNyBAQAogCQk5MzNBMzQ5RDAzOEFFODBGMDA4NjM1Q0UgLyogaWRlbnRpZmllci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGlkZW50
aWZpZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkz
NUFGNDY5MDlFOUQ5REIwMEFDRDFEOCAvKiBGb3J3YXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcndhcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1
QUY0NkIwOUU5RDlEQjAwQUNEMUQ4IC8qIFVudXNlZFBhcmFtLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVudXNlZFBhcmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTkzNUY2OUY2MDgyNDRGRUEwMDNEMUE0NSAvKiBkZnRhYmxlcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gZGZ0YWJsZXM7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTkzNUY2OUY2MDgyNDRGRUEwMDNEMUE0NSAvKiBkZnRh
YmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBpbmNsdWRlSW5JbmRleCA9IDA7IGxh
c3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgcGF0aCA9IGRm
dGFibGVzOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk5MzY0QjI3MzA0
NUI3RDZDMDBBOUNBQzEgLyogZnBjb25zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGZwY29uc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkzNzREM0E3MDM4RDlENzQwMDg2MzVDRSAvKiBz
Y29wZV9jaGFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IHNjb3BlX2NoYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgfTsKIAkJOTM3NEQzQTgwMzhEOUQ3NDAwODYzNUNFIC8qIHNjb3BlX2NoYWluLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2NvcGVf
Y2hhaW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CkBAIC05
MzIsNiArOTM1LDkgQEAKIAkJNjU0MTcyMDAwMzlFMDFCQTAwNThCRkVCIC8qIGtqcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0UzRDJBMUUwQzYyRUQ0
RDAwRUMwNjkzIC8qIHJlZmVyZW5jZS5oICovLAorCQkJCTdFM0QyQTFGMEM2MkVENEQwMEVDMDY5
MyAvKiBzZW1hbnRpY19jaGVja2VyLmNwcCAqLywKKwkJCQk3RTNEMkEyMDBDNjJFRDREMDBFQzA2
OTMgLyogc2VtYW50aWNfY2hlY2tlci5oICovLAogCQkJCTY1QzdBMTcxMEE4RUFBQ0IwMEZBMzdF
QSAvKiBKU1dyYXBwZXJPYmplY3QuY3BwICovLAogCQkJCTY1RUE3MzYyMEJBRTM1RDEwMDFCQjU2
MCAvKiBDb21tb25JZGVudGlmaWVycy5jcHAgKi8sCiAJCQkJNjVFQTczNjMwQkFFMzVEMTAwMUJC
NTYwIC8qIENvbW1vbklkZW50aWZpZXJzLmggKi8sCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
QWxsSW5PbmVGaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQWxsSW5P
bmVGaWxlLmNwcAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQWxsSW5P
bmVGaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUgInJl
Z2V4cC5jcHAiCiAjaW5jbHVkZSAicmVnZXhwX29iamVjdC5jcHAiCiAjaW5jbHVkZSAic2NvcGVf
Y2hhaW4uY3BwIgorI2luY2x1ZGUgInNlbWFudGljX2NoZWNrZXIuY3BwIgogI2luY2x1ZGUgInN0
cmluZ19vYmplY3QuY3BwIgogI2luY2x1ZGUgInVzdHJpbmcuY3BwIgogI2luY2x1ZGUgInZhbHVl
LmNwcCIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCShyZXZpc2lv
biAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAKICNpbmNsdWRlICJpZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogCiAvLyBMaXN0IG9mIHByb3BlcnR5IG5h
bWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwog
Ly8gd2F5cyB3aXRob3V0IHJlcGVhdGluZyB0aGUgbGlzdC4KQEAgLTYyLDUgKzY0LDIzIEBAIG5h
bWVzcGFjZSBLSlMgewogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBLSlMKIAorLy8gIyMjIGJldHRl
ciBwbGFjZSBpbiBpZGVudGlmaWVyLmguIG9ubHkgaGVyZSBiZWNhdXNlIG9mIHRoZSBzaGFyZWQg
bnVsbAorbmFtZXNwYWNlIFdURiB7CisgICAgLy8gUHJvdmlkZSBoYXNoaW5nIG9mIElkZW50aWZp
ZXJzIC0tLSB1c2luZyB0aGUgcmVwIHB0cgorICAgIHN0cnVjdCBJZGVudEhhc2ggeworICAgICAg
ICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBLSlM6OklkZW50aWZpZXImIGtleSkgeworICAg
ICAgICAgICAgcmV0dXJuIFB0ckhhc2g8S0pTOjpVU3RyaW5nOjpSZXAqPjo6aGFzaChrZXkudXN0
cmluZygpLnJlcCgpKTsKKyAgICAgICAgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBLSlM6OklkZW50aWZpZXImIGEsIGNvbnN0IEtKUzo6SWRlbnRpZmllciYgYikgeyByZXR1cm4g
YSA9PSBiOyB9CisgICAgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPEtK
Uzo6SWRlbnRpZmllcj4geyB0eXBlZGVmIElkZW50SGFzaCBIYXNoOyB9OworCisgICAgdGVtcGxh
dGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxLSlM6OklkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFp
dHM8S0pTOjpJZGVudGlmaWVyPiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBLSlM6OklkZW50aWZp
ZXImIGRlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIEtKUzo6Q29tbW9uSWRlbnRpZmllcnM6OnNoYXJl
ZCgpLT5udWxsSWRlbnRpZmllcjsgfQorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdURgorCiAj
ZW5kaWYgLy8gS0pTX0NPTU1PTl9JREVOVElGSUVSU19ICiAKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ29udGV4
dC5jcHAJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0NvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyMSArMzQsMTkgQEAgQ29udGV4dDo6Q29udGV4dChKU09i
amVjdCogZ2xvYiwgSW50ZXJwcgogICAgICwgbV9jdXJyZW50Qm9keShjdXJyZW50Qm9keSkKICAg
ICAsIG1fZnVuY3Rpb24oZnVuYykKICAgICAsIG1fYXJndW1lbnRzKGFyZ3MpCi0gICAgLCBtX2l0
ZXJhdGlvbkRlcHRoKDApCi0gICAgLCBtX3N3aXRjaERlcHRoKDApIAogewogICAgIG1fY29kZVR5
cGUgPSB0eXBlOwogICAgIG1fY2FsbGluZ0NvbnRleHQgPSBjYWxsaW5nQ29uOwogICAgIAogICAg
IC8vIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBhY3RpdmF0aW9uIG9iamVjdCAoRUNNQSAxMC4xLjYp
Ci0gICAgaWYgKHR5cGUgPT0gRnVuY3Rpb25Db2RlIHx8IHR5cGUgPT0gQW5vbnltb3VzQ29kZSAp
IHsKKyAgICBpZiAodHlwZSA9PSBGdW5jdGlvbkNvZGUpIHsKICAgICAgICAgbV9hY3RpdmF0aW9u
ID0gbmV3IEFjdGl2YXRpb25JbXAoZnVuYywgKmFyZ3MpOwogICAgICAgICBtX3ZhcmlhYmxlID0g
bV9hY3RpdmF0aW9uOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fYWN0aXZhdGlvbiA9IDA7CiAg
ICAgICAgIG1fdmFyaWFibGUgPSBnbG9iOwogICAgIH0KLSAgICAKKwogICAgIC8vIEVDTUEgMTAu
MgogICAgIHN3aXRjaCh0eXBlKSB7CiAgICAgY2FzZSBFdmFsQ29kZToKQEAgLTY0LDE1ICs2Miw4
IEBAIENvbnRleHQ6OkNvbnRleHQoSlNPYmplY3QqIGdsb2IsIEludGVycHIKICAgICAgICAgbV90
aGlzVmFsID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihnbG9iKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBGdW5jdGlvbkNvZGU6Ci0gICAgY2FzZSBBbm9ueW1vdXNDb2RlOgotICAgICAgICBp
ZiAodHlwZSA9PSBGdW5jdGlvbkNvZGUpIHsKLSAgICAgICAgICAgIHNjb3BlID0gZnVuYy0+c2Nv
cGUoKTsKLSAgICAgICAgICAgIHNjb3BlLnB1c2gobV9hY3RpdmF0aW9uKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHNjb3BlLmNsZWFyKCk7Ci0gICAgICAgICAgICBzY29wZS5wdXNo
KGdsb2IpOwotICAgICAgICAgICAgc2NvcGUucHVzaChtX2FjdGl2YXRpb24pOwotICAgICAgICB9
CisgICAgICAgIHNjb3BlID0gZnVuYy0+c2NvcGUoKTsKKyAgICAgICAgc2NvcGUucHVzaChtX2Fj
dGl2YXRpb24pOwogICAgICAgICBtX3ZhcmlhYmxlID0gbV9hY3RpdmF0aW9uOyAvLyBUT0RPOiBE
b250RGVsZXRlID8gKEVDTUEgMTAuMi4zKQogICAgICAgICBtX3RoaXNWYWwgPSB0aGlzVjsKICAg
ICAgICAgYnJlYWs7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkocmV2aXNpb24gMjQ1NTgpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAibGV4ZXIuaCIKICNpbmNsdWRlICJub2Rlcy5oIgorI2luY2x1
ZGUgInNlbWFudGljX2NoZWNrZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMTAxLDYgKzEwMiwxMCBAQCBQYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBQYXJzZXI6OnBhcnNlKGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAg
IC8vIFNlbWFudGljYWxseSBjaGVjayB0aGUgcGFyc2VkIHByb2dyYW0sIGFuZCBkbyBzb21lIG9m
IHRoZSBiaW5kaW5nLi4KKyAgICBTZW1hbnRpY0NoZWNrZXIgc2M7CisgICAgc2MuY2hlY2tTZW1h
bnRpY3MocHJvZy5nZXQoKSk7CisKICAgICByZXR1cm4gcHJvZzsKIH0KIApJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Q
YXJzZXIuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICog
QGludGVybmFsCiAgICAgICoKICAgICAgKiBQYXJzZXMgRUNNQVNjcmlwdCBzb3VyY2UgY29kZSBh
bmQgY29udmVydHMgaW50byBQcm9ncmFtTm9kZSBvYmplY3RzLCB3aGljaAotICAgICAqIHJlcHJl
c2VudCB0aGUgcm9vdCBvZiBhIHBhcnNlIHRyZWUuIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb252
ZW5pZW50IHdvcmthcm91bmQKLSAgICAgKiBmb3IgdGhlIHByb2JsZW0gb2YgdGhlIGJpc29uIHBh
cnNlciB3b3JraW5nIGluIGEgc3RhdGljIGNvbnRleHQuCisgICAgICogcmVwcmVzZW50IHRoZSBy
b290IG9mIGEgcGFyc2UgdHJlZS4gVGhlIHRyZWUgaXMgdGhlbiBzZW1hbnRpY2FsbHkKKyAgICAg
KiBjaGVja2VkIHdpdGggYSBzZW1hbnRpYyBhbmFseXplci4gVGhpcyBjbGFzcyBwcm92aWRlcyBh
IGNvbnZlbmllbnQKKyAgICAgKiB3b3JrYXJvdW5kIGZvciB0aGUgcHJvYmxlbSBvZiB0aGUgYmlz
b24gcGFyc2VyIHdvcmtpbmcgaW4gYSBzdGF0aWMgY29udGV4dC4KICAgICAgKi8KICAgICBjbGFz
cyBQYXJzZXIgewogICAgIHB1YmxpYzoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9v
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3Qu
Y3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9hcnJheV9vYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBBcnJheUluc3RhbmNl
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRQogICAgICAgSlNWYWx1ZSAqdiA9IHN0b3JhZ2VbaW5kZXhd
OwogICAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgCi0gICAgICBzbG90
LnNldFZhbHVlU2xvdCh0aGlzLCAmc3RvcmFnZVtpbmRleF0pOworICAgICAgc2xvdC5zZXRWYWx1
ZVNsb3QodGhpcywgJnN0b3JhZ2VbaW5kZXhdLCBQcm9wZXJ0eVNsb3Q6OkZvcmJpZERpcmVjdFdy
aXRlKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgfQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IGJvb2wgQXJyYXlJbnN0YW5jZTo6Z2V0T3duUHJvcGVydHlTbG90KEUKICAgICBKU1ZhbHVlICp2
ID0gc3RvcmFnZVtpbmRleF07CiAgICAgaWYgKCF2KQogICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsICZzdG9yYWdlW2luZGV4XSk7CisgICAgc2xvdC5zZXRW
YWx1ZVNsb3QodGhpcywgJnN0b3JhZ2VbaW5kZXhdLCBQcm9wZXJ0eVNsb3Q6OkZvcmJpZERpcmVj
dFdyaXRlKTsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvY29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb21wbGV0
aW9uLmgJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NvbXBsZXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAor
ICBjbGFzcyBOb2RlOworCiAgIC8qKgogICAgKiBDb21wbGV0aW9uIHR5cGVzLgogICAgKi8KQEAg
LTQ3LDE3ICs0OSwxNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICovCiAgIGNsYXNzIENvbXBsZXRp
b24gewogICBwdWJsaWM6Ci0gICAgQ29tcGxldGlvbihDb21wbFR5cGUgYyA9IE5vcm1hbCwgSlNW
YWx1ZSAqdiA9IE5VTEwsIGNvbnN0IElkZW50aWZpZXIgJnQgPSBDb21tb25JZGVudGlmaWVyczo6
c2hhcmVkKCktPm51bGxJZGVudGlmaWVyKQorICAgIENvbXBsZXRpb24oQ29tcGxUeXBlIGMgPSBO
b3JtYWwsIEpTVmFsdWUgKnYgPSBOVUxMLCBjb25zdCBOb2RlKiB0ID0gMCkKICAgICAgICAgOiBj
b21wKGMpLCB2YWwodiksIHRhcih0KSB7IH0KIAogICAgIENvbXBsVHlwZSBjb21wbFR5cGUoKSBj
b25zdCB7IHJldHVybiBjb21wOyB9CiAgICAgSlNWYWx1ZSAqdmFsdWUoKSBjb25zdCB7IHJldHVy
biB2YWw7IH0KLSAgICBJZGVudGlmaWVyIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHRhcjsgfQor
ICAgIGNvbnN0IE5vZGUqIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHRhcjsgfQogICAgIGJvb2wg
aXNWYWx1ZUNvbXBsZXRpb24oKSBjb25zdCB7IHJldHVybiAhIXZhbDsgfQogICBwcml2YXRlOgog
ICAgIENvbXBsVHlwZSBjb21wOwogICAgIEpTVmFsdWUgKnZhbDsKLSAgICBJZGVudGlmaWVyIHRh
cjsKKyAgICBjb25zdCBOb2RlKiB0YXI7CiAgIH07CiAKIH0KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9jb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2NvbnRleHQu
aAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvY29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsMTUgKzEwOCw2IEBAIG5hbWVzcGFjZSBLSlMgIHsKIAogICAgIHZv
aWQgcHVzaFNjb3BlKEpTT2JqZWN0KiBzKSB7IHNjb3BlLnB1c2gocyk7IH0KICAgICB2b2lkIHBv
cFNjb3BlKCkgeyBzY29wZS5wb3AoKTsgfQotICAgIExhYmVsU3RhY2sqIHNlZW5MYWJlbHMoKSB7
IHJldHVybiAmbHM7IH0KLQotICAgIHZvaWQgcHVzaEl0ZXJhdGlvbigpIHsgbV9pdGVyYXRpb25E
ZXB0aCsrOyB9Ci0gICAgdm9pZCBwb3BJdGVyYXRpb24oKSB7IG1faXRlcmF0aW9uRGVwdGgtLTsg
fQotICAgIGJvb2wgaW5JdGVyYXRpb24oKSBjb25zdCB7IHJldHVybiAobV9pdGVyYXRpb25EZXB0
aCA+IDApOyB9Ci0KLSAgICB2b2lkIHB1c2hTd2l0Y2goKSB7IG1fc3dpdGNoRGVwdGgrKzsgfQot
ICAgIHZvaWQgcG9wU3dpdGNoKCkgeyBtX3N3aXRjaERlcHRoLS07IH0KLSAgICBib29sIGluU3dp
dGNoKCkgY29uc3QgeyByZXR1cm4gKG1fc3dpdGNoRGVwdGggPiAwKTsgfQogCiAgICAgdm9pZCBt
YXJrKCk7CiAKQEAgLTE0MCw5ICsxMzEsNiBAQCBuYW1lc3BhY2UgS0pTICB7CiAgICAgSlNPYmpl
Y3QqIG1fdmFyaWFibGU7CiAgICAgSlNPYmplY3QqIG1fdGhpc1ZhbDsKIAotICAgIExhYmVsU3Rh
Y2sgbHM7Ci0gICAgaW50IG1faXRlcmF0aW9uRGVwdGg7Ci0gICAgaW50IG1fc3dpdGNoRGVwdGg7
CiAgICAgQ29kZVR5cGUgbV9jb2RlVHlwZTsKICAgfTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUv
a2pzL2Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rp
b24uY3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDIgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDMgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrc2ltIE9ybG92aWNo
IChtYWtzaW1Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNo
IChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00OSw2ICs1MCw0NCBA
QCB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAogbmFtZXNwYWNlIEtKUyB7CiAKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvb2t1cE9wdGltaXplciAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KK2NsYXNzIExvb2t1cE9wdGltaXplciA6IHB1YmxpYyBOb2RlVmlzaXRv
ciB7CitwdWJsaWM6CisgIExvb2t1cE9wdGltaXplcihFeGVjU3RhdGUqIGV4ZWMsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHkpIDogbV9leGVjKGV4ZWMpLCBtX2JvZHkoYm9keSkge30KKworICB2b2lk
IG9wdGltaXplKCkgeworICAgIHZpc2l0KG1fYm9keSk7CisgIH0KKyAgCisgIHZpcnR1YWwgTm9k
ZSogdmlzaXQoTm9kZSogbm9kZSkgS0pTX0ZBU1RfQ0FMTAorICB7CisgICAgLy9EbyBub3QgcmVj
dXJzZSBpbnNpZGUgbm9kZXMgdGhhdCBpbnRyb2R1Y2UgbmV3IHNjb3BlczoKKyAgICAvL3RoYXQg
aW5jbHVkZXMgJ3dpdGgnIGFuZCB2YXJpb3VzIGZ1bmN0aW9uIGxpdGVyYWxzLgorICAgIGlmIChu
b2RlLT5pbnRyb2R1Y2VzTmV3U2NvcGUoKSkgcmV0dXJuIDA7CisKKyAgICAvL0NhdGNoIGNhbiBp
bnRyb2R1Y2UgYSBuZXcgc2NvcGUgYXMgd2VsbCwgYnV0IAorICAgIC8vdGhlIHJlc3Qgb2YgdHJ5
IGlzIGZpbmUuLgorICAgIGlmIChub2RlLT5pc1RyeU5vZGUoKSkgeworICAgICAgIHN0YXRpY19j
YXN0PFRyeU5vZGUqPihub2RlKS0+cmVjdXJzZVZpc2l0Tm9uQ2F0Y2godGhpcyk7CisgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgLy9Ob3cgdHJ5IG9wdGltaXppbmcuLgorICAgIGlmIChO
b2RlKiByZXN1bHROb2RlID0gbm9kZS0+b3B0aW1pemVMb2NhbEFjY2VzcyhtX2V4ZWMsIG1fYm9k
eSkpIHsKKyAgICAgIC8vV2Ugb3B0aW1pemVkIHRoaXMgbm9kZSwgYnV0IGl0IG1heSBtYWtlIHNl
bnNlIHRvIG9wdGltaXplIAorICAgICAgLy9pbnNpZGUgaXQgYXMgd2VsbCwgc28gcmVjdXJzZSwg
dG9vLiAKKyAgICAgIE5vZGVWaXNpdG9yOjp2aXNpdChyZXN1bHROb2RlKTsKKyAgICAgIHJldHVy
biByZXN1bHROb2RlOworICAgIH0KKworICAgIC8vSnVzdCByZWN1cnNlLi4KKyAgICByZXR1cm4g
Tm9kZVZpc2l0b3I6OnZpc2l0KG5vZGUpOworICB9Citwcml2YXRlOgorICBFeGVjU3RhdGUqICAg
ICAgICBtX2V4ZWM7CisgIEZ1bmN0aW9uQm9keU5vZGUqIG1fYm9keTsKK307CisKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmN0aW9uSW1wIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9uSW1wOjppbmZvID0geyJG
dW5jdGlvbiIsICZJbnRlcm5hbEZ1bmN0aW9uSW1wOjppbmZvLCAwLCAwfTsKQEAgLTgxLDExICsx
MjAsMzAgQEAgSlNWYWx1ZSogRnVuY3Rpb25JbXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZQogICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgbmV3RXhlYy5zZXRFeGNlcHRpb24oZXhlYy0+ZXhj
ZXB0aW9uKCkpOwogICBjdHguc2V0RXhlY1N0YXRlKCZuZXdFeGVjKTsKKyAKKyAgLy8gQ29tcHV0
ZSB0aGUgc2V0IG9mIGFsbCBsb2NhbCB2YXJpYWJsZXMsIGFuZCBmdW5jdGlvbnMuCisgIC8vIGFu
ZCBvcHRpbWl6ZSBhY2Nlc3MgdG8gdGhlbSB0aGUgZmlyc3QgdGltZSB3ZSdyZSBjYWxsZWQuCisg
IC8vIFRoZSBBU1QgYnVpbGRpbmcgYWxyZWFkeSB0b29rIGNhcmUgb2YgcGFyYW1ldGVyIGRlY2xh
cmF0aW9ucyBmb3IgdXMuCisgIGlmICghYm9keS0+YnVpbHRTeW1ib2xMaXN0KCkpIHsKKyAgICAv
LyBub3cgaGFuZGxlIG90aGVyIGxvY2FscyAoZnVuY3Rpb25zLCB2YXJpYWJsZXMpCisgICAgYm9k
eS0+cHJvY2Vzc0RlY2xzKCZuZXdFeGVjKTsKKyAgICBib2R5LT5zZXRCdWlsdFN5bWJvbExpc3Qo
KTsKKworICAgIExvb2t1cE9wdGltaXplciBvcHRpbWl6ZXIoJm5ld0V4ZWMsIGJvZHkuZ2V0KCkp
OworICAgIG9wdGltaXplci5vcHRpbWl6ZSgpOworICB9CiAKLSAgLy8gYXNzaWduIHVzZXIgc3Vw
cGxpZWQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMKKyAgQWN0aXZhdGlvbkltcCogYWN0aXZhdGlv
biA9IHN0YXRpY19jYXN0PEFjdGl2YXRpb25JbXAqPihjdHguYWN0aXZhdGlvbk9iamVjdCgpKTsK
KworICAvLyBIZXJlLCB3ZSBhY3R1YWxseSBmaWxsIHN0dWZmIGluLCBnb2luZyBieSBpbmNyZWFz
aW5nIHByaW9yaXRpZXM6IAorICAvLyBmaXJzdCwgaW5pdGlhbGl6ZSBmbGFncyBhbmQgc2V0IHRv
IHVuZGVmaW5lZC4uLgorICBhY3RpdmF0aW9uLT5zZXR1cExvY2FscygpOworICAKKyAgLy8gTmV4
dCwgYXNzaWduIHVzZXIgc3VwcGxpZWQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMKICAgcGFzc0lu
UGFyYW1ldGVycygmbmV3RXhlYywgYXJncyk7Ci0gIC8vIGFkZCB2YXJpYWJsZSBkZWNsYXJhdGlv
bnMgKGluaXRpYWxpemVkIHRvIHVuZGVmaW5lZCkKLSAgcHJvY2Vzc1ZhckRlY2xzKCZuZXdFeGVj
KTsKKworICAvLyBOb3csIGZpbGwgaW4gZnVuY3Rpb24gb2JqZWN0cy4gVGhlc2Ugc2hvdWxkIG92
ZXJyaWRlIGV2ZXJ5dGhpbmcgZWxzZQorICBhY3RpdmF0aW9uLT5zZXR1cEZ1bmN0aW9uTG9jYWxz
KCZuZXdFeGVjKTsKIAogICBEZWJ1Z2dlciogZGJnID0gZXhlYy0+ZHluYW1pY0ludGVycHJldGVy
KCktPmRlYnVnZ2VyKCk7CiAgIGludCBzaWQgPSAtMTsKQEAgLTE1MCw5ICsyMDgsOCBAQCBKU1Zh
bHVlKiBGdW5jdGlvbkltcDo6Y2FsbEFzRnVuY3Rpb24oRXhlCiAvLyBFQ01BIDEwLjEuM3EKIGlu
bGluZSB2b2lkIEZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJhbWV0ZXJzKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgTGlzdCYgYXJncykKIHsKLSAgICBWZWN0b3I8UGFyYW1ldGVyPiYgcGFyYW1ldGVycyA9
IGJvZHktPnBhcmFtZXRlcnMoKTsKLQotICAgIEpTT2JqZWN0KiB2YXJpYWJsZSA9IGV4ZWMtPmNv
bnRleHQoKS0+dmFyaWFibGVPYmplY3QoKTsKKyAgICBBU1NFUlQoZXhlYy0+Y29udGV4dCgpLT52
YXJpYWJsZU9iamVjdCgpLT5pc0FjdGl2YXRpb24oKSk7CisgICAgQWN0aXZhdGlvbkltcCogdmFy
aWFibGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT52YXJp
YWJsZU9iamVjdCgpKTsKIAogI2lmZGVmIEtKU19WRVJCT1NFCiAgICAgZnByaW50ZihzdGRlcnIs
ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIK
QEAgLTE2MCwyMCArMjE3LDIzIEBAIGlubGluZSB2b2lkIEZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJh
bWV0ZXIKICAgICAgICAgICBmdW5jdGlvbk5hbWUoKS5pc0VtcHR5KCkgPyAiKGludGVybmFsKSIg
OiBmdW5jdGlvbk5hbWUoKS5hc2NpaSgpKTsKICNlbmRpZgogCi0gICAgc2l6ZV90IHNpemUgPSBw
YXJhbWV0ZXJzLnNpemUoKTsKKyAgICBMaXN0SXRlcmF0b3IgaXQgPSBhcmdzLmJlZ2luKCk7Cisg
ICAgc2l6ZV90IHNpemUgPSBib2R5LT5udW1QYXJhbXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpbnQgd3JpdGVUbyA9IGJvZHktPnBhcmFtU3lt
Ym9sSUQoaSk7CisgICAgICAgIEpTVmFsdWUqIHZhbCA9IGpzVW5kZWZpbmVkKCk7CisgICAgICAg
IGlmIChpdCAhPSBhcmdzLmVuZCgpKSB7CisgICAgICAgICAgICB2YWwgPSAqaXQ7CisgICAgICAg
ICAgICArK2l0OworICAgICAgICB9CiAjaWZkZWYgS0pTX1ZFUkJPU0UKICAgICAgIGZwcmludGYo
c3RkZXJyLCAic2V0dGluZyBwYXJhbWV0ZXIgJXMgIiwgcGFyYW1ldGVycy5hdChpKS5uYW1lLmFz
Y2lpKCkpOwogICAgICAgcHJpbnRJbmZvKGV4ZWMsICJ0byIsIGFyZ3NbaV0pOwogI2VuZGlmCi0g
ICAgICB2YXJpYWJsZS0+cHV0KGV4ZWMsIHBhcmFtZXRlcnNbaV0ubmFtZSwgYXJnc1tpXSk7Cisg
ICAgICB2YXJpYWJsZS0+cHV0TG9jYWwod3JpdGVUbywgdmFsKTsKICAgICB9CiB9CiAKLXZvaWQg
RnVuY3Rpb25JbXA6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKQotewotfQotCiBKU1ZhbHVl
KiBGdW5jdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKICAgRnVuY3Rpb25JbXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkltcCo+
KHNsb3Quc2xvdEJhc2UoKSk7CkBAIC0yNjEsMTggKzMyMSwxNiBAQCBib29sIEZ1bmN0aW9uSW1w
OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhCiAgKi8KIElkZW50aWZpZXIgRnVuY3Rpb25JbXA6Omdl
dFBhcmFtZXRlck5hbWUoaW50IGluZGV4KQogewotICAgIFZlY3RvcjxQYXJhbWV0ZXI+JiBwYXJh
bWV0ZXJzID0gYm9keS0+cGFyYW1ldGVycygpOwotCi0gICAgaWYgKHN0YXRpY19jYXN0PHNpemVf
dD4oaW5kZXgpID49IGJvZHktPm51bVBhcmFtcygpKQorICAgIGlmIChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGluZGV4KSA+PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJvZHktPm51bVBhcmFtcygpKSkKICAg
ICAgICAgcmV0dXJuIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7
CiAgIAotICAgIElkZW50aWZpZXIgbmFtZSA9IHBhcmFtZXRlcnNbaW5kZXhdLm5hbWU7CisgICAg
SWRlbnRpZmllciBuYW1lID0gYm9keS0+cGFyYW1OYW1lKGluZGV4KTsKIAogICAgIC8vIEFyZSB0
aGVyZSBhbnkgc3Vic2VxdWVudCBwYXJhbWV0ZXJzIHdpdGggdGhlIHNhbWUgbmFtZT8KLSAgICBz
aXplX3Qgc2l6ZSA9IHBhcmFtZXRlcnMuc2l6ZSgpOworICAgIHNpemVfdCBzaXplID0gYm9keS0+
bnVtUGFyYW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IGluZGV4ICsgMTsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgaWYgKHBhcmFtZXRlcnNbaV0ubmFtZSA9PSBuYW1lKQotICAgICAgICAgICAg
cmV0dXJuIENvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7CisgICAg
ICAgIGlmIChib2R5LT5wYXJhbU5hbWUoaSkgPT0gbmFtZSkKKyAgICAgICAgcmV0dXJuIENvbW1v
bklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50aWZpZXI7CiAKICAgICByZXR1cm4gbmFt
ZTsKIH0KQEAgLTMyMywxMSArMzgxLDYgQEAgQ29tcGxldGlvbiBEZWNsYXJlZEZ1bmN0aW9uSW1w
OjpleGVjdXRlKAogICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIGpzVW5kZWZpbmVkKCkpOyAv
LyBUT0RPOiBvciBSZXR1cm5WYWx1ZSA/CiB9CiAKLXZvaWQgRGVjbGFyZWRGdW5jdGlvbkltcDo6
cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgYm9keS0+cHJvY2Vzc1ZhckRl
Y2xzKGV4ZWMpOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSW5kZXhU
b05hbWVNYXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIFdlIG1hcCBp
bmRleGVzIGluIHRoZSBhcmd1bWVudHMgYXJyYXkgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBhcmd1
bWVudCBuYW1lcy4gCkBAIC00NjYsMjAgKzUxOSw0MSBAQCBjb25zdCBDbGFzc0luZm8gQWN0aXZh
dGlvbkltcDo6aW5mbyA9IHsiCiAKIC8vIEVDTUEgMTAuMS42CiBBY3RpdmF0aW9uSW1wOjpBY3Rp
dmF0aW9uSW1wKEZ1bmN0aW9uSW1wKiBmdW5jdGlvbiwgY29uc3QgTGlzdCYgYXJndW1lbnRzKQot
ICAgIDogX2Z1bmN0aW9uKGZ1bmN0aW9uKSwgX2FyZ3VtZW50cyhhcmd1bWVudHMpLCBfYXJndW1l
bnRzT2JqZWN0KDApCisgICAgOiBfZnVuY3Rpb24oZnVuY3Rpb24pLCBfYXJndW1lbnRzKHRydWUp
LCBfbG9jYWxzKDApCiB7CisgIF9hcmd1bWVudHMuY29weUZyb20oYXJndW1lbnRzKTsKICAgLy8g
RklYTUU6IERvIHdlIG5lZWQgdG8gc3VwcG9ydCBlbnVtZXJhdGluZyB0aGUgYXJndW1lbnRzIHBy
b3BlcnR5PwogfQogCit2b2lkIEFjdGl2YXRpb25JbXA6OnNldHVwTG9jYWxzKCkgeworICAgIGlu
dCBudW1Mb2NhbHMgPSBfZnVuY3Rpb24tPmJvZHktPm51bUxvY2FscygpOworICAgIF9sb2NhbHMg
ID0gbmV3IExvY2FsW251bUxvY2FscyArIDFdOworICAgIF9sb2NhbHNbMF0udmFsdWUgPSAwOwor
ICAgIF9sb2NhbHNbMF0uYXR0ciAgPSBudW1Mb2NhbHMgKyAxOyAKKyAgICAKKyAgICBmb3IgKGlu
dCBsID0gMTsgbCA8IG51bUxvY2FscyArIDE7ICsrbCkgeworICAgICAgICBfbG9jYWxzW2xdLnZh
bHVlID0ganNVbmRlZmluZWQoKTsKKyAgICAgICAgX2xvY2Fsc1tsXS5hdHRyICA9IF9mdW5jdGlv
bi0+Ym9keS0+Z2V0TG9jYWxBdHRyKGwpOyAKKyAgICB9Cit9CisKK3ZvaWQgQWN0aXZhdGlvbklt
cDo6c2V0dXBGdW5jdGlvbkxvY2FscyhFeGVjU3RhdGUgKmV4ZWMpIHsKKyAgaW50IG51bUxvY2Fs
cyA9IF9mdW5jdGlvbi0+Ym9keS0+bnVtTG9jYWxzKCk7CisgIGZvciAoaW50IGwgPSAxOyBsIDwg
bnVtTG9jYWxzICsgMTsgKytsKSB7CisgICAgaWYgKEZ1bmNEZWNsTm9kZSogZnVuY0RlY2wgPSBf
ZnVuY3Rpb24tPmJvZHktPmdldExvY2FsRnVuY0RlY2wobCkpCisgICAgICBfbG9jYWxzW2xdLnZh
bHVlID0gZnVuY0RlY2wtPm1ha2VGdW5jdGlvbk9iamVjdChleGVjKTsKKyAgfQorfQorCiBKU1Zh
bHVlKiBBY3RpdmF0aW9uSW1wOjphcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAg
IEFjdGl2YXRpb25JbXAqIHRoaXNPYmogPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oc2xv
dC5zbG90QmFzZSgpKTsKIAogICAvLyBkZWZhdWx0OiByZXR1cm4gYnVpbHRpbiBhcmd1bWVudHMg
YXJyYXkKLSAgaWYgKCF0aGlzT2JqLT5fYXJndW1lbnRzT2JqZWN0KQorICBpZiAoIXRoaXNPYmot
Pl9sb2NhbHNbMF0udmFsdWUpCiAgICAgdGhpc09iai0+Y3JlYXRlQXJndW1lbnRzT2JqZWN0KGV4
ZWMpOwogICAKLSAgcmV0dXJuIHRoaXNPYmotPl9hcmd1bWVudHNPYmplY3Q7CisgIHJldHVybiB0
aGlzT2JqLT5fbG9jYWxzWzBdLnZhbHVlOwogfQogCiBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
YyBBY3RpdmF0aW9uSW1wOjpnZXRBcmd1bWVudHNHZXR0ZXIoKQpAQCAtNDkzLDExICs1NjcsMjEg
QEAgYm9vbCBBY3RpdmF0aW9uSW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRQogICAgIC8vIHdlIGRv
bid0IGNhbGwgSlNPYmplY3QgYmVjYXVzZSB3ZSB3b24ndCBoYXZlIGdldHRlci9zZXR0ZXIgcHJv
cGVydGllcwogICAgIC8vIGFuZCB3ZSBkb24ndCB3YW50IHRvIHN1cHBvcnQgX19wcm90b19fCiAK
KyAgICAvLyBTZWUgaWYgd2UncmUgZG9pbmcgZmFsbGJhY2sgIGxvb2t1cCBvbiBhIGxvY2FsLi4K
KyAgICBpbnQgaWQgPSBfZnVuY3Rpb24tPmJvZHktPmxvb2t1cFN5bWJvbElEKHByb3BlcnR5TmFt
ZSk7CisKKyAgICBpZiAodmFsaWRMb2NhbChpZCkpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZVNs
b3QodGhpcywgJl9sb2NhbHNbaWRdLnZhbHVlLCBfbG9jYWxzW2lkXS5hdHRyICYgUmVhZE9ubHkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAoSlNWYWx1ZSoqIGxvY2F0
aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKSkgewotICAgICAgICBzbG90LnNl
dFZhbHVlU2xvdCh0aGlzLCBsb2NhdGlvbik7CisgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRo
aXMsIGxvY2F0aW9uLCBQcm9wZXJ0eVNsb3Q6OkZvcmJpZERpcmVjdFdyaXRlKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgLy8gSW1wb3J0YW50OiBpZiB5b3UgYWRkIG1vcmUg
ZHluYW1pYyBwcm9wZXJ0aWVzIGhlcmUsIAorICAgIC8vIG1ha2Ugc3VyZSB0byBtYWtlIHRoZSBv
cHRpbWl6ZVJlc29sdmVyIGNhbGwgaG9ub3IgdGhlbS4KICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0
b20odGhpcywgZ2V0QXJndW1lbnRzR2V0dGVyKCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTUwOCw2ICs1OTIsMTEgQEAgYm9vbCBBY3RpdmF0aW9uSW1wOjpnZXRPd25Qcm9wZXJ0eVNsb3Qo
RQogCiBib29sIEFjdGl2YXRpb25JbXA6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogeworICAgIC8vIElmIHNvbWVvbmUgdHJp
ZXMgdG8gZGVsZXRlIGEgbG9jYWwsIHJldHVybiBmYWxzZSwgdGhhdCdzIG5vdCBwZXJtaXR0ZWQK
KyAgICBpbnQgaWQgPSBfZnVuY3Rpb24tPmJvZHktPmxvb2t1cFN5bWJvbElEKHByb3BlcnR5TmFt
ZSk7CisgICAgaWYgKHZhbGlkTG9jYWwoaWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KGV4ZWMsIHByb3BlcnR5TmFtZSk7CkBAIC01MTgsNiArNjA3LDEzIEBAIHZvaWQgQWN0aXZhdGlv
bkltcDo6cHV0KEV4ZWNTdGF0ZSosIGNvbnMKICAgLy8gVGhlcmUncyBubyB3YXkgdGhhdCBhbiBh
Y3RpdmF0aW9uIG9iamVjdCBjYW4gaGF2ZSBhIHByb3RvdHlwZSBvciBnZXR0ZXIvc2V0dGVyIHBy
b3BlcnRpZXMKICAgYXNzZXJ0KCFfcHJvcC5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkpOwog
ICBhc3NlcnQocHJvdG90eXBlKCkgPT0ganNOdWxsKCkpOworICAKKyAgLy8gU2VlIGlmIHdlJ3Jl
IHNldHRpbmcgYSBsb2NhbC4uCisgIGludCBpZCA9IF9mdW5jdGlvbi0+Ym9keS0+bG9va3VwU3lt
Ym9sSUQocHJvcGVydHlOYW1lKTsKKyAgaWYgKHZhbGlkTG9jYWwoaWQpKSB7CisgICAgICBwdXRM
b2NhbENoZWNrZWQoaWQsIHZhbHVlKTsKKyAgICAgIHJldHVybjsKKyAgfQogCiAgIF9wcm9wLnB1
dChwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAoYXR0ciA9PSBOb25lIHx8IGF0dHIgPT0gRG9u
dERlbGV0ZSkpOwogfQpAQCAtNTI2LDE2ICs2MjIsMjQgQEAgdm9pZCBBY3RpdmF0aW9uSW1wOjpt
YXJrKCkKIHsKICAgICBpZiAoX2Z1bmN0aW9uICYmICFfZnVuY3Rpb24tPm1hcmtlZCgpKSAKICAg
ICAgICAgX2Z1bmN0aW9uLT5tYXJrKCk7Ci0gICAgaWYgKF9hcmd1bWVudHNPYmplY3QgJiYgIV9h
cmd1bWVudHNPYmplY3QtPm1hcmtlZCgpKQotICAgICAgICBfYXJndW1lbnRzT2JqZWN0LT5tYXJr
KCk7CisKKyAgICBmb3IgKGludCBwb3MgPSAwOyBwb3MgPCBudW1Mb2NhbHMoKTsgKytwb3MpIHsK
KyAgICAgICAgSlNWYWx1ZSAqdmFsID0gX2xvY2Fsc1twb3NdLnZhbHVlOworICAgICAgICBpZiAo
dmFsICYmICF2YWwtPm1hcmtlZCgpKQorICAgICAgICAgICAgdmFsLT5tYXJrKCk7CisgICAgfQor
CiAgICAgSlNPYmplY3Q6Om1hcmsoKTsKIH0KIAorQWN0aXZhdGlvbkltcDo6fkFjdGl2YXRpb25J
bXAoKQoreworICAgIGRlbGV0ZVtdIF9sb2NhbHM7Cit9CisKIHZvaWQgQWN0aXZhdGlvbkltcDo6
Y3JlYXRlQXJndW1lbnRzT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgX2FyZ3VtZW50c09i
amVjdCA9IG5ldyBBcmd1bWVudHMoZXhlYywgX2Z1bmN0aW9uLCBfYXJndW1lbnRzLCBjb25zdF9j
YXN0PEFjdGl2YXRpb25JbXAqPih0aGlzKSk7Ci0gIC8vIFRoZSBhcmd1bWVudHMgbGlzdCBpcyBv
bmx5IG5lZWRlZCB0byBjcmVhdGUgdGhlIGFyZ3VtZW50cyBvYmplY3QsIHNvIGRpc2NhcmQgaXQg
bm93Ci0gIF9hcmd1bWVudHMucmVzZXQoKTsKKyAgX2xvY2Fsc1swXS52YWx1ZSA9IG5ldyBBcmd1
bWVudHMoZXhlYywgX2Z1bmN0aW9uLCBfYXJndW1lbnRzLCBjb25zdF9jYXN0PEFjdGl2YXRpb25J
bXAqPih0aGlzKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHbG9i
YWxGdW5jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MzEsNyArOTM1
LDcgQEAgSlNWYWx1ZSogR2xvYmFsRnVuY0ltcDo6Y2FsbEFzRnVuY3Rpb24oRQogICAgICAgICBj
dHguc2V0RXhlY1N0YXRlKCZuZXdFeGVjKTsKICAgICAgICAgCiAgICAgICAgIC8vIGV4ZWN1dGUg
dGhlIGNvZGUKLSAgICAgICAgcHJvZ05vZGUtPnByb2Nlc3NWYXJEZWNscygmbmV3RXhlYyk7Cisg
ICAgICAgIHByb2dOb2RlLT5wcm9jZXNzRGVjbHMoJm5ld0V4ZWMpOwogICAgICAgICBDb21wbGV0
aW9uIGMgPSBwcm9nTm9kZS0+ZXhlY3V0ZSgmbmV3RXhlYyk7CiAKICAgICAgICAgLy8gaWYgYW4g
ZXhjZXB0aW9uIG9jY3VyZWQsIHByb3BvZ2F0ZSBpdCBiYWNrIHRvIHRoZSBwcmV2aW91cyBleGVj
dXRpb24gb2JqZWN0CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkocmV2aXNpb24gMjQ1NTgpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICsz
LDggQEAKICAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcwogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5vcmcpCisgKiAgQ29weXJp
Z2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNiw4ICszOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAg
IGVudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLAogICAgICAgICAgICAgICAgICAgRXZhbENvZGUs
Ci0gICAgICAgICAgICAgICAgICBGdW5jdGlvbkNvZGUsCi0gICAgICAgICAgICAgICAgICBBbm9u
eW1vdXNDb2RlIH07CisgICAgICAgICAgICAgICAgICBGdW5jdGlvbkNvZGUgfTsKIAogICBjbGFz
cyBJbnRlcm5hbEZ1bmN0aW9uSW1wIDogcHVibGljIEpTT2JqZWN0IHsKICAgcHVibGljOgpAQCAt
MTM3LDcgKzEzOCw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHN0YXRpYyBKU1ZhbHVlKiBsZW5n
dGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHJvcGVydHlTbG90Jik7CiAKICAgICB2b2lkIHBhc3NJblBhcmFtZXRlcnMoRXhlY1N0YXRlKiwg
Y29uc3QgTGlzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRl
Kik7CiAgIH07CiAKICAgY2xhc3MgRGVjbGFyZWRGdW5jdGlvbkltcCA6IHB1YmxpYyBGdW5jdGlv
bkltcCB7CkBAIC0xNTMsOSArMTUzLDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAKICAgICB2aXJ0dWFs
IGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAg
ICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87Ci0KLSAgcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopOwogICB9OwogCiAgIGNsYXNzIEluZGV4
VG9OYW1lTWFwIHsKQEAgLTE5MywxOCArMTkwLDUxIEBAIG5hbWVzcGFjZSBLSlMgewogICBjbGFz
cyBBY3RpdmF0aW9uSW1wIDogcHVibGljIEpTT2JqZWN0IHsKICAgcHVibGljOgogICAgIEFjdGl2
YXRpb25JbXAoRnVuY3Rpb25JbXAqIGZ1bmN0aW9uLCBjb25zdCBMaXN0JiBhcmd1bWVudHMpOwor
ICAgIH5BY3RpdmF0aW9uSW1wKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSogdmFsdWUsIGludCBhdHRyID0gTm9uZSk7CiAgICAgdmlydHVhbCBib29sIGRl
bGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CiAKKyAgICAvL1RoaXMgaXMgb25seSB1c2VkIGJ5IGRlY2xhcmF0aW9uIGNvZGUsIHNvIGl0IG5l
dmVyIGNoZWNrIHIvbyBhdHRyCisgICAgdm9pZCBwdXRMb2NhbChpbnQgcHJvcGVydHlJRCwgSlNW
YWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodmFsaWRMb2NhbChwcm9wZXJ0eUlE
KSk7CisgICAgICAgIF9sb2NhbHNbcHJvcGVydHlJRF0udmFsdWUgPSB2YWx1ZTsKKyAgICAgICAg
Ly9XZSBkbyBub3QgaGF2ZSB0byB0b3VjaCB0aGUgZmxhZ3MgaGVyZSAtLSB0aGV5J3JlIHByZS1j
b21wdXRlZC4uCisgICAgfQorCisgICAgdm9pZCBpbml0TG9jYWwoaW50IHByb3BlcnR5SUQsIEpT
VmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkTG9jYWwocHJvcGVydHlJ
RCkpOworICAgICAgICBfbG9jYWxzW3Byb3BlcnR5SURdLnZhbHVlID0gdmFsdWU7CisgICAgfQor
CisgICAgdm9pZCBwdXRMb2NhbENoZWNrZWQoaW50IHByb3BlcnR5SUQsIEpTVmFsdWUgKnZhbHVl
KSB7CisgICAgICBpZiAoaXNMb2NhbFJlYWRPbmx5KHByb3BlcnR5SUQpKQorICAgICAgICByZXR1
cm47CisKKyAgICAgIF9sb2NhbHNbcHJvcGVydHlJRF0udmFsdWUgPSB2YWx1ZTsKKyAgICB9CisK
KyAgICBKU1ZhbHVlKiogZ2V0TG9jYWxEaXJlY3QoaW50IHByb3BlcnR5SUQpIHsKKyAgICAgIEFT
U0VSVCh2YWxpZExvY2FsKHByb3BlcnR5SUQpKTsKKyAgICAgIHJldHVybiAmX2xvY2Fsc1twcm9w
ZXJ0eUlEXS52YWx1ZTsKKyAgICB9CisKKyAgICBib29sIGlzTG9jYWxSZWFkT25seShpbnQgcHJv
cGVydHlJRCkgeworICAgICAgcmV0dXJuICEhKF9sb2NhbHNbcHJvcGVydHlJRF0uYXR0ciAmIFJl
YWRPbmx5KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGlu
Zm87CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogCi0gICAgYm9vbCBpc0FjdGl2YXRpb24o
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZvaWQgc2V0dXBMb2NhbHMoKTsKKyAgICB2b2lkIHNl
dHVwRnVuY3Rpb25Mb2NhbHMoRXhlY1N0YXRlICpleGVjKTsKICAgICB2b2lkIHJlbGVhc2VBcmd1
bWVudHMoKSB7IF9hcmd1bWVudHMucmVzZXQoKTsgfQogCiAgIHByaXZhdGU6CkBAIC0yMTIsOSAr
MjQyLDIxIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHN0YXRpYyBKU1ZhbHVlKiBhcmd1bWVudHNH
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90KTsKICAgICB2b2lkIGNyZWF0ZUFyZ3VtZW50c09iamVjdChFeGVjU3Rh
dGUqKTsKIAorICAgIHN0cnVjdCBMb2NhbCB7CisgICAgICAgIEpTVmFsdWUqIHZhbHVlOworICAg
ICAgICBpbnQgICAgICBhdHRyOworICAgIH07CisKICAgICBGdW5jdGlvbkltcCogX2Z1bmN0aW9u
OwogICAgIExpc3QgX2FyZ3VtZW50czsKLSAgICBtdXRhYmxlIEFyZ3VtZW50cyogX2FyZ3VtZW50
c09iamVjdDsKKworICAgIC8vTGlzdCBvZiBsb2NhbHMsIGJ1dCB0aGUgZW50cnkgMCBpcyBzcGVj
aWFsOiAKKyAgICAvL3RoZSB2YWx1ZSBoZXJlIGlzIHRoZSBhcmd1bWVudHMgb2JqZWN0LCAKKyAg
ICAvL3RoZSBhdHRyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IChlLmcuIG51bUxvY2FscyAr
IDEpCisgICAgTG9jYWwgKl9sb2NhbHM7CisKKyAgICBpbnQgIG51bUxvY2FscygpIGNvbnN0IHsg
cmV0dXJuIF9sb2NhbHNbMF0uYXR0cjsgfQorICAgIGJvb2wgdmFsaWRMb2NhbChpbnQgaSkgY29u
c3QgeyByZXR1cm4gMCA8IGkgJiYgaSA8IG51bUxvY2FscygpOyB9CiAgIH07CiAKICAgY2xhc3Mg
R2xvYmFsRnVuY0ltcCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uSW1wIHsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2dyYW1tYXIueQkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1h
ci55CSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCArMjUyLDggQEAgUHJpbWFyeUV4cHJOb0JyYWNl
OgogICAgIFRISVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgVGhp
c05vZGUoKTsgfQogICB8IExpdGVyYWwKICAgfCBBcnJheUxpdGVyYWwKLSAgfCBJREVOVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IFJlc29sdmVOb2RlKCokMSk7IH0K
LSAgfCAnKCcgRXhwciAnKScgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gKCQyLT5pc1Jl
c29sdmVOb2RlKCkgfHwgJDItPmlzR3JvdXBOb2RlKCkpID8KKyAgfCBJREVOVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IFZhckFjY2Vzc05vZGUoKiQxKTsgfQorICB8
ICcoJyBFeHByICcpJyAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAoJDItPmlzVmFyQWNj
ZXNzTm9kZSgpIHx8ICQyLT5pc0dyb3VwTm9kZSgpKSA/CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQyIDogbmV3IEdyb3VwTm9kZSgkMik7IH0KIDsKIApAQCAt
ODA4LDcgKzgwOCw3IEBAIERlZmF1bHRDbGF1c2U6CiA7CiAKIExhYmVsbGVkU3RhdGVtZW50Ogot
ICAgIElERU5UICc6JyBTdGF0ZW1lbnQgICAgICAgICAgICAgICAgIHsgJDMtPnB1c2hMYWJlbCgq
JDEpOyAkJCA9IG5ldyBMYWJlbE5vZGUoKiQxLCAkMyk7IH0KKyAgICBJREVOVCAnOicgU3RhdGVt
ZW50ICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IExhYmVsTm9kZSgqJDEsICQzKTsgfQogOwog
CiBUaHJvd1N0YXRlbWVudDoKQEAgLTg3NywzNyArODc3LDI2IEBAIHN0YXRpYyBOb2RlKiBtYWtl
QXNzaWduTm9kZShOb2RlKiBsb2MsIE8KICAgICBpZiAoIW4tPmlzTG9jYXRpb24oKSkKICAgICAg
ICAgcmV0dXJuIG5ldyBBc3NpZ25FcnJvck5vZGUobG9jLCBvcCwgZXhwcik7CiAKLSAgICBpZiAo
bi0+aXNSZXNvbHZlTm9kZSgpKSB7Ci0gICAgICAgIFJlc29sdmVOb2RlICpyZXNvbHZlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZU5vZGUgKj4obik7Ci0gICAgICAgIHJldHVybiBuZXcgQXNzaWduUmVz
b2x2ZU5vZGUocmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7Ci0gICAgfQotICAgIGlm
IChuLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgeworICAgIGlmIChuLT5pc1ZhckFjY2Vzc05v
ZGUoKSkgeworICAgICAgICByZXR1cm4gbmV3IEFzc2lnbk5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRp
b25Ob2RlKj4obiksIG9wLCBleHByKTsKKyAgICB9IGVsc2UgaWYgKG4tPmlzQnJhY2tldEFjY2Vz
c29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUgKmJyYWNrZXQgPSBzdGF0
aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlICo+KG4pOwogICAgICAgICByZXR1cm4gbmV3IEFz
c2lnbkJyYWNrZXROb2RlKGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9w
LCBleHByKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobi0+aXNEb3RBY2Nlc3Nvck5v
ZGUoKSk7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlICo+KG4pOworICAgICAgICByZXR1cm4gbmV3IEFzc2lnbkRvdE5vZGUoZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7CiAgICAgfQotICAgIGFzc2VydChu
LT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9IHN0YXRp
Y19jYXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICByZXR1cm4gbmV3IEFzc2lnbkRvdE5v
ZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7CiB9CiAKLXN0YXRp
YyBOb2RlKiBtYWtlUHJlZml4Tm9kZShOb2RlICpleHByLCBPcGVyYXRvciBvcCkKK3N0YXRpYyBO
b2RlKiBtYWtlUHJlZml4Tm9kZShOb2RlKiBleHByLCBPcGVyYXRvciBvcCkKIHsgCiAgICAgTm9k
ZSAqbiA9IGV4cHItPm5vZGVJbnNpZGVBbGxQYXJlbnMoKTsKIAogICAgIGlmICghbi0+aXNMb2Nh
dGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IFByZWZpeEVycm9yTm9kZShleHByLCBvcCk7Ci0g
ICAgCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAq
cmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4g
bmV3IFByZWZpeFJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3ApOwotICAgIH0K
LSAgICBpZiAobi0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKLSAgICAgICAgQnJhY2tldEFj
Y2Vzc29yTm9kZSAqYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4o
bik7Ci0gICAgICAgIHJldHVybiBuZXcgUHJlZml4QnJhY2tldE5vZGUoYnJhY2tldC0+YmFzZSgp
LCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3ApOwotICAgIH0KLSAgICBhc3NlcnQobi0+aXNEb3RB
Y2Nlc3Nvck5vZGUoKSk7Ci0gICAgRG90QWNjZXNzb3JOb2RlICpkb3QgPSBzdGF0aWNfY2FzdDxE
b3RBY2Nlc3Nvck5vZGUgKj4obik7Ci0gICAgcmV0dXJuIG5ldyBQcmVmaXhEb3ROb2RlKGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3ApOworCisgICAgcmV0dXJuIG5ldyBQcmVmaXhO
b2RlKHN0YXRpY19jYXN0PExvY2F0aW9uTm9kZSo+KG4pLCBvcCk7CiB9CiAKIHN0YXRpYyBOb2Rl
KiBtYWtlUG9zdGZpeE5vZGUoTm9kZSogZXhwciwgT3BlcmF0b3Igb3ApCkBAIC05MTcsMjkgKzkw
NiwxOCBAQCBzdGF0aWMgTm9kZSogbWFrZVBvc3RmaXhOb2RlKE5vZGUqIGV4cHIsCiAgICAgaWYg
KCFuLT5pc0xvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgUG9zdGZpeEVycm9yTm9kZShl
eHByLCBvcCk7CiAgICAgCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBS
ZXNvbHZlTm9kZSAqcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAg
ICAgICByZXR1cm4gbmV3IFBvc3RmaXhSZXNvbHZlTm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCks
IG9wKTsKLSAgICB9Ci0gICAgaWYgKG4tPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7Ci0gICAg
ICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUgKmJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNj
ZXNzb3JOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IFBvc3RmaXhCcmFja2V0Tm9kZShi
cmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCk7Ci0gICAgfQotICAgIGFz
c2VydChuLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9
IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICByZXR1cm4gbmV3IFBvc3Rm
aXhEb3ROb2RlKGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3ApOworICAgIHJldHVy
biBuZXcgUG9zdGZpeE5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25Ob2RlKj4obiksIG9wKTsKIH0K
IAogc3RhdGljIE5vZGUgKm1ha2VGdW5jdGlvbkNhbGxOb2RlKE5vZGUgKmZ1bmMsIEFyZ3VtZW50
c05vZGUgKmFyZ3MpCiB7CiAgICAgTm9kZSAqbiA9IGZ1bmMtPm5vZGVJbnNpZGVBbGxQYXJlbnMo
KTsKLSAgICAKKwogICAgIGlmICghbi0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3
IEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShmdW5jLCBhcmdzKTsKLSAgICBlbHNlIGlmIChuLT5pc1Jl
c29sdmVOb2RlKCkpIHsKLSAgICAgICAgUmVzb2x2ZU5vZGUgKnJlc29sdmUgPSBzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSAqPihuKTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCksIGFyZ3MpOwotICAgIH0gZWxzZSBpZiAobi0+
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKKyAgICBlbHNlIGlmIChuLT5pc1ZhckFjY2Vzc05v
ZGUoKSkKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlKHN0YXRp
Y19jYXN0PFZhckFjY2Vzc05vZGUqPihmdW5jKSwgYXJncyk7CisgICAgZWxzZSBpZiAobi0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAqYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7CiAgICAgICAgIGlm
IChuICE9IGZ1bmMpCiAgICAgICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbFBhcmVuQnJh
Y2tldE5vZGUoYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncyk7CkBA
IC05NTksMTAgKzkzNywxMyBAQCBzdGF0aWMgTm9kZSAqbWFrZVR5cGVPZk5vZGUoTm9kZSAqZXhw
cikKIHsKICAgICBOb2RlICpuID0gZXhwci0+bm9kZUluc2lkZUFsbFBhcmVucygpOwogCi0gICAg
aWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVzb2x2ZSA9
IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IFR5cGVP
ZlJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgfSBlbHNlCisgICAgLy8g
V2Ugb25seSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCBwYXRoIGZvciB2YXJpYWJsZSByZWZlcmVu
Y2VzLAorICAgIC8vIHNpbmNlIHRoZXkgbWF5IHRocm93IGEgUmVzb2x2ZUVycm9yIG9uIGV2YWx1
YXRlIHdoZXJlIHdlIGRvbid0CisgICAgLy8gd2FudCB0aGF0LgorCisgICAgaWYgKG4tPmlzVmFy
QWNjZXNzTm9kZSgpKQorICAgICAgICByZXR1cm4gbmV3IFR5cGVPZlJlZmVyZW5jZU5vZGUoc3Rh
dGljX2Nhc3Q8TG9jYXRpb25Ob2RlKj4obikpOworICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG5l
dyBUeXBlT2ZWYWx1ZU5vZGUoZXhwcik7CiB9CiAKQEAgLTk3MiwxNyArOTUzLDggQEAgc3RhdGlj
IE5vZGUgKm1ha2VEZWxldGVOb2RlKE5vZGUgKmV4cHIpCiAgICAgCiAgICAgaWYgKCFuLT5pc0xv
Y2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgRGVsZXRlVmFsdWVOb2RlKGV4cHIpOwotICAg
IGVsc2UgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVz
b2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3
IERlbGV0ZVJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgfSBlbHNlIGlm
IChuLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewotICAgICAgICBCcmFja2V0QWNjZXNzb3JO
b2RlICpicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSAqPihuKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyBEZWxldGVCcmFja2V0Tm9kZShicmFja2V0LT5iYXNlKCksIGJyYWNr
ZXQtPnN1YnNjcmlwdCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQobi0+aXNEb3RB
Y2Nlc3Nvck5vZGUoKSk7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IERlbGV0ZURvdE5v
ZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gbmV3IERlbGV0ZVJlZmVyZW5jZU5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25O
b2RlKj4obikpOyAvLyAjIyMgbm90IDEwMCUgZmFpdGhmdWwgbGlzdGluZz8KIH0KIAogc3RhdGlj
IGJvb2wgbWFrZUdldHRlck9yU2V0dGVyUHJvcGVydHlOb2RlKFByb3BlcnR5Tm9kZSomIHJlc3Vs
dCwgSWRlbnRpZmllciYgZ2V0T3JTZXQsIElkZW50aWZpZXImIG5hbWUsIFBhcmFtZXRlck5vZGUg
KnBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSAqYm9keSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9pZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZp
ZXIuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAg
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IGNoYXIq
KTsKICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFVTdHJpbmc6OlJlcCogKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFVTdHJpbmc6OlJlcCopOwogCiAgICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IGNoYXIqKTsKICAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiwgY29uc3QgVUNoYXIqLCBpbnQg
bGVuZ3RoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmNwcAkocmV2aXNpb24gMjQ1NTgpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUs
MzIgKzE2NSw2IEBAIEpTT2JqZWN0ICpHZXR0ZXJTZXR0ZXJJbXA6OnRvT2JqZWN0KEV4ZWMKICAg
ICByZXR1cm4ganNOdWxsKCktPnRvT2JqZWN0KGV4ZWMpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gTGFiZWxTdGFjayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1ib29sIExhYmVsU3RhY2s6OnB1c2goY29uc3QgSWRlbnRpZmllciAmaWQpCi17
Ci0gIGlmIChjb250YWlucyhpZCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIFN0YWNrRWxlbSAq
bmV3dG9zID0gbmV3IFN0YWNrRWxlbTsKLSAgbmV3dG9zLT5pZCA9IGlkOwotICBuZXd0b3MtPnBy
ZXYgPSB0b3M7Ci0gIHRvcyA9IG5ld3RvczsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTGFi
ZWxTdGFjazo6Y29udGFpbnMoY29uc3QgSWRlbnRpZmllciAmaWQpIGNvbnN0Ci17Ci0gIGlmIChp
ZC5pc0VtcHR5KCkpCi0gICAgcmV0dXJuIHRydWU7Ci0KLSAgZm9yIChTdGFja0VsZW0gKmN1cnIg
PSB0b3M7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2KQotICAgIGlmIChjdXJyLT5pZCA9PSBpZCkK
LSAgICAgIHJldHVybiB0cnVlOwotCi0gIHJldHVybiBmYWxzZTsKLX0KLQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEludGVybmFsRnVuY3Rpb25JbXAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rpb25JbXA6OmluZm8g
PSB7IkZ1bmN0aW9uIiwgMCwgMCwgMH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuaAkocmV2aXNp
b24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtODQsNDIgKzg0LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgZG91YmxlIHZhbDsKICAg
fTsKIAotCi0gIC8qKgotICAgKiBAc2hvcnQgVGhlICJsYWJlbCBzZXQiIGluIEVjbWEtMjYyIHNw
ZWMKLSAgICovCi0gIGNsYXNzIExhYmVsU3RhY2sgOiBOb25jb3B5YWJsZSB7Ci0gIHB1YmxpYzoK
LSAgICBMYWJlbFN0YWNrKCkKLSAgICAgIDogdG9zKDApCi0gICAgewotICAgIH0KLSAgICB+TGFi
ZWxTdGFjaygpOwotCi0gICAgLyoqCi0gICAgICogSWYgaWQgaXMgbm90IGVtcHR5IGFuZCBpcyBu
b3QgaW4gdGhlIHN0YWNrIGFscmVhZHksIHB1dHMgaXQgb24gdG9wIG9mCi0gICAgICogdGhlIHN0
YWNrIGFuZCByZXR1cm5zIHRydWUsIG90aGVyd2lzZSByZXR1cm5zIGZhbHNlCi0gICAgICovCi0g
ICAgYm9vbCBwdXNoKGNvbnN0IElkZW50aWZpZXIgJmlkKTsKLSAgICAvKioKLSAgICAgKiBJcyB0
aGUgaWQgaW4gdGhlIHN0YWNrPwotICAgICAqLwotICAgIGJvb2wgY29udGFpbnMoY29uc3QgSWRl
bnRpZmllciAmaWQpIGNvbnN0OwotICAgIC8qKgotICAgICAqIFJlbW92ZXMgZnJvbSB0aGUgc3Rh
Y2sgdGhlIGxhc3QgcHVzaGVkIGlkICh3aGF0IGVsc2U/KQotICAgICAqLwotICAgIHZvaWQgcG9w
KCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdHJ1Y3QgU3RhY2tFbGVtIHsKLSAgICAgIElkZW50aWZp
ZXIgaWQ7Ci0gICAgICBTdGFja0VsZW0gKnByZXY7Ci0gICAgfTsKLQotICAgIFN0YWNrRWxlbSAq
dG9zOwotICB9OwotCi0KICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV2YWx1YXRpb24KICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x
NDcsMjMgKzExMSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICB2b2lkIHByaW50SW5mbyhFeGVjU3Rh
dGUgKmV4ZWMsIGNvbnN0IGNoYXIgKnMsIEpTVmFsdWUgKiwgaW50IGxpbmVubyA9IC0xKTsKICNl
bmRpZgogCi1pbmxpbmUgTGFiZWxTdGFjazo6fkxhYmVsU3RhY2soKQotewotICAgIFN0YWNrRWxl
bSAqcHJldjsKLSAgICBmb3IgKFN0YWNrRWxlbSAqZSA9IHRvczsgZTsgZSA9IHByZXYpIHsKLSAg
ICAgICAgcHJldiA9IGUtPnByZXY7Ci0gICAgICAgIGRlbGV0ZSBlOwotICAgIH0KLX0KLQotaW5s
aW5lIHZvaWQgTGFiZWxTdGFjazo6cG9wKCkKLXsKLSAgICBpZiAoU3RhY2tFbGVtICplID0gdG9z
KSB7Ci0gICAgICAgIHRvcyA9IGUtPnByZXY7Ci0gICAgICAgIGRlbGV0ZSBlOwotICAgIH0KLX0K
LQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vICBJTlRFUk5BTF9ICkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL2ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw3IEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmluaXRHbG9iYWxPYmplY3QoKQogICAgIG1fRnVuY3Rpb25Qcm90b3R5
cGUgPSBuZXcgRnVuY3Rpb25Qcm90b3R5cGUoJm1fZ2xvYmFsRXhlYyk7CiAgICAgbV9PYmplY3RQ
cm90b3R5cGUgPSBuZXcgT2JqZWN0UHJvdG90eXBlKCZtX2dsb2JhbEV4ZWMsIG1fRnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgIG1fRnVuY3Rpb25Qcm90b3R5cGUtPnNldFByb3RvdHlwZShtX09iamVj
dFByb3RvdHlwZSk7Ci0gICAgCisKICAgICBtX0FycmF5UHJvdG90eXBlID0gbmV3IEFycmF5UHJv
dG90eXBlKCZtX2dsb2JhbEV4ZWMsIG1fT2JqZWN0UHJvdG90eXBlKTsKICAgICBtX1N0cmluZ1By
b3RvdHlwZSA9IG5ldyBTdHJpbmdQcm90b3R5cGUoJm1fZ2xvYmFsRXhlYywgbV9PYmplY3RQcm90
b3R5cGUpOwogICAgIG1fQm9vbGVhblByb3RvdHlwZSA9IG5ldyBCb29sZWFuUHJvdG90eXBlKCZt
X2dsb2JhbEV4ZWMsIG1fT2JqZWN0UHJvdG90eXBlLCBtX0Z1bmN0aW9uUHJvdG90eXBlKTsKQEAg
LTM2MSw3ICszNjEsNyBAQCBDb21wbGV0aW9uIEludGVycHJldGVyOjpldmFsdWF0ZShjb25zdCBV
CiAgICAgICAgIENvbnRleHQgY3R4KGdsb2JhbE9iaiwgdGhpcywgdGhpc09iaiwgcHJvZ05vZGUu
Z2V0KCkpOwogICAgICAgICBFeGVjU3RhdGUgbmV3RXhlYyh0aGlzLCAmY3R4KTsKICAgICAgICAg
Y3R4LnNldEV4ZWNTdGF0ZSgmbmV3RXhlYyk7Ci0gICAgICAgIHByb2dOb2RlLT5wcm9jZXNzVmFy
RGVjbHMoJm5ld0V4ZWMpOworICAgICAgICBwcm9nTm9kZS0+cHJvY2Vzc0RlY2xzKCZuZXdFeGVj
KTsKICAgICAgICAgcmVzID0gcHJvZ05vZGUtPmV4ZWN1dGUoJm5ld0V4ZWMpOwogICAgIH0KICAg
ICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9saXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvbGlzdC5jcHAJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDIyIEBAIExpc3Q6
Okxpc3QoKSA6IF9pbXBCYXNlKGFsbG9jYXRlTGlzdEltcCgKICNlbmRpZgogfQogCitMaXN0OjpM
aXN0KGJvb2wgbmVlZHNNYXJraW5nKSA6IF9pbXBCYXNlKGFsbG9jYXRlTGlzdEltcCgpKQorewor
ICAgIExpc3RJbXAgKmltcCA9IHN0YXRpY19jYXN0PExpc3RJbXAgKj4oX2ltcEJhc2UpOworICAg
IGltcC0+c2l6ZSA9IDA7CisgICAgaW1wLT5yZWZDb3VudCA9IDE7CisgICAgaW1wLT52YWx1ZVJl
ZkNvdW50ID0gIW5lZWRzTWFya2luZzsKKyAgICBpbXAtPmNhcGFjaXR5ID0gMDsKKyAgICBpbXAt
Pm92ZXJmbG93ID0gMDsKKworI2lmIERVTVBfU1RBVElTVElDUworICAgIGlmICgrK251bUxpc3Rz
ID4gbnVtTGlzdHNIaWdoV2F0ZXJNYXJrKQorICAgICAgICBudW1MaXN0c0hpZ2hXYXRlck1hcmsg
PSBudW1MaXN0czsKKyAgICBpbXAtPnNpemVIaWdoV2F0ZXJNYXJrID0gMDsKKyNlbmRpZgorfQor
CiB2b2lkIExpc3Q6Om1hcmtWYWx1ZXMoKQogewogICAgIHN0YXRpY19jYXN0PExpc3RJbXAgKj4o
X2ltcEJhc2UpLT5tYXJrVmFsdWVzKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9saXN0LmgJKHJldmlzaW9uIDI0NTU4
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBjbGFzcyBMaXN0IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIExpc3QoKTsKKyAgICAgICAgZXhwbGljaXQgTGlzdChib29sIG5lZWRzTWFya2luZyk7
CiAgICAgICAgIH5MaXN0KCkgeyBkZXJlZigpOyB9CiAKICAgICAgICAgTGlzdChjb25zdCBMaXN0
ICZiKSA6IF9pbXBCYXNlKGIuX2ltcEJhc2UpIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9u
b2RlczJzdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJz
dHJpbmcuY3BwCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJz
dHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChjaGFyKTsKICAgICBTb3VyY2VTdHJlYW0m
IG9wZXJhdG9yPDwoRm9ybWF0IGYpOwogICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChjb25z
dCBOb2RlICopOworICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChPcGVyYXRvciBvcCk7IC8v
IEZJWE1FOiBhZGQgS0pTX05PX0lOTElORQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBTb3Vy
Y2VTdHJlYW0mIG9wZXJhdG9yPDwoUmVmUHRyPFQ+IG4pIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9y
PDwobi5nZXQoKSk7IH0KIAogICBwcml2YXRlOgpAQCAtMTI1LDYgKzEyNiwxMiBAQCBTb3VyY2VT
dHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PChGCiAgIHJldHVybiAqdGhpczsKIH0KIAor
U291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoT3BlcmF0b3Igb3ApCit7Cisg
IEFTU0VSVChvcCA9PSBPcFBsdXNQbHVzIHx8IG9wID09IE9wTWludXNNaW51cyk7CisgIHJldHVy
biAqdGhpcyA8PCAoKG9wID09IE9wUGx1c1BsdXMpID8gIisrIiA6ICItLSIpOworfQorCiBVU3Ry
aW5nIE5vZGU6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgU291cmNlU3RyZWFtIHN0cjsKQEAgLTE1
NCw3ICsxNjEsNyBAQCB2b2lkIFJlZ0V4cE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmCiAK
IHZvaWQgVGhpc05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QgeyBzIDw8ICJ0
aGlzIjsgfQogCi12b2lkIFJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNv
bnN0IHsgcyA8PCBpZGVudDsgfQordm9pZCBWYXJBY2Nlc3NOb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0gJnMpIGNvbnN0IHsgcyA8PCBpZGVudDsgfQogCiB2b2lkIEdyb3VwTm9kZTo6c3RyZWFt
VG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewpAQCAtMjYwLDkgKzI2Nyw5IEBAIHZvaWQgRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlOjpzdHJlYW1UbyhTb3UKICAgcyA8PCBleHByIDw8IGFyZ3M7CiB9
CiAKLXZvaWQgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3QKK3ZvaWQgRnVuY3Rpb25DYWxsUmVmZXJlbmNlTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtICZzKSBjb25zdAogewotICBzIDw8IGlkZW50IDw8IGFyZ3M7CisgIHMgPDwgZXhwciA8
PCBhcmdzOwogfQogCiB2b2lkIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0gJnMpIGNvbnN0CkBAIC0yODIsMzQgKzI4OSwxMiBAQCB2b2lkIEZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OnN0cmVhbVRvKFNvdXJjCiAKIHZvaWQgRnVuY3Rpb25DYWxsUGFyZW5Eb3ROb2Rl
OjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7Ci0gIHMgPDwgIigiIDw8IFNvdXJj
ZVN0cmVhbTo6RG90RXhwciA8PCBiYXNlIDw8ICIuIiA8PCBpZGVudCA8PCAiKSIgPDwgYXJnczsK
LX0KLQotdm9pZCBQb3N0Zml4UmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKLXsKLSAgcyA8PCBtX2lkZW50OwotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0g
ICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOwotfQotCi12b2lkIFBvc3RmaXhC
cmFja2V0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAotewotICBzIDw8IG1f
YmFzZSA8PCAiWyIgPDwgbV9zdWJzY3JpcHQgPDwgIl0iOwotICBpZiAobV9vcGVyID09IE9wUGx1
c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOworICBzIDw8ICIo
IiA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgYmFzZSA8PCAnLicgPDwgaWRlbnQgPDwgIiki
IDw8IGFyZ3M7CiB9CiAKLXZvaWQgUG9zdGZpeERvdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSAmcykgY29uc3QKK3ZvaWQgUG9zdGZpeE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgbV9iYXNlIDw8ICIuIiA8
PCBtX2lkZW50OwotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwot
ICBlbHNlCi0gICAgcyA8PCAiLS0iOworICBzIDw8IG1fbG9jIDw8IG1fb3BlcjsKIH0KIAogdm9p
ZCBQb3N0Zml4RXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CkBAIC0z
MjEsMTkgKzMwNiw5IEBAIHZvaWQgUG9zdGZpeEVycm9yTm9kZTo6c3RyZWFtVG8oU291cmNlU3QK
ICAgICBzIDw8ICItLSI7CiB9CiAKLXZvaWQgRGVsZXRlUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSAmcykgY29uc3QKLXsKLSAgcyA8PCAiZGVsZXRlICIgPDwgbV9pZGVudDsKLX0K
LQotdm9pZCBEZWxldGVCcmFja2V0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25z
dAotewotICBzIDw8ICJkZWxldGUgIiA8PCBtX2Jhc2UgPDwgIlsiIDw8IG1fc3Vic2NyaXB0IDw8
ICJdIjsKLX0KLQotdm9pZCBEZWxldGVEb3ROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMp
IGNvbnN0Cit2b2lkIERlbGV0ZVJlZmVyZW5jZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3QKIHsKLSAgcyA8PCAiZGVsZXRlICIgPDwgU291cmNlU3RyZWFtOjpEb3RFeHByIDw8
IG1fYmFzZSA8PCAiLiIgPDwgbV9pZGVudDsKKyAgcyA8PCAiZGVsZXRlICIgPDwgbG9jOwogfQog
CiB2b2lkIERlbGV0ZVZhbHVlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdApA
QCAtMzUxLDM2ICszMjYsMTQgQEAgdm9pZCBUeXBlT2ZWYWx1ZU5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cgogICBzIDw8ICJ0eXBlb2YgIiA8PCBtX2V4cHI7CiB9CiAKLXZvaWQgVHlwZU9mUmVzb2x2
ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKLXsKLSAgcyA8PCAidHlwZW9m
ICIgPDwgbV9pZGVudDsKLX0KLQotdm9pZCBQcmVmaXhSZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtICZzKSBjb25zdAotewotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0gICAg
cyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOwotICBzIDw8IG1faWRlbnQ7Ci19Ci0K
LXZvaWQgUHJlZml4QnJhY2tldE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QK
K3ZvaWQgVHlwZU9mUmVmZXJlbmNlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25z
dAogewotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNl
Ci0gICAgcyA8PCAiLS0iOwotICBzIDw8IG1fYmFzZSA8PCAiWyIgPDwgbV9zdWJzY3JpcHQgPDwg
Il0iOworICBzIDw8ICJ0eXBlb2YgIiA8PCBsb2M7CiB9CiAKLXZvaWQgUHJlZml4RG90Tm9kZTo6
c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBQcmVmaXhOb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykK
LSAgICBzIDw8ICIrKyI7Ci0gIGVsc2UKLSAgICBzIDw8ICItLSI7Ci0gIHMgPDwgU291cmNlU3Ry
ZWFtOjpEb3RFeHByIDw8IG1fYmFzZSA8PCAiLiIgPDwgbV9pZGVudDsKKyAgcyA8PCBtX29wZXIg
PDwgbV9sb2M7CiB9CiAKIHZvaWQgUHJlZml4RXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mIHMpIGNvbnN0CkBAIC01NTIsOSArNTA1LDkgQEAgc3RhdGljIHZvaWQgc3RyZWFtQXNzaWdu
bWVudE9wZXJhdG9yVG8oUwogICBzIDw8IG9wU3RyOwogfQogCi12b2lkIEFzc2lnblJlc29sdmVO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEFzc2lnbk5vZGU6OnN0
cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKIHsKLSAgcyA8PCBtX2lkZW50OworICBzIDw8
IG1fbG9jOwogICBzdHJlYW1Bc3NpZ25tZW50T3BlcmF0b3JUbyhzLCBtX29wZXIpOwogICBzIDw8
IG1fcmlnaHQ7CiB9CkBAIC02MDcsNiArNTYwLDExIEBAIHZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6
c3RyZWFtVG8oU291cmNlU3QKICAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGwgPDwgbmV4dCA8PCAi
OyI7CiB9CiAKK3ZvaWQgU3RhdGljVmFyU3RhdGVtZW50Tm9kZTo6c3RyZWFtVG8oU291cmNlU3Ry
ZWFtICZzKSBjb25zdAoreworICBzIDw8IG9yaWdpbmFsU3RhdGVtZW50OworfQorCiB2b2lkIEJs
b2NrTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewogICBzIDw8IFNvdXJj
ZVN0cmVhbTo6RW5kbCA8PCAieyIgPDwgU291cmNlU3RyZWFtOjpJbmRlbnQKQEAgLTc3NCwzICs3
MzIsOCBAQCB2b2lkIFNvdXJjZUVsZW1lbnRzTm9kZTo6c3RyZWFtVG8oU291cmNlCiAgIGZvciAo
Y29uc3QgU291cmNlRWxlbWVudHNOb2RlICpuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkp
CiAgICAgcyA8PCBuLT5ub2RlOwogfQorCit2b2lkIEVycm9yTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtJiBzKSBjb25zdAoreworICBzIDw8IGtpZDsKK30KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNw
cAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgTWFrc2ltIE9ybG92aWNoIChtYWtzaW1Aa2RlLm9yZykKICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0zNywxMSArMzgsMTIgQEAKICNpbmNsdWRlICJsZXhlci5oIgog
I2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgor
I2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7CituYW1lc3BhY2UgS0pTIHsKIAogI2RlZmluZSBL
SlNfQlJFQUtQT0lOVCBcCiAgIGlmIChEZWJ1Z2dlcjo6ZGVidWdnZXJzUHJlc2VudCA+IDAgJiYg
IWhpdFN0YXRlbWVudChleGVjKSkgXApAQCAtNzEsNiArNzMsMTcgQEAgdXNpbmcgbmFtZXNwYWNl
IEtKUzsKICAgaWYgKENvbGxlY3Rvcjo6aXNPdXRPZk1lbW9yeSgpKSBcCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7IC8vIHdpbGwgYmUgcGlja2VkIHVwIGJ5IEtKU19DSEVDS0VYQ0VQVElPTgog
CisjZGVmaW5lIEtKU19DSEVDS0VYQ0VQVElPTlJFRkVSRU5DRSBcCisgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgeyBcCisgICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOyBcCisgICAgcmVmLmZv
dW5kID0gdHJ1ZTsgXAorICAgIHJldHVybiByZWY7IFwKKyAgfSBcCisgIGlmIChDb2xsZWN0b3I6
OmlzT3V0T2ZNZW1vcnkoKSkgeyBcCisgICAgcmVmLmZvdW5kID0gdHJ1ZTsgXAorICAgIHJldHVy
biByZWY7IFwKKyAgfQorCiAjZGVmaW5lIEtKU19DSEVDS0VYQ0VQVElPTkxJU1QgXAogICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsgXAogICAgIGhhbmRsZUV4Y2VwdGlvbihleGVjKTsgXApA
QCAtMjE3LDYgKzIzMCwxOCBAQCBDb21wbGV0aW9uIE5vZGU6OmNyZWF0ZUVycm9yQ29tcGxldGlv
bihFCiAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3csIEVycm9yOjpjcmVhdGUoZXhlYywgZSwg
bWVzc2FnZSwgbGluZU5vKCksIGN1cnJlbnRTb3VyY2VJZChleGVjKSwgY3VycmVudFNvdXJjZVVS
TChleGVjKSkpOwogfQogCitOb2RlKiBOb2RlOjpjcmVhdGVFcnJvck5vZGUoRXJyb3JUeXBlIGUs
IGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgICByZXR1cm4gbmV3IEVycm9yTm9kZSh0aGlzLCBlLCBt
c2cpOworfQorCitOb2RlKiBOb2RlOjpjcmVhdGVFcnJvck5vZGUoRXJyb3JUeXBlIGUsIGNvbnN0
IGNoYXIgKm1zZywgY29uc3QgSWRlbnRpZmllciAmaWRlbnQpCit7CisgICAgVVN0cmluZyBtZXNz
YWdlID0gbXNnOworICAgIHN1YnN0aXR1dGUobWVzc2FnZSwgaWRlbnQudXN0cmluZygpKTsKKyAg
ICByZXR1cm4gbmV3IEVycm9yTm9kZSh0aGlzLCBlLCBtZXNzYWdlKTsKK30KKwogSlNWYWx1ZSAq
Tm9kZTo6dGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yVHlwZSBlLCBjb25zdCBjaGFy
ICptc2cpCiB7CiAgICAgcmV0dXJuIEtKUzo6dGhyb3dFcnJvcihleGVjLCBlLCBtc2csIGxpbmVO
bygpLCBjdXJyZW50U291cmNlSWQoZXhlYyksIGN1cnJlbnRTb3VyY2VVUkwoZXhlYykpOwpAQCAt
MzAzLDYgKzMyOCw3MCBAQCBOb2RlICpOb2RlOjpub2RlSW5zaWRlQWxsUGFyZW5zKCkKICAgICBy
ZXR1cm4gdGhpczsKIH0KIAorTm9kZVZpc2l0b3I6On5Ob2RlVmlzaXRvcigpCit7Cit9CisKK2Ns
YXNzIFZhckRlY2xWaXNpdG9yOiBwdWJsaWMgTm9kZVZpc2l0b3IgeworICBwcml2YXRlOgorICAg
IEV4ZWNTdGF0ZSogbV9leGVjOworICBwdWJsaWM6CisgICAgVmFyRGVjbFZpc2l0b3IoRXhlY1N0
YXRlKiBleGVjKSA6IG1fZXhlYyhleGVjKQorICAgIHt9CisKKyAgICB2aXJ0dWFsIE5vZGUqIHZp
c2l0KE5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEwgeworICAgICAgbm9kZS0+cHJvY2Vzc1ZhckRl
Y2wobV9leGVjKTsKKworICAgICAgLy9EbyBub3QgcmVjdXJzZSBpbnNpZGUgZnVuY3Rpb24gYm9k
aWVzLi4uCisgICAgICBpZiAobm9kZS0+aW50cm9kdWNlc05ld1N0YXRpY1Njb3BlKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgICByZXR1cm4gTm9kZVZpc2l0b3I6OnZpc2l0KG5vZGUpOwor
ICAgIH0KK307CisKK2NsYXNzIEZ1bmNEZWNsVmlzaXRvciA6IHB1YmxpYyBOb2RlVmlzaXRvciB7
CisgIHByaXZhdGU6CisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CisgIHB1YmxpYzoKKyAgICBGdW5j
RGVjbFZpc2l0b3IoRXhlY1N0YXRlKiBleGVjKSA6IG1fZXhlYyhleGVjKQorICAgIHt9CisKKyAg
ICB2aXJ0dWFsIE5vZGUqIHZpc2l0KE5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEwgeworICAgICAg
bm9kZS0+cHJvY2Vzc0Z1bmNEZWNsKG1fZXhlYyk7CisKKyAgICAgIGlmIChub2RlLT5pbnRyb2R1
Y2VzTmV3U3RhdGljU2NvcGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgIHJldHVybiBO
b2RlVmlzaXRvcjo6dmlzaXQobm9kZSk7CisgICAgfQorfTsKKwordm9pZCBOb2RlOjpwcm9jZXNz
RGVjbHMoRXhlY1N0YXRlICpleGVjKSB7CisgIFZhckRlY2xWaXNpdG9yIHZWaXNpdChleGVjKTsK
KyAgdlZpc2l0LnZpc2l0KHRoaXMpOworCisgIEZ1bmNEZWNsVmlzaXRvciBmVmlzaXQoZXhlYyk7
CisgIGZWaXNpdC52aXNpdCh0aGlzKTsKK30KKwordm9pZCBOb2RlOjpwcm9jZXNzVmFyRGVjbChF
eGVjU3RhdGUqKQore30KKwordm9pZCBOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKikK
K3t9CisKK05vZGUqIE5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlKQoreworICAgIHJldHVybiAwOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVZpc2l0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTm9kZSogTm9kZVZpc2l0b3I6OnZpc2l0KE5vZGUgKm5vZGUpIHsKKyAg
bm9kZS0+cmVjdXJzZVZpc2l0KHRoaXMpOworICByZXR1cm4gMDsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZSgpIApAQCAtMzI3LDEw
ICs0MTYsNiBAQCBib29sIFN0YXRlbWVudE5vZGU6OmhpdFN0YXRlbWVudChFeGVjU3RhCiAgICAg
cmV0dXJuIHRydWU7IC8vIGNvbnRpbnVlCiB9CiAKLXZvaWQgU3RhdGVtZW50Tm9kZTo6cHJvY2Vz
c0Z1bmNEZWNsKEV4ZWNTdGF0ZSopCi17Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBOdWxsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IEpTVmFsdWUgKk51bGxOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKikKQEAgLTM3OSwzMSArNDY0
LDE2NiBAQCBKU1ZhbHVlICpUaGlzTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICplCiAgIHJldHVy
biBleGVjLT5jb250ZXh0KCktPnRoaXNWYWx1ZSgpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZhckFjY2Vzc05vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gRUNNQSAxMS4xLjIgJiAxMC4xLjQK
LUpTVmFsdWUgKlJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCi17CitKU1Zh
bHVlKiBWYXJBY2Nlc3NOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpIHsKICAgY29uc3Qg
U2NvcGVDaGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKICAgU2Nv
cGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOwogICBTY29wZUNoYWluSXRlcmF0
b3IgZW5kID0gY2hhaW4uZW5kKCk7Ci0gIAorCiAgIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29t
ZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgogICBhc3NlcnQoaXRlciAhPSBlbmQpOwogCiAgIFBy
b3BlcnR5U2xvdCBzbG90OwotICBkbyB7IAotICAgIEpTT2JqZWN0ICpvID0gKml0ZXI7CisgIEpT
T2JqZWN0ICpzY29wZU9iajsKKyAgZG8geworICAgIHNjb3BlT2JqID0gKml0ZXI7CisKKyAgICBp
ZiAoc2NvcGVPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCisgICAgICBy
ZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBzY29wZU9iaiwgaWRlbnQpOwogCi0gICAgaWYgKG8t
PmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCi0gICAgICByZXR1cm4gc2xvdC5n
ZXRWYWx1ZShleGVjLCBvLCBpZGVudCk7Ci0gICAgCiAgICAgKytpdGVyOwogICB9IHdoaWxlIChp
dGVyICE9IGVuZCk7CiAKICAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVj
LCBpZGVudCk7CiB9CiAKK1JlZmVyZW5jZSBWYXJBY2Nlc3NOb2RlOjpldmFsdWF0ZVJlZmVyZW5j
ZShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgUmVmZXJlbmNlIHJlZihpZGVudCk7CisgIHJlZi5mb3Vu
ZCA9IHRydWU7CisgIGludCBsZW5ndGggPSAwOworCisgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWlu
ID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7CisgIFNjb3BlQ2hhaW5JdGVyYXRvciBp
dGVyID0gY2hhaW4uYmVnaW4oKTsKKyAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVu
ZCgpOworCisgIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBj
aGFpbgorICBBU1NFUlQoaXRlciAhPSBlbmQpOworCisgIEpTT2JqZWN0ICpzY29wZU9iajsKKyAg
ZG8geworICAgIHNjb3BlT2JqID0gKml0ZXI7CisgICAgcmVmLmJhc2UgPSBzY29wZU9iajsKKwor
ICAgIGlmIChzY29wZU9iai0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCByZWYucHJvcGVy
dHlTbG90KSkKKyAgICAgIHJldHVybiByZWY7CisKKyAgICArK2l0ZXI7CisgICAgKytsZW5ndGg7
CisgIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKKworICByZWYuZm91bmQgPSBmYWxzZTsKKyAgcmVm
LnByb3BlcnR5U2xvdC5zZXRVbmRlZmluZWQoc2NvcGVPYmopOyAvL291dGVybW9zdCBzY29wZS4K
KyAgcmV0dXJuIHJlZjsKK30KKworTm9kZSogVmFyQWNjZXNzTm9kZTo6b3B0aW1pemVMb2NhbEFj
Y2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpCit7CisgIGludCBp
bmRleCA9IG5vZGUtPmxvb2t1cFN5bWJvbElEKGlkZW50KTsKKworICAvLyBJZiB0aGUgc3ltYm9s
IGlzbid0IGxvY2FsLCB3ZSBjYW4gc3RpbGwgb3B0aW1pemUgCisgIC8vIGEgYml0LCBhbmQgc2tp
cCB0aGUgbG9jYWwgc2NvcGUgZm9yIGxvb2t1cC4KKyAgLy8gKHVubGVzcyAnZXZhbCcgaW5qZWN0
cyBhIG5ldyBsb2NhbCwgYnV0IE5vbkxvY2FsUmVzb2x2ZXIKKyAgLy8gaXMgY2FyZWZ1bCBhYm91
dCB0aGF0KQorICBpZiAoaW5kZXggPT0gLTEpIHsKKyAgICBpZiAoaWRlbnQgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cykKKyAgICAgIHJldHVybiAwOyAvL0R5bmFtaWMgcHJvcGVy
dHkuLgorCisgICAgcmV0dXJuIG5ldyBOb25Mb2NhbFZhckFjY2Vzc05vZGUoaWRlbnQpOworICB9
CisKKyAgcmV0dXJuIG5ldyBMb2NhbFZhckFjY2Vzc05vZGUoaWRlbnQsIGluZGV4KTsKK30KKwor
aW50IFZhckFjY2Vzc05vZGU6OmxvY2FsSUQoRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSkKK3sKKyAg
cmV0dXJuIG5vZGUtPmxvb2t1cFN5bWJvbElEKGlkZW50KTsKK30KKworLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIExvY2FsVmFyQWNjZXNzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitKU1ZhbHVlKiBMb2NhbFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSAqZXhlYykKK3sKKyAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxB
Y3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworICBy
ZXR1cm4gKnNjb3BlLT5nZXRMb2NhbERpcmVjdChpbmRleCk7Cit9CisKK1JlZmVyZW5jZSBMb2Nh
bFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSAqZXhlYykKK3sKKyAg
QWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+
Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworICBSZWZlcmVuY2UgcmVmKGlkZW50KTsg
Ly8jIyMgRklYTUU6IHRoZSBpZGVudCBpcyBmb3IgZGVsZXRlLCBidXQgaXQgbWFrZXMgaXQgdGFr
ZSB0aGUgc3VwZXItc2xvdyBwYXRoLi4KKyAgcmVmLmJhc2UgID0gc2NvcGU7CisgIHJlZi5mb3Vu
ZCA9IHRydWU7CisgIHJlZi5wcm9wZXJ0eVNsb3Quc2V0UG90ZW50aWFsbHlXcml0ZWFibGUoKTsK
KyAgcmVmLnByb3BlcnR5U2xvdC5zZXRWYWx1ZVNsb3Qoc2NvcGUsIHNjb3BlLT5nZXRMb2NhbERp
cmVjdChpbmRleCksIHNjb3BlLT5pc0xvY2FsUmVhZE9ubHkoaW5kZXgpKTsKKyAgcmV0dXJuIHJl
ZjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5vbkxvY2FsVmFyQWNj
ZXNzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSlNWYWx1ZSogTm9uTG9jYWxWYXJB
Y2Nlc3NOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgY29uc3QgU2NvcGVDaGFp
biYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKKyAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOworICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0g
Y2hhaW4uZW5kKCk7CisKKyAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhl
IHNjb3BlIGNoYWluCisgIEFTU0VSVChpdGVyICE9IGVuZCk7CisKKyAgUHJvcGVydHlTbG90IHNs
b3Q7CisgIEpTT2JqZWN0ICpzY29wZU9iaiA9ICppdGVyOworCisgIGlmICghc2NvcGVPYmotPmlz
TG9jYWxJbmplY3RlZCgpKSB7CisgICAgLy8gVW5sZXNzIGV2YWwgaW50cm9kdWNlZCBuZXcgdmFy
aWFibGVzIGR5bmFtaWNhbGx5LAorICAgIC8vIHdlIGtub3cgdGhpcyBpc24ndCBpbiB0aGUgdG9w
IHNjb3BlCisgICAgKytpdGVyOworICB9CisKKyAgZG8geworICAgIHNjb3BlT2JqID0gKml0ZXI7
CisKKyAgICBpZiAoc2NvcGVPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkp
CisgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBzY29wZU9iaiwgaWRlbnQpOworCisg
ICAgKytpdGVyOworICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgcmV0dXJuIHRocm93VW5k
ZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7Cit9CisKK1JlZmVyZW5jZSBOb25Mb2Nh
bFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSogZXhlYykgeworICBS
ZWZlcmVuY2UgcmVmKGlkZW50KTsKKyAgcmVmLmZvdW5kID0gdHJ1ZTsKKworICBjb25zdCBTY29w
ZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOworICBTY29wZUNo
YWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7CisgIFNjb3BlQ2hhaW5JdGVyYXRvciBl
bmQgPSBjaGFpbi5lbmQoKTsKKworICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBp
biB0aGUgc2NvcGUgY2hhaW4KKyAgQVNTRVJUKGl0ZXIgIT0gZW5kKTsKKworICBKU09iamVjdCAq
c2NvcGVPYmogPSAqaXRlcjsKKyAgaWYgKCFzY29wZU9iai0+aXNMb2NhbEluamVjdGVkKCkpIHsK
KyAgIC8vIFVubGVzcyBldmFsIGludHJvZHVjZWQgbmV3IHZhcmlhYmxlcyBkeW5hbWljYWxseSwK
KyAgIC8vIHdlIGtub3cgdGhpcyBpc24ndCBpbiB0aGUgdG9wIHNjb3BlCisgICArK2l0ZXI7Cisg
IH0KKworICBkbyB7CisgICAgc2NvcGVPYmogPSAqaXRlcjsKKyAgICByZWYuYmFzZSA9IHNjb3Bl
T2JqOworCisgICAgaWYgKHNjb3BlT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHJl
Zi5wcm9wZXJ0eVNsb3QpKQorICAgICAgcmV0dXJuIHJlZjsKKworICAgICsraXRlcjsKKyAgfSB3
aGlsZSAoaXRlciAhPSBlbmQpOworCisgIHJlZi5iYXNlID0gc2NvcGVPYmo7CisgIHJlZi5mb3Vu
ZCA9IGZhbHNlOworICByZWYucHJvcGVydHlTbG90LnNldFVuZGVmaW5lZChzY29wZU9iaik7IC8v
b3V0ZXJtb3N0IHNjb3BlLgorICByZXR1cm4gcmVmOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gR3JvdXBOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiAvLyBFQ01BIDExLjEuNgpAQCAtNDIxLDYgKzY0MSwxMSBAQCBOb2RlICpHcm91cE5v
ZGU6Om5vZGVJbnNpZGVBbGxQYXJlbnMoKQogICAgIHJldHVybiBuOwogfQogCit2b2lkIEdyb3Vw
Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VW
aXNpdExpbmsodmlzaXRvciwgZ3JvdXApOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRWxlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAvLyBFQ01BIDExLjEuNApAQCAtNDQyLDYgKzY2NywxMiBAQCB2b2lkIEVsZW1lbnROb2RlOjpi
cmVha0N5Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgRWxlbWVudE5vZGU6OnJlY3Vy
c2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZp
c2l0b3IsIG5leHQpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbm9kZSk7Cit9CisK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheU5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMS40CkBAIC00NjYsNiArNjk3
LDExIEBAIEpTVmFsdWUgKkFycmF5Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICoKICAgcmV0dXJu
IGFycmF5OwogfQogCit2b2lkIEFycmF5Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2
aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZWxlbWVudCk7Cit9CisK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPYmplY3RMaXRlcmFsTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMS41CkBAIC00NzcsNiArNzEz
LDExIEBAIEpTVmFsdWUgKk9iamVjdExpdGVyYWxOb2RlOjpldmFsdWF0ZShFeGUKICAgcmV0dXJu
IGV4ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluT2JqZWN0KCktPmNvbnN0cnVjdChl
eGVjLExpc3Q6OmVtcHR5KCkpOwogfQogCit2b2lkIE9iamVjdExpdGVyYWxOb2RlOjpyZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBsaXN0KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3Bl
cnR5TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4x
LjUKQEAgLTUxNCw2ICs3NTUsMTIgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjpicmVha0N5Y2xl
KCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgbm9kZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBuZXh0KTsKK30KKwogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3BlcnR5Tm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogLy8gRUNNQSAxMS4xLjUKIEpTVmFsdWUgKlByb3BlcnR5Tm9kZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlKikKQEAgLTUyMiw2ICs3NjksMTIgQEAgSlNWYWx1ZSAqUHJvcGVy
dHlOb2RlOjpldmFsdWF0ZShFeGVjU3RhdAogICByZXR1cm4ganNOdWxsKCk7CiB9CiAKK3ZvaWQg
UHJvcGVydHlOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAg
cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBuYW1lKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZp
c2l0b3IsIGFzc2lnbik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJv
cGVydHlOYW1lTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEg
MTEuMS41CkBAIC01NTQsNiArODA3LDQyIEBAIEpTVmFsdWUgKkJyYWNrZXRBY2Nlc3Nvck5vZGU6
OmV2YWx1YXRlKEUKICAgcmV0dXJuIG8tPmdldChleGVjLCBJZGVudGlmaWVyKHYyLT50b1N0cmlu
ZyhleGVjKSkpOwogfQogCitSZWZlcmVuY2UgQnJhY2tldEFjY2Vzc29yTm9kZTo6ZXZhbHVhdGVS
ZWZlcmVuY2UoRXhlY1N0YXRlKiBleGVjKQoreworICBSZWZlcmVuY2UgIHJlZjsKKyAgSlNWYWx1
ZSAqdjEgPSBleHByMS0+ZXZhbHVhdGUoZXhlYyk7CisgIEtKU19DSEVDS0VYQ0VQVElPTlJFRkVS
RU5DRQorCisgIEpTVmFsdWUgKnYyID0gZXhwcjItPmV2YWx1YXRlKGV4ZWMpOworICBLSlNfQ0hF
Q0tFWENFUFRJT05SRUZFUkVOQ0UKKworICBKU09iamVjdCAqbyA9IHYxLT50b09iamVjdChleGVj
KTsKKyAgcmVmLmJhc2UgID0gbzsKKyAgcmVmLmZvdW5kID0gdHJ1ZTsgLy9BbHdheXMgZm9yIHRo
ZXNlIHNvcnRzIG9mIHRoaW5ncy4uCisgIAorICAvLyBTcGVjaWFsIGNhc2UgZm9yIGluZGljZXMs
IHRvIGF2b2lkIGNvbnZlcnRpbmcgZG91YmxlLT5zdHJpbmcKKyAgdWludDMyX3QgaTsKKyAgaWYg
KHYyLT5nZXRVSW50MzIoaSkpIHsKKyAgICByZWYuaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKGkp
OworICAgIGlmICghby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGksIHJlZi5wcm9wZXJ0eVNsb3Qp
KQorICAgICAgcmVmLnByb3BlcnR5U2xvdC5zZXRVbmRlZmluZWQobyk7CisgICAgcmV0dXJuIHJl
ZjsKKyAgfQorCisgIC8vT3RoZXJ3aXNlIGRvIGl0IHN5bWJvbGljYWxseS4uCisgIElkZW50aWZp
ZXIgaWRlbnQodjItPnRvU3RyaW5nKGV4ZWMpKTsKKyAgcmVmLmlkZW50ID0gaWRlbnQ7CisgIGlm
ICghby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCByZWYucHJvcGVydHlTbG90KSkKKyAg
ICByZWYucHJvcGVydHlTbG90LnNldFVuZGVmaW5lZChvKTsKKyAgcmV0dXJuIHJlZjsKK30KKwor
dm9pZCBCcmFja2V0QWNjZXNzb3JOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIERvdEFjY2Vzc29yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAvLyBFQ01BIDExLjIuMWIKQEAgLTU2NSw2ICs4NTQsMjkgQEAgSlNWYWx1ZSAqRG90QWNjZXNz
b3JOb2RlOjpldmFsdWF0ZShFeGVjUwogCiB9CiAKK1JlZmVyZW5jZSBEb3RBY2Nlc3Nvck5vZGU6
OmV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgUmVmZXJlbmNlICByZWYo
aWRlbnQpOworICBKU1ZhbHVlICp2ID0gZXhwci0+ZXZhbHVhdGUoZXhlYyk7CisgIEtKU19DSEVD
S0VYQ0VQVElPTlJFRkVSRU5DRQorCisgIEpTT2JqZWN0ICpvID0gdi0+dG9PYmplY3QoZXhlYyk7
CisKKyAgcmVmLmZvdW5kID0gdHJ1ZTsgLy9BbHdheXMgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5n
cy4uCisgIHJlZi5iYXNlICA9IG87CisgIGlmICghby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlk
ZW50LCByZWYucHJvcGVydHlTbG90KSkgeworICAgIC8vQ3VycmVudGx5IHVuZGVmaW5lZCwgbm90
ZSB0aGF0LCBidXQgZG9uJ3QgdHJpZ2dlcgorICAgIC8vYSAibm90IGZvdW5kIiBlcnJvcgorICAg
IHJlZi5wcm9wZXJ0eVNsb3Quc2V0VW5kZWZpbmVkKG8pOworICB9CisgIHJldHVybiByZWY7Cit9
CisKK3ZvaWQgRG90QWNjZXNzb3JOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogSlNWYWx1ZSAqQXJndW1lbnRMaXN0Tm9kZTo6ZXZhbHVhdGUo
RXhlY1N0YXRlICopCkBAIC01OTIsNiArOTA0LDEyIEBAIHZvaWQgQXJndW1lbnRMaXN0Tm9kZTo6
YnJlYWtDeWNsZSgpIAogICAgIG5leHQgPSAwOwogfQogCit2b2lkIEFyZ3VtZW50TGlzdE5vZGU6
OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIG5leHQpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7
Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudHNOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEpTVmFsdWUgKkFyZ3VtZW50c05vZGU6
OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqKQpAQCAtNjAwLDYgKzkxOCwxMSBAQCBKU1ZhbHVlICpBcmd1
bWVudHNOb2RlOjpldmFsdWF0ZShFeGVjU3RhCiAgIHJldHVybiAwOyAvLyBkdW1teSwgc2VlIGV2
YWx1YXRlTGlzdCgpCiB9CiAKK3ZvaWQgQXJndW1lbnRzTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbGlzdCk7
Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdFeHByTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMi4yCkBAIC02Mjcs
NiArOTUwLDIyIEBAIEpTVmFsdWUgKk5ld0V4cHJOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUKICAg
cmV0dXJuIGNvbnN0ci0+Y29uc3RydWN0KGV4ZWMsIGFyZ0xpc3QpOwogfQogCit2b2lkIE5ld0V4
cHJOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IGFyZ3MpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogbm90QW5PYmplY3RNZXNzYWdlKCkKK3sK
KyAgICByZXR1cm4gIlZhbHVlICVzIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgaXMgbm90IGFu
IG9iamVjdC4iOworfQorCitzdGF0aWMgY29uc3QgY2hhciogbm90Q2FsbGFibGVNZXNzYWdlKCkK
K3sKKyAgICByZXR1cm4gIk9iamVjdCAlcyAocmVzdWx0IG9mIGV4cHJlc3Npb24gJXMpIGRvZXMg
bm90IGFsbG93IGNhbGxzLiI7Cit9CisKIC8vIEVDTUEgMTEuMi4zCiBKU1ZhbHVlICpGdW5jdGlv
bkNhbGxWYWx1ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKIHsKQEAgLTYzNCw3MCAr
OTczLDc0IEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZXZhbHVhdGUKICAgS0pT
X0NIRUNLRVhDRVBUSU9OVkFMVUUKIAogICBpZiAoIXYtPmlzT2JqZWN0KCkpIHsKLSAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJWYWx1ZSAlcyAocmVzdWx0IG9mIGV4cHJl
c3Npb24gJXMpIGlzIG5vdCBvYmplY3QuIiwgdiwgZXhwci5nZXQoKSk7CisgICAgcmV0dXJuIHRo
cm93RXJyb3IoZXhlYywgVHlwZUVycm9yLCBub3RBbk9iamVjdE1lc3NhZ2UoKSwgdiwgZXhwci5n
ZXQoKSk7CiAgIH0KICAgCiAgIEpTT2JqZWN0ICpmdW5jID0gc3RhdGljX2Nhc3Q8SlNPYmplY3Qq
Pih2KTsKIAogICBpZiAoIWZ1bmMtPmltcGxlbWVudHNDYWxsKCkpIHsKLSAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJPYmplY3QgJXMgKHJlc3VsdCBvZiBleHByZXNzaW9u
ICVzKSBkb2VzIG5vdCBhbGxvdyBjYWxscy4iLCB2LCBleHByLmdldCgpKTsKKyAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsIG5vdENhbGxhYmxlTWVzc2FnZSgpLCB2LCBleHBy
LmdldCgpKTsKICAgfQogCiAgIExpc3QgYXJnTGlzdCA9IGFyZ3MtPmV2YWx1YXRlTGlzdChleGVj
KTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAotICBKU09iamVjdCAqdGhpc09iaiA9ICBl
eGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCk7CisgIEpTT2JqZWN0ICp0
aGlzT2JqID0gZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpOwogCiAg
IHJldHVybiBmdW5jLT5jYWxsKGV4ZWMsIHRoaXNPYmosIGFyZ0xpc3QpOwogfQogCi0vLyBFQ01B
IDExLjIuMwotSlNWYWx1ZSAqRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZWNT
dGF0ZSAqZXhlYykKK3ZvaWQgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpyZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+
Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hh
aW4uYmVnaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAK
LSAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCi0g
IGFzc2VydChpdGVyICE9IGVuZCk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHBy
KTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFyZ3MpOworfQogCi0gIFByb3BlcnR5
U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7
Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKLSAg
ICAgIEpTVmFsdWUgKnYgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIGlkZW50KTsKLSAgICAg
IEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0gICAgICAgIAotICAgICAgaWYgKCF2LT5pc09iamVj
dCgpKSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgIlZhbHVl
ICVzIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgaXMgbm90IG9iamVjdC4iLCB2LCBpZGVudCk7
Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIEpTT2JqZWN0ICpmdW5jID0gc3RhdGljX2Nhc3Q8SlNP
YmplY3QqPih2KTsKLSAgICAgIAotICAgICAgaWYgKCFmdW5jLT5pbXBsZW1lbnRzQ2FsbCgpKSB7
Ci0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgIk9iamVjdCAlcyAo
cmVzdWx0IG9mIGV4cHJlc3Npb24gJXMpIGRvZXMgbm90IGFsbG93IGNhbGxzLiIsIHYsIGlkZW50
KTsKLSAgICAgIH0KLSAgICAgIAotICAgICAgTGlzdCBhcmdMaXN0ID0gYXJncy0+ZXZhbHVhdGVM
aXN0KGV4ZWMpOwotICAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgICAgICAgCi0gICAg
ICBKU09iamVjdCAqdGhpc09iaiA9IGJhc2U7Ci0gICAgICAvLyBFQ01BIDExLjIuMyBzYXlzIHRo
YXQgaW4gdGhpcyBzaXR1YXRpb24gdGhlIHRoaXMgdmFsdWUgc2hvdWxkIGJlIG51bGwuCi0gICAg
ICAvLyBIb3dldmVyLCBzZWN0aW9uIDEwLjIuMyBzYXlzIHRoYXQgaW4gdGhlIGNhc2Ugd2hlcmUg
dGhlIHZhbHVlIHByb3ZpZGVkCi0gICAgICAvLyBieSB0aGUgY2FsbGVyIGlzIG51bGwsIHRoZSBn
bG9iYWwgb2JqZWN0IHNob3VsZCBiZSB1c2VkLiBJdCBhbHNvIHNheXMKLSAgICAgIC8vIHRoYXQg
dGhlIHNlY3Rpb24gZG9lcyBub3QgYXBwbHkgdG8gaW50ZXJhbCBmdW5jdGlvbnMsIGJ1dCBmb3Ig
c2ltcGxpY2l0eQotICAgICAgLy8gb2YgaW1wbGVtZW50YXRpb24gd2UgdXNlIHRoZSBnbG9iYWwg
b2JqZWN0IGFueXdheSBoZXJlLiBUaGlzIGd1YXJhbnRlZXMKLSAgICAgIC8vIHRoYXQgaW4gaG9z
dCBvYmplY3RzIHlvdSBhbHdheXMgZ2V0IGEgdmFsaWQgb2JqZWN0IGZvciB0aGlzLgotICAgICAg
aWYgKHRoaXNPYmotPmlzQWN0aXZhdGlvbigpKQotICAgICAgICB0aGlzT2JqID0gZXhlYy0+ZHlu
YW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpOworSlNWYWx1ZSAqRnVuY3Rpb25DYWxs
UmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQoreworICAvL0V2YWx1YXRl
IHRoZSBsb2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gZXhwci0+ZXZhbHVhdGVSZWZlcmVuY2Uo
ZXhlYyk7CiAKLSAgICAgIHJldHVybiBmdW5jLT5jYWxsKGV4ZWMsIHRoaXNPYmosIGFyZ0xpc3Qp
OwotICAgIH0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLSAgCi0gIHJl
dHVybiB0aHJvd1VuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAvL2hhbmRs
ZSBlcnJvci4uCisgIGlmICghcmVmLmZvdW5kKQorICAgIHJldHVybiB0aHJvd1VuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgcmVmLmlkZW50KTsKKworICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxV
RQorCisgIEpTVmFsdWUgKnYgPSByZWYucmVhZChleGVjKTsKKyAgS0pTX0NIRUNLRVhDRVBUSU9O
VkFMVUUKKworICBpZiAoIXYtPmlzT2JqZWN0KCkpIHsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBUeXBlRXJyb3IsIG5vdEFuT2JqZWN0TWVzc2FnZSgpLCB2LCBleHByLmdldCgpKTsKKyAg
fQorCisgIEpTT2JqZWN0ICpmdW5jID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KTsKKworICBp
ZiAoIWZ1bmMtPmltcGxlbWVudHNDYWxsKCkpIHsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IsIG5vdENhbGxhYmxlTWVzc2FnZSgpLCB2LCBleHByLmdldCgpKTsKKyAgfQor
CisgIExpc3QgYXJnTGlzdCA9IGFyZ3MtPmV2YWx1YXRlTGlzdChleGVjKTsKKyAgS0pTX0NIRUNL
RVhDRVBUSU9OVkFMVUUKKworICAvLyBFQ01BIDExLjIuMyBzYXlzIHRoYXQgaW4gdGhpcyBzaXR1
YXRpb24gdGhlIHRoaXMgdmFsdWUgc2hvdWxkIGJlIG51bGwuCisgIC8vIEhvd2V2ZXIsIHNlY3Rp
b24gMTAuMi4zIHNheXMgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgdmFsdWUgcHJvdmlkZWQK
KyAgLy8gYnkgdGhlIGNhbGxlciBpcyBudWxsLCB0aGUgZ2xvYmFsIG9iamVjdCBzaG91bGQgYmUg
dXNlZC4gSXQgYWxzbyBzYXlzCisgIC8vIHRoYXQgdGhlIHNlY3Rpb24gZG9lcyBub3QgYXBwbHkg
dG8gaW50ZXJhbCBmdW5jdGlvbnMsIGJ1dCBmb3Igc2ltcGxpY2l0eQorICAvLyBvZiBpbXBsZW1l
bnRhdGlvbiB3ZSB1c2UgdGhlIGdsb2JhbCBvYmplY3QgYW55d2F5IGhlcmUuIFRoaXMgZ3VhcmFu
dGVlcworICAvLyB0aGF0IGluIGhvc3Qgb2JqZWN0cyB5b3UgYWx3YXlzIGdldCBhIHZhbGlkIG9i
amVjdCBmb3IgdGhpcy4KKworICBKU09iamVjdCAqdGhpc09iaiA9IHJlZi5iYXNlOworICBpZiAo
dGhpc09iai0+aXNBY3RpdmF0aW9uKCkpCisgICAgdGhpc09iaiA9IGV4ZWMtPmR5bmFtaWNJbnRl
cnByZXRlcigpLT5nbG9iYWxPYmplY3QoKTsKKworICByZXR1cm4gZnVuYy0+Y2FsbChleGVjLCB0
aGlzT2JqLCBhcmdMaXN0KTsKK30KKwordm9pZCBGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjpy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBleHByKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFyZ3MpOwog
fQogCiAvLyBFQ01BIDExLjIuMwpAQCAtNzQ5LDYgKzEwOTIsMTMgQEAgSlNWYWx1ZSAqRnVuY3Rp
b25DYWxsQnJhY2tldE5vZGU6OmV2YWx1YQogICByZXR1cm4gZnVuYy0+Y2FsbChleGVjLCB0aGlz
T2JqLCBhcmdMaXN0KTsKIH0KIAordm9pZCBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6cmVjdXJz
ZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlz
aXRvciwgYmFzZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdWJzY3JpcHQpOwor
ICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgYXJncyk7Cit9CisKIHN0YXRpYyBjb25zdCBj
aGFyICpkb3RFeHByTm90QW5PYmplY3RTdHJpbmcoKSBLSlNfRkFTVF9DQUxMOwogc3RhdGljIGNv
bnN0IGNoYXIgKmRvdEV4cHJOb3RBbk9iamVjdFN0cmluZygpCiB7CkBAIC03OTEsMTYyICsxMTQx
LDk1IEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmV2YWx1YXRlKEUKICAgcmV0dXJu
IGZ1bmMtPmNhbGwoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7CiB9CiAKLS8vIEVDTUEgMTEuMwot
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeFJlc29sdmVOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1ZSAqUG9zdGZpeFJlc29s
dmVOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCit2b2lkIEZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgY29uc3QgU2NvcGVD
aGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKLSAgU2NvcGVDaGFp
bkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3IgZW5k
ID0gY2hhaW4uZW5kKCk7Ci0gIAotICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBp
biB0aGUgc2NvcGUgY2hhaW4KLSAgYXNzZXJ0KGl0ZXIgIT0gZW5kKTsKLQotICBQcm9wZXJ0eVNs
b3Qgc2xvdDsKLSAgSlNPYmplY3QgKmJhc2U7Ci0gIGRvIHsgCi0gICAgYmFzZSA9ICppdGVyOwot
ICAgIGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgbV9pZGVudCwgc2xvdCkpIHsKLSAg
ICAgICAgSlNWYWx1ZSAqdiA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwgbV9pZGVudCk7Ci0K
LSAgICAgICAgZG91YmxlIG4gPSB2LT50b051bWJlcihleGVjKTsKLSAgICAgICAgCi0gICAgICAg
IGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAx
OwotICAgICAgICBiYXNlLT5wdXQoZXhlYywgbV9pZGVudCwganNOdW1iZXIobmV3VmFsdWUpKTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiBqc051bWJlcihuKTsKLSAgICB9Ci0KLSAgICArK2l0
ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLQotICByZXR1cm4gdGhyb3dVbmRlZmluZWRW
YXJpYWJsZUVycm9yKGV4ZWMsIG1faWRlbnQpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgYmFzZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBhcmdzKTsKIH0KIAotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3RmaXhCcmFja2V0Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlBvc3RmaXhCcmFja2V0Tm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQotewotICBKU1ZhbHVlICpiYXNlVmFsdWUgPSBt
X2Jhc2UtPmV2YWx1YXRlKGV4ZWMpOwotICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotICBKU1Zh
bHVlICpzdWJzY3JpcHQgPSBtX3N1YnNjcmlwdC0+ZXZhbHVhdGUoZXhlYyk7Ci0gIEtKU19DSEVD
S0VYQ0VQVElPTlZBTFVFCisvLyBFQ01BIDExLjMKIAotICBKU09iamVjdCAqYmFzZSA9IGJhc2VW
YWx1ZS0+dG9PYmplY3QoZXhlYyk7CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
UG9zdGZpeE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gIHVpbnQz
Ml90IHByb3BlcnR5SW5kZXg7Ci0gIGlmIChzdWJzY3JpcHQtPmdldFVJbnQzMihwcm9wZXJ0eUlu
ZGV4KSkgewotICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgIEpTVmFsdWUgKnYgPSBiYXNlLT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlJbmRleCwgc2xvdCkgPyBzbG90LmdldFZhbHVl
KGV4ZWMsIGJhc2UsIHByb3BlcnR5SW5kZXgpIDoganNVbmRlZmluZWQoKTsKLSAgICBLSlNfQ0hF
Q0tFWENFUFRJT05WQUxVRQorY2xhc3MgTG9jYWxQb3N0Zml4Tm9kZSA6IHB1YmxpYyBQb3N0Zml4
Tm9kZQoreworcHVibGljOgorICBMb2NhbFBvc3RmaXhOb2RlKExvY2F0aW9uTm9kZSAqbCwgT3Bl
cmF0b3IgbywgaW50IGlkeCkgIEtKU19GQVNUX0NBTEwgOiBQb3N0Zml4Tm9kZShsLCBvKSwgaW5k
ZXgoaWR4KSB7fQogCisgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgIEtKU19G
QVNUX0NBTEwgeworICAgIEFjdGl2YXRpb25JbXAqIHNjb3BlID0gc3RhdGljX2Nhc3Q8QWN0aXZh
dGlvbkltcCo+KGV4ZWMtPmNvbnRleHQoKS0+YWN0aXZhdGlvbk9iamVjdCgpKTsKKyAgICBKU1Zh
bHVlKiB2ID0gKnNjb3BlLT5nZXRMb2NhbERpcmVjdChpbmRleCk7CiAgICAgZG91YmxlIG4gPSB2
LT50b051bWJlcihleGVjKTsKLQogICAgIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQ
bHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwotICAgIGJhc2UtPnB1dChleGVjLCBwcm9wZXJ0eUlu
ZGV4LCBqc051bWJlcihuZXdWYWx1ZSkpOwotICAgICAgICAKKyAgICBzY29wZS0+cHV0TG9jYWxD
aGVja2VkKGluZGV4LCBqc051bWJlcihuZXdWYWx1ZSkpOwogICAgIHJldHVybiBqc051bWJlcihu
KTsKICAgfQorcHJpdmF0ZToKKyAgaW50IGluZGV4OworfTsKIAotICBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZShzdWJzY3JpcHQtPnRvU3RyaW5nKGV4ZWMpKTsKLSAgUHJvcGVydHlTbG90IHNsb3Q7
Ci0gIEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1l
LCBzbG90KSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwgcHJvcGVydHlOYW1lKSA6IGpzVW5k
ZWZpbmVkKCk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0KLSAgZG91YmxlIG4gPSB2LT50
b051bWJlcihleGVjKTsKLSAgCi0gIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVz
UGx1cykgPyBuICsgMSA6IG4gLSAxOwotICBiYXNlLT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCBq
c051bWJlcihuZXdWYWx1ZSkpOwotICAgICAgICAKLSAgcmV0dXJuIGpzTnVtYmVyKG4pOwotfQot
Ci0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeERvdE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlICpQb3N0Zml4RG90Tm9kZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSogUG9zdGZpeE5vZGU6OmV2YWx1YXRl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFzZVZhbHVlID0gbV9iYXNlLT5ldmFs
dWF0ZShleGVjKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgSlNPYmplY3QgKmJhc2Ug
PSBiYXNlVmFsdWUtPnRvT2JqZWN0KGV4ZWMpOworICAvL0V2YWx1YXRlIHRoZSBsb2NhdGlvbgor
ICBSZWZlcmVuY2UgcmVmID0gbV9sb2MtPmV2YWx1YXRlUmVmZXJlbmNlKGV4ZWMpOworCisgIC8v
aGFuZGxlIGVycm9yLi4KKyAgaWYgKCFyZWYuZm91bmQpCisgICAgcmV0dXJuIHRocm93VW5kZWZp
bmVkVmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRlbnQpOwogCi0gIFByb3BlcnR5U2xvdCBzbG90
OwotICBKU1ZhbHVlICp2ID0gYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQsIHNs
b3QpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KSA6IGpzVW5kZWZpbmVkKCk7
CiAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAKKyAgLy9kbyB0aGUgb3AKKyAgSlNWYWx1ZSAq
diA9IHJlZi5yZWFkKGV4ZWMpOwogICBkb3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMpOwotICAK
ICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAxIDogbiAt
IDE7Ci0gIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCBqc051bWJlcihuZXdWYWx1ZSkpOwotICAg
ICAgICAKKyAgcmVmLndyaXRlKGV4ZWMsIGpzTnVtYmVyKG5ld1ZhbHVlKSk7CiAgIHJldHVybiBq
c051bWJlcihuKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3Rm
aXhFcnJvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1
ZSogUG9zdGZpeEVycm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQordm9pZCBQb3N0
Zml4Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICAgIHRocm93
RXJyb3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJQb3N0Zml4ICVzIG9wZXJhdG9yIGFwcGxpZWQg
dG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIiwKLSAgICAgICAgbV9vcGVyID09IE9w
UGx1c1BsdXMgPyAiKysiIDogIi0tIik7Ci0gICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOwotICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgTm9kZTo6cmVjdXJzZVZpc2l0TGluayh2aXNpdG9y
LCBtX2xvYyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVS
ZXNvbHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBFQ01B
IDExLjQuMQotCi1KU1ZhbHVlICpEZWxldGVSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRl
ICpleGVjKQorTm9kZSogUG9zdGZpeE5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRl
ICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKQogewotICBjb25zdCBTY29wZUNoYWluJiBj
aGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOwotICBTY29wZUNoYWluSXRlcmF0
b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFp
bi5lbmQoKTsKLSAgCi0gIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBz
Y29wZSBjaGFpbgotICBhc3NlcnQoaXRlciAhPSBlbmQpOwotCi0gIFByb3BlcnR5U2xvdCBzbG90
OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYg
KGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50LCBzbG90KSkgewotICAgICAgICBy
ZXR1cm4ganNCb29sZWFuKGJhc2UtPmRlbGV0ZVByb3BlcnR5KGV4ZWMsIG1faWRlbnQpKTsKLSAg
ICB9Ci0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLQotICByZXR1cm4g
anNCb29sZWFuKHRydWUpOworICBpZiAobV9sb2MtPmlzVmFyQWNjZXNzTm9kZSgpKSB7CisgICAg
VmFyQWNjZXNzTm9kZSogaWRlbnQgPSBzdGF0aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9sb2Mu
Z2V0KCkpOworICAgIGludCBpZCA9IGlkZW50LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChpZCAh
PSAtMSkKKyAgICAgIHJldHVybiBuZXcgTG9jYWxQb3N0Zml4Tm9kZShtX2xvYy5nZXQoKSwgbV9v
cGVyLCBpZCk7CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBEZWxldGVCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorSlNWYWx1ZSogUG9zdGZpeEVycm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBl
eGVjKSAKK3sgCisgICAgdGhyb3dFcnJvcihleGVjLCBSZWZlcmVuY2VFcnJvciwgIlBvc3RmaXgg
JXMgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iLCAK
KwkgICAgICAgbV9vcGVyID09IE9wUGx1c1BsdXMgPyAiKysiIDogIi0tIik7IAorICAgIGhhbmRs
ZUV4Y2VwdGlvbihleGVjKTsgCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IAorfSAKKworLy8g
RUNNQSAxMS40LjEKIAotSlNWYWx1ZSAqRGVsZXRlQnJhY2tldE5vZGU6OmV2YWx1YXRlKEV4ZWNT
dGF0ZSAqZXhlYykKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVSZWZl
cmVuY2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0pTVmFsdWUqIERlbGV0
ZVJlZmVyZW5jZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgSlNWYWx1ZSAq
YmFzZVZhbHVlID0gbV9iYXNlLT5ldmFsdWF0ZShleGVjKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9O
VkFMVUUKLSAgSlNWYWx1ZSAqc3Vic2NyaXB0ID0gbV9zdWJzY3JpcHQtPmV2YWx1YXRlKGV4ZWMp
OworICAvL0V2YWx1YXRlIHRoZSBsb2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gbG9jLT5ldmFs
dWF0ZVJlZmVyZW5jZShleGVjKTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAotICBKU09i
amVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7Ci0KLSAgdWludDMyX3QgcHJv
cGVydHlJbmRleDsKLSAgaWYgKHN1YnNjcmlwdC0+Z2V0VUludDMyKHByb3BlcnR5SW5kZXgpKQot
ICAgICAgcmV0dXJuIGpzQm9vbGVhbihiYXNlLT5kZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0
eUluZGV4KSk7Ci0KLSAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoc3Vic2NyaXB0LT50b1N0cmlu
ZyhleGVjKSk7Ci0gIHJldHVybiBqc0Jvb2xlYW4oYmFzZS0+ZGVsZXRlUHJvcGVydHkoZXhlYywg
cHJvcGVydHlOYW1lKSk7CisgIC8vaGFuZGxlIGVycm9yLi4KKyAgaWYgKCFyZWYuZm91bmQpCisg
ICAgcmV0dXJuIGpzQm9vbGVhbih0cnVlKTsKKyAgZWxzZQorICAgIHJldHVybiBqc0Jvb2xlYW4o
cmVmLmRlbGV0ZVByb3BlcnR5KGV4ZWMpKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIERlbGV0ZURvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUpTVmFsdWUgKkRlbGV0ZURvdE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3Zv
aWQgRGVsZXRlUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KQogewotICBKU1ZhbHVlICpiYXNlVmFsdWUgPSBtX2Jhc2UtPmV2YWx1YXRlKGV4ZWMpOwotICBK
U09iamVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7Ci0gIEtKU19DSEVDS0VY
Q0VQVElPTlZBTFVFCi0KLSAgcmV0dXJuIGpzQm9vbGVhbihiYXNlLT5kZWxldGVQcm9wZXJ0eShl
eGVjLCBtX2lkZW50KSk7CisgICBOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGxvYyk7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVWYWx1ZU5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk1OSw2ICsxMjQyLDExIEBA
IEpTVmFsdWUgKkRlbGV0ZVZhbHVlTm9kZTo6ZXZhbHVhdGUoRXhlY1MKICAgcmV0dXJuIGpzQm9v
bGVhbih0cnVlKTsKIH0KIAordm9pZCBEZWxldGVWYWx1ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2Rl
VmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2V4cHIp
OworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVm9pZE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjQuMgpAQCAtOTcw
LDExICsxMjU4LDE1IEBAIEpTVmFsdWUgKlZvaWROb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmUK
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK3ZvaWQgVm9pZE5vZGU6OnJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBl
eHByKTsKK30KKwogLy8gRUNNQSAxMS40LjMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1zdGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZhbHVlKEpTVmFsdWUgKnYpIEtKU19G
QVNUX0NBTEw7CiBzdGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZhbHVlKEpTVmFsdWUgKnYp
CiB7CiAgICAgc3dpdGNoICh2LT50eXBlKCkpIHsKQEAgLTEwMDIsMTQ0ICsxMjk0LDEwMSBAQCBz
dGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZhbHVlKEpTVmFsCiAgICAgfQogfQogCi1KU1Zh
bHVlICpUeXBlT2ZSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1
ZSogVHlwZU9mUmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogewotICBj
b25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOwot
ICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7Ci0gIFNjb3BlQ2hhaW5J
dGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKLSAgCi0gIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUg
c29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgotICBhc3NlcnQoaXRlciAhPSBlbmQpOwotCi0g
IFByb3BlcnR5U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNl
ID0gKml0ZXI7Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50LCBz
bG90KSkgewotICAgICAgICBKU1ZhbHVlICp2ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBt
X2lkZW50KTsKLSAgICAgICAgcmV0dXJuIHR5cGVTdHJpbmdGb3JWYWx1ZSh2KTsKLSAgICB9Ci0K
LSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLQotICByZXR1cm4ganNTdHJp
bmcoInVuZGVmaW5lZCIpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
VHlwZU9mVmFsdWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpT
VmFsdWUgKlR5cGVPZlZhbHVlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQotewotICBK
U1ZhbHVlICp2ID0gbV9leHByLT5ldmFsdWF0ZShleGVjKTsKKyAgLy9FdmFsdWF0ZSB0aGUgbG9j
YXRpb24KKyAgUmVmZXJlbmNlIHJlZiA9IGxvYy0+ZXZhbHVhdGVSZWZlcmVuY2UoZXhlYyk7CiAg
IEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAKLSAgcmV0dXJuIHR5cGVTdHJpbmdGb3JWYWx1ZSh2
KTsKLX0KLQotLy8gRUNNQSAxMS40LjQgYW5kIDExLjQuNQotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gUHJlZml4UmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1KU1ZhbHVlICpQcmVmaXhSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0
YXRlICpleGVjKQotewotICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQo
KS0+c2NvcGVDaGFpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2lu
KCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKLSAgCi0gIC8vIHdl
IG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgotICBhc3NlcnQo
aXRlciAhPSBlbmQpOwotCi0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsK
LSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xv
dChleGVjLCBtX2lkZW50LCBzbG90KSkgewotICAgICAgICBKU1ZhbHVlICp2ID0gc2xvdC5nZXRW
YWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KTsKLQotICAgICAgICBkb3VibGUgbiA9IHYtPnRvTnVt
YmVyKGV4ZWMpOwotICAgICAgICAKLSAgICAgICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9
PSBPcFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7Ci0gICAgICAgIEpTVmFsdWUgKm4yID0ganNO
dW1iZXIobmV3VmFsdWUpOwotICAgICAgICBiYXNlLT5wdXQoZXhlYywgbV9pZGVudCwgbjIpOwot
Ci0gICAgICAgIHJldHVybiBuMjsKLSAgICB9Ci0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0
ZXIgIT0gZW5kKTsKKyAgLy9oYW5kbGUgZXJyb3IuLgorICBpZiAoIXJlZi5mb3VuZCkKKyAgICBy
ZXR1cm4ganNTdHJpbmcoInVuZGVmaW5lZCIpOworICBlbHNlCisgICAgcmV0dXJuIHR5cGVTdHJp
bmdGb3JWYWx1ZShyZWYucmVhZChleGVjKSk7Cit9CiAKLSAgcmV0dXJuIHRocm93VW5kZWZpbmVk
VmFyaWFibGVFcnJvcihleGVjLCBtX2lkZW50KTsKK3ZvaWQgVHlwZU9mUmVmZXJlbmNlTm9kZTo6
cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgTm9kZTo6cmVjdXJzZVZp
c2l0TGluayh2aXNpdG9yLCBsb2MpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gUHJlZml4QnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1KU1ZhbHVlICpQcmVmaXhCcmFja2V0
Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSAqVHlwZU9mVmFsdWVOb2Rl
OjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCiB7Ci0gIEpTVmFsdWUgKmJhc2VWYWx1ZSA9IG1f
YmFzZS0+ZXZhbHVhdGUoZXhlYyk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0gIEpTVmFs
dWUgKnN1YnNjcmlwdCA9IG1fc3Vic2NyaXB0LT5ldmFsdWF0ZShleGVjKTsKKyAgSlNWYWx1ZSAq
diA9IG1fZXhwci0+ZXZhbHVhdGUoZXhlYyk7CiAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAK
LSAgSlNPYmplY3QgKmJhc2UgPSBiYXNlVmFsdWUtPnRvT2JqZWN0KGV4ZWMpOworICByZXR1cm4g
dHlwZVN0cmluZ0ZvclZhbHVlKHYpOworfQogCi0gIHVpbnQzMl90IHByb3BlcnR5SW5kZXg7Ci0g
IGlmIChzdWJzY3JpcHQtPmdldFVJbnQzMihwcm9wZXJ0eUluZGV4KSkgewotICAgIFByb3BlcnR5
U2xvdCBzbG90OwotICAgIEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
cHJvcGVydHlJbmRleCwgc2xvdCkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIHByb3BlcnR5
SW5kZXgpIDoganNVbmRlZmluZWQoKTsKLSAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQordm9p
ZCBUeXBlT2ZWYWx1ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sK
KyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2V4cHIpOworfQogCi0gICAgZG91YmxlIG4g
PSB2LT50b051bWJlcihleGVjKTsKKy8vIEVDTUEgMTEuNC40IGFuZCAxMS40LjUKKworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByZWZpeE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitjbGFzcyBMb2NhbFByZWZpeE5vZGUgOiBwdWJsaWMg
UHJlZml4Tm9kZQoreworcHVibGljOgorICBMb2NhbFByZWZpeE5vZGUoTG9jYXRpb25Ob2RlICps
LCBPcGVyYXRvciBvLCBpbnQgaWR4KSBLSlNfRkFTVF9DQUxMIDogUHJlZml4Tm9kZShsLCBvKSwg
aW5kZXgoaWR4KSB7fQorCisgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgS0pT
X0ZBU1RfQ0FMTCB7CisgICAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3Rp
dmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworICAgIEpT
VmFsdWUqIHYgPSAqc2NvcGUtPmdldExvY2FsRGlyZWN0KGluZGV4KTsKKyAgICBkb3VibGUgbiA9
IHYtPnRvTnVtYmVyKGV4ZWMpOwogICAgIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQ
bHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwogICAgIEpTVmFsdWUgKm4yID0ganNOdW1iZXIobmV3
VmFsdWUpOwotICAgIGJhc2UtPnB1dChleGVjLCBwcm9wZXJ0eUluZGV4LCBuMik7Ci0KKyAgICBz
Y29wZS0+cHV0TG9jYWxDaGVja2VkKGluZGV4LCBuMik7CiAgICAgcmV0dXJuIG4yOwogICB9Citw
cml2YXRlOgorICBpbnQgaW5kZXg7Cit9OwogCi0gIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKHN1
YnNjcmlwdC0+dG9TdHJpbmcoZXhlYykpOwotICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgSlNWYWx1
ZSAqdiA9IGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpID8g
c2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBwcm9wZXJ0eU5hbWUpIDoganNVbmRlZmluZWQoKTsK
LSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLQotICBkb3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4
ZWMpOwotICAKLSAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVzKSA/IG4g
KyAxIDogbiAtIDE7Ci0gIEpTVmFsdWUgKm4yID0ganNOdW1iZXIobmV3VmFsdWUpOwotICBiYXNl
LT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCBuMik7Ci0KLSAgcmV0dXJuIG4yOwotfQotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJlZml4RG90Tm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlByZWZpeERvdE5vZGU6OmV2YWx1YXRl
KEV4ZWNTdGF0ZSAqZXhlYykKK0pTVmFsdWUqIFByZWZpeE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFzZVZhbHVlID0gbV9iYXNlLT5ldmFsdWF0ZShleGVj
KTsKKyAgLy9FdmFsdWF0ZSB0aGUgbG9jYXRpb24KKyAgUmVmZXJlbmNlIHJlZiA9IG1fbG9jLT5l
dmFsdWF0ZVJlZmVyZW5jZShleGVjKTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgSlNP
YmplY3QgKmJhc2UgPSBiYXNlVmFsdWUtPnRvT2JqZWN0KGV4ZWMpOwogCi0gIFByb3BlcnR5U2xv
dCBzbG90OwotICBKU1ZhbHVlICp2ID0gYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRl
bnQsIHNsb3QpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KSA6IGpzVW5kZWZp
bmVkKCk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCisgIC8vaGFuZGxlIGVycm9yLi4KKyAg
aWYgKCFyZWYuZm91bmQpCisgICAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihl
eGVjLCByZWYuaWRlbnQpOwogCisgIEpTVmFsdWUgKnYgPSByZWYucmVhZChleGVjKTsKICAgZG91
YmxlIG4gPSB2LT50b051bWJlcihleGVjKTsKLSAgCiAgIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29w
ZXIgPT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwogICBKU1ZhbHVlICpuMiA9IGpzTnVt
YmVyKG5ld1ZhbHVlKTsKLSAgYmFzZS0+cHV0KGV4ZWMsIG1faWRlbnQsIG4yKTsKLQorICByZWYu
d3JpdGUoZXhlYywgbjIpOwogICByZXR1cm4gbjI7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBQcmVmaXhFcnJvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK3ZvaWQgUHJlZml4Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKQoreworICAgTm9kZTo6cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2xvYyk7Cit9CiAK
LUpTVmFsdWUqIFByZWZpeEVycm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQorTm9k
ZSogUHJlZml4Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0
aW9uQm9keU5vZGUqIG5vZGUpCiB7Ci0gICAgdGhyb3dFcnJvcihleGVjLCBSZWZlcmVuY2VFcnJv
ciwgIlByZWZpeCAlcyBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVm
ZXJlbmNlLiIsCi0gICAgICAgIG1fb3BlciA9PSBPcFBsdXNQbHVzID8gIisrIiA6ICItLSIpOwor
ICBpZiAobV9sb2MtPmlzVmFyQWNjZXNzTm9kZSgpKSB7CisgICAgVmFyQWNjZXNzTm9kZSogaWRl
bnQgPSBzdGF0aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9sb2MuZ2V0KCkpOworICAgIGludCBp
ZCA9IGlkZW50LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChpZCAhPSAtMSkKKyAgICAgIHJldHVy
biBuZXcgTG9jYWxQcmVmaXhOb2RlKG1fbG9jLmdldCgpLCBtX29wZXIsIGlkKTsKKyAgfQorICBy
ZXR1cm4gMDsKK30KKworSlNWYWx1ZSogUHJlZml4RXJyb3JOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUqIGV4ZWMpIAoreyAKKyAgICB0aHJvd0Vycm9yKGV4ZWMsIFJlZmVyZW5jZUVycm9yLCAiUHJl
Zml4ICVzIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2Uu
IiwgCisgICAgICAgIG1fb3BlciA9PSBPcFBsdXNQbHVzID8gIisrIiA6ICItLSIpOyAKICAgICBo
YW5kbGVFeGNlcHRpb24oZXhlYyk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7IAogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gVW5hcnlQbHVzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE1
Myw2ICsxNDAyLDExIEBAIEpTVmFsdWUgKlVuYXJ5UGx1c05vZGU6OmV2YWx1YXRlKEV4ZWNTdGEK
ICAgcmV0dXJuIGpzTnVtYmVyKHYtPnRvTnVtYmVyKGV4ZWMpKTsKIH0KIAordm9pZCBVbmFyeVBs
dXNOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VW
aXNpdExpbmsodmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBOZWdhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IC8vIEVDTUEgMTEuNC43CkBAIC0xMTY1LDYgKzE0MTksMTEgQEAgSlNWYWx1ZSAqTmVnYXRlTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlIAogICByZXR1cm4ganNOdW1iZXIoLW4pOwogfQogCit2b2lk
IE5lZ2F0ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEJpdHdpc2VOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogLy8gRUNNQSAxMS40LjgKQEAgLTExNzUsNiArMTQzNCwxMSBAQCBKU1ZhbHVlICpCaXR3
aXNlTm90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0CiAgIHJldHVybiBqc051bWJlcih+di0+dG9JbnQz
MihleGVjKSk7CiB9CiAKK3ZvaWQgQml0d2lzZU5vdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlz
aXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30K
KwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvZ2ljYWxOb3ROb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS40LjkKQEAgLTExODUsNiAr
MTQ0OSwxMSBAQCBKU1ZhbHVlICpMb2dpY2FsTm90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0CiAgIHJl
dHVybiBqc0Jvb2xlYW4oIXYtPnRvQm9vbGVhbihleGVjKSk7CiB9CiAKK3ZvaWQgTG9naWNhbE5v
dE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZp
c2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIE11bHROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
Ly8gRUNNQSAxMS41CkBAIC0xMTk5LDYgKzE0NjgsMTIgQEAgSlNWYWx1ZSAqTXVsdE5vZGU6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSAqZQogICByZXR1cm4gbXVsdChleGVjLCB2MSwgdjIsIG9wZXIpOwog
fQogCit2b2lkIE11bHROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdGVybTEpOworICByZWN1cnNlVmlzaXRMaW5r
KHZpc2l0b3IsIHRlcm0yKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEFkZE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNN
QSAxMS42CkBAIC0xMjEzLDYgKzE0ODgsMTIgQEAgSlNWYWx1ZSAqQWRkTm9kZTo6ZXZhbHVhdGUo
RXhlY1N0YXRlICpleAogICByZXR1cm4gYWRkKGV4ZWMsIHYxLCB2Miwgb3Blcik7CiB9CiAKK3Zv
aWQgQWRkTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRlcm0xKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9y
LCB0ZXJtMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTaGlmdE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuNwpA
QCAtMTIzOCw2ICsxNTE5LDEyIEBAIEpTVmFsdWUgKlNoaWZ0Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0
YXRlICoKICAgfQogfQogCit2b2lkIFNoaWZ0Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRlcm0xKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCB0ZXJtMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBSZWxhdGlvbmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIC8vIEVDTUEgMTEuOApAQCAtMTI4Niw2ICsxNTczLDEyIEBAIEpTVmFsdWUgKlJlbGF0
aW9uYWxOb2RlOjpldmFsdWF0ZShFeGVjU3QKICAgcmV0dXJuIGpzQm9vbGVhbihiKTsKIH0KIAor
dm9pZCBSZWxhdGlvbmFsTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQor
eworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIxKTsKKyAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBleHByMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBFcXVhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVD
TUEgMTEuOQpAQCAtMTMwOSw2ICsxNjAyLDEyIEBAIEpTVmFsdWUgKkVxdWFsTm9kZTo6ZXZhbHVh
dGUoRXhlY1N0YXRlICoKICAgcmV0dXJuIGpzQm9vbGVhbihyZXN1bHQpOwogfQogCit2b2lkIEVx
dWFsTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNl
VmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIxKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBl
eHByMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCaXRPcGVyTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMTAKQEAg
LTEzMzEsNiArMTYzMCwxMiBAQCBKU1ZhbHVlICpCaXRPcGVyTm9kZTo6ZXZhbHVhdGUoRXhlY1N0
YXRlCiAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCit2b2lkIEJpdE9wZXJOb2RlOjpy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30K
KwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpbmFyeUxvZ2ljYWxOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xMQpAQCAtMTM0OCw2ICsx
NjUzLDEyIEBAIEpTVmFsdWUgKkJpbmFyeUxvZ2ljYWxOb2RlOjpldmFsdWF0ZShFeGUKICAgcmV0
dXJuIHYyOwogfQogCit2b2lkIEJpbmFyeUxvZ2ljYWxOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOwor
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIENvbmRpdGlvbmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xMgpAQCAtMTQzMiwzNyArMTc0Myw0OSBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSBKU1ZhbHVlICp2YWx1ZUZvclJlCiAgIHJldHVybiB2OwogfQogCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduUmVzb2x2ZU5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1ZSAqQXNzaWduUmVzb2x2ZU5vZGU6
OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgQ29uZGl0aW9uYWxOb2RlOjpyZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWlu
ID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBp
dGVyID0gY2hhaW4uYmVnaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVu
ZCgpOwotICAKLSAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3Bl
IGNoYWluCi0gIGFzc2VydChpdGVyICE9IGVuZCk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgbG9naWNhbCk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KIAotICBQcm9wZXJ0eVNsb3Qgc2xvdDsK
LSAgSlNPYmplY3QgKmJhc2U7Ci0gIGRvIHsgCi0gICAgYmFzZSA9ICppdGVyOwotICAgIGlmIChi
YXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgbV9pZGVudCwgc2xvdCkpCi0gICAgICBnb3RvIGZv
dW5kOworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbk5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICsraXRlcjsKLSAgfSB3aGlsZSAo
aXRlciAhPSBlbmQpOworLy8gQW4gc3BlY2lhbCB2ZXJzaW9uIHdoZXJlIExIUyBpcyBhbHdheXMg
bG9jYWwgYW5kIHdoZXJlIG5vIAorLy8gcmVhZC1tb2RpZnktd3JpdGUgaXMgcG9zc2libGUuCitj
bGFzcyBMb2NhbEFzc2lnbk5vZGUgOiBwdWJsaWMgQXNzaWduTm9kZSB7CitwdWJsaWM6CisgIExv
Y2FsQXNzaWduTm9kZShMb2NhdGlvbk5vZGUqIGxvYywgTm9kZSAqcmlnaHQsIGludCBpZHgpICBL
SlNfRkFTVF9DQUxMIDogCisgICAgICBBc3NpZ25Ob2RlKGxvYywgT3BFcXVhbCwgcmlnaHQpLCBp
bmRleChpZHgpIHt9CiAKLSAgaWYgKG1fb3BlciAhPSBPcEVxdWFsKQotICAgIHJldHVybiB0aHJv
d1VuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgbV9pZGVudCk7CisgIEpTVmFsdWUqIGV2YWx1
YXRlKEV4ZWNTdGF0ZSogZXhlYykgIEtKU19GQVNUX0NBTEwgeworICAgIEFjdGl2YXRpb25JbXAq
IHNjb3BlID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPmNvbnRleHQoKS0+YWN0
aXZhdGlvbk9iamVjdCgpKTsKKyAgICBKU1ZhbHVlICp2ID0gbV9yaWdodC0+ZXZhbHVhdGUoZXhl
Yyk7CisgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKyAgICBzY29wZS0+cHV0TG9jYWxDaGVj
a2VkKGluZGV4LCB2KTsKKyAgICByZXR1cm4gdjsKKyAgfQorcHJpdmF0ZToKKyAgaW50IGluZGV4
OworfTsKKworSlNWYWx1ZSogQXNzaWduTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKSB7
CisgIFJlZmVyZW5jZSByZWYgPSBtX2xvYy0+ZXZhbHVhdGVSZWZlcmVuY2UoZXhlYyk7CisKKyAg
S0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKKworICAvL0xvb2t1cCBmYWlsdXJlIGlzIE9LIGZvciBh
c3NpZ25tZW50cywgYnV0IG5vdCAKKyAgLy9yZWFkLW1vZGlmeS13cml0ZSBvcHMsIGUuZy4gKz0K
KyAgaWYgKCFyZWYuZm91bmQgJiYgbV9vcGVyICE9IE9wRXF1YWwpCisgICAgcmV0dXJuIHRocm93
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRlbnQpOwogCi0gZm91bmQ6CiAgIEpT
VmFsdWUgKnY7CiAKICAgaWYgKG1fb3BlciA9PSBPcEVxdWFsKSB7CiAgICAgdiA9IG1fcmlnaHQt
PmV2YWx1YXRlKGV4ZWMpOwogICB9IGVsc2UgewotICAgIEpTVmFsdWUgKnYxID0gc2xvdC5nZXRW
YWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KTsKKyAgICBKU1ZhbHVlICp2MSA9IHJlZi5yZWFkKGV4
ZWMpOwogICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAgICAgSlNWYWx1ZSAqdjIgPSBtX3Jp
Z2h0LT5ldmFsdWF0ZShleGVjKTsKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVu
dChleGVjLCB2MSwgdjIsIG1fb3Blcik7CkBAIC0xNDcwLDEwICsxNzkzLDI4IEBAIEpTVmFsdWUg
KkFzc2lnblJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGUKIAogICBLSlNfQ0hFQ0tFWENFUFRJT05W
QUxVRQogCi0gIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCB2KTsKKyAgcmVmLndyaXRlKGV4ZWMs
IHYpOwogICByZXR1cm4gdjsKIH0KIAordm9pZCBBc3NpZ25Ob2RlOjpyZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICBOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IG1fbG9jKTsKKyAgIE5vZGU6OnJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9yaWdodCk7Cit9
CisKK05vZGUqIEFzc2lnbk5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVj
LCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKQoreworICBpZiAobV9sb2MtPmlzVmFyQWNjZXNzTm9k
ZSgpICYmIG1fb3BlciA9PSBPcEVxdWFsKSB7CisgICAgVmFyQWNjZXNzTm9kZSogaWRlbnQgPSBz
dGF0aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9sb2MuZ2V0KCkpOworICAgIGludCBpZCA9IGlk
ZW50LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChpZCAhPSAtMSkgeworICAgICAgICByZXR1cm4g
bmV3IExvY2FsQXNzaWduTm9kZShtX2xvYy5nZXQoKSwgbV9yaWdodC5nZXQoKSwgaWQpOworICAg
IH0KKyAgfQorICByZXR1cm4gMDsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEFzc2lnbkRvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
SlNWYWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQpAQCAtMTQ5
Miw2ICsxODMzLDggQEAgSlNWYWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YQog
ICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAgICAgSlNWYWx1ZSAqdjIgPSBtX3JpZ2h0LT5l
dmFsdWF0ZShleGVjKTsKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVudChleGVj
LCB2MSwgdjIsIG1fb3Blcik7CisKKyAgICAvLyMjIyBjYW4gZG8gZGlyZWN0IHdyaXRlIGhlcmUu
LgogICB9CiAKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKQEAgLTE1MDAsMTMgKzE4NDMsMTAg
QEAgSlNWYWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YQogICByZXR1cm4gdjsK
IH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlKiBBc3NpZ25FcnJv
ck5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgQXNzaWduRG90Tm9kZTo6cmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICAgIHRocm93RXJyb3IoZXhlYywg
UmVmZXJlbmNlRXJyb3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVu
Y2UuIik7Ci0gICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOwotICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fYmFzZSk7CisgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgbV9yaWdodCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBBc3NpZ25CcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMTUzMSw2ICsxODcxLDggQEAgSlNWYWx1ZSAqQXNzaWduQnJhY2tldE5vZGU6OmV2
YWx1YXRlKEV4ZQogICAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKICAgICAgIEpTVmFsdWUg
KnYyID0gbV9yaWdodC0+ZXZhbHVhdGUoZXhlYyk7CiAgICAgICB2ID0gdmFsdWVGb3JSZWFkTW9k
aWZ5QXNzaWdubWVudChleGVjLCB2MSwgdjIsIG1fb3Blcik7CisKKyAgICAgIC8vIyMjIGNhbiBk
byBkaXJlY3Qgd3JpdGUgaGVyZS4uCiAgICAgfQogCiAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFM
VUUKQEAgLTE1NTAsNiArMTg5Miw4IEBAIEpTVmFsdWUgKkFzc2lnbkJyYWNrZXROb2RlOjpldmFs
dWF0ZShFeGUKICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogICAgIEpTVmFsdWUgKnYyID0g
bV9yaWdodC0+ZXZhbHVhdGUoZXhlYyk7CiAgICAgdiA9IHZhbHVlRm9yUmVhZE1vZGlmeUFzc2ln
bm1lbnQoZXhlYywgdjEsIHYyLCBtX29wZXIpOworCisgICAgLy8jIyMgY2FuIGRvIGRpcmVjdCB3
cml0ZSBoZXJlLi4KICAgfQogCiAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCkBAIC0xNTU4LDYg
KzE5MDIsMjAgQEAgSlNWYWx1ZSAqQXNzaWduQnJhY2tldE5vZGU6OmV2YWx1YXRlKEV4ZQogICBy
ZXR1cm4gdjsKIH0KIAordm9pZCBBc3NpZ25CcmFja2V0Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fYmFzZSk7
CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9zdWJzY3JpcHQpOworICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIG1fcmlnaHQpOworfQorCitKU1ZhbHVlKiBBc3NpZ25FcnJvck5vZGU6
OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgCit7IAorICAgIHRocm93RXJyb3IoZXhlYywgUmVm
ZXJlbmNlRXJyb3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2Uu
Iik7IAorICAgIGhhbmRsZUV4Y2VwdGlvbihleGVjKTsgCisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7IAorfSAKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbW1hTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xNApAQCAt
MTU3MSw2ICsxOTI5LDEyIEBAIEpTVmFsdWUgKkNvbW1hTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRl
ICoKICAgcmV0dXJuIHY7CiB9CiAKK3ZvaWQgQ29tbWFOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOwor
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkV4cHJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAogLy8gRUNNQSAxMi4yCkBAIC0xNTc5LDggKzE5NDMsMTIgQEAgSlNWYWx1ZSAq
QXNzaWduRXhwck5vZGU6OmV2YWx1YXRlKEV4ZWNTdAogICByZXR1cm4gZXhwci0+ZXZhbHVhdGUo
ZXhlYyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWYXJEZWNsTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIEFzc2lnbkV4cHJOb2Rl
OjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgZXhwcik7Cit9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBWYXJEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgCiBW
YXJEZWNsTm9kZTo6VmFyRGVjbE5vZGUoY29uc3QgSWRlbnRpZmllciAmaWQsIEFzc2lnbkV4cHJO
b2RlICppbiwgVHlwZSB0KQogICAgIDogdmFyVHlwZSh0KSwgaWRlbnQoaWQpLCBpbml0KGluKQpA
QCAtMTYxNiw3ICsxOTg0LDcgQEAgSlNWYWx1ZSogVmFyRGVjbE5vZGU6OmhhbmRsZVNsb3dDYXNl
KEV4ZQogfQogCiAvLyBFQ01BIDEyLjIKLUpTVmFsdWUqIFZhckRlY2xOb2RlOjpldmFsdWF0ZShF
eGVjU3RhdGUqIGV4ZWMpCitKU1ZhbHVlICpWYXJEZWNsTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRl
ICpleGVjKQogewogICAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgp
LT5zY29wZUNoYWluKCk7CiAgICAgSlNPYmplY3QqIHZhcmlhYmxlT2JqZWN0ID0gZXhlYy0+Y29u
dGV4dCgpLT52YXJpYWJsZU9iamVjdCgpOwpAQCAtMTYyNiw3ICsxOTk0LDE0IEBAIEpTVmFsdWUq
IFZhckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUKICAgICBib29sIGluR2xvYmFsU2NvcGUg
PSArK2NoYWluLmJlZ2luKCkgPT0gY2hhaW4uZW5kKCk7CiAKICAgICBpZiAoaW5HbG9iYWxTY29w
ZSAmJiAoaW5pdCB8fCAhdmFyaWFibGVPYmplY3QtPmdldERpcmVjdChpZGVudCkpKSB7Ci0gICAg
ICAgIEpTVmFsdWUqIHZhbCA9IGluaXQgPyBpbml0LT5ldmFsdWF0ZShleGVjKSA6IGpzVW5kZWZp
bmVkKCk7CisgICAgICAgIEpTVmFsdWUgKnZhbDsKKworICAgICAgICBpZiAoaW5pdCkgeworICAg
ICAgICAgICAgdmFsID0gaW5pdC0+ZXZhbHVhdGUoZXhlYyk7CisgICAgICAgICAgICBLSlNfQ0hF
Q0tFWENFUFRJT05WQUxVRQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHZhbCA9IGpzVW5k
ZWZpbmVkKCk7CisKICAgICAgICAgaW50IGZsYWdzID0gSW50ZXJuYWw7CiAgICAgICAgIGlmIChl
eGVjLT5jb250ZXh0KCktPmNvZGVUeXBlKCkgIT0gRXZhbENvZGUpCiAgICAgICAgICAgICBmbGFn
cyB8PSBEb250RGVsZXRlOwpAQCAtMTYzNCwyMCArMjAwOSwyMCBAQCBKU1ZhbHVlKiBWYXJEZWNs
Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlCiAgICAgICAgICAgICBmbGFncyB8PSBSZWFkT25seTsK
ICAgICAgICAgdmFyaWFibGVPYmplY3QtPnB1dERpcmVjdChpZGVudCwgdmFsLCBmbGFncyk7CiAg
ICAgfSBlbHNlIGlmIChpbml0KSB7Ci0gICAgICAgIEpTVmFsdWUqIHZhbCA9IGluaXQtPmV2YWx1
YXRlKGV4ZWMpOwotICAgICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotICAgICAgICAgICAg
CisgICAgICAgIEpTVmFsdWUgKnZhbCA9IGluaXQtPmV2YWx1YXRlKGV4ZWMpOworCiAgICAgICAg
IC8vIGlmIHRoZSB2YXJpYWJsZSBvYmplY3QgaXMgdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4s
IHRoZW4gdGhhdCBtdXN0Ci0gICAgICAgIC8vIGJlIHdoZXJlIHRoaXMgdmFyaWFibGUgaXMgZGVj
bGFyZWQsIHByb2Nlc3NWYXJEZWNscyB3b3VsZCBoYXZlIHB1dCAKKyAgICAgICAgLy8gYmUgd2hl
cmUgdGhpcyB2YXJpYWJsZSBpcyBkZWNsYXJlZCwgcHJvY2Vzc1ZhckRlY2xzIHdvdWxkIGhhdmUg
cHV0CiAgICAgICAgIC8vIGl0IHRoZXJlLiBEb24ndCBzZWFyY2ggdGhlIHNjb3BlIGNoYWluLCB0
byBvcHRpbWl6ZSB0aGlzIHZlcnkgY29tbW9uIGNhc2UuCisKICAgICAgICAgaWYgKGNoYWluLnRv
cCgpICE9IHZhcmlhYmxlT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVNsb3dDYXNl
KGV4ZWMsIGNoYWluLCB2YWwpOwogCi0gICAgICAgIHVuc2lnbmVkIGZsYWdzID0gMDsKKyAgICAg
ICAgdW5zaWduZWQgaW50IGZsYWdzID0gMDsKICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdldFBy
b3BlcnR5QXR0cmlidXRlcyhpZGVudCwgZmxhZ3MpOwogICAgICAgICBpZiAodmFyVHlwZSA9PSBW
YXJEZWNsTm9kZTo6Q29uc3RhbnQpCiAgICAgICAgICAgICBmbGFncyB8PSBSZWFkT25seTsKLSAg
ICAgICAgCisKICAgICAgICAgQVNTRVJUKHZhcmlhYmxlT2JqZWN0LT5nZXREaXJlY3QoaWRlbnQp
IHx8IGlkZW50ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpOwogICAgICAgICB2
YXJpYWJsZU9iamVjdC0+cHV0KGV4ZWMsIGlkZW50LCB2YWwsIGZsYWdzKTsKICAgICB9CkBAIC0x
NjU2LDIzICsyMDMxLDUwIEBAIEpTVmFsdWUqIFZhckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGNoYW5nZSB0aGUgaW5oZXJp
dGVuY2UgaGllcmFyY2h5IHNvIHRoaXMKICAgICAvLyBub2RlIGRvZXNuJ3QgZXZlbiBoYXZlIGFu
IGV2YWx1YXRlIG1ldGhvZCwgYnV0IGluc3RlYWQgYSBkaWZmZXJlbnRseSBuYW1lZAogICAgIC8v
IG9uZSB3aXRoIGEgdm9pZCByZXR1cm4uCisKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBWYXJE
ZWNsTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgVmFyRGVjbE5v
ZGU6OnByb2Nlc3NWYXJEZWNsKEV4ZWNTdGF0ZSAqZXhlYykKIHsKICAgSlNPYmplY3QqIHZhcmlh
YmxlID0gZXhlYy0+Y29udGV4dCgpLT52YXJpYWJsZU9iamVjdCgpOworICAKKyAgLy8gRmlyc3Qs
IGRldGVybWluZSB3aGljaCBmbGFncyB3ZSB3YW50IHRvIHVzZS4uCisgIGludCBmbGFncyA9IERv
bnREZWxldGU7IAorICBpZiAodmFyVHlwZSA9PSBWYXJEZWNsTm9kZTo6Q29uc3RhbnQpCisgICAg
ZmxhZ3MgfD0gUmVhZE9ubHk7CisKKyAgLy8gQXJlIHdlIGluc2lkZSBhIGZ1bmN0aW9uPyBJZiBz
bywgd2UgZmlsbCBpbiB0aGUgc3ltYm9sIHRhYmxlCisgIHN3aXRjaCAoZXhlYy0+Y29udGV4dCgp
LT5jb2RlVHlwZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvZGU6CisgICAgICAvLyBJbnNpZGUg
YSBmdW5jdGlvbiwgd2UncmUganVzdCBjb21wdXRpbmcgc3RhdGljIGluZm9ybWF0aW9uLgorICAg
ICAgLy8gc28sIGp1c3QgZmlsbCBpbiB0aGUgc3ltYm9sIHRhYmxlLgorICAgICAgZXhlYy0+Y29u
dGV4dCgpLT5jdXJyZW50Qm9keSgpLT5hZGRWYXJEZWNsKGlkZW50LCBmbGFncywgZXhlYyk7Cisg
ICAgICByZXR1cm47CisgICAgY2FzZSBFdmFsQ29kZToKKyAgICAgIC8vIGV2YWwtaW5qZWN0ZWQg
dmFyaWFibGVzIGNhbiBiZSBkZWxldGVkLi4KKyAgICAgIGZsYWdzICY9IH5Eb250RGVsZXRlOwor
CisgICAgICAvLyBJZiBhIHZhcmlhYmxlIGJ5IHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cywgZG9u
J3QgY2xvYmJlciBpdCAtCisgICAgICAvLyBldmFsIG1heSBiZSB0cnlpbmcgdG8gaW5qZWN0IGEg
dmFyaWFibGUgdGhhdCBhbHJlYWR5IGV4aXN0cy4uCisgICAgICBpZiAoIXZhcmlhYmxlLT5oYXNQ
cm9wZXJ0eShleGVjLCBpZGVudCkpIHsKKyAgICAgICAgdmFyaWFibGUtPnB1dChleGVjLCBpZGVu
dCwganNVbmRlZmluZWQoKSwgZmxhZ3MpOworICAgICAgICAvLyBldmFsIGluamVjdGVkIGEgbmV3
IGxvY2FsIGludG8gc2NvcGUhIEJldHRlciBtYXJrIHRoYXQgZG93biwgCisgICAgICAgIC8vIHNv
IHRoYXQgTm9uTG9jYWxSZXNvbHZlciBzdG9wcyBza2lwcGluZyB0aGUgbG9jYWwgc2NvcGUKKyAg
ICAgICAgdmFyaWFibGUtPnNldExvY2FsSW5qZWN0ZWQoKTsKKyAgICAgIH0KKyAgICAgIGJyZWFr
OworICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICAgIC8vIElmIGEgdmFyaWFibGUgYnkgdGhpcyBu
YW1lIGFscmVhZHkgZXhpc3RzLCBkb24ndCBjbG9iYmVyIGl0IC0KKyAgICAgIC8vICMjIyBJIGFt
IG5vdCBzdWUgdGhpcyBpcyBuZWVkZWQgZm9yIEdsb2JhbENvZGUKKyAgICAgIGlmICghdmFyaWFi
bGUtPmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkKKyAgICAgICAgdmFyaWFibGUtPnB1dChleGVj
LCBpZGVudCwganNVbmRlZmluZWQoKSwgZmxhZ3MpOworICB9OworfQogCi0gIC8vIElmIGEgdmFy
aWFibGUgYnkgdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLCBkb24ndCBjbG9iYmVyIGl0IC0KLSAg
Ly8gaXQgbWlnaHQgYmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIKLSAgaWYgKCF2YXJpYWJsZS0+aGFz
UHJvcGVydHkoZXhlYywgaWRlbnQpKSB7Ci0gICAgaW50IGZsYWdzID0gSW50ZXJuYWw7Ci0gICAg
aWYgKGV4ZWMtPmNvbnRleHQoKS0+Y29kZVR5cGUoKSAhPSBFdmFsQ29kZSkKLSAgICAgIGZsYWdz
IHw9IERvbnREZWxldGU7Ci0gICAgaWYgKHZhclR5cGUgPT0gVmFyRGVjbE5vZGU6OkNvbnN0YW50
KQotICAgICAgZmxhZ3MgfD0gUmVhZE9ubHk7Ci0gICAgdmFyaWFibGUtPnB1dChleGVjLCBpZGVu
dCwganNVbmRlZmluZWQoKSwgZmxhZ3MpOwotICB9Cit2b2lkIFZhckRlY2xOb2RlOjpyZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgaW5pdCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWYXJEZWNs
TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjg3LDE3ICsyMDg5
LDE3IEBAIEpTVmFsdWUgKlZhckRlY2xMaXN0Tm9kZTo6ZXZhbHVhdGUoRXhlY1MKICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKLXZvaWQgVmFyRGVjbExpc3ROb2RlOjpwcm9jZXNzVmFyRGVj
bHMoRXhlY1N0YXRlICpleGVjKQotewotICBmb3IgKFZhckRlY2xMaXN0Tm9kZSAqbiA9IHRoaXM7
IG47IG4gPSBuLT5uZXh0LmdldCgpKQotICAgIG4tPnZhci0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMp
OwotfQotCiB2b2lkIFZhckRlY2xMaXN0Tm9kZTo6YnJlYWtDeWNsZSgpIAogeyAKICAgICBuZXh0
ID0gMDsKIH0KIAordm9pZCBWYXJEZWNsTGlzdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCB2YXIpOworICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gVmFyU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAvLyBFQ01BIDEyLjIKQEAgLTE3MTEsOSArMjExMyw1OSBAQCBDb21wbGV0aW9uIFZhclN0
YXRlbWVudE5vZGU6OmV4ZWN1dGUoRXhlCiAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCk7CiB9
CiAKLXZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhl
YykKK3ZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCitOb2RlKiBW
YXJTdGF0ZW1lbnROb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNzKEV4ZWNTdGF0ZSosIEZ1bmN0aW9u
Qm9keU5vZGUqIGZ1bmNCb2R5KQoreworICBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlKiBzdGF0aWNW
ZXIgPSBuZXcgU3RhdGljVmFyU3RhdGVtZW50Tm9kZSgpOworICBzdGF0aWNWZXItPm9yaWdpbmFs
U3RhdGVtZW50ID0gdGhpczsKKworICBmb3IgKFZhckRlY2xMaXN0Tm9kZSAqbiA9IG5leHQuZ2V0
KCk7IG47IG4gPSBuLT5uZXh0LmdldCgpKSB7CisgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHRo
aW5ncyB3aGljaCBoYXZlIGFuIGluaXRpYWxpemVyIC0tLSAKKyAgICAvLyBldmVyeXRoaW5nIGVs
c2UgaXMgYSBuby1vcCBhdCBleGVjdXRpb24gdGltZSwgCisgICAgLy8gYW5kIG9ubHkgbWFrZXMg
YSBkaWZmZXJlbmNlIGF0IHByb2Nlc3NWYXJEZWNsIHRpbWUKKyAgICBpZiAobi0+dmFyLT5pbml0
KSB7CisgICAgICBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpJbml0aWFsaXplciBpbml0OworICAg
ICAgaW5pdC5pbml0RXhwciA9IG4tPnZhci0+aW5pdC0+Z2V0RXhwcigpOyAvL1NraXAgdGhlIEFz
c2lnbkV4cHJOb2RlIGFzIHdlbGwuLi4KKyAgICAgIGluaXQubG9jYWxJRCAgPSBmdW5jQm9keS0+
bG9va3VwU3ltYm9sSUQobi0+dmFyLT5pZGVudCk7CisgICAgICBpZiAoaW5pdC5sb2NhbElEID09
IC0xKSB7IC8vT3VjaCwgYSBkeW5hbWljIHByb3BlcnR5ISBCYWlsIG91dCwgYmFpbCBvdXQhCisg
ICAgICAgIG5ld05vZGVzLT5yZW1vdmUoc3RhdGljVmVyKTsKKyAgICAgICAgZGVsZXRlIHN0YXRp
Y1ZlcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBzdGF0aWNWZXItPmluaXRp
YWxpemVycy5hcHBlbmQoaW5pdCk7CisgICAgfQorICB9CisgIHJldHVybiBzdGF0aWNWZXI7Cit9
OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RhdGljVmFyU3RhdGVtZW50
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb21wbGV0aW9uIFN0YXRpY1ZhclN0YXRl
bWVudE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKQoreworICBLSlNfQlJFQUtQT0lOVDsK
KyAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhl
Yy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworCisgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgaW5pdGlhbGl6ZXJzLnNpemUoKTsgKytpKSB7CisgICAgSlNWYWx1ZSogdmFsID0gaW5p
dGlhbGl6ZXJzW2ldLmluaXRFeHByLT5ldmFsdWF0ZShleGVjKTsKKyAgICBLSlNfQ0hFQ0tFWENF
UFRJT04KKyAgICBzY29wZS0+cHV0TG9jYWwoaW5pdGlhbGl6ZXJzW2ldLmxvY2FsSUQsIHZhbCk7
CisgICAgLy8gTm90ZTogZmxhZ3MgYXJlIGFscmVhZHkgdGFrZW4gY2FyZSBvZiBhdCBkZWNsYXJh
dGlvbiB0aW1lCisgIH0KKyAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsKTsKK30KKwordm9pZCBT
dGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
CiB7Ci0gIG5leHQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbml0aWFsaXplcnMuc2l6ZSgpOyArK2kpIHsKKyAgIE5vZGUqIG9sZEluaXRpYWxpemVy
ID0gaW5pdGlhbGl6ZXJzW2ldLmluaXRFeHByLmdldCgpOworICAgTm9kZSogbmV3SW5pdGlhbGl6
ZXIgPSB2aXNpdG9yLT52aXNpdChvbGRJbml0aWFsaXplcik7CisgICBpZiAobmV3SW5pdGlhbGl6
ZXIpCisgICAgaW5pdGlhbGl6ZXJzW2ldLmluaXRFeHByID0gbmV3SW5pdGlhbGl6ZXI7CisgIH0K
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJsb2NrTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3MzUsMTUgKzIxODcsMTIgQEAgQ29t
cGxldGlvbiBCbG9ja05vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICBpZiAoIXNvdXJjZSkKICAg
ICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwpOwogCi0gIHNvdXJjZS0+cHJvY2Vzc0Z1bmNEZWNs
KGV4ZWMpOwotCiAgIHJldHVybiBzb3VyY2UtPmV4ZWN1dGUoZXhlYyk7CiB9CiAKLXZvaWQgQmxv
Y2tOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBCbG9ja05vZGU6
OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgaWYgKHNvdXJjZSkKLSAg
ICBzb3VyY2UtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZp
c2l0b3IsIHNvdXJjZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF
bXB0eVN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzY3LDYg
KzIyMTYsMTEgQEAgQ29tcGxldGlvbiBFeHByU3RhdGVtZW50Tm9kZTo6ZXhlY3V0ZShFeAogICBy
ZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHYpOwogfQogCit2b2lkIEV4cHJTdGF0ZW1lbnROb2Rl
OjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBJZk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVD
TUEgMTIuNQpAQCAtMTc5MCwxMiArMjI0NCwxMSBAQCBDb21wbGV0aW9uIElmTm9kZTo6ZXhlY3V0
ZShFeGVjU3RhdGUgKmV4CiAgIHJldHVybiBzdGF0ZW1lbnQyLT5leGVjdXRlKGV4ZWMpOwogfQog
Ci12b2lkIElmTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgSWZO
b2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIHN0YXRlbWVudDEt
PnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLQotICBpZiAoc3RhdGVtZW50MikKLSAgICBzdGF0ZW1l
bnQyLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
ZXhwcik7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50MSk7CisgIHJlY3Vy
c2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50Mik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBEb1doaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCkBAIC0xODA3LDIxICsyMjYwLDIzIEBAIENvbXBsZXRpb24gRG9XaGlsZU5vZGU6OmV4
ZWN1dGUoRXhlY1N0YXQKIAogICBKU1ZhbHVlICpidjsKICAgQ29tcGxldGlvbiBjOworICBKU1Zh
bHVlKiB2YWx1ZSA9IDA7CiAKICAgZG8gewogICAgIC8vIGJhaWwgb3V0IG9uIGVycm9yCiAgICAg
S0pTX0NIRUNLRVhDRVBUSU9OCiAKLSAgICBleGVjLT5jb250ZXh0KCktPnB1c2hJdGVyYXRpb24o
KTsKICAgICBjID0gc3RhdGVtZW50LT5leGVjdXRlKGV4ZWMpOwotICAgIGV4ZWMtPmNvbnRleHQo
KS0+cG9wSXRlcmF0aW9uKCk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRl
cigpLT50aW1lZE91dCgpKQogICAgICAgICByZXR1cm4gQ29tcGxldGlvbihJbnRlcnJ1cHRlZCk7
CiAKLSAgICBpZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgbHMuY29udGFpbnMo
Yy50YXJnZXQoKSkpKSB7Ci0gICAgICBpZiAoKGMuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIGxz
LmNvbnRhaW5zKGMudGFyZ2V0KCkpKQotICAgICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWws
IDApOworICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCisgICAgICAgIHZhbHVlID0gYy52
YWx1ZSgpOworCisgICAgaWYgKCEoKGMuY29tcGxUeXBlKCkgPT0gQ29udGludWUpICYmIChjLnRh
cmdldCgpID09IHRoaXMpKSkgeworICAgICAgaWYgKChjLmNvbXBsVHlwZSgpID09IEJyZWFrKSAm
JiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKKyAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFs
LCB2YWx1ZSk7CiAgICAgICBpZiAoYy5jb21wbFR5cGUoKSAhPSBOb3JtYWwpCiAgICAgICAgIHJl
dHVybiBjOwogICAgIH0KQEAgLTE4MjksMTIgKzIyODQsMTMgQEAgQ29tcGxldGlvbiBEb1doaWxl
Tm9kZTo6ZXhlY3V0ZShFeGVjU3RhdAogICAgIEtKU19DSEVDS0VYQ0VQVElPTgogICB9IHdoaWxl
IChidi0+dG9Cb29sZWFuKGV4ZWMpKTsKIAotICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIDAp
OworICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHZhbHVlKTsKIH0KIAotdm9pZCBEb1doaWxl
Tm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgRG9XaGlsZU5vZGU6
OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgc3RhdGVtZW50LT5wcm9j
ZXNzVmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7Cisg
IHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50KTsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdoaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTE4NjAsOSArMjMxNiw3IEBAIENvbXBsZXRpb24gV2hpbGVOb2RlOjpl
eGVjdXRlKEV4ZWNTdGF0ZSAKICAgICBpZiAoIWIpCiAgICAgICByZXR1cm4gQ29tcGxldGlvbihO
b3JtYWwsIHZhbHVlKTsKIAotICAgIGV4ZWMtPmNvbnRleHQoKS0+cHVzaEl0ZXJhdGlvbigpOwog
ICAgIGMgPSBzdGF0ZW1lbnQtPmV4ZWN1dGUoZXhlYyk7Ci0gICAgZXhlYy0+Y29udGV4dCgpLT5w
b3BJdGVyYXRpb24oKTsKIAogICAgIGlmIChleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+dGlt
ZWRPdXQoKSkKICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oSW50ZXJydXB0ZWQpOwpAQCAtMTg3
MCw5ICsyMzI0LDkgQEAgQ29tcGxldGlvbiBXaGlsZU5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAog
ICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAgICB2YWx1ZSA9IGMudmFsdWUoKTsK
IAotICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgbHMuY29udGFpbnMoYy50
YXJnZXQoKSkpCisgICAgaWYgKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiAoYy50YXJn
ZXQoKSA9PSB0aGlzKSkKICAgICAgIGNvbnRpbnVlOwotICAgIGlmICgoYy5jb21wbFR5cGUoKSA9
PSBCcmVhaykgJiYgbHMuY29udGFpbnMoYy50YXJnZXQoKSkpCisgICAgaWYgKChjLmNvbXBsVHlw
ZSgpID09IEJyZWFrKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKICAgICAgIHJldHVybiBDb21w
bGV0aW9uKE5vcm1hbCwgdmFsdWUpOwogICAgIGlmIChjLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkK
ICAgICAgIHJldHVybiBjOwpAQCAtMTg4MSw5ICsyMzM1LDEwIEBAIENvbXBsZXRpb24gV2hpbGVO
b2RlOjpleGVjdXRlKEV4ZWNTdGF0ZSAKICAgcmV0dXJuIENvbXBsZXRpb24oKTsgLy8gd29yayBh
cm91bmQgZ2NjIDQuMCBidWcKIH0KIAotdm9pZCBXaGlsZU5vZGU6OnByb2Nlc3NWYXJEZWNscyhF
eGVjU3RhdGUgKmV4ZWMpCit2b2lkIFdoaWxlTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKQogewotICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9y
LCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRm9y
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkwNywxMyAr
MjM2MiwxMSBAQCBDb21wbGV0aW9uIEZvck5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICplCiAgICAg
Ly8gYmFpbCBvdXQgb24gZXJyb3IKICAgICBLSlNfQ0hFQ0tFWENFUFRJT04KIAotICAgIGV4ZWMt
PmNvbnRleHQoKS0+cHVzaEl0ZXJhdGlvbigpOwogICAgIENvbXBsZXRpb24gYyA9IHN0YXRlbWVu
dC0+ZXhlY3V0ZShleGVjKTsKLSAgICBleGVjLT5jb250ZXh0KCktPnBvcEl0ZXJhdGlvbigpOwog
ICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAgICBjdmFsID0gYy52YWx1ZSgpOwot
ICAgIGlmICghKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiBscy5jb250YWlucyhjLnRh
cmdldCgpKSkpIHsKLSAgICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBCcmVhaykgJiYgbHMuY29u
dGFpbnMoYy50YXJnZXQoKSkpCisgICAgaWYgKCEoKGMuY29tcGxUeXBlKCkgPT0gQ29udGludWUp
ICYmIChjLnRhcmdldCgpID09IHRoaXMpKSkgeworICAgICAgaWYgKChjLmNvbXBsVHlwZSgpID09
IEJyZWFrKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKICAgICAgICAgcmV0dXJuIENvbXBsZXRp
b24oTm9ybWFsLCBjdmFsKTsKICAgICAgIGlmIChjLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkKICAg
ICAgIHJldHVybiBjOwpAQCAtMTkzMSwxMiArMjM4NCwxMiBAQCBDb21wbGV0aW9uIEZvck5vZGU6
OmV4ZWN1dGUoRXhlY1N0YXRlICplCiAgIHJldHVybiBDb21wbGV0aW9uKCk7IC8vIHdvcmsgYXJv
dW5kIGdjYyA0LjAgYnVnCiB9CiAKLXZvaWQgRm9yTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNT
dGF0ZSAqZXhlYykKK3ZvaWQgRm9yTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKQogewotICBpZiAoZXhwcjEpCi0gICAgZXhwcjEtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsK
LQotICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBleHByMSk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjIpOwor
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIzKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gRm9ySW5Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTk1
MSw3ICsyNDA0LDcgQEAgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoY29uc3QgSWRlbnRpZmllciAmaQog
ewogICAvLyBmb3IoIHZhciBmb28gPSBiYXIgaW4gYmF6ICkKICAgdmFyRGVjbCA9IG5ldyBWYXJE
ZWNsTm9kZShpZGVudCwgaW5pdC5nZXQoKSwgVmFyRGVjbE5vZGU6OlZhcmlhYmxlKTsKLSAgbGV4
cHIgPSBuZXcgUmVzb2x2ZU5vZGUoaWRlbnQpOworICBsZXhwciA9IG5ldyBWYXJBY2Nlc3NOb2Rl
KGlkZW50KTsKIH0KIAogLy8gRUNNQSAxMi42LjQKQEAgLTE5ODEsNjkgKzI0MzQsMjggQEAgQ29t
cGxldGlvbiBGb3JJbk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICBLSlNfQ0hFQ0tFWENFUFRJ
T04KICAgdiA9IGUtPnRvT2JqZWN0KGV4ZWMpOwogICB2LT5nZXRQcm9wZXJ0eU5hbWVzKGV4ZWMs
IHByb3BlcnR5TmFtZXMpOwotICAKKwogICBQcm9wZXJ0eU5hbWVBcnJheUl0ZXJhdG9yIGVuZCA9
IHByb3BlcnR5TmFtZXMuZW5kKCk7CiAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXlJdGVyYXRvciBp
dCA9IHByb3BlcnR5TmFtZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICBjb25z
dCBJZGVudGlmaWVyICZuYW1lID0gKml0OwotICAgICAgaWYgKCF2LT5oYXNQcm9wZXJ0eShleGVj
LCBuYW1lKSkKLSAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgSlNWYWx1ZSAqc3RyID0ganNT
dHJpbmcobmFtZS51c3RyaW5nKCkpOwotCi0gICAgICBpZiAobGV4cHItPmlzUmVzb2x2ZU5vZGUo
KSkgewotICAgICAgICBjb25zdCBJZGVudGlmaWVyICZpZGVudCA9IHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlICo+KGxleHByLmdldCgpKS0+aWRlbnRpZmllcigpOwotCi0gICAgICAgIGNvbnN0IFNj
b3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Ci0gICAgICAg
IFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVnaW4oKTsKLSAgICAgICAgU2NvcGVD
aGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAKLSAgICAgICAgLy8gd2UgbXVzdCBh
bHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCi0gICAgICAgIGFzc2VydChp
dGVyICE9IGVuZCk7CisgICAgY29uc3QgSWRlbnRpZmllciAmbmFtZSA9ICppdDsKKyAgICBpZiAo
IXYtPmhhc1Byb3BlcnR5KGV4ZWMsIG5hbWUpKQorICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICAgICAgSlNPYmplY3QgKm87Ci0gICAgICAgIGRvIHsg
Ci0gICAgICAgICAgICBvID0gKml0ZXI7Ci0gICAgICAgICAgICBpZiAoby0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50LCBzbG90KSkgewotICAgICAgICAgICAgICAgIG8tPnB1dChleGVjLCBp
ZGVudCwgc3RyKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICsraXRlcjsKLSAgICAgICAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOwotICAgICAgICAK
LSAgICAgICAgaWYgKGl0ZXIgPT0gZW5kKQotICAgICAgICAgICAgby0+cHV0KGV4ZWMsIGlkZW50
LCBzdHIpOwotICAgIH0gZWxzZSBpZiAobGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpIHsKLSAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5v
ZGUgKj4obGV4cHIuZ2V0KCkpLT5pZGVudGlmaWVyKCk7Ci0gICAgICAgIEpTVmFsdWUgKnYgPSBz
dGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUgKj4obGV4cHIuZ2V0KCkpLT5iYXNlKCktPmV2YWx1
YXRlKGV4ZWMpOwotICAgICAgICBLSlNfQ0hFQ0tFWENFUFRJT04KLSAgICAgICAgSlNPYmplY3Qg
Km8gPSB2LT50b09iamVjdChleGVjKTsKKyAgICBKU1ZhbHVlICpzdHIgPSBqc1N0cmluZyhuYW1l
LnVzdHJpbmcoKSk7CiAKLSAgICAgICAgby0+cHV0KGV4ZWMsIGlkZW50LCBzdHIpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGFzc2VydChsZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpOwot
ICAgICAgICBKU1ZhbHVlICp2ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSAqPihs
ZXhwci5nZXQoKSktPmJhc2UoKS0+ZXZhbHVhdGUoZXhlYyk7Ci0gICAgICAgIEtKU19DSEVDS0VY
Q0VQVElPTgotICAgICAgICBKU1ZhbHVlICp2MiA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nv
ck5vZGUgKj4obGV4cHIuZ2V0KCkpLT5zdWJzY3JpcHQoKS0+ZXZhbHVhdGUoZXhlYyk7Ci0gICAg
ICAgIEtKU19DSEVDS0VYQ0VQVElPTgotICAgICAgICBKU09iamVjdCAqbyA9IHYtPnRvT2JqZWN0
KGV4ZWMpOwotCi0gICAgICAgIHVpbnQzMl90IGk7Ci0gICAgICAgIGlmICh2Mi0+Z2V0VUludDMy
KGkpKQotICAgICAgICAgICAgby0+cHV0KGV4ZWMsIGksIHN0cik7Ci0gICAgICAgIG8tPnB1dChl
eGVjLCBJZGVudGlmaWVyKHYyLT50b1N0cmluZyhleGVjKSksIHN0cik7Ci0gICAgfQorICAgIEFT
U0VSVChsZXhwci0+aXNMb2NhdGlvbigpKTsKKyAgICBMb2NhdGlvbk5vZGUqIGxvYyA9IHN0YXRp
Y19jYXN0PExvY2F0aW9uTm9kZSo+KGxleHByLmdldCgpKTsKIAorICAgIFJlZmVyZW5jZSByZWYg
PSBsb2MtPmV2YWx1YXRlUmVmZXJlbmNlKGV4ZWMpOwogICAgIEtKU19DSEVDS0VYQ0VQVElPTgor
ICAgIHJlZi53cml0ZShleGVjLCBzdHIpOwogCi0gICAgZXhlYy0+Y29udGV4dCgpLT5wdXNoSXRl
cmF0aW9uKCk7CiAgICAgYyA9IHN0YXRlbWVudC0+ZXhlY3V0ZShleGVjKTsKLSAgICBleGVjLT5j
b250ZXh0KCktPnBvcEl0ZXJhdGlvbigpOwogICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkp
CiAgICAgICByZXR2YWwgPSBjLnZhbHVlKCk7CiAKLSAgICBpZiAoISgoYy5jb21wbFR5cGUoKSA9
PSBDb250aW51ZSkgJiYgbHMuY29udGFpbnMoYy50YXJnZXQoKSkpKSB7Ci0gICAgICBpZiAoKGMu
Y29tcGxUeXBlKCkgPT0gQnJlYWspICYmIGxzLmNvbnRhaW5zKGMudGFyZ2V0KCkpKQorICAgIGlm
ICghKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkp
IHsKKyAgICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBCcmVhaykgJiYgKGMudGFyZ2V0KCkgPT0g
dGhpcykpCiAgICAgICAgIGJyZWFrOwogICAgICAgaWYgKGMuY29tcGxUeXBlKCkgIT0gTm9ybWFs
KSB7CiAgICAgICAgIHJldHVybiBjOwpAQCAtMjA1NywxMSArMjQ2OSwxMyBAQCBDb21wbGV0aW9u
IEZvckluTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1h
bCwgcmV0dmFsKTsKIH0KIAotdm9pZCBGb3JJbk5vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3Rh
dGUgKmV4ZWMpCit2b2lkIEZvckluTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKQogewotICBpZiAodmFyRGVjbCkKLSAgICB2YXJEZWNsLT5wcm9jZXNzVmFyRGVjbHMoZXhl
Yyk7Ci0gIHN0YXRlbWVudC0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGluaXQpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGxleHByKTsK
KyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCB2YXJEZWNsKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29udGludWVOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjA3MSwxMiArMjQ4NSw3IEBAIENv
bXBsZXRpb24gQ29udGludWVOb2RlOjpleGVjdXRlKEV4ZWNTdGEKIHsKICAgS0pTX0JSRUFLUE9J
TlQ7CiAKLSAgaWYgKGlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+Y29udGV4dCgpLT5pbkl0ZXJh
dGlvbigpKQotICAgIHJldHVybiBjcmVhdGVFcnJvckNvbXBsZXRpb24oZXhlYywgU3ludGF4RXJy
b3IsICJJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4iKTsKLSAgZWxzZSBpZiAoIWlkZW50Lmlz
RW1wdHkoKSAmJiAhZXhlYy0+Y29udGV4dCgpLT5zZWVuTGFiZWxzKCktPmNvbnRhaW5zKGlkZW50
KSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAi
TGFiZWwgJXMgbm90IGZvdW5kLiIsIGlkZW50KTsKLSAgZWxzZQotICAgIHJldHVybiBDb21wbGV0
aW9uKENvbnRpbnVlLCAwLCBpZGVudCk7CisgIHJldHVybiBDb21wbGV0aW9uKENvbnRpbnVlLCAw
LCB0YXJnZXQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQnJlYWtO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjA4NiwxMyArMjQ5
NSw3IEBAIENvbXBsZXRpb24gQnJlYWtOb2RlOjpleGVjdXRlKEV4ZWNTdGF0ZSAKIHsKICAgS0pT
X0JSRUFLUE9JTlQ7CiAKLSAgaWYgKGlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+Y29udGV4dCgp
LT5pbkl0ZXJhdGlvbigpICYmCi0gICAgICAhZXhlYy0+Y29udGV4dCgpLT5pblN3aXRjaCgpKQot
ICAgIHJldHVybiBjcmVhdGVFcnJvckNvbXBsZXRpb24oZXhlYywgU3ludGF4RXJyb3IsICJJbnZh
bGlkIGJyZWFrIHN0YXRlbWVudC4iKTsKLSAgZWxzZSBpZiAoIWlkZW50LmlzRW1wdHkoKSAmJiAh
ZXhlYy0+Y29udGV4dCgpLT5zZWVuTGFiZWxzKCktPmNvbnRhaW5zKGlkZW50KSkKLSAgICByZXR1
cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiTGFiZWwgJXMgbm90
IGZvdW5kLiIpOwotICBlbHNlCi0gICAgcmV0dXJuIENvbXBsZXRpb24oQnJlYWssIDAsIGlkZW50
KTsKKyAgcmV0dXJuIENvbXBsZXRpb24oQnJlYWssIDAsIHRhcmdldCk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXR1cm5Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkBAIC0yMTAzLDcgKzI1MDYsNyBAQCBDb21wbGV0aW9uIFJldHVybk5v
ZGU6OmV4ZWN1dGUoRXhlY1N0YXRlCiAgIEtKU19CUkVBS1BPSU5UOwogCiAgIENvZGVUeXBlIGNv
ZGVUeXBlID0gZXhlYy0+Y29udGV4dCgpLT5jb2RlVHlwZSgpOwotICBpZiAoY29kZVR5cGUgIT0g
RnVuY3Rpb25Db2RlICYmIGNvZGVUeXBlICE9IEFub255bW91c0NvZGUgKSB7CisgIGlmIChjb2Rl
VHlwZSAhPSBGdW5jdGlvbkNvZGUpIHsKICAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9u
KGV4ZWMsIFN5bnRheEVycm9yLCAiSW52YWxpZCByZXR1cm4gc3RhdGVtZW50LiIpOwogICB9CiAK
QEAgLTIxMTYsNiArMjUxOSwxMSBAQCBDb21wbGV0aW9uIFJldHVybk5vZGU6OmV4ZWN1dGUoRXhl
Y1N0YXRlCiAgIHJldHVybiBDb21wbGV0aW9uKFJldHVyblZhbHVlLCB2KTsKIH0KIAordm9pZCBS
ZXR1cm5Ob2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vy
c2VWaXNpdExpbmsodmlzaXRvciwgdmFsdWUpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gV2l0aE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAvLyBFQ01BIDEyLjEwCkBAIC0yMTM0LDkgKzI1NDIsMTAgQEAgQ29tcGxldGlvbiBXaXRo
Tm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKgogICByZXR1cm4gcmVzOwogfQogCi12b2lkIFdpdGhO
b2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBXaXRoTm9kZTo6cmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBzdGF0ZW1lbnQtPnByb2Nlc3NW
YXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUNsYXVzZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtMjE1OSwxNiArMjU2OCwxMCBAQCBDb21wbGV0aW9uIENhc2VDbGF1c2VOb2Rl
OjpldmFsU3RhdGVtZW50CiAgICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsLCBqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotdm9pZCBDYXNlQ2xhdXNlTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0
ZSAqZXhlYykKLXsKLSAgaWYgKHNvdXJjZSkKLSAgICBzb3VyY2UtPnByb2Nlc3NWYXJEZWNscyhl
eGVjKTsKLX0KLQotdm9pZCBDYXNlQ2xhdXNlTm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0
ZSogZXhlYykKK3ZvaWQgQ2FzZUNsYXVzZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAq
dmlzaXRvcikKIHsKLSAgaWYgKHNvdXJjZSkKLSAgICAgIHNvdXJjZS0+cHJvY2Vzc0Z1bmNEZWNs
KGV4ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOworICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIHNvdXJjZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBDbGF1c2VMaXN0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBA
IC0yMTgwLDI2ICsyNTgzLDE3IEBAIEpTVmFsdWUgKkNsYXVzZUxpc3ROb2RlOjpldmFsdWF0ZShF
eGVjU3QKICAgcmV0dXJuIDA7CiB9CiAKLS8vIEVDTUEgMTIuMTEKLXZvaWQgQ2xhdXNlTGlzdE5v
ZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGZvciAoQ2xhdXNlTGlz
dE5vZGUgKm4gPSB0aGlzOyBuOyBuID0gbi0+bmV4dC5nZXQoKSkKLSAgICBpZiAobi0+Y2xhdXNl
KQotICAgICAgbi0+Y2xhdXNlLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Ci19Ci0KLXZvaWQgQ2xh
dXNlTGlzdE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gIGZvciAo
Q2xhdXNlTGlzdE5vZGUqIG4gPSB0aGlzOyBuOyBuID0gbi0+bmV4dC5nZXQoKSkKLSAgICBpZiAo
bi0+Y2xhdXNlKQotICAgICAgbi0+Y2xhdXNlLT5wcm9jZXNzRnVuY0RlY2woZXhlYyk7Ci19Ci0K
IHZvaWQgQ2xhdXNlTGlzdE5vZGU6OmJyZWFrQ3ljbGUoKSAKIHsgCiAgICAgbmV4dCA9IDA7CiB9
CiAKK3ZvaWQgQ2xhdXNlTGlzdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBjbGF1c2UpOworICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gQ2FzZUJsb2NrTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBD
YXNlQmxvY2tOb2RlOjpDYXNlQmxvY2tOb2RlKENsYXVzZUxpc3ROb2RlICpsMSwgQ2FzZUNsYXVz
ZU5vZGUgKmQsCkBAIC0yMjkyLDI0ICsyNjg2LDExIEBAIENvbXBsZXRpb24gQ2FzZUJsb2NrTm9k
ZTo6ZXZhbEJsb2NrKEV4ZWMKICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsKTsKIH0KIAotdm9p
ZCBDYXNlQmxvY2tOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBD
YXNlQmxvY2tOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGlm
IChsaXN0MSkKLSAgICBsaXN0MS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotICBpZiAoZGVmKQot
ICAgIGRlZi0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotICBpZiAobGlzdDIpCi0gICAgbGlzdDIt
PnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLX0KLQotdm9pZCBDYXNlQmxvY2tOb2RlOjpwcm9jZXNz
RnVuY0RlY2woRXhlY1N0YXRlKiBleGVjKQotewotICBpZiAobGlzdDEpCi0gICBsaXN0MS0+cHJv
Y2Vzc0Z1bmNEZWNsKGV4ZWMpOwotICBpZiAoZGVmKQotICAgIGRlZi0+cHJvY2Vzc0Z1bmNEZWNs
KGV4ZWMpOwotICBpZiAobGlzdDIpCi0gICAgbGlzdDItPnByb2Nlc3NGdW5jRGVjbChleGVjKTsK
KyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBsaXN0MSk7CisgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgZGVmKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBsaXN0Mik7CiB9CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTd2l0Y2hOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzIyLDIzICsyNzAzLDE3IEBAIENvbXBsZXRp
b24gU3dpdGNoTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUKICAgSlNWYWx1ZSAqdiA9IGV4cHItPmV2
YWx1YXRlKGV4ZWMpOwogICBLSlNfQ0hFQ0tFWENFUFRJT04KIAotICBleGVjLT5jb250ZXh0KCkt
PnB1c2hTd2l0Y2goKTsKICAgQ29tcGxldGlvbiByZXMgPSBibG9jay0+ZXZhbEJsb2NrKGV4ZWMs
dik7Ci0gIGV4ZWMtPmNvbnRleHQoKS0+cG9wU3dpdGNoKCk7CiAKLSAgaWYgKChyZXMuY29tcGxU
eXBlKCkgPT0gQnJlYWspICYmIGxzLmNvbnRhaW5zKHJlcy50YXJnZXQoKSkpCisgIGlmICgocmVz
LmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiAocmVzLnRhcmdldCgpID09IHRoaXMpKQogICAgIHJl
dHVybiBDb21wbGV0aW9uKE5vcm1hbCwgcmVzLnZhbHVlKCkpOwogICByZXR1cm4gcmVzOwogfQog
Ci12b2lkIFN3aXRjaE5vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCi17Ci0g
IGJsb2NrLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Ci19Ci0KLXZvaWQgU3dpdGNoTm9kZTo6cHJv
Y2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgU3dpdGNoTm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBibG9jay0+cHJvY2Vzc0Z1bmNEZWNsKGV4
ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIpOworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGJsb2NrKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIExhYmVsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIz
NDYsMTkgKzI3MjEsMTYgQEAgdm9pZCBTd2l0Y2hOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0
YQogLy8gRUNNQSAxMi4xMgogQ29tcGxldGlvbiBMYWJlbE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRl
ICpleGVjKQogewotICBpZiAoIWV4ZWMtPmNvbnRleHQoKS0+c2VlbkxhYmVscygpLT5wdXNoKGxh
YmVsKSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9y
LCAiRHVwbGljYXRlZCBsYWJlbCAlcyBmb3VuZC4iLCBsYWJlbCk7CiAgIENvbXBsZXRpb24gZSA9
IHN0YXRlbWVudC0+ZXhlY3V0ZShleGVjKTsKLSAgZXhlYy0+Y29udGV4dCgpLT5zZWVuTGFiZWxz
KCktPnBvcCgpOwogCi0gIGlmICgoZS5jb21wbFR5cGUoKSA9PSBCcmVhaykgJiYgKGUudGFyZ2V0
KCkgPT0gbGFiZWwpKQorICBpZiAoKGUuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIChlLnRhcmdl
dCgpID09IHRoaXMpKQogICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwgZS52YWx1ZSgpKTsK
ICAgcmV0dXJuIGU7CiB9CiAKLXZvaWQgTGFiZWxOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0
YXRlICpleGVjKQordm9pZCBMYWJlbE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlz
aXRvcikKIHsKLSAgc3RhdGVtZW50LT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VW
aXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIFRocm93Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQEAgLTIzNzUsNiArMjc0NywxMSBAQCBDb21wbGV0aW9uIFRocm93Tm9kZTo6ZXhlY3V0ZShF
eGVjU3RhdGUgCiAgIHJldHVybiBDb21wbGV0aW9uKFRocm93LCB2KTsKIH0KIAordm9pZCBUaHJv
d05vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZp
c2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIFRyeU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
Ly8gRUNNQSAxMi4xNApAQCAtMjQwMSwxMyArMjc3OCwxNyBAQCBDb21wbGV0aW9uIFRyeU5vZGU6
OmV4ZWN1dGUoRXhlY1N0YXRlICplCiAgIHJldHVybiBjOwogfQogCi12b2lkIFRyeU5vZGU6OnBy
b2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCit2b2lkIFRyeU5vZGU6OnJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgdHJ5QmxvY2stPnByb2Nlc3NWYXJEZWNscyhl
eGVjKTsKLSAgaWYgKGNhdGNoQmxvY2spCi0gICAgY2F0Y2hCbG9jay0+cHJvY2Vzc1ZhckRlY2xz
KGV4ZWMpOwotICBpZiAoZmluYWxseUJsb2NrKQotICAgIGZpbmFsbHlCbG9jay0+cHJvY2Vzc1Zh
ckRlY2xzKGV4ZWMpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdHJ5QmxvY2spOwor
ICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgY2F0Y2hCbG9jayk7CisgICAgcmVjdXJzZVZp
c2l0TGluayh2aXNpdG9yLCBmaW5hbGx5QmxvY2spOworfQorCit2b2lkIFRyeU5vZGU6OnJlY3Vy
c2VWaXNpdE5vbkNhdGNoKE5vZGVWaXNpdG9yKiB2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgdHJ5QmxvY2spOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
ZmluYWxseUJsb2NrKTsgLy8jIyMgY2hlY2sgdGhpcz8KIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFBhcmFtZXRlck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KQEAgLTI0MjMsMjYgKzI4MDQsODAgQEAgdm9pZCBQYXJhbWV0ZXJOb2RlOjpicmVha0N5
Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgUGFyYW1ldGVyTm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgbmV4dCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlv
bkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEZ1bmN0aW9uQm9keU5v
ZGU6OkZ1bmN0aW9uQm9keU5vZGUoU291cmNlRWxlbWVudHNOb2RlICpzKQogICAgIDogQmxvY2tO
b2RlKHMpCiAgICAgLCBtX3NvdXJjZVVSTChMZXhlcjo6Y3VycigpLT5zb3VyY2VVUkwoKSkKICAg
ICAsIG1fc291cmNlSWQoUGFyc2VyOjpzaWQpCisgICAgLCBtX2J1aWx0U3ltYm9sTGlzdChmYWxz
ZSkKIHsKIAogICBzZXRMb2MoLTEsIC0xKTsKIH0KIAotdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpw
cm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlICpleGVjKQordm9pZCBGdW5jdGlvbkJvZHlOb2RlOjph
ZGRWYXJEZWNsKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgYXR0ciwgRXhlY1N0YXRlKiBl
eGVjKQogewotICAgIGlmIChzb3VyY2UpCi0gICAgICAgIHNvdXJjZS0+cHJvY2Vzc0Z1bmNEZWNs
KGV4ZWMpOworICAvLyBUaGVyZSBpcyBvbmUgbmFzdHkgc3BlY2lhbCBjYXNlOiBpZ25vcmUgYSAn
dmFyJyBkZWNsYXJhdGlvbiBvZiAnYXJndW1lbnRzJzsKKyAgLy8gaXQgZWZmZWN0aXZlbHkgZG9l
c24ndCBkbyBhbnl0aGluZyBzaW5jZSB0aGUgbWFnaWMgJ2FyZ3VtZW50cycgaXMgYWxyZWFkeSAK
KyAgLy8gaW4gc2NvcGUgYW55d2F5LCBhbmQgaWYgd2UgYWxsb2NhdGVkIGEgbG9jYWwsIHdlIHdv
dWxkIGhhdmUgdG8gd29ycnkgYWJvdXQKKyAgLy8ga2VlcGluZyB0cmFjayBvZiB3aGV0aGVyIGl0
IHdhcyBpbml0aWFsaXplZCBvciBub3Qgb24gd2hhdCBpcyBzdXBwb3NlZCB0byBiZSB0aGUgCisg
IC8vIGZhc3QgcGF0aC4gU28gd2UganVzdCBtYWtlIHRoaXMgZ28gdGhyb3VnaCB0aGUgcHJvcGVy
dHkgbWFwIGluc3RlYWQuCisgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1hdHRlciBmb3Ig
cGFyYW1ldGVycyBvciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMsCisgIC8vIHNpbmNlIHRob3NlIG92
ZXJ3cml0ZSB0aGUgbWFnaWMgJ2FyZ3VtZW50cycgYW55d2F5LgorICBpZiAoaWRlbnQgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKKyAgICByZXR1cm47CisKKyAgKHZvaWQpIGFk
ZFN5bWJvbChpZGVudCwgYXR0cik7Cit9CisKK3ZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6YWRkRnVu
Y0RlY2woY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBhdHRyLCBGdW5jRGVjbE5vZGUqIGZ1
bmNEZWNsKQoreworICAodm9pZCkgYWRkU3ltYm9sKGlkZW50LCBhdHRyLCBmdW5jRGVjbCk7Cit9
CisKK2ludCBGdW5jdGlvbkJvZHlOb2RlOjphZGRTeW1ib2woY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGludCBmbGFncywgRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCkKK3sKKyAgLy8gV2UgZ2V0IHN5
bWJvbHMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBpbiAxMC4xLjMsIGJ1dCBzb21ldGltZXMKKyAg
Ly8gdGhlIGxhdGVyIG9uZXMgYXJlIHN1cHBvc2VkIHRvIGxvc2UuIFRoaXMgLW1vc3RseS0gZG9l
cyBub3QgCisgIC8vIG1hdHRlciBmb3IgdXMgLS0tIHdlIHByaW1hcmlseSBjb25jZXJuIG91cnNl
bHZlcyB3aXRoIG5hbWUvSUQKKyAgLy8gbWFwcGluZywgYnV0IHRoZXJlIGlzIGFuIGlzc3VlIG9m
IGF0dHJpYnV0ZXMgYW5kIGZ1bmNEZWNsJ3MuCisgIC8vIEhvd2V2ZXIsIHRoZSBvbmx5IGZsYWcg
dGhhdCBtYXR0ZXJzIGhlcmUgaXMgUmVhZE9ubHkgLS0gCisgIC8vIGV2ZXJ5dGhpbmcgZWxzZSBq
dXN0IGhhcyBEb250RGVsZXRlIHNldDsgYW5kIGl0J3MgZnJvbSBjb25zdCwgCisgIC8vIHNvIHdl
IGNhbiBqdXN0IGlnbm9yZSBpdCBvbiByZXBldGl0aW9ucywgc2luY2UgdmFyL2NvbnN0IHNob3Vs
ZCBsb3NlCisgIC8vIGFuZCBhcmUgYXQgdGhlIGVuZC4KKyAgLy8KKyAgLy8gQW5kIGZvciBmdW5j
RGVjbCwgc2luY2UgZnVuY3Rpb25zIHdpbiBvdmVyIGV2ZXJ5dGhpbmcsIHdlIGFsd2F5cyBzZXQg
aXQgaWYgbm9uLXplcm8KKyAgaWYgKEpTVmFsdWUqIG9sZElkVmFsID0gbV9zeW1ib2xUYWJsZS5n
ZXQoaWRlbnQpKSB7CisgICAgaW50IG9sZElkID0gKGludClvbGRJZFZhbC0+Z2V0TnVtYmVyKCk7
CisgICAgaWYgKGZ1bmNEZWNsKQorICAgICAgbV9zeW1ib2xMaXN0W29sZElkIC0gMV0uZnVuY0Rl
Y2wgPSBmdW5jRGVjbDsKKyAgICByZXR1cm4gb2xkSWQ7CisgIH0KKyAgICAKKyAgaW50IGlkID0g
bV9zeW1ib2xMaXN0LnNpemUoKSArIDE7ICAgICAgICAgLy9GaXJzdCBlbnRyeSBnZXRzIDEsIGV0
Yy4KKyAgbV9zeW1ib2xUYWJsZS5wdXQoaWRlbnQsIGpzTnVtYmVyKGlkKSwgMCk7CisgIG1fc3lt
Ym9sTGlzdC5hcHBlbmQgKFN5bWJvbChpZGVudCwgZmxhZ3MsIGZ1bmNEZWNsKSk7CisgIHJldHVy
biBpZDsKK30KKworaW50IEZ1bmN0aW9uQm9keU5vZGU6Omxvb2t1cFN5bWJvbElEKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KSBjb25zdAoreworICBKU1ZhbHVlKiB2YWwgPSBtX3N5bWJvbFRhYmxl
LmdldChpZGVudCk7CisgIGlmICghdmFsKQorICAgIHJldHVybiAtMTsKKyAgcmV0dXJuIChpbnQp
IHZhbC0+Z2V0TnVtYmVyKCk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6YWRkUGFyYW0o
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gIG1fcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1l
dGVyKGlkZW50KSk7CisgIGludCBpZCA9IGFkZFN5bWJvbChpZGVudCwgRG9udERlbGV0ZSk7Cisg
IG1fcGFyYW1MaXN0LmFwcGVuZChQYXJhbWV0ZXIoaWRlbnQsIGlkKSk7CiB9CiAKIFVTdHJpbmcg
RnVuY3Rpb25Cb2R5Tm9kZTo6cGFyYW1TdHJpbmcoKSBjb25zdApAQCAtMjQ1OCw3ICsyODkzLDYg
QEAgVVN0cmluZyBGdW5jdGlvbkJvZHlOb2RlOjpwYXJhbVN0cmluZygpIAogICByZXR1cm4gczsK
IH0KIAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0RlY2xOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEZ1bmNEZWNsTm9kZTo6YWRk
UGFyYW1zKCkgCkBAIC0yNDcyLDcgKzI5MDYsMjggQEAgdm9pZCBGdW5jRGVjbE5vZGU6OnByb2Nl
c3NGdW5jRGVjbChFeGVjUwogewogICBDb250ZXh0ICpjb250ZXh0ID0gZXhlYy0+Y29udGV4dCgp
OwogCisgIC8vIFNlZSB3aGV0aGVyIHdlIGp1c3QgbmVlZCB0byBmaWxsIGluIHRoZSBzeW1ib2wg
dGFibGUsIAorICAvLyBvciBhY3R1YWxseSBmaWRkbGUgd2l0aCBvYmplY3RzLgorICBpbnQgZmxh
Z3MgPSBJbnRlcm5hbCB8IERvbnREZWxldGU7CisgIHN3aXRjaCAoZXhlYy0+Y29udGV4dCgpLT5j
b2RlVHlwZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvZGU6CisgICAgICAvLyBJbnNpZGUgYSBm
dW5jdGlvbiwganVzdCBuZWVkIHN5bWJvbCBpbmZvCisgICAgICBleGVjLT5jb250ZXh0KCktPmN1
cnJlbnRCb2R5KCktPmFkZEZ1bmNEZWNsKGlkZW50LCBmbGFncywgdGhpcyk7CisgICAgICByZXR1
cm47CisgICAgY2FzZSBFdmFsQ29kZToKKyAgICAgIC8vIGV2YWwtaW5qZWN0ZWQgc3ltYm9scyBj
YW4gYmUgZGVsZXRlZC4uLgorICAgICAgZmxhZ3MgJj0gfkRvbnREZWxldGU7CisgICAgICAKKyAg
ICAgIC8vIGZhbGx0aHJvdWdoIGludGVudGlvbmFsCisgICAgY2FzZSBHbG9iYWxDb2RlOgorICAg
ICAgY29udGV4dC0+dmFyaWFibGVPYmplY3QoKS0+cHV0KGV4ZWMsIGlkZW50LCBtYWtlRnVuY3Rp
b25PYmplY3QoZXhlYyksIGZsYWdzKTsKKyAgfTsKK30KKworRnVuY3Rpb25JbXAqIEZ1bmNEZWNs
Tm9kZTo6bWFrZUZ1bmN0aW9uT2JqZWN0KEV4ZWNTdGF0ZSAqZXhlYykKK3sKICAgLy8gVE9ETzog
bGV0IHRoaXMgYmUgYW4gb2JqZWN0IHdpdGggW1tDbGFzc11dIHByb3BlcnR5ICJGdW5jdGlvbiIK
KyAgQ29udGV4dCAqY29udGV4dCA9IGV4ZWMtPmNvbnRleHQoKTsKICAgRnVuY3Rpb25JbXAgKmZ1
bmMgPSBuZXcgRGVjbGFyZWRGdW5jdGlvbkltcChleGVjLCBpZGVudCwgYm9keS5nZXQoKSwgY29u
dGV4dC0+c2NvcGVDaGFpbigpKTsKIAogICBKU09iamVjdCAqcHJvdG8gPSBleGVjLT5sZXhpY2Fs
SW50ZXJwcmV0ZXIoKS0+YnVpbHRpbk9iamVjdCgpLT5jb25zdHJ1Y3QoZXhlYywgTGlzdDo6ZW1w
dHkoKSk7CkBAIC0yNDgxLDE5ICsyOTM2LDcgQEAgdm9pZCBGdW5jRGVjbE5vZGU6OnByb2Nlc3NG
dW5jRGVjbChFeGVjUwogCiAgIGZ1bmMtPnB1dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcihib2R5LT5udW1QYXJhbXMoKSksIFJlYWRPbmx5fERvbnREZWxldGV8
RG9udEVudW0pOwogCi0gIC8vIEVDTUEgMTAuMi4yCi0gIGNvbnRleHQtPnZhcmlhYmxlT2JqZWN0
KCktPnB1dChleGVjLCBpZGVudCwgZnVuYywgSW50ZXJuYWwgfCAoY29udGV4dC0+Y29kZVR5cGUo
KSA9PSBFdmFsQ29kZSA/IDAgOiBEb250RGVsZXRlKSk7Ci0KLSAgaWYgKGJvZHkpIHsKLSAgICAv
LyBoYWNrIHRoZSBzY29wZSBzbyB0aGF0IHRoZSBmdW5jdGlvbiBnZXRzIHB1dCBhcyBhIHByb3Bl
cnR5IG9mIGZ1bmMsIGFuZCBpdCdzIHNjb3BlCi0gICAgLy8gY29udGFpbnMgdGhlIGZ1bmMgYXMg
d2VsbCBhcyBvdXIgY3VycmVudCBzY29wZQotICAgIEpTT2JqZWN0ICpvbGRWYXIgPSBjb250ZXh0
LT52YXJpYWJsZU9iamVjdCgpOwotICAgIGNvbnRleHQtPnNldFZhcmlhYmxlT2JqZWN0KGZ1bmMp
OwotICAgIGNvbnRleHQtPnB1c2hTY29wZShmdW5jKTsKLSAgICBib2R5LT5wcm9jZXNzRnVuY0Rl
Y2woZXhlYyk7Ci0gICAgY29udGV4dC0+cG9wU2NvcGUoKTsKLSAgICBjb250ZXh0LT5zZXRWYXJp
YWJsZU9iamVjdChvbGRWYXIpOwotICB9CisgIHJldHVybiBmdW5jOwogfQogCiBDb21wbGV0aW9u
IEZ1bmNEZWNsTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKikKQEAgLTI1MDEsNiArMjk0NCwxMiBA
QCBDb21wbGV0aW9uIEZ1bmNEZWNsTm9kZTo6ZXhlY3V0ZShFeGVjU3RhCiAgICAgcmV0dXJuIENv
bXBsZXRpb24oTm9ybWFsKTsKIH0KIAordm9pZCBGdW5jRGVjbE5vZGU6OnJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHBh
cmFtKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGJvZHkpOworfQorCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0V4cHJOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDEzCkBAIC0yNTM3LDYgKzI5ODYsMTIgQEAgSlNW
YWx1ZSAqRnVuY0V4cHJOb2RlOjpldmFsdWF0ZShFeGVjU3RhdAogICByZXR1cm4gZnVuYzsKIH0K
IAordm9pZCBGdW5jRXhwck5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikK
K3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHBhcmFtKTsKKyAgICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIGJvZHkpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gU291cmNlRWxlbWVudHNOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBp
bnQgU291cmNlRWxlbWVudHNOb2RlOjpjb3VudCA9IDA7CkBAIC0yNTY3LDEwICszMDIyLDEzIEBA
IENvbXBsZXRpb24gU291cmNlRWxlbWVudHNOb2RlOjpleGVjdXRlKEUKICAgCiAgIGZvciAoU291
cmNlRWxlbWVudHNOb2RlICpuID0gbmV4dC5nZXQoKTsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpIHsK
ICAgICBDb21wbGV0aW9uIGMyID0gbi0+bm9kZS0+ZXhlY3V0ZShleGVjKTsKLSAgICBpZiAoYzIu
Y29tcGxUeXBlKCkgIT0gTm9ybWFsKQotICAgICAgcmV0dXJuIGMyOwotICAgIC8vIFRoZSBzcGVj
IHNheXMgdG8gcmV0dXJuIGMyIGhlcmUsIGJ1dCBpdCBzZWVtcyB0aGF0IG1vemlsbGEgcmV0dXJu
cyBjMSBpZgotICAgIC8vIGMyIGRvZXNuJ3QgaGF2ZSBhIHZhbHVlCisgICAgaWYgKGMyLmNvbXBs
VHlwZSgpICE9IE5vcm1hbCkgeworICAgICAgICBpZiAoYzIuY29tcGxUeXBlKCkgPT0gVGhyb3cg
fHwgYzIuaXNWYWx1ZUNvbXBsZXRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBjMjsKKworICAg
ICAgICByZXR1cm4gQ29tcGxldGlvbihjMi5jb21wbFR5cGUoKSwgYzEudmFsdWUoKSwgYzIudGFy
Z2V0KCkpOworICAgIH0KKwogICAgIGlmIChjMi52YWx1ZSgpKQogICAgICAgYzEgPSBjMjsKICAg
fQpAQCAtMjU3OSwyMyArMzAzNywyOSBAQCBDb21wbGV0aW9uIFNvdXJjZUVsZW1lbnRzTm9kZTo6
ZXhlY3V0ZShFCiB9CiAKIC8vIEVDTUEgMTQKLXZvaWQgU291cmNlRWxlbWVudHNOb2RlOjpwcm9j
ZXNzRnVuY0RlY2woRXhlY1N0YXRlICpleGVjKQotewotICBmb3IgKFNvdXJjZUVsZW1lbnRzTm9k
ZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgpKQotICAgIG4tPm5vZGUtPnByb2Nlc3NG
dW5jRGVjbChleGVjKTsKLX0KLQotdm9pZCBTb3VyY2VFbGVtZW50c05vZGU6OnByb2Nlc3NWYXJE
ZWNscyhFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGZvciAoU291cmNlRWxlbWVudHNOb2RlICpuID0g
dGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0gICAgbi0+bm9kZS0+cHJvY2Vzc1ZhckRlY2xz
KGV4ZWMpOwotfQogCiB2b2lkIFNvdXJjZUVsZW1lbnRzTm9kZTo6YnJlYWtDeWNsZSgpIAogeyAK
ICAgICBuZXh0ID0gMDsKIH0KIAordm9pZCBTb3VyY2VFbGVtZW50c05vZGU6OnJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IG5vZGUpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbmV4dCk7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShTb3VyY2VFbGVt
ZW50c05vZGUgKnMpIDogRnVuY3Rpb25Cb2R5Tm9kZShzKQogewogfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gRXJyb3JOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCitDb21wbGV0aW9uIEVycm9yTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKmV4
ZWMpCit7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yQ29tcGxldGlvbihleGVjLCBTeW50YXhFcnJv
ciwgbWVzc2FnZS5jc3RyaW5nKCkuY19zdHIoKSk7Cit9CisKK30gLy9uYW1lc3BhY2UgS0pTCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvbm9kZXMuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
bm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDggQEAKICAqICBDb3B5cmlnaHQgKEMp
IDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAo
QykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5vcmcp
CisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRl
cmxvby5jYSkKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNyw4ICsyOSwxMCBAQAogCiAjaW5j
bHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJyZWZlcmVu
Y2UuaCIKICNpbmNsdWRlIDx3dGYvTGlzdFJlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiAjaWYgUExBVEZPUk0oWDg2KSAmJiBDT01Q
SUxFUihHQ0MpCiAjZGVmaW5lIEtKU19GQVNUX0NBTEwgX19hdHRyaWJ1dGVfXygocmVncGFybSgz
KSkpCkBAIC00NCwxMiArNDgsMTkgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKKyAgY2xhc3MgU3Rh
dGljVmFyU3RhdGVtZW50Tm9kZTsKICAgY2xhc3MgUHJvZ3JhbU5vZGU7CiAgIGNsYXNzIFByb3Bl
cnR5TmFtZU5vZGU7CiAgIGNsYXNzIFByb3BlcnR5TGlzdE5vZGU7CiAgIGNsYXNzIFJlZ0V4cDsK
ICAgY2xhc3MgU291cmNlRWxlbWVudHNOb2RlOwogICBjbGFzcyBTb3VyY2VTdHJlYW07CisgIGNs
YXNzIEZ1bmNEZWNsTm9kZTsKKyAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZTsKKyAgY2xhc3MgTm9k
ZTsKKyAgCisgIGNsYXNzIFZhckRlY2xWaXNpdG9yOworICBjbGFzcyBGdW5jRGVjbFZpc2l0b3I7
CiAKICAgZW51bSBPcGVyYXRvciB7IE9wRXF1YWwsCiAgICAgICAgICAgICAgICAgICBPcEVxRXEs
CkBAIC04Miw2ICs5MywyMSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAgICAgICAgIE9w
SW5zdGFuY2VPZgogICB9OwogCisgIGNsYXNzIE5vZGVWaXNpdG9yIHsKKyAgcHVibGljOgorICAg
IC8qKgorICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2Vz
IHRvIHByb2Nlc3Mgbm9kZXMsIGFuZCAKKyAgICAgcGVyaGFwcyByZXR1cm4gcG9pbnRlcnMgZm9y
IHJlcGxhY2VtZW50IG5vZGVzLiBJZiB0aGUgbm9kZSBzaG91bGQgbm90IGJlIAorICAgICBjaGFu
Z2VkLCByZXR1cm4gMC4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHJlcGxhY2VtZW50IG5vZGUuCisK
KyAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYXNrcyB0aGUgbm9kZSB0byB2aXNpdCBp
dHMga2lkcywgYW5kIGRvIAorICAgICByZXBsYWNlbWVudHMgb24gdGhlbSBpZiBuZWVkZWQsIGJ1
dCBkb2VzIG5vdCBjaGFuZ2UgYW55dGhpbmcgZm9yIHRoaXMgbm9kZQorICAgICovCisgICAgdmly
dHVhbCB+Tm9kZVZpc2l0b3IoKTsKKworICAgIHZpcnR1YWwgTm9kZSogdmlzaXQoTm9kZSogbm9k
ZSkgS0pTX0ZBU1RfQ0FMTDsKKyAgfTsKKwogICBjbGFzcyBOb2RlIHsKICAgcHVibGljOgogICAg
IE5vZGUoKSBLSlNfRkFTVF9DQUxMOwpAQCAtOTAsNyArMTE2LDYgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpIEtKU19GQVNU
X0NBTEwgPSAwOwogICAgIFVTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCBLSlNfRkFTVF9DQUxMOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEwge30KICAgICBpbnQgbGluZU5vKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJl
dHVybiBtX2xpbmU7IH0KIAogICAgIHZvaWQgcmVmKCkgS0pTX0ZBU1RfQ0FMTDsKQEAgLTEwMSwx
NyArMTI2LDY3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgTm9kZSAqbm9kZUluc2lk
ZUFsbFBhcmVucygpIEtKU19GQVNUX0NBTEw7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlv
bigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJBY2Nlc3NOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUo
KSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc0dyb3VwTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUcnlOb2RlKCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbnRyb2R1Y2VzTmV3
U3RhdGljU2NvcGUgKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBpbnRyb2R1Y2VzTmV3RHluYW1pY1Njb3BlKCkgY29uc3QgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRl
bWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNTd2l0Y2hTdGF0ZW1lbnQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmFyU3RhdGVtZW50KCkgY29uc3QgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBpbnRyb2R1Y2VzTmV3U2NvcGUoKSBj
b25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGludHJvZHVjZXNOZXdTdGF0aWNTY29wZSgpIHx8
IGludHJvZHVjZXNOZXdEeW5hbWljU2NvcGUoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGJyZWFr
Q3ljbGUoKSBLSlNfRkFTVF9DQUxMIHsgfQogCi0gIHByb3RlY3RlZDoKKyAgICAvLyBQcm9jZXNz
ZXMgYWxsIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgYmVsb3cgdGhpcyBub2Rl
LCAKKyAgICAvLyBhZGRpbmcgdGhlbSB0byBzeW1ib2wgdGFibGUgb3IgdGhlIGN1cnJlbnQgb2Jq
ZWN0IGRlcGVuZGluZyBvbiB0aGUgCisgICAgLy8gZXhlY3V0aW9uIGNvbnRleHQuLgorICAgIHZv
aWQgcHJvY2Vzc0RlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisKKyAgICAvKgorICAg
ICAgSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIHNob3VsZCBjYWxsIHZpc2l0b3ItPnZp
c2l0IG9uIGFsbCB0aGUgCisgICAgICBjaGlsZHJlbiBub2RlcywgYW5kIGlmIHRoZXkgcmV0dXJu
IHZhbHVlIGlzIG5vbi0wLCB1cGRhdGUgdGhlIGxpbmsgdG8gdGhlIGNoaWxkLgorICAgICAgVGhl
IHJlY3Vyc2VWaXNpdExpbmsgaGVscGVyIHRha2VzIGNhcmUgb2YgdGhpcworICAgICovCisgICAg
dmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqIC8qdmlzaXRvciovKSBLSlNf
RkFTVF9DQUxMIHt9CisKKyAgICAvKgorICAgICAgTm9kZXMgdGhhdCBjYW4gYmUgb3B0aW1pemVk
IHRvIHRha2UgYWR2YW50YWdlIG9mIG51bWVyaWMgYmluZGluZyB0byAKKyAgICAgIGxvY2FscyBz
aG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAgKi8KKyAgICB2aXJ0dWFsIE5vZGUqIG9w
dGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2Rl
KSBLSlNfRkFTVF9DQUxMOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMg
dm9pZCByZWN1cnNlVmlzaXRMaW5rKE5vZGVWaXNpdG9yKiB2aXNpdG9yLCBSZWZQdHI8VD4mIGxp
bmspCisgICAgeworICAgICAgICBpZiAoIWxpbmspCisgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIFQqIG5ld0xpbmsgPSBzdGF0aWNfY2FzdDxUKj4odmlzaXRvci0+dmlzaXQobGluay5nZXQo
KSkpOworICAgICAgICBpZiAobmV3TGluaykKKyAgICAgICAgICBsaW5rID0gbmV3TGluazsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIHN0YXRpYyB2b2lkIHJlY3Vyc2VW
aXNpdExpbmsoTm9kZVZpc2l0b3IqIHZpc2l0b3IsIExpc3RSZWZQdHI8VD4mIGxpbmspCisgICAg
eworICAgICAgICBpZiAoIWxpbmspCisgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFQqIG5l
d0xpbmsgPSBzdGF0aWNfY2FzdDxUKj4odmlzaXRvci0+dmlzaXQobGluay5nZXQoKSkpOworICAg
ICAgICBpZiAobmV3TGluaykKKyAgICAgICAgICBsaW5rID0gbmV3TGluazsKKyAgICB9CisKICAg
ICBDb21wbGV0aW9uIGNyZWF0ZUVycm9yQ29tcGxldGlvbihFeGVjU3RhdGUgKiwgRXJyb3JUeXBl
LCBjb25zdCBjaGFyICptc2cpIEtKU19GQVNUX0NBTEw7CiAgICAgQ29tcGxldGlvbiBjcmVhdGVF
cnJvckNvbXBsZXRpb24oRXhlY1N0YXRlICosIEVycm9yVHlwZSwgY29uc3QgY2hhciAqbXNnLCBj
b25zdCBJZGVudGlmaWVyICYpIEtKU19GQVNUX0NBTEw7CiAKKyAgICBOb2RlKiBjcmVhdGVFcnJv
ck5vZGUoRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIgKm1zZyk7CisgICAgTm9kZSogY3JlYXRlRXJy
b3JOb2RlKEVycm9yVHlwZSBlLCBjb25zdCBjaGFyICptc2csIGNvbnN0IElkZW50aWZpZXIgJmlk
ZW50KTsKKwogICAgIEpTVmFsdWUgKnRocm93RXJyb3IoRXhlY1N0YXRlICosIEVycm9yVHlwZSwg
Y29uc3QgY2hhciAqbXNnKSBLSlNfRkFTVF9DQUxMOwogICAgIEpTVmFsdWUqIHRocm93RXJyb3Io
RXhlY1N0YXRlICosIEVycm9yVHlwZSwgY29uc3QgY2hhciogbXNnLCBjb25zdCBjaGFyKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVlICp0aHJvd0Vycm9yKEV4ZWNTdGF0ZSAqLCBFcnJvclR5
cGUsIGNvbnN0IGNoYXIgKm1zZywgSlNWYWx1ZSAqLCBOb2RlICopIEtKU19GQVNUX0NBTEw7CkBA
IC0xMjUsMTMgKzIwMCwzMyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2b2lkIGhhbmRsZUV4Y2Vw
dGlvbihFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZvaWQgaGFuZGxlRXhjZXB0aW9u
KEV4ZWNTdGF0ZSosIEpTVmFsdWUqKSBLSlNfRkFTVF9DQUxMOwogCitwcm90ZWN0ZWQ6CisgICAg
LyogTm9kZXMgdGhhdCBjYW4gZG8gc2VtYW50aWMgY2hlY2tpbmcgc2hvdWxkIG92ZXJyaWRlIHRo
aXMsCisgICAgICAgYW5kIHJldHVybiBhbiBhcHByb3ByaWF0ZSBlcnJvciBub2RlIGlmIGFwcHJv
cHJpYXRlLiBUaGUgcmVpbXBsZW1lbnRhdGlvbnMKKyAgICAgICBzaG91bGQgY2FsbCB0aGUgcGFy
ZW50IGNsYXNzJ3MgY2hlY2tTZW1hbnRpY3MgbWV0aG9kIGF0IHBvaW50IHdoZXJlCisgICAgICAg
cmVjdXJzaW9uIHNob3VsZCBvY2N1cgorICAgICovCisgICAgZnJpZW5kIGNsYXNzIFNlbWFudGlj
Q2hlY2tlcjsKKyAgICB2aXJ0dWFsIE5vZGUqIGNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tl
ciogc2VtYW50aWNDaGVja2VyKSBLSlNfRkFTVF9DQUxMOworCiAgICAgaW50IG1fbGluZTsKICAg
cHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2woRXhlY1N0YXRlKiBzdGF0
ZSkgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNT
dGF0ZSogc3RhdGUpIEtKU19GQVNUX0NBTEw7CisgICAgZnJpZW5kIGNsYXNzIFZhckRlY2xWaXNp
dG9yOworICAgIGZyaWVuZCBjbGFzcyBGdW5jRGVjbFZpc2l0b3I7CisKICAgICAvLyBkaXNhbGxv
dyBhc3NpZ25tZW50CiAgICAgTm9kZSYgb3BlcmF0b3I9KGNvbnN0IE5vZGUmKSBLSlNfRkFTVF9D
QUxMOwogICAgIE5vZGUoY29uc3QgTm9kZSAmb3RoZXIpIEtKU19GQVNUX0NBTEw7CiAgIH07CiAK
KyAgY2xhc3MgTG9jYXRpb25Ob2RlIDogcHVibGljIE5vZGUgeworICBwdWJsaWM6CisgICAgdmly
dHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4
ZWMpIEtKU19GQVNUX0NBTEwgPSAwOworICB9OworCiAgIGNsYXNzIFN0YXRlbWVudE5vZGUgOiBw
dWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKICAgICBTdGF0ZW1lbnROb2RlKCkgS0pTX0ZBU1RfQ0FM
TDsKQEAgLTE0MCwxMCArMjM1LDEyIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGludCBsYXN0TGlu
ZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9sYXN0TGluZTsgfQogICAgIGJvb2wg
aGl0U3RhdGVtZW50KEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCBDb21w
bGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKSBLSlNfRkFTVF9DQUxMID0gMDsKLSAgICB2
b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyICZpZCkgS0pTX0ZBU1RfQ0FMTCB7IGxzLnB1
c2goaWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6Ci0gICAgTGFiZWxTdGFjayBsczsKKyAgICAvKiBU
aGlzIGltcGxlbWVudGF0aW9uIG9mIGNoZWNrU2VtYW50aWNzIGFwcGxpZXMgdGhlIGFjY3VtdWxh
dGVkIGxhYmVscyB0bworICAgICAgIHRoaXMgc3RhdGVtZW50LCBtYW5hZ2VzIHRoZSB0YXJnZXRz
IGZvciBsYWJlbGxlc3MgYnJlYWsgYW5kIGNvbnRpbnVlLAorICAgICAgIGFuZCByZWN1cnNlcy4K
KyAgICAqLworICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2Vy
KiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgSlNWYWx1
ZSAqZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBqc1VuZGVmaW5l
ZCgpOyB9CiAgICAgaW50IG1fbGFzdExpbmU7CkBAIC0yMDAsMTggKzI5NywzOSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKICAgfTsKIAotICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2Rl
IHsKKyAgY2xhc3MgVmFyQWNjZXNzTm9kZSA6IHB1YmxpYyBMb2NhdGlvbk5vZGUgewogICBwdWJs
aWM6Ci0gICAgUmVzb2x2ZU5vZGUoY29uc3QgSWRlbnRpZmllciAmcykgS0pTX0ZBU1RfQ0FMTCA6
IGlkZW50KHMpIHsgfQotICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CisgICAgVmFyQWNjZXNzTm9kZShjb25zdCBJZGVudGlmaWVyJiBzKSBLSlNfRkFTVF9D
QUxMIDogaWRlbnQocykge30KKyAgICB2aXJ0dWFsIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3Mo
RXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOwor
CisgICAgdmlydHVhbCBib29sIGlzVmFyQWNjZXNzTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgSlNWYWx1ZSogZXZhbHVhdGUoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFJlZmVyZW5jZSBldmFsdWF0ZVJl
ZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIEtKU19GQVNUX0NBTEw7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IEtKU19G
QVNUX0NBTEwgeyByZXR1cm4gaWRlbnQ7IH0KKyAgICAvLyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUg
bG9jYWwgdGhpcyBpcyBib3VuZCB0bywgCisgICAgLy8gb3IgLTEgaWYgbm9uLWxvY2FsCisgICAg
aW50IGxvY2FsSUQoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY0JvZHkpIEtKU19GQVNUX0NBTEw7Cisg
IHByb3RlY3RlZDoKKyAgICBJZGVudGlmaWVyIGlkZW50OworICB9OwogCisgIGNsYXNzIExvY2Fs
VmFyQWNjZXNzTm9kZSA6IHB1YmxpYyBWYXJBY2Nlc3NOb2RlIHsKKyAgcHVibGljOgorICAgIExv
Y2FsVmFyQWNjZXNzTm9kZShjb25zdCBJZGVudGlmaWVyJiBzLCB1aW50MzJfdCBpKSBLSlNfRkFT
VF9DQUxMIDogVmFyQWNjZXNzTm9kZShzKSwgaW5kZXgoaSkge30KKyAgICAKKyAgICB2aXJ0dWFs
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVh
bCBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0YXRlKiBleGVjKSBLSlNfRkFTVF9D
QUxMOwogICBwcml2YXRlOgotICAgIElkZW50aWZpZXIgaWRlbnQ7CisgICAgdWludDMyX3QgaW5k
ZXg7CisgIH07CisKKyAgY2xhc3MgTm9uTG9jYWxWYXJBY2Nlc3NOb2RlIDogcHVibGljIFZhckFj
Y2Vzc05vZGUgeworICBwdWJsaWM6CisgICAgTm9uTG9jYWxWYXJBY2Nlc3NOb2RlKGNvbnN0IElk
ZW50aWZpZXImIHMpIEtKU19GQVNUX0NBTEwgOiBWYXJBY2Nlc3NOb2RlKHMpIHt9CisKKyAgICB2
aXJ0dWFsIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisgICAg
dmlydHVhbCBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0YXRlKiBleGVjKSBLSlNf
RkFTVF9DQUxMOwogICB9OwogCiAgIGNsYXNzIEdyb3VwTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAg
LTIyMSw2ICszMzksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIE5vZGUgKm5vZGVJ
bnNpZGVBbGxQYXJlbnMoKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgYm9vbCBp
c0dyb3VwTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NB
TEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGdyb3VwOwogICB9OwpAQCAtMjM1LDYg
KzM1NCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NSZWZQdHI8RWxlbWVudE5v
ZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBcnJheU5vZGU7CiAgICAgTGlzdFJlZlB0
cjxFbGVtZW50Tm9kZT4gbmV4dDsKQEAgLTI1MSw2ICszNzEsNyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgIDogZWxlbWVudChlbGUtPm5leHQucmVsZWFzZSgpKSwgZWxpc2lvbihlbGkpLCBvcHQo
dHJ1ZSkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShlbGVtZW50LmdldCgpKTsgfQogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudE5vZGU+IGVsZW1lbnQ7CiAgICAgaW50
IGVsaXNpb247CkBAIC0yNzYsNiArMzk3LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgSlNWYWx1
ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBmcmllbmQg
Y2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0
cjxQcm9wZXJ0eU5hbWVOb2RlPiBuYW1lOwogICAgIFJlZlB0cjxOb2RlPiBhc3NpZ247CkBAIC0y
OTMsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CiAgICAgUGFzc1JlZlB0cjxQcm9w
ZXJ0eUxpc3ROb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbmV4dC5y
ZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNUX0NBTEw7
CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pT
X0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT2JqZWN0TGl0ZXJhbE5v
ZGU7CiAgICAgUmVmUHRyPFByb3BlcnR5Tm9kZT4gbm9kZTsKQEAgLTMwNSwzOCArNDI4LDQxIEBA
IG5hbWVzcGFjZSBLSlMgewogICAgIE9iamVjdExpdGVyYWxOb2RlKFByb3BlcnR5TGlzdE5vZGUg
KmwpIEtKU19GQVNUX0NBTEwgOiBsaXN0KGwtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNlcjo6cmVt
b3ZlTm9kZUN5Y2xlKGxpc3QuZ2V0KCkpOyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0
KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJl
ZlB0cjxQcm9wZXJ0eUxpc3ROb2RlPiBsaXN0OwogICB9OwogCi0gIGNsYXNzIEJyYWNrZXRBY2Nl
c3Nvck5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIEJyYWNrZXRBY2Nlc3Nvck5vZGUgOiBw
dWJsaWMgTG9jYXRpb25Ob2RlIHsKICAgcHVibGljOgogICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUo
Tm9kZSAqZTEsIE5vZGUgKmUyKSBLSlNfRkFTVF9DQUxMIDogZXhwcjEoZTEpLCBleHByMihlMikg
e30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOworICAg
IFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOwogCi0gICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBLSlNfRkFTVF9DQUxM
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNCcmFja2V0QWNjZXNzb3JOb2Rl
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAgICAgTm9kZSAqYmFzZSgp
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZXhwcjEuZ2V0KCk7IH0KICAgICBOb2RlICpzdWJzY3Jp
cHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGV4cHIyLmdldCgpOyB9CiAKLSAgcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNf
RkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25z
dCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KKyAgcHJvdGVjdGVkOgogICAgIFJlZlB0
cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CiAgIH07CiAKLSAgY2xhc3Mg
RG90QWNjZXNzb3JOb2RlIDogcHVibGljIE5vZGUgeworICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUg
OiBwdWJsaWMgTG9jYXRpb25Ob2RlIHsKICAgcHVibGljOgogICAgIERvdEFjY2Vzc29yTm9kZShO
b2RlICplLCBjb25zdCBJZGVudGlmaWVyICZzKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSwgaWRl
bnQocykgeyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKKyAgICBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVuY2UoRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JO
b2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAgICAgTm9kZSAqYmFz
ZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZXhwci5nZXQoKTsgfQogICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGlk
ZW50OyB9CiAKLSAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFj
Y2Vzc29yTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICBwcm90
ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgSWRlbnRpZmllciBpZGVudDsKICAg
fTsKQEAgLTM1Miw2ICs0NzgsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVm
UHRyPEFyZ3VtZW50TGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZB
U1RfQ0FMTDsKKworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEFyZ3Vt
ZW50c05vZGU7CiAgICAgTGlzdFJlZlB0cjxBcmd1bWVudExpc3ROb2RlPiBuZXh0OwpAQCAtMzY0
LDggKzQ5MiwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBBcmd1bWVudHNOb2RlKEFyZ3VtZW50
TGlzdE5vZGUgKmwpIEtKU19GQVNUX0NBTEwKICAgICAgIDogbGlzdChsLT5uZXh0LnJlbGVhc2Uo
KSkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShsaXN0LmdldCgpKTsgfQogICAgIEpTVmFsdWUq
IGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgTGlzdCBldmFsdWF0ZUxp
c3QoRXhlY1N0YXRlICpleGVjKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGxpc3QgPyBsaXN0LT5l
dmFsdWF0ZUxpc3QoZXhlYykgOiBMaXN0KCk7IH0KKyAgICBMaXN0IGV2YWx1YXRlTGlzdChFeGVj
U3RhdGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbGlzdCA/IGxpc3QtPmV2YWx1YXRl
TGlzdChleGVjKSA6IExpc3Q6OmVtcHR5KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKworICAgIHZpcnR1YWwgdm9pZCBy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZh
dGU6CiAgICAgUmVmUHRyPEFyZ3VtZW50TGlzdE5vZGU+IGxpc3Q7CiAgIH07CkBAIC0zNzYsNiAr
NTA2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgTmV3RXhwck5vZGUoTm9kZSAqZSwgQXJndW1l
bnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30KICAgICBKU1Zh
bHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPEFyZ3VtZW50
c05vZGU+IGFyZ3M7CkBAIC0zODYsMTggKzUxNywyMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGUoTm9kZSAqZSwgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1Rf
Q0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQo
Tm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVm
UHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPEFyZ3VtZW50c05vZGU+IGFyZ3M7CiAgIH07CiAK
LSAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNz
IEZ1bmN0aW9uQ2FsbFJlZmVyZW5jZU5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAg
ICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpLCBBcmd1bWVudHNO
b2RlICphKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSksIGFyZ3MoYSkge30KKyAgICBGdW5jdGlv
bkNhbGxSZWZlcmVuY2VOb2RlKExvY2F0aW9uTm9kZSAqZSwgQXJndW1lbnRzTm9kZSAqYSkgS0pT
X0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6Ci0g
ICAgSWRlbnRpZmllciBpZGVudDsKKyAgICBSZWZQdHI8TG9jYXRpb25Ob2RlPiBleHByOwogICAg
IFJlZlB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOwogICB9OwogCkBAIC00MDYsNiArNTM5LDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoTm9kZSAqYiwgTm9k
ZSAqcywgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGJhc2UoYiksIHN1YnNjcmlw
dChzKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxOb2Rl
PiBiYXNlOwogICAgIFJlZlB0cjxOb2RlPiBzdWJzY3JpcHQ7CkBAIC00MTYsNiArNTUwLDcgQEAg
bmFtZXNwYWNlIEtKUyB7CiAgIHB1YmxpYzoKICAgICBGdW5jdGlvbkNhbGxQYXJlbkJyYWNrZXRO
b2RlKE5vZGUgKmIsIE5vZGUgKnMsIEFyZ3VtZW50c05vZGUgKmEpIEtKU19GQVNUX0NBTEwgOiBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZShiLCBzLCBhKSB7fQogICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIC8vIEZJWE1FIC0g
c2hvdWxkIGhhdmUgcmVjdXJzZSBvciBub3Q/CiAgIH07CiAKICAgY2xhc3MgRnVuY3Rpb25DYWxs
RG90Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTQyMyw2ICs1NTgsNyBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKE5vZGUgKmIsIGNvbnN0IElkZW50aWZpZXIgJmks
IEFyZ3VtZW50c05vZGUgKmEpIEtKU19GQVNUX0NBTEwgOiBiYXNlKGIpLCBpZGVudChpKSwgYXJn
cyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxOb2RlPiBiYXNlOwog
ICAgIElkZW50aWZpZXIgaWRlbnQ7CkBAIC00MzMsMzcgKzU2OSwxOCBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgcHVibGljOgogICAgIEZ1bmN0aW9uQ2FsbFBhcmVuRG90Tm9kZShOb2RlICpiLCBjb25z
dCBJZGVudGlmaWVyICZpLCBBcmd1bWVudHNOb2RlICphKSBLSlNfRkFTVF9DQUxMIDogRnVuY3Rp
b25DYWxsRG90Tm9kZShiLCBpLCBhKSB7fQogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIC8vIEZJWE1FIC0gc2hvdWxkIGhh
dmUgcmVjdXJzZSBvciBub3Q/CiAgIH07CiAKLSAgY2xhc3MgUG9zdGZpeFJlc29sdmVOb2RlIDog
cHVibGljIE5vZGUgeworICBjbGFzcyBQb3N0Zml4Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVi
bGljOgotICAgIFBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpLCBPcGVyYXRv
ciBvKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSwgbV9vcGVyKG8pIHt9CisgICAgUG9zdGZp
eE5vZGUoTG9jYXRpb25Ob2RlICpsLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9sb2Mo
bCksIG1fb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgSWRlbnRpZmllciBtX2lkZW50OwotICAg
IE9wZXJhdG9yIG1fb3BlcjsKLSAgfTsKLQotICBjbGFzcyBQb3N0Zml4QnJhY2tldE5vZGUgOiBw
dWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICBQb3N0Zml4QnJhY2tldE5vZGUoTm9kZSAqYiwg
Tm9kZSAqcywgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiKSwgbV9zdWJzY3Jp
cHQocyksIG1fb3BlcihvKSB7fQotICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsK
LSAgICBSZWZQdHI8Tm9kZT4gbV9zdWJzY3JpcHQ7Ci0gICAgT3BlcmF0b3IgbV9vcGVyOwotICB9
OwotCi0gIGNsYXNzIFBvc3RmaXhEb3ROb2RlIDogcHVibGljIE5vZGUgewotICBwdWJsaWM6Ci0g
ICAgUG9zdGZpeERvdE5vZGUoTm9kZSAqYiwgY29uc3QgSWRlbnRpZmllciYgaSwgT3BlcmF0b3Ig
bykgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiKSwgbV9pZGVudChpKSwgbV9vcGVyKG8pIHt9Ci0g
ICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAg
cHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAgIElkZW50aWZpZXIgbV9pZGVu
dDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7
CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9D
QUxMOworICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5j
dGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOworICBwcm90ZWN0ZWQ6CisgICAgUmVm
UHRyPExvY2F0aW9uTm9kZT4gbV9sb2M7CiAgICAgT3BlcmF0b3IgbV9vcGVyOwogICB9OwogCkBA
IC00NzcsMzMgKzU5NCwxNCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBPcGVyYXRvciBtX29wZXI7
CiAgIH07CiAKLSAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNs
YXNzIERlbGV0ZVJlZmVyZW5jZU5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBE
ZWxldGVSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpKSBLSlNfRkFTVF9DQUxMIDogbV9p
ZGVudChpKSB7fQorICAgIERlbGV0ZVJlZmVyZW5jZU5vZGUoTG9jYXRpb25Ob2RlICpsKSBLSlNf
RkFTVF9DQUxMIDogbG9jKGwpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2
aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgotICAgIElkZW50aWZpZXIgbV9pZGVu
dDsKLSAgfTsKLQotICBjbGFzcyBEZWxldGVCcmFja2V0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKLSAg
cHVibGljOgotICAgIERlbGV0ZUJyYWNrZXROb2RlKE5vZGUgKmJhc2UsIE5vZGUgKnN1YnNjcmlw
dCkgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiYXNlKSwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KSB7
fQotICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7
Ci0gIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsKLSAgICBSZWZQdHI8Tm9kZT4g
bV9zdWJzY3JpcHQ7Ci0gIH07Ci0KLSAgY2xhc3MgRGVsZXRlRG90Tm9kZSA6IHB1YmxpYyBOb2Rl
IHsKLSAgcHVibGljOgotICAgIERlbGV0ZURvdE5vZGUoTm9kZSAqYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaSkgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiYXNlKSwgbV9pZGVudChpKSB7fQotICAg
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHBy
aXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsKLSAgICBJZGVudGlmaWVyIG1faWRlbnQ7
CisgICAgUmVmUHRyPExvY2F0aW9uTm9kZT4gbG9jOwogICB9OwogCiAgIGNsYXNzIERlbGV0ZVZh
bHVlTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTUxMSw2ICs2MDksNyBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBEZWxldGVWYWx1ZU5vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IG1fZXhwcihl
KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikg
S0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9leHByOwogICB9
OwpAQCAtNTIwLDE3ICs2MTksMTkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVm9pZE5vZGUoTm9k
ZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAg
ICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAKLSAgY2xhc3MgVHlwZU9mUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIFR5cGVPZlJlZmVyZW5jZU5vZGUgOiBwdWJsaWMgTm9k
ZSB7CiAgIHB1YmxpYzoKLSAgICBUeXBlT2ZSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBp
KSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSB7fQorICAgIFR5cGVPZlJlZmVyZW5jZU5vZGUo
TG9jYXRpb25Ob2RlICpsKSBLSlNfRkFTVF9DQUxMIDogbG9jKGwpIHt9CiAgICAgSlNWYWx1ZSog
ZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgot
ICAgIElkZW50aWZpZXIgbV9pZGVudDsKKyAgICBSZWZQdHI8TG9jYXRpb25Ob2RlPiBsb2M7CiAg
IH07CiAKICAgY2xhc3MgVHlwZU9mVmFsdWVOb2RlIDogcHVibGljIE5vZGUgewpAQCAtNTM4LDM5
ICs2MzksMjAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVHlwZU9mVmFsdWVOb2RlKE5vZGUgKmUp
IEtKU19GQVNUX0NBTEwgOiBtX2V4cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5vZGU+IG1fZXhwcjsKICAgfTsKIAotICBjbGFzcyBQcmVmaXhSZXNvbHZlTm9kZSA6
IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgUHJlZml4Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVi
bGljOgotICAgIFByZWZpeFJlc29sdmVOb2RlKGNvbnN0IElkZW50aWZpZXImIGksIE9wZXJhdG9y
IG8pIEtKU19GQVNUX0NBTEwgOiBtX2lkZW50KGkpLCBtX29wZXIobykge30KKyAgICBQcmVmaXhO
b2RlKExvY2F0aW9uTm9kZSAqbCwgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fbG9jKGwp
LCBtX29wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOwotICBwcml2YXRlOgotICAgIElkZW50aWZpZXIgbV9pZGVudDsKLSAgICBP
cGVyYXRvciBtX29wZXI7Ci0gIH07Ci0KLSAgY2xhc3MgUHJlZml4QnJhY2tldE5vZGUgOiBwdWJs
aWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICBQcmVmaXhCcmFja2V0Tm9kZShOb2RlICpiLCBOb2Rl
ICpzLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9iYXNlKGIpLCBtX3N1YnNjcmlwdChz
KSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAg
IFJlZlB0cjxOb2RlPiBtX3N1YnNjcmlwdDsKLSAgICBPcGVyYXRvciBtX29wZXI7Ci0gIH07Ci0K
LSAgY2xhc3MgUHJlZml4RG90Tm9kZSA6IHB1YmxpYyBOb2RlIHsKLSAgcHVibGljOgotICAgIFBy
ZWZpeERvdE5vZGUoTm9kZSAqYiwgY29uc3QgSWRlbnRpZmllciYgaSwgT3BlcmF0b3IgbykgS0pT
X0ZBU1RfQ0FMTCA6IG1fYmFzZShiKSwgbV9pZGVudChpKSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0
ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAgIElkZW50aWZpZXIgbV9pZGVudDsKKyAg
ICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAg
dm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwor
ICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJv
ZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOworICBwcm90ZWN0ZWQ6CisgICAgUmVmUHRyPExv
Y2F0aW9uTm9kZT4gbV9sb2M7CiAgICAgT3BlcmF0b3IgbV9vcGVyOwogICB9OwogCkBAIC01ODks
NiArNjcxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVW5hcnlQbHVzTm9kZShOb2RlICplKSBL
SlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Tm9kZT4gZXhwcjsKICAgfTsKQEAgLTU5OCw2ICs2ODEsNyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICBOZWdhdGVOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAg
SlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9D
QUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwogICB9OwpAQCAtNjA3LDYg
KzY5MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEJpdHdpc2VOb3ROb2RlKE5vZGUgKmUpIEtK
U19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0
cjxOb2RlPiBleHByOwogICB9OwpAQCAtNjE2LDYgKzcwMSw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgIExvZ2ljYWxOb3ROb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAg
ICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFT
VF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwogICB9OwpAQCAtNjI1
LDYgKzcxMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIE11bHROb2RlKE5vZGUgKnQxLCBOb2Rl
ICp0MiwgY2hhciBvcCkgS0pTX0ZBU1RfQ0FMTCA6IHRlcm0xKHQxKSwgdGVybTIodDIpLCBvcGVy
KG9wKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gdGVybTE7CiAg
ICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpAQCAtNjM2LDYgKzcyMyw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIEFkZE5vZGUoTm9kZSAqdDEsIE5vZGUgKnQyLCBjaGFyIG9wKSBLSlNfRkFTVF9DQUxM
IDogdGVybTEodDEpLCB0ZXJtMih0MiksIG9wZXIob3ApIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVh
dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRl
OgogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAgICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC02
NDgsNiArNzM2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICA6IHRlcm0xKHQxKSwgdGVybTIo
dDIpLCBvcGVyKG8pIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiB0
ZXJtMTsKICAgICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC02NjAsNiArNzQ5LDcgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgICBleHByMShlMSksIGV4cHIyKGUyKSwgb3BlcihvKSB7fQogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+
IGV4cHIyOwpAQCAtNjcyLDYgKzc2Miw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgOiBleHBy
MShlMSksIGV4cHIyKGUyKSwgb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtNjg0LDYgKzc3
NSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgZXhwcjEoZTEpLCBleHByMihlMiksIG9wZXIo
bykge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
IEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIxOwogICAg
IFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTY5OSw2ICs3OTEsNyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgIGV4cHIxKGUxKSwgZXhwcjIoZTIpLCBvcGVyKG8pIHt9CiAgICAgSlNWYWx1ZSogZXZh
bHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2
YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBA
IC03MTQsMzAgKzgwNywzNCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIGxvZ2ljYWwobCksIGV4
cHIxKGUxKSwgZXhwcjIoZTIpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxO
b2RlPiBsb2dpY2FsOwogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4g
ZXhwcjI7CiAgIH07CiAKLSAgY2xhc3MgQXNzaWduUmVzb2x2ZU5vZGUgOiBwdWJsaWMgTm9kZSB7
CisgIGNsYXNzIEFzc2lnbk5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBBc3Np
Z25SZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyICZpZGVudCwgT3BlcmF0b3Igb3BlciwgTm9k
ZSAqcmlnaHQpIEtKU19GQVNUX0NBTEwKLSAgICAgIDogbV9pZGVudChpZGVudCksIG1fb3Blcihv
cGVyKSwgbV9yaWdodChyaWdodCkge30KKyAgICBBc3NpZ25Ob2RlKExvY2F0aW9uTm9kZSogbG9j
LCBPcGVyYXRvciBvcGVyLCBOb2RlICpyaWdodCkgS0pTX0ZBU1RfQ0FMTCA6CisgICAgICBtX2xv
Yyhsb2MpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CisgICAgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIEpTVmFsdWUqIGV2YWx1
YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIE5vZGUqIG9wdGlt
aXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBL
SlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6Ci0gICAgSWRlbnRpZmllciBtX2lkZW50OworICAg
IFJlZlB0cjxMb2NhdGlvbk5vZGU+IG1fbG9jOwogICAgIE9wZXJhdG9yIG1fb3BlcjsKICAgICBS
ZWZQdHI8Tm9kZT4gbV9yaWdodDsKICAgfTsKIAogICBjbGFzcyBBc3NpZ25CcmFja2V0Tm9kZSA6
IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIEFzc2lnbkJyYWNrZXROb2RlKE5vZGUgKmJh
c2UsIE5vZGUgKnN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgTm9kZSAqcmlnaHQpIEtKU19GQVNU
X0NBTEwKLSAgICAgIDogbV9iYXNlKGJhc2UpLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpLCBtX29w
ZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CisgICAgQXNzaWduQnJhY2tldE5vZGUoTm9kZSAq
YmFzZSwgTm9kZSAqc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBOb2RlICpyaWdodCkgS0pTX0ZB
U1RfQ0FMTCA6CisgICAgICBtX2Jhc2UoYmFzZSksIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCksIG1f
b3BlcihvcGVyKSwgbV9yaWdodChyaWdodCkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByb3RlY3RlZDoKICAg
ICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwogICAgIFJlZlB0cjxOb2RlPiBtX3N1YnNjcmlwdDsKQEAg
LTc0NywxMCArODQ0LDExIEBAIG5hbWVzcGFjZSBLSlMgewogCiAgIGNsYXNzIEFzc2lnbkRvdE5v
ZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBBc3NpZ25Eb3ROb2RlKE5vZGUgKmJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBOb2RlICpyaWdodCkg
S0pTX0ZBU1RfQ0FMTAotICAgICAgOiBtX2Jhc2UoYmFzZSksIG1faWRlbnQoaWRlbnQpLCBtX29w
ZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CisgICAgQXNzaWduRG90Tm9kZShOb2RlICpiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgTm9kZSAqcmlnaHQpIEtK
U19GQVNUX0NBTEwgOgorICAgICAgbV9iYXNlKGJhc2UpLCBtX2lkZW50KGlkZW50KSwgbV9vcGVy
KG9wZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVjdGVkOgogICAgIFJl
ZlB0cjxOb2RlPiBtX2Jhc2U7CiAgICAgSWRlbnRpZmllciBtX2lkZW50OwpAQCAtNzU4LDE1ICs4
NTYsMTUgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUmVmUHRyPE5vZGU+IG1fcmlnaHQ7CiAgIH07
CiAKLSAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGljIE5vZGUgewotICBwdWJsaWM6Ci0g
ICAgQXNzaWduRXJyb3JOb2RlKE5vZGUqIGxlZnQsIE9wZXJhdG9yIG9wZXIsIE5vZGUqIHJpZ2h0
KSBLSlNfRkFTVF9DQUxMCi0gICAgICA6IG1fbGVmdChsZWZ0KSwgbV9vcGVyKG9wZXIpLCBtX3Jp
Z2h0KHJpZ2h0KSB7fQorICBjbGFzcyBBc3NpZ25FcnJvck5vZGUgOiBwdWJsaWMgTm9kZSB7IAor
ICBwdWJsaWM6IAorICAgIEFzc2lnbkVycm9yTm9kZShOb2RlKiBsZWZ0LCBPcGVyYXRvciBvcGVy
LCBOb2RlKiByaWdodCkgIEtKU19GQVNUX0NBTEwgOgorICAgICAgbV9sZWZ0KGxlZnQpLCBtX29w
ZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9IAogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8Tm9k
ZT4gbV9sZWZ0OwotICAgIE9wZXJhdG9yIG1fb3BlcjsKKyAgcHJvdGVjdGVkOiAKKyAgICBSZWZQ
dHI8Tm9kZT4gbV9sZWZ0OyAKKyAgICBPcGVyYXRvciBtX29wZXI7IAogICAgIFJlZlB0cjxOb2Rl
PiBtX3JpZ2h0OwogICB9OwogCkBAIC03NzUsNiArODczLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgQ29tbWFOb2RlKE5vZGUgKmUxLCBOb2RlICplMikgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIxKGUx
KSwgZXhwcjIoZTIpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBl
eHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC03ODUsNiArODg0LDkgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgQXNzaWduRXhwck5vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4
cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0
b3IpIEtKU19GQVNUX0NBTEw7CisKKyAgICBOb2RlKiBnZXRFeHByKCkgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBleHByLmdldCgpOyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7
CiAgIH07CkBAIC03OTQsOSArODk2LDEyIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGVudW0gVHlw
ZSB7IFZhcmlhYmxlLCBDb25zdGFudCB9OwogICAgIFZhckRlY2xOb2RlKGNvbnN0IElkZW50aWZp
ZXIgJmlkLCBBc3NpZ25FeHByTm9kZSAqaW4sIFR5cGUgdCkgS0pTX0ZBU1RfQ0FMTDsKICAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFT
VF9DQUxMOworCisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNsKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFZhclN0YXRlbWVudE5v
ZGU7CiAgICAgSlNWYWx1ZSogaGFuZGxlU2xvd0Nhc2UoRXhlY1N0YXRlKiwgY29uc3QgU2NvcGVD
aGFpbiYsIEpTVmFsdWUqKSBLSlNfRkFTVF9DQUxMIEtKU19OT19JTkxJTkU7CiAgICAgVHlwZSB2
YXJUeXBlOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CkBAIC04MTAsMTAgKzkxNSwxMCBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICBWYXJEZWNsTGlzdE5vZGUoVmFyRGVjbExpc3ROb2RlICpsLCBWYXJE
ZWNsTm9kZSAqdikgS0pTX0ZBU1RfQ0FMTAogICAgICAgOiBuZXh0KGwtPm5leHQpLCB2YXIodikg
eyBsLT5uZXh0ID0gdGhpczsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NSZWZQdHI8VmFyRGVjbExpc3ROb2RlPiBy
ZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbmV4dC5yZWxlYXNlKCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2
b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAg
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRm9yTm9kZTsKICAgICBmcmllbmQgY2xhc3MgVmFy
U3RhdGVtZW50Tm9kZTsKQEAgLTgyNCwxOSArOTI5LDM3IEBAIG5hbWVzcGFjZSBLSlMgewogICBj
bGFzcyBWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICBwdWJsaWM6
CiAgICAgVmFyU3RhdGVtZW50Tm9kZShWYXJEZWNsTGlzdE5vZGUgKmwpIEtKU19GQVNUX0NBTEwg
OiBuZXh0KGwtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKG5leHQu
Z2V0KCkpOyB9CisgICAgdmlydHVhbCBOb2RlKiBvcHRpbWl6ZUxvY2FsQWNjZXNzKEV4ZWNTdGF0
ZSAqZXhlYywgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSkgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0
dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc1ZhclN0YXRlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8VmFyRGVjbExpc3ROb2RlPiBu
ZXh0OwogICB9OwogCisgIC8vIEEgdmVyc2lvbiBvZiBWYXJTdGF0ZW1lbnROb2RlIG9wdGltaXpl
ZCBmb3IgbG9jYWwgYWNjZXNzIC0tLSBpdCBzdG9yZXMgdGhlIAorICAvLyBpbmRleCBsb2NhdGlv
bnMsIGFuZCBhY2Nlc3NlcyB0aGVtIGRpcmVjdGx5LgorICBjbGFzcyBTdGF0aWNWYXJTdGF0ZW1l
bnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIHZpcnR1YWwgQ29tcGxldGlvbiBl
eGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lk
IHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKKyAgcHJp
dmF0ZToKKyAgICBzdHJ1Y3QgSW5pdGlhbGl6ZXIgeworICAgICAgaW50IGxvY2FsSUQ7CisgICAg
ICBSZWZQdHI8Tm9kZT4gaW5pdEV4cHI7CisgICAgfTsKKyAgICBXVEY6OlZlY3RvcjxJbml0aWFs
aXplcj4gaW5pdGlhbGl6ZXJzOworICAgIFJlZlB0cjxWYXJTdGF0ZW1lbnROb2RlPiBvcmlnaW5h
bFN0YXRlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgVmFyU3RhdGVtZW50Tm9kZTsKKyAgfTsKKwog
ICBjbGFzcyBCbG9ja05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgIHB1YmxpYzoKICAg
ICBCbG9ja05vZGUoU291cmNlRWxlbWVudHNOb2RlICpzKSBLSlNfRkFTVF9DQUxMOwogICAgIHZp
cnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
IEtKU19GQVNUX0NBTEw7CiAgIHByb3RlY3RlZDoKICAgICBSZWZQdHI8U291cmNlRWxlbWVudHNO
b2RlPiBzb3VyY2U7CiAgIH07CkBAIC04NTMsNiArOTc2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgRXhwclN0YXRlbWVudE5vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkgeyB9
CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwog
ICB9OwpAQCAtODYyLDggKzk4Niw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIElmTm9kZShOb2Rl
ICplLCBTdGF0ZW1lbnROb2RlICpzMSwgU3RhdGVtZW50Tm9kZSAqczIpIEtKU19GQVNUX0NBTEwK
ICAgICAgIDogZXhwcihlKSwgc3RhdGVtZW50MShzMSksIHN0YXRlbWVudDIoczIpIHt9CiAgICAg
dmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAg
ICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50MTsKQEAgLTg3NCw4ICs5OTgsOSBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgogICAgIERvV2hpbGVOb2RlKFN0YXRlbWVudE5vZGUg
KnMsIE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBzdGF0ZW1lbnQocyksIGV4cHIoZSkge30KICAg
ICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwot
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVu
dCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAg
IFJlZlB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0ZW1lbnQ7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7
CkBAIC04ODUsOCArMTAxMCw5IEBAIG5hbWVzcGFjZSBLSlMgewogICBwdWJsaWM6CiAgICAgV2hp
bGVOb2RlKE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEwgOiBleHByKGUp
LCBzdGF0ZW1lbnQocykge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNl
U3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9v
bCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1
ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwogICAgIFJlZlB0cjxTdGF0
ZW1lbnROb2RlPiBzdGF0ZW1lbnQ7CkBAIC04OTksOCArMTAyNSw5IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIEZvck5vZGUoVmFyRGVjbExpc3ROb2RlICplMSwgTm9kZSAqZTIsIE5vZGUgKmUzLCBT
dGF0ZW1lbnROb2RlICpzKSBLSlNfRkFTVF9DQUxMIDoKICAgICAgIGV4cHIxKGUxLT5uZXh0LnJl
bGVhc2UoKSksIGV4cHIyKGUyKSwgZXhwcjMoZTMpLCBzdGF0ZW1lbnQocykgeyBQYXJzZXI6OnJl
bW92ZU5vZGVDeWNsZShleHByMS5nZXQoKSk7IH0KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhl
Y3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
VmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAg
ICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC05MTMsOCArMTA0MCw5IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIEZvckluTm9kZShOb2RlICpsLCBOb2RlICplLCBTdGF0ZW1lbnROb2RlICpzKSBLSlNf
RkFTVF9DQUxMOwogICAgIEZvckluTm9kZShjb25zdCBJZGVudGlmaWVyICZpLCBBc3NpZ25FeHBy
Tm9kZSAqaW4sIE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEw7CiAgICAg
dmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNJdGVyYXRpb25TdGF0ZW1lbnQo
KSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KICAgcHJpdmF0ZToKICAgICBJ
ZGVudGlmaWVyIGlkZW50OwogICAgIFJlZlB0cjxBc3NpZ25FeHByTm9kZT4gaW5pdDsKQEAgLTky
NiwyMiArMTA1NCwyOCBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICBjbGFzcyBDb250aW51ZU5vZGUg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgIHB1YmxpYzoKLSAgICBDb250aW51ZU5vZGUoKSBL
SlNfRkFTVF9DQUxMIHsgfQotICAgIENvbnRpbnVlTm9kZShjb25zdCBJZGVudGlmaWVyICZpKSBL
SlNfRkFTVF9DQUxMIDogaWRlbnQoaSkgeyB9CisgICAgQ29udGludWVOb2RlKCkgS0pTX0ZBU1Rf
Q0FMTCA6IHRhcmdldCgwKSB7IH0KKyAgICBDb250aW51ZU5vZGUoY29uc3QgSWRlbnRpZmllciAm
aSkgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KGkpLCB0YXJnZXQoMCkgeyB9CiAgICAgdmlydHVhbCBD
b21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2Vy
KiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgSWRlbnRp
ZmllciBpZGVudDsKKyAgICBjb25zdCBOb2RlKiB0YXJnZXQ7CiAgIH07CiAKICAgY2xhc3MgQnJl
YWtOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICBwdWJsaWM6Ci0gICAgQnJlYWtOb2Rl
KCkgS0pTX0ZBU1RfQ0FMTCB7IH0KLSAgICBCcmVha05vZGUoY29uc3QgSWRlbnRpZmllciAmaSkg
S0pTX0ZBU1RfQ0FMTCA6IGlkZW50KGkpIHsgfQorICAgIEJyZWFrTm9kZSgpIEtKU19GQVNUX0NB
TEwgOiB0YXJnZXQoMCkgeyB9CisgICAgQnJlYWtOb2RlKGNvbnN0IElkZW50aWZpZXIgJmkpIEtK
U19GQVNUX0NBTEwgOiBpZGVudChpKSwgdGFyZ2V0KDApIHsgfQogICAgIHZpcnR1YWwgQ29tcGxl
dGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgIHByb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIE5vZGUqIGNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogc2Vt
YW50aWNDaGVja2VyKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIElkZW50aWZpZXIg
aWRlbnQ7CisgICAgY29uc3QgTm9kZSogdGFyZ2V0OwogICB9OwogCiAgIGNsYXNzIFJldHVybk5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC05NDksMTYgKzEwODMsMTkgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgUmV0dXJuTm9kZShOb2RlICp2KSBLSlNfRkFTVF9DQUxMIDogdmFsdWUo
dikge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IHZh
bHVlOworICAgIGNvbnN0IE5vZGUqIHRhcmdldDsKICAgfTsKIAogICBjbGFzcyBXaXRoTm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgcHVibGljOgogICAgIFdpdGhOb2RlKE5vZGUgKmUs
IFN0YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpLCBzdGF0ZW1lbnQocykg
e30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpbnRyb2R1Y2VzTmV3
RHluYW1pY1Njb3BlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAgIHBy
aXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+
IHN0YXRlbWVudDsKQEAgLTk2OCw4ICsxMTA1LDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICBwdWJs
aWM6CiAgICAgTGFiZWxOb2RlKGNvbnN0IElkZW50aWZpZXIgJmwsIFN0YXRlbWVudE5vZGUgKnMp
IEtKU19GQVNUX0NBTEwgOiBsYWJlbChsKSwgc3RhdGVtZW50KHMpIHsgfQogICAgIHZpcnR1YWwg
Q29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVh
bCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwor
ICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19G
QVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIE5vZGUqIGNoZWNrU2VtYW50aWNz
KFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2VyKSBLSlNfRkFTVF9DQUxMOwogICBwcml2
YXRlOgogICAgIElkZW50aWZpZXIgbGFiZWw7CiAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IHN0
YXRlbWVudDsKQEAgLTk4MCw2ICsxMTE5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVGhyb3dO
b2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAgdmlydHVhbCBDb21w
bGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwogICB9OwpAQCAtOTg5LDggKzEx
MjksMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVHJ5Tm9kZShTdGF0ZW1lbnROb2RlICpiLCBj
b25zdCBJZGVudGlmaWVyICZlLCBTdGF0ZW1lbnROb2RlICpjLCBTdGF0ZW1lbnROb2RlICpmKSBL
SlNfRkFTVF9DQUxMCiAgICAgICA6IHRyeUJsb2NrKGIpLCBleGNlcHRpb25JZGVudChlKSwgY2F0
Y2hCbG9jayhjKSwgZmluYWxseUJsb2NrKGYpIHsgfQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBl
eGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwg
dm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisK
KyAgICB2b2lkIHJlY3Vyc2VWaXNpdE5vbkNhdGNoKE5vZGVWaXNpdG9yICp2aXNpdG9yKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUcnlOb2RlKCkgIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
dHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxTdGF0ZW1lbnROb2RlPiB0cnlCbG9jazsK
ICAgICBJZGVudGlmaWVyIGV4Y2VwdGlvbklkZW50OwpAQCAtMTAwNSwxMSArMTE0OCwxMyBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICBQYXJhbWV0ZXJOb2RlKFBhcmFtZXRlck5vZGUgKm5leHQsIGNv
bnN0IElkZW50aWZpZXIgJmkpIEtKU19GQVNUX0NBTEwKICAgICAgIDogaWQoaSksIG5leHQobmV4
dC0+bmV4dCkgeyBuZXh0LT5uZXh0ID0gdGhpczsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgSWRlbnRpZmllciBpZGVudCgpIEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gaWQ7IH0KLSAgICBQYXJhbWV0ZXJOb2RlICpuZXh0UGFyYW0oKSBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIG5leHQuZ2V0KCk7IH0KKyAgICBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWQ7IH0KKyAgICBQYXJhbWV0ZXJOb2RlICpu
ZXh0UGFyYW0oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQuZ2V0KCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKICAgICBQYXNzUmVmUHRyPFBhcmFtZXRlck5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5
Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEZ1bmNEZWNsTm9kZTsKICAgICBmcmllbmQgY2xhc3MgRnVuY0V4cHJOb2RlOwpAQCAt
MTAyNSwyMiArMTE3MCw3OCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgfTsKIAogICAvLyBpbmhlcml0
ZWQgYnkgUHJvZ3JhbU5vZGUKKworICAvKioKKyAgIFRoaXMgQVNUIG5vZGUgY29ycmVzcG9uZHMg
dG8gdGhlIGZ1bmN0aW9uIGJvZHkgaW4gdGhlIEFTVCwgYnV0IGlzIHVzZWQgdG8gCisgICBrZWVw
IHRyYWNrIG9mIG11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIHJlbGV2YW50IHRvIHRoZSB3aG9sZSBm
dW5jdGlvbiwKKyAgIHN1Y2ggYXMgcGFyYW1ldGVyIG5hbWVzIGFuZCBzeW1ib2wgdGFibGVzLiBU
aGlzIGlzIGJlY2F1c2UgdGhlcmUgYXJlIGJvdGggZnVuY3Rpb24gCisgICBkZWNsYXJhdGlvbnMg
YW5kIGV4cHJlc3Npb25zLCBzbyB0aGVyZSBpcyBubyBuYXR1cmFsIHNpbmdsZSBwbGFjZSB0byBw
dXQgdGhpcyBzdHVmZiAKKyAgIGFib3ZlIHRoZSBib2R5CisgICovCiAgIGNsYXNzIEZ1bmN0aW9u
Qm9keU5vZGUgOiBwdWJsaWMgQmxvY2tOb2RlIHsKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3lt
Ym9sIHsKKyAgICAgIFN5bWJvbChjb25zdCBJZGVudGlmaWVyJiBfbmFtZSwgaW50IF9hdHRyLCBG
dW5jRGVjbE5vZGUqIF9mdW5jRGVjbCkgOiBuYW1lKF9uYW1lKSwgZnVuY0RlY2woX2Z1bmNEZWNs
KSwgYXR0cihfYXR0cikge30KKyAgICAgIFN5bWJvbCgpIHt9CisgICAgICBJZGVudGlmaWVyICAg
IG5hbWU7CisgICAgICBGdW5jRGVjbE5vZGUqIGZ1bmNEZWNsOworICAgICAgaW50ICAgICAgICAg
ICBhdHRyOworICAgIH07CisKKyAgICBzdHJ1Y3QgUGFyYW1ldGVyIHsKKyAgICAgIFBhcmFtZXRl
cigpIHt9CisgICAgICBQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciAmbiwgaW50IGlkKSA6IG5h
bWUobiksIHN5bWJvbElEKGlkKSB7IH0KKyAgICAgIElkZW50aWZpZXIgbmFtZTsKKyAgICAgIGlu
dCAgICAgICAgc3ltYm9sSUQ7CisgICAgfTsKICAgcHVibGljOgogICAgIEZ1bmN0aW9uQm9keU5v
ZGUoU291cmNlRWxlbWVudHNOb2RlICopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lk
IHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIGludCBzb3Vy
Y2VJZCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQogICAgIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZVVSTCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0K
KyAKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgLy8gU3ltYm9sIHRhYmxlIGZ1bmN0aW9ucworICAg
IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KKyAgICBib29sIGJ1aWx0U3ltYm9sTGlzdCgpICAgIGNvbnN0IEtKU19G
QVNUX0NBTEwgeyByZXR1cm4gbV9idWlsdFN5bWJvbExpc3Q7IH0KKyAgICB2b2lkIHNldEJ1aWx0
U3ltYm9sTGlzdCgpICAgICAgIEtKU19GQVNUX0NBTEwgeyBtX2J1aWx0U3ltYm9sTGlzdCA9IHRy
dWU7IH0KKyAgICBpbnQgIG51bUxvY2FscygpICAgICAgICAgIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gbV9zeW1ib2xMaXN0LnNpemUoKTsgfQorICAgIGludCAgZ2V0TG9jYWxBdHRyKGlu
dCBpZCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3N5bWJvbExpc3RbaWQtMV0uYXR0
cjsgfQorICAgIEZ1bmNEZWNsTm9kZSogZ2V0TG9jYWxGdW5jRGVjbChpbnQgaWQpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gbV9zeW1ib2xMaXN0W2lkLTFdLmZ1bmNEZWNsOyB9CisgICAg
CisgICAgLy9SZXR1cm5zIC0xIGlmIG5vdCBmb3VuZC4uCisgICAgaW50ICBsb29rdXBTeW1ib2xJ
RChjb25zdCBJZGVudGlmaWVyICZpZGVudCkgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKIAotICAgIHZv
aWQgYWRkUGFyYW0oY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIEtKU19GQVNUX0NBTEw7Ci0gICAg
c2l6ZV90IG51bVBhcmFtcygpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLnNpemUoKTsgfQotICAgIElkZW50aWZpZXIgcGFyYW1OYW1lKHNpemVfdCBwb3MpIGNvbnN0
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0ZXJzW3Bvc10ubmFtZTsgfQotICAgIFVT
dHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICAgIFZlY3RvcjxQYXJh
bWV0ZXI+JiBwYXJhbWV0ZXJzKCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3BhcmFtZXRlcnM7
IH0KKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgLy8gUGFyYW1ldGVyIGFycmF5IGZ1bmN0aW9ucwor
ICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KKyAgICB2b2lkIGFkZFBhcmFtKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSBLSlNfRkFTVF9DQUxMOyAvL0Fsc28gY3JlYXRlcyB0aGUgc3ltYm9sIGZvciB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wYXJhbWV0ZXIsIGNh
bGVkIG9uIGNyZWF0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vdGhlIGVuY2xvc2luZyBleHByIG9yIGRlY2wKKworICAgIHZvaWQgYWRkVmFyRGVjbChj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IGF0dHIsIEV4ZWNTdGF0ZSogZXhlYykgS0pTX0ZB
U1RfQ0FMTDsKKyAgICB2b2lkIGFkZEZ1bmNEZWNsKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBp
bnQgYXR0ciwgRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCkgS0pTX0ZBU1RfQ0FMTDsKKworICAgIGlu
dCBudW1QYXJhbXMoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1fcGFyYW1MaXN0LnNp
emUoKTsgfQorICAgIGludCBwYXJhbVN5bWJvbElEKGludCBwb3MpIGNvbnN0IEtKU19GQVNUX0NB
TEwgeyByZXR1cm4gbV9wYXJhbUxpc3RbcG9zXS5zeW1ib2xJRDsgfQorICAgIGNvbnN0IElkZW50
aWZpZXImIHBhcmFtTmFtZShpbnQgcG9zKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1f
cGFyYW1MaXN0W3Bvc10ubmFtZTsgfQorICAgIFVTdHJpbmcgICAgcGFyYW1TdHJpbmcoKSBjb25z
dCBLSlNfRkFTVF9DQUxMOyAgIAogICBwcml2YXRlOgogICAgIFVTdHJpbmcgbV9zb3VyY2VVUkw7
Ci0gICAgaW50IG1fc291cmNlSWQ7Ci0gICAgVmVjdG9yPFBhcmFtZXRlcj4gbV9wYXJhbWV0ZXJz
OworICAgIGludCBtX3NvdXJjZUlkIDogMzE7CisgICAgYm9vbCBtX2J1aWx0U3ltYm9sTGlzdCA6
IDE7CisKKyAgICBpbnQgYWRkU3ltYm9sKGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgYXR0
ciwgRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCA9IDApIEtKU19GQVNUX0NBTEw7CisKKyAgICAvLyBO
b3RlOiB0aGUgY29udmVudGlvbiBoZXJlIGlzIHRoYXQgdGhlIHBvc2l0aW9uIDAKKyAgICAvLyBp
cyB0aGUgaW5kZXggMSwgcG9zaXRpb24gMSBpcyB0aGUgaW5kZXggMiwgZXRjLgorICAgIFdURjo6
VmVjdG9yPFN5bWJvbD4gbV9zeW1ib2xMaXN0OworICAgIAorICAgIC8vIFRoaXMgaXMgdGhlIG1h
cCBvZiB0aGUgYWJvdmUsIHRoZSBqc1ZhbHVlcyBhcmUgdGhlIElEcy4KKyAgICAvLyAjIyMgdWdo
LiBMYXp5LWxhenktbGF6eS4gQnV0IHRoaXMgd29ya3MsIHRvby4KKyAgICBQcm9wZXJ0eU1hcCBt
X3N5bWJvbFRhYmxlOworCisgICAgLy8gVGhlIGxpc3Qgb2YgcGFyYW1ldGVycywgYW5kIHRoZWly
IGxvY2FsIElEcyBpbiB0aGUKKyAgICBXVEY6OlZlY3RvcjxQYXJhbWV0ZXI+IG1fcGFyYW1MaXN0
OwogICB9OwogCiAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTEwNDks
NiArMTI1MCwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIDogaWRlbnQoaSksIHBhcmFtKHAg
PyBwLT5uZXh0LnJlbGVhc2UoKSA6IDApLCBib2R5KGIpIHsgaWYgKHApIHsgUGFyc2VyOjpyZW1v
dmVOb2RlQ3ljbGUocGFyYW0uZ2V0KCkpOyB9IGFkZFBhcmFtcygpOyB9CiAgICAgdmlydHVhbCBK
U1ZhbHVlICpldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NB
TEw7CisgICAgdmlydHVhbCBib29sIGludHJvZHVjZXNOZXdTdGF0aWNTY29wZSgpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBO
b2RlKiBjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIHNlbWFudGljQ2hlY2tlcikgS0pT
X0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFBhcmFtcygpIEtKU19GQVNUX0NB
TEw7CiAgICAgLy8gVXNlZCBmb3Igc3RyZWFtVG8KQEAgLTEwNjUsOCArMTI3MCwxNCBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICBGdW5jRGVjbE5vZGUoY29uc3QgSWRlbnRpZmllciAmaSwgUGFyYW1l
dGVyTm9kZSAqcCwgRnVuY3Rpb25Cb2R5Tm9kZSAqYikgS0pTX0ZBU1RfQ0FMTAogICAgICAgOiBp
ZGVudChpKSwgcGFyYW0ocC0+bmV4dC5yZWxlYXNlKCkpLCBib2R5KGIpIHsgUGFyc2VyOjpyZW1v
dmVOb2RlQ3ljbGUocGFyYW0uZ2V0KCkpOyBhZGRQYXJhbXMoKTsgfQogICAgIHZpcnR1YWwgQ29t
cGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2
b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCBib29sIGludHJvZHVjZXNOZXdTdGF0aWNTY29wZSgpIGNvbnN0
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOworICAgIEZ1bmN0aW9uSW1wKiBt
YWtlRnVuY3Rpb25PYmplY3QoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgcHJvdGVjdGVk
OgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBzZW1h
bnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgdm9pZCBhZGRQYXJh
bXMoKSBLSlNfRkFTVF9DQUxMOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CkBAIC0xMDgzLDExICsx
Mjk0LDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFNvdXJjZUVsZW1lbnRzTm9kZShTb3VyY2VF
bGVtZW50c05vZGUgKnMxLCBTdGF0ZW1lbnROb2RlICpzMikgS0pTX0ZBU1RfQ0FMTDsKICAgICAK
ICAgICBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2
b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
ICAgICBQYXNzUmVmUHRyPFNvdXJjZUVsZW1lbnRzTm9kZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG5leHQucmVsZWFzZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGJyZWFr
Q3ljbGUoKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIEJsb2NrTm9kZTsKICAgICBmcmllbmQgY2xhc3MgQ2FzZUNsYXVzZU5vZGU7CkBAIC0x
MTAyLDkgKzEzMTIsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIDogZXhwcihlKSwgc291cmNl
KHMtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKHNvdXJjZS5nZXQo
KSk7IH0KICAgICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgICBDb21wbGV0aW9uIGV2YWxTdGF0ZW1lbnRzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7Ci0gICAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OwotICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNp
dG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgICAgUmVmUHRyPE5v
ZGU+IGV4cHI7CiAgICAgICBSZWZQdHI8U291cmNlRWxlbWVudHNOb2RlPiBzb3VyY2U7CkBAIC0x
MTE5LDExICsxMzI4LDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgSlNWYWx1ZSogZXZhbHVh
dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIENhc2VDbGF1c2VOb2RlICpnZXRD
bGF1c2UoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGNsYXVzZS5nZXQoKTsgfQogICAg
ICAgQ2xhdXNlTGlzdE5vZGUgKmdldE5leHQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IG5leHQuZ2V0KCk7IH0KLSAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgIHZvaWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIFBhc3NSZWZQdHI8Q2xhdXNlTGlzdE5v
ZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsg
fQogICAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFTVF9DQUxMOworICAgICAg
dmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1Rf
Q0FMTDsKICAgcHJpdmF0ZToKICAgICAgIGZyaWVuZCBjbGFzcyBDYXNlQmxvY2tOb2RlOwogICAg
ICAgUmVmUHRyPENhc2VDbGF1c2VOb2RlPiBjbGF1c2U7CkBAIC0xMTM1LDkgKzEzNDMsOCBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICAgIENhc2VCbG9ja05vZGUoQ2xhdXNlTGlzdE5vZGUgKmwxLCBD
YXNlQ2xhdXNlTm9kZSAqZCwgQ2xhdXNlTGlzdE5vZGUgKmwyKSBLSlNfRkFTVF9DQUxMOwogICAg
ICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIENv
bXBsZXRpb24gZXZhbEJsb2NrKEV4ZWNTdGF0ZSAqZXhlYywgSlNWYWx1ZSAqaW5wdXQpIEtKU19G
QVNUX0NBTEw7Ci0gICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7Ci0gICAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgICAgUmVm
UHRyPENsYXVzZUxpc3ROb2RlPiBsaXN0MTsKICAgICAgIFJlZlB0cjxDYXNlQ2xhdXNlTm9kZT4g
ZGVmOwpAQCAtMTE0OCw5ICsxMzU1LDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIHB1YmxpYzoKICAg
ICAgIFN3aXRjaE5vZGUoTm9kZSAqZSwgQ2FzZUJsb2NrTm9kZSAqYikgS0pTX0ZBU1RfQ0FMTCA6
IGV4cHIoZSksIGJsb2NrKGIpIHsgfQogICAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUo
RXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFy
RGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzRnVuY0RlY2woRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKKyAgICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaFN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgICAgUmVmUHRyPE5vZGU+IGV4
cHI7CiAgICAgICBSZWZQdHI8Q2FzZUJsb2NrTm9kZT4gYmxvY2s7CkBAIC0xMTYxLDYgKzEzNjgs
MjYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUHJvZ3JhbU5vZGUoU291cmNlRWxlbWVudHNOb2Rl
ICpzKSBLSlNfRkFTVF9DQUxMOwogICB9OwogCisgIC8qKgorICAgVGhpcyBub2RlIHJlcHJlc2Vu
dHMgc3RhdGljYWxseSBkZXRlY3RhYmxlIGVycm9ycyB0aGF0IG11c3QgYmUgcmVwb3J0ZWQKKyAg
IGF0IHJ1bnRpbWUuIFRoZSBzZW1hbnRpYyBjaGVja2VyIHNwbGljZXMgaXQgaW4gYWJvdmUgdGhl
IG9yaWdpbmFsIG5vZGUKKyAgIGluIHRoZSBwcm9ncmFtLCBhbmQgaXQgZG9lcyB0aGUgZXJyb3Ig
cmVwb3J0aW5nOyB0aGUgY2hpbGQgbm9kZSBpcworICAgdXNlZCBmb3IgdGV4dCBzZXJpYWxpemF0
aW9uLgorCisgICBOb3RlOiB3ZSBkbyBub3QgdmlzaXQga2lkcyBvZiB0aGlzIG5vZGUgaW4gdGhl
IHZpc2l0b3IgaW50ZXJmYWNlLAorICAgc2luY2UgdGhleSBkbyBub3QgcnVuLCBhbnl3YXkKKyAg
Ki8KKyAgY2xhc3MgRXJyb3JOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICBwdWJsaWM6
CisgICAgRXJyb3JOb2RlKE5vZGUqIGssIEVycm9yVHlwZSBlLCBjb25zdCBVU3RyaW5nJiBtKSBL
SlNfRkFTVF9DQUxMIDoKKyAgICAgICAga2lkKGspLCBlcnJvclR5cGUoZSksIG1lc3NhZ2UobSkg
e30KKyAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNf
RkFTVF9DQUxMOworICBwcml2YXRlOgorICAgIFJlZlB0cjxOb2RlPiBraWQ7CisgICAgRXJyb3JU
eXBlICAgIGVycm9yVHlwZTsKKyAgICBVU3RyaW5nICAgICAgbWVzc2FnZTsKKyAgfTsKIH0gLy8g
bmFtZXNwYWNlCiAKICNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAJKHJldmlzaW9uIDI0
NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Myw5ICsxNTMsOCBAQCBjb25zdCBDbGFzc0luZm8gKkpTT2JqZWN0OjpjbGFzc0luZm8oKSBj
CiBVU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoKSBjb25zdAogewogICBjb25zdCBDbGFzc0lu
Zm8gKmNpID0gY2xhc3NJbmZvKCk7Ci0gIGlmICggY2kgKQotICAgIHJldHVybiBjaS0+Y2xhc3NO
YW1lOwotICByZXR1cm4gIk9iamVjdCI7CisKKyAgcmV0dXJuIGNpID8gY2ktPmNsYXNzTmFtZSA6
ICJPYmplY3QiOwogfQogCiBKU1ZhbHVlICpKU09iamVjdDo6Z2V0KEV4ZWNTdGF0ZSAqZXhlYywg
Y29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBjb25zdApAQCAtMzYzLDIxICszNjIsMjEg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSAqdHJ5R2V0QW5kQwogLy8gRUNNQSA4LjYu
Mi42CiBKU1ZhbHVlKiBKU09iamVjdDo6ZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNU
eXBlIGhpbnQpIGNvbnN0CiB7Ci0gIElkZW50aWZpZXIgZmlyc3RQcm9wZXJ0eU5hbWU7Ci0gIElk
ZW50aWZpZXIgc2Vjb25kUHJvcGVydHlOYW1lOworICBjb25zdCBJZGVudGlmaWVyKiBmaXJzdFBy
b3BlcnR5TmFtZTsKKyAgY29uc3QgSWRlbnRpZmllciogc2Vjb25kUHJvcGVydHlOYW1lOwogICAv
KiBQcmVmZXIgU3RyaW5nIGZvciBEYXRlIG9iamVjdHMgKi8KICAgaWYgKChoaW50ID09IFN0cmlu
Z1R5cGUpIHx8IChoaW50ICE9IFN0cmluZ1R5cGUpICYmIChoaW50ICE9IE51bWJlclR5cGUpICYm
IChfcHJvdG8gPT0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5EYXRlUHJvdG90
eXBlKCkpKSB7Ci0gICAgZmlyc3RQcm9wZXJ0eU5hbWUgPSBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
dG9TdHJpbmc7Ci0gICAgc2Vjb25kUHJvcGVydHlOYW1lID0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LnZhbHVlT2Y7CisgICAgZmlyc3RQcm9wZXJ0eU5hbWUgPSAmZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nOworICAgIHNlY29uZFByb3BlcnR5TmFtZSA9ICZleGVjLT5wcm9wZXJ0eU5hbWVz
KCkudmFsdWVPZjsKICAgfSBlbHNlIHsKLSAgICBmaXJzdFByb3BlcnR5TmFtZSA9IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS52YWx1ZU9mOwotICAgIHNlY29uZFByb3BlcnR5TmFtZSA9IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS50b1N0cmluZzsKKyAgICBmaXJzdFByb3BlcnR5TmFtZSA9ICZleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudmFsdWVPZjsKKyAgICBzZWNvbmRQcm9wZXJ0eU5hbWUgPSAmZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nOwogICB9CiAKICAgSlNWYWx1ZSAqdjsKLSAgaWYgKCh2
ID0gdHJ5R2V0QW5kQ2FsbFByb3BlcnR5KGV4ZWMsIHRoaXMsIGZpcnN0UHJvcGVydHlOYW1lKSkp
CisgIGlmICgodiA9IHRyeUdldEFuZENhbGxQcm9wZXJ0eShleGVjLCB0aGlzLCAqZmlyc3RQcm9w
ZXJ0eU5hbWUpKSkKICAgICByZXR1cm4gdjsKLSAgaWYgKCh2ID0gdHJ5R2V0QW5kQ2FsbFByb3Bl
cnR5KGV4ZWMsIHRoaXMsIHNlY29uZFByb3BlcnR5TmFtZSkpKQorICBpZiAoKHYgPSB0cnlHZXRB
bmRDYWxsUHJvcGVydHkoZXhlYywgdGhpcywgKnNlY29uZFByb3BlcnR5TmFtZSkpKQogICAgIHJl
dHVybiB2OwogCiAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTU5NCwyOCArNTkzLDI5
IEBAIGNvbnN0IGNoYXIgKiBjb25zdCAqIGNvbnN0IEVycm9yOjplcnJvck4KIEpTT2JqZWN0ICpF
cnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSAqZXhlYywgRXJyb3JUeXBlIGVycnR5cGUsIGNvbnN0IFVT
dHJpbmcgJm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50
IHNvdXJjZUlkLCBjb25zdCBVU3RyaW5nICZzb3VyY2VVUkwpCiB7CisgIEludGVycHJldGVyKiBp
bnRlcnAgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKTsKICAgSlNPYmplY3QgKmNvbnM7CiAg
IHN3aXRjaCAoZXJydHlwZSkgewogICBjYXNlIEV2YWxFcnJvcjoKLSAgICBjb25zID0gZXhlYy0+
bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5FdmFsRXJyb3IoKTsKKyAgICBjb25zID0gaW50
ZXJwLT5idWlsdGluRXZhbEVycm9yKCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgUmFuZ2VFcnJvcjoK
LSAgICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5SYW5nZUVycm9y
KCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpblJhbmdlRXJyb3IoKTsKICAgICBicmVhazsK
ICAgY2FzZSBSZWZlcmVuY2VFcnJvcjoKLSAgICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJl
dGVyKCktPmJ1aWx0aW5SZWZlcmVuY2VFcnJvcigpOworICAgIGNvbnMgPSBpbnRlcnAtPmJ1aWx0
aW5SZWZlcmVuY2VFcnJvcigpOwogICAgIGJyZWFrOwogICBjYXNlIFN5bnRheEVycm9yOgotICAg
IGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpblN5bnRheEVycm9yKCk7
CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpblN5bnRheEVycm9yKCk7CiAgICAgYnJlYWs7CiAg
IGNhc2UgVHlwZUVycm9yOgotICAgIGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+
YnVpbHRpblR5cGVFcnJvcigpOworICAgIGNvbnMgPSBpbnRlcnAtPmJ1aWx0aW5UeXBlRXJyb3Io
KTsKICAgICBicmVhazsKICAgY2FzZSBVUklFcnJvcjoKLSAgICBjb25zID0gZXhlYy0+bGV4aWNh
bEludGVycHJldGVyKCktPmJ1aWx0aW5VUklFcnJvcigpOworICAgIGNvbnMgPSBpbnRlcnAtPmJ1
aWx0aW5VUklFcnJvcigpOwogICAgIGJyZWFrOwogICBkZWZhdWx0OgotICAgIGNvbnMgPSBleGVj
LT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbkVycm9yKCk7CisgICAgY29ucyA9IGludGVy
cC0+YnVpbHRpbkVycm9yKCk7CiAgICAgYnJlYWs7CiAgIH0KIApJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9vYmplY3Qu
aAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvb2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTgwLDI0ICs4MCwyOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgog
ICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gR2V0dGVyU2V0dGVyVHlwZTsgfQogICAg
ICAgCi0gICAgR2V0dGVyU2V0dGVySW1wKCkgOiBnZXR0ZXIoMCksIHNldHRlcigwKSB7IH0KKyAg
ICBHZXR0ZXJTZXR0ZXJJbXAoKSA6IGdldHRlcigwKSwgc2V0dGVyKDApLCBtX2xvY2FsSW5qZWN0
ZWQoZmFsc2UpIHsgfQogICAgICAgCiAgICAgdmlydHVhbCBKU1ZhbHVlICp0b1ByaW1pdGl2ZShF
eGVjU3RhdGUgKmV4ZWMsIEpTVHlwZSBwcmVmZXJyZWQgPSBVbnNwZWNpZmllZFR5cGUpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhlY1N0YXRlICpleGVjKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZp
cnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1
YWwgSlNPYmplY3QgKnRvT2JqZWN0KEV4ZWNTdGF0ZSAqZXhlYykgY29uc3Q7Ci0gICAgICAKKwog
ICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAgICAgICAKICAgICBKU09iamVjdCAqZ2V0R2V0dGVy
KCkgeyByZXR1cm4gZ2V0dGVyOyB9CiAgICAgdm9pZCBzZXRHZXR0ZXIoSlNPYmplY3QgKmcpIHsg
Z2V0dGVyID0gZzsgfQogICAgIEpTT2JqZWN0ICpnZXRTZXR0ZXIoKSB7IHJldHVybiBzZXR0ZXI7
IH0KICAgICB2b2lkIHNldFNldHRlcihKU09iamVjdCAqcykgeyBzZXR0ZXIgPSBzOyB9Ci0gICAg
ICAKKworICAgIGJvb2wgaXNMb2NhbEluamVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbElu
amVjdGVkOyB9CisgICAgdm9pZCBzZXRMb2NhbEluamVjdGVkKCkgeyBtX2xvY2FsSW5qZWN0ZWQg
PSB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgSlNPYmplY3QgKmdldHRlcjsKLSAgICBKU09iamVj
dCAqc2V0dGVyOyAgCisgICAgSlNPYmplY3QgKnNldHRlcjsgCisKKyAgICBib29sIG1fbG9jYWxJ
bmplY3RlZCA6IDE7IC8vIFVzZWQgd2hlbiB0aGlzIG9iamVjdCBpcyB0aGUgYWN0aXZlIHNjb3Bl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gZGVub3RlIGR5bmFtaWMgYWRk
aXRpb24gb2YgbG9jYWwgdmFyaWFibGVzCiAgIH07CiAgIAogICBjbGFzcyBKU09iamVjdCA6IHB1
YmxpYyBKU0NlbGwgewpAQCAtNDMyLDcgKzQzNywxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBK
U1ZhbHVlICpnZXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAog
ICAgICAgICB7IHJldHVybiBfcHJvcC5nZXQocHJvcGVydHlOYW1lKTsgfQogICAgIEpTVmFsdWUg
KipnZXREaXJlY3RMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCi0gICAg
ICAgIHsgcmV0dXJuIF9wcm9wLmdldExvY2F0aW9uKHByb3BlcnR5TmFtZSk7IH0KKyAgICAgICAg
eyBib29sIGR1bW15OyByZXR1cm4gX3Byb3AuZ2V0TG9jYXRpb24ocHJvcGVydHlOYW1lLCBkdW1t
eSk7IH0KKyAgICBKU1ZhbHVlICoqZ2V0RGlyZWN0TG9jYXRpb24oY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBib29sJiBybykKKyAgICAgICAgeyByZXR1cm4gX3Byb3AuZ2V0TG9jYXRp
b24ocHJvcGVydHlOYW1lLCBybyk7IH0KKwogICAgIHZvaWQgcHV0RGlyZWN0KGNvbnN0IElkZW50
aWZpZXIgJnByb3BlcnR5TmFtZSwgSlNWYWx1ZSAqdmFsdWUsIGludCBhdHRyID0gMCk7CiAgICAg
dm9pZCBwdXREaXJlY3QoY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBpbnQgdmFsdWUs
IGludCBhdHRyID0gMCk7CiAKQEAgLTQ1NCw3ICs0NjIsMTAgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgdm9pZCBzYXZlUHJvcGVydGllcyhTYXZlZFByb3BlcnRpZXMgJnApIGNvbnN0IHsgX3Byb3Au
c2F2ZShwKTsgfQogICAgIHZvaWQgcmVzdG9yZVByb3BlcnRpZXMoY29uc3QgU2F2ZWRQcm9wZXJ0
aWVzICZwKSB7IF9wcm9wLnJlc3RvcmUocCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
YXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRpb24o
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9vbCBpc0xvY2FsSW5qZWN0ZWQoKSBj
b25zdCB7IHJldHVybiBfcHJvcC5pc0xvY2FsSW5qZWN0ZWQoKTsgfQorICAgIHZvaWQgc2V0TG9j
YWxJbmplY3RlZCgpIHsgX3Byb3Auc2V0TG9jYWxJbmplY3RlZCgpOyB9CiAgIHByb3RlY3RlZDoK
ICAgICBQcm9wZXJ0eU1hcCBfcHJvcDsKICAgcHJpdmF0ZToKQEAgLTU1MCw2ICs1NjEsNyBAQCBp
bmxpbmUgYm9vbCBKU1ZhbHVlOjppc09iamVjdChjb25zdCBDbGFzCiBpbmxpbmUgYm9vbCBKU09i
amVjdDo6Z2V0UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNPYmplY3QgKm9iamVj
dCA9IHRoaXM7CisgICAgc2xvdC5zZXRQb3RlbnRpYWxseVdyaXRlYWJsZSgpOwogICAgIHdoaWxl
ICh0cnVlKSB7CiAgICAgICAgIGlmIChvYmplY3QtPmdldE93blByb3BlcnR5U2xvdChleGVjLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NTgsNiAr
NTcwLDggQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeAogICAgICAg
ICBpZiAoIXByb3RvLT5pc09iamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgICAgIHNsb3Quc2V0UmVhZE9ubHkoKTsKKwogICAgICAgICBvYmplY3QgPSBzdGF0aWNfY2Fz
dDxKU09iamVjdCAqPihwcm90byk7CiAgICAgfQogfQpAQCAtNTY1LDI2ICs1NzksMjUgQEAgaW5s
aW5lIGJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U2xvdChFeAogLy8gSXQgbWF5IHNlZW0gY3Jh
enkgdG8gaW5saW5lIGEgZnVuY3Rpb24gdGhpcyBsYXJnZSwgZXNwZWNpYWxseSBhIHZpcnR1YWwg
ZnVuY3Rpb24sCiAvLyBidXQgaXQgbWFrZXMgYSBiaWcgZGlmZmVyZW5jZSB0byBwcm9wZXJ0eSBs
b29rdXAgdGhhdCBkZXJpdmVkIGNsYXNzZXMgY2FuIGlubGluZSB0aGVpcgogLy8gYmFzZSBjbGFz
cyBjYWxsIHRvIHRoaXMuCi1BTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQorQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBpZiAoSlNWYWx1ZSAqKmxvY2F0aW9uID0g
Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAoX3Byb3AuaGFz
R2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIGxvY2F0aW9uWzBdLT50eXBlKCkgPT0gR2V0dGVy
U2V0dGVyVHlwZSkKICAgICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgbG9j
YXRpb24pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlz
LCBsb2NhdGlvbik7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCBsb2NhdGlv
biwgUHJvcGVydHlTbG90OjpGb3JiaWREaXJlY3RXcml0ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogICAgIC8vIG5vbi1zdGFuZGFyZCBOZXRzY2FwZSBleHRlbnNpb24KICAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8p
IHsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhpcywgJl9wcm90byk7CisgICAgICAgIHNs
b3Quc2V0VmFsdWVTbG90KHRoaXMsICZfcHJvdG8sIFByb3BlcnR5U2xvdDo6Rm9yYmlkRGlyZWN0
V3JpdGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLQogLy8gRklYTUU6IFB1dCB0aGlzIGZ1bmN0aW9uIGluIGEgc2VwYXJhdGUgZmlsZSBu
YW1lZCBzb21ldGhpbmcgbGlrZSBzY29wZV9jaGFpbl9tYXJrLmggLS0gY2FuJ3QgcHV0IGl0IGlu
IHNjb3BlX2NoYWluLmggc2luY2UgaXQgZGVwZW5kcyBvbiBKU09iamVjdC4KIAogaW5saW5lIHZv
aWQgU2NvcGVDaGFpbjo6bWFyaygpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlf
bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlfbWFwLmNw
cAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlfbWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDcgKzIzNSw3IEBAIEpTVmFsdWUgKlByb3BlcnR5TWFw
OjpnZXQoY29uc3QgSWRlbnRpZmkKICAgICByZXR1cm4gMDsKIH0KIAotSlNWYWx1ZSAqKlByb3Bl
cnR5TWFwOjpnZXRMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyICZuYW1lKQorSlNWYWx1ZSAqKlBy
b3BlcnR5TWFwOjpnZXRMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyICZuYW1lLCBib29sJiByZWFk
T25seSkKIHsKICAgICBhc3NlcnQoIW5hbWUuaXNOdWxsKCkpOwogICAgIApAQCAtMjQ0LDggKzI0
NCwxMCBAQCBKU1ZhbHVlICoqUHJvcGVydHlNYXA6OmdldExvY2F0aW9uKGNvbnN0CiAgICAgaWYg
KCFtX3VzaW5nVGFibGUpIHsKICNpZiBVU0VfU0lOR0xFX0VOVFJZCiAgICAgICAgIFVTdHJpbmc6
OlJlcCAqa2V5ID0gbV9zaW5nbGVFbnRyeUtleTsKLSAgICAgICAgaWYgKHJlcCA9PSBrZXkpCisg
ICAgICAgIGlmIChyZXAgPT0ga2V5KSB7CisgICAgICAgICAgICByZWFkT25seSA9IG1fc2luZ2xl
RW50cnlBdHRyaWJ1dGVzICYgUmVhZE9ubHk7CiAgICAgICAgICAgICByZXR1cm4gJm1fdS5zaW5n
bGVFbnRyeVZhbHVlOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpAQCAtMjYwLDggKzI2MiwxMCBAQCBKU1ZhbHVlICoqUHJvcGVydHlNYXA6OmdldExvY2F0aW9u
KGNvbnN0CiAgICAgbnVtQ29sbGlzaW9ucyArPSBlbnRyaWVzW2ldLmtleSAmJiBlbnRyaWVzW2ld
LmtleSAhPSByZXA7CiAjZW5kaWYKICAgICB3aGlsZSAoVVN0cmluZzo6UmVwICprZXkgPSBlbnRy
aWVzW2ldLmtleSkgewotICAgICAgICBpZiAocmVwID09IGtleSkKKyAgICAgICAgaWYgKHJlcCA9
PSBrZXkpIHsKKyAgICAgICAgICAgIHJlYWRPbmx5ID0gZW50cmllc1tpXS5hdHRyaWJ1dGVzICYg
UmVhZE9ubHk7CiAgICAgICAgICAgICByZXR1cm4gJmVudHJpZXNbaV0udmFsdWU7CisgICAgICAg
IH0KICAgICAgICAgaWYgKGsgPT0gMCkKICAgICAgICAgICAgIGsgPSAxIHwgKGggJSBzaXplTWFz
ayk7CiAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1hc2s7CkBAIC0yOTYsNyArMzAwLDcgQEAg
dm9pZCBQcm9wZXJ0eU1hcDo6cHV0KGNvbnN0IElkZW50aWZpZXIgJgogewogICAgIGFzc2VydCgh
bmFtZS5pc051bGwoKSk7CiAgICAgYXNzZXJ0KHZhbHVlICE9IDApOwotICAgIAorCiAgICAgY2hl
Y2tDb25zaXN0ZW5jeSgpOwogCiAgICAgVVN0cmluZzo6UmVwICpyZXAgPSBuYW1lLl91c3RyaW5n
LnJlcCgpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3Byb3BlcnR5X21hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9tYXAuaAkocmV2aXNpb24gMjQ1NTgp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlfbWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHZvaWQgcmVtb3ZlKGNvbnN0
IElkZW50aWZpZXIgJm5hbWUpOwogICAgICAgICBKU1ZhbHVlICpnZXQoY29uc3QgSWRlbnRpZmll
ciAmbmFtZSkgY29uc3Q7CiAgICAgICAgIEpTVmFsdWUgKmdldChjb25zdCBJZGVudGlmaWVyICZu
YW1lLCB1bnNpZ25lZCAmYXR0cmlidXRlcykgY29uc3Q7Ci0gICAgICAgIEpTVmFsdWUgKipnZXRM
b2NhdGlvbihjb25zdCBJZGVudGlmaWVyICZuYW1lKTsKKyAgICAgICAgSlNWYWx1ZSAqKmdldExv
Y2F0aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUsIGJvb2wmIHJlYWRPbmx5KTsKIAogICAgICAg
ICB2b2lkIG1hcmsoKSBjb25zdDsKICAgICAgICAgdm9pZCBnZXRFbnVtZXJhYmxlUHJvcGVydHlO
YW1lcyhQcm9wZXJ0eU5hbWVBcnJheSYpIGNvbnN0OwpAQCAtODksNiArODksOSBAQCBuYW1lc3Bh
Y2UgS0pTIHsKICAgICAgICAgdm9pZCBzZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGJvb2wg
ZikgeyBtX2dldHRlclNldHRlckZsYWcgPSBmOyB9CiAKICAgICAgICAgYm9vbCBjb250YWluc0dl
dHRlcnNPclNldHRlcnMoKSBjb25zdDsKKworICAgICAgICBib29sIGlzTG9jYWxJbmplY3RlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxJbmplY3RlZDsgfQorICAgICAgICB2b2lkIHNldExvY2Fs
SW5qZWN0ZWQoKSB7IG1fbG9jYWxJbmplY3RlZCA9IHRydWU7IH0KICAgICBwcml2YXRlOgogICAg
ICAgICBzdGF0aWMgYm9vbCBrZXlzTWF0Y2goY29uc3QgVVN0cmluZzo6UmVwICosIGNvbnN0IFVT
dHJpbmc6OlJlcCAqKTsKICAgICAgICAgdm9pZCBleHBhbmQoKTsKQEAgLTExMSwxMyArMTE0LDE1
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBzaG9ydCBtX3NpbmdsZUVudHJ5QXR0cmlidXRl
czsKICAgICAgICAgYm9vbCBtX2dldHRlclNldHRlckZsYWcgOiAxOwogICAgICAgICBib29sIG1f
dXNpbmdUYWJsZSA6IDE7CisgICAgICAgIGJvb2wgbV9sb2NhbEluamVjdGVkIDogMTsgLy8gVXNl
ZCB3aGVuIHRoaXMgb2JqZWN0IGlzIHRoZSBhY3RpdmUgc2NvcGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gdG8gZGVub3RlIGR5bmFtaWMgYWRkaXRpb24gb2YgbG9jYWwg
dmFyaWFibGVzCiAgICAgfTsKIAogICAgIGlubGluZSBQcm9wZXJ0eU1hcDo6UHJvcGVydHlNYXAo
KSAKICAgICAgICAgOiBtX3NpbmdsZUVudHJ5S2V5KDApCiAgICAgICAgICwgbV9nZXR0ZXJTZXR0
ZXJGbGFnKGZhbHNlKQogICAgICAgICAsIG1fdXNpbmdUYWJsZShmYWxzZSkKLQorICAgICAgICAs
IG1fbG9jYWxJbmplY3RlZChmYWxzZSkKICAgICB7CiAgICAgfQogCkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvcHJvcGVydHlfc2xvdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9wcm9wZXJ0eV9zbG90LmgJKHJldmlzaW9uIDI0NTU4KQorKysgSmF2YVNjcmlwdENvcmUva2pz
L3Byb3BlcnR5X3Nsb3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsMTYgQEAgcHVibGlj
OgogICAgICAgICAgICAgcmV0dXJuICptX2RhdGEudmFsdWVTbG90OwogICAgICAgICByZXR1cm4g
bV9nZXRWYWx1ZShleGVjLCBvcmlnaW5hbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbShwcm9wZXJ0
eU5hbWUpLCAqdGhpcyk7IAogICAgIH0KLSAgICAKLSAgICB2b2lkIHNldFZhbHVlU2xvdChKU09i
amVjdCAqc2xvdEJhc2UsIEpTVmFsdWUgKip2YWx1ZVNsb3QpIAorCisgICAgLy8gUmVhZGFiaWxp
dHkgaGVscGVyIGZvciBiZWxvdy4uCisgICAgZW51bSB7CisgICAgICAgIFBlcm1pdERpcmVjdFdy
aXRlID0gMCwKKyAgICAgICAgRm9yYmlkRGlyZWN0V3JpdGUgPSAxCisgICAgfTsKKworICAgIHZv
aWQgc2V0VmFsdWVTbG90KEpTT2JqZWN0ICpzbG90QmFzZSwgSlNWYWx1ZSAqKnZhbHVlU2xvdCwg
Ym9vbCBtYWtlUmVhZE9ubHkpIAogICAgIHsKKyAgICAgICAgbV9yZWFkT25seSB8PSBtYWtlUmVh
ZE9ubHk7CiAgICAgICAgIG1fc2xvdEJhc2UgPSBzbG90QmFzZTsKICAgICAgICAgbV9kYXRhLnZh
bHVlU2xvdCA9IHZhbHVlU2xvdDsKICAgICAgICAgbV9nZXRWYWx1ZSA9IFZBTFVFX1NMT1RfTUFS
S0VSOwpAQCAtMTAyLDYgKzEwOSwyMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgSGFzaEVudHJ5ICpz
dGF0aWNFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zdGF0aWNFbnRyeTsgfQogICAgIHVu
c2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmluZGV4OyB9CiAKKyAgICAvLyBG
b3IgZGlyZWN0L3ZhbHVlIHNsb3RzIHdlIGFsc28ga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZXkn
cmUgCisgICAgLy8gd3JpdGVhYmxlLiBUaGlzIGlzIGNsZWFyZWQgd2hlbiB0aGUgbG9va3VwIHN1
Y2NlZWRzIGluIHRoZSAKKyAgICAvLyBwcm90b3R5cGUgc2luY2UgdGhlIHdyaXRlIHNob3VsZCBn
byBlbHNld2hlcmUuCisgICAgLy8gIyMjIGl0IG1heSBtYWtlIHNlbnNlIHRvIGdpdmUgaXQgYSBy
ZWFsICdyZWFkIG9ubHknIHZhbHVlLCB2LnMuIAorICAgIC8vIGEgJ25vdCBzdXJlJyBvbmUsIHNp
bmNlIHJpZ2h0IG5vdCBhbiBhdHRlbXB0IHRvIHdyaXRlIGEgY29uc3QgCisgICAgLy8gd2lsbCB0
YWtlIHRoZSBzbG93IHBhdGguCisgICAgdm9pZCBzZXRQb3RlbnRpYWxseVdyaXRlYWJsZSgpIHsg
bV9yZWFkT25seSA9IGZhbHNlOyB9CisgICAgdm9pZCBzZXRSZWFkT25seSgpICAgICAgICAgICAg
IHsgbV9yZWFkT25seSA9IHRydWU7ICB9CisKKyAgICAvLyBUaGlzIHJldHVybnMgYSBwb2ludGVy
IHdoZXJlIHRoZSB2YWx1ZSBtYXkgYmUgc3RvcmVkLAorICAgIC8vIG9yIDAgaWYgdGhpcyBpcyBu
b3QgcG9zc2libGUuCisgICAgSlNWYWx1ZSoqIGdldERpcmVjdFdyaXRlTG9jYXRpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICgobV9nZXRWYWx1ZSA9PSBWQUxVRV9TTE9UX01BUktFUikgJiAh
bV9yZWFkT25seSkgPyBtX2RhdGEudmFsdWVTbG90IDogMDsKKyAgICB9CiBwcml2YXRlOgogICAg
IHN0YXRpYyBKU1ZhbHVlICp1bmRlZmluZWRHZXR0ZXIoRXhlY1N0YXRlICosIEpTT2JqZWN0ICos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNW
YWx1ZSAqZnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlICosIEpTT2JqZWN0ICosIGNvbnN0IElkZW50
aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKQEAgLTExNSw2ICsxMzcsOCBAQCBwcml2YXRl
OgogICAgICAgICBjb25zdCBIYXNoRW50cnkgKnN0YXRpY0VudHJ5OwogICAgICAgICB1bnNpZ25l
ZCBpbmRleDsKICAgICB9IG1fZGF0YTsKKworICAgIGJvb2wgbV9yZWFkT25seTsKIH07CiAKIH0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9yZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvcmVmZXJlbmNlLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvcmVmZXJlbmNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8vIC0qLSBj
LWJhc2ljLW9mZnNldDogNCAtKi0KKy8qCisgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBsaWJyYXJpZXMKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrc2ltIE9ybG92aWNoIChtYWtz
aW1Aa2RlLm9yZykKKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgUkVGRVJFTkNFX0gKKyNkZWZpbmUg
UkVGRVJFTkNFX0gKKworI2luY2x1ZGUgIm9iamVjdC5oIgorI2luY2x1ZGUgInByb3BlcnR5X3Ns
b3QuaCIKKworbmFtZXNwYWNlIEtKUyB7CisKK3N0cnVjdCBSZWZlcmVuY2UgeworICAgIC8vIyMj
IHNvbWUgcHJvdGVjdGlvbiBoZXJlIQorICAgIFByb3BlcnR5U2xvdCAgcHJvcGVydHlTbG90Owor
ICAgIGJvb2wgICAgICAgICAgZm91bmQ7IC8vbm90ZTogc2hvdWxkIGZpdCBpbnRvIHBhZGRpbmcg
b2YgYWJvdmUuLgorCisgICAgSlNPYmplY3QqICAgICBiYXNlOyAgLy9UaGlzIGlzbid0IHRoZSBz
YW1lIGFzIHNsb3QncyBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIC8vYXMgdGhhdCBt
YXkgYmUgZGlmZmVyZW50IGluIGNhc2UgcHJvdG90eXBlcyBhcmUgaW52b2x2ZWQuLgorICAgIElk
ZW50aWZpZXIgICAgaWRlbnQ7CisKKyAgICBSZWZlcmVuY2UoKSB7IH0KKworICAgIFJlZmVyZW5j
ZShjb25zdCBJZGVudGlmaWVyJiBpKSA6IGlkZW50KGkpIHsgfQorCisgICAgLy8gTm90ZTogZm9y
IHJlZmVyZW5jZXMsIHdlIG1ha2Ugc3VyZSB0aGUgc2xvdCBwb2ludHMgdG8gdGhlIG91dGVyCisg
ICAgLy8gc2NvcGUgaWYgbG9va3VwIGZhaWxlZC4uCisgICAgSlNWYWx1ZSogcmVhZChFeGVjU3Rh
dGUqIGV4ZWMpIHsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5U2xvdC5nZXRWYWx1ZShleGVjLCBi
YXNlLCBpZGVudCk7CisgICAgfQorCisgICAgdm9pZCB3cml0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUqIHZhbCkgeworICAgICAgICBpZiAoSlNWYWx1ZSoqIGxvYyA9IHByb3BlcnR5U2xvdC5n
ZXREaXJlY3RXcml0ZUxvY2F0aW9uKCkpCisgICAgICAgICAgICAqbG9jID0gdmFsOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBiYXNlLT5wdXQoZXhlYywgaWRlbnQsIHZhbCk7CisgICAgfQor
CisgICAgYm9vbCBkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICAgICAgcmV0
dXJuIGJhc2UtPmRlbGV0ZVByb3BlcnR5KGV4ZWMsIGlkZW50KTsKKyAgICB9Cit9OworCit9CisK
KyNlbmRpZgpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9zZW1hbnRpY19jaGVja2VyLmNwcAkocmV2
aXNpb24gMCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9zZW1hbnRpY19jaGVja2VyLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxOTAgQEAKKy8vIC0qLSBjLWJhc2ljLW9mZnNldDogMiAtKi0K
Ky8qCisgKiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKKyAqICBDb3B5
cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENv
cHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQorICogIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENv
cHlyaWdodCAoQykgMjAwNyBNYWtzaW0gT3Jsb3ZpY2ggKG1ha3NpbUBrZGUub3JnKQorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2luY2x1ZGUgInNlbWFudGljX2NoZWNrZXIuaCIKKworbmFtZXNwYWNlIEtKUyB7
CisKKwordm9pZCBTZW1hbnRpY0NoZWNrZXI6OmVudGVyU2VtYW50aWNDb250ZXh0KCkKK3sKKyAg
Y29udGV4dFN0YWNrLmFwcGVuZChTZW1hbnRpY0NvbnRleHQoKSk7Cit9CisKK3ZvaWQgU2VtYW50
aWNDaGVja2VyOjpleGl0U2VtYW50aWNDb250ZXh0KCkKK3sKKyAgY29udGV4dFN0YWNrLnJlbW92
ZUxhc3QoKTsKK30KKworTm9kZSogU2VtYW50aWNDaGVja2VyOjp2aXNpdChOb2RlKiBub2RlKQor
eworICByZXR1cm4gbm9kZS0+Y2hlY2tTZW1hbnRpY3ModGhpcyk7Cit9CisKK3ZvaWQgU2VtYW50
aWNDaGVja2VyOjpjaGVja1NlbWFudGljcyhOb2RlKiBub2RlKSB7CisgIGVudGVyU2VtYW50aWND
b250ZXh0KCk7CisgIHZpc2l0KG5vZGUpOworICBleGl0U2VtYW50aWNDb250ZXh0KCk7Cit9CisK
K05vZGUqIE5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogY2hlY2tlclN0YXRl
KQoreworICByZWN1cnNlVmlzaXQoY2hlY2tlclN0YXRlKTsKKyAgcmV0dXJuIDA7Cit9CisKK05v
ZGUqIFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogY2hlY2tl
clN0YXRlKQoreworICBTZW1hbnRpY0NvbnRleHQqIGN0eCA9IGNoZWNrZXJTdGF0ZS0+c2VtYW50
aWNDb250ZXh0KCk7CisKKyAgYm9vbCBpc0xvb3AgICA9IGlzSXRlcmF0aW9uU3RhdGVtZW50KCk7
CisgIGJvb2wgaXNTd2l0Y2ggPSBpc1N3aXRjaFN0YXRlbWVudCgpOworICAKKyAgaWYgKCFjdHgt
PnBlbmRpbmdMYWJlbHMuaXNFbXB0eSgpKSB7CisgICAgLy8gV2Ugd291bGQgbGlrZSB0byBwcm9w
ZXJseSBiaW5kIHRoZSBsYWJlbHMgYXQgdGhpcyBwb2ludCwKKyAgICAvLyBub3cgdGhhdCB3ZSBn
b3QgdG8gc29tZSByZWFsIGNvZGUuIEhvdyB3ZSBiaW5kIGRlcGVuZHMgb24KKyAgICAvLyB3aGF0
IHRoZSBjdXJyZW50IHN0YXRlbWVudCBpczogaWYgaXQncyBhIHN3aXRjaCBvciBhIGxvb3AsCisg
ICAgLy8gd2UgYmluZCB0byB0aGF0LCBvdGhlcndpc2UgYmluZCB0byB0aGUgbGFiZWwgaXRzZWxm
LCBmb3IgdGhlCisgICAgLy8gbGFiZWw6IGJyZWFrIGxhYmVsOyB0eXBlIG9mIHVzYWdlLgorICAg
IE5vZGUqIGxhYmVsVGFyZ2V0ID0gKGlzTG9vcCB8fCBpc1N3aXRjaCkgPyB0aGlzIDogY3R4LT5s
YXN0TGFiZWw7CisgICAgCisgICAgZm9yIChIYXNoU2V0PElkZW50aWZpZXI+OjppdGVyYXRvciBp
ID0gICBjdHgtPnBlbmRpbmdMYWJlbHMuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGkgIT0gY3R4LT5wZW5kaW5nTGFiZWxzLmVuZCgpOyArK2kpIHsKKyAg
ICAgIGN0eC0+bGFiZWxUYXJnZXRzLmFkZCgqaSwgbGFiZWxUYXJnZXQpOworICAgIH0KKworICAg
IGN0eC0+cGVuZGluZ0xhYmVscy5jbGVhcigpOworICB9CisKKyAgaWYgKGlzTG9vcCkgeworICAg
IGN0eC0+ZGVmYXVsdENvbnRpbnVlVGFyZ2V0cy5hcHBlbmQodGhpcyk7CisgICAgY3R4LT5kZWZh
dWx0QnJlYWtUYXJnZXRzLmFwcGVuZCh0aGlzKTsKKyAgfQorCisgIGlmIChpc1N3aXRjaCkKKyAg
ICBjdHgtPmRlZmF1bHRCcmVha1RhcmdldHMuYXBwZW5kKHRoaXMpOworCisgICh2b2lkKSBOb2Rl
OjpjaGVja1NlbWFudGljcyhjaGVja2VyU3RhdGUpOworCisgIGlmIChpc0xvb3ApIHsKKyAgICBj
dHgtPmRlZmF1bHRDb250aW51ZVRhcmdldHMucmVtb3ZlTGFzdCgpOworICAgIGN0eC0+ZGVmYXVs
dEJyZWFrVGFyZ2V0cy5yZW1vdmVMYXN0KCk7CisgIH0KKworICBpZiAoaXNTd2l0Y2gpCisgICAg
Y3R4LT5kZWZhdWx0QnJlYWtUYXJnZXRzLnJlbW92ZUxhc3QoKTsKKworICByZXR1cm4gMDsKK30K
KworTm9kZSogTGFiZWxOb2RlOjpjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIGNoZWNr
ZXJTdGF0ZSkKK3sKKyAgU2VtYW50aWNDb250ZXh0KiBjdHggPSBjaGVja2VyU3RhdGUtPnNlbWFu
dGljQ29udGV4dCgpOworCisgIC8vIEFkZCB0aGUgbGFiZWwgdG8gdGhlIHNlZW4gc2V0LCBhbmQg
c2VlIGlmIGl0J3MgYWxyZWFkeSB0aGVyZS4uCisgIGlmICghY3R4LT5zZWVuTGFiZWxzLmFkZChs
YWJlbCkuc2Vjb25kKQorICAgIHJldHVybiBjcmVhdGVFcnJvck5vZGUoU3ludGF4RXJyb3IsICJE
dXBsaWNhdGVkIGxhYmVsICVzIGZvdW5kLiIsIGxhYmVsKTsKKworICAvLyBBZGQgaXQgdG8gdGhl
IHNldCBvZiBwZW5kaW5nIGxhYmVscywgbWVtb3JpemUgdGhpcyBub2RlIGFzCisgIC8vIGNhbmRp
ZGF0ZSBmb3IgYmluZGluZyB0aGUgbmFtZQorICBjdHgtPnBlbmRpbmdMYWJlbHMuYWRkKGxhYmVs
KTsKKyAgY3R4LT5sYXN0TGFiZWwgPSB0aGlzOworCisgIC8vIFdlIGRvIG5vdCBjYWxsIHVwIHRv
IFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzLCBzaW5jZSB0aGF0IHdvdWxkCisgIC8vIGFw
cGx5IGFjY3VtdWxhdGVkIGxhYmVscywgYW5kIHdlIHdhbnQgdG8gZGVmZXIgdGhlbSB1bnRpbCB3
ZSBnZXQgdGhlCisgIC8vIGZpcnN0IG5vbi1sYWJlbCBzdGF0ZW1lbnQuCisgICh2b2lkKU5vZGU6
OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7CisKKyAgY3R4LT5sYWJlbFRhcmdldHMucmVt
b3ZlKGxhYmVsKTsKKyAgY3R4LT5zZWVuTGFiZWxzLnJlbW92ZShsYWJlbCk7CisgIHJldHVybiAw
OworfQorCitOb2RlKiBGdW5jRGVjbE5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tl
ciogY2hlY2tlclN0YXRlKQoreworICBjaGVja2VyU3RhdGUtPmVudGVyU2VtYW50aWNDb250ZXh0
KCk7CisgICh2b2lkKVN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7
CisgIGNoZWNrZXJTdGF0ZS0+ZXhpdFNlbWFudGljQ29udGV4dCgpOworICByZXR1cm4gMDsKK30K
KworTm9kZSogRnVuY0V4cHJOb2RlOjpjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIGNo
ZWNrZXJTdGF0ZSkKK3sKKyAgY2hlY2tlclN0YXRlLT5lbnRlclNlbWFudGljQ29udGV4dCgpOwor
ICAodm9pZClOb2RlOjpjaGVja1NlbWFudGljcyhjaGVja2VyU3RhdGUpOworICBjaGVja2VyU3Rh
dGUtPmV4aXRTZW1hbnRpY0NvbnRleHQoKTsKKyAgcmV0dXJuIDA7Cit9CisKK05vZGUqIENvbnRp
bnVlTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBjaGVja2VyU3RhdGUpCit7
CisgIFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7IC8vUmVzb2x2
ZSBxdWV1ZWQgbGFiZWxzIGlmIG5lZWQgYmUuLgorCisgIFNlbWFudGljQ29udGV4dCogY3R4ID0g
Y2hlY2tlclN0YXRlLT5zZW1hbnRpY0NvbnRleHQoKTsKKworICAvLyBCaW5kIHRoZSBsYWJlbC4u
CisgIGlmIChpZGVudC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoY3R4LT5kZWZhdWx0Q29udGludWVU
YXJnZXRzLmlzRW1wdHkoKSkKKyAgICAgIHJldHVybiBjcmVhdGVFcnJvck5vZGUoU3ludGF4RXJy
b3IsICJJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4iKTsKKyAgICBlbHNlCisgICAgICB0YXJn
ZXQgPSBjdHgtPmRlZmF1bHRDb250aW51ZVRhcmdldHMubGFzdCgpOworICB9IGVsc2UgIHsKKyAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSBrbm93IHRoaXMgbGFiZWwsIGFuZCB0aGF0IGl0IGlzIGEg
CisgICAgLy8gbG9vcC1zdHlsZSBsYWJlbHMuCisgICAgaWYgKCFjdHgtPnNlZW5MYWJlbHMuY29u
dGFpbnMoaWRlbnQpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50YXhFcnJvciwg
IkxhYmVsICVzIG5vdCBmb3VuZC4iLCBpZGVudCk7CisgICAgdGFyZ2V0ID0gY3R4LT5sYWJlbFRh
cmdldHMuZ2V0KGlkZW50KTsKKworICAgIGlmICghdGFyZ2V0LT5pc0l0ZXJhdGlvblN0YXRlbWVu
dCgpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50YXhFcnJvciwgIkludmFsaWQg
Y29udGludWUgc3RhdGVtZW50LiIpOworICB9CisKKyAgcmV0dXJuIDA7Cit9CisKK05vZGUqIEJy
ZWFrTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBjaGVja2VyU3RhdGUpCit7
CisgIFN0YXRlbWVudE5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7IC8vUmVzb2x2
ZSBxdWV1ZWQgbGFiZWxzIGlmIG5lZWQgYmUuLgorCisgIFNlbWFudGljQ29udGV4dCogY3R4ID0g
Y2hlY2tlclN0YXRlLT5zZW1hbnRpY0NvbnRleHQoKTsKKworICAvLyBCaW5kIHRoZSBsYWJlbC4u
CisgIGlmIChpZGVudC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoY3R4LT5kZWZhdWx0QnJlYWtUYXJn
ZXRzLmlzRW1wdHkoKSkKKyAgICAgIHJldHVybiBjcmVhdGVFcnJvck5vZGUoU3ludGF4RXJyb3Is
ICJJbnZhbGlkIGJyZWFrIHN0YXRlbWVudC4iKTsKKyAgICBlbHNlCisgICAgICB0YXJnZXQgPSBj
dHgtPmRlZmF1bHRCcmVha1RhcmdldHMubGFzdCgpOworICB9IGVsc2UgIHsKKyAgICAvLyBNYWtl
IHN1cmUgdGhhdCB3ZSBrbm93IHRoaXMgbGFiZWwKKyAgICBpZiAoIWN0eC0+c2VlbkxhYmVscy5j
b250YWlucyhpZGVudCkpCisgICAgICByZXR1cm4gY3JlYXRlRXJyb3JOb2RlKFN5bnRheEVycm9y
LCAiTGFiZWwgJXMgbm90IGZvdW5kLiIsIGlkZW50KTsKKyAgICB0YXJnZXQgPSBjdHgtPmxhYmVs
VGFyZ2V0cy5nZXQoaWRlbnQpOworICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKworfSAvL25hbWVz
cGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9zZW1hbnRpY19jaGVja2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuaAkocmV2aXNp
b24gMCkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9zZW1hbnRpY19jaGVja2VyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzUgQEAKKy8vIC0qLSBjLWJhc2ljLW9mZnNldDogMiAtKi0KKy8qCisg
KiAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKKyAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdo
dCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENvcHlyaWdo
dCAoQykgMjAwNyBNYWtzaW0gT3Jsb3ZpY2ggKG1ha3NpbUBrZGUub3JnKQorICoKKyAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
KiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2lmbmRlZiBTRU1BTlRJQ19DSEVDS0VSX0gKKyNkZWZpbmUgU0VNQU5USUNfQ0hFQ0tFUl9I
CisKKyNpbmNsdWRlICJub2Rlcy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordXNpbmcgV1RG
OjpIYXNoU2V0OwordXNpbmcgV1RGOjpIYXNoTWFwOwordXNpbmcgV1RGOjpWZWN0b3I7CisKK25h
bWVzcGFjZSBLSlMgeworICBjbGFzcyBTZW1hbnRpY0NvbnRleHQgeworICBwdWJsaWM6CisgICAg
U2VtYW50aWNDb250ZXh0KCkge30KKworICAgIEhhc2hTZXQ8SWRlbnRpZmllcj4gc2VlbkxhYmVs
czsKKyAgICBIYXNoU2V0PElkZW50aWZpZXI+IHBlbmRpbmdMYWJlbHM7CisgICAgTGFiZWxOb2Rl
KiAgICAgICAgICBsYXN0TGFiZWw7CisgICAgSGFzaE1hcDxJZGVudGlmaWVyLCBOb2RlKj4gbGFi
ZWxUYXJnZXRzOworCisgICAgVmVjdG9yPE5vZGUqPiBkZWZhdWx0Q29udGludWVUYXJnZXRzOwor
ICAgIFZlY3RvcjxOb2RlKj4gZGVmYXVsdEJyZWFrVGFyZ2V0czsKKyAgfTsKKworCisgIC8qKgor
ICAgVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHN0YXRpY2FsbHkgZGV0ZWN0IHNvbWUgY2xhc3NlcyBv
ZiBlcnJvcnMgaW4gdGhlCisgICBwcm9ncmFtLCBhbmQgcmVwbGFjZSB0aGVtIHdpdGggYW4gYXBw
cm9wcmlhdGUgZXJyb3Igbm9kZS4KKyAgKi8KKyAgY2xhc3MgU2VtYW50aWNDaGVja2VyIDogcHVi
bGljIE5vZGVWaXNpdG9yIHsKKyAgcHVibGljOgorICAgIHZvaWQgY2hlY2tTZW1hbnRpY3MoTm9k
ZSogbm9kZSk7CisKKyAgICBTZW1hbnRpY0NvbnRleHQqIHNlbWFudGljQ29udGV4dCgpIHsgcmV0
dXJuICZjb250ZXh0U3RhY2subGFzdCgpOyB9CisKKyAgICB2b2lkIGVudGVyU2VtYW50aWNDb250
ZXh0KCk7CisgICAgdm9pZCBleGl0U2VtYW50aWNDb250ZXh0KCk7CisKKyAgICAvLyMjIyBzaG91
bGQgcHJvbGx5IG1ha2UgcHJpdmF0ZSAtLS0gY2hlY2sgb3RoZXIgdXNlcy4uCisgICAgdmlydHVh
bCBOb2RlKiB2aXNpdChOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOworCisgIHByaXZhdGU6Cisg
ICAgVmVjdG9yPFNlbWFudGljQ29udGV4dD4gY29udGV4dFN0YWNrOworICB9OworfTsKKworI2Vu
ZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvdmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvdmFsdWUuaAkocmV2aXNpb24gMjQ1NTgpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvdmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDcgKzEwOCw2IEBAIHB1YmxpYzoK
ICAgICAvLyBHYXJiYWdlIGNvbGxlY3Rpb24uCiAgICAgdm9pZCBtYXJrKCk7CiAgICAgYm9vbCBt
YXJrZWQoKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnRhdGlvbiBkZXRhaWxz
LgogICAgIEpTQ2VsbCAqYXNDZWxsKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3pp
bGxhL2V4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvdGVzdHMvbW96
aWxsYS9leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyNDU1OCkKKysrIEphdmFTY3JpcHRDb3JlL3Rl
c3RzL21vemlsbGEvZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNywxMSArNywxMSBA
QAogPHAgY2xhc3M9J3Jlc3VsdHNfc3VtbWFyeSc+CiBUZXN0IExpc3Q6IEFsbCB0ZXN0czxicj4K
IFNraXAgTGlzdDogKG5vbmUpPGJyPgotMTEzNSB0ZXN0KHMpIHNlbGVjdGVkLCAxMTI3IHRlc3Qo
cykgY29tcGxldGVkLCA2NCBmYWlsdXJlcyByZXBvcnRlZCAoNS42NyUgZmFpbGVkKTxicj4KLUVu
Z2luZSBjb21tYW5kIGxpbmU6IC9Vc2Vycy9kYXJpbi9CdWlsZC9EZWJ1Zy90ZXN0a2pzIDxicj4K
LU9TIHR5cGU6IERhcndpbiBpbDAzMDFlLWRoY3AyMDEuYXBwbGUuY29tIDkuMC4wYjIgRGFyd2lu
IEtlcm5lbCBWZXJzaW9uIDkuMC4wYjI6IFR1ZSBKdW4gMjYgMTg6NDA6NTUgUERUIDIwMDc7IHJv
b3Q6eG51LTExMzkuMX4xL1JFTEVBU0VfUFBDIFBvd2VyIE1hY2ludG9zaDxicj4KLVRlc3RjYXNl
IGV4ZWN1dGlvbiB0aW1lOiA3IG1pbnV0ZXMsIDEzIHNlY29uZHMuPGJyPgotVGVzdHMgY29tcGxl
dGVkIG9uIFRodSBKdWwgMTkgMTM6MTA6MDggMjAwNy48YnI+PGJyPgorMTEzNSB0ZXN0KHMpIHNl
bGVjdGVkLCAxMTI3IHRlc3QocykgY29tcGxldGVkLCA2NiBmYWlsdXJlcyByZXBvcnRlZCAoNS44
NSUgZmFpbGVkKTxicj4KK0VuZ2luZSBjb21tYW5kIGxpbmU6IC9Vc2Vycy9DYW1lcm9uL1dlYktp
dC9XZWJLaXRCdWlsZC9SZWxlYXNlL3Rlc3RranMgPGJyPgorT1MgdHlwZTogRGFyd2luIGNwZTAw
MWI2MzkzYTc0Ni1jbTAwNDA3Yjg2MDFjZC5jcGUubmV0LmNhYmxlLnJvZ2Vycy5jb20gOC4xMC4x
IERhcndpbiBLZXJuZWwgVmVyc2lvbiA4LjEwLjE6IFdlZCBNYXkgMjMgMTY6MzM6MDAgUERUIDIw
MDc7IHJvb3Q6eG51LTc5Mi4yMi41fjEvUkVMRUFTRV9JMzg2IGkzODYgaTM4Njxicj4KK1Rlc3Rj
YXNlIGV4ZWN1dGlvbiB0aW1lOiA0MiBzZWNvbmRzLjxicj4KK1Rlc3RzIGNvbXBsZXRlZCBvbiBU
aHUgQXVnICAyIDIxOjUzOjMyIDIwMDcuPGJyPjxicj4KIFsgPGEgaHJlZj0nI2ZhaWxfZGV0YWls
Jz5GYWlsdXJlIERldGFpbHM8L2E+IHwgPGEgaHJlZj0nI3JldGVzdF9saXN0Jz5SZXRlc3QgTGlz
dDwvYT4gfCA8YSBocmVmPSdtZW51Lmh0bWwnPlRlc3QgU2VsZWN0aW9uIFBhZ2U8L2E+IF08YnI+
CiA8aHI+CiA8YSBuYW1lPSdmYWlsX2RldGFpbCc+PC9hPgpAQCAtMzUsMTkgKzM1LDE3IEBAIEZh
aWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAz
PGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVz
dGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiA2MTggS0pTOjpOb2RlPGJyPgogLS0+IFJlZ0V4
cC9oZXgtMDAxLmpzIEpTIHJlZ2V4cCBhbmNob3Jpbmcgb24gZW1wdHkgbWF0Y2ggYnVnPGJyPgog
LS0+IEJVR05VTUJFUjogaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU3PGJyPgotWzY3MDQ2XSAuL2VjbWFfMi9SZWdFeHAvcmVncmVzcy0wMDEuanMgbGluZSAx
ODogVHlwZUVycm9yOiBPYmplY3QgL2F8fGIvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvYXx8Yi8p
IGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KK1sxMDUzXSAuL2VjbWFfMi9SZWdFeHAvcmVncmVz
cy0wMDEuanMgbGluZSAxODogVHlwZUVycm9yOiBPYmplY3QgL2F8fGIvIChyZXN1bHQgb2YgZXhw
cmVzc2lvbiAvYXx8Yi8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgogPGEg
bmFtZT0nZmFpbHVyZTQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vZWNtYV8yL1JlZ0V4cC91bmljb2RlLTAwMS5qcyc+ZWNtYV8yL1JlZ0V4cC91
bmljb2RlLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTMn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1Jz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhw
ZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNp
Z25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiA2NzEg
S0pTOjpOb2RlPGJyPgogLS0+IFJlZ0V4cC91bmljb2RlLTAwMS5qcyBuZXcgUmVnRXhwKCBwYXR0
ZXJuLCBmbGFncyApPGJyPgotWzY3MDQ3XSAuL2VjbWFfMi9SZWdFeHAvdW5pY29kZS0wMDEuanMg
bGluZSAzMzogVHlwZUVycm9yOiBOdWxsIHZhbHVlPGJyPgorWzEwNTRdIC4vZWNtYV8yL1JlZ0V4
cC91bmljb2RlLTAwMS5qcyBsaW5lIDMzOiBUeXBlRXJyb3I6IE51bGwgdmFsdWU8YnI+CiA8L3R0
Pjxicj4KIDxhIG5hbWU9J2ZhaWx1cmU1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0n
b3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9EYXRlLzE1LjkuNS43LmpzJz5lY21hXzMvRGF0
ZS8xNS45LjUuNy5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTQn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2Jz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CkBAIC02Miw4
ICs2MCw4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKE1vbiBGZWIgMjggMjAw
MCAxNjowMDowMCBHTVQtMDgwMCAoUFNUKSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgPSA0OjAwOjAw
IFBNIFBTVCBGQUlMRUQhIGV4cGVjdGVkOiAxNjowMDowMDxicj4KIC0tPiAoTW9uIEZlYiAyOCAy
MDAwIDE1OjU5OjU5IEdNVC0wODAwIChQU1QpKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDM6NTk6
NTkgUE0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDE1OjU5OjU5PGJyPgogLS0+IChUdWUgRmViIDI5
IDIwMDAgMDA6MDA6MDAgR01ULTA4MDAgKFBTVCkpLnRvTG9jYWxlVGltZVN0cmluZygpID0gMTI6
MDA6MDAgQU0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDAwOjAwOjAwPGJyPgotLS0+IChUaHUgSnVs
IDE5IDIwMDcgMTM6MDk6MDEgR01ULTA3MDAgKFBEVCkpLnRvTG9jYWxlVGltZVN0cmluZygpID0g
MTowOTowMSBQTSBQRFQgRkFJTEVEISBleHBlY3RlZDogMTM6MDk6MDE8YnI+Ci0tLT4gKFRodSBK
dWwgMTkgMjAwNyAyMTowOTowMSBHTVQtMDcwMCAoUERUKSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkg
PSA5OjA5OjAxIFBNIFBEVCBGQUlMRUQhIGV4cGVjdGVkOiAyMTowOTowMTxicj4KKy0tPiAoVGh1
IEF1ZyAwMiAyMDA3IDIxOjUzOjIxIEdNVC0wNzAwIChQRFQpKS50b0xvY2FsZVRpbWVTdHJpbmco
KSA9IDk6NTM6MjEgUE0gUERUIEZBSUxFRCEgZXhwZWN0ZWQ6IDIxOjUzOjIxPGJyPgorLS0+IChG
cmkgQXVnIDAzIDIwMDcgMDU6NTM6MjEgR01ULTA3MDAgKFBEVCkpLnRvTG9jYWxlVGltZVN0cmlu
ZygpID0gNTo1MzoyMSBBTSBQRFQgRkFJTEVEISBleHBlY3RlZDogMDU6NTM6MjE8YnI+CiAtLT4g
KEZyaSBEZWMgMzEgMjAwNCAxNjowMDowMCBHTVQtMDgwMCAoUFNUKSkudG9Mb2NhbGVUaW1lU3Ry
aW5nKCkgPSA0OjAwOjAwIFBNIFBTVCBGQUlMRUQhIGV4cGVjdGVkOiAxNjowMDowMDxicj4KIC0t
PiAoRnJpIERlYyAzMSAyMDA0IDE1OjU5OjU5IEdNVC0wODAwIChQU1QpKS50b0xvY2FsZVRpbWVT
dHJpbmcoKSA9IDM6NTk6NTkgUE0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDE1OjU5OjU5PGJyPgog
LS0+IChTYXQgSmFuIDAxIDIwMDUgMDA6MDA6MDAgR01ULTA4MDAgKFBTVCkpLnRvTG9jYWxlVGlt
ZVN0cmluZygpID0gMTI6MDA6MDAgQU0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDAwOjAwOjAwPGJy
PgpAQCAtNzMsMTAgKzcxLDI5IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiA8dHQ+RXhw
ZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNp
Z25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjMg
S0pTOjpOb2RlPGJyPgotPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNyc+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwLzE1
LjEwLjItMS5qcyc+ZWNtYV8zL1JlZ0V4cC8xNS4xMC4yLTEuanM8L2E+IGZhaWxlZDwvYj4gPGEg
aHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0obm9uZSkn
IHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIChub25lKTwvYT48YnI+CitUZXN0Y2Fz
ZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNyc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvRnVu
Y3Rpb24vc2NvcGUtMDAxLmpzJz5lY21hXzMvRnVuY3Rpb24vc2NvcGUtMDAxLmpzPC9hPiBmYWls
ZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9KG5vbmUpJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAobm9uZSk8L2E+PGJy
PgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlOCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgdGhhdCBmdW5jdGlvbnMg
YXJlIHNjb3BlZCBzdGF0aWNhbGx5LCBub3QgZHluYW1pY2FsbHk8YnI+CitGYWlsdXJlIG1lc3Nh
Z2VzIHdlcmU6PGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlv
biBCIG9mIHRlc3Q8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBl
Y3RlZCB2YWx1ZSAnMicsIEFjdHVhbCB2YWx1ZSAnMSc8YnI+CistLT4gRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSA8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBTZWN0aW9uIEMgb2YgdGVzdDxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIEV4cGVjdGVkIHZhbHVlICcyJywgQWN0dWFsIHZhbHVlICcxJzxicj4KKy0tPiBGQUlMRUQh
OiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIFNlY3Rpb24gRCBvZiB0ZXN0PGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBm
cm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzMnLCBBY3R1YWwgdmFsdWUgJzEnPGJyPgorLS0+
IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorLS0+IEZBSUxFRCE6IFtyZXBv
cnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiBFIG9mIHRlc3Q8YnI+CistLT4gRkFJTEVEITogW3Jl
cG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMicsIEFjdHVhbCB2YWx1ZSAnMSc8
YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CistLT4gRkFJTEVE
ITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIEYgb2YgdGVzdDxicj4KKy0tPiBGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcyJywgQWN0dWFsIHZh
bHVlICcxJzxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKzwv
dHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC8xNS4xMC4yLTEuanMnPmVjbWFf
My9SZWdFeHAvMTUuMTAuMi0xLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9KG5vbmUpJyB0YXJnZXQ9J290aGVyX3dp
bmRvdyc+QnVnIE51bWJlciAobm9uZSk8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU3Jz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlOSc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBT
VEFUVVM6IFJlZ0V4cCBjb25mb3JtYW5jZSB0ZXN0PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJl
Ojxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gNyBvZiB0
ZXN0IC08YnI+CkBAIC0xMDEsOCArMTE4LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4K
IC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogbnVsbDxicj4KIC0t
PiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFt
ZT0nZmFpbHVyZTgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9wZXJsc3RyZXNzLTAwMS5qcyc+ZWNtYV8zL1JlZ0V4cC9w
ZXJsc3RyZXNzLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg1NzIxJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+
QnVnIE51bWJlciA4NTcyMTwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTcnPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJl
OSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9l
Y21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAxLmpzJz5lY21hXzMvUmVnRXhwL3BlcmxzdHJlc3Mt
MDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODU3MjEnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVy
IDg1NzIxPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlOCc+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTEwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogVGVzdGluZyBy
ZWd1bGFyIGV4cHJlc3Npb24gZWRnZSBjYXNlczxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8
YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDIxOCBvZiB0
ZXN0IC08YnI+CkBAIC0xNDEsOCArMTU4LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4K
IC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogWyJhYWJiYWEiLCAi
YWEiLCAiYmIiXTxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4K
IDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9wZXJsc3RyZXNzLTAwMi5q
cyc+ZWNtYV8zL1JlZ0V4cC9wZXJsc3RyZXNzLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVm
PSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg1NzIxJyB0YXJn
ZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA4NTcyMTwvYT48YnI+Ci0gWyA8YSBocmVmPScj
ZmFpbHVyZTgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxMCc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgorPGEgbmFtZT0nZmFpbHVyZTEwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3Ro
ZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcGVybHN0cmVzcy0wMDIuanMnPmVjbWFf
My9SZWdFeHAvcGVybHN0cmVzcy0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04NTcyMScgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnPkJ1ZyBOdW1iZXIgODU3MjE8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU5
Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTEnPk5leHQgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4t
LT4gU1RBVFVTOiBUZXN0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBlZGdlIGNhc2VzPGJyPgogRmFp
bHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIFNlY3Rpb24gNDAgb2YgdGVzdCAtPGJyPgpAQCAtMTYwLDggKzE3Nyw4IEBAIEZhaWx1cmUg
bWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBB
Y3R1YWw6IG51bGw8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+
CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxMCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtNzI5NjQu
anMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy03Mjk2NC5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVm
PSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTcyOTY0JyB0YXJn
ZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA3Mjk2NDwvYT48YnI+Ci0gWyA8YSBocmVmPScj
ZmFpbHVyZTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxMSc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgorPGEgbmFtZT0nZmFpbHVyZTExJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3Ro
ZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVzcy03Mjk2NC5qcyc+ZWNtYV8z
L1JlZ0V4cC9yZWdyZXNzLTcyOTY0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5NjQnIHRhcmdldD0nb3RoZXJf
d2luZG93Jz5CdWcgTnVtYmVyIDcyOTY0PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTAn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxMic+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0t
PiBTVEFUVVM6IFRlc3RpbmcgcmVndWxhciBleHByZXNzaW9ucyBjb250YWluaW5nIG5vbi1MYXRp
bjEgY2hhcmFjdGVyczxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVE
ITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDMgb2YgdGVzdCAtPGJyPgpAQCAtMTc5
LDggKzE5Niw4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3Jl
cG9ydGVkIGZyb20gdGVzdCgpXSBBY3R1YWw6IG51bGw8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxMSc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMv
UmVnRXhwL3JlZ3Jlc3MtNzgxNTYuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy03ODE1Ni5qczwv
YT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4MTU2JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA3ODE1Njwv
YT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTEwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlMTInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxMic+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3Jl
Z3Jlc3MtNzgxNTYuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy03ODE1Ni5qczwvYT4gZmFpbGVk
PC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTc4MTU2JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA3ODE1NjwvYT48YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTExJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMTMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBUZXN0aW5nIHJlZ3VsYXIgZXhwcmVzc2lv
bnMgd2l0aCAgXiwgJCwgYW5kIHRoZSBtIGZsYWcgLTxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2Vy
ZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDIgb2Yg
dGVzdCAtPGJyPgpAQCAtMTk4LDI0ICsyMTUsMjMgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogbnVsbDxicj4K
IC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEg
bmFtZT0nZmFpbHVyZTEyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVzcy0xMDAxOTkuanMnPmVjbWFfMy9SZWdF
eHAvcmVncmVzcy0xMDAxOTkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2Zh
aWx1cmUxMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEzJz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
Cis8YSBuYW1lPSdmYWlsdXJlMTMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qcyc+ZWNtYV8z
L1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVm
PScjZmFpbHVyZTEyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTQn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJt
aW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxi
cj4KLUxFQUs6IDg1MyBLSlM6Ok5vZGU8YnI+Ci1bNjcyMTldIC4vZWNtYV8zL1JlZ0V4cC9yZWdy
ZXNzLTEwMDE5OS5qcyBsaW5lIDQ4OiBTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJl
c3Npb246IG1pc3NpbmcgdGVybWluYXRpbmcgXSBmb3IgY2hhcmFjdGVyIGNsYXNzPGJyPgorWzEx
ODFdIC4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qcyBsaW5lIDQ4OiBTeW50YXhFcnJv
cjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3NpbmcgdGVybWluYXRpbmcgXSBmb3Ig
Y2hhcmFjdGVyIGNsYXNzPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMTMnPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1Jl
Z0V4cC9yZWdyZXNzLTE4ODIwNi5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTE4ODIwNi5qczwv
YT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4ODIwNicgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTg4MjA2
PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI2ZhaWx1cmUxNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90
b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTE0Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAv
cmVncmVzcy0xODgyMDYuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy0xODgyMDYuanM8L2E+IGZh
aWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODgyMDYnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDE4ODIwNjwvYT48
YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlMTUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBJbnZhbGlkIHVzZSBvZiByZWdl
eHAgcXVhbnRpZmllcnMgc2hvdWxkIGdlbmVyYXRlIFN5bnRheEVycm9yczxicj4KIEZhaWx1cmUg
bWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBT
ZWN0aW9uIDMgb2YgdGVzdCAtPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gRXhwZWN0ZWQgdmFsdWUgJ1N5bnRheEVycm9yJywgQWN0dWFsIHZhbHVlICdEaWQgbm90IGdl
bmVyYXRlIEFOWSBlcnJvciEhISc8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVz
dCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxNCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhwL3JlZ3Jl
c3MtMjA5OTE5LmpzJz5lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMjA5OTE5LmpzPC9hPiBmYWlsZWQ8
L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA5OTE5JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMDk5MTk8L2E+PGJyPgot
IFsgPGEgaHJlZj0nI2ZhaWx1cmUxMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTE1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTIw
OTkxOS5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTIwOTkxOS5qczwvYT4gZmFpbGVkPC9iPiA8
YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTkx
OScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMjA5OTE5PC9hPjxicj4KKyBbIDxh
IGhyZWY9JyNmYWlsdXJlMTQnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUxNic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgcmVnZXhwIHN1Ym1hdGNoZXMgd2l0
aCBxdWFudGlmaWVyczxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVE
ITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDEgb2YgdGVzdCAtPGJyPgpAQCAtMjU0
LDQxICsyNzAsMzkgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogWyIxLjAwMCwwMCIsICIiLCAiLDAwIl08YnI+
CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxh
IG5hbWU9J2ZhaWx1cmUxNSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9lY21hXzMvU3RhdGVtZW50cy9yZWdyZXNzLTE5NDM2NC5qcyc+ZWNtYV8z
L1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEg
aHJlZj0nI2ZhaWx1cmUxNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTE2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQz
NjQuanMnPmVjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzPC9hPiBmYWlsZWQ8L2I+
IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmUxNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxi
cj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3Rj
YXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzk3IEtKUzo6Tm9kZTxicj4KLVs2NzI3NV0gLi9l
Y21hXzMvU3RhdGVtZW50cy9yZWdyZXNzLTE5NDM2NC5qcyBsaW5lIDE6IFN5bnRheEVycm9yOiBQ
YXJzZSBlcnJvcjxicj4KK1sxMjA3XSAuL2VjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0
LmpzIGxpbmUgMTogU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yPGJyPgogPC90dD48YnI+Ci08YSBu
YW1lPSdmYWlsdXJlMTYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vZWNtYV8zL1VuaWNvZGUvdWMtMDAxLmpzJz5lY21hXzMvVW5pY29kZS91Yy0w
MDEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYxMCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIg
MjM2MTA8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNSc+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTE3Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTcnPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1Vu
aWNvZGUvdWMtMDAxLmpzJz5lY21hXzMvVW5pY29kZS91Yy0wMDEuanM8L2E+IGZhaWxlZDwvYj4g
PGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzYx
MCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMjM2MTA8L2E+PGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUxNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTE4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogVW5pY29kZSBmb3JtYXQtY29udHJvbCBjaGFyYWN0
ZXIgKENhdGVnb3J5IENmKSB0ZXN0Ljxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAt
LT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBVbmljb2RlIGZvcm1hdC1jb250cm9s
IGNoYXJhY3RlciB0ZXN0IChDYXRlZ29yeSBDZi4pPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRl
ZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ25vIGVycm9yJywgQWN0dWFsIHZhbHVlICdu
b+KAjiBlcnJvcic8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+
CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvVW5pY29kZS91Yy0wMDIuanMnPmVj
bWFfMy9Vbmljb2RlL3VjLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVn
emlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEzJyB0YXJnZXQ9J290aGVyX3dp
bmRvdyc+QnVnIE51bWJlciAyMzYxMzwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTE2Jz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTgnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9
J2ZhaWx1cmUxOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9lY21hXzMvVW5pY29kZS91Yy0wMDIuanMnPmVjbWFfMy9Vbmljb2RlL3VjLTAwMi5q
czwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjEzJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMzYx
MzwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTE3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlMTknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBVbmljb2RlIG5vbi1i
cmVha2luZyBzcGFjZSBjaGFyYWN0ZXIgdGVzdC48YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6
PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gVW5pY29kZSBub24tYnJl
YWtpbmcgc3BhY2UgY2hhcmFjdGVyIHJlZ2V4cCB0ZXN0Ljxicj4KIC0tPiBGQUlMRUQhOiBbcmVw
b3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICcwJywgQWN0dWFsIHZhbHVlICctMSc8
YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4K
LTxhIG5hbWU9J2ZhaWx1cmUxOCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qcyc+anMxXzIvT2Jq
ZWN0cy90b1N0cmluZy0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2Zh
aWx1cmUxNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTE5Jz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
Cis8YSBuYW1lPSdmYWlsdXJlMTknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEuanMnPmpzMV8yL09i
amVjdHMvdG9TdHJpbmctMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlMTgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMCc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0
ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgot
TEVBSzogNDAzIEtKUzo6Tm9kZTxicj4KIC0tPiBKUzFfMiBPYmplY3QudG9TdHJpbmcoKTxicj4K
LVs2NzMwNl0gLi9qczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qcyBsaW5lIDEwMzogVHlwZUVy
cm9yOiBPYmplY3QgL15ceyguKilcfSQvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvXlx7KC4qKVx9
JC8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KK1sxMjI4XSAuL2pzMV8yL09iamVjdHMvdG9T
dHJpbmctMDAxLmpzIGxpbmUgMTAzOiBUeXBlRXJyb3I6IE9iamVjdCAvXlx7KC4qKVx9JC8gKHJl
c3VsdCBvZiBleHByZXNzaW9uIC9eXHsoLiopXH0kLykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJy
PgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMTknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vRnVuY3Rpb25fb2Jq
ZWN0LmpzJz5qczFfMi9mdW5jdGlvbi9GdW5jdGlvbl9vYmplY3QuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTIwJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjAnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vRnVu
Y3Rpb25fb2JqZWN0LmpzJz5qczFfMi9mdW5jdGlvbi9GdW5jdGlvbl9vYmplY3QuanM8L2E+IGZh
aWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxOSc+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTIxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdl
cyB3ZXJlOjxicj4KIC0tPiBmLm5hbWUgPSB1bmRlZmluZWQgRkFJTEVEISBleHBlY3RlZDogYV90
ZXN0X2Z1bmN0aW9uPGJyPgpAQCAtMjk2LDI3ICszMTAsMjUgQEAgRmFpbHVyZSBtZXNzYWdlcyB3
ZXJlOjxicj4KIC0tPiAobmV3IEZ1bmN0aW9uKCkpLm5hbWUgPSB1bmRlZmluZWQgRkFJTEVEISBl
eHBlY3RlZDogYW5vbnltb3VzPGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+CiA8L3R0Pjxi
cj4KLTxhIG5hbWU9J2ZhaWx1cmUyMCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9mdW5jdGlvbi0wMDEtbi5qcyc+anMx
XzIvZnVuY3Rpb24vZnVuY3Rpb24tMDAxLW4uanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEg
aHJlZj0nI2ZhaWx1cmUxOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTIxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vZnVuY3Rpb24tMDAxLW4u
anMnPmpzMV8yL2Z1bmN0aW9uL2Z1bmN0aW9uLTAwMS1uLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlMjAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUyMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAzLCBnb3QgMDxicj4KIFRl
c3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91
dHB1dCB3YXM6PGJyPgogT0suPGJyPgotTEVBSzogMzMxIEtKUzo6Tm9kZTxicj4KIC0tPiBmdW5j
dGlvbi0wMDEuanMgZnVuY3Rpb25zIG5vdCBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyBhcmUgZXJy
b3JzIGluIHZlcnNpb24gMTIwIGFuZCBoaWdoZXI8YnI+CiAtLT4gZXZhbCgiZnVuY3Rpb24gZigp
e31mdW5jdGlvbiBnKCl7fSIpID0gdW5kZWZpbmVkIEZBSUxFRCEgZXhwZWN0ZWQ6IGVycm9yPGJy
PgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMjEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEu
anMnPmpzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0xLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBb
IDxhIGhyZWY9JyNmYWlsdXJlMjAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmUyMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTIyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0x
LmpzJz5qczFfMi9mdW5jdGlvbi9yZWdleHBhcmctMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cisg
WyA8YSBocmVmPScjZmFpbHVyZTIxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMjMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0
Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRw
dXQgd2FzOjxicj4KLUxFQUs6IDMzMyBLSlM6Ok5vZGU8YnI+CiAtLT4gSlNfMS4yIFRoZSB2YXJp
YWJsZSBzdGF0bWVudDxicj4KLVs2NzMzOV0gLi9qczFfMi9mdW5jdGlvbi9yZWdleHBhcmctMS5q
cyBsaW5lIDgwOiBUeXBlRXJyb3I6IE9iamVjdCAvYWJjLyAocmVzdWx0IG9mIGV4cHJlc3Npb24g
eCkgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgorWzEyNDFdIC4vanMxXzIvZnVuY3Rpb24vcmVn
ZXhwYXJnLTEuanMgbGluZSA4MDogVHlwZUVycm9yOiBPYmplY3QgL2FiYy8gKHJlc3VsdCBvZiBl
eHByZXNzaW9uIHgpIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFt
ZT0nZmFpbHVyZTIyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTEuanMnPmpzMV8yL2Z1bmN0aW9uL3Rv
c3RyaW5nLTEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMSc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTIzJz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1l
PSdmYWlsdXJlMjMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzIvZnVuY3Rpb24vdG9zdHJpbmctMS5qcyc+anMxXzIvZnVuY3Rpb24vdG9z
dHJpbmctMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTIyJz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjQnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+
CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+CkBA
IC0zMjUsOCArMzM3LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIH0gRkFJTEVEISBl
eHBlY3RlZDogPGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+CiA8L3R0Pjxicj4KLTxhIG5h
bWU9J2ZhaWx1cmUyMyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRv
dycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi90b3N0cmluZy0yLmpzJz5qczFfMi9mdW5jdGlvbi90
b3N0cmluZy0yLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjIn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTI0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTIuanMnPmpzMV8yL2Z1bmN0aW9uL3Rv
c3RyaW5nLTIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMyc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI1Jz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJy
PgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIH0gRkFJTEVEISBleHBlY3RlZDogPGJyPgpA
QCAtMzM5LDIyICszNTEsMjIgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIH0gRkFJTEVE
ISBleHBlY3RlZDogPGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+CiA8L3R0Pjxicj4KLTxh
IG5hbWU9J2ZhaWx1cmUyNCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9qczFfMi9vcGVyYXRvci9lcXVhbGl0eS5qcyc+anMxXzIvb3BlcmF0b3Iv
ZXF1YWxpdHkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMyc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI1Jz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1l
PSdmYWlsdXJlMjUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzIvb3BlcmF0b3IvZXF1YWxpdHkuanMnPmpzMV8yL29wZXJhdG9yL2VxdWFs
aXR5LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjQnPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyNic+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pjxicj4KIEZh
aWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKG5ldyBTdHJpbmcoJ3gnKSA9PSAneCcpICAg
ICAgICAgICAgICAgICAgPSB0cnVlIEZBSUxFRCEgZXhwZWN0ZWQ6IGZhbHNlPGJyPgogLS0+ICgn
eCcgPT0gbmV3IFN0cmluZygneCcpKSAgICAgICAgICAgICAgICAgID0gdHJ1ZSBGQUlMRUQhIGV4
cGVjdGVkOiBmYWxzZTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTI1Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4
cC9SZWdFeHBfbGFzdEluZGV4LmpzJz5qczFfMi9yZWdleHAvUmVnRXhwX2xhc3RJbmRleC5qczwv
YT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTI0Jz5QcmV2aW91cyBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyNic+
PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFf
Mi9yZWdleHAvUmVnRXhwX2xhc3RJbmRleC5qcyc+anMxXzIvcmVnZXhwL1JlZ0V4cF9sYXN0SW5k
ZXguanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNSc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI3Jz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFp
bHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiByZT0veC4vZzsgcmUubGFzdEluZGV4PTQ7IHJl
LmV4ZWMoJ3h5YWJjZHhhJykgPSB4YSBGQUlMRUQhIGV4cGVjdGVkOiBbInhhIl08YnI+CiAtLT4g
cmUuZXhlYygneHlhYmNkZWYnKSA9IHh5IEZBSUxFRCEgZXhwZWN0ZWQ6IFsieHkiXTxicj4KIDwv
dHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTI2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9SZWdFeHBfbXVsdGlsaW5lLmpz
Jz5qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0g
WyA8YSBocmVmPScjZmFpbHVyZTI1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMjcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX211bHRp
bGluZS5qcyc+anMxXzIvcmVnZXhwL1JlZ0V4cF9tdWx0aWxpbmUuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTI4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KIC0tPiAobXVsdGlsaW5lID09IHRydWUpICcxMjNcbjQ1NicubWF0Y2goL140Li4vKSA9IG51
bGwgRkFJTEVEISBleHBlY3RlZDogNDU2PGJyPgpAQCAtMzYzLDggKzM3NSw4IEBAIEZhaWx1cmUg
bWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKG11bHRpbGluZSA9PSB0cnVlKSAnYTExXG5hMjJcbmEy
M1xuYTI0Jy5tYXRjaCgvYS4uJC9nKSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEy
MyxhMjQ8YnI+CiAtLT4gKG11bHRpbGluZSA9PSB0cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0Jy5t
YXRjaChuZXcgUmVnRXhwKCdhLi4kJywnZycpKSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEs
YTIyLGEyMyxhMjQ8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyNyc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAv
UmVnRXhwX211bHRpbGluZV9hc19hcnJheS5qcyc+anMxXzIvcmVnZXhwL1JlZ0V4cF9tdWx0aWxp
bmVfYXNfYXJyYXkuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUy
Nic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI4Jz5OZXh0IEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBu
YW1lPSdmYWlsdXJlMjgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL1JlZ0V4cF9tdWx0aWxpbmVfYXNfYXJyYXkuanMnPmpz
MV8yL3JlZ2V4cC9SZWdFeHBfbXVsdGlsaW5lX2FzX2FycmF5LmpzPC9hPiBmYWlsZWQ8L2I+IDxi
cj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjcnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI2ZhaWx1cmUyOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRv
cCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CiAtLT4gKFsnJConXSA9PSB0cnVlKSAnMTIzXG40NTYnLm1hdGNoKC9eNC4uLykgPSBudWxsIEZB
SUxFRCEgZXhwZWN0ZWQ6IDQ1Njxicj4KQEAgLTM3Myw1OCArMzg1LDU0IEBAIEZhaWx1cmUgbWVz
c2FnZXMgd2VyZTo8YnI+CiAtLT4gKFsnJConXSA9PSB0cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0
Jy5tYXRjaCgvYS4uJC9nKSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEyMyxhMjQ8
YnI+CiAtLT4gKFsnJConXSA9PSB0cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0Jy5tYXRjaChuZXcg
UmVnRXhwKCdhLi4kJywnZycpKSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEyMyxh
MjQ8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyOCc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvYmVnaW5MaW5l
LmpzJz5qczFfMi9yZWdleHAvYmVnaW5MaW5lLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlMjcnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUyOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTI5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9iZWdpbkxpbmUuanMnPmpz
MV8yL3JlZ2V4cC9iZWdpbkxpbmUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0n
I2ZhaWx1cmUyOCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMwJz5O
ZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08
YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIDEyM3h5eicubWF0Y2go
bmV3IFJlZ0V4cCgnXlxkKycpKSA9IG51bGwgRkFJTEVEISBleHBlY3RlZDogMTIzPGJyPgogPC90
dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMjknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL2NvbXBpbGUuanMnPmpzMV8yL3Jl
Z2V4cC9jb21waWxlLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJl
MjgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzMCc+TmV4dCBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEg
bmFtZT0nZmFpbHVyZTMwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9jb21waWxlLmpzJz5qczFfMi9yZWdleHAvY29tcGls
ZS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTI5Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzEnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBl
eGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8
YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyOSBLSlM6Ok5v
ZGU8YnI+CiAtLT4gRXhlY3V0aW5nIHNjcmlwdDogY29tcGlsZS5qczxicj4KIC0tPiBBcyBkZXNj
cmliZWQgaW4gTmV0c2NhcGUgZG9jICJXaGF0cyBuZXcgaW4gSmF2YVNjcmlwdCAxLjIiIFJlZ0V4
cDogY29tcGlsZTxicj4KLVs2NzM3Nl0gLi9qczFfMi9yZWdleHAvY29tcGlsZS5qcyBsaW5lIDQz
OiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gcmVndWxh
ckV4cHJlc3Npb24uY29tcGlsZSkgaXMgbm90IG9iamVjdC48YnI+CitbMTI2OF0gLi9qczFfMi9y
ZWdleHAvY29tcGlsZS5qcyBsaW5lIDQzOiBUeXBlRXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVz
dWx0IG9mIGV4cHJlc3Npb24gcmVndWxhckV4cHJlc3Npb24uY29tcGlsZSkgaXMgbm90IG9iamVj
dC48YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzMCc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvZW5kTGluZS5q
cyc+anMxXzIvcmVnZXhwL2VuZExpbmUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJl
Zj0nI2ZhaWx1cmUyOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTMx
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL2VuZExpbmUuanMnPmpzMV8yL3Jl
Z2V4cC9lbmRMaW5lLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJl
MzAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzMic+TmV4dCBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0
Pjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiB4eXonLm1hdGNoKG5ldyBSZWdFeHAo
J1xkKyQnKSkgPSBudWxsIEZBSUxFRCEgZXhwZWN0ZWQ6IDg5MDxicj4KIDwvdHQ+PGJyPgotPGEg
bmFtZT0nZmFpbHVyZTMxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanMnPmpzMV8yL3JlZ2V4cC9y
ZWdyZXNzLTYzNTkuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1odHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hv
d19idWcuY2dpP2lkPTYzNTknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIGh0dHA6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM1OTwvYT48YnI+Ci0gWyA8
YSBocmVmPScjZmFpbHVyZTMwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMzInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzMic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvcmVncmVzcy02MzU5Lmpz
Jz5qczFfMi9yZWdleHAvcmVncmVzcy02MzU5LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0
dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9aHR0cDovL2J1Z3ppbGxh
Lm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+
QnVnIE51bWJlciBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTYz
NTk8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTMzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdv
dCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjkgS0pTOjpOb2RlPGJyPgogLS0+IEJV
R05VTUJFUjogaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5
PGJyPgotWzY3Mzk3XSAuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanMgbGluZSA1NjogVHlw
ZUVycm9yOiBPYmplY3QgLyhhKiliXDErLyAocmVzdWx0IG9mIGV4cHJlc3Npb24gLyhhKiliXDEr
LykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgorWzEyODRdIC4vanMxXzIvcmVnZXhwL3JlZ3Jl
c3MtNjM1OS5qcyBsaW5lIDU2OiBUeXBlRXJyb3I6IE9iamVjdCAvKGEqKWJcMSsvIChyZXN1bHQg
b2YgZXhwcmVzc2lvbiAvKGEqKWJcMSsvKSBkb2VzIG5vdCBhbGxvdyBjYWxscy48YnI+CiA8L3R0
Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzMic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvcmVncmVzcy05MTQxLmpzJz5qczFf
Mi9yZWdleHAvcmVncmVzcy05MTQxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9aHR0cDovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQxJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51
bWJlciBodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxNDE8L2E+
PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTMzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzMnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3JlZ3Jl
c3MtOTE0MS5qcyc+anMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qczwvYT4gZmFpbGVkPC9iPiA8
YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPWh0dHA6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0MScgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnPkJ1ZyBOdW1iZXIgaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTQxPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzInPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQg
Y29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4K
IENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzI5IEtKUzo6Tm9kZTxi
cj4KIC0tPiBCVUdOVU1CRVI6IGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTE0MTxicj4KLVs2NzM5OF0gLi9qczFfMi9yZWdleHAvcmVncmVzcy05MTQxLmpzIGxp
bmUgNzM6IFR5cGVFcnJvcjogT2JqZWN0IC8oPzp4eHx4KSovIChyZXN1bHQgb2YgZXhwcmVzc2lv
biAvKD86eHh8eCkqLykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgorWzEyODVdIC4vanMxXzIv
cmVnZXhwL3JlZ3Jlc3MtOTE0MS5qcyBsaW5lIDczOiBUeXBlRXJyb3I6IE9iamVjdCAvKD86eHh8
eCkqLyAocmVzdWx0IG9mIGV4cHJlc3Npb24gLyg/Onh4fHgpKi8pIGRvZXMgbm90IGFsbG93IGNh
bGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTMzJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9zaW1wbGVf
Zm9ybS5qcyc+anMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
LSBbIDxhIGhyZWY9JyNmYWlsdXJlMzInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUzNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTM0Jz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9zaW1wbGVfZm9y
bS5qcyc+anMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBb
IDxhIGhyZWY9JyNmYWlsdXJlMzMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmUzNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3Rj
YXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1
dCB3YXM6PGJyPgotTEVBSzogMzI5IEtKUzo6Tm9kZTxicj4KIC0tPiBFeGVjdXRpbmcgc2NyaXB0
OiBzaW1wbGVfZm9ybS5qczxicj4KIC0tPiBBcyBkZXNjcmliZWQgaW4gTmV0c2NhcGUgZG9jICJX
aGF0cyBuZXcgaW4gSmF2YVNjcmlwdCAxLjIiIFJlZ0V4cDogc2ltcGxlIGZvcm08YnI+Ci1bNjcz
OTldIC4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzIGxpbmUgNDM6IFR5cGVFcnJvcjogT2Jq
ZWN0IC9bMC05XXszfS8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9bMC05XXszfS8pIGRvZXMgbm90
IGFsbG93IGNhbGxzLjxicj4KK1sxMjg2XSAuL2pzMV8yL3JlZ2V4cC9zaW1wbGVfZm9ybS5qcyBs
aW5lIDQzOiBUeXBlRXJyb3I6IE9iamVjdCAvWzAtOV17M30vIChyZXN1bHQgb2YgZXhwcmVzc2lv
biAvWzAtOV17M30vKSBkb2VzIG5vdCBhbGxvdyBjYWxscy48YnI+CiA8L3R0Pjxicj4KLTxhIG5h
bWU9J2ZhaWx1cmUzNCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRv
dycgaHJlZj0nLi9qczFfMi9yZWdleHAvc3RyaW5nX3NwbGl0LmpzJz5qczFfMi9yZWdleHAvc3Ry
aW5nX3NwbGl0LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMzMn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNSc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTM1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9zdHJpbmdfc3BsaXQuanMnPmpzMV8yL3JlZ2V4cC9zdHJp
bmdfc3BsaXQuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUzNCc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM2Jz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJy
PgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAnYWJjJy5zcGxpdCgvW2Etel0vKSA9
ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KQEAgLTQzMiwxNTUgKzQ0MCwxMzkgQEAgRmFp
bHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAnYWJjJy5zcGxpdChuZXcgUmVnRXhwKCdbYS16
XScpKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KIC0tPiAnYWJjJy5zcGxpdChuZXcg
UmVnRXhwKCdbYS16XScpKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KIDwvdHQ+PGJy
PgotPGEgbmFtZT0nZmFpbHVyZTM1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3Ro
ZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3ZlcnNpb24xMjAvYm9vbGVhbi0wMDEuanMnPmpzMV8y
L3ZlcnNpb24xMjAvYm9vbGVhbi0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJl
Zj0nI2ZhaWx1cmUzNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM2
Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+
IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMzYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvdmVyc2lvbjEyMC9ib29sZWFuLTAwMS5qcyc+
anMxXzIvdmVyc2lvbjEyMC9ib29sZWFuLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8
YSBocmVmPScjZmFpbHVyZTM1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMzcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KIDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IG5l
dyBCb29sZWFuKGZhbHNlKSA9IHRydWUgRkFJTEVEISBleHBlY3RlZDogZmFsc2U8YnI+CiA8L3R0
Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIwL3JlZ3Jlc3MtOTk2NjMuanMn
PmpzMV8yL3ZlcnNpb24xMjAvcmVncmVzcy05OTY2My5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0g
WyA8YSBocmVmPScjZmFpbHVyZTM1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMzcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIwL3JlZ3Jlc3Mt
OTk2NjMuanMnPmpzMV8yL3ZlcnNpb24xMjAvcmVncmVzcy05OTY2My5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlMzgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBSZWdyZXNzaW9uIHRlc3Qg
Zm9yIEJ1Z3ppbGxhIGJ1ZyA5OTY2Mzxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAt
LT4gU2VjdGlvbiAxIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0
IEZBSUxFRCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8YnI+CiAtLT4gU2VjdGlvbiAy
IG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxFRCEgZXhw
ZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8YnI+CiAtLT4gU2VjdGlvbiAzIG9mIHRlc3QgLSBn
b3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxFRCEgZXhwZWN0ZWQ6IGEgInJl
YWQtb25seSIgZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzNyc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMy9TY3Jp
cHQvZnVuY3Rpb24tMDAxLW4uanMnPmpzMV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEtbi5qczwvYT4g
ZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxMDI3ODwvYT48
YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTM2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlMzgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzOCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMy9TY3JpcHQvZnVuY3Rp
b24tMDAxLW4uanMnPmpzMV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9i
PiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEw
Mjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxMDI3ODwvYT48YnI+CisgWyA8
YSBocmVmPScjZmFpbHVyZTM3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMzknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMywgZ290IDA8YnI+CiBUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KIE9LLjxicj4KLUxFQUs6IDM5MSBLSlM6Ok5vZGU8YnI+CiAtLT4gQlVHTlVNQkVS
OiAxMDI3ODxicj4KIC0tPiBmdW5jdGlvbi0wMDEuanMgZnVuY3Rpb25zIG5vdCBzZXBhcmF0ZWQg
Ynkgc2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24gMTIwIGFuZCBoaWdoZXI8YnI+CiAt
LT4gZXZhbCgiZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKCl7fSIpID0gdW5kZWZpbmVkIEZBSUxF
RCEgZXhwZWN0ZWQ6IGVycm9yPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMzgnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzMv
U2NyaXB0L3NjcmlwdC0wMDEuanMnPmpzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMzcnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmUzOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTM5Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8zL1Njcmlw
dC9zY3JpcHQtMDAxLmpzJz5qczFfMy9TY3JpcHQvc2NyaXB0LTAwMS5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlNDAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDM4OSBLSlM6Ok5vZGU8YnI+CiAtLT4gc2NyaXB0
LTAwMSBOYXRpdmVTY3JpcHQ8YnI+Ci1bNjc0MzVdIC4vanMxXzMvU2NyaXB0L3NjcmlwdC0wMDEu
anMgbGluZSAxMzM6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTY3JpcHQ8
YnI+CitbMTMxMl0gLi9qczFfMy9TY3JpcHQvc2NyaXB0LTAwMS5qcyBsaW5lIDEzMzogUmVmZXJl
bmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFNjcmlwdDxicj4KIDwvdHQ+PGJyPgotPGEg
bmFtZT0nZmFpbHVyZTM5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV8zL3JlZ3Jlc3MvZnVuY3Rpb24tMDAxLW4uanMnPmpzMV8zL3JlZ3Jl
c3MvZnVuY3Rpb24tMDAxLW4uanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI3OCcgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnPkJ1ZyBOdW1iZXIgMTAyNzg8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUzOCc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQwJz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdm
YWlsdXJlNDAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vanMxXzMvcmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qcyc+anMxXzMvcmVncmVzcy9mdW5j
dGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVn
IE51bWJlciAxMDI3ODwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM5Jz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0
IGNvZGUgMywgZ290IDA8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+
CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KIE9LLjxicj4KLUxFQUs6IDM5MSBL
SlM6Ok5vZGU8YnI+CiAtLT4gQlVHTlVNQkVSOiAxMDI3ODxicj4KIC0tPiBmdW5jdGlvbi0wMDEu
anMgZnVuY3Rpb25zIG5vdCBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZl
cnNpb24gMTIwIGFuZCBoaWdoZXI8YnI+CiAtLT4gZXZhbCgiZnVuY3Rpb24gZigpe31mdW5jdGlv
biBnKCl7fSIpID0gdW5kZWZpbmVkIEZBSUxFRCEgZXhwZWN0ZWQ6IGVycm9yPGJyPgogPC90dD48
YnI+Ci08YSBuYW1lPSdmYWlsdXJlNDAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMS5qcyc+
anMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0g
WyA8YSBocmVmPScjZmFpbHVyZTM5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlNDEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KLTx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+Ci1UZXN0
Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+Ci1Db21wbGV0ZSB0ZXN0Y2FzZSBvdXRw
dXQgd2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6Ok5vZGU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9
J2ZhaWx1cmU0MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAyLmpzJz5qczFfNS9FeGNlcHRp
b25zL2NhdGNoZ3VhcmQtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKzxhIG5hbWU9J2ZhaWx1
cmU0MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpzJz5qczFfNS9FeGNlcHRpb25zL2Nh
dGNoZ3VhcmQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJl
NDAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0Mic+TmV4dCBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0
PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0
aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzog
MzIzIEtKUzo6Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTQyJz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2Vw
dGlvbnMvY2F0Y2hndWFyZC0wMDMuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDMu
anM8L2E+IGZhaWxlZDwvYj4gPGJyPgorVGVzdGNhc2UgcHJvZHVjZWQgbm8gb3V0cHV0ITwvdHQ+
PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0n
b3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIuanMn
PmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgog
IFsgPGEgaHJlZj0nI2ZhaWx1cmU0MSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTQzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVz
dGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0
cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjMgS0pTOjpOb2RlPGJyPgotPC90dD48YnI+Ci08YSBuYW1l
PSdmYWlsdXJlNDMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9lcnJzdGFjay0wMDEuanMnPmpzMV81L0V4Y2VwdGlv
bnMvZXJyc3RhY2stMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KK1Rlc3RjYXNlIHByb2R1Y2Vk
IG5vIG91dHB1dCE8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0Myc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL2Nh
dGNoZ3VhcmQtMDAzLmpzJz5qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAzLmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDInPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAw
LCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBs
ZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogNDczIEtKUzo6Tm9kZTxicj4KLVs2
NzQ5MF0gLi9qczFfNS9FeGNlcHRpb25zL2VycnN0YWNrLTAwMS5qcyBsaW5lIDI0NzogVHlwZUVy
cm9yOiBVbmRlZmluZWQgdmFsdWU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0NCc+
PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFf
NS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanMnPmpzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01
MDQ0Ny5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5v
cmcvc2hvd19idWcuY2dpP2lkPTUwNDQ3JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJl
ciA1MDQ0NzwvYT48YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8
YSBuYW1lPSdmYWlsdXJlNDQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9lcnJzdGFjay0wMDEuanMnPmpzMV81L0V4
Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9
JyNmYWlsdXJlNDMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0NSc+
TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBd
PGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1p
bmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJy
PgotTEVBSzogNjU0IEtKUzo6Tm9kZTxicj4KLS0tPiBCVUdOVU1CRVI6IDUwNDQ3PGJyPgotLS0+
IFNUQVRVUzogVGVzdCAobm9uLUVDTUEpIEVycm9yIG9iamVjdCBwcm9wZXJ0aWVzIGZpbGVOYW1l
LCBsaW5lTnVtYmVyPGJyPgotWzY3NDkxXSAuL2pzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0
Ny5qcyBsaW5lIDY1OiBUeXBlRXJyb3I6IFVuZGVmaW5lZCB2YWx1ZTxicj4KK1sxMzU3XSAuL2pz
MV81L0V4Y2VwdGlvbnMvZXJyc3RhY2stMDAxLmpzIGxpbmUgMjQ3OiBUeXBlRXJyb3I6IFVuZGVm
aW5lZCB2YWx1ZTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTQ1Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0dldFNldC9n
ZXRzZXQtMDAxLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9yZWdyZXNzLTUwNDQ3LmpzJz5q
czFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0n
aHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD01MDQ0NycgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgNTA0NDc8L2E+PGJyPgogIFsgPGEgaHJlZj0nI2Zh
aWx1cmU0NCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQ2Jz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRl
ZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1M
RUFLOiAzMjMgS0pTOjpOb2RlPGJyPgorLS0+IEJVR05VTUJFUjogNTA0NDc8YnI+CistLT4gU1RB
VFVTOiBUZXN0IChub24tRUNNQSkgRXJyb3Igb2JqZWN0IHByb3BlcnRpZXMgZmlsZU5hbWUsIGxp
bmVOdW1iZXI8YnI+CitbMTM1OF0gLi9qczFfNS9FeGNlcHRpb25zL3JlZ3Jlc3MtNTA0NDcuanMg
bGluZSA2NTogVHlwZUVycm9yOiBVbmRlZmluZWQgdmFsdWU8YnI+CiA8L3R0Pjxicj4KLTxhIG5h
bWU9J2ZhaWx1cmU0Nic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRv
dycgaHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qcyc+anMxXzUvR2V0U2V0L2dldHNl
dC0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorPGEgbmFtZT0nZmFpbHVyZTQ2Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0dldFNl
dC9nZXRzZXQtMDAxLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMS5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTQ1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlNDcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6Ok5vZGU8YnI+Ci08L3R0Pjxicj4K
LTxhIG5hbWU9J2ZhaWx1cmU0Nyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMy5qcyc+anMxXzUvR2V0U2V0
L2dldHNldC0wMDMuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorVGVzdGNhc2UgcHJvZHVjZWQgbm8g
b3V0cHV0ITwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTQ3Jz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0dldFNldC9nZXRzZXQtMDAy
LmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8
YSBocmVmPScjZmFpbHVyZTQ2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlNDgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2Fz
ZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQg
d2FzOjxicj4KLUxFQUs6IDMyMyBLSlM6Ok5vZGU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2Zh
aWx1cmU0OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDEuanMnPmpzMV81L09iamVjdC9yZWdy
ZXNzLTkwNTk2LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBu
byBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDgnPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dldHNldC0w
MDMuanMnPmpzMV81L0dldFNldC9nZXRzZXQtMDAzLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBb
IDxhIGhyZWY9JyNmYWlsdXJlNDcnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmU0OSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3Rj
YXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1
dCB3YXM6PGJyPgotTEVBSzogNzY1IEtKUzo6Tm9kZTxicj4KLVs2NzUxNl0gLi9qczFfNS9PYmpl
Y3QvcmVncmVzcy05MDU5Ni0wMDEuanMgbGluZSA0ODogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmlu
ZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJjZSkgaXMgbm90IG9iamVjdC48YnI+
Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0OSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0w
MDIuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWls
dXJlNDknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9
Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAxLmpzJz5qczFfNS9PYmplY3QvcmVncmVz
cy05MDU5Ni0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0
OCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTUwJz5OZXh0IEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+
RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRo
IHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiA3
NjkgS0pTOjpOb2RlPGJyPgotWzY3NTE3XSAuL2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAw
Mi5qcyBsaW5lIDQ4OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogdW5ldmFs
PGJyPgorWzEzNzNdIC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAxLmpzIGxpbmUgNDg6
IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmoudG9T
b3VyY2UpIGlzIG5vdCBvYmplY3QuPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTAn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMx
XzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05NjI4
NC0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorPGEgbmFtZT0nZmFpbHVyZTUwJz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L09iamVj
dC9yZWdyZXNzLTkwNTk2LTAwMi5qcyc+anMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAyLmpz
PC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDknPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1MSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQg
Y29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4K
IENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzk3IEtKUzo6Tm9kZTxi
cj4KLVs2NzUxOV0gLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDEuanMgbGluZSA0OTog
VHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIG9iajEudG9T
b3VyY2UpIGlzIG5vdCBvYmplY3QuPGJyPgorWzEzNzRdIC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3Mt
OTA1OTYtMDAyLmpzIGxpbmUgNDg6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxl
OiB1bmV2YWw8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1MSc+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVn
cmVzcy05NjI4NC0wMDIuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qczwvYT4g
ZmFpbGVkPC9iPiA8YnI+Cis8YSBuYW1lPSdmYWlsdXJlNTEnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYy
ODQtMDAxLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDEuanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU1MCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTUyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAz
PGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVz
dGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzOTcgS0pTOjpOb2RlPGJyPgotWzY3NTIwXSAu
L2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qcyBsaW5lIDQ5OiBSZWZlcmVuY2VFcnJv
cjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogdW5ldmFsPGJyPgorWzEzNzZdIC4vanMxXzUvT2JqZWN0
L3JlZ3Jlc3MtOTYyODQtMDAxLmpzIGxpbmUgNDk6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVk
IChyZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmoxLnRvU291cmNlKSBpcyBub3Qgb2JqZWN0Ljxicj4K
IDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTUyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5q
cyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9
J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwMDknIHRhcmdl
dD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDQ0MDA5PC9hPjxicj4KKzxhIG5hbWU9J2ZhaWx1
cmU1Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIuanMnPmpzMV81L09iamVjdC9yZWdyZXNz
LTk2Mjg0LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTUx
Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTMnPk5leHQgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5F
eHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGgg
c2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDM5
NiBLSlM6Ok5vZGU8YnI+CitbMTM3N10gLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIu
anMgbGluZSA0OTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IHVuZXZhbDxi
cj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTUzJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAw
OS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhy
ZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQwMDknIHRh
cmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDQ0MDA5PC9hPjxicj4KKyBbIDxhIGhyZWY9
JyNmYWlsdXJlNTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1NCc+
TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBd
PGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNlIHRlcm1p
bmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJy
PgogLS0+IEJVR05VTUJFUjogNDQwMDk8YnI+CiAtLT4gU1RBVFVTOiBUZXN0aW5nIHRoYXQgd2Ug
ZG9uJ3QgY3Jhc2ggb24gb2JqLnRvU291cmNlKCk8YnI+Ci1bNjc1MjVdIC4vanMxXzUvUmVncmVz
cy9yZWdyZXNzLTQ0MDA5LmpzIGxpbmUgNjA6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChy
ZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmoudG9Tb3VyY2UpIGlzIG5vdCBvYmplY3QuPGJyPgorWzEz
ODJdIC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzIGxpbmUgNjA6IFR5cGVFcnJvcjog
VmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmoudG9Tb3VyY2UpIGlzIG5v
dCBvYmplY3QuPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTMnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9y
ZWdyZXNzLTY4NDk4LTAwMy5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTY4NDk4LTAwMy5qczwv
YT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTY4NDk4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA2ODQ5ODwv
YT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTUyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlNTQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1NCc+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3Jl
Z3Jlc3MtNjg0OTgtMDAzLmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNjg0OTgtMDAzLmpzPC9h
PiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg0OTgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDY4NDk4PC9h
Pjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmU1NSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgY2FsbGluZyBv
YmouZXZhbChzdHIpPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQh
OiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFRlc3RpbmcgY2FsbGluZyBvYmouZXZhbChzdHIpOyBj
dXJyZW50bHkgYXQgZXhwZWN0WzFdIHdpdGhpbiB0ZXN0IC08YnI+CkBAIC01ODgsOCArNTgwLDgg
QEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJv
bSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICc0MycsIEFjdHVhbCB2YWx1ZSAnZmFsc2UnPGJyPgog
LS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90dD48YnI+Ci08YSBu
YW1lPSdmYWlsdXJlNTQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qcyc+anMxXzUvUmVncmVz
cy9yZWdyZXNzLTEwMzYwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemls
bGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYwMicgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnPkJ1ZyBOdW1iZXIgMTAzNjAyPC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTMnPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1NSc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0n
ZmFpbHVyZTU1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDM2MDIuanMnPmpzMV81L1JlZ3Jlc3MvcmVn
cmVzcy0xMDM2MDIuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM2MDInIHRhcmdldD0nb3RoZXJfd2luZG93Jz5C
dWcgTnVtYmVyIDEwMzYwMjwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTU0Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTYnPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVT
OiBSZWFzc2lnbm1lbnQgdG8gYSBjb25zdCBpcyBOT1QgYW4gZXJyb3IgcGVyIEVDTUE8YnI+CiBG
YWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gU2VjdGlvbiAxIG9mIHRlc3QgLTxicj4KQEAgLTU5OSwzMSArNTkxLDI4IEBAIEZhaWx1
cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgp
XSBFeHBlY3RlZCB2YWx1ZSAnMScsIEFjdHVhbCB2YWx1ZSAnMic8YnI+CiAtLT4gRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1
NSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9q
czFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTA0MDc3LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTA0
MDc3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTQnPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1Nic+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFp
bHVyZTU2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVm
PScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVz
cy0xMDQwNzcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU1NSc+
UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTU3Jz5OZXh0IEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhw
ZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNp
Z25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAzMjMg
S0pTOjpOb2RlPGJyPgotPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTYnPjwvYT48ZGQ+PGI+
VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9y
ZWdyZXNzLTEyNzU1Ny5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTU1Jz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlNTcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KK1Rlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1
dCE8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1Nyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3
LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlNTYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmU1OCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRl
c3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91
dHB1dCB3YXM6PGJyPgotTEVBSzogNDE5IEtKUzo6Tm9kZTxicj4KLVs2NzY2MV0gLi9qczFfNS9S
ZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzIGxpbmUgNzU6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBm
aW5kIHZhcmlhYmxlOiBjbG9uZTxicj4KK1sxNDA4XSAuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0x
Mjc1NTcuanMgbGluZSA3NTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGNs
b25lPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTcnPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNz
LTE3MjY5OS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTE3MjY5OS5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTU2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlNTgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1OCc+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3Jl
Z3Jlc3MtMTcyNjk5LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTcnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmU1OSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBn
b3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRl
IHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotTEVBSzogMzk3IEtKUzo6Tm9kZTxicj4KLVs2Nzc2
MF0gLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzIGxpbmUgNjE6IFVSSUVycm9yOiBV
UkkgZXJyb3I8YnI+CitbMTQxOV0gLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzIGxp
bmUgNjE6IFVSSUVycm9yOiBVUkkgZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1
cmU1OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3Mt
MTc5NTI0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5NTI0JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51
bWJlciAxNzk1MjQ8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU1Nyc+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTU5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlNTkn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMx
XzUvUmVncmVzcy9yZWdyZXNzLTE3OTUyNC5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTE3OTUy
NC5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTE3OTUyNCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIg
MTc5NTI0PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTgnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IERvbid0IGNy
YXNoIG9uIGV4dHJhbmVvdXMgYXJndW1lbnRzIHRvIHN0ci5tYXRjaCgpLCBldGMuPGJyPgogRmFp
bHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0
KCldIFNlY3Rpb24gMTQgb2YgdGVzdCAtPGJyPgpAQCAtNjczLDE2ICs2NjIsMjIgQEAgRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCld
IEV4cGVjdGVkIHZhbHVlICdTSE9VTEQgSEFWRSBGQUxMRU4gSU5UTyBDQVRDSC1CTE9DSyEnLCBB
Y3R1YWwgdmFsdWUgJ0FCQyBaYmMnPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTknPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvU2NvcGUvcmVncmVz
cy0yMjA1ODQuanMnPmpzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzPC9hPiBmYWlsZWQ8L2I+
IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmU2MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTYwJz48L2E+PGRkPjxiPlRl
c3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1Njb3BlL3JlZ3Jl
c3MtMTg0MTA3LmpzJz5qczFfNS9TY29wZS9yZWdyZXNzLTE4NDEwNy5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTU5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlNjEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDM5NyBLSlM6Ok5vZGU8YnI+Ci1bNjc4MjNdIC4v
anMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMgbGluZSA1NjogUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IFNjcmlwdDxicj4KK1sxNDM1XSAuL2pzMV81L1Njb3BlL3JlZ3Jl
c3MtMTg0MTA3LmpzIGxpbmUgMTIzOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJs
ZTogeTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTYwJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1Njb3BlL3Njb3BlLTAw
MS5qcyc+anMxXzUvU2NvcGUvc2NvcGUtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0
dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMyNjgnIHRhcmdldD0n
b3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDUzMjY4PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWls
dXJlNTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2MSc+TmV4dCBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgor
PGEgbmFtZT0nZmFpbHVyZTYxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzJz5qczFfNS9TY29w
ZS9yZWdyZXNzLTIyMDU4NC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFp
bHVyZTYwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjInPk5leHQg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4K
Kzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0ZXJtaW5hdGVk
IHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KK1sx
NDQ0XSAuL2pzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzIGxpbmUgNTY6IFJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBTY3JpcHQ8YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9
J2ZhaWx1cmU2Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycg
aHJlZj0nLi9qczFfNS9TY29wZS9zY29wZS0wMDEuanMnPmpzMV81L1Njb3BlL3Njb3BlLTAwMS5q
czwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hv
d19idWcuY2dpP2lkPTUzMjY4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA1MzI2
ODwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTYxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlNjMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBUZXN0aW5nIHNjb3Bl
IGFmdGVyIGNoYW5naW5nIG9iai5fX3Byb3RvX188YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6
PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU3RlcCAxOiAgc2V0dGlu
ZyBvYmouX19wcm90b19fID0gZ2xvYmFsIG9iamVjdDxicj4KQEAgLTY5Myw4ICs2ODgsOCBAQCBG
YWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRl
c3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ3VuZGVmaW5lZCcsIEFjdHVhbCB2YWx1ZSAnMSc8YnI+CiAt
LT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5h
bWU9J2ZhaWx1cmU2MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRv
dycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzAxNTc0LmpzJz5qczFfNi9SZWdyZXNz
L3JlZ3Jlc3MtMzAxNTc0LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxs
YS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAxNTc0JyB0YXJnZXQ9J290aGVyX3dpbmRv
dyc+QnVnIE51bWJlciAzMDE1NzQ8L2E+PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU2MCc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTYyJz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdm
YWlsdXJlNjMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vanMxXzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qcyc+anMxXzYvUmVncmVzcy9yZWdy
ZXNzLTMwMTU3NC5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTU3NCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1
ZyBOdW1iZXIgMzAxNTc0PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNjInPlByZXZpb3Vz
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6
IEU0WCBzaG91bGQgYmUgZW5hYmxlZCBldmVuIHdoZW4gZTR4PTEgbm90IHNwZWNpZmllZDxicj4K
IEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogRTRYIHNob3VsZCBiZSBl
bmFibGVkIGV2ZW4gd2hlbiBlNHg9MSBub3Qgc3BlY2lmaWVkOiBYTUwoKTxicj4KQEAgLTcwNCwz
MCArNjk5LDI3IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogRXhw
ZWN0ZWQgdmFsdWUgJ05vIGVycm9yJywgQWN0dWFsIHZhbHVlICdlcnJvcjogUmVmZXJlbmNlRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IFhNTCc8YnI+CiAtLT4gRkFJTEVEITogPGJyPgogPC90
dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNjInPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0
PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9yZWdyZXNzLTMwOTI0Mi5qcyc+
anMxXzYvUmVncmVzcy9yZWdyZXNzLTMwOTI0Mi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8
YSBocmVmPScjZmFpbHVyZTYxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlNjMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU2NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzA5MjQy
LmpzJz5qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzA5MjQyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlNjMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmU2NSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRl
c3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91
dHB1dCB3YXM6PGJyPgotTEVBSzogMTIxMiBLSlM6Ok5vZGU8YnI+Ci08L3R0Pjxicj4KLTxhIG5h
bWU9J2ZhaWx1cmU2Myc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRv
dycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3LmpzJz5qczFfNi9SZWdyZXNz
L3JlZ3Jlc3MtMzE0ODg3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWls
dXJlNjInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2NCc+TmV4dCBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgor
VGVzdGNhc2UgcHJvZHVjZWQgbm8gb3V0cHV0ITwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTY1
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV82L1JlZ3Jlc3MvcmVncmVzcy0zMTQ4ODcuanMnPmpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMTQ4
ODcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU2NCc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTY2Jz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQg
ZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAw
PGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1MRUFLOiAxMjEyIEtKUzo6
Tm9kZTxicj4KLTwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTY0Jz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82L1N0cmluZy9yZWdyZXNz
LTMwNjU5MS5qcyc+anMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2NTkxLmpzPC9hPiBmYWlsZWQ8L2I+
IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzA2
NTkxJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAzMDY1OTE8L2E+PGJyPgotIFsg
PGEgaHJlZj0nI2ZhaWx1cmU2Myc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFp
bHVyZTY1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBh
Z2U8L2E+IF08YnI+CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBu
YW1lPSdmYWlsdXJlNjYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2NTkxLmpzJz5qczFfNi9TdHJpbmcv
cmVncmVzcy0zMDY1OTEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxh
Lm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDY1OTEnIHRhcmdldD0nb3RoZXJfd2luZG93
Jz5CdWcgTnVtYmVyIDMwNjU5MTwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTY1Jz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjcnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3Rl
ZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFs
IDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KLUxFQUs6IDEyMTIgS0pT
OjpOb2RlPGJyPgogLS0+IEJVR05VTUJFUjogMzA2NTkxPGJyPgogLS0+IFNUQVRVUzogU3RyaW5n
IHN0YXRpYyBtZXRob2RzPGJyPgogLS0+IFNUQVRVUzogU2VlIGh0dHBzOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNDgyODxicj4KLVs2Nzg0NV0gLi9qczFfNi9TdHJp
bmcvcmVncmVzcy0zMDY1OTEuanMgbGluZSA0ODogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQg
KHJlc3VsdCBvZiBleHByZXNzaW9uIFN0cmluZy5zcGxpdCkgaXMgbm90IG9iamVjdC48YnI+Citb
MTQ2Nl0gLi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanMgbGluZSA0ODogVHlwZUVycm9y
OiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIFN0cmluZy5zcGxpdCkgaXMg
bm90IG9iamVjdC48YnI+CiA8L3R0Pjxicj4KIDwvZGw+CiBbIDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiB8IDxhIGhyZWY9JyNmYWlsX2RldGFpbCc+VG9wIG9mIEZhaWx1cmVz
PC9hPiBdPGJyPgpAQCAtNzM1LDE1ICs3MjcsMTYgQEAgTEVBSzogMTIxMiBLSlM6Ok5vZGU8YnI+
CiA8cHJlPgogPGEgbmFtZT0ncmV0ZXN0X2xpc3QnPjwvYT4KIDxoMj5SZXRlc3QgTGlzdDwvaDI+
PGJyPgotIyBSZXRlc3QgTGlzdCwga2pzLCBnZW5lcmF0ZWQgVGh1IEp1bCAxOSAxMzoxMDowOCAy
MDA3LgorIyBSZXRlc3QgTGlzdCwga2pzLCBnZW5lcmF0ZWQgVGh1IEF1ZyAgMiAyMTo1MzozMiAy
MDA3LgogIyBPcmlnaW5hbCB0ZXN0IGJhc2Ugd2FzOiBBbGwgdGVzdHMuCi0jIDExMjcgb2YgMTEz
NSB0ZXN0KHMpIHdlcmUgY29tcGxldGVkLCA2NCBmYWlsdXJlcyByZXBvcnRlZC4KKyMgMTEyNyBv
ZiAxMTM1IHRlc3Qocykgd2VyZSBjb21wbGV0ZWQsIDY2IGZhaWx1cmVzIHJlcG9ydGVkLgogZWNt
YS9UeXBlQ29udmVyc2lvbi85LjMuMS0zLmpzCiBlY21hXzIvRXhjZXB0aW9ucy9mdW5jdGlvbi0w
MDEuanMKIGVjbWFfMi9SZWdFeHAvcmVncmVzcy0wMDEuanMKIGVjbWFfMi9SZWdFeHAvdW5pY29k
ZS0wMDEuanMKIGVjbWFfMy9EYXRlLzE1LjkuNS43LmpzCiBlY21hXzMvRnVuRXhwci9mZS0wMDEu
anMKK2VjbWFfMy9GdW5jdGlvbi9zY29wZS0wMDEuanMKIGVjbWFfMy9SZWdFeHAvMTUuMTAuMi0x
LmpzCiBlY21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAxLmpzCiBlY21hXzMvUmVnRXhwL3Blcmxz
dHJlc3MtMDAyLmpzCkBAIC03OTYsNiArNzg5LDcgQEAganMxXzUvUmVncmVzcy9yZWdyZXNzLTEw
NDA3Ny5qcwoganMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qcwoganMxXzUvUmVncmVzcy9y
ZWdyZXNzLTE3MjY5OS5qcwoganMxXzUvUmVncmVzcy9yZWdyZXNzLTE3OTUyNC5qcworanMxXzUv
U2NvcGUvcmVncmVzcy0xODQxMDcuanMKIGpzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzCiBq
czFfNS9TY29wZS9zY29wZS0wMDEuanMKIGpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDE1NzQuanMK
SW5kZXg6IEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
R2x1ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODM1KQorKysgSmF2YVNjcmlwdEdsdWUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDctMDgtMDIgIENhbWVyb24g
WndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVycyBmb3Iga2pz
L0NvbW1vbklkZW50aWZpZXJzLmguCisKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYv
SGFzaEZ1bmN0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYv
SGFzaFRyYWl0cy5oOiBBZGRlZC4KKwogMjAwNy0wNy0xNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4KSW5kZXg6IEphdmFTY3JpcHRH
bHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2
aXNpb24gMCkKKysrIEphdmFTY3JpcHRHbHVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVu
Y3Rpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IYXNoRnVuY3Rpb25zLmg+CkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvSGFzaFRyYWl0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9IYXNoVHJhaXRzLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2NyaXB0
R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaFRyYWl0cy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFzaFRyYWl0cy5oPgpJbmRleDog
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI0ODM1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNCBAQAorMjAwNy0wOC0wMiAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRlcmxv
by5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIFdlYkNvcmUgd29yayB3aXRoIHRoZSBuZXcgdmFyaWFibGUgbG9va3VwIG9wdGltaXphdGlv
bnMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUuIEluIHBhcnRpY3VsYXIsIGFkZCBmb3J3YXJk
aW5nIGhlYWRlcnMgZm9yCisgICAgICAgIGtqcy9Db21tb25JZGVudGlmaWVycy5oLCBhZGQgZXhw
bGljaXQgV2ViQ29yZTo6IG5hbWVzcGFjZSBtYXJraW5ncyB0bworICAgICAgICBhdm9pZCBwcm9i
bGVtcyB3aXRoIG5ldyBzeW1ib2xzIGluIHRoZSBleHBvcnRlZCBLSlMgbmFtZXNwYWNlcywgYW5k
CisgICAgICAgIHN1cHBvcnQgdGhlIG5ldyBtZXRob2Qgb2YgcGFzc2luZyBhcm91bmQgUmVhZE9u
bHkgYXR0cmlidXRlcy4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVu
Y3Rpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpjdXN0b21HZXRPd25Qcm9wZXJ0
eVNsb3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChLSlM6OlhTTFRQcm9jZXNzb3JQcm90b3R5cGVGdW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24p
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19iaW5kaW5nLmNwcDoKKyAgICAgICAgKEtKUzo6
U2NyaXB0SW50ZXJwcmV0ZXI6OmdldERPTU5vZGVGb3JEb2N1bWVudCk6CisgICAgICAgIChLSlM6
OlNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01Ob2RlRm9yRG9jdW1lbnQpOgorICAgICAgICAo
S0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6cHV0RE9NTm9kZUZvckRvY3VtZW50KToKKyAgICAgICAg
KEtKUzo6U2NyaXB0SW50ZXJwcmV0ZXI6OnVwZGF0ZURPTU5vZGVEb2N1bWVudCk6CisKIDIwMDct
MDgtMDIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hG
dW5jdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hhc2hGdW5jdGlvbnMuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNDQyMykKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3BlcnR5U2wKICAgICAgICAgaWYg
KF9wcm9wLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWxbMF0tPnR5cGUoKSA9PSBL
SlM6OkdldHRlclNldHRlclR5cGUpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVydHlTbG90
KHNsb3QsIHZhbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90
KHRoaXMsIHZhbCk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCB2YWwsIEtK
Uzo6UHJvcGVydHlTbG90OjpGb3JiaWREaXJlY3RXcml0ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yLmNwcAko
cmV2aXNpb24gMjQ0MjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgSlNWYWx1ZSAqWFNMVFByb2Nlc3Nv
clByb3RvdHlwZUZ1bmN0aW9uOgogICAgICAgICAgICAgSlNWYWx1ZSAqbm9kZVZhbCA9IGFyZ3Nb
MF07CiAgICAgICAgICAgICBKU1ZhbHVlICpkb2NWYWwgPSBhcmdzWzFdOwogICAgICAgICAgICAg
aWYgKG5vZGVWYWwtPmlzT2JqZWN0KCZKU05vZGU6OmluZm8pICYmIGRvY1ZhbC0+aXNPYmplY3Qo
JkpTRG9jdW1lbnQ6OmluZm8pKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IHN0YXRp
Y19jYXN0PEpTTm9kZSo+KG5vZGVWYWwpLT5pbXBsKCk7CisgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KG5vZGVWYWwpLT5pbXBsKCk7CiAg
ICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc3Rh
dGljX2Nhc3Q8SlNEb2N1bWVudCAqPihkb2NWYWwpLT5pbXBsKCkpOwogICAgICAgICAgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIHByb2Nlc3Nvci50cmFuc2Zvcm1Ub0ZyYWdtZW50KG5vZGUsIGRv
YykuZ2V0KCkpOwogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
YmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGlu
Zy5jcHAJKHJldmlzaW9uIDI0NDIzKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEV2
ZW50TmFtZXM7CiBuYW1lc3BhY2UgS0pTIHsKIAogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBET01P
YmplY3QqPiBET01PYmplY3RNYXA7Ci10eXBlZGVmIEhhc2hNYXA8Tm9kZSosIEpTTm9kZSo+IE5v
ZGVNYXA7Cit0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Tm9kZSosIEpTTm9kZSo+IE5vZGVNYXA7
CiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBOb2RlTWFwKj4gTm9kZVBlckRvY01hcDsKIAog
Ly8gRm9yIGRlYnVnZ2luZywga2VlcCBhIHNldCBvZiB3cmFwcGVycyBjdXJyZW50bHkgcmVnaXN0
ZXJlZCwgYW5kIGNoZWNrIHRoYXQKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFNjcmlwdEludGVy
cHJldGVyOjpmb3JnZXRET01PYmplY3QoCiAgICAgZG9tT2JqZWN0cygpLnJlbW92ZShvYmplY3RI
YW5kbGUpOwogfQogCi1KU05vZGUqIFNjcmlwdEludGVycHJldGVyOjpnZXRET01Ob2RlRm9yRG9j
dW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQorSlNOb2RlKiBTY3JpcHRJbnRl
cnByZXRlcjo6Z2V0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29y
ZTo6Tm9kZSogbm9kZSkKIHsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNOb2RlKj4oZG9tT2JqZWN0cygpLmdldChub2RlKSk7CkBAIC0xNjUsNyArMTY1
LDcgQEAgSlNOb2RlKiBTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NTm9kZUZvcgogICAgIHJldHVy
biBOVUxMOwogfQogCi12b2lkIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01Ob2RlRm9yRG9j
dW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQordm9pZCBTY3JpcHRJbnRlcnBy
ZXRlcjo6Zm9yZ2V0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29y
ZTo6Tm9kZSogbm9kZSkKIHsKICAgICBSRU1PVkVfV1JBUFBFUihnZXRET01Ob2RlRm9yRG9jdW1l
bnQoZG9jdW1lbnQsIG5vZGUpKTsKICAgICBpZiAoIWRvY3VtZW50KSB7CkBAIC0xNzcsNyArMTc3
LDcgQEAgdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NTm9kZUZvcgogICAgICAgICBk
b2N1bWVudERpY3QtPnJlbW92ZShub2RlKTsKIH0KIAotdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6
cHV0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSwgSlNO
b2RlKiB3cmFwcGVyKQordm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6cHV0RE9NTm9kZUZvckRvY3Vt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6Tm9kZSogbm9kZSwgSlNOb2RlKiB3cmFw
cGVyKQogewogICAgIEFERF9XUkFQUEVSKHdyYXBwZXIpOwogICAgIGlmICghZG9jdW1lbnQpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCBFeGVjU3RhdGUqIFNjcmlwdEludGVycHJldGVyOjpnbG9iYWxF
eGVjCiAgICAgcmV0dXJuIEludGVycHJldGVyOjpnbG9iYWxFeGVjKCk7CiB9CiAKLXZvaWQgU2Ny
aXB0SW50ZXJwcmV0ZXI6OnVwZGF0ZURPTU5vZGVEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVu
dCogb2xkRG9jLCBEb2N1bWVudCogbmV3RG9jKQordm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6dXBk
YXRlRE9NTm9kZURvY3VtZW50KFdlYkNvcmU6Ok5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2Ms
IERvY3VtZW50KiBuZXdEb2MpCiB7CiAgICAgQVNTRVJUKG9sZERvYyAhPSBuZXdEb2MpOwogICAg
IEpTTm9kZSogd3JhcHBlciA9IGdldERPTU5vZGVGb3JEb2N1bWVudChvbGREb2MsIG5vZGUpOwpJ
bmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNDgzNSkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMSBAQAorMjAwNy0wOC0wMiAgQ2FtZXJvbiBad2FyaWNoIDxjd3p3YXJpY2hAdXdhdGVy
bG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBmb3J3YXJkaW5nIGhlYWRlcnMgZm9yIENvbW1vbklkZW50aWZpZXJzLmguCisKKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oOiBBZGRlZC4KKwogMjAw
Ny0wOC0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgVGltCkluZGV4OiBXZWJLaXQvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5j
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hG
dW5jdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
SGFzaEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSGFzaEZ1bmN0aW9ucy5oPgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ0MjMpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAor
MjAwNy0wOC0wMyAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBmb3Ig
dGhlIHZhcmlhYmxlIGxvb2t1cCBvcHRpbWl6YXRpb25zIGltcG9ydGVkIGZyb20gS0pTLCBhbmQg
YQorICAgICAgICBmZXcgc2xpZ2h0IGNoYW5nZXMgdG8gdGhlIGV4cGVjdGVkIHJlc3VsdHMgb2Yg
ZXhpc3RpbmcgdGVzdHMgY2F1c2VkIGJ5CisgICAgICAgIHRoZSBuZXcgY29kZS4gVGhlIHJlbGV2
YW50IHJldmlzaW9ucyBpbiBLREUgYXJlCisKKyAgICAgICAgICAgIDY3MDU0OAorICAgICAgICAg
ICAgNjcxNDgxCisgICAgICAgICAgICA2NzE0ODQKKyAgICAgICAgICAgIDY3MTUzNgorICAgICAg
ICAgICAgNjcxNTQxCisgICAgICAgICAgICA2NzE1NDgKKyAgICAgICAgICAgIDY3NDE2NworCisg
ICAgICAgICogZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEZyYW1lRWxlbWVudDA5LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBkb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MSUZyYW1lRWxlbWVudDEx
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9hcmd1bWVudHMtc2NvcGUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9hcmd1bWVudHMtc2NvcGUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvY29tcGxldGlvbi1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9qcy9rZGUvZnVuYy1kZWNsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9rZGUvZnVuYy1kZWNsLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMva2RlL2Z1bmN0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2tk
ZS9pdGVyYXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMva2RlL2x2YWwtZXhj
ZXB0aW9ucy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMva2RlL2x2YWwt
ZXhjZXB0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9vcGVyYXRvcnMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMva2RlL3Jlc291cmNlcy9hcmd1bWVudHMt
c2NvcGUuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMva2RlL3Jlc291cmNlcy9jb21wbGV0
aW9uLmpzOgorICAgICAgICAqIGZhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jLWRlY2wuanM6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jdGlvbi5qczoKKyAgICAg
ICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvaXRlcmF0aW9uLmpzOgorICAgICAgICAqIGZhc3Qv
anMva2RlL3Jlc291cmNlcy9sdmFsLWV4Y2VwdGlvbnMuanM6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMva2RlL3Jlc291cmNlcy9vcGVyYXRvcnMuanM6CisgICAgICAgICogZmFzdC9qcy9rZGUv
cmVzb3VyY2VzL3Njb3BlLmpzOgorICAgICAgICAqIGZhc3QvanMva2RlL3Njb3BlLWV4cGVjdGVk
LnR4dDoKKwogMjAwNy0wNy0xOCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlci4KSW5kZXg6IExheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMi9odG1sL0hUTUxGcmFtZUVsZW1lbnQwOS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTEZyYW1lRWxlbWVudDA5LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDIvaHRtbC9IVE1MRnJhbWVFbGVtZW50MDktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY5MjogVmFsdWUgY29tcGxldGUg
KHJlc3VsdCBvZiBleHByZXNzaW9uIHNldFVwUGFnZSkgaXMgbm90IG9iamVjdC4KK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA2OTI6IFZhbHVlIGNvbXBsZXRlIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBz
ZXRVcFBhZ2UpIGlzIG5vdCBhbiBvYmplY3QuCiBUZXN0OglodHRwOi8vd3d3LnczLm9yZy8yMDAx
L0RPTS1UZXN0LVN1aXRlL2xldmVsMi9odG1sL0hUTUxGcmFtZUVsZW1lbnQwOQogU3RhdHVzOglT
dWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudDExLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDIvaHRtbC9IVE1MSUZyYW1lRWxlbWVudDExLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudDExLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMgQEAKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSA2OTI6IFZhbHVlIGNvbXBsZXRlIChyZXN1bHQgb2YgZXhwcmVzc2lv
biBzZXRVcFBhZ2UpIGlzIG5vdCBvYmplY3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjkyOiBW
YWx1ZSBjb21wbGV0ZSAocmVzdWx0IG9mIGV4cHJlc3Npb24gc2V0VXBQYWdlKSBpcyBub3QgYW4g
b2JqZWN0LgogVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAwMS9ET00tVGVzdC1TdWl0ZS9sZXZl
bDIvaHRtbC9IVE1MSUZyYW1lRWxlbWVudDExCiBTdGF0dXM6CVN1Y2Nlc3MKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMva2RlL2FyZ3VtZW50cy1zY29wZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNjb3BlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2FyZ3VtZW50cy1zY29w
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK0tERSBKUyBUZXN0
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRlc3QwCitQQVNTIHRlc3Qx
CitQQVNTIHRlc3QyCitQQVNTIHRlc3QzCitQQVNTIHRlc3Q0LigxKQorUEFTUyB0ZXN0NC4oMikK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9hcmd1bWVudHMtc2NvcGUuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9hcmd1bWVudHMtc2NvcGUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2FyZ3VtZW50cy1zY29wZS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIktERSBKUyBUZXN0Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYXJndW1lbnRzLXNjb3BlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2NvbXBsZXRpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2NvbXBsZXRpb24tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2NvbXBsZXRpb24t
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsMTEgQEAgT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNTIGZvbygpLCBpIGlzIDIKIFBBU1Mg
Y2F1Z2h0IGlzIHRydWUKK1BBU1MgdmFsIGlzIDExCitQQVNTIHZhbCBpcyAxMgorUEFTUyB2YWwg
aXMgMTMKK1BBU1MgdmFsIGlzIDE0CitQQVNTIHZhbCBpcyAxNQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L2tkZS9mdW5jLWRlY2wtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvanMva2RlL2Z1bmMtZGVjbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2tkZS9mdW5jLWRlY2wtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIyIEBACitLREUgSlMgVGVzdAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBGdW5jdGlvbiBkZWNsYXJhdGlvbiB0YWtlcyBlZmZlY3QgYXQgZW50cnkKK1BBU1Mg
RGVjbCBub3QgeWV0IG92ZXJ3cml0dGVuCitQQVNTIEFmdGVyIGFzc2lnbiAoMCkKK1BBU1MgZnVu
Y3Rpb24gZGVjbHMgaGF2ZSBubyBleGVjdXRpb24gY29udGVudAorUEFTUyBBZnRlciBhc3NpZ24g
IzIgKDApCitQQVNTIERlY2wgYWxyZWFkeSBvdmVyd3JpdHRlbgorUEFTUyBBZnRlciBhc3NpZ24g
KDEpCitQQVNTIGZ1bmN0aW9uIGRlY2xzIGhhdmUgbm8gZXhlY3V0aW9uIGNvbnRlbnQKK1BBU1Mg
QWZ0ZXIgYXNzaWduICMyICgxKQorUEFTUyBEZWNsIGFscmVhZHkgb3ZlcndyaXR0ZW4KK1BBU1Mg
QWZ0ZXIgYXNzaWduICgyKQorUEFTUyBmdW5jdGlvbiBkZWNscyBoYXZlIG5vIGV4ZWN1dGlvbiBj
b250ZW50CitQQVNTIEFmdGVyIGFzc2lnbiAjMiAoMikKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tk
ZS9mdW5jLWRlY2wuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9m
dW5jLWRlY2wuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1
bmMtZGVjbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIktERSBKUyBUZXN0Iik7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnVuYy1kZWNsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1bmN0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9mdW5jdGlvbi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvZnVuY3Rp
b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw2IEBAIFBBU1Mgb3Jn
RnVuY0Nsb25lKCd3b3JsZCcpIGlzICdIZWxsbyB3b3IKIFBBU1MgZ3JvdXBDbG9uZSgxLCAyKSBp
cyA5CiBQQVNTIFN0cmluZyhNYXRoLnNpbikgaXMgc2luU3RyCiBQQVNTIHNoYWRvdygpIGlzIDIK
LVBBU1MgbmVzdGVkcmV0IGlzICdvdXRlciBuZXN0JwotUEFTUyBub3RfbmVzdGVkcmV0IGlzICdn
bG9iYWwgbmVzdCcKIFBBU1Mgc2FtcGxlLnByb3RvdHlwZS5wcm90b3R5cGUgaXMgdW5kZWZpbmVk
LgogUEFTUyBzYW1wbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID09IHNhbXBsZSBpcyB0cnVlCiBQ
QVNTIGNhdWdodCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9pdGVyYXRp
b24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2l0
ZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9rZGUvaXRlcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw2ICs5
LDIyIEBAIFBBU1MgY291bnQgaXMgMTAKIFBBU1MgcHJvcGVydGllcyBpcyAnYT0xMTtiPTIyOycK
IFBBU1MgbGlzdCBpcyAnWzBdPTEwMDtbMV09MTAxOycKIFBBU1MgbGlzdCBpcyAnMTIzJworUEFT
UyBpbW1lZGlhdGVXaGlsZUJyZWFrIGlzIHVuZGVmaW5lZC4KK1BBU1MgbGF0ZXJXaGlsZUJyZWFr
IGlzICdmb28nCitQQVNTIHdoaWxlRW5kIGlzIDIKK1BBU1MgaW1tZWRpYXRlRG9XaGlsZUJyZWFr
IGlzIHVuZGVmaW5lZC4KK1BBU1MgbGF0ZXJEb1doaWxlQnJlYWsgaXMgJ2JhcicKK1BBU1MgZG9X
aGlsZUVuZCBpcyAzCitQQVNTIGltbWVkaWF0ZUZvckJyZWFrIGlzIHVuZGVmaW5lZC4KK1BBU1Mg
bGF0ZXJGb3JCcmVhayBpcyAnemlsY2gnCitQQVNTIGZvckVuZCBpcyAncXVhcmsnCitQQVNTIGl0
ZXJzIGlzIDEwCitQQVNTIGZvbzogY29udGludWUgZm9vOyAgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4uCitQQVNTIGNvbnRpbnVlOyAgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4uCitQ
QVNTIGJyZWFrOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IEludmFsaWQgYnJlYWsgc3Rh
dGVtZW50Li4KK1BBU1MgZm9vOiBicmVhayBmb287ICBpcyB1bmRlZmluZWQuCitQQVNTIGZvbzog
eyBhID0gMTsgYnJlYWsgZm9vOyBhID0gMjsgfSBpcyAxCitQQVNTIGl0ZXJzIGlzIDEwCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvanMva2RlL2x2YWwtZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25zLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2x2YWwtZXhjZXB0aW9u
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKK0tERSBKUyBUZXN0
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGZ1bmN0aW9uICgpIAorewor
ICBhID0geDsKK30gdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiB4LgorUEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAgeCArPSAiZm9vIjsKK30gdGhyZXcg
ZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiB4LgorUEFTUyBm
dW5jdGlvbiAoKSAKK3sKKyAgYiA9IGEueDsKK30gZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24K
K1BBU1MgZnVuY3Rpb24gKCkgCit7CisgIGIgPSBhWyJ4Il07Cit9IGRpZCBub3QgdGhyb3cgYW4g
ZXhjZXB0aW9uCitQQVNTIGZ1bmN0aW9uICgpIAoreworICBhWyJ4Il0gKz0gImJheiI7Cit9IGRp
ZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTIGFbJ3gnXSBpcyAidW5kZWZpbmVkYmF6Igor
UEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAgYiA9IGEueTsKK30gZGlkIG5vdCB0aHJvdyBhbiBleGNl
cHRpb24KK1BBU1MgZnVuY3Rpb24gKCkgCit7CisgIGEueSArPSAiZ2xhcmNoIjsKK30gZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1MgYVsneSddIGlzICJ1bmRlZmluZWRnbGFyY2giCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25zLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25zLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9sdmFsLWV4Y2VwdGlvbnMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4K
K2Rlc2NyaXB0aW9uKCJLREUgSlMgVGVzdCIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2x2YWwtZXhjZXB0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9vcGVyYXRvcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL29wZXJhdG9ycy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDI0NDIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvb3BlcmF0b3JzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsMTAgQEAgUEFTUyAhITEgaXMgdHJ1
ZQogUEFTUyAhMCBpcyB0cnVlCiBQQVNTICEhJ2EnIGlzIHRydWUKIFBBU1MgIScnIGlzIHRydWUK
K1BBU1MgKzkgaXMgOQorUEFTUyB2YXIgaSA9IDEwOyAraSBpcyAxMAorUEFTUyAtMTEgaXMgLTEx
CitQQVNTIHZhciBpID0gMTI7IC1pIGlzIC0xMgogUEFTUyB2YXIgaSA9IDA7ICsraTsgaXMgMQog
UEFTUyB2YXIgaSA9IDA7ICsraTsgaSBpcyAxCiBQQVNTIHZhciBpID0gMDsgaSsrOyBpcyAwCkBA
IC0yNSw2ICsyOSw4IEBAIFBBU1MgdmFyIGkgPSB0cnVlOyBpLS0gaXMgMQogUEFTUyB2YXIgaSA9
IHRydWU7IGktLTsgaSBpcyAwCiBQQVNTIH4wIGlzIC0xCiBQQVNTIH4xIGlzIC0yCitQQVNTIH5O
YU4gaXMgLTEKK1BBU1MgfkluZmluaXR5IGlzIC0xCiBQQVNTIH5NYXRoLnBvdygyLCAzMykgaXMg
LTEKIFBBU1MgfihNYXRoLnBvdygyLCAzMikgKyBNYXRoLnBvdygyLCAzMSkgKyAyKSBpcyAyMTQ3
NDgzNjQ1CiBQQVNTIH5udWxsIGlzIC0xCkBAIC00MCw2ICs0NiwyMSBAQCBQQVNTIC04ID4+IDI0
IGlzIC0xCiBQQVNTIDggPj4+IDIgaXMgMgogUEFTUyAtOCA+Pj4gMjQgaXMgMjU1CiBQQVNTICgt
MjIwMDAwMDAwMCA+PiAxKSA8PCAxIGlzIDIwOTQ5NjcyOTYKK1BBU1MgSW5maW5pdHkgPj4gMSBp
cyAwCitQQVNTIEluZmluaXR5IDw8IDEgaXMgMAorUEFTUyBJbmZpbml0eSA+Pj4gMSBpcyAwCitQ
QVNTIE5hTiA+PiAxIGlzIDAKK1BBU1MgTmFOIDw8IDEgaXMgMAorUEFTUyBOYU4gPj4+IDEgaXMg
MAorUEFTUyA4LjEgPj4gMSBpcyA0CitQQVNTIDguMSA8PCAxIGlzIDE2CitQQVNTIDguMSA+Pj4g
MSBpcyA0CitQQVNTIDguOSA+PiAxIGlzIDQKK1BBU1MgOC45IDw8IDEgaXMgMTYKK1BBU1MgOC45
ID4+PiAxIGlzIDQKK1BBU1MgTWF0aC5wb3coMiwgMzIpID4+IDEgaXMgMAorUEFTUyBNYXRoLnBv
dygyLCAzMikgPDwgMSBpcyAwCitQQVNTIE1hdGgucG93KDIsIDMyKSA+Pj4gMSBpcyAwCiBQQVNT
IDErMiBpcyAzCiBQQVNTICdhJysnYicgaXMgJ2FiJwogUEFTUyAnYScrMiBpcyAnYTInCkBAIC0x
NTIsNiArMTczLDggQEAgUEFTUyBOYU4gPT09IE5hTiBpcyBmYWxzZQogUEFTUyAwLjAgPT09IDAg
aXMgdHJ1ZQogUEFTUyAnYWJjJyA9PT0gJ2FiYycgaXMgdHJ1ZQogUEFTUyAnYScgPT09ICd4JyBp
cyBmYWxzZQorUEFTUyAxID09PSAnMScgaXMgZmFsc2UKK1BBU1MgJzEnID09PSAxIGlzIGZhbHNl
CiBQQVNTIHRydWUgPT09IHRydWUgaXMgdHJ1ZQogUEFTUyBmYWxzZSA9PT0gZmFsc2UgaXMgdHJ1
ZQogUEFTUyB0cnVlID09PSBmYWxzZSBpcyBmYWxzZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9rZGUvc2NvcGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
anMva2RlL3Njb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2pzL2tkZS9zY29wZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNiAr
NCw5IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIAogCiBQQVNT
IGYoMikgaXMgMjIKK1BBU1MgT0JKRUNULnRvU3RyaW5nKCkgaXMgJ2hlbGxvJworUEFTUyBzIGlz
ICdoZWxsbycKK1BBU1MgZyBpcyAnZm9vJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJj
ZXMvYXJndW1lbnRzLXNjb3BlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
a2RlL3Jlc291cmNlcy9hcmd1bWVudHMtc2NvcGUuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvYXJndW1lbnRzLXNjb3BlLmpzCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUxIEBACisvLyBXZSBjYW4ndCB1c2Ugbm9ybWFsIHNob3VsZEJlIGhlcmUs
IHNpbmNlIHRoZXknZCBldmFsIGluIHRoZSB3cm9uZyBjb250ZXh0Li4uCisKK2Z1bmN0aW9uIHNo
b3VsZEJlT2ZUeXBlKG1zZywgdmFsLCB0eXBlKSB7CisgIGlmICh0eXBlb2YodmFsKSAhPSB0eXBl
KQorICAgIHRlc3RGYWlsZWQobXNnICsgIjogdmFsdWUgaGFzIHR5cGUgIiArIHR5cGVvZih2YWwp
ICsgIiAsIG5vdDoiICsgdHlwZSk7CisgIGVsc2UKKyAgICB0ZXN0UGFzc2VkKG1zZyk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QwKCkgeworICAgIHZhciBhcmd1bWVudHM7CisgICAgLy8gdmFyIGV4ZWN1
dGlvbiBzaG91bGQgbm90IG92ZXJ3cml0ZSBzb21ldGhpbmcgdGhhdCB3YXMgCisgICAgLy8gaW4g
c2NvcGUgYmVmb3JlaGFuZCAtLSBlLmcuIHRoZSBhcmd1bWVudHMgdGhpbmcKKyAgICBzaG91bGRC
ZU9mVHlwZSgidGVzdDAiLCBhcmd1bWVudHMsICdvYmplY3QnKTsKKyB9CisKK2Z1bmN0aW9uIHRl
c3QxKCkgeworICAgIC8vIE5vIG5lZWQgdG8gdW5kZWYtaW5pdGlhbGl6ZSBzb21ldGhpbmcgaW4g
c2NvcGUgYWxyZWFkeSEKKyAgICBzaG91bGRCZU9mVHlwZSgidGVzdDEiLCBhcmd1bWVudHMsICdv
YmplY3QnKTsKKyAgICB2YXIgYXJndW1lbnRzOworfQorCitmdW5jdGlvbiB0ZXN0Mihhcmd1bWVu
dHMpIHsKKyAgICAvLyBGb3JtYWxzIE9UT0ggY2FuIG92ZXJ3cml0ZSB0aGUgYXJncyBvYmplY3QK
KyAgICBzaG91bGRCZU9mVHlwZSgidGVzdDIiLCBhcmd1bWVudHMsICdudW1iZXInKTsKK30KKwor
CitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICAvLyBEaXR0byBmb3IgZnVuY3Rpb25zLi4KKyAgICBz
aG91bGRCZU9mVHlwZSgidGVzdDMiLCBhcmd1bWVudHMsICdmdW5jdGlvbicpOworICAgIGZ1bmN0
aW9uIGFyZ3VtZW50cygpIHt9Cit9CisKK2Z1bmN0aW9uIHRlc3Q0KCkgeworICAgIC8vIEhlcmUs
IHRoZSAtZGVjbGFyYXRpb24tIHBhcnQgb2YgdGhlIHZhciBiZWxvdyBzaG91bGQgaGF2ZSBubyAK
KyAgICAvLyBlZmZlY3QuLgorICAgIHNob3VsZEJlT2ZUeXBlKCd0ZXN0NC4oMSknLCBhcmd1bWVu
dHMsICdvYmplY3QnKTsKKyAgICB2YXIgYXJndW1lbnRzID0gNDsKKyAgICAvLyAuLiBidXQgdGhl
IGFzc2lnbm1lbnQgc2hvdWQganVzdCBoYXBwZW4KKyAgICBzaG91bGRCZU9mVHlwZSgndGVzdDQu
KDIpJywgYXJndW1lbnRzLCAnbnVtYmVyJyk7Cit9CisKKwordGVzdDAoKTsKK3Rlc3QxKCk7Cit0
ZXN0Mig0Mik7Cit0ZXN0MygpOwordGVzdDQoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvY29tcGxldGlv
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvY29t
cGxldGlvbi5qcwkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9y
ZXNvdXJjZXMvY29tcGxldGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMTIsNCArMTIsMTYgQEAg
dmFyIGNhdWdodCA9IGZhbHNlOwogdHJ5IHsgZXZhbCgicmV0dXJuOyIpOyB9IGNhdGNoKGUpIHsg
Y2F1Z2h0ID0gdHJ1ZTsgfQogc2hvdWxkQmVUcnVlKCJjYXVnaHQiKTsKIAorLy8gdmFsdWUgY29t
cGxldGlvbnMgdGFrZSBwcmVjZWRlbmNlCit2YXIgdmFsID0gZXZhbCgiMTE7IHsgfSIpOworc2hv
dWxkQmUoInZhbCIsICIxMSIpOwordmFsID0gZXZhbCgiMTI7IDsiKTsKK3Nob3VsZEJlKCJ2YWwi
LCAiMTIiKTsKK3ZhbCA9IGV2YWwoIjEzOyBpZihmYWxzZSk7Iik7CitzaG91bGRCZSgidmFsIiwg
IjEzIik7Cit2YWwgPSBldmFsKCIxNDsgZnVuY3Rpb24gZigpIHt9Iik7CitzaG91bGRCZSgidmFs
IiwgIjE0Iik7Cit2YWwgPSBldmFsKCIxNTsgdmFyIHYgPSAwIik7CitzaG91bGRCZSgidmFsIiwg
IjE1Iik7CisKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMva2RlL3Jlc291cmNlcy9mdW5jLWRlY2wuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2Z1bmMtZGVjbC5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jLWRlY2wuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDYgQEAKKy8vIFdlIGNhbid0IHVzZSBub3JtYWwgc2hvdWxkQmUgaGVyZSwg
c2luY2UgdGhleSdkIGV2YWwgaW4gdGhlIHdyb25nIGNvbnRleHQuLi4KK2Z1bmN0aW9uIHNob3Vs
ZEJlT2ZUeXBlKG1zZywgdmFsLCB0eXBlKSB7CisgIGlmICh0eXBlb2YodmFsKSAhPSB0eXBlKQor
ICAgIHRlc3RGYWlsZWQobXNnICsgIjogdmFsdWUgaGFzIHR5cGUgIiArIHR5cGVvZih2YWwpICsg
IiAsIG5vdDoiICsgdHlwZSk7CisgIGVsc2UKKyAgICB0ZXN0UGFzc2VkKG1zZyk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZEJlVmFsKG1zZywgdmFsLCBleHBlY3RlZCkgeworICBpZiAodmFsICE9IGV4
cGVjdGVkKQorICAgIHRlc3RGYWlsZWQobXNnICsgIjogdmFsdWUgaXMgIiArIHZhbCArICIgLCBu
b3Q6IiArIGV4cGVjdGVkKTsKKyAgZWxzZQorICAgIHRlc3RQYXNzZWQobXNnKTsKK30KKworZiA9
ICJnbG9iYWwiOworCitmdW5jdGlvbiB0ZXN0KCkgeworICB0cnkgeworICAgIHNob3VsZEJlT2ZU
eXBlKCJGdW5jdGlvbiBkZWNsYXJhdGlvbiB0YWtlcyBlZmZlY3QgYXQgZW50cnkiLCBmLCAiZnVu
Y3Rpb24iKTsKKyAgfQorICBjYXRjaCAoZSkgeworICAgIHRlc3RGYWlsZWQoIlNjb3BpbmcgdmVy
eSBicm9rZW4hIik7CisgIH0KKworICBmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkgeworICAg
IGlmIChpID09IDApCisgICAgICBzaG91bGRCZU9mVHlwZSgiRGVjbCBub3QgeWV0IG92ZXJ3cml0
dGVuIiwgZiwgJ2Z1bmN0aW9uJyk7CisgICAgZWxzZQorICAgICAgc2hvdWxkQmVPZlR5cGUoIkRl
Y2wgYWxyZWFkeSBvdmVyd3JpdHRlbiIsIGYsICdudW1iZXInKTsKKworICAgIGYgPSAzOworICAg
IHNob3VsZEJlVmFsKCJBZnRlciBhc3NpZ24gKCIraSsiKSIsIGYsIDMpOworCisgICAgZnVuY3Rp
b24gZigpIHt9OworICAgIHNob3VsZEJlVmFsKCJmdW5jdGlvbiBkZWNscyBoYXZlIG5vIGV4ZWN1
dGlvbiBjb250ZW50IiwgZiwgMyk7CisKKyAgICBmID0gNTsKKworICAgIHNob3VsZEJlVmFsKCJB
ZnRlciBhc3NpZ24gIzIgKCIraSsiKSIsIGYsIDUpOworICB9Cit9CisKK3Rlc3QoKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tk
ZS9yZXNvdXJjZXMvZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9rZGUvcmVzb3VyY2VzL2Z1bmN0aW9uLmpzCShyZXZpc2lvbiAyNDQyMykKKysrIExheW91dFRl
c3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jdGlvbi5qcwkod29ya2luZyBjb3B5KQpAQCAt
MTcyLDMyICsxNzIsNiBAQCBmdW5jdGlvbiBzaGFkb3coKSB7IHJldHVybiAyOyB9CiBzaG91bGRC
ZSgic2hhZG93KCkiLCAiMiIpOwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LyBuZXN0ZWQgZnVuY3Rpb25zCi0KLXZhciBuZXN0X3Byb3BlcnR5ID0gImdsb2JhbCBuZXN0IjsK
LQotZnVuY3Rpb24gbmVzdGVkX291dGVyKCkgewotCi0gIGZ1bmN0aW9uIG5lc3RlZF9pbm5lcigp
IHsKLSAgICByZXR1cm4gbmVzdF9wcm9wZXJ0eTsKLSAgfQotCi19Ci0KLWZ1bmN0aW9uIG5vdF9u
ZXN0ZWQoKSB7Ci0gIHJldHVybiBuZXN0X3Byb3BlcnR5OwotfQotCi1uZXN0ZWRfb3V0ZXIubmVz
dF9wcm9wZXJ0eSA9ICJvdXRlciBuZXN0IjsKLQotdmFyIG5lc3RlZCA9IG5lc3RlZF9vdXRlci5u
ZXN0ZWRfaW5uZXI7Ci12YXIgbmVzdGVkcmV0ID0gbmVzdGVkKCk7Ci1zaG91bGRCZSgibmVzdGVk
cmV0IiwiJ291dGVyIG5lc3QnIik7Ci0KLXZhciBub3RfbmVzdGVkcmV0ID0gbm90X25lc3RlZCgp
Owotc2hvdWxkQmUoIm5vdF9uZXN0ZWRyZXQiLCInZ2xvYmFsIG5lc3QnIik7Ci0KLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIG90aGVyIHByb3BlcnRpZXMKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KIGZ1bmN0aW9uIHNhbXBsZSgpIHsgfQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2l0ZXJhdGlvbi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvaXRlcmF0aW9uLmpzCShyZXZpc2lvbiAy
NDQyMykKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9pdGVyYXRpb24uanMJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDQgKzUzLDY3IEBAIGZvciAodmFyIGEgPSBbMSwyLDNdLCBs
ZW5ndGggPSBhLmxlbmd0aCwKICAgbGlzdCArPSBhW2ldOwogfQogc2hvdWxkQmUoImxpc3QiLCAi
JzEyMyciKTsKLXN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWUKKworLy8gY29tcGxldGlvbiB2YWx1
ZXMKK3ZhciBpbW1lZGlhdGVXaGlsZUJyZWFrID0gZXZhbCgid2hpbGUgKHRydWUpIHsgYnJlYWs7
IH0iKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJpbW1lZGlhdGVXaGlsZUJyZWFrIiwgIidmb28nIik7
Cit2YXIgbGF0ZXJXaGlsZUJyZWFrID0gZXZhbCgid2hpbGUgKHRydWUpIHsgJ2Zvbyc7IGJyZWFr
OyB9Iik7CitzaG91bGRCZSgibGF0ZXJXaGlsZUJyZWFrIiwgIidmb28nIik7Cit2YXIgd2hpbGVF
bmQgPSBldmFsKCJ2YXIgeSA9IDA7IHdoaWxlICh5IDwgMikgeyArK3kgfSIpOworc2hvdWxkQmUo
IndoaWxlRW5kIiwgIjIiKTsKKwordmFyIGltbWVkaWF0ZURvV2hpbGVCcmVhayA9IGV2YWwoImRv
IHsgYnJlYWs7IH0gd2hpbGUoZmFsc2UpOyAiKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJpbW1lZGlh
dGVEb1doaWxlQnJlYWsiLCAiJ2ZvbyciKTsKK3ZhciBsYXRlckRvV2hpbGVCcmVhayA9IGV2YWwo
ImRvIHsgJ2Jhcic7IGJyZWFrOyB9IHdoaWxlKHRydWUpOyIpOworc2hvdWxkQmUoImxhdGVyRG9X
aGlsZUJyZWFrIiwgIidiYXInIik7Cit2YXIgZG9XaGlsZUVuZCA9IGV2YWwoInZhciB5ID0gMDsg
ZG8geyArK3kgfSB3aGlsZSAoeSA8IDMpOyIpOworc2hvdWxkQmUoImRvV2hpbGVFbmQiLCAiMyIp
OworCit2YXIgaW1tZWRpYXRlRm9yQnJlYWsgPSBldmFsKCJmb3IoOzspIHsgYnJlYWs7IH0iKTsK
K3Nob3VsZEJlVW5kZWZpbmVkKCJpbW1lZGlhdGVGb3JCcmVhayIsICInZm9vJyIpOwordmFyIGxh
dGVyRm9yQnJlYWsgPSBldmFsKCJmb3IoOzspIHsgJ3ppbGNoJzsgYnJlYWs7IH0iKTsKK3Nob3Vs
ZEJlKCJsYXRlckZvckJyZWFrIiwgIid6aWxjaCciKTsKK3ZhciBmb3JFbmQgPSBldmFsKCJmb3Io
dmFyIHkgPSAwOyB5IDwgNDsgKyt5KSB7ICdxdWFyaycgfSIpOworc2hvdWxkQmUoImZvckVuZCIs
ICIncXVhcmsnIik7CisKKy8vIFZhcmlvdXMgc3R1ZmYgZm9yIGNvbnRyb2wgZmxvdyBhbmQgZXJy
b3IgaGFuZGxpbmcgb2YgYnJlYWsvY29udGludWUKK3ZhciBpdGVyczsKKworLy8gVGVzdCB3aGV0
aGVyIHdlIGhhbmRsZSBtdWx0aXBsZSBsYWJlbHMgb24gdGhlIHNhbWUgc3RhdGVtZW50IHJpZ2h0
CisvLyBOb3RlOiB0aGlzIGlzIGluIGEgZnVuY3Rpb24gc2luY2Uga29ucSAzLngganVzdCBicmVh
a3Mgb3V0IG9mIHRoZSB3aG9sZSB0aGluZy4KK2Z1bmN0aW9uIHRlc3RMYWJlbE5lc3QoKSB7Cisg
IGl0ZXJzID0gMDsKKyAgZm9vOiBiYXI6IHdoaWxlICh0cnVlKSB7CisgICAgKytpdGVyczsKKyAg
ICBpZiAoaXRlcnMgPCAxMCkKKyAgICAgIGNvbnRpbnVlIGZvbzsKKyAgICBlbHNlCisgICAgICBi
cmVhazsKKyAgfQorfQorCit0ZXN0TGFiZWxOZXN0KCk7CitzaG91bGRCZSgnaXRlcnMnLCAnMTAn
KTsKKworLy8gVGVzdCB0byBtYWtlIHN1cmUgZG9pbmcgY29udGludWUgb3V0c2lkZSBhIGxvb3AK
Ky8vIHRocm93cyBwcm9wZXJseS4gKDMueCBkaWRuJ3QpLCBhbmQgc28gZG9lcyBhIGxhYmVsLWxl
c3MKKy8vIGJyZWFrIG91dHNpZGUgb2YgaXQuCitzaG91bGRUaHJvdygnZm9vOiBjb250aW51ZSBm
b287ICcpOworc2hvdWxkVGhyb3coJ2NvbnRpbnVlOyAnKTsKK3Nob3VsZFRocm93KCdicmVhazsn
KTsKKworLy8gVGhlc2Ugb25lcyBzaG91bGQgYmUgZmluZSBPVE9ICitzaG91bGRCZVVuZGVmaW5l
ZCgnZm9vOiBicmVhayBmb287ICcpOworc2hvdWxkQmUoJ2ZvbzogeyBhID0gMTsgYnJlYWsgZm9v
OyBhID0gMjsgfScsICcxJyk7CisKKy8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBicmVhayBvdXQgdG9v
IGZhci4KK2Z1bmN0aW9uIHRlc3RMb2NhbEJyZWFrKCkgeworICBsOiBicmVhayBsOworfQorCitm
b3IgKGl0ZXJzID0gMDsgaXRlcnMgPCAxMDsgKytpdGVycykKKyAgdGVzdExvY2FsQnJlYWsoKTsK
Kworc2hvdWxkQmUoJ2l0ZXJzJywgJzEwJyk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2x2YWwtZXhjZXB0
aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMv
bHZhbC1leGNlcHRpb25zLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9r
ZGUvcmVzb3VyY2VzL2x2YWwtZXhjZXB0aW9ucy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MiBAQAorLy8gVGVzdHMgZm9yIHJhaXNpbmcgLS0tIGFuZCBub24tcmFpc2luZyBleGNlcHRpb25z
IG9uIGFjY2VzcyB0byByZWZlcmVuY2UgdG8gdW5kZWZpbmVkIHRoaW5ncy4uLgorCisvLyBMb2Nh
bHMgc2hvdWxkIHRocm93IG9uIGFjY2VzcyBpZiB1bmRlZmluZWQuLgorZm5TaG91bGRUaHJvdyhm
dW5jdGlvbigpIHsgYSA9IHg7IH0sIFJlZmVyZW5jZUVycm9yKTsKKworLy8gUmVhZC1tb2RpZnkt
d3JpdGUgdmVyc2lvbnMgb2YgYXNzaWdubWVudCBzaG91bGQgdGhyb3cgYXMgd2VsbAorZm5TaG91
bGRUaHJvdyhmdW5jdGlvbigpIHsgeCArPSAiZm9vIjsgfSwgUmVmZXJlbmNlRXJyb3IpOworCisv
LyBPdGhlciByZWZlcmVuY2UgdHlwZXMgc2hvdWxkIGp1c3QgcmV0dXJuIHVuZGVmaW5lZC4uLgor
YSA9IG5ldyBPYmplY3QoKTsKK2ZuU2hvdWxkTm90VGhyb3coZnVuY3Rpb24oKSB7IGIgPSBhLng7
IH0pOworZm5TaG91bGROb3RUaHJvdyhmdW5jdGlvbigpIHsgYiA9IGFbJ3gnXTsgfSk7CitmblNo
b3VsZE5vdFRocm93KGZ1bmN0aW9uKCkgeyBhWyd4J10gKz0gJ2Jheic7IH0pOworc2hvdWxkQmUo
ImFbJ3gnXSIsICcidW5kZWZpbmVkYmF6IicpOworZm5TaG91bGROb3RUaHJvdyhmdW5jdGlvbigp
IHsgYiA9IGEueTsgfSk7CitmblNob3VsZE5vdFRocm93KGZ1bmN0aW9uKCkgeyBhLnkgKz0gJ2ds
YXJjaCc7IH0pOworc2hvdWxkQmUoImFbJ3knXSIsICcidW5kZWZpbmVkZ2xhcmNoIicpOworCisK
Ky8vIEhlbHBlcnMhCitmdW5jdGlvbiBmblNob3VsZFRocm93KGYsIGV4VHlwZSkKK3sKKyAgdmFy
IGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAgX2F2ID0gZigpOworICB9IGNh
dGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0KKworICBpZiAoZXhjZXB0aW9uKSB7
CisgICAgaWYgKHR5cGVvZiBleFR5cGUgPT0gInVuZGVmaW5lZCIgfHwgZXhjZXB0aW9uIGluc3Rh
bmNlb2YgZXhUeXBlKQorICAgICAgdGVzdFBhc3NlZChmICsgIiB0aHJldyBleGNlcHRpb24gIiAr
IGV4Y2VwdGlvbiArICIuIik7CisgICAgZWxzZQorICAgICAgdGVzdEZhaWxlZChmICsgIiBzaG91
bGQgdGhyb3cgZXhjZXB0aW9uICIgKyBleFR5cGUgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4
Y2VwdGlvbiArICIuIik7CisgIH0gZWxzZSBpZiAodHlwZW9mIF9hdiA9PSAidW5kZWZpbmVkIikK
KyAgICB0ZXN0RmFpbGVkKGYgKyAiIHNob3VsZCB0aHJvdyBleGNlcHRpb24gIiArIGV4VHlwZSAr
ICIuIFdhcyB1bmRlZmluZWQuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKGYgKyAiIHNob3Vs
ZCB0aHJvdyBleGNlcHRpb24gIiArIGV4VHlwZSArICIuIFdhcyAiICsgX2F2ICsgIi4iKTsKK30K
KworZnVuY3Rpb24gZm5TaG91bGROb3RUaHJvdyhmKQoreworICB0cnkgeworICAgIGYoKTsKKyAg
ICB0ZXN0UGFzc2VkKGYgKyAiIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIik7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICB0ZXN0RmFpbGVkKGYgKyAiIHRocmV3IGFuIGV4Y2VwdGlvbiAiICsgZSAr
ICIgd2hlbiBubyBleGNlcHRpb24gZXhwZWN0ZWQiKTsKKyAgfQorfQorCit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNl
cy9vcGVyYXRvcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVz
b3VyY2VzL29wZXJhdG9ycy5qcwkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2tkZS9yZXNvdXJjZXMvb3BlcmF0b3JzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgs
MTQgQEAgc2hvdWxkQmVUcnVlKCIhMCIpOwogc2hvdWxkQmVUcnVlKCIhISdhJyIpOwogc2hvdWxk
QmVUcnVlKCIhJyciKTsKIAorLy8gdW5hcnkgcGx1cworc2hvdWxkQmUoIis5IiwgIjkiKTsKK3No
b3VsZEJlKCJ2YXIgaSA9IDEwOyAraSIsICIxMCIpOworCisvLyBuZWdhdGlvbgorc2hvdWxkQmUo
Ii0xMSIsICItMTEiKTsKK3Nob3VsZEJlKCJ2YXIgaSA9IDEyOyAtaSIsICItMTIiKTsKKwogLy8g
aW5jcmVtZW50CiBzaG91bGRCZSgidmFyIGkgPSAwOyArK2k7IiwgIjEiKTsKIHNob3VsZEJlKCJ2
YXIgaSA9IDA7ICsraTsgaSIsICIxIik7CkBAIC0yNyw2ICszNSw4IEBAIHNob3VsZEJlKCJ2YXIg
aSA9IHRydWU7IGktLTsgaSIsICIwIik7CiAvLyBiaXR3aXNlIG9wZXJhdG9ycwogc2hvdWxkQmUo
In4wIiwgIi0xIik7CiBzaG91bGRCZSgifjEiLCAiLTIiKTsKK3Nob3VsZEJlKCJ+TmFOIiwgIi0x
Iik7CitzaG91bGRCZSgifkluZmluaXR5IiwgIi0xIik7CiBzaG91bGRCZSgifk1hdGgucG93KDIs
IDMzKSIsICItMSIpOyAvLyAzMiBiaXQgb3ZlcmZsb3cKIHNob3VsZEJlKCJ+KE1hdGgucG93KDIs
IDMyKSArIE1hdGgucG93KDIsIDMxKSArIDIpIiwKICAgICAgICAgICIyMTQ3NDgzNjQ1Iik7IC8v
IGEgc2lnbmVkbmVzcyBpc3N1ZQpAQCAtNDQsNiArNTQsMjEgQEAgc2hvdWxkQmUoIi04ID4+IDI0
IiwgIi0xIik7CiBzaG91bGRCZSgiOCA+Pj4gMiIsICIyIik7CiBzaG91bGRCZSgiLTggPj4+IDI0
IiwgIjI1NSIpOwogc2hvdWxkQmUoIigtMjIwMDAwMDAwMCA+PiAxKSA8PCAxIiwgIjIwOTQ5Njcy
OTYiKTsKK3Nob3VsZEJlKCJJbmZpbml0eSA+PiAxIiwgIjAiKTsKK3Nob3VsZEJlKCJJbmZpbml0
eSA8PCAxIiwgIjAiKTsKK3Nob3VsZEJlKCJJbmZpbml0eSA+Pj4gMSIsICIwIik7CitzaG91bGRC
ZSgiTmFOID4+IDEiLCAiMCIpOworc2hvdWxkQmUoIk5hTiA8PCAxIiwgIjAiKTsKK3Nob3VsZEJl
KCJOYU4gPj4+IDEiLCAiMCIpOworc2hvdWxkQmUoIjguMSA+PiAxIiwgIjQiKTsKK3Nob3VsZEJl
KCI4LjEgPDwgMSIsICIxNiIpOworc2hvdWxkQmUoIjguMSA+Pj4gMSIsICI0Iik7CitzaG91bGRC
ZSgiOC45ID4+IDEiLCAiNCIpOworc2hvdWxkQmUoIjguOSA8PCAxIiwgIjE2Iik7CitzaG91bGRC
ZSgiOC45ID4+PiAxIiwgIjQiKTsKK3Nob3VsZEJlKCJNYXRoLnBvdygyLCAzMikgPj4gMSIsICIw
Iik7CitzaG91bGRCZSgiTWF0aC5wb3coMiwgMzIpIDw8IDEiLCAiMCIpOworc2hvdWxkQmUoIk1h
dGgucG93KDIsIDMyKSA+Pj4gMSIsICIwIik7CiAKIC8vIGFkZGl0aW9uCiBzaG91bGRCZSgiMSsy
IiwgIjMiKTsKQEAgLTE4MCw2ICsyMDUsOCBAQCBzaG91bGRCZSgiTmFOID09PSBOYU4iLCAiZmFs
c2UiKTsKIHNob3VsZEJlKCIwLjAgPT09IDAiLCAidHJ1ZSIpOwogc2hvdWxkQmUoIidhYmMnID09
PSAnYWJjJyIsICJ0cnVlIik7CiBzaG91bGRCZSgiJ2EnID09PSAneCciLCAiZmFsc2UiKTsKK3No
b3VsZEJlKCIxID09PSAnMSciLCAiZmFsc2UiKTsKK3Nob3VsZEJlKCInMScgPT09IDEiLCAiZmFs
c2UiKTsKIHNob3VsZEJlKCJ0cnVlID09PSB0cnVlIiwgInRydWUiKTsKIHNob3VsZEJlKCJmYWxz
ZSA9PT0gZmFsc2UiLCAidHJ1ZSIpOwogc2hvdWxkQmUoInRydWUgPT09IGZhbHNlIiwgImZhbHNl
Iik7CkBAIC0yMTYsNCArMjQzLDQgQEAgc2hvdWxkQmVUcnVlKCInYScgaW4geyBhOjEsIGI6MiB9
Iik7CiBzaG91bGRCZSgiKG5ldyBCb29sZWFuKCkpIGluc3RhbmNlb2YgQm9vbGVhbiIsICJ0cnVl
Iik7CiBzaG91bGRCZSgiKG5ldyBCb29sZWFuKCkpIGluc3RhbmNlb2YgTnVtYmVyIiwgImZhbHNl
Iik7CiAKLXN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWUKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL3Njb3BlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9zY29wZS5q
cwkocmV2aXNpb24gMjQ0MjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMv
c2NvcGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTYsNCArNiwzMSBAQCB3aXRoIChiKSB7CiB9CiAK
IHNob3VsZEJlKCJmKDIpIiwgIjIyIik7Ci1zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlCisKK3Zh
ciBPQkpFQ1QgPSBuZXcgTXlPYmplY3QoICJoZWxsbyIgKTsKK2Z1bmN0aW9uIE15T2JqZWN0KHZh
bHVlKSB7CisgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIHRoaXMudG9TdHJpbmcgPSBuZXcg
RnVuY3Rpb24oICJyZXR1cm4gdGhpcy52YWx1ZSsnJyIgKTsKKyAgICByZXR1cm4gdGhpczsKK30K
K3Nob3VsZEJlKCJPQkpFQ1QudG9TdHJpbmcoKSIsICInaGVsbG8nIik7Cit2YXIgczsKK3dpdGgg
KE9CSkVDVCkgeworICAgIHMgPSB0b1N0cmluZygpOworfQorc2hvdWxkQmUoInMiLCAiJ2hlbGxv
JyIpOworCisKKy8vIE1ha2Ugc3VyZSB0aGF0IGZvciAuLi4gaW4gcmVldmFsdWF0ZXMgdGhlIHNj
b3BpbmcgZXZlcnkgdGltZSEKK1AgPSB7IGZvbyA6IDEsIGJhciA6IDIsIGJheiA6IDMgfQorCitm
dW5jdGlvbiB0ZXN0Rm9ySW4oKSB7CisgICBmb3IgKGcgaW4gUCkgeworICAgICAgICBldmFsKCJ2
YXIgZzsiKSAvL0NoYW5nZSB0aGUgc2NvcGUgb2YgZyBoYWxmLXdheXMgdGhyb3VnaCB0aGUgbG9v
cAorICAgfQorfQorCit0ZXN0Rm9ySW4oKTsKK3Nob3VsZEJlKCJnIiwgIidmb28nIik7IC8vQmVm
b3JlIHRoZSBldmFsLCBnIHdhcyBpbiBvdXRlciBzY29wZSwgYnV0IG5vdCBhZnRlciEKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16215</attachid>
            <date>2007-09-07 07:05:11 -0700</date>
            <delta_ts>2007-10-19 10:57:47 -0700</delta_ts>
            <desc>Revised proposed patch</desc>
            <filename>scope.diff</filename>
            <type>text/plain</type>
            <size>305897</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDEwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEwIEBACisyMDA3LTA5LTA3ICBDYW1lcm9u
IFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wb3J0cyB0aGUgdmFyaWFi
bGUgbG9va3VwIG9wdGltaXphdGlvbnMgdGhhdCB3ZXJlCisgICAgICAgIGltcGxlbWVudGVkIGlu
IEtKUywgd2hpbGUgYmVpbmcgY2FyZWZ1bCB0byBub3QgdW5kbyBhbnkgYnVnIGZpeGVzCisgICAg
ICAgIGFuZCBvcHRpbWl6YXRpb25zIGFkZGVkIHRvIEphdmFTY3JpcHRDb3JlLiBUaGUgcmVsZXZh
bnQgcmV2aXNpb25zCisgICAgICAgIGluIEtERSBhcmUKKworICAgICAgICAgICAgNjQ3MDA1Cisg
ICAgICAgICAgICA2NDcxNDAKKyAgICAgICAgICAgIDY0ODQyNAorICAgICAgICAgICAgNjUxMTg1
CisgICAgICAgICAgICA2NjIyNjMKKyAgICAgICAgICAgIDY2ODUzOQorICAgICAgICAgICAgNjcw
NTQ3CisgICAgICAgICAgICA2NzQzMTQKKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGtqcy9BbGxJbk9uZUZpbGUuY3BwOgorICAgICAgICAqIGtqcy9Db21tb25JZGVudGlm
aWVycy5oOgorICAgICAgICAoV1RGOjpJZGVudEhhc2g6Omhhc2gpOgorICAgICAgICAoV1RGOjpJ
ZGVudEhhc2g6OmVxdWFsKToKKyAgICAgICAgKFdURjo6KToKKyAgICAgICAgKiBranMvQ29udGV4
dC5jcHA6CisgICAgICAgIChLSlM6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAqIGtqcy9Q
YXJzZXIuY3BwOgorICAgICAgICAoS0pTOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBranMv
UGFyc2VyLmg6CisgICAgICAgICoga2pzL2FycmF5X29iamVjdC5jcHA6CisgICAgICAgIChBcnJh
eUluc3RhbmNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAqIGtqcy9jb21wbGV0aW9u
Lmg6CisgICAgICAgIChLSlM6OkNvbXBsZXRpb246OkNvbXBsZXRpb24pOgorICAgICAgICAoS0pT
OjpDb21wbGV0aW9uOjp0YXJnZXQpOgorICAgICAgICAqIGtqcy9jb250ZXh0Lmg6CisgICAgICAg
IChLSlM6OkNvbnRleHQ6OnBvcFNjb3BlKToKKyAgICAgICAgKiBranMvZnVuY3Rpb24uY3BwOgor
ICAgICAgICAoS0pTOjpMb29rdXBPcHRpbWl6ZXI6Okxvb2t1cE9wdGltaXplcik6CisgICAgICAg
IChLSlM6Okxvb2t1cE9wdGltaXplcjo6b3B0aW1pemUpOgorICAgICAgICAoS0pTOjpMb29rdXBP
cHRpbWl6ZXI6Oik6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpjYWxsQXNGdW5jdGlvbik6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uSW1wOjpwYXNzSW5QYXJhbWV0ZXJzKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25JbXA6OmdldFBhcmFtZXRlck5hbWUpOgorICAgICAgICAoS0pTOjpBY3Rp
dmF0aW9uSW1wOjpBY3RpdmF0aW9uSW1wKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6
c2V0dXBMb2NhbHMpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpzZXR1cEZ1bmN0aW9u
TG9jYWxzKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6YXJndW1lbnRzR2V0dGVyKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoS0pTOjpB
Y3RpdmF0aW9uSW1wOjpwdXQpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjptYXJrKToK
KyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6fkFjdGl2YXRpb25JbXApOgorICAgICAgICAo
S0pTOjpBY3RpdmF0aW9uSW1wOjpjcmVhdGVBcmd1bWVudHNPYmplY3QpOgorICAgICAgICAoS0pT
OjpHbG9iYWxGdW5jSW1wOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICoga2pzL2Z1bmN0aW9u
Lmg6CisgICAgICAgIChLSlM6Oik6CisgICAgICAgIChLSlM6OkFjdGl2YXRpb25JbXA6OnB1dExv
Y2FsKToKKyAgICAgICAgKEtKUzo6QWN0aXZhdGlvbkltcDo6aW5pdExvY2FsKToKKyAgICAgICAg
KEtKUzo6QWN0aXZhdGlvbkltcDo6cHV0TG9jYWxDaGVja2VkKToKKyAgICAgICAgKEtKUzo6QWN0
aXZhdGlvbkltcDo6Z2V0TG9jYWxEaXJlY3QpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1w
Ojppc0xvY2FsUmVhZE9ubHkpOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjppc0FjdGl2
YXRpb24pOgorICAgICAgICAoS0pTOjpBY3RpdmF0aW9uSW1wOjpudW1Mb2NhbHMpOgorICAgICAg
ICAoS0pTOjpBY3RpdmF0aW9uSW1wOjp2YWxpZExvY2FsKToKKyAgICAgICAgKiBranMvZ3JhbW1h
ci55OgorICAgICAgICAqIGtqcy9pZGVudGlmaWVyLmg6CisgICAgICAgICoga2pzL2ludGVybmFs
LmNwcDoKKyAgICAgICAgKiBranMvaW50ZXJuYWwuaDoKKyAgICAgICAgKiBranMvaW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoS0pTOjpJbnRlcnByZXRlcjo6aW5pdEdsb2JhbE9iamVjdCk6Cisg
ICAgICAgIChLSlM6OkludGVycHJldGVyOjpldmFsdWF0ZSk6CisgICAgICAgICoga2pzL2xpc3Qu
Y3BwOgorICAgICAgICAoS0pTOjpMaXN0OjpMaXN0KToKKyAgICAgICAgKiBranMvbGlzdC5oOgor
ICAgICAgICAqIGtqcy9ub2Rlcy5jcHA6CisgICAgICAgIChLSlM6Ok5vZGU6OmNyZWF0ZUVycm9y
Tm9kZSk6CisgICAgICAgIChLSlM6Ok5vZGVWaXNpdG9yOjp+Tm9kZVZpc2l0b3IpOgorICAgICAg
ICAoS0pTOjopOgorICAgICAgICAoS0pTOjpGdW5jRGVjbFZpc2l0b3I6OkZ1bmNEZWNsVmlzaXRv
cik6CisgICAgICAgIChLSlM6OkZ1bmNEZWNsVmlzaXRvcjo6KToKKyAgICAgICAgKEtKUzo6Tm9k
ZTo6cHJvY2Vzc0RlY2xzKToKKyAgICAgICAgKEtKUzo6Tm9kZTo6cHJvY2Vzc1ZhckRlY2wpOgor
ICAgICAgICAoS0pTOjpOb2RlOjpwcm9jZXNzRnVuY0RlY2wpOgorICAgICAgICAoS0pTOjpOb2Rl
OjpvcHRpbWl6ZUxvY2FsQWNjZXNzKToKKyAgICAgICAgKEtKUzo6Tm9kZVZpc2l0b3I6OnZpc2l0
KToKKyAgICAgICAgKEtKUzo6VmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pT
OjpWYXJBY2Nlc3NOb2RlOjpldmFsdWF0ZVJlZmVyZW5jZSk6CisgICAgICAgIChLSlM6OlZhckFj
Y2Vzc05vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MpOgorICAgICAgICAoS0pTOjpWYXJBY2Nlc3NO
b2RlOjpsb2NhbElEKToKKyAgICAgICAgKEtKUzo6TG9jYWxWYXJBY2Nlc3NOb2RlOjpldmFsdWF0
ZSk6CisgICAgICAgIChLSlM6OkxvY2FsVmFyQWNjZXNzTm9kZTo6ZXZhbHVhdGVSZWZlcmVuY2Up
OgorICAgICAgICAoS0pTOjpOb25Mb2NhbFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlKToKKyAgICAg
ICAgKEtKUzo6Tm9uTG9jYWxWYXJBY2Nlc3NOb2RlOjpldmFsdWF0ZVJlZmVyZW5jZSk6CisgICAg
ICAgIChLSlM6Okdyb3VwTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6RWxlbWVu
dE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkFycmF5Tm9kZTo6cmVjdXJzZVZp
c2l0KToKKyAgICAgICAgKEtKUzo6T2JqZWN0TGl0ZXJhbE5vZGU6OnJlY3Vyc2VWaXNpdCk6Cisg
ICAgICAgIChLSlM6OlByb3BlcnR5TGlzdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChL
SlM6OlByb3BlcnR5Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QnJhY2tldEFj
Y2Vzc29yTm9kZTo6ZXZhbHVhdGVSZWZlcmVuY2UpOgorICAgICAgICAoS0pTOjpCcmFja2V0QWNj
ZXNzb3JOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpEb3RBY2Nlc3Nvck5vZGU6
OmV2YWx1YXRlUmVmZXJlbmNlKToKKyAgICAgICAgKEtKUzo6RG90QWNjZXNzb3JOb2RlOjpyZWN1
cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpBcmd1bWVudExpc3ROb2RlOjpyZWN1cnNlVmlzaXQp
OgorICAgICAgICAoS0pTOjpBcmd1bWVudHNOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAo
S0pTOjpOZXdFeHByTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6bm90QW5PYmpl
Y3RNZXNzYWdlKToKKyAgICAgICAgKEtKUzo6bm90Q2FsbGFibGVNZXNzYWdlKToKKyAgICAgICAg
KEtKUzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OkZ1
bmN0aW9uQ2FsbFZhbHVlTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6RnVuY3Rp
b25DYWxsUmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNh
bGxSZWZlcmVuY2VOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkNh
bGxCcmFja2V0Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxs
RG90Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6TG9jYWxQb3N0Zml4Tm9kZTo6
KToKKyAgICAgICAgKEtKUzo6UG9zdGZpeE5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6
UG9zdGZpeE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2RlOjpv
cHRpbWl6ZUxvY2FsQWNjZXNzKToKKyAgICAgICAgKEtKUzo6UG9zdGZpeEVycm9yTm9kZTo6ZXZh
bHVhdGUpOgorICAgICAgICAoS0pTOjpEZWxldGVSZWZlcmVuY2VOb2RlOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChLSlM6OkRlbGV0ZVJlZmVyZW5jZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAg
IChLSlM6OkRlbGV0ZVZhbHVlTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Vm9p
ZE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlR5cGVPZlJlZmVyZW5jZU5vZGU6
OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6VHlwZU9mUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZp
c2l0KToKKyAgICAgICAgKEtKUzo6VHlwZU9mVmFsdWVOb2RlOjpldmFsdWF0ZSk6CisgICAgICAg
IChLSlM6OlR5cGVPZlZhbHVlTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6TG9j
YWxQcmVmaXhOb2RlOjopOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjpldmFsdWF0ZSk6Cisg
ICAgICAgIChLSlM6OlByZWZpeE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OlBy
ZWZpeE5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MpOgorICAgICAgICAoS0pTOjpQcmVmaXhFcnJv
ck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6VW5hcnlQbHVzTm9kZTo6cmVjdXJzZVZp
c2l0KToKKyAgICAgICAgKEtKUzo6TmVnYXRlTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAg
KEtKUzo6Qml0d2lzZU5vdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkxvZ2lj
YWxOb3ROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpNdWx0Tm9kZTo6cmVjdXJz
ZVZpc2l0KToKKyAgICAgICAgKEtKUzo6QWRkTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAg
KEtKUzo6U2hpZnROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpSZWxhdGlvbmFs
Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6RXF1YWxOb2RlOjpyZWN1cnNlVmlz
aXQpOgorICAgICAgICAoS0pTOjpCaXRPcGVyTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAg
KEtKUzo6QmluYXJ5TG9naWNhbE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkNv
bmRpdGlvbmFsTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6TG9jYWxBc3NpZ25O
b2RlOjopOgorICAgICAgICAoS0pTOjpBc3NpZ25Ob2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChL
SlM6OkFzc2lnbk5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkFzc2lnbk5vZGU6
Om9wdGltaXplTG9jYWxBY2Nlc3MpOgorICAgICAgICAoS0pTOjpBc3NpZ25Eb3ROb2RlOjpldmFs
dWF0ZSk6CisgICAgICAgIChLSlM6OkFzc2lnbkRvdE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAg
ICAgIChLSlM6OkFzc2lnbkJyYWNrZXROb2RlOjpldmFsdWF0ZSk6CisgICAgICAgIChLSlM6OkFz
c2lnbkJyYWNrZXROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpBc3NpZ25FcnJv
ck5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6Q29tbWFOb2RlOjpyZWN1cnNlVmlzaXQp
OgorICAgICAgICAoS0pTOjpBc3NpZ25FeHByTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAg
KEtKUzo6VmFyRGVjbE5vZGU6OmV2YWx1YXRlKToKKyAgICAgICAgKEtKUzo6VmFyRGVjbE5vZGU6
OnByb2Nlc3NWYXJEZWNsKToKKyAgICAgICAgKEtKUzo6VmFyRGVjbE5vZGU6OnJlY3Vyc2VWaXNp
dCk6CisgICAgICAgIChLSlM6OlZhckRlY2xMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAg
ICAgKEtKUzo6VmFyU3RhdGVtZW50Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6
VmFyU3RhdGVtZW50Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2Vzcyk6CisgICAgICAgIChLSlM6OlN0
YXRpY1ZhclN0YXRlbWVudE5vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pTOjpTdGF0aWNWYXJT
dGF0ZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpCbG9ja05vZGU6OmV4
ZWN1dGUpOgorICAgICAgICAoS0pTOjpCbG9ja05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAg
IChLSlM6OkV4cHJTdGF0ZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpJ
Zk5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkRvV2hpbGVOb2RlOjpleGVjdXRl
KToKKyAgICAgICAgKEtKUzo6RG9XaGlsZU5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChL
SlM6OldoaWxlTm9kZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OldoaWxlTm9kZTo6cmVjdXJz
ZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Rm9yTm9kZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6
OkZvck5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkZvckluTm9kZTo6Rm9ySW5O
b2RlKToKKyAgICAgICAgKEtKUzo6Rm9ySW5Ob2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6
Rm9ySW5Ob2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDb250aW51ZU5vZGU6OmV4
ZWN1dGUpOgorICAgICAgICAoS0pTOjpCcmVha05vZGU6OmV4ZWN1dGUpOgorICAgICAgICAoS0pT
OjpSZXR1cm5Ob2RlOjpleGVjdXRlKToKKyAgICAgICAgKEtKUzo6UmV0dXJuTm9kZTo6cmVjdXJz
ZVZpc2l0KToKKyAgICAgICAgKEtKUzo6V2l0aE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAg
IChLSlM6OkNhc2VDbGF1c2VOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpDbGF1
c2VMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6Q2FzZUJsb2NrTm9kZTo6
cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6U3dpdGNoTm9kZTo6ZXhlY3V0ZSk6CisgICAg
ICAgIChLSlM6OlN3aXRjaE5vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAgICAgIChLSlM6OkxhYmVs
Tm9kZTo6ZXhlY3V0ZSk6CisgICAgICAgIChLSlM6OkxhYmVsTm9kZTo6cmVjdXJzZVZpc2l0KToK
KyAgICAgICAgKEtKUzo6VGhyb3dOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpU
cnlOb2RlOjpyZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpUcnlOb2RlOjpyZWN1cnNlVmlz
aXROb25DYXRjaCk6CisgICAgICAgIChLSlM6OlBhcmFtZXRlck5vZGU6OnJlY3Vyc2VWaXNpdCk6
CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUpOgorICAg
ICAgICAoS0pTOjpGdW5jdGlvbkJvZHlOb2RlOjphZGRWYXJEZWNsKToKKyAgICAgICAgKEtKUzo6
RnVuY3Rpb25Cb2R5Tm9kZTo6YWRkRnVuY0RlY2wpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkJv
ZHlOb2RlOjphZGRTeW1ib2wpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkJvZHlOb2RlOjpsb29r
dXBTeW1ib2xJRCk6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6OmFkZFBhcmFtKToK
KyAgICAgICAgKEtKUzo6RnVuY0RlY2xOb2RlOjpwcm9jZXNzRnVuY0RlY2wpOgorICAgICAgICAo
S0pTOjpGdW5jRGVjbE5vZGU6Om1ha2VGdW5jdGlvbk9iamVjdCk6CisgICAgICAgIChLSlM6OkZ1
bmNEZWNsTm9kZTo6cmVjdXJzZVZpc2l0KToKKyAgICAgICAgKEtKUzo6RnVuY0V4cHJOb2RlOjpy
ZWN1cnNlVmlzaXQpOgorICAgICAgICAoS0pTOjpTb3VyY2VFbGVtZW50c05vZGU6OmV4ZWN1dGUp
OgorICAgICAgICAoS0pTOjpTb3VyY2VFbGVtZW50c05vZGU6OnJlY3Vyc2VWaXNpdCk6CisgICAg
ICAgIChLSlM6OkVycm9yTm9kZTo6ZXhlY3V0ZSk6CisgICAgICAgICoga2pzL25vZGVzLmg6Cisg
ICAgICAgIChLSlM6Ok5vZGU6Oik6CisgICAgICAgIChLSlM6Ok5vZGU6OnJlY3Vyc2VWaXNpdExp
bmspOgorICAgICAgICAoS0pTOjpMb2NhdGlvbk5vZGU6Oik6CisgICAgICAgIChLSlM6OlZhckFj
Y2Vzc05vZGU6Oik6CisgICAgICAgIChLSlM6OkxvY2FsVmFyQWNjZXNzTm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6Tm9uTG9jYWxWYXJBY2Nlc3NOb2RlOjopOgorICAgICAgICAoS0pTOjpCcmFja2V0
QWNjZXNzb3JOb2RlOjopOgorICAgICAgICAoS0pTOjpEb3RBY2Nlc3Nvck5vZGU6Oik6CisgICAg
ICAgIChLSlM6OkFyZ3VtZW50c05vZGU6Oik6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbFJl
ZmVyZW5jZU5vZGU6Oik6CisgICAgICAgIChLSlM6OlBvc3RmaXhOb2RlOjopOgorICAgICAgICAo
S0pTOjpEZWxldGVSZWZlcmVuY2VOb2RlOjopOgorICAgICAgICAoS0pTOjpUeXBlT2ZSZWZlcmVu
Y2VOb2RlOjopOgorICAgICAgICAoS0pTOjpQcmVmaXhOb2RlOjopOgorICAgICAgICAoS0pTOjpB
c3NpZ25Ob2RlOjopOgorICAgICAgICAoS0pTOjpBc3NpZ25CcmFja2V0Tm9kZTo6KToKKyAgICAg
ICAgKEtKUzo6QXNzaWduRG90Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6QXNzaWduRXJyb3JOb2Rl
OjopOgorICAgICAgICAoS0pTOjpBc3NpZ25FeHByTm9kZTo6KToKKyAgICAgICAgKEtKUzo6KToK
KyAgICAgICAgKEtKUzo6VmFyU3RhdGVtZW50Tm9kZTo6aXNWYXJTdGF0ZW1lbnQpOgorICAgICAg
ICAoS0pTOjpEb1doaWxlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6V2hpbGVOb2RlOjopOgorICAg
ICAgICAoS0pTOjpGb3JOb2RlOjopOgorICAgICAgICAoS0pTOjpGb3JJbk5vZGU6Oik6CisgICAg
ICAgIChLSlM6OkNvbnRpbnVlTm9kZTo6KToKKyAgICAgICAgKEtKUzo6QnJlYWtOb2RlOjopOgor
ICAgICAgICAoS0pTOjpXaXRoTm9kZTo6KToKKyAgICAgICAgKEtKUzo6VHJ5Tm9kZTo6KToKKyAg
ICAgICAgKEtKUzo6UGFyYW1ldGVyTm9kZTo6KToKKyAgICAgICAgKEtKUzo6RnVuY3Rpb25Cb2R5
Tm9kZTo6U3ltYm9sOjpTeW1ib2wpOgorICAgICAgICAoS0pTOjpGdW5jdGlvbkJvZHlOb2RlOjpQ
YXJhbWV0ZXI6OlBhcmFtZXRlcik6CisgICAgICAgIChLSlM6OkZ1bmN0aW9uQm9keU5vZGU6Oik6
CisgICAgICAgIChLSlM6OkZ1bmNFeHByTm9kZTo6KToKKyAgICAgICAgKEtKUzo6RnVuY0RlY2xO
b2RlOjopOgorICAgICAgICAoS0pTOjpDbGF1c2VMaXN0Tm9kZTo6KToKKyAgICAgICAgKEtKUzo6
U3dpdGNoTm9kZTo6KToKKyAgICAgICAgKEtKUzo6RXJyb3JOb2RlOjopOgorICAgICAgICAqIGtq
cy9ub2RlczJzdHJpbmcuY3BwOgorICAgICAgICAoU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KToK
KyAgICAgICAgKFZhckFjY2Vzc05vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKEZ1bmN0aW9uQ2Fs
bFJlZmVyZW5jZU5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFBhcmVuRG90
Tm9kZTo6c3RyZWFtVG8pOgorICAgICAgICAoUG9zdGZpeE5vZGU6OnN0cmVhbVRvKToKKyAgICAg
ICAgKERlbGV0ZVJlZmVyZW5jZU5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKFR5cGVPZlJlZmVy
ZW5jZU5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKFByZWZpeE5vZGU6OnN0cmVhbVRvKToKKyAg
ICAgICAgKEFzc2lnbk5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKFN0YXRpY1ZhclN0YXRlbWVu
dE5vZGU6OnN0cmVhbVRvKToKKyAgICAgICAgKEVycm9yTm9kZTo6c3RyZWFtVG8pOgorICAgICAg
ICAqIGtqcy9vYmplY3QuY3BwOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6Y2xhc3NOYW1lKToK
KyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmRlZmF1bHRWYWx1ZSk6CisgICAgICAgIChLSlM6OkVy
cm9yOjpjcmVhdGUpOgorICAgICAgICAqIGtqcy9vYmplY3QuaDoKKyAgICAgICAgKEtKUzo6R2V0
dGVyU2V0dGVySW1wOjpHZXR0ZXJTZXR0ZXJJbXApOgorICAgICAgICAoS0pTOjpHZXR0ZXJTZXR0
ZXJJbXA6OmlzTG9jYWxJbmplY3RlZCk6CisgICAgICAgIChLSlM6OkdldHRlclNldHRlckltcDo6
c2V0TG9jYWxJbmplY3RlZCk6CisgICAgICAgIChLSlM6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2Nh
dGlvbik6CisgICAgICAgIChLSlM6OkpTT2JqZWN0Ojppc0FjdGl2YXRpb24pOgorICAgICAgICAo
S0pTOjpKU09iamVjdDo6aXNMb2NhbEluamVjdGVkKToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6
OnNldExvY2FsSW5qZWN0ZWQpOgorICAgICAgICAoS0pTOjpKU09iamVjdDo6Z2V0UHJvcGVydHlT
bG90KToKKyAgICAgICAgKEtKUzo6SlNPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAg
ICAgICoga2pzL3Byb3BlcnR5X21hcC5jcHA6CisgICAgICAgIChLSlM6OlByb3BlcnR5TWFwOjpn
ZXRMb2NhdGlvbik6CisgICAgICAgIChLSlM6OlByb3BlcnR5TWFwOjpwdXQpOgorICAgICAgICAq
IGtqcy9wcm9wZXJ0eV9tYXAuaDoKKyAgICAgICAgKEtKUzo6UHJvcGVydHlNYXA6OmlzTG9jYWxJ
bmplY3RlZCk6CisgICAgICAgIChLSlM6OlByb3BlcnR5TWFwOjpzZXRMb2NhbEluamVjdGVkKToK
KyAgICAgICAgKEtKUzo6UHJvcGVydHlNYXA6OlByb3BlcnR5TWFwKToKKyAgICAgICAgKiBranMv
cHJvcGVydHlfc2xvdC5oOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6Oik6CisgICAgICAg
IChLSlM6OlByb3BlcnR5U2xvdDo6c2V0VmFsdWVTbG90KToKKyAgICAgICAgKEtKUzo6UHJvcGVy
dHlTbG90OjpzZXRQb3RlbnRpYWxseVdyaXRlYWJsZSk6CisgICAgICAgIChLSlM6OlByb3BlcnR5
U2xvdDo6c2V0UmVhZE9ubHkpOgorICAgICAgICAoS0pTOjpQcm9wZXJ0eVNsb3Q6OmdldERpcmVj
dFdyaXRlTG9jYXRpb24pOgorICAgICAgICAqIGtqcy9yZWZlcmVuY2UuaDogQWRkZWQuCisgICAg
ICAgIChLSlM6OlJlZmVyZW5jZTo6UmVmZXJlbmNlKToKKyAgICAgICAgKEtKUzo6UmVmZXJlbmNl
OjpyZWFkKToKKyAgICAgICAgKEtKUzo6UmVmZXJlbmNlOjp3cml0ZSk6CisgICAgICAgIChLSlM6
OlJlZmVyZW5jZTo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAqIGtqcy9zZW1hbnRpY19jaGVj
a2VyLmNwcDogQWRkZWQuCisgICAgICAgIChLSlM6OlNlbWFudGljQ2hlY2tlcjo6ZW50ZXJTZW1h
bnRpY0NvbnRleHQpOgorICAgICAgICAoS0pTOjpTZW1hbnRpY0NoZWNrZXI6OmV4aXRTZW1hbnRp
Y0NvbnRleHQpOgorICAgICAgICAoS0pTOjpTZW1hbnRpY0NoZWNrZXI6OnZpc2l0KToKKyAgICAg
ICAgKEtKUzo6U2VtYW50aWNDaGVja2VyOjpjaGVja1NlbWFudGljcyk6CisgICAgICAgIChLSlM6
Ok5vZGU6OmNoZWNrU2VtYW50aWNzKToKKyAgICAgICAgKEtKUzo6U3RhdGVtZW50Tm9kZTo6Y2hl
Y2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpMYWJlbE5vZGU6OmNoZWNrU2VtYW50aWNzKToK
KyAgICAgICAgKEtKUzo6RnVuY0RlY2xOb2RlOjpjaGVja1NlbWFudGljcyk6CisgICAgICAgIChL
SlM6OkZ1bmNFeHByTm9kZTo6Y2hlY2tTZW1hbnRpY3MpOgorICAgICAgICAoS0pTOjpDb250aW51
ZU5vZGU6OmNoZWNrU2VtYW50aWNzKToKKyAgICAgICAgKEtKUzo6QnJlYWtOb2RlOjpjaGVja1Nl
bWFudGljcyk6CisgICAgICAgICoga2pzL3NlbWFudGljX2NoZWNrZXIuaDogQWRkZWQuCisgICAg
ICAgIChLSlM6OlNlbWFudGljQ29udGV4dDo6U2VtYW50aWNDb250ZXh0KToKKyAgICAgICAgKEtK
Uzo6U2VtYW50aWNDaGVja2VyOjpzZW1hbnRpY0NvbnRleHQpOgorICAgICAgICAqIGtqcy92YWx1
ZS5oOgorICAgICAgICAqIHRlc3RzL21vemlsbGEvZXhwZWN0ZWQuaHRtbDoKKwogMjAwNy0wOS0w
NSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluLgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gMjUz
ODUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMSw3ICsxMzEsNyBAQCBfX1pOM0tKUzExSW50ZXJwcmV0ZXJEMkV2CiBfX1pOM0tKUzEx
SlNJbW1lZGlhdGU0dHlwZUVQS05TXzdKU1ZhbHVlRQogX19aTjNLSlMxMUpTSW1tZWRpYXRlOHRv
T2JqZWN0RVBLTlNfN0pTVmFsdWVFUE5TXzlFeGVjU3RhdGVFCiBfX1pOM0tKUzExSlNJbW1lZGlh
dGU4dG9TdHJpbmdFUEtOU183SlNWYWx1ZUUKLV9fWk4zS0pTMTFQcm9wZXJ0eU1hcDExZ2V0TG9j
YXRpb25FUktOU18xMElkZW50aWZpZXJFCitfX1pOM0tKUzExUHJvcGVydHlNYXAxMWdldExvY2F0
aW9uRVJLTlNfMTBJZGVudGlmaWVyRVJiCiBfX1pOM0tKUzExUHJvcGVydHlNYXA1Y2xlYXJFdgog
X19aTjNLSlMxMVByb3BlcnR5TWFwN3Jlc3RvcmVFUktOU18xNVNhdmVkUHJvcGVydGllc0UKIF9f
Wk4zS0pTMTFQcm9wZXJ0eU1hcEQxRXYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUz
ODUpCisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsNiArNTQ0LDkgQEAKIAkJNzA3M0JFM0QwNTgx
MjkxRTAwNUVFMkM5IC8qIHJ1bnRpbWVfYXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gcnVudGltZV9hcnJheS5oOyBwYXRoID0gYmluZGlu
Z3MvcnVudGltZV9hcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IH07CiAJCTcwQjE2QTI2MDU2OUExMDkwMERCNzU2RCAvKiBydW50aW1lX29iamVjdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBydW50
aW1lX29iamVjdC5jcHA7IHBhdGggPSBiaW5kaW5ncy9ydW50aW1lX29iamVjdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNzBCMTZBMjcwNTY5QTEwOTAw
REI3NTZEIC8qIHJ1bnRpbWVfb2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHJ1bnRpbWVfb2JqZWN0Lmg7IHBhdGggPSBiaW5kaW5ncy9y
dW50aW1lX29iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07
CisJCTdFM0QyQTFFMEM2MkVENEQwMEVDMDY5MyAvKiByZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3RTNEMkExRjBDNjJFRDREMDBFQzA2OTMgLyogc2VtYW50aWNfY2hlY2tlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gc2VtYW50aWNfY2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdFM0QyQTIwMEM2MkVENEQwMEVDMDY5
MyAvKiBzZW1hbnRpY19jaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBzZW1hbnRpY19jaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QUJG
MURFMDcwQjYyOEMwMEEzQUMwNSAvKiBucHJ1bnRpbWVfaW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IG5wcnVudGltZV9pbXBsLmg7IHBhdGgg
PSBiaW5kaW5ncy9ucHJ1bnRpbWVfaW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IH07CiAJCTkzMDIwNDNBMEI3OTA3NTAwMDBDNjExNSAvKiBGYXN0TWFsbG9jUENS
RS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0TWFsbG9jUENS
RS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMDNGNTY3MDk5MTE4RkEwMEFE
NzFCOCAvKiBPd25QdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3duUHRy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjQsNyArNTY3LDcgQEAKIAkJOTMz
QTM0OUQwMzhBRTgwRjAwODYzNUNFIC8qIGlkZW50aWZpZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBpZGVudGlmaWVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk5MzVBRjQ2OTA5RTlEOURC
MDBBQ0QxRDggLyogRm9yd2FyZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
b3J3YXJkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNUFGNDZCMDlFOUQ5REIw
MEFDRDFEOCAvKiBVbnVzZWRQYXJhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbnVzZWRQYXJhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MzVGNjlGNjA4
MjQ0RkVBMDAzRDFBNDUgLyogZGZ0YWJsZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJ
bkluZGV4ID0gMDsgcGF0aCA9IGRmdGFibGVzOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk5MzVGNjlGNjA4MjQ0RkVBMDAzRDFBNDUgLyogZGZ0YWJsZXMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgaW5jbHVkZUluSW5kZXggPSAwOyBsYXN0S25vd25GaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IHBhdGggPSBkZnRhYmxlczsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOTM2NEIyNzMwNDVCN0Q2QzAwQTlDQUMx
IC8qIGZwY29uc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBmcGNvbnN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB9OwogCQk5Mzc0RDNBNzAzOEQ5RDc0MDA4NjM1Q0UgLyogc2NvcGVfY2hhaW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzY29wZV9j
aGFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IH07CiAJCTkzNzRE
M0E4MDM4RDlENzQwMDg2MzVDRSAvKiBzY29wZV9jaGFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHNjb3BlX2NoYWluLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwpAQCAtOTQxLDYgKzk0NCw5IEBA
CiAJCTY1NDE3MjAwMDM5RTAxQkEwMDU4QkZFQiAvKiBranMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdFM0QyQTFFMEM2MkVENEQwMEVDMDY5MyAvKiBy
ZWZlcmVuY2UuaCAqLywKKwkJCQk3RTNEMkExRjBDNjJFRDREMDBFQzA2OTMgLyogc2VtYW50aWNf
Y2hlY2tlci5jcHAgKi8sCisJCQkJN0UzRDJBMjAwQzYyRUQ0RDAwRUMwNjkzIC8qIHNlbWFudGlj
X2NoZWNrZXIuaCAqLywKIAkJCQk2NUM3QTE3MTBBOEVBQUNCMDBGQTM3RUEgLyogSlNXcmFwcGVy
T2JqZWN0LmNwcCAqLywKIAkJCQk2NUVBNzM2MjBCQUUzNUQxMDAxQkI1NjAgLyogQ29tbW9uSWRl
bnRpZmllcnMuY3BwICovLAogCQkJCTY1RUE3MzYzMEJBRTM1RDEwMDFCQjU2MCAvKiBDb21tb25J
ZGVudGlmaWVycy5oICovLApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0FsbEluT25lRmlsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0FsbEluT25lRmlsZS5jcHAJKHJl
dmlzaW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0FsbEluT25lRmlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJyZWdleHAuY3BwIgogI2lu
Y2x1ZGUgInJlZ2V4cF9vYmplY3QuY3BwIgogI2luY2x1ZGUgInNjb3BlX2NoYWluLmNwcCIKKyNp
bmNsdWRlICJzZW1hbnRpY19jaGVja2VyLmNwcCIKICNpbmNsdWRlICJzdHJpbmdfb2JqZWN0LmNw
cCIKICNpbmNsdWRlICJ1c3RyaW5nLmNwcCIKICNpbmNsdWRlICJ2YWx1ZS5jcHAiCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMjUzODUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsOCBAQAogCiAjaW5jbHVkZSAiaWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hUcmFpdHMuaD4KIAogLy8gTGlzdCBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRv
IGEgbWFjcm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKIC8vIHdheXMgd2l0aG91
dCByZXBlYXRpbmcgdGhlIGxpc3QuCkBAIC02Miw1ICs2NCwyMyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICB9OwogfSAvLyBuYW1lc3BhY2UgS0pTCiAKKy8vICMjIyBiZXR0ZXIgcGxhY2UgaW4gaWRl
bnRpZmllci5oLiBvbmx5IGhlcmUgYmVjYXVzZSBvZiB0aGUgc2hhcmVkIG51bGwKK25hbWVzcGFj
ZSBXVEYgeworICAgIC8vIFByb3ZpZGUgaGFzaGluZyBvZiBJZGVudGlmaWVycyAtLS0gdXNpbmcg
dGhlIHJlcCBwdHIKKyAgICBzdHJ1Y3QgSWRlbnRIYXNoIHsKKyAgICAgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgS0pTOjpJZGVudGlmaWVyJiBrZXkpIHsKKyAgICAgICAgICAgIHJldHVy
biBQdHJIYXNoPEtKUzo6VVN0cmluZzo6UmVwKj46Omhhc2goa2V5LnVzdHJpbmcoKS5yZXAoKSk7
CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgS0pTOjpJZGVudGlm
aWVyJiBhLCBjb25zdCBLSlM6OklkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAg
IH07CisKKyAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxLSlM6OklkZW50aWZpZXI+
IHsgdHlwZWRlZiBJZGVudEhhc2ggSGFzaDsgfTsKKworICAgIHRlbXBsYXRlPD4gc3RydWN0IEhh
c2hUcmFpdHM8S0pTOjpJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEtKUzo6SWRlbnRp
Zmllcj4geworICAgICAgICBzdGF0aWMgY29uc3QgS0pTOjpJZGVudGlmaWVyJiBkZWxldGVkVmFs
dWUoKSB7IHJldHVybiBLSlM6OkNvbW1vbklkZW50aWZpZXJzOjpzaGFyZWQoKS0+bnVsbElkZW50
aWZpZXI7IH0KKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEtKU19D
T01NT05fSURFTlRJRklFUlNfSAogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvQ29udGV4dC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0NvbnRleHQuY3BwCShyZXZpc2lv
biAyNTM4NSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsMjEgKzM0LDE5IEBAIENvbnRleHQ6OkNvbnRleHQoSlNPYmplY3QqIGdsb2IsIElu
dGVycHIKICAgICAsIG1fY3VycmVudEJvZHkoY3VycmVudEJvZHkpCiAgICAgLCBtX2Z1bmN0aW9u
KGZ1bmMpCiAgICAgLCBtX2FyZ3VtZW50cyhhcmdzKQotICAgICwgbV9pdGVyYXRpb25EZXB0aCgw
KQotICAgICwgbV9zd2l0Y2hEZXB0aCgwKSAKIHsKICAgICBtX2NvZGVUeXBlID0gdHlwZTsKICAg
ICBtX2NhbGxpbmdDb250ZXh0ID0gY2FsbGluZ0NvbjsKICAgICAKICAgICAvLyBjcmVhdGUgYW5k
IGluaXRpYWxpemUgYWN0aXZhdGlvbiBvYmplY3QgKEVDTUEgMTAuMS42KQotICAgIGlmICh0eXBl
ID09IEZ1bmN0aW9uQ29kZSB8fCB0eXBlID09IEFub255bW91c0NvZGUgKSB7CisgICAgaWYgKHR5
cGUgPT0gRnVuY3Rpb25Db2RlKSB7CiAgICAgICAgIG1fYWN0aXZhdGlvbiA9IG5ldyBBY3RpdmF0
aW9uSW1wKGZ1bmMsICphcmdzKTsKICAgICAgICAgbV92YXJpYWJsZSA9IG1fYWN0aXZhdGlvbjsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX2FjdGl2YXRpb24gPSAwOwogICAgICAgICBtX3Zhcmlh
YmxlID0gZ2xvYjsKICAgICB9Ci0gICAgCisKICAgICAvLyBFQ01BIDEwLjIKICAgICBzd2l0Y2go
dHlwZSkgewogICAgIGNhc2UgRXZhbENvZGU6CkBAIC02NCwxNSArNjIsOCBAQCBDb250ZXh0OjpD
b250ZXh0KEpTT2JqZWN0KiBnbG9iLCBJbnRlcnByCiAgICAgICAgIG1fdGhpc1ZhbCA9IHN0YXRp
Y19jYXN0PEpTT2JqZWN0Kj4oZ2xvYik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRnVuY3Rp
b25Db2RlOgotICAgIGNhc2UgQW5vbnltb3VzQ29kZToKLSAgICAgICAgaWYgKHR5cGUgPT0gRnVu
Y3Rpb25Db2RlKSB7Ci0gICAgICAgICAgICBzY29wZSA9IGZ1bmMtPnNjb3BlKCk7Ci0gICAgICAg
ICAgICBzY29wZS5wdXNoKG1fYWN0aXZhdGlvbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBzY29wZS5jbGVhcigpOwotICAgICAgICAgICAgc2NvcGUucHVzaChnbG9iKTsKLSAgICAg
ICAgICAgIHNjb3BlLnB1c2gobV9hY3RpdmF0aW9uKTsKLSAgICAgICAgfQorICAgICAgICBzY29w
ZSA9IGZ1bmMtPnNjb3BlKCk7CisgICAgICAgIHNjb3BlLnB1c2gobV9hY3RpdmF0aW9uKTsKICAg
ICAgICAgbV92YXJpYWJsZSA9IG1fYWN0aXZhdGlvbjsgLy8gVE9ETzogRG9udERlbGV0ZSA/IChF
Q01BIDEwLjIuMykKICAgICAgICAgbV90aGlzVmFsID0gdGhpc1Y7CiAgICAgICAgIGJyZWFrOwpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL1BhcnNlci5jcHAJKHJldmlzaW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lu
Y2x1ZGUgImxleGVyLmgiCiAjaW5jbHVkZSAibm9kZXMuaCIKKyNpbmNsdWRlICJzZW1hbnRpY19j
aGVja2VyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTEwMSw2ICsxMDIsMTAgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUGFyc2Vy
OjpwYXJzZShjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICAvLyBTZW1hbnRpY2Fs
bHkgY2hlY2sgdGhlIHBhcnNlZCBwcm9ncmFtLCBhbmQgZG8gc29tZSBvZiB0aGUgYmluZGluZy4u
CisgICAgU2VtYW50aWNDaGVja2VyIHNjOworICAgIHNjLmNoZWNrU2VtYW50aWNzKHByb2cuZ2V0
KCkpOworCiAgICAgcmV0dXJuIHByb2c7CiB9CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9Q
YXJzZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUGFyc2VyLmgJKHJldmlz
aW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL1BhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAqIEBpbnRlcm5hbAogICAg
ICAqCiAgICAgICogUGFyc2VzIEVDTUFTY3JpcHQgc291cmNlIGNvZGUgYW5kIGNvbnZlcnRzIGlu
dG8gUHJvZ3JhbU5vZGUgb2JqZWN0cywgd2hpY2gKLSAgICAgKiByZXByZXNlbnQgdGhlIHJvb3Qg
b2YgYSBwYXJzZSB0cmVlLiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgY29udmVuaWVudCB3b3JrYXJv
dW5kCi0gICAgICogZm9yIHRoZSBwcm9ibGVtIG9mIHRoZSBiaXNvbiBwYXJzZXIgd29ya2luZyBp
biBhIHN0YXRpYyBjb250ZXh0LgorICAgICAqIHJlcHJlc2VudCB0aGUgcm9vdCBvZiBhIHBhcnNl
IHRyZWUuIFRoZSB0cmVlIGlzIHRoZW4gc2VtYW50aWNhbGx5CisgICAgICogY2hlY2tlZCB3aXRo
IGEgc2VtYW50aWMgYW5hbHl6ZXIuIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb252ZW5pZW50Cisg
ICAgICogd29ya2Fyb3VuZCBmb3IgdGhlIHByb2JsZW0gb2YgdGhlIGJpc29uIHBhcnNlciB3b3Jr
aW5nIGluIGEgc3RhdGljIGNvbnRleHQuCiAgICAgICovCiAgICAgY2xhc3MgUGFyc2VyIHsKICAg
ICBwdWJsaWM6CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmNwcAkocmV2aXNpb24g
MjUzODUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvYXJyYXlfb2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMzLDcgKzEzMyw3IEBAIGJvb2wgQXJyYXlJbnN0YW5jZTo6Z2V0T3duUHJvcGVy
dHlTbG90KEUKICAgICAgIEpTVmFsdWUgKnYgPSBzdG9yYWdlW2luZGV4XTsKICAgICAgIGlmICgh
dikKICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgIAotICAgICAgc2xvdC5zZXRWYWx1ZVNsb3Qo
dGhpcywgJnN0b3JhZ2VbaW5kZXhdKTsKKyAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsICZz
dG9yYWdlW2luZGV4XSwgUHJvcGVydHlTbG90OjpGb3JiaWREaXJlY3RXcml0ZSk7CiAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCBib29sIEFycmF5SW5z
dGFuY2U6OmdldE93blByb3BlcnR5U2xvdChFCiAgICAgSlNWYWx1ZSAqdiA9IHN0b3JhZ2VbaW5k
ZXhdOwogICAgIGlmICghdikKICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzbG90LnNldFZhbHVl
U2xvdCh0aGlzLCAmc3RvcmFnZVtpbmRleF0pOworICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMs
ICZzdG9yYWdlW2luZGV4XSwgUHJvcGVydHlTbG90OjpGb3JiaWREaXJlY3RXcml0ZSk7CiAgICAg
cmV0dXJuIHRydWU7CiAgIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2NvbXBsZXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvY29tcGxldGlvbi5oCShyZXZpc2lv
biAyNTM4NSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9jb21wbGV0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDggQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKKyAgY2xhc3MgTm9kZTsK
KwogICAvKioKICAgICogQ29tcGxldGlvbiB0eXBlcy4KICAgICovCkBAIC00NywxNyArNDksMTcg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAqLwogICBjbGFzcyBDb21wbGV0aW9uIHsKICAgcHVibGlj
OgotICAgIENvbXBsZXRpb24oQ29tcGxUeXBlIGMgPSBOb3JtYWwsIEpTVmFsdWUgKnYgPSBOVUxM
LCBjb25zdCBJZGVudGlmaWVyICZ0ID0gQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5udWxs
SWRlbnRpZmllcikKKyAgICBDb21wbGV0aW9uKENvbXBsVHlwZSBjID0gTm9ybWFsLCBKU1ZhbHVl
ICp2ID0gTlVMTCwgY29uc3QgTm9kZSogdCA9IDApCiAgICAgICAgIDogY29tcChjKSwgdmFsKHYp
LCB0YXIodCkgeyB9CiAKICAgICBDb21wbFR5cGUgY29tcGxUeXBlKCkgY29uc3QgeyByZXR1cm4g
Y29tcDsgfQogICAgIEpTVmFsdWUgKnZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsOyB9Ci0gICAg
SWRlbnRpZmllciB0YXJnZXQoKSBjb25zdCB7IHJldHVybiB0YXI7IH0KKyAgICBjb25zdCBOb2Rl
KiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiB0YXI7IH0KICAgICBib29sIGlzVmFsdWVDb21wbGV0
aW9uKCkgY29uc3QgeyByZXR1cm4gISF2YWw7IH0KICAgcHJpdmF0ZToKICAgICBDb21wbFR5cGUg
Y29tcDsKICAgICBKU1ZhbHVlICp2YWw7Ci0gICAgSWRlbnRpZmllciB0YXI7CisgICAgY29uc3Qg
Tm9kZSogdGFyOwogICB9OwogCiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9jb250ZXh0LmgJKHJldmlzaW9uIDI1
Mzg1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDE1ICsxMDgsNiBAQCBuYW1lc3BhY2UgS0pTICB7CiAKICAgICB2b2lkIHB1c2hTY29wZShK
U09iamVjdCogcykgeyBzY29wZS5wdXNoKHMpOyB9CiAgICAgdm9pZCBwb3BTY29wZSgpIHsgc2Nv
cGUucG9wKCk7IH0KLSAgICBMYWJlbFN0YWNrKiBzZWVuTGFiZWxzKCkgeyByZXR1cm4gJmxzOyB9
Ci0KLSAgICB2b2lkIHB1c2hJdGVyYXRpb24oKSB7IG1faXRlcmF0aW9uRGVwdGgrKzsgfQotICAg
IHZvaWQgcG9wSXRlcmF0aW9uKCkgeyBtX2l0ZXJhdGlvbkRlcHRoLS07IH0KLSAgICBib29sIGlu
SXRlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gKG1faXRlcmF0aW9uRGVwdGggPiAwKTsgfQotCi0g
ICAgdm9pZCBwdXNoU3dpdGNoKCkgeyBtX3N3aXRjaERlcHRoKys7IH0KLSAgICB2b2lkIHBvcFN3
aXRjaCgpIHsgbV9zd2l0Y2hEZXB0aC0tOyB9Ci0gICAgYm9vbCBpblN3aXRjaCgpIGNvbnN0IHsg
cmV0dXJuIChtX3N3aXRjaERlcHRoID4gMCk7IH0KIAogICAgIHZvaWQgbWFyaygpOwogCkBAIC0x
NDAsOSArMTMxLDYgQEAgbmFtZXNwYWNlIEtKUyAgewogICAgIEpTT2JqZWN0KiBtX3ZhcmlhYmxl
OwogICAgIEpTT2JqZWN0KiBtX3RoaXNWYWw7CiAKLSAgICBMYWJlbFN0YWNrIGxzOwotICAgIGlu
dCBtX2l0ZXJhdGlvbkRlcHRoOwotICAgIGludCBtX3N3aXRjaERlcHRoOwogICAgIENvZGVUeXBl
IG1fY29kZVR5cGU7CiAgIH07CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9mdW5jdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmNwcAkocmV2aXNp
b24gMjUzODUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAyIEhhcnJpIFBv
cnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIEFwcGxlIENvbXB1dGVyLCBJ
bmMuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5v
cmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3
YXRlcmxvby5jYSkKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNDksNiArNTAsNDQgQEAgdXNpbmcgbmFtZXNw
YWNlIFVuaWNvZGU7CiAKIG5hbWVzcGFjZSBLSlMgewogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBMb29rdXBPcHRpbWl6ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CitjbGFzcyBMb29rdXBPcHRpbWl6ZXIgOiBwdWJsaWMgTm9kZVZpc2l0b3IgeworcHVibGljOgor
ICBMb29rdXBPcHRpbWl6ZXIoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5
KSA6IG1fZXhlYyhleGVjKSwgbV9ib2R5KGJvZHkpIHt9CisKKyAgdm9pZCBvcHRpbWl6ZSgpIHsK
KyAgICB2aXNpdChtX2JvZHkpOworICB9CisgIAorICB2aXJ0dWFsIE5vZGUqIHZpc2l0KE5vZGUq
IG5vZGUpIEtKU19GQVNUX0NBTEwKKyAgeworICAgIC8vRG8gbm90IHJlY3Vyc2UgaW5zaWRlIG5v
ZGVzIHRoYXQgaW50cm9kdWNlIG5ldyBzY29wZXM6CisgICAgLy90aGF0IGluY2x1ZGVzICd3aXRo
JyBhbmQgdmFyaW91cyBmdW5jdGlvbiBsaXRlcmFscy4KKyAgICBpZiAobm9kZS0+aW50cm9kdWNl
c05ld1Njb3BlKCkpIHJldHVybiAwOworCisgICAgLy9DYXRjaCBjYW4gaW50cm9kdWNlIGEgbmV3
IHNjb3BlIGFzIHdlbGwsIGJ1dCAKKyAgICAvL3RoZSByZXN0IG9mIHRyeSBpcyBmaW5lLi4KKyAg
ICBpZiAobm9kZS0+aXNUcnlOb2RlKCkpIHsKKyAgICAgICBzdGF0aWNfY2FzdDxUcnlOb2RlKj4o
bm9kZSktPnJlY3Vyc2VWaXNpdE5vbkNhdGNoKHRoaXMpOworICAgICAgIHJldHVybiAwOworICAg
IH0KKworICAgIC8vTm93IHRyeSBvcHRpbWl6aW5nLi4KKyAgICBpZiAoTm9kZSogcmVzdWx0Tm9k
ZSA9IG5vZGUtPm9wdGltaXplTG9jYWxBY2Nlc3MobV9leGVjLCBtX2JvZHkpKSB7CisgICAgICAv
L1dlIG9wdGltaXplZCB0aGlzIG5vZGUsIGJ1dCBpdCBtYXkgbWFrZSBzZW5zZSB0byBvcHRpbWl6
ZSAKKyAgICAgIC8vaW5zaWRlIGl0IGFzIHdlbGwsIHNvIHJlY3Vyc2UsIHRvby4gCisgICAgICBO
b2RlVmlzaXRvcjo6dmlzaXQocmVzdWx0Tm9kZSk7CisgICAgICByZXR1cm4gcmVzdWx0Tm9kZTsK
KyAgICB9CisKKyAgICAvL0p1c3QgcmVjdXJzZS4uCisgICAgcmV0dXJuIE5vZGVWaXNpdG9yOjp2
aXNpdChub2RlKTsKKyAgfQorcHJpdmF0ZToKKyAgRXhlY1N0YXRlKiAgICAgICAgbV9leGVjOwor
ICBGdW5jdGlvbkJvZHlOb2RlKiBtX2JvZHk7Cit9OworCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBGdW5jdGlvbkltcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIGNvbnN0IENsYXNzSW5mbyBGdW5jdGlvbkltcDo6aW5mbyA9IHsiRnVuY3Rpb24iLCAmSW50
ZXJuYWxGdW5jdGlvbkltcDo6aW5mbywgMCwgMH07CkBAIC04MSwxMSArMTIwLDMwIEBAIEpTVmFs
dWUqIEZ1bmN0aW9uSW1wOjpjYWxsQXNGdW5jdGlvbihFeGUKICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQogICAgIG5ld0V4ZWMuc2V0RXhjZXB0aW9uKGV4ZWMtPmV4Y2VwdGlvbigpKTsKICAg
Y3R4LnNldEV4ZWNTdGF0ZSgmbmV3RXhlYyk7CisgCisgIC8vIENvbXB1dGUgdGhlIHNldCBvZiBh
bGwgbG9jYWwgdmFyaWFibGVzLCBhbmQgZnVuY3Rpb25zLgorICAvLyBhbmQgb3B0aW1pemUgYWNj
ZXNzIHRvIHRoZW0gdGhlIGZpcnN0IHRpbWUgd2UncmUgY2FsbGVkLgorICAvLyBUaGUgQVNUIGJ1
aWxkaW5nIGFscmVhZHkgdG9vayBjYXJlIG9mIHBhcmFtZXRlciBkZWNsYXJhdGlvbnMgZm9yIHVz
LgorICBpZiAoIWJvZHktPmJ1aWx0U3ltYm9sTGlzdCgpKSB7CisgICAgLy8gbm93IGhhbmRsZSBv
dGhlciBsb2NhbHMgKGZ1bmN0aW9ucywgdmFyaWFibGVzKQorICAgIGJvZHktPnByb2Nlc3NEZWNs
cygmbmV3RXhlYyk7CisgICAgYm9keS0+c2V0QnVpbHRTeW1ib2xMaXN0KCk7CisKKyAgICBMb29r
dXBPcHRpbWl6ZXIgb3B0aW1pemVyKCZuZXdFeGVjLCBib2R5LmdldCgpKTsKKyAgICBvcHRpbWl6
ZXIub3B0aW1pemUoKTsKKyAgfQogCi0gIC8vIGFzc2lnbiB1c2VyIHN1cHBsaWVkIGFyZ3VtZW50
cyB0byBwYXJhbWV0ZXJzCisgIEFjdGl2YXRpb25JbXAqIGFjdGl2YXRpb24gPSBzdGF0aWNfY2Fz
dDxBY3RpdmF0aW9uSW1wKj4oY3R4LmFjdGl2YXRpb25PYmplY3QoKSk7CisKKyAgLy8gSGVyZSwg
d2UgYWN0dWFsbHkgZmlsbCBzdHVmZiBpbiwgZ29pbmcgYnkgaW5jcmVhc2luZyBwcmlvcml0aWVz
OiAKKyAgLy8gZmlyc3QsIGluaXRpYWxpemUgZmxhZ3MgYW5kIHNldCB0byB1bmRlZmluZWQuLi4K
KyAgYWN0aXZhdGlvbi0+c2V0dXBMb2NhbHMoKTsKKyAgCisgIC8vIE5leHQsIGFzc2lnbiB1c2Vy
IHN1cHBsaWVkIGFyZ3VtZW50cyB0byBwYXJhbWV0ZXJzCiAgIHBhc3NJblBhcmFtZXRlcnMoJm5l
d0V4ZWMsIGFyZ3MpOwotICAvLyBhZGQgdmFyaWFibGUgZGVjbGFyYXRpb25zIChpbml0aWFsaXpl
ZCB0byB1bmRlZmluZWQpCi0gIHByb2Nlc3NWYXJEZWNscygmbmV3RXhlYyk7CisKKyAgLy8gTm93
LCBmaWxsIGluIGZ1bmN0aW9uIG9iamVjdHMuIFRoZXNlIHNob3VsZCBvdmVycmlkZSBldmVyeXRo
aW5nIGVsc2UKKyAgYWN0aXZhdGlvbi0+c2V0dXBGdW5jdGlvbkxvY2FscygmbmV3RXhlYyk7CiAK
ICAgRGVidWdnZXIqIGRiZyA9IGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpLT5kZWJ1Z2dlcigp
OwogICBpbnQgc2lkID0gLTE7CkBAIC0xNTAsOSArMjA4LDggQEAgSlNWYWx1ZSogRnVuY3Rpb25J
bXA6OmNhbGxBc0Z1bmN0aW9uKEV4ZQogLy8gRUNNQSAxMC4xLjNxCiBpbmxpbmUgdm9pZCBGdW5j
dGlvbkltcDo6cGFzc0luUGFyYW1ldGVycyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFy
Z3MpCiB7Ci0gICAgVmVjdG9yPFBhcmFtZXRlcj4mIHBhcmFtZXRlcnMgPSBib2R5LT5wYXJhbWV0
ZXJzKCk7Ci0KLSAgICBKU09iamVjdCogdmFyaWFibGUgPSBleGVjLT5jb250ZXh0KCktPnZhcmlh
YmxlT2JqZWN0KCk7CisgICAgYXNzZXJ0KGV4ZWMtPmNvbnRleHQoKS0+dmFyaWFibGVPYmplY3Qo
KS0+aXNBY3RpdmF0aW9uKCkpOworICAgIEFjdGl2YXRpb25JbXAqIHZhcmlhYmxlID0gc3RhdGlj
X2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPmNvbnRleHQoKS0+dmFyaWFibGVPYmplY3QoKSk7
CiAKICNpZmRlZiBLSlNfVkVSQk9TRQogICAgIGZwcmludGYoc3RkZXJyLCAiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iCkBAIC0xNjAsMjAgKzIx
NywyMyBAQCBpbmxpbmUgdm9pZCBGdW5jdGlvbkltcDo6cGFzc0luUGFyYW1ldGVyCiAgICAgICAg
ICAgZnVuY3Rpb25OYW1lKCkuaXNFbXB0eSgpID8gIihpbnRlcm5hbCkiIDogZnVuY3Rpb25OYW1l
KCkuYXNjaWkoKSk7CiAjZW5kaWYKIAotICAgIHNpemVfdCBzaXplID0gcGFyYW1ldGVycy5zaXpl
KCk7CisgICAgTGlzdEl0ZXJhdG9yIGl0ID0gYXJncy5iZWdpbigpOworICAgIHNpemVfdCBzaXpl
ID0gYm9keS0+bnVtUGFyYW1zKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgaW50IHdyaXRlVG8gPSBib2R5LT5wYXJhbVN5bWJvbElEKGkpOworICAg
ICAgICBKU1ZhbHVlKiB2YWwgPSBqc1VuZGVmaW5lZCgpOworICAgICAgICBpZiAoaXQgIT0gYXJn
cy5lbmQoKSkgeworICAgICAgICAgICAgdmFsID0gKml0OworICAgICAgICAgICAgKytpdDsKKyAg
ICAgICAgfQogI2lmZGVmIEtKU19WRVJCT1NFCiAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNldHRp
bmcgcGFyYW1ldGVyICVzICIsIHBhcmFtZXRlcnMuYXQoaSkubmFtZS5hc2NpaSgpKTsKICAgICAg
IHByaW50SW5mbyhleGVjLCAidG8iLCBhcmdzW2ldKTsKICNlbmRpZgotICAgICAgdmFyaWFibGUt
PnB1dChleGVjLCBwYXJhbWV0ZXJzW2ldLm5hbWUsIGFyZ3NbaV0pOworICAgICAgdmFyaWFibGUt
PnB1dExvY2FsKHdyaXRlVG8sIHZhbCk7CiAgICAgfQogfQogCi12b2lkIEZ1bmN0aW9uSW1wOjpw
cm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikKLXsKLX0KLQogSlNWYWx1ZSogRnVuY3Rpb25JbXA6
OmFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgIEZ1bmN0
aW9uSW1wKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25JbXAqPihzbG90LnNsb3RCYXNl
KCkpOwpAQCAtMjYxLDE4ICszMjEsMTYgQEAgYm9vbCBGdW5jdGlvbkltcDo6ZGVsZXRlUHJvcGVy
dHkoRXhlY1N0YQogICovCiBJZGVudGlmaWVyIEZ1bmN0aW9uSW1wOjpnZXRQYXJhbWV0ZXJOYW1l
KGludCBpbmRleCkKIHsKLSAgICBWZWN0b3I8UGFyYW1ldGVyPiYgcGFyYW1ldGVycyA9IGJvZHkt
PnBhcmFtZXRlcnMoKTsKLQotICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA+PSBi
b2R5LT5udW1QYXJhbXMoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPj0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihib2R5LT5udW1QYXJhbXMoKSkpCiAgICAgICAgIHJldHVybiBD
b21tb25JZGVudGlmaWVyczo6c2hhcmVkKCktPm51bGxJZGVudGlmaWVyOwogICAKLSAgICBJZGVu
dGlmaWVyIG5hbWUgPSBwYXJhbWV0ZXJzW2luZGV4XS5uYW1lOworICAgIElkZW50aWZpZXIgbmFt
ZSA9IGJvZHktPnBhcmFtTmFtZShpbmRleCk7CiAKICAgICAvLyBBcmUgdGhlcmUgYW55IHN1YnNl
cXVlbnQgcGFyYW1ldGVycyB3aXRoIHRoZSBzYW1lIG5hbWU/Ci0gICAgc2l6ZV90IHNpemUgPSBw
YXJhbWV0ZXJzLnNpemUoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGJvZHktPm51bVBhcmFtcygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSBpbmRleCArIDE7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGlm
IChwYXJhbWV0ZXJzW2ldLm5hbWUgPT0gbmFtZSkKLSAgICAgICAgICAgIHJldHVybiBDb21tb25J
ZGVudGlmaWVyczo6c2hhcmVkKCktPm51bGxJZGVudGlmaWVyOworICAgICAgICBpZiAoYm9keS0+
cGFyYW1OYW1lKGkpID09IG5hbWUpCisgICAgICAgIHJldHVybiBDb21tb25JZGVudGlmaWVyczo6
c2hhcmVkKCktPm51bGxJZGVudGlmaWVyOwogCiAgICAgcmV0dXJuIG5hbWU7CiB9CkBAIC0zMjMs
MTEgKzM4MSw2IEBAIENvbXBsZXRpb24gRGVjbGFyZWRGdW5jdGlvbkltcDo6ZXhlY3V0ZSgKICAg
cmV0dXJuIENvbXBsZXRpb24oTm9ybWFsLCBqc1VuZGVmaW5lZCgpKTsgLy8gVE9ETzogb3IgUmV0
dXJuVmFsdWUgPwogfQogCi12b2lkIERlY2xhcmVkRnVuY3Rpb25JbXA6OnByb2Nlc3NWYXJEZWNs
cyhFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gIGJvZHktPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLX0K
LQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEluZGV4VG9OYW1lTWFwIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBXZSBtYXAgaW5kZXhlcyBpbiB0aGUg
YXJndW1lbnRzIGFycmF5IHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbmFtZXMuIApA
QCAtNDY2LDIwICs1MTksNDEgQEAgY29uc3QgQ2xhc3NJbmZvIEFjdGl2YXRpb25JbXA6OmluZm8g
PSB7IgogCiAvLyBFQ01BIDEwLjEuNgogQWN0aXZhdGlvbkltcDo6QWN0aXZhdGlvbkltcChGdW5j
dGlvbkltcCogZnVuY3Rpb24sIGNvbnN0IExpc3QmIGFyZ3VtZW50cykKLSAgICA6IF9mdW5jdGlv
bihmdW5jdGlvbiksIF9hcmd1bWVudHMoYXJndW1lbnRzKSwgX2FyZ3VtZW50c09iamVjdCgwKQor
ICAgIDogX2Z1bmN0aW9uKGZ1bmN0aW9uKSwgX2FyZ3VtZW50cyh0cnVlKSwgX2xvY2FscygwKQog
eworICBfYXJndW1lbnRzLmNvcHlGcm9tKGFyZ3VtZW50cyk7CiAgIC8vIEZJWE1FOiBEbyB3ZSBu
ZWVkIHRvIHN1cHBvcnQgZW51bWVyYXRpbmcgdGhlIGFyZ3VtZW50cyBwcm9wZXJ0eT8KIH0KIAor
dm9pZCBBY3RpdmF0aW9uSW1wOjpzZXR1cExvY2FscygpIHsKKyAgICBpbnQgbnVtTG9jYWxzID0g
X2Z1bmN0aW9uLT5ib2R5LT5udW1Mb2NhbHMoKTsKKyAgICBfbG9jYWxzICA9IG5ldyBMb2NhbFtu
dW1Mb2NhbHMgKyAxXTsKKyAgICBfbG9jYWxzWzBdLnZhbHVlID0gMDsKKyAgICBfbG9jYWxzWzBd
LmF0dHIgID0gbnVtTG9jYWxzICsgMTsgCisgICAgCisgICAgZm9yIChpbnQgbCA9IDE7IGwgPCBu
dW1Mb2NhbHMgKyAxOyArK2wpIHsKKyAgICAgICAgX2xvY2Fsc1tsXS52YWx1ZSA9IGpzVW5kZWZp
bmVkKCk7CisgICAgICAgIF9sb2NhbHNbbF0uYXR0ciAgPSBfZnVuY3Rpb24tPmJvZHktPmdldExv
Y2FsQXR0cihsKTsgCisgICAgfQorfQorCit2b2lkIEFjdGl2YXRpb25JbXA6OnNldHVwRnVuY3Rp
b25Mb2NhbHMoRXhlY1N0YXRlICpleGVjKSB7CisgIGludCBudW1Mb2NhbHMgPSBfZnVuY3Rpb24t
PmJvZHktPm51bUxvY2FscygpOworICBmb3IgKGludCBsID0gMTsgbCA8IG51bUxvY2FscyArIDE7
ICsrbCkgeworICAgIGlmIChGdW5jRGVjbE5vZGUqIGZ1bmNEZWNsID0gX2Z1bmN0aW9uLT5ib2R5
LT5nZXRMb2NhbEZ1bmNEZWNsKGwpKQorICAgICAgX2xvY2Fsc1tsXS52YWx1ZSA9IGZ1bmNEZWNs
LT5tYWtlRnVuY3Rpb25PYmplY3QoZXhlYyk7CisgIH0KK30KKwogSlNWYWx1ZSogQWN0aXZhdGlv
bkltcDo6YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewogICBBY3RpdmF0aW9uSW1w
KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KHNsb3Quc2xvdEJhc2UoKSk7
CiAKICAgLy8gZGVmYXVsdDogcmV0dXJuIGJ1aWx0aW4gYXJndW1lbnRzIGFycmF5Ci0gIGlmICgh
dGhpc09iai0+X2FyZ3VtZW50c09iamVjdCkKKyAgaWYgKCF0aGlzT2JqLT5fbG9jYWxzWzBdLnZh
bHVlKQogICAgIHRoaXNPYmotPmNyZWF0ZUFyZ3VtZW50c09iamVjdChleGVjKTsKICAgCi0gIHJl
dHVybiB0aGlzT2JqLT5fYXJndW1lbnRzT2JqZWN0OworICByZXR1cm4gdGhpc09iai0+X2xvY2Fs
c1swXS52YWx1ZTsKIH0KIAogUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgQWN0aXZhdGlvbklt
cDo6Z2V0QXJndW1lbnRzR2V0dGVyKCkKQEAgLTQ5MywxMSArNTY3LDIxIEBAIGJvb2wgQWN0aXZh
dGlvbkltcDo6Z2V0T3duUHJvcGVydHlTbG90KEUKICAgICAvLyB3ZSBkb24ndCBjYWxsIEpTT2Jq
ZWN0IGJlY2F1c2Ugd2Ugd29uJ3QgaGF2ZSBnZXR0ZXIvc2V0dGVyIHByb3BlcnRpZXMKICAgICAv
LyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBzdXBwb3J0IF9fcHJvdG9fXwogCisgICAgLy8gU2VlIGlm
IHdlJ3JlIGRvaW5nIGZhbGxiYWNrICBsb29rdXAgb24gYSBsb2NhbC4uCisgICAgaW50IGlkID0g
X2Z1bmN0aW9uLT5ib2R5LT5sb29rdXBTeW1ib2xJRChwcm9wZXJ0eU5hbWUpOworCisgICAgaWYg
KHZhbGlkTG9jYWwoaWQpKSB7CisgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsICZfbG9j
YWxzW2lkXS52YWx1ZSwgX2xvY2Fsc1tpZF0uYXR0ciAmIFJlYWRPbmx5KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCiAgICAgaWYgKEpTVmFsdWUqKiBsb2NhdGlvbiA9IGdldERpcmVj
dExvY2F0aW9uKHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhp
cywgbG9jYXRpb24pOworICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCBsb2NhdGlvbiwg
UHJvcGVydHlTbG90OjpGb3JiaWREaXJlY3RXcml0ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAorICAgIC8vIEltcG9ydGFudDogaWYgeW91IGFkZCBtb3JlIGR5bmFtaWMgcHJvcGVy
dGllcyBoZXJlLCAKKyAgICAvLyBtYWtlIHN1cmUgdG8gbWFrZSB0aGUgb3B0aW1pemVSZXNvbHZl
ciBjYWxsIGhvbm9yIHRoZW0uCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYXJndW1lbnRzKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXMsIGdldEFy
Z3VtZW50c0dldHRlcigpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MDgsNiArNTkyLDEx
IEBAIGJvb2wgQWN0aXZhdGlvbkltcDo6Z2V0T3duUHJvcGVydHlTbG90KEUKIAogYm9vbCBBY3Rp
dmF0aW9uSW1wOjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKIHsKKyAgICAvLyBJZiBzb21lb25lIHRyaWVzIHRvIGRlbGV0ZSBh
IGxvY2FsLCByZXR1cm4gZmFsc2UsIHRoYXQncyBub3QgcGVybWl0dGVkCisgICAgaW50IGlkID0g
X2Z1bmN0aW9uLT5ib2R5LT5sb29rdXBTeW1ib2xJRChwcm9wZXJ0eU5hbWUpOworICAgIGlmICh2
YWxpZExvY2FsKGlkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0
eU5hbWUpOwpAQCAtNTE4LDYgKzYwNywxMyBAQCB2b2lkIEFjdGl2YXRpb25JbXA6OnB1dChFeGVj
U3RhdGUqLCBjb25zCiAgIC8vIFRoZXJlJ3Mgbm8gd2F5IHRoYXQgYW4gYWN0aXZhdGlvbiBvYmpl
Y3QgY2FuIGhhdmUgYSBwcm90b3R5cGUgb3IgZ2V0dGVyL3NldHRlciBwcm9wZXJ0aWVzCiAgIGFz
c2VydCghX3Byb3AuaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKICAgYXNzZXJ0KHByb3Rv
dHlwZSgpID09IGpzTnVsbCgpKTsKKyAgCisgIC8vIFNlZSBpZiB3ZSdyZSBzZXR0aW5nIGEgbG9j
YWwuLgorICBpbnQgaWQgPSBfZnVuY3Rpb24tPmJvZHktPmxvb2t1cFN5bWJvbElEKHByb3BlcnR5
TmFtZSk7CisgIGlmICh2YWxpZExvY2FsKGlkKSkgeworICAgICAgcHV0TG9jYWxDaGVja2VkKGlk
LCB2YWx1ZSk7CisgICAgICByZXR1cm47CisgIH0KIAogICBfcHJvcC5wdXQocHJvcGVydHlOYW1l
LCB2YWx1ZSwgYXR0ciwgKGF0dHIgPT0gTm9uZSB8fCBhdHRyID09IERvbnREZWxldGUpKTsKIH0K
QEAgLTUyNiwxNiArNjIyLDI0IEBAIHZvaWQgQWN0aXZhdGlvbkltcDo6bWFyaygpCiB7CiAgICAg
aWYgKF9mdW5jdGlvbiAmJiAhX2Z1bmN0aW9uLT5tYXJrZWQoKSkgCiAgICAgICAgIF9mdW5jdGlv
bi0+bWFyaygpOwotICAgIGlmIChfYXJndW1lbnRzT2JqZWN0ICYmICFfYXJndW1lbnRzT2JqZWN0
LT5tYXJrZWQoKSkKLSAgICAgICAgX2FyZ3VtZW50c09iamVjdC0+bWFyaygpOworCisgICAgZm9y
IChpbnQgcG9zID0gMDsgcG9zIDwgbnVtTG9jYWxzKCk7ICsrcG9zKSB7CisgICAgICAgIEpTVmFs
dWUgKnZhbCA9IF9sb2NhbHNbcG9zXS52YWx1ZTsKKyAgICAgICAgaWYgKHZhbCAmJiAhdmFsLT5t
YXJrZWQoKSkKKyAgICAgICAgICAgIHZhbC0+bWFyaygpOworICAgIH0KKwogICAgIEpTT2JqZWN0
OjptYXJrKCk7CiB9CiAKK0FjdGl2YXRpb25JbXA6On5BY3RpdmF0aW9uSW1wKCkKK3sKKyAgICBk
ZWxldGVbXSBfbG9jYWxzOworfQorCiB2b2lkIEFjdGl2YXRpb25JbXA6OmNyZWF0ZUFyZ3VtZW50
c09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gIF9hcmd1bWVudHNPYmplY3QgPSBuZXcgQXJn
dW1lbnRzKGV4ZWMsIF9mdW5jdGlvbiwgX2FyZ3VtZW50cywgY29uc3RfY2FzdDxBY3RpdmF0aW9u
SW1wKj4odGhpcykpOwotICAvLyBUaGUgYXJndW1lbnRzIGxpc3QgaXMgb25seSBuZWVkZWQgdG8g
Y3JlYXRlIHRoZSBhcmd1bWVudHMgb2JqZWN0LCBzbyBkaXNjYXJkIGl0IG5vdwotICBfYXJndW1l
bnRzLnJlc2V0KCk7CisgIF9sb2NhbHNbMF0udmFsdWUgPSBuZXcgQXJndW1lbnRzKGV4ZWMsIF9m
dW5jdGlvbiwgX2FyZ3VtZW50cywgY29uc3RfY2FzdDxBY3RpdmF0aW9uSW1wKj4odGhpcykpOwog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR2xvYmFsRnVuYyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODMxLDcgKzkzNSw3IEBAIEpTVmFsdWUq
IEdsb2JhbEZ1bmNJbXA6OmNhbGxBc0Z1bmN0aW9uKEUKICAgICAgICAgY3R4LnNldEV4ZWNTdGF0
ZSgmbmV3RXhlYyk7CiAgICAgICAgIAogICAgICAgICAvLyBleGVjdXRlIHRoZSBjb2RlCi0gICAg
ICAgIHByb2dOb2RlLT5wcm9jZXNzVmFyRGVjbHMoJm5ld0V4ZWMpOworICAgICAgICBwcm9nTm9k
ZS0+cHJvY2Vzc0RlY2xzKCZuZXdFeGVjKTsKICAgICAgICAgQ29tcGxldGlvbiBjID0gcHJvZ05v
ZGUtPmV4ZWN1dGUoJm5ld0V4ZWMpOwogCiAgICAgICAgIC8vIGlmIGFuIGV4Y2VwdGlvbiBvY2N1
cmVkLCBwcm9wb2dhdGUgaXQgYmFjayB0byB0aGUgcHJldmlvdXMgZXhlY3V0aW9uIG9iamVjdApJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL2Z1bmN0aW9uLmgJKHJldmlzaW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL2Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw4IEBACiAgKiAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAwNyBN
YWtzaW0gT3Jsb3ZpY2ggKG1ha3NpbUBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwNyBD
YW1lcm9uIFp3YXJpY2ggKGN3endhcmljaEB1d2F0ZXJsb28uY2EpCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMzYsOCArMzgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICBlbnVtIENvZGVUeXBl
IHsgR2xvYmFsQ29kZSwKICAgICAgICAgICAgICAgICAgIEV2YWxDb2RlLAotICAgICAgICAgICAg
ICAgICAgRnVuY3Rpb25Db2RlLAotICAgICAgICAgICAgICAgICAgQW5vbnltb3VzQ29kZSB9Owor
ICAgICAgICAgICAgICAgICAgRnVuY3Rpb25Db2RlIH07CiAKICAgY2xhc3MgSW50ZXJuYWxGdW5j
dGlvbkltcCA6IHB1YmxpYyBKU09iamVjdCB7CiAgIHB1YmxpYzoKQEAgLTEzNyw3ICsxMzgsNiBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICBzdGF0aWMgSlNWYWx1ZSogbGVuZ3RoR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYp
OwogCiAgICAgdm9pZCBwYXNzSW5QYXJhbWV0ZXJzKEV4ZWNTdGF0ZSosIGNvbnN0IExpc3QmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopOwogICB9OwogCiAg
IGNsYXNzIERlY2xhcmVkRnVuY3Rpb25JbXAgOiBwdWJsaWMgRnVuY3Rpb25JbXAgewpAQCAtMTUz
LDkgKzE1Myw2IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAgdmlydHVhbCBjb25zdCBDbGFzc0lu
Zm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAgICAgc3RhdGljIGNvbnN0
IENsYXNzSW5mbyBpbmZvOwotCi0gIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NW
YXJEZWNscyhFeGVjU3RhdGUqKTsKICAgfTsKIAogICBjbGFzcyBJbmRleFRvTmFtZU1hcCB7CkBA
IC0xOTMsMTggKzE5MCw1MSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgY2xhc3MgQWN0aXZhdGlvbklt
cCA6IHB1YmxpYyBKU09iamVjdCB7CiAgIHB1YmxpYzoKICAgICBBY3RpdmF0aW9uSW1wKEZ1bmN0
aW9uSW1wKiBmdW5jdGlvbiwgY29uc3QgTGlzdCYgYXJndW1lbnRzKTsKKyAgICB+QWN0aXZhdGlv
bkltcCgpOwogCiAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgdmlydHVhbCB2b2lkIHB1
dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZh
bHVlLCBpbnQgYXR0ciA9IE5vbmUpOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVQcm9wZXJ0eShF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogCisgICAgLy9UaGlz
IGlzIG9ubHkgdXNlZCBieSBkZWNsYXJhdGlvbiBjb2RlLCBzbyBpdCBuZXZlciBjaGVjayByL28g
YXR0cgorICAgIHZvaWQgcHV0TG9jYWwoaW50IHByb3BlcnR5SUQsIEpTVmFsdWUqIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgYXNzZXJ0KHZhbGlkTG9jYWwocHJvcGVydHlJRCkpOworICAgICAgICBf
bG9jYWxzW3Byb3BlcnR5SURdLnZhbHVlID0gdmFsdWU7CisgICAgICAgIC8vV2UgZG8gbm90IGhh
dmUgdG8gdG91Y2ggdGhlIGZsYWdzIGhlcmUgLS0gdGhleSdyZSBwcmUtY29tcHV0ZWQuLgorICAg
IH0KKworICAgIHZvaWQgaW5pdExvY2FsKGludCBwcm9wZXJ0eUlELCBKU1ZhbHVlKiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIGFzc2VydCh2YWxpZExvY2FsKHByb3BlcnR5SUQpKTsKKyAgICAgICAg
X2xvY2Fsc1twcm9wZXJ0eUlEXS52YWx1ZSA9IHZhbHVlOworICAgIH0KKworICAgIHZvaWQgcHV0
TG9jYWxDaGVja2VkKGludCBwcm9wZXJ0eUlELCBKU1ZhbHVlICp2YWx1ZSkgeworICAgICAgICBp
ZiAoaXNMb2NhbFJlYWRPbmx5KHByb3BlcnR5SUQpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIF9sb2NhbHNbcHJvcGVydHlJRF0udmFsdWUgPSB2YWx1ZTsKKyAgICB9CisKKyAgICBK
U1ZhbHVlKiogZ2V0TG9jYWxEaXJlY3QoaW50IHByb3BlcnR5SUQpIHsKKyAgICAgICAgYXNzZXJ0
KHZhbGlkTG9jYWwocHJvcGVydHlJRCkpOworICAgICAgICByZXR1cm4gJl9sb2NhbHNbcHJvcGVy
dHlJRF0udmFsdWU7CisgICAgfQorCisgICAgYm9vbCBpc0xvY2FsUmVhZE9ubHkoaW50IHByb3Bl
cnR5SUQpIHsKKyAgICAgICAgcmV0dXJuICEhKF9sb2NhbHNbcHJvcGVydHlJRF0uYXR0ciAmIFJl
YWRPbmx5KTsKKyAgICB9CisKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGlu
Zm87CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogCi0gICAgYm9vbCBpc0FjdGl2YXRpb24o
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZvaWQgc2V0dXBMb2NhbHMoKTsKKyAgICB2b2lkIHNl
dHVwRnVuY3Rpb25Mb2NhbHMoRXhlY1N0YXRlICpleGVjKTsKICAgICB2b2lkIHJlbGVhc2VBcmd1
bWVudHMoKSB7IF9hcmd1bWVudHMucmVzZXQoKTsgfQogCiAgIHByaXZhdGU6CkBAIC0yMTIsOSAr
MjQyLDIxIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHN0YXRpYyBKU1ZhbHVlKiBhcmd1bWVudHNH
ZXR0ZXIoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJv
cGVydHlTbG90JiBzbG90KTsKICAgICB2b2lkIGNyZWF0ZUFyZ3VtZW50c09iamVjdChFeGVjU3Rh
dGUqKTsKIAorICAgIHN0cnVjdCBMb2NhbCB7CisgICAgICAgIEpTVmFsdWUqIHZhbHVlOworICAg
ICAgICBpbnQgICAgICBhdHRyOworICAgIH07CisKICAgICBGdW5jdGlvbkltcCogX2Z1bmN0aW9u
OwogICAgIExpc3QgX2FyZ3VtZW50czsKLSAgICBtdXRhYmxlIEFyZ3VtZW50cyogX2FyZ3VtZW50
c09iamVjdDsKKworICAgIC8vTGlzdCBvZiBsb2NhbHMsIGJ1dCB0aGUgZW50cnkgMCBpcyBzcGVj
aWFsOiAKKyAgICAvL3RoZSB2YWx1ZSBoZXJlIGlzIHRoZSBhcmd1bWVudHMgb2JqZWN0LCAKKyAg
ICAvL3RoZSBhdHRyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IChlLmcuIG51bUxvY2FscyAr
IDEpCisgICAgTG9jYWwgKl9sb2NhbHM7CisKKyAgICBpbnQgIG51bUxvY2FscygpIGNvbnN0IHsg
cmV0dXJuIF9sb2NhbHNbMF0uYXR0cjsgfQorICAgIGJvb2wgdmFsaWRMb2NhbChpbnQgaSkgY29u
c3QgeyByZXR1cm4gMCA8IGkgJiYgaSA8IG51bUxvY2FscygpOyB9CiAgIH07CiAKICAgY2xhc3Mg
R2xvYmFsRnVuY0ltcCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uSW1wIHsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L2dyYW1tYXIueQkocmV2aXNpb24gMjUzODUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1h
ci55CSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCArMjUyLDggQEAgUHJpbWFyeUV4cHJOb0JyYWNl
OgogICAgIFRISVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgVGhp
c05vZGUoKTsgfQogICB8IExpdGVyYWwKICAgfCBBcnJheUxpdGVyYWwKLSAgfCBJREVOVCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IFJlc29sdmVOb2RlKCokMSk7IH0K
LSAgfCAnKCcgRXhwciAnKScgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gKCQyLT5pc1Jl
c29sdmVOb2RlKCkgfHwgJDItPmlzR3JvdXBOb2RlKCkpID8KKyAgfCBJREVOVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IFZhckFjY2Vzc05vZGUoKiQxKTsgfQorICB8
ICcoJyBFeHByICcpJyAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAoJDItPmlzVmFyQWNj
ZXNzTm9kZSgpIHx8ICQyLT5pc0dyb3VwTm9kZSgpKSA/CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICQyIDogbmV3IEdyb3VwTm9kZSgkMik7IH0KIDsKIApAQCAt
ODA4LDcgKzgwOCw3IEBAIERlZmF1bHRDbGF1c2U6CiA7CiAKIExhYmVsbGVkU3RhdGVtZW50Ogot
ICAgIElERU5UICc6JyBTdGF0ZW1lbnQgICAgICAgICAgICAgICAgIHsgJDMtPnB1c2hMYWJlbCgq
JDEpOyAkJCA9IG5ldyBMYWJlbE5vZGUoKiQxLCAkMyk7IH0KKyAgICBJREVOVCAnOicgU3RhdGVt
ZW50ICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IExhYmVsTm9kZSgqJDEsICQzKTsgfQogOwog
CiBUaHJvd1N0YXRlbWVudDoKQEAgLTg3NywzNyArODc3LDI2IEBAIHN0YXRpYyBOb2RlKiBtYWtl
QXNzaWduTm9kZShOb2RlKiBsb2MsIE8KICAgICBpZiAoIW4tPmlzTG9jYXRpb24oKSkKICAgICAg
ICAgcmV0dXJuIG5ldyBBc3NpZ25FcnJvck5vZGUobG9jLCBvcCwgZXhwcik7CiAKLSAgICBpZiAo
bi0+aXNSZXNvbHZlTm9kZSgpKSB7Ci0gICAgICAgIFJlc29sdmVOb2RlICpyZXNvbHZlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZU5vZGUgKj4obik7Ci0gICAgICAgIHJldHVybiBuZXcgQXNzaWduUmVz
b2x2ZU5vZGUocmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7Ci0gICAgfQotICAgIGlm
IChuLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgeworICAgIGlmIChuLT5pc1ZhckFjY2Vzc05v
ZGUoKSkgeworICAgICAgICByZXR1cm4gbmV3IEFzc2lnbk5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRp
b25Ob2RlKj4obiksIG9wLCBleHByKTsKKyAgICB9IGVsc2UgaWYgKG4tPmlzQnJhY2tldEFjY2Vz
c29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUgKmJyYWNrZXQgPSBzdGF0
aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlICo+KG4pOwogICAgICAgICByZXR1cm4gbmV3IEFz
c2lnbkJyYWNrZXROb2RlKGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9w
LCBleHByKTsKKyAgICB9IGVsc2UgeworICAgICAgICBhc3NlcnQobi0+aXNEb3RBY2Nlc3Nvck5v
ZGUoKSk7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlICo+KG4pOworICAgICAgICByZXR1cm4gbmV3IEFzc2lnbkRvdE5vZGUoZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7CiAgICAgfQotICAgIGFzc2VydChu
LT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9IHN0YXRp
Y19jYXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICByZXR1cm4gbmV3IEFzc2lnbkRvdE5v
ZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwcik7CiB9CiAKLXN0YXRp
YyBOb2RlKiBtYWtlUHJlZml4Tm9kZShOb2RlICpleHByLCBPcGVyYXRvciBvcCkKK3N0YXRpYyBO
b2RlKiBtYWtlUHJlZml4Tm9kZShOb2RlKiBleHByLCBPcGVyYXRvciBvcCkKIHsgCiAgICAgTm9k
ZSAqbiA9IGV4cHItPm5vZGVJbnNpZGVBbGxQYXJlbnMoKTsKIAogICAgIGlmICghbi0+aXNMb2Nh
dGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IFByZWZpeEVycm9yTm9kZShleHByLCBvcCk7Ci0g
ICAgCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAq
cmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4g
bmV3IFByZWZpeFJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3ApOwotICAgIH0K
LSAgICBpZiAobi0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKLSAgICAgICAgQnJhY2tldEFj
Y2Vzc29yTm9kZSAqYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4o
bik7Ci0gICAgICAgIHJldHVybiBuZXcgUHJlZml4QnJhY2tldE5vZGUoYnJhY2tldC0+YmFzZSgp
LCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3ApOwotICAgIH0KLSAgICBhc3NlcnQobi0+aXNEb3RB
Y2Nlc3Nvck5vZGUoKSk7Ci0gICAgRG90QWNjZXNzb3JOb2RlICpkb3QgPSBzdGF0aWNfY2FzdDxE
b3RBY2Nlc3Nvck5vZGUgKj4obik7Ci0gICAgcmV0dXJuIG5ldyBQcmVmaXhEb3ROb2RlKGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3ApOworCisgICAgcmV0dXJuIG5ldyBQcmVmaXhO
b2RlKHN0YXRpY19jYXN0PExvY2F0aW9uTm9kZSo+KG4pLCBvcCk7CiB9CiAKIHN0YXRpYyBOb2Rl
KiBtYWtlUG9zdGZpeE5vZGUoTm9kZSogZXhwciwgT3BlcmF0b3Igb3ApCkBAIC05MTcsMjkgKzkw
NiwxOCBAQCBzdGF0aWMgTm9kZSogbWFrZVBvc3RmaXhOb2RlKE5vZGUqIGV4cHIsCiAgICAgaWYg
KCFuLT5pc0xvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgUG9zdGZpeEVycm9yTm9kZShl
eHByLCBvcCk7CiAgICAgCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBS
ZXNvbHZlTm9kZSAqcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAg
ICAgICByZXR1cm4gbmV3IFBvc3RmaXhSZXNvbHZlTm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCks
IG9wKTsKLSAgICB9Ci0gICAgaWYgKG4tPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7Ci0gICAg
ICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUgKmJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNj
ZXNzb3JOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IFBvc3RmaXhCcmFja2V0Tm9kZShi
cmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCk7Ci0gICAgfQotICAgIGFz
c2VydChuLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9
IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICByZXR1cm4gbmV3IFBvc3Rm
aXhEb3ROb2RlKGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3ApOworICAgIHJldHVy
biBuZXcgUG9zdGZpeE5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25Ob2RlKj4obiksIG9wKTsKIH0K
IAogc3RhdGljIE5vZGUgKm1ha2VGdW5jdGlvbkNhbGxOb2RlKE5vZGUgKmZ1bmMsIEFyZ3VtZW50
c05vZGUgKmFyZ3MpCiB7CiAgICAgTm9kZSAqbiA9IGZ1bmMtPm5vZGVJbnNpZGVBbGxQYXJlbnMo
KTsKLSAgICAKKwogICAgIGlmICghbi0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3
IEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShmdW5jLCBhcmdzKTsKLSAgICBlbHNlIGlmIChuLT5pc1Jl
c29sdmVOb2RlKCkpIHsKLSAgICAgICAgUmVzb2x2ZU5vZGUgKnJlc29sdmUgPSBzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSAqPihuKTsKLSAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCksIGFyZ3MpOwotICAgIH0gZWxzZSBpZiAobi0+
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKKyAgICBlbHNlIGlmIChuLT5pc1ZhckFjY2Vzc05v
ZGUoKSkKKyAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlKHN0YXRp
Y19jYXN0PFZhckFjY2Vzc05vZGUqPihmdW5jKSwgYXJncyk7CisgICAgZWxzZSBpZiAobi0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAqYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7CiAgICAgICAgIGlm
IChuICE9IGZ1bmMpCiAgICAgICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbFBhcmVuQnJh
Y2tldE5vZGUoYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncyk7CkBA
IC05NTksMTAgKzkzNywxMyBAQCBzdGF0aWMgTm9kZSAqbWFrZVR5cGVPZk5vZGUoTm9kZSAqZXhw
cikKIHsKICAgICBOb2RlICpuID0gZXhwci0+bm9kZUluc2lkZUFsbFBhcmVucygpOwogCi0gICAg
aWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVzb2x2ZSA9
IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IFR5cGVP
ZlJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgfSBlbHNlCisgICAgLy8g
V2Ugb25seSBuZWVkIHRvIHVzZSB0aGUgc3BlY2lhbCBwYXRoIGZvciB2YXJpYWJsZSByZWZlcmVu
Y2VzLAorICAgIC8vIHNpbmNlIHRoZXkgbWF5IHRocm93IGEgUmVzb2x2ZUVycm9yIG9uIGV2YWx1
YXRlIHdoZXJlIHdlIGRvbid0CisgICAgLy8gd2FudCB0aGF0LgorCisgICAgaWYgKG4tPmlzVmFy
QWNjZXNzTm9kZSgpKQorICAgICAgICByZXR1cm4gbmV3IFR5cGVPZlJlZmVyZW5jZU5vZGUoc3Rh
dGljX2Nhc3Q8TG9jYXRpb25Ob2RlKj4obikpOworICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG5l
dyBUeXBlT2ZWYWx1ZU5vZGUoZXhwcik7CiB9CiAKQEAgLTk3MiwxNyArOTUzLDggQEAgc3RhdGlj
IE5vZGUgKm1ha2VEZWxldGVOb2RlKE5vZGUgKmV4cHIpCiAgICAgCiAgICAgaWYgKCFuLT5pc0xv
Y2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgRGVsZXRlVmFsdWVOb2RlKGV4cHIpOwotICAg
IGVsc2UgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVz
b2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3
IERlbGV0ZVJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgfSBlbHNlIGlm
IChuLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewotICAgICAgICBCcmFja2V0QWNjZXNzb3JO
b2RlICpicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSAqPihuKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyBEZWxldGVCcmFja2V0Tm9kZShicmFja2V0LT5iYXNlKCksIGJyYWNr
ZXQtPnN1YnNjcmlwdCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBhc3NlcnQobi0+aXNEb3RB
Y2Nlc3Nvck5vZGUoKSk7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlICo+KG4pOwotICAgICAgICByZXR1cm4gbmV3IERlbGV0ZURvdE5v
ZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpKTsKLSAgICB9CisgICAgZWxzZQorICAg
ICAgICByZXR1cm4gbmV3IERlbGV0ZVJlZmVyZW5jZU5vZGUoc3RhdGljX2Nhc3Q8TG9jYXRpb25O
b2RlKj4obikpOyAvLyAjIyMgbm90IDEwMCUgZmFpdGhmdWwgbGlzdGluZz8KIH0KIAogc3RhdGlj
IGJvb2wgbWFrZUdldHRlck9yU2V0dGVyUHJvcGVydHlOb2RlKFByb3BlcnR5Tm9kZSomIHJlc3Vs
dCwgSWRlbnRpZmllciYgZ2V0T3JTZXQsIElkZW50aWZpZXImIG5hbWUsIFBhcmFtZXRlck5vZGUg
KnBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSAqYm9keSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9pZGVudGlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2lkZW50aWZp
ZXIuaAkocmV2aXNpb24gMjUzODUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaWRlbnRpZmllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5hbWVzcGFjZSBLSlMgewogCiAgICAg
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IGNoYXIq
KTsKICAgICAKLSAgICAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFVTdHJpbmc6OlJlcCogKTsKKyAg
ICAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKFVTdHJpbmc6OlJlcCopOwogCiAgICAgICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IFVTdHJpbmc6OlJlcCosIGNvbnN0IGNoYXIqKTsKICAgICAgICAg
c3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVVN0cmluZzo6UmVwKiwgY29uc3QgVUNoYXIqLCBpbnQg
bGVuZ3RoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9pbnRlcm5hbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2ludGVybmFsLmNwcAkocmV2aXNpb24gMjUzODUpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEs
MzIgKzE2MSw2IEBAIEpTT2JqZWN0ICpHZXR0ZXJTZXR0ZXJJbXA6OnRvT2JqZWN0KEV4ZWMKICAg
ICByZXR1cm4ganNOdWxsKCktPnRvT2JqZWN0KGV4ZWMpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gTGFiZWxTdGFjayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1ib29sIExhYmVsU3RhY2s6OnB1c2goY29uc3QgSWRlbnRpZmllciAmaWQpCi17
Ci0gIGlmIChjb250YWlucyhpZCkpCi0gICAgcmV0dXJuIGZhbHNlOwotCi0gIFN0YWNrRWxlbSAq
bmV3dG9zID0gbmV3IFN0YWNrRWxlbTsKLSAgbmV3dG9zLT5pZCA9IGlkOwotICBuZXd0b3MtPnBy
ZXYgPSB0b3M7Ci0gIHRvcyA9IG5ld3RvczsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTGFi
ZWxTdGFjazo6Y29udGFpbnMoY29uc3QgSWRlbnRpZmllciAmaWQpIGNvbnN0Ci17Ci0gIGlmIChp
ZC5pc0VtcHR5KCkpCi0gICAgcmV0dXJuIHRydWU7Ci0KLSAgZm9yIChTdGFja0VsZW0gKmN1cnIg
PSB0b3M7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2KQotICAgIGlmIChjdXJyLT5pZCA9PSBpZCkK
LSAgICAgIHJldHVybiB0cnVlOwotCi0gIHJldHVybiBmYWxzZTsKLX0KLQogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEludGVybmFsRnVuY3Rpb25JbXAgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIEludGVybmFsRnVuY3Rpb25JbXA6OmluZm8g
PSB7IkZ1bmN0aW9uIiwgMCwgMCwgMH07CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJu
YWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuaAkocmV2aXNp
b24gMjUzODUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvaW50ZXJuYWwuaAkod29ya2luZyBjb3B5
KQpAQCAtODYsNDIgKzg2LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgZG91YmxlIHZhbDsKICAg
fTsKIAotCi0gIC8qKgotICAgKiBAc2hvcnQgVGhlICJsYWJlbCBzZXQiIGluIEVjbWEtMjYyIHNw
ZWMKLSAgICovCi0gIGNsYXNzIExhYmVsU3RhY2sgOiBOb25jb3B5YWJsZSB7Ci0gIHB1YmxpYzoK
LSAgICBMYWJlbFN0YWNrKCkKLSAgICAgIDogdG9zKDApCi0gICAgewotICAgIH0KLSAgICB+TGFi
ZWxTdGFjaygpOwotCi0gICAgLyoqCi0gICAgICogSWYgaWQgaXMgbm90IGVtcHR5IGFuZCBpcyBu
b3QgaW4gdGhlIHN0YWNrIGFscmVhZHksIHB1dHMgaXQgb24gdG9wIG9mCi0gICAgICogdGhlIHN0
YWNrIGFuZCByZXR1cm5zIHRydWUsIG90aGVyd2lzZSByZXR1cm5zIGZhbHNlCi0gICAgICovCi0g
ICAgYm9vbCBwdXNoKGNvbnN0IElkZW50aWZpZXIgJmlkKTsKLSAgICAvKioKLSAgICAgKiBJcyB0
aGUgaWQgaW4gdGhlIHN0YWNrPwotICAgICAqLwotICAgIGJvb2wgY29udGFpbnMoY29uc3QgSWRl
bnRpZmllciAmaWQpIGNvbnN0OwotICAgIC8qKgotICAgICAqIFJlbW92ZXMgZnJvbSB0aGUgc3Rh
Y2sgdGhlIGxhc3QgcHVzaGVkIGlkICh3aGF0IGVsc2U/KQotICAgICAqLwotICAgIHZvaWQgcG9w
KCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdHJ1Y3QgU3RhY2tFbGVtIHsKLSAgICAgIElkZW50aWZp
ZXIgaWQ7Ci0gICAgICBTdGFja0VsZW0gKnByZXY7Ci0gICAgfTsKLQotICAgIFN0YWNrRWxlbSAq
dG9zOwotICB9OwotCi0KICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV2YWx1YXRpb24KICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0x
NDksMjMgKzExMyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICB2b2lkIHByaW50SW5mbyhFeGVjU3Rh
dGUgKmV4ZWMsIGNvbnN0IGNoYXIgKnMsIEpTVmFsdWUgKiwgaW50IGxpbmVubyA9IC0xKTsKICNl
bmRpZgogCi1pbmxpbmUgTGFiZWxTdGFjazo6fkxhYmVsU3RhY2soKQotewotICAgIFN0YWNrRWxl
bSAqcHJldjsKLSAgICBmb3IgKFN0YWNrRWxlbSAqZSA9IHRvczsgZTsgZSA9IHByZXYpIHsKLSAg
ICAgICAgcHJldiA9IGUtPnByZXY7Ci0gICAgICAgIGRlbGV0ZSBlOwotICAgIH0KLX0KLQotaW5s
aW5lIHZvaWQgTGFiZWxTdGFjazo6cG9wKCkKLXsKLSAgICBpZiAoU3RhY2tFbGVtICplID0gdG9z
KSB7Ci0gICAgICAgIHRvcyA9IGUtPnByZXY7Ci0gICAgICAgIGRlbGV0ZSBlOwotICAgIH0KLX0K
LQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vICBJTlRFUk5BTF9ICkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS9ranMvaW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2tqcy9pbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL2ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmluaXRHbG9iYWxPYmplY3QoKQogICAgIG1fRnVuY3Rpb25Qcm90b3R5
cGUgPSBuZXcgRnVuY3Rpb25Qcm90b3R5cGUoJm1fZ2xvYmFsRXhlYyk7CiAgICAgbV9PYmplY3RQ
cm90b3R5cGUgPSBuZXcgT2JqZWN0UHJvdG90eXBlKCZtX2dsb2JhbEV4ZWMsIG1fRnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgIG1fRnVuY3Rpb25Qcm90b3R5cGUtPnNldFByb3RvdHlwZShtX09iamVj
dFByb3RvdHlwZSk7Ci0gICAgCisKICAgICBtX0FycmF5UHJvdG90eXBlID0gbmV3IEFycmF5UHJv
dG90eXBlKCZtX2dsb2JhbEV4ZWMsIG1fT2JqZWN0UHJvdG90eXBlKTsKICAgICBtX1N0cmluZ1By
b3RvdHlwZSA9IG5ldyBTdHJpbmdQcm90b3R5cGUoJm1fZ2xvYmFsRXhlYywgbV9PYmplY3RQcm90
b3R5cGUpOwogICAgIG1fQm9vbGVhblByb3RvdHlwZSA9IG5ldyBCb29sZWFuUHJvdG90eXBlKCZt
X2dsb2JhbEV4ZWMsIG1fT2JqZWN0UHJvdG90eXBlLCBtX0Z1bmN0aW9uUHJvdG90eXBlKTsKQEAg
LTM2NSw3ICszNjUsNyBAQCBDb21wbGV0aW9uIEludGVycHJldGVyOjpldmFsdWF0ZShjb25zdCBV
CiAgICAgICAgIENvbnRleHQgY3R4KGdsb2JhbE9iaiwgdGhpcywgdGhpc09iaiwgcHJvZ05vZGUu
Z2V0KCkpOwogICAgICAgICBFeGVjU3RhdGUgbmV3RXhlYyh0aGlzLCAmY3R4KTsKICAgICAgICAg
Y3R4LnNldEV4ZWNTdGF0ZSgmbmV3RXhlYyk7Ci0gICAgICAgIHByb2dOb2RlLT5wcm9jZXNzVmFy
RGVjbHMoJm5ld0V4ZWMpOworICAgICAgICBwcm9nTm9kZS0+cHJvY2Vzc0RlY2xzKCZuZXdFeGVj
KTsKICAgICAgICAgcmVzID0gcHJvZ05vZGUtPmV4ZWN1dGUoJm5ld0V4ZWMpOwogICAgIH0KICAg
ICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9saXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9ranMvbGlzdC5jcHAJKHJldmlzaW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENv
cmUva2pzL2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDIyIEBAIExpc3Q6
Okxpc3QoKSA6IF9pbXBCYXNlKGFsbG9jYXRlTGlzdEltcCgKICNlbmRpZgogfQogCitMaXN0OjpM
aXN0KGJvb2wgbmVlZHNNYXJraW5nKSA6IF9pbXBCYXNlKGFsbG9jYXRlTGlzdEltcCgpKQorewor
ICAgIExpc3RJbXAgKmltcCA9IHN0YXRpY19jYXN0PExpc3RJbXAgKj4oX2ltcEJhc2UpOworICAg
IGltcC0+c2l6ZSA9IDA7CisgICAgaW1wLT5yZWZDb3VudCA9IDE7CisgICAgaW1wLT52YWx1ZVJl
ZkNvdW50ID0gIW5lZWRzTWFya2luZzsKKyAgICBpbXAtPmNhcGFjaXR5ID0gMDsKKyAgICBpbXAt
Pm92ZXJmbG93ID0gMDsKKworI2lmIERVTVBfU1RBVElTVElDUworICAgIGlmICgrK251bUxpc3Rz
ID4gbnVtTGlzdHNIaWdoV2F0ZXJNYXJrKQorICAgICAgICBudW1MaXN0c0hpZ2hXYXRlck1hcmsg
PSBudW1MaXN0czsKKyAgICBpbXAtPnNpemVIaWdoV2F0ZXJNYXJrID0gMDsKKyNlbmRpZgorfQor
CiB2b2lkIExpc3Q6Om1hcmtWYWx1ZXMoKQogewogICAgIHN0YXRpY19jYXN0PExpc3RJbXAgKj4o
X2ltcEJhc2UpLT5tYXJrVmFsdWVzKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbGlzdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9saXN0LmgJKHJldmlzaW9uIDI1Mzg1
KQorKysgSmF2YVNjcmlwdENvcmUva2pzL2xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBjbGFzcyBMaXN0IHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIExpc3QoKTsKKyAgICAgICAgZXhwbGljaXQgTGlzdChib29sIG5lZWRzTWFya2luZyk7
CiAgICAgICAgIH5MaXN0KCkgeyBkZXJlZigpOyB9CiAKICAgICAgICAgTGlzdChjb25zdCBMaXN0
ICZiKSA6IF9pbXBCYXNlKGIuX2ltcEJhc2UpIHsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9u
b2RlczJzdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJz
dHJpbmcuY3BwCShyZXZpc2lvbiAyNTM4NSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9ub2RlczJz
dHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChjaGFyKTsKICAgICBTb3VyY2VTdHJlYW0m
IG9wZXJhdG9yPDwoRm9ybWF0IGYpOwogICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChjb25z
dCBOb2RlICopOworICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChPcGVyYXRvciBvcCk7IC8v
IEZJWE1FOiBhZGQgS0pTX05PX0lOTElORQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBTb3Vy
Y2VTdHJlYW0mIG9wZXJhdG9yPDwoUmVmUHRyPFQ+IG4pIHsgcmV0dXJuIHRoaXMtPm9wZXJhdG9y
PDwobi5nZXQoKSk7IH0KIAogICBwcml2YXRlOgpAQCAtMTI1LDYgKzEyNiwxMiBAQCBTb3VyY2VT
dHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PChGCiAgIHJldHVybiAqdGhpczsKIH0KIAor
U291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoT3BlcmF0b3Igb3ApCit7Cisg
IGFzc2VydChvcCA9PSBPcFBsdXNQbHVzIHx8IG9wID09IE9wTWludXNNaW51cyk7CisgIHJldHVy
biAqdGhpcyA8PCAoKG9wID09IE9wUGx1c1BsdXMpID8gIisrIiA6ICItLSIpOworfQorCiBVU3Ry
aW5nIE5vZGU6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgU291cmNlU3RyZWFtIHN0cjsKQEAgLTE1
NCw3ICsxNjEsNyBAQCB2b2lkIFJlZ0V4cE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmCiAK
IHZvaWQgVGhpc05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QgeyBzIDw8ICJ0
aGlzIjsgfQogCi12b2lkIFJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNv
bnN0IHsgcyA8PCBpZGVudDsgfQordm9pZCBWYXJBY2Nlc3NOb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0gJnMpIGNvbnN0IHsgcyA8PCBpZGVudDsgfQogCiB2b2lkIEdyb3VwTm9kZTo6c3RyZWFt
VG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewpAQCAtMjYwLDkgKzI2Nyw5IEBAIHZvaWQgRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlOjpzdHJlYW1UbyhTb3UKICAgcyA8PCBleHByIDw8IGFyZ3M7CiB9
CiAKLXZvaWQgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3QKK3ZvaWQgRnVuY3Rpb25DYWxsUmVmZXJlbmNlTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtICZzKSBjb25zdAogewotICBzIDw8IGlkZW50IDw8IGFyZ3M7CisgIHMgPDwgZXhwciA8
PCBhcmdzOwogfQogCiB2b2lkIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0gJnMpIGNvbnN0CkBAIC0yODIsMzQgKzI4OSwxMiBAQCB2b2lkIEZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OnN0cmVhbVRvKFNvdXJjCiAKIHZvaWQgRnVuY3Rpb25DYWxsUGFyZW5Eb3ROb2Rl
OjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7Ci0gIHMgPDwgIigiIDw8IFNvdXJj
ZVN0cmVhbTo6RG90RXhwciA8PCBiYXNlIDw8ICIuIiA8PCBpZGVudCA8PCAiKSIgPDwgYXJnczsK
LX0KLQotdm9pZCBQb3N0Zml4UmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKLXsKLSAgcyA8PCBtX2lkZW50OwotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0g
ICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOwotfQotCi12b2lkIFBvc3RmaXhC
cmFja2V0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAotewotICBzIDw8IG1f
YmFzZSA8PCAiWyIgPDwgbV9zdWJzY3JpcHQgPDwgIl0iOwotICBpZiAobV9vcGVyID09IE9wUGx1
c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOworICBzIDw8ICIo
IiA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgYmFzZSA8PCAnLicgPDwgaWRlbnQgPDwgIiki
IDw8IGFyZ3M7CiB9CiAKLXZvaWQgUG9zdGZpeERvdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSAmcykgY29uc3QKK3ZvaWQgUG9zdGZpeE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgbV9iYXNlIDw8ICIuIiA8
PCBtX2lkZW50OwotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwot
ICBlbHNlCi0gICAgcyA8PCAiLS0iOworICBzIDw8IG1fbG9jIDw8IG1fb3BlcjsKIH0KIAogdm9p
ZCBQb3N0Zml4RXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CkBAIC0z
MjEsMTkgKzMwNiw5IEBAIHZvaWQgUG9zdGZpeEVycm9yTm9kZTo6c3RyZWFtVG8oU291cmNlU3QK
ICAgICBzIDw8ICItLSI7CiB9CiAKLXZvaWQgRGVsZXRlUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSAmcykgY29uc3QKLXsKLSAgcyA8PCAiZGVsZXRlICIgPDwgbV9pZGVudDsKLX0K
LQotdm9pZCBEZWxldGVCcmFja2V0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25z
dAotewotICBzIDw8ICJkZWxldGUgIiA8PCBtX2Jhc2UgPDwgIlsiIDw8IG1fc3Vic2NyaXB0IDw8
ICJdIjsKLX0KLQotdm9pZCBEZWxldGVEb3ROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMp
IGNvbnN0Cit2b2lkIERlbGV0ZVJlZmVyZW5jZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3QKIHsKLSAgcyA8PCAiZGVsZXRlICIgPDwgU291cmNlU3RyZWFtOjpEb3RFeHByIDw8
IG1fYmFzZSA8PCAiLiIgPDwgbV9pZGVudDsKKyAgcyA8PCAiZGVsZXRlICIgPDwgbG9jOwogfQog
CiB2b2lkIERlbGV0ZVZhbHVlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdApA
QCAtMzUxLDM2ICszMjYsMTQgQEAgdm9pZCBUeXBlT2ZWYWx1ZU5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cgogICBzIDw8ICJ0eXBlb2YgIiA8PCBtX2V4cHI7CiB9CiAKLXZvaWQgVHlwZU9mUmVzb2x2
ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKLXsKLSAgcyA8PCAidHlwZW9m
ICIgPDwgbV9pZGVudDsKLX0KLQotdm9pZCBQcmVmaXhSZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtICZzKSBjb25zdAotewotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0gICAg
cyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOwotICBzIDw8IG1faWRlbnQ7Ci19Ci0K
LXZvaWQgUHJlZml4QnJhY2tldE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QK
K3ZvaWQgVHlwZU9mUmVmZXJlbmNlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25z
dAogewotICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNl
Ci0gICAgcyA8PCAiLS0iOwotICBzIDw8IG1fYmFzZSA8PCAiWyIgPDwgbV9zdWJzY3JpcHQgPDwg
Il0iOworICBzIDw8ICJ0eXBlb2YgIiA8PCBsb2M7CiB9CiAKLXZvaWQgUHJlZml4RG90Tm9kZTo6
c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBQcmVmaXhOb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0CiB7Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykK
LSAgICBzIDw8ICIrKyI7Ci0gIGVsc2UKLSAgICBzIDw8ICItLSI7Ci0gIHMgPDwgU291cmNlU3Ry
ZWFtOjpEb3RFeHByIDw8IG1fYmFzZSA8PCAiLiIgPDwgbV9pZGVudDsKKyAgcyA8PCBtX29wZXIg
PDwgbV9sb2M7CiB9CiAKIHZvaWQgUHJlZml4RXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mIHMpIGNvbnN0CkBAIC01NTIsOSArNTA1LDkgQEAgc3RhdGljIHZvaWQgc3RyZWFtQXNzaWdu
bWVudE9wZXJhdG9yVG8oUwogICBzIDw8IG9wU3RyOwogfQogCi12b2lkIEFzc2lnblJlc29sdmVO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEFzc2lnbk5vZGU6OnN0
cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKIHsKLSAgcyA8PCBtX2lkZW50OworICBzIDw8
IG1fbG9jOwogICBzdHJlYW1Bc3NpZ25tZW50T3BlcmF0b3JUbyhzLCBtX29wZXIpOwogICBzIDw8
IG1fcmlnaHQ7CiB9CkBAIC02MDcsNiArNTYwLDExIEBAIHZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6
c3RyZWFtVG8oU291cmNlU3QKICAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGwgPDwgbmV4dCA8PCAi
OyI7CiB9CiAKK3ZvaWQgU3RhdGljVmFyU3RhdGVtZW50Tm9kZTo6c3RyZWFtVG8oU291cmNlU3Ry
ZWFtICZzKSBjb25zdAoreworICBzIDw8IG9yaWdpbmFsU3RhdGVtZW50OworfQorCiB2b2lkIEJs
b2NrTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAogewogICBzIDw8IFNvdXJj
ZVN0cmVhbTo6RW5kbCA8PCAieyIgPDwgU291cmNlU3RyZWFtOjpJbmRlbnQKQEAgLTc3NCwzICs3
MzIsOCBAQCB2b2lkIFNvdXJjZUVsZW1lbnRzTm9kZTo6c3RyZWFtVG8oU291cmNlCiAgIGZvciAo
Y29uc3QgU291cmNlRWxlbWVudHNOb2RlICpuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkp
CiAgICAgcyA8PCBuLT5ub2RlOwogfQorCit2b2lkIEVycm9yTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtJiBzKSBjb25zdAoreworICBzIDw8IGtpZDsKK30KSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmNw
cAkocmV2aXNpb24gMjUzODUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA3IENhbWVyb24gWndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgTWFrc2ltIE9ybG92aWNoIChtYWtzaW1Aa2RlLm9yZykKICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0zNywxMSArMzgsMTIgQEAKICNpbmNsdWRlICJsZXhlci5oIgog
I2luY2x1ZGUgIm9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgor
I2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxpbmUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7CituYW1lc3BhY2UgS0pTIHsKIAogI2RlZmluZSBL
SlNfQlJFQUtQT0lOVCBcCiAgIGlmIChEZWJ1Z2dlcjo6ZGVidWdnZXJzUHJlc2VudCA+IDAgJiYg
IWhpdFN0YXRlbWVudChleGVjKSkgXApAQCAtNzEsNiArNzMsMTcgQEAgdXNpbmcgbmFtZXNwYWNl
IEtKUzsKICAgaWYgKENvbGxlY3Rvcjo6aXNPdXRPZk1lbW9yeSgpKSBcCiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7IC8vIHdpbGwgYmUgcGlja2VkIHVwIGJ5IEtKU19DSEVDS0VYQ0VQVElPTgog
CisjZGVmaW5lIEtKU19DSEVDS0VYQ0VQVElPTlJFRkVSRU5DRSBcCisgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgeyBcCisgICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOyBcCisgICAgcmVmLmZv
dW5kID0gdHJ1ZTsgXAorICAgIHJldHVybiByZWY7IFwKKyAgfSBcCisgIGlmIChDb2xsZWN0b3I6
OmlzT3V0T2ZNZW1vcnkoKSkgeyBcCisgICAgcmVmLmZvdW5kID0gdHJ1ZTsgXAorICAgIHJldHVy
biByZWY7IFwKKyAgfQorCiAjZGVmaW5lIEtKU19DSEVDS0VYQ0VQVElPTkxJU1QgXAogICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsgXAogICAgIGhhbmRsZUV4Y2VwdGlvbihleGVjKTsgXApA
QCAtMjE3LDYgKzIzMCwxOCBAQCBDb21wbGV0aW9uIE5vZGU6OmNyZWF0ZUVycm9yQ29tcGxldGlv
bihFCiAgICAgcmV0dXJuIENvbXBsZXRpb24oVGhyb3csIEVycm9yOjpjcmVhdGUoZXhlYywgZSwg
bWVzc2FnZSwgbGluZU5vKCksIGN1cnJlbnRTb3VyY2VJZChleGVjKSwgY3VycmVudFNvdXJjZVVS
TChleGVjKSkpOwogfQogCitOb2RlKiBOb2RlOjpjcmVhdGVFcnJvck5vZGUoRXJyb3JUeXBlIGUs
IGNvbnN0IGNoYXIgKm1zZykKK3sKKyAgICByZXR1cm4gbmV3IEVycm9yTm9kZSh0aGlzLCBlLCBt
c2cpOworfQorCitOb2RlKiBOb2RlOjpjcmVhdGVFcnJvck5vZGUoRXJyb3JUeXBlIGUsIGNvbnN0
IGNoYXIgKm1zZywgY29uc3QgSWRlbnRpZmllciAmaWRlbnQpCit7CisgICAgVVN0cmluZyBtZXNz
YWdlID0gbXNnOworICAgIHN1YnN0aXR1dGUobWVzc2FnZSwgaWRlbnQudXN0cmluZygpKTsKKyAg
ICByZXR1cm4gbmV3IEVycm9yTm9kZSh0aGlzLCBlLCBtZXNzYWdlKTsKK30KKwogSlNWYWx1ZSAq
Tm9kZTo6dGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yVHlwZSBlLCBjb25zdCBjaGFy
ICptc2cpCiB7CiAgICAgcmV0dXJuIEtKUzo6dGhyb3dFcnJvcihleGVjLCBlLCBtc2csIGxpbmVO
bygpLCBjdXJyZW50U291cmNlSWQoZXhlYyksIGN1cnJlbnRTb3VyY2VVUkwoZXhlYykpOwpAQCAt
MzAzLDYgKzMyOCw3MCBAQCBOb2RlICpOb2RlOjpub2RlSW5zaWRlQWxsUGFyZW5zKCkKICAgICBy
ZXR1cm4gdGhpczsKIH0KIAorTm9kZVZpc2l0b3I6On5Ob2RlVmlzaXRvcigpCit7Cit9CisKK2Ns
YXNzIFZhckRlY2xWaXNpdG9yOiBwdWJsaWMgTm9kZVZpc2l0b3IgeworICBwcml2YXRlOgorICAg
IEV4ZWNTdGF0ZSogbV9leGVjOworICBwdWJsaWM6CisgICAgVmFyRGVjbFZpc2l0b3IoRXhlY1N0
YXRlKiBleGVjKSA6IG1fZXhlYyhleGVjKQorICAgIHt9CisKKyAgICB2aXJ0dWFsIE5vZGUqIHZp
c2l0KE5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEwgeworICAgICAgbm9kZS0+cHJvY2Vzc1ZhckRl
Y2wobV9leGVjKTsKKworICAgICAgLy9EbyBub3QgcmVjdXJzZSBpbnNpZGUgZnVuY3Rpb24gYm9k
aWVzLi4uCisgICAgICBpZiAobm9kZS0+aW50cm9kdWNlc05ld1N0YXRpY1Njb3BlKCkpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgICByZXR1cm4gTm9kZVZpc2l0b3I6OnZpc2l0KG5vZGUpOwor
ICAgIH0KK307CisKK2NsYXNzIEZ1bmNEZWNsVmlzaXRvciA6IHB1YmxpYyBOb2RlVmlzaXRvciB7
CisgIHByaXZhdGU6CisgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CisgIHB1YmxpYzoKKyAgICBGdW5j
RGVjbFZpc2l0b3IoRXhlY1N0YXRlKiBleGVjKSA6IG1fZXhlYyhleGVjKQorICAgIHt9CisKKyAg
ICB2aXJ0dWFsIE5vZGUqIHZpc2l0KE5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEwgeworICAgICAg
bm9kZS0+cHJvY2Vzc0Z1bmNEZWNsKG1fZXhlYyk7CisKKyAgICAgIGlmIChub2RlLT5pbnRyb2R1
Y2VzTmV3U3RhdGljU2NvcGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgIHJldHVybiBO
b2RlVmlzaXRvcjo6dmlzaXQobm9kZSk7CisgICAgfQorfTsKKwordm9pZCBOb2RlOjpwcm9jZXNz
RGVjbHMoRXhlY1N0YXRlICpleGVjKSB7CisgIFZhckRlY2xWaXNpdG9yIHZWaXNpdChleGVjKTsK
KyAgdlZpc2l0LnZpc2l0KHRoaXMpOworCisgIEZ1bmNEZWNsVmlzaXRvciBmVmlzaXQoZXhlYyk7
CisgIGZWaXNpdC52aXNpdCh0aGlzKTsKK30KKwordm9pZCBOb2RlOjpwcm9jZXNzVmFyRGVjbChF
eGVjU3RhdGUqKQore30KKwordm9pZCBOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKikK
K3t9CisKK05vZGUqIE5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlKQoreworICAgIHJldHVybiAwOworfQorCisvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTm9kZVZpc2l0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorTm9kZSogTm9kZVZpc2l0b3I6OnZpc2l0KE5vZGUgKm5vZGUpIHsKKyAg
bm9kZS0+cmVjdXJzZVZpc2l0KHRoaXMpOworICByZXR1cm4gMDsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZSgpIApAQCAtMzI3LDEw
ICs0MTYsNiBAQCBib29sIFN0YXRlbWVudE5vZGU6OmhpdFN0YXRlbWVudChFeGVjU3RhCiAgICAg
cmV0dXJuIHRydWU7IC8vIGNvbnRpbnVlCiB9CiAKLXZvaWQgU3RhdGVtZW50Tm9kZTo6cHJvY2Vz
c0Z1bmNEZWNsKEV4ZWNTdGF0ZSopCi17Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBOdWxsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
IEpTVmFsdWUgKk51bGxOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKikKQEAgLTM3OSwzMSArNDY0
LDE2NiBAQCBKU1ZhbHVlICpUaGlzTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICplCiAgIHJldHVy
biBleGVjLT5jb250ZXh0KCktPnRoaXNWYWx1ZSgpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZhckFjY2Vzc05vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSlNWYWx1ZSogVmFyQWNjZXNzTm9kZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKSB7CisgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0g
ZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7CisgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVy
ID0gY2hhaW4uYmVnaW4oKTsKKyAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgp
OworCisgIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFp
bgorICBhc3NlcnQoaXRlciAhPSBlbmQpOworCisgIFByb3BlcnR5U2xvdCBzbG90OworICBKU09i
amVjdCAqc2NvcGVPYmo7CisgIGRvIHsKKyAgICBzY29wZU9iaiA9ICppdGVyOworCisgICAgaWYg
KHNjb3BlT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgcmV0
dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgc2NvcGVPYmosIGlkZW50KTsKKworICAgICsraXRlcjsK
KyAgfSB3aGlsZSAoaXRlciAhPSBlbmQpOworCisgIHJldHVybiB0aHJvd1VuZGVmaW5lZFZhcmlh
YmxlRXJyb3IoZXhlYywgaWRlbnQpOworfQorCitSZWZlcmVuY2UgVmFyQWNjZXNzTm9kZTo6ZXZh
bHVhdGVSZWZlcmVuY2UoRXhlY1N0YXRlKiBleGVjKSB7CisgIFJlZmVyZW5jZSByZWYoaWRlbnQp
OworICByZWYuZm91bmQgPSB0cnVlOworICBpbnQgbGVuZ3RoID0gMDsKKworICBjb25zdCBTY29w
ZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOworICBTY29wZUNo
YWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7CisgIFNjb3BlQ2hhaW5JdGVyYXRvciBl
bmQgPSBjaGFpbi5lbmQoKTsKKworICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBp
biB0aGUgc2NvcGUgY2hhaW4KKyAgYXNzZXJ0KGl0ZXIgIT0gZW5kKTsKKworICBKU09iamVjdCAq
c2NvcGVPYmo7CisgIGRvIHsKKyAgICBzY29wZU9iaiA9ICppdGVyOworICAgIHJlZi5iYXNlID0g
c2NvcGVPYmo7CisKKyAgICBpZiAoc2NvcGVPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgcmVmLnByb3BlcnR5U2xvdCkpCisgICAgICByZXR1cm4gcmVmOworCisgICAgKytpdGVyOwor
ICAgICsrbGVuZ3RoOworICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CisKKyAgcmVmLmZvdW5kID0g
ZmFsc2U7CisgIHJlZi5wcm9wZXJ0eVNsb3Quc2V0VW5kZWZpbmVkKHNjb3BlT2JqKTsgLy9vdXRl
cm1vc3Qgc2NvcGUuCisgIHJldHVybiByZWY7Cit9CisKK05vZGUqIFZhckFjY2Vzc05vZGU6Om9w
dGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2Rl
KQoreworICBpbnQgaW5kZXggPSBub2RlLT5sb29rdXBTeW1ib2xJRChpZGVudCk7CisKKyAgLy8g
SWYgdGhlIHN5bWJvbCBpc24ndCBsb2NhbCwgd2UgY2FuIHN0aWxsIG9wdGltaXplIAorICAvLyBh
IGJpdCwgYW5kIHNraXAgdGhlIGxvY2FsIHNjb3BlIGZvciBsb29rdXAuCisgIC8vICh1bmxlc3Mg
J2V2YWwnIGluamVjdHMgYSBuZXcgbG9jYWwsIGJ1dCBOb25Mb2NhbFJlc29sdmVyCisgIC8vIGlz
IGNhcmVmdWwgYWJvdXQgdGhhdCkKKyAgaWYgKGluZGV4ID09IC0xKSB7CisgICAgaWYgKGlkZW50
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpCisgICAgICByZXR1cm4gMDsgLy9E
eW5hbWljIHByb3BlcnR5Li4KKworICAgIHJldHVybiBuZXcgTm9uTG9jYWxWYXJBY2Nlc3NOb2Rl
KGlkZW50KTsKKyAgfQorCisgIHJldHVybiBuZXcgTG9jYWxWYXJBY2Nlc3NOb2RlKGlkZW50LCBp
bmRleCk7Cit9CisKK2ludCBWYXJBY2Nlc3NOb2RlOjpsb2NhbElEKEZ1bmN0aW9uQm9keU5vZGUq
IG5vZGUpCit7CisgIHJldHVybiBub2RlLT5sb29rdXBTeW1ib2xJRChpZGVudCk7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2NhbFZhckFjY2Vzc05vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSlNWYWx1ZSogTG9jYWxWYXJBY2Nlc3NOb2Rl
OjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCit7CisgIEFjdGl2YXRpb25JbXAqIHNjb3BlID0g
c3RhdGljX2Nhc3Q8QWN0aXZhdGlvbkltcCo+KGV4ZWMtPmNvbnRleHQoKS0+YWN0aXZhdGlvbk9i
amVjdCgpKTsKKyAgcmV0dXJuICpzY29wZS0+Z2V0TG9jYWxEaXJlY3QoaW5kZXgpOworfQogCi0v
LyBFQ01BIDExLjEuMiAmIDEwLjEuNAotSlNWYWx1ZSAqUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSAqZXhlYykKK1JlZmVyZW5jZSBMb2NhbFZhckFjY2Vzc05vZGU6OmV2YWx1YXRlUmVm
ZXJlbmNlKEV4ZWNTdGF0ZSAqZXhlYykKIHsKKyAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0
aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0
KCkpOworICBSZWZlcmVuY2UgcmVmKGlkZW50KTsgLy8jIyMgRklYTUU6IHRoZSBpZGVudCBpcyBm
b3IgZGVsZXRlLCBidXQgaXQgbWFrZXMgaXQgdGFrZSB0aGUgc3VwZXItc2xvdyBwYXRoLi4KKyAg
cmVmLmJhc2UgID0gc2NvcGU7CisgIHJlZi5mb3VuZCA9IHRydWU7CisgIHJlZi5wcm9wZXJ0eVNs
b3Quc2V0UG90ZW50aWFsbHlXcml0ZWFibGUoKTsKKyAgcmVmLnByb3BlcnR5U2xvdC5zZXRWYWx1
ZVNsb3Qoc2NvcGUsIHNjb3BlLT5nZXRMb2NhbERpcmVjdChpbmRleCksIHNjb3BlLT5pc0xvY2Fs
UmVhZE9ubHkoaW5kZXgpKTsKKyAgcmV0dXJuIHJlZjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIE5vbkxvY2FsVmFyQWNjZXNzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworSlNWYWx1ZSogTm9uTG9jYWxWYXJBY2Nlc3NOb2RlOjpldmFsdWF0ZShFeGVjU3Rh
dGUqIGV4ZWMpIHsKICAgY29uc3QgU2NvcGVDaGFpbiYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCkt
PnNjb3BlQ2hhaW4oKTsKICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigp
OwogICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0gY2hhaW4uZW5kKCk7Ci0gIAorCiAgIC8vIHdl
IG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgogICBhc3NlcnQo
aXRlciAhPSBlbmQpOwogCiAgIFByb3BlcnR5U2xvdCBzbG90OwotICBkbyB7IAotICAgIEpTT2Jq
ZWN0ICpvID0gKml0ZXI7CisgIEpTT2JqZWN0ICpzY29wZU9iaiA9ICppdGVyOworCisgIGlmICgh
c2NvcGVPYmotPmlzTG9jYWxJbmplY3RlZCgpKSB7CisgICAgLy8gVW5sZXNzIGV2YWwgaW50cm9k
dWNlZCBuZXcgdmFyaWFibGVzIGR5bmFtaWNhbGx5LAorICAgIC8vIHdlIGtub3cgdGhpcyBpc24n
dCBpbiB0aGUgdG9wIHNjb3BlCisgICAgKytpdGVyOworICB9CisKKyAgZG8geworICAgIHNjb3Bl
T2JqID0gKml0ZXI7CisKKyAgICBpZiAoc2NvcGVPYmotPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpCisgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBzY29wZU9iaiwg
aWRlbnQpOwogCi0gICAgaWYgKG8tPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkp
Ci0gICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZShleGVjLCBvLCBpZGVudCk7Ci0gICAgCiAgICAg
KytpdGVyOwogICB9IHdoaWxlIChpdGVyICE9IGVuZCk7CiAKICAgcmV0dXJuIHRocm93VW5kZWZp
bmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CiB9CiAKK1JlZmVyZW5jZSBOb25Mb2NhbFZh
ckFjY2Vzc05vZGU6OmV2YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSogZXhlYykgeworICBSZWZl
cmVuY2UgcmVmKGlkZW50KTsKKyAgcmVmLmZvdW5kID0gdHJ1ZTsKKworICBjb25zdCBTY29wZUNo
YWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOworICBTY29wZUNoYWlu
SXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7CisgIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQg
PSBjaGFpbi5lbmQoKTsKKworICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBpbiB0
aGUgc2NvcGUgY2hhaW4KKyAgYXNzZXJ0KGl0ZXIgIT0gZW5kKTsKKworICBKU09iamVjdCAqc2Nv
cGVPYmogPSAqaXRlcjsKKyAgaWYgKCFzY29wZU9iai0+aXNMb2NhbEluamVjdGVkKCkpIHsKKyAg
IC8vIFVubGVzcyBldmFsIGludHJvZHVjZWQgbmV3IHZhcmlhYmxlcyBkeW5hbWljYWxseSwKKyAg
IC8vIHdlIGtub3cgdGhpcyBpc24ndCBpbiB0aGUgdG9wIHNjb3BlCisgICArK2l0ZXI7CisgIH0K
KworICBkbyB7CisgICAgc2NvcGVPYmogPSAqaXRlcjsKKyAgICByZWYuYmFzZSA9IHNjb3BlT2Jq
OworCisgICAgaWYgKHNjb3BlT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHJlZi5w
cm9wZXJ0eVNsb3QpKQorICAgICAgcmV0dXJuIHJlZjsKKworICAgICsraXRlcjsKKyAgfSB3aGls
ZSAoaXRlciAhPSBlbmQpOworCisgIHJlZi5iYXNlID0gc2NvcGVPYmo7CisgIHJlZi5mb3VuZCA9
IGZhbHNlOworICByZWYucHJvcGVydHlTbG90LnNldFVuZGVmaW5lZChzY29wZU9iaik7IC8vb3V0
ZXJtb3N0IHNjb3BlLgorICByZXR1cm4gcmVmOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gR3JvdXBOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAvLyBFQ01BIDExLjEuNgpAQCAtNDIxLDYgKzY0MSwxMSBAQCBOb2RlICpHcm91cE5vZGU6
Om5vZGVJbnNpZGVBbGxQYXJlbnMoKQogICAgIHJldHVybiBuOwogfQogCit2b2lkIEdyb3VwTm9k
ZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgZ3JvdXApOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0gRWxlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAv
LyBFQ01BIDExLjEuNApAQCAtNDQyLDYgKzY2NywxMiBAQCB2b2lkIEVsZW1lbnROb2RlOjpicmVh
a0N5Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgRWxlbWVudE5vZGU6OnJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIG5leHQpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbm9kZSk7Cit9CisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcnJheU5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMS40CkBAIC00NjYsNiArNjk3LDEx
IEBAIEpTVmFsdWUgKkFycmF5Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICoKICAgcmV0dXJuIGFy
cmF5OwogfQogCit2b2lkIEFycmF5Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZWxlbWVudCk7Cit9CisKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBPYmplY3RMaXRlcmFsTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMS41CkBAIC00NzcsNiArNzEzLDEx
IEBAIEpTVmFsdWUgKk9iamVjdExpdGVyYWxOb2RlOjpldmFsdWF0ZShFeGUKICAgcmV0dXJuIGV4
ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluT2JqZWN0KCktPmNvbnN0cnVjdChleGVj
LExpc3Q6OmVtcHR5KCkpOwogfQogCit2b2lkIE9iamVjdExpdGVyYWxOb2RlOjpyZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9y
LCBsaXN0KTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3BlcnR5
TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xLjUK
QEAgLTUxNCw2ICs3NTUsMTIgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjpicmVha0N5Y2xlKCkg
CiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6cmVjdXJzZVZpc2l0
KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
bm9kZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBuZXh0KTsKK30KKwogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3BlcnR5Tm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogLy8gRUNNQSAxMS4xLjUKIEpTVmFsdWUgKlByb3BlcnR5Tm9kZTo6ZXZh
bHVhdGUoRXhlY1N0YXRlKikKQEAgLTUyMiw2ICs3NjksMTIgQEAgSlNWYWx1ZSAqUHJvcGVydHlO
b2RlOjpldmFsdWF0ZShFeGVjU3RhdAogICByZXR1cm4ganNOdWxsKCk7CiB9CiAKK3ZvaWQgUHJv
cGVydHlOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVj
dXJzZVZpc2l0TGluayh2aXNpdG9yLCBuYW1lKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIGFzc2lnbik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvcGVy
dHlOYW1lTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEu
MS41CkBAIC01NTQsNiArODA3LDQyIEBAIEpTVmFsdWUgKkJyYWNrZXRBY2Nlc3Nvck5vZGU6OmV2
YWx1YXRlKEUKICAgcmV0dXJuIG8tPmdldChleGVjLCBJZGVudGlmaWVyKHYyLT50b1N0cmluZyhl
eGVjKSkpOwogfQogCitSZWZlcmVuY2UgQnJhY2tldEFjY2Vzc29yTm9kZTo6ZXZhbHVhdGVSZWZl
cmVuY2UoRXhlY1N0YXRlKiBleGVjKQoreworICBSZWZlcmVuY2UgIHJlZjsKKyAgSlNWYWx1ZSAq
djEgPSBleHByMS0+ZXZhbHVhdGUoZXhlYyk7CisgIEtKU19DSEVDS0VYQ0VQVElPTlJFRkVSRU5D
RQorCisgIEpTVmFsdWUgKnYyID0gZXhwcjItPmV2YWx1YXRlKGV4ZWMpOworICBLSlNfQ0hFQ0tF
WENFUFRJT05SRUZFUkVOQ0UKKworICBKU09iamVjdCAqbyA9IHYxLT50b09iamVjdChleGVjKTsK
KyAgcmVmLmJhc2UgID0gbzsKKyAgcmVmLmZvdW5kID0gdHJ1ZTsgLy9BbHdheXMgZm9yIHRoZXNl
IHNvcnRzIG9mIHRoaW5ncy4uCisgIAorICAvLyBTcGVjaWFsIGNhc2UgZm9yIGluZGljZXMsIHRv
IGF2b2lkIGNvbnZlcnRpbmcgZG91YmxlLT5zdHJpbmcKKyAgdWludDMyX3QgaTsKKyAgaWYgKHYy
LT5nZXRVSW50MzIoaSkpIHsKKyAgICByZWYuaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tKGkpOwor
ICAgIGlmICghby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGksIHJlZi5wcm9wZXJ0eVNsb3QpKQor
ICAgICAgcmVmLnByb3BlcnR5U2xvdC5zZXRVbmRlZmluZWQobyk7CisgICAgcmV0dXJuIHJlZjsK
KyAgfQorCisgIC8vT3RoZXJ3aXNlIGRvIGl0IHN5bWJvbGljYWxseS4uCisgIElkZW50aWZpZXIg
aWRlbnQodjItPnRvU3RyaW5nKGV4ZWMpKTsKKyAgcmVmLmlkZW50ID0gaWRlbnQ7CisgIGlmICgh
by0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCByZWYucHJvcGVydHlTbG90KSkKKyAgICBy
ZWYucHJvcGVydHlTbG90LnNldFVuZGVmaW5lZChvKTsKKyAgcmV0dXJuIHJlZjsKK30KKwordm9p
ZCBCcmFja2V0QWNjZXNzb3JOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
Cit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIERvdEFjY2Vzc29yTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAv
LyBFQ01BIDExLjIuMWIKQEAgLTU2NSw2ICs4NTQsMjkgQEAgSlNWYWx1ZSAqRG90QWNjZXNzb3JO
b2RlOjpldmFsdWF0ZShFeGVjUwogCiB9CiAKK1JlZmVyZW5jZSBEb3RBY2Nlc3Nvck5vZGU6OmV2
YWx1YXRlUmVmZXJlbmNlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgUmVmZXJlbmNlICByZWYoaWRl
bnQpOworICBKU1ZhbHVlICp2ID0gZXhwci0+ZXZhbHVhdGUoZXhlYyk7CisgIEtKU19DSEVDS0VY
Q0VQVElPTlJFRkVSRU5DRQorCisgIEpTT2JqZWN0ICpvID0gdi0+dG9PYmplY3QoZXhlYyk7CisK
KyAgcmVmLmZvdW5kID0gdHJ1ZTsgLy9BbHdheXMgZm9yIHRoZXNlIHNvcnRzIG9mIHRoaW5ncy4u
CisgIHJlZi5iYXNlICA9IG87CisgIGlmICghby0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50
LCByZWYucHJvcGVydHlTbG90KSkgeworICAgIC8vQ3VycmVudGx5IHVuZGVmaW5lZCwgbm90ZSB0
aGF0LCBidXQgZG9uJ3QgdHJpZ2dlcgorICAgIC8vYSAibm90IGZvdW5kIiBlcnJvcgorICAgIHJl
Zi5wcm9wZXJ0eVNsb3Quc2V0VW5kZWZpbmVkKG8pOworICB9CisgIHJldHVybiByZWY7Cit9CisK
K3ZvaWQgRG90QWNjZXNzb3JOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
Cit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFyZ3VtZW50TGlzdE5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogSlNWYWx1ZSAqQXJndW1lbnRMaXN0Tm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlICopCkBAIC01OTIsNiArOTA0LDEyIEBAIHZvaWQgQXJndW1lbnRMaXN0Tm9kZTo6YnJl
YWtDeWNsZSgpIAogICAgIG5leHQgPSAwOwogfQogCit2b2lkIEFyZ3VtZW50TGlzdE5vZGU6OnJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5r
KHZpc2l0b3IsIG5leHQpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7Cit9
CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBcmd1bWVudHNOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEpTVmFsdWUgKkFyZ3VtZW50c05vZGU6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSAqKQpAQCAtNjAwLDYgKzkxOCwxMSBAQCBKU1ZhbHVlICpBcmd1bWVu
dHNOb2RlOjpldmFsdWF0ZShFeGVjU3RhCiAgIHJldHVybiAwOyAvLyBkdW1teSwgc2VlIGV2YWx1
YXRlTGlzdCgpCiB9CiAKK3ZvaWQgQXJndW1lbnRzTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNp
dG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbGlzdCk7Cit9
CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdFeHByTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMi4yCkBAIC02MjcsNiAr
OTUwLDIyIEBAIEpTVmFsdWUgKk5ld0V4cHJOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUKICAgcmV0
dXJuIGNvbnN0ci0+Y29uc3RydWN0KGV4ZWMsIGFyZ0xpc3QpOwogfQogCit2b2lkIE5ld0V4cHJO
b2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZp
c2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFy
Z3MpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogbm90QW5PYmplY3RNZXNzYWdlKCkKK3sKKyAg
ICByZXR1cm4gIlZhbHVlICVzIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgaXMgbm90IGFuIG9i
amVjdC4iOworfQorCitzdGF0aWMgY29uc3QgY2hhciogbm90Q2FsbGFibGVNZXNzYWdlKCkKK3sK
KyAgICByZXR1cm4gIk9iamVjdCAlcyAocmVzdWx0IG9mIGV4cHJlc3Npb24gJXMpIGRvZXMgbm90
IGFsbG93IGNhbGxzLiI7Cit9CisKIC8vIEVDTUEgMTEuMi4zCiBKU1ZhbHVlICpGdW5jdGlvbkNh
bGxWYWx1ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKIHsKQEAgLTYzNCw3MCArOTcz
LDc0IEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZXZhbHVhdGUKICAgS0pTX0NI
RUNLRVhDRVBUSU9OVkFMVUUKIAogICBpZiAoIXYtPmlzT2JqZWN0KCkpIHsKLSAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IsICJWYWx1ZSAlcyAocmVzdWx0IG9mIGV4cHJlc3Np
b24gJXMpIGlzIG5vdCBvYmplY3QuIiwgdiwgZXhwci5nZXQoKSk7CisgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgVHlwZUVycm9yLCBub3RBbk9iamVjdE1lc3NhZ2UoKSwgdiwgZXhwci5nZXQo
KSk7CiAgIH0KICAgCiAgIEpTT2JqZWN0ICpmdW5jID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2
KTsKIAogICBpZiAoIWZ1bmMtPmltcGxlbWVudHNDYWxsKCkpIHsKLSAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBUeXBlRXJyb3IsICJPYmplY3QgJXMgKHJlc3VsdCBvZiBleHByZXNzaW9uICVz
KSBkb2VzIG5vdCBhbGxvdyBjYWxscy4iLCB2LCBleHByLmdldCgpKTsKKyAgICByZXR1cm4gdGhy
b3dFcnJvcihleGVjLCBUeXBlRXJyb3IsIG5vdENhbGxhYmxlTWVzc2FnZSgpLCB2LCBleHByLmdl
dCgpKTsKICAgfQogCiAgIExpc3QgYXJnTGlzdCA9IGFyZ3MtPmV2YWx1YXRlTGlzdChleGVjKTsK
ICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAotICBKU09iamVjdCAqdGhpc09iaiA9ICBleGVj
LT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCk7CisgIEpTT2JqZWN0ICp0aGlz
T2JqID0gZXhlYy0+ZHluYW1pY0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpOwogCiAgIHJl
dHVybiBmdW5jLT5jYWxsKGV4ZWMsIHRoaXNPYmosIGFyZ0xpc3QpOwogfQogCi0vLyBFQ01BIDEx
LjIuMwotSlNWYWx1ZSAqRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0
ZSAqZXhlYykKK3ZvaWQgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29u
dGV4dCgpLT5zY29wZUNoYWluKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4u
YmVnaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAKLSAg
Ly8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNoYWluCi0gIGFz
c2VydChpdGVyICE9IGVuZCk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsK
KyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFyZ3MpOworfQogCi0gIFByb3BlcnR5U2xv
dCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0g
ICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKLSAgICAg
IEpTVmFsdWUgKnYgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIGlkZW50KTsKLSAgICAgIEtK
U19DSEVDS0VYQ0VQVElPTlZBTFVFCi0gICAgICAgIAotICAgICAgaWYgKCF2LT5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgIlZhbHVlICVz
IChyZXN1bHQgb2YgZXhwcmVzc2lvbiAlcykgaXMgbm90IG9iamVjdC4iLCB2LCBpZGVudCk7Ci0g
ICAgICB9Ci0gICAgICAKLSAgICAgIEpTT2JqZWN0ICpmdW5jID0gc3RhdGljX2Nhc3Q8SlNPYmpl
Y3QqPih2KTsKLSAgICAgIAotICAgICAgaWYgKCFmdW5jLT5pbXBsZW1lbnRzQ2FsbCgpKSB7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvciwgIk9iamVjdCAlcyAocmVz
dWx0IG9mIGV4cHJlc3Npb24gJXMpIGRvZXMgbm90IGFsbG93IGNhbGxzLiIsIHYsIGlkZW50KTsK
LSAgICAgIH0KLSAgICAgIAotICAgICAgTGlzdCBhcmdMaXN0ID0gYXJncy0+ZXZhbHVhdGVMaXN0
KGV4ZWMpOwotICAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgICAgICAgCi0gICAgICBK
U09iamVjdCAqdGhpc09iaiA9IGJhc2U7Ci0gICAgICAvLyBFQ01BIDExLjIuMyBzYXlzIHRoYXQg
aW4gdGhpcyBzaXR1YXRpb24gdGhlIHRoaXMgdmFsdWUgc2hvdWxkIGJlIG51bGwuCi0gICAgICAv
LyBIb3dldmVyLCBzZWN0aW9uIDEwLjIuMyBzYXlzIHRoYXQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhl
IHZhbHVlIHByb3ZpZGVkCi0gICAgICAvLyBieSB0aGUgY2FsbGVyIGlzIG51bGwsIHRoZSBnbG9i
YWwgb2JqZWN0IHNob3VsZCBiZSB1c2VkLiBJdCBhbHNvIHNheXMKLSAgICAgIC8vIHRoYXQgdGhl
IHNlY3Rpb24gZG9lcyBub3QgYXBwbHkgdG8gaW50ZXJhbCBmdW5jdGlvbnMsIGJ1dCBmb3Igc2lt
cGxpY2l0eQotICAgICAgLy8gb2YgaW1wbGVtZW50YXRpb24gd2UgdXNlIHRoZSBnbG9iYWwgb2Jq
ZWN0IGFueXdheSBoZXJlLiBUaGlzIGd1YXJhbnRlZXMKLSAgICAgIC8vIHRoYXQgaW4gaG9zdCBv
YmplY3RzIHlvdSBhbHdheXMgZ2V0IGEgdmFsaWQgb2JqZWN0IGZvciB0aGlzLgotICAgICAgaWYg
KHRoaXNPYmotPmlzQWN0aXZhdGlvbigpKQotICAgICAgICB0aGlzT2JqID0gZXhlYy0+ZHluYW1p
Y0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpOworSlNWYWx1ZSAqRnVuY3Rpb25DYWxsUmVm
ZXJlbmNlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQoreworICAvL0V2YWx1YXRlIHRo
ZSBsb2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gZXhwci0+ZXZhbHVhdGVSZWZlcmVuY2UoZXhl
Yyk7CiAKLSAgICAgIHJldHVybiBmdW5jLT5jYWxsKGV4ZWMsIHRoaXNPYmosIGFyZ0xpc3QpOwot
ICAgIH0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLSAgCi0gIHJldHVy
biB0aHJvd1VuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAvL2hhbmRsZSBl
cnJvci4uCisgIGlmICghcmVmLmZvdW5kKQorICAgIHJldHVybiB0aHJvd1VuZGVmaW5lZFZhcmlh
YmxlRXJyb3IoZXhlYywgcmVmLmlkZW50KTsKKworICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQor
CisgIEpTVmFsdWUgKnYgPSByZWYucmVhZChleGVjKTsKKyAgS0pTX0NIRUNLRVhDRVBUSU9OVkFM
VUUKKworICBpZiAoIXYtPmlzT2JqZWN0KCkpIHsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBUeXBlRXJyb3IsIG5vdEFuT2JqZWN0TWVzc2FnZSgpLCB2LCBleHByLmdldCgpKTsKKyAgfQor
CisgIEpTT2JqZWN0ICpmdW5jID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KTsKKworICBpZiAo
IWZ1bmMtPmltcGxlbWVudHNDYWxsKCkpIHsKKyAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBU
eXBlRXJyb3IsIG5vdENhbGxhYmxlTWVzc2FnZSgpLCB2LCBleHByLmdldCgpKTsKKyAgfQorCisg
IExpc3QgYXJnTGlzdCA9IGFyZ3MtPmV2YWx1YXRlTGlzdChleGVjKTsKKyAgS0pTX0NIRUNLRVhD
RVBUSU9OVkFMVUUKKworICAvLyBFQ01BIDExLjIuMyBzYXlzIHRoYXQgaW4gdGhpcyBzaXR1YXRp
b24gdGhlIHRoaXMgdmFsdWUgc2hvdWxkIGJlIG51bGwuCisgIC8vIEhvd2V2ZXIsIHNlY3Rpb24g
MTAuMi4zIHNheXMgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgdmFsdWUgcHJvdmlkZWQKKyAg
Ly8gYnkgdGhlIGNhbGxlciBpcyBudWxsLCB0aGUgZ2xvYmFsIG9iamVjdCBzaG91bGQgYmUgdXNl
ZC4gSXQgYWxzbyBzYXlzCisgIC8vIHRoYXQgdGhlIHNlY3Rpb24gZG9lcyBub3QgYXBwbHkgdG8g
aW50ZXJhbCBmdW5jdGlvbnMsIGJ1dCBmb3Igc2ltcGxpY2l0eQorICAvLyBvZiBpbXBsZW1lbnRh
dGlvbiB3ZSB1c2UgdGhlIGdsb2JhbCBvYmplY3QgYW55d2F5IGhlcmUuIFRoaXMgZ3VhcmFudGVl
cworICAvLyB0aGF0IGluIGhvc3Qgb2JqZWN0cyB5b3UgYWx3YXlzIGdldCBhIHZhbGlkIG9iamVj
dCBmb3IgdGhpcy4KKworICBKU09iamVjdCAqdGhpc09iaiA9IHJlZi5iYXNlOworICBpZiAodGhp
c09iai0+aXNBY3RpdmF0aW9uKCkpCisgICAgdGhpc09iaiA9IGV4ZWMtPmR5bmFtaWNJbnRlcnBy
ZXRlcigpLT5nbG9iYWxPYmplY3QoKTsKKworICByZXR1cm4gZnVuYy0+Y2FsbChleGVjLCB0aGlz
T2JqLCBhcmdMaXN0KTsKK30KKwordm9pZCBGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlOjpyZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgICAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBleHByKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGFyZ3MpOwogfQog
CiAvLyBFQ01BIDExLjIuMwpAQCAtNzQ5LDYgKzEwOTIsMTMgQEAgSlNWYWx1ZSAqRnVuY3Rpb25D
YWxsQnJhY2tldE5vZGU6OmV2YWx1YQogICByZXR1cm4gZnVuYy0+Y2FsbChleGVjLCB0aGlzT2Jq
LCBhcmdMaXN0KTsKIH0KIAordm9pZCBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6cmVjdXJzZVZp
c2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRv
ciwgYmFzZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdWJzY3JpcHQpOworICAg
IHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgYXJncyk7Cit9CisKIHN0YXRpYyBjb25zdCBjaGFy
ICpkb3RFeHByTm90QW5PYmplY3RTdHJpbmcoKSBLSlNfRkFTVF9DQUxMOwogc3RhdGljIGNvbnN0
IGNoYXIgKmRvdEV4cHJOb3RBbk9iamVjdFN0cmluZygpCiB7CkBAIC03OTEsMTYyICsxMTQxLDk1
IEBAIEpTVmFsdWUgKkZ1bmN0aW9uQ2FsbERvdE5vZGU6OmV2YWx1YXRlKEUKICAgcmV0dXJuIGZ1
bmMtPmNhbGwoZXhlYywgdGhpc09iaiwgYXJnTGlzdCk7CiB9CiAKLS8vIEVDTUEgMTEuMwotCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeFJlc29sdmVOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1ZSAqUG9zdGZpeFJlc29sdmVO
b2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCit2b2lkIEZ1bmN0aW9uQ2FsbERvdE5vZGU6
OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgY29uc3QgU2NvcGVDaGFp
biYgY2hhaW4gPSBleGVjLT5jb250ZXh0KCktPnNjb3BlQ2hhaW4oKTsKLSAgU2NvcGVDaGFpbkl0
ZXJhdG9yIGl0ZXIgPSBjaGFpbi5iZWdpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3IgZW5kID0g
Y2hhaW4uZW5kKCk7Ci0gIAotICAvLyB3ZSBtdXN0IGFsd2F5cyBoYXZlIHNvbWV0aGluZyBpbiB0
aGUgc2NvcGUgY2hhaW4KLSAgYXNzZXJ0KGl0ZXIgIT0gZW5kKTsKLQotICBQcm9wZXJ0eVNsb3Qg
c2xvdDsKLSAgSlNPYmplY3QgKmJhc2U7Ci0gIGRvIHsgCi0gICAgYmFzZSA9ICppdGVyOwotICAg
IGlmIChiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgbV9pZGVudCwgc2xvdCkpIHsKLSAgICAg
ICAgSlNWYWx1ZSAqdiA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwgbV9pZGVudCk7Ci0KLSAg
ICAgICAgZG91YmxlIG4gPSB2LT50b051bWJlcihleGVjKTsKLSAgICAgICAgCi0gICAgICAgIGRv
dWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwot
ICAgICAgICBiYXNlLT5wdXQoZXhlYywgbV9pZGVudCwganNOdW1iZXIobmV3VmFsdWUpKTsKLSAg
ICAgICAgCi0gICAgICAgIHJldHVybiBqc051bWJlcihuKTsKLSAgICB9Ci0KLSAgICArK2l0ZXI7
Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLQotICByZXR1cm4gdGhyb3dVbmRlZmluZWRWYXJp
YWJsZUVycm9yKGV4ZWMsIG1faWRlbnQpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
YmFzZSk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBhcmdzKTsKIH0KIAotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3RmaXhCcmFja2V0Tm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlBvc3RmaXhCcmFja2V0Tm9kZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQotewotICBKU1ZhbHVlICpiYXNlVmFsdWUgPSBtX2Jh
c2UtPmV2YWx1YXRlKGV4ZWMpOwotICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotICBKU1ZhbHVl
ICpzdWJzY3JpcHQgPSBtX3N1YnNjcmlwdC0+ZXZhbHVhdGUoZXhlYyk7Ci0gIEtKU19DSEVDS0VY
Q0VQVElPTlZBTFVFCisvLyBFQ01BIDExLjMKIAotICBKU09iamVjdCAqYmFzZSA9IGJhc2VWYWx1
ZS0+dG9PYmplY3QoZXhlYyk7CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9z
dGZpeE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0gIHVpbnQzMl90
IHByb3BlcnR5SW5kZXg7Ci0gIGlmIChzdWJzY3JpcHQtPmdldFVJbnQzMihwcm9wZXJ0eUluZGV4
KSkgewotICAgIFByb3BlcnR5U2xvdCBzbG90OwotICAgIEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQ
cm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlJbmRleCwgc2xvdCkgPyBzbG90LmdldFZhbHVlKGV4
ZWMsIGJhc2UsIHByb3BlcnR5SW5kZXgpIDoganNVbmRlZmluZWQoKTsKLSAgICBLSlNfQ0hFQ0tF
WENFUFRJT05WQUxVRQorY2xhc3MgTG9jYWxQb3N0Zml4Tm9kZSA6IHB1YmxpYyBQb3N0Zml4Tm9k
ZQoreworcHVibGljOgorICBMb2NhbFBvc3RmaXhOb2RlKExvY2F0aW9uTm9kZSAqbCwgT3BlcmF0
b3IgbywgaW50IGlkeCkgIEtKU19GQVNUX0NBTEwgOiBQb3N0Zml4Tm9kZShsLCBvKSwgaW5kZXgo
aWR4KSB7fQogCisgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgIEtKU19GQVNU
X0NBTEwgeworICAgIEFjdGl2YXRpb25JbXAqIHNjb3BlID0gc3RhdGljX2Nhc3Q8QWN0aXZhdGlv
bkltcCo+KGV4ZWMtPmNvbnRleHQoKS0+YWN0aXZhdGlvbk9iamVjdCgpKTsKKyAgICBKU1ZhbHVl
KiB2ID0gKnNjb3BlLT5nZXRMb2NhbERpcmVjdChpbmRleCk7CiAgICAgZG91YmxlIG4gPSB2LT50
b051bWJlcihleGVjKTsKLQogICAgIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVz
UGx1cykgPyBuICsgMSA6IG4gLSAxOwotICAgIGJhc2UtPnB1dChleGVjLCBwcm9wZXJ0eUluZGV4
LCBqc051bWJlcihuZXdWYWx1ZSkpOwotICAgICAgICAKKyAgICBzY29wZS0+cHV0TG9jYWxDaGVj
a2VkKGluZGV4LCBqc051bWJlcihuZXdWYWx1ZSkpOwogICAgIHJldHVybiBqc051bWJlcihuKTsK
ICAgfQorcHJpdmF0ZToKKyAgaW50IGluZGV4OworfTsKIAotICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZShzdWJzY3JpcHQtPnRvU3RyaW5nKGV4ZWMpKTsKLSAgUHJvcGVydHlTbG90IHNsb3Q7Ci0g
IEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgYmFzZSwgcHJvcGVydHlOYW1lKSA6IGpzVW5kZWZp
bmVkKCk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0KLSAgZG91YmxlIG4gPSB2LT50b051
bWJlcihleGVjKTsKLSAgCi0gIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVzUGx1
cykgPyBuICsgMSA6IG4gLSAxOwotICBiYXNlLT5wdXQoZXhlYywgcHJvcGVydHlOYW1lLCBqc051
bWJlcihuZXdWYWx1ZSkpOwotICAgICAgICAKLSAgcmV0dXJuIGpzTnVtYmVyKG4pOwotfQotCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeERvdE5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlICpQb3N0Zml4RG90Tm9kZTo6ZXZh
bHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSogUG9zdGZpeE5vZGU6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFzZVZhbHVlID0gbV9iYXNlLT5ldmFsdWF0
ZShleGVjKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgSlNPYmplY3QgKmJhc2UgPSBi
YXNlVmFsdWUtPnRvT2JqZWN0KGV4ZWMpOworICAvL0V2YWx1YXRlIHRoZSBsb2NhdGlvbgorICBS
ZWZlcmVuY2UgcmVmID0gbV9sb2MtPmV2YWx1YXRlUmVmZXJlbmNlKGV4ZWMpOworCisgIC8vaGFu
ZGxlIGVycm9yLi4KKyAgaWYgKCFyZWYuZm91bmQpCisgICAgcmV0dXJuIHRocm93VW5kZWZpbmVk
VmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRlbnQpOwogCi0gIFByb3BlcnR5U2xvdCBzbG90Owot
ICBKU1ZhbHVlICp2ID0gYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQsIHNsb3Qp
ID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KSA6IGpzVW5kZWZpbmVkKCk7CiAg
IEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAKKyAgLy9kbyB0aGUgb3AKKyAgSlNWYWx1ZSAqdiA9
IHJlZi5yZWFkKGV4ZWMpOwogICBkb3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMpOwotICAKICAg
ZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7
Ci0gIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCBqc051bWJlcihuZXdWYWx1ZSkpOwotICAgICAg
ICAKKyAgcmVmLndyaXRlKGV4ZWMsIGpzTnVtYmVyKG5ld1ZhbHVlKSk7CiAgIHJldHVybiBqc051
bWJlcihuKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBvc3RmaXhF
cnJvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1ZSog
UG9zdGZpeEVycm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQordm9pZCBQb3N0Zml4
Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICAgIHRocm93RXJy
b3IoZXhlYywgUmVmZXJlbmNlRXJyb3IsICJQb3N0Zml4ICVzIG9wZXJhdG9yIGFwcGxpZWQgdG8g
dmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIiwKLSAgICAgICAgbV9vcGVyID09IE9wUGx1
c1BsdXMgPyAiKysiIDogIi0tIik7Ci0gICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOwotICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgTm9kZTo6cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBt
X2xvYyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVSZXNv
bHZlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBFQ01BIDEx
LjQuMQotCi1KU1ZhbHVlICpEZWxldGVSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpl
eGVjKQorTm9kZSogUG9zdGZpeE5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpl
eGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKQogewotICBjb25zdCBTY29wZUNoYWluJiBjaGFp
biA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3Ig
aXRlciA9IGNoYWluLmJlZ2luKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5l
bmQoKTsKLSAgCi0gIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29w
ZSBjaGFpbgotICBhc3NlcnQoaXRlciAhPSBlbmQpOwotCi0gIFByb3BlcnR5U2xvdCBzbG90Owot
ICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYgKGJh
c2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50LCBzbG90KSkgewotICAgICAgICByZXR1
cm4ganNCb29sZWFuKGJhc2UtPmRlbGV0ZVByb3BlcnR5KGV4ZWMsIG1faWRlbnQpKTsKLSAgICB9
Ci0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLQotICByZXR1cm4ganNC
b29sZWFuKHRydWUpOworICBpZiAobV9sb2MtPmlzVmFyQWNjZXNzTm9kZSgpKSB7CisgICAgVmFy
QWNjZXNzTm9kZSogaWRlbnQgPSBzdGF0aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9sb2MuZ2V0
KCkpOworICAgIGludCBpZCA9IGlkZW50LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChpZCAhPSAt
MSkKKyAgICAgIHJldHVybiBuZXcgTG9jYWxQb3N0Zml4Tm9kZShtX2xvYy5nZXQoKSwgbV9vcGVy
LCBpZCk7CisgIH0KKyAgcmV0dXJuIDA7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBEZWxldGVCcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorSlNWYWx1ZSogUG9zdGZpeEVycm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVj
KSAKK3sgCisgICAgdGhyb3dFcnJvcihleGVjLCBSZWZlcmVuY2VFcnJvciwgIlBvc3RmaXggJXMg
b3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iLCAKKwkg
ICAgICAgbV9vcGVyID09IE9wUGx1c1BsdXMgPyAiKysiIDogIi0tIik7IAorICAgIGhhbmRsZUV4
Y2VwdGlvbihleGVjKTsgCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IAorfSAKKworLy8gRUNN
QSAxMS40LjEKIAotSlNWYWx1ZSAqRGVsZXRlQnJhY2tldE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0
ZSAqZXhlYykKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVSZWZlcmVu
Y2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0pTVmFsdWUqIERlbGV0ZVJl
ZmVyZW5jZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFz
ZVZhbHVlID0gbV9iYXNlLT5ldmFsdWF0ZShleGVjKTsKLSAgS0pTX0NIRUNLRVhDRVBUSU9OVkFM
VUUKLSAgSlNWYWx1ZSAqc3Vic2NyaXB0ID0gbV9zdWJzY3JpcHQtPmV2YWx1YXRlKGV4ZWMpOwor
ICAvL0V2YWx1YXRlIHRoZSBsb2NhdGlvbgorICBSZWZlcmVuY2UgcmVmID0gbG9jLT5ldmFsdWF0
ZVJlZmVyZW5jZShleGVjKTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKIAotICBKU09iamVj
dCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7Ci0KLSAgdWludDMyX3QgcHJvcGVy
dHlJbmRleDsKLSAgaWYgKHN1YnNjcmlwdC0+Z2V0VUludDMyKHByb3BlcnR5SW5kZXgpKQotICAg
ICAgcmV0dXJuIGpzQm9vbGVhbihiYXNlLT5kZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eUlu
ZGV4KSk7Ci0KLSAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUoc3Vic2NyaXB0LT50b1N0cmluZyhl
eGVjKSk7Ci0gIHJldHVybiBqc0Jvb2xlYW4oYmFzZS0+ZGVsZXRlUHJvcGVydHkoZXhlYywgcHJv
cGVydHlOYW1lKSk7CisgIC8vaGFuZGxlIGVycm9yLi4KKyAgaWYgKCFyZWYuZm91bmQpCisgICAg
cmV0dXJuIGpzQm9vbGVhbih0cnVlKTsKKyAgZWxzZQorICAgIHJldHVybiBqc0Jvb2xlYW4ocmVm
LmRlbGV0ZVByb3BlcnR5KGV4ZWMpKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIERlbGV0ZURvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUpTVmFsdWUgKkRlbGV0ZURvdE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQg
RGVsZXRlUmVmZXJlbmNlTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQog
ewotICBKU1ZhbHVlICpiYXNlVmFsdWUgPSBtX2Jhc2UtPmV2YWx1YXRlKGV4ZWMpOwotICBKU09i
amVjdCAqYmFzZSA9IGJhc2VWYWx1ZS0+dG9PYmplY3QoZXhlYyk7Ci0gIEtKU19DSEVDS0VYQ0VQ
VElPTlZBTFVFCi0KLSAgcmV0dXJuIGpzQm9vbGVhbihiYXNlLT5kZWxldGVQcm9wZXJ0eShleGVj
LCBtX2lkZW50KSk7CisgICBOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGxvYyk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWxldGVWYWx1ZU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk1OSw2ICsxMjQyLDExIEBAIEpT
VmFsdWUgKkRlbGV0ZVZhbHVlTm9kZTo6ZXZhbHVhdGUoRXhlY1MKICAgcmV0dXJuIGpzQm9vbGVh
bih0cnVlKTsKIH0KIAordm9pZCBEZWxldGVWYWx1ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlz
aXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2V4cHIpOwor
fQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVm9pZE5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDExLjQuMgpAQCAtOTcwLDEx
ICsxMjU4LDE1IEBAIEpTVmFsdWUgKlZvaWROb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUgKmUKICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK3ZvaWQgVm9pZE5vZGU6OnJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHBy
KTsKK30KKwogLy8gRUNNQSAxMS40LjMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1zdGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZhbHVlKEpTVmFsdWUgKnYpIEtKU19GQVNU
X0NBTEw7CiBzdGF0aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZhbHVlKEpTVmFsdWUgKnYpCiB7
CiAgICAgc3dpdGNoICh2LT50eXBlKCkpIHsKQEAgLTEwMDIsMTQ0ICsxMjk0LDEwMSBAQCBzdGF0
aWMgSlNWYWx1ZSAqdHlwZVN0cmluZ0ZvclZhbHVlKEpTVmFsCiAgICAgfQogfQogCi1KU1ZhbHVl
ICpUeXBlT2ZSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQotewotICBjb25z
dCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+c2NvcGVDaGFpbigpOwotICBT
Y29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7Ci0gIFNjb3BlQ2hhaW5JdGVy
YXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKLSAgCi0gIC8vIHdlIG11c3QgYWx3YXlzIGhhdmUgc29t
ZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgotICBhc3NlcnQoaXRlciAhPSBlbmQpOwotCi0gIFBy
b3BlcnR5U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAgZG8geyAKLSAgICBiYXNlID0g
Kml0ZXI7Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBtX2lkZW50LCBzbG90
KSkgewotICAgICAgICBKU1ZhbHVlICp2ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lk
ZW50KTsKLSAgICAgICAgcmV0dXJuIHR5cGVTdHJpbmdGb3JWYWx1ZSh2KTsKLSAgICB9Ci0KLSAg
ICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIgIT0gZW5kKTsKLQotICByZXR1cm4ganNTdHJpbmco
InVuZGVmaW5lZCIpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHlw
ZU9mVmFsdWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFs
dWUgKlR5cGVPZlZhbHVlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSog
VHlwZU9mUmVmZXJlbmNlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogewotICBKU1Zh
bHVlICp2ID0gbV9leHByLT5ldmFsdWF0ZShleGVjKTsKKyAgLy9FdmFsdWF0ZSB0aGUgbG9jYXRp
b24KKyAgUmVmZXJlbmNlIHJlZiA9IGxvYy0+ZXZhbHVhdGVSZWZlcmVuY2UoZXhlYyk7CiAgIEtK
U19DSEVDS0VYQ0VQVElPTlZBTFVFCiAKLSAgcmV0dXJuIHR5cGVTdHJpbmdGb3JWYWx1ZSh2KTsK
LX0KLQotLy8gRUNNQSAxMS40LjQgYW5kIDExLjQuNQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gUHJlZml4UmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1KU1ZhbHVlICpQcmVmaXhSZXNvbHZlTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRl
ICpleGVjKQotewotICBjb25zdCBTY29wZUNoYWluJiBjaGFpbiA9IGV4ZWMtPmNvbnRleHQoKS0+
c2NvcGVDaGFpbigpOwotICBTY29wZUNoYWluSXRlcmF0b3IgaXRlciA9IGNoYWluLmJlZ2luKCk7
Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBlbmQgPSBjaGFpbi5lbmQoKTsKLSAgCi0gIC8vIHdlIG11
c3QgYWx3YXlzIGhhdmUgc29tZXRoaW5nIGluIHRoZSBzY29wZSBjaGFpbgotICBhc3NlcnQoaXRl
ciAhPSBlbmQpOwotCi0gIFByb3BlcnR5U2xvdCBzbG90OwotICBKU09iamVjdCAqYmFzZTsKLSAg
ZG8geyAKLSAgICBiYXNlID0gKml0ZXI7Ci0gICAgaWYgKGJhc2UtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBtX2lkZW50LCBzbG90KSkgewotICAgICAgICBKU1ZhbHVlICp2ID0gc2xvdC5nZXRWYWx1
ZShleGVjLCBiYXNlLCBtX2lkZW50KTsKLQotICAgICAgICBkb3VibGUgbiA9IHYtPnRvTnVtYmVy
KGV4ZWMpOwotICAgICAgICAKLSAgICAgICAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBP
cFBsdXNQbHVzKSA/IG4gKyAxIDogbiAtIDE7Ci0gICAgICAgIEpTVmFsdWUgKm4yID0ganNOdW1i
ZXIobmV3VmFsdWUpOwotICAgICAgICBiYXNlLT5wdXQoZXhlYywgbV9pZGVudCwgbjIpOwotCi0g
ICAgICAgIHJldHVybiBuMjsKLSAgICB9Ci0KLSAgICArK2l0ZXI7Ci0gIH0gd2hpbGUgKGl0ZXIg
IT0gZW5kKTsKKyAgLy9oYW5kbGUgZXJyb3IuLgorICBpZiAoIXJlZi5mb3VuZCkKKyAgICByZXR1
cm4ganNTdHJpbmcoInVuZGVmaW5lZCIpOworICBlbHNlCisgICAgcmV0dXJuIHR5cGVTdHJpbmdG
b3JWYWx1ZShyZWYucmVhZChleGVjKSk7Cit9CiAKLSAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFy
aWFibGVFcnJvcihleGVjLCBtX2lkZW50KTsKK3ZvaWQgVHlwZU9mUmVmZXJlbmNlTm9kZTo6cmVj
dXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAgTm9kZTo6cmVjdXJzZVZpc2l0
TGluayh2aXNpdG9yLCBsb2MpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0gUHJlZml4QnJhY2tldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFR5cGVPZlZhbHVlTm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1KU1ZhbHVlICpQcmVmaXhCcmFja2V0Tm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQorSlNWYWx1ZSAqVHlwZU9mVmFsdWVOb2RlOjpl
dmFsdWF0ZShFeGVjU3RhdGUgKmV4ZWMpCiB7Ci0gIEpTVmFsdWUgKmJhc2VWYWx1ZSA9IG1fYmFz
ZS0+ZXZhbHVhdGUoZXhlYyk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCi0gIEpTVmFsdWUg
KnN1YnNjcmlwdCA9IG1fc3Vic2NyaXB0LT5ldmFsdWF0ZShleGVjKTsKKyAgSlNWYWx1ZSAqdiA9
IG1fZXhwci0+ZXZhbHVhdGUoZXhlYyk7CiAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAKLSAg
SlNPYmplY3QgKmJhc2UgPSBiYXNlVmFsdWUtPnRvT2JqZWN0KGV4ZWMpOworICByZXR1cm4gdHlw
ZVN0cmluZ0ZvclZhbHVlKHYpOworfQogCi0gIHVpbnQzMl90IHByb3BlcnR5SW5kZXg7Ci0gIGlm
IChzdWJzY3JpcHQtPmdldFVJbnQzMihwcm9wZXJ0eUluZGV4KSkgewotICAgIFByb3BlcnR5U2xv
dCBzbG90OwotICAgIEpTVmFsdWUgKnYgPSBiYXNlLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJv
cGVydHlJbmRleCwgc2xvdCkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGJhc2UsIHByb3BlcnR5SW5k
ZXgpIDoganNVbmRlZmluZWQoKTsKLSAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQordm9pZCBU
eXBlT2ZWYWx1ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAg
cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2V4cHIpOworfQogCi0gICAgZG91YmxlIG4gPSB2
LT50b051bWJlcihleGVjKTsKKy8vIEVDTUEgMTEuNC40IGFuZCAxMS40LjUKIAorLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByZWZpeE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBMb2NhbFByZWZpeE5vZGUgOiBwdWJsaWMgUHJl
Zml4Tm9kZQoreworcHVibGljOgorICBMb2NhbFByZWZpeE5vZGUoTG9jYXRpb25Ob2RlICpsLCBP
cGVyYXRvciBvLCBpbnQgaWR4KSBLSlNfRkFTVF9DQUxMIDogUHJlZml4Tm9kZShsLCBvKSwgaW5k
ZXgoaWR4KSB7fQorCisgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgS0pTX0ZB
U1RfQ0FMTCB7CisgICAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0
aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworICAgIEpTVmFs
dWUqIHYgPSAqc2NvcGUtPmdldExvY2FsRGlyZWN0KGluZGV4KTsKKyAgICBkb3VibGUgbiA9IHYt
PnRvTnVtYmVyKGV4ZWMpOwogICAgIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIgPT0gT3BQbHVz
UGx1cykgPyBuICsgMSA6IG4gLSAxOwogICAgIEpTVmFsdWUgKm4yID0ganNOdW1iZXIobmV3VmFs
dWUpOwotICAgIGJhc2UtPnB1dChleGVjLCBwcm9wZXJ0eUluZGV4LCBuMik7Ci0KKyAgICBzY29w
ZS0+cHV0TG9jYWxDaGVja2VkKGluZGV4LCBuMik7CiAgICAgcmV0dXJuIG4yOwogICB9Citwcml2
YXRlOgorICBpbnQgaW5kZXg7Cit9OwogCi0gIElkZW50aWZpZXIgcHJvcGVydHlOYW1lKHN1YnNj
cmlwdC0+dG9TdHJpbmcoZXhlYykpOwotICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgSlNWYWx1ZSAq
diA9IGJhc2UtPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpID8gc2xv
dC5nZXRWYWx1ZShleGVjLCBiYXNlLCBwcm9wZXJ0eU5hbWUpIDoganNVbmRlZmluZWQoKTsKLSAg
S0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLQotICBkb3VibGUgbiA9IHYtPnRvTnVtYmVyKGV4ZWMp
OwotICAKLSAgZG91YmxlIG5ld1ZhbHVlID0gKG1fb3BlciA9PSBPcFBsdXNQbHVzKSA/IG4gKyAx
IDogbiAtIDE7Ci0gIEpTVmFsdWUgKm4yID0ganNOdW1iZXIobmV3VmFsdWUpOwotICBiYXNlLT5w
dXQoZXhlYywgcHJvcGVydHlOYW1lLCBuMik7Ci0KLSAgcmV0dXJuIG4yOwotfQotCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJlZml4RG90Tm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLUpTVmFsdWUgKlByZWZpeERvdE5vZGU6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSAqZXhlYykKK0pTVmFsdWUqIFByZWZpeE5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgSlNWYWx1ZSAqYmFzZVZhbHVlID0gbV9iYXNlLT5ldmFsdWF0ZShleGVjKTsK
KyAgLy9FdmFsdWF0ZSB0aGUgbG9jYXRpb24KKyAgUmVmZXJlbmNlIHJlZiA9IG1fbG9jLT5ldmFs
dWF0ZVJlZmVyZW5jZShleGVjKTsKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKLSAgSlNPYmpl
Y3QgKmJhc2UgPSBiYXNlVmFsdWUtPnRvT2JqZWN0KGV4ZWMpOwogCi0gIFByb3BlcnR5U2xvdCBz
bG90OwotICBKU1ZhbHVlICp2ID0gYmFzZS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIG1faWRlbnQs
IHNsb3QpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBiYXNlLCBtX2lkZW50KSA6IGpzVW5kZWZpbmVk
KCk7Ci0gIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCisgIC8vaGFuZGxlIGVycm9yLi4KKyAgaWYg
KCFyZWYuZm91bmQpCisgICAgcmV0dXJuIHRocm93VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVj
LCByZWYuaWRlbnQpOwogCisgIEpTVmFsdWUgKnYgPSByZWYucmVhZChleGVjKTsKICAgZG91Ymxl
IG4gPSB2LT50b051bWJlcihleGVjKTsKLSAgCiAgIGRvdWJsZSBuZXdWYWx1ZSA9IChtX29wZXIg
PT0gT3BQbHVzUGx1cykgPyBuICsgMSA6IG4gLSAxOwogICBKU1ZhbHVlICpuMiA9IGpzTnVtYmVy
KG5ld1ZhbHVlKTsKLSAgYmFzZS0+cHV0KGV4ZWMsIG1faWRlbnQsIG4yKTsKLQorICByZWYud3Jp
dGUoZXhlYywgbjIpOwogICByZXR1cm4gbjI7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBQcmVmaXhFcnJvck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KK3ZvaWQgUHJlZml4Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KQoreworICAgTm9kZTo6cmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBtX2xvYyk7Cit9CiAKLUpT
VmFsdWUqIFByZWZpeEVycm9yTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQorTm9kZSog
UHJlZml4Tm9kZTo6b3B0aW1pemVMb2NhbEFjY2VzcyhFeGVjU3RhdGUgKmV4ZWMsIEZ1bmN0aW9u
Qm9keU5vZGUqIG5vZGUpCiB7Ci0gICAgdGhyb3dFcnJvcihleGVjLCBSZWZlcmVuY2VFcnJvciwg
IlByZWZpeCAlcyBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJl
bmNlLiIsCi0gICAgICAgIG1fb3BlciA9PSBPcFBsdXNQbHVzID8gIisrIiA6ICItLSIpOworICBp
ZiAobV9sb2MtPmlzVmFyQWNjZXNzTm9kZSgpKSB7CisgICAgVmFyQWNjZXNzTm9kZSogaWRlbnQg
PSBzdGF0aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9sb2MuZ2V0KCkpOworICAgIGludCBpZCA9
IGlkZW50LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChpZCAhPSAtMSkKKyAgICAgIHJldHVybiBu
ZXcgTG9jYWxQcmVmaXhOb2RlKG1fbG9jLmdldCgpLCBtX29wZXIsIGlkKTsKKyAgfQorICByZXR1
cm4gMDsKK30KKworSlNWYWx1ZSogUHJlZml4RXJyb3JOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMpIAoreyAKKyAgICB0aHJvd0Vycm9yKGV4ZWMsIFJlZmVyZW5jZUVycm9yLCAiUHJlZml4
ICVzIG9wZXJhdG9yIGFwcGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIiwg
CisgICAgICAgIG1fb3BlciA9PSBPcFBsdXNQbHVzID8gIisrIiA6ICItLSIpOyAKICAgICBoYW5k
bGVFeGNlcHRpb24oZXhlYyk7Ci0gICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7IAogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
VW5hcnlQbHVzTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTE1Myw2
ICsxNDAyLDExIEBAIEpTVmFsdWUgKlVuYXJ5UGx1c05vZGU6OmV2YWx1YXRlKEV4ZWNTdGEKICAg
cmV0dXJuIGpzTnVtYmVyKHYtPnRvTnVtYmVyKGV4ZWMpKTsKIH0KIAordm9pZCBVbmFyeVBsdXNO
b2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNp
dExpbmsodmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBOZWdhdGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8v
IEVDTUEgMTEuNC43CkBAIC0xMTY1LDYgKzE0MTksMTEgQEAgSlNWYWx1ZSAqTmVnYXRlTm9kZTo6
ZXZhbHVhdGUoRXhlY1N0YXRlIAogICByZXR1cm4ganNOdW1iZXIoLW4pOwogfQogCit2b2lkIE5l
Z2F0ZU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEJpdHdpc2VOb3ROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogLy8gRUNNQSAxMS40LjgKQEAgLTExNzUsNiArMTQzNCwxMSBAQCBKU1ZhbHVlICpCaXR3aXNl
Tm90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0CiAgIHJldHVybiBqc051bWJlcih+di0+dG9JbnQzMihl
eGVjKSk7CiB9CiAKK3ZvaWQgQml0d2lzZU5vdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvZ2ljYWxOb3ROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS40LjkKQEAgLTExODUsNiArMTQ0
OSwxMSBAQCBKU1ZhbHVlICpMb2dpY2FsTm90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0CiAgIHJldHVy
biBqc0Jvb2xlYW4oIXYtPnRvQm9vbGVhbihleGVjKSk7CiB9CiAKK3ZvaWQgTG9naWNhbE5vdE5v
ZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0
TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIE11bHROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8g
RUNNQSAxMS41CkBAIC0xMTk5LDYgKzE0NjgsMTIgQEAgSlNWYWx1ZSAqTXVsdE5vZGU6OmV2YWx1
YXRlKEV4ZWNTdGF0ZSAqZQogICByZXR1cm4gbXVsdChleGVjLCB2MSwgdjIsIG9wZXIpOwogfQog
Cit2b2lkIE11bHROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7Cisg
IHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdGVybTEpOworICByZWN1cnNlVmlzaXRMaW5rKHZp
c2l0b3IsIHRlcm0yKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFk
ZE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAx
MS42CkBAIC0xMjEzLDYgKzE0ODgsMTIgQEAgSlNWYWx1ZSAqQWRkTm9kZTo6ZXZhbHVhdGUoRXhl
Y1N0YXRlICpleAogICByZXR1cm4gYWRkKGV4ZWMsIHYxLCB2Miwgb3Blcik7CiB9CiAKK3ZvaWQg
QWRkTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNl
VmlzaXRMaW5rKHZpc2l0b3IsIHRlcm0xKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCB0
ZXJtMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTaGlmdE5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuNwpAQCAt
MTIzOCw2ICsxNTE5LDEyIEBAIEpTVmFsdWUgKlNoaWZ0Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRl
ICoKICAgfQogfQogCit2b2lkIFNoaWZ0Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2
aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHRlcm0xKTsKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCB0ZXJtMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBSZWxhdGlvbmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIC8vIEVDTUEgMTEuOApAQCAtMTI4Niw2ICsxNTczLDEyIEBAIEpTVmFsdWUgKlJlbGF0aW9u
YWxOb2RlOjpldmFsdWF0ZShFeGVjU3QKICAgcmV0dXJuIGpzQm9vbGVhbihiKTsKIH0KIAordm9p
ZCBSZWxhdGlvbmFsTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQorewor
ICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIxKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBleHByMik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBF
cXVhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEg
MTEuOQpAQCAtMTMwOSw2ICsxNjAyLDEyIEBAIEpTVmFsdWUgKkVxdWFsTm9kZTo6ZXZhbHVhdGUo
RXhlY1N0YXRlICoKICAgcmV0dXJuIGpzQm9vbGVhbihyZXN1bHQpOwogfQogCit2b2lkIEVxdWFs
Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIGV4cHIxKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHBy
Mik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCaXRPcGVyTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEgMTEuMTAKQEAgLTEz
MzEsNiArMTYzMCwxMiBAQCBKU1ZhbHVlICpCaXRPcGVyTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRl
CiAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCit2b2lkIEJpdE9wZXJOb2RlOjpyZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlz
aXRvciwgZXhwcjEpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJpbmFyeUxvZ2ljYWxOb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xMQpAQCAtMTM0OCw2ICsxNjUz
LDEyIEBAIEpTVmFsdWUgKkJpbmFyeUxvZ2ljYWxOb2RlOjpldmFsdWF0ZShFeGUKICAgcmV0dXJu
IHYyOwogfQogCit2b2lkIEJpbmFyeUxvZ2ljYWxOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIENvbmRpdGlvbmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLy8gRUNNQSAxMS4xMgpAQCAtMTQzMiwzNyArMTc0Myw0OSBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSBKU1ZhbHVlICp2YWx1ZUZvclJlCiAgIHJldHVybiB2OwogfQogCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXNzaWduUmVzb2x2ZU5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSlNWYWx1ZSAqQXNzaWduUmVzb2x2ZU5vZGU6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgQ29uZGl0aW9uYWxOb2RlOjpyZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0g
ZXhlYy0+Y29udGV4dCgpLT5zY29wZUNoYWluKCk7Ci0gIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVy
ID0gY2hhaW4uYmVnaW4oKTsKLSAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgp
OwotICAKLSAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNo
YWluCi0gIGFzc2VydChpdGVyICE9IGVuZCk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
bG9naWNhbCk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICByZWN1cnNl
VmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KIAotICBQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAg
SlNPYmplY3QgKmJhc2U7Ci0gIGRvIHsgCi0gICAgYmFzZSA9ICppdGVyOwotICAgIGlmIChiYXNl
LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgbV9pZGVudCwgc2xvdCkpCi0gICAgICBnb3RvIGZvdW5k
OworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbk5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgICsraXRlcjsKLSAgfSB3aGlsZSAoaXRl
ciAhPSBlbmQpOworLy8gQW4gc3BlY2lhbCB2ZXJzaW9uIHdoZXJlIExIUyBpcyBhbHdheXMgbG9j
YWwgYW5kIHdoZXJlIG5vIAorLy8gcmVhZC1tb2RpZnktd3JpdGUgaXMgcG9zc2libGUuCitjbGFz
cyBMb2NhbEFzc2lnbk5vZGUgOiBwdWJsaWMgQXNzaWduTm9kZSB7CitwdWJsaWM6CisgIExvY2Fs
QXNzaWduTm9kZShMb2NhdGlvbk5vZGUqIGxvYywgTm9kZSAqcmlnaHQsIGludCBpZHgpICBLSlNf
RkFTVF9DQUxMIDogCisgICAgICBBc3NpZ25Ob2RlKGxvYywgT3BFcXVhbCwgcmlnaHQpLCBpbmRl
eChpZHgpIHt9CisKKyAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKSAgS0pTX0ZB
U1RfQ0FMTCB7CisgICAgQWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0
aW9uSW1wKj4oZXhlYy0+Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworICAgIEpTVmFs
dWUgKnYgPSBtX3JpZ2h0LT5ldmFsdWF0ZShleGVjKTsKKyAgICBLSlNfQ0hFQ0tFWENFUFRJT05W
QUxVRQorICAgIHNjb3BlLT5wdXRMb2NhbENoZWNrZWQoaW5kZXgsIHYpOworICAgIHJldHVybiB2
OworICB9Citwcml2YXRlOgorICBpbnQgaW5kZXg7Cit9OworCitKU1ZhbHVlKiBBc3NpZ25Ob2Rl
OjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgUmVmZXJlbmNlIHJlZiA9IG1fbG9jLT5l
dmFsdWF0ZVJlZmVyZW5jZShleGVjKTsKKworICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogCi0g
IGlmIChtX29wZXIgIT0gT3BFcXVhbCkKLSAgICByZXR1cm4gdGhyb3dVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIG1faWRlbnQpOworICAvL0xvb2t1cCBmYWlsdXJlIGlzIE9LIGZvciBhc3Np
Z25tZW50cywgYnV0IG5vdCAKKyAgLy9yZWFkLW1vZGlmeS13cml0ZSBvcHMsIGUuZy4gKz0KKyAg
aWYgKCFyZWYuZm91bmQgJiYgbV9vcGVyICE9IE9wRXF1YWwpCisgICAgcmV0dXJuIHRocm93VW5k
ZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCByZWYuaWRlbnQpOwogCi0gZm91bmQ6CiAgIEpTVmFs
dWUgKnY7CiAKICAgaWYgKG1fb3BlciA9PSBPcEVxdWFsKSB7CiAgICAgdiA9IG1fcmlnaHQtPmV2
YWx1YXRlKGV4ZWMpOwogICB9IGVsc2UgewotICAgIEpTVmFsdWUgKnYxID0gc2xvdC5nZXRWYWx1
ZShleGVjLCBiYXNlLCBtX2lkZW50KTsKKyAgICBKU1ZhbHVlICp2MSA9IHJlZi5yZWFkKGV4ZWMp
OwogICAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAgICAgSlNWYWx1ZSAqdjIgPSBtX3JpZ2h0
LT5ldmFsdWF0ZShleGVjKTsKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVudChl
eGVjLCB2MSwgdjIsIG1fb3Blcik7CkBAIC0xNDcwLDEwICsxNzkzLDI4IEBAIEpTVmFsdWUgKkFz
c2lnblJlc29sdmVOb2RlOjpldmFsdWF0ZShFeGUKIAogICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxV
RQogCi0gIGJhc2UtPnB1dChleGVjLCBtX2lkZW50LCB2KTsKKyAgcmVmLndyaXRlKGV4ZWMsIHYp
OwogICByZXR1cm4gdjsKIH0KIAordm9pZCBBc3NpZ25Ob2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpCit7CisgICBOb2RlOjpyZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1f
bG9jKTsKKyAgIE5vZGU6OnJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9yaWdodCk7Cit9CisK
K05vZGUqIEFzc2lnbk5vZGU6Om9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlKQoreworICBpZiAobV9sb2MtPmlzVmFyQWNjZXNzTm9kZSgp
ICYmIG1fb3BlciA9PSBPcEVxdWFsKSB7CisgICAgVmFyQWNjZXNzTm9kZSogaWRlbnQgPSBzdGF0
aWNfY2FzdDxWYXJBY2Nlc3NOb2RlKj4obV9sb2MuZ2V0KCkpOworICAgIGludCBpZCA9IGlkZW50
LT5sb2NhbElEKG5vZGUpOworICAgIGlmIChpZCAhPSAtMSkgeworICAgICAgICByZXR1cm4gbmV3
IExvY2FsQXNzaWduTm9kZShtX2xvYy5nZXQoKSwgbV9yaWdodC5nZXQoKSwgaWQpOworICAgIH0K
KyAgfQorICByZXR1cm4gMDsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IEFzc2lnbkRvdE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSlNW
YWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpleGVjKQpAQCAtMTQ5Miw2
ICsxODMzLDggQEAgSlNWYWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YQogICAg
IEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCiAgICAgSlNWYWx1ZSAqdjIgPSBtX3JpZ2h0LT5ldmFs
dWF0ZShleGVjKTsKICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5QXNzaWdubWVudChleGVjLCB2
MSwgdjIsIG1fb3Blcik7CisKKyAgICAvLyMjIyBjYW4gZG8gZGlyZWN0IHdyaXRlIGhlcmUuLgog
ICB9CiAKICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKQEAgLTE1MDAsMTMgKzE4NDMsMTAgQEAg
SlNWYWx1ZSAqQXNzaWduRG90Tm9kZTo6ZXZhbHVhdGUoRXhlY1N0YQogICByZXR1cm4gdjsKIH0K
IAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFzc2lnbkVycm9yTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1KU1ZhbHVlKiBBc3NpZ25FcnJvck5v
ZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgQXNzaWduRG90Tm9kZTo6cmVjdXJz
ZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICAgIHRocm93RXJyb3IoZXhlYywgUmVm
ZXJlbmNlRXJyb3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2Uu
Iik7Ci0gICAgaGFuZGxlRXhjZXB0aW9uKGV4ZWMpOwotICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fYmFzZSk7CisgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgbV9yaWdodCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBBc3NpZ25CcmFja2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpAQCAtMTUzMSw2ICsxODcxLDggQEAgSlNWYWx1ZSAqQXNzaWduQnJhY2tldE5vZGU6OmV2YWx1
YXRlKEV4ZQogICAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKICAgICAgIEpTVmFsdWUgKnYy
ID0gbV9yaWdodC0+ZXZhbHVhdGUoZXhlYyk7CiAgICAgICB2ID0gdmFsdWVGb3JSZWFkTW9kaWZ5
QXNzaWdubWVudChleGVjLCB2MSwgdjIsIG1fb3Blcik7CisKKyAgICAgIC8vIyMjIGNhbiBkbyBk
aXJlY3Qgd3JpdGUgaGVyZS4uCiAgICAgfQogCiAgICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUK
QEAgLTE1NTAsNiArMTg5Miw4IEBAIEpTVmFsdWUgKkFzc2lnbkJyYWNrZXROb2RlOjpldmFsdWF0
ZShFeGUKICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQogICAgIEpTVmFsdWUgKnYyID0gbV9y
aWdodC0+ZXZhbHVhdGUoZXhlYyk7CiAgICAgdiA9IHZhbHVlRm9yUmVhZE1vZGlmeUFzc2lnbm1l
bnQoZXhlYywgdjEsIHYyLCBtX29wZXIpOworCisgICAgLy8jIyMgY2FuIGRvIGRpcmVjdCB3cml0
ZSBoZXJlLi4KICAgfQogCiAgIEtKU19DSEVDS0VYQ0VQVElPTlZBTFVFCkBAIC0xNTU4LDYgKzE5
MDIsMjAgQEAgSlNWYWx1ZSAqQXNzaWduQnJhY2tldE5vZGU6OmV2YWx1YXRlKEV4ZQogICByZXR1
cm4gdjsKIH0KIAordm9pZCBBc3NpZ25CcmFja2V0Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNp
dG9yICp2aXNpdG9yKQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG1fYmFzZSk7Cisg
IHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbV9zdWJzY3JpcHQpOworICByZWN1cnNlVmlzaXRM
aW5rKHZpc2l0b3IsIG1fcmlnaHQpOworfQorCitKU1ZhbHVlKiBBc3NpZ25FcnJvck5vZGU6OmV2
YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykgCit7IAorICAgIHRocm93RXJyb3IoZXhlYywgUmVmZXJl
bmNlRXJyb3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIik7
IAorICAgIGhhbmRsZUV4Y2VwdGlvbihleGVjKTsgCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
IAorfSAKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbW1hTm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xNApAQCAtMTU3
MSw2ICsxOTI5LDEyIEBAIEpTVmFsdWUgKkNvbW1hTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICoK
ICAgcmV0dXJuIHY7CiB9CiAKK3ZvaWQgQ29tbWFOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjEpOworICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIyKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEFzc2lnbkV4cHJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLy8gRUNNQSAxMi4yCkBAIC0xNTc5LDggKzE5NDMsMTIgQEAgSlNWYWx1ZSAqQXNz
aWduRXhwck5vZGU6OmV2YWx1YXRlKEV4ZWNTdAogICByZXR1cm4gZXhwci0+ZXZhbHVhdGUoZXhl
Yyk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWYXJEZWNsTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIEFzc2lnbkV4cHJOb2RlOjpy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgZXhwcik7Cit9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBW
YXJEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgCiBWYXJE
ZWNsTm9kZTo6VmFyRGVjbE5vZGUoY29uc3QgSWRlbnRpZmllciAmaWQsIEFzc2lnbkV4cHJOb2Rl
ICppbiwgVHlwZSB0KQogICAgIDogdmFyVHlwZSh0KSwgaWRlbnQoaWQpLCBpbml0KGluKQpAQCAt
MTYxNiw3ICsxOTg0LDcgQEAgSlNWYWx1ZSogVmFyRGVjbE5vZGU6OmhhbmRsZVNsb3dDYXNlKEV4
ZQogfQogCiAvLyBFQ01BIDEyLjIKLUpTVmFsdWUqIFZhckRlY2xOb2RlOjpldmFsdWF0ZShFeGVj
U3RhdGUqIGV4ZWMpCitKU1ZhbHVlICpWYXJEZWNsTm9kZTo6ZXZhbHVhdGUoRXhlY1N0YXRlICpl
eGVjKQogewogICAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5z
Y29wZUNoYWluKCk7CiAgICAgSlNPYmplY3QqIHZhcmlhYmxlT2JqZWN0ID0gZXhlYy0+Y29udGV4
dCgpLT52YXJpYWJsZU9iamVjdCgpOwpAQCAtMTYyNiw3ICsxOTk0LDE0IEBAIEpTVmFsdWUqIFZh
ckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUKICAgICBib29sIGluR2xvYmFsU2NvcGUgPSAr
K2NoYWluLmJlZ2luKCkgPT0gY2hhaW4uZW5kKCk7CiAKICAgICBpZiAoaW5HbG9iYWxTY29wZSAm
JiAoaW5pdCB8fCAhdmFyaWFibGVPYmplY3QtPmdldERpcmVjdChpZGVudCkpKSB7Ci0gICAgICAg
IEpTVmFsdWUqIHZhbCA9IGluaXQgPyBpbml0LT5ldmFsdWF0ZShleGVjKSA6IGpzVW5kZWZpbmVk
KCk7CisgICAgICAgIEpTVmFsdWUgKnZhbDsKKworICAgICAgICBpZiAoaW5pdCkgeworICAgICAg
ICAgICAgdmFsID0gaW5pdC0+ZXZhbHVhdGUoZXhlYyk7CisgICAgICAgICAgICBLSlNfQ0hFQ0tF
WENFUFRJT05WQUxVRQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHZhbCA9IGpzVW5kZWZp
bmVkKCk7CisKICAgICAgICAgaW50IGZsYWdzID0gSW50ZXJuYWw7CiAgICAgICAgIGlmIChleGVj
LT5jb250ZXh0KCktPmNvZGVUeXBlKCkgIT0gRXZhbENvZGUpCiAgICAgICAgICAgICBmbGFncyB8
PSBEb250RGVsZXRlOwpAQCAtMTYzNCwyMCArMjAwOSwyMCBAQCBKU1ZhbHVlKiBWYXJEZWNsTm9k
ZTo6ZXZhbHVhdGUoRXhlY1N0YXRlCiAgICAgICAgICAgICBmbGFncyB8PSBSZWFkT25seTsKICAg
ICAgICAgdmFyaWFibGVPYmplY3QtPnB1dERpcmVjdChpZGVudCwgdmFsLCBmbGFncyk7CiAgICAg
fSBlbHNlIGlmIChpbml0KSB7Ci0gICAgICAgIEpTVmFsdWUqIHZhbCA9IGluaXQtPmV2YWx1YXRl
KGV4ZWMpOwotICAgICAgICBLSlNfQ0hFQ0tFWENFUFRJT05WQUxVRQotICAgICAgICAgICAgCisg
ICAgICAgIEpTVmFsdWUgKnZhbCA9IGluaXQtPmV2YWx1YXRlKGV4ZWMpOworCiAgICAgICAgIC8v
IGlmIHRoZSB2YXJpYWJsZSBvYmplY3QgaXMgdGhlIHRvcCBvZiB0aGUgc2NvcGUgY2hhaW4sIHRo
ZW4gdGhhdCBtdXN0Ci0gICAgICAgIC8vIGJlIHdoZXJlIHRoaXMgdmFyaWFibGUgaXMgZGVjbGFy
ZWQsIHByb2Nlc3NWYXJEZWNscyB3b3VsZCBoYXZlIHB1dCAKKyAgICAgICAgLy8gYmUgd2hlcmUg
dGhpcyB2YXJpYWJsZSBpcyBkZWNsYXJlZCwgcHJvY2Vzc1ZhckRlY2xzIHdvdWxkIGhhdmUgcHV0
CiAgICAgICAgIC8vIGl0IHRoZXJlLiBEb24ndCBzZWFyY2ggdGhlIHNjb3BlIGNoYWluLCB0byBv
cHRpbWl6ZSB0aGlzIHZlcnkgY29tbW9uIGNhc2UuCisKICAgICAgICAgaWYgKGNoYWluLnRvcCgp
ICE9IHZhcmlhYmxlT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVNsb3dDYXNlKGV4
ZWMsIGNoYWluLCB2YWwpOwogCi0gICAgICAgIHVuc2lnbmVkIGZsYWdzID0gMDsKKyAgICAgICAg
dW5zaWduZWQgaW50IGZsYWdzID0gMDsKICAgICAgICAgdmFyaWFibGVPYmplY3QtPmdldFByb3Bl
cnR5QXR0cmlidXRlcyhpZGVudCwgZmxhZ3MpOwogICAgICAgICBpZiAodmFyVHlwZSA9PSBWYXJE
ZWNsTm9kZTo6Q29uc3RhbnQpCiAgICAgICAgICAgICBmbGFncyB8PSBSZWFkT25seTsKLSAgICAg
ICAgCisKICAgICAgICAgQVNTRVJUKHZhcmlhYmxlT2JqZWN0LT5nZXREaXJlY3QoaWRlbnQpIHx8
IGlkZW50ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMpOwogICAgICAgICB2YXJp
YWJsZU9iamVjdC0+cHV0KGV4ZWMsIGlkZW50LCB2YWwsIGZsYWdzKTsKICAgICB9CkBAIC0xNjU2
LDIzICsyMDMxLDUwIEBAIEpTVmFsdWUqIFZhckRlY2xOb2RlOjpldmFsdWF0ZShFeGVjU3RhdGUK
ICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGNoYW5nZSB0aGUgaW5oZXJpdGVu
Y2UgaGllcmFyY2h5IHNvIHRoaXMKICAgICAvLyBub2RlIGRvZXNuJ3QgZXZlbiBoYXZlIGFuIGV2
YWx1YXRlIG1ldGhvZCwgYnV0IGluc3RlYWQgYSBkaWZmZXJlbnRseSBuYW1lZAogICAgIC8vIG9u
ZSB3aXRoIGEgdm9pZCByZXR1cm4uCisKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBWYXJEZWNs
Tm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgVmFyRGVjbE5vZGU6
OnByb2Nlc3NWYXJEZWNsKEV4ZWNTdGF0ZSAqZXhlYykKIHsKICAgSlNPYmplY3QqIHZhcmlhYmxl
ID0gZXhlYy0+Y29udGV4dCgpLT52YXJpYWJsZU9iamVjdCgpOworICAKKyAgLy8gRmlyc3QsIGRl
dGVybWluZSB3aGljaCBmbGFncyB3ZSB3YW50IHRvIHVzZS4uCisgIGludCBmbGFncyA9IERvbnRE
ZWxldGU7IAorICBpZiAodmFyVHlwZSA9PSBWYXJEZWNsTm9kZTo6Q29uc3RhbnQpCisgICAgZmxh
Z3MgfD0gUmVhZE9ubHk7CisKKyAgLy8gQXJlIHdlIGluc2lkZSBhIGZ1bmN0aW9uPyBJZiBzbywg
d2UgZmlsbCBpbiB0aGUgc3ltYm9sIHRhYmxlCisgIHN3aXRjaCAoZXhlYy0+Y29udGV4dCgpLT5j
b2RlVHlwZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkNvZGU6CisgICAgICAvLyBJbnNpZGUgYSBm
dW5jdGlvbiwgd2UncmUganVzdCBjb21wdXRpbmcgc3RhdGljIGluZm9ybWF0aW9uLgorICAgICAg
Ly8gc28sIGp1c3QgZmlsbCBpbiB0aGUgc3ltYm9sIHRhYmxlLgorICAgICAgZXhlYy0+Y29udGV4
dCgpLT5jdXJyZW50Qm9keSgpLT5hZGRWYXJEZWNsKGlkZW50LCBmbGFncywgZXhlYyk7CisgICAg
ICByZXR1cm47CisgICAgY2FzZSBFdmFsQ29kZToKKyAgICAgIC8vIGV2YWwtaW5qZWN0ZWQgdmFy
aWFibGVzIGNhbiBiZSBkZWxldGVkLi4KKyAgICAgIGZsYWdzICY9IH5Eb250RGVsZXRlOworCisg
ICAgICAvLyBJZiBhIHZhcmlhYmxlIGJ5IHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cywgZG9uJ3Qg
Y2xvYmJlciBpdCAtCisgICAgICAvLyBldmFsIG1heSBiZSB0cnlpbmcgdG8gaW5qZWN0IGEgdmFy
aWFibGUgdGhhdCBhbHJlYWR5IGV4aXN0cy4uCisgICAgICBpZiAoIXZhcmlhYmxlLT5oYXNQcm9w
ZXJ0eShleGVjLCBpZGVudCkpIHsKKyAgICAgICAgdmFyaWFibGUtPnB1dChleGVjLCBpZGVudCwg
anNVbmRlZmluZWQoKSwgZmxhZ3MpOworICAgICAgICAvLyBldmFsIGluamVjdGVkIGEgbmV3IGxv
Y2FsIGludG8gc2NvcGUhIEJldHRlciBtYXJrIHRoYXQgZG93biwgCisgICAgICAgIC8vIHNvIHRo
YXQgTm9uTG9jYWxSZXNvbHZlciBzdG9wcyBza2lwcGluZyB0aGUgbG9jYWwgc2NvcGUKKyAgICAg
ICAgdmFyaWFibGUtPnNldExvY2FsSW5qZWN0ZWQoKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOwor
ICAgIGNhc2UgR2xvYmFsQ29kZToKKyAgICAgIC8vIElmIGEgdmFyaWFibGUgYnkgdGhpcyBuYW1l
IGFscmVhZHkgZXhpc3RzLCBkb24ndCBjbG9iYmVyIGl0IC0KKyAgICAgIC8vICMjIyBJIGFtIG5v
dCBzdWUgdGhpcyBpcyBuZWVkZWQgZm9yIEdsb2JhbENvZGUKKyAgICAgIGlmICghdmFyaWFibGUt
Pmhhc1Byb3BlcnR5KGV4ZWMsIGlkZW50KSkKKyAgICAgICAgdmFyaWFibGUtPnB1dChleGVjLCBp
ZGVudCwganNVbmRlZmluZWQoKSwgZmxhZ3MpOworICB9OworfQogCi0gIC8vIElmIGEgdmFyaWFi
bGUgYnkgdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLCBkb24ndCBjbG9iYmVyIGl0IC0KLSAgLy8g
aXQgbWlnaHQgYmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIKLSAgaWYgKCF2YXJpYWJsZS0+aGFzUHJv
cGVydHkoZXhlYywgaWRlbnQpKSB7Ci0gICAgaW50IGZsYWdzID0gSW50ZXJuYWw7Ci0gICAgaWYg
KGV4ZWMtPmNvbnRleHQoKS0+Y29kZVR5cGUoKSAhPSBFdmFsQ29kZSkKLSAgICAgIGZsYWdzIHw9
IERvbnREZWxldGU7Ci0gICAgaWYgKHZhclR5cGUgPT0gVmFyRGVjbE5vZGU6OkNvbnN0YW50KQot
ICAgICAgZmxhZ3MgfD0gUmVhZE9ubHk7Ci0gICAgdmFyaWFibGUtPnB1dChleGVjLCBpZGVudCwg
anNVbmRlZmluZWQoKSwgZmxhZ3MpOwotICB9Cit2b2lkIFZhckRlY2xOb2RlOjpyZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwg
aW5pdCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBWYXJEZWNsTGlz
dE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNjg3LDE3ICsyMDg5LDE3
IEBAIEpTVmFsdWUgKlZhckRlY2xMaXN0Tm9kZTo6ZXZhbHVhdGUoRXhlY1MKICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKLXZvaWQgVmFyRGVjbExpc3ROb2RlOjpwcm9jZXNzVmFyRGVjbHMo
RXhlY1N0YXRlICpleGVjKQotewotICBmb3IgKFZhckRlY2xMaXN0Tm9kZSAqbiA9IHRoaXM7IG47
IG4gPSBuLT5uZXh0LmdldCgpKQotICAgIG4tPnZhci0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwot
fQotCiB2b2lkIFZhckRlY2xMaXN0Tm9kZTo6YnJlYWtDeWNsZSgpIAogeyAKICAgICBuZXh0ID0g
MDsKIH0KIAordm9pZCBWYXJEZWNsTGlzdE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAq
dmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCB2YXIpOworICByZWN1cnNl
VmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gVmFyU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAvLyBFQ01BIDEyLjIKQEAgLTE3MTEsOSArMjExMyw1OSBAQCBDb21wbGV0aW9uIFZhclN0YXRl
bWVudE5vZGU6OmV4ZWN1dGUoRXhlCiAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCk7CiB9CiAK
LXZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykK
K3ZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KQoreworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCitOb2RlKiBWYXJT
dGF0ZW1lbnROb2RlOjpvcHRpbWl6ZUxvY2FsQWNjZXNzKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uQm9k
eU5vZGUqIGZ1bmNCb2R5KQoreworICBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlKiBzdGF0aWNWZXIg
PSBuZXcgU3RhdGljVmFyU3RhdGVtZW50Tm9kZSgpOworICBzdGF0aWNWZXItPm9yaWdpbmFsU3Rh
dGVtZW50ID0gdGhpczsKKworICBmb3IgKFZhckRlY2xMaXN0Tm9kZSAqbiA9IG5leHQuZ2V0KCk7
IG47IG4gPSBuLT5uZXh0LmdldCgpKSB7CisgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHRoaW5n
cyB3aGljaCBoYXZlIGFuIGluaXRpYWxpemVyIC0tLSAKKyAgICAvLyBldmVyeXRoaW5nIGVsc2Ug
aXMgYSBuby1vcCBhdCBleGVjdXRpb24gdGltZSwgCisgICAgLy8gYW5kIG9ubHkgbWFrZXMgYSBk
aWZmZXJlbmNlIGF0IHByb2Nlc3NWYXJEZWNsIHRpbWUKKyAgICBpZiAobi0+dmFyLT5pbml0KSB7
CisgICAgICBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlOjpJbml0aWFsaXplciBpbml0OworICAgICAg
aW5pdC5pbml0RXhwciA9IG4tPnZhci0+aW5pdC0+Z2V0RXhwcigpOyAvL1NraXAgdGhlIEFzc2ln
bkV4cHJOb2RlIGFzIHdlbGwuLi4KKyAgICAgIGluaXQubG9jYWxJRCAgPSBmdW5jQm9keS0+bG9v
a3VwU3ltYm9sSUQobi0+dmFyLT5pZGVudCk7CisgICAgICBpZiAoaW5pdC5sb2NhbElEID09IC0x
KSB7IC8vT3VjaCwgYSBkeW5hbWljIHByb3BlcnR5ISBCYWlsIG91dCwgYmFpbCBvdXQhCisgICAg
ICAgIG5ld05vZGVzLT5yZW1vdmUoc3RhdGljVmVyKTsKKyAgICAgICAgZGVsZXRlIHN0YXRpY1Zl
cjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgICBzdGF0aWNWZXItPmluaXRpYWxp
emVycy5hcHBlbmQoaW5pdCk7CisgICAgfQorICB9CisgIHJldHVybiBzdGF0aWNWZXI7Cit9Owor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RhdGljVmFyU3RhdGVtZW50Tm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb21wbGV0aW9uIFN0YXRpY1ZhclN0YXRlbWVu
dE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKQoreworICBLSlNfQlJFQUtQT0lOVDsKKyAg
QWN0aXZhdGlvbkltcCogc2NvcGUgPSBzdGF0aWNfY2FzdDxBY3RpdmF0aW9uSW1wKj4oZXhlYy0+
Y29udGV4dCgpLT5hY3RpdmF0aW9uT2JqZWN0KCkpOworCisgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5pdGlhbGl6ZXJzLnNpemUoKTsgKytpKSB7CisgICAgSlNWYWx1ZSogdmFsID0gaW5pdGlh
bGl6ZXJzW2ldLmluaXRFeHByLT5ldmFsdWF0ZShleGVjKTsKKyAgICBLSlNfQ0hFQ0tFWENFUFRJ
T04KKyAgICBzY29wZS0+cHV0TG9jYWwoaW5pdGlhbGl6ZXJzW2ldLmxvY2FsSUQsIHZhbCk7Cisg
ICAgLy8gTm90ZTogZmxhZ3MgYXJlIGFscmVhZHkgdGFrZW4gY2FyZSBvZiBhdCBkZWNsYXJhdGlv
biB0aW1lCisgIH0KKyAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsKTsKK30KKwordm9pZCBTdGF0
aWNWYXJTdGF0ZW1lbnROb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7
Ci0gIG5leHQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpbml0aWFsaXplcnMuc2l6ZSgpOyArK2kpIHsKKyAgIE5vZGUqIG9sZEluaXRpYWxpemVyID0g
aW5pdGlhbGl6ZXJzW2ldLmluaXRFeHByLmdldCgpOworICAgTm9kZSogbmV3SW5pdGlhbGl6ZXIg
PSB2aXNpdG9yLT52aXNpdChvbGRJbml0aWFsaXplcik7CisgICBpZiAobmV3SW5pdGlhbGl6ZXIp
CisgICAgaW5pdGlhbGl6ZXJzW2ldLmluaXRFeHByID0gbmV3SW5pdGlhbGl6ZXI7CisgIH0KIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJsb2NrTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE3MzUsMTUgKzIxODcsMTIgQEAgQ29tcGxl
dGlvbiBCbG9ja05vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICBpZiAoIXNvdXJjZSkKICAgICBy
ZXR1cm4gQ29tcGxldGlvbihOb3JtYWwpOwogCi0gIHNvdXJjZS0+cHJvY2Vzc0Z1bmNEZWNsKGV4
ZWMpOwotCiAgIHJldHVybiBzb3VyY2UtPmV4ZWN1dGUoZXhlYyk7CiB9CiAKLXZvaWQgQmxvY2tO
b2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBCbG9ja05vZGU6OnJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgaWYgKHNvdXJjZSkKLSAgICBz
b3VyY2UtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIHNvdXJjZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbXB0
eVN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNzY3LDYgKzIy
MTYsMTEgQEAgQ29tcGxldGlvbiBFeHByU3RhdGVtZW50Tm9kZTo6ZXhlY3V0ZShFeAogICByZXR1
cm4gQ29tcGxldGlvbihOb3JtYWwsIHYpOwogfQogCit2b2lkIEV4cHJTdGF0ZW1lbnROb2RlOjpy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmso
dmlzaXRvciwgZXhwcik7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJ
Zk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC8vIEVDTUEg
MTIuNQpAQCAtMTc5MCwxMiArMjI0NCwxMSBAQCBDb21wbGV0aW9uIElmTm9kZTo6ZXhlY3V0ZShF
eGVjU3RhdGUgKmV4CiAgIHJldHVybiBzdGF0ZW1lbnQyLT5leGVjdXRlKGV4ZWMpOwogfQogCi12
b2lkIElmTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgSWZOb2Rl
OjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpCiB7Ci0gIHN0YXRlbWVudDEtPnBy
b2Nlc3NWYXJEZWNscyhleGVjKTsKLQotICBpZiAoc3RhdGVtZW50MikKLSAgICBzdGF0ZW1lbnQy
LT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhw
cik7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50MSk7CisgIHJlY3Vyc2VW
aXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50Mik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBEb1doaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC0xODA3LDIxICsyMjYwLDIzIEBAIENvbXBsZXRpb24gRG9XaGlsZU5vZGU6OmV4ZWN1
dGUoRXhlY1N0YXQKIAogICBKU1ZhbHVlICpidjsKICAgQ29tcGxldGlvbiBjOworICBKU1ZhbHVl
KiB2YWx1ZSA9IDA7CiAKICAgZG8gewogICAgIC8vIGJhaWwgb3V0IG9uIGVycm9yCiAgICAgS0pT
X0NIRUNLRVhDRVBUSU9OCiAKLSAgICBleGVjLT5jb250ZXh0KCktPnB1c2hJdGVyYXRpb24oKTsK
ICAgICBjID0gc3RhdGVtZW50LT5leGVjdXRlKGV4ZWMpOwotICAgIGV4ZWMtPmNvbnRleHQoKS0+
cG9wSXRlcmF0aW9uKCk7CiAgICAgCiAgICAgaWYgKGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigp
LT50aW1lZE91dCgpKQogICAgICAgICByZXR1cm4gQ29tcGxldGlvbihJbnRlcnJ1cHRlZCk7CiAK
LSAgICBpZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgbHMuY29udGFpbnMoYy50
YXJnZXQoKSkpKSB7Ci0gICAgICBpZiAoKGMuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIGxzLmNv
bnRhaW5zKGMudGFyZ2V0KCkpKQotICAgICAgICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIDAp
OworICAgIGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCisgICAgICAgIHZhbHVlID0gYy52YWx1
ZSgpOworCisgICAgaWYgKCEoKGMuY29tcGxUeXBlKCkgPT0gQ29udGludWUpICYmIChjLnRhcmdl
dCgpID09IHRoaXMpKSkgeworICAgICAgaWYgKChjLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiAo
Yy50YXJnZXQoKSA9PSB0aGlzKSkKKyAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsLCB2
YWx1ZSk7CiAgICAgICBpZiAoYy5jb21wbFR5cGUoKSAhPSBOb3JtYWwpCiAgICAgICAgIHJldHVy
biBjOwogICAgIH0KQEAgLTE4MjksMTIgKzIyODQsMTMgQEAgQ29tcGxldGlvbiBEb1doaWxlTm9k
ZTo6ZXhlY3V0ZShFeGVjU3RhdAogICAgIEtKU19DSEVDS0VYQ0VQVElPTgogICB9IHdoaWxlIChi
di0+dG9Cb29sZWFuKGV4ZWMpKTsKIAotICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIDApOwor
ICByZXR1cm4gQ29tcGxldGlvbihOb3JtYWwsIHZhbHVlKTsKIH0KIAotdm9pZCBEb1doaWxlTm9k
ZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKK3ZvaWQgRG9XaGlsZU5vZGU6OnJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgc3RhdGVtZW50LT5wcm9jZXNz
VmFyRGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcik7CisgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIFdoaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KQEAgLTE4NjAsOSArMjMxNiw3IEBAIENvbXBsZXRpb24gV2hpbGVOb2RlOjpleGVj
dXRlKEV4ZWNTdGF0ZSAKICAgICBpZiAoIWIpCiAgICAgICByZXR1cm4gQ29tcGxldGlvbihOb3Jt
YWwsIHZhbHVlKTsKIAotICAgIGV4ZWMtPmNvbnRleHQoKS0+cHVzaEl0ZXJhdGlvbigpOwogICAg
IGMgPSBzdGF0ZW1lbnQtPmV4ZWN1dGUoZXhlYyk7Ci0gICAgZXhlYy0+Y29udGV4dCgpLT5wb3BJ
dGVyYXRpb24oKTsKIAogICAgIGlmIChleGVjLT5keW5hbWljSW50ZXJwcmV0ZXIoKS0+dGltZWRP
dXQoKSkKICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24oSW50ZXJydXB0ZWQpOwpAQCAtMTg3MCw5
ICsyMzI0LDkgQEAgQ29tcGxldGlvbiBXaGlsZU5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICAg
IGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAgICB2YWx1ZSA9IGMudmFsdWUoKTsKIAot
ICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgbHMuY29udGFpbnMoYy50YXJn
ZXQoKSkpCisgICAgaWYgKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiAoYy50YXJnZXQo
KSA9PSB0aGlzKSkKICAgICAgIGNvbnRpbnVlOwotICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBC
cmVhaykgJiYgbHMuY29udGFpbnMoYy50YXJnZXQoKSkpCisgICAgaWYgKChjLmNvbXBsVHlwZSgp
ID09IEJyZWFrKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKICAgICAgIHJldHVybiBDb21wbGV0
aW9uKE5vcm1hbCwgdmFsdWUpOwogICAgIGlmIChjLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkKICAg
ICAgIHJldHVybiBjOwpAQCAtMTg4MSw5ICsyMzM1LDEwIEBAIENvbXBsZXRpb24gV2hpbGVOb2Rl
OjpleGVjdXRlKEV4ZWNTdGF0ZSAKICAgcmV0dXJuIENvbXBsZXRpb24oKTsgLy8gd29yayBhcm91
bmQgZ2NjIDQuMCBidWcKIH0KIAotdm9pZCBXaGlsZU5vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVj
U3RhdGUgKmV4ZWMpCit2b2lkIFdoaWxlTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2
aXNpdG9yKQogewotICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJz
ZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBz
dGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRm9yTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkwNywxMyArMjM2
MiwxMSBAQCBDb21wbGV0aW9uIEZvck5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICplCiAgICAgLy8g
YmFpbCBvdXQgb24gZXJyb3IKICAgICBLSlNfQ0hFQ0tFWENFUFRJT04KIAotICAgIGV4ZWMtPmNv
bnRleHQoKS0+cHVzaEl0ZXJhdGlvbigpOwogICAgIENvbXBsZXRpb24gYyA9IHN0YXRlbWVudC0+
ZXhlY3V0ZShleGVjKTsKLSAgICBleGVjLT5jb250ZXh0KCktPnBvcEl0ZXJhdGlvbigpOwogICAg
IGlmIChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAgICBjdmFsID0gYy52YWx1ZSgpOwotICAg
IGlmICghKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAmJiBscy5jb250YWlucyhjLnRhcmdl
dCgpKSkpIHsKLSAgICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBCcmVhaykgJiYgbHMuY29udGFp
bnMoYy50YXJnZXQoKSkpCisgICAgaWYgKCEoKGMuY29tcGxUeXBlKCkgPT0gQ29udGludWUpICYm
IChjLnRhcmdldCgpID09IHRoaXMpKSkgeworICAgICAgaWYgKChjLmNvbXBsVHlwZSgpID09IEJy
ZWFrKSAmJiAoYy50YXJnZXQoKSA9PSB0aGlzKSkKICAgICAgICAgcmV0dXJuIENvbXBsZXRpb24o
Tm9ybWFsLCBjdmFsKTsKICAgICAgIGlmIChjLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkKICAgICAg
IHJldHVybiBjOwpAQCAtMTkzMSwxMiArMjM4NCwxMiBAQCBDb21wbGV0aW9uIEZvck5vZGU6OmV4
ZWN1dGUoRXhlY1N0YXRlICplCiAgIHJldHVybiBDb21wbGV0aW9uKCk7IC8vIHdvcmsgYXJvdW5k
IGdjYyA0LjAgYnVnCiB9CiAKLXZvaWQgRm9yTm9kZTo6cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0
ZSAqZXhlYykKK3ZvaWQgRm9yTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KQogewotICBpZiAoZXhwcjEpCi0gICAgZXhwcjEtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLQot
ICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2
aXNpdG9yLCBleHByMSk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZXhwcjIpOworICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGV4cHIzKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNp
dG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
Rm9ySW5Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTk1MSw3
ICsyNDA0LDcgQEAgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoY29uc3QgSWRlbnRpZmllciAmaQogewog
ICAvLyBmb3IoIHZhciBmb28gPSBiYXIgaW4gYmF6ICkKICAgdmFyRGVjbCA9IG5ldyBWYXJEZWNs
Tm9kZShpZGVudCwgaW5pdC5nZXQoKSwgVmFyRGVjbE5vZGU6OlZhcmlhYmxlKTsKLSAgbGV4cHIg
PSBuZXcgUmVzb2x2ZU5vZGUoaWRlbnQpOworICBsZXhwciA9IG5ldyBWYXJBY2Nlc3NOb2RlKGlk
ZW50KTsKIH0KIAogLy8gRUNNQSAxMi42LjQKQEAgLTE5ODQsNjYgKzI0MzcsMjUgQEAgQ29tcGxl
dGlvbiBGb3JJbk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlIAogICAKICAgUHJvcGVydHlOYW1lQXJy
YXlJdGVyYXRvciBlbmQgPSBwcm9wZXJ0eU5hbWVzLmVuZCgpOwogICBmb3IgKFByb3BlcnR5TmFt
ZUFycmF5SXRlcmF0b3IgaXQgPSBwcm9wZXJ0eU5hbWVzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgY29uc3QgSWRlbnRpZmllciAmbmFtZSA9ICppdDsKLSAgICAgIGlmICghdi0+
aGFzUHJvcGVydHkoZXhlYywgbmFtZSkpCi0gICAgICAgICAgY29udGludWU7Ci0KLSAgICAgIEpT
VmFsdWUgKnN0ciA9IGpzT3duZWRTdHJpbmcobmFtZS51c3RyaW5nKCkpOwotCi0gICAgICBpZiAo
bGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBjb25zdCBJZGVudGlmaWVyICZpZGVu
dCA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KGxleHByLmdldCgpKS0+aWRlbnRpZmllcigp
OwotCi0gICAgICAgIGNvbnN0IFNjb3BlQ2hhaW4mIGNoYWluID0gZXhlYy0+Y29udGV4dCgpLT5z
Y29wZUNoYWluKCk7Ci0gICAgICAgIFNjb3BlQ2hhaW5JdGVyYXRvciBpdGVyID0gY2hhaW4uYmVn
aW4oKTsKLSAgICAgICAgU2NvcGVDaGFpbkl0ZXJhdG9yIGVuZCA9IGNoYWluLmVuZCgpOwotICAK
LSAgICAgICAgLy8gd2UgbXVzdCBhbHdheXMgaGF2ZSBzb21ldGhpbmcgaW4gdGhlIHNjb3BlIGNo
YWluCi0gICAgICAgIGFzc2VydChpdGVyICE9IGVuZCk7CisgICAgY29uc3QgSWRlbnRpZmllciAm
bmFtZSA9ICppdDsKKyAgICBpZiAoIXYtPmhhc1Byb3BlcnR5KGV4ZWMsIG5hbWUpKQorICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgICAgIEpTT2JqZWN0
ICpvOwotICAgICAgICBkbyB7IAotICAgICAgICAgICAgbyA9ICppdGVyOwotICAgICAgICAgICAg
aWYgKG8tPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKLSAgICAgICAgICAg
ICAgICBvLT5wdXQoZXhlYywgaWRlbnQsIHN0cik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICArK2l0ZXI7Ci0gICAgICAgIH0gd2hpbGUgKGl0ZXIg
IT0gZW5kKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChpdGVyID09IGVuZCkKLSAgICAgICAgICAg
IG8tPnB1dChleGVjLCBpZGVudCwgc3RyKTsKLSAgICB9IGVsc2UgaWYgKGxleHByLT5pc0RvdEFj
Y2Vzc29yTm9kZSgpKSB7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGlj
X2Nhc3Q8RG90QWNjZXNzb3JOb2RlICo+KGxleHByLmdldCgpKS0+aWRlbnRpZmllcigpOwotICAg
ICAgICBKU1ZhbHVlICp2ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlICo+KGxleHByLmdl
dCgpKS0+YmFzZSgpLT5ldmFsdWF0ZShleGVjKTsKLSAgICAgICAgS0pTX0NIRUNLRVhDRVBUSU9O
Ci0gICAgICAgIEpTT2JqZWN0ICpvID0gdi0+dG9PYmplY3QoZXhlYyk7CisgICAgSlNWYWx1ZSAq
c3RyID0ganNPd25lZFN0cmluZyhuYW1lLnVzdHJpbmcoKSk7CiAKLSAgICAgICAgby0+cHV0KGV4
ZWMsIGlkZW50LCBzdHIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFzc2VydChsZXhwci0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpOwotICAgICAgICBKU1ZhbHVlICp2ID0gc3RhdGljX2Nhc3Q8
QnJhY2tldEFjY2Vzc29yTm9kZSAqPihsZXhwci5nZXQoKSktPmJhc2UoKS0+ZXZhbHVhdGUoZXhl
Yyk7Ci0gICAgICAgIEtKU19DSEVDS0VYQ0VQVElPTgotICAgICAgICBKU1ZhbHVlICp2MiA9IHN0
YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obGV4cHIuZ2V0KCkpLT5zdWJzY3JpcHQo
KS0+ZXZhbHVhdGUoZXhlYyk7Ci0gICAgICAgIEtKU19DSEVDS0VYQ0VQVElPTgotICAgICAgICBK
U09iamVjdCAqbyA9IHYtPnRvT2JqZWN0KGV4ZWMpOwotCi0gICAgICAgIHVpbnQzMl90IGk7Ci0g
ICAgICAgIGlmICh2Mi0+Z2V0VUludDMyKGkpKQotICAgICAgICAgICAgby0+cHV0KGV4ZWMsIGks
IHN0cik7Ci0gICAgICAgIG8tPnB1dChleGVjLCBJZGVudGlmaWVyKHYyLT50b1N0cmluZyhleGVj
KSksIHN0cik7Ci0gICAgfQorICAgIGFzc2VydChsZXhwci0+aXNMb2NhdGlvbigpKTsKKyAgICBM
b2NhdGlvbk5vZGUqIGxvYyA9IHN0YXRpY19jYXN0PExvY2F0aW9uTm9kZSo+KGxleHByLmdldCgp
KTsKIAorICAgIFJlZmVyZW5jZSByZWYgPSBsb2MtPmV2YWx1YXRlUmVmZXJlbmNlKGV4ZWMpOwog
ICAgIEtKU19DSEVDS0VYQ0VQVElPTgorICAgIHJlZi53cml0ZShleGVjLCBzdHIpOwogCi0gICAg
ZXhlYy0+Y29udGV4dCgpLT5wdXNoSXRlcmF0aW9uKCk7CiAgICAgYyA9IHN0YXRlbWVudC0+ZXhl
Y3V0ZShleGVjKTsKLSAgICBleGVjLT5jb250ZXh0KCktPnBvcEl0ZXJhdGlvbigpOwogICAgIGlm
IChjLmlzVmFsdWVDb21wbGV0aW9uKCkpCiAgICAgICByZXR2YWwgPSBjLnZhbHVlKCk7CiAKLSAg
ICBpZiAoISgoYy5jb21wbFR5cGUoKSA9PSBDb250aW51ZSkgJiYgbHMuY29udGFpbnMoYy50YXJn
ZXQoKSkpKSB7Ci0gICAgICBpZiAoKGMuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIGxzLmNvbnRh
aW5zKGMudGFyZ2V0KCkpKQorICAgIGlmICghKChjLmNvbXBsVHlwZSgpID09IENvbnRpbnVlKSAm
JiAoYy50YXJnZXQoKSA9PSB0aGlzKSkpIHsKKyAgICAgIGlmICgoYy5jb21wbFR5cGUoKSA9PSBC
cmVhaykgJiYgKGMudGFyZ2V0KCkgPT0gdGhpcykpCiAgICAgICAgIGJyZWFrOwogICAgICAgaWYg
KGMuY29tcGxUeXBlKCkgIT0gTm9ybWFsKSB7CiAgICAgICAgIHJldHVybiBjOwpAQCAtMjA1Nywx
MSArMjQ2OSwxMyBAQCBDb21wbGV0aW9uIEZvckluTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiAg
IHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwgcmV0dmFsKTsKIH0KIAotdm9pZCBGb3JJbk5vZGU6
OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCit2b2lkIEZvckluTm9kZTo6cmVjdXJz
ZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBpZiAodmFyRGVjbCkKLSAgICB2YXJE
ZWNsLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Ci0gIHN0YXRlbWVudC0+cHJvY2Vzc1ZhckRlY2xz
KGV4ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGluaXQpOworICByZWN1cnNlVmlz
aXRMaW5rKHZpc2l0b3IsIGxleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHBy
KTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCB2YXJEZWNsKTsKKyAgcmVjdXJzZVZpc2l0
TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQ29udGludWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtMjA3MSwxMiArMjQ4NSw3IEBAIENvbXBsZXRpb24gQ29udGludWVOb2RlOjpleGVjdXRlKEV4
ZWNTdGEKIHsKICAgS0pTX0JSRUFLUE9JTlQ7CiAKLSAgaWYgKGlkZW50LmlzRW1wdHkoKSAmJiAh
ZXhlYy0+Y29udGV4dCgpLT5pbkl0ZXJhdGlvbigpKQotICAgIHJldHVybiBjcmVhdGVFcnJvckNv
bXBsZXRpb24oZXhlYywgU3ludGF4RXJyb3IsICJJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4i
KTsKLSAgZWxzZSBpZiAoIWlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+Y29udGV4dCgpLT5zZWVu
TGFiZWxzKCktPmNvbnRhaW5zKGlkZW50KSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0
aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiTGFiZWwgJXMgbm90IGZvdW5kLiIsIGlkZW50KTsKLSAg
ZWxzZQotICAgIHJldHVybiBDb21wbGV0aW9uKENvbnRpbnVlLCAwLCBpZGVudCk7CisgIHJldHVy
biBDb21wbGV0aW9uKENvbnRpbnVlLCAwLCB0YXJnZXQpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gQnJlYWtOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtMjA4NiwxMyArMjQ5NSw3IEBAIENvbXBsZXRpb24gQnJlYWtOb2RlOjpleGVj
dXRlKEV4ZWNTdGF0ZSAKIHsKICAgS0pTX0JSRUFLUE9JTlQ7CiAKLSAgaWYgKGlkZW50LmlzRW1w
dHkoKSAmJiAhZXhlYy0+Y29udGV4dCgpLT5pbkl0ZXJhdGlvbigpICYmCi0gICAgICAhZXhlYy0+
Y29udGV4dCgpLT5pblN3aXRjaCgpKQotICAgIHJldHVybiBjcmVhdGVFcnJvckNvbXBsZXRpb24o
ZXhlYywgU3ludGF4RXJyb3IsICJJbnZhbGlkIGJyZWFrIHN0YXRlbWVudC4iKTsKLSAgZWxzZSBp
ZiAoIWlkZW50LmlzRW1wdHkoKSAmJiAhZXhlYy0+Y29udGV4dCgpLT5zZWVuTGFiZWxzKCktPmNv
bnRhaW5zKGlkZW50KSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5
bnRheEVycm9yLCAiTGFiZWwgJXMgbm90IGZvdW5kLiIpOwotICBlbHNlCi0gICAgcmV0dXJuIENv
bXBsZXRpb24oQnJlYWssIDAsIGlkZW50KTsKKyAgcmV0dXJuIENvbXBsZXRpb24oQnJlYWssIDAs
IHRhcmdldCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXR1cm5O
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTAzLDcgKzI1MDYs
NyBAQCBDb21wbGV0aW9uIFJldHVybk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlCiAgIEtKU19CUkVB
S1BPSU5UOwogCiAgIENvZGVUeXBlIGNvZGVUeXBlID0gZXhlYy0+Y29udGV4dCgpLT5jb2RlVHlw
ZSgpOwotICBpZiAoY29kZVR5cGUgIT0gRnVuY3Rpb25Db2RlICYmIGNvZGVUeXBlICE9IEFub255
bW91c0NvZGUgKSB7CisgIGlmIChjb2RlVHlwZSAhPSBGdW5jdGlvbkNvZGUpIHsKICAgICByZXR1
cm4gY3JlYXRlRXJyb3JDb21wbGV0aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiSW52YWxpZCByZXR1
cm4gc3RhdGVtZW50LiIpOwogICB9CiAKQEAgLTIxMTYsNiArMjUxOSwxMSBAQCBDb21wbGV0aW9u
IFJldHVybk5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlCiAgIHJldHVybiBDb21wbGV0aW9uKFJldHVy
blZhbHVlLCB2KTsKIH0KIAordm9pZCBSZXR1cm5Ob2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpCit7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdmFsdWUpOworfQor
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2l0aE5vZGUgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDEyLjEwCkBAIC0yMTM0LDkgKzI1
NDIsMTAgQEAgQ29tcGxldGlvbiBXaXRoTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKgogICByZXR1
cm4gcmVzOwogfQogCi12b2lkIFdpdGhOb2RlOjpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpl
eGVjKQordm9pZCBXaXRoTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQog
ewotICBzdGF0ZW1lbnQtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBleHByKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBzdGF0ZW1lbnQp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUNsYXVzZU5vZGUg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjE1OSwxNiArMjU2OCwxMCBAQCBD
b21wbGV0aW9uIENhc2VDbGF1c2VOb2RlOjpldmFsU3RhdGVtZW50CiAgICAgcmV0dXJuIENvbXBs
ZXRpb24oTm9ybWFsLCBqc1VuZGVmaW5lZCgpKTsKIH0KIAotdm9pZCBDYXNlQ2xhdXNlTm9kZTo6
cHJvY2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSAqZXhlYykKLXsKLSAgaWYgKHNvdXJjZSkKLSAgICBz
b3VyY2UtPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLX0KLQotdm9pZCBDYXNlQ2xhdXNlTm9kZTo6
cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogZXhlYykKK3ZvaWQgQ2FzZUNsYXVzZU5vZGU6OnJl
Y3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgaWYgKHNvdXJjZSkKLSAgICAg
IHNvdXJjZS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIGV4cHIpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHNvdXJjZSk7CiB9CiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDbGF1c2VMaXN0Tm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTgwLDI2ICsyNTgzLDE3IEBAIEpTVmFsdWUgKkNs
YXVzZUxpc3ROb2RlOjpldmFsdWF0ZShFeGVjU3QKICAgcmV0dXJuIDA7CiB9CiAKLS8vIEVDTUEg
MTIuMTEKLXZvaWQgQ2xhdXNlTGlzdE5vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4
ZWMpCi17Ci0gIGZvciAoQ2xhdXNlTGlzdE5vZGUgKm4gPSB0aGlzOyBuOyBuID0gbi0+bmV4dC5n
ZXQoKSkKLSAgICBpZiAobi0+Y2xhdXNlKQotICAgICAgbi0+Y2xhdXNlLT5wcm9jZXNzVmFyRGVj
bHMoZXhlYyk7Ci19Ci0KLXZvaWQgQ2xhdXNlTGlzdE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVj
U3RhdGUqIGV4ZWMpCi17Ci0gIGZvciAoQ2xhdXNlTGlzdE5vZGUqIG4gPSB0aGlzOyBuOyBuID0g
bi0+bmV4dC5nZXQoKSkKLSAgICBpZiAobi0+Y2xhdXNlKQotICAgICAgbi0+Y2xhdXNlLT5wcm9j
ZXNzRnVuY0RlY2woZXhlYyk7Ci19Ci0KIHZvaWQgQ2xhdXNlTGlzdE5vZGU6OmJyZWFrQ3ljbGUo
KSAKIHsgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQgQ2xhdXNlTGlzdE5vZGU6OnJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9y
LCBjbGF1c2UpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5leHQpOworfQorCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ2FzZUJsb2NrTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBDYXNlQmxvY2tOb2RlOjpDYXNlQmxvY2tOb2RlKENsYXVz
ZUxpc3ROb2RlICpsMSwgQ2FzZUNsYXVzZU5vZGUgKmQsCkBAIC0yMjkyLDI0ICsyNjg2LDExIEBA
IENvbXBsZXRpb24gQ2FzZUJsb2NrTm9kZTo6ZXZhbEJsb2NrKEV4ZWMKICAgcmV0dXJuIENvbXBs
ZXRpb24oTm9ybWFsKTsKIH0KIAotdm9pZCBDYXNlQmxvY2tOb2RlOjpwcm9jZXNzVmFyRGVjbHMo
RXhlY1N0YXRlICpleGVjKQordm9pZCBDYXNlQmxvY2tOb2RlOjpyZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpCiB7Ci0gIGlmIChsaXN0MSkKLSAgICBsaXN0MS0+cHJvY2Vzc1ZhckRl
Y2xzKGV4ZWMpOwotICBpZiAoZGVmKQotICAgIGRlZi0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwot
ICBpZiAobGlzdDIpCi0gICAgbGlzdDItPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLX0KLQotdm9p
ZCBDYXNlQmxvY2tOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKiBleGVjKQotewotICBp
ZiAobGlzdDEpCi0gICBsaXN0MS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOwotICBpZiAoZGVmKQot
ICAgIGRlZi0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOwotICBpZiAobGlzdDIpCi0gICAgbGlzdDIt
PnByb2Nlc3NGdW5jRGVjbChleGVjKTsKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBsaXN0
MSk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZGVmKTsKKyAgcmVjdXJzZVZpc2l0TGlu
ayh2aXNpdG9yLCBsaXN0Mik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBTd2l0Y2hOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzIy
LDIzICsyNzAzLDE3IEBAIENvbXBsZXRpb24gU3dpdGNoTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUK
ICAgSlNWYWx1ZSAqdiA9IGV4cHItPmV2YWx1YXRlKGV4ZWMpOwogICBLSlNfQ0hFQ0tFWENFUFRJ
T04KIAotICBleGVjLT5jb250ZXh0KCktPnB1c2hTd2l0Y2goKTsKICAgQ29tcGxldGlvbiByZXMg
PSBibG9jay0+ZXZhbEJsb2NrKGV4ZWMsdik7Ci0gIGV4ZWMtPmNvbnRleHQoKS0+cG9wU3dpdGNo
KCk7CiAKLSAgaWYgKChyZXMuY29tcGxUeXBlKCkgPT0gQnJlYWspICYmIGxzLmNvbnRhaW5zKHJl
cy50YXJnZXQoKSkpCisgIGlmICgocmVzLmNvbXBsVHlwZSgpID09IEJyZWFrKSAmJiAocmVzLnRh
cmdldCgpID09IHRoaXMpKQogICAgIHJldHVybiBDb21wbGV0aW9uKE5vcm1hbCwgcmVzLnZhbHVl
KCkpOwogICByZXR1cm4gcmVzOwogfQogCi12b2lkIFN3aXRjaE5vZGU6OnByb2Nlc3NWYXJEZWNs
cyhFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGJsb2NrLT5wcm9jZXNzVmFyRGVjbHMoZXhlYyk7Ci19
Ci0KLXZvaWQgU3dpdGNoTm9kZTo6cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogZXhlYykKK3Zv
aWQgU3dpdGNoTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQogewotICBi
bG9jay0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IGV4cHIpOworICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGJsb2NrKTsKIH0KIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExhYmVsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNDYsMTkgKzI3MjEsMTYgQEAgdm9pZCBTd2l0Y2hOb2Rl
Ojpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YQogLy8gRUNNQSAxMi4xMgogQ29tcGxldGlvbiBMYWJl
bE5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKQogewotICBpZiAoIWV4ZWMtPmNvbnRleHQo
KS0+c2VlbkxhYmVscygpLT5wdXNoKGxhYmVsKSkKLSAgICByZXR1cm4gY3JlYXRlRXJyb3JDb21w
bGV0aW9uKGV4ZWMsIFN5bnRheEVycm9yLCAiRHVwbGljYXRlZCBsYWJlbCAlcyBmb3VuZC4iLCBs
YWJlbCk7CiAgIENvbXBsZXRpb24gZSA9IHN0YXRlbWVudC0+ZXhlY3V0ZShleGVjKTsKLSAgZXhl
Yy0+Y29udGV4dCgpLT5zZWVuTGFiZWxzKCktPnBvcCgpOwogCi0gIGlmICgoZS5jb21wbFR5cGUo
KSA9PSBCcmVhaykgJiYgKGUudGFyZ2V0KCkgPT0gbGFiZWwpKQorICBpZiAoKGUuY29tcGxUeXBl
KCkgPT0gQnJlYWspICYmIChlLnRhcmdldCgpID09IHRoaXMpKQogICAgIHJldHVybiBDb21wbGV0
aW9uKE5vcm1hbCwgZS52YWx1ZSgpKTsKICAgcmV0dXJuIGU7CiB9CiAKLXZvaWQgTGFiZWxOb2Rl
Ojpwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlICpleGVjKQordm9pZCBMYWJlbE5vZGU6OnJlY3Vy
c2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgc3RhdGVtZW50LT5wcm9jZXNzVmFy
RGVjbHMoZXhlYyk7CisgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgc3RhdGVtZW50KTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRocm93Tm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNzUsNiArMjc0NywxMSBAQCBDb21wbGV0
aW9uIFRocm93Tm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUgCiAgIHJldHVybiBDb21wbGV0aW9uKFRo
cm93LCB2KTsKIH0KIAordm9pZCBUaHJvd05vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAq
dmlzaXRvcikKK3sKKyAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBleHByKTsKK30KKwogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRyeU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMi4xNApAQCAtMjQwMSwxMyArMjc3OCwx
NyBAQCBDb21wbGV0aW9uIFRyeU5vZGU6OmV4ZWN1dGUoRXhlY1N0YXRlICplCiAgIHJldHVybiBj
OwogfQogCi12b2lkIFRyeU5vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCit2
b2lkIFRyeU5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKIHsKLSAgdHJ5
QmxvY2stPnByb2Nlc3NWYXJEZWNscyhleGVjKTsKLSAgaWYgKGNhdGNoQmxvY2spCi0gICAgY2F0
Y2hCbG9jay0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotICBpZiAoZmluYWxseUJsb2NrKQotICAg
IGZpbmFsbHlCbG9jay0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOworICAgIHJlY3Vyc2VWaXNpdExp
bmsodmlzaXRvciwgdHJ5QmxvY2spOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgY2F0
Y2hCbG9jayk7CisgICAgcmVjdXJzZVZpc2l0TGluayh2aXNpdG9yLCBmaW5hbGx5QmxvY2spOwor
fQorCit2b2lkIFRyeU5vZGU6OnJlY3Vyc2VWaXNpdE5vbkNhdGNoKE5vZGVWaXNpdG9yKiB2aXNp
dG9yKQoreworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgdHJ5QmxvY2spOworICAgIHJl
Y3Vyc2VWaXNpdExpbmsodmlzaXRvciwgZmluYWxseUJsb2NrKTsgLy8jIyMgY2hlY2sgdGhpcz8K
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBhcmFtZXRlck5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI0MjMsMjYgKzI4MDQsODAgQEAgdm9p
ZCBQYXJhbWV0ZXJOb2RlOjpicmVha0N5Y2xlKCkgCiAgICAgbmV4dCA9IDA7CiB9CiAKK3ZvaWQg
UGFyYW1ldGVyTm9kZTo6cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKQoreworICAg
IHJlY3Vyc2VWaXNpdExpbmsodmlzaXRvciwgbmV4dCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoU291cmNlRWxlbWVu
dHNOb2RlICpzKQogICAgIDogQmxvY2tOb2RlKHMpCiAgICAgLCBtX3NvdXJjZVVSTChMZXhlcjo6
Y3VycigpLT5zb3VyY2VVUkwoKSkKICAgICAsIG1fc291cmNlSWQoUGFyc2VyOjpzaWQpCisgICAg
LCBtX2J1aWx0U3ltYm9sTGlzdChmYWxzZSkKIHsKIAogICBzZXRMb2MoLTEsIC0xKTsKIH0KIAot
dm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlICpleGVjKQor
dm9pZCBGdW5jdGlvbkJvZHlOb2RlOjphZGRWYXJEZWNsKGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBpbnQgYXR0ciwgRXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChzb3VyY2UpCi0gICAgICAg
IHNvdXJjZS0+cHJvY2Vzc0Z1bmNEZWNsKGV4ZWMpOworICAvLyBUaGVyZSBpcyBvbmUgbmFzdHkg
c3BlY2lhbCBjYXNlOiBpZ25vcmUgYSAndmFyJyBkZWNsYXJhdGlvbiBvZiAnYXJndW1lbnRzJzsK
KyAgLy8gaXQgZWZmZWN0aXZlbHkgZG9lc24ndCBkbyBhbnl0aGluZyBzaW5jZSB0aGUgbWFnaWMg
J2FyZ3VtZW50cycgaXMgYWxyZWFkeSAKKyAgLy8gaW4gc2NvcGUgYW55d2F5LCBhbmQgaWYgd2Ug
YWxsb2NhdGVkIGEgbG9jYWwsIHdlIHdvdWxkIGhhdmUgdG8gd29ycnkgYWJvdXQKKyAgLy8ga2Vl
cGluZyB0cmFjayBvZiB3aGV0aGVyIGl0IHdhcyBpbml0aWFsaXplZCBvciBub3Qgb24gd2hhdCBp
cyBzdXBwb3NlZCB0byBiZSB0aGUgCisgIC8vIGZhc3QgcGF0aC4gU28gd2UganVzdCBtYWtlIHRo
aXMgZ28gdGhyb3VnaCB0aGUgcHJvcGVydHkgbWFwIGluc3RlYWQuCisgIC8vIE5vdGUgdGhhdCB0
aGlzIGRvZXMgbm90IG1hdHRlciBmb3IgcGFyYW1ldGVycyBvciBmdW5jdGlvbiBkZWNsYXJhdGlv
bnMsCisgIC8vIHNpbmNlIHRob3NlIG92ZXJ3cml0ZSB0aGUgbWFnaWMgJ2FyZ3VtZW50cycgYW55
d2F5LgorICBpZiAoaWRlbnQgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cykKKyAg
ICByZXR1cm47CisKKyAgKHZvaWQpIGFkZFN5bWJvbChpZGVudCwgYXR0cik7Cit9CisKK3ZvaWQg
RnVuY3Rpb25Cb2R5Tm9kZTo6YWRkRnVuY0RlY2woY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGlu
dCBhdHRyLCBGdW5jRGVjbE5vZGUqIGZ1bmNEZWNsKQoreworICAodm9pZCkgYWRkU3ltYm9sKGlk
ZW50LCBhdHRyLCBmdW5jRGVjbCk7Cit9CisKK2ludCBGdW5jdGlvbkJvZHlOb2RlOjphZGRTeW1i
b2woY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBmbGFncywgRnVuY0RlY2xOb2RlKiBmdW5j
RGVjbCkKK3sKKyAgLy8gV2UgZ2V0IHN5bWJvbHMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBpbiAx
MC4xLjMsIGJ1dCBzb21ldGltZXMKKyAgLy8gdGhlIGxhdGVyIG9uZXMgYXJlIHN1cHBvc2VkIHRv
IGxvc2UuIFRoaXMgLW1vc3RseS0gZG9lcyBub3QgCisgIC8vIG1hdHRlciBmb3IgdXMgLS0tIHdl
IHByaW1hcmlseSBjb25jZXJuIG91cnNlbHZlcyB3aXRoIG5hbWUvSUQKKyAgLy8gbWFwcGluZywg
YnV0IHRoZXJlIGlzIGFuIGlzc3VlIG9mIGF0dHJpYnV0ZXMgYW5kIGZ1bmNEZWNsJ3MuCisgIC8v
IEhvd2V2ZXIsIHRoZSBvbmx5IGZsYWcgdGhhdCBtYXR0ZXJzIGhlcmUgaXMgUmVhZE9ubHkgLS0g
CisgIC8vIGV2ZXJ5dGhpbmcgZWxzZSBqdXN0IGhhcyBEb250RGVsZXRlIHNldDsgYW5kIGl0J3Mg
ZnJvbSBjb25zdCwgCisgIC8vIHNvIHdlIGNhbiBqdXN0IGlnbm9yZSBpdCBvbiByZXBldGl0aW9u
cywgc2luY2UgdmFyL2NvbnN0IHNob3VsZCBsb3NlCisgIC8vIGFuZCBhcmUgYXQgdGhlIGVuZC4K
KyAgLy8KKyAgLy8gQW5kIGZvciBmdW5jRGVjbCwgc2luY2UgZnVuY3Rpb25zIHdpbiBvdmVyIGV2
ZXJ5dGhpbmcsIHdlIGFsd2F5cyBzZXQgaXQgaWYgbm9uLXplcm8KKyAgaWYgKEpTVmFsdWUqIG9s
ZElkVmFsID0gbV9zeW1ib2xUYWJsZS5nZXQoaWRlbnQpKSB7CisgICAgaW50IG9sZElkID0gKGlu
dClvbGRJZFZhbC0+Z2V0TnVtYmVyKCk7CisgICAgaWYgKGZ1bmNEZWNsKQorICAgICAgbV9zeW1i
b2xMaXN0W29sZElkIC0gMV0uZnVuY0RlY2wgPSBmdW5jRGVjbDsKKyAgICByZXR1cm4gb2xkSWQ7
CisgIH0KKyAgICAKKyAgaW50IGlkID0gbV9zeW1ib2xMaXN0LnNpemUoKSArIDE7ICAgICAgICAg
Ly9GaXJzdCBlbnRyeSBnZXRzIDEsIGV0Yy4KKyAgbV9zeW1ib2xUYWJsZS5wdXQoaWRlbnQsIGpz
TnVtYmVyKGlkKSwgMCk7CisgIG1fc3ltYm9sTGlzdC5hcHBlbmQgKFN5bWJvbChpZGVudCwgZmxh
Z3MsIGZ1bmNEZWNsKSk7CisgIHJldHVybiBpZDsKK30KKworaW50IEZ1bmN0aW9uQm9keU5vZGU6
Omxvb2t1cFN5bWJvbElEKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBjb25zdAoreworICBKU1Zh
bHVlKiB2YWwgPSBtX3N5bWJvbFRhYmxlLmdldChpZGVudCk7CisgIGlmICghdmFsKQorICAgIHJl
dHVybiAtMTsKKyAgcmV0dXJuIChpbnQpIHZhbC0+Z2V0TnVtYmVyKCk7CiB9CiAKIHZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6YWRkUGFyYW0oY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gIG1f
cGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKGlkZW50KSk7CisgIGludCBpZCA9IGFkZFN5bWJv
bChpZGVudCwgRG9udERlbGV0ZSk7CisgIG1fcGFyYW1MaXN0LmFwcGVuZChQYXJhbWV0ZXIoaWRl
bnQsIGlkKSk7CiB9CiAKIFVTdHJpbmcgRnVuY3Rpb25Cb2R5Tm9kZTo6cGFyYW1TdHJpbmcoKSBj
b25zdApAQCAtMjQ1OCw3ICsyODkzLDYgQEAgVVN0cmluZyBGdW5jdGlvbkJvZHlOb2RlOjpwYXJh
bVN0cmluZygpIAogICByZXR1cm4gczsKIH0KIAotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gRnVuY0RlY2xOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiB2b2lkIEZ1bmNEZWNsTm9kZTo6YWRkUGFyYW1zKCkgCkBAIC0yNDcyLDcgKzI5MDYsMjggQEAg
dm9pZCBGdW5jRGVjbE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjUwogewogICBDb250ZXh0ICpj
b250ZXh0ID0gZXhlYy0+Y29udGV4dCgpOwogCisgIC8vIFNlZSB3aGV0aGVyIHdlIGp1c3QgbmVl
ZCB0byBmaWxsIGluIHRoZSBzeW1ib2wgdGFibGUsIAorICAvLyBvciBhY3R1YWxseSBmaWRkbGUg
d2l0aCBvYmplY3RzLgorICBpbnQgZmxhZ3MgPSBJbnRlcm5hbCB8IERvbnREZWxldGU7CisgIHN3
aXRjaCAoZXhlYy0+Y29udGV4dCgpLT5jb2RlVHlwZSgpKSB7CisgICAgY2FzZSBGdW5jdGlvbkNv
ZGU6CisgICAgICAvLyBJbnNpZGUgYSBmdW5jdGlvbiwganVzdCBuZWVkIHN5bWJvbCBpbmZvCisg
ICAgICBleGVjLT5jb250ZXh0KCktPmN1cnJlbnRCb2R5KCktPmFkZEZ1bmNEZWNsKGlkZW50LCBm
bGFncywgdGhpcyk7CisgICAgICByZXR1cm47CisgICAgY2FzZSBFdmFsQ29kZToKKyAgICAgIC8v
IGV2YWwtaW5qZWN0ZWQgc3ltYm9scyBjYW4gYmUgZGVsZXRlZC4uLgorICAgICAgZmxhZ3MgJj0g
fkRvbnREZWxldGU7CisgICAgICAKKyAgICAgIC8vIGZhbGx0aHJvdWdoIGludGVudGlvbmFsCisg
ICAgY2FzZSBHbG9iYWxDb2RlOgorICAgICAgY29udGV4dC0+dmFyaWFibGVPYmplY3QoKS0+cHV0
KGV4ZWMsIGlkZW50LCBtYWtlRnVuY3Rpb25PYmplY3QoZXhlYyksIGZsYWdzKTsKKyAgfTsKK30K
KworRnVuY3Rpb25JbXAqIEZ1bmNEZWNsTm9kZTo6bWFrZUZ1bmN0aW9uT2JqZWN0KEV4ZWNTdGF0
ZSAqZXhlYykKK3sKICAgLy8gVE9ETzogbGV0IHRoaXMgYmUgYW4gb2JqZWN0IHdpdGggW1tDbGFz
c11dIHByb3BlcnR5ICJGdW5jdGlvbiIKKyAgQ29udGV4dCAqY29udGV4dCA9IGV4ZWMtPmNvbnRl
eHQoKTsKICAgRnVuY3Rpb25JbXAgKmZ1bmMgPSBuZXcgRGVjbGFyZWRGdW5jdGlvbkltcChleGVj
LCBpZGVudCwgYm9keS5nZXQoKSwgY29udGV4dC0+c2NvcGVDaGFpbigpKTsKIAogICBKU09iamVj
dCAqcHJvdG8gPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbk9iamVjdCgpLT5j
b25zdHJ1Y3QoZXhlYywgTGlzdDo6ZW1wdHkoKSk7CkBAIC0yNDgxLDE5ICsyOTM2LDcgQEAgdm9p
ZCBGdW5jRGVjbE5vZGU6OnByb2Nlc3NGdW5jRGVjbChFeGVjUwogCiAgIGZ1bmMtPnB1dChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihib2R5LT5udW1QYXJhbXMo
KSksIFJlYWRPbmx5fERvbnREZWxldGV8RG9udEVudW0pOwogCi0gIC8vIEVDTUEgMTAuMi4yCi0g
IGNvbnRleHQtPnZhcmlhYmxlT2JqZWN0KCktPnB1dChleGVjLCBpZGVudCwgZnVuYywgSW50ZXJu
YWwgfCAoY29udGV4dC0+Y29kZVR5cGUoKSA9PSBFdmFsQ29kZSA/IDAgOiBEb250RGVsZXRlKSk7
Ci0KLSAgaWYgKGJvZHkpIHsKLSAgICAvLyBoYWNrIHRoZSBzY29wZSBzbyB0aGF0IHRoZSBmdW5j
dGlvbiBnZXRzIHB1dCBhcyBhIHByb3BlcnR5IG9mIGZ1bmMsIGFuZCBpdCdzIHNjb3BlCi0gICAg
Ly8gY29udGFpbnMgdGhlIGZ1bmMgYXMgd2VsbCBhcyBvdXIgY3VycmVudCBzY29wZQotICAgIEpT
T2JqZWN0ICpvbGRWYXIgPSBjb250ZXh0LT52YXJpYWJsZU9iamVjdCgpOwotICAgIGNvbnRleHQt
PnNldFZhcmlhYmxlT2JqZWN0KGZ1bmMpOwotICAgIGNvbnRleHQtPnB1c2hTY29wZShmdW5jKTsK
LSAgICBib2R5LT5wcm9jZXNzRnVuY0RlY2woZXhlYyk7Ci0gICAgY29udGV4dC0+cG9wU2NvcGUo
KTsKLSAgICBjb250ZXh0LT5zZXRWYXJpYWJsZU9iamVjdChvbGRWYXIpOwotICB9CisgIHJldHVy
biBmdW5jOwogfQogCiBDb21wbGV0aW9uIEZ1bmNEZWNsTm9kZTo6ZXhlY3V0ZShFeGVjU3RhdGUg
KikKQEAgLTI1MDEsNiArMjk0NCwxMiBAQCBDb21wbGV0aW9uIEZ1bmNEZWNsTm9kZTo6ZXhlY3V0
ZShFeGVjU3RhCiAgICAgcmV0dXJuIENvbXBsZXRpb24oTm9ybWFsKTsKIH0KIAordm9pZCBGdW5j
RGVjbE5vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1
cnNlVmlzaXRMaW5rKHZpc2l0b3IsIHBhcmFtKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0
b3IsIGJvZHkpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0V4
cHJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAvLyBFQ01BIDEzCkBA
IC0yNTM3LDYgKzI5ODYsMTIgQEAgSlNWYWx1ZSAqRnVuY0V4cHJOb2RlOjpldmFsdWF0ZShFeGVj
U3RhdAogICByZXR1cm4gZnVuYzsKIH0KIAordm9pZCBGdW5jRXhwck5vZGU6OnJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3Is
IHBhcmFtKTsKKyAgICByZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIGJvZHkpOworfQorCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU291cmNlRWxlbWVudHNOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCiBpbnQgU291cmNlRWxlbWVudHNOb2RlOjpjb3VudCA9IDA7
CkBAIC0yNTY3LDEwICszMDIyLDEzIEBAIENvbXBsZXRpb24gU291cmNlRWxlbWVudHNOb2RlOjpl
eGVjdXRlKEUKICAgCiAgIGZvciAoU291cmNlRWxlbWVudHNOb2RlICpuID0gbmV4dC5nZXQoKTsg
bjsgbiA9IG4tPm5leHQuZ2V0KCkpIHsKICAgICBDb21wbGV0aW9uIGMyID0gbi0+bm9kZS0+ZXhl
Y3V0ZShleGVjKTsKLSAgICBpZiAoYzIuY29tcGxUeXBlKCkgIT0gTm9ybWFsKQotICAgICAgcmV0
dXJuIGMyOwotICAgIC8vIFRoZSBzcGVjIHNheXMgdG8gcmV0dXJuIGMyIGhlcmUsIGJ1dCBpdCBz
ZWVtcyB0aGF0IG1vemlsbGEgcmV0dXJucyBjMSBpZgotICAgIC8vIGMyIGRvZXNuJ3QgaGF2ZSBh
IHZhbHVlCisgICAgaWYgKGMyLmNvbXBsVHlwZSgpICE9IE5vcm1hbCkgeworICAgICAgICBpZiAo
YzIuY29tcGxUeXBlKCkgPT0gVGhyb3cgfHwgYzIuaXNWYWx1ZUNvbXBsZXRpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiBjMjsKKworICAgICAgICByZXR1cm4gQ29tcGxldGlvbihjMi5jb21wbFR5
cGUoKSwgYzEudmFsdWUoKSwgYzIudGFyZ2V0KCkpOworICAgIH0KKwogICAgIGlmIChjMi52YWx1
ZSgpKQogICAgICAgYzEgPSBjMjsKICAgfQpAQCAtMjU3OSwyMyArMzAzNywyOSBAQCBDb21wbGV0
aW9uIFNvdXJjZUVsZW1lbnRzTm9kZTo6ZXhlY3V0ZShFCiB9CiAKIC8vIEVDTUEgMTQKLXZvaWQg
U291cmNlRWxlbWVudHNOb2RlOjpwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlICpleGVjKQotewot
ICBmb3IgKFNvdXJjZUVsZW1lbnRzTm9kZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgp
KQotICAgIG4tPm5vZGUtPnByb2Nlc3NGdW5jRGVjbChleGVjKTsKLX0KLQotdm9pZCBTb3VyY2VF
bGVtZW50c05vZGU6OnByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUgKmV4ZWMpCi17Ci0gIGZvciAo
U291cmNlRWxlbWVudHNOb2RlICpuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0gICAg
bi0+bm9kZS0+cHJvY2Vzc1ZhckRlY2xzKGV4ZWMpOwotfQogCiB2b2lkIFNvdXJjZUVsZW1lbnRz
Tm9kZTo6YnJlYWtDeWNsZSgpIAogeyAKICAgICBuZXh0ID0gMDsKIH0KIAordm9pZCBTb3VyY2VF
bGVtZW50c05vZGU6OnJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikKK3sKKyAgICBy
ZWN1cnNlVmlzaXRMaW5rKHZpc2l0b3IsIG5vZGUpOworICAgIHJlY3Vyc2VWaXNpdExpbmsodmlz
aXRvciwgbmV4dCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9n
cmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIFByb2dyYW1Ob2Rl
OjpQcm9ncmFtTm9kZShTb3VyY2VFbGVtZW50c05vZGUgKnMpIDogRnVuY3Rpb25Cb2R5Tm9kZShz
KQogewogfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXJyb3JOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb21wbGV0aW9uIEVycm9yTm9k
ZTo6ZXhlY3V0ZShFeGVjU3RhdGUgKmV4ZWMpCit7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yQ29t
cGxldGlvbihleGVjLCBTeW50YXhFcnJvciwgbWVzc2FnZS5jc3RyaW5nKCkuY19zdHIoKSk7Cit9
CisKK30gLy9uYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkocmV2aXNpb24gMjUzODUp
CisrKyBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0
LDggQEAKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQogICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3NpbSBP
cmxvdmljaCAobWFrc2ltQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24g
WndhcmljaCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNyw4ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiaW50ZXJu
YWwuaCIKKyNpbmNsdWRlICJyZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvTGlzdFJlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiAj
aWYgUExBVEZPUk0oWDg2KSAmJiBDT01QSUxFUihHQ0MpCiAjZGVmaW5lIEtKU19GQVNUX0NBTEwg
X19hdHRyaWJ1dGVfXygocmVncGFybSgzKSkpCkBAIC00NCwxMiArNDgsMTkgQEAKIAogbmFtZXNw
YWNlIEtKUyB7CiAKKyAgY2xhc3MgU3RhdGljVmFyU3RhdGVtZW50Tm9kZTsKICAgY2xhc3MgUHJv
Z3JhbU5vZGU7CiAgIGNsYXNzIFByb3BlcnR5TmFtZU5vZGU7CiAgIGNsYXNzIFByb3BlcnR5TGlz
dE5vZGU7CiAgIGNsYXNzIFJlZ0V4cDsKICAgY2xhc3MgU291cmNlRWxlbWVudHNOb2RlOwogICBj
bGFzcyBTb3VyY2VTdHJlYW07CisgIGNsYXNzIEZ1bmNEZWNsTm9kZTsKKyAgY2xhc3MgRnVuY3Rp
b25Cb2R5Tm9kZTsKKyAgY2xhc3MgTm9kZTsKKyAgCisgIGNsYXNzIFZhckRlY2xWaXNpdG9yOwor
ICBjbGFzcyBGdW5jRGVjbFZpc2l0b3I7CiAKICAgZW51bSBPcGVyYXRvciB7IE9wRXF1YWwsCiAg
ICAgICAgICAgICAgICAgICBPcEVxRXEsCkBAIC04Miw2ICs5MywyMSBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICAgICAgICAgICAgICAgIE9wSW5zdGFuY2VPZgogICB9OwogCisgIGNsYXNzIE5vZGVW
aXNpdG9yIHsKKyAgcHVibGljOgorICAgIC8qKgorICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUg
b3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIHByb2Nlc3Mgbm9kZXMsIGFuZCAKKyAgICAgcGVy
aGFwcyByZXR1cm4gcG9pbnRlcnMgZm9yIHJlcGxhY2VtZW50IG5vZGVzLiBJZiB0aGUgbm9kZSBz
aG91bGQgbm90IGJlIAorICAgICBjaGFuZ2VkLCByZXR1cm4gMC4gT3RoZXJ3aXNlLCByZXR1cm4g
dGhlIHJlcGxhY2VtZW50IG5vZGUuCisKKyAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24g
YXNrcyB0aGUgbm9kZSB0byB2aXNpdCBpdHMga2lkcywgYW5kIGRvIAorICAgICByZXBsYWNlbWVu
dHMgb24gdGhlbSBpZiBuZWVkZWQsIGJ1dCBkb2VzIG5vdCBjaGFuZ2UgYW55dGhpbmcgZm9yIHRo
aXMgbm9kZQorICAgICovCisgICAgdmlydHVhbCB+Tm9kZVZpc2l0b3IoKTsKKworICAgIHZpcnR1
YWwgTm9kZSogdmlzaXQoTm9kZSogbm9kZSkgS0pTX0ZBU1RfQ0FMTDsKKyAgfTsKKwogICBjbGFz
cyBOb2RlIHsKICAgcHVibGljOgogICAgIE5vZGUoKSBLSlNfRkFTVF9DQUxMOwpAQCAtOTAsNyAr
MTE2LDYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0ZShF
eGVjU3RhdGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgPSAwOwogICAgIFVTdHJpbmcgdG9TdHJpbmco
KSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEwge30KICAgICBpbnQgbGluZU5vKCkg
Y29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2xpbmU7IH0KIAogICAgIHZvaWQgcmVmKCkg
S0pTX0ZBU1RfQ0FMTDsKQEAgLTEwMSwxNyArMTI2LDY3IEBAIG5hbWVzcGFjZSBLSlMgewogICAg
IHZpcnR1YWwgTm9kZSAqbm9kZUluc2lkZUFsbFBhcmVucygpIEtKU19GQVNUX0NBTEw7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWYXJBY2Nlc3NOb2Rl
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0dyb3VwTm9kZSgp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNUcnlOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpbnRyb2R1Y2VzTmV3U3RhdGljU2NvcGUgKCkgY29uc3QgS0pTX0ZBU1RfQ0FM
TCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbnRyb2R1Y2VzTmV3RHluYW1p
Y1Njb3BlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTd2l0Y2hTdGF0ZW1lbnQoKSBjb25zdCBL
SlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmFyU3Rh
dGVtZW50KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgYm9v
bCBpbnRyb2R1Y2VzTmV3U2NvcGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGludHJv
ZHVjZXNOZXdTdGF0aWNTY29wZSgpIHx8IGludHJvZHVjZXNOZXdEeW5hbWljU2NvcGUoKTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFTVF9DQUxMIHsgfQogCi0gIHBy
b3RlY3RlZDoKKyAgICAvLyBQcm9jZXNzZXMgYWxsIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSBkZWNs
YXJhdGlvbnMgYmVsb3cgdGhpcyBub2RlLCAKKyAgICAvLyBhZGRpbmcgdGhlbSB0byBzeW1ib2wg
dGFibGUgb3IgdGhlIGN1cnJlbnQgb2JqZWN0IGRlcGVuZGluZyBvbiB0aGUgCisgICAgLy8gZXhl
Y3V0aW9uIGNvbnRleHQuLgorICAgIHZvaWQgcHJvY2Vzc0RlY2xzKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7CisKKyAgICAvKgorICAgICAgSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9k
IHNob3VsZCBjYWxsIHZpc2l0b3ItPnZpc2l0IG9uIGFsbCB0aGUgCisgICAgICBjaGlsZHJlbiBu
b2RlcywgYW5kIGlmIHRoZXkgcmV0dXJuIHZhbHVlIGlzIG5vbi0wLCB1cGRhdGUgdGhlIGxpbmsg
dG8gdGhlIGNoaWxkLgorICAgICAgVGhlIHJlY3Vyc2VWaXNpdExpbmsgaGVscGVyIHRha2VzIGNh
cmUgb2YgdGhpcworICAgICovCisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlz
aXRvciAqIC8qdmlzaXRvciovKSBLSlNfRkFTVF9DQUxMIHt9CisKKyAgICAvKgorICAgICAgTm9k
ZXMgdGhhdCBjYW4gYmUgb3B0aW1pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIG51bWVyaWMgYmlu
ZGluZyB0byAKKyAgICAgIGxvY2FscyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAg
Ki8KKyAgICB2aXJ0dWFsIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVj
LCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBzdGF0aWMgdm9pZCByZWN1cnNlVmlzaXRMaW5rKE5vZGVWaXNpdG9y
KiB2aXNpdG9yLCBSZWZQdHI8VD4mIGxpbmspCisgICAgeworICAgICAgICBpZiAoIWxpbmspCisg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFQqIG5ld0xpbmsgPSBzdGF0aWNfY2FzdDxUKj4o
dmlzaXRvci0+dmlzaXQobGluay5nZXQoKSkpOworICAgICAgICBpZiAobmV3TGluaykKKyAgICAg
ICAgICBsaW5rID0gbmV3TGluazsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIHN0YXRpYyB2b2lkIHJlY3Vyc2VWaXNpdExpbmsoTm9kZVZpc2l0b3IqIHZpc2l0b3IsIExp
c3RSZWZQdHI8VD4mIGxpbmspCisgICAgeworICAgICAgICBpZiAoIWxpbmspCisgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIFQqIG5ld0xpbmsgPSBzdGF0aWNfY2FzdDxUKj4odmlzaXRvci0+
dmlzaXQobGluay5nZXQoKSkpOworICAgICAgICBpZiAobmV3TGluaykKKyAgICAgICAgICBsaW5r
ID0gbmV3TGluazsKKyAgICB9CisKICAgICBDb21wbGV0aW9uIGNyZWF0ZUVycm9yQ29tcGxldGlv
bihFeGVjU3RhdGUgKiwgRXJyb3JUeXBlLCBjb25zdCBjaGFyICptc2cpIEtKU19GQVNUX0NBTEw7
CiAgICAgQ29tcGxldGlvbiBjcmVhdGVFcnJvckNvbXBsZXRpb24oRXhlY1N0YXRlICosIEVycm9y
VHlwZSwgY29uc3QgY2hhciAqbXNnLCBjb25zdCBJZGVudGlmaWVyICYpIEtKU19GQVNUX0NBTEw7
CiAKKyAgICBOb2RlKiBjcmVhdGVFcnJvck5vZGUoRXJyb3JUeXBlIGUsIGNvbnN0IGNoYXIgKm1z
Zyk7CisgICAgTm9kZSogY3JlYXRlRXJyb3JOb2RlKEVycm9yVHlwZSBlLCBjb25zdCBjaGFyICpt
c2csIGNvbnN0IElkZW50aWZpZXIgJmlkZW50KTsKKwogICAgIEpTVmFsdWUgKnRocm93RXJyb3Io
RXhlY1N0YXRlICosIEVycm9yVHlwZSwgY29uc3QgY2hhciAqbXNnKSBLSlNfRkFTVF9DQUxMOwog
ICAgIEpTVmFsdWUqIHRocm93RXJyb3IoRXhlY1N0YXRlICosIEVycm9yVHlwZSwgY29uc3QgY2hh
ciogbXNnLCBjb25zdCBjaGFyKikgS0pTX0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVlICp0aHJvd0Vy
cm9yKEV4ZWNTdGF0ZSAqLCBFcnJvclR5cGUsIGNvbnN0IGNoYXIgKm1zZywgSlNWYWx1ZSAqLCBO
b2RlICopIEtKU19GQVNUX0NBTEw7CkBAIC0xMjUsMTMgKzIwMCwzMyBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICB2b2lkIGhhbmRsZUV4Y2VwdGlvbihFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwog
ICAgIHZvaWQgaGFuZGxlRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUqKSBLSlNfRkFTVF9D
QUxMOwogCitwcm90ZWN0ZWQ6CisgICAgLyogTm9kZXMgdGhhdCBjYW4gZG8gc2VtYW50aWMgY2hl
Y2tpbmcgc2hvdWxkIG92ZXJyaWRlIHRoaXMsCisgICAgICAgYW5kIHJldHVybiBhbiBhcHByb3By
aWF0ZSBlcnJvciBub2RlIGlmIGFwcHJvcHJpYXRlLiBUaGUgcmVpbXBsZW1lbnRhdGlvbnMKKyAg
ICAgICBzaG91bGQgY2FsbCB0aGUgcGFyZW50IGNsYXNzJ3MgY2hlY2tTZW1hbnRpY3MgbWV0aG9k
IGF0IHBvaW50IHdoZXJlCisgICAgICAgcmVjdXJzaW9uIHNob3VsZCBvY2N1cgorICAgICovCisg
ICAgZnJpZW5kIGNsYXNzIFNlbWFudGljQ2hlY2tlcjsKKyAgICB2aXJ0dWFsIE5vZGUqIGNoZWNr
U2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2VyKSBLSlNfRkFTVF9DQUxM
OworCiAgICAgaW50IG1fbGluZTsKICAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vz
c1ZhckRlY2woRXhlY1N0YXRlKiBzdGF0ZSkgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSogc3RhdGUpIEtKU19GQVNUX0NBTEw7CisgICAg
ZnJpZW5kIGNsYXNzIFZhckRlY2xWaXNpdG9yOworICAgIGZyaWVuZCBjbGFzcyBGdW5jRGVjbFZp
c2l0b3I7CisKICAgICAvLyBkaXNhbGxvdyBhc3NpZ25tZW50CiAgICAgTm9kZSYgb3BlcmF0b3I9
KGNvbnN0IE5vZGUmKSBLSlNfRkFTVF9DQUxMOwogICAgIE5vZGUoY29uc3QgTm9kZSAmb3RoZXIp
IEtKU19GQVNUX0NBTEw7CiAgIH07CiAKKyAgY2xhc3MgTG9jYXRpb25Ob2RlIDogcHVibGljIE5v
ZGUgeworICBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIFJlZmVyZW5jZSBldmFsdWF0
ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIEtKU19GQVNUX0NBTEwgPSAwOworICB9OworCiAg
IGNsYXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKICAgICBTdGF0
ZW1lbnROb2RlKCkgS0pTX0ZBU1RfQ0FMTDsKQEAgLTE0MCwxMCArMjM1LDEyIEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgIGludCBsYXN0TGluZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
bV9sYXN0TGluZTsgfQogICAgIGJvb2wgaGl0U3RhdGVtZW50KEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlICpleGVjKSBL
SlNfRkFTVF9DQUxMID0gMDsKLSAgICB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyICZp
ZCkgS0pTX0ZBU1RfQ0FMTCB7IGxzLnB1c2goaWQpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6Ci0gICAg
TGFiZWxTdGFjayBsczsKKyAgICAvKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGNoZWNrU2VtYW50
aWNzIGFwcGxpZXMgdGhlIGFjY3VtdWxhdGVkIGxhYmVscyB0bworICAgICAgIHRoaXMgc3RhdGVt
ZW50LCBtYW5hZ2VzIHRoZSB0YXJnZXRzIGZvciBsYWJlbGxlc3MgYnJlYWsgYW5kIGNvbnRpbnVl
LAorICAgICAgIGFuZCByZWN1cnNlcy4KKyAgICAqLworICAgIHZpcnR1YWwgTm9kZSogY2hlY2tT
ZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgSlNWYWx1ZSAqZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBqc1VuZGVmaW5lZCgpOyB9CiAgICAgaW50IG1fbGFzdExpbmU7CkBAIC0y
MDAsMTggKzI5NywzOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgfTsKIAotICBjbGFzcyBS
ZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgVmFyQWNjZXNzTm9kZSA6IHB1Ymxp
YyBMb2NhdGlvbk5vZGUgewogICBwdWJsaWM6Ci0gICAgUmVzb2x2ZU5vZGUoY29uc3QgSWRlbnRp
ZmllciAmcykgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KHMpIHsgfQotICAgIEpTVmFsdWUqIGV2YWx1
YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CisgICAgVmFyQWNjZXNzTm9kZShjb25zdCBJ
ZGVudGlmaWVyJiBzKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQocykge30KKyAgICB2aXJ0dWFsIE5v
ZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2Rl
KiBub2RlKSBLSlNfRkFTVF9DQUxMOworCisgICAgdmlydHVhbCBib29sIGlzVmFyQWNjZXNzTm9k
ZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVjU3RhdGUqIGV4ZWMpIEtKU19GQVNU
X0NBTEw7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NB
TEwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29u
c3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWRlbnQ7IH0KKyAgICAv
LyBSZXR1cm5zIHRoZSBJRCBvZiB0aGUgbG9jYWwgdGhpcyBpcyBib3VuZCB0bywgCisgICAgLy8g
b3IgLTEgaWYgbm9uLWxvY2FsCisgICAgaW50IGxvY2FsSUQoRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y0JvZHkpIEtKU19GQVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICBJZGVudGlmaWVyIGlkZW50
OworICB9OwogCisgIGNsYXNzIExvY2FsVmFyQWNjZXNzTm9kZSA6IHB1YmxpYyBWYXJBY2Nlc3NO
b2RlIHsKKyAgcHVibGljOgorICAgIExvY2FsVmFyQWNjZXNzTm9kZShjb25zdCBJZGVudGlmaWVy
JiBzLCB1aW50MzJfdCBpKSBLSlNfRkFTVF9DQUxMIDogVmFyQWNjZXNzTm9kZShzKSwgaW5kZXgo
aSkge30KKyAgICAKKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVuY2UoRXhl
Y1N0YXRlKiBleGVjKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgotICAgIElkZW50aWZpZXIg
aWRlbnQ7CisgICAgdWludDMyX3QgaW5kZXg7CisgIH07CisKKyAgY2xhc3MgTm9uTG9jYWxWYXJB
Y2Nlc3NOb2RlIDogcHVibGljIFZhckFjY2Vzc05vZGUgeworICBwdWJsaWM6CisgICAgTm9uTG9j
YWxWYXJBY2Nlc3NOb2RlKGNvbnN0IElkZW50aWZpZXImIHMpIEtKU19GQVNUX0NBTEwgOiBWYXJB
Y2Nlc3NOb2RlKHMpIHt9CisKKyAgICB2aXJ0dWFsIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVu
Y2UoRXhlY1N0YXRlKiBleGVjKSBLSlNfRkFTVF9DQUxMOwogICB9OwogCiAgIGNsYXNzIEdyb3Vw
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTIyMSw2ICszMzksNyBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICB2aXJ0dWFsIE5vZGUgKm5vZGVJbnNpZGVBbGxQYXJlbnMoKSBLSlNfRkFTVF9DQUxMOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOwogICAgIHZpcnR1YWwgYm9vbCBpc0dyb3VwTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+
IGdyb3VwOwogICB9OwpAQCAtMjM1LDYgKzM1NCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwog
ICAgIFBhc3NSZWZQdHI8RWxlbWVudE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkg
S0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBB
cnJheU5vZGU7CiAgICAgTGlzdFJlZlB0cjxFbGVtZW50Tm9kZT4gbmV4dDsKQEAgLTI1MSw2ICsz
NzEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIDogZWxlbWVudChlbGUtPm5leHQucmVsZWFz
ZSgpKSwgZWxpc2lvbihlbGkpLCBvcHQodHJ1ZSkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShl
bGVtZW50LmdldCgpKTsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVu
dE5vZGU+IGVsZW1lbnQ7CiAgICAgaW50IGVsaXNpb247CkBAIC0yNzYsNiArMzk3LDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKICAgICBmcmllbmQgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9wZXJ0eU5hbWVOb2RlPiBuYW1lOwogICAgIFJl
ZlB0cjxOb2RlPiBhc3NpZ247CkBAIC0yOTMsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CiAgICAgUGFzc1JlZlB0cjxQcm9wZXJ0eUxpc3ROb2RlPiByZWxlYXNlTmV4dCgpIEtKU19G
QVNUX0NBTEwgeyByZXR1cm4gbmV4dC5yZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJl
YWtDeWNsZSgpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChO
b2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgT2JqZWN0TGl0ZXJhbE5vZGU7CiAgICAgUmVmUHRyPFByb3BlcnR5Tm9kZT4gbm9k
ZTsKQEAgLTMwNSwzOCArNDI4LDQxIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIE9iamVjdExpdGVy
YWxOb2RlKFByb3BlcnR5TGlzdE5vZGUgKmwpIEtKU19GQVNUX0NBTEwgOiBsaXN0KGwtPm5leHQu
cmVsZWFzZSgpKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGxpc3QuZ2V0KCkpOyB9CiAgICAg
SlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9D
QUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxQcm9wZXJ0eUxpc3ROb2RlPiBsaXN0OwogICB9
OwogCi0gIGNsYXNzIEJyYWNrZXRBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNz
IEJyYWNrZXRBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTG9jYXRpb25Ob2RlIHsKICAgcHVibGljOgog
ICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUoTm9kZSAqZTEsIE5vZGUgKmUyKSBLSlNfRkFTVF9DQUxM
IDogZXhwcjEoZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOworICAgIFJlZmVyZW5jZSBldmFsdWF0ZVJlZmVyZW5jZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogCi0gICAgdmlydHVhbCBib29sIGlzTG9jYXRp
b24oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNCcmFja2V0QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0
cnVlOyB9CiAgICAgTm9kZSAqYmFzZSgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZXhwcjEuZ2V0
KCk7IH0KICAgICBOb2RlICpzdWJzY3JpcHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGV4cHIy
LmdldCgpOyB9CiAKLSAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5v
ZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0Jy
YWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0K
KyAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4g
ZXhwcjI7CiAgIH07CiAKLSAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIDogcHVibGljIE5vZGUgewor
ICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgTG9jYXRpb25Ob2RlIHsKICAgcHVibGlj
OgogICAgIERvdEFjY2Vzc29yTm9kZShOb2RlICplLCBjb25zdCBJZGVudGlmaWVyICZzKSBLSlNf
RkFTVF9DQUxMIDogZXhwcihlKSwgaWRlbnQocykgeyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUo
RXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICBSZWZlcmVuY2UgZXZhbHVhdGVSZWZlcmVu
Y2UoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c0xvY2F0aW9uKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biB0cnVlOyB9CiAgICAgTm9kZSAqYmFzZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
ZXhwci5nZXQoKTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCBL
SlNfRkFTVF9DQUxMIHsgcmV0dXJuIGlkZW50OyB9CiAKLSAgcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gdHJ1ZTsgfQorICBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAg
ICAgSWRlbnRpZmllciBpZGVudDsKICAgfTsKQEAgLTM1Miw2ICs0NzgsOCBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPEFyZ3VtZW50TGlzdE5vZGU+IHJlbGVhc2VOZXh0
KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKworICAgIHZpcnR1YWwgdm9pZCByZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIEFyZ3VtZW50c05vZGU7CiAgICAgTGlzdFJlZlB0cjxBcmd1bWVu
dExpc3ROb2RlPiBuZXh0OwpAQCAtMzY0LDggKzQ5MiwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICBBcmd1bWVudHNOb2RlKEFyZ3VtZW50TGlzdE5vZGUgKmwpIEtKU19GQVNUX0NBTEwKICAgICAg
IDogbGlzdChsLT5uZXh0LnJlbGVhc2UoKSkgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShsaXN0
LmdldCgpKTsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7Ci0gICAgTGlzdCBldmFsdWF0ZUxpc3QoRXhlY1N0YXRlICpleGVjKSBLSlNfRkFTVF9DQUxM
IHsgcmV0dXJuIGxpc3QgPyBsaXN0LT5ldmFsdWF0ZUxpc3QoZXhlYykgOiBMaXN0KCk7IH0KKyAg
ICBMaXN0IGV2YWx1YXRlTGlzdChFeGVjU3RhdGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgeyByZXR1
cm4gbGlzdCA/IGxpc3QtPmV2YWx1YXRlTGlzdChleGVjKSA6IExpc3Q6OmVtcHR5KCk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3Ip
IEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPEFyZ3VtZW50TGlzdE5vZGU+
IGxpc3Q7CiAgIH07CkBAIC0zNzYsNiArNTA2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgTmV3
RXhwck5vZGUoTm9kZSAqZSwgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIo
ZSksIGFyZ3MoYSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3Ig
KnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4
cHI7CiAgICAgUmVmUHRyPEFyZ3VtZW50c05vZGU+IGFyZ3M7CkBAIC0zODYsMTggKzUxNywyMCBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoTm9kZSAqZSwgQXJn
dW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30KICAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NB
TEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgUmVmUHRyPEFyZ3Vt
ZW50c05vZGU+IGFyZ3M7CiAgIH07CiAKLSAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlZmVyZW5jZU5vZGUgOiBwdWJs
aWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBJ
ZGVudGlmaWVyJiBpLCBBcmd1bWVudHNOb2RlICphKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSks
IGFyZ3MoYSkge30KKyAgICBGdW5jdGlvbkNhbGxSZWZlcmVuY2VOb2RlKExvY2F0aW9uTm9kZSAq
ZSwgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30K
ICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwor
ICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19G
QVNUX0NBTEw7CiAgIHByaXZhdGU6Ci0gICAgSWRlbnRpZmllciBpZGVudDsKKyAgICBSZWZQdHI8
TG9jYXRpb25Ob2RlPiBleHByOwogICAgIFJlZlB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOwogICB9
OwogCkBAIC00MDYsNiArNTM5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgRnVuY3Rpb25DYWxs
QnJhY2tldE5vZGUoTm9kZSAqYiwgTm9kZSAqcywgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1Rf
Q0FMTCA6IGJhc2UoYiksIHN1YnNjcmlwdChzKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lk
IHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJv
dGVjdGVkOgogICAgIFJlZlB0cjxOb2RlPiBiYXNlOwogICAgIFJlZlB0cjxOb2RlPiBzdWJzY3Jp
cHQ7CkBAIC00MTYsNiArNTUwLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgIHB1YmxpYzoKICAgICBG
dW5jdGlvbkNhbGxQYXJlbkJyYWNrZXROb2RlKE5vZGUgKmIsIE5vZGUgKnMsIEFyZ3VtZW50c05v
ZGUgKmEpIEtKU19GQVNUX0NBTEwgOiBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShiLCBzLCBhKSB7
fQogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOworICAgIC8vIEZJWE1FIC0gc2hvdWxkIGhhdmUgcmVjdXJzZSBvciBub3Q/CiAgIH07
CiAKICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTQyMyw2
ICs1NTgsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKE5vZGUg
KmIsIGNvbnN0IElkZW50aWZpZXIgJmksIEFyZ3VtZW50c05vZGUgKmEpIEtKU19GQVNUX0NBTEwg
OiBiYXNlKGIpLCBpZGVudChpKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJvdGVjdGVkOgog
ICAgIFJlZlB0cjxOb2RlPiBiYXNlOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CkBAIC00MzMsMzcg
KzU2OSwxOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgogICAgIEZ1bmN0aW9uQ2FsbFBh
cmVuRG90Tm9kZShOb2RlICpiLCBjb25zdCBJZGVudGlmaWVyICZpLCBBcmd1bWVudHNOb2RlICph
KSBLSlNfRkFTVF9DQUxMIDogRnVuY3Rpb25DYWxsRG90Tm9kZShiLCBpLCBhKSB7fQogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwor
ICAgIC8vIEZJWE1FIC0gc2hvdWxkIGhhdmUgcmVjdXJzZSBvciBub3Q/CiAgIH07CiAKLSAgY2xh
c3MgUG9zdGZpeFJlc29sdmVOb2RlIDogcHVibGljIE5vZGUgeworICBjbGFzcyBQb3N0Zml4Tm9k
ZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIFBvc3RmaXhSZXNvbHZlTm9kZShjb25z
dCBJZGVudGlmaWVyJiBpLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSwg
bV9vcGVyKG8pIHt9CisgICAgUG9zdGZpeE5vZGUoTG9jYXRpb25Ob2RlICpsLCBPcGVyYXRvciBv
KSBLSlNfRkFTVF9DQUxMIDogbV9sb2MobCksIG1fb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAg
SWRlbnRpZmllciBtX2lkZW50OwotICAgIE9wZXJhdG9yIG1fb3BlcjsKLSAgfTsKLQotICBjbGFz
cyBQb3N0Zml4QnJhY2tldE5vZGUgOiBwdWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICBQb3N0
Zml4QnJhY2tldE5vZGUoTm9kZSAqYiwgTm9kZSAqcywgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FM
TCA6IG1fYmFzZShiKSwgbV9zdWJzY3JpcHQocyksIG1fb3BlcihvKSB7fQotICAgIEpTVmFsdWUq
IGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0g
ICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9zdWJzY3JpcHQ7Ci0g
ICAgT3BlcmF0b3IgbV9vcGVyOwotICB9OwotCi0gIGNsYXNzIFBvc3RmaXhEb3ROb2RlIDogcHVi
bGljIE5vZGUgewotICBwdWJsaWM6Ci0gICAgUG9zdGZpeERvdE5vZGUoTm9kZSAqYiwgY29uc3Qg
SWRlbnRpZmllciYgaSwgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiKSwgbV9p
ZGVudChpKSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNl
OwotICAgIElkZW50aWZpZXIgbV9pZGVudDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nl
c3MoRXhlY1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxM
OworICBwcm90ZWN0ZWQ6CisgICAgUmVmUHRyPExvY2F0aW9uTm9kZT4gbV9sb2M7CiAgICAgT3Bl
cmF0b3IgbV9vcGVyOwogICB9OwogCkBAIC00NzcsMzMgKzU5NCwxNCBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBPcGVyYXRvciBtX29wZXI7CiAgIH07CiAKLSAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5v
ZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIERlbGV0ZVJlZmVyZW5jZU5vZGUgOiBwdWJsaWMg
Tm9kZSB7CiAgIHB1YmxpYzoKLSAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVy
JiBpKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSB7fQorICAgIERlbGV0ZVJlZmVyZW5jZU5v
ZGUoTG9jYXRpb25Ob2RlICpsKSBLSlNfRkFTVF9DQUxMIDogbG9jKGwpIHt9CiAgICAgSlNWYWx1
ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1
cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRl
OgotICAgIElkZW50aWZpZXIgbV9pZGVudDsKLSAgfTsKLQotICBjbGFzcyBEZWxldGVCcmFja2V0
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKLSAgcHVibGljOgotICAgIERlbGV0ZUJyYWNrZXROb2RlKE5v
ZGUgKmJhc2UsIE5vZGUgKnN1YnNjcmlwdCkgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiYXNlKSwg
bV9zdWJzY3JpcHQoc3Vic2NyaXB0KSB7fQotICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1f
YmFzZTsKLSAgICBSZWZQdHI8Tm9kZT4gbV9zdWJzY3JpcHQ7Ci0gIH07Ci0KLSAgY2xhc3MgRGVs
ZXRlRG90Tm9kZSA6IHB1YmxpYyBOb2RlIHsKLSAgcHVibGljOgotICAgIERlbGV0ZURvdE5vZGUo
Tm9kZSAqYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaSkgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShi
YXNlKSwgbV9pZGVudChpKSB7fQotICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7Ci0gIHByaXZhdGU6Ci0gICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsK
LSAgICBJZGVudGlmaWVyIG1faWRlbnQ7CisgICAgUmVmUHRyPExvY2F0aW9uTm9kZT4gbG9jOwog
ICB9OwogCiAgIGNsYXNzIERlbGV0ZVZhbHVlTm9kZSA6IHB1YmxpYyBOb2RlIHsKQEAgLTUxMSw2
ICs2MDksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBEZWxldGVWYWx1ZU5vZGUoTm9kZSAqZSkg
S0pTX0ZBU1RfQ0FMTCA6IG1fZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNT
dGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNp
dChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gbV9leHByOwogICB9OwpAQCAtNTIwLDE3ICs2MTksMTkgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgVm9pZE5vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30K
ICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwor
ICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19G
QVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CiAKLSAg
Y2xhc3MgVHlwZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIFR5cGVPZlJl
ZmVyZW5jZU5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAgICBUeXBlT2ZSZXNvbHZl
Tm9kZShjb25zdCBJZGVudGlmaWVyJiBpKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSB7fQor
ICAgIFR5cGVPZlJlZmVyZW5jZU5vZGUoTG9jYXRpb25Ob2RlICpsKSBLSlNfRkFTVF9DQUxMIDog
bG9jKGwpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNf
RkFTVF9DQUxMOwogICBwcml2YXRlOgotICAgIElkZW50aWZpZXIgbV9pZGVudDsKKyAgICBSZWZQ
dHI8TG9jYXRpb25Ob2RlPiBsb2M7CiAgIH07CiAKICAgY2xhc3MgVHlwZU9mVmFsdWVOb2RlIDog
cHVibGljIE5vZGUgewpAQCAtNTM4LDM5ICs2MzksMjAgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
VHlwZU9mVmFsdWVOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBtX2V4cHIoZSkge30KICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNU
X0NBTEw7CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fZXhwcjsKICAgfTsKIAotICBj
bGFzcyBQcmVmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgUHJlZml4Tm9k
ZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIFByZWZpeFJlc29sdmVOb2RlKGNvbnN0
IElkZW50aWZpZXImIGksIE9wZXJhdG9yIG8pIEtKU19GQVNUX0NBTEwgOiBtX2lkZW50KGkpLCBt
X29wZXIobykge30KKyAgICBQcmVmaXhOb2RlKExvY2F0aW9uTm9kZSAqbCwgT3BlcmF0b3Igbykg
S0pTX0ZBU1RfQ0FMTCA6IG1fbG9jKGwpLCBtX29wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFs
dWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICBwcml2YXRlOgotICAgIElk
ZW50aWZpZXIgbV9pZGVudDsKLSAgICBPcGVyYXRvciBtX29wZXI7Ci0gIH07Ci0KLSAgY2xhc3Mg
UHJlZml4QnJhY2tldE5vZGUgOiBwdWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICBQcmVmaXhC
cmFja2V0Tm9kZShOb2RlICpiLCBOb2RlICpzLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDog
bV9iYXNlKGIpLCBtX3N1YnNjcmlwdChzKSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZh
bHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBS
ZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAgIFJlZlB0cjxOb2RlPiBtX3N1YnNjcmlwdDsKLSAgICBP
cGVyYXRvciBtX29wZXI7Ci0gIH07Ci0KLSAgY2xhc3MgUHJlZml4RG90Tm9kZSA6IHB1YmxpYyBO
b2RlIHsKLSAgcHVibGljOgotICAgIFByZWZpeERvdE5vZGUoTm9kZSAqYiwgY29uc3QgSWRlbnRp
ZmllciYgaSwgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFzZShiKSwgbV9pZGVudChp
KSwgbV9vcGVyKG8pIHt9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKLSAgcHJpdmF0ZToKLSAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwotICAg
IElkZW50aWZpZXIgbV9pZGVudDsKKyAgICB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2
aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhl
Y1N0YXRlICpleGVjLCBGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOworICBw
cm90ZWN0ZWQ6CisgICAgUmVmUHRyPExvY2F0aW9uTm9kZT4gbV9sb2M7CiAgICAgT3BlcmF0b3Ig
bV9vcGVyOwogICB9OwogCkBAIC01ODksNiArNjcxLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
VW5hcnlQbHVzTm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgfTsKQEAgLTU5OCw2ICs2
ODEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBOZWdhdGVOb2RlKE5vZGUgKmUpIEtKU19GQVNU
X0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNp
dG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2Rl
PiBleHByOwogICB9OwpAQCAtNjA3LDYgKzY5MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEJp
dHdpc2VOb3ROb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByOwogICB9OwpAQCAtNjE2LDYgKzcw
MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIExvZ2ljYWxOb3ROb2RlKE5vZGUgKmUpIEtKU19G
QVNUX0NBTEwgOiBleHByKGUpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxO
b2RlPiBleHByOwogICB9OwpAQCAtNjI1LDYgKzcxMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAg
IE11bHROb2RlKE5vZGUgKnQxLCBOb2RlICp0MiwgY2hhciBvcCkgS0pTX0ZBU1RfQ0FMTCA6IHRl
cm0xKHQxKSwgdGVybTIodDIpLCBvcGVyKG9wKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8Tm9kZT4gdGVybTE7CiAgICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpAQCAtNjM2LDYg
KzcyMyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEFkZE5vZGUoTm9kZSAqdDEsIE5vZGUgKnQy
LCBjaGFyIG9wKSBLSlNfRkFTVF9DQUxMIDogdGVybTEodDEpLCB0ZXJtMih0MiksIG9wZXIob3Ap
IHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBL
SlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAgICBS
ZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC02NDgsNiArNzM2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgICA6IHRlcm0xKHQxKSwgdGVybTIodDIpLCBvcGVyKG8pIHt9CiAgICAgSlNWYWx1ZSogZXZh
bHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2
YXRlOgogICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAgICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBA
IC02NjAsNiArNzQ5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBleHByMShlMSksIGV4cHIy
KGUyKSwgb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4g
ZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtNjcyLDYgKzc2Miw3IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgOiBleHByMShlMSksIGV4cHIyKGUyKSwgb3BlcihvKSB7fQogICAg
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAg
dmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1Rf
Q0FMTDsKICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5v
ZGU+IGV4cHIyOwpAQCAtNjg0LDYgKzc3NSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgZXhw
cjEoZTEpLCBleHByMihlMiksIG9wZXIobykge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CiAgICAg
UmVmUHRyPE5vZGU+IGV4cHIxOwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTY5OSw2ICs3
OTEsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIGV4cHIxKGUxKSwgZXhwcjIoZTIpLCBvcGVy
KG8pIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9y
KSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAg
ICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC03MTQsMzAgKzgwNywzNCBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICAgIGxvZ2ljYWwobCksIGV4cHIxKGUxKSwgZXhwcjIoZTIpIHt9CiAgICAgSlNWYWx1
ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwog
ICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBsb2dpY2FsOwogICAgIFJlZlB0cjxOb2RlPiBl
eHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CiAgIH07CiAKLSAgY2xhc3MgQXNzaWduUmVz
b2x2ZU5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGNsYXNzIEFzc2lnbk5vZGUgOiBwdWJsaWMgTm9k
ZSB7CiAgIHB1YmxpYzoKLSAgICBBc3NpZ25SZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyICZp
ZGVudCwgT3BlcmF0b3Igb3BlciwgTm9kZSAqcmlnaHQpIEtKU19GQVNUX0NBTEwKLSAgICAgIDog
bV9pZGVudChpZGVudCksIG1fb3BlcihvcGVyKSwgbV9yaWdodChyaWdodCkge30KKyAgICBBc3Np
Z25Ob2RlKExvY2F0aW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcGVyLCBOb2RlICpyaWdodCkgS0pT
X0ZBU1RfQ0FMTCA6CisgICAgICBtX2xvYyhsb2MpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmln
aHQpIHt9CisgICAgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOwogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0g
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKiB2aXNpdG9yKSBLSlNfRkFT
VF9DQUxMOworICAgIE5vZGUqIG9wdGltaXplTG9jYWxBY2Nlc3MoRXhlY1N0YXRlICpleGVjLCBG
dW5jdGlvbkJvZHlOb2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMOwogICBwcm90ZWN0ZWQ6Ci0gICAg
SWRlbnRpZmllciBtX2lkZW50OworICAgIFJlZlB0cjxMb2NhdGlvbk5vZGU+IG1fbG9jOwogICAg
IE9wZXJhdG9yIG1fb3BlcjsKICAgICBSZWZQdHI8Tm9kZT4gbV9yaWdodDsKICAgfTsKIAogICBj
bGFzcyBBc3NpZ25CcmFja2V0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgotICAgIEFz
c2lnbkJyYWNrZXROb2RlKE5vZGUgKmJhc2UsIE5vZGUgKnN1YnNjcmlwdCwgT3BlcmF0b3Igb3Bl
ciwgTm9kZSAqcmlnaHQpIEtKU19GQVNUX0NBTEwKLSAgICAgIDogbV9iYXNlKGJhc2UpLCBtX3N1
YnNjcmlwdChzdWJzY3JpcHQpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CisgICAg
QXNzaWduQnJhY2tldE5vZGUoTm9kZSAqYmFzZSwgTm9kZSAqc3Vic2NyaXB0LCBPcGVyYXRvciBv
cGVyLCBOb2RlICpyaWdodCkgS0pTX0ZBU1RfQ0FMTCA6CisgICAgICBtX2Jhc2UoYmFzZSksIG1f
c3Vic2NyaXB0KHN1YnNjcmlwdCksIG1fb3BlcihvcGVyKSwgbV9yaWdodChyaWdodCkge30KICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNU
X0NBTEw7CiAgIHByb3RlY3RlZDoKICAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwogICAgIFJlZlB0
cjxOb2RlPiBtX3N1YnNjcmlwdDsKQEAgLTc0NywxMCArODQ0LDExIEBAIG5hbWVzcGFjZSBLSlMg
ewogCiAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKLSAg
ICBBc3NpZ25Eb3ROb2RlKE5vZGUgKmJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVy
YXRvciBvcGVyLCBOb2RlICpyaWdodCkgS0pTX0ZBU1RfQ0FMTAotICAgICAgOiBtX2Jhc2UoYmFz
ZSksIG1faWRlbnQoaWRlbnQpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CisgICAg
QXNzaWduRG90Tm9kZShOb2RlICpiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0
b3Igb3BlciwgTm9kZSAqcmlnaHQpIEtKU19GQVNUX0NBTEwgOgorICAgICAgbV9iYXNlKGJhc2Up
LCBtX2lkZW50KGlkZW50KSwgbV9vcGVyKG9wZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmly
dHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FM
TDsKICAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxOb2RlPiBtX2Jhc2U7CiAgICAgSWRlbnRpZmll
ciBtX2lkZW50OwpAQCAtNzU4LDE1ICs4NTYsMTUgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUmVm
UHRyPE5vZGU+IG1fcmlnaHQ7CiAgIH07CiAKLSAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVi
bGljIE5vZGUgewotICBwdWJsaWM6Ci0gICAgQXNzaWduRXJyb3JOb2RlKE5vZGUqIGxlZnQsIE9w
ZXJhdG9yIG9wZXIsIE5vZGUqIHJpZ2h0KSBLSlNfRkFTVF9DQUxMCi0gICAgICA6IG1fbGVmdChs
ZWZ0KSwgbV9vcGVyKG9wZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQorICBjbGFzcyBBc3NpZ25FcnJv
ck5vZGUgOiBwdWJsaWMgTm9kZSB7IAorICBwdWJsaWM6IAorICAgIEFzc2lnbkVycm9yTm9kZShO
b2RlKiBsZWZ0LCBPcGVyYXRvciBvcGVyLCBOb2RlKiByaWdodCkgIEtKU19GQVNUX0NBTEwgOgor
ICAgICAgbV9sZWZ0KGxlZnQpLCBtX29wZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9IAogICAg
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIHBy
b3RlY3RlZDoKLSAgICBSZWZQdHI8Tm9kZT4gbV9sZWZ0OwotICAgIE9wZXJhdG9yIG1fb3BlcjsK
KyAgcHJvdGVjdGVkOiAKKyAgICBSZWZQdHI8Tm9kZT4gbV9sZWZ0OyAKKyAgICBPcGVyYXRvciBt
X29wZXI7IAogICAgIFJlZlB0cjxOb2RlPiBtX3JpZ2h0OwogICB9OwogCkBAIC03NzUsNiArODcz
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQ29tbWFOb2RlKE5vZGUgKmUxLCBOb2RlICplMikg
S0pTX0ZBU1RfQ0FMTCA6IGV4cHIxKGUxKSwgZXhwcjIoZTIpIHt9CiAgICAgSlNWYWx1ZSogZXZh
bHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2
YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBA
IC03ODUsNiArODg0LDkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQXNzaWduRXhwck5vZGUoTm9k
ZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNl
VmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisKKyAgICBOb2RlKiBn
ZXRFeHByKCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBleHByLmdldCgpOyB9CiAgIHByaXZhdGU6
CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC03OTQsOSArODk2LDEyIEBAIG5hbWVz
cGFjZSBLSlMgewogICAgIGVudW0gVHlwZSB7IFZhcmlhYmxlLCBDb25zdGFudCB9OwogICAgIFZh
ckRlY2xOb2RlKGNvbnN0IElkZW50aWZpZXIgJmlkLCBBc3NpZ25FeHByTm9kZSAqaW4sIFR5cGUg
dCkgS0pTX0ZBU1RfQ0FMTDsKICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVW
aXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworCisgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3NWYXJEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgIHByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIFZhclN0YXRlbWVudE5vZGU7CiAgICAgSlNWYWx1ZSogaGFuZGxlU2xvd0Nhc2Uo
RXhlY1N0YXRlKiwgY29uc3QgU2NvcGVDaGFpbiYsIEpTVmFsdWUqKSBLSlNfRkFTVF9DQUxMIEtK
U19OT19JTkxJTkU7CiAgICAgVHlwZSB2YXJUeXBlOwogICAgIElkZW50aWZpZXIgaWRlbnQ7CkBA
IC04MTAsMTAgKzkxNSwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBWYXJEZWNsTGlzdE5vZGUo
VmFyRGVjbExpc3ROb2RlICpsLCBWYXJEZWNsTm9kZSAqdikgS0pTX0ZBU1RfQ0FMTAogICAgICAg
OiBuZXh0KGwtPm5leHQpLCB2YXIodikgeyBsLT5uZXh0ID0gdGhpczsgfQogICAgIEpTVmFsdWUq
IGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NS
ZWZQdHI8VmFyRGVjbExpc3ROb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1
cm4gbmV4dC5yZWxlYXNlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19G
QVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlz
aXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRm9yTm9k
ZTsKICAgICBmcmllbmQgY2xhc3MgVmFyU3RhdGVtZW50Tm9kZTsKQEAgLTgyNCwxOSArOTI5LDM3
IEBAIG5hbWVzcGFjZSBLSlMgewogICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgewogICBwdWJsaWM6CiAgICAgVmFyU3RhdGVtZW50Tm9kZShWYXJEZWNsTGlz
dE5vZGUgKmwpIEtKU19GQVNUX0NBTEwgOiBuZXh0KGwtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNl
cjo6cmVtb3ZlTm9kZUN5Y2xlKG5leHQuZ2V0KCkpOyB9CisgICAgdmlydHVhbCBOb2RlKiBvcHRp
bWl6ZUxvY2FsQWNjZXNzKEV4ZWNTdGF0ZSAqZXhlYywgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSkg
S0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0
KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBp
c1ZhclN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8VmFyRGVjbExpc3ROb2RlPiBuZXh0OwogICB9OwogCisgIC8vIEEgdmVyc2lvbiBvZiBW
YXJTdGF0ZW1lbnROb2RlIG9wdGltaXplZCBmb3IgbG9jYWwgYWNjZXNzIC0tLSBpdCBzdG9yZXMg
dGhlIAorICAvLyBpbmRleCBsb2NhdGlvbnMsIGFuZCBhY2Nlc3NlcyB0aGVtIGRpcmVjdGx5Lgor
ICBjbGFzcyBTdGF0aWNWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewor
ICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CisgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRvciAqdmlzaXRv
cikgS0pTX0ZBU1RfQ0FMTDsKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5pdGlhbGl6ZXIgewor
ICAgICAgaW50IGxvY2FsSUQ7CisgICAgICBSZWZQdHI8Tm9kZT4gaW5pdEV4cHI7CisgICAgfTsK
KyAgICBXVEY6OlZlY3RvcjxJbml0aWFsaXplcj4gaW5pdGlhbGl6ZXJzOworICAgIFJlZlB0cjxW
YXJTdGF0ZW1lbnROb2RlPiBvcmlnaW5hbFN0YXRlbWVudDsKKyAgICBmcmllbmQgY2xhc3MgVmFy
U3RhdGVtZW50Tm9kZTsKKyAgfTsKKwogICBjbGFzcyBCbG9ja05vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSB7CiAgIHB1YmxpYzoKICAgICBCbG9ja05vZGUoU291cmNlRWxlbWVudHNOb2RlICpz
KSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlz
aXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByb3RlY3RlZDoKICAg
ICBSZWZQdHI8U291cmNlRWxlbWVudHNOb2RlPiBzb3VyY2U7CiAgIH07CkBAIC04NTMsNiArOTc2
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgRXhwclN0YXRlbWVudE5vZGUoTm9kZSAqZSkgS0pT
X0ZBU1RfQ0FMTCA6IGV4cHIoZSkgeyB9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUo
RXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJz
ZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgog
ICAgIFJlZlB0cjxOb2RlPiBleHByOwogICB9OwpAQCAtODYyLDggKzk4Niw4IEBAIG5hbWVzcGFj
ZSBLSlMgewogICAgIElmTm9kZShOb2RlICplLCBTdGF0ZW1lbnROb2RlICpzMSwgU3RhdGVtZW50
Tm9kZSAqczIpIEtKU19GQVNUX0NBTEwKICAgICAgIDogZXhwcihlKSwgc3RhdGVtZW50MShzMSks
IHN0YXRlbWVudDIoczIpIHt9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gc3RhdGVtZW50
MTsKQEAgLTg3NCw4ICs5OTgsOSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgcHVibGljOgogICAgIERv
V2hpbGVOb2RlKFN0YXRlbWVudE5vZGUgKnMsIE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBzdGF0
ZW1lbnQocyksIGV4cHIoZSkge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMo
RXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJz
ZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwg
Ym9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
dHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0ZW1lbnQ7
CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CkBAIC04ODUsOCArMTAxMCw5IEBAIG5hbWVzcGFjZSBL
SlMgewogICBwdWJsaWM6CiAgICAgV2hpbGVOb2RlKE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMp
IEtKU19GQVNUX0NBTEwgOiBleHByKGUpLCBzdGF0ZW1lbnQocykge30KICAgICB2aXJ0dWFsIENv
bXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwg
dm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFT
VF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVudCgpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2Rl
PiBleHByOwogICAgIFJlZlB0cjxTdGF0ZW1lbnROb2RlPiBzdGF0ZW1lbnQ7CkBAIC04OTksOCAr
MTAyNSw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEZvck5vZGUoVmFyRGVjbExpc3ROb2RlICpl
MSwgTm9kZSAqZTIsIE5vZGUgKmUzLCBTdGF0ZW1lbnROb2RlICpzKSBLSlNfRkFTVF9DQUxMIDoK
ICAgICAgIGV4cHIxKGUxLT5uZXh0LnJlbGVhc2UoKSksIGV4cHIyKGUyKSwgZXhwcjMoZTMpLCBz
dGF0ZW1lbnQocykgeyBQYXJzZXI6OnJlbW92ZU5vZGVDeWNsZShleHByMS5nZXQoKSk7IH0KICAg
ICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwot
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNp
dG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgYm9vbCBpc0l0ZXJhdGlvblN0YXRlbWVu
dCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAg
IFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC05MTMsOCAr
MTA0MCw5IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEZvckluTm9kZShOb2RlICpsLCBOb2RlICpl
LCBTdGF0ZW1lbnROb2RlICpzKSBLSlNfRkFTVF9DQUxMOwogICAgIEZvckluTm9kZShjb25zdCBJ
ZGVudGlmaWVyICZpLCBBc3NpZ25FeHByTm9kZSAqaW4sIE5vZGUgKmUsIFN0YXRlbWVudE5vZGUg
KnMpIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1ZhckRlY2xzKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VW
aXNpdChOb2RlVmlzaXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNJdGVyYXRpb25TdGF0ZW1lbnQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRy
dWU7IH0KICAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyIGlkZW50OwogICAgIFJlZlB0cjxBc3Np
Z25FeHByTm9kZT4gaW5pdDsKQEAgLTkyNiwyMiArMTA1NCwyOCBAQCBuYW1lc3BhY2UgS0pTIHsK
IAogICBjbGFzcyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgIHB1Ymxp
YzoKLSAgICBDb250aW51ZU5vZGUoKSBLSlNfRkFTVF9DQUxMIHsgfQotICAgIENvbnRpbnVlTm9k
ZShjb25zdCBJZGVudGlmaWVyICZpKSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSkgeyB9CisgICAg
Q29udGludWVOb2RlKCkgS0pTX0ZBU1RfQ0FMTCA6IHRhcmdldCgwKSB7IH0KKyAgICBDb250aW51
ZU5vZGUoY29uc3QgSWRlbnRpZmllciAmaSkgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KGkpLCB0YXJn
ZXQoMCkgeyB9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tT
ZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBpZGVudDsKKyAgICBjb25zdCBOb2RlKiB0YXJn
ZXQ7CiAgIH07CiAKICAgY2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICBwdWJsaWM6Ci0gICAgQnJlYWtOb2RlKCkgS0pTX0ZBU1RfQ0FMTCB7IH0KLSAgICBCcmVha05v
ZGUoY29uc3QgSWRlbnRpZmllciAmaSkgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KGkpIHsgfQorICAg
IEJyZWFrTm9kZSgpIEtKU19GQVNUX0NBTEwgOiB0YXJnZXQoMCkgeyB9CisgICAgQnJlYWtOb2Rl
KGNvbnN0IElkZW50aWZpZXIgJmkpIEtKU19GQVNUX0NBTEwgOiBpZGVudChpKSwgdGFyZ2V0KDAp
IHsgfQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIE5vZGUqIGNoZWNrU2VtYW50
aWNzKFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2VyKSBLSlNfRkFTVF9DQUxMOwogICBw
cml2YXRlOgogICAgIElkZW50aWZpZXIgaWRlbnQ7CisgICAgY29uc3QgTm9kZSogdGFyZ2V0Owog
ICB9OwogCiAgIGNsYXNzIFJldHVybk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC05
NDksMTYgKzEwODMsMTkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUmV0dXJuTm9kZShOb2RlICp2
KSBLSlNfRkFTVF9DQUxMIDogdmFsdWUodikge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhl
Y3V0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCBy
ZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CiAgIHByaXZh
dGU6CiAgICAgUmVmUHRyPE5vZGU+IHZhbHVlOworICAgIGNvbnN0IE5vZGUqIHRhcmdldDsKICAg
fTsKIAogICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgcHVibGlj
OgogICAgIFdpdGhOb2RlKE5vZGUgKmUsIFN0YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEwg
OiBleHByKGUpLCBzdGF0ZW1lbnQocykge30KICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFy
RGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgYm9vbCBpbnRyb2R1Y2VzTmV3RHluYW1pY1Njb3BlKCkgY29uc3QgS0pTX0ZBU1RfQ0FM
TCB7IHJldHVybiB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAg
ICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKQEAgLTk2OCw4ICsxMTA1LDEwIEBA
IG5hbWVzcGFjZSBLSlMgewogICBwdWJsaWM6CiAgICAgTGFiZWxOb2RlKGNvbnN0IElkZW50aWZp
ZXIgJmwsIFN0YXRlbWVudE5vZGUgKnMpIEtKU19GQVNUX0NBTEwgOiBsYWJlbChsKSwgc3RhdGVt
ZW50KHMpIHsgfQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUq
KSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9k
ZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgIHByb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIE5vZGUqIGNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciogc2VtYW50aWNDaGVja2Vy
KSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbGFiZWw7CiAgICAg
UmVmUHRyPFN0YXRlbWVudE5vZGU+IHN0YXRlbWVudDsKQEAgLTk4MCw2ICsxMTE5LDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgVGhyb3dOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBleHBy
KGUpIHt9CiAgICAgdmlydHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZB
U1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9y
ICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBl
eHByOwogICB9OwpAQCAtOTg5LDggKzExMjksMTEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVHJ5
Tm9kZShTdGF0ZW1lbnROb2RlICpiLCBjb25zdCBJZGVudGlmaWVyICZlLCBTdGF0ZW1lbnROb2Rl
ICpjLCBTdGF0ZW1lbnROb2RlICpmKSBLSlNfRkFTVF9DQUxMCiAgICAgICA6IHRyeUJsb2NrKGIp
LCBleGNlcHRpb25JZGVudChlKSwgY2F0Y2hCbG9jayhjKSwgZmluYWxseUJsb2NrKGYpIHsgfQog
ICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJEZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNf
RkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZp
c2l0b3IpIEtKU19GQVNUX0NBTEw7CisKKyAgICB2b2lkIHJlY3Vyc2VWaXNpdE5vbkNhdGNoKE5v
ZGVWaXNpdG9yICp2aXNpdG9yKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNUcnlOb2RlKCkgIGNvbnN0
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxT
dGF0ZW1lbnROb2RlPiB0cnlCbG9jazsKICAgICBJZGVudGlmaWVyIGV4Y2VwdGlvbklkZW50OwpA
QCAtMTAwNSwxMSArMTE0OCwxMyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQYXJhbWV0ZXJOb2Rl
KFBhcmFtZXRlck5vZGUgKm5leHQsIGNvbnN0IElkZW50aWZpZXIgJmkpIEtKU19GQVNUX0NBTEwK
ICAgICAgIDogaWQoaSksIG5leHQobmV4dC0+bmV4dCkgeyBuZXh0LT5uZXh0ID0gdGhpczsgfQog
ICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgSWRl
bnRpZmllciBpZGVudCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWQ7IH0KLSAgICBQYXJhbWV0
ZXJOb2RlICpuZXh0UGFyYW0oKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQuZ2V0KCk7IH0K
KyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gaWQ7
IH0KKyAgICBQYXJhbWV0ZXJOb2RlICpuZXh0UGFyYW0oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsg
cmV0dXJuIG5leHQuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPFBhcmFtZXRlck5vZGU+
IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKworICAgIHZpcnR1
YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEZ1bmNEZWNsTm9kZTsKICAgICBmcmllbmQg
Y2xhc3MgRnVuY0V4cHJOb2RlOwpAQCAtMTAyNSwyMiArMTE3MCw3OCBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgfTsKIAogICAvLyBpbmhlcml0ZWQgYnkgUHJvZ3JhbU5vZGUKKworICAvKioKKyAgIFRo
aXMgQVNUIG5vZGUgY29ycmVzcG9uZHMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkgaW4gdGhlIEFTVCwg
YnV0IGlzIHVzZWQgdG8gCisgICBrZWVwIHRyYWNrIG9mIG11Y2ggb2YgdGhlIGluZm9ybWF0aW9u
IHJlbGV2YW50IHRvIHRoZSB3aG9sZSBmdW5jdGlvbiwKKyAgIHN1Y2ggYXMgcGFyYW1ldGVyIG5h
bWVzIGFuZCBzeW1ib2wgdGFibGVzLiBUaGlzIGlzIGJlY2F1c2UgdGhlcmUgYXJlIGJvdGggZnVu
Y3Rpb24gCisgICBkZWNsYXJhdGlvbnMgYW5kIGV4cHJlc3Npb25zLCBzbyB0aGVyZSBpcyBubyBu
YXR1cmFsIHNpbmdsZSBwbGFjZSB0byBwdXQgdGhpcyBzdHVmZiAKKyAgIGFib3ZlIHRoZSBib2R5
CisgICovCiAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgQmxvY2tOb2RlIHsKKyAg
cHJpdmF0ZToKKyAgICBzdHJ1Y3QgU3ltYm9sIHsKKyAgICAgIFN5bWJvbChjb25zdCBJZGVudGlm
aWVyJiBfbmFtZSwgaW50IF9hdHRyLCBGdW5jRGVjbE5vZGUqIF9mdW5jRGVjbCkgOiBuYW1lKF9u
YW1lKSwgZnVuY0RlY2woX2Z1bmNEZWNsKSwgYXR0cihfYXR0cikge30KKyAgICAgIFN5bWJvbCgp
IHt9CisgICAgICBJZGVudGlmaWVyICAgIG5hbWU7CisgICAgICBGdW5jRGVjbE5vZGUqIGZ1bmNE
ZWNsOworICAgICAgaW50ICAgICAgICAgICBhdHRyOworICAgIH07CisKKyAgICBzdHJ1Y3QgUGFy
YW1ldGVyIHsKKyAgICAgIFBhcmFtZXRlcigpIHt9CisgICAgICBQYXJhbWV0ZXIoY29uc3QgSWRl
bnRpZmllciAmbiwgaW50IGlkKSA6IG5hbWUobiksIHN5bWJvbElEKGlkKSB7IH0KKyAgICAgIElk
ZW50aWZpZXIgbmFtZTsKKyAgICAgIGludCAgICAgICAgc3ltYm9sSUQ7CisgICAgfTsKICAgcHVi
bGljOgogICAgIEZ1bmN0aW9uQm9keU5vZGUoU291cmNlRWxlbWVudHNOb2RlICopIEtKU19GQVNU
X0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwogICAgIGludCBzb3VyY2VJZCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9z
b3VyY2VJZDsgfQogICAgIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCgpIEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KKyAKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgLy8gU3lt
Ym9sIHRhYmxlIGZ1bmN0aW9ucworICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICBib29sIGJ1aWx0U3lt
Ym9sTGlzdCgpICAgIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9idWlsdFN5bWJvbExp
c3Q7IH0KKyAgICB2b2lkIHNldEJ1aWx0U3ltYm9sTGlzdCgpICAgICAgIEtKU19GQVNUX0NBTEwg
eyBtX2J1aWx0U3ltYm9sTGlzdCA9IHRydWU7IH0KKyAgICBpbnQgIG51bUxvY2FscygpICAgICAg
ICAgIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zeW1ib2xMaXN0LnNpemUoKTsgfQor
ICAgIGludCAgZ2V0TG9jYWxBdHRyKGludCBpZCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biBtX3N5bWJvbExpc3RbaWQtMV0uYXR0cjsgfQorICAgIEZ1bmNEZWNsTm9kZSogZ2V0TG9jYWxG
dW5jRGVjbChpbnQgaWQpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zeW1ib2xMaXN0
W2lkLTFdLmZ1bmNEZWNsOyB9CisgICAgCisgICAgLy9SZXR1cm5zIC0xIGlmIG5vdCBmb3VuZC4u
CisgICAgaW50ICBsb29rdXBTeW1ib2xJRChjb25zdCBJZGVudGlmaWVyICZpZGVudCkgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKIAotICAgIHZvaWQgYWRkUGFyYW0oY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpIEtKU19GQVNUX0NBTEw7Ci0gICAgc2l6ZV90IG51bVBhcmFtcygpIGNvbnN0IEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNpemUoKTsgfQotICAgIElkZW50aWZpZXIgcGFy
YW1OYW1lKHNpemVfdCBwb3MpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzW3Bvc10ubmFtZTsgfQotICAgIFVTdHJpbmcgcGFyYW1TdHJpbmcoKSBjb25zdCBLSlNfRkFT
VF9DQUxMOwotICAgIFZlY3RvcjxQYXJhbWV0ZXI+JiBwYXJhbWV0ZXJzKCkgS0pTX0ZBU1RfQ0FM
TCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgLy8gUGFy
YW1ldGVyIGFycmF5IGZ1bmN0aW9ucworICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICB2b2lkIGFkZFBh
cmFtKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBLSlNfRkFTVF9DQUxMOyAvL0Fsc28gY3JlYXRl
cyB0aGUgc3ltYm9sIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy9wYXJhbWV0ZXIsIGNhbGVkIG9uIGNyZWF0aW5nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhlIGVuY2xvc2luZyBleHByIG9yIGRlY2wK
KworICAgIHZvaWQgYWRkVmFyRGVjbChjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IGF0dHIs
IEV4ZWNTdGF0ZSogZXhlYykgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2b2lkIGFkZEZ1bmNEZWNsKGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgYXR0ciwgRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCkg
S0pTX0ZBU1RfQ0FMTDsKKworICAgIGludCBudW1QYXJhbXMoKSBjb25zdCBLSlNfRkFTVF9DQUxM
IHsgcmV0dXJuIG1fcGFyYW1MaXN0LnNpemUoKTsgfQorICAgIGludCBwYXJhbVN5bWJvbElEKGlu
dCBwb3MpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbUxpc3RbcG9zXS5zeW1i
b2xJRDsgfQorICAgIGNvbnN0IElkZW50aWZpZXImIHBhcmFtTmFtZShpbnQgcG9zKSBjb25zdCBL
SlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1fcGFyYW1MaXN0W3Bvc10ubmFtZTsgfQorICAgIFVTdHJp
bmcgICAgcGFyYW1TdHJpbmcoKSBjb25zdCBLSlNfRkFTVF9DQUxMOyAgIAogICBwcml2YXRlOgog
ICAgIFVTdHJpbmcgbV9zb3VyY2VVUkw7Ci0gICAgaW50IG1fc291cmNlSWQ7Ci0gICAgVmVjdG9y
PFBhcmFtZXRlcj4gbV9wYXJhbWV0ZXJzOworICAgIGludCBtX3NvdXJjZUlkIDogMzE7CisgICAg
Ym9vbCBtX2J1aWx0U3ltYm9sTGlzdCA6IDE7CisKKyAgICBpbnQgYWRkU3ltYm9sKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBpbnQgYXR0ciwgRnVuY0RlY2xOb2RlKiBmdW5jRGVjbCA9IDApIEtK
U19GQVNUX0NBTEw7CisKKyAgICAvLyBOb3RlOiB0aGUgY29udmVudGlvbiBoZXJlIGlzIHRoYXQg
dGhlIHBvc2l0aW9uIDAKKyAgICAvLyBpcyB0aGUgaW5kZXggMSwgcG9zaXRpb24gMSBpcyB0aGUg
aW5kZXggMiwgZXRjLgorICAgIFdURjo6VmVjdG9yPFN5bWJvbD4gbV9zeW1ib2xMaXN0OworICAg
IAorICAgIC8vIFRoaXMgaXMgdGhlIG1hcCBvZiB0aGUgYWJvdmUsIHRoZSBqc1ZhbHVlcyBhcmUg
dGhlIElEcy4KKyAgICAvLyAjIyMgdWdoLiBMYXp5LWxhenktbGF6eS4gQnV0IHRoaXMgd29ya3Ms
IHRvby4KKyAgICBQcm9wZXJ0eU1hcCBtX3N5bWJvbFRhYmxlOworCisgICAgLy8gVGhlIGxpc3Qg
b2YgcGFyYW1ldGVycywgYW5kIHRoZWlyIGxvY2FsIElEcyBpbiB0aGUKKyAgICBXVEY6OlZlY3Rv
cjxQYXJhbWV0ZXI+IG1fcGFyYW1MaXN0OwogICB9OwogCiAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6
IHB1YmxpYyBOb2RlIHsKQEAgLTEwNDksNiArMTI1MCwxMCBAQCBuYW1lc3BhY2UgS0pTIHsKICAg
ICAgIDogaWRlbnQoaSksIHBhcmFtKHAgPyBwLT5uZXh0LnJlbGVhc2UoKSA6IDApLCBib2R5KGIp
IHsgaWYgKHApIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUocGFyYW0uZ2V0KCkpOyB9IGFkZFBh
cmFtcygpOyB9CiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25z
dCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0
b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGludHJvZHVjZXNO
ZXdTdGF0aWNTY29wZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICBw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCBOb2RlKiBjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNr
ZXIqIHNlbWFudGljQ2hlY2tlcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICB2b2lk
IGFkZFBhcmFtcygpIEtKU19GQVNUX0NBTEw7CiAgICAgLy8gVXNlZCBmb3Igc3RyZWFtVG8KQEAg
LTEwNjUsOCArMTI3MCwxNCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBGdW5jRGVjbE5vZGUoY29u
c3QgSWRlbnRpZmllciAmaSwgUGFyYW1ldGVyTm9kZSAqcCwgRnVuY3Rpb25Cb2R5Tm9kZSAqYikg
S0pTX0ZBU1RfQ0FMTAogICAgICAgOiBpZGVudChpKSwgcGFyYW0ocC0+bmV4dC5yZWxlYXNlKCkp
LCBib2R5KGIpIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUocGFyYW0uZ2V0KCkpOyBhZGRQYXJh
bXMoKTsgfQogICAgIHZpcnR1YWwgQ29tcGxldGlvbiBleGVjdXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZp
c2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBib29sIGludHJvZHVj
ZXNOZXdTdGF0aWNTY29wZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQor
CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOworICAgIEZ1bmN0aW9uSW1wKiBtYWtlRnVuY3Rpb25PYmplY3QoRXhlY1N0YXRlKikgS0pT
X0ZBU1RfQ0FMTDsKKyAgcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTm9kZSogY2hlY2tTZW1hbnRp
Y3MoU2VtYW50aWNDaGVja2VyKiBzZW1hbnRpY0NoZWNrZXIpIEtKU19GQVNUX0NBTEw7CiAgIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGRQYXJhbXMoKSBLSlNfRkFTVF9DQUxMOwogICAgIElkZW50aWZp
ZXIgaWRlbnQ7CkBAIC0xMDgzLDExICsxMjk0LDEwIEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFNv
dXJjZUVsZW1lbnRzTm9kZShTb3VyY2VFbGVtZW50c05vZGUgKnMxLCBTdGF0ZW1lbnROb2RlICpz
MikgS0pTX0ZBU1RfQ0FMTDsKICAgICAKICAgICBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKLSAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRl
KikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNzUmVmUHRyPFNvdXJjZUVsZW1lbnRzTm9k
ZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQucmVsZWFzZSgpOyB9
CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgdm9pZCByZWN1cnNlVmlzaXQoTm9kZVZpc2l0b3IgKnZpc2l0b3IpIEtKU19GQVNUX0NBTEw7
CiAgIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrTm9kZTsKICAgICBmcmllbmQgY2xh
c3MgQ2FzZUNsYXVzZU5vZGU7CkBAIC0xMTAyLDkgKzEzMTIsOCBAQCBuYW1lc3BhY2UgS0pTIHsK
ICAgICAgIDogZXhwcihlKSwgc291cmNlKHMtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNlcjo6cmVt
b3ZlTm9kZUN5Y2xlKHNvdXJjZS5nZXQoKSk7IH0KICAgICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICBDb21wbGV0aW9uIGV2YWxTdGF0ZW1lbnRz
KEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgICB2b2lkIHByb2Nlc3NGdW5jRGVjbChF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwotICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NWYXJE
ZWNscyhFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0dWFsIHZv
aWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxMOwogICBw
cml2YXRlOgogICAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgICBSZWZQdHI8U291cmNlRWxl
bWVudHNOb2RlPiBzb3VyY2U7CkBAIC0xMTE5LDExICsxMzI4LDEwIEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICAgIENhc2VDbGF1c2VOb2RlICpnZXRDbGF1c2UoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0
dXJuIGNsYXVzZS5nZXQoKTsgfQogICAgICAgQ2xhdXNlTGlzdE5vZGUgKmdldE5leHQoKSBjb25z
dCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQuZ2V0KCk7IH0KLSAgICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgIHZvaWQg
cHJvY2Vzc0Z1bmNEZWNsKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAg
IFBhc3NSZWZQdHI8Q2xhdXNlTGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUo
KSBLSlNfRkFTVF9DQUxMOworICAgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlz
aXRvciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKICAgcHJpdmF0ZToKICAgICAgIGZyaWVuZCBj
bGFzcyBDYXNlQmxvY2tOb2RlOwogICAgICAgUmVmUHRyPENhc2VDbGF1c2VOb2RlPiBjbGF1c2U7
CkBAIC0xMTM1LDkgKzEzNDMsOCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIENhc2VCbG9ja05v
ZGUoQ2xhdXNlTGlzdE5vZGUgKmwxLCBDYXNlQ2xhdXNlTm9kZSAqZCwgQ2xhdXNlTGlzdE5vZGUg
KmwyKSBLSlNfRkFTVF9DQUxMOwogICAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikg
S0pTX0ZBU1RfQ0FMTDsKICAgICAgIENvbXBsZXRpb24gZXZhbEJsb2NrKEV4ZWNTdGF0ZSAqZXhl
YywgSlNWYWx1ZSAqaW5wdXQpIEtKU19GQVNUX0NBTEw7Ci0gICAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2Vzc1ZhckRlY2xzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7Ci0gICAgICB2b2lkIHByb2Nl
c3NGdW5jRGVjbChFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0
dWFsIHZvaWQgcmVjdXJzZVZpc2l0KE5vZGVWaXNpdG9yICp2aXNpdG9yKSBLSlNfRkFTVF9DQUxM
OwogICBwcml2YXRlOgogICAgICAgUmVmUHRyPENsYXVzZUxpc3ROb2RlPiBsaXN0MTsKICAgICAg
IFJlZlB0cjxDYXNlQ2xhdXNlTm9kZT4gZGVmOwpAQCAtMTE0OCw5ICsxMzU1LDkgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgIHB1YmxpYzoKICAgICAgIFN3aXRjaE5vZGUoTm9kZSAqZSwgQ2FzZUJsb2Nr
Tm9kZSAqYikgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGJsb2NrKGIpIHsgfQogICAgICAgdmly
dHVhbCBDb21wbGV0aW9uIGV4ZWN1dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKLSAgICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzVmFyRGVjbHMoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
LSAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRnVuY0RlY2woRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTDsKICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgICAgdmlydHVhbCB2b2lkIHJlY3Vyc2VWaXNpdChOb2RlVmlzaXRv
ciAqdmlzaXRvcikgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgIHZpcnR1YWwgYm9vbCBpc1N3aXRjaFN0
YXRlbWVudCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICBwcml2YXRl
OgogICAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgICAgICBSZWZQdHI8Q2FzZUJsb2NrTm9kZT4g
YmxvY2s7CkBAIC0xMTYxLDYgKzEzNjgsMjYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgUHJvZ3Jh
bU5vZGUoU291cmNlRWxlbWVudHNOb2RlICpzKSBLSlNfRkFTVF9DQUxMOwogICB9OwogCisgIC8q
KgorICAgVGhpcyBub2RlIHJlcHJlc2VudHMgc3RhdGljYWxseSBkZXRlY3RhYmxlIGVycm9ycyB0
aGF0IG11c3QgYmUgcmVwb3J0ZWQKKyAgIGF0IHJ1bnRpbWUuIFRoZSBzZW1hbnRpYyBjaGVja2Vy
IHNwbGljZXMgaXQgaW4gYWJvdmUgdGhlIG9yaWdpbmFsIG5vZGUKKyAgIGluIHRoZSBwcm9ncmFt
LCBhbmQgaXQgZG9lcyB0aGUgZXJyb3IgcmVwb3J0aW5nOyB0aGUgY2hpbGQgbm9kZSBpcworICAg
dXNlZCBmb3IgdGV4dCBzZXJpYWxpemF0aW9uLgorCisgICBOb3RlOiB3ZSBkbyBub3QgdmlzaXQg
a2lkcyBvZiB0aGlzIG5vZGUgaW4gdGhlIHZpc2l0b3IgaW50ZXJmYWNlLAorICAgc2luY2UgdGhl
eSBkbyBub3QgcnVuLCBhbnl3YXkKKyAgKi8KKyAgY2xhc3MgRXJyb3JOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgeworICBwdWJsaWM6CisgICAgRXJyb3JOb2RlKE5vZGUqIGssIEVycm9yVHlw
ZSBlLCBjb25zdCBVU3RyaW5nJiBtKSBLSlNfRkFTVF9DQUxMIDoKKyAgICAgICAga2lkKGspLCBl
cnJvclR5cGUoZSksIG1lc3NhZ2UobSkge30KKyAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICBwcml2YXRlOgorICAgIFJlZlB0
cjxOb2RlPiBraWQ7CisgICAgRXJyb3JUeXBlICAgIGVycm9yVHlwZTsKKyAgICBVU3RyaW5nICAg
ICAgbWVzc2FnZTsKKyAgfTsKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpJbmRleDogSmF2YVNj
cmlwdENvcmUva2pzL29iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pz
L29iamVjdC5jcHAJKHJldmlzaW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL29iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw5ICsxNDksOCBAQCBjb25zdCBDbGFzc0luZm8g
KkpTT2JqZWN0OjpjbGFzc0luZm8oKSBjCiBVU3RyaW5nIEpTT2JqZWN0OjpjbGFzc05hbWUoKSBj
b25zdAogewogICBjb25zdCBDbGFzc0luZm8gKmNpID0gY2xhc3NJbmZvKCk7Ci0gIGlmICggY2kg
KQotICAgIHJldHVybiBjaS0+Y2xhc3NOYW1lOwotICByZXR1cm4gIk9iamVjdCI7CisKKyAgcmV0
dXJuIGNpID8gY2ktPmNsYXNzTmFtZSA6ICJPYmplY3QiOwogfQogCiBKU1ZhbHVlICpKU09iamVj
dDo6Z2V0KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lKSBj
b25zdApAQCAtMzU5LDIxICszNTgsMjEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSAq
dHJ5R2V0QW5kQwogLy8gRUNNQSA4LjYuMi42CiBKU1ZhbHVlKiBKU09iamVjdDo6ZGVmYXVsdFZh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNUeXBlIGhpbnQpIGNvbnN0CiB7Ci0gIElkZW50aWZpZXIg
Zmlyc3RQcm9wZXJ0eU5hbWU7Ci0gIElkZW50aWZpZXIgc2Vjb25kUHJvcGVydHlOYW1lOworICBj
b25zdCBJZGVudGlmaWVyKiBmaXJzdFByb3BlcnR5TmFtZTsKKyAgY29uc3QgSWRlbnRpZmllciog
c2Vjb25kUHJvcGVydHlOYW1lOwogICAvKiBQcmVmZXIgU3RyaW5nIGZvciBEYXRlIG9iamVjdHMg
Ki8KICAgaWYgKChoaW50ID09IFN0cmluZ1R5cGUpIHx8IChoaW50ICE9IFN0cmluZ1R5cGUpICYm
IChoaW50ICE9IE51bWJlclR5cGUpICYmIChfcHJvdG8gPT0gZXhlYy0+bGV4aWNhbEludGVycHJl
dGVyKCktPmJ1aWx0aW5EYXRlUHJvdG90eXBlKCkpKSB7Ci0gICAgZmlyc3RQcm9wZXJ0eU5hbWUg
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmc7Ci0gICAgc2Vjb25kUHJvcGVydHlOYW1l
ID0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnZhbHVlT2Y7CisgICAgZmlyc3RQcm9wZXJ0eU5hbWUg
PSAmZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nOworICAgIHNlY29uZFByb3BlcnR5TmFt
ZSA9ICZleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZjsKICAgfSBlbHNlIHsKLSAgICBmaXJz
dFByb3BlcnR5TmFtZSA9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mOwotICAgIHNlY29u
ZFByb3BlcnR5TmFtZSA9IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZzsKKyAgICBmaXJz
dFByb3BlcnR5TmFtZSA9ICZleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZjsKKyAgICBzZWNv
bmRQcm9wZXJ0eU5hbWUgPSAmZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nOwogICB9CiAK
ICAgSlNWYWx1ZSAqdjsKLSAgaWYgKCh2ID0gdHJ5R2V0QW5kQ2FsbFByb3BlcnR5KGV4ZWMsIHRo
aXMsIGZpcnN0UHJvcGVydHlOYW1lKSkpCisgIGlmICgodiA9IHRyeUdldEFuZENhbGxQcm9wZXJ0
eShleGVjLCB0aGlzLCAqZmlyc3RQcm9wZXJ0eU5hbWUpKSkKICAgICByZXR1cm4gdjsKLSAgaWYg
KCh2ID0gdHJ5R2V0QW5kQ2FsbFByb3BlcnR5KGV4ZWMsIHRoaXMsIHNlY29uZFByb3BlcnR5TmFt
ZSkpKQorICBpZiAoKHYgPSB0cnlHZXRBbmRDYWxsUHJvcGVydHkoZXhlYywgdGhpcywgKnNlY29u
ZFByb3BlcnR5TmFtZSkpKQogICAgIHJldHVybiB2OwogCiAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKQEAgLTU5MCwyOCArNTg5LDI5IEBAIGNvbnN0IGNoYXIgKiBjb25zdCAqIGNvbnN0IEVy
cm9yOjplcnJvck4KIEpTT2JqZWN0ICpFcnJvcjo6Y3JlYXRlKEV4ZWNTdGF0ZSAqZXhlYywgRXJy
b3JUeXBlIGVycnR5cGUsIGNvbnN0IFVTdHJpbmcgJm1lc3NhZ2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGxpbmVubywgaW50IHNvdXJjZUlkLCBjb25zdCBVU3RyaW5nICZzb3VyY2VV
UkwpCiB7CisgIEludGVycHJldGVyKiBpbnRlcnAgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIo
KTsKICAgSlNPYmplY3QgKmNvbnM7CiAgIHN3aXRjaCAoZXJydHlwZSkgewogICBjYXNlIEV2YWxF
cnJvcjoKLSAgICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5FdmFs
RXJyb3IoKTsKKyAgICBjb25zID0gaW50ZXJwLT5idWlsdGluRXZhbEVycm9yKCk7CiAgICAgYnJl
YWs7CiAgIGNhc2UgUmFuZ2VFcnJvcjoKLSAgICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJl
dGVyKCktPmJ1aWx0aW5SYW5nZUVycm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpblJh
bmdlRXJyb3IoKTsKICAgICBicmVhazsKICAgY2FzZSBSZWZlcmVuY2VFcnJvcjoKLSAgICBjb25z
ID0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5SZWZlcmVuY2VFcnJvcigpOwor
ICAgIGNvbnMgPSBpbnRlcnAtPmJ1aWx0aW5SZWZlcmVuY2VFcnJvcigpOwogICAgIGJyZWFrOwog
ICBjYXNlIFN5bnRheEVycm9yOgotICAgIGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIo
KS0+YnVpbHRpblN5bnRheEVycm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpblN5bnRh
eEVycm9yKCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgVHlwZUVycm9yOgotICAgIGNvbnMgPSBleGVj
LT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpblR5cGVFcnJvcigpOworICAgIGNvbnMgPSBp
bnRlcnAtPmJ1aWx0aW5UeXBlRXJyb3IoKTsKICAgICBicmVhazsKICAgY2FzZSBVUklFcnJvcjoK
LSAgICBjb25zID0gZXhlYy0+bGV4aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5VUklFcnJvcigp
OworICAgIGNvbnMgPSBpbnRlcnAtPmJ1aWx0aW5VUklFcnJvcigpOwogICAgIGJyZWFrOwogICBk
ZWZhdWx0OgotICAgIGNvbnMgPSBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbkVy
cm9yKCk7CisgICAgY29ucyA9IGludGVycC0+YnVpbHRpbkVycm9yKCk7CiAgICAgYnJlYWs7CiAg
IH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL29iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9vYmplY3QuaAkocmV2aXNpb24gMjUzODUpCisrKyBKYXZhU2NyaXB0
Q29yZS9ranMvb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDI0ICs4MCwyOSBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgcHVibGljOgogICAgIEpTVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
R2V0dGVyU2V0dGVyVHlwZTsgfQogICAgICAgCi0gICAgR2V0dGVyU2V0dGVySW1wKCkgOiBnZXR0
ZXIoMCksIHNldHRlcigwKSB7IH0KKyAgICBHZXR0ZXJTZXR0ZXJJbXAoKSA6IGdldHRlcigwKSwg
c2V0dGVyKDApLCBtX2xvY2FsSW5qZWN0ZWQoZmFsc2UpIHsgfQogICAgICAgCiAgICAgdmlydHVh
bCBKU1ZhbHVlICp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIEpTVHlwZSBwcmVmZXJyZWQg
PSBVbnNwZWNpZmllZFR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCB0b0Jvb2xlYW4oRXhl
Y1N0YXRlICpleGVjKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSB0b051bWJlcihFeGVjU3Rh
dGUgKmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwgVVN0cmluZyB0b1N0cmluZyhFeGVjU3RhdGUg
KmV4ZWMpIGNvbnN0OwogICAgIHZpcnR1YWwgSlNPYmplY3QgKnRvT2JqZWN0KEV4ZWNTdGF0ZSAq
ZXhlYykgY29uc3Q7Ci0gICAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAgICAgICAK
ICAgICBKU09iamVjdCAqZ2V0R2V0dGVyKCkgeyByZXR1cm4gZ2V0dGVyOyB9CiAgICAgdm9pZCBz
ZXRHZXR0ZXIoSlNPYmplY3QgKmcpIHsgZ2V0dGVyID0gZzsgfQogICAgIEpTT2JqZWN0ICpnZXRT
ZXR0ZXIoKSB7IHJldHVybiBzZXR0ZXI7IH0KICAgICB2b2lkIHNldFNldHRlcihKU09iamVjdCAq
cykgeyBzZXR0ZXIgPSBzOyB9Ci0gICAgICAKKworICAgIGJvb2wgaXNMb2NhbEluamVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9sb2NhbEluamVjdGVkOyB9CisgICAgdm9pZCBzZXRMb2NhbEluamVj
dGVkKCkgeyBtX2xvY2FsSW5qZWN0ZWQgPSB0cnVlOyB9CiAgIHByaXZhdGU6CiAgICAgSlNPYmpl
Y3QgKmdldHRlcjsKLSAgICBKU09iamVjdCAqc2V0dGVyOyAgCisgICAgSlNPYmplY3QgKnNldHRl
cjsgCisKKyAgICBib29sIG1fbG9jYWxJbmplY3RlZCA6IDE7IC8vIFVzZWQgd2hlbiB0aGlzIG9i
amVjdCBpcyB0aGUgYWN0aXZlIHNjb3BlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdG8gZGVub3RlIGR5bmFtaWMgYWRkaXRpb24gb2YgbG9jYWwgdmFyaWFibGVzCiAgIH07CiAg
IAogICBjbGFzcyBKU09iamVjdCA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNDMyLDcgKzQzNyw4IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgIEpTVmFsdWUgKmdldERpcmVjdChjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIF9wcm9wLmdldChwcm9wZXJ0
eU5hbWUpOyB9CiAgICAgSlNWYWx1ZSAqKmdldERpcmVjdExvY2F0aW9uKGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSkKLSAgICAgICAgeyByZXR1cm4gX3Byb3AuZ2V0TG9jYXRpb24ocHJv
cGVydHlOYW1lKTsgfQorICAgICAgICB7IGJvb2wgZHVtbXk7IHJldHVybiBfcHJvcC5nZXRMb2Nh
dGlvbihwcm9wZXJ0eU5hbWUsIGR1bW15KTsgfQorCiAgICAgdm9pZCBwdXREaXJlY3QoY29uc3Qg
SWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlICp2YWx1ZSwgaW50IGF0dHIgPSAwKTsK
ICAgICB2b2lkIHB1dERpcmVjdChjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUsIGludCB2
YWx1ZSwgaW50IGF0dHIgPSAwKTsKIApAQCAtNDU0LDcgKzQ2MCwxMCBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICB2b2lkIHNhdmVQcm9wZXJ0aWVzKFNhdmVkUHJvcGVydGllcyAmcCkgY29uc3QgeyBf
cHJvcC5zYXZlKHApOyB9CiAgICAgdm9pZCByZXN0b3JlUHJvcGVydGllcyhjb25zdCBTYXZlZFBy
b3BlcnRpZXMgJnApIHsgX3Byb3AucmVzdG9yZShwKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlz
QWN0aXZhdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBib29sIGlzTG9jYWxJbmplY3Rl
ZCgpIGNvbnN0IHsgcmV0dXJuIF9wcm9wLmlzTG9jYWxJbmplY3RlZCgpOyB9CisgICAgdm9pZCBz
ZXRMb2NhbEluamVjdGVkKCkgeyBfcHJvcC5zZXRMb2NhbEluamVjdGVkKCk7IH0KICAgcHJvdGVj
dGVkOgogICAgIFByb3BlcnR5TWFwIF9wcm9wOwogICBwcml2YXRlOgpAQCAtNTUwLDYgKzU1OSw3
IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmlzT2JqZWN0KGNvbnN0IENsYXMKIGlubGluZSBib29s
IEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlICpleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU09iamVjdCAq
b2JqZWN0ID0gdGhpczsKKyAgICBzbG90LnNldFBvdGVudGlhbGx5V3JpdGVhYmxlKCk7CiAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKG9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGV4
ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU1
OCw2ICs1NjgsOCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4CiAg
ICAgICAgIGlmICghcHJvdG8tPmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICAgICAgc2xvdC5zZXRSZWFkT25seSgpOworCiAgICAgICAgIG9iamVjdCA9IHN0YXRp
Y19jYXN0PEpTT2JqZWN0ICo+KHByb3RvKTsKICAgICB9CiB9CkBAIC01NjUsMjYgKzU3NywyNSBA
QCBpbmxpbmUgYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTbG90KEV4CiAvLyBJdCBtYXkgc2Vl
bSBjcmF6eSB0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGlzIGxhcmdlLCBlc3BlY2lhbGx5IGEgdmly
dHVhbCBmdW5jdGlvbiwKIC8vIGJ1dCBpdCBtYWtlcyBhIGJpZyBkaWZmZXJlbmNlIHRvIHByb3Bl
cnR5IGxvb2t1cCB0aGF0IGRlcml2ZWQgY2xhc3NlcyBjYW4gaW5saW5lIHRoZWlyCiAvLyBiYXNl
IGNsYXNzIGNhbGwgdG8gdGhpcy4KLUFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6Z2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgIGlmIChKU1ZhbHVlICoqbG9jYXRp
b24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChfcHJv
cC5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgbG9jYXRpb25bMF0tPnR5cGUoKSA9PSBH
ZXR0ZXJTZXR0ZXJUeXBlKQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90
LCBsb2NhdGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90
KHRoaXMsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90KHRoaXMsIGxv
Y2F0aW9uLCBQcm9wZXJ0eVNsb3Q6OkZvcmJpZERpcmVjdFdyaXRlKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCiAgICAgLy8gbm9uLXN0YW5kYXJkIE5ldHNjYXBlIGV4dGVuc2lvbgog
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQ
cm90bykgewotICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCAmX3Byb3RvKTsKKyAgICAg
ICAgc2xvdC5zZXRWYWx1ZVNsb3QodGhpcywgJl9wcm90bywgUHJvcGVydHlTbG90OjpQZXJtaXRE
aXJlY3RXcml0ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotCiAvLyBGSVhNRTogUHV0IHRoaXMgZnVuY3Rpb24gaW4gYSBzZXBhcmF0ZSBm
aWxlIG5hbWVkIHNvbWV0aGluZyBsaWtlIHNjb3BlX2NoYWluX21hcmsuaCAtLSBjYW4ndCBwdXQg
aXQgaW4gc2NvcGVfY2hhaW4uaCBzaW5jZSBpdCBkZXBlbmRzIG9uIEpTT2JqZWN0LgogCiBpbmxp
bmUgdm9pZCBTY29wZUNoYWluOjptYXJrKCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9wcm9w
ZXJ0eV9tYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9t
YXAuY3BwCShyZXZpc2lvbiAyNTM4NSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9t
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgSlNWYWx1ZSAqUHJvcGVy
dHlNYXA6OmdldChjb25zdCBJZGVudGlmaQogICAgIHJldHVybiAwOwogfQogCi1KU1ZhbHVlICoq
UHJvcGVydHlNYXA6OmdldExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUpCitKU1ZhbHVl
ICoqUHJvcGVydHlNYXA6OmdldExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUsIGJvb2wm
IHJlYWRPbmx5KQogewogICAgIGFzc2VydCghbmFtZS5pc051bGwoKSk7CiAgICAgCkBAIC0yNDQs
OCArMjQ0LDEwIEBAIEpTVmFsdWUgKipQcm9wZXJ0eU1hcDo6Z2V0TG9jYXRpb24oY29uc3QKICAg
ICBpZiAoIW1fdXNpbmdUYWJsZSkgewogI2lmIFVTRV9TSU5HTEVfRU5UUlkKICAgICAgICAgVVN0
cmluZzo6UmVwICprZXkgPSBtX3NpbmdsZUVudHJ5S2V5OwotICAgICAgICBpZiAocmVwID09IGtl
eSkKKyAgICAgICAgaWYgKHJlcCA9PSBrZXkpIHsKKyAgICAgICAgICAgIHJlYWRPbmx5ID0gbV9z
aW5nbGVFbnRyeUF0dHJpYnV0ZXMgJiBSZWFkT25seTsKICAgICAgICAgICAgIHJldHVybiAmbV91
LnNpbmdsZUVudHJ5VmFsdWU7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CkBAIC0yNjAsOCArMjYyLDEwIEBAIEpTVmFsdWUgKipQcm9wZXJ0eU1hcDo6Z2V0TG9j
YXRpb24oY29uc3QKICAgICBudW1Db2xsaXNpb25zICs9IGVudHJpZXNbaV0ua2V5ICYmIGVudHJp
ZXNbaV0ua2V5ICE9IHJlcDsKICNlbmRpZgogICAgIHdoaWxlIChVU3RyaW5nOjpSZXAgKmtleSA9
IGVudHJpZXNbaV0ua2V5KSB7Ci0gICAgICAgIGlmIChyZXAgPT0ga2V5KQorICAgICAgICBpZiAo
cmVwID09IGtleSkgeworICAgICAgICAgICAgcmVhZE9ubHkgPSBlbnRyaWVzW2ldLmF0dHJpYnV0
ZXMgJiBSZWFkT25seTsKICAgICAgICAgICAgIHJldHVybiAmZW50cmllc1tpXS52YWx1ZTsKKyAg
ICAgICAgfQogICAgICAgICBpZiAoayA9PSAwKQogICAgICAgICAgICAgayA9IDEgfCAoaCAlIHNp
emVNYXNrKTsKICAgICAgICAgaSA9IChpICsgaykgJiBzaXplTWFzazsKQEAgLTI5Niw3ICszMDAs
NyBAQCB2b2lkIFByb3BlcnR5TWFwOjpwdXQoY29uc3QgSWRlbnRpZmllciAmCiB7CiAgICAgYXNz
ZXJ0KCFuYW1lLmlzTnVsbCgpKTsKICAgICBhc3NlcnQodmFsdWUgIT0gMCk7Ci0gICAgCisKICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKICAgICBVU3RyaW5nOjpSZXAgKnJlcCA9IG5hbWUuX3Vz
dHJpbmcucmVwKCk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvcHJvcGVydHlfbWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3Byb3BlcnR5X21hcC5oCShyZXZpc2lvbiAy
NTM4NSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9tYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtNzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgdm9pZCByZW1vdmUo
Y29uc3QgSWRlbnRpZmllciAmbmFtZSk7CiAgICAgICAgIEpTVmFsdWUgKmdldChjb25zdCBJZGVu
dGlmaWVyICZuYW1lKSBjb25zdDsKICAgICAgICAgSlNWYWx1ZSAqZ2V0KGNvbnN0IElkZW50aWZp
ZXIgJm5hbWUsIHVuc2lnbmVkICZhdHRyaWJ1dGVzKSBjb25zdDsKLSAgICAgICAgSlNWYWx1ZSAq
KmdldExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXIgJm5hbWUpOworICAgICAgICBKU1ZhbHVlICoq
Z2V0TG9jYXRpb24oY29uc3QgSWRlbnRpZmllciAmbmFtZSwgYm9vbCYgcmVhZE9ubHkpOwogCiAg
ICAgICAgIHZvaWQgbWFyaygpIGNvbnN0OwogICAgICAgICB2b2lkIGdldEVudW1lcmFibGVQcm9w
ZXJ0eU5hbWVzKFByb3BlcnR5TmFtZUFycmF5JikgY29uc3Q7CkBAIC04OSw2ICs4OSw5IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgICB2b2lkIHNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXMo
Ym9vbCBmKSB7IG1fZ2V0dGVyU2V0dGVyRmxhZyA9IGY7IH0KIAogICAgICAgICBib29sIGNvbnRh
aW5zR2V0dGVyc09yU2V0dGVycygpIGNvbnN0OworCisgICAgICAgIGJvb2wgaXNMb2NhbEluamVj
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEluamVjdGVkOyB9CisgICAgICAgIHZvaWQgc2V0
TG9jYWxJbmplY3RlZCgpIHsgbV9sb2NhbEluamVjdGVkID0gdHJ1ZTsgfQogICAgIHByaXZhdGU6
CiAgICAgICAgIHN0YXRpYyBib29sIGtleXNNYXRjaChjb25zdCBVU3RyaW5nOjpSZXAgKiwgY29u
c3QgVVN0cmluZzo6UmVwICopOwogICAgICAgICB2b2lkIGV4cGFuZCgpOwpAQCAtMTExLDEzICsx
MTQsMTUgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICAgIHNob3J0IG1fc2luZ2xlRW50cnlBdHRy
aWJ1dGVzOwogICAgICAgICBib29sIG1fZ2V0dGVyU2V0dGVyRmxhZyA6IDE7CiAgICAgICAgIGJv
b2wgbV91c2luZ1RhYmxlIDogMTsKKyAgICAgICAgYm9vbCBtX2xvY2FsSW5qZWN0ZWQgOiAxOyAv
LyBVc2VkIHdoZW4gdGhpcyBvYmplY3QgaXMgdGhlIGFjdGl2ZSBzY29wZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBkZW5vdGUgZHluYW1pYyBhZGRpdGlvbiBvZiBs
b2NhbCB2YXJpYWJsZXMKICAgICB9OwogCiAgICAgaW5saW5lIFByb3BlcnR5TWFwOjpQcm9wZXJ0
eU1hcCgpIAogICAgICAgICA6IG1fc2luZ2xlRW50cnlLZXkoMCkKICAgICAgICAgLCBtX2dldHRl
clNldHRlckZsYWcoZmFsc2UpCiAgICAgICAgICwgbV91c2luZ1RhYmxlKGZhbHNlKQotCisgICAg
ICAgICwgbV9sb2NhbEluamVjdGVkKGZhbHNlKQogICAgIHsKICAgICB9CiAKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9wcm9wZXJ0eV9zbG90LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL3Byb3BlcnR5X3Nsb3QuaAkocmV2aXNpb24gMjUzODUpCisrKyBKYXZhU2NyaXB0Q29y
ZS9ranMvcHJvcGVydHlfc2xvdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1MywxNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gKm1fZGF0YS52YWx1ZVNsb3Q7CiAgICAgICAgIHJl
dHVybiBtX2dldFZhbHVlKGV4ZWMsIG9yaWdpbmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tKHBy
b3BlcnR5TmFtZSksICp0aGlzKTsgCiAgICAgfQotICAgIAotICAgIHZvaWQgc2V0VmFsdWVTbG90
KEpTT2JqZWN0ICpzbG90QmFzZSwgSlNWYWx1ZSAqKnZhbHVlU2xvdCkgCisKKyAgICAvLyBSZWFk
YWJpbGl0eSBoZWxwZXIgZm9yIGJlbG93Li4KKyAgICBlbnVtIHsKKyAgICAgICAgUGVybWl0RGly
ZWN0V3JpdGUgPSAwLAorICAgICAgICBGb3JiaWREaXJlY3RXcml0ZSA9IDEKKyAgICB9OworCisg
ICAgdm9pZCBzZXRWYWx1ZVNsb3QoSlNPYmplY3QgKnNsb3RCYXNlLCBKU1ZhbHVlICoqdmFsdWVT
bG90LCBib29sIG1ha2VSZWFkT25seSkgCiAgICAgeworICAgICAgICBtX3JlYWRPbmx5IHw9IG1h
a2VSZWFkT25seTsKICAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwogICAgICAgICBtX2Rh
dGEudmFsdWVTbG90ID0gdmFsdWVTbG90OwogICAgICAgICBtX2dldFZhbHVlID0gVkFMVUVfU0xP
VF9NQVJLRVI7CkBAIC0xMDIsNiArMTA5LDIxIEBAIHB1YmxpYzoKICAgICBjb25zdCBIYXNoRW50
cnkgKnN0YXRpY0VudHJ5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnN0YXRpY0VudHJ5OyB9CiAg
ICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaW5kZXg7IH0KIAorICAg
IC8vIEZvciBkaXJlY3QvdmFsdWUgc2xvdHMgd2UgYWxzbyBrZWVwIHRyYWNrIG9mIHdoZXRoZXIg
dGhleSdyZSAKKyAgICAvLyB3cml0ZWFibGUuIFRoaXMgaXMgY2xlYXJlZCB3aGVuIHRoZSBsb29r
dXAgc3VjY2VlZHMgaW4gdGhlIAorICAgIC8vIHByb3RvdHlwZSBzaW5jZSB0aGUgd3JpdGUgc2hv
dWxkIGdvIGVsc2V3aGVyZS4KKyAgICAvLyAjIyMgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gZ2l2ZSBp
dCBhIHJlYWwgJ3JlYWQgb25seScgdmFsdWUsIHYucy4gCisgICAgLy8gYSAnbm90IHN1cmUnIG9u
ZSwgc2luY2UgcmlnaHQgbm90IGFuIGF0dGVtcHQgdG8gd3JpdGUgYSBjb25zdCAKKyAgICAvLyB3
aWxsIHRha2UgdGhlIHNsb3cgcGF0aC4KKyAgICB2b2lkIHNldFBvdGVudGlhbGx5V3JpdGVhYmxl
KCkgeyBtX3JlYWRPbmx5ID0gZmFsc2U7IH0KKyAgICB2b2lkIHNldFJlYWRPbmx5KCkgICAgICAg
ICAgICAgeyBtX3JlYWRPbmx5ID0gdHJ1ZTsgIH0KKworICAgIC8vIFRoaXMgcmV0dXJucyBhIHBv
aW50ZXIgd2hlcmUgdGhlIHZhbHVlIG1heSBiZSBzdG9yZWQsCisgICAgLy8gb3IgMCBpZiB0aGlz
IGlzIG5vdCBwb3NzaWJsZS4KKyAgICBKU1ZhbHVlKiogZ2V0RGlyZWN0V3JpdGVMb2NhdGlvbigp
CisgICAgeworICAgICAgICByZXR1cm4gKChtX2dldFZhbHVlID09IFZBTFVFX1NMT1RfTUFSS0VS
KSAmICFtX3JlYWRPbmx5KSA/IG1fZGF0YS52YWx1ZVNsb3QgOiAwOworICAgIH0KIHByaXZhdGU6
CiAgICAgc3RhdGljIEpTVmFsdWUgKnVuZGVmaW5lZEdldHRlcihFeGVjU3RhdGUgKiwgSlNPYmpl
Y3QgKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRp
YyBKU1ZhbHVlICpmdW5jdGlvbkdldHRlcihFeGVjU3RhdGUgKiwgSlNPYmplY3QgKiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwpAQCAtMTE1LDYgKzEzNyw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNvbnN0IEhhc2hFbnRyeSAqc3RhdGljRW50cnk7CiAgICAgICAgIHVu
c2lnbmVkIGluZGV4OwogICAgIH0gbV9kYXRhOworCisgICAgYm9vbCBtX3JlYWRPbmx5OwogfTsK
IAogfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3JlZmVyZW5jZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9yZWZlcmVuY2UuaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9yZWZlcmVuY2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLy8g
LSotIGMtYmFzaWMtb2Zmc2V0OiA0IC0qLQorLyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIGxpYnJhcmllcworICogIENvcHlyaWdodCAoQykgMjAwNyBNYWtzaW0gT3Jsb3ZpY2gg
KG1ha3NpbUBrZGUub3JnKQorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBSRUZFUkVOQ0VfSAorI2Rl
ZmluZSBSRUZFUkVOQ0VfSAorCisjaW5jbHVkZSAib2JqZWN0LmgiCisjaW5jbHVkZSAicHJvcGVy
dHlfc2xvdC5oIgorCituYW1lc3BhY2UgS0pTIHsKKworc3RydWN0IFJlZmVyZW5jZSB7CisgICAg
Ly8jIyMgc29tZSBwcm90ZWN0aW9uIGhlcmUhCisgICAgUHJvcGVydHlTbG90ICBwcm9wZXJ0eVNs
b3Q7CisgICAgYm9vbCAgICAgICAgICBmb3VuZDsgLy9ub3RlOiBzaG91bGQgZml0IGludG8gcGFk
ZGluZyBvZiBhYm92ZS4uCisKKyAgICBKU09iamVjdCogICAgIGJhc2U7ICAvL1RoaXMgaXNuJ3Qg
dGhlIHNhbWUgYXMgc2xvdCdzIGJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgLy9hcyB0
aGF0IG1heSBiZSBkaWZmZXJlbnQgaW4gY2FzZSBwcm90b3R5cGVzIGFyZSBpbnZvbHZlZC4uCisg
ICAgSWRlbnRpZmllciAgICBpZGVudDsKKworICAgIFJlZmVyZW5jZSgpIHsgfQorCisgICAgUmVm
ZXJlbmNlKGNvbnN0IElkZW50aWZpZXImIGkpIDogaWRlbnQoaSkgeyB9CisKKyAgICAvLyBOb3Rl
OiBmb3IgcmVmZXJlbmNlcywgd2UgbWFrZSBzdXJlIHRoZSBzbG90IHBvaW50cyB0byB0aGUgb3V0
ZXIKKyAgICAvLyBzY29wZSBpZiBsb29rdXAgZmFpbGVkLi4KKyAgICBKU1ZhbHVlKiByZWFkKEV4
ZWNTdGF0ZSogZXhlYykgeworICAgICAgICByZXR1cm4gcHJvcGVydHlTbG90LmdldFZhbHVlKGV4
ZWMsIGJhc2UsIGlkZW50KTsKKyAgICB9CisKKyAgICB2b2lkIHdyaXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSogdmFsKSB7CisgICAgICAgIGlmIChKU1ZhbHVlKiogbG9jID0gcHJvcGVydHlT
bG90LmdldERpcmVjdFdyaXRlTG9jYXRpb24oKSkKKyAgICAgICAgICAgICpsb2MgPSB2YWw7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJhc2UtPnB1dChleGVjLCBpZGVudCwgdmFsKTsKKyAg
ICB9CisKKyAgICBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykgeworICAgICAg
ICByZXR1cm4gYmFzZS0+ZGVsZXRlUHJvcGVydHkoZXhlYywgaWRlbnQpOworICAgIH0KK307CisK
K30KKworI2VuZGlmCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvc2VtYW50aWNfY2hlY2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuY3Bw
CShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MCBAQAorLy8gLSotIGMtYmFzaWMtb2Zmc2V0OiAy
IC0qLQorLyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcworICog
IENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5vcmcpCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjaW5jbHVkZSAic2VtYW50aWNfY2hlY2tlci5oIgorCituYW1lc3BhY2Ug
S0pTIHsKKworCit2b2lkIFNlbWFudGljQ2hlY2tlcjo6ZW50ZXJTZW1hbnRpY0NvbnRleHQoKQor
eworICBjb250ZXh0U3RhY2suYXBwZW5kKFNlbWFudGljQ29udGV4dCgpKTsKK30KKwordm9pZCBT
ZW1hbnRpY0NoZWNrZXI6OmV4aXRTZW1hbnRpY0NvbnRleHQoKQoreworICBjb250ZXh0U3RhY2su
cmVtb3ZlTGFzdCgpOworfQorCitOb2RlKiBTZW1hbnRpY0NoZWNrZXI6OnZpc2l0KE5vZGUqIG5v
ZGUpCit7CisgIHJldHVybiBub2RlLT5jaGVja1NlbWFudGljcyh0aGlzKTsKK30KKwordm9pZCBT
ZW1hbnRpY0NoZWNrZXI6OmNoZWNrU2VtYW50aWNzKE5vZGUqIG5vZGUpIHsKKyAgZW50ZXJTZW1h
bnRpY0NvbnRleHQoKTsKKyAgdmlzaXQobm9kZSk7CisgIGV4aXRTZW1hbnRpY0NvbnRleHQoKTsK
K30KKworTm9kZSogTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBjaGVja2Vy
U3RhdGUpCit7CisgIHJlY3Vyc2VWaXNpdChjaGVja2VyU3RhdGUpOworICByZXR1cm4gMDsKK30K
KworTm9kZSogU3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWNDaGVja2VyKiBj
aGVja2VyU3RhdGUpCit7CisgIFNlbWFudGljQ29udGV4dCogY3R4ID0gY2hlY2tlclN0YXRlLT5z
ZW1hbnRpY0NvbnRleHQoKTsKKworICBib29sIGlzTG9vcCAgID0gaXNJdGVyYXRpb25TdGF0ZW1l
bnQoKTsKKyAgYm9vbCBpc1N3aXRjaCA9IGlzU3dpdGNoU3RhdGVtZW50KCk7CisgIAorICBpZiAo
IWN0eC0+cGVuZGluZ0xhYmVscy5pc0VtcHR5KCkpIHsKKyAgICAvLyBXZSB3b3VsZCBsaWtlIHRv
IHByb3Blcmx5IGJpbmQgdGhlIGxhYmVscyBhdCB0aGlzIHBvaW50LAorICAgIC8vIG5vdyB0aGF0
IHdlIGdvdCB0byBzb21lIHJlYWwgY29kZS4gSG93IHdlIGJpbmQgZGVwZW5kcyBvbgorICAgIC8v
IHdoYXQgdGhlIGN1cnJlbnQgc3RhdGVtZW50IGlzOiBpZiBpdCdzIGEgc3dpdGNoIG9yIGEgbG9v
cCwKKyAgICAvLyB3ZSBiaW5kIHRvIHRoYXQsIG90aGVyd2lzZSBiaW5kIHRvIHRoZSBsYWJlbCBp
dHNlbGYsIGZvciB0aGUKKyAgICAvLyBsYWJlbDogYnJlYWsgbGFiZWw7IHR5cGUgb2YgdXNhZ2Uu
CisgICAgTm9kZSogbGFiZWxUYXJnZXQgPSAoaXNMb29wIHx8IGlzU3dpdGNoKSA/IHRoaXMgOiBj
dHgtPmxhc3RMYWJlbDsKKyAgICAKKyAgICBmb3IgKEhhc2hTZXQ8SWRlbnRpZmllcj46Oml0ZXJh
dG9yIGkgPSAgIGN0eC0+cGVuZGluZ0xhYmVscy5iZWdpbigpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaSAhPSBjdHgtPnBlbmRpbmdMYWJlbHMuZW5kKCk7ICsraSkg
eworICAgICAgY3R4LT5sYWJlbFRhcmdldHMuYWRkKCppLCBsYWJlbFRhcmdldCk7CisgICAgfQor
CisgICAgY3R4LT5wZW5kaW5nTGFiZWxzLmNsZWFyKCk7CisgIH0KKworICBpZiAoaXNMb29wKSB7
CisgICAgY3R4LT5kZWZhdWx0Q29udGludWVUYXJnZXRzLmFwcGVuZCh0aGlzKTsKKyAgICBjdHgt
PmRlZmF1bHRCcmVha1RhcmdldHMuYXBwZW5kKHRoaXMpOworICB9CisKKyAgaWYgKGlzU3dpdGNo
KQorICAgIGN0eC0+ZGVmYXVsdEJyZWFrVGFyZ2V0cy5hcHBlbmQodGhpcyk7CisKKyAgKHZvaWQp
IE5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7CisKKyAgaWYgKGlzTG9vcCkgewor
ICAgIGN0eC0+ZGVmYXVsdENvbnRpbnVlVGFyZ2V0cy5yZW1vdmVMYXN0KCk7CisgICAgY3R4LT5k
ZWZhdWx0QnJlYWtUYXJnZXRzLnJlbW92ZUxhc3QoKTsKKyAgfQorCisgIGlmIChpc1N3aXRjaCkK
KyAgICBjdHgtPmRlZmF1bHRCcmVha1RhcmdldHMucmVtb3ZlTGFzdCgpOworCisgIHJldHVybiAw
OworfQorCitOb2RlKiBMYWJlbE5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tlciog
Y2hlY2tlclN0YXRlKQoreworICBTZW1hbnRpY0NvbnRleHQqIGN0eCA9IGNoZWNrZXJTdGF0ZS0+
c2VtYW50aWNDb250ZXh0KCk7CisKKyAgLy8gQWRkIHRoZSBsYWJlbCB0byB0aGUgc2VlbiBzZXQs
IGFuZCBzZWUgaWYgaXQncyBhbHJlYWR5IHRoZXJlLi4KKyAgaWYgKCFjdHgtPnNlZW5MYWJlbHMu
YWRkKGxhYmVsKS5zZWNvbmQpCisgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50YXhFcnJv
ciwgIkR1cGxpY2F0ZWQgbGFiZWwgJXMgZm91bmQuIiwgbGFiZWwpOworCisgIC8vIEFkZCBpdCB0
byB0aGUgc2V0IG9mIHBlbmRpbmcgbGFiZWxzLCBtZW1vcml6ZSB0aGlzIG5vZGUgYXMKKyAgLy8g
Y2FuZGlkYXRlIGZvciBiaW5kaW5nIHRoZSBuYW1lCisgIGN0eC0+cGVuZGluZ0xhYmVscy5hZGQo
bGFiZWwpOworICBjdHgtPmxhc3RMYWJlbCA9IHRoaXM7CisKKyAgLy8gV2UgZG8gbm90IGNhbGwg
dXAgdG8gU3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MsIHNpbmNlIHRoYXQgd291bGQKKyAg
Ly8gYXBwbHkgYWNjdW11bGF0ZWQgbGFiZWxzLCBhbmQgd2Ugd2FudCB0byBkZWZlciB0aGVtIHVu
dGlsIHdlIGdldCB0aGUKKyAgLy8gZmlyc3Qgbm9uLWxhYmVsIHN0YXRlbWVudC4KKyAgKHZvaWQp
Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoY2hlY2tlclN0YXRlKTsKKworICBjdHgtPmxhYmVsVGFyZ2V0
cy5yZW1vdmUobGFiZWwpOworICBjdHgtPnNlZW5MYWJlbHMucmVtb3ZlKGxhYmVsKTsKKyAgcmV0
dXJuIDA7Cit9CisKK05vZGUqIEZ1bmNEZWNsTm9kZTo6Y2hlY2tTZW1hbnRpY3MoU2VtYW50aWND
aGVja2VyKiBjaGVja2VyU3RhdGUpCit7CisgIGNoZWNrZXJTdGF0ZS0+ZW50ZXJTZW1hbnRpY0Nv
bnRleHQoKTsKKyAgKHZvaWQpU3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoY2hlY2tlclN0
YXRlKTsKKyAgY2hlY2tlclN0YXRlLT5leGl0U2VtYW50aWNDb250ZXh0KCk7CisgIHJldHVybiAw
OworfQorCitOb2RlKiBGdW5jRXhwck5vZGU6OmNoZWNrU2VtYW50aWNzKFNlbWFudGljQ2hlY2tl
ciogY2hlY2tlclN0YXRlKQoreworICBjaGVja2VyU3RhdGUtPmVudGVyU2VtYW50aWNDb250ZXh0
KCk7CisgICh2b2lkKU5vZGU6OmNoZWNrU2VtYW50aWNzKGNoZWNrZXJTdGF0ZSk7CisgIGNoZWNr
ZXJTdGF0ZS0+ZXhpdFNlbWFudGljQ29udGV4dCgpOworICByZXR1cm4gMDsKK30KKworTm9kZSog
Q29udGludWVOb2RlOjpjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIGNoZWNrZXJTdGF0
ZSkKK3sKKyAgU3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoY2hlY2tlclN0YXRlKTsgLy9S
ZXNvbHZlIHF1ZXVlZCBsYWJlbHMgaWYgbmVlZCBiZS4uCisKKyAgU2VtYW50aWNDb250ZXh0KiBj
dHggPSBjaGVja2VyU3RhdGUtPnNlbWFudGljQ29udGV4dCgpOworCisgIC8vIEJpbmQgdGhlIGxh
YmVsLi4KKyAgaWYgKGlkZW50LmlzRW1wdHkoKSkgeworICAgIGlmIChjdHgtPmRlZmF1bHRDb250
aW51ZVRhcmdldHMuaXNFbXB0eSgpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50
YXhFcnJvciwgIkludmFsaWQgY29udGludWUgc3RhdGVtZW50LiIpOworICAgIGVsc2UKKyAgICAg
IHRhcmdldCA9IGN0eC0+ZGVmYXVsdENvbnRpbnVlVGFyZ2V0cy5sYXN0KCk7CisgIH0gZWxzZSAg
eworICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGtub3cgdGhpcyBsYWJlbCwgYW5kIHRoYXQgaXQg
aXMgYSAKKyAgICAvLyBsb29wLXN0eWxlIGxhYmVscy4KKyAgICBpZiAoIWN0eC0+c2VlbkxhYmVs
cy5jb250YWlucyhpZGVudCkpCisgICAgICByZXR1cm4gY3JlYXRlRXJyb3JOb2RlKFN5bnRheEVy
cm9yLCAiTGFiZWwgJXMgbm90IGZvdW5kLiIsIGlkZW50KTsKKyAgICB0YXJnZXQgPSBjdHgtPmxh
YmVsVGFyZ2V0cy5nZXQoaWRlbnQpOworCisgICAgaWYgKCF0YXJnZXQtPmlzSXRlcmF0aW9uU3Rh
dGVtZW50KCkpCisgICAgICByZXR1cm4gY3JlYXRlRXJyb3JOb2RlKFN5bnRheEVycm9yLCAiSW52
YWxpZCBjb250aW51ZSBzdGF0ZW1lbnQuIik7CisgIH0KKworICByZXR1cm4gMDsKK30KKworTm9k
ZSogQnJlYWtOb2RlOjpjaGVja1NlbWFudGljcyhTZW1hbnRpY0NoZWNrZXIqIGNoZWNrZXJTdGF0
ZSkKK3sKKyAgU3RhdGVtZW50Tm9kZTo6Y2hlY2tTZW1hbnRpY3MoY2hlY2tlclN0YXRlKTsgLy9S
ZXNvbHZlIHF1ZXVlZCBsYWJlbHMgaWYgbmVlZCBiZS4uCisKKyAgU2VtYW50aWNDb250ZXh0KiBj
dHggPSBjaGVja2VyU3RhdGUtPnNlbWFudGljQ29udGV4dCgpOworCisgIC8vIEJpbmQgdGhlIGxh
YmVsLi4KKyAgaWYgKGlkZW50LmlzRW1wdHkoKSkgeworICAgIGlmIChjdHgtPmRlZmF1bHRCcmVh
a1RhcmdldHMuaXNFbXB0eSgpKQorICAgICAgcmV0dXJuIGNyZWF0ZUVycm9yTm9kZShTeW50YXhF
cnJvciwgIkludmFsaWQgYnJlYWsgc3RhdGVtZW50LiIpOworICAgIGVsc2UKKyAgICAgIHRhcmdl
dCA9IGN0eC0+ZGVmYXVsdEJyZWFrVGFyZ2V0cy5sYXN0KCk7CisgIH0gZWxzZSAgeworICAgIC8v
IE1ha2Ugc3VyZSB0aGF0IHdlIGtub3cgdGhpcyBsYWJlbAorICAgIGlmICghY3R4LT5zZWVuTGFi
ZWxzLmNvbnRhaW5zKGlkZW50KSkKKyAgICAgIHJldHVybiBjcmVhdGVFcnJvck5vZGUoU3ludGF4
RXJyb3IsICJMYWJlbCAlcyBub3QgZm91bmQuIiwgaWRlbnQpOworICAgIHRhcmdldCA9IGN0eC0+
bGFiZWxUYXJnZXRzLmdldChpZGVudCk7CisgIH0KKworICByZXR1cm4gMDsKK30KKworCit9IC8v
bmFtZXNwYWNlIEtKUwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvc2VtYW50aWNfY2hlY2tlci5oCShy
ZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL3NlbWFudGljX2NoZWNrZXIuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLy8gLSotIGMtYmFzaWMtb2Zmc2V0OiAyIC0qLQor
LyoKKyAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcworICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA3IE1ha3NpbSBPcmxvdmljaCAobWFrc2ltQGtkZS5vcmcpCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaWZuZGVmIFNFTUFOVElDX0NIRUNLRVJfSAorI2RlZmluZSBTRU1BTlRJQ19DSEVD
S0VSX0gKKworI2luY2x1ZGUgIm5vZGVzLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCit1c2lu
ZyBXVEY6Okhhc2hTZXQ7Cit1c2luZyBXVEY6Okhhc2hNYXA7Cit1c2luZyBXVEY6OlZlY3RvcjsK
KworbmFtZXNwYWNlIEtKUyB7CisgIGNsYXNzIFNlbWFudGljQ29udGV4dCB7CisgIHB1YmxpYzoK
KyAgICBTZW1hbnRpY0NvbnRleHQoKSB7fQorCisgICAgSGFzaFNldDxJZGVudGlmaWVyPiBzZWVu
TGFiZWxzOworICAgIEhhc2hTZXQ8SWRlbnRpZmllcj4gcGVuZGluZ0xhYmVsczsKKyAgICBMYWJl
bE5vZGUqICAgICAgICAgIGxhc3RMYWJlbDsKKyAgICBIYXNoTWFwPElkZW50aWZpZXIsIE5vZGUq
PiBsYWJlbFRhcmdldHM7CisKKyAgICBWZWN0b3I8Tm9kZSo+IGRlZmF1bHRDb250aW51ZVRhcmdl
dHM7CisgICAgVmVjdG9yPE5vZGUqPiBkZWZhdWx0QnJlYWtUYXJnZXRzOworICB9OworCisKKyAg
LyoqCisgICBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gc3RhdGljYWxseSBkZXRlY3Qgc29tZSBjbGFz
c2VzIG9mIGVycm9ycyBpbiB0aGUKKyAgIHByb2dyYW0sIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBh
biBhcHByb3ByaWF0ZSBlcnJvciBub2RlLgorICAqLworICBjbGFzcyBTZW1hbnRpY0NoZWNrZXIg
OiBwdWJsaWMgTm9kZVZpc2l0b3IgeworICBwdWJsaWM6CisgICAgdm9pZCBjaGVja1NlbWFudGlj
cyhOb2RlKiBub2RlKTsKKworICAgIFNlbWFudGljQ29udGV4dCogc2VtYW50aWNDb250ZXh0KCkg
eyByZXR1cm4gJmNvbnRleHRTdGFjay5sYXN0KCk7IH0KKworICAgIHZvaWQgZW50ZXJTZW1hbnRp
Y0NvbnRleHQoKTsKKyAgICB2b2lkIGV4aXRTZW1hbnRpY0NvbnRleHQoKTsKKworICAgIC8vIyMj
IHNob3VsZCBwcm9sbHkgbWFrZSBwcml2YXRlIC0tLSBjaGVjayBvdGhlciB1c2VzLi4KKyAgICB2
aXJ0dWFsIE5vZGUqIHZpc2l0KE5vZGUqIG5vZGUpIEtKU19GQVNUX0NBTEw7CisKKyAgcHJpdmF0
ZToKKyAgICBWZWN0b3I8U2VtYW50aWNDb250ZXh0PiBjb250ZXh0U3RhY2s7CisgIH07Cit9Owor
CisjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy92YWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy92YWx1ZS5oCShyZXZpc2lvbiAyNTM4NSkKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy92YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDYgQEAgcHVi
bGljOgogICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbi4KICAgICB2b2lkIG1hcmsoKTsKICAgICBi
b29sIG1hcmtlZCgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGF0aW9uIGRl
dGFpbHMuCiAgICAgSlNDZWxsICphc0NlbGwoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Rlc3Rz
L21vemlsbGEvZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS90ZXN0
cy9tb3ppbGxhL2V4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDI1Mzg1KQorKysgSmF2YVNjcmlwdENv
cmUvdGVzdHMvbW96aWxsYS9leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDExICs3
LDExIEBACiA8cCBjbGFzcz0ncmVzdWx0c19zdW1tYXJ5Jz4KIFRlc3QgTGlzdDogQWxsIHRlc3Rz
PGJyPgogU2tpcCBMaXN0OiAobm9uZSk8YnI+Ci0xMTM1IHRlc3Qocykgc2VsZWN0ZWQsIDExMjcg
dGVzdChzKSBjb21wbGV0ZWQsIDYzIGZhaWx1cmVzIHJlcG9ydGVkICg1LjU5JSBmYWlsZWQpPGJy
PgotRW5naW5lIGNvbW1hbmQgbGluZTogL1VzZXJzL2RhcmluL0J1aWxkL0RlYnVnL3Rlc3RranMg
PGJyPgotT1MgdHlwZTogRGFyd2luIERhcmluLUFkbGVycy1NYWMtUHJvLmxvY2FsIDguMTAuMSBE
YXJ3aW4gS2VybmVsIFZlcnNpb24gOC4xMC4xOiBXZWQgTWF5IDIzIDE2OjMzOjAwIFBEVCAyMDA3
OyByb290OnhudS03OTIuMjIuNX4xL1JFTEVBU0VfSTM4NiBpMzg2IGkzODY8YnI+Ci1UZXN0Y2Fz
ZSBleGVjdXRpb24gdGltZTogMSBtaW51dGVzLCAyMiBzZWNvbmRzLjxicj4KLVRlc3RzIGNvbXBs
ZXRlZCBvbiBTdW4gQXVnIDEyIDE2OjQ1OjM0IDIwMDcuPGJyPjxicj4KKzExMzUgdGVzdChzKSBz
ZWxlY3RlZCwgMTEyNyB0ZXN0KHMpIGNvbXBsZXRlZCwgNjUgZmFpbHVyZXMgcmVwb3J0ZWQgKDUu
NzYlIGZhaWxlZCk8YnI+CitFbmdpbmUgY29tbWFuZCBsaW5lOiAvVXNlcnMvQ2FtZXJvbi9XZWJL
aXQvV2ViS2l0QnVpbGQvUmVsZWFzZS90ZXN0a2pzIDxicj4KK09TIHR5cGU6IERhcndpbiBjcGUw
MDFiNjM5M2E3NDYtY20wMDQwN2I4NjAxY2QuY3BlLm5ldC5jYWJsZS5yb2dlcnMuY29tIDguMTAu
MSBEYXJ3aW4gS2VybmVsIFZlcnNpb24gOC4xMC4xOiBXZWQgTWF5IDIzIDE2OjMzOjAwIFBEVCAy
MDA3OyByb290OnhudS03OTIuMjIuNX4xL1JFTEVBU0VfSTM4NiBpMzg2IGkzODY8YnI+CitUZXN0
Y2FzZSBleGVjdXRpb24gdGltZTogMSBtaW51dGVzLCAyIHNlY29uZHMuPGJyPgorVGVzdHMgY29t
cGxldGVkIG9uIEZyaSBTZXAgIDcgMDU6NDc6MDcgMjAwNy48YnI+PGJyPgogWyA8YSBocmVmPScj
ZmFpbF9kZXRhaWwnPkZhaWx1cmUgRGV0YWlsczwvYT4gfCA8YSBocmVmPScjcmV0ZXN0X2xpc3Qn
PlJldGVzdCBMaXN0PC9hPiB8IDxhIGhyZWY9J21lbnUuaHRtbCc+VGVzdCBTZWxlY3Rpb24gUGFn
ZTwvYT4gXTxicj4KIDxocj4KIDxhIG5hbWU9J2ZhaWxfZGV0YWlsJz48L2E+CkBAIC0zNyw3ICsz
Nyw3IEBAIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRl
c3RjYXNlIG91dHB1dCB3YXM6PGJyPgogLS0+IFJlZ0V4cC9oZXgtMDAxLmpzIEpTIHJlZ2V4cCBh
bmNob3Jpbmcgb24gZW1wdHkgbWF0Y2ggYnVnPGJyPgogLS0+IEJVR05VTUJFUjogaHR0cDovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU3PGJyPgotWzQ0MzRdIC4vZWNt
YV8yL1JlZ0V4cC9yZWdyZXNzLTAwMS5qcyBsaW5lIDE4OiBUeXBlRXJyb3I6IE9iamVjdCAvYXx8
Yi8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9hfHxiLykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJy
PgorWzI1OTUwXSAuL2VjbWFfMi9SZWdFeHAvcmVncmVzcy0wMDEuanMgbGluZSAxODogVHlwZUVy
cm9yOiBPYmplY3QgL2F8fGIvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvYXx8Yi8pIGRvZXMgbm90
IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgogPGEgbmFtZT0nZmFpbHVyZTQnPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8yL1JlZ0V4
cC91bmljb2RlLTAwMS5qcyc+ZWNtYV8yL1JlZ0V4cC91bmljb2RlLTAwMS5qczwvYT4gZmFpbGVk
PC9iPiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI2ZhaWx1cmU1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CkBAIC00NSw3ICs0NSw3IEBAIENvbXBsZXRlIHRlc3Rj
YXNlIG91dHB1dCB3YXM6PGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJy
PgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CiAtLT4gUmVnRXhwL3VuaWNvZGUt
MDAxLmpzIG5ldyBSZWdFeHAoIHBhdHRlcm4sIGZsYWdzICk8YnI+Ci1bNDQzNV0gLi9lY21hXzIv
UmVnRXhwL3VuaWNvZGUtMDAxLmpzIGxpbmUgMzM6IFR5cGVFcnJvcjogTnVsbCB2YWx1ZTxicj4K
K1syNTk1MV0gLi9lY21hXzIvUmVnRXhwL3VuaWNvZGUtMDAxLmpzIGxpbmUgMzM6IFR5cGVFcnJv
cjogTnVsbCB2YWx1ZTxicj4KIDwvdHQ+PGJyPgogPGEgbmFtZT0nZmFpbHVyZTUnPjwvYT48ZGQ+
PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL0RhdGUv
MTUuOS41LjcuanMnPmVjbWFfMy9EYXRlLzE1LjkuNS43LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4K
ICBbIDxhIGhyZWY9JyNmYWlsdXJlNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KQEAgLTYwLDggKzYwLDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxi
cj4KIC0tPiAoTW9uIEZlYiAyOCAyMDAwIDE2OjAwOjAwIEdNVC0wODAwIChQU1QpKS50b0xvY2Fs
ZVRpbWVTdHJpbmcoKSA9IDQ6MDA6MDAgUE0gUFNUIEZBSUxFRCEgZXhwZWN0ZWQ6IDE2OjAwOjAw
PGJyPgogLS0+IChNb24gRmViIDI4IDIwMDAgMTU6NTk6NTkgR01ULTA4MDAgKFBTVCkpLnRvTG9j
YWxlVGltZVN0cmluZygpID0gMzo1OTo1OSBQTSBQU1QgRkFJTEVEISBleHBlY3RlZDogMTU6NTk6
NTk8YnI+CiAtLT4gKFR1ZSBGZWIgMjkgMjAwMCAwMDowMDowMCBHTVQtMDgwMCAoUFNUKSkudG9M
b2NhbGVUaW1lU3RyaW5nKCkgPSAxMjowMDowMCBBTSBQU1QgRkFJTEVEISBleHBlY3RlZDogMDA6
MDA6MDA8YnI+Ci0tLT4gKFN1biBBdWcgMTIgMjAwNyAxNjo0NToxOSBHTVQtMDcwMCAoUERUKSku
dG9Mb2NhbGVUaW1lU3RyaW5nKCkgPSA0OjQ1OjE5IFBNIFBEVCBGQUlMRUQhIGV4cGVjdGVkOiAx
Njo0NToxOTxicj4KLS0tPiAoTW9uIEF1ZyAxMyAyMDA3IDAwOjQ1OjE5IEdNVC0wNzAwIChQRFQp
KS50b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDEyOjQ1OjE5IEFNIFBEVCBGQUlMRUQhIGV4cGVjdGVk
OiAwMDo0NToxOTxicj4KKy0tPiAoRnJpIFNlcCAwNyAyMDA3IDA1OjQ2OjUwIEdNVC0wNzAwIChQ
RFQpKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDU6NDY6NTAgQU0gUERUIEZBSUxFRCEgZXhwZWN0
ZWQ6IDA1OjQ2OjUwPGJyPgorLS0+IChGcmkgU2VwIDA3IDIwMDcgMTM6NDY6NTAgR01ULTA3MDAg
KFBEVCkpLnRvTG9jYWxlVGltZVN0cmluZygpID0gMTo0Njo1MCBQTSBQRFQgRkFJTEVEISBleHBl
Y3RlZDogMTM6NDY6NTA8YnI+CiAtLT4gKEZyaSBEZWMgMzEgMjAwNCAxNjowMDowMCBHTVQtMDgw
MCAoUFNUKSkudG9Mb2NhbGVUaW1lU3RyaW5nKCkgPSA0OjAwOjAwIFBNIFBTVCBGQUlMRUQhIGV4
cGVjdGVkOiAxNjowMDowMDxicj4KIC0tPiAoRnJpIERlYyAzMSAyMDA0IDE1OjU5OjU5IEdNVC0w
ODAwIChQU1QpKS50b0xvY2FsZVRpbWVTdHJpbmcoKSA9IDM6NTk6NTkgUE0gUFNUIEZBSUxFRCEg
ZXhwZWN0ZWQ6IDE1OjU5OjU5PGJyPgogLS0+IChTYXQgSmFuIDAxIDIwMDUgMDA6MDA6MDAgR01U
LTA4MDAgKFBTVCkpLnRvTG9jYWxlVGltZVN0cmluZygpID0gMTI6MDA6MDAgQU0gUFNUIEZBSUxF
RCEgZXhwZWN0ZWQ6IDAwOjAwOjAwPGJyPgpAQCAtNzIsOCArNzIsMjggQEAgRmFpbHVyZSBtZXNz
YWdlcyB3ZXJlOjxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgogVGVzdGNhc2UgcHJvZHVjZWQgbm8gb3V0
cHV0ITwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC8xNS4xMC4yLTEuanMn
PmVjbWFfMy9SZWdFeHAvMTUuMTAuMi0xLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9KG5vbmUpJyB0YXJnZXQ9J290
aGVyX3dpbmRvdyc+QnVnIE51bWJlciAobm9uZSk8L2E+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTcn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNt
YV8zL0Z1bmN0aW9uL3Njb3BlLTAwMS5qcyc+ZWNtYV8zL0Z1bmN0aW9uL3Njb3BlLTAwMS5qczwv
YT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPShub25lKScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgKG5vbmUp
PC9hPjxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzx0dD4tLT4gU1RBVFVTOiBUZXN0aW5nIHRoYXQgZnVu
Y3Rpb25zIGFyZSBzY29wZWQgc3RhdGljYWxseSwgbm90IGR5bmFtaWNhbGx5PGJyPgorRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCld
IFNlY3Rpb24gQiBvZiB0ZXN0PGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3Qo
KV0gRXhwZWN0ZWQgdmFsdWUgJzInLCBBY3R1YWwgdmFsdWUgJzEnPGJyPgorLS0+IEZBSUxFRCE6
IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gU2VjdGlvbiBDIG9mIHRlc3Q8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMicsIEFjdHVhbCB2YWx1ZSAnMSc8YnI+CistLT4g
RkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CistLT4gRkFJTEVEITogW3JlcG9y
dGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIEQgb2YgdGVzdDxicj4KKy0tPiBGQUlMRUQhOiBbcmVw
b3J0ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICczJywgQWN0dWFsIHZhbHVlICcxJzxi
cj4KKy0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KKy0tPiBGQUlMRUQh
OiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gRSBvZiB0ZXN0PGJyPgorLS0+IEZBSUxF
RCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJzInLCBBY3R1YWwgdmFs
dWUgJzEnPGJyPgorLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgorLS0+
IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiBGIG9mIHRlc3Q8YnI+Cist
LT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMicsIEFj
dHVhbCB2YWx1ZSAnMSc8YnI+CistLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8
YnI+Cis8L3R0Pjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvMTUuMTAuMi0xLmpz
Jz5lY21hXzMvUmVnRXhwLzE1LjEwLjItMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRw
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPShub25lKScgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgKG5vbmUpPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWls
dXJlNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTknPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0
dD4tLT4gU1RBVFVTOiBSZWdFeHAgY29uZm9ybWFuY2UgdGVzdDxicj4KIEZhaWx1cmUgbWVzc2Fn
ZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9u
IDcgb2YgdGVzdCAtPGJyPgpAQCAtOTgsOCArMTE4LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJl
Ojxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogWyJiYWFh
YmFhYyIsICJiYSIsICJhYSIsICJhYmFhYyJdPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBm
cm9tIHRlc3QoKV0gPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlOCc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhw
L3BlcmxzdHJlc3MtMDAxLmpzJz5lY21hXzMvUmVnRXhwL3BlcmxzdHJlc3MtMDAxLmpzPC9hPiBm
YWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODU3MjEnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDg1NzIxPC9hPjxi
cj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVm
PScjZmFpbHVyZTknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU5Jz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcGVybHN0cmVz
cy0wMDEuanMnPmVjbWFfMy9SZWdFeHAvcGVybHN0cmVzcy0wMDEuanM8L2E+IGZhaWxlZDwvYj4g
PGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04NTcy
MScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgODU3MjE8L2E+PGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmU4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
MTAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBUZXN0aW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBlZGdl
IGNhc2VzPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVw
b3J0ZWQgZnJvbSB0ZXN0KCldIFNlY3Rpb24gMjE4IG9mIHRlc3QgLTxicj4KQEAgLTEzOCw4ICsx
NTgsOCBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRl
ZCBmcm9tIHRlc3QoKV0gQWN0dWFsOiBbImFhYmJhYSIsICJhYSIsICJiYiJdPGJyPgogLS0+IEZB
SUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdm
YWlsdXJlOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtNzI5NjQuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVz
cy03Mjk2NC5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxs
YS5vcmcvc2hvd19idWcuY2dpP2lkPTcyOTY0JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51
bWJlciA3Mjk2NDwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTgnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxMCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTEwJz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFf
My9SZWdFeHAvcmVncmVzcy03Mjk2NC5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTcyOTY0Lmpz
PC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzI5NjQnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDcyOTY0
PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTExJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogVGVzdGluZyByZWd1bGFy
IGV4cHJlc3Npb25zIGNvbnRhaW5pbmcgbm9uLUxhdGluMSBjaGFyYWN0ZXJzPGJyPgogRmFpbHVy
ZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCld
IFNlY3Rpb24gMyBvZiB0ZXN0IC08YnI+CkBAIC0xNTcsOCArMTc3LDggQEAgRmFpbHVyZSBtZXNz
YWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVh
bDogbnVsbDxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwv
dHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTEwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9SZWdFeHAvcmVncmVzcy03ODE1Ni5qcyc+
ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTc4MTU2LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0
dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxNTYnIHRhcmdldD0n
b3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDc4MTU2PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWls
dXJlOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTExJz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8
YSBuYW1lPSdmYWlsdXJlMTEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTc4MTU2LmpzJz5lY21hXzMvUmVn
RXhwL3JlZ3Jlc3MtNzgxNTYuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD03ODE1NicgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnPkJ1ZyBOdW1iZXIgNzgxNTY8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMCc+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEyJz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNU
QVRVUzogVGVzdGluZyByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggIF4sICQsIGFuZCB0aGUgbSBm
bGFnIC08YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBv
cnRlZCBmcm9tIHRlc3QoKV0gU2VjdGlvbiAyIG9mIHRlc3QgLTxicj4KQEAgLTE3NiwyMyArMTk2
LDIzIEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVk
IGZyb20gdGVzdCgpXSBBY3R1YWw6IG51bGw8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxMSc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhw
L3JlZ3Jlc3MtMTAwMTk5LmpzJz5lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMTAwMTk5LmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTAnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTEyJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9S
ZWdFeHAvcmVncmVzcy0xMDAxOTkuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy0xMDAxOTkuanM8
L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMSc+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTEzJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBj
b2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgog
Q29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1bNDU2Ml0gLi9lY21hXzMvUmVnRXhw
L3JlZ3Jlc3MtMTAwMTk5LmpzIGxpbmUgNDg6IFN5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIg
ZXhwcmVzc2lvbjogbWlzc2luZyB0ZXJtaW5hdGluZyBdIGZvciBjaGFyYWN0ZXIgY2xhc3M8YnI+
CitbMjYwNzhdIC4vZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTEwMDE5OS5qcyBsaW5lIDQ4OiBTeW50
YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG1pc3NpbmcgdGVybWluYXRpbmcg
XSBmb3IgY2hhcmFjdGVyIGNsYXNzPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMTIn
PjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNt
YV8zL1JlZ0V4cC9yZWdyZXNzLTE4ODIwNi5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTE4ODIw
Ni5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTE4ODIwNicgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIg
MTg4MjA2PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTEnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxMyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTEzJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9S
ZWdFeHAvcmVncmVzcy0xODgyMDYuanMnPmVjbWFfMy9SZWdFeHAvcmVncmVzcy0xODgyMDYuanM8
L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3df
YnVnLmNnaT9pZD0xODgyMDYnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDE4ODIw
NjwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTEyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlMTQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBJbnZhbGlkIHVzZSBv
ZiByZWdleHAgcXVhbnRpZmllcnMgc2hvdWxkIGdlbmVyYXRlIFN5bnRheEVycm9yczxicj4KIEZh
aWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVz
dCgpXSBTZWN0aW9uIDMgb2YgdGVzdCAtPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9t
IHRlc3QoKV0gRXhwZWN0ZWQgdmFsdWUgJ1N5bnRheEVycm9yJywgQWN0dWFsIHZhbHVlICdEaWQg
bm90IGdlbmVyYXRlIEFOWSBlcnJvciEhISc8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZy
b20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxMyc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvUmVnRXhw
L3JlZ3Jlc3MtMjA5OTE5LmpzJz5lY21hXzMvUmVnRXhwL3JlZ3Jlc3MtMjA5OTE5LmpzPC9hPiBm
YWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5OTE5JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMDk5MTk8L2E+
PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUxMic+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTE0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTQnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1JlZ0V4cC9yZWdy
ZXNzLTIwOTkxOS5qcyc+ZWNtYV8zL1JlZ0V4cC9yZWdyZXNzLTIwOTkxOS5qczwvYT4gZmFpbGVk
PC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTIwOTkxOScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMjA5OTE5PC9hPjxicj4K
KyBbIDxhIGhyZWY9JyNmYWlsdXJlMTMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I2ZhaWx1cmUxNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBv
ZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgcmVnZXhwIHN1Ym1hdGNo
ZXMgd2l0aCBxdWFudGlmaWVyczxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4g
RkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDEgb2YgdGVzdCAtPGJyPgpA
QCAtMjMxLDM5ICsyNTEsMzkgQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlM
RUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIEFjdHVhbDogWyIxLjAwMCwwMCIsICIiLCAiLDAw
Il08YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxi
cj4KLTxhIG5hbWU9J2ZhaWx1cmUxNCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvU3RhdGVtZW50cy9yZWdyZXNzLTE5NDM2NC5qcyc+
ZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgot
IFsgPGEgaHJlZj0nI2ZhaWx1cmUxMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTE1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMTUnPjwvYT48ZGQ+PGI+VGVzdGNhc2Ug
PGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vZWNtYV8zL1N0YXRlbWVudHMvcmVncmVz
cy0xOTQzNjQuanMnPmVjbWFfMy9TdGF0ZW1lbnRzL3JlZ3Jlc3MtMTk0MzY0LmpzPC9hPiBmYWls
ZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTQnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBn
b3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRl
IHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotWzQ1ODhdIC4vZWNtYV8zL1N0YXRlbWVudHMvcmVn
cmVzcy0xOTQzNjQuanMgbGluZSAxOiBTeW50YXhFcnJvcjogUGFyc2UgZXJyb3I8YnI+CitbMjYx
MDRdIC4vZWNtYV8zL1N0YXRlbWVudHMvcmVncmVzcy0xOTQzNjQuanMgbGluZSAxOiBTeW50YXhF
cnJvcjogUGFyc2UgZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUxNSc+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMv
VW5pY29kZS91Yy0wMDEuanMnPmVjbWFfMy9Vbmljb2RlL3VjLTAwMS5qczwvYT4gZmFpbGVkPC9i
PiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NjEwJyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAyMzYxMDwvYT48YnI+Ci0gWyA8
YSBocmVmPScjZmFpbHVyZTE0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWls
dXJlMTYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFn
ZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUxNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0
YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9lY21hXzMvVW5pY29kZS91Yy0wMDEuanMnPmVj
bWFfMy9Vbmljb2RlL3VjLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVn
emlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjEwJyB0YXJnZXQ9J290aGVyX3dp
bmRvdyc+QnVnIE51bWJlciAyMzYxMDwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTE1Jz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTcnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4g
U1RBVFVTOiBVbmljb2RlIGZvcm1hdC1jb250cm9sIGNoYXJhY3RlciAoQ2F0ZWdvcnkgQ2YpIHRl
c3QuPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIFVuaWNvZGUgZm9ybWF0LWNvbnRyb2wgY2hhcmFjdGVyIHRlc3QgKENh
dGVnb3J5IENmLik8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBl
Y3RlZCB2YWx1ZSAnbm8gZXJyb3InLCBBY3R1YWwgdmFsdWUgJ25v4oCOIGVycm9yJzxicj4KIC0t
PiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFt
ZT0nZmFpbHVyZTE2Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2VjbWFfMy9Vbmljb2RlL3VjLTAwMi5qcyc+ZWNtYV8zL1VuaWNvZGUvdWMtMDAy
LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM2MTMnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDIz
NjEzPC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmUxNyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTE3Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2VjbWFfMy9Vbmlj
b2RlL3VjLTAwMi5qcyc+ZWNtYV8zL1VuaWNvZGUvdWMtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxh
IGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MTMn
IHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDIzNjEzPC9hPjxicj4KKyBbIDxhIGhy
ZWY9JyNmYWlsdXJlMTYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUx
OCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFVuaWNvZGUgbm9uLWJyZWFraW5nIHNwYWNlIGNoYXJh
Y3RlciB0ZXN0Ljxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITog
W3JlcG9ydGVkIGZyb20gdGVzdCgpXSBVbmljb2RlIG5vbi1icmVha2luZyBzcGFjZSBjaGFyYWN0
ZXIgcmVnZXhwIHRlc3QuPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0g
RXhwZWN0ZWQgdmFsdWUgJzAnLCBBY3R1YWwgdmFsdWUgJy0xJzxicj4KIC0tPiBGQUlMRUQhOiBb
cmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTE3
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV8yL09iamVjdHMvdG9TdHJpbmctMDAxLmpzJz5qczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5q
czwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTE2Jz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMTgnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUx
OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9q
czFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qcyc+anMxXzIvT2JqZWN0cy90b1N0cmluZy0wMDEu
anM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxNyc+UHJldmlvdXMg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTE5Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhp
dCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJy
PgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CiAtLT4gSlMxXzIgT2JqZWN0LnRv
U3RyaW5nKCk8YnI+Ci1bNDYwOV0gLi9qczFfMi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qcyBsaW5l
IDEwMzogVHlwZUVycm9yOiBPYmplY3QgL15ceyguKilcfSQvIChyZXN1bHQgb2YgZXhwcmVzc2lv
biAvXlx7KC4qKVx9JC8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KK1syNjEyNV0gLi9qczFf
Mi9PYmplY3RzL3RvU3RyaW5nLTAwMS5qcyBsaW5lIDEwMzogVHlwZUVycm9yOiBPYmplY3QgL15c
eyguKilcfSQvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvXlx7KC4qKVx9JC8pIGRvZXMgbm90IGFs
bG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTE4Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9u
L0Z1bmN0aW9uX29iamVjdC5qcyc+anMxXzIvZnVuY3Rpb24vRnVuY3Rpb25fb2JqZWN0LmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMTcnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUxOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTE5Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8y
L2Z1bmN0aW9uL0Z1bmN0aW9uX29iamVjdC5qcyc+anMxXzIvZnVuY3Rpb24vRnVuY3Rpb25fb2Jq
ZWN0LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMTgnPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMCc+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pjxicj4KIEZh
aWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gZi5uYW1lID0gdW5kZWZpbmVkIEZBSUxFRCEg
ZXhwZWN0ZWQ6IGFfdGVzdF9mdW5jdGlvbjxicj4KQEAgLTI3MSw4ICsyOTEsOCBAQCBGYWlsdXJl
IG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IChuZXcgRnVuY3Rpb24oKSkubmFtZSA9IHVuZGVmaW5l
ZCBGQUlMRUQhIGV4cGVjdGVkOiBhbm9ueW1vdXM8YnI+CiB9IEZBSUxFRCEgZXhwZWN0ZWQ6IDxi
cj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTE5Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL2Z1bmN0aW9uLTAw
MS1uLmpzJz5qczFfMi9mdW5jdGlvbi9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTE4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlMjAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyMCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9mdW5j
dGlvbi0wMDEtbi5qcyc+anMxXzIvZnVuY3Rpb24vZnVuY3Rpb24tMDAxLW4uanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUxOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjZmFpbHVyZTIxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5
X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDMsIGdv
dCAwPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUg
dGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CkBAIC0yODAsMTYgKzMwMCwxNiBAQCBPSy48YnI+CiAt
LT4gZnVuY3Rpb24tMDAxLmpzIGZ1bmN0aW9ucyBub3Qgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMg
YXJlIGVycm9ycyBpbiB2ZXJzaW9uIDEyMCBhbmQgaGlnaGVyPGJyPgogLS0+IGV2YWwoImZ1bmN0
aW9uIGYoKXt9ZnVuY3Rpb24gZygpe30iKSA9IHVuZGVmaW5lZCBGQUlMRUQhIGV4cGVjdGVkOiBl
cnJvcjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTIwJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1bmN0aW9uL3JlZ2V4
cGFyZy0xLmpzJz5qczFfMi9mdW5jdGlvbi9yZWdleHBhcmctMS5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTE5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlMjEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyMSc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9mdW5jdGlvbi9yZWdl
eHBhcmctMS5qcyc+anMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTIyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJy
PgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNh
c2Ugb3V0cHV0IHdhczo8YnI+CiAtLT4gSlNfMS4yIFRoZSB2YXJpYWJsZSBzdGF0bWVudDxicj4K
LVs0NjIyXSAuL2pzMV8yL2Z1bmN0aW9uL3JlZ2V4cGFyZy0xLmpzIGxpbmUgODA6IFR5cGVFcnJv
cjogT2JqZWN0IC9hYmMvIChyZXN1bHQgb2YgZXhwcmVzc2lvbiB4KSBkb2VzIG5vdCBhbGxvdyBj
YWxscy48YnI+CitbMjYxMzhdIC4vanMxXzIvZnVuY3Rpb24vcmVnZXhwYXJnLTEuanMgbGluZSA4
MDogVHlwZUVycm9yOiBPYmplY3QgL2FiYy8gKHJlc3VsdCBvZiBleHByZXNzaW9uIHgpIGRvZXMg
bm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTIxJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1
bmN0aW9uL3Rvc3RyaW5nLTEuanMnPmpzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTEuanM8L2E+IGZh
aWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMCc+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTIyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjInPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvZnVu
Y3Rpb24vdG9zdHJpbmctMS5qcyc+anMxXzIvZnVuY3Rpb24vdG9zdHJpbmctMS5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTIxJz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlMjMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2Vz
IHdlcmU6PGJyPgogfSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+CkBAIC0yOTgsOCArMzE4LDggQEAg
RmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIH0gRkFJTEVEISBleHBlY3RlZDogPGJyPgogfSBG
QUlMRUQhIGV4cGVjdGVkOiA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyMic+PC9h
PjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9m
dW5jdGlvbi90b3N0cmluZy0yLmpzJz5qczFfMi9mdW5jdGlvbi90b3N0cmluZy0yLmpzPC9hPiBm
YWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjEnPlByZXZpb3VzIEZhaWx1cmU8
L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyMyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0
aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTIzJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL2Z1
bmN0aW9uL3Rvc3RyaW5nLTIuanMnPmpzMV8yL2Z1bmN0aW9uL3Rvc3RyaW5nLTIuanM8L2E+IGZh
aWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMic+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTI0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdl
cyB3ZXJlOjxicj4KIH0gRkFJTEVEISBleHBlY3RlZDogPGJyPgpAQCAtMzEyLDIyICszMzIsMjIg
QEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIH0gRkFJTEVEISBleHBlY3RlZDogPGJyPgog
fSBGQUlMRUQhIGV4cGVjdGVkOiA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyMyc+
PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFf
Mi9vcGVyYXRvci9lcXVhbGl0eS5qcyc+anMxXzIvb3BlcmF0b3IvZXF1YWxpdHkuanM8L2E+IGZh
aWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyMic+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTI0Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjQnPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvb3Bl
cmF0b3IvZXF1YWxpdHkuanMnPmpzMV8yL29wZXJhdG9yL2VxdWFsaXR5LmpzPC9hPiBmYWlsZWQ8
L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMjMnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI2ZhaWx1cmUyNSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90
b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2Vy
ZTo8YnI+CiAtLT4gKG5ldyBTdHJpbmcoJ3gnKSA9PSAneCcpICAgICAgICAgICAgICAgICAgPSB0
cnVlIEZBSUxFRCEgZXhwZWN0ZWQ6IGZhbHNlPGJyPgogLS0+ICgneCcgPT0gbmV3IFN0cmluZygn
eCcpKSAgICAgICAgICAgICAgICAgID0gdHJ1ZSBGQUlMRUQhIGV4cGVjdGVkOiBmYWxzZTxicj4K
IDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTI0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9SZWdFeHBfbGFzdEluZGV4
LmpzJz5qczFfMi9yZWdleHAvUmVnRXhwX2xhc3RJbmRleC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+
Ci0gWyA8YSBocmVmPScjZmFpbHVyZTIzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlMjUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUyNSc+PC9hPjxkZD48Yj5UZXN0Y2Fz
ZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX2xh
c3RJbmRleC5qcyc+anMxXzIvcmVnZXhwL1JlZ0V4cF9sYXN0SW5kZXguanM8L2E+IGZhaWxlZDwv
Yj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjZmFpbHVyZTI2Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3Rv
cCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJl
Ojxicj4KIC0tPiByZT0veC4vZzsgcmUubGFzdEluZGV4PTQ7IHJlLmV4ZWMoJ3h5YWJjZHhhJykg
PSB4YSBGQUlMRUQhIGV4cGVjdGVkOiBbInhhIl08YnI+CiAtLT4gcmUuZXhlYygneHlhYmNkZWYn
KSA9IHh5IEZBSUxFRCEgZXhwZWN0ZWQ6IFsieHkiXTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTI1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV8yL3JlZ2V4cC9SZWdFeHBfbXVsdGlsaW5lLmpzJz5qczFfMi9yZWdleHAvUmVn
RXhwX211bHRpbGluZS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVy
ZTI0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMjYnPk5leHQgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxh
IG5hbWU9J2ZhaWx1cmUyNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZS5qcyc+anMxXzIvcmVn
ZXhwL1JlZ0V4cF9tdWx0aWxpbmUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0n
I2ZhaWx1cmUyNSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI3Jz5O
ZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08
YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAobXVsdGlsaW5l
ID09IHRydWUpICcxMjNcbjQ1NicubWF0Y2goL140Li4vKSA9IG51bGwgRkFJTEVEISBleHBlY3Rl
ZDogNDU2PGJyPgpAQCAtMzM2LDggKzM1Niw4IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CiAtLT4gKG11bHRpbGluZSA9PSB0cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0Jy5tYXRjaCgvYS4u
JC9nKSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiAtLT4gKG11
bHRpbGluZSA9PSB0cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0Jy5tYXRjaChuZXcgUmVnRXhwKCdh
Li4kJywnZycpKSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiA8
L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUyNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvUmVnRXhwX211bHRpbGluZV9h
c19hcnJheS5qcyc+anMxXzIvcmVnZXhwL1JlZ0V4cF9tdWx0aWxpbmVfYXNfYXJyYXkuanM8L2E+
IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNSc+UHJldmlvdXMgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI3Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0n
I3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlMjcnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIv
cmVnZXhwL1JlZ0V4cF9tdWx0aWxpbmVfYXNfYXJyYXkuanMnPmpzMV8yL3JlZ2V4cC9SZWdFeHBf
bXVsdGlsaW5lX2FzX2FycmF5LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNm
YWlsdXJlMjYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyOCc+TmV4
dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJy
PgogPHR0Pjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gKFsnJConXSA9PSB0
cnVlKSAnMTIzXG40NTYnLm1hdGNoKC9eNC4uLykgPSBudWxsIEZBSUxFRCEgZXhwZWN0ZWQ6IDQ1
Njxicj4KQEAgLTM0Niw1NCArMzY2LDU0IEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAt
LT4gKFsnJConXSA9PSB0cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0Jy5tYXRjaCgvYS4uJC9nKSA9
IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiAtLT4gKFsnJConXSA9
PSB0cnVlKSAnYTExXG5hMjJcbmEyM1xuYTI0Jy5tYXRjaChuZXcgUmVnRXhwKCdhLi4kJywnZycp
KSA9IGEyNCBGQUlMRUQhIGV4cGVjdGVkOiBhMTEsYTIyLGEyMyxhMjQ8YnI+CiA8L3R0Pjxicj4K
LTxhIG5hbWU9J2ZhaWx1cmUyNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvYmVnaW5MaW5lLmpzJz5qczFfMi9yZWdleHAv
YmVnaW5MaW5lLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjYn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyOCc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTI4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9iZWdpbkxpbmUuanMnPmpzMV8yL3JlZ2V4cC9iZWdpbkxp
bmUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmUyNyc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTI5Jz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFp
bHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIDEyM3h5eicubWF0Y2gobmV3IFJlZ0V4cCgnXlxkKycp
KSA9IG51bGwgRkFJTEVEISBleHBlY3RlZDogMTIzPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdm
YWlsdXJlMjgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vanMxXzIvcmVnZXhwL2NvbXBpbGUuanMnPmpzMV8yL3JlZ2V4cC9jb21waWxlLmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjcnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUyOSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTI5Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8y
L3JlZ2V4cC9jb21waWxlLmpzJz5qczFfMi9yZWdleHAvY29tcGlsZS5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTI4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlMzAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KIC0tPiBFeGVjdXRpbmcgc2NyaXB0OiBjb21waWxlLmpzPGJy
PgogLS0+IEFzIGRlc2NyaWJlZCBpbiBOZXRzY2FwZSBkb2MgIldoYXRzIG5ldyBpbiBKYXZhU2Ny
aXB0IDEuMiIgUmVnRXhwOiBjb21waWxlPGJyPgotWzQ2NDldIC4vanMxXzIvcmVnZXhwL2NvbXBp
bGUuanMgbGluZSA0MzogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHBy
ZXNzaW9uIHJlZ3VsYXJFeHByZXNzaW9uLmNvbXBpbGUpIGlzIG5vdCBvYmplY3QuPGJyPgorWzI2
MTY1XSAuL2pzMV8yL3JlZ2V4cC9jb21waWxlLmpzIGxpbmUgNDM6IFR5cGVFcnJvcjogVmFsdWUg
dW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiByZWd1bGFyRXhwcmVzc2lvbi5jb21waWxl
KSBpcyBub3Qgb2JqZWN0Ljxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTI5Jz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3Jl
Z2V4cC9lbmRMaW5lLmpzJz5qczFfMi9yZWdleHAvZW5kTGluZS5qczwvYT4gZmFpbGVkPC9iPiA8
YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTI4Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyNmYWlsdXJlMzAnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5U
b3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzMCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi9yZWdleHAvZW5kTGlu
ZS5qcyc+anMxXzIvcmVnZXhwL2VuZExpbmUuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEg
aHJlZj0nI2ZhaWx1cmUyOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVy
ZTMxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8
L2E+IF08YnI+CiA8dHQ+PGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIHh5eicubWF0
Y2gobmV3IFJlZ0V4cCgnXGQrJCcpKSA9IG51bGwgRkFJTEVEISBleHBlY3RlZDogODkwPGJyPgog
PC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlMzAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFy
Z2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtNjM1OS5qcyc+
anMxXzIvcmVnZXhwL3JlZ3Jlc3MtNjM1OS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRw
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPWh0dHA6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM1OScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1
ZyBOdW1iZXIgaHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02MzU5
PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMjknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI2ZhaWx1cmUzMSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90
b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTMxJz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9y
ZWdyZXNzLTYzNTkuanMnPmpzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanM8L2E+IGZhaWxlZDwv
Yj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1o
dHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTYzNTknIHRhcmdldD0n
b3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjM1OTwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTMwJz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzInPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBl
eGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8
YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KIC0tPiBCVUdOVU1CRVI6IGh0
dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM1OTxicj4KLVs0NjY1
XSAuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanMgbGluZSA1NjogVHlwZUVycm9yOiBPYmpl
Y3QgLyhhKiliXDErLyAocmVzdWx0IG9mIGV4cHJlc3Npb24gLyhhKiliXDErLykgZG9lcyBub3Qg
YWxsb3cgY2FsbHMuPGJyPgorWzI2MTgxXSAuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTYzNTkuanMg
bGluZSA1NjogVHlwZUVycm9yOiBPYmplY3QgLyhhKiliXDErLyAocmVzdWx0IG9mIGV4cHJlc3Np
b24gLyhhKiliXDErLykgZG9lcyBub3QgYWxsb3cgY2FsbHMuPGJyPgogPC90dD48YnI+Ci08YSBu
YW1lPSdmYWlsdXJlMzEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qcyc+anMxXzIvcmVnZXhwL3Jl
Z3Jlc3MtOTE0MS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPWh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTE0MScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgaHR0cDov
L2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQxPC9hPjxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlMzAnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmUzMic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTMyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV8yL3JlZ2V4cC9yZWdyZXNzLTkxNDEuanMn
PmpzMV8yL3JlZ2V4cC9yZWdyZXNzLTkxNDEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0
cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD1odHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxNDEnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5C
dWcgTnVtYmVyIGh0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0
MTwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTMxJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlMzMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290
IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0
ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KIC0tPiBCVUdOVU1CRVI6IGh0dHA6Ly9idWd6aWxsYS5t
b3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE0MTxicj4KLVs0NjY2XSAuL2pzMV8yL3JlZ2V4
cC9yZWdyZXNzLTkxNDEuanMgbGluZSA3MzogVHlwZUVycm9yOiBPYmplY3QgLyg/Onh4fHgpKi8g
KHJlc3VsdCBvZiBleHByZXNzaW9uIC8oPzp4eHx4KSovKSBkb2VzIG5vdCBhbGxvdyBjYWxscy48
YnI+CitbMjYxODJdIC4vanMxXzIvcmVnZXhwL3JlZ3Jlc3MtOTE0MS5qcyBsaW5lIDczOiBUeXBl
RXJyb3I6IE9iamVjdCAvKD86eHh8eCkqLyAocmVzdWx0IG9mIGV4cHJlc3Npb24gLyg/Onh4fHgp
Ki8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVy
ZTMyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV8yL3JlZ2V4cC9zaW1wbGVfZm9ybS5qcyc+anMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpz
PC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMzEnPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzMyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTMz
Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pz
MV8yL3JlZ2V4cC9zaW1wbGVfZm9ybS5qcyc+anMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzPC9h
PiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzInPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzNCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgogLS0+IEV4ZWN1dGluZyBzY3JpcHQ6IHNp
bXBsZV9mb3JtLmpzPGJyPgogLS0+IEFzIGRlc2NyaWJlZCBpbiBOZXRzY2FwZSBkb2MgIldoYXRz
IG5ldyBpbiBKYXZhU2NyaXB0IDEuMiIgUmVnRXhwOiBzaW1wbGUgZm9ybTxicj4KLVs0NjY3XSAu
L2pzMV8yL3JlZ2V4cC9zaW1wbGVfZm9ybS5qcyBsaW5lIDQzOiBUeXBlRXJyb3I6IE9iamVjdCAv
WzAtOV17M30vIChyZXN1bHQgb2YgZXhwcmVzc2lvbiAvWzAtOV17M30vKSBkb2VzIG5vdCBhbGxv
dyBjYWxscy48YnI+CitbMjYxODNdIC4vanMxXzIvcmVnZXhwL3NpbXBsZV9mb3JtLmpzIGxpbmUg
NDM6IFR5cGVFcnJvcjogT2JqZWN0IC9bMC05XXszfS8gKHJlc3VsdCBvZiBleHByZXNzaW9uIC9b
MC05XXszfS8pIGRvZXMgbm90IGFsbG93IGNhbGxzLjxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0n
ZmFpbHVyZTMzJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBo
cmVmPScuL2pzMV8yL3JlZ2V4cC9zdHJpbmdfc3BsaXQuanMnPmpzMV8yL3JlZ2V4cC9zdHJpbmdf
c3BsaXQuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmUzMic+UHJl
dmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM0Jz5OZXh0IEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdm
YWlsdXJlMzQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhy
ZWY9Jy4vanMxXzIvcmVnZXhwL3N0cmluZ19zcGxpdC5qcyc+anMxXzIvcmVnZXhwL3N0cmluZ19z
cGxpdC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTMzJz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzUnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD48YnI+CiBG
YWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+ICdhYmMnLnNwbGl0KC9bYS16XS8pID0gLCws
IEZBSUxFRCEgZXhwZWN0ZWQ6ICwsPGJyPgpAQCAtNDAxLDIyICs0MjEsMjIgQEAgRmFpbHVyZSBt
ZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiAnYWJjJy5zcGxpdChuZXcgUmVnRXhwKCdbYS16XScpKSA9
ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KIC0tPiAnYWJjJy5zcGxpdChuZXcgUmVnRXhw
KCdbYS16XScpKSA9ICwsLCBGQUlMRUQhIGV4cGVjdGVkOiAsLDxicj4KIDwvdHQ+PGJyPgotPGEg
bmFtZT0nZmFpbHVyZTM0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV8yL3ZlcnNpb24xMjAvYm9vbGVhbi0wMDEuanMnPmpzMV8yL3ZlcnNp
b24xMjAvYm9vbGVhbi0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgotIFsgPGEgaHJlZj0nI2Zh
aWx1cmUzMyc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTM1Jz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
Cis8YSBuYW1lPSdmYWlsdXJlMzUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzIvdmVyc2lvbjEyMC9ib29sZWFuLTAwMS5qcyc+anMxXzIv
dmVyc2lvbjEyMC9ib29sZWFuLTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVm
PScjZmFpbHVyZTM0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzYn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KIDx0dD48YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IG5ldyBCb29s
ZWFuKGZhbHNlKSA9IHRydWUgRkFJTEVEISBleHBlY3RlZDogZmFsc2U8YnI+CiA8L3R0Pjxicj4K
LTxhIG5hbWU9J2ZhaWx1cmUzNSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIwL3JlZ3Jlc3MtOTk2NjMuanMnPmpzMV8y
L3ZlcnNpb24xMjAvcmVncmVzcy05OTY2My5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBo
cmVmPScjZmFpbHVyZTM0Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
MzYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzNic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJn
ZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMi92ZXJzaW9uMTIwL3JlZ3Jlc3MtOTk2NjMu
anMnPmpzMV8yL3ZlcnNpb24xMjAvcmVncmVzcy05OTY2My5qczwvYT4gZmFpbGVkPC9iPiA8YnI+
CisgWyA8YSBocmVmPScjZmFpbHVyZTM1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlMzcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBSZWdyZXNzaW9uIHRlc3QgZm9yIEJ1
Z3ppbGxhIGJ1ZyA5OTY2Mzxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gU2Vj
dGlvbiAxIG9mIHRlc3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxF
RCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25seSIgZXJyb3I8YnI+CiAtLT4gU2VjdGlvbiAyIG9mIHRl
c3QgLSBnb3QgRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxFRCEgZXhwZWN0ZWQ6
IGEgInJlYWQtb25seSIgZXJyb3I8YnI+CiAtLT4gU2VjdGlvbiAzIG9mIHRlc3QgLSBnb3QgRXJy
b3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGl0IEZBSUxFRCEgZXhwZWN0ZWQ6IGEgInJlYWQtb25s
eSIgZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzNic+PC9hPjxkZD48Yj5U
ZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMy9TY3JpcHQvZnVu
Y3Rpb24tMDAxLW4uanMnPmpzMV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVk
PC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxMDI3ODwvYT48YnI+Ci0g
WyA8YSBocmVmPScjZmFpbHVyZTM1Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNm
YWlsdXJlMzcnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2Yg
UGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmUzNyc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfMy9TY3JpcHQvZnVuY3Rpb24tMDAx
LW4uanMnPmpzMV8zL1NjcmlwdC9mdW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBo
cmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0
YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciAxMDI3ODwvYT48YnI+CisgWyA8YSBocmVm
PScjZmFpbHVyZTM2Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzgn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMywgZ290IDA8YnI+CiBUZXN0Y2FzZSB0ZXJt
aW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxi
cj4KQEAgLTQyNSwxNiArNDQ1LDE2IEBAIE9LLjxicj4KIC0tPiBmdW5jdGlvbi0wMDEuanMgZnVu
Y3Rpb25zIG5vdCBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyBhcmUgZXJyb3JzIGluIHZlcnNpb24g
MTIwIGFuZCBoaWdoZXI8YnI+CiAtLT4gZXZhbCgiZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKCl7
fSIpID0gdW5kZWZpbmVkIEZBSUxFRCEgZXhwZWN0ZWQ6IGVycm9yPGJyPgogPC90dD48YnI+Ci08
YSBuYW1lPSdmYWlsdXJlMzcnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93
aW5kb3cnIGhyZWY9Jy4vanMxXzMvU2NyaXB0L3NjcmlwdC0wMDEuanMnPmpzMV8zL1NjcmlwdC9z
Y3JpcHQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMzYn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmUzOCc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTM4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzJz5qczFfMy9TY3JpcHQvc2NyaXB0
LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTM3Jz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzknPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3Rl
ZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFs
IDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KIC0tPiBzY3JpcHQtMDAx
IE5hdGl2ZVNjcmlwdDxicj4KLVs0NjkzXSAuL2pzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzIGxp
bmUgMTMzOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgor
WzI2MjA5XSAuL2pzMV8zL1NjcmlwdC9zY3JpcHQtMDAxLmpzIGxpbmUgMTMzOiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgogPC90dD48YnI+Ci08YSBuYW1l
PSdmYWlsdXJlMzgnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cn
IGhyZWY9Jy4vanMxXzMvcmVncmVzcy9mdW5jdGlvbi0wMDEtbi5qcyc+anMxXzMvcmVncmVzcy9m
dW5jdGlvbi0wMDEtbi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEu
bW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+
QnVnIE51bWJlciAxMDI3ODwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTM3Jz5QcmV2aW91
cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlMzknPk5leHQgRmFpbHVyZTwvYT4gfCA8
YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1
cmUzOSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfMy9yZWdyZXNzL2Z1bmN0aW9uLTAwMS1uLmpzJz5qczFfMy9yZWdyZXNzL2Z1bmN0aW9u
LTAwMS1uLmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNzgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVt
YmVyIDEwMjc4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlMzgnPlByZXZpb3VzIEZhaWx1
cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29k
ZSAzLCBnb3QgMDxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENv
bXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgpAQCAtNDQzLDk3ICs0NjMsOTcgQEAgT0su
PGJyPgogLS0+IGZ1bmN0aW9uLTAwMS5qcyBmdW5jdGlvbnMgbm90IHNlcGFyYXRlZCBieSBzZW1p
Y29sb25zIGFyZSBlcnJvcnMgaW4gdmVyc2lvbiAxMjAgYW5kIGhpZ2hlcjxicj4KIC0tPiBldmFs
KCJmdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoKXt9IikgPSB1bmRlZmluZWQgRkFJTEVEISBleHBl
Y3RlZDogZXJyb3I8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmUzOSc+PC9hPjxkZD48
Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRp
b25zL2NhdGNoZ3VhcmQtMDAxLmpzJz5qczFfNS9FeGNlcHRpb25zL2NhdGNoZ3VhcmQtMDAxLmpz
PC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlMzgnPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgotPHR0PkV4cGVjdGVkIGV4aXQg
Y29kZSAwLCBnb3QgMzxicj4KLVRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4K
LUNvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotVGVzdGNhc2UgcHJvZHVjZWQgbm8g
b3V0cHV0ITwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTQwJz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hn
dWFyZC0wMDIuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDIuanM8L2E+IGZhaWxl
ZDwvYj4gPGJyPgorPGEgbmFtZT0nZmFpbHVyZTQwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0w
MDEuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDEuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmUzOSc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTQxJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJy
PgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNh
c2Ugb3V0cHV0IHdhczo8YnI+CiBUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+
Ci08YSBuYW1lPSdmYWlsdXJlNDEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMy5qcyc+anMx
XzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMy5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cis8YSBu
YW1lPSdmYWlsdXJlNDEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzUvRXhjZXB0aW9ucy9jYXRjaGd1YXJkLTAwMi5qcyc+anMxXzUvRXhj
ZXB0aW9ucy9jYXRjaGd1YXJkLTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CiAgWyA8YSBocmVm
PScjZmFpbHVyZTQwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNDIn
Pk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4g
XTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBUZXN0Y2FzZSB0ZXJt
aW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2FzOjxi
cj4KIFRlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1
cmU0Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0n
Li9qczFfNS9FeGNlcHRpb25zL2VycnN0YWNrLTAwMS5qcyc+anMxXzUvRXhjZXB0aW9ucy9lcnJz
dGFjay0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorPGEgbmFtZT0nZmFpbHVyZTQyJz48L2E+
PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L0V4
Y2VwdGlvbnMvY2F0Y2hndWFyZC0wMDMuanMnPmpzMV81L0V4Y2VwdGlvbnMvY2F0Y2hndWFyZC0w
MDMuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0MSc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQzJz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQg
ZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAw
PGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1bNDczOF0gLi9qczFfNS9F
eGNlcHRpb25zL2VycnN0YWNrLTAwMS5qcyBsaW5lIDI0NzogVHlwZUVycm9yOiBVbmRlZmluZWQg
dmFsdWU8YnI+Ci08L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU0Myc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL3Jl
Z3Jlc3MtNTA0NDcuanMnPmpzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qczwvYT4gZmFp
bGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTUwNDQ3JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA1MDQ0NzwvYT48YnI+
CitUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJl
NDMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4v
anMxXzUvRXhjZXB0aW9ucy9lcnJzdGFjay0wMDEuanMnPmpzMV81L0V4Y2VwdGlvbnMvZXJyc3Rh
Y2stMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDInPlBy
ZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0NCc+TmV4dCBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVj
dGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWdu
YWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotLS0+IEJVR05VTUJF
UjogNTA0NDc8YnI+Ci0tLT4gU1RBVFVTOiBUZXN0IChub24tRUNNQSkgRXJyb3Igb2JqZWN0IHBy
b3BlcnRpZXMgZmlsZU5hbWUsIGxpbmVOdW1iZXI8YnI+Ci1bNDczOV0gLi9qczFfNS9FeGNlcHRp
b25zL3JlZ3Jlc3MtNTA0NDcuanMgbGluZSA2NTogVHlwZUVycm9yOiBVbmRlZmluZWQgdmFsdWU8
YnI+CitbMjYyNTRdIC4vanMxXzUvRXhjZXB0aW9ucy9lcnJzdGFjay0wMDEuanMgbGluZSAyNDc6
IFR5cGVFcnJvcjogVW5kZWZpbmVkIHZhbHVlPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWls
dXJlNDQnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9
Jy4vanMxXzUvR2V0U2V0L2dldHNldC0wMDEuanMnPmpzMV81L0dldFNldC9nZXRzZXQtMDAxLmpz
PC9hPiBmYWlsZWQ8L2I+IDxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0NCc+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9FeGNlcHRpb25zL3Jl
Z3Jlc3MtNTA0NDcuanMnPmpzMV81L0V4Y2VwdGlvbnMvcmVncmVzcy01MDQ0Ny5qczwvYT4gZmFp
bGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTUwNDQ3JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA1MDQ0NzwvYT48YnI+
CiAgWyA8YSBocmVmPScjZmFpbHVyZTQzJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9
JyNmYWlsdXJlNDUnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Ag
b2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CiBU
ZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0Y2FzZSBv
dXRwdXQgd2FzOjxicj4KLVRlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0Pjxicj4KLTxh
IG5hbWU9J2ZhaWx1cmU0NSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dp
bmRvdycgaHJlZj0nLi9qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMi5qcyc+anMxXzUvR2V0U2V0L2dl
dHNldC0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorLS0+IEJVR05VTUJFUjogNTA0NDc8YnI+
CistLT4gU1RBVFVTOiBUZXN0IChub24tRUNNQSkgRXJyb3Igb2JqZWN0IHByb3BlcnRpZXMgZmls
ZU5hbWUsIGxpbmVOdW1iZXI8YnI+CitbMjYyNTVdIC4vanMxXzUvRXhjZXB0aW9ucy9yZWdyZXNz
LTUwNDQ3LmpzIGxpbmUgNjU6IFR5cGVFcnJvcjogVW5kZWZpbmVkIHZhbHVlPGJyPgorPC90dD48
YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDUnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dldHNldC0wMDEuanMnPmpzMV81L0dl
dFNldC9nZXRzZXQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhyZWY9JyNmYWls
dXJlNDQnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0Nic+TmV4dCBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgog
PHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQg
d2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgogVGVz
dGNhc2UgcHJvZHVjZWQgbm8gb3V0cHV0ITwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTQ2Jz48
L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81
L0dldFNldC9nZXRzZXQtMDAzLmpzJz5qczFfNS9HZXRTZXQvZ2V0c2V0LTAwMy5qczwvYT4gZmFp
bGVkPC9iPiA8YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDYnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEg
dGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvR2V0U2V0L2dldHNldC0wMDIuanMn
PmpzMV81L0dldFNldC9nZXRzZXQtMDAyLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KICBbIDxhIGhy
ZWY9JyNmYWlsdXJlNDUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU0
Nyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRl
cm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6
PGJyPgogVGVzdGNhc2UgcHJvZHVjZWQgbm8gb3V0cHV0ITwvdHQ+PGJyPgotPGEgbmFtZT0nZmFp
bHVyZTQ3Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVm
PScuL2pzMV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMS5qcyc+anMxXzUvT2JqZWN0L3JlZ3Jl
c3MtOTA1OTYtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKzxhIG5hbWU9J2ZhaWx1cmU0Nyc+
PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFf
NS9HZXRTZXQvZ2V0c2V0LTAwMy5qcyc+anMxXzUvR2V0U2V0L2dldHNldC0wMDMuanM8L2E+IGZh
aWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0Nic+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTQ4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAs
IGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxl
dGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1bNDc1NF0gLi9qczFfNS9PYmplY3QvcmVncmVz
cy05MDU5Ni0wMDEuanMgbGluZSA0ODogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3Vs
dCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJjZSkgaXMgbm90IG9iamVjdC48YnI+Ci08L3R0Pjxi
cj4KLTxhIG5hbWU9J2ZhaWx1cmU0OCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0wMDIuanMnPmpz
MV81L09iamVjdC9yZWdyZXNzLTkwNTk2LTAwMi5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CitUZXN0
Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Cis8YSBuYW1lPSdmYWlsdXJlNDgnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUv
T2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAxLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05MDU5Ni0w
MDEuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0nI2ZhaWx1cmU0Nyc+UHJldmlv
dXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTQ5Jz5OZXh0IEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQg
ZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAw
PGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1bNDc1NV0gLi9qczFfNS9P
YmplY3QvcmVncmVzcy05MDU5Ni0wMDIuanMgbGluZSA0ODogUmVmZXJlbmNlRXJyb3I6IENhbid0
IGZpbmQgdmFyaWFibGU6IHVuZXZhbDxicj4KK1syNjI3MF0gLi9qczFfNS9PYmplY3QvcmVncmVz
cy05MDU5Ni0wMDEuanMgbGluZSA0ODogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3Vs
dCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJjZSkgaXMgbm90IG9iamVjdC48YnI+CiA8L3R0Pjxi
cj4KLTxhIG5hbWU9J2ZhaWx1cmU0OSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290
aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDEuanMnPmpz
MV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMS5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Cis8YSBu
YW1lPSdmYWlsdXJlNDknPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTA1OTYtMDAyLmpzJz5qczFfNS9PYmpl
Y3QvcmVncmVzcy05MDU5Ni0wMDIuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgogIFsgPGEgaHJlZj0n
I2ZhaWx1cmU0OCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTUwJz5O
ZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08
YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWlu
YXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+
Ci1bNDc1N10gLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDEuanMgbGluZSA0OTogVHlw
ZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIG9iajEudG9Tb3Vy
Y2UpIGlzIG5vdCBvYmplY3QuPGJyPgorWzI2MjcxXSAuL2pzMV81L09iamVjdC9yZWdyZXNzLTkw
NTk2LTAwMi5qcyBsaW5lIDQ4OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
dW5ldmFsPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTAnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvT2JqZWN0L3JlZ3Jl
c3MtOTYyODQtMDAyLmpzJz5qczFfNS9PYmplY3QvcmVncmVzcy05NjI4NC0wMDIuanM8L2E+IGZh
aWxlZDwvYj4gPGJyPgorPGEgbmFtZT0nZmFpbHVyZTUwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0
LTAwMS5qcyc+anMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+
IDxicj4KICBbIDxhIGhyZWY9JyNmYWlsdXJlNDknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEg
aHJlZj0nI2ZhaWx1cmU1MSc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3An
PlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxi
cj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KIENvbXBsZXRlIHRlc3Rj
YXNlIG91dHB1dCB3YXM6PGJyPgotWzQ3NThdIC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQt
MDAyLmpzIGxpbmUgNDk6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiB1bmV2
YWw8YnI+CitbMjYyNzNdIC4vanMxXzUvT2JqZWN0L3JlZ3Jlc3MtOTYyODQtMDAxLmpzIGxpbmUg
NDk6IFR5cGVFcnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmox
LnRvU291cmNlKSBpcyBub3Qgb2JqZWN0Ljxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVy
ZTUxJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScu
L2pzMV81L1JlZ3Jlc3MvcmVncmVzcy00NDAwOS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0
MDA5LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDQwMDknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVy
IDQ0MDA5PC9hPjxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1MSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8
YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4
NC0wMDIuanMnPmpzMV81L09iamVjdC9yZWdyZXNzLTk2Mjg0LTAwMi5qczwvYT4gZmFpbGVkPC9i
PiA8YnI+CiAgWyA8YSBocmVmPScjZmFpbHVyZTUwJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxh
IGhyZWY9JyNmYWlsdXJlNTInPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9w
Jz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8
YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0ZXN0
Y2FzZSBvdXRwdXQgd2FzOjxicj4KK1syNjI3NF0gLi9qczFfNS9PYmplY3QvcmVncmVzcy05NjI4
NC0wMDIuanMgbGluZSA0OTogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IHVu
ZXZhbDxicj4KKzwvdHQ+PGJyPgorPGEgbmFtZT0nZmFpbHVyZTUyJz48L2E+PGRkPjxiPlRlc3Rj
YXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVz
cy00NDAwOS5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzPC9hPiBmYWlsZWQ8L2I+
IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQw
MDknIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDQ0MDA5PC9hPjxicj4KKyBbIDxh
IGhyZWY9JyNmYWlsdXJlNTEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmU1Myc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPHR0PkV4cGVjdGVkIGV4aXQgY29kZSAwLCBnb3QgMzxicj4KK1Rlc3RjYXNl
IHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4KK0NvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3
YXM6PGJyPgogLS0+IEJVR05VTUJFUjogNDQwMDk8YnI+CiAtLT4gU1RBVFVTOiBUZXN0aW5nIHRo
YXQgd2UgZG9uJ3QgY3Jhc2ggb24gb2JqLnRvU291cmNlKCk8YnI+Ci1bNDc2M10gLi9qczFfNS9S
ZWdyZXNzL3JlZ3Jlc3MtNDQwMDkuanMgbGluZSA2MDogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmlu
ZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIG9iai50b1NvdXJjZSkgaXMgbm90IG9iamVjdC48YnI+
CitbMjYyNzldIC4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTQ0MDA5LmpzIGxpbmUgNjA6IFR5cGVF
cnJvcjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBvYmoudG9Tb3VyY2Up
IGlzIG5vdCBvYmplY3QuPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTInPjwvYT48
ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVn
cmVzcy9yZWdyZXNzLTY4NDk4LTAwMy5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTY4NDk4LTAw
My5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTY4NDk4JyB0YXJnZXQ9J290aGVyX3dpbmRvdyc+QnVnIE51bWJlciA2
ODQ5ODwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTUxJz5QcmV2aW91cyBGYWlsdXJlPC9h
PiB8IDxhIGhyZWY9JyNmYWlsdXJlNTMnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlw
cHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1Myc+PC9hPjxk
ZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdy
ZXNzL3JlZ3Jlc3MtNjg0OTgtMDAzLmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtNjg0OTgtMDAz
LmpzPC9hPiBmYWlsZWQ8L2I+IDxhIGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Njg0OTgnIHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDY4
NDk4PC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTInPlByZXZpb3VzIEZhaWx1cmU8L2E+
IHwgPGEgaHJlZj0nI2ZhaWx1cmU1NCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBw
eV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0Pi0tPiBTVEFUVVM6IFRlc3RpbmcgY2Fs
bGluZyBvYmouZXZhbChzdHIpPGJyPgogRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBG
QUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFRlc3RpbmcgY2FsbGluZyBvYmouZXZhbChz
dHIpOyBjdXJyZW50bHkgYXQgZXhwZWN0WzFdIHdpdGhpbiB0ZXN0IC08YnI+CkBAIC01NDEsOCAr
NTYxLDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICc0MycsIEFjdHVhbCB2YWx1ZSAnZmFsc2Un
PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90dD48YnI+
Ci08YSBuYW1lPSdmYWlsdXJlNTMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qcyc+anMxXzUv
UmVncmVzcy9yZWdyZXNzLTEwMzYwMi5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzYwMicgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTAzNjAyPC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJl
NTInPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1NCc+TmV4dCBGYWls
dXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEg
bmFtZT0nZmFpbHVyZTU0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2lu
ZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDM2MDIuanMnPmpzMV81L1JlZ3Jl
c3MvcmVncmVzcy0xMDM2MDIuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3pp
bGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM2MDInIHRhcmdldD0nb3RoZXJfd2lu
ZG93Jz5CdWcgTnVtYmVyIDEwMzYwMjwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTUzJz5Q
cmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTUnPk5leHQgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4tLT4g
U1RBVFVTOiBSZWFzc2lnbm1lbnQgdG8gYSBjb25zdCBpcyBOT1QgYW4gZXJyb3IgcGVyIEVDTUE8
YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBm
cm9tIHRlc3QoKV0gU2VjdGlvbiAxIG9mIHRlc3QgLTxicj4KQEAgLTU1MiwyOCArNTcyLDI4IEBA
IEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20g
dGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnMScsIEFjdHVhbCB2YWx1ZSAnMic8YnI+CiAtLT4gRkFJ
TEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSA8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2Zh
aWx1cmU1NCc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTA0MDc3LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtMTA0MDc3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTMn
PlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1NSc+TmV4dCBGYWlsdXJl
PC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFt
ZT0nZmFpbHVyZTU1Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93
JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xMDQwNzcuanMnPmpzMV81L1JlZ3Jlc3Mv
cmVncmVzcy0xMDQwNzcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1
cmU1NCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTU2Jz5OZXh0IEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8
dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3
aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CiBUZXN0
Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTUnPjwv
YT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUv
UmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5q
czwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTU0Jz5QcmV2aW91cyBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTYnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2ZhaWx1cmU1
Nic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9q
czFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3NTU3LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTI3
NTU3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNTUnPlByZXZp
b3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU1Nyc+TmV4dCBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVk
IGV4aXQgY29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwg
MDxicj4KIENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgotWzQ3ODldIC4vanMxXzUv
UmVncmVzcy9yZWdyZXNzLTEyNzU1Ny5qcyBsaW5lIDc1OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3Qg
ZmluZCB2YXJpYWJsZTogY2xvbmU8YnI+CitbMjYzMDZdIC4vanMxXzUvUmVncmVzcy9yZWdyZXNz
LTEyNzU1Ny5qcyBsaW5lIDc1OiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTog
Y2xvbmU8YnI+CiA8L3R0Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU1Nic+PC9hPjxkZD48Yj5UZXN0
Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtMTcyNjk5LmpzJz5qczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzPC9hPiBmYWlsZWQ8
L2I+IDxicj4KLSBbIDxhIGhyZWY9JyNmYWlsdXJlNTUnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwg
PGEgaHJlZj0nI2ZhaWx1cmU1Nyc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90
b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTU3Jz48L2E+PGRkPjxi
PlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3Mv
cmVncmVzcy0xNzI2OTkuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzI2OTkuanM8L2E+IGZh
aWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU1Nic+UHJldmlvdXMgRmFpbHVyZTwv
YT4gfCA8YSBocmVmPScjZmFpbHVyZTU4Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3Rp
cHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAs
IGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxl
dGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1bNDc5OF0gLi9qczFfNS9SZWdyZXNzL3JlZ3Jl
c3MtMTcyNjk5LmpzIGxpbmUgNjE6IFVSSUVycm9yOiBVUkkgZXJyb3I8YnI+CitbMjYzMTZdIC4v
anMxXzUvUmVncmVzcy9yZWdyZXNzLTE3MjY5OS5qcyBsaW5lIDYxOiBVUklFcnJvcjogVVJJIGVy
cm9yPGJyPgogPC90dD48YnI+Ci08YSBuYW1lPSdmYWlsdXJlNTcnPjwvYT48ZGQ+PGI+VGVzdGNh
c2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvUmVncmVzcy9yZWdyZXNz
LTE3OTUyNC5qcyc+anMxXzUvUmVncmVzcy9yZWdyZXNzLTE3OTUyNC5qczwvYT4gZmFpbGVkPC9i
PiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTUyNCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMTc5NTI0PC9hPjxicj4KLSBb
IDxhIGhyZWY9JyNmYWlsdXJlNTYnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2Zh
aWx1cmU1OCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQ
YWdlPC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTU4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxh
IHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzk1
MjQuanMnPmpzMV81L1JlZ3Jlc3MvcmVncmVzcy0xNzk1MjQuanM8L2E+IGZhaWxlZDwvYj4gPGEg
aHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk1MjQn
IHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDE3OTUyNDwvYT48YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTU3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
NTknPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KIDx0dD4tLT4gU1RBVFVTOiBEb24ndCBjcmFzaCBvbiBleHRyYW5lb3VzIGFyZ3Vt
ZW50cyB0byBzdHIubWF0Y2goKSwgZXRjLjxicj4KIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+
CiAtLT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBTZWN0aW9uIDE0IG9mIHRlc3Qg
LTxicj4KQEAgLTYyMywxNSArNjQzLDIyIEBAIEZhaWx1cmUgbWVzc2FnZXMgd2VyZTo8YnI+CiAt
LT4gRkFJTEVEITogW3JlcG9ydGVkIGZyb20gdGVzdCgpXSBFeHBlY3RlZCB2YWx1ZSAnU0hPVUxE
IEhBVkUgRkFMTEVOIElOVE8gQ0FUQ0gtQkxPQ0shJywgQWN0dWFsIHZhbHVlICdBQkMgWmJjJzxi
cj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIDxicj4KIDwvdHQ+PGJyPgot
PGEgbmFtZT0nZmFpbHVyZTU4Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzJz5qczFfNS9TY29w
ZS9yZWdyZXNzLTIyMDU4NC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+Ci0gWyA8YSBocmVmPScjZmFp
bHVyZTU3Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNTknPk5leHQg
RmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4K
KzxhIG5hbWU9J2ZhaWx1cmU1OSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVy
X3dpbmRvdycgaHJlZj0nLi9qczFfNS9TY29wZS9yZWdyZXNzLTE4NDEwNy5qcyc+anMxXzUvU2Nv
cGUvcmVncmVzcy0xODQxMDcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgorIFsgPGEgaHJlZj0nI2Zh
aWx1cmU1OCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTYwJz5OZXh0
IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+
CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVzdGNhc2UgdGVybWluYXRl
ZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+Ci1b
NDgyM10gLi9qczFfNS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qcyBsaW5lIDU2OiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgorWzI2MzMyXSAuL2pzMV81L1Nj
b3BlL3JlZ3Jlc3MtMTg0MTA3LmpzIGxpbmUgMTIzOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmlu
ZCB2YXJpYWJsZTogeTxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTU5Jz48L2E+PGRk
PjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1Njb3Bl
L3Njb3BlLTAwMS5qcyc+anMxXzUvU2NvcGUvc2NvcGUtMDAxLmpzPC9hPiBmYWlsZWQ8L2I+IDxh
IGhyZWY9J2h0dHA6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMyNjgn
IHRhcmdldD0nb3RoZXJfd2luZG93Jz5CdWcgTnVtYmVyIDUzMjY4PC9hPjxicj4KLSBbIDxhIGhy
ZWY9JyNmYWlsdXJlNTgnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2
MCc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9h
PiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTYwJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdl
dD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV81L1Njb3BlL3JlZ3Jlc3MtMjIwNTg0LmpzJz5q
czFfNS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qczwvYT4gZmFpbGVkPC9iPiA8YnI+CisgWyA8YSBo
cmVmPScjZmFpbHVyZTU5Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJl
NjEnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwv
YT4gXTxicj4KKzx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290IDM8YnI+CitUZXN0Y2FzZSB0
ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CitDb21wbGV0ZSB0ZXN0Y2FzZSBvdXRwdXQgd2Fz
Ojxicj4KK1syNjM0MV0gLi9qczFfNS9TY29wZS9yZWdyZXNzLTIyMDU4NC5qcyBsaW5lIDU2OiBS
ZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogU2NyaXB0PGJyPgorPC90dD48YnI+
Cis8YSBuYW1lPSdmYWlsdXJlNjEnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhl
cl93aW5kb3cnIGhyZWY9Jy4vanMxXzUvU2NvcGUvc2NvcGUtMDAxLmpzJz5qczFfNS9TY29wZS9z
Y29wZS0wMDEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxhLm1vemls
bGEub3JnL3Nob3dfYnVnLmNnaT9pZD01MzI2OCcgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBO
dW1iZXIgNTMyNjg8L2E+PGJyPgorIFsgPGEgaHJlZj0nI2ZhaWx1cmU2MCc+UHJldmlvdXMgRmFp
bHVyZTwvYT4gfCA8YSBocmVmPScjZmFpbHVyZTYyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJl
Zj0nI3RpcHB5X3RvcCc+VG9wIG9mIFBhZ2U8L2E+IF08YnI+CiA8dHQ+LS0+IFNUQVRVUzogVGVz
dGluZyBzY29wZSBhZnRlciBjaGFuZ2luZyBvYmouX19wcm90b19fPGJyPgogRmFpbHVyZSBtZXNz
YWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0ZWQgZnJvbSB0ZXN0KCldIFN0ZXAg
MTogIHNldHRpbmcgb2JqLl9fcHJvdG9fXyA9IGdsb2JhbCBvYmplY3Q8YnI+CkBAIC02NDIsOCAr
NjY5LDggQEAgRmFpbHVyZSBtZXNzYWdlcyB3ZXJlOjxicj4KIC0tPiBGQUlMRUQhOiBbcmVwb3J0
ZWQgZnJvbSB0ZXN0KCldIEV4cGVjdGVkIHZhbHVlICd1bmRlZmluZWQnLCBBY3R1YWwgdmFsdWUg
JzEnPGJyPgogLS0+IEZBSUxFRCE6IFtyZXBvcnRlZCBmcm9tIHRlc3QoKV0gPGJyPgogPC90dD48
YnI+Ci08YSBuYW1lPSdmYWlsdXJlNjAnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qcyc+anMx
XzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRw
Oi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwMTU3NCcgdGFyZ2V0PSdv
dGhlcl93aW5kb3cnPkJ1ZyBOdW1iZXIgMzAxNTc0PC9hPjxicj4KLSBbIDxhIGhyZWY9JyNmYWls
dXJlNTknPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2MSc+TmV4dCBG
YWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgor
PGEgbmFtZT0nZmFpbHVyZTYyJz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRhcmdldD0nb3RoZXJf
d2luZG93JyBocmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDE1NzQuanMnPmpzMV82L1Jl
Z3Jlc3MvcmVncmVzcy0zMDE1NzQuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDE1NzQnIHRhcmdldD0nb3RoZXJf
d2luZG93Jz5CdWcgTnVtYmVyIDMwMTU3NDwvYT48YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTYx
Jz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjMnPk5leHQgRmFpbHVy
ZTwvYT4gfCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD4t
LT4gU1RBVFVTOiBFNFggc2hvdWxkIGJlIGVuYWJsZWQgZXZlbiB3aGVuIGU0eD0xIG5vdCBzcGVj
aWZpZWQ8YnI+CiBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZBSUxFRCE6IEU0WCBz
aG91bGQgYmUgZW5hYmxlZCBldmVuIHdoZW4gZTR4PTEgbm90IHNwZWNpZmllZDogWE1MKCk8YnI+
CkBAIC02NTMsMjcgKzY4MCwyNyBAQCBGYWlsdXJlIG1lc3NhZ2VzIHdlcmU6PGJyPgogLS0+IEZB
SUxFRCE6IEV4cGVjdGVkIHZhbHVlICdObyBlcnJvcicsIEFjdHVhbCB2YWx1ZSAnZXJyb3I6IFJl
ZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBYTUwnPGJyPgogLS0+IEZBSUxFRCE6
IDxicj4KIDwvdHQ+PGJyPgotPGEgbmFtZT0nZmFpbHVyZTYxJz48L2E+PGRkPjxiPlRlc3RjYXNl
IDxhIHRhcmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0z
MDkyNDIuanMnPmpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMDkyNDIuanM8L2E+IGZhaWxlZDwvYj4g
PGJyPgotIFsgPGEgaHJlZj0nI2ZhaWx1cmU2MCc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBo
cmVmPScjZmFpbHVyZTYyJz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+
VG9wIG9mIFBhZ2U8L2E+IF08YnI+Cis8YSBuYW1lPSdmYWlsdXJlNjMnPjwvYT48ZGQ+PGI+VGVz
dGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5kb3cnIGhyZWY9Jy4vanMxXzYvUmVncmVzcy9yZWdy
ZXNzLTMwOTI0Mi5qcyc+anMxXzYvUmVncmVzcy9yZWdyZXNzLTMwOTI0Mi5qczwvYT4gZmFpbGVk
PC9iPiA8YnI+CisgWyA8YSBocmVmPScjZmFpbHVyZTYyJz5QcmV2aW91cyBGYWlsdXJlPC9hPiB8
IDxhIGhyZWY9JyNmYWlsdXJlNjQnPk5leHQgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScjdGlwcHlf
dG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KIDx0dD5FeHBlY3RlZCBleGl0IGNvZGUgMCwgZ290
IDM8YnI+CiBUZXN0Y2FzZSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDA8YnI+CiBDb21wbGV0ZSB0
ZXN0Y2FzZSBvdXRwdXQgd2FzOjxicj4KIFRlc3RjYXNlIHByb2R1Y2VkIG5vIG91dHB1dCE8L3R0
Pjxicj4KLTxhIG5hbWU9J2ZhaWx1cmU2Mic+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9
J290aGVyX3dpbmRvdycgaHJlZj0nLi9qczFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3LmpzJz5q
czFfNi9SZWdyZXNzL3JlZ3Jlc3MtMzE0ODg3LmpzPC9hPiBmYWlsZWQ8L2I+IDxicj4KLSBbIDxh
IGhyZWY9JyNmYWlsdXJlNjEnPlByZXZpb3VzIEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1
cmU2Myc+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdl
PC9hPiBdPGJyPgorPGEgbmFtZT0nZmFpbHVyZTY0Jz48L2E+PGRkPjxiPlRlc3RjYXNlIDxhIHRh
cmdldD0nb3RoZXJfd2luZG93JyBocmVmPScuL2pzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMTQ4ODcu
anMnPmpzMV82L1JlZ3Jlc3MvcmVncmVzcy0zMTQ4ODcuanM8L2E+IGZhaWxlZDwvYj4gPGJyPgor
IFsgPGEgaHJlZj0nI2ZhaWx1cmU2Myc+UHJldmlvdXMgRmFpbHVyZTwvYT4gfCA8YSBocmVmPScj
ZmFpbHVyZTY1Jz5OZXh0IEZhaWx1cmU8L2E+IHwgPGEgaHJlZj0nI3RpcHB5X3RvcCc+VG9wIG9m
IFBhZ2U8L2E+IF08YnI+CiA8dHQ+RXhwZWN0ZWQgZXhpdCBjb2RlIDAsIGdvdCAzPGJyPgogVGVz
dGNhc2UgdGVybWluYXRlZCB3aXRoIHNpZ25hbCAwPGJyPgogQ29tcGxldGUgdGVzdGNhc2Ugb3V0
cHV0IHdhczo8YnI+CiBUZXN0Y2FzZSBwcm9kdWNlZCBubyBvdXRwdXQhPC90dD48YnI+Ci08YSBu
YW1lPSdmYWlsdXJlNjMnPjwvYT48ZGQ+PGI+VGVzdGNhc2UgPGEgdGFyZ2V0PSdvdGhlcl93aW5k
b3cnIGhyZWY9Jy4vanMxXzYvU3RyaW5nL3JlZ3Jlc3MtMzA2NTkxLmpzJz5qczFfNi9TdHJpbmcv
cmVncmVzcy0zMDY1OTEuanM8L2E+IGZhaWxlZDwvYj4gPGEgaHJlZj0naHR0cDovL2J1Z3ppbGxh
Lm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDY1OTEnIHRhcmdldD0nb3RoZXJfd2luZG93
Jz5CdWcgTnVtYmVyIDMwNjU5MTwvYT48YnI+Ci0gWyA8YSBocmVmPScjZmFpbHVyZTYyJz5QcmV2
aW91cyBGYWlsdXJlPC9hPiB8IDxhIGhyZWY9JyNmYWlsdXJlNjQnPk5leHQgRmFpbHVyZTwvYT4g
fCA8YSBocmVmPScjdGlwcHlfdG9wJz5Ub3Agb2YgUGFnZTwvYT4gXTxicj4KKzxhIG5hbWU9J2Zh
aWx1cmU2NSc+PC9hPjxkZD48Yj5UZXN0Y2FzZSA8YSB0YXJnZXQ9J290aGVyX3dpbmRvdycgaHJl
Zj0nLi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1OTEuanMnPmpzMV82L1N0cmluZy9yZWdyZXNz
LTMwNjU5MS5qczwvYT4gZmFpbGVkPC9iPiA8YSBocmVmPSdodHRwOi8vYnVnemlsbGEubW96aWxs
YS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNjU5MScgdGFyZ2V0PSdvdGhlcl93aW5kb3cnPkJ1ZyBO
dW1iZXIgMzA2NTkxPC9hPjxicj4KKyBbIDxhIGhyZWY9JyNmYWlsdXJlNjQnPlByZXZpb3VzIEZh
aWx1cmU8L2E+IHwgPGEgaHJlZj0nI2ZhaWx1cmU2Nic+TmV4dCBGYWlsdXJlPC9hPiB8IDxhIGhy
ZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiBdPGJyPgogPHR0PkV4cGVjdGVkIGV4aXQg
Y29kZSAwLCBnb3QgMzxicj4KIFRlc3RjYXNlIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgMDxicj4K
IENvbXBsZXRlIHRlc3RjYXNlIG91dHB1dCB3YXM6PGJyPgogLS0+IEJVR05VTUJFUjogMzA2NTkx
PGJyPgogLS0+IFNUQVRVUzogU3RyaW5nIHN0YXRpYyBtZXRob2RzPGJyPgogLS0+IFNUQVRVUzog
U2VlIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMwNDgyODxi
cj4KLVs0ODQ1XSAuL2pzMV82L1N0cmluZy9yZWdyZXNzLTMwNjU5MS5qcyBsaW5lIDQ4OiBUeXBl
RXJyb3I6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gU3RyaW5nLnNwbGl0
KSBpcyBub3Qgb2JqZWN0Ljxicj4KK1syNjM2M10gLi9qczFfNi9TdHJpbmcvcmVncmVzcy0zMDY1
OTEuanMgbGluZSA0ODogVHlwZUVycm9yOiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHBy
ZXNzaW9uIFN0cmluZy5zcGxpdCkgaXMgbm90IG9iamVjdC48YnI+CiA8L3R0Pjxicj4KIDwvZGw+
CiBbIDxhIGhyZWY9JyN0aXBweV90b3AnPlRvcCBvZiBQYWdlPC9hPiB8IDxhIGhyZWY9JyNmYWls
X2RldGFpbCc+VG9wIG9mIEZhaWx1cmVzPC9hPiBdPGJyPgpAQCAtNjgxLDE1ICs3MDgsMTYgQEAg
Q29tcGxldGUgdGVzdGNhc2Ugb3V0cHV0IHdhczo8YnI+CiA8cHJlPgogPGEgbmFtZT0ncmV0ZXN0
X2xpc3QnPjwvYT4KIDxoMj5SZXRlc3QgTGlzdDwvaDI+PGJyPgotIyBSZXRlc3QgTGlzdCwga2pz
LCBnZW5lcmF0ZWQgU3VuIEF1ZyAxMiAxNjo0NTozNCAyMDA3LgorIyBSZXRlc3QgTGlzdCwga2pz
LCBnZW5lcmF0ZWQgRnJpIFNlcCAgNyAwNTo0NzowNyAyMDA3LgogIyBPcmlnaW5hbCB0ZXN0IGJh
c2Ugd2FzOiBBbGwgdGVzdHMuCi0jIDExMjcgb2YgMTEzNSB0ZXN0KHMpIHdlcmUgY29tcGxldGVk
LCA2MyBmYWlsdXJlcyByZXBvcnRlZC4KKyMgMTEyNyBvZiAxMTM1IHRlc3Qocykgd2VyZSBjb21w
bGV0ZWQsIDY1IGZhaWx1cmVzIHJlcG9ydGVkLgogZWNtYS9UeXBlQ29udmVyc2lvbi85LjMuMS0z
LmpzCiBlY21hXzIvRXhjZXB0aW9ucy9mdW5jdGlvbi0wMDEuanMKIGVjbWFfMi9SZWdFeHAvcmVn
cmVzcy0wMDEuanMKIGVjbWFfMi9SZWdFeHAvdW5pY29kZS0wMDEuanMKIGVjbWFfMy9EYXRlLzE1
LjkuNS43LmpzCiBlY21hXzMvRnVuRXhwci9mZS0wMDEuanMKK2VjbWFfMy9GdW5jdGlvbi9zY29w
ZS0wMDEuanMKIGVjbWFfMy9SZWdFeHAvMTUuMTAuMi0xLmpzCiBlY21hXzMvUmVnRXhwL3Blcmxz
dHJlc3MtMDAxLmpzCiBlY21hXzMvUmVnRXhwL3JlZ3Jlc3MtNzI5NjQuanMKQEAgLTc0MSw2ICs3
NjksNyBAQCBqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTA0MDc3LmpzCiBqczFfNS9SZWdyZXNzL3Jl
Z3Jlc3MtMTI3NTU3LmpzCiBqczFfNS9SZWdyZXNzL3JlZ3Jlc3MtMTcyNjk5LmpzCiBqczFfNS9S
ZWdyZXNzL3JlZ3Jlc3MtMTc5NTI0LmpzCitqczFfNS9TY29wZS9yZWdyZXNzLTE4NDEwNy5qcwog
anMxXzUvU2NvcGUvcmVncmVzcy0yMjA1ODQuanMKIGpzMV81L1Njb3BlL3Njb3BlLTAwMS5qcwog
anMxXzYvUmVncmVzcy9yZWdyZXNzLTMwMTU3NC5qcwpJbmRleDogSmF2YVNjcmlwdEdsdWUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjU0MTApCisrKyBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMiBAQAorMjAwNy0wOS0wNyAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRl
cmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgZm9yd2FyZGluZyBoZWFkZXJzIGZvciBranMvQ29tbW9uSWRlbnRpZmllcnMuaC4KKwor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmg6IEFkZGVkLgor
ICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9IYXNoVHJhaXRzLmg6IEFkZGVkLgorCiAy
MDA3LTA5LTAzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgVGltIEhhdGNoZXIuCkluZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVy
cy93dGYvSGFzaEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRHbHVlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9IYXNoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCisrKyBKYXZhU2Ny
aXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGFzaEZ1bmN0aW9ucy5o
PgpJbmRleDogSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hUcmFpdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFz
aFRyYWl0cy5oCShyZXZpc2lvbiAwKQorKysgSmF2YVNjcmlwdEdsdWUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL0hhc2hUcmFpdHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0hhc2hUcmFpdHMuaD4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTQxMCkKKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDctMDktMDcg
IENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBXZWJDb3JlIHdvcmsgd2l0
aCB0aGUgbmV3IHZhcmlhYmxlIGxvb2t1cCBvcHRpbWl6YXRpb25zIGluCisgICAgICAgIEphdmFT
Y3JpcHRDb3JlLiBJbiBwYXJ0aWN1bGFyLCBhZGQgZm9yd2FyZGluZyBoZWFkZXJzIGZvcgorICAg
ICAgICBranMvQ29tbW9uSWRlbnRpZmllcnMuaCwgYWRkIGV4cGxpY2l0IFdlYkNvcmU6OiBuYW1l
c3BhY2UgbWFya2luZ3MgdG8KKyAgICAgICAgYXZvaWQgcHJvYmxlbXMgd2l0aCBuZXcgc3ltYm9s
cyBpbiB0aGUgZXhwb3J0ZWQgS0pTIG5hbWVzcGFjZXMsIGFuZAorICAgICAgICBzdXBwb3J0IHRo
ZSBuZXcgbWV0aG9kIG9mIHBhc3NpbmcgYXJvdW5kIFJlYWRPbmx5IGF0dHJpYnV0ZXMuCisKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0aW9ucy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVdpbmRvdzo6Y3VzdG9tR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3IuY3BwOgorICAgICAgICAoS0pTOjpYU0xUUHJvY2Vz
c29yUHJvdG90eXBlRnVuY3Rpb246OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9ranNfYmluZGluZy5jcHA6CisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJldGVyOjpn
ZXRET01Ob2RlRm9yRG9jdW1lbnQpOgorICAgICAgICAoS0pTOjpTY3JpcHRJbnRlcnByZXRlcjo6
Zm9yZ2V0RE9NTm9kZUZvckRvY3VtZW50KToKKyAgICAgICAgKEtKUzo6U2NyaXB0SW50ZXJwcmV0
ZXI6OnB1dERPTU5vZGVGb3JEb2N1bWVudCk6CisgICAgICAgIChLSlM6OlNjcmlwdEludGVycHJl
dGVyOjp1cGRhdGVET01Ob2RlRG9jdW1lbnQpOgorCiAyMDA3LTA5LTA2ICBUcmlzdGFuIE8nVGll
cm5leSAgPHRyaXN0YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBT
dGFjaG93aWFrLgpJbmRleDogV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvSGFzaEZ1bmN0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hG
dW5jdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0hhc2hGdW5jdGlvbnMuaD4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyNTM4NSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3
IEBAIGJvb2wgSlNET01XaW5kb3c6OmN1c3RvbUdldE93blByb3BlcnR5U2wKICAgICAgICAgaWYg
KF9wcm9wLmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSAmJiB2YWxbMF0tPnR5cGUoKSA9PSBL
SlM6OkdldHRlclNldHRlclR5cGUpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVydHlTbG90
KHNsb3QsIHZhbCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNsb3Quc2V0VmFsdWVTbG90
KHRoaXMsIHZhbCk7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlU2xvdCh0aGlzLCB2YWwsIEtK
Uzo6UHJvcGVydHlTbG90OjpGb3JiaWREaXJlY3RXcml0ZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yLmNwcAko
cmV2aXNpb24gMjUzODUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3Nvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgSlNWYWx1ZSAqWFNMVFByb2Nlc3Nv
clByb3RvdHlwZUZ1bmN0aW9uOgogICAgICAgICAgICAgSlNWYWx1ZSAqbm9kZVZhbCA9IGFyZ3Nb
MF07CiAgICAgICAgICAgICBKU1ZhbHVlICpkb2NWYWwgPSBhcmdzWzFdOwogICAgICAgICAgICAg
aWYgKG5vZGVWYWwtPmlzT2JqZWN0KCZKU05vZGU6OmluZm8pICYmIGRvY1ZhbC0+aXNPYmplY3Qo
JkpTRG9jdW1lbnQ6OmluZm8pKSB7Ci0gICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IHN0YXRp
Y19jYXN0PEpTTm9kZSo+KG5vZGVWYWwpLT5pbXBsKCk7CisgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KG5vZGVWYWwpLT5pbXBsKCk7CiAg
ICAgICAgICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc3Rh
dGljX2Nhc3Q8SlNEb2N1bWVudCAqPihkb2NWYWwpLT5pbXBsKCkpOwogICAgICAgICAgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIHByb2Nlc3Nvci50cmFuc2Zvcm1Ub0ZyYWdtZW50KG5vZGUsIGRv
YykuZ2V0KCkpOwogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
YmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGlu
Zy5jcHAJKHJldmlzaW9uIDI1Mzg1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfYmluZGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEV2
ZW50TmFtZXM7CiBuYW1lc3BhY2UgS0pTIHsKIAogdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCBET01P
YmplY3QqPiBET01PYmplY3RNYXA7Ci10eXBlZGVmIEhhc2hNYXA8Tm9kZSosIEpTTm9kZSo+IE5v
ZGVNYXA7Cit0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Tm9kZSosIEpTTm9kZSo+IE5vZGVNYXA7
CiB0eXBlZGVmIEhhc2hNYXA8RG9jdW1lbnQqLCBOb2RlTWFwKj4gTm9kZVBlckRvY01hcDsKIAog
Ly8gRm9yIGRlYnVnZ2luZywga2VlcCBhIHNldCBvZiB3cmFwcGVycyBjdXJyZW50bHkgcmVnaXN0
ZXJlZCwgYW5kIGNoZWNrIHRoYXQKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFNjcmlwdEludGVy
cHJldGVyOjpmb3JnZXRET01PYmplY3QoCiAgICAgZG9tT2JqZWN0cygpLnJlbW92ZShvYmplY3RI
YW5kbGUpOwogfQogCi1KU05vZGUqIFNjcmlwdEludGVycHJldGVyOjpnZXRET01Ob2RlRm9yRG9j
dW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQorSlNOb2RlKiBTY3JpcHRJbnRl
cnByZXRlcjo6Z2V0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29y
ZTo6Tm9kZSogbm9kZSkKIHsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNOb2RlKj4oZG9tT2JqZWN0cygpLmdldChub2RlKSk7CkBAIC0xNjUsNyArMTY1
LDcgQEAgSlNOb2RlKiBTY3JpcHRJbnRlcnByZXRlcjo6Z2V0RE9NTm9kZUZvcgogICAgIHJldHVy
biBOVUxMOwogfQogCi12b2lkIFNjcmlwdEludGVycHJldGVyOjpmb3JnZXRET01Ob2RlRm9yRG9j
dW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQordm9pZCBTY3JpcHRJbnRlcnBy
ZXRlcjo6Zm9yZ2V0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29y
ZTo6Tm9kZSogbm9kZSkKIHsKICAgICBSRU1PVkVfV1JBUFBFUihnZXRET01Ob2RlRm9yRG9jdW1l
bnQoZG9jdW1lbnQsIG5vZGUpKTsKICAgICBpZiAoIWRvY3VtZW50KSB7CkBAIC0xNzcsNyArMTc3
LDcgQEAgdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6Zm9yZ2V0RE9NTm9kZUZvcgogICAgICAgICBk
b2N1bWVudERpY3QtPnJlbW92ZShub2RlKTsKIH0KIAotdm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6
cHV0RE9NTm9kZUZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSwgSlNO
b2RlKiB3cmFwcGVyKQordm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6cHV0RE9NTm9kZUZvckRvY3Vt
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgV2ViQ29yZTo6Tm9kZSogbm9kZSwgSlNOb2RlKiB3cmFw
cGVyKQogewogICAgIEFERF9XUkFQUEVSKHdyYXBwZXIpOwogICAgIGlmICghZG9jdW1lbnQpIHsK
QEAgLTIyOCw3ICsyMjgsNyBAQCBFeGVjU3RhdGUqIFNjcmlwdEludGVycHJldGVyOjpnbG9iYWxF
eGVjCiAgICAgcmV0dXJuIEludGVycHJldGVyOjpnbG9iYWxFeGVjKCk7CiB9CiAKLXZvaWQgU2Ny
aXB0SW50ZXJwcmV0ZXI6OnVwZGF0ZURPTU5vZGVEb2N1bWVudChOb2RlKiBub2RlLCBEb2N1bWVu
dCogb2xkRG9jLCBEb2N1bWVudCogbmV3RG9jKQordm9pZCBTY3JpcHRJbnRlcnByZXRlcjo6dXBk
YXRlRE9NTm9kZURvY3VtZW50KFdlYkNvcmU6Ok5vZGUqIG5vZGUsIERvY3VtZW50KiBvbGREb2Ms
IERvY3VtZW50KiBuZXdEb2MpCiB7CiAgICAgQVNTRVJUKG9sZERvYyAhPSBuZXdEb2MpOwogICAg
IEpTTm9kZSogd3JhcHBlciA9IGdldERPTU5vZGVGb3JEb2N1bWVudChvbGREb2MsIG5vZGUpOwpJ
bmRleDogV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNTQxMCkKKysrIFdlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMSBAQAorMjAwNy0wOS0wNyAgQ2FtZXJvbiBad2FyaWNoICA8Y3d6d2FyaWNoQHV3YXRl
cmxvby5jYT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgZm9yd2FyZGluZyBoZWFkZXJzIGZvciBDb21tb25JZGVudGlmaWVycy5oLgorCisgICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL0hhc2hGdW5jdGlvbnMuaDogQWRkZWQuCisKIDIw
MDctMDktMDUgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluLgpJbmRleDogV2ViS2l0L0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9I
YXNoRnVuY3Rpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9IYXNoRnVuY3Rpb25zLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL0hhc2hGdW5jdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0hhc2hGdW5jdGlvbnMuaD4KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1
NDEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
NTMgQEAKKzIwMDctMDktMDcgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1d2F0ZXJsb28u
Y2E+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHMgZm9yIHRoZSB2YXJpYWJsZSBsb29rdXAgb3B0aW1pemF0aW9ucyBpbXBvcnRlZCBmcm9tIEtK
UywgYW5kIGEKKyAgICAgICAgZmV3IHNsaWdodCBjaGFuZ2VzIHRvIHRoZSBleHBlY3RlZCByZXN1
bHRzIG9mIGV4aXN0aW5nIHRlc3RzIGNhdXNlZCBieQorICAgICAgICB0aGUgbmV3IGNvZGUuIFRo
ZSByZWxldmFudCByZXZpc2lvbnMgaW4gS0RFIGFyZQorCisgICAgICAgICAgICA2NzA1NDgKKyAg
ICAgICAgICAgIDY3MTQ4MQorICAgICAgICAgICAgNjcxNDg0CisgICAgICAgICAgICA2NzE1MzYK
KyAgICAgICAgICAgIDY3MTU0MQorICAgICAgICAgICAgNjcxNTQ4CisgICAgICAgICAgICA2NzQx
NjcKKworICAgICAgICAqIGRvbS9odG1sL2xldmVsMi9odG1sL0hUTUxGcmFtZUVsZW1lbnQwOS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZG9tL2h0bWwvbGV2ZWwyL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQxMS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9rZGUvYXJndW1lbnRzLXNj
b3BlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvYXJndW1lbnRz
LXNjb3BlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMva2RlL2NvbXBsZXRpb24tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMva2RlL2Z1bmMtZGVjbC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMva2RlL2Z1bmMtZGVjbC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL2tkZS9mdW5jdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9qcy9rZGUvaXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9s
dmFsLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tk
ZS9sdmFsLWV4Y2VwdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9rZGUvb3Bl
cmF0b3JzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvYXJn
dW1lbnRzLXNjb3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMv
Y29tcGxldGlvbi5qczoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuYy1kZWNs
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuY3Rpb24uanM6
CisgICAgICAgICogZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2l0ZXJhdGlvbi5qczoKKyAgICAgICAg
KiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvbHZhbC1leGNlcHRpb25zLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL2tkZS9yZXNvdXJjZXMvb3BlcmF0b3JzLmpzOgorICAgICAgICAqIGZhc3Qv
anMva2RlL3Jlc291cmNlcy9zY29wZS5qczoKKyAgICAgICAgKiBmYXN0L2pzL2tkZS9zY29wZS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9yZWhhc2gtYXNzaWduLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZWhhc2gtYXNzaWduLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvanMvcmVzaXplLWFycmF5LWFzc2lnbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvanMvcmVzaXplLWFycmF5LWFzc2lnbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9yZWhhc2gtYXNzaWduLmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2pzL3Jlc291cmNlcy9yZXNpemUtYXJyYXktYXNzaWduLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25j
bGljay1hZGRFdmVudExpc3RlbmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1M
SHR0cFJlcXVlc3QtYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3Qtc2hvcnRjdXQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdp
bmRvdy1vbmNsaWNrLWFkZEV2ZW50TGlzdGVuZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvbGlzdGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4
cGVjdGVkLnR4dDoKKwogMjAwNy0wOS0wNiAgVHJpc3RhbiBPJ1RpZXJuZXkgIDx0cmlzdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6
IExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMi9odG1sL0hUTUxGcmFtZUVsZW1lbnQwOS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwyL2h0bWwv
SFRNTEZyYW1lRWxlbWVudDA5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjUzODUpCisrKyBMYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MRnJhbWVFbGVtZW50MDktZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDY5MjogVmFsdWUgY29tcGxldGUgKHJlc3VsdCBvZiBleHByZXNzaW9uIHNldFVwUGFnZSkgaXMg
bm90IG9iamVjdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OTI6IFZhbHVlIGNvbXBsZXRlIChy
ZXN1bHQgb2YgZXhwcmVzc2lvbiBzZXRVcFBhZ2UpIGlzIG5vdCBhbiBvYmplY3QuCiBUZXN0Oglo
dHRwOi8vd3d3LnczLm9yZy8yMDAxL0RPTS1UZXN0LVN1aXRlL2xldmVsMi9odG1sL0hUTUxGcmFt
ZUVsZW1lbnQwOQogU3RhdHVzOglTdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRtbC9s
ZXZlbDIvaHRtbC9IVE1MSUZyYW1lRWxlbWVudDExLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDIvaHRtbC9IVE1MSUZyYW1lRWxlbWVudDExLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMjUzODUpCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZl
bDIvaHRtbC9IVE1MSUZyYW1lRWxlbWVudDExLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2OTI6IFZhbHVlIGNvbXBsZXRl
IChyZXN1bHQgb2YgZXhwcmVzc2lvbiBzZXRVcFBhZ2UpIGlzIG5vdCBvYmplY3QuCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjkyOiBWYWx1ZSBjb21wbGV0ZSAocmVzdWx0IG9mIGV4cHJlc3Npb24g
c2V0VXBQYWdlKSBpcyBub3QgYW4gb2JqZWN0LgogVGVzdDoJaHR0cDovL3d3dy53My5vcmcvMjAw
MS9ET00tVGVzdC1TdWl0ZS9sZXZlbDIvaHRtbC9IVE1MSUZyYW1lRWxlbWVudDExCiBTdGF0dXM6
CVN1Y2Nlc3MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVoYXNoLWFzc2lnbi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWhhc2gtYXNzaWduLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVoYXNoLWFz
c2lnbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRo
YXQgYXNzaWdubWVudHMgdG8gZ2xvYmFsIHZhcmlhYmxlcyBiZWhhdmUgcHJvcGVybHkgd2hlbiB0
aGUgcHJvcGVydHkgdGFibGUgaXMgcmVoYXNoZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIDEgaXMgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVoYXNoLWFzc2lnbi5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVoYXNoLWFzc2lnbi5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWhhc2gtYXNzaWduLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVoYXNoLWFzc2lnbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2l6ZS1hcnJheS1hc3NpZ24tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzaXplLWFycmF5LWFzc2lnbi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2l6ZS1hcnJh
eS1hc3NpZ24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitUZXN0
cyB0aGF0IGFzc2lnbm1lbnRzIGludG8gYXJyYXlzIGJlaGF2ZSBwcm9wZXJseSBhZnRlciB0aGUg
YXJyYXkgaXMgcmVzaXplZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
MSBpcyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNpemUtYXJyYXktYXNzaWduLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNpemUtYXJyYXktYXNzaWduLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc2l6ZS1hcnJheS1hc3NpZ24u
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yZXNpemUtYXJyYXktYXNzaWduLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2FyZ3VtZW50cy1zY29wZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvYXJndW1lbnRz
LXNjb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
a2RlL2FyZ3VtZW50cy1zY29wZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTUgQEAKK0tERSBKUyBUZXN0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IHRlc3QwCitQQVNTIHRlc3QxCitQQVNTIHRlc3QyCitQQVNTIHRlc3QzCitQQVNTIHRlc3Q0Ligx
KQorUEFTUyB0ZXN0NC4oMikKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9hcmd1bWVudHMtc2Nv
cGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9hcmd1bWVudHMt
c2NvcGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2FyZ3Vt
ZW50cy1zY29wZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIktERSBKUyBUZXN0Iik7Cis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXJndW1lbnRzLXNjb3BlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2NvbXBsZXRpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2NvbXBs
ZXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNTM4NSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMva2RlL2NvbXBsZXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUs
MTEgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNTIGZv
bygpLCBpIGlzIDIKIFBBU1MgY2F1Z2h0IGlzIHRydWUKK1BBU1MgdmFsIGlzIDExCitQQVNTIHZh
bCBpcyAxMgorUEFTUyB2YWwgaXMgMTMKK1BBU1MgdmFsIGlzIDE0CitQQVNTIHZhbCBpcyAxNQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9mdW5jLWRlY2wtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1bmMtZGVjbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9mdW5jLWRlY2wtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitLREUgSlMgVGVzdAorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBGdW5jdGlvbiBkZWNsYXJhdGlvbiB0YWtlcyBlZmZl
Y3QgYXQgZW50cnkKK1BBU1MgRGVjbCBub3QgeWV0IG92ZXJ3cml0dGVuCitQQVNTIEFmdGVyIGFz
c2lnbiAoMCkKK1BBU1MgZnVuY3Rpb24gZGVjbHMgaGF2ZSBubyBleGVjdXRpb24gY29udGVudAor
UEFTUyBBZnRlciBhc3NpZ24gIzIgKDApCitQQVNTIERlY2wgYWxyZWFkeSBvdmVyd3JpdHRlbgor
UEFTUyBBZnRlciBhc3NpZ24gKDEpCitQQVNTIGZ1bmN0aW9uIGRlY2xzIGhhdmUgbm8gZXhlY3V0
aW9uIGNvbnRlbnQKK1BBU1MgQWZ0ZXIgYXNzaWduICMyICgxKQorUEFTUyBEZWNsIGFscmVhZHkg
b3ZlcndyaXR0ZW4KK1BBU1MgQWZ0ZXIgYXNzaWduICgyKQorUEFTUyBmdW5jdGlvbiBkZWNscyBo
YXZlIG5vIGV4ZWN1dGlvbiBjb250ZW50CitQQVNTIEFmdGVyIGFzc2lnbiAjMiAoMikKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL2tkZS9mdW5jLWRlY2wuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2tkZS9mdW5jLWRlY2wuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMva2RlL2Z1bmMtZGVjbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIktERSBKUyBU
ZXN0Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZnVuYy1kZWNsLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2Z1
bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tk
ZS9mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1Mzg1KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9rZGUvZnVuY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4
ICszNCw2IEBAIFBBU1Mgb3JnRnVuY0Nsb25lKCd3b3JsZCcpIGlzICdIZWxsbyB3b3IKIFBBU1Mg
Z3JvdXBDbG9uZSgxLCAyKSBpcyA5CiBQQVNTIFN0cmluZyhNYXRoLnNpbikgaXMgc2luU3RyCiBQ
QVNTIHNoYWRvdygpIGlzIDIKLVBBU1MgbmVzdGVkcmV0IGlzICdvdXRlciBuZXN0JwotUEFTUyBu
b3RfbmVzdGVkcmV0IGlzICdnbG9iYWwgbmVzdCcKIFBBU1Mgc2FtcGxlLnByb3RvdHlwZS5wcm90
b3R5cGUgaXMgdW5kZWZpbmVkLgogUEFTUyBzYW1wbGUucHJvdG90eXBlLmNvbnN0cnVjdG9yID09
IHNhbXBsZSBpcyB0cnVlCiBQQVNTIGNhdWdodCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL2tkZS9pdGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvanMva2RlL2l0ZXJhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1Mzg1KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvaXRlcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtOSw2ICs5LDIyIEBAIFBBU1MgY291bnQgaXMgMTAKIFBBU1MgcHJvcGVydGll
cyBpcyAnYT0xMTtiPTIyOycKIFBBU1MgbGlzdCBpcyAnWzBdPTEwMDtbMV09MTAxOycKIFBBU1Mg
bGlzdCBpcyAnMTIzJworUEFTUyBpbW1lZGlhdGVXaGlsZUJyZWFrIGlzIHVuZGVmaW5lZC4KK1BB
U1MgbGF0ZXJXaGlsZUJyZWFrIGlzICdmb28nCitQQVNTIHdoaWxlRW5kIGlzIDIKK1BBU1MgaW1t
ZWRpYXRlRG9XaGlsZUJyZWFrIGlzIHVuZGVmaW5lZC4KK1BBU1MgbGF0ZXJEb1doaWxlQnJlYWsg
aXMgJ2JhcicKK1BBU1MgZG9XaGlsZUVuZCBpcyAzCitQQVNTIGltbWVkaWF0ZUZvckJyZWFrIGlz
IHVuZGVmaW5lZC4KK1BBU1MgbGF0ZXJGb3JCcmVhayBpcyAnemlsY2gnCitQQVNTIGZvckVuZCBp
cyAncXVhcmsnCitQQVNTIGl0ZXJzIGlzIDEwCitQQVNTIGZvbzogY29udGludWUgZm9vOyAgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIGNvbnRpbnVlIHN0YXRlbWVudC4uCitQ
QVNTIGNvbnRpbnVlOyAgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBJbnZhbGlkIGNvbnRp
bnVlIHN0YXRlbWVudC4uCitQQVNTIGJyZWFrOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IEludmFsaWQgYnJlYWsgc3RhdGVtZW50Li4KK1BBU1MgZm9vOiBicmVhayBmb287ICBpcyB1bmRl
ZmluZWQuCitQQVNTIGZvbzogeyBhID0gMTsgYnJlYWsgZm9vOyBhID0gMjsgfSBpcyAxCitQQVNT
IGl0ZXJzIGlzIDEwCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL2x2YWwtZXhjZXB0aW9ucy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNl
cHRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
a2RlL2x2YWwtZXhjZXB0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzkgQEAKK0tERSBKUyBUZXN0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IGZ1bmN0aW9uICgpIAoreworICBhID0geDsKK30gdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVy
cm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiB4LgorUEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAgeCAr
PSAiZm9vIjsKK30gdGhyZXcgZXhjZXB0aW9uIFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZh
cmlhYmxlOiB4LgorUEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAgYiA9IGEueDsKK30gZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24KK1BBU1MgZnVuY3Rpb24gKCkgCit7CisgIGIgPSBhWyJ4Il07Cit9
IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTIGZ1bmN0aW9uICgpIAoreworICBhWyJ4
Il0gKz0gImJheiI7Cit9IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCitQQVNTIGFbJ3gnXSBp
cyAidW5kZWZpbmVkYmF6IgorUEFTUyBmdW5jdGlvbiAoKSAKK3sKKyAgYiA9IGEueTsKK30gZGlk
IG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1MgZnVuY3Rpb24gKCkgCit7CisgIGEueSArPSAi
Z2xhcmNoIjsKK30gZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KK1BBU1MgYVsneSddIGlzICJ1
bmRlZmluZWRnbGFyY2giCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRpb25z
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvbHZhbC1leGNlcHRp
b25zLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9sdmFsLWV4
Y2VwdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJLREUgSlMgVGVzdCIpOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2x2YWwtZXhjZXB0aW9ucy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9vcGVyYXRvcnMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2RlL29wZXJhdG9y
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1Mzg1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9r
ZGUvb3BlcmF0b3JzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsMTAg
QEAgUEFTUyAhITEgaXMgdHJ1ZQogUEFTUyAhMCBpcyB0cnVlCiBQQVNTICEhJ2EnIGlzIHRydWUK
IFBBU1MgIScnIGlzIHRydWUKK1BBU1MgKzkgaXMgOQorUEFTUyB2YXIgaSA9IDEwOyAraSBpcyAx
MAorUEFTUyAtMTEgaXMgLTExCitQQVNTIHZhciBpID0gMTI7IC1pIGlzIC0xMgogUEFTUyB2YXIg
aSA9IDA7ICsraTsgaXMgMQogUEFTUyB2YXIgaSA9IDA7ICsraTsgaSBpcyAxCiBQQVNTIHZhciBp
ID0gMDsgaSsrOyBpcyAwCkBAIC0yNSw2ICsyOSw4IEBAIFBBU1MgdmFyIGkgPSB0cnVlOyBpLS0g
aXMgMQogUEFTUyB2YXIgaSA9IHRydWU7IGktLTsgaSBpcyAwCiBQQVNTIH4wIGlzIC0xCiBQQVNT
IH4xIGlzIC0yCitQQVNTIH5OYU4gaXMgLTEKK1BBU1MgfkluZmluaXR5IGlzIC0xCiBQQVNTIH5N
YXRoLnBvdygyLCAzMykgaXMgLTEKIFBBU1MgfihNYXRoLnBvdygyLCAzMikgKyBNYXRoLnBvdygy
LCAzMSkgKyAyKSBpcyAyMTQ3NDgzNjQ1CiBQQVNTIH5udWxsIGlzIC0xCkBAIC00MCw2ICs0Niwy
MSBAQCBQQVNTIC04ID4+IDI0IGlzIC0xCiBQQVNTIDggPj4+IDIgaXMgMgogUEFTUyAtOCA+Pj4g
MjQgaXMgMjU1CiBQQVNTICgtMjIwMDAwMDAwMCA+PiAxKSA8PCAxIGlzIDIwOTQ5NjcyOTYKK1BB
U1MgSW5maW5pdHkgPj4gMSBpcyAwCitQQVNTIEluZmluaXR5IDw8IDEgaXMgMAorUEFTUyBJbmZp
bml0eSA+Pj4gMSBpcyAwCitQQVNTIE5hTiA+PiAxIGlzIDAKK1BBU1MgTmFOIDw8IDEgaXMgMAor
UEFTUyBOYU4gPj4+IDEgaXMgMAorUEFTUyA4LjEgPj4gMSBpcyA0CitQQVNTIDguMSA8PCAxIGlz
IDE2CitQQVNTIDguMSA+Pj4gMSBpcyA0CitQQVNTIDguOSA+PiAxIGlzIDQKK1BBU1MgOC45IDw8
IDEgaXMgMTYKK1BBU1MgOC45ID4+PiAxIGlzIDQKK1BBU1MgTWF0aC5wb3coMiwgMzIpID4+IDEg
aXMgMAorUEFTUyBNYXRoLnBvdygyLCAzMikgPDwgMSBpcyAwCitQQVNTIE1hdGgucG93KDIsIDMy
KSA+Pj4gMSBpcyAwCiBQQVNTIDErMiBpcyAzCiBQQVNTICdhJysnYicgaXMgJ2FiJwogUEFTUyAn
YScrMiBpcyAnYTInCkBAIC0xNTIsNiArMTczLDggQEAgUEFTUyBOYU4gPT09IE5hTiBpcyBmYWxz
ZQogUEFTUyAwLjAgPT09IDAgaXMgdHJ1ZQogUEFTUyAnYWJjJyA9PT0gJ2FiYycgaXMgdHJ1ZQog
UEFTUyAnYScgPT09ICd4JyBpcyBmYWxzZQorUEFTUyAxID09PSAnMScgaXMgZmFsc2UKK1BBU1Mg
JzEnID09PSAxIGlzIGZhbHNlCiBQQVNTIHRydWUgPT09IHRydWUgaXMgdHJ1ZQogUEFTUyBmYWxz
ZSA9PT0gZmFsc2UgaXMgdHJ1ZQogUEFTUyB0cnVlID09PSBmYWxzZSBpcyBmYWxzZQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvc2NvcGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Njb3BlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjUz
ODUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9zY29wZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsNiArNCw5IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEEKIAogCiBQQVNTIGYoMikgaXMgMjIKK1BBU1MgT0JKRUNULnRvU3RyaW5nKCkgaXMg
J2hlbGxvJworUEFTUyBzIGlzICdoZWxsbycKK1BBU1MgZyBpcyAnZm9vJwogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2pzL2tkZS9yZXNvdXJjZXMvYXJndW1lbnRzLXNjb3BlLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9hcmd1bWVudHMtc2NvcGUuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvYXJndW1lbnRzLXNj
b3BlLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvLyBXZSBjYW4ndCB1c2Ugbm9y
bWFsIHNob3VsZEJlIGhlcmUsIHNpbmNlIHRoZXknZCBldmFsIGluIHRoZSB3cm9uZyBjb250ZXh0
Li4uCisKK2Z1bmN0aW9uIHNob3VsZEJlT2ZUeXBlKG1zZywgdmFsLCB0eXBlKSB7CisgIGlmICh0
eXBlb2YodmFsKSAhPSB0eXBlKQorICAgIHRlc3RGYWlsZWQobXNnICsgIjogdmFsdWUgaGFzIHR5
cGUgIiArIHR5cGVvZih2YWwpICsgIiAsIG5vdDoiICsgdHlwZSk7CisgIGVsc2UKKyAgICB0ZXN0
UGFzc2VkKG1zZyk7Cit9CisKK2Z1bmN0aW9uIHRlc3QwKCkgeworICAgIHZhciBhcmd1bWVudHM7
CisgICAgLy8gdmFyIGV4ZWN1dGlvbiBzaG91bGQgbm90IG92ZXJ3cml0ZSBzb21ldGhpbmcgdGhh
dCB3YXMgCisgICAgLy8gaW4gc2NvcGUgYmVmb3JlaGFuZCAtLSBlLmcuIHRoZSBhcmd1bWVudHMg
dGhpbmcKKyAgICBzaG91bGRCZU9mVHlwZSgidGVzdDAiLCBhcmd1bWVudHMsICdvYmplY3QnKTsK
KyB9CisKK2Z1bmN0aW9uIHRlc3QxKCkgeworICAgIC8vIE5vIG5lZWQgdG8gdW5kZWYtaW5pdGlh
bGl6ZSBzb21ldGhpbmcgaW4gc2NvcGUgYWxyZWFkeSEKKyAgICBzaG91bGRCZU9mVHlwZSgidGVz
dDEiLCBhcmd1bWVudHMsICdvYmplY3QnKTsKKyAgICB2YXIgYXJndW1lbnRzOworfQorCitmdW5j
dGlvbiB0ZXN0Mihhcmd1bWVudHMpIHsKKyAgICAvLyBGb3JtYWxzIE9UT0ggY2FuIG92ZXJ3cml0
ZSB0aGUgYXJncyBvYmplY3QKKyAgICBzaG91bGRCZU9mVHlwZSgidGVzdDIiLCBhcmd1bWVudHMs
ICdudW1iZXInKTsKK30KKworCitmdW5jdGlvbiB0ZXN0MygpIHsKKyAgICAvLyBEaXR0byBmb3Ig
ZnVuY3Rpb25zLi4KKyAgICBzaG91bGRCZU9mVHlwZSgidGVzdDMiLCBhcmd1bWVudHMsICdmdW5j
dGlvbicpOworICAgIGZ1bmN0aW9uIGFyZ3VtZW50cygpIHt9Cit9CisKK2Z1bmN0aW9uIHRlc3Q0
KCkgeworICAgIC8vIEhlcmUsIHRoZSAtZGVjbGFyYXRpb24tIHBhcnQgb2YgdGhlIHZhciBiZWxv
dyBzaG91bGQgaGF2ZSBubyAKKyAgICAvLyBlZmZlY3QuLgorICAgIHNob3VsZEJlT2ZUeXBlKCd0
ZXN0NC4oMSknLCBhcmd1bWVudHMsICdvYmplY3QnKTsKKyAgICB2YXIgYXJndW1lbnRzID0gNDsK
KyAgICAvLyAuLiBidXQgdGhlIGFzc2lnbm1lbnQgc2hvdWQganVzdCBoYXBwZW4KKyAgICBzaG91
bGRCZU9mVHlwZSgndGVzdDQuKDIpJywgYXJndW1lbnRzLCAnbnVtYmVyJyk7Cit9CisKKwordGVz
dDAoKTsKK3Rlc3QxKCk7Cit0ZXN0Mig0Mik7Cit0ZXN0MygpOwordGVzdDQoKTsKKwordmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9y
ZXNvdXJjZXMvY29tcGxldGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L2tkZS9yZXNvdXJjZXMvY29tcGxldGlvbi5qcwkocmV2aXNpb24gMjUzODUpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvY29tcGxldGlvbi5qcwkod29ya2luZyBjb3B5KQpA
QCAtMTIsNCArMTIsMTYgQEAgdmFyIGNhdWdodCA9IGZhbHNlOwogdHJ5IHsgZXZhbCgicmV0dXJu
OyIpOyB9IGNhdGNoKGUpIHsgY2F1Z2h0ID0gdHJ1ZTsgfQogc2hvdWxkQmVUcnVlKCJjYXVnaHQi
KTsKIAorLy8gdmFsdWUgY29tcGxldGlvbnMgdGFrZSBwcmVjZWRlbmNlCit2YXIgdmFsID0gZXZh
bCgiMTE7IHsgfSIpOworc2hvdWxkQmUoInZhbCIsICIxMSIpOwordmFsID0gZXZhbCgiMTI7IDsi
KTsKK3Nob3VsZEJlKCJ2YWwiLCAiMTIiKTsKK3ZhbCA9IGV2YWwoIjEzOyBpZihmYWxzZSk7Iik7
CitzaG91bGRCZSgidmFsIiwgIjEzIik7Cit2YWwgPSBldmFsKCIxNDsgZnVuY3Rpb24gZigpIHt9
Iik7CitzaG91bGRCZSgidmFsIiwgIjE0Iik7Cit2YWwgPSBldmFsKCIxNTsgdmFyIHYgPSAwIik7
CitzaG91bGRCZSgidmFsIiwgIjE1Iik7CisKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jLWRlY2wuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2Z1bmMtZGVjbC5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jLWRl
Y2wuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8vIFdlIGNhbid0IHVzZSBub3Jt
YWwgc2hvdWxkQmUgaGVyZSwgc2luY2UgdGhleSdkIGV2YWwgaW4gdGhlIHdyb25nIGNvbnRleHQu
Li4KK2Z1bmN0aW9uIHNob3VsZEJlT2ZUeXBlKG1zZywgdmFsLCB0eXBlKSB7CisgIGlmICh0eXBl
b2YodmFsKSAhPSB0eXBlKQorICAgIHRlc3RGYWlsZWQobXNnICsgIjogdmFsdWUgaGFzIHR5cGUg
IiArIHR5cGVvZih2YWwpICsgIiAsIG5vdDoiICsgdHlwZSk7CisgIGVsc2UKKyAgICB0ZXN0UGFz
c2VkKG1zZyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVmFsKG1zZywgdmFsLCBleHBlY3RlZCkg
eworICBpZiAodmFsICE9IGV4cGVjdGVkKQorICAgIHRlc3RGYWlsZWQobXNnICsgIjogdmFsdWUg
aXMgIiArIHZhbCArICIgLCBub3Q6IiArIGV4cGVjdGVkKTsKKyAgZWxzZQorICAgIHRlc3RQYXNz
ZWQobXNnKTsKK30KKworZiA9ICJnbG9iYWwiOworCitmdW5jdGlvbiB0ZXN0KCkgeworICB0cnkg
eworICAgIHNob3VsZEJlT2ZUeXBlKCJGdW5jdGlvbiBkZWNsYXJhdGlvbiB0YWtlcyBlZmZlY3Qg
YXQgZW50cnkiLCBmLCAiZnVuY3Rpb24iKTsKKyAgfQorICBjYXRjaCAoZSkgeworICAgIHRlc3RG
YWlsZWQoIlNjb3BpbmcgdmVyeSBicm9rZW4hIik7CisgIH0KKworICBmb3IgKHZhciBpID0gMDsg
aSA8IDM7ICsraSkgeworICAgIGlmIChpID09IDApCisgICAgICBzaG91bGRCZU9mVHlwZSgiRGVj
bCBub3QgeWV0IG92ZXJ3cml0dGVuIiwgZiwgJ2Z1bmN0aW9uJyk7CisgICAgZWxzZQorICAgICAg
c2hvdWxkQmVPZlR5cGUoIkRlY2wgYWxyZWFkeSBvdmVyd3JpdHRlbiIsIGYsICdudW1iZXInKTsK
KworICAgIGYgPSAzOworICAgIHNob3VsZEJlVmFsKCJBZnRlciBhc3NpZ24gKCIraSsiKSIsIGYs
IDMpOworCisgICAgZnVuY3Rpb24gZigpIHt9OworICAgIHNob3VsZEJlVmFsKCJmdW5jdGlvbiBk
ZWNscyBoYXZlIG5vIGV4ZWN1dGlvbiBjb250ZW50IiwgZiwgMyk7CisKKyAgICBmID0gNTsKKwor
ICAgIHNob3VsZEJlVmFsKCJBZnRlciBhc3NpZ24gIzIgKCIraSsiKSIsIGYsIDUpOworICB9Cit9
CisKK3Rlc3QoKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2Z1bmN0aW9uLmpzCShyZXZpc2lvbiAy
NTM4NSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291cmNlcy9mdW5jdGlvbi5qcwko
d29ya2luZyBjb3B5KQpAQCAtMTcyLDMyICsxNzIsNiBAQCBmdW5jdGlvbiBzaGFkb3coKSB7IHJl
dHVybiAyOyB9CiBzaG91bGRCZSgic2hhZG93KCkiLCAiMiIpOwogCiAvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0vLyBuZXN0ZWQgZnVuY3Rpb25zCi0KLXZhciBuZXN0X3Byb3BlcnR5
ID0gImdsb2JhbCBuZXN0IjsKLQotZnVuY3Rpb24gbmVzdGVkX291dGVyKCkgewotCi0gIGZ1bmN0
aW9uIG5lc3RlZF9pbm5lcigpIHsKLSAgICByZXR1cm4gbmVzdF9wcm9wZXJ0eTsKLSAgfQotCi19
Ci0KLWZ1bmN0aW9uIG5vdF9uZXN0ZWQoKSB7Ci0gIHJldHVybiBuZXN0X3Byb3BlcnR5OwotfQot
Ci1uZXN0ZWRfb3V0ZXIubmVzdF9wcm9wZXJ0eSA9ICJvdXRlciBuZXN0IjsKLQotdmFyIG5lc3Rl
ZCA9IG5lc3RlZF9vdXRlci5uZXN0ZWRfaW5uZXI7Ci12YXIgbmVzdGVkcmV0ID0gbmVzdGVkKCk7
Ci1zaG91bGRCZSgibmVzdGVkcmV0IiwiJ291dGVyIG5lc3QnIik7Ci0KLXZhciBub3RfbmVzdGVk
cmV0ID0gbm90X25lc3RlZCgpOwotc2hvdWxkQmUoIm5vdF9uZXN0ZWRyZXQiLCInZ2xvYmFsIG5l
c3QnIik7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vIG90aGVyIHByb3Bl
cnRpZXMKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIGZ1bmN0aW9uIHNhbXBsZSgp
IHsgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2l0ZXJhdGlvbi5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvaXRlcmF0
aW9uLmpzCShyZXZpc2lvbiAyNTM4NSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMva2RlL3Jlc291
cmNlcy9pdGVyYXRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTUzLDQgKzUzLDY3IEBAIGZvciAo
dmFyIGEgPSBbMSwyLDNdLCBsZW5ndGggPSBhLmxlbmd0aCwKICAgbGlzdCArPSBhW2ldOwogfQog
c2hvdWxkQmUoImxpc3QiLCAiJzEyMyciKTsKLXN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWUKKwor
Ly8gY29tcGxldGlvbiB2YWx1ZXMKK3ZhciBpbW1lZGlhdGVXaGlsZUJyZWFrID0gZXZhbCgid2hp
bGUgKHRydWUpIHsgYnJlYWs7IH0iKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJpbW1lZGlhdGVXaGls
ZUJyZWFrIiwgIidmb28nIik7Cit2YXIgbGF0ZXJXaGlsZUJyZWFrID0gZXZhbCgid2hpbGUgKHRy
dWUpIHsgJ2Zvbyc7IGJyZWFrOyB9Iik7CitzaG91bGRCZSgibGF0ZXJXaGlsZUJyZWFrIiwgIidm
b28nIik7Cit2YXIgd2hpbGVFbmQgPSBldmFsKCJ2YXIgeSA9IDA7IHdoaWxlICh5IDwgMikgeyAr
K3kgfSIpOworc2hvdWxkQmUoIndoaWxlRW5kIiwgIjIiKTsKKwordmFyIGltbWVkaWF0ZURvV2hp
bGVCcmVhayA9IGV2YWwoImRvIHsgYnJlYWs7IH0gd2hpbGUoZmFsc2UpOyAiKTsKK3Nob3VsZEJl
VW5kZWZpbmVkKCJpbW1lZGlhdGVEb1doaWxlQnJlYWsiLCAiJ2ZvbyciKTsKK3ZhciBsYXRlckRv
V2hpbGVCcmVhayA9IGV2YWwoImRvIHsgJ2Jhcic7IGJyZWFrOyB9IHdoaWxlKHRydWUpOyIpOwor
c2hvdWxkQmUoImxhdGVyRG9XaGlsZUJyZWFrIiwgIidiYXInIik7Cit2YXIgZG9XaGlsZUVuZCA9
IGV2YWwoInZhciB5ID0gMDsgZG8geyArK3kgfSB3aGlsZSAoeSA8IDMpOyIpOworc2hvdWxkQmUo
ImRvV2hpbGVFbmQiLCAiMyIpOworCit2YXIgaW1tZWRpYXRlRm9yQnJlYWsgPSBldmFsKCJmb3Io
OzspIHsgYnJlYWs7IH0iKTsKK3Nob3VsZEJlVW5kZWZpbmVkKCJpbW1lZGlhdGVGb3JCcmVhayIs
ICInZm9vJyIpOwordmFyIGxhdGVyRm9yQnJlYWsgPSBldmFsKCJmb3IoOzspIHsgJ3ppbGNoJzsg
YnJlYWs7IH0iKTsKK3Nob3VsZEJlKCJsYXRlckZvckJyZWFrIiwgIid6aWxjaCciKTsKK3ZhciBm
b3JFbmQgPSBldmFsKCJmb3IodmFyIHkgPSAwOyB5IDwgNDsgKyt5KSB7ICdxdWFyaycgfSIpOwor
c2hvdWxkQmUoImZvckVuZCIsICIncXVhcmsnIik7CisKKy8vIFZhcmlvdXMgc3R1ZmYgZm9yIGNv
bnRyb2wgZmxvdyBhbmQgZXJyb3IgaGFuZGxpbmcgb2YgYnJlYWsvY29udGludWUKK3ZhciBpdGVy
czsKKworLy8gVGVzdCB3aGV0aGVyIHdlIGhhbmRsZSBtdWx0aXBsZSBsYWJlbHMgb24gdGhlIHNh
bWUgc3RhdGVtZW50IHJpZ2h0CisvLyBOb3RlOiB0aGlzIGlzIGluIGEgZnVuY3Rpb24gc2luY2Ug
a29ucSAzLngganVzdCBicmVha3Mgb3V0IG9mIHRoZSB3aG9sZSB0aGluZy4KK2Z1bmN0aW9uIHRl
c3RMYWJlbE5lc3QoKSB7CisgIGl0ZXJzID0gMDsKKyAgZm9vOiBiYXI6IHdoaWxlICh0cnVlKSB7
CisgICAgKytpdGVyczsKKyAgICBpZiAoaXRlcnMgPCAxMCkKKyAgICAgIGNvbnRpbnVlIGZvbzsK
KyAgICBlbHNlCisgICAgICBicmVhazsKKyAgfQorfQorCit0ZXN0TGFiZWxOZXN0KCk7CitzaG91
bGRCZSgnaXRlcnMnLCAnMTAnKTsKKworLy8gVGVzdCB0byBtYWtlIHN1cmUgZG9pbmcgY29udGlu
dWUgb3V0c2lkZSBhIGxvb3AKKy8vIHRocm93cyBwcm9wZXJseS4gKDMueCBkaWRuJ3QpLCBhbmQg
c28gZG9lcyBhIGxhYmVsLWxlc3MKKy8vIGJyZWFrIG91dHNpZGUgb2YgaXQuCitzaG91bGRUaHJv
dygnZm9vOiBjb250aW51ZSBmb287ICcpOworc2hvdWxkVGhyb3coJ2NvbnRpbnVlOyAnKTsKK3No
b3VsZFRocm93KCdicmVhazsnKTsKKworLy8gVGhlc2Ugb25lcyBzaG91bGQgYmUgZmluZSBPVE9I
CitzaG91bGRCZVVuZGVmaW5lZCgnZm9vOiBicmVhayBmb287ICcpOworc2hvdWxkQmUoJ2Zvbzog
eyBhID0gMTsgYnJlYWsgZm9vOyBhID0gMjsgfScsICcxJyk7CisKKy8vIE1ha2Ugc3VyZSB3ZSBk
b24ndCBicmVhayBvdXQgdG9vIGZhci4KK2Z1bmN0aW9uIHRlc3RMb2NhbEJyZWFrKCkgeworICBs
OiBicmVhayBsOworfQorCitmb3IgKGl0ZXJzID0gMDsgaXRlcnMgPCAxMDsgKytpdGVycykKKyAg
dGVzdExvY2FsQnJlYWsoKTsKKworc2hvdWxkQmUoJ2l0ZXJzJywgJzEwJyk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVz
b3VyY2VzL2x2YWwtZXhjZXB0aW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2pzL2tkZS9yZXNvdXJjZXMvbHZhbC1leGNlcHRpb25zLmpzCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL2x2YWwtZXhjZXB0aW9ucy5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MiBAQAorLy8gVGVzdHMgZm9yIHJhaXNpbmcgLS0tIGFuZCBub24t
cmFpc2luZyBleGNlcHRpb25zIG9uIGFjY2VzcyB0byByZWZlcmVuY2UgdG8gdW5kZWZpbmVkIHRo
aW5ncy4uLgorCisvLyBMb2NhbHMgc2hvdWxkIHRocm93IG9uIGFjY2VzcyBpZiB1bmRlZmluZWQu
LgorZm5TaG91bGRUaHJvdyhmdW5jdGlvbigpIHsgYSA9IHg7IH0sIFJlZmVyZW5jZUVycm9yKTsK
KworLy8gUmVhZC1tb2RpZnktd3JpdGUgdmVyc2lvbnMgb2YgYXNzaWdubWVudCBzaG91bGQgdGhy
b3cgYXMgd2VsbAorZm5TaG91bGRUaHJvdyhmdW5jdGlvbigpIHsgeCArPSAiZm9vIjsgfSwgUmVm
ZXJlbmNlRXJyb3IpOworCisvLyBPdGhlciByZWZlcmVuY2UgdHlwZXMgc2hvdWxkIGp1c3QgcmV0
dXJuIHVuZGVmaW5lZC4uLgorYSA9IG5ldyBPYmplY3QoKTsKK2ZuU2hvdWxkTm90VGhyb3coZnVu
Y3Rpb24oKSB7IGIgPSBhLng7IH0pOworZm5TaG91bGROb3RUaHJvdyhmdW5jdGlvbigpIHsgYiA9
IGFbJ3gnXTsgfSk7CitmblNob3VsZE5vdFRocm93KGZ1bmN0aW9uKCkgeyBhWyd4J10gKz0gJ2Jh
eic7IH0pOworc2hvdWxkQmUoImFbJ3gnXSIsICcidW5kZWZpbmVkYmF6IicpOworZm5TaG91bGRO
b3RUaHJvdyhmdW5jdGlvbigpIHsgYiA9IGEueTsgfSk7CitmblNob3VsZE5vdFRocm93KGZ1bmN0
aW9uKCkgeyBhLnkgKz0gJ2dsYXJjaCc7IH0pOworc2hvdWxkQmUoImFbJ3knXSIsICcidW5kZWZp
bmVkZ2xhcmNoIicpOworCisKKy8vIEhlbHBlcnMhCitmdW5jdGlvbiBmblNob3VsZFRocm93KGYs
IGV4VHlwZSkKK3sKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAg
X2F2ID0gZigpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0KKwor
ICBpZiAoZXhjZXB0aW9uKSB7CisgICAgaWYgKHR5cGVvZiBleFR5cGUgPT0gInVuZGVmaW5lZCIg
fHwgZXhjZXB0aW9uIGluc3RhbmNlb2YgZXhUeXBlKQorICAgICAgdGVzdFBhc3NlZChmICsgIiB0
aHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7CisgICAgZWxzZQorICAgICAgdGVz
dEZhaWxlZChmICsgIiBzaG91bGQgdGhyb3cgZXhjZXB0aW9uICIgKyBleFR5cGUgKyAiLiBUaHJl
dyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7CisgIH0gZWxzZSBpZiAodHlwZW9mIF9h
diA9PSAidW5kZWZpbmVkIikKKyAgICB0ZXN0RmFpbGVkKGYgKyAiIHNob3VsZCB0aHJvdyBleGNl
cHRpb24gIiArIGV4VHlwZSArICIuIFdhcyB1bmRlZmluZWQuIik7CisgIGVsc2UKKyAgICB0ZXN0
RmFpbGVkKGYgKyAiIHNob3VsZCB0aHJvdyBleGNlcHRpb24gIiArIGV4VHlwZSArICIuIFdhcyAi
ICsgX2F2ICsgIi4iKTsKK30KKworZnVuY3Rpb24gZm5TaG91bGROb3RUaHJvdyhmKQoreworICB0
cnkgeworICAgIGYoKTsKKyAgICB0ZXN0UGFzc2VkKGYgKyAiIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uIik7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICB0ZXN0RmFpbGVkKGYgKyAiIHRocmV3IGFu
IGV4Y2VwdGlvbiAiICsgZSArICIgd2hlbiBubyBleGNlcHRpb24gZXhwZWN0ZWQiKTsKKyAgfQor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvanMva2RlL3Jlc291cmNlcy9vcGVyYXRvcnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9qcy9rZGUvcmVzb3VyY2VzL29wZXJhdG9ycy5qcwkocmV2aXNpb24gMjUzODUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2pzL2tkZS9yZXNvdXJjZXMvb3BlcmF0b3JzLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC04LDYgKzgsMTQgQEAgc2hvdWxkQmVUcnVlKCIhMCIpOwogc2hvdWxkQmVUcnVl
KCIhISdhJyIpOwogc2hvdWxkQmVUcnVlKCIhJyciKTsKIAorLy8gdW5hcnkgcGx1cworc2hvdWxk
QmUoIis5IiwgIjkiKTsKK3Nob3VsZEJlKCJ2YXIgaSA9IDEwOyAraSIsICIxMCIpOworCisvLyBu
ZWdhdGlvbgorc2hvdWxkQmUoIi0xMSIsICItMTEiKTsKK3Nob3VsZEJlKCJ2YXIgaSA9IDEyOyAt
aSIsICItMTIiKTsKKwogLy8gaW5jcmVtZW50CiBzaG91bGRCZSgidmFyIGkgPSAwOyArK2k7Iiwg
IjEiKTsKIHNob3VsZEJlKCJ2YXIgaSA9IDA7ICsraTsgaSIsICIxIik7CkBAIC0yNyw2ICszNSw4
IEBAIHNob3VsZEJlKCJ2YXIgaSA9IHRydWU7IGktLTsgaSIsICIwIik7CiAvLyBiaXR3aXNlIG9w
ZXJhdG9ycwogc2hvdWxkQmUoIn4wIiwgIi0xIik7CiBzaG91bGRCZSgifjEiLCAiLTIiKTsKK3No
b3VsZEJlKCJ+TmFOIiwgIi0xIik7CitzaG91bGRCZSgifkluZmluaXR5IiwgIi0xIik7CiBzaG91
bGRCZSgifk1hdGgucG93KDIsIDMzKSIsICItMSIpOyAvLyAzMiBiaXQgb3ZlcmZsb3cKIHNob3Vs
ZEJlKCJ+KE1hdGgucG93KDIsIDMyKSArIE1hdGgucG93KDIsIDMxKSArIDIpIiwKICAgICAgICAg
ICIyMTQ3NDgzNjQ1Iik7IC8vIGEgc2lnbmVkbmVzcyBpc3N1ZQpAQCAtNDQsNiArNTQsMjEgQEAg
c2hvdWxkQmUoIi04ID4+IDI0IiwgIi0xIik7CiBzaG91bGRCZSgiOCA+Pj4gMiIsICIyIik7CiBz
aG91bGRCZSgiLTggPj4+IDI0IiwgIjI1NSIpOwogc2hvdWxkQmUoIigtMjIwMDAwMDAwMCA+PiAx
KSA8PCAxIiwgIjIwOTQ5NjcyOTYiKTsKK3Nob3VsZEJlKCJJbmZpbml0eSA+PiAxIiwgIjAiKTsK
K3Nob3VsZEJlKCJJbmZpbml0eSA8PCAxIiwgIjAiKTsKK3Nob3VsZEJlKCJJbmZpbml0eSA+Pj4g
MSIsICIwIik7CitzaG91bGRCZSgiTmFOID4+IDEiLCAiMCIpOworc2hvdWxkQmUoIk5hTiA8PCAx
IiwgIjAiKTsKK3Nob3VsZEJlKCJOYU4gPj4+IDEiLCAiMCIpOworc2hvdWxkQmUoIjguMSA+PiAx
IiwgIjQiKTsKK3Nob3VsZEJlKCI4LjEgPDwgMSIsICIxNiIpOworc2hvdWxkQmUoIjguMSA+Pj4g
MSIsICI0Iik7CitzaG91bGRCZSgiOC45ID4+IDEiLCAiNCIpOworc2hvdWxkQmUoIjguOSA8PCAx
IiwgIjE2Iik7CitzaG91bGRCZSgiOC45ID4+PiAxIiwgIjQiKTsKK3Nob3VsZEJlKCJNYXRoLnBv
dygyLCAzMikgPj4gMSIsICIwIik7CitzaG91bGRCZSgiTWF0aC5wb3coMiwgMzIpIDw8IDEiLCAi
MCIpOworc2hvdWxkQmUoIk1hdGgucG93KDIsIDMyKSA+Pj4gMSIsICIwIik7CiAKIC8vIGFkZGl0
aW9uCiBzaG91bGRCZSgiMSsyIiwgIjMiKTsKQEAgLTE4MCw2ICsyMDUsOCBAQCBzaG91bGRCZSgi
TmFOID09PSBOYU4iLCAiZmFsc2UiKTsKIHNob3VsZEJlKCIwLjAgPT09IDAiLCAidHJ1ZSIpOwog
c2hvdWxkQmUoIidhYmMnID09PSAnYWJjJyIsICJ0cnVlIik7CiBzaG91bGRCZSgiJ2EnID09PSAn
eCciLCAiZmFsc2UiKTsKK3Nob3VsZEJlKCIxID09PSAnMSciLCAiZmFsc2UiKTsKK3Nob3VsZEJl
KCInMScgPT09IDEiLCAiZmFsc2UiKTsKIHNob3VsZEJlKCJ0cnVlID09PSB0cnVlIiwgInRydWUi
KTsKIHNob3VsZEJlKCJmYWxzZSA9PT0gZmFsc2UiLCAidHJ1ZSIpOwogc2hvdWxkQmUoInRydWUg
PT09IGZhbHNlIiwgImZhbHNlIik7CkBAIC0yMTYsNCArMjQzLDQgQEAgc2hvdWxkQmVUcnVlKCIn
YScgaW4geyBhOjEsIGI6MiB9Iik7CiBzaG91bGRCZSgiKG5ldyBCb29sZWFuKCkpIGluc3RhbmNl
b2YgQm9vbGVhbiIsICJ0cnVlIik7CiBzaG91bGRCZSgiKG5ldyBCb29sZWFuKCkpIGluc3RhbmNl
b2YgTnVtYmVyIiwgImZhbHNlIik7CiAKLXN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWUKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9rZGUv
cmVzb3VyY2VzL3Njb3BlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMva2Rl
L3Jlc291cmNlcy9zY29wZS5qcwkocmV2aXNpb24gMjUzODUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2tkZS9yZXNvdXJjZXMvc2NvcGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTYsNCArNiwzMSBA
QCB3aXRoIChiKSB7CiB9CiAKIHNob3VsZEJlKCJmKDIpIiwgIjIyIik7Ci1zdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlCisKK3ZhciBPQkpFQ1QgPSBuZXcgTXlPYmplY3QoICJoZWxsbyIgKTsKK2Z1
bmN0aW9uIE15T2JqZWN0KHZhbHVlKSB7CisgICAgdGhpcy52YWx1ZSA9IHZhbHVlOworICAgIHRo
aXMudG9TdHJpbmcgPSBuZXcgRnVuY3Rpb24oICJyZXR1cm4gdGhpcy52YWx1ZSsnJyIgKTsKKyAg
ICByZXR1cm4gdGhpczsKK30KK3Nob3VsZEJlKCJPQkpFQ1QudG9TdHJpbmcoKSIsICInaGVsbG8n
Iik7Cit2YXIgczsKK3dpdGggKE9CSkVDVCkgeworICAgIHMgPSB0b1N0cmluZygpOworfQorc2hv
dWxkQmUoInMiLCAiJ2hlbGxvJyIpOworCisKKy8vIE1ha2Ugc3VyZSB0aGF0IGZvciAuLi4gaW4g
cmVldmFsdWF0ZXMgdGhlIHNjb3BpbmcgZXZlcnkgdGltZSEKK1AgPSB7IGZvbyA6IDEsIGJhciA6
IDIsIGJheiA6IDMgfQorCitmdW5jdGlvbiB0ZXN0Rm9ySW4oKSB7CisgICBmb3IgKGcgaW4gUCkg
eworICAgICAgICBldmFsKCJ2YXIgZzsiKSAvL0NoYW5nZSB0aGUgc2NvcGUgb2YgZyBoYWxmLXdh
eXMgdGhyb3VnaCB0aGUgbG9vcAorICAgfQorfQorCit0ZXN0Rm9ySW4oKTsKK3Nob3VsZEJlKCJn
IiwgIidmb28nIik7IC8vQmVmb3JlIHRoZSBldmFsLCBnIHdhcyBpbiBvdXRlciBzY29wZSwgYnV0
IG5vdCBhZnRlciEKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9yZWhhc2gtYXNzaWduLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL3JlaGFzaC1hc3NpZ24uanMJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9yZWhhc2gtYXNzaWduLmpzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNSBAQAorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYXNz
aWdubWVudHMgdG8gZ2xvYmFsIHZhcmlhYmxlcyBiZWhhdmUgcHJvcGVybHkgd2hlbiB0aGUgcHJv
cGVydHkgdGFibGUgaXMgcmVoYXNoZWQuIik7CisKK3ZhciByZXN1bHQ7CisKK3Jlc3VsdCA9IChm
dW5jdGlvbigpIHsKKyAgICBhID0gMDsKKyAgICBiID0gMTsKKyAgICBjID0gMjsKKyAgICBkID0g
MzsKKyAgICBlID0gNDsKKyAgICBmID0gNTsKKyAgICBnID0gNjsKKyAgICBoID0gNzsKKyAgICBp
ID0gOAorICAgIGogPSA5OworICAgIGsgPSAxMDsKKyAgICBsID0gMTE7CisgICAgbSA9IDEyOwor
ICAgIG4gPSAxMzsKKyAgICBvID0gMTQ7CisgICAgcCA9IDE1OworICAgIHEgPSAxNjsKKyAgICBy
ID0gMTc7CisgICAgcyA9IDE4OworICAgIHQgPSAxOTsKKyAgICB1ID0gMjA7CisgICAgdiA9IDIx
OworICAgIHcgPSAyMjsKKyAgICB4ID0gMjM7CisgICAgeSA9IDI0OworICAgIHogPSAyNTsKKyAg
ICBhYSA9IDA7CisgICAgYmIgPSAxOworICAgIGNjID0gMjsKKyAgICBkZCA9IDM7CisgICAgZWUg
PSA0OworICAgIGZmID0gNTsKKyAgICBnZyA9IDY7CisgICAgaGggPSA3OworICAgIGlpID0gODsK
KyAgICBqaiA9IDk7CisgICAga2sgPSAxMDsKKyAgICBsbCA9IDExOworICAgIG1tID0gMTI7Cisg
ICAgbm4gPSAxMzsKKyAgICBvbyA9IDE0OworICAgIHBwID0gMTU7CisgICAgcXEgPSAxNjsKKyAg
ICByciA9IDE3OworICAgIHNzID0gMTg7CisgICAgdHQgPSAxOTsKKyAgICB1dSA9IDIwOworICAg
IHZ2ID0gMjE7CisgICAgd3cgPSAyMjsKKyAgICB4eCA9IDIzOworICAgIHl5ID0gMjQ7CisgICAg
enogPSAyNTsKKyAgICBhYWEgPSAwOworICAgIGJiYiA9IDE7CisgICAgY2NjID0gMjsKKyAgICBk
ZGQgPSAzOworICAgIGVlZSA9IDQ7CisgICAgZmZmID0gNTsgICAgICAgICAgICAgICAgICAgICAg
ICAKKyAgICBnZ2cgPSA2OworICAgIGhoaCA9IDc7CisgICAgaWlpID0gODsKKyAgICBqamogPSA5
OworICAgIGtrayA9IDEwOworICAgIGxsbCA9IDExOworICAgIG1tbSA9IDEyOworICAgIG5ubiA9
IDEzOworICAgIG9vbyA9IDE0OworICAgIHBwcCA9IDE1OworICAgIHFxcSA9IDE2OworICAgIHJy
ciA9IDE3OworICAgIHNzcyA9IDE4OworICAgIHR0dCA9IDE5OworICAgIHV1dSA9IDIwOworICAg
IHZ2diA9IDIxOworICAgIHd3dyA9IDIyOworICAgIHh4eCA9IDIzOworICAgIHl5eSA9IDI0Owor
ICAgIHp6eiA9IDI1OworICAgIGFhYWEgPSAwOworICAgIGJiYmIgPSAxOworICAgIGNjY2MgPSAy
OworICAgIGRkZGQgPSAzOworICAgIGVlZWUgPSA0OworICAgIGZmZmYgPSA1OworICAgIGdnZ2cg
PSA2OworICAgIGhoaGggPSA3OworICAgIGlpaWkgPSA4OworICAgIGpqamogPSA5OworICAgIGtr
a2sgPSAxMDsKKyAgICBsbGxsID0gMTE7CisgICAgbW1tbSA9IDEyOworICAgIG5ubm4gPSAxMzsK
KyAgICBvb29vID0gMTQ7CisgICAgcHBwcCA9IDE1OworICAgIHFxcXEgPSAxNjsKKyAgICBycnJy
ID0gMTc7CisgICAgc3NzcyA9IDE4OworICAgIHR0dHQgPSAxOTsKKyAgICB1dXV1ID0gMjA7Cisg
ICAgdnZ2diA9IDIxOworICAgIHd3d3cgPSAyMjsKKyAgICB4eHh4ID0gMjM7CisgICAgeXl5eSA9
IDI0OworICAgIHp6enogPSAyNTsKKyAgICByZXR1cm4gMTsKK30pKCk7CisKK3Nob3VsZEJlKHJl
c3VsdC50b1N0cmluZygpLCAiMSIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL3Jlc2l6ZS1hcnJheS1hc3NpZ24u
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvcmVzaXplLWFy
cmF5LWFzc2lnbi5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL3Jlc2l6ZS1hcnJheS1hc3NpZ24uanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAK
K2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGFzc2lnbm1lbnRzIGludG8gYXJyYXlzIGJlaGF2ZSBw
cm9wZXJseSBhZnRlciB0aGUgYXJyYXkgaXMgcmVzaXplZC4iKQorCitmdW5jdGlvbiByZXNpemUo
WCkgeworICBYWzk5OTldID0gMDsKKyAgcmV0dXJuIDE7Cit9CisKK2Z1bmN0aW9uIGdldFplcm90
aEVudHJ5KFgpIHsKKyAgcmV0dXJuIFhbMF07Cit9CisKK3ZhciBBID0gbmV3IEFycmF5KCk7CitB
WzBdID0gMDsKK0FbMF0gPSByZXNpemUoQSk7CisKK3Nob3VsZEJlKGdldFplcm90aEVudHJ5KEEp
LnRvU3RyaW5nKCksICIxIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXRO
b2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2Rl
LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1Mzg1KQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtSlNUYXJnZXRO
b2RlLW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdp
dGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMv
Y2hpbGRXaXRoQnV0dG9uLmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBt
YXRjaC4KIAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0
IG9mIGV4cHJlc3Npb24gYWxlcnQpIGlzIG5vdCBvYmplY3QuCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBhbGVydCkgaXMgbm90
IGFuIG9iamVjdC4KIFRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVu
dExpc3RlbmVycyBvbiBhbiBFdmVudFRhcmdldCB1c2luZyBhZGRFdmVudExpc3RlbmVyIGlzIHRo
ZSB0YXJnZXQgbm9kZXMgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQyKS4gVGhpcyB0ZXN0
IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRoIHRoZSBkb21haW4g
b2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlwdCIgd2FybmluZyBp
cyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAgCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1KU1RhcmdldE5vZGUtb25jbGljay1zaG9ydGN1dC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9saXN0ZW5lci94c3MtSlNUYXJnZXROb2RlLW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNTM4NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlz
dGVuZXIveHNzLUpTVGFyZ2V0Tm9kZS1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNh
ZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZy
b20gZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2xpc3RlbmVy
L3Jlc291cmNlcy9jaGlsZFdpdGhCdXR0b24uaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBw
b3J0cyBtdXN0IG1hdGNoLgogCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogVmFsdWUgdW5kZWZp
bmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBhbGVydCkgaXMgbm90IG9iamVjdC4KK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA2OiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIGFs
ZXJ0KSBpcyBub3QgYW4gb2JqZWN0LgogVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBz
ZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIGFuIEV2ZW50VGFyZ2V0IHdpdGggdGhlIHNob3J0Y3V0
IChvbmNsaWNrLCBldGMpLCBpcyB0aGUgdGFyZ2V0IG5vZGVzIGZyYW1lLiAocmRhcjovL3Byb2Js
ZW0vNTQyNjE0MikuIFRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBk
aWFsb2cgd2l0aCB0aGUgZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZl
IEphdmFTY3JpcHQiIHdhcm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgogCiAgIApJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJl
cXVlc3QtYWRkRXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRk
RXZlbnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1Mzg1KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVlc3QtYWRkRXZl
bnRMaXN0ZW5lci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9jcm9zcy1mcmFtZS1pZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvY2hpbGRXaXRoWE1MSHR0cFJl
cXVlc3QuaHRtbC4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgNjogVmFsdWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVz
c2lvbiBhbGVydCkgaXMgbm90IG9iamVjdC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBWYWx1
ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHByZXNzaW9uIGFsZXJ0KSBpcyBub3QgYW4gb2JqZWN0
LgogVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVzZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJz
IG9uIGFuIFhNTEh0dHBSZXF1ZXN0IHVzaW5nIGFkZEV2ZW50TGlzdGVuZXIsIGlzIHRoZSByZXF1
ZXN0cyBmcmFtZS4gKHJkYXI6Ly9wcm9ibGVtLzU0MjYxNDIpLiBUaGlzIHRlc3QgcGFzc2VzIGlm
IHlvdSBkb24ndCBzZWUgYW4gYWxlcnQgZGlhbG9nIHdpdGggdGhlIGRvbWFpbiBvZiAibG9jYWxo
b3N0IiBpbiBpdCBhbmQgYW4gIlVuc2FmZSBKYXZhU2NyaXB0IiB3YXJuaW5nIGlzIGxvZ2dlZCB0
byB0aGUgY29uc29sZS4KIAogICAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbGlzdGVuZXIveHNzLVhNTEh0dHBSZXF1ZXN0LXNob3J0Y3V0LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy1Y
TUxIdHRwUmVxdWVzdC1zaG9ydGN1dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1Mzg1KQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3MtWE1MSHR0cFJlcXVl
c3Qtc2hvcnRjdXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNj
ZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJj
ZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvbGlzdGVuZXIvcmVzb3VyY2VzL2NoaWxkV2l0aFhNTEh0dHBS
ZXF1ZXN0Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KIAot
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJl
c3Npb24gYWxlcnQpIGlzIG5vdCBvYmplY3QuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogVmFs
dWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBhbGVydCkgaXMgbm90IGFuIG9iamVj
dC4KIFRoaXMgdGVzdHMgdGhhdCBmcmFtZSB1c2VkIHdoZW4gc2V0dGluZyBldmVudExpc3RlbmVy
cyBvbiBhbiBYTUxIdHRwUmVxdWVzdCB3aXRoIHRoZSBzaG9ydGN1dCAob25yZWFkeXN0YXRlY2hh
bmdlKSwgaXMgdGhlIHJlcXVlc3RzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRo
aXMgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUg
ZG9tYWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdh
cm5pbmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgogCiAgIApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZlbnRM
aXN0ZW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDI1Mzg1KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stYWRkRXZlbnRMaXN0ZW5lci1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiBDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBV
UkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1p
ZnJhbWUuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9saXN0ZW5lci9yZXNvdXJjZXMvY2hpbGRXaW5kb3cuaHRtbC4gRG9tYWlucywgcHJvdG9j
b2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgogCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogVmFs
dWUgdW5kZWZpbmVkIChyZXN1bHQgb2YgZXhwcmVzc2lvbiBhbGVydCkgaXMgbm90IG9iamVjdC4K
K0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBWYWx1ZSB1bmRlZmluZWQgKHJlc3VsdCBvZiBleHBy
ZXNzaW9uIGFsZXJ0KSBpcyBub3QgYW4gb2JqZWN0LgogVGhpcyB0ZXN0cyB0aGF0IGZyYW1lIHVz
ZWQgd2hlbiBzZXR0aW5nIGV2ZW50TGlzdGVuZXJzIG9uIHRoZSB3aW5kb3cgdXNpbmcgYWRkRXZl
bnRMaXN0ZW5lciBpcyB0aGUgd2luZG93J3MgZnJhbWUuIChyZGFyOi8vcHJvYmxlbS81NDI2MTQy
KS4gVGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3UgZG9uJ3Qgc2VlIGFuIGFsZXJ0IGRpYWxvZyB3aXRo
IHRoZSBkb21haW4gb2YgImxvY2FsaG9zdCIgaW4gaXQgYW5kIGFuICJVbnNhZmUgSmF2YVNjcmlw
dCIgd2FybmluZyBpcyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUuCiAKICAgCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2xpc3RlbmVyL3hzcy13aW5kb3ctb25jbGljay1zaG9y
dGN1dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9saXN0ZW5lci94c3Mtd2luZG93LW9uY2xpY2stc2hvcnRjdXQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyNTM4NSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbGlz
dGVuZXIveHNzLXdpbmRvdy1vbmNsaWNrLXNob3J0Y3V0LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2
YVNjcmlwdCBhdHRlbXB0IHRvIGFjY2VzcyBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5odG1sIGZyb20gZnJh
bWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2xpc3RlbmVyL3Jlc291
cmNlcy9jaGlsZFdpbmRvdy5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3Qg
bWF0Y2guCiAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBWYWx1ZSB1bmRlZmluZWQgKHJlc3Vs
dCBvZiBleHByZXNzaW9uIGFsZXJ0KSBpcyBub3Qgb2JqZWN0LgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDY6IFZhbHVlIHVuZGVmaW5lZCAocmVzdWx0IG9mIGV4cHJlc3Npb24gYWxlcnQpIGlzIG5v
dCBhbiBvYmplY3QuCiBUaGlzIHRlc3RzIHRoYXQgZnJhbWUgdXNlZCB3aGVuIHNldHRpbmcgZXZl
bnRMaXN0ZW5lcnMgb24gdGhlIHdpbmRvdyB3aXRoIHRoZSBzaG9ydGN1dCAob25jbGljaywgZXRj
KSwgaXMgdGhlIHdpbmRvdydzIGZyYW1lLiAocmRhcjovL3Byb2JsZW0vNTQyNjE0MikuIFRoaXMg
dGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbiBhbGVydCBkaWFsb2cgd2l0aCB0aGUgZG9t
YWluIG9mICJsb2NhbGhvc3QiIGluIGl0IGFuZCBhbiAiVW5zYWZlIEphdmFTY3JpcHQiIHdhcm5p
bmcgaXMgbG9nZ2VkIHRvIHRoZSBjb25zb2xlLgogCiAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>16490</attachid>
            <date>2007-10-01 16:27:25 -0700</date>
            <delta_ts>2007-10-01 16:27:25 -0700</delta_ts>
            <desc>reduction</desc>
            <filename>scratch.js</filename>
            <type>text/plain</type>
            <size>87</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">dmFyIHNjcmlwdCA9ICIiOwpmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgaSsrKSB7CiAgICBz
Y3JpcHQgKz0gIjsiOwp9CgpldmFsKHNjcmlwdCk7
</data>

          </attachment>
      

    </bug>

</bugzilla>