<?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>3492</bug_id>
          
          <creation_ts>2005-06-12 20:55:05 -0700</creation_ts>
          <short_desc>TreeWalker implementation needs to be fixed (affects Acid3)</short_desc>
          <delta_ts>2019-02-06 09:03:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>412</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>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>17064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric</cc>
    
    <cc>Graham.Dennis</cc>
    
    <cc>ian</cc>
    
    <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>11674</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-12 20:55:06 -0700</bug_when>
    <thetext>I started investigating TreeWalker the other day, and learned:

    1) All the layout tests in layout-tests/traversal have incorrect results checked in.
    2) The implementation doesn&apos;t really come close on handling cases where many nodes are filtered 
out. It has a bunch of incorrect assumptions in the various operation implementations.
    3) The code does not do enough referencing of nodes it&apos;s holding on to -- must remember that the 
filter function can be arbitrary JavaScript, so a node could be removed from the document and all other 
references released at any time.
    4) There&apos;s an &quot;ancestorRejected&quot; function in there that can&apos;t possibly be used in a correct 
implementation; a careful reading of the DOM specification makes it clear that you never have to look at 
your ancestors -- you simply have to look at parents as you encounter them during the tree walk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11676</commentid>
    <comment_count>1</comment_count>
      <attachid>2285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-12 21:04:03 -0700</bug_when>
    <thetext>Created attachment 2285
Here&apos;s a partial patch with my work in progress to fix this.

The implementation is about 80% there. Need to add a lot of new test cases,
though. This simply includes the existing test cases, but fixed to quickly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11677</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-12 21:10:07 -0700</bug_when>
    <thetext>I meant to say &quot;fixed to write out results in text form, and with results that I believe may be correct&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11693</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-06-12 23:44:26 -0700</bug_when>
    <thetext>Assigning to Darin since he is working on it. Also, have you checked out the KDOM implementation of 
TreeWalker? I think they have a complete and well-tested implementation which may be easy to port to 
our DOM.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11710</commentid>
    <comment_count>4</comment_count>
    <who name="Ian &apos;Hixie&apos; Hickson">ian</who>
    <bug_when>2005-06-13 03:43:46 -0700</bug_when>
    <thetext>In theory if I write any tests they&apos;ll end up here:
   http://hixie.ch/tests/adhoc/dom/traversal/
I don&apos;t have any at the moment, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11885</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-14 08:53:30 -0700</bug_when>
    <thetext>Maybe KDOM is the right place to get it from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>11901</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-06-14 11:43:17 -0700</bug_when>
    <thetext>Actually, the KDO guys tell me their implementation is mostly untested, so continuing with this fix might 
be better after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17748</commentid>
    <comment_count>7</comment_count>
      <attachid>3609</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-27 09:23:14 -0700</bug_when>
    <thetext>Created attachment 3609
another patch -- not sure if it&apos;s better than the first try</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57506</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-09-30 14:43:30 -0700</bug_when>
    <thetext>Hum.  Perhaps a better way to go about fixing this would be to break out the tests (land them even) and then go about fixing them one at a time.  Doesn&apos;t require as long an attention span. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57523</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-09-30 21:17:17 -0700</bug_when>
    <thetext>I don&apos;t believe any new tests were added, just if (window.layoutTestController) layoutTestController.dumpAsText(); was added to each test and they have new/correct output.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66579</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-08 13:05:23 -0800</bug_when>
    <thetext>I have a new version that I think is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66634</commentid>
    <comment_count>11</comment_count>
      <attachid>18345</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-08 22:51:04 -0800</bug_when>
    <thetext>Created attachment 18345
patch -- seems to be great, but needs some more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66685</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-09 14:31:21 -0800</bug_when>
    <thetext>Things I need to do to get this patch in better shape:

    1) catch the ObjC exceptions in the ObjC filter class (look at acceptNode implementations)
    2) add tests for the various things I fixed besides the exception propagation

To make a thorough enough set of tests, I&apos;ll need to think about a separate test for each thing I fixed and also look at the tests already attached to bug 16743, bug 16744, and bug 16759.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>66687</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-09 14:31:53 -0800</bug_when>
    <thetext>*** Bug 16759 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67560</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-17 17:42:36 -0800</bug_when>
    <thetext>FYI, this patch changes behavior on the Acid3 test:

Test 6: expected [object HTMLTitleElement], got: null - failed to handle regrafting correctly
is now fixed.

Test 5: expected ,, got: . - expectation 22 failed
has changed to:
Test 5: expected [object HTMLBodyElement], got: null - expectation 20 failed

Tests 2 and 4 remain the same (failures)

Test 1: method [object NodeIterator].nextNode() didn&apos;t forward exception
has changed to:
Test 1: expected null, got: [object HTMLBodyElement] - w.nextSibling() didn&apos;t return the right node
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67566</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-17 17:59:36 -0800</bug_when>
    <thetext>It looks like Hixie already has a small suite of DOM Traversal tests:

http://www.hixie.ch/tests/adhoc/dom/traversal/

for both NodeIterator and TreeWalker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67567</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-17 18:01:53 -0800</bug_when>
    <thetext>With your patch applied we fail:

http://www.hixie.ch/tests/adhoc/dom/traversal/node-iterator/001.xml
http://www.hixie.ch/tests/adhoc/dom/traversal/node-iterator/002.xml
http://www.hixie.ch/tests/adhoc/dom/traversal/node-iterator/010.xml

It turns out there are no TreeWalker tests. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67637</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-01-18 16:00:22 -0800</bug_when>
    <thetext>Maks Orlovich just checked in a new implementation for KHTML that might be usable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68116</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-01-24 10:46:55 -0800</bug_when>
    <thetext>The KDE folks made similar fixes:
http://websvn.kde.org/?view=rev&amp;revision=763246
http://websvn.kde.org/?view=rev&amp;revision=763253

We should at least check out their test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69273</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-03 14:29:43 -0800</bug_when>
    <thetext>http://www.hixie.ch/tests/adhoc/dom/traversal/node-iterator/001.xml fails because we don&apos;t parse an empty CDATA. I&apos;m going to change a copy of the tests so I can use the rest of it; we could use a separate bug about that problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69293</commentid>
    <comment_count>20</comment_count>
      <attachid>18894</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-03 18:10:03 -0800</bug_when>
    <thetext>Created attachment 18894
much better patch -- not perfect on Acid3, but makes us pass 4 more tests (from 69 to 73 when I tried it)

This patch fixes a *lot* of little issues. I grabbed the test case that Maks made for KHTML and we now pass that.

But there&apos;s still some work needed to pass the Acid3 tests, including some possible tweaks needed to the tests. I think this is far enough along that it probably would be good to review and land it even though it&apos;s not enough to pass all the relevant Acid3 tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69295</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-03 18:15:57 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; This patch fixes a *lot* of little issues. I grabbed the test case that Maks
&gt; made for KHTML and we now pass that.

Oh, and also all of Hixie&apos;s NodeIterator tests, which are also in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69314</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-03 23:10:20 -0800</bug_when>
    <thetext>You must mean from 71 to 75. :)  or 76 once I post (and land) an improved copy of bug 17125.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69681</commentid>
    <comment_count>23</comment_count>
      <attachid>18894</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-07 09:36:23 -0800</bug_when>
    <thetext>Comment on attachment 18894
much better patch -- not perfect on Acid3, but makes us pass 4 more tests (from 69 to 73 when I tried it)

// FIXME: Should we add takeException as a member of ExecState?
IMO: yes.

if (exec-&gt;hadException()) {
    exception = takeException(exec);
    return NodeFilter::FILTER_REJECT;
}
These could be even shorter using a helper:
return rejectNodeWithException(exec);

:sigh:
We should file a bug about extending the js bindings mechanism to handle the exception passing implemented by JSTreeWalkerCustom.cpp
[PassesException] or [RethrowsException]

const Node *n = this;
Node* traversePreviousSiblingPostOrder(const Node *stayWithin = 0) const;

Seems slightly silly to clear &quot;exception&quot; every time through the loop in Node* NodeIterator::nextNode(ExceptionCode&amp; ec, JSValue*&amp; exception)

 153 void NodeIterator::notifyBeforeNodeRemoval(Node* removedNode)
has:
//updateForNodeRemoval(removedNode, m_candidateNode);

I think this check in TreeWalker::parentNode() to avoid the ref churn is probably unnecessary:
    if (m_current == root())
 56         return 0;

It might be worth adding a private helper function:
bool shouldAcceptNode(Node*, JSValue*&amp; exception); due to how many times the rather-long: acceptNode(m_candidateNode.node.get(), exception) == NodeFilter::FILTER_ACCEPT string used.

It would also be nice if this common hunk of code could be pushed into a common function:
if (acceptNodeResult == NodeFilter::FILTER_ACCEPT) {
 280             m_current = node.release();
 281             return m_current.get();
 282         }

Overall this looks great!  Certainly much much better than what&apos;s currently in TOT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69756</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-08 02:09:35 -0800</bug_when>
    <thetext>I made some of your suggested changes, and left others for the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69758</commentid>
    <comment_count>25</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-08 02:36:01 -0800</bug_when>
    <thetext>Committed revision 30089.

There may be Acid3 issues remaining, but we should track them with new/separate bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503072</commentid>
    <comment_count>26</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:03:57 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2285</attachid>
            <date>2005-06-12 21:04:03 -0700</date>
            <delta_ts>2008-01-08 22:51:04 -0800</delta_ts>
            <desc>Here&apos;s a partial patch with my work in progress to fix this.</desc>
            <filename>TreeWalkerPatch.txt</filename>
            <type>text/plain</type>
            <size>49345</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IC4va2h0bWwveG1sL2RvbTJfdHJhdmVyc2FsaW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwveG1sL2RvbTJfdHJhdmVyc2FsaW1wbC5jcHAs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAtcCAtdSAtcCAtdSAtcjEuMTAgLi9raHRt
bC94bWwvZG9tMl90cmF2ZXJzYWxpbXBsLmNwcAotLS0gLi9raHRtbC94bWwvZG9tMl90cmF2ZXJz
YWxpbXBsLmNwcAkxMCBNYXkgMjAwNSAyMTo1OToxNCAtMDAwMAkxLjEwCisrKyAuL2todG1sL3ht
bC9kb20yX3RyYXZlcnNhbGltcGwuY3BwCTEzIEp1biAyMDA1IDAzOjQzOjAxIC0wMDAwCkBAIC03
MSw3ICs3MSw3IEBAIFRyYXZlcnNhbEltcGw6On5UcmF2ZXJzYWxJbXBsKCkKIHNob3J0IFRyYXZl
cnNhbEltcGw6OmFjY2VwdE5vZGUoTm9kZUltcGwgKm5vZGUpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IElmIFhNTCBpcyBpbXBsZW1lbnRlZCB3ZSBoYXZlIHRvIGNoZWNrIGV4cGFuZEVudGl0eVJl
cmVmZW5jZXMgaW4gdGhpcyBmdW5jdGlvbi4KLSAgICAvLyBUaGUgYmlkIHR3aWRkbGluZyBoZXJl
IGlzIGRvbmUgdG8gbWFwIERPTSBub2RlIHR5cGVzLCB3aGljaCBhcmUgZ2l2ZW4gYXMgaW50ZWdl
cnMgZnJvbQorICAgIC8vIFRoZSBiaXQgdHdpZGRsaW5nIGhlcmUgaXMgZG9uZSB0byBtYXAgRE9N
IG5vZGUgdHlwZXMsIHdoaWNoIGFyZSBnaXZlbiBhcyBpbnRlZ2VycyBmcm9tCiAgICAgLy8gMSB0
aHJvdWdoIDEyLCB0byB3aGF0VG9TaG93IGJpdCBtYXNrcy4KICAgICBpZiAobm9kZSAmJiAoKDEg
PDwgKG5vZGUtPm5vZGVUeXBlKCktMSkpICYgbV93aGF0VG9TaG93KSAhPSAwKQogICAgICAgICAv
LyBjYXN0IHRvIHNob3J0IHNpbGVuY2VzICJlbnVtZXJhbCBhbmQgbm9uLWVudW1lcmFsIHR5cGVz
IGluIHJldHVybiIgd2FybmluZwpAQCAtMjYwLDE0ICsyNjAsNyBAQCB2b2lkIE5vZGVJdGVyYXRv
ckltcGw6Om5vdGlmeUJlZm9yZU5vZGVSCiBUcmVlV2Fsa2VySW1wbDo6VHJlZVdhbGtlckltcGwo
Tm9kZUltcGwgKnJvb3ROb2RlLCBsb25nIHdoYXRUb1Nob3csIE5vZGVGaWx0ZXJJbXBsICpmaWx0
ZXIsIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcykKICAgICA6IFRyYXZlcnNhbEltcGwocm9v
dE5vZGUsIHdoYXRUb1Nob3csIGZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcyksIG1fY3Vy
cmVudChyb290Tm9kZSkKIHsKLSAgICBpZiAoY3VycmVudE5vZGUoKSkKLSAgICAgICAgY3VycmVu
dE5vZGUoKS0+cmVmKCk7Ci19Ci0KLVRyZWVXYWxrZXJJbXBsOjp+VHJlZVdhbGtlckltcGwoKQot
ewotICAgIGlmIChjdXJyZW50Tm9kZSgpKQotICAgICAgICBjdXJyZW50Tm9kZSgpLT5kZXJlZigp
OworICAgIGFzc2VydChyb290Tm9kZSk7CiB9CiAKIHZvaWQgVHJlZVdhbGtlckltcGw6OnNldEN1
cnJlbnROb2RlKE5vZGVJbXBsICpub2RlLCBpbnQgJmV4Y2VwdGlvbmNvZGUpCkBAIC0yNzcsMTEz
ICsyNzAsMTM5IEBAIHZvaWQgVHJlZVdhbGtlckltcGw6OnNldEN1cnJlbnROb2RlKE5vZGUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChub2RlID09IG1fY3VycmVudCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIE5vZGVJbXBsICpvbGQgPSBtX2N1cnJlbnQ7Ci0gICAgbV9j
dXJyZW50ID0gbm9kZTsKLSAgICBpZiAobV9jdXJyZW50KQotICAgICAgICBtX2N1cnJlbnQtPnJl
ZigpOwotICAgIGlmIChvbGQpCi0gICAgICAgIG9sZC0+ZGVyZWYoKTsKLX0KLQotdm9pZCBUcmVl
V2Fsa2VySW1wbDo6c2V0Q3VycmVudE5vZGUoTm9kZUltcGwgKm5vZGUpCi17Ci0gICAgYXNzZXJ0
KG5vZGUpOwotICAgIGludCBkdW1teTsKLSAgICBzZXRDdXJyZW50Tm9kZShub2RlLCBkdW1teSk7
CisgICAgbV9jdXJyZW50LnJlc2V0KG5vZGUpOwogfQogCiBOb2RlSW1wbCAqVHJlZVdhbGtlcklt
cGw6OnBhcmVudE5vZGUoKQogewotICAgIE5vZGVJbXBsICpyZXN1bHQgPSAwOwotICAgIGZvciAo
Tm9kZUltcGwgKm5vZGUgPSBjdXJyZW50Tm9kZSgpLT5wYXJlbnROb2RlKCk7IG5vZGUgJiYgbm9k
ZSAhPSByb290KCk7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGFj
Y2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkgewotICAgICAgICAg
ICAgc2V0Q3VycmVudE5vZGUobm9kZSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBub2RlOwotICAg
ICAgICAgICAgYnJlYWs7CisgICAgZm9yIChTaGFyZWRQdHI8Tm9kZUltcGw+IG5vZGUgPSBtX2N1
cnJlbnQ7IG5vZGUgIT0gcm9vdCgpOyBub2RlLnJlc2V0KG5vZGUtPnBhcmVudE5vZGUoKSkpIHsK
KyAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZS5nZXQoKSkgPT0gTm9kZUZpbHRlcjo6RklMVEVS
X0FDQ0VQVCkgeworICAgICAgICAgICAgbV9jdXJyZW50ID0gbm9kZTsKKyAgICAgICAgICAgIHJl
dHVybiBub2RlLmdldCgpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIE5vZGVJbXBsICpUcmVlV2Fsa2VySW1wbDo6Zmlyc3RDaGlsZCgp
CiB7Ci0gICAgTm9kZUltcGwgKnJlc3VsdCA9IDA7Ci0gICAgZm9yIChOb2RlSW1wbCAqbm9kZSA9
IGN1cnJlbnROb2RlKCktPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCkpIHsKLSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRlcjo6RklM
VEVSX0FDQ0VQVCkgewotICAgICAgICAgICAgc2V0Q3VycmVudE5vZGUobm9kZSk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBub2RlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgTm9kZUltcGwgKmN1
cnJlbnQgPSBtX2N1cnJlbnQuZ2V0KCk7CisgICAgU2hhcmVkUHRyPE5vZGVJbXBsPiBub2RlKGN1
cnJlbnQtPnRyYXZlcnNlTmV4dE5vZGUoY3VycmVudCkpOworICAgIHdoaWxlIChub2RlLm5vdE51
bGwoKSkgeworICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGUobm9kZS5nZXQoKSkpIHsKKyAgICAg
ICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKKyAgICAgICAgICAgICAgICBt
X2N1cnJlbnQgPSBub2RlOworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmdldCgpOworICAg
ICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOgorICAgICAgICAgICAgICAg
IG5vZGUucmVzZXQobm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyhjdXJyZW50KSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQ
OgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBub2RlLnJlc2V0KG5vZGUt
PnRyYXZlcnNlTmV4dE5vZGUoY3VycmVudCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIDA7CiB9CiAKIE5v
ZGVJbXBsICpUcmVlV2Fsa2VySW1wbDo6bGFzdENoaWxkKCkKIHsKLSAgICBOb2RlSW1wbCAqcmVz
dWx0ID0gMDsKLSAgICBmb3IgKE5vZGVJbXBsICpub2RlID0gY3VycmVudE5vZGUoKS0+bGFzdENo
aWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBp
ZiAoYWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAg
ICAgICAgICBzZXRDdXJyZW50Tm9kZShub2RlKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IG5vZGU7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBOb2RlSW1wbCAqY3VycmVudCA9IG1fY3VycmVudC5n
ZXQoKTsKKyAgICBTaGFyZWRQdHI8Tm9kZUltcGw+IG5vZGUoY3VycmVudC0+dHJhdmVyc2VQcmV2
aW91c05vZGVQb3N0T3JkZXIoY3VycmVudCkpOworICAgIHdoaWxlIChub2RlLm5vdE51bGwoKSkg
eworICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGUobm9kZS5nZXQoKSkpIHsKKyAgICAgICAgICAg
IGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKKyAgICAgICAgICAgICAgICBtX2N1cnJl
bnQgPSBub2RlOworICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmdldCgpOworICAgICAgICAg
ICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOgorICAgICAgICAgICAgICAgIG5vZGUu
cmVzZXQobm9kZS0+dHJhdmVyc2VQcmV2aW91c1NpYmxpbmdQb3N0T3JkZXIoY3VycmVudCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxU
RVJfU0tJUDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbm9kZS5yZXNl
dChub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZVBvc3RPcmRlcihjdXJyZW50KSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gMDsKIH0KIAogTm9kZUltcGwgKlRyZWVXYWxrZXJJbXBsOjpwcmV2aW91c1NpYmxp
bmcoKQogewotICAgIE5vZGVJbXBsICpyZXN1bHQgPSAwOwotICAgIGZvciAoTm9kZUltcGwgKm5v
ZGUgPSBjdXJyZW50Tm9kZSgpLT5wcmV2aW91c1NpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUt
PnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5v
ZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKLSAgICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5v
ZGUpOwotICAgICAgICAgICAgcmVzdWx0ID0gbm9kZTsKLSAgICAgICAgICAgIGJyZWFrOworICAg
IC8vIEZJWE1FOiBUaGlzIHdvbid0IHN0b3AgYW5kIHJldHVybiAwIHdoZW4gaXQgaGl0cyB0aGUg
Zmlyc3QgYWNjZXB0ZWQgYW5jZXN0b3I7IGl0IG5lZWRzIHRvLgorICAgIFNoYXJlZFB0cjxOb2Rl
SW1wbD4gbm9kZShtX2N1cnJlbnQtPnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nUG9zdE9yZGVyKHJv
b3QoKSkpOworICAgIHdoaWxlIChub2RlLm5vdE51bGwoKSkgeworICAgICAgICBzd2l0Y2ggKGFj
Y2VwdE5vZGUobm9kZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklM
VEVSX0FDQ0VQVDoKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlOworICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlLmdldCgpOworICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpG
SUxURVJfUkVKRUNUOgorICAgICAgICAgICAgICAgIG5vZGUucmVzZXQobm9kZS0+dHJhdmVyc2VQ
cmV2aW91c1NpYmxpbmdQb3N0T3JkZXIocm9vdCgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOgorICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBub2RlLnJlc2V0KG5vZGUtPnRyYXZlcnNlUHJldmlv
dXNOb2RlUG9zdE9yZGVyKHJvb3QoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIDA7CiB9CiAKIE5vZGVJ
bXBsICpUcmVlV2Fsa2VySW1wbDo6bmV4dFNpYmxpbmcoKQogewotICAgIE5vZGVJbXBsICpyZXN1
bHQgPSAwOwotICAgIGZvciAoTm9kZUltcGwgKm5vZGUgPSBjdXJyZW50Tm9kZSgpLT5uZXh0U2li
bGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAo
YWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAgICAg
ICAgICBzZXRDdXJyZW50Tm9kZShub2RlKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IG5vZGU7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAvLyBGSVhNRTogVGhpcyB3b24ndCBzdG9wIGFuZCByZXR1
cm4gMCB3aGVuIGl0IGhpdHMgdGhlIGZpcnN0IGFjY2VwdGVkIGFuY2VzdG9yOyBpdCBuZWVkcyB0
by4KKyAgICBTaGFyZWRQdHI8Tm9kZUltcGw+IG5vZGUobV9jdXJyZW50LT50cmF2ZXJzZU5leHRT
aWJsaW5nKHJvb3QoKSkpOworICAgIHdoaWxlIChub2RlLm5vdE51bGwoKSkgeworICAgICAgICBz
d2l0Y2ggKGFjY2VwdE5vZGUobm9kZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZp
bHRlcjo6RklMVEVSX0FDQ0VQVDoKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlOwor
ICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmdldCgpOworICAgICAgICAgICAgY2FzZSBOb2Rl
RmlsdGVyOjpGSUxURVJfUkVKRUNUOgorICAgICAgICAgICAgICAgIG5vZGUucmVzZXQobm9kZS0+
dHJhdmVyc2VOZXh0U2libGluZyhyb290KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1NLSVA6CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIG5vZGUucmVzZXQobm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShy
b290KCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAwOwogfQogCiBOb2RlSW1wbCAqVHJlZVdhbGtlcklt
cGw6OnByZXZpb3VzTm9kZSgpCiB7Ci0gICAgTm9kZUltcGwgKnJlc3VsdCA9IDA7Ci0gICAgZm9y
IChOb2RlSW1wbCAqbm9kZSA9IGN1cnJlbnROb2RlKCktPnRyYXZlcnNlUHJldmlvdXNOb2RlKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKSB7Ci0gICAgICAgIGlm
IChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQgJiYgIWFuY2Vz
dG9yUmVqZWN0ZWQobm9kZSkpIHsKLSAgICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5vZGUpOwot
ICAgICAgICAgICAgcmVzdWx0ID0gbm9kZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7CisjaWYgMAorICAgIFNoYXJlZFB0cjxOb2RlSW1w
bD4gbm9kZSA9IG1fY3VycmVudDsKKyAgICBzaG9ydCBhY2NlcHRlZCA9IE5vZGVGaWx0ZXI6OkZJ
TFRFUl9SRUpFQ1Q7CisgICAgc3dpdGNoIChhY2NlcHRlZCkgeworICAgICAgICBjYXNlIE5vZGVG
aWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6CisgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlOworICAg
ICAgICAgICAgcmV0dXJuIG5vZGUuZ2V0KCk7CisgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklM
VEVSX1JFSkVDVDoKKyAgICAgICAgICAgIE5vZGVJbXBsICpwcmV2aW91cyA9IG5vZGUtPnByZXZp
b3VzU2libGluZygpOworICAgICAgICAgICAgaWYgKCFwcmV2aW91cykgeworICAgICAgICAgICAg
ICAgIHByZXZpb3VzID0gbm9kZS0+cGFyZW50Tm9kZSgpOworI2VuZGlmCisgICAgcmV0dXJuIDA7
CiB9CiAKIE5vZGVJbXBsICpUcmVlV2Fsa2VySW1wbDo6bmV4dE5vZGUoKQogewotICAgIE5vZGVJ
bXBsICpyZXN1bHQgPSAwOwotICAgIGZvciAoTm9kZUltcGwgKm5vZGUgPSBjdXJyZW50Tm9kZSgp
LT50cmF2ZXJzZU5leHROb2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2Rl
KCkpIHsKLSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRlcjo6RklMVEVS
X0FDQ0VQVCAmJiAhYW5jZXN0b3JSZWplY3RlZChub2RlKSkgewotICAgICAgICAgICAgc2V0Q3Vy
cmVudE5vZGUobm9kZSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBub2RlOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgU2hhcmVkUHRyPE5vZGVJbXBsPiBub2RlKG1fY3VycmVudC0+dHJhdmVyc2VO
ZXh0Tm9kZShyb290KCkpKTsKKyAgICB3aGlsZSAobm9kZS5ub3ROdWxsKCkpIHsKKyAgICAgICAg
c3dpdGNoIChhY2NlcHROb2RlKG5vZGUuZ2V0KCkpKSB7CisgICAgICAgICAgICBjYXNlIE5vZGVG
aWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6CisgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gbm9kZTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5nZXQoKTsKKyAgICAgICAgICAgIGNhc2UgTm9k
ZUZpbHRlcjo6RklMVEVSX1JFSkVDVDoKKyAgICAgICAgICAgICAgICBub2RlLnJlc2V0KG5vZGUt
PnRyYXZlcnNlTmV4dFNpYmxpbmcocm9vdCgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOgorICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBub2RlLnJlc2V0KG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUo
cm9vdCgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBUcmVlV2Fsa2VySW1wbDo6
YW5jZXN0b3JSZWplY3RlZChjb25zdCBOb2RlSW1wbCAqbm9kZSkgY29uc3QKSW5kZXg6IC4va2h0
bWwveG1sL2RvbTJfdHJhdmVyc2FsaW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9XZWJDb3JlL2todG1sL3htbC9kb20yX3RyYXZlcnNhbGltcGwuaCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4xMApkaWZmIC1wIC11IC1wIC11IC1yMS4xMCAuL2todG1sL3htbC9kb20yX3RyYXZl
cnNhbGltcGwuaAotLS0gLi9raHRtbC94bWwvZG9tMl90cmF2ZXJzYWxpbXBsLmgJMTAgTWF5IDIw
MDUgMjE6NTk6MTQgLTAwMDAJMS4xMAorKysgLi9raHRtbC94bWwvZG9tMl90cmF2ZXJzYWxpbXBs
LmgJMTMgSnVuIDIwMDUgMDM6NDM6MDEgLTAwMDAKQEAgLTEyMCw5ICsxMjAsOCBAQCBjbGFzcyBU
cmVlV2Fsa2VySW1wbCA6IHB1YmxpYyBUcmF2ZXJzYWxJCiB7CiBwdWJsaWM6CiAgICAgVHJlZVdh
bGtlckltcGwoTm9kZUltcGwgKiwgbG9uZyB3aGF0VG9TaG93LCBOb2RlRmlsdGVySW1wbCAqLCBi
b29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpOwotICAgIH5UcmVlV2Fsa2VySW1wbCgpOwogCi0g
ICAgTm9kZUltcGwgKmN1cnJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50OyB9Cisg
ICAgTm9kZUltcGwgKmN1cnJlbnROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50LmdldCgp
OyB9CiAgICAgdm9pZCBzZXRDdXJyZW50Tm9kZShOb2RlSW1wbCAqLCBpbnQgJmV4Y2VwdGlvbmNv
ZGUpOwogCiAgICAgTm9kZUltcGwgKnBhcmVudE5vZGUoKTsKQEAgLTEzNywxMiArMTM2LDkgQEAg
cHJpdmF0ZToKICAgICBUcmVlV2Fsa2VySW1wbChjb25zdCBUcmVlV2Fsa2VySW1wbCAmKTsKICAg
ICBUcmVlV2Fsa2VySW1wbCAmb3BlcmF0b3I9KGNvbnN0IFRyZWVXYWxrZXJJbXBsICYpOwogCi0g
ICAgLy8gY29udmVuaWVuY2UgZm9yIHdoZW4gaXQgaXMga25vd24gdGhlcmUgd2lsbCBiZSBubyBl
eGNlcHRpb24KLSAgICB2b2lkIHNldEN1cnJlbnROb2RlKE5vZGVJbXBsICopOwotICAgIAogICAg
IGJvb2wgYW5jZXN0b3JSZWplY3RlZChjb25zdCBOb2RlSW1wbCAqKSBjb25zdDsKICAgICAKLSAg
ICBOb2RlSW1wbCAqbV9jdXJyZW50OworICAgIGtodG1sOjpTaGFyZWRQdHI8Tm9kZUltcGw+IG1f
Y3VycmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCkluZGV4OiAuL2todG1sL3htbC9kb21fbm9k
ZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3ht
bC9kb21fbm9kZWltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE1MgpkaWZmIC1wIC11
IC1wIC11IC1yMS4xNTIgLi9raHRtbC94bWwvZG9tX25vZGVpbXBsLmNwcAotLS0gLi9raHRtbC94
bWwvZG9tX25vZGVpbXBsLmNwcAkzMSBNYXkgMjAwNSAwMToyMDo0NiAtMDAwMAkxLjE1MgorKysg
Li9raHRtbC94bWwvZG9tX25vZGVpbXBsLmNwcAkxMyBKdW4gMjAwNSAwMzo0MzowMSAtMDAwMApA
QCAtMTAwNiw2ICsxMDA2LDI0IEBAIE5vZGVJbXBsICpOb2RlSW1wbDo6dHJhdmVyc2VQcmV2aW91
c05vZGUKICAgICByZXR1cm4gMDsKIH0KIAorTm9kZUltcGwgKk5vZGVJbXBsOjp0cmF2ZXJzZVBy
ZXZpb3VzU2libGluZ1Bvc3RPcmRlcihjb25zdCBOb2RlSW1wbCAqc3RheVdpdGhpbikgY29uc3QK
K3sKKyAgICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQorICAgICAgICByZXR1cm4gMDsKKyAgICBp
ZiAocHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgYXNzZXJ0KCFzdGF5V2l0aGluIHx8IHBy
ZXZpb3VzU2libGluZygpLT5pc0FuY2VzdG9yKHN0YXlXaXRoaW4pKTsKKwlyZXR1cm4gcHJldmlv
dXNTaWJsaW5nKCk7CisgICAgfQorICAgIGNvbnN0IE5vZGVJbXBsICpuID0gdGhpczsKKyAgICB3
aGlsZSAobiAmJiAhbi0+cHJldmlvdXNTaWJsaW5nKCkgJiYgKCFzdGF5V2l0aGluIHx8IG4tPnBh
cmVudE5vZGUoKSAhPSBzdGF5V2l0aGluKSkKKyAgICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsK
KyAgICBpZiAobikgeworICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgIW4tPnByZXZpb3Vz
U2libGluZygpIHx8IG4tPnByZXZpb3VzU2libGluZygpLT5pc0FuY2VzdG9yKHN0YXlXaXRoaW4p
KTsKKyAgICAgICAgcmV0dXJuIG4tPnByZXZpb3VzU2libGluZygpOworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKwogdm9pZCBOb2RlSW1wbDo6Y2hlY2tTZXRQcmVmaXgoY29uc3QgRE9NU3RyaW5n
ICZfcHJlZml4LCBpbnQgJmV4Y2VwdGlvbmNvZGUpCiB7CiAgICAgLy8gUGVyZm9ybSBlcnJvciBj
aGVja2luZyBhcyByZXF1aXJlZCBieSBzcGVjIGZvciBzZXR0aW5nIE5vZGUucHJlZml4LiBVc2Vk
IGJ5CkluZGV4OiAuL2todG1sL3htbC9kb21fbm9kZWltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC94bWwvZG9tX25vZGVpbXBsLmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuODUKZGlmZiAtcCAtdSAtcCAtdSAtcjEuODUgLi9raHRtbC94bWwvZG9tX25v
ZGVpbXBsLmgKLS0tIC4va2h0bWwveG1sL2RvbV9ub2RlaW1wbC5oCTEyIE1heSAyMDA1IDAxOjE2
OjAxIC0wMDAwCTEuODUKKysrIC4va2h0bWwveG1sL2RvbV9ub2RlaW1wbC5oCTEzIEp1biAyMDA1
IDAzOjQzOjAxIC0wMDAwCkBAIC0zNTgsNiArMzU4LDkgQEAgcHVibGljOgogICAgIC8qIExpa2Ug
dHJhdmVyc2VQcmV2aW91c05vZGUsIGJ1dCB2aXNpdHMgbm9kZXMgYmVmb3JlIHRoZWlyIGNoaWxk
cmVuLiAqLwogICAgIE5vZGVJbXBsICp0cmF2ZXJzZVByZXZpb3VzTm9kZVBvc3RPcmRlcihjb25z
dCBOb2RlSW1wbCAqc3RheVdpdGhpbiA9IDApIGNvbnN0OwogCisgICAgLyogTGlrZSB0cmF2ZXJz
ZVByZXZpb3VzTm9kZVBvc3RPcmRlciwgYnV0IHNraXBzIGNoaWxkcmVuIGFuZCBzdGFydHMgd2l0
aCB0aGUgcHJldmlvdXMgc2libGluZy4gKi8KKyAgICBOb2RlSW1wbCAqdHJhdmVyc2VQcmV2aW91
c1NpYmxpbmdQb3N0T3JkZXIoY29uc3QgTm9kZUltcGwgKnN0YXlXaXRoaW4gPSAwKSBjb25zdDsK
KwogICAgIERvY3VtZW50UHRyICpkb2NQdHIoKSBjb25zdCB7IHJldHVybiBkb2N1bWVudDsgfQog
CiAgICAgTm9kZUltcGwgKnByZXZpb3VzRWRpdGFibGUoKSBjb25zdDsKSW5kZXg6IC4vbGF5b3V0
LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13
YWxrZXItMDAxLWV4cGVjdGVkLnR4dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAg
LXUgLXAgLXUgLXIxLjIgLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMS1l
eHBlY3RlZC50eHQKLS0tIC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEt
ZXhwZWN0ZWQudHh0CTExIE1heSAyMDA0IDIxOjQ1OjM5IC0wMDAwCTEuMgorKysgLi9sYXlvdXQt
dGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMS1leHBlY3RlZC50eHQJMTMgSnVuIDIwMDUg
MDM6NDc6NTUgLTAwMDAKQEAgLTEsMTA4ICsxLDggQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAotICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYw
MAotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MAotICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
UmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVySW5s
aW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgy
ODgKLSAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDI4OAotICAgICAg
ICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDEwNDogIlRyZWUgV2Fsa2VyOiAiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDE2KSBzaXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE2KSB3aWR0aCA4
OiAiQSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMzIpIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDMyKSB3aWR0aCA0MDogIiAgQS4xIgotICAgICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw0
OCkgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNDgpIHdpZHRoIDQwOiAi
ICBBLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDY0KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCw2NCkgd2lkdGggNDA6ICIgIEEuMyIKLSAgICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
ODApIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsODApIHdpZHRoIDg6ICJC
IgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw5Nikgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsOTYpIHdpZHRoIDQwOiAiICBCLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDExMikg
c2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTEyKSB3aWR0aCA3MjogIiAg
ICBCLjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTI4KSBzaXplIDh4MTYKLSAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDEyOCkgd2lkdGggODogIkMiCi0gICAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE0
NCkgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTQ0KSB3aWR0aCA0MDog
IiAgQy4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNjApIHNpemUgNzJ4MTYKLSAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE2MCkgd2lkdGggNzI6ICIgICAgQy4xLjEiCi0gICAgICAgICAgUmVu
ZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDE3Nikgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3Nikg
d2lkdGggMTA0OiAiICAgICAgQy4xLjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTkyKSBzaXpl
IDEwNHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTkyKSB3aWR0aCAxMDQ6ICIgICAg
ICBDLjEuMS4yIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwyMDgpIHNpemUgMTA0eDE2Ci0gICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwyMDgpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjMiCi0gICAg
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDIyNCkgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMjI0KSB3aWR0aCA3MjogIiAgICBDLjEuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjQwKSBz
aXplIDg4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyNDApIHdpZHRoIDg4OiAiICAg
ICAgQy4yLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDI1Nikgc2l6ZSA4eDE2Ci0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwyNTYpIHdpZHRoIDg6ICJEIgotICAgICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDB4MAorIFRyZWUgV2Fsa2VyOiAKK0EKKyAgQS4xCisgIEEuMgorICBBLjMKKworCisK
SW5kZXg6IC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9sYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwMS5odG1sLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtcCAt
dSAtcCAtdSAtcjEuMSAuL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAxLmh0
bWwKLS0tIC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEuaHRtbAk0IE1h
eSAyMDA0IDIzOjMxOjQyIC0wMDAwCTEuMQorKysgLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3Ry
ZWUtd2Fsa2VyLTAwMS5odG1sCTEzIEp1biAyMDA1IDAzOjQ3OjU1IC0wMDAwCkBAIC00MCw2ICs0
MCwxMCBAQAogPC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ291cmllcjsgZm9udC1z
aXplOiAxNDsgd2hpdGUtc3BhY2U6IHByZSI+CiA8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
K30KKwogdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQScpOwogCiBmdW5jdGlv
biB0ZXN0Tm9kZUZpdGVyKG4pCkluZGV4OiAuL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13
YWxrZXItMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMi1leHBlY3RlZC50eHQs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1wIC11IC1yMS4yIC4vbGF5b3V0
LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDItZXhwZWN0ZWQudHh0Ci0tLSAuL2xheW91
dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAyLWV4cGVjdGVkLnR4dAkxMSBNYXkgMjAw
NCAyMTo0NTozOSAtMDAwMAkxLjIKKysrIC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdh
bGtlci0wMDItZXhwZWN0ZWQudHh0CTEzIEp1biAyMDA1IDAzOjQ3OjU1IC0wMDAwCkBAIC0xLDk2
ICsxLDcgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJDYW52YXMgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkg
c2l6ZSA3ODR4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgw
Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklu
bGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgw
Ci0gICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgyMjQKLSAgICAgICAgUmVuZGVyQmxvY2sg
e1B9IGF0ICgwLDApIHNpemUgNzg0eDIyNAotICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQg
KDAsMCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgMTA0eDE2Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwNDog
IlRyZWUgV2Fsa2VyOiAiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE2KSBzaXplIDh4MTYKLSAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDE2KSB3aWR0aCA4OiAiQiIKLSAgICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMzIpIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDMyKSB3aWR0aCA0
MDogIiAgQi4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw0OCkgc2l6ZSA3MngxNgotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsNDgpIHdpZHRoIDcyOiAiICAgIEIuMS4xIgotICAgICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMCw2NCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2NCkgd2lk
dGggODogIkMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDgwKSBzaXplIDQweDE2Ci0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCw4MCkgd2lkdGggNDA6ICIgIEMuMSIKLSAgICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsOTYpIHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDk2KSB3aWR0aCA3
MjogIiAgICBDLjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgw
Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTEyKSBzaXplIDEwNHgxNgotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTEyKSB3aWR0aCAxMDQ6ICIgICAgICBDLjEuMS4xIgot
ICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwxMjgpIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxMjgpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjIiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDE0NCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0NCkgd2lk
dGggMTA0OiAiICAgICAgQy4xLjEuMyIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDAp
IHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTYwKSBzaXplIDcy
eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNjApIHdpZHRoIDcyOiAiICAgIEMuMS4y
IgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNzYpIHNpemUgODh4MTYKLSAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDE3Nikgd2lkdGggODg6ICIgICAgICBDLjIuMSIKLSAgICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMTkyKSBzaXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5Mikgd2lkdGgg
ODogIkQiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgVHJlZSBXYWxrZXI6IAor
QgorICBCLjEKKyAgICBCLjEuMQorCisKKwpJbmRleDogLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJD
b3JlL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAyLmh0bWwsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1wIC11IC1wIC11IC1yMS4xIC4vbGF5b3V0LXRlc3RzL3Ry
YXZlcnNhbC90cmVlLXdhbGtlci0wMDIuaHRtbAotLS0gLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwMi5odG1sCTQgTWF5IDIwMDQgMjM6MzE6NDIgLTAwMDAJMS4xCisrKyAu
L2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAyLmh0bWwJMTMgSnVuIDIwMDUg
MDM6NDc6NTUgLTAwMDAKQEAgLTQwLDYgKzQwLDEwIEBACiA8L2Rpdj4KIDxkaXYgc3R5bGU9ImZv
bnQtZmFtaWx5OiBDb3VyaWVyOyBmb250LXNpemU6IDE0OyB3aGl0ZS1zcGFjZTogcHJlIj4KIDxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCiB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdCJyk7CiAKIGZ1bmN0aW9uIHRlc3ROb2RlRml0ZXIobikKSW5kZXg6IC4vbGF5
b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJl
ZS13YWxrZXItMDAzLWV4cGVjdGVkLnR4dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYg
LXAgLXUgLXAgLXUgLXIxLjIgLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAw
My1leHBlY3RlZC50eHQKLS0tIC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0w
MDMtZXhwZWN0ZWQudHh0CTExIE1heSAyMDA0IDIxOjQ1OjM5IC0wMDAwCTEuMgorKysgLi9sYXlv
dXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMy1leHBlY3RlZC50eHQJMTMgSnVuIDIw
MDUgMDM6NDc6NTUgLTAwMDAKQEAgLTEsMTQ2ICsxLDIyIEBACi1sYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKLSAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzgKLSAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDAKLSAgICAgICAgUmVuZGVySW5s
aW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQg
KDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgw
Ci0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAg
UmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVySW5saW5lIHtTUEFO
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4NDQ2Ci0g
ICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgyMDgKLSAgICAgICAgICBS
ZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMDQ6ICJUcmVlIFdhbGtlcjogIgotICAgICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwx
Nikgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNikgd2lkdGggODogIkEi
Ci0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDMyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwzMikgd2lkdGggNDA6ICIgIEEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNDgpIHNp
emUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ4KSB3aWR0aCA0MDogIiAgQS4y
IgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw2NCkgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsNjQpIHdpZHRoIDQwOiAiICBBLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDgwKSBz
aXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDgwKSB3aWR0aCA4OiAiQiIKLSAg
ICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsOTYpIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDk2KSB3aWR0aCA0MDogIiAgQi4yIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxMTIpIHNpemUg
NzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExMikgd2lkdGggNzI6ICIgICAgQi4y
LjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDEyOCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxMjgpIHdpZHRoIDg6ICJDIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNDQpIHNp
emUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0NCkgd2lkdGggNDA6ICIgIEMu
MSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTYwKSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxNjApIHdpZHRoIDcyOiAiICAgIEMuMS4yIgotICAgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwxNzYpIHNpemUgODh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3Nikgd2lkdGgg
ODg6ICIgICAgICBDLjIuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTkyKSBzaXplIDh4MTYKLSAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5Mikgd2lkdGggODogIkQiCi0gICAgICAgICAgUmVu
ZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMjIyKSBzaXplIDc4NHgyMjQKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0ICgwLDAp
IHNpemUgMTA0eDE2Ci0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDEwNHgxNgotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDQ6ICJUcmVl
IFdhbGtlcjogIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNikgc2l6ZSA4eDE2Ci0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwxNikgd2lkdGggODogIkQiCi0gICAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDMy
KSBzaXplIDg4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMikgd2lkdGggODg6ICIg
ICAgICBDLjIuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNDgpIHNpemUgNzJ4MTYKLSAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDQ4KSB3aWR0aCA3MjogIiAgICBDLjEuMiIKLSAgICAgICAgICBS
ZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsNjQpIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDY0KSB3
aWR0aCA0MDogIiAgQy4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw4MCkgc2l6ZSA4eDE2Ci0gICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCw4MCkgd2lkdGggODogIkMiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDk2KSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5Nikgd2lkdGgg
NzI6ICIgICAgQi4yLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDExMikgc2l6ZSA0MHgxNgotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTEyKSB3aWR0aCA0MDogIiAgQi4yIgotICAgICAgICAg
IFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwxMjgpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTI4
KSB3aWR0aCA4OiAiQiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgw
Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTQ0KSBzaXplIDQweDE2Ci0gICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdpZHRoIDQwOiAiICBBLjMiCi0gICAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDE2MCkgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYw
KSB3aWR0aCA0MDogIiAgQS4yIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNzYpIHNpemUgNDB4MTYK
LSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3Nikgd2lkdGggNDA6ICIgIEEuMSIKLSAgICAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMTkyKSBzaXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDE5Mikgd2lkdGggODogIkEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgVHJl
ZSBXYWxrZXI6IAorQQorICBBLjEKKyAgQS4yCisgIEEuMworCitUcmVlIFdhbGtlcjogCitECisg
ICAgICBDLjIuMQorICAgIEMuMS4yCisgIEMuMQorQworICAgIEIuMi4xCisgIEIuMgorQgorICBB
LjMKKyAgQS4yCisgIEEuMQorQQorCisKKwpJbmRleDogLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJD
b3JlL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAzLmh0bWwsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1wIC11IC1wIC11IC1yMS4xIC4vbGF5b3V0LXRlc3RzL3Ry
YXZlcnNhbC90cmVlLXdhbGtlci0wMDMuaHRtbAotLS0gLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwMy5odG1sCTQgTWF5IDIwMDQgMjM6MzE6NDIgLTAwMDAJMS4xCisrKyAu
L2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAzLmh0bWwJMTMgSnVuIDIwMDUg
MDM6NDc6NTUgLTAwMDAKQEAgLTQ2LDYgKzQ2LDEwIEBACiA8L2Rpdj4KIDxkaXYgc3R5bGU9ImZv
bnQtZmFtaWx5OiBDb3VyaWVyOyBmb250LXNpemU6IDE0OyB3aGl0ZS1zcGFjZTogcHJlIj4KIDxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCiB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdBJyk7CiAKIGZ1bmN0aW9uIHRlc3ROb2RlRml0ZXIobikKSW5kZXg6IC4vbGF5
b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJl
ZS13YWxrZXItMDA0LWV4cGVjdGVkLnR4dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYg
LXAgLXUgLXAgLXUgLXIxLjIgLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAw
NC1leHBlY3RlZC50eHQKLS0tIC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0w
MDQtZXhwZWN0ZWQudHh0CTExIE1heSAyMDA0IDIxOjQ1OjM5IC0wMDAwCTEuMgorKysgLi9sYXlv
dXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNC1leHBlY3RlZC50eHQJMTMgSnVuIDIw
MDUgMDM6NDc6NTUgLTAwMDAKQEAgLTEsMTg4ICsxLDI5IEBACi1sYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2OTIKLSAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjkyCi0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2OTIKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg2NzAKLSAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDAKLSAgICAgICAgUmVuZGVySW5s
aW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQg
KDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgw
Ci0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAg
UmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVySW5saW5lIHtTUEFO
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4NjcwCi0g
ICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgzMjAKLSAgICAgICAgICBS
ZW5kZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMDQ6ICJUcmVlIFdhbGtlcjogIgotICAgICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwx
Nikgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNikgd2lkdGggODogIkEi
Ci0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDMyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwzMikgd2lkdGggNDA6ICIgIEEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNDgpIHNp
emUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ4KSB3aWR0aCA0MDogIiAgQS4y
IgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw2NCkgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsNjQpIHdpZHRoIDQwOiAiICBBLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDgwKSBz
aXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDgwKSB3aWR0aCA4OiAiQiIKLSAg
ICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsOTYpIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDk2KSB3aWR0aCA0MDogIiAgQi4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxMTIpIHNpemUg
NzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExMikgd2lkdGggNzI6ICIgICAgQi4x
LjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDEyOCkgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMTI4KSB3aWR0aCA3MjogIiAgICBCLjEuMiIKLSAgICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMTQ0KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdpZHRo
IDQwOiAiICBCLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE2MCkgc2l6ZSA3MngxNgotICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMTYwKSB3aWR0aCA3MjogIiAgICBCLjIuMSIKLSAgICAgICAg
ICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMTc2KSBzaXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3
Nikgd2lkdGggODogIkMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE5Mikgc2l6ZSA0MHgxNgotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTkyKSB3aWR0aCA0MDogIiAgQy4xIgotICAgICAgICAg
IFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwyMDgpIHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIw
OCkgd2lkdGggNzI6ICIgICAgQy4xLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDIyNCkgc2l6ZSAx
MDR4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIyNCkgd2lkdGggMTA0OiAiICAgICAg
Qy4xLjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjQwKSBzaXplIDEwNHgxNgotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMjQwKSB3aWR0aCAxMDQ6ICIgICAgICBDLjEuMS4yIgotICAgICAg
ICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwyNTYpIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwyNTYpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDI3
Mikgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjcyKSB3aWR0aCA3Mjog
IiAgICBDLjEuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjg4KSBzaXplIDg4eDE2Ci0gICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwyODgpIHdpZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAg
ICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDMwNCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwz
MDQpIHdpZHRoIDg6ICJEIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDMzNCkgc2l6ZSA3ODR4MzM2Ci0gICAg
ICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTA0OiAiVHJlZSBXYWxrZXI6ICIKLSAgICAgICAgICBSZW5k
ZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMTYpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYpIHdpZHRo
IDg6ICJEIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwzMikgc2l6ZSA4OHgxNgotICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMzIpIHdpZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAgICAgUmVu
ZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDQ4KSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0OCkgd2lk
dGggNzI6ICIgICAgQy4xLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDY0KSBzaXplIDEwNHgxNgot
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjQpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjMi
Ci0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDgwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsODApIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjIiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDk2KSBzaXplIDEwNHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsOTYpIHdpZHRo
IDEwNDogIiAgICAgIEMuMS4xLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDExMikgc2l6ZSA3Mngx
NgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTEyKSB3aWR0aCA3MjogIiAgICBDLjEuMSIK
LSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTI4KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxMjgpIHdpZHRoIDQwOiAiICBDLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE0NCkg
c2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdpZHRoIDg6ICJDIgot
ICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwxNjApIHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDE2MCkgd2lkdGggNzI6ICIgICAgQi4yLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE3
Nikgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTc2KSB3aWR0aCA0MDog
IiAgQi4yIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxOTIpIHNpemUgNzJ4MTYKLSAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE5Mikgd2lkdGggNzI6ICIgICAgQi4xLjIiCi0gICAgICAgICAgUmVu
ZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDIwOCkgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjA4KSB3
aWR0aCA3MjogIiAgICBCLjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjI0KSBzaXplIDQweDE2
Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMjQpIHdpZHRoIDQwOiAiICBCLjEiCi0gICAg
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDI0MCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwyNDApIHdpZHRoIDg6ICJCIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwyNTYpIHNpemUgNDB4MTYK
LSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDI1Nikgd2lkdGggNDA6ICIgIEEuMyIKLSAgICAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMjcyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwyNzIpIHdpZHRoIDQwOiAiICBBLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDI4OCkgc2l6ZSA0
MHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjg4KSB3aWR0aCA0MDogIiAgQS4xIgot
ICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwzMDQpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMzA0KSB3aWR0aCA4OiAiQSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDAp
IHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAK
KyBUcmVlIFdhbGtlcjogCitBCisgIEEuMQorICBBLjIKKyAgQS4zCisKK1RyZWUgV2Fsa2VyOiAK
K0QKKyAgICAgIEMuMi4xCisgICAgQy4xLjIKKyAgICAgIEMuMS4xLjMKKyAgICAgIEMuMS4xLjIK
KyAgICAgIEMuMS4xLjEKKyAgICBDLjEuMQorICBDLjEKK0MKKyAgICBCLjIuMQorICBCLjIKKyAg
ICBCLjEuMgorICAgIEIuMS4xCisgIEIuMQorQgorICBBLjMKKyAgQS4yCisgIEEuMQorQQorCisK
KwpJbmRleDogLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91dC10ZXN0cy90cmF2ZXJz
YWwvdHJlZS13YWxrZXItMDA0Lmh0bWwsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1w
IC11IC1wIC11IC1yMS4xIC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDQu
aHRtbAotLS0gLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNC5odG1sCTQg
TWF5IDIwMDQgMjM6MzE6NDIgLTAwMDAJMS4xCisrKyAuL2xheW91dC10ZXN0cy90cmF2ZXJzYWwv
dHJlZS13YWxrZXItMDA0Lmh0bWwJMTMgSnVuIDIwMDUgMDM6NDc6NTUgLTAwMDAKQEAgLTQ2LDYg
KzQ2LDEwIEBACiA8L2Rpdj4KIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDb3VyaWVyOyBmb250
LXNpemU6IDE0OyB3aGl0ZS1zcGFjZTogcHJlIj4KIDxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworfQorCiB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdBJyk7CiAKIGZ1bmN0
aW9uIHRlc3ROb2RlRml0ZXIobikKSW5kZXg6IC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVl
LXdhbGtlci0wMDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9X
ZWJDb3JlL2xheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDA1LWV4cGVjdGVkLnR4
dCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXAgLXUgLXAgLXUgLXIxLjEgLi9sYXlv
dXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNS1leHBlY3RlZC50eHQKLS0tIC4vbGF5
b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDUtZXhwZWN0ZWQudHh0CTEyIEp1bCAy
MDA0IDIxOjU3OjM0IC0wMDAwCTEuMQorKysgLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUt
d2Fsa2VyLTAwNS1leHBlY3RlZC50eHQJMTMgSnVuIDIwMDUgMDM6NDc6NTUgLTAwMDAKQEAgLTEs
MTA1ICsxLDcgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJDYW52YXMg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA3ODR4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
UmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7
U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVu
ZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJl
bmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQ
QU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
ICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgyMjQKLSAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzg0eDIyNAotICAgICAgICAgIFJlbmRlcklubGluZSB7Qn0gYXQgKDAsMCkg
c2l6ZSAxMDR4MTYKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MTA0eDE2Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEwNDogIlRyZWUg
V2Fsa2VyOiAiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE2KSBzaXplIDh4MTYKLSAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE2KSB3aWR0aCA4OiAiQiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMzIp
IHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDMyKSB3aWR0aCA0MDogIiAg
Qi4yIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw0OCkgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsNDgpIHdpZHRoIDcyOiAiICAgIEIuMi4xIgotICAgICAgICAgIFJlbmRlckJS
IHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCw2NCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw2NCkgd2lkdGggODog
IkMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDgwKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCw4MCkgd2lkdGggNDA6ICIgIEMuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsOTYp
IHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDk2KSB3aWR0aCA3MjogIiAg
ICBDLjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTEyKSBzaXplIDEwNHgxNgotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTEyKSB3aWR0aCAxMDQ6ICIgICAgICBDLjEuMS4xIgotICAgICAg
ICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwxMjgpIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwxMjgpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JS
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE0
NCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0NCkgd2lkdGggMTA0
OiAiICAgICAgQy4xLjEuMyIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTYwKSBzaXplIDcyeDE2Ci0g
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNjApIHdpZHRoIDcyOiAiICAgIEMuMS4yIgotICAg
ICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwxNzYpIHNpemUgODh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE3Nikgd2lkdGggODg6ICIgICAgICBDLjIuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTky
KSBzaXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5Mikgd2lkdGggODogIkQi
Ci0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgVHJlZSBXYWxrZXI6IAorQgorICBC
LjIKKyAgICBCLjIuMQorCisKKwpJbmRleDogLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUt
d2Fsa2VyLTAwNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xh
eW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDA1Lmh0bWwsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMQpkaWZmIC1wIC11IC1wIC11IC1yMS4xIC4vbGF5b3V0LXRlc3RzL3RyYXZlcnNh
bC90cmVlLXdhbGtlci0wMDUuaHRtbAotLS0gLi9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUt
d2Fsa2VyLTAwNS5odG1sCTEyIEp1bCAyMDA0IDIxOjU3OjM0IC0wMDAwCTEuMQorKysgLi9sYXlv
dXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNS5odG1sCTEzIEp1biAyMDA1IDAzOjQ3
OjU1IC0wMDAwCkBAIC00Niw2ICs0NiwxMCBAQAogPC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LWZh
bWlseTogQ291cmllcjsgZm9udC1zaXplOiAxNDsgd2hpdGUtc3BhY2U6IHByZSI+CiA8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKwogdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnQicpOwogCiBmdW5jdGlvbiB0ZXN0Tm9kZUZpdGVyKG4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3609</attachid>
            <date>2005-08-27 09:23:14 -0700</date>
            <delta_ts>2008-01-08 22:51:04 -0800</delta_ts>
            <desc>another patch -- not sure if it&apos;s better than the first try</desc>
            <filename>Another TreeWalkerPatch.txt</filename>
            <type>text/plain</type>
            <size>72545</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2RvbS9kb20yX3RyYXZlcnNhbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9XZWJDb3JlL2todG1sL2RvbS9kb20yX3RyYXZlcnNhbC5oLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBraHRtbC9kb20vZG9tMl90cmF2ZXJzYWwuaAot
LS0ga2h0bWwvZG9tL2RvbTJfdHJhdmVyc2FsLmgJMTEgTWF5IDIwMDUgMDA6NTg6MjggLTAwMDAJ
MS41CisrKyBraHRtbC9kb20vZG9tMl90cmF2ZXJzYWwuaAkyNyBBdWcgMjAwNSAxNjoxNzoxOCAt
MDAwMApAQCAtNTIsMTAgKzUyLDE2IEBAIHR5cGVkZWYgTm9kZUltcGwgKkZpbHRlck5vZGU7CiAK
ICNlbmRpZgogCitjbGFzcyBFeGNlcHRpb25XcmFwcGVyCit7CitwdWJsaWM6CisgICAgdmlydHVh
bCB2b2lkIHJldGhyb3coKSA9IDA7Cit9OworCiBjbGFzcyBOb2RlRmlsdGVyQ29uZGl0aW9uIDog
cHVibGljIERvbVNoYXJlZAogewogcHVibGljOgotICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9k
ZShGaWx0ZXJOb2RlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoRmlsdGVy
Tm9kZSwgRXhjZXB0aW9uV3JhcHBlciAqJmV4Y2VwdGlvbikgY29uc3Q7CiB9OwogCiAvKioKSW5k
ZXg6IGtodG1sL2VjbWEva2pzX3RyYXZlcnNhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYkNvcmUva2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmNwcCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4xNgpkaWZmIC1wIC11IC1yMS4xNiBraHRtbC9lY21hL2tqc190cmF2ZXJzYWwu
Y3BwCi0tLSBraHRtbC9lY21hL2tqc190cmF2ZXJzYWwuY3BwCTE2IEF1ZyAyMDA1IDAwOjQ3OjQ1
IC0wMDAwCTEuMTYKKysrIGtodG1sL2VjbWEva2pzX3RyYXZlcnNhbC5jcHAJMjcgQXVnIDIwMDUg
MTY6MTc6MTggLTAwMDAKQEAgLTM5LDEzICszOSwxMSBAQCBuYW1lc3BhY2UgS0pTIHsKIAogY29u
c3QgQ2xhc3NJbmZvIERPTU5vZGVJdGVyYXRvcjo6aW5mbyA9IHsgIk5vZGVJdGVyYXRvciIsIDAs
ICZET01Ob2RlSXRlcmF0b3JUYWJsZSwgMCB9OwogLyoKLUBiZWdpbiBET01Ob2RlSXRlcmF0b3JU
YWJsZSA1CitAYmVnaW4gRE9NTm9kZUl0ZXJhdG9yVGFibGUgMwogICByb290CQkJCURPTU5vZGVJ
dGVyYXRvcjo6Um9vdAkJCURvbnREZWxldGV8UmVhZE9ubHkKICAgd2hhdFRvU2hvdwkJCURPTU5v
ZGVJdGVyYXRvcjo6V2hhdFRvU2hvdwkJRG9udERlbGV0ZXxSZWFkT25seQogICBmaWx0ZXIJCQlE
T01Ob2RlSXRlcmF0b3I6OkZpbHRlcgkJCURvbnREZWxldGV8UmVhZE9ubHkKICAgZXhwYW5kRW50
aXR5UmVmZXJlbmNlcwlET01Ob2RlSXRlcmF0b3I6OkV4cGFuZEVudGl0eVJlZmVyZW5jZXMJRG9u
dERlbGV0ZXxSZWFkT25seQotICByZWZlcmVuY2VOb2RlCURPTU5vZGVJdGVyYXRvcjo6UmVmZXJl
bmNlTm9kZQlEb250RGVsZXRlfFJlYWRPbmx5Ci0gIHBvaW50ZXJCZWZvcmVSZWZlcmVuY2VOb2Rl
IERPTU5vZGVJdGVyYXRvcjo6UG9pbnRlckJlZm9yZVJlZmVyZW5jZU5vZGUJRG9udERlbGV0ZXxS
ZWFkT25seQogQGVuZAogQGJlZ2luIERPTU5vZGVJdGVyYXRvclByb3RvVGFibGUgMwogICBuZXh0
Tm9kZQlET01Ob2RlSXRlcmF0b3I6Ok5leHROb2RlCURvbnREZWxldGV8RnVuY3Rpb24gMApAQCAt
ODUsMTAgKzgzLDYgQEAgVmFsdWVJbXAgKkRPTU5vZGVJdGVyYXRvcjo6Z2V0VmFsdWVQcm9wZQog
ICAgIHJldHVybiBnZXRET01Ob2RlRmlsdGVyKGV4ZWMsbmkuZmlsdGVyKCkpOwogICBjYXNlIEV4
cGFuZEVudGl0eVJlZmVyZW5jZXM6CiAgICAgcmV0dXJuIEJvb2xlYW4obmkuZXhwYW5kRW50aXR5
UmVmZXJlbmNlcygpKTsKLSAgY2FzZSBSZWZlcmVuY2VOb2RlOgotICAgIHJldHVybiBnZXRET01O
b2RlKGV4ZWMsbmkucmVmZXJlbmNlTm9kZSgpKTsKLSAgY2FzZSBQb2ludGVyQmVmb3JlUmVmZXJl
bmNlTm9kZToKLSAgICByZXR1cm4gQm9vbGVhbihuaS5wb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9k
ZSgpKTsKICBkZWZhdWx0OgogICAga2RXYXJuaW5nKCkgPDwgIlVuaGFuZGxlZCB0b2tlbiBpbiBE
T01Ob2RlSXRlcmF0b3I6OmdldFZhbHVlUHJvcGVydHkgOiAiIDw8IHRva2VuIDw8IGVuZGw7CiAg
ICByZXR1cm4gTlVMTDsKQEAgLTEwNyw3ICsxMDEsNyBAQCBWYWx1ZUltcCAqRE9NTm9kZUl0ZXJh
dG9yUHJvdG9GdW5jOjpjYWxsCiAgIGNhc2UgRE9NTm9kZUl0ZXJhdG9yOjpOZXh0Tm9kZToKICAg
ICByZXR1cm4gZ2V0RE9NTm9kZShleGVjLG5vZGVJdGVyYXRvci5uZXh0Tm9kZShleGNlcHRpb24p
KTsKICAgY2FzZSBET01Ob2RlSXRlcmF0b3I6OkRldGFjaDoKLSAgICBub2RlSXRlcmF0b3IuZGV0
YWNoKGV4Y2VwdGlvbik7CisgICAgbm9kZUl0ZXJhdG9yLmRldGFjaCgpOwogICAgIHJldHVybiBV
bmRlZmluZWQoKTsKICAgfQogICByZXR1cm4gVW5kZWZpbmVkKCk7CkBAIC0xMTUsMTAgKzEwOSw5
IEBAIFZhbHVlSW1wICpET01Ob2RlSXRlcmF0b3JQcm90b0Z1bmM6OmNhbGwKIAogVmFsdWVJbXAg
KmdldERPTU5vZGVJdGVyYXRvcihFeGVjU3RhdGUgKmV4ZWMsIE5vZGVJdGVyYXRvckltcGwgKm5p
KQogewotICByZXR1cm4gY2FjaGVET01PYmplY3Q8Tm9kZUl0ZXJhdG9ySW1wbCwgRE9NTm9kZUl0
ZXJhdG9yPihleGVjLCBuaSk7CisgICAgcmV0dXJuIGNhY2hlRE9NT2JqZWN0PE5vZGVJdGVyYXRv
ckltcGwsIERPTU5vZGVJdGVyYXRvcj4oZXhlYywgbmkpOwogfQogCi0KIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogY29uc3QgQ2xhc3NJbmZvIE5vZGVGaWx0ZXJDb25zdHJ1Y3Rvcjo6aW5mbyA9IHsg
Ik5vZGVGaWx0ZXJDb25zdHJ1Y3RvciIsIDAsICZOb2RlRmlsdGVyQ29uc3RydWN0b3JUYWJsZSwg
MCB9OwpJbmRleDoga2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuMTAKZGlmZiAtcCAtdSAtcjEuMTAga2h0bWwvZWNtYS9ranNfdHJhdmVy
c2FsLmgKLS0tIGtodG1sL2VjbWEva2pzX3RyYXZlcnNhbC5oCTggQXVnIDIwMDUgMDQ6MDc6NDEg
LTAwMDAJMS4xMAorKysga2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmgJMjcgQXVnIDIwMDUgMTY6
MTc6MTggLTAwMDAKQEAgLTQyLDggKzQyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgLy8gbm8g
cHV0IC0gYWxsIHJlYWQtb25seQogICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8oKSBjb25zdCB7IHJldHVybiAmaW5mbzsgfQogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8g
aW5mbzsKLSAgICBlbnVtIHsgRmlsdGVyLCBSb290LCBXaGF0VG9TaG93LCBFeHBhbmRFbnRpdHlS
ZWZlcmVuY2VzLCBSZWZlcmVuY2VOb2RlLCBQb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZSwKLSAg
ICAgICAgICAgTmV4dE5vZGUsIFByZXZpb3VzTm9kZSwgRGV0YWNoIH07CisgICAgZW51bSB7IEZp
bHRlciwgUm9vdCwgV2hhdFRvU2hvdywgRXhwYW5kRW50aXR5UmVmZXJlbmNlcywgTmV4dE5vZGUs
IFByZXZpb3VzTm9kZSwgRGV0YWNoIH07CiAgICAgRE9NOjpOb2RlSXRlcmF0b3JJbXBsICppbXBs
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9CiAgIHByaXZhdGU6CiAgICAga2h0bWw6
OlNoYXJlZFB0cjxET006Ok5vZGVJdGVyYXRvckltcGw+IG1faW1wbDsKSW5kZXg6IGtodG1sL21p
c2Mvc2hhcmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwv
bWlzYy9zaGFyZWQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYg
a2h0bWwvbWlzYy9zaGFyZWQuaAotLS0ga2h0bWwvbWlzYy9zaGFyZWQuaAkxMCBNYXkgMjAwNSAy
MTo1OToxNCAtMDAwMAkxLjYKKysrIGtodG1sL21pc2Mvc2hhcmVkLmgJMjcgQXVnIDIwMDUgMTY6
MTc6MTggLTAwMDAKQEAgLTYzLDQ2ICs2MywzNyBAQCBwcml2YXRlOgogdGVtcGxhdGUgPGNsYXNz
IFQ+IGNsYXNzIFNoYXJlZFB0cgogewogcHVibGljOgotICAgIFNoYXJlZFB0cigpIDogbV9wdHIo
MCkge30KLSAgICBleHBsaWNpdCBTaGFyZWRQdHIoVCAqcHRyKSA6IG1fcHRyKHB0cikgeyBpZiAo
bV9wdHIpIG1fcHRyLT5yZWYoKTsgfQorICAgIFNoYXJlZFB0cigpIDogbV9wdHIoTlVMTCkgeyB9
CisgICAgU2hhcmVkUHRyKFQgKnB0cikgOiBtX3B0cihwdHIpIHsgaWYgKG1fcHRyKSBtX3B0ci0+
cmVmKCk7IH0KICAgICBTaGFyZWRQdHIoY29uc3QgU2hhcmVkUHRyICZvKSA6IG1fcHRyKG8ubV9w
dHIpIHsgaWYgKG1fcHRyKSBtX3B0ci0+cmVmKCk7IH0KICAgICB+U2hhcmVkUHRyKCkgeyBpZiAo
bV9wdHIpIG1fcHRyLT5kZXJlZigpOyB9CiAJCi0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiBtX3B0ciA9PSAwOyB9Ci0gICAgYm9vbCBub3ROdWxsKCkgY29uc3QgeyByZXR1cm4gbV9w
dHIgIT0gMDsgfQorICAgIFNoYXJlZFB0ciAmb3BlcmF0b3I9KGNvbnN0IFNoYXJlZFB0ciAmbykg
eyBpZiAoby5tX3B0cikgby5tX3B0ci0+cmVmKCk7IGlmIChtX3B0cikgbV9wdHItPmRlcmVmKCk7
IG1fcHRyID0gby5tX3B0cjsgfQorICAgIFNoYXJlZFB0ciAmb3BlcmF0b3I9KFQgKnB0cikgeyBp
ZiAocHRyKSBwdHItPnJlZigpOyBpZiAobV9wdHIpIG1fcHRyLT5kZXJlZigpOyBtX3B0ciA9IHB0
cjsgfQogCi0gICAgdm9pZCByZXNldCgpIHsgaWYgKG1fcHRyKSBtX3B0ci0+ZGVyZWYoKTsgbV9w
dHIgPSAwOyB9Ci0gICAgdm9pZCByZXNldChUICpvKSB7IGlmIChvKSBvLT5yZWYoKTsgaWYgKG1f
cHRyKSBtX3B0ci0+ZGVyZWYoKTsgbV9wdHIgPSBvOyB9CisgICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiBtX3B0ciA9PSBOVUxMOyB9CisgICAgYm9vbCBub3ROdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9wdHIgIT0gTlVMTDsgfQorCisgICAgdm9pZCByZXNldCgpIHsgaWYgKG1fcHRyKSBt
X3B0ci0+ZGVyZWYoKTsgbV9wdHIgPSBOVUxMOyB9CisgICAgdm9pZCByZXNldChUICpwdHIpIHsg
aWYgKHB0cikgcHRyLT5yZWYoKTsgaWYgKG1fcHRyKSBtX3B0ci0+ZGVyZWYoKTsgbV9wdHIgPSBw
dHI7IH0KICAgICAKLSAgICBUICogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyAgICBU
ICpnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQogICAgIFQgJm9wZXJhdG9yKigpIGNvbnN0
IHsgcmV0dXJuICptX3B0cjsgfQogICAgIFQgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBt
X3B0cjsgfQogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSAw
OyB9Ci0KLSAgICBpbmxpbmUgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFyZWRQdHIg
JmEsIGNvbnN0IFNoYXJlZFB0ciAmYikgeyByZXR1cm4gYS5tX3B0ciA9PSBiLm1fcHRyOyB9Ci0g
ICAgaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVkUHRyICZhLCBjb25z
dCBUICpiKSB7IHJldHVybiBhLm1fcHRyID09IGI7IH0KLSAgICBpbmxpbmUgZnJpZW5kIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUICphLCBjb25zdCBTaGFyZWRQdHIgJmIpIHsgcmV0dXJuIGEgPT0g
Yi5tX3B0cjsgfQotCi0gICAgU2hhcmVkUHRyICZvcGVyYXRvcj0oY29uc3QgU2hhcmVkUHRyICYp
OworICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gTlVMTDsgfQog
CiBwcml2YXRlOgotICAgIFQqIG1fcHRyOworICAgIFQgKm1fcHRyOwogfTsKIAotdGVtcGxhdGUg
PGNsYXNzIFQ+IFNoYXJlZFB0cjxUPiAmU2hhcmVkUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgU2hh
cmVkUHRyPFQ+ICZvKSAKLXsKLSAgICBpZiAoby5tX3B0cikgCi0gICAgICAgIG8ubV9wdHItPnJl
ZigpOwotICAgIGlmIChtX3B0cikKLSAgICAgICAgbV9wdHItPmRlcmVmKCk7Ci0gICAgbV9wdHIg
PSBvLm1fcHRyOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIFQ+IGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcmVkUHRyPFQ+ICZhLCBjb25zdCBTaGFyZWRQ
dHI8VD4gJmIpIHsgcmV0dXJuICEoYT09Yik7IH0KLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZFB0cjxUPiAmYSwgY29uc3QgVCAqYikgeyByZXR1
cm4gIShhID09IGIpOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBUICphLCBjb25zdCBTaGFyZWRQdHI8VD4gJmIpIHsgcmV0dXJuICEoYSA9PSBiKTsg
fQordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcmVk
UHRyPFQ+ICZhLCBjb25zdCBTaGFyZWRQdHI8VD4gJmIpIHsgcmV0dXJuIGEuZ2V0KCkgPT0gYi5n
ZXQoKTsgfQordGVtcGxhdGUgPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2hhcmVkUHRyPFQ+ICZhLCBjb25zdCBUICpiKSB7IHJldHVybiBhLmdldCgpID09IGI7IH0KK3Rl
bXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQgKmEsIGNvbnN0
IFNoYXJlZFB0cjxUPiAmYikgeyByZXR1cm4gYSA9PSBiLmdldCgpOyB9CisKK3RlbXBsYXRlIDxj
bGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZFB0cjxUPiAmYSwgY29u
c3QgU2hhcmVkUHRyPFQ+ICZiKSB7IHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IH0KK3RlbXBs
YXRlIDxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXJlZFB0cjxUPiAm
YSwgY29uc3QgVCAqYikgeyByZXR1cm4gYS5nZXQoKSAhPSBiOyB9Cit0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUICphLCBjb25zdCBTaGFyZWRQdHI8VD4g
JmIpIHsgcmV0dXJuIGEgIT0gYi5nZXQoKTsgfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3Mg
VT4gaW5saW5lIFNoYXJlZFB0cjxUPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNvbnN0IFNoYXJlZFB0
cjxVPiAmcCkgeyByZXR1cm4gU2hhcmVkUHRyPFQ+KHN0YXRpY19jYXN0PFQgKj4ocC5nZXQoKSkp
OyB9CiB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIFNoYXJlZFB0cjxUPiBjb25z
dF9wb2ludGVyX2Nhc3QoY29uc3QgU2hhcmVkUHRyPFU+ICZwKSB7IHJldHVybiBTaGFyZWRQdHI8
VD4oY29uc3RfY2FzdDxUICo+KHAuZ2V0KCkpKTsgfQpJbmRleDoga2h0bWwveG1sL2RvbTJfdHJh
dmVyc2FsaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0
bWwveG1sL2RvbTJfdHJhdmVyc2FsaW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEK
ZGlmZiAtcCAtdSAtcjEuMTEga2h0bWwveG1sL2RvbTJfdHJhdmVyc2FsaW1wbC5jcHAKLS0tIGto
dG1sL3htbC9kb20yX3RyYXZlcnNhbGltcGwuY3BwCTkgSnVsIDIwMDUgMjA6MTk6MjEgLTAwMDAJ
MS4xMQorKysga2h0bWwveG1sL2RvbTJfdHJhdmVyc2FsaW1wbC5jcHAJMjcgQXVnIDIwMDUgMTY6
MTc6MTggLTAwMDAKQEAgLTQxLDEwICs0MSwxMiBAQCBOb2RlRmlsdGVySW1wbDo6fk5vZGVGaWx0
ZXJJbXBsKCkKICAgICAgICAgbV9jb25kaXRpb24tPmRlcmVmKCk7CiB9CiAKLXNob3J0IE5vZGVG
aWx0ZXJJbXBsOjphY2NlcHROb2RlKE5vZGVJbXBsICpub2RlKSBjb25zdAorc2hvcnQgTm9kZUZp
bHRlckltcGw6OmFjY2VwdE5vZGUoTm9kZUltcGwgKm5vZGUsIEV4Y2VwdGlvbldyYXBwZXIgKiZl
eGNlcHRpb24pIGNvbnN0CiB7Ci0gICAgLy8gY2FzdCB0byBzaG9ydCBzaWxlbmNlcyAiZW51bWVy
YWwgYW5kIG5vbi1lbnVtZXJhbCB0eXBlcyBpbiByZXR1cm4iIHdhcm5pbmcKLSAgICByZXR1cm4g
bV9jb25kaXRpb24gPyBtX2NvbmRpdGlvbi0+YWNjZXB0Tm9kZShub2RlKSA6IHN0YXRpY19jYXN0
PHNob3J0PihOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKTsKKyAgICBpZiAobV9jb25kaXRpb24p
CisgICAgICAgIHJldHVybiBtX2NvbmRpdGlvbi0+YWNjZXB0Tm9kZShub2RlLCBleGNlcHRpb24p
OworICAgIGV4Y2VwdGlvbiA9IE5VTEw7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0PihO
b2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyLDEzNyArNTQs
MTIxIEBAIHNob3J0IE5vZGVGaWx0ZXJJbXBsOjphY2NlcHROb2RlKE5vZGVJbXAKIFRyYXZlcnNh
bEltcGw6OlRyYXZlcnNhbEltcGwoTm9kZUltcGwgKnJvb3ROb2RlLCBsb25nIHdoYXRUb1Nob3cs
IE5vZGVGaWx0ZXJJbXBsICpub2RlRmlsdGVyLCBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMp
CiAgICAgOiBtX3Jvb3Qocm9vdE5vZGUpLCBtX3doYXRUb1Nob3cod2hhdFRvU2hvdyksIG1fZmls
dGVyKG5vZGVGaWx0ZXIpLCBtX2V4cGFuZEVudGl0eVJlZmVyZW5jZXMoZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcykKIHsKLSAgICBpZiAocm9vdCgpKQotICAgICAgICByb290KCktPnJlZigpOwotICAg
IGlmIChmaWx0ZXIoKSkKLSAgICAgICAgZmlsdGVyKCktPnJlZigpOworICAgIGFzc2VydChyb290
Tm9kZSk7CisgICAgcm9vdE5vZGUtPnJlZigpOworICAgIGlmIChub2RlRmlsdGVyKQorICAgICAg
ICBub2RlRmlsdGVyLT5yZWYoKTsKIH0KIAogVHJhdmVyc2FsSW1wbDo6flRyYXZlcnNhbEltcGwo
KQogewotICAgIGlmIChyb290KCkpCi0gICAgICAgIHJvb3QoKS0+ZGVyZWYoKTsKLSAgICBpZiAo
ZmlsdGVyKCkpCi0gICAgICAgIGZpbHRlcigpLT5kZXJlZigpOworICAgIHJvb3QoKS0+ZGVyZWYo
KTsKKyAgICBpZiAoTm9kZUZpbHRlckltcGwgKmYgPSBmaWx0ZXIoKSkKKyAgICAgICAgZi0+ZGVy
ZWYoKTsKIH0KIAotc2hvcnQgVHJhdmVyc2FsSW1wbDo6YWNjZXB0Tm9kZShOb2RlSW1wbCAqbm9k
ZSkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogSWYgWE1MIGlzIGltcGxlbWVudGVkIHdlIGhhdmUg
dG8gY2hlY2sgZXhwYW5kRW50aXR5UmVyZWZlbmNlcyBpbiB0aGlzIGZ1bmN0aW9uLgotICAgIC8v
IFRoZSBiaWQgdHdpZGRsaW5nIGhlcmUgaXMgZG9uZSB0byBtYXAgRE9NIG5vZGUgdHlwZXMsIHdo
aWNoIGFyZSBnaXZlbiBhcyBpbnRlZ2VycyBmcm9tCi0gICAgLy8gMSB0aHJvdWdoIDEyLCB0byB3
aGF0VG9TaG93IGJpdCBtYXNrcy4KLSAgICBpZiAobm9kZSAmJiAoKDEgPDwgKG5vZGUtPm5vZGVU
eXBlKCktMSkpICYgbV93aGF0VG9TaG93KSAhPSAwKQotICAgICAgICAvLyBjYXN0IHRvIHNob3J0
IHNpbGVuY2VzICJlbnVtZXJhbCBhbmQgbm9uLWVudW1lcmFsIHR5cGVzIGluIHJldHVybiIgd2Fy
bmluZwotICAgICAgICByZXR1cm4gbV9maWx0ZXIgPyBtX2ZpbHRlci0+YWNjZXB0Tm9kZShub2Rl
KSA6IHN0YXRpY19jYXN0PHNob3J0PihOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKTsKLSAgICBy
ZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1NLSVA7CitzaG9ydCBUcmF2ZXJzYWxJbXBsOjphY2Nl
cHROb2RlKE5vZGVJbXBsICpub2RlLCBFeGNlcHRpb25XcmFwcGVyIComZXhjZXB0aW9uKSBjb25z
dAoreworICAgIGlmICghbm9kZSB8fCAoKDEgPDwgKG5vZGUtPm5vZGVUeXBlKCkgLSAxKSkgJiBt
X3doYXRUb1Nob3cpID09IDApIHsKKyAgICAgICAgZXhjZXB0aW9uID0gTlVMTDsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHNob3J0PihOb2RlRmlsdGVyOjpGSUxURVJfU0tJUCk7CisgICAg
fQorICAgIGlmIChOb2RlRmlsdGVySW1wbCAqZiA9IG1fZmlsdGVyKQorICAgICAgICByZXR1cm4g
Zi0+YWNjZXB0Tm9kZShub2RlLCBleGNlcHRpb24pOworICAgIGV4Y2VwdGlvbiA9IE5VTEw7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHNob3J0PihOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKTsK
IH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogTm9kZUl0ZXJhdG9ySW1wbDo6Tm9kZUl0ZXJhdG9ySW1wbChOb2Rl
SW1wbCAqcm9vdE5vZGUsIGxvbmcgd2hhdFRvU2hvdywgTm9kZUZpbHRlckltcGwgKmZpbHRlciwg
Ym9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKQotICAgIDpUcmF2ZXJzYWxJbXBsKHJvb3ROb2Rl
LCB3aGF0VG9TaG93LCBmaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpLCBtX3JlZmVyZW5j
ZU5vZGUoMCksIG1fYmVmb3JlUmVmZXJlbmNlTm9kZSh0cnVlKSwgbV9kZXRhY2hlZChmYWxzZSks
IG1fZG9jKDApCisgICAgOiBUcmF2ZXJzYWxJbXBsKHJvb3ROb2RlLCB3aGF0VG9TaG93LCBmaWx0
ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpLCBtX3JlZmVyZW5jZU5vZGUoTlVMTCksIG1fYmVm
b3JlUmVmZXJlbmNlTm9kZSh0cnVlKSwgbV9kZXRhY2hlZChmYWxzZSkKIHsKLSAgICBpZiAocm9v
dCgpKSB7Ci0gICAgICAgIHNldERvY3VtZW50KHJvb3QoKS0+Z2V0RG9jdW1lbnQoKSk7Ci0gICAg
ICAgIGlmIChkb2N1bWVudCgpKSB7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLT5hdHRhY2hOb2Rl
SXRlcmF0b3IodGhpcyk7Ci0gICAgICAgICAgICBkb2N1bWVudCgpLT5yZWYoKTsKLSAgICAgICAg
fQorICAgIERvY3VtZW50SW1wbCAqZG9jID0gcm9vdE5vZGUtPmdldERvY3VtZW50KCk7CisgICAg
bV9kb2MgPSBkb2M7CisgICAgaWYgKGRvYykgeworICAgICAgICBkb2MtPmF0dGFjaE5vZGVJdGVy
YXRvcih0aGlzKTsKKyAgICAgICAgZG9jLT5yZWYoKTsKICAgICB9CiB9CiAKIE5vZGVJdGVyYXRv
ckltcGw6On5Ob2RlSXRlcmF0b3JJbXBsKCkKIHsKLSAgICBpZiAocmVmZXJlbmNlTm9kZSgpKQot
ICAgICAgICByZWZlcmVuY2VOb2RlKCktPmRlcmVmKCk7Ci0gICAgaWYgKGRvY3VtZW50KCkpIHsK
LSAgICAgICAgZG9jdW1lbnQoKS0+ZGV0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOwotICAgICAgICBk
b2N1bWVudCgpLT5kZXJlZigpOworICAgIGlmIChEb2N1bWVudEltcGwgKmRvYyA9IG1fZG9jKSB7
CisgICAgICAgIGRvYy0+ZGV0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOworICAgICAgICBkb2MtPmRl
cmVmKCk7CiAgICAgfQogfQogCi1Ob2RlSW1wbCAqTm9kZUl0ZXJhdG9ySW1wbDo6ZmluZE5leHRO
b2RlKE5vZGVJbXBsICpub2RlKSBjb25zdAorTm9kZUltcGwgKk5vZGVJdGVyYXRvckltcGw6Om5l
eHROb2RlKEV4Y2VwdGlvbldyYXBwZXIgKiZmaWx0ZXJFeGNlcHRpb24sIGludCAmZXhjZXB0aW9u
KQogewotICAgIHdoaWxlICgobm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkpIHsKLSAg
ICAgICAgLy8gTm9kZUl0ZXJhdG9ycyB0cmVhdCB0aGUgRE9NIHRyZWUgYXMgYSBmbGF0IGxpc3Qg
b2Ygbm9kZXMuCi0gICAgICAgIC8vIEluIG90aGVyIHdvcmRzLCBGSUxURVJfUkVKRUNUIGRvZXMg
bm90IHBhc3Mgb3ZlciBkZXNjZW5kYW50cwotICAgICAgICAvLyBvZiB0aGUgcmVqZWN0ZWQgbm9k
ZS4gSGVuY2UsIEZJTFRFUl9SRUpFQ1QgaXMgdGhlIHNhbWUgYXMgRklMVEVSX1NLSVAuCi0gICAg
ICAgIGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCi0g
ICAgICAgICAgICBicmVhazsKKyAgICBpZiAobV9kZXRhY2hlZCkgeworICAgICAgICBleGNlcHRp
b24gPSBET01FeGNlcHRpb246OklOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gTlVM
TDsKICAgICB9Ci0gICAgcmV0dXJuIG5vZGU7Ci19CiAKLU5vZGVJbXBsICpOb2RlSXRlcmF0b3JJ
bXBsOjpuZXh0Tm9kZShpbnQgJmV4Y2VwdGlvbmNvZGUpCi17Ci0gICAgaWYgKGRldGFjaGVkKCkp
IHsKLSAgICAgICAgZXhjZXB0aW9uY29kZSA9IERPTUV4Y2VwdGlvbjo6SU5WQUxJRF9TVEFURV9F
UlI7Ci0gICAgICAgIHJldHVybiAwOworICAgIE5vZGVJbXBsICpyb290Tm9kZSA9IHJvb3QoKTsK
KyAgICBTaGFyZWRQdHI8Tm9kZUltcGw+IG5vZGUgPSBtX3JlZmVyZW5jZU5vZGU7CisgICAgaWYg
KCFub2RlKQorICAgICAgICBub2RlID0gcm9vdDsKKyAgICBlbHNlIGlmICghbV9iZWZvcmVSZWZl
cmVuY2VOb2RlKQorICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9k
ZSk7CisKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBzaG9ydCBhY2NlcHRlZCA9IGFjY2Vw
dE5vZGUobm9kZS5nZXQoKSwgZmlsdGVyRXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGZpbHRlckV4
Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoYWNjZXB0ZWQg
PT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSk7CiAgICAgfQogCi0gICAg
Tm9kZUltcGwgKm5vZGUgPSByZWZlcmVuY2VOb2RlKCkgPyByZWZlcmVuY2VOb2RlKCkgOiByb290
KCk7Ci0gICAgaWYgKCFwb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZSgpIHx8IGFjY2VwdE5vZGUo
bm9kZSkgIT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKLSAgICAgICAgbm9kZSA9IGZpbmRO
ZXh0Tm9kZShub2RlKTsKICAgICBpZiAobm9kZSkKLSAgICAgICAgc2V0UmVmZXJlbmNlTm9kZShu
b2RlKTsKLSAgICBzZXRQb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZShmYWxzZSk7CisgICAgICAg
IG1fcmVmZXJlbmNlTm9kZSA9IG5vZGU7CisgICAgbV9iZWZvcmVSZWZlcmVuY2VOb2RlID0gZmFs
c2U7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLU5vZGVJbXBsICpOb2RlSXRlcmF0b3JJbXBsOjpm
aW5kUHJldmlvdXNOb2RlKE5vZGVJbXBsICpub2RlKSBjb25zdAorTm9kZUltcGwgKk5vZGVJdGVy
YXRvckltcGw6OnByZXZpb3VzTm9kZShFeGNlcHRpb25XcmFwcGVyIComZmlsdGVyRXhjZXB0aW9u
LCBpbnQgJmV4Y2VwdGlvbikKIHsKLSAgICB3aGlsZSAoKG5vZGUgPSBub2RlLT50cmF2ZXJzZVBy
ZXZpb3VzTm9kZSgpKSkgewotICAgICAgICAvLyBOb2RlSXRlcmF0b3JzIHRyZWF0IHRoZSBET00g
dHJlZSBhcyBhIGZsYXQgbGlzdCBvZiBub2Rlcy4KLSAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMs
IEZJTFRFUl9SRUpFQ1QgZG9lcyBub3QgcGFzcyBvdmVyIGRlc2NlbmRhbnRzCi0gICAgICAgIC8v
IG9mIHRoZSByZWplY3RlZCBub2RlLiBIZW5jZSwgRklMVEVSX1JFSkVDVCBpcyB0aGUgc2FtZSBh
cyBGSUxURVJfU0tJUC4KLSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRl
cjo6RklMVEVSX0FDQ0VQVCkKKyAgICBpZiAobV9kZXRhY2hlZCkgeworICAgICAgICBleGNlcHRp
b24gPSBET01FeGNlcHRpb246OklOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gTlVM
TDsKKyAgICB9CisKKyAgICBOb2RlSW1wbCAqbm9kZSA9IG1fcmVmZXJlbmNlTm9kZTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgTm9kZUltcGwgKnJvb3ROb2Rl
ID0gcm9vdCgpOworICAgIGlmIChtX2JlZm9yZVJlZmVyZW5jZU5vZGUpCisgICAgICAgIG5vZGUg
PSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZShyb290Tm9kZSk7CisKKyAgICB3aGlsZSAobm9k
ZSkgeworICAgICAgICBzaG9ydCBhY2NlcHRlZCA9IGFjY2VwdE5vZGUobm9kZSwgZmlsdGVyRXhj
ZXB0aW9uKTsKKyAgICAgICAgaWYgKGZpbHRlckV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVy
biBOVUxMOworICAgICAgICBpZiAoYWNjZXB0ZWQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQ
VCkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VQcmV2
aW91c05vZGUocm9vdE5vZGUpOwogICAgIH0KLSAgICByZXR1cm4gbm9kZTsKLX0KIAotTm9kZUlt
cGwgKk5vZGVJdGVyYXRvckltcGw6OnByZXZpb3VzTm9kZShpbnQgJmV4Y2VwdGlvbmNvZGUpCi17
Ci0gICAgTm9kZUltcGwgKm5vZGUgPSByZWZlcmVuY2VOb2RlKCkgPyByZWZlcmVuY2VOb2RlKCkg
OiByb290KCk7Ci0gICAgaWYgKHBvaW50ZXJCZWZvcmVSZWZlcmVuY2VOb2RlKCkgfHwgYWNjZXB0
Tm9kZShub2RlKSAhPSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQotICAgICAgICBub2RlID0g
ZmluZFByZXZpb3VzTm9kZShub2RlKTsKICAgICBpZiAobm9kZSkKLSAgICAgICAgc2V0UmVmZXJl
bmNlTm9kZShub2RlKTsKLSAgICBzZXRQb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZSgpOworICAg
ICAgICBtX3JlZmVyZW5jZU5vZGUgPSBub2RlOworICAgIG1fYmVmb3JlUmVmZXJlbmNlTm9kZSA9
IHRydWU7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLXZvaWQgTm9kZUl0ZXJhdG9ySW1wbDo6ZGV0
YWNoKGludCAmLypleGNlcHRpb25jb2RlKi8pCi17Ci0gICAgaWYgKCFkZXRhY2hlZCgpICYmIGRv
Y3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50KCktPmRldGFjaE5vZGVJdGVyYXRvcih0aGlzKTsK
LSAgICBzZXREZXRhY2hlZCgpOwotfQotCi12b2lkIE5vZGVJdGVyYXRvckltcGw6OnNldFJlZmVy
ZW5jZU5vZGUoTm9kZUltcGwgKm5vZGUpCit2b2lkIE5vZGVJdGVyYXRvckltcGw6OmRldGFjaCgp
CiB7Ci0gICAgaWYgKG5vZGUgPT0gbV9yZWZlcmVuY2VOb2RlKQorICAgIGlmIChtX2RldGFjaGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgTm9kZUltcGwgKm9sZCA9IG1fcmVmZXJlbmNl
Tm9kZTsKLSAgICBtX3JlZmVyZW5jZU5vZGUgPSBub2RlOwotICAgIGlmIChtX3JlZmVyZW5jZU5v
ZGUpCi0gICAgICAgIG1fcmVmZXJlbmNlTm9kZS0+cmVmKCk7Ci0gICAgaWYgKG9sZCkKLSAgICAg
ICAgb2xkLT5kZXJlZigpOwotfQotCi12b2lkIE5vZGVJdGVyYXRvckltcGw6OnNldERvY3VtZW50
KERvY3VtZW50SW1wbCAqZG9jKQotewotICAgIGlmIChkb2MgPT0gbV9kb2MpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBEb2N1bWVudEltcGwgKm9sZCA9IG1fZG9jOwotICAgIG1fZG9jID0g
ZG9jOwotICAgIGlmIChtX2RvYykKLSAgICAgICAgbV9kb2MtPnJlZigpOwotICAgIGlmIChvbGQp
Ci0gICAgICAgIG9sZC0+ZGVyZWYoKTsKKyAgICBpZiAoRG9jdW1lbnRJbXBsICpkb2MgPSBtX2Rv
YykgeworICAgICAgICBkb2MtPmRldGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKKyAgICAgICAgZG9j
LT5kZXJlZigpOworICAgICAgICBtX2RvYyA9IE5VTEw7CisgICAgfQorICAgIG1fZGV0YWNoZWQg
PSB0cnVlOwogfQogCiB2b2lkIE5vZGVJdGVyYXRvckltcGw6Om5vdGlmeUJlZm9yZU5vZGVSZW1v
dmFsKE5vZGVJbXBsICp3aWxsUmVtb3ZlKQpAQCAtMTkxLDEyICsxNzcsMTIgQEAgdm9pZCBOb2Rl
SXRlcmF0b3JJbXBsOjpub3RpZnlCZWZvcmVOb2RlUgogICAgIC8vIG9yIGlmIHJlbW92ZWQgbm9k
ZSBpcyBub3QgdGhlIHJlZmVyZW5jZSBub2RlLCBvciB0aGUgYW5jZXN0b3Igb2YgdGhlIHJlZmVy
ZW5jZSBub2RlLgogICAgIGlmICghd2lsbFJlbW92ZSB8fCB3aWxsUmVtb3ZlID09IHJvb3QoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5vZGUgPSB3aWxs
UmVtb3ZlID09IHJlZmVyZW5jZU5vZGUoKTsKLSAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VO
b2RlQW5jZXN0b3IgPSByZWZlcmVuY2VOb2RlKCkgJiYgcmVmZXJlbmNlTm9kZSgpLT5pc0FuY2Vz
dG9yKHdpbGxSZW1vdmUpOworICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5vZGUgPSB3aWxs
UmVtb3ZlID09IG1fcmVmZXJlbmNlTm9kZTsKKyAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VO
b2RlQW5jZXN0b3IgPSBtX3JlZmVyZW5jZU5vZGUgJiYgbV9yZWZlcmVuY2VOb2RlLT5pc0FuY2Vz
dG9yKHdpbGxSZW1vdmUpOwogICAgIGlmICghd2lsbFJlbW92ZVJlZmVyZW5jZU5vZGUgJiYgIXdp
bGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChwb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZSgpKSB7CisgICAgaWYgKG1fYmVmb3JlUmVmZXJl
bmNlTm9kZSkgewogICAgICAgICBOb2RlSW1wbCAqbm9kZSA9IGZpbmROZXh0Tm9kZSh3aWxsUmVt
b3ZlKTsKICAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20g
dW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUgaXMKQEAg
LTIwNiw3ICsxOTIsNyBAQCB2b2lkIE5vZGVJdGVyYXRvckltcGw6Om5vdGlmeUJlZm9yZU5vZGVS
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBmaW5kTmV4dE5vZGUobm9kZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgICAgICBzZXRSZWZlcmVu
Y2VOb2RlKG5vZGUpOworICAgICAgICAgICAgICAgIG1fcmVmZXJlbmNlTm9kZSA9IG5vZGU7CiAg
ICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBub2RlID0gZmluZFByZXZpb3Vz
Tm9kZSh3aWxsUmVtb3ZlKTsKQEAgLTIyMSw4ICsyMDcsOCBAQCB2b2lkIE5vZGVJdGVyYXRvcklt
cGw6Om5vdGlmeUJlZm9yZU5vZGVSCiAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92aW5nIGxh
c3Qgbm9kZS4KICAgICAgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBtb3ZlIHRoZSBwb2ludGVy
IGFmdGVyIHRoZSBub2RlIHByZWNlZGluZyB0aGUgCiAgICAgICAgICAgICAgICAgICAgIC8vIG5l
dyByZWZlcmVuY2Ugbm9kZS4KLSAgICAgICAgICAgICAgICAgICAgc2V0UmVmZXJlbmNlTm9kZShu
b2RlKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0UG9pbnRlckJlZm9yZVJlZmVyZW5jZU5vZGUo
ZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtX3JlZmVyZW5jZU5vZGUgPSBub2RlOworICAg
ICAgICAgICAgICAgICAgICBtX2JlZm9yZVJlZmVyZW5jZU5vZGUgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTIzNyw3ICsyMjMsNyBAQCB2
b2lkIE5vZGVJdGVyYXRvckltcGw6Om5vdGlmeUJlZm9yZU5vZGVSCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUgPSBmaW5kUHJldmlvdXNOb2RlKG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICAgICAgc2V0UmVmZXJlbmNlTm9kZShub2RlKTsK
KyAgICAgICAgICAgICAgICBtX3JlZmVyZW5jZU5vZGUgPSBub2RlOwogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgbm9kZSA9IGZpbmROZXh0Tm9kZSh3aWxsUmVtb3ZlKTsK
QEAgLTI0OCw3ICsyMzQsNyBAQCB2b2lkIE5vZGVJdGVyYXRvckltcGw6Om5vdGlmeUJlZm9yZU5v
ZGVSCiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gZmluZFByZXZpb3VzTm9kZShub2Rl
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUpCi0gICAgICAg
ICAgICAgICAgICAgIHNldFJlZmVyZW5jZU5vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgICAg
IG1fcmVmZXJlbmNlTm9kZSA9IG5vZGU7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNTgsMTQg
KzI0NCw2IEBAIHZvaWQgTm9kZUl0ZXJhdG9ySW1wbDo6bm90aWZ5QmVmb3JlTm9kZVIKIFRyZWVX
YWxrZXJJbXBsOjpUcmVlV2Fsa2VySW1wbChOb2RlSW1wbCAqcm9vdE5vZGUsIGxvbmcgd2hhdFRv
U2hvdywgTm9kZUZpbHRlckltcGwgKmZpbHRlciwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2Vz
KQogICAgIDogVHJhdmVyc2FsSW1wbChyb290Tm9kZSwgd2hhdFRvU2hvdywgZmlsdGVyLCBleHBh
bmRFbnRpdHlSZWZlcmVuY2VzKSwgbV9jdXJyZW50KHJvb3ROb2RlKQogewotICAgIGlmIChjdXJy
ZW50Tm9kZSgpKQotICAgICAgICBjdXJyZW50Tm9kZSgpLT5yZWYoKTsKLX0KLQotVHJlZVdhbGtl
ckltcGw6On5UcmVlV2Fsa2VySW1wbCgpCi17Ci0gICAgaWYgKGN1cnJlbnROb2RlKCkpCi0gICAg
ICAgIGN1cnJlbnROb2RlKCktPmRlcmVmKCk7CiB9CiAKIHZvaWQgVHJlZVdhbGtlckltcGw6OnNl
dEN1cnJlbnROb2RlKE5vZGVJbXBsICpub2RlLCBpbnQgJmV4Y2VwdGlvbmNvZGUpCkBAIC0yNzQs
MTIyICsyNTIsMTM5IEBAIHZvaWQgVHJlZVdhbGtlckltcGw6OnNldEN1cnJlbnROb2RlKE5vZGUK
ICAgICAgICAgZXhjZXB0aW9uY29kZSA9IERPTUV4Y2VwdGlvbjo6Tk9UX1NVUFBPUlRFRF9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpZiAobm9kZSA9PSBtX2N1cnJlbnQpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBOb2RlSW1wbCAqb2xkID0gbV9jdXJyZW50OwogICAg
IG1fY3VycmVudCA9IG5vZGU7Ci0gICAgaWYgKG1fY3VycmVudCkKLSAgICAgICAgbV9jdXJyZW50
LT5yZWYoKTsKLSAgICBpZiAob2xkKQotICAgICAgICBvbGQtPmRlcmVmKCk7Ci19Ci0KLXZvaWQg
VHJlZVdhbGtlckltcGw6OnNldEN1cnJlbnROb2RlKE5vZGVJbXBsICpub2RlKQotewotICAgIGFz
c2VydChub2RlKTsKLSAgICBpbnQgZHVtbXk7Ci0gICAgc2V0Q3VycmVudE5vZGUobm9kZSwgZHVt
bXkpOwogfQogCiBOb2RlSW1wbCAqVHJlZVdhbGtlckltcGw6OnBhcmVudE5vZGUoKQogewotICAg
IE5vZGVJbXBsICpyZXN1bHQgPSAwOwotICAgIGZvciAoTm9kZUltcGwgKm5vZGUgPSBjdXJyZW50
Tm9kZSgpLT5wYXJlbnROb2RlKCk7IG5vZGUgJiYgbm9kZSAhPSByb290KCk7IG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZp
bHRlcjo6RklMVEVSX0FDQ0VQVCkgewotICAgICAgICAgICAgc2V0Q3VycmVudE5vZGUobm9kZSk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBub2RlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgZm9y
IChTaGFyZWRQdHI8Tm9kZUltcGw+IG5vZGUgPSBtX2N1cnJlbnQ7IG5vZGUubm90TnVsbCgpICYm
IG5vZGUgIT0gcm9vdCgpOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAgIGlm
IChhY2NlcHROb2RlKG5vZGUuZ2V0KCkpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsK
KyAgICAgICAgICAgIG1fY3VycmVudCA9IG5vZGU7CisgICAgICAgICAgICByZXR1cm4gbm9kZS5n
ZXQoKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBO
VUxMOwogfQogCiBOb2RlSW1wbCAqVHJlZVdhbGtlckltcGw6OmZpcnN0Q2hpbGQoKQogewotICAg
IE5vZGVJbXBsICpyZXN1bHQgPSAwOwotICAgIGZvciAoTm9kZUltcGwgKm5vZGUgPSBjdXJyZW50
Tm9kZSgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7
Ci0gICAgICAgIGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NF
UFQpIHsKLSAgICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5vZGUpOwotICAgICAgICAgICAgcmVz
dWx0ID0gbm9kZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIE5vZGVJbXBsICpjdXJyZW50ID0g
bV9jdXJyZW50LmdldCgpOworICAgIFNoYXJlZFB0cjxOb2RlSW1wbD4gbm9kZShjdXJyZW50LT50
cmF2ZXJzZU5leHROb2RlKGN1cnJlbnQpKTsKKyAgICB3aGlsZSAobm9kZS5ub3ROdWxsKCkpIHsK
KyAgICAgICAgc3dpdGNoIChhY2NlcHROb2RlKG5vZGUuZ2V0KCkpKSB7CisgICAgICAgICAgICBj
YXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6CisgICAgICAgICAgICAgICAgbV9jdXJyZW50
ID0gbm9kZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5nZXQoKTsKKyAgICAgICAgICAg
IGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDoKKyAgICAgICAgICAgICAgICBub2RlID0g
bm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyhjdXJyZW50KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1NLSVA6CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2Rl
KGN1cnJlbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIE5vZGVJbXBsICpUcmVlV2Fs
a2VySW1wbDo6bGFzdENoaWxkKCkKIHsKLSAgICBOb2RlSW1wbCAqcmVzdWx0ID0gMDsKLSAgICBm
b3IgKE5vZGVJbXBsICpub2RlID0gY3VycmVudE5vZGUoKS0+bGFzdENoaWxkKCk7IG5vZGU7IG5v
ZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBpZiAoYWNjZXB0Tm9kZShu
b2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAgICAgICAgICBzZXRDdXJy
ZW50Tm9kZShub2RlKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IG5vZGU7Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICBOb2RlSW1wbCAqY3VycmVudCA9IG1fY3VycmVudC5nZXQoKTsKKyAgICBTaGFy
ZWRQdHI8Tm9kZUltcGw+IG5vZGUoY3VycmVudC0+dHJhdmVyc2VQcmV2aW91c05vZGVQb3N0T3Jk
ZXIoY3VycmVudCkpOworICAgIHdoaWxlIChub2RlLm5vdE51bGwoKSkgeworICAgICAgICBzd2l0
Y2ggKGFjY2VwdE5vZGUobm9kZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRl
cjo6RklMVEVSX0FDQ0VQVDoKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlOworICAg
ICAgICAgICAgICAgIHJldHVybiBub2RlLmdldCgpOworICAgICAgICAgICAgY2FzZSBOb2RlRmls
dGVyOjpGSUxURVJfUkVKRUNUOgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJz
ZVByZXZpb3VzU2libGluZ1Bvc3RPcmRlcihjdXJyZW50KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1NLSVA6CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3Vz
Tm9kZVBvc3RPcmRlcihjdXJyZW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBOVUxMOwogfQogCiBOb2Rl
SW1wbCAqVHJlZVdhbGtlckltcGw6OnByZXZpb3VzU2libGluZygpCiB7Ci0gICAgTm9kZUltcGwg
KnJlc3VsdCA9IDA7Ci0gICAgZm9yIChOb2RlSW1wbCAqbm9kZSA9IGN1cnJlbnROb2RlKCktPnBy
ZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsK
LSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQ
VCkgewotICAgICAgICAgICAgc2V0Q3VycmVudE5vZGUobm9kZSk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBub2RlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgLy8gRklYTUU6IFRoaXMgd29uJ3Qg
c3RvcCBhbmQgcmV0dXJuIE5VTEwgd2hlbiBpdCBoaXRzIHRoZSBmaXJzdCBhY2NlcHRlZCBhbmNl
c3RvcjsgaXQgbmVlZHMgdG8uCisgICAgU2hhcmVkUHRyPE5vZGVJbXBsPiBub2RlID0gbV9jdXJy
ZW50LT50cmF2ZXJzZVByZXZpb3VzU2libGluZ1Bvc3RPcmRlcihyb290KCkpOworICAgIHdoaWxl
IChub2RlLm5vdE51bGwoKSkgeworICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGUobm9kZS5nZXQo
KSkpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKKyAgICAg
ICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlOworICAgICAgICAgICAgICAgIHJldHVybiBub2Rl
LmdldCgpOworICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOgorICAg
ICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzU2libGluZ1Bvc3RPcmRl
cihyb290KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOb2Rl
RmlsdGVyOjpGSUxURVJfU0tJUDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKHJvb3QoKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogTm9kZUltcGwgKlRyZWVXYWxrZXJJbXBsOjpuZXh0
U2libGluZygpCiB7Ci0gICAgTm9kZUltcGwgKnJlc3VsdCA9IDA7Ci0gICAgZm9yIChOb2RlSW1w
bCAqbm9kZSA9IGN1cnJlbnROb2RlKCktPm5leHRTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2Rl
LT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVG
aWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKLSAgICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5vZGUp
OwotICAgICAgICAgICAgcmVzdWx0ID0gbm9kZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIC8v
IEZJWE1FOiBUaGlzIHdvbid0IHN0b3AgYW5kIHJldHVybiBOVUxMIHdoZW4gaXQgaGl0cyB0aGUg
Zmlyc3QgYWNjZXB0ZWQgYW5jZXN0b3I7IGl0IG5lZWRzIHRvLgorICAgIFNoYXJlZFB0cjxOb2Rl
SW1wbD4gbm9kZSA9IG1fY3VycmVudC0+dHJhdmVyc2VOZXh0U2libGluZyhyb290KCkpOworICAg
IHdoaWxlIChub2RlLm5vdE51bGwoKSkgeworICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGUobm9k
ZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoK
KyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlOworICAgICAgICAgICAgICAgIHJldHVy
biBub2RlLmdldCgpOworICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNU
OgorICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHJvb3Qo
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6
OkZJTFRFUl9TS0lQOgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290KCkpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIE5VTEw7
CiB9CiAKIE5vZGVJbXBsICpUcmVlV2Fsa2VySW1wbDo6cHJldmlvdXNOb2RlKCkKIHsKLSAgICBO
b2RlSW1wbCAqcmVzdWx0ID0gMDsKLSAgICBmb3IgKE5vZGVJbXBsICpub2RlID0gY3VycmVudE5v
ZGUoKS0+dHJhdmVyc2VQcmV2aW91c05vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNl
UHJldmlvdXNOb2RlKCkpIHsKLSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZp
bHRlcjo6RklMVEVSX0FDQ0VQVCAmJiAhYW5jZXN0b3JSZWplY3RlZChub2RlKSkgewotICAgICAg
ICAgICAgc2V0Q3VycmVudE5vZGUobm9kZSk7Ci0gICAgICAgICAgICByZXN1bHQgPSBub2RlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyNpZiAwCisgICAgU2hhcmVkUHRyPE5vZGVJbXBsPiBub2RlID0gbV9jdXJyZW50OworICAgIHNo
b3J0IGFjY2VwdGVkID0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKKyAgICBzd2l0Y2ggKGFj
Y2VwdGVkKSB7CisgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKKyAgICAg
ICAgICAgIG1fY3VycmVudCA9IG5vZGU7CisgICAgICAgICAgICByZXR1cm4gbm9kZS5nZXQoKTsK
KyAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOgorICAgICAgICAgICAgTm9k
ZUltcGwgKnByZXZpb3VzID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgICAgICBp
ZiAoIXByZXZpb3VzKSB7CisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBub2RlLT5wYXJlbnRO
b2RlKCk7CisjZW5kaWYKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogTm9kZUltcGwgKlRyZWVXYWxr
ZXJJbXBsOjpuZXh0Tm9kZSgpCiB7Ci0gICAgTm9kZUltcGwgKnJlc3VsdCA9IDA7Ci0gICAgZm9y
IChOb2RlSW1wbCAqbm9kZSA9IGN1cnJlbnROb2RlKCktPnRyYXZlcnNlTmV4dE5vZGUoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewotICAgICAgICBpZiAoYWNjZXB0
Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUICYmICFhbmNlc3RvclJlamVj
dGVkKG5vZGUpKSB7Ci0gICAgICAgICAgICBzZXRDdXJyZW50Tm9kZShub2RlKTsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IG5vZGU7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBTaGFyZWRQdHI8Tm9k
ZUltcGw+IG5vZGUgPSBtX2N1cnJlbnQtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCgpKTsKKyAgICB3
aGlsZSAobm9kZS5ub3ROdWxsKCkpIHsKKyAgICAgICAgc3dpdGNoIChhY2NlcHROb2RlKG5vZGUu
Z2V0KCkpKSB7CisgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ6Cisg
ICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gbm9kZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
bm9kZS5nZXQoKTsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDoK
KyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyhyb290KCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpG
SUxURVJfU0tJUDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgbm9kZSA9
IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1ib29sIFRyZWVXYWxr
ZXJJbXBsOjphbmNlc3RvclJlamVjdGVkKGNvbnN0IE5vZGVJbXBsICpub2RlKSBjb25zdAotewot
ICAgIGZvciAoTm9kZUltcGwgKmEgPSBub2RlLT5wYXJlbnROb2RlKCk7IGEgJiYgYSAhPSByb290
KCk7IGEgPSBhLT5wYXJlbnROb2RlKCkpCi0gICAgICAgIGlmIChhY2NlcHROb2RlKGEpID09IE5v
ZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1QpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERPTQpJ
bmRleDoga2h0bWwveG1sL2RvbTJfdHJhdmVyc2FsaW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9XZWJDb3JlL2todG1sL3htbC9kb20yX3RyYXZlcnNhbGltcGwuaCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS4xMApkaWZmIC1wIC11IC1yMS4xMCBraHRtbC94bWwvZG9tMl90cmF2
ZXJzYWxpbXBsLmgKLS0tIGtodG1sL3htbC9kb20yX3RyYXZlcnNhbGltcGwuaAkxMCBNYXkgMjAw
NSAyMTo1OToxNCAtMDAwMAkxLjEwCisrKyBraHRtbC94bWwvZG9tMl90cmF2ZXJzYWxpbXBsLmgJ
MjcgQXVnIDIwMDUgMTY6MTc6MTggLTAwMDAKQEAgLTIzLDggKzIzLDggQEAKICAqCiAgKi8KIAot
I2lmbmRlZiBfZG9tMl90cmF2ZXJzYWxfaAotI2RlZmluZSBfZG9tMl90cmF2ZXJzYWxfaAorI2lm
bmRlZiBET00yX1RSQVZFUlNBTElNUExfSAorI2RlZmluZSBET00yX1RSQVZFUlNBTElNUExfSAog
CiAjaW5jbHVkZSAiZG9tL2RvbTJfdHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAibWlzYy9zaGFyZWQu
aCIKQEAgLTQzLDEyICs0Myw5IEBAIHB1YmxpYzoKICAgICAKICAgICBNQUlOX1RIUkVBRF9BTExP
Q0FURUQ7CiAgICAgCi0gICAgc2hvcnQgYWNjZXB0Tm9kZShOb2RlSW1wbCAqKSBjb25zdDsKKyAg
ICBzaG9ydCBhY2NlcHROb2RlKE5vZGVJbXBsICosIEV4Y2VwdGlvbldyYXBwZXIgKiZleGNlcHRp
b24pIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICBOb2RlRmlsdGVySW1wbChjb25zdCBOb2Rl
RmlsdGVySW1wbCAmKTsKLSAgICBOb2RlRmlsdGVySW1wbCAmb3BlcmF0b3I9KGNvbnN0IE5vZGVG
aWx0ZXJJbXBsICYpOwotCiAgICAgTm9kZUZpbHRlckNvbmRpdGlvbiAqbV9jb25kaXRpb247CiB9
OwogCkBAIC02NSwxMiArNjIsMTAgQEAgcHVibGljOgogICAgIE5vZGVGaWx0ZXJJbXBsICpmaWx0
ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcjsgfQogICAgIGJvb2wgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5kRW50aXR5UmVmZXJlbmNlczsgfQogCi0g
ICAgc2hvcnQgYWNjZXB0Tm9kZShOb2RlSW1wbCAqKSBjb25zdDsKK3Byb3RlY3RlZDoKKyAgICBz
aG9ydCBhY2NlcHROb2RlKE5vZGVJbXBsICosIEV4Y2VwdGlvbldyYXBwZXIgKiZleGNlcHRpb24p
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIFRyYXZlcnNhbEltcGwoY29uc3QgVHJhdmVyc2FsSW1w
bCAmKTsKLSAgICBUcmF2ZXJzYWxJbXBsICZvcGVyYXRvcj0oY29uc3QgVHJhdmVyc2FsSW1wbCAm
KTsKLSAgICAKICAgICBOb2RlSW1wbCAqbV9yb290OwogICAgIGxvbmcgbV93aGF0VG9TaG93Owog
ICAgIE5vZGVGaWx0ZXJJbXBsICptX2ZpbHRlcjsKQEAgLTgzLDEyICs3OCw5IEBAIHB1YmxpYzoK
ICAgICBOb2RlSXRlcmF0b3JJbXBsKE5vZGVJbXBsICosIGxvbmcgd2hhdFRvU2hvdywgTm9kZUZp
bHRlckltcGwgKiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKTsKICAgICB+Tm9kZUl0ZXJh
dG9ySW1wbCgpOwogCi0gICAgTm9kZUltcGwgKm5leHROb2RlKGludCAmZXhjZXB0aW9uY29kZSk7
Ci0gICAgTm9kZUltcGwgKnByZXZpb3VzTm9kZShpbnQgJmV4Y2VwdGlvbmNvZGUpOwotICAgIHZv
aWQgZGV0YWNoKGludCAmZXhjZXB0aW9uY29kZSk7Ci0KLSAgICBOb2RlSW1wbCAqcmVmZXJlbmNl
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlTm9kZTsgfQotICAgIGJvb2wgcG9pbnRl
ckJlZm9yZVJlZmVyZW5jZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2JlZm9yZVJlZmVyZW5jZU5v
ZGU7IH0KKyAgICBOb2RlSW1wbCAqbmV4dE5vZGUoRXhjZXB0aW9uV3JhcHBlciAqJmZpbHRlckV4
Y2VwdGlvbiwgaW50ICZleGNlcHRpb25jb2RlKTsKKyAgICBOb2RlSW1wbCAqcHJldmlvdXNOb2Rl
KEV4Y2VwdGlvbldyYXBwZXIgKiZmaWx0ZXJFeGNlcHRpb24sIGludCAmZXhjZXB0aW9uY29kZSk7
CisgICAgdm9pZCBkZXRhY2goKTsKIAogICAgIC8qKgogICAgICAqIFRoaXMgZnVuY3Rpb24gaGFz
IHRvIGJlIGNhbGxlZCBpZiB5b3UgZGVsZXRlIGEgbm9kZSBmcm9tIHRoZQpAQCAtOTgsMTkgKzkw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5QmVmb3JlTm9kZVJlbW92YWwoTm9kZUltcGwg
KnJlbW92ZWQpOwogCiBwcml2YXRlOgotICAgIE5vZGVJdGVyYXRvckltcGwoY29uc3QgTm9kZUl0
ZXJhdG9ySW1wbCAmKTsKLSAgICBOb2RlSXRlcmF0b3JJbXBsICZvcGVyYXRvcj0oY29uc3QgTm9k
ZUl0ZXJhdG9ySW1wbCAmKTsKLSAgICAKLSAgICB2b2lkIHNldFJlZmVyZW5jZU5vZGUoTm9kZUlt
cGwgKik7Ci0gICAgdm9pZCBzZXRQb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZShib29sIGZsYWc9
dHJ1ZSkgeyBtX2JlZm9yZVJlZmVyZW5jZU5vZGUgPSBmbGFnOyB9Ci0gICAgYm9vbCBkZXRhY2hl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWNoZWQ7IH0KLSAgICB2b2lkIHNldERldGFjaGVkKGJv
b2wgZmxhZz10cnVlKSB7IG1fZGV0YWNoZWQgPSBmbGFnOyB9Ci0gICAgRG9jdW1lbnRJbXBsICog
ZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvYzsgfQotICAgIHZvaWQgc2V0RG9jdW1lbnQo
RG9jdW1lbnRJbXBsICopOwotICAgIE5vZGVJbXBsICpmaW5kTmV4dE5vZGUoTm9kZUltcGwgKikg
Y29uc3Q7Ci0gICAgTm9kZUltcGwgKmZpbmRQcmV2aW91c05vZGUoTm9kZUltcGwgKikgY29uc3Q7
Ci0KLSAgICBOb2RlSW1wbCAqbV9yZWZlcmVuY2VOb2RlOworICAgIGtodG1sOjpTaGFyZWRQdHI8
Tm9kZUltcGw+IG1fcmVmZXJlbmNlTm9kZTsKICAgICBib29sIG1fYmVmb3JlUmVmZXJlbmNlTm9k
ZTsKICAgICBib29sIG1fZGV0YWNoZWQ7CiAgICAgRG9jdW1lbnRJbXBsICptX2RvYzsKQEAgLTEy
MCwzMiArMTAwLDIyIEBAIGNsYXNzIFRyZWVXYWxrZXJJbXBsIDogcHVibGljIFRyYXZlcnNhbEkK
IHsKIHB1YmxpYzoKICAgICBUcmVlV2Fsa2VySW1wbChOb2RlSW1wbCAqLCBsb25nIHdoYXRUb1No
b3csIE5vZGVGaWx0ZXJJbXBsICosIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcyk7Ci0gICAg
flRyZWVXYWxrZXJJbXBsKCk7CiAKLSAgICBOb2RlSW1wbCAqY3VycmVudE5vZGUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnQ7IH0KKyAgICBOb2RlSW1wbCAqY3VycmVudE5vZGUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7IH0KICAgICB2b2lkIHNldEN1cnJlbnROb2RlKE5vZGVJ
bXBsICosIGludCAmZXhjZXB0aW9uY29kZSk7CiAKLSAgICBOb2RlSW1wbCAqcGFyZW50Tm9kZSgp
OwotICAgIE5vZGVJbXBsICpmaXJzdENoaWxkKCk7Ci0gICAgTm9kZUltcGwgKmxhc3RDaGlsZCgp
OwotICAgIE5vZGVJbXBsICpwcmV2aW91c1NpYmxpbmcoKTsKLSAgICBOb2RlSW1wbCAqbmV4dFNp
YmxpbmcoKTsKLSAgICBOb2RlSW1wbCAqcHJldmlvdXNOb2RlKCk7Ci0gICAgTm9kZUltcGwgKm5l
eHROb2RlKCk7CisgICAgTm9kZUltcGwgKnBhcmVudE5vZGUoRXhjZXB0aW9uV3JhcHBlciAqJiBm
aWx0ZXJFeGNlcHRpb24pOworICAgIE5vZGVJbXBsICpmaXJzdENoaWxkKEV4Y2VwdGlvbldyYXBw
ZXIgKiYgZmlsdGVyRXhjZXB0aW9uKTsKKyAgICBOb2RlSW1wbCAqbGFzdENoaWxkKEV4Y2VwdGlv
bldyYXBwZXIgKiYgZmlsdGVyRXhjZXB0aW9uKTsKKyAgICBOb2RlSW1wbCAqcHJldmlvdXNTaWJs
aW5nKEV4Y2VwdGlvbldyYXBwZXIgKiYgZmlsdGVyRXhjZXB0aW9uKTsKKyAgICBOb2RlSW1wbCAq
bmV4dFNpYmxpbmcoRXhjZXB0aW9uV3JhcHBlciAqJiBmaWx0ZXJFeGNlcHRpb24pOworICAgIE5v
ZGVJbXBsICpwcmV2aW91c05vZGUoRXhjZXB0aW9uV3JhcHBlciAqJiBmaWx0ZXJFeGNlcHRpb24p
OworICAgIE5vZGVJbXBsICpuZXh0Tm9kZShFeGNlcHRpb25XcmFwcGVyIComIGZpbHRlckV4Y2Vw
dGlvbik7CiAKIHByaXZhdGU6Ci0gICAgVHJlZVdhbGtlckltcGwoY29uc3QgVHJlZVdhbGtlcklt
cGwgJik7Ci0gICAgVHJlZVdhbGtlckltcGwgJm9wZXJhdG9yPShjb25zdCBUcmVlV2Fsa2VySW1w
bCAmKTsKLQotICAgIC8vIGNvbnZlbmllbmNlIGZvciB3aGVuIGl0IGlzIGtub3duIHRoZXJlIHdp
bGwgYmUgbm8gZXhjZXB0aW9uCi0gICAgdm9pZCBzZXRDdXJyZW50Tm9kZShOb2RlSW1wbCAqKTsK
LSAgICAKLSAgICBib29sIGFuY2VzdG9yUmVqZWN0ZWQoY29uc3QgTm9kZUltcGwgKikgY29uc3Q7
Ci0gICAgCi0gICAgTm9kZUltcGwgKm1fY3VycmVudDsKKyAgICBraHRtbDo6U2hhcmVkUHRyPE5v
ZGVJbXBsPiBtX2N1cnJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKLQpJbmRl
eDoga2h0bWwveG1sL2RvbV9ub2RlaW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1dlYkNvcmUva2h0bWwveG1sL2RvbV9ub2RlaW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMTc3CmRpZmYgLXAgLXUgLXIxLjE3NyBraHRtbC94bWwvZG9tX25vZGVpbXBsLmNwcAot
LS0ga2h0bWwveG1sL2RvbV9ub2RlaW1wbC5jcHAJMjUgQXVnIDIwMDUgMjM6MTM6NTUgLTAwMDAJ
MS4xNzcKKysrIGtodG1sL3htbC9kb21fbm9kZWltcGwuY3BwCTI3IEF1ZyAyMDA1IDE2OjE3OjE5
IC0wMDAwCkBAIC0xMDE1LDgwICsxMDE1LDUwIEBAIE5vZGVJbXBsICpOb2RlSW1wbDo6Y2hpbGRO
b2RlKHVuc2lnbmVkIGwKIAogTm9kZUltcGwgKk5vZGVJbXBsOjp0cmF2ZXJzZU5leHROb2RlKGNv
bnN0IE5vZGVJbXBsICpzdGF5V2l0aGluKSBjb25zdAogewotICAgIGlmIChmaXJzdENoaWxkKCkp
IHsKLSAgICAgICAgYXNzZXJ0KCFzdGF5V2l0aGluIHx8IGZpcnN0Q2hpbGQoKS0+aXNBbmNlc3Rv
cihzdGF5V2l0aGluKSk7Ci0JcmV0dXJuIGZpcnN0Q2hpbGQoKTsKLSAgICB9Ci0gICAgaWYgKHRo
aXMgPT0gc3RheVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5leHRTaWJsaW5n
KCkpIHsKLSAgICAgICAgYXNzZXJ0KCFzdGF5V2l0aGluIHx8IG5leHRTaWJsaW5nKCktPmlzQW5j
ZXN0b3Ioc3RheVdpdGhpbikpOwotCXJldHVybiBuZXh0U2libGluZygpOwotICAgIH0KLSAgICBj
b25zdCBOb2RlSW1wbCAqbiA9IHRoaXM7Ci0gICAgd2hpbGUgKG4gJiYgIW4tPm5leHRTaWJsaW5n
KCkgJiYgKCFzdGF5V2l0aGluIHx8IG4tPnBhcmVudE5vZGUoKSAhPSBzdGF5V2l0aGluKSkKLSAg
ICAgICAgbiA9IG4tPnBhcmVudE5vZGUoKTsKLSAgICBpZiAobikgewotICAgICAgICBhc3NlcnQo
IXN0YXlXaXRoaW4gfHwgIW4tPm5leHRTaWJsaW5nKCkgfHwgbi0+bmV4dFNpYmxpbmcoKS0+aXNB
bmNlc3RvcihzdGF5V2l0aGluKSk7Ci0gICAgICAgIHJldHVybiBuLT5uZXh0U2libGluZygpOwot
ICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBpZiAoTm9kZUltcGwgKmZjID0gZmlyc3RDaGlsZCgp
KQorCXJldHVybiBmYzsKKyAgICBmb3IgKGNvbnN0IE5vZGVJbXBsICpuID0gdGhpczsgbiAmJiBu
ICE9IHN0YXlXaXRoaW47IG4gPSBuLT5wYXJlbnROb2RlKCkpCisgICAgICAgIGlmIChOb2RlSW1w
bCAqbnMgPSBuLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgcmV0dXJuIG5zOworICAgIHJl
dHVybiBOVUxMOwogfQogCiBOb2RlSW1wbCAqTm9kZUltcGw6OnRyYXZlcnNlTmV4dFNpYmxpbmco
Y29uc3QgTm9kZUltcGwgKnN0YXlXaXRoaW4pIGNvbnN0CiB7Ci0gICAgaWYgKHRoaXMgPT0gc3Rh
eVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5leHRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgYXNzZXJ0KCFzdGF5V2l0aGluIHx8IG5leHRTaWJsaW5nKCktPmlzQW5jZXN0b3Ioc3Rh
eVdpdGhpbikpOwotCXJldHVybiBuZXh0U2libGluZygpOwotICAgIH0KLSAgICBjb25zdCBOb2Rl
SW1wbCAqbiA9IHRoaXM7Ci0gICAgd2hpbGUgKG4gJiYgIW4tPm5leHRTaWJsaW5nKCkgJiYgKCFz
dGF5V2l0aGluIHx8IG4tPnBhcmVudE5vZGUoKSAhPSBzdGF5V2l0aGluKSkKLSAgICAgICAgbiA9
IG4tPnBhcmVudE5vZGUoKTsKLSAgICBpZiAobikgewotICAgICAgICBhc3NlcnQoIXN0YXlXaXRo
aW4gfHwgIW4tPm5leHRTaWJsaW5nKCkgfHwgbi0+bmV4dFNpYmxpbmcoKS0+aXNBbmNlc3Rvcihz
dGF5V2l0aGluKSk7Ci0gICAgICAgIHJldHVybiBuLT5uZXh0U2libGluZygpOwotICAgIH0KLSAg
ICByZXR1cm4gMDsKKyAgICBmb3IgKGNvbnN0IE5vZGVJbXBsICpuID0gdGhpczsgbiAmJiBuICE9
IHN0YXlXaXRoaW47IG4gPSBuLT5wYXJlbnROb2RlKCkpCisgICAgICAgIGlmIChOb2RlSW1wbCAq
bnMgPSBuLT5uZXh0U2libGluZygpKQorICAgICAgICAgICAgcmV0dXJuIG5zOworICAgIHJldHVy
biBOVUxMOwogfQogCiBOb2RlSW1wbCAqTm9kZUltcGw6OnRyYXZlcnNlUHJldmlvdXNOb2RlKCkg
Y29uc3QKIHsKLSAgICBpZiAocHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAgTm9kZUltcGwg
Km4gPSBwcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgd2hpbGUgKG4tPmxhc3RDaGlsZCgpKQot
ICAgICAgICAgICAgbiA9IG4tPmxhc3RDaGlsZCgpOworICAgIGlmIChOb2RlSW1wbCAqbiA9IHBy
ZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIHdoaWxlIChOb2RlSW1wbCAqYyA9IG4tPmxhc3RD
aGlsZCgpKQorICAgICAgICAgICAgbiA9IGM7CiAgICAgICAgIHJldHVybiBuOwogICAgIH0KLSAg
ICBlbHNlIGlmIChwYXJlbnROb2RlKCkpIHsKLSAgICAgICAgcmV0dXJuIHBhcmVudE5vZGUoKTsK
LSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBpZiAoTm9k
ZUltcGwgKnAgPSBwYXJlbnROb2RlKCkpCisgICAgICAgIHJldHVybiBwOworICAgIHJldHVybiBO
VUxMOwogfQogCiBOb2RlSW1wbCAqTm9kZUltcGw6OnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9y
ZGVyKGNvbnN0IE5vZGVJbXBsICpzdGF5V2l0aGluKSBjb25zdAogewotICAgIGlmIChsYXN0Q2hp
bGQoKSkgewotICAgICAgICBhc3NlcnQoIXN0YXlXaXRoaW4gfHwgbGFzdENoaWxkKCktPmlzQW5j
ZXN0b3Ioc3RheVdpdGhpbikpOwotCXJldHVybiBsYXN0Q2hpbGQoKTsKLSAgICB9Ci0gICAgaWYg
KHRoaXMgPT0gc3RheVdpdGhpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHByZXZpb3Vz
U2libGluZygpKSB7Ci0gICAgICAgIGFzc2VydCghc3RheVdpdGhpbiB8fCBwcmV2aW91c1NpYmxp
bmcoKS0+aXNBbmNlc3RvcihzdGF5V2l0aGluKSk7Ci0JcmV0dXJuIHByZXZpb3VzU2libGluZygp
OwotICAgIH0KLSAgICBjb25zdCBOb2RlSW1wbCAqbiA9IHRoaXM7Ci0gICAgd2hpbGUgKG4gJiYg
IW4tPnByZXZpb3VzU2libGluZygpICYmICghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnROb2RlKCkg
IT0gc3RheVdpdGhpbikpCi0gICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKG4p
IHsKLSAgICAgICAgYXNzZXJ0KCFzdGF5V2l0aGluIHx8ICFuLT5wcmV2aW91c1NpYmxpbmcoKSB8
fCBuLT5wcmV2aW91c1NpYmxpbmcoKS0+aXNBbmNlc3RvcihzdGF5V2l0aGluKSk7Ci0gICAgICAg
IHJldHVybiBuLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAg
aWYgKE5vZGVJbXBsICpsYyA9IGxhc3RDaGlsZCgpKQorCXJldHVybiBsYzsKKyAgICBmb3IgKGNv
bnN0IE5vZGVJbXBsICpuID0gdGhpczsgbiAmJiBuICE9IHN0YXlXaXRoaW47IG4gPSBuLT5wYXJl
bnROb2RlKCkpCisgICAgICAgIGlmIChOb2RlSW1wbCAqcHMgPSBuLT5uZXh0U2libGluZygpKQor
ICAgICAgICAgICAgcmV0dXJuIHBzOworICAgIHJldHVybiBOVUxMOworfQorCitOb2RlSW1wbCAq
Tm9kZUltcGw6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nUG9zdE9yZGVyKGNvbnN0IE5vZGVJbXBs
ICpzdGF5V2l0aGluKSBjb25zdAoreworICAgIGZvciAoY29uc3QgTm9kZUltcGwgKm4gPSB0aGlz
OyBuICYmIG4gIT0gc3RheVdpdGhpbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkKKyAgICAgICAgaWYg
KE5vZGVJbXBsICpwcyA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICByZXR1cm4gcHM7
CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHZvaWQgTm9kZUltcGw6OmNoZWNrU2V0UHJlZml4KGNv
bnN0IEF0b21pY1N0cmluZyAmX3ByZWZpeCwgaW50ICZleGNlcHRpb25jb2RlKQpJbmRleDoga2h0
bWwveG1sL2RvbV9ub2RlaW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJD
b3JlL2todG1sL3htbC9kb21fbm9kZWltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45Nwpk
aWZmIC1wIC11IC1yMS45NyBraHRtbC94bWwvZG9tX25vZGVpbXBsLmgKLS0tIGtodG1sL3htbC9k
b21fbm9kZWltcGwuaAk4IEF1ZyAyMDA1IDIxOjEyOjAxIC0wMDAwCTEuOTcKKysrIGtodG1sL3ht
bC9kb21fbm9kZWltcGwuaAkyNyBBdWcgMjAwNSAxNjoxNzoyMCAtMDAwMApAQCAtMzMzLDYgKzMz
Myw5IEBAIHB1YmxpYzoKICAgICAvKiBMaWtlIHRyYXZlcnNlUHJldmlvdXNOb2RlLCBidXQgdmlz
aXRzIG5vZGVzIGJlZm9yZSB0aGVpciBjaGlsZHJlbi4gKi8KICAgICBOb2RlSW1wbCAqdHJhdmVy
c2VQcmV2aW91c05vZGVQb3N0T3JkZXIoY29uc3QgTm9kZUltcGwgKnN0YXlXaXRoaW4gPSAwKSBj
b25zdDsKIAorICAgIC8qIExpa2UgdHJhdmVyc2VQcmV2aW91c05vZGVQb3N0T3JkZXIsIGJ1dCBz
a2lwcyBjaGlsZHJlbiBhbmQgc3RhcnRzIHdpdGggdGhlIHByZXZpb3VzIHNpYmxpbmcuICovCisg
ICAgTm9kZUltcGwgKnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nUG9zdE9yZGVyKGNvbnN0IE5vZGVJ
bXBsICpzdGF5V2l0aGluID0gMCkgY29uc3Q7CisKICAgICBEb2N1bWVudFB0ciAqZG9jUHRyKCkg
Y29uc3QgeyByZXR1cm4gZG9jdW1lbnQ7IH0KIAogICAgIE5vZGVJbXBsICpwcmV2aW91c0VkaXRh
YmxlKCkgY29uc3Q7CkluZGV4OiBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAw
MS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUvbGF5
b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEtZXhwZWN0ZWQudHh0LHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBsYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwMS1leHBlY3RlZC50eHQKLS0tIGxheW91dC10ZXN0cy90cmF2ZXJzYWwv
dHJlZS13YWxrZXItMDAxLWV4cGVjdGVkLnR4dAkxNCBKdW4gMjAwNSAyMjozNzoxMSAtMDAwMAkx
LjMKKysrIGxheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAxLWV4cGVjdGVkLnR4
dAkyNyBBdWcgMjAwNSAxNjoxNzoyOCAtMDAwMApAQCAtMSwxMTEgKzEsOSBAQAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
LWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
NTc4Ci0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgwCi0gICAgICAg
IFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BB
Tn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5l
IHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQ
QU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBS
ZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVy
SW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
IFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3
ODR4MzE4Ci0gICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0
eDE2Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDMwKSBzaXplIDc4NHgyODgKLSAgICAgICAgICBSZW5k
ZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxMDQ6ICJUcmVlIFdhbGtlcjogIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNikg
c2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNikgd2lkdGggODogIkEiCi0g
ICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDMyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwzMikgd2lkdGggNDA6ICIgIEEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNDgpIHNpemUg
NDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ4KSB3aWR0aCA0MDogIiAgQS4yIgot
ICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCw2NCkgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsNjQpIHdpZHRoIDQwOiAiICBBLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDgwKSBzaXpl
IDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDgwKSB3aWR0aCA4OiAiQiIKLSAgICAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsOTYpIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDk2KSB3aWR0aCA0MDogIiAgQi4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxMTIpIHNpemUgNzJ4
MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExMikgd2lkdGggNzI6ICIgICAgQi4xLjEi
Ci0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDEyOCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxMjgpIHdpZHRoIDg6ICJDIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNDQpIHNpemUg
NDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE0NCkgd2lkdGggNDA6ICIgIEMuMSIK
LSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTYwKSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwxNjApIHdpZHRoIDcyOiAiICAgIEMuMS4xIgotICAgICAgICAgIFJlbmRlckJSIHtC
Un0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwx
NzYpIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNzYpIHdpZHRoIDEw
NDogIiAgICAgIEMuMS4xLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE5Mikgc2l6ZSAxMDR4MTYK
LSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE5Mikgd2lkdGggMTA0OiAiICAgICAgQy4xLjEu
MiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjA4KSBzaXplIDEwNHgxNgotICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMjA4KSB3aWR0aCAxMDQ6ICIgICAgICBDLjEuMS4zIgotICAgICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMCwyMjQpIHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIyNCkg
d2lkdGggNzI6ICIgICAgQy4xLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDI0MCkgc2l6ZSA4OHgx
NgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjQwKSB3aWR0aCA4ODogIiAgICAgIEMuMi4x
IgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwyNTYpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMjU2KSB3aWR0aCA4OiAiRCIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKKyAKK1RyZWUgV2Fsa2VyOiAKK0EKKyAgQS4xCisgIEEuMgorICBBLjMKKworCisKSW5kZXg6
IGxheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAxLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUvbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdh
bGtlci0wMDEuaHRtbCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXAgLXUgLXIxLjEg
bGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEuaHRtbAotLS0gbGF5b3V0LXRl
c3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEuaHRtbAk0IE1heSAyMDA0IDIzOjMxOjQyIC0w
MDAwCTEuMQorKysgbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDEuaHRtbAky
NyBBdWcgMjAwNSAxNjoxNzoyOCAtMDAwMApAQCAtNDAsNiArNDAsMTAgQEAKIDwvZGl2PgogPGRp
diBzdHlsZT0iZm9udC1mYW1pbHk6IENvdXJpZXI7IGZvbnQtc2l6ZTogMTQ7IHdoaXRlLXNwYWNl
OiBwcmUiPgogPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKIHZhciByb290ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0EnKTsKIAogZnVuY3Rpb24gdGVzdE5vZGVGaXRlcihuKQpJ
bmRleDogbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91dC10ZXN0cy90cmF2
ZXJzYWwvdHJlZS13YWxrZXItMDAyLWV4cGVjdGVkLnR4dCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4zCmRpZmYgLXAgLXUgLXIxLjMgbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0w
MDItZXhwZWN0ZWQudHh0Ci0tLSBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAw
Mi1leHBlY3RlZC50eHQJMTQgSnVuIDIwMDUgMjI6Mzc6MTEgLTAwMDAJMS4zCisrKyBsYXlvdXQt
dGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMi1leHBlY3RlZC50eHQJMjcgQXVnIDIwMDUg
MTY6MTc6MjggLTAwMDAKQEAgLTEsOTkgKzEsOCBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCi0gIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc4Ci0gICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgwCi0gICAgICAgIFJlbmRlcklubGluZSB7
U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBS
ZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDAp
IHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVy
SW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQ
QU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklubGlu
ZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRlcklubGluZSB7
U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MjU0Ci0gICAgICAg
IFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDE2Ci0gICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyQmxvY2sg
e1B9IGF0ICgwLDMwKSBzaXplIDc4NHgyMjQKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge0J9IGF0
ICgwLDApIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDEwNHgxNgotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMDQ6
ICJUcmVlIFdhbGtlcjogIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNikgc2l6ZSA4eDE2Ci0gICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNikgd2lkdGggODogIkIiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDMyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMikgd2lkdGgg
NDA6ICIgIEIuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNDgpIHNpemUgNzJ4MTYKLSAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDQ4KSB3aWR0aCA3MjogIiAgICBCLjEuMSIKLSAgICAgICAgICBS
ZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsNjQpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjQpIHdp
ZHRoIDg6ICJDIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw4MCkgc2l6ZSA0MHgxNgotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsODApIHdpZHRoIDQwOiAiICBDLjEiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDk2KSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5Nikgd2lkdGgg
NzI6ICIgICAgQy4xLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDExMikgc2l6ZSAxMDR4MTYKLSAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExMikgd2lkdGggMTA0OiAiICAgICAgQy4xLjEuMSIK
LSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTI4KSBzaXplIDEwNHgxNgotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTI4KSB3aWR0aCAxMDQ6ICIgICAgICBDLjEuMS4yIgotICAgICAgICAgIFJlbmRl
ckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwxNDQpIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdp
ZHRoIDEwNDogIiAgICAgIEMuMS4xLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE2MCkgc2l6ZSA3
MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYwKSB3aWR0aCA3MjogIiAgICBDLjEu
MiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTc2KSBzaXplIDg4eDE2Ci0gICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxNzYpIHdpZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDE5Mikgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOTIpIHdpZHRo
IDg6ICJEIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAorIAorVHJlZSBXYWxrZXI6
IAorQgorICBCLjEKKyAgICBCLjEuMQorCisKKwpJbmRleDogbGF5b3V0LXRlc3RzL3RyYXZlcnNh
bC90cmVlLXdhbGtlci0wMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMi5odG1sLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjEKZGlmZiAtcCAtdSAtcjEuMSBsYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwMi5odG1sCi0tLSBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fs
a2VyLTAwMi5odG1sCTQgTWF5IDIwMDQgMjM6MzE6NDIgLTAwMDAJMS4xCisrKyBsYXlvdXQtdGVz
dHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMi5odG1sCTI3IEF1ZyAyMDA1IDE2OjE3OjI5IC0w
MDAwCkBAIC00MCw2ICs0MCwxMCBAQAogPC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LWZhbWlseTog
Q291cmllcjsgZm9udC1zaXplOiAxNDsgd2hpdGUtc3BhY2U6IHByZSI+CiA8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKK30KKwogdmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
QicpOwogCiBmdW5jdGlvbiB0ZXN0Tm9kZUZpdGVyKG4pCkluZGV4OiBsYXlvdXQtdGVzdHMvdHJh
dmVyc2FsL3RyZWUtd2Fsa2VyLTAwMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1dlYkNvcmUvbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDMt
ZXhwZWN0ZWQudHh0LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBs
YXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwMy1leHBlY3RlZC50eHQKLS0tIGxh
eW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAzLWV4cGVjdGVkLnR4dAkxNCBKdW4g
MjAwNSAyMjozNzoxMSAtMDAwMAkxLjMKKysrIGxheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13
YWxrZXItMDAzLWV4cGVjdGVkLnR4dAkyNyBBdWcgMjAwNSAxNjoxNzoyOSAtMDAwMApAQCAtMSwx
NDkgKzEsMTIgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJDYW52YXMg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAotICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3OAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA3ODR4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
UmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7
U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVu
ZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJl
bmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQ
QU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
ICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0
ICgwLDApIHNpemUgNzg0eDQ3NgotICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwwKSBzaXplIDc4NHgxNgotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzMCkgc2l6ZSA3ODR4MjA4Ci0g
ICAgICAgICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTA0OiAiVHJlZSBXYWxrZXI6ICIKLSAgICAgICAgICBS
ZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMTYpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYpIHdp
ZHRoIDg6ICJBIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwzMikgc2l6ZSA0MHgxNgotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMzIpIHdpZHRoIDQwOiAiICBBLjEiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDQ4KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0OCkgd2lkdGgg
NDA6ICIgIEEuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0g
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNjQpIHNpemUgNDB4MTYKLSAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDY0KSB3aWR0aCA0MDogIiAgQS4zIgotICAgICAgICAgIFJlbmRl
ckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCw4MCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw4MCkgd2lkdGgg
ODogIkIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDk2KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCw5Nikgd2lkdGggNDA6ICIgIEIuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MTEyKSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxMTIpIHdpZHRoIDcy
OiAiICAgIEIuMi4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxMjgpIHNpemUgOHgxNgotICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMTI4KSB3aWR0aCA4OiAiQyIKLSAgICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMTQ0KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdpZHRo
IDQwOiAiICBDLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE2MCkgc2l6ZSA3MngxNgotICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMTYwKSB3aWR0aCA3MjogIiAgICBDLjEuMiIKLSAgICAgICAg
ICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMTc2KSBzaXplIDg4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
NzYpIHdpZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE5Mikgc2l6
ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOTIpIHdpZHRoIDg6ICJEIgotICAg
ICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDI1Mikgc2l6ZSA3ODR4MjI0Ci0gICAgICAgICAgUmVuZGVySW5saW5lIHtC
fSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTA0OiAiVHJlZSBXYWxrZXI6ICIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTYpIHNpemUgOHgxNgot
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYpIHdpZHRoIDg6ICJEIgotICAgICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMCwzMikgc2l6ZSA4OHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzIpIHdp
ZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDQ4KSBzaXplIDcyeDE2
Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0OCkgd2lkdGggNzI6ICIgICAgQy4xLjIiCi0g
ICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDY0KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCw2NCkgd2lkdGggNDA6ICIgIEMuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsODApIHNpemUg
OHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsODApIHdpZHRoIDg6ICJDIgotICAgICAg
ICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCw5Nikgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
OTYpIHdpZHRoIDcyOiAiICAgIEIuMi4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxMTIpIHNpemUg
NDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExMikgd2lkdGggNDA6ICIgIEIuMiIK
LSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTI4KSBzaXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDEyOCkgd2lkdGggODogIkIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE0NCkgc2l6ZSA0
MHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTQ0KSB3aWR0aCA0MDogIiAgQS4zIgot
ICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwxNjApIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDE2MCkgd2lkdGggNDA6ICIgIEEuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTc2KSBz
aXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNzYpIHdpZHRoIDQwOiAiICBB
LjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE5Mikgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwxOTIpIHdpZHRoIDg6ICJBIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAorIAorVHJlZSBXYWxrZXI6IAorQQorICBBLjEKKyAgQS4yCisgIEEuMworCitUcmVlIFdh
bGtlcjogCitECisKKworCkluZGV4OiBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2Vy
LTAwMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL2xheW91dC10
ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAzLmh0bWwsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMQpkaWZmIC1wIC11IC1yMS4xIGxheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXIt
MDAzLmh0bWwKLS0tIGxheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDAzLmh0bWwJ
NCBNYXkgMjAwNCAyMzozMTo0MiAtMDAwMAkxLjEKKysrIGxheW91dC10ZXN0cy90cmF2ZXJzYWwv
dHJlZS13YWxrZXItMDAzLmh0bWwJMjcgQXVnIDIwMDUgMTY6MTc6MjkgLTAwMDAKQEAgLTQ2LDYg
KzQ2LDEwIEBACiA8L2Rpdj4KIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBDb3VyaWVyOyBmb250
LXNpemU6IDE0OyB3aGl0ZS1zcGFjZTogcHJlIj4KIDxzY3JpcHQ+CitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworfQorCiB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdBJyk7CiAKIGZ1bmN0
aW9uIHRlc3ROb2RlRml0ZXIobikKSW5kZXg6IGxheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13
YWxrZXItMDA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2Vi
Q29yZS9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNC1leHBlY3RlZC50eHQs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGxheW91dC10ZXN0cy90
cmF2ZXJzYWwvdHJlZS13YWxrZXItMDA0LWV4cGVjdGVkLnR4dAotLS0gbGF5b3V0LXRlc3RzL3Ry
YXZlcnNhbC90cmVlLXdhbGtlci0wMDQtZXhwZWN0ZWQudHh0CTE4IEF1ZyAyMDA1IDA0OjIzOjEx
IC0wMDAwCTEuNAorKysgbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDQtZXhw
ZWN0ZWQudHh0CTI3IEF1ZyAyMDA1IDE2OjE3OjI5IC0wMDAwCkBAIC0xLDE5MSArMSwxMiBAQAot
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NzIyCi0gIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXpl
IDc4NXg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgNzg1eDcyMgotICBSZW5kZXJCbG9jayB7SFRN
TH0gYXQgKDAsMCkgc2l6ZSA3ODV4NzIyCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3Njl4NzAwCi0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc2OXgw
Ci0gICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklu
bGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5k
ZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFO
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAweDAKLSAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQ
QU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBS
ZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAg
UmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVy
SW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
IFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3
Njl4NzAwCi0gICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzY5
eDE2Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDMwKSBzaXplIDc2OXgzMjAKLSAgICAgICAgICBSZW5k
ZXJJbmxpbmUge0J9IGF0ICgwLDApIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICBSZW5kZXJUZXh0
IHtURVhUfSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxMDQ6ICJUcmVlIFdhbGtlcjogIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNikg
c2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNikgd2lkdGggODogIkEiCi0g
ICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDMyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwzMikgd2lkdGggNDA6ICIgIEEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNDgpIHNpemUg
NDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ4KSB3aWR0aCA0MDogIiAgQS4yIgot
ICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCw2NCkgc2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsNjQpIHdpZHRoIDQwOiAiICBBLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDgwKSBzaXpl
IDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDgwKSB3aWR0aCA4OiAiQiIKLSAgICAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsOTYpIHNpemUgNDB4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDk2KSB3aWR0aCA0MDogIiAgQi4xIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxMTIpIHNpemUgNzJ4
MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExMikgd2lkdGggNzI6ICIgICAgQi4xLjEi
Ci0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDEyOCkgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMTI4KSB3aWR0aCA3MjogIiAgICBCLjEuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MTQ0KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdpZHRoIDQw
OiAiICBCLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE2MCkgc2l6ZSA3MngxNgotICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMTYwKSB3aWR0aCA3MjogIiAgICBCLjIuMSIKLSAgICAgICAgICBS
ZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMTc2KSBzaXplIDh4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE3Nikg
d2lkdGggODogIkMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAot
ICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE5Mikgc2l6ZSA0MHgxNgotICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMTkyKSB3aWR0aCA0MDogIiAgQy4xIgotICAgICAgICAgIFJl
bmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMCwyMDgpIHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIwOCkg
d2lkdGggNzI6ICIgICAgQy4xLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDIyNCkgc2l6ZSAxMDR4
MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDIyNCkgd2lkdGggMTA0OiAiICAgICAgQy4x
LjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjQwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMjQwKSB3aWR0aCAxMDQ6ICIgICAgICBDLjEuMS4yIgotICAgICAgICAg
IFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwyNTYpIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
NTYpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDI3Mikg
c2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjcyKSB3aWR0aCA3MjogIiAg
ICBDLjEuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjg4KSBzaXplIDg4eDE2Ci0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwyODgpIHdpZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDMwNCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMDQp
IHdpZHRoIDg6ICJEIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM2NCkgc2l6ZSA3Njl4MzM2Ci0gICAgICAg
ICAgUmVuZGVySW5saW5lIHtCfSBhdCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMDR4MTYKLSAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTA0OiAiVHJlZSBXYWxrZXI6ICIKLSAgICAgICAgICBSZW5kZXJC
UiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMTYpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYpIHdpZHRoIDg6
ICJEIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwzMikgc2l6ZSA4OHgxNgotICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMzIpIHdpZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDQ4KSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw0OCkgd2lkdGgg
NzI6ICIgICAgQy4xLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDY0KSBzaXplIDEwNHgxNgotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsNjQpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjMiCi0g
ICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDgwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsODApIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjIiCi0gICAgICAgICAgUmVuZGVyQlIg
e0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDk2KSBzaXplIDEwNHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsOTYpIHdpZHRoIDEw
NDogIiAgICAgIEMuMS4xLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDExMikgc2l6ZSA3MngxNgot
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTEyKSB3aWR0aCA3MjogIiAgICBDLjEuMSIKLSAg
ICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMTI4KSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwxMjgpIHdpZHRoIDQwOiAiICBDLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE0NCkgc2l6
ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNDQpIHdpZHRoIDg6ICJDIgotICAg
ICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwxNjApIHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE2MCkgd2lkdGggNzI6ICIgICAgQi4yLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE3Nikg
c2l6ZSA0MHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTc2KSB3aWR0aCA0MDogIiAg
Qi4yIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxOTIpIHNpemUgNzJ4MTYKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDE5Mikgd2lkdGggNzI6ICIgICAgQi4xLjIiCi0gICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0
ICgwLDIwOCkgc2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjA4KSB3aWR0
aCA3MjogIiAgICBCLjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMjI0KSBzaXplIDQweDE2Ci0g
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwyMjQpIHdpZHRoIDQwOiAiICBCLjEiCi0gICAgICAg
ICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDI0MCkgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
NDApIHdpZHRoIDg6ICJCIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwyNTYpIHNpemUgNDB4MTYKLSAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDI1Nikgd2lkdGggNDA6ICIgIEEuMyIKLSAgICAgICAg
ICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMjcyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwy
NzIpIHdpZHRoIDQwOiAiICBBLjIiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDI4OCkgc2l6ZSA0MHgx
NgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMjg4KSB3aWR0aCA0MDogIiAgQS4xIgotICAg
ICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwzMDQpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMzA0KSB3aWR0aCA4OiAiQSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNp
emUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAK
K1RyZWUgV2Fsa2VyOiAKK0EKKyAgQS4xCisgIEEuMgorICBBLjMKKworVHJlZSBXYWxrZXI6IAor
RAorCisKKwpJbmRleDogbGF5b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9sYXlvdXQtdGVzdHMvdHJh
dmVyc2FsL3RyZWUtd2Fsa2VyLTAwNC5odG1sLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlm
ZiAtcCAtdSAtcjEuMSBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNC5odG1s
Ci0tLSBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNC5odG1sCTQgTWF5IDIw
MDQgMjM6MzE6NDIgLTAwMDAJMS4xCisrKyBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fs
a2VyLTAwNC5odG1sCTI3IEF1ZyAyMDA1IDE2OjE3OjI5IC0wMDAwCkBAIC00Niw2ICs0NiwxMCBA
QAogPC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ291cmllcjsgZm9udC1zaXplOiAx
NDsgd2hpdGUtc3BhY2U6IHByZSI+CiA8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK30KKwog
dmFyIHJvb3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQScpOwogCiBmdW5jdGlvbiB0ZXN0
Tm9kZUZpdGVyKG4pCkluZGV4OiBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAw
NS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUvbGF5
b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDUtZXhwZWN0ZWQudHh0LHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBsYXlvdXQtdGVzdHMvdHJhdmVyc2Fs
L3RyZWUtd2Fsa2VyLTAwNS1leHBlY3RlZC50eHQKLS0tIGxheW91dC10ZXN0cy90cmF2ZXJzYWwv
dHJlZS13YWxrZXItMDA1LWV4cGVjdGVkLnR4dAkxNCBKdW4gMjAwNSAyMjozNzoxMSAtMDAwMAkx
LjIKKysrIGxheW91dC10ZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItMDA1LWV4cGVjdGVkLnR4
dAkyNyBBdWcgMjAwNSAxNjoxNzoyOSAtMDAwMApAQCAtMSwxMDggKzEsOCBAQAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
LWxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCi0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
NTc4Ci0gICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgwCi0gICAgICAg
IFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlcklubGluZSB7U1BB
Tn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVySW5saW5l
IHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUg
e1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCww
KSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAg
ICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJl
bmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAg
UmVuZGVySW5saW5lIHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICBSZW5kZXJJbmxp
bmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtTUEFOfSBhdCAo
MCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAg
ICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICAgICAgUmVuZGVySW5saW5lIHtT
UEFOfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMHgwCi0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgIFJlbmRlcklu
bGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhU
fSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MjU0Ci0g
ICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDE2Ci0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDMwKSBzaXplIDc4NHgyMjQKLSAgICAgICAgICBSZW5kZXJJbmxpbmUg
e0J9IGF0ICgwLDApIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMCwwKSBzaXplIDEwNHgxNgotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxMDQ6ICJUcmVlIFdhbGtlcjogIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkg
c2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwxNikgc2l6ZSA4eDE2
Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxNikgd2lkdGggODogIkIiCi0gICAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDMyKSBzaXplIDQweDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzMikg
d2lkdGggNDA6ICIgIEIuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUg
MHgwCi0gICAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsNDgpIHNpemUgNzJ4MTYKLSAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDQ4KSB3aWR0aCA3MjogIiAgICBCLjIuMSIKLSAgICAg
ICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAgICAgUmVuZGVyVGV4
dCB7VEVYVH0gYXQgKDAsNjQpIHNpemUgOHgxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
NjQpIHdpZHRoIDg6ICJDIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCw4MCkgc2l6ZSA0MHgxNgotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsODApIHdpZHRoIDQwOiAiICBDLjEiCi0gICAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDk2KSBzaXplIDcyeDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCw5Nikg
d2lkdGggNzI6ICIgICAgQy4xLjEiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDExMikgc2l6ZSAxMDR4
MTYKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDExMikgd2lkdGggMTA0OiAiICAgICAgQy4x
LjEuMSIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTI4KSBzaXplIDEwNHgxNgotICAgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMTI4KSB3aWR0aCAxMDQ6ICIgICAgICBDLjEuMS4yIgotICAgICAgICAg
IFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwxNDQpIHNpemUgMTA0eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwx
NDQpIHdpZHRoIDEwNDogIiAgICAgIEMuMS4xLjMiCi0gICAgICAgICAgUmVuZGVyQlIge0JSfSBh
dCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDE2MCkg
c2l6ZSA3MngxNgotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMTYwKSB3aWR0aCA3MjogIiAg
ICBDLjEuMiIKLSAgICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMTc2KSBzaXplIDg4eDE2Ci0gICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwxNzYpIHdpZHRoIDg4OiAiICAgICAgQy4yLjEiCi0gICAgICAgICAg
UmVuZGVyQlIge0JSfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgICAgIFJlbmRlclRleHQge1RF
WFR9IGF0ICgwLDE5Mikgc2l6ZSA4eDE2Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOTIp
IHdpZHRoIDg6ICJEIgotICAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQgKDAsMCkgc2l6ZSAweDAK
LSAgICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MAorIAorVHJlZSBX
YWxrZXI6IAorQgorICBCLjIKKyAgICBCLjIuMQorCisKKwpJbmRleDogbGF5b3V0LXRlc3RzL3Ry
YXZlcnNhbC90cmVlLXdhbGtlci0wMDUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvV2ViQ29yZS9sYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLTAwNS5odG1sLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtcCAtdSAtcjEuMSBsYXlvdXQtdGVzdHMvdHJh
dmVyc2FsL3RyZWUtd2Fsa2VyLTAwNS5odG1sCi0tLSBsYXlvdXQtdGVzdHMvdHJhdmVyc2FsL3Ry
ZWUtd2Fsa2VyLTAwNS5odG1sCTEyIEp1bCAyMDA0IDIxOjU3OjM0IC0wMDAwCTEuMQorKysgbGF5
b3V0LXRlc3RzL3RyYXZlcnNhbC90cmVlLXdhbGtlci0wMDUuaHRtbAkyNyBBdWcgMjAwNSAxNjox
NzoyOSAtMDAwMApAQCAtNDYsNiArNDYsMTAgQEAKIDwvZGl2PgogPGRpdiBzdHlsZT0iZm9udC1m
YW1pbHk6IENvdXJpZXI7IGZvbnQtc2l6ZTogMTQ7IHdoaXRlLXNwYWNlOiBwcmUiPgogPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Cit9CisKIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ0InKTsKIAogZnVuY3Rpb24gdGVzdE5vZGVGaXRlcihuKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18345</attachid>
            <date>2008-01-08 22:51:04 -0800</date>
            <delta_ts>2008-02-03 18:10:03 -0800</delta_ts>
            <desc>patch -- seems to be great, but needs some more tests</desc>
            <filename>TraversalPatch.txt</filename>
            <type>text/plain</type>
            <size>75411</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTMzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMwIEBACisyMDA4LTAxLTA4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZp
eCBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDkyCisgICAgICAgICAg
VHJlZVdhbGtlciBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBiZSBmaXhlZCAoYWZmZWN0cyBBY2lk
MykKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcxNAorICAgICAgICAgIE5vZGVJdGVyYXRvciBkb2VzIG5vdCBoYW5kbGUgZXhjZXB0aW9ucyBm
cm9tIHRoZSBmaWx0ZXIgZnVuY3Rpb24gKGFmZmVjdHMgQWNpZDMpCisgICAgICAgIC0gZml4IGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTYKKyAgICAgICAgICBOb2Rl
SXRlcmF0b3Igd2lsbCBjcmFzaCBpZiB0aGUgZmlsdGVyIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1
cnJlbnQgbm9kZSBmcm9tIHRoZSBkb2N1bWVudAorCisgICAgICAgIFRlc3Q6IHRyYXZlcnNhbC9l
eGNlcHRpb24tZm9yd2FyZGluZy5odG1sCisKKyAgICAgICAgVGhpcyB0dXJuZWQgaW50byBhIG5l
YXItcmV3cml0ZSBvZiBOb2RlSXRlcmF0b3IgYW5kIFRyZWVXYWxrZXIuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGFrZUV4Y2Vw
dGlvbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uOjph
Y2NlcHROb2RlKTogQWRkZWQgYW4gb3V0IHBhcmFtZXRlciB0byByZXR1cm4KKyAgICAgICAgYSBK
YXZhU2NyaXB0IGV4Y2VwdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUp
OiBXcm90ZSBhIGN1c3RvbSBiaW5kaW5nIGZvciB0aGlzIHRoYXQgcmFpc2VzCisgICAgICAgIGEg
SmF2YVNjcmlwdCBleGNlcHRpb24gaWYgdGhlIG91dCBwYXJhbWV0ZXIgaXMgc2V0LgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlSXRlcmF0b3I6Om5leHROb2RlKTogV3JvdGUgYSBjdXN0b20gYmluZGluZyBm
b3IgdGhpcyB0aGF0IHJhaXNlcworICAgICAgICBhIEphdmFTY3JpcHQgZXhjZXB0aW9uIGlmIHRo
ZSBvdXQgcGFyYW1ldGVyIGlzIHNldC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9y
OjpwcmV2aW91c05vZGUpOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVHJlZVdh
bGtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnBhcmVudE5v
ZGUpOiBXcm90ZSBhIGN1c3RvbSBiaW5kaW5nIGZvciB0aGlzIHRoYXQgcmFpc2VzCisgICAgICAg
IGEgSmF2YVNjcmlwdCBleGNlcHRpb24gaWYgdGhlIG91dCBwYXJhbWV0ZXIgaXMgc2V0LgorICAg
ICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6Omxhc3RDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SlNUcmVlV2Fsa2VyOjpuZXh0U2libGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SlNUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkpTVHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpKU1RyZWVXYWxrZXI6Om5leHROb2RlKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjph
Y2NlcHROb2RlKTogVXBkYXRlZCB0byBpbmNsdWRlIG5ldyBleGNlcHRpb24KKyAgICAgICAgb3V0
IHBhcmFtZXRlci4KKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlTm9kZUl0ZXJhdG9yOndo
YXRUb1Nob3c6ZmlsdGVyOmV4cGFuZEVudGl0eVJlZmVyZW5jZXM6XSk6CisgICAgICAgIFVzZSBS
ZWZQdHIgdG8gbWFrZSBvYmplY3QgbGlmZXRpbWVzIGNsZWFyZXIuCisgICAgICAgICgtW0RPTURv
Y3VtZW50IGNyZWF0ZVRyZWVXYWxrZXI6d2hhdFRvU2hvdzpmaWx0ZXI6ZXhwYW5kRW50aXR5UmVm
ZXJlbmNlczpdKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbTogQWRkZWQgaW5jbHVkZSBvZiBOb2RlRmlsdGVyLmggZm9yCisg
ICAgICAgIEpTRG9jdW1lbnQuY3BwLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVh
dGVOb2RlSXRlcmF0b3IpOiBDaGFuZ2VkIHRvIHVzZSBQYXNzUmVmUHRyLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVRyZWVXYWxrZXIpOiBEaXR0by4KKworICAgICAgICAqIGRv
bS9Ob2RlRmlsdGVyLmg6CisgICAgICAgICogZG9tL05vZGVGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZUZpbHRlcjo6Tm9kZUZpbHRlcik6IENoYW5nZWQgdG8gdXNlIFBhc3NSZWZQ
dHIuCisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlsdGVyOjphY2NlcHROb2RlKTogQWRkZWQgYW4g
b3V0IHBhcmFtZXRlciB0byByZXR1cm4KKyAgICAgICAgYSBKYXZhU2NyaXB0IGV4Y2VwdGlvbi4K
KyAgICAgICAgKiBkb20vTm9kZUZpbHRlci5pZGw6IEN1c3RvbSBiaW5kaW5nIGZvciBhY2NlcHRO
b2RlLgorCisgICAgICAgICogZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaDoKKyAgICAgICAgKiBk
b20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlsdGVy
Q29uZGl0aW9uOjphY2NlcHROb2RlKTogQWRkZWQgYW4gb3V0IHBhcmFtZXRlciB0byByZXR1cm4K
KyAgICAgICAgYSBKYXZhU2NyaXB0IGV4Y2VwdGlvbi4KKworICAgICAgICAqIGRvbS9Ob2RlSXRl
cmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3Ip
OiBDaGFuZ2VkIHRvIHVzZSBQYXNzUmVmUHRyIG1vcmUuCisgICAgICAgIEVsaW1pbmF0ZWQgbV9k
b2MsIHVzaW5nIHRoZSByb290IG5vZGUgaW5zdGVhZCwgYW5kIHVubmVjZXNzYXJ5IGNoZWNrIGZv
cgorICAgICAgICBudWxsIC0tIHJvb3ROb2RlIG11c3QgYmUgbm9uLW51bGwgYW5kIGFsbCBub2Rl
cyBoYXZlIGEgbm9uLW51bGwgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0
b3I6On5Ob2RlSXRlcmF0b3IpOiBDaGFuZ2VkIHRvIGdldCBkb2N1bWVudCBmcm9tIHJvb3QuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Om5leHROb2RlKTogUmV3cm90ZSB0byB1c2Ug
YSBSZWZQdHIgc2luY2UgdGhlCisgICAgICAgIGFjY2VwdE5vZGUgZnVuY3Rpb24gY291bGQgZG8g
YW55dGhpbmcsIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdAorICAgICAgICByZWZlcmVuY2Ug
dG8gdGhlIGN1cnJlbnQgbm9kZS4gQWxzbyBmb2xkZWQgZmluZE5leHROb2RlIGludG8gdGhpcyBm
dW5jdGlvbgorICAgICAgICBzaW5jZSBpdCdzIHRoZSBvbmx5IG9uZSB0aGF0IG5lZWRzIHRvIGNh
bGwgaXQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6OnByZXZpb3VzTm9kZSk6IFNh
bWUgdGhpbmcsIGJ1dCB0aGUgb3RoZXIgZGlyZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUl0ZXJhdG9yOjpkZXRhY2gpOiBDaGFuZ2VkIHRvIHVzZSB0aGUgcm9vdCBub2RlIGFzIHRoZSBp
bmRpY2F0aW9uCisgICAgICAgIHRoYXQgd2UncmUgZGV0YWNoZWQgcmF0aGVyIHRoYW4gYSBzZXBh
cmF0ZSBib29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpub3RpZnlCZWZv
cmVOb2RlUmVtb3ZhbCk6IFJlbW92ZWQgc29tZSB1bm5uZWVkZWQKKyAgICAgICAgY2hlY2tzLiBS
ZW1vdmVkIGluY29ycmVjdCB1c2Ugb2YgZmluZE5leHROb2RlL2ZpbmRQcmV2aW91c05vZGUgLS0g
dGhvc2UKKyAgICAgICAgZnVuY3Rpb25zIGNhbGwgYWNjZXB0Tm9kZSBhbmQgdGhlIERPTSBzdGFu
ZGFyZCBpcyBxdWl0ZSBjbGVhciB0aGF0IHRoZXNlCisgICAgICAgIGZ1bmN0aW9ucyBkbyBub3Qg
dGFrZSB0aGF0IGludG8gYWNjb3VudCwgYWxsb3dpbmcgdGhlIGN1cnJlbnQgbm9kZSB0byBiZWNv
bWUKKyAgICAgICAgb25lIHRoYXQncyBub3QgYWNjZXB0ZWQuCisKKyAgICAgICAgKiBkb20vTm9k
ZUl0ZXJhdG9yLmg6IENoYW5nZWQgY29uc3RydWN0b3IgdG8gdXNlIFBhc3NSZWZQdHIgbW9yZS4g
Q2hhbmdlZAorICAgICAgICBuZXh0Tm9kZSBhbmQgcHJldmlvdXNOb2RlIHRvIGhhdmUgYW4gb3V0
IHBhcmFtZXRlciB3aXRoIGEgSmF2YVNjcmlwdCBleGNlcHRpb24uCisgICAgICAgIFJlbW92ZWQg
aGVscGVyIGZ1bmN0aW9ucyBzZXRSZWZlcmVuY2VOb2RlLCBzZXRQb2ludGVyQmVmb3JlUmVmZXJl
bmNlTm9kZSwKKyAgICAgICAgZGV0YWNoZWQsIHNldERldGFjaGVkLCBkb2N1bWVudCwgZmluZE5l
eHROb2RlLCBhbmQgZmluZFByZXZpb3VzTm9kZS4gQWxsIHdlcmUKKyAgICAgICAgdW5uZWNlc3Nh
cnkuIFJlbW92ZWQgZGF0YSBtZW1iZXIgbV9kb2Mgd2hpY2ggd2FzIGp1c3Qgcm9vdE5vZGUoKS0+
ZG9jdW1lbnQoKS4KKworICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaWRsOiBDdXN0b20gYmlu
ZGluZyBmb3IgbmV4dE5vZGUgYW5kIHByZXZpb3VzTm9kZS4KKworICAgICAgICAqIGRvbS9UcmF2
ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsOjpUcmF2ZXJzYWwpOiBVc2Ug
UGFzc1JlZlB0ciBtb3JlLgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsOjphY2NlcHROb2Rl
KTogQWRkZWQgb3V0IHBhcmFtZXRlciBmb3IgSmF2YVNjcmlwdCBleGNlcHRpb24uCisgICAgICAg
IEFsc28gcmVhcnJhbmdlZCB0aGUgZnVuY3Rpb24gYSBsaXR0bGUgYml0IGZvciBjbGFyaXR5Lgor
CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5oOiBDaGFuZ2VkIGFjY2VwdE5vZGUgdG8gaGF2ZSBh
biBvdXQgcGFyYW1ldGVyIHdpdGggYSBKYXZhU2NyaXB0CisgICAgICAgIGV4Y2VwdGlvbiBhbmQg
bWFkZSBpdCBwcm90ZWN0ZWQsIHNpbmNlIGl0J3Mgb25seSBmb3IgdXNlIGJ5IHRoZSBkZXJpdmVk
IGNsYXNzZXMuCisKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlV2Fsa2VyOjpUcmVlV2Fsa2VyKTogVXBkYXRlZCB0byB1c2UgUGFzc1JlZlB0ci4K
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6OnNldEN1cnJlbnROb2RlKTogVXBkYXRlZCB0
byB1c2UgUGFzc1JlZlB0ciBhbmQgZGVsZXRlZAorICAgICAgICB0aGUgb3ZlcmxvYWRlZCB2ZXJz
aW9uIHNpbmNlIGl0J3Mgbm90IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6
OnBhcmVudE5vZGUpOiBSZXdyb3RlIHRvIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uIGFuZCBhbHNv
CisgICAgICAgIHRvIGltcGxlbWVudCBydWxlcyBhYm91dCB3aGVuIHRvIGNoZWNrIHRoaW5ncyBs
aWtlIHdoZXRoZXIgd2UncmUgaW4gdGhlIHRyZWUuCisgICAgICAgIFRoZSBwcmV2aW91cyBmaXgg
d2hlcmUgd2UgY2FsbGVkIGlzRGVzY2VuZGFudE9mIHdhcyBub3QgZW50aXJlbHkgY29ycmVjdCwg
YmVjYXVzZQorICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbiBhbGxvd3MgeW91IHRvIHdhbGsgb3V0
c2lkZSB0aGUgdHJlZSBpZiB5b3UgZ2V0IHRoZXJlIHNvbWVob3cuCisgICAgICAgIFdoYXQgaXQg
ZG9lc24ndCBhbGxvdyBpcyB3YWxraW5nIG91dHNpZGUgdGhlIHRyZWUgZnJvbSBpbnNpZGUuIFRo
ZSBuZXcKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaGFuZGxlcyB0aGlzIGNvcnJlY3RseS4KKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVXYWxrZXI6Omxhc3RDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUcmVlV2Fsa2VyOjpuZXh0U2libGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVdhbGtlcjo6cHJldmlvdXNOb2RlKTogRGl0dG8uIEJlY2F1c2Ugb2YgdGhlIG5lZWQgdG8gY2hl
Y2sgdGhlCisgICAgICAgIGFjY2VwdE5vZGUgZnVuY3Rpb24gb24gcGFyZW50cywgdGhpcyBjYW4n
dCB1c2UgdHJhdmVyc2VQcmV2aW91c05vZGUgKG1vcmUncyB0aGUKKyAgICAgICAgcGl0eSwgYmVj
YXVzZSBpdCdzIGEgYml0IGNvbXBsaWNhdGVkKS4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxr
ZXI6Om5leHROb2RlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5oOiBDaGFu
Z2VkIGNvbnN0cnVjdG9yIGFuZCBzZXRDdXJyZW50Tm9kZSB0byB1c2UgUGFzc1JlZlB0cgorICAg
ICAgICBtb3JlLiBDaGFuZ2VkIHRoZSBuYXZpZ2F0aW9uIGZ1bmN0aW9ucyB0byBoYXZlIGFuIG91
dCBwYXJhbWV0ZXIgd2l0aCBhIEphdmFTY3JpcHQKKyAgICAgICAgZXhjZXB0aW9uLiBSZW1vdmVk
IGhlbHBlciBmdW5jdGlvbnMgc2V0Q3VycmVudE5vZGUgYW5kIGFuY2VzdG9yUmVqZWN0ZWQuCisK
KyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6IEN1c3RvbSBiaW5kaW5nIGZvciBuYXZpZ2F0
aW9uIGZ1bmN0aW9ucy4KKwogMjAwOC0wMS0wOCAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkuCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCShyZXZpc2lvbiAyOTMzNSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjksNyAr
MjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU05vZGVGaWx0ZXJDb25kaXRpb246
OkpTTm9kZUZpbHRlckNvbmRpdGlvbihLSlM6OkpTT2JqZWN0KiBmaWx0ZXIpCit1c2luZyBuYW1l
c3BhY2UgS0pTOworCisvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCB0YWtlRXhjZXB0aW9uIGFzIGEg
bWVtYmVyIG9mIEV4ZWNTdGF0ZT8KK3N0YXRpYyBKU1ZhbHVlKiB0YWtlRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlKiBleGNlcHRpb24gPSBleGVjLT5leGNlcHRpb24o
KTsKKyAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgIHJldHVybiBleGNlcHRpb247Cit9
CisKK0pTTm9kZUZpbHRlckNvbmRpdGlvbjo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uKEpTT2JqZWN0
KiBmaWx0ZXIpCiAgICAgOiBtX2ZpbHRlcihmaWx0ZXIpCiB7CiB9CkBAIC0zOSwyMiArNDksMzYg
QEAgdm9pZCBKU05vZGVGaWx0ZXJDb25kaXRpb246Om1hcmsoKQogICAgIG1fZmlsdGVyLT5tYXJr
KCk7CiB9CiAKLXNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZShOb2RlKiBm
aWx0ZXJOb2RlKSBjb25zdAorc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2Rl
KE5vZGUqIGZpbHRlck5vZGUsIEpTVmFsdWUqJiBleGNlcHRpb24pIGNvbnN0CiB7Ci0gICAgTm9k
ZSogbm9kZSA9IGZpbHRlck5vZGU7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKTsKLSAgICBLSlNQcm94eSogcHJveHkgPSBmcmFtZS0+c2NyaXB0UHJveHkoKTsK
LSAgICBpZiAocHJveHkgJiYgbV9maWx0ZXItPmltcGxlbWVudHNDYWxsKCkpIHsKLSAgICAgICAg
S0pTOjpKU0xvY2sgbG9jazsKLSAgICAgICAgS0pTOjpFeGVjU3RhdGUqIGV4ZWMgPSBwcm94eS0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgS0pTOjpMaXN0IGFyZ3M7Ci0g
ICAgICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgbm9kZSkpOwotICAgICAgICBLSlM6OkpTT2Jq
ZWN0KiBvYmogPSBtX2ZpbHRlcjsKLSAgICAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSBvYmot
PmNhbGwoZXhlYywgb2JqLCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dG9JbnQzMihl
eGVjKTsKKyAgICAvLyBGSVhNRTogSXQgbWFrZXMgbm8gc2Vuc2UgZm9yIHRoaXMgdG8gZGVwZW5k
IG9uIHRoZSBkb2N1bWVudCBiZWluZyBpbiBhIGZyYW1lIQorICAgIEZyYW1lKiBmcmFtZSA9IGZp
bHRlck5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CisKKyAgICBKU0xvY2sgbG9jazsKKwor
ICAgIGlmICghbV9maWx0ZXItPmltcGxlbWVudHNDYWxsKCkpCisgICAgICAgIHJldHVybiBOb2Rl
RmlsdGVyOjpGSUxURVJfUkVKRUNUOworCisgICAgRXhlY1N0YXRlKiBleGVjID0gZnJhbWUtPnNj
cmlwdFByb3h5KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgTGlzdCBhcmdz
OworICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgZmlsdGVyTm9kZSkpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBleGNlcHRpb24gPSB0YWtlRXhjZXB0aW9uKGV4
ZWMpOworICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKICAgICB9Ci0K
LSAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKKyAgICBKU1ZhbHVlKiByZXN1
bHQgPSBtX2ZpbHRlci0+Y2FsbChleGVjLCBtX2ZpbHRlciwgYXJncyk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGV4Y2VwdGlvbiA9IHRha2VFeGNlcHRpb24oZXhl
Yyk7CisgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOworICAgIH0KKyAg
ICBpbnQgaW50UmVzdWx0ID0gcmVzdWx0LT50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgeworICAgICAgICBleGNlcHRpb24gPSB0YWtlRXhjZXB0aW9uKGV4ZWMp
OworICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKKyAgICB9CisgICAg
cmV0dXJuIGludFJlc3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCShyZXZpc2lvbiAyOTMz
NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDcg
KzIxLDEwIEBACiAjZGVmaW5lIEpTTm9kZUZpbHRlckNvbmRpdGlvbl9oCiAKICNpbmNsdWRlICJO
b2RlRmlsdGVyQ29uZGl0aW9uLmgiCi0jaW5jbHVkZSAia2pzX2RvbS5oIgorCituYW1lc3BhY2Ug
S0pTIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zMCw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBKU05vZGVGaWx0
ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiB7CiAgICAgcHVibGljOgog
ICAgICAgICBKU05vZGVGaWx0ZXJDb25kaXRpb24oS0pTOjpKU09iamVjdCogZmlsdGVyKTsKLSAg
ICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqLCBLSlM6OkpTVmFsdWUqJiBleGNlcHRpb24pIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogCiAgICAgcHJvdGVjdGVkOgpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAkocmV2aXNpb24g
MjkzMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDYgKzI5LDkgQEAKICNpbmNsdWRlICJKU05vZGVGaWx0ZXJDb25kaXRp
b24uaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAia2pzX2JpbmRpbmcuaCIK
KyNpbmNsdWRlICJranNfZG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzgsNiArNDEsMTUgQEAgdm9pZCBKU05vZGVGaWx0ZXI6Om1hcmso
KQogICAgIERPTU9iamVjdDo6bWFyaygpOwogfQogCitKU1ZhbHVlKiBKU05vZGVGaWx0ZXI6OmFj
Y2VwdE5vZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEpTVmFs
dWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgc2hvcnQgcmVzdWx0ID0gaW1wbCgpLT5hY2NlcHROb2Rl
KHRvTm9kZShhcmdzWzBdKSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKQorICAgICAg
ICBleGVjLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICByZXR1cm4ganNOdW1iZXIocmVz
dWx0KTsKK30KKwogTm9kZUZpbHRlciogdG9Ob2RlRmlsdGVyKEtKUzo6SlNWYWx1ZSogdmFsKQog
ewogICAgIGlmICghdmFsIHx8ICF2YWwtPmlzT2JqZWN0KCkpCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAkocmV2aXNpb24gMjkzMzUpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2LDEyICsxNiwxNyBAQAogICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCisKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU05vZGVJdGVyYXRvci5oIgogCisjaW5jbHVkZSAi
SlNOb2RlLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNp
bmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKIAordXNpbmcgbmFtZXNwYWNlIEtKUzsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUl0ZXJhdG9yOjptYXJrKCkKQEAgLTMyLDQgKzM3
LDM2IEBAIHZvaWQgSlNOb2RlSXRlcmF0b3I6Om1hcmsoKQogICAgIERPTU9iamVjdDo6bWFyaygp
OwogfQogCitKU1ZhbHVlKiBKU05vZGVJdGVyYXRvcjo6bmV4dE5vZGUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIEpT
VmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSogbm9kZSA9IGltcGwoKS0+bmV4dE5vZGUo
ZWMsIGV4Y2VwdGlvbik7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBpZiAo
ZXhjZXB0aW9uKSB7CisgICAgICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
bm9kZSk7Cit9CisKK0pTVmFsdWUqIEpTTm9kZUl0ZXJhdG9yOjpwcmV2aW91c05vZGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSogbm9kZSA9IGltcGwoKS0+
cHJldmlvdXNOb2RlKGVjLCBleGNlcHRpb24pOworICAgIGlmIChlYykgeworICAgICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICB9CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXhj
ZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVy
biB0b0pTKGV4ZWMsIG5vZGUpOworfQorCiB9CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VHJlZVdhbGtlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1RyZWVXYWxrZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyOTMzNSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2LDEyICsxNiwxNyBAQAogICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCisKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJKU1RyZWVXYWxrZXIuaCIKIAorI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1
ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAiVHJlZVdhbGtl
ci5oIgogCit1c2luZyBuYW1lc3BhY2UgS0pTOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
CiB2b2lkIEpTVHJlZVdhbGtlcjo6bWFyaygpCkBAIC0zMiw0ICszNyw4MSBAQCB2b2lkIEpTVHJl
ZVdhbGtlcjo6bWFyaygpCiAgICAgRE9NT2JqZWN0OjptYXJrKCk7CiB9CiAgICAgCitKU1ZhbHVl
KiBKU1RyZWVXYWxrZXI6OnBhcmVudE5vZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBh
cmdzKQoreworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSogbm9kZSA9IGlt
cGwoKS0+cGFyZW50Tm9kZShleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAg
ICAgZXhlYy0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBub2RlKTsKK30KKyAgICAKK0pT
VmFsdWUqIEpTVHJlZVdhbGtlcjo6Zmlyc3RDaGlsZChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IExp
c3QmIGFyZ3MpCit7CisgICAgSlNWYWx1ZSogZXhjZXB0aW9uID0gMDsKKyAgICBOb2RlKiBub2Rl
ID0gaW1wbCgpLT5maXJzdENoaWxkKGV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikgewor
ICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pTKGV4ZWMsIG5vZGUpOworfQorICAg
IAorSlNWYWx1ZSogSlNUcmVlV2Fsa2VyOjpsYXN0Q2hpbGQoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBMaXN0JiBhcmdzKQoreworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSog
bm9kZSA9IGltcGwoKS0+bGFzdENoaWxkKGV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikg
eworICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pTKGV4ZWMsIG5vZGUpOworfQor
ICAgIAorSlNWYWx1ZSogSlNUcmVlV2Fsa2VyOjpuZXh0U2libGluZyhFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IExpc3QmIGFyZ3MpCit7CisgICAgSlNWYWx1ZSogZXhjZXB0aW9uID0gMDsKKyAgICBO
b2RlKiBub2RlID0gaW1wbCgpLT5uZXh0U2libGluZyhleGNlcHRpb24pOworICAgIGlmIChleGNl
cHRpb24pIHsKKyAgICAgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBub2Rl
KTsKK30KKyAgICAKK0pTVmFsdWUqIEpTVHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKK3sKKyAgICBKU1ZhbHVlKiBleGNlcHRpb24g
PSAwOworICAgIE5vZGUqIG5vZGUgPSBpbXBsKCktPnByZXZpb3VzU2libGluZyhleGNlcHRpb24p
OworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGV4Y2Vw
dGlvbik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4g
dG9KUyhleGVjLCBub2RlKTsKK30KKyAgICAKK0pTVmFsdWUqIEpTVHJlZVdhbGtlcjo6cHJldmlv
dXNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKK3sKKyAgICBKU1ZhbHVl
KiBleGNlcHRpb24gPSAwOworICAgIE5vZGUqIG5vZGUgPSBpbXBsKCktPnByZXZpb3VzTm9kZShl
eGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgZXhlYy0+c2V0RXhjZXB0
aW9uKGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAg
ICByZXR1cm4gdG9KUyhleGVjLCBub2RlKTsKK30KKyAgICAKK0pTVmFsdWUqIEpTVHJlZVdhbGtl
cjo6bmV4dE5vZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEpT
VmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSogbm9kZSA9IGltcGwoKS0+bmV4dE5vZGUo
ZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIGV4ZWMtPnNldEV4Y2Vw
dGlvbihleGNlcHRpb24pOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRvSlMoZXhlYywgbm9kZSk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTS5t
bQkocmV2aXNpb24gMjkzMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNwZXRoIChzcGV0aEBl
bmQuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdA
Z21haWwuY29tKQogICoKQEAgLTc0LDYgKzc0LDkgQEAKICNpbXBvcnQgIkRPTVNWRy5oIgogI2Vu
ZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPYmpDRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBF
dmVudExpc3RlbmVyIHsKQEAgLTY4MiwxNSArNjg1LDE2IEBAIHN0YXRpYyBOU0FycmF5ICpraXQo
Y29uc3QgVmVjdG9yPEludFJlY3QKIAogQGVuZAogCi0KIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAvLyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbgogCi1jbGFzcyBPYmpDTm9k
ZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpOb2RlRmlsdGVyQ29uZGl0aW9uIHsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24gOiBw
dWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiB7CiBwdWJsaWM6CiAgICAgT2JqQ05vZGVGaWx0ZXJD
b25kaXRpb24oaWQgPERPTU5vZGVGaWx0ZXI+KTsKICAgICB2aXJ0dWFsIH5PYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbigpOwotICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9kZShXZWJDb3JlOjpOb2Rl
KikgY29uc3Q7CisgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqLCBKU1ZhbHVlKiYg
ZXhjZXB0aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bihjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiYpOwpAQCAtNzExLDEzICs3MTUsMTQgQEAg
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb246On5PYmpDTm9kZUZpbHRlcgogICAgIEhhcmRSZWxlYXNl
KG1fZmlsdGVyKTsKIH0KIAotc2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5v
ZGUoV2ViQ29yZTo6Tm9kZSogbm9kZSkgY29uc3QKK3Nob3J0IE9iakNOb2RlRmlsdGVyQ29uZGl0
aW9uOjphY2NlcHROb2RlKE5vZGUqIG5vZGUsIEpTVmFsdWUqJikgY29uc3QKIHsKICAgICBpZiAo
IW5vZGUpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNU
OworICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKICAgICByZXR1cm4g
W21fZmlsdGVyIGFjY2VwdE5vZGU6W0RPTU5vZGUgX3dyYXBOb2RlOm5vZGVdXTsKIH0KIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogLy8gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50VHJhdmVyc2FsKQpAQCAtNzI3LDIzICs3MzIs
MjMgQEAgc2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5vZAogCiAtIChET01O
b2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKilyb290IHdoYXRUb1No
b3c6KHVuc2lnbmVkKXdoYXRUb1Nob3cgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4pZmlsdGVy
IGV4cGFuZEVudGl0eVJlZmVyZW5jZXM6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNlcwogewot
ICAgIFdlYkNvcmU6Ok5vZGVGaWx0ZXIqIGNwcEZpbHRlciA9IDA7CisgICAgUmVmUHRyPE5vZGVG
aWx0ZXI+IGNwcEZpbHRlcjsKICAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0ZXIgPSBu
ZXcgV2ViQ29yZTo6Tm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVy
KSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFdlYkNv
cmU6Ok5vZGVJdGVyYXRvcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNyZWF0ZU5vZGVJdGVy
YXRvcihbcm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcywgZWMpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CisgICAgICAg
IGNwcEZpbHRlciA9IG5ldyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbihm
aWx0ZXIpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQdHI8Tm9kZUl0ZXJh
dG9yPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlTm9kZUl0ZXJhdG9yKFtyb290IF9u
b2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLnJlbGVhc2UoKSwgZXhwYW5kRW50aXR5UmVmZXJl
bmNlcywgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0dXJuIFtET01Ob2Rl
SXRlcmF0b3IgX3dyYXBOb2RlSXRlcmF0b3I6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKIH0K
IAogLSAoRE9NVHJlZVdhbGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5vZGUgKilyb290IHdo
YXRUb1Nob3c6KHVuc2lnbmVkKXdoYXRUb1Nob3cgZmlsdGVyOihpZCA8RE9NTm9kZUZpbHRlcj4p
ZmlsdGVyIGV4cGFuZEVudGl0eVJlZmVyZW5jZXM6KEJPT0wpZXhwYW5kRW50aXR5UmVmZXJlbmNl
cwogewotICAgIFdlYkNvcmU6Ok5vZGVGaWx0ZXIqIGNwcEZpbHRlciA9IDA7CisgICAgUmVmUHRy
PE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKICAgICBpZiAoZmlsdGVyKQotICAgICAgICBjcHBGaWx0
ZXIgPSBuZXcgV2ViQ29yZTo6Tm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24o
ZmlsdGVyKSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRy
PFdlYkNvcmU6OlRyZWVXYWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRdLT5jcmVhdGVUcmVl
V2Fsa2VyKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBleHBhbmRFbnRpdHlS
ZWZlcmVuY2VzLCBlYyk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICAg
ICAgY3BwRmlsdGVyID0gbmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9u
KGZpbHRlcikpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJlZlB0cjxUcmVlV2Fs
a2VyPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlVHJlZVdhbGtlcihbcm9vdCBfbm9k
ZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlci5yZWxlYXNlKCksIGV4cGFuZEVudGl0eVJlZmVyZW5j
ZXMsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVybiBbRE9NVHJlZVdh
bGtlciBfd3JhcFRyZWVXYWxrZXI6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVyXTsKIH0KIApJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lv
biAyOTMzNSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0J
KHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNiBBbmRl
cnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA2IEFs
ZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+Ci0jIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIwNyw2ICsyMDcsMTAgQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZQogICAgIGlm
ICgkdHlwZSBlcSAiQ2FudmFzR3JhZGllbnQiIG9yICR0eXBlIGVxICJYUGF0aE5TUmVzb2x2ZXIi
KSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlBsYXRmb3JtU3RyaW5nLmgifSA9IDE7CiAgICAg
fQorCisgICAgaWYgKCR0eXBlIGVxICJEb2N1bWVudCIpIHsKKyAgICAgICAgJGltcGxJbmNsdWRl
c3siTm9kZUZpbHRlci5oIn0gPSAxOworICAgIH0KIH0KIAogc3ViIEFkZEluY2x1ZGVzRm9yU1ZH
QW5pbWF0ZWRUeXBlCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyOTMzNSkKKysrIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQotICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTk5Nyw3
ICs5OTcsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y3JlYXRlUmFuZ2UoCiB9CiAK
IFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXRlTm9kZUl0ZXJhdG9yKE5v
ZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRUb1Nob3csIAotICAgIE5vZGVGaWx0ZXIqIGZpbHRlciwg
Ym9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICBQYXNz
UmVmUHRyPE5vZGVGaWx0ZXI+IGZpbHRlciwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXJvb3QpIHsKICAgICAgICAgZWMgPSBOT1Rf
U1VQUE9SVEVEX0VSUjsKQEAgLTEwMDcsNyArMTAwNyw3IEBAIFBhc3NSZWZQdHI8Tm9kZUl0ZXJh
dG9yPiBEb2N1bWVudDo6Y3JlYXQKIH0KIAogUGFzc1JlZlB0cjxUcmVlV2Fsa2VyPiBEb2N1bWVu
dDo6Y3JlYXRlVHJlZVdhbGtlcihOb2RlICpyb290LCB1bnNpZ25lZCB3aGF0VG9TaG93LCAKLSAg
ICBOb2RlRmlsdGVyKiBmaWx0ZXIsIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgRXhjZXB0
aW9uQ29kZSYgZWMpCisgICAgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXIsIGJvb2wgZXhw
YW5kRW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFyb290
KSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkluZGV4OiBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9u
IDI5MzM1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMyw3
ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9A
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJr
aXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTMxOCwxMCArMzE4LDEwIEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPFJh
bmdlPiBjcmVhdGVSYW5nZSgpOwogCiAgICAgUGFzc1JlZlB0cjxOb2RlSXRlcmF0b3I+IGNyZWF0
ZU5vZGVJdGVyYXRvcihOb2RlKiByb290LCB1bnNpZ25lZCB3aGF0VG9TaG93LAotICAgICAgICBO
b2RlRmlsdGVyKiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJik7
CisgICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJl
bmNlcywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxUcmVlV2Fsa2VyPiBjcmVh
dGVUcmVlV2Fsa2VyKE5vZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRUb1Nob3csIAotICAgICAgICBO
b2RlRmlsdGVyKiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJik7
CisgICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJl
bmNlcywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gU3BlY2lhbCBzdXBwb3J0IGZvciBlZGl0
aW5nCiAgICAgUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGVDU1NTdHlsZURl
Y2xhcmF0aW9uKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjkzMzUpCisrKyBXZWJDb3JlL2RvbS9Ob2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDczLDIzICs0NzMsMTcgQEAgTm9kZSAqTm9kZTo6Y2hp
bGROb2RlKHVuc2lnbmVkIC8qaW5kZXgqLwogCiBOb2RlICpOb2RlOjp0cmF2ZXJzZU5leHROb2Rl
KGNvbnN0IE5vZGUgKnN0YXlXaXRoaW4pIGNvbnN0CiB7Ci0gICAgaWYgKGZpcnN0Q2hpbGQoKSkg
ewotICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgZmlyc3RDaGlsZCgpLT5pc0Rlc2NlbmRh
bnRPZihzdGF5V2l0aGluKSk7CisgICAgaWYgKGZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJu
IGZpcnN0Q2hpbGQoKTsKLSAgICB9CiAgICAgaWYgKHRoaXMgPT0gc3RheVdpdGhpbikKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgQVNTRVJUKCFz
dGF5V2l0aGluIHx8IG5leHRTaWJsaW5nKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsK
KyAgICBpZiAobmV4dFNpYmxpbmcoKSkKICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKCk7Ci0g
ICAgfQogICAgIGNvbnN0IE5vZGUgKm4gPSB0aGlzOwogICAgIHdoaWxlIChuICYmICFuLT5uZXh0
U2libGluZygpICYmICghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnROb2RlKCkgIT0gc3RheVdpdGhp
bikpCiAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKG4pIHsKLSAgICAgICAg
QVNTRVJUKCFzdGF5V2l0aGluIHx8ICFuLT5uZXh0U2libGluZygpIHx8IG4tPm5leHRTaWJsaW5n
KCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICBpZiAobikKICAgICAgICAgcmV0
dXJuIG4tPm5leHRTaWJsaW5nKCk7Ci0gICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC00OTcs
MTcgKzQ5MSwxMyBAQCBOb2RlICpOb2RlOjp0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vCiB7
CiAgICAgaWYgKHRoaXMgPT0gc3RheVdpdGhpbikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYg
KG5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IG5leHRTaWJs
aW5nKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICBpZiAobmV4dFNpYmxpbmco
KSkKICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKCk7Ci0gICAgfQogICAgIGNvbnN0IE5vZGUg
Km4gPSB0aGlzOwogICAgIHdoaWxlIChuICYmICFuLT5uZXh0U2libGluZygpICYmICghc3RheVdp
dGhpbiB8fCBuLT5wYXJlbnROb2RlKCkgIT0gc3RheVdpdGhpbikpCiAgICAgICAgIG4gPSBuLT5w
YXJlbnROb2RlKCk7Ci0gICAgaWYgKG4pIHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8
ICFuLT5uZXh0U2libGluZygpIHx8IG4tPm5leHRTaWJsaW5nKCktPmlzRGVzY2VuZGFudE9mKHN0
YXlXaXRoaW4pKTsKKyAgICBpZiAobikKICAgICAgICAgcmV0dXJuIG4tPm5leHRTaWJsaW5nKCk7
Ci0gICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC01MjYsMjMgKzUxNiwxNyBAQCBOb2RlICpO
b2RlOjp0cmF2ZXJzZVByZXZpb3VzTm9kZShjb25zdCBOCiAKIE5vZGUgKk5vZGU6OnRyYXZlcnNl
UHJldmlvdXNOb2RlUG9zdE9yZGVyKGNvbnN0IE5vZGUgKnN0YXlXaXRoaW4pIGNvbnN0CiB7Ci0g
ICAgaWYgKGxhc3RDaGlsZCgpKSB7Ci0gICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCBsYXN0
Q2hpbGQoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAgIGlmIChsYXN0Q2hpbGQo
KSkKICAgICAgICAgcmV0dXJuIGxhc3RDaGlsZCgpOwotICAgIH0KICAgICBpZiAodGhpcyA9PSBz
dGF5V2l0aGluKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAocHJldmlvdXNTaWJsaW5nKCkp
IHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IHByZXZpb3VzU2libGluZygpLT5pc0Rl
c2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgaWYgKHByZXZpb3VzU2libGluZygpKQogICAg
ICAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgfQogICAgIGNvbnN0IE5vZGUgKm4g
PSB0aGlzOwogICAgIHdoaWxlIChuICYmICFuLT5wcmV2aW91c1NpYmxpbmcoKSAmJiAoIXN0YXlX
aXRoaW4gfHwgbi0+cGFyZW50Tm9kZSgpICE9IHN0YXlXaXRoaW4pKQogICAgICAgICBuID0gbi0+
cGFyZW50Tm9kZSgpOwotICAgIGlmIChuKSB7Ci0gICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8
fCAhbi0+cHJldmlvdXNTaWJsaW5nKCkgfHwgbi0+cHJldmlvdXNTaWJsaW5nKCktPmlzRGVzY2Vu
ZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICBpZiAobikKICAgICAgICAgcmV0dXJuIG4tPnByZXZp
b3VzU2libGluZygpOwotICAgIH0KICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogV2ViQ29yZS9k
b20vTm9kZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUZpbHRlci5j
cHAJKHJldmlzaW9uIDI5MzM1KQorKysgV2ViQ29yZS9kb20vTm9kZUZpbHRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTEgKzEsOSBAQAotLyoqCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCi0gKgorLyoKICAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAwIEZy
ZWRlcmlrIEhvbGxqZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQogICogQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
U2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI3LDE3
ICsyNSwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIK
IAotbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNwYWNlIEtKUzsKIAotTm9kZUZpbHRl
cjo6Tm9kZUZpbHRlcihOb2RlRmlsdGVyQ29uZGl0aW9uKiBjb25kaXRpb24pCi0gICAgOiBtX2Nv
bmRpdGlvbihjb25kaXRpb24pCi17Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXNob3J0IE5v
ZGVGaWx0ZXI6OmFjY2VwdE5vZGUoTm9kZSogbm9kZSkgY29uc3QKK3Nob3J0IE5vZGVGaWx0ZXI6
OmFjY2VwdE5vZGUoTm9kZSogbm9kZSwgSlNWYWx1ZSomIGV4Y2VwdGlvbikgY29uc3QKIHsKICAg
ICAvLyBjYXN0IHRvIHNob3J0IHNpbGVuY2VzICJlbnVtZXJhbCBhbmQgbm9uLWVudW1lcmFsIHR5
cGVzIGluIHJldHVybiIgd2FybmluZwotICAgIHJldHVybiBtX2NvbmRpdGlvbiA/IG1fY29uZGl0
aW9uLT5hY2NlcHROb2RlKG5vZGUpIDogc3RhdGljX2Nhc3Q8c2hvcnQ+KEZJTFRFUl9BQ0NFUFQp
OworICAgIHJldHVybiBtX2NvbmRpdGlvbiA/IG1fY29uZGl0aW9uLT5hY2NlcHROb2RlKG5vZGUs
IGV4Y2VwdGlvbikgOiBzdGF0aWNfY2FzdDxzaG9ydD4oRklMVEVSX0FDQ0VQVCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmgJKHJldmlzaW9uIDI5MzM1KQorKysg
V2ViQ29yZS9kb20vTm9kZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDkgQEAK
IC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBL
REUuCi0gKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcp
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRnJlZGVyaWsgSG9sbGplbiAoZnJlZGVyaWsuaG9sbGpl
bkBoaWcubm8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWls
LmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsNiArMjYsNyBAQAogI2RlZmluZSBOb2RlRmlsdGVyX2gK
IAogI2luY2x1ZGUgIk5vZGVGaWx0ZXJDb25kaXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjYsMTAgKzY1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFNIT1df
Tk9UQVRJT04gICAgICAgICAgICAgICAgICA9IDB4MDAwMDA4MDAKICAgICAgICAgfTsKIAotICAg
ICAgICBOb2RlRmlsdGVyKE5vZGVGaWx0ZXJDb25kaXRpb24qKTsKLSAgICAgICAgc2hvcnQgYWNj
ZXB0Tm9kZShOb2RlKikgY29uc3Q7CisgICAgICAgIE5vZGVGaWx0ZXIoUGFzc1JlZlB0cjxOb2Rl
RmlsdGVyQ29uZGl0aW9uPiBjb25kaXRpb24pIDogbV9jb25kaXRpb24oY29uZGl0aW9uKSB7IH0K
KyAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZShOb2RlKiwgS0pTOjpKU1ZhbHVlKiYgZXhjZXB0aW9u
KSBjb25zdDsKICAgICAgICAgdm9pZCBtYXJrKCkgeyBtX2NvbmRpdGlvbi0+bWFyaygpOyB9Owog
CisgICAgICAgIC8vIEZvciBub24tSlMgYmluZGluZ3MuIFNpbGVudGx5IGlnbm9yZXMgdGhlIEph
dmFTY3JpcHQgZXhjZXB0aW9uIGlmIGFueS4KKyAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZShOb2Rl
KiBub2RlKSBjb25zdCB7IEtKUzo6SlNWYWx1ZSogZXhjZXB0aW9uOyByZXR1cm4gYWNjZXB0Tm9k
ZShub2RlLCBleGNlcHRpb24pOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8Tm9k
ZUZpbHRlckNvbmRpdGlvbj4gbV9jb25kaXRpb247CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvZG9t
L05vZGVGaWx0ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRs
CShyZXZpc2lvbiAyOTMzNSkKKysrIFdlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA2IFNhbXVlbCBXZWluaWcgPHNhbS53ZWluaWdAZ21haWwuY29tPgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
QEAgLTQzLDcgKzQzLDcgQEAgbW9kdWxlIHRyYXZlcnNhbCB7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgICAgICAgU0hPV19ET0NVTUVOVF9GUkFHTUVOVCAgICAgICAgID0gMHgwMDAwMDQw
MDsKICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyAgICAgICBTSE9XX05PVEFUSU9OICAgICAg
ICAgICAgICAgICAgPSAweDAwMDAwODAwOwogCi0gICAgICAgIHNob3J0IGFjY2VwdE5vZGUoaW4g
Tm9kZSBuKTsKKyAgICAgICAgW0N1c3RvbV0gc2hvcnQgYWNjZXB0Tm9kZShpbiBOb2RlIG4pOwog
CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAJKHJldmlzaW9u
IDI5MzM1KQorKysgV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTEgKzEsOSBAQAotLyoqCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
RE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCi0gKgorLyoKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAwIEZyZWRl
cmlrIEhvbGxqZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQogICogQ29weXJpZ2h0IChDKSAy
MDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2Ft
dWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQg
QXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5LDkgKzI3
LDExIEBACiAKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBLSlM7
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc2hvcnQgTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNj
ZXB0Tm9kZShOb2RlKikgY29uc3QKK3Nob3J0IE5vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5v
ZGUoTm9kZSosIEpTVmFsdWUqJikgY29uc3QKIHsKICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklM
VEVSX0FDQ0VQVDsKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlRmlsdGVyQ29uZGl0aW9uLmgJKHJldmlzaW9u
IDI5MzM1KQorKysgV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDExICsxLDkgQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9N
IGltcGxlbWVudGF0aW9uIGZvciBLREUuCi0gKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMg
S25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRnJlZGVyaWsgSG9s
bGplbiAoZnJlZGVyaWsuaG9sbGplbkBoaWcubm8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0
ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2Vp
bmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBD
b21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjksNiArMjcsMTAgQEAK
IAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK25hbWVzcGFjZSBLSlMgeworICAgIGNs
YXNzIEpTVmFsdWU7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIE5vZGU7
CkBAIC0zNiw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBOb2RlRmls
dGVyQ29uZGl0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Tm9kZUZpbHRlckNvbmRpdGlvbj4gewog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Tm9kZUZpbHRlckNvbmRpdGlvbigpIHsgfQot
ICAgICAgICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OworICAgICAgICB2
aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoTm9kZSosIEtKUzo6SlNWYWx1ZSomIGV4Y2VwdGlvbikg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrKCkgeyB9CiAgICAgfTsKIApJbmRleDog
V2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9O
b2RlSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAyOTMzNSkKKysrIFdlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEsOSBAQAotLyoqCi0gKiBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCi0gKgorLyoKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJp
Z2h0IChDKSAyMDAwIEZyZWRlcmlrIEhvbGxqZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQog
ICogQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTMxLDE0OCArMjksMTU0IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKIAordXNpbmcgbmFtZXNwYWNlIEtKUzsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1Ob2RlSXRlcmF0b3I6Ok5vZGVJdGVyYXRvcihOb2RlKiByb290Tm9k
ZSwgdW5zaWduZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXIsIGJv
b2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcykKK05vZGVJdGVyYXRvcjo6Tm9kZUl0ZXJhdG9yKFBh
c3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8
Tm9kZUZpbHRlcj4gZmlsdGVyLCBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpCiAgICAgOiBU
cmF2ZXJzYWwocm9vdE5vZGUsIHdoYXRUb1Nob3csIGZpbHRlciwgZXhwYW5kRW50aXR5UmVmZXJl
bmNlcykKICAgICAsIG1fYmVmb3JlUmVmZXJlbmNlTm9kZSh0cnVlKQogICAgICwgbV9kZXRhY2hl
ZChmYWxzZSkKLSAgICAsIG1fZG9jKHJvb3ROb2RlID8gcm9vdE5vZGUtPmRvY3VtZW50KCkgOiAw
KQogewotICAgIGlmIChkb2N1bWVudCgpKQotICAgICAgICBkb2N1bWVudCgpLT5hdHRhY2hOb2Rl
SXRlcmF0b3IodGhpcyk7CisgICAgcm9vdCgpLT5kb2N1bWVudCgpLT5hdHRhY2hOb2RlSXRlcmF0
b3IodGhpcyk7CiB9CiAKIE5vZGVJdGVyYXRvcjo6fk5vZGVJdGVyYXRvcigpCiB7Ci0gICAgaWYg
KGRvY3VtZW50KCkpCi0gICAgICAgIGRvY3VtZW50KCktPmRldGFjaE5vZGVJdGVyYXRvcih0aGlz
KTsKLX0KLQotTm9kZSogTm9kZUl0ZXJhdG9yOjpmaW5kTmV4dE5vZGUoTm9kZSogbm9kZSkgY29u
c3QKLXsKLSAgICB3aGlsZSAoKG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QoKSkp
KSB7Ci0gICAgICAgIC8vIE5vZGVJdGVyYXRvcnMgdHJlYXQgdGhlIERPTSB0cmVlIGFzIGEgZmxh
dCBsaXN0IG9mIG5vZGVzLgotICAgICAgICAvLyBJbiBvdGhlciB3b3JkcywgRklMVEVSX1JFSkVD
VCBkb2VzIG5vdCBwYXNzIG92ZXIgZGVzY2VuZGFudHMKLSAgICAgICAgLy8gb2YgdGhlIHJlamVj
dGVkIG5vZGUuIEhlbmNlLCBGSUxURVJfUkVKRUNUIGlzIHRoZSBzYW1lIGFzIEZJTFRFUl9TS0lQ
LgotICAgICAgICBpZiAoYWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUND
RVBUKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBub2RlOworICAgIHJv
b3QoKS0+ZG9jdW1lbnQoKS0+ZGV0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOwogfQogCi1Ob2RlKiBO
b2RlSXRlcmF0b3I6Om5leHROb2RlKEV4Y2VwdGlvbkNvZGUmIGVjKQorTm9kZSogTm9kZUl0ZXJh
dG9yOjpuZXh0Tm9kZShFeGNlcHRpb25Db2RlJiBlYywgSlNWYWx1ZSomIGV4Y2VwdGlvbikKIHsK
LSAgICBpZiAoZGV0YWNoZWQoKSkgeworICAgIGlmIChtX2RldGFjaGVkKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIE5v
ZGUqIG5vZGUgPSByZWZlcmVuY2VOb2RlKCkgPyByZWZlcmVuY2VOb2RlKCkgOiByb290KCk7Ci0g
ICAgaWYgKCFwb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZSgpIHx8IGFjY2VwdE5vZGUobm9kZSkg
IT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKLSAgICAgICAgbm9kZSA9IGZpbmROZXh0Tm9k
ZShub2RlKTsKKyAgICBleGNlcHRpb24gPSAwOworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9y
ZWZlcmVuY2VOb2RlID8gbV9yZWZlcmVuY2VOb2RlIDogcm9vdCgpOworICAgIGlmICghbV9iZWZv
cmVSZWZlcmVuY2VOb2RlIHx8IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKSAhPSBO
b2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgd2hpbGUgKChub2RlID0gbm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZShyb290KCkpKSkgeworICAgICAgICAgICAgLy8gTm9kZUl0ZXJhdG9ycyB0cmVhdCB0
aGUgRE9NIHRyZWUgYXMgYSBmbGF0IGxpc3Qgb2Ygbm9kZXMuCisgICAgICAgICAgICAvLyBJbiBv
dGhlciB3b3JkcywgRklMVEVSX1JFSkVDVCBkb2VzIG5vdCBwYXNzIG92ZXIgZGVzY2VuZGFudHMK
KyAgICAgICAgICAgIC8vIG9mIHRoZSByZWplY3RlZCBub2RlLiBIZW5jZSwgRklMVEVSX1JFSkVD
VCBpcyB0aGUgc2FtZSBhcyBGSUxURVJfU0tJUC4KKyAgICAgICAgICAgIGlmIChhY2NlcHROb2Rl
KG5vZGUuZ2V0KCksIGV4Y2VwdGlvbikgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4Y2VwdGlvbikK
KyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG5vZGUpCi0gICAgICAgIHNldFJlZmVyZW5jZU5v
ZGUobm9kZSk7Ci0gICAgc2V0UG9pbnRlckJlZm9yZVJlZmVyZW5jZU5vZGUoZmFsc2UpOwotICAg
IHJldHVybiBub2RlOworICAgICAgICBtX3JlZmVyZW5jZU5vZGUgPSBub2RlOworICAgIG1fYmVm
b3JlUmVmZXJlbmNlTm9kZSA9IGZhbHNlOworICAgIHJldHVybiBub2RlLmdldCgpOwogfQogCi1O
b2RlKiBOb2RlSXRlcmF0b3I6OmZpbmRQcmV2aW91c05vZGUoTm9kZSogbm9kZSkgY29uc3QKLXsK
LSAgICB3aGlsZSAoKG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZShyb290KCkpKSkg
ewotICAgICAgICAvLyBOb2RlSXRlcmF0b3JzIHRyZWF0IHRoZSBET00gdHJlZSBhcyBhIGZsYXQg
bGlzdCBvZiBub2Rlcy4KLSAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMsIEZJTFRFUl9SRUpFQ1Qg
ZG9lcyBub3QgcGFzcyBvdmVyIGRlc2NlbmRhbnRzCi0gICAgICAgIC8vIG9mIHRoZSByZWplY3Rl
ZCBub2RlLiBIZW5jZSwgRklMVEVSX1JFSkVDVCBpcyB0aGUgc2FtZSBhcyBGSUxURVJfU0tJUC4K
LSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQ
VCkKLSAgICAgICAgICAgIGJyZWFrOworTm9kZSogTm9kZUl0ZXJhdG9yOjpwcmV2aW91c05vZGUo
RXhjZXB0aW9uQ29kZSYgZWMsIEpTVmFsdWUqJiBleGNlcHRpb24pCit7CisgICAgaWYgKG1fZGV0
YWNoZWQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQotICAgIHJldHVybiBub2RlOwotfQogCi1Ob2RlKiBOb2RlSXRlcmF0b3I6OnBy
ZXZpb3VzTm9kZShFeGNlcHRpb25Db2RlJikKLXsKLSAgICBOb2RlKiBub2RlID0gcmVmZXJlbmNl
Tm9kZSgpID8gcmVmZXJlbmNlTm9kZSgpIDogcm9vdCgpOwotICAgIGlmIChwb2ludGVyQmVmb3Jl
UmVmZXJlbmNlTm9kZSgpIHx8IGFjY2VwdE5vZGUobm9kZSkgIT0gTm9kZUZpbHRlcjo6RklMVEVS
X0FDQ0VQVCkKLSAgICAgICAgbm9kZSA9IGZpbmRQcmV2aW91c05vZGUobm9kZSk7CisgICAgZXhj
ZXB0aW9uID0gMDsKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fcmVmZXJlbmNlTm9kZSA/IG1f
cmVmZXJlbmNlTm9kZSA6IHJvb3QoKTsKKyAgICBpZiAobV9iZWZvcmVSZWZlcmVuY2VOb2RlIHx8
IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKSAhPSBOb2RlRmlsdGVyOjpGSUxURVJf
QUNDRVBUKSB7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgd2hpbGUgKChub2RlID0gbm9kZS0+dHJhdmVyc2VQcmV2aW91c05vZGUocm9vdCgp
KSkpIHsKKyAgICAgICAgICAgIC8vIE5vZGVJdGVyYXRvcnMgdHJlYXQgdGhlIERPTSB0cmVlIGFz
IGEgZmxhdCBsaXN0IG9mIG5vZGVzLgorICAgICAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMsIEZJ
TFRFUl9SRUpFQ1QgZG9lcyBub3QgcGFzcyBvdmVyIGRlc2NlbmRhbnRzCisgICAgICAgICAgICAv
LyBvZiB0aGUgcmVqZWN0ZWQgbm9kZS4gSGVuY2UsIEZJTFRFUl9SRUpFQ1QgaXMgdGhlIHNhbWUg
YXMgRklMVEVSX1NLSVAuCisgICAgICAgICAgICBpZiAoYWNjZXB0Tm9kZShub2RlLmdldCgpLCBl
eGNlcHRpb24pID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CisgICAgfQorICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIHJldHVy
biAwOwogICAgIGlmIChub2RlKQotICAgICAgICBzZXRSZWZlcmVuY2VOb2RlKG5vZGUpOwotICAg
IHNldFBvaW50ZXJCZWZvcmVSZWZlcmVuY2VOb2RlKCk7Ci0gICAgcmV0dXJuIG5vZGU7CisgICAg
ICAgIG1fcmVmZXJlbmNlTm9kZSA9IG5vZGU7CisgICAgbV9iZWZvcmVSZWZlcmVuY2VOb2RlID0g
dHJ1ZTsKKyAgICByZXR1cm4gbm9kZS5nZXQoKTsKIH0KIAogdm9pZCBOb2RlSXRlcmF0b3I6OmRl
dGFjaCgpCiB7Ci0gICAgaWYgKCFkZXRhY2hlZCgpICYmIGRvY3VtZW50KCkpCi0gICAgICAgIGRv
Y3VtZW50KCktPmRldGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKLSAgICBzZXREZXRhY2hlZCgpOwot
fQotCi12b2lkIE5vZGVJdGVyYXRvcjo6c2V0UmVmZXJlbmNlTm9kZShOb2RlKiBub2RlKQotewot
ICAgIG1fcmVmZXJlbmNlTm9kZSA9IG5vZGU7CisgICAgcm9vdCgpLT5kb2N1bWVudCgpLT5kZXRh
Y2hOb2RlSXRlcmF0b3IodGhpcyk7CisgICAgbV9kZXRhY2hlZCA9IHRydWU7CiB9CiAKIHZvaWQg
Tm9kZUl0ZXJhdG9yOjpub3RpZnlCZWZvcmVOb2RlUmVtb3ZhbChOb2RlKiByZW1vdmVkTm9kZSkK
IHsKKyAgICBBU1NFUlQoIW1fZGV0YWNoZWQpOworICAgIEFTU0VSVChyZW1vdmVkTm9kZSk7Cisg
ICAgQVNTRVJUKHJvb3QoKS0+ZG9jdW1lbnQoKSA9PSByZW1vdmVkTm9kZS0+ZG9jdW1lbnQoKSk7
CisKICAgICAvLyBJdGVyYXRvciBpcyBub3QgYWZmZWN0ZWQgaWYgdGhlIHJlbW92ZWQgbm9kZSBp
cyB0aGUgcmVmZXJlbmNlIG5vZGUgYW5kIGlzIHRoZSByb290LgogICAgIC8vIG9yIGlmIHJlbW92
ZWQgbm9kZSBpcyBub3QgdGhlIHJlZmVyZW5jZSBub2RlLCBvciB0aGUgYW5jZXN0b3Igb2YgdGhl
IHJlZmVyZW5jZSBub2RlLgotICAgIGlmICghcmVtb3ZlZE5vZGUgfHwgcmVtb3ZlZE5vZGUgPT0g
cm9vdCgpIHx8ICFyZW1vdmVkTm9kZS0+aXNEZXNjZW5kYW50T2Yocm9vdCgpKSkKKyAgICBpZiAo
IXJlbW92ZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihyb290KCkpKQogICAgICAgICByZXR1cm47Ci0g
ICAgYm9vbCB3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZSA9IHJlbW92ZWROb2RlID09IHJlZmVyZW5j
ZU5vZGUoKTsKLSAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IgPSByZWZl
cmVuY2VOb2RlKCkgJiYgcmVmZXJlbmNlTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihyZW1vdmVkTm9k
ZSk7CisgICAgYm9vbCB3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZSA9IHJlbW92ZWROb2RlID09IG1f
cmVmZXJlbmNlTm9kZTsKKyAgICBib29sIHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3Ig
PSBtX3JlZmVyZW5jZU5vZGUgJiYgbV9yZWZlcmVuY2VOb2RlLT5pc0Rlc2NlbmRhbnRPZihyZW1v
dmVkTm9kZSk7CiAgICAgaWYgKCF3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZSAmJiAhd2lsbFJlbW92
ZVJlZmVyZW5jZU5vZGVBbmNlc3RvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHBvaW50
ZXJCZWZvcmVSZWZlcmVuY2VOb2RlKCkpIHsKLSAgICAgICAgTm9kZSogbm9kZSA9IGZpbmROZXh0
Tm9kZShyZW1vdmVkTm9kZSk7CisgICAgaWYgKG1fYmVmb3JlUmVmZXJlbmNlTm9kZSkgeworICAg
ICAgICBOb2RlKiBub2RlID0gcmVtb3ZlZE5vZGUtPnRyYXZlcnNlTmV4dE5vZGUocm9vdCgpKTsK
ICAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20gdW5kZXIg
dGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUgaXMKICAgICAgICAg
ICAgIC8vIGEgZGVzY2VuZGFudCBvZiB0aGUgbm9kZSBiZWluZyByZW1vdmVkLgogICAgICAgICAg
ICAgaWYgKHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IpIHsKICAgICAgICAgICAgICAg
ICB3aGlsZSAobm9kZSAmJiBub2RlLT5pc0Rlc2NlbmRhbnRPZihyZW1vdmVkTm9kZSkpCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUgPSBmaW5kTmV4dE5vZGUobm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgICAgICBzZXRSZWZlcmVuY2VO
b2RlKG5vZGUpOworICAgICAgICAgICAgICAgIG1fcmVmZXJlbmNlTm9kZSA9IG5vZGU7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBub2RlID0gZmluZFByZXZpb3VzTm9kZShyZW1vdmVk
Tm9kZSk7CisgICAgICAgICAgICBub2RlID0gcmVtb3ZlZE5vZGUtPnRyYXZlcnNlUHJldmlvdXNO
b2RlKHJvb3QoKSk7CiAgICAgICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgICAgIC8v
IE1vdmUgb3V0IGZyb20gdW5kZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJl
bmNlIG5vZGUgaXMKICAgICAgICAgICAgICAgICAvLyBhIGRlc2NlbmRhbnQgb2YgdGhlIG5vZGUg
YmVpbmcgcmVtb3ZlZC4KICAgICAgICAgICAgICAgICBpZiAod2lsbFJlbW92ZVJlZmVyZW5jZU5v
ZGVBbmNlc3RvcikgewogICAgICAgICAgICAgICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5p
c0Rlc2NlbmRhbnRPZihyZW1vdmVkTm9kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBub2Rl
ID0gZmluZFByZXZpb3VzTm9kZShub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUg
PSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZShyb290KCkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBSZW1v
dmluZyBsYXN0IG5vZGUuCiAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gbW92ZSB0aGUg
cG9pbnRlciBhZnRlciB0aGUgbm9kZSBwcmVjZWRpbmcgdGhlIAogICAgICAgICAgICAgICAgICAg
ICAvLyBuZXcgcmVmZXJlbmNlIG5vZGUuCi0gICAgICAgICAgICAgICAgICAgIHNldFJlZmVyZW5j
ZU5vZGUobm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgIHNldFBvaW50ZXJCZWZvcmVSZWZlcmVu
Y2VOb2RlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9yZWZlcmVuY2VOb2RlID0gbm9k
ZTsKKyAgICAgICAgICAgICAgICAgICAgbV9iZWZvcmVSZWZlcmVuY2VOb2RlID0gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgTm9kZSogbm9kZSA9IGZpbmRQcmV2aW91c05vZGUocmVtb3ZlZE5vZGUpOworICAg
ICAgICBOb2RlKiBub2RlID0gcmVtb3ZlZE5vZGUtPnRyYXZlcnNlUHJldmlvdXNOb2RlKHJvb3Qo
KSk7CiAgICAgICAgIGlmIChub2RlKSB7CiAgICAgICAgICAgICAvLyBNb3ZlIG91dCBmcm9tIHVu
ZGVyIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQgaWYgdGhlIHJlZmVyZW5jZSBub2RlIGlzCiAgICAg
ICAgICAgICAvLyBhIGRlc2NlbmRhbnQgb2YgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZC4KICAgICAg
ICAgICAgIGlmICh3aWxsUmVtb3ZlUmVmZXJlbmNlTm9kZUFuY2VzdG9yKSB7CiAgICAgICAgICAg
ICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+aXNEZXNjZW5kYW50T2YocmVtb3ZlZE5vZGUpKQot
ICAgICAgICAgICAgICAgICAgICBub2RlID0gZmluZFByZXZpb3VzTm9kZShub2RlKTsKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlUHJldmlvdXNOb2RlKHJvb3QoKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgICAgICBz
ZXRSZWZlcmVuY2VOb2RlKG5vZGUpOworICAgICAgICAgICAgICAgIG1fcmVmZXJlbmNlTm9kZSA9
IG5vZGU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBub2RlID0gZmluZE5leHROb2Rl
KHJlbW92ZWROb2RlKTsKKyAgICAgICAgICAgIG5vZGUgPSByZW1vdmVkTm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZShyb290KCkpOwogICAgICAgICAgICAgLy8gTW92ZSBvdXQgZnJvbSB1bmRlciB0aGUg
bm9kZSBiZWluZyByZW1vdmVkIGlmIHRoZSByZWZlcmVuY2Ugbm9kZSBpcwogICAgICAgICAgICAg
Ly8gYSBkZXNjZW5kYW50IG9mIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQuCiAgICAgICAgICAgICBp
ZiAod2lsbFJlbW92ZVJlZmVyZW5jZU5vZGVBbmNlc3RvcikgewogICAgICAgICAgICAgICAgIHdo
aWxlIChub2RlICYmIG5vZGUtPmlzRGVzY2VuZGFudE9mKHJlbW92ZWROb2RlKSkKLSAgICAgICAg
ICAgICAgICAgICAgbm9kZSA9IGZpbmRQcmV2aW91c05vZGUobm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZShyb290KCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICAgICAgc2V0UmVmZXJl
bmNlTm9kZShub2RlKTsKKyAgICAgICAgICAgICAgICBtX3JlZmVyZW5jZU5vZGUgPSBub2RlOwog
ICAgICAgICB9CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDI5MzM1KQor
KysgV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzEs
OSBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24g
Zm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBGcmVkZXJpayBIb2xsamVuIChmcmVkZXJpay5o
b2xsamVuQGhpZy5ubykKICAqIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdA
Z21haWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMSw0MiArMjksMzEgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi0gICAgY2xhc3MgRG9jdW1lbnQ7Ci0KICAgICB0eXBlZGVmIGludCBFeGNlcHRp
b25Db2RlOwogCiAgICAgY2xhc3MgTm9kZUl0ZXJhdG9yIDogcHVibGljIFRyYXZlcnNhbCB7CiAg
ICAgcHVibGljOgotICAgICAgICBOb2RlSXRlcmF0b3IoTm9kZSosIHVuc2lnbmVkIHdoYXRUb1No
b3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcyk7
Ci0gICAgICAgIH5Ob2RlSXRlcmF0b3IoKTsKKyAgICAgICAgTm9kZUl0ZXJhdG9yKFBhc3NSZWZQ
dHI8Tm9kZT4sIHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJv
b2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcyk7CisgICAgICAgIHZpcnR1YWwgfk5vZGVJdGVyYXRv
cigpOwogCi0gICAgICAgIE5vZGUqIG5leHROb2RlKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAg
Tm9kZSogcHJldmlvdXNOb2RlKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgTm9kZSogbmV4dE5v
ZGUoRXhjZXB0aW9uQ29kZSYsIEtKUzo6SlNWYWx1ZSomIGV4Y2VwdGlvbik7CisgICAgICAgIE5v
ZGUqIHByZXZpb3VzTm9kZShFeGNlcHRpb25Db2RlJiwgS0pTOjpKU1ZhbHVlKiYgZXhjZXB0aW9u
KTsKICAgICAgICAgdm9pZCBkZXRhY2goKTsKIAogICAgICAgICBOb2RlKiByZWZlcmVuY2VOb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VOb2RlLmdldCgpOyB9CiAgICAgICAgIGJvb2wg
cG9pbnRlckJlZm9yZVJlZmVyZW5jZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX2JlZm9yZVJlZmVy
ZW5jZU5vZGU7IH0KIAotICAgICAgICAvKioKLSAgICAgICAgICogVGhpcyBmdW5jdGlvbiBoYXMg
dG8gYmUgY2FsbGVkIGlmIHlvdSBkZWxldGUgYSBub2RlIGZyb20gdGhlCi0gICAgICAgICAqIGRv
Y3VtZW50IHRyZWUgYW5kIHlvdSB3YW50IHRoZSBJdGVyYXRvciB0byByZWFjdCBpZiB0aGVyZQot
ICAgICAgICAgKiBhcmUgYW55IGNoYW5nZXMgY29uY2VybmluZyBpdC4KLSAgICAgICAgICovCi0g
ICAgICAgIHZvaWQgbm90aWZ5QmVmb3JlTm9kZVJlbW92YWwoTm9kZSogcmVtb3ZlZCk7CisgICAg
ICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJlZm9yZSBhbnkgbm9kZSBpcyByZW1vdmVk
IGZyb20gdGhlIGRvY3VtZW50IHRyZWUuCisgICAgICAgIHZvaWQgbm90aWZ5QmVmb3JlTm9kZVJl
bW92YWwoTm9kZSogbm9kZVRvQmVSZW1vdmVkKTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIHZv
aWQgc2V0UmVmZXJlbmNlTm9kZShOb2RlKik7Ci0gICAgICAgIHZvaWQgc2V0UG9pbnRlckJlZm9y
ZVJlZmVyZW5jZU5vZGUoYm9vbCBmbGFnID0gdHJ1ZSkgeyBtX2JlZm9yZVJlZmVyZW5jZU5vZGUg
PSBmbGFnOyB9Ci0gICAgICAgIGJvb2wgZGV0YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2RldGFj
aGVkOyB9Ci0gICAgICAgIHZvaWQgc2V0RGV0YWNoZWQoYm9vbCBmbGFnID0gdHJ1ZSkgeyBtX2Rl
dGFjaGVkID0gZmxhZzsgfQotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX2RvYy5nZXQoKTsgfQotICAgICAgICBOb2RlKiBmaW5kTmV4dE5vZGUoTm9kZSopIGNv
bnN0OwotICAgICAgICBOb2RlKiBmaW5kUHJldmlvdXNOb2RlKE5vZGUqKSBjb25zdDsKKyAgICAg
ICAgLy8gRm9yIG5vbi1KUyBiaW5kaW5ncy4gU2lsZW50bHkgaWdub3JlcyB0aGUgSmF2YVNjcmlw
dCBleGNlcHRpb24gaWYgYW55LgorICAgICAgICBOb2RlKiBuZXh0Tm9kZShFeGNlcHRpb25Db2Rl
JiBlYykgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJuIG5leHROb2RlKGVjLCBleGNl
cHRpb24pOyB9CisgICAgICAgIE5vZGUqIHByZXZpb3VzTm9kZShFeGNlcHRpb25Db2RlJiBlYykg
eyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJuIHByZXZpb3VzTm9kZShlYywgZXhjZXB0
aW9uKTsgfQogCisgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPE5vZGU+IG1fcmVmZXJlbmNl
Tm9kZTsKICAgICAgICAgYm9vbCBtX2JlZm9yZVJlZmVyZW5jZU5vZGU7CiAgICAgICAgIGJvb2wg
bV9kZXRhY2hlZDsKLSAgICAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvYzsKICAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5pZGwJKHJldmlzaW9uIDI5
MzM1KQorKysgV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjksOSArMjksOSBAQCBtb2R1bGUgdHJhdmVyc2Fs
IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgcmVmZXJlbmNlTm9kZTsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gcG9pbnRlckJlZm9yZVJlZmVyZW5jZU5vZGU7
CiAKLSAgICAgICAgTm9kZSBuZXh0Tm9kZSgpIAorICAgICAgICBbQ3VzdG9tXSBOb2RlIG5leHRO
b2RlKCkgCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIE5vZGUg
cHJldmlvdXNOb2RlKCkKKyAgICAgICAgW0N1c3RvbV0gTm9kZSBwcmV2aW91c05vZGUoKQogICAg
ICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIGRldGFjaCgpOwog
ICAgIH07CkluZGV4OiBXZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1RyYXZlcnNhbC5jcHAJKHJldmlzaW9uIDI5MzM1KQorKysgV2ViQ29yZS9kb20v
VHJhdmVyc2FsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACi0vKioKLSAqIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCisv
KgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDAgRnJlZGVyaWsgSG9sbGplbiAoZnJlZGVyaWsuaG9sbGplbkBoaWcu
bm8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAq
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkK
LSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjksMTEgKzI3LDEyIEBACiAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5j
bHVkZSAiTm9kZUZpbHRlci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVHJhdmVyc2FsOjpUcmF2
ZXJzYWwoTm9kZSogcm9vdE5vZGUsIHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9k
ZUZpbHRlcj4gbm9kZUZpbHRlciwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKQorVHJhdmVy
c2FsOjpUcmF2ZXJzYWwoUGFzc1JlZlB0cjxOb2RlPiByb290Tm9kZSwgdW5zaWduZWQgd2hhdFRv
U2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBub2RlRmlsdGVyLCBib29sIGV4cGFuZEVudGl0
eVJlZmVyZW5jZXMpCiAgICAgOiBtX3Jvb3Qocm9vdE5vZGUpCiAgICAgLCBtX3doYXRUb1Nob3co
d2hhdFRvU2hvdykKICAgICAsIG1fZmlsdGVyKG5vZGVGaWx0ZXIpCkBAIC00NSwxNSArNDQsMTcg
QEAgVHJhdmVyc2FsOjp+VHJhdmVyc2FsKCkKIHsKIH0KIAotc2hvcnQgVHJhdmVyc2FsOjphY2Nl
cHROb2RlKE5vZGUqIG5vZGUpIGNvbnN0CitzaG9ydCBUcmF2ZXJzYWw6OmFjY2VwdE5vZGUoTm9k
ZSogbm9kZSwgSlNWYWx1ZSomIGV4Y2VwdGlvbikgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogSWYg
WE1MIGlzIGltcGxlbWVudGVkIHdlIGhhdmUgdG8gY2hlY2sgZXhwYW5kRW50aXR5UmVyZWZlbmNl
cyBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIC8vIEZJWE1FOiBUbyBoYW5kbGUgWE1MIHByb3Blcmx5
IHdlIHdvdWxkIGhhdmUgdG8gY2hlY2sgbV9leHBhbmRFbnRpdHlSZWZlcmVuY2VzLgorCiAgICAg
Ly8gVGhlIGJpZCB0d2lkZGxpbmcgaGVyZSBpcyBkb25lIHRvIG1hcCBET00gbm9kZSB0eXBlcywg
d2hpY2ggYXJlIGdpdmVuIGFzIGludGVnZXJzIGZyb20KICAgICAvLyAxIHRocm91Z2ggMTIsIHRv
IHdoYXRUb1Nob3cgYml0IG1hc2tzLgotICAgIGlmIChub2RlICYmICgoMSA8PCAobm9kZS0+bm9k
ZVR5cGUoKS0xKSkgJiBtX3doYXRUb1Nob3cpKQotICAgICAgICAvLyBjYXN0IHRvIHNob3J0IHNp
bGVuY2VzICJlbnVtZXJhbCBhbmQgbm9uLWVudW1lcmFsIHR5cGVzIGluIHJldHVybiIgd2Fybmlu
ZwotICAgICAgICByZXR1cm4gbV9maWx0ZXIgPyBtX2ZpbHRlci0+YWNjZXB0Tm9kZShub2RlKSA6
IHN0YXRpY19jYXN0PHNob3J0PihOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKTsKLSAgICByZXR1
cm4gTm9kZUZpbHRlcjo6RklMVEVSX1NLSVA7CisgICAgaWYgKCEoKCgxIDw8IChub2RlLT5ub2Rl
VHlwZSgpIC0gMSkpICYgbV93aGF0VG9TaG93KSkpCisgICAgICAgIHJldHVybiBOb2RlRmlsdGVy
OjpGSUxURVJfU0tJUDsKKyAgICBpZiAoIW1fZmlsdGVyKQorICAgICAgICByZXR1cm4gTm9kZUZp
bHRlcjo6RklMVEVSX0FDQ0VQVDsKKyAgICByZXR1cm4gbV9maWx0ZXItPmFjY2VwdE5vZGUobm9k
ZSwgZXhjZXB0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9kb20vVHJhdmVyc2FsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVHJhdmVyc2FsLmgJ
KHJldmlzaW9uIDI5MzM1KQorKysgV2ViQ29yZS9kb20vVHJhdmVyc2FsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTEgKzEsOSBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00g
aW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBL
bm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBGcmVkZXJpayBIb2xs
amVuIChmcmVkZXJpay5ob2xsamVuQGhpZy5ubykKICAqIENvcHlyaWdodCAoQykgMjAwMSBQZXRl
ciBLZWxseSAocG1rQHBvc3QuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWlu
aWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENv
bXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNywxMCArMjUsMTQgQEAK
ICNpZm5kZWYgVHJhdmVyc2FsX2gKICNkZWZpbmUgVHJhdmVyc2FsX2gKIAotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIEtKUyB7
CisgICAgY2xhc3MgSlNWYWx1ZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgTm9kZTsKQEAgLTM4LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xh
c3MgVHJhdmVyc2FsIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhdmVyc2FsPiB7CiAgICAgcHVibGlj
OgotICAgICAgICBUcmF2ZXJzYWwoTm9kZSosIHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQ
dHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcyk7CisgICAgICAgIFRy
YXZlcnNhbChQYXNzUmVmUHRyPE5vZGU+LCB1bnNpZ25lZCB3aGF0VG9TaG93LCBQYXNzUmVmUHRy
PE5vZGVGaWx0ZXI+LCBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpOwogICAgICAgICB2aXJ0
dWFsIH5UcmF2ZXJzYWwoKTsKIAogICAgICAgICBOb2RlKiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9yb290LmdldCgpOyB9CkBAIC00Niw3ICs0OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgTm9kZUZpbHRlciogZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXIuZ2V0KCk7
IH0KICAgICAgICAgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9leHBhbmRFbnRpdHlSZWZlcmVuY2VzOyB9CiAKLSAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZShO
b2RlKikgY29uc3Q7CisgICAgcHJvdGVjdGVkOgorICAgICAgICBzaG9ydCBhY2NlcHROb2RlKE5v
ZGUqLCBLSlM6OkpTVmFsdWUqJiBqc0V4Y2VwdGlvbikgY29uc3Q7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBSZWZQdHI8Tm9kZT4gbV9yb290OwpJbmRleDogV2ViQ29yZS9kb20vVHJlZVdhbGtl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHJldmlzaW9u
IDI5MzM1KQorKysgV2ViQ29yZS9kb20vVHJlZVdhbGtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsMTEgKzEsOSBAQAotLyoqCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxl
bWVudGF0aW9uIGZvciBLREUuCi0gKgorLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtu
b2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAwIEZyZWRlcmlrIEhvbGxq
ZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQogICogQ29weXJpZ2h0IChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29t
cHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyLDE1ICszMCwxNyBAQAog
I2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCit1
c2luZyBuYW1lc3BhY2UgS0pTOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRyZWVXYWxrZXI6
OlRyZWVXYWxrZXIoTm9kZSogcm9vdE5vZGUsIHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQ
dHI8Tm9kZUZpbHRlcj4gZmlsdGVyLCBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpCitUcmVl
V2Fsa2VyOjpUcmVlV2Fsa2VyKFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIHVuc2lnbmVkIHdo
YXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4gZmlsdGVyLCBib29sIGV4cGFuZEVudGl0
eVJlZmVyZW5jZXMpCiAgICAgOiBUcmF2ZXJzYWwocm9vdE5vZGUsIHdoYXRUb1Nob3csIGZpbHRl
ciwgZXhwYW5kRW50aXR5UmVmZXJlbmNlcykKLSAgICAsIG1fY3VycmVudChyb290Tm9kZSkKKyAg
ICAsIG1fY3VycmVudChyb290KCkpCiB7CiB9CiAKLXZvaWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVu
dE5vZGUoTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFRyZWVXYWxrZXI6OnNl
dEN1cnJlbnROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CkBAIC00
OSw5NyArNDksMTU5IEBAIHZvaWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVudE5vZGUoTm9kZSogbm8K
ICAgICBtX2N1cnJlbnQgPSBub2RlOwogfQogCi12b2lkIFRyZWVXYWxrZXI6OnNldEN1cnJlbnRO
b2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKG5vZGUpOwotICAgIGludCBkdW1teTsKLSAg
ICBzZXRDdXJyZW50Tm9kZShub2RlLCBkdW1teSk7Ci19Ci0KLU5vZGUqIFRyZWVXYWxrZXI6OnBh
cmVudE5vZGUoKQorTm9kZSogVHJlZVdhbGtlcjo6cGFyZW50Tm9kZShKU1ZhbHVlKiYgZXhjZXB0
aW9uKQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IGN1cnJlbnROb2RlKCktPnBhcmVudE5vZGUo
KTsgbm9kZSAmJiAobm9kZSA9PSByb290KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yocm9vdCgp
KSk7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGFjY2VwdE5vZGUo
bm9kZSkgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkgewotICAgICAgICAgICAgc2V0Q3Vy
cmVudE5vZGUobm9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICBleGNlcHRpb24g
PSAwOworICAgIGlmIChtX2N1cnJlbnQgPT0gcm9vdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LT5wYXJlbnQoKTsgbm9kZSAmJiBu
b2RlICE9IHJvb3QoKTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICBib29s
IGFjY2VwdGVkID0gYWNjZXB0Tm9kZShub2RlLmdldCgpLCBleGNlcHRpb24pID09IE5vZGVGaWx0
ZXI6OkZJTFRFUl9BQ0NFUFQ7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgaWYgKGFjY2VwdGVkKSB7CisgICAgICAgICAgICBtX2N1cnJlbnQg
PSBub2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUqIFRyZWVXYWxrZXI6OmZp
cnN0Q2hpbGQoKQorTm9kZSogVHJlZVdhbGtlcjo6Zmlyc3RDaGlsZChKU1ZhbHVlKiYgZXhjZXB0
aW9uKQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IGN1cnJlbnROb2RlKCktPmZpcnN0Q2hpbGQo
KTsgbm9kZSAmJiAobm9kZSA9PSByb290KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50T2Yocm9vdCgp
KSk7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChhY2NlcHROb2Rl
KG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKLSAgICAgICAgICAgIHNldEN1
cnJlbnROb2RlKG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgZXhjZXB0aW9u
ID0gMDsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LT5maXJzdENoaWxk
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGJvb2wgYWNj
ZXB0ZWQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCksIGV4Y2VwdGlvbikgPT0gTm9kZUZpbHRlcjo6
RklMVEVSX0FDQ0VQVDsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICBpZiAoYWNjZXB0ZWQpIHsKKyAgICAgICAgICAgIG1fY3VycmVudCA9IG5v
ZGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogVHJlZVdhbGtlcjo6bGFzdENo
aWxkKCkKK05vZGUqIFRyZWVXYWxrZXI6Omxhc3RDaGlsZChKU1ZhbHVlKiYgZXhjZXB0aW9uKQog
ewotICAgIGZvciAoTm9kZSogbm9kZSA9IGN1cnJlbnROb2RlKCktPmxhc3RDaGlsZCgpOyBub2Rl
ICYmIChub2RlID09IHJvb3QoKSB8fCBub2RlLT5pc0Rlc2NlbmRhbnRPZihyb290KCkpKTsgbm9k
ZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChhY2NlcHROb2RlKG5v
ZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKLSAgICAgICAgICAgIHNldEN1cnJl
bnROb2RlKG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgZXhjZXB0aW9uID0g
MDsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJyZW50LT5sYXN0Q2hpbGQoKTsg
bm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGJvb2wgYWNj
ZXB0ZWQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCksIGV4Y2VwdGlvbikgPT0gTm9kZUZpbHRlcjo6
RklMVEVSX0FDQ0VQVDsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICBpZiAoYWNjZXB0ZWQpIHsKKyAgICAgICAgICAgIG1fY3VycmVudCA9IG5v
ZGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogVHJlZVdhbGtlcjo6cHJldmlv
dXNTaWJsaW5nKCkKK05vZGUqIFRyZWVXYWxrZXI6OnByZXZpb3VzU2libGluZyhKU1ZhbHVlKiYg
ZXhjZXB0aW9uKQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IGN1cnJlbnROb2RlKCktPnByZXZp
b3VzU2libGluZygpOyBub2RlICYmIChub2RlID09IHJvb3QoKSB8fCBub2RlLT5pc0Rlc2NlbmRh
bnRPZihyb290KCkpKTsgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAg
IGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKLSAg
ICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5vZGU7
CisgICAgZXhjZXB0aW9uID0gMDsKKyAgICBpZiAobV9jdXJyZW50ID09IHJvb3QoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudC0+cHJl
dmlvdXNTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewor
ICAgICAgICBib29sIGFjY2VwdGVkID0gYWNjZXB0Tm9kZShub2RlLmdldCgpLCBleGNlcHRpb24p
ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ7CisgICAgICAgIGlmIChleGNlcHRpb24pCisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGFjY2VwdGVkKSB7CisgICAgICAgICAg
ICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBtX2N1cnJl
bnQuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUqIFRy
ZWVXYWxrZXI6Om5leHRTaWJsaW5nKCkKK05vZGUqIFRyZWVXYWxrZXI6Om5leHRTaWJsaW5nKEpT
VmFsdWUqJiBleGNlcHRpb24pCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gY3VycmVudE5vZGUo
KS0+bmV4dFNpYmxpbmcoKTsgbm9kZSAmJiAobm9kZSA9PSByb290KCkgfHwgbm9kZS0+aXNEZXNj
ZW5kYW50T2Yocm9vdCgpKSk7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAg
IGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKLSAg
ICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5vZGU7
CisgICAgZXhjZXB0aW9uID0gMDsKKyAgICBpZiAobV9jdXJyZW50ID09IHJvb3QoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudC0+bmV4
dFNpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
Ym9vbCBhY2NlcHRlZCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKSA9PSBOb2Rl
RmlsdGVyOjpGSUxURVJfQUNDRVBUOworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChhY2NlcHRlZCkgeworICAgICAgICAgICAgbV9jdXJy
ZW50ID0gbm9kZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LmdldCgp
OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBUcmVlV2Fsa2Vy
OjpwcmV2aW91c05vZGUoKQorTm9kZSogVHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKEpTVmFsdWUq
JiBleGNlcHRpb24pCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gY3VycmVudE5vZGUoKS0+dHJh
dmVyc2VQcmV2aW91c05vZGUoKTsgbm9kZSAmJiAobm9kZSA9PSByb290KCkgfHwgbm9kZS0+aXNE
ZXNjZW5kYW50T2Yocm9vdCgpKSk7IG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgp
KSB7Ci0gICAgICAgIGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9B
Q0NFUFQgJiYgIWFuY2VzdG9yUmVqZWN0ZWQobm9kZSkpIHsKLSAgICAgICAgICAgIHNldEN1cnJl
bnROb2RlKG5vZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgZXhjZXB0aW9uID0g
MDsKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKKyAgICB3aGlsZSAobm9kZSAh
PSByb290KCkpIHsKKyAgICAgICAgd2hpbGUgKE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUt
PnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgICAgICBub2RlID0gcHJldmlvdXNTaWJsaW5n
OworICAgICAgICAgICAgc2hvcnQgcmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpLCBleGNl
cHRpb24pOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVD
VCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHdoaWxlIChOb2RlKiBs
YXN0Q2hpbGQgPSBub2RlLT5sYXN0Q2hpbGQoKSkgeworICAgICAgICAgICAgICAgIG5vZGUgPSBs
YXN0Q2hpbGQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gYWNjZXB0Tm9kZShub2RlLmdldCgp
LCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTm9kZUZp
bHRlcjo6RklMVEVSX0FDQ0VQVCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9B
Q0NFUFQpIHsKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGlmIChub2RlID09IHJvb3QoKSkKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIGlm
ICghcGFyZW50KQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIG5vZGUgPSBwYXJlbnQ7
CisgICAgICAgIHNob3J0IHJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9u
KTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICBpZiAocmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKKyAgICAgICAgICAg
IG1fY3VycmVudCA9IG5vZGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVu
dC5nZXQoKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotTm9kZSogVHJl
ZVdhbGtlcjo6bmV4dE5vZGUoKQorTm9kZSogVHJlZVdhbGtlcjo6bmV4dE5vZGUoSlNWYWx1ZSom
IGV4Y2VwdGlvbikKIHsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBjdXJyZW50Tm9kZSgpLT50cmF2
ZXJzZU5leHROb2RlKCk7IG5vZGUgJiYgKG5vZGUgPT0gcm9vdCgpIHx8IG5vZGUtPmlzRGVzY2Vu
ZGFudE9mKHJvb3QoKSkpOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQgJiYg
IWFuY2VzdG9yUmVqZWN0ZWQobm9kZSkpIHsKLSAgICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5v
ZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgZXhjZXB0aW9uID0gMDsKKyAgICBS
ZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKK0NoaWxkcmVuOgorICAgIHdoaWxlIChOb2Rl
KiBmaXJzdENoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgIG5vZGUgPSBmaXJz
dENoaWxkOworICAgICAgICBzaG9ydCByZXN1bHQgPSBhY2NlcHROb2RlKG5vZGUuZ2V0KCksIGV4
Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgaWYgKHJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7CisgICAg
ICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBt
X2N1cnJlbnQuZ2V0KCk7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOb2RlRmls
dGVyOjpGSUxURVJfUkVKRUNUKQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVy
biAwOwotfQotCi1ib29sIFRyZWVXYWxrZXI6OmFuY2VzdG9yUmVqZWN0ZWQoY29uc3QgTm9kZSog
bm9kZSkgY29uc3QKLXsKLSAgICBmb3IgKE5vZGUqIGEgPSBub2RlLT5wYXJlbnROb2RlKCk7IGEg
JiYgYSAhPSByb290KCk7IGEgPSBhLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKGFjY2Vw
dE5vZGUoYSkgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVCkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgIHdoaWxlIChOb2RlKiBuZXh0U2libGluZyA9IG5vZGUtPnRyYXZlcnNlTmV4
dFNpYmxpbmcocm9vdCgpKSkgeworICAgICAgICBub2RlID0gbmV4dFNpYmxpbmc7CisgICAgICAg
IHNob3J0IHJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKTsKKyAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAocmVz
dWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKKyAgICAgICAgICAgIG1fY3VycmVu
dCA9IG5vZGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQ
KQorICAgICAgICAgICAgZ290byBDaGlsZHJlbjsKICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L2RvbS9UcmVlV2Fsa2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVHJlZVdhbGtlci5o
CShyZXZpc2lvbiAyOTMzNSkKKysrIFdlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMSArMSw5IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERP
TSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAwIEZyZWRlcmlrIEhv
bGxqZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQogICogQ29weXJpZ2h0IChDKSAyMDAxIFBl
dGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdl
aW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUg
Q29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDcgKzI2LDYgQEAK
ICNkZWZpbmUgVHJlZVdhbGtlcl9oCiAKICNpbmNsdWRlICJUcmF2ZXJzYWwuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsMjQgKzMzLDI5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIFRyZWVXYWxrZXIgOiBwdWJsaWMg
VHJhdmVyc2FsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRyZWVXYWxrZXIoTm9kZSosIHVuc2ln
bmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5kRW50aXR5
UmVmZXJlbmNlcyk7CisgICAgICAgIFRyZWVXYWxrZXIoUGFzc1JlZlB0cjxOb2RlPiwgdW5zaWdu
ZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiwgYm9vbCBleHBhbmRFbnRpdHlS
ZWZlcmVuY2VzKTsKIAogICAgICAgICBOb2RlKiBjdXJyZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudC5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldEN1cnJlbnROb2RlKE5vZGUqLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIHZvaWQgc2V0Q3VycmVudE5vZGUoUGFzc1JlZlB0cjxO
b2RlPiwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIE5vZGUqIHBhcmVudE5vZGUoKTsKLSAg
ICAgICAgTm9kZSogZmlyc3RDaGlsZCgpOwotICAgICAgICBOb2RlKiBsYXN0Q2hpbGQoKTsKLSAg
ICAgICAgTm9kZSogcHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgIE5vZGUqIG5leHRTaWJsaW5n
KCk7Ci0gICAgICAgIE5vZGUqIHByZXZpb3VzTm9kZSgpOwotICAgICAgICBOb2RlKiBuZXh0Tm9k
ZSgpOworICAgICAgICBOb2RlKiBwYXJlbnROb2RlKEtKUzo6SlNWYWx1ZSomIGV4Y2VwdGlvbik7
CisgICAgICAgIE5vZGUqIGZpcnN0Q2hpbGQoS0pTOjpKU1ZhbHVlKiYgZXhjZXB0aW9uKTsKKyAg
ICAgICAgTm9kZSogbGFzdENoaWxkKEtKUzo6SlNWYWx1ZSomIGV4Y2VwdGlvbik7CisgICAgICAg
IE5vZGUqIHByZXZpb3VzU2libGluZyhLSlM6OkpTVmFsdWUqJiBleGNlcHRpb24pOworICAgICAg
ICBOb2RlKiBuZXh0U2libGluZyhLSlM6OkpTVmFsdWUqJiBleGNlcHRpb24pOworICAgICAgICBO
b2RlKiBwcmV2aW91c05vZGUoS0pTOjpKU1ZhbHVlKiYgZXhjZXB0aW9uKTsKKyAgICAgICAgTm9k
ZSogbmV4dE5vZGUoS0pTOjpKU1ZhbHVlKiYgZXhjZXB0aW9uKTsKKworICAgICAgICAvLyBGb3Ig
bm9uLUpTIGJpbmRpbmdzLiBTaWxlbnRseSBpZ25vcmVzIHRoZSBKYXZhU2NyaXB0IGV4Y2VwdGlv
biBpZiBhbnkuCisgICAgICAgIE5vZGUqIHBhcmVudE5vZGUoKSB7IEtKUzo6SlNWYWx1ZSogZXhj
ZXB0aW9uOyByZXR1cm4gcGFyZW50Tm9kZShleGNlcHRpb24pOyB9CisgICAgICAgIE5vZGUqIGZp
cnN0Q2hpbGQoKSB7IEtKUzo6SlNWYWx1ZSogZXhjZXB0aW9uOyByZXR1cm4gZmlyc3RDaGlsZChl
eGNlcHRpb24pOyB9CisgICAgICAgIE5vZGUqIGxhc3RDaGlsZCgpIHsgS0pTOjpKU1ZhbHVlKiBl
eGNlcHRpb247IHJldHVybiBsYXN0Q2hpbGQoZXhjZXB0aW9uKTsgfQorICAgICAgICBOb2RlKiBw
cmV2aW91c1NpYmxpbmcoKSB7IEtKUzo6SlNWYWx1ZSogZXhjZXB0aW9uOyByZXR1cm4gcHJldmlv
dXNTaWJsaW5nKGV4Y2VwdGlvbik7IH0KKyAgICAgICAgTm9kZSogbmV4dFNpYmxpbmcoKSB7IEtK
Uzo6SlNWYWx1ZSogZXhjZXB0aW9uOyByZXR1cm4gbmV4dFNpYmxpbmcoZXhjZXB0aW9uKTsgfQor
ICAgICAgICBOb2RlKiBwcmV2aW91c05vZGUoKSB7IEtKUzo6SlNWYWx1ZSogZXhjZXB0aW9uOyBy
ZXR1cm4gcHJldmlvdXNOb2RlKGV4Y2VwdGlvbik7IH0KKyAgICAgICAgTm9kZSogbmV4dE5vZGUo
KSB7IEtKUzo6SlNWYWx1ZSogZXhjZXB0aW9uOyByZXR1cm4gbmV4dE5vZGUoZXhjZXB0aW9uKTsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgLy8gY29udmVuaWVuY2UgZm9yIHdoZW4gaXQgaXMg
a25vd24gdGhlcmUgd2lsbCBiZSBubyBleGNlcHRpb24KLSAgICAgICAgdm9pZCBzZXRDdXJyZW50
Tm9kZShOb2RlKik7Ci0gICAgICAgIGJvb2wgYW5jZXN0b3JSZWplY3RlZChjb25zdCBOb2RlKikg
Y29uc3Q7Ci0KICAgICAgICAgUmVmUHRyPE5vZGU+IG1fY3VycmVudDsKICAgICB9OwogCkluZGV4
OiBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9U
cmVlV2Fsa2VyLmlkbAkocmV2aXNpb24gMjkzMzUpCisrKyBXZWJDb3JlL2RvbS9UcmVlV2Fsa2Vy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDEzIEBAIG1vZHVsZSB0cmF2ZXJzYWwg
ewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgTm9kZSBjdXJyZW50Tm9kZQogICAgICAgICAg
ICAgICAgICAgICAgc2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAgICAgIE5vZGUg
cGFyZW50Tm9kZSgpOwotICAgICAgICBOb2RlIGZpcnN0Q2hpbGQoKTsKLSAgICAgICAgTm9kZSBs
YXN0Q2hpbGQoKTsKLSAgICAgICAgTm9kZSBwcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgTm9k
ZSBuZXh0U2libGluZygpOwotICAgICAgICBOb2RlIHByZXZpb3VzTm9kZSgpOwotICAgICAgICBO
b2RlIG5leHROb2RlKCk7CisgICAgICAgIFtDdXN0b21dIE5vZGUgcGFyZW50Tm9kZSgpOworICAg
ICAgICBbQ3VzdG9tXSBOb2RlIGZpcnN0Q2hpbGQoKTsKKyAgICAgICAgW0N1c3RvbV0gTm9kZSBs
YXN0Q2hpbGQoKTsKKyAgICAgICAgW0N1c3RvbV0gTm9kZSBwcmV2aW91c1NpYmxpbmcoKTsKKyAg
ICAgICAgW0N1c3RvbV0gTm9kZSBuZXh0U2libGluZygpOworICAgICAgICBbQ3VzdG9tXSBOb2Rl
IHByZXZpb3VzTm9kZSgpOworICAgICAgICBbQ3VzdG9tXSBOb2RlIG5leHROb2RlKCk7CiAgICAg
fTsKIAogfQpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9tYWtlLWpzLXRlc3Qtd3JhcHBlcnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9tYWtlLWpzLXRlc3Qtd3JhcHBlcnMJ
KHJldmlzaW9uIDI5MzM1KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9tYWtlLWpzLXRlc3Qtd3Jh
cHBlcnMJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgdXNlIHN0cmljdDsKIAogY2hk
aXJXZWJLaXQoKTsKIAotbXkgQHRlbXBsYXRlcyA9IGBmaW5kIExheW91dFRlc3RzL2Zhc3QgLW5h
bWUgIlRFTVBMQVRFLmh0bWwiYDsKK215IEB0ZW1wbGF0ZXMgPSBgZmluZCBMYXlvdXRUZXN0cyAt
bmFtZSAiVEVNUExBVEUuaHRtbCJgOwogCiBmb3IgbXkgJHRmaWxlIChAdGVtcGxhdGVzKSB7CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI5MzM1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDgtMDEtMDggIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcxNAorICAgICAgICAgIE5vZGVJdGVyYXRvciBkb2VzIG5vdCBoYW5kbGUgZXhjZXB0aW9ucyBm
cm9tIHRoZSBmaWx0ZXIgZnVuY3Rpb24gKGFmZmVjdHMgQWNpZDMpCisKKyAgICAgICAgKiB0cmF2
ZXJzYWwvZXhjZXB0aW9uLWZvcndhcmRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0cmF2ZXJzYWwvZXhjZXB0aW9uLWZvcndhcmRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICog
dHJhdmVyc2FsL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogdHJhdmVyc2FsL3Jlc291cmNl
cy9URU1QTEFURS5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNl
cy9URU1QTEFURS5odG1sLgorICAgICAgICAqIHRyYXZlcnNhbC9yZXNvdXJjZXMvZXhjZXB0aW9u
LWZvcndhcmRpbmcuanM6IEFkZGVkLgorCisgICAgICAgICogdHJhdmVyc2FsL25vZGUtaXRlcmF0
b3ItMDA2Lmh0bWw6IENoYW5nZWQgdGVzdCBzbyB0aGVyZSdzIG5vIHdoaXRlc3BhY2Ugbm9kZSBh
ZnRlcgorICAgICAgICB0aGUgPHNwYW4+IGVsZW1lbnRzIGluc2lkZSB0aGUgdGVzdCByb290IGVs
ZW1lbnQgKGEgPGRpdj4pLiBUaGUgb2xkIHRlc3QgcmVzdWx0cyB3ZXJlCisgICAgICAgIGluY29y
cmVjdDsgdGhlIG5ldyBOb2RlSXRlcmF0b3IgaW1wbGVtZW50YXRpb24gY29ycmVjdGx5IHJldHVy
bmVkIHRoZSB3aGl0ZXNwYWNlIG5vZGUKKyAgICAgICAgZm9yIHRoaXMgdGVzdC4KKworICAgICAg
ICAqIHRyYXZlcnNhbC9ub2RlLWl0ZXJhdG9yLTAwNmEuaHRtbDogQ29waWVkIGZyb20gdHJhdmVy
c2FsL25vZGUtaXRlcmF0b3ItMDA2Lmh0bWwuCisgICAgICAgIFByZXNlcnZlIHRoZSBvcmlnaW5h
bCB0ZXN0LCB3aGljaCBub3cgaGFzIGEgc3RyYW5nZSByZXN1bHQuIEJ1dCB0aGUgcmVzdWx0IGlz
IGNvcnJlY3QsCisgICAgICAgIHNvIGl0J3Mgd29ydGgga2VlcGluZyBhcm91bmQuCisgICAgICAg
ICogdHJhdmVyc2FsL25vZGUtaXRlcmF0b3ItMDA2YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCisg
ICAgICAgICogZmFzdC9kb20vVHJlZVdhbGtlci9UcmVlV2Fsa2VyLWN1cnJlbnROb2RlLWV4cGVj
dGVkLnR4dDogUmVnZW5yZWF0ZWQuCisgICAgICAgICogZmFzdC9kb20vVHJlZVdhbGtlci9yZXNv
dXJjZXMvVHJlZVdhbGtlci1jdXJyZW50Tm9kZS5qczogVXBkYXRlZCB0ZXN0IHRvIGV4cGVjdCBy
ZXN1bHRzCisgICAgICAgIHRoYXQgbWF0Y2ggdGhlIERPTSBzcGVjaWZpY2F0aW9uLgorCiAyMDA4
LTAxLTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1RyZWVXYWxrZXIvVHJl
ZVdhbGtlci1jdXJyZW50Tm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vVHJlZVdhbGtlci9UcmVlV2Fsa2VyLWN1cnJlbnROb2RlLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjkzMzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9UcmVlV2Fsa2VyL1Ry
ZWVXYWxrZXItY3VycmVudE5vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMywx
NCArMTMsMTQgQEAgVGVzdCB0aGF0IHdlIGhhbmRsZSBzZXR0aW5nIHRoZSBjdXJyZW50TgogCiBQ
QVNTIHcucGFyZW50Tm9kZSgpIGlzIG51bGwKIFBBU1Mgdy5jdXJyZW50Tm9kZSBpcyBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQKLVBBU1Mgdy5uZXh0Tm9kZSgpIGlzIG51bGwKLVBBU1Mgdy5jdXJy
ZW50Tm9kZSBpcyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQKK1BBU1Mgdy5uZXh0Tm9kZSgpIGlz
IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkCitQQVNTIHcuY3VycmVudE5vZGUg
aXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQKIFBBU1Mgdy5wcmV2aW91c05v
ZGUoKSBpcyBudWxsCiBQQVNTIHcuY3VycmVudE5vZGUgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50Ci1QQVNTIHcuZmlyc3RDaGlsZCgpIGlzIG51bGwKLVBBU1Mgdy5jdXJyZW50Tm9kZSBpcyBk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQKLVBBU1Mgdy5sYXN0Q2hpbGQoKSBpcyBudWxsCi1QQVNT
IHcuY3VycmVudE5vZGUgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50CitQQVNTIHcuZmlyc3RD
aGlsZCgpIGlzIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkCitQQVNTIHcuY3Vy
cmVudE5vZGUgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQKK1BBU1Mgdy5s
YXN0Q2hpbGQoKSBpcyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFzdENoaWxkCitQQVNTIHcu
Y3VycmVudE5vZGUgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxhc3RDaGlsZAogUEFTUyB3
Lm5leHRTaWJsaW5nKCkgaXMgbnVsbAogUEFTUyB3LmN1cnJlbnROb2RlIGlzIGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudAogUEFTUyB3LnByZXZpb3VzU2libGluZygpIGlzIG51bGwKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL1RyZWVXYWxrZXIvcmVzb3VyY2VzL1RyZWVXYWxrZXItY3VycmVu
dE5vZGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vVHJlZVdhbGtlci9y
ZXNvdXJjZXMvVHJlZVdhbGtlci1jdXJyZW50Tm9kZS5qcwkocmV2aXNpb24gMjkzMzUpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9UcmVlV2Fsa2VyL3Jlc291cmNlcy9UcmVlV2Fsa2VyLWN1cnJl
bnROb2RlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxNiArMjEsMjIgQEAgZGVidWcoIiIpOwog
dy5jdXJyZW50Tm9kZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKIHNob3VsZEJlTnVsbCgi
dy5wYXJlbnROb2RlKCkiKTsKIHNob3VsZEJlKCJ3LmN1cnJlbnROb2RlIiwgImRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCIpOwotc2hvdWxkQmVOdWxsKCJ3Lm5leHROb2RlKCkiKTsKLXNob3VsZEJl
KCJ3LmN1cnJlbnROb2RlIiwgImRvY3VtZW50LmRvY3VtZW50RWxlbWVudCIpOwordy5jdXJyZW50
Tm9kZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKK3Nob3VsZEJlKCJ3Lm5leHROb2RlKCki
LCAiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlKCJ3LmN1
cnJlbnROb2RlIiwgImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkIik7Cit3LmN1
cnJlbnROb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Owogc2hvdWxkQmVOdWxsKCJ3LnBy
ZXZpb3VzTm9kZSgpIik7CiBzaG91bGRCZSgidy5jdXJyZW50Tm9kZSIsICJkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQiKTsKLXNob3VsZEJlTnVsbCgidy5maXJzdENoaWxkKCkiKTsKLXNob3VsZEJl
KCJ3LmN1cnJlbnROb2RlIiwgImRvY3VtZW50LmRvY3VtZW50RWxlbWVudCIpOwotc2hvdWxkQmVO
dWxsKCJ3Lmxhc3RDaGlsZCgpIik7Ci1zaG91bGRCZSgidy5jdXJyZW50Tm9kZSIsICJkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQiKTsKK3cuY3VycmVudE5vZGUgPSBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQ7CitzaG91bGRCZSgidy5maXJzdENoaWxkKCkiLCAiZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LmZpcnN0Q2hpbGQiKTsKK3Nob3VsZEJlKCJ3LmN1cnJlbnROb2RlIiwgImRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudC5maXJzdENoaWxkIik7Cit3LmN1cnJlbnROb2RlID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50Oworc2hvdWxkQmUoIncubGFzdENoaWxkKCkiLCAiZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50Lmxhc3RDaGlsZCIpOworc2hvdWxkQmUoIncuY3VycmVudE5vZGUiLCAiZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50Lmxhc3RDaGlsZCIpOwordy5jdXJyZW50Tm9kZSA9IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudDsKIHNob3VsZEJlTnVsbCgidy5uZXh0U2libGluZygpIik7CiBzaG91
bGRCZSgidy5jdXJyZW50Tm9kZSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQiKTsKK3cuY3Vy
cmVudE5vZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CiBzaG91bGRCZU51bGwoIncucHJl
dmlvdXNTaWJsaW5nKCkiKTsKIHNob3VsZEJlKCJ3LmN1cnJlbnROb2RlIiwgImRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCIpOwogCkBAIC00MCw3ICs0Niw3IEBAIGRlYnVnKCIiKTsKIAogdy5jdXJy
ZW50Tm9kZSA9IHN1YlRyZWUucHJldmlvdXNTaWJsaW5nOwogc2hvdWxkQmUoIncubmV4dE5vZGUo
KSIsICJzdWJUcmVlIik7Ci13LmN1cnJlbnROb2RlID0gZG9jdW1lbnQuYm9keQordy5jdXJyZW50
Tm9kZSA9IGRvY3VtZW50LmJvZHk7CiBzaG91bGRCZSgidy5sYXN0Q2hpbGQoKSIsICJzdWJUcmVl
Iik7CiAKIC8vIENsZWFudXAKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9leGNlcHRpb24t
Zm9yd2FyZGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL2V4Y2VwdGlvbi1mb3J3YXJkaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3RyYXZlcnNhbC9leGNlcHRpb24tZm9yd2FyZGluZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3Qgb2YgZXhjZXB0aW9uIGZvcndhcmRpbmcg
Zm9yIE5vZGVJdGVyYXRvciBhbmQgVHJlZVdhbGtlciwgZGVyaXZlZCBmcm9tIGFuIGVhcmx5IHZl
cnNpb24gb2YgQWNpZDMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaS5u
ZXh0Tm9kZSgpIHRocmV3IGV4Y2VwdGlvbiBSb3Nlcy4KK1BBU1MgaS5uZXh0Tm9kZSgpIGlzIGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudAorUEFTUyBpLnByZXZpb3VzTm9kZSgpIHRocmV3IGV4Y2Vw
dGlvbiBSb3Nlcy4KK1BBU1Mgdy5uZXh0Tm9kZSgpIHRocmV3IGV4Y2VwdGlvbiBSb3Nlcy4KK1BB
U1Mgdy5uZXh0Tm9kZSgpIGlzIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkCitQ
QVNTIHcucHJldmlvdXNOb2RlKCkgdGhyZXcgZXhjZXB0aW9uIFJvc2VzLgorUEFTUyB3LmZpcnN0
Q2hpbGQoKSB0aHJldyBleGNlcHRpb24gUm9zZXMuCitQQVNTIHcubGFzdENoaWxkKCkgdGhyZXcg
ZXhjZXB0aW9uIFJvc2VzLgorUEFTUyB3Lm5leHRTaWJsaW5nKCkgdGhyZXcgZXhjZXB0aW9uIFJv
c2VzLgorUEFTUyB3LnByZXZpb3VzU2libGluZygpIGlzIG51bGwKK1BBU1Mgdy5uZXh0U2libGlu
ZygpIGlzIGRvY3VtZW50LmJvZHkKK1BBU1Mgdy5wcmV2aW91c1NpYmxpbmcoKSBpcyBkb2N1bWVu
dC5ib2R5LnByZXZpb3VzU2libGluZworUEFTUyBpdGVyYXRpb24gaXMgMTEKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvZXhjZXB0aW9uLWZvcndhcmRpbmctZXhwZWN0ZWQu
dHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExh
eW91dFRlc3RzL3RyYXZlcnNhbC9leGNlcHRpb24tZm9yd2FyZGluZy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3RyYXZlcnNhbC9leGNlcHRpb24tZm9yd2FyZGluZy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2V4Y2VwdGlvbi1mb3J3YXJkaW5nLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2V4Y2VwdGlvbi1mb3J3YXJkaW5n
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2V4Y2VwdGlvbi1mb3J3YXJkaW5nLmh0bWwKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCk5hbWU6IHN2bjplb2wtc3R5
bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRv
ci0wMDYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVy
YXRvci0wMDYuaHRtbAkocmV2aXNpb24gMjkzMzUpCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwv
bm9kZS1pdGVyYXRvci0wMDYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDcgQEAKIDx0
aXRsZT5UcmF2ZXJzYWwgVGVzdDwvdGl0bGU+IAogPC9oZWFkPiAKIDxib2R5PgotPGRpdiBpZD0i
dGVzdCI+Ci08c3BhbiBpZD0iQSI+PC9zcGFuPjxzcGFuIGlkPSJCIj48L3NwYW4+PHNwYW4gaWQ9
IkMiPjwvc3Bhbj4KLTwvZGl2PgorPGRpdiBpZD0idGVzdCI+PHNwYW4gaWQ9IkEiPjwvc3Bhbj48
c3BhbiBpZD0iQiI+PC9zcGFuPjxzcGFuIGlkPSJDIj48L3NwYW4+PC9kaXY+CiA8ZGl2IHN0eWxl
PSJmb250LWZhbWlseTogQ291cmllcjsgZm9udC1zaXplOiAxNDsiPgogPHNjcmlwdD4KIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwv
bm9kZS1pdGVyYXRvci0wMDZhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDZhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9ub2RlLWl0ZXJhdG9yLTAwNmEtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK0V4cGVjdCByZWYgbm9kZSAnQyc7IHBvaW50
ZXIgYmVmb3JlOiBBIEIgKiBbQ10KKworcmVtb3ZlIG5vZGUgJ0MnCisKK0V4cGVjdCByZWYgbm9k
ZSAnQic7IHBvaW50ZXIgYWZ0ZXI6IEEgQgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVz
dHMvdHJhdmVyc2FsL25vZGUtaXRlcmF0b3ItMDA2YS1leHBlY3RlZC50eHQKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL25vZGUtaXRlcmF0b3ItMDA2YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Ry
YXZlcnNhbC9ub2RlLWl0ZXJhdG9yLTAwNmEuaHRtbAkocmV2aXNpb24gMjkzMDIpCShmcm9tIExh
eW91dFRlc3RzL3RyYXZlcnNhbC9ub2RlLWl0ZXJhdG9yLTAwNi5odG1sOjI5MzAyKQorKysgTGF5
b3V0VGVzdHMvdHJhdmVyc2FsL25vZGUtaXRlcmF0b3ItMDA2YS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMzcgQEAKKzxodG1sPiAKKzxoZWFkPgorPHNjcmlwdCBzcmM9dHJhdmVyc2Fs
LmpzIGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiID48L3Njcmlw
dD4KKzx0aXRsZT5UcmF2ZXJzYWwgVGVzdDwvdGl0bGU+IAorPC9oZWFkPiAKKzxib2R5PgorPGRp
diBpZD0idGVzdCI+Cis8c3BhbiBpZD0iQSI+PC9zcGFuPjxzcGFuIGlkPSJCIj48L3NwYW4+PHNw
YW4gaWQ9IkMiPjwvc3Bhbj4KKzwvZGl2PgorPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENvdXJp
ZXI7IGZvbnQtc2l6ZTogMTQ7Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIHJv
b3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworCitmdW5jdGlvbiB0ZXN0Tm9k
ZUZpdGVyKG4pCit7CisgICAgaWYgKG4udGFnTmFtZSA9PSAnU1BBTicpIHJldHVybiBOb2RlRmls
dGVyLkZJTFRFUl9BQ0NFUFQ7CisgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7Cit9
CisKK3ZhciBpdCA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihyb290LCBOb2RlRmlsdGVy
LlNIT1dfRUxFTUVOVCwgdGVzdE5vZGVGaXRlciwgZmFsc2UpOworZm9yIChpID0gMDsgaSA8IDM7
IGkrKykKKyAgICBpdC5uZXh0Tm9kZSgpOworIGl0LnByZXZpb3VzTm9kZSgpOworZG9jdW1lbnQu
d3JpdGUoZHVtcE5vZGVJdGVyYXRvcihpdCwgInJlZiBub2RlICdDJzsgcG9pbnRlciBiZWZvcmUi
KSk7CisKKy8vIHJlbW92ZSBub2RlICdDJworZG9jdW1lbnQud3JpdGUoIjxwPnJlbW92ZSBub2Rl
ICdDJyIpOwordmFyIEQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQycpOworcm9vdC5yZW1v
dmVDaGlsZChEKTsKK2RvY3VtZW50LndyaXRlKGR1bXBOb2RlSXRlcmF0b3IoaXQsICJyZWYgbm9k
ZSAnQic7IHBvaW50ZXIgYWZ0ZXIiKSk7Cis8L3NjcmlwdD4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL3Jlc291cmNlcy9URU1QTEFURS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYXZlcnNhbC9yZXNvdXJjZXMvVEVNUExBVEUu
aHRtbAkocmV2aXNpb24gMjkyMDUpCShmcm9tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L1RFTVBMQVRFLmh0bWw6MjkyMDUpCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvcmVzb3VyY2Vz
L1RFTVBMQVRFLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9IllPVVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvcmVzb3VyY2VzL1RFTVBMQVRFLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvcmVzb3VyY2VzL1RFTVBM
QVRFLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTMgKzEsMTMgQEAKIDwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Ci08c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9yZXNvdXJj
ZXMvZXhjZXB0aW9uLWZvcndhcmRpbmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJh
dmVyc2FsL3Jlc291cmNlcy9leGNlcHRpb24tZm9yd2FyZGluZy5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3RyYXZlcnNhbC9yZXNvdXJjZXMvZXhjZXB0aW9uLWZvcndhcmRpbmcuanMJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IG9mIGV4Y2Vw
dGlvbiBmb3J3YXJkaW5nIGZvciBOb2RlSXRlcmF0b3IgYW5kIFRyZWVXYWxrZXIsIGRlcml2ZWQg
ZnJvbSBhbiBlYXJseSB2ZXJzaW9uIG9mIEFjaWQzIik7CisKK3ZhciBpdGVyYXRpb24gPSAwOwor
ZnVuY3Rpb24gdGVzdChub2RlKQoreworICAgIGl0ZXJhdGlvbiArPSAxOworICAgIHN3aXRjaCAo
aXRlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgMTogY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNjogY2Fz
ZSA3OiBjYXNlIDg6IGNhc2UgOTogY2FzZSAxMjogdGhyb3cgIlJvc2VzIjsKKyAgICAgICAgY2Fz
ZSAyOiBjYXNlIDU6IGNhc2UgMTA6IGNhc2UgMTE6IHJldHVybiB0cnVlOworICAgICAgICBkZWZh
dWx0OiB0aHJvdyAwOworICAgIH0KK30KKwordmFyIGkgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRl
cmF0b3IoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAweEZGRkZGRkZGLCB0ZXN0LCB0cnVlKTsK
K3Nob3VsZFRocm93KCJpLm5leHROb2RlKCkiKTsgLy8gMQorc2hvdWxkQmUoImkubmV4dE5vZGUo
KSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQiKTsgLy8gMgorc2hvdWxkVGhyb3coImkucHJl
dmlvdXNOb2RlKCkiKTsgLy8gMwordmFyIHcgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudCwgMHhGRkZGRkZGRiwgdGVzdCwgdHJ1ZSk7CitzaG91bGRU
aHJvdygidy5uZXh0Tm9kZSgpIik7IC8vIDQKK3Nob3VsZEJlKCJ3Lm5leHROb2RlKCkiLCAiZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LmZpcnN0Q2hpbGQiKTsgLy8gNQorc2hvdWxkVGhyb3coIncu
cHJldmlvdXNOb2RlKCkiKTsgLy8gNgorc2hvdWxkVGhyb3coIncuZmlyc3RDaGlsZCgpIik7IC8v
IDcKK3Nob3VsZFRocm93KCJ3Lmxhc3RDaGlsZCgpIik7IC8vIDgKK3Nob3VsZFRocm93KCJ3Lm5l
eHRTaWJsaW5nKCkiKTsgLy8gOQorc2hvdWxkQmUoIncucHJldmlvdXNTaWJsaW5nKCkiLCAibnVs
bCIpOworc2hvdWxkQmUoIncubmV4dFNpYmxpbmcoKSIsICJkb2N1bWVudC5ib2R5Iik7IC8vIDEw
CitzaG91bGRCZSgidy5wcmV2aW91c1NpYmxpbmcoKSIsICJkb2N1bWVudC5ib2R5LnByZXZpb3Vz
U2libGluZyIpOyAvLyAxMQorc2hvdWxkQmUoIml0ZXJhdGlvbiIsICIxMSIpOworCit2YXIgc3Vj
Y2VzZnVsbHlQYXJzZWQgPSB0cnVlOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18894</attachid>
            <date>2008-02-03 18:10:03 -0800</date>
            <delta_ts>2008-02-07 09:36:23 -0800</delta_ts>
            <desc>much better patch -- not perfect on Acid3, but makes us pass 4 more tests (from 69 to 73 when I tried it)</desc>
            <filename>TraversalPatch.txt</filename>
            <type>text/plain</type>
            <size>115176</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMwIEBACisyMDA4LTAyLTAzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZp
eCBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDkyCisgICAgICAgICAg
VHJlZVdhbGtlciBpbXBsZW1lbnRhdGlvbiBuZWVkcyB0byBiZSBmaXhlZCAoYWZmZWN0cyBBY2lk
MykKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDcxNAorICAgICAgICAgIE5vZGVJdGVyYXRvciBkb2VzIG5vdCBoYW5kbGUgZXhjZXB0aW9ucyBm
cm9tIHRoZSBmaWx0ZXIgZnVuY3Rpb24gKGFmZmVjdHMgQWNpZDMpCisgICAgICAgIC0gZml4IGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTYKKyAgICAgICAgICBOb2Rl
SXRlcmF0b3Igd2lsbCBjcmFzaCBpZiB0aGUgZmlsdGVyIGZ1bmN0aW9uIHJlbW92ZXMgdGhlIGN1
cnJlbnQgbm9kZSBmcm9tIHRoZSBkb2N1bWVudAorCisgICAgICAgIFRlc3Q6IHRyYXZlcnNhbC9l
eGNlcHRpb24tZm9yd2FyZGluZy5odG1sCisKKyAgICAgICAgVGhpcyB0dXJuZWQgaW50byBhIG5l
YXItcmV3cml0ZSBvZiBOb2RlSXRlcmF0b3IgYW5kIFRyZWVXYWxrZXIuCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGFrZUV4Y2Vw
dGlvbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlRmlsdGVyQ29uZGl0aW9uOjph
Y2NlcHROb2RlKTogQWRkZWQgYW4gb3V0IHBhcmFtZXRlciB0byByZXR1cm4KKyAgICAgICAgYSBK
YXZhU2NyaXB0IGV4Y2VwdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGVGaWx0ZXI6OmFjY2VwdE5vZGUp
OiBXcm90ZSBhIGN1c3RvbSBiaW5kaW5nIGZvciB0aGlzIHRoYXQgcmFpc2VzCisgICAgICAgIGEg
SmF2YVNjcmlwdCBleGNlcHRpb24gaWYgdGhlIG91dCBwYXJhbWV0ZXIgaXMgc2V0LgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNOb2RlSXRlcmF0b3I6Om5leHROb2RlKTogV3JvdGUgYSBjdXN0b20gYmluZGluZyBm
b3IgdGhpcyB0aGF0IHJhaXNlcworICAgICAgICBhIEphdmFTY3JpcHQgZXhjZXB0aW9uIGlmIHRo
ZSBvdXQgcGFyYW1ldGVyIGlzIHNldC4KKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUl0ZXJhdG9y
OjpwcmV2aW91c05vZGUpOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVHJlZVdh
bGtlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6OnBhcmVudE5v
ZGUpOiBXcm90ZSBhIGN1c3RvbSBiaW5kaW5nIGZvciB0aGlzIHRoYXQgcmFpc2VzCisgICAgICAg
IGEgSmF2YVNjcmlwdCBleGNlcHRpb24gaWYgdGhlIG91dCBwYXJhbWV0ZXIgaXMgc2V0LgorICAg
ICAgICAoV2ViQ29yZTo6SlNUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpKU1RyZWVXYWxrZXI6Omxhc3RDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SlNUcmVlV2Fsa2VyOjpuZXh0U2libGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SlNUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkpTVHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpKU1RyZWVXYWxrZXI6Om5leHROb2RlKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL0RPTS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok9iakNOb2RlRmlsdGVyQ29uZGl0aW9uOjph
Y2NlcHROb2RlKTogVXBkYXRlZCB0byBpbmNsdWRlIG5ldyBleGNlcHRpb24KKyAgICAgICAgb3V0
IHBhcmFtZXRlci4KKyAgICAgICAgKC1bRE9NRG9jdW1lbnQgY3JlYXRlTm9kZUl0ZXJhdG9yOndo
YXRUb1Nob3c6ZmlsdGVyOmV4cGFuZEVudGl0eVJlZmVyZW5jZXM6XSk6CisgICAgICAgIFVzZSBS
ZWZQdHIgdG8gbWFrZSBvYmplY3QgbGlmZXRpbWVzIGNsZWFyZXIuCisgICAgICAgICgtW0RPTURv
Y3VtZW50IGNyZWF0ZVRyZWVXYWxrZXI6d2hhdFRvU2hvdzpmaWx0ZXI6ZXhwYW5kRW50aXR5UmVm
ZXJlbmNlczpdKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbTogQWRkZWQgaW5jbHVkZSBvZiBOb2RlRmlsdGVyLmggZm9yCisg
ICAgICAgIEpTRG9jdW1lbnQuY3BwLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVh
dGVOb2RlSXRlcmF0b3IpOiBDaGFuZ2VkIHRvIHVzZSBQYXNzUmVmUHRyLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVRyZWVXYWxrZXIpOiBEaXR0by4KKworICAgICAgICAqIGRv
bS9Ob2RlRmlsdGVyLmg6CisgICAgICAgICogZG9tL05vZGVGaWx0ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZUZpbHRlcjo6Tm9kZUZpbHRlcik6IENoYW5nZWQgdG8gdXNlIFBhc3NSZWZQ
dHIuCisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlsdGVyOjphY2NlcHROb2RlKTogQWRkZWQgYW4g
b3V0IHBhcmFtZXRlciB0byByZXR1cm4KKyAgICAgICAgYSBKYXZhU2NyaXB0IGV4Y2VwdGlvbi4K
KyAgICAgICAgKiBkb20vTm9kZUZpbHRlci5pZGw6IEN1c3RvbSBiaW5kaW5nIGZvciBhY2NlcHRO
b2RlLgorCisgICAgICAgICogZG9tL05vZGVGaWx0ZXJDb25kaXRpb24uaDoKKyAgICAgICAgKiBk
b20vTm9kZUZpbHRlckNvbmRpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlRmlsdGVy
Q29uZGl0aW9uOjphY2NlcHROb2RlKTogQWRkZWQgYW4gb3V0IHBhcmFtZXRlciB0byByZXR1cm4K
KyAgICAgICAgYSBKYXZhU2NyaXB0IGV4Y2VwdGlvbi4KKworICAgICAgICAqIGRvbS9Ob2RlSXRl
cmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3Ip
OiBDaGFuZ2VkIHRvIHVzZSBQYXNzUmVmUHRyIG1vcmUuCisgICAgICAgIEVsaW1pbmF0ZWQgbV9k
b2MsIHVzaW5nIHRoZSByb290IG5vZGUgaW5zdGVhZCwgYW5kIHVubmVjZXNzYXJ5IGNoZWNrIGZv
cgorICAgICAgICBudWxsIC0tIHJvb3ROb2RlIG11c3QgYmUgbm9uLW51bGwgYW5kIGFsbCBub2Rl
cyBoYXZlIGEgbm9uLW51bGwgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0
b3I6On5Ob2RlSXRlcmF0b3IpOiBDaGFuZ2VkIHRvIGdldCBkb2N1bWVudCBmcm9tIHJvb3QuCisg
ICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6Om5leHROb2RlKTogUmV3cm90ZSB0byB1c2Ug
YSBSZWZQdHIgc2luY2UgdGhlCisgICAgICAgIGFjY2VwdE5vZGUgZnVuY3Rpb24gY291bGQgZG8g
YW55dGhpbmcsIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdAorICAgICAgICByZWZlcmVuY2Ug
dG8gdGhlIGN1cnJlbnQgbm9kZS4gQWxzbyBmb2xkZWQgZmluZE5leHROb2RlIGludG8gdGhpcyBm
dW5jdGlvbgorICAgICAgICBzaW5jZSBpdCdzIHRoZSBvbmx5IG9uZSB0aGF0IG5lZWRzIHRvIGNh
bGwgaXQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3I6OnByZXZpb3VzTm9kZSk6IFNh
bWUgdGhpbmcsIGJ1dCB0aGUgb3RoZXIgZGlyZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUl0ZXJhdG9yOjpkZXRhY2gpOiBDaGFuZ2VkIHRvIHVzZSB0aGUgcm9vdCBub2RlIGFzIHRoZSBp
bmRpY2F0aW9uCisgICAgICAgIHRoYXQgd2UncmUgZGV0YWNoZWQgcmF0aGVyIHRoYW4gYSBzZXBh
cmF0ZSBib29sZWFuLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0ZXJhdG9yOjpub3RpZnlCZWZv
cmVOb2RlUmVtb3ZhbCk6IFJlbW92ZWQgc29tZSB1bm5uZWVkZWQKKyAgICAgICAgY2hlY2tzLiBS
ZW1vdmVkIGluY29ycmVjdCB1c2Ugb2YgZmluZE5leHROb2RlL2ZpbmRQcmV2aW91c05vZGUgLS0g
dGhvc2UKKyAgICAgICAgZnVuY3Rpb25zIGNhbGwgYWNjZXB0Tm9kZSBhbmQgdGhlIERPTSBzdGFu
ZGFyZCBpcyBxdWl0ZSBjbGVhciB0aGF0IHRoZXNlCisgICAgICAgIGZ1bmN0aW9ucyBkbyBub3Qg
dGFrZSB0aGF0IGludG8gYWNjb3VudCwgYWxsb3dpbmcgdGhlIGN1cnJlbnQgbm9kZSB0byBiZWNv
bWUKKyAgICAgICAgb25lIHRoYXQncyBub3QgYWNjZXB0ZWQuCisKKyAgICAgICAgKiBkb20vTm9k
ZUl0ZXJhdG9yLmg6IENoYW5nZWQgY29uc3RydWN0b3IgdG8gdXNlIFBhc3NSZWZQdHIgbW9yZS4g
Q2hhbmdlZAorICAgICAgICBuZXh0Tm9kZSBhbmQgcHJldmlvdXNOb2RlIHRvIGhhdmUgYW4gb3V0
IHBhcmFtZXRlciB3aXRoIGEgSmF2YVNjcmlwdCBleGNlcHRpb24uCisgICAgICAgIFJlbW92ZWQg
aGVscGVyIGZ1bmN0aW9ucyBzZXRSZWZlcmVuY2VOb2RlLCBzZXRQb2ludGVyQmVmb3JlUmVmZXJl
bmNlTm9kZSwKKyAgICAgICAgZGV0YWNoZWQsIHNldERldGFjaGVkLCBkb2N1bWVudCwgZmluZE5l
eHROb2RlLCBhbmQgZmluZFByZXZpb3VzTm9kZS4gQWxsIHdlcmUKKyAgICAgICAgdW5uZWNlc3Nh
cnkuIFJlbW92ZWQgZGF0YSBtZW1iZXIgbV9kb2Mgd2hpY2ggd2FzIGp1c3Qgcm9vdE5vZGUoKS0+
ZG9jdW1lbnQoKS4KKworICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaWRsOiBDdXN0b20gYmlu
ZGluZyBmb3IgbmV4dE5vZGUgYW5kIHByZXZpb3VzTm9kZS4KKworICAgICAgICAqIGRvbS9UcmF2
ZXJzYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsOjpUcmF2ZXJzYWwpOiBVc2Ug
UGFzc1JlZlB0ciBtb3JlLgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsOjphY2NlcHROb2Rl
KTogQWRkZWQgb3V0IHBhcmFtZXRlciBmb3IgSmF2YVNjcmlwdCBleGNlcHRpb24uCisgICAgICAg
IEFsc28gcmVhcnJhbmdlZCB0aGUgZnVuY3Rpb24gYSBsaXR0bGUgYml0IGZvciBjbGFyaXR5Lgor
CisgICAgICAgICogZG9tL1RyYXZlcnNhbC5oOiBDaGFuZ2VkIGFjY2VwdE5vZGUgdG8gaGF2ZSBh
biBvdXQgcGFyYW1ldGVyIHdpdGggYSBKYXZhU2NyaXB0CisgICAgICAgIGV4Y2VwdGlvbiBhbmQg
bWFkZSBpdCBwcm90ZWN0ZWQsIHNpbmNlIGl0J3Mgb25seSBmb3IgdXNlIGJ5IHRoZSBkZXJpdmVk
IGNsYXNzZXMuCisKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlV2Fsa2VyOjpUcmVlV2Fsa2VyKTogVXBkYXRlZCB0byB1c2UgUGFzc1JlZlB0ci4K
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6OnNldEN1cnJlbnROb2RlKTogVXBkYXRlZCB0
byB1c2UgUGFzc1JlZlB0ciBhbmQgZGVsZXRlZAorICAgICAgICB0aGUgb3ZlcmxvYWRlZCB2ZXJz
aW9uIHNpbmNlIGl0J3Mgbm90IG5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6
OnBhcmVudE5vZGUpOiBSZXdyb3RlIHRvIHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uIGFuZCBhbHNv
CisgICAgICAgIHRvIGltcGxlbWVudCBydWxlcyBhYm91dCB3aGVuIHRvIGNoZWNrIHRoaW5ncyBs
aWtlIHdoZXRoZXIgd2UncmUgaW4gdGhlIHRyZWUuCisgICAgICAgIFRoZSBwcmV2aW91cyBmaXgg
d2hlcmUgd2UgY2FsbGVkIGlzRGVzY2VuZGFudE9mIHdhcyBub3QgZW50aXJlbHkgY29ycmVjdCwg
YmVjYXVzZQorICAgICAgICB0aGUgc3BlY2lmaWNhdGlvbiBhbGxvd3MgeW91IHRvIHdhbGsgb3V0
c2lkZSB0aGUgdHJlZSBpZiB5b3UgZ2V0IHRoZXJlIHNvbWVob3cuCisgICAgICAgIFdoYXQgaXQg
ZG9lc24ndCBhbGxvdyBpcyB3YWxraW5nIG91dHNpZGUgdGhlIHRyZWUgZnJvbSBpbnNpZGUuIFRo
ZSBuZXcKKyAgICAgICAgaW1wbGVtZW50YXRpb24gaGFuZGxlcyB0aGlzIGNvcnJlY3RseS4KKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVXYWxrZXI6Omxhc3RDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVdhbGtlcjo6cHJldmlvdXNTaWJsaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUcmVlV2Fsa2VyOjpuZXh0U2libGluZyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVdhbGtlcjo6cHJldmlvdXNOb2RlKTogRGl0dG8uIEJlY2F1c2Ugb2YgdGhlIG5lZWQgdG8gY2hl
Y2sgdGhlCisgICAgICAgIGFjY2VwdE5vZGUgZnVuY3Rpb24gb24gcGFyZW50cywgdGhpcyBjYW4n
dCB1c2UgdHJhdmVyc2VQcmV2aW91c05vZGUgKG1vcmUncyB0aGUKKyAgICAgICAgcGl0eSwgYmVj
YXVzZSBpdCdzIGEgYml0IGNvbXBsaWNhdGVkKS4KKyAgICAgICAgKFdlYkNvcmU6OlRyZWVXYWxr
ZXI6Om5leHROb2RlKTogRGl0dG8uCisKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5oOiBDaGFu
Z2VkIGNvbnN0cnVjdG9yIGFuZCBzZXRDdXJyZW50Tm9kZSB0byB1c2UgUGFzc1JlZlB0cgorICAg
ICAgICBtb3JlLiBDaGFuZ2VkIHRoZSBuYXZpZ2F0aW9uIGZ1bmN0aW9ucyB0byBoYXZlIGFuIG91
dCBwYXJhbWV0ZXIgd2l0aCBhIEphdmFTY3JpcHQKKyAgICAgICAgZXhjZXB0aW9uLiBSZW1vdmVk
IGhlbHBlciBmdW5jdGlvbnMgc2V0Q3VycmVudE5vZGUgYW5kIGFuY2VzdG9yUmVqZWN0ZWQuCisK
KyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5pZGw6IEN1c3RvbSBiaW5kaW5nIGZvciBuYXZpZ2F0
aW9uIGZ1bmN0aW9ucy4KKwogMjAwOC0wMi0wMyAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVy
c0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwCShyZXZp
c2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjksNyArMjksMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU05vZGVGaWx0
ZXJDb25kaXRpb246OkpTTm9kZUZpbHRlckNvbmRpdGlvbihLSlM6OkpTT2JqZWN0KiBmaWx0ZXIp
Cit1c2luZyBuYW1lc3BhY2UgS0pTOworCisvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCB0YWtlRXhj
ZXB0aW9uIGFzIGEgbWVtYmVyIG9mIEV4ZWNTdGF0ZT8KK3N0YXRpYyBKU1ZhbHVlKiB0YWtlRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlKiBleGNlcHRpb24gPSBleGVj
LT5leGNlcHRpb24oKTsKKyAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgIHJldHVybiBl
eGNlcHRpb247Cit9CisKK0pTTm9kZUZpbHRlckNvbmRpdGlvbjo6SlNOb2RlRmlsdGVyQ29uZGl0
aW9uKEpTT2JqZWN0KiBmaWx0ZXIpCiAgICAgOiBtX2ZpbHRlcihmaWx0ZXIpCiB7CiB9CkBAIC0z
OSwyMiArNDksMzYgQEAgdm9pZCBKU05vZGVGaWx0ZXJDb25kaXRpb246Om1hcmsoKQogICAgIG1f
ZmlsdGVyLT5tYXJrKCk7CiB9CiAKLXNob3J0IEpTTm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0
Tm9kZShOb2RlKiBmaWx0ZXJOb2RlKSBjb25zdAorc2hvcnQgSlNOb2RlRmlsdGVyQ29uZGl0aW9u
OjphY2NlcHROb2RlKE5vZGUqIGZpbHRlck5vZGUsIEpTVmFsdWUqJiBleGNlcHRpb24pIGNvbnN0
CiB7Ci0gICAgTm9kZSogbm9kZSA9IGZpbHRlck5vZGU7Ci0gICAgRnJhbWUqIGZyYW1lID0gbm9k
ZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBLSlNQcm94eSogcHJveHkgPSBmcmFtZS0+c2Ny
aXB0UHJveHkoKTsKLSAgICBpZiAocHJveHkgJiYgbV9maWx0ZXItPmltcGxlbWVudHNDYWxsKCkp
IHsKLSAgICAgICAgS0pTOjpKU0xvY2sgbG9jazsKLSAgICAgICAgS0pTOjpFeGVjU3RhdGUqIGV4
ZWMgPSBwcm94eS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKTsKLSAgICAgICAgS0pTOjpM
aXN0IGFyZ3M7Ci0gICAgICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgbm9kZSkpOwotICAgICAg
ICBLSlM6OkpTT2JqZWN0KiBvYmogPSBtX2ZpbHRlcjsKLSAgICAgICAgS0pTOjpKU1ZhbHVlKiBy
ZXN1bHQgPSBvYmotPmNhbGwoZXhlYywgb2JqLCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+dG9JbnQzMihleGVjKTsKKyAgICAvLyBGSVhNRTogSXQgbWFrZXMgbm8gc2Vuc2UgZm9yIHRo
aXMgdG8gZGVwZW5kIG9uIHRoZSBkb2N1bWVudCBiZWluZyBpbiBhIGZyYW1lIQorICAgIEZyYW1l
KiBmcmFtZSA9IGZpbHRlck5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q7CisKKyAgICBKU0xv
Y2sgbG9jazsKKworICAgIGlmICghbV9maWx0ZXItPmltcGxlbWVudHNDYWxsKCkpCisgICAgICAg
IHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOworCisgICAgRXhlY1N0YXRlKiBleGVj
ID0gZnJhbWUtPnNjcmlwdFByb3h5KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7Cisg
ICAgTGlzdCBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgZmlsdGVyTm9kZSkpOwor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBleGNlcHRpb24gPSB0YWtl
RXhjZXB0aW9uKGV4ZWMpOworICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVD
VDsKICAgICB9Ci0KLSAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsKKyAgICBK
U1ZhbHVlKiByZXN1bHQgPSBtX2ZpbHRlci0+Y2FsbChleGVjLCBtX2ZpbHRlciwgYXJncyk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGV4Y2VwdGlvbiA9IHRha2VF
eGNlcHRpb24oZXhlYyk7CisgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfUkVKRUNU
OworICAgIH0KKyAgICBpbnQgaW50UmVzdWx0ID0gcmVzdWx0LT50b0ludDMyKGV4ZWMpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBleGNlcHRpb24gPSB0YWtlRXhj
ZXB0aW9uKGV4ZWMpOworICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsK
KyAgICB9CisgICAgcmV0dXJuIGludFJlc3VsdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oCShy
ZXZpc2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAw
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTIxLDcgKzIxLDEwIEBACiAjZGVmaW5lIEpTTm9kZUZpbHRlckNvbmRpdGlvbl9oCiAK
ICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCi0jaW5jbHVkZSAia2pzX2RvbS5oIgor
CituYW1lc3BhY2UgS0pTIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zMCw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBKU05vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiB7CiAg
ICAgcHVibGljOgogICAgICAgICBKU05vZGVGaWx0ZXJDb25kaXRpb24oS0pTOjpKU09iamVjdCog
ZmlsdGVyKTsKLSAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqLCBLSlM6OkpTVmFsdWUqJiBl
eGNlcHRpb24pIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogCiAgICAgcHJv
dGVjdGVkOgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNw
cAkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1
c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDkgQEAKICNpbmNsdWRlICJKU05vZGVG
aWx0ZXJDb25kaXRpb24uaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVkZSAia2pz
X2JpbmRpbmcuaCIKKyNpbmNsdWRlICJranNfZG9tLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBLSlM7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsNiArNDEsMTUgQEAgdm9pZCBKU05vZGVG
aWx0ZXI6Om1hcmsoKQogICAgIERPTU9iamVjdDo6bWFyaygpOwogfQogCitKU1ZhbHVlKiBKU05v
ZGVGaWx0ZXI6OmFjY2VwdE5vZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQor
eworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgc2hvcnQgcmVzdWx0ID0gaW1wbCgp
LT5hY2NlcHROb2RlKHRvTm9kZShhcmdzWzBdKSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0
aW9uKQorICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICByZXR1cm4g
anNOdW1iZXIocmVzdWx0KTsKK30KKwogTm9kZUZpbHRlciogdG9Ob2RlRmlsdGVyKEtKUzo6SlNW
YWx1ZSogdmFsKQogewogICAgIGlmICghdmFsIHx8ICF2YWwtPmlzT2JqZWN0KCkpCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAkocmV2aXNpb24g
Mjk5NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2LDEyICsx
NiwxNyBAQAogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgog
ICovCisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU05vZGVJdGVyYXRvci5oIgog
CisjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVG
aWx0ZXIuaCIKICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKIAordXNpbmcgbmFtZXNwYWNlIEtK
UzsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIEpTTm9kZUl0ZXJhdG9yOjptYXJrKCkK
QEAgLTMyLDQgKzM3LDM2IEBAIHZvaWQgSlNOb2RlSXRlcmF0b3I6Om1hcmsoKQogICAgIERPTU9i
amVjdDo6bWFyaygpOwogfQogCitKU1ZhbHVlKiBKU05vZGVJdGVyYXRvcjo6bmV4dE5vZGUoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSogbm9kZSA9IGltcGwo
KS0+bmV4dE5vZGUoZWMsIGV4Y2VwdGlvbik7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IH0KKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIGV4ZWMtPnNldEV4Y2VwdGlvbihleGNl
cHRpb24pOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IHRvSlMoZXhlYywgbm9kZSk7Cit9CisKK0pTVmFsdWUqIEpTTm9kZUl0ZXJhdG9yOjpwcmV2aW91
c05vZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSogbm9k
ZSA9IGltcGwoKS0+cHJldmlvdXNOb2RlKGVjLCBleGNlcHRpb24pOworICAgIGlmIChlYykgewor
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICB9CisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBleGVjLT5zZXRF
eGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
fQorICAgIHJldHVybiB0b0pTKGV4ZWMsIG5vZGUpOworfQorCiB9CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RyZWVXYWxrZXJDdXN0b20uY3BwCShyZXZpc2lvbiAyOTk0OCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE2LDEyICsxNiwxNyBAQAogICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCisKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJKU1RyZWVXYWxrZXIuaCIKIAorI2luY2x1ZGUgIkpTTm9k
ZS5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiVHJlZVdhbGtlci5oIgogCit1c2luZyBuYW1lc3BhY2UgS0pTOworCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCiB2b2lkIEpTVHJlZVdhbGtlcjo6bWFyaygpCkBAIC0zMiw0ICszNyw4MSBA
QCB2b2lkIEpTVHJlZVdhbGtlcjo6bWFyaygpCiAgICAgRE9NT2JqZWN0OjptYXJrKCk7CiB9CiAg
ICAgCitKU1ZhbHVlKiBKU1RyZWVXYWxrZXI6OnBhcmVudE5vZGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBMaXN0JiBhcmdzKQoreworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9k
ZSogbm9kZSA9IGltcGwoKS0+cGFyZW50Tm9kZShleGNlcHRpb24pOworICAgIGlmIChleGNlcHRp
b24pIHsKKyAgICAgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBub2RlKTsK
K30KKyAgICAKK0pTVmFsdWUqIEpTVHJlZVdhbGtlcjo6Zmlyc3RDaGlsZChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IExpc3QmIGFyZ3MpCit7CisgICAgSlNWYWx1ZSogZXhjZXB0aW9uID0gMDsKKyAg
ICBOb2RlKiBub2RlID0gaW1wbCgpLT5maXJzdENoaWxkKGV4Y2VwdGlvbik7CisgICAgaWYgKGV4
Y2VwdGlvbikgeworICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pTKGV4ZWMsIG5v
ZGUpOworfQorICAgIAorSlNWYWx1ZSogSlNUcmVlV2Fsa2VyOjpsYXN0Q2hpbGQoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7
CisgICAgTm9kZSogbm9kZSA9IGltcGwoKS0+bGFzdENoaWxkKGV4Y2VwdGlvbik7CisgICAgaWYg
KGV4Y2VwdGlvbikgeworICAgICAgICBleGVjLT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pTKGV4ZWMs
IG5vZGUpOworfQorICAgIAorSlNWYWx1ZSogSlNUcmVlV2Fsa2VyOjpuZXh0U2libGluZyhFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IExpc3QmIGFyZ3MpCit7CisgICAgSlNWYWx1ZSogZXhjZXB0aW9u
ID0gMDsKKyAgICBOb2RlKiBub2RlID0gaW1wbCgpLT5uZXh0U2libGluZyhleGNlcHRpb24pOwor
ICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgZXhlYy0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlv
bik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9K
UyhleGVjLCBub2RlKTsKK30KKyAgICAKK0pTVmFsdWUqIEpTVHJlZVdhbGtlcjo6cHJldmlvdXNT
aWJsaW5nKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKK3sKKyAgICBKU1ZhbHVl
KiBleGNlcHRpb24gPSAwOworICAgIE5vZGUqIG5vZGUgPSBpbXBsKCktPnByZXZpb3VzU2libGlu
ZyhleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgZXhlYy0+c2V0RXhj
ZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0K
KyAgICByZXR1cm4gdG9KUyhleGVjLCBub2RlKTsKK30KKyAgICAKK0pTVmFsdWUqIEpTVHJlZVdh
bGtlcjo6cHJldmlvdXNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTGlzdCYgYXJncykKK3sK
KyAgICBKU1ZhbHVlKiBleGNlcHRpb24gPSAwOworICAgIE5vZGUqIG5vZGUgPSBpbXBsKCktPnBy
ZXZpb3VzTm9kZShleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgZXhl
Yy0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBub2RlKTsKK30KKyAgICAKK0pTVmFsdWUq
IEpTVHJlZVdhbGtlcjo6bmV4dE5vZGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBMaXN0JiBhcmdz
KQoreworICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDA7CisgICAgTm9kZSogbm9kZSA9IGltcGwo
KS0+bmV4dE5vZGUoZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIGV4
ZWMtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywgbm9kZSk7Cit9CisKIH0KSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL0RPTS5tbQkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IEphbWVzIEcuIFNw
ZXRoIChzcGV0aEBlbmQuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
KHNhbS53ZWluaWdAZ21haWwuY29tKQogICoKQEAgLTc0LDYgKzc0LDkgQEAKICNpbXBvcnQgIkRP
TVNWRy5oIgogI2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBLSlM7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPYmpDRXZlbnRMaXN0ZW5l
ciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsKQEAgLTY4MiwxNSArNjg1LDE2IEBAIHN0YXRpYyBO
U0FycmF5ICpraXQoY29uc3QgVmVjdG9yPEludFJlY3QKIAogQGVuZAogCi0KIC8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbgogCi1j
bGFzcyBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpOb2RlRmlsdGVy
Q29uZGl0aW9uIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgT2JqQ05vZGVGaWx0ZXJD
b25kaXRpb24gOiBwdWJsaWMgTm9kZUZpbHRlckNvbmRpdGlvbiB7CiBwdWJsaWM6CiAgICAgT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24oaWQgPERPTU5vZGVGaWx0ZXI+KTsKICAgICB2aXJ0dWFsIH5P
YmpDTm9kZUZpbHRlckNvbmRpdGlvbigpOwotICAgIHZpcnR1YWwgc2hvcnQgYWNjZXB0Tm9kZShX
ZWJDb3JlOjpOb2RlKikgY29uc3Q7CisgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUq
LCBKU1ZhbHVlKiYgZXhjZXB0aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBPYmpDTm9kZUZp
bHRlckNvbmRpdGlvbihjb25zdCBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbiYpOwpAQCAtNzExLDEz
ICs3MTUsMTQgQEAgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246On5PYmpDTm9kZUZpbHRlcgogICAg
IEhhcmRSZWxlYXNlKG1fZmlsdGVyKTsKIH0KIAotc2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRp
b246OmFjY2VwdE5vZGUoV2ViQ29yZTo6Tm9kZSogbm9kZSkgY29uc3QKK3Nob3J0IE9iakNOb2Rl
RmlsdGVyQ29uZGl0aW9uOjphY2NlcHROb2RlKE5vZGUqIG5vZGUsIEpTVmFsdWUqJikgY29uc3QK
IHsKICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpOb2RlRmlsdGVyOjpG
SUxURVJfUkVKRUNUOworICAgICAgICByZXR1cm4gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDsK
ICAgICByZXR1cm4gW21fZmlsdGVyIGFjY2VwdE5vZGU6W0RPTU5vZGUgX3dyYXBOb2RlOm5vZGVd
XTsKIH0KIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogLy8gRE9NRG9jdW1lbnQgKERPTURvY3VtZW50VHJhdmVyc2FsKQpAQCAt
NzI3LDIzICs3MzIsMjMgQEAgc2hvcnQgT2JqQ05vZGVGaWx0ZXJDb25kaXRpb246OmFjY2VwdE5v
ZAogCiAtIChET01Ob2RlSXRlcmF0b3IgKiljcmVhdGVOb2RlSXRlcmF0b3I6KERPTU5vZGUgKily
b290IHdoYXRUb1Nob3c6KHVuc2lnbmVkKXdoYXRUb1Nob3cgZmlsdGVyOihpZCA8RE9NTm9kZUZp
bHRlcj4pZmlsdGVyIGV4cGFuZEVudGl0eVJlZmVyZW5jZXM6KEJPT0wpZXhwYW5kRW50aXR5UmVm
ZXJlbmNlcwogewotICAgIFdlYkNvcmU6Ok5vZGVGaWx0ZXIqIGNwcEZpbHRlciA9IDA7CisgICAg
UmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKICAgICBpZiAoZmlsdGVyKQotICAgICAgICBj
cHBGaWx0ZXIgPSBuZXcgV2ViQ29yZTo6Tm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24oZmlsdGVyKSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
UmVmUHRyPFdlYkNvcmU6Ok5vZGVJdGVyYXRvcj4gaW1wbCA9IFtzZWxmIF9kb2N1bWVudF0tPmNy
ZWF0ZU5vZGVJdGVyYXRvcihbcm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlciwgZXhw
YW5kRW50aXR5UmVmZXJlbmNlcywgZWMpOwotICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihl
Yyk7CisgICAgICAgIGNwcEZpbHRlciA9IG5ldyBOb2RlRmlsdGVyKG5ldyBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbihmaWx0ZXIpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBSZWZQ
dHI8Tm9kZUl0ZXJhdG9yPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlTm9kZUl0ZXJh
dG9yKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLnJlbGVhc2UoKSwgZXhwYW5k
RW50aXR5UmVmZXJlbmNlcywgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiAgICAgcmV0
dXJuIFtET01Ob2RlSXRlcmF0b3IgX3dyYXBOb2RlSXRlcmF0b3I6aW1wbC5nZXQoKSBmaWx0ZXI6
ZmlsdGVyXTsKIH0KIAogLSAoRE9NVHJlZVdhbGtlciAqKWNyZWF0ZVRyZWVXYWxrZXI6KERPTU5v
ZGUgKilyb290IHdoYXRUb1Nob3c6KHVuc2lnbmVkKXdoYXRUb1Nob3cgZmlsdGVyOihpZCA8RE9N
Tm9kZUZpbHRlcj4pZmlsdGVyIGV4cGFuZEVudGl0eVJlZmVyZW5jZXM6KEJPT0wpZXhwYW5kRW50
aXR5UmVmZXJlbmNlcwogewotICAgIFdlYkNvcmU6Ok5vZGVGaWx0ZXIqIGNwcEZpbHRlciA9IDA7
CisgICAgUmVmUHRyPE5vZGVGaWx0ZXI+IGNwcEZpbHRlcjsKICAgICBpZiAoZmlsdGVyKQotICAg
ICAgICBjcHBGaWx0ZXIgPSBuZXcgV2ViQ29yZTo6Tm9kZUZpbHRlcihuZXcgT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24oZmlsdGVyKSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlRyZWVXYWxrZXI+IGltcGwgPSBbc2VsZiBfZG9jdW1lbnRd
LT5jcmVhdGVUcmVlV2Fsa2VyKFtyb290IF9ub2RlXSwgd2hhdFRvU2hvdywgY3BwRmlsdGVyLCBl
eHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBlYyk7Ci0gICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9y
KGVjKTsKKyAgICAgICAgY3BwRmlsdGVyID0gbmV3IE5vZGVGaWx0ZXIobmV3IE9iakNOb2RlRmls
dGVyQ29uZGl0aW9uKGZpbHRlcikpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFJl
ZlB0cjxUcmVlV2Fsa2VyPiBpbXBsID0gW3NlbGYgX2RvY3VtZW50XS0+Y3JlYXRlVHJlZVdhbGtl
cihbcm9vdCBfbm9kZV0sIHdoYXRUb1Nob3csIGNwcEZpbHRlci5yZWxlYXNlKCksIGV4cGFuZEVu
dGl0eVJlZmVyZW5jZXMsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogICAgIHJldHVy
biBbRE9NVHJlZVdhbGtlciBfd3JhcFRyZWVXYWxrZXI6aW1wbC5nZXQoKSBmaWx0ZXI6ZmlsdGVy
XTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCShyZXZpc2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTIwNyw2ICsyMDcsMTAgQEAgc3ViIEFkZElu
Y2x1ZGVzRm9yVHlwZQogICAgIGlmICgkdHlwZSBlcSAiQ2FudmFzR3JhZGllbnQiIG9yICR0eXBl
IGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IlBsYXRmb3Jt
U3RyaW5nLmgifSA9IDE7CiAgICAgfQorCisgICAgaWYgKCR0eXBlIGVxICJEb2N1bWVudCIpIHsK
KyAgICAgICAgJGltcGxJbmNsdWRlc3siTm9kZUZpbHRlci5oIn0gPSAxOworICAgIH0KIH0KIAog
c3ViIEFkZEluY2x1ZGVzRm9yU1ZHQW5pbWF0ZWRUeXBlCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyOTk0OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Myw3ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3
ZWJraXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTk5OSw3ICs5OTksNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBEb2N1bWVu
dDo6Y3JlYXRlUmFuZ2UoCiB9CiAKIFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6
Y3JlYXRlTm9kZUl0ZXJhdG9yKE5vZGUqIHJvb3QsIHVuc2lnbmVkIHdoYXRUb1Nob3csIAotICAg
IE5vZGVGaWx0ZXIqIGZpbHRlciwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzLCBFeGNlcHRp
b25Db2RlJiBlYykKKyAgICBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IGZpbHRlciwgYm9vbCBleHBh
bmRFbnRpdHlSZWZlcmVuY2VzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXJvb3Qp
IHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTEwMDksNyArMTAwOSw3IEBA
IFBhc3NSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXQKIH0KIAogUGFzc1JlZlB0
cjxUcmVlV2Fsa2VyPiBEb2N1bWVudDo6Y3JlYXRlVHJlZVdhbGtlcihOb2RlICpyb290LCB1bnNp
Z25lZCB3aGF0VG9TaG93LCAKLSAgICBOb2RlRmlsdGVyKiBmaWx0ZXIsIGJvb2wgZXhwYW5kRW50
aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgUGFzc1JlZlB0cjxOb2RlRmls
dGVyPiBmaWx0ZXIsIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgaWYgKCFyb290KSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmgJKHJldmlzaW9uIDI5OTQ4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkg
UHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyMSwxMCArMzIxLDEwIEBAIHB1Ymxp
YzoKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjcmVhdGVSYW5nZSgpOwogCiAgICAgUGFzc1JlZlB0
cjxOb2RlSXRlcmF0b3I+IGNyZWF0ZU5vZGVJdGVyYXRvcihOb2RlKiByb290LCB1bnNpZ25lZCB3
aGF0VG9TaG93LAotICAgICAgICBOb2RlRmlsdGVyKiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVu
Y2VzLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJv
b2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1Jl
ZlB0cjxUcmVlV2Fsa2VyPiBjcmVhdGVUcmVlV2Fsa2VyKE5vZGUqIHJvb3QsIHVuc2lnbmVkIHdo
YXRUb1Nob3csIAotICAgICAgICBOb2RlRmlsdGVyKiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVu
Y2VzLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJv
b2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gU3Bl
Y2lhbCBzdXBwb3J0IGZvciBlZGl0aW5nCiAgICAgUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0
aW9uPiBjcmVhdGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2Rl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gMjk5NDgp
CisrKyBXZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc4LDIzICs0Nzgs
MTcgQEAgTm9kZSAqTm9kZTo6Y2hpbGROb2RlKHVuc2lnbmVkIC8qaW5kZXgqLwogCiBOb2RlICpO
b2RlOjp0cmF2ZXJzZU5leHROb2RlKGNvbnN0IE5vZGUgKnN0YXlXaXRoaW4pIGNvbnN0CiB7Ci0g
ICAgaWYgKGZpcnN0Q2hpbGQoKSkgewotICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgZmly
c3RDaGlsZCgpLT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgaWYgKGZpcnN0Q2hp
bGQoKSkKICAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQoKTsKLSAgICB9CiAgICAgaWYgKHRoaXMg
PT0gc3RheVdpdGhpbikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IG5leHRTaWJsaW5nKCktPmlzRGVzY2Vu
ZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICBpZiAobmV4dFNpYmxpbmcoKSkKICAgICAgICAgcmV0
dXJuIG5leHRTaWJsaW5nKCk7Ci0gICAgfQogICAgIGNvbnN0IE5vZGUgKm4gPSB0aGlzOwogICAg
IHdoaWxlIChuICYmICFuLT5uZXh0U2libGluZygpICYmICghc3RheVdpdGhpbiB8fCBuLT5wYXJl
bnROb2RlKCkgIT0gc3RheVdpdGhpbikpCiAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7Ci0g
ICAgaWYgKG4pIHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8ICFuLT5uZXh0U2libGlu
ZygpIHx8IG4tPm5leHRTaWJsaW5nKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAg
ICBpZiAobikKICAgICAgICAgcmV0dXJuIG4tPm5leHRTaWJsaW5nKCk7Ci0gICAgfQogICAgIHJl
dHVybiAwOwogfQogCkBAIC01MDIsMTcgKzQ5NiwxMyBAQCBOb2RlICpOb2RlOjp0cmF2ZXJzZU5l
eHRTaWJsaW5nKGNvbnN0IE5vCiB7CiAgICAgaWYgKHRoaXMgPT0gc3RheVdpdGhpbikKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgQVNTRVJUKCFz
dGF5V2l0aGluIHx8IG5leHRTaWJsaW5nKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsK
KyAgICBpZiAobmV4dFNpYmxpbmcoKSkKICAgICAgICAgcmV0dXJuIG5leHRTaWJsaW5nKCk7Ci0g
ICAgfQogICAgIGNvbnN0IE5vZGUgKm4gPSB0aGlzOwogICAgIHdoaWxlIChuICYmICFuLT5uZXh0
U2libGluZygpICYmICghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnROb2RlKCkgIT0gc3RheVdpdGhp
bikpCiAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKG4pIHsKLSAgICAgICAg
QVNTRVJUKCFzdGF5V2l0aGluIHx8ICFuLT5uZXh0U2libGluZygpIHx8IG4tPm5leHRTaWJsaW5n
KCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICBpZiAobikKICAgICAgICAgcmV0
dXJuIG4tPm5leHRTaWJsaW5nKCk7Ci0gICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC01MzEs
MjMgKzUyMSwzMSBAQCBOb2RlICpOb2RlOjp0cmF2ZXJzZVByZXZpb3VzTm9kZShjb25zdCBOCiAK
IE5vZGUgKk5vZGU6OnRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKGNvbnN0IE5vZGUgKnN0
YXlXaXRoaW4pIGNvbnN0CiB7Ci0gICAgaWYgKGxhc3RDaGlsZCgpKSB7Ci0gICAgICAgIEFTU0VS
VCghc3RheVdpdGhpbiB8fCBsYXN0Q2hpbGQoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikp
OworICAgIGlmIChsYXN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuIGxhc3RDaGlsZCgpOwotICAg
IH0KICAgICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQogICAgICAgICByZXR1cm4gMDsKLSAgICBp
ZiAocHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IHBy
ZXZpb3VzU2libGluZygpLT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgaWYgKHBy
ZXZpb3VzU2libGluZygpKQorICAgICAgICByZXR1cm4gcHJldmlvdXNTaWJsaW5nKCk7CisgICAg
Y29uc3QgTm9kZSAqbiA9IHRoaXM7CisgICAgd2hpbGUgKG4gJiYgIW4tPnByZXZpb3VzU2libGlu
ZygpICYmICghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnROb2RlKCkgIT0gc3RheVdpdGhpbikpCisg
ICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7CisgICAgaWYgKG4pCisgICAgICAgIHJldHVybiBu
LT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICByZXR1cm4gMDsKK30KKworTm9kZSogTm9kZTo6dHJh
dmVyc2VQcmV2aW91c1NpYmxpbmdQb3N0T3JkZXIoY29uc3QgTm9kZSogc3RheVdpdGhpbikgY29u
c3QKK3sKKyAgICBpZiAodGhpcyA9PSBzdGF5V2l0aGluKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBpZiAocHJldmlvdXNTaWJsaW5nKCkpCiAgICAgICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmco
KTsKLSAgICB9CiAgICAgY29uc3QgTm9kZSAqbiA9IHRoaXM7CiAgICAgd2hpbGUgKG4gJiYgIW4t
PnByZXZpb3VzU2libGluZygpICYmICghc3RheVdpdGhpbiB8fCBuLT5wYXJlbnROb2RlKCkgIT0g
c3RheVdpdGhpbikpCiAgICAgICAgIG4gPSBuLT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKG4pIHsK
LSAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8ICFuLT5wcmV2aW91c1NpYmxpbmcoKSB8fCBu
LT5wcmV2aW91c1NpYmxpbmcoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdpdGhpbikpOworICAgIGlm
IChuKQogICAgICAgICByZXR1cm4gbi0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgfQogICAgIHJl
dHVybiAwOwogfQogCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvZG9tL05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzI4LDYgKzMyOCw3IEBAIHB1YmxpYzoKIAogICAgIC8qIExpa2Ug
dHJhdmVyc2VQcmV2aW91c05vZGUsIGJ1dCB2aXNpdHMgbm9kZXMgYmVmb3JlIHRoZWlyIGNoaWxk
cmVuLiAqLwogICAgIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNOb2RlUG9zdE9yZGVyKGNvbnN0IE5v
ZGUgKnN0YXlXaXRoaW4gPSAwKSBjb25zdDsKKyAgICBOb2RlKiB0cmF2ZXJzZVByZXZpb3VzU2li
bGluZ1Bvc3RPcmRlcihjb25zdCBOb2RlICpzdGF5V2l0aGluID0gMCkgY29uc3Q7CiAKICAgICAv
KioKICAgICAgKiBGaW5kcyBwcmV2aW91cyBvciBuZXh0IGVkaXRhYmxlIGxlYWYgbm9kZS4KSW5k
ZXg6IFdlYkNvcmUvZG9tL05vZGVGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L05vZGVGaWx0ZXIuY3BwCShyZXZpc2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvZG9tL05vZGVGaWx0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDkgQEAKLS8qKgotICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKKy8qCiAgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdo
dCAoQykgMjAwMCBGcmVkZXJpayBIb2xsamVuIChmcmVkZXJpay5ob2xsamVuQGhpZy5ubykKICAq
IENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogQ29weXJp
Z2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQotICogQ29w
eXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yNywxNyArMjUsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJO
b2RlRmlsdGVyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBLSlM7
CiAKLU5vZGVGaWx0ZXI6Ok5vZGVGaWx0ZXIoTm9kZUZpbHRlckNvbmRpdGlvbiogY29uZGl0aW9u
KQotICAgIDogbV9jb25kaXRpb24oY29uZGl0aW9uKQotewotfQorbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zaG9ydCBOb2RlRmlsdGVyOjphY2NlcHROb2RlKE5vZGUqIG5vZGUpIGNvbnN0CitzaG9y
dCBOb2RlRmlsdGVyOjphY2NlcHROb2RlKE5vZGUqIG5vZGUsIEpTVmFsdWUqJiBleGNlcHRpb24p
IGNvbnN0CiB7CiAgICAgLy8gY2FzdCB0byBzaG9ydCBzaWxlbmNlcyAiZW51bWVyYWwgYW5kIG5v
bi1lbnVtZXJhbCB0eXBlcyBpbiByZXR1cm4iIHdhcm5pbmcKLSAgICByZXR1cm4gbV9jb25kaXRp
b24gPyBtX2NvbmRpdGlvbi0+YWNjZXB0Tm9kZShub2RlKSA6IHN0YXRpY19jYXN0PHNob3J0PihG
SUxURVJfQUNDRVBUKTsKKyAgICByZXR1cm4gbV9jb25kaXRpb24gPyBtX2NvbmRpdGlvbi0+YWNj
ZXB0Tm9kZShub2RlLCBleGNlcHRpb24pIDogc3RhdGljX2Nhc3Q8c2hvcnQ+KEZJTFRFUl9BQ0NF
UFQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2Rl
RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUZpbHRlci5oCShyZXZpc2lv
biAyOTk0OCkKKysrIFdlYkNvcmUvZG9tL05vZGVGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMSArMSw5IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1l
bnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAwIEZyZWRlcmlrIEhvbGxqZW4gKGZy
ZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQogICogQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2Ft
LndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI4LDYgKzI2LDcgQEAKICNkZWZpbmUg
Tm9kZUZpbHRlcl9oCiAKICNpbmNsdWRlICJOb2RlRmlsdGVyQ29uZGl0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTY2LDEwICs2NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICBTSE9XX05PVEFUSU9OICAgICAgICAgICAgICAgICAgPSAweDAwMDAwODAwCiAgICAg
ICAgIH07CiAKLSAgICAgICAgTm9kZUZpbHRlcihOb2RlRmlsdGVyQ29uZGl0aW9uKik7Ci0gICAg
ICAgIHNob3J0IGFjY2VwdE5vZGUoTm9kZSopIGNvbnN0OworICAgICAgICBOb2RlRmlsdGVyKFBh
c3NSZWZQdHI8Tm9kZUZpbHRlckNvbmRpdGlvbj4gY29uZGl0aW9uKSA6IG1fY29uZGl0aW9uKGNv
bmRpdGlvbikgeyB9CisgICAgICAgIHNob3J0IGFjY2VwdE5vZGUoTm9kZSosIEtKUzo6SlNWYWx1
ZSomIGV4Y2VwdGlvbikgY29uc3Q7CiAgICAgICAgIHZvaWQgbWFyaygpIHsgbV9jb25kaXRpb24t
Pm1hcmsoKTsgfTsKIAorICAgICAgICAvLyBGb3Igbm9uLUpTIGJpbmRpbmdzLiBTaWxlbnRseSBp
Z25vcmVzIHRoZSBKYXZhU2NyaXB0IGV4Y2VwdGlvbiBpZiBhbnkuCisgICAgICAgIHNob3J0IGFj
Y2VwdE5vZGUoTm9kZSogbm9kZSkgY29uc3QgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0
dXJuIGFjY2VwdE5vZGUobm9kZSwgZXhjZXB0aW9uKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgUmVmUHRyPE5vZGVGaWx0ZXJDb25kaXRpb24+IG1fY29uZGl0aW9uOwogICAgIH07CkluZGV4
OiBXZWJDb3JlL2RvbS9Ob2RlRmlsdGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9O
b2RlRmlsdGVyLmlkbAkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3JlL2RvbS9Ob2RlRmlsdGVy
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC00Myw3ICs0Myw3IEBAIG1vZHVsZSB0cmF2ZXJzYWwgewogICAgICAg
ICBjb25zdCB1bnNpZ25lZCBsb25nICAgICAgIFNIT1dfRE9DVU1FTlRfRlJBR01FTlQgICAgICAg
ICA9IDB4MDAwMDA0MDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgICAgICAgU0hPV19O
T1RBVElPTiAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDgwMDsKIAotICAgICAgICBzaG9ydCBh
Y2NlcHROb2RlKGluIE5vZGUgbik7CisgICAgICAgIFtDdXN0b21dIHNob3J0IGFjY2VwdE5vZGUo
aW4gTm9kZSBuKTsKIAogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25k
aXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24u
Y3BwCShyZXZpc2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDkgQEAKLS8qKgotICogVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKKy8qCiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAo
QykgMjAwMCBGcmVkZXJpayBIb2xsamVuIChmcmVkZXJpay5ob2xsamVuQGhpZy5ubykKICAqIENv
cHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogQ29weXJpZ2h0
IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQotICogQ29weXJp
Z2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yOSw5ICsyNywxMSBAQAogCiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogCit1c2luZyBu
YW1lc3BhY2UgS0pTOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXNob3J0IE5vZGVGaWx0ZXJD
b25kaXRpb246OmFjY2VwdE5vZGUoTm9kZSopIGNvbnN0CitzaG9ydCBOb2RlRmlsdGVyQ29uZGl0
aW9uOjphY2NlcHROb2RlKE5vZGUqLCBKU1ZhbHVlKiYpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE5v
ZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ7CiB9CkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlRmlsdGVy
Q29uZGl0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZUZpbHRlckNvbmRpdGlv
bi5oCShyZXZpc2lvbiAyOTk0OCkKKysrIFdlYkNvcmUvZG9tL05vZGVGaWx0ZXJDb25kaXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACiAvKgotICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKICAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDAw
IEZyZWRlcmlrIEhvbGxqZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5vKQogICogQ29weXJpZ2h0
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI5
LDYgKzI3LDEwIEBACiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCituYW1lc3BhY2Ug
S0pTIHsKKyAgICBjbGFzcyBKU1ZhbHVlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICBjbGFzcyBOb2RlOwpAQCAtMzYsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgTm9kZUZpbHRlckNvbmRpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPE5vZGVGaWx0ZXJD
b25kaXRpb24+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk5vZGVGaWx0ZXJDb25k
aXRpb24oKSB7IH0KLSAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqLCBLSlM6OkpTVmFsdWUq
JiBleGNlcHRpb24pIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpIHsgfQogICAg
IH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3Jl
L2RvbS9Ob2RlSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICsxLDkgQEAKLS8q
KgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RF
LgotICoKKy8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBGcmVkZXJpayBIb2xsamVuIChmcmVkZXJpay5ob2xs
amVuQGhpZy5ubykKICAqIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3Qu
Y29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21h
aWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zMSwxNDggKzI5LDE5OCBAQAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBL
SlM7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3Io
Tm9kZSogcm9vdE5vZGUsIHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRl
cj4gZmlsdGVyLCBib29sIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpCitOb2RlSXRlcmF0b3I6Ok5v
ZGVQb2ludGVyOjpOb2RlUG9pbnRlcigpCit7Cit9CisKK05vZGVJdGVyYXRvcjo6Tm9kZVBvaW50
ZXI6Ok5vZGVQb2ludGVyKFBhc3NSZWZQdHI8Tm9kZT4gbiwgYm9vbCBiKQorICAgIDogbm9kZShu
KQorICAgICwgaXNQb2ludGVyQmVmb3JlTm9kZShiKQoreworfQorCit2b2lkIE5vZGVJdGVyYXRv
cjo6Tm9kZVBvaW50ZXI6OmNsZWFyKCkKK3sKKyAgICBub2RlLmNsZWFyKCk7Cit9CisKK2Jvb2wg
Tm9kZUl0ZXJhdG9yOjpOb2RlUG9pbnRlcjo6bW92ZVRvTmV4dChOb2RlKiByb290KQoreworICAg
IGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChpc1BvaW50ZXJCZWZv
cmVOb2RlKSB7CisgICAgICAgIGlzUG9pbnRlckJlZm9yZU5vZGUgPSBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJv
b3QpOworICAgIHJldHVybiBub2RlOworfQorCitib29sIE5vZGVJdGVyYXRvcjo6Tm9kZVBvaW50
ZXI6Om1vdmVUb1ByZXZpb3VzKE5vZGUqIHJvb3QpCit7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFpc1BvaW50ZXJCZWZvcmVOb2RlKSB7CisgICAgICAg
IGlzUG9pbnRlckJlZm9yZU5vZGUgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgbm9kZSA9IG5vZGUtPnRyYXZlcnNlUHJldmlvdXNOb2RlKHJvb3QpOworICAgIHJldHVy
biBub2RlOworfQorCitOb2RlSXRlcmF0b3I6Ok5vZGVJdGVyYXRvcihQYXNzUmVmUHRyPE5vZGU+
IHJvb3ROb2RlLCB1bnNpZ25lZCB3aGF0VG9TaG93LCBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+IGZp
bHRlciwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKQogICAgIDogVHJhdmVyc2FsKHJvb3RO
b2RlLCB3aGF0VG9TaG93LCBmaWx0ZXIsIGV4cGFuZEVudGl0eVJlZmVyZW5jZXMpCi0gICAgLCBt
X2JlZm9yZVJlZmVyZW5jZU5vZGUodHJ1ZSkKKyAgICAsIG1fcmVmZXJlbmNlTm9kZShyb290KCks
IHRydWUpCiAgICAgLCBtX2RldGFjaGVkKGZhbHNlKQotICAgICwgbV9kb2Mocm9vdE5vZGUgPyBy
b290Tm9kZS0+ZG9jdW1lbnQoKSA6IDApCiB7Ci0gICAgaWYgKGRvY3VtZW50KCkpCi0gICAgICAg
IGRvY3VtZW50KCktPmF0dGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKKyAgICByb290KCktPmRvY3Vt
ZW50KCktPmF0dGFjaE5vZGVJdGVyYXRvcih0aGlzKTsKIH0KIAogTm9kZUl0ZXJhdG9yOjp+Tm9k
ZUl0ZXJhdG9yKCkKIHsKLSAgICBpZiAoZG9jdW1lbnQoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+
ZGV0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOworICAgIHJvb3QoKS0+ZG9jdW1lbnQoKS0+ZGV0YWNo
Tm9kZUl0ZXJhdG9yKHRoaXMpOwogfQogCi1Ob2RlKiBOb2RlSXRlcmF0b3I6OmZpbmROZXh0Tm9k
ZShOb2RlKiBub2RlKSBjb25zdAorTm9kZSogTm9kZUl0ZXJhdG9yOjpuZXh0Tm9kZShFeGNlcHRp
b25Db2RlJiBlYywgSlNWYWx1ZSomIGV4Y2VwdGlvbikKIHsKLSAgICB3aGlsZSAoKG5vZGUgPSBu
b2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QoKSkpKSB7CisgICAgaWYgKG1fZGV0YWNoZWQpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgTm9kZSogcmVzdWx0ID0gMDsKKworICAgIG1fY2FuZGlkYXRlTm9kZSA9IG1fcmVm
ZXJlbmNlTm9kZTsKKyAgICB3aGlsZSAobV9jYW5kaWRhdGVOb2RlLm1vdmVUb05leHQocm9vdCgp
KSkgewogICAgICAgICAvLyBOb2RlSXRlcmF0b3JzIHRyZWF0IHRoZSBET00gdHJlZSBhcyBhIGZs
YXQgbGlzdCBvZiBub2Rlcy4KICAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMsIEZJTFRFUl9SRUpF
Q1QgZG9lcyBub3QgcGFzcyBvdmVyIGRlc2NlbmRhbnRzCiAgICAgICAgIC8vIG9mIHRoZSByZWpl
Y3RlZCBub2RlLiBIZW5jZSwgRklMVEVSX1JFSkVDVCBpcyB0aGUgc2FtZSBhcyBGSUxURVJfU0tJ
UC4KLSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FD
Q0VQVCkKKyAgICAgICAgZXhjZXB0aW9uID0gMDsKKyAgICAgICAgYm9vbCBub2RlV2FzQWNjZXB0
ZWQgPSBhY2NlcHROb2RlKG1fY2FuZGlkYXRlTm9kZS5ub2RlLmdldCgpLCBleGNlcHRpb24pID09
IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQ7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGVXYXNBY2NlcHRlZCkgeworICAgICAgICAg
ICAgbV9yZWZlcmVuY2VOb2RlID0gbV9jYW5kaWRhdGVOb2RlOworICAgICAgICAgICAgcmVzdWx0
ID0gbV9yZWZlcmVuY2VOb2RlLm5vZGUuZ2V0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgIH0KLSAgICByZXR1cm4gbm9kZTsKKworICAgIG1fY2FuZGlkYXRlTm9kZS5jbGVh
cigpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLU5vZGUqIE5vZGVJdGVyYXRvcjo6bmV4dE5v
ZGUoRXhjZXB0aW9uQ29kZSYgZWMpCitOb2RlKiBOb2RlSXRlcmF0b3I6OnByZXZpb3VzTm9kZShF
eGNlcHRpb25Db2RlJiBlYywgSlNWYWx1ZSomIGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoZGV0YWNo
ZWQoKSkgeworICAgIGlmIChtX2RldGFjaGVkKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIE5vZGUqIG5vZGUgPSByZWZl
cmVuY2VOb2RlKCkgPyByZWZlcmVuY2VOb2RlKCkgOiByb290KCk7Ci0gICAgaWYgKCFwb2ludGVy
QmVmb3JlUmVmZXJlbmNlTm9kZSgpIHx8IGFjY2VwdE5vZGUobm9kZSkgIT0gTm9kZUZpbHRlcjo6
RklMVEVSX0FDQ0VQVCkKLSAgICAgICAgbm9kZSA9IGZpbmROZXh0Tm9kZShub2RlKTsKLSAgICBp
ZiAobm9kZSkKLSAgICAgICAgc2V0UmVmZXJlbmNlTm9kZShub2RlKTsKLSAgICBzZXRQb2ludGVy
QmVmb3JlUmVmZXJlbmNlTm9kZShmYWxzZSk7Ci0gICAgcmV0dXJuIG5vZGU7Ci19CisgICAgTm9k
ZSogcmVzdWx0ID0gMDsKIAotTm9kZSogTm9kZUl0ZXJhdG9yOjpmaW5kUHJldmlvdXNOb2RlKE5v
ZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgd2hpbGUgKChub2RlID0gbm9kZS0+dHJhdmVyc2VQcmV2
aW91c05vZGUocm9vdCgpKSkpIHsKKyAgICBtX2NhbmRpZGF0ZU5vZGUgPSBtX3JlZmVyZW5jZU5v
ZGU7CisgICAgd2hpbGUgKG1fY2FuZGlkYXRlTm9kZS5tb3ZlVG9QcmV2aW91cyhyb290KCkpKSB7
CiAgICAgICAgIC8vIE5vZGVJdGVyYXRvcnMgdHJlYXQgdGhlIERPTSB0cmVlIGFzIGEgZmxhdCBs
aXN0IG9mIG5vZGVzLgogICAgICAgICAvLyBJbiBvdGhlciB3b3JkcywgRklMVEVSX1JFSkVDVCBk
b2VzIG5vdCBwYXNzIG92ZXIgZGVzY2VuZGFudHMKICAgICAgICAgLy8gb2YgdGhlIHJlamVjdGVk
IG5vZGUuIEhlbmNlLCBGSUxURVJfUkVKRUNUIGlzIHRoZSBzYW1lIGFzIEZJTFRFUl9TS0lQLgot
ICAgICAgICBpZiAoYWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBU
KQorICAgICAgICBleGNlcHRpb24gPSAwOworICAgICAgICBib29sIG5vZGVXYXNBY2NlcHRlZCA9
IGFjY2VwdE5vZGUobV9jYW5kaWRhdGVOb2RlLm5vZGUuZ2V0KCksIGV4Y2VwdGlvbikgPT0gTm9k
ZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBpZiAobm9kZVdhc0FjY2VwdGVkKSB7CisgICAgICAgICAgICBt
X3JlZmVyZW5jZU5vZGUgPSBtX2NhbmRpZGF0ZU5vZGU7CisgICAgICAgICAgICByZXN1bHQgPSBt
X3JlZmVyZW5jZU5vZGUubm9kZS5nZXQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgfQotICAgIHJldHVybiBub2RlOwotfQogCi1Ob2RlKiBOb2RlSXRlcmF0b3I6OnByZXZp
b3VzTm9kZShFeGNlcHRpb25Db2RlJikKLXsKLSAgICBOb2RlKiBub2RlID0gcmVmZXJlbmNlTm9k
ZSgpID8gcmVmZXJlbmNlTm9kZSgpIDogcm9vdCgpOwotICAgIGlmIChwb2ludGVyQmVmb3JlUmVm
ZXJlbmNlTm9kZSgpIHx8IGFjY2VwdE5vZGUobm9kZSkgIT0gTm9kZUZpbHRlcjo6RklMVEVSX0FD
Q0VQVCkKLSAgICAgICAgbm9kZSA9IGZpbmRQcmV2aW91c05vZGUobm9kZSk7Ci0gICAgaWYgKG5v
ZGUpCi0gICAgICAgIHNldFJlZmVyZW5jZU5vZGUobm9kZSk7Ci0gICAgc2V0UG9pbnRlckJlZm9y
ZVJlZmVyZW5jZU5vZGUoKTsKLSAgICByZXR1cm4gbm9kZTsKKyAgICBtX2NhbmRpZGF0ZU5vZGUu
Y2xlYXIoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIE5vZGVJdGVyYXRvcjo6ZGV0
YWNoKCkKIHsKLSAgICBpZiAoIWRldGFjaGVkKCkgJiYgZG9jdW1lbnQoKSkKLSAgICAgICAgZG9j
dW1lbnQoKS0+ZGV0YWNoTm9kZUl0ZXJhdG9yKHRoaXMpOwotICAgIHNldERldGFjaGVkKCk7Cisg
ICAgcm9vdCgpLT5kb2N1bWVudCgpLT5kZXRhY2hOb2RlSXRlcmF0b3IodGhpcyk7CisgICAgbV9k
ZXRhY2hlZCA9IHRydWU7CisgICAgbV9yZWZlcmVuY2VOb2RlLm5vZGUuY2xlYXIoKTsKIH0KIAot
dm9pZCBOb2RlSXRlcmF0b3I6OnNldFJlZmVyZW5jZU5vZGUoTm9kZSogbm9kZSkKK3ZvaWQgTm9k
ZUl0ZXJhdG9yOjpub3RpZnlCZWZvcmVOb2RlUmVtb3ZhbChOb2RlKiByZW1vdmVkTm9kZSkKIHsK
LSAgICBtX3JlZmVyZW5jZU5vZGUgPSBub2RlOworICAgIHVwZGF0ZUZvck5vZGVSZW1vdmFsKHJl
bW92ZWROb2RlLCBtX3JlZmVyZW5jZU5vZGUpOworICAgIC8vdXBkYXRlRm9yTm9kZVJlbW92YWwo
cmVtb3ZlZE5vZGUsIG1fY2FuZGlkYXRlTm9kZSk7CiB9CiAKLXZvaWQgTm9kZUl0ZXJhdG9yOjpu
b3RpZnlCZWZvcmVOb2RlUmVtb3ZhbChOb2RlKiByZW1vdmVkTm9kZSkKK3ZvaWQgTm9kZUl0ZXJh
dG9yOjp1cGRhdGVGb3JOb2RlUmVtb3ZhbChOb2RlKiByZW1vdmVkTm9kZSwgTm9kZVBvaW50ZXIm
IHJlZmVyZW5jZU5vZGUpIGNvbnN0CiB7CisgICAgQVNTRVJUKCFtX2RldGFjaGVkKTsKKyAgICBB
U1NFUlQocmVtb3ZlZE5vZGUpOworICAgIEFTU0VSVChyb290KCktPmRvY3VtZW50KCkgPT0gcmVt
b3ZlZE5vZGUtPmRvY3VtZW50KCkpOworCiAgICAgLy8gSXRlcmF0b3IgaXMgbm90IGFmZmVjdGVk
IGlmIHRoZSByZW1vdmVkIG5vZGUgaXMgdGhlIHJlZmVyZW5jZSBub2RlIGFuZCBpcyB0aGUgcm9v
dC4KICAgICAvLyBvciBpZiByZW1vdmVkIG5vZGUgaXMgbm90IHRoZSByZWZlcmVuY2Ugbm9kZSwg
b3IgdGhlIGFuY2VzdG9yIG9mIHRoZSByZWZlcmVuY2Ugbm9kZS4KLSAgICBpZiAoIXJlbW92ZWRO
b2RlIHx8IHJlbW92ZWROb2RlID09IHJvb3QoKSB8fCAhcmVtb3ZlZE5vZGUtPmlzRGVzY2VuZGFu
dE9mKHJvb3QoKSkpCisgICAgaWYgKCFyZW1vdmVkTm9kZS0+aXNEZXNjZW5kYW50T2Yocm9vdCgp
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5vZGUgPSBy
ZW1vdmVkTm9kZSA9PSByZWZlcmVuY2VOb2RlKCk7Ci0gICAgYm9vbCB3aWxsUmVtb3ZlUmVmZXJl
bmNlTm9kZUFuY2VzdG9yID0gcmVmZXJlbmNlTm9kZSgpICYmIHJlZmVyZW5jZU5vZGUoKS0+aXNE
ZXNjZW5kYW50T2YocmVtb3ZlZE5vZGUpOworICAgIGJvb2wgd2lsbFJlbW92ZVJlZmVyZW5jZU5v
ZGUgPSByZW1vdmVkTm9kZSA9PSByZWZlcmVuY2VOb2RlLm5vZGU7CisgICAgYm9vbCB3aWxsUmVt
b3ZlUmVmZXJlbmNlTm9kZUFuY2VzdG9yID0gcmVmZXJlbmNlTm9kZS5ub2RlICYmIHJlZmVyZW5j
ZU5vZGUubm9kZS0+aXNEZXNjZW5kYW50T2YocmVtb3ZlZE5vZGUpOwogICAgIGlmICghd2lsbFJl
bW92ZVJlZmVyZW5jZU5vZGUgJiYgIXdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChwb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZSgpKSB7
Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBmaW5kTmV4dE5vZGUocmVtb3ZlZE5vZGUpOworICAgIGlm
IChyZWZlcmVuY2VOb2RlLmlzUG9pbnRlckJlZm9yZU5vZGUpIHsKKyAgICAgICAgTm9kZSogbm9k
ZSA9IHJlbW92ZWROb2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3QoKSk7CiAgICAgICAgIGlmIChu
b2RlKSB7CiAgICAgICAgICAgICAvLyBNb3ZlIG91dCBmcm9tIHVuZGVyIHRoZSBub2RlIGJlaW5n
IHJlbW92ZWQgaWYgdGhlIHJlZmVyZW5jZSBub2RlIGlzCiAgICAgICAgICAgICAvLyBhIGRlc2Nl
bmRhbnQgb2YgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZC4KICAgICAgICAgICAgIGlmICh3aWxsUmVt
b3ZlUmVmZXJlbmNlTm9kZUFuY2VzdG9yKSB7CiAgICAgICAgICAgICAgICAgd2hpbGUgKG5vZGUg
JiYgbm9kZS0+aXNEZXNjZW5kYW50T2YocmVtb3ZlZE5vZGUpKQotICAgICAgICAgICAgICAgICAg
ICBub2RlID0gZmluZE5leHROb2RlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBub2RlID0g
bm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKG5vZGUpCi0gICAgICAgICAgICAgICAgc2V0UmVmZXJlbmNlTm9kZShub2RlKTsKKyAg
ICAgICAgICAgICAgICByZWZlcmVuY2VOb2RlLm5vZGUgPSBub2RlOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgbm9kZSA9IGZpbmRQcmV2aW91c05vZGUocmVtb3ZlZE5vZGUpOworICAg
ICAgICAgICAgbm9kZSA9IHJlbW92ZWROb2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZShyb290KCkp
OwogICAgICAgICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgICAgICAvLyBNb3ZlIG91dCBm
cm9tIHVuZGVyIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQgaWYgdGhlIHJlZmVyZW5jZSBub2RlIGlz
CiAgICAgICAgICAgICAgICAgLy8gYSBkZXNjZW5kYW50IG9mIHRoZSBub2RlIGJlaW5nIHJlbW92
ZWQuCiAgICAgICAgICAgICAgICAgaWYgKHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3Ip
IHsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS0+aXNEZXNjZW5kYW50
T2YocmVtb3ZlZE5vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGZpbmRQcmV2
aW91c05vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+dHJh
dmVyc2VQcmV2aW91c05vZGUocm9vdCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZpbmcgbGFzdCBu
b2RlLgogICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIG1vdmUgdGhlIHBvaW50ZXIgYWZ0
ZXIgdGhlIG5vZGUgcHJlY2VkaW5nIHRoZSAKICAgICAgICAgICAgICAgICAgICAgLy8gbmV3IHJl
ZmVyZW5jZSBub2RlLgotICAgICAgICAgICAgICAgICAgICBzZXRSZWZlcmVuY2VOb2RlKG5vZGUp
OwotICAgICAgICAgICAgICAgICAgICBzZXRQb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZShmYWxz
ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUubm9kZSA9IG5vZGU7CisgICAg
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZU5vZGUuaXNQb2ludGVyQmVmb3JlTm9kZSA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBmaW5kUHJldmlvdXNOb2RlKHJlbW92ZWROb2RlKTsK
KyAgICAgICAgTm9kZSogbm9kZSA9IHJlbW92ZWROb2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZShy
b290KCkpOwogICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgLy8gTW92ZSBvdXQgZnJv
bSB1bmRlciB0aGUgbm9kZSBiZWluZyByZW1vdmVkIGlmIHRoZSByZWZlcmVuY2Ugbm9kZSBpcwog
ICAgICAgICAgICAgLy8gYSBkZXNjZW5kYW50IG9mIHRoZSBub2RlIGJlaW5nIHJlbW92ZWQuCiAg
ICAgICAgICAgICBpZiAod2lsbFJlbW92ZVJlZmVyZW5jZU5vZGVBbmNlc3RvcikgewogICAgICAg
ICAgICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUtPmlzRGVzY2VuZGFudE9mKHJlbW92ZWROb2Rl
KSkKLSAgICAgICAgICAgICAgICAgICAgbm9kZSA9IGZpbmRQcmV2aW91c05vZGUobm9kZSk7Cisg
ICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZShyb290
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICAg
ICAgc2V0UmVmZXJlbmNlTm9kZShub2RlKTsKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VOb2Rl
Lm5vZGUgPSBub2RlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbm9kZSA9IGZpbmRO
ZXh0Tm9kZShyZW1vdmVkTm9kZSk7CisgICAgICAgICAgICBub2RlID0gcmVtb3ZlZE5vZGUtPnRy
YXZlcnNlTmV4dE5vZGUocm9vdCgpKTsKICAgICAgICAgICAgIC8vIE1vdmUgb3V0IGZyb20gdW5k
ZXIgdGhlIG5vZGUgYmVpbmcgcmVtb3ZlZCBpZiB0aGUgcmVmZXJlbmNlIG5vZGUgaXMKICAgICAg
ICAgICAgIC8vIGEgZGVzY2VuZGFudCBvZiB0aGUgbm9kZSBiZWluZyByZW1vdmVkLgogICAgICAg
ICAgICAgaWYgKHdpbGxSZW1vdmVSZWZlcmVuY2VOb2RlQW5jZXN0b3IpIHsKICAgICAgICAgICAg
ICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5pc0Rlc2NlbmRhbnRPZihyZW1vdmVkTm9kZSkpCi0g
ICAgICAgICAgICAgICAgICAgIG5vZGUgPSBmaW5kUHJldmlvdXNOb2RlKG5vZGUpOworICAgICAg
ICAgICAgICAgICAgICBub2RlID0gbm9kZS0+dHJhdmVyc2VQcmV2aW91c05vZGUocm9vdCgpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgICAgIHNl
dFJlZmVyZW5jZU5vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgcmVmZXJlbmNlTm9kZS5ub2Rl
ID0gbm9kZTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvZG9tL05vZGVJdGVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCShyZXZpc2lv
biAyOTk0OCkKKysrIFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDExICsxLDkgQEAKIC8qCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxl
bWVudGF0aW9uIGZvciBLREUuCi0gKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDAgRnJlZGVyaWsgSG9sbGplbiAo
ZnJlZGVyaWsuaG9sbGplbkBoaWcubm8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChz
YW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRl
ciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsNDUgKzI2LDQ3IEBACiAjZGVm
aW5lIE5vZGVJdGVyYXRvcl9oCiAKICNpbmNsdWRlICJUcmF2ZXJzYWwuaCIKKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBEb2N1
bWVudDsKLQogICAgIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKICAgICBjbGFzcyBOb2Rl
SXRlcmF0b3IgOiBwdWJsaWMgVHJhdmVyc2FsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vZGVJ
dGVyYXRvcihOb2RlKiwgdW5zaWduZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVy
PiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKTsKLSAgICAgICAgfk5vZGVJdGVyYXRvcigp
OworICAgICAgICBOb2RlSXRlcmF0b3IoUGFzc1JlZlB0cjxOb2RlPiwgdW5zaWduZWQgd2hhdFRv
U2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiwgYm9vbCBleHBhbmRFbnRpdHlSZWZlcmVuY2Vz
KTsKKyAgICAgICAgdmlydHVhbCB+Tm9kZUl0ZXJhdG9yKCk7CiAKLSAgICAgICAgTm9kZSogbmV4
dE5vZGUoRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICBOb2RlKiBwcmV2aW91c05vZGUoRXhjZXB0
aW9uQ29kZSYpOworICAgICAgICBOb2RlKiBuZXh0Tm9kZShFeGNlcHRpb25Db2RlJiwgS0pTOjpK
U1ZhbHVlKiYgZXhjZXB0aW9uKTsKKyAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlKEV4Y2VwdGlv
bkNvZGUmLCBLSlM6OkpTVmFsdWUqJiBleGNlcHRpb24pOwogICAgICAgICB2b2lkIGRldGFjaCgp
OwogCi0gICAgICAgIE5vZGUqIHJlZmVyZW5jZU5vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlZmVy
ZW5jZU5vZGUuZ2V0KCk7IH0KLSAgICAgICAgYm9vbCBwb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmVmb3JlUmVmZXJlbmNlTm9kZTsgfQorICAgICAgICBOb2Rl
KiByZWZlcmVuY2VOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VOb2RlLm5vZGUuZ2V0
KCk7IH0KKyAgICAgICAgYm9vbCBwb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVmZXJlbmNlTm9kZS5pc1BvaW50ZXJCZWZvcmVOb2RlOyB9CiAKLSAgICAgICAg
LyoqCi0gICAgICAgICAqIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIGNhbGxlZCBpZiB5b3UgZGVs
ZXRlIGEgbm9kZSBmcm9tIHRoZQotICAgICAgICAgKiBkb2N1bWVudCB0cmVlIGFuZCB5b3Ugd2Fu
dCB0aGUgSXRlcmF0b3IgdG8gcmVhY3QgaWYgdGhlcmUKLSAgICAgICAgICogYXJlIGFueSBjaGFu
Z2VzIGNvbmNlcm5pbmcgaXQuCi0gICAgICAgICAqLwotICAgICAgICB2b2lkIG5vdGlmeUJlZm9y
ZU5vZGVSZW1vdmFsKE5vZGUqIHJlbW92ZWQpOworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IGNhbGxlZCBiZWZvcmUgYW55IG5vZGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCB0cmVl
LgorICAgICAgICB2b2lkIG5vdGlmeUJlZm9yZU5vZGVSZW1vdmFsKE5vZGUqIG5vZGVUb0JlUmVt
b3ZlZCk7CisKKyAgICAgICAgLy8gRm9yIG5vbi1KUyBiaW5kaW5ncy4gU2lsZW50bHkgaWdub3Jl
cyB0aGUgSmF2YVNjcmlwdCBleGNlcHRpb24gaWYgYW55LgorICAgICAgICBOb2RlKiBuZXh0Tm9k
ZShFeGNlcHRpb25Db2RlJiBlYykgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJuIG5l
eHROb2RlKGVjLCBleGNlcHRpb24pOyB9CisgICAgICAgIE5vZGUqIHByZXZpb3VzTm9kZShFeGNl
cHRpb25Db2RlJiBlYykgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJuIHByZXZpb3Vz
Tm9kZShlYywgZXhjZXB0aW9uKTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzZXRS
ZWZlcmVuY2VOb2RlKE5vZGUqKTsKLSAgICAgICAgdm9pZCBzZXRQb2ludGVyQmVmb3JlUmVmZXJl
bmNlTm9kZShib29sIGZsYWcgPSB0cnVlKSB7IG1fYmVmb3JlUmVmZXJlbmNlTm9kZSA9IGZsYWc7
IH0KLSAgICAgICAgYm9vbCBkZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWNoZWQ7IH0K
LSAgICAgICAgdm9pZCBzZXREZXRhY2hlZChib29sIGZsYWcgPSB0cnVlKSB7IG1fZGV0YWNoZWQg
PSBmbGFnOyB9Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jLmdldCgpOyB9Ci0gICAgICAgIE5vZGUqIGZpbmROZXh0Tm9kZShOb2RlKikgY29uc3Q7Ci0g
ICAgICAgIE5vZGUqIGZpbmRQcmV2aW91c05vZGUoTm9kZSopIGNvbnN0OworICAgICAgICBzdHJ1
Y3QgTm9kZVBvaW50ZXIgeworICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5vZGU7CisgICAgICAg
ICAgICBib29sIGlzUG9pbnRlckJlZm9yZU5vZGU7CisgICAgICAgICAgICBOb2RlUG9pbnRlcigp
OworICAgICAgICAgICAgTm9kZVBvaW50ZXIoUGFzc1JlZlB0cjxOb2RlPiwgYm9vbCk7CisgICAg
ICAgICAgICB2b2lkIGNsZWFyKCk7CisgICAgICAgICAgICBib29sIG1vdmVUb05leHQoTm9kZSog
cm9vdCk7CisgICAgICAgICAgICBib29sIG1vdmVUb1ByZXZpb3VzKE5vZGUqIHJvb3QpOworICAg
ICAgICB9OworCisgICAgICAgIHZvaWQgdXBkYXRlRm9yTm9kZVJlbW92YWwoTm9kZSogbm9kZVRv
QmVSZW1vdmVkLCBOb2RlUG9pbnRlciYpIGNvbnN0OwogCi0gICAgICAgIFJlZlB0cjxOb2RlPiBt
X3JlZmVyZW5jZU5vZGU7Ci0gICAgICAgIGJvb2wgbV9iZWZvcmVSZWZlcmVuY2VOb2RlOworICAg
ICAgICBOb2RlUG9pbnRlciBtX3JlZmVyZW5jZU5vZGU7CisgICAgICAgIE5vZGVQb2ludGVyIG1f
Y2FuZGlkYXRlTm9kZTsKICAgICAgICAgYm9vbCBtX2RldGFjaGVkOwotICAgICAgICBSZWZQdHI8
RG9jdW1lbnQ+IG1fZG9jOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
Tm9kZUl0ZXJhdG9yLmlkbAkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3JlL2RvbS9Ob2RlSXRl
cmF0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
NiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0y
OSw5ICsyOSw5IEBAIG1vZHVsZSB0cmF2ZXJzYWwgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgTm9kZSByZWZlcmVuY2VOb2RlOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBwb2ludGVyQmVmb3JlUmVmZXJlbmNlTm9kZTsKIAotICAgICAgICBOb2RlIG5leHROb2RlKCkg
CisgICAgICAgIFtDdXN0b21dIE5vZGUgbmV4dE5vZGUoKSAKICAgICAgICAgICAgIHJhaXNlcyAo
RE9NRXhjZXB0aW9uKTsKLSAgICAgICAgTm9kZSBwcmV2aW91c05vZGUoKQorICAgICAgICBbQ3Vz
dG9tXSBOb2RlIHByZXZpb3VzTm9kZSgpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvZG9tL1Ry
YXZlcnNhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcAkocmV2
aXNpb24gMjk5NDgpCisrKyBXZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDExICsxLDkgQEAKLS8qKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBp
bXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKKy8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBGcmVkZXJpayBI
b2xsamVuIChmcmVkZXJpay5ob2xsamVuQGhpZy5ubykKICAqIENvcHlyaWdodCAoQykgMjAwMSBQ
ZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBX
ZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxl
IENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOSwxMSArMjcsMTIg
QEAKIAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgiCi0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1UcmF2ZXJzYWw6OlRyYXZlcnNhbChOb2RlKiByb290Tm9kZSwgdW5zaWdu
ZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBub2RlRmlsdGVyLCBib29sIGV4
cGFuZEVudGl0eVJlZmVyZW5jZXMpCitUcmF2ZXJzYWw6OlRyYXZlcnNhbChQYXNzUmVmUHRyPE5v
ZGU+IHJvb3ROb2RlLCB1bnNpZ25lZCB3aGF0VG9TaG93LCBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+
IG5vZGVGaWx0ZXIsIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcykKICAgICA6IG1fcm9vdChy
b290Tm9kZSkKICAgICAsIG1fd2hhdFRvU2hvdyh3aGF0VG9TaG93KQogICAgICwgbV9maWx0ZXIo
bm9kZUZpbHRlcikKQEAgLTQ1LDE1ICs0NCwxNyBAQCBUcmF2ZXJzYWw6On5UcmF2ZXJzYWwoKQog
ewogfQogCi1zaG9ydCBUcmF2ZXJzYWw6OmFjY2VwdE5vZGUoTm9kZSogbm9kZSkgY29uc3QKK3No
b3J0IFRyYXZlcnNhbDo6YWNjZXB0Tm9kZShOb2RlKiBub2RlLCBKU1ZhbHVlKiYgZXhjZXB0aW9u
KSBjb25zdAogewotICAgIC8vIEZJWE1FOiBJZiBYTUwgaXMgaW1wbGVtZW50ZWQgd2UgaGF2ZSB0
byBjaGVjayBleHBhbmRFbnRpdHlSZXJlZmVuY2VzIGluIHRoaXMgZnVuY3Rpb24uCisgICAgLy8g
RklYTUU6IFRvIGhhbmRsZSBYTUwgcHJvcGVybHkgd2Ugd291bGQgaGF2ZSB0byBjaGVjayBtX2V4
cGFuZEVudGl0eVJlZmVyZW5jZXMuCisKICAgICAvLyBUaGUgYmlkIHR3aWRkbGluZyBoZXJlIGlz
IGRvbmUgdG8gbWFwIERPTSBub2RlIHR5cGVzLCB3aGljaCBhcmUgZ2l2ZW4gYXMgaW50ZWdlcnMg
ZnJvbQogICAgIC8vIDEgdGhyb3VnaCAxMiwgdG8gd2hhdFRvU2hvdyBiaXQgbWFza3MuCi0gICAg
aWYgKG5vZGUgJiYgKCgxIDw8IChub2RlLT5ub2RlVHlwZSgpLTEpKSAmIG1fd2hhdFRvU2hvdykp
Ci0gICAgICAgIC8vIGNhc3QgdG8gc2hvcnQgc2lsZW5jZXMgImVudW1lcmFsIGFuZCBub24tZW51
bWVyYWwgdHlwZXMgaW4gcmV0dXJuIiB3YXJuaW5nCi0gICAgICAgIHJldHVybiBtX2ZpbHRlciA/
IG1fZmlsdGVyLT5hY2NlcHROb2RlKG5vZGUpIDogc3RhdGljX2Nhc3Q8c2hvcnQ+KE5vZGVGaWx0
ZXI6OkZJTFRFUl9BQ0NFUFQpOwotICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfU0tJUDsK
KyAgICBpZiAoISgoKDEgPDwgKG5vZGUtPm5vZGVUeXBlKCkgLSAxKSkgJiBtX3doYXRUb1Nob3cp
KSkKKyAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXI6OkZJTFRFUl9TS0lQOworICAgIGlmICghbV9m
aWx0ZXIpCisgICAgICAgIHJldHVybiBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUOworICAgIHJl
dHVybiBtX2ZpbHRlci0+YWNjZXB0Tm9kZShub2RlLCBleGNlcHRpb24pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9UcmF2ZXJzYWwuaAkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3Jl
L2RvbS9UcmF2ZXJzYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACiAvKgotICog
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoK
ICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29w
eXJpZ2h0IChDKSAyMDAwIEZyZWRlcmlrIEhvbGxqZW4gKGZyZWRlcmlrLmhvbGxqZW5AaGlnLm5v
KQogICogQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI3LDEwICsyNSwxNCBAQAogI2lmbmRlZiBUcmF2ZXJzYWxfaAogI2RlZmlu
ZSBUcmF2ZXJzYWxfaAogCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCituYW1lc3BhY2UgS0pTIHsKKyAgICBjbGFzcyBKU1ZhbHVlOworfQorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBOb2RlOwpAQCAtMzgsNyArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBUcmF2ZXJzYWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxUcmF2ZXJzYWw+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRyYXZlcnNhbChOb2RlKiwg
dW5zaWduZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiwgYm9vbCBleHBhbmRF
bnRpdHlSZWZlcmVuY2VzKTsKKyAgICAgICAgVHJhdmVyc2FsKFBhc3NSZWZQdHI8Tm9kZT4sIHVu
c2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5kRW50
aXR5UmVmZXJlbmNlcyk7CiAgICAgICAgIHZpcnR1YWwgflRyYXZlcnNhbCgpOwogCiAgICAgICAg
IE5vZGUqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Jvb3QuZ2V0KCk7IH0KQEAgLTQ2LDcgKzQ4
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBOb2RlRmlsdGVyKiBmaWx0ZXIoKSBj
b25zdCB7IHJldHVybiBtX2ZpbHRlci5nZXQoKTsgfQogICAgICAgICBib29sIGV4cGFuZEVudGl0
eVJlZmVyZW5jZXMoKSBjb25zdCB7IHJldHVybiBtX2V4cGFuZEVudGl0eVJlZmVyZW5jZXM7IH0K
IAotICAgICAgICBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdDsKKyAgICBwcm90ZWN0ZWQ6
CisgICAgICAgIHNob3J0IGFjY2VwdE5vZGUoTm9kZSosIEtKUzo6SlNWYWx1ZSomIGpzRXhjZXB0
aW9uKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxOb2RlPiBtX3Jvb3Q7
CkluZGV4OiBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9UcmVlV2Fsa2VyLmNwcAkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3JlL2RvbS9UcmVl
V2Fsa2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMSArMSw5IEBACi0vKioKLSAqIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCisvKgog
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDAgRnJlZGVyaWsgSG9sbGplbiAoZnJlZGVyaWsuaG9sbGplbkBoaWcubm8p
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqIENv
cHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAq
IENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzIsMTUgKzMwLDE3IEBACiAjaW5jbHVkZSAiTm9kZUZpbHRlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBLSlM7CisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotVHJlZVdhbGtlcjo6VHJlZVdhbGtlcihOb2RlKiByb290Tm9kZSwg
dW5zaWduZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmlsdGVyPiBmaWx0ZXIsIGJvb2wg
ZXhwYW5kRW50aXR5UmVmZXJlbmNlcykKK1RyZWVXYWxrZXI6OlRyZWVXYWxrZXIoUGFzc1JlZlB0
cjxOb2RlPiByb290Tm9kZSwgdW5zaWduZWQgd2hhdFRvU2hvdywgUGFzc1JlZlB0cjxOb2RlRmls
dGVyPiBmaWx0ZXIsIGJvb2wgZXhwYW5kRW50aXR5UmVmZXJlbmNlcykKICAgICA6IFRyYXZlcnNh
bChyb290Tm9kZSwgd2hhdFRvU2hvdywgZmlsdGVyLCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKQot
ICAgICwgbV9jdXJyZW50KHJvb3ROb2RlKQorICAgICwgbV9jdXJyZW50KHJvb3QoKSkKIHsKIH0K
IAotdm9pZCBUcmVlV2Fsa2VyOjpzZXRDdXJyZW50Tm9kZShOb2RlKiBub2RlLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVudE5vZGUoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKQEAgLTQ5LDk3ICs0OSwyNDEgQEAgdm9pZCBUcmVlV2Fs
a2VyOjpzZXRDdXJyZW50Tm9kZShOb2RlKiBubwogICAgIG1fY3VycmVudCA9IG5vZGU7CiB9CiAK
LXZvaWQgVHJlZVdhbGtlcjo6c2V0Q3VycmVudE5vZGUoTm9kZSogbm9kZSkKK05vZGUqIFRyZWVX
YWxrZXI6OnBhcmVudE5vZGUoSlNWYWx1ZSomIGV4Y2VwdGlvbikKIHsKLSAgICBBU1NFUlQobm9k
ZSk7Ci0gICAgaW50IGR1bW15OwotICAgIHNldEN1cnJlbnROb2RlKG5vZGUsIGR1bW15KTsKLX0K
LQotTm9kZSogVHJlZVdhbGtlcjo6cGFyZW50Tm9kZSgpCi17Ci0gICAgZm9yIChOb2RlKiBub2Rl
ID0gY3VycmVudE5vZGUoKS0+cGFyZW50Tm9kZSgpOyBub2RlICYmIChub2RlID09IHJvb3QoKSB8
fCBub2RlLT5pc0Rlc2NlbmRhbnRPZihyb290KCkpKTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUo
KSkgewotICAgICAgICBpZiAoYWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJf
QUNDRVBUKSB7Ci0gICAgICAgICAgICBzZXRDdXJyZW50Tm9kZShub2RlKTsKLSAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgIGV4Y2VwdGlvbiA9IDA7CisgICAgaWYgKG1fY3VycmVudCA9PSBy
b290KCkpCisgICAgICAgIHJldHVybiAwOworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbV9jdXJy
ZW50OworICAgIHdoaWxlIChub2RlICE9IHJvb3QoKSkgeworICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50Tm9kZSgpOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgYm9vbCBhY2NlcHRlZCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9u
KSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUOworICAgICAgICBpZiAoZXhjZXB0aW9uKQor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChhY2NlcHRlZCkgeworICAgICAgICAg
ICAgbV9jdXJyZW50ID0gbm9kZS5yZWxlYXNlKCk7CisgICAgICAgICAgICByZXR1cm4gbV9jdXJy
ZW50LmdldCgpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBU
cmVlV2Fsa2VyOjpmaXJzdENoaWxkKCkKK05vZGUqIFRyZWVXYWxrZXI6OmZpcnN0Q2hpbGQoSlNW
YWx1ZSomIGV4Y2VwdGlvbikKIHsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBjdXJyZW50Tm9kZSgp
LT5maXJzdENoaWxkKCk7IG5vZGUgJiYgKG5vZGUgPT0gcm9vdCgpIHx8IG5vZGUtPmlzRGVzY2Vu
ZGFudE9mKHJvb3QoKSkpOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBp
ZiAoYWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7Ci0gICAg
ICAgICAgICBzZXRDdXJyZW50Tm9kZShub2RlKTsKLSAgICAgICAgICAgIHJldHVybiBub2RlOwor
ICAgIGV4Y2VwdGlvbiA9IDA7CisgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVu
dC0+Zmlyc3RDaGlsZCgpOyBub2RlOyApIHsKKyAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3Vs
dCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGVS
ZXN1bHQpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpG
SUxURVJfU0tJUDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVDoKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBkbyB7CisgICAgICAgICAgICBp
ZiAobm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5u
ZXh0U2libGluZygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAg
aWYgKCFwYXJlbnQgfHwgcGFyZW50ID09IHJvb3QoKSB8fCBwYXJlbnQgPT0gbV9jdXJyZW50KQor
ICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgbm9kZSA9IHBhcmVudDsKKyAg
ICAgICAgfSB3aGlsZSAobm9kZSk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBU
cmVlV2Fsa2VyOjpsYXN0Q2hpbGQoKQorTm9kZSogVHJlZVdhbGtlcjo6bGFzdENoaWxkKEpTVmFs
dWUqJiBleGNlcHRpb24pCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gY3VycmVudE5vZGUoKS0+
bGFzdENoaWxkKCk7IG5vZGUgJiYgKG5vZGUgPT0gcm9vdCgpIHx8IG5vZGUtPmlzRGVzY2VuZGFu
dE9mKHJvb3QoKSkpOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkgewotICAg
ICAgICAgICAgc2V0Q3VycmVudE5vZGUobm9kZSk7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZTsK
KyAgICBleGNlcHRpb24gPSAwOworICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJl
bnQtPmxhc3RDaGlsZCgpOyBub2RlOyApIHsKKyAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3Vs
dCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2Vw
dGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzd2l0Y2ggKGFjY2VwdE5vZGVS
ZXN1bHQpIHsKKyAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVDoKKyAg
ICAgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9jdXJyZW50LmdldCgpOworICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpG
SUxURVJfU0tJUDoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+bGFzdENoaWxkKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmxhc3RDaGlsZCgpOworICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJTFRFUl9SRUpFQ1Q6CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYg
KG5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUt
PnByZXZpb3VzU2libGluZygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgTm9kZSogcGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAg
ICAgICAgaWYgKCFwYXJlbnQgfHwgcGFyZW50ID09IHJvb3QoKSB8fCBwYXJlbnQgPT0gbV9jdXJy
ZW50KQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgbm9kZSA9IHBhcmVu
dDsKKyAgICAgICAgfSB3aGlsZSAobm9kZSk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1O
b2RlKiBUcmVlV2Fsa2VyOjpwcmV2aW91c1NpYmxpbmcoKQorTm9kZSogVHJlZVdhbGtlcjo6cHJl
dmlvdXNTaWJsaW5nKEpTVmFsdWUqJiBleGNlcHRpb24pCiB7Ci0gICAgZm9yIChOb2RlKiBub2Rl
ID0gY3VycmVudE5vZGUoKS0+cHJldmlvdXNTaWJsaW5nKCk7IG5vZGUgJiYgKG5vZGUgPT0gcm9v
dCgpIHx8IG5vZGUtPmlzRGVzY2VuZGFudE9mKHJvb3QoKSkpOyBub2RlID0gbm9kZS0+cHJldmlv
dXNTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGFjY2VwdE5vZGUobm9kZSkgPT0gTm9kZUZpbHRl
cjo6RklMVEVSX0FDQ0VQVCkgewotICAgICAgICAgICAgc2V0Q3VycmVudE5vZGUobm9kZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICBleGNlcHRpb24gPSAwOworICAgIFJlZlB0cjxO
b2RlPiBub2RlID0gbV9jdXJyZW50OworICAgIGlmIChub2RlID09IHJvb3QoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgZm9yIChSZWZQdHI8Tm9kZT4gc2li
bGluZyA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOyBzaWJsaW5nOyApIHsKKyAgICAgICAgICAg
IHNob3J0IGFjY2VwdE5vZGVSZXN1bHQgPSBhY2NlcHROb2RlKHNpYmxpbmcuZ2V0KCksIGV4Y2Vw
dGlvbik7CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICAgICAgc3dpdGNoIChhY2NlcHROb2RlUmVzdWx0KSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUOgorICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnQgPSBzaWJsaW5nLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG1fY3VycmVudC5nZXQoKTsKKyAgICAgICAgICAgICAgICBjYXNlIE5vZGVGaWx0ZXI6OkZJ
TFRFUl9TS0lQOgorICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+Zmlyc3RDaGlsZCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nID0gc2libGluZy0+Zmlyc3RDaGls
ZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBO
b2RlRmlsdGVyOjpGSUxURVJfUkVKRUNUOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c1NpYmxp
bmcoKTsKICAgICAgICAgfQorICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAg
ICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9PSByb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwg
ZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUND
RVBUKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiAwOwogfQogCi1O
b2RlKiBUcmVlV2Fsa2VyOjpuZXh0U2libGluZygpCitOb2RlKiBUcmVlV2Fsa2VyOjpuZXh0U2li
bGluZyhKU1ZhbHVlKiYgZXhjZXB0aW9uKQogewotICAgIGZvciAoTm9kZSogbm9kZSA9IGN1cnJl
bnROb2RlKCktPm5leHRTaWJsaW5nKCk7IG5vZGUgJiYgKG5vZGUgPT0gcm9vdCgpIHx8IG5vZGUt
PmlzRGVzY2VuZGFudE9mKHJvb3QoKSkpOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICBpZiAoYWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBU
KSB7Ci0gICAgICAgICAgICBzZXRDdXJyZW50Tm9kZShub2RlKTsKLSAgICAgICAgICAgIHJldHVy
biBub2RlOworICAgIGV4Y2VwdGlvbiA9IDA7CisgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1
cnJlbnQ7CisgICAgaWYgKG5vZGUgPT0gcm9vdCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICB3
aGlsZSAoMSkgeworICAgICAgICBmb3IgKFJlZlB0cjxOb2RlPiBzaWJsaW5nID0gbm9kZS0+bmV4
dFNpYmxpbmcoKTsgc2libGluZzsgKSB7CisgICAgICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVz
dWx0ID0gYWNjZXB0Tm9kZShzaWJsaW5nLmdldCgpLCBleGNlcHRpb24pOworICAgICAgICAgICAg
aWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHN3
aXRjaCAoYWNjZXB0Tm9kZVJlc3VsdCkgeworICAgICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRl
cjo6RklMVEVSX0FDQ0VQVDoKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gc2libGlu
Zy5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7
CisgICAgICAgICAgICAgICAgY2FzZSBOb2RlRmlsdGVyOjpGSUxURVJfU0tJUDoKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHNpYmxpbmctPmZpcnN0Q2hpbGQoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc2libGluZyA9IHNpYmxpbmctPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTm9kZUZpbHRlcjo6RklMVEVSX1JF
SkVDVDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBzaWJsaW5nID0gc2libGluZy0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgfQorICAgICAg
ICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZSA9
PSByb290KCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgc2hvcnQgYWNjZXB0Tm9k
ZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYg
KGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoYWNjZXB0Tm9k
ZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKQorICAgICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQotICAgIHJldHVybiAwOwogfQogCi1Ob2RlKiBUcmVlV2Fsa2VyOjpwcmV2aW91
c05vZGUoKQorTm9kZSogVHJlZVdhbGtlcjo6cHJldmlvdXNOb2RlKEpTVmFsdWUqJiBleGNlcHRp
b24pCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gY3VycmVudE5vZGUoKS0+dHJhdmVyc2VQcmV2
aW91c05vZGUoKTsgbm9kZSAmJiAobm9kZSA9PSByb290KCkgfHwgbm9kZS0+aXNEZXNjZW5kYW50
T2Yocm9vdCgpKSk7IG5vZGUgPSBub2RlLT50cmF2ZXJzZVByZXZpb3VzTm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChhY2NlcHROb2RlKG5vZGUpID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQgJiYg
IWFuY2VzdG9yUmVqZWN0ZWQobm9kZSkpIHsKLSAgICAgICAgICAgIHNldEN1cnJlbnROb2RlKG5v
ZGUpOwotICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgZXhjZXB0aW9uID0gMDsKKyAgICBS
ZWZQdHI8Tm9kZT4gbm9kZSA9IG1fY3VycmVudDsKKyAgICB3aGlsZSAobm9kZSAhPSByb290KCkp
IHsKKyAgICAgICAgd2hpbGUgKE5vZGUqIHByZXZpb3VzU2libGluZyA9IG5vZGUtPnByZXZpb3Vz
U2libGluZygpKSB7CisgICAgICAgICAgICBub2RlID0gcHJldmlvdXNTaWJsaW5nOworICAgICAg
ICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpG
SUxURVJfUkVKRUNUKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgd2hp
bGUgKE5vZGUqIGxhc3RDaGlsZCA9IG5vZGUtPmxhc3RDaGlsZCgpKSB7CisgICAgICAgICAgICAg
ICAgbm9kZSA9IGxhc3RDaGlsZDsKKyAgICAgICAgICAgICAgICBhY2NlcHROb2RlUmVzdWx0ID0g
YWNjZXB0Tm9kZShub2RlLmdldCgpLCBleGNlcHRpb24pOworICAgICAgICAgICAgICAgIGlmIChl
eGNlcHRpb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAg
IGlmIChhY2NlcHROb2RlUmVzdWx0ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX0FDQ0VQVCkgeworICAgICAg
ICAgICAgICAgIG1fY3VycmVudCA9IG5vZGUucmVsZWFzZSgpOworICAgICAgICAgICAgICAgIHJl
dHVybiBtX2N1cnJlbnQuZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
aWYgKG5vZGUgPT0gcm9vdCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIE5vZGUq
IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgbm9kZSA9IHBhcmVudDsKKyAgICAgICAgc2hvcnQg
YWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUobm9kZS5nZXQoKSwgZXhjZXB0aW9uKTsKKyAg
ICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAo
YWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7CisgICAgICAg
ICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBtX2N1
cnJlbnQuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUq
IFRyZWVXYWxrZXI6Om5leHROb2RlKCkKK05vZGUqIFRyZWVXYWxrZXI6Om5leHROb2RlKEpTVmFs
dWUqJiBleGNlcHRpb24pCiB7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gY3VycmVudE5vZGUoKS0+
dHJhdmVyc2VOZXh0Tm9kZSgpOyBub2RlICYmIChub2RlID09IHJvb3QoKSB8fCBub2RlLT5pc0Rl
c2NlbmRhbnRPZihyb290KCkpKTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewot
ICAgICAgICBpZiAoYWNjZXB0Tm9kZShub2RlKSA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBU
ICYmICFhbmNlc3RvclJlamVjdGVkKG5vZGUpKSB7Ci0gICAgICAgICAgICBzZXRDdXJyZW50Tm9k
ZShub2RlKTsKLSAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIGV4Y2VwdGlvbiA9IDA7Cisg
ICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2N1cnJlbnQ7CitDaGlsZHJlbjoKKyAgICB3aGlsZSAo
Tm9kZSogZmlyc3RDaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKSkgeworICAgICAgICBub2RlID0g
Zmlyc3RDaGlsZDsKKyAgICAgICAgc2hvcnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUo
bm9kZS5nZXQoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVy
OjpGSUxURVJfQUNDRVBUKSB7CisgICAgICAgICAgICBtX2N1cnJlbnQgPSBub2RlLnJlbGVhc2Uo
KTsKKyAgICAgICAgICAgIHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7CiAgICAgICAgIH0KKyAgICAg
ICAgaWYgKGFjY2VwdE5vZGVSZXN1bHQgPT0gTm9kZUZpbHRlcjo6RklMVEVSX1JFSkVDVCkKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBUcmVlV2Fs
a2VyOjphbmNlc3RvclJlamVjdGVkKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgZm9y
IChOb2RlKiBhID0gbm9kZS0+cGFyZW50Tm9kZSgpOyBhICYmIGEgIT0gcm9vdCgpOyBhID0gYS0+
cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChhY2NlcHROb2RlKGEpID09IE5vZGVGaWx0ZXI6
OkZJTFRFUl9SRUpFQ1QpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB3aGlsZSAoTm9k
ZSogbmV4dFNpYmxpbmcgPSBub2RlLT50cmF2ZXJzZU5leHRTaWJsaW5nKHJvb3QoKSkpIHsKKyAg
ICAgICAgbm9kZSA9IG5leHRTaWJsaW5nOworICAgICAgICBzaG9ydCBhY2NlcHROb2RlUmVzdWx0
ID0gYWNjZXB0Tm9kZShub2RlLmdldCgpLCBleGNlcHRpb24pOworICAgICAgICBpZiAoZXhjZXB0
aW9uKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChhY2NlcHROb2RlUmVzdWx0
ID09IE5vZGVGaWx0ZXI6OkZJTFRFUl9BQ0NFUFQpIHsKKyAgICAgICAgICAgIG1fY3VycmVudCA9
IG5vZGUucmVsZWFzZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY3VycmVudC5nZXQoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxU
RVJfU0tJUCkKKyAgICAgICAgICAgIGdvdG8gQ2hpbGRyZW47CiAgICAgfQotICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1RyZWVX
YWxrZXIuaAkocmV2aXNpb24gMjk5NDgpCisrKyBXZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTEgKzEsOSBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwMCBGcmVk
ZXJpayBIb2xsamVuIChmcmVkZXJpay5ob2xsamVuQGhpZy5ubykKICAqIENvcHlyaWdodCAoQykg
MjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNh
bXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21haWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0
IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOCw3ICsy
Niw2IEBACiAjZGVmaW5lIFRyZWVXYWxrZXJfaAogCiAjaW5jbHVkZSAiVHJhdmVyc2FsLmgiCi0j
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDI0
ICszMywyOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBUcmVlV2Fsa2VyIDog
cHVibGljIFRyYXZlcnNhbCB7CiAgICAgcHVibGljOgotICAgICAgICBUcmVlV2Fsa2VyKE5vZGUq
LCB1bnNpZ25lZCB3aGF0VG9TaG93LCBQYXNzUmVmUHRyPE5vZGVGaWx0ZXI+LCBib29sIGV4cGFu
ZEVudGl0eVJlZmVyZW5jZXMpOworICAgICAgICBUcmVlV2Fsa2VyKFBhc3NSZWZQdHI8Tm9kZT4s
IHVuc2lnbmVkIHdoYXRUb1Nob3csIFBhc3NSZWZQdHI8Tm9kZUZpbHRlcj4sIGJvb2wgZXhwYW5k
RW50aXR5UmVmZXJlbmNlcyk7CiAKICAgICAgICAgTm9kZSogY3VycmVudE5vZGUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnQuZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBzZXRDdXJyZW50Tm9kZShO
b2RlKiwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICB2b2lkIHNldEN1cnJlbnROb2RlKFBhc3NS
ZWZQdHI8Tm9kZT4sIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgICAgICBOb2RlKiBwYXJlbnROb2Rl
KCk7Ci0gICAgICAgIE5vZGUqIGZpcnN0Q2hpbGQoKTsKLSAgICAgICAgTm9kZSogbGFzdENoaWxk
KCk7Ci0gICAgICAgIE5vZGUqIHByZXZpb3VzU2libGluZygpOwotICAgICAgICBOb2RlKiBuZXh0
U2libGluZygpOwotICAgICAgICBOb2RlKiBwcmV2aW91c05vZGUoKTsKLSAgICAgICAgTm9kZSog
bmV4dE5vZGUoKTsKKyAgICAgICAgTm9kZSogcGFyZW50Tm9kZShLSlM6OkpTVmFsdWUqJiBleGNl
cHRpb24pOworICAgICAgICBOb2RlKiBmaXJzdENoaWxkKEtKUzo6SlNWYWx1ZSomIGV4Y2VwdGlv
bik7CisgICAgICAgIE5vZGUqIGxhc3RDaGlsZChLSlM6OkpTVmFsdWUqJiBleGNlcHRpb24pOwor
ICAgICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcoS0pTOjpKU1ZhbHVlKiYgZXhjZXB0aW9uKTsK
KyAgICAgICAgTm9kZSogbmV4dFNpYmxpbmcoS0pTOjpKU1ZhbHVlKiYgZXhjZXB0aW9uKTsKKyAg
ICAgICAgTm9kZSogcHJldmlvdXNOb2RlKEtKUzo6SlNWYWx1ZSomIGV4Y2VwdGlvbik7CisgICAg
ICAgIE5vZGUqIG5leHROb2RlKEtKUzo6SlNWYWx1ZSomIGV4Y2VwdGlvbik7CisKKyAgICAgICAg
Ly8gRm9yIG5vbi1KUyBiaW5kaW5ncy4gU2lsZW50bHkgaWdub3JlcyB0aGUgSmF2YVNjcmlwdCBl
eGNlcHRpb24gaWYgYW55LgorICAgICAgICBOb2RlKiBwYXJlbnROb2RlKCkgeyBLSlM6OkpTVmFs
dWUqIGV4Y2VwdGlvbjsgcmV0dXJuIHBhcmVudE5vZGUoZXhjZXB0aW9uKTsgfQorICAgICAgICBO
b2RlKiBmaXJzdENoaWxkKCkgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJuIGZpcnN0
Q2hpbGQoZXhjZXB0aW9uKTsgfQorICAgICAgICBOb2RlKiBsYXN0Q2hpbGQoKSB7IEtKUzo6SlNW
YWx1ZSogZXhjZXB0aW9uOyByZXR1cm4gbGFzdENoaWxkKGV4Y2VwdGlvbik7IH0KKyAgICAgICAg
Tm9kZSogcHJldmlvdXNTaWJsaW5nKCkgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJu
IHByZXZpb3VzU2libGluZyhleGNlcHRpb24pOyB9CisgICAgICAgIE5vZGUqIG5leHRTaWJsaW5n
KCkgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJuIG5leHRTaWJsaW5nKGV4Y2VwdGlv
bik7IH0KKyAgICAgICAgTm9kZSogcHJldmlvdXNOb2RlKCkgeyBLSlM6OkpTVmFsdWUqIGV4Y2Vw
dGlvbjsgcmV0dXJuIHByZXZpb3VzTm9kZShleGNlcHRpb24pOyB9CisgICAgICAgIE5vZGUqIG5l
eHROb2RlKCkgeyBLSlM6OkpTVmFsdWUqIGV4Y2VwdGlvbjsgcmV0dXJuIG5leHROb2RlKGV4Y2Vw
dGlvbik7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIGNvbnZlbmllbmNlIGZvciB3aGVu
IGl0IGlzIGtub3duIHRoZXJlIHdpbGwgYmUgbm8gZXhjZXB0aW9uCi0gICAgICAgIHZvaWQgc2V0
Q3VycmVudE5vZGUoTm9kZSopOwotICAgICAgICBib29sIGFuY2VzdG9yUmVqZWN0ZWQoY29uc3Qg
Tm9kZSopIGNvbnN0OwotCiAgICAgICAgIFJlZlB0cjxOb2RlPiBtX2N1cnJlbnQ7CiAgICAgfTsK
IApJbmRleDogV2ViQ29yZS9kb20vVHJlZVdhbGtlci5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vVHJlZVdhbGtlci5pZGwJKHJldmlzaW9uIDI5OTQ4KQorKysgV2ViQ29yZS9kb20vVHJl
ZVdhbGtlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEzICsyOSwxMyBAQCBtb2R1bGUgdHJh
dmVyc2FsIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIE5vZGUgY3VycmVudE5vZGUKICAg
ICAgICAgICAgICAgICAgICAgIHNldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAgICAg
ICBOb2RlIHBhcmVudE5vZGUoKTsKLSAgICAgICAgTm9kZSBmaXJzdENoaWxkKCk7Ci0gICAgICAg
IE5vZGUgbGFzdENoaWxkKCk7Ci0gICAgICAgIE5vZGUgcHJldmlvdXNTaWJsaW5nKCk7Ci0gICAg
ICAgIE5vZGUgbmV4dFNpYmxpbmcoKTsKLSAgICAgICAgTm9kZSBwcmV2aW91c05vZGUoKTsKLSAg
ICAgICAgTm9kZSBuZXh0Tm9kZSgpOworICAgICAgICBbQ3VzdG9tXSBOb2RlIHBhcmVudE5vZGUo
KTsKKyAgICAgICAgW0N1c3RvbV0gTm9kZSBmaXJzdENoaWxkKCk7CisgICAgICAgIFtDdXN0b21d
IE5vZGUgbGFzdENoaWxkKCk7CisgICAgICAgIFtDdXN0b21dIE5vZGUgcHJldmlvdXNTaWJsaW5n
KCk7CisgICAgICAgIFtDdXN0b21dIE5vZGUgbmV4dFNpYmxpbmcoKTsKKyAgICAgICAgW0N1c3Rv
bV0gTm9kZSBwcmV2aW91c05vZGUoKTsKKyAgICAgICAgW0N1c3RvbV0gTm9kZSBuZXh0Tm9kZSgp
OwogICAgIH07CiAKIH0KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvbWFrZS1qcy10ZXN0LXdy
YXBwZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvbWFrZS1qcy10ZXN0LXdy
YXBwZXJzCShyZXZpc2lvbiAyOTk0OCkKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvbWFrZS1qcy10
ZXN0LXdyYXBwZXJzCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHVzZSBzdHJpY3Q7
CiAKIGNoZGlyV2ViS2l0KCk7CiAKLW15IEB0ZW1wbGF0ZXMgPSBgZmluZCBMYXlvdXRUZXN0cy9m
YXN0IExheW91dFRlc3RzL3N2ZyAtbmFtZSAiVEVNUExBVEUuaHRtbCJgOworbXkgQHRlbXBsYXRl
cyA9IGBmaW5kIExheW91dFRlc3RzIC1uYW1lICJURU1QTEFURS5odG1sImA7CiAKIGZvciBteSAk
dGZpbGUgKEB0ZW1wbGF0ZXMpIHsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjk5NDgpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAwOC0w
Mi0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSB0ZXN0IGZvciBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzE0CisgICAgICAgICAgTm9kZUl0ZXJhdG9yIGRvZXMg
bm90IGhhbmRsZSBleGNlcHRpb25zIGZyb20gdGhlIGZpbHRlciBmdW5jdGlvbiAoYWZmZWN0cyBB
Y2lkMykKKworICAgICAgICAqIHRyYXZlcnNhbC9leGNlcHRpb24tZm9yd2FyZGluZy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRyYXZlcnNhbC9leGNlcHRpb24tZm9yd2FyZGluZy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0cmF2ZXJzYWwvcmVzb3VyY2VzOiBBZGRlZC4KKyAgICAg
ICAgKiB0cmF2ZXJzYWwvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWw6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwuCisgICAgICAgICogdHJhdmVy
c2FsL3Jlc291cmNlcy9leGNlcHRpb24tZm9yd2FyZGluZy5qczogQWRkZWQuCisKKyAgICAgICAg
KiB0cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDYuaHRtbDogQ2hhbmdlZCB0ZXN0IHNvIHRoZXJl
J3Mgbm8gd2hpdGVzcGFjZSBub2RlIGFmdGVyCisgICAgICAgIHRoZSA8c3Bhbj4gZWxlbWVudHMg
aW5zaWRlIHRoZSB0ZXN0IHJvb3QgZWxlbWVudCAoYSA8ZGl2PikuIFRoZSBvbGQgdGVzdCByZXN1
bHRzIHdlcmUKKyAgICAgICAgaW5jb3JyZWN0OyB0aGUgbmV3IE5vZGVJdGVyYXRvciBpbXBsZW1l
bnRhdGlvbiBjb3JyZWN0bHkgcmV0dXJuZWQgdGhlIHdoaXRlc3BhY2Ugbm9kZQorICAgICAgICBm
b3IgdGhpcyB0ZXN0LgorCisgICAgICAgICogdHJhdmVyc2FsL25vZGUtaXRlcmF0b3ItMDA2YS5o
dG1sOiBDb3BpZWQgZnJvbSB0cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDYuaHRtbC4KKyAgICAg
ICAgUHJlc2VydmUgdGhlIG9yaWdpbmFsIHRlc3QsIHdoaWNoIG5vdyBoYXMgYSBzdHJhbmdlIHJl
c3VsdC4gQnV0IHRoZSByZXN1bHQgaXMgY29ycmVjdCwKKyAgICAgICAgc28gaXQncyB3b3J0aCBr
ZWVwaW5nIGFyb3VuZC4KKyAgICAgICAgKiB0cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDZhLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9UcmVlV2Fsa2VyL1RyZWVX
YWxrZXItY3VycmVudE5vZGUtZXhwZWN0ZWQudHh0OiBSZWdlbnJlYXRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9UcmVlV2Fsa2VyL3Jlc291cmNlcy9UcmVlV2Fsa2VyLWN1cnJlbnROb2RlLmpzOiBV
cGRhdGVkIHRlc3QgdG8gZXhwZWN0IHJlc3VsdHMKKyAgICAgICAgdGhhdCBtYXRjaCB0aGUgRE9N
IHNwZWNpZmljYXRpb24uCisKIDIwMDgtMDItMDMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIC0gdXBkYXRlZCBzb21lIG1vcmUgb25seS1jaGlsZCBhbmQgb25seS1v
Zi10eXBlIHRlc3RzIHRvIGV4cGVjdCBzdWNjZXNzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9UcmVlV2Fsa2VyL1RyZWVXYWxrZXItY3VycmVudE5vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1RyZWVXYWxrZXIvVHJlZVdhbGtlci1jdXJyZW50
Tm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI5OTQ4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vVHJlZVdhbGtlci9UcmVlV2Fsa2VyLWN1cnJlbnROb2RlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMsMTQgKzEzLDE0IEBAIFRlc3QgdGhhdCB3ZSBoYW5kbGUgc2V0dGluZyB0
aGUgY3VycmVudE4KIAogUEFTUyB3LnBhcmVudE5vZGUoKSBpcyBudWxsCiBQQVNTIHcuY3VycmVu
dE5vZGUgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Ci1QQVNTIHcubmV4dE5vZGUoKSBpcyBu
dWxsCi1QQVNTIHcuY3VycmVudE5vZGUgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50CitQQVNT
IHcubmV4dE5vZGUoKSBpcyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZAorUEFT
UyB3LmN1cnJlbnROb2RlIGlzIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkCiBQ
QVNTIHcucHJldmlvdXNOb2RlKCkgaXMgbnVsbAogUEFTUyB3LmN1cnJlbnROb2RlIGlzIGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudAotUEFTUyB3LmZpcnN0Q2hpbGQoKSBpcyBudWxsCi1QQVNTIHcu
Y3VycmVudE5vZGUgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Ci1QQVNTIHcubGFzdENoaWxk
KCkgaXMgbnVsbAotUEFTUyB3LmN1cnJlbnROb2RlIGlzIGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dAorUEFTUyB3LmZpcnN0Q2hpbGQoKSBpcyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZmlyc3RD
aGlsZAorUEFTUyB3LmN1cnJlbnROb2RlIGlzIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5maXJz
dENoaWxkCitQQVNTIHcubGFzdENoaWxkKCkgaXMgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxh
c3RDaGlsZAorUEFTUyB3LmN1cnJlbnROb2RlIGlzIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5s
YXN0Q2hpbGQKIFBBU1Mgdy5uZXh0U2libGluZygpIGlzIG51bGwKIFBBU1Mgdy5jdXJyZW50Tm9k
ZSBpcyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQKIFBBU1Mgdy5wcmV2aW91c1NpYmxpbmcoKSBp
cyBudWxsCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9UcmVlV2Fsa2VyL3Jlc291cmNlcy9U
cmVlV2Fsa2VyLWN1cnJlbnROb2RlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL1RyZWVXYWxrZXIvcmVzb3VyY2VzL1RyZWVXYWxrZXItY3VycmVudE5vZGUuanMJKHJldmlz
aW9uIDI5OTQ4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vVHJlZVdhbGtlci9yZXNvdXJjZXMv
VHJlZVdhbGtlci1jdXJyZW50Tm9kZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEsMTYgKzIxLDIy
IEBAIGRlYnVnKCIiKTsKIHcuY3VycmVudE5vZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7
CiBzaG91bGRCZU51bGwoIncucGFyZW50Tm9kZSgpIik7CiBzaG91bGRCZSgidy5jdXJyZW50Tm9k
ZSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQiKTsKLXNob3VsZEJlTnVsbCgidy5uZXh0Tm9k
ZSgpIik7Ci1zaG91bGRCZSgidy5jdXJyZW50Tm9kZSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQiKTsKK3cuY3VycmVudE5vZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CitzaG91bGRC
ZSgidy5uZXh0Tm9kZSgpIiwgImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkIik7
CitzaG91bGRCZSgidy5jdXJyZW50Tm9kZSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZmly
c3RDaGlsZCIpOwordy5jdXJyZW50Tm9kZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKIHNo
b3VsZEJlTnVsbCgidy5wcmV2aW91c05vZGUoKSIpOwogc2hvdWxkQmUoIncuY3VycmVudE5vZGUi
LCAiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Iik7Ci1zaG91bGRCZU51bGwoIncuZmlyc3RDaGls
ZCgpIik7Ci1zaG91bGRCZSgidy5jdXJyZW50Tm9kZSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQiKTsKLXNob3VsZEJlTnVsbCgidy5sYXN0Q2hpbGQoKSIpOwotc2hvdWxkQmUoIncuY3VycmVu
dE5vZGUiLCAiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Iik7Cit3LmN1cnJlbnROb2RlID0gZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50Oworc2hvdWxkQmUoIncuZmlyc3RDaGlsZCgpIiwgImRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5maXJzdENoaWxkIik7CitzaG91bGRCZSgidy5jdXJyZW50Tm9k
ZSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZCIpOwordy5jdXJyZW50Tm9k
ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKK3Nob3VsZEJlKCJ3Lmxhc3RDaGlsZCgpIiwg
ImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYXN0Q2hpbGQiKTsKK3Nob3VsZEJlKCJ3LmN1cnJl
bnROb2RlIiwgImRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYXN0Q2hpbGQiKTsKK3cuY3VycmVu
dE5vZGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CiBzaG91bGRCZU51bGwoIncubmV4dFNp
YmxpbmcoKSIpOwogc2hvdWxkQmUoIncuY3VycmVudE5vZGUiLCAiZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50Iik7Cit3LmN1cnJlbnROb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Owogc2hv
dWxkQmVOdWxsKCJ3LnByZXZpb3VzU2libGluZygpIik7CiBzaG91bGRCZSgidy5jdXJyZW50Tm9k
ZSIsICJkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQiKTsKIApAQCAtNDAsNyArNDYsNyBAQCBkZWJ1
ZygiIik7CiAKIHcuY3VycmVudE5vZGUgPSBzdWJUcmVlLnByZXZpb3VzU2libGluZzsKIHNob3Vs
ZEJlKCJ3Lm5leHROb2RlKCkiLCAic3ViVHJlZSIpOwotdy5jdXJyZW50Tm9kZSA9IGRvY3VtZW50
LmJvZHkKK3cuY3VycmVudE5vZGUgPSBkb2N1bWVudC5ib2R5Owogc2hvdWxkQmUoIncubGFzdENo
aWxkKCkiLCAic3ViVHJlZSIpOwogCiAvLyBDbGVhbnVwCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2
ZXJzYWwvZXhjZXB0aW9uLWZvcndhcmRpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3RyYXZlcnNhbC9leGNlcHRpb24tZm9yd2FyZGluZy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvZXhjZXB0aW9uLWZvcndhcmRpbmct
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACitUZXN0IG9mIGV4Y2Vw
dGlvbiBmb3J3YXJkaW5nIGZvciBOb2RlSXRlcmF0b3IgYW5kIFRyZWVXYWxrZXIsIGRlcml2ZWQg
ZnJvbSBhbiBlYXJseSB2ZXJzaW9uIG9mIEFjaWQzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGkubmV4dE5vZGUoKSB0aHJldyBleGNlcHRpb24gUm9zZXMuCitQQVNTIGku
bmV4dE5vZGUoKSBpcyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQKK1BBU1MgaS5wcmV2aW91c05v
ZGUoKSB0aHJldyBleGNlcHRpb24gUm9zZXMuCitQQVNTIHcubmV4dE5vZGUoKSB0aHJldyBleGNl
cHRpb24gUm9zZXMuCitQQVNTIHcubmV4dE5vZGUoKSBpcyBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuZmlyc3RDaGlsZAorUEFTUyB3LnByZXZpb3VzTm9kZSgpIHRocmV3IGV4Y2VwdGlvbiBSb3Nl
cy4KK1BBU1Mgdy5maXJzdENoaWxkKCkgdGhyZXcgZXhjZXB0aW9uIFJvc2VzLgorUEFTUyB3Lmxh
c3RDaGlsZCgpIHRocmV3IGV4Y2VwdGlvbiBSb3Nlcy4KK1BBU1Mgdy5uZXh0U2libGluZygpIHRo
cmV3IGV4Y2VwdGlvbiBSb3Nlcy4KK1BBU1Mgdy5wcmV2aW91c1NpYmxpbmcoKSBpcyBudWxsCitQ
QVNTIHcubmV4dFNpYmxpbmcoKSBpcyBkb2N1bWVudC5ib2R5CitQQVNTIHcucHJldmlvdXNTaWJs
aW5nKCkgaXMgZG9jdW1lbnQuYm9keS5wcmV2aW91c1NpYmxpbmcKK1BBU1MgaXRlcmF0aW9uIGlz
IDExCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2V4Y2VwdGlvbi1mb3J3
YXJkaW5nLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBu
YXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvZXhjZXB0aW9uLWZvcndhcmRpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvZXhjZXB0aW9uLWZvcndh
cmRpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9leGNlcHRp
b24tZm9yd2FyZGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9leGNl
cHRpb24tZm9yd2FyZGluZy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3RyYXZlcnNhbC9leGNlcHRpb24tZm9yd2Fy
ZGluZy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbApO
YW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL25vZGUtaXRlcmF0b3ItMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
OTk0OCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9ub2RlLWl0ZXJhdG9yLTAwMS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1FeHBlY3QgcmVmIG5vZGUgJ0En
OyBwb2ludGVyIGJlZm9yZTogKiBBIEIgQyBEIEUgRiBHIEggSQorRXhwZWN0IHJlZiBub2RlIHJv
b3Q7IHBvaW50ZXIgYWZ0ZXI6IEEgQiBDIEQgRSBGIEcgSCBJCiAKIEV4cGVjdCByZWYgbm9kZSAn
QSc7IHBvaW50ZXIgYWZ0ZXI6IFtBXSAqIEIgQyBEIEUgRiBHIEggSQogCkluZGV4OiBMYXlvdXRU
ZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDEuaHRtbAkocmV2aXNpb24gMjk5NDgp
CisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDEuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQCBmdW5jdGlvbiB0ZXN0Tm9kZUZpdGVyKG4pCiB9CiAK
IHZhciBpdCA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihyb290LCBOb2RlRmlsdGVyLlNI
T1dfRUxFTUVOVCwgdGVzdE5vZGVGaXRlciwgZmFsc2UpOwotZG9jdW1lbnQud3JpdGUoZHVtcE5v
ZGVJdGVyYXRvcihpdCwgInJlZiBub2RlICdBJzsgcG9pbnRlciBiZWZvcmUiKSk7Citkb2N1bWVu
dC53cml0ZShkdW1wTm9kZUl0ZXJhdG9yKGl0LCAicmVmIG5vZGUgcm9vdDsgcG9pbnRlciBhZnRl
ciIpKTsKIGl0Lm5leHROb2RlKCk7CiBkb2N1bWVudC53cml0ZShkdW1wTm9kZUl0ZXJhdG9yKGl0
LCAicmVmIG5vZGUgJ0EnOyBwb2ludGVyIGFmdGVyIikpOwogaXQucHJldmlvdXNOb2RlKCk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDYuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDYuaHRtbAkocmV2
aXNpb24gMjk5NDgpCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDYu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDcgQEAKIDx0aXRsZT5UcmF2ZXJzYWwgVGVz
dDwvdGl0bGU+IAogPC9oZWFkPiAKIDxib2R5PgotPGRpdiBpZD0idGVzdCI+Ci08c3BhbiBpZD0i
QSI+PC9zcGFuPjxzcGFuIGlkPSJCIj48L3NwYW4+PHNwYW4gaWQ9IkMiPjwvc3Bhbj4KLTwvZGl2
PgorPGRpdiBpZD0idGVzdCI+PHNwYW4gaWQ9IkEiPjwvc3Bhbj48c3BhbiBpZD0iQiI+PC9zcGFu
PjxzcGFuIGlkPSJDIj48L3NwYW4+PC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LWZhbWlseTogQ291
cmllcjsgZm9udC1zaXplOiAxNDsiPgogPHNjcmlwdD4KIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1pdGVyYXRvci0wMDZh
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvbm9kZS1p
dGVyYXRvci0wMDZhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Ry
YXZlcnNhbC9ub2RlLWl0ZXJhdG9yLTAwNmEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUgQEAKK0V4cGVjdCByZWYgbm9kZSAnQyc7IHBvaW50ZXIgYmVmb3JlOiBBIEIgKiBb
Q10KKworcmVtb3ZlIG5vZGUgJ0MnCisKK0V4cGVjdCByZWYgbm9kZSAnQic7IHBvaW50ZXIgYWZ0
ZXI6IEEgQgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL25vZGUt
aXRlcmF0b3ItMDA2YS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxl
CiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL25vZGUtaXRlcmF0b3It
MDA2YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYXZlcnNhbC9ub2RlLWl0ZXJh
dG9yLTAwNmEuaHRtbAkocmV2aXNpb24gMjk5NDgpCShmcm9tIExheW91dFRlc3RzL3RyYXZlcnNh
bC9ub2RlLWl0ZXJhdG9yLTAwNi5odG1sOjI5OTQ4KQorKysgTGF5b3V0VGVzdHMvdHJhdmVyc2Fs
L25vZGUtaXRlcmF0b3ItMDA2YS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcgQEAK
KzxodG1sPiAKKzxoZWFkPgorPHNjcmlwdCBzcmM9dHJhdmVyc2FsLmpzIGxhbmd1YWdlPSJKYXZh
U2NyaXB0IiB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiID48L3NjcmlwdD4KKzx0aXRsZT5UcmF2ZXJz
YWwgVGVzdDwvdGl0bGU+IAorPC9oZWFkPiAKKzxib2R5PgorPGRpdiBpZD0idGVzdCI+Cis8c3Bh
biBpZD0iQSI+PC9zcGFuPjxzcGFuIGlkPSJCIj48L3NwYW4+PHNwYW4gaWQ9IkMiPjwvc3Bhbj4K
KzwvZGl2PgorPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IENvdXJpZXI7IGZvbnQtc2l6ZTogMTQ7
Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIHJvb3QgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdCcpOworCitmdW5jdGlvbiB0ZXN0Tm9kZUZpdGVyKG4pCit7CisgICAg
aWYgKG4udGFnTmFtZSA9PSAnU1BBTicpIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQ7
CisgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7Cit9CisKK3ZhciBpdCA9IGRvY3Vt
ZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihyb290LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgdGVz
dE5vZGVGaXRlciwgZmFsc2UpOworZm9yIChpID0gMDsgaSA8IDM7IGkrKykKKyAgICBpdC5uZXh0
Tm9kZSgpOworIGl0LnByZXZpb3VzTm9kZSgpOworZG9jdW1lbnQud3JpdGUoZHVtcE5vZGVJdGVy
YXRvcihpdCwgInJlZiBub2RlICdDJzsgcG9pbnRlciBiZWZvcmUiKSk7CisKKy8vIHJlbW92ZSBu
b2RlICdDJworZG9jdW1lbnQud3JpdGUoIjxwPnJlbW92ZSBub2RlICdDJyIpOwordmFyIEQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQycpOworcm9vdC5yZW1vdmVDaGlsZChEKTsKK2RvY3Vt
ZW50LndyaXRlKGR1bXBOb2RlSXRlcmF0b3IoaXQsICJyZWYgbm9kZSAnQic7IHBvaW50ZXIgYWZ0
ZXIiKSk7Cis8L3NjcmlwdD4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLWZpbHRlci0xLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvdHJlZS13YWxrZXItZmlsdGVyLTEtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2Vy
LWZpbHRlci0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorUEFT
UzpQcm9wZXIgYS5maXJzdENoaWxkKCkKK1BBU1M6UHJvcGVyIGIuZmlyc3RDaGlsZCgpCitQQVNT
OlNob3VsZG4ndCBtb3ZlCitQQVNTOlByb3BlciBiLm5leHRTaWJsaW5nKCkKK1BBU1M6UHJvcGVy
IGMubmV4dFNpYmxpbmcoKQorUEFTUzpQcm9wZXIgZS5uZXh0U2libGluZygpCitQQVNTOlByb3Bl
ciBmLnByZXZpb3VzU2libGluZygpCitQQVNTOlByb3BlciBlLnByZXZpb3VzU2libGluZygpCitQ
QVNTOlNob3VsZG4ndCBtb3ZlCitQQVNTOlByb3BlciBoLnByZXZpb3VzU2libGluZygpCitQQVNT
OlByb3BlciBnLnByZXZpb3VzU2libGluZygpCitQQVNTOlByb3BlciBmLm5leHRTaWJsaW5nKCkK
K1BBU1M6UHJvcGVyIGYucGFyZW50Tm9kZSgpCitQQVNTOlByb3BlciBhLnBhcmVudE5vZGUoKQor
UEFTUzpQcm9wZXIgYSdzIHBhcmVudC5uZXh0Tm9kZSgpCitQQVNTOlJlLWNhcHR1cmUgIzEKK1BB
U1M6UmUtY2FwdHVyZSAjMgorUEFTUzpuZXh0Tm9kZSBmcm9tIGEKK1BBU1M6cHJldk5vZGUgdG8g
YQorQWxsIGRvbmUhCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwv
dHJlZS13YWxrZXItZmlsdGVyLTEtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVv
bC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC90cmVlLXdh
bGtlci1maWx0ZXItMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYXZlcnNhbC90
cmVlLXdhbGtlci1maWx0ZXItMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdHJh
dmVyc2FsL3RyZWUtd2Fsa2VyLWZpbHRlci0xLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTE3IEBACis8c2NyaXB0PgorZnVuY3Rpb24gZG9Mb2cobXNnKQoreworICAgIHZhciBkID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgZC5pbm5lckhUTUwgPSBtc2c7CisgICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkKTsKK30KKworZnVuY3Rpb24gcmVwb3J0KG1zZywg
cmVzKQoreworICAgIGlmIChyZXMpCisgICAgICAgIG1zZyA9ICI8Zm9udCBjb2xvcj1ncmVlbj5Q
QVNTOjwvZm9udD4iICsgbXNnOworICAgIGVsc2UKKyAgICAgICAgbXNnID0gIjxmb250IGNvbG9y
PXJlZD5GQUlMOjwvZm9udD4iICsgbXNnOworICAgIGRvTG9nKG1zZyk7Cit9CisKKy8qCisgVHJl
ZToKKyAgICBhCisgICAgICAgIGIKKyAgICAgICAgICAgIGMKKyAgICAgICAgZAorICAgICAgICAg
ICAgZQorICAgICAgICBmCisgICAgICAgIGcKKyAgICAgICAgICAgIGgKKyAgIGIsIGMgYXJlIHJl
amVjdGVkLAorICAgZCBpcyBza2lwcGVkLgorICAgZyBpcyByZWplY3RlZAorKi8KK2Z1bmN0aW9u
IGtpZChwYXJlbnQpIHsKKyAgICB2YXIgbmV3S2lkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKG5ld0tpZCk7CisgICAgcmV0dXJuIG5ld0tp
ZDsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAg
ICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOyAvLyBqdXN0IHRv
IGhhdmUgb25lIG1vcmUgbGV2ZWwgdXAuCisKKyAgICB2YXIgYSA9IGtpZCh3cmFwcGVyKTsKKyAg
ICAgICAgdmFyIGIgPSBraWQoYSk7CisgICAgICAgICAgICB2YXIgYyA9IGtpZChiKTsKKyAgICAg
ICAgdmFyIGQgPSBraWQoYSk7CisgICAgICAgICAgICB2YXIgZSA9IGtpZChkKTsKKyAgICAgICAg
dmFyIGYgPSBraWQoYSk7CisgICAgICAgIHZhciBnID0ga2lkKGEpOworICAgICAgICAgICAgdmFy
IGggPSBraWQoZyk7CisgICAgYS5zZXRBdHRyaWJ1dGUoImlkIiwgImEiKTsKKyAgICBiLnNldEF0
dHJpYnV0ZSgiaWQiLCAiYiIpOworICAgIGMuc2V0QXR0cmlidXRlKCJpZCIsICJjIik7CisgICAg
ZC5zZXRBdHRyaWJ1dGUoImlkIiwgImQiKTsKKyAgICBlLnNldEF0dHJpYnV0ZSgiaWQiLCAiZSIp
OworICAgIGYuc2V0QXR0cmlidXRlKCJpZCIsICJmIik7CisgICAgZy5zZXRBdHRyaWJ1dGUoImlk
IiwgImciKTsKKyAgICBoLnNldEF0dHJpYnV0ZSgiaWQiLCAiaCIpOworCisgICAgZnVuY3Rpb24g
ZmlsdGVyKG5vZGUpIHsKKyAgICAgICAgaWYgKG5vZGUgPT0gYiB8fCBub2RlID09IGMgfHwgbm9k
ZSA9PSBnKQorICAgICAgICAgICAgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1JFSkVDVDsKKyAg
ICAgICAgaWYgKG5vZGUgPT0gZCkKKyAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRF
Ul9TS0lQOworICAgICAgICByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOworICAgIH0K
KyAgICAKKyAgICB2YXIgdHcgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGEsIE5vZGVGaWx0
ZXIuU0hPV19BTEwsIGZpbHRlciwgdHJ1ZSk7CisgICAgcmVwb3J0KCJQcm9wZXIgYS5maXJzdENo
aWxkKCkiLCB0dy5maXJzdENoaWxkKCkgPT0gZSk7CisKKyAgICB0dy5jdXJyZW50Tm9kZSA9IGI7
CisgICAgcmVwb3J0KCJQcm9wZXIgYi5maXJzdENoaWxkKCkiLCB0dy5maXJzdENoaWxkKCkgPT0g
bnVsbCk7CisgICAgLy8gc2hvdWxkbid0IG1vdmUuCisgICAgcmVwb3J0KCJTaG91bGRuJ3QgbW92
ZSIsIHR3LmN1cnJlbnROb2RlID09IGIpOworCisgICAgdHcuY3VycmVudE5vZGUgPSBiOworICAg
IHJlcG9ydCgiUHJvcGVyIGIubmV4dFNpYmxpbmcoKSIsIHR3Lm5leHRTaWJsaW5nKCkgPT0gZSk7
CisKKyAgICAvLyBUaGlzIGlzIGJlY2F1c2Ugd2Ugc2hvdWxkIHRyZWF0ICdiJyBhcyBza2lwcGVk
IHdoZW4gd2UgYXJlIHVuZGVyIGl0LgorICAgIHR3LmN1cnJlbnROb2RlID0gYzsKKyAgICByZXBv
cnQoIlByb3BlciBjLm5leHRTaWJsaW5nKCkiLCB0dy5uZXh0U2libGluZygpID09IGUpOworCisg
ICAgdHcuY3VycmVudE5vZGUgPSBlOworICAgIHJlcG9ydCgiUHJvcGVyIGUubmV4dFNpYmxpbmco
KSIsIHR3Lm5leHRTaWJsaW5nKCkgPT0gZik7CisKKyAgICB0dy5jdXJyZW50Tm9kZSA9IGY7Cisg
ICAgcmVwb3J0KCJQcm9wZXIgZi5wcmV2aW91c1NpYmxpbmcoKSIsIHR3LnByZXZpb3VzU2libGlu
ZygpID09IGUpOworICAgIHR3LmN1cnJlbnROb2RlID0gZTsKKyAgICByZXBvcnQoIlByb3BlciBl
LnByZXZpb3VzU2libGluZygpIiwgdHcucHJldmlvdXNTaWJsaW5nKCkgPT0gbnVsbCk7CisgICAg
cmVwb3J0KCJTaG91bGRuJ3QgbW92ZSIsIHR3LmN1cnJlbnROb2RlID09IGUpOworCisgICAgdHcu
Y3VycmVudE5vZGUgPSBoOworICAgIHJlcG9ydCgiUHJvcGVyIGgucHJldmlvdXNTaWJsaW5nKCki
LCB0dy5wcmV2aW91c1NpYmxpbmcoKSA9PSBmKTsKKworICAgIHR3LmN1cnJlbnROb2RlID0gZzsK
KyAgICByZXBvcnQoIlByb3BlciBnLnByZXZpb3VzU2libGluZygpIiwgdHcucHJldmlvdXNTaWJs
aW5nKCkgPT0gZik7CisgICAgLy8gZiBpcyBnJ3MgcHJldmlvdXMgc2libGluZywgYnV0IG5vdCB0
aGUgb3RoZXIgd2F5IGFyb3VuZCA6LSkKKyAgICB0dy5jdXJyZW50Tm9kZSA9IGY7CisgICAgcmVw
b3J0KCJQcm9wZXIgZi5uZXh0U2libGluZygpIiwgdHcubmV4dFNpYmxpbmcoKSA9PSBudWxsKTsK
KyAgICByZXBvcnQoIlByb3BlciBmLnBhcmVudE5vZGUoKSIsIHR3LnBhcmVudE5vZGUoKSA9PSBh
KTsKKyAgICByZXBvcnQoIlByb3BlciBhLnBhcmVudE5vZGUoKSIsIHR3LnBhcmVudE5vZGUoKSA9
PSBudWxsKTsKKworICAgIC8vIFRlc3QgZXhpdC9jYXB0dXJlLgorICAgIHR3LmN1cnJlbnROb2Rl
ID0gYS5wYXJlbnROb2RlOworICAgIHJlcG9ydCgiUHJvcGVyIGEncyBwYXJlbnQubmV4dE5vZGUo
KSIsIHR3Lm5leHROb2RlKCkgPT0gYSk7CisgICAgLy8gU2hvdWxkIGdldCBjYXVnaHQuLgorICAg
IHJlcG9ydCgiUmUtY2FwdHVyZSAjMSIsIHR3LnByZXZpb3VzTm9kZSgpID09IG51bGwpOworICAg
IHJlcG9ydCgiUmUtY2FwdHVyZSAjMiIsIHR3LnBhcmVudE5vZGUoKSA9PSBudWxsKTsKKyAgICBy
ZXBvcnQoIm5leHROb2RlIGZyb20gYSIsIHR3Lm5leHROb2RlKCkgPT0gZSk7CisgICAgcmVwb3J0
KCJwcmV2Tm9kZSB0byBhIiwgdHcucHJldmlvdXNOb2RlKCkgPT0gYSk7CisKKyAgICBkb0xvZygi
QWxsIGRvbmUhIik7Cit9CisKKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL3RyZWUtd2Fsa2VyLWZpbHRl
ci0xLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCk5h
bWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJz
YWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwMS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRv
ci8wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRv
ci8wMDEtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5h
dGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAw
MS54bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRl
cmF0b3IvMDAxLnhtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhp
ZS1ub2RlLWl0ZXJhdG9yLzAwMS54bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKzxo
dG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyA8aGVhZD4KKyAgPHRp
dGxlPkRPTSBUcmF2ZXJzYWw6IE5vZGVJdGVyYXRvcjogQmFzaWNzPC90aXRsZT4KKyAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiA8IVtDREFUQVsKKyAgICBmdW5jdGlvbiBkb1Rlc3Qo
KSB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICB2YXIgaXRlcmF0b3IgPSBkb2N1bWVudC5jcmVh
dGVOb2RlSXRlcmF0b3IoZG9jdW1lbnQsIE5vZGVGaWx0ZXIuU0hPV19BTEwsIG51bGwsIGZhbHNl
KTsKKyAgICAgIHZhciBleHBlY3RlZCA9IG5ldyBBcnJheSg5LCAvLyBkb2N1bWVudAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEsIC8vIGh0bWwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLCAxLCAvLyBoZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MywgMSwgMywgLy8gdGl0bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLCAxLCAz
LCA0LCAvLyBzY3JpcHQgYW5kIENEQVRBIGJsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMywgMywgMSwgLy8gYm9keQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMs
IDEsIDMsIC8vIHByZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMsIC8vIDwvYm9k
eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLCA4LCAvLyA8IS0tIC0tPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMsIDcsIC8vIDw/ID8+LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMsIDQsIDMpOyAvLyBDREFUQQorICAgICAgdmFyIGZvdW5kID0g
bmV3IEFycmF5KCk7CisKKyAgICAgIC8vIHdhbGsgZG9jdW1lbnQKKyAgICAgIHZhciBub2RlOwor
ICAgICAgd2hpbGUgKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKQorICAgICAgICBmb3VuZC5w
dXNoKG5vZGUubm9kZVR5cGUpOworCisgICAgICAvLyBjaGVjayByZXN1bHRzCisgICAgICB2YXIg
ZXJyb3JzID0gMDsKKyAgICAgIHZhciBzID0gJyc7CisgICAgICB2YXIgbGVuZ3RoID0gKGZvdW5k
Lmxlbmd0aCA+IGV4cGVjdGVkLmxlbmd0aCkgPyBmb3VuZC5sZW5ndGggOiBleHBlY3RlZC5sZW5n
dGg7CisgICAgICBzICs9ICdFWFBFQ1RFRCAgRk9VTkRcbic7CisgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7CisgICAgICAgIHMgKz0gJyAgJyArIChleHBlY3RlZFtp
XSA/IGV4cGVjdGVkW2ldIDogJy0nKSArCisgICAgICAnICAgICAgICAgJyArIChmb3VuZFtpXSA/
IGZvdW5kW2ldIDogJy0nKTsKKyAgICAgICAgaWYgKGZvdW5kW2ldICE9IGV4cGVjdGVkW2ldKSB7
CisgICAgICAgICAgcyArPSAnICAgICAgTUlTTUFUQ0gnOworICAgICAgICAgIGVycm9ycyArPSAx
OworICAgICAgICB9CisgICAgICAgIHMgKz0gJ1xuJzsKKyAgICAgIH0KKyAgICAgIHZhciBwID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCcsICdwcmUnKVswXTsKKyAgICAgIGlmIChlcnJvcnMpCisgICAgICAgIHAuZmlyc3RDaGls
ZC5kYXRhID0gJ0ZBSUw6ICcgKyBlcnJvcnMgKyAnIGVycm9ycyBmb3VuZDpcblxuJyArIHM7Cisg
ICAgICBlbHNlCisgICAgICAgIHAuZmlyc3RDaGlsZC5kYXRhID0gJ1BBU1MnOworICAgIH0KKyAg
XV0+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorICA8cHJl
IGlkPSJyZXN1bHQiPkZBSUw6IFNjcmlwdCBmYWlsZWQgdG8gcnVuLjwvcHJlPgorIDwvYm9keT4K
KyA8IS0tIHNvbWUgbW9yZSBub2RlcyB0byB0ZXN0IHRoaXM6IC0tPgorIDw/dGVzdCBub2RlPz4K
KyA8IVtDREFUQVsgXV0+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDAyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVy
YXRvci8wMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSBAQAorUEFTUwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDAyLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwv
aGl4aWUtbm9kZS1pdGVyYXRvci8wMDIueG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Ry
YXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwMi54bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDIueG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU1IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbCI+CisgPGhlYWQ+CisgIDx0aXRsZT5ET00gVHJhdmVyc2FsOiBOb2RlSXRlcmF0b3I6IEJh
c2ljcyBCYWNrd2FyZHM8L3RpdGxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
IDwhW0NEQVRBWworICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKKyAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRvcihkb2N1bWVudCwg
Tm9kZUZpbHRlci5TSE9XX0FMTCwgbnVsbCwgZmFsc2UpOworICAgICAgdmFyIGV4cGVjdGVkID0g
bmV3IEFycmF5KDksIC8vIGRvY3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MSwgLy8gaHRtbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMsIDEsIC8vIGhlYWQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLCAxLCAzLCAvLyB0aXRsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMsIDEsIDMsIDQsIC8vIHNjcmlwdCBhbmQgQ0RBVEEg
YmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLCAzLCAxLCAvLyBib2R5Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMywgMSwgMywgLy8gcHJlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMywgLy8gPC9ib2R5PgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMsIDgsIC8vIDwhLS0gLS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMywgNywgLy8gPD8gPz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMywgNCwg
Myk7IC8vIENEQVRBCisgICAgICB2YXIgZm91bmQgPSBuZXcgQXJyYXkoKTsKKworICAgICAgLy8g
d2FsayBkb2N1bWVudAorICAgICAgdmFyIG5vZGU7CisgICAgICB3aGlsZSAobm9kZSA9IGl0ZXJh
dG9yLm5leHROb2RlKCkpOworICAgICAgd2hpbGUgKG5vZGUgPSBpdGVyYXRvci5wcmV2aW91c05v
ZGUoKSkKKyAgICAgICAgZm91bmQudW5zaGlmdChub2RlLm5vZGVUeXBlKTsKKworICAgICAgLy8g
Y2hlY2sgcmVzdWx0cworICAgICAgdmFyIGVycm9ycyA9IDA7CisgICAgICB2YXIgcyA9ICcnOwor
ICAgICAgdmFyIGxlbmd0aCA9IChmb3VuZC5sZW5ndGggPiBleHBlY3RlZC5sZW5ndGgpID8gZm91
bmQubGVuZ3RoIDogZXhwZWN0ZWQubGVuZ3RoOworICAgICAgcyArPSAnRVhQRUNURUQgIEZPVU5E
XG4nOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkgeworICAgICAg
ICBzICs9ICcgICcgKyAoZXhwZWN0ZWRbaV0gPyBleHBlY3RlZFtpXSA6ICctJykgKworICAgICAg
JyAgICAgICAgICcgKyAoZm91bmRbaV0gPyBmb3VuZFtpXSA6ICctJyk7CisgICAgICAgIGlmIChm
b3VuZFtpXSAhPSBleHBlY3RlZFtpXSkgeworICAgICAgICAgIHMgKz0gJyAgICAgIE1JU01BVENI
JzsKKyAgICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAgICAgfQorICAgICAgICBzICs9ICdcbic7
CisgICAgICB9CisgICAgICB2YXIgcCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMo
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAncHJlJylbMF07CisgICAgICBpZiAoZXJy
b3JzKQorICAgICAgICBwLmZpcnN0Q2hpbGQuZGF0YSA9ICdGQUlMOiAnICsgZXJyb3JzICsgJyBl
cnJvcnMgZm91bmQ6XG5cbicgKyBzOworICAgICAgZWxzZQorICAgICAgICBwLmZpcnN0Q2hpbGQu
ZGF0YSA9ICdQQVNTJzsKKyAgICB9CisgIF1dPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBv
bmxvYWQ9ImRvVGVzdCgpIj4KKyAgPHByZSBpZD0icmVzdWx0Ij5GQUlMOiBTY3JpcHQgZmFpbGVk
IHRvIHJ1bi48L3ByZT4KKyA8L2JvZHk+CisgPCEtLSBzb21lIG1vcmUgbm9kZXMgdG8gdGVzdCB0
aGlzOiAtLT4KKyA8P3Rlc3Qgbm9kZT8+CisgPCFbQ0RBVEFbIF1dPgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1u
b2RlLWl0ZXJhdG9yLzAwMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
dHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwMy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorUEFTUworCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDMt
ZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoK
SW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwMy54bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3Iv
MDAzLnhtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2Rl
LWl0ZXJhdG9yLzAwMy54bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKzxodG1sIHht
bG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyA8aGVhZD4KKyAgPHRpdGxlPkRP
TSBUcmF2ZXJzYWw6IE5vZGVJdGVyYXRvcjogUmVtb3ZhbCBvZiBub2RlcyB0aGF0IHNob3VsZCBo
YXZlIG5vIGVmZmVjdDwvdGl0bGU+CisgIDwhLS0KKyAgIFRoaXMgdGVzdHMgdGhlc2UgY2FzZXMg
dGhhdCBzaG91bGQgaGF2ZSBubyBlZmZlY3Q6CisgICAgMS4gUmVtb3ZlIGEgbm9kZSB1bnJlbGF0
ZWQgdG8gdGhlIHJlZmVyZW5jZSBub2RlCisgICAgMi4gUmVtb3ZlIGFuIGFuY2VzdG9yIG9mIHRo
ZSByb290IG5vZGUKKyAgICAzLiBSZW1vdmUgdGhlIHJvb3Qgbm9kZSBpdHNlbGYKKyAgICA0LiBS
ZW1vdmUgZGVzY2VuZGFudCBvZiByZWZlcmVuY2Ugbm9kZQorICAtLT4KKyAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPiA8IVtDREFUQVsKKyAgICB2YXIgZXJyb3JzID0gMDsKKyAgICB2
YXIgbG9nID0gJyc7CisgICAgZnVuY3Rpb24gZG9UZXN0KCkgeworICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyb290JyksIE5vZGVGaWx0ZXIuU0hPV19BTEwsIG51bGwsIGZhbHNl
KTsKKyAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAg
ICAgIHZhciBBID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0EnKTsKKyAgICAgIHZhciBCID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0InKTsKKyAgICAgIHZhciBDID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ0MnKTsKKyAgICAgIHZhciBEID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J0QnKTsKKyAgICAgIHZhciBFID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0UnKTsKKyAgICAg
IGNoZWNrKGl0ZXJhdG9yLm5leHROb2RlKCksIHJvb3QpOworICAgICAgcmVtb3ZlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdYJykpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwg
QSk7CisgICAgICByZW1vdmUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1knKSk7CisgICAgICBj
aGVjayhpdGVyYXRvci5uZXh0Tm9kZSgpLCBCKTsKKyAgICAgIHJlbW92ZShyb290KTsKKyAgICAg
IGNoZWNrKGl0ZXJhdG9yLm5leHROb2RlKCksIEMpOworICAgICAgcmVtb3ZlKEUpOworICAgICAg
Y2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwgRCk7CisgICAgICBpZiAoZXJyb3JzKQorICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuZmlyc3RDaGlsZC5kYXRhID0gJ0ZB
SUw6ICcgKyBlcnJvcnMgKyAnIGVycm9yczpcbicgKyBsb2c7CisgICAgICBlbHNlCisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5maXJzdENoaWxkLmRhdGEgPSAnUEFT
Uyc7CisgICAgfQorICAgIGZ1bmN0aW9uIGNoZWNrKGEsIGIpIHsKKyAgICAgIGlmICghYSkgewor
ICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAgICAgbG9nICs9ICdGb3VuZCBudWxsIGJ1dCBleHBl
Y3RlZCAnICsgYiArICcgKCcgKyBiLmlkICsgJykuXG4nOworICAgICAgfSBlbHNlIGlmIChhICE9
IGIpIHsKKyAgICAgICAgZXJyb3JzICs9IDE7CisgICAgICAgIGxvZyArPSAnRm91bmQgJyArIGEg
KyAnICgnICsgYS5pZCArICcpIGJ1dCBleHBlY3RlZCAnICsgYiArICcgKCcgKyBiLmlkICsgJyku
XG4nOworICAgICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiByZW1vdmUoYSkgeworICAgICAgaWYg
KCFhKSB7CisgICAgICAgIGVycm9ycyArPSAxOworICAgICAgICBsb2cgKz0gJ1RyaWVkIHJlbW92
aW5nIG51bGwgbm9kZS5cbic7CisgICAgICB9IGVsc2UKKyAgICAgIGEucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChhKTsKKyAgICB9CisgIF1dPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBvbmxv
YWQ9ImRvVGVzdCgpIj4KKyAgPHByZSBpZD0icmVzdWx0Ij5GQUlMOiBTY3JpcHQgZGlkIG5vdCBj
b21wbGV0ZS48L3ByZT4KKyAgPHA+PHNwYW4gaWQ9IlgiPjwvc3Bhbj48c3BhbiBpZD0iWSI+PHNw
YW4gaWQ9InJvb3QiPjxzcGFuIGlkPSJBIj48c3BhbiBpZD0iQiI+PHNwYW4gaWQ9IkMiPjxzcGFu
IGlkPSJEIj48c3BhbiBpZD0iRSI+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48
L3NwYW4+PC9zcGFuPjwvcD4KKyA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3Iv
MDA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4
aWUtbm9kZS1pdGVyYXRvci8wMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyIEBACitQQVNTCisKClByb3BlcnR5IGNoYW5nZXMgb246IExh
eW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNC1leHBlY3RlZC50eHQK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0
VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA0LnhtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDQueG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA0
LnhtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgorIDxoZWFkPgorICA8dGl0bGU+RE9NIFRyYXZlcnNhbDog
Tm9kZUl0ZXJhdG9yOiBSZW1vdmFsIG9mIHRoZSBSZWZlcmVuY2UgTm9kZTwvdGl0bGU+CisgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4gPCFbQ0RBVEFbCisgICAgdmFyIGVycm9ycyA9
IDA7CisgICAgdmFyIGxvZyA9ICcnOworICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKKyAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJdGVyYXRv
cihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpLCBOb2RlRmlsdGVyLlNIT1dfQUxMLCBu
dWxsLCBmYWxzZSk7CisgICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
b290Jyk7CisgICAgICB2YXIgQSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdBJyk7CisgICAg
ICB2YXIgQUEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQUEnKTsKKyAgICAgIHZhciBCID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0InKTsKKyAgICAgIHZhciBDID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ0MnKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHROb2RlKCksIHJvb3Qp
OworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwgQSk7CisgICAgICBjaGVjayhpdGVy
YXRvci5uZXh0Tm9kZSgpLCBBQSk7CisgICAgICBjaGVjayhpdGVyYXRvci5uZXh0Tm9kZSgpLCBC
KTsKKyAgICAgIHJlbW92ZShCKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLnByZXZpb3VzTm9kZSgp
LCBBQSk7CisgICAgICByZW1vdmUoQUEpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUo
KSwgQyk7CisgICAgICBpZiAoZXJyb3JzKQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuZmlyc3RDaGlsZC5kYXRhID0gJ0ZBSUw6ICcgKyBlcnJvcnMgKyAnIGVycm9y
czpcbicgKyBsb2c7CisgICAgICBlbHNlCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHQnKS5maXJzdENoaWxkLmRhdGEgPSAnUEFTUyc7CisgICAgfQorICAgIGZ1bmN0aW9u
IGNoZWNrKGEsIGIpIHsKKyAgICAgIGlmICghYSkgeworICAgICAgICBlcnJvcnMgKz0gMTsKKyAg
ICAgICAgbG9nICs9ICdGb3VuZCBudWxsIGJ1dCBleHBlY3RlZCAnICsgYiArICcgKCcgKyBiLmlk
ICsgJykuXG4nOworICAgICAgfSBlbHNlIGlmIChhICE9IGIpIHsKKyAgICAgICAgZXJyb3JzICs9
IDE7CisgICAgICAgIGxvZyArPSAnRm91bmQgJyArIGEgKyAnICgnICsgYS5pZCArICcpIGJ1dCBl
eHBlY3RlZCAnICsgYiArICcgKCcgKyBiLmlkICsgJykuXG4nOworICAgICAgfQorICAgIH0KKyAg
ICBmdW5jdGlvbiByZW1vdmUoYSkgeworICAgICAgaWYgKCFhKSB7CisgICAgICAgIGVycm9ycyAr
PSAxOworICAgICAgICBsb2cgKz0gJ1RyaWVkIHJlbW92aW5nIG51bGwgbm9kZS5cbic7CisgICAg
ICB9IGVsc2UKKyAgICAgIGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKTsKKyAgICB9CisgIF1d
Pjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KKyAgPHByZSBp
ZD0icmVzdWx0Ij5GQUlMOiBTY3JpcHQgZGlkIG5vdCBjb21wbGV0ZS48L3ByZT4KKyAgPHA+PHNw
YW4gaWQ9InJvb3QiPjxzcGFuIGlkPSJBIj48c3BhbiBpZD0iQUEiPjwvc3Bhbj48L3NwYW4+PHNw
YW4gaWQ9IkIiPjwvc3Bhbj48c3BhbiBpZD0iQyI+PHNwYW4gaWQ9IkNDIj48L3NwYW4+PC9zcGFu
Pjwvc3Bhbj48L3A+CisgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5v
ZGUtaXRlcmF0b3IvMDA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMiBAQAorUEFTUworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDUtZXhwZWN0ZWQudHh0Cl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3Rz
L3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNS54bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA1LnhtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNS54bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj4KKyA8aGVhZD4KKyAgPHRpdGxlPkRPTSBUcmF2ZXJzYWw6IE5vZGVJ
dGVyYXRvcjogUmVtb3ZhbCBvZiB0aGUgUmVmZXJlbmNlIE5vZGUgKGRlZXAgY2hlY2spPC90aXRs
ZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiA8IVtDREFUQVsKKyAgICB2YXIg
ZXJyb3JzID0gMDsKKyAgICB2YXIgbG9nID0gJyc7CisgICAgZnVuY3Rpb24gZG9UZXN0KCkgewor
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9k
ZUl0ZXJhdG9yKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JyksIE5vZGVGaWx0ZXIuU0hP
V19BTEwsIG51bGwsIGZhbHNlKTsKKyAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jvb3QnKTsKKyAgICAgIHZhciBBID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0En
KTsKKyAgICAgIHZhciBBQSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdBQScpOworICAgICAg
dmFyIEIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQicpOworICAgICAgdmFyIEMgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnQycpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUo
KSwgcm9vdCk7CisgICAgICBjaGVjayhpdGVyYXRvci5uZXh0Tm9kZSgpLCBBKTsKKyAgICAgIGNo
ZWNrKGl0ZXJhdG9yLm5leHROb2RlKCksIEFBKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHRO
b2RlKCksIEIpOworICAgICAgcmVtb3ZlKEIpOworICAgICAgdmFyIFggPSBhZGRDaGlsZFRvKEFB
KTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHROb2RlKCksIFgpOworICAgICAgY2hlY2soaXRl
cmF0b3IucHJldmlvdXNOb2RlKCksIFgpOworICAgICAgcmVtb3ZlKFgpOworICAgICAgdmFyIFkg
PSBhZGRDaGlsZFRvKEFBKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLnByZXZpb3VzTm9kZSgpLCBZ
KTsKKyAgICAgIGlmIChlcnJvcnMpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5maXJzdENoaWxkLmRhdGEgPSAnRkFJTDogJyArIGVycm9ycyArICcgZXJyb3JzOlxu
JyArIGxvZzsKKyAgICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmZpcnN0Q2hpbGQuZGF0YSA9ICdQQVNTJzsKKyAgICB9CisgICAgZnVuY3Rpb24gY2hl
Y2soYSwgYikgeworICAgICAgaWYgKCFhKSB7CisgICAgICAgIGVycm9ycyArPSAxOworICAgICAg
ICBsb2cgKz0gJ0ZvdW5kIG51bGwgYnV0IGV4cGVjdGVkICcgKyBiICsgJyAoJyArIGIuaWQgKyAn
KS5cbic7CisgICAgICB9IGVsc2UgaWYgKGEgIT0gYikgeworICAgICAgICBlcnJvcnMgKz0gMTsK
KyAgICAgICAgbG9nICs9ICdGb3VuZCAnICsgYSArICcgKCcgKyBhLmlkICsgJykgYnV0IGV4cGVj
dGVkICcgKyBiICsgJyAoJyArIGIuaWQgKyAnKS5cbic7CisgICAgICB9CisgICAgfQorICAgIGZ1
bmN0aW9uIHJlbW92ZShhKSB7CisgICAgICBpZiAoIWEpIHsKKyAgICAgICAgZXJyb3JzICs9IDE7
CisgICAgICAgIGxvZyArPSAnVHJpZWQgcmVtb3ZpbmcgbnVsbCBub2RlLlxuJzsKKyAgICAgIH0g
ZWxzZQorICAgICAgYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpOworICAgIH0KKyAgICBmdW5j
dGlvbiBhZGRDaGlsZFRvKGEpIHsKKyAgICAgIHZhciB4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dE5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ3NwYW4nKTsKKyAgICAgIGEuYXBw
ZW5kQ2hpbGQoeCk7CisgICAgICByZXR1cm4geDsKKyAgICB9CisgIF1dPjwvc2NyaXB0PgorIDwv
aGVhZD4KKyA8Ym9keSBvbmxvYWQ9ImRvVGVzdCgpIj4KKyAgPHByZSBpZD0icmVzdWx0Ij5GQUlM
OiBTY3JpcHQgZGlkIG5vdCBjb21wbGV0ZS48L3ByZT4KKyAgPHA+PHNwYW4gaWQ9InJvb3QiPjxz
cGFuIGlkPSJBIj48c3BhbiBpZD0iQUEiPjwvc3Bhbj48L3NwYW4+PHNwYW4gaWQ9IkIiPjwvc3Bh
bj48c3BhbiBpZD0iQyI+PHNwYW4gaWQ9IkNDIj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3A+Cisg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA2
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhp
ZS1ub2RlLWl0ZXJhdG9yLzAwNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MiBAQAorUEFTUworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwv
aGl4aWUtbm9kZS1pdGVyYXRvci8wMDYtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3Zu
OmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhp
ZS1ub2RlLWl0ZXJhdG9yLzAwNi54bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA2LnhtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNi54bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDggQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
Ij4KKyA8aGVhZD4KKyAgPHRpdGxlPkRPTSBUcmF2ZXJzYWw6IE5vZGVJdGVyYXRvcjogUmVtb3Zh
bCBvZiBhbiBhbmNlc3RvciBvZiB0aGUgUmVmZXJlbmNlIE5vZGUgKGZvcndhcmRzKTwvdGl0bGU+
CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4gPCFbQ0RBVEFbCisgICAgdmFyIGVy
cm9ycyA9IDA7CisgICAgdmFyIGxvZyA9ICcnOworICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKKyAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgIHZhciBpdGVyYXRvciA9IGRvY3VtZW50LmNyZWF0ZU5vZGVJ
dGVyYXRvcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9vdCcpLCBOb2RlRmlsdGVyLlNIT1df
QUxMLCBudWxsLCBmYWxzZSk7CisgICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyb290Jyk7CisgICAgICB2YXIgQSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdBJyk7
CisgICAgICB2YXIgQiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdCJyk7CisgICAgICB2YXIg
QkIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQkInKTsKKyAgICAgIHZhciBDID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ0MnKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHROb2RlKCks
IHJvb3QpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwgQSk7CisgICAgICBjaGVj
ayhpdGVyYXRvci5uZXh0Tm9kZSgpLCBCKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHROb2Rl
KCksIEJCKTsKKyAgICAgIHJlbW92ZShCKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLnByZXZpb3Vz
Tm9kZSgpLCBBKTsKKyAgICAgIGlmIChlcnJvcnMpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5maXJzdENoaWxkLmRhdGEgPSAnRkFJTDogJyArIGVycm9ycyArICcg
ZXJyb3JzOlxuJyArIGxvZzsKKyAgICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmZpcnN0Q2hpbGQuZGF0YSA9ICdQQVNTJzsKKyAgICB9CisgICAgZnVu
Y3Rpb24gY2hlY2soYSwgYikgeworICAgICAgaWYgKCFhKSB7CisgICAgICAgIGVycm9ycyArPSAx
OworICAgICAgICBsb2cgKz0gJ0ZvdW5kIG51bGwgYnV0IGV4cGVjdGVkICcgKyBiICsgJyAoJyAr
IGIuaWQgKyAnKS5cbic7CisgICAgICB9IGVsc2UgaWYgKGEgIT0gYikgeworICAgICAgICBlcnJv
cnMgKz0gMTsKKyAgICAgICAgbG9nICs9ICdGb3VuZCAnICsgYSArICcgKCcgKyBhLmlkICsgJykg
YnV0IGV4cGVjdGVkICcgKyBiICsgJyAoJyArIGIuaWQgKyAnKS5cbic7CisgICAgICB9CisgICAg
fQorICAgIGZ1bmN0aW9uIHJlbW92ZShhKSB7CisgICAgICBpZiAoIWEpIHsKKyAgICAgICAgZXJy
b3JzICs9IDE7CisgICAgICAgIGxvZyArPSAnVHJpZWQgcmVtb3ZpbmcgbnVsbCBub2RlLlxuJzsK
KyAgICAgIH0gZWxzZQorICAgICAgYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpOworICAgIH0K
KyAgXV0+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IG9ubG9hZD0iZG9UZXN0KCkiPgorICA8
cHJlIGlkPSJyZXN1bHQiPkZBSUw6IFNjcmlwdCBkaWQgbm90IGNvbXBsZXRlLjwvcHJlPgorICA8
cD48c3BhbiBpZD0icm9vdCI+PHNwYW4gaWQ9IkEiPjwvc3Bhbj48c3BhbiBpZD0iQiI+PHNwYW4g
aWQ9IkJCIj48L3NwYW4+PC9zcGFuPjxzcGFuIGlkPSJDIj48L3NwYW4+PC9zcGFuPjwvcD4KKyA8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1p
dGVyYXRvci8wMDctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYXZl
cnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDctZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1BBU1MKKwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA3LWV4cGVj
dGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4
OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDcueG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwNy54
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVy
YXRvci8wMDcueG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACis8aHRtbCB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgPGhlYWQ+CisgIDx0aXRsZT5ET00gVHJh
dmVyc2FsOiBOb2RlSXRlcmF0b3I6IFJlbW92YWwgb2YgYW4gYW5jZXN0b3Igb2YgdGhlIFJlZmVy
ZW5jZSBOb2RlIChmb3J3YXJkcykgKGRlZXAgY2hlY2spPC90aXRsZT4KKyAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPiA8IVtDREFUQVsKKyAgICB2YXIgZXJyb3JzID0gMDsKKyAgICB2
YXIgbG9nID0gJyc7CisgICAgZnVuY3Rpb24gZG9UZXN0KCkgeworICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyb290JyksIE5vZGVGaWx0ZXIuU0hPV19BTEwsIG51bGwsIGZhbHNl
KTsKKyAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAg
ICAgIHZhciBBID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0EnKTsKKyAgICAgIHZhciBCID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0InKTsKKyAgICAgIHZhciBCQiA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdCQicpOworICAgICAgdmFyIEMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnQycpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwgcm9vdCk7CisgICAgICBj
aGVjayhpdGVyYXRvci5uZXh0Tm9kZSgpLCBBKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHRO
b2RlKCksIEIpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwgQkIpOworICAgICAg
cmVtb3ZlKEIpOworICAgICAgdmFyIFggPSBhZGRDaGlsZFRvKEEpOworICAgICAgY2hlY2soaXRl
cmF0b3IubmV4dE5vZGUoKSwgWCk7CisgICAgICBpZiAoZXJyb3JzKQorICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuZmlyc3RDaGlsZC5kYXRhID0gJ0ZBSUw6ICcgKyBl
cnJvcnMgKyAnIGVycm9yczpcbicgKyBsb2c7CisgICAgICBlbHNlCisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5maXJzdENoaWxkLmRhdGEgPSAnUEFTUyc7CisgICAg
fQorICAgIGZ1bmN0aW9uIGNoZWNrKGEsIGIpIHsKKyAgICAgIGlmICghYSkgeworICAgICAgICBl
cnJvcnMgKz0gMTsKKyAgICAgICAgbG9nICs9ICdGb3VuZCBudWxsIGJ1dCBleHBlY3RlZCAnICsg
YiArICcgKCcgKyBiLmlkICsgJykuXG4nOworICAgICAgfSBlbHNlIGlmIChhICE9IGIpIHsKKyAg
ICAgICAgZXJyb3JzICs9IDE7CisgICAgICAgIGxvZyArPSAnRm91bmQgJyArIGEgKyAnICgnICsg
YS5pZCArICcpIGJ1dCBleHBlY3RlZCAnICsgYiArICcgKCcgKyBiLmlkICsgJykuXG4nOworICAg
ICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiByZW1vdmUoYSkgeworICAgICAgaWYgKCFhKSB7Cisg
ICAgICAgIGVycm9ycyArPSAxOworICAgICAgICBsb2cgKz0gJ1RyaWVkIHJlbW92aW5nIG51bGwg
bm9kZS5cbic7CisgICAgICB9IGVsc2UKKyAgICAgIGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChh
KTsKKyAgICB9CisgICAgZnVuY3Rpb24gYWRkQ2hpbGRUbyhhKSB7CisgICAgICB2YXIgeCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdz
cGFuJyk7CisgICAgICB4LmlkID0gJ1gnOworICAgICAgYS5hcHBlbmRDaGlsZCh4KTsKKyAgICAg
IHJldHVybiB4OworICAgIH0KKyAgXV0+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IG9ubG9h
ZD0iZG9UZXN0KCkiPgorICA8cHJlIGlkPSJyZXN1bHQiPkZBSUw6IFNjcmlwdCBkaWQgbm90IGNv
bXBsZXRlLjwvcHJlPgorICA8cD48c3BhbiBpZD0icm9vdCI+PHNwYW4gaWQ9IkEiPjwvc3Bhbj48
c3BhbiBpZD0iQiI+PHNwYW4gaWQ9IkJCIj48L3NwYW4+PC9zcGFuPjxzcGFuIGlkPSJDIj48L3Nw
YW4+PC9zcGFuPjwvcD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy90cmF2
ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwOC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVy
YXRvci8wMDgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK1BBU1MK
KwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUt
aXRlcmF0b3IvMDA4LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUK
ICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVy
YXRvci8wMDgueG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1u
b2RlLWl0ZXJhdG9yLzAwOC54bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy90cmF2ZXJz
YWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMDgueG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5
IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgPGhlYWQ+
CisgIDx0aXRsZT5ET00gVHJhdmVyc2FsOiBOb2RlSXRlcmF0b3I6IFJlbW92YWwgb2YgYW4gYW5j
ZXN0b3Igb2YgdGhlIFJlZmVyZW5jZSBOb2RlIChiYWNrd2FyZHMpPC90aXRsZT4KKyAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiA8IVtDREFUQVsKKyAgICB2YXIgZXJyb3JzID0gMDsK
KyAgICB2YXIgbG9nID0gJyc7CisgICAgZnVuY3Rpb24gZG9UZXN0KCkgeworICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JyksIE5vZGVGaWx0ZXIuU0hPV19BTEwsIG51bGws
IGZhbHNlKTsKKyAgICAgIHZhciByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3Qn
KTsKKyAgICAgIHZhciBBID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0EnKTsKKyAgICAgIHZh
ciBCID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0InKTsKKyAgICAgIHZhciBCQiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdCQicpOworICAgICAgdmFyIEMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnQycpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwgcm9vdCk7Cisg
ICAgICBjaGVjayhpdGVyYXRvci5uZXh0Tm9kZSgpLCBBKTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9y
Lm5leHROb2RlKCksIEIpOworICAgICAgY2hlY2soaXRlcmF0b3IubmV4dE5vZGUoKSwgQkIpOwor
ICAgICAgY2hlY2soaXRlcmF0b3IucHJldmlvdXNOb2RlKCksIEJCKTsKKyAgICAgIHJlbW92ZShC
KTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHROb2RlKCksIEMpOworICAgICAgaWYgKGVycm9y
cykKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmZpcnN0Q2hpbGQu
ZGF0YSA9ICdGQUlMOiAnICsgZXJyb3JzICsgJyBlcnJvcnM6XG4nICsgbG9nOworICAgICAgZWxz
ZQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuZmlyc3RDaGlsZC5k
YXRhID0gJ1BBU1MnOworICAgIH0KKyAgICBmdW5jdGlvbiBjaGVjayhhLCBiKSB7CisgICAgICBp
ZiAoIWEpIHsKKyAgICAgICAgZXJyb3JzICs9IDE7CisgICAgICAgIGxvZyArPSAnRm91bmQgbnVs
bCBidXQgZXhwZWN0ZWQgJyArIGIgKyAnICgnICsgYi5pZCArICcpLlxuJzsKKyAgICAgIH0gZWxz
ZSBpZiAoYSAhPSBiKSB7CisgICAgICAgIGVycm9ycyArPSAxOworICAgICAgICBsb2cgKz0gJ0Zv
dW5kICcgKyBhICsgJyAoJyArIGEuaWQgKyAnKSBidXQgZXhwZWN0ZWQgJyArIGIgKyAnICgnICsg
Yi5pZCArICcpLlxuJzsKKyAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gcmVtb3ZlKGEpIHsK
KyAgICAgIGlmICghYSkgeworICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAgICAgbG9nICs9ICdU
cmllZCByZW1vdmluZyBudWxsIG5vZGUuXG4nOworICAgICAgfSBlbHNlCisgICAgICBhLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoYSk7CisgICAgfQorICBdXT48L3NjcmlwdD4KKyA8L2hlYWQ+Cisg
PGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+CisgIDxwcmUgaWQ9InJlc3VsdCI+RkFJTDogU2NyaXB0
IGRpZCBub3QgY29tcGxldGUuPC9wcmU+CisgIDxwPjxzcGFuIGlkPSJyb290Ij48c3BhbiBpZD0i
QSI+PC9zcGFuPjxzcGFuIGlkPSJCIj48c3BhbiBpZD0iQkIiPjwvc3Bhbj48L3NwYW4+PHNwYW4g
aWQ9IkMiPjwvc3Bhbj48L3NwYW4+PC9wPgorIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwOS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA5
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhp
ZS1ub2RlLWl0ZXJhdG9yLzAwOS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MiBAQAorUEFTUworCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy90cmF2ZXJzYWwv
aGl4aWUtbm9kZS1pdGVyYXRvci8wMDktZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3Zu
OmVvbC1zdHlsZQogICArIG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhp
ZS1ub2RlLWl0ZXJhdG9yLzAwOS54bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVy
c2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDA5LnhtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAwOS54bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTYgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1s
Ij4KKyA8aGVhZD4KKyAgPHRpdGxlPkRPTSBUcmF2ZXJzYWw6IE5vZGVJdGVyYXRvcjogUmVtb3Zh
bCBvZiBhbiBhbmNlc3RvciBvZiB0aGUgUmVmZXJlbmNlIE5vZGUgKGJhY2t3YXJkcykgKGRlZXAg
Y2hlY2spPC90aXRsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiA8IVtDREFU
QVsKKyAgICB2YXIgZXJyb3JzID0gMDsKKyAgICB2YXIgbG9nID0gJyc7CisgICAgZnVuY3Rpb24g
ZG9UZXN0KCkgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1l
bnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JyksIE5v
ZGVGaWx0ZXIuU0hPV19BTEwsIG51bGwsIGZhbHNlKTsKKyAgICAgIHZhciByb290ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jvb3QnKTsKKyAgICAgIHZhciBBID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ0EnKTsKKyAgICAgIHZhciBCID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0In
KTsKKyAgICAgIHZhciBCQiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdCQicpOworICAgICAg
dmFyIEMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnQycpOworICAgICAgY2hlY2soaXRlcmF0
b3IubmV4dE5vZGUoKSwgcm9vdCk7CisgICAgICBjaGVjayhpdGVyYXRvci5uZXh0Tm9kZSgpLCBB
KTsKKyAgICAgIGNoZWNrKGl0ZXJhdG9yLm5leHROb2RlKCksIEIpOworICAgICAgY2hlY2soaXRl
cmF0b3IubmV4dE5vZGUoKSwgQkIpOworICAgICAgY2hlY2soaXRlcmF0b3IucHJldmlvdXNOb2Rl
KCksIEJCKTsKKyAgICAgIHJlbW92ZShCKTsKKyAgICAgIHZhciBYID0gYWRkQ2hpbGRUbyhBKTsK
KyAgICAgIGNoZWNrKGl0ZXJhdG9yLnByZXZpb3VzTm9kZSgpLCBYKTsKKyAgICAgIGlmIChlcnJv
cnMpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5maXJzdENoaWxk
LmRhdGEgPSAnRkFJTDogJyArIGVycm9ycyArICcgZXJyb3JzOlxuJyArIGxvZzsKKyAgICAgIGVs
c2UKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmZpcnN0Q2hpbGQu
ZGF0YSA9ICdQQVNTJzsKKyAgICB9CisgICAgZnVuY3Rpb24gY2hlY2soYSwgYikgeworICAgICAg
aWYgKCFhKSB7CisgICAgICAgIGVycm9ycyArPSAxOworICAgICAgICBsb2cgKz0gJ0ZvdW5kIG51
bGwgYnV0IGV4cGVjdGVkICcgKyBiICsgJyAoJyArIGIuaWQgKyAnKS5cbic7CisgICAgICB9IGVs
c2UgaWYgKGEgIT0gYikgeworICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAgICAgbG9nICs9ICdG
b3VuZCAnICsgYSArICcgKCcgKyBhLmlkICsgJykgYnV0IGV4cGVjdGVkICcgKyBiICsgJyAoJyAr
IGIuaWQgKyAnKS5cbic7CisgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHJlbW92ZShhKSB7
CisgICAgICBpZiAoIWEpIHsKKyAgICAgICAgZXJyb3JzICs9IDE7CisgICAgICAgIGxvZyArPSAn
VHJpZWQgcmVtb3ZpbmcgbnVsbCBub2RlLlxuJzsKKyAgICAgIH0gZWxzZQorICAgICAgYS5wYXJl
bnROb2RlLnJlbW92ZUNoaWxkKGEpOworICAgIH0KKyAgICBmdW5jdGlvbiBhZGRDaGlsZFRvKGEp
IHsKKyAgICAgIHZhciB4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sJywgJ3NwYW4nKTsKKyAgICAgIHguaWQgPSAnWCc7CisgICAgICBhLmFw
cGVuZENoaWxkKHgpOworICAgICAgcmV0dXJuIHg7CisgICAgfQorICBdXT48L3NjcmlwdD4KKyA8
L2hlYWQ+CisgPGJvZHkgb25sb2FkPSJkb1Rlc3QoKSI+CisgIDxwcmUgaWQ9InJlc3VsdCI+RkFJ
TDogU2NyaXB0IGRpZCBub3QgY29tcGxldGUuPC9wcmU+CisgIDxwPjxzcGFuIGlkPSJyb290Ij48
c3BhbiBpZD0iQSI+PC9zcGFuPjxzcGFuIGlkPSJCIj48c3BhbiBpZD0iQkIiPjwvc3Bhbj48L3Nw
YW4+PHNwYW4gaWQ9IkMiPjwvc3Bhbj48L3NwYW4+PC9wPgorIDwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAxMC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRl
cmF0b3IvMDEwLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZl
cnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAxMC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEgQEAKK1BBU1MKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3RyYXZl
cnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yLzAxMC1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1l
OiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMvdHJhdmVyc2Fs
L2hpeGllLW5vZGUtaXRlcmF0b3IvMDEwLnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90
cmF2ZXJzYWwvaGl4aWUtbm9kZS1pdGVyYXRvci8wMTAueG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUtaXRlcmF0b3IvMDEwLnhtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NSBAQAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwiPgorIDxoZWFkPgorICA8dGl0bGU+RE9NIFRyYXZlcnNhbDogTm9kZUl0ZXJhdG9yOiBG
aWx0ZXJzPC90aXRsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiA8IVtDREFU
QVsKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICB2YXIg
aXRlcmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoZG9jdW1lbnQsIE5vZGVGaWx0
ZXIuU0hPV19BTEwsIHRlc3RGaWx0ZXIsIGZhbHNlKTsKKyAgICAgIC8vIHNraXBzIHRleHQgbm9k
ZXMgYW5kIGJvZHkgZWxlbWVudAorICAgICAgdmFyIGV4cGVjdGVkID0gbmV3IEFycmF5KDksIC8v
IGRvY3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLy8gaHRtbAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIC8vIGhlYWQKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLCAvLyB0aXRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsIDQsIC8vIHNjcmlwdCBhbmQgQ0RBVEEgYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBib2R5IChza2lwcGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsIC8vIHByZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDwvYm9keT4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCAvLyA8IS0tIC0tPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIFBJIHNraXBwZWQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0KTsgLy8gQ0RBVEEKKyAgICAgIHZhciBmb3VuZCA9IG5ldyBBcnJheSgpOworCisg
ICAgICAvLyB3YWxrIGRvY3VtZW50CisgICAgICB2YXIgbm9kZTsKKyAgICAgIHdoaWxlIChub2Rl
ID0gaXRlcmF0b3IubmV4dE5vZGUoKSkKKyAgICAgICAgZm91bmQucHVzaChub2RlLm5vZGVUeXBl
KTsKKworICAgICAgLy8gY2hlY2sgcmVzdWx0cworICAgICAgdmFyIGVycm9ycyA9IDA7CisgICAg
ICB2YXIgcyA9ICcnOworICAgICAgdmFyIGxlbmd0aCA9IChmb3VuZC5sZW5ndGggPiBleHBlY3Rl
ZC5sZW5ndGgpID8gZm91bmQubGVuZ3RoIDogZXhwZWN0ZWQubGVuZ3RoOworICAgICAgcyArPSAn
RVhQRUNURUQgIEZPVU5EXG4nOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkg
Kz0gMSkgeworICAgICAgICBzICs9ICcgICcgKyAoZXhwZWN0ZWRbaV0gPyBleHBlY3RlZFtpXSA6
ICctJykgKworICAgICAgJyAgICAgICAgICcgKyAoZm91bmRbaV0gPyBmb3VuZFtpXSA6ICctJyk7
CisgICAgICAgIGlmIChmb3VuZFtpXSAhPSBleHBlY3RlZFtpXSkgeworICAgICAgICAgIHMgKz0g
JyAgICAgIE1JU01BVENIJzsKKyAgICAgICAgICBlcnJvcnMgKz0gMTsKKyAgICAgICAgfQorICAg
ICAgICBzICs9ICdcbic7CisgICAgICB9CisgICAgICB2YXIgcCA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lTlMoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAncHJlJylbMF07
CisgICAgICBpZiAoZXJyb3JzKQorICAgICAgICBwLmZpcnN0Q2hpbGQuZGF0YSA9ICdGQUlMOiAn
ICsgZXJyb3JzICsgJyBlcnJvcnMgZm91bmQ6XG5cbicgKyBzOworICAgICAgZWxzZQorICAgICAg
ICBwLmZpcnN0Q2hpbGQuZGF0YSA9ICdQQVNTJzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
RmlsdGVyKG4pIHsKKyAgICAgIGlmIChuLm5vZGVUeXBlID09IDMpIHsKKyAgICAgICAgcmV0dXJu
IE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7CisgICAgICB9IGVsc2UgaWYgKG4ubm9kZU5hbWUgPT0g
J2JvZHknKSB7CisgICAgICAgIHJldHVybiBOb2RlRmlsdGVyLkZJTFRFUl9SRUpFQ1Q7IC8vIHNh
bWUgYXMgX1NLSVAKKyAgICAgIH0KKyAgICAgIHJldHVybiAxOyAvLyBGSUxURVJfQUNDRVBUCisg
ICAgfQorCisgIF1dPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBvbmxvYWQ9ImRvVGVzdCgp
Ij4KKyAgPHByZSBpZD0icmVzdWx0Ij5GQUlMOiBTY3JpcHQgZmFpbGVkIHRvIHJ1bi48L3ByZT4K
KyA8L2JvZHk+CisgPCEtLSBzb21lIG1vcmUgbm9kZXMgdG8gdGVzdCB0aGlzOiAtLT4KKyA8P2Jv
ZHkgdGVzdD8+CisgPCFbQ0RBVEFbIF1dPgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yL29y
aWdpbi50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL2hpeGllLW5vZGUt
aXRlcmF0b3Ivb3JpZ2luLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNh
bC9oaXhpZS1ub2RlLWl0ZXJhdG9yL29yaWdpbi50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTAgQEAKK0kgZ290IHRoZXNlIHRlc3RzIGZyb20gaHR0cDovL3d3dy5oaXhpZS5jaC90ZXN0cy9h
ZGhvYy9kb20vdHJhdmVyc2FsL25vZGUtaXRlcmF0b3IvIG9uIEZlYnJ1YXJ5IDMsIDIwMDguCitU
aGUgb25seSBjaGFuZ2VzIEkgbWFkZSB3ZXJlOgorCisgICAgMSkgQWRkIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKSBjYWxscyB0byBlYWNoIHRlc3QuCisKKyAgICAyKSBDaGFuZ2Vk
IHRoZSA8IVtDREFUQVtdXT4gbmVhciB0aGUgYm90dG9tIG9mIHRlc3RzIDAwMSwgMDAyLCBhbmQg
MDEwIHRvCisgICAgICAgPCFbQ0RBVEFbIF1dPiB0byB3b3JrIGFyb3VuZCA8aHR0cDovL2J1Z3pp
bGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE0MTgxPi4KKyAgICAgICBXaXRob3V0IHRo
ZSBzcGFjZSwgdGhlIHBhcnNlciBvbWl0cyB0aGUgQ2hhcmFjdGVyRGF0YSBub2RlLCBjYXVzaW5n
IHRoZSB0ZXN0cyB0byBmYWlsLgorCisgICAgLS0gRGFyaW4KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL3RyYXZlcnNhbC9oaXhpZS1ub2RlLWl0ZXJhdG9yL29yaWdpbi50eHQKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVz
dHMvdHJhdmVyc2FsL3Jlc291cmNlcy9URU1QTEFURS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3RyYXZlcnNhbC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbAkocmV2aXNpb24gMjk5NDgp
CShmcm9tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWw6Mjk5NDgp
CisrKyBMYXlvdXRUZXN0cy90cmF2ZXJzYWwvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9IllP
VVJfSlNfRklMRV9IRVJFIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3RyYXZlcnNhbC9yZXNvdXJjZXMvVEVNUExBVEUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy90cmF2ZXJzYWwvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy90cmF2ZXJzYWwvcmVzb3VyY2VzL1RFTVBMQVRFLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTMgKzEsMTMgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InJlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxz
Y3JpcHQgc3JjPSJZT1VSX0pTX0ZJTEVfSEVSRSI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL3RyYXZlcnNhbC9yZXNvdXJjZXMvZXhjZXB0aW9uLWZvcndhcmRp
bmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdHJhdmVyc2FsL3Jlc291cmNlcy9leGNl
cHRpb24tZm9yd2FyZGluZy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3RyYXZlcnNh
bC9yZXNvdXJjZXMvZXhjZXB0aW9uLWZvcndhcmRpbmcuanMJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzIgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IG9mIGV4Y2VwdGlvbiBmb3J3YXJkaW5nIGZvciBO
b2RlSXRlcmF0b3IgYW5kIFRyZWVXYWxrZXIsIGRlcml2ZWQgZnJvbSBhbiBlYXJseSB2ZXJzaW9u
IG9mIEFjaWQzIik7CisKK3ZhciBpdGVyYXRpb24gPSAwOworZnVuY3Rpb24gdGVzdChub2RlKQor
eworICAgIGl0ZXJhdGlvbiArPSAxOworICAgIHN3aXRjaCAoaXRlcmF0aW9uKSB7CisgICAgICAg
IGNhc2UgMTogY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNjogY2FzZSA3OiBjYXNlIDg6IGNhc2UgOTog
Y2FzZSAxMjogdGhyb3cgIlJvc2VzIjsKKyAgICAgICAgY2FzZSAyOiBjYXNlIDU6IGNhc2UgMTA6
IGNhc2UgMTE6IHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OiB0aHJvdyAwOworICAgIH0K
K30KKwordmFyIGkgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LCAweEZGRkZGRkZGLCB0ZXN0LCB0cnVlKTsKK3Nob3VsZFRocm93KCJpLm5leHRO
b2RlKCkiKTsgLy8gMQorc2hvdWxkQmUoImkubmV4dE5vZGUoKSIsICJkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQiKTsgLy8gMgorc2hvdWxkVGhyb3coImkucHJldmlvdXNOb2RlKCkiKTsgLy8gMwor
dmFyIHcgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCwgMHhGRkZGRkZGRiwgdGVzdCwgdHJ1ZSk7CitzaG91bGRUaHJvdygidy5uZXh0Tm9kZSgpIik7
IC8vIDQKK3Nob3VsZEJlKCJ3Lm5leHROb2RlKCkiLCAiZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LmZpcnN0Q2hpbGQiKTsgLy8gNQorc2hvdWxkVGhyb3coIncucHJldmlvdXNOb2RlKCkiKTsgLy8g
Ngorc2hvdWxkVGhyb3coIncuZmlyc3RDaGlsZCgpIik7IC8vIDcKK3Nob3VsZFRocm93KCJ3Lmxh
c3RDaGlsZCgpIik7IC8vIDgKK3Nob3VsZFRocm93KCJ3Lm5leHRTaWJsaW5nKCkiKTsgLy8gOQor
c2hvdWxkQmUoIncucHJldmlvdXNTaWJsaW5nKCkiLCAibnVsbCIpOworc2hvdWxkQmUoIncubmV4
dFNpYmxpbmcoKSIsICJkb2N1bWVudC5ib2R5Iik7IC8vIDEwCitzaG91bGRCZSgidy5wcmV2aW91
c1NpYmxpbmcoKSIsICJkb2N1bWVudC5ib2R5LnByZXZpb3VzU2libGluZyIpOyAvLyAxMQorc2hv
dWxkQmUoIml0ZXJhdGlvbiIsICIxMSIpOworCit2YXIgc3VjY2VzZnVsbHlQYXJzZWQgPSB0cnVl
OworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="8250"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>