<?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>114677</bug_id>
          
          <creation_ts>2013-04-16 03:29:50 -0700</creation_ts>
          <short_desc>Reimplement ContainerNode::removeChildren</short_desc>
          <delta_ts>2023-05-28 09:28:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Bucur">abucur</reporter>
          <assigned_to name="Andrei Bucur">abucur</assigned_to>
          <cc>annevk</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>esprehn</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>876497</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-16 03:29:50 -0700</bug_when>
    <thetext>ContainerNode::removeChildren tries to process all the nodes in bulk. This leads to a lot of issues because synchronous scripts can modify the DOM tree while the nodes are still processed.
Reimplement removeChildren to remove the nodes one by one. Evaluate the performance impact and possible optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876506</commentid>
    <comment_count>1</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-16 04:14:04 -0700</bug_when>
    <thetext>*** Bug 113517 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876508</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-16 04:14:43 -0700</bug_when>
    <thetext>*** Bug 113433 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876559</commentid>
    <comment_count>3</comment_count>
      <attachid>198331</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-16 08:36:15 -0700</bug_when>
    <thetext>Created attachment 198331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876608</commentid>
    <comment_count>4</comment_count>
      <attachid>198331</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-16 10:38:56 -0700</bug_when>
    <thetext>Comment on attachment 198331
Patch

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

What is the performance impact this change?  Do you see any change when you run Parser/html5-full-render.html?

&gt; Source/WebCore/dom/ContainerNode.cpp:457
&gt; +void ContainerNode::disconnectDescendantFrames()

Could you add these function elsewhere so that the diff looks saner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876856</commentid>
    <comment_count>5</comment_count>
      <attachid>198427</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-16 14:07:41 -0700</bug_when>
    <thetext>Created attachment 198427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877086</commentid>
    <comment_count>6</comment_count>
      <attachid>198485</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-17 02:17:21 -0700</bug_when>
    <thetext>Created attachment 198485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877356</commentid>
    <comment_count>7</comment_count>
      <attachid>198485</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-17 10:08:07 -0700</bug_when>
    <thetext>Comment on attachment 198485
Patch

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

The code looks much better!  Would you also mind running Dromaeo and see if we have any perf. regressions there?

&gt; Source/WebCore/dom/ContainerNode.cpp:362
&gt; +// Returns false if the the node was moved and it can&apos;t be removed any more.
&gt; +bool ContainerNode::removeChildInternal(Node* child)

I think we can rename the function to something like removeChildInternalIfPossible and remove the comment.
Also, this function should take PassRefPtr&lt;Node&gt; to be safe.
If not, you should at least store it locally in a RefPtr.

&gt; Source/WebCore/dom/ContainerNode.cpp:385
&gt; +    // Notify the mutation observers the node will be removed.

This comment repeats what the code says. Please remove it.

&gt; Source/WebCore/dom/ContainerNode.cpp:395
&gt; +    WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates;
&gt; +
&gt; +    Node* prev = child-&gt;previousSibling();
&gt; +    Node* next = child-&gt;nextSibling();
&gt; +    removeBetween(prev, next, child);
&gt; +    childrenChanged(false, prev, next, -1);
&gt; +    ChildNodeRemovalNotifier(this).notify(child);

I would prefer adding curly brackets around here explicitly to signify the order.

&gt; Source/WebCore/dom/ContainerNode.cpp:586
&gt; +        RefPtr&lt;Node&gt; child = m_firstChild;
&gt; +        removeChildInternal(child.get());

It seems like we can just do removeChildInternal(m_firstChild);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877367</commentid>
    <comment_count>8</comment_count>
      <attachid>198485</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-17 10:42:14 -0700</bug_when>
    <thetext>Comment on attachment 198485
Patch

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

I&apos;d also like add a new test for mutation observers... something like set a DOMNodeRemoved mutation event listener on a node, remove one of its children with removeChild and in the handler put the Node somewhere else with appendChild. With the current code, I think you get the node removed mutation record twice in the end.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:362
&gt;&gt; +bool ContainerNode::removeChildInternal(Node* child)
&gt; 
&gt; I think we can rename the function to something like removeChildInternalIfPossible and remove the comment.
&gt; Also, this function should take PassRefPtr&lt;Node&gt; to be safe.
&gt; If not, you should at least store it locally in a RefPtr.

The renaming sounds good. I though about the RefPtr stuff, I wanted to be an obligation of the caller to protect the node. But you&apos;re right, it&apos;s safer and more decoupled to just have the removeChildInternal function guard the node. Who knows where it will be used later on.

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:385
&gt;&gt; +    // Notify the mutation observers the node will be removed.
&gt; 
&gt; This comment repeats what the code says. Please remove it.

I imagined you would say this :).

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:395
&gt;&gt; +    ChildNodeRemovalNotifier(this).notify(child);
&gt; 
&gt; I would prefer adding curly brackets around here explicitly to signify the order.

I&apos;ve intentionally removed the brackets because they are no longer necessary. You want me to add them back to suggest &quot;the widget tree can&apos;t be changed while the DOM tree is mutated&quot;, right?

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:586
&gt;&gt; +        removeChildInternal(child.get());
&gt; 
&gt; It seems like we can just do removeChildInternal(m_firstChild);

True but then I&apos;m afraid someone might get hasty and just use the freed up Node somehow. But that&apos;s probably a silly worry to have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877372</commentid>
    <comment_count>9</comment_count>
      <attachid>198485</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-17 10:45:59 -0700</bug_when>
    <thetext>Comment on attachment 198485
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:586
&gt;&gt;&gt; +        removeChildInternal(child.get());
&gt;&gt; 
&gt;&gt; It seems like we can just do removeChildInternal(m_firstChild);
&gt; 
&gt; True but then I&apos;m afraid someone might get hasty and just use the freed up Node somehow. But that&apos;s probably a silly worry to have.

That&apos;s why I would like removeChildInternal to take a PassRefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877394</commentid>
    <comment_count>10</comment_count>
      <attachid>198485</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-04-17 11:15:49 -0700</bug_when>
    <thetext>Comment on attachment 198485
Patch

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

This is going to execute childrenChanged() repeatedly which makes a couple things n^2 (attrNode.innerHTML which is likely very rare, and fieldset.innerHTML which likely real) and looks like it might cause other perf regressions. You&apos;ll want to really test this.

ex. Now if you have &lt;div&gt;&lt;span/&gt;#text #text #text&lt;span/&gt;&lt;/div&gt; and div:first-child {} we&apos;ll walk through those #text nodes 4 times.

These cases might all be rare enough not to matter, I&apos;m not confident we have coverage of using all the fancy selectors checked for in checkForSiblingStyleChanges that also go through innerHTML though.

&gt;&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:362
&gt;&gt;&gt; +bool ContainerNode::removeChildInternal(Node* child)
&gt;&gt; 
&gt;&gt; I think we can rename the function to something like removeChildInternalIfPossible and remove the comment.
&gt;&gt; Also, this function should take PassRefPtr&lt;Node&gt; to be safe.
&gt;&gt; If not, you should at least store it locally in a RefPtr.
&gt; 
&gt; The renaming sounds good. I though about the RefPtr stuff, I wanted to be an obligation of the caller to protect the node. But you&apos;re right, it&apos;s safer and more decoupled to just have the removeChildInternal function guard the node. Who knows where it will be used later on.

You want a PassRefPtr&lt;&gt;, this thing takes ownership and then disposes of it.

&gt; Source/WebCore/dom/ContainerNode.cpp:394
&gt; +    childrenChanged(false, prev, next, -1);

This looks like a perf regression. You&apos;re executing childrenChanged N times now instead of once. For example you go through checkForSiblingStyleChanges, Document::updateRangesAfterChildrenChanged, and Node::invalidateNodeListCachesInAncestors for every child when before we only did this once.

This also makes attrNode.innerHTML and fieldset.innerHTML O(n^2) since they walk every child.

&gt; Source/WebCore/dom/ContainerNode.cpp:585
&gt; +        RefPtr&lt;Node&gt; child = m_firstChild;

You can make this whole loop one line as:

while (RefPtr&lt;Node&gt; child = m_firstChild)
  removeChildInternal(child.release());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877411</commentid>
    <comment_count>11</comment_count>
      <attachid>198485</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-17 11:45:26 -0700</bug_when>
    <thetext>Comment on attachment 198485
Patch

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

&gt;&gt; Source/WebCore/dom/ContainerNode.cpp:394
&gt;&gt; +    childrenChanged(false, prev, next, -1);
&gt; 
&gt; This looks like a perf regression. You&apos;re executing childrenChanged N times now instead of once. For example you go through checkForSiblingStyleChanges, Document::updateRangesAfterChildrenChanged, and Node::invalidateNodeListCachesInAncestors for every child when before we only did this once.
&gt; 
&gt; This also makes attrNode.innerHTML and fieldset.innerHTML O(n^2) since they walk every child.

Unfortunately that&apos;s exactly what we need to fix. invalidateNodeListCachesInAncestors needs to be called between each script invocation.
Performance isn&apos;t a great excuse for having a security vulnerability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877435</commentid>
    <comment_count>12</comment_count>
      <attachid>198596</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-17 12:46:19 -0700</bug_when>
    <thetext>Created attachment 198596
Dromaeo-dom

Test results w/o (left) and w/ the patch (right).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877437</commentid>
    <comment_count>13</comment_count>
      <attachid>198596</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-17 12:48:38 -0700</bug_when>
    <thetext>Comment on attachment 198596
Dromaeo-dom

Grrr... didn&apos;t see the abs path in the file.
/Dromaeo/dom-attr:Runs	runs/s	123.94	± 0.62%	124.29	± 0.48%	
/Dromaeo/dom-modify:Runs	runs/s	56.35	± 1.09%	55.51	± 1.05%	1.49% Worse 
/Dromaeo/dom-query:Runs	runs/s	203.28	± 1.17%	211.93	± 3.04%	4.25% Better
/Dromaeo/dom-traverse:Runs	runs/s	181.33	± 0.45%	178.99	± 0.75%	1.29% Worse</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877871</commentid>
    <comment_count>14</comment_count>
      <attachid>198733</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-18 06:49:17 -0700</bug_when>
    <thetext>Created attachment 198733
Dromaeo All Test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877874</commentid>
    <comment_count>15</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2013-04-18 06:57:55 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=198733) [details]
&gt; Dromaeo All Test results

/Dromaeo/jslib-attr-jquery:Runs seems to be worst affected, a few percents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877948</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-18 09:56:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=198733) [details]
&gt; Dromaeo All Test results

You don&apos;t need to upload an archive. Just upload the html file and everything will magically work. It&apos;s designed that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877949</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-04-18 09:57:36 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Created an attachment (id=198733) [details] [details]
&gt; &gt; Dromaeo All Test results
&gt; 
&gt; /Dromaeo/jslib-attr-jquery:Runs seems to be worst affected, a few percents.

It seems like we should investigate why the score of this benchmark got worse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172577</commentid>
    <comment_count>18</comment_count>
      <attachid>198485</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-09 09:43:31 -0800</bug_when>
    <thetext>Comment on attachment 198485
Patch

If we still want to do this we need a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1958528</commentid>
    <comment_count>19</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2023-05-28 09:28:48 -0700</bug_when>
    <thetext>No new patch in many years, let&apos;s close.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198331</attachid>
            <date>2013-04-16 08:36:15 -0700</date>
            <delta_ts>2013-04-16 14:07:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114677-20130416183547.patch</filename>
            <type>text/plain</type>
            <size>17788</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkyOWJmOWMxZWNiZGIy
MzNkODRlNWVjOGZkYTdjNjcyOWE5YzRlNS4uZDcxOTE0ODZkMDY2ZDI2ZmVkZmRhMzEwMjFiM2M1
NDZhYmMyYWUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTA0LTE2ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50IENvbnRh
aW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTQ2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbiB0cmllcyB0byBy
ZW1vdmUgYWxsIHRoZSBjaGlsZHJlbiBpbiBidWxrLiBUaGlzCisgICAgICAgIG1lYW5zIHRoZSBz
eW5jaHJvbm91cyBzY3JpcHRzIGV4ZWN1dGluZyBkdXJpbmcgdGhlIHJlbW92YWwgY2FuIGxlYXZl
IHRoZSBkb2N1bWVudAorICAgICAgICBpbiBhIGJhZCBzdGF0ZS4KKyAgICAgICAgVGhlIHBhdGNo
IHJlaW1wbGVtZW50cyB0aGUgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4gZnVuY3Rpb24g
dXNpbmcgYSBmYXN0ZXIKKyAgICAgICAgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQgdmVyc2lv
biwgcmVtb3ZlRmlyc3RDaGlsZEZhc3QuIFRoaXMgZnVuY3Rpb24gYWxzbyBub3RpZmllcworICAg
ICAgICB0aGUgbXV0YXRpb24gb2JzZXJ2ZXJzIHRoZSBub2RlIHdpbGwgYmUgcmVtb3ZlZCBvbmx5
IGFmdGVyIHdlIGFyZSBzdXJlIGl0IHdpbGwgYmUgZG9uZS4KKyAgICAgICAgVGhpcyBnaXZlcyBz
aW1pbGFyIHJlc3VsdHMgdG8gRmlyZUZveCBpbiBvbmUgb2YgdGhlIHRlc3RzLCBhZGRlZC1vdXQt
b2Ytb3JkZXIuaHRtbC4KKyAgICAgICAgSSBoYXZlbid0IG5vdGljZWQgYW55IHBlcmZvcm1hbmNl
IGRlZ3JhZGF0aW9uIHdpdGggdGhlIHBhdGNoLiBUaGlzIGNvdWxkIGJlIGV4cGxhaW5lZAorICAg
ICAgICBieSB0aGUgaHVnZSBudW1iZXIgb2YgbG9vcHMgKGF0IGxlYXN0IDQpIHRocm91Z2ggdGhl
IGNoaWxkcmVuIGxpc3QgYW5kIHNuYXBzaG90dGluZworICAgICAgICB0aGF0IGFyZSBtYWRlIGJ5
IENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuIGFuZCB0aGF0IGFyZSBnb25lIHdpdGggdGhl
IHBhdGNoLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hp
bGRyZW4tZXZlbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbXV0YXRpb24tZHVy
aW5nLWlubmVySFRNTC5odG1sCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVGaXJzdENoaWxkRmFzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAg
ICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOiBBZGRlZCBw
cml2YXRlIGZ1bmN0aW9uIHJlbW92ZUZpcnN0Q2hpbGRGYXN0LgorCiAyMDEzLTA0LTE0ICBKYWVo
dW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW2NzczMtdGV4dF0g
UGFyc2luZyAtd2Via2l0LWhhbmdpbmcgdmFsdWUgZm9yIHRleHQtaW5kZW50IGZyb20gY3NzMy10
ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNDljYzg1NzA0ZTQwNTY0
OTY4YWYwZDFjNWYzOTk3N2NmMjMyODY4Yy4uZmViMjlkOTVhYmJhYTdkYzBmZTgyMzk4YzRmNTZm
ZTI5NTQwZjAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNDU0LDI5
ICs0NTQsNDggQEAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZUNoaWxkKE5vZGUqIGNoaWxkKQogICAg
IENoaWxkRnJhbWVEaXNjb25uZWN0b3IoY2hpbGQpLmRpc2Nvbm5lY3QoKTsKIH0KIAotc3RhdGlj
IHZvaWQgd2lsbFJlbW92ZUNoaWxkcmVuKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikKK3ZvaWQg
Q29udGFpbmVyTm9kZTo6ZGlzY29ubmVjdERlc2NlbmRhbnRGcmFtZXMoKQogewotICAgIE5vZGVW
ZWN0b3IgY2hpbGRyZW47Ci0gICAgZ2V0Q2hpbGROb2Rlcyhjb250YWluZXIsIGNoaWxkcmVuKTsK
KyAgICBDaGlsZEZyYW1lRGlzY29ubmVjdG9yKHRoaXMpLmRpc2Nvbm5lY3QoKTsKK30KIAotICAg
IGNvbnRhaW5lci0+ZG9jdW1lbnQoKS0+bm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChjb250YWlu
ZXIpOwordm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVGaXJzdENoaWxkRmFzdCgpCit7CisgICAg
QVNTRVJUKG1fZmlyc3RDaGlsZCk7CiAKLSAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0
aW9uKGNvbnRhaW5lcik7Ci0gICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9
IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVuZCgpOyArK2l0KSB7Ci0gICAgICAg
IE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOwotICAgICAgICBtdXRhdGlvbi53aWxsUmVtb3ZlQ2hp
bGQoY2hpbGQpOwotICAgICAgICBjaGlsZC0+bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2ls
bERldGFjaCgpOworICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZDsKIAotICAg
ICAgICAvLyBmaXJlIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBtdXRhdGlvbiBldmVudHMuCi0gICAg
ICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkKTsKLSAgICB9CisgICAgZG9jdW1l
bnQoKS0+cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUoY2hpbGQuZ2V0KCkpOwogCi0gICAgQ2hp
bGRGcmFtZURpc2Nvbm5lY3Rvcihjb250YWluZXIpLmRpc2Nvbm5lY3QoQ2hpbGRGcmFtZURpc2Nv
bm5lY3Rvcjo6RGVzY2VuZGFudHNPbmx5KTsKLX0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgZG9jdW1lbnQoKS0+cmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRPZlN1YnRyZWUoY2hpbGQu
Z2V0KCkpOworI2VuZGlmCiAKLXZvaWQgQ29udGFpbmVyTm9kZTo6ZGlzY29ubmVjdERlc2NlbmRh
bnRGcmFtZXMoKQotewotICAgIENoaWxkRnJhbWVEaXNjb25uZWN0b3IodGhpcykuZGlzY29ubmVj
dCgpOworICAgIC8vIEV2ZW50cyBmaXJlZCB3aGVuIGJsdXJyaW5nIGN1cnJlbnRseSBmb2N1c2Vk
IG5vZGUgbWlnaHQgaGF2ZSBtb3ZlZCB0aGlzCisgICAgLy8gY2hpbGQgaW50byBhIGRpZmZlcmVu
dCBwYXJlbnQuCisgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkgIT0gdGhpcykKKyAgICAgICAg
cmV0dXJuOworCisgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hpbGQuZ2V0KCkpOwor
ICAgIGNoaWxkLT5kb2N1bWVudCgpLT5ub2RlV2lsbEJlUmVtb3ZlZChjaGlsZC5nZXQoKSk7Cisg
ICAgQ2hpbGRGcmFtZURpc2Nvbm5lY3RvcihjaGlsZC5nZXQoKSkuZGlzY29ubmVjdCgpOworCisg
ICAgLy8gTXV0YXRpb24gZXZlbnRzIG1pZ2h0IGhhdmUgbW92ZWQgdGhpcyBjaGlsZCBpbnRvIGEg
ZGlmZmVyZW50IHBhcmVudC4KKyAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUoKSAhPSB0aGlzKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3RpZnkgdGhlIG11dGF0aW9uIG9ic2VydmVycyB0
aGUgbm9kZSB3aWxsIGJlIHJlbW92ZWQuCisgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSh0aGlz
KS53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCkpOworICAgIGNoaWxkLT5ub3RpZnlNdXRhdGlv
bk9ic2VydmVyc05vZGVXaWxsRGV0YWNoKCk7CisKKyAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
U3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOworCisgICAgLy8g
VGhlIHByZXZpb3VzIG5vZGUgbWF5IG5vdCBiZSAwIGlmIHRoZSBldmVudCBoYW5kbGVycyBtb3Zl
ZCBpdC4KKyAgICBOb2RlKiBwcmV2ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpOworICAgIE5v
ZGUqIG5leHQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICByZW1vdmVCZXR3ZWVuKHByZXYs
IG5leHQsIGNoaWxkLmdldCgpKTsKKyAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIHByZXYsIG5l
eHQsIC0xKTsKKyAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxk
LmdldCgpKTsKIH0KIAogYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBvbGRD
aGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC01OTQsNTkgKzYxMywxMCBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKIAogICAgIC8vIFRoZSBjb250YWluZXIgbm9kZSBj
YW4gYmUgcmVtb3ZlZCBmcm9tIGV2ZW50IGhhbmRsZXJzLgogICAgIFJlZlB0cjxDb250YWluZXJO
b2RlPiBwcm90ZWN0KHRoaXMpOworICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24o
dGhpcyk7CiAKLSAgICAvLyBleGNsdWRlIHRoaXMgbm9kZSB3aGVuIGxvb2tpbmcgZm9yIHJlbW92
ZWQgZm9jdXNlZE5vZGUgc2luY2Ugb25seSBjaGlsZHJlbiB3aWxsIGJlIHJlbW92ZWQKLSAgICBk
b2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZSh0aGlzLCB0cnVlKTsKLQotI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBkb2N1bWVudCgpLT5yZW1vdmVGdWxsU2NyZWVu
RWxlbWVudE9mU3VidHJlZSh0aGlzLCB0cnVlKTsKLSNlbmRpZgotCi0gICAgLy8gRG8gYW55IHBy
ZXAgd29yayBuZWVkZWQgYmVmb3JlIGFjdHVhbGx5IHN0YXJ0aW5nIHRvIGRldGFjaAotICAgIC8v
IGFuZCByZW1vdmUuLi4gZS5nLiBzdG9wIGxvYWRpbmcgZnJhbWVzLCBmaXJlIHVubG9hZCBldmVu
dHMuCi0gICAgd2lsbFJlbW92ZUNoaWxkcmVuKHByb3RlY3QuZ2V0KCkpOwotCi0gICAgVmVjdG9y
PFJlZlB0cjxOb2RlPiwgMTA+IHJlbW92ZWRDaGlsZHJlbjsKLSAgICB7Ci0gICAgICAgIFdpZGdl
dEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVw
ZGF0ZXM7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBh
c3NlcnROb0V2ZW50RGlzcGF0Y2g7Ci0gICAgICAgICAgICByZW1vdmVkQ2hpbGRyZW4ucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShjaGlsZE5vZGVDb3VudCgpKTsKLSAgICAgICAgICAgIHdoaWxlIChS
ZWZQdHI8Tm9kZT4gbiA9IG1fZmlyc3RDaGlsZCkgewotICAgICAgICAgICAgICAgIE5vZGUqIG5l
eHQgPSBuLT5uZXh0U2libGluZygpOwotCi0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBu
b2RlIGZyb20gdGhlIHRyZWUgYmVmb3JlIGNhbGxpbmcgZGV0YWNoIG9yIHJlbW92ZWRGcm9tRG9j
dW1lbnQgKDQ0MjcwMjQsIDQxMjk3NDQpLgotICAgICAgICAgICAgICAgIC8vIHJlbW92ZUNoaWxk
KCkgZG9lcyB0aGlzIGFmdGVyIGNhbGxpbmcgZGV0YWNoKCkuIFRoZXJlIGlzIG5vIGV4cGxhbmF0
aW9uIGZvcgotICAgICAgICAgICAgICAgIC8vIHRoaXMgZGlzY3JlcGFuY3kgYmV0d2VlbiByZW1v
dmVDaGlsZCgpIGFuZCBpdHMgb3B0aW1pemVkIHZlcnNpb24gcmVtb3ZlQ2hpbGRyZW4oKS4KLSAg
ICAgICAgICAgICAgICBuLT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7Ci0gICAgICAgICAgICAgICAg
bi0+c2V0TmV4dFNpYmxpbmcoMCk7Ci0gICAgICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JTaGFk
b3dIb3N0Tm9kZSgwKTsKLSAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZG9wdElmTmVlZGVk
KG4uZ2V0KCkpOwotCi0gICAgICAgICAgICAgICAgbV9maXJzdENoaWxkID0gbmV4dDsKLSAgICAg
ICAgICAgICAgICBpZiAobiA9PSBtX2xhc3RDaGlsZCkKLSAgICAgICAgICAgICAgICAgICAgbV9s
YXN0Q2hpbGQgPSAwOwotICAgICAgICAgICAgICAgIHJlbW92ZWRDaGlsZHJlbi5hcHBlbmQobi5y
ZWxlYXNlKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBEZXRhY2ggdGhlIG5v
ZGVzIG9ubHkgYWZ0ZXIgcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlIGJlY2F1c2UKLSAg
ICAgICAgICAgIC8vIGEuIGRldGFjaGluZyByZXF1aXJlcyBhIHByb3BlciBET00gdHJlZSAoZm9y
IGNvdW50ZXJzIGFuZCBxdW90ZXMgZm9yCi0gICAgICAgICAgICAvLyBleGFtcGxlKSBhbmQgZHVy
aW5nIHRoZSBwcmV2aW91cyBsb29wIHRoZSBuZXh0IHNpYmxpbmcgc3RpbGwgcG9pbnRzIHRvCi0g
ICAgICAgICAgICAvLyB0aGUgbm9kZSBiZWluZyByZW1vdmVkIHdoaWxlIHRoZSBub2RlIGJlaW5n
IHJlbW92ZWQgZG9lcyBub3QgcG9pbnQgYmFjawotICAgICAgICAgICAgLy8gYW5kIGRvZXMgbm90
IHBvaW50IHRvIHRoZSBzYW1lIHBhcmVudCBhcyBpdHMgbmV4dCBzaWJsaW5nLgotICAgICAgICAg
ICAgLy8gYi4gZGVzdHJveWluZyBSZW5kZXJlcnMgb2Ygc3RhbmRhbG9uZSBub2RlcyBpcyBzb21l
dGltZXMgZmFzdGVyLgotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW1vdmVk
Q2hpbGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBOb2RlKiByZW1vdmVkQ2hp
bGQgPSByZW1vdmVkQ2hpbGRyZW5baV0uZ2V0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlbW92
ZWRDaGlsZC0+YXR0YWNoZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZENoaWxkLT5k
ZXRhY2goKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGNoaWxkcmVuQ2hh
bmdlZChmYWxzZSwgMCwgMCwgLXN0YXRpY19jYXN0PGludD4ocmVtb3ZlZENoaWxkcmVuLnNpemUo
KSkpOwotICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW1vdmVkQ2hp
bGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIo
dGhpcykubm90aWZ5KHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKSk7Ci0gICAgfQorICAgIHdoaWxl
IChtX2ZpcnN0Q2hpbGQpCisgICAgICAgIHJlbW92ZUZpcnN0Q2hpbGRGYXN0KCk7CiAKICAgICBk
aXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaAppbmRleCA2ZDc3ZDA0ZTVjYjkwMWJjYjA2N2UwOGQ2MjFmMjdjOGI5MWM0NTUyLi40Nzk4
YmZjMTUzMDgwMzIwNzZmYjllNDIwMWEyODJjZGNhMDhiYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmgKQEAgLTE1OSw2ICsxNTksOCBAQCBwcml2YXRlOgogICAgIGJvb2wgZ2V0VXBw
ZXJMZWZ0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGdldExvd2VyUmlnaHRD
b3JuZXIoRmxvYXRQb2ludCYpIGNvbnN0OwogCisgICAgdm9pZCByZW1vdmVGaXJzdENoaWxkRmFz
dCgpOworCiAgICAgTm9kZSogbV9maXJzdENoaWxkOwogICAgIE5vZGUqIG1fbGFzdENoaWxkOwog
fTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBiN2I1ZGUyNGU3YWMzMjI0YmY3YjZmMzk1MWNkZmE0YmViMmU4YTQwLi5iNjA5
ZGNiNmRhYzU1MjYyNzBhMGM5MzdkYzM0N2ZjNjEzYzBmMGU0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTMtMDQtMTYgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CisKKyAgICAg
ICAgUmVpbXBsZW1lbnQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDY3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwYXRjaCBjcmVhdGVzIG5l
dyBiYXNlbGluZXMgZm9yIGFkZGVkLW91dC1vZi1vcmRlci5odG1sIHRvIG1hdGNoIEZpcmVGb3gu
CisgICAgICAgIGNvbnRhaW5lck5vZGUuaHRtbCBpcyByZW1vdmVkIGJlY2F1c2Ugd2Ugbm93IGdv
IGluIGFuIGluZmluaXRlIGxvb3Agd2hlbiBhZGRpbmcKKyAgICAgICAgY2hpbGRyZW4gd2hpbGUg
YSBtdXRhdGlvbiBldmVudCBoYW5kbGVyIGlzIGV4ZWN1dGluZy4KKyAgICAgICAgQWxzbywgdHdv
IG5ldyB0ZXN0cyBhcmUgYWRkZWQgdG8gdmVyaWZ5IHRoZSByZW1vdmFsIGZ1bmN0aW9uIGJlaGF2
ZXMgY29ycmVjdGx5CisgICAgICAgIHdoZW4gdGhlIERPTSBpcyBtb2RpZmllZCBkdXJpbmcgYSBt
dXRhdGlvbiBldmVudCBoYW5kbGVyIGlzIGV4ZWN1dGluZy4KKworICAgICAgICAqIGZhc3QvZG9t
L011dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci5odG1sOiBO
ZXcgYmFzZWxpbmUsIG1hdGNoZXMgRmlyZUZveC4KKyAgICAgICAgKiBmYXN0L2RvbS9SYW5nZS9y
YW5nZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vY29udGFpbmVyTm9kZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogZmFzdC9kb20vY29udGFpbmVyTm9kZS5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL211dGF0aW9uLWR1cmluZy1pbm5lckhUTUwtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1MLmh0
bWw6IEFkZGVkLgorCiAyMDEzLTA0LTE1ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWls
LmNvbT4KIAogICAgICAgICBbRUZMXSBSZW1vdmUgaW5zcGVjdG9yL3N0eWxlcy9wYXN0ZS1wcm9w
ZXJ0eS1leHBlY3RlZC50eHQgZnJvbSBlZmwtd2syCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRl
ci1leHBlY3RlZC50eHQKaW5kZXggZGZmYmJiMzNlZmJjZWQ0MzcxZmIxNzJhZjI2ZmQ0YzEzOTg0
MjBlZC4uMzQxNWYxMTdlNmRiNTQ5NTNhZjBjNWU4ZjA2Y2E4MTMxNWZhM2U1ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9hZGRlZC1vdXQtb2Ytb3Jk
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2
ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMywxNiArMywxNSBAQCBUZXN0
IE11dGF0aW9uRXZlbnRzIGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZlcnM6IGFkZGlu
ZyBub2RlcyAnb3V0IG9mIG9yZAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mg
bXV0YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0
aCBpcyAwCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1Mg
bXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lIGlzICdTUEFOJworUEFTUyBtdXRh
dGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlz
IDEKK1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRh
dGlvbnNbMF0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICJESVYiCiBQQVNTIG11dGF0aW9uc1sx
XS5hZGRlZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMu
bGVuZ3RoIGlzIDAKLVBBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAn
RElWJwotUEFTUyBtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRh
dGlvbnNbMl0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIG11dGF0aW9uc1syXS5hZGRl
ZE5vZGVzWzBdLm5vZGVWYWx1ZSBpcyAnaGVsbG8gd29ybGQnCitQQVNTIG11dGF0aW9uc1sxXS5y
ZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0u
bm9kZVZhbHVlIGlzICJoZWxsbyB3b3JsZCIKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rl
c1swXS50YWdOYW1lIGlzICJTUEFOIgorUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzWzFd
LnRhZ05hbWUgaXMgIkRJViIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwKaW5kZXggN2JmMDk0OGZlMGU3MzM4
MWY5MThlZmE2ZDdhYmI4NWVmNGU4ZjZhZC4uMTcwNDdmZDU2ZTQ0NDQ0ODAzNDNhMTkxZmVhZWU1
NDY0NzFjOTlmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9N
dXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci5odG1sCkBAIC0xNiwxNSArMTYsMTQg
QEAgb2JzZXJ2ZXIub2JzZXJ2ZShzYW5kYm94LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CiBzYW5kYm94
LnRleHRDb250ZW50ID0gJ2hlbGxvIHdvcmxkJzsKIAogdmFyIG11dGF0aW9ucyA9IG9ic2VydmVy
LnRha2VSZWNvcmRzKCk7Ci1zaG91bGRCZSgibXV0YXRpb25zLmxlbmd0aCIsICIzIik7Ci1zaG91
bGRCZSgibXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIiwgIjAiKTsKLXNob3VsZEJlKCJt
dXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCIsICIxIik7Ci1zaG91bGRCZSgibXV0YXRp
b25zWzBdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lIiwgIidTUEFOJyIpOworc2hvdWxkQmUoIm11
dGF0aW9ucy5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoIm11dGF0aW9uc1swXS5hZGRlZE5vZGVz
Lmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgibXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5n
dGgiLCAiMCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
c1swXS50YWdOYW1lIiwgIkRJViIpOwogc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVz
Lmxlbmd0aCIsICIxIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5n
dGgiLCAiMCIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUi
LCAiJ0RJViciKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5sZW5ndGgiLCAi
MSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1syXS5yZW1vdmVkTm9kZXMubGVuZ3RoIiwgIjAiKTsK
LXNob3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlc1swXS5ub2RlVmFsdWUiLCAiJ2hlbGxv
IHdvcmxkJyIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIiwg
IjIiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygibXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0u
bm9kZVZhbHVlIiwgImhlbGxvIHdvcmxkIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm11dGF0
aW9uc1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSIsICJTUEFOIik7CitzaG91bGRCZUVxdWFs
VG9TdHJpbmcoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMV0udGFnTmFtZSIsICJESVYiKTsK
IDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFu
Z2UtcmVtb3ZlLWNoaWxkcmVuLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL1JhbmdlL3JhbmdlLXJlbW92ZS1jaGlsZHJlbi1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmQ2MzAzNzZlM2Y3Mzc1YThiNTUzM2Q3YTEzNDMyMGY5ZjM3MGQ5OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLXJlbW92ZS1jaGlsZHJl
bi1ldmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCByYW5nZXMgcmVtYWlu
IHZhbGlkIHdoZW4gbW9kaWZpZWQgaW5zaWRlIGEgTXV0YXRpb25FdmVudCBoYW5kbGVyLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByYW5nZS5zdGFydENvbnRhaW5lci50
YWdOYW1lIGlzICJESVYiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2Ut
cmVtb3ZlLWNoaWxkcmVuLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9y
YW5nZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDNiZmJiMDk0NzAy
MDM0N2M1OGU2ZTYzZWE3MWE2N2ViMjk1OWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2UtcmVtb3ZlLWNoaWxkcmVuLWV2ZW50Lmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxk
aXYgaWQ9ImNvbnRlbnQiPgorICAgICAgICA8c3BhbiBpZD0iaW5uZXJDb250ZW50Ij5BPC9zcGFu
PgorICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworICAgIGRlc2NyaXB0aW9uKCJUZXN0IHJhbmdlcyByZW1haW4gdmFsaWQgd2hlbiBtb2Rp
ZmllZCBpbnNpZGUgYSBNdXRhdGlvbkV2ZW50IGhhbmRsZXIuIik7CisKKyAgICB2YXIgY29udGVu
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgdmFyIGluc2VydGVk
ID0gZmFsc2U7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZXRTdGFydChjb250ZW50LCAwKTsKKyAgICByYW5nZS5zZXRFbmQoY29udGVudCwgMCk7
CisgICAgY29udGVudC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlUmVtb3ZlZCcsIGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAoIWluc2VydGVkKSB7CisgICAgICAgICAgICB2YXIgbmV3Q2hpbGQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVu
ZENoaWxkKG5ld0NoaWxkKTsKKyAgICAgICAgICAgIGluc2VydGVkID0gdHJ1ZTsKKworICAgICAg
ICAgICAgcmFuZ2Uuc2V0U3RhcnQobmV3Q2hpbGQpOworICAgICAgICAgICAgcmFuZ2Uuc2V0RW5k
KG5ld0NoaWxkKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1JhbmdlLCAwKTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gIiI7CisKKyAgICAgZnVu
Y3Rpb24gY2hlY2tSYW5nZSgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyYW5n
ZS5zdGFydENvbnRhaW5lci50YWdOYW1lIiwgIkRJViIpOworICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFpbmVyTm9kZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9jb250YWluZXJOb2RlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOTk1MTVkNDUzZjUzMjA1MTJhYTA1OTQ3ZGRjNGZmYjc1ZjI1
YWY5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jb250YWluZXJOb2RlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xICswLDAgQEAKLVBBU1M6IE5vIGluZmluaXRlIGxvb3AuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jb250YWluZXJOb2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jb250YWluZXJOb2RlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4Y2Q5
NThlZjlkMjBkNmUzNjQ5MmU1OTEyZjJiMjRlNGE4ODI0YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFpbmVy
Tm9kZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAg
ICAgICAgZnVuY3Rpb24gbG9nKG1zZykKLSAgICAgICAgewotICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZEl0ZW0obGlzdCwgY2FwdGlvbikKLSAgICAgICAg
ewotICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwot
ICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjYXB0
aW9uKSk7Ci0gICAgICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGl0ZW0pOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0KLSAgICAgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKLSAgICAgICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgndWwnKTsKLSAgICAgICAgICAgIHZhciBpOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8
IDU7IGkrKykKLSAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGxpc3QsICdpdGVtICcgKyBpKTsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGxpc3Qp
OwotICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQi
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGxpc3QsICdpdGVtICcg
KyBpKyspOwotICAgICAgICAgICAgfSwgZmFsc2UpOwotCi0gICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGZyYWdtZW50KTsKLSAgICAgICAgICAgIGxpc3QudGV4dENvbnRlbnQg
PSAnJzsKLQotICAgICAgICAgICAgaWYgKGxpc3QuY2hpbGROb2Rlcy5sZW5ndGggPT0gMCkKLSAg
ICAgICAgICAgICAgICBsb2coJ1BBU1M6IE5vIGluZmluaXRlIGxvb3AuJykKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBsb2coJ0ZBSUw6IEhhcyB0b28gbWFueSBjaGlsZHJlbi4n
KQotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRl
c3RzKCk7Ij4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbXV0YXRpb24tZHVyaW5nLWlubmVySFRNTC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1MLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44MTliNjQyNDY2ZTc2NDA3MTI4YTA2NmJkNzllMTUwNmEzZWQxMTdjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbXV0YXRpb24tZHVyaW5nLWlu
bmVySFRNTC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgbm9kZXMgYWRk
ZWQgZHVyaW5nIERPTU5vZGVSZW1vdmVkIGZyb20gaW5uZXJIVE1MIGFyZSBub3RpZmllZCBvZiB0
aGVpciBldmVudHVhbCByZW1vdmFsLgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1MLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1MLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM0
NDNkYjVjMDE4ZDQ1NmZiYTcxNzk2YzMxNTVhMTU4MDYwZTk2NwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL211dGF0aW9uLWR1cmluZy1pbm5lckhUTUwuaHRtbApA
QCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKworPHA+VGVzdCB0aGF0IG5vZGVzIGFk
ZGVkIGR1cmluZyBET01Ob2RlUmVtb3ZlZCBmcm9tIGlubmVySFRNTCBhcmUgbm90aWZpZWQgb2Yg
dGhlaXIgZXZlbnR1YWwgcmVtb3ZhbC48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAg
PGRpdiBpZD0iZmlyc3QiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2Vjb25kID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitzZWNvbmQuaWQgPSAnc2Vjb25kJzsKKworY29u
dGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09ICdmaXJzdCcpCisgICAgICAgIGNvbnRhaW5l
ci5hcHBlbmRDaGlsZChzZWNvbmQpOworICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gJ3NlY29u
ZCcpCisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ1BBU1MnKSk7Cit9KTsKKworY29udGFpbmVyLmlubmVySFRNTCA9ICcnOworPC9zY3Jp
cHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198427</attachid>
            <date>2013-04-16 14:07:41 -0700</date>
            <delta_ts>2013-04-17 02:17:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114677-20130417000713.patch</filename>
            <type>text/plain</type>
            <size>23609</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IyOTE0OGJiNTNjNTZl
NTJjNWE0M2U1ZjgzMGE1ZTIxZGRmZDczOS4uNDcyNTVkYmVjZDYwMzFhZDBlNTkyMmU0NmEyZmZm
M2ZiZDY0MGNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTA0LTE2ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50IENvbnRh
aW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTQ2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbiB0cmllcyB0byBy
ZW1vdmUgYWxsIHRoZSBjaGlsZHJlbiBpbiBidWxrLiBUaGlzCisgICAgICAgIG1lYW5zIHRoZSBz
eW5jaHJvbm91cyBzY3JpcHRzIGV4ZWN1dGluZyBkdXJpbmcgdGhlIHJlbW92YWwgY2FuIGxlYXZl
IHRoZSBkb2N1bWVudAorICAgICAgICBpbiBhIGJhZCBzdGF0ZS4KKyAgICAgICAgVGhlIHBhdGNo
IHJlaW1wbGVtZW50cyB0aGUgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4gZnVuY3Rpb24g
dXNpbmcgYSBmYXN0ZXIKKyAgICAgICAgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQgdmVyc2lv
biwgcmVtb3ZlRmlyc3RDaGlsZEZhc3QuIFRoaXMgZnVuY3Rpb24gYWxzbyBub3RpZmllcworICAg
ICAgICB0aGUgbXV0YXRpb24gb2JzZXJ2ZXJzIHRoZSBub2RlIHdpbGwgYmUgcmVtb3ZlZCBvbmx5
IGFmdGVyIHdlIGFyZSBzdXJlIGl0IHdpbGwgYmUgZG9uZS4KKyAgICAgICAgVGhpcyBnaXZlcyBz
aW1pbGFyIHJlc3VsdHMgdG8gRmlyZUZveCBpbiBvbmUgb2YgdGhlIHRlc3RzLCBhZGRlZC1vdXQt
b2Ytb3JkZXIuaHRtbC4KKyAgICAgICAgSSBoYXZlbid0IG5vdGljZWQgYW55IHBlcmZvcm1hbmNl
IGRlZ3JhZGF0aW9uIHdpdGggdGhlIHBhdGNoLiBUaGlzIGNvdWxkIGJlIGV4cGxhaW5lZAorICAg
ICAgICBieSB0aGUgaHVnZSBudW1iZXIgb2YgbG9vcHMgKGF0IGxlYXN0IDQpIHRocm91Z2ggdGhl
IGNoaWxkcmVuIGxpc3QgYW5kIHNuYXBzaG90dGluZworICAgICAgICB0aGF0IGFyZSBtYWRlIGJ5
IENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuIGFuZCB0aGF0IGFyZSBnb25lIHdpdGggdGhl
IHBhdGNoLgorICAgICAgICBUaGUgcGVyZm9ybWFuY2UgdGVzdHMgdXNlZCBhcmUgUGFyc2VyL2lu
bmVySFRNTC1zZXR0ZXIuaHRtbCBhbmQgaHRtbDUtZnVsbC1yZW5kZXIuaHRtbAorCisgICAgICAg
IFRlc3RzOiBmYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbXV0YXRpb24tZHVyaW5nLWlubmVySFRNTC5odG1s
CisKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOiBSZW1vdmUgdW51c2VkIHN5bWJvbHMuCisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlRmlyc3RDaGlsZEZhc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogUmVt
b3ZlZCB1bnVzZWQgZnVuY3Rpb24gbm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZC4KKyAgICAgICAg
KiBkb20vUmFuZ2UuY3BwOgorICAgICAgICAqIGRvbS9SYW5nZS5oOiBSZW1vdmVkIHVudXNlZCBm
dW5jdGlvbiBub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkLgorCiAyMDEzLTA0LTE2ICBKYW1lcyBD
cmFpZyAgPGphbWVzQGNvb2tpZWNyb29rLmNvbT4KIAogICAgICAgICBkZm4gZWxlbWVudCBzaG91
bGQgYmUgZXhwb3NlZCBhcyBBWEdyb3VwOkFYRGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5k
ZXggY2VjYzlkYzhkY2E4MmVjNmVlNWFlNWJhMmI3MzM0MGZkYjgyOGM4Yy4uMGI2YThjZDI0ZmVj
N2RjZDFhMzg1YzI5MDljODIzMTUwNDJjNDY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC01NzM3
LDcgKzU3MzcsNiBAQCBfX1pOSzdXZWJDb3JlMjBIVE1MVGFibGVDZWxsRWxlbWVudDEwbWFwVG9F
bnRyeUVSS05TXzEzUXVhbGlmaWVkTmFtZUVSTlNfMjBNYXBwZQogX19aTjdXZWJDb3JlMjBIVE1M
VGFibGVDZWxsRWxlbWVudDIwcGFyc2VNYXBwZWRBdHRyaWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBf
X1pOSzdXZWJDb3JlMThBY2Nlc3NpYmlsaXR5VGFibGU5cm9sZVZhbHVlRXYKIF9fWk43V2ViQ29y
ZTIyanNIVE1MRWxlbWVudElubmVyVGV4dEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVS
S05TMF8xMElkZW50aWZpZXJFCi1fX1pON1dlYkNvcmU4RG9jdW1lbnQyNW5vZGVDaGlsZHJlbldp
bGxCZVJlbW92ZWRFUE5TXzEzQ29udGFpbmVyTm9kZUUKIF9fWk43V2ViQ29yZTlJbmxpbmVCb3g2
cmVtb3ZlRXYKIF9fWk43V2ViQ29yZTEzSW5saW5lRmxvd0JveDExcmVtb3ZlQ2hpbGRFUE5TXzlJ
bmxpbmVCb3hFCiBfX1pON1dlYkNvcmUxM1Jvb3RJbmxpbmVCb3gxMmNoaWxkUmVtb3ZlZEVQTlNf
OUlubGluZUJveEUKQEAgLTEzNTIyLDggKzEzNTIxLDYgQEAgX19aTks3V2ViQ29yZTE2SFRNTElt
YWdlRWxlbWVudDE0aXNVUkxBdHRyaWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBfX1pON1dlYkNvcmUx
N01hcmt1cEFjY3VtdWxhdG9yMjlhcHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZUVSTjNXVEY2
VmVjdG9ySXRMbTBFRUVSS05TMV82U3RyaW5nRQogX19aTjdXZWJDb3JlMTdKU0hUTUxCb2R5RWxl
bWVudDNwdXRFUE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVl
RVJOUzFfMTVQdXRQcm9wZXJ0eVNsb3RFCiBfX1pOM0pTQzlsb29rdXBQdXRJTjdXZWJDb3JlMTdK
U0hUTUxCb2R5RWxlbWVudEVFRWJQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183
SlNWYWx1ZUVQS05TXzlIYXNoVGFibGVFUFRfCi1fX1pON1dlYkNvcmU1UmFuZ2UyNW5vZGVDaGls
ZHJlbldpbGxCZVJlbW92ZWRFUE5TXzEzQ29udGFpbmVyTm9kZUUKLV9fWk43V2ViQ29yZUwzM2Jv
dW5kYXJ5Tm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZEVSTlNfMThSYW5nZUJvdW5kYXJ5UG9pbnRF
UE5TXzEzQ29udGFpbmVyTm9kZUUKIF9fWk43V2ViQ29yZTZFZGl0b3IxM2RpZEVuZEVkaXRpbmdF
dgogX19aTjdXZWJDb3JlMTNUeXBpbmdDb21tYW5kRDBFdgogX19aTjdXZWJDb3JlMjBDb21wb3Np
dGVFZGl0Q29tbWFuZEQyRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA0
OWNjODU3MDRlNDA1NjQ5NjhhZjBkMWM1ZjM5OTc3Y2YyMzI4NjhjLi4zNjBhNWI0MmNkMGY5NDFm
M2VhMTU2ZjE3ZWFiNjEzOGYzNzEzZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCkBAIC00NTQsMjYgKzQ1NCw2IEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZChOb2Rl
KiBjaGlsZCkKICAgICBDaGlsZEZyYW1lRGlzY29ubmVjdG9yKGNoaWxkKS5kaXNjb25uZWN0KCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZHJlbihDb250YWluZXJOb2RlKiBjb250
YWluZXIpCi17Ci0gICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKLSAgICBnZXRDaGlsZE5vZGVzKGNv
bnRhaW5lciwgY2hpbGRyZW4pOwotCi0gICAgY29udGFpbmVyLT5kb2N1bWVudCgpLT5ub2RlQ2hp
bGRyZW5XaWxsQmVSZW1vdmVkKGNvbnRhaW5lcik7Ci0KLSAgICBDaGlsZExpc3RNdXRhdGlvblNj
b3BlIG11dGF0aW9uKGNvbnRhaW5lcik7Ci0gICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuLmVuZCgpOyArK2l0KSB7
Ci0gICAgICAgIE5vZGUqIGNoaWxkID0gaXQtPmdldCgpOwotICAgICAgICBtdXRhdGlvbi53aWxs
UmVtb3ZlQ2hpbGQoY2hpbGQpOwotICAgICAgICBjaGlsZC0+bm90aWZ5TXV0YXRpb25PYnNlcnZl
cnNOb2RlV2lsbERldGFjaCgpOwotCi0gICAgICAgIC8vIGZpcmUgcmVtb3ZlZCBmcm9tIGRvY3Vt
ZW50IG11dGF0aW9uIGV2ZW50cy4KLSAgICAgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMo
Y2hpbGQpOwotICAgIH0KLQotICAgIENoaWxkRnJhbWVEaXNjb25uZWN0b3IoY29udGFpbmVyKS5k
aXNjb25uZWN0KENoaWxkRnJhbWVEaXNjb25uZWN0b3I6OkRlc2NlbmRhbnRzT25seSk7Ci19Ci0K
IHZvaWQgQ29udGFpbmVyTm9kZTo6ZGlzY29ubmVjdERlc2NlbmRhbnRGcmFtZXMoKQogewogICAg
IENoaWxkRnJhbWVEaXNjb25uZWN0b3IodGhpcykuZGlzY29ubmVjdCgpOwpAQCAtNTY1LDYgKzU0
NSw0NSBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUJldHdlZW4oTm9kZSogcHJldmlvdXND
aGlsZCwgTm9kZSogbmV4dENoaWxkLCBOb2RlKiBvbAogICAgIGRvY3VtZW50KCktPmFkb3B0SWZO
ZWVkZWQob2xkQ2hpbGQpOwogfQogCit2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUZpcnN0Q2hp
bGRGYXN0KCkKK3sKKyAgICBBU1NFUlQobV9maXJzdENoaWxkKTsKKworICAgIFJlZlB0cjxOb2Rl
PiBjaGlsZCA9IG1fZmlyc3RDaGlsZDsKKworICAgIGRvY3VtZW50KCktPnJlbW92ZUZvY3VzZWRO
b2RlT2ZTdWJ0cmVlKGNoaWxkLmdldCgpKTsKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KyAgICBkb2N1bWVudCgpLT5yZW1vdmVGdWxsU2NyZWVuRWxlbWVudE9mU3VidHJlZShjaGlsZC5n
ZXQoKSk7CisjZW5kaWYKKworICAgIC8vIEV2ZW50cyBmaXJlZCB3aGVuIGJsdXJyaW5nIGN1cnJl
bnRseSBmb2N1c2VkIG5vZGUgbWlnaHQgaGF2ZSBtb3ZlZCB0aGlzCisgICAgLy8gY2hpbGQgaW50
byBhIGRpZmZlcmVudCBwYXJlbnQuCisgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkgIT0gdGhp
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoY2hp
bGQuZ2V0KCkpOworICAgIGNoaWxkLT5kb2N1bWVudCgpLT5ub2RlV2lsbEJlUmVtb3ZlZChjaGls
ZC5nZXQoKSk7CisgICAgQ2hpbGRGcmFtZURpc2Nvbm5lY3RvcihjaGlsZC5nZXQoKSkuZGlzY29u
bmVjdCgpOworCisgICAgLy8gTXV0YXRpb24gZXZlbnRzIG1pZ2h0IGhhdmUgbW92ZWQgdGhpcyBj
aGlsZCBpbnRvIGEgZGlmZmVyZW50IHBhcmVudC4KKyAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUo
KSAhPSB0aGlzKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOb3RpZnkgdGhlIG11dGF0aW9u
IG9ic2VydmVycyB0aGUgbm9kZSB3aWxsIGJlIHJlbW92ZWQuCisgICAgQ2hpbGRMaXN0TXV0YXRp
b25TY29wZSh0aGlzKS53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCkpOworICAgIGNoaWxkLT5u
b3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxsRGV0YWNoKCk7CisKKyAgICBXaWRnZXRIaWVy
YXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
OworCisgICAgLy8gVGhlIHByZXZpb3VzIG5vZGUgbWF5IG5vdCBiZSAwIGlmIHRoZSBldmVudCBo
YW5kbGVycyBtb3ZlZCBpdC4KKyAgICBOb2RlKiBwcmV2ID0gY2hpbGQtPnByZXZpb3VzU2libGlu
ZygpOworICAgIE5vZGUqIG5leHQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKKyAgICByZW1vdmVC
ZXR3ZWVuKHByZXYsIG5leHQsIGNoaWxkLmdldCgpKTsKKyAgICBjaGlsZHJlbkNoYW5nZWQoZmFs
c2UsIHByZXYsIG5leHQsIC0xKTsKKyAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcyku
bm90aWZ5KGNoaWxkLmdldCgpKTsKK30KKwogdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1v
dmVDaGlsZChOb2RlKiBvbGRDaGlsZCkKIHsKICAgICBBU1NFUlQob2xkQ2hpbGQpOwpAQCAtNTk0
LDU5ICs2MTMsMTAgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAKICAg
ICAvLyBUaGUgY29udGFpbmVyIG5vZGUgY2FuIGJlIHJlbW92ZWQgZnJvbSBldmVudCBoYW5kbGVy
cy4KICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDaGlsZExp
c3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKHRoaXMpOwogCi0gICAgLy8gZXhjbHVkZSB0aGlzIG5v
ZGUgd2hlbiBsb29raW5nIGZvciByZW1vdmVkIGZvY3VzZWROb2RlIHNpbmNlIG9ubHkgY2hpbGRy
ZW4gd2lsbCBiZSByZW1vdmVkCi0gICAgZG9jdW1lbnQoKS0+cmVtb3ZlRm9jdXNlZE5vZGVPZlN1
YnRyZWUodGhpcywgdHJ1ZSk7Ci0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgZG9j
dW1lbnQoKS0+cmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRPZlN1YnRyZWUodGhpcywgdHJ1ZSk7Ci0j
ZW5kaWYKLQotICAgIC8vIERvIGFueSBwcmVwIHdvcmsgbmVlZGVkIGJlZm9yZSBhY3R1YWxseSBz
dGFydGluZyB0byBkZXRhY2gKLSAgICAvLyBhbmQgcmVtb3ZlLi4uIGUuZy4gc3RvcCBsb2FkaW5n
IGZyYW1lcywgZmlyZSB1bmxvYWQgZXZlbnRzLgotICAgIHdpbGxSZW1vdmVDaGlsZHJlbihwcm90
ZWN0LmdldCgpKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4sIDEwPiByZW1vdmVkQ2hpbGRy
ZW47Ci0gICAgewotICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
IHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwotICAgICAgICB7Ci0gICAgICAgICAgICBO
b0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotICAgICAgICAg
ICAgcmVtb3ZlZENoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2hpbGROb2RlQ291bnQo
KSk7Ci0gICAgICAgICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IG4gPSBtX2ZpcnN0Q2hpbGQpIHsK
LSAgICAgICAgICAgICAgICBOb2RlKiBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKLQotICAgICAg
ICAgICAgICAgIC8vIFJlbW92ZSB0aGUgbm9kZSBmcm9tIHRoZSB0cmVlIGJlZm9yZSBjYWxsaW5n
IGRldGFjaCBvciByZW1vdmVkRnJvbURvY3VtZW50ICg0NDI3MDI0LCA0MTI5NzQ0KS4KLSAgICAg
ICAgICAgICAgICAvLyByZW1vdmVDaGlsZCgpIGRvZXMgdGhpcyBhZnRlciBjYWxsaW5nIGRldGFj
aCgpLiBUaGVyZSBpcyBubyBleHBsYW5hdGlvbiBmb3IKLSAgICAgICAgICAgICAgICAvLyB0aGlz
IGRpc2NyZXBhbmN5IGJldHdlZW4gcmVtb3ZlQ2hpbGQoKSBhbmQgaXRzIG9wdGltaXplZCB2ZXJz
aW9uIHJlbW92ZUNoaWxkcmVuKCkuCi0gICAgICAgICAgICAgICAgbi0+c2V0UHJldmlvdXNTaWJs
aW5nKDApOwotICAgICAgICAgICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwotICAgICAgICAg
ICAgICAgIG4tPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoMCk7Ci0gICAgICAgICAgICAgICAg
ZG9jdW1lbnQoKS0+YWRvcHRJZk5lZWRlZChuLmdldCgpKTsKLQotICAgICAgICAgICAgICAgIG1f
Zmlyc3RDaGlsZCA9IG5leHQ7Ci0gICAgICAgICAgICAgICAgaWYgKG4gPT0gbV9sYXN0Q2hpbGQp
Ci0gICAgICAgICAgICAgICAgICAgIG1fbGFzdENoaWxkID0gMDsKLSAgICAgICAgICAgICAgICBy
ZW1vdmVkQ2hpbGRyZW4uYXBwZW5kKG4ucmVsZWFzZSgpKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgLy8gRGV0YWNoIHRoZSBub2RlcyBvbmx5IGFmdGVyIHByb3Blcmx5IHJlbW92ZWQg
ZnJvbSB0aGUgdHJlZSBiZWNhdXNlCi0gICAgICAgICAgICAvLyBhLiBkZXRhY2hpbmcgcmVxdWly
ZXMgYSBwcm9wZXIgRE9NIHRyZWUgKGZvciBjb3VudGVycyBhbmQgcXVvdGVzIGZvcgotICAgICAg
ICAgICAgLy8gZXhhbXBsZSkgYW5kIGR1cmluZyB0aGUgcHJldmlvdXMgbG9vcCB0aGUgbmV4dCBz
aWJsaW5nIHN0aWxsIHBvaW50cyB0bwotICAgICAgICAgICAgLy8gdGhlIG5vZGUgYmVpbmcgcmVt
b3ZlZCB3aGlsZSB0aGUgbm9kZSBiZWluZyByZW1vdmVkIGRvZXMgbm90IHBvaW50IGJhY2sKLSAg
ICAgICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwb2ludCB0byB0aGUgc2FtZSBwYXJlbnQgYXMgaXRz
IG5leHQgc2libGluZy4KLSAgICAgICAgICAgIC8vIGIuIGRlc3Ryb3lpbmcgUmVuZGVyZXJzIG9m
IHN0YW5kYWxvbmUgbm9kZXMgaXMgc29tZXRpbWVzIGZhc3Rlci4KLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgTm9kZSogcmVtb3ZlZENoaWxkID0gcmVtb3ZlZENoaWxkcmVuW2ldLmdldCgpOwot
ICAgICAgICAgICAgICAgIGlmIChyZW1vdmVkQ2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJlbW92ZWRDaGlsZC0+ZGV0YWNoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIDAsIDAsIC1zdGF0aWNfY2FzdDxp
bnQ+KHJlbW92ZWRDaGlsZHJlbi5zaXplKCkpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICAgICAg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0u
Z2V0KCkpOwotICAgIH0KKyAgICB3aGlsZSAobV9maXJzdENoaWxkKQorICAgICAgICByZW1vdmVG
aXJzdENoaWxkRmFzdCgpOwogCiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggNmQ3N2QwNGU1Y2I5MDFiY2IwNjdl
MDhkNjIxZjI3YzhiOTFjNDU1Mi4uNDc5OGJmYzE1MzA4MDMyMDc2ZmI5ZTQyMDFhMjgyY2RjYTA4
YmJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0xNTksNiArMTU5LDggQEAg
cHJpdmF0ZToKICAgICBib29sIGdldFVwcGVyTGVmdENvcm5lcihGbG9hdFBvaW50JikgY29uc3Q7
CiAgICAgYm9vbCBnZXRMb3dlclJpZ2h0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKIAorICAg
IHZvaWQgcmVtb3ZlRmlyc3RDaGlsZEZhc3QoKTsKKwogICAgIE5vZGUqIG1fZmlyc3RDaGlsZDsK
ICAgICBOb2RlKiBtX2xhc3RDaGlsZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2
NGNiNWYwYWQyYzM5MThiZTBiOWI4MjBhYTM5NTg4NTM2OGYzYzY4Li42ZmQyODJmZWMwZjRiYzRl
MDBkODNjZmNkMjA0MTU4ODUyODUyNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM1
NzUsMjkgKzM1NzUsNiBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVu
Q2hhbmdlZChDb250YWluZXJOb2RlKiBjb250YWluZXIpCiAgICAgfQogfQogCi12b2lkIERvY3Vt
ZW50Ojpub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikK
LXsKLSAgICBpZiAoIW1fcmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBIYXNoU2V0PFJhbmdl
Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFuZ2VzLmVuZCgpOwotICAgICAgICBmb3IgKEhh
c2hTZXQ8UmFuZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jhbmdlcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAoKml0KS0+bm9kZUNoaWxkcmVuV2lsbEJlUmVtb3Zl
ZChjb250YWluZXIpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8Tm9kZUl0ZXJhdG9yKj46OmNvbnN0
X2l0ZXJhdG9yIG5vZGVJdGVyYXRvcnNFbmQgPSBtX25vZGVJdGVyYXRvcnMuZW5kKCk7Ci0gICAg
Zm9yIChIYXNoU2V0PE5vZGVJdGVyYXRvcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZUl0
ZXJhdG9ycy5iZWdpbigpOyBpdCAhPSBub2RlSXRlcmF0b3JzRW5kOyArK2l0KSB7Ci0gICAgICAg
IGZvciAoTm9kZSogbiA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNp
YmxpbmcoKSkKLSAgICAgICAgICAgICgqaXQpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsKLSAgICB9
Ci0KLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewotICAgICAgICBmb3Ig
KE5vZGUqIG4gPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5n
KCkpIHsKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bm9kZVdpbGxCZVJlbW92
ZWQobik7Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm5vZGVXaWxsQmVSZW1vdmVk
KG4pOwotICAgICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5u
b2RlV2lsbEJlUmVtb3ZlZChuKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBEb2N1bWVu
dDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbikKIHsKICAgICBIYXNoU2V0PE5vZGVJdGVyYXRv
cio+Ojpjb25zdF9pdGVyYXRvciBub2RlSXRlcmF0b3JzRW5kID0gbV9ub2RlSXRlcmF0b3JzLmVu
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzMDY3NDc0N2M2N2IwYWI5MGE0OWViY2IxM2Y1
MzM0MzY5OTA5NTU2Li4yYmRhN2VkMmIzNjZhZjcyNzE0OWVjNzRiNTQwN2NhM2UzZDNkNzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtNzI0LDggKzcyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRldGFjaFJhbmdlKFJhbmdlKik7CiAKICAgICB2b2lkIHVwZGF0ZVJhbmdlc0FmdGVyQ2hpbGRy
ZW5DaGFuZ2VkKENvbnRhaW5lck5vZGUqKTsKLSAgICAvLyBub2RlQ2hpbGRyZW5XaWxsQmVSZW1v
dmVkIGlzIHVzZWQgd2hlbiByZW1vdmluZyBhbGwgbm9kZSBjaGlsZHJlbiBhdCBvbmNlLgotICAg
IHZvaWQgbm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChDb250YWluZXJOb2RlKik7CiAgICAgLy8g
bm9kZVdpbGxCZVJlbW92ZWQgaXMgb25seSBzYWZlIHdoZW4gcmVtb3Zpbmcgb25lIG5vZGUgYXQg
YSB0aW1lLgogICAgIHZvaWQgbm9kZVdpbGxCZVJlbW92ZWQoTm9kZSopOwogICAgIGJvb2wgY2Fu
UmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAppbmRleCA1NjUxMTM4OTVjZGFhNDg5ZjkwMzVlM2RmNjM1YzU1YzE1NzlhNmI3Li45ODI1
MjUxZDg1ZGQ4MzlmOGQwODRlY2ExZWMxYjllNGVkYTNkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAK
QEAgLTE3MzIsMzEgKzE3MzIsNiBAQCB2b2lkIFJhbmdlOjpub2RlQ2hpbGRyZW5DaGFuZ2VkKENv
bnRhaW5lck5vZGUqIGNvbnRhaW5lcikKICAgICBib3VuZGFyeU5vZGVDaGlsZHJlbkNoYW5nZWQo
bV9lbmQsIGNvbnRhaW5lcik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBib3VuZGFyeU5vZGVD
aGlsZHJlbldpbGxCZVJlbW92ZWQoUmFuZ2VCb3VuZGFyeVBvaW50JiBib3VuZGFyeSwgQ29udGFp
bmVyTm9kZSogY29udGFpbmVyKQotewotICAgIGZvciAoTm9kZSogbm9kZVRvQmVSZW1vdmVkID0g
Y29udGFpbmVyLT5maXJzdENoaWxkKCk7IG5vZGVUb0JlUmVtb3ZlZDsgbm9kZVRvQmVSZW1vdmVk
ID0gbm9kZVRvQmVSZW1vdmVkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChib3VuZGFy
eS5jaGlsZEJlZm9yZSgpID09IG5vZGVUb0JlUmVtb3ZlZCkgewotICAgICAgICAgICAgYm91bmRh
cnkuc2V0VG9TdGFydE9mTm9kZShjb250YWluZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yIChOb2RlKiBuID0gYm91bmRhcnkuY29udGFpbmVyKCk7IG47
IG4gPSBuLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIGlmIChuID09IG5vZGVUb0JlUmVt
b3ZlZCkgewotICAgICAgICAgICAgICAgIGJvdW5kYXJ5LnNldFRvU3RhcnRPZk5vZGUoY29udGFp
bmVyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci19Ci0KLXZvaWQgUmFuZ2U6Om5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoQ29udGFp
bmVyTm9kZSogY29udGFpbmVyKQotewotICAgIEFTU0VSVChjb250YWluZXIpOwotICAgIEFTU0VS
VChjb250YWluZXItPmRvY3VtZW50KCkgPT0gbV9vd25lckRvY3VtZW50KTsKLSAgICBib3VuZGFy
eU5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQobV9zdGFydCwgY29udGFpbmVyKTsKLSAgICBib3Vu
ZGFyeU5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQobV9lbmQsIGNvbnRhaW5lcik7Ci19Ci0KIHN0
YXRpYyBpbmxpbmUgdm9pZCBib3VuZGFyeU5vZGVXaWxsQmVSZW1vdmVkKFJhbmdlQm91bmRhcnlQ
b2ludCYgYm91bmRhcnksIE5vZGUqIG5vZGVUb0JlUmVtb3ZlZCkKIHsKICAgICBpZiAoYm91bmRh
cnkuY2hpbGRCZWZvcmUoKSA9PSBub2RlVG9CZVJlbW92ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXgg
MjMyNmNlZWMxNzVjNWQ4ZjA4M2U5NmY5MTI3MzcxYTFhZDkyMDExNi4uYTIzOTllZDhhMmY5ODEz
OGE4MjU3YzlhNTA0MDQwZjNlM2M2N2NkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTEyOCw3ICsxMjgs
NiBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCgpIGNvbnN0OwogCiAgICAg
dm9pZCBub2RlQ2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGUqKTsKLSAgICB2b2lkIG5vZGVD
aGlsZHJlbldpbGxCZVJlbW92ZWQoQ29udGFpbmVyTm9kZSopOwogICAgIHZvaWQgbm9kZVdpbGxC
ZVJlbW92ZWQoTm9kZSopOwogCiAgICAgdm9pZCB0ZXh0SW5zZXJ0ZWQoTm9kZSosIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwMzc1NGI2OWZiYjFhNGRiYzc0MjAw
NTU4YTJkYWYzZDU0NTFjMjIyLi41NmFjODE5ZDRiNmIxZjViNGQ4ZDM0MDU3ODNiZGZiYTY2NjZk
MTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDQtMTYgIEFuZHJlaSBCdWN1ciAgPGFi
dWN1ckBhZG9iZS5jb20+CisKKyAgICAgICAgUmVpbXBsZW1lbnQgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlQ2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExNDY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBwYXRjaCBjcmVhdGVzIG5ldyBiYXNlbGluZXMgZm9yIGFkZGVkLW91dC1vZi1vcmRl
ci5odG1sIHRvIG1hdGNoIEZpcmVGb3guCisgICAgICAgIGNvbnRhaW5lck5vZGUuaHRtbCBpcyBy
ZW1vdmVkIGJlY2F1c2Ugd2Ugbm93IGdvIGluIGFuIGluZmluaXRlIGxvb3Agd2hlbiBhZGRpbmcK
KyAgICAgICAgY2hpbGRyZW4gd2hpbGUgYSBtdXRhdGlvbiBldmVudCBoYW5kbGVyIGlzIGV4ZWN1
dGluZy4KKyAgICAgICAgQWxzbywgdHdvIG5ldyB0ZXN0cyBhcmUgYWRkZWQgdG8gdmVyaWZ5IHRo
ZSByZW1vdmFsIGZ1bmN0aW9uIGJlaGF2ZXMgY29ycmVjdGx5CisgICAgICAgIHdoZW4gdGhlIERP
TSBpcyBtb2RpZmllZCBkdXJpbmcgYSBtdXRhdGlvbiBldmVudCBoYW5kbGVyIGlzIGV4ZWN1dGlu
Zy4KKworICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9y
ZGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2Fk
ZGVkLW91dC1vZi1vcmRlci5odG1sOiBOZXcgYmFzZWxpbmUsIG1hdGNoZXMgRmlyZUZveC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hp
bGRyZW4tZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY29udGFpbmVyTm9k
ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9kb20vY29udGFpbmVyTm9k
ZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL211dGF0aW9uLWR1cmluZy1p
bm5lckhUTUwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tdXRh
dGlvbi1kdXJpbmctaW5uZXJIVE1MLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA0LTE2ICBKYW1lcyBD
cmFpZyAgPGphbWVzQGNvb2tpZWNyb29rLmNvbT4KIAogICAgICAgICBkZm4gZWxlbWVudCBzaG91
bGQgYmUgZXhwb3NlZCBhcyBBWEdyb3VwOkFYRGVmaW5pdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9hZGRlZC1vdXQtb2Ytb3JkZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9hZGRlZC1vdXQt
b2Ytb3JkZXItZXhwZWN0ZWQudHh0CmluZGV4IGRmZmJiYjMzZWZiY2VkNDM3MWZiMTcyYWYyNmZk
NGMxMzk4NDIwZWQuLjM0MTVmMTE3ZTZkYjU0OTUzYWYwYzVlOGYwNmNhODEzMTVmYTNlNWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0
LW9mLW9yZGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQKQEAgLTMsMTYgKzMsMTUg
QEAgVGVzdCBNdXRhdGlvbkV2ZW50cyBpbnRlcmZlcmluZyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXJz
OiBhZGRpbmcgbm9kZXMgJ291dCBvZiBvcmQKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
Ci1QQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMwotUEFTUyBtdXRhdGlvbnNbMF0uYWRkZWROb2Rl
cy5sZW5ndGggaXMgMAotUEFTUyBtdXRhdGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAx
Ci1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSBpcyAnU1BBTicKK1BB
U1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxl
bmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDAKK1BB
U1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAiRElWIgogUEFTUyBtdXRh
dGlvbnNbMV0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3Zl
ZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05h
bWUgaXMgJ0RJVicKLVBBU1MgbXV0YXRpb25zWzJdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDEKLVBB
U1MgbXV0YXRpb25zWzJdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAotUEFTUyBtdXRhdGlvbnNb
Ml0uYWRkZWROb2Rlc1swXS5ub2RlVmFsdWUgaXMgJ2hlbGxvIHdvcmxkJworUEFTUyBtdXRhdGlv
bnNbMV0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0aW9uc1sxXS5hZGRlZE5v
ZGVzWzBdLm5vZGVWYWx1ZSBpcyAiaGVsbG8gd29ybGQiCitQQVNTIG11dGF0aW9uc1sxXS5yZW1v
dmVkTm9kZXNbMF0udGFnTmFtZSBpcyAiU1BBTiIKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWRO
b2Rlc1sxXS50YWdOYW1lIGlzICJESVYiCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci5odG1sCmluZGV4IDdiZjA5NDhm
ZTBlNzMzODFmOTE4ZWZhNmQ3YWJiODVlZjRlOGY2YWQuLjE3MDQ3ZmQ1NmU0NDQ0NDgwMzQzYTE5
MWZlYWVlNTQ2NDcxYzk5ZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vTXV0YXRpb25PYnNlcnZlci9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbApAQCAtMTYsMTUg
KzE2LDE0IEBAIG9ic2VydmVyLm9ic2VydmUoc2FuZGJveCwge2NoaWxkTGlzdDogdHJ1ZX0pOwog
c2FuZGJveC50ZXh0Q29udGVudCA9ICdoZWxsbyB3b3JsZCc7CiAKIHZhciBtdXRhdGlvbnMgPSBv
YnNlcnZlci50YWtlUmVjb3JkcygpOwotc2hvdWxkQmUoIm11dGF0aW9ucy5sZW5ndGgiLCAiMyIp
Owotc2hvdWxkQmUoIm11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCIsICIwIik7Ci1zaG91
bGRCZSgibXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgiLCAiMSIpOwotc2hvdWxkQmUo
Im11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSIsICInU1BBTiciKTsKK3Nob3Vs
ZEJlKCJtdXRhdGlvbnMubGVuZ3RoIiwgIjIiKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMF0uYWRk
ZWROb2Rlcy5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoIm11dGF0aW9uc1swXS5yZW1vdmVkTm9k
ZXMubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygibXV0YXRpb25zWzBdLmFk
ZGVkTm9kZXNbMF0udGFnTmFtZSIsICJESVYiKTsKIHNob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRk
ZWROb2Rlcy5sZW5ndGgiLCAiMSIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9k
ZXMubGVuZ3RoIiwgIjAiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMV0uYWRkZWROb2Rlc1swXS50
YWdOYW1lIiwgIidESVYnIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzJdLmFkZGVkTm9kZXMubGVu
Z3RoIiwgIjEiKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMl0ucmVtb3ZlZE5vZGVzLmxlbmd0aCIs
ICIwIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzJdLmFkZGVkTm9kZXNbMF0ubm9kZVZhbHVlIiwg
IidoZWxsbyB3b3JsZCciKTsKK3Nob3VsZEJlKCJtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzLmxl
bmd0aCIsICIyIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm11dGF0aW9uc1sxXS5hZGRlZE5v
ZGVzWzBdLm5vZGVWYWx1ZSIsICJoZWxsbyB3b3JsZCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzWzBdLnRhZ05hbWUiLCAiU1BBTiIpOworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzWzFdLnRhZ05hbWUiLCAi
RElWIik7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1Jh
bmdlL3JhbmdlLXJlbW92ZS1jaGlsZHJlbi1ldmVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkNjMwMzc2ZTNmNzM3NWE4YjU1MzNkN2ExMzQzMjBmOWYzNzBkOTkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUt
Y2hpbGRyZW4tZXZlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgcmFuZ2Vz
IHJlbWFpbiB2YWxpZCB3aGVuIG1vZGlmaWVkIGluc2lkZSBhIE11dGF0aW9uRXZlbnQgaGFuZGxl
ci4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmFuZ2Uuc3RhcnRDb250
YWluZXIudGFnTmFtZSBpcyAiRElWIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1Jhbmdl
L3JhbmdlLXJlbW92ZS1jaGlsZHJlbi1ldmVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
UmFuZ2UvcmFuZ2UtcmVtb3ZlLWNoaWxkcmVuLWV2ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQzYmZi
YjA5NDcwMjAzNDdjNThlNmU2M2VhNzFhNjdlYjI5NTlhYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLXJlbW92ZS1jaGlsZHJlbi1ldmVudC5odG1s
CkBAIC0wLDAgKzEsMzkgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8ZGl2IGlkPSJjb250ZW50Ij4KKyAgICAgICAgPHNwYW4gaWQ9ImlubmVyQ29udGVudCI+
QTwvc3Bhbj4KKyAgICA8L2Rpdj4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKyAgICBkZXNjcmlwdGlvbigiVGVzdCByYW5nZXMgcmVtYWluIHZhbGlkIHdo
ZW4gbW9kaWZpZWQgaW5zaWRlIGEgTXV0YXRpb25FdmVudCBoYW5kbGVyLiIpOworCisgICAgdmFy
IGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgIHZhciBp
bnNlcnRlZCA9IGZhbHNlOworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
CisgICAgcmFuZ2Uuc2V0U3RhcnQoY29udGVudCwgMCk7CisgICAgcmFuZ2Uuc2V0RW5kKGNvbnRl
bnQsIDApOworICAgIGNvbnRlbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NTm9kZVJlbW92ZWQnLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgaWYgKCFpbnNlcnRlZCkgeworICAgICAgICAgICAgdmFyIG5l
d0NoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZChuZXdDaGlsZCk7CisgICAgICAgICAgICBpbnNlcnRlZCA9IHRydWU7CisK
KyAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KG5ld0NoaWxkKTsKKyAgICAgICAgICAgIHJhbmdl
LnNldEVuZChuZXdDaGlsZCk7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tSYW5nZSwg
MCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBjb250ZW50LmlubmVySFRNTCA9ICIiOworCisg
ICAgIGZ1bmN0aW9uIGNoZWNrUmFuZ2UoKSB7CisgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygicmFuZ2Uuc3RhcnRDb250YWluZXIudGFnTmFtZSIsICJESVYiKTsKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NvbnRhaW5lck5vZGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFpbmVyTm9kZS1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5NTE1ZDQ1M2Y1MzIwNTEyYWEwNTk0N2RkYzRm
ZmI3NWYyNWFmOTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFpbmVyTm9kZS1leHBlY3RlZC50eHQKKysrIC9k
ZXYvbnVsbApAQCAtMSArMCwwIEBACi1QQVNTOiBObyBpbmZpbml0ZSBsb29wLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFpbmVyTm9kZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vY29udGFpbmVyTm9kZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxOGNkOTU4ZWY5ZDIwZDZlMzY0OTJlNTkxMmYyYjI0ZTRhODgyNGIyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2Nv
bnRhaW5lck5vZGUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+Ci0gICAgICAgIGZ1bmN0aW9uIGxvZyhtc2cpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobXNnKSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRJdGVtKGxpc3QsIGNhcHRpb24pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bGknKTsKLSAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoY2FwdGlvbikpOwotICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChpdGVtKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwotCi0gICAgICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3VsJyk7Ci0gICAgICAgICAgICB2YXIgaTsKLSAgICAgICAgICAgIGZvciAoaSA9
IDA7IGkgPCA1OyBpKyspCi0gICAgICAgICAgICAgICAgYXBwZW5kSXRlbShsaXN0LCAnaXRlbSAn
ICsgaSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGls
ZChsaXN0KTsKLSAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVS
ZW1vdmVkIiwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kSXRlbShsaXN0LCAn
aXRlbSAnICsgaSsrKTsKLSAgICAgICAgICAgIH0sIGZhbHNlKTsKLQotICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFnbWVudCk7Ci0gICAgICAgICAgICBsaXN0LnRleHRD
b250ZW50ID0gJyc7Ci0KLSAgICAgICAgICAgIGlmIChsaXN0LmNoaWxkTm9kZXMubGVuZ3RoID09
IDApCi0gICAgICAgICAgICAgICAgbG9nKCdQQVNTOiBObyBpbmZpbml0ZSBsb29wLicpCi0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbG9nKCdGQUlMOiBIYXMgdG9vIG1hbnkgY2hp
bGRyZW4uJykKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2Fk
PSJydW5UZXN0cygpOyI+Ci0KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL211dGF0aW9uLWR1cmluZy1pbm5lckhUTUwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbXV0YXRpb24tZHVyaW5nLWlubmVySFRNTC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODE5YjY0MjQ2NmU3NjQwNzEyOGEwNjZiZDc5ZTE1MDZhM2VkMTE3
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL211dGF0aW9uLWR1
cmluZy1pbm5lckhUTUwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IG5v
ZGVzIGFkZGVkIGR1cmluZyBET01Ob2RlUmVtb3ZlZCBmcm9tIGlubmVySFRNTCBhcmUgbm90aWZp
ZWQgb2YgdGhlaXIgZXZlbnR1YWwgcmVtb3ZhbC4KKworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbXV0YXRpb24tZHVyaW5nLWlubmVySFRNTC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbXV0YXRpb24tZHVyaW5nLWlubmVySFRNTC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEzNDQzZGI1YzAxOGQ0NTZmYmE3MTc5NmMzMTU1YTE1ODA2MGU5NjcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1M
Lmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxwPlRlc3QgdGhhdCBu
b2RlcyBhZGRlZCBkdXJpbmcgRE9NTm9kZVJlbW92ZWQgZnJvbSBpbm5lckhUTUwgYXJlIG5vdGlm
aWVkIG9mIHRoZWlyIGV2ZW50dWFsIHJlbW92YWwuPC9wPgorCis8ZGl2IGlkPSJjb250YWluZXIi
PgorICAgIDxkaXYgaWQ9ImZpcnN0Ij48L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOwordmFyIHNlY29u
ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworc2Vjb25kLmlkID0gJ3NlY29uZCc7
CisKK2NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlUmVtb3ZlZCcsIGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgaWYgKGV2ZW50LnRhcmdldC5pZCA9PSAnZmlyc3QnKQorICAgICAgICBj
b250YWluZXIuYXBwZW5kQ2hpbGQoc2Vjb25kKTsKKyAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09
ICdzZWNvbmQnKQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCdQQVNTJykpOworfSk7CisKK2NvbnRhaW5lci5pbm5lckhUTUwgPSAnJzsK
Kzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>198485</attachid>
            <date>2013-04-17 02:17:21 -0700</date>
            <delta_ts>2016-03-09 09:43:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114677-20130417121652.patch</filename>
            <type>text/plain</type>
            <size>25993</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ4NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc1ODUxMWU1YzFlMTJh
YTA5NjU3YmEwMTVkNTQ2Y2Q4YTU2YmZkOC4uZDdiNTdmNzM1NGMzZWQxMGQwNmI5YmIzYmI1NGY0
MjM0OTYyZWVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEzLTA0LTE3ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFJlaW1wbGVtZW50IENvbnRh
aW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTQ2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbiB0cmllcyB0byBy
ZW1vdmUgYWxsIHRoZSBjaGlsZHJlbiBpbiBidWxrLiBUaGlzCisgICAgICAgIG1lYW5zIHRoZSBz
eW5jaHJvbm91cyBzY3JpcHRzIGV4ZWN1dGluZyBkdXJpbmcgdGhlIHJlbW92YWwgY2FuIGxlYXZl
IHRoZSBkb2N1bWVudAorICAgICAgICBpbiBhIGJhZCBzdGF0ZS4KKyAgICAgICAgVGhlIHBhdGNo
IHJlaW1wbGVtZW50cyB0aGUgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4gZnVuY3Rpb24g
dXNpbmcgYSBmYXN0ZXIKKyAgICAgICAgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQgdmVyc2lv
biwgcmVtb3ZlQ2hpbGRJbnRlcm5hbC4gVGhpcyBmdW5jdGlvbiBhbHNvIG5vdGlmaWVzCisgICAg
ICAgIHRoZSBtdXRhdGlvbiBvYnNlcnZlcnMgdGhlIG5vZGUgd2lsbCBiZSByZW1vdmVkIG9ubHkg
YWZ0ZXIgd2UgYXJlIHN1cmUgaXQgd2lsbCBiZSBkb25lLgorICAgICAgICBUaGUgbmV3IGZ1bmN0
aW9uIGlzIGFsc28gdXNlZCBpbiBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZCB0aHVzIGF2b2lk
aW5nIGNvZGUgZHVwbGljYXRpb24uCisgICAgICAgIFRoaXMgZ2l2ZXMgc2ltaWxhciByZXN1bHRz
IHRvIEZpcmVGb3ggaW4gb25lIG9mIHRoZSB0ZXN0cywgYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwu
CisgICAgICAgIEkgaGF2ZW4ndCBub3RpY2VkIGFueSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiB3
aXRoIHRoZSBwYXRjaC4gVGhpcyBjb3VsZCBiZSBleHBsYWluZWQKKyAgICAgICAgYnkgdGhlIGh1
Z2UgbnVtYmVyIG9mIGxvb3BzIChhdCBsZWFzdCA0KSB0aHJvdWdoIHRoZSBjaGlsZHJlbiBsaXN0
IGFuZCBzbmFwc2hvdHRpbmcKKyAgICAgICAgdGhhdCBhcmUgbWFkZSBieSBDb250YWluZXJOb2Rl
OjpyZW1vdmVDaGlsZHJlbiBhbmQgdGhhdCBhcmUgZ29uZSB3aXRoIHRoZSBwYXRjaC4KKyAgICAg
ICAgVGhlIHBlcmZvcm1hbmNlIHRlc3RzIHVzZWQgYXJlIFBhcnNlci9pbm5lckhUTUwtc2V0dGVy
Lmh0bWwgYW5kIGh0bWw1LWZ1bGwtcmVuZGVyLmh0bWwKKworICAgICAgICBUZXN0czogZmFzdC9k
b20vUmFuZ2UvcmFuZ2UtcmVtb3ZlLWNoaWxkcmVuLWV2ZW50Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZXZlbnRzL211dGF0aW9uLWR1cmluZy1pbm5lckhUTUwuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5vcmRlcjogUmVtb3ZlIGRlYWQgc3ltYm9scy4KKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZEludGVybmFsKToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOiBBZGQgcmVtb3ZlQ2hpbGRJbnRlcm5hbC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOiBSZW1vdmUgZGVhZCBjb2RlLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOiBSZW1vdmUgZGVhZCBjb2RlLgorICAgICAgICAqIGRvbS9SYW5nZS5jcHA6
IFJlbW92ZSBkZWFkIGNvZGUuCisgICAgICAgICogZG9tL1JhbmdlLmg6IFJlbW92ZSBkZWFkIGNv
ZGUuCisKIDIwMTMtMDQtMTYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlLW5hbWUgUGFnZTo6bGF5b3V0TWlsZXN0b25lcygpIHRvIFBhZ2U6OnJlcXVlc3RlZExh
eW91dE1pbGVzdG9uZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
ciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggY2VjYzlkYzhkY2E4MmVjNmVl
NWFlNWJhMmI3MzM0MGZkYjgyOGM4Yy4uMGI2YThjZDI0ZmVjN2RjZDFhMzg1YzI5MDljODIzMTUw
NDJjNDY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC01NzM3LDcgKzU3MzcsNiBAQCBfX1pOSzdX
ZWJDb3JlMjBIVE1MVGFibGVDZWxsRWxlbWVudDEwbWFwVG9FbnRyeUVSS05TXzEzUXVhbGlmaWVk
TmFtZUVSTlNfMjBNYXBwZQogX19aTjdXZWJDb3JlMjBIVE1MVGFibGVDZWxsRWxlbWVudDIwcGFy
c2VNYXBwZWRBdHRyaWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBfX1pOSzdXZWJDb3JlMThBY2Nlc3Np
YmlsaXR5VGFibGU5cm9sZVZhbHVlRXYKIF9fWk43V2ViQ29yZTIyanNIVE1MRWxlbWVudElubmVy
VGV4dEVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50aWZpZXJFCi1f
X1pON1dlYkNvcmU4RG9jdW1lbnQyNW5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWRFUE5TXzEzQ29u
dGFpbmVyTm9kZUUKIF9fWk43V2ViQ29yZTlJbmxpbmVCb3g2cmVtb3ZlRXYKIF9fWk43V2ViQ29y
ZTEzSW5saW5lRmxvd0JveDExcmVtb3ZlQ2hpbGRFUE5TXzlJbmxpbmVCb3hFCiBfX1pON1dlYkNv
cmUxM1Jvb3RJbmxpbmVCb3gxMmNoaWxkUmVtb3ZlZEVQTlNfOUlubGluZUJveEUKQEAgLTEzNTIy
LDggKzEzNTIxLDYgQEAgX19aTks3V2ViQ29yZTE2SFRNTEltYWdlRWxlbWVudDE0aXNVUkxBdHRy
aWJ1dGVFUE5TXzlBdHRyaWJ1dGVFCiBfX1pON1dlYkNvcmUxN01hcmt1cEFjY3VtdWxhdG9yMjlh
cHBlbmRRdW90ZWRVUkxBdHRyaWJ1dGVWYWx1ZUVSTjNXVEY2VmVjdG9ySXRMbTBFRUVSS05TMV82
U3RyaW5nRQogX19aTjdXZWJDb3JlMTdKU0hUTUxCb2R5RWxlbWVudDNwdXRFUE4zSlNDOUV4ZWNT
dGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQdXRQcm9wZXJ0eVNs
b3RFCiBfX1pOM0pTQzlsb29rdXBQdXRJTjdXZWJDb3JlMTdKU0hUTUxCb2R5RWxlbWVudEVFRWJQ
TlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVOU183SlNWYWx1ZUVQS05TXzlIYXNoVGFi
bGVFUFRfCi1fX1pON1dlYkNvcmU1UmFuZ2UyNW5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWRFUE5T
XzEzQ29udGFpbmVyTm9kZUUKLV9fWk43V2ViQ29yZUwzM2JvdW5kYXJ5Tm9kZUNoaWxkcmVuV2ls
bEJlUmVtb3ZlZEVSTlNfMThSYW5nZUJvdW5kYXJ5UG9pbnRFUE5TXzEzQ29udGFpbmVyTm9kZUUK
IF9fWk43V2ViQ29yZTZFZGl0b3IxM2RpZEVuZEVkaXRpbmdFdgogX19aTjdXZWJDb3JlMTNUeXBp
bmdDb21tYW5kRDBFdgogX19aTjdXZWJDb3JlMjBDb21wb3NpdGVFZGl0Q29tbWFuZEQyRXYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBmNmNmZmZlZTZjM2RlY2NhMWJhM2Nm
MGUxODc0OWFmNzE5OWQ0NTE5Li4yNzljMzY4Y2IyOTllMGU1ZDdhNjJjMDIyNTc0N2MwMzc5ZDY4
OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0zNTgsNiArMzU4LDQ1
IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9k
ZT4gbmV3Q2hpbGQsIE5vZGUqIG5leHRDaGlsCiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXIodGhpcykubm90aWZ5KG5ld0NoaWxkLmdldCgpKTsKIH0KIAorLy8gUmV0dXJucyBmYWxzZSBp
ZiB0aGUgdGhlIG5vZGUgd2FzIG1vdmVkIGFuZCBpdCBjYW4ndCBiZSByZW1vdmVkIGFueSBtb3Jl
LgorYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZEludGVybmFsKE5vZGUqIGNoaWxkKQor
eworICAgIEFTU0VSVChjaGlsZC0+cGFyZW50Tm9kZSgpID09IHRoaXMpOworCisgICAgZG9jdW1l
bnQoKS0+cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUoY2hpbGQpOworCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorICAgIGRvY3VtZW50KCktPnJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50T2ZT
dWJ0cmVlKGNoaWxkKTsKKyNlbmRpZgorCisgICAgLy8gRXZlbnRzIGZpcmVkIHdoZW4gYmx1cnJp
bmcgY3VycmVudGx5IGZvY3VzZWQgbm9kZSBtaWdodCBoYXZlIG1vdmVkIHRoaXMKKyAgICAvLyBj
aGlsZCBpbnRvIGEgZGlmZmVyZW50IHBhcmVudC4KKyAgICBpZiAoY2hpbGQtPnBhcmVudE5vZGUo
KSAhPSB0aGlzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBkaXNwYXRjaENoaWxkUmVt
b3ZhbEV2ZW50cyhjaGlsZCk7CisgICAgY2hpbGQtPmRvY3VtZW50KCktPm5vZGVXaWxsQmVSZW1v
dmVkKGNoaWxkKTsKKyAgICBDaGlsZEZyYW1lRGlzY29ubmVjdG9yKGNoaWxkKS5kaXNjb25uZWN0
KCk7CisKKyAgICAvLyBNdXRhdGlvbi91bmxvYWQgZXZlbnRzIG1pZ2h0IGhhdmUgbW92ZWQgdGhp
cyBjaGlsZCBpbnRvIGEgZGlmZmVyZW50IHBhcmVudC4KKyAgICBpZiAoY2hpbGQtPnBhcmVudE5v
ZGUoKSAhPSB0aGlzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBOb3RpZnkgdGhl
IG11dGF0aW9uIG9ic2VydmVycyB0aGUgbm9kZSB3aWxsIGJlIHJlbW92ZWQuCisgICAgQ2hpbGRM
aXN0TXV0YXRpb25TY29wZSh0aGlzKS53aWxsUmVtb3ZlQ2hpbGQoY2hpbGQpOworICAgIGNoaWxk
LT5ub3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxsRGV0YWNoKCk7CisKKyAgICBXaWRnZXRI
aWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzOworCisgICAgTm9kZSogcHJldiA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBO
b2RlKiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CisgICAgcmVtb3ZlQmV0d2VlbihwcmV2
LCBuZXh0LCBjaGlsZCk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAt
MSk7CisgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQo
UGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjLCBBdHRhY2hCZWhhdmlvciBhdHRhY2hCZWhhdmlvcikKIHsKICAgICAvLyBDaGVjayB0aGF0
IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KQEAgLTQ0NSwzNiArNDg0LDYgQEAgYm9vbCBD
b250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCwgTm9k
ZSogb2xkQ2hpbGQsIEV4Y2UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgd2ls
bFJlbW92ZUNoaWxkKE5vZGUqIGNoaWxkKQotewotICAgIEFTU0VSVChjaGlsZC0+cGFyZW50Tm9k
ZSgpKTsKLSAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKGNoaWxkLT5wYXJlbnROb2RlKCkpLndp
bGxSZW1vdmVDaGlsZChjaGlsZCk7Ci0gICAgY2hpbGQtPm5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJz
Tm9kZVdpbGxEZXRhY2goKTsKLSAgICBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhjaGlsZCk7
Ci0gICAgY2hpbGQtPmRvY3VtZW50KCktPm5vZGVXaWxsQmVSZW1vdmVkKGNoaWxkKTsgLy8gZS5n
LiBtdXRhdGlvbiBldmVudCBsaXN0ZW5lciBjYW4gY3JlYXRlIGEgbmV3IHJhbmdlLgotICAgIENo
aWxkRnJhbWVEaXNjb25uZWN0b3IoY2hpbGQpLmRpc2Nvbm5lY3QoKTsKLX0KLQotc3RhdGljIHZv
aWQgd2lsbFJlbW92ZUNoaWxkcmVuKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikKLXsKLSAgICBO
b2RlVmVjdG9yIGNoaWxkcmVuOwotICAgIGdldENoaWxkTm9kZXMoY29udGFpbmVyLCBjaGlsZHJl
bik7Ci0KLSAgICBjb250YWluZXItPmRvY3VtZW50KCktPm5vZGVDaGlsZHJlbldpbGxCZVJlbW92
ZWQoY29udGFpbmVyKTsKLQotICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oY29u
dGFpbmVyKTsKLSAgICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGRy
ZW4uYmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7ICsraXQpIHsKLSAgICAgICAgTm9kZSog
Y2hpbGQgPSBpdC0+Z2V0KCk7Ci0gICAgICAgIG11dGF0aW9uLndpbGxSZW1vdmVDaGlsZChjaGls
ZCk7Ci0gICAgICAgIGNoaWxkLT5ub3RpZnlNdXRhdGlvbk9ic2VydmVyc05vZGVXaWxsRGV0YWNo
KCk7Ci0KLSAgICAgICAgLy8gZmlyZSByZW1vdmVkIGZyb20gZG9jdW1lbnQgbXV0YXRpb24gZXZl
bnRzLgotICAgICAgICBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhjaGlsZCk7Ci0gICAgfQot
Ci0gICAgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcihjb250YWluZXIpLmRpc2Nvbm5lY3QoQ2hpbGRG
cmFtZURpc2Nvbm5lY3Rvcjo6RGVzY2VuZGFudHNPbmx5KTsKLX0KLQogdm9pZCBDb250YWluZXJO
b2RlOjpkaXNjb25uZWN0RGVzY2VuZGFudEZyYW1lcygpCiB7CiAgICAgQ2hpbGRGcmFtZURpc2Nv
bm5lY3Rvcih0aGlzKS5kaXNjb25uZWN0KCk7CkBAIC01MDQsMzYgKzUxMywxMSBAQCBib29sIENv
bnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBl
YykKIAogICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9IG9sZENoaWxkOwogCi0gICAgZG9jdW1lbnQo
KS0+cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUoY2hpbGQuZ2V0KCkpOwotCi0jaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQotICAgIGRvY3VtZW50KCktPnJlbW92ZUZ1bGxTY3JlZW5FbGVtZW50
T2ZTdWJ0cmVlKGNoaWxkLmdldCgpKTsKLSNlbmRpZgotCi0gICAgLy8gRXZlbnRzIGZpcmVkIHdo
ZW4gYmx1cnJpbmcgY3VycmVudGx5IGZvY3VzZWQgbm9kZSBtaWdodCBoYXZlIG1vdmVkIHRoaXMK
LSAgICAvLyBjaGlsZCBpbnRvIGEgZGlmZmVyZW50IHBhcmVudC4KLSAgICBpZiAoY2hpbGQtPnBh
cmVudE5vZGUoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHdpbGxSZW1vdmVDaGlsZChjaGlsZC5nZXQo
KSk7Ci0KLSAgICAvLyBNdXRhdGlvbiBldmVudHMgbWlnaHQgaGF2ZSBtb3ZlZCB0aGlzIGNoaWxk
IGludG8gYSBkaWZmZXJlbnQgcGFyZW50LgotICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpICE9
IHRoaXMpIHsKKyAgICBpZiAoIXJlbW92ZUNoaWxkSW50ZXJuYWwoY2hpbGQuZ2V0KCkpKSB7CiAg
ICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIHsKLSAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBz
dXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKLQotICAgICAgICBOb2RlKiBwcmV2ID0gY2hp
bGQtPnByZXZpb3VzU2libGluZygpOwotICAgICAgICBOb2RlKiBuZXh0ID0gY2hpbGQtPm5leHRT
aWJsaW5nKCk7Ci0gICAgICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgY2hpbGQuZ2V0KCkp
OwotICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIHByZXYsIG5leHQsIC0xKTsKLSAgICAg
ICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZC5nZXQoKSk7Ci0g
ICAgfQogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKIAogICAgIHJldHVybiBj
aGlsZDsKQEAgLTU4Niw4ICs1NzAsOCBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92
ZUNoaWxkKE5vZGUqIG9sZENoaWxkKQogICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlz
KS5ub3RpZnkob2xkQ2hpbGQpOwogfQogCi0vLyB0aGlzIGRpZmZlcnMgZnJvbSBvdGhlciByZW1v
dmUgZnVuY3Rpb25zIGJlY2F1c2UgaXQgZm9yY2libHkgcmVtb3ZlcyBhbGwgdGhlIGNoaWxkcmVu
LAotLy8gcmVnYXJkbGVzcyBvZiByZWFkLW9ubHkgc3RhdHVzIG9yIGV2ZW50IGV4Y2VwdGlvbnMs
IGUuZy4KKy8vIFRoaXMgZGlmZmVycyBmcm9tIG90aGVyIHJlbW92ZSBmdW5jdGlvbnMgYmVjYXVz
ZSBpdCBmb3JjaWJseSByZW1vdmVzIGFsbCB0aGUgY2hpbGRyZW4sCisvLyByZWdhcmRsZXNzIG9m
IHJlYWQtb25seSBzdGF0dXMgb3IgZXZlbnQgZXhjZXB0aW9ucy4KIHZvaWQgQ29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGRyZW4oKQogewogICAgIGlmICghbV9maXJzdENoaWxkKQpAQCAtNTk1LDU4
ICs1NzksMTEgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAKICAgICAv
LyBUaGUgY29udGFpbmVyIG5vZGUgY2FuIGJlIHJlbW92ZWQgZnJvbSBldmVudCBoYW5kbGVycy4K
ICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDaGlsZExpc3RN
dXRhdGlvblNjb3BlIG11dGF0aW9uKHRoaXMpOwogCi0gICAgLy8gZXhjbHVkZSB0aGlzIG5vZGUg
d2hlbiBsb29raW5nIGZvciByZW1vdmVkIGZvY3VzZWROb2RlIHNpbmNlIG9ubHkgY2hpbGRyZW4g
d2lsbCBiZSByZW1vdmVkCi0gICAgZG9jdW1lbnQoKS0+cmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRy
ZWUodGhpcywgdHJ1ZSk7Ci0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgZG9jdW1l
bnQoKS0+cmVtb3ZlRnVsbFNjcmVlbkVsZW1lbnRPZlN1YnRyZWUodGhpcywgdHJ1ZSk7Ci0jZW5k
aWYKLQotICAgIC8vIERvIGFueSBwcmVwIHdvcmsgbmVlZGVkIGJlZm9yZSBhY3R1YWxseSBzdGFy
dGluZyB0byBkZXRhY2gKLSAgICAvLyBhbmQgcmVtb3ZlLi4uIGUuZy4gc3RvcCBsb2FkaW5nIGZy
YW1lcywgZmlyZSB1bmxvYWQgZXZlbnRzLgotICAgIHdpbGxSZW1vdmVDaGlsZHJlbihwcm90ZWN0
LmdldCgpKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4sIDEwPiByZW1vdmVkQ2hpbGRyZW47
Ci0gICAgewotICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1
c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwotICAgICAgICB7Ci0gICAgICAgICAgICBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwotICAgICAgICAgICAg
cmVtb3ZlZENoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2hpbGROb2RlQ291bnQoKSk7
Ci0gICAgICAgICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IG4gPSBtX2ZpcnN0Q2hpbGQpIHsKLSAg
ICAgICAgICAgICAgICBOb2RlKiBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKLQotICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSB0aGUgbm9kZSBmcm9tIHRoZSB0cmVlIGJlZm9yZSBjYWxsaW5nIGRl
dGFjaCBvciByZW1vdmVkRnJvbURvY3VtZW50ICg0NDI3MDI0LCA0MTI5NzQ0KS4KLSAgICAgICAg
ICAgICAgICAvLyByZW1vdmVDaGlsZCgpIGRvZXMgdGhpcyBhZnRlciBjYWxsaW5nIGRldGFjaCgp
LiBUaGVyZSBpcyBubyBleHBsYW5hdGlvbiBmb3IKLSAgICAgICAgICAgICAgICAvLyB0aGlzIGRp
c2NyZXBhbmN5IGJldHdlZW4gcmVtb3ZlQ2hpbGQoKSBhbmQgaXRzIG9wdGltaXplZCB2ZXJzaW9u
IHJlbW92ZUNoaWxkcmVuKCkuCi0gICAgICAgICAgICAgICAgbi0+c2V0UHJldmlvdXNTaWJsaW5n
KDApOwotICAgICAgICAgICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwotICAgICAgICAgICAg
ICAgIG4tPnNldFBhcmVudE9yU2hhZG93SG9zdE5vZGUoMCk7Ci0gICAgICAgICAgICAgICAgZG9j
dW1lbnQoKS0+YWRvcHRJZk5lZWRlZChuLmdldCgpKTsKLQotICAgICAgICAgICAgICAgIG1fZmly
c3RDaGlsZCA9IG5leHQ7Ci0gICAgICAgICAgICAgICAgaWYgKG4gPT0gbV9sYXN0Q2hpbGQpCi0g
ICAgICAgICAgICAgICAgICAgIG1fbGFzdENoaWxkID0gMDsKLSAgICAgICAgICAgICAgICByZW1v
dmVkQ2hpbGRyZW4uYXBwZW5kKG4ucmVsZWFzZSgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gRGV0YWNoIHRoZSBub2RlcyBvbmx5IGFmdGVyIHByb3Blcmx5IHJlbW92ZWQgZnJv
bSB0aGUgdHJlZSBiZWNhdXNlCi0gICAgICAgICAgICAvLyBhLiBkZXRhY2hpbmcgcmVxdWlyZXMg
YSBwcm9wZXIgRE9NIHRyZWUgKGZvciBjb3VudGVycyBhbmQgcXVvdGVzIGZvcgotICAgICAgICAg
ICAgLy8gZXhhbXBsZSkgYW5kIGR1cmluZyB0aGUgcHJldmlvdXMgbG9vcCB0aGUgbmV4dCBzaWJs
aW5nIHN0aWxsIHBvaW50cyB0bwotICAgICAgICAgICAgLy8gdGhlIG5vZGUgYmVpbmcgcmVtb3Zl
ZCB3aGlsZSB0aGUgbm9kZSBiZWluZyByZW1vdmVkIGRvZXMgbm90IHBvaW50IGJhY2sKLSAgICAg
ICAgICAgIC8vIGFuZCBkb2VzIG5vdCBwb2ludCB0byB0aGUgc2FtZSBwYXJlbnQgYXMgaXRzIG5l
eHQgc2libGluZy4KLSAgICAgICAgICAgIC8vIGIuIGRlc3Ryb3lpbmcgUmVuZGVyZXJzIG9mIHN0
YW5kYWxvbmUgbm9kZXMgaXMgc29tZXRpbWVzIGZhc3Rlci4KLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAg
ICAgICAgTm9kZSogcmVtb3ZlZENoaWxkID0gcmVtb3ZlZENoaWxkcmVuW2ldLmdldCgpOwotICAg
ICAgICAgICAgICAgIGlmIChyZW1vdmVkQ2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICAg
ICAgICAgIHJlbW92ZWRDaGlsZC0+ZGV0YWNoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIDAsIDAsIC1zdGF0aWNfY2FzdDxpbnQ+
KHJlbW92ZWRDaGlsZHJlbi5zaXplKCkpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICAgICAgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0uZ2V0
KCkpOworICAgIHdoaWxlIChtX2ZpcnN0Q2hpbGQpIHsKKyAgICAgICAgUmVmUHRyPE5vZGU+IGNo
aWxkID0gbV9maXJzdENoaWxkOworICAgICAgICByZW1vdmVDaGlsZEludGVybmFsKGNoaWxkLmdl
dCgpKTsKICAgICB9CiAKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA2ZDc3ZDA0ZTVjYjkwMWJjYjA2N2UwOGQ2MjFm
MjdjOGI5MWM0NTUyLi5iNGE1MmUxMDQwNGUyNmQyZWVkNWU1NjMyMmQxMjJiNTE4OGIyY2JkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTE1OSw2ICsxNTksOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgZ2V0VXBwZXJMZWZ0Q29ybmVyKEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBi
b29sIGdldExvd2VyUmlnaHRDb3JuZXIoRmxvYXRQb2ludCYpIGNvbnN0OwogCisgICAgYm9vbCBy
ZW1vdmVDaGlsZEludGVybmFsKE5vZGUqKTsKKwogICAgIE5vZGUqIG1fZmlyc3RDaGlsZDsKICAg
ICBOb2RlKiBtX2xhc3RDaGlsZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2NGNi
NWYwYWQyYzM5MThiZTBiOWI4MjBhYTM5NTg4NTM2OGYzYzY4Li42ZmQyODJmZWMwZjRiYzRlMDBk
ODNjZmNkMjA0MTU4ODUyODUyNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM1NzUs
MjkgKzM1NzUsNiBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuQ2hh
bmdlZChDb250YWluZXJOb2RlKiBjb250YWluZXIpCiAgICAgfQogfQogCi12b2lkIERvY3VtZW50
Ojpub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikKLXsK
LSAgICBpZiAoIW1fcmFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBIYXNoU2V0PFJhbmdlKj46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFuZ2VzLmVuZCgpOwotICAgICAgICBmb3IgKEhhc2hT
ZXQ8UmFuZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Jhbmdlcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICAgICAoKml0KS0+bm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChj
b250YWluZXIpOwotICAgIH0KLQotICAgIEhhc2hTZXQ8Tm9kZUl0ZXJhdG9yKj46OmNvbnN0X2l0
ZXJhdG9yIG5vZGVJdGVyYXRvcnNFbmQgPSBtX25vZGVJdGVyYXRvcnMuZW5kKCk7Ci0gICAgZm9y
IChIYXNoU2V0PE5vZGVJdGVyYXRvcio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbm9kZUl0ZXJh
dG9ycy5iZWdpbigpOyBpdCAhPSBub2RlSXRlcmF0b3JzRW5kOyArK2l0KSB7Ci0gICAgICAgIGZv
ciAoTm9kZSogbiA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+bmV4dFNpYmxp
bmcoKSkKLSAgICAgICAgICAgICgqaXQpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsKLSAgICB9Ci0K
LSAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewotICAgICAgICBmb3IgKE5v
ZGUqIG4gPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bm9kZVdpbGxCZVJlbW92ZWQo
bik7Ci0gICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm5vZGVXaWxsQmVSZW1vdmVkKG4p
OwotICAgICAgICAgICAgZnJhbWUtPnBhZ2UoKS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5ub2Rl
V2lsbEJlUmVtb3ZlZChuKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBEb2N1bWVudDo6
bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbikKIHsKICAgICBIYXNoU2V0PE5vZGVJdGVyYXRvcio+
Ojpjb25zdF9pdGVyYXRvciBub2RlSXRlcmF0b3JzRW5kID0gbV9ub2RlSXRlcmF0b3JzLmVuZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzMDY3NDc0N2M2N2IwYWI5MGE0OWViY2IxM2Y1MzM0
MzY5OTA5NTU2Li4yYmRhN2VkMmIzNjZhZjcyNzE0OWVjNzRiNTQwN2NhM2UzZDNkNzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtNzI0LDggKzcyNCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRl
dGFjaFJhbmdlKFJhbmdlKik7CiAKICAgICB2b2lkIHVwZGF0ZVJhbmdlc0FmdGVyQ2hpbGRyZW5D
aGFuZ2VkKENvbnRhaW5lck5vZGUqKTsKLSAgICAvLyBub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVk
IGlzIHVzZWQgd2hlbiByZW1vdmluZyBhbGwgbm9kZSBjaGlsZHJlbiBhdCBvbmNlLgotICAgIHZv
aWQgbm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZChDb250YWluZXJOb2RlKik7CiAgICAgLy8gbm9k
ZVdpbGxCZVJlbW92ZWQgaXMgb25seSBzYWZlIHdoZW4gcmVtb3Zpbmcgb25lIG5vZGUgYXQgYSB0
aW1lLgogICAgIHZvaWQgbm9kZVdpbGxCZVJlbW92ZWQoTm9kZSopOwogICAgIGJvb2wgY2FuUmVw
bGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAppbmRleCA1NjUxMTM4OTVjZGFhNDg5ZjkwMzVlM2RmNjM1YzU1YzE1NzlhNmI3Li45ODI1MjUx
ZDg1ZGQ4MzlmOGQwODRlY2ExZWMxYjllNGVkYTNkZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAg
LTE3MzIsMzEgKzE3MzIsNiBAQCB2b2lkIFJhbmdlOjpub2RlQ2hpbGRyZW5DaGFuZ2VkKENvbnRh
aW5lck5vZGUqIGNvbnRhaW5lcikKICAgICBib3VuZGFyeU5vZGVDaGlsZHJlbkNoYW5nZWQobV9l
bmQsIGNvbnRhaW5lcik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBib3VuZGFyeU5vZGVDaGls
ZHJlbldpbGxCZVJlbW92ZWQoUmFuZ2VCb3VuZGFyeVBvaW50JiBib3VuZGFyeSwgQ29udGFpbmVy
Tm9kZSogY29udGFpbmVyKQotewotICAgIGZvciAoTm9kZSogbm9kZVRvQmVSZW1vdmVkID0gY29u
dGFpbmVyLT5maXJzdENoaWxkKCk7IG5vZGVUb0JlUmVtb3ZlZDsgbm9kZVRvQmVSZW1vdmVkID0g
bm9kZVRvQmVSZW1vdmVkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChib3VuZGFyeS5j
aGlsZEJlZm9yZSgpID09IG5vZGVUb0JlUmVtb3ZlZCkgewotICAgICAgICAgICAgYm91bmRhcnku
c2V0VG9TdGFydE9mTm9kZShjb250YWluZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZm9yIChOb2RlKiBuID0gYm91bmRhcnkuY29udGFpbmVyKCk7IG47IG4g
PSBuLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIGlmIChuID09IG5vZGVUb0JlUmVtb3Zl
ZCkgewotICAgICAgICAgICAgICAgIGJvdW5kYXJ5LnNldFRvU3RhcnRPZk5vZGUoY29udGFpbmVy
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXZvaWQgUmFuZ2U6Om5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoQ29udGFpbmVy
Tm9kZSogY29udGFpbmVyKQotewotICAgIEFTU0VSVChjb250YWluZXIpOwotICAgIEFTU0VSVChj
b250YWluZXItPmRvY3VtZW50KCkgPT0gbV9vd25lckRvY3VtZW50KTsKLSAgICBib3VuZGFyeU5v
ZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQobV9zdGFydCwgY29udGFpbmVyKTsKLSAgICBib3VuZGFy
eU5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQobV9lbmQsIGNvbnRhaW5lcik7Ci19Ci0KIHN0YXRp
YyBpbmxpbmUgdm9pZCBib3VuZGFyeU5vZGVXaWxsQmVSZW1vdmVkKFJhbmdlQm91bmRhcnlQb2lu
dCYgYm91bmRhcnksIE5vZGUqIG5vZGVUb0JlUmVtb3ZlZCkKIHsKICAgICBpZiAoYm91bmRhcnku
Y2hpbGRCZWZvcmUoKSA9PSBub2RlVG9CZVJlbW92ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9SYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKaW5kZXggMjMy
NmNlZWMxNzVjNWQ4ZjA4M2U5NmY5MTI3MzcxYTFhZDkyMDExNi4uYTIzOTllZDhhMmY5ODEzOGE4
MjU3YzlhNTA0MDQwZjNlM2M2N2NkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Jh
bmdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmgKQEAgLTEyOCw3ICsxMjgsNiBA
QCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nUmVjdCgpIGNvbnN0OwogCiAgICAgdm9p
ZCBub2RlQ2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGUqKTsKLSAgICB2b2lkIG5vZGVDaGls
ZHJlbldpbGxCZVJlbW92ZWQoQ29udGFpbmVyTm9kZSopOwogICAgIHZvaWQgbm9kZVdpbGxCZVJl
bW92ZWQoTm9kZSopOwogCiAgICAgdm9pZCB0ZXh0SW5zZXJ0ZWQoTm9kZSosIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMzg1MWI0YThhMDNhMDVhZjU0OGFhNjY2
OWIxODQyNmUwNGQ5N2FiLi40YzM4ZWNmZTJkOWIyZDRhN2Y0MzNjNzM1ZDc0NDY2ZWMyMjJkZTVl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDQtMTcgIEFuZHJlaSBCdWN1ciAgPGFidWN1
ckBhZG9iZS5jb20+CisKKyAgICAgICAgUmVpbXBsZW1lbnQgQ29udGFpbmVyTm9kZTo6cmVtb3Zl
Q2hpbGRyZW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNDY3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBwYXRjaCBjcmVhdGVzIG5ldyBiYXNlbGluZXMgZm9yIGFkZGVkLW91dC1vZi1vcmRlci5o
dG1sIHRvIG1hdGNoIEZpcmVGb3guCisgICAgICAgIGNvbnRhaW5lck5vZGUuaHRtbCBpcyByZW1v
dmVkIGJlY2F1c2Ugd2Ugbm93IGdvIGluIGFuIGluZmluaXRlIGxvb3Agd2hlbiBhZGRpbmcKKyAg
ICAgICAgY2hpbGRyZW4gd2hpbGUgYSBtdXRhdGlvbiBldmVudCBoYW5kbGVyIGlzIGV4ZWN1dGlu
Zy4KKyAgICAgICAgQWxzbywgdHdvIG5ldyB0ZXN0cyBhcmUgYWRkZWQgdG8gdmVyaWZ5IHRoZSBy
ZW1vdmFsIGZ1bmN0aW9uIGJlaGF2ZXMgY29ycmVjdGx5CisgICAgICAgIHdoZW4gdGhlIERPTSBp
cyBtb2RpZmllZCBkdXJpbmcgYSBtdXRhdGlvbiBldmVudCBoYW5kbGVyIGlzIGV4ZWN1dGluZy4K
KworICAgICAgICAqIGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVy
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVk
LW91dC1vZi1vcmRlci5odG1sOiBOZXcgYmFzZWxpbmUsIG1hdGNoZXMgRmlyZUZveC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9SYW5nZS9yYW5nZS1yZW1vdmUtY2hpbGRy
ZW4tZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vY29udGFpbmVyTm9kZS1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9kb20vY29udGFpbmVyTm9kZS5o
dG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL211dGF0aW9uLWR1cmluZy1pbm5l
ckhUTUwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tdXRhdGlv
bi1kdXJpbmctaW5uZXJIVE1MLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA0LTE2ICBIYW5zIE11bGxl
ciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gcG9seWdv
biBzaGFwZS1pbnNpZGUgbGF5b3V0IGZhaWxzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci1l
eHBlY3RlZC50eHQKaW5kZXggZGZmYmJiMzNlZmJjZWQ0MzcxZmIxNzJhZjI2ZmQ0YzEzOTg0MjBl
ZC4uMzQxNWYxMTdlNmRiNTQ5NTNhZjBjNWU4ZjA2Y2E4MTMxNWZhM2U1ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9hZGRlZC1vdXQtb2Ytb3JkZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIv
YWRkZWQtb3V0LW9mLW9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMywxNiArMywxNSBAQCBUZXN0IE11
dGF0aW9uRXZlbnRzIGludGVyZmVyaW5nIHdpdGggTXV0YXRpb25PYnNlcnZlcnM6IGFkZGluZyBu
b2RlcyAnb3V0IG9mIG9yZAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgbXV0
YXRpb25zLmxlbmd0aCBpcyAzCi1QQVNTIG11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxlbmd0aCBp
cyAwCi1QQVNTIG11dGF0aW9uc1swXS5yZW1vdmVkTm9kZXMubGVuZ3RoIGlzIDEKLVBBU1MgbXV0
YXRpb25zWzBdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lIGlzICdTUEFOJworUEFTUyBtdXRhdGlv
bnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDEK
K1BBU1MgbXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBtdXRhdGlv
bnNbMF0uYWRkZWROb2Rlc1swXS50YWdOYW1lIGlzICJESVYiCiBQQVNTIG11dGF0aW9uc1sxXS5h
ZGRlZE5vZGVzLmxlbmd0aCBpcyAxCi1QQVNTIG11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVu
Z3RoIGlzIDAKLVBBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0udGFnTmFtZSBpcyAnRElW
JwotUEFTUyBtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5sZW5ndGggaXMgMQotUEFTUyBtdXRhdGlv
bnNbMl0ucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCi1QQVNTIG11dGF0aW9uc1syXS5hZGRlZE5v
ZGVzWzBdLm5vZGVWYWx1ZSBpcyAnaGVsbG8gd29ybGQnCitQQVNTIG11dGF0aW9uc1sxXS5yZW1v
dmVkTm9kZXMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0ubm9k
ZVZhbHVlIGlzICJoZWxsbyB3b3JsZCIKK1BBU1MgbXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlc1sw
XS50YWdOYW1lIGlzICJTUEFOIgorUEFTUyBtdXRhdGlvbnNbMV0ucmVtb3ZlZE5vZGVzWzFdLnRh
Z05hbWUgaXMgIkRJViIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvYWRkZWQtb3V0LW9mLW9yZGVyLmh0bWwKaW5kZXggN2JmMDk0OGZlMGU3MzM4MWY5
MThlZmE2ZDdhYmI4NWVmNGU4ZjZhZC4uMTcwNDdmZDU2ZTQ0NDQ0ODAzNDNhMTkxZmVhZWU1NDY0
NzFjOTlmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZl
ci9hZGRlZC1vdXQtb2Ytb3JkZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRh
dGlvbk9ic2VydmVyL2FkZGVkLW91dC1vZi1vcmRlci5odG1sCkBAIC0xNiwxNSArMTYsMTQgQEAg
b2JzZXJ2ZXIub2JzZXJ2ZShzYW5kYm94LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CiBzYW5kYm94LnRl
eHRDb250ZW50ID0gJ2hlbGxvIHdvcmxkJzsKIAogdmFyIG11dGF0aW9ucyA9IG9ic2VydmVyLnRh
a2VSZWNvcmRzKCk7Ci1zaG91bGRCZSgibXV0YXRpb25zLmxlbmd0aCIsICIzIik7Ci1zaG91bGRC
ZSgibXV0YXRpb25zWzBdLmFkZGVkTm9kZXMubGVuZ3RoIiwgIjAiKTsKLXNob3VsZEJlKCJtdXRh
dGlvbnNbMF0ucmVtb3ZlZE5vZGVzLmxlbmd0aCIsICIxIik7Ci1zaG91bGRCZSgibXV0YXRpb25z
WzBdLnJlbW92ZWROb2Rlc1swXS50YWdOYW1lIiwgIidTUEFOJyIpOworc2hvdWxkQmUoIm11dGF0
aW9ucy5sZW5ndGgiLCAiMiIpOworc2hvdWxkQmUoIm11dGF0aW9uc1swXS5hZGRlZE5vZGVzLmxl
bmd0aCIsICIxIik7CitzaG91bGRCZSgibXV0YXRpb25zWzBdLnJlbW92ZWROb2Rlcy5sZW5ndGgi
LCAiMCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJtdXRhdGlvbnNbMF0uYWRkZWROb2Rlc1sw
XS50YWdOYW1lIiwgIkRJViIpOwogc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVzLmxl
bmd0aCIsICIxIik7Ci1zaG91bGRCZSgibXV0YXRpb25zWzFdLnJlbW92ZWROb2Rlcy5sZW5ndGgi
LCAiMCIpOwotc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5hZGRlZE5vZGVzWzBdLnRhZ05hbWUiLCAi
J0RJViciKTsKLXNob3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlcy5sZW5ndGgiLCAiMSIp
Owotc2hvdWxkQmUoIm11dGF0aW9uc1syXS5yZW1vdmVkTm9kZXMubGVuZ3RoIiwgIjAiKTsKLXNo
b3VsZEJlKCJtdXRhdGlvbnNbMl0uYWRkZWROb2Rlc1swXS5ub2RlVmFsdWUiLCAiJ2hlbGxvIHdv
cmxkJyIpOworc2hvdWxkQmUoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXMubGVuZ3RoIiwgIjIi
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygibXV0YXRpb25zWzFdLmFkZGVkTm9kZXNbMF0ubm9k
ZVZhbHVlIiwgImhlbGxvIHdvcmxkIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIm11dGF0aW9u
c1sxXS5yZW1vdmVkTm9kZXNbMF0udGFnTmFtZSIsICJTUEFOIik7CitzaG91bGRCZUVxdWFsVG9T
dHJpbmcoIm11dGF0aW9uc1sxXS5yZW1vdmVkTm9kZXNbMV0udGFnTmFtZSIsICJESVYiKTsKIDwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2Ut
cmVtb3ZlLWNoaWxkcmVuLWV2ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1JhbmdlL3JhbmdlLXJlbW92ZS1jaGlsZHJlbi1ldmVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNmQ2MzAzNzZlM2Y3Mzc1YThiNTUzM2Q3YTEzNDMyMGY5ZjM3MGQ5OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1JhbmdlL3JhbmdlLXJlbW92ZS1jaGlsZHJlbi1l
dmVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCByYW5nZXMgcmVtYWluIHZh
bGlkIHdoZW4gbW9kaWZpZWQgaW5zaWRlIGEgTXV0YXRpb25FdmVudCBoYW5kbGVyLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyByYW5nZS5zdGFydENvbnRhaW5lci50YWdO
YW1lIGlzICJESVYiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vUmFuZ2UvcmFuZ2UtcmVt
b3ZlLWNoaWxkcmVuLWV2ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9SYW5nZS9yYW5n
ZS1yZW1vdmUtY2hpbGRyZW4tZXZlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDNiZmJiMDk0NzAyMDM0
N2M1OGU2ZTYzZWE3MWE2N2ViMjk1OWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vUmFuZ2UvcmFuZ2UtcmVtb3ZlLWNoaWxkcmVuLWV2ZW50Lmh0bWwKQEAgLTAsMCAr
MSwzOSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYg
aWQ9ImNvbnRlbnQiPgorICAgICAgICA8c3BhbiBpZD0iaW5uZXJDb250ZW50Ij5BPC9zcGFuPgor
ICAgIDwvZGl2PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgIGRlc2NyaXB0aW9uKCJUZXN0IHJhbmdlcyByZW1haW4gdmFsaWQgd2hlbiBtb2RpZmll
ZCBpbnNpZGUgYSBNdXRhdGlvbkV2ZW50IGhhbmRsZXIuIik7CisKKyAgICB2YXIgY29udGVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgdmFyIGluc2VydGVkID0g
ZmFsc2U7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5n
ZS5zZXRTdGFydChjb250ZW50LCAwKTsKKyAgICByYW5nZS5zZXRFbmQoY29udGVudCwgMCk7Cisg
ICAgY29udGVudC5hZGRFdmVudExpc3RlbmVyKCdET01Ob2RlUmVtb3ZlZCcsIGZ1bmN0aW9uKCkg
eworICAgICAgICBpZiAoIWluc2VydGVkKSB7CisgICAgICAgICAgICB2YXIgbmV3Q2hpbGQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgICAgICAgICBjb250ZW50LmFwcGVuZENo
aWxkKG5ld0NoaWxkKTsKKyAgICAgICAgICAgIGluc2VydGVkID0gdHJ1ZTsKKworICAgICAgICAg
ICAgcmFuZ2Uuc2V0U3RhcnQobmV3Q2hpbGQpOworICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKG5l
d0NoaWxkKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChjaGVja1JhbmdlLCAwKTsKKyAgICAg
ICAgfQorICAgIH0pOworICAgIGNvbnRlbnQuaW5uZXJIVE1MID0gIiI7CisKKyAgICAgZnVuY3Rp
b24gY2hlY2tSYW5nZSgpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJyYW5nZS5z
dGFydENvbnRhaW5lci50YWdOYW1lIiwgIkRJViIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFpbmVyTm9kZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jb250YWluZXJOb2RlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTk1MTVkNDUzZjUzMjA1MTJhYTA1OTQ3ZGRjNGZmYjc1ZjI1YWY5
My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jb250YWluZXJOb2RlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLVBBU1M6IE5vIGluZmluaXRlIGxvb3AuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9jb250YWluZXJOb2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9j
b250YWluZXJOb2RlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4Y2Q5NThl
ZjlkMjBkNmUzNjQ5MmU1OTEyZjJiMjRlNGE4ODI0YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29udGFpbmVyTm9k
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08
aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAg
ICAgZnVuY3Rpb24gbG9nKG1zZykKLSAgICAgICAgewotICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cpKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZEl0ZW0obGlzdCwgY2FwdGlvbikKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAg
ICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjYXB0aW9u
KSk7Ci0gICAgICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGl0ZW0pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci0KLSAgICAgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJh
Z21lbnQoKTsKLSAgICAgICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
dWwnKTsKLSAgICAgICAgICAgIHZhciBpOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDU7
IGkrKykKLSAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGxpc3QsICdpdGVtICcgKyBpKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGxpc3QpOwot
ICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRJdGVtKGxpc3QsICdpdGVtICcgKyBp
KyspOwotICAgICAgICAgICAgfSwgZmFsc2UpOwotCi0gICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGZyYWdtZW50KTsKLSAgICAgICAgICAgIGxpc3QudGV4dENvbnRlbnQgPSAn
JzsKLQotICAgICAgICAgICAgaWYgKGxpc3QuY2hpbGROb2Rlcy5sZW5ndGggPT0gMCkKLSAgICAg
ICAgICAgICAgICBsb2coJ1BBU1M6IE5vIGluZmluaXRlIGxvb3AuJykKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBsb2coJ0ZBSUw6IEhhcyB0b28gbWFueSBjaGlsZHJlbi4nKQot
ICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3Rz
KCk7Ij4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbXV0YXRpb24tZHVyaW5nLWlubmVySFRNTC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1MLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MTliNjQyNDY2ZTc2NDA3MTI4YTA2NmJkNzllMTUwNmEzZWQxMTdjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbXV0YXRpb24tZHVyaW5nLWlubmVy
SFRNTC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgbm9kZXMgYWRkZWQg
ZHVyaW5nIERPTU5vZGVSZW1vdmVkIGZyb20gaW5uZXJIVE1MIGFyZSBub3RpZmllZCBvZiB0aGVp
ciBldmVudHVhbCByZW1vdmFsLgorCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1MLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tdXRhdGlvbi1kdXJpbmctaW5uZXJIVE1MLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTM0NDNk
YjVjMDE4ZDQ1NmZiYTcxNzk2YzMxNTVhMTU4MDYwZTk2NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL211dGF0aW9uLWR1cmluZy1pbm5lckhUTUwuaHRtbApAQCAt
MCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKworPHA+VGVzdCB0aGF0IG5vZGVzIGFkZGVk
IGR1cmluZyBET01Ob2RlUmVtb3ZlZCBmcm9tIGlubmVySFRNTCBhcmUgbm90aWZpZWQgb2YgdGhl
aXIgZXZlbnR1YWwgcmVtb3ZhbC48L3A+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+CisgICAgPGRp
diBpZD0iZmlyc3QiPjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK3ZhciBjb250YWluZXIgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJyk7Cit2YXIgc2Vjb25kID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitzZWNvbmQuaWQgPSAnc2Vjb25kJzsKKworY29udGFp
bmVyLmFkZEV2ZW50TGlzdGVuZXIoJ0RPTU5vZGVSZW1vdmVkJywgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICBpZiAoZXZlbnQudGFyZ2V0LmlkID09ICdmaXJzdCcpCisgICAgICAgIGNvbnRhaW5lci5h
cHBlbmRDaGlsZChzZWNvbmQpOworICAgIGlmIChldmVudC50YXJnZXQuaWQgPT0gJ3NlY29uZCcp
CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJ1BBU1MnKSk7Cit9KTsKKworY29udGFpbmVyLmlubmVySFRNTCA9ICcnOworPC9zY3JpcHQ+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>198596</attachid>
            <date>2013-04-17 12:46:19 -0700</date>
            <delta_ts>2013-04-17 12:48:38 -0700</delta_ts>
            <desc>Dromaeo-dom</desc>
            <filename>dromaeo.html</filename>
            <type>text/html</type>
            <size>25781</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAg
ICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVs
YXRpdmU7Cn0KCi50aW1lLXBsb3RzIHsKICAgIHBhZGRpbmctbGVmdDogMjVweDsKfQoKLnRpbWUt
cGxvdHMgPiBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgd2lkdGg6IDkwcHg7
CiAgICBoZWlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCnNlY3Rpb24gaDEg
ewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNlY3Rpb24g
LnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjogY2VudGVy
OwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHBh
ZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAw
cHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFja2dyb3Vu
ZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBib3JkZXIt
Y29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsKICAgIGJh
Y2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
ICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6IHBvaW50
ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAg
ICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90
dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3KSkpOwog
ICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVudDogJyBc
MjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwyNUJFJzsK
fQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7Cn0KCnRk
LmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoKdGQuYmV0
dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2NjsKfQoK
dGQubWlzc2luZyB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5jaGVja2JveCB7CiAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgYmFja2dyb3Vu
ZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgYm90dG9tLCBsZWZ0IHRvcCwgZnJvbShy
Z2IoMjIwLCAyMjAsIDIyMCkpLCB0byhyZ2IoMjAwLCAyMDAsIDIwMCkpKTsKICAgIGJvcmRlcjog
aW5zZXQgMXB4ICNkZGQ7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICBtYXJnaW46IDEwcHg7
CiAgICBmb250LXNpemU6IHNtYWxsOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBo
YW5kOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xk
Owp9CgouY2hlY2tib3ggc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBsaW5l
LWhlaWdodDogMTAwJTsKICAgIHBhZGRpbmc6IDVweCA4cHg7CiAgICBib3JkZXI6IG91dHNldCAx
cHggdHJhbnNwYXJlbnQ7Cn0KCi5jaGVja2JveCAuY2hlY2tlZCB7CiAgICBiYWNrZ3JvdW5kOiAj
ZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxlZnQgdG9w
LCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjU1LCAyNTUsIDI1NSkpLCB0byhyZ2IoMjM1LCAyMzUs
IDIzNSkpKTsKICAgIGJvcmRlcjogb3V0c2V0IDFweCAjZWVlOwogICAgYm9yZGVyLXJhZGl1czog
NXB4Owp9Cgo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nOiAwIDEw
cHg7Ij4KUmVzdWx0IDxzcGFuIGlkPSJ0aW1lLW1lbW9yeSIgY2xhc3M9ImNoZWNrYm94Ij48c3Bh
biBjbGFzcz0iY2hlY2tlZCI+VGltZTwvc3Bhbj48c3Bhbj5NZW1vcnk8L3NwYW4+PC9zcGFuPgpS
ZWZlcmVuY2UgPHNwYW4gaWQ9InJlZmVyZW5jZSIgY2xhc3M9ImNoZWNrYm94Ij48L3NwYW4+Cjwv
ZGl2Pgo8dGFibGUgaWQ9ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCihmdW5jdGlvbiAo
KSB7CiAgICB2YXIgalF1ZXJ5ID0gJ1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMv
ZHJvbWFlby93ZWIvbGliL2pxdWVyeS0xLjYuNC5qcyc7CiAgICB2YXIgcGx1Z2lucyA9IFsnUGVy
Zm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LmZsb3QubWluLmpzJywgJ1BlcmZvcm1hbmNl
VGVzdHMvcmVzb3VyY2VzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanMnLAogICAgICAgICdQZXJm
b3JtYW5jZVRlc3RzL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzJ107CiAgICB2YXIgbG9jYWxQYXRo
ID0gJy9Vc2Vycy9hYnVjdXIvV2ViS2l0JzsKICAgIHZhciByZW1vdGVQYXRoID0gJ2h0dHBzOi8v
c3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsnOwogICAgdmFyIG51bWJlck9m
RmFpbHVyZXMgPSAwOwogICAgdmFyIHN0YXJ0ZWRMb2FkaW5nUGx1Z2lucyA9IGZhbHNlOwogICAg
dmFyIG51bWJlck9mTG9hZGVkUGx1Z2lucyA9IDA7CgogICAgZnVuY3Rpb24gbG9hZFNjcmlwdChz
cmMsIGxvYWRlZCwgZmFpbGVkKSB7CiAgICAgICAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgICAgIHNjcmlwdC5hc3luYyA9IHRydWU7CiAgICAgICAg
c2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBzY3JpcHQub25sb2FkID0gbG9hZGVkOwogICAgICAg
IGlmIChmYWlsZWQpCiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gZmFpbGVkOwogICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgIH0KCiAgICBmdW5jdGlvbiBs
b2FkUGx1Z2lucyh0cnVua1BhdGgpIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBsdWdp
bnMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGxvYWRTY3JpcHQodHJ1bmtQYXRoICsgJy8nICsg
cGx1Z2luc1tpXSwgbG9hZGVkUGx1Z2luLCBjcmVhdGVGYWlsZWRUb0xvYWRQbHVnaW4ocGx1Z2lu
c1tpXSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRlZFBsdWdpbigpIHsKICAgICAgICBudW1i
ZXJPZkxvYWRlZFBsdWdpbnMrKzsKICAgICAgICBpZiAobnVtYmVyT2ZMb2FkZWRQbHVnaW5zID09
IHBsdWdpbnMubGVuZ3RoKQogICAgICAgICAgICBzZXRUaW1lb3V0KGluaXQsIDApOyAgICAgICAg
ICAgIAogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZUZhaWxlZFRvTG9hZFBsdWdpbihwbHVnaW4p
IHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgIiAr
IHBsdWdpbik7IH0KICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVMb2FkZWRKUXVlcnkodHJ1bmtQ
YXRoKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgbG9hZFBsdWdpbnModHJ1bmtQYXRo
KTsgfQogICAgfQoKICAgIGxvYWRTY3JpcHQobG9jYWxQYXRoICsgJy8nICsgalF1ZXJ5LAogICAg
ICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShsb2NhbFBhdGgpLAogICAgICAgIGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgICAgbG9hZFNjcmlwdChyZW1vdGVQYXRoICsgJy8nICsgalF1ZXJ5LAogICAgICAg
ICAgICAgICAgY3JlYXRlTG9hZGVkSlF1ZXJ5KHJlbW90ZVBhdGgpLAogICAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgeyBhbGVydCgiRmFpbGVkIHRvIGxvYWQgalF1ZXJ5LiIpOyB9KTsKICAgICAg
ICB9KTsKfSkoKTsKCmZ1bmN0aW9uIFRlc3RSZXN1bHQobWV0cmljLCB2YWx1ZXMsIGFzc29jaWF0
ZWRSdW4pIHsKICAgIGlmICh2YWx1ZXNbMF0gaW5zdGFuY2VvZiBBcnJheSkgewogICAgICAgIHZh
ciBmbGF0dGVuZWRWYWx1ZXMgPSBbXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVl
cy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgZmxhdHRlbmVkVmFsdWVzID0gZmxhdHRlbmVkVmFs
dWVzLmNvbmNhdCh2YWx1ZXNbaV0pOwogICAgICAgIHZhbHVlcyA9IGZsYXR0ZW5lZFZhbHVlczsK
ICAgIH0KCiAgICB0aGlzLnRlc3QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBtZXRyaWM7IH0KICAg
IHRoaXMudmFsdWVzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdmFsdWVzLm1hcChmdW5jdGlvbiAo
dmFsdWUpIHsgcmV0dXJuIG1ldHJpYy5zY2FsaW5nRmFjdG9yKCkgKiB2YWx1ZTsgfSk7IH0KICAg
IHRoaXMudW5zY2FsZWRNZWFuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gU3RhdGlzdGljcy5zdW0o
dmFsdWVzKSAvIHZhbHVlcy5sZW5ndGg7IH0KICAgIHRoaXMubWVhbiA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIG1ldHJpYy5zY2FsaW5nRmFjdG9yKCkgKiB0aGlzLnVuc2NhbGVkTWVhbigpOyB9CiAg
ICB0aGlzLm1pbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ldHJpYy5zY2FsaW5nRmFjdG9yKCkg
KiBTdGF0aXN0aWNzLm1pbih2YWx1ZXMpOyB9CiAgICB0aGlzLm1heCA9IGZ1bmN0aW9uICgpIHsg
cmV0dXJuIG1ldHJpYy5zY2FsaW5nRmFjdG9yKCkgKiBTdGF0aXN0aWNzLm1heCh2YWx1ZXMpOyB9
CiAgICB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhID0gZnVuY3Rpb24gKCkgewogICAgICAg
IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogU3RhdGlzdGljcy5jb25maWRlbmNlSW50
ZXJ2YWxEZWx0YSgwLjk1LCB2YWx1ZXMubGVuZ3RoLAogICAgICAgICAgICBTdGF0aXN0aWNzLnN1
bSh2YWx1ZXMpLCBTdGF0aXN0aWNzLnNxdWFyZVN1bSh2YWx1ZXMpKTsKICAgIH0KICAgIHRoaXMu
Y29uZmlkZW5jZUludGVydmFsRGVsdGFSYXRpbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMu
Y29uZmlkZW5jZUludGVydmFsRGVsdGEoKSAvIHRoaXMubWVhbigpOyB9CiAgICB0aGlzLnBlcmNl
bnREaWZmZXJlbmNlID0gZnVuY3Rpb24ob3RoZXIpIHsgcmV0dXJuIChvdGhlci51bnNjYWxlZE1l
YW4oKSAtIHRoaXMudW5zY2FsZWRNZWFuKCkpIC8gdGhpcy51bnNjYWxlZE1lYW4oKTsgfQogICAg
dGhpcy5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudCA9IGZ1bmN0aW9uIChvdGhlcikgewogICAg
ICAgIHZhciBkaWZmID0gTWF0aC5hYnMob3RoZXIubWVhbigpIC0gdGhpcy5tZWFuKCkpOwogICAg
ICAgIHJldHVybiBkaWZmID4gdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpICYmIGRpZmYg
PiBvdGhlci5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSgpOwogICAgfQogICAgdGhpcy5ydW4gPSBm
dW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVkUnVuOyB9Cn0KCmZ1bmN0aW9uIFRlc3RSdW4o
ZW50cnkpIHsKICAgIHRoaXMuZGVzY3JpcHRpb24gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBlbnRy
eVsnZGVzY3JpcHRpb24nXTsgfQogICAgdGhpcy53ZWJraXRSZXZpc2lvbiA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIGVudHJ5WydyZXZpc2lvbnMnXVsnV2ViS2l0J11bJ3JldmlzaW9uJ107IH0KICAg
IHRoaXMubGFiZWwgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGxhYmVsID0gJ3InICsgdGhp
cy53ZWJraXRSZXZpc2lvbigpOwogICAgICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uKCkpCiAgICAg
ICAgICAgIGxhYmVsICs9ICcgJmRhc2g7ICcgKyB0aGlzLmRlc2NyaXB0aW9uKCk7CiAgICAgICAg
cmV0dXJuIGxhYmVsOwogICAgfQp9CgpmdW5jdGlvbiBQZXJmVGVzdE1ldHJpYyhuYW1lLCBtZXRy
aWMpIHsKICAgIHZhciB0ZXN0UmVzdWx0cyA9IFtdOwogICAgdmFyIGNhY2hlZFVuaXQgPSBudWxs
OwogICAgdmFyIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAgdmFyIHVuaXQgPSB7J0Zy
YW1lUmF0ZSc6ICdmcHMnLCAnUnVucyc6ICdydW5zL3MnLCAnVGltZSc6ICdtcycsICdNYWxsb2Mn
OiAnYnl0ZXMnLCAnSlNIZWFwJzogJ2J5dGVzJ31bbWV0cmljXTsKCiAgICAvLyBXZSBjYW4ndCBk
byB0aGlzIGluIFRlc3RSZXN1bHQgYmVjYXVzZSBhbGwgcmVzdWx0cyBmb3IgZWFjaCB0ZXN0IG5l
ZWQgdG8gc2hhcmUgdGhlIHNhbWUgdW5pdCBhbmQgdGhlIHNhbWUgc2NhbGluZyBmYWN0b3IuCiAg
ICBmdW5jdGlvbiBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVkKCkgewogICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGRuJ3QgYmUgYWRqdXN0aW5nIHVuaXRzIG9uIGV2ZXJ5IHRlc3QgcmVzdWx0
LgogICAgICAgIC8vIFdlIGNhbiBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHRlc3QuCiAgICAg
ICAgaWYgKCF0ZXN0UmVzdWx0cy5sZW5ndGggfHwgY2FjaGVkVW5pdCkKICAgICAgICAgICAgcmV0
dXJuOwoKICAgICAgICB2YXIgbWVhbiA9IHRlc3RSZXN1bHRzWzBdLnVuc2NhbGVkTWVhbigpOyAv
LyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgYXQgYWxsIHZhbHVlcy4KICAgICAgICB2YXIga2lsbyA9
IHVuaXQgPT0gJ2J5dGVzJyA/IDEwMjQgOiAxMDAwOwogICAgICAgIGlmIChtZWFuID4gMTAgKiBr
aWxvICoga2lsbyAmJiB1bml0ICE9ICdtcycpIHsKICAgICAgICAgICAgY2FjaGVkU2NhbGluZ0Zh
Y3RvciA9IDEgLyBraWxvIC8ga2lsbzsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9ICdNICcgKyB1
bml0OwogICAgICAgIH0gZWxzZSBpZiAobWVhbiA+IDEwICoga2lsbykgewogICAgICAgICAgICBj
YWNoZWRTY2FsaW5nRmFjdG9yID0gMSAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSB1
bml0ID09ICdtcycgPyAncycgOiAoJ0sgJyArIHVuaXQpOwogICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSAxOwogICAgICAgICAgICBjYWNoZWRVbml0ID0g
dW5pdDsKICAgICAgICB9CiAgICB9CgogICAgdGhpcy5uYW1lID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gbmFtZSArICc6JyArIG1ldHJpYzsgfQogICAgdGhpcy5pc01lbW9yeVRlc3QgPSBmdW5jdGlv
biAoKSB7IHJldHVybiBtZXRyaWMgPT0gJ0pTSGVhcCcgfHwgbWV0cmljID09ICdNYWxsb2MnOyB9
CiAgICB0aGlzLmFkZFJlc3VsdCA9IGZ1bmN0aW9uIChuZXdSZXN1bHQpIHsKICAgICAgICB0ZXN0
UmVzdWx0cy5wdXNoKG5ld1Jlc3VsdCk7CiAgICAgICAgY2FjaGVkVW5pdCA9IG51bGw7CiAgICAg
ICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CiAgICB9CiAgICB0aGlzLnJlc3VsdHMgPSBm
dW5jdGlvbiAoKSB7IHJldHVybiB0ZXN0UmVzdWx0czsgfQogICAgdGhpcy5zY2FsaW5nRmFjdG9y
ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpOwog
ICAgICAgIHJldHVybiBjYWNoZWRTY2FsaW5nRmFjdG9yOwogICAgfQogICAgdGhpcy51bml0ID0g
ZnVuY3Rpb24gKCkgewogICAgICAgIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVkZWQoKTsKICAg
ICAgICByZXR1cm4gY2FjaGVkVW5pdDsKICAgIH0KICAgIHRoaXMuc21hbGxlcklzQmV0dGVyID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gdW5pdCA9PSAnbXMnIHx8IHVuaXQgPT0gJ2J5dGVzJzsgfQp9
Cgp2YXIgcGxvdENvbG9yID0gJ3JnYigyMzAsNTAsNTApJzsKdmFyIHN1YnBvaW50c1Bsb3RPcHRp
b25zID0gewogICAgbGluZXM6IHtzaG93OnRydWUsIGxpbmVXaWR0aDogMH0sCiAgICBjb2xvcjog
cGxvdENvbG9yLAogICAgcG9pbnRzOiB7c2hvdzogdHJ1ZSwgcmFkaXVzOiAxfSwKICAgIGJhcnM6
IHtzaG93OiBmYWxzZX19OwoKdmFyIG1haW5QbG90T3B0aW9ucyA9IHsKICAgIHhheGlzOiB7CiAg
ICAgICAgbWluOiAtMC41LAogICAgICAgIHRpY2tTaXplOiAxLAogICAgfSwKICAgIGNyb3NzaGFp
cjogeyBtb2RlOiAneScgfSwKICAgIHNlcmllczogeyBzaGFkb3dTaXplOiAwIH0sCiAgICBiYXJz
OiB7c2hvdzogdHJ1ZSwgYWxpZ246ICdjZW50ZXInLCBiYXJXaWR0aDogMC41fSwKICAgIGxpbmVz
OiB7IHNob3c6IGZhbHNlIH0sCiAgICBwb2ludHM6IHsgc2hvdzogdHJ1ZSB9LAogICAgZ3JpZDog
ewogICAgICAgIGJvcmRlcldpZHRoOiAxLAogICAgICAgIGJvcmRlckNvbG9yOiAnI2NjYycsCiAg
ICAgICAgYmFja2dyb3VuZENvbG9yOiAnI2ZmZicsCiAgICAgICAgaG92ZXJhYmxlOiB0cnVlLAog
ICAgICAgIGF1dG9IaWdobGlnaHQ6IGZhbHNlLAogICAgfQp9OwoKdmFyIHRpbWVQbG90T3B0aW9u
cyA9IHsKICAgIHlheGlzOiB7IHNob3c6IGZhbHNlIH0sCiAgICB4YXhpczogeyBzaG93OiBmYWxz
ZSB9LAogICAgbGluZXM6IHsgc2hvdzogdHJ1ZSB9LAogICAgZ3JpZDogeyBib3JkZXJXaWR0aDog
MSwgYm9yZGVyQ29sb3I6ICcjY2NjJyB9LAogICAgY29sb3JzOiBbIHBsb3RDb2xvciBdCn07Cgpm
dW5jdGlvbiBjcmVhdGVQbG90KGNvbnRhaW5lciwgdGVzdCkgewogICAgdmFyIHNlY3Rpb24gPSAk
KCc8c2VjdGlvbj48ZGl2IGNsYXNzPSJwbG90Ij48L2Rpdj48ZGl2IGNsYXNzPSJ0aW1lLXBsb3Rz
Ij48L2Rpdj4nCiAgICAgICAgKyAnPHNwYW4gY2xhc3M9InRvb2x0aXAiPjwvc3Bhbj48L3NlY3Rp
b24+Jyk7CiAgICBzZWN0aW9uLmNoaWxkcmVuKCcucGxvdCcpLmNzcyh7J3dpZHRoJzogKDEwMCAq
IHRlc3QucmVzdWx0cygpLmxlbmd0aCArIDI1KSArICdweCcsICdoZWlnaHQnOiAnMzAwcHgnfSk7
CiAgICAkKGNvbnRhaW5lcikuYXBwZW5kKHNlY3Rpb24pOwoKICAgIHZhciBwbG90Q29udGFpbmVy
ID0gc2VjdGlvbi5jaGlsZHJlbignLnBsb3QnKTsKICAgIHZhciBtaW5Jc1plcm8gPSB0cnVlOwog
ICAgYXR0YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVyLCBtaW5Jc1plcm8pOwoKICAgIGF0dGFj
aFRpbWVQbG90cyh0ZXN0LCBzZWN0aW9uLmNoaWxkcmVuKCcudGltZS1wbG90cycpKTsKCiAgICB2
YXIgdG9vbHRpcCA9IHNlY3Rpb24uY2hpbGRyZW4oJy50b29sdGlwJyk7CiAgICBwbG90Q29udGFp
bmVyLmJpbmQoJ3Bsb3Rob3ZlcicsIGZ1bmN0aW9uIChldmVudCwgcG9zaXRpb24sIGl0ZW0pIHsK
ICAgICAgICBpZiAoaXRlbSkgewogICAgICAgICAgICB2YXIgcG9zdGZpeCA9IGl0ZW0uc2VyaWVz
LmlkID8gJyAoJyArIGl0ZW0uc2VyaWVzLmlkICsgJyknIDogJyc7CiAgICAgICAgICAgIHRvb2x0
aXAuaHRtbChpdGVtLmRhdGFwb2ludFsxXS50b1ByZWNpc2lvbig0KSArIHBvc3RmaXgpOwogICAg
ICAgICAgICB2YXIgc2VjdGlvbk9mZnNldCA9ICQoc2VjdGlvbikub2Zmc2V0KCk7CiAgICAgICAg
ICAgIHRvb2x0aXAuY3NzKHtsZWZ0OiBpdGVtLnBhZ2VYIC0gc2VjdGlvbk9mZnNldC5sZWZ0IC0g
dG9vbHRpcC5vdXRlcldpZHRoKCkgLyAyLCB0b3A6IGl0ZW0ucGFnZVkgLSBzZWN0aW9uT2Zmc2V0
LnRvcCArIDEwfSk7CiAgICAgICAgICAgIHRvb2x0aXAuZmFkZUluKDIwMCk7CiAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgIHRvb2x0aXAuaGlkZSgpOwogICAgfSk7CiAgICBwbG90Q29udGFpbmVy
Lm1vdXNlb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwog
ICAgcGxvdENvbnRhaW5lci5jbGljayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwogICAgICAgIG1pbklzWmVybyA9ICFtaW5Jc1plcm87CiAgICAgICAg
YXR0YWNoUGxvdCh0ZXN0LCBwbG90Q29udGFpbmVyLCBtaW5Jc1plcm8pOwogICAgfSk7CgogICAg
cmV0dXJuIHNlY3Rpb247Cn0KCmZ1bmN0aW9uIGF0dGFjaFRpbWVQbG90cyh0ZXN0LCBjb250YWlu
ZXIpIHsKICAgIHZhciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgYXR0YWNoZWRQ
bG90ID0gZmFsc2U7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKysp
IHsKICAgICAgICBjb250YWluZXIuYXBwZW5kKCc8ZGl2PjwvZGl2PicpOwogICAgICAgIHZhciB2
YWx1ZXMgPSByZXN1bHRzW2ldLnZhbHVlcygpOwogICAgICAgIGlmICghdmFsdWVzKQogICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICBhdHRhY2hlZFBsb3QgPSB0cnVlOwoKICAgICAgICAkLnBs
b3QoY29udGFpbmVyLmNoaWxkcmVuKCkubGFzdCgpLCBbdmFsdWVzLm1hcChmdW5jdGlvbiAodmFs
dWUsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHZhbHVlXTsgfSldLAogICAgICAgICAgICAkLmV4
dGVuZCh0cnVlLCB7fSwgdGltZVBsb3RPcHRpb25zLCB7eWF4aXM6IHttaW46IE1hdGgubWluLmFw
cGx5KE1hdGgsIHZhbHVlcykgKiAwLjksIG1heDogTWF0aC5tYXguYXBwbHkoTWF0aCwgdmFsdWVz
KSAqIDEuMX0sCiAgICAgICAgICAgICAgICB4YXhpczoge21pbjogLTAuNSwgbWF4OiB2YWx1ZXMu
bGVuZ3RoIC0gMC41fX0pKTsKICAgIH0KICAgIGlmICghYXR0YWNoZWRQbG90KQogICAgICAgIGNv
bnRhaW5lci5jaGlsZHJlbigpLnJlbW92ZSgpOwp9CgpmdW5jdGlvbiBhdHRhY2hQbG90KHRlc3Qs
IHBsb3RDb250YWluZXIsIG1pbklzWmVybykgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3Vs
dHMoKTsKCiAgICB2YXIgdmFsdWVzID0gcmVzdWx0cy5yZWR1Y2UoZnVuY3Rpb24gKHZhbHVlcywg
cmVzdWx0LCBpbmRleCkgewogICAgICAgIHZhciBuZXdWYWx1ZXMgPSByZXN1bHQudmFsdWVzKCk7
CiAgICAgICAgcmV0dXJuIG5ld1ZhbHVlcyA/IHZhbHVlcy5jb25jYXQobmV3VmFsdWVzLm1hcChm
dW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIFtpbmRleCwgdmFsdWVdOyB9KSkgOiB2YWx1ZXM7CiAg
ICB9LCBbXSk7CgogICAgdmFyIHBsb3REYXRhID0gWyQuZXh0ZW5kKHRydWUsIHt9LCBzdWJwb2lu
dHNQbG90T3B0aW9ucywge2RhdGE6IHZhbHVlc30pXTsKICAgIHBsb3REYXRhLnB1c2goe2lkOiAn
Jm11OycsIGRhdGE6IHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVy
biBbaW5kZXgsIHJlc3VsdC5tZWFuKCldOyB9KSwgY29sb3I6IHBsb3RDb2xvcn0pOwoKICAgIHZh
ciBvdmVyYWxsTWF4ID0gU3RhdGlzdGljcy5tYXgocmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3Vs
dCwgaW5kZXgpIHsgcmV0dXJuIHJlc3VsdC5tYXgoKTsgfSkpOwogICAgdmFyIG92ZXJhbGxNaW4g
PSBTdGF0aXN0aWNzLm1pbihyZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyBy
ZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSk7CiAgICB2YXIgbWFyZ2luID0gKG92ZXJhbGxNYXggLSBv
dmVyYWxsTWluKSAqIDAuMTsKICAgIHZhciBjdXJyZW50UGxvdE9wdGlvbnMgPSAkLmV4dGVuZCh0
cnVlLCB7fSwgbWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAgICBtaW46IG1pbklzWmVy
byA/IDAgOiBvdmVyYWxsTWluIC0gbWFyZ2luLAogICAgICAgIG1heDogbWluSXNaZXJvID8gb3Zl
cmFsbE1heCAqIDEuMSA6IG92ZXJhbGxNYXggKyBtYXJnaW59fSk7CgogICAgY3VycmVudFBsb3RP
cHRpb25zLnhheGlzLm1heCA9IHJlc3VsdHMubGVuZ3RoIC0gMC41OwogICAgY3VycmVudFBsb3RP
cHRpb25zLnhheGlzLnRpY2tzID0gcmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgp
IHsgcmV0dXJuIFtpbmRleCwgcmVzdWx0LnJ1bigpLmxhYmVsKCldOyB9KTsKCiAgICAkLnBsb3Qo
cGxvdENvbnRhaW5lciwgcGxvdERhdGEsIGN1cnJlbnRQbG90T3B0aW9ucyk7Cn0KCmZ1bmN0aW9u
IHRvRml4ZWRXaWR0aFByZWNpc2lvbih2YWx1ZSkgewogICAgdmFyIGRlY2ltYWwgPSB2YWx1ZS50
b0ZpeGVkKDIpOwogICAgcmV0dXJuIGRlY2ltYWw7Cn0KCmZ1bmN0aW9uIGZvcm1hdFBlcmNlbnRh
Z2UoZnJhY3Rpb24pIHsKICAgIHZhciBwZXJjZW50YWdlID0gZnJhY3Rpb24gKiAxMDA7CiAgICBy
ZXR1cm4gKGZyYWN0aW9uICogMTAwKS50b0ZpeGVkKDIpICsgJyUnOwp9CgpmdW5jdGlvbiBjcmVh
dGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCkg
ewogICAgJCgnI2NvbnRhaW5lcicpLmh0bWwoJzx0aGVhZD48dHI+PHRoPlRlc3Q8L3RoPjx0aD5V
bml0PC90aD4nICsgcnVucy5tYXAoZnVuY3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICByZXR1
cm4gJzx0aCBjb2xzcGFuPSInICsgKGluZGV4ID09IHJlZmVyZW5jZUluZGV4ID8gMiA6IDMpICsg
JyIgY2xhc3M9Intzb3J0ZXI6IFwnY29tcGFyaXNvblwnfSI+JyArIHJ1bi5sYWJlbCgpICsgJzwv
dGg+JzsKICAgIH0pLnJlZHVjZShmdW5jdGlvbiAobWFya3VwLCBjZWxsKSB7IHJldHVybiBtYXJr
dXAgKyBjZWxsOyB9LCAnJykgKyAnPC90cj48L2hlYWQ+PHRib2R5PjwvdGJvZHk+Jyk7CgogICAg
dmFyIHRlc3ROYW1lcyA9IFtdOwogICAgZm9yICh0ZXN0TmFtZSBpbiB0ZXN0cykKICAgICAgICB0
ZXN0TmFtZXMucHVzaCh0ZXN0TmFtZSk7CgogICAgdGVzdE5hbWVzLnNvcnQoKS5tYXAoZnVuY3Rp
b24gKHRlc3ROYW1lKSB7CiAgICAgICAgdmFyIHRlc3QgPSB0ZXN0c1t0ZXN0TmFtZV07CiAgICAg
ICAgaWYgKHRlc3QuaXNNZW1vcnlUZXN0KCkgIT0gc2hvdWxkSWdub3JlTWVtb3J5KQogICAgICAg
ICAgICBjcmVhdGVUYWJsZVJvdyhydW5zLCB0ZXN0LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsK
CiAgICAkKCcjY29udGFpbmVyJykudGFibGVzb3J0ZXIoe3dpZGdldHM6IFsnemVicmEnXX0pOwp9
CgpmdW5jdGlvbiBsaW5lYXJSZWdyZXNzaW9uKHBvaW50cykgewogICAgLy8gSW1wbGVtZW50IGh0
dHA6Ly93d3cuZWFzeWNhbGN1bGF0aW9uLmNvbS9zdGF0aXN0aWNzL2xlYXJuLWNvcnJlbGF0aW9u
LnBocC4KICAgIC8vIHggPSBtYWduaXR1ZGUKICAgIC8vIHkgPSBpdGVyYXRpb25zCiAgICB2YXIg
c3VtWCA9IDA7CiAgICB2YXIgc3VtWSA9IDA7CiAgICB2YXIgc3VtWFNxdWFyZWQgPSAwOwogICAg
dmFyIHN1bVlTcXVhcmVkID0gMDsKICAgIHZhciBzdW1YVGltZXNZID0gMDsKCiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciB4ID0gaTsKICAg
ICAgICB2YXIgeSA9IHBvaW50c1tpXTsKICAgICAgICBzdW1YICs9IHg7CiAgICAgICAgc3VtWSAr
PSB5OwogICAgICAgIHN1bVhTcXVhcmVkICs9IHggKiB4OwogICAgICAgIHN1bVlTcXVhcmVkICs9
IHkgKiB5OwogICAgICAgIHN1bVhUaW1lc1kgKz0geCAqIHk7CiAgICB9CgogICAgdmFyIHIgPSAo
cG9pbnRzLmxlbmd0aCAqIHN1bVhUaW1lc1kgLSBzdW1YICogc3VtWSkgLwogICAgICAgIE1hdGgu
c3FydCgocG9pbnRzLmxlbmd0aCAqIHN1bVhTcXVhcmVkIC0gc3VtWCAqIHN1bVgpICoKICAgICAg
ICAgICAgICAgICAgKHBvaW50cy5sZW5ndGggKiBzdW1ZU3F1YXJlZCAtIHN1bVkgKiBzdW1ZKSk7
CgogICAgaWYgKGlzTmFOKHIpIHx8IHIgPT0gTWF0aC5JbmZpbml0eSkKICAgICAgICByID0gMDsK
CiAgICB2YXIgc2xvcGUgPSAocG9pbnRzLmxlbmd0aCAqIHN1bVhUaW1lc1kgLSBzdW1YICogc3Vt
WSkgLyAocG9pbnRzLmxlbmd0aCAqIHN1bVhTcXVhcmVkIC0gc3VtWCAqIHN1bVgpOwogICAgdmFy
IGludGVyY2VwdCA9IHN1bVkgLyBwb2ludHMubGVuZ3RoIC0gc2xvcGUgKiBzdW1YIC8gcG9pbnRz
Lmxlbmd0aDsKICAgIHJldHVybiB7c2xvcGU6IHNsb3BlLCBpbnRlcmNlcHQ6IGludGVyY2VwdCwg
clNxdWFyZWQ6IHIgKiByfTsKfQoKdmFyIHdhcm5pbmdTaWduID0gJzxzdmcgdmlld0JveD0iMCAw
IDEwMCAxMDAiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyB2ZXJ0aWNhbC1hbGln
bjogYm90dG9tOyIgdmVyc2lvbj0iMS4xIj4nCiAgICArICc8cG9seWdvbiBmaWxsPSJyZWQiIHBv
aW50cz0iNTAsMTAgOTAsODAgMTAsODAgNTAsMTAiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9
IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiAvPicKICAgICsgJzxwb2x5Z29uIGZpbGw9Indo
aXRlIiBwb2ludHM9IjQ3LDMwIDQ4LDI5LCA1MCwgMjguNywgNTIsMjkgNTMsMzAgNTAsNjAiIHN0
cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIC8+
JwogICAgKyAnPGNpcmNsZSBjeD0iNTAiIGN5PSI3MyIgcj0iNiIgZmlsbD0id2hpdGUiIC8+Jwog
ICAgKyAnPC9zdmc+JzsKCmZ1bmN0aW9uIGNyZWF0ZVRhYmxlUm93KHJ1bnMsIHRlc3QsIHJlZmVy
ZW5jZUluZGV4KSB7CiAgICB2YXIgdGFibGVSb3cgPSAkKCc8dHI+PHRkIGNsYXNzPSJ0ZXN0Ij4n
ICsgdGVzdC5uYW1lKCkgKyAnPC90ZD48dGQgY2xhc3M9InVuaXQiPicgKyB0ZXN0LnVuaXQoKSAr
ICc8L3RkPjwvdHI+Jyk7CgogICAgZnVuY3Rpb24gbWFya3VwRm9yUnVuKHJlc3VsdCwgcmVmZXJl
bmNlUmVzdWx0KSB7CiAgICAgICAgdmFyIGNvbXBhcmlzb25DZWxsID0gJyc7CiAgICAgICAgdmFy
IGhpZGRlblZhbHVlID0gJyc7CiAgICAgICAgdmFyIHNob3VsZENvbXBhcmUgPSByZXN1bHQgIT09
IHJlZmVyZW5jZVJlc3VsdDsKICAgICAgICBpZiAoc2hvdWxkQ29tcGFyZSAmJiByZWZlcmVuY2VS
ZXN1bHQpIHsKICAgICAgICAgICAgdmFyIHBlcmNlbnREaWZmZXJlbmNlID0gcmVmZXJlbmNlUmVz
dWx0LnBlcmNlbnREaWZmZXJlbmNlKHJlc3VsdCk7CiAgICAgICAgICAgIHZhciBiZXR0ZXIgPSB0
ZXN0LnNtYWxsZXJJc0JldHRlcigpID8gcGVyY2VudERpZmZlcmVuY2UgPCAwIDogcGVyY2VudERp
ZmZlcmVuY2UgPiAwOwogICAgICAgICAgICB2YXIgY29tcGFyaXNvbiA9ICcnOwogICAgICAgICAg
ICB2YXIgY2xhc3NOYW1lID0gJ2NvbXBhcmlzb24nOwogICAgICAgICAgICBpZiAocmVmZXJlbmNl
UmVzdWx0LmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50KHJlc3VsdCkpIHsKICAgICAgICAgICAg
ICAgIGNvbXBhcmlzb24gPSBmb3JtYXRQZXJjZW50YWdlKE1hdGguYWJzKHBlcmNlbnREaWZmZXJl
bmNlKSkgKyAoYmV0dGVyID8gJyBCZXR0ZXInIDogJyBXb3JzZSZuYnNwOycpOwogICAgICAgICAg
ICAgICAgY2xhc3NOYW1lICs9IGJldHRlciA/ICcgYmV0dGVyJyA6ICcgd29yc2UnOwogICAgICAg
ICAgICB9CiAgICAgICAgICAgIGhpZGRlblZhbHVlID0gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBu
b25lIj58JyArIGNvbXBhcmlzb24gKyAnPC9zcGFuPic7CiAgICAgICAgICAgIGNvbXBhcmlzb25D
ZWxsID0gJzx0ZCBjbGFzcz0iJyArIGNsYXNzTmFtZSArICciPicgKyBjb21wYXJpc29uICsgJzwv
dGQ+JzsKICAgICAgICB9IGVsc2UgaWYgKHNob3VsZENvbXBhcmUpCiAgICAgICAgICAgIGNvbXBh
cmlzb25DZWxsID0gJzx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD4nOwoKICAgICAgICB2YXIg
dmFsdWVzID0gcmVzdWx0LnZhbHVlcygpOwogICAgICAgIHZhciB3YXJuaW5nID0gJyc7CiAgICAg
ICAgdmFyIHJlZ3Jlc3Npb25BbmFseXNpcyA9ICcnOwogICAgICAgIGlmICh2YWx1ZXMgJiYgdmFs
dWVzLmxlbmd0aCA+IDMpIHsKICAgICAgICAgICAgcmVncmVzc2lvblJlc3VsdCA9IGxpbmVhclJl
Z3Jlc3Npb24odmFsdWVzKTsKICAgICAgICAgICAgcmVncmVzc2lvbkFuYWx5c2lzID0gJ3Nsb3Bl
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVncmVzc2lvblJlc3VsdC5zbG9wZSkKICAgICAg
ICAgICAgICAgICsgJywgUl4yPScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVncmVzc2lvblJl
c3VsdC5yU3F1YXJlZCk7CiAgICAgICAgICAgIGlmIChyZWdyZXNzaW9uUmVzdWx0LnJTcXVhcmVk
ID4gMC42ICYmIE1hdGguYWJzKHJlZ3Jlc3Npb25SZXN1bHQuc2xvcGUpID4gMC4wMSkgewogICAg
ICAgICAgICAgICAgd2FybmluZyA9ICcgPHNwYW4gY2xhc3M9InJlZ3Jlc3Npb24td2FybmluZyIg
dGl0bGU9IkRldGVjdGVkIGEgdGltZSBkZXBlbmRlbmN5IHdpdGggJyArIHJlZ3Jlc3Npb25BbmFs
eXNpcyArICciPicgKyB3YXJuaW5nU2lnbiArICcgPC9zcGFuPic7CiAgICAgICAgICAgIH0KICAg
ICAgICB9CgogICAgICAgIHZhciBzdGF0aXN0aWNzID0gJyZzaWdtYTs9JyArIHRvRml4ZWRXaWR0
aFByZWNpc2lvbihyZXN1bHQuY29uZmlkZW5jZUludGVydmFsRGVsdGEoKSkgKyAnLCBtaW49JyAr
IHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWluKCkpCiAgICAgICAgICAgICsgJywgbWF4
PScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1heCgpKSArICdcbicgKyByZWdyZXNz
aW9uQW5hbHlzaXM7CgogICAgICAgIC8vIFRhYmxlc29ydGVyIGRvZXNuJ3Qga25vdyBhYm91dCB0
aGUgc2Vjb25kIGNlbGwgc28gcHV0IHRoZSBjb21wYXJpc29uIGluIHRoZSBpbnZpc2libGUgZWxl
bWVudC4KICAgICAgICByZXR1cm4gJzx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iJyArIHN0YXRp
c3RpY3MgKyAnIj4nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tZWFuKCkpICsgaGlk
ZGVuVmFsdWUKICAgICAgICAgICAgKyAnPC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZh
bERlbHRhIiB0aXRsZT0iJyArIHN0YXRpc3RpY3MgKyAnIj4mcGx1c21uOyAnCiAgICAgICAgICAg
ICsgZm9ybWF0UGVyY2VudGFnZShyZXN1bHQuY29uZmlkZW5jZUludGVydmFsRGVsdGFSYXRpbygp
KSArIHdhcm5pbmcgKyAnPC90ZD4nICsgY29tcGFyaXNvbkNlbGw7CiAgICB9CgogICAgZnVuY3Rp
b24gbWFya3VwRm9yTWlzc2luZ1J1bihpc1JlZmVyZW5jZSkgewogICAgICAgIHJldHVybiAnPHRk
IGNvbHNwYW49IicgKyAoaXNSZWZlcmVuY2UgPyAyIDogMykgKyAnIiBjbGFzcz0ibWlzc2luZyI+
TWlzc2luZzwvdGQ+JzsKICAgIH0KCiAgICB2YXIgcnVuSW5kZXggPSAwOwogICAgdmFyIHJlc3Vs
dHMgPSB0ZXN0LnJlc3VsdHMoKTsKICAgIHZhciByZWZlcmVuY2VSZXN1bHQgPSB1bmRlZmluZWQ7
CiAgICB2YXIgcmVzdWx0SW5kZXhNYXAgPSB7fTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVz
dWx0cy5sZW5ndGg7IGkrKykgewogICAgICAgIHdoaWxlIChydW5zW3J1bkluZGV4XSAhPT0gcmVz
dWx0c1tpXS5ydW4oKSkKICAgICAgICAgICAgcnVuSW5kZXgrKzsKICAgICAgICBpZiAocnVuSW5k
ZXggPT0gcmVmZXJlbmNlSW5kZXgpCiAgICAgICAgICAgIHJlZmVyZW5jZVJlc3VsdCA9IHJlc3Vs
dHNbaV07CiAgICAgICAgcmVzdWx0SW5kZXhNYXBbcnVuSW5kZXhdID0gaTsKICAgIH0KICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcnVucy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciByZXN1bHRJ
bmRleCA9IHJlc3VsdEluZGV4TWFwW2ldOwogICAgICAgIGlmIChyZXN1bHRJbmRleCA9PSB1bmRl
ZmluZWQpCiAgICAgICAgICAgIHRhYmxlUm93LmFwcGVuZChtYXJrdXBGb3JNaXNzaW5nUnVuKGkg
PT0gcmVmZXJlbmNlSW5kZXgpKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHRhYmxlUm93LmFw
cGVuZChtYXJrdXBGb3JSdW4ocmVzdWx0c1tyZXN1bHRJbmRleF0sIHJlZmVyZW5jZVJlc3VsdCkp
OwogICAgfQoKICAgICQoJyNjb250YWluZXInKS5jaGlsZHJlbigndGJvZHknKS5sYXN0KCkuYXBw
ZW5kKHRhYmxlUm93KTsKCiAgICB0YWJsZVJvdy5jbGljayhmdW5jdGlvbiAoZXZlbnQpIHsKICAg
ICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9IHRhYmxlUm93WzBdICYmIGV2ZW50LnRhcmdldC5wYXJl
bnROb2RlICE9IHRhYmxlUm93WzBdKQogICAgICAgICAgICByZXR1cm47CgogICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgIHZhciBmaXJzdENlbGwgPSB0YWJsZVJvdy5jaGls
ZHJlbigndGQnKS5maXJzdCgpOwogICAgICAgIGlmIChmaXJzdENlbGwuY2hpbGRyZW4oJ3NlY3Rp
b24nKS5sZW5ndGgpIHsKICAgICAgICAgICAgZmlyc3RDZWxsLmNoaWxkcmVuKCdzZWN0aW9uJyku
cmVtb3ZlKCk7CiAgICAgICAgICAgIHRhYmxlUm93LmNoaWxkcmVuKCd0ZCcpLmNzcyh7J3BhZGRp
bmctYm90dG9tJzogJyd9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgcGxvdCA9
IGNyZWF0ZVBsb3QoZmlyc3RDZWxsLCB0ZXN0KTsKICAgICAgICAgICAgcGxvdC5jc3Moeydwb3Np
dGlvbic6ICdhYnNvbHV0ZScsICd6LWluZGV4JzogMn0pOwogICAgICAgICAgICB2YXIgb2Zmc2V0
ID0gdGFibGVSb3cub2Zmc2V0KCk7CiAgICAgICAgICAgIG9mZnNldC5sZWZ0ICs9IDE7CiAgICAg
ICAgICAgIG9mZnNldC50b3AgKz0gdGFibGVSb3cub3V0ZXJIZWlnaHQoKTsKICAgICAgICAgICAg
cGxvdC5vZmZzZXQob2Zmc2V0KTsKICAgICAgICAgICAgdGFibGVSb3cuY2hpbGRyZW4oJ3RkJyku
Y3NzKHsncGFkZGluZy1ib3R0b20nOiBwbG90Lm91dGVySGVpZ2h0KCkgKyA1fSk7CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKfQoKZnVuY3Rpb24gaW5pdCgpIHsKICAg
ICQudGFibGVzb3J0ZXIuYWRkUGFyc2VyKHsKICAgICAgICBpZDogJ2NvbXBhcmlzb24nLAogICAg
ICAgIGlzOiBmdW5jdGlvbihzKSB7CiAgICAgICAgICAgIHJldHVybiBzLmluZGV4T2YoJ3wnKSA+
PSAwOwogICAgICAgIH0sCiAgICAgICAgZm9ybWF0OiBmdW5jdGlvbihzKSB7CiAgICAgICAgICAg
IHZhciBwYXJzZWQgPSBwYXJzZUZsb2F0KHMuc3Vic3RyaW5nKHMuaW5kZXhPZignfCcpICsgMSkp
OwogICAgICAgICAgICByZXR1cm4gaXNOYU4ocGFyc2VkKSA/IDAgOiBwYXJzZWQ7CiAgICAgICAg
fSwKICAgICAgICB0eXBlOiAnbnVtZXJpYycsCiAgICB9KTsKCiAgICB2YXIgcnVucyA9IFtdOwog
ICAgdmFyIG1ldHJpY3MgPSB7fTsKICAgICQuZWFjaChKU09OLnBhcnNlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdqc29uJykudGV4dENvbnRlbnQpLCBmdW5jdGlvbiAoaW5kZXgsIGVudHJ5KSB7
CiAgICAgICAgdmFyIHJ1biA9IG5ldyBUZXN0UnVuKGVudHJ5KTsKICAgICAgICBydW5zLnB1c2go
cnVuKTsKCiAgICAgICAgZnVuY3Rpb24gYWRkVGVzdHModGVzdHMsIHBhcmVudEZ1bGxOYW1lKSB7
CiAgICAgICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHRlc3RzKSB7CiAgICAgICAgICAgICAg
ICB2YXIgZnVsbFRlc3ROYW1lID0gcGFyZW50RnVsbE5hbWUgKyAnLycgKyB0ZXN0TmFtZTsKICAg
ICAgICAgICAgICAgIHZhciByYXdNZXRyaWNzID0gdGVzdHNbdGVzdE5hbWVdLm1ldHJpY3M7Cgog
ICAgICAgICAgICAgICAgZm9yICh2YXIgbWV0cmljTmFtZSBpbiByYXdNZXRyaWNzKSB7CiAgICAg
ICAgICAgICAgICAgICAgdmFyIGZ1bGxNZXRyaWNOYW1lID0gZnVsbFRlc3ROYW1lICsgJzonICsg
bWV0cmljTmFtZTsKICAgICAgICAgICAgICAgICAgICB2YXIgbWV0cmljID0gbWV0cmljc1tmdWxs
TWV0cmljTmFtZV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFtZXRyaWMpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0cmljID0gbmV3IFBlcmZUZXN0TWV0cmljKGZ1bGxUZXN0TmFtZSwg
bWV0cmljTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3NbZnVsbE1ldHJpY05h
bWVdID0gbWV0cmljOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBt
ZXRyaWMuYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KG1ldHJpYywgcmF3TWV0cmljc1ttZXRyaWNO
YW1lXS5jdXJyZW50LCBydW4pKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBp
ZiAodGVzdHNbdGVzdE5hbWVdLnRlc3RzKQogICAgICAgICAgICAgICAgICAgIGFkZFRlc3RzKHRl
c3RzW3Rlc3ROYW1lXS50ZXN0cywgZnVsbFRlc3ROYW1lKTsKICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgYWRkVGVzdHMoZW50cnkudGVzdHMsICcnKTsKICAgIH0pOwoKICAgIHZhciBz
aG91bGRJZ25vcmVNZW1vcnk9IHRydWU7CiAgICB2YXIgcmVmZXJlbmNlSW5kZXggPSAwOwoKICAg
IGNyZWF0ZVRhYmxlKG1ldHJpY3MsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNl
SW5kZXgpOwoKICAgICQoJyN0aW1lLW1lbW9yeScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uIChl
dmVudCwgY2hlY2tlZEVsZW1lbnQpIHsKICAgICAgICBzaG91bGRJZ25vcmVNZW1vcnkgPSBjaGVj
a2VkRWxlbWVudC50ZXh0Q29udGVudCA9PSAnVGltZSc7CiAgICAgICAgY3JlYXRlVGFibGUobWV0
cmljcywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsK
CiAgICBydW5zLm1hcChmdW5jdGlvbiAocnVuLCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVu
Y2UnKS5hcHBlbmQoJzxzcGFuIHZhbHVlPSInICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVm
ZXJlbmNlSW5kZXggPyAnIGNsYXNzPSJjaGVja2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwo
KSArICc8L3NwYW4+Jyk7CiAgICB9KQoKICAgICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2Un
LCBmdW5jdGlvbiAoZXZlbnQsIGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5k
ZXggPSBwYXJzZUludChjaGVja2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAg
ICAgIGNyZWF0ZVRhYmxlKG1ldHJpY3MsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJl
bmNlSW5kZXgpOwogICAgfSk7CgogICAgJCgnLmNoZWNrYm94JykuZWFjaChmdW5jdGlvbiAoaW5k
ZXgsIGNoZWNrYm94KSB7CiAgICAgICAgJChjaGVja2JveCkuY2hpbGRyZW4oJ3NwYW4nKS5jbGlj
ayhmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2No
ZWNrZWQnKSkKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgJChjaGVja2JveCku
Y2hpbGRyZW4oJ3NwYW4nKS5yZW1vdmVDbGFzcygnY2hlY2tlZCcpOwogICAgICAgICAgICAkKHRo
aXMpLmFkZENsYXNzKCdjaGVja2VkJyk7CiAgICAgICAgICAgICQoY2hlY2tib3gpLnRyaWdnZXIo
J2NoYW5nZScsICQodGhpcykpOwogICAgICAgIH0pOwogICAgfSk7Cn0KCjwvc2NyaXB0Pgo8c2Ny
aXB0IGlkPSJqc29uIiB0eXBlPSJhcHBsaWNhdGlvbi9qc29uIj5beyJ0ZXN0cyI6IHsiRHJvbWFl
byI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3Jt
YW5jZVRlc3RzL0Ryb21hZW8iLCAidGVzdHMiOiB7ImRvbS1tb2RpZnkiOiB7InVybCI6ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVv
L2RvbS1tb2RpZnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s1NC43
NDgzMDQxMTY4MTkwODUsIDU1Ljc3MzExMTQ3MzczODc3LCA1Ni4zOTU0NTY0NDQ2MDUwNCwgNTcu
Mjk4MjkxMjc2NTkxNDMsIDU4LjM5NTI2ODU0MTUwNDkxXSwgWzU0LjE1NzEwOTQ1NTI4MjAyLCA1
NS4zNzIxMDM1MDczMzAzMywgNTUuNzMxNjgwOTU5OTczOTksIDU3LjAxOTY2ODA5NjA0NjY4LCA1
Ny4zMDM0MjYzODcyNzM0M10sIFs1NC4zMjI3NDk5MTcwNzI4LCA1NS45MDg1MDg0MTY4NzY1NCwg
NTYuMjU4NDkyODYyOTgyLCA1Ny4yNDYzOTQzMTY4MTU0MSwgNTguMDk0MTE3NDE4MTQ4NDldLCBb
NTQuNjk0MDM1NTUxMTM1MTEsIDU1LjczMjQyNzY4ODcwNDcyLCA1Ni40Njc4MDAzMTY5NjA0NSwg
NTcuNzU5MzY4MTI5NzI2NjMsIDU4LjI4NTAzMTEwNTk5NF1dfX19LCAiZG9tLXF1ZXJ5IjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvRHJvbWFlby9kb20tcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50
IjogW1sxOTguMzEyMTY2MjY0ODcwNjgsIDE5OS41NjM4NjkyMDQ5MzEyOCwgMTk5LjkyNDE4NTAz
MTc3NDA0LCAyMDAuMDA4NzE2Njg0NDgwNDgsIDIwMC4yMDc1MTc3NTg4NTY4NV0sIFsyMDUuNzY5
NzgwMjM5Njc4MzQsIDIwNy4wNzc3MDExMjUyODA1MywgMjA3LjM4NDIzNjg5ODgxMTQ1LCAyMDcu
NDgyNzI0NzUxMDcwNTIsIDIwNy43NzUxMDY2NDgxNjQzNV0sIFsxOTYuMTc4MDI5Nzc1NjM4MDcs
IDE5Ny4wMTM1NjE1NzU4ODM2NywgMTk3LjY4NzYyNjQ5MTk4NjU4LCAxOTcuNzE5NjIxNzk3MTU2
MTgsIDE5OC4xMzk2OTA1MDE1Njg5NF0sIFsyMDcuODUyOTA5ODA0MjA2OCwgMjA4Ljk5MjI1Mjgx
MjQ5MDg4LCAyMDkuMjkwMDk3NTcwNDU1NSwgMjA5LjQyMjc5OTgzODQyNTMzLCAyMDkuODc4NDgy
NzE3OTgxMDZdXX19fSwgImRvbS1hdHRyIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tYXR0ci5odG1sIiwg
Im1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEyNS4xMzIyOTIzMjI0MjI2OSwgMTI1
LjkyMTc3NjkzOTM3MDU5LCAxMjYuMDE1NzU1MDQyNTg5NzcsIDEyNi4wODAyOTQ0ODkyNjk4NSwg
MTI2LjE2ODMxOTQ1ODAxMzIyXSwgWzEyMC42MDMxNjY4NTA1NTEwNSwgMTIxLjAzOTI2NzAzNDYx
ODE5LCAxMjEuOTIwNDYyNjUyNTYyOTUsIDEyMi4wMjc5ODAyODczMzQ5NywgMTIyLjE2NzczMzU0
NzkzNDhdLCBbMTIzLjYxNTI3NjI0NDg2MDQ4LCAxMjQuMjMzMDA3MDkwOTc3OCwgMTI0LjM1MDcy
NTY5NDA1MDI4LCAxMjQuNTE5NjQwNzk4MTQxMTEsIDEyNC42MTE2OTMyMzMzMzQ1Nl0sIFsxMjMu
MjM2MDQ5NTI0MzM2MjIsIDEyNC4xMzQ5MjA0MzY5MTEwMiwgMTI0LjI0MzAxNTMwOTExNTM1LCAx
MjQuMzY2MDQ1NjIwMTQ4NjcsIDEyNC40MjI3NTY1MzI2MTk0NV1dfX19LCAiZG9tLXRyYXZlcnNl
IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1h
bmNlVGVzdHMvRHJvbWFlby9kb20tdHJhdmVyc2UuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjog
eyJjdXJyZW50IjogW1sxODIuMDczNzkyNTc5MzcyMiwgMTgyLjMwMjA0MjQ5Nzc3NDc1LCAxODMu
MTE1NjczNTMyMjE0MjMsIDE4My4yODI3Nzg2MjcyMjQ2NywgMTgzLjQyNTIzNzY2OTQ1MTQ2XSwg
WzE3Ny43MTEwMTgzODk4NTEwMywgMTc4LjIyMjQyNzE2MDYzMTg0LCAxNzkuMTI4MjE5MzAxOTk5
NCwgMTc5LjI4NDM5OTY1MTMxNjAyLCAxNzkuMzYxMzM0ODg2NTM3NTVdLCBbMTgxLjk1ODg2NTI4
MDQ0NjQyLCAxODIuMjIxMDI1MjE0MTA1MSwgMTgyLjY4ODM3MjY1MjczODM0LCAxODIuODE2MzU2
OTYyNDYzNzQsIDE4Mi45OTE2NDgyNjk2NzA1NV0sIFsxODAuNjE1OTY2MDU5NDUyMTIsIDE4MC43
NjQzMTc0MTc2MzQxNSwgMTgxLjM4ODUwNTY4OTM0Nzc3LCAxODEuNTk5OTIzNTQ1MTc3ODYsIDE4
MS43MTE4MDI5NDQ4ODgxXV19fX19fX0sICJidWlsZFRpbWUiOiAiMjAxMy0wNC0xN1QxOToyMjo0
OS4yMzYyOTYiLCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTA0
LTE2VDEwOjA1OjI5WiIsICJyZXZpc2lvbiI6ICIxNDg1MDgifX19LCB7InRlc3RzIjogeyJEcm9t
YWVvIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvRHJvbWFlbyIsICJ0ZXN0cyI6IHsiZG9tLW1vZGlmeSI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21h
ZW8vZG9tLW1vZGlmeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzUz
LjgzOTU4MTQzNzE0OTU3LCA1NC42MTk4NjE4NjYwMTQ0OTYsIDU1LjIxMTI1MzM4Nzc0MTU2NCwg
NTYuNTg4MDM5OTgxNzE4MDI2LCA1Ny4yNTE3NTg2NzEzOTE0Ml0sIFs1My41NzU2OTMwNzEyNDUx
NiwgNTQuNzAyMTYxODExOTgwNTksIDU1LjE3OTIwMDAzMjA2ODAzLCA1Ni42MDY4ODcwNDM4Mzgz
LCA1Ny4yMTA2OTE3MjYxMDIzNF0sIFs1My44NDUzODMyMTEwNTc1MywgNTQuNzI0NDg2OTYwNDIy
NCwgNTUuMzIxNzkxMjExMzAwMTMsIDU2LjIzNTc0ODgxOTgwMjEyLCA1Ny4zMDUyODA5NjQ3Nzg0
NF0sIFs1NC4yMTI1NTQ4ODYwOTY0MDYsIDU0Ljg1ODgwODgyODI0MjE1NCwgNTUuMjc3OTQxOTg3
ODY5MjcsIDU2LjM2ODM0OTE2NTg4NDUyNCwgNTcuMjM1OTExNDExMDE0NDA2XV19fX0sICJkb20t
cXVlcnkiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVy
Zm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS1xdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMi
OiB7ImN1cnJlbnQiOiBbWzE4Ny43NDY2NDAwMjcwMzU4LCAxODkuMDU0MDk0NDU4NzczNjIsIDE4
OS4zMjAyNzc3ODE5MDE5NSwgMTg5LjY4NzcxMzUzMjI5MDEsIDE5MC4xMTk2ODAzMjk3MTA5Ml0s
IFsyMTkuMjU3NDMxMjI3MDU4MDgsIDIyMC40NzE4MzQyODQ5OTczNiwgMjIwLjgzMTI3NjQzNzIz
OTU4LCAyMjEuMDE0MzQyNDQwMjQ4OTgsIDIyMS4zOTM1MjA5MjM0NTA1Ml0sIFsyMjEuMzAxNDI0
MjMzNTQ3MzgsIDIyMi4zNjc4MDY1OTkwNjIyNSwgMjIyLjcwNjI5OTE2NjYxNDEyLCAyMjIuOTc2
MDUwOTU0MzQzNywgMjIzLjAyOTI5MzE4ODkyNDVdLCBbMjEzLjg4MDE2NTU2NTUxMzM1LCAyMTUu
NDM5NzE2MjcxNDI3NSwgMjE1Ljc2NTk1Mjg1OTU5ODE0LCAyMTUuOTEyMTEyNzg5MTU4NjcsIDIx
Ni4yNjk5NDQ1NDIyODgyMV1dfX19LCAiZG9tLWF0dHIiOiB7InVybCI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS1hdHRy
Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTIzLjgzMzQ5MjkxNDA3
NDQ0LCAxMjQuNDU0NDM2MzY5ODUxNTksIDEyNC42ODQyOTY5NzY3Mzc4OCwgMTI1LjY1NjQ4OTI2
ODgwMTk5LCAxMjUuODU1OTg0NTk0NTk4MDddLCBbMTI1LjA1MzkwNTE3MDE3Mjc1LCAxMjUuODQ1
MTQ3NTAxMjIzMDQsIDEyNS45NDE4MTIwNDE0NTE0MSwgMTI2LjAxODA1NDc1MzE5Mzc4LCAxMjYu
MTIxMDM4MjY5NDE3NjddLCBbMTIyLjc5MzQ0MTkyODY4ODEsIDEyMy40MDkxNDg3OTE4NjI5OCwg
MTIzLjUyMDYzNTMwMjg5Nzc0LCAxMjMuNjIwNzc2MzQwNjk0MzMsIDEyMy44MTIxNTAyODE5NjA5
XSwgWzEyMi4wNTY2MjEwNjgyMzkwNywgMTIyLjczNzY5Nzc3MDMxODE1LCAxMjIuODA5MzQ2NTI0
OTk3NSwgMTIzLjcyODYzOTQxMjE2Njg3LCAxMjMuOTE1NzQ3MTM1MDE0OF1dfX19LCAiZG9tLXRy
YXZlcnNlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1Bl
cmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tdHJhdmVyc2UuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1sxNzkuOTk4NjE1OTUxNzk4MywgMTgwLjgyMDUyNjMzNDg5ODg2
LCAxODIuMTc2MTkyODM5NTc0OTUsIDE4Mi4zOTU0NTc3OTQyOTg2NiwgMTgyLjU3NzUzMjc5NjQ1
MDc4XSwgWzE3OS41OTQ0MTkyMjgwMDMxNSwgMTgwLjAwMzQ2ODg5MzMxNDg1LCAxODAuNjE4MjU3
Mjc0ODcyOCwgMTgwLjc1OTgyMTY5NjgwODMzLCAxODAuODk5MDc2NjMxOTY5MTddLCBbMTczLjg2
MTU0MjI5NzE0Mzc5LCAxNzQuMDkxMTkxMzE1MzI2ODIsIDE3NC42MTgxMjMzNjAyNzk5NSwgMTc0
LjY4NTQyODIyODUwMTU0LCAxNzUuMjI4OTU3MjI2MjM5ODhdLCBbMTc4LjE1NjAwMjE3MjI3NzU3
LCAxNzguOTU1Mjc0ODgyOTg2MzQsIDE3OS45MzM1MTM3Nzg1NTIwOCwgMTgwLjA3Mzc1MzE2NDI3
MDczLCAxODAuNDIyOTcxMzM3OTgyOTddXX19fX19fSwgImJ1aWxkVGltZSI6ICIyMDEzLTA0LTE3
VDE5OjMyOjI5LjM3MDcyNiIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjog
IjIwMTMtMDQtMTZUMTA6MDU6MjlaIiwgInJldmlzaW9uIjogIjE0ODUwOCJ9fX1dPC9zY3JpcHQ+
CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>198733</attachid>
            <date>2013-04-18 06:49:17 -0700</date>
            <delta_ts>2013-04-18 06:49:17 -0700</delta_ts>
            <desc>Dromaeo All Test results</desc>
            <filename>WebKit Performance Test Results.webarchive</filename>
            <type>application/x-webarchive</type>
            <size>635245</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">YnBsaXN0MDDSAQIDHF8QD1dlYlN1YnJlc291cmNlc18QD1dlYk1haW5SZXNvdXJjZaQEDRIX1AUG
BwgJCgsMXldlYlJlc291cmNlVVJMXxATV2ViUmVzb3VyY2VSZXNwb25zZV8QD1dlYlJlc291cmNl
RGF0YV8QE1dlYlJlc291cmNlTUlNRVR5cGVfEF5maWxlOi8vL1VzZXJzL2FidWN1ci9XZWJLaXQv
UGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL3Jlc291cmNlcy9kcm9tYWVvL3dlYi9saWIvanF1ZXJ5
LTEuNi40LmpzTxECXmJwbGlzdDAw1AECAwQFBjY3WCR2ZXJzaW9uWCRvYmplY3RzWSRhcmNoaXZl
clQkdG9wEgABhqCrBwgfJSYtLi8wMTJVJG51bGzbCQoLDA0ODxAREhMUFRYXGBkaGxwdHlIkM1Yk
Y2xhc3NSJDZSJDFSJDlSJDRSJDdSJDJSJDVSJDBSJDiAAoAKgAcQAIAJgAWAABAHgAYQCIAI0yAK
IRojJFdOUy5iYXNlW05TLnJlbGF0aXZlgACABIADXxBeZmlsZTovLy9Vc2Vycy9hYnVjdXIvV2Vi
S2l0L1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9yZXNvdXJjZXMvZHJvbWFlby93ZWIvbGliL2px
dWVyeS0xLjYuNC5qc9InKCkqWiRjbGFzc25hbWVYJGNsYXNzZXNVTlNVUkyiKyxVTlNVUkxYTlNP
YmplY3QjQbcgKpD4J1IQAl8QD3RleHQvamF2YXNjcmlwdBIABck/I3/v////////0icoMzRdTlNV
UkxSZXNwb25zZaI1LF1OU1VSTFJlc3BvbnNlXxAPTlNLZXllZEFyY2hpdmVy0Tg5XxATV2ViUmVz
b3VyY2VSZXNwb25zZYABAAgAEQAaACMALQAyADcAQwBJAGAAYwBqAG0AcABzAHYAeQB8AH8AggCF
AIcAiQCLAI0AjwCRAJMAlQCXAJkAmwCiAKoAtgC4ALoAvAEdASIBLQE2ATwBPwFFAU4BVwFZAWsB
cAF5AX4BjAGPAZ0BrwGyAcgAAAAAAAACAQAAAAAAAAA6AAAAAAAAAAAAAAAAAAAByk8SAAXJPy8q
IQogKiBqUXVlcnkgSmF2YVNjcmlwdCBMaWJyYXJ5IHYxLjYuNAogKiBodHRwOi8vanF1ZXJ5LmNv
bS8KICoKICogQ29weXJpZ2h0IDIwMTEsIEpvaG4gUmVzaWcKICogRHVhbCBsaWNlbnNlZCB1bmRl
ciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqIGh0dHA6Ly9qcXVlcnkub3Jn
L2xpY2Vuc2UKICoKICogSW5jbHVkZXMgU2l6emxlLmpzCiAqIGh0dHA6Ly9zaXp6bGVqcy5jb20v
CiAqIENvcHlyaWdodCAyMDExLCBUaGUgRG9qbyBGb3VuZGF0aW9uCiAqIFJlbGVhc2VkIHVuZGVy
IHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICoKICogRGF0ZTogTW9uIFNlcCAxMiAx
ODo1NDo0OCAyMDExIC0wNDAwCiAqLwooZnVuY3Rpb24oIHdpbmRvdywgdW5kZWZpbmVkICkgewoK
Ly8gVXNlIHRoZSBjb3JyZWN0IGRvY3VtZW50IGFjY29yZGluZ2x5IHdpdGggd2luZG93IGFyZ3Vt
ZW50IChzYW5kYm94KQp2YXIgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQsCiAgICAgICAgbmF2
aWdhdG9yID0gd2luZG93Lm5hdmlnYXRvciwKICAgICAgICBsb2NhdGlvbiA9IHdpbmRvdy5sb2Nh
dGlvbjsKdmFyIGpRdWVyeSA9IChmdW5jdGlvbigpIHsKCi8vIERlZmluZSBhIGxvY2FsIGNvcHkg
b2YgalF1ZXJ5CnZhciBqUXVlcnkgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CiAg
ICAgICAgICAgICAgICAvLyBUaGUgalF1ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBp
bml0IGNvbnN0cnVjdG9yICdlbmhhbmNlZCcKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgalF1
ZXJ5LmZuLmluaXQoIHNlbGVjdG9yLCBjb250ZXh0LCByb290alF1ZXJ5ICk7CiAgICAgICAgfSwK
CiAgICAgICAgLy8gTWFwIG92ZXIgalF1ZXJ5IGluIGNhc2Ugb2Ygb3ZlcndyaXRlCiAgICAgICAg
X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksCgogICAgICAgIC8vIE1hcCBvdmVyIHRoZSAkIGluIGNh
c2Ugb2Ygb3ZlcndyaXRlCiAgICAgICAgXyQgPSB3aW5kb3cuJCwKCiAgICAgICAgLy8gQSBjZW50
cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpCiAgICAgICAgcm9vdGpR
dWVyeSwKCiAgICAgICAgLy8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3Mg
b3IgSUQgc3RyaW5ncwogICAgICAgIC8vIFByaW9yaXRpemUgI2lkIG92ZXIgPHRhZz4gdG8gYXZv
aWQgWFNTIHZpYSBsb2NhdGlvbi5oYXNoICgjOTUyMSkKICAgICAgICBxdWlja0V4cHIgPSAvXig/
OlteIzxdKig8W1x3XFddKz4pW14+XSokfCMoW1x3XC1dKikkKS8sCgogICAgICAgIC8vIENoZWNr
IGlmIGEgc3RyaW5nIGhhcyBhIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciBpbiBpdAogICAgICAg
IHJub3R3aGl0ZSA9IC9cUy8sCgogICAgICAgIC8vIFVzZWQgZm9yIHRyaW1taW5nIHdoaXRlc3Bh
Y2UKICAgICAgICB0cmltTGVmdCA9IC9eXHMrLywKICAgICAgICB0cmltUmlnaHQgPSAvXHMrJC8s
CgogICAgICAgIC8vIENoZWNrIGZvciBkaWdpdHMKICAgICAgICByZGlnaXQgPSAvXGQvLAoKICAg
ICAgICAvLyBNYXRjaCBhIHN0YW5kYWxvbmUgdGFnCiAgICAgICAgcnNpbmdsZVRhZyA9IC9ePChc
dyspXHMqXC8/Pig/OjxcL1wxPik/JC8sCgogICAgICAgIC8vIEpTT04gUmVnRXhwCiAgICAgICAg
cnZhbGlkY2hhcnMgPSAvXltcXSw6e31cc10qJC8sCiAgICAgICAgcnZhbGlkZXNjYXBlID0gL1xc
KD86WyJcXFwvYmZucnRdfHVbMC05YS1mQS1GXXs0fSkvZywKICAgICAgICBydmFsaWR0b2tlbnMg
PSAvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsr
XC1dP1xkKyk/L2csCiAgICAgICAgcnZhbGlkYnJhY2VzID0gLyg/Ol58OnwsKSg/OlxzKlxbKSsv
ZywKCiAgICAgICAgLy8gVXNlcmFnZW50IFJlZ0V4cAogICAgICAgIHJ3ZWJraXQgPSAvKHdlYmtp
dClbIFwvXShbXHcuXSspLywKICAgICAgICByb3BlcmEgPSAvKG9wZXJhKSg/Oi4qdmVyc2lvbik/
WyBcL10oW1x3Ll0rKS8sCiAgICAgICAgcm1zaWUgPSAvKG1zaWUpIChbXHcuXSspLywKICAgICAg
ICBybW96aWxsYSA9IC8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sCgogICAgICAgIC8v
IE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZwogICAgICAgIHJkYXNoQWxwaGEg
PSAvLShbYS16XXxbMC05XSkvaWcsCiAgICAgICAgcm1zUHJlZml4ID0gL14tbXMtLywKCiAgICAg
ICAgLy8gVXNlZCBieSBqUXVlcnkuY2FtZWxDYXNlIGFzIGNhbGxiYWNrIHRvIHJlcGxhY2UoKQog
ICAgICAgIGZjYW1lbENhc2UgPSBmdW5jdGlvbiggYWxsLCBsZXR0ZXIgKSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gKCBsZXR0ZXIgKyAiIiApLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgfSwKCiAg
ICAgICAgLy8gS2VlcCBhIFVzZXJBZ2VudCBzdHJpbmcgZm9yIHVzZSB3aXRoIGpRdWVyeS5icm93
c2VyCiAgICAgICAgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudCwKCiAgICAgICAgLy8g
Rm9yIG1hdGNoaW5nIHRoZSBlbmdpbmUgYW5kIHZlcnNpb24gb2YgdGhlIGJyb3dzZXIKICAgICAg
ICBicm93c2VyTWF0Y2gsCgogICAgICAgIC8vIFRoZSBkZWZlcnJlZCB1c2VkIG9uIERPTSByZWFk
eQogICAgICAgIHJlYWR5TGlzdCwKCiAgICAgICAgLy8gVGhlIHJlYWR5IGV2ZW50IGhhbmRsZXIK
ICAgICAgICBET01Db250ZW50TG9hZGVkLAoKICAgICAgICAvLyBTYXZlIGEgcmVmZXJlbmNlIHRv
IHNvbWUgY29yZSBtZXRob2RzCiAgICAgICAgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRv
U3RyaW5nLAogICAgICAgIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHks
CiAgICAgICAgcHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoLAogICAgICAgIHNsaWNlID0gQXJy
YXkucHJvdG90eXBlLnNsaWNlLAogICAgICAgIHRyaW0gPSBTdHJpbmcucHJvdG90eXBlLnRyaW0s
CiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLAoKICAgICAgICAvLyBb
W0NsYXNzXV0gLT4gdHlwZSBwYWlycwogICAgICAgIGNsYXNzMnR5cGUgPSB7fTsKCmpRdWVyeS5m
biA9IGpRdWVyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgY29uc3RydWN0b3I6IGpRdWVyeSwKICAg
ICAgICBpbml0OiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3RqUXVlcnkgKSB7CiAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gsIGVsZW0sIHJldCwgZG9jOwoKICAgICAgICAgICAgICAg
IC8vIEhhbmRsZSAkKCIiKSwgJChudWxsKSwgb3IgJCh1bmRlZmluZWQpCiAgICAgICAgICAgICAg
ICBpZiAoICFzZWxlY3RvciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSGFuZGxlICQoRE9NRWxlbWVu
dCkKICAgICAgICAgICAgICAgIGlmICggc2VsZWN0b3Iubm9kZVR5cGUgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHRoaXNbMF0gPSBzZWxlY3RvcjsKICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5sZW5ndGggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpczsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBUaGUgYm9k
eSBlbGVtZW50IG9ubHkgZXhpc3RzIG9uY2UsIG9wdGltaXplIGZpbmRpbmcgaXQKICAgICAgICAg
ICAgICAgIGlmICggc2VsZWN0b3IgPT09ICJib2R5IiAmJiAhY29udGV4dCAmJiBkb2N1bWVudC5i
b2R5ICkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPSBkb2N1bWVudDsK
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1swXSA9IGRvY3VtZW50LmJvZHk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0b3IgPSBzZWxlY3RvcjsKICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5sZW5ndGggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dGhpczsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBIYW5kbGUgSFRNTCBz
dHJpbmdzCiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFyZSB3ZSBkZWFsaW5nIHdpdGggSFRNTCBz
dHJpbmcgb3IgYW4gSUQ/CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZWN0b3IuY2hh
ckF0KDApID09PSAiPCIgJiYgc2VsZWN0b3IuY2hhckF0KCBzZWxlY3Rvci5sZW5ndGggLSAxICkg
PT09ICI+IiAmJiBzZWxlY3Rvci5sZW5ndGggPj0gMyApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCBzdHJpbmdzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRo
IDw+IGFyZSBIVE1MIGFuZCBza2lwIHRoZSByZWdleCBjaGVjawogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoID0gWyBudWxsLCBzZWxlY3RvciwgbnVsbCBdOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaCA9IHF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJpZnkgYSBtYXRjaCwgYW5kIHRoYXQg
bm8gY29udGV4dCB3YXMgc3BlY2lmaWVkIGZvciAjaWQKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBtYXRjaCAmJiAobWF0Y2hbMV0gfHwgIWNvbnRleHQpICkgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoaHRtbCkgLT4gJChhcnJheSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoWzFdICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVl
cnkgPyBjb250ZXh0WzBdIDogY29udGV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRvYyA9IChjb250ZXh0ID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRl
eHQgOiBkb2N1bWVudCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgYSBzaW5nbGUgc3RyaW5nIGlzIHBhc3NlZCBpbiBhbmQgaXQncyBhIHNpbmdsZSB0YWcK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgZG8gYSBjcmVh
dGVFbGVtZW50IGFuZCBza2lwIHRoZSByZXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXQgPSByc2luZ2xlVGFnLmV4ZWMoIHNlbGVjdG9yICk7CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXQgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzUGxhaW5PYmpl
Y3QoIGNvbnRleHQgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IFsgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggcmV0
WzFdICkgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZm4uYXR0ci5jYWxsKCBzZWxlY3RvciwgY29udGV4dCwgdHJ1ZSApOwoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RvciA9IFsgZG9jLmNyZWF0ZUVsZW1lbnQoIHJldFsxXSApIF07CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXQgPSBqUXVlcnkuYnVpbGRGcmFnbWVudCggWyBtYXRjaFsx
XSBdLCBbIGRvYyBdICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGVjdG9yID0gKHJldC5jYWNoZWFibGUgPyBqUXVlcnkuY2xvbmUocmV0LmZyYWdt
ZW50KSA6IHJldC5mcmFnbWVudCkuY2hpbGROb2RlczsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4galF1ZXJ5Lm1lcmdlKCB0aGlzLCBzZWxlY3RvciApOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBIQU5ETEU6ICQoIiNpZCIpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggbWF0Y2hbMl0gKTsKCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNh
dGNoIHdoZW4gQmxhY2tiZXJyeSA0LjYgcmV0dXJucwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gbm9kZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIGluIHRoZSBkb2N1bWVu
dCAjNjk2MwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVt
ICYmIGVsZW0ucGFyZW50Tm9kZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFIGFuZCBPcGVyYSByZXR1
cm4gaXRlbXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYnkgbmFtZSBpbnN0ZWFkIG9mIElECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggZWxlbS5pZCAhPT0gbWF0Y2hbMl0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Rq
UXVlcnkuZmluZCggc2VsZWN0b3IgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBpbmplY3QgdGhlIGVsZW1lbnQgZGlyZWN0bHkgaW50
byB0aGUgalF1ZXJ5IG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmxlbmd0aCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXNbMF0gPSBlbGVtOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoaXMuY29udGV4dCA9IGRvY3VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSEFORExFOiAkKGV4cHIsICQo
Li4uKSkKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggIWNvbnRleHQgfHwgY29u
dGV4dC5qcXVlcnkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChj
b250ZXh0IHx8IHJvb3RqUXVlcnkpLmZpbmQoIHNlbGVjdG9yICk7CgogICAgICAgICAgICAgICAg
ICAgICAgICAvLyBIQU5ETEU6ICQoZXhwciwgY29udGV4dCkKICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gKHdoaWNoIGlzIGp1c3QgZXF1aXZhbGVudCB0bzogJChjb250ZXh0KS5maW5kKGV4cHIp
CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IoIGNvbnRleHQgKS5maW5kKCBzZWxlY3Rv
ciApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSEFORExF
OiAkKGZ1bmN0aW9uKQogICAgICAgICAgICAgICAgLy8gU2hvcnRjdXQgZm9yIGRvY3VtZW50IHJl
YWR5CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggc2VsZWN0
b3IgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3RqUXVlcnkucmVhZHko
IHNlbGVjdG9yICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKHNlbGVj
dG9yLnNlbGVjdG9yICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5zZWxlY3RvciA9IHNlbGVjdG9yLnNlbGVjdG9yOwogICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLmNvbnRleHQgPSBzZWxlY3Rvci5jb250ZXh0OwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApOwogICAg
ICAgIH0sCgogICAgICAgIC8vIFN0YXJ0IHdpdGggYW4gZW1wdHkgc2VsZWN0b3IKICAgICAgICBz
ZWxlY3RvcjogIiIsCgogICAgICAgIC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJl
aW5nIHVzZWQKICAgICAgICBqcXVlcnk6ICIxLjYuNCIsCgogICAgICAgIC8vIFRoZSBkZWZhdWx0
IGxlbmd0aCBvZiBhIGpRdWVyeSBvYmplY3QgaXMgMAogICAgICAgIGxlbmd0aDogMCwKCiAgICAg
ICAgLy8gVGhlIG51bWJlciBvZiBlbGVtZW50cyBjb250YWluZWQgaW4gdGhlIG1hdGNoZWQgZWxl
bWVudCBzZXQKICAgICAgICBzaXplOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLmxlbmd0aDsKICAgICAgICB9LAoKICAgICAgICB0b0FycmF5OiBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgIHJldHVybiBzbGljZS5jYWxsKCB0aGlzLCAwICk7CiAgICAgICAgfSwK
CiAgICAgICAgLy8gR2V0IHRoZSBOdGggZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNl
dCBPUgogICAgICAgIC8vIEdldCB0aGUgd2hvbGUgbWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNs
ZWFuIGFycmF5CiAgICAgICAgZ2V0OiBmdW5jdGlvbiggbnVtICkgewogICAgICAgICAgICAgICAg
cmV0dXJuIG51bSA9PSBudWxsID8KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiBh
ICdjbGVhbicgYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b0FycmF5KCkgOgoK
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIGp1c3QgdGhlIG9iamVjdAogICAgICAg
ICAgICAgICAgICAgICAgICAoIG51bSA8IDAgPyB0aGlzWyB0aGlzLmxlbmd0aCArIG51bSBdIDog
dGhpc1sgbnVtIF0gKTsKICAgICAgICB9LAoKICAgICAgICAvLyBUYWtlIGFuIGFycmF5IG9mIGVs
ZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrCiAgICAgICAgLy8gKHJldHVybmluZyB0
aGUgbmV3IG1hdGNoZWQgZWxlbWVudCBzZXQpCiAgICAgICAgcHVzaFN0YWNrOiBmdW5jdGlvbigg
ZWxlbXMsIG5hbWUsIHNlbGVjdG9yICkgewogICAgICAgICAgICAgICAgLy8gQnVpbGQgYSBuZXcg
alF1ZXJ5IG1hdGNoZWQgZWxlbWVudCBzZXQKICAgICAgICAgICAgICAgIHZhciByZXQgPSB0aGlz
LmNvbnN0cnVjdG9yKCk7CgogICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggZWxl
bXMgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaC5hcHBseSggcmV0LCBlbGVtcyAp
OwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5tZXJnZSggcmV0LCBlbGVtcyApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
IC8vIEFkZCB0aGUgb2xkIG9iamVjdCBvbnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCiAg
ICAgICAgICAgICAgICByZXQucHJldk9iamVjdCA9IHRoaXM7CgogICAgICAgICAgICAgICAgcmV0
LmNvbnRleHQgPSB0aGlzLmNvbnRleHQ7CgogICAgICAgICAgICAgICAgaWYgKCBuYW1lID09PSAi
ZmluZCIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5zZWxlY3RvciA9IHRoaXMuc2Vs
ZWN0b3IgKyAodGhpcy5zZWxlY3RvciA/ICIgIiA6ICIiKSArIHNlbGVjdG9yOwogICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICggbmFtZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnNl
bGVjdG9yID0gdGhpcy5zZWxlY3RvciArICIuIiArIG5hbWUgKyAiKCIgKyBzZWxlY3RvciArICIp
IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIG5ld2x5
LWZvcm1lZCBlbGVtZW50IHNldAogICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICB9
LAoKICAgICAgICAvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhl
IG1hdGNoZWQgc2V0LgogICAgICAgIC8vIChZb3UgY2FuIHNlZWQgdGhlIGFyZ3VtZW50cyB3aXRo
IGFuIGFycmF5IG9mIGFyZ3MsIGJ1dCB0aGlzIGlzCiAgICAgICAgLy8gb25seSB1c2VkIGludGVy
bmFsbHkuKQogICAgICAgIGVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjaywgYXJncyApIHsKICAgICAg
ICAgICAgICAgIHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2ssIGFyZ3MgKTsKICAg
ICAgICB9LAoKICAgICAgICByZWFkeTogZnVuY3Rpb24oIGZuICkgewogICAgICAgICAgICAgICAg
Ly8gQXR0YWNoIHRoZSBsaXN0ZW5lcnMKICAgICAgICAgICAgICAgIGpRdWVyeS5iaW5kUmVhZHko
KTsKCiAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIGNhbGxiYWNrCiAgICAgICAgICAgICAgICBy
ZWFkeUxpc3QuZG9uZSggZm4gKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAg
ICB9LAoKICAgICAgICBlcTogZnVuY3Rpb24oIGkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4g
aSA9PT0gLTEgPwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWNlKCBpICkgOgogICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLnNsaWNlKCBpLCAraSArIDEgKTsKICAgICAgICB9LAoK
ICAgICAgICBmaXJzdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5l
cSggMCApOwogICAgICAgIH0sCgogICAgICAgIGxhc3Q6IGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuZXEoIC0xICk7CiAgICAgICAgfSwKCiAgICAgICAgc2xpY2U6IGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5h
cHBseSggdGhpcywgYXJndW1lbnRzICksCiAgICAgICAgICAgICAgICAgICAgICAgICJzbGljZSIs
IHNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikgKTsKICAgICAgICB9LAoKICAgICAgICBt
YXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1
c2hTdGFjayggalF1ZXJ5Lm1hcCh0aGlzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTsKICAg
ICAgICAgICAgICAgIH0pKTsKICAgICAgICB9LAoKICAgICAgICBlbmQ6IGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldk9iamVjdCB8fCB0aGlzLmNvbnN0cnVjdG9y
KG51bGwpOwogICAgICAgIH0sCgogICAgICAgIC8vIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KICAg
ICAgICAvLyBCZWhhdmVzIGxpa2UgYW4gQXJyYXkncyBtZXRob2QsIG5vdCBsaWtlIGEgalF1ZXJ5
IG1ldGhvZC4KICAgICAgICBwdXNoOiBwdXNoLAogICAgICAgIHNvcnQ6IFtdLnNvcnQsCiAgICAg
ICAgc3BsaWNlOiBbXS5zcGxpY2UKfTsKCi8vIEdpdmUgdGhlIGluaXQgZnVuY3Rpb24gdGhlIGpR
dWVyeSBwcm90b3R5cGUgZm9yIGxhdGVyIGluc3RhbnRpYXRpb24KalF1ZXJ5LmZuLmluaXQucHJv
dG90eXBlID0galF1ZXJ5LmZuOwoKalF1ZXJ5LmV4dGVuZCA9IGpRdWVyeS5mbi5leHRlbmQgPSBm
dW5jdGlvbigpIHsKICAgICAgICB2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNB
cnJheSwgY2xvbmUsCiAgICAgICAgICAgICAgICB0YXJnZXQgPSBhcmd1bWVudHNbMF0gfHwge30s
CiAgICAgICAgICAgICAgICBpID0gMSwKICAgICAgICAgICAgICAgIGxlbmd0aCA9IGFyZ3VtZW50
cy5sZW5ndGgsCiAgICAgICAgICAgICAgICBkZWVwID0gZmFsc2U7CgogICAgICAgIC8vIEhhbmRs
ZSBhIGRlZXAgY29weSBzaXR1YXRpb24KICAgICAgICBpZiAoIHR5cGVvZiB0YXJnZXQgPT09ICJi
b29sZWFuIiApIHsKICAgICAgICAgICAgICAgIGRlZXAgPSB0YXJnZXQ7CiAgICAgICAgICAgICAg
ICB0YXJnZXQgPSBhcmd1bWVudHNbMV0gfHwge307CiAgICAgICAgICAgICAgICAvLyBza2lwIHRo
ZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0CiAgICAgICAgICAgICAgICBpID0gMjsKICAgICAgICB9
CgogICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gdGFyZ2V0IGlzIGEgc3RyaW5nIG9yIHNvbWV0
aGluZyAocG9zc2libGUgaW4gZGVlcCBjb3B5KQogICAgICAgIGlmICggdHlwZW9mIHRhcmdldCAh
PT0gIm9iamVjdCIgJiYgIWpRdWVyeS5pc0Z1bmN0aW9uKHRhcmdldCkgKSB7CiAgICAgICAgICAg
ICAgICB0YXJnZXQgPSB7fTsKICAgICAgICB9CgogICAgICAgIC8vIGV4dGVuZCBqUXVlcnkgaXRz
ZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZAogICAgICAgIGlmICggbGVuZ3RoID09
PSBpICkgewogICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGhpczsKICAgICAgICAgICAgICAgIC0t
aTsKICAgICAgICB9CgogICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkgewogICAgICAg
ICAgICAgICAgLy8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlcwogICAg
ICAgICAgICAgICAgaWYgKCAob3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdKSAhPSBudWxsICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHRlbmQgdGhlIGJhc2Ugb2JqZWN0CiAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoIG5hbWUgaW4gb3B0aW9ucyApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzcmMgPSB0YXJnZXRbIG5hbWUgXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3B5ID0gb3B0aW9uc1sgbmFtZSBdOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCB0YXJnZXQgPT09IGNvcHkgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2Ug
aWYgd2UncmUgbWVyZ2luZyBwbGFpbiBvYmplY3RzIG9yIGFycmF5cwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmpl
Y3QoY29weSkgfHwgKGNvcHlJc0FycmF5ID0galF1ZXJ5LmlzQXJyYXkoY29weSkpICkgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvcHlJc0FycmF5ICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5SXNB
cnJheSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbG9uZSA9IHNyYyAmJiBqUXVlcnkuaXNBcnJheShzcmMpID8gc3JjIDogW107CgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmUgPSBzcmMgJiYgalF1ZXJ5
LmlzUGxhaW5PYmplY3Qoc3JjKSA/IHNyYyA6IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBqUXVlcnkuZXh0ZW5k
KCBkZWVwLCBjbG9uZSwgY29weSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICggY29weSAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0WyBuYW1lIF0gPSBjb3B5OwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBv
YmplY3QKICAgICAgICByZXR1cm4gdGFyZ2V0Owp9OwoKalF1ZXJ5LmV4dGVuZCh7CiAgICAgICAg
bm9Db25mbGljdDogZnVuY3Rpb24oIGRlZXAgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHdpbmRv
dy4kID09PSBqUXVlcnkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy4kID0gXyQ7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBkZWVwICYmIHdpbmRvdy5q
UXVlcnkgPT09IGpRdWVyeSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmpRdWVy
eSA9IF9qUXVlcnk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGpR
dWVyeTsKICAgICAgICB9LAoKICAgICAgICAvLyBJcyB0aGUgRE9NIHJlYWR5IHRvIGJlIHVzZWQ/
IFNldCB0byB0cnVlIG9uY2UgaXQgb2NjdXJzLgogICAgICAgIGlzUmVhZHk6IGZhbHNlLAoKICAg
ICAgICAvLyBBIGNvdW50ZXIgdG8gdHJhY2sgaG93IG1hbnkgaXRlbXMgdG8gd2FpdCBmb3IgYmVm
b3JlCiAgICAgICAgLy8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODEKICAgICAgICBy
ZWFkeVdhaXQ6IDEsCgogICAgICAgIC8vIEhvbGQgKG9yIHJlbGVhc2UpIHRoZSByZWFkeSBldmVu
dAogICAgICAgIGhvbGRSZWFkeTogZnVuY3Rpb24oIGhvbGQgKSB7CiAgICAgICAgICAgICAgICBp
ZiAoIGhvbGQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZWFkeVdhaXQrKzsK
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5y
ZWFkeSggdHJ1ZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIC8vIEhh
bmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHkKICAgICAgICByZWFkeTogZnVuY3Rpb24oIHdhaXQg
KSB7CiAgICAgICAgICAgICAgICAvLyBFaXRoZXIgYSByZWxlYXNlZCBob2xkIG9yIGFuIERPTXJl
YWR5L2xvYWQgZXZlbnQgYW5kIG5vdCB5ZXQgcmVhZHkKICAgICAgICAgICAgICAgIGlmICggKHdh
aXQgPT09IHRydWUgJiYgIS0talF1ZXJ5LnJlYWR5V2FpdCkgfHwgKHdhaXQgIT09IHRydWUgJiYg
IWpRdWVyeS5pc1JlYWR5KSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IGJvZHkgZXhpc3RzLCBhdCBsZWFzdCwgaW4gY2FzZSBJRSBnZXRzIGEgbGl0dGxlIG92ZXJ6ZWFs
b3VzICh0aWNrZXQgIzU0NDMpLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFkb2N1bWVu
dC5ib2R5ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRUaW1l
b3V0KCBqUXVlcnkucmVhZHksIDEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhhdCB0aGUgRE9NIGlzIHJlYWR5CiAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50
LCBhbmQgd2FpdCBpZiBuZWVkIGJlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggd2FpdCAh
PT0gdHJ1ZSAmJiAtLWpRdWVyeS5yZWFkeVdhaXQgPiAwICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0
ZQogICAgICAgICAgICAgICAgICAgICAgICByZWFkeUxpc3QucmVzb2x2ZVdpdGgoIGRvY3VtZW50
LCBbIGpRdWVyeSBdICk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGFueSBi
b3VuZCByZWFkeSBldmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuZm4u
dHJpZ2dlciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIGRvY3Vt
ZW50ICkudHJpZ2dlciggInJlYWR5IiApLnVuYmluZCggInJlYWR5IiApOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgYmluZFJl
YWR5OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICggcmVhZHlMaXN0ICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgcmVhZHlMaXN0ID0galF1ZXJ5Ll9EZWZlcnJlZCgpOwoKICAgICAgICAgICAgICAgIC8v
IENhdGNoIGNhc2VzIHdoZXJlICQoZG9jdW1lbnQpLnJlYWR5KCkgaXMgY2FsbGVkIGFmdGVyIHRo
ZQogICAgICAgICAgICAgICAgLy8gYnJvd3NlciBldmVudCBoYXMgYWxyZWFkeSBvY2N1cnJlZC4K
ICAgICAgICAgICAgICAgIGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGl0IGFzeW5jaHJvbm91c2x5IHRv
IGFsbG93IHNjcmlwdHMgdGhlIG9wcG9ydHVuaXR5IHRvIGRlbGF5IHJlYWR5CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KCBqUXVlcnkucmVhZHksIDEgKTsKICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBNb3ppbGxhLCBPcGVyYSBhbmQgd2Via2l0
IG5pZ2h0bGllcyBjdXJyZW50bHkgc3VwcG9ydCB0aGlzIGV2ZW50CiAgICAgICAgICAgICAgICBp
ZiAoIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFVzZSB0aGUgaGFuZHkgZXZlbnQgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBET01Db250ZW50
TG9hZGVkLCBmYWxzZSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBmYWxsYmFjayB0
byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmsKICAgICAgICAgICAgICAgICAg
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICJsb2FkIiwgalF1ZXJ5LnJlYWR5LCBmYWxz
ZSApOwoKICAgICAgICAgICAgICAgIC8vIElmIElFIGV2ZW50IG1vZGVsIGlzIHVzZWQKICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIGRvY3VtZW50LmF0dGFjaEV2ZW50ICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAvLyBlbnN1cmUgZmlyaW5nIGJlZm9yZSBvbmxvYWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIG1heWJlIGxhdGUgYnV0IHNhZmUgYWxzbyBmb3IgaWZyYW1lcwogICAg
ICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hdHRhY2hFdmVudCggIm9ucmVhZHlzdGF0ZWNo
YW5nZSIsIERPTUNvbnRlbnRMb2FkZWQgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEg
ZmFsbGJhY2sgdG8gd2luZG93Lm9ubG9hZCwgdGhhdCB3aWxsIGFsd2F5cyB3b3JrCiAgICAgICAg
ICAgICAgICAgICAgICAgIHdpbmRvdy5hdHRhY2hFdmVudCggIm9ubG9hZCIsIGpRdWVyeS5yZWFk
eSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgSUUgYW5kIG5vdCBhIGZyYW1lCiAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVhbGx5IGNoZWNrIHRvIHNlZSBpZiB0aGUg
ZG9jdW1lbnQgaXMgcmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvcGxldmVsID0g
ZmFsc2U7CgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRvcGxldmVsID0gd2luZG93LmZyYW1lRWxlbWVudCA9PSBudWxsOwogICAg
ICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHt9CgogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCAmJiB0b3BsZXZlbCApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb1Njcm9sbENoZWNrKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICAv
LyBTZWUgdGVzdC91bml0L2NvcmUuanMgZm9yIGRldGFpbHMgY29uY2VybmluZyBpc0Z1bmN0aW9u
LgogICAgICAgIC8vIFNpbmNlIHZlcnNpb24gMS4zLCBET00gbWV0aG9kcyBhbmQgZnVuY3Rpb25z
IGxpa2UgYWxlcnQKICAgICAgICAvLyBhcmVuJ3Qgc3VwcG9ydGVkLiBUaGV5IHJldHVybiBmYWxz
ZSBvbiBJRSAoIzI5NjgpLgogICAgICAgIGlzRnVuY3Rpb246IGZ1bmN0aW9uKCBvYmogKSB7CiAg
ICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LnR5cGUob2JqKSA9PT0gImZ1bmN0aW9uIjsKICAg
ICAgICB9LAoKICAgICAgICBpc0FycmF5OiBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKCBvYmog
KSB7CiAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LnR5cGUob2JqKSA9PT0gImFycmF5IjsK
ICAgICAgICB9LAoKICAgICAgICAvLyBBIGNydWRlIHdheSBvZiBkZXRlcm1pbmluZyBpZiBhbiBv
YmplY3QgaXMgYSB3aW5kb3cKICAgICAgICBpc1dpbmRvdzogZnVuY3Rpb24oIG9iaiApIHsKICAg
ICAgICAgICAgICAgIHJldHVybiBvYmogJiYgdHlwZW9mIG9iaiA9PT0gIm9iamVjdCIgJiYgInNl
dEludGVydmFsIiBpbiBvYmo7CiAgICAgICAgfSwKCiAgICAgICAgaXNOYU46IGZ1bmN0aW9uKCBv
YmogKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gb2JqID09IG51bGwgfHwgIXJkaWdpdC50ZXN0
KCBvYmogKSB8fCBpc05hTiggb2JqICk7CiAgICAgICAgfSwKCiAgICAgICAgdHlwZTogZnVuY3Rp
b24oIG9iaiApIHsKICAgICAgICAgICAgICAgIHJldHVybiBvYmogPT0gbnVsbCA/CiAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cmluZyggb2JqICkgOgogICAgICAgICAgICAgICAgICAgICAgICBj
bGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKG9iaikgXSB8fCAib2JqZWN0IjsKICAgICAgICB9LAoK
ICAgICAgICBpc1BsYWluT2JqZWN0OiBmdW5jdGlvbiggb2JqICkgewogICAgICAgICAgICAgICAg
Ly8gTXVzdCBiZSBhbiBPYmplY3QuCiAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIG9mIElFLCB3
ZSBhbHNvIGhhdmUgdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mIHRoZSBjb25zdHJ1Y3RvciBwcm9w
ZXJ0eS4KICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IERPTSBub2RlcyBhbmQgd2lu
ZG93IG9iamVjdHMgZG9uJ3QgcGFzcyB0aHJvdWdoLCBhcyB3ZWxsCiAgICAgICAgICAgICAgICBp
ZiAoICFvYmogfHwgalF1ZXJ5LnR5cGUob2JqKSAhPT0gIm9iamVjdCIgfHwgb2JqLm5vZGVUeXBl
IHx8IGpRdWVyeS5pc1dpbmRvdyggb2JqICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBOb3Qgb3duIGNvbnN0cnVjdG9yIHByb3BlcnR5IG11c3Qg
YmUgT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggb2JqLmNvbnN0cnVjdG9yICYm
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhhc093bi5jYWxsKG9iaiwgImNvbnN0
cnVjdG9yIikgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaGFzT3duLmNhbGwo
b2JqLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwgImlzUHJvdG90eXBlT2YiKSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIH0gY2F0Y2ggKCBlICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJRTgsOSBXaWxsIHRocm93IGV4Y2VwdGlvbnMgb24gY2VydGFpbiBob3N0IG9iamVj
dHMgIzk4OTcKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIE93biBwcm9wZXJ0aWVzIGFyZSBlbnVtZXJhdGVk
IGZpcnN0bHksIHNvIHRvIHNwZWVkIHVwLAogICAgICAgICAgICAgICAgLy8gaWYgbGFzdCBvbmUg
aXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uCgogICAgICAgICAgICAgICAgdmFy
IGtleTsKICAgICAgICAgICAgICAgIGZvciAoIGtleSBpbiBvYmogKSB7fQoKICAgICAgICAgICAg
ICAgIHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCB8fCBoYXNPd24uY2FsbCggb2JqLCBrZXkgKTsK
ICAgICAgICB9LAoKICAgICAgICBpc0VtcHR5T2JqZWN0OiBmdW5jdGlvbiggb2JqICkgewogICAg
ICAgICAgICAgICAgZm9yICggdmFyIG5hbWUgaW4gb2JqICkgewogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICB9LAoKICAgICAgICBlcnJvcjogZnVuY3Rpb24oIG1zZyApIHsKICAg
ICAgICAgICAgICAgIHRocm93IG1zZzsKICAgICAgICB9LAoKICAgICAgICBwYXJzZUpTT046IGZ1
bmN0aW9uKCBkYXRhICkgewogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgZGF0YSAhPT0gInN0
cmluZyIgfHwgIWRhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBsZWFkaW5nL3Ry
YWlsaW5nIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZCAoSUUgY2FuJ3QgaGFuZGxlIGl0KQogICAgICAg
ICAgICAgICAgZGF0YSA9IGpRdWVyeS50cmltKCBkYXRhICk7CgogICAgICAgICAgICAgICAgLy8g
QXR0ZW1wdCB0byBwYXJzZSB1c2luZyB0aGUgbmF0aXZlIEpTT04gcGFyc2VyIGZpcnN0CiAgICAg
ICAgICAgICAgICBpZiAoIHdpbmRvdy5KU09OICYmIHdpbmRvdy5KU09OLnBhcnNlICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LkpTT04ucGFyc2UoIGRhdGEgKTsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGluY29taW5n
IGRhdGEgaXMgYWN0dWFsIEpTT04KICAgICAgICAgICAgICAgIC8vIExvZ2ljIGJvcnJvd2VkIGZy
b20gaHR0cDovL2pzb24ub3JnL2pzb24yLmpzCiAgICAgICAgICAgICAgICBpZiAoIHJ2YWxpZGNo
YXJzLnRlc3QoIGRhdGEucmVwbGFjZSggcnZhbGlkZXNjYXBlLCAiQCIgKQogICAgICAgICAgICAg
ICAgICAgICAgICAucmVwbGFjZSggcnZhbGlkdG9rZW5zLCAiXSIgKQogICAgICAgICAgICAgICAg
ICAgICAgICAucmVwbGFjZSggcnZhbGlkYnJhY2VzLCAiIikpICkgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIChuZXcgRnVuY3Rpb24oICJyZXR1cm4gIiArIGRhdGEgKSkoKTsKCiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBqUXVlcnkuZXJyb3IoICJJbnZhbGlkIEpT
T046ICIgKyBkYXRhICk7CiAgICAgICAgfSwKCiAgICAgICAgLy8gQ3Jvc3MtYnJvd3NlciB4bWwg
cGFyc2luZwogICAgICAgIHBhcnNlWE1MOiBmdW5jdGlvbiggZGF0YSApIHsKICAgICAgICAgICAg
ICAgIHZhciB4bWwsIHRtcDsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggd2luZG93LkRPTVBhcnNlciApIHsgLy8gU3RhbmRhcmQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0bXAgPSBuZXcgRE9NUGFyc2VyKCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeG1sID0gdG1wLnBhcnNlRnJvbVN0cmluZyggZGF0YSAsICJ0ZXh0
L3htbCIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gSUUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4bWwgPSBuZXcgQWN0aXZlWE9iamVjdCggIk1pY3Jvc29m
dC5YTUxET00iICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sLmFzeW5jID0g
ImZhbHNlIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWwubG9hZFhNTCggZGF0
YSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoKCBl
ICkgewogICAgICAgICAgICAgICAgICAgICAgICB4bWwgPSB1bmRlZmluZWQ7CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICF4bWwgfHwgIXhtbC5kb2N1bWVudEVsZW1lbnQg
fHwgeG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCAicGFyc2VyZXJyb3IiICkubGVuZ3RoICkgewog
ICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXJyb3IoICJJbnZhbGlkIFhNTDogIiArIGRh
dGEgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB4bWw7CiAgICAg
ICAgfSwKCiAgICAgICAgbm9vcDogZnVuY3Rpb24oKSB7fSwKCiAgICAgICAgLy8gRXZhbHVhdGVz
IGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHQKICAgICAgICAvLyBXb3JrYXJvdW5kcyBiYXNl
ZCBvbiBmaW5kaW5ncyBieSBKaW0gRHJpc2NvbGwKICAgICAgICAvLyBodHRwOi8vd2VibG9ncy5q
YXZhLm5ldC9ibG9nL2RyaXNjb2xsL2FyY2hpdmUvMjAwOS8wOS8wOC9ldmFsLWphdmFzY3JpcHQt
Z2xvYmFsLWNvbnRleHQKICAgICAgICBnbG9iYWxFdmFsOiBmdW5jdGlvbiggZGF0YSApIHsKICAg
ICAgICAgICAgICAgIGlmICggZGF0YSAmJiBybm90d2hpdGUudGVzdCggZGF0YSApICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBXZSB1c2UgZXhlY1NjcmlwdCBvbiBJbnRlcm5ldCBFeHBs
b3JlcgogICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSB1c2UgYW4gYW5vbnltb3VzIGZ1bmN0
aW9uIHNvIHRoYXQgY29udGV4dCBpcyB3aW5kb3cKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
cmF0aGVyIHRoYW4galF1ZXJ5IGluIEZpcmVmb3gKICAgICAgICAgICAgICAgICAgICAgICAgKCB3
aW5kb3cuZXhlY1NjcmlwdCB8fCBmdW5jdGlvbiggZGF0YSApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3aW5kb3dbICJldmFsIiBdLmNhbGwoIHdpbmRvdywgZGF0YSApOwogICAg
ICAgICAgICAgICAgICAgICAgICB9ICkoIGRhdGEgKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICB9LAoKICAgICAgICAvLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhl
IGNzcyBhbmQgZGF0YSBtb2R1bGVzCiAgICAgICAgLy8gTWljcm9zb2Z0IGZvcmdvdCB0byBodW1w
IHRoZWlyIHZlbmRvciBwcmVmaXggKCM5NTcyKQogICAgICAgIGNhbWVsQ2FzZTogZnVuY3Rpb24o
IHN0cmluZyApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSggcm1zUHJl
Zml4LCAibXMtIiApLnJlcGxhY2UoIHJkYXNoQWxwaGEsIGZjYW1lbENhc2UgKTsKICAgICAgICB9
LAoKICAgICAgICBub2RlTmFtZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkg
PT09IG5hbWUudG9VcHBlckNhc2UoKTsKICAgICAgICB9LAoKICAgICAgICAvLyBhcmdzIGlzIGZv
ciBpbnRlcm5hbCB1c2FnZSBvbmx5CiAgICAgICAgZWFjaDogZnVuY3Rpb24oIG9iamVjdCwgY2Fs
bGJhY2ssIGFyZ3MgKSB7CiAgICAgICAgICAgICAgICB2YXIgbmFtZSwgaSA9IDAsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aCA9IG9iamVjdC5sZW5ndGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlzT2JqID0gbGVuZ3RoID09PSB1bmRlZmluZWQgfHwgalF1ZXJ5LmlzRnVuY3Rpb24o
IG9iamVjdCApOwoKICAgICAgICAgICAgICAgIGlmICggYXJncyApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBpc09iaiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKCBuYW1lIGluIG9iamVjdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggY2FsbGJhY2suYXBwbHkoIG9iamVjdFsgbmFtZSBdLCBhcmdzICkgPT09IGZh
bHNlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggOyBpIDwgbGVuZ3RoOyApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY2FsbGJhY2suYXBw
bHkoIG9iamVjdFsgaSsrIF0sIGFyZ3MgKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEEgc3BlY2lhbCwg
ZmFzdCwgY2FzZSBmb3IgdGhlIG1vc3QgY29tbW9uIHVzZSBvZiBlYWNoCiAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlzT2JqICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIG5hbWUgaW4gb2JqZWN0ICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjay5jYWxsKCBvYmpl
Y3RbIG5hbWUgXSwgbmFtZSwgb2JqZWN0WyBuYW1lIF0gKSA9PT0gZmFsc2UgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBsZW5ndGg7ICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjay5jYWxsKCBvYmplY3RbIGkgXSwg
aSwgb2JqZWN0WyBpKysgXSApID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0
dXJuIG9iamVjdDsKICAgICAgICB9LAoKICAgICAgICAvLyBVc2UgbmF0aXZlIFN0cmluZy50cmlt
IGZ1bmN0aW9uIHdoZXJldmVyIHBvc3NpYmxlCiAgICAgICAgdHJpbTogdHJpbSA/CiAgICAgICAg
ICAgICAgICBmdW5jdGlvbiggdGV4dCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRleHQgPT0gbnVsbCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaW0uY2FsbCggdGV4dCApOwogICAgICAgICAg
ICAgICAgfSA6CgogICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHVzZSBvdXIgb3duIHRyaW1t
aW5nIGZ1bmN0aW9uYWxpdHkKICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCB0ZXh0ICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dCA9PSBudWxsID8KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIiA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dC50b1N0cmluZygpLnJlcGxhY2UoIHRyaW1MZWZ0LCAiIiApLnJlcGxhY2UoIHRyaW1SaWdodCwg
IiIgKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgIC8vIHJlc3VsdHMgaXMgZm9yIGludGVy
bmFsIHVzYWdlIG9ubHkKICAgICAgICBtYWtlQXJyYXk6IGZ1bmN0aW9uKCBhcnJheSwgcmVzdWx0
cyApIHsKICAgICAgICAgICAgICAgIHZhciByZXQgPSByZXN1bHRzIHx8IFtdOwoKICAgICAgICAg
ICAgICAgIGlmICggYXJyYXkgIT0gbnVsbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhlIHdpbmRvdywgc3RyaW5ncyAoYW5kIGZ1bmN0aW9ucykgYWxzbyBoYXZlICdsZW5ndGgnCiAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBleHRyYSB0eXBlb2YgZnVuY3Rpb24gY2hlY2sg
aXMgdG8gcHJldmVudCBjcmFzaGVzCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIFNhZmFy
aSAyIChTZWU6ICMzMDM5KQogICAgICAgICAgICAgICAgICAgICAgICAvLyBUd2Vha2VkIGxvZ2lj
IHNsaWdodGx5IHRvIGhhbmRsZSBCbGFja2JlcnJ5IDQuNyBSZWdFeHAgaXNzdWVzICM2OTMwCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIGFycmF5ICk7Cgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFycmF5Lmxlbmd0aCA9PSBudWxsIHx8IHR5cGUg
PT09ICJzdHJpbmciIHx8IHR5cGUgPT09ICJmdW5jdGlvbiIgfHwgdHlwZSA9PT0gInJlZ2V4cCIg
fHwgalF1ZXJ5LmlzV2luZG93KCBhcnJheSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2guY2FsbCggcmV0LCBhcnJheSApOwogICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5tZXJnZSggcmV0
LCBhcnJheSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICB9LAoKICAgICAgICBpbkFycmF5OiBm
dW5jdGlvbiggZWxlbSwgYXJyYXkgKSB7CiAgICAgICAgICAgICAgICBpZiAoICFhcnJheSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIGlmICggaW5kZXhPZiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGluZGV4T2YuY2FsbCggYXJyYXksIGVsZW0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBmb3IgKCB2YXIgaSA9IDAsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDsgaSA8IGxl
bmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFycmF5WyBpIF0gPT09
IGVsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBy
ZXR1cm4gLTE7CiAgICAgICAgfSwKCiAgICAgICAgbWVyZ2U6IGZ1bmN0aW9uKCBmaXJzdCwgc2Vj
b25kICkgewogICAgICAgICAgICAgICAgdmFyIGkgPSBmaXJzdC5sZW5ndGgsCiAgICAgICAgICAg
ICAgICAgICAgICAgIGogPSAwOwoKICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHNlY29uZC5s
ZW5ndGggPT09ICJudW1iZXIiICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCB2YXIg
bCA9IHNlY29uZC5sZW5ndGg7IGogPCBsOyBqKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmlyc3RbIGkrKyBdID0gc2Vjb25kWyBqIF07CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB3
aGlsZSAoIHNlY29uZFtqXSAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaisrIF07CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmaXJzdC5sZW5ndGgg
PSBpOwoKICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKICAgICAgICB9LAoKICAgICAgICBn
cmVwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxiYWNrLCBpbnYgKSB7CiAgICAgICAgICAgICAgICB2
YXIgcmV0ID0gW10sIHJldFZhbDsKICAgICAgICAgICAgICAgIGludiA9ICEhaW52OwoKICAgICAg
ICAgICAgICAgIC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXMK
ICAgICAgICAgICAgICAgIC8vIHRoYXQgcGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uCiAgICAg
ICAgICAgICAgICBmb3IgKCB2YXIgaSA9IDAsIGxlbmd0aCA9IGVsZW1zLmxlbmd0aDsgaSA8IGxl
bmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSAhIWNhbGxiYWNr
KCBlbGVtc1sgaSBdLCBpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW52ICE9PSBy
ZXRWYWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goIGVsZW1z
WyBpIF0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgfSwKCiAgICAgICAgLy8gYXJnIGlzIGZv
ciBpbnRlcm5hbCB1c2FnZSBvbmx5CiAgICAgICAgbWFwOiBmdW5jdGlvbiggZWxlbXMsIGNhbGxi
YWNrLCBhcmcgKSB7CiAgICAgICAgICAgICAgICB2YXIgdmFsdWUsIGtleSwgcmV0ID0gW10sCiAg
ICAgICAgICAgICAgICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICBsZW5n
dGggPSBlbGVtcy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGpxdWVyeSBvYmpl
Y3RzIGFyZSB0cmVhdGVkIGFzIGFycmF5cwogICAgICAgICAgICAgICAgICAgICAgICBpc0FycmF5
ID0gZWxlbXMgaW5zdGFuY2VvZiBqUXVlcnkgfHwgbGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgdHlw
ZW9mIGxlbmd0aCA9PT0gIm51bWJlciIgJiYgKCAoIGxlbmd0aCA+IDAgJiYgZWxlbXNbIDAgXSAm
JiBlbGVtc1sgbGVuZ3RoIC0xIF0gKSB8fCBsZW5ndGggPT09IDAgfHwgalF1ZXJ5LmlzQXJyYXko
IGVsZW1zICkgKSA7CgogICAgICAgICAgICAgICAgLy8gR28gdGhyb3VnaCB0aGUgYXJyYXksIHRy
YW5zbGF0aW5nIGVhY2ggb2YgdGhlIGl0ZW1zIHRvIHRoZWlyCiAgICAgICAgICAgICAgICBpZiAo
IGlzQXJyYXkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIDsgaSA8IGxlbmd0aDsg
aSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY2FsbGJhY2so
IGVsZW1zWyBpIF0sIGksIGFyZyApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIHZhbHVlICE9IG51bGwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXRbIHJldC5sZW5ndGggXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEdv
IHRocm91Z2ggZXZlcnkga2V5IG9uIHRoZSBvYmplY3QsCiAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBrZXkgaW4gZWxlbXMgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGtleSBdLCBr
ZXksIGFyZyApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbHVlICE9
IG51bGwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRbIHJl
dC5sZW5ndGggXSA9IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
IC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXMKICAgICAgICAgICAgICAgIHJldHVybiByZXQu
Y29uY2F0LmFwcGx5KCBbXSwgcmV0ICk7CiAgICAgICAgfSwKCiAgICAgICAgLy8gQSBnbG9iYWwg
R1VJRCBjb3VudGVyIGZvciBvYmplY3RzCiAgICAgICAgZ3VpZDogMSwKCiAgICAgICAgLy8gQmlu
ZCBhIGZ1bmN0aW9uIHRvIGEgY29udGV4dCwgb3B0aW9uYWxseSBwYXJ0aWFsbHkgYXBwbHlpbmcg
YW55CiAgICAgICAgLy8gYXJndW1lbnRzLgogICAgICAgIHByb3h5OiBmdW5jdGlvbiggZm4sIGNv
bnRleHQgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0ID09PSAic3RyaW5n
IiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRtcCA9IGZuWyBjb250ZXh0IF07CiAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBmbjsKICAgICAgICAgICAgICAgICAgICAg
ICAgZm4gPSB0bXA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gUXVpY2sg
Y2hlY2sgdG8gZGV0ZXJtaW5lIGlmIHRhcmdldCBpcyBjYWxsYWJsZSwgaW4gdGhlIHNwZWMKICAg
ICAgICAgICAgICAgIC8vIHRoaXMgdGhyb3dzIGEgVHlwZUVycm9yLCBidXQgd2Ugd2lsbCBqdXN0
IHJldHVybiB1bmRlZmluZWQuCiAgICAgICAgICAgICAgICBpZiAoICFqUXVlcnkuaXNGdW5jdGlv
biggZm4gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBTaW11bGF0ZWQgYmluZAogICAgICAg
ICAgICAgICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMsIDIgKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgcHJveHkgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkoIGNvbnRleHQsIGFyZ3MuY29uY2F0KCBzbGljZS5j
YWxsKCBhcmd1bWVudHMgKSApICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAg
ICAgICAgICAgLy8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9m
IG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkCiAgICAgICAgICAgICAgICBw
cm94eS5ndWlkID0gZm4uZ3VpZCA9IGZuLmd1aWQgfHwgcHJveHkuZ3VpZCB8fCBqUXVlcnkuZ3Vp
ZCsrOwoKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eTsKICAgICAgICB9LAoKICAgICAgICAv
LyBNdXRpZnVuY3Rpb25hbCBtZXRob2QgdG8gZ2V0IGFuZCBzZXQgdmFsdWVzIHRvIGEgY29sbGVj
dGlvbgogICAgICAgIC8vIFRoZSB2YWx1ZS9zIGNhbiBvcHRpb25hbGx5IGJlIGV4ZWN1dGVkIGlm
IGl0J3MgYSBmdW5jdGlvbgogICAgICAgIGFjY2VzczogZnVuY3Rpb24oIGVsZW1zLCBrZXksIHZh
bHVlLCBleGVjLCBmbiwgcGFzcyApIHsKICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSBlbGVt
cy5sZW5ndGg7CgogICAgICAgICAgICAgICAgLy8gU2V0dGluZyBtYW55IGF0dHJpYnV0ZXMKICAg
ICAgICAgICAgICAgIGlmICggdHlwZW9mIGtleSA9PT0gIm9iamVjdCIgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoIHZhciBrIGluIGtleSApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuYWNjZXNzKCBlbGVtcywgaywga2V5W2tdLCBleGVjLCBmbiwgdmFs
dWUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZWxlbXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gU2V0dGlu
ZyBvbmUgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wdGlvbmFsbHksIGZ1bmN0aW9uIHZhbHVl
cyBnZXQgZXhlY3V0ZWQgaWYgZXhlYyBpcyB0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgIGV4
ZWMgPSAhcGFzcyAmJiBleGVjICYmIGpRdWVyeS5pc0Z1bmN0aW9uKHZhbHVlKTsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuKCBlbGVtc1tpXSwga2V5LCBleGVjID8gdmFs
dWUuY2FsbCggZWxlbXNbaV0sIGksIGZuKCBlbGVtc1tpXSwga2V5ICkgKSA6IHZhbHVlLCBwYXNz
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlbGVtczsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBHZXR0aW5n
IGFuIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgcmV0dXJuIGxlbmd0aCA/IGZuKCBlbGVtc1sw
XSwga2V5ICkgOiB1bmRlZmluZWQ7CiAgICAgICAgfSwKCiAgICAgICAgbm93OiBmdW5jdGlvbigp
IHsKICAgICAgICAgICAgICAgIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAgICAg
IH0sCgogICAgICAgIC8vIFVzZSBvZiBqUXVlcnkuYnJvd3NlciBpcyBmcm93bmVkIHVwb24uCiAg
ICAgICAgLy8gTW9yZSBkZXRhaWxzOiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1V0aWxpdGllcy9q
UXVlcnkuYnJvd3NlcgogICAgICAgIHVhTWF0Y2g6IGZ1bmN0aW9uKCB1YSApIHsKICAgICAgICAg
ICAgICAgIHVhID0gdWEudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgICAgICB2YXIgbWF0Y2gg
PSByd2Via2l0LmV4ZWMoIHVhICkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgcm9wZXJhLmV4
ZWMoIHVhICkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgcm1zaWUuZXhlYyggdWEgKSB8fAog
ICAgICAgICAgICAgICAgICAgICAgICB1YS5pbmRleE9mKCJjb21wYXRpYmxlIikgPCAwICYmIHJt
b3ppbGxhLmV4ZWMoIHVhICkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgW107CgogICAgICAg
ICAgICAgICAgcmV0dXJuIHsgYnJvd3NlcjogbWF0Y2hbMV0gfHwgIiIsIHZlcnNpb246IG1hdGNo
WzJdIHx8ICIwIiB9OwogICAgICAgIH0sCgogICAgICAgIHN1YjogZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICBmdW5jdGlvbiBqUXVlcnlTdWIoIHNlbGVjdG9yLCBjb250ZXh0ICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGpRdWVyeVN1Yi5mbi5pbml0KCBzZWxlY3Rv
ciwgY29udGV4dCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgalF1ZXJ5LmV4
dGVuZCggdHJ1ZSwgalF1ZXJ5U3ViLCB0aGlzICk7CiAgICAgICAgICAgICAgICBqUXVlcnlTdWIu
c3VwZXJjbGFzcyA9IHRoaXM7CiAgICAgICAgICAgICAgICBqUXVlcnlTdWIuZm4gPSBqUXVlcnlT
dWIucHJvdG90eXBlID0gdGhpcygpOwogICAgICAgICAgICAgICAgalF1ZXJ5U3ViLmZuLmNvbnN0
cnVjdG9yID0galF1ZXJ5U3ViOwogICAgICAgICAgICAgICAgalF1ZXJ5U3ViLnN1YiA9IHRoaXMu
c3ViOwogICAgICAgICAgICAgICAgalF1ZXJ5U3ViLmZuLmluaXQgPSBmdW5jdGlvbiBpbml0KCBz
ZWxlY3RvciwgY29udGV4dCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb250ZXh0
ICYmIGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgJiYgIShjb250ZXh0IGluc3RhbmNlb2YgalF1
ZXJ5U3ViKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0galF1
ZXJ5U3ViKCBjb250ZXh0ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZm4uaW5pdC5jYWxsKCB0aGlzLCBzZWxlY3Rvciwg
Y29udGV4dCwgcm9vdGpRdWVyeVN1YiApOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgIGpRdWVyeVN1Yi5mbi5pbml0LnByb3RvdHlwZSA9IGpRdWVyeVN1Yi5mbjsKICAgICAgICAg
ICAgICAgIHZhciByb290alF1ZXJ5U3ViID0galF1ZXJ5U3ViKGRvY3VtZW50KTsKICAgICAgICAg
ICAgICAgIHJldHVybiBqUXVlcnlTdWI7CiAgICAgICAgfSwKCiAgICAgICAgYnJvd3Nlcjoge30K
fSk7CgovLyBQb3B1bGF0ZSB0aGUgY2xhc3MydHlwZSBtYXAKalF1ZXJ5LmVhY2goIkJvb2xlYW4g
TnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QiLnNwbGl0KCIg
IiksIGZ1bmN0aW9uKGksIG5hbWUpIHsKICAgICAgICBjbGFzczJ0eXBlWyAiW29iamVjdCAiICsg
bmFtZSArICJdIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpOwp9KTsKCmJyb3dzZXJNYXRjaCA9IGpR
dWVyeS51YU1hdGNoKCB1c2VyQWdlbnQgKTsKaWYgKCBicm93c2VyTWF0Y2guYnJvd3NlciApIHsK
ICAgICAgICBqUXVlcnkuYnJvd3NlclsgYnJvd3Nlck1hdGNoLmJyb3dzZXIgXSA9IHRydWU7CiAg
ICAgICAgalF1ZXJ5LmJyb3dzZXIudmVyc2lvbiA9IGJyb3dzZXJNYXRjaC52ZXJzaW9uOwp9Cgov
LyBEZXByZWNhdGVkLCB1c2UgalF1ZXJ5LmJyb3dzZXIud2Via2l0IGluc3RlYWQKaWYgKCBqUXVl
cnkuYnJvd3Nlci53ZWJraXQgKSB7CiAgICAgICAgalF1ZXJ5LmJyb3dzZXIuc2FmYXJpID0gdHJ1
ZTsKfQoKLy8gSUUgZG9lc24ndCBtYXRjaCBub24tYnJlYWtpbmcgc3BhY2VzIHdpdGggXHMKaWYg
KCBybm90d2hpdGUudGVzdCggIlx4QTAiICkgKSB7CiAgICAgICAgdHJpbUxlZnQgPSAvXltcc1x4
QTBdKy87CiAgICAgICAgdHJpbVJpZ2h0ID0gL1tcc1x4QTBdKyQvOwp9CgovLyBBbGwgalF1ZXJ5
IG9iamVjdHMgc2hvdWxkIHBvaW50IGJhY2sgdG8gdGhlc2UKcm9vdGpRdWVyeSA9IGpRdWVyeShk
b2N1bWVudCk7CgovLyBDbGVhbnVwIGZ1bmN0aW9ucyBmb3IgdGhlIGRvY3VtZW50IHJlYWR5IG1l
dGhvZAppZiAoIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIgKSB7CiAgICAgICAgRE9NQ29udGVu
dExvYWRlZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lciggIkRPTUNvbnRlbnRMb2FkZWQiLCBET01Db250ZW50TG9hZGVkLCBmYWxzZSAp
OwogICAgICAgICAgICAgICAgalF1ZXJ5LnJlYWR5KCk7CiAgICAgICAgfTsKCn0gZWxzZSBpZiAo
IGRvY3VtZW50LmF0dGFjaEV2ZW50ICkgewogICAgICAgIERPTUNvbnRlbnRMb2FkZWQgPSBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBib2R5IGV4aXN0cywgYXQgbGVh
c3QsIGluIGNhc2UgSUUgZ2V0cyBhIGxpdHRsZSBvdmVyemVhbG91cyAodGlja2V0ICM1NDQzKS4K
ICAgICAgICAgICAgICAgIGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoICJvbnJlYWR5
c3RhdGVjaGFuZ2UiLCBET01Db250ZW50TG9hZGVkICk7CiAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5yZWFkeSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH07Cn0KCi8vIFRoZSBE
T00gcmVhZHkgY2hlY2sgZm9yIEludGVybmV0IEV4cGxvcmVyCmZ1bmN0aW9uIGRvU2Nyb2xsQ2hl
Y2soKSB7CiAgICAgICAgaWYgKCBqUXVlcnkuaXNSZWFkeSApIHsKICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAvLyBJZiBJRSBp
cyB1c2VkLCB1c2UgdGhlIHRyaWNrIGJ5IERpZWdvIFBlcmluaQogICAgICAgICAgICAgICAgLy8g
aHR0cDovL2phdmFzY3JpcHQubndib3guY29tL0lFQ29udGVudExvYWRlZC8KICAgICAgICAgICAg
ICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpOwogICAgICAgIH0g
Y2F0Y2goZSkgewogICAgICAgICAgICAgICAgc2V0VGltZW91dCggZG9TY3JvbGxDaGVjaywgMSAp
OwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gYW5kIGV4ZWN1
dGUgYW55IHdhaXRpbmcgZnVuY3Rpb25zCiAgICAgICAgalF1ZXJ5LnJlYWR5KCk7Cn0KCnJldHVy
biBqUXVlcnk7Cgp9KSgpOwoKCnZhciAvLyBQcm9taXNlIG1ldGhvZHMKICAgICAgICBwcm9taXNl
TWV0aG9kcyA9ICJkb25lIGZhaWwgaXNSZXNvbHZlZCBpc1JlamVjdGVkIHByb21pc2UgdGhlbiBh
bHdheXMgcGlwZSIuc3BsaXQoICIgIiApLAogICAgICAgIC8vIFN0YXRpYyByZWZlcmVuY2UgdG8g
c2xpY2UKICAgICAgICBzbGljZURlZmVycmVkID0gW10uc2xpY2U7CgpqUXVlcnkuZXh0ZW5kKHsK
ICAgICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgZGVmZXJyZWQgKG9uZSBjYWxsYmFja3MgbGlzdCkK
ICAgICAgICBfRGVmZXJyZWQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIC8vIGNh
bGxiYWNrcyBsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcyA9IFtdLAogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZWQgWyBjb250ZXh0ICwgYXJncyBdCiAgICAgICAg
ICAgICAgICAgICAgICAgIGZpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhdm9p
ZCBmaXJpbmcgd2hlbiBhbHJlYWR5IGRvaW5nIHNvCiAgICAgICAgICAgICAgICAgICAgICAgIGZp
cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmxhZyB0byBrbm93IGlmIHRoZSBkZWZl
cnJlZCBoYXMgYmVlbiBjYW5jZWxsZWQKICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGVk
LAogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZGVmZXJyZWQgaXRzZWxmCiAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmVycmVkICA9IHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZG9uZSggZjEsIGYyLCAuLi4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZG9uZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoICFjYW5jZWxsZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
ZmlyZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZmlyZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX2ZpcmVkID0gZmlyZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyZWQgPSAwOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsZW5ndGggPSBhcmdzLmxlbmd0aDsg
aSA8IGxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW0gPSBhcmdzWyBpIF07CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGpRdWVyeS50eXBlKCBl
bGVtICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCB0eXBlID09PSAiYXJyYXkiICkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQuZG9uZS5hcHBs
eSggZGVmZXJyZWQsIGVsZW0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAiZnVuY3Rpb24iICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FsbGJhY2tzLnB1c2goIGVsZW0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBfZmlyZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgoIF9maXJl
ZFsgMCBdLCBfZmlyZWRbIDEgXSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyByZXNvbHZlIHdpdGggZ2l2ZW4gY29udGV4dCBhbmQgYXJncwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoOiBmdW5jdGlvbiggY29udGV4dCwgYXJn
cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWNhbmNl
bGxlZCAmJiAhZmlyZWQgJiYgIWZpcmluZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGFyZ3MgYXJlIGF2YWlsYWJsZSAoIzg0
MjEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Mg
PSBhcmdzIHx8IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaXJpbmcgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdoaWxlKCBjYWxsYmFja3NbIDAgXSApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5z
aGlmdCgpLmFwcGx5KCBjb250ZXh0LCBhcmdzICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpcmVkID0gWyBjb250ZXh0LCBhcmdzIF07CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyaW5n
ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2
ZSB3aXRoIHRoaXMgYXMgY29udGV4dCBhbmQgZ2l2ZW4gYXJndW1lbnRzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlV2l0aCggdGhpcywgYXJndW1l
bnRzICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhp
czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBIYXMgdGhpcyBkZWZlcnJlZCBiZWVuIHJlc29sdmVkPwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVzb2x2ZWQ6IGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEhKCBmaXJpbmcgfHwgZmly
ZWQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYW5jZWw6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FuY2VsbGVkID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIHJldHVybiBkZWZlcnJlZDsKICAg
ICAgICB9LAoKICAgICAgICAvLyBGdWxsIGZsZWRnZWQgZGVmZXJyZWQgKHR3byBjYWxsYmFja3Mg
bGlzdCkKICAgICAgICBEZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7CiAgICAgICAgICAgICAg
ICB2YXIgZGVmZXJyZWQgPSBqUXVlcnkuX0RlZmVycmVkKCksCiAgICAgICAgICAgICAgICAgICAg
ICAgIGZhaWxEZWZlcnJlZCA9IGpRdWVyeS5fRGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZTsKICAgICAgICAgICAgICAgIC8vIEFkZCBlcnJvckRlZmVycmVkIG1ldGhv
ZHMsIHRoZW4gYW5kIHByb21pc2UKICAgICAgICAgICAgICAgIGpRdWVyeS5leHRlbmQoIGRlZmVy
cmVkLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW46IGZ1bmN0aW9uKCBkb25lQ2FsbGJh
Y2tzLCBmYWlsQ2FsbGJhY2tzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmVycmVkLmRvbmUoIGRvbmVDYWxsYmFja3MgKS5mYWlsKCBmYWlsQ2FsbGJhY2tzICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5czogZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLmRvbmUuYXBwbHko
IGRlZmVycmVkLCBhcmd1bWVudHMgKS5mYWlsLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZmFpbDogZmFp
bERlZmVycmVkLmRvbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdFdpdGg6IGZhaWxE
ZWZlcnJlZC5yZXNvbHZlV2l0aCwKICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0OiBmYWls
RGVmZXJyZWQucmVzb2x2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgaXNSZWplY3RlZDogZmFp
bERlZmVycmVkLmlzUmVzb2x2ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHBpcGU6IGZ1bmN0
aW9uKCBmbkRvbmUsIGZuRmFpbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4galF1ZXJ5LkRlZmVycmVkKGZ1bmN0aW9uKCBuZXdEZWZlciApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6IFsgZm5Eb25lLCAicmVzb2x2
ZSIgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFp
bDogWyBmbkZhaWwsICJyZWplY3QiIF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sIGZ1bmN0aW9uKCBoYW5kbGVyLCBkYXRhICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm4gPSBkYXRhWyAwIF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0g
ZGF0YVsgMSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybmVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBmbiApICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkWyBoYW5k
bGVyIF0oZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5lZCA9IGZuLmFwcGx5KCB0aGlzLCBhcmd1
bWVudHMgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggcmV0dXJuZWQgJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIHJldHVy
bmVkLnByb21pc2UgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQucHJvbWlzZSgpLnRoZW4o
IG5ld0RlZmVyLnJlc29sdmUsIG5ld0RlZmVyLnJlamVjdCApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3RGVmZXJbIGFjdGlvbiArICJXaXRoIiBdKCB0aGlzID09PSBkZWZlcnJl
ZCA/IG5ld0RlZmVyIDogdGhpcywgWyByZXR1cm5lZCBdICk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRb
IGhhbmRsZXIgXSggbmV3RGVmZXJbIGFjdGlvbiBdICk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLnByb21pc2Uo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
R2V0IGEgcHJvbWlzZSBmb3IgdGhpcyBkZWZlcnJlZAogICAgICAgICAgICAgICAgICAgICAgICAv
LyBJZiBvYmogaXMgcHJvdmlkZWQsIHRoZSBwcm9taXNlIGFzcGVjdCBpcyBhZGRlZCB0byB0aGUg
b2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKCBvYmogKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvYmogPT0gbnVsbCApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcHJvbWlzZSApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb21p
c2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlID0gb2JqID0ge307CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBpID0gcHJvbWlzZU1ldGhvZHMubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaWxlKCBpLS0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmpbIHByb21pc2VNZXRob2RzW2ldIF0gPSBkZWZlcnJlZFsgcHJvbWlzZU1ldGhvZHNb
aV0gXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG9iajsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgb25seSBvbmUgY2Fs
bGJhY2sgbGlzdCB3aWxsIGJlIHVzZWQKICAgICAgICAgICAgICAgIGRlZmVycmVkLmRvbmUoIGZh
aWxEZWZlcnJlZC5jYW5jZWwgKS5mYWlsKCBkZWZlcnJlZC5jYW5jZWwgKTsKICAgICAgICAgICAg
ICAgIC8vIFVuZXhwb3NlIGNhbmNlbAogICAgICAgICAgICAgICAgZGVsZXRlIGRlZmVycmVkLmNh
bmNlbDsKICAgICAgICAgICAgICAgIC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnkKICAgICAgICAg
ICAgICAgIGlmICggZnVuYyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy5jYWxsKCBk
ZWZlcnJlZCwgZGVmZXJyZWQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJl
dHVybiBkZWZlcnJlZDsKICAgICAgICB9LAoKICAgICAgICAvLyBEZWZlcnJlZCBoZWxwZXIKICAg
ICAgICB3aGVuOiBmdW5jdGlvbiggZmlyc3RQYXJhbSApIHsKICAgICAgICAgICAgICAgIHZhciBh
cmdzID0gYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gYXJncy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50ID0gbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZCA9IGxl
bmd0aCA8PSAxICYmIGZpcnN0UGFyYW0gJiYgalF1ZXJ5LmlzRnVuY3Rpb24oIGZpcnN0UGFyYW0u
cHJvbWlzZSApID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFBhcmFtIDoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuRGVmZXJyZWQoKTsKICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIHJlc29sdmVGdW5jKCBpICkgewogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oIHZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3NbIGkgXSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2VEZWZlcnJlZC5j
YWxsKCBhcmd1bWVudHMsIDAgKSA6IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggISggLS1jb3VudCApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gU3RyYW5nZSBidWcgaW4gRkY0OgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVmFsdWVzIGNoYW5nZWQgb250byB0aGUgYXJndW1lbnRzIG9iamVj
dCBzb21ldGltZXMgZW5kIHVwIGFzIHVuZGVmaW5lZCB2YWx1ZXMKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIG91dHNpZGUgdGhlICQud2hlbiBtZXRob2QuIENsb25p
bmcgdGhlIG9iamVjdCBpbnRvIGEgZnJlc2ggYXJyYXkgc29sdmVzIHRoZSBpc3N1ZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGRl
ZmVycmVkLCBzbGljZURlZmVycmVkLmNhbGwoIGFyZ3MsIDAgKSApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIGlmICggbGVuZ3RoID4gMSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yKCA7IGkgPCBsZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIGFyZ3NbIGkgXSAmJiBqUXVlcnkuaXNGdW5jdGlvbiggYXJnc1sgaSBd
LnByb21pc2UgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3NbIGkgXS5wcm9taXNlKCkudGhlbiggcmVzb2x2ZUZ1bmMoaSksIGRlZmVycmVkLnJlamVjdCAp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAtLWNvdW50OwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoICFjb3VudCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZl
cnJlZC5yZXNvbHZlV2l0aCggZGVmZXJyZWQsIGFyZ3MgKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICggZGVmZXJyZWQgIT09IGZpcnN0UGFyYW0g
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmVXaXRoKCBkZWZlcnJl
ZCwgbGVuZ3RoID8gWyBmaXJzdFBhcmFtIF0gOiBbXSApOwogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2UoKTsKICAgICAgICB9Cn0pOwoKCgpq
UXVlcnkuc3VwcG9ydCA9IChmdW5jdGlvbigpIHsKCiAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoICJkaXYiICksCiAgICAgICAgICAgICAgICBkb2N1bWVudEVsZW1lbnQg
PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgICAgICBhbGwsCiAgICAgICAg
ICAgICAgICBhLAogICAgICAgICAgICAgICAgc2VsZWN0LAogICAgICAgICAgICAgICAgb3B0LAog
ICAgICAgICAgICAgICAgaW5wdXQsCiAgICAgICAgICAgICAgICBtYXJnaW5EaXYsCiAgICAgICAg
ICAgICAgICBzdXBwb3J0LAogICAgICAgICAgICAgICAgZnJhZ21lbnQsCiAgICAgICAgICAgICAg
ICBib2R5LAogICAgICAgICAgICAgICAgdGVzdEVsZW1lbnRQYXJlbnQsCiAgICAgICAgICAgICAg
ICB0ZXN0RWxlbWVudCwKICAgICAgICAgICAgICAgIHRlc3RFbGVtZW50U3R5bGUsCiAgICAgICAg
ICAgICAgICB0ZHMsCiAgICAgICAgICAgICAgICBldmVudHMsCiAgICAgICAgICAgICAgICBldmVu
dE5hbWUsCiAgICAgICAgICAgICAgICBpLAogICAgICAgICAgICAgICAgaXNTdXBwb3J0ZWQ7Cgog
ICAgICAgIC8vIFByZWxpbWluYXJ5IHRlc3RzCiAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgiY2xh
c3NOYW1lIiwgInQiKTsKICAgICAgICBkaXYuaW5uZXJIVE1MID0gIiAgIDxsaW5rLz48dGFibGU+
PC90YWJsZT48YSBocmVmPScvYScgc3R5bGU9J3RvcDoxcHg7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41
NTsnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IjsKCgogICAgICAgIGFsbCA9IGRpdi5n
ZXRFbGVtZW50c0J5VGFnTmFtZSggIioiICk7CiAgICAgICAgYSA9IGRpdi5nZXRFbGVtZW50c0J5
VGFnTmFtZSggImEiIClbIDAgXTsKCiAgICAgICAgLy8gQ2FuJ3QgZ2V0IGJhc2ljIHRlc3Qgc3Vw
cG9ydAogICAgICAgIGlmICggIWFsbCB8fCAhYWxsLmxlbmd0aCB8fCAhYSApIHsKICAgICAgICAg
ICAgICAgIHJldHVybiB7fTsKICAgICAgICB9CgogICAgICAgIC8vIEZpcnN0IGJhdGNoIG9mIHN1
cHBvcnRzIHRlc3RzCiAgICAgICAgc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggInNl
bGVjdCIgKTsKICAgICAgICBvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIm9wdGlvbiIpICk7CiAgICAgICAgaW5wdXQgPSBkaXYuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoICJpbnB1dCIgKVsgMCBdOwoKICAgICAgICBzdXBwb3J0ID0gewogICAgICAgICAgICAg
ICAgLy8gSUUgc3RyaXBzIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIC5pbm5lckhUTUwgaXMgdXNl
ZAogICAgICAgICAgICAgICAgbGVhZGluZ1doaXRlc3BhY2U6ICggZGl2LmZpcnN0Q2hpbGQubm9k
ZVR5cGUgPT09IDMgKSwKCiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0Ym9keSBl
bGVtZW50cyBhcmVuJ3QgYXV0b21hdGljYWxseSBpbnNlcnRlZAogICAgICAgICAgICAgICAgLy8g
SUUgd2lsbCBpbnNlcnQgdGhlbSBpbnRvIGVtcHR5IHRhYmxlcwogICAgICAgICAgICAgICAgdGJv
ZHk6ICFkaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICJ0Ym9keSIgKS5sZW5ndGgsCgogICAgICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgbGluayBlbGVtZW50cyBnZXQgc2VyaWFsaXplZCBj
b3JyZWN0bHkgYnkgaW5uZXJIVE1MCiAgICAgICAgICAgICAgICAvLyBUaGlzIHJlcXVpcmVzIGEg
d3JhcHBlciBlbGVtZW50IGluIElFCiAgICAgICAgICAgICAgICBodG1sU2VyaWFsaXplOiAhIWRp
di5nZXRFbGVtZW50c0J5VGFnTmFtZSggImxpbmsiICkubGVuZ3RoLAoKICAgICAgICAgICAgICAg
IC8vIEdldCB0aGUgc3R5bGUgaW5mb3JtYXRpb24gZnJvbSBnZXRBdHRyaWJ1dGUKICAgICAgICAg
ICAgICAgIC8vIChJRSB1c2VzIC5jc3NUZXh0IGluc3RlYWQpCiAgICAgICAgICAgICAgICBzdHls
ZTogL3RvcC8udGVzdCggYS5nZXRBdHRyaWJ1dGUoInN0eWxlIikgKSwKCiAgICAgICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCBVUkxzIGFyZW4ndCBtYW5pcHVsYXRlZAogICAgICAgICAgICAg
ICAgLy8gKElFIG5vcm1hbGl6ZXMgaXQgYnkgZGVmYXVsdCkKICAgICAgICAgICAgICAgIGhyZWZO
b3JtYWxpemVkOiAoIGEuZ2V0QXR0cmlidXRlKCAiaHJlZiIgKSA9PT0gIi9hIiApLAoKICAgICAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGVsZW1lbnQgb3BhY2l0eSBleGlzdHMKICAgICAg
ICAgICAgICAgIC8vIChJRSB1c2VzIGZpbHRlciBpbnN0ZWFkKQogICAgICAgICAgICAgICAgLy8g
VXNlIGEgcmVnZXggdG8gd29yayBhcm91bmQgYSBXZWJLaXQgaXNzdWUuIFNlZSAjNTE0NQogICAg
ICAgICAgICAgICAgb3BhY2l0eTogL14wLjU1JC8udGVzdCggYS5zdHlsZS5vcGFjaXR5ICksCgog
ICAgICAgICAgICAgICAgLy8gVmVyaWZ5IHN0eWxlIGZsb2F0IGV4aXN0ZW5jZQogICAgICAgICAg
ICAgICAgLy8gKElFIHVzZXMgc3R5bGVGbG9hdCBpbnN0ZWFkIG9mIGNzc0Zsb2F0KQogICAgICAg
ICAgICAgICAgY3NzRmxvYXQ6ICEhYS5zdHlsZS5jc3NGbG9hdCwKCiAgICAgICAgICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCBpZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQgZm9yIGEgY2hlY2tib3gK
ICAgICAgICAgICAgICAgIC8vIHRoYXQgaXQgZGVmYXVsdHMgdG8gIm9uIi4KICAgICAgICAgICAg
ICAgIC8vIChXZWJLaXQgZGVmYXVsdHMgdG8gIiIgaW5zdGVhZCkKICAgICAgICAgICAgICAgIGNo
ZWNrT246ICggaW5wdXQudmFsdWUgPT09ICJvbiIgKSwKCiAgICAgICAgICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCBhIHNlbGVjdGVkLWJ5LWRlZmF1bHQgb3B0aW9uIGhhcyBhIHdvcmtpbmcgc2Vs
ZWN0ZWQgcHJvcGVydHkuCiAgICAgICAgICAgICAgICAvLyAoV2ViS2l0IGRlZmF1bHRzIHRvIGZh
bHNlIGluc3RlYWQgb2YgdHJ1ZSwgSUUgdG9vLCBpZiBpdCdzIGluIGFuIG9wdGdyb3VwKQogICAg
ICAgICAgICAgICAgb3B0U2VsZWN0ZWQ6IG9wdC5zZWxlY3RlZCwKCiAgICAgICAgICAgICAgICAv
LyBUZXN0IHNldEF0dHJpYnV0ZSBvbiBjYW1lbENhc2UgY2xhc3MuIElmIGl0IHdvcmtzLCB3ZSBu
ZWVkIGF0dHJGaXhlcyB3aGVuIGRvaW5nIGdldC9zZXRBdHRyaWJ1dGUgKGllNi83KQogICAgICAg
ICAgICAgICAgZ2V0U2V0QXR0cmlidXRlOiBkaXYuY2xhc3NOYW1lICE9PSAidCIsCgogICAgICAg
ICAgICAgICAgLy8gV2lsbCBiZSBkZWZpbmVkIGxhdGVyCiAgICAgICAgICAgICAgICBzdWJtaXRC
dWJibGVzOiB0cnVlLAogICAgICAgICAgICAgICAgY2hhbmdlQnViYmxlczogdHJ1ZSwKICAgICAg
ICAgICAgICAgIGZvY3VzaW5CdWJibGVzOiBmYWxzZSwKICAgICAgICAgICAgICAgIGRlbGV0ZUV4
cGFuZG86IHRydWUsCiAgICAgICAgICAgICAgICBub0Nsb25lRXZlbnQ6IHRydWUsCiAgICAgICAg
ICAgICAgICBpbmxpbmVCbG9ja05lZWRzTGF5b3V0OiBmYWxzZSwKICAgICAgICAgICAgICAgIHNo
cmlua1dyYXBCbG9ja3M6IGZhbHNlLAogICAgICAgICAgICAgICAgcmVsaWFibGVNYXJnaW5SaWdo
dDogdHJ1ZQogICAgICAgIH07CgogICAgICAgIC8vIE1ha2Ugc3VyZSBjaGVja2VkIHN0YXR1cyBp
cyBwcm9wZXJseSBjbG9uZWQKICAgICAgICBpbnB1dC5jaGVja2VkID0gdHJ1ZTsKICAgICAgICBz
dXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gaW5wdXQuY2xvbmVOb2RlKCB0cnVlICkuY2hlY2tlZDsK
CiAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIG9wdGlvbnMgaW5zaWRlIGRpc2FibGVkIHNl
bGVjdHMgYXJlbid0IG1hcmtlZCBhcyBkaXNhYmxlZAogICAgICAgIC8vIChXZWJLaXQgbWFya3Mg
dGhlbSBhcyBkaXNhYmxlZCkKICAgICAgICBzZWxlY3QuZGlzYWJsZWQgPSB0cnVlOwogICAgICAg
IHN1cHBvcnQub3B0RGlzYWJsZWQgPSAhb3B0LmRpc2FibGVkOwoKICAgICAgICAvLyBUZXN0IHRv
IHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvIGRlbGV0ZSBhbiBleHBhbmRvIGZyb20gYW4gZWxlbWVu
dAogICAgICAgIC8vIEZhaWxzIGluIEludGVybmV0IEV4cGxvcmVyCiAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgIGRlbGV0ZSBkaXYudGVzdDsKICAgICAgICB9IGNhdGNoKCBlICkgewogICAg
ICAgICAgICAgICAgc3VwcG9ydC5kZWxldGVFeHBhbmRvID0gZmFsc2U7CiAgICAgICAgfQoKICAg
ICAgICBpZiAoICFkaXYuYWRkRXZlbnRMaXN0ZW5lciAmJiBkaXYuYXR0YWNoRXZlbnQgJiYgZGl2
LmZpcmVFdmVudCApIHsKICAgICAgICAgICAgICAgIGRpdi5hdHRhY2hFdmVudCggIm9uY2xpY2si
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvbmluZyBhIG5vZGUg
c2hvdWxkbid0IGNvcHkgb3ZlciBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYm91bmQg
ZXZlbnQgaGFuZGxlcnMgKElFIGRvZXMgdGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cG9ydC5ub0Nsb25lRXZlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgZGl2LmNsb25lTm9kZSggdHJ1ZSApLmZpcmVFdmVudCggIm9uY2xpY2siICk7CiAgICAg
ICAgfQoKICAgICAgICAvLyBDaGVjayBpZiBhIHJhZGlvIG1haW50YWlucyBpdCdzIHZhbHVlCiAg
ICAgICAgLy8gYWZ0ZXIgYmVpbmcgYXBwZW5kZWQgdG8gdGhlIERPTQogICAgICAgIGlucHV0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC52YWx1ZSA9ICJ0
IjsKICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAicmFkaW8iKTsKICAgICAgICBz
dXBwb3J0LnJhZGlvVmFsdWUgPSBpbnB1dC52YWx1ZSA9PT0gInQiOwoKICAgICAgICBpbnB1dC5z
ZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCAiY2hlY2tlZCIpOwogICAgICAgIGRpdi5hcHBlbmRDaGls
ZCggaW5wdXQgKTsKICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJh
Z21lbnQoKTsKICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZCggZGl2LmZpcnN0Q2hpbGQgKTsK
CiAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkg
aW4gZnJhZ21lbnRzCiAgICAgICAgc3VwcG9ydC5jaGVja0Nsb25lID0gZnJhZ21lbnQuY2xvbmVO
b2RlKCB0cnVlICkuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmNoZWNrZWQ7CgogICAgICAg
IGRpdi5pbm5lckhUTUwgPSAiIjsKCiAgICAgICAgLy8gRmlndXJlIG91dCBpZiB0aGUgVzNDIGJv
eCBtb2RlbCB3b3JrcyBhcyBleHBlY3RlZAogICAgICAgIGRpdi5zdHlsZS53aWR0aCA9IGRpdi5z
dHlsZS5wYWRkaW5nTGVmdCA9ICIxcHgiOwoKICAgICAgICBib2R5ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoICJib2R5IiApWyAwIF07CiAgICAgICAgLy8gV2UgdXNlIG91ciBvd24s
IGludmlzaWJsZSwgYm9keSB1bmxlc3MgdGhlIGJvZHkgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAg
ICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSB1c2UgYSBkaXYgKCM5MjM5KQogICAgICAgIHRlc3RFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggYm9keSA/ICJkaXYiIDogImJvZHkiICk7CiAg
ICAgICAgdGVzdEVsZW1lbnRTdHlsZSA9IHsKICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6ICJo
aWRkZW4iLAogICAgICAgICAgICAgICAgd2lkdGg6IDAsCiAgICAgICAgICAgICAgICBoZWlnaHQ6
IDAsCiAgICAgICAgICAgICAgICBib3JkZXI6IDAsCiAgICAgICAgICAgICAgICBtYXJnaW46IDAs
CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAibm9uZSIKICAgICAgICB9OwogICAgICAgIGlm
ICggYm9keSApIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5leHRlbmQoIHRlc3RFbGVtZW50U3R5
bGUsIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICJhYnNvbHV0ZSIsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnQ6ICItMTAwMHB4IiwKICAgICAgICAgICAgICAgICAgICAg
ICAgdG9wOiAiLTEwMDBweCIKICAgICAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBm
b3IgKCBpIGluIHRlc3RFbGVtZW50U3R5bGUgKSB7CiAgICAgICAgICAgICAgICB0ZXN0RWxlbWVu
dC5zdHlsZVsgaSBdID0gdGVzdEVsZW1lbnRTdHlsZVsgaSBdOwogICAgICAgIH0KICAgICAgICB0
ZXN0RWxlbWVudC5hcHBlbmRDaGlsZCggZGl2ICk7CiAgICAgICAgdGVzdEVsZW1lbnRQYXJlbnQg
PSBib2R5IHx8IGRvY3VtZW50RWxlbWVudDsKICAgICAgICB0ZXN0RWxlbWVudFBhcmVudC5pbnNl
cnRCZWZvcmUoIHRlc3RFbGVtZW50LCB0ZXN0RWxlbWVudFBhcmVudC5maXJzdENoaWxkICk7Cgog
ICAgICAgIC8vIENoZWNrIGlmIGEgZGlzY29ubmVjdGVkIGNoZWNrYm94IHdpbGwgcmV0YWluIGl0
cyBjaGVja2VkCiAgICAgICAgLy8gdmFsdWUgb2YgdHJ1ZSBhZnRlciBhcHBlbmRlZCB0byB0aGUg
RE9NIChJRTYvNykKICAgICAgICBzdXBwb3J0LmFwcGVuZENoZWNrZWQgPSBpbnB1dC5jaGVja2Vk
OwoKICAgICAgICBzdXBwb3J0LmJveE1vZGVsID0gZGl2Lm9mZnNldFdpZHRoID09PSAyOwoKICAg
ICAgICBpZiAoICJ6b29tIiBpbiBkaXYuc3R5bGUgKSB7CiAgICAgICAgICAgICAgICAvLyBDaGVj
ayBpZiBuYXRpdmVseSBibG9jay1sZXZlbCBlbGVtZW50cyBhY3QgbGlrZSBpbmxpbmUtYmxvY2sK
ICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRzIHdoZW4gc2V0dGluZyB0aGVpciBkaXNwbGF5IHRv
ICdpbmxpbmUnIGFuZCBnaXZpbmcKICAgICAgICAgICAgICAgIC8vIHRoZW0gbGF5b3V0CiAgICAg
ICAgICAgICAgICAvLyAoSUUgPCA4IGRvZXMgdGhpcykKICAgICAgICAgICAgICAgIGRpdi5zdHls
ZS5kaXNwbGF5ID0gImlubGluZSI7CiAgICAgICAgICAgICAgICBkaXYuc3R5bGUuem9vbSA9IDE7
CiAgICAgICAgICAgICAgICBzdXBwb3J0LmlubGluZUJsb2NrTmVlZHNMYXlvdXQgPSAoIGRpdi5v
ZmZzZXRXaWR0aCA9PT0gMiApOwoKICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGVsZW1lbnRz
IHdpdGggbGF5b3V0IHNocmluay13cmFwIHRoZWlyIGNoaWxkcmVuCiAgICAgICAgICAgICAgICAv
LyAoSUUgNiBkb2VzIHRoaXMpCiAgICAgICAgICAgICAgICBkaXYuc3R5bGUuZGlzcGxheSA9ICIi
OwogICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9ICI8ZGl2IHN0eWxlPSd3aWR0aDo0cHg7
Jz48L2Rpdj4iOwogICAgICAgICAgICAgICAgc3VwcG9ydC5zaHJpbmtXcmFwQmxvY2tzID0gKCBk
aXYub2Zmc2V0V2lkdGggIT09IDIgKTsKICAgICAgICB9CgogICAgICAgIGRpdi5pbm5lckhUTUwg
PSAiPHRhYmxlPjx0cj48dGQgc3R5bGU9J3BhZGRpbmc6MDtib3JkZXI6MDtkaXNwbGF5Om5vbmUn
PjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iOwogICAgICAgIHRkcyA9IGRpdi5nZXRFbGVt
ZW50c0J5VGFnTmFtZSggInRkIiApOwoKICAgICAgICAvLyBDaGVjayBpZiB0YWJsZSBjZWxscyBz
dGlsbCBoYXZlIG9mZnNldFdpZHRoL0hlaWdodCB3aGVuIHRoZXkgYXJlIHNldAogICAgICAgIC8v
IHRvIGRpc3BsYXk6bm9uZSBhbmQgdGhlcmUgYXJlIHN0aWxsIG90aGVyIHZpc2libGUgdGFibGUg
Y2VsbHMgaW4gYQogICAgICAgIC8vIHRhYmxlIHJvdzsgaWYgc28sIG9mZnNldFdpZHRoL0hlaWdo
dCBhcmUgbm90IHJlbGlhYmxlIGZvciB1c2Ugd2hlbgogICAgICAgIC8vIGRldGVybWluaW5nIGlm
IGFuIGVsZW1lbnQgaGFzIGJlZW4gaGlkZGVuIGRpcmVjdGx5IHVzaW5nCiAgICAgICAgLy8gZGlz
cGxheTpub25lIChpdCBpcyBzdGlsbCBzYWZlIHRvIHVzZSBvZmZzZXRzIGlmIGEgcGFyZW50IGVs
ZW1lbnQgaXMKICAgICAgICAvLyBoaWRkZW47IGRvbiBzYWZldHkgZ29nZ2xlcyBhbmQgc2VlIGJ1
ZyAjNDUxMiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCiAgICAgICAgLy8gKG9ubHkgSUUgOCBmYWls
cyB0aGlzIHRlc3QpCiAgICAgICAgaXNTdXBwb3J0ZWQgPSAoIHRkc1sgMCBdLm9mZnNldEhlaWdo
dCA9PT0gMCApOwoKICAgICAgICB0ZHNbIDAgXS5zdHlsZS5kaXNwbGF5ID0gIiI7CiAgICAgICAg
dGRzWyAxIF0uc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCiAgICAgICAgLy8gQ2hlY2sgaWYgZW1w
dHkgdGFibGUgY2VsbHMgc3RpbGwgaGF2ZSBvZmZzZXRXaWR0aC9IZWlnaHQKICAgICAgICAvLyAo
SUUgPCA4IGZhaWwgdGhpcyB0ZXN0KQogICAgICAgIHN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZz
ZXRzID0gaXNTdXBwb3J0ZWQgJiYgKCB0ZHNbIDAgXS5vZmZzZXRIZWlnaHQgPT09IDAgKTsKICAg
ICAgICBkaXYuaW5uZXJIVE1MID0gIiI7CgogICAgICAgIC8vIENoZWNrIGlmIGRpdiB3aXRoIGV4
cGxpY2l0IHdpZHRoIGFuZCBubyBtYXJnaW4tcmlnaHQgaW5jb3JyZWN0bHkKICAgICAgICAvLyBn
ZXRzIGNvbXB1dGVkIG1hcmdpbi1yaWdodCBiYXNlZCBvbiB3aWR0aCBvZiBjb250YWluZXIuIEZv
ciBtb3JlCiAgICAgICAgLy8gaW5mbyBzZWUgYnVnICMzMzMzCiAgICAgICAgLy8gRmFpbHMgaW4g
V2ViS2l0IGJlZm9yZSBGZWIgMjAxMSBuaWdodGxpZXMKICAgICAgICAvLyBXZWJLaXQgQnVnIDEz
MzQzIC0gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHdyb25nIHZhbHVlIGZvciBtYXJnaW4tcmln
aHQKICAgICAgICBpZiAoIGRvY3VtZW50LmRlZmF1bHRWaWV3ICYmIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUgKSB7CiAgICAgICAgICAgICAgICBtYXJnaW5EaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCAiZGl2IiApOwogICAgICAgICAgICAgICAgbWFyZ2luRGl2LnN0
eWxlLndpZHRoID0gIjAiOwogICAgICAgICAgICAgICAgbWFyZ2luRGl2LnN0eWxlLm1hcmdpblJp
Z2h0ID0gIjAiOwogICAgICAgICAgICAgICAgZGl2LmFwcGVuZENoaWxkKCBtYXJnaW5EaXYgKTsK
ICAgICAgICAgICAgICAgIHN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodCA9CiAgICAgICAgICAg
ICAgICAgICAgICAgICggcGFyc2VJbnQoICggZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZSggbWFyZ2luRGl2LCBudWxsICkgfHwgeyBtYXJnaW5SaWdodDogMCB9ICkubWFyZ2lu
UmlnaHQsIDEwICkgfHwgMCApID09PSAwOwogICAgICAgIH0KCiAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBib2R5IGVsZW1lbnQgd2UgYWRkZWQKICAgICAgICB0ZXN0RWxlbWVudC5pbm5lckhUTUwgPSAi
IjsKICAgICAgICB0ZXN0RWxlbWVudFBhcmVudC5yZW1vdmVDaGlsZCggdGVzdEVsZW1lbnQgKTsK
CiAgICAgICAgLy8gVGVjaG5pcXVlIGZyb20gSnVyaXkgWmF5dHNldgogICAgICAgIC8vIGh0dHA6
Ly90aGlua3dlYjIuY29tL3Byb2plY3RzL3Byb3RvdHlwZS9kZXRlY3RpbmctZXZlbnQtc3VwcG9y
dC13aXRob3V0LWJyb3dzZXItc25pZmZpbmcvCiAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0
IHRoZSBjYXNlIHdoZXJlIG5vbi1zdGFuZGFyZCBldmVudCBzeXN0ZW1zCiAgICAgICAgLy8gYXJl
IHVzZWQsIG5hbWVseSBpbiBJRS4gU2hvcnQtY2lyY3VpdGluZyBoZXJlIGhlbHBzIHVzIHRvCiAg
ICAgICAgLy8gYXZvaWQgYW4gZXZhbCBjYWxsIChpbiBzZXRBdHRyaWJ1dGUpIHdoaWNoIGNhbiBj
YXVzZSBDU1AKICAgICAgICAvLyB0byBnbyBoYXl3aXJlLiBTZWU6IGh0dHBzOi8vZGV2ZWxvcGVy
Lm1vemlsbGEub3JnL2VuL1NlY3VyaXR5L0NTUAogICAgICAgIGlmICggZGl2LmF0dGFjaEV2ZW50
ICkgewogICAgICAgICAgICAgICAgZm9yKCBpIGluIHsKICAgICAgICAgICAgICAgICAgICAgICAg
c3VibWl0OiAxLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgIGZvY3VzaW46IDEKICAgICAgICAgICAgICAgIH0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50TmFtZSA9ICJvbiIgKyBpOwogICAgICAgICAgICAgICAgICAgICAg
ICBpc1N1cHBvcnRlZCA9ICggZXZlbnROYW1lIGluIGRpdiApOwogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoICFpc1N1cHBvcnRlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXYuc2V0QXR0cmlidXRlKCBldmVudE5hbWUsICJyZXR1cm47IiApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzU3VwcG9ydGVkID0gKCB0eXBlb2YgZGl2WyBldmVudE5hbWUg
XSA9PT0gImZ1bmN0aW9uIiApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgIHN1cHBvcnRbIGkgKyAiQnViYmxlcyIgXSA9IGlzU3VwcG9ydGVkOwogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gTnVsbCBjb25uZWN0ZWQgZWxlbWVu
dHMgdG8gYXZvaWQgbGVha3MgaW4gSUUKICAgICAgICB0ZXN0RWxlbWVudCA9IGZyYWdtZW50ID0g
c2VsZWN0ID0gb3B0ID0gYm9keSA9IG1hcmdpbkRpdiA9IGRpdiA9IGlucHV0ID0gbnVsbDsKCiAg
ICAgICAgcmV0dXJuIHN1cHBvcnQ7Cn0pKCk7CgovLyBLZWVwIHRyYWNrIG9mIGJveE1vZGVsCmpR
dWVyeS5ib3hNb2RlbCA9IGpRdWVyeS5zdXBwb3J0LmJveE1vZGVsOwoKCgoKdmFyIHJicmFjZSA9
IC9eKD86XHsuKlx9fFxbLipcXSkkLywKICAgICAgICBybXVsdGlEYXNoID0gLyhbQS1aXSkvZzsK
CmpRdWVyeS5leHRlbmQoewogICAgICAgIGNhY2hlOiB7fSwKCiAgICAgICAgLy8gUGxlYXNlIHVz
ZSB3aXRoIGNhdXRpb24KICAgICAgICB1dWlkOiAwLAoKICAgICAgICAvLyBVbmlxdWUgZm9yIGVh
Y2ggY29weSBvZiBqUXVlcnkgb24gdGhlIHBhZ2UKICAgICAgICAvLyBOb24tZGlnaXRzIHJlbW92
ZWQgdG8gbWF0Y2ggcmlubGluZWpRdWVyeQogICAgICAgIGV4cGFuZG86ICJqUXVlcnkiICsgKCBq
UXVlcnkuZm4uanF1ZXJ5ICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cRC9nLCAiIiApLAoK
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGVsZW1lbnRzIHRocm93IHVuY2F0Y2hhYmxlIGV4Y2Vw
dGlvbnMgaWYgeW91CiAgICAgICAgLy8gYXR0ZW1wdCB0byBhZGQgZXhwYW5kbyBwcm9wZXJ0aWVz
IHRvIHRoZW0uCiAgICAgICAgbm9EYXRhOiB7CiAgICAgICAgICAgICAgICAiZW1iZWQiOiB0cnVl
LAogICAgICAgICAgICAgICAgLy8gQmFuIGFsbCBvYmplY3RzIGV4Y2VwdCBmb3IgRmxhc2ggKHdo
aWNoIGhhbmRsZSBleHBhbmRvcykKICAgICAgICAgICAgICAgICJvYmplY3QiOiAiY2xzaWQ6RDI3
Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiwKICAgICAgICAgICAgICAgICJhcHBs
ZXQiOiB0cnVlCiAgICAgICAgfSwKCiAgICAgICAgaGFzRGF0YTogZnVuY3Rpb24oIGVsZW0gKSB7
CiAgICAgICAgICAgICAgICBlbGVtID0gZWxlbS5ub2RlVHlwZSA/IGpRdWVyeS5jYWNoZVsgZWxl
bVtqUXVlcnkuZXhwYW5kb10gXSA6IGVsZW1bIGpRdWVyeS5leHBhbmRvIF07CgogICAgICAgICAg
ICAgICAgcmV0dXJuICEhZWxlbSAmJiAhaXNFbXB0eURhdGFPYmplY3QoIGVsZW0gKTsKICAgICAg
ICB9LAoKICAgICAgICBkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSwgcHZ0IC8qIElu
dGVybmFsIFVzZSBPbmx5ICovICkgewogICAgICAgICAgICAgICAgaWYgKCAhalF1ZXJ5LmFjY2Vw
dERhdGEoIGVsZW0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciB0aGlzQ2FjaGUsIHJldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ZXJuYWxLZXkgPSBqUXVlcnkuZXhwYW5kbywKICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0QnlOYW1lID0gdHlwZW9mIG5hbWUgPT09ICJzdHJpbmciLAoKICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBoYW5kbGUgRE9NIG5vZGVzIGFuZCBKUyBv
YmplY3RzIGRpZmZlcmVudGx5IGJlY2F1c2UgSUU2LTcKICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gY2FuJ3QgR0Mgb2JqZWN0IHJlZmVyZW5jZXMgcHJvcGVybHkgYWNyb3NzIHRoZSBET00tSlMg
Ym91bmRhcnkKICAgICAgICAgICAgICAgICAgICAgICAgaXNOb2RlID0gZWxlbS5ub2RlVHlwZSwK
CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgRE9NIG5vZGVzIG5lZWQgdGhlIGdsb2Jh
bCBqUXVlcnkgY2FjaGU7IEpTIG9iamVjdCBkYXRhIGlzCiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoZSBvYmplY3Qgc28gR0MgY2FuIG9jY3VyIGF1dG9t
YXRpY2FsbHkKICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgPSBpc05vZGUgPyBqUXVlcnku
Y2FjaGUgOiBlbGVtLAoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSBkZWZpbmluZyBh
biBJRCBmb3IgSlMgb2JqZWN0cyBpZiBpdHMgY2FjaGUgYWxyZWFkeSBleGlzdHMgYWxsb3dzCiAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb2RlIHRvIHNob3J0Y3V0IG9uIHRoZSBzYW1l
IHBhdGggYXMgYSBET00gbm9kZSB3aXRoIG5vIGNhY2hlCiAgICAgICAgICAgICAgICAgICAgICAg
IGlkID0gaXNOb2RlID8gZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXSA6IGVsZW1bIGpRdWVyeS5leHBh
bmRvIF0gJiYgalF1ZXJ5LmV4cGFuZG87CgogICAgICAgICAgICAgICAgLy8gQXZvaWQgZG9pbmcg
YW55IG1vcmUgd29yayB0aGFuIHdlIG5lZWQgdG8gd2hlbiB0cnlpbmcgdG8gZ2V0IGRhdGEgb24g
YW4KICAgICAgICAgICAgICAgIC8vIG9iamVjdCB0aGF0IGhhcyBubyBkYXRhIGF0IGFsbAogICAg
ICAgICAgICAgICAgaWYgKCAoIWlkIHx8IChwdnQgJiYgaWQgJiYgKGNhY2hlWyBpZCBdICYmICFj
YWNoZVsgaWQgXVsgaW50ZXJuYWxLZXkgXSkpKSAmJiBnZXRCeU5hbWUgJiYgZGF0YSA9PT0gdW5k
ZWZpbmVkICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgaWYgKCAhaWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIE9ubHkgRE9NIG5vZGVzIG5lZWQgYSBuZXcgdW5pcXVlIElEIGZvciBlYWNoIGVsZW1lbnQg
c2luY2UgdGhlaXIgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmRzIHVwIGluIHRo
ZSBnbG9iYWwgY2FjaGUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBpc05vZGUgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXSA9IGlk
ID0gKytqUXVlcnkudXVpZDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IGpRdWVyeS5leHBhbmRvOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAh
Y2FjaGVbIGlkIF0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlWyBpZCBdID0ge307
CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIGEgaGFjayBmb3IgMS41
IE9OTFkuIEF2b2lkcyBleHBvc2luZyBqUXVlcnkKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
bWV0YWRhdGEgb24gcGxhaW4gSlMgb2JqZWN0cyB3aGVuIHRoZSBvYmplY3QgaXMgc2VyaWFsaXpl
ZCB1c2luZwogICAgICAgICAgICAgICAgICAgICAgICAvLyBKU09OLnN0cmluZ2lmeQogICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoICFpc05vZGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FjaGVbIGlkIF0udG9KU09OID0galF1ZXJ5Lm5vb3A7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBBbiBvYmpl
Y3QgY2FuIGJlIHBhc3NlZCB0byBqUXVlcnkuZGF0YSBpbnN0ZWFkIG9mIGEga2V5L3ZhbHVlIHBh
aXI7IHRoaXMgZ2V0cwogICAgICAgICAgICAgICAgLy8gc2hhbGxvdyBjb3BpZWQgb3ZlciBvbnRv
IHRoZSBleGlzdGluZyBjYWNoZQogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgbmFtZSA9PT0g
Im9iamVjdCIgfHwgdHlwZW9mIG5hbWUgPT09ICJmdW5jdGlvbiIgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggcHZ0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
Y2hlWyBpZCBdWyBpbnRlcm5hbEtleSBdID0galF1ZXJ5LmV4dGVuZChjYWNoZVsgaWQgXVsgaW50
ZXJuYWxLZXkgXSwgbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVbIGlkIF0gPSBqUXVlcnkuZXh0ZW5kKGNh
Y2hlWyBpZCBdLCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIHRoaXNDYWNoZSA9IGNhY2hlWyBpZCBdOwoKICAgICAgICAg
ICAgICAgIC8vIEludGVybmFsIGpRdWVyeSBkYXRhIGlzIHN0b3JlZCBpbiBhIHNlcGFyYXRlIG9i
amVjdCBpbnNpZGUgdGhlIG9iamVjdCdzIGRhdGEKICAgICAgICAgICAgICAgIC8vIGNhY2hlIGlu
IG9yZGVyIHRvIGF2b2lkIGtleSBjb2xsaXNpb25zIGJldHdlZW4gaW50ZXJuYWwgZGF0YSBhbmQg
dXNlci1kZWZpbmVkCiAgICAgICAgICAgICAgICAvLyBkYXRhCiAgICAgICAgICAgICAgICBpZiAo
IHB2dCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhdGhpc0NhY2hlWyBpbnRlcm5h
bEtleSBdICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNDYWNoZVsgaW50
ZXJuYWxLZXkgXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzQ2FjaGUgPSB0aGlzQ2FjaGVbIGludGVybmFsS2V5IF07CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXNDYWNoZVsgalF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSAp
IF0gPSBkYXRhOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFRPRE86IFRo
aXMgaXMgYSBoYWNrIGZvciAxLjUgT05MWS4gSXQgd2lsbCBiZSByZW1vdmVkIGluIDEuNi4gVXNl
cnMgc2hvdWxkCiAgICAgICAgICAgICAgICAvLyBub3QgYXR0ZW1wdCB0byBpbnNwZWN0IHRoZSBp
bnRlcm5hbCBldmVudHMgb2JqZWN0IHVzaW5nIGpRdWVyeS5kYXRhLCBhcyB0aGlzCiAgICAgICAg
ICAgICAgICAvLyBpbnRlcm5hbCBkYXRhIG9iamVjdCBpcyB1bmRvY3VtZW50ZWQgYW5kIHN1Ympl
Y3QgdG8gY2hhbmdlLgogICAgICAgICAgICAgICAgaWYgKCBuYW1lID09PSAiZXZlbnRzIiAmJiAh
dGhpc0NhY2hlW25hbWVdICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc0Nh
Y2hlWyBpbnRlcm5hbEtleSBdICYmIHRoaXNDYWNoZVsgaW50ZXJuYWxLZXkgXS5ldmVudHM7CiAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGJvdGggY29udmVy
dGVkLXRvLWNhbWVsIGFuZCBub24tY29udmVydGVkIGRhdGEgcHJvcGVydHkgbmFtZXMKICAgICAg
ICAgICAgICAgIC8vIElmIGEgZGF0YSBwcm9wZXJ0eSB3YXMgc3BlY2lmaWVkCiAgICAgICAgICAg
ICAgICBpZiAoIGdldEJ5TmFtZSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0
IFRyeSB0byBmaW5kIGFzLWlzIHByb3BlcnR5IGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0ID0gdGhpc0NhY2hlWyBuYW1lIF07CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXN0
IGZvciBudWxsfHVuZGVmaW5lZCBwcm9wZXJ0eSBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggcmV0ID09IG51bGwgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRyeSB0byBmaW5kIHRoZSBjYW1lbENhc2VkIHByb3BlcnR5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0ID0gdGhpc0NhY2hlWyBqUXVlcnkuY2FtZWxDYXNlKCBuYW1lICkgXTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0ID0gdGhpc0NhY2hlOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgfSwKCiAgICAgICAgcmVtb3ZlRGF0YTog
ZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHB2dCAvKiBJbnRlcm5hbCBVc2UgT25seSAqLyApIHsKICAg
ICAgICAgICAgICAgIGlmICggIWpRdWVyeS5hY2NlcHREYXRhKCBlbGVtICkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICB2YXIgdGhpc0NhY2hlLAoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVmZXJlbmNlIHRv
IGludGVybmFsIGRhdGEgY2FjaGUga2V5CiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFs
S2V5ID0galF1ZXJ5LmV4cGFuZG8sCgogICAgICAgICAgICAgICAgICAgICAgICBpc05vZGUgPSBl
bGVtLm5vZGVUeXBlLAoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGpRdWVyeS5kYXRh
IGZvciBtb3JlIGluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gaXNO
b2RlID8galF1ZXJ5LmNhY2hlIDogZWxlbSwKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNl
ZSBqUXVlcnkuZGF0YSBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgICAgICAg
ICBpZCA9IGlzTm9kZSA/IGVsZW1bIGpRdWVyeS5leHBhbmRvIF0gOiBqUXVlcnkuZXhwYW5kbzsK
CiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IG5vIGNhY2hlIGVudHJ5IGZv
ciB0aGlzIG9iamVjdCwgdGhlcmUgaXMgbm8KICAgICAgICAgICAgICAgIC8vIHB1cnBvc2UgaW4g
Y29udGludWluZwogICAgICAgICAgICAgICAgaWYgKCAhY2FjaGVbIGlkIF0gKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICBpZiAoIG5hbWUgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzQ2FjaGUgPSBwdnQg
PyBjYWNoZVsgaWQgXVsgaW50ZXJuYWxLZXkgXSA6IGNhY2hlWyBpZCBdOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCB0aGlzQ2FjaGUgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFN1cHBvcnQgaW50ZXJvcGVyYWJsZSByZW1vdmFsIG9mIGh5cGhlbmF0ZWQgb3Ig
Y2FtZWxjYXNlZCBrZXlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhdGhp
c0NhY2hlWyBuYW1lIF0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lID0galF1ZXJ5LmNhbWVsQ2FzZSggbmFtZSApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXND
YWNoZVsgbmFtZSBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVy
ZSBpcyBubyBkYXRhIGxlZnQgaW4gdGhlIGNhY2hlLCB3ZSB3YW50IHRvIGNvbnRpbnVlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGxldCB0aGUgY2FjaGUgb2JqZWN0IGl0
c2VsZiBnZXQgZGVzdHJveWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAh
aXNFbXB0eURhdGFPYmplY3QodGhpc0NhY2hlKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAvLyBTZWUgalF1ZXJ5LmRhdGEgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAgICAgICAgICAg
ICAgIGlmICggcHZ0ICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVbIGlk
IF1bIGludGVybmFsS2V5IF07CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBkZXN0
cm95IHRoZSBwYXJlbnQgY2FjaGUgdW5sZXNzIHRoZSBpbnRlcm5hbCBkYXRhIG9iamVjdAogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBoYWQgYmVlbiB0aGUgb25seSB0aGluZyBsZWZ0IGluIGl0
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWlzRW1wdHlEYXRhT2JqZWN0KGNhY2hlWyBp
ZCBdKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIg
aW50ZXJuYWxDYWNoZSA9IGNhY2hlWyBpZCBdWyBpbnRlcm5hbEtleSBdOwoKICAgICAgICAgICAg
ICAgIC8vIEJyb3dzZXJzIHRoYXQgZmFpbCBleHBhbmRvIGRlbGV0aW9uIGFsc28gcmVmdXNlIHRv
IGRlbGV0ZSBleHBhbmRvcyBvbgogICAgICAgICAgICAgICAgLy8gdGhlIHdpbmRvdywgYnV0IGl0
IHdpbGwgYWxsb3cgaXQgb24gYWxsIG90aGVyIEpTIG9iamVjdHM7IG90aGVyIGJyb3dzZXJzCiAg
ICAgICAgICAgICAgICAvLyBkb24ndCBjYXJlCiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhh
dCBgY2FjaGVgIGlzIG5vdCBhIHdpbmRvdyBvYmplY3QgIzEwMDgwCiAgICAgICAgICAgICAgICBp
ZiAoIGpRdWVyeS5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8gfHwgIWNhY2hlLnNldEludGVydmFsICkg
ewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgY2FjaGVbIGlkIF07CiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVsgaWQgXSA9IG51bGw7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gV2UgZGVzdHJveWVkIHRoZSBl
bnRpcmUgdXNlciBjYWNoZSBhdCBvbmNlIGJlY2F1c2UgaXQncyBmYXN0ZXIgdGhhbgogICAgICAg
ICAgICAgICAgLy8gaXRlcmF0aW5nIHRocm91Z2ggZWFjaCBrZXksIGJ1dCB3ZSBuZWVkIHRvIGNv
bnRpbnVlIHRvIHBlcnNpc3QgaW50ZXJuYWwKICAgICAgICAgICAgICAgIC8vIGRhdGEgaWYgaXQg
ZXhpc3RlZAogICAgICAgICAgICAgICAgaWYgKCBpbnRlcm5hbENhY2hlICkgewogICAgICAgICAg
ICAgICAgICAgICAgICBjYWNoZVsgaWQgXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAv
LyBUT0RPOiBUaGlzIGlzIGEgaGFjayBmb3IgMS41IE9OTFkuIEF2b2lkcyBleHBvc2luZyBqUXVl
cnkKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWV0YWRhdGEgb24gcGxhaW4gSlMgb2JqZWN0
cyB3aGVuIHRoZSBvYmplY3QgaXMgc2VyaWFsaXplZCB1c2luZwogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBKU09OLnN0cmluZ2lmeQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFpc05v
ZGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVbIGlkIF0udG9KU09O
ID0galF1ZXJ5Lm5vb3A7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNhY2hlWyBpZCBdWyBpbnRlcm5hbEtleSBdID0gaW50ZXJuYWxDYWNoZTsKCiAg
ICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHdlIG5lZWQgdG8gZWxpbWluYXRlIHRoZSBleHBh
bmRvIG9uIHRoZSBub2RlIHRvIGF2b2lkCiAgICAgICAgICAgICAgICAvLyBmYWxzZSBsb29rdXBz
IGluIHRoZSBjYWNoZSBmb3IgZW50cmllcyB0aGF0IG5vIGxvbmdlciBleGlzdAogICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICggaXNOb2RlICkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
RSBkb2VzIG5vdCBhbGxvdyB1cyB0byBkZWxldGUgZXhwYW5kbyBwcm9wZXJ0aWVzIGZyb20gbm9k
ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vciBkb2VzIGl0IGhhdmUgYSByZW1vdmVB
dHRyaWJ1dGUgZnVuY3Rpb24gb24gRG9jdW1lbnQgbm9kZXM7CiAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHdlIG11c3QgaGFuZGxlIGFsbCBvZiB0aGVzZSBjYXNlcwogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIGpRdWVyeS5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8gKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsZW1bIGpRdWVyeS5leHBhbmRvIF07CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGVsZW0ucmVtb3ZlQXR0cmlidXRlICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBqUXVl
cnkuZXhwYW5kbyApOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIGpRdWVyeS5leHBhbmRvIF0gPSBudWxsOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAg
ICAgLy8gRm9yIGludGVybmFsIHVzZSBvbmx5LgogICAgICAgIF9kYXRhOiBmdW5jdGlvbiggZWxl
bSwgbmFtZSwgZGF0YSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZGF0YSggZWxl
bSwgbmFtZSwgZGF0YSwgdHJ1ZSApOwogICAgICAgIH0sCgogICAgICAgIC8vIEEgbWV0aG9kIGZv
ciBkZXRlcm1pbmluZyBpZiBhIERPTSBub2RlIGNhbiBoYW5kbGUgdGhlIGRhdGEgZXhwYW5kbwog
ICAgICAgIGFjY2VwdERhdGE6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgaWYg
KCBlbGVtLm5vZGVOYW1lICkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBq
UXVlcnkubm9EYXRhWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggbWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICEobWF0Y2ggPT09IHRydWUgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQi
KSAhPT0gbWF0Y2gpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQp9KTsKCmpRdWVyeS5mbi5l
eHRlbmQoewogICAgICAgIGRhdGE6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewogICAgICAgICAg
ICAgICAgdmFyIGRhdGEgPSBudWxsOwoKICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGtleSA9
PT0gInVuZGVmaW5lZCIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5sZW5n
dGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGpRdWVyeS5kYXRh
KCB0aGlzWzBdICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpc1sw
XS5ub2RlVHlwZSA9PT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRy
ID0gdGhpc1swXS5hdHRyaWJ1dGVzLCBuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwLCBsID0gYXR0ci5sZW5ndGg7IGkgPCBsOyBpKysg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUg
PSBhdHRyW2ldLm5hbWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIG5hbWUuaW5kZXhPZiggImRhdGEtIiApID09PSAwICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBqUXVl
cnkuY2FtZWxDYXNlKCBuYW1lLnN1YnN0cmluZyg1KSApOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhQXR0ciggdGhpc1swXSwgbmFt
ZSwgZGF0YVsgbmFtZSBdICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwoKICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIHR5cGVvZiBrZXkgPT09ICJvYmplY3QiICkgewogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5kYXRhKCB0aGlzLCBrZXkgKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHBhcnRzID0ga2V5
LnNwbGl0KCIuIik7CiAgICAgICAgICAgICAgICBwYXJ0c1sxXSA9IHBhcnRzWzFdID8gIi4iICsg
cGFydHNbMV0gOiAiIjsKCiAgICAgICAgICAgICAgICBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLnRyaWdnZXJIYW5kbGVyKCJn
ZXREYXRhIiArIHBhcnRzWzFdICsgIiEiLCBbcGFydHNbMF1dKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRyeSB0byBmZXRjaCBhbnkgaW50ZXJuYWxseSBzdG9yZWQgZGF0YSBmaXJzdAog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiB0aGlzLmxl
bmd0aCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0galF1ZXJ5LmRh
dGEoIHRoaXNbMF0sIGtleSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEg
PSBkYXRhQXR0ciggdGhpc1swXSwga2V5LCBkYXRhICk7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhID09PSB1bmRlZmluZWQgJiYg
cGFydHNbMV0gPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSggcGFy
dHNbMF0gKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTsKCiAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNo
KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkdGhpcyA9
IGpRdWVyeSggdGhpcyApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJncyA9IFsgcGFydHNbMF0sIHZhbHVlIF07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICR0aGlzLnRyaWdnZXJIYW5kbGVyKCAic2V0RGF0YSIgKyBwYXJ0c1sxXSArICIhIiwgYXJn
cyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kYXRhKCB0aGlzLCBr
ZXksIHZhbHVlICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMudHJpZ2dl
ckhhbmRsZXIoICJjaGFuZ2VEYXRhIiArIHBhcnRzWzFdICsgIiEiLCBhcmdzICk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAg
IHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkucmVtb3Zl
RGF0YSggdGhpcywga2V5ICk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9Cn0pOwoKZnVu
Y3Rpb24gZGF0YUF0dHIoIGVsZW0sIGtleSwgZGF0YSApIHsKICAgICAgICAvLyBJZiBub3RoaW5n
IHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55CiAgICAgICAgLy8gZGF0YSBm
cm9tIHRoZSBIVE1MNSBkYXRhLSogYXR0cmlidXRlCiAgICAgICAgaWYgKCBkYXRhID09PSB1bmRl
ZmluZWQgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKCiAgICAgICAgICAgICAgICB2YXIgbmFt
ZSA9ICJkYXRhLSIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgIi0kMSIgKS50b0xvd2VyQ2Fz
ZSgpOwoKICAgICAgICAgICAgICAgIGRhdGEgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApOwoK
ICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGRhdGEgPT09ICJzdHJpbmciICkgewogICAgICAg
ICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGEgPSBkYXRhID09PSAidHJ1ZSIgPyB0cnVlIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhID09PSAiZmFsc2UiID8gZmFsc2UgOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGEgPT09ICJudWxsIiA/IG51bGwgOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICFqUXVlcnkuaXNOYU4oIGRhdGEgKSA/IHBhcnNlRmxvYXQoIGRhdGEgKSA6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYnJhY2UudGVzdCggZGF0YSApID8g
alF1ZXJ5LnBhcnNlSlNPTiggZGF0YSApIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goIGUgKSB7fQoK
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBp
dCBpc24ndCBjaGFuZ2VkIGxhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kYXRh
KCBlbGVtLCBrZXksIGRhdGEgKTsKCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgcmV0dXJuIGRhdGE7Cn0KCi8vIFRPRE86IFRoaXMgaXMgYSBoYWNrIGZvciAx
LjUgT05MWSB0byBhbGxvdyBvYmplY3RzIHdpdGggYSBzaW5nbGUgdG9KU09OCi8vIHByb3BlcnR5
IHRvIGJlIGNvbnNpZGVyZWQgZW1wdHkgb2JqZWN0czsgdGhpcyBwcm9wZXJ0eSBhbHdheXMgZXhp
c3RzIGluCi8vIG9yZGVyIHRvIG1ha2Ugc3VyZSBKU09OLnN0cmluZ2lmeSBkb2VzIG5vdCBleHBv
c2UgaW50ZXJuYWwgbWV0YWRhdGEKZnVuY3Rpb24gaXNFbXB0eURhdGFPYmplY3QoIG9iaiApIHsK
ICAgICAgICBmb3IgKCB2YXIgbmFtZSBpbiBvYmogKSB7CiAgICAgICAgICAgICAgICBpZiAoIG5h
bWUgIT09ICJ0b0pTT04iICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKfQoKCgoK
ZnVuY3Rpb24gaGFuZGxlUXVldWVNYXJrRGVmZXIoIGVsZW0sIHR5cGUsIHNyYyApIHsKICAgICAg
ICB2YXIgZGVmZXJEYXRhS2V5ID0gdHlwZSArICJkZWZlciIsCiAgICAgICAgICAgICAgICBxdWV1
ZURhdGFLZXkgPSB0eXBlICsgInF1ZXVlIiwKICAgICAgICAgICAgICAgIG1hcmtEYXRhS2V5ID0g
dHlwZSArICJtYXJrIiwKICAgICAgICAgICAgICAgIGRlZmVyID0galF1ZXJ5LmRhdGEoIGVsZW0s
IGRlZmVyRGF0YUtleSwgdW5kZWZpbmVkLCB0cnVlICk7CiAgICAgICAgaWYgKCBkZWZlciAmJgog
ICAgICAgICAgICAgICAgKCBzcmMgPT09ICJxdWV1ZSIgfHwgIWpRdWVyeS5kYXRhKCBlbGVtLCBx
dWV1ZURhdGFLZXksIHVuZGVmaW5lZCwgdHJ1ZSApICkgJiYKICAgICAgICAgICAgICAgICggc3Jj
ID09PSAibWFyayIgfHwgIWpRdWVyeS5kYXRhKCBlbGVtLCBtYXJrRGF0YUtleSwgdW5kZWZpbmVk
LCB0cnVlICkgKSApIHsKICAgICAgICAgICAgICAgIC8vIEdpdmUgcm9vbSBmb3IgaGFyZC1jb2Rl
ZCBjYWxsYmFja3MgdG8gZmlyZSBmaXJzdAogICAgICAgICAgICAgICAgLy8gYW5kIGV2ZW50dWFs
bHkgbWFyay9xdWV1ZSBzb21ldGhpbmcgZWxzZSBvbiB0aGUgZWxlbWVudAogICAgICAgICAgICAg
ICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
IWpRdWVyeS5kYXRhKCBlbGVtLCBxdWV1ZURhdGFLZXksIHVuZGVmaW5lZCwgdHJ1ZSApICYmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWpRdWVyeS5kYXRhKCBlbGVtLCBtYXJrRGF0
YUtleSwgdW5kZWZpbmVkLCB0cnVlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LnJlbW92ZURhdGEoIGVsZW0sIGRlZmVyRGF0YUtleSwgdHJ1ZSApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyLnJlc29sdmUoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgMCApOwogICAgICAgIH0KfQoKalF1ZXJ5LmV4
dGVuZCh7CgogICAgICAgIF9tYXJrOiBmdW5jdGlvbiggZWxlbSwgdHlwZSApIHsKICAgICAgICAg
ICAgICAgIGlmICggZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICh0eXBl
IHx8ICJmeCIpICsgIm1hcmsiOwogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZGF0YSgg
ZWxlbSwgdHlwZSwgKGpRdWVyeS5kYXRhKGVsZW0sdHlwZSx1bmRlZmluZWQsdHJ1ZSkgfHwgMCkg
KyAxLCB0cnVlICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgX3VubWFy
azogZnVuY3Rpb24oIGZvcmNlLCBlbGVtLCB0eXBlICkgewogICAgICAgICAgICAgICAgaWYgKCBm
b3JjZSAhPT0gdHJ1ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGVsZW07CiAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBmb3JjZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yY2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgg
ZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUgfHwgImZ4IjsKICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IHR5cGUgKyAibWFyayIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY291bnQgPSBmb3JjZSA/IDAgOiAoIChqUXVlcnkuZGF0YSgg
ZWxlbSwga2V5LCB1bmRlZmluZWQsIHRydWUpIHx8IDEgKSAtIDEgKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBjb3VudCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuZGF0YSggZWxlbSwga2V5LCBjb3VudCwgdHJ1ZSApOwogICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1v
dmVEYXRhKCBlbGVtLCBrZXksIHRydWUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVRdWV1ZU1hcmtEZWZlciggZWxlbSwgdHlwZSwgIm1hcmsiICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBxdWV1
ZTogZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGRhdGEgKSB7CiAgICAgICAgICAgICAgICBpZiAoIGVs
ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAodHlwZSB8fCAiZngiKSArICJx
dWV1ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0galF1ZXJ5LmRhdGEoIGVsZW0s
IHR5cGUsIHVuZGVmaW5lZCwgdHJ1ZSApOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVl
ZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9v
a3VwCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGF0YSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoICFxIHx8IGpRdWVyeS5pc0FycmF5KGRhdGEpICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IGpRdWVyeS5kYXRhKCBlbGVt
LCB0eXBlLCBqUXVlcnkubWFrZUFycmF5KGRhdGEpLCB0cnVlICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHEucHVzaCggZGF0YSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cSB8fCBbXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBkZXF1ZXVlOiBm
dW5jdGlvbiggZWxlbSwgdHlwZSApIHsKICAgICAgICAgICAgICAgIHR5cGUgPSB0eXBlIHx8ICJm
eCI7CgogICAgICAgICAgICAgICAgdmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCBlbGVtLCB0eXBl
ICksCiAgICAgICAgICAgICAgICAgICAgICAgIGZuID0gcXVldWUuc2hpZnQoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmZXI7CgogICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZ4IHF1ZXVl
IGlzIGRlcXVldWVkLCBhbHdheXMgcmVtb3ZlIHRoZSBwcm9ncmVzcyBzZW50aW5lbAogICAgICAg
ICAgICAgICAgaWYgKCBmbiA9PT0gImlucHJvZ3Jlc3MiICkgewogICAgICAgICAgICAgICAgICAg
ICAgICBmbiA9IHF1ZXVlLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgaWYgKCBmbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGEgcHJvZ3Jlc3Mg
c2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZwogICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhdXRvbWF0aWNhbGx5IGRlcXVldWVkCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggdHlwZSA9PT0gImZ4IiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBxdWV1ZS51bnNoaWZ0KCJpbnByb2dyZXNzIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICAgICAgICAgIGZuLmNhbGwoZWxlbSwgZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoZWxlbSwgdHlwZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIGlmICggIXF1ZXVlLmxlbmd0aCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LnJlbW92ZURhdGEoIGVsZW0sIHR5cGUgKyAicXVldWUiLCB0cnVlICk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZVF1ZXVlTWFya0RlZmVyKCBlbGVtLCB0eXBlLCAicXVldWUiICk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgfQp9KTsKCmpRdWVyeS5mbi5leHRlbmQoewogICAgICAg
IHF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHsKICAgICAgICAgICAgICAgIGlmICggdHlw
ZW9mIHR5cGUgIT09ICJzdHJpbmciICkgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0g
dHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJmeCI7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgaWYgKCBkYXRhID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkucXVldWUoIHRoaXNbMF0sIHR5cGUgKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggdGhp
cywgdHlwZSwgZGF0YSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAi
ZngiICYmIHF1ZXVlWzBdICE9PSAiaW5wcm9ncmVzcyIgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKICAgICAgICBkZXF1ZXVl
OiBmdW5jdGlvbiggdHlwZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0
eXBlICk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIC8vIEJhc2VkIG9m
ZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi4KICAgICAg
ICAvLyBodHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVs
YXkvCiAgICAgICAgZGVsYXk6IGZ1bmN0aW9uKCB0aW1lLCB0eXBlICkgewogICAgICAgICAgICAg
ICAgdGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbdGltZV0gfHwgdGltZSA6IHRp
bWU7CiAgICAgICAgICAgICAgICB0eXBlID0gdHlwZSB8fCAiZngiOwoKICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGVsZW0gPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kZXF1
ZXVlKCBlbGVtLCB0eXBlICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHRpbWUgKTsKICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgIH0sCiAgICAgICAgY2xlYXJRdWV1ZTogZnVuY3Rpb24o
IHR5cGUgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCAiZngi
LCBbXSApOwogICAgICAgIH0sCiAgICAgICAgLy8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVu
IHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZQogICAgICAgIC8vIGFyZSBlbXB0aWVkIChmeCBpcyB0
aGUgdHlwZSBieSBkZWZhdWx0KQogICAgICAgIHByb21pc2U6IGZ1bmN0aW9uKCB0eXBlLCBvYmpl
Y3QgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB0eXBlICE9PSAic3RyaW5nIiApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0ID0gdHlwZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IHR5cGUgPSB0eXBlIHx8ICJmeCI7CiAgICAgICAgICAgICAgICB2YXIgZGVmZXIgPSBqUXVlcnku
RGVmZXJyZWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgPSB0aGlzLAogICAg
ICAgICAgICAgICAgICAgICAgICBpID0gZWxlbWVudHMubGVuZ3RoLAogICAgICAgICAgICAgICAg
ICAgICAgICBjb3VudCA9IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyRGF0YUtleSA9
IHR5cGUgKyAiZGVmZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBxdWV1ZURhdGFLZXkgPSB0
eXBlICsgInF1ZXVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgbWFya0RhdGFLZXkgPSB0eXBl
ICsgIm1hcmsiLAogICAgICAgICAgICAgICAgICAgICAgICB0bXA7CiAgICAgICAgICAgICAgICBm
dW5jdGlvbiByZXNvbHZlKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEoIC0tY291
bnQgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlci5yZXNvbHZlV2l0
aCggZWxlbWVudHMsIFsgZWxlbWVudHMgXSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSggaS0tICkgewogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKCB0bXAgPSBqUXVlcnkuZGF0YSggZWxlbWVudHNbIGkgXSwgZGVm
ZXJEYXRhS2V5LCB1bmRlZmluZWQsIHRydWUgKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCBqUXVlcnkuZGF0YSggZWxlbWVudHNbIGkgXSwgcXVldWVEYXRhS2V5
LCB1bmRlZmluZWQsIHRydWUgKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuZGF0YSggZWxlbWVudHNbIGkgXSwgbWFya0RhdGFLZXksIHVu
ZGVmaW5lZCwgdHJ1ZSApICkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpRdWVyeS5kYXRhKCBlbGVtZW50c1sgaSBdLCBkZWZlckRhdGFLZXksIGpRdWVyeS5fRGVm
ZXJyZWQoKSwgdHJ1ZSApICkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Vu
dCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC5kb25lKCByZXNvbHZlICk7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgICAgIHJldHVybiBkZWZlci5wcm9taXNlKCk7CiAg
ICAgICAgfQp9KTsKCgoKCnZhciByY2xhc3MgPSAvW1xuXHRccl0vZywKICAgICAgICByc3BhY2Ug
PSAvXHMrLywKICAgICAgICBycmV0dXJuID0gL1xyL2csCiAgICAgICAgcnR5cGUgPSAvXig/OmJ1
dHRvbnxpbnB1dCkkL2ksCiAgICAgICAgcmZvY3VzYWJsZSA9IC9eKD86YnV0dG9ufGlucHV0fG9i
amVjdHxzZWxlY3R8dGV4dGFyZWEpJC9pLAogICAgICAgIHJjbGlja2FibGUgPSAvXmEoPzpyZWEp
PyQvaSwKICAgICAgICByYm9vbGVhbiA9IC9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNo
ZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3Blbnxy
ZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLAogICAgICAgIG5vZGVIb29rLCBi
b29sSG9vazsKCmpRdWVyeS5mbi5leHRlbmQoewogICAgICAgIGF0dHI6IGZ1bmN0aW9uKCBuYW1l
LCB2YWx1ZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBu
YW1lLCB2YWx1ZSwgdHJ1ZSwgalF1ZXJ5LmF0dHIgKTsKICAgICAgICB9LAoKICAgICAgICByZW1v
dmVBdHRyOiBmdW5jdGlvbiggbmFtZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVh
Y2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVBdHRy
KCB0aGlzLCBuYW1lICk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9LAogICAgICAgIAog
ICAgICAgIHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKICAgICAgICAgICAgICAgIHJl
dHVybiBqUXVlcnkuYWNjZXNzKCB0aGlzLCBuYW1lLCB2YWx1ZSwgdHJ1ZSwgalF1ZXJ5LnByb3Ag
KTsKICAgICAgICB9LAogICAgICAgIAogICAgICAgIHJlbW92ZVByb3A6IGZ1bmN0aW9uKCBuYW1l
ICkgewogICAgICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFt
ZTsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHRyeS9jYXRjaCBoYW5kbGVzIGNhc2VzIHdoZXJlIElFIGJhbGtz
IChzdWNoIGFzIHJlbW92aW5nIGEgcHJvcGVydHkgb24gd2luZG93KQogICAgICAgICAgICAgICAg
ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbIG5hbWUg
XSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhp
c1sgbmFtZSBdOwogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKCBlICkge30KICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIGFkZENsYXNzOiBmdW5jdGlvbiggdmFs
dWUgKSB7CiAgICAgICAgICAgICAgICB2YXIgY2xhc3NOYW1lcywgaSwgbCwgZWxlbSwKICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0Q2xhc3MsIGMsIGNsOwoKICAgICAgICAgICAgICAgIGlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oIHZhbHVlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5KCB0aGlzICkuYWRkQ2xhc3MoIHZhbHVlLmNhbGwodGhpcywgaiwgdGhpcy5j
bGFzc05hbWUpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIGlmICggdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAic3RyaW5n
IiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lcyA9IHZhbHVlLnNwbGl0KCBy
c3BhY2UgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gdGhpcy5s
ZW5ndGg7IGkgPCBsOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxl
bSA9IHRoaXNbIGkgXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVt
Lm5vZGVUeXBlID09PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCAhZWxlbS5jbGFzc05hbWUgJiYgY2xhc3NOYW1lcy5sZW5ndGggPT09IDEgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uY2xhc3NO
YW1lID0gdmFsdWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
Q2xhc3MgPSAiICIgKyBlbGVtLmNsYXNzTmFtZSArICIgIjsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGMgPSAwLCBjbCA9IGNsYXNzTmFtZXMu
bGVuZ3RoOyBjIDwgY2w7IGMrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICF+c2V0Q2xhc3MuaW5kZXhPZiggIiAiICsgY2xh
c3NOYW1lc1sgYyBdICsgIiAiICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDbGFzcyArPSBjbGFzc05hbWVzWyBj
IF0gKyAiICI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0u
Y2xhc3NOYW1lID0galF1ZXJ5LnRyaW0oIHNldENsYXNzICk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfSwKCiAgICAgICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9u
KCB2YWx1ZSApIHsKICAgICAgICAgICAgICAgIHZhciBjbGFzc05hbWVzLCBpLCBsLCBlbGVtLCBj
bGFzc05hbWUsIGMsIGNsOwoKICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24o
IHZhbHVlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24oIGogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlz
ICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwodGhpcywgaiwgdGhpcy5jbGFzc05hbWUpICk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIGlmICggKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gInN0cmluZyIpIHx8IHZhbHVlID09
PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXMgPSAodmFs
dWUgfHwgIiIpLnNwbGl0KCByc3BhY2UgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAo
IGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbSA9IHRoaXNbIGkgXTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmIGVsZW0uY2xhc3NOYW1lICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0g
KCIgIiArIGVsZW0uY2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKCByY2xhc3MsICIgIiApOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBjID0gMCwg
Y2wgPSBjbGFzc05hbWVzLmxlbmd0aDsgYyA8IGNsOyBjKysgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gY2xhc3NO
YW1lLnJlcGxhY2UoIiAiICsgY2xhc3NOYW1lc1sgYyBdICsgIiAiLCAiICIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uY2xhc3NOYW1lID0galF1ZXJ5LnRy
aW0oIGNsYXNzTmFtZSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0uY2xhc3NOYW1lID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7
CiAgICAgICAgfSwKCiAgICAgICAgdG9nZ2xlQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSwgc3RhdGVW
YWwgKSB7CiAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgaXNCb29sID0gdHlwZW9mIHN0YXRlVmFsID09PSAiYm9vbGVhbiI7Cgog
ICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyggdmFs
dWUuY2FsbCh0aGlzLCBpLCB0aGlzLmNsYXNzTmFtZSwgc3RhdGVWYWwpLCBzdGF0ZVZhbCApOwog
ICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIHR5cGUgPT09ICJzdHJpbmciICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHRvZ2dsZSBpbmRpdmlkdWFsIGNsYXNzIG5hbWVzCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZiA9IGpRdWVyeSggdGhpcyApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUgPSBzdGF0ZVZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsYXNzTmFtZXMgPSB2YWx1ZS5zcGxpdCggcnNwYWNlICk7CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICggKGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBd
KSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoZWNrIGVh
Y2ggY2xhc3NOYW1lIGdpdmVuLCBzcGFjZSBzZXBlcmF0ZWQgbGlzdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBpc0Jvb2wgPyBzdGF0ZSA6ICFzZWxmLmhh
c0NsYXNzKCBjbGFzc05hbWUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGZbIHN0YXRlID8gImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyIgXSggY2xhc3NOYW1l
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gInVuZGVmaW5lZCIgfHwgdHlwZSA9PT0gImJvb2xl
YW4iICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5jbGFzc05h
bWUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZSBj
bGFzc05hbWUgaWYgc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuX2RhdGEoIHRoaXMsICJfX2NsYXNzTmFtZV9fIiwgdGhpcy5jbGFzc05hbWUgKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRvZ2dsZSB3aG9sZSBjbGFzc05hbWUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lIHx8IHZhbHVlID09PSBmYWxz
ZSA/ICIiIDogalF1ZXJ5Ll9kYXRhKCB0aGlzLCAiX19jbGFzc05hbWVfXyIgKSB8fCAiIjsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAg
ICAgICAgaGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKICAgICAgICAgICAgICAgIHZh
ciBjbGFzc05hbWUgPSAiICIgKyBzZWxlY3RvciArICIgIjsKICAgICAgICAgICAgICAgIGZvciAo
IHZhciBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHRoaXNbaV0ubm9kZVR5cGUgPT09IDEgJiYgKCIgIiArIHRoaXNbaV0u
Y2xhc3NOYW1lICsgIiAiKS5yZXBsYWNlKHJjbGFzcywgIiAiKS5pbmRleE9mKCBjbGFzc05hbWUg
KSA+IC0xICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0sCgogICAgICAgIHZhbDogZnVuY3Rpb24oIHZhbHVl
ICkgewogICAgICAgICAgICAgICAgdmFyIGhvb2tzLCByZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0gPSB0aGlzWzBdOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAo
ICFhcmd1bWVudHMubGVuZ3RoICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0g
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9va3MgPSBqUXVlcnkudmFsSG9v
a3NbIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdIHx8IGpRdWVyeS52YWxIb29rc1sgZWxl
bS50eXBlIF07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaG9va3MgJiYg
ImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxlbSwgInZhbHVlIiApKSAhPT0g
dW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldCA9IGVsZW0udmFsdWU7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgcmV0ID09PSAic3RyaW5nIiA/IAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIG1vc3QgY29tbW9uIHN0cmlu
ZyBjYXNlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnJlcGxh
Y2UocnJldHVybiwgIiIpIDogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBoYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9PSBudWxsID8gIiIgOiBy
ZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIGlz
RnVuY3Rpb24gPSBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKTsKCiAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCBpICkgewogICAgICAgICAgICAgICAgICAgICAgICB2
YXIgc2VsZiA9IGpRdWVyeSh0aGlzKSwgdmFsOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCB0aGlzLm5vZGVUeXBlICE9PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBpc0Z1bmN0aW9uICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bCA9IHZhbHVlLmNhbGwoIHRoaXMsIGksIHNlbGYudmFsKCkgKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWx1
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VHJlYXQgbnVsbC91bmRlZmluZWQgYXMgIiI7IGNvbnZlcnQgbnVtYmVycyB0byBzdHJpbmcKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWwgPT0gbnVsbCApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWwgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmICggdHlwZW9mIHZhbCA9PT0gIm51bWJlciIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsICs9ICIiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBq
UXVlcnkuaXNBcnJheSggdmFsICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsID0galF1ZXJ5Lm1hcCh2YWwsIGZ1bmN0aW9uICggdmFsdWUgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICIiIDogdmFs
dWUgKyAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaG9va3MgPSBqUXVlcnkudmFs
SG9va3NbIHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSBdIHx8IGpRdWVyeS52YWxIb29rc1sg
dGhpcy50eXBlIF07CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBzZXQgcmV0dXJucyB1
bmRlZmluZWQsIGZhbGwgYmFjayB0byBub3JtYWwgc2V0dGluZwogICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoICFob29rcyB8fCAhKCJzZXQiIGluIGhvb2tzKSB8fCBob29rcy5zZXQoIHRoaXMs
IHZhbCwgInZhbHVlIiApID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgfQp9KTsKCmpRdWVyeS5leHRlbmQoewogICAgICAgIHZh
bEhvb2tzOiB7CiAgICAgICAgICAgICAgICBvcHRpb246IHsKICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0OiBmdW5jdGlvbiggZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBhdHRyaWJ1dGVzLnZhbHVlIGlzIHVuZGVmaW5lZCBpbiBCbGFja2JlcnJ5IDQuNyBidXQK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VzIC52YWx1ZS4gU2VlICM2OTMy
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IGVsZW0uYXR0cmlidXRl
cy52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXZhbCB8fCB2
YWwuc3BlY2lmaWVkID8gZWxlbS52YWx1ZSA6IGVsZW0udGV4dDsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlbGVjdDogewogICAg
ICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluZGV4ID0gZWxlbS5zZWxlY3RlZEluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gW10sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zID0gZWxlbS5vcHRpb25zLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lID0gZWxlbS50eXBlID09PSAic2VsZWN0LW9u
ZSI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgd2FzIHNlbGVj
dGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBpbmRleCA8IDAgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlvbnMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKCB2YXIgaSA9IG9uZSA/IGluZGV4IDogMCwgbWF4ID0g
b25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7IGkgPCBtYXg7IGkrKyApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb24gPSBvcHRpb25zWyBp
IF07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcmV0
dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvcHRpb24uc2VsZWN0
ZWQgJiYgKGpRdWVyeS5zdXBwb3J0Lm9wdERpc2FibGVkID8gIW9wdGlvbi5kaXNhYmxlZCA6IG9w
dGlvbi5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikgPT09IG51bGwpICYmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFvcHRpb24ucGFyZW50
Tm9kZS5kaXNhYmxlZCB8fCAhalF1ZXJ5Lm5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgIm9w
dGdyb3VwIiApKSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEdldCB0aGUgc3BlY2lmaWMgdmFsdWUgZm9yIHRoZSBvcHRpb24KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBqUXVlcnkoIG9w
dGlvbiApLnZhbCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCBhbiBhcnJheSBmb3Igb25lIHNlbGVjdHMKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBvbmUgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNdWx0
aS1TZWxlY3RzIHJldHVybiBhbiBhcnJheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaCggdmFsdWUgKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeGVzIEJ1ZyAjMjU1MSAtLSBz
ZWxlY3QudmFsKCkgYnJva2VuIGluIElFIGFmdGVyIGZvcm0ucmVzZXQoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggb25lICYmICF2YWx1ZXMubGVuZ3RoICYmIG9wdGlvbnMu
bGVuZ3RoICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGpRdWVyeSggb3B0aW9uc1sgaW5kZXggXSApLnZhbCgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVl
czsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICAgICAgIHNl
dDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciB2YWx1ZXMgPSBqUXVlcnkubWFrZUFycmF5KCB2YWx1ZSApOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZWxlbSkuZmluZCgib3B0aW9uIikuZWFjaChmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vs
ZWN0ZWQgPSBqUXVlcnkuaW5BcnJheSggalF1ZXJ5KHRoaXMpLnZhbCgpLCB2YWx1ZXMgKSA+PSAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoICF2YWx1ZXMubGVuZ3RoICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbS5zZWxlY3RlZEluZGV4ID0gLTE7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB2YWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0K
ICAgICAgICB9LAoKICAgICAgICBhdHRyRm46IHsKICAgICAgICAgICAgICAgIHZhbDogdHJ1ZSwK
ICAgICAgICAgICAgICAgIGNzczogdHJ1ZSwKICAgICAgICAgICAgICAgIGh0bWw6IHRydWUsCiAg
ICAgICAgICAgICAgICB0ZXh0OiB0cnVlLAogICAgICAgICAgICAgICAgZGF0YTogdHJ1ZSwKICAg
ICAgICAgICAgICAgIHdpZHRoOiB0cnVlLAogICAgICAgICAgICAgICAgaGVpZ2h0OiB0cnVlLAog
ICAgICAgICAgICAgICAgb2Zmc2V0OiB0cnVlCiAgICAgICAgfSwKICAgICAgICAKICAgICAgICBh
dHRyRml4OiB7CiAgICAgICAgICAgICAgICAvLyBBbHdheXMgbm9ybWFsaXplIHRvIGVuc3VyZSBo
b29rIHVzYWdlCiAgICAgICAgICAgICAgICB0YWJpbmRleDogInRhYkluZGV4IgogICAgICAgIH0s
CiAgICAgICAgCiAgICAgICAgYXR0cjogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBwYXNz
ICkgewogICAgICAgICAgICAgICAgdmFyIG5UeXBlID0gZWxlbS5ub2RlVHlwZTsKICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgLy8gZG9uJ3QgZ2V0L3NldCBhdHRyaWJ1dGVzIG9uIHRl
eHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2RlcwogICAgICAgICAgICAgICAgaWYgKCAhZWxl
bSB8fCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICBpZiAoIHBhc3MgJiYgbmFtZSBpbiBqUXVlcnkuYXR0ckZuICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5KCBlbGVtIClbIG5hbWUgXSggdmFsdWUg
KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjayB0byBwcm9w
IHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZAogICAgICAgICAgICAgICAgaWYgKCAh
KCJnZXRBdHRyaWJ1dGUiIGluIGVsZW0pICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4galF1ZXJ5LnByb3AoIGVsZW0sIG5hbWUsIHZhbHVlICk7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgdmFyIHJldCwgaG9va3MsCiAgICAgICAgICAgICAgICAgICAgICAgIG5v
dHhtbCA9IG5UeXBlICE9PSAxIHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKTsKCiAgICAgICAg
ICAgICAgICAvLyBOb3JtYWxpemUgdGhlIG5hbWUgaWYgbmVlZGVkCiAgICAgICAgICAgICAgICBp
ZiAoIG5vdHhtbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5hdHRy
Rml4WyBuYW1lIF0gfHwgbmFtZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGhvb2tzID0galF1
ZXJ5LmF0dHJIb29rc1sgbmFtZSBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhaG9v
a3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNlIGJvb2xIb29rIGZv
ciBib29sZWFuIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IHJib29sZWFuLnRlc3QoIG5hbWUgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhvb2tzID0gYm9vbEhvb2s7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFVzZSBub2RlSG9vayBpZiBhdmFpbGFibGUoIElFNi83ICkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBub2RlSG9vayApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhvb2tzID0gbm9kZUhvb2s7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICkgewoKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gbnVsbCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CgogICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBob29rcyAmJiAic2V0IiBpbiBob29rcyAmJiBub3R4
bWwgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09IHVuZGVmaW5l
ZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwoKICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgIiIgKyB2YWx1ZSApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGhvb2tzICYmICJnZXQiIGluIGhvb2tzICYmIG5v
dHhtbCAmJiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBuYW1lICkpICE9PSBudWxsICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7
CgogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSAp
OwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMgcmV0
dXJuIG51bGwsIHdlIG5vcm1hbGl6ZSB0byB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldCA9PT0gbnVsbCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5kZWZpbmVkIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQ7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgcmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0s
IG5hbWUgKSB7CiAgICAgICAgICAgICAgICB2YXIgcHJvcE5hbWU7CiAgICAgICAgICAgICAgICBp
ZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUg
PSBqUXVlcnkuYXR0ckZpeFsgbmFtZSBdIHx8IG5hbWU7CgogICAgICAgICAgICAgICAgICAgICAg
ICBqUXVlcnkuYXR0ciggZWxlbSwgbmFtZSwgIiIgKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFNldCBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHRvIGZhbHNlIGZvciBib29sZWFuIGF0dHJpYnV0
ZXMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByYm9vbGVhbi50ZXN0KCBuYW1lICkgJiYg
KHByb3BOYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lKSBpbiBlbGVtICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIHByb3BOYW1lIF0gPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCgog
ICAgICAgIGF0dHJIb29rczogewogICAgICAgICAgICAgICAgdHlwZTogewogICAgICAgICAgICAg
ICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBhbGxvdyB0aGUgdHlwZSBwcm9wZXJ0eSB0byBi
ZSBjaGFuZ2VkIChzaW5jZSBpdCBjYXVzZXMgcHJvYmxlbXMgaW4gSUUpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBydHlwZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgJiYgZWxl
bS5wYXJlbnROb2RlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmVycm9yKCAidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIiApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoICFqUXVlcnkuc3VwcG9ydC5yYWRp
b1ZhbHVlICYmIHZhbHVlID09PSAicmFkaW8iICYmIGpRdWVyeS5ub2RlTmFtZShlbGVtLCAiaW5w
dXQiKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldHRp
bmcgdGhlIHR5cGUgb24gYSByYWRpbyBidXR0b24gYWZ0ZXIgdGhlIHZhbHVlIHJlc2V0cyB0aGUg
dmFsdWUgaW4gSUU2LTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFJlc2V0IHZhbHVlIHRvIGl0J3MgZGVmYXVsdCBpbiBjYXNlIHR5cGUgaXMgc2V0IGFmdGVyIHZh
bHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZv
ciBlbGVtZW50IGNyZWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgdmFsID0gZWxlbS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCAidHlwZSIsIHZhbHVlICk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbCApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS52YWx1ZSA9IHZhbDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAgICAvLyBVc2UgdGhlIHZhbHVlIHByb3BlcnR5IGZvciBiYWNrIGNvbXBhdAogICAg
ICAgICAgICAgICAgLy8gVXNlIHRoZSBub2RlSG9vayBmb3IgYnV0dG9uIGVsZW1lbnRzIGluIElF
Ni83ICgjMTk1NCkKICAgICAgICAgICAgICAgIHZhbHVlOiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBub2RlSG9vayAmJiBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJidXR0b24i
ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9k
ZUhvb2suZ2V0KCBlbGVtLCBuYW1lICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuYW1lIGluIGVsZW0gPwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS52YWx1ZSA6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsOwogICAgICAgICAgICAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2
YWx1ZSwgbmFtZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGVI
b29rICYmIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgImJ1dHRvbiIgKSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlSG9vay5zZXQoIGVsZW0sIHZh
bHVlLCBuYW1lICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIERvZXMgbm90IHJldHVybiBzbyB0aGF0IHNldEF0dHJp
YnV0ZSBpcyBhbHNvIHVzZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnZh
bHVlID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0K
ICAgICAgICB9LAoKICAgICAgICBwcm9wRml4OiB7CiAgICAgICAgICAgICAgICB0YWJpbmRleDog
InRhYkluZGV4IiwKICAgICAgICAgICAgICAgIHJlYWRvbmx5OiAicmVhZE9ubHkiLAogICAgICAg
ICAgICAgICAgImZvciI6ICJodG1sRm9yIiwKICAgICAgICAgICAgICAgICJjbGFzcyI6ICJjbGFz
c05hbWUiLAogICAgICAgICAgICAgICAgbWF4bGVuZ3RoOiAibWF4TGVuZ3RoIiwKICAgICAgICAg
ICAgICAgIGNlbGxzcGFjaW5nOiAiY2VsbFNwYWNpbmciLAogICAgICAgICAgICAgICAgY2VsbHBh
ZGRpbmc6ICJjZWxsUGFkZGluZyIsCiAgICAgICAgICAgICAgICByb3dzcGFuOiAicm93U3BhbiIs
CiAgICAgICAgICAgICAgICBjb2xzcGFuOiAiY29sU3BhbiIsCiAgICAgICAgICAgICAgICB1c2Vt
YXA6ICJ1c2VNYXAiLAogICAgICAgICAgICAgICAgZnJhbWVib3JkZXI6ICJmcmFtZUJvcmRlciIs
CiAgICAgICAgICAgICAgICBjb250ZW50ZWRpdGFibGU6ICJjb250ZW50RWRpdGFibGUiCiAgICAg
ICAgfSwKICAgICAgICAKICAgICAgICBwcm9wOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUg
KSB7CiAgICAgICAgICAgICAgICB2YXIgblR5cGUgPSBlbGVtLm5vZGVUeXBlOwoKICAgICAgICAg
ICAgICAgIC8vIGRvbid0IGdldC9zZXQgcHJvcGVydGllcyBvbiB0ZXh0LCBjb21tZW50IGFuZCBh
dHRyaWJ1dGUgbm9kZXMKICAgICAgICAgICAgICAgIGlmICggIWVsZW0gfHwgblR5cGUgPT09IDMg
fHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFy
IHJldCwgaG9va3MsCiAgICAgICAgICAgICAgICAgICAgICAgIG5vdHhtbCA9IG5UeXBlICE9PSAx
IHx8ICFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKTsKCiAgICAgICAgICAgICAgICBpZiAoIG5vdHht
bCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4IG5hbWUgYW5kIGF0dGFjaCBob29r
cwogICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8
fCBuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5wcm9wSG9va3Nb
IG5hbWUgXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIHZhbHVlICE9
PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaG9va3MgJiYgInNl
dCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUsIG5hbWUgKSkgIT09
IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0
OwoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gKGVsZW1bIG5hbWUgXSA9IHZhbHVlKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhvb2tzLmdldCggZWxl
bSwgbmFtZSApKSAhPT0gbnVsbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0OwoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbVsgbmFtZSBdOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAKICAgICAgICBw
cm9wSG9va3M6IHsKICAgICAgICAgICAgICAgIHRhYkluZGV4OiB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gZWxlbS50YWJJbmRleCBkb2Vzbid0IGFsd2F5cyByZXR1cm4gdGhlIGNvcnJlY3Qg
dmFsdWUgd2hlbiBpdCBoYXNuJ3QgYmVlbiBleHBsaWNpdGx5IHNldAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9mbHVpZHByb2plY3Qub3JnL2Jsb2cvMjAwOC8wMS8w
OS9nZXR0aW5nLXNldHRpbmctYW5kLXJlbW92aW5nLXRhYmluZGV4LXZhbHVlcy13aXRoLWphdmFz
Y3JpcHQvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5vZGUg
PSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVOb2RlICYmIGF0dHJpYnV0ZU5vZGUuc3BlY2lm
aWVkID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KCBh
dHRyaWJ1dGVOb2RlLnZhbHVlLCAxMCApIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJmb2N1c2FibGUudGVzdCggZWxlbS5ub2RlTmFtZSApIHx8IHJjbGlja2FibGUu
dGVzdCggZWxlbS5ub2RlTmFtZSApICYmIGVsZW0uaHJlZiA/CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9Cn0pOwoKLy8gQWRkIHRoZSB0YWJpbmRleCBw
cm9wSG9vayB0byBhdHRySG9va3MgZm9yIGJhY2stY29tcGF0CmpRdWVyeS5hdHRySG9va3MudGFi
SW5kZXggPSBqUXVlcnkucHJvcEhvb2tzLnRhYkluZGV4OwoKLy8gSG9vayBmb3IgYm9vbGVhbiBh
dHRyaWJ1dGVzCmJvb2xIb29rID0gewogICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIG5hbWUg
KSB7CiAgICAgICAgICAgICAgICAvLyBBbGlnbiBib29sZWFuIGF0dHJpYnV0ZXMgd2l0aCBjb3Jy
ZXNwb25kaW5nIHByb3BlcnRpZXMKICAgICAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byBhdHRy
aWJ1dGUgcHJlc2VuY2Ugd2hlcmUgc29tZSBib29sZWFucyBhcmUgbm90IHN1cHBvcnRlZAogICAg
ICAgICAgICAgICAgdmFyIGF0dHJOb2RlOwogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5w
cm9wKCBlbGVtLCBuYW1lICkgPT09IHRydWUgfHwgKCBhdHRyTm9kZSA9IGVsZW0uZ2V0QXR0cmli
dXRlTm9kZSggbmFtZSApICkgJiYgYXR0ck5vZGUubm9kZVZhbHVlICE9PSBmYWxzZSA/CiAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWUudG9Mb3dlckNhc2UoKSA6CiAgICAgICAgICAgICAgICAg
ICAgICAgIHVuZGVmaW5lZDsKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0s
IHZhbHVlLCBuYW1lICkgewogICAgICAgICAgICAgICAgdmFyIHByb3BOYW1lOwogICAgICAgICAg
ICAgICAgaWYgKCB2YWx1ZSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFJlbW92ZSBib29sZWFuIGF0dHJpYnV0ZXMgd2hlbiBzZXQgdG8gZmFsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5LnJlbW92ZUF0dHIoIGVsZW0sIG5hbWUgKTsKICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIGlzIHRydWUgc2lu
Y2Ugd2Uga25vdyBhdCB0aGlzIHBvaW50IGl0J3MgdHlwZSBib29sZWFuIGFuZCBub3QgZmFsc2UK
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGJvb2xlYW4gYXR0cmlidXRlcyB0byB0aGUg
c2FtZSBuYW1lIGFuZCBzZXQgdGhlIERPTSBwcm9wZXJ0eQogICAgICAgICAgICAgICAgICAgICAg
ICBwcm9wTmFtZSA9IGpRdWVyeS5wcm9wRml4WyBuYW1lIF0gfHwgbmFtZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBwcm9wTmFtZSBpbiBlbGVtICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE9ubHkgc2V0IHRoZSBJREwgc3BlY2lmaWNhbGx5IGlmIGl0IGFscmVh
ZHkgZXhpc3RzIG9uIHRoZSBlbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbVsgcHJvcE5hbWUgXSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCBuYW1lLnRvTG93ZXJD
YXNlKCkgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwog
ICAgICAgIH0KfTsKCi8vIElFNi83IGRvIG5vdCBzdXBwb3J0IGdldHRpbmcvc2V0dGluZyBzb21l
IGF0dHJpYnV0ZXMgd2l0aCBnZXQvc2V0QXR0cmlidXRlCmlmICggIWpRdWVyeS5zdXBwb3J0Lmdl
dFNldEF0dHJpYnV0ZSApIHsKICAgICAgICAKICAgICAgICAvLyBVc2UgdGhpcyBmb3IgYW55IGF0
dHJpYnV0ZSBpbiBJRTYvNwogICAgICAgIC8vIFRoaXMgZml4ZXMgYWxtb3N0IGV2ZXJ5IElFNi83
IGlzc3VlCiAgICAgICAgbm9kZUhvb2sgPSBqUXVlcnkudmFsSG9va3MuYnV0dG9uID0gewogICAg
ICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHJldDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZWxlbS5nZXRB
dHRyaWJ1dGVOb2RlKCBuYW1lICk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB1
bmRlZmluZWQgaWYgbm9kZVZhbHVlIGlzIGVtcHR5IHN0cmluZwogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0ICYmIHJldC5ub2RlVmFsdWUgIT09ICIiID8KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXQubm9kZVZhbHVlIDoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgc2V0
OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUsIG5hbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFNldCB0aGUgZXhpc3Rpbmcgb3IgY3JlYXRlIGEgbmV3IGF0dHJpYnV0ZSBub2RlCiAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoIG5hbWUg
KTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmV0ICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldCA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSggbmFtZSApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlTm9kZSggcmV0
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIChyZXQubm9kZVZhbHVlID0gdmFsdWUgKyAiIik7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgfTsKCiAgICAgICAgLy8gU2V0IHdpZHRoIGFuZCBoZWlnaHQgdG8gYXV0byBpbnN0ZWFkIG9m
IDAgb24gZW1wdHkgc3RyaW5nKCBCdWcgIzgxNTAgKQogICAgICAgIC8vIFRoaXMgaXMgZm9yIHJl
bW92YWxzCiAgICAgICAgalF1ZXJ5LmVhY2goWyAid2lkdGgiLCAiaGVpZ2h0IiBdLCBmdW5jdGlv
biggaSwgbmFtZSApIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSA9
IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5hdHRySG9va3NbIG5hbWUgXSwgewogICAgICAgICAgICAg
ICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIHZhbHVlID09PSAiIiApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCAiYXV0byIgKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwp9CgoKLy8gU29tZSBhdHRyaWJ1dGVzIHJl
cXVpcmUgYSBzcGVjaWFsIGNhbGwgb24gSUUKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuaHJlZk5vcm1h
bGl6ZWQgKSB7CiAgICAgICAgalF1ZXJ5LmVhY2goWyAiaHJlZiIsICJzcmMiLCAid2lkdGgiLCAi
aGVpZ2h0IiBdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5h
dHRySG9va3NbIG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS5hdHRySG9va3NbIG5hbWUg
XSwgewogICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCBlbGVtICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBlbGVtLmdldEF0dHJpYnV0ZSgg
bmFtZSwgMiApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQgPT09
IG51bGwgPyB1bmRlZmluZWQgOiByZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgIH0pOwp9CgppZiAoICFqUXVlcnkuc3VwcG9ydC5zdHlsZSAp
IHsKICAgICAgICBqUXVlcnkuYXR0ckhvb2tzLnN0eWxlID0gewogICAgICAgICAgICAgICAgZ2V0
OiBmdW5jdGlvbiggZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIHVu
ZGVmaW5lZCBpbiB0aGUgY2FzZSBvZiBlbXB0eSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gTm9ybWFsaXplIHRvIGxvd2VyY2FzZSBzaW5jZSBJRSB1cHBlcmNhc2VzIGNzcyBwcm9w
ZXJ0eSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5zdHlsZS5jc3NU
ZXh0LnRvTG93ZXJDYXNlKCkgfHwgdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICAgIHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gKGVsZW0uc3R5bGUuY3NzVGV4dCA9ICIiICsgdmFsdWUpOwogICAgICAg
ICAgICAgICAgfQogICAgICAgIH07Cn0KCi8vIFNhZmFyaSBtaXMtcmVwb3J0cyB0aGUgZGVmYXVs
dCBzZWxlY3RlZCBwcm9wZXJ0eSBvZiBhbiBvcHRpb24KLy8gQWNjZXNzaW5nIHRoZSBwYXJlbnQn
cyBzZWxlY3RlZEluZGV4IHByb3BlcnR5IGZpeGVzIGl0CmlmICggIWpRdWVyeS5zdXBwb3J0Lm9w
dFNlbGVjdGVkICkgewogICAgICAgIGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSBqUXVlcnku
ZXh0ZW5kKCBqUXVlcnkucHJvcEhvb2tzLnNlbGVjdGVkLCB7CiAgICAgICAgICAgICAgICBnZXQ6
IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50ID0g
ZWxlbS5wYXJlbnROb2RlOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwYXJlbnQgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNlbGVjdGVkSW5kZXg7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGl0IGFsc28g
d29ya3Mgd2l0aCBvcHRncm91cHMsIHNlZSAjNTcwMQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggcGFyZW50LnBhcmVudE5vZGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4OwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICB9KTsKfQoKLy8gUmFkaW9zIGFuZCBjaGVja2JveGVzIGdldHRlci9zZXR0ZXIKaWYgKCAhalF1
ZXJ5LnN1cHBvcnQuY2hlY2tPbiApIHsKICAgICAgICBqUXVlcnkuZWFjaChbICJyYWRpbyIsICJj
aGVja2JveCIgXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBqUXVlcnkudmFsSG9va3Nb
IHRoaXMgXSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hl
cmUgaW4gV2Via2l0ICIiIGlzIHJldHVybmVkIGluc3RlYWQgb2YgIm9uIiBpZiBhIHZhbHVlIGlz
bid0IHNwZWNpZmllZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVt
LmdldEF0dHJpYnV0ZSgidmFsdWUiKSA9PT0gbnVsbCA/ICJvbiIgOiBlbGVtLnZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgIH0pOwp9CmpR
dWVyeS5lYWNoKFsgInJhZGlvIiwgImNoZWNrYm94IiBdLCBmdW5jdGlvbigpIHsKICAgICAgICBq
UXVlcnkudmFsSG9va3NbIHRoaXMgXSA9IGpRdWVyeS5leHRlbmQoIGpRdWVyeS52YWxIb29rc1sg
dGhpcyBdLCB7CiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVlcnkuaXNBcnJheSggdmFsdWUgKSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGVsZW0uY2hlY2tlZCA9IGpR
dWVyeS5pbkFycmF5KCBqUXVlcnkoZWxlbSkudmFsKCksIHZhbHVlICkgPj0gMCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9KTsKfSk7CgoKCgp2
YXIgcm5hbWVzcGFjZXMgPSAvXC4oLiopJC8sCiAgICAgICAgcmZvcm1FbGVtcyA9IC9eKD86dGV4
dGFyZWF8aW5wdXR8c2VsZWN0KSQvaSwKICAgICAgICBycGVyaW9kID0gL1wuL2csCiAgICAgICAg
cnNwYWNlcyA9IC8gL2csCiAgICAgICAgcmVzY2FwZSA9IC9bXlx3XHMufGBdL2csCiAgICAgICAg
ZmNsZWFudXAgPSBmdW5jdGlvbiggbm0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbm0ucmVw
bGFjZShyZXNjYXBlLCAiXFwkJiIpOwogICAgICAgIH07CgovKgogKiBBIG51bWJlciBvZiBoZWxw
ZXIgZnVuY3Rpb25zIHVzZWQgZm9yIG1hbmFnaW5nIGV2ZW50cy4KICogTWFueSBvZiB0aGUgaWRl
YXMgYmVoaW5kIHRoaXMgY29kZSBvcmlnaW5hdGVkIGZyb20KICogRGVhbiBFZHdhcmRzJyBhZGRF
dmVudCBsaWJyYXJ5LgogKi8KalF1ZXJ5LmV2ZW50ID0gewoKICAgICAgICAvLyBCaW5kIGFuIGV2
ZW50IHRvIGFuIGVsZW1lbnQKICAgICAgICAvLyBPcmlnaW5hbCBieSBEZWFuIEVkd2FyZHMKICAg
ICAgICBhZGQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgZGF0YSApIHsKICAgICAg
ICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4
ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgaWYgKCBoYW5kbGVyID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlciA9IHJldHVybkZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIGlm
ICggIWhhbmRsZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeGVzIGJ1ZyAjNzIy
OS4gRml4IHJlY29tbWVuZGVkIGJ5IGpkYWx0b24KICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBoYW5kbGVPYmpJbiwg
aGFuZGxlT2JqOwoKICAgICAgICAgICAgICAgIGlmICggaGFuZGxlci5oYW5kbGVyICkgewogICAg
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmpJbiA9IGhhbmRsZXI7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZXIgPSBoYW5kbGVPYmpJbi5oYW5kbGVyOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBmdW5jdGlvbiBiZWluZyBl
eGVjdXRlZCBoYXMgYSB1bmlxdWUgSUQKICAgICAgICAgICAgICAgIGlmICggIWhhbmRsZXIuZ3Vp
ZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5ndWlkID0galF1ZXJ5Lmd1aWQr
KzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBJbml0IHRoZSBlbGVtZW50
J3MgZXZlbnQgc3RydWN0dXJlCiAgICAgICAgICAgICAgICB2YXIgZWxlbURhdGEgPSBqUXVlcnku
X2RhdGEoIGVsZW0gKTsKCiAgICAgICAgICAgICAgICAvLyBJZiBubyBlbGVtRGF0YSBpcyBmb3Vu
ZCB0aGVuIHdlIG11c3QgYmUgdHJ5aW5nIHRvIGJpbmQgdG8gb25lIG9mIHRoZQogICAgICAgICAg
ICAgICAgLy8gYmFubmVkIG5vRGF0YSBlbGVtZW50cwogICAgICAgICAgICAgICAgaWYgKCAhZWxl
bURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICB2YXIgZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzLAogICAgICAg
ICAgICAgICAgICAgICAgICBldmVudEhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZTsKCiAgICAgICAg
ICAgICAgICBpZiAoICFldmVudHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1EYXRh
LmV2ZW50cyA9IGV2ZW50cyA9IHt9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
IGlmICggIWV2ZW50SGFuZGxlICkgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtRGF0YS5o
YW5kbGUgPSBldmVudEhhbmRsZSA9IGZ1bmN0aW9uKCBlICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIERpc2NhcmQgdGhlIHNlY29uZCBldmVudCBvZiBhIGpRdWVyeS5ldmVu
dC50cmlnZ2VyKCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBh
biBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgalF1ZXJ5ICE9PSAidW5kZWZpbmVkIiAm
JiAoIWUgfHwgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCAhPT0gZS50eXBlKSA/CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQuaGFuZGxlLmFwcGx5KCBl
dmVudEhhbmRsZS5lbGVtLCBhcmd1bWVudHMgKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQWRkIGVsZW0gYXMgYSBwcm9wZXJ0eSBv
ZiB0aGUgaGFuZGxlIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRvIHByZXZl
bnQgYSBtZW1vcnkgbGVhayB3aXRoIG5vbi1uYXRpdmUgZXZlbnRzIGluIElFLgogICAgICAgICAg
ICAgICAgZXZlbnRIYW5kbGUuZWxlbSA9IGVsZW07CgogICAgICAgICAgICAgICAgLy8gSGFuZGxl
IG11bHRpcGxlIGV2ZW50cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZQogICAgICAgICAgICAgICAgLy8g
alF1ZXJ5KC4uLikuYmluZCgibW91c2VvdmVyIG1vdXNlb3V0IiwgZm4pOwogICAgICAgICAgICAg
ICAgdHlwZXMgPSB0eXBlcy5zcGxpdCgiICIpOwoKICAgICAgICAgICAgICAgIHZhciB0eXBlLCBp
ID0gMCwgbmFtZXNwYWNlczsKCiAgICAgICAgICAgICAgICB3aGlsZSAoICh0eXBlID0gdHlwZXNb
IGkrKyBdKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqID0gaGFuZGxlT2Jq
SW4gPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5leHRlbmQoe30sIGhh
bmRsZU9iakluKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBoYW5kbGVyOiBo
YW5kbGVyLCBkYXRhOiBkYXRhIH07CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBOYW1lc3Bh
Y2VkIGV2ZW50IGhhbmRsZXJzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZS5pbmRl
eE9mKCIuIikgPiAtMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3Bh
Y2VzID0gdHlwZS5zcGxpdCgiLiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBuYW1lc3BhY2VzLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGFuZGxlT2JqLm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuc2xpY2UoMCkuc29ydCgpLmpvaW4oIi4i
KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZXNwYWNlcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhhbmRsZU9iai5uYW1lc3BhY2UgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqLnR5cGUgPSB0eXBlOwogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoICFoYW5kbGVPYmouZ3VpZCApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYW5kbGVPYmouZ3VpZCA9IGhhbmRsZXIuZ3VpZDsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50
IGxpc3Qgb2YgZnVuY3Rpb25zIGJvdW5kIHRvIHRoaXMgZXZlbnQKICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307
CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBJbml0IHRoZSBldmVudCBoYW5kbGVyIHF1ZXVl
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWhhbmRsZXJzICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gZXZlbnRzWyB0eXBlIF0gPSBbXTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgc3BlY2lhbCBldmVudCBo
YW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSB1c2UgYWRkRXZl
bnRMaXN0ZW5lci9hdHRhY2hFdmVudCBpZiB0aGUgc3BlY2lhbAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGV2ZW50cyBoYW5kbGVyIHJldHVybnMgZmFsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoICFzcGVjaWFsLnNldHVwIHx8IHNwZWNpYWwuc2V0dXAu
Y2FsbCggZWxlbSwgZGF0YSwgbmFtZXNwYWNlcywgZXZlbnRIYW5kbGUgKSA9PT0gZmFsc2UgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCaW5kIHRoZSBnbG9i
YWwgZXZlbnQgaGFuZGxlciB0byB0aGUgZWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uYWRkRXZlbnRMaXN0ZW5l
ciggdHlwZSwgZXZlbnRIYW5kbGUsIGZhbHNlICk7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICggZWxlbS5hdHRhY2hFdmVudCApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5hdHRhY2hFdmVudCgg
Im9uIiArIHR5cGUsIGV2ZW50SGFuZGxlICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNwZWNpYWwuYWRk
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwuYWRkLmNhbGwoIGVs
ZW0sIGhhbmRsZU9iaiApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFo
YW5kbGVPYmouaGFuZGxlci5ndWlkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlT2JqLmhhbmRsZXIuZ3VpZCA9IGhhbmRsZXIuZ3VpZDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gdG8gdGhlIGVsZW1lbnQncyBo
YW5kbGVyIGxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnMucHVzaCggaGFuZGxl
T2JqICk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2
ZW50cyBoYXZlIGJlZW4gdXNlZCwgZm9yIGV2ZW50IG9wdGltaXphdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlOwogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIE51bGxpZnkgZWxlbSB0byBwcmV2ZW50IG1lbW9y
eSBsZWFrcyBpbiBJRQogICAgICAgICAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgfSwKCiAg
ICAgICAgZ2xvYmFsOiB7fSwKCiAgICAgICAgLy8gRGV0YWNoIGFuIGV2ZW50IG9yIHNldCBvZiBl
dmVudHMgZnJvbSBhbiBlbGVtZW50CiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiggZWxlbSwgdHlw
ZXMsIGhhbmRsZXIsIHBvcyApIHsKICAgICAgICAgICAgICAgIC8vIGRvbid0IGRvIGV2ZW50cyBv
biB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCiAgICAgICAgICAgICAgICBpZiAoIGVsZW0ubm9kZVR5
cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gOCApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggaGFuZGxl
ciA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSByZXR1cm5G
YWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcmV0LCB0eXBlLCBm
biwgaiwgaSA9IDAsIGFsbCwgbmFtZXNwYWNlcywgbmFtZXNwYWNlLCBzcGVjaWFsLCBldmVudFR5
cGUsIGhhbmRsZU9iaiwgb3JpZ1R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1EYXRh
ID0galF1ZXJ5Lmhhc0RhdGEoIGVsZW0gKSAmJiBqUXVlcnkuX2RhdGEoIGVsZW0gKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnRzID0gZWxlbURhdGEgJiYgZWxlbURhdGEuZXZlbnRzOwoK
ICAgICAgICAgICAgICAgIGlmICggIWVsZW1EYXRhIHx8ICFldmVudHMgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAv
LyB0eXBlcyBpcyBhY3R1YWxseSBhbiBldmVudCBvYmplY3QgaGVyZQogICAgICAgICAgICAgICAg
aWYgKCB0eXBlcyAmJiB0eXBlcy50eXBlICkgewogICAgICAgICAgICAgICAgICAgICAgICBoYW5k
bGVyID0gdHlwZXMuaGFuZGxlcjsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMgPSB0eXBl
cy50eXBlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFVuYmluZCBhbGwg
ZXZlbnRzIGZvciB0aGUgZWxlbWVudAogICAgICAgICAgICAgICAgaWYgKCAhdHlwZXMgfHwgdHlw
ZW9mIHR5cGVzID09PSAic3RyaW5nIiAmJiB0eXBlcy5jaGFyQXQoMCkgPT09ICIuIiApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZXMgPSB0eXBlcyB8fCAiIjsKCiAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciAoIHR5cGUgaW4gZXZlbnRzICkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKyB0eXBlcyApOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIGV2ZW50
cyBzZXBhcmF0ZWQgYnkgYSBzcGFjZQogICAgICAgICAgICAgICAgLy8galF1ZXJ5KC4uLikudW5i
aW5kKCJtb3VzZW92ZXIgbW91c2VvdXQiLCBmbik7CiAgICAgICAgICAgICAgICB0eXBlcyA9IHR5
cGVzLnNwbGl0KCIgIik7CgogICAgICAgICAgICAgICAgd2hpbGUgKCAodHlwZSA9IHR5cGVzWyBp
KysgXSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdUeXBlID0gdHlwZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAg
ICAgYWxsID0gdHlwZS5pbmRleE9mKCIuIikgPCAwOwogICAgICAgICAgICAgICAgICAgICAgICBu
YW1lc3BhY2VzID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFhbGwgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmFtZXNwYWNlZCBldmVudCBoYW5kbGVy
cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0
KCIuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IG5hbWVzcGFjZXMu
c2hpZnQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlID0gbmV3
IFJlZ0V4cCgiKF58XFwuKSIgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5Lm1hcCggbmFtZXNwYWNlcy5zbGljZSgwKS5zb3J0KCksIGZjbGVhbnVwICkuam9p
bigiXFwuKD86LipcXC4pPyIpICsgIihcXC58JCkiKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlID0gZXZlbnRzWyB0eXBlIF07Cgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFldmVudFR5cGUgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggIWhhbmRsZXIgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBldmVudFR5cGUubGVuZ3RoOyBqKysgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPYmogPSBldmVu
dFR5cGVbIGogXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGFsbCB8fCBuYW1lc3BhY2UudGVzdCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQucmVt
b3ZlKCBlbGVtLCBvcmlnVHlwZSwgaGFuZGxlT2JqLmhhbmRsZXIsIGogKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlLnNwbGljZSggai0t
LCAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgc3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307CgogICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgKCBqID0gcG9zIHx8IDA7IGogPCBldmVudFR5cGUubGVu
Z3RoOyBqKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT2JqID0g
ZXZlbnRUeXBlWyBqIF07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFu
ZGxlci5ndWlkID09PSBoYW5kbGVPYmouZ3VpZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgZ2l2ZW4gaGFuZGxlciBmb3IgdGhlIGdpdmVu
IHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggYWxsIHx8
IG5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcG9zID09IG51bGwgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnRUeXBlLnNwbGljZSggai0tLCAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggc3BlY2lhbC5yZW1vdmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbC5yZW1vdmUuY2FsbCggZWxl
bSwgaGFuZGxlT2JqICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHBvcyAhPSBudWxsICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgbm8gbW9yZSBoYW5k
bGVycyBleGlzdAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGV2ZW50VHlwZS5sZW5ndGgg
PT09IDAgfHwgcG9zICE9IG51bGwgJiYgZXZlbnRUeXBlLmxlbmd0aCA9PT0gMSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFzcGVjaWFsLnRlYXJkb3duIHx8IHNwZWNp
YWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcyApID09PSBmYWxzZSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxl
bSwgdHlwZSwgZWxlbURhdGEuaGFuZGxlICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBudWxsOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbIHR5cGUgXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFJl
bW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdzIG5vIGxvbmdlciB1c2VkCiAgICAgICAgICAgICAgICBp
ZiAoIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBldmVudHMgKSApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIGhhbmRsZSA9IGVsZW1EYXRhLmhhbmRsZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBoYW5kbGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxl
LmVsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
ICAgICAgICBkZWxldGUgZWxlbURhdGEuZXZlbnRzOwogICAgICAgICAgICAgICAgICAgICAgICBk
ZWxldGUgZWxlbURhdGEuaGFuZGxlOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVl
cnkuaXNFbXB0eU9iamVjdCggZWxlbURhdGEgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkucmVtb3ZlRGF0YSggZWxlbSwgdW5kZWZpbmVkLCB0cnVlICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAg
IAogICAgICAgIC8vIEV2ZW50cyB0aGF0IGFyZSBzYWZlIHRvIHNob3J0LWNpcmN1aXQgaWYgbm8g
aGFuZGxlcnMgYXJlIGF0dGFjaGVkLgogICAgICAgIC8vIE5hdGl2ZSBET00gZXZlbnRzIHNob3Vs
ZCBub3QgYmUgYWRkZWQsIHRoZXkgbWF5IGhhdmUgaW5saW5lIGhhbmRsZXJzLgogICAgICAgIGN1
c3RvbUV2ZW50OiB7CiAgICAgICAgICAgICAgICAiZ2V0RGF0YSI6IHRydWUsCiAgICAgICAgICAg
ICAgICAic2V0RGF0YSI6IHRydWUsCiAgICAgICAgICAgICAgICAiY2hhbmdlRGF0YSI6IHRydWUK
ICAgICAgICB9LAoKICAgICAgICB0cmlnZ2VyOiBmdW5jdGlvbiggZXZlbnQsIGRhdGEsIGVsZW0s
IG9ubHlIYW5kbGVycyApIHsKICAgICAgICAgICAgICAgIC8vIEV2ZW50IG9iamVjdCBvciBldmVu
dCB0eXBlCiAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwgZXZlbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMgPSBbXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjbHVzaXZlOwoKICAgICAgICAgICAgICAgIGlmICggdHlwZS5pbmRleE9mKCIhIikg
Pj0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhjbHVzaXZlIGV2ZW50cyB0cmln
Z2VyIG9ubHkgZm9yIHRoZSBleGFjdCBldmVudCAobm8gbmFtZXNwYWNlcykKICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZSA9IHR5cGUuc2xpY2UoMCwgLTEpOwogICAgICAgICAgICAgICAgICAg
ICAgICBleGNsdXNpdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
IGlmICggdHlwZS5pbmRleE9mKCIuIikgPj0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gTmFtZXNwYWNlZCB0cmlnZ2VyOyBjcmVhdGUgYSByZWdleHAgdG8gbWF0Y2ggZXZlbnQgdHlw
ZSBpbiBoYW5kbGUoKQogICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzID0gdHlwZS5z
cGxpdCgiLiIpOwogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gbmFtZXNwYWNlcy5zaGlm
dCgpOwogICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzLnNvcnQoKTsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICghZWxlbSB8fCBqUXVlcnkuZXZlbnQuY3Vz
dG9tRXZlbnRbIHR5cGUgXSkgJiYgIWpRdWVyeS5ldmVudC5nbG9iYWxbIHR5cGUgXSApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gTm8galF1ZXJ5IGhhbmRsZXJzIGZvciB0aGlzIGV2ZW50
IHR5cGUsIGFuZCBpdCBjYW4ndCBoYXZlIGlubGluZSBoYW5kbGVycwogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQ2Fs
bGVyIGNhbiBwYXNzIGluIGFuIEV2ZW50LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBz
dHJpbmcKICAgICAgICAgICAgICAgIGV2ZW50ID0gdHlwZW9mIGV2ZW50ID09PSAib2JqZWN0IiA/
CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGpRdWVyeS5FdmVudCBvYmplY3QKICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gPyBldmVudCA6CiAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIE9iamVjdCBsaXRlcmFsCiAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIGV2ZW50ICkgOgogICAgICAgICAgICAgICAgICAgICAg
ICAvLyBKdXN0IHRoZSBldmVudCB0eXBlIChzdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAg
IG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUgKTsKCiAgICAgICAgICAgICAgICBldmVudC50eXBlID0g
dHlwZTsKICAgICAgICAgICAgICAgIGV2ZW50LmV4Y2x1c2l2ZSA9IGV4Y2x1c2l2ZTsKICAgICAg
ICAgICAgICAgIGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbigiLiIpOwogICAgICAg
ICAgICAgICAgZXZlbnQubmFtZXNwYWNlX3JlID0gbmV3IFJlZ0V4cCgiKF58XFwuKSIgKyBuYW1l
c3BhY2VzLmpvaW4oIlxcLig/Oi4qXFwuKT8iKSArICIoXFwufCQpIik7CiAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgIC8vIHRyaWdnZXJIYW5kbGVyKCkgYW5kIGdsb2JhbCBldmVudHMg
ZG9uJ3QgYnViYmxlIG9yIHJ1biB0aGUgZGVmYXVsdCBhY3Rpb24KICAgICAgICAgICAgICAgIGlm
ICggb25seUhhbmRsZXJzIHx8ICFlbGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJv
cGFnYXRpb24oKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBIYW5kbGUg
YSBnbG9iYWwgdHJpZ2dlcgogICAgICAgICAgICAgICAgaWYgKCAhZWxlbSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVE9ETzogU3RvcCB0YXVudGluZyB0aGUgZGF0YSBjYWNoZTsgcmVt
b3ZlIGdsb2JhbCBldmVudHMgYW5kIGFsd2F5cyBhdHRhY2ggdG8gZG9jdW1lbnQKICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goIGpRdWVyeS5jYWNoZSwgZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZXJuYWxLZXkgdmFyaWFibGUgaXMg
anVzdCB1c2VkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGZpbmQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhbmQgcG90ZW50aWFsbHkgY2hhbmdlIHRoaXMgc3R1ZmYgbGF0ZXI7IGN1
cnJlbnRseSBpdCBqdXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9pbnRz
IHRvIGpRdWVyeS5leHBhbmRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlu
dGVybmFsS2V5ID0galF1ZXJ5LmV4cGFuZG8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcm5hbENhY2hlID0gdGhpc1sgaW50ZXJuYWxLZXkgXTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGludGVybmFsQ2FjaGUgJiYgaW50ZXJuYWxDYWNo
ZS5ldmVudHMgJiYgaW50ZXJuYWxDYWNoZS5ldmVudHNbIHR5cGUgXSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCBldmVudCwg
ZGF0YSwgaW50ZXJuYWxDYWNoZS5oYW5kbGUuZWxlbSApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBEb24n
dCBkbyBldmVudHMgb24gdGV4dCBhbmQgY29tbWVudCBub2RlcwogICAgICAgICAgICAgICAgaWYg
KCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWQKICAgICAg
ICAgICAgICAgIGV2ZW50LnJlc3VsdCA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIGV2ZW50
LnRhcmdldCA9IGVsZW07CgogICAgICAgICAgICAgICAgLy8gQ2xvbmUgYW55IGluY29taW5nIGRh
dGEgYW5kIHByZXBlbmQgdGhlIGV2ZW50LCBjcmVhdGluZyB0aGUgaGFuZGxlciBhcmcgbGlzdAog
ICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgIT0gbnVsbCA/IGpRdWVyeS5tYWtlQXJyYXkoIGRh
dGEgKSA6IFtdOwogICAgICAgICAgICAgICAgZGF0YS51bnNoaWZ0KCBldmVudCApOwoKICAgICAg
ICAgICAgICAgIHZhciBjdXIgPSBlbGVtLAogICAgICAgICAgICAgICAgICAgICAgICAvLyBJRSBk
b2Vzbid0IGxpa2UgbWV0aG9kIG5hbWVzIHdpdGggYSBjb2xvbiAoIzM1MzMsICM4MjcyKQogICAg
ICAgICAgICAgICAgICAgICAgICBvbnR5cGUgPSB0eXBlLmluZGV4T2YoIjoiKSA8IDAgPyAib24i
ICsgdHlwZSA6ICIiOwoKICAgICAgICAgICAgICAgIC8vIEZpcmUgZXZlbnQgb24gdGhlIGN1cnJl
bnQgZWxlbWVudCwgdGhlbiBidWJibGUgdXAgdGhlIERPTSB0cmVlCiAgICAgICAgICAgICAgICBk
byB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGUgPSBqUXVlcnkuX2RhdGEoIGN1
ciwgImhhbmRsZSIgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJn
ZXQgPSBjdXI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxlICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZS5hcHBseSggY3VyLCBkYXRhICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIg
YW4gaW5saW5lIGJvdW5kIHNjcmlwdAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9udHlw
ZSAmJiBqUXVlcnkuYWNjZXB0RGF0YSggY3VyICkgJiYgY3VyWyBvbnR5cGUgXSAmJiBjdXJbIG9u
dHlwZSBdLmFwcGx5KCBjdXIsIGRhdGEgKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnQucmVzdWx0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0
aGVuIHRvIHdpbmRvdwogICAgICAgICAgICAgICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9k
ZSB8fCBjdXIub3duZXJEb2N1bWVudCB8fCBjdXIgPT09IGV2ZW50LnRhcmdldC5vd25lckRvY3Vt
ZW50ICYmIHdpbmRvdzsKICAgICAgICAgICAgICAgIH0gd2hpbGUgKCBjdXIgJiYgIWV2ZW50Lmlz
UHJvcGFnYXRpb25TdG9wcGVkKCkgKTsKCiAgICAgICAgICAgICAgICAvLyBJZiBub2JvZHkgcHJl
dmVudGVkIHRoZSBkZWZhdWx0IGFjdGlvbiwgZG8gaXQgbm93CiAgICAgICAgICAgICAgICBpZiAo
ICFldmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG9sZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsID0galF1ZXJ5
LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggKCFzcGVjaWFsLl9kZWZhdWx0IHx8IHNwZWNpYWwuX2RlZmF1bHQuY2FsbCggZWxlbS5vd25l
ckRvY3VtZW50LCBldmVudCApID09PSBmYWxzZSkgJiYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAhKHR5cGUgPT09ICJjbGljayIgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiYSIg
KSkgJiYgalF1ZXJ5LmFjY2VwdERhdGEoIGVsZW0gKSApIHsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gQ2FsbCBhIG5hdGl2ZSBET00gbWV0aG9kIG9uIHRoZSB0YXJnZXQgd2l0
aCB0aGUgc2FtZSBuYW1lIG5hbWUgYXMgdGhlIGV2ZW50LgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENhbid0IHVzZSBhbiAuaXNGdW5jdGlvbikoKSBjaGVjayBoZXJlIGJlY2F1
c2UgSUU2LzcgZmFpbHMgdGhhdCB0ZXN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIElFPDkgZGllcyBvbiBmb2N1cyB0byBoaWRkZW4gZWxlbWVudCAoIzE0ODYpLCBtYXkgd2Fu
dCB0byByZXZpc2l0IGEgdHJ5L2NhdGNoLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9udHlw
ZSAmJiBlbGVtWyB0eXBlIF0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIERvbid0IHJlLXRyaWdnZXIgYW4gb25GT08gZXZlbnQgd2hlbiB3ZSBj
YWxsIGl0cyBGT08oKSBtZXRob2QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb2xkID0gZWxlbVsgb250eXBlIF07CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9sZCApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtWyBvbnR5cGUgXSA9IG51
bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVu
dC50cmlnZ2VyZWQgPSB0eXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbGVtWyB0eXBlIF0oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoICggaWVF
cnJvciApIHt9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggb2xkICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVsgb250eXBlIF0gPSBv
bGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkID0gdW5kZWZpbmVkOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgIHJldHVybiBldmVudC5yZXN1bHQ7CiAgICAgICAgfSwKCiAgICAgICAgaGFu
ZGxlOiBmdW5jdGlvbiggZXZlbnQgKSB7CiAgICAgICAgICAgICAgICBldmVudCA9IGpRdWVyeS5l
dmVudC5maXgoIGV2ZW50IHx8IHdpbmRvdy5ldmVudCApOwogICAgICAgICAgICAgICAgLy8gU25h
cHNob3QgdGhlIGhhbmRsZXJzIGxpc3Qgc2luY2UgYSBjYWxsZWQgaGFuZGxlciBtYXkgYWRkL3Jl
bW92ZSBldmVudHMuCiAgICAgICAgICAgICAgICB2YXIgaGFuZGxlcnMgPSAoKGpRdWVyeS5fZGF0
YSggdGhpcywgImV2ZW50cyIgKSB8fCB7fSlbIGV2ZW50LnR5cGUgXSB8fCBbXSkuc2xpY2UoMCks
CiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9hbGwgPSAhZXZlbnQuZXhjbHVzaXZlICYmICFl
dmVudC5uYW1lc3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbCggYXJndW1lbnRzLCAwICk7CgogICAgICAgICAgICAgICAgLy8gVXNl
IHRoZSBmaXgtZWQgRXZlbnQgcmF0aGVyIHRoYW4gdGhlIChyZWFkLW9ubHkpIG5hdGl2ZSBldmVu
dAogICAgICAgICAgICAgICAgYXJnc1swXSA9IGV2ZW50OwogICAgICAgICAgICAgICAgZXZlbnQu
Y3VycmVudFRhcmdldCA9IHRoaXM7CgogICAgICAgICAgICAgICAgZm9yICggdmFyIGogPSAwLCBs
ID0gaGFuZGxlcnMubGVuZ3RoOyBqIDwgbDsgaisrICkgewogICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgaGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTsKCiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IDEpIGJlIG5vbi1leGNsdXNpdmUgYW5kIGhhdmUgbm8g
bmFtZXNwYWNlLCBvcgogICAgICAgICAgICAgICAgICAgICAgICAvLyAyKSBoYXZlIG5hbWVzcGFj
ZShzKSBhIHN1YnNldCBvciBlcXVhbCB0byB0aG9zZSBpbiB0aGUgYm91bmQgZXZlbnQuCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggcnVuX2FsbCB8fCBldmVudC5uYW1lc3BhY2VfcmUudGVz
dCggaGFuZGxlT2JqLm5hbWVzcGFjZSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFBhc3MgaW4gYSByZWZlcmVuY2UgdG8gdGhlIGhhbmRsZXIgZnVuY3Rpb24gaXRzZWxm
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU28gdGhhdCB3ZSBjYW4gbGF0ZXIg
cmVtb3ZlIGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuaGFuZGxlciA9
IGhhbmRsZU9iai5oYW5kbGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50
LmRhdGEgPSBoYW5kbGVPYmouZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhciByZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJncyApOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVzdWx0ID0gcmV0
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXQgPT09IGZh
bHNlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZXZlbnQuaXNJbW1lZGlhdGVQ
cm9wYWdhdGlvblN0b3BwZWQoKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJu
IGV2ZW50LnJlc3VsdDsKICAgICAgICB9LAoKICAgICAgICBwcm9wczogImFsdEtleSBhdHRyQ2hh
bmdlIGF0dHJOYW1lIGJ1YmJsZXMgYnV0dG9uIGNhbmNlbGFibGUgY2hhckNvZGUgY2xpZW50WCBj
bGllbnRZIGN0cmxLZXkgY3VycmVudFRhcmdldCBkYXRhIGRldGFpbCBldmVudFBoYXNlIGZyb21F
bGVtZW50IGhhbmRsZXIga2V5Q29kZSBsYXllclggbGF5ZXJZIG1ldGFLZXkgbmV3VmFsdWUgb2Zm
c2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHByZXZWYWx1ZSByZWxhdGVkTm9kZSByZWxhdGVkVGFy
Z2V0IHNjcmVlblggc2NyZWVuWSBzaGlmdEtleSBzcmNFbGVtZW50IHRhcmdldCB0b0VsZW1lbnQg
dmlldyB3aGVlbERlbHRhIHdoaWNoIi5zcGxpdCgiICIpLAoKICAgICAgICBmaXg6IGZ1bmN0aW9u
KCBldmVudCApIHsKICAgICAgICAgICAgICAgIGlmICggZXZlbnRbIGpRdWVyeS5leHBhbmRvIF0g
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudDsKICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAvLyBzdG9yZSBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGV2ZW50
IG9iamVjdAogICAgICAgICAgICAgICAgLy8gYW5kICJjbG9uZSIgdG8gc2V0IHJlYWQtb25seSBw
cm9wZXJ0aWVzCiAgICAgICAgICAgICAgICB2YXIgb3JpZ2luYWxFdmVudCA9IGV2ZW50OwogICAg
ICAgICAgICAgICAgZXZlbnQgPSBqUXVlcnkuRXZlbnQoIG9yaWdpbmFsRXZlbnQgKTsKCiAgICAg
ICAgICAgICAgICBmb3IgKCB2YXIgaSA9IHRoaXMucHJvcHMubGVuZ3RoLCBwcm9wOyBpOyApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvcCA9IHRoaXMucHJvcHNbIC0taSBdOwogICAgICAg
ICAgICAgICAgICAgICAgICBldmVudFsgcHJvcCBdID0gb3JpZ2luYWxFdmVudFsgcHJvcCBdOwog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEZpeCB0YXJnZXQgcHJvcGVydHks
IGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQudGFyZ2V0ICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBGaXhlcyAjMTkyNSB3aGVyZSBzcmNFbGVtZW50IG1pZ2h0
IG5vdCBiZSBkZWZpbmVkIGVpdGhlcgogICAgICAgICAgICAgICAgICAgICAgICBldmVudC50YXJn
ZXQgPSBldmVudC5zcmNFbGVtZW50IHx8IGRvY3VtZW50OwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRhcmdldCBpcyBhIHRleHRub2RlIChzYWZhcmkpCiAg
ICAgICAgICAgICAgICBpZiAoIGV2ZW50LnRhcmdldC5ub2RlVHlwZSA9PT0gMyApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0ID0gZXZlbnQudGFyZ2V0LnBhcmVudE5vZGU7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQWRkIHJlbGF0ZWRUYXJnZXQs
IGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQucmVsYXRlZFRhcmdldCAm
JiBldmVudC5mcm9tRWxlbWVudCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucmVs
YXRlZFRhcmdldCA9IGV2ZW50LmZyb21FbGVtZW50ID09PSBldmVudC50YXJnZXQgPyBldmVudC50
b0VsZW1lbnQgOiBldmVudC5mcm9tRWxlbWVudDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAvLyBDYWxjdWxhdGUgcGFnZVgvWSBpZiBtaXNzaW5nIGFuZCBjbGllbnRYL1kgYXZh
aWxhYmxlCiAgICAgICAgICAgICAgICBpZiAoIGV2ZW50LnBhZ2VYID09IG51bGwgJiYgZXZlbnQu
Y2xpZW50WCAhPSBudWxsICkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXZlbnREb2N1
bWVudCA9IGV2ZW50LnRhcmdldC5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvYyA9IGV2ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBldmVudERvY3VtZW50LmJv
ZHk7CgogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wYWdlWCA9IGV2ZW50LmNsaWVudFgg
KyAoZG9jICYmIGRvYy5zY3JvbGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5zY3JvbGxMZWZ0IHx8IDAp
IC0gKGRvYyAmJiBkb2MuY2xpZW50TGVmdCB8fCBib2R5ICYmIGJvZHkuY2xpZW50TGVmdCB8fCAw
KTsKICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucGFnZVkgPSBldmVudC5jbGllbnRZICsg
KGRvYyAmJiBkb2Muc2Nyb2xsVG9wICB8fCBib2R5ICYmIGJvZHkuc2Nyb2xsVG9wICB8fCAwKSAt
IChkb2MgJiYgZG9jLmNsaWVudFRvcCAgfHwgYm9keSAmJiBib2R5LmNsaWVudFRvcCAgfHwgMCk7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gQWRkIHdoaWNoIGZvciBrZXkg
ZXZlbnRzCiAgICAgICAgICAgICAgICBpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgKGV2ZW50
LmNoYXJDb2RlICE9IG51bGwgfHwgZXZlbnQua2V5Q29kZSAhPSBudWxsKSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnQud2hpY2ggPSBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZl
bnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgIC8vIEFkZCBtZXRhS2V5IHRvIG5vbi1NYWMgYnJvd3NlcnMgKHVzZSBjdHJsIGZvciBQ
QydzIGFuZCBNZXRhIGZvciBNYWNzKQogICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQubWV0YUtl
eSAmJiBldmVudC5jdHJsS2V5ICkgewogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tZXRh
S2V5ID0gZXZlbnQuY3RybEtleTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAv
LyBBZGQgd2hpY2ggZm9yIGNsaWNrOiAxID09PSBsZWZ0OyAyID09PSBtaWRkbGU7IDMgPT09IHJp
Z2h0CiAgICAgICAgICAgICAgICAvLyBOb3RlOiBidXR0b24gaXMgbm90IG5vcm1hbGl6ZWQsIHNv
IGRvbid0IHVzZSBpdAogICAgICAgICAgICAgICAgaWYgKCAhZXZlbnQud2hpY2ggJiYgZXZlbnQu
YnV0dG9uICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Lndo
aWNoID0gKGV2ZW50LmJ1dHRvbiAmIDEgPyAxIDogKCBldmVudC5idXR0b24gJiAyID8gMyA6ICgg
ZXZlbnQuYnV0dG9uICYgNCA/IDIgOiAwICkgKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgcmV0dXJuIGV2ZW50OwogICAgICAgIH0sCgogICAgICAgIC8vIERlcHJlY2F0ZWQs
IHVzZSBqUXVlcnkuZ3VpZCBpbnN0ZWFkCiAgICAgICAgZ3VpZDogMUU4LAoKICAgICAgICAvLyBE
ZXByZWNhdGVkLCB1c2UgalF1ZXJ5LnByb3h5IGluc3RlYWQKICAgICAgICBwcm94eTogalF1ZXJ5
LnByb3h5LAoKICAgICAgICBzcGVjaWFsOiB7CiAgICAgICAgICAgICAgICByZWFkeTogewogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHJlYWR5IGV2ZW50IGlzIHNldHVw
CiAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwOiBqUXVlcnkuYmluZFJlYWR5LAogICAgICAg
ICAgICAgICAgICAgICAgICB0ZWFyZG93bjogalF1ZXJ5Lm5vb3AKICAgICAgICAgICAgICAgIH0s
CgogICAgICAgICAgICAgICAgbGl2ZTogewogICAgICAgICAgICAgICAgICAgICAgICBhZGQ6IGZ1
bmN0aW9uKCBoYW5kbGVPYmogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LmV2ZW50LmFkZCggdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpdmVDb252ZXJ0KCBoYW5kbGVPYmoub3JpZ1R5cGUsIGhhbmRsZU9iai5zZWxlY3RvciAp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV4dGVuZCh7
fSwgaGFuZGxlT2JqLCB7aGFuZGxlcjogbGl2ZUhhbmRsZXIsIGd1aWQ6IGhhbmRsZU9iai5oYW5k
bGVyLmd1aWR9KSApOwogICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAg
ICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiggaGFuZGxlT2JqICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIGxpdmVDb252ZXJ0KCBo
YW5kbGVPYmoub3JpZ1R5cGUsIGhhbmRsZU9iai5zZWxlY3RvciApLCBoYW5kbGVPYmogKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAg
ICBiZWZvcmV1bmxvYWQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXA6IGZ1bmN0aW9u
KCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBzcGVjaWFsIGNhc2Ugb24gd2lu
ZG93cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzV2luZG93
KCB0aGlzICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
Lm9uYmVmb3JldW5sb2FkID0gZXZlbnRIYW5kbGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICAg
ICAgdGVhcmRvd246IGZ1bmN0aW9uKCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXMub25iZWZvcmV1bmxvYWQgPT09IGV2
ZW50SGFuZGxlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5vbmJlZm9yZXVubG9hZCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQp9
OwoKalF1ZXJ5LnJlbW92ZUV2ZW50ID0gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lciA/CiAg
ICAgICAgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHsKICAgICAgICAgICAgICAgIGlm
ICggZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyICkgewogICAgICAgICAgICAgICAgICAgICAgICBl
bGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIGhhbmRsZSwgZmFsc2UgKTsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICB9IDoKICAgICAgICBmdW5jdGlvbiggZWxlbSwgdHlwZSwgaGFuZGxl
ICkgewogICAgICAgICAgICAgICAgaWYgKCBlbGVtLmRldGFjaEV2ZW50ICkgewogICAgICAgICAg
ICAgICAgICAgICAgICBlbGVtLmRldGFjaEV2ZW50KCAib24iICsgdHlwZSwgaGFuZGxlICk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgfTsKCmpRdWVyeS5FdmVudCA9IGZ1bmN0aW9uKCBzcmMs
IHByb3BzICkgewogICAgICAgIC8vIEFsbG93IGluc3RhbnRpYXRpb24gd2l0aG91dCB0aGUgJ25l
dycga2V5d29yZAogICAgICAgIGlmICggIXRoaXMucHJldmVudERlZmF1bHQgKSB7CiAgICAgICAg
ICAgICAgICByZXR1cm4gbmV3IGpRdWVyeS5FdmVudCggc3JjLCBwcm9wcyApOwogICAgICAgIH0K
CiAgICAgICAgLy8gRXZlbnQgb2JqZWN0CiAgICAgICAgaWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7
CiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsRXZlbnQgPSBzcmM7CiAgICAgICAgICAgICAg
ICB0aGlzLnR5cGUgPSBzcmMudHlwZTsKCiAgICAgICAgICAgICAgICAvLyBFdmVudHMgYnViYmxp
bmcgdXAgdGhlIGRvY3VtZW50IG1heSBoYXZlIGJlZW4gbWFya2VkIGFzIHByZXZlbnRlZAogICAg
ICAgICAgICAgICAgLy8gYnkgYSBoYW5kbGVyIGxvd2VyIGRvd24gdGhlIHRyZWU7IHJlZmxlY3Qg
dGhlIGNvcnJlY3QgdmFsdWUuCiAgICAgICAgICAgICAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRl
ZCA9IChzcmMuZGVmYXVsdFByZXZlbnRlZCB8fCBzcmMucmV0dXJuVmFsdWUgPT09IGZhbHNlIHx8
CiAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5nZXRQcmV2ZW50RGVmYXVsdCAmJiBzcmMuZ2V0
UHJldmVudERlZmF1bHQoKSkgPyByZXR1cm5UcnVlIDogcmV0dXJuRmFsc2U7CgogICAgICAgIC8v
IEV2ZW50IHR5cGUKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy50eXBlID0g
c3JjOwogICAgICAgIH0KCiAgICAgICAgLy8gUHV0IGV4cGxpY2l0bHkgcHJvdmlkZWQgcHJvcGVy
dGllcyBvbnRvIHRoZSBldmVudCBvYmplY3QKICAgICAgICBpZiAoIHByb3BzICkgewogICAgICAg
ICAgICAgICAgalF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTsKICAgICAgICB9CgogICAgICAg
IC8vIHRpbWVTdGFtcCBpcyBidWdneSBmb3Igc29tZSBldmVudHMgb24gRmlyZWZveCgjMzg0MykK
ICAgICAgICAvLyBTbyB3ZSB3b24ndCByZWx5IG9uIHRoZSBuYXRpdmUgdmFsdWUKICAgICAgICB0
aGlzLnRpbWVTdGFtcCA9IGpRdWVyeS5ub3coKTsKCiAgICAgICAgLy8gTWFyayBpdCBhcyBmaXhl
ZAogICAgICAgIHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlOwp9OwoKZnVuY3Rpb24gcmV0
dXJuRmFsc2UoKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwp9CmZ1bmN0aW9uIHJldHVyblRydWUo
KSB7CiAgICAgICAgcmV0dXJuIHRydWU7Cn0KCi8vIGpRdWVyeS5FdmVudCBpcyBiYXNlZCBvbiBE
T00zIEV2ZW50cyBhcyBzcGVjaWZpZWQgYnkgdGhlIEVDTUFTY3JpcHQgTGFuZ3VhZ2UgQmluZGlu
ZwovLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDAz
MDMzMS9lY21hLXNjcmlwdC1iaW5kaW5nLmh0bWwKalF1ZXJ5LkV2ZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICBwcmV2ZW50RGVmYXVsdDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZCA9IHJldHVyblRydWU7CgogICAgICAgICAgICAgICAgdmFyIGUg
PSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgICAgICBpZiAoICFlICkgewogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgLy8gaWYgcHJldmVudERlZmF1bHQgZXhpc3RzIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZl
bnQKICAgICAgICAgICAgICAgIGlmICggZS5wcmV2ZW50RGVmYXVsdCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgIC8vIG90aGVy
d2lzZSBzZXQgdGhlIHJldHVyblZhbHVlIHByb3BlcnR5IG9mIHRoZSBvcmlnaW5hbCBldmVudCB0
byBmYWxzZSAoSUUpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwK
ICAgICAgICBzdG9wUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhp
cy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7CgogICAgICAgICAgICAgICAgdmFy
IGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7CiAgICAgICAgICAgICAgICBpZiAoICFlICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAvLyBpZiBzdG9wUHJvcGFnYXRpb24gZXhpc3RzIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwg
ZXZlbnQKICAgICAgICAgICAgICAgIGlmICggZS5zdG9wUHJvcGFnYXRpb24gKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAvLyBvdGhlcndpc2Ugc2V0IHRoZSBjYW5jZWxCdWJibGUgcHJvcGVydHkg
b2YgdGhlIG9yaWdpbmFsIGV2ZW50IHRvIHRydWUgKElFKQogICAgICAgICAgICAgICAgZS5jYW5j
ZWxCdWJibGUgPSB0cnVlOwogICAgICAgIH0sCiAgICAgICAgc3RvcEltbWVkaWF0ZVByb3BhZ2F0
aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXNJbW1lZGlhdGVQcm9wYWdh
dGlvblN0b3BwZWQgPSByZXR1cm5UcnVlOwogICAgICAgICAgICAgICAgdGhpcy5zdG9wUHJvcGFn
YXRpb24oKTsKICAgICAgICB9LAogICAgICAgIGlzRGVmYXVsdFByZXZlbnRlZDogcmV0dXJuRmFs
c2UsCiAgICAgICAgaXNQcm9wYWdhdGlvblN0b3BwZWQ6IHJldHVybkZhbHNlLAogICAgICAgIGlz
SW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZQp9OwoKLy8gQ2hlY2tzIGlm
IGFuIGV2ZW50IGhhcHBlbmVkIG9uIGFuIGVsZW1lbnQgd2l0aGluIGFub3RoZXIgZWxlbWVudAov
LyBVc2VkIGluIGpRdWVyeS5ldmVudC5zcGVjaWFsLm1vdXNlZW50ZXIgYW5kIG1vdXNlbGVhdmUg
aGFuZGxlcnMKdmFyIHdpdGhpbkVsZW1lbnQgPSBmdW5jdGlvbiggZXZlbnQgKSB7CgogICAgICAg
IC8vIENoZWNrIGlmIG1vdXNlKG92ZXJ8b3V0KSBhcmUgc3RpbGwgd2l0aGluIHRoZSBzYW1lIHBh
cmVudCBlbGVtZW50CiAgICAgICAgdmFyIHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LAog
ICAgICAgICAgICAgICAgaW5zaWRlID0gZmFsc2UsCiAgICAgICAgICAgICAgICBldmVudFR5cGUg
PSBldmVudC50eXBlOwoKICAgICAgICBldmVudC50eXBlID0gZXZlbnQuZGF0YTsKCiAgICAgICAg
aWYgKCByZWxhdGVkICE9PSB0aGlzICkgewoKICAgICAgICAgICAgICAgIGlmICggcmVsYXRlZCAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5zaWRlID0galF1ZXJ5LmNvbnRhaW5zKCB0aGlz
LCByZWxhdGVkICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAhaW5z
aWRlICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmhhbmRsZS5hcHBs
eSggdGhpcywgYXJndW1lbnRzICk7CgogICAgICAgICAgICAgICAgICAgICAgICBldmVudC50eXBl
ID0gZXZlbnRUeXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfSwKCi8vIEluIGNhc2Ug
b2YgZXZlbnQgZGVsZWdhdGlvbiwgd2Ugb25seSBuZWVkIHRvIHJlbmFtZSB0aGUgZXZlbnQudHlw
ZSwKLy8gbGl2ZUhhbmRsZXIgd2lsbCB0YWtlIGNhcmUgb2YgdGhlIHJlc3QuCmRlbGVnYXRlID0g
ZnVuY3Rpb24oIGV2ZW50ICkgewogICAgICAgIGV2ZW50LnR5cGUgPSBldmVudC5kYXRhOwogICAg
ICAgIGpRdWVyeS5ldmVudC5oYW5kbGUuYXBwbHkoIHRoaXMsIGFyZ3VtZW50cyApOwp9OwoKLy8g
Q3JlYXRlIG1vdXNlZW50ZXIgYW5kIG1vdXNlbGVhdmUgZXZlbnRzCmpRdWVyeS5lYWNoKHsKICAg
ICAgICBtb3VzZWVudGVyOiAibW91c2VvdmVyIiwKICAgICAgICBtb3VzZWxlYXZlOiAibW91c2Vv
dXQiCn0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7CiAgICAgICAgalF1ZXJ5LmV2ZW50LnNwZWNp
YWxbIG9yaWcgXSA9IHsKICAgICAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbiggZGF0YSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgZml4LCBkYXRh
ICYmIGRhdGEuc2VsZWN0b3IgPyBkZWxlZ2F0ZSA6IHdpdGhpbkVsZW1lbnQsIG9yaWcgKTsKICAg
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oIGRhdGEg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsIGZp
eCwgZGF0YSAmJiBkYXRhLnNlbGVjdG9yID8gZGVsZWdhdGUgOiB3aXRoaW5FbGVtZW50ICk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgfTsKfSk7CgovLyBzdWJtaXQgZGVsZWdhdGlvbgppZiAo
ICFqUXVlcnkuc3VwcG9ydC5zdWJtaXRCdWJibGVzICkgewoKICAgICAgICBqUXVlcnkuZXZlbnQu
c3BlY2lhbC5zdWJtaXQgPSB7CiAgICAgICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oIGRhdGEs
IG5hbWVzcGFjZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWpRdWVyeS5ub2Rl
TmFtZSggdGhpcywgImZvcm0iICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5LmV2ZW50LmFkZCh0aGlzLCAiY2xpY2suc3BlY2lhbFN1Ym1pdCIsIGZ1bmN0aW9uKCBl
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgdHJp
Z2dlcmluZyBlcnJvciBvbiBub24tZXhpc3RlbnQgdHlwZSBhdHRyaWJ1dGUgaW4gSUUgVk1MICgj
NzA3MSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtID0g
ZS50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGUgPSBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSB8fCBqUXVlcnkubm9kZU5h
bWUoIGVsZW0sICJidXR0b24iICkgPyBlbGVtLnR5cGUgOiAiIjsKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICh0eXBlID09PSAic3VibWl0IiB8fCB0eXBlID09
PSAiaW1hZ2UiKSAmJiBqUXVlcnkoIGVsZW0gKS5jbG9zZXN0KCJmb3JtIikubGVuZ3RoICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKCAi
c3VibWl0IiwgdGhpcywgYXJndW1lbnRzICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5hZGQodGhpcywgImtleXByZXNz
LnNwZWNpYWxTdWJtaXQiLCBmdW5jdGlvbiggZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBlbGVtID0gZS50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBqUXVlcnkubm9kZU5hbWUoIGVsZW0s
ICJpbnB1dCIgKSB8fCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJidXR0b24iICkgPyBlbGVtLnR5
cGUgOiAiIjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICh0
eXBlID09PSAidGV4dCIgfHwgdHlwZSA9PT0gInBhc3N3b3JkIikgJiYgalF1ZXJ5KCBlbGVtICku
Y2xvc2VzdCgiZm9ybSIpLmxlbmd0aCAmJiBlLmtleUNvZGUgPT09IDEzICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKCAic3VibWl0Iiwg
dGhpcywgYXJndW1lbnRzICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKCiAgICAg
ICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oIG5hbWVzcGFjZXMgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsICIuc3BlY2lhbFN1Ym1pdCIg
KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9OwoKfQoKLy8gY2hhbmdlIGRlbGVnYXRpb24s
IGhhcHBlbnMgaGVyZSBzbyB3ZSBoYXZlIGJpbmQuCmlmICggIWpRdWVyeS5zdXBwb3J0LmNoYW5n
ZUJ1YmJsZXMgKSB7CgogICAgICAgIHZhciBjaGFuZ2VGaWx0ZXJzLAoKICAgICAgICBnZXRWYWwg
PSBmdW5jdGlvbiggZWxlbSApIHsKICAgICAgICAgICAgICAgIHZhciB0eXBlID0galF1ZXJ5Lm5v
ZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgPyBlbGVtLnR5cGUgOiAiIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsID0gZWxlbS52YWx1ZTsKCiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09
ICJyYWRpbyIgfHwgdHlwZSA9PT0gImNoZWNrYm94IiApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsID0gZWxlbS5jaGVja2VkOwoKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGUg
PT09ICJzZWxlY3QtbXVsdGlwbGUiICkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBl
bGVtLnNlbGVjdGVkSW5kZXggPiAtMSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5Lm1hcCggZWxlbS5vcHRpb25zLCBmdW5jdGlvbiggZWxlbSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLnNlbGVjdGVkOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmpvaW4oIi0iKSA6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiI7CgogICAgICAgICAgICAgICAgfSBlbHNlIGlmICggalF1ZXJ5Lm5v
ZGVOYW1lKCBlbGVtLCAic2VsZWN0IiApICkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwg
PSBlbGVtLnNlbGVjdGVkSW5kZXg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
cmV0dXJuIHZhbDsKICAgICAgICB9LAoKICAgICAgICB0ZXN0Q2hhbmdlID0gZnVuY3Rpb24gdGVz
dENoYW5nZSggZSApIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gZS50YXJnZXQsIGRhdGEs
IHZhbDsKCiAgICAgICAgICAgICAgICBpZiAoICFyZm9ybUVsZW1zLnRlc3QoIGVsZW0ubm9kZU5h
bWUgKSB8fCBlbGVtLnJlYWRPbmx5ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZGF0YSA9IGpRdWVyeS5fZGF0YSgg
ZWxlbSwgIl9jaGFuZ2VfZGF0YSIgKTsKICAgICAgICAgICAgICAgIHZhbCA9IGdldFZhbChlbGVt
KTsKCiAgICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBkYXRhIHdpbGwgYmUgYWxzbyByZXRy
aWV2ZWQgYnkgYmVmb3JlYWN0aXZhdGUKICAgICAgICAgICAgICAgIGlmICggZS50eXBlICE9PSAi
Zm9jdXNvdXQiIHx8IGVsZW0udHlwZSAhPT0gInJhZGlvIiApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgalF1ZXJ5Ll9kYXRhKCBlbGVtLCAiX2NoYW5nZV9kYXRhIiwgdmFsICk7CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBkYXRhID09PSB1bmRlZmluZWQgfHwgdmFs
ID09PSBkYXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBkYXRhICE9IG51bGwgfHwgdmFsICkgewogICAg
ICAgICAgICAgICAgICAgICAgICBlLnR5cGUgPSAiY2hhbmdlIjsKICAgICAgICAgICAgICAgICAg
ICAgICAgZS5saXZlRmlyZWQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS5ldmVudC50cmlnZ2VyKCBlLCBhcmd1bWVudHNbMV0sIGVsZW0gKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICB9OwoKICAgICAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbC5jaGFuZ2UgPSB7
CiAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvY3Vz
b3V0OiB0ZXN0Q2hhbmdlLAoKICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlZGVhY3RpdmF0
ZTogdGVzdENoYW5nZSwKCiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigg
ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IGUudGFyZ2V0
LCB0eXBlID0galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgPyBlbGVtLnR5cGUgOiAi
IjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAicmFkaW8i
IHx8IHR5cGUgPT09ICJjaGVja2JveCIgfHwgalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAic2VsZWN0
IiApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENoYW5n
ZS5jYWxsKCB0aGlzLCBlICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdl
IGhhcyB0byBiZSBjYWxsZWQgYmVmb3JlIHN1Ym1pdAogICAgICAgICAgICAgICAgICAgICAgICAv
LyBLZXlkb3duIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSBrZXlwcmVzcywgd2hpY2ggaXMgdXNlZCBp
biBzdWJtaXQtZXZlbnQgZGVsZWdhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICBrZXlkb3du
OiBmdW5jdGlvbiggZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxl
bSA9IGUudGFyZ2V0LCB0eXBlID0galF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiaW5wdXQiICkgPyBl
bGVtLnR5cGUgOiAiIjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZS5r
ZXlDb2RlID09PSAxMyAmJiAhalF1ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAidGV4dGFyZWEiICkgKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUua2V5Q29kZSA9PT0g
MzIgJiYgKHR5cGUgPT09ICJjaGVja2JveCIgfHwgdHlwZSA9PT0gInJhZGlvIikpIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09PSAic2VsZWN0LW11bHRp
cGxlIiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDaGFu
Z2UuY2FsbCggdGhpcywgZSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlZm9y
ZWFjdGl2YXRlIGhhcHBlbnMgYWxzbyBiZWZvcmUgdGhlIHByZXZpb3VzIGVsZW1lbnQgaXMgYmx1
cnJlZAogICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoaXMgZXZlbnQgeW91IGNhbid0
IHRyaWdnZXIgYSBjaGFuZ2UgZXZlbnQsIGJ1dCB5b3UgY2FuIHN0b3JlCiAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZWFj
dGl2YXRlOiBmdW5jdGlvbiggZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgZWxlbSA9IGUudGFyZ2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5fZGF0YSggZWxlbSwgIl9jaGFuZ2VfZGF0YSIsIGdldFZhbChlbGVtKSApOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHNldHVw
OiBmdW5jdGlvbiggZGF0YSwgbmFtZXNwYWNlcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCB0aGlzLnR5cGUgPT09ICJmaWxlIiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAoIHZhciB0eXBlIGluIGNoYW5nZUZpbHRlcnMgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZSArICIu
c3BlY2lhbENoYW5nZSIsIGNoYW5nZUZpbHRlcnNbdHlwZV0gKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJmb3JtRWxlbXMudGVzdCgg
dGhpcy5ub2RlTmFtZSApOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICB0ZWFy
ZG93bjogZnVuY3Rpb24oIG5hbWVzcGFjZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpR
dWVyeS5ldmVudC5yZW1vdmUoIHRoaXMsICIuc3BlY2lhbENoYW5nZSIgKTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZm9ybUVsZW1zLnRlc3QoIHRoaXMubm9kZU5hbWUgKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICBjaGFuZ2VGaWx0ZXJzID0galF1ZXJ5
LmV2ZW50LnNwZWNpYWwuY2hhbmdlLmZpbHRlcnM7CgogICAgICAgIC8vIEhhbmRsZSB3aGVuIHRo
ZSBpbnB1dCBpcyAuZm9jdXMoKSdkCiAgICAgICAgY2hhbmdlRmlsdGVycy5mb2N1cyA9IGNoYW5n
ZUZpbHRlcnMuYmVmb3JlYWN0aXZhdGU7Cn0KCmZ1bmN0aW9uIHRyaWdnZXIoIHR5cGUsIGVsZW0s
IGFyZ3MgKSB7CiAgICAgICAgLy8gUGlnZ3liYWNrIG9uIGEgZG9ub3IgZXZlbnQgdG8gc2ltdWxh
dGUgYSBkaWZmZXJlbnQgb25lLgogICAgICAgIC8vIEZha2Ugb3JpZ2luYWxFdmVudCB0byBhdm9p
ZCBkb25vcidzIHN0b3BQcm9wYWdhdGlvbiwgYnV0IGlmIHRoZQogICAgICAgIC8vIHNpbXVsYXRl
ZCBldmVudCBwcmV2ZW50cyBkZWZhdWx0IHRoZW4gd2UgZG8gdGhlIHNhbWUgb24gdGhlIGRvbm9y
LgogICAgICAgIC8vIERvbid0IHBhc3MgYXJncyBvciByZW1lbWJlciBsaXZlRmlyZWQ7IHRoZXkg
YXBwbHkgdG8gdGhlIGRvbm9yIGV2ZW50LgogICAgICAgIHZhciBldmVudCA9IGpRdWVyeS5leHRl
bmQoIHt9LCBhcmdzWyAwIF0gKTsKICAgICAgICBldmVudC50eXBlID0gdHlwZTsKICAgICAgICBl
dmVudC5vcmlnaW5hbEV2ZW50ID0ge307CiAgICAgICAgZXZlbnQubGl2ZUZpcmVkID0gdW5kZWZp
bmVkOwogICAgICAgIGpRdWVyeS5ldmVudC5oYW5kbGUuY2FsbCggZWxlbSwgZXZlbnQgKTsKICAg
ICAgICBpZiAoIGV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkgewogICAgICAgICAgICAgICAg
YXJnc1sgMCBdLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgfQp9CgovLyBDcmVhdGUgImJ1YmJs
aW5nIiBmb2N1cyBhbmQgYmx1ciBldmVudHMKaWYgKCAhalF1ZXJ5LnN1cHBvcnQuZm9jdXNpbkJ1
YmJsZXMgKSB7CiAgICAgICAgalF1ZXJ5LmVhY2goeyBmb2N1czogImZvY3VzaW4iLCBibHVyOiAi
Zm9jdXNvdXQiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7CgogICAgICAgICAgICAgICAgLy8g
QXR0YWNoIGEgc2luZ2xlIGNhcHR1cmluZyBoYW5kbGVyIHdoaWxlIHNvbWVvbmUgd2FudHMgZm9j
dXNpbi9mb2N1c291dAogICAgICAgICAgICAgICAgdmFyIGF0dGFjaGVzID0gMDsKCiAgICAgICAg
ICAgICAgICBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGF0dGFjaGVzKysgPT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCBvcmlnLCBoYW5kbGVyLCB0cnVl
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB0ZWFyZG93bjogZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAtLWF0dGFjaGVzID09PSAwICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsK
CiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVyKCBkb25vciApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gRG9ub3IgZXZlbnQgaXMgYWx3YXlzIGEgbmF0aXZlIG9uZTsgZml4IGl0
IGFuZCBzd2l0Y2ggaXRzIHR5cGUuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCBmb2N1
c2luL291dCBoYW5kbGVyIGNhbmNlbCB0aGUgZG9ub3IgZm9jdXMvYmx1ciBldmVudC4KICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIGUgPSBqUXVlcnkuZXZlbnQuZml4KCBkb25vciApOwogICAg
ICAgICAgICAgICAgICAgICAgICBlLnR5cGUgPSBmaXg7CiAgICAgICAgICAgICAgICAgICAgICAg
IGUub3JpZ2luYWxFdmVudCA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZl
bnQudHJpZ2dlciggZSwgbnVsbCwgZS50YXJnZXQgKTsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBlLmlzRGVmYXVsdFByZXZlbnRlZCgpICkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvbm9yLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KICAgICAgICB9KTsKfQoKalF1ZXJ5LmVhY2goWyJiaW5kIiwgIm9u
ZSJdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKICAgICAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1
bmN0aW9uKCB0eXBlLCBkYXRhLCBmbiApIHsKICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyOwoK
ICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBvYmplY3QgbGl0ZXJhbHMKICAgICAgICAgICAgICAg
IGlmICggdHlwZW9mIHR5cGUgPT09ICJvYmplY3QiICkgewogICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKCB2YXIga2V5IGluIHR5cGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpc1sgbmFtZSBdKGtleSwgZGF0YSwgdHlwZVtrZXldLCBmbik7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBhcmd1bWVudHMubGVuZ3RoID09PSAyIHx8
IGRhdGEgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGRhdGE7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgaWYgKCBuYW1lID09PSAib25lIiApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgaGFuZGxlciA9IGZ1bmN0aW9uKCBldmVudCApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkoIHRoaXMgKS51bmJpbmQoIGV2ZW50LCBoYW5kbGVyICk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KCB0aGlzLCBhcmd1
bWVudHMgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAg
ICAgaGFuZGxlci5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrOwogICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciA9IGZuOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggdHlwZSA9PT0gInVubG9hZCIgJiYgbmFt
ZSAhPT0gIm9uZSIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25lKCB0eXBlLCBk
YXRhLCBmbiApOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5hZGQoIHRoaXNbaV0sIHR5
cGUsIGhhbmRsZXIsIGRhdGEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH07Cn0pOwoKalF1
ZXJ5LmZuLmV4dGVuZCh7CiAgICAgICAgdW5iaW5kOiBmdW5jdGlvbiggdHlwZSwgZm4gKSB7CiAg
ICAgICAgICAgICAgICAvLyBIYW5kbGUgb2JqZWN0IGxpdGVyYWxzCiAgICAgICAgICAgICAgICBp
ZiAoIHR5cGVvZiB0eXBlID09PSAib2JqZWN0IiAmJiAhdHlwZS5wcmV2ZW50RGVmYXVsdCApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggdmFyIGtleSBpbiB0eXBlICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kKGtleSwgdHlwZVtrZXldKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMCwgbCA9IHRoaXMubGVuZ3RoOyBpIDwgbDsg
aSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC5yZW1v
dmUoIHRoaXNbaV0sIHR5cGUsIGZuICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9LAoKICAg
ICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0eXBlcywgZGF0YSwgZm4gKSB7CiAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5saXZlKCB0eXBlcywgZGF0YSwgZm4sIHNlbGVjdG9y
ICk7CiAgICAgICAgfSwKCiAgICAgICAgdW5kZWxlZ2F0ZTogZnVuY3Rpb24oIHNlbGVjdG9yLCB0
eXBlcywgZm4gKSB7CiAgICAgICAgICAgICAgICBpZiAoIGFyZ3VtZW50cy5sZW5ndGggPT09IDAg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVuYmluZCggImxpdmUiICk7
CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZGllKCB0eXBlcywgbnVsbCwgZm4sIHNlbGVjdG9yICk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgfSwKCiAgICAgICAgdHJpZ2dlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7CiAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpcyApOwogICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgdHJpZ2dlckhhbmRsZXI6IGZ1bmN0
aW9uKCB0eXBlLCBkYXRhICkgewogICAgICAgICAgICAgICAgaWYgKCB0aGlzWzBdICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmV2ZW50LnRyaWdnZXIoIHR5cGUsIGRh
dGEsIHRoaXNbMF0sIHRydWUgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAg
ICB0b2dnbGU6IGZ1bmN0aW9uKCBmbiApIHsKICAgICAgICAgICAgICAgIC8vIFNhdmUgcmVmZXJl
bmNlIHRvIGFyZ3VtZW50cyBmb3IgYWNjZXNzIGluIGNsb3N1cmUKICAgICAgICAgICAgICAgIHZh
ciBhcmdzID0gYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBndWlkID0gZm4uZ3Vp
ZCB8fCBqUXVlcnkuZ3VpZCsrLAogICAgICAgICAgICAgICAgICAgICAgICBpID0gMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgdG9nZ2xlciA9IGZ1bmN0aW9uKCBldmVudCApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9uIHRvIGV4
ZWN1dGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGFzdFRvZ2dsZSA9ICgg
alF1ZXJ5LmRhdGEoIHRoaXMsICJsYXN0VG9nZ2xlIiArIGZuLmd1aWQgKSB8fCAwICkgJSBpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5kYXRhKCB0aGlzLCAibGFzdFRv
Z2dsZSIgKyBmbi5ndWlkLCBsYXN0VG9nZ2xlICsgMSApOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBjbGlja3Mgc3RvcAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGFuZCBleGVjdXRlIHRoZSBmdW5jdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmdzWyBsYXN0VG9nZ2xlIF0uYXBwbHkoIHRoaXMs
IGFyZ3VtZW50cyApIHx8IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAg
ICAgICAgICAgIC8vIGxpbmsgYWxsIHRoZSBmdW5jdGlvbnMsIHNvIGFueSBvZiB0aGVtIGNhbiB1
bmJpbmQgdGhpcyBjbGljayBoYW5kbGVyCiAgICAgICAgICAgICAgICB0b2dnbGVyLmd1aWQgPSBn
dWlkOwogICAgICAgICAgICAgICAgd2hpbGUgKCBpIDwgYXJncy5sZW5ndGggKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ3NbIGkrKyBdLmd1aWQgPSBndWlkOwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsaWNrKCB0b2dnbGVyICk7CiAgICAgICAg
fSwKCiAgICAgICAgaG92ZXI6IGZ1bmN0aW9uKCBmbk92ZXIsIGZuT3V0ICkgewogICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMubW91c2VlbnRlciggZm5PdmVyICkubW91c2VsZWF2ZSggZm5PdXQg
fHwgZm5PdmVyICk7CiAgICAgICAgfQp9KTsKCnZhciBsaXZlTWFwID0gewogICAgICAgIGZvY3Vz
OiAiZm9jdXNpbiIsCiAgICAgICAgYmx1cjogImZvY3Vzb3V0IiwKICAgICAgICBtb3VzZWVudGVy
OiAibW91c2VvdmVyIiwKICAgICAgICBtb3VzZWxlYXZlOiAibW91c2VvdXQiCn07CgpqUXVlcnku
ZWFjaChbImxpdmUiLCAiZGllIl0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewogICAgICAgIGpRdWVy
eS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiwgb3JpZ1NlbGVjdG9yIC8q
IEludGVybmFsIFVzZSBPbmx5ICovICkgewogICAgICAgICAgICAgICAgdmFyIHR5cGUsIGkgPSAw
LCBtYXRjaCwgbmFtZXNwYWNlcywgcHJlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0b3IgPSBvcmlnU2VsZWN0b3IgfHwgdGhpcy5zZWxlY3RvciwKICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dCA9IG9yaWdTZWxlY3RvciA/IHRoaXMgOiBqUXVlcnkoIHRoaXMuY29udGV4
dCApOwoKICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHR5cGVzID09PSAib2JqZWN0IiAmJiAh
dHlwZXMucHJldmVudERlZmF1bHQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZh
ciBrZXkgaW4gdHlwZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dFsgbmFtZSBdKCBrZXksIGRhdGEsIHR5cGVzW2tleV0sIHNlbGVjdG9yICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggbmFtZSA9PT0gImRpZSIgJiYgIXR5
cGVzICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnU2VsZWN0
b3IgJiYgb3JpZ1NlbGVjdG9yLmNoYXJBdCgwKSA9PT0gIi4iICkgewoKICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC51bmJpbmQoIG9yaWdTZWxlY3RvciApOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
aWYgKCBkYXRhID09PSBmYWxzZSB8fCBqUXVlcnkuaXNGdW5jdGlvbiggZGF0YSApICkgewogICAg
ICAgICAgICAgICAgICAgICAgICBmbiA9IGRhdGEgfHwgcmV0dXJuRmFsc2U7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGEgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgdHlwZXMgPSAodHlwZXMgfHwgIiIpLnNwbGl0KCIgIik7CgogICAgICAgICAgICAg
ICAgd2hpbGUgKCAodHlwZSA9IHR5cGVzWyBpKysgXSkgIT0gbnVsbCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2ggPSBybmFtZXNwYWNlcy5leGVjKCB0eXBlICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWVzcGFjZXMgPSAiIjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggbWF0Y2ggKSAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZXMg
PSBtYXRjaFswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gdHlwZS5y
ZXBsYWNlKCBybmFtZXNwYWNlcywgIiIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAiaG92ZXIiICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLnB1c2goICJtb3VzZWVudGVyIiArIG5hbWVzcGFj
ZXMsICJtb3VzZWxlYXZlIiArIG5hbWVzcGFjZXMgKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAgICAgcHJlVHlwZSA9IHR5cGU7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGxpdmVNYXBbIHR5cGUgXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
cy5wdXNoKCBsaXZlTWFwWyB0eXBlIF0gKyBuYW1lc3BhY2VzICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZSA9IHR5cGUgKyBuYW1lc3BhY2VzOwoKICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0g
KGxpdmVNYXBbIHR5cGUgXSB8fCB0eXBlKSArIG5hbWVzcGFjZXM7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbmFtZSA9PT0gImxpdmUiICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpbmQgbGl2ZSBoYW5kbGVyCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggdmFyIGogPSAwLCBsID0gY29udGV4
dC5sZW5ndGg7IGogPCBsOyBqKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZXZlbnQuYWRkKCBjb250ZXh0W2pdLCAibGl2ZS4iICsgbGl2ZUNvbnZl
cnQoIHR5cGUsIHNlbGVjdG9yICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsgZGF0YTogZGF0YSwgc2VsZWN0b3I6IHNlbGVjdG9yLCBoYW5kbGVyOiBm
biwgb3JpZ1R5cGU6IHR5cGUsIG9yaWdIYW5kbGVyOiBmbiwgcHJlVHlwZTogcHJlVHlwZSB9ICk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmJpbmQgbGl2
ZSBoYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC51bmJpbmQo
ICJsaXZlLiIgKyBsaXZlQ29udmVydCggdHlwZSwgc2VsZWN0b3IgKSwgZm4gKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOwogICAgICAgIH07Cn0pOwoKZnVuY3Rpb24gbGl2ZUhhbmRsZXIoIGV2ZW50ICkgewog
ICAgICAgIHZhciBzdG9wLCBtYXhMZXZlbCwgcmVsYXRlZCwgbWF0Y2gsIGhhbmRsZU9iaiwgZWxl
bSwgaiwgaSwgbCwgZGF0YSwgY2xvc2UsIG5hbWVzcGFjZSwgcmV0LAogICAgICAgICAgICAgICAg
ZWxlbXMgPSBbXSwKICAgICAgICAgICAgICAgIHNlbGVjdG9ycyA9IFtdLAogICAgICAgICAgICAg
ICAgZXZlbnRzID0galF1ZXJ5Ll9kYXRhKCB0aGlzLCAiZXZlbnRzIiApOwoKICAgICAgICAvLyBN
YWtlIHN1cmUgd2UgYXZvaWQgbm9uLWxlZnQtY2xpY2sgYnViYmxpbmcgaW4gRmlyZWZveCAoIzM4
NjEpIGFuZCBkaXNhYmxlZCBlbGVtZW50cyBpbiBJRSAoIzY5MTEpCiAgICAgICAgaWYgKCBldmVu
dC5saXZlRmlyZWQgPT09IHRoaXMgfHwgIWV2ZW50cyB8fCAhZXZlbnRzLmxpdmUgfHwgZXZlbnQu
dGFyZ2V0LmRpc2FibGVkIHx8IGV2ZW50LmJ1dHRvbiAmJiBldmVudC50eXBlID09PSAiY2xpY2si
ICkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBldmVu
dC5uYW1lc3BhY2UgKSB7CiAgICAgICAgICAgICAgICBuYW1lc3BhY2UgPSBuZXcgUmVnRXhwKCIo
XnxcXC4pIiArIGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCgiLiIpLmpvaW4oIlxcLig/Oi4qXFwuKT8i
KSArICIoXFwufCQpIik7CiAgICAgICAgfQoKICAgICAgICBldmVudC5saXZlRmlyZWQgPSB0aGlz
OwoKICAgICAgICB2YXIgbGl2ZSA9IGV2ZW50cy5saXZlLnNsaWNlKDApOwoKICAgICAgICBmb3Ig
KCBqID0gMDsgaiA8IGxpdmUubGVuZ3RoOyBqKysgKSB7CiAgICAgICAgICAgICAgICBoYW5kbGVP
YmogPSBsaXZlW2pdOwoKICAgICAgICAgICAgICAgIGlmICggaGFuZGxlT2JqLm9yaWdUeXBlLnJl
cGxhY2UoIHJuYW1lc3BhY2VzLCAiIiApID09PSBldmVudC50eXBlICkgewogICAgICAgICAgICAg
ICAgICAgICAgICBzZWxlY3RvcnMucHVzaCggaGFuZGxlT2JqLnNlbGVjdG9yICk7CgogICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZS5zcGxpY2UoIGot
LSwgMSApOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbWF0Y2ggPSBqUXVl
cnkoIGV2ZW50LnRhcmdldCApLmNsb3Nlc3QoIHNlbGVjdG9ycywgZXZlbnQuY3VycmVudFRhcmdl
dCApOwoKICAgICAgICBmb3IgKCBpID0gMCwgbCA9IG1hdGNoLmxlbmd0aDsgaSA8IGw7IGkrKyAp
IHsKICAgICAgICAgICAgICAgIGNsb3NlID0gbWF0Y2hbaV07CgogICAgICAgICAgICAgICAgZm9y
ICggaiA9IDA7IGogPCBsaXZlLmxlbmd0aDsgaisrICkgewogICAgICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVPYmogPSBsaXZlW2pdOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjbG9z
ZS5zZWxlY3RvciA9PT0gaGFuZGxlT2JqLnNlbGVjdG9yICYmICghbmFtZXNwYWNlIHx8IG5hbWVz
cGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkpICYmICFjbG9zZS5lbGVtLmRpc2FibGVk
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBjbG9zZS5lbGVtOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWQgPSBudWxsOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBUaG9zZSB0d28gZXZlbnRzIHJlcXVpcmUgYWRkaXRp
b25hbCBjaGVja2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaGFuZGxl
T2JqLnByZVR5cGUgPT09ICJtb3VzZWVudGVyIiB8fCBoYW5kbGVPYmoucHJlVHlwZSA9PT0gIm1v
dXNlbGVhdmUiICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZl
bnQudHlwZSA9IGhhbmRsZU9iai5wcmVUeXBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVsYXRlZCA9IGpRdWVyeSggZXZlbnQucmVsYXRlZFRhcmdldCApLmNsb3Nl
c3QoIGhhbmRsZU9iai5zZWxlY3RvciApWzBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBub3QgdG8gYWNjaWRlbnRhbGx5IG1hdGNoIGEgY2hp
bGQgZWxlbWVudCB3aXRoIHRoZSBzYW1lIHNlbGVjdG9yCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIHJlbGF0ZWQgJiYgalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLCBy
ZWxhdGVkICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbGF0ZWQgPSBlbGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCAhcmVsYXRlZCB8fCByZWxhdGVkICE9PSBlbGVtICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbXMucHVzaCh7IGVsZW06IGVs
ZW0sIGhhbmRsZU9iajogaGFuZGxlT2JqLCBsZXZlbDogY2xvc2UubGV2ZWwgfSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgKCBpID0gMCwgbCA9IGVsZW1zLmxl
bmd0aDsgaSA8IGw7IGkrKyApIHsKICAgICAgICAgICAgICAgIG1hdGNoID0gZWxlbXNbaV07Cgog
ICAgICAgICAgICAgICAgaWYgKCBtYXhMZXZlbCAmJiBtYXRjaC5sZXZlbCA+IG1heExldmVsICkg
ewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2guZWxlbTsKICAgICAgICAgICAg
ICAgIGV2ZW50LmRhdGEgPSBtYXRjaC5oYW5kbGVPYmouZGF0YTsKICAgICAgICAgICAgICAgIGV2
ZW50LmhhbmRsZU9iaiA9IG1hdGNoLmhhbmRsZU9iajsKCiAgICAgICAgICAgICAgICByZXQgPSBt
YXRjaC5oYW5kbGVPYmoub3JpZ0hhbmRsZXIuYXBwbHkoIG1hdGNoLmVsZW0sIGFyZ3VtZW50cyAp
OwoKICAgICAgICAgICAgICAgIGlmICggcmV0ID09PSBmYWxzZSB8fCBldmVudC5pc1Byb3BhZ2F0
aW9uU3RvcHBlZCgpICkgewogICAgICAgICAgICAgICAgICAgICAgICBtYXhMZXZlbCA9IG1hdGNo
LmxldmVsOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXQgPT09IGZhbHNlICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgPSBmYWxzZTsKICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGV2ZW50LmlzSW1tZWRp
YXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAg
ICAgICB9CgogICAgICAgIHJldHVybiBzdG9wOwp9CgpmdW5jdGlvbiBsaXZlQ29udmVydCggdHlw
ZSwgc2VsZWN0b3IgKSB7CiAgICAgICAgcmV0dXJuICh0eXBlICYmIHR5cGUgIT09ICIqIiA/IHR5
cGUgKyAiLiIgOiAiIikgKyBzZWxlY3Rvci5yZXBsYWNlKHJwZXJpb2QsICJgIikucmVwbGFjZShy
c3BhY2VzLCAiJiIpOwp9CgpqUXVlcnkuZWFjaCggKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNv
dXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayAiICsKICAgICAgICAi
bW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVy
IG1vdXNlbGVhdmUgIiArCiAgICAgICAgImNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5
cHJlc3Mga2V5dXAgZXJyb3IiKS5zcGxpdCgiICIpLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKCiAg
ICAgICAgLy8gSGFuZGxlIGV2ZW50IGJpbmRpbmcKICAgICAgICBqUXVlcnkuZm5bIG5hbWUgXSA9
IGZ1bmN0aW9uKCBkYXRhLCBmbiApIHsKICAgICAgICAgICAgICAgIGlmICggZm4gPT0gbnVsbCAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBkYXRhOwogICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1
cm4gYXJndW1lbnRzLmxlbmd0aCA+IDAgPwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJp
bmQoIG5hbWUsIGRhdGEsIGZuICkgOgogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdn
ZXIoIG5hbWUgKTsKICAgICAgICB9OwoKICAgICAgICBpZiAoIGpRdWVyeS5hdHRyRm4gKSB7CiAg
ICAgICAgICAgICAgICBqUXVlcnkuYXR0ckZuWyBuYW1lIF0gPSB0cnVlOwogICAgICAgIH0KfSk7
CgoKCi8qIQogKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZQogKiAgQ29weXJpZ2h0IDIwMTEs
IFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5k
IEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20v
CiAqLwooZnVuY3Rpb24oKXsKCnZhciBjaHVua2VyID0gLygoPzpcKCg/OlwoW14oKV0rXCl8W14o
KV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxc
XC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZywKICAg
ICAgICBkb25lID0gMCwKICAgICAgICB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJp
bmcsCiAgICAgICAgaGFzRHVwbGljYXRlID0gZmFsc2UsCiAgICAgICAgYmFzZUhhc0R1cGxpY2F0
ZSA9IHRydWUsCiAgICAgICAgckJhY2tzbGFzaCA9IC9cXC9nLAogICAgICAgIHJOb25Xb3JkID0g
L1xXLzsKCi8vIEhlcmUgd2UgY2hlY2sgaWYgdGhlIEphdmFTY3JpcHQgZW5naW5lIGlzIHVzaW5n
IHNvbWUgc29ydCBvZgovLyBvcHRpbWl6YXRpb24gd2hlcmUgaXQgZG9lcyBub3QgYWx3YXlzIGNh
bGwgb3VyIGNvbXBhcmlzaW9uCi8vIGZ1bmN0aW9uLiBJZiB0aGF0IGlzIHRoZSBjYXNlLCBkaXNj
YXJkIHRoZSBoYXNEdXBsaWNhdGUgdmFsdWUuCi8vICAgVGh1cyBmYXIgdGhhdCBpbmNsdWRlcyBH
b29nbGUgQ2hyb21lLgpbMCwgMF0uc29ydChmdW5jdGlvbigpIHsKICAgICAgICBiYXNlSGFzRHVw
bGljYXRlID0gZmFsc2U7CiAgICAgICAgcmV0dXJuIDA7Cn0pOwoKdmFyIFNpenpsZSA9IGZ1bmN0
aW9uKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHsKICAgICAgICByZXN1bHRz
ID0gcmVzdWx0cyB8fCBbXTsKICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBkb2N1bWVudDsK
CiAgICAgICAgdmFyIG9yaWdDb250ZXh0ID0gY29udGV4dDsKCiAgICAgICAgaWYgKCBjb250ZXh0
Lm5vZGVUeXBlICE9PSAxICYmIGNvbnRleHQubm9kZVR5cGUgIT09IDkgKSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gW107CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICggIXNlbGVjdG9y
IHx8IHR5cGVvZiBzZWxlY3RvciAhPT0gInN0cmluZyIgKSB7CiAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0czsKICAgICAgICB9CgogICAgICAgIHZhciBtLCBzZXQsIGNoZWNrU2V0LCBleHRy
YSwgcmV0LCBjdXIsIHBvcCwgaSwKICAgICAgICAgICAgICAgIHBydW5lID0gdHJ1ZSwKICAgICAg
ICAgICAgICAgIGNvbnRleHRYTUwgPSBTaXp6bGUuaXNYTUwoIGNvbnRleHQgKSwKICAgICAgICAg
ICAgICAgIHBhcnRzID0gW10sCiAgICAgICAgICAgICAgICBzb0ZhciA9IHNlbGVjdG9yOwogICAg
ICAgIAogICAgICAgIC8vIFJlc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgY2h1bmtlciByZWdleHAg
KHN0YXJ0IGZyb20gaGVhZCkKICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICBjaHVua2VyLmV4
ZWMoICIiICk7CiAgICAgICAgICAgICAgICBtID0gY2h1bmtlci5leGVjKCBzb0ZhciApOwoKICAg
ICAgICAgICAgICAgIGlmICggbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgc29GYXIgPSBt
WzNdOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2go
IG1bMV0gKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1b
Ml0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmEgPSBtWzNdOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSB3aGlsZSAoIG0gKTsKCiAgICAgICAgaWYg
KCBwYXJ0cy5sZW5ndGggPiAxICYmIG9yaWdQT1MuZXhlYyggc2VsZWN0b3IgKSApIHsKCiAgICAg
ICAgICAgICAgICBpZiAoIHBhcnRzLmxlbmd0aCA9PT0gMiAmJiBFeHByLnJlbGF0aXZlWyBwYXJ0
c1swXSBdICkgewogICAgICAgICAgICAgICAgICAgICAgICBzZXQgPSBwb3NQcm9jZXNzKCBwYXJ0
c1swXSArIHBhcnRzWzFdLCBjb250ZXh0ICk7CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0ID0gRXhwci5yZWxhdGl2ZVsgcGFydHNbMF0gXSA/CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBjb250ZXh0IF0gOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNpenpsZSggcGFydHMuc2hpZnQoKSwgY29udGV4dCApOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBwYXJ0cy5sZW5ndGggKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBwYXJ0cy5zaGlmdCgpOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIEV4cHIucmVsYXRpdmVbIHNlbGVjdG9yIF0gKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciArPSBwYXJ0
cy5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQg
PSBwb3NQcm9jZXNzKCBzZWxlY3Rvciwgc2V0ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIFRh
a2UgYSBzaG9ydGN1dCBhbmQgc2V0IHRoZSBjb250ZXh0IGlmIHRoZSByb290IHNlbGVjdG9yIGlz
IGFuIElECiAgICAgICAgICAgICAgICAvLyAoYnV0IG5vdCBpZiBpdCdsbCBiZSBmYXN0ZXIgaWYg
dGhlIGlubmVyIHNlbGVjdG9yIGlzIGFuIElEKQogICAgICAgICAgICAgICAgaWYgKCAhc2VlZCAm
JiBwYXJ0cy5sZW5ndGggPiAxICYmIGNvbnRleHQubm9kZVR5cGUgPT09IDkgJiYgIWNvbnRleHRY
TUwgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByLm1hdGNoLklELnRlc3Qo
cGFydHNbMF0pICYmICFFeHByLm1hdGNoLklELnRlc3QocGFydHNbcGFydHMubGVuZ3RoIC0gMV0p
ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gU2l6emxlLmZpbmQoIHBhcnRzLnNo
aWZ0KCksIGNvbnRleHQsIGNvbnRleHRYTUwgKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dCA9IHJldC5leHByID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXp6bGUu
ZmlsdGVyKCByZXQuZXhwciwgcmV0LnNldCApWzBdIDoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXQuc2V0WzBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlm
ICggY29udGV4dCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc2VlZCA/CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBleHByOiBwYXJ0cy5wb3AoKSwgc2V0OiBtYWtl
QXJyYXkoc2VlZCkgfSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6emxlLmZp
bmQoIHBhcnRzLnBvcCgpLCBwYXJ0cy5sZW5ndGggPT09IDEgJiYgKHBhcnRzWzBdID09PSAifiIg
fHwgcGFydHNbMF0gPT09ICIrIikgJiYgY29udGV4dC5wYXJlbnROb2RlID8gY29udGV4dC5wYXJl
bnROb2RlIDogY29udGV4dCwgY29udGV4dFhNTCApOwoKICAgICAgICAgICAgICAgICAgICAgICAg
c2V0ID0gcmV0LmV4cHIgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpenpsZS5m
aWx0ZXIoIHJldC5leHByLCByZXQuc2V0ICkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldC5zZXQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHBhcnRzLmxlbmd0aCA+
IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTZXQgPSBtYWtlQXJy
YXkoIHNldCApOwoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcnVuZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIHBhcnRzLmxlbmd0aCApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgPSBwYXJ0cy5wb3AoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwb3AgPSBjdXI7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggIUV4cHIucmVsYXRpdmVbIGN1ciBdICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvcCA9IHBhcnRzLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwb3AgPT0gbnVsbCApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcCA9IGNvbnRleHQ7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFeHByLnJlbGF0aXZlWyBjdXIgXSggY2hlY2tTZXQsIHBvcCwgY29udGV4dFhNTCApOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgY2hlY2tTZXQgPSBwYXJ0cyA9IFtdOwogICAgICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgaWYgKCAhY2hlY2tTZXQgKSB7CiAgICAgICAgICAgICAgICBjaGVj
a1NldCA9IHNldDsKICAgICAgICB9CgogICAgICAgIGlmICggIWNoZWNrU2V0ICkgewogICAgICAg
ICAgICAgICAgU2l6emxlLmVycm9yKCBjdXIgfHwgc2VsZWN0b3IgKTsKICAgICAgICB9CgogICAg
ICAgIGlmICggdG9TdHJpbmcuY2FsbChjaGVja1NldCkgPT09ICJbb2JqZWN0IEFycmF5XSIgKSB7
CiAgICAgICAgICAgICAgICBpZiAoICFwcnVuZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0cy5wdXNoLmFwcGx5KCByZXN1bHRzLCBjaGVja1NldCApOwoKICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIGNvbnRleHQgJiYgY29udGV4dC5ub2RlVHlwZSA9PT0gMSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGNoZWNrU2V0W2ldICE9IG51bGw7IGkrKyAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNoZWNrU2V0W2ldICYmIChj
aGVja1NldFtpXSA9PT0gdHJ1ZSB8fCBjaGVja1NldFtpXS5ub2RlVHlwZSA9PT0gMSAmJiBTaXp6
bGUuY29udGFpbnMoY29udGV4dCwgY2hlY2tTZXRbaV0pKSApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCggc2V0W2ldICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGNo
ZWNrU2V0W2ldICE9IG51bGw7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIGNoZWNrU2V0W2ldICYmIGNoZWNrU2V0W2ldLm5vZGVUeXBlID09PSAxICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCBzZXRbaV0g
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
IG1ha2VBcnJheSggY2hlY2tTZXQsIHJlc3VsdHMgKTsKICAgICAgICB9CgogICAgICAgIGlmICgg
ZXh0cmEgKSB7CiAgICAgICAgICAgICAgICBTaXp6bGUoIGV4dHJhLCBvcmlnQ29udGV4dCwgcmVz
dWx0cywgc2VlZCApOwogICAgICAgICAgICAgICAgU2l6emxlLnVuaXF1ZVNvcnQoIHJlc3VsdHMg
KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXN1bHRzOwp9OwoKU2l6emxlLnVuaXF1ZVNv
cnQgPSBmdW5jdGlvbiggcmVzdWx0cyApIHsKICAgICAgICBpZiAoIHNvcnRPcmRlciApIHsKICAg
ICAgICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IGJhc2VIYXNEdXBsaWNhdGU7CiAgICAgICAgICAg
ICAgICByZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApOwoKICAgICAgICAgICAgICAgIGlmICggaGFz
RHVwbGljYXRlICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCB2YXIgaSA9IDE7IGkg
PCByZXN1bHRzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggcmVzdWx0c1tpXSA9PT0gcmVzdWx0c1sgaSAtIDEgXSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc3BsaWNlKCBpLS0sIDEgKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiByZXN1bHRzOwp9OwoKU2l6
emxlLm1hdGNoZXMgPSBmdW5jdGlvbiggZXhwciwgc2V0ICkgewogICAgICAgIHJldHVybiBTaXp6
bGUoIGV4cHIsIG51bGwsIG51bGwsIHNldCApOwp9OwoKU2l6emxlLm1hdGNoZXNTZWxlY3RvciA9
IGZ1bmN0aW9uKCBub2RlLCBleHByICkgewogICAgICAgIHJldHVybiBTaXp6bGUoIGV4cHIsIG51
bGwsIG51bGwsIFtub2RlXSApLmxlbmd0aCA+IDA7Cn07CgpTaXp6bGUuZmluZCA9IGZ1bmN0aW9u
KCBleHByLCBjb250ZXh0LCBpc1hNTCApIHsKICAgICAgICB2YXIgc2V0OwoKICAgICAgICBpZiAo
ICFleHByICkgewogICAgICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAg
Zm9yICggdmFyIGkgPSAwLCBsID0gRXhwci5vcmRlci5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CiAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBF
eHByLm9yZGVyW2ldOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoIChtYXRj
aCA9IEV4cHIubGVmdE1hdGNoWyB0eXBlIF0uZXhlYyggZXhwciApKSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGxlZnQgPSBtYXRjaFsxXTsKICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2guc3BsaWNlKCAxLCAxICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxlZnQu
c3Vic3RyKCBsZWZ0Lmxlbmd0aCAtIDEgKSAhPT0gIlxcIiApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaFsxXSA9IChtYXRjaFsxXSB8fCAiIikucmVwbGFjZSggckJhY2tz
bGFzaCwgIiIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgPSBFeHByLmZp
bmRbIHR5cGUgXSggbWF0Y2gsIGNvbnRleHQsIGlzWE1MICk7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggc2V0ICE9IG51bGwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHByID0gZXhwci5yZXBsYWNlKCBFeHByLm1hdGNoWyB0eXBlIF0s
ICIiICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggIXNldCApIHsKICAgICAg
ICAgICAgICAgIHNldCA9IHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSAi
dW5kZWZpbmVkIiA/CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoICIqIiApIDoKICAgICAgICAgICAgICAgICAgICAgICAgW107CiAgICAgICAgfQoK
ICAgICAgICByZXR1cm4geyBzZXQ6IHNldCwgZXhwcjogZXhwciB9Owp9OwoKU2l6emxlLmZpbHRl
ciA9IGZ1bmN0aW9uKCBleHByLCBzZXQsIGlucGxhY2UsIG5vdCApIHsKICAgICAgICB2YXIgbWF0
Y2gsIGFueUZvdW5kLAogICAgICAgICAgICAgICAgb2xkID0gZXhwciwKICAgICAgICAgICAgICAg
IHJlc3VsdCA9IFtdLAogICAgICAgICAgICAgICAgY3VyTG9vcCA9IHNldCwKICAgICAgICAgICAg
ICAgIGlzWE1MRmlsdGVyID0gc2V0ICYmIHNldFswXSAmJiBTaXp6bGUuaXNYTUwoIHNldFswXSAp
OwoKICAgICAgICB3aGlsZSAoIGV4cHIgJiYgc2V0Lmxlbmd0aCApIHsKICAgICAgICAgICAgICAg
IGZvciAoIHZhciB0eXBlIGluIEV4cHIuZmlsdGVyICkgewogICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIChtYXRjaCA9IEV4cHIubGVmdE1hdGNoWyB0eXBlIF0uZXhlYyggZXhwciApKSAhPSBu
dWxsICYmIG1hdGNoWzJdICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBm
b3VuZCwgaXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRl
ciA9IEV4cHIuZmlsdGVyWyB0eXBlIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0ID0gbWF0Y2hbMV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFueUZvdW5kID0gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
LnNwbGljZSgxLDEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxlZnQu
c3Vic3RyKCBsZWZ0Lmxlbmd0aCAtIDEgKSA9PT0gIlxcIiApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjdXJMb29wID09
PSByZXN1bHQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggRXhwci5wcmVGaWx0ZXJbIHR5cGUgXSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gRXhwci5wcmVGaWx0ZXJb
IHR5cGUgXSggbWF0Y2gsIGN1ckxvb3AsIGlucGxhY2UsIHJlc3VsdCwgbm90LCBpc1hNTEZpbHRl
ciApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIW1hdGNo
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnlG
b3VuZCA9IGZvdW5kID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCBtYXRjaCA9PT0gdHJ1ZSApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwOyAoaXRlbSA9IGN1
ckxvb3BbaV0pICE9IG51bGw7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBpdGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gZmlsdGVyKCBpdGVtLCBtYXRj
aCwgaSwgY3VyTG9vcCApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBwYXNzID0gbm90IF4gISFmb3VuZDsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBpbnBsYWNlICYm
IGZvdW5kICE9IG51bGwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHBhc3MgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
eUZvdW5kID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJMb29wW2ld
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHBhc3MgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVz
aCggaXRlbSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW55Rm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBmb3VuZCAhPT0gdW5kZWZpbmVkICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhaW5wbGFjZSApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyTG9vcCA9IHJl
c3VsdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByID0gZXhwci5yZXBsYWNlKCBFeHBy
Lm1hdGNoWyB0eXBlIF0sICIiICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCAhYW55Rm91bmQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBJbXByb3BlciBleHBy
ZXNzaW9uCiAgICAgICAgICAgICAgICBpZiAoIGV4cHIgPT09IG9sZCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBhbnlGb3VuZCA9PSBudWxsICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNpenpsZS5lcnJvciggZXhwciApOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG9s
ZCA9IGV4cHI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gY3VyTG9vcDsKfTsKClNpenpsZS5l
cnJvciA9IGZ1bmN0aW9uKCBtc2cgKSB7CiAgICAgICAgdGhyb3cgIlN5bnRheCBlcnJvciwgdW5y
ZWNvZ25pemVkIGV4cHJlc3Npb246ICIgKyBtc2c7Cn07Cgp2YXIgRXhwciA9IFNpenpsZS5zZWxl
Y3RvcnMgPSB7CiAgICAgICAgb3JkZXI6IFsgIklEIiwgIk5BTUUiLCAiVEFHIiBdLAoKICAgICAg
ICBtYXRjaDogewogICAgICAgICAgICAgICAgSUQ6IC8jKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18
XFwuKSspLywKICAgICAgICAgICAgICAgIENMQVNTOiAvXC4oKD86W1x3XHUwMGMwLVx1RkZGRlwt
XXxcXC4pKykvLAogICAgICAgICAgICAgICAgTkFNRTogL1xbbmFtZT1bJyJdKigoPzpbXHdcdTAw
YzAtXHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLAogICAgICAgICAgICAgICAgQVRUUjogL1xbXHMq
KCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMqKD86KFxTPz0pXHMqKD86KFsnIl0pKC4q
PylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikqKXwpfClccypcXS8sCiAgICAgICAg
ICAgICAgICBUQUc6IC9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKlwtXXxcXC4pKykvLAogICAgICAg
ICAgICAgICAgQ0hJTEQ6IC86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyooZXZl
bnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1dXHMqXGQrKT8pKVxz
KlwpKT8vLAogICAgICAgICAgICAgICAgUE9TOiAvOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxl
dmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteXC1dfCQpLywKICAgICAgICAgICAgICAgIFBTRVVE
TzogLzooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChbXlwp
XStcKXxbXlwoXCldKikrKVwyXCkpPy8KICAgICAgICB9LAoKICAgICAgICBsZWZ0TWF0Y2g6IHt9
LAoKICAgICAgICBhdHRyTWFwOiB7CiAgICAgICAgICAgICAgICAiY2xhc3MiOiAiY2xhc3NOYW1l
IiwKICAgICAgICAgICAgICAgICJmb3IiOiAiaHRtbEZvciIKICAgICAgICB9LAoKICAgICAgICBh
dHRySGFuZGxlOiB7CiAgICAgICAgICAgICAgICBocmVmOiBmdW5jdGlvbiggZWxlbSApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCAiaHJlZiIgKTsK
ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB0eXBlOiBmdW5jdGlvbiggZWxlbSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRlKCAidHlw
ZSIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICByZWxhdGl2ZTogewog
ICAgICAgICAgICAgICAgIisiOiBmdW5jdGlvbihjaGVja1NldCwgcGFydCl7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHZhciBpc1BhcnRTdHIgPSB0eXBlb2YgcGFydCA9PT0gInN0cmluZyIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUYWcgPSBpc1BhcnRTdHIgJiYgIXJOb25X
b3JkLnRlc3QoIHBhcnQgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1BhcnRT
dHJOb3RUYWcgPSBpc1BhcnRTdHIgJiYgIWlzVGFnOwoKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBpc1RhZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gcGFy
dC50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKCB2YXIgaSA9IDAsIGwgPSBjaGVja1NldC5sZW5ndGgsIGVsZW07IGkg
PCBsOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoZWxlbSA9
IGNoZWNrU2V0W2ldKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdoaWxlICggKGVsZW0gPSBlbGVtLnByZXZpb3VzU2libGluZykgJiYgZWxlbS5ub2RlVHlwZSAh
PT0gMSApIHt9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tT
ZXRbaV0gPSBpc1BhcnRTdHJOb3RUYWcgfHwgZWxlbSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgPT09IHBhcnQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtIHx8IGZhbHNlIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxlbSA9PT0gcGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggaXNQYXJ0U3RyTm90VGFnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNpenpsZS5maWx0ZXIoIHBhcnQsIGNoZWNrU2V0LCB0cnVlICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIj4iOiBmdW5jdGlv
biggY2hlY2tTZXQsIHBhcnQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGFydFN0ciA9IHR5cGVvZiBwYXJ0ID09
PSAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gY2hlY2tTZXQubGVuZ3RoOwoKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBpc1BhcnRTdHIgJiYgIXJOb25Xb3JkLnRlc3QoIHBhcnQgKSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gcGFydC50b0xvd2VyQ2Fz
ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPCBsOyBpKysg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gY2hlY2tT
ZXRbaV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVt
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIg
cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGVja1NldFtpXSA9IHBhcmVudC5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSBwYXJ0ID8gcGFyZW50IDogZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKCA7IGkgPCBsOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBlbGVtID0gY2hlY2tTZXRbaV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBlbGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGVja1NldFtpXSA9IGlzUGFydFN0ciA/CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5wYXJlbnROb2Rl
IDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbGVtLnBhcmVudE5vZGUgPT09IHBhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlzUGFydFN0ciApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNpenpsZS5maWx0ZXIoIHBhcnQsIGNoZWNrU2V0LCB0
cnVlICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICIiOiBmdW5jdGlv
bihjaGVja1NldCwgcGFydCwgaXNYTUwpewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbm9k
ZUNoZWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVOYW1lID0gZG9uZSsr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrRm4gPSBkaXJDaGVjazsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHBhcnQgPT09ICJzdHJpbmciICYmICFy
Tm9uV29yZC50ZXN0KCBwYXJ0ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFydCA9IHBhcnQudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlQ2hlY2sgPSBwYXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNr
Rm4gPSBkaXJOb2RlQ2hlY2s7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNoZWNrRm4oICJwYXJlbnROb2RlIiwgcGFydCwgZG9uZU5hbWUsIGNoZWNr
U2V0LCBub2RlQ2hlY2ssIGlzWE1MICk7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAg
ICAgICJ+IjogZnVuY3Rpb24oIGNoZWNrU2V0LCBwYXJ0LCBpc1hNTCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIG5vZGVDaGVjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkb25lTmFtZSA9IGRvbmUrKywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a0ZuID0gZGlyQ2hlY2s7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBwYXJ0
ID09PSAic3RyaW5nIiAmJiAhck5vbldvcmQudGVzdCggcGFydCApICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcnQgPSBwYXJ0LnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZUNoZWNrID0gcGFydDsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja0ZuID0gZGlyTm9kZUNoZWNrOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBjaGVja0ZuKCAicHJldmlvdXNTaWJsaW5n
IiwgcGFydCwgZG9uZU5hbWUsIGNoZWNrU2V0LCBub2RlQ2hlY2ssIGlzWE1MICk7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgZmluZDogewogICAgICAgICAgICAgICAgSUQ6
IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCwgaXNYTUwgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09ICJ1bmRlZmluZWQiICYm
ICFpc1hNTCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbSA9IGNvbnRl
eHQuZ2V0RWxlbWVudEJ5SWQobWF0Y2hbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIENoZWNrIHBhcmVudE5vZGUgdG8gY2F0Y2ggd2hlbiBCbGFja2JlcnJ5IDQuNiByZXR1
cm5zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm9kZXMgdGhhdCBhcmUgbm8g
bG9uZ2VyIGluIHRoZSBkb2N1bWVudCAjNjk2MwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtICYmIG0ucGFyZW50Tm9kZSA/IFttXSA6IFtdOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIE5BTUU6IGZ1bmN0
aW9uKCBtYXRjaCwgY29udGV4dCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBl
b2YgY29udGV4dC5nZXRFbGVtZW50c0J5TmFtZSAhPT0gInVuZGVmaW5lZCIgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeU5hbWUo
IG1hdGNoWzFdICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBp
ID0gMCwgbCA9IHJlc3VsdHMubGVuZ3RoOyBpIDwgbDsgaSsrICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXN1bHRzW2ldLmdldEF0dHJpYnV0ZSgibmFt
ZSIpID09PSBtYXRjaFsxXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0LnB1c2goIHJlc3VsdHNbaV0gKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQubGVuZ3RoID09PSAwID8g
bnVsbCA6IHJldDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwK
CiAgICAgICAgICAgICAgICBUQUc6IGZ1bmN0aW9uKCBtYXRjaCwgY29udGV4dCApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSAhPT0gInVuZGVmaW5lZCIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIG1hdGNoWzFdICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHByZUZp
bHRlcjogewogICAgICAgICAgICAgICAgQ0xBU1M6IGZ1bmN0aW9uKCBtYXRjaCwgY3VyTG9vcCwg
aW5wbGFjZSwgcmVzdWx0LCBub3QsIGlzWE1MICkgewogICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaCA9ICIgIiArIG1hdGNoWzFdLnJlcGxhY2UoIHJCYWNrc2xhc2gsICIiICkgKyAiICI7Cgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlzWE1MICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwLCBlbGVtOyAoZWxlbSA9IGN1ckxv
b3BbaV0pICE9IG51bGw7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGVsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IG5vdCBeIChlbGVtLmNsYXNzTmFtZSAmJiAoIiAiICsgZWxlbS5jbGFzc05hbWUgKyAiICIpLnJl
cGxhY2UoL1tcdFxuXHJdL2csICIgIikuaW5kZXhPZihtYXRjaCkgPj0gMCkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWlucGxhY2UgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LnB1c2goIGVsZW0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIGlucGxhY2UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1ckxvb3BbaV0gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgSUQ6IGZ1bmN0aW9uKCBtYXRj
aCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoWzFdLnJlcGxhY2UoIHJC
YWNrc2xhc2gsICIiICk7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIFRBRzog
ZnVuY3Rpb24oIG1hdGNoLCBjdXJMb29wICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF0Y2hbMV0ucmVwbGFjZSggckJhY2tzbGFzaCwgIiIgKS50b0xvd2VyQ2FzZSgpOwogICAg
ICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBDSElMRDogZnVuY3Rpb24oIG1hdGNoICkg
ewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoWzFdID09PSAibnRoIiApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFtYXRjaFsyXSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpenpsZS5lcnJvciggbWF0Y2hbMF0gKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hdGNoWzJdID0gbWF0Y2hbMl0ucmVwbGFjZSgvXlwrfFxzKi9nLCAnJyk7Cgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhcnNlIGVxdWF0aW9ucyBsaWtlICdl
dmVuJywgJ29kZCcsICc1JywgJzJuJywgJzNuKzInLCAnNG4tMScsICctbis2JwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZXN0ID0gLygtPykoXGQqKSg/Om4oWytcLV0/XGQq
KSk/Ly5leGVjKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hb
Ml0gPT09ICJldmVuIiAmJiAiMm4iIHx8IG1hdGNoWzJdID09PSAib2RkIiAmJiAiMm4rMSIgfHwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEvXEQvLnRlc3QoIG1hdGNo
WzJdICkgJiYgIjBuKyIgKyBtYXRjaFsyXSB8fCBtYXRjaFsyXSk7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVycyAoZmlyc3QpbisobGFzdCkg
aW5jbHVkaW5nIGlmIHRoZXkgYXJlIG5lZ2F0aXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2hbMl0gPSAodGVzdFsxXSArICh0ZXN0WzJdIHx8IDEpKSAtIDA7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbM10gPSB0ZXN0WzNdIC0gMDsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICggbWF0Y2hb
Ml0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCBtYXRj
aFswXSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUT0RPOiBNb3ZlIHRvIG5vcm1hbCBjYWNoaW5nIHN5c3RlbQogICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaFswXSA9IGRvbmUrKzsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYXRjaDsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgQVRUUjogZnVuY3Rp
b24oIG1hdGNoLCBjdXJMb29wLCBpbnBsYWNlLCByZXN1bHQsIG5vdCwgaXNYTUwgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbWF0Y2hbMV0gPSBtYXRjaFsxXS5yZXBsYWNl
KCByQmFja3NsYXNoLCAiIiApOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCAhaXNYTUwgJiYgRXhwci5hdHRyTWFwW25hbWVdICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdID0gRXhwci5hdHRyTWFwW25hbWVdOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5k
bGUgaWYgYW4gdW4tcXVvdGVkIHZhbHVlIHdhcyB1c2VkCiAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoWzRdID0gKCBtYXRjaFs0XSB8fCBtYXRjaFs1XSB8fCAiIiApLnJlcGxhY2UoIHJCYWNr
c2xhc2gsICIiICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoWzJdID09PSAi
fj0iICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzRdID0gIiAiICsg
bWF0Y2hbNF0gKyAiICI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAg
ICAgUFNFVURPOiBmdW5jdGlvbiggbWF0Y2gsIGN1ckxvb3AsIGlucGxhY2UsIHJlc3VsdCwgbm90
ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoWzFdID09PSAibm90IiApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBkZWFsaW5nIHdpdGgg
YSBjb21wbGV4IGV4cHJlc3Npb24sIG9yIGEgc2ltcGxlIG9uZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggKCBjaHVua2VyLmV4ZWMobWF0Y2hbM10pIHx8ICIiICkubGVuZ3Ro
ID4gMSB8fCAvXlx3Ly50ZXN0KG1hdGNoWzNdKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoWzNdID0gU2l6emxlKG1hdGNoWzNdLCBudWxsLCBudWxsLCBj
dXJMb29wKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBTaXp6bGUuZmlsdGVy
KG1hdGNoWzNdLCBjdXJMb29wLCBpbnBsYWNlLCB0cnVlIF4gbm90KTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFpbnBsYWNlICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaC5hcHBseSggcmVz
dWx0LCByZXQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICggRXhwci5tYXRjaC5QT1MudGVzdCggbWF0Y2hbMF0gKSB8fCBFeHByLm1hdGNoLkNI
SUxELnRlc3QoIG1hdGNoWzBdICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgICAg
ICAgIH0sCgogICAgICAgICAgICAgICAgUE9TOiBmdW5jdGlvbiggbWF0Y2ggKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIG1hdGNoLnVuc2hpZnQoIHRydWUgKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAg
IAogICAgICAgIGZpbHRlcnM6IHsKICAgICAgICAgICAgICAgIGVuYWJsZWQ6IGZ1bmN0aW9uKCBl
bGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0g
ZmFsc2UgJiYgZWxlbS50eXBlICE9PSAiaGlkZGVuIjsKICAgICAgICAgICAgICAgIH0sCgogICAg
ICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZWxlbS5kaXNhYmxlZCA9PT0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0s
CgogICAgICAgICAgICAgICAgY2hlY2tlZDogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBlbGVtLmNoZWNrZWQgPT09IHRydWU7CiAgICAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBzZWxlY3RlZDogZnVuY3Rpb24o
IGVsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjY2Vzc2luZyB0aGlzIHByb3Bl
cnR5IG1ha2VzIHNlbGVjdGVkLWJ5LWRlZmF1bHQKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
b3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseQogICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGVsZW0ucGFyZW50Tm9kZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW0uc2VsZWN0ZWQgPT09IHRydWU7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAg
IHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAhIWVsZW0uZmlyc3RDaGlsZDsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAg
ZW1wdHk6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
IWVsZW0uZmlyc3RDaGlsZDsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgaGFz
OiBmdW5jdGlvbiggZWxlbSwgaSwgbWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAhIVNpenpsZSggbWF0Y2hbM10sIGVsZW0gKS5sZW5ndGg7CiAgICAgICAgICAgICAgICB9
LAoKICAgICAgICAgICAgICAgIGhlYWRlcjogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoL2hcZC9pKS50ZXN0KCBlbGVtLm5vZGVOYW1lICk7CiAgICAg
ICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHRleHQ6IGZ1bmN0aW9uKCBlbGVtICkgewog
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKCAidHlw
ZSIgKSwgdHlwZSA9IGVsZW0udHlwZTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUU2IGFu
ZCA3IHdpbGwgbWFwIGVsZW0udHlwZSB0byAndGV4dCcgZm9yIG5ldyBIVE1MNSB0eXBlcyAoc2Vh
cmNoLCBldGMpIAogICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgZ2V0QXR0cmlidXRlIGlu
c3RlYWQgdG8gdGVzdCB0aGlzIGNhc2UKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiAmJiAidGV4dCIgPT09IHR5cGUg
JiYgKCBhdHRyID09PSB0eXBlIHx8IGF0dHIgPT09IG51bGwgKTsKICAgICAgICAgICAgICAgIH0s
CgogICAgICAgICAgICAgICAgcmFkaW86IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQi
ICYmICJyYWRpbyIgPT09IGVsZW0udHlwZTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAg
ICAgICAgY2hlY2tib3g6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAiaW5wdXQiICYmICJjaGVj
a2JveCIgPT09IGVsZW0udHlwZTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAg
ZmlsZTogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBl
bGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICJpbnB1dCIgJiYgImZpbGUiID09PSBlbGVt
LnR5cGU7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBmdW5j
dGlvbiggZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5h
bWUudG9Mb3dlckNhc2UoKSA9PT0gImlucHV0IiAmJiAicGFzc3dvcmQiID09PSBlbGVtLnR5cGU7
CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oIGVs
ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKG5hbWUgPT09ICJp
bnB1dCIgfHwgbmFtZSA9PT0gImJ1dHRvbiIpICYmICJzdWJtaXQiID09PSBlbGVtLnR5cGU7CiAg
ICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIGltYWdlOiBmdW5jdGlvbiggZWxlbSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNh
c2UoKSA9PT0gImlucHV0IiAmJiAiaW1hZ2UiID09PSBlbGVtLnR5cGU7CiAgICAgICAgICAgICAg
ICB9LAoKICAgICAgICAgICAgICAgIHJlc2V0OiBmdW5jdGlvbiggZWxlbSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobmFtZSA9PT0gImlucHV0IiB8fCBuYW1lID09
PSAiYnV0dG9uIikgJiYgInJlc2V0IiA9PT0gZWxlbS50eXBlOwogICAgICAgICAgICAgICAgfSwK
CiAgICAgICAgICAgICAgICBidXR0b246IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICJpbnB1dCIgJiYgImJ1dHRvbiIgPT09
IGVsZW0udHlwZSB8fCBuYW1lID09PSAiYnV0dG9uIjsKICAgICAgICAgICAgICAgIH0sCgogICAg
ICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gKC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kpLnRlc3QoIGVsZW0u
bm9kZU5hbWUgKTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgZm9jdXM6IGZ1
bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbSA9PT0g
ZWxlbS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgfSwKICAgICAgICBzZXRGaWx0ZXJzOiB7CiAgICAgICAgICAgICAgICBmaXJzdDogZnVuY3Rp
b24oIGVsZW0sIGkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpID09PSAwOwog
ICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBsYXN0OiBmdW5jdGlvbiggZWxlbSwg
aSwgbWF0Y2gsIGFycmF5ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0g
YXJyYXkubGVuZ3RoIC0gMTsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgZXZl
bjogZnVuY3Rpb24oIGVsZW0sIGkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBp
ICUgMiA9PT0gMDsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgb2RkOiBmdW5j
dGlvbiggZWxlbSwgaSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgJSAyID09
PSAxOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBsdDogZnVuY3Rpb24oIGVs
ZW0sIGksIG1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA8IG1hdGNo
WzNdIC0gMDsKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgZ3Q6IGZ1bmN0aW9u
KCBlbGVtLCBpLCBtYXRjaCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgPiBt
YXRjaFszXSAtIDA7CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIG50aDogZnVu
Y3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWF0Y2hbM10gLSAwID09PSBpOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBl
cTogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbWF0Y2hbM10gLSAwID09PSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0sCiAg
ICAgICAgZmlsdGVyOiB7CiAgICAgICAgICAgICAgICBQU0VVRE86IGZ1bmN0aW9uKCBlbGVtLCBt
YXRjaCwgaSwgYXJyYXkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbWF0
Y2hbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gRXhwci5maWx0
ZXJzWyBuYW1lIF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGZpbHRlciApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyKCBlbGVtLCBpLCBtYXRj
aCwgYXJyYXkgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIG5hbWUgPT09
ICJjb250YWlucyIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChl
bGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IFNpenpsZS5nZXRUZXh0KFsgZWxl
bSBdKSB8fCAiIikuaW5kZXhPZihtYXRjaFszXSkgPj0gMDsKCiAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIG5hbWUgPT09ICJub3QiICkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBub3QgPSBtYXRjaFszXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yICggdmFyIGogPSAwLCBsID0gbm90Lmxlbmd0aDsgaiA8IGw7IGorKyApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm90W2pdID09PSBlbGVt
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6emxlLmVycm9yKCBuYW1lICk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgQ0hJ
TEQ6IGZ1bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHR5cGUgPSBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0g
ZWxlbTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoIHR5cGUgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAib25seSI6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSAiZmlyc3QiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKCAobm9kZSA9IG5vZGUucHJldmlvdXNTaWJsaW5nKSApICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZS5ub2Rl
VHlwZSA9PT0gMSApIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlw
ZSA9PT0gImZpcnN0IiApIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlID0g
ZWxlbTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAibGFzdCI6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIChub2RlID0gbm9kZS5u
ZXh0U2libGluZykgKSAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVUeXBlID09PSAxICkgeyAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgIm50aCI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgZmlyc3QgPSBtYXRjaFsyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGFzdCA9IG1hdGNoWzNdOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggZmlyc3QgPT09IDEgJiYgbGFzdCA9PT0gMCApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBkb25lTmFtZSA9IG1hdGNoWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7CiAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHBhcmVudCAmJiAo
cGFyZW50LnNpemNhY2hlICE9PSBkb25lTmFtZSB8fCAhZWxlbS5ub2RlSW5kZXgpICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAw
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggbm9kZSA9IHBh
cmVudC5maXJzdENoaWxkOyBub2RlOyBub2RlID0gbm9kZS5uZXh0U2libGluZyApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5v
ZGUubm9kZVR5cGUgPT09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm5vZGVJbmRleCA9ICsrY291bnQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IAoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNpemNhY2hl
ID0gZG9uZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBkaWZmID0gZWxlbS5ub2RlSW5kZXggLSBsYXN0OwoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZmlyc3QgPT09IDAg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBkaWZmID09PSAwOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIElEOiBmdW5jdGlvbiggZWxl
bSwgbWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLm5vZGVUeXBl
ID09PSAxICYmIGVsZW0uZ2V0QXR0cmlidXRlKCJpZCIpID09PSBtYXRjaDsKICAgICAgICAgICAg
ICAgIH0sCgogICAgICAgICAgICAgICAgVEFHOiBmdW5jdGlvbiggZWxlbSwgbWF0Y2ggKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobWF0Y2ggPT09ICIqIiAmJiBlbGVtLm5vZGVU
eXBlID09PSAxKSB8fCBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG1hdGNoOwogICAg
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgQ0xBU1M6IGZ1
bmN0aW9uKCBlbGVtLCBtYXRjaCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgi
ICIgKyAoZWxlbS5jbGFzc05hbWUgfHwgZWxlbS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpICsgIiAi
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5pbmRleE9mKCBtYXRjaCApID4gLTE7
CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIEFUVFI6IGZ1bmN0aW9uKCBlbGVt
LCBtYXRjaCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBtYXRjaFsxXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBFeHByLmF0dHJIYW5kbGVb
IG5hbWUgXSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByLmF0
dHJIYW5kbGVbIG5hbWUgXSggZWxlbSApIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsZW1bIG5hbWUgXSAhPSBudWxsID8KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbVsgbmFtZSBdIDoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlc3VsdCArICIiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBtYXRjaFsyXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGVjayA9IG1hdGNoWzRdOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdCA9PSBudWxsID8KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eXBlID09PSAiIT0iIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
ID09PSAiPSIgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID09PSBjaGVj
ayA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gIio9IiA/CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuaW5kZXhPZihjaGVjaykgPj0gMCA6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gIn49IiA/CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKCIgIiArIHZhbHVlICsgIiAiKS5pbmRleE9mKGNoZWNrKSA+
PSAwIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY2hlY2sgPwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICYmIHJlc3VsdCAhPT0gZmFsc2UgOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICIhPSIgPwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlICE9PSBjaGVjayA6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9PT0gIl49IiA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWUuaW5kZXhPZihjaGVjaykgPT09IDAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGUgPT09ICIkPSIgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
LnN1YnN0cih2YWx1ZS5sZW5ndGggLSBjaGVjay5sZW5ndGgpID09PSBjaGVjayA6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gInw9IiA/CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPT09IGNoZWNrIHx8IHZhbHVlLnN1YnN0cigwLCBjaGVjay5s
ZW5ndGggKyAxKSA9PT0gY2hlY2sgKyAiLSIgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbHNlOwogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICBQT1M6IGZ1bmN0
aW9uKCBlbGVtLCBtYXRjaCwgaSwgYXJyYXkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBuYW1lID0gbWF0Y2hbMl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVy
ID0gRXhwci5zZXRGaWx0ZXJzWyBuYW1lIF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGZpbHRlciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVy
KCBlbGVtLCBpLCBtYXRjaCwgYXJyYXkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KfTsKCnZhciBvcmlnUE9TID0gRXhwci5tYXRjaC5QT1Ms
CiAgICAgICAgZmVzY2FwZSA9IGZ1bmN0aW9uKGFsbCwgbnVtKXsKICAgICAgICAgICAgICAgIHJl
dHVybiAiXFwiICsgKG51bSAtIDAgKyAxKTsKICAgICAgICB9OwoKZm9yICggdmFyIHR5cGUgaW4g
RXhwci5tYXRjaCApIHsKICAgICAgICBFeHByLm1hdGNoWyB0eXBlIF0gPSBuZXcgUmVnRXhwKCBF
eHByLm1hdGNoWyB0eXBlIF0uc291cmNlICsgKC8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNv
dXJjZSkgKTsKICAgICAgICBFeHByLmxlZnRNYXRjaFsgdHlwZSBdID0gbmV3IFJlZ0V4cCggLyhe
KD86LnxccnxcbikqPykvLnNvdXJjZSArIEV4cHIubWF0Y2hbIHR5cGUgXS5zb3VyY2UucmVwbGFj
ZSgvXFwoXGQrKS9nLCBmZXNjYXBlKSApOwp9Cgp2YXIgbWFrZUFycmF5ID0gZnVuY3Rpb24oIGFy
cmF5LCByZXN1bHRzICkgewogICAgICAgIGFycmF5ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNh
bGwoIGFycmF5LCAwICk7CgogICAgICAgIGlmICggcmVzdWx0cyApIHsKICAgICAgICAgICAgICAg
IHJlc3VsdHMucHVzaC5hcHBseSggcmVzdWx0cywgYXJyYXkgKTsKICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHRzOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gYXJyYXk7Cn07
CgovLyBQZXJmb3JtIGEgc2ltcGxlIGNoZWNrIHRvIGRldGVybWluZSBpZiB0aGUgYnJvd3NlciBp
cyBjYXBhYmxlIG9mCi8vIGNvbnZlcnRpbmcgYSBOb2RlTGlzdCB0byBhbiBhcnJheSB1c2luZyBi
dWlsdGluIG1ldGhvZHMuCi8vIEFsc28gdmVyaWZpZXMgdGhhdCB0aGUgcmV0dXJuZWQgYXJyYXkg
aG9sZHMgRE9NIG5vZGVzCi8vICh3aGljaCBpcyBub3QgdGhlIGNhc2UgaW4gdGhlIEJsYWNrYmVy
cnkgYnJvd3NlcikKdHJ5IHsKICAgICAgICBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMsIDAgKVswXS5ub2RlVHlwZTsKCi8vIFBy
b3ZpZGUgYSBmYWxsYmFjayBtZXRob2QgaWYgaXQgZG9lcyBub3Qgd29yawp9IGNhdGNoKCBlICkg
ewogICAgICAgIG1ha2VBcnJheSA9IGZ1bmN0aW9uKCBhcnJheSwgcmVzdWx0cyApIHsKICAgICAg
ICAgICAgICAgIHZhciBpID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcmVzdWx0
cyB8fCBbXTsKCiAgICAgICAgICAgICAgICBpZiAoIHRvU3RyaW5nLmNhbGwoYXJyYXkpID09PSAi
W29iamVjdCBBcnJheV0iICkgewogICAgICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5
cGUucHVzaC5hcHBseSggcmV0LCBhcnJheSApOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGFycmF5Lmxlbmd0aCA9PT0gIm51bWJl
ciIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggdmFyIGwgPSBhcnJh
eS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXQucHVzaCggYXJyYXlbaV0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoIDsgYXJyYXlbaV07IGkrKyApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKCBhcnJheVtpXSApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgfTsKfQoKdmFy
IHNvcnRPcmRlciwgc2libGluZ0NoZWNrOwoKaWYgKCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu
Y29tcGFyZURvY3VtZW50UG9zaXRpb24gKSB7CiAgICAgICAgc29ydE9yZGVyID0gZnVuY3Rpb24o
IGEsIGIgKSB7CiAgICAgICAgICAgICAgICBpZiAoIGEgPT09IGIgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGhhc0R1cGxpY2F0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggIWEuY29tcGFy
ZURvY3VtZW50UG9zaXRpb24gfHwgIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb24gKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8gLTEg
OiAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBhLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKGIpICYgNCA/IC0xIDogMTsKICAgICAgICB9OwoKfSBlbHNlIHsKICAg
ICAgICBzb3J0T3JkZXIgPSBmdW5jdGlvbiggYSwgYiApIHsKICAgICAgICAgICAgICAgIC8vIFRo
ZSBub2RlcyBhcmUgaWRlbnRpY2FsLCB3ZSBjYW4gZXhpdCBlYXJseQogICAgICAgICAgICAgICAg
aWYgKCBhID09PSBiICkgewogICAgICAgICAgICAgICAgICAgICAgICBoYXNEdXBsaWNhdGUgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKCiAgICAgICAgICAgICAgICAv
LyBGYWxsYmFjayB0byB1c2luZyBzb3VyY2VJbmRleCAoaW4gSUUpIGlmIGl0J3MgYXZhaWxhYmxl
IG9uIGJvdGggbm9kZXMKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGEuc291cmNlSW5kZXgg
JiYgYi5zb3VyY2VJbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuc291
cmNlSW5kZXggLSBiLnNvdXJjZUluZGV4OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIHZhciBhbCwgYmwsCiAgICAgICAgICAgICAgICAgICAgICAgIGFwID0gW10sCiAgICAgICAg
ICAgICAgICAgICAgICAgIGJwID0gW10sCiAgICAgICAgICAgICAgICAgICAgICAgIGF1cCA9IGEu
cGFyZW50Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgYnVwID0gYi5wYXJlbnROb2RlLAog
ICAgICAgICAgICAgICAgICAgICAgICBjdXIgPSBhdXA7CgogICAgICAgICAgICAgICAgLy8gSWYg
dGhlIG5vZGVzIGFyZSBzaWJsaW5ncyAob3IgaWRlbnRpY2FsKSB3ZSBjYW4gZG8gYSBxdWljayBj
aGVjawogICAgICAgICAgICAgICAgaWYgKCBhdXAgPT09IGJ1cCApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNpYmxpbmdDaGVjayggYSwgYiApOwoKICAgICAgICAgICAgICAgIC8v
IElmIG5vIHBhcmVudHMgd2VyZSBmb3VuZCB0aGVuIHRoZSBub2RlcyBhcmUgZGlzY29ubmVjdGVk
CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCAhYXVwICkgewogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLTE7CgogICAgICAgICAgICAgICAgfSBlbHNlIGlmICggIWJ1cCApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZXkncmUgc29tZXdoZXJlIGVsc2UgaW4gdGhlIHRyZWUg
c28gd2UgbmVlZAogICAgICAgICAgICAgICAgLy8gdG8gYnVpbGQgdXAgYSBmdWxsIGxpc3Qgb2Yg
dGhlIHBhcmVudE5vZGVzIGZvciBjb21wYXJpc29uCiAgICAgICAgICAgICAgICB3aGlsZSAoIGN1
ciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXAudW5zaGlmdCggY3VyICk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgIGN1ciA9IGJ1cDsKCiAgICAgICAgICAgICAgICB3aGlsZSAoIGN1ciAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgYnAudW5zaGlmdCggY3VyICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIGFsID0gYXAubGVuZ3RoOwogICAgICAgICAgICAgICAgYmwgPSBicC5sZW5n
dGg7CgogICAgICAgICAgICAgICAgLy8gU3RhcnQgd2Fsa2luZyBkb3duIHRoZSB0cmVlIGxvb2tp
bmcgZm9yIGEgZGlzY3JlcGFuY3kKICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8
IGFsICYmIGkgPCBibDsgaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFwW2ld
ICE9PSBicFtpXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2li
bGluZ0NoZWNrKCBhcFtpXSwgYnBbaV0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFdlIGVuZGVkIHNvbWVwbGFjZSB1cCB0
aGUgdHJlZSBzbyBkbyBhIHNpYmxpbmcgY2hlY2sKICAgICAgICAgICAgICAgIHJldHVybiBpID09
PSBhbCA/CiAgICAgICAgICAgICAgICAgICAgICAgIHNpYmxpbmdDaGVjayggYSwgYnBbaV0sIC0x
ICkgOgogICAgICAgICAgICAgICAgICAgICAgICBzaWJsaW5nQ2hlY2soIGFwW2ldLCBiLCAxICk7
CiAgICAgICAgfTsKCiAgICAgICAgc2libGluZ0NoZWNrID0gZnVuY3Rpb24oIGEsIGIsIHJldCAp
IHsKICAgICAgICAgICAgICAgIGlmICggYSA9PT0gYiApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgY3Vy
ID0gYS5uZXh0U2libGluZzsKCiAgICAgICAgICAgICAgICB3aGlsZSAoIGN1ciApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBjdXIgPT09IGIgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICAgICBjdXIgPSBjdXIubmV4dFNpYmxpbmc7CiAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfTsKfQoKLy8gVXRpbGl0eSBmdW5j
dGlvbiBmb3IgcmV0cmVpdmluZyB0aGUgdGV4dCB2YWx1ZSBvZiBhbiBhcnJheSBvZiBET00gbm9k
ZXMKU2l6emxlLmdldFRleHQgPSBmdW5jdGlvbiggZWxlbXMgKSB7CiAgICAgICAgdmFyIHJldCA9
ICIiLCBlbGVtOwoKICAgICAgICBmb3IgKCB2YXIgaSA9IDA7IGVsZW1zW2ldOyBpKysgKSB7CiAg
ICAgICAgICAgICAgICBlbGVtID0gZWxlbXNbaV07CgogICAgICAgICAgICAgICAgLy8gR2V0IHRo
ZSB0ZXh0IGZyb20gdGV4dCBub2RlcyBhbmQgQ0RBVEEgbm9kZXMKICAgICAgICAgICAgICAgIGlm
ICggZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA0ICkgewogICAgICAg
ICAgICAgICAgICAgICAgICByZXQgKz0gZWxlbS5ub2RlVmFsdWU7CgogICAgICAgICAgICAgICAg
Ly8gVHJhdmVyc2UgZXZlcnl0aGluZyBlbHNlLCBleGNlcHQgY29tbWVudCBub2RlcwogICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICggZWxlbS5ub2RlVHlwZSAhPT0gOCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0ICs9IFNpenpsZS5nZXRUZXh0KCBlbGVtLmNoaWxkTm9kZXMgKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiByZXQ7Cn07CgovLyBDaGVj
ayB0byBzZWUgaWYgdGhlIGJyb3dzZXIgcmV0dXJucyBlbGVtZW50cyBieSBuYW1lIHdoZW4KLy8g
cXVlcnlpbmcgYnkgZ2V0RWxlbWVudEJ5SWQgKGFuZCBwcm92aWRlIGEgd29ya2Fyb3VuZCkKKGZ1
bmN0aW9uKCl7CiAgICAgICAgLy8gV2UncmUgZ29pbmcgdG8gaW5qZWN0IGEgZmFrZSBpbnB1dCBl
bGVtZW50IHdpdGggYSBzcGVjaWZpZWQgbmFtZQogICAgICAgIHZhciBmb3JtID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2IiksCiAgICAgICAgICAgICAgICBpZCA9ICJzY3JpcHQiICsgKG5l
dyBEYXRlKCkpLmdldFRpbWUoKSwKICAgICAgICAgICAgICAgIHJvb3QgPSBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQ7CgogICAgICAgIGZvcm0uaW5uZXJIVE1MID0gIjxhIG5hbWU9JyIgKyBpZCAr
ICInLz4iOwoKICAgICAgICAvLyBJbmplY3QgaXQgaW50byB0aGUgcm9vdCBlbGVtZW50LCBjaGVj
ayBpdHMgc3RhdHVzLCBhbmQgcmVtb3ZlIGl0IHF1aWNrbHkKICAgICAgICByb290Lmluc2VydEJl
Zm9yZSggZm9ybSwgcm9vdC5maXJzdENoaWxkICk7CgogICAgICAgIC8vIFRoZSB3b3JrYXJvdW5k
IGhhcyB0byBkbyBhZGRpdGlvbmFsIGNoZWNrcyBhZnRlciBhIGdldEVsZW1lbnRCeUlkCiAgICAg
ICAgLy8gV2hpY2ggc2xvd3MgdGhpbmdzIGRvd24gZm9yIG90aGVyIGJyb3dzZXJzIChoZW5jZSB0
aGUgYnJhbmNoaW5nKQogICAgICAgIGlmICggZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIGlkICkg
KSB7CiAgICAgICAgICAgICAgICBFeHByLmZpbmQuSUQgPSBmdW5jdGlvbiggbWF0Y2gsIGNvbnRl
eHQsIGlzWE1MICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBjb250ZXh0
LmdldEVsZW1lbnRCeUlkICE9PSAidW5kZWZpbmVkIiAmJiAhaXNYTUwgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKG1hdGNo
WzFdKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG0gPwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5pZCA9PT0gbWF0Y2hbMV0gfHwgdHlw
ZW9mIG0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gInVuZGVmaW5lZCIgJiYgbS5nZXRBdHRyaWJ1dGVO
b2RlKCJpZCIpLm5vZGVWYWx1ZSA9PT0gbWF0Y2hbMV0gPwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbbV0gOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQgOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH07CgogICAgICAgICAgICAgICAgRXhwci5maWx0ZXIuSUQgPSBmdW5jdGlvbiggZWxl
bSwgbWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gdHlwZW9mIGVs
ZW0uZ2V0QXR0cmlidXRlTm9kZSAhPT0gInVuZGVmaW5lZCIgJiYgZWxlbS5nZXRBdHRyaWJ1dGVO
b2RlKCJpZCIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0ubm9kZVR5cGUg
PT09IDEgJiYgbm9kZSAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gbWF0Y2g7CiAgICAgICAgICAgICAg
ICB9OwogICAgICAgIH0KCiAgICAgICAgcm9vdC5yZW1vdmVDaGlsZCggZm9ybSApOwoKICAgICAg
ICAvLyByZWxlYXNlIG1lbW9yeSBpbiBJRQogICAgICAgIHJvb3QgPSBmb3JtID0gbnVsbDsKfSko
KTsKCihmdW5jdGlvbigpewogICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGUgYnJvd3NlciBy
ZXR1cm5zIG9ubHkgZWxlbWVudHMKICAgICAgICAvLyB3aGVuIGRvaW5nIGdldEVsZW1lbnRzQnlU
YWdOYW1lKCIqIikKCiAgICAgICAgLy8gQ3JlYXRlIGEgZmFrZSBlbGVtZW50CiAgICAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgIGRpdi5hcHBlbmRD
aGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikgKTsKCiAgICAgICAgLy8gTWFrZSBzdXJl
IG5vIGNvbW1lbnRzIGFyZSBmb3VuZAogICAgICAgIGlmICggZGl2LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCIqIikubGVuZ3RoID4gMCApIHsKICAgICAgICAgICAgICAgIEV4cHIuZmluZC5UQUcgPSBm
dW5jdGlvbiggbWF0Y2gsIGNvbnRleHQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBy
ZXN1bHRzID0gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggbWF0Y2hbMV0gKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgcG9zc2libGUgY29tbWVudHMKICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBtYXRjaFsxXSA9PT0gIioiICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciB0bXAgPSBbXTsKCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICggdmFyIGkgPSAwOyByZXN1bHRzW2ldOyBpKysgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlc3VsdHNbaV0ubm9kZVR5cGUgPT09
IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRt
cC5wdXNoKCByZXN1bHRzW2ldICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRzID0gdG1wOwogICAgICAgICAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgICAgICAg
IH07CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgYW4gYXR0cmlidXRlIHJl
dHVybnMgbm9ybWFsaXplZCBocmVmIGF0dHJpYnV0ZXMKICAgICAgICBkaXYuaW5uZXJIVE1MID0g
IjxhIGhyZWY9JyMnPjwvYT4iOwoKICAgICAgICBpZiAoIGRpdi5maXJzdENoaWxkICYmIHR5cGVv
ZiBkaXYuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUgIT09ICJ1bmRlZmluZWQiICYmCiAgICAgICAg
ICAgICAgICAgICAgICAgIGRpdi5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpICE9PSAi
IyIgKSB7CgogICAgICAgICAgICAgICAgRXhwci5hdHRySGFuZGxlLmhyZWYgPSBmdW5jdGlvbigg
ZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW0uZ2V0QXR0cmlidXRl
KCAiaHJlZiIsIDIgKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAvLyBy
ZWxlYXNlIG1lbW9yeSBpbiBJRQogICAgICAgIGRpdiA9IG51bGw7Cn0pKCk7CgppZiAoIGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKSB7CiAgICAgICAgKGZ1bmN0aW9uKCl7CiAgICAgICAgICAg
ICAgICB2YXIgb2xkU2l6emxlID0gU2l6emxlLAogICAgICAgICAgICAgICAgICAgICAgICBkaXYg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwKICAgICAgICAgICAgICAgICAgICAgICAg
aWQgPSAiX19zaXp6bGVfXyI7CgogICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9ICI8cCBj
bGFzcz0nVEVTVCc+PC9wPiI7CgogICAgICAgICAgICAgICAgLy8gU2FmYXJpIGNhbid0IGhhbmRs
ZSB1cHBlcmNhc2Ugb3IgdW5pY29kZSBjaGFyYWN0ZXJzIHdoZW4KICAgICAgICAgICAgICAgIC8v
IGluIHF1aXJrcyBtb2RlLgogICAgICAgICAgICAgICAgaWYgKCBkaXYucXVlcnlTZWxlY3RvckFs
bCAmJiBkaXYucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGggPT09IDAgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAKICAg
ICAgICAgICAgICAgIFNpenpsZSA9IGZ1bmN0aW9uKCBxdWVyeSwgY29udGV4dCwgZXh0cmEsIHNl
ZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3Vt
ZW50OwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSB1c2UgcXVlcnlTZWxlY3RvckFs
bCBvbiBub24tWE1MIGRvY3VtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAvLyAoSUQgc2Vs
ZWN0b3JzIGRvbid0IHdvcmsgaW4gbm9uLUhUTUwgZG9jdW1lbnRzKQogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoICFzZWVkICYmICFTaXp6bGUuaXNYTUwoY29udGV4dCkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGZpbmQgYSBzZWxlY3RvciB0byBz
cGVlZCB1cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFx3
KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKCBxdWVyeSApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggbWF0Y2ggJiYgKGNvbnRleHQubm9kZVR5cGUgPT09IDEgfHwgY29udGV4dC5ub2RlVHlwZSA9
PT0gOSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTcGVl
ZC11cDogU2l6emxlKCJUQUciKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBtYXRjaFsxXSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VBcnJheSggY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSggcXVlcnkgKSwgZXh0cmEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BlZWQtdXA6
IFNpenpsZSgiLkNMQVNTIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoIG1hdGNoWzJdICYmIEV4cHIuZmluZC5DTEFTUyAmJiBjb250ZXh0LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYWtlQXJyYXkoIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSggbWF0Y2hbMl0gKSwgZXh0cmEgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBjb250ZXh0Lm5vZGVUeXBlID09PSA5ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU3BlZWQtdXA6IFNpenpsZSgiYm9keSIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYm9keSBlbGVtZW50IG9ubHkgZXhpc3RzIG9u
Y2UsIG9wdGltaXplIGZpbmRpbmcgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggcXVlcnkgPT09ICJib2R5IiAmJiBjb250ZXh0LmJvZHkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQXJyYXko
IFsgY29udGV4dC5ib2R5IF0sIGV4dHJhICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gU3BlZWQtdXA6IFNpenpsZSgiI0lEIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIG1hdGNoICYmIG1hdGNoWzNdICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IGNvbnRleHQu
Z2V0RWxlbWVudEJ5SWQoIG1hdGNoWzNdICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBwYXJlbnROb2RlIHRvIGNhdGNoIHdoZW4gQmxh
Y2tiZXJyeSA0LjYgcmV0dXJucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBub2RlcyB0aGF0IGFyZSBubyBsb25nZXIgaW4gdGhlIGRvY3VtZW50ICM2
OTYzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
ZWxlbSAmJiBlbGVtLnBhcmVudE5vZGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIElFIGFu
ZCBPcGVyYSByZXR1cm4gaXRlbXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0uaWQg
PT09IG1hdGNoWzNdICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VBcnJheSggWyBlbGVtIF0sIGV4dHJh
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlQXJyYXkoIFtdLCBleHRyYSApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlQXJyYXkoIGNvbnRl
eHQucXVlcnlTZWxlY3RvckFsbChxdWVyeSksIGV4dHJhICk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKHFzYUVycm9yKSB7fQoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBxU0Egd29ya3Mgc3RyYW5nZWx5IG9uIEVsZW1lbnQtcm9vdGVk
IHF1ZXJpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gd29yayBh
cm91bmQgdGhpcyBieSBzcGVjaWZ5aW5nIGFuIGV4dHJhIElEIG9uIHRoZSByb290CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHdvcmtpbmcgdXAgZnJvbSB0aGVyZSAoVGhh
bmtzIHRvIEFuZHJldyBEdXBvbnQgZm9yIHRoZSB0ZWNobmlxdWUpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gSUUgOCBkb2Vzbid0IHdvcmsgb24gb2JqZWN0IGVsZW1lbnRzCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggY29udGV4dC5ub2RlVHlw
ZSA9PT0gMSAmJiBjb250ZXh0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJvYmplY3QiICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9sZENvbnRleHQg
PSBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvbGQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggImlkIiApLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWQgPSBvbGQgfHwgaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BhcmVudCA9IGNvbnRleHQu
cGFyZW50Tm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVsYXRpdmVIaWVyYXJjaHlTZWxlY3RvciA9IC9eXHMqWyt+XS8udGVzdCggcXVlcnkgKTsK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFvbGQgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0
QXR0cmlidXRlKCAiaWQiLCBuaWQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5pZCA9IG5pZC5yZXBsYWNlKCAvJy9nLCAiXFwkJiIgKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggcmVsYXRpdmVIaWVyYXJjaHlTZWxlY3RvciAmJiBoYXNQYXJlbnQgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQg
PSBjb250ZXh0LnBhcmVudE5vZGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhcmVsYXRp
dmVIaWVyYXJjaHlTZWxlY3RvciB8fCBoYXNQYXJlbnQgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VBcnJheSggY29u
dGV4dC5xdWVyeVNlbGVjdG9yQWxsKCAiW2lkPSciICsgbmlkICsgIiddICIgKyBxdWVyeSApLCBl
eHRyYSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaChwc2V1ZG9F
cnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAh
b2xkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9sZENvbnRleHQucmVtb3ZlQXR0cmlidXRlKCAiaWQiICk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gb2xkU2l6emxlKHF1ZXJ5LCBjb250ZXh0LCBleHRyYSwgc2VlZCk7CiAg
ICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIGZvciAoIHZhciBwcm9wIGluIG9sZFNp
enpsZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2l6emxlWyBwcm9wIF0gPSBvbGRTaXp6
bGVbIHByb3AgXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyByZWxlYXNl
IG1lbW9yeSBpbiBJRQogICAgICAgICAgICAgICAgZGl2ID0gbnVsbDsKICAgICAgICB9KSgpOwp9
CgooZnVuY3Rpb24oKXsKICAgICAgICB2YXIgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCwKICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBodG1sLm1hdGNoZXNTZWxlY3RvciB8fCBodG1s
Lm1vek1hdGNoZXNTZWxlY3RvciB8fCBodG1sLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBodG1s
Lm1zTWF0Y2hlc1NlbGVjdG9yOwoKICAgICAgICBpZiAoIG1hdGNoZXMgKSB7CiAgICAgICAgICAg
ICAgICAvLyBDaGVjayB0byBzZWUgaWYgaXQncyBwb3NzaWJsZSB0byBkbyBtYXRjaGVzU2VsZWN0
b3IKICAgICAgICAgICAgICAgIC8vIG9uIGEgZGlzY29ubmVjdGVkIG5vZGUgKElFIDkgZmFpbHMg
dGhpcykKICAgICAgICAgICAgICAgIHZhciBkaXNjb25uZWN0ZWRNYXRjaCA9ICFtYXRjaGVzLmNh
bGwoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICksICJkaXYiICksCiAgICAgICAgICAg
ICAgICAgICAgICAgIHBzZXVkb1dvcmtzID0gZmFsc2U7CgogICAgICAgICAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgZmFpbCB3aXRoIGFuIGV4Y2Vw
dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAvLyBHZWNrbyBkb2VzIG5vdCBlcnJvciwgcmV0
dXJucyBmYWxzZSBpbnN0ZWFkCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMuY2FsbCgg
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCAiW3Rlc3QhPScnXTpzaXp6bGUiICk7CiAgICAgICAg
CiAgICAgICAgICAgICAgICB9IGNhdGNoKCBwc2V1ZG9FcnJvciApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgcHNldWRvV29ya3MgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgIFNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggbm9kZSwgZXhwciApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVj
dG9ycyBhcmUgcXVvdGVkCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSBleHByLnJlcGxh
Y2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csICI9JyQxJ10iKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggIVNpenpsZS5pc1hNTCggbm9kZSApICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyeSB7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBwc2V1ZG9Xb3JrcyB8fCAhRXhwci5tYXRjaC5QU0VVRE8udGVzdCggZXhwciApICYm
ICEvIT0vLnRlc3QoIGV4cHIgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHJldCA9IG1hdGNoZXMuY2FsbCggbm9kZSwgZXhwciApOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUUgOSdzIG1h
dGNoZXNTZWxlY3RvciByZXR1cm5zIGZhbHNlIG9uIGRpc2Nvbm5lY3RlZCBub2RlcwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldCB8fCAhZGlz
Y29ubmVjdGVkTWF0Y2ggfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzIHdlbGwsIGRpc2Nvbm5lY3RlZCBub2RlcyBh
cmUgc2FpZCB0byBiZSBpbiBhIGRvY3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcmFnbWVudCBpbiBJRSA5LCBz
byBjaGVjayBmb3IgdGhhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5kb2N1bWVudCAmJiBub2RlLmRvY3VtZW50Lm5v
ZGVUeXBlICE9PSAxMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaChlKSB7fQogICAg
ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2l6
emxlKGV4cHIsIG51bGwsIG51bGwsIFtub2RlXSkubGVuZ3RoID4gMDsKICAgICAgICAgICAgICAg
IH07CiAgICAgICAgfQp9KSgpOwoKKGZ1bmN0aW9uKCl7CiAgICAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwoKICAgICAgICBkaXYuaW5uZXJIVE1MID0gIjxkaXYg
Y2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjsKCiAgICAgICAg
Ly8gT3BlcmEgY2FuJ3QgZmluZCBhIHNlY29uZCBjbGFzc25hbWUgKGluIDkuNikKICAgICAgICAv
LyBBbHNvLCBtYWtlIHN1cmUgdGhhdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIGFjdHVhbGx5IGV4
aXN0cwogICAgICAgIGlmICggIWRpdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIHx8IGRpdi5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoID09PSAwICkgewogICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gU2FmYXJpIGNhY2hlcyBjbGFzcyBhdHRyaWJ1
dGVzLCBkb2Vzbid0IGNhdGNoIGNoYW5nZXMgKGluIDMuMikKICAgICAgICBkaXYubGFzdENoaWxk
LmNsYXNzTmFtZSA9ICJlIjsKCiAgICAgICAgaWYgKCBkaXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgiZSIpLmxlbmd0aCA9PT0gMSApIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9
CiAgICAgICAgCiAgICAgICAgRXhwci5vcmRlci5zcGxpY2UoMSwgMCwgIkNMQVNTIik7CiAgICAg
ICAgRXhwci5maW5kLkNMQVNTID0gZnVuY3Rpb24oIG1hdGNoLCBjb250ZXh0LCBpc1hNTCApIHsK
ICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSAhPT0gInVuZGVmaW5lZCIgJiYgIWlzWE1MICkgewogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG1hdGNoWzFdKTsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICAvLyByZWxlYXNlIG1lbW9yeSBpbiBJRQogICAg
ICAgIGRpdiA9IG51bGw7Cn0pKCk7CgpmdW5jdGlvbiBkaXJOb2RlQ2hlY2soIGRpciwgY3VyLCBk
b25lTmFtZSwgY2hlY2tTZXQsIG5vZGVDaGVjaywgaXNYTUwgKSB7CiAgICAgICAgZm9yICggdmFy
IGkgPSAwLCBsID0gY2hlY2tTZXQubGVuZ3RoOyBpIDwgbDsgaSsrICkgewogICAgICAgICAgICAg
ICAgdmFyIGVsZW0gPSBjaGVja1NldFtpXTsKCiAgICAgICAgICAgICAgICBpZiAoIGVsZW0gKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IGZhbHNlOwoKICAgICAgICAgICAg
ICAgICAgICAgICAgZWxlbSA9IGVsZW1bZGlyXTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICggZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVsZW0u
c2l6Y2FjaGUgPT09IGRvbmVOYW1lICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2ggPSBjaGVja1NldFtlbGVtLnNpenNldF07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlVHlw
ZSA9PT0gMSAmJiAhaXNYTUwgKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsZW0uc2l6Y2FjaGUgPSBkb25lTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW0uc2l6c2V0ID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpID09PSBjdXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCA9IGVsZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtW2Rpcl07CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrU2V0W2ldID0gbWF0Y2g7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQp9CgpmdW5jdGlvbiBkaXJDaGVjayggZGlyLCBj
dXIsIGRvbmVOYW1lLCBjaGVja1NldCwgbm9kZUNoZWNrLCBpc1hNTCApIHsKICAgICAgICBmb3Ig
KCB2YXIgaSA9IDAsIGwgPSBjaGVja1NldC5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CiAgICAgICAg
ICAgICAgICB2YXIgZWxlbSA9IGNoZWNrU2V0W2ldOwoKICAgICAgICAgICAgICAgIGlmICggZWxl
bSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gZWxlbVtkaXJd
OwoKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBlbGVtICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5zaXpjYWNoZSA9PT0gZG9uZU5hbWUgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGNoZWNrU2V0W2Vs
ZW0uc2l6c2V0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhaXNYTUwgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc2l6Y2FjaGUgPSBkb25lTmFtZTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zaXpz
ZXQgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGN1ciAhPT0gInN0
cmluZyIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggZWxlbSA9PT0gY3VyICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIFNpenpsZS5maWx0ZXIoIGN1ciwgW2VsZW1d
ICkubGVuZ3RoID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2ggPSBlbGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW0gPSBlbGVtW2Rpcl07CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrU2V0W2ldID0gbWF0Y2g7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgfQp9CgppZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250
YWlucyApIHsKICAgICAgICBTaXp6bGUuY29udGFpbnMgPSBmdW5jdGlvbiggYSwgYiApIHsKICAg
ICAgICAgICAgICAgIHJldHVybiBhICE9PSBiICYmIChhLmNvbnRhaW5zID8gYS5jb250YWlucyhi
KSA6IHRydWUpOwogICAgICAgIH07Cgp9IGVsc2UgaWYgKCBkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24gKSB7CiAgICAgICAgU2l6emxlLmNvbnRhaW5zID0g
ZnVuY3Rpb24oIGEsIGIgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISEoYS5jb21wYXJlRG9j
dW1lbnRQb3NpdGlvbihiKSAmIDE2KTsKICAgICAgICB9OwoKfSBlbHNlIHsKICAgICAgICBTaXp6
bGUuY29udGFpbnMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICB9Owp9CgpTaXp6bGUuaXNYTUwgPSBmdW5jdGlvbiggZWxlbSApIHsKICAgICAgICAv
LyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3Qg
eWV0IGV4aXN0CiAgICAgICAgLy8gKHN1Y2ggYXMgbG9hZGluZyBpZnJhbWVzIGluIElFIC0gIzQ4
MzMpIAogICAgICAgIHZhciBkb2N1bWVudEVsZW1lbnQgPSAoZWxlbSA/IGVsZW0ub3duZXJEb2N1
bWVudCB8fCBlbGVtIDogMCkuZG9jdW1lbnRFbGVtZW50OwoKICAgICAgICByZXR1cm4gZG9jdW1l
bnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lICE9PSAiSFRNTCIgOiBmYWxzZTsK
fTsKCnZhciBwb3NQcm9jZXNzID0gZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgewogICAg
ICAgIHZhciBtYXRjaCwKICAgICAgICAgICAgICAgIHRtcFNldCA9IFtdLAogICAgICAgICAgICAg
ICAgbGF0ZXIgPSAiIiwKICAgICAgICAgICAgICAgIHJvb3QgPSBjb250ZXh0Lm5vZGVUeXBlID8g
W2NvbnRleHRdIDogY29udGV4dDsKCiAgICAgICAgLy8gUG9zaXRpb24gc2VsZWN0b3JzIG11c3Qg
YmUgZG9uZSBhZnRlciB0aGUgZmlsdGVyCiAgICAgICAgLy8gQW5kIHNvIG11c3QgOm5vdChwb3Np
dGlvbmFsKSBzbyB3ZSBtb3ZlIGFsbCBQU0VVRE9zIHRvIHRoZSBlbmQKICAgICAgICB3aGlsZSAo
IChtYXRjaCA9IEV4cHIubWF0Y2guUFNFVURPLmV4ZWMoIHNlbGVjdG9yICkpICkgewogICAgICAg
ICAgICAgICAgbGF0ZXIgKz0gbWF0Y2hbMF07CiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNl
bGVjdG9yLnJlcGxhY2UoIEV4cHIubWF0Y2guUFNFVURPLCAiIiApOwogICAgICAgIH0KCiAgICAg
ICAgc2VsZWN0b3IgPSBFeHByLnJlbGF0aXZlW3NlbGVjdG9yXSA/IHNlbGVjdG9yICsgIioiIDog
c2VsZWN0b3I7CgogICAgICAgIGZvciAoIHZhciBpID0gMCwgbCA9IHJvb3QubGVuZ3RoOyBpIDwg
bDsgaSsrICkgewogICAgICAgICAgICAgICAgU2l6emxlKCBzZWxlY3Rvciwgcm9vdFtpXSwgdG1w
U2V0ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU2l6emxlLmZpbHRlciggbGF0ZXIsIHRt
cFNldCApOwp9OwoKLy8gRVhQT1NFCmpRdWVyeS5maW5kID0gU2l6emxlOwpqUXVlcnkuZXhwciA9
IFNpenpsZS5zZWxlY3RvcnM7CmpRdWVyeS5leHByWyI6Il0gPSBqUXVlcnkuZXhwci5maWx0ZXJz
OwpqUXVlcnkudW5pcXVlID0gU2l6emxlLnVuaXF1ZVNvcnQ7CmpRdWVyeS50ZXh0ID0gU2l6emxl
LmdldFRleHQ7CmpRdWVyeS5pc1hNTERvYyA9IFNpenpsZS5pc1hNTDsKalF1ZXJ5LmNvbnRhaW5z
ID0gU2l6emxlLmNvbnRhaW5zOwoKCn0pKCk7CgoKdmFyIHJ1bnRpbCA9IC9VbnRpbCQvLAogICAg
ICAgIHJwYXJlbnRzcHJldiA9IC9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLAogICAg
ICAgIC8vIE5vdGU6IFRoaXMgUmVnRXhwIHNob3VsZCBiZSBpbXByb3ZlZCwgb3IgbGlrZWx5IHB1
bGxlZCBmcm9tIFNpenpsZQogICAgICAgIHJtdWx0aXNlbGVjdG9yID0gLywvLAogICAgICAgIGlz
U2ltcGxlID0gL14uW146I1xbXC4sXSokLywKICAgICAgICBzbGljZSA9IEFycmF5LnByb3RvdHlw
ZS5zbGljZSwKICAgICAgICBQT1MgPSBqUXVlcnkuZXhwci5tYXRjaC5QT1MsCiAgICAgICAgLy8g
bWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcg
ZnJvbSBhIHVuaXF1ZSBzZXQKICAgICAgICBndWFyYW50ZWVkVW5pcXVlID0gewogICAgICAgICAg
ICAgICAgY2hpbGRyZW46IHRydWUsCiAgICAgICAgICAgICAgICBjb250ZW50czogdHJ1ZSwKICAg
ICAgICAgICAgICAgIG5leHQ6IHRydWUsCiAgICAgICAgICAgICAgICBwcmV2OiB0cnVlCiAgICAg
ICAgfTsKCmpRdWVyeS5mbi5leHRlbmQoewogICAgICAgIGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3Rv
ciApIHsKICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKICAgICAgICAgICAgICAgICAg
ICAgICAgaSwgbDsKCiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gInN0
cmluZyIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkoIHNlbGVjdG9y
ICkuZmlsdGVyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoIGkgPSAwLCBsID0gc2VsZi5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBd
LCB0aGlzICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHJldCA9IHRoaXMu
cHVzaFN0YWNrKCAiIiwgImZpbmQiLCBzZWxlY3RvciApLAogICAgICAgICAgICAgICAgICAgICAg
ICBsZW5ndGgsIG4sIHI7CgogICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwgPSB0aGlzLmxl
bmd0aDsgaSA8IGw7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gcmV0
Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmZpbmQoIHNlbGVjdG9yLCB0
aGlzW2ldLCByZXQgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaSA+IDAgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHJlc3Vs
dHMgYXJlIHVuaXF1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIG4gPSBs
ZW5ndGg7IG4gPCByZXQubGVuZ3RoOyBuKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKCByID0gMDsgciA8IGxlbmd0aDsgcisrICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJldFtyXSA9PT0gcmV0
W25dICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldC5zcGxpY2Uobi0tLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBy
ZXQ7CiAgICAgICAgfSwKCiAgICAgICAgaGFzOiBmdW5jdGlvbiggdGFyZ2V0ICkgewogICAgICAg
ICAgICAgICAgdmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCApOwogICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBm
b3IgKCB2YXIgaSA9IDAsIGwgPSB0YXJnZXRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jb250YWlucyggdGhpcywgdGFy
Z2V0c1tpXSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9LAoKICAgICAgICBub3Q6
IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnB1c2hT
dGFjayggd2lubm93KHRoaXMsIHNlbGVjdG9yLCBmYWxzZSksICJub3QiLCBzZWxlY3Rvcik7CiAg
ICAgICAgfSwKCiAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CiAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHdpbm5vdyh0aGlzLCBzZWxlY3RvciwgdHJ1
ZSksICJmaWx0ZXIiLCBzZWxlY3RvciApOwogICAgICAgIH0sCgogICAgICAgIGlzOiBmdW5jdGlv
biggc2VsZWN0b3IgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gISFzZWxlY3RvciAmJiAoIHR5
cGVvZiBzZWxlY3RvciA9PT0gInN0cmluZyIgPwogICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuZmlsdGVyKCBzZWxlY3RvciwgdGhpcyApLmxlbmd0aCA+IDAgOgogICAgICAgICAgICAgICAg
ICAgICAgICB0aGlzLmZpbHRlciggc2VsZWN0b3IgKS5sZW5ndGggPiAwICk7CiAgICAgICAgfSwK
CiAgICAgICAgY2xvc2VzdDogZnVuY3Rpb24oIHNlbGVjdG9ycywgY29udGV4dCApIHsKICAgICAg
ICAgICAgICAgIHZhciByZXQgPSBbXSwgaSwgbCwgY3VyID0gdGhpc1swXTsKICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgLy8gQXJyYXkKICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5
LmlzQXJyYXkoIHNlbGVjdG9ycyApICkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF0
Y2gsIHNlbGVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMgPSB7
fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IDE7CgogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIGN1ciAmJiBzZWxlY3RvcnMubGVuZ3RoICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwLCBsID0gc2VsZWN0b3JzLmxlbmd0aDsg
aSA8IGw7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGVjdG9yID0gc2VsZWN0b3JzW2ldOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggIW1hdGNoZXNbIHNlbGVjdG9yIF0gKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXNbIHNlbGVjdG9yIF0gPSBQT1MudGVz
dCggc2VsZWN0b3IgKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCB8fCB0aGlzLmNvbnRleHQg
KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZWN0b3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aGlsZSAoIGN1ciAmJiBjdXIub3duZXJEb2N1bWVudCAmJiBjdXIgIT09IGNvbnRl
eHQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBzZWxl
Y3RvciBpbiBtYXRjaGVzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCA9IG1hdGNoZXNbIHNlbGVjdG9yIF07CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoLmpxdWVyeSA/IG1hdGNo
LmluZGV4KCBjdXIgKSA+IC0xIDogalF1ZXJ5KCBjdXIgKS5pcyggbWF0Y2ggKSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVz
aCh7IHNlbGVjdG9yOiBzZWxlY3RvciwgZWxlbTogY3VyLCBsZXZlbDogbGV2ZWwgfSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxldmVsKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFN0cmluZwog
ICAgICAgICAgICAgICAgdmFyIHBvcyA9IFBPUy50ZXN0KCBzZWxlY3RvcnMgKSB8fCB0eXBlb2Yg
c2VsZWN0b3JzICE9PSAic3RyaW5nIiA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
alF1ZXJ5KCBzZWxlY3RvcnMsIGNvbnRleHQgfHwgdGhpcy5jb250ZXh0ICkgOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDA7CgogICAgICAgICAgICAgICAgZm9yICggaSA9IDAsIGwg
PSB0aGlzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
ID0gdGhpc1tpXTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICggY3VyICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcG9zID8gcG9zLmluZGV4KGN1cikgPiAt
MSA6IGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvcihjdXIsIHNlbGVjdG9ycykgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCggY3VyICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGN1ciA9IGN1ci5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCAhY3VyIHx8ICFjdXIub3duZXJEb2N1bWVudCB8fCBjdXIgPT09
IGNvbnRleHQgfHwgY3VyLm5vZGVUeXBlID09PSAxMSApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
cmV0ID0gcmV0Lmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlKCByZXQgKSA6IHJldDsKCiAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5wdXNoU3RhY2soIHJldCwgImNsb3Nlc3QiLCBzZWxlY3Rv
cnMgKTsKICAgICAgICB9LAoKICAgICAgICAvLyBEZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIGFu
IGVsZW1lbnQgd2l0aGluCiAgICAgICAgLy8gdGhlIG1hdGNoZWQgc2V0IG9mIGVsZW1lbnRzCiAg
ICAgICAgaW5kZXg6IGZ1bmN0aW9uKCBlbGVtICkgewoKICAgICAgICAgICAgICAgIC8vIE5vIGFy
Z3VtZW50LCByZXR1cm4gaW5kZXggaW4gcGFyZW50CiAgICAgICAgICAgICAgICBpZiAoICFlbGVt
ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCB0aGlzWzBdICYmIHRoaXNbMF0u
cGFyZW50Tm9kZSApID8gdGhpcy5wcmV2QWxsKCkubGVuZ3RoIDogLTE7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgLy8gaW5kZXggaW4gc2VsZWN0b3IKICAgICAgICAgICAgICAg
IGlmICggdHlwZW9mIGVsZW0gPT09ICJzdHJpbmciICkgewogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4galF1ZXJ5LmluQXJyYXkoIHRoaXNbMF0sIGpRdWVyeSggZWxlbSApICk7CiAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gTG9jYXRlIHRoZSBwb3NpdGlvbiBvZiB0
aGUgZGVzaXJlZCBlbGVtZW50CiAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5LmluQXJyYXko
CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVj
dCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZAogICAgICAgICAgICAgICAgICAgICAgICBlbGVt
LmpxdWVyeSA/IGVsZW1bMF0gOiBlbGVtLCB0aGlzICk7CiAgICAgICAgfSwKCiAgICAgICAgYWRk
OiBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CiAgICAgICAgICAgICAgICB2YXIgc2V0
ID0gdHlwZW9mIHNlbGVjdG9yID09PSAic3RyaW5nIiA/CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgalF1ZXJ5KCBzZWxlY3RvciwgY29udGV4dCApIDoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciAmJiBzZWxlY3Rvci5ub2Rl
VHlwZSA/IFsgc2VsZWN0b3IgXSA6IHNlbGVjdG9yICksCiAgICAgICAgICAgICAgICAgICAgICAg
IGFsbCA9IGpRdWVyeS5tZXJnZSggdGhpcy5nZXQoKSwgc2V0ICk7CgogICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBpc0Rpc2Nvbm5lY3RlZCggc2V0WzBdICkgfHwgaXNEaXNj
b25uZWN0ZWQoIGFsbFswXSApID8KICAgICAgICAgICAgICAgICAgICAgICAgYWxsIDoKICAgICAg
ICAgICAgICAgICAgICAgICAgalF1ZXJ5LnVuaXF1ZSggYWxsICkgKTsKICAgICAgICB9LAoKICAg
ICAgICBhbmRTZWxmOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFk
ZCggdGhpcy5wcmV2T2JqZWN0ICk7CiAgICAgICAgfQp9KTsKCi8vIEEgcGFpbmZ1bGx5IHNpbXBs
ZSBjaGVjayB0byBzZWUgaWYgYW4gZWxlbWVudCBpcyBkaXNjb25uZWN0ZWQKLy8gZnJvbSBhIGRv
Y3VtZW50IChzaG91bGQgYmUgaW1wcm92ZWQsIHdoZXJlIGZlYXNpYmxlKS4KZnVuY3Rpb24gaXNE
aXNjb25uZWN0ZWQoIG5vZGUgKSB7CiAgICAgICAgcmV0dXJuICFub2RlIHx8ICFub2RlLnBhcmVu
dE5vZGUgfHwgbm9kZS5wYXJlbnROb2RlLm5vZGVUeXBlID09PSAxMTsKfQoKalF1ZXJ5LmVhY2go
ewogICAgICAgIHBhcmVudDogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICB2YXIg
cGFyZW50ID0gZWxlbS5wYXJlbnROb2RlOwogICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudCAm
JiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDsKICAgICAgICB9LAogICAg
ICAgIHBhcmVudHM6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpR
dWVyeS5kaXIoIGVsZW0sICJwYXJlbnROb2RlIiApOwogICAgICAgIH0sCiAgICAgICAgcGFyZW50
c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CiAgICAgICAgICAgICAgICByZXR1
cm4galF1ZXJ5LmRpciggZWxlbSwgInBhcmVudE5vZGUiLCB1bnRpbCApOwogICAgICAgIH0sCiAg
ICAgICAgbmV4dDogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4galF1
ZXJ5Lm50aCggZWxlbSwgMiwgIm5leHRTaWJsaW5nIiApOwogICAgICAgIH0sCiAgICAgICAgcHJl
djogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm50aCgg
ZWxlbSwgMiwgInByZXZpb3VzU2libGluZyIgKTsKICAgICAgICB9LAogICAgICAgIG5leHRBbGw6
IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVs
ZW0sICJuZXh0U2libGluZyIgKTsKICAgICAgICB9LAogICAgICAgIHByZXZBbGw6IGZ1bmN0aW9u
KCBlbGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5kaXIoIGVsZW0sICJwcmV2
aW91c1NpYmxpbmciICk7CiAgICAgICAgfSwKICAgICAgICBuZXh0VW50aWw6IGZ1bmN0aW9uKCBl
bGVtLCBpLCB1bnRpbCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZGlyKCBlbGVt
LCAibmV4dFNpYmxpbmciLCB1bnRpbCApOwogICAgICAgIH0sCiAgICAgICAgcHJldlVudGlsOiBm
dW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5
LmRpciggZWxlbSwgInByZXZpb3VzU2libGluZyIsIHVudGlsICk7CiAgICAgICAgfSwKICAgICAg
ICBzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4galF1
ZXJ5LnNpYmxpbmcoIGVsZW0ucGFyZW50Tm9kZS5maXJzdENoaWxkLCBlbGVtICk7CiAgICAgICAg
fSwKICAgICAgICBjaGlsZHJlbjogZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICBy
ZXR1cm4galF1ZXJ5LnNpYmxpbmcoIGVsZW0uZmlyc3RDaGlsZCApOwogICAgICAgIH0sCiAgICAg
ICAgY29udGVudHM6IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpR
dWVyeS5ub2RlTmFtZSggZWxlbSwgImlmcmFtZSIgKSA/CiAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0uY29udGVudERvY3VtZW50IHx8IGVsZW0uY29udGVudFdpbmRvdy5kb2N1bWVudCA6CiAg
ICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5tYWtlQXJyYXkoIGVsZW0uY2hpbGROb2RlcyAp
OwogICAgICAgIH0KfSwgZnVuY3Rpb24oIG5hbWUsIGZuICkgewogICAgICAgIGpRdWVyeS5mblsg
bmFtZSBdID0gZnVuY3Rpb24oIHVudGlsLCBzZWxlY3RvciApIHsKICAgICAgICAgICAgICAgIHZh
ciByZXQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlIHZhcmlhYmxlICdhcmdzJyB3YXMgaW50cm9kdWNlZCBpbgogICAgICAgICAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9jb21taXQv
NTJhMDIzOAogICAgICAgICAgICAgICAgICAgICAgICAvLyB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBp
biBDaHJvbWUgMTAgKERldikgYW5kIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhlIGJ1ZyBpcyBm
aXhlZC4KICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9w
L3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTA1MAogICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0g
c2xpY2UuY2FsbChhcmd1bWVudHMpOwoKICAgICAgICAgICAgICAgIGlmICggIXJ1bnRpbC50ZXN0
KCBuYW1lICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gdW50aWw7CiAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBzZWxlY3RvciAmJiB0eXBlb2Yg
c2VsZWN0b3IgPT09ICJzdHJpbmciICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBq
UXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgcmV0ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgcmV0ID0gdGhpcy5sZW5ndGggPiAxICYmICFndWFyYW50ZWVkVW5pcXVlWyBuYW1l
IF0gPyBqUXVlcnkudW5pcXVlKCByZXQgKSA6IHJldDsKCiAgICAgICAgICAgICAgICBpZiAoICh0
aGlzLmxlbmd0aCA+IDEgfHwgcm11bHRpc2VsZWN0b3IudGVzdCggc2VsZWN0b3IgKSkgJiYgcnBh
cmVudHNwcmV2LnRlc3QoIG5hbWUgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g
cmV0LnJldmVyc2UoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5wdXNoU3RhY2soIHJldCwgbmFtZSwgYXJncy5qb2luKCIsIikgKTsKICAgICAgICB9Owp9
KTsKCmpRdWVyeS5leHRlbmQoewogICAgICAgIGZpbHRlcjogZnVuY3Rpb24oIGV4cHIsIGVsZW1z
LCBub3QgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG5vdCApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwciA9ICI6bm90KCIgKyBleHByICsgIikiOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIHJldHVybiBlbGVtcy5sZW5ndGggPT09IDEgPwogICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoZWxlbXNbMF0sIGV4cHIpID8gWyBl
bGVtc1swXSBdIDogW10gOgogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZmluZC5tYXRj
aGVzKGV4cHIsIGVsZW1zKTsKICAgICAgICB9LAoKICAgICAgICBkaXI6IGZ1bmN0aW9uKCBlbGVt
LCBkaXIsIHVudGlsICkgewogICAgICAgICAgICAgICAgdmFyIG1hdGNoZWQgPSBbXSwKICAgICAg
ICAgICAgICAgICAgICAgICAgY3VyID0gZWxlbVsgZGlyIF07CgogICAgICAgICAgICAgICAgd2hp
bGUgKCBjdXIgJiYgY3VyLm5vZGVUeXBlICE9PSA5ICYmICh1bnRpbCA9PT0gdW5kZWZpbmVkIHx8
IGN1ci5ub2RlVHlwZSAhPT0gMSB8fCAhalF1ZXJ5KCBjdXIgKS5pcyggdW50aWwgKSkgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggY3VyLm5vZGVUeXBlID09PSAxICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQucHVzaCggY3VyICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VyW2Rpcl07CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZDsKICAgICAgICB9
LAoKICAgICAgICBudGg6IGZ1bmN0aW9uKCBjdXIsIHJlc3VsdCwgZGlyLCBlbGVtICkgewogICAg
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IDE7CiAgICAgICAgICAgICAgICB2YXIgbnVt
ID0gMDsKCiAgICAgICAgICAgICAgICBmb3IgKCA7IGN1cjsgY3VyID0gY3VyW2Rpcl0gKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggY3VyLm5vZGVUeXBlID09PSAxICYmICsrbnVtID09
PSByZXN1bHQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBy
ZXR1cm4gY3VyOwogICAgICAgIH0sCgogICAgICAgIHNpYmxpbmc6IGZ1bmN0aW9uKCBuLCBlbGVt
ICkgewogICAgICAgICAgICAgICAgdmFyIHIgPSBbXTsKCiAgICAgICAgICAgICAgICBmb3IgKCA7
IG47IG4gPSBuLm5leHRTaWJsaW5nICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG4u
bm9kZVR5cGUgPT09IDEgJiYgbiAhPT0gZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByLnB1c2goIG4gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgIH0KfSk7CgovLyBJbXBs
ZW1lbnQgdGhlIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IGZvciBmaWx0ZXIgYW5kIG5vdApmdW5j
dGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIGtlZXAgKSB7CgogICAgICAgIC8vIENh
bid0IHBhc3MgbnVsbCBvciB1bmRlZmluZWQgdG8gaW5kZXhPZiBpbiBGaXJlZm94IDQKICAgICAg
ICAvLyBTZXQgdG8gMCB0byBza2lwIHN0cmluZyBjaGVjawogICAgICAgIHF1YWxpZmllciA9IHF1
YWxpZmllciB8fCAwOwoKICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBxdWFsaWZpZXIg
KSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rp
b24oIGVsZW0sIGkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXRWYWwgPSAhIXF1
YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXRWYWwgPT09IGtlZXA7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgfSBlbHNl
IGlmICggcXVhbGlmaWVyLm5vZGVUeXBlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVy
eS5ncmVwKGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIChlbGVtID09PSBxdWFsaWZpZXIpID09PSBrZWVwOwogICAgICAgICAgICAg
ICAgfSk7CgogICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBxdWFsaWZpZXIgPT09ICJzdHJpbmci
ICkgewogICAgICAgICAgICAgICAgdmFyIGZpbHRlcmVkID0galF1ZXJ5LmdyZXAoZWxlbWVudHMs
IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5u
b2RlVHlwZSA9PT0gMTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGlmICgg
aXNTaW1wbGUudGVzdCggcXVhbGlmaWVyICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBqUXVlcnkuZmlsdGVyKHF1YWxpZmllciwgZmlsdGVyZWQsICFrZWVwKTsKICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllciA9IGpRdWVy
eS5maWx0ZXIoIHF1YWxpZmllciwgZmlsdGVyZWQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICAgIHJldHVybiBqUXVlcnkuZ3JlcChlbGVtZW50cywgZnVuY3Rpb24oIGVsZW0s
IGkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKGpRdWVyeS5pbkFycmF5KCBlbGVtLCBxdWFs
aWZpZXIgKSA+PSAwKSA9PT0ga2VlcDsKICAgICAgICB9KTsKfQoKCgoKdmFyIHJpbmxpbmVqUXVl
cnkgPSAvIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9nLAogICAgICAgIHJsZWFkaW5nV2hpdGVz
cGFjZSA9IC9eXHMrLywKICAgICAgICByeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVk
fGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2lnLAogICAg
ICAgIHJ0YWdOYW1lID0gLzwoW1x3Ol0rKS8sCiAgICAgICAgcnRib2R5ID0gLzx0Ym9keS9pLAog
ICAgICAgIHJodG1sID0gLzx8JiM/XHcrOy8sCiAgICAgICAgcm5vY2FjaGUgPSAvPCg/OnNjcmlw
dHxvYmplY3R8ZW1iZWR8b3B0aW9ufHN0eWxlKS9pLAogICAgICAgIC8vIGNoZWNrZWQ9ImNoZWNr
ZWQiIG9yIGNoZWNrZWQKICAgICAgICByY2hlY2tlZCA9IC9jaGVja2VkXHMqKD86W149XXw9XHMq
LmNoZWNrZWQuKS9pLAogICAgICAgIHJzY3JpcHRUeXBlID0gL1wvKGphdmF8ZWNtYSlzY3JpcHQv
aSwKICAgICAgICByY2xlYW5TY3JpcHQgPSAvXlxzKjwhKD86XFtDREFUQVxbfFwtXC0pLywKICAg
ICAgICB3cmFwTWFwID0gewogICAgICAgICAgICAgICAgb3B0aW9uOiBbIDEsICI8c2VsZWN0IG11
bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0PiIgXSwKICAgICAgICAgICAgICAgIGxlZ2Vu
ZDogWyAxLCAiPGZpZWxkc2V0PiIsICI8L2ZpZWxkc2V0PiIgXSwKICAgICAgICAgICAgICAgIHRo
ZWFkOiBbIDEsICI8dGFibGU+IiwgIjwvdGFibGU+IiBdLAogICAgICAgICAgICAgICAgdHI6IFsg
MiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90YWJsZT4iIF0sCiAgICAgICAgICAgICAg
ICB0ZDogWyAzLCAiPHRhYmxlPjx0Ym9keT48dHI+IiwgIjwvdHI+PC90Ym9keT48L3RhYmxlPiIg
XSwKICAgICAgICAgICAgICAgIGNvbDogWyAyLCAiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xn
cm91cD4iLCAiPC9jb2xncm91cD48L3RhYmxlPiIgXSwKICAgICAgICAgICAgICAgIGFyZWE6IFsg
MSwgIjxtYXA+IiwgIjwvbWFwPiIgXSwKICAgICAgICAgICAgICAgIF9kZWZhdWx0OiBbIDAsICIi
LCAiIiBdCiAgICAgICAgfTsKCndyYXBNYXAub3B0Z3JvdXAgPSB3cmFwTWFwLm9wdGlvbjsKd3Jh
cE1hcC50Ym9keSA9IHdyYXBNYXAudGZvb3QgPSB3cmFwTWFwLmNvbGdyb3VwID0gd3JhcE1hcC5j
YXB0aW9uID0gd3JhcE1hcC50aGVhZDsKd3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7CgovLyBJRSBj
YW4ndCBzZXJpYWxpemUgPGxpbms+IGFuZCA8c2NyaXB0PiB0YWdzIG5vcm1hbGx5CmlmICggIWpR
dWVyeS5zdXBwb3J0Lmh0bWxTZXJpYWxpemUgKSB7CiAgICAgICAgd3JhcE1hcC5fZGVmYXVsdCA9
IFsgMSwgImRpdjxkaXY+IiwgIjwvZGl2PiIgXTsKfQoKalF1ZXJ5LmZuLmV4dGVuZCh7CiAgICAg
ICAgdGV4dDogZnVuY3Rpb24oIHRleHQgKSB7CiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5p
c0Z1bmN0aW9uKHRleHQpICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2Vs
ZiA9IGpRdWVyeSggdGhpcyApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnRleHQoIHRleHQuY2FsbCh0aGlzLCBpLCBzZWxmLnRleHQoKSkgKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCB0eXBl
b2YgdGV4dCAhPT0gIm9iamVjdCIgJiYgdGV4dCAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCggKHRoaXNbMF0gJiYgdGhp
c1swXS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZSggdGV4dCApICk7
CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS50ZXh0KCB0
aGlzICk7CiAgICAgICAgfSwKCiAgICAgICAgd3JhcEFsbDogZnVuY3Rpb24oIGh0bWwgKSB7CiAg
ICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBodG1sICkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSh0aGlzKS53cmFwQWxsKCBodG1sLmNhbGwodGhp
cywgaSkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgaWYgKCB0aGlzWzBdICkgewogICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgZWxlbWVudHMgdG8gd3JhcCB0aGUgdGFyZ2V0IGFyb3VuZAogICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgd3JhcCA9IGpRdWVyeSggaHRtbCwgdGhpc1swXS5vd25lckRvY3VtZW50ICku
ZXEoMCkuY2xvbmUodHJ1ZSk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXNbMF0u
cGFyZW50Tm9kZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwLmluc2Vy
dEJlZm9yZSggdGhpc1swXSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgICAgICAgICB3cmFwLm1hcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgZWxlbSA9IHRoaXM7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdoaWxlICggZWxlbS5maXJzdENoaWxkICYmIGVsZW0uZmlyc3RDaGlsZC5ub2RlVHlwZSA9
PT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0gPSBl
bGVtLmZpcnN0Q2hpbGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbTsKICAgICAgICAgICAgICAgICAg
ICAgICAgfSkuYXBwZW5kKCB0aGlzICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfSwKCiAgICAgICAgd3JhcElubmVyOiBmdW5jdGlvbigg
aHRtbCApIHsKICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGh0bWwgKSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMpLndyYXBJbm5lcigg
aHRtbC5jYWxsKHRoaXMsIGkpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBzZWxmLmNvbnRlbnRzKCk7Cgog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cy53cmFwQWxsKCBodG1sICk7CgogICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuYXBwZW5kKCBodG1sICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgIH0sCgogICAgICAgIHdyYXA6IGZ1bmN0aW9uKCBodG1sICkgewog
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkud3JhcEFsbCggaHRtbCApOwogICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgfSwKCiAgICAgICAgdW53cmFwOiBmdW5jdGlvbigpIHsKICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggIWpRdWVyeS5ub2RlTmFtZSggdGhpcywgImJvZHkiICkgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCB0aGlzICkucmVwbGFjZVdpdGgo
IHRoaXMuY2hpbGROb2RlcyApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9KS5lbmQoKTsKICAgICAgICB9LAoKICAgICAgICBhcHBlbmQ6IGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBmdW5j
dGlvbiggZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVUeXBl
ID09PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hp
bGQoIGVsZW0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgfSwKCiAgICAgICAgcHJlcGVuZDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsIHRydWUsIGZ1bmN0aW9uKCBlbGVtICkg
ewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUoIGVsZW0sIHRo
aXMuZmlyc3RDaGlsZCApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICB9LAoKICAgICAgICBiZWZvcmU6IGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgICAgaWYgKCB0aGlzWzBdICYmIHRoaXNbMF0ucGFyZW50Tm9kZSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCBmYWxzZSwgZnVuY3Rp
b24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRO
b2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApOwogICAgICAgICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGFyZ3VtZW50cy5sZW5ndGggKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBzZXQgPSBqUXVlcnkoYXJndW1lbnRzWzBdKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0LnB1c2guYXBwbHkoIHNldCwgdGhpcy50b0FycmF5KCkgKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzZXQsICJiZWZv
cmUiLCBhcmd1bWVudHMgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICBh
ZnRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoIHRoaXNbMF0gJiYgdGhpc1sw
XS5wYXJlbnROb2RlICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21N
YW5pcChhcmd1bWVudHMsIGZhbHNlLCBmdW5jdGlvbiggZWxlbSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlz
Lm5leHRTaWJsaW5nICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICggYXJndW1lbnRzLmxlbmd0aCApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHNldCA9IHRoaXMucHVzaFN0YWNrKCB0aGlzLCAiYWZ0ZXIiLCBhcmd1bWVudHMgKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0LnB1c2guYXBwbHkoIHNldCwgalF1ZXJ5KGFyZ3Vt
ZW50c1swXSkudG9BcnJheSgpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXQ7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgLy8ga2VlcERhdGEgaXMgZm9y
IGludGVybmFsIHVzZSBvbmx5LS1kbyBub3QgZG9jdW1lbnQKICAgICAgICByZW1vdmU6IGZ1bmN0
aW9uKCBzZWxlY3Rvciwga2VlcERhdGEgKSB7CiAgICAgICAgICAgICAgICBmb3IgKCB2YXIgaSA9
IDAsIGVsZW07IChlbGVtID0gdGhpc1tpXSkgIT0gbnVsbDsgaSsrICkgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoICFzZWxlY3RvciB8fCBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgWyBl
bGVtIF0gKS5sZW5ndGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAh
a2VlcERhdGEgJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jbGVhbkRhdGEoIGVsZW0uZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIioiKSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LmNsZWFuRGF0YSggWyBlbGVtIF0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5wYXJlbnROb2Rl
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKCBlbGVtICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgfSwKCiAgICAgICAgZW1wdHk6IGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwLCBlbGVtOyAoZWxlbSA9IHRoaXNbaV0p
ICE9IG51bGw7IGkrKyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGVsZW1l
bnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqUXVlcnkuY2xlYW5EYXRhKCBlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikgKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVt
b3ZlIGFueSByZW1haW5pbmcgbm9kZXMKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBl
bGVtLmZpcnN0Q2hpbGQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5y
ZW1vdmVDaGlsZCggZWxlbS5maXJzdENoaWxkICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9
LAoKICAgICAgICBjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZl
bnRzICkgewogICAgICAgICAgICAgICAgZGF0YUFuZEV2ZW50cyA9IGRhdGFBbmRFdmVudHMgPT0g
bnVsbCA/IGZhbHNlIDogZGF0YUFuZEV2ZW50czsKICAgICAgICAgICAgICAgIGRlZXBEYXRhQW5k
RXZlbnRzID0gZGVlcERhdGFBbmRFdmVudHMgPT0gbnVsbCA/IGRhdGFBbmRFdmVudHMgOiBkZWVw
RGF0YUFuZEV2ZW50czsKCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9u
ICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5jbG9uZSggdGhpcywg
ZGF0YUFuZEV2ZW50cywgZGVlcERhdGFBbmRFdmVudHMgKTsKICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgIH0sCgogICAgICAgIGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHsKICAgICAgICAgICAg
ICAgIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXNbMF0gJiYgdGhpc1swXS5ub2RlVHlwZSA9PT0gMSA/CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShyaW5saW5lalF1ZXJ5
LCAiIikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7CgogICAgICAgICAg
ICAgICAgLy8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVy
SFRNTAogICAgICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIHZhbHVlID09PSAic3RyaW5n
IiAmJiAhcm5vY2FjaGUudGVzdCggdmFsdWUgKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAo
alF1ZXJ5LnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UgfHwgIXJsZWFkaW5nV2hpdGVzcGFjZS50
ZXN0KCB2YWx1ZSApKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAhd3JhcE1hcFsgKHJ0YWdO
YW1lLmV4ZWMoIHZhbHVlICkgfHwgWyIiLCAiIl0pWzFdLnRvTG93ZXJDYXNlKCkgXSApIHsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyeGh0bWxUYWcsICI8
JDE+PC8kMj4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBs
OyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1v
dmUgZWxlbWVudCBub2RlcyBhbmQgcHJldmVudCBtZW1vcnkgbGVha3MKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpc1tpXS5ub2RlVHlwZSA9PT0gMSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmNs
ZWFuRGF0YSggdGhpc1tpXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbaV0uaW5uZXJIVE1MID0g
dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYg
dXNpbmcgaW5uZXJIVE1MIHRocm93cyBhbiBleGNlcHRpb24sIHVzZSB0aGUgZmFsbGJhY2sgbWV0
aG9kCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuZW1wdHkoKS5hcHBlbmQoIHZhbHVlICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBqUXVlcnkuaXNGdW5j
dGlvbiggdmFsdWUgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lYWNoKGZ1bmN0
aW9uKGkpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0galF1ZXJ5
KCB0aGlzICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaHRtbCggdmFs
dWUuY2FsbCh0aGlzLCBpLCBzZWxmLmh0bWwoKSkgKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fSk7CgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpczsKICAgICAgICB9LAoKICAgICAgICByZXBsYWNlV2l0aDogZnVuY3Rp
b24oIHZhbHVlICkgewogICAgICAgICAgICAgICAgaWYgKCB0aGlzWzBdICYmIHRoaXNbMF0ucGFy
ZW50Tm9kZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhl
IGVsZW1lbnRzIGFyZSByZW1vdmVkIGZyb20gdGhlIERPTSBiZWZvcmUgdGhleSBhcmUgaW5zZXJ0
ZWQKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBjYW4gaGVscCBmaXggcmVwbGFjaW5n
IGEgcGFyZW50IHdpdGggY2hpbGQgZWxlbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBqUXVlcnkuaXNGdW5jdGlvbiggdmFsdWUgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0galF1ZXJ5KHRoaXMpLCBvbGQgPSBzZWxm
Lmh0bWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVw
bGFjZVdpdGgoIHZhbHVlLmNhbGwoIHRoaXMsIGksIG9sZCApICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAic3RyaW5nIiApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGpRdWVyeSggdmFsdWUgKS5kZXRhY2goKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YXIgbmV4dCA9IHRoaXMubmV4dFNpYmxpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeSggdGhpcyApLnJlbW92ZSgpOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIG5leHQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkobmV4dCkuYmVmb3JlKCB2YWx1ZSApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBqUXVlcnkocGFyZW50KS5hcHBlbmQoIHZhbHVlICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxlbmd0aCA/
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdXNoU3RhY2soIGpRdWVyeShq
UXVlcnkuaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZSgpIDogdmFsdWUpLCAicmVwbGFjZVdpdGgi
LCB2YWx1ZSApIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzOwogICAgICAg
ICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9y
ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlKCBzZWxlY3RvciwgdHJ1ZSAp
OwogICAgICAgIH0sCgogICAgICAgIGRvbU1hbmlwOiBmdW5jdGlvbiggYXJncywgdGFibGUsIGNh
bGxiYWNrICkgewogICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMsIGZpcnN0LCBmcmFnbWVudCwg
cGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFyZ3NbMF0sCiAgICAgICAg
ICAgICAgICAgICAgICAgIHNjcmlwdHMgPSBbXTsKCiAgICAgICAgICAgICAgICAvLyBXZSBjYW4n
dCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXQKICAg
ICAgICAgICAgICAgIGlmICggIWpRdWVyeS5zdXBwb3J0LmNoZWNrQ2xvbmUgJiYgYXJndW1lbnRz
Lmxlbmd0aCA9PT0gMyAmJiB0eXBlb2YgdmFsdWUgPT09ICJzdHJpbmciICYmIHJjaGVja2VkLnRl
c3QoIHZhbHVlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMp
LmRvbU1hbmlwKCBhcmdzLCB0YWJsZSwgY2FsbGJhY2ssIHRydWUgKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBqUXVl
cnkuaXNGdW5jdGlvbih2YWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzZWxmID0galF1ZXJ5KHRoaXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFy
Z3NbMF0gPSB2YWx1ZS5jYWxsKHRoaXMsIGksIHRhYmxlID8gc2VsZi5odG1sKCkgOiB1bmRlZmlu
ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9tTWFuaXAoIGFyZ3Ms
IHRhYmxlLCBjYWxsYmFjayApOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIHRoaXNbMF0gKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudCA9IHZhbHVlICYmIHZhbHVlLnBhcmVudE5vZGU7CgogICAgICAgICAg
ICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBhIGZyYWdtZW50LCBqdXN0IHVzZSB0aGF0IGlu
c3RlYWQgb2YgYnVpbGRpbmcgYSBuZXcgb25lCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
alF1ZXJ5LnN1cHBvcnQucGFyZW50Tm9kZSAmJiBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlID09
PSAxMSAmJiBwYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IHRoaXMubGVuZ3RoICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB7IGZyYWdtZW50OiBwYXJlbnQg
fTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0cyA9IGpRdWVyeS5idWlsZEZyYWdtZW50KCBhcmdzLCB0aGlzLCBz
Y3JpcHRzICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYWdtZW50ID0gcmVzdWx0cy5mcmFnbWVudDsKCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmcmFnbWVudCA9IGZyYWdtZW50LmZpcnN0Q2hpbGQ7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmlyc3QgPSBmcmFnbWVudC5maXJzdENoaWxkOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGZpcnN0ICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRhYmxlID0gdGFibGUgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBm
aXJzdCwgInRyIiApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCB2YXIg
aSA9IDAsIGwgPSB0aGlzLmxlbmd0aCwgbGFzdEluZGV4ID0gbCAtIDE7IGkgPCBsOyBpKysgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSA/CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9v
dCh0aGlzW2ldLCBmaXJzdCkgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXNbaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBsZWFrIG1lbW9y
eSBieSBpbmFkdmVydGVudGx5IGRpc2NhcmRpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGZyYWdtZW50ICh3aGljaCBtaWdo
dCBoYXZlIGF0dGFjaGVkIGRhdGEpIGluc3RlYWQgb2YKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNpbmcgaXQ7IGluIGFkZGl0aW9uLCB1c2UgdGhl
IG9yaWdpbmFsIGZyYWdtZW50IG9iamVjdCBmb3IgdGhlIGxhc3QKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXRlbSBpbnN0ZWFkIG9mIGZpcnN0IGJl
Y2F1c2UgaXQgY2FuIGVuZCB1cCBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIGNlcnRhaW4gc2l0dWF0
aW9ucyAoQnVnICM4MDcwKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gRnJhZ21lbnRzIGZyb20gdGhlIGZyYWdtZW50IGNhY2hlIG11c3QgYWx3YXlz
IGJlIGNsb25lZCBhbmQgbmV2ZXIgdXNlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBpbiBwbGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5jYWNoZWFibGUgfHwgKGwgPiAxICYmIGkgPCBs
YXN0SW5kZXgpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBqUXVlcnkuY2xvbmUoIGZyYWdtZW50LCB0cnVlLCB0cnVlICkgOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBzY3JpcHRzLmxlbmd0aCApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqUXVlcnkuZWFjaCggc2NyaXB0cywgZXZhbFNjcmlwdCApOwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CiAgICAgICAgfQp9KTsKCmZ1bmN0aW9uIHJvb3QoIGVsZW0sIGN1ciApIHsKICAg
ICAgICByZXR1cm4galF1ZXJ5Lm5vZGVOYW1lKGVsZW0sICJ0YWJsZSIpID8KICAgICAgICAgICAg
ICAgIChlbGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdIHx8CiAgICAgICAgICAg
ICAgICBlbGVtLmFwcGVuZENoaWxkKGVsZW0ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
Ym9keSIpKSkgOgogICAgICAgICAgICAgICAgZWxlbTsKfQoKZnVuY3Rpb24gY2xvbmVDb3B5RXZl
bnQoIHNyYywgZGVzdCApIHsKCiAgICAgICAgaWYgKCBkZXN0Lm5vZGVUeXBlICE9PSAxIHx8ICFq
UXVlcnkuaGFzRGF0YSggc3JjICkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
fQoKICAgICAgICB2YXIgaW50ZXJuYWxLZXkgPSBqUXVlcnkuZXhwYW5kbywKICAgICAgICAgICAg
ICAgIG9sZERhdGEgPSBqUXVlcnkuZGF0YSggc3JjICksCiAgICAgICAgICAgICAgICBjdXJEYXRh
ID0galF1ZXJ5LmRhdGEoIGRlc3QsIG9sZERhdGEgKTsKCiAgICAgICAgLy8gU3dpdGNoIHRvIHVz
ZSB0aGUgaW50ZXJuYWwgZGF0YSBvYmplY3QsIGlmIGl0IGV4aXN0cywgZm9yIHRoZSBuZXh0CiAg
ICAgICAgLy8gc3RhZ2Ugb2YgZGF0YSBjb3B5aW5nCiAgICAgICAgaWYgKCAob2xkRGF0YSA9IG9s
ZERhdGFbIGludGVybmFsS2V5IF0pICkgewogICAgICAgICAgICAgICAgdmFyIGV2ZW50cyA9IG9s
ZERhdGEuZXZlbnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckRhdGEgPSBj
dXJEYXRhWyBpbnRlcm5hbEtleSBdID0galF1ZXJ5LmV4dGVuZCh7fSwgb2xkRGF0YSk7CgogICAg
ICAgICAgICAgICAgaWYgKCBldmVudHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSBjdXJEYXRhLmhhbmRsZTsKICAgICAgICAgICAgICAgICAgICAgICAgY3VyRGF0YS5ldmVudHMg
PSB7fTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciB0eXBlIGluIGV2ZW50cyAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCB2YXIgaSA9IDAsIGwgPSBl
dmVudHNbIHR5cGUgXS5sZW5ndGg7IGkgPCBsOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXZlbnQuYWRkKCBkZXN0LCB0eXBlICsgKCBldmVu
dHNbIHR5cGUgXVsgaSBdLm5hbWVzcGFjZSA/ICIuIiA6ICIiICkgKyBldmVudHNbIHR5cGUgXVsg
aSBdLm5hbWVzcGFjZSwgZXZlbnRzWyB0eXBlIF1bIGkgXSwgZXZlbnRzWyB0eXBlIF1bIGkgXS5k
YXRhICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQp9CgpmdW5jdGlvbiBjbG9uZUZp
eEF0dHJpYnV0ZXMoIHNyYywgZGVzdCApIHsKICAgICAgICB2YXIgbm9kZU5hbWU7CgogICAgICAg
IC8vIFdlIGRvIG5vdCBuZWVkIHRvIGRvIGFueXRoaW5nIGZvciBub24tRWxlbWVudHMKICAgICAg
ICBpZiAoIGRlc3Qubm9kZVR5cGUgIT09IDEgKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgfQoKICAgICAgICAvLyBjbGVhckF0dHJpYnV0ZXMgcmVtb3ZlcyB0aGUgYXR0cmlidXRl
cywgd2hpY2ggd2UgZG9uJ3Qgd2FudCwKICAgICAgICAvLyBidXQgYWxzbyByZW1vdmVzIHRoZSBh
dHRhY2hFdmVudCBldmVudHMsIHdoaWNoIHdlICpkbyogd2FudAogICAgICAgIGlmICggZGVzdC5j
bGVhckF0dHJpYnV0ZXMgKSB7CiAgICAgICAgICAgICAgICBkZXN0LmNsZWFyQXR0cmlidXRlcygp
OwogICAgICAgIH0KCiAgICAgICAgLy8gbWVyZ2VBdHRyaWJ1dGVzLCBpbiBjb250cmFzdCwgb25s
eSBtZXJnZXMgYmFjayBvbiB0aGUKICAgICAgICAvLyBvcmlnaW5hbCBhdHRyaWJ1dGVzLCBub3Qg
dGhlIGV2ZW50cwogICAgICAgIGlmICggZGVzdC5tZXJnZUF0dHJpYnV0ZXMgKSB7CiAgICAgICAg
ICAgICAgICBkZXN0Lm1lcmdlQXR0cmlidXRlcyggc3JjICk7CiAgICAgICAgfQoKICAgICAgICBu
b2RlTmFtZSA9IGRlc3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgLy8gSUU2LTgg
ZmFpbCB0byBjbG9uZSBjaGlsZHJlbiBpbnNpZGUgb2JqZWN0IGVsZW1lbnRzIHRoYXQgdXNlCiAg
ICAgICAgLy8gdGhlIHByb3ByaWV0YXJ5IGNsYXNzaWQgYXR0cmlidXRlIHZhbHVlIChyYXRoZXIg
dGhhbiB0aGUgdHlwZQogICAgICAgIC8vIGF0dHJpYnV0ZSkgdG8gaWRlbnRpZnkgdGhlIHR5cGUg
b2YgY29udGVudCB0byBkaXNwbGF5CiAgICAgICAgaWYgKCBub2RlTmFtZSA9PT0gIm9iamVjdCIg
KSB7CiAgICAgICAgICAgICAgICBkZXN0Lm91dGVySFRNTCA9IHNyYy5vdXRlckhUTUw7CgogICAg
ICAgIH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiICYmIChzcmMudHlwZSA9PT0gImNo
ZWNrYm94IiB8fCBzcmMudHlwZSA9PT0gInJhZGlvIikgKSB7CiAgICAgICAgICAgICAgICAvLyBJ
RTYtOCBmYWlscyB0byBwZXJzaXN0IHRoZSBjaGVja2VkIHN0YXRlIG9mIGEgY2xvbmVkIGNoZWNr
Ym94CiAgICAgICAgICAgICAgICAvLyBvciByYWRpbyBidXR0b24uIFdvcnNlLCBJRTYtNyBmYWls
IHRvIGdpdmUgdGhlIGNsb25lZCBlbGVtZW50CiAgICAgICAgICAgICAgICAvLyBhIGNoZWNrZWQg
YXBwZWFyYW5jZSBpZiB0aGUgZGVmYXVsdENoZWNrZWQgdmFsdWUgaXNuJ3QgYWxzbyBzZXQKICAg
ICAgICAgICAgICAgIGlmICggc3JjLmNoZWNrZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3QuZGVmYXVsdENoZWNrZWQgPSBkZXN0LmNoZWNrZWQgPSBzcmMuY2hlY2tlZDsKICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBJRTYtNyBnZXQgY29uZnVzZWQgYW5kIGVu
ZCB1cCBzZXR0aW5nIHRoZSB2YWx1ZSBvZiBhIGNsb25lZAogICAgICAgICAgICAgICAgLy8gY2hl
Y2tib3gvcmFkaW8gYnV0dG9uIHRvIGFuIGVtcHR5IHN0cmluZyBpbnN0ZWFkIG9mICJvbiIKICAg
ICAgICAgICAgICAgIGlmICggZGVzdC52YWx1ZSAhPT0gc3JjLnZhbHVlICkgewogICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0LnZhbHVlID0gc3JjLnZhbHVlOwogICAgICAgICAgICAgICAgfQoK
ICAgICAgICAvLyBJRTYtOCBmYWlscyB0byByZXR1cm4gdGhlIHNlbGVjdGVkIG9wdGlvbiB0byB0
aGUgZGVmYXVsdCBzZWxlY3RlZAogICAgICAgIC8vIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25z
CiAgICAgICAgfSBlbHNlIGlmICggbm9kZU5hbWUgPT09ICJvcHRpb24iICkgewogICAgICAgICAg
ICAgICAgZGVzdC5zZWxlY3RlZCA9IHNyYy5kZWZhdWx0U2VsZWN0ZWQ7CgogICAgICAgIC8vIElF
Ni04IGZhaWxzIHRvIHNldCB0aGUgZGVmYXVsdFZhbHVlIHRvIHRoZSBjb3JyZWN0IHZhbHVlIHdo
ZW4KICAgICAgICAvLyBjbG9uaW5nIG90aGVyIHR5cGVzIG9mIGlucHV0IGZpZWxkcwogICAgICAg
IH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSAiaW5wdXQiIHx8IG5vZGVOYW1lID09PSAidGV4dGFy
ZWEiICkgewogICAgICAgICAgICAgICAgZGVzdC5kZWZhdWx0VmFsdWUgPSBzcmMuZGVmYXVsdFZh
bHVlOwogICAgICAgIH0KCiAgICAgICAgLy8gRXZlbnQgZGF0YSBnZXRzIHJlZmVyZW5jZWQgaW5z
dGVhZCBvZiBjb3BpZWQgaWYgdGhlIGV4cGFuZG8KICAgICAgICAvLyBnZXRzIGNvcGllZCB0b28K
ICAgICAgICBkZXN0LnJlbW92ZUF0dHJpYnV0ZSggalF1ZXJ5LmV4cGFuZG8gKTsKfQoKalF1ZXJ5
LmJ1aWxkRnJhZ21lbnQgPSBmdW5jdGlvbiggYXJncywgbm9kZXMsIHNjcmlwdHMgKSB7CiAgICAg
ICAgdmFyIGZyYWdtZW50LCBjYWNoZWFibGUsIGNhY2hlcmVzdWx0cywgZG9jOwoKICAvLyBub2Rl
cyBtYXkgY29udGFpbiBlaXRoZXIgYW4gZXhwbGljaXQgZG9jdW1lbnQgb2JqZWN0LAogIC8vIGEg
alF1ZXJ5IGNvbGxlY3Rpb24gb3IgY29udGV4dCBvYmplY3QuCiAgLy8gSWYgbm9kZXNbMF0gY29u
dGFpbnMgYSB2YWxpZCBvYmplY3QgdG8gYXNzaWduIHRvIGRvYwogIGlmICggbm9kZXMgJiYgbm9k
ZXNbMF0gKSB7CiAgICBkb2MgPSBub2Rlc1swXS5vd25lckRvY3VtZW50IHx8IG5vZGVzWzBdOwog
IH0KCiAgLy8gRW5zdXJlIHRoYXQgYW4gYXR0ciBvYmplY3QgZG9lc24ndCBpbmNvcnJlY3RseSBz
dGFuZCBpbiBhcyBhIGRvY3VtZW50IG9iamVjdAogICAgICAgIC8vIENocm9tZSBhbmQgRmlyZWZv
eCBzZWVtIHRvIGFsbG93IHRoaXMgdG8gb2NjdXIgYW5kIHdpbGwgdGhyb3cgZXhjZXB0aW9uCiAg
ICAgICAgLy8gRml4ZXMgIzg5NTAKICAgICAgICBpZiAoICFkb2MuY3JlYXRlRG9jdW1lbnRGcmFn
bWVudCApIHsKICAgICAgICAgICAgICAgIGRvYyA9IGRvY3VtZW50OwogICAgICAgIH0KCiAgICAg
ICAgLy8gT25seSBjYWNoZSAic21hbGwiICgxLzIgS0IpIEhUTUwgc3RyaW5ncyB0aGF0IGFyZSBh
c3NvY2lhdGVkIHdpdGggdGhlIG1haW4gZG9jdW1lbnQKICAgICAgICAvLyBDbG9uaW5nIG9wdGlv
bnMgbG9zZXMgdGhlIHNlbGVjdGVkIHN0YXRlLCBzbyBkb24ndCBjYWNoZSB0aGVtCiAgICAgICAg
Ly8gSUUgNiBkb2Vzbid0IGxpa2UgaXQgd2hlbiB5b3UgcHV0IDxvYmplY3Q+IG9yIDxlbWJlZD4g
ZWxlbWVudHMgaW4gYSBmcmFnbWVudAogICAgICAgIC8vIEFsc28sIFdlYktpdCBkb2VzIG5vdCBj
bG9uZSAnY2hlY2tlZCcgYXR0cmlidXRlcyBvbiBjbG9uZU5vZGUsIHNvIGRvbid0IGNhY2hlCiAg
ICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXJnc1swXSA9PT0gInN0cmlu
ZyIgJiYgYXJnc1swXS5sZW5ndGggPCA1MTIgJiYgZG9jID09PSBkb2N1bWVudCAmJgogICAgICAg
ICAgICAgICAgYXJnc1swXS5jaGFyQXQoMCkgPT09ICI8IiAmJiAhcm5vY2FjaGUudGVzdCggYXJn
c1swXSApICYmIChqUXVlcnkuc3VwcG9ydC5jaGVja0Nsb25lIHx8ICFyY2hlY2tlZC50ZXN0KCBh
cmdzWzBdICkpICkgewoKICAgICAgICAgICAgICAgIGNhY2hlYWJsZSA9IHRydWU7CgogICAgICAg
ICAgICAgICAgY2FjaGVyZXN1bHRzID0galF1ZXJ5LmZyYWdtZW50c1sgYXJnc1swXSBdOwogICAg
ICAgICAgICAgICAgaWYgKCBjYWNoZXJlc3VsdHMgJiYgY2FjaGVyZXN1bHRzICE9PSAxICkgewog
ICAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudCA9IGNhY2hlcmVzdWx0czsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggIWZyYWdtZW50ICkgewogICAgICAgICAg
ICAgICAgZnJhZ21lbnQgPSBkb2MuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogICAgICAgICAg
ICAgICAgalF1ZXJ5LmNsZWFuKCBhcmdzLCBkb2MsIGZyYWdtZW50LCBzY3JpcHRzICk7CiAgICAg
ICAgfQoKICAgICAgICBpZiAoIGNhY2hlYWJsZSApIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5m
cmFnbWVudHNbIGFyZ3NbMF0gXSA9IGNhY2hlcmVzdWx0cyA/IGZyYWdtZW50IDogMTsKICAgICAg
ICB9CgogICAgICAgIHJldHVybiB7IGZyYWdtZW50OiBmcmFnbWVudCwgY2FjaGVhYmxlOiBjYWNo
ZWFibGUgfTsKfTsKCmpRdWVyeS5mcmFnbWVudHMgPSB7fTsKCmpRdWVyeS5lYWNoKHsKICAgICAg
ICBhcHBlbmRUbzogImFwcGVuZCIsCiAgICAgICAgcHJlcGVuZFRvOiAicHJlcGVuZCIsCiAgICAg
ICAgaW5zZXJ0QmVmb3JlOiAiYmVmb3JlIiwKICAgICAgICBpbnNlcnRBZnRlcjogImFmdGVyIiwK
ICAgICAgICByZXBsYWNlQWxsOiAicmVwbGFjZVdpdGgiCn0sIGZ1bmN0aW9uKCBuYW1lLCBvcmln
aW5hbCApIHsKICAgICAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciAp
IHsKICAgICAgICAgICAgICAgIHZhciByZXQgPSBbXSwKICAgICAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0ID0galF1ZXJ5KCBzZWxlY3RvciApLAogICAgICAgICAgICAgICAgICAgICAgICBwYXJl
bnQgPSB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzWzBdLnBhcmVudE5vZGU7CgogICAgICAgICAg
ICAgICAgaWYgKCBwYXJlbnQgJiYgcGFyZW50Lm5vZGVUeXBlID09PSAxMSAmJiBwYXJlbnQuY2hp
bGROb2Rlcy5sZW5ndGggPT09IDEgJiYgaW5zZXJ0Lmxlbmd0aCA9PT0gMSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0WyBvcmlnaW5hbCBdKCB0aGlzWzBdICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMCwgbCA9IGluc2VydC5sZW5ndGg7IGkg
PCBsOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1zID0g
KGkgPiAwID8gdGhpcy5jbG9uZSh0cnVlKSA6IHRoaXMpLmdldCgpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeSggaW5zZXJ0W2ldIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcmV0LmNvbmNhdCggZWxlbXMg
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMucHVzaFN0YWNrKCByZXQsIG5hbWUsIGluc2VydC5zZWxlY3RvciApOwogICAgICAg
ICAgICAgICAgfQogICAgICAgIH07Cn0pOwoKZnVuY3Rpb24gZ2V0QWxsKCBlbGVtICkgewogICAg
ICAgIGlmICggImdldEVsZW1lbnRzQnlUYWdOYW1lIiBpbiBlbGVtICkgewogICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoICIqIiApOwoKICAgICAgICB9IGVs
c2UgaWYgKCAicXVlcnlTZWxlY3RvckFsbCIgaW4gZWxlbSApIHsKICAgICAgICAgICAgICAgIHJl
dHVybiBlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoICIqIiApOwoKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KfQoKLy8gVXNlZCBpbiBjbGVhbiwgZml4
ZXMgdGhlIGRlZmF1bHRDaGVja2VkIHByb3BlcnR5CmZ1bmN0aW9uIGZpeERlZmF1bHRDaGVja2Vk
KCBlbGVtICkgewogICAgICAgIGlmICggZWxlbS50eXBlID09PSAiY2hlY2tib3giIHx8IGVsZW0u
dHlwZSA9PT0gInJhZGlvIiApIHsKICAgICAgICAgICAgICAgIGVsZW0uZGVmYXVsdENoZWNrZWQg
PSBlbGVtLmNoZWNrZWQ7CiAgICAgICAgfQp9Ci8vIEZpbmRzIGFsbCBpbnB1dHMgYW5kIHBhc3Nl
cyB0aGVtIHRvIGZpeERlZmF1bHRDaGVja2VkCmZ1bmN0aW9uIGZpbmRJbnB1dHMoIGVsZW0gKSB7
CiAgICAgICAgaWYgKCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJpbnB1dCIgKSApIHsKICAgICAg
ICAgICAgICAgIGZpeERlZmF1bHRDaGVja2VkKCBlbGVtICk7CiAgICAgICAgfSBlbHNlIGlmICgg
ImdldEVsZW1lbnRzQnlUYWdOYW1lIiBpbiBlbGVtICkgewogICAgICAgICAgICAgICAgalF1ZXJ5
LmdyZXAoIGVsZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IiksIGZpeERlZmF1bHRDaGVj
a2VkICk7CiAgICAgICAgfQp9CgpqUXVlcnkuZXh0ZW5kKHsKICAgICAgICBjbG9uZTogZnVuY3Rp
b24oIGVsZW0sIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkgewogICAgICAgICAg
ICAgICAgdmFyIGNsb25lID0gZWxlbS5jbG9uZU5vZGUodHJ1ZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3JjRWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdEVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk7CgogICAg
ICAgICAgICAgICAgaWYgKCAoIWpRdWVyeS5zdXBwb3J0Lm5vQ2xvbmVFdmVudCB8fCAhalF1ZXJ5
LnN1cHBvcnQubm9DbG9uZUNoZWNrZWQpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGVsZW0ubm9kZVR5cGUgPT09IDEgfHwgZWxlbS5ub2RlVHlwZSA9PT0gMTEpICYmICFqUXVl
cnkuaXNYTUxEb2MoZWxlbSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFIGNvcGll
cyBldmVudHMgYm91bmQgdmlhIGF0dGFjaEV2ZW50IHdoZW4gdXNpbmcgY2xvbmVOb2RlLgogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBDYWxsaW5nIGRldGFjaEV2ZW50IG9uIHRoZSBjbG9uZSB3
aWxsIGFsc28gcmVtb3ZlIHRoZSBldmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJv
bSB0aGUgb3JpZ2luYWwuIEluIG9yZGVyIHRvIGdldCBhcm91bmQgdGhpcywgd2UgdXNlIHNvbWUK
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvcHJpZXRhcnkgbWV0aG9kcyB0byBjbGVhciB0
aGUgZXZlbnRzLiBUaGFua3MgdG8gTW9vVG9vbHMKICAgICAgICAgICAgICAgICAgICAgICAgLy8g
Z3V5cyBmb3IgdGhpcyBob3RuZXNzLgoKICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVGaXhB
dHRyaWJ1dGVzKCBlbGVtLCBjbG9uZSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNp
bmcgU2l6emxlIGhlcmUgaXMgY3Jhenkgc2xvdywgc28gd2UgdXNlIGdldEVsZW1lbnRzQnlUYWdO
YW1lCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc3RlYWQKICAgICAgICAgICAgICAgICAg
ICAgICAgc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgZGVzdEVsZW1lbnRzID0gZ2V0QWxsKCBjbG9uZSApOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2VpcmQgaXRlcmF0aW9uIGJlY2F1c2UgSUUgd2lsbCByZXBsYWNlIHRoZSBsZW5ndGgg
cHJvcGVydHkKICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBhbiBlbGVtZW50IGlmIHlv
dSBhcmUgY2xvbmluZyB0aGUgYm9keSBhbmQgb25lIG9mIHRoZQogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBlbGVtZW50cyBvbiB0aGUgcGFnZSBoYXMgYSBuYW1lIG9yIGlkIG9mICJsZW5ndGgi
CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBzcmNFbGVtZW50c1tpXTsgKytp
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBk
ZXN0aW5hdGlvbiBub2RlIGlzIG5vdCBudWxsOyBGaXhlcyAjOTU4NwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggZGVzdEVsZW1lbnRzW2ldICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVGaXhBdHRyaWJ1dGVzKCBzcmNFbGVtZW50c1tp
XSwgZGVzdEVsZW1lbnRzW2ldICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgLy8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZQogICAg
ICAgICAgICAgICAgaWYgKCBkYXRhQW5kRXZlbnRzICkgewogICAgICAgICAgICAgICAgICAgICAg
ICBjbG9uZUNvcHlFdmVudCggZWxlbSwgY2xvbmUgKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3JjRWxlbWVudHMgPSBnZXRBbGwoIGVsZW0gKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBzcmNFbGVtZW50c1tpXTsgKytpICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVDb3B5RXZlbnQoIHNyY0Vs
ZW1lbnRzW2ldLCBkZXN0RWxlbWVudHNbaV0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBzcmNFbGVtZW50cyA9IGRlc3RFbGVtZW50cyA9IG51bGw7CgogICAgICAgICAg
ICAgICAgLy8gUmV0dXJuIHRoZSBjbG9uZWQgc2V0CiAgICAgICAgICAgICAgICByZXR1cm4gY2xv
bmU7CiAgICAgICAgfSwKCiAgICAgICAgY2xlYW46IGZ1bmN0aW9uKCBlbGVtcywgY29udGV4dCwg
ZnJhZ21lbnQsIHNjcmlwdHMgKSB7CiAgICAgICAgICAgICAgICB2YXIgY2hlY2tTY3JpcHRUeXBl
OwoKICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwoKICAgICAg
ICAgICAgICAgIC8vICFjb250ZXh0LmNyZWF0ZUVsZW1lbnQgZmFpbHMgaW4gSUUgd2l0aCBhbiBl
cnJvciBidXQgcmV0dXJucyB0eXBlb2YgJ29iamVjdCcKICAgICAgICAgICAgICAgIGlmICggdHlw
ZW9mIGNvbnRleHQuY3JlYXRlRWxlbWVudCA9PT0gInVuZGVmaW5lZCIgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dFsw
XSAmJiBjb250ZXh0WzBdLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdLCBqOwoKICAgICAgICAgICAgICAgIGZv
ciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgewog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBlbGVtID09PSAibnVtYmVyIiApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtICs9ICIiOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFlbGVtICkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IGh0bWwgc3RyaW5nIGlu
dG8gRE9NIG5vZGVzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGVsZW0gPT09
ICJzdHJpbmciICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXJodG1s
LnRlc3QoIGVsZW0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0gPSBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBlbGVtICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEZpeCAiWEhUTUwiLXN0eWxlIHRhZ3MgaW4gYWxsIGJyb3dzZXJzCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gZWxlbS5yZXBsYWNlKHJ4aHRt
bFRhZywgIjwkMT48LyQyPiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRyaW0gd2hpdGVzcGFjZSwgb3RoZXJ3aXNlIGluZGV4T2Ygd29uJ3Qgd29yayBhcyBl
eHBlY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRhZyA9
IChydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyIiLCAiIl0pWzFdLnRvTG93ZXJDYXNlKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXAgPSB3cmFw
TWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXB0aCA9IHdyYXBbMF0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdiA9IGNvbnRleHQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR28g
dG8gaHRtbCBhbmQgYmFjaywgdGhlbiBwZWVsIG9mZiBleHRyYSB3cmFwcGVycwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9IHdyYXBbMV0gKyBl
bGVtICsgd3JhcFsyXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBNb3ZlIHRvIHRoZSByaWdodCBkZXB0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2hpbGUgKCBkZXB0aC0tICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXYgPSBkaXYubGFzdENoaWxkOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlbW92ZSBJRSdzIGF1dG9pbnNlcnRlZCA8dGJvZHk+IGZyb20gdGFibGUg
ZnJhZ21lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFq
UXVlcnkuc3VwcG9ydC50Ym9keSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFN0cmluZyB3YXMgYSA8dGFibGU+LCAqbWF5KiBoYXZlIHNwdXJp
b3VzIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIGhhc0JvZHkgPSBydGJvZHkudGVzdChlbGVtKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ym9keSA9IHRhZyA9PT0gInRhYmxl
IiAmJiAhaGFzQm9keSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaXYuZmlyc3RDaGlsZCAmJiBkaXYuZmlyc3RDaGlsZC5j
aGlsZE5vZGVzIDoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBTdHJpbmcgd2FzIGEgYmFyZSA8dGhlYWQ+IG9yIDx0Zm9v
dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdyYXBbMV0gPT09ICI8dGFibGU+IiAmJiAhaGFzQm9keSA/CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpdi5jaGlsZE5vZGVzIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW107CgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBqID0gdGJvZHkubGVuZ3RoIC0g
MTsgaiA+PSAwIDsgLS1qICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5Lm5vZGVOYW1lKCB0Ym9keVsgaiBdLCAidGJv
ZHkiICkgJiYgIXRib2R5WyBqIF0uY2hpbGROb2Rlcy5sZW5ndGggKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ym9keVsg
aiBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRib2R5WyBqIF0gKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJRSBjb21wbGV0ZWx5IGtpbGxzIGxlYWRpbmcgd2hpdGVzcGFjZSB3aGVuIGlubmVy
SFRNTCBpcyB1c2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ICFqUXVlcnkuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSAmJiBybGVhZGluZ1doaXRlc3BhY2Uu
dGVzdCggZWxlbSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXYuaW5zZXJ0QmVmb3JlKCBjb250ZXh0LmNyZWF0ZVRleHROb2RlKCBybGVhZGlu
Z1doaXRlc3BhY2UuZXhlYyhlbGVtKVswXSApLCBkaXYuZmlyc3RDaGlsZCApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsZW0gPSBkaXYuY2hpbGROb2RlczsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlc2V0cyBkZWZhdWx0Q2hlY2tlZCBmb3IgYW55IHJhZGlvcyBhbmQgY2hl
Y2tib3hlcwogICAgICAgICAgICAgICAgICAgICAgICAvLyBhYm91dCB0byBiZSBhcHBlbmRlZCB0
byB0aGUgRE9NIGluIElFIDYvNyAoIzgwNjApCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBs
ZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWpRdWVyeS5zdXBwb3J0LmFwcGVuZENo
ZWNrZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBlbGVtWzBdICYm
IHR5cGVvZiAobGVuID0gZWxlbS5sZW5ndGgpID09PSAibnVtYmVyIiApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgbGVuOyBqKysgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRJbnB1
dHMoIGVsZW1bal0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmluZElucHV0cyggZWxlbSApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBlbGVtLm5vZGVUeXBlICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldC5wdXNoKCBlbGVtICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0galF1ZXJ5Lm1lcmdl
KCByZXQsIGVsZW0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIGlmICggZnJhZ21lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGNoZWNrU2NyaXB0VHlwZSA9IGZ1bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAhZWxlbS50eXBlIHx8IHJzY3JpcHRUeXBlLnRlc3QoIGVs
ZW0udHlwZSApOwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgKCBpID0gMDsgcmV0W2ldOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBzY3JpcHRzICYmIGpRdWVyeS5ub2RlTmFtZSggcmV0W2ldLCAic2NyaXB0
IiApICYmICghcmV0W2ldLnR5cGUgfHwgcmV0W2ldLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gInRl
eHQvamF2YXNjcmlwdCIpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2NyaXB0cy5wdXNoKCByZXRbaV0ucGFyZW50Tm9kZSA/IHJldFtpXS5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKCByZXRbaV0gKSA6IHJldFtpXSApOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCByZXRbaV0ubm9kZVR5cGUgPT09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBqc1RhZ3MgPSBqUXVlcnkuZ3JlcCggcmV0W2ldLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCAic2NyaXB0IiApLCBjaGVja1NjcmlwdFR5cGUgKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC5zcGxpY2UuYXBw
bHkoIHJldCwgW2kgKyAxLCAwXS5jb25jYXQoIGpzVGFncyApICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZCggcmV0W2ldICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICB9LAoKICAgICAgICBjbGVh
bkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhLCBpZCwg
Y2FjaGUgPSBqUXVlcnkuY2FjaGUsIGludGVybmFsS2V5ID0galF1ZXJ5LmV4cGFuZG8sIHNwZWNp
YWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRl
RXhwYW5kbyA9IGpRdWVyeS5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87CgogICAgICAgICAgICAgICAg
Zm9yICggdmFyIGkgPSAwLCBlbGVtOyAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5ub2RlTmFtZSAmJiBqUXVlcnkubm9E
YXRhW2VsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0gKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlkID0gZWxlbVsgalF1ZXJ5LmV4cGFuZG8gXTsKCiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICggaWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YSA9IGNhY2hlWyBpZCBdICYmIGNhY2hlWyBpZCBdWyBpbnRlcm5hbEtleSBdOwoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGEgJiYgZGF0YS5ldmVudHMgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCB2YXIgdHlwZSBpbiBk
YXRhLmV2ZW50cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBzcGVjaWFsWyB0eXBlIF0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV2ZW50LnJlbW92ZSggZWxlbSwg
dHlwZSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBhIHNob3J0Y3V0IHRvIGF2b2lkIGpRdWVyeS5ldmVudC5yZW1vdmUncyBvdmVy
aGVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpRdWVyeS5yZW1vdmVFdmVudCggZWxlbSwgdHlwZSwgZGF0YS5oYW5kbGUgKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIE51bGwgdGhlIERPTSByZWZlcmVuY2UgdG8gYXZvaWQgSUU2LzcvOCBs
ZWFrICgjNzA1NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
ZGF0YS5oYW5kbGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGEuaGFuZGxlLmVsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWxldGVFeHBhbmRvICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsZW1bIGpRdWVyeS5leHBh
bmRvIF07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGVsZW0u
cmVtb3ZlQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIGpRdWVyeS5leHBhbmRvICk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxl
dGUgY2FjaGVbIGlkIF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IH0KICAgICAgICB9Cn0pOwoKZnVuY3Rpb24gZXZhbFNjcmlwdCggaSwgZWxlbSApIHsKICAgICAg
ICBpZiAoIGVsZW0uc3JjICkgewogICAgICAgICAgICAgICAgalF1ZXJ5LmFqYXgoewogICAgICAg
ICAgICAgICAgICAgICAgICB1cmw6IGVsZW0uc3JjLAogICAgICAgICAgICAgICAgICAgICAgICBh
c3luYzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAic2NyaXB0Igog
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGpRdWVy
eS5nbG9iYWxFdmFsKCAoIGVsZW0udGV4dCB8fCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5u
ZXJIVE1MIHx8ICIiICkucmVwbGFjZSggcmNsZWFuU2NyaXB0LCAiLyokMCovIiApICk7CiAgICAg
ICAgfQoKICAgICAgICBpZiAoIGVsZW0ucGFyZW50Tm9kZSApIHsKICAgICAgICAgICAgICAgIGVs
ZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggZWxlbSApOwogICAgICAgIH0KfQoKCgoKdmFyIHJh
bHBoYSA9IC9hbHBoYVwoW14pXSpcKS9pLAogICAgICAgIHJvcGFjaXR5ID0gL29wYWNpdHk9KFte
KV0qKS8sCiAgICAgICAgLy8gZml4ZWQgZm9yIElFOSwgc2VlICM4MzQ2CiAgICAgICAgcnVwcGVy
ID0gLyhbQS1aXXxebXMpL2csCiAgICAgICAgcm51bXB4ID0gL14tP1xkKyg/OnB4KT8kL2ksCiAg
ICAgICAgcm51bSA9IC9eLT9cZC8sCiAgICAgICAgcnJlbE51bSA9IC9eKFtcLStdKT0oW1wtKy5c
ZGVdKykvLAoKICAgICAgICBjc3NTaG93ID0geyBwb3NpdGlvbjogImFic29sdXRlIiwgdmlzaWJp
bGl0eTogImhpZGRlbiIsIGRpc3BsYXk6ICJibG9jayIgfSwKICAgICAgICBjc3NXaWR0aCA9IFsg
IkxlZnQiLCAiUmlnaHQiIF0sCiAgICAgICAgY3NzSGVpZ2h0ID0gWyAiVG9wIiwgIkJvdHRvbSIg
XSwKICAgICAgICBjdXJDU1MsCgogICAgICAgIGdldENvbXB1dGVkU3R5bGUsCiAgICAgICAgY3Vy
cmVudFN0eWxlOwoKalF1ZXJ5LmZuLmNzcyA9IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHsKICAg
ICAgICAvLyBTZXR0aW5nICd1bmRlZmluZWQnIGlzIGEgbm8tb3AKICAgICAgICBpZiAoIGFyZ3Vt
ZW50cy5sZW5ndGggPT09IDIgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAg
ICAgIHJldHVybiB0aGlzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGpRdWVyeS5hY2Nlc3Mo
IHRoaXMsIG5hbWUsIHZhbHVlLCB0cnVlLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7
CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/CiAgICAgICAgICAg
ICAgICAgICAgICAgIGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6CiAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTsKICAgICAgICB9KTsKfTsK
CmpRdWVyeS5leHRlbmQoewogICAgICAgIC8vIEFkZCBpbiBzdHlsZSBwcm9wZXJ0eSBob29rcyBm
b3Igb3ZlcnJpZGluZyB0aGUgZGVmYXVsdAogICAgICAgIC8vIGJlaGF2aW9yIG9mIGdldHRpbmcg
YW5kIHNldHRpbmcgYSBzdHlsZSBwcm9wZXJ0eQogICAgICAgIGNzc0hvb2tzOiB7CiAgICAgICAg
ICAgICAgICBvcGFjaXR5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24o
IGVsZW0sIGNvbXB1dGVkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
Y29tcHV0ZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IGN1ckNTUyggZWxlbSwgIm9w
YWNpdHkiLCAib3BhY2l0eSIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXQgPT09ICIiID8gIjEiIDogcmV0OwoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsZW0uc3R5bGUub3BhY2l0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAg
ICB9LAoKICAgICAgICAvLyBFeGNsdWRlIHRoZSBmb2xsb3dpbmcgY3NzIHByb3BlcnRpZXMgdG8g
YWRkIHB4CiAgICAgICAgY3NzTnVtYmVyOiB7CiAgICAgICAgICAgICAgICAiZmlsbE9wYWNpdHki
OiB0cnVlLAogICAgICAgICAgICAgICAgImZvbnRXZWlnaHQiOiB0cnVlLAogICAgICAgICAgICAg
ICAgImxpbmVIZWlnaHQiOiB0cnVlLAogICAgICAgICAgICAgICAgIm9wYWNpdHkiOiB0cnVlLAog
ICAgICAgICAgICAgICAgIm9ycGhhbnMiOiB0cnVlLAogICAgICAgICAgICAgICAgIndpZG93cyI6
IHRydWUsCiAgICAgICAgICAgICAgICAiekluZGV4IjogdHJ1ZSwKICAgICAgICAgICAgICAgICJ6
b29tIjogdHJ1ZQogICAgICAgIH0sCgogICAgICAgIC8vIEFkZCBpbiBwcm9wZXJ0aWVzIHdob3Nl
IG5hbWVzIHlvdSB3aXNoIHRvIGZpeCBiZWZvcmUKICAgICAgICAvLyBzZXR0aW5nIG9yIGdldHRp
bmcgdGhlIHZhbHVlCiAgICAgICAgY3NzUHJvcHM6IHsKICAgICAgICAgICAgICAgIC8vIG5vcm1h
bGl6ZSBmbG9hdCBjc3MgcHJvcGVydHkKICAgICAgICAgICAgICAgICJmbG9hdCI6IGpRdWVyeS5z
dXBwb3J0LmNzc0Zsb2F0ID8gImNzc0Zsb2F0IiA6ICJzdHlsZUZsb2F0IgogICAgICAgIH0sCgog
ICAgICAgIC8vIEdldCBhbmQgc2V0IHRoZSBzdHlsZSBwcm9wZXJ0eSBvbiBhIERPTSBOb2RlCiAg
ICAgICAgc3R5bGU6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCB2YWx1ZSwgZXh0cmEgKSB7CiAgICAg
ICAgICAgICAgICAvLyBEb24ndCBzZXQgc3R5bGVzIG9uIHRleHQgYW5kIGNvbW1lbnQgbm9kZXMK
ICAgICAgICAgICAgICAgIGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVt
Lm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkgewogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lCiAgICAgICAgICAgICAgICB2
YXIgcmV0LCB0eXBlLCBvcmlnTmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIG5hbWUgKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgc3R5bGUgPSBlbGVtLnN0eWxlLCBob29rcyA9IGpRdWVyeS5jc3NI
b29rc1sgb3JpZ05hbWUgXTsKCiAgICAgICAgICAgICAgICBuYW1lID0galF1ZXJ5LmNzc1Byb3Bz
WyBvcmlnTmFtZSBdIHx8IG9yaWdOYW1lOwoKICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHdl
J3JlIHNldHRpbmcgYSB2YWx1ZQogICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZp
bmVkICkgewogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gdHlwZW9mIHZhbHVlOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVydCByZWxhdGl2ZSBudW1iZXIgc3RyaW5ncyAo
Kz0gb3IgLT0pIHRvIHJlbGF0aXZlIG51bWJlcnMuICM3MzQ1CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggdHlwZSA9PT0gInN0cmluZyIgJiYgKHJldCA9IHJyZWxOdW0uZXhlYyggdmFsdWUg
KSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAoICsoIHJldFsx
XSArIDEpICogK3JldFsyXSApICsgcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgbmFtZSAp
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4ZXMgYnVnICM5MjM3CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJudW1iZXIiOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhh
dCBOYU4gYW5kIG51bGwgdmFsdWVzIGFyZW4ndCBzZXQuIFNlZTogIzcxMTYKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PSBudWxsIHx8IHR5cGUgPT09ICJudW1iZXIiICYmIGlz
TmFOKCB2YWx1ZSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYg
YSBudW1iZXIgd2FzIHBhc3NlZCBpbiwgYWRkICdweCcgdG8gdGhlIChleGNlcHQgZm9yIGNlcnRh
aW4gQ1NTIHByb3BlcnRpZXMpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdHlwZSA9PT0g
Im51bWJlciIgJiYgIWpRdWVyeS5jc3NOdW1iZXJbIG9yaWdOYW1lIF0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gInB4IjsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBob29rIHdhcyBwcm92aWRlZCwg
dXNlIHRoYXQgdmFsdWUsIG90aGVyd2lzZSBqdXN0IHNldCB0aGUgc3BlY2lmaWVkIHZhbHVlCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggIWhvb2tzIHx8ICEoInNldCIgaW4gaG9va3MpIHx8
ICh2YWx1ZSA9IGhvb2tzLnNldCggZWxlbSwgdmFsdWUgKSkgIT09IHVuZGVmaW5lZCApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcmFwcGVkIHRvIHByZXZlbnQgSUUgZnJv
bSB0aHJvd2luZyBlcnJvcnMgd2hlbiAnaW52YWxpZCcgdmFsdWVzIGFyZSBwcm92aWRlZAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeGVzIGJ1ZyAjNTUwOQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZVsgbmFtZSBdID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBjYXRjaChlKSB7fQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYSBob29rIHdh
cyBwcm92aWRlZCBnZXQgdGhlIG5vbi1jb21wdXRlZCB2YWx1ZSBmcm9tIHRoZXJlCiAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggaG9va3MgJiYgImdldCIgaW4gaG9va3MgJiYgKHJldCA9IGhv
b2tzLmdldCggZWxlbSwgZmFsc2UsIGV4dHJhICkpICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2
YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0eWxlWyBuYW1lIF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAgY3Nz
OiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZXh0cmEgKSB7CiAgICAgICAgICAgICAgICB2YXIgcmV0
LCBob29rczsKCiAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSB3b3JraW5n
IHdpdGggdGhlIHJpZ2h0IG5hbWUKICAgICAgICAgICAgICAgIG5hbWUgPSBqUXVlcnkuY2FtZWxD
YXNlKCBuYW1lICk7CiAgICAgICAgICAgICAgICBob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFt
ZSBdOwogICAgICAgICAgICAgICAgbmFtZSA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdIHx8IG5h
bWU7CgogICAgICAgICAgICAgICAgLy8gY3NzRmxvYXQgbmVlZHMgYSBzcGVjaWFsIHRyZWF0bWVu
dAogICAgICAgICAgICAgICAgaWYgKCBuYW1lID09PSAiY3NzRmxvYXQiICkgewogICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lID0gImZsb2F0IjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICAvLyBJZiBhIGhvb2sgd2FzIHByb3ZpZGVkIGdldCB0aGUgY29tcHV0ZWQgdmFsdWUg
ZnJvbSB0aGVyZQogICAgICAgICAgICAgICAgaWYgKCBob29rcyAmJiAiZ2V0IiBpbiBob29rcyAm
JiAocmV0ID0gaG9va3MuZ2V0KCBlbGVtLCB0cnVlLCBleHRyYSApKSAhPT0gdW5kZWZpbmVkICkg
ewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwoKICAgICAgICAgICAgICAgIC8v
IE90aGVyd2lzZSwgaWYgYSB3YXkgdG8gZ2V0IHRoZSBjb21wdXRlZCB2YWx1ZSBleGlzdHMsIHVz
ZSB0aGF0CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBjdXJDU1MgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjdXJDU1MoIGVsZW0sIG5hbWUgKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICB9LAoKICAgICAgICAvLyBBIG1ldGhvZCBmb3IgcXVpY2tseSBzd2FwcGluZyBp
bi9vdXQgQ1NTIHByb3BlcnRpZXMgdG8gZ2V0IGNvcnJlY3QgY2FsY3VsYXRpb25zCiAgICAgICAg
c3dhcDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrICkgewogICAgICAgICAgICAg
ICAgdmFyIG9sZCA9IHt9OwoKICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFs
dWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lcwogICAgICAgICAgICAgICAgZm9yICggdmFyIG5h
bWUgaW4gb3B0aW9ucyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2xkWyBuYW1lIF0gPSBl
bGVtLnN0eWxlWyBuYW1lIF07CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGVbIG5h
bWUgXSA9IG9wdGlvbnNbIG5hbWUgXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICBjYWxsYmFjay5jYWxsKCBlbGVtICk7CgogICAgICAgICAgICAgICAgLy8gUmV2ZXJ0IHRoZSBv
bGQgdmFsdWVzCiAgICAgICAgICAgICAgICBmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdOwogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KfSk7CgovLyBERVBSRUNBVEVELCBVc2UgalF1ZXJ5LmNz
cygpIGluc3RlYWQKalF1ZXJ5LmN1ckNTUyA9IGpRdWVyeS5jc3M7CgpqUXVlcnkuZWFjaChbImhl
aWdodCIsICJ3aWR0aCJdLCBmdW5jdGlvbiggaSwgbmFtZSApIHsKICAgICAgICBqUXVlcnkuY3Nz
SG9va3NbIG5hbWUgXSA9IHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNv
bXB1dGVkLCBleHRyYSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbDsKCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggY29tcHV0ZWQgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBlbGVtLm9mZnNldFdpZHRoICE9PSAwICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldFdIKCBlbGVtLCBuYW1lLCBleHRy
YSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuc3dhcCggZWxlbSwgY3NzU2hvdywg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbCA9IGdldFdIKCBlbGVtLCBuYW1lLCBleHRyYSApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgIHNldDog
ZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJu
dW1weC50ZXN0KCB2YWx1ZSApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlnbm9yZSBuZWdhdGl2ZSB3aWR0aCBhbmQgaGVpZ2h0IHZhbHVlcyAjMTU5OQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCggdmFsdWUgKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZSA+PSAwICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICsgInB4IjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgIH07Cn0pOwoKaWYg
KCAhalF1ZXJ5LnN1cHBvcnQub3BhY2l0eSApIHsKICAgICAgICBqUXVlcnkuY3NzSG9va3Mub3Bh
Y2l0eSA9IHsKICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJRSB1c2VzIGZpbHRlcnMgZm9yIG9wYWNpdHkK
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvcGFjaXR5LnRlc3QoIChjb21wdXRlZCAm
JiBlbGVtLmN1cnJlbnRTdHlsZSA/IGVsZW0uY3VycmVudFN0eWxlLmZpbHRlciA6IGVsZW0uc3R5
bGUuZmlsdGVyKSB8fCAiIiApID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHBh
cnNlRmxvYXQoIFJlZ0V4cC4kMSApIC8gMTAwICkgKyAiIiA6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcHV0ZWQgPyAiMSIgOiAiIjsKICAgICAgICAgICAgICAgIH0sCgogICAg
ICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzdHlsZSA9IGVsZW0uc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudFN0eWxlID0gZWxlbS5jdXJyZW50U3R5bGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3BhY2l0eSA9IGpRdWVyeS5pc05hTiggdmFsdWUgKSA/ICIiIDog
ImFscGhhKG9wYWNpdHk9IiArIHZhbHVlICogMTAwICsgIikiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbHRlciA9IGN1cnJlbnRTdHlsZSAmJiBjdXJyZW50U3R5bGUuZmlsdGVy
IHx8IHN0eWxlLmZpbHRlciB8fCAiIjsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElFIGhh
cyB0cm91YmxlIHdpdGggb3BhY2l0eSBpZiBpdCBkb2VzIG5vdCBoYXZlIGxheW91dAogICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGb3JjZSBpdCBieSBzZXR0aW5nIHRoZSB6b29tIGxldmVsCiAg
ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLnpvb20gPSAxOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gaWYgc2V0dGluZyBvcGFjaXR5IHRvIDEsIGFuZCBubyBvdGhlciBmaWx0ZXJzIGV4
aXN0IC0gYXR0ZW1wdCB0byByZW1vdmUgZmlsdGVyIGF0dHJpYnV0ZSAjNjY1MgogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIHZhbHVlID49IDEgJiYgalF1ZXJ5LnRyaW0oIGZpbHRlci5yZXBs
YWNlKCByYWxwaGEsICIiICkgKSA9PT0gIiIgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFNldHRpbmcgc3R5bGUuZmlsdGVyIHRvIG51bGwsICIiICYgIiAiIHN0aWxsIGxl
YXZlICJmaWx0ZXI6IiBpbiB0aGUgY3NzVGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGlmICJmaWx0ZXI6IiBpcyBwcmVzZW50IGF0IGFsbCwgY2xlYXJUeXBlIGlzIGRpc2Fi
bGVkLCB3ZSB3YW50IHRvIGF2b2lkIHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUgaXMgSUUgT25seSwgYnV0IHNvIGFwcGFyZW50bHkg
aXMgdGhpcyBjb2RlIHBhdGguLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHls
ZS5yZW1vdmVBdHRyaWJ1dGUoICJmaWx0ZXIiICk7CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGlmIHRoZXJlIHRoZXJlIGlzIG5vIGZpbHRlciBzdHlsZSBhcHBsaWVkIGluIGEg
Y3NzIHJ1bGUsIHdlIGFyZSBkb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBjdXJyZW50U3R5bGUgJiYgIWN1cnJlbnRTdHlsZS5maWx0ZXIgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAg
ICAgICAvLyBvdGhlcndpc2UsIHNldCBuZXcgZmlsdGVyIHZhbHVlcwogICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZS5maWx0ZXIgPSByYWxwaGEudGVzdCggZmlsdGVyICkgPwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5yZXBsYWNlKCByYWxwaGEsIG9wYWNpdHkgKSA6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyICsgIiAiICsgb3BhY2l0eTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICB9Owp9CgpqUXVlcnkoZnVuY3Rpb24oKSB7CiAgICAg
ICAgLy8gVGhpcyBob29rIGNhbm5vdCBiZSBhZGRlZCB1bnRpbCBET00gcmVhZHkgYmVjYXVzZSB0
aGUgc3VwcG9ydCB0ZXN0CiAgICAgICAgLy8gZm9yIGl0IGlzIG5vdCBydW4gdW50aWwgYWZ0ZXIg
RE9NIHJlYWR5CiAgICAgICAgaWYgKCAhalF1ZXJ5LnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdo
dCApIHsKICAgICAgICAgICAgICAgIGpRdWVyeS5jc3NIb29rcy5tYXJnaW5SaWdodCA9IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2ViS2l0IEJ1ZyAxMzM0MyAtIGdldENv
bXB1dGVkU3R5bGUgcmV0dXJucyB3cm9uZyB2YWx1ZSBmb3IgbWFyZ2luLXJpZ2h0CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gV29yayBhcm91bmQgYnkgdGVtcG9yYXJpbHkgc2V0
dGluZyBlbGVtZW50IGRpc3BsYXkgdG8gaW5saW5lLWJsb2NrCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHJldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVl
cnkuc3dhcCggZWxlbSwgeyAiZGlzcGxheSI6ICJpbmxpbmUtYmxvY2siIH0sIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb21wdXRlZCAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0g
Y3VyQ1NTKCBlbGVtLCAibWFyZ2luLXJpZ2h0IiwgIm1hcmdpblJpZ2h0IiApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZWxlbS5zdHlsZS5tYXJnaW5SaWdo
dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Owog
ICAgICAgIH0KfSk7CgppZiAoIGRvY3VtZW50LmRlZmF1bHRWaWV3ICYmIGRvY3VtZW50LmRlZmF1
bHRWaWV3LmdldENvbXB1dGVkU3R5bGUgKSB7CiAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZSA9IGZ1
bmN0aW9uKCBlbGVtLCBuYW1lICkgewogICAgICAgICAgICAgICAgdmFyIHJldCwgZGVmYXVsdFZp
ZXcsIGNvbXB1dGVkU3R5bGU7CgogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgg
cnVwcGVyLCAiLSQxIiApLnRvTG93ZXJDYXNlKCk7CgogICAgICAgICAgICAgICAgaWYgKCAhKGRl
ZmF1bHRWaWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBpZiAoIChjb21wdXRlZFN0eWxlID0gZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZSggZWxlbSwgbnVsbCApKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gY29t
cHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggcmV0ID09PSAiIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LCBlbGVtICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0ID0galF1ZXJ5LnN0eWxlKCBlbGVtLCBuYW1lICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owog
ICAgICAgIH07Cn0KCmlmICggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSAp
IHsKICAgICAgICBjdXJyZW50U3R5bGUgPSBmdW5jdGlvbiggZWxlbSwgbmFtZSApIHsKICAgICAg
ICAgICAgICAgIHZhciBsZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBlbGVtLmN1
cnJlbnRTdHlsZSAmJiBlbGVtLmN1cnJlbnRTdHlsZVsgbmFtZSBdLAogICAgICAgICAgICAgICAg
ICAgICAgICByc0xlZnQgPSBlbGVtLnJ1bnRpbWVTdHlsZSAmJiBlbGVtLnJ1bnRpbWVTdHlsZVsg
bmFtZSBdLAogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSA9IGVsZW0uc3R5bGU7CgogICAg
ICAgICAgICAgICAgLy8gRnJvbSB0aGUgYXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcwogICAg
ICAgICAgICAgICAgLy8gaHR0cDovL2VyaWsuZWFlLm5ldC9hcmNoaXZlcy8yMDA3LzA3LzI3LzE4
LjU0LjE1LyNjb21tZW50LTEwMjI5MQoKICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIG5vdCBk
ZWFsaW5nIHdpdGggYSByZWd1bGFyIHBpeGVsIG51bWJlcgogICAgICAgICAgICAgICAgLy8gYnV0
IGEgbnVtYmVyIHRoYXQgaGFzIGEgd2VpcmQgZW5kaW5nLCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQg
dG8gcGl4ZWxzCiAgICAgICAgICAgICAgICBpZiAoICFybnVtcHgudGVzdCggcmV0ICkgJiYgcm51
bS50ZXN0KCByZXQgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtZW1iZXIgdGhl
IG9yaWdpbmFsIHZhbHVlcwogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gc3R5bGUubGVm
dDsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFB1dCBpbiB0aGUgbmV3IHZhbHVlcyB0byBn
ZXQgYSBjb21wdXRlZCB2YWx1ZSBvdXQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByc0xl
ZnQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5ydW50aW1lU3R5bGUu
bGVmdCA9IGVsZW0uY3VycmVudFN0eWxlLmxlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUubGVmdCA9IG5hbWUgPT09ICJmb250U2l6ZSIg
PyAiMWVtIiA6IChyZXQgfHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHN0eWxl
LnBpeGVsTGVmdCArICJweCI7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXZlcnQgdGhl
IGNoYW5nZWQgdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLmxlZnQgPSBsZWZ0
OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJzTGVmdCApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbGVtLnJ1bnRpbWVTdHlsZS5sZWZ0ID0gcnNMZWZ0OwogICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0
dXJuIHJldCA9PT0gIiIgPyAiYXV0byIgOiByZXQ7CiAgICAgICAgfTsKfQoKY3VyQ1NTID0gZ2V0
Q29tcHV0ZWRTdHlsZSB8fCBjdXJyZW50U3R5bGU7CgpmdW5jdGlvbiBnZXRXSCggZWxlbSwgbmFt
ZSwgZXh0cmEgKSB7CgogICAgICAgIC8vIFN0YXJ0IHdpdGggb2Zmc2V0IHByb3BlcnR5CiAgICAg
ICAgdmFyIHZhbCA9IG5hbWUgPT09ICJ3aWR0aCIgPyBlbGVtLm9mZnNldFdpZHRoIDogZWxlbS5v
ZmZzZXRIZWlnaHQsCiAgICAgICAgICAgICAgICB3aGljaCA9IG5hbWUgPT09ICJ3aWR0aCIgPyBj
c3NXaWR0aCA6IGNzc0hlaWdodDsKCiAgICAgICAgaWYgKCB2YWwgPiAwICkgewogICAgICAgICAg
ICAgICAgaWYgKCBleHRyYSAhPT0gImJvcmRlciIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5lYWNoKCB3aGljaCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCAhZXh0cmEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWwgLT0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgInBhZGRpbmciICsg
dGhpcyApICkgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBleHRyYSA9PT0gIm1hcmdpbiIgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgKz0gcGFyc2VGbG9hdCggalF1
ZXJ5LmNzcyggZWxlbSwgZXh0cmEgKyB0aGlzICkgKSB8fCAwOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWwgLT0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyggZWxlbSwgImJvcmRlciIgKyB0aGlz
ICsgIldpZHRoIiApICkgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIHJldHVybiB2YWwgKyAicHgiOwogICAgICAgIH0KCiAgICAgICAgLy8gRmFsbCBiYWNrIHRv
IGNvbXB1dGVkIHRoZW4gdW5jb21wdXRlZCBjc3MgaWYgbmVjZXNzYXJ5CiAgICAgICAgdmFsID0g
Y3VyQ1NTKCBlbGVtLCBuYW1lLCBuYW1lICk7CiAgICAgICAgaWYgKCB2YWwgPCAwIHx8IHZhbCA9
PSBudWxsICkgewogICAgICAgICAgICAgICAgdmFsID0gZWxlbS5zdHlsZVsgbmFtZSBdIHx8IDA7
CiAgICAgICAgfQogICAgICAgIC8vIE5vcm1hbGl6ZSAiIiwgYXV0bywgYW5kIHByZXBhcmUgZm9y
IGV4dHJhCiAgICAgICAgdmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDsKCiAgICAgICAgLy8g
QWRkIHBhZGRpbmcsIGJvcmRlciwgbWFyZ2luCiAgICAgICAgaWYgKCBleHRyYSApIHsKICAgICAg
ICAgICAgICAgIGpRdWVyeS5lYWNoKCB3aGljaCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbCArPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKCBlbGVtLCAicGFkZGluZyIg
KyB0aGlzICkgKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGV4dHJhICE9PSAi
cGFkZGluZyIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsICs9IHBhcnNl
RmxvYXQoIGpRdWVyeS5jc3MoIGVsZW0sICJib3JkZXIiICsgdGhpcyArICJXaWR0aCIgKSApIHx8
IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KCBleHRyYSA9PT0gIm1hcmdpbiIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsICs9IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3MoIGVsZW0sIGV4dHJhICsgdGhpcyApICkgfHwg
MDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gdmFsICsgInB4IjsKfQoKaWYgKCBqUXVlcnkuZXhwciAmJiBqUXVl
cnkuZXhwci5maWx0ZXJzICkgewogICAgICAgIGpRdWVyeS5leHByLmZpbHRlcnMuaGlkZGVuID0g
ZnVuY3Rpb24oIGVsZW0gKSB7CiAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSBlbGVtLm9mZnNl
dFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBlbGVtLm9mZnNldEhlaWdo
dDsKCiAgICAgICAgICAgICAgICByZXR1cm4gKHdpZHRoID09PSAwICYmIGhlaWdodCA9PT0gMCkg
fHwgKCFqUXVlcnkuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMgJiYgKGVsZW0uc3R5bGUu
ZGlzcGxheSB8fCBqUXVlcnkuY3NzKCBlbGVtLCAiZGlzcGxheSIgKSkgPT09ICJub25lIik7CiAg
ICAgICAgfTsKCiAgICAgICAgalF1ZXJ5LmV4cHIuZmlsdGVycy52aXNpYmxlID0gZnVuY3Rpb24o
IGVsZW0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIWpRdWVyeS5leHByLmZpbHRlcnMuaGlk
ZGVuKCBlbGVtICk7CiAgICAgICAgfTsKfQoKCgoKdmFyIHIyMCA9IC8lMjAvZywKICAgICAgICBy
YnJhY2tldCA9IC9cW1xdJC8sCiAgICAgICAgckNSTEYgPSAvXHI/XG4vZywKICAgICAgICByaGFz
aCA9IC8jLiokLywKICAgICAgICByaGVhZGVycyA9IC9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxy
PyQvbWcsIC8vIElFIGxlYXZlcyBhbiBcciBjaGFyYWN0ZXIgYXQgRU9MCiAgICAgICAgcmlucHV0
ID0gL14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxt
b250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWsp
JC9pLAogICAgICAgIC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVj
dGlvbgogICAgICAgIHJsb2NhbFByb3RvY29sID0gL14oPzphYm91dHxhcHB8YXBwXC1zdG9yYWdl
fC4rXC1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLywKICAgICAgICBybm9Db250ZW50ID0g
L14oPzpHRVR8SEVBRCkkLywKICAgICAgICBycHJvdG9jb2wgPSAvXlwvXC8vLAogICAgICAgIHJx
dWVyeSA9IC9cPy8sCiAgICAgICAgcnNjcmlwdCA9IC88c2NyaXB0XGJbXjxdKig/Oig/ITxcL3Nj
cmlwdD4pPFtePF0qKSo8XC9zY3JpcHQ+L2dpLAogICAgICAgIHJzZWxlY3RUZXh0YXJlYSA9IC9e
KD86c2VsZWN0fHRleHRhcmVhKS9pLAogICAgICAgIHJzcGFjZXNBamF4ID0gL1xzKy8sCiAgICAg
ICAgcnRzID0gLyhbPyZdKV89W14mXSovLAogICAgICAgIHJ1cmwgPSAvXihbXHdcK1wuXC1dKzop
KD86XC9cLyhbXlwvPyM6XSopKD86OihcZCspKT8pPy8sCgogICAgICAgIC8vIEtlZXAgYSBjb3B5
IG9mIHRoZSBvbGQgbG9hZCBtZXRob2QKICAgICAgICBfbG9hZCA9IGpRdWVyeS5mbi5sb2FkLAoK
ICAgICAgICAvKiBQcmVmaWx0ZXJzCiAgICAgICAgICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGlu
dHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBs
ZSkKICAgICAgICAgKiAyKSBUaGVzZSBhcmUgY2FsbGVkOgogICAgICAgICAqICAgIC0gQkVGT1JF
IGFza2luZyBmb3IgYSB0cmFuc3BvcnQKICAgICAgICAgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlh
bGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpCiAg
ICAgICAgICogMykga2V5IGlzIHRoZSBkYXRhVHlwZQogICAgICAgICAqIDQpIHRoZSBjYXRjaGFs
bCBzeW1ib2wgIioiIGNhbiBiZSB1c2VkCiAgICAgICAgICogNSkgZXhlY3V0aW9uIHdpbGwgc3Rh
cnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRIRU4gY29udGludWUgZG93biB0byAiKiIg
aWYgbmVlZGVkCiAgICAgICAgICovCiAgICAgICAgcHJlZmlsdGVycyA9IHt9LAoKICAgICAgICAv
KiBUcmFuc3BvcnRzIGJpbmRpbmdzCiAgICAgICAgICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZQog
ICAgICAgICAqIDIpIHRoZSBjYXRjaGFsbCBzeW1ib2wgIioiIGNhbiBiZSB1c2VkCiAgICAgICAg
ICogMykgc2VsZWN0aW9uIHdpbGwgc3RhcnQgd2l0aCB0cmFuc3BvcnQgZGF0YVR5cGUgYW5kIFRI
RU4gZ28gdG8gIioiIGlmIG5lZWRlZAogICAgICAgICAqLwogICAgICAgIHRyYW5zcG9ydHMgPSB7
fSwKCiAgICAgICAgLy8gRG9jdW1lbnQgbG9jYXRpb24KICAgICAgICBhamF4TG9jYXRpb24sCgog
ICAgICAgIC8vIERvY3VtZW50IGxvY2F0aW9uIHNlZ21lbnRzCiAgICAgICAgYWpheExvY1BhcnRz
LAogICAgICAgIAogICAgICAgIC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2Ug
KCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvbgogICAgICAg
IGFsbFR5cGVzID0gWyIqLyJdICsgWyIqIl07CgovLyAjODEzOCwgSUUgbWF5IHRocm93IGFuIGV4
Y2VwdGlvbiB3aGVuIGFjY2Vzc2luZwovLyBhIGZpZWxkIGZyb20gd2luZG93LmxvY2F0aW9uIGlm
IGRvY3VtZW50LmRvbWFpbiBoYXMgYmVlbiBzZXQKdHJ5IHsKICAgICAgICBhamF4TG9jYXRpb24g
PSBsb2NhdGlvbi5ocmVmOwp9IGNhdGNoKCBlICkgewogICAgICAgIC8vIFVzZSB0aGUgaHJlZiBh
dHRyaWJ1dGUgb2YgYW4gQSBlbGVtZW50CiAgICAgICAgLy8gc2luY2UgSUUgd2lsbCBtb2RpZnkg
aXQgZ2l2ZW4gZG9jdW1lbnQubG9jYXRpb24KICAgICAgICBhamF4TG9jYXRpb24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCAiYSIgKTsKICAgICAgICBhamF4TG9jYXRpb24uaHJlZiA9ICIiOwog
ICAgICAgIGFqYXhMb2NhdGlvbiA9IGFqYXhMb2NhdGlvbi5ocmVmOwp9CgovLyBTZWdtZW50IGxv
Y2F0aW9uIGludG8gcGFydHMKYWpheExvY1BhcnRzID0gcnVybC5leGVjKCBhamF4TG9jYXRpb24u
dG9Mb3dlckNhc2UoKSApIHx8IFtdOwoKLy8gQmFzZSAiY29uc3RydWN0b3IiIGZvciBqUXVlcnku
YWpheFByZWZpbHRlciBhbmQgalF1ZXJ5LmFqYXhUcmFuc3BvcnQKZnVuY3Rpb24gYWRkVG9QcmVm
aWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7CgogICAgICAgIC8vIGRhdGFUeXBlRXhw
cmVzc2lvbiBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gIioiCiAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKCBkYXRhVHlwZUV4cHJlc3Npb24sIGZ1bmMgKSB7CgogICAgICAgICAgICAgICAgaWYg
KCB0eXBlb2YgZGF0YVR5cGVFeHByZXNzaW9uICE9PSAic3RyaW5nIiApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuYyA9IGRhdGFUeXBlRXhwcmVzc2lvbjsKICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVR5cGVFeHByZXNzaW9uID0gIioiOwogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGZ1bmMgKSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2Fz
ZSgpLnNwbGl0KCByc3BhY2VzQWpheCApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGkgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGRhdGFUeXBl
cy5sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwbGFjZUJlZm9yZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBlYWNo
IGRhdGFUeXBlIGluIHRoZSBkYXRhVHlwZUV4cHJlc3Npb24KICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yKDsgaSA8IGxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgY29udHJvbCBpZiB3ZSdyZSBhc2tlZCB0byBhZGQgYmVmb3JlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW55IGV4aXN0aW5nIGVsZW1lbnQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwbGFjZUJlZm9yZSA9IC9eXCsvLnRlc3QoIGRhdGFUeXBl
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBwbGFjZUJlZm9yZSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlID0gZGF0YVR5
cGUuc3Vic3RyKCAxICkgfHwgIioiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gc3RydWN0dXJlWyBkYXRhVHlw
ZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHRoZW4gd2UgYWRkIHRvIHRoZSBzdHJ1Y3R1cmUgYWNjb3JkaW5nbHkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0WyBwbGFjZUJlZm9yZSA/ICJ1bnNoaWZ0
IiA6ICJwdXNoIiBdKCBmdW5jICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0KICAgICAgICB9Owp9CgovLyBCYXNlIGluc3BlY3Rpb24gZnVuY3Rpb24gZm9yIHBy
ZWZpbHRlcnMgYW5kIHRyYW5zcG9ydHMKZnVuY3Rpb24gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5z
cG9ydHMoIHN0cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiwKICAgICAg
ICAgICAgICAgIGRhdGFUeXBlIC8qIGludGVybmFsICovLCBpbnNwZWN0ZWQgLyogaW50ZXJuYWwg
Ki8gKSB7CgogICAgICAgIGRhdGFUeXBlID0gZGF0YVR5cGUgfHwgb3B0aW9ucy5kYXRhVHlwZXNb
IDAgXTsKICAgICAgICBpbnNwZWN0ZWQgPSBpbnNwZWN0ZWQgfHwge307CgogICAgICAgIGluc3Bl
Y3RlZFsgZGF0YVR5cGUgXSA9IHRydWU7CgogICAgICAgIHZhciBsaXN0ID0gc3RydWN0dXJlWyBk
YXRhVHlwZSBdLAogICAgICAgICAgICAgICAgaSA9IDAsCiAgICAgICAgICAgICAgICBsZW5ndGgg
PSBsaXN0ID8gbGlzdC5sZW5ndGggOiAwLAogICAgICAgICAgICAgICAgZXhlY3V0ZU9ubHkgPSAo
IHN0cnVjdHVyZSA9PT0gcHJlZmlsdGVycyApLAogICAgICAgICAgICAgICAgc2VsZWN0aW9uOwoK
ICAgICAgICBmb3IoOyBpIDwgbGVuZ3RoICYmICggZXhlY3V0ZU9ubHkgfHwgIXNlbGVjdGlvbiAp
OyBpKysgKSB7CiAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBsaXN0WyBpIF0oIG9wdGlvbnMs
IG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTsKICAgICAgICAgICAgICAgIC8vIElmIHdlIGdvdCBy
ZWRpcmVjdGVkIHRvIGFub3RoZXIgZGF0YVR5cGUKICAgICAgICAgICAgICAgIC8vIHdlIHRyeSB0
aGVyZSBpZiBleGVjdXRpbmcgb25seSBhbmQgbm90IGRvbmUgYWxyZWFkeQogICAgICAgICAgICAg
ICAgaWYgKCB0eXBlb2Ygc2VsZWN0aW9uID09PSAic3RyaW5nIiApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCAhZXhlY3V0ZU9ubHkgfHwgaW5zcGVjdGVkWyBzZWxlY3Rpb24gXSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB1bmRlZmluZWQ7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5kYXRhVHlwZXMudW5zaGlmdCggc2VsZWN0aW9uICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uID0gaW5zcGVjdFByZWZpbHRlcnNPclRyYW5z
cG9ydHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
cnVjdHVyZSwgb3B0aW9ucywgb3JpZ2luYWxPcHRpb25zLCBqcVhIUiwgc2VsZWN0aW9uLCBpbnNw
ZWN0ZWQgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgICAvLyBJZiB3ZSdyZSBvbmx5IGV4ZWN1dGluZyBvciBub3RoaW5nIHdhcyBz
ZWxlY3RlZAogICAgICAgIC8vIHdlIHRyeSB0aGUgY2F0Y2hhbGwgZGF0YVR5cGUgaWYgbm90IGRv
bmUgYWxyZWFkeQogICAgICAgIGlmICggKCBleGVjdXRlT25seSB8fCAhc2VsZWN0aW9uICkgJiYg
IWluc3BlY3RlZFsgIioiIF0gKSB7CiAgICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBpbnNwZWN0
UHJlZmlsdGVyc09yVHJhbnNwb3J0cygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmUsIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIsICIqIiwgaW5zcGVjdGVk
ICk7CiAgICAgICAgfQogICAgICAgIC8vIHVubmVjZXNzYXJ5IHdoZW4gb25seSBleGVjdXRpbmcg
KHByZWZpbHRlcnMpCiAgICAgICAgLy8gYnV0IGl0J2xsIGJlIGlnbm9yZWQgYnkgdGhlIGNhbGxl
ciBpbiB0aGF0IGNhc2UKICAgICAgICByZXR1cm4gc2VsZWN0aW9uOwp9CgovLyBBIHNwZWNpYWwg
ZXh0ZW5kIGZvciBhamF4IG9wdGlvbnMKLy8gdGhhdCB0YWtlcyAiZmxhdCIgb3B0aW9ucyAobm90
IHRvIGJlIGRlZXAgZXh0ZW5kZWQpCi8vIEZpeGVzICM5ODg3CmZ1bmN0aW9uIGFqYXhFeHRlbmQo
IHRhcmdldCwgc3JjICkgewogICAgICAgIHZhciBrZXksIGRlZXAsCiAgICAgICAgICAgICAgICBm
bGF0T3B0aW9ucyA9IGpRdWVyeS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnMgfHwge307CiAgICAg
ICAgZm9yKCBrZXkgaW4gc3JjICkgewogICAgICAgICAgICAgICAgaWYgKCBzcmNbIGtleSBdICE9
PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICggZmxhdE9wdGlvbnNbIGtl
eSBdID8gdGFyZ2V0IDogKCBkZWVwIHx8ICggZGVlcCA9IHt9ICkgKSApWyBrZXkgXSA9IHNyY1sg
a2V5IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggZGVlcCApIHsK
ICAgICAgICAgICAgICAgIGpRdWVyeS5leHRlbmQoIHRydWUsIHRhcmdldCwgZGVlcCApOwogICAg
ICAgIH0KfQoKalF1ZXJ5LmZuLmV4dGVuZCh7CiAgICAgICAgbG9hZDogZnVuY3Rpb24oIHVybCwg
cGFyYW1zLCBjYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHVybCAhPT0g
InN0cmluZyIgJiYgX2xvYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfbG9h
ZC5hcHBseSggdGhpcywgYXJndW1lbnRzICk7CgogICAgICAgICAgICAgICAgLy8gRG9uJ3QgZG8g
YSByZXF1ZXN0IGlmIG5vIGVsZW1lbnRzIGFyZSBiZWluZyByZXF1ZXN0ZWQKICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoICF0aGlzLmxlbmd0aCApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIG9mZiA9
IHVybC5pbmRleE9mKCAiICIgKTsKICAgICAgICAgICAgICAgIGlmICggb2ZmID49IDAgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvciA9IHVybC5zbGljZSggb2ZmLCB1cmwu
bGVuZ3RoICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5zbGljZSggMCwgb2Zm
ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBhIEdF
VCByZXF1ZXN0CiAgICAgICAgICAgICAgICB2YXIgdHlwZSA9ICJHRVQiOwoKICAgICAgICAgICAg
ICAgIC8vIElmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIHdhcyBwcm92aWRlZAogICAgICAgICAgICAg
ICAgaWYgKCBwYXJhbXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGl0J3MgYSBm
dW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBw
YXJhbXMgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhc3N1bWUg
dGhhdCBpdCdzIHRoZSBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrID0gcGFyYW1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcyA9
IHVuZGVmaW5lZDsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgYnVpbGQg
YSBwYXJhbSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9m
IHBhcmFtcyA9PT0gIm9iamVjdCIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1zID0galF1ZXJ5LnBhcmFtKCBwYXJhbXMsIGpRdWVyeS5hamF4U2V0dGluZ3MudHJhZGl0
aW9uYWwgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gIlBPU1QiOwog
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAgICAgICAgIC8vIFJlcXVlc3QgdGhlIHJlbW90
ZSBkb2N1bWVudAogICAgICAgICAgICAgICAgalF1ZXJ5LmFqYXgoewogICAgICAgICAgICAgICAg
ICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJodG1sIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YTogcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21wbGV0ZSBj
YWxsYmFjayAocmVzcG9uc2VUZXh0IGlzIHVzZWQgaW50ZXJuYWxseSkKICAgICAgICAgICAgICAg
ICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uKCBqcVhIUiwgc3RhdHVzLCByZXNwb25zZVRleHQg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3RvcmUgdGhlIHJlc3BvbnNl
IGFzIHNwZWNpZmllZCBieSB0aGUganFYSFIgb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzcG9uc2VUZXh0ID0ganFYSFIucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIElmIHN1Y2Nlc3NmdWwsIGluamVjdCB0aGUgSFRNTCBpbnRv
IGFsbCB0aGUgbWF0Y2hlZCBlbGVtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgganFYSFIuaXNSZXNvbHZlZCgpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gIzQ4MjU6IEdldCB0aGUgYWN0dWFsIHJlc3BvbnNlIGluIGNhc2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGF0YUZpbHRlciBpcyBw
cmVzZW50IGluIGFqYXhTZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAganFYSFIuZG9uZShmdW5jdGlvbiggciApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUZXh0ID0gcjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gU2VlIGlmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5odG1sKCBzZWxlY3RvciA/CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGR1
bW15IGRpdiB0byBob2xkIHRoZSByZXN1bHRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGpRdWVyeSgiPGRpdj4iKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluamVjdCB0aGUgY29udGVudHMg
b2YgdGhlIGRvY3VtZW50IGluLCByZW1vdmluZyB0aGUgc2NyaXB0cwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGF2b2lkIGFueSAn
UGVybWlzc2lvbiBEZW5pZWQnIGVycm9ycyBpbiBJRQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hcHBlbmQocmVzcG9uc2VUZXh0LnJlcGxh
Y2UocnNjcmlwdCwgIiIpKQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBMb2NhdGUgdGhlIHNwZWNpZmllZCBlbGVtZW50cwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKHNl
bGVjdG9yKSA6CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBJZiBub3QsIGp1c3QgaW5qZWN0IHRoZSBmdWxsIHJlc3VsdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVRleHQgKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggY2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmVhY2goIGNhbGxiYWNrLCBbIHJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAg
ICAgICB9LAoKICAgICAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7CiAgICAgICAgfSwK
CiAgICAgICAgc2VyaWFsaXplQXJyYXk6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLmVsZW1lbnRzID8galF1ZXJ5Lm1ha2VBcnJheSggdGhpcy5lbGVtZW50cyApIDogdGhpczsK
ICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKCl7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hbWUgJiYgIXRoaXMuZGlzYWJsZWQg
JiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHRoaXMuY2hlY2tlZCB8fCByc2Vs
ZWN0VGV4dGFyZWEudGVzdCggdGhpcy5ub2RlTmFtZSApIHx8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByaW5wdXQudGVzdCggdGhpcy50eXBlICkgKTsKICAgICAgICAg
ICAgICAgIH0pCiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKCBpLCBlbGVtICl7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBqUXVlcnkoIHRoaXMgKS52YWwoKTsKCiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwgPT0gbnVsbCA/CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbCA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1
ZXJ5LmlzQXJyYXkoIHZhbCApID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbCwgaSApewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBuYW1lOiBlbGVtLm5hbWUs
IHZhbHVlOiB2YWwucmVwbGFjZSggckNSTEYsICJcclxuIiApIH07CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9KSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwg
IlxyXG4iICkgfTsKICAgICAgICAgICAgICAgIH0pLmdldCgpOwogICAgICAgIH0KfSk7CgovLyBB
dHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50
cwpqUXVlcnkuZWFjaCggImFqYXhTdGFydCBhamF4U3RvcCBhamF4Q29tcGxldGUgYWpheEVycm9y
IGFqYXhTdWNjZXNzIGFqYXhTZW5kIi5zcGxpdCggIiAiICksIGZ1bmN0aW9uKCBpLCBvICl7CiAg
ICAgICAgalF1ZXJ5LmZuWyBvIF0gPSBmdW5jdGlvbiggZiApewogICAgICAgICAgICAgICAgcmV0
dXJuIHRoaXMuYmluZCggbywgZiApOwogICAgICAgIH07Cn0pOwoKalF1ZXJ5LmVhY2goIFsgImdl
dCIsICJwb3N0IiBdLCBmdW5jdGlvbiggaSwgbWV0aG9kICkgewogICAgICAgIGpRdWVyeVsgbWV0
aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHsKICAgICAgICAg
ICAgICAgIC8vIHNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkCiAg
ICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBkYXRhICkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPSB0eXBlIHx8IGNhbGxiYWNrOwogICAgICAgICAgICAgICAg
ICAgICAgICBjYWxsYmFjayA9IGRhdGE7CiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB1
bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVy
eS5hamF4KHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogbWV0aG9kLAogICAgICAgICAg
ICAgICAgICAgICAgICB1cmw6IHVybCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogY2FsbGJhY2ssCiAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFUeXBlOiB0eXBlCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9
Owp9KTsKCmpRdWVyeS5leHRlbmQoewoKICAgICAgICBnZXRTY3JpcHQ6IGZ1bmN0aW9uKCB1cmws
IGNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5k
ZWZpbmVkLCBjYWxsYmFjaywgInNjcmlwdCIgKTsKICAgICAgICB9LAoKICAgICAgICBnZXRKU09O
OiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVy
biBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCAianNvbiIgKTsKICAgICAgICB9LAoK
ICAgICAgICAvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRh
cmdldAogICAgICAgIC8vIHdpdGggYm90aCBhamF4U2V0dGluZ3MgYW5kIHNldHRpbmdzIGZpZWxk
cy4KICAgICAgICAvLyBJZiB0YXJnZXQgaXMgb21pdHRlZCwgd3JpdGVzIGludG8gYWpheFNldHRp
bmdzLgogICAgICAgIGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7CiAg
ICAgICAgICAgICAgICBpZiAoIHNldHRpbmdzICkgewogICAgICAgICAgICAgICAgICAgICAgICAv
LyBCdWlsZGluZyBhIHNldHRpbmdzIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICBhamF4
RXh0ZW5kKCB0YXJnZXQsIGpRdWVyeS5hamF4U2V0dGluZ3MgKTsKICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4dGVuZGluZyBhamF4U2V0dGluZ3MK
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MgPSB0YXJnZXQ7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHRhcmdldCA9IGpRdWVyeS5hamF4U2V0dGluZ3M7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICBhamF4RXh0ZW5kKCB0YXJnZXQsIHNldHRpbmdzICk7CiAgICAgICAg
ICAgICAgICByZXR1cm4gdGFyZ2V0OwogICAgICAgIH0sCgogICAgICAgIGFqYXhTZXR0aW5nczog
ewogICAgICAgICAgICAgICAgdXJsOiBhamF4TG9jYXRpb24sCiAgICAgICAgICAgICAgICBpc0xv
Y2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBhamF4TG9jUGFydHNbIDEgXSApLAogICAgICAgICAg
ICAgICAgZ2xvYmFsOiB0cnVlLAogICAgICAgICAgICAgICAgdHlwZTogIkdFVCIsCiAgICAgICAg
ICAgICAgICBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIs
CiAgICAgICAgICAgICAgICBwcm9jZXNzRGF0YTogdHJ1ZSwKICAgICAgICAgICAgICAgIGFzeW5j
OiB0cnVlLAogICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDAsCiAg
ICAgICAgICAgICAgICBkYXRhOiBudWxsLAogICAgICAgICAgICAgICAgZGF0YVR5cGU6IG51bGws
CiAgICAgICAgICAgICAgICB1c2VybmFtZTogbnVsbCwKICAgICAgICAgICAgICAgIHBhc3N3b3Jk
OiBudWxsLAogICAgICAgICAgICAgICAgY2FjaGU6IG51bGwsCiAgICAgICAgICAgICAgICB0cmFk
aXRpb25hbDogZmFsc2UsCiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7fSwKICAgICAgICAgICAg
ICAgICovCgogICAgICAgICAgICAgICAgYWNjZXB0czogewogICAgICAgICAgICAgICAgICAgICAg
ICB4bWw6ICJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgaHRtbDogInRleHQvaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICJ0ZXh0
L3BsYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAganNvbjogImFwcGxpY2F0aW9uL2pzb24s
IHRleHQvamF2YXNjcmlwdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICIqIjogYWxsVHlwZXMK
ICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgY29udGVudHM6IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgeG1sOiAveG1sLywKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbDog
L2h0bWwvLAogICAgICAgICAgICAgICAgICAgICAgICBqc29uOiAvanNvbi8KICAgICAgICAgICAg
ICAgIH0sCgogICAgICAgICAgICAgICAgcmVzcG9uc2VGaWVsZHM6IHsKICAgICAgICAgICAgICAg
ICAgICAgICAgeG1sOiAicmVzcG9uc2VYTUwiLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0
OiAicmVzcG9uc2VUZXh0IgogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAvLyBM
aXN0IG9mIGRhdGEgY29udmVydGVycwogICAgICAgICAgICAgICAgLy8gMSkga2V5IGZvcm1hdCBp
cyAic291cmNlX3R5cGUgZGVzdGluYXRpb25fdHlwZSIgKGEgc2luZ2xlIHNwYWNlIGluLWJldHdl
ZW4pCiAgICAgICAgICAgICAgICAvLyAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sICIqIiBjYW4gYmUg
dXNlZCBmb3Igc291cmNlX3R5cGUKICAgICAgICAgICAgICAgIGNvbnZlcnRlcnM6IHsKCiAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIENvbnZlcnQgYW55dGhpbmcgdG8gdGV4dAogICAgICAgICAg
ICAgICAgICAgICAgICAiKiB0ZXh0Ijogd2luZG93LlN0cmluZywKCiAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRleHQgdG8gaHRtbCAodHJ1ZSA9IG5vIHRyYW5zZm9ybWF0aW9uKQogICAgICAg
ICAgICAgICAgICAgICAgICAidGV4dCBodG1sIjogdHJ1ZSwKCiAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEV2YWx1YXRlIHRleHQgYXMgYSBqc29uIGV4cHJlc3Npb24KICAgICAgICAgICAgICAg
ICAgICAgICAgInRleHQganNvbiI6IGpRdWVyeS5wYXJzZUpTT04sCgogICAgICAgICAgICAgICAg
ICAgICAgICAvLyBQYXJzZSB0ZXh0IGFzIHhtbAogICAgICAgICAgICAgICAgICAgICAgICAidGV4
dCB4bWwiOiBqUXVlcnkucGFyc2VYTUwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAg
ICAgLy8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDoKICAgICAg
ICAgICAgICAgIC8vIHlvdSBjYW4gYWRkIHlvdXIgb3duIGN1c3RvbSBvcHRpb25zIGhlcmUgaWYK
ICAgICAgICAgICAgICAgIC8vIGFuZCB3aGVuIHlvdSBjcmVhdGUgb25lIHRoYXQgc2hvdWxkbid0
IGJlCiAgICAgICAgICAgICAgICAvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZCkKICAg
ICAgICAgICAgICAgIGZsYXRPcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQ6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdHJ1ZQogICAgICAgICAgICAg
ICAgfQogICAgICAgIH0sCgogICAgICAgIGFqYXhQcmVmaWx0ZXI6IGFkZFRvUHJlZmlsdGVyc09y
VHJhbnNwb3J0cyggcHJlZmlsdGVycyApLAogICAgICAgIGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJl
ZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLAoKICAgICAgICAvLyBNYWluIG1ldGhv
ZAogICAgICAgIGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7CgogICAgICAgICAgICAg
ICAgLy8gSWYgdXJsIGlzIGFuIG9iamVjdCwgc2ltdWxhdGUgcHJlLTEuNSBzaWduYXR1cmUKICAg
ICAgICAgICAgICAgIGlmICggdHlwZW9mIHVybCA9PT0gIm9iamVjdCIgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdGlvbnMgPSB1cmw7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9
IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBGb3JjZSBv
cHRpb25zIHRvIGJlIGFuIG9iamVjdAogICAgICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMg
fHwge307CgogICAgICAgICAgICAgICAgdmFyIC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBv
YmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGpRdWVyeS5hamF4U2V0dXAoIHt9LCBv
cHRpb25zICksCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGxiYWNrcyBjb250ZXh0CiAg
ICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrQ29udGV4dCA9IHMuY29udGV4dCB8fCBzLAog
ICAgICAgICAgICAgICAgICAgICAgICAvLyBDb250ZXh0IGZvciBnbG9iYWwgZXZlbnRzCiAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEl0J3MgdGhlIGNhbGxiYWNrQ29udGV4dCBpZiBvbmUgd2Fz
IHByb3ZpZGVkIGluIHRoZSBvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBp
ZiBpdCdzIGEgRE9NIG5vZGUgb3IgYSBqUXVlcnkgY29sbGVjdGlvbgogICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWxFdmVudENvbnRleHQgPSBjYWxsYmFja0NvbnRleHQgIT09IHMgJiYKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8
fCBjYWxsYmFja0NvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgKSA/CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkg
OiBqUXVlcnkuZXZlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmVycmVkcwogICAg
ICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICBjb21wbGV0ZURlZmVycmVkID0galF1ZXJ5Ll9EZWZlcnJlZCgpLAog
ICAgICAgICAgICAgICAgICAgICAgICAvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrcwogICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0dXNDb2RlID0gcy5zdGF0dXNDb2RlIHx8IHt9LAogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZk1vZGlmaWVkIGtleQogICAgICAgICAgICAgICAgICAg
ICAgICBpZk1vZGlmaWVkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAvLyBIZWFkZXJzICh0
aGV5IGFyZSBzZW50IGFsbCBhdCBvbmNlKQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
SGVhZGVycyA9IHt9LAogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGVhZGVyc05hbWVz
ID0ge30sCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3BvbnNlIGhlYWRlcnMKICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzU3RyaW5nLAogICAgICAgICAgICAgICAg
ICAgICAgICByZXNwb25zZUhlYWRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyYW5z
cG9ydAogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIHRpbWVvdXQgaGFuZGxlCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXRU
aW1lciwKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3Jvc3MtZG9tYWluIGRldGVjdGlvbiB2
YXJzCiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLAogICAgICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUganFYSFIgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAwLAog
ICAgICAgICAgICAgICAgICAgICAgICAvLyBUbyBrbm93IGlmIGdsb2JhbCBldmVudHMgYXJlIHRv
IGJlIGRpc3BhdGNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgZmlyZUdsb2JhbHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIExvb3AgdmFyaWFibGUKICAgICAgICAgICAgICAgICAgICAg
ICAgaSwKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFrZSB4aHIKICAgICAgICAgICAgICAg
ICAgICAgICAganFYSFIgPSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWR5
U3RhdGU6IDAsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhY2hlcyB0aGUg
aGVhZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVxdWVzdEhlYWRlcjog
ZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCAhc3RhdGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhciBsbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHJlcXVlc3RIZWFk
ZXJzTmFtZXNbIGxuYW1lIF0gPSByZXF1ZXN0SGVhZGVyc05hbWVzWyBsbmFtZSBdIHx8IG5hbWU7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RI
ZWFkZXJzWyBuYW1lIF0gPSB2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFJhdyBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlID09PSAyID8gcmVzcG9uc2VIZWFk
ZXJzU3RyaW5nIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUg
aWYgbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzcG9uc2VIZWFk
ZXI6IGZ1bmN0aW9uKCBrZXkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXIgbWF0Y2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIHN0YXRlID09PSAyICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoICFyZXNwb25zZUhlYWRlcnMgKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzID0ge307
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUoICggbWF0Y2ggPSByaGVhZGVycy5leGVjKCByZXNwb25zZUhlYWRlcnNTdHJpbmcgKSAp
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpIF0gPSBt
YXRjaFsgMiBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRj
aCA9IHJlc3BvbnNlSGVhZGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYXRjaCA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IG1hdGNoOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIE92ZXJyaWRlcyByZXNwb25zZSBjb250ZW50LXR5cGUgaGVhZGVyCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNaW1lVHlwZTogZnVuY3Rpb24oIHR5cGUg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFzdGF0ZSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5taW1l
VHlwZSA9IHR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBDYW5jZWwgdGhlIHJlcXVlc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0ID0gc3RhdHVzVGV4dCB8fCAiYWJvcnQiOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0cmFuc3BvcnQgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5h
Ym9ydCggc3RhdHVzVGV4dCApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSggMCwgc3Rh
dHVzVGV4dCApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICB9OwoKICAgICAgICAgICAgICAgIC8vIENhbGxiYWNrIGZvciB3aGVuIGV2ZXJ5dGhp
bmcgaXMgZG9uZQogICAgICAgICAgICAgICAgLy8gSXQgaXMgZGVmaW5lZCBoZXJlIGJlY2F1c2Ug
anNsaW50IGNvbXBsYWlucyBpZiBpdCBpcyBkZWNsYXJlZAogICAgICAgICAgICAgICAgLy8gYXQg
dGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24gKHdoaWNoIHdvdWxkIGJlIG1vcmUgbG9naWNhbCBhbmQg
cmVhZGFibGUpCiAgICAgICAgICAgICAgICBmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0
YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENhbGxlZCBvbmNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3RhdGUgPT09IDIg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBTdGF0ZSBpcyAiZG9uZSIg
bm93CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMjsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENsZWFyIHRpbWVvdXQgaWYgaXQgZXhpc3RzCiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggdGltZW91dFRpbWVyICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsZWFyVGltZW91dCggdGltZW91dFRpbWVyICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlcmVmZXJlbmNlIHRyYW5zcG9ydCBmb3IgZWFy
bHkgZ2FyYmFnZSBjb2xsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIChubyBtYXR0
ZXIgaG93IGxvbmcgdGhlIGpxWEhSIG9iamVjdCB3aWxsIGJlIHVzZWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zcG9ydCA9IHVuZGVmaW5lZDsKCiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIENhY2hlIHJlc3BvbnNlIGhlYWRlcnMKICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCAiIjsKCiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFNldCByZWFkeVN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLnJlYWR5U3Rh
dGUgPSBzdGF0dXMgPiAwID8gNCA6IDA7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNT
dWNjZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzVGV4dCA9IG5hdGl2ZVN0YXR1c1RleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2UgPSByZXNwb25zZXMgPyBhamF4SGFuZGxlUmVzcG9uc2VzKCBz
LCBqcVhIUiwgcmVzcG9uc2VzICkgOiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGFzdE1vZGlmaWVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0
YWc7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlw
ZSBjaGFpbmluZwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN0YXR1cyA+PSAyMDAgJiYg
c3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0ICkgewoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBTZXQgdGhlIElmLU1vZGlmaWVkLVNpbmNlIGFuZC9vciBJZi1Ob25lLU1h
dGNoIGhlYWRlciwgaWYgaW4gaWZNb2RpZmllZCBtb2RlLgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggcy5pZk1vZGlmaWVkICkgewoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggKCBsYXN0TW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhl
YWRlciggIkxhc3QtTW9kaWZpZWQiICkgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgaWZNb2RpZmllZEtleSBd
ID0gbGFzdE1vZGlmaWVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIGV0YWcgPSBq
cVhIUi5nZXRSZXNwb25zZUhlYWRlciggIkV0YWciICkgKSApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmV0YWdbIGlmTW9kaWZpZWRLZXkg
XSA9IGV0YWc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBJZiBub3QgbW9kaWZpZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIHN0YXR1cyA9PT0gMzA0ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXR1c1RleHQgPSAibm90bW9kaWZpZWQiOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaXNTdWNjZXNzID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNj
ZXNzID0gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlICk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQgPSAic3VjY2VzcyI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VjY2VzcyA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBh
IHBhcnNlcmVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXR1c1RleHQgPSAicGFyc2VyZXJyb3IiOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFdlIGV4dHJhY3QgZXJyb3IgZnJvbSBzdGF0dXNUZXh0CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gdGhlbiBub3JtYWxpemUgc3RhdHVzVGV4dCBhbmQgc3RhdHVzIGZv
ciBub24tYWJvcnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzdGF0
dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhc3RhdHVzVGV4dCB8
fCBzdGF0dXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
dXNUZXh0ID0gImVycm9yIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggc3RhdHVzIDwgMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdHVzID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBkYXRhIGZvciB0aGUg
ZmFrZSB4aHIgb2JqZWN0CiAgICAgICAgICAgICAgICAgICAgICAgIGpxWEhSLnN0YXR1cyA9IHN0
YXR1czsKICAgICAgICAgICAgICAgICAgICAgICAganFYSFIuc3RhdHVzVGV4dCA9ICIiICsgKCBu
YXRpdmVTdGF0dXNUZXh0IHx8IHN0YXR1c1RleHQgKTsKCiAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFN1Y2Nlc3MvRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBpc1N1Y2Nlc3Mg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZVdpdGgo
IGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmZXJyZWQucmVqZWN0V2l0aCggY2FsbGJhY2tDb250ZXh0LCBbIGpxWEhSLCBzdGF0dXNU
ZXh0LCBlcnJvciBdICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCiAgICAgICAgICAgICAgICAg
ICAgICAgIGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzQ29kZSA9IHVuZGVmaW5lZDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggZmlyZUdsb2JhbHMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFs
RXZlbnRDb250ZXh0LnRyaWdnZXIoICJhamF4IiArICggaXNTdWNjZXNzID8gIlN1Y2Nlc3MiIDog
IkVycm9yIiApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbIGpxWEhSLCBzLCBpc1N1Y2Nlc3MgPyBzdWNjZXNzIDogZXJyb3IgXSApOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBDb21wbGV0ZQogICAg
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZURlZmVycmVkLnJlc29sdmVXaXRoKCBjYWxsYmFj
a0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBmaXJlR2xvYmFscyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggImFqYXhDb21wbGV0ZSIsIFsganFYSFIsIHMgXSAp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZ2xvYmFsIEFK
QVggY291bnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISggLS1qUXVl
cnkuYWN0aXZlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
UXVlcnkuZXZlbnQudHJpZ2dlciggImFqYXhTdG9wIiApOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgIC8vIEF0dGFjaCBkZWZlcnJlZHMKICAgICAgICAgICAgICAgIGRlZmVy
cmVkLnByb21pc2UoIGpxWEhSICk7CiAgICAgICAgICAgICAgICBqcVhIUi5zdWNjZXNzID0ganFY
SFIuZG9uZTsKICAgICAgICAgICAgICAgIGpxWEhSLmVycm9yID0ganFYSFIuZmFpbDsKICAgICAg
ICAgICAgICAgIGpxWEhSLmNvbXBsZXRlID0gY29tcGxldGVEZWZlcnJlZC5kb25lOwoKICAgICAg
ICAgICAgICAgIC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzCiAgICAgICAgICAgICAgICBq
cVhIUi5zdGF0dXNDb2RlID0gZnVuY3Rpb24oIG1hcCApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCBtYXAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRtcDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN0YXRlIDwgMiApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciggdG1wIGluIG1hcCApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzQ29kZVsg
dG1wIF0gPSBbIHN0YXR1c0NvZGVbdG1wXSwgbWFwW3RtcF0gXTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gbWFw
WyBqcVhIUi5zdGF0dXMgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGpxWEhSLnRoZW4oIHRtcCwgdG1wICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzOwogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgaGFz
aCBjaGFyYWN0ZXIgKCM3NTMxOiBhbmQgc3RyaW5nIHByb21vdGlvbikKICAgICAgICAgICAgICAg
IC8vIEFkZCBwcm90b2NvbCBpZiBub3QgcHJvdmlkZWQgKCM1ODY2OiBJRTcgaXNzdWUgd2l0aCBw
cm90b2NvbC1sZXNzIHVybHMpCiAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIHVzZSB0aGUgdXJs
IHBhcmFtZXRlciBpZiBhdmFpbGFibGUKICAgICAgICAgICAgICAgIHMudXJsID0gKCAoIHVybCB8
fCBzLnVybCApICsgIiIgKS5yZXBsYWNlKCByaGFzaCwgIiIgKS5yZXBsYWNlKCBycHJvdG9jb2ws
IGFqYXhMb2NQYXJ0c1sgMSBdICsgIi8vIiApOwoKICAgICAgICAgICAgICAgIC8vIEV4dHJhY3Qg
ZGF0YVR5cGVzIGxpc3QKICAgICAgICAgICAgICAgIHMuZGF0YVR5cGVzID0galF1ZXJ5LnRyaW0o
IHMuZGF0YVR5cGUgfHwgIioiICkudG9Mb3dlckNhc2UoKS5zcGxpdCggcnNwYWNlc0FqYXggKTsK
CiAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgYSBjcm9zcy1kb21haW4gcmVxdWVzdCBp
cyBpbiBvcmRlcgogICAgICAgICAgICAgICAgaWYgKCBzLmNyb3NzRG9tYWluID09IG51bGwgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID0gcnVybC5leGVjKCBzLnVybC50b0xvd2Vy
Q2FzZSgpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuY3Jvc3NEb21haW4gPSAhISggcGFy
dHMgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHBhcnRzWyAxIF0gIT0gYWph
eExvY1BhcnRzWyAxIF0gfHwgcGFydHNbIDIgXSAhPSBhamF4TG9jUGFydHNbIDIgXSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBwYXJ0c1sgMyBdIHx8ICggcGFy
dHNbIDEgXSA9PT0gImh0dHA6IiA/IDgwIDogNDQzICkgKSAhPQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFqYXhMb2NQYXJ0c1sgMyBdIHx8ICggYWph
eExvY1BhcnRzWyAxIF0gPT09ICJodHRwOiIgPyA4MCA6IDQ0MyApICkgKQogICAgICAgICAgICAg
ICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIENvbnZl
cnQgZGF0YSBpZiBub3QgYWxyZWFkeSBhIHN0cmluZwogICAgICAgICAgICAgICAgaWYgKCBzLmRh
dGEgJiYgcy5wcm9jZXNzRGF0YSAmJiB0eXBlb2Ygcy5kYXRhICE9PSAic3RyaW5nIiApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgcy5kYXRhID0galF1ZXJ5LnBhcmFtKCBzLmRhdGEsIHMudHJh
ZGl0aW9uYWwgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBBcHBseSBw
cmVmaWx0ZXJzCiAgICAgICAgICAgICAgICBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cygg
cHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTsKCiAgICAgICAgICAgICAgICAvLyBJZiBy
ZXF1ZXN0IHdhcyBhYm9ydGVkIGluc2lkZSBhIHByZWZpbGVyLCBzdG9wIHRoZXJlCiAgICAgICAg
ICAgICAgICBpZiAoIHN0YXRlID09PSAyICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gV2UgY2FuIGZp
cmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG8KICAgICAgICAgICAgICAgIGZp
cmVHbG9iYWxzID0gcy5nbG9iYWw7CgogICAgICAgICAgICAgICAgLy8gVXBwZXJjYXNlIHRoZSB0
eXBlCiAgICAgICAgICAgICAgICBzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTsKCiAgICAg
ICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgcmVxdWVzdCBoYXMgY29udGVudAogICAgICAgICAg
ICAgICAgcy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7CgogICAgICAg
ICAgICAgICAgLy8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0cwogICAgICAgICAgICAg
ICAgaWYgKCBmaXJlR2xvYmFscyAmJiBqUXVlcnkuYWN0aXZlKysgPT09IDAgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGpRdWVyeS5ldmVudC50cmlnZ2VyKCAiYWpheFN0YXJ0IiApOwogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIE1vcmUgb3B0aW9ucyBoYW5kbGluZyBm
b3IgcmVxdWVzdHMgd2l0aCBubyBjb250ZW50CiAgICAgICAgICAgICAgICBpZiAoICFzLmhhc0Nv
bnRlbnQgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBkYXRhIGlzIGF2YWlsYWJs
ZSwgYXBwZW5kIGRhdGEgdG8gdXJsCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcy5kYXRh
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMudXJsICs9ICggcnF1ZXJ5LnRl
c3QoIHMudXJsICkgPyAiJiIgOiAiPyIgKSArIHMuZGF0YTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAjOTY4MjogcmVtb3ZlIGRhdGEgc28gdGhhdCBpdCdzIG5vdCB1c2VkIGlu
IGFuIGV2ZW50dWFsIHJldHJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IHMuZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gR2V0IGlmTW9kaWZpZWRLZXkgYmVmb3JlIGFkZGluZyB0aGUgYW50aS1jYWNoZSBwYXJh
bWV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgaWZNb2RpZmllZEtleSA9IHMudXJsOwoKICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGFudGktY2FjaGUgaW4gdXJsIGlmIG5lZWRlZAog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkgewoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBqUXVlcnkubm93KCksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cnkgcmVwbGFjaW5nIF89IGlmIGl0
IGlzIHRoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBz
LnVybC5yZXBsYWNlKCBydHMsICIkMV89IiArIHRzICk7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGlmIG5vdGhpbmcgd2FzIHJlcGxhY2VkLCBhZGQgdGltZXN0YW1wIHRvIHRo
ZSBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnVybCA9IHJldCArICggKHJl
dCA9PT0gcy51cmwgKSA/ICggcnF1ZXJ5LnRlc3QoIHMudXJsICkgPyAiJiIgOiAiPyIgKSArICJf
PSIgKyB0cyA6ICIiICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIGNvcnJlY3QgaGVhZGVyLCBpZiBkYXRhIGlz
IGJlaW5nIHNlbnQKICAgICAgICAgICAgICAgIGlmICggcy5kYXRhICYmIHMuaGFzQ29udGVudCAm
JiBzLmNvbnRlbnRUeXBlICE9PSBmYWxzZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICkgewogICAg
ICAgICAgICAgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAiQ29udGVudC1UeXBl
Iiwgcy5jb250ZW50VHlwZSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8v
IFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBp
ZiBpbiBpZk1vZGlmaWVkIG1vZGUuCiAgICAgICAgICAgICAgICBpZiAoIHMuaWZNb2RpZmllZCAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWZNb2RpZmllZEtleSA9IGlmTW9kaWZpZWRLZXkg
fHwgcy51cmw7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5Lmxhc3RNb2RpZmll
ZFsgaWZNb2RpZmllZEtleSBdICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpx
WEhSLnNldFJlcXVlc3RIZWFkZXIoICJJZi1Nb2RpZmllZC1TaW5jZSIsIGpRdWVyeS5sYXN0TW9k
aWZpZWRbIGlmTW9kaWZpZWRLZXkgXSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmV0YWdbIGlmTW9kaWZpZWRLZXkgXSApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCAi
SWYtTm9uZS1NYXRjaCIsIGpRdWVyeS5ldGFnWyBpZk1vZGlmaWVkS2V5IF0gKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIFNl
dCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0
YVR5cGUKICAgICAgICAgICAgICAgIGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoCiAgICAgICAgICAg
ICAgICAgICAgICAgICJBY2NlcHQiLAogICAgICAgICAgICAgICAgICAgICAgICBzLmRhdGFUeXBl
c1sgMCBdICYmIHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbMF0gXSA/CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcy5hY2NlcHRzWyBzLmRhdGFUeXBlc1swXSBdICsgKCBzLmRhdGFUeXBl
c1sgMCBdICE9PSAiKiIgPyAiLCAiICsgYWxsVHlwZXMgKyAiOyBxPTAuMDEiIDogIiIgKSA6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5hY2NlcHRzWyAiKiIgXQogICAgICAgICAg
ICAgICAgKTsKCiAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgaGVhZGVycyBvcHRpb24KICAg
ICAgICAgICAgICAgIGZvciAoIGkgaW4gcy5oZWFkZXJzICkgewogICAgICAgICAgICAgICAgICAg
ICAgICBqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0
eXBlcyBhbmQgZWFybHkgYWJvcnQKICAgICAgICAgICAgICAgIGlmICggcy5iZWZvcmVTZW5kICYm
ICggcy5iZWZvcmVTZW5kLmNhbGwoIGNhbGxiYWNrQ29udGV4dCwganFYSFIsIHMgKSA9PT0gZmFs
c2UgfHwgc3RhdGUgPT09IDIgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBBYm9ydCBpZiBub3QgZG9uZSBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganFYSFIuYWJvcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEluc3RhbGwgY2Fs
bGJhY2tzIG9uIGRlZmVycmVkcwogICAgICAgICAgICAgICAgZm9yICggaSBpbiB7IHN1Y2Nlc3M6
IDEsIGVycm9yOiAxLCBjb21wbGV0ZTogMSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBq
cVhIUlsgaSBdKCBzWyBpIF0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAv
LyBHZXQgdHJhbnNwb3J0CiAgICAgICAgICAgICAgICB0cmFuc3BvcnQgPSBpbnNwZWN0UHJlZmls
dGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cywgcywgb3B0aW9ucywganFYSFIgKTsKCiAgICAg
ICAgICAgICAgICAvLyBJZiBubyB0cmFuc3BvcnQsIHdlIGF1dG8tYWJvcnQKICAgICAgICAgICAg
ICAgIGlmICggIXRyYW5zcG9ydCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSggLTEs
ICJObyBUcmFuc3BvcnQiICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICBqcVhIUi5yZWFkeVN0YXRlID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gU2VuZCBnbG9iYWwgZXZlbnQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBmaXJlR2xv
YmFscyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxFdmVudENvbnRl
eHQudHJpZ2dlciggImFqYXhTZW5kIiwgWyBqcVhIUiwgcyBdICk7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGltZW91dAogICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHMuYXN5bmMgJiYgcy50aW1lb3V0ID4gMCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCBmdW5jdGlvbigp
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganFYSFIuYWJvcnQoICJ0
aW1lb3V0IiApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHMudGltZW91dCAp
OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB0cnkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc3BvcnQuc2VuZCggcmVxdWVzdEhlYWRlcnMsIGRvbmUg
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSBleGNlcHRpb24gYXMgZXJyb3IgaWYgbm90IGRv
bmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN0YXRlIDwgMiApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoIC0xLCBlICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2ltcGx5IHJldGhyb3cgb3RoZXJ3aXNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lcnJvciggZSApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBqcVhIUjsKICAgICAgICB9LAoKICAgICAgICAv
LyBTZXJpYWxpemUgYW4gYXJyYXkgb2YgZm9ybSBlbGVtZW50cyBvciBhIHNldCBvZgogICAgICAg
IC8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZwogICAgICAgIHBhcmFtOiBmdW5jdGlv
biggYSwgdHJhZGl0aW9uYWwgKSB7CiAgICAgICAgICAgICAgICB2YXIgcyA9IFtdLAogICAgICAg
ICAgICAgICAgICAgICAgICBhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpbnZva2Ug
aXQgYW5kIHJldHVybiBpdHMgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSA9IGpRdWVyeS5pc0Z1bmN0aW9uKCB2YWx1ZSApID8gdmFsdWUoKSA6IHZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21w
b25lbnQoIGtleSApICsgIj0iICsgZW5jb2RlVVJJQ29tcG9uZW50KCB2YWx1ZSApOwogICAgICAg
ICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIC8vIFNldCB0cmFkaXRpb25hbCB0
byB0cnVlIGZvciBqUXVlcnkgPD0gMS4zLjIgYmVoYXZpb3IuCiAgICAgICAgICAgICAgICBpZiAo
IHRyYWRpdGlvbmFsID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRy
YWRpdGlvbmFsID0galF1ZXJ5LmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbDsKICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAvLyBJZiBhbiBhcnJheSB3YXMgcGFzc2VkIGluLCBhc3N1
bWUgdGhhdCBpdCBpcyBhbiBhcnJheSBvZiBmb3JtIGVsZW1lbnRzLgogICAgICAgICAgICAgICAg
aWYgKCBqUXVlcnkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWlu
T2JqZWN0KCBhICkgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VyaWFsaXplIHRo
ZSBmb3JtIGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKCBhLCBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQoIHRoaXMubmFt
ZSwgdGhpcy52YWx1ZSApOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0cmFkaXRpb25hbCwg
ZW5jb2RlIHRoZSAib2xkIiB3YXkgKHRoZSB3YXkgMS4zLjIgb3Igb2xkZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZGlkIGl0KSwgb3RoZXJ3aXNlIGVuY29kZSBwYXJhbXMgcmVjdXJzaXZl
bHkuCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBwcmVmaXggaW4gYSApIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZFBhcmFtcyggcHJlZml4LCBhWyBwcmVm
aXggXSwgdHJhZGl0aW9uYWwsIGFkZCApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gUmV0dXJuIHRoZSByZXN1bHRpbmcgc2Vy
aWFsaXphdGlvbgogICAgICAgICAgICAgICAgcmV0dXJuIHMuam9pbiggIiYiICkucmVwbGFjZSgg
cjIwLCAiKyIgKTsKICAgICAgICB9Cn0pOwoKZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwg
b2JqLCB0cmFkaXRpb25hbCwgYWRkICkgewogICAgICAgIGlmICggalF1ZXJ5LmlzQXJyYXkoIG9i
aiApICkgewogICAgICAgICAgICAgICAgLy8gU2VyaWFsaXplIGFycmF5IGl0ZW0uCiAgICAgICAg
ICAgICAgICBqUXVlcnkuZWFjaCggb2JqLCBmdW5jdGlvbiggaSwgdiApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCB0cmFkaXRpb25hbCB8fCByYnJhY2tldC50ZXN0KCBwcmVmaXggKSAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBlYWNoIGFycmF5IGl0
ZW0gYXMgYSBzY2FsYXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkKCBwcmVm
aXgsIHYgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gSWYgYXJyYXkgaXRlbSBpcyBub24tc2NhbGFyIChhcnJheSBv
ciBvYmplY3QpLCBlbmNvZGUgaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
bnVtZXJpYyBpbmRleCB0byByZXNvbHZlIGRlc2VyaWFsaXphdGlvbiBhbWJpZ3VpdHkgaXNzdWVz
LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCByYWNrIChhcyBv
ZiAxLjAuMCkgY2FuJ3QgY3VycmVudGx5IGRlc2VyaWFsaXplCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gbmVzdGVkIGFycmF5cyBwcm9wZXJseSwgYW5kIGF0dGVtcHRpbmcgdG8g
ZG8gc28gbWF5IGNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBzZXJ2
ZXIgZXJyb3IuIFBvc3NpYmxlIGZpeGVzIGFyZSB0byBtb2RpZnkgcmFjaydzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZGVzZXJpYWxpemF0aW9uIGFsZ29yaXRobSBvciB0byBw
cm92aWRlIGFuIG9wdGlvbiBvciBmbGFnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdG8gZm9yY2UgYXJyYXkgc2VyaWFsaXphdGlvbiB0byBiZSBzaGFsbG93LgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVmaXggKyAiWyIgKyAoIHR5cGVv
ZiB2ID09PSAib2JqZWN0IiB8fCBqUXVlcnkuaXNBcnJheSh2KSA/IGkgOiAiIiApICsgIl0iLCB2
LCB0cmFkaXRpb25hbCwgYWRkICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0pOwoKICAgICAgICB9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgb2JqICE9IG51
bGwgJiYgdHlwZW9mIG9iaiA9PT0gIm9iamVjdCIgKSB7CiAgICAgICAgICAgICAgICAvLyBTZXJp
YWxpemUgb2JqZWN0IGl0ZW0uCiAgICAgICAgICAgICAgICBmb3IgKCB2YXIgbmFtZSBpbiBvYmog
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkUGFyYW1zKCBwcmVmaXggKyAiWyIgKyBu
YW1lICsgIl0iLCBvYmpbIG5hbWUgXSwgdHJhZGl0aW9uYWwsIGFkZCApOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gU2VyaWFsaXplIHNjYWxh
ciBpdGVtLgogICAgICAgICAgICAgICAgYWRkKCBwcmVmaXgsIG9iaiApOwogICAgICAgIH0KfQoK
Ly8gVGhpcyBpcyBzdGlsbCBvbiB0aGUgalF1ZXJ5IG9iamVjdC4uLiBmb3Igbm93Ci8vIFdhbnQg
dG8gbW92ZSB0aGlzIHRvIGpRdWVyeS5hamF4IHNvbWUgZGF5CmpRdWVyeS5leHRlbmQoewoKICAg
ICAgICAvLyBDb3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXMK
ICAgICAgICBhY3RpdmU6IDAsCgogICAgICAgIC8vIExhc3QtTW9kaWZpZWQgaGVhZGVyIGNhY2hl
IGZvciBuZXh0IHJlcXVlc3QKICAgICAgICBsYXN0TW9kaWZpZWQ6IHt9LAogICAgICAgIGV0YWc6
IHt9Cgp9KTsKCi8qIEhhbmRsZXMgcmVzcG9uc2VzIHRvIGFuIGFqYXggcmVxdWVzdDoKICogLSBz
ZXRzIGFsbCByZXNwb25zZVhYWCBmaWVsZHMgYWNjb3JkaW5nbHkKICogLSBmaW5kcyB0aGUgcmln
aHQgZGF0YVR5cGUgKG1lZGlhdGVzIGJldHdlZW4gY29udGVudC10eXBlIGFuZCBleHBlY3RlZCBk
YXRhVHlwZSkKICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlCiAqLwpmdW5j
dGlvbiBhamF4SGFuZGxlUmVzcG9uc2VzKCBzLCBqcVhIUiwgcmVzcG9uc2VzICkgewoKICAgICAg
ICB2YXIgY29udGVudHMgPSBzLmNvbnRlbnRzLAogICAgICAgICAgICAgICAgZGF0YVR5cGVzID0g
cy5kYXRhVHlwZXMsCiAgICAgICAgICAgICAgICByZXNwb25zZUZpZWxkcyA9IHMucmVzcG9uc2VG
aWVsZHMsCiAgICAgICAgICAgICAgICBjdCwKICAgICAgICAgICAgICAgIHR5cGUsCiAgICAgICAg
ICAgICAgICBmaW5hbERhdGFUeXBlLAogICAgICAgICAgICAgICAgZmlyc3REYXRhVHlwZTsKCiAg
ICAgICAgLy8gRmlsbCByZXNwb25zZVhYWCBmaWVsZHMKICAgICAgICBmb3IoIHR5cGUgaW4gcmVz
cG9uc2VGaWVsZHMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgaW4gcmVzcG9uc2VzICkg
ewogICAgICAgICAgICAgICAgICAgICAgICBqcVhIUlsgcmVzcG9uc2VGaWVsZHNbdHlwZV0gXSA9
IHJlc3BvbnNlc1sgdHlwZSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg
Ly8gUmVtb3ZlIGF1dG8gZGF0YVR5cGUgYW5kIGdldCBjb250ZW50LXR5cGUgaW4gdGhlIHByb2Nl
c3MKICAgICAgICB3aGlsZSggZGF0YVR5cGVzWyAwIF0gPT09ICIqIiApIHsKICAgICAgICAgICAg
ICAgIGRhdGFUeXBlcy5zaGlmdCgpOwogICAgICAgICAgICAgICAgaWYgKCBjdCA9PT0gdW5kZWZp
bmVkICkgewogICAgICAgICAgICAgICAgICAgICAgICBjdCA9IHMubWltZVR5cGUgfHwganFYSFIu
Z2V0UmVzcG9uc2VIZWFkZXIoICJjb250ZW50LXR5cGUiICk7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgfQoKICAgICAgICAvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBj
b250ZW50LXR5cGUKICAgICAgICBpZiAoIGN0ICkgewogICAgICAgICAgICAgICAgZm9yICggdHlw
ZSBpbiBjb250ZW50cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb250ZW50c1sg
dHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhVHlwZXMudW5zaGlmdCggdHlwZSApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgaGF2
ZSBhIHJlc3BvbnNlIGZvciB0aGUgZXhwZWN0ZWQgZGF0YVR5cGUKICAgICAgICBpZiAoIGRhdGFU
eXBlc1sgMCBdIGluIHJlc3BvbnNlcyApIHsKICAgICAgICAgICAgICAgIGZpbmFsRGF0YVR5cGUg
PSBkYXRhVHlwZXNbIDAgXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gVHJ5
IGNvbnZlcnRpYmxlIGRhdGFUeXBlcwogICAgICAgICAgICAgICAgZm9yICggdHlwZSBpbiByZXNw
b25zZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIWRhdGFUeXBlc1sgMCBdIHx8
IHMuY29udmVydGVyc1sgdHlwZSArICIgIiArIGRhdGFUeXBlc1swXSBdICkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbmFsRGF0YVR5cGUgPSB0eXBlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggIWZpcnN0RGF0YVR5cGUgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmlyc3REYXRhVHlwZSA9IHR5cGU7CiAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIE9yIGp1c3QgdXNl
IGZpcnN0IG9uZQogICAgICAgICAgICAgICAgZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUg
fHwgZmlyc3REYXRhVHlwZTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHdlIGZvdW5kIGEgZGF0
YVR5cGUKICAgICAgICAvLyBXZSBhZGQgdGhlIGRhdGFUeXBlIHRvIHRoZSBsaXN0IGlmIG5lZWRl
ZAogICAgICAgIC8vIGFuZCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgcmVzcG9uc2UKICAgICAg
ICBpZiAoIGZpbmFsRGF0YVR5cGUgKSB7CiAgICAgICAgICAgICAgICBpZiAoIGZpbmFsRGF0YVR5
cGUgIT09IGRhdGFUeXBlc1sgMCBdICkgewogICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlw
ZXMudW5zaGlmdCggZmluYWxEYXRhVHlwZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3BvbnNlc1sgZmluYWxEYXRhVHlwZSBdOwogICAgICAgIH0KfQoKLy8g
Q2hhaW4gY29udmVyc2lvbnMgZ2l2ZW4gdGhlIHJlcXVlc3QgYW5kIHRoZSBvcmlnaW5hbCByZXNw
b25zZQpmdW5jdGlvbiBhamF4Q29udmVydCggcywgcmVzcG9uc2UgKSB7CgogICAgICAgIC8vIEFw
cGx5IHRoZSBkYXRhRmlsdGVyIGlmIHByb3ZpZGVkCiAgICAgICAgaWYgKCBzLmRhdGFGaWx0ZXIg
KSB7CiAgICAgICAgICAgICAgICByZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMu
ZGF0YVR5cGUgKTsKICAgICAgICB9CgogICAgICAgIHZhciBkYXRhVHlwZXMgPSBzLmRhdGFUeXBl
cywKICAgICAgICAgICAgICAgIGNvbnZlcnRlcnMgPSB7fSwKICAgICAgICAgICAgICAgIGksCiAg
ICAgICAgICAgICAgICBrZXksCiAgICAgICAgICAgICAgICBsZW5ndGggPSBkYXRhVHlwZXMubGVu
Z3RoLAogICAgICAgICAgICAgICAgdG1wLAogICAgICAgICAgICAgICAgLy8gQ3VycmVudCBhbmQg
cHJldmlvdXMgZGF0YVR5cGVzCiAgICAgICAgICAgICAgICBjdXJyZW50ID0gZGF0YVR5cGVzWyAw
IF0sCiAgICAgICAgICAgICAgICBwcmV2LAogICAgICAgICAgICAgICAgLy8gQ29udmVyc2lvbiBl
eHByZXNzaW9uCiAgICAgICAgICAgICAgICBjb252ZXJzaW9uLAogICAgICAgICAgICAgICAgLy8g
Q29udmVyc2lvbiBmdW5jdGlvbgogICAgICAgICAgICAgICAgY29udiwKICAgICAgICAgICAgICAg
IC8vIENvbnZlcnNpb24gZnVuY3Rpb25zICh0cmFuc2l0aXZlIGNvbnZlcnNpb24pCiAgICAgICAg
ICAgICAgICBjb252MSwKICAgICAgICAgICAgICAgIGNvbnYyOwoKICAgICAgICAvLyBGb3IgZWFj
aCBkYXRhVHlwZSBpbiB0aGUgY2hhaW4KICAgICAgICBmb3IoIGkgPSAxOyBpIDwgbGVuZ3RoOyBp
KysgKSB7CgogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGNvbnZlcnRlcnMgbWFwCiAgICAgICAg
ICAgICAgICAvLyB3aXRoIGxvd2VyY2FzZWQga2V5cwogICAgICAgICAgICAgICAgaWYgKCBpID09
PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IoIGtleSBpbiBzLmNvbnZlcnRlcnMg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHR5cGVvZiBrZXkgPT09ICJz
dHJpbmciICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVy
dGVyc1sga2V5LnRvTG93ZXJDYXNlKCkgXSA9IHMuY29udmVydGVyc1sga2V5IF07CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBkYXRhVHlwZXMKICAgICAg
ICAgICAgICAgIHByZXYgPSBjdXJyZW50OwogICAgICAgICAgICAgICAgY3VycmVudCA9IGRhdGFU
eXBlc1sgaSBdOwoKICAgICAgICAgICAgICAgIC8vIElmIGN1cnJlbnQgaXMgYXV0byBkYXRhVHlw
ZSwgdXBkYXRlIGl0IHRvIHByZXYKICAgICAgICAgICAgICAgIGlmKCBjdXJyZW50ID09PSAiKiIg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBwcmV2OwogICAgICAgICAgICAg
ICAgLy8gSWYgbm8gYXV0byBhbmQgZGF0YVR5cGVzIGFyZSBhY3R1YWxseSBkaWZmZXJlbnQKICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHByZXYgIT09ICIqIiAmJiBwcmV2ICE9PSBjdXJyZW50
ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBjb252ZXJ0ZXIKICAgICAg
ICAgICAgICAgICAgICAgICAgY29udmVyc2lvbiA9IHByZXYgKyAiICIgKyBjdXJyZW50OwogICAg
ICAgICAgICAgICAgICAgICAgICBjb252ID0gY29udmVydGVyc1sgY29udmVyc2lvbiBdIHx8IGNv
bnZlcnRlcnNbICIqICIgKyBjdXJyZW50IF07CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGVyZSBpcyBubyBkaXJlY3QgY29udmVydGVyLCBzZWFyY2ggdHJhbnNpdGl2ZWx5CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggIWNvbnYgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udjIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yKCBjb252MSBpbiBjb252ZXJ0ZXJzICkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG1wID0gY29udjEuc3BsaXQoICIgIiApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0bXBbIDAgXSA9PT0gcHJldiB8fCB0bXBbIDAg
XSA9PT0gIioiICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb252MiA9IGNvbnZlcnRlcnNbIHRtcFsxXSArICIgIiArIGN1cnJlbnQgXTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb252MiApIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b252MSA9IGNvbnZlcnRlcnNbIGNvbnYxIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjb252MSA9PT0gdHJ1ZSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnYgPSBjb252MjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBjb252MiA9PT0gdHJ1ZSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnYg
PSBjb252MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgbm8gY29udmVydGVyLCBkaXNwYXRj
aCBhbiBlcnJvcgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEoIGNvbnYgfHwgY29udjIg
KSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZXJyb3IoICJObyBj
b252ZXJzaW9uIGZyb20gIiArIGNvbnZlcnNpb24ucmVwbGFjZSgiICIsIiB0byAiKSApOwogICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGZvdW5k
IGNvbnZlcnRlciBpcyBub3QgYW4gZXF1aXZhbGVuY2UKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBjb252ICE9PSB0cnVlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IENvbnZlcnQgd2l0aCAxIG9yIDIgY29udmVydGVycyBhY2NvcmRpbmdseQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gY29udiA/IGNvbnYoIHJlc3BvbnNlICkgOiBj
b252MiggY29udjEocmVzcG9uc2UpICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwp9CgoKCgp2YXIg
anNjID0galF1ZXJ5Lm5vdygpLAogICAgICAgIGpzcmUgPSAvKFw9KVw/KCZ8JCl8XD9cPy9pOwoK
Ly8gRGVmYXVsdCBqc29ucCBzZXR0aW5ncwpqUXVlcnkuYWpheFNldHVwKHsKICAgICAgICBqc29u
cDogImNhbGxiYWNrIiwKICAgICAgICBqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgICAgIHJldHVybiBqUXVlcnkuZXhwYW5kbyArICJfIiArICgganNjKysgKTsKICAgICAg
ICB9Cn0pOwoKLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFj
a3MgZm9yIGpzb25wIHJlcXVlc3RzCmpRdWVyeS5hamF4UHJlZmlsdGVyKCAianNvbiBqc29ucCIs
IGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHsKCiAgICAgICAgdmFyIGlu
c3BlY3REYXRhID0gcy5jb250ZW50VHlwZSA9PT0gImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJs
ZW5jb2RlZCIgJiYKICAgICAgICAgICAgICAgICggdHlwZW9mIHMuZGF0YSA9PT0gInN0cmluZyIg
KTsKCiAgICAgICAgaWYgKCBzLmRhdGFUeXBlc1sgMCBdID09PSAianNvbnAiIHx8CiAgICAgICAg
ICAgICAgICBzLmpzb25wICE9PSBmYWxzZSAmJiAoIGpzcmUudGVzdCggcy51cmwgKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3REYXRhICYmIGpzcmUudGVzdCggcy5k
YXRhICkgKSApIHsKCiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VDb250YWluZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGpzb25wQ2FsbGJhY2sgPSBzLmpzb25wQ2FsbGJhY2sgPQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5pc0Z1bmN0aW9uKCBzLmpzb25wQ2Fs
bGJhY2sgKSA/IHMuanNvbnBDYWxsYmFjaygpIDogcy5qc29ucENhbGxiYWNrLAogICAgICAgICAg
ICAgICAgICAgICAgICBwcmV2aW91cyA9IHdpbmRvd1sganNvbnBDYWxsYmFjayBdLAogICAgICAg
ICAgICAgICAgICAgICAgICB1cmwgPSBzLnVybCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YSA9IHMuZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZSA9ICIkMSIgKyBqc29u
cENhbGxiYWNrICsgIiQyIjsKCiAgICAgICAgICAgICAgICBpZiAoIHMuanNvbnAgIT09IGZhbHNl
ICkgewogICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgganNyZSwgcmVw
bGFjZSApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHMudXJsID09PSB1cmwgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBpbnNwZWN0RGF0YSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoIGpz
cmUsIHJlcGxhY2UgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzLmRhdGEgPT09IGRhdGEgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgY2FsbGJhY2sgbWFudWFsbHkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCArPSAoL1w/Ly50ZXN0
KCB1cmwgKSA/ICImIiA6ICI/IikgKyBzLmpzb25wICsgIj0iICsganNvbnBDYWxsYmFjazsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzLnVybCA9IHVybDsKICAgICAgICAg
ICAgICAgIHMuZGF0YSA9IGRhdGE7CgogICAgICAgICAgICAgICAgLy8gSW5zdGFsbCBjYWxsYmFj
awogICAgICAgICAgICAgICAgd2luZG93WyBqc29ucENhbGxiYWNrIF0gPSBmdW5jdGlvbiggcmVz
cG9uc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlQ29udGFpbmVyID0gWyBy
ZXNwb25zZSBdOwogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAvLyBDbGVhbi11
cCBmdW5jdGlvbgogICAgICAgICAgICAgICAganFYSFIuYWx3YXlzKGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAvLyBTZXQgY2FsbGJhY2sgYmFjayB0byBwcmV2aW91cyB2YWx1
ZQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbIGpzb25wQ2FsbGJhY2sgXSA9IHByZXZp
b3VzOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIGlmIGl0IHdhcyBhIGZ1bmN0aW9u
IGFuZCB3ZSBoYXZlIGEgcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXNw
b25zZUNvbnRhaW5lciAmJiBqUXVlcnkuaXNGdW5jdGlvbiggcHJldmlvdXMgKSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dbIGpzb25wQ2FsbGJhY2sgXSggcmVzcG9u
c2VDb250YWluZXJbIDAgXSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmll
dmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uCiAgICAgICAgICAgICAgICBzLmNvbnZlcnRl
cnNbInNjcmlwdCBqc29uIl0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgalF1ZXJ5LmVycm9yKCBqc29ucENhbGxiYWNrICsgIiB3YXMgbm90IGNhbGxlZCIgKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
cG9uc2VDb250YWluZXJbIDAgXTsKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAg
Ly8gZm9yY2UganNvbiBkYXRhVHlwZQogICAgICAgICAgICAgICAgcy5kYXRhVHlwZXNbIDAgXSA9
ICJqc29uIjsKCiAgICAgICAgICAgICAgICAvLyBEZWxlZ2F0ZSB0byBzY3JpcHQKICAgICAgICAg
ICAgICAgIHJldHVybiAic2NyaXB0IjsKICAgICAgICB9Cn0pOwoKCgoKLy8gSW5zdGFsbCBzY3Jp
cHQgZGF0YVR5cGUKalF1ZXJ5LmFqYXhTZXR1cCh7CiAgICAgICAgYWNjZXB0czogewogICAgICAg
ICAgICAgICAgc2NyaXB0OiAidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQiCiAgICAg
ICAgfSwKICAgICAgICBjb250ZW50czogewogICAgICAgICAgICAgICAgc2NyaXB0OiAvamF2YXNj
cmlwdHxlY21hc2NyaXB0LwogICAgICAgIH0sCiAgICAgICAgY29udmVydGVyczogewogICAgICAg
ICAgICAgICAgInRleHQgc2NyaXB0IjogZnVuY3Rpb24oIHRleHQgKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0ZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAgIH0KfSk7CgovLyBIYW5k
bGUgY2FjaGUncyBzcGVjaWFsIGNhc2UgYW5kIGdsb2JhbApqUXVlcnkuYWpheFByZWZpbHRlcigg
InNjcmlwdCIsIGZ1bmN0aW9uKCBzICkgewogICAgICAgIGlmICggcy5jYWNoZSA9PT0gdW5kZWZp
bmVkICkgewogICAgICAgICAgICAgICAgcy5jYWNoZSA9IGZhbHNlOwogICAgICAgIH0KICAgICAg
ICBpZiAoIHMuY3Jvc3NEb21haW4gKSB7CiAgICAgICAgICAgICAgICBzLnR5cGUgPSAiR0VUIjsK
ICAgICAgICAgICAgICAgIHMuZ2xvYmFsID0gZmFsc2U7CiAgICAgICAgfQp9KTsKCi8vIEJpbmQg
c2NyaXB0IHRhZyBoYWNrIHRyYW5zcG9ydApqUXVlcnkuYWpheFRyYW5zcG9ydCggInNjcmlwdCIs
IGZ1bmN0aW9uKHMpIHsKCiAgICAgICAgLy8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRo
IGNyb3NzIGRvbWFpbiByZXF1ZXN0cwogICAgICAgIGlmICggcy5jcm9zc0RvbWFpbiApIHsKCiAg
ICAgICAgICAgICAgICB2YXIgc2NyaXB0LAogICAgICAgICAgICAgICAgICAgICAgICBoZWFkID0g
ZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSggImhlYWQiIClb
MF0gfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoKICAgICAgICAgICAgICAgIHJldHVybiB7
CgogICAgICAgICAgICAgICAgICAgICAgICBzZW5kOiBmdW5jdGlvbiggXywgY2FsbGJhY2sgKSB7
CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoICJzY3JpcHQiICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cmlwdC5hc3luYyA9ICJhc3luYyI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggcy5zY3JpcHRDaGFyc2V0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2NyaXB0LmNoYXJzZXQgPSBzLnNjcmlwdENoYXJzZXQ7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQu
c3JjID0gcy51cmw7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF0dGFjaCBo
YW5kbGVycyBmb3IgYWxsIGJyb3dzZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiggXywg
aXNBYm9ydCApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IGlzQWJvcnQgfHwgIXNjcmlwdC5yZWFkeVN0YXRlIHx8IC9sb2FkZWR8Y29tcGxldGUvLnRlc3Qo
IHNjcmlwdC5yZWFkeVN0YXRlICkgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbWVtb3J5IGxlYWsgaW4gSUUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlw
dC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBudWxsOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBzY3JpcHQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoZWFkICYmIHNjcmlwdC5wYXJl
bnROb2RlICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlYWQucmVtb3ZlQ2hpbGQoIHNjcmlwdCApOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXJlZmVyZW5jZSB0aGUgc2NyaXB0CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCA9IHVuZGVmaW5l
ZDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENh
bGxiYWNrIGlmIG5vdCBhYm9ydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoICFpc0Fib3J0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCAyMDAsICJzdWNjZXNzIiApOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgaW5zZXJ0
QmVmb3JlIGluc3RlYWQgb2YgYXBwZW5kQ2hpbGQgIHRvIGNpcmN1bXZlbnQgYW4gSUU2IGJ1Zy4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGFyaXNlcyB3aGVuIGEgYmFz
ZSBub2RlIGlzIHVzZWQgKCMyNzA5IGFuZCAjNDM3OCkuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVhZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVhZC5maXJzdENoaWxkICk7CiAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgICAgICAgICBhYm9ydDog
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzY3JpcHQg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHQub25sb2Fk
KCAwLCAxICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwogICAgICAgIH0KfSk7CgoKCgp2YXIgLy8g
IzUyODA6IEludGVybmV0IEV4cGxvcmVyIHdpbGwga2VlcCBjb25uZWN0aW9ucyBhbGl2ZSBpZiB3
ZSBkb24ndCBhYm9ydCBvbiB1bmxvYWQKICAgICAgICB4aHJPblVubG9hZEFib3J0ID0gd2luZG93
LkFjdGl2ZVhPYmplY3QgPyBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIC8vIEFib3J0IGFs
bCBwZW5kaW5nIHJlcXVlc3RzCiAgICAgICAgICAgICAgICBmb3IgKCB2YXIga2V5IGluIHhockNh
bGxiYWNrcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgeGhyQ2FsbGJhY2tzWyBrZXkgXSgg
MCwgMSApOwogICAgICAgICAgICAgICAgfQogICAgICAgIH0gOiBmYWxzZSwKICAgICAgICB4aHJJ
ZCA9IDAsCiAgICAgICAgeGhyQ2FsbGJhY2tzOwoKLy8gRnVuY3Rpb25zIHRvIGNyZWF0ZSB4aHJz
CmZ1bmN0aW9uIGNyZWF0ZVN0YW5kYXJkWEhSKCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIH0gY2F0Y2go
IGUgKSB7fQp9CgpmdW5jdGlvbiBjcmVhdGVBY3RpdmVYSFIoKSB7CiAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgICAgIHJldHVybiBuZXcgd2luZG93LkFjdGl2ZVhPYmplY3QoICJNaWNyb3NvZnQu
WE1MSFRUUCIgKTsKICAgICAgICB9IGNhdGNoKCBlICkge30KfQoKLy8gQ3JlYXRlIHRoZSByZXF1
ZXN0IG9iamVjdAovLyAoVGhpcyBpcyBzdGlsbCBhdHRhY2hlZCB0byBhamF4U2V0dGluZ3MgZm9y
IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpCmpRdWVyeS5hamF4U2V0dGluZ3MueGhyID0gd2luZG93
LkFjdGl2ZVhPYmplY3QgPwogICAgICAgIC8qIE1pY3Jvc29mdCBmYWlsZWQgdG8gcHJvcGVybHkK
ICAgICAgICAgKiBpbXBsZW1lbnQgdGhlIFhNTEh0dHBSZXF1ZXN0IGluIElFNyAoY2FuJ3QgcmVx
dWVzdCBsb2NhbCBmaWxlcyksCiAgICAgICAgICogc28gd2UgdXNlIHRoZSBBY3RpdmVYT2JqZWN0
IHdoZW4gaXQgaXMgYXZhaWxhYmxlCiAgICAgICAgICogQWRkaXRpb25hbGx5IFhNTEh0dHBSZXF1
ZXN0IGNhbiBiZSBkaXNhYmxlZCBpbiBJRTcvSUU4IHNvCiAgICAgICAgICogd2UgbmVlZCBhIGZh
bGxiYWNrLgogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
cmV0dXJuICF0aGlzLmlzTG9jYWwgJiYgY3JlYXRlU3RhbmRhcmRYSFIoKSB8fCBjcmVhdGVBY3Rp
dmVYSFIoKTsKICAgICAgICB9IDoKICAgICAgICAvLyBGb3IgYWxsIG90aGVyIGJyb3dzZXJzLCB1
c2UgdGhlIHN0YW5kYXJkIFhNTEh0dHBSZXF1ZXN0IG9iamVjdAogICAgICAgIGNyZWF0ZVN0YW5k
YXJkWEhSOwoKLy8gRGV0ZXJtaW5lIHN1cHBvcnQgcHJvcGVydGllcwooZnVuY3Rpb24oIHhociAp
IHsKICAgICAgICBqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuc3VwcG9ydCwgewogICAgICAgICAgICAg
ICAgYWpheDogISF4aHIsCiAgICAgICAgICAgICAgICBjb3JzOiAhIXhociAmJiAoICJ3aXRoQ3Jl
ZGVudGlhbHMiIGluIHhociApCiAgICAgICAgfSk7Cn0pKCBqUXVlcnkuYWpheFNldHRpbmdzLnho
cigpICk7CgovLyBDcmVhdGUgdHJhbnNwb3J0IGlmIHRoZSBicm93c2VyIGNhbiBwcm92aWRlIGFu
IHhocgppZiAoIGpRdWVyeS5zdXBwb3J0LmFqYXggKSB7CgogICAgICAgIGpRdWVyeS5hamF4VHJh
bnNwb3J0KGZ1bmN0aW9uKCBzICkgewogICAgICAgICAgICAgICAgLy8gQ3Jvc3MgZG9tYWluIG9u
bHkgYWxsb3dlZCBpZiBzdXBwb3J0ZWQgdGhyb3VnaCBYTUxIdHRwUmVxdWVzdAogICAgICAgICAg
ICAgICAgaWYgKCAhcy5jcm9zc0RvbWFpbiB8fCBqUXVlcnkuc3VwcG9ydC5jb3JzICkgewoKICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrOwoKICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kOiBmdW5jdGlv
biggaGVhZGVycywgY29tcGxldGUgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gR2V0IGEgbmV3IHhocgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHhociA9IHMueGhyKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBPcGVuIHRoZSBzb2NrZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFBhc3NpbmcgbnVsbCB1c2VybmFtZSwgZ2VuZXJhdGVzIGEgbG9naW4gcG9wdXAg
b24gT3BlcmEgKCMyODY1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCBzLnVzZXJuYW1lICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4aHIub3Blbiggcy50eXBlLCBzLnVybCwgcy5hc3luYywgcy51c2VybmFtZSwg
cy5wYXNzd29yZCApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhy
Lm9wZW4oIHMudHlwZSwgcy51cmwsIHMuYXN5bmMgKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBBcHBseSBjdXN0b20gZmllbGRzIGlmIHByb3ZpZGVkCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIHMueGhyRmllbGRzICkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpIGluIHMueGhyRmllbGRzICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhoclsgaSBdID0gcy54aHJGaWVsZHNbIGkgXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE92ZXJy
aWRlIG1pbWUgdHlwZSBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggcy5taW1lVHlwZSAmJiB4aHIub3ZlcnJpZGVNaW1lVHlwZSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGhyLm92ZXJyaWRlTWlt
ZVR5cGUoIHMubWltZVR5cGUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBYLVJlcXVl
c3RlZC1XaXRoIGhlYWRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cywgc2VlaW5nIGFzIGNvbmRpdGlvbnMgZm9yIGEg
cHJlZmxpZ2h0IGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
YWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3Vy
ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChpdCBjYW4gYWx3
YXlzIGJlIHNldCBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzIG9yIGV2ZW4gdXNpbmcgYWpheFNldHVw
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHNhbWUtZG9t
YWluIHJlcXVlc3RzLCB3b24ndCBjaGFuZ2UgaGVhZGVyIGlmIGFscmVhZHkgcHJvdmlkZWQuCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFzLmNyb3NzRG9tYWlu
ICYmICFoZWFkZXJzWyJYLVJlcXVlc3RlZC1XaXRoIl0gKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNbICJYLVJlcXVlc3RlZC1XaXRoIiBd
ID0gIlhNTEh0dHBSZXF1ZXN0IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIGFu
IGV4dHJhIHRyeS9jYXRjaCBmb3IgY3Jvc3MgZG9tYWluIHJlcXVlc3RzIGluIEZpcmVmb3ggMwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaSBpbiBoZWFkZXJzICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHhoci5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBoZWFkZXJzWyBpIF0gKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSBjYXRjaCggXyApIHt9CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRG8gc2VuZCB0aGUgcmVxdWVzdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtYXkgcmFpc2UgYW4gZXhjZXB0aW9uIHdo
aWNoIGlzIGFjdHVhbGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBoYW5kbGVkIGluIGpRdWVyeS5hamF4IChzbyBubyB0cnkvY2F0Y2ggaGVyZSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zZW5kKCAoIHMuaGFzQ29udGVudCAm
JiBzLmRhdGEgKSB8fCBudWxsICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gTGlzdGVuZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrID0gZnVuY3Rpb24oIF8sIGlzQWJvcnQgKSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9u
c2VIZWFkZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3BvbnNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4bWw7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGaXJlZm94IHRocm93cyBleGNlcHRpb25zIHdoZW4gYWNjZXNz
aW5nIHByb3BlcnRpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gb2YgYW4geGhyIHdoZW4gYSBuZXR3b3JrIGVycm9yIG9jY3VyZWQKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cDovL2hlbHBmdWwu
a25vYnMtZGlhbHMuY29tL2luZGV4LnBocC9Db21wb25lbnRfcmV0dXJuZWRfZmFpbHVyZV9jb2Rl
Ol8weDgwMDQwMTExXyhOU19FUlJPUl9OT1RfQVZBSUxBQkxFKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYXMgbmV2ZXIgY2FsbGVkIGFu
ZCBpcyBhYm9ydGVkIG9yIGNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBjYWxsYmFjayAmJiAoIGlzQWJvcnQgfHwgeGhy
LnJlYWR5U3RhdGUgPT09IDQgKSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNhbGxlZCBvbmNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayA9IHVuZGVmaW5lZDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3Qga2VlcCBhcyBhY3RpdmUg
YW55bW9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBoYW5kbGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5vbnJlYWR5
c3RhdGVjaGFuZ2UgPSBqUXVlcnkubm9vcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB4aHJPblVubG9h
ZEFib3J0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB4aHJDYWxsYmFja3NbIGhh
bmRsZSBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgaXQncyBhbiBh
Ym9ydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBpc0Fib3J0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBYm9ydCBpdCBt
YW51YWxseSBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB4aHIucmVhZHlTdGF0ZSAhPT0g
NCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4aHIuYWJvcnQoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0geGhyLnN0YXR1czsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzcG9uc2VIZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNwb25zZXMgPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sID0geGhy
LnJlc3BvbnNlWE1MOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0IHJlc3BvbnNlIGxpc3QK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCB4bWwgJiYgeG1sLmRvY3VtZW50RWxlbWVudCAvKiAjNDk1OCAq
LyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZXMueG1sID0geG1sOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlcy50ZXh0ID0geGhyLnJlc3BvbnNlVGV4
dDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIEZpcmVmb3ggdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGFj
Y2Vzc2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0dXNUZXh0IGZvciBmYXVsdHkgY3Jvc3MtZG9t
YWluIHJlcXVlc3RzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdHVzVGV4dCA9IHhoci5zdGF0dXNUZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKCBlICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5vcm1hbGl6ZSB3aXRoIFdlYmtpdCBnaXZp
bmcgYW4gZW1wdHkgc3RhdHVzVGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQg
PSAiIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmlsdGVyIHN0YXR1cyBm
b3Igbm9uIHN0YW5kYXJkIGJlaGF2aW9ycwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVl
c3QgaXMgbG9jYWwgYW5kIHdlIGhhdmUgZGF0YTogYXNzdW1lIGEgc3VjY2VzcwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyAoc3VjY2VzcyB3aXRoIG5vIGRhdGEgd29uJ3QgZ2V0IG5vdGlmaWVkLCB0aGF0J3Mg
dGhlIGJlc3Qgd2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FuIGRvIGdpdmVuIGN1cnJlbnQgaW1wbGVt
ZW50YXRpb25zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFzdGF0dXMgJiYgcy5pc0xvY2FsICYmICFz
LmNyb3NzRG9tYWluICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHJlc3BvbnNl
cy50ZXh0ID8gMjAwIDogNDA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJRSAtICMxNDUwOiBzb21ldGlt
ZXMgcmV0dXJucyAxMjIzIHdoZW4gaXQgc2hvdWxkIGJlIDIwNAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCBzdGF0dXMgPT09IDEyMjMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVz
ID0gMjA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKCBmaXJlZm94QWNjZXNzRXhjZXB0aW9u
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICggIWlzQWJvcnQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSggLTEsIGZpcmVmb3hBY2Nlc3NF
eGNlcHRpb24gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IENhbGwgY29tcGxldGUgaWYgbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICggcmVzcG9uc2VzICkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlKCBzdGF0dXMsIHN0YXR1
c1RleHQsIHJlc3BvbnNlcywgcmVzcG9uc2VIZWFkZXJzICk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gaWYgd2UncmUgaW4gc3luYyBtb2RlIG9yIGl0J3MgaW4gY2FjaGUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBoYXMgYmVlbiByZXRyaWV2ZWQgZGlyZWN0
bHkgKElFNiAmIElFNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHdlIG5lZWQgdG8gbWFudWFsbHkgZmlyZSB0aGUgY2FsbGJhY2sKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggIXMuYXN5bmMgfHwgeGhyLnJlYWR5U3RhdGUgPT09
IDQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUg
PSArK3hocklkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIHhock9uVW5sb2FkQWJvcnQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBhY3RpdmUgeGhycyBjYWxs
YmFja3MgbGlzdCBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBhbmQgYXR0YWNoIHRoZSB1bmxvYWQgaGFuZGxlcgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgg
IXhockNhbGxiYWNrcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHhockNhbGxiYWNrcyA9IHt9OwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
KCB3aW5kb3cgKS51bmxvYWQoIHhock9uVW5sb2FkQWJvcnQgKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkIHRvIGxpc3Qgb2Yg
YWN0aXZlIHhocnMgY2FsbGJhY2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeGhyQ2FsbGJhY2tzWyBoYW5kbGUgXSA9IGNhbGxiYWNrOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVj
aGFuZ2UgPSBjYWxsYmFjazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIGNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygwLDEpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9
KTsKfQoKCgoKdmFyIGVsZW1kaXNwbGF5ID0ge30sCiAgICAgICAgaWZyYW1lLCBpZnJhbWVEb2Ms
CiAgICAgICAgcmZ4dHlwZXMgPSAvXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sCiAgICAgICAgcmZ4
bnVtID0gL14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQvaSwKICAgICAgICB0aW1lcklk
LAogICAgICAgIGZ4QXR0cnMgPSBbCiAgICAgICAgICAgICAgICAvLyBoZWlnaHQgYW5pbWF0aW9u
cwogICAgICAgICAgICAgICAgWyAiaGVpZ2h0IiwgIm1hcmdpblRvcCIsICJtYXJnaW5Cb3R0b20i
LCAicGFkZGluZ1RvcCIsICJwYWRkaW5nQm90dG9tIiBdLAogICAgICAgICAgICAgICAgLy8gd2lk
dGggYW5pbWF0aW9ucwogICAgICAgICAgICAgICAgWyAid2lkdGgiLCAibWFyZ2luTGVmdCIsICJt
YXJnaW5SaWdodCIsICJwYWRkaW5nTGVmdCIsICJwYWRkaW5nUmlnaHQiIF0sCiAgICAgICAgICAg
ICAgICAvLyBvcGFjaXR5IGFuaW1hdGlvbnMKICAgICAgICAgICAgICAgIFsgIm9wYWNpdHkiIF0K
ICAgICAgICBdLAogICAgICAgIGZ4Tm93OwoKalF1ZXJ5LmZuLmV4dGVuZCh7CiAgICAgICAgc2hv
dzogZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewogICAgICAgICAgICAgICAg
dmFyIGVsZW0sIGRpc3BsYXk7CgogICAgICAgICAgICAgICAgaWYgKCBzcGVlZCB8fCBzcGVlZCA9
PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYW5pbWF0ZSggZ2Vu
RngoInNob3ciLCAzKSwgc3BlZWQsIGVhc2luZywgY2FsbGJhY2spOwoKICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoIHZhciBpID0gMCwgaiA9IHRo
aXMubGVuZ3RoOyBpIDwgajsgaSsrICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0gPSB0aGlzW2ldOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVs
ZW0uc3R5bGUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNw
bGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlc2V0IHRoZSBpbmxpbmUgZGlzcGxheSBvZiB0aGlzIGVsZW1lbnQgdG8g
bGVhcm4gaWYgaXQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGJlaW5nIGhpZGRlbiBieSBjYXNjYWRlZCBydWxlcyBvciBub3QKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggIWpRdWVyeS5fZGF0YShlbGVtLCAib2xkZGlzcGxh
eSIpICYmIGRpc3BsYXkgPT09ICJub25lIiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSA9ICIiOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBlbGVtZW50cyB3aGljaCBoYXZlIGJlZW4g
b3ZlcnJpZGRlbiB3aXRoIGRpc3BsYXk6IG5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGluIGEgc3R5bGVzaGVldCB0byB3aGF0ZXZlciB0aGUgZGVmYXVsdCBi
cm93c2VyIHN0eWxlIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBmb3Igc3VjaCBhbiBlbGVtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIGRpc3BsYXkgPT09ICIiICYmIGpRdWVyeS5jc3MoIGVsZW0sICJkaXNwbGF5IiAp
ID09PSAibm9uZSIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGpRdWVyeS5fZGF0YShlbGVtLCAib2xkZGlzcGxheSIsIGRlZmF1bHREaXNwbGF5KGVs
ZW0ubm9kZU5hbWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
IH0KCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgZGlzcGxheSBvZiBtb3N0IG9m
IHRoZSBlbGVtZW50cyBpbiBhIHNlY29uZCBsb29wCiAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRvIGF2b2lkIHRoZSBjb25zdGFudCByZWZsb3cKICAgICAgICAgICAgICAgICAgICAgICAgZm9y
ICggaSA9IDA7IGkgPCBqOyBpKysgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxlbSA9IHRoaXNbaV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZWxl
bS5zdHlsZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXkgPSBlbGVtLnN0eWxlLmRpc3BsYXk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCBkaXNwbGF5ID09PSAiIiB8fCBkaXNwbGF5ID09PSAibm9uZSIgKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uc3R5bGUu
ZGlzcGxheSA9IGpRdWVyeS5fZGF0YShlbGVtLCAib2xkZGlzcGxheSIpIHx8ICIiOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKCiAgICAgICAg
aGlkZTogZnVuY3Rpb24oIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICkgewogICAgICAgICAgICAg
ICAgaWYgKCBzcGVlZCB8fCBzcGVlZCA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRoaXMuYW5pbWF0ZSggZ2VuRngoImhpZGUiLCAzKSwgc3BlZWQsIGVhc2luZywgY2Fs
bGJhY2spOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAoIHZhciBpID0gMCwgaiA9IHRoaXMubGVuZ3RoOyBpIDwgajsgaSsrICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggdGhpc1tpXS5zdHlsZSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaXNwbGF5ID0galF1ZXJ5LmNzcygg
dGhpc1tpXSwgImRpc3BsYXkiICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCBkaXNwbGF5ICE9PSAibm9uZSIgJiYgIWpRdWVyeS5fZGF0YSggdGhpc1tpXSwg
Im9sZGRpc3BsYXkiICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGpRdWVyeS5fZGF0YSggdGhpc1tpXSwgIm9sZGRpc3BsYXkiLCBkaXNwbGF5ICk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgICAgICAgICAvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vj
b25kIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgdGhlIGNvbnN0YW50
IHJlZmxvdwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IGo7IGkrKyAp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHRoaXNbaV0uc3R5bGUgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2ldLnN0eWxlLmRp
c3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICAvLyBTYXZlIHRoZSBvbGQgdG9n
Z2xlIGZ1bmN0aW9uCiAgICAgICAgX3RvZ2dsZTogalF1ZXJ5LmZuLnRvZ2dsZSwKCiAgICAgICAg
dG9nZ2xlOiBmdW5jdGlvbiggZm4sIGZuMiwgY2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICB2
YXIgYm9vbCA9IHR5cGVvZiBmbiA9PT0gImJvb2xlYW4iOwoKICAgICAgICAgICAgICAgIGlmICgg
alF1ZXJ5LmlzRnVuY3Rpb24oZm4pICYmIGpRdWVyeS5pc0Z1bmN0aW9uKGZuMikgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZS5hcHBseSggdGhpcywgYXJndW1lbnRzICk7
CgogICAgICAgICAgICAgICAgfSBlbHNlIGlmICggZm4gPT0gbnVsbCB8fCBib29sICkgewogICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlID0gYm9vbCA/IGZuIDogalF1ZXJ5KHRoaXMpLmlz
KCI6aGlkZGVuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHRoaXMp
WyBzdGF0ZSA/ICJzaG93IiA6ICJoaWRlIiBdKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0p
OwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
YW5pbWF0ZShnZW5GeCgidG9nZ2xlIiwgMyksIGZuLCBmbjIsIGNhbGxiYWNrKTsKICAgICAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9LAoKICAgICAg
ICBmYWRlVG86IGZ1bmN0aW9uKCBzcGVlZCwgdG8sIGVhc2luZywgY2FsbGJhY2sgKSB7CiAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXIoIjpoaWRkZW4iKS5jc3MoIm9wYWNpdHkiLCAw
KS5zaG93KCkuZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5h
bmltYXRlKHtvcGFjaXR5OiB0b30sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrKTsKICAgICAgICB9
LAoKICAgICAgICBhbmltYXRlOiBmdW5jdGlvbiggcHJvcCwgc3BlZWQsIGVhc2luZywgY2FsbGJh
Y2sgKSB7CiAgICAgICAgICAgICAgICB2YXIgb3B0YWxsID0galF1ZXJ5LnNwZWVkKHNwZWVkLCBl
YXNpbmcsIGNhbGxiYWNrKTsKCiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0VtcHR5T2Jq
ZWN0KCBwcm9wICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2go
IG9wdGFsbC5jb21wbGV0ZSwgWyBmYWxzZSBdICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgLy8gRG8gbm90IGNoYW5nZSByZWZlcmVuY2VkIHByb3BlcnRpZXMgYXMgcGVyLXBy
b3BlcnR5IGVhc2luZyB3aWxsIGJlIGxvc3QKICAgICAgICAgICAgICAgIHByb3AgPSBqUXVlcnku
ZXh0ZW5kKCB7fSwgcHJvcCApOwoKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzWyBvcHRhbGwu
cXVldWUgPT09IGZhbHNlID8gImVhY2giIDogInF1ZXVlIiBdKGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAvLyBYWFggJ3RoaXMnIGRvZXMgbm90IGFsd2F5cyBoYXZlIGEgbm9k
ZU5hbWUgd2hlbiBydW5uaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXN0IHN1
aXRlCgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9wdGFsbC5xdWV1ZSA9PT0gZmFsc2Ug
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Ll9tYXJrKCB0aGlzICk7
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBv
cHQgPSBqUXVlcnkuZXh0ZW5kKCB7fSwgb3B0YWxsICksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaXNFbGVtZW50ID0gdGhpcy5ub2RlVHlwZSA9PT0gMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoaWRkZW4gPSBpc0VsZW1lbnQgJiYgalF1ZXJ5KHRoaXMpLmlzKCI6
aGlkZGVuIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsLCBwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXksIGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFydHMsIHN0YXJ0LCBlbmQsIHVuaXQ7CgogICAgICAgICAgICAg
ICAgICAgICAgICAvLyB3aWxsIHN0b3JlIHBlciBwcm9wZXJ0eSBlYXNpbmcgYW5kIGJlIHVzZWQg
dG8gZGV0ZXJtaW5lIHdoZW4gYW4gYW5pbWF0aW9uIGlzIGNvbXBsZXRlCiAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdC5hbmltYXRlZFByb3BlcnRpZXMgPSB7fTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAoIHAgaW4gcHJvcCApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcHJvcGVydHkgbmFtZSBub3JtYWxpemF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSA9IGpRdWVyeS5jYW1lbENhc2UoIHAgKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIHAgIT09IG5hbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwcm9wWyBuYW1lIF0gPSBwcm9wWyBwIF07CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcHJvcFsgcCBdOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
ID0gcHJvcFsgbmFtZSBdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlYXNp
bmcgcmVzb2x1dGlvbjogcGVyIHByb3BlcnR5ID4gb3B0LnNwZWNpYWxFYXNpbmcgPiBvcHQuZWFz
aW5nID4gJ3N3aW5nJyAoZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGpRdWVyeS5pc0FycmF5KCB2YWwgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wdC5hbmltYXRlZFByb3BlcnRpZXNbIG5hbWUgXSA9IHZhbFsgMSBdOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gcHJvcFsgbmFtZSBd
ID0gdmFsWyAwIF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5hbmltYXRlZFByb3BlcnRp
ZXNbIG5hbWUgXSA9IG9wdC5zcGVjaWFsRWFzaW5nICYmIG9wdC5zcGVjaWFsRWFzaW5nWyBuYW1l
IF0gfHwgb3B0LmVhc2luZyB8fCAnc3dpbmcnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWwgPT09ICJoaWRl
IiAmJiBoaWRkZW4gfHwgdmFsID09PSAic2hvdyIgJiYgIWhpZGRlbiApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHQuY29tcGxldGUuY2FsbCggdGhp
cyApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCBpc0VsZW1lbnQgJiYgKCBuYW1lID09PSAiaGVpZ2h0IiB8fCBu
YW1lID09PSAid2lkdGgiICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCBub3RoaW5nIHNuZWFrcyBvdXQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlY29yZCBhbGwgMyBvdmVyZmxvdyBhdHRyaWJ1
dGVzIGJlY2F1c2UgSUUgZG9lcyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGNoYW5nZSB0aGUgb3ZlcmZsb3cgYXR0cmlidXRlIHdoZW4gb3ZlcmZsb3dYIGFu
ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3ZlcmZsb3dZIGFy
ZSBzZXQgdG8gdGhlIHNhbWUgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdC5vdmVyZmxvdyA9IFsgdGhpcy5zdHlsZS5vdmVyZmxvdywgdGhpcy5zdHlsZS5v
dmVyZmxvd1gsIHRoaXMuc3R5bGUub3ZlcmZsb3dZIF07CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU2V0IGRpc3BsYXkgcHJvcGVydHkgdG8gaW5saW5lLWJsb2Nr
IGZvciBoZWlnaHQvd2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIGFuaW1hdGlvbnMgb24gaW5saW5lIGVsZW1lbnRzIHRoYXQgYXJlIGhhdmluZyB3aWR0aC9o
ZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuaW1hdGVk
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5jc3Mo
IHRoaXMsICJkaXNwbGF5IiApID09PSAiaW5saW5lIiAmJgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5jc3MoIHRoaXMsICJmbG9h
dCIgKSA9PT0gIm5vbmUiICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoICFqUXVlcnkuc3VwcG9ydC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0ICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMuc3R5bGUuZGlzcGxheSA9ICJpbmxpbmUtYmxvY2siOwoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0gZGVmYXVsdERp
c3BsYXkoIHRoaXMubm9kZU5hbWUgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5saW5lLWxldmVsIGVsZW1lbnRzIGFjY2VwdCBp
bmxpbmUtYmxvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYmxvY2stbGV2ZWwgZWxlbWVudHMgbmVlZCB0byBiZSBpbmxpbmUgd2l0
aCBsYXlvdXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIGRpc3BsYXkgPT09ICJpbmxpbmUiICkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHlsZS5k
aXNwbGF5ID0gImlubGluZS1ibG9jayI7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0eWxlLmRpc3Bs
YXkgPSAiaW5saW5lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3R5bGUuem9vbSA9IDE7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9w
dC5vdmVyZmxvdyAhPSBudWxsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggcCBpbiBwcm9wICkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGUgPSBuZXcgalF1ZXJ5LmZ4KCB0aGlzLCBvcHQsIHAgKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBwcm9wWyBwIF07CgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggcmZ4dHlwZXMudGVzdCh2YWwpICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVsgdmFsID09PSAidG9nZ2xlIiA/IGhp
ZGRlbiA/ICJzaG93IiA6ICJoaWRlIiA6IHZhbCBdKCk7CgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXJ0cyA9IHJmeG51bS5leGVjKCB2YWwgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0ID0gZS5jdXIoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIHBhcnRzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmQgPSBwYXJzZUZsb2F0KCBwYXJ0c1syXSApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0ID0gcGFydHNbM10g
fHwgKCBqUXVlcnkuY3NzTnVtYmVyWyBwIF0gPyAiIiA6ICJweCIgKTsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY29tcHV0ZSBz
dGFydGluZyB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIHVuaXQgIT09ICJweCIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCB0aGlzLCBwLCAoZW5kIHx8
IDEpICsgdW5pdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhcnQgPSAoKGVuZCB8fCAxKSAvIGUuY3VyKCkpICogc3RhcnQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5
LnN0eWxlKCB0aGlzLCBwLCBzdGFydCArIHVuaXQpOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBJZiBhICs9Ly09IHRva2VuIHdhcyBwcm92aWRlZCwgd2UncmUg
ZG9pbmcgYSByZWxhdGl2ZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBwYXJ0c1sxXSApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSAoIChwYXJ0c1sgMSBdID09
PSAiLT0iID8gLTEgOiAxKSAqIGVuZCApICsgc3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGUuY3VzdG9tKCBzdGFydCwgZW5kLCB1bml0ICk7CgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jdXN0b20oIHN0YXJ0LCB2YWwsICIi
ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGb3IgSlMgc3RyaWN0IGNvbXBsaWFuY2UKICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICB9LAoK
ICAgICAgICBzdG9wOiBmdW5jdGlvbiggY2xlYXJRdWV1ZSwgZ290b0VuZCApIHsKICAgICAgICAg
ICAgICAgIGlmICggY2xlYXJRdWV1ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5x
dWV1ZShbXSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdGhpcy5lYWNoKGZ1
bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZXJzID0galF1ZXJ5LnRp
bWVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdGltZXJzLmxlbmd0aDsK
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgbWFya2VyIGNvdW50ZXJzIGlmIHdlIGtu
b3cgdGhleSB3b24ndCBiZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFnb3RvRW5kICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5fdW5tYXJrKCB0cnVlLCB0
aGlzICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKCBpLS0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0aW1l
cnNbaV0uZWxlbSA9PT0gdGhpcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChnb3RvRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGZvcmNlIHRoZSBuZXh0IHN0ZXAgdG8gYmUgdGhlIGxhc3QKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXJzW2ldKHRydWUp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVycy5zcGxpY2UoaSwgMSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyBzdGFydCB0aGUgbmV4dCBpbiB0aGUg
cXVldWUgaWYgdGhlIGxhc3Qgc3RlcCB3YXNuJ3QgZm9yY2VkCiAgICAgICAgICAgICAgICBpZiAo
ICFnb3RvRW5kICkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlcXVldWUoKTsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICB9Cgp9
KTsKCi8vIEFuaW1hdGlvbnMgY3JlYXRlZCBzeW5jaHJvbm91c2x5IHdpbGwgcnVuIHN5bmNocm9u
b3VzbHkKZnVuY3Rpb24gY3JlYXRlRnhOb3coKSB7CiAgICAgICAgc2V0VGltZW91dCggY2xlYXJG
eE5vdywgMCApOwogICAgICAgIHJldHVybiAoIGZ4Tm93ID0galF1ZXJ5Lm5vdygpICk7Cn0KCmZ1
bmN0aW9uIGNsZWFyRnhOb3coKSB7CiAgICAgICAgZnhOb3cgPSB1bmRlZmluZWQ7Cn0KCi8vIEdl
bmVyYXRlIHBhcmFtZXRlcnMgdG8gY3JlYXRlIGEgc3RhbmRhcmQgYW5pbWF0aW9uCmZ1bmN0aW9u
IGdlbkZ4KCB0eXBlLCBudW0gKSB7CiAgICAgICAgdmFyIG9iaiA9IHt9OwoKICAgICAgICBqUXVl
cnkuZWFjaCggZnhBdHRycy5jb25jYXQuYXBwbHkoW10sIGZ4QXR0cnMuc2xpY2UoMCxudW0pKSwg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBvYmpbIHRoaXMgXSA9IHR5cGU7CiAgICAgICAg
fSk7CgogICAgICAgIHJldHVybiBvYmo7Cn0KCi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3Vz
dG9tIGFuaW1hdGlvbnMKalF1ZXJ5LmVhY2goewogICAgICAgIHNsaWRlRG93bjogZ2VuRngoInNo
b3ciLCAxKSwKICAgICAgICBzbGlkZVVwOiBnZW5GeCgiaGlkZSIsIDEpLAogICAgICAgIHNsaWRl
VG9nZ2xlOiBnZW5GeCgidG9nZ2xlIiwgMSksCiAgICAgICAgZmFkZUluOiB7IG9wYWNpdHk6ICJz
aG93IiB9LAogICAgICAgIGZhZGVPdXQ6IHsgb3BhY2l0eTogImhpZGUiIH0sCiAgICAgICAgZmFk
ZVRvZ2dsZTogeyBvcGFjaXR5OiAidG9nZ2xlIiB9Cn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyAp
IHsKICAgICAgICBqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBj
YWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUoIHByb3BzLCBz
cGVlZCwgZWFzaW5nLCBjYWxsYmFjayApOwogICAgICAgIH07Cn0pOwoKalF1ZXJ5LmV4dGVuZCh7
CiAgICAgICAgc3BlZWQ6IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHsKICAgICAgICAg
ICAgICAgIHZhciBvcHQgPSBzcGVlZCAmJiB0eXBlb2Ygc3BlZWQgPT09ICJvYmplY3QiID8galF1
ZXJ5LmV4dGVuZCh7fSwgc3BlZWQpIDogewogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0
ZTogZm4gfHwgIWZuICYmIGVhc2luZyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGpRdWVyeS5pc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLAogICAgICAgICAgICAgICAgICAg
ICAgICBkdXJhdGlvbjogc3BlZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGVhc2luZzogZm4g
JiYgZWFzaW5nIHx8IGVhc2luZyAmJiAhalF1ZXJ5LmlzRnVuY3Rpb24oZWFzaW5nKSAmJiBlYXNp
bmcKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgb3B0LmR1cmF0aW9uID0galF1
ZXJ5LmZ4Lm9mZiA/IDAgOiB0eXBlb2Ygb3B0LmR1cmF0aW9uID09PSAibnVtYmVyIiA/IG9wdC5k
dXJhdGlvbiA6CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5kdXJhdGlvbiBpbiBqUXVlcnku
Znguc3BlZWRzID8galF1ZXJ5LmZ4LnNwZWVkc1tvcHQuZHVyYXRpb25dIDogalF1ZXJ5LmZ4LnNw
ZWVkcy5fZGVmYXVsdDsKCiAgICAgICAgICAgICAgICAvLyBRdWV1ZWluZwogICAgICAgICAgICAg
ICAgb3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTsKICAgICAgICAgICAgICAgIG9wdC5jb21wbGV0ZSA9
IGZ1bmN0aW9uKCBub1VubWFyayApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBqUXVl
cnkuaXNGdW5jdGlvbiggb3B0Lm9sZCApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdC5vbGQuY2FsbCggdGhpcyApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIG9wdC5xdWV1ZSAhPT0gZmFsc2UgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRlcXVldWUoIHRoaXMgKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICggbm9Vbm1hcmsgIT09IGZhbHNlICkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5fdW5tYXJrKCB0aGlzICk7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgcmV0
dXJuIG9wdDsKICAgICAgICB9LAoKICAgICAgICBlYXNpbmc6IHsKICAgICAgICAgICAgICAgIGxp
bmVhcjogZnVuY3Rpb24oIHAsIG4sIGZpcnN0TnVtLCBkaWZmICkgewogICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmlyc3ROdW0gKyBkaWZmICogcDsKICAgICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICAgICBzd2luZzogZnVuY3Rpb24oIHAsIG4sIGZpcnN0TnVtLCBkaWZmICkgewog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCgtTWF0aC5jb3MocCpNYXRoLlBJKS8yKSAr
IDAuNSkgKiBkaWZmICsgZmlyc3ROdW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfSwKCiAg
ICAgICAgdGltZXJzOiBbXSwKCiAgICAgICAgZng6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBw
cm9wICkgewogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKICAgICAgICAg
ICAgICAgIHRoaXMuZWxlbSA9IGVsZW07CiAgICAgICAgICAgICAgICB0aGlzLnByb3AgPSBwcm9w
OwoKICAgICAgICAgICAgICAgIG9wdGlvbnMub3JpZyA9IG9wdGlvbnMub3JpZyB8fCB7fTsKICAg
ICAgICB9Cgp9KTsKCmpRdWVyeS5meC5wcm90b3R5cGUgPSB7CiAgICAgICAgLy8gU2ltcGxlIGZ1
bmN0aW9uIGZvciBzZXR0aW5nIGEgc3R5bGUgdmFsdWUKICAgICAgICB1cGRhdGU6IGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgaWYgKCB0aGlzLm9wdGlvbnMuc3RlcCApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5v
dywgdGhpcyApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIChqUXVlcnkuZngu
c3RlcFt0aGlzLnByb3BdIHx8IGpRdWVyeS5meC5zdGVwLl9kZWZhdWx0KSggdGhpcyApOwogICAg
ICAgIH0sCgogICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzaXplCiAgICAgICAgY3VyOiBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICggdGhpcy5lbGVtW3RoaXMucHJvcF0gIT0gbnVs
bCAmJiAoIXRoaXMuZWxlbS5zdHlsZSB8fCB0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXSA9PSBu
dWxsKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbVsgdGhpcy5w
cm9wIF07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHBhcnNlZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgciA9IGpRdWVyeS5jc3MoIHRoaXMuZWxlbSwgdGhpcy5wcm9w
ICk7CiAgICAgICAgICAgICAgICAvLyBFbXB0eSBzdHJpbmdzLCBudWxsLCB1bmRlZmluZWQgYW5k
ICJhdXRvIiBhcmUgY29udmVydGVkIHRvIDAsCiAgICAgICAgICAgICAgICAvLyBjb21wbGV4IHZh
bHVlcyBzdWNoIGFzICJyb3RhdGUoMXJhZCkiIGFyZSByZXR1cm5lZCBhcyBpcywKICAgICAgICAg
ICAgICAgIC8vIHNpbXBsZSB2YWx1ZXMgc3VjaCBhcyAiMTBweCIgYXJlIHBhcnNlZCB0byBGbG9h
dC4KICAgICAgICAgICAgICAgIHJldHVybiBpc05hTiggcGFyc2VkID0gcGFyc2VGbG9hdCggciAp
ICkgPyAhciB8fCByID09PSAiYXV0byIgPyAwIDogciA6IHBhcnNlZDsKICAgICAgICB9LAoKICAg
ICAgICAvLyBTdGFydCBhbiBhbmltYXRpb24gZnJvbSBvbmUgbnVtYmVyIHRvIGFub3RoZXIKICAg
ICAgICBjdXN0b206IGZ1bmN0aW9uKCBmcm9tLCB0bywgdW5pdCApIHsKICAgICAgICAgICAgICAg
IHZhciBzZWxmID0gdGhpcywKICAgICAgICAgICAgICAgICAgICAgICAgZnggPSBqUXVlcnkuZng7
CgogICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBmeE5vdyB8fCBjcmVhdGVGeE5vdygp
OwogICAgICAgICAgICAgICAgdGhpcy5zdGFydCA9IGZyb207CiAgICAgICAgICAgICAgICB0aGlz
LmVuZCA9IHRvOwogICAgICAgICAgICAgICAgdGhpcy51bml0ID0gdW5pdCB8fCB0aGlzLnVuaXQg
fHwgKCBqUXVlcnkuY3NzTnVtYmVyWyB0aGlzLnByb3AgXSA/ICIiIDogInB4IiApOwogICAgICAg
ICAgICAgICAgdGhpcy5ub3cgPSB0aGlzLnN0YXJ0OwogICAgICAgICAgICAgICAgdGhpcy5wb3Mg
PSB0aGlzLnN0YXRlID0gMDsKCiAgICAgICAgICAgICAgICBmdW5jdGlvbiB0KCBnb3RvRW5kICkg
ewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zdGVwKGdvdG9FbmQpOwogICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHQuZWxlbSA9IHRoaXMuZWxlbTsKCiAgICAg
ICAgICAgICAgICBpZiAoIHQoKSAmJiBqUXVlcnkudGltZXJzLnB1c2godCkgJiYgIXRpbWVySWQg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVySWQgPSBzZXRJbnRlcnZhbCggZngudGlj
aywgZnguaW50ZXJ2YWwgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9LAoKICAgICAgICAv
LyBTaW1wbGUgJ3Nob3cnIGZ1bmN0aW9uCiAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICAgICAvLyBSZW1lbWJlciB3aGVyZSB3ZSBzdGFydGVkLCBzbyB0aGF0IHdlIGNhbiBn
byBiYWNrIHRvIGl0IGxhdGVyCiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMub3JpZ1t0aGlz
LnByb3BdID0galF1ZXJ5LnN0eWxlKCB0aGlzLmVsZW0sIHRoaXMucHJvcCApOwogICAgICAgICAg
ICAgICAgdGhpcy5vcHRpb25zLnNob3cgPSB0cnVlOwoKICAgICAgICAgICAgICAgIC8vIEJlZ2lu
IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIHN0YXJ0
IGF0IGEgc21hbGwgd2lkdGgvaGVpZ2h0IHRvIGF2b2lkIGFueQogICAgICAgICAgICAgICAgLy8g
Zmxhc2ggb2YgY29udGVudAogICAgICAgICAgICAgICAgdGhpcy5jdXN0b20odGhpcy5wcm9wID09
PSAid2lkdGgiIHx8IHRoaXMucHJvcCA9PT0gImhlaWdodCIgPyAxIDogMCwgdGhpcy5jdXIoKSk7
CgogICAgICAgICAgICAgICAgLy8gU3RhcnQgYnkgc2hvd2luZyB0aGUgZWxlbWVudAogICAgICAg
ICAgICAgICAgalF1ZXJ5KCB0aGlzLmVsZW0gKS5zaG93KCk7CiAgICAgICAgfSwKCiAgICAgICAg
Ly8gU2ltcGxlICdoaWRlJyBmdW5jdGlvbgogICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgICAgLy8gUmVtZW1iZXIgd2hlcmUgd2Ugc3RhcnRlZCwgc28gdGhhdCB3ZSBjYW4g
Z28gYmFjayB0byBpdCBsYXRlcgogICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9yaWdbdGhp
cy5wcm9wXSA9IGpRdWVyeS5zdHlsZSggdGhpcy5lbGVtLCB0aGlzLnByb3AgKTsKICAgICAgICAg
ICAgICAgIHRoaXMub3B0aW9ucy5oaWRlID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAvLyBCZWdp
biB0aGUgYW5pbWF0aW9uCiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbSh0aGlzLmN1cigpLCAw
KTsKICAgICAgICB9LAoKICAgICAgICAvLyBFYWNoIHN0ZXAgb2YgYW4gYW5pbWF0aW9uCiAgICAg
ICAgc3RlcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7CiAgICAgICAgICAgICAgICB2YXIgdCA9IGZ4
Tm93IHx8IGNyZWF0ZUZ4Tm93KCksCiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVl
LAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0gdGhpcy5lbGVtLAogICAgICAgICAgICAg
ICAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAg
ICBpLCBuOwoKICAgICAgICAgICAgICAgIGlmICggZ290b0VuZCB8fCB0ID49IG9wdGlvbnMuZHVy
YXRpb24gKyB0aGlzLnN0YXJ0VGltZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5u
b3cgPSB0aGlzLmVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3MgPSB0aGlzLnN0
YXRlID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGUoKTsKCiAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuYW5pbWF0ZWRQcm9wZXJ0aWVzWyB0aGlzLnByb3AgXSA9
IHRydWU7CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCBpIGluIG9wdGlvbnMuYW5pbWF0
ZWRQcm9wZXJ0aWVzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggb3B0
aW9ucy5hbmltYXRlZFByb3BlcnRpZXNbaV0gIT09IHRydWUgKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIGRvbmUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
UmVzZXQgdGhlIG92ZXJmbG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBv
cHRpb25zLm92ZXJmbG93ICE9IG51bGwgJiYgIWpRdWVyeS5zdXBwb3J0LnNocmlua1dyYXBCbG9j
a3MgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVh
Y2goIFsgIiIsICJYIiwgIlkiIF0sIGZ1bmN0aW9uIChpbmRleCwgdmFsdWUpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5zdHlsZVsgIm92ZXJm
bG93IiArIHZhbHVlIF0gPSBvcHRpb25zLm92ZXJmbG93W2luZGV4XTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGlkZSB0aGUgZWxlbWVu
dCBpZiB0aGUgImhpZGUiIG9wZXJhdGlvbiB3YXMgZG9uZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICggb3B0aW9ucy5oaWRlICkgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgalF1ZXJ5KGVsZW0pLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IHRo
ZSBwcm9wZXJ0aWVzLCBpZiB0aGUgaXRlbSBoYXMgYmVlbiBoaWRkZW4gb3Igc2hvd24KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMuaGlkZSB8fCBvcHRpb25zLnNo
b3cgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCB2YXIg
cCBpbiBvcHRpb25zLmFuaW1hdGVkUHJvcGVydGllcyApIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnN0eWxlKCBlbGVtLCBwLCBvcHRpb25z
Lm9yaWdbcF0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9ucy5jb21wbGV0ZS5jYWxsKCBlbGVtICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFzc2lj
YWwgZWFzaW5nIGNhbm5vdCBiZSB1c2VkIHdpdGggYW4gSW5maW5pdHkgZHVyYXRpb24KICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zLmR1cmF0aW9uID09IEluZmluaXR5ICkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm93ID0gdDsKICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0g
dCAtIHRoaXMuc3RhcnRUaW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
c3RhdGUgPSBuIC8gb3B0aW9ucy5kdXJhdGlvbjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gUGVyZm9ybSB0aGUgZWFzaW5nIGZ1bmN0aW9uLCBkZWZhdWx0cyB0byBzd2luZwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zID0galF1ZXJ5LmVhc2luZ1sg
b3B0aW9ucy5hbmltYXRlZFByb3BlcnRpZXNbIHRoaXMucHJvcCBdIF0oIHRoaXMuc3RhdGUsIG4s
IDAsIDEsIG9wdGlvbnMuZHVyYXRpb24gKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLm5vdyA9IHRoaXMuc3RhcnQgKyAoKHRoaXMuZW5kIC0gdGhpcy5zdGFydCkgKiB0aGlz
LnBvcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUGVyZm9ybSB0aGUgbmV4dCBzdGVwIG9mIHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy51cGRhdGUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICB9Cn07CgpqUXVlcnkuZXh0ZW5kKCBqUXVlcnkuZngsIHsK
ICAgICAgICB0aWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGZvciAoIHZhciB0aW1l
cnMgPSBqUXVlcnkudGltZXJzLCBpID0gMCA7IGkgPCB0aW1lcnMubGVuZ3RoIDsgKytpICkgewog
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICF0aW1lcnNbaV0oKSApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lcnMuc3BsaWNlKGktLSwgMSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICF0aW1l
cnMubGVuZ3RoICkgewogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZnguc3RvcCgpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgIH0sCgogICAgICAgIGludGVydmFsOiAxMywKCiAgICAg
ICAgc3RvcDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKCB0aW1l
cklkICk7CiAgICAgICAgICAgICAgICB0aW1lcklkID0gbnVsbDsKICAgICAgICB9LAoKICAgICAg
ICBzcGVlZHM6IHsKICAgICAgICAgICAgICAgIHNsb3c6IDYwMCwKICAgICAgICAgICAgICAgIGZh
c3Q6IDIwMCwKICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgc3BlZWQKICAgICAgICAgICAgICAg
IF9kZWZhdWx0OiA0MDAKICAgICAgICB9LAoKICAgICAgICBzdGVwOiB7CiAgICAgICAgICAgICAg
ICBvcGFjaXR5OiBmdW5jdGlvbiggZnggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVy
eS5zdHlsZSggZnguZWxlbSwgIm9wYWNpdHkiLCBmeC5ub3cgKTsKICAgICAgICAgICAgICAgIH0s
CgogICAgICAgICAgICAgICAgX2RlZmF1bHQ6IGZ1bmN0aW9uKCBmeCApIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCBmeC5lbGVtLnN0eWxlICYmIGZ4LmVsZW0uc3R5bGVbIGZ4LnByb3Ag
XSAhPSBudWxsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4LmVsZW0uc3R5
bGVbIGZ4LnByb3AgXSA9IChmeC5wcm9wID09PSAid2lkdGgiIHx8IGZ4LnByb3AgPT09ICJoZWln
aHQiID8gTWF0aC5tYXgoMCwgZngubm93KSA6IGZ4Lm5vdykgKyBmeC51bml0OwogICAgICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ4
LmVsZW1bIGZ4LnByb3AgXSA9IGZ4Lm5vdzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgIH0KfSk7CgppZiAoIGpRdWVyeS5leHByICYmIGpRdWVyeS5l
eHByLmZpbHRlcnMgKSB7CiAgICAgICAgalF1ZXJ5LmV4cHIuZmlsdGVycy5hbmltYXRlZCA9IGZ1
bmN0aW9uKCBlbGVtICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeS5ncmVwKGpRdWVy
eS50aW1lcnMsIGZ1bmN0aW9uKCBmbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGVsZW0gPT09IGZuLmVsZW07CiAgICAgICAgICAgICAgICB9KS5sZW5ndGg7CiAgICAgICAgfTsK
fQoKLy8gVHJ5IHRvIHJlc3RvcmUgdGhlIGRlZmF1bHQgZGlzcGxheSB2YWx1ZSBvZiBhbiBlbGVt
ZW50CmZ1bmN0aW9uIGRlZmF1bHREaXNwbGF5KCBub2RlTmFtZSApIHsKCiAgICAgICAgaWYgKCAh
ZWxlbWRpc3BsYXlbIG5vZGVOYW1lIF0gKSB7CgogICAgICAgICAgICAgICAgdmFyIGJvZHkgPSBk
b2N1bWVudC5ib2R5LAogICAgICAgICAgICAgICAgICAgICAgICBlbGVtID0galF1ZXJ5KCAiPCIg
KyBub2RlTmFtZSArICI+IiApLmFwcGVuZFRvKCBib2R5ICksCiAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc3BsYXkgPSBlbGVtLmNzcyggImRpc3BsYXkiICk7CgogICAgICAgICAgICAgICAgZWxl
bS5yZW1vdmUoKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgc2ltcGxlIHdheSBmYWlscywK
ICAgICAgICAgICAgICAgIC8vIGdldCBlbGVtZW50J3MgcmVhbCBkZWZhdWx0IGRpc3BsYXkgYnkg
YXR0YWNoaW5nIGl0IHRvIGEgdGVtcCBpZnJhbWUKICAgICAgICAgICAgICAgIGlmICggZGlzcGxh
eSA9PT0gIm5vbmUiIHx8IGRpc3BsYXkgPT09ICIiICkgewogICAgICAgICAgICAgICAgICAgICAg
ICAvLyBObyBpZnJhbWUgdG8gdXNlIHlldCwgc28gY3JlYXRlIGl0CiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggIWlmcmFtZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAiaWZyYW1lIiApOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmcmFtZS5mcmFtZUJvcmRlciA9IGlmcmFtZS53aWR0aCA9IGlm
cmFtZS5oZWlnaHQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKCBpZnJhbWUgKTsKCiAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIENyZWF0ZSBhIGNhY2hlYWJsZSBjb3B5IG9mIHRoZSBpZnJhbWUgZG9jdW1lbnQg
b24gZmlyc3QgY2FsbC4KICAgICAgICAgICAgICAgICAgICAgICAgLy8gSUUgYW5kIE9wZXJhIHdp
bGwgYWxsb3cgdXMgdG8gcmV1c2UgdGhlIGlmcmFtZURvYyB3aXRob3V0IHJlLXdyaXRpbmcgdGhl
IGZha2UgSFRNTAogICAgICAgICAgICAgICAgICAgICAgICAvLyBkb2N1bWVudCB0byBpdDsgV2Vi
S2l0ICYgRmlyZWZveCB3b24ndCBhbGxvdyByZXVzaW5nIHRoZSBpZnJhbWUgZG9jdW1lbnQuCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICggIWlmcmFtZURvYyB8fCAhaWZyYW1lLmNyZWF0ZUVs
ZW1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRG9jID0gKCBp
ZnJhbWUuY29udGVudFdpbmRvdyB8fCBpZnJhbWUuY29udGVudERvY3VtZW50ICkuZG9jdW1lbnQ7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZyYW1lRG9jLndyaXRlKCAoIGRvY3Vt
ZW50LmNvbXBhdE1vZGUgPT09ICJDU1MxQ29tcGF0IiA/ICI8IWRvY3R5cGUgaHRtbD4iIDogIiIg
KSArICI8aHRtbD48Ym9keT4iICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZy
YW1lRG9jLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICAgICAgICAgIGVsZW0gPSBpZnJhbWVEb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKTsKCiAg
ICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZURvYy5ib2R5LmFwcGVuZENoaWxkKCBlbGVtICk7
CgogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgImRp
c3BsYXkiICk7CgogICAgICAgICAgICAgICAgICAgICAgICBib2R5LnJlbW92ZUNoaWxkKCBpZnJh
bWUgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBTdG9yZSB0aGUgY29y
cmVjdCBkZWZhdWx0IGRpc3BsYXkKICAgICAgICAgICAgICAgIGVsZW1kaXNwbGF5WyBub2RlTmFt
ZSBdID0gZGlzcGxheTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBlbGVtZGlzcGxheVsgbm9k
ZU5hbWUgXTsKfQoKCgoKdmFyIHJ0YWJsZSA9IC9edCg/OmFibGV8ZHxoKSQvaSwKICAgICAgICBy
cm9vdCA9IC9eKD86Ym9keXxodG1sKSQvaTsKCmlmICggImdldEJvdW5kaW5nQ2xpZW50UmVjdCIg
aW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICkgewogICAgICAgIGpRdWVyeS5mbi5vZmZzZXQg
PSBmdW5jdGlvbiggb3B0aW9ucyApIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpc1sw
XSwgYm94OwoKICAgICAgICAgICAgICAgIGlmICggb3B0aW9ucyApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBqUXVlcnkub2Zmc2V0LnNldE9mZnNldCggdGhpcywgb3B0aW9ucywg
aSApOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBpZiAoICFlbGVtIHx8ICFlbGVtLm93bmVyRG9jdW1lbnQgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAg
ICAgICAgIGlmICggZWxlbSA9PT0gZWxlbS5vd25lckRvY3VtZW50LmJvZHkgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkub2Zmc2V0LmJvZHlPZmZzZXQoIGVsZW0gKTsK
ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAg
ICAgICAgICBib3ggPSBlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAg
ICAgfSBjYXRjaChlKSB7fQoKICAgICAgICAgICAgICAgIHZhciBkb2MgPSBlbGVtLm93bmVyRG9j
dW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIGRvY0VsZW0gPSBkb2MuZG9jdW1lbnRFbGVt
ZW50OwoKICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSdyZSBub3QgZGVhbGluZyB3aXRo
IGEgZGlzY29ubmVjdGVkIERPTSBub2RlCiAgICAgICAgICAgICAgICBpZiAoICFib3ggfHwgIWpR
dWVyeS5jb250YWlucyggZG9jRWxlbSwgZWxlbSApICkgewogICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gYm94ID8geyB0b3A6IGJveC50b3AsIGxlZnQ6IGJveC5sZWZ0IH0gOiB7IHRvcDog
MCwgbGVmdDogMCB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBib2R5
ID0gZG9jLmJvZHksCiAgICAgICAgICAgICAgICAgICAgICAgIHdpbiA9IGdldFdpbmRvdyhkb2Mp
LAogICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRUb3AgID0gZG9jRWxlbS5jbGllbnRUb3Ag
IHx8IGJvZHkuY2xpZW50VG9wICB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRM
ZWZ0ID0gZG9jRWxlbS5jbGllbnRMZWZ0IHx8IGJvZHkuY2xpZW50TGVmdCB8fCAwLAogICAgICAg
ICAgICAgICAgICAgICAgICBzY3JvbGxUb3AgID0gd2luLnBhZ2VZT2Zmc2V0IHx8IGpRdWVyeS5z
dXBwb3J0LmJveE1vZGVsICYmIGRvY0VsZW0uc2Nyb2xsVG9wICB8fCBib2R5LnNjcm9sbFRvcCwK
ICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdCA9IHdpbi5wYWdlWE9mZnNldCB8fCBq
UXVlcnkuc3VwcG9ydC5ib3hNb2RlbCAmJiBkb2NFbGVtLnNjcm9sbExlZnQgfHwgYm9keS5zY3Jv
bGxMZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICB0b3AgID0gYm94LnRvcCAgKyBzY3JvbGxU
b3AgIC0gY2xpZW50VG9wLAogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gYm94LmxlZnQg
KyBzY3JvbGxMZWZ0IC0gY2xpZW50TGVmdDsKCiAgICAgICAgICAgICAgICByZXR1cm4geyB0b3A6
IHRvcCwgbGVmdDogbGVmdCB9OwogICAgICAgIH07Cgp9IGVsc2UgewogICAgICAgIGpRdWVyeS5m
bi5vZmZzZXQgPSBmdW5jdGlvbiggb3B0aW9ucyApIHsKICAgICAgICAgICAgICAgIHZhciBlbGVt
ID0gdGhpc1swXTsKCiAgICAgICAgICAgICAgICBpZiAoIG9wdGlvbnMgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oIGkgKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Lm9mZnNldC5zZXRPZmZzZXQoIHRoaXMsIG9wdGlv
bnMsIGkgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9Cgog
ICAgICAgICAgICAgICAgaWYgKCAhZWxlbSB8fCAhZWxlbS5vd25lckRvY3VtZW50ICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICBpZiAoIGVsZW0gPT09IGVsZW0ub3duZXJEb2N1bWVudC5ib2R5ICkgewogICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4galF1ZXJ5Lm9mZnNldC5ib2R5T2Zmc2V0KCBlbGVt
ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgalF1ZXJ5Lm9mZnNldC5pbml0
aWFsaXplKCk7CgogICAgICAgICAgICAgICAgdmFyIGNvbXB1dGVkU3R5bGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIG9mZnNldFBhcmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50LAogICAgICAgICAg
ICAgICAgICAgICAgICBwcmV2T2Zmc2V0UGFyZW50ID0gZWxlbSwKICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jID0gZWxlbS5vd25lckRvY3VtZW50LAogICAgICAgICAgICAgICAgICAgICAgICBk
b2NFbGVtID0gZG9jLmRvY3VtZW50RWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgYm9k
eSA9IGRvYy5ib2R5LAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmlldyA9IGRvYy5k
ZWZhdWx0VmlldywKICAgICAgICAgICAgICAgICAgICAgICAgcHJldkNvbXB1dGVkU3R5bGUgPSBk
ZWZhdWx0VmlldyA/IGRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoIGVsZW0sIG51bGwgKSA6
IGVsZW0uY3VycmVudFN0eWxlLAogICAgICAgICAgICAgICAgICAgICAgICB0b3AgPSBlbGVtLm9m
ZnNldFRvcCwKICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGVsZW0ub2Zmc2V0TGVmdDsK
CiAgICAgICAgICAgICAgICB3aGlsZSAoIChlbGVtID0gZWxlbS5wYXJlbnROb2RlKSAmJiBlbGVt
ICE9PSBib2R5ICYmIGVsZW0gIT09IGRvY0VsZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGlmICggalF1ZXJ5Lm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRpb24gJiYgcHJldkNvbXB1dGVk
U3R5bGUucG9zaXRpb24gPT09ICJmaXhlZCIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXB1dGVkU3R5bGUgPSBkZWZhdWx0VmlldyA/IGRlZmF1bHRWaWV3LmdldENvbXB1
dGVkU3R5bGUoZWxlbSwgbnVsbCkgOiBlbGVtLmN1cnJlbnRTdHlsZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgdG9wICAtPSBlbGVtLnNjcm9sbFRvcDsKICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdCAtPSBlbGVtLnNjcm9sbExlZnQ7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVs
ZW0gPT09IG9mZnNldFBhcmVudCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b3AgICs9IGVsZW0ub2Zmc2V0VG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
ZnQgKz0gZWxlbS5vZmZzZXRMZWZ0OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIGpRdWVyeS5vZmZzZXQuZG9lc05vdEFkZEJvcmRlciAmJiAhKGpRdWVyeS5vZmZzZXQuZG9l
c0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHMgJiYgcnRhYmxlLnRlc3QoZWxlbS5ub2RlTmFtZSkp
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wICArPSBwYXJz
ZUZsb2F0KCBjb21wdXRlZFN0eWxlLmJvcmRlclRvcFdpZHRoICApIHx8IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IHBhcnNlRmxvYXQoIGNvbXB1dGVk
U3R5bGUuYm9yZGVyTGVmdFdpZHRoICkgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZPZmZzZXRQYXJlbnQg
PSBvZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0UGFy
ZW50ID0gZWxlbS5vZmZzZXRQYXJlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5Lm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JP
dmVyZmxvd05vdFZpc2libGUgJiYgY29tcHV0ZWRTdHlsZS5vdmVyZmxvdyAhPT0gInZpc2libGUi
ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAgKz0gcGFyc2VGbG9hdCgg
Y29tcHV0ZWRTdHlsZS5ib3JkZXJUb3BXaWR0aCAgKSB8fCAwOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxlZnQgKz0gcGFyc2VGbG9hdCggY29tcHV0ZWRTdHlsZS5ib3JkZXJMZWZ0
V2lkdGggKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAg
ICAgICAgICBwcmV2Q29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7CiAgICAgICAgICAgICAg
ICB9CgogICAgICAgICAgICAgICAgaWYgKCBwcmV2Q29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0g
InJlbGF0aXZlIiB8fCBwcmV2Q29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gInN0YXRpYyIgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAgKz0gYm9keS5vZmZzZXRUb3A7CiAgICAgICAg
ICAgICAgICAgICAgICAgIGxlZnQgKz0gYm9keS5vZmZzZXRMZWZ0OwogICAgICAgICAgICAgICAg
fQoKICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5Lm9mZnNldC5zdXBwb3J0c0ZpeGVkUG9zaXRp
b24gJiYgcHJldkNvbXB1dGVkU3R5bGUucG9zaXRpb24gPT09ICJmaXhlZCIgKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgIHRvcCAgKz0gTWF0aC5tYXgoIGRvY0VsZW0uc2Nyb2xsVG9wLCBib2R5
LnNjcm9sbFRvcCApOwogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IE1hdGgubWF4KCBk
b2NFbGVtLnNjcm9sbExlZnQsIGJvZHkuc2Nyb2xsTGVmdCApOwogICAgICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgICAgIHJldHVybiB7IHRvcDogdG9wLCBsZWZ0OiBsZWZ0IH07CiAgICAgICAg
fTsKfQoKalF1ZXJ5Lm9mZnNldCA9IHsKICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgIHZhciBib2R5ID0gZG9jdW1lbnQuYm9keSwgY29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksIGlubmVyRGl2LCBjaGVja0RpdiwgdGFibGUsIHRk
LCBib2R5TWFyZ2luVG9wID0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyhib2R5LCAibWFyZ2luVG9w
IikgKSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICBodG1sID0gIjxkaXYgc3R5bGU9J3Bv
c2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMw
MDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4Oyc+PGRpdj48L2Rpdj48L2Rpdj48dGFi
bGUgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6
NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OycgY2VsbHBhZGRp
bmc9JzAnIGNlbGxzcGFjaW5nPScwJz48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPiI7CgogICAg
ICAgICAgICAgICAgalF1ZXJ5LmV4dGVuZCggY29udGFpbmVyLnN0eWxlLCB7IHBvc2l0aW9uOiAi
YWJzb2x1dGUiLCB0b3A6IDAsIGxlZnQ6IDAsIG1hcmdpbjogMCwgYm9yZGVyOiAwLCB3aWR0aDog
IjFweCIsIGhlaWdodDogIjFweCIsIHZpc2liaWxpdHk6ICJoaWRkZW4iIH0gKTsKCiAgICAgICAg
ICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gaHRtbDsKICAgICAgICAgICAgICAgIGJvZHku
aW5zZXJ0QmVmb3JlKCBjb250YWluZXIsIGJvZHkuZmlyc3RDaGlsZCApOwogICAgICAgICAgICAg
ICAgaW5uZXJEaXYgPSBjb250YWluZXIuZmlyc3RDaGlsZDsKICAgICAgICAgICAgICAgIGNoZWNr
RGl2ID0gaW5uZXJEaXYuZmlyc3RDaGlsZDsKICAgICAgICAgICAgICAgIHRkID0gaW5uZXJEaXYu
bmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkOwoKICAgICAgICAgICAgICAgIHRoaXMu
ZG9lc05vdEFkZEJvcmRlciA9IChjaGVja0Rpdi5vZmZzZXRUb3AgIT09IDUpOwogICAgICAgICAg
ICAgICAgdGhpcy5kb2VzQWRkQm9yZGVyRm9yVGFibGVBbmRDZWxscyA9ICh0ZC5vZmZzZXRUb3Ag
PT09IDUpOwoKICAgICAgICAgICAgICAgIGNoZWNrRGl2LnN0eWxlLnBvc2l0aW9uID0gImZpeGVk
IjsKICAgICAgICAgICAgICAgIGNoZWNrRGl2LnN0eWxlLnRvcCA9ICIyMHB4IjsKCiAgICAgICAg
ICAgICAgICAvLyBzYWZhcmkgc3VidHJhY3RzIHBhcmVudCBib3JkZXIgd2lkdGggaGVyZSB3aGlj
aCBpcyA1cHgKICAgICAgICAgICAgICAgIHRoaXMuc3VwcG9ydHNGaXhlZFBvc2l0aW9uID0gKGNo
ZWNrRGl2Lm9mZnNldFRvcCA9PT0gMjAgfHwgY2hlY2tEaXYub2Zmc2V0VG9wID09PSAxNSk7CiAg
ICAgICAgICAgICAgICBjaGVja0Rpdi5zdHlsZS5wb3NpdGlvbiA9IGNoZWNrRGl2LnN0eWxlLnRv
cCA9ICIiOwoKICAgICAgICAgICAgICAgIGlubmVyRGl2LnN0eWxlLm92ZXJmbG93ID0gImhpZGRl
biI7CiAgICAgICAgICAgICAgICBpbm5lckRpdi5zdHlsZS5wb3NpdGlvbiA9ICJyZWxhdGl2ZSI7
CgogICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2li
bGUgPSAoY2hlY2tEaXYub2Zmc2V0VG9wID09PSAtNSk7CgogICAgICAgICAgICAgICAgdGhpcy5k
b2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCA9IChib2R5Lm9mZnNldFRvcCAhPT0gYm9k
eU1hcmdpblRvcCk7CgogICAgICAgICAgICAgICAgYm9keS5yZW1vdmVDaGlsZCggY29udGFpbmVy
ICk7CiAgICAgICAgICAgICAgICBqUXVlcnkub2Zmc2V0LmluaXRpYWxpemUgPSBqUXVlcnkubm9v
cDsKICAgICAgICB9LAoKICAgICAgICBib2R5T2Zmc2V0OiBmdW5jdGlvbiggYm9keSApIHsKICAg
ICAgICAgICAgICAgIHZhciB0b3AgPSBib2R5Lm9mZnNldFRvcCwKICAgICAgICAgICAgICAgICAg
ICAgICAgbGVmdCA9IGJvZHkub2Zmc2V0TGVmdDsKCiAgICAgICAgICAgICAgICBqUXVlcnkub2Zm
c2V0LmluaXRpYWxpemUoKTsKCiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5vZmZzZXQuZG9l
c05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHRvcCAgKz0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyhib2R5LCAibWFyZ2luVG9wIikgKSB8fCAw
OwogICAgICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IHBhcnNlRmxvYXQoIGpRdWVyeS5jc3Mo
Ym9keSwgIm1hcmdpbkxlZnQiKSApIHx8IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgcmV0dXJuIHsgdG9wOiB0b3AsIGxlZnQ6IGxlZnQgfTsKICAgICAgICB9LAoKICAgICAg
ICBzZXRPZmZzZXQ6IGZ1bmN0aW9uKCBlbGVtLCBvcHRpb25zLCBpICkgewogICAgICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0galF1ZXJ5LmNzcyggZWxlbSwgInBvc2l0aW9uIiApOwoKICAgICAg
ICAgICAgICAgIC8vIHNldCBwb3NpdGlvbiBmaXJzdCwgaW4tY2FzZSB0b3AvbGVmdCBhcmUgc2V0
IGV2ZW4gb24gc3RhdGljIGVsZW0KICAgICAgICAgICAgICAgIGlmICggcG9zaXRpb24gPT09ICJz
dGF0aWMiICkgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtLnN0eWxlLnBvc2l0aW9uID0g
InJlbGF0aXZlIjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgY3VyRWxl
bSA9IGpRdWVyeSggZWxlbSApLAogICAgICAgICAgICAgICAgICAgICAgICBjdXJPZmZzZXQgPSBj
dXJFbGVtLm9mZnNldCgpLAogICAgICAgICAgICAgICAgICAgICAgICBjdXJDU1NUb3AgPSBqUXVl
cnkuY3NzKCBlbGVtLCAidG9wIiApLAogICAgICAgICAgICAgICAgICAgICAgICBjdXJDU1NMZWZ0
ID0galF1ZXJ5LmNzcyggZWxlbSwgImxlZnQiICksCiAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGN1bGF0ZVBvc2l0aW9uID0gKHBvc2l0aW9uID09PSAiYWJzb2x1dGUiIHx8IHBvc2l0aW9uID09
PSAiZml4ZWQiKSAmJiBqUXVlcnkuaW5BcnJheSgiYXV0byIsIFtjdXJDU1NUb3AsIGN1ckNTU0xl
ZnRdKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICAgICBwcm9wcyA9IHt9LCBjdXJQb3NpdGlv
biA9IHt9LCBjdXJUb3AsIGN1ckxlZnQ7CgogICAgICAgICAgICAgICAgLy8gbmVlZCB0byBiZSBh
YmxlIHRvIGNhbGN1bGF0ZSBwb3NpdGlvbiBpZiBlaXRoZXIgdG9wIG9yIGxlZnQgaXMgYXV0byBh
bmQgcG9zaXRpb24gaXMgZWl0aGVyIGFic29sdXRlIG9yIGZpeGVkCiAgICAgICAgICAgICAgICBp
ZiAoIGNhbGN1bGF0ZVBvc2l0aW9uICkgewogICAgICAgICAgICAgICAgICAgICAgICBjdXJQb3Np
dGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgY3VyVG9w
ID0gY3VyUG9zaXRpb24udG9wOwogICAgICAgICAgICAgICAgICAgICAgICBjdXJMZWZ0ID0gY3Vy
UG9zaXRpb24ubGVmdDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgIGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGN1ckxlZnQgPSBwYXJzZUZsb2F0KCBjdXJDU1NMZWZ0ICkgfHwgMDsKICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIGpRdWVyeS5pc0Z1bmN0aW9uKCBv
cHRpb25zICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zLmNh
bGwoIGVsZW0sIGksIGN1ck9mZnNldCApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIGlmIChvcHRpb25zLnRvcCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBy
b3BzLnRvcCA9IChvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3ApICsgY3VyVG9wOwogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubGVmdCAhPSBudWxsKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmxlZnQgPSAob3B0aW9ucy5sZWZ0IC0gY3VyT2Zm
c2V0LmxlZnQpICsgY3VyTGVmdDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBp
ZiAoICJ1c2luZyIgaW4gb3B0aW9ucyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cy51c2luZy5jYWxsKCBlbGVtLCBwcm9wcyApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgY3VyRWxlbS5jc3MoIHByb3BzICk7CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgfQp9OwoKCmpRdWVyeS5mbi5leHRlbmQoewogICAgICAgIHBvc2l0aW9uOiBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICggIXRoaXNbMF0gKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIHZhciBlbGVtID0gdGhpc1swXSwKCiAgICAgICAgICAgICAgICAvLyBHZXQgKnJlYWwqIG9m
ZnNldFBhcmVudAogICAgICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQYXJl
bnQoKSwKCiAgICAgICAgICAgICAgICAvLyBHZXQgY29ycmVjdCBvZmZzZXRzCiAgICAgICAgICAg
ICAgICBvZmZzZXQgICAgICAgPSB0aGlzLm9mZnNldCgpLAogICAgICAgICAgICAgICAgcGFyZW50
T2Zmc2V0ID0gcnJvb3QudGVzdChvZmZzZXRQYXJlbnRbMF0ubm9kZU5hbWUpID8geyB0b3A6IDAs
IGxlZnQ6IDAgfSA6IG9mZnNldFBhcmVudC5vZmZzZXQoKTsKCiAgICAgICAgICAgICAgICAvLyBT
dWJ0cmFjdCBlbGVtZW50IG1hcmdpbnMKICAgICAgICAgICAgICAgIC8vIG5vdGU6IHdoZW4gYW4g
ZWxlbWVudCBoYXMgbWFyZ2luOiBhdXRvIHRoZSBvZmZzZXRMZWZ0IGFuZCBtYXJnaW5MZWZ0CiAg
ICAgICAgICAgICAgICAvLyBhcmUgdGhlIHNhbWUgaW4gU2FmYXJpIGNhdXNpbmcgb2Zmc2V0Lmxl
ZnQgdG8gaW5jb3JyZWN0bHkgYmUgMAogICAgICAgICAgICAgICAgb2Zmc2V0LnRvcCAgLT0gcGFy
c2VGbG9hdCggalF1ZXJ5LmNzcyhlbGVtLCAibWFyZ2luVG9wIikgKSB8fCAwOwogICAgICAgICAg
ICAgICAgb2Zmc2V0LmxlZnQgLT0gcGFyc2VGbG9hdCggalF1ZXJ5LmNzcyhlbGVtLCAibWFyZ2lu
TGVmdCIpICkgfHwgMDsKCiAgICAgICAgICAgICAgICAvLyBBZGQgb2Zmc2V0UGFyZW50IGJvcmRl
cnMKICAgICAgICAgICAgICAgIHBhcmVudE9mZnNldC50b3AgICs9IHBhcnNlRmxvYXQoIGpRdWVy
eS5jc3Mob2Zmc2V0UGFyZW50WzBdLCAiYm9yZGVyVG9wV2lkdGgiKSApIHx8IDA7CiAgICAgICAg
ICAgICAgICBwYXJlbnRPZmZzZXQubGVmdCArPSBwYXJzZUZsb2F0KCBqUXVlcnkuY3NzKG9mZnNl
dFBhcmVudFswXSwgImJvcmRlckxlZnRXaWR0aCIpICkgfHwgMDsKCiAgICAgICAgICAgICAgICAv
LyBTdWJ0cmFjdCB0aGUgdHdvIG9mZnNldHMKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHRvcDogIG9mZnNldC50b3AgIC0gcGFyZW50T2Zmc2V0LnRvcCwK
ICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogb2Zmc2V0LmxlZnQgLSBwYXJlbnRPZmZzZXQu
bGVmdAogICAgICAgICAgICAgICAgfTsKICAgICAgICB9LAoKICAgICAgICBvZmZzZXRQYXJlbnQ6
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0UGFyZW50ID0gdGhpcy5vZmZzZXRQ
YXJlbnQgfHwgZG9jdW1lbnQuYm9keTsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBv
ZmZzZXRQYXJlbnQgJiYgKCFycm9vdC50ZXN0KG9mZnNldFBhcmVudC5ub2RlTmFtZSkgJiYgalF1
ZXJ5LmNzcyhvZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIpID09PSAic3RhdGljIikgKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9m
ZnNldFBhcmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0UGFyZW50OwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgfQp9
KTsKCgovLyBDcmVhdGUgc2Nyb2xsTGVmdCBhbmQgc2Nyb2xsVG9wIG1ldGhvZHMKalF1ZXJ5LmVh
Y2goIFsiTGVmdCIsICJUb3AiXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7CiAgICAgICAgdmFyIG1l
dGhvZCA9ICJzY3JvbGwiICsgbmFtZTsKCiAgICAgICAgalF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1
bmN0aW9uKCB2YWwgKSB7CiAgICAgICAgICAgICAgICB2YXIgZWxlbSwgd2luOwoKICAgICAgICAg
ICAgICAgIGlmICggdmFsID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0gPSB0aGlzWyAwIF07CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFlbGVtICkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAg
ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB3aW4gPSBnZXRXaW5kb3co
IGVsZW0gKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgc2Nyb2xsIG9m
ZnNldAogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luID8gKCJwYWdlWE9mZnNldCIg
aW4gd2luKSA/IHdpblsgaSA/ICJwYWdlWU9mZnNldCIgOiAicGFnZVhPZmZzZXQiIF0gOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5zdXBwb3J0LmJveE1vZGVsICYmIHdp
bi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIG1ldGhvZCBdIHx8CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aW4uZG9jdW1lbnQuYm9keVsgbWV0aG9kIF0gOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1bIG1ldGhvZCBdOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIC8vIFNldCB0aGUgc2Nyb2xsIG9mZnNldAogICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgd2luID0gZ2V0V2luZG93KCB0aGlzICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IHdpbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW4uc2Nyb2xsVG8oCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaSA/IHZhbCA6IGpRdWVyeSgg
d2luICkuc2Nyb2xsTGVmdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGkgPyB2YWwgOiBqUXVlcnkoIHdpbiApLnNjcm9sbFRvcCgpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1sgbWV0aG9kIF0gPSB2YWw7CiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgIH07Cn0pOwoKZnVu
Y3Rpb24gZ2V0V2luZG93KCBlbGVtICkgewogICAgICAgIHJldHVybiBqUXVlcnkuaXNXaW5kb3co
IGVsZW0gKSA/CiAgICAgICAgICAgICAgICBlbGVtIDoKICAgICAgICAgICAgICAgIGVsZW0ubm9k
ZVR5cGUgPT09IDkgPwogICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmRlZmF1bHRWaWV3IHx8
IGVsZW0ucGFyZW50V2luZG93IDoKICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2U7Cn0KCgoK
Ci8vIENyZWF0ZSB3aWR0aCwgaGVpZ2h0LCBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgb3V0ZXJI
ZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kcwpqUXVlcnkuZWFjaChbICJIZWlnaHQiLCAiV2lk
dGgiIF0sIGZ1bmN0aW9uKCBpLCBuYW1lICkgewoKICAgICAgICB2YXIgdHlwZSA9IG5hbWUudG9M
b3dlckNhc2UoKTsKCiAgICAgICAgLy8gaW5uZXJIZWlnaHQgYW5kIGlubmVyV2lkdGgKICAgICAg
ICBqUXVlcnkuZm5bICJpbm5lciIgKyBuYW1lIF0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgIHZhciBlbGVtID0gdGhpc1swXTsKICAgICAgICAgICAgICAgIHJldHVybiBlbGVtICYmIGVs
ZW0uc3R5bGUgPwogICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KCBqUXVlcnkuY3Nz
KCBlbGVtLCB0eXBlLCAicGFkZGluZyIgKSApIDoKICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bDsKICAgICAgICB9OwoKICAgICAgICAvLyBvdXRlckhlaWdodCBhbmQgb3V0ZXJXaWR0aAogICAg
ICAgIGpRdWVyeS5mblsgIm91dGVyIiArIG5hbWUgXSA9IGZ1bmN0aW9uKCBtYXJnaW4gKSB7CiAg
ICAgICAgICAgICAgICB2YXIgZWxlbSA9IHRoaXNbMF07CiAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbSAmJiBlbGVtLnN0eWxlID8KICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCgg
alF1ZXJ5LmNzcyggZWxlbSwgdHlwZSwgbWFyZ2luID8gIm1hcmdpbiIgOiAiYm9yZGVyIiApICkg
OgogICAgICAgICAgICAgICAgICAgICAgICBudWxsOwogICAgICAgIH07CgogICAgICAgIGpRdWVy
eS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIHNpemUgKSB7CiAgICAgICAgICAgICAgICAvLyBHZXQg
d2luZG93IHdpZHRoIG9yIGhlaWdodAogICAgICAgICAgICAgICAgdmFyIGVsZW0gPSB0aGlzWzBd
OwogICAgICAgICAgICAgICAgaWYgKCAhZWxlbSApIHsKICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHNpemUgPT0gbnVsbCA/IG51bGwgOiB0aGlzOwogICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIHNpemUgKSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiggaSApIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IGpRdWVyeSggdGhpcyApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGZbIHR5cGUgXSggc2l6ZS5jYWxsKCB0aGlzLCBp
LCBzZWxmWyB0eXBlIF0oKSApICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggalF1ZXJ5LmlzV2luZG93KCBlbGVtICkg
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV2ZXJ5b25lIGVsc2UgdXNlIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCBvciBkb2N1bWVudC5ib2R5IGRlcGVuZGluZyBvbiBRdWlya3MgdnMg
U3RhbmRhcmRzIG1vZGUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gM3JkIGNvbmRpdGlvbiBh
bGxvd3MgTm9raWEgc3VwcG9ydCwgYXMgaXQgc3VwcG9ydHMgdGhlIGRvY0VsZW0gcHJvcCBidXQg
bm90IENTUzFDb21wYXQKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRvY0VsZW1Qcm9wID0g
ZWxlbS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbICJjbGllbnQiICsgbmFtZSBdLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBlbGVtLmRvY3VtZW50LmJvZHk7CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtLmRvY3VtZW50LmNvbXBhdE1vZGUgPT09ICJD
U1MxQ29tcGF0IiAmJiBkb2NFbGVtUHJvcCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvZHkgJiYgYm9keVsgImNsaWVudCIgKyBuYW1lIF0gfHwgZG9jRWxlbVByb3A7CgogICAg
ICAgICAgICAgICAgLy8gR2V0IGRvY3VtZW50IHdpZHRoIG9yIGhlaWdodAogICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICggZWxlbS5ub2RlVHlwZSA9PT0gOSApIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWln
aHRdLCB3aGljaGV2ZXIgaXMgZ3JlYXRlcgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
TWF0aC5tYXgoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS5kb2N1bWVudEVs
ZW1lbnRbImNsaWVudCIgKyBuYW1lXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtLmJvZHlbInNjcm9sbCIgKyBuYW1lXSwgZWxlbS5kb2N1bWVudEVsZW1lbnRbInNjcm9sbCIg
KyBuYW1lXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmJvZHlbIm9mZnNl
dCIgKyBuYW1lXSwgZWxlbS5kb2N1bWVudEVsZW1lbnRbIm9mZnNldCIgKyBuYW1lXQogICAgICAg
ICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIC8vIEdldCBvciBzZXQgd2lkdGgg
b3IgaGVpZ2h0IG9uIHRoZSBlbGVtZW50CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBzaXpl
ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcmlnID0galF1
ZXJ5LmNzcyggZWxlbSwgdHlwZSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dCA9IHBhcnNlRmxvYXQoIG9yaWcgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBq
UXVlcnkuaXNOYU4oIHJldCApID8gb3JpZyA6IHJldDsKCiAgICAgICAgICAgICAgICAvLyBTZXQg
dGhlIHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCAoZGVmYXVsdCB0byBwaXhlbHMgaWYg
dmFsdWUgaXMgdW5pdGxlc3MpCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5jc3MoIHR5cGUsIHR5cGVvZiBzaXplID09PSAic3RyaW5n
IiA/IHNpemUgOiBzaXplICsgInB4IiApOwogICAgICAgICAgICAgICAgfQogICAgICAgIH07Cgp9
KTsKCgovLyBFeHBvc2UgalF1ZXJ5IHRvIHRoZSBnbG9iYWwgb2JqZWN0CndpbmRvdy5qUXVlcnkg
PSB3aW5kb3cuJCA9IGpRdWVyeTsKfSkod2luZG93KTsKXxAPdGV4dC9qYXZhc2NyaXB01AUGBwgO
DxARXxBJZmlsZTovLy9Vc2Vycy9hYnVjdXIvV2ViS2l0L1BlcmZvcm1hbmNlVGVzdHMvcmVzb3Vy
Y2VzL2pxdWVyeS5mbG90Lm1pbi5qc08RAkdicGxpc3QwMNQBAgMEBQY2N1gkdmVyc2lvblgkb2Jq
ZWN0c1kkYXJjaGl2ZXJUJHRvcBIAAYagqwcIHyUmLS4vMDEyVSRudWxs2wkKCwwNDg8QERITFBUW
FxgZGhscHR5SJDNWJGNsYXNzUiQ2UiQxUiQ5UiQ0UiQ3UiQyUiQ1UiQwUiQ4gAKACoAHEACACYAF
gAAQB4AGEAiACNMgCiEaIyRXTlMuYmFzZVtOUy5yZWxhdGl2ZYAAgASAA18QSWZpbGU6Ly8vVXNl
cnMvYWJ1Y3VyL1dlYktpdC9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkuZmxvdC5t
aW4uanPSJygpKlokY2xhc3NuYW1lWCRjbGFzc2VzVU5TVVJMoissVU5TVVJMWE5TT2JqZWN0I0G3
ICqRDog3EAJfEA90ZXh0L2phdmFzY3JpcHQRkrMjf+/////////SJygzNF1OU1VSTFJlc3BvbnNl
ojUsXU5TVVJMUmVzcG9uc2VfEA9OU0tleWVkQXJjaGl2ZXLRODlfEBNXZWJSZXNvdXJjZVJlc3Bv
bnNlgAEACAARABoAIwAtADIANwBDAEkAYABjAGoAbQBwAHMAdgB5AHwAfwCCAIUAhwCJAIsAjQCP
AJEAkwCVAJcAmQCbAKIAqgC2ALgAugC8AQgBDQEYASEBJwEqATABOQFCAUQBVgFZAWIBZwF1AXgB
hgGYAZsBsQAAAAAAAAIBAAAAAAAAADoAAAAAAAAAAAAAAAAAAAGzTxGSsy8qIEphdmFzY3JpcHQg
cGxvdHRpbmcgbGlicmFyeSBmb3IgalF1ZXJ5LCB2LiAwLjcuCiAqCiAqIFJlbGVhc2VkIHVuZGVy
IHRoZSBNSVQgbGljZW5zZSBieSBJT0xBLCBEZWNlbWJlciAyMDA3LgogKgogKi8KKGZ1bmN0aW9u
KGIpe2IuY29sb3I9e307Yi5jb2xvci5tYWtlPWZ1bmN0aW9uKGQsZSxnLGYpe3ZhciBjPXt9O2Mu
cj1kfHwwO2MuZz1lfHwwO2MuYj1nfHwwO2MuYT1mIT1udWxsP2Y6MTtjLmFkZD1mdW5jdGlvbiho
LGope2Zvcih2YXIgaz0wO2s8aC5sZW5ndGg7KytrKXtjW2guY2hhckF0KGspXSs9an1yZXR1cm4g
Yy5ub3JtYWxpemUoKX07Yy5zY2FsZT1mdW5jdGlvbihoLGope2Zvcih2YXIgaz0wO2s8aC5sZW5n
dGg7KytrKXtjW2guY2hhckF0KGspXSo9an1yZXR1cm4gYy5ub3JtYWxpemUoKX07Yy50b1N0cmlu
Zz1mdW5jdGlvbigpe2lmKGMuYT49MSl7cmV0dXJuInJnYigiK1tjLnIsYy5nLGMuYl0uam9pbigi
LCIpKyIpIn1lbHNle3JldHVybiJyZ2JhKCIrW2MucixjLmcsYy5iLGMuYV0uam9pbigiLCIpKyIp
In19O2Mubm9ybWFsaXplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChrLGosbCl7cmV0dXJuIGo8az9r
OihqPmw/bDpqKX1jLnI9aCgwLHBhcnNlSW50KGMuciksMjU1KTtjLmc9aCgwLHBhcnNlSW50KGMu
ZyksMjU1KTtjLmI9aCgwLHBhcnNlSW50KGMuYiksMjU1KTtjLmE9aCgwLGMuYSwxKTtyZXR1cm4g
Y307Yy5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBiLmNvbG9yLm1ha2UoYy5yLGMuYixjLmcsYy5h
KX07cmV0dXJuIGMubm9ybWFsaXplKCl9O2IuY29sb3IuZXh0cmFjdD1mdW5jdGlvbihkLGUpe3Zh
ciBjO2Rve2M9ZC5jc3MoZSkudG9Mb3dlckNhc2UoKTtpZihjIT0iIiYmYyE9InRyYW5zcGFyZW50
Iil7YnJlYWt9ZD1kLnBhcmVudCgpfXdoaWxlKCFiLm5vZGVOYW1lKGQuZ2V0KDApLCJib2R5Iikp
O2lmKGM9PSJyZ2JhKDAsIDAsIDAsIDApIil7Yz0idHJhbnNwYXJlbnQifXJldHVybiBiLmNvbG9y
LnBhcnNlKGMpfTtiLmNvbG9yLnBhcnNlPWZ1bmN0aW9uKGMpe3ZhciBkLGY9Yi5jb2xvci5tYWtl
O2lmKGQ9L3JnYlwoXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XXsxLDN9KVxzKixccyooWzAt
OV17MSwzfSlccypcKS8uZXhlYyhjKSl7cmV0dXJuIGYocGFyc2VJbnQoZFsxXSwxMCkscGFyc2VJ
bnQoZFsyXSwxMCkscGFyc2VJbnQoZFszXSwxMCkpfWlmKGQ9L3JnYmFcKFxzKihbMC05XXsxLDN9
KVxzKixccyooWzAtOV17MSwzfSlccyosXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XSsoPzpc
LlswLTldKyk/KVxzKlwpLy5leGVjKGMpKXtyZXR1cm4gZihwYXJzZUludChkWzFdLDEwKSxwYXJz
ZUludChkWzJdLDEwKSxwYXJzZUludChkWzNdLDEwKSxwYXJzZUZsb2F0KGRbNF0pKX1pZihkPS9y
Z2JcKFxzKihbMC05XSsoPzpcLlswLTldKyk/KVwlXHMqLFxzKihbMC05XSsoPzpcLlswLTldKyk/
KVwlXHMqLFxzKihbMC05XSsoPzpcLlswLTldKyk/KVwlXHMqXCkvLmV4ZWMoYykpe3JldHVybiBm
KHBhcnNlRmxvYXQoZFsxXSkqMi41NSxwYXJzZUZsb2F0KGRbMl0pKjIuNTUscGFyc2VGbG9hdChk
WzNdKSoyLjU1KX1pZihkPS9yZ2JhXChccyooWzAtOV0rKD86XC5bMC05XSspPylcJVxzKixccyoo
WzAtOV0rKD86XC5bMC05XSspPylcJVxzKixccyooWzAtOV0rKD86XC5bMC05XSspPylcJVxzKixc
cyooWzAtOV0rKD86XC5bMC05XSspPylccypcKS8uZXhlYyhjKSl7cmV0dXJuIGYocGFyc2VGbG9h
dChkWzFdKSoyLjU1LHBhcnNlRmxvYXQoZFsyXSkqMi41NSxwYXJzZUZsb2F0KGRbM10pKjIuNTUs
cGFyc2VGbG9hdChkWzRdKSl9aWYoZD0vIyhbYS1mQS1GMC05XXsyfSkoW2EtZkEtRjAtOV17Mn0p
KFthLWZBLUYwLTldezJ9KS8uZXhlYyhjKSl7cmV0dXJuIGYocGFyc2VJbnQoZFsxXSwxNikscGFy
c2VJbnQoZFsyXSwxNikscGFyc2VJbnQoZFszXSwxNikpfWlmKGQ9LyMoW2EtZkEtRjAtOV0pKFth
LWZBLUYwLTldKShbYS1mQS1GMC05XSkvLmV4ZWMoYykpe3JldHVybiBmKHBhcnNlSW50KGRbMV0r
ZFsxXSwxNikscGFyc2VJbnQoZFsyXStkWzJdLDE2KSxwYXJzZUludChkWzNdK2RbM10sMTYpKX12
YXIgZT1iLnRyaW0oYykudG9Mb3dlckNhc2UoKTtpZihlPT0idHJhbnNwYXJlbnQiKXtyZXR1cm4g
ZigyNTUsMjU1LDI1NSwwKX1lbHNle2Q9YVtlXXx8WzAsMCwwXTtyZXR1cm4gZihkWzBdLGRbMV0s
ZFsyXSl9fTt2YXIgYT17YXF1YTpbMCwyNTUsMjU1XSxhenVyZTpbMjQwLDI1NSwyNTVdLGJlaWdl
OlsyNDUsMjQ1LDIyMF0sYmxhY2s6WzAsMCwwXSxibHVlOlswLDAsMjU1XSxicm93bjpbMTY1LDQy
LDQyXSxjeWFuOlswLDI1NSwyNTVdLGRhcmtibHVlOlswLDAsMTM5XSxkYXJrY3lhbjpbMCwxMzks
MTM5XSxkYXJrZ3JleTpbMTY5LDE2OSwxNjldLGRhcmtncmVlbjpbMCwxMDAsMF0sZGFya2toYWtp
OlsxODksMTgzLDEwN10sZGFya21hZ2VudGE6WzEzOSwwLDEzOV0sZGFya29saXZlZ3JlZW46Wzg1
LDEwNyw0N10sZGFya29yYW5nZTpbMjU1LDE0MCwwXSxkYXJrb3JjaGlkOlsxNTMsNTAsMjA0XSxk
YXJrcmVkOlsxMzksMCwwXSxkYXJrc2FsbW9uOlsyMzMsMTUwLDEyMl0sZGFya3Zpb2xldDpbMTQ4
LDAsMjExXSxmdWNoc2lhOlsyNTUsMCwyNTVdLGdvbGQ6WzI1NSwyMTUsMF0sZ3JlZW46WzAsMTI4
LDBdLGluZGlnbzpbNzUsMCwxMzBdLGtoYWtpOlsyNDAsMjMwLDE0MF0sbGlnaHRibHVlOlsxNzMs
MjE2LDIzMF0sbGlnaHRjeWFuOlsyMjQsMjU1LDI1NV0sbGlnaHRncmVlbjpbMTQ0LDIzOCwxNDRd
LGxpZ2h0Z3JleTpbMjExLDIxMSwyMTFdLGxpZ2h0cGluazpbMjU1LDE4MiwxOTNdLGxpZ2h0eWVs
bG93OlsyNTUsMjU1LDIyNF0sbGltZTpbMCwyNTUsMF0sbWFnZW50YTpbMjU1LDAsMjU1XSxtYXJv
b246WzEyOCwwLDBdLG5hdnk6WzAsMCwxMjhdLG9saXZlOlsxMjgsMTI4LDBdLG9yYW5nZTpbMjU1
LDE2NSwwXSxwaW5rOlsyNTUsMTkyLDIwM10scHVycGxlOlsxMjgsMCwxMjhdLHZpb2xldDpbMTI4
LDAsMTI4XSxyZWQ6WzI1NSwwLDBdLHNpbHZlcjpbMTkyLDE5MiwxOTJdLHdoaXRlOlsyNTUsMjU1
LDI1NV0seWVsbG93OlsyNTUsMjU1LDBdfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGMpe2Z1bmN0aW9u
IGIoYXYsYWksSixhZil7dmFyIFE9W10sTz17Y29sb3JzOlsiI2VkYzI0MCIsIiNhZmQ4ZjgiLCIj
Y2I0YjRiIiwiIzRkYTc0ZCIsIiM5NDQwZWQiXSxsZWdlbmQ6e3Nob3c6dHJ1ZSxub0NvbHVtbnM6
MSxsYWJlbEZvcm1hdHRlcjpudWxsLGxhYmVsQm94Qm9yZGVyQ29sb3I6IiNjY2MiLGNvbnRhaW5l
cjpudWxsLHBvc2l0aW9uOiJuZSIsbWFyZ2luOjUsYmFja2dyb3VuZENvbG9yOm51bGwsYmFja2dy
b3VuZE9wYWNpdHk6MC44NX0seGF4aXM6e3Nob3c6bnVsbCxwb3NpdGlvbjoiYm90dG9tIixtb2Rl
Om51bGwsY29sb3I6bnVsbCx0aWNrQ29sb3I6bnVsbCx0cmFuc2Zvcm06bnVsbCxpbnZlcnNlVHJh
bnNmb3JtOm51bGwsbWluOm51bGwsbWF4Om51bGwsYXV0b3NjYWxlTWFyZ2luOm51bGwsdGlja3M6
bnVsbCx0aWNrRm9ybWF0dGVyOm51bGwsbGFiZWxXaWR0aDpudWxsLGxhYmVsSGVpZ2h0Om51bGws
cmVzZXJ2ZVNwYWNlOm51bGwsdGlja0xlbmd0aDpudWxsLGFsaWduVGlja3NXaXRoQXhpczpudWxs
LHRpY2tEZWNpbWFsczpudWxsLHRpY2tTaXplOm51bGwsbWluVGlja1NpemU6bnVsbCxtb250aE5h
bWVzOm51bGwsdGltZWZvcm1hdDpudWxsLHR3ZWx2ZUhvdXJDbG9jazpmYWxzZX0seWF4aXM6e2F1
dG9zY2FsZU1hcmdpbjowLjAyLHBvc2l0aW9uOiJsZWZ0In0seGF4ZXM6W10seWF4ZXM6W10sc2Vy
aWVzOntwb2ludHM6e3Nob3c6ZmFsc2UscmFkaXVzOjMsbGluZVdpZHRoOjIsZmlsbDp0cnVlLGZp
bGxDb2xvcjoiI2ZmZmZmZiIsc3ltYm9sOiJjaXJjbGUifSxsaW5lczp7bGluZVdpZHRoOjIsZmls
bDpmYWxzZSxmaWxsQ29sb3I6bnVsbCxzdGVwczpmYWxzZX0sYmFyczp7c2hvdzpmYWxzZSxsaW5l
V2lkdGg6MixiYXJXaWR0aDoxLGZpbGw6dHJ1ZSxmaWxsQ29sb3I6bnVsbCxhbGlnbjoibGVmdCIs
aG9yaXpvbnRhbDpmYWxzZX0sc2hhZG93U2l6ZTozfSxncmlkOntzaG93OnRydWUsYWJvdmVEYXRh
OmZhbHNlLGNvbG9yOiIjNTQ1NDU0IixiYWNrZ3JvdW5kQ29sb3I6bnVsbCxib3JkZXJDb2xvcjpu
dWxsLHRpY2tDb2xvcjpudWxsLGxhYmVsTWFyZ2luOjUsYXhpc01hcmdpbjo4LGJvcmRlcldpZHRo
OjIsbWluQm9yZGVyTWFyZ2luOm51bGwsbWFya2luZ3M6bnVsbCxtYXJraW5nc0NvbG9yOiIjZjRm
NGY0IixtYXJraW5nc0xpbmVXaWR0aDoyLGNsaWNrYWJsZTpmYWxzZSxob3ZlcmFibGU6ZmFsc2Us
YXV0b0hpZ2hsaWdodDp0cnVlLG1vdXNlQWN0aXZlUmFkaXVzOjEwfSxob29rczp7fX0sYXo9bnVs
bCxhZD1udWxsLHk9bnVsbCxIPW51bGwsQT1udWxsLHA9W10sYXc9W10scT17bGVmdDowLHJpZ2h0
OjAsdG9wOjAsYm90dG9tOjB9LEc9MCxJPTAsaD0wLHc9MCxhaz17cHJvY2Vzc09wdGlvbnM6W10s
cHJvY2Vzc1Jhd0RhdGE6W10scHJvY2Vzc0RhdGFwb2ludHM6W10sZHJhd1NlcmllczpbXSxkcmF3
OltdLGJpbmRFdmVudHM6W10sZHJhd092ZXJsYXk6W10sc2h1dGRvd246W119LGFxPXRoaXM7YXEu
c2V0RGF0YT1hajthcS5zZXR1cEdyaWQ9dDthcS5kcmF3PVc7YXEuZ2V0UGxhY2Vob2xkZXI9ZnVu
Y3Rpb24oKXtyZXR1cm4gYXZ9O2FxLmdldENhbnZhcz1mdW5jdGlvbigpe3JldHVybiBhen07YXEu
Z2V0UGxvdE9mZnNldD1mdW5jdGlvbigpe3JldHVybiBxfTthcS53aWR0aD1mdW5jdGlvbigpe3Jl
dHVybiBofTthcS5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gd307YXEub2Zmc2V0PWZ1bmN0aW9u
KCl7dmFyIGFCPXkub2Zmc2V0KCk7YUIubGVmdCs9cS5sZWZ0O2FCLnRvcCs9cS50b3A7cmV0dXJu
IGFCfTthcS5nZXREYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIFF9O2FxLmdldEF4ZXM9ZnVuY3Rpb24o
KXt2YXIgYUM9e30sYUI7Yy5lYWNoKHAuY29uY2F0KGF3KSxmdW5jdGlvbihhRCxhRSl7aWYoYUUp
e2FDW2FFLmRpcmVjdGlvbisoYUUubiE9MT9hRS5uOiIiKSsiYXhpcyJdPWFFfX0pO3JldHVybiBh
Q307YXEuZ2V0WEF4ZXM9ZnVuY3Rpb24oKXtyZXR1cm4gcH07YXEuZ2V0WUF4ZXM9ZnVuY3Rpb24o
KXtyZXR1cm4gYXd9O2FxLmMycD1DO2FxLnAyYz1hcjthcS5nZXRPcHRpb25zPWZ1bmN0aW9uKCl7
cmV0dXJuIE99O2FxLmhpZ2hsaWdodD14O2FxLnVuaGlnaGxpZ2h0PVQ7YXEudHJpZ2dlclJlZHJh
d092ZXJsYXk9ZjthcS5wb2ludE9mZnNldD1mdW5jdGlvbihhQil7cmV0dXJue2xlZnQ6cGFyc2VJ
bnQocFthQShhQiwieCIpLTFdLnAyYygrYUIueCkrcS5sZWZ0KSx0b3A6cGFyc2VJbnQoYXdbYUEo
YUIsInkiKS0xXS5wMmMoK2FCLnkpK3EudG9wKX19O2FxLnNodXRkb3duPWFnO2FxLnJlc2l6ZT1m
dW5jdGlvbigpe0IoKTtnKGF6KTtnKGFkKX07YXEuaG9va3M9YWs7RihhcSk7WihKKTtYKCk7YWoo
YWkpO3QoKTtXKCk7YWgoKTtmdW5jdGlvbiBhbihhRCxhQil7YUI9W2FxXS5jb25jYXQoYUIpO2Zv
cih2YXIgYUM9MDthQzxhRC5sZW5ndGg7KythQyl7YURbYUNdLmFwcGx5KHRoaXMsYUIpfX1mdW5j
dGlvbiBGKCl7Zm9yKHZhciBhQj0wO2FCPGFmLmxlbmd0aDsrK2FCKXt2YXIgYUM9YWZbYUJdO2FD
LmluaXQoYXEpO2lmKGFDLm9wdGlvbnMpe2MuZXh0ZW5kKHRydWUsTyxhQy5vcHRpb25zKX19fWZ1
bmN0aW9uIFooYUMpe3ZhciBhQjtjLmV4dGVuZCh0cnVlLE8sYUMpO2lmKE8ueGF4aXMuY29sb3I9
PW51bGwpe08ueGF4aXMuY29sb3I9Ty5ncmlkLmNvbG9yfWlmKE8ueWF4aXMuY29sb3I9PW51bGwp
e08ueWF4aXMuY29sb3I9Ty5ncmlkLmNvbG9yfWlmKE8ueGF4aXMudGlja0NvbG9yPT1udWxsKXtP
LnhheGlzLnRpY2tDb2xvcj1PLmdyaWQudGlja0NvbG9yfWlmKE8ueWF4aXMudGlja0NvbG9yPT1u
dWxsKXtPLnlheGlzLnRpY2tDb2xvcj1PLmdyaWQudGlja0NvbG9yfWlmKE8uZ3JpZC5ib3JkZXJD
b2xvcj09bnVsbCl7Ty5ncmlkLmJvcmRlckNvbG9yPU8uZ3JpZC5jb2xvcn1pZihPLmdyaWQudGlj
a0NvbG9yPT1udWxsKXtPLmdyaWQudGlja0NvbG9yPWMuY29sb3IucGFyc2UoTy5ncmlkLmNvbG9y
KS5zY2FsZSgiYSIsMC4yMikudG9TdHJpbmcoKX1mb3IoYUI9MDthQjxNYXRoLm1heCgxLE8ueGF4
ZXMubGVuZ3RoKTsrK2FCKXtPLnhheGVzW2FCXT1jLmV4dGVuZCh0cnVlLHt9LE8ueGF4aXMsTy54
YXhlc1thQl0pfWZvcihhQj0wO2FCPE1hdGgubWF4KDEsTy55YXhlcy5sZW5ndGgpOysrYUIpe08u
eWF4ZXNbYUJdPWMuZXh0ZW5kKHRydWUse30sTy55YXhpcyxPLnlheGVzW2FCXSl9aWYoTy54YXhp
cy5ub1RpY2tzJiZPLnhheGlzLnRpY2tzPT1udWxsKXtPLnhheGlzLnRpY2tzPU8ueGF4aXMubm9U
aWNrc31pZihPLnlheGlzLm5vVGlja3MmJk8ueWF4aXMudGlja3M9PW51bGwpe08ueWF4aXMudGlj
a3M9Ty55YXhpcy5ub1RpY2tzfWlmKE8ueDJheGlzKXtPLnhheGVzWzFdPWMuZXh0ZW5kKHRydWUs
e30sTy54YXhpcyxPLngyYXhpcyk7Ty54YXhlc1sxXS5wb3NpdGlvbj0idG9wIn1pZihPLnkyYXhp
cyl7Ty55YXhlc1sxXT1jLmV4dGVuZCh0cnVlLHt9LE8ueWF4aXMsTy55MmF4aXMpO08ueWF4ZXNb
MV0ucG9zaXRpb249InJpZ2h0In1pZihPLmdyaWQuY29sb3JlZEFyZWFzKXtPLmdyaWQubWFya2lu
Z3M9Ty5ncmlkLmNvbG9yZWRBcmVhc31pZihPLmdyaWQuY29sb3JlZEFyZWFzQ29sb3Ipe08uZ3Jp
ZC5tYXJraW5nc0NvbG9yPU8uZ3JpZC5jb2xvcmVkQXJlYXNDb2xvcn1pZihPLmxpbmVzKXtjLmV4
dGVuZCh0cnVlLE8uc2VyaWVzLmxpbmVzLE8ubGluZXMpfWlmKE8ucG9pbnRzKXtjLmV4dGVuZCh0
cnVlLE8uc2VyaWVzLnBvaW50cyxPLnBvaW50cyl9aWYoTy5iYXJzKXtjLmV4dGVuZCh0cnVlLE8u
c2VyaWVzLmJhcnMsTy5iYXJzKX1pZihPLnNoYWRvd1NpemUhPW51bGwpe08uc2VyaWVzLnNoYWRv
d1NpemU9Ty5zaGFkb3dTaXplfWZvcihhQj0wO2FCPE8ueGF4ZXMubGVuZ3RoOysrYUIpe1YocCxh
QisxKS5vcHRpb25zPU8ueGF4ZXNbYUJdfWZvcihhQj0wO2FCPE8ueWF4ZXMubGVuZ3RoOysrYUIp
e1YoYXcsYUIrMSkub3B0aW9ucz1PLnlheGVzW2FCXX1mb3IodmFyIGFEIGluIGFrKXtpZihPLmhv
b2tzW2FEXSYmTy5ob29rc1thRF0ubGVuZ3RoKXtha1thRF09YWtbYURdLmNvbmNhdChPLmhvb2tz
W2FEXSl9fWFuKGFrLnByb2Nlc3NPcHRpb25zLFtPXSl9ZnVuY3Rpb24gYWooYUIpe1E9WShhQik7
YXgoKTt6KCl9ZnVuY3Rpb24gWShhRSl7dmFyIGFDPVtdO2Zvcih2YXIgYUI9MDthQjxhRS5sZW5n
dGg7KythQil7dmFyIGFEPWMuZXh0ZW5kKHRydWUse30sTy5zZXJpZXMpO2lmKGFFW2FCXS5kYXRh
IT1udWxsKXthRC5kYXRhPWFFW2FCXS5kYXRhO2RlbGV0ZSBhRVthQl0uZGF0YTtjLmV4dGVuZCh0
cnVlLGFELGFFW2FCXSk7YUVbYUJdLmRhdGE9YUQuZGF0YX1lbHNle2FELmRhdGE9YUVbYUJdfWFD
LnB1c2goYUQpfXJldHVybiBhQ31mdW5jdGlvbiBhQShhQyxhRCl7dmFyIGFCPWFDW2FEKyJheGlz
Il07aWYodHlwZW9mIGFCPT0ib2JqZWN0Iil7YUI9YUIubn1pZih0eXBlb2YgYUIhPSJudW1iZXIi
KXthQj0xfXJldHVybiBhQn1mdW5jdGlvbiBtKCl7cmV0dXJuIGMuZ3JlcChwLmNvbmNhdChhdyks
ZnVuY3Rpb24oYUIpe3JldHVybiBhQn0pfWZ1bmN0aW9uIEMoYUUpe3ZhciBhQz17fSxhQixhRDtm
b3IoYUI9MDthQjxwLmxlbmd0aDsrK2FCKXthRD1wW2FCXTtpZihhRCYmYUQudXNlZCl7YUNbIngi
K2FELm5dPWFELmMycChhRS5sZWZ0KX19Zm9yKGFCPTA7YUI8YXcubGVuZ3RoOysrYUIpe2FEPWF3
W2FCXTtpZihhRCYmYUQudXNlZCl7YUNbInkiK2FELm5dPWFELmMycChhRS50b3ApfX1pZihhQy54
MSE9PXVuZGVmaW5lZCl7YUMueD1hQy54MX1pZihhQy55MSE9PXVuZGVmaW5lZCl7YUMueT1hQy55
MX1yZXR1cm4gYUN9ZnVuY3Rpb24gYXIoYUYpe3ZhciBhRD17fSxhQyxhRSxhQjtmb3IoYUM9MDth
QzxwLmxlbmd0aDsrK2FDKXthRT1wW2FDXTtpZihhRSYmYUUudXNlZCl7YUI9IngiK2FFLm47aWYo
YUZbYUJdPT1udWxsJiZhRS5uPT0xKXthQj0ieCJ9aWYoYUZbYUJdIT1udWxsKXthRC5sZWZ0PWFF
LnAyYyhhRlthQl0pO2JyZWFrfX19Zm9yKGFDPTA7YUM8YXcubGVuZ3RoOysrYUMpe2FFPWF3W2FD
XTtpZihhRSYmYUUudXNlZCl7YUI9InkiK2FFLm47aWYoYUZbYUJdPT1udWxsJiZhRS5uPT0xKXth
Qj0ieSJ9aWYoYUZbYUJdIT1udWxsKXthRC50b3A9YUUucDJjKGFGW2FCXSk7YnJlYWt9fX1yZXR1
cm4gYUR9ZnVuY3Rpb24gVihhQyxhQil7aWYoIWFDW2FCLTFdKXthQ1thQi0xXT17bjphQixkaXJl
Y3Rpb246YUM9PXA/IngiOiJ5IixvcHRpb25zOmMuZXh0ZW5kKHRydWUse30sYUM9PXA/Ty54YXhp
czpPLnlheGlzKX19cmV0dXJuIGFDW2FCLTFdfWZ1bmN0aW9uIGF4KCl7dmFyIGFHO3ZhciBhTT1R
Lmxlbmd0aCxhQj1bXSxhRT1bXTtmb3IoYUc9MDthRzxRLmxlbmd0aDsrK2FHKXt2YXIgYUo9UVth
R10uY29sb3I7aWYoYUohPW51bGwpey0tYU07aWYodHlwZW9mIGFKPT0ibnVtYmVyIil7YUUucHVz
aChhSil9ZWxzZXthQi5wdXNoKGMuY29sb3IucGFyc2UoUVthR10uY29sb3IpKX19fWZvcihhRz0w
O2FHPGFFLmxlbmd0aDsrK2FHKXthTT1NYXRoLm1heChhTSxhRVthR10rMSl9dmFyIGFDPVtdLGFG
PTA7YUc9MDt3aGlsZShhQy5sZW5ndGg8YU0pe3ZhciBhSTtpZihPLmNvbG9ycy5sZW5ndGg9PWFH
KXthST1jLmNvbG9yLm1ha2UoMTAwLDEwMCwxMDApfWVsc2V7YUk9Yy5jb2xvci5wYXJzZShPLmNv
bG9yc1thR10pfXZhciBhRD1hRiUyPT0xPy0xOjE7YUkuc2NhbGUoInJnYiIsMSthRCpNYXRoLmNl
aWwoYUYvMikqMC4yKTthQy5wdXNoKGFJKTsrK2FHO2lmKGFHPj1PLmNvbG9ycy5sZW5ndGgpe2FH
PTA7KythRn19dmFyIGFIPTAsYU47Zm9yKGFHPTA7YUc8US5sZW5ndGg7KythRyl7YU49UVthR107
aWYoYU4uY29sb3I9PW51bGwpe2FOLmNvbG9yPWFDW2FIXS50b1N0cmluZygpOysrYUh9ZWxzZXtp
Zih0eXBlb2YgYU4uY29sb3I9PSJudW1iZXIiKXthTi5jb2xvcj1hQ1thTi5jb2xvcl0udG9TdHJp
bmcoKX19aWYoYU4ubGluZXMuc2hvdz09bnVsbCl7dmFyIGFMLGFLPXRydWU7Zm9yKGFMIGluIGFO
KXtpZihhTlthTF0mJmFOW2FMXS5zaG93KXthSz1mYWxzZTticmVha319aWYoYUspe2FOLmxpbmVz
LnNob3c9dHJ1ZX19YU4ueGF4aXM9VihwLGFBKGFOLCJ4IikpO2FOLnlheGlzPVYoYXcsYUEoYU4s
InkiKSl9fWZ1bmN0aW9uIHooKXt2YXIgYU89TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGFJPU51
bWJlci5ORUdBVElWRV9JTkZJTklUWSxhQj1OdW1iZXIuTUFYX1ZBTFVFLGFVLGFTLGFSLGFOLGFE
LGFKLGFULGFQLGFILGFHLGFDLGEwLGFYLGFMO2Z1bmN0aW9uIGFGKGEzLGEyLGExKXtpZihhMjxh
My5kYXRhbWluJiZhMiE9LWFCKXthMy5kYXRhbWluPWEyfWlmKGExPmEzLmRhdGFtYXgmJmExIT1h
Qil7YTMuZGF0YW1heD1hMX19Yy5lYWNoKG0oKSxmdW5jdGlvbihhMSxhMil7YTIuZGF0YW1pbj1h
TzthMi5kYXRhbWF4PWFJO2EyLnVzZWQ9ZmFsc2V9KTtmb3IoYVU9MDthVTxRLmxlbmd0aDsrK2FV
KXthSj1RW2FVXTthSi5kYXRhcG9pbnRzPXtwb2ludHM6W119O2FuKGFrLnByb2Nlc3NSYXdEYXRh
LFthSixhSi5kYXRhLGFKLmRhdGFwb2ludHNdKX1mb3IoYVU9MDthVTxRLmxlbmd0aDsrK2FVKXth
Sj1RW2FVXTt2YXIgYVo9YUouZGF0YSxhVz1hSi5kYXRhcG9pbnRzLmZvcm1hdDtpZighYVcpe2FX
PVtdO2FXLnB1c2goe3g6dHJ1ZSxudW1iZXI6dHJ1ZSxyZXF1aXJlZDp0cnVlfSk7YVcucHVzaCh7
eTp0cnVlLG51bWJlcjp0cnVlLHJlcXVpcmVkOnRydWV9KTtpZihhSi5iYXJzLnNob3d8fChhSi5s
aW5lcy5zaG93JiZhSi5saW5lcy5maWxsKSl7YVcucHVzaCh7eTp0cnVlLG51bWJlcjp0cnVlLHJl
cXVpcmVkOmZhbHNlLGRlZmF1bHRWYWx1ZTowfSk7aWYoYUouYmFycy5ob3Jpem9udGFsKXtkZWxl
dGUgYVdbYVcubGVuZ3RoLTFdLnk7YVdbYVcubGVuZ3RoLTFdLng9dHJ1ZX19YUouZGF0YXBvaW50
cy5mb3JtYXQ9YVd9aWYoYUouZGF0YXBvaW50cy5wb2ludHNpemUhPW51bGwpe2NvbnRpbnVlfWFK
LmRhdGFwb2ludHMucG9pbnRzaXplPWFXLmxlbmd0aDthUD1hSi5kYXRhcG9pbnRzLnBvaW50c2l6
ZTthVD1hSi5kYXRhcG9pbnRzLnBvaW50cztpbnNlcnRTdGVwcz1hSi5saW5lcy5zaG93JiZhSi5s
aW5lcy5zdGVwczthSi54YXhpcy51c2VkPWFKLnlheGlzLnVzZWQ9dHJ1ZTtmb3IoYVM9YVI9MDth
UzxhWi5sZW5ndGg7KythUyxhUis9YVApe2FMPWFaW2FTXTt2YXIgYUU9YUw9PW51bGw7aWYoIWFF
KXtmb3IoYU49MDthTjxhUDsrK2FOKXthMD1hTFthTl07YVg9YVdbYU5dO2lmKGFYKXtpZihhWC5u
dW1iZXImJmEwIT1udWxsKXthMD0rYTA7aWYoaXNOYU4oYTApKXthMD1udWxsfWVsc2V7aWYoYTA9
PUluZmluaXR5KXthMD1hQn1lbHNle2lmKGEwPT0tSW5maW5pdHkpe2EwPS1hQn19fX1pZihhMD09
bnVsbCl7aWYoYVgucmVxdWlyZWQpe2FFPXRydWV9aWYoYVguZGVmYXVsdFZhbHVlIT1udWxsKXth
MD1hWC5kZWZhdWx0VmFsdWV9fX1hVFthUithTl09YTB9fWlmKGFFKXtmb3IoYU49MDthTjxhUDsr
K2FOKXthMD1hVFthUithTl07aWYoYTAhPW51bGwpe2FYPWFXW2FOXTtpZihhWC54KXthRihhSi54
YXhpcyxhMCxhMCl9aWYoYVgueSl7YUYoYUoueWF4aXMsYTAsYTApfX1hVFthUithTl09bnVsbH19
ZWxzZXtpZihpbnNlcnRTdGVwcyYmYVI+MCYmYVRbYVItYVBdIT1udWxsJiZhVFthUi1hUF0hPWFU
W2FSXSYmYVRbYVItYVArMV0hPWFUW2FSKzFdKXtmb3IoYU49MDthTjxhUDsrK2FOKXthVFthUith
UCthTl09YVRbYVIrYU5dfWFUW2FSKzFdPWFUW2FSLWFQKzFdO2FSKz1hUH19fX1mb3IoYVU9MDth
VTxRLmxlbmd0aDsrK2FVKXthSj1RW2FVXTthbihhay5wcm9jZXNzRGF0YXBvaW50cyxbYUosYUou
ZGF0YXBvaW50c10pfWZvcihhVT0wO2FVPFEubGVuZ3RoOysrYVUpe2FKPVFbYVVdO2FUPWFKLmRh
dGFwb2ludHMucG9pbnRzLGFQPWFKLmRhdGFwb2ludHMucG9pbnRzaXplO3ZhciBhSz1hTyxhUT1h
TyxhTT1hSSxhVj1hSTtmb3IoYVM9MDthUzxhVC5sZW5ndGg7YVMrPWFQKXtpZihhVFthU109PW51
bGwpe2NvbnRpbnVlfWZvcihhTj0wO2FOPGFQOysrYU4pe2EwPWFUW2FTK2FOXTthWD1hV1thTl07
aWYoIWFYfHxhMD09YUJ8fGEwPT0tYUIpe2NvbnRpbnVlfWlmKGFYLngpe2lmKGEwPGFLKXthSz1h
MH1pZihhMD5hTSl7YU09YTB9fWlmKGFYLnkpe2lmKGEwPGFRKXthUT1hMH1pZihhMD5hVil7YVY9
YTB9fX19aWYoYUouYmFycy5zaG93KXt2YXIgYVk9YUouYmFycy5hbGlnbj09ImxlZnQiPzA6LWFK
LmJhcnMuYmFyV2lkdGgvMjtpZihhSi5iYXJzLmhvcml6b250YWwpe2FRKz1hWTthVis9YVkrYUou
YmFycy5iYXJXaWR0aH1lbHNle2FLKz1hWTthTSs9YVkrYUouYmFycy5iYXJXaWR0aH19YUYoYUou
eGF4aXMsYUssYU0pO2FGKGFKLnlheGlzLGFRLGFWKX1jLmVhY2gobSgpLGZ1bmN0aW9uKGExLGEy
KXtpZihhMi5kYXRhbWluPT1hTyl7YTIuZGF0YW1pbj1udWxsfWlmKGEyLmRhdGFtYXg9PWFJKXth
Mi5kYXRhbWF4PW51bGx9fSl9ZnVuY3Rpb24gaihhQixhQyl7dmFyIGFEPWRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNhbnZhcyIpO2FELmNsYXNzTmFtZT1hQzthRC53aWR0aD1HO2FELmhlaWdodD1J
O2lmKCFhQil7YyhhRCkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6MCx0b3A6MH0pfWMo
YUQpLmFwcGVuZFRvKGF2KTtpZighYUQuZ2V0Q29udGV4dCl7YUQ9d2luZG93Lkdfdm1sQ2FudmFz
TWFuYWdlci5pbml0RWxlbWVudChhRCl9YUQuZ2V0Q29udGV4dCgiMmQiKS5zYXZlKCk7cmV0dXJu
IGFEfWZ1bmN0aW9uIEIoKXtHPWF2LndpZHRoKCk7ST1hdi5oZWlnaHQoKTtpZihHPD0wfHxJPD0w
KXt0aHJvdyJJbnZhbGlkIGRpbWVuc2lvbnMgZm9yIHBsb3QsIHdpZHRoID0gIitHKyIsIGhlaWdo
dCA9ICIrSX19ZnVuY3Rpb24gZyhhQyl7aWYoYUMud2lkdGghPUcpe2FDLndpZHRoPUd9aWYoYUMu
aGVpZ2h0IT1JKXthQy5oZWlnaHQ9SX12YXIgYUI9YUMuZ2V0Q29udGV4dCgiMmQiKTthQi5yZXN0
b3JlKCk7YUIuc2F2ZSgpfWZ1bmN0aW9uIFgoKXt2YXIgYUMsYUI9YXYuY2hpbGRyZW4oImNhbnZh
cy5iYXNlIiksYUQ9YXYuY2hpbGRyZW4oImNhbnZhcy5vdmVybGF5Iik7aWYoYUIubGVuZ3RoPT0w
fHxhRD09MCl7YXYuaHRtbCgiIik7YXYuY3NzKHtwYWRkaW5nOjB9KTtpZihhdi5jc3MoInBvc2l0
aW9uIik9PSJzdGF0aWMiKXthdi5jc3MoInBvc2l0aW9uIiwicmVsYXRpdmUiKX1CKCk7YXo9aih0
cnVlLCJiYXNlIik7YWQ9aihmYWxzZSwib3ZlcmxheSIpO2FDPWZhbHNlfWVsc2V7YXo9YUIuZ2V0
KDApO2FkPWFELmdldCgwKTthQz10cnVlfUg9YXouZ2V0Q29udGV4dCgiMmQiKTtBPWFkLmdldENv
bnRleHQoIjJkIik7eT1jKFthZCxhel0pO2lmKGFDKXthdi5kYXRhKCJwbG90Iikuc2h1dGRvd24o
KTthcS5yZXNpemUoKTtBLmNsZWFyUmVjdCgwLDAsRyxJKTt5LnVuYmluZCgpO2F2LmNoaWxkcmVu
KCkubm90KFtheixhZF0pLnJlbW92ZSgpfWF2LmRhdGEoInBsb3QiLGFxKX1mdW5jdGlvbiBhaCgp
e2lmKE8uZ3JpZC5ob3ZlcmFibGUpe3kubW91c2Vtb3ZlKGFhKTt5Lm1vdXNlbGVhdmUobCl9aWYo
Ty5ncmlkLmNsaWNrYWJsZSl7eS5jbGljayhSKX1hbihhay5iaW5kRXZlbnRzLFt5XSl9ZnVuY3Rp
b24gYWcoKXtpZihNKXtjbGVhclRpbWVvdXQoTSl9eS51bmJpbmQoIm1vdXNlbW92ZSIsYWEpO3ku
dW5iaW5kKCJtb3VzZWxlYXZlIixsKTt5LnVuYmluZCgiY2xpY2siLFIpO2FuKGFrLnNodXRkb3du
LFt5XSl9ZnVuY3Rpb24gcihhRyl7ZnVuY3Rpb24gYUMoYUgpe3JldHVybiBhSH12YXIgYUYsYUIs
YUQ9YUcub3B0aW9ucy50cmFuc2Zvcm18fGFDLGFFPWFHLm9wdGlvbnMuaW52ZXJzZVRyYW5zZm9y
bTtpZihhRy5kaXJlY3Rpb249PSJ4Iil7YUY9YUcuc2NhbGU9aC9NYXRoLmFicyhhRChhRy5tYXgp
LWFEKGFHLm1pbikpO2FCPU1hdGgubWluKGFEKGFHLm1heCksYUQoYUcubWluKSl9ZWxzZXthRj1h
Ry5zY2FsZT13L01hdGguYWJzKGFEKGFHLm1heCktYUQoYUcubWluKSk7YUY9LWFGO2FCPU1hdGgu
bWF4KGFEKGFHLm1heCksYUQoYUcubWluKSl9aWYoYUQ9PWFDKXthRy5wMmM9ZnVuY3Rpb24oYUgp
e3JldHVybihhSC1hQikqYUZ9fWVsc2V7YUcucDJjPWZ1bmN0aW9uKGFIKXtyZXR1cm4oYUQoYUgp
LWFCKSphRn19aWYoIWFFKXthRy5jMnA9ZnVuY3Rpb24oYUgpe3JldHVybiBhQithSC9hRn19ZWxz
ZXthRy5jMnA9ZnVuY3Rpb24oYUgpe3JldHVybiBhRShhQithSC9hRil9fX1mdW5jdGlvbiBMKGFE
KXt2YXIgYUI9YUQub3B0aW9ucyxhRixhSj1hRC50aWNrc3x8W10sYUk9W10sYUUsYUs9YUIubGFi
ZWxXaWR0aCxhRz1hQi5sYWJlbEhlaWdodCxhQztmdW5jdGlvbiBhSChhTSxhTCl7cmV0dXJuIGMo
JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDotMTAwMDBweDsnK2FMKydmb250LXNp
emU6c21hbGxlciI+PGRpdiBjbGFzcz0iJythRC5kaXJlY3Rpb24rIkF4aXMgIithRC5kaXJlY3Rp
b24rYUQubisnQXhpcyI+JythTS5qb2luKCIiKSsiPC9kaXY+PC9kaXY+IikuYXBwZW5kVG8oYXYp
fWlmKGFELmRpcmVjdGlvbj09IngiKXtpZihhSz09bnVsbCl7YUs9TWF0aC5mbG9vcihHLyhhSi5s
ZW5ndGg+MD9hSi5sZW5ndGg6MSkpfWlmKGFHPT1udWxsKXthST1bXTtmb3IoYUY9MDthRjxhSi5s
ZW5ndGg7KythRil7YUU9YUpbYUZdLmxhYmVsO2lmKGFFKXthSS5wdXNoKCc8ZGl2IGNsYXNzPSJ0
aWNrTGFiZWwiIHN0eWxlPSJmbG9hdDpsZWZ0O3dpZHRoOicrYUsrJ3B4Ij4nK2FFKyI8L2Rpdj4i
KX19aWYoYUkubGVuZ3RoPjApe2FJLnB1c2goJzxkaXYgc3R5bGU9ImNsZWFyOmxlZnQiPjwvZGl2
PicpO2FDPWFIKGFJLCJ3aWR0aDoxMDAwMHB4OyIpO2FHPWFDLmhlaWdodCgpO2FDLnJlbW92ZSgp
fX19ZWxzZXtpZihhSz09bnVsbHx8YUc9PW51bGwpe2ZvcihhRj0wO2FGPGFKLmxlbmd0aDsrK2FG
KXthRT1hSlthRl0ubGFiZWw7aWYoYUUpe2FJLnB1c2goJzxkaXYgY2xhc3M9InRpY2tMYWJlbCI+
JythRSsiPC9kaXY+Iil9fWlmKGFJLmxlbmd0aD4wKXthQz1hSChhSSwiIik7aWYoYUs9PW51bGwp
e2FLPWFDLmNoaWxkcmVuKCkud2lkdGgoKX1pZihhRz09bnVsbCl7YUc9YUMuZmluZCgiZGl2LnRp
Y2tMYWJlbCIpLmhlaWdodCgpfWFDLnJlbW92ZSgpfX19aWYoYUs9PW51bGwpe2FLPTB9aWYoYUc9
PW51bGwpe2FHPTB9YUQubGFiZWxXaWR0aD1hSzthRC5sYWJlbEhlaWdodD1hR31mdW5jdGlvbiBh
dShhRCl7dmFyIGFDPWFELmxhYmVsV2lkdGgsYUw9YUQubGFiZWxIZWlnaHQsYUg9YUQub3B0aW9u
cy5wb3NpdGlvbixhRj1hRC5vcHRpb25zLnRpY2tMZW5ndGgsYUc9Ty5ncmlkLmF4aXNNYXJnaW4s
YUo9Ty5ncmlkLmxhYmVsTWFyZ2luLGFLPWFELmRpcmVjdGlvbj09IngiP3A6YXcsYUU7dmFyIGFC
PWMuZ3JlcChhSyxmdW5jdGlvbihhTil7cmV0dXJuIGFOJiZhTi5vcHRpb25zLnBvc2l0aW9uPT1h
SCYmYU4ucmVzZXJ2ZVNwYWNlfSk7aWYoYy5pbkFycmF5KGFELGFCKT09YUIubGVuZ3RoLTEpe2FH
PTB9aWYoYUY9PW51bGwpe2FGPSJmdWxsIn12YXIgYUk9Yy5ncmVwKGFLLGZ1bmN0aW9uKGFOKXty
ZXR1cm4gYU4mJmFOLnJlc2VydmVTcGFjZX0pO3ZhciBhTT1jLmluQXJyYXkoYUQsYUkpPT0wO2lm
KCFhTSYmYUY9PSJmdWxsIil7YUY9NX1pZighaXNOYU4oK2FGKSl7YUorPSthRn1pZihhRC5kaXJl
Y3Rpb249PSJ4Iil7YUwrPWFKO2lmKGFIPT0iYm90dG9tIil7cS5ib3R0b20rPWFMK2FHO2FELmJv
eD17dG9wOkktcS5ib3R0b20saGVpZ2h0OmFMfX1lbHNle2FELmJveD17dG9wOnEudG9wK2FHLGhl
aWdodDphTH07cS50b3ArPWFMK2FHfX1lbHNle2FDKz1hSjtpZihhSD09ImxlZnQiKXthRC5ib3g9
e2xlZnQ6cS5sZWZ0K2FHLHdpZHRoOmFDfTtxLmxlZnQrPWFDK2FHfWVsc2V7cS5yaWdodCs9YUMr
YUc7YUQuYm94PXtsZWZ0OkctcS5yaWdodCx3aWR0aDphQ319fWFELnBvc2l0aW9uPWFIO2FELnRp
Y2tMZW5ndGg9YUY7YUQuYm94LnBhZGRpbmc9YUo7YUQuaW5uZXJtb3N0PWFNfWZ1bmN0aW9uIFUo
YUIpe2lmKGFCLmRpcmVjdGlvbj09IngiKXthQi5ib3gubGVmdD1xLmxlZnQ7YUIuYm94LndpZHRo
PWh9ZWxzZXthQi5ib3gudG9wPXEudG9wO2FCLmJveC5oZWlnaHQ9d319ZnVuY3Rpb24gdCgpe3Zh
ciBhQyxhRT1tKCk7Yy5lYWNoKGFFLGZ1bmN0aW9uKGFGLGFHKXthRy5zaG93PWFHLm9wdGlvbnMu
c2hvdztpZihhRy5zaG93PT1udWxsKXthRy5zaG93PWFHLnVzZWR9YUcucmVzZXJ2ZVNwYWNlPWFH
LnNob3d8fGFHLm9wdGlvbnMucmVzZXJ2ZVNwYWNlO24oYUcpfSk7YWxsb2NhdGVkQXhlcz1jLmdy
ZXAoYUUsZnVuY3Rpb24oYUYpe3JldHVybiBhRi5yZXNlcnZlU3BhY2V9KTtxLmxlZnQ9cS5yaWdo
dD1xLnRvcD1xLmJvdHRvbT0wO2lmKE8uZ3JpZC5zaG93KXtjLmVhY2goYWxsb2NhdGVkQXhlcyxm
dW5jdGlvbihhRixhRyl7UyhhRyk7UChhRyk7YXAoYUcsYUcudGlja3MpO0woYUcpfSk7Zm9yKGFD
PWFsbG9jYXRlZEF4ZXMubGVuZ3RoLTE7YUM+PTA7LS1hQyl7YXUoYWxsb2NhdGVkQXhlc1thQ10p
fXZhciBhRD1PLmdyaWQubWluQm9yZGVyTWFyZ2luO2lmKGFEPT1udWxsKXthRD0wO2ZvcihhQz0w
O2FDPFEubGVuZ3RoOysrYUMpe2FEPU1hdGgubWF4KGFELFFbYUNdLnBvaW50cy5yYWRpdXMrUVth
Q10ucG9pbnRzLmxpbmVXaWR0aC8yKX19Zm9yKHZhciBhQiBpbiBxKXtxW2FCXSs9Ty5ncmlkLmJv
cmRlcldpZHRoO3FbYUJdPU1hdGgubWF4KGFELHFbYUJdKX19aD1HLXEubGVmdC1xLnJpZ2h0O3c9
SS1xLmJvdHRvbS1xLnRvcDtjLmVhY2goYUUsZnVuY3Rpb24oYUYsYUcpe3IoYUcpfSk7aWYoTy5n
cmlkLnNob3cpe2MuZWFjaChhbGxvY2F0ZWRBeGVzLGZ1bmN0aW9uKGFGLGFHKXtVKGFHKX0pO2so
KX1vKCl9ZnVuY3Rpb24gbihhRSl7dmFyIGFGPWFFLm9wdGlvbnMsYUQ9KyhhRi5taW4hPW51bGw/
YUYubWluOmFFLmRhdGFtaW4pLGFCPSsoYUYubWF4IT1udWxsP2FGLm1heDphRS5kYXRhbWF4KSxh
SD1hQi1hRDtpZihhSD09MCl7dmFyIGFDPWFCPT0wPzE6MC4wMTtpZihhRi5taW49PW51bGwpe2FE
LT1hQ31pZihhRi5tYXg9PW51bGx8fGFGLm1pbiE9bnVsbCl7YUIrPWFDfX1lbHNle3ZhciBhRz1h
Ri5hdXRvc2NhbGVNYXJnaW47aWYoYUchPW51bGwpe2lmKGFGLm1pbj09bnVsbCl7YUQtPWFIKmFH
O2lmKGFEPDAmJmFFLmRhdGFtaW4hPW51bGwmJmFFLmRhdGFtaW4+PTApe2FEPTB9fWlmKGFGLm1h
eD09bnVsbCl7YUIrPWFIKmFHO2lmKGFCPjAmJmFFLmRhdGFtYXghPW51bGwmJmFFLmRhdGFtYXg8
PTApe2FCPTB9fX19YUUubWluPWFEO2FFLm1heD1hQn1mdW5jdGlvbiBTKGFHKXt2YXIgYU09YUcu
b3B0aW9uczt2YXIgYUg7aWYodHlwZW9mIGFNLnRpY2tzPT0ibnVtYmVyIiYmYU0udGlja3M+MCl7
YUg9YU0udGlja3N9ZWxzZXthSD0wLjMqTWF0aC5zcXJ0KGFHLmRpcmVjdGlvbj09IngiP0c6SSl9
dmFyIGFUPShhRy5tYXgtYUcubWluKS9hSCxhTyxhQixhTixhUixhUyxhUSxhSTtpZihhTS5tb2Rl
PT0idGltZSIpe3ZhciBhSj17c2Vjb25kOjEwMDAsbWludXRlOjYwKjEwMDAsaG91cjo2MCo2MCox
MDAwLGRheToyNCo2MCo2MCoxMDAwLG1vbnRoOjMwKjI0KjYwKjYwKjEwMDAseWVhcjozNjUuMjQy
NSoyNCo2MCo2MCoxMDAwfTt2YXIgYUs9W1sxLCJzZWNvbmQiXSxbMiwic2Vjb25kIl0sWzUsInNl
Y29uZCJdLFsxMCwic2Vjb25kIl0sWzMwLCJzZWNvbmQiXSxbMSwibWludXRlIl0sWzIsIm1pbnV0
ZSJdLFs1LCJtaW51dGUiXSxbMTAsIm1pbnV0ZSJdLFszMCwibWludXRlIl0sWzEsImhvdXIiXSxb
MiwiaG91ciJdLFs0LCJob3VyIl0sWzgsImhvdXIiXSxbMTIsImhvdXIiXSxbMSwiZGF5Il0sWzIs
ImRheSJdLFszLCJkYXkiXSxbMC4yNSwibW9udGgiXSxbMC41LCJtb250aCJdLFsxLCJtb250aCJd
LFsyLCJtb250aCJdLFszLCJtb250aCJdLFs2LCJtb250aCJdLFsxLCJ5ZWFyIl1dO3ZhciBhQz0w
O2lmKGFNLm1pblRpY2tTaXplIT1udWxsKXtpZih0eXBlb2YgYU0udGlja1NpemU9PSJudW1iZXIi
KXthQz1hTS50aWNrU2l6ZX1lbHNle2FDPWFNLm1pblRpY2tTaXplWzBdKmFKW2FNLm1pblRpY2tT
aXplWzFdXX19Zm9yKHZhciBhUz0wO2FTPGFLLmxlbmd0aC0xOysrYVMpe2lmKGFUPChhS1thU11b
MF0qYUpbYUtbYVNdWzFdXSthS1thUysxXVswXSphSlthS1thUysxXVsxXV0pLzImJmFLW2FTXVsw
XSphSlthS1thU11bMV1dPj1hQyl7YnJlYWt9fWFPPWFLW2FTXVswXTthTj1hS1thU11bMV07aWYo
YU49PSJ5ZWFyIil7YVE9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhhVC9hSi55ZWFy
KS9NYXRoLkxOMTApKTthST0oYVQvYUoueWVhcikvYVE7aWYoYUk8MS41KXthTz0xfWVsc2V7aWYo
YUk8Myl7YU89Mn1lbHNle2lmKGFJPDcuNSl7YU89NX1lbHNle2FPPTEwfX19YU8qPWFRfWFHLnRp
Y2tTaXplPWFNLnRpY2tTaXplfHxbYU8sYU5dO2FCPWZ1bmN0aW9uKGFYKXt2YXIgYTI9W10sYTA9
YVgudGlja1NpemVbMF0sYTM9YVgudGlja1NpemVbMV0sYTE9bmV3IERhdGUoYVgubWluKTt2YXIg
YVc9YTAqYUpbYTNdO2lmKGEzPT0ic2Vjb25kIil7YTEuc2V0VVRDU2Vjb25kcyhhKGExLmdldFVU
Q1NlY29uZHMoKSxhMCkpfWlmKGEzPT0ibWludXRlIil7YTEuc2V0VVRDTWludXRlcyhhKGExLmdl
dFVUQ01pbnV0ZXMoKSxhMCkpfWlmKGEzPT0iaG91ciIpe2ExLnNldFVUQ0hvdXJzKGEoYTEuZ2V0
VVRDSG91cnMoKSxhMCkpfWlmKGEzPT0ibW9udGgiKXthMS5zZXRVVENNb250aChhKGExLmdldFVU
Q01vbnRoKCksYTApKX1pZihhMz09InllYXIiKXthMS5zZXRVVENGdWxsWWVhcihhKGExLmdldFVU
Q0Z1bGxZZWFyKCksYTApKX1hMS5zZXRVVENNaWxsaXNlY29uZHMoMCk7aWYoYVc+PWFKLm1pbnV0
ZSl7YTEuc2V0VVRDU2Vjb25kcygwKX1pZihhVz49YUouaG91cil7YTEuc2V0VVRDTWludXRlcygw
KX1pZihhVz49YUouZGF5KXthMS5zZXRVVENIb3VycygwKX1pZihhVz49YUouZGF5KjQpe2ExLnNl
dFVUQ0RhdGUoMSl9aWYoYVc+PWFKLnllYXIpe2ExLnNldFVUQ01vbnRoKDApfXZhciBhNT0wLGE0
PU51bWJlci5OYU4sYVk7ZG97YVk9YTQ7YTQ9YTEuZ2V0VGltZSgpO2EyLnB1c2goYTQpO2lmKGEz
PT0ibW9udGgiKXtpZihhMDwxKXthMS5zZXRVVENEYXRlKDEpO3ZhciBhVj1hMS5nZXRUaW1lKCk7
YTEuc2V0VVRDTW9udGgoYTEuZ2V0VVRDTW9udGgoKSsxKTt2YXIgYVo9YTEuZ2V0VGltZSgpO2Ex
LnNldFRpbWUoYTQrYTUqYUouaG91cisoYVotYVYpKmEwKTthNT1hMS5nZXRVVENIb3VycygpO2Ex
LnNldFVUQ0hvdXJzKDApfWVsc2V7YTEuc2V0VVRDTW9udGgoYTEuZ2V0VVRDTW9udGgoKSthMCl9
fWVsc2V7aWYoYTM9PSJ5ZWFyIil7YTEuc2V0VVRDRnVsbFllYXIoYTEuZ2V0VVRDRnVsbFllYXIo
KSthMCl9ZWxzZXthMS5zZXRUaW1lKGE0K2FXKX19fXdoaWxlKGE0PGFYLm1heCYmYTQhPWFZKTty
ZXR1cm4gYTJ9O2FSPWZ1bmN0aW9uKGFWLGFZKXt2YXIgYTA9bmV3IERhdGUoYVYpO2lmKGFNLnRp
bWVmb3JtYXQhPW51bGwpe3JldHVybiBjLnBsb3QuZm9ybWF0RGF0ZShhMCxhTS50aW1lZm9ybWF0
LGFNLm1vbnRoTmFtZXMpfXZhciBhVz1hWS50aWNrU2l6ZVswXSphSlthWS50aWNrU2l6ZVsxXV07
dmFyIGFYPWFZLm1heC1hWS5taW47dmFyIGFaPShhTS50d2VsdmVIb3VyQ2xvY2spPyIgJXAiOiIi
O2lmKGFXPGFKLm1pbnV0ZSl7Zm10PSIlaDolTTolUyIrYVp9ZWxzZXtpZihhVzxhSi5kYXkpe2lm
KGFYPDIqYUouZGF5KXtmbXQ9IiVoOiVNIithWn1lbHNle2ZtdD0iJWIgJWQgJWg6JU0iK2FafX1l
bHNle2lmKGFXPGFKLm1vbnRoKXtmbXQ9IiViICVkIn1lbHNle2lmKGFXPGFKLnllYXIpe2lmKGFY
PGFKLnllYXIpe2ZtdD0iJWIifWVsc2V7Zm10PSIlYiAleSJ9fWVsc2V7Zm10PSIleSJ9fX19cmV0
dXJuIGMucGxvdC5mb3JtYXREYXRlKGEwLGZtdCxhTS5tb250aE5hbWVzKX19ZWxzZXt2YXIgYVU9
YU0udGlja0RlY2ltYWxzO3ZhciBhUD0tTWF0aC5mbG9vcihNYXRoLmxvZyhhVCkvTWF0aC5MTjEw
KTtpZihhVSE9bnVsbCYmYVA+YVUpe2FQPWFVfWFRPU1hdGgucG93KDEwLC1hUCk7YUk9YVQvYVE7
aWYoYUk8MS41KXthTz0xfWVsc2V7aWYoYUk8Myl7YU89MjtpZihhST4yLjI1JiYoYVU9PW51bGx8
fGFQKzE8PWFVKSl7YU89Mi41OysrYVB9fWVsc2V7aWYoYUk8Ny41KXthTz01fWVsc2V7YU89MTB9
fX1hTyo9YVE7aWYoYU0ubWluVGlja1NpemUhPW51bGwmJmFPPGFNLm1pblRpY2tTaXplKXthTz1h
TS5taW5UaWNrU2l6ZX1hRy50aWNrRGVjaW1hbHM9TWF0aC5tYXgoMCxhVSE9bnVsbD9hVTphUCk7
YUcudGlja1NpemU9YU0udGlja1NpemV8fGFPO2FCPWZ1bmN0aW9uKGFYKXt2YXIgYVo9W107dmFy
IGEwPWEoYVgubWluLGFYLnRpY2tTaXplKSxhVz0wLGFWPU51bWJlci5OYU4sYVk7ZG97YVk9YVY7
YVY9YTArYVcqYVgudGlja1NpemU7YVoucHVzaChhVik7KythV313aGlsZShhVjxhWC5tYXgmJmFW
IT1hWSk7cmV0dXJuIGFafTthUj1mdW5jdGlvbihhVixhVyl7cmV0dXJuIGFWLnRvRml4ZWQoYVcu
dGlja0RlY2ltYWxzKX19aWYoYU0uYWxpZ25UaWNrc1dpdGhBeGlzIT1udWxsKXt2YXIgYUY9KGFH
LmRpcmVjdGlvbj09IngiP3A6YXcpW2FNLmFsaWduVGlja3NXaXRoQXhpcy0xXTtpZihhRiYmYUYu
dXNlZCYmYUYhPWFHKXt2YXIgYUw9YUIoYUcpO2lmKGFMLmxlbmd0aD4wKXtpZihhTS5taW49PW51
bGwpe2FHLm1pbj1NYXRoLm1pbihhRy5taW4sYUxbMF0pfWlmKGFNLm1heD09bnVsbCYmYUwubGVu
Z3RoPjEpe2FHLm1heD1NYXRoLm1heChhRy5tYXgsYUxbYUwubGVuZ3RoLTFdKX19YUI9ZnVuY3Rp
b24oYVgpe3ZhciBhWT1bXSxhVixhVztmb3IoYVc9MDthVzxhRi50aWNrcy5sZW5ndGg7KythVyl7
YVY9KGFGLnRpY2tzW2FXXS52LWFGLm1pbikvKGFGLm1heC1hRi5taW4pO2FWPWFYLm1pbithVioo
YVgubWF4LWFYLm1pbik7YVkucHVzaChhVil9cmV0dXJuIGFZfTtpZihhRy5tb2RlIT0idGltZSIm
JmFNLnRpY2tEZWNpbWFscz09bnVsbCl7dmFyIGFFPU1hdGgubWF4KDAsLU1hdGguZmxvb3IoTWF0
aC5sb2coYVQpL01hdGguTE4xMCkrMSksYUQ9YUIoYUcpO2lmKCEoYUQubGVuZ3RoPjEmJi9cLi4q
MCQvLnRlc3QoKGFEWzFdLWFEWzBdKS50b0ZpeGVkKGFFKSkpKXthRy50aWNrRGVjaW1hbHM9YUV9
fX19YUcudGlja0dlbmVyYXRvcj1hQjtpZihjLmlzRnVuY3Rpb24oYU0udGlja0Zvcm1hdHRlcikp
e2FHLnRpY2tGb3JtYXR0ZXI9ZnVuY3Rpb24oYVYsYVcpe3JldHVybiIiK2FNLnRpY2tGb3JtYXR0
ZXIoYVYsYVcpfX1lbHNle2FHLnRpY2tGb3JtYXR0ZXI9YVJ9fWZ1bmN0aW9uIFAoYUYpe3ZhciBh
SD1hRi5vcHRpb25zLnRpY2tzLGFHPVtdO2lmKGFIPT1udWxsfHwodHlwZW9mIGFIPT0ibnVtYmVy
IiYmYUg+MCkpe2FHPWFGLnRpY2tHZW5lcmF0b3IoYUYpfWVsc2V7aWYoYUgpe2lmKGMuaXNGdW5j
dGlvbihhSCkpe2FHPWFIKHttaW46YUYubWluLG1heDphRi5tYXh9KX1lbHNle2FHPWFIfX19dmFy
IGFFLGFCO2FGLnRpY2tzPVtdO2ZvcihhRT0wO2FFPGFHLmxlbmd0aDsrK2FFKXt2YXIgYUM9bnVs
bDt2YXIgYUQ9YUdbYUVdO2lmKHR5cGVvZiBhRD09Im9iamVjdCIpe2FCPSthRFswXTtpZihhRC5s
ZW5ndGg+MSl7YUM9YURbMV19fWVsc2V7YUI9K2FEfWlmKGFDPT1udWxsKXthQz1hRi50aWNrRm9y
bWF0dGVyKGFCLGFGKX1pZighaXNOYU4oYUIpKXthRi50aWNrcy5wdXNoKHt2OmFCLGxhYmVsOmFD
fSl9fX1mdW5jdGlvbiBhcChhQixhQyl7aWYoYUIub3B0aW9ucy5hdXRvc2NhbGVNYXJnaW4mJmFD
Lmxlbmd0aD4wKXtpZihhQi5vcHRpb25zLm1pbj09bnVsbCl7YUIubWluPU1hdGgubWluKGFCLm1p
bixhQ1swXS52KX1pZihhQi5vcHRpb25zLm1heD09bnVsbCYmYUMubGVuZ3RoPjEpe2FCLm1heD1N
YXRoLm1heChhQi5tYXgsYUNbYUMubGVuZ3RoLTFdLnYpfX19ZnVuY3Rpb24gVygpe0guY2xlYXJS
ZWN0KDAsMCxHLEkpO3ZhciBhQz1PLmdyaWQ7aWYoYUMuc2hvdyYmYUMuYmFja2dyb3VuZENvbG9y
KXtOKCl9aWYoYUMuc2hvdyYmIWFDLmFib3ZlRGF0YSl7YWMoKX1mb3IodmFyIGFCPTA7YUI8US5s
ZW5ndGg7KythQil7YW4oYWsuZHJhd1NlcmllcyxbSCxRW2FCXV0pO2QoUVthQl0pfWFuKGFrLmRy
YXcsW0hdKTtpZihhQy5zaG93JiZhQy5hYm92ZURhdGEpe2FjKCl9fWZ1bmN0aW9uIEQoYUIsYUkp
e3ZhciBhRSxhSCxhRyxhRCxhRj1tKCk7Zm9yKGk9MDtpPGFGLmxlbmd0aDsrK2kpe2FFPWFGW2ld
O2lmKGFFLmRpcmVjdGlvbj09YUkpe2FEPWFJK2FFLm4rImF4aXMiO2lmKCFhQlthRF0mJmFFLm49
PTEpe2FEPWFJKyJheGlzIn1pZihhQlthRF0pe2FIPWFCW2FEXS5mcm9tO2FHPWFCW2FEXS50bzti
cmVha319fWlmKCFhQlthRF0pe2FFPWFJPT0ieCI/cFswXTphd1swXTthSD1hQlthSSsiMSJdO2FH
PWFCW2FJKyIyIl19aWYoYUghPW51bGwmJmFHIT1udWxsJiZhSD5hRyl7dmFyIGFDPWFIO2FIPWFH
O2FHPWFDfXJldHVybntmcm9tOmFILHRvOmFHLGF4aXM6YUV9fWZ1bmN0aW9uIE4oKXtILnNhdmUo
KTtILnRyYW5zbGF0ZShxLmxlZnQscS50b3ApO0guZmlsbFN0eWxlPWFtKE8uZ3JpZC5iYWNrZ3Jv
dW5kQ29sb3IsdywwLCJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIik7SC5maWxsUmVjdCgwLDAsaCx3
KTtILnJlc3RvcmUoKX1mdW5jdGlvbiBhYygpe3ZhciBhRjtILnNhdmUoKTtILnRyYW5zbGF0ZShx
LmxlZnQscS50b3ApO3ZhciBhSD1PLmdyaWQubWFya2luZ3M7aWYoYUgpe2lmKGMuaXNGdW5jdGlv
bihhSCkpe3ZhciBhSz1hcS5nZXRBeGVzKCk7YUsueG1pbj1hSy54YXhpcy5taW47YUsueG1heD1h
Sy54YXhpcy5tYXg7YUsueW1pbj1hSy55YXhpcy5taW47YUsueW1heD1hSy55YXhpcy5tYXg7YUg9
YUgoYUspfWZvcihhRj0wO2FGPGFILmxlbmd0aDsrK2FGKXt2YXIgYUQ9YUhbYUZdLGFDPUQoYUQs
IngiKSxhST1EKGFELCJ5Iik7aWYoYUMuZnJvbT09bnVsbCl7YUMuZnJvbT1hQy5heGlzLm1pbn1p
ZihhQy50bz09bnVsbCl7YUMudG89YUMuYXhpcy5tYXh9aWYoYUkuZnJvbT09bnVsbCl7YUkuZnJv
bT1hSS5heGlzLm1pbn1pZihhSS50bz09bnVsbCl7YUkudG89YUkuYXhpcy5tYXh9aWYoYUMudG88
YUMuYXhpcy5taW58fGFDLmZyb20+YUMuYXhpcy5tYXh8fGFJLnRvPGFJLmF4aXMubWlufHxhSS5m
cm9tPmFJLmF4aXMubWF4KXtjb250aW51ZX1hQy5mcm9tPU1hdGgubWF4KGFDLmZyb20sYUMuYXhp
cy5taW4pO2FDLnRvPU1hdGgubWluKGFDLnRvLGFDLmF4aXMubWF4KTthSS5mcm9tPU1hdGgubWF4
KGFJLmZyb20sYUkuYXhpcy5taW4pO2FJLnRvPU1hdGgubWluKGFJLnRvLGFJLmF4aXMubWF4KTtp
ZihhQy5mcm9tPT1hQy50byYmYUkuZnJvbT09YUkudG8pe2NvbnRpbnVlfWFDLmZyb209YUMuYXhp
cy5wMmMoYUMuZnJvbSk7YUMudG89YUMuYXhpcy5wMmMoYUMudG8pO2FJLmZyb209YUkuYXhpcy5w
MmMoYUkuZnJvbSk7YUkudG89YUkuYXhpcy5wMmMoYUkudG8pO2lmKGFDLmZyb209PWFDLnRvfHxh
SS5mcm9tPT1hSS50byl7SC5iZWdpblBhdGgoKTtILnN0cm9rZVN0eWxlPWFELmNvbG9yfHxPLmdy
aWQubWFya2luZ3NDb2xvcjtILmxpbmVXaWR0aD1hRC5saW5lV2lkdGh8fE8uZ3JpZC5tYXJraW5n
c0xpbmVXaWR0aDtILm1vdmVUbyhhQy5mcm9tLGFJLmZyb20pO0gubGluZVRvKGFDLnRvLGFJLnRv
KTtILnN0cm9rZSgpfWVsc2V7SC5maWxsU3R5bGU9YUQuY29sb3J8fE8uZ3JpZC5tYXJraW5nc0Nv
bG9yO0guZmlsbFJlY3QoYUMuZnJvbSxhSS50byxhQy50by1hQy5mcm9tLGFJLmZyb20tYUkudG8p
fX19dmFyIGFLPW0oKSxhTT1PLmdyaWQuYm9yZGVyV2lkdGg7Zm9yKHZhciBhRT0wO2FFPGFLLmxl
bmd0aDsrK2FFKXt2YXIgYUI9YUtbYUVdLGFHPWFCLmJveCxhUT1hQi50aWNrTGVuZ3RoLGFOLGFM
LGFQLGFKO2lmKCFhQi5zaG93fHxhQi50aWNrcy5sZW5ndGg9PTApe2NvbnRpbnVlfUguc3Ryb2tl
U3R5bGU9YUIub3B0aW9ucy50aWNrQ29sb3J8fGMuY29sb3IucGFyc2UoYUIub3B0aW9ucy5jb2xv
cikuc2NhbGUoImEiLDAuMjIpLnRvU3RyaW5nKCk7SC5saW5lV2lkdGg9MTtpZihhQi5kaXJlY3Rp
b249PSJ4Iil7YU49MDtpZihhUT09ImZ1bGwiKXthTD0oYUIucG9zaXRpb249PSJ0b3AiPzA6dyl9
ZWxzZXthTD1hRy50b3AtcS50b3ArKGFCLnBvc2l0aW9uPT0idG9wIj9hRy5oZWlnaHQ6MCl9fWVs
c2V7YUw9MDtpZihhUT09ImZ1bGwiKXthTj0oYUIucG9zaXRpb249PSJsZWZ0Ij8wOmgpfWVsc2V7
YU49YUcubGVmdC1xLmxlZnQrKGFCLnBvc2l0aW9uPT0ibGVmdCI/YUcud2lkdGg6MCl9fWlmKCFh
Qi5pbm5lcm1vc3Qpe0guYmVnaW5QYXRoKCk7YVA9YUo9MDtpZihhQi5kaXJlY3Rpb249PSJ4Iil7
YVA9aH1lbHNle2FKPXd9aWYoSC5saW5lV2lkdGg9PTEpe2FOPU1hdGguZmxvb3IoYU4pKzAuNTth
TD1NYXRoLmZsb29yKGFMKSswLjV9SC5tb3ZlVG8oYU4sYUwpO0gubGluZVRvKGFOK2FQLGFMK2FK
KTtILnN0cm9rZSgpfUguYmVnaW5QYXRoKCk7Zm9yKGFGPTA7YUY8YUIudGlja3MubGVuZ3RoOysr
YUYpe3ZhciBhTz1hQi50aWNrc1thRl0udjthUD1hSj0wO2lmKGFPPGFCLm1pbnx8YU8+YUIubWF4
fHwoYVE9PSJmdWxsIiYmYU0+MCYmKGFPPT1hQi5taW58fGFPPT1hQi5tYXgpKSl7Y29udGludWV9
aWYoYUIuZGlyZWN0aW9uPT0ieCIpe2FOPWFCLnAyYyhhTyk7YUo9YVE9PSJmdWxsIj8tdzphUTtp
ZihhQi5wb3NpdGlvbj09InRvcCIpe2FKPS1hSn19ZWxzZXthTD1hQi5wMmMoYU8pO2FQPWFRPT0i
ZnVsbCI/LWg6YVE7aWYoYUIucG9zaXRpb249PSJsZWZ0Iil7YVA9LWFQfX1pZihILmxpbmVXaWR0
aD09MSl7aWYoYUIuZGlyZWN0aW9uPT0ieCIpe2FOPU1hdGguZmxvb3IoYU4pKzAuNX1lbHNle2FM
PU1hdGguZmxvb3IoYUwpKzAuNX19SC5tb3ZlVG8oYU4sYUwpO0gubGluZVRvKGFOK2FQLGFMK2FK
KX1ILnN0cm9rZSgpfWlmKGFNKXtILmxpbmVXaWR0aD1hTTtILnN0cm9rZVN0eWxlPU8uZ3JpZC5i
b3JkZXJDb2xvcjtILnN0cm9rZVJlY3QoLWFNLzIsLWFNLzIsaCthTSx3K2FNKX1ILnJlc3RvcmUo
KX1mdW5jdGlvbiBrKCl7YXYuZmluZCgiLnRpY2tMYWJlbHMiKS5yZW1vdmUoKTt2YXIgYUc9Wyc8
ZGl2IGNsYXNzPSJ0aWNrTGFiZWxzIiBzdHlsZT0iZm9udC1zaXplOnNtYWxsZXIiPiddO3ZhciBh
Sj1tKCk7Zm9yKHZhciBhRD0wO2FEPGFKLmxlbmd0aDsrK2FEKXt2YXIgYUM9YUpbYURdLGFGPWFD
LmJveDtpZighYUMuc2hvdyl7Y29udGludWV9YUcucHVzaCgnPGRpdiBjbGFzcz0iJythQy5kaXJl
Y3Rpb24rIkF4aXMgIithQy5kaXJlY3Rpb24rYUMubisnQXhpcyIgc3R5bGU9ImNvbG9yOicrYUMu
b3B0aW9ucy5jb2xvcisnIj4nKTtmb3IodmFyIGFFPTA7YUU8YUMudGlja3MubGVuZ3RoOysrYUUp
e3ZhciBhSD1hQy50aWNrc1thRV07aWYoIWFILmxhYmVsfHxhSC52PGFDLm1pbnx8YUgudj5hQy5t
YXgpe2NvbnRpbnVlfXZhciBhSz17fSxhSTtpZihhQy5kaXJlY3Rpb249PSJ4Iil7YUk9ImNlbnRl
ciI7YUsubGVmdD1NYXRoLnJvdW5kKHEubGVmdCthQy5wMmMoYUgudiktYUMubGFiZWxXaWR0aC8y
KTtpZihhQy5wb3NpdGlvbj09ImJvdHRvbSIpe2FLLnRvcD1hRi50b3ArYUYucGFkZGluZ31lbHNl
e2FLLmJvdHRvbT1JLShhRi50b3ArYUYuaGVpZ2h0LWFGLnBhZGRpbmcpfX1lbHNle2FLLnRvcD1N
YXRoLnJvdW5kKHEudG9wK2FDLnAyYyhhSC52KS1hQy5sYWJlbEhlaWdodC8yKTtpZihhQy5wb3Np
dGlvbj09ImxlZnQiKXthSy5yaWdodD1HLShhRi5sZWZ0K2FGLndpZHRoLWFGLnBhZGRpbmcpO2FJ
PSJyaWdodCJ9ZWxzZXthSy5sZWZ0PWFGLmxlZnQrYUYucGFkZGluZzthST0ibGVmdCJ9fWFLLndp
ZHRoPWFDLmxhYmVsV2lkdGg7dmFyIGFCPVsicG9zaXRpb246YWJzb2x1dGUiLCJ0ZXh0LWFsaWdu
OiIrYUldO2Zvcih2YXIgYUwgaW4gYUspe2FCLnB1c2goYUwrIjoiK2FLW2FMXSsicHgiKX1hRy5w
dXNoKCc8ZGl2IGNsYXNzPSJ0aWNrTGFiZWwiIHN0eWxlPSInK2FCLmpvaW4oIjsiKSsnIj4nK2FI
LmxhYmVsKyI8L2Rpdj4iKX1hRy5wdXNoKCI8L2Rpdj4iKX1hRy5wdXNoKCI8L2Rpdj4iKTthdi5h
cHBlbmQoYUcuam9pbigiIikpfWZ1bmN0aW9uIGQoYUIpe2lmKGFCLmxpbmVzLnNob3cpe2F0KGFC
KX1pZihhQi5iYXJzLnNob3cpe2UoYUIpfWlmKGFCLnBvaW50cy5zaG93KXthbyhhQil9fWZ1bmN0
aW9uIGF0KGFFKXtmdW5jdGlvbiBhRChhUCxhUSxhSSxhVSxhVCl7dmFyIGFWPWFQLnBvaW50cyxh
Sj1hUC5wb2ludHNpemUsYU49bnVsbCxhTT1udWxsO0guYmVnaW5QYXRoKCk7Zm9yKHZhciBhTz1h
SjthTzxhVi5sZW5ndGg7YU8rPWFKKXt2YXIgYUw9YVZbYU8tYUpdLGFTPWFWW2FPLWFKKzFdLGFL
PWFWW2FPXSxhUj1hVlthTysxXTtpZihhTD09bnVsbHx8YUs9PW51bGwpe2NvbnRpbnVlfWlmKGFT
PD1hUiYmYVM8YVQubWluKXtpZihhUjxhVC5taW4pe2NvbnRpbnVlfWFMPShhVC5taW4tYVMpLyhh
Ui1hUykqKGFLLWFMKSthTDthUz1hVC5taW59ZWxzZXtpZihhUjw9YVMmJmFSPGFULm1pbil7aWYo
YVM8YVQubWluKXtjb250aW51ZX1hSz0oYVQubWluLWFTKS8oYVItYVMpKihhSy1hTCkrYUw7YVI9
YVQubWlufX1pZihhUz49YVImJmFTPmFULm1heCl7aWYoYVI+YVQubWF4KXtjb250aW51ZX1hTD0o
YVQubWF4LWFTKS8oYVItYVMpKihhSy1hTCkrYUw7YVM9YVQubWF4fWVsc2V7aWYoYVI+PWFTJiZh
Uj5hVC5tYXgpe2lmKGFTPmFULm1heCl7Y29udGludWV9YUs9KGFULm1heC1hUykvKGFSLWFTKSoo
YUstYUwpK2FMO2FSPWFULm1heH19aWYoYUw8PWFLJiZhTDxhVS5taW4pe2lmKGFLPGFVLm1pbil7
Y29udGludWV9YVM9KGFVLm1pbi1hTCkvKGFLLWFMKSooYVItYVMpK2FTO2FMPWFVLm1pbn1lbHNl
e2lmKGFLPD1hTCYmYUs8YVUubWluKXtpZihhTDxhVS5taW4pe2NvbnRpbnVlfWFSPShhVS5taW4t
YUwpLyhhSy1hTCkqKGFSLWFTKSthUzthSz1hVS5taW59fWlmKGFMPj1hSyYmYUw+YVUubWF4KXtp
ZihhSz5hVS5tYXgpe2NvbnRpbnVlfWFTPShhVS5tYXgtYUwpLyhhSy1hTCkqKGFSLWFTKSthUzth
TD1hVS5tYXh9ZWxzZXtpZihhSz49YUwmJmFLPmFVLm1heCl7aWYoYUw+YVUubWF4KXtjb250aW51
ZX1hUj0oYVUubWF4LWFMKS8oYUstYUwpKihhUi1hUykrYVM7YUs9YVUubWF4fX1pZihhTCE9YU58
fGFTIT1hTSl7SC5tb3ZlVG8oYVUucDJjKGFMKSthUSxhVC5wMmMoYVMpK2FJKX1hTj1hSzthTT1h
UjtILmxpbmVUbyhhVS5wMmMoYUspK2FRLGFULnAyYyhhUikrYUkpfUguc3Ryb2tlKCl9ZnVuY3Rp
b24gYUYoYUksYVEsYVApe3ZhciBhVz1hSS5wb2ludHMsYVY9YUkucG9pbnRzaXplLGFOPU1hdGgu
bWluKE1hdGgubWF4KDAsYVAubWluKSxhUC5tYXgpLGFYPTAsYVUsYVQ9ZmFsc2UsYU09MSxhTD0w
LGFSPTA7d2hpbGUodHJ1ZSl7aWYoYVY+MCYmYVg+YVcubGVuZ3RoK2FWKXticmVha31hWCs9YVY7
dmFyIGFaPWFXW2FYLWFWXSxhSz1hV1thWC1hVithTV0sYVk9YVdbYVhdLGFKPWFXW2FYK2FNXTtp
ZihhVCl7aWYoYVY+MCYmYVohPW51bGwmJmFZPT1udWxsKXthUj1hWDthVj0tYVY7YU09Mjtjb250
aW51ZX1pZihhVjwwJiZhWD09YUwrYVYpe0guZmlsbCgpO2FUPWZhbHNlO2FWPS1hVjthTT0xO2FY
PWFMPWFSK2FWO2NvbnRpbnVlfX1pZihhWj09bnVsbHx8YVk9PW51bGwpe2NvbnRpbnVlfWlmKGFa
PD1hWSYmYVo8YVEubWluKXtpZihhWTxhUS5taW4pe2NvbnRpbnVlfWFLPShhUS5taW4tYVopLyhh
WS1hWikqKGFKLWFLKSthSzthWj1hUS5taW59ZWxzZXtpZihhWTw9YVomJmFZPGFRLm1pbil7aWYo
YVo8YVEubWluKXtjb250aW51ZX1hSj0oYVEubWluLWFaKS8oYVktYVopKihhSi1hSykrYUs7YVk9
YVEubWlufX1pZihhWj49YVkmJmFaPmFRLm1heCl7aWYoYVk+YVEubWF4KXtjb250aW51ZX1hSz0o
YVEubWF4LWFaKS8oYVktYVopKihhSi1hSykrYUs7YVo9YVEubWF4fWVsc2V7aWYoYVk+PWFaJiZh
WT5hUS5tYXgpe2lmKGFaPmFRLm1heCl7Y29udGludWV9YUo9KGFRLm1heC1hWikvKGFZLWFaKSoo
YUotYUspK2FLO2FZPWFRLm1heH19aWYoIWFUKXtILmJlZ2luUGF0aCgpO0gubW92ZVRvKGFRLnAy
YyhhWiksYVAucDJjKGFOKSk7YVQ9dHJ1ZX1pZihhSz49YVAubWF4JiZhSj49YVAubWF4KXtILmxp
bmVUbyhhUS5wMmMoYVopLGFQLnAyYyhhUC5tYXgpKTtILmxpbmVUbyhhUS5wMmMoYVkpLGFQLnAy
YyhhUC5tYXgpKTtjb250aW51ZX1lbHNle2lmKGFLPD1hUC5taW4mJmFKPD1hUC5taW4pe0gubGlu
ZVRvKGFRLnAyYyhhWiksYVAucDJjKGFQLm1pbikpO0gubGluZVRvKGFRLnAyYyhhWSksYVAucDJj
KGFQLm1pbikpO2NvbnRpbnVlfX12YXIgYU89YVosYVM9YVk7aWYoYUs8PWFKJiZhSzxhUC5taW4m
JmFKPj1hUC5taW4pe2FaPShhUC5taW4tYUspLyhhSi1hSykqKGFZLWFaKSthWjthSz1hUC5taW59
ZWxzZXtpZihhSjw9YUsmJmFKPGFQLm1pbiYmYUs+PWFQLm1pbil7YVk9KGFQLm1pbi1hSykvKGFK
LWFLKSooYVktYVopK2FaO2FKPWFQLm1pbn19aWYoYUs+PWFKJiZhSz5hUC5tYXgmJmFKPD1hUC5t
YXgpe2FaPShhUC5tYXgtYUspLyhhSi1hSykqKGFZLWFaKSthWjthSz1hUC5tYXh9ZWxzZXtpZihh
Sj49YUsmJmFKPmFQLm1heCYmYUs8PWFQLm1heCl7YVk9KGFQLm1heC1hSykvKGFKLWFLKSooYVkt
YVopK2FaO2FKPWFQLm1heH19aWYoYVohPWFPKXtILmxpbmVUbyhhUS5wMmMoYU8pLGFQLnAyYyhh
SykpfUgubGluZVRvKGFRLnAyYyhhWiksYVAucDJjKGFLKSk7SC5saW5lVG8oYVEucDJjKGFZKSxh
UC5wMmMoYUopKTtpZihhWSE9YVMpe0gubGluZVRvKGFRLnAyYyhhWSksYVAucDJjKGFKKSk7SC5s
aW5lVG8oYVEucDJjKGFTKSxhUC5wMmMoYUopKX19fUguc2F2ZSgpO0gudHJhbnNsYXRlKHEubGVm
dCxxLnRvcCk7SC5saW5lSm9pbj0icm91bmQiO3ZhciBhRz1hRS5saW5lcy5saW5lV2lkdGgsYUI9
YUUuc2hhZG93U2l6ZTtpZihhRz4wJiZhQj4wKXtILmxpbmVXaWR0aD1hQjtILnN0cm9rZVN0eWxl
PSJyZ2JhKDAsMCwwLDAuMSkiO3ZhciBhSD1NYXRoLlBJLzE4O2FEKGFFLmRhdGFwb2ludHMsTWF0
aC5zaW4oYUgpKihhRy8yK2FCLzIpLE1hdGguY29zKGFIKSooYUcvMithQi8yKSxhRS54YXhpcyxh
RS55YXhpcyk7SC5saW5lV2lkdGg9YUIvMjthRChhRS5kYXRhcG9pbnRzLE1hdGguc2luKGFIKSoo
YUcvMithQi80KSxNYXRoLmNvcyhhSCkqKGFHLzIrYUIvNCksYUUueGF4aXMsYUUueWF4aXMpfUgu
bGluZVdpZHRoPWFHO0guc3Ryb2tlU3R5bGU9YUUuY29sb3I7dmFyIGFDPWFlKGFFLmxpbmVzLGFF
LmNvbG9yLDAsdyk7aWYoYUMpe0guZmlsbFN0eWxlPWFDO2FGKGFFLmRhdGFwb2ludHMsYUUueGF4
aXMsYUUueWF4aXMpfWlmKGFHPjApe2FEKGFFLmRhdGFwb2ludHMsMCwwLGFFLnhheGlzLGFFLnlh
eGlzKX1ILnJlc3RvcmUoKX1mdW5jdGlvbiBhbyhhRSl7ZnVuY3Rpb24gYUgoYU4sYU0sYVUsYUss
YVMsYVQsYVEsYUope3ZhciBhUj1hTi5wb2ludHMsYUk9YU4ucG9pbnRzaXplO2Zvcih2YXIgYUw9
MDthTDxhUi5sZW5ndGg7YUwrPWFJKXt2YXIgYVA9YVJbYUxdLGFPPWFSW2FMKzFdO2lmKGFQPT1u
dWxsfHxhUDxhVC5taW58fGFQPmFULm1heHx8YU88YVEubWlufHxhTz5hUS5tYXgpe2NvbnRpbnVl
fUguYmVnaW5QYXRoKCk7YVA9YVQucDJjKGFQKTthTz1hUS5wMmMoYU8pK2FLO2lmKGFKPT0iY2ly
Y2xlIil7SC5hcmMoYVAsYU8sYU0sMCxhUz9NYXRoLlBJOk1hdGguUEkqMixmYWxzZSl9ZWxzZXth
SihILGFQLGFPLGFNLGFTKX1ILmNsb3NlUGF0aCgpO2lmKGFVKXtILmZpbGxTdHlsZT1hVTtILmZp
bGwoKX1ILnN0cm9rZSgpfX1ILnNhdmUoKTtILnRyYW5zbGF0ZShxLmxlZnQscS50b3ApO3ZhciBh
Rz1hRS5wb2ludHMubGluZVdpZHRoLGFDPWFFLnNoYWRvd1NpemUsYUI9YUUucG9pbnRzLnJhZGl1
cyxhRj1hRS5wb2ludHMuc3ltYm9sO2lmKGFHPjAmJmFDPjApe3ZhciBhRD1hQy8yO0gubGluZVdp
ZHRoPWFEO0guc3Ryb2tlU3R5bGU9InJnYmEoMCwwLDAsMC4xKSI7YUgoYUUuZGF0YXBvaW50cyxh
QixudWxsLGFEK2FELzIsdHJ1ZSxhRS54YXhpcyxhRS55YXhpcyxhRik7SC5zdHJva2VTdHlsZT0i
cmdiYSgwLDAsMCwwLjIpIjthSChhRS5kYXRhcG9pbnRzLGFCLG51bGwsYUQvMix0cnVlLGFFLnhh
eGlzLGFFLnlheGlzLGFGKX1ILmxpbmVXaWR0aD1hRztILnN0cm9rZVN0eWxlPWFFLmNvbG9yO2FI
KGFFLmRhdGFwb2ludHMsYUIsYWUoYUUucG9pbnRzLGFFLmNvbG9yKSwwLGZhbHNlLGFFLnhheGlz
LGFFLnlheGlzLGFGKTtILnJlc3RvcmUoKX1mdW5jdGlvbiBFKGFOLGFNLGFWLGFJLGFRLGFGLGFE
LGFMLGFLLGFVLGFSLGFDKXt2YXIgYUUsYVQsYUosYVAsYUcsYUIsYU8sYUgsYVM7aWYoYVIpe2FI
PWFCPWFPPXRydWU7YUc9ZmFsc2U7YUU9YVY7YVQ9YU47YVA9YU0rYUk7YUo9YU0rYVE7aWYoYVQ8
YUUpe2FTPWFUO2FUPWFFO2FFPWFTO2FHPXRydWU7YUI9ZmFsc2V9fWVsc2V7YUc9YUI9YU89dHJ1
ZTthSD1mYWxzZTthRT1hTithSTthVD1hTithUTthSj1hVjthUD1hTTtpZihhUDxhSil7YVM9YVA7
YVA9YUo7YUo9YVM7YUg9dHJ1ZTthTz1mYWxzZX19aWYoYVQ8YUwubWlufHxhRT5hTC5tYXh8fGFQ
PGFLLm1pbnx8YUo+YUsubWF4KXtyZXR1cm59aWYoYUU8YUwubWluKXthRT1hTC5taW47YUc9ZmFs
c2V9aWYoYVQ+YUwubWF4KXthVD1hTC5tYXg7YUI9ZmFsc2V9aWYoYUo8YUsubWluKXthSj1hSy5t
aW47YUg9ZmFsc2V9aWYoYVA+YUsubWF4KXthUD1hSy5tYXg7YU89ZmFsc2V9YUU9YUwucDJjKGFF
KTthSj1hSy5wMmMoYUopO2FUPWFMLnAyYyhhVCk7YVA9YUsucDJjKGFQKTtpZihhRCl7YVUuYmVn
aW5QYXRoKCk7YVUubW92ZVRvKGFFLGFKKTthVS5saW5lVG8oYUUsYVApO2FVLmxpbmVUbyhhVCxh
UCk7YVUubGluZVRvKGFULGFKKTthVS5maWxsU3R5bGU9YUQoYUosYVApO2FVLmZpbGwoKX1pZihh
Qz4wJiYoYUd8fGFCfHxhT3x8YUgpKXthVS5iZWdpblBhdGgoKTthVS5tb3ZlVG8oYUUsYUorYUYp
O2lmKGFHKXthVS5saW5lVG8oYUUsYVArYUYpfWVsc2V7YVUubW92ZVRvKGFFLGFQK2FGKX1pZihh
Tyl7YVUubGluZVRvKGFULGFQK2FGKX1lbHNle2FVLm1vdmVUbyhhVCxhUCthRil9aWYoYUIpe2FV
LmxpbmVUbyhhVCxhSithRil9ZWxzZXthVS5tb3ZlVG8oYVQsYUorYUYpfWlmKGFIKXthVS5saW5l
VG8oYUUsYUorYUYpfWVsc2V7YVUubW92ZVRvKGFFLGFKK2FGKX1hVS5zdHJva2UoKX19ZnVuY3Rp
b24gZShhRCl7ZnVuY3Rpb24gYUMoYUosYUksYUwsYUcsYUssYU4sYU0pe3ZhciBhTz1hSi5wb2lu
dHMsYUY9YUoucG9pbnRzaXplO2Zvcih2YXIgYUg9MDthSDxhTy5sZW5ndGg7YUgrPWFGKXtpZihh
T1thSF09PW51bGwpe2NvbnRpbnVlfUUoYU9bYUhdLGFPW2FIKzFdLGFPW2FIKzJdLGFJLGFMLGFH
LGFLLGFOLGFNLEgsYUQuYmFycy5ob3Jpem9udGFsLGFELmJhcnMubGluZVdpZHRoKX19SC5zYXZl
KCk7SC50cmFuc2xhdGUocS5sZWZ0LHEudG9wKTtILmxpbmVXaWR0aD1hRC5iYXJzLmxpbmVXaWR0
aDtILnN0cm9rZVN0eWxlPWFELmNvbG9yO3ZhciBhQj1hRC5iYXJzLmFsaWduPT0ibGVmdCI/MDot
YUQuYmFycy5iYXJXaWR0aC8yO3ZhciBhRT1hRC5iYXJzLmZpbGw/ZnVuY3Rpb24oYUYsYUcpe3Jl
dHVybiBhZShhRC5iYXJzLGFELmNvbG9yLGFGLGFHKX06bnVsbDthQyhhRC5kYXRhcG9pbnRzLGFC
LGFCK2FELmJhcnMuYmFyV2lkdGgsMCxhRSxhRC54YXhpcyxhRC55YXhpcyk7SC5yZXN0b3JlKCl9
ZnVuY3Rpb24gYWUoYUQsYUIsYUMsYUYpe3ZhciBhRT1hRC5maWxsO2lmKCFhRSl7cmV0dXJuIG51
bGx9aWYoYUQuZmlsbENvbG9yKXtyZXR1cm4gYW0oYUQuZmlsbENvbG9yLGFDLGFGLGFCKX12YXIg
YUc9Yy5jb2xvci5wYXJzZShhQik7YUcuYT10eXBlb2YgYUU9PSJudW1iZXIiP2FFOjAuNDthRy5u
b3JtYWxpemUoKTtyZXR1cm4gYUcudG9TdHJpbmcoKX1mdW5jdGlvbiBvKCl7YXYuZmluZCgiLmxl
Z2VuZCIpLnJlbW92ZSgpO2lmKCFPLmxlZ2VuZC5zaG93KXtyZXR1cm59dmFyIGFIPVtdLGFGPWZh
bHNlLGFOPU8ubGVnZW5kLmxhYmVsRm9ybWF0dGVyLGFNLGFKO2Zvcih2YXIgYUU9MDthRTxRLmxl
bmd0aDsrK2FFKXthTT1RW2FFXTthSj1hTS5sYWJlbDtpZighYUope2NvbnRpbnVlfWlmKGFFJU8u
bGVnZW5kLm5vQ29sdW1ucz09MCl7aWYoYUYpe2FILnB1c2goIjwvdHI+Iil9YUgucHVzaCgiPHRy
PiIpO2FGPXRydWV9aWYoYU4pe2FKPWFOKGFKLGFNKX1hSC5wdXNoKCc8dGQgY2xhc3M9ImxlZ2Vu
ZENvbG9yQm94Ij48ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICcrTy5sZWdlbmQubGFiZWxC
b3hCb3JkZXJDb2xvcisnO3BhZGRpbmc6MXB4Ij48ZGl2IHN0eWxlPSJ3aWR0aDo0cHg7aGVpZ2h0
OjA7Ym9yZGVyOjVweCBzb2xpZCAnK2FNLmNvbG9yKyc7b3ZlcmZsb3c6aGlkZGVuIj48L2Rpdj48
L2Rpdj48L3RkPjx0ZCBjbGFzcz0ibGVnZW5kTGFiZWwiPicrYUorIjwvdGQ+Iil9aWYoYUYpe2FI
LnB1c2goIjwvdHI+Iil9aWYoYUgubGVuZ3RoPT0wKXtyZXR1cm59dmFyIGFMPSc8dGFibGUgc3R5
bGU9ImZvbnQtc2l6ZTpzbWFsbGVyO2NvbG9yOicrTy5ncmlkLmNvbG9yKyciPicrYUguam9pbigi
IikrIjwvdGFibGU+IjtpZihPLmxlZ2VuZC5jb250YWluZXIhPW51bGwpe2MoTy5sZWdlbmQuY29u
dGFpbmVyKS5odG1sKGFMKX1lbHNle3ZhciBhST0iIixhQz1PLmxlZ2VuZC5wb3NpdGlvbixhRD1P
LmxlZ2VuZC5tYXJnaW47aWYoYURbMF09PW51bGwpe2FEPVthRCxhRF19aWYoYUMuY2hhckF0KDAp
PT0ibiIpe2FJKz0idG9wOiIrKGFEWzFdK3EudG9wKSsicHg7In1lbHNle2lmKGFDLmNoYXJBdCgw
KT09InMiKXthSSs9ImJvdHRvbToiKyhhRFsxXStxLmJvdHRvbSkrInB4OyJ9fWlmKGFDLmNoYXJB
dCgxKT09ImUiKXthSSs9InJpZ2h0OiIrKGFEWzBdK3EucmlnaHQpKyJweDsifWVsc2V7aWYoYUMu
Y2hhckF0KDEpPT0idyIpe2FJKz0ibGVmdDoiKyhhRFswXStxLmxlZnQpKyJweDsifX12YXIgYUs9
YygnPGRpdiBjbGFzcz0ibGVnZW5kIj4nK2FMLnJlcGxhY2UoJ3N0eWxlPSInLCdzdHlsZT0icG9z
aXRpb246YWJzb2x1dGU7JythSSsiOyIpKyI8L2Rpdj4iKS5hcHBlbmRUbyhhdik7aWYoTy5sZWdl
bmQuYmFja2dyb3VuZE9wYWNpdHkhPTApe3ZhciBhRz1PLmxlZ2VuZC5iYWNrZ3JvdW5kQ29sb3I7
aWYoYUc9PW51bGwpe2FHPU8uZ3JpZC5iYWNrZ3JvdW5kQ29sb3I7aWYoYUcmJnR5cGVvZiBhRz09
InN0cmluZyIpe2FHPWMuY29sb3IucGFyc2UoYUcpfWVsc2V7YUc9Yy5jb2xvci5leHRyYWN0KGFL
LCJiYWNrZ3JvdW5kLWNvbG9yIil9YUcuYT0xO2FHPWFHLnRvU3RyaW5nKCl9dmFyIGFCPWFLLmNo
aWxkcmVuKCk7YygnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6JythQi53aWR0
aCgpKyJweDtoZWlnaHQ6IithQi5oZWlnaHQoKSsicHg7IithSSsiYmFja2dyb3VuZC1jb2xvcjoi
K2FHKyc7Ij4gPC9kaXY+JykucHJlcGVuZFRvKGFLKS5jc3MoIm9wYWNpdHkiLE8ubGVnZW5kLmJh
Y2tncm91bmRPcGFjaXR5KX19fXZhciBhYj1bXSxNPW51bGw7ZnVuY3Rpb24gSyhhSSxhRyxhRCl7
dmFyIGFPPU8uZ3JpZC5tb3VzZUFjdGl2ZVJhZGl1cyxhMD1hTyphTysxLGFZPW51bGwsYVI9ZmFs
c2UsYVcsYVU7Zm9yKGFXPVEubGVuZ3RoLTE7YVc+PTA7LS1hVyl7aWYoIWFEKFFbYVddKSl7Y29u
dGludWV9dmFyIGFQPVFbYVddLGFIPWFQLnhheGlzLGFGPWFQLnlheGlzLGFWPWFQLmRhdGFwb2lu
dHMucG9pbnRzLGFUPWFQLmRhdGFwb2ludHMucG9pbnRzaXplLGFRPWFILmMycChhSSksYU49YUYu
YzJwKGFHKSxhQz1hTy9hSC5zY2FsZSxhQj1hTy9hRi5zY2FsZTtpZihhSC5vcHRpb25zLmludmVy
c2VUcmFuc2Zvcm0pe2FDPU51bWJlci5NQVhfVkFMVUV9aWYoYUYub3B0aW9ucy5pbnZlcnNlVHJh
bnNmb3JtKXthQj1OdW1iZXIuTUFYX1ZBTFVFfWlmKGFQLmxpbmVzLnNob3d8fGFQLnBvaW50cy5z
aG93KXtmb3IoYVU9MDthVTxhVi5sZW5ndGg7YVUrPWFUKXt2YXIgYUs9YVZbYVVdLGFKPWFWW2FV
KzFdO2lmKGFLPT1udWxsKXtjb250aW51ZX1pZihhSy1hUT5hQ3x8YUstYVE8LWFDfHxhSi1hTj5h
Qnx8YUotYU48LWFCKXtjb250aW51ZX12YXIgYU09TWF0aC5hYnMoYUgucDJjKGFLKS1hSSksYUw9
TWF0aC5hYnMoYUYucDJjKGFKKS1hRyksYVM9YU0qYU0rYUwqYUw7aWYoYVM8YTApe2EwPWFTO2FZ
PVthVyxhVS9hVF19fX1pZihhUC5iYXJzLnNob3cmJiFhWSl7dmFyIGFFPWFQLmJhcnMuYWxpZ249
PSJsZWZ0Ij8wOi1hUC5iYXJzLmJhcldpZHRoLzIsYVg9YUUrYVAuYmFycy5iYXJXaWR0aDtmb3Io
YVU9MDthVTxhVi5sZW5ndGg7YVUrPWFUKXt2YXIgYUs9YVZbYVVdLGFKPWFWW2FVKzFdLGFaPWFW
W2FVKzJdO2lmKGFLPT1udWxsKXtjb250aW51ZX1pZihRW2FXXS5iYXJzLmhvcml6b250YWw/KGFR
PD1NYXRoLm1heChhWixhSykmJmFRPj1NYXRoLm1pbihhWixhSykmJmFOPj1hSithRSYmYU48PWFK
K2FYKTooYVE+PWFLK2FFJiZhUTw9YUsrYVgmJmFOPj1NYXRoLm1pbihhWixhSikmJmFOPD1NYXRo
Lm1heChhWixhSikpKXthWT1bYVcsYVUvYVRdfX19fWlmKGFZKXthVz1hWVswXTthVT1hWVsxXTth
VD1RW2FXXS5kYXRhcG9pbnRzLnBvaW50c2l6ZTtyZXR1cm57ZGF0YXBvaW50OlFbYVddLmRhdGFw
b2ludHMucG9pbnRzLnNsaWNlKGFVKmFULChhVSsxKSphVCksZGF0YUluZGV4OmFVLHNlcmllczpR
W2FXXSxzZXJpZXNJbmRleDphV319cmV0dXJuIG51bGx9ZnVuY3Rpb24gYWEoYUIpe2lmKE8uZ3Jp
ZC5ob3ZlcmFibGUpe3UoInBsb3Rob3ZlciIsYUIsZnVuY3Rpb24oYUMpe3JldHVybiBhQy5ob3Zl
cmFibGUhPWZhbHNlfSl9fWZ1bmN0aW9uIGwoYUIpe2lmKE8uZ3JpZC5ob3ZlcmFibGUpe3UoInBs
b3Rob3ZlciIsYUIsZnVuY3Rpb24oYUMpe3JldHVybiBmYWxzZX0pfX1mdW5jdGlvbiBSKGFCKXt1
KCJwbG90Y2xpY2siLGFCLGZ1bmN0aW9uKGFDKXtyZXR1cm4gYUMuY2xpY2thYmxlIT1mYWxzZX0p
fWZ1bmN0aW9uIHUoYUMsYUIsYUQpe3ZhciBhRT15Lm9mZnNldCgpLGFIPWFCLnBhZ2VYLWFFLmxl
ZnQtcS5sZWZ0LGFGPWFCLnBhZ2VZLWFFLnRvcC1xLnRvcCxhSj1DKHtsZWZ0OmFILHRvcDphRn0p
O2FKLnBhZ2VYPWFCLnBhZ2VYO2FKLnBhZ2VZPWFCLnBhZ2VZO3ZhciBhSz1LKGFILGFGLGFEKTtp
ZihhSyl7YUsucGFnZVg9cGFyc2VJbnQoYUsuc2VyaWVzLnhheGlzLnAyYyhhSy5kYXRhcG9pbnRb
MF0pK2FFLmxlZnQrcS5sZWZ0KTthSy5wYWdlWT1wYXJzZUludChhSy5zZXJpZXMueWF4aXMucDJj
KGFLLmRhdGFwb2ludFsxXSkrYUUudG9wK3EudG9wKX1pZihPLmdyaWQuYXV0b0hpZ2hsaWdodCl7
Zm9yKHZhciBhRz0wO2FHPGFiLmxlbmd0aDsrK2FHKXt2YXIgYUk9YWJbYUddO2lmKGFJLmF1dG89
PWFDJiYhKGFLJiZhSS5zZXJpZXM9PWFLLnNlcmllcyYmYUkucG9pbnRbMF09PWFLLmRhdGFwb2lu
dFswXSYmYUkucG9pbnRbMV09PWFLLmRhdGFwb2ludFsxXSkpe1QoYUkuc2VyaWVzLGFJLnBvaW50
KX19aWYoYUspe3goYUsuc2VyaWVzLGFLLmRhdGFwb2ludCxhQyl9fWF2LnRyaWdnZXIoYUMsW2FK
LGFLXSl9ZnVuY3Rpb24gZigpe2lmKCFNKXtNPXNldFRpbWVvdXQocywzMCl9fWZ1bmN0aW9uIHMo
KXtNPW51bGw7QS5zYXZlKCk7QS5jbGVhclJlY3QoMCwwLEcsSSk7QS50cmFuc2xhdGUocS5sZWZ0
LHEudG9wKTt2YXIgYUMsYUI7Zm9yKGFDPTA7YUM8YWIubGVuZ3RoOysrYUMpe2FCPWFiW2FDXTtp
ZihhQi5zZXJpZXMuYmFycy5zaG93KXt2KGFCLnNlcmllcyxhQi5wb2ludCl9ZWxzZXtheShhQi5z
ZXJpZXMsYUIucG9pbnQpfX1BLnJlc3RvcmUoKTthbihhay5kcmF3T3ZlcmxheSxbQV0pfWZ1bmN0
aW9uIHgoYUQsYUIsYUYpe2lmKHR5cGVvZiBhRD09Im51bWJlciIpe2FEPVFbYURdfWlmKHR5cGVv
ZiBhQj09Im51bWJlciIpe3ZhciBhRT1hRC5kYXRhcG9pbnRzLnBvaW50c2l6ZTthQj1hRC5kYXRh
cG9pbnRzLnBvaW50cy5zbGljZShhRSphQixhRSooYUIrMSkpfXZhciBhQz1hbChhRCxhQik7aWYo
YUM9PS0xKXthYi5wdXNoKHtzZXJpZXM6YUQscG9pbnQ6YUIsYXV0bzphRn0pO2YoKX1lbHNle2lm
KCFhRil7YWJbYUNdLmF1dG89ZmFsc2V9fX1mdW5jdGlvbiBUKGFELGFCKXtpZihhRD09bnVsbCYm
YUI9PW51bGwpe2FiPVtdO2YoKX1pZih0eXBlb2YgYUQ9PSJudW1iZXIiKXthRD1RW2FEXX1pZih0
eXBlb2YgYUI9PSJudW1iZXIiKXthQj1hRC5kYXRhW2FCXX12YXIgYUM9YWwoYUQsYUIpO2lmKGFD
IT0tMSl7YWIuc3BsaWNlKGFDLDEpO2YoKX19ZnVuY3Rpb24gYWwoYUQsYUUpe2Zvcih2YXIgYUI9
MDthQjxhYi5sZW5ndGg7KythQil7dmFyIGFDPWFiW2FCXTtpZihhQy5zZXJpZXM9PWFEJiZhQy5w
b2ludFswXT09YUVbMF0mJmFDLnBvaW50WzFdPT1hRVsxXSl7cmV0dXJuIGFCfX1yZXR1cm4gLTF9
ZnVuY3Rpb24gYXkoYUUsYUQpe3ZhciBhQz1hRFswXSxhST1hRFsxXSxhSD1hRS54YXhpcyxhRz1h
RS55YXhpcztpZihhQzxhSC5taW58fGFDPmFILm1heHx8YUk8YUcubWlufHxhST5hRy5tYXgpe3Jl
dHVybn12YXIgYUY9YUUucG9pbnRzLnJhZGl1cythRS5wb2ludHMubGluZVdpZHRoLzI7QS5saW5l
V2lkdGg9YUY7QS5zdHJva2VTdHlsZT1jLmNvbG9yLnBhcnNlKGFFLmNvbG9yKS5zY2FsZSgiYSIs
MC41KS50b1N0cmluZygpO3ZhciBhQj0xLjUqYUYsYUM9YUgucDJjKGFDKSxhST1hRy5wMmMoYUkp
O0EuYmVnaW5QYXRoKCk7aWYoYUUucG9pbnRzLnN5bWJvbD09ImNpcmNsZSIpe0EuYXJjKGFDLGFJ
LGFCLDAsMipNYXRoLlBJLGZhbHNlKX1lbHNle2FFLnBvaW50cy5zeW1ib2woQSxhQyxhSSxhQixm
YWxzZSl9QS5jbG9zZVBhdGgoKTtBLnN0cm9rZSgpfWZ1bmN0aW9uIHYoYUUsYUIpe0EubGluZVdp
ZHRoPWFFLmJhcnMubGluZVdpZHRoO0Euc3Ryb2tlU3R5bGU9Yy5jb2xvci5wYXJzZShhRS5jb2xv
cikuc2NhbGUoImEiLDAuNSkudG9TdHJpbmcoKTt2YXIgYUQ9Yy5jb2xvci5wYXJzZShhRS5jb2xv
cikuc2NhbGUoImEiLDAuNSkudG9TdHJpbmcoKTt2YXIgYUM9YUUuYmFycy5hbGlnbj09ImxlZnQi
PzA6LWFFLmJhcnMuYmFyV2lkdGgvMjtFKGFCWzBdLGFCWzFdLGFCWzJdfHwwLGFDLGFDK2FFLmJh
cnMuYmFyV2lkdGgsMCxmdW5jdGlvbigpe3JldHVybiBhRH0sYUUueGF4aXMsYUUueWF4aXMsQSxh
RS5iYXJzLmhvcml6b250YWwsYUUuYmFycy5saW5lV2lkdGgpfWZ1bmN0aW9uIGFtKGFKLGFCLGFI
LGFDKXtpZih0eXBlb2YgYUo9PSJzdHJpbmciKXtyZXR1cm4gYUp9ZWxzZXt2YXIgYUk9SC5jcmVh
dGVMaW5lYXJHcmFkaWVudCgwLGFILDAsYUIpO2Zvcih2YXIgYUU9MCxhRD1hSi5jb2xvcnMubGVu
Z3RoO2FFPGFEOysrYUUpe3ZhciBhRj1hSi5jb2xvcnNbYUVdO2lmKHR5cGVvZiBhRiE9InN0cmlu
ZyIpe3ZhciBhRz1jLmNvbG9yLnBhcnNlKGFDKTtpZihhRi5icmlnaHRuZXNzIT1udWxsKXthRz1h
Ry5zY2FsZSgicmdiIixhRi5icmlnaHRuZXNzKX1pZihhRi5vcGFjaXR5IT1udWxsKXthRy5hKj1h
Ri5vcGFjaXR5fWFGPWFHLnRvU3RyaW5nKCl9YUkuYWRkQ29sb3JTdG9wKGFFLyhhRC0xKSxhRil9
cmV0dXJuIGFJfX19Yy5wbG90PWZ1bmN0aW9uKGcsZSxkKXt2YXIgZj1uZXcgYihjKGcpLGUsZCxj
LnBsb3QucGx1Z2lucyk7cmV0dXJuIGZ9O2MucGxvdC52ZXJzaW9uPSIwLjciO2MucGxvdC5wbHVn
aW5zPVtdO2MucGxvdC5mb3JtYXREYXRlPWZ1bmN0aW9uKGwsZixoKXt2YXIgbz1mdW5jdGlvbihk
KXtkPSIiK2Q7cmV0dXJuIGQubGVuZ3RoPT0xPyIwIitkOmR9O3ZhciBlPVtdO3ZhciBwPWZhbHNl
LGo9ZmFsc2U7dmFyIG49bC5nZXRVVENIb3VycygpO3ZhciBrPW48MTI7aWYoaD09bnVsbCl7aD1b
IkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9j
dCIsIk5vdiIsIkRlYyJdfWlmKGYuc2VhcmNoKC8lcHwlUC8pIT0tMSl7aWYobj4xMil7bj1uLTEy
fWVsc2V7aWYobj09MCl7bj0xMn19fWZvcih2YXIgZz0wO2c8Zi5sZW5ndGg7KytnKXt2YXIgbT1m
LmNoYXJBdChnKTtpZihwKXtzd2l0Y2gobSl7Y2FzZSJoIjptPSIiK247YnJlYWs7Y2FzZSJIIjpt
PW8obik7YnJlYWs7Y2FzZSJNIjptPW8obC5nZXRVVENNaW51dGVzKCkpO2JyZWFrO2Nhc2UiUyI6
bT1vKGwuZ2V0VVRDU2Vjb25kcygpKTticmVhaztjYXNlImQiOm09IiIrbC5nZXRVVENEYXRlKCk7
YnJlYWs7Y2FzZSJtIjptPSIiKyhsLmdldFVUQ01vbnRoKCkrMSk7YnJlYWs7Y2FzZSJ5IjptPSIi
K2wuZ2V0VVRDRnVsbFllYXIoKTticmVhaztjYXNlImIiOm09IiIraFtsLmdldFVUQ01vbnRoKCld
O2JyZWFrO2Nhc2UicCI6bT0oayk/KCJhbSIpOigicG0iKTticmVhaztjYXNlIlAiOm09KGspPygi
QU0iKTooIlBNIik7YnJlYWs7Y2FzZSIwIjptPSIiO2o9dHJ1ZTticmVha31pZihtJiZqKXttPW8o
bSk7aj1mYWxzZX1lLnB1c2gobSk7aWYoIWope3A9ZmFsc2V9fWVsc2V7aWYobT09IiUiKXtwPXRy
dWV9ZWxzZXtlLnB1c2gobSl9fX1yZXR1cm4gZS5qb2luKCIiKX07ZnVuY3Rpb24gYShlLGQpe3Jl
dHVybiBkKk1hdGguZmxvb3IoZS9kKX19KShqUXVlcnkpOwpfEA90ZXh0L2phdmFzY3JpcHTUBQYH
CBMUFRZfEFBmaWxlOi8vL1VzZXJzL2FidWN1ci9XZWJLaXQvUGVyZm9ybWFuY2VUZXN0cy9yZXNv
dXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qc08RAk5icGxpc3QwMNQBAgMEBQY2N1gkdmVy
c2lvblgkb2JqZWN0c1kkYXJjaGl2ZXJUJHRvcBIAAYagqwcIHyUmLS4vMDEyVSRudWxs2wkKCwwN
Dg8QERITFBUWFxgZGhscHR5SJDNWJGNsYXNzUiQ2UiQxUiQ5UiQ0UiQ3UiQyUiQ1UiQwUiQ4gAKA
CoAHEACACYAFgAAQB4AGEAiACNMgCiEaIyRXTlMuYmFzZVtOUy5yZWxhdGl2ZYAAgASAA18QUGZp
bGU6Ly8vVXNlcnMvYWJ1Y3VyL1dlYktpdC9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVl
cnkudGFibGVzb3J0ZXIubWluLmpz0icoKSpaJGNsYXNzbmFtZVgkY2xhc3Nlc1VOU1VSTKIrLFVO
U1VSTFhOU09iamVjdCNBtyAqkQ5HqhACXxAPdGV4dC9qYXZhc2NyaXB0EUCII3/v////////0ico
MzRdTlNVUkxSZXNwb25zZaI1LF1OU1VSTFJlc3BvbnNlXxAPTlNLZXllZEFyY2hpdmVy0Tg5XxAT
V2ViUmVzb3VyY2VSZXNwb25zZYABAAgAEQAaACMALQAyADcAQwBJAGAAYwBqAG0AcABzAHYAeQB8
AH8AggCFAIcAiQCLAI0AjwCRAJMAlQCXAJkAmwCiAKoAtgC4ALoAvAEPARQBHwEoAS4BMQE3AUAB
SQFLAV0BYAFpAW4BfAF/AY0BnwGiAbgAAAAAAAACAQAAAAAAAAA6AAAAAAAAAAAAAAAAAAABuk8R
QIgKKGZ1bmN0aW9uKCQpeyQuZXh0ZW5kKHt0YWJsZXNvcnRlcjpuZXcKZnVuY3Rpb24oKXt2YXIg
cGFyc2Vycz1bXSx3aWRnZXRzPVtdO3RoaXMuZGVmYXVsdHM9e2Nzc0hlYWRlcjoiaGVhZGVyIixj
c3NBc2M6ImhlYWRlclNvcnRVcCIsY3NzRGVzYzoiaGVhZGVyU29ydERvd24iLGNzc0NoaWxkUm93
OiJleHBhbmQtY2hpbGQiLHNvcnRJbml0aWFsT3JkZXI6ImFzYyIsc29ydE11bHRpU29ydEtleToi
c2hpZnRLZXkiLHNvcnRGb3JjZTpudWxsLHNvcnRBcHBlbmQ6bnVsbCxzb3J0TG9jYWxlQ29tcGFy
ZTp0cnVlLHRleHRFeHRyYWN0aW9uOiJzaW1wbGUiLHBhcnNlcnM6e30sd2lkZ2V0czpbXSx3aWRn
ZXRaZWJyYTp7Y3NzOlsiZXZlbiIsIm9kZCJdfSxoZWFkZXJzOnt9LHdpZHRoRml4ZWQ6ZmFsc2Us
Y2FuY2VsU2VsZWN0aW9uOnRydWUsc29ydExpc3Q6W10saGVhZGVyTGlzdDpbXSxkYXRlRm9ybWF0
OiJ1cyIsZGVjaW1hbDonL1wufFwsL2cnLG9uUmVuZGVySGVhZGVyOm51bGwsc2VsZWN0b3JIZWFk
ZXJzOid0aGVhZCB0aCcsZGVidWc6ZmFsc2V9O2Z1bmN0aW9uIGJlbmNobWFyayhzLGQpe2xvZyhz
KyIsIisobmV3IERhdGUoKS5nZXRUaW1lKCktZC5nZXRUaW1lKCkpKyJtcyIpO310aGlzLmJlbmNo
bWFyaz1iZW5jaG1hcms7ZnVuY3Rpb24gbG9nKHMpe2lmKHR5cGVvZiBjb25zb2xlIT0idW5kZWZp
bmVkIiYmdHlwZW9mIGNvbnNvbGUuZGVidWchPSJ1bmRlZmluZWQiKXtjb25zb2xlLmxvZyhzKTt9
ZWxzZXthbGVydChzKTt9fWZ1bmN0aW9uIGJ1aWxkUGFyc2VyQ2FjaGUodGFibGUsJGhlYWRlcnMp
e2lmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7dmFyIHBhcnNlcnNEZWJ1Zz0iIjt9aWYodGFibGUudEJv
ZGllcy5sZW5ndGg9PTApcmV0dXJuO3ZhciByb3dzPXRhYmxlLnRCb2RpZXNbMF0ucm93cztpZihy
b3dzWzBdKXt2YXIgbGlzdD1bXSxjZWxscz1yb3dzWzBdLmNlbGxzLGw9Y2VsbHMubGVuZ3RoO2Zv
cih2YXIgaT0wO2k8bDtpKyspe3ZhciBwPWZhbHNlO2lmKCQubWV0YWRhdGEmJigkKCRoZWFkZXJz
W2ldKS5tZXRhZGF0YSgpJiYkKCRoZWFkZXJzW2ldKS5tZXRhZGF0YSgpLnNvcnRlcikpe3A9Z2V0
UGFyc2VyQnlJZCgkKCRoZWFkZXJzW2ldKS5tZXRhZGF0YSgpLnNvcnRlcik7fWVsc2UgaWYoKHRh
YmxlLmNvbmZpZy5oZWFkZXJzW2ldJiZ0YWJsZS5jb25maWcuaGVhZGVyc1tpXS5zb3J0ZXIpKXtw
PWdldFBhcnNlckJ5SWQodGFibGUuY29uZmlnLmhlYWRlcnNbaV0uc29ydGVyKTt9aWYoIXApe3A9
ZGV0ZWN0UGFyc2VyRm9yQ29sdW1uKHRhYmxlLHJvd3MsLTEsaSk7fWlmKHRhYmxlLmNvbmZpZy5k
ZWJ1Zyl7cGFyc2Vyc0RlYnVnKz0iY29sdW1uOiIraSsiIHBhcnNlcjoiK3AuaWQrIlxuIjt9bGlz
dC5wdXNoKHApO319aWYodGFibGUuY29uZmlnLmRlYnVnKXtsb2cocGFyc2Vyc0RlYnVnKTt9cmV0
dXJuIGxpc3Q7fTtmdW5jdGlvbiBkZXRlY3RQYXJzZXJGb3JDb2x1bW4odGFibGUscm93cyxyb3dJ
bmRleCxjZWxsSW5kZXgpe3ZhciBsPXBhcnNlcnMubGVuZ3RoLG5vZGU9ZmFsc2Usbm9kZVZhbHVl
PWZhbHNlLGtlZXBMb29raW5nPXRydWU7d2hpbGUobm9kZVZhbHVlPT0nJyYma2VlcExvb2tpbmcp
e3Jvd0luZGV4Kys7aWYocm93c1tyb3dJbmRleF0pe25vZGU9Z2V0Tm9kZUZyb21Sb3dBbmRDZWxs
SW5kZXgocm93cyxyb3dJbmRleCxjZWxsSW5kZXgpO25vZGVWYWx1ZT10cmltQW5kR2V0Tm9kZVRl
eHQodGFibGUuY29uZmlnLG5vZGUpO2lmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7bG9nKCdDaGVja2lu
ZyBpZiB2YWx1ZSB3YXMgZW1wdHkgb24gcm93Oicrcm93SW5kZXgpO319ZWxzZXtrZWVwTG9va2lu
Zz1mYWxzZTt9fWZvcih2YXIgaT0xO2k8bDtpKyspe2lmKHBhcnNlcnNbaV0uaXMobm9kZVZhbHVl
LHRhYmxlLG5vZGUpKXtyZXR1cm4gcGFyc2Vyc1tpXTt9fXJldHVybiBwYXJzZXJzWzBdO31mdW5j
dGlvbiBnZXROb2RlRnJvbVJvd0FuZENlbGxJbmRleChyb3dzLHJvd0luZGV4LGNlbGxJbmRleCl7
cmV0dXJuIHJvd3Nbcm93SW5kZXhdLmNlbGxzW2NlbGxJbmRleF07fWZ1bmN0aW9uIHRyaW1BbmRH
ZXROb2RlVGV4dChjb25maWcsbm9kZSl7cmV0dXJuICQudHJpbShnZXRFbGVtZW50VGV4dChjb25m
aWcsbm9kZSkpO31mdW5jdGlvbiBnZXRQYXJzZXJCeUlkKG5hbWUpe3ZhciBsPXBhcnNlcnMubGVu
Z3RoO2Zvcih2YXIgaT0wO2k8bDtpKyspe2lmKHBhcnNlcnNbaV0uaWQudG9Mb3dlckNhc2UoKT09
bmFtZS50b0xvd2VyQ2FzZSgpKXtyZXR1cm4gcGFyc2Vyc1tpXTt9fXJldHVybiBmYWxzZTt9ZnVu
Y3Rpb24gYnVpbGRDYWNoZSh0YWJsZSl7aWYodGFibGUuY29uZmlnLmRlYnVnKXt2YXIgY2FjaGVU
aW1lPW5ldyBEYXRlKCk7fXZhciB0b3RhbFJvd3M9KHRhYmxlLnRCb2RpZXNbMF0mJnRhYmxlLnRC
b2RpZXNbMF0ucm93cy5sZW5ndGgpfHwwLHRvdGFsQ2VsbHM9KHRhYmxlLnRCb2RpZXNbMF0ucm93
c1swXSYmdGFibGUudEJvZGllc1swXS5yb3dzWzBdLmNlbGxzLmxlbmd0aCl8fDAscGFyc2Vycz10
YWJsZS5jb25maWcucGFyc2VycyxjYWNoZT17cm93OltdLG5vcm1hbGl6ZWQ6W119O2Zvcih2YXIg
aT0wO2k8dG90YWxSb3dzOysraSl7dmFyIGM9JCh0YWJsZS50Qm9kaWVzWzBdLnJvd3NbaV0pLGNv
bHM9W107aWYoYy5oYXNDbGFzcyh0YWJsZS5jb25maWcuY3NzQ2hpbGRSb3cpKXtjYWNoZS5yb3db
Y2FjaGUucm93Lmxlbmd0aC0xXT1jYWNoZS5yb3dbY2FjaGUucm93Lmxlbmd0aC0xXS5hZGQoYyk7
Y29udGludWU7fWNhY2hlLnJvdy5wdXNoKGMpO2Zvcih2YXIgaj0wO2o8dG90YWxDZWxsczsrK2op
e2NvbHMucHVzaChwYXJzZXJzW2pdLmZvcm1hdChnZXRFbGVtZW50VGV4dCh0YWJsZS5jb25maWcs
Y1swXS5jZWxsc1tqXSksdGFibGUsY1swXS5jZWxsc1tqXSkpO31jb2xzLnB1c2goY2FjaGUubm9y
bWFsaXplZC5sZW5ndGgpO2NhY2hlLm5vcm1hbGl6ZWQucHVzaChjb2xzKTtjb2xzPW51bGw7fTtp
Zih0YWJsZS5jb25maWcuZGVidWcpe2JlbmNobWFyaygiQnVpbGRpbmcgY2FjaGUgZm9yICIrdG90
YWxSb3dzKyIgcm93czoiLGNhY2hlVGltZSk7fXJldHVybiBjYWNoZTt9O2Z1bmN0aW9uIGdldEVs
ZW1lbnRUZXh0KGNvbmZpZyxub2RlKXt2YXIgdGV4dD0iIjtpZighbm9kZSlyZXR1cm4iIjtpZigh
Y29uZmlnLnN1cHBvcnRzVGV4dENvbnRlbnQpY29uZmlnLnN1cHBvcnRzVGV4dENvbnRlbnQ9bm9k
ZS50ZXh0Q29udGVudHx8ZmFsc2U7aWYoY29uZmlnLnRleHRFeHRyYWN0aW9uPT0ic2ltcGxlIil7
aWYoY29uZmlnLnN1cHBvcnRzVGV4dENvbnRlbnQpe3RleHQ9bm9kZS50ZXh0Q29udGVudDt9ZWxz
ZXtpZihub2RlLmNoaWxkTm9kZXNbMF0mJm5vZGUuY2hpbGROb2Rlc1swXS5oYXNDaGlsZE5vZGVz
KCkpe3RleHQ9bm9kZS5jaGlsZE5vZGVzWzBdLmlubmVySFRNTDt9ZWxzZXt0ZXh0PW5vZGUuaW5u
ZXJIVE1MO319fWVsc2V7aWYodHlwZW9mKGNvbmZpZy50ZXh0RXh0cmFjdGlvbik9PSJmdW5jdGlv
biIpe3RleHQ9Y29uZmlnLnRleHRFeHRyYWN0aW9uKG5vZGUpO31lbHNle3RleHQ9JChub2RlKS50
ZXh0KCk7fX1yZXR1cm4gdGV4dDt9ZnVuY3Rpb24gYXBwZW5kVG9UYWJsZSh0YWJsZSxjYWNoZSl7
aWYodGFibGUuY29uZmlnLmRlYnVnKXt2YXIgYXBwZW5kVGltZT1uZXcgRGF0ZSgpfXZhciBjPWNh
Y2hlLHI9Yy5yb3csbj1jLm5vcm1hbGl6ZWQsdG90YWxSb3dzPW4ubGVuZ3RoLGNoZWNrQ2VsbD0o
blswXS5sZW5ndGgtMSksdGFibGVCb2R5PSQodGFibGUudEJvZGllc1swXSkscm93cz1bXTtmb3Io
dmFyIGk9MDtpPHRvdGFsUm93cztpKyspe3ZhciBwb3M9bltpXVtjaGVja0NlbGxdO3Jvd3MucHVz
aChyW3Bvc10pO2lmKCF0YWJsZS5jb25maWcuYXBwZW5kZXIpe3ZhciBsPXJbcG9zXS5sZW5ndGg7
Zm9yKHZhciBqPTA7ajxsO2orKyl7dGFibGVCb2R5WzBdLmFwcGVuZENoaWxkKHJbcG9zXVtqXSk7
fX19aWYodGFibGUuY29uZmlnLmFwcGVuZGVyKXt0YWJsZS5jb25maWcuYXBwZW5kZXIodGFibGUs
cm93cyk7fXJvd3M9bnVsbDtpZih0YWJsZS5jb25maWcuZGVidWcpe2JlbmNobWFyaygiUmVidWls
dCB0YWJsZToiLGFwcGVuZFRpbWUpO31hcHBseVdpZGdldCh0YWJsZSk7c2V0VGltZW91dChmdW5j
dGlvbigpeyQodGFibGUpLnRyaWdnZXIoInNvcnRFbmQiKTt9LDApO307ZnVuY3Rpb24gYnVpbGRI
ZWFkZXJzKHRhYmxlKXtpZih0YWJsZS5jb25maWcuZGVidWcpe3ZhciB0aW1lPW5ldyBEYXRlKCk7
fXZhciBtZXRhPSgkLm1ldGFkYXRhKT90cnVlOmZhbHNlO3ZhciBoZWFkZXJfaW5kZXg9Y29tcHV0
ZVRhYmxlSGVhZGVyQ2VsbEluZGV4ZXModGFibGUpOyR0YWJsZUhlYWRlcnM9JCh0YWJsZS5jb25m
aWcuc2VsZWN0b3JIZWFkZXJzLHRhYmxlKS5lYWNoKGZ1bmN0aW9uKGluZGV4KXt0aGlzLmNvbHVt
bj1oZWFkZXJfaW5kZXhbdGhpcy5wYXJlbnROb2RlLnJvd0luZGV4KyItIit0aGlzLmNlbGxJbmRl
eF07dGhpcy5vcmRlcj1mb3JtYXRTb3J0aW5nT3JkZXIodGFibGUuY29uZmlnLnNvcnRJbml0aWFs
T3JkZXIpO3RoaXMuY291bnQ9dGhpcy5vcmRlcjtpZihjaGVja0hlYWRlck1ldGFkYXRhKHRoaXMp
fHxjaGVja0hlYWRlck9wdGlvbnModGFibGUsaW5kZXgpKXRoaXMuc29ydERpc2FibGVkPXRydWU7
aWYoY2hlY2tIZWFkZXJPcHRpb25zU29ydGluZ0xvY2tlZCh0YWJsZSxpbmRleCkpdGhpcy5vcmRl
cj10aGlzLmxvY2tlZE9yZGVyPWNoZWNrSGVhZGVyT3B0aW9uc1NvcnRpbmdMb2NrZWQodGFibGUs
aW5kZXgpO2lmKCF0aGlzLnNvcnREaXNhYmxlZCl7dmFyICR0aD0kKHRoaXMpLmFkZENsYXNzKHRh
YmxlLmNvbmZpZy5jc3NIZWFkZXIpO2lmKHRhYmxlLmNvbmZpZy5vblJlbmRlckhlYWRlcil0YWJs
ZS5jb25maWcub25SZW5kZXJIZWFkZXIuYXBwbHkoJHRoKTt9dGFibGUuY29uZmlnLmhlYWRlckxp
c3RbaW5kZXhdPXRoaXM7fSk7aWYodGFibGUuY29uZmlnLmRlYnVnKXtiZW5jaG1hcmsoIkJ1aWx0
IGhlYWRlcnM6Iix0aW1lKTtsb2coJHRhYmxlSGVhZGVycyk7fXJldHVybiAkdGFibGVIZWFkZXJz
O307ZnVuY3Rpb24gY29tcHV0ZVRhYmxlSGVhZGVyQ2VsbEluZGV4ZXModCl7dmFyIG1hdHJpeD1b
XTt2YXIgbG9va3VwPXt9O3ZhciB0aGVhZD10LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdUSEVBRCcp
WzBdO3ZhciB0cnM9dGhlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ1RSJyk7Zm9yKHZhciBpPTA7
aTx0cnMubGVuZ3RoO2krKyl7dmFyIGNlbGxzPXRyc1tpXS5jZWxscztmb3IodmFyIGo9MDtqPGNl
bGxzLmxlbmd0aDtqKyspe3ZhciBjPWNlbGxzW2pdO3ZhciByb3dJbmRleD1jLnBhcmVudE5vZGUu
cm93SW5kZXg7dmFyIGNlbGxJZD1yb3dJbmRleCsiLSIrYy5jZWxsSW5kZXg7dmFyIHJvd1NwYW49
Yy5yb3dTcGFufHwxO3ZhciBjb2xTcGFuPWMuY29sU3Bhbnx8MQp2YXIgZmlyc3RBdmFpbENvbDtp
Zih0eXBlb2YobWF0cml4W3Jvd0luZGV4XSk9PSJ1bmRlZmluZWQiKXttYXRyaXhbcm93SW5kZXhd
PVtdO31mb3IodmFyIGs9MDtrPG1hdHJpeFtyb3dJbmRleF0ubGVuZ3RoKzE7aysrKXtpZih0eXBl
b2YobWF0cml4W3Jvd0luZGV4XVtrXSk9PSJ1bmRlZmluZWQiKXtmaXJzdEF2YWlsQ29sPWs7YnJl
YWs7fX1sb29rdXBbY2VsbElkXT1maXJzdEF2YWlsQ29sO2Zvcih2YXIgaz1yb3dJbmRleDtrPHJv
d0luZGV4K3Jvd1NwYW47aysrKXtpZih0eXBlb2YobWF0cml4W2tdKT09InVuZGVmaW5lZCIpe21h
dHJpeFtrXT1bXTt9dmFyIG1hdHJpeHJvdz1tYXRyaXhba107Zm9yKHZhciBsPWZpcnN0QXZhaWxD
b2w7bDxmaXJzdEF2YWlsQ29sK2NvbFNwYW47bCsrKXttYXRyaXhyb3dbbF09IngiO319fX1yZXR1
cm4gbG9va3VwO31mdW5jdGlvbiBjaGVja0NlbGxDb2xTcGFuKHRhYmxlLHJvd3Mscm93KXt2YXIg
YXJyPVtdLHI9dGFibGUudEhlYWQucm93cyxjPXJbcm93XS5jZWxscztmb3IodmFyIGk9MDtpPGMu
bGVuZ3RoO2krKyl7dmFyIGNlbGw9Y1tpXTtpZihjZWxsLmNvbFNwYW4+MSl7YXJyPWFyci5jb25j
YXQoY2hlY2tDZWxsQ29sU3Bhbih0YWJsZSxoZWFkZXJBcnIscm93KyspKTt9ZWxzZXtpZih0YWJs
ZS50SGVhZC5sZW5ndGg9PTF8fChjZWxsLnJvd1NwYW4+MXx8IXJbcm93KzFdKSl7YXJyLnB1c2go
Y2VsbCk7fX19cmV0dXJuIGFycjt9O2Z1bmN0aW9uIGNoZWNrSGVhZGVyTWV0YWRhdGEoY2VsbCl7
aWYoKCQubWV0YWRhdGEpJiYoJChjZWxsKS5tZXRhZGF0YSgpLnNvcnRlcj09PWZhbHNlKSl7cmV0
dXJuIHRydWU7fTtyZXR1cm4gZmFsc2U7fWZ1bmN0aW9uIGNoZWNrSGVhZGVyT3B0aW9ucyh0YWJs
ZSxpKXtpZigodGFibGUuY29uZmlnLmhlYWRlcnNbaV0pJiYodGFibGUuY29uZmlnLmhlYWRlcnNb
aV0uc29ydGVyPT09ZmFsc2UpKXtyZXR1cm4gdHJ1ZTt9O3JldHVybiBmYWxzZTt9ZnVuY3Rpb24g
Y2hlY2tIZWFkZXJPcHRpb25zU29ydGluZ0xvY2tlZCh0YWJsZSxpKXtpZigodGFibGUuY29uZmln
LmhlYWRlcnNbaV0pJiYodGFibGUuY29uZmlnLmhlYWRlcnNbaV0ubG9ja2VkT3JkZXIpKXJldHVy
biB0YWJsZS5jb25maWcuaGVhZGVyc1tpXS5sb2NrZWRPcmRlcjtyZXR1cm4gZmFsc2U7fWZ1bmN0
aW9uIGFwcGx5V2lkZ2V0KHRhYmxlKXt2YXIgYz10YWJsZS5jb25maWcud2lkZ2V0czt2YXIgbD1j
Lmxlbmd0aDtmb3IodmFyIGk9MDtpPGw7aSsrKXtnZXRXaWRnZXRCeUlkKGNbaV0pLmZvcm1hdCh0
YWJsZSk7fX1mdW5jdGlvbiBnZXRXaWRnZXRCeUlkKG5hbWUpe3ZhciBsPXdpZGdldHMubGVuZ3Ro
O2Zvcih2YXIgaT0wO2k8bDtpKyspe2lmKHdpZGdldHNbaV0uaWQudG9Mb3dlckNhc2UoKT09bmFt
ZS50b0xvd2VyQ2FzZSgpKXtyZXR1cm4gd2lkZ2V0c1tpXTt9fX07ZnVuY3Rpb24gZm9ybWF0U29y
dGluZ09yZGVyKHYpe2lmKHR5cGVvZih2KSE9Ik51bWJlciIpe3JldHVybih2LnRvTG93ZXJDYXNl
KCk9PSJkZXNjIik/MTowO31lbHNle3JldHVybih2PT0xKT8xOjA7fX1mdW5jdGlvbiBpc1ZhbHVl
SW5BcnJheSh2LGEpe3ZhciBsPWEubGVuZ3RoO2Zvcih2YXIgaT0wO2k8bDtpKyspe2lmKGFbaV1b
MF09PXYpe3JldHVybiB0cnVlO319cmV0dXJuIGZhbHNlO31mdW5jdGlvbiBzZXRIZWFkZXJzQ3Nz
KHRhYmxlLCRoZWFkZXJzLGxpc3QsY3NzKXskaGVhZGVycy5yZW1vdmVDbGFzcyhjc3NbMF0pLnJl
bW92ZUNsYXNzKGNzc1sxXSk7dmFyIGg9W107JGhlYWRlcnMuZWFjaChmdW5jdGlvbihvZmZzZXQp
e2lmKCF0aGlzLnNvcnREaXNhYmxlZCl7aFt0aGlzLmNvbHVtbl09JCh0aGlzKTt9fSk7dmFyIGw9
bGlzdC5sZW5ndGg7Zm9yKHZhciBpPTA7aTxsO2krKyl7aFtsaXN0W2ldWzBdXS5hZGRDbGFzcyhj
c3NbbGlzdFtpXVsxXV0pO319ZnVuY3Rpb24gZml4Q29sdW1uV2lkdGgodGFibGUsJGhlYWRlcnMp
e3ZhciBjPXRhYmxlLmNvbmZpZztpZihjLndpZHRoRml4ZWQpe3ZhciBjb2xncm91cD0kKCc8Y29s
Z3JvdXA+Jyk7JCgidHI6Zmlyc3QgdGQiLHRhYmxlLnRCb2RpZXNbMF0pLmVhY2goZnVuY3Rpb24o
KXtjb2xncm91cC5hcHBlbmQoJCgnPGNvbD4nKS5jc3MoJ3dpZHRoJywkKHRoaXMpLndpZHRoKCkp
KTt9KTskKHRhYmxlKS5wcmVwZW5kKGNvbGdyb3VwKTt9O31mdW5jdGlvbiB1cGRhdGVIZWFkZXJT
b3J0Q291bnQodGFibGUsc29ydExpc3Qpe3ZhciBjPXRhYmxlLmNvbmZpZyxsPXNvcnRMaXN0Lmxl
bmd0aDtmb3IodmFyIGk9MDtpPGw7aSsrKXt2YXIgcz1zb3J0TGlzdFtpXSxvPWMuaGVhZGVyTGlz
dFtzWzBdXTtvLmNvdW50PXNbMV07by5jb3VudCsrO319ZnVuY3Rpb24gbXVsdGlzb3J0KHRhYmxl
LHNvcnRMaXN0LGNhY2hlKXtpZih0YWJsZS5jb25maWcuZGVidWcpe3ZhciBzb3J0VGltZT1uZXcg
RGF0ZSgpO312YXIgZHluYW1pY0V4cD0idmFyIHNvcnRXcmFwcGVyID0gZnVuY3Rpb24oYSxiKSB7
IixsPXNvcnRMaXN0Lmxlbmd0aDtmb3IodmFyIGk9MDtpPGw7aSsrKXt2YXIgYz1zb3J0TGlzdFtp
XVswXTt2YXIgb3JkZXI9c29ydExpc3RbaV1bMV07dmFyIHM9KHRhYmxlLmNvbmZpZy5wYXJzZXJz
W2NdLnR5cGU9PSJ0ZXh0Iik/KChvcmRlcj09MCk/bWFrZVNvcnRGdW5jdGlvbigidGV4dCIsImFz
YyIsYyk6bWFrZVNvcnRGdW5jdGlvbigidGV4dCIsImRlc2MiLGMpKTooKG9yZGVyPT0wKT9tYWtl
U29ydEZ1bmN0aW9uKCJudW1lcmljIiwiYXNjIixjKTptYWtlU29ydEZ1bmN0aW9uKCJudW1lcmlj
IiwiZGVzYyIsYykpO3ZhciBlPSJlIitpO2R5bmFtaWNFeHArPSJ2YXIgIitlKyIgPSAiK3M7ZHlu
YW1pY0V4cCs9ImlmKCIrZSsiKSB7IHJldHVybiAiK2UrIjsgfSAiO2R5bmFtaWNFeHArPSJlbHNl
IHsgIjt9dmFyIG9yZ09yZGVyQ29sPWNhY2hlLm5vcm1hbGl6ZWRbMF0ubGVuZ3RoLTE7ZHluYW1p
Y0V4cCs9InJldHVybiBhWyIrb3JnT3JkZXJDb2wrIl0tYlsiK29yZ09yZGVyQ29sKyJdOyI7Zm9y
KHZhciBpPTA7aTxsO2krKyl7ZHluYW1pY0V4cCs9In07ICI7fWR5bmFtaWNFeHArPSJyZXR1cm4g
MDsgIjtkeW5hbWljRXhwKz0ifTsgIjtpZih0YWJsZS5jb25maWcuZGVidWcpe2JlbmNobWFyaygi
RXZhbGluZyBleHByZXNzaW9uOiIrZHluYW1pY0V4cCxuZXcgRGF0ZSgpKTt9ZXZhbChkeW5hbWlj
RXhwKTtjYWNoZS5ub3JtYWxpemVkLnNvcnQoc29ydFdyYXBwZXIpO2lmKHRhYmxlLmNvbmZpZy5k
ZWJ1Zyl7YmVuY2htYXJrKCJTb3J0aW5nIG9uICIrc29ydExpc3QudG9TdHJpbmcoKSsiIGFuZCBk
aXIgIitvcmRlcisiIHRpbWU6Iixzb3J0VGltZSk7fXJldHVybiBjYWNoZTt9O2Z1bmN0aW9uIG1h
a2VTb3J0RnVuY3Rpb24odHlwZSxkaXJlY3Rpb24saW5kZXgpe3ZhciBhPSJhWyIraW5kZXgrIl0i
LGI9ImJbIitpbmRleCsiXSI7aWYodHlwZT09J3RleHQnJiZkaXJlY3Rpb249PSdhc2MnKXtyZXR1
cm4iKCIrYSsiID09ICIrYisiID8gMCA6ICgiK2ErIiA9PT0gbnVsbCA/IE51bWJlci5QT1NJVElW
RV9JTkZJTklUWSA6ICgiK2IrIiA9PT0gbnVsbCA/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA6
ICgiK2ErIiA8ICIrYisiKSA/IC0xIDogMSApKSk7Ijt9ZWxzZSBpZih0eXBlPT0ndGV4dCcmJmRp
cmVjdGlvbj09J2Rlc2MnKXtyZXR1cm4iKCIrYSsiID09ICIrYisiID8gMCA6ICgiK2ErIiA9PT0g
bnVsbCA/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSA6ICgiK2IrIiA9PT0gbnVsbCA/IE51bWJl
ci5ORUdBVElWRV9JTkZJTklUWSA6ICgiK2IrIiA8ICIrYSsiKSA/IC0xIDogMSApKSk7Ijt9ZWxz
ZSBpZih0eXBlPT0nbnVtZXJpYycmJmRpcmVjdGlvbj09J2FzYycpe3JldHVybiIoIithKyIgPT09
IG51bGwgJiYgIitiKyIgPT09IG51bGwpID8gMCA6KCIrYSsiID09PSBudWxsID8gTnVtYmVyLlBP
U0lUSVZFX0lORklOSVRZIDogKCIrYisiID09PSBudWxsID8gTnVtYmVyLk5FR0FUSVZFX0lORklO
SVRZIDogIithKyIgLSAiK2IrIikpOyI7fWVsc2UgaWYodHlwZT09J251bWVyaWMnJiZkaXJlY3Rp
b249PSdkZXNjJyl7cmV0dXJuIigiK2ErIiA9PT0gbnVsbCAmJiAiK2IrIiA9PT0gbnVsbCkgPyAw
IDooIithKyIgPT09IG51bGwgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgOiAoIitiKyIgPT09
IG51bGwgPyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkgOiAiK2IrIiAtICIrYSsiKSk7Ijt9fTtm
dW5jdGlvbiBtYWtlU29ydFRleHQoaSl7cmV0dXJuIigoYVsiK2krIl0gPCBiWyIraSsiXSkgPyAt
MSA6ICgoYVsiK2krIl0gPiBiWyIraSsiXSkgPyAxIDogMCkpOyI7fTtmdW5jdGlvbiBtYWtlU29y
dFRleHREZXNjKGkpe3JldHVybiIoKGJbIitpKyJdIDwgYVsiK2krIl0pID8gLTEgOiAoKGJbIitp
KyJdID4gYVsiK2krIl0pID8gMSA6IDApKTsiO307ZnVuY3Rpb24gbWFrZVNvcnROdW1lcmljKGkp
e3JldHVybiJhWyIraSsiXS1iWyIraSsiXTsiO307ZnVuY3Rpb24gbWFrZVNvcnROdW1lcmljRGVz
YyhpKXtyZXR1cm4iYlsiK2krIl0tYVsiK2krIl07Ijt9O2Z1bmN0aW9uIHNvcnRUZXh0KGEsYil7
aWYodGFibGUuY29uZmlnLnNvcnRMb2NhbGVDb21wYXJlKXJldHVybiBhLmxvY2FsZUNvbXBhcmUo
Yik7cmV0dXJuKChhPGIpPy0xOigoYT5iKT8xOjApKTt9O2Z1bmN0aW9uIHNvcnRUZXh0RGVzYyhh
LGIpe2lmKHRhYmxlLmNvbmZpZy5zb3J0TG9jYWxlQ29tcGFyZSlyZXR1cm4gYi5sb2NhbGVDb21w
YXJlKGEpO3JldHVybigoYjxhKT8tMTooKGI+YSk/MTowKSk7fTtmdW5jdGlvbiBzb3J0TnVtZXJp
YyhhLGIpe3JldHVybiBhLWI7fTtmdW5jdGlvbiBzb3J0TnVtZXJpY0Rlc2MoYSxiKXtyZXR1cm4g
Yi1hO307ZnVuY3Rpb24gZ2V0Q2FjaGVkU29ydFR5cGUocGFyc2VycyxpKXtyZXR1cm4gcGFyc2Vy
c1tpXS50eXBlO307dGhpcy5jb25zdHJ1Y3Q9ZnVuY3Rpb24oc2V0dGluZ3Mpe3JldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oKXtpZighdGhpcy50SGVhZHx8IXRoaXMudEJvZGllcylyZXR1cm47dmFy
ICR0aGlzLCRkb2N1bWVudCwkaGVhZGVycyxjYWNoZSxjb25maWcsc2hpZnREb3duPTAsc29ydE9y
ZGVyO3RoaXMuY29uZmlnPXt9O2NvbmZpZz0kLmV4dGVuZCh0aGlzLmNvbmZpZywkLnRhYmxlc29y
dGVyLmRlZmF1bHRzLHNldHRpbmdzKTskdGhpcz0kKHRoaXMpOyQuZGF0YSh0aGlzLCJ0YWJsZXNv
cnRlciIsY29uZmlnKTskaGVhZGVycz1idWlsZEhlYWRlcnModGhpcyk7dGhpcy5jb25maWcucGFy
c2Vycz1idWlsZFBhcnNlckNhY2hlKHRoaXMsJGhlYWRlcnMpO2NhY2hlPWJ1aWxkQ2FjaGUodGhp
cyk7dmFyIHNvcnRDU1M9W2NvbmZpZy5jc3NEZXNjLGNvbmZpZy5jc3NBc2NdO2ZpeENvbHVtbldp
ZHRoKHRoaXMpOyRoZWFkZXJzLmNsaWNrKGZ1bmN0aW9uKGUpe3ZhciB0b3RhbFJvd3M9KCR0aGlz
WzBdLnRCb2RpZXNbMF0mJiR0aGlzWzBdLnRCb2RpZXNbMF0ucm93cy5sZW5ndGgpfHwwO2lmKCF0
aGlzLnNvcnREaXNhYmxlZCYmdG90YWxSb3dzPjApeyR0aGlzLnRyaWdnZXIoInNvcnRTdGFydCIp
O3ZhciAkY2VsbD0kKHRoaXMpO3ZhciBpPXRoaXMuY29sdW1uO3RoaXMub3JkZXI9dGhpcy5jb3Vu
dCsrJTI7aWYodGhpcy5sb2NrZWRPcmRlcil0aGlzLm9yZGVyPXRoaXMubG9ja2VkT3JkZXI7aWYo
IWVbY29uZmlnLnNvcnRNdWx0aVNvcnRLZXldKXtjb25maWcuc29ydExpc3Q9W107aWYoY29uZmln
LnNvcnRGb3JjZSE9bnVsbCl7dmFyIGE9Y29uZmlnLnNvcnRGb3JjZTtmb3IodmFyIGo9MDtqPGEu
bGVuZ3RoO2orKyl7aWYoYVtqXVswXSE9aSl7Y29uZmlnLnNvcnRMaXN0LnB1c2goYVtqXSk7fX19
Y29uZmlnLnNvcnRMaXN0LnB1c2goW2ksdGhpcy5vcmRlcl0pO31lbHNle2lmKGlzVmFsdWVJbkFy
cmF5KGksY29uZmlnLnNvcnRMaXN0KSl7Zm9yKHZhciBqPTA7ajxjb25maWcuc29ydExpc3QubGVu
Z3RoO2orKyl7dmFyIHM9Y29uZmlnLnNvcnRMaXN0W2pdLG89Y29uZmlnLmhlYWRlckxpc3Rbc1sw
XV07aWYoc1swXT09aSl7by5jb3VudD1zWzFdO28uY291bnQrKztzWzFdPW8uY291bnQlMjt9fX1l
bHNle2NvbmZpZy5zb3J0TGlzdC5wdXNoKFtpLHRoaXMub3JkZXJdKTt9fTtzZXRUaW1lb3V0KGZ1
bmN0aW9uKCl7c2V0SGVhZGVyc0NzcygkdGhpc1swXSwkaGVhZGVycyxjb25maWcuc29ydExpc3Qs
c29ydENTUyk7YXBwZW5kVG9UYWJsZSgkdGhpc1swXSxtdWx0aXNvcnQoJHRoaXNbMF0sY29uZmln
LnNvcnRMaXN0LGNhY2hlKSk7fSwxKTtyZXR1cm4gZmFsc2U7fX0pLm1vdXNlZG93bihmdW5jdGlv
bigpe2lmKGNvbmZpZy5jYW5jZWxTZWxlY3Rpb24pe3RoaXMub25zZWxlY3RzdGFydD1mdW5jdGlv
bigpe3JldHVybiBmYWxzZX07cmV0dXJuIGZhbHNlO319KTskdGhpcy5iaW5kKCJ1cGRhdGUiLGZ1
bmN0aW9uKCl7dmFyIG1lPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe21lLmNvbmZpZy5wYXJz
ZXJzPWJ1aWxkUGFyc2VyQ2FjaGUobWUsJGhlYWRlcnMpO2NhY2hlPWJ1aWxkQ2FjaGUobWUpO30s
MSk7fSkuYmluZCgidXBkYXRlQ2VsbCIsZnVuY3Rpb24oZSxjZWxsKXt2YXIgY29uZmlnPXRoaXMu
Y29uZmlnO3ZhciBwb3M9WyhjZWxsLnBhcmVudE5vZGUucm93SW5kZXgtMSksY2VsbC5jZWxsSW5k
ZXhdO2NhY2hlLm5vcm1hbGl6ZWRbcG9zWzBdXVtwb3NbMV1dPWNvbmZpZy5wYXJzZXJzW3Bvc1sx
XV0uZm9ybWF0KGdldEVsZW1lbnRUZXh0KGNvbmZpZyxjZWxsKSxjZWxsKTt9KS5iaW5kKCJzb3J0
b24iLGZ1bmN0aW9uKGUsbGlzdCl7JCh0aGlzKS50cmlnZ2VyKCJzb3J0U3RhcnQiKTtjb25maWcu
c29ydExpc3Q9bGlzdDt2YXIgc29ydExpc3Q9Y29uZmlnLnNvcnRMaXN0O3VwZGF0ZUhlYWRlclNv
cnRDb3VudCh0aGlzLHNvcnRMaXN0KTtzZXRIZWFkZXJzQ3NzKHRoaXMsJGhlYWRlcnMsc29ydExp
c3Qsc29ydENTUyk7YXBwZW5kVG9UYWJsZSh0aGlzLG11bHRpc29ydCh0aGlzLHNvcnRMaXN0LGNh
Y2hlKSk7fSkuYmluZCgiYXBwZW5kQ2FjaGUiLGZ1bmN0aW9uKCl7YXBwZW5kVG9UYWJsZSh0aGlz
LGNhY2hlKTt9KS5iaW5kKCJhcHBseVdpZGdldElkIixmdW5jdGlvbihlLGlkKXtnZXRXaWRnZXRC
eUlkKGlkKS5mb3JtYXQodGhpcyk7fSkuYmluZCgiYXBwbHlXaWRnZXRzIixmdW5jdGlvbigpe2Fw
cGx5V2lkZ2V0KHRoaXMpO30pO2lmKCQubWV0YWRhdGEmJigkKHRoaXMpLm1ldGFkYXRhKCkmJiQo
dGhpcykubWV0YWRhdGEoKS5zb3J0bGlzdCkpe2NvbmZpZy5zb3J0TGlzdD0kKHRoaXMpLm1ldGFk
YXRhKCkuc29ydGxpc3Q7fWlmKGNvbmZpZy5zb3J0TGlzdC5sZW5ndGg+MCl7JHRoaXMudHJpZ2dl
cigic29ydG9uIixbY29uZmlnLnNvcnRMaXN0XSk7fWFwcGx5V2lkZ2V0KHRoaXMpO30pO307dGhp
cy5hZGRQYXJzZXI9ZnVuY3Rpb24ocGFyc2VyKXt2YXIgbD1wYXJzZXJzLmxlbmd0aCxhPXRydWU7
Zm9yKHZhciBpPTA7aTxsO2krKyl7aWYocGFyc2Vyc1tpXS5pZC50b0xvd2VyQ2FzZSgpPT1wYXJz
ZXIuaWQudG9Mb3dlckNhc2UoKSl7YT1mYWxzZTt9fWlmKGEpe3BhcnNlcnMucHVzaChwYXJzZXIp
O307fTt0aGlzLmFkZFdpZGdldD1mdW5jdGlvbih3aWRnZXQpe3dpZGdldHMucHVzaCh3aWRnZXQp
O307dGhpcy5mb3JtYXRGbG9hdD1mdW5jdGlvbihzKXt2YXIgaT1wYXJzZUZsb2F0KHMpO3JldHVy
bihpc05hTihpKSk/MDppO307dGhpcy5mb3JtYXRJbnQ9ZnVuY3Rpb24ocyl7dmFyIGk9cGFyc2VJ
bnQocyk7cmV0dXJuKGlzTmFOKGkpKT8wOmk7fTt0aGlzLmlzRGlnaXQ9ZnVuY3Rpb24ocyxjb25m
aWcpe3JldHVybi9eWy0rXT9cZCokLy50ZXN0KCQudHJpbShzLnJlcGxhY2UoL1ssLiddL2csJycp
KSk7fTt0aGlzLmNsZWFyVGFibGVCb2R5PWZ1bmN0aW9uKHRhYmxlKXtpZigkLmJyb3dzZXIubXNp
ZSl7ZnVuY3Rpb24gZW1wdHkoKXt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpdGhpcy5yZW1vdmVDaGls
ZCh0aGlzLmZpcnN0Q2hpbGQpO31lbXB0eS5hcHBseSh0YWJsZS50Qm9kaWVzWzBdKTt9ZWxzZXt0
YWJsZS50Qm9kaWVzWzBdLmlubmVySFRNTD0iIjt9fTt9fSk7JC5mbi5leHRlbmQoe3RhYmxlc29y
dGVyOiQudGFibGVzb3J0ZXIuY29uc3RydWN0fSk7dmFyIHRzPSQudGFibGVzb3J0ZXI7dHMuYWRk
UGFyc2VyKHtpZDoidGV4dCIsaXM6ZnVuY3Rpb24ocyl7cmV0dXJuIHRydWU7fSxmb3JtYXQ6ZnVu
Y3Rpb24ocyl7cmV0dXJuICQudHJpbShzLnRvTG9jYWxlTG93ZXJDYXNlKCkpO30sdHlwZToidGV4
dCJ9KTt0cy5hZGRQYXJzZXIoe2lkOiJkaWdpdCIsaXM6ZnVuY3Rpb24ocyx0YWJsZSl7dmFyIGM9
dGFibGUuY29uZmlnO3JldHVybiAkLnRhYmxlc29ydGVyLmlzRGlnaXQocyxjKTt9LGZvcm1hdDpm
dW5jdGlvbihzKXtyZXR1cm4gJC50YWJsZXNvcnRlci5mb3JtYXRGbG9hdChzKTt9LHR5cGU6Im51
bWVyaWMifSk7dHMuYWRkUGFyc2VyKHtpZDoiY3VycmVuY3kiLGlzOmZ1bmN0aW9uKHMpe3JldHVy
bi9eW8KjJOKCrD8uXS8udGVzdChzKTt9LGZvcm1hdDpmdW5jdGlvbihzKXtyZXR1cm4gJC50YWJs
ZXNvcnRlci5mb3JtYXRGbG9hdChzLnJlcGxhY2UobmV3IFJlZ0V4cCgvW8KjJOKCrF0vZyksIiIp
KTt9LHR5cGU6Im51bWVyaWMifSk7dHMuYWRkUGFyc2VyKHtpZDoiaXBBZGRyZXNzIixpczpmdW5j
dGlvbihzKXtyZXR1cm4vXlxkezIsM31bXC5dXGR7MiwzfVtcLl1cZHsyLDN9W1wuXVxkezIsM30k
Ly50ZXN0KHMpO30sZm9ybWF0OmZ1bmN0aW9uKHMpe3ZhciBhPXMuc3BsaXQoIi4iKSxyPSIiLGw9
YS5sZW5ndGg7Zm9yKHZhciBpPTA7aTxsO2krKyl7dmFyIGl0ZW09YVtpXTtpZihpdGVtLmxlbmd0
aD09Mil7cis9IjAiK2l0ZW07fWVsc2V7cis9aXRlbTt9fXJldHVybiAkLnRhYmxlc29ydGVyLmZv
cm1hdEZsb2F0KHIpO30sdHlwZToibnVtZXJpYyJ9KTt0cy5hZGRQYXJzZXIoe2lkOiJ1cmwiLGlz
OmZ1bmN0aW9uKHMpe3JldHVybi9eKGh0dHBzP3xmdHB8ZmlsZSk6XC9cLyQvLnRlc3Qocyk7fSxm
b3JtYXQ6ZnVuY3Rpb24ocyl7cmV0dXJuIGpRdWVyeS50cmltKHMucmVwbGFjZShuZXcgUmVnRXhw
KC8oaHR0cHM/fGZ0cHxmaWxlKTpcL1wvLyksJycpKTt9LHR5cGU6InRleHQifSk7dHMuYWRkUGFy
c2VyKHtpZDoiaXNvRGF0ZSIsaXM6ZnVuY3Rpb24ocyl7cmV0dXJuL15cZHs0fVtcLy1dXGR7MSwy
fVtcLy1dXGR7MSwyfSQvLnRlc3Qocyk7fSxmb3JtYXQ6ZnVuY3Rpb24ocyl7cmV0dXJuICQudGFi
bGVzb3J0ZXIuZm9ybWF0RmxvYXQoKHMhPSIiKT9uZXcgRGF0ZShzLnJlcGxhY2UobmV3IFJlZ0V4
cCgvLS9nKSwiLyIpKS5nZXRUaW1lKCk6IjAiKTt9LHR5cGU6Im51bWVyaWMifSk7dHMuYWRkUGFy
c2VyKHtpZDoicGVyY2VudCIsaXM6ZnVuY3Rpb24ocyl7cmV0dXJuL1wlJC8udGVzdCgkLnRyaW0o
cykpO30sZm9ybWF0OmZ1bmN0aW9uKHMpe3JldHVybiAkLnRhYmxlc29ydGVyLmZvcm1hdEZsb2F0
KHMucmVwbGFjZShuZXcgUmVnRXhwKC8lL2cpLCIiKSk7fSx0eXBlOiJudW1lcmljIn0pO3RzLmFk
ZFBhcnNlcih7aWQ6InVzTG9uZ0RhdGUiLGlzOmZ1bmN0aW9uKHMpe3JldHVybiBzLm1hdGNoKG5l
dyBSZWdFeHAoL15bQS1aYS16XXszLDEwfVwuPyBbMC05XXsxLDJ9LCAoWzAtOV17NH18Jz9bMC05
XXsyfSkgKChbMC0yXT9bMC05XTpbMC01XVswLTldKXwoWzAtMV0/WzAtOV06WzAtNV1bMC05XVxz
KEFNfFBNKSkpJC8pKTt9LGZvcm1hdDpmdW5jdGlvbihzKXtyZXR1cm4gJC50YWJsZXNvcnRlci5m
b3JtYXRGbG9hdChuZXcgRGF0ZShzKS5nZXRUaW1lKCkpO30sdHlwZToibnVtZXJpYyJ9KTt0cy5h
ZGRQYXJzZXIoe2lkOiJzaG9ydERhdGUiLGlzOmZ1bmN0aW9uKHMpe3JldHVybi9cZHsxLDJ9W1wv
XC1dXGR7MSwyfVtcL1wtXVxkezIsNH0vLnRlc3Qocyk7fSxmb3JtYXQ6ZnVuY3Rpb24ocyx0YWJs
ZSl7dmFyIGM9dGFibGUuY29uZmlnO3M9cy5yZXBsYWNlKC9cLS9nLCIvIik7aWYoYy5kYXRlRm9y
bWF0PT0idXMiKXtzPXMucmVwbGFjZSgvKFxkezEsMn0pW1wvXC1dKFxkezEsMn0pW1wvXC1dKFxk
ezR9KS8sIiQzLyQxLyQyIik7fWVsc2UgaWYoYy5kYXRlRm9ybWF0PT0idWsiKXtzPXMucmVwbGFj
ZSgvKFxkezEsMn0pW1wvXC1dKFxkezEsMn0pW1wvXC1dKFxkezR9KS8sIiQzLyQyLyQxIik7fWVs
c2UgaWYoYy5kYXRlRm9ybWF0PT0iZGQvbW0veXkifHxjLmRhdGVGb3JtYXQ9PSJkZC1tbS15eSIp
e3M9cy5yZXBsYWNlKC8oXGR7MSwyfSlbXC9cLV0oXGR7MSwyfSlbXC9cLV0oXGR7Mn0pLywiJDEv
JDIvJDMiKTt9cmV0dXJuICQudGFibGVzb3J0ZXIuZm9ybWF0RmxvYXQobmV3IERhdGUocykuZ2V0
VGltZSgpKTt9LHR5cGU6Im51bWVyaWMifSk7dHMuYWRkUGFyc2VyKHtpZDoidGltZSIsaXM6ZnVu
Y3Rpb24ocyl7cmV0dXJuL14oKFswLTJdP1swLTldOlswLTVdWzAtOV0pfChbMC0xXT9bMC05XTpb
MC01XVswLTldXHMoYW18cG0pKSkkLy50ZXN0KHMpO30sZm9ybWF0OmZ1bmN0aW9uKHMpe3JldHVy
biAkLnRhYmxlc29ydGVyLmZvcm1hdEZsb2F0KG5ldyBEYXRlKCIyMDAwLzAxLzAxICIrcykuZ2V0
VGltZSgpKTt9LHR5cGU6Im51bWVyaWMifSk7dHMuYWRkUGFyc2VyKHtpZDoibWV0YWRhdGEiLGlz
OmZ1bmN0aW9uKHMpe3JldHVybiBmYWxzZTt9LGZvcm1hdDpmdW5jdGlvbihzLHRhYmxlLGNlbGwp
e3ZhciBjPXRhYmxlLmNvbmZpZyxwPSghYy5wYXJzZXJNZXRhZGF0YU5hbWUpPydzb3J0VmFsdWUn
OmMucGFyc2VyTWV0YWRhdGFOYW1lO3JldHVybiAkKGNlbGwpLm1ldGFkYXRhKClbcF07fSx0eXBl
OiJudW1lcmljIn0pO3RzLmFkZFdpZGdldCh7aWQ6InplYnJhIixmb3JtYXQ6ZnVuY3Rpb24odGFi
bGUpe2lmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7dmFyIHRpbWU9bmV3IERhdGUoKTt9dmFyICR0cixy
b3c9LTEsb2RkOyQoInRyOnZpc2libGUiLHRhYmxlLnRCb2RpZXNbMF0pLmVhY2goZnVuY3Rpb24o
aSl7JHRyPSQodGhpcyk7aWYoISR0ci5oYXNDbGFzcyh0YWJsZS5jb25maWcuY3NzQ2hpbGRSb3cp
KXJvdysrO29kZD0ocm93JTI9PTApOyR0ci5yZW1vdmVDbGFzcyh0YWJsZS5jb25maWcud2lkZ2V0
WmVicmEuY3NzW29kZD8wOjFdKS5hZGRDbGFzcyh0YWJsZS5jb25maWcud2lkZ2V0WmVicmEuY3Nz
W29kZD8xOjBdKX0pO2lmKHRhYmxlLmNvbmZpZy5kZWJ1Zyl7JC50YWJsZXNvcnRlci5iZW5jaG1h
cmsoIkFwcGx5aW5nIFplYnJhIHdpZGdldCIsdGltZSk7fX19KTt9KShqUXVlcnkpO18QD3RleHQv
amF2YXNjcmlwdNQFBgcIGBkaG18QRGZpbGU6Ly8vVXNlcnMvYWJ1Y3VyL1dlYktpdC9QZXJmb3Jt
YW5jZVRlc3RzL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzTxECQmJwbGlzdDAw1AECAwQFBjY3WCR2
ZXJzaW9uWCRvYmplY3RzWSRhcmNoaXZlclQkdG9wEgABhqCrBwgfJSYtLi8wMTJVJG51bGzbCQoL
DA0ODxAREhMUFRYXGBkaGxwdHlIkM1YkY2xhc3NSJDZSJDFSJDlSJDRSJDdSJDJSJDVSJDBSJDiA
AoAKgAcQAIAJgAWAABAHgAYQCIAI0yAKIRojJFdOUy5iYXNlW05TLnJlbGF0aXZlgACABIADXxBE
ZmlsZTovLy9Vc2Vycy9hYnVjdXIvV2ViS2l0L1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL3N0
YXRpc3RpY3MuanPSJygpKlokY2xhc3NuYW1lWCRjbGFzc2VzVU5TVVJMoissVU5TVVJMWE5TT2Jq
ZWN0I0G3ICqRDlAvEAJfEA90ZXh0L2phdmFzY3JpcHQRIvkjf+/////////SJygzNF1OU1VSTFJl
c3BvbnNlojUsXU5TVVJMUmVzcG9uc2VfEA9OU0tleWVkQXJjaGl2ZXLRODlfEBNXZWJSZXNvdXJj
ZVJlc3BvbnNlgAEACAARABoAIwAtADIANwBDAEkAYABjAGoAbQBwAHMAdgB5AHwAfwCCAIUAhwCJ
AIsAjQCPAJEAkwCVAJcAmQCbAKIAqgC2ALgAugC8AQMBCAETARwBIgElASsBNAE9AT8BUQFUAV0B
YgFwAXMBgQGTAZYBrAAAAAAAAAIBAAAAAAAAADoAAAAAAAAAAAAAAAAAAAGuTxEi+S8qCiAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAq
CiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICogYXJlIG1ldDoKICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgogKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAq
CiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCiAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCiAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCiAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCiAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogKi8KCnZhciBTdGF0aXN0aWNz
ID0gbmV3IChmdW5jdGlvbiAoKSB7CgogICAgdGhpcy5tYXggPSBmdW5jdGlvbiAodmFsdWVzKSB7
CiAgICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsIHZhbHVlcyk7CiAgICB9CgogICAg
dGhpcy5taW4gPSBmdW5jdGlvbiAodmFsdWVzKSB7CiAgICAgICAgcmV0dXJuIE1hdGgubWluLmFw
cGx5KE1hdGgsIHZhbHVlcyk7CiAgICB9CgogICAgdGhpcy5zdW0gPSBmdW5jdGlvbiAodmFsdWVz
KSB7CiAgICAgICAgcmV0dXJuIHZhbHVlcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJu
IGEgKyBiOyB9LCAwKTsKICAgIH0KCiAgICB0aGlzLnNxdWFyZVN1bSA9IGZ1bmN0aW9uICh2YWx1
ZXMpIHsKICAgICAgICByZXR1cm4gdmFsdWVzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCB2YWx1ZSkg
eyByZXR1cm4gc3VtICsgdmFsdWUgKiB2YWx1ZTt9LCAwKTsKICAgIH0KCiAgICAvLyBXaXRoIHN1
bSBhbmQgc3VtIG9mIHNxdWFyZXMsIHdlIGNhbiBjb21wdXRlIHRoZSBzYW1wbGUgc3RhbmRhcmQg
ZGV2aWF0aW9uIGluIE8oMSkuCiAgICAvLyBTZWUgaHR0cHM6Ly9ybml3YS5jb20vMjAxMi0xMS0x
MC9zYW1wbGUtc3RhbmRhcmQtZGV2aWF0aW9uLWluLXRlcm1zLW9mLXN1bS1hbmQtc3F1YXJlLXN1
bS1vZi1zYW1wbGVzLwogICAgdGhpcy5zYW1wbGVTdGFuZGFyZERldmlhdGlvbiA9IGZ1bmN0aW9u
IChudW1iZXJPZlNhbXBsZXMsIHN1bSwgc3F1YXJlU3VtKSB7CiAgICAgICAgaWYgKG51bWJlck9m
U2FtcGxlcyA8IDIpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIHJldHVybiBNYXRoLnNx
cnQoc3F1YXJlU3VtIC8gKG51bWJlck9mU2FtcGxlcyAtIDEpCiAgICAgICAgICAgIC0gc3VtICog
c3VtIC8gKG51bWJlck9mU2FtcGxlcyAtIDEpIC8gbnVtYmVyT2ZTYW1wbGVzKTsKICAgIH0KCiAg
ICB0aGlzLnN1cHBvcnRlZENvbmZpZGVuY2VMZXZlbHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAg
dmFyIHN1cHBvcnRlZExldmVscyA9IFtdOwogICAgICAgIGZvciAodmFyIHF1YW50aWxlIGluIHRE
aXN0cmlidXRpb25JbnZlcnNlQ0RGKQogICAgICAgICAgICBzdXBwb3J0ZWRMZXZlbHMucHVzaCgo
MSAtICgxIC0gcXVhbnRpbGUpICogMikudG9GaXhlZCgyKSk7CiAgICAgICAgcmV0dXJuIHN1cHBv
cnRlZExldmVsczsKICAgIH0KCiAgICAvLyBDb21wdXRlcyB0aGUgZGVsdGEgZCBzLnQuIChtZWFu
IC0gZCwgbWVhbiArIGQpIGlzIHRoZSBjb25maWRlbmNlIGludGVydmFsIHdpdGggdGhlIHNwZWNp
ZmllZCBjb25maWRlbmNlIGxldmVsIGluIE8oMSkuCiAgICB0aGlzLmNvbmZpZGVuY2VJbnRlcnZh
bERlbHRhID0gZnVuY3Rpb24gKGNvbmZpZGVuY2VMZXZlbCwgbnVtYmVyT2ZTYW1wbGVzLCBzdW0s
IHNxdWFyZVN1bSkgewogICAgICAgIHZhciBwcm9iYWJpbGl0eSA9ICgxIC0gKDEgLSBjb25maWRl
bmNlTGV2ZWwpIC8gMik7CiAgICAgICAgaWYgKCEocHJvYmFiaWxpdHkgaW4gdERpc3RyaWJ1dGlv
bkludmVyc2VDREYpKSB7CiAgICAgICAgICAgIHRocm93ICdXZSBvbmx5IHN1cHBvcnQgJyArIHRo
aXMuc3VwcG9ydGVkQ29uZmlkZW5jZUxldmVscygpLm1hcCgKICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIChsZXZlbCkgeyByZXR1cm4gbGV2ZWwgKiAxMDAgKyAnJSc7IH0gKS5qb2luKCcsICcpICsg
JyBjb25maWRlbmNlIGludGVydmFscy4nOwogICAgICAgIH0KICAgICAgICBpZiAobnVtYmVyT2ZT
YW1wbGVzIC0gMiA8IDApCiAgICAgICAgICAgIHJldHVybiBOYU47CgogICAgICAgIHZhciBjZGZG
b3JQcm9iYWJpbGl0eSA9IHREaXN0cmlidXRpb25JbnZlcnNlQ0RGW3Byb2JhYmlsaXR5XTsKICAg
ICAgICB2YXIgZGVncmVlc09mRnJlZWRvbSA9IG51bWJlck9mU2FtcGxlcyAtIDE7CiAgICAgICAg
aWYgKGRlZ3JlZXNPZkZyZWVkb20gPiBjZGZGb3JQcm9iYWJpbGl0eS5sZW5ndGgpCiAgICAgICAg
ICAgIHRocm93ICdXZSBvbmx5IHN1cHBvcnQgdXAgdG8gJyArIGRlbHRhcy5sZW5ndGggKyAnIGRl
Z3JlZXMgb2YgZnJlZWRvbSc7CgogICAgICAgIC8vIHREaXN0cmlidXRpb25RdWFudGlsZShkZWdy
ZWVzT2ZGcmVlZG9tLCBjb25maWRlbmNlTGV2ZWwpICogc2FtcGxlU3RhbmRhcmREZXZpYXRpb24g
LyBzcXJ0KG51bWJlck9mU2FtcGxlcykgKiBTL3NxcnQobnVtYmVyT2ZTYW1wbGVzKQogICAgICAg
IHZhciBxdWFudGlsZSA9IGNkZkZvclByb2JhYmlsaXR5W2RlZ3JlZXNPZkZyZWVkb20gLSAxXTsg
Ly8gVGhlIGZpcnN0IGVudHJ5IGlzIGZvciB0aGUgb25lIGRlZ3JlZSBvZiBmcmVlZG9tLgogICAg
ICAgIHJldHVybiBxdWFudGlsZSAqIHRoaXMuc2FtcGxlU3RhbmRhcmREZXZpYXRpb24obnVtYmVy
T2ZTYW1wbGVzLCBzdW0sIHNxdWFyZVN1bSkgLyBNYXRoLnNxcnQobnVtYmVyT2ZTYW1wbGVzKTsK
ICAgIH0KCiAgICB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbCA9IGZ1bmN0aW9uICh2YWx1ZXMsIHBy
b2JhYmlsaXR5KSB7CiAgICAgICAgdmFyIHN1bSA9IHRoaXMuc3VtKHZhbHVlcyk7CiAgICAgICAg
dmFyIG1lYW4gPSBzdW0gLyB2YWx1ZXMubGVuZ3RoOwogICAgICAgIHZhciBkZWx0YSA9IHRoaXMu
Y29uZmlkZW5jZUludGVydmFsRGVsdGEocHJvYmFiaWxpdHkgfHwgMC45NSwgdmFsdWVzLmxlbmd0
aCwgc3VtLCB0aGlzLnNxdWFyZVN1bSh2YWx1ZXMpKTsKICAgICAgICByZXR1cm4gW21lYW4gLSBk
ZWx0YSwgbWVhbiArIGRlbHRhXTsKICAgIH0KCiAgICAvLyBTZWUgaHR0cDovL2VuLndpa2lwZWRp
YS5vcmcvd2lraS9TdHVkZW50J3NfdC1kaXN0cmlidXRpb24jVGFibGVfb2Zfc2VsZWN0ZWRfdmFs
dWVzCiAgICAvLyBUaGlzIHRhYmxlIGNvbnRhaW5zIG9uZSBzaWRlZCAoYS5rLmEuIHRhaWwpIHZh
bHVlcy4KICAgIHZhciB0RGlzdHJpYnV0aW9uSW52ZXJzZUNERiA9IHsKICAgICAgICAwLjk6IFsK
ICAgICAgICAgICAgMy4wNzc2ODQsIDEuODg1NjE4LCAxLjYzNzc0NCwgMS41MzMyMDYsIDEuNDc1
ODg0LCAxLjQzOTc1NiwgMS40MTQ5MjQsIDEuMzk2ODE1LCAxLjM4MzAyOSwgMS4zNzIxODQsCiAg
ICAgICAgICAgIDEuMzYzNDMwLCAxLjM1NjIxNywgMS4zNTAxNzEsIDEuMzQ1MDMwLCAxLjM0MDYw
NiwgMS4zMzY3NTcsIDEuMzMzMzc5LCAxLjMzMDM5MSwgMS4zMjc3MjgsIDEuMzI1MzQxLAogICAg
ICAgICAgICAxLjMyMzE4OCwgMS4zMjEyMzcsIDEuMzE5NDYwLCAxLjMxNzgzNiwgMS4zMTYzNDUs
IDEuMzE0OTcyLCAxLjMxMzcwMywgMS4zMTI1MjcsIDEuMzExNDM0LCAxLjMxMDQxNSwKICAgICAg
ICAgICAgMS4zMDk0NjQsIDEuMzA4NTczLCAxLjMwNzczNywgMS4zMDY5NTIsIDEuMzA2MjEyLCAx
LjMwNTUxNCwgMS4zMDQ4NTQsIDEuMzA0MjMwLCAxLjMwMzYzOSwgMS4zMDMwNzcsCiAgICAgICAg
ICAgIDEuMzAyNTQzLCAxLjMwMjAzNSwgMS4zMDE1NTIsIDEuMzAxMDkwLCAxLjMwMDY0OSwgMS4z
MDAyMjgsIDEuMjk5ODI1LCAxLjI5OTQzOSwgMS4yOTkwNjksIDEuMjk4NzE0LAoKICAgICAgICAg
ICAgMS4yOTgzNzMsIDEuMjk4MDQ1LCAxLjI5NzczMCwgMS4yOTc0MjYsIDEuMjk3MTM0LCAxLjI5
Njg1MywgMS4yOTY1ODEsIDEuMjk2MzE5LCAxLjI5NjA2NiwgMS4yOTU4MjEsCiAgICAgICAgICAg
IDEuMjk1NTg1LCAxLjI5NTM1NiwgMS4yOTUxMzQsIDEuMjk0OTIwLCAxLjI5NDcxMiwgMS4yOTQ1
MTEsIDEuMjk0MzE1LCAxLjI5NDEyNiwgMS4yOTM5NDIsIDEuMjkzNzYzLAogICAgICAgICAgICAx
LjI5MzU4OSwgMS4yOTM0MjEsIDEuMjkzMjU2LCAxLjI5MzA5NywgMS4yOTI5NDEsIDEuMjkyNzkw
LCAxLjI5MjY0MywgMS4yOTI1MDAsIDEuMjkyMzYwLCAxLjI5MjIyNCwKICAgICAgICAgICAgMS4y
OTIwOTEsIDEuMjkxOTYxLCAxLjI5MTgzNSwgMS4yOTE3MTEsIDEuMjkxNTkxLCAxLjI5MTQ3Mywg
MS4yOTEzNTgsIDEuMjkxMjQ2LCAxLjI5MTEzNiwgMS4yOTEwMjksCiAgICAgICAgICAgIDEuMjkw
OTI0LCAxLjI5MDgyMSwgMS4yOTA3MjEsIDEuMjkwNjIzLCAxLjI5MDUyNywgMS4yOTA0MzIsIDEu
MjkwMzQwLCAxLjI5MDI1MCwgMS4yOTAxNjEsIDEuMjkwMDc1XSwKICAgICAgICAwLjk1OiBbCiAg
ICAgICAgICAgIDYuMzEzNzUyLCAyLjkxOTk4NiwgMi4zNTMzNjMsIDIuMTMxODQ3LCAyLjAxNTA0
OCwgMS45NDMxODAsIDEuODk0NTc5LCAxLjg1OTU0OCwgMS44MzMxMTMsIDEuODEyNDYxLAogICAg
ICAgICAgICAxLjc5NTg4NSwgMS43ODIyODgsIDEuNzcwOTMzLCAxLjc2MTMxMCwgMS43NTMwNTAs
IDEuNzQ1ODg0LCAxLjczOTYwNywgMS43MzQwNjQsIDEuNzI5MTMzLCAxLjcyNDcxOCwKICAgICAg
ICAgICAgMS43MjA3NDMsIDEuNzE3MTQ0LCAxLjcxMzg3MiwgMS43MTA4ODIsIDEuNzA4MTQxLCAx
LjcwNTYxOCwgMS43MDMyODgsIDEuNzAxMTMxLCAxLjY5OTEyNywgMS42OTcyNjEsCiAgICAgICAg
ICAgIDEuNjk1NTE5LCAxLjY5Mzg4OSwgMS42OTIzNjAsIDEuNjkwOTI0LCAxLjY4OTU3MiwgMS42
ODgyOTgsIDEuNjg3MDk0LCAxLjY4NTk1NCwgMS42ODQ4NzUsIDEuNjgzODUxLAogICAgICAgICAg
ICAxLjY4Mjg3OCwgMS42ODE5NTIsIDEuNjgxMDcxLCAxLjY4MDIzMCwgMS42Nzk0MjcsIDEuNjc4
NjYwLCAxLjY3NzkyNywgMS42NzcyMjQsIDEuNjc2NTUxLCAxLjY3NTkwNSwKCiAgICAgICAgICAg
IDEuNjc1Mjg1LCAxLjY3NDY4OSwgMS42NzQxMTYsIDEuNjczNTY1LCAxLjY3MzAzNCwgMS42NzI1
MjIsIDEuNjcyMDI5LCAxLjY3MTU1MywgMS42NzEwOTMsIDEuNjcwNjQ5LAogICAgICAgICAgICAx
LjY3MDIxOSwgMS42Njk4MDQsIDEuNjY5NDAyLCAxLjY2OTAxMywgMS42Njg2MzYsIDEuNjY4Mjcx
LCAxLjY2NzkxNiwgMS42Njc1NzIsIDEuNjY3MjM5LCAxLjY2NjkxNCwKICAgICAgICAgICAgMS42
NjY2MDAsIDEuNjY2Mjk0LCAxLjY2NTk5NiwgMS42NjU3MDcsIDEuNjY1NDI1LCAxLjY2NTE1MSwg
MS42NjQ4ODUsIDEuNjY0NjI1LCAxLjY2NDM3MSwgMS42NjQxMjUsCiAgICAgICAgICAgIDEuNjYz
ODg0LCAxLjY2MzY0OSwgMS42NjM0MjAsIDEuNjYzMTk3LCAxLjY2Mjk3OCwgMS42NjI3NjUsIDEu
NjYyNTU3LCAxLjY2MjM1NCwgMS42NjIxNTUsIDEuNjYxOTYxLAogICAgICAgICAgICAxLjY2MTc3
MSwgMS42NjE1ODUsIDEuNjYxNDA0LCAxLjY2MTIyNiwgMS42NjEwNTIsIDEuNjYwODgxLCAxLjY2
MDcxNSwgMS42NjA1NTEsIDEuNjYwMzkxLCAxLjY2MDIzNF0sCiAgICAgICAgMC45NzU6IFsKICAg
ICAgICAgICAgMTIuNzA2MjA1LCA0LjMwMjY1MywgMy4xODI0NDYsIDIuNzc2NDQ1LCAyLjU3MDU4
MiwgMi40NDY5MTIsIDIuMzY0NjI0LCAyLjMwNjAwNCwgMi4yNjIxNTcsIDIuMjI4MTM5LAogICAg
ICAgICAgICAyLjIwMDk4NSwgMi4xNzg4MTMsIDIuMTYwMzY5LCAyLjE0NDc4NywgMi4xMzE0NTAs
IDIuMTE5OTA1LCAyLjEwOTgxNiwgMi4xMDA5MjIsIDIuMDkzMDI0LCAyLjA4NTk2MywKICAgICAg
ICAgICAgMi4wNzk2MTQsIDIuMDczODczLCAyLjA2ODY1OCwgMi4wNjM4OTksIDIuMDU5NTM5LCAy
LjA1NTUyOSwgMi4wNTE4MzEsIDIuMDQ4NDA3LCAyLjA0NTIzMCwgMi4wNDIyNzIsCiAgICAgICAg
ICAgIDIuMDM5NTEzLCAyLjAzNjkzMywgMi4wMzQ1MTUsIDIuMDMyMjQ1LCAyLjAzMDEwOCwgMi4w
MjgwOTQsIDIuMDI2MTkyLCAyLjAyNDM5NCwgMi4wMjI2OTEsIDIuMDIxMDc1LAogICAgICAgICAg
ICAyLjAxOTU0MSwgMi4wMTgwODIsIDIuMDE2NjkyLCAyLjAxNTM2OCwgMi4wMTQxMDMsIDIuMDEy
ODk2LCAyLjAxMTc0MSwgMi4wMTA2MzUsIDIuMDA5NTc1LCAyLjAwODU1OSwKCiAgICAgICAgICAg
IDIuMDA3NTg0LCAyLjAwNjY0NywgMi4wMDU3NDYsIDIuMDA0ODc5LCAyLjAwNDA0NSwgMi4wMDMy
NDEsIDIuMDAyNDY1LCAyLjAwMTcxNywgMi4wMDA5OTUsIDIuMDAwMjk4LAogICAgICAgICAgICAx
Ljk5OTYyNCwgMS45OTg5NzIsIDEuOTk4MzQxLCAxLjk5NzczMCwgMS45OTcxMzgsIDEuOTk2NTY0
LCAxLjk5NjAwOCwgMS45OTU0NjksIDEuOTk0OTQ1LCAxLjk5NDQzNywKICAgICAgICAgICAgMS45
OTM5NDMsIDEuOTkzNDY0LCAxLjk5Mjk5NywgMS45OTI1NDMsIDEuOTkyMTAyLCAxLjk5MTY3Mywg
MS45OTEyNTQsIDEuOTkwODQ3LCAxLjk5MDQ1MCwgMS45OTAwNjMsCiAgICAgICAgICAgIDEuOTg5
Njg2LCAxLjk4OTMxOSwgMS45ODg5NjAsIDEuOTg4NjEwLCAxLjk4ODI2OCwgMS45ODc5MzQsIDEu
OTg3NjA4LCAxLjk4NzI5MCwgMS45ODY5NzksIDEuOTg2Njc1LAogICAgICAgICAgICAxLjk4NjM3
NywgMS45ODYwODYsIDEuOTg1ODAyLCAxLjk4NTUyMywgMS45ODUyNTEsIDEuOTg0OTg0LCAxLjk4
NDcyMywgMS45ODQ0NjcsIDEuOTg0MjE3LCAxLjk4Mzk3Ml0sCiAgICAgICAgMC45OTogWwogICAg
ICAgICAgICAzMS44MjA1MTYsIDYuOTY0NTU3LCA0LjU0MDcwMywgMy43NDY5NDcsIDMuMzY0OTMw
LCAzLjE0MjY2OCwgMi45OTc5NTIsIDIuODk2NDU5LCAyLjgyMTQzOCwgMi43NjM3NjksCiAgICAg
ICAgICAgIDIuNzE4MDc5LCAyLjY4MDk5OCwgMi42NTAzMDksIDIuNjI0NDk0LCAyLjYwMjQ4MCwg
Mi41ODM0ODcsIDIuNTY2OTM0LCAyLjU1MjM4MCwgMi41Mzk0ODMsIDIuNTI3OTc3LAogICAgICAg
ICAgICAyLjUxNzY0OCwgMi41MDgzMjUsIDIuNDk5ODY3LCAyLjQ5MjE1OSwgMi40ODUxMDcsIDIu
NDc4NjMwLCAyLjQ3MjY2MCwgMi40NjcxNDAsIDIuNDYyMDIxLCAyLjQ1NzI2MiwKICAgICAgICAg
ICAgMi40NTI4MjQsIDIuNDQ4Njc4LCAyLjQ0NDc5NCwgMi40NDExNTAsIDIuNDM3NzIzLCAyLjQz
NDQ5NCwgMi40MzE0NDcsIDIuNDI4NTY4LCAyLjQyNTg0MSwgMi40MjMyNTcsCiAgICAgICAgICAg
IDIuNDIwODAzLCAyLjQxODQ3MCwgMi40MTYyNTAsIDIuNDE0MTM0LCAyLjQxMjExNiwgMi40MTAx
ODgsIDIuNDA4MzQ1LCAyLjQwNjU4MSwgMi40MDQ4OTIsIDIuNDAzMjcyLAoKICAgICAgICAgICAg
Mi40MDE3MTgsIDIuNDAwMjI1LCAyLjM5ODc5MCwgMi4zOTc0MTAsIDIuMzk2MDgxLCAyLjM5NDgw
MSwgMi4zOTM1NjgsIDIuMzkyMzc3LCAyLjM5MTIyOSwgMi4zOTAxMTksCiAgICAgICAgICAgIDIu
Mzg5MDQ3LCAyLjM4ODAxMSwgMi4zODcwMDgsIDIuMzg2MDM3LCAyLjM4NTA5NywgMi4zODQxODYs
IDIuMzgzMzAyLCAyLjM4MjQ0NiwgMi4zODE2MTUsIDIuMzgwODA3LAogICAgICAgICAgICAyLjM4
MDAyNCwgMi4zNzkyNjIsIDIuMzc4NTIyLCAyLjM3NzgwMiwgMi4zNzcxMDIsIDIuMzc2NDIwLCAy
LjM3NTc1NywgMi4zNzUxMTEsIDIuMzc0NDgyLCAyLjM3Mzg2OCwKICAgICAgICAgICAgMi4zNzMy
NzAsIDIuMzcyNjg3LCAyLjM3MjExOSwgMi4zNzE1NjQsIDIuMzcxMDIyLCAyLjM3MDQ5MywgMi4z
Njk5NzcsIDIuMzY5NDcyLCAyLjM2ODk3OSwgMi4zNjg0OTcsCiAgICAgICAgICAgIDIuMzY4MDI2
LCAyLjM2NzU2NiwgMi4zNjcxMTUsIDIuMzY2Njc0LCAyLjM2NjI0MywgMi4zNjU4MjEsIDIuMzY1
NDA3LCAyLjM2NTAwMiwgMi4zNjQ2MDYsIDIuMzY0MjE3XQogICAgfTsKCn0pKCk7CgppZiAodHlw
ZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykgewogICAgZm9yICh2YXIga2V5IGluIFN0YXRpc3Rp
Y3MpCiAgICAgICAgbW9kdWxlLmV4cG9ydHNba2V5XSA9IFN0YXRpc3RpY3Nba2V5XTsKfQpfEA90
ZXh0L2phdmFzY3JpcHTVHQUHCB4fICEiI18QFFdlYlJlc291cmNlRnJhbWVOYW1lXxAbV2ViUmVz
b3VyY2VUZXh0RW5jb2RpbmdOYW1lUF8QLGZpbGU6Ly8vVXNlcnMvYWJ1Y3VyL0RvY3VtZW50cy9k
cm9tYWVvMi5odG1sTxIAAuU3PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+Cjx0aXRsZT5XZWJL
aXQgUGVyZm9ybWFuY2UgVGVzdCBSZXN1bHRzPC90aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KCnNlY3Rpb24gewogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICBwYWRkaW5nOiAxMHB4Owog
ICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoudGltZS1wbG90cyB7CiAgICBwYWRkaW5nLWxlZnQ6
IDI1cHg7Cn0KCi50aW1lLXBsb3RzID4gZGl2IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
ICAgIHdpZHRoOiA5MHB4OwogICAgaGVpZ2h0OiA0MHB4OwogICAgbWFyZ2luLXJpZ2h0OiAxMHB4
Owp9CgpzZWN0aW9uIGgxIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTog
MWVtOwp9CgpzZWN0aW9uIC50b29sdGlwIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6ICNmZmNjNjY7CiAgICBib3JkZXItcmFk
aXVzOiA1cHg7CiAgICBwYWRkaW5nOiAwcHggNXB4Owp9Cgpib2R5IHsKICAgIHBhZGRpbmc6IDBw
eDsKICAgIG1hcmdpbjogMHB4OwogICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7Cn0KCnRhYmxl
IHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgd2lkdGg6IDEwMCU7Cn0KCnRhYmxlLCB0ZCwg
dGggewogICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgIHBhZGRpbmc6IDVweDsKfQoK
dHIuZXZlbiB7CiAgICBiYWNrZ3JvdW5kOiAjZjZmNmY2Owp9Cgp0YWJsZSB0ZCB7CiAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwp9Cgp0aCwgdGQgewog
ICAgY3Vyc29yOiBwb2ludGVyOwogICAgY3Vyc29yOiBoYW5kOwp9Cgp0aCB7CiAgICBiYWNrZ3Jv
dW5kOiAjZTZlZWVlOwogICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIGxl
ZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMjQ0LCAyNDQsIDI0NCkpLCB0byhyZ2IoMjE3
LCAyMTcsIDIxNykpKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7Cn0KCnRoOmFmdGVyIHsK
ICAgIGNvbnRlbnQ6ICcgXDI1QjgnOwp9Cgp0aC5oZWFkZXJTb3J0VXA6YWZ0ZXIgewogICAgY29u
dGVudDogJyBcMjVCRSc7Cn0KCnRoLmhlYWRlclNvcnREb3duOmFmdGVyIHsKICAgIGNvbnRlbnQ6
ICcgXDI1QjQnOwp9Cgp0ZC5jb21wYXJpc29uLCB0ZC5yZXN1bHQgewogICAgdGV4dC1hbGlnbjog
cmlnaHQ7Cn0KCnRkLmJldHRlciB7CiAgICBjb2xvcjogIzZjNjsKfQoKdGQud29yc2UgewogICAg
Y29sb3I6ICNjNjY7Cn0KCnRkLm1pc3NpbmcgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgou
Y2hlY2tib3ggewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgYmFja2dyb3VuZDogI2Vl
ZTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IGJvdHRvbSwg
bGVmdCB0b3AsIGZyb20ocmdiKDIyMCwgMjIwLCAyMjApKSwgdG8ocmdiKDIwMCwgMjAwLCAyMDAp
KSk7CiAgICBib3JkZXI6IGluc2V0IDFweCAjZGRkOwogICAgYm9yZGVyLXJhZGl1czogNXB4Owog
ICAgbWFyZ2luOiAxMHB4OwogICAgZm9udC1zaXplOiBzbWFsbDsKICAgIGN1cnNvcjogcG9pbnRl
cjsKICAgIGN1cnNvcjogaGFuZDsKICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICBm
b250LXdlaWdodDogYm9sZDsKfQoKLmNoZWNrYm94IHNwYW4gewogICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOwogICAgbGluZS1oZWlnaHQ6IDEwMCU7CiAgICBwYWRkaW5nOiA1cHggOHB4OwogICAg
Ym9yZGVyOiBvdXRzZXQgMXB4IHRyYW5zcGFyZW50Owp9CgouY2hlY2tib3ggLmNoZWNrZWQgewog
ICAgYmFja2dyb3VuZDogI2U2ZWVlZTsKICAgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQo
bGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdiKDI1NSwgMjU1LCAyNTUpKSwg
dG8ocmdiKDIzNSwgMjM1LCAyMzUpKSk7CiAgICBib3JkZXI6IG91dHNldCAxcHggI2VlZTsKICAg
IGJvcmRlci1yYWRpdXM6IDVweDsKfQoKPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KPGRpdiBzdHls
ZT0icGFkZGluZzogMCAxMHB4OyI+ClJlc3VsdCA8c3BhbiBpZD0idGltZS1tZW1vcnkiIGNsYXNz
PSJjaGVja2JveCI+PHNwYW4gY2xhc3M9ImNoZWNrZWQiPlRpbWU8L3NwYW4+PHNwYW4+TWVtb3J5
PC9zcGFuPjwvc3Bhbj4KUmVmZXJlbmNlIDxzcGFuIGlkPSJyZWZlcmVuY2UiIGNsYXNzPSJjaGVj
a2JveCI+PHNwYW4gdmFsdWU9IjAiIGNsYXNzPSJjaGVja2VkIj5yMTQ4NTA4IOKAkCBObyBwYXRj
aDwvc3Bhbj48c3BhbiB2YWx1ZT0iMSI+cjE0ODUwOCDigJAgTm8gcGF0Y2g8L3NwYW4+PHNwYW4g
dmFsdWU9IjIiPnIxNDg1MDgg4oCQIE5vIHBhdGNoPC9zcGFuPjxzcGFuIHZhbHVlPSIzIj5yMTQ4
NTA4IOKAkCBObyBwYXRjaDwvc3Bhbj48c3BhbiB2YWx1ZT0iNCI+cjE0ODUwOCDigJAgTm8gcGF0
Y2g8L3NwYW4+PHNwYW4gdmFsdWU9IjUiPnIxNDg1MDgg4oCQIFdpdGggcGF0Y2g8L3NwYW4+PHNw
YW4gdmFsdWU9IjYiPnIxNDg1MDgg4oCQIFdpdGggcGF0Y2g8L3NwYW4+PHNwYW4gdmFsdWU9Ijci
PnIxNDg1MDgg4oCQIFdpdGggcGF0Y2g8L3NwYW4+PHNwYW4gdmFsdWU9IjgiPnIxNDg1MDgg4oCQ
IFdpdGggcGF0Y2g8L3NwYW4+PHNwYW4gdmFsdWU9IjkiPnIxNDg1MDgg4oCQIFdpdGggcGF0Y2g8
L3NwYW4+PC9zcGFuPgo8L2Rpdj4KPHRhYmxlIGlkPSJjb250YWluZXIiPjx0aGVhZD48dHI+PHRo
IGNsYXNzPSJoZWFkZXIiPlRlc3Q8L3RoPjx0aCBjbGFzcz0iaGVhZGVyIj5Vbml0PC90aD48dGgg
Y29sc3Bhbj0iMiIgY2xhc3M9Intzb3J0ZXI6ICdjb21wYXJpc29uJ30gaGVhZGVyIj5yMTQ4NTA4
IOKAkCBObyBwYXRjaDwvdGg+PHRoIGNvbHNwYW49IjMiIGNsYXNzPSJ7c29ydGVyOiAnY29tcGFy
aXNvbid9IGhlYWRlciI+cjE0ODUwOCDigJAgTm8gcGF0Y2g8L3RoPjx0aCBjb2xzcGFuPSIzIiBj
bGFzcz0ie3NvcnRlcjogJ2NvbXBhcmlzb24nfSBoZWFkZXIiPnIxNDg1MDgg4oCQIE5vIHBhdGNo
PC90aD48dGggY29sc3Bhbj0iMyIgY2xhc3M9Intzb3J0ZXI6ICdjb21wYXJpc29uJ30gaGVhZGVy
Ij5yMTQ4NTA4IOKAkCBObyBwYXRjaDwvdGg+PHRoIGNvbHNwYW49IjMiIGNsYXNzPSJ7c29ydGVy
OiAnY29tcGFyaXNvbid9IGhlYWRlciI+cjE0ODUwOCDigJAgTm8gcGF0Y2g8L3RoPjx0aCBjb2xz
cGFuPSIzIiBjbGFzcz0ie3NvcnRlcjogJ2NvbXBhcmlzb24nfSBoZWFkZXIiPnIxNDg1MDgg4oCQ
IFdpdGggcGF0Y2g8L3RoPjx0aCBjb2xzcGFuPSIzIiBjbGFzcz0ie3NvcnRlcjogJ2NvbXBhcmlz
b24nfSBoZWFkZXIiPnIxNDg1MDgg4oCQIFdpdGggcGF0Y2g8L3RoPjx0aCBjb2xzcGFuPSIzIiBj
bGFzcz0ie3NvcnRlcjogJ2NvbXBhcmlzb24nfSBoZWFkZXIiPnIxNDg1MDgg4oCQIFdpdGggcGF0
Y2g8L3RoPjx0aCBjb2xzcGFuPSIzIiBjbGFzcz0ie3NvcnRlcjogJ2NvbXBhcmlzb24nfSBoZWFk
ZXIiPnIxNDg1MDgg4oCQIFdpdGggcGF0Y2g8L3RoPjx0aCBjb2xzcGFuPSIzIiBjbGFzcz0ie3Nv
cnRlcjogJ2NvbXBhcmlzb24nfSBoZWFkZXIiPnIxNDg1MDgg4oCQIFdpdGggcGF0Y2g8L3RoPjwv
dHI+PC90aGVhZD48dGJvZHk+PHRyIGNsYXNzPSJvZGQiPjx0ZCBjbGFzcz0idGVzdCI+L0Ryb21h
ZW8vZG9tLWF0dHI6UnVuczwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij5ydW5zL3M8L3RkPjx0ZCBjbGFz
cz0icmVzdWx0IiB0aXRsZT0iz4M9MS4wOCwgbWluPTExOS4xNiwgbWF4PTEyNS42NApzbG9wZT0w
LjI0LCBSXjI9MC4zNyI+MTIzLjMwPC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERl
bHRhIiB0aXRsZT0iz4M9MS4wOCwgbWluPTExOS4xNiwgbWF4PTEyNS42NApzbG9wZT0wLjI0LCBS
XjI9MC4zNyI+wrEgMC44NyU8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4zNCwg
bWluPTEyMy41OSwgbWF4PTEyNi4xMQpzbG9wZT0tMC4wMCwgUl4yPTAuMDAiPjEyNS4xODxzcGFu
IHN0eWxlPSJkaXNwbGF5OiBub25lIj58MS41MyUgQmV0dGVyPC9zcGFuPjwvdGQ+PHRkIGNsYXNz
PSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMzQsIG1pbj0xMjMuNTksIG1h
eD0xMjYuMTEKc2xvcGU9LTAuMDAsIFJeMj0wLjAwIj7CsSAwLjI3JTwvdGQ+PHRkIGNsYXNzPSJj
b21wYXJpc29uIGJldHRlciI+MS41MyUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0
bGU9Is+DPTAuMzAsIG1pbj0xMjQuNTQsIG1heD0xMjYuNzkKc2xvcGU9MC4wNiwgUl4yPTAuMjki
PjEyNS44MDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58Mi4wMyUgQmV0dGVyPC9zcGFuPjwv
dGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMzAsIG1p
bj0xMjQuNTQsIG1heD0xMjYuNzkKc2xvcGU9MC4wNiwgUl4yPTAuMjkiPsKxIDAuMjQlPC90ZD48
dGQgY2xhc3M9ImNvbXBhcmlzb24gYmV0dGVyIj4yLjAzJSBCZXR0ZXI8L3RkPjx0ZCBjbGFzcz0i
cmVzdWx0IiB0aXRsZT0iz4M9MC45OSwgbWluPTExOS43NCwgbWF4PTEyNi4zNApzbG9wZT0wLjEz
LCBSXjI9MC4xNCI+MTIzLjg2PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90
ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC45OSwgbWlu
PTExOS43NCwgbWF4PTEyNi4zNApzbG9wZT0wLjEzLCBSXjI9MC4xNCI+wrEgMC44MCU8L3RkPjx0
ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTIu
NzIsIG1pbj0xMDkuNzksIG1heD0xMjUuMjkKc2xvcGU9LTAuMzEsIFJeMj0wLjEwIj4xMjAuOTc8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0yLjcyLCBtaW49MTA5Ljc5LCBtYXg9MTI1LjI5
CnNsb3BlPS0wLjMxLCBSXjI9MC4xMCI+wrEgMi4yNSU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNv
biI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTQuNjgsIG1pbj0xMDAuMjksIG1h
eD0xMjUuNDQKc2xvcGU9LTAuMzEsIFJeMj0wLjAzIj4xMTguNDg8c3BhbiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+fDMuOTAlIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTQuNjgsIG1pbj0xMDAuMjksIG1heD0xMjUuNDQK
c2xvcGU9LTAuMzEsIFJeMj0wLjAzIj7CsSAzLjk1JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29u
IHdvcnNlIj4zLjkwJSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLP
gz0wLjY3LCBtaW49MTIwLjg3LCBtYXg9MTI1LjY4CnNsb3BlPTAuMDYsIFJeMj0wLjA2Ij4xMjMu
NzM8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29u
ZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjY3LCBtaW49MTIwLjg3LCBtYXg9MTI1
LjY4CnNsb3BlPTAuMDYsIFJeMj0wLjA2Ij7CsSAwLjU0JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJp
c29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4zNiwgbWluPTEyMy41MSwg
bWF4PTEyNi4zMwpzbG9wZT0tMC4wMCwgUl4yPTAuMDAiPjEyNS4yNjxzcGFuIHN0eWxlPSJkaXNw
bGF5OiBub25lIj58MS41OSUgQmV0dGVyPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNl
SW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMzYsIG1pbj0xMjMuNTEsIG1heD0xMjYuMzMKc2xv
cGU9LTAuMDAsIFJeMj0wLjAwIj7CsSAwLjI5JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIGJl
dHRlciI+MS41OSUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuNTQs
IG1pbj0xMjIuNzEsIG1heD0xMjYuODAKc2xvcGU9LTAuMDQsIFJeMj0wLjA0Ij4xMjQuOTQ8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDEuMzMlIEJldHRlcjwvc3Bhbj48L3RkPjx0ZCBjbGFz
cz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjU0LCBtaW49MTIyLjcxLCBt
YXg9MTI2LjgwCnNsb3BlPS0wLjA0LCBSXjI9MC4wNCI+wrEgMC40MyU8L3RkPjx0ZCBjbGFzcz0i
Y29tcGFyaXNvbiBiZXR0ZXIiPjEuMzMlIEJldHRlcjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRp
dGxlPSLPgz0wLjY5LCBtaW49MTIwLjQyLCBtYXg9MTI1LjI0CnNsb3BlPTAuMTksIFJeMj0wLjU2
Ij4xMjMuNjI8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFz
cz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjY5LCBtaW49MTIwLjQyLCBt
YXg9MTI1LjI0CnNsb3BlPTAuMTksIFJeMj0wLjU2Ij7CsSAwLjU2JTwvdGQ+PHRkIGNsYXNzPSJj
b21wYXJpc29uIj48L3RkPjwvdHI+PHRyIGNsYXNzPSJldmVuIj48dGQgY2xhc3M9InRlc3QiPi9E
cm9tYWVvL2RvbS1tb2RpZnk6UnVuczwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij5ydW5zL3M8L3RkPjx0
ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC41OSwgbWluPTU0LjcyLCBtYXg9NTguMTQKc2xv
cGU9MC4wNCwgUl4yPTAuMDMiPjU2LjMzPC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZh
bERlbHRhIiB0aXRsZT0iz4M9MC41OSwgbWluPTU0LjcyLCBtYXg9NTguMTQKc2xvcGU9MC4wNCwg
Ul4yPTAuMDMiPsKxIDEuMDUlPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuNjAs
IG1pbj01NC4xNSwgbWF4PTU4LjIzCnNsb3BlPTAuMDUsIFJeMj0wLjA1Ij41Ni4zMzxzcGFuIHN0
eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50
ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuNjAsIG1pbj01NC4xNSwgbWF4PTU4LjIzCnNsb3BlPTAu
MDUsIFJeMj0wLjA1Ij7CsSAxLjA2JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0
ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC42MiwgbWluPTU0LjMwLCBtYXg9NTguNzEKc2xv
cGU9MC4wMywgUl4yPTAuMDIiPjU2LjQ0PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3Nw
YW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC42
MiwgbWluPTU0LjMwLCBtYXg9NTguNzEKc2xvcGU9MC4wMywgUl4yPTAuMDIiPsKxIDEuMTAlPC90
ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLP
gz0wLjYwLCBtaW49NTQuMjYsIG1heD01OC42NgpzbG9wZT0wLjA1LCBSXjI9MC4wNSI+NTYuMTE8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjYwLCBtaW49NTQuMjYsIG1heD01OC42Ngpz
bG9wZT0wLjA1LCBSXjI9MC4wNSI+wrEgMS4wNiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+
PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuNjAsIG1pbj01NC43NCwgbWF4PTU4
Ljc3CnNsb3BlPTAuMDgsIFJeMj0wLjE1Ij41Ni40OTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25l
Ij58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9
Is+DPTAuNjAsIG1pbj01NC43NCwgbWF4PTU4Ljc3CnNsb3BlPTAuMDgsIFJeMj0wLjE1Ij7CsSAx
LjA1JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0
aXRsZT0iz4M9MC42MiwgbWluPTUzLjI5LCBtYXg9NTcuMjkKc2xvcGU9MC4wNSwgUl4yPTAuMDUi
PjU1LjI5PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwxLjg1JSBXb3JzZSZuYnNwOzwvc3Bh
bj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjYy
LCBtaW49NTMuMjksIG1heD01Ny4yOQpzbG9wZT0wLjA1LCBSXjI9MC4wNSI+wrEgMS4xMyU8L3Rk
Pjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MS44NSUgV29yc2UmbmJzcDs8L3RkPjx0ZCBj
bGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC41OCwgbWluPTUzLjQyLCBtYXg9NTcuMjkKc2xvcGU9
MC4wNSwgUl4yPTAuMDYiPjU1LjM1PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwxLjc0JSBX
b3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz0wLjU4LCBtaW49NTMuNDIsIG1heD01Ny4yOQpzbG9wZT0wLjA1LCBSXjI9MC4w
NiI+wrEgMS4wNCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MS43NCUgV29yc2Um
bmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC42MywgbWluPTUzLjU2LCBt
YXg9NTcuNTYKc2xvcGU9MC4wNiwgUl4yPTAuMDYiPjU1LjQ4PHNwYW4gc3R5bGU9ImRpc3BsYXk6
IG5vbmUiPnwxLjUyJSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5j
ZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjYzLCBtaW49NTMuNTYsIG1heD01Ny41NgpzbG9w
ZT0wLjA2LCBSXjI9MC4wNiI+wrEgMS4xNCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3Jz
ZSI+MS41MiUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC41
OCwgbWluPTUzLjA3LCBtYXg9NTcuNDEKc2xvcGU9MC4wNCwgUl4yPTAuMDUiPjU1LjMwPHNwYW4g
c3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwxLjgzJSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBj
bGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjU4LCBtaW49NTMuMDcs
IG1heD01Ny40MQpzbG9wZT0wLjA0LCBSXjI9MC4wNSI+wrEgMS4wNCU8L3RkPjx0ZCBjbGFzcz0i
Y29tcGFyaXNvbiB3b3JzZSI+MS44MyUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0
IiB0aXRsZT0iz4M9MC41OCwgbWluPTUzLjY5LCBtYXg9NTcuMzUKc2xvcGU9MC4wNSwgUl4yPTAu
MDYiPjU1LjUwPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwxLjQ5JSBXb3JzZSZuYnNwOzwv
c3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0w
LjU4LCBtaW49NTMuNjksIG1heD01Ny4zNQpzbG9wZT0wLjA1LCBSXjI9MC4wNiI+wrEgMS4wNSU8
L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MS40OSUgV29yc2UmbmJzcDs8L3RkPjwv
dHI+PHRyIGNsYXNzPSJvZGQiPjx0ZCBjbGFzcz0idGVzdCI+L0Ryb21hZW8vZG9tLXF1ZXJ5OlJ1
bnM8L3RkPjx0ZCBjbGFzcz0idW5pdCI+cnVucy9zPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0
bGU9Is+DPTguNzksIG1pbj0xNjkuNTEsIG1heD0yMTUuNzkKc2xvcGU9LTIuMTQsIFJeMj0wLjQ1
Ij4yMDIuMjY8L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLP
gz04Ljc5LCBtaW49MTY5LjUxLCBtYXg9MjE1Ljc5CnNsb3BlPS0yLjE0LCBSXjI9MC40NSI+wrEg
NC4zNCU8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MTMuMzcsIG1pbj0xNTIuMzcs
IG1heD0yMjQuNDIKc2xvcGU9MC41NywgUl4yPTAuMDEiPjE5OS45NTxzcGFuIHN0eWxlPSJkaXNw
bGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0
YSIgdGl0bGU9Is+DPTEzLjM3LCBtaW49MTUyLjM3LCBtYXg9MjI0LjQyCnNsb3BlPTAuNTcsIFJe
Mj0wLjAxIj7CsSA2LjY5JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFz
cz0icmVzdWx0IiB0aXRsZT0iz4M9MS45NCwgbWluPTE5OS4yNCwgbWF4PTIxMi42MQpzbG9wZT0t
MC41NCwgUl4yPTAuNjAiPjIwNS45NDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFu
PjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTEuOTQs
IG1pbj0xOTkuMjQsIG1heD0yMTIuNjEKc2xvcGU9LTAuNTQsIFJeMj0wLjYwIj7CsSAwLjk0JSA8
c3BhbiBjbGFzcz0icmVncmVzc2lvbi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRl
cGVuZGVuY3kgd2l0aCBzbG9wZT0tMC41NCwgUl4yPTAuNjAiPjxzdmcgdmlld0JveD0iMCAwIDEw
MCAxMDAiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyB2ZXJ0aWNhbC1hbGlnbjog
Ym90dG9tOyIgdmVyc2lvbj0iMS4xIj48cG9seWdvbiBmaWxsPSJyZWQiIHBvaW50cz0iNTAsMTAg
OTAsODAgMTAsODAgNTAsMTAiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2Ut
bGluZWpvaW49InJvdW5kIj48L3BvbHlnb24+PHBvbHlnb24gZmlsbD0id2hpdGUiIHBvaW50cz0i
NDcsMzAgNDgsMjksIDUwLCAyOC43LCA1MiwyOSA1MywzMCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIg
c3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wb2x5Z29uPjxjaXJj
bGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYiIGZpbGw9IndoaXRlIj48L2NpcmNsZT48L3N2Zz4gPC9z
cGFuPjwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0
aXRsZT0iz4M9NC4wMCwgbWluPTE5OS42NCwgbWF4PTIyMy45MQpzbG9wZT0tMC43MiwgUl4yPTAu
MjUiPjIxNC40OTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58Ni4wNSUgQmV0dGVyPC9zcGFu
PjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTQuMDAs
IG1pbj0xOTkuNjQsIG1heD0yMjMuOTEKc2xvcGU9LTAuNzIsIFJeMj0wLjI1Ij7CsSAxLjg2JTwv
dGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIGJldHRlciI+Ni4wNSUgQmV0dGVyPC90ZD48dGQgY2xh
c3M9InJlc3VsdCIgdGl0bGU9Is+DPTcuNDUsIG1pbj0xODQuNjksIG1heD0yMjMuNjAKc2xvcGU9
MS44NCwgUl4yPTAuNDciPjIxMi40MDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58NS4wMSUg
QmV0dGVyPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0
bGU9Is+DPTcuNDUsIG1pbj0xODQuNjksIG1heD0yMjMuNjAKc2xvcGU9MS44NCwgUl4yPTAuNDci
PsKxIDMuNTElPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gYmV0dGVyIj41LjAxJSBCZXR0ZXI8
L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9Mi40MiwgbWluPTIwOS4wNiwgbWF4PTIy
My4zNQpzbG9wZT0wLjU5LCBSXjI9MC40NiI+MjE2LjMzPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5v
bmUiPnw2Ljk1JSBCZXR0ZXI8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZh
bERlbHRhIiB0aXRsZT0iz4M9Mi40MiwgbWluPTIwOS4wNiwgbWF4PTIyMy4zNQpzbG9wZT0wLjU5
LCBSXjI9MC40NiI+wrEgMS4xMiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiBiZXR0ZXIiPjYu
OTUlIEJldHRlcjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz05Ljc2LCBtaW49MTY4
Ljc0LCBtYXg9MjIwLjU0CnNsb3BlPTIuODMsIFJeMj0wLjY0Ij4yMDQuOTA8c3BhbiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFs
RGVsdGEiIHRpdGxlPSLPgz05Ljc2LCBtaW49MTY4Ljc0LCBtYXg9MjIwLjU0CnNsb3BlPTIuODMs
IFJeMj0wLjY0Ij7CsSA0Ljc2JSA8c3BhbiBjbGFzcz0icmVncmVzc2lvbi13YXJuaW5nIiB0aXRs
ZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCBzbG9wZT0yLjgzLCBSXjI9MC42NCI+
PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4
cHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPjxwb2x5Z29uIGZpbGw9
InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ryb2tlPSJyZWQiIHN0cm9r
ZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcG9seWdvbj48cG9seWdvbiBm
aWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUyLDI5IDUzLDMwIDUw
LDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIj48L3BvbHlnb24+PGNpcmNsZSBjeD0iNTAiIGN5PSI3MyIgcj0iNiIgZmlsbD0id2hpdGUi
PjwvY2lyY2xlPjwvc3ZnPiA8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+
PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0xNC4zMiwgbWluPTE0NS40OSwgbWF4PTIyMi43
MQpzbG9wZT0zLjU0LCBSXjI9MC40NyI+MTk3Ljc1PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUi
Pnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0i
z4M9MTQuMzIsIG1pbj0xNDUuNDksIG1heD0yMjIuNzEKc2xvcGU9My41NCwgUl4yPTAuNDciPsKx
IDcuMjQlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQi
IHRpdGxlPSLPgz02LjE1LCBtaW49MTg3LjAzLCBtYXg9MjIxLjg3CnNsb3BlPS0xLjU4LCBSXjI9
MC41MSI+MjA3Ljk4PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQg
Y2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9Ni4xNSwgbWluPTE4Ny4w
MywgbWF4PTIyMS44NwpzbG9wZT0tMS41OCwgUl4yPTAuNTEiPsKxIDIuOTYlPC90ZD48dGQgY2xh
c3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz05LjczLCBt
aW49MTc0LjQ2LCBtYXg9MjI1LjMzCnNsb3BlPS0xLjEwLCBSXjI9MC4xMCI+MjEwLjYxPHNwYW4g
c3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJ
bnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9OS43MywgbWluPTE3NC40NiwgbWF4PTIyNS4zMwpzbG9w
ZT0tMS4xMCwgUl4yPTAuMTAiPsKxIDQuNjIlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwv
dGQ+PC90cj48dHIgY2xhc3M9ImV2ZW4iPjx0ZCBjbGFzcz0idGVzdCI+L0Ryb21hZW8vZG9tLXRy
YXZlcnNlOlJ1bnM8L3RkPjx0ZCBjbGFzcz0idW5pdCI+cnVucy9zPC90ZD48dGQgY2xhc3M9InJl
c3VsdCIgdGl0bGU9Is+DPTEuOTEsIG1pbj0xNzUuOTEsIG1heD0xODguMTQKc2xvcGU9LTAuNjIs
IFJeMj0wLjgxIj4xODIuNDQ8L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz0xLjkxLCBtaW49MTc1LjkxLCBtYXg9MTg4LjE0CnNsb3BlPS0wLjYyLCBSXjI9
MC44MSI+wrEgMS4wNSUgPHNwYW4gY2xhc3M9InJlZ3Jlc3Npb24td2FybmluZyIgdGl0bGU9IkRl
dGVjdGVkIGEgdGltZSBkZXBlbmRlbmN5IHdpdGggc2xvcGU9LTAuNjIsIFJeMj0wLjgxIj48c3Zn
IHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdodDogMThweDsg
dmVydGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+PHBvbHlnb24gZmlsbD0icmVk
IiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJva2U9InJlZCIgc3Ryb2tlLXdp
ZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wb2x5Z29uPjxwb2x5Z29uIGZpbGw9
IndoaXRlIiBwb2ludHM9IjQ3LDMwIDQ4LDI5LCA1MCwgMjguNywgNTIsMjkgNTMsMzAgNTAsNjAi
IHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQi
PjwvcG9seWdvbj48Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiByPSI2IiBmaWxsPSJ3aGl0ZSI+PC9j
aXJjbGU+PC9zdmc+IDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MS4w
OSwgbWluPTE3OC45OCwgbWF4PTE4Ni4zMgpzbG9wZT0tMC4xMCwgUl4yPTAuMDciPjE4Mi43MDxz
cGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTEuMDksIG1pbj0xNzguOTgsIG1heD0xODYuMzIK
c2xvcGU9LTAuMTAsIFJeMj0wLjA3Ij7CsSAwLjYwJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29u
Ij48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MS4yMSwgbWluPTE3Ny4zNSwgbWF4
PTE4NS41NApzbG9wZT0wLjAyLCBSXjI9MC4wMCI+MTgyLjI5PHNwYW4gc3R5bGU9ImRpc3BsYXk6
IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0
aXRsZT0iz4M9MS4yMSwgbWluPTE3Ny4zNSwgbWF4PTE4NS41NApzbG9wZT0wLjAyLCBSXjI9MC4w
MCI+wrEgMC42NiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJl
c3VsdCIgdGl0bGU9Is+DPTAuNjAsIG1pbj0xODEuMDgsIG1heD0xODYuMTkKc2xvcGU9MC4wMywg
Ul4yPTAuMDEiPjE4My44MDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+
PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuNjAsIG1pbj0x
ODEuMDgsIG1heD0xODYuMTkKc2xvcGU9MC4wMywgUl4yPTAuMDEiPsKxIDAuMzMlPC90ZD48dGQg
Y2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjU0
LCBtaW49MTgyLjAwLCBtYXg9MTg2LjAyCnNsb3BlPTAuMDcsIFJeMj0wLjEzIj4xODQuMDU8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5j
ZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjU0LCBtaW49MTgyLjAwLCBtYXg9MTg2LjAyCnNs
b3BlPTAuMDcsIFJeMj0wLjEzIj7CsSAwLjI5JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48
L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC42MCwgbWluPTE3OS4zOSwgbWF4PTE4
My43NQpzbG9wZT0wLjE1LCBSXjI9MC40OSI+MTgxLjgwPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5v
bmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRs
ZT0iz4M9MC42MCwgbWluPTE3OS4zOSwgbWF4PTE4My43NQpzbG9wZT0wLjE1LCBSXjI9MC40OSI+
wrEgMC4zMyU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3Vs
dCIgdGl0bGU9Is+DPTIuMTgsIG1pbj0xNzAuNDksIG1heD0xODQuOTAKc2xvcGU9MC4zNCwgUl4y
PTAuMTkiPjE3OC40NzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58Mi4xOCUgV29yc2UmbmJz
cDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0i
z4M9Mi4xOCwgbWluPTE3MC40OSwgbWF4PTE4NC45MApzbG9wZT0wLjM0LCBSXjI9MC4xOSI+wrEg
MS4yMiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+Mi4xOCUgV29yc2UmbmJzcDs8
L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MS4zOCwgbWluPTE3Ni41NSwgbWF4PTE4
NS41OQpzbG9wZT0tMC4xNywgUl4yPTAuMTEiPjE4MC44MjxzcGFuIHN0eWxlPSJkaXNwbGF5OiBu
b25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0
bGU9Is+DPTEuMzgsIG1pbj0xNzYuNTUsIG1heD0xODUuNTkKc2xvcGU9LTAuMTcsIFJeMj0wLjEx
Ij7CsSAwLjc2JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVz
dWx0IiB0aXRsZT0iz4M9MC44OCwgbWluPTE3OC4wNCwgbWF4PTE4NS41NApzbG9wZT0tMC4xMCwg
Ul4yPTAuMDkiPjE4My4xODxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+
PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuODgsIG1pbj0x
NzguMDQsIG1heD0xODUuNTQKc2xvcGU9LTAuMTAsIFJeMj0wLjA5Ij7CsSAwLjQ4JTwvdGQ+PHRk
IGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MS4z
NywgbWluPTE3Ny42MCwgbWF4PTE4Ni44NwpzbG9wZT0tMC4zOSwgUl4yPTAuNjEiPjE4Mi44OTxz
cGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTEuMzcsIG1pbj0xNzcuNjAsIG1heD0xODYuODcK
c2xvcGU9LTAuMzksIFJeMj0wLjYxIj7CsSAwLjc1JSA8c3BhbiBjbGFzcz0icmVncmVzc2lvbi13
YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCBzbG9wZT0tMC4z
OSwgUl4yPTAuNjEiPjxzdmcgdmlld0JveD0iMCAwIDEwMCAxMDAiIHN0eWxlPSJ3aWR0aDogMThw
eDsgaGVpZ2h0OiAxOHB4OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyIgdmVyc2lvbj0iMS4xIj48
cG9seWdvbiBmaWxsPSJyZWQiIHBvaW50cz0iNTAsMTAgOTAsODAgMTAsODAgNTAsMTAiIHN0cm9r
ZT0icmVkIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BvbHln
b24+PHBvbHlnb24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43LCA1
MiwyOSA1MywzMCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tl
LWxpbmVqb2luPSJyb3VuZCI+PC9wb2x5Z29uPjxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYi
IGZpbGw9IndoaXRlIj48L2NpcmNsZT48L3N2Zz4gPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb21w
YXJpc29uIj48L3RkPjwvdHI+PHRyIGNsYXNzPSJvZGQiPjx0ZCBjbGFzcz0idGVzdCI+L0Ryb21h
ZW8vZHJvbWFlby0zZC1jdWJlOlJ1bnM8L3RkPjx0ZCBjbGFzcz0idW5pdCI+cnVucy9zPC90ZD48
dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTE2LjUyLCBtaW49MzcyOC4wMCwgbWF4PTM4NTUu
MDAKc2xvcGU9Mi44NSwgUl4yPTAuMjMiPjM4MTUuNDY8L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5j
ZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0xNi41MiwgbWluPTM3MjguMDAsIG1heD0zODU1LjAw
CnNsb3BlPTIuODUsIFJeMj0wLjIzIj7CsSAwLjQzJTwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRp
dGxlPSLPgz0xNS44NSwgbWluPTM3NTQuMDAsIG1heD0zODYwLjAwCnNsb3BlPTEuNjMsIFJeMj0w
LjA4Ij4zODI2LjcwPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQg
Y2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MTUuODUsIG1pbj0zNzU0
LjAwLCBtYXg9Mzg2MC4wMApzbG9wZT0xLjYzLCBSXjI9MC4wOCI+wrEgMC40MSU8L3RkPjx0ZCBj
bGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTE1LjU5
LCBtaW49Mzc1MS4wMCwgbWF4PTM4NTkuMDAKc2xvcGU9Mi4wNCwgUl4yPTAuMTMiPjM4MjMuMDU8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0xNS41OSwgbWluPTM3NTEuMDAsIG1heD0zODU5
LjAwCnNsb3BlPTIuMDQsIFJeMj0wLjEzIj7CsSAwLjQxJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJp
c29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MTYuOTMsIG1pbj0zNzQxLjI2
LCBtYXg9Mzg2Ny4wMApzbG9wZT0xLjQwLCBSXjI9MC4wNSI+MzgyMS41NjxzcGFuIHN0eWxlPSJk
aXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxE
ZWx0YSIgdGl0bGU9Is+DPTE2LjkzLCBtaW49Mzc0MS4yNiwgbWF4PTM4NjcuMDAKc2xvcGU9MS40
MCwgUl4yPTAuMDUiPsKxIDAuNDQlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRk
IGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0xMy42NywgbWluPTM3NjguMDAsIG1heD0zODYwLjAw
CnNsb3BlPTAuNTAsIFJeMj0wLjAxIj4zODMyLjYwPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUi
PnwwLjQ1JSBCZXR0ZXI8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERl
bHRhIiB0aXRsZT0iz4M9MTMuNjcsIG1pbj0zNzY4LjAwLCBtYXg9Mzg2MC4wMApzbG9wZT0wLjUw
LCBSXjI9MC4wMSI+wrEgMC4zNiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiBiZXR0ZXIiPjAu
NDUlIEJldHRlcjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0xNS40NiwgbWluPTM3
MTUuMDAsIG1heD0zODM1LjAwCnNsb3BlPTEuMzQsIFJeMj0wLjA2Ij4zNzkxLjgwPHNwYW4gc3R5
bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjYyJSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFz
cz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0xNS40NiwgbWluPTM3MTUuMDAs
IG1heD0zODM1LjAwCnNsb3BlPTEuMzQsIFJeMj0wLjA2Ij7CsSAwLjQxJTwvdGQ+PHRkIGNsYXNz
PSJjb21wYXJpc29uIHdvcnNlIj4wLjYyJSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1
bHQiIHRpdGxlPSLPgz0xMy42MCwgbWluPTM3NTAuMDAsIG1heD0zODQ1LjAwCnNsb3BlPTEuMDks
IFJeMj0wLjA1Ij4zODE5Ljc1PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90
ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MTMuNjAsIG1p
bj0zNzUwLjAwLCBtYXg9Mzg0NS4wMApzbG9wZT0xLjA5LCBSXjI9MC4wNSI+wrEgMC4zNiU8L3Rk
Pjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+D
PTE0LjAwLCBtaW49MzczMS4wMCwgbWF4PTM4MjguMDAKc2xvcGU9Mi4yNiwgUl4yPTAuMjAiPjM3
OTIuNTA8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDAuNjAlIFdvcnNlJm5ic3A7PC9zcGFu
PjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTE0LjAw
LCBtaW49MzczMS4wMCwgbWF4PTM4MjguMDAKc2xvcGU9Mi4yNiwgUl4yPTAuMjAiPsKxIDAuMzcl
PC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjAuNjAlIFdvcnNlJm5ic3A7PC90ZD48
dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTE2Ljc5LCBtaW49MzcxNC4wMCwgbWF4PTM4NDcu
MDAKc2xvcGU9MC4xMSwgUl4yPTAuMDAiPjM4MTAuODA8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9u
ZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxl
PSLPgz0xNi43OSwgbWluPTM3MTQuMDAsIG1heD0zODQ3LjAwCnNsb3BlPTAuMTEsIFJeMj0wLjAw
Ij7CsSAwLjQ0JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVz
dWx0IiB0aXRsZT0iz4M9MTQuNTQsIG1pbj0zNzQ1LjAwLCBtYXg9Mzg0MC4wMApzbG9wZT0wLjQ0
LCBSXjI9MC4wMSI+MzgxMS41MDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwv
dGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTE0LjU0LCBt
aW49Mzc0NS4wMCwgbWF4PTM4NDAuMDAKc2xvcGU9MC40NCwgUl4yPTAuMDEiPsKxIDAuMzglPC90
ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PC90cj48dHIgY2xhc3M9ImV2ZW4iPjx0ZCBj
bGFzcz0idGVzdCI+L0Ryb21hZW8vZHJvbWFlby1jb3JlLWV2YWw6UnVuczwvdGQ+PHRkIGNsYXNz
PSJ1bml0Ij5ydW5zL3M8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC43MywgbWlu
PTIzMi41NCwgbWF4PTIzOS4xMQpzbG9wZT0wLjAyLCBSXjI9MC4wMCI+MjM3LjIyPC90ZD48dGQg
Y2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC43MywgbWluPTIzMi41
NCwgbWF4PTIzOS4xMQpzbG9wZT0wLjAyLCBSXjI9MC4wMCI+wrEgMC4zMSU8L3RkPjx0ZCBjbGFz
cz0icmVzdWx0IiB0aXRsZT0iz4M9MC41NywgbWluPTIzNC43MywgbWF4PTIzOS40NwpzbG9wZT0w
LjAxLCBSXjI9MC4wMCI+MjM3LjcyPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+
PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC41Nywg
bWluPTIzNC43MywgbWF4PTIzOS40NwpzbG9wZT0wLjAxLCBSXjI9MC4wMCI+wrEgMC4yNCU8L3Rk
Pjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+D
PTAuNDcsIG1pbj0yMzUuMzEsIG1heD0yMzguNTcKc2xvcGU9MC4wMiwgUl4yPTAuMDEiPjIzNy40
NDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25m
aWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuNDcsIG1pbj0yMzUuMzEsIG1heD0yMzgu
NTcKc2xvcGU9MC4wMiwgUl4yPTAuMDEiPsKxIDAuMjAlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlz
b24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjYzLCBtaW49MjM1LjA2LCBt
YXg9MjM5LjYwCnNsb3BlPTAuMDAsIFJeMj0wLjAwIj4yMzcuNjk8c3BhbiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz0wLjYzLCBtaW49MjM1LjA2LCBtYXg9MjM5LjYwCnNsb3BlPTAuMDAsIFJeMj0w
LjAwIj7CsSAwLjI2JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0i
cmVzdWx0IiB0aXRsZT0iz4M9MC42MywgbWluPTIzNC45NCwgbWF4PTIzOC45NwpzbG9wZT0wLjE2
LCBSXjI9MC41MSI+MjM3LjI1PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90
ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC42MywgbWlu
PTIzNC45NCwgbWF4PTIzOC45NwpzbG9wZT0wLjE2LCBSXjI9MC41MSI+wrEgMC4yNyU8L3RkPjx0
ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAu
ODUsIG1pbj0yMzAuMjYsIG1heD0yMzYuODQKc2xvcGU9MC4wOCwgUl4yPTAuMDgiPjIzNC41NDxz
cGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58MS4xMyUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48
dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC44NSwgbWluPTIz
MC4yNiwgbWF4PTIzNi44NApzbG9wZT0wLjA4LCBSXjI9MC4wOCI+wrEgMC4zNiU8L3RkPjx0ZCBj
bGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MS4xMyUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFzcz0i
cmVzdWx0IiB0aXRsZT0iz4M9MC44NSwgbWluPTIzMi43NywgbWF4PTIzOC42NApzbG9wZT0wLjE5
LCBSXjI9MC4zOSI+MjM2LjExPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjQ3JSBXb3Jz
ZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRp
dGxlPSLPgz0wLjg1LCBtaW49MjMyLjc3LCBtYXg9MjM4LjY0CnNsb3BlPTAuMTksIFJeMj0wLjM5
Ij7CsSAwLjM2JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4wLjQ3JSBXb3JzZSZu
YnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjQ5LCBtaW49MjMzLjYxLCBt
YXg9MjM3LjY5CnNsb3BlPTAuMDMsIFJeMj0wLjAzIj4yMzYuMzI8c3BhbiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+fDAuMzglIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuNDksIG1pbj0yMzMuNjEsIG1heD0yMzcuNjkK
c2xvcGU9MC4wMywgUl4yPTAuMDMiPsKxIDAuMjElPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24g
d29yc2UiPjAuMzglIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+D
PTAuNTQsIG1pbj0yMzMuODEsIG1heD0yMzcuOTIKc2xvcGU9MC4wOCwgUl4yPTAuMTUiPjIzNi4y
ODxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58MC40MCUgV29yc2UmbmJzcDs8L3NwYW4+PC90
ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC41NCwgbWlu
PTIzMy44MSwgbWF4PTIzNy45MgpzbG9wZT0wLjA4LCBSXjI9MC4xNSI+wrEgMC4yMyU8L3RkPjx0
ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MC40MCUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFz
cz0icmVzdWx0IiB0aXRsZT0iz4M9MS4wMSwgbWluPTIzMS40OSwgbWF4PTIzOC43NQpzbG9wZT0w
LjIyLCBSXjI9MC4zNSI+MjM1Ljc5PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjYwJSBX
b3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz0xLjAxLCBtaW49MjMxLjQ5LCBtYXg9MjM4Ljc1CnNsb3BlPTAuMjIsIFJeMj0w
LjM1Ij7CsSAwLjQzJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4wLjYwJSBXb3Jz
ZSZuYnNwOzwvdGQ+PC90cj48dHIgY2xhc3M9Im9kZCI+PHRkIGNsYXNzPSJ0ZXN0Ij4vRHJvbWFl
by9kcm9tYWVvLW9iamVjdC1hcnJheTpSdW5zPC90ZD48dGQgY2xhc3M9InVuaXQiPnJ1bnMvczwv
dGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjAxLCBtaW49NC4xNywgbWF4PTQuMjQK
c2xvcGU9MC4wMCwgUl4yPTAuMzkiPjQuMjA8L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVy
dmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAxLCBtaW49NC4xNywgbWF4PTQuMjQKc2xvcGU9MC4wMCwg
Ul4yPTAuMzkiPsKxIDAuMjMlPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDEs
IG1pbj00LjE2LCBtYXg9NC4yMgpzbG9wZT0wLjAwLCBSXjI9MC4yNCI+NC4yMDxzcGFuIHN0eWxl
PSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2
YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDEsIG1pbj00LjE2LCBtYXg9NC4yMgpzbG9wZT0wLjAwLCBS
XjI9MC4yNCI+wrEgMC4xOCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xh
c3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDEsIG1pbj00LjE1LCBtYXg9NC4yNApzbG9wZT0wLjAw
LCBSXjI9MC4zNiI+NC4yMDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+
PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDEsIG1pbj00
LjE1LCBtYXg9NC4yNApzbG9wZT0wLjAwLCBSXjI9MC4zNiI+wrEgMC4zMSU8L3RkPjx0ZCBjbGFz
cz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDIsIG1p
bj00LjEyLCBtYXg9NC4yOApzbG9wZT0wLjAwLCBSXjI9MC4yMiI+NC4yMTxzcGFuIHN0eWxlPSJk
aXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxE
ZWx0YSIgdGl0bGU9Is+DPTAuMDIsIG1pbj00LjEyLCBtYXg9NC4yOApzbG9wZT0wLjAwLCBSXjI9
MC4yMiI+wrEgMC40MiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9
InJlc3VsdCIgdGl0bGU9Is+DPTAuMDIsIG1pbj00LjA4LCBtYXg9NC4yNApzbG9wZT0tMC4wMCwg
Ul4yPTAuMDYiPjQuMTg8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDAuNjAlIFdvcnNlJm5i
c3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9
Is+DPTAuMDIsIG1pbj00LjA4LCBtYXg9NC4yNApzbG9wZT0tMC4wMCwgUl4yPTAuMDYiPsKxIDAu
NTUlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjAuNjAlIFdvcnNlJm5ic3A7PC90
ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDQsIG1pbj00LjA1LCBtYXg9NC4zMgpz
bG9wZT0tMC4wMSwgUl4yPTAuMzgiPjQuMjM8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwv
c3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0w
LjA0LCBtaW49NC4wNSwgbWF4PTQuMzIKc2xvcGU9LTAuMDEsIFJeMj0wLjM4Ij7CsSAxLjAyJTwv
dGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0i
z4M9MC4wMSwgbWluPTQuMjMsIG1heD00LjMxCnNsb3BlPTAuMDAsIFJeMj0wLjE0Ij40LjI4PHNw
YW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwxLjcxJSBCZXR0ZXI8L3NwYW4+PC90ZD48dGQgY2xh
c3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wMSwgbWluPTQuMjMsIG1h
eD00LjMxCnNsb3BlPTAuMDAsIFJeMj0wLjE0Ij7CsSAwLjI5JTwvdGQ+PHRkIGNsYXNzPSJjb21w
YXJpc29uIGJldHRlciI+MS43MSUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9
Is+DPTAuMDIsIG1pbj00LjE5LCBtYXg9NC4zMgpzbG9wZT0tMC4wMCwgUl4yPTAuMDYiPjQuMjc8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDEuNDclIEJldHRlcjwvc3Bhbj48L3RkPjx0ZCBj
bGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAyLCBtaW49NC4xOSwg
bWF4PTQuMzIKc2xvcGU9LTAuMDAsIFJeMj0wLjA2Ij7CsSAwLjQ1JTwvdGQ+PHRkIGNsYXNzPSJj
b21wYXJpc29uIGJldHRlciI+MS40NyUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0
bGU9Is+DPTAuMDMsIG1pbj00LjEyLCBtYXg9NC4zMQpzbG9wZT0tMC4wMSwgUl4yPTAuMzQiPjQu
MjQ8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDAuODMlIEJldHRlcjwvc3Bhbj48L3RkPjx0
ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAzLCBtaW49NC4x
MiwgbWF4PTQuMzEKc2xvcGU9LTAuMDEsIFJeMj0wLjM0Ij7CsSAwLjc4JTwvdGQ+PHRkIGNsYXNz
PSJjb21wYXJpc29uIGJldHRlciI+MC44MyUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIg
dGl0bGU9Is+DPTAuMDEsIG1pbj00LjIxLCBtYXg9NC4zMwpzbG9wZT0tMC4wMCwgUl4yPTAuMTYi
PjQuMjY8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDEuNDIlIEJldHRlcjwvc3Bhbj48L3Rk
Pjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAxLCBtaW49
NC4yMSwgbWF4PTQuMzMKc2xvcGU9LTAuMDAsIFJeMj0wLjE2Ij7CsSAwLjMzJTwvdGQ+PHRkIGNs
YXNzPSJjb21wYXJpc29uIGJldHRlciI+MS40MiUgQmV0dGVyPC90ZD48L3RyPjx0ciBjbGFzcz0i
ZXZlbiI+PHRkIGNsYXNzPSJ0ZXN0Ij4vRHJvbWFlby9kcm9tYWVvLW9iamVjdC1yZWdleHA6UnVu
czwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij5ydW5zL3M8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRs
ZT0iz4M9MC4wMCwgbWluPTUuMDEsIG1heD01LjA0CnNsb3BlPTAuMDAsIFJeMj0wLjAxIj41LjAz
PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wMCwg
bWluPTUuMDEsIG1heD01LjA0CnNsb3BlPTAuMDAsIFJeMj0wLjAxIj7CsSAwLjEwJTwvdGQ+PHRk
IGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjA1LCBtaW49NC43MiwgbWF4PTUuMDUKc2xvcGU9
MC4wMSwgUl4yPTAuNjIiPjQuOTg8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDEuMDAlIFdv
cnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIg
dGl0bGU9Is+DPTAuMDUsIG1pbj00LjcyLCBtYXg9NS4wNQpzbG9wZT0wLjAxLCBSXjI9MC42MiI+
wrEgMC45MyUgPHNwYW4gY2xhc3M9InJlZ3Jlc3Npb24td2FybmluZyIgdGl0bGU9IkRldGVjdGVk
IGEgdGltZSBkZXBlbmRlbmN5IHdpdGggc2xvcGU9MC4wMSwgUl4yPTAuNjIiPjxzdmcgdmlld0Jv
eD0iMCAwIDEwMCAxMDAiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyB2ZXJ0aWNh
bC1hbGlnbjogYm90dG9tOyIgdmVyc2lvbj0iMS4xIj48cG9seWdvbiBmaWxsPSJyZWQiIHBvaW50
cz0iNTAsMTAgOTAsODAgMTAsODAgNTAsMTAiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEw
IiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BvbHlnb24+PHBvbHlnb24gZmlsbD0id2hpdGUi
IHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43LCA1MiwyOSA1MywzMCA1MCw2MCIgc3Ryb2tl
PSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wb2x5
Z29uPjxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYiIGZpbGw9IndoaXRlIj48L2NpcmNsZT48
L3N2Zz4gPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4xLjAwJSBXb3Jz
ZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjAwLCBtaW49NS4wMSwg
bWF4PTUuMDUKc2xvcGU9MC4wMCwgUl4yPTAuMDEiPjUuMDM8c3BhbiBzdHlsZT0iZGlzcGxheTog
bm9uZSI+fDAuMTAlIEJldHRlcjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVy
dmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAwLCBtaW49NS4wMSwgbWF4PTUuMDUKc2xvcGU9MC4wMCwg
Ul4yPTAuMDEiPsKxIDAuMDklPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gYmV0dGVyIj4wLjEw
JSBCZXR0ZXI8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wMSwgbWluPTUuMDEs
IG1heD01LjA1CnNsb3BlPTAuMDAsIFJeMj0wLjAyIj41LjA0PHNwYW4gc3R5bGU9ImRpc3BsYXk6
IG5vbmUiPnwwLjE5JSBCZXR0ZXI8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRl
cnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wMSwgbWluPTUuMDEsIG1heD01LjA1CnNsb3BlPTAuMDAs
IFJeMj0wLjAyIj7CsSAwLjEwJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIGJldHRlciI+MC4x
OSUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDEsIG1pbj01LjAx
LCBtYXg9NS4wNQpzbG9wZT0tMC4wMCwgUl4yPTAuMTEiPjUuMDM8c3BhbiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+fDAuMTMlIEJldHRlcjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUlu
dGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAxLCBtaW49NS4wMSwgbWF4PTUuMDUKc2xvcGU9LTAu
MDAsIFJeMj0wLjExIj7CsSAwLjExJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIGJldHRlciI+
MC4xMyUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDEsIG1pbj00
Ljk0LCBtYXg9NS4wMwpzbG9wZT0wLjAwLCBSXjI9MC4wNiI+NS4wMDxzcGFuIHN0eWxlPSJkaXNw
bGF5OiBub25lIj58MC41MSUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZp
ZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wMSwgbWluPTQuOTQsIG1heD01LjAzCnNs
b3BlPTAuMDAsIFJeMj0wLjA2Ij7CsSAwLjI0JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdv
cnNlIj4wLjUxJSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0w
LjAzLCBtaW49NC43OCwgbWF4PTUuMDQKc2xvcGU9LTAuMDAsIFJeMj0wLjAxIj40Ljk4PHNwYW4g
c3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjg2JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBj
bGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAzLCBtaW49NC43OCwg
bWF4PTUuMDQKc2xvcGU9LTAuMDAsIFJeMj0wLjAxIj7CsSAwLjY2JTwvdGQ+PHRkIGNsYXNzPSJj
b21wYXJpc29uIHdvcnNlIj4wLjg2JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQi
IHRpdGxlPSLPgz0wLjAxLCBtaW49NC45OSwgbWF4PTUuMDMKc2xvcGU9MC4wMCwgUl4yPTAuMDIi
PjUuMDE8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDAuMjMlIFdvcnNlJm5ic3A7PC9zcGFu
PjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDEs
IG1pbj00Ljk5LCBtYXg9NS4wMwpzbG9wZT0wLjAwLCBSXjI9MC4wMiI+wrEgMC4xMyU8L3RkPjx0
ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MC4yMyUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFz
cz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wMSwgbWluPTQuOTksIG1heD01LjA0CnNsb3BlPTAuMDAs
IFJeMj0wLjEwIj41LjAyPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48
dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wMSwgbWluPTQu
OTksIG1heD01LjA0CnNsb3BlPTAuMDAsIFJeMj0wLjEwIj7CsSAwLjE1JTwvdGQ+PHRkIGNsYXNz
PSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wNCwgbWlu
PTQuNzgsIG1heD01LjA0CnNsb3BlPTAuMDAsIFJeMj0wLjA0Ij40Ljk3PHNwYW4gc3R5bGU9ImRp
c3BsYXk6IG5vbmUiPnwxLjA0JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29u
ZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjA0LCBtaW49NC43OCwgbWF4PTUuMDQK
c2xvcGU9MC4wMCwgUl4yPTAuMDQiPsKxIDAuODAlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24g
d29yc2UiPjEuMDQlIFdvcnNlJm5ic3A7PC90ZD48L3RyPjx0ciBjbGFzcz0ib2RkIj48dGQgY2xh
c3M9InRlc3QiPi9Ecm9tYWVvL2Ryb21hZW8tb2JqZWN0LXN0cmluZzpSdW5zPC90ZD48dGQgY2xh
c3M9InVuaXQiPnJ1bnMvczwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjUyLCBt
aW49NjYuMzUsIG1heD03MC40NQpzbG9wZT0wLjE4LCBSXjI9MC45NCI+NjguMjc8L3RkPjx0ZCBj
bGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjUyLCBtaW49NjYuMzUs
IG1heD03MC40NQpzbG9wZT0wLjE4LCBSXjI9MC45NCI+wrEgMC43NiUgPHNwYW4gY2xhc3M9InJl
Z3Jlc3Npb24td2FybmluZyIgdGl0bGU9IkRldGVjdGVkIGEgdGltZSBkZXBlbmRlbmN5IHdpdGgg
c2xvcGU9MC4xOCwgUl4yPTAuOTQiPjxzdmcgdmlld0JveD0iMCAwIDEwMCAxMDAiIHN0eWxlPSJ3
aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyIgdmVyc2lv
bj0iMS4xIj48cG9seWdvbiBmaWxsPSJyZWQiIHBvaW50cz0iNTAsMTAgOTAsODAgMTAsODAgNTAs
MTAiIHN0cm9rZT0icmVkIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5k
Ij48L3BvbHlnb24+PHBvbHlnb24gZmlsbD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUw
LCAyOC43LCA1MiwyOSA1MywzMCA1MCw2MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIx
MCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wb2x5Z29uPjxjaXJjbGUgY3g9IjUwIiBjeT0i
NzMiIHI9IjYiIGZpbGw9IndoaXRlIj48L2NpcmNsZT48L3N2Zz4gPC9zcGFuPjwvdGQ+PHRkIGNs
YXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjc4LCBtaW49NjYuMjYsIG1heD03MS43MQpzbG9wZT0t
MC4yMCwgUl4yPTAuNTIiPjY4LjY0PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+
PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC43OCwg
bWluPTY2LjI2LCBtYXg9NzEuNzEKc2xvcGU9LTAuMjAsIFJeMj0wLjUyIj7CsSAxLjE0JTwvdGQ+
PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9
MC40OCwgbWluPTY3LjU2LCBtYXg9NzEuMjUKc2xvcGU9MC4wMiwgUl4yPTAuMDEiPjY5LjU1PHNw
YW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwxLjg4JSBCZXR0ZXI8L3NwYW4+PC90ZD48dGQgY2xh
c3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC40OCwgbWluPTY3LjU2LCBt
YXg9NzEuMjUKc2xvcGU9MC4wMiwgUl4yPTAuMDEiPsKxIDAuNjklPC90ZD48dGQgY2xhc3M9ImNv
bXBhcmlzb24gYmV0dGVyIj4xLjg4JSBCZXR0ZXI8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRs
ZT0iz4M9MC45MiwgbWluPTY1LjM1LCBtYXg9NzEuMjQKc2xvcGU9MC4wMiwgUl4yPTAuMDAiPjY4
Ljk3PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNv
bmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC45MiwgbWluPTY1LjM1LCBtYXg9NzEu
MjQKc2xvcGU9MC4wMiwgUl4yPTAuMDAiPsKxIDEuMzQlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlz
b24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjc2LCBtaW49NjUuNjcsIG1h
eD03MC43OApzbG9wZT0tMC4xMywgUl4yPTAuMjQiPjY4LjQyPHNwYW4gc3R5bGU9ImRpc3BsYXk6
IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0
aXRsZT0iz4M9MC43NiwgbWluPTY1LjY3LCBtYXg9NzAuNzgKc2xvcGU9LTAuMTMsIFJeMj0wLjI0
Ij7CsSAxLjEwJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVz
dWx0IiB0aXRsZT0iz4M9MC42NywgbWluPTY1LjE5LCBtYXg9NzAuNzUKc2xvcGU9LTAuMTksIFJe
Mj0wLjU5Ij42Ny45MzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuNjcsIG1pbj02NS4x
OSwgbWF4PTcwLjc1CnNsb3BlPS0wLjE5LCBSXjI9MC41OSI+wrEgMC45OSU8L3RkPjx0ZCBjbGFz
cz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuNjYsIG1p
bj02NS41NiwgbWF4PTcwLjYyCnNsb3BlPTAuMTcsIFJeMj0wLjUyIj42OC4wNDxzcGFuIHN0eWxl
PSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2
YWxEZWx0YSIgdGl0bGU9Is+DPTAuNjYsIG1pbj02NS41NiwgbWF4PTcwLjYyCnNsb3BlPTAuMTcs
IFJeMj0wLjUyIj7CsSAwLjk4JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBj
bGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC45NCwgbWluPTY1LjgxLCBtYXg9NzIuNzMKc2xvcGU9
MC4yMCwgUl4yPTAuMzQiPjY4Ljk5PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+
PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC45NCwg
bWluPTY1LjgxLCBtYXg9NzIuNzMKc2xvcGU9MC4yMCwgUl4yPTAuMzQiPsKxIDEuMzYlPC90ZD48
dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0w
LjY5LCBtaW49NjUuMjYsIG1heD03MC4zMwpzbG9wZT0wLjI0LCBSXjI9MC45MSI+NjcuMzU8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDEuMzUlIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuNjksIG1pbj02NS4y
NiwgbWF4PTcwLjMzCnNsb3BlPTAuMjQsIFJeMj0wLjkxIj7CsSAxLjAzJSA8c3BhbiBjbGFzcz0i
cmVncmVzc2lvbi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0
aCBzbG9wZT0wLjI0LCBSXjI9MC45MSI+PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9
IndpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJz
aW9uPSIxLjEiPjxwb2x5Z29uIGZpbGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1
MCwxMCIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91
bmQiPjwvcG9seWdvbj48cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwg
NTAsIDI4LjcsIDUyLDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9
IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BvbHlnb24+PGNpcmNsZSBjeD0iNTAiIGN5
PSI3MyIgcj0iNiIgZmlsbD0id2hpdGUiPjwvY2lyY2xlPjwvc3ZnPiA8L3NwYW4+PC90ZD48dGQg
Y2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjEuMzUlIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9
InJlc3VsdCIgdGl0bGU9Is+DPTAuNDcsIG1pbj02Ni4xNywgbWF4PTY5LjcxCnNsb3BlPS0wLjA1
LCBSXjI9MC4wOSI+NjguMTg8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3Rk
Pjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjQ3LCBtaW49
NjYuMTcsIG1heD02OS43MQpzbG9wZT0tMC4wNSwgUl4yPTAuMDkiPsKxIDAuNzAlPC90ZD48dGQg
Y2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PC90cj48dHIgY2xhc3M9ImV2ZW4iPjx0ZCBjbGFzcz0i
dGVzdCI+L0Ryb21hZW8vZHJvbWFlby1zdHJpbmctYmFzZTY0OlJ1bnM8L3RkPjx0ZCBjbGFzcz0i
dW5pdCI+cnVucy9zPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTIuMzUsIG1pbj0x
Mjk2Ljg2LCBtYXg9MTMxMS41MgpzbG9wZT0wLjEzLCBSXjI9MC4wMiI+MTMwNC41NTwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTIuMzUsIG1pbj0xMjk2
Ljg2LCBtYXg9MTMxMS41MgpzbG9wZT0wLjEzLCBSXjI9MC4wMiI+wrEgMC4xOCU8L3RkPjx0ZCBj
bGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9Mi41MCwgbWluPTEyOTguOTAsIG1heD0xMzE1LjU5CnNs
b3BlPTAuMTUsIFJeMj0wLjAzIj4xMzA4LjM3PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnww
LjI5JSBCZXR0ZXI8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRh
IiB0aXRsZT0iz4M9Mi41MCwgbWluPTEyOTguOTAsIG1heD0xMzE1LjU5CnNsb3BlPTAuMTUsIFJe
Mj0wLjAzIj7CsSAwLjE5JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIGJldHRlciI+MC4yOSUg
QmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTIuMjUsIG1pbj0xMjk1LjMy
LCBtYXg9MTMxMi4xMApzbG9wZT0wLjQ2LCBSXjI9MC4zMiI+MTMwNC4zMzxzcGFuIHN0eWxlPSJk
aXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxE
ZWx0YSIgdGl0bGU9Is+DPTIuMjUsIG1pbj0xMjk1LjMyLCBtYXg9MTMxMi4xMApzbG9wZT0wLjQ2
LCBSXjI9MC4zMiI+wrEgMC4xNyU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQg
Y2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTIuMTIsIG1pbj0xMzAxLjk4LCBtYXg9MTMxNS42OQpz
bG9wZT0wLjI2LCBSXjI9MC4xMiI+MTMwOS4wNjxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58
MC4zNSUgQmV0dGVyPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0
YSIgdGl0bGU9Is+DPTIuMTIsIG1pbj0xMzAxLjk4LCBtYXg9MTMxNS42OQpzbG9wZT0wLjI2LCBS
XjI9MC4xMiI+wrEgMC4xNiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiBiZXR0ZXIiPjAuMzUl
IEJldHRlcjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0yLjQ5LCBtaW49MTI5Ni4y
NiwgbWF4PTEzMTQuNjYKc2xvcGU9MC4zNCwgUl4yPTAuMTUiPjEzMDcuMTI8c3BhbiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+fDAuMjAlIEJldHRlcjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0yLjQ5LCBtaW49MTI5Ni4yNiwgbWF4PTEzMTQu
NjYKc2xvcGU9MC4zNCwgUl4yPTAuMTUiPsKxIDAuMTklPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlz
b24gYmV0dGVyIj4wLjIwJSBCZXR0ZXI8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9
Mi43MSwgbWluPTEyODkuMDIsIG1heD0xMzA3Ljc5CnNsb3BlPTAuMjYsIFJeMj0wLjA3Ij4xMjk5
LjM3PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjQwJSBXb3JzZSZuYnNwOzwvc3Bhbj48
L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0yLjcxLCBt
aW49MTI4OS4wMiwgbWF4PTEzMDcuNzkKc2xvcGU9MC4yNiwgUl4yPTAuMDciPsKxIDAuMjElPC90
ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjAuNDAlIFdvcnNlJm5ic3A7PC90ZD48dGQg
Y2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTIuNjAsIG1pbj0xMjkzLjY2LCBtYXg9MTMxMS40MQpz
bG9wZT0wLjMyLCBSXjI9MC4xMiI+MTMwMi45OTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58
PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+D
PTIuNjAsIG1pbj0xMjkzLjY2LCBtYXg9MTMxMS40MQpzbG9wZT0wLjMyLCBSXjI9MC4xMiI+wrEg
MC4yMCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIg
dGl0bGU9Is+DPTIuNTksIG1pbj0xMjk2LjMwLCBtYXg9MTMxMy44MgpzbG9wZT0wLjQ2LCBSXjI9
MC4yNSI+MTMwNS41NzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTIuNTksIG1pbj0xMjk2
LjMwLCBtYXg9MTMxMy44MgpzbG9wZT0wLjQ2LCBSXjI9MC4yNSI+wrEgMC4yMCU8L3RkPjx0ZCBj
bGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTMuMjIs
IG1pbj0xMjgzLjIzLCBtYXg9MTMwOC4xMgpzbG9wZT0wLjc0LCBSXjI9MC40MSI+MTI5OS4xNDxz
cGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58MC40MiUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48
dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9My4yMiwgbWluPTEy
ODMuMjMsIG1heD0xMzA4LjEyCnNsb3BlPTAuNzQsIFJeMj0wLjQxIj7CsSAwLjI1JTwvdGQ+PHRk
IGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4wLjQyJSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNz
PSJyZXN1bHQiIHRpdGxlPSLPgz0yLjc2LCBtaW49MTI4OC44NywgbWF4PTEzMDkuNjMKc2xvcGU9
LTAuMjQsIFJeMj0wLjA2Ij4xMzAwLjE4PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjMz
JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVs
dGEiIHRpdGxlPSLPgz0yLjc2LCBtaW49MTI4OC44NywgbWF4PTEzMDkuNjMKc2xvcGU9LTAuMjQs
IFJeMj0wLjA2Ij7CsSAwLjIxJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4wLjMz
JSBXb3JzZSZuYnNwOzwvdGQ+PC90cj48dHIgY2xhc3M9Im9kZCI+PHRkIGNsYXNzPSJ0ZXN0Ij4v
RHJvbWFlby9qc2xpYi1hdHRyLWpxdWVyeTpSdW5zPC90ZD48dGQgY2xhc3M9InVuaXQiPnJ1bnMv
czwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0zLjI2LCBtaW49Mjk4LjMwLCBtYXg9
MzIwLjkyCnNsb3BlPTEuMDksIFJeMj0wLjg1Ij4zMDguNDM8L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0zLjI2LCBtaW49Mjk4LjMwLCBtYXg9MzIwLjky
CnNsb3BlPTEuMDksIFJeMj0wLjg1Ij7CsSAxLjA2JSA8c3BhbiBjbGFzcz0icmVncmVzc2lvbi13
YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCBzbG9wZT0xLjA5
LCBSXjI9MC44NSI+PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4
OyBoZWlnaHQ6IDE4cHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPjxw
b2x5Z29uIGZpbGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcG9seWdv
bj48cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUy
LDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2Ut
bGluZWpvaW49InJvdW5kIj48L3BvbHlnb24+PGNpcmNsZSBjeD0iNTAiIGN5PSI3MyIgcj0iNiIg
ZmlsbD0id2hpdGUiPjwvY2lyY2xlPjwvc3ZnPiA8L3NwYW4+PC90ZD48dGQgY2xhc3M9InJlc3Vs
dCIgdGl0bGU9Is+DPTUuNjEsIG1pbj0yODkuNDMsIG1heD0zMjQuMTAKc2xvcGU9MC4wNiwgUl4y
PTAuMDAiPjMwNS42NjxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTUuNjEsIG1pbj0yODku
NDMsIG1heD0zMjQuMTAKc2xvcGU9MC4wNiwgUl4yPTAuMDAiPsKxIDEuODQlPC90ZD48dGQgY2xh
c3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz00Ljk0LCBt
aW49Mjg4LjEyLCBtYXg9MzIwLjM4CnNsb3BlPTEuMjksIFJeMj0wLjUyIj4zMDYuOTM8c3BhbiBz
dHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUlu
dGVydmFsRGVsdGEiIHRpdGxlPSLPgz00Ljk0LCBtaW49Mjg4LjEyLCBtYXg9MzIwLjM4CnNsb3Bl
PTEuMjksIFJeMj0wLjUyIj7CsSAxLjYxJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3Rk
Pjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9Mi4xOCwgbWluPTI5NS45NCwgbWF4PTMxMy40
NgpzbG9wZT0tMC4wNiwgUl4yPTAuMDEiPjMwNC41MTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25l
Ij58MS4yNyUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRl
cnZhbERlbHRhIiB0aXRsZT0iz4M9Mi4xOCwgbWluPTI5NS45NCwgbWF4PTMxMy40NgpzbG9wZT0t
MC4wNiwgUl4yPTAuMDEiPsKxIDAuNzIlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2Ui
PjEuMjclIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTQuODks
IG1pbj0yODIuMTcsIG1heD0zMTMuMDYKc2xvcGU9LTEuMjMsIFJeMj0wLjQ4Ij4yOTkuMDY8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDMuMDQlIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTQuODksIG1pbj0yODIu
MTcsIG1heD0zMTMuMDYKc2xvcGU9LTEuMjMsIFJeMj0wLjQ4Ij7CsSAxLjYzJTwvdGQ+PHRkIGNs
YXNzPSJjb21wYXJpc29uIHdvcnNlIj4zLjA0JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJy
ZXN1bHQiIHRpdGxlPSLPgz01Ljc0LCBtaW49MjcwLjM5LCBtYXg9MzA3LjY0CnNsb3BlPTAuOTYs
IFJeMj0wLjIyIj4yOTAuOTA8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDUuNjglIFdvcnNl
Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0
bGU9Is+DPTUuNzQsIG1pbj0yNzAuMzksIG1heD0zMDcuNjQKc2xvcGU9MC45NiwgUl4yPTAuMjIi
PsKxIDEuOTclPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjUuNjglIFdvcnNlJm5i
c3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTMuMjQsIG1pbj0yNzkuMzksIG1h
eD0yOTkuNzgKc2xvcGU9MC4zNiwgUl4yPTAuMDkiPjI5MC4yMTxzcGFuIHN0eWxlPSJkaXNwbGF5
OiBub25lIj58NS45MSUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVu
Y2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9My4yNCwgbWluPTI3OS4zOSwgbWF4PTI5OS43OApz
bG9wZT0wLjM2LCBSXjI9MC4wOSI+wrEgMS4xMiU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3
b3JzZSI+NS45MSUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9
My4wMywgbWluPTI3My4wMCwgbWF4PTI5NC43MQpzbG9wZT0tMC40NywgUl4yPTAuMTgiPjI4Mi45
NjxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58OC4yNiUgV29yc2UmbmJzcDs8L3NwYW4+PC90
ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9My4wMywgbWlu
PTI3My4wMCwgbWF4PTI5NC43MQpzbG9wZT0tMC40NywgUl4yPTAuMTgiPsKxIDEuMDclPC90ZD48
dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjguMjYlIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xh
c3M9InJlc3VsdCIgdGl0bGU9Is+DPTMuMjIsIG1pbj0yODkuODYsIG1heD0zMTAuMjAKc2xvcGU9
LTAuOTYsIFJeMj0wLjY5Ij4zMDEuMDg8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDIuMzgl
IFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0
YSIgdGl0bGU9Is+DPTMuMjIsIG1pbj0yODkuODYsIG1heD0zMTAuMjAKc2xvcGU9LTAuOTYsIFJe
Mj0wLjY5Ij7CsSAxLjA3JSA8c3BhbiBjbGFzcz0icmVncmVzc2lvbi13YXJuaW5nIiB0aXRsZT0i
RGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCBzbG9wZT0tMC45NiwgUl4yPTAuNjkiPjxz
dmcgdmlld0JveD0iMCAwIDEwMCAxMDAiIHN0eWxlPSJ3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4
OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyIgdmVyc2lvbj0iMS4xIj48cG9seWdvbiBmaWxsPSJy
ZWQiIHBvaW50cz0iNTAsMTAgOTAsODAgMTAsODAgNTAsMTAiIHN0cm9rZT0icmVkIiBzdHJva2Ut
d2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3BvbHlnb24+PHBvbHlnb24gZmls
bD0id2hpdGUiIHBvaW50cz0iNDcsMzAgNDgsMjksIDUwLCAyOC43LCA1MiwyOSA1MywzMCA1MCw2
MCIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3Vu
ZCI+PC9wb2x5Z29uPjxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYiIGZpbGw9IndoaXRlIj48
L2NpcmNsZT48L3N2Zz4gPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4y
LjM4JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0xLjM5LCBt
aW49Mjg2LjA4LCBtYXg9Mjk2Ljg3CnNsb3BlPTAuMjgsIFJeMj0wLjMwIj4yOTEuNzg8c3BhbiBz
dHlsZT0iZGlzcGxheTogbm9uZSI+fDUuNDAlIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNs
YXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTEuMzksIG1pbj0yODYuMDgs
IG1heD0yOTYuODcKc2xvcGU9MC4yOCwgUl4yPTAuMzAiPsKxIDAuNDglPC90ZD48dGQgY2xhc3M9
ImNvbXBhcmlzb24gd29yc2UiPjUuNDAlIFdvcnNlJm5ic3A7PC90ZD48L3RyPjx0ciBjbGFzcz0i
ZXZlbiI+PHRkIGNsYXNzPSJ0ZXN0Ij4vRHJvbWFlby9qc2xpYi1hdHRyLXByb3RvdHlwZTpSdW5z
PC90ZD48dGQgY2xhc3M9InVuaXQiPnJ1bnMvczwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxl
PSLPgz05LjkxLCBtaW49MzY0LjI3LCBtYXg9NDE5LjMwCnNsb3BlPS0xLjA2LCBSXjI9MC4wOSI+
NDA0LjA5PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9
OS45MSwgbWluPTM2NC4yNywgbWF4PTQxOS4zMApzbG9wZT0tMS4wNiwgUl4yPTAuMDkiPsKxIDIu
NDUlPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTUuNTEsIG1pbj0zNzYuMDgsIG1h
eD00MTAuMTkKc2xvcGU9LTAuNTMsIFJeMj0wLjA3Ij4zOTUuMjk8c3BhbiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz01LjUxLCBtaW49Mzc2LjA4LCBtYXg9NDEwLjE5CnNsb3BlPS0wLjUzLCBSXjI9
MC4wNyI+wrEgMS4zOSU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9
InJlc3VsdCIgdGl0bGU9Is+DPTMuODYsIG1pbj0zOTkuNjAsIG1heD00MjYuMzgKc2xvcGU9MC45
NSwgUl4yPTAuNDciPjQxMy44MDxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwv
dGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTMuODYsIG1p
bj0zOTkuNjAsIG1heD00MjYuMzgKc2xvcGU9MC45NSwgUl4yPTAuNDciPsKxIDAuOTMlPC90ZD48
dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz00
LjI1LCBtaW49Mzg3LjQ3LCBtYXg9NDE1LjI0CnNsb3BlPTEuMjIsIFJeMj0wLjYzIj40MDYuMjY8
c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlk
ZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz00LjI1LCBtaW49Mzg3LjQ3LCBtYXg9NDE1LjI0
CnNsb3BlPTEuMjIsIFJeMj0wLjYzIj7CsSAxLjA1JSA8c3BhbiBjbGFzcz0icmVncmVzc2lvbi13
YXJuaW5nIiB0aXRsZT0iRGV0ZWN0ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCBzbG9wZT0xLjIy
LCBSXjI9MC42MyI+PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4
OyBoZWlnaHQ6IDE4cHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPjxw
b2x5Z29uIGZpbGw9InJlZCIgcG9pbnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ryb2tl
PSJyZWQiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcG9seWdv
bj48cG9seWdvbiBmaWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUy
LDI5IDUzLDMwIDUwLDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2Ut
bGluZWpvaW49InJvdW5kIj48L3BvbHlnb24+PGNpcmNsZSBjeD0iNTAiIGN5PSI3MyIgcj0iNiIg
ZmlsbD0id2hpdGUiPjwvY2lyY2xlPjwvc3ZnPiA8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbXBh
cmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0zLjI5LCBtaW49Mzk5Ljgx
LCBtYXg9NDIyLjk1CnNsb3BlPS0wLjM4LCBSXjI9MC4xMCI+NDEyLjU1PHNwYW4gc3R5bGU9ImRp
c3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERl
bHRhIiB0aXRsZT0iz4M9My4yOSwgbWluPTM5OS44MSwgbWF4PTQyMi45NQpzbG9wZT0tMC4zOCwg
Ul4yPTAuMTAiPsKxIDAuODAlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNs
YXNzPSJyZXN1bHQiIHRpdGxlPSLPgz01LjI4LCBtaW49Mzc2LjEyLCBtYXg9NDExLjc4CnNsb3Bl
PTAuMjgsIFJeMj0wLjAyIj4zOTUuMDU8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bh
bj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz01LjI4
LCBtaW49Mzc2LjEyLCBtYXg9NDExLjc4CnNsb3BlPTAuMjgsIFJeMj0wLjAyIj7CsSAxLjM0JTwv
dGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0i
z4M9Ni4xNiwgbWluPTM3Ny4yNywgbWF4PTQxNC41NQpzbG9wZT0tMS42NCwgUl4yPTAuNTQiPjM5
Ny43MjxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJj
b25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTYuMTYsIG1pbj0zNzcuMjcsIG1heD00
MTQuNTUKc2xvcGU9LTEuNjQsIFJeMj0wLjU0Ij7CsSAxLjU1JTwvdGQ+PHRkIGNsYXNzPSJjb21w
YXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9NS42NiwgbWluPTM2Ny43
OCwgbWF4PTQwMy45MQpzbG9wZT0tMC4yNSwgUl4yPTAuMDEiPjM4NS44NzxzcGFuIHN0eWxlPSJk
aXNwbGF5OiBub25lIj58NC41MSUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNv
bmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9NS42NiwgbWluPTM2Ny43OCwgbWF4PTQw
My45MQpzbG9wZT0tMC4yNSwgUl4yPTAuMDEiPsKxIDEuNDclPC90ZD48dGQgY2xhc3M9ImNvbXBh
cmlzb24gd29yc2UiPjQuNTElIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0
bGU9Is+DPTMuNjgsIG1pbj0zNTQuNDMsIG1heD0zNzguMDYKc2xvcGU9LTAuMDgsIFJeMj0wLjAw
Ij4zNjguOTQ8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDguNzAlIFdvcnNlJm5ic3A7PC9z
cGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTMu
NjgsIG1pbj0zNTQuNDMsIG1heD0zNzguMDYKc2xvcGU9LTAuMDgsIFJeMj0wLjAwIj7CsSAxLjAw
JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj44LjcwJSBXb3JzZSZuYnNwOzwvdGQ+
PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz02LjU2LCBtaW49MzUzLjAyLCBtYXg9MzkyLjM5
CnNsb3BlPS0wLjk5LCBSXjI9MC4xNyI+Mzc2LjY5PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUi
Pnw2Ljc4JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVy
dmFsRGVsdGEiIHRpdGxlPSLPgz02LjU2LCBtaW49MzUzLjAyLCBtYXg9MzkyLjM5CnNsb3BlPS0w
Ljk5LCBSXjI9MC4xNyI+wrEgMS43NCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+
Ni43OCUgV29yc2UmbmJzcDs8L3RkPjwvdHI+PHRyIGNsYXNzPSJvZGQiPjx0ZCBjbGFzcz0idGVz
dCI+L0Ryb21hZW8vanNsaWItZXZlbnQtanF1ZXJ5OlJ1bnM8L3RkPjx0ZCBjbGFzcz0idW5pdCI+
cnVucy9zPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDIsIG1pbj0wLjAxLCBt
YXg9MC4xMgpzbG9wZT0wLjAwLCBSXjI9MC4wNiI+MC4wOTwvdGQ+PHRkIGNsYXNzPSJjb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDIsIG1pbj0wLjAxLCBtYXg9MC4xMgpzbG9w
ZT0wLjAwLCBSXjI9MC4wNiI+wrEgMjAuMTElPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9
Is+DPTAuMDIsIG1pbj0wLjAxLCBtYXg9MC4xMgpzbG9wZT0wLjAwLCBSXjI9MC4wNSI+MC4wOTxz
cGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDIsIG1pbj0wLjAxLCBtYXg9MC4xMgpzbG9w
ZT0wLjAwLCBSXjI9MC4wNSI+wrEgMjAuMTElPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwv
dGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjAyLCBtaW49MC4wMSwgbWF4PTAuMTIK
c2xvcGU9MC4wMCwgUl4yPTAuMDYiPjAuMDk8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwv
c3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0w
LjAyLCBtaW49MC4wMSwgbWF4PTAuMTIKc2xvcGU9MC4wMCwgUl4yPTAuMDYiPsKxIDIwLjIzJTwv
dGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0i
z4M9MC4wMiwgbWluPTAuMDEsIG1heD0wLjEyCnNsb3BlPTAuMDAsIFJeMj0wLjAzIj4wLjA5PHNw
YW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVu
Y2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wMiwgbWluPTAuMDEsIG1heD0wLjEyCnNsb3Bl
PTAuMDAsIFJeMj0wLjAzIj7CsSAyMC4zMCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90
ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDIsIG1pbj0wLjAxLCBtYXg9MC4xMgpz
bG9wZT0wLjAwLCBSXjI9MC4wMiI+MC4wOTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9z
cGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAu
MDIsIG1pbj0wLjAxLCBtYXg9MC4xMgpzbG9wZT0wLjAwLCBSXjI9MC4wMiI+wrEgMjAuMTIlPC90
ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLP
gz0wLjAyLCBtaW49MC4wMiwgbWF4PTAuMTMKc2xvcGU9MC4wMCwgUl4yPTAuMDUiPjAuMDk8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5j
ZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAyLCBtaW49MC4wMiwgbWF4PTAuMTMKc2xvcGU9
MC4wMCwgUl4yPTAuMDUiPsKxIDE5Ljk0JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3Rk
Pjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wMiwgbWluPTAuMDEsIG1heD0wLjE2CnNs
b3BlPTAuMDAsIFJeMj0wLjAyIj4wLjEwPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3Nw
YW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4w
MiwgbWluPTAuMDEsIG1heD0wLjE2CnNsb3BlPTAuMDAsIFJeMj0wLjAyIj7CsSAyMS4wNCU8L3Rk
Pjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+D
PTAuMDIsIG1pbj0wLjAxLCBtYXg9MC4xMwpzbG9wZT0wLjAwLCBSXjI9MC4wMiI+MC4wOTxzcGFu
IHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNl
SW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDIsIG1pbj0wLjAxLCBtYXg9MC4xMwpzbG9wZT0w
LjAwLCBSXjI9MC4wMiI+wrEgMjAuMzUlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+
PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjAyLCBtaW49MC4wMiwgbWF4PTAuMTIKc2xv
cGU9MC4wMCwgUl4yPTAuMDMiPjAuMTA8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bh
bj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAy
LCBtaW49MC4wMiwgbWF4PTAuMTIKc2xvcGU9MC4wMCwgUl4yPTAuMDMiPsKxIDE5LjkxJTwvdGQ+
PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9
MC4wMiwgbWluPTAuMDEsIG1heD0wLjEyCnNsb3BlPTAuMDAsIFJeMj0wLjA0Ij4wLjA5PHNwYW4g
c3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJ
bnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wMiwgbWluPTAuMDEsIG1heD0wLjEyCnNsb3BlPTAu
MDAsIFJeMj0wLjA0Ij7CsSAyMC4wOSU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48
L3RyPjx0ciBjbGFzcz0iZXZlbiI+PHRkIGNsYXNzPSJ0ZXN0Ij4vRHJvbWFlby9qc2xpYi1ldmVu
dC1wcm90b3R5cGU6UnVuczwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij5ydW5zL3M8L3RkPjx0ZCBjbGFz
cz0icmVzdWx0IiB0aXRsZT0iz4M9OC4xNywgbWluPTM4MS43MCwgbWF4PTQzMC4zMwpzbG9wZT0w
LjQ3LCBSXjI9MC4wMyI+NDAzLjE5PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERl
bHRhIiB0aXRsZT0iz4M9OC4xNywgbWluPTM4MS43MCwgbWF4PTQzMC4zMwpzbG9wZT0wLjQ3LCBS
XjI9MC4wMyI+wrEgMi4wMyU8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MTAuODgs
IG1pbj0zNjQuMzYsIG1heD00MzMuMjQKc2xvcGU9LTAuNzUsIFJeMj0wLjA0Ij40MDEuMTA8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5j
ZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0xMC44OCwgbWluPTM2NC4zNiwgbWF4PTQzMy4yNApz
bG9wZT0tMC43NSwgUl4yPTAuMDQiPsKxIDIuNzElPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0zLjg2LCBtaW49Mzg5LjgxLCBtYXg9
NDE1LjM1CnNsb3BlPTEuMjUsIFJeMj0wLjgwIj40MDMuMzM8c3BhbiBzdHlsZT0iZGlzcGxheTog
bm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRp
dGxlPSLPgz0zLjg2LCBtaW49Mzg5LjgxLCBtYXg9NDE1LjM1CnNsb3BlPTEuMjUsIFJeMj0wLjgw
Ij7CsSAwLjk2JSA8c3BhbiBjbGFzcz0icmVncmVzc2lvbi13YXJuaW5nIiB0aXRsZT0iRGV0ZWN0
ZWQgYSB0aW1lIGRlcGVuZGVuY3kgd2l0aCBzbG9wZT0xLjI1LCBSXjI9MC44MCI+PHN2ZyB2aWV3
Qm94PSIwIDAgMTAwIDEwMCIgc3R5bGU9IndpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IHZlcnRp
Y2FsLWFsaWduOiBib3R0b207IiB2ZXJzaW9uPSIxLjEiPjxwb2x5Z29uIGZpbGw9InJlZCIgcG9p
bnRzPSI1MCwxMCA5MCw4MCAxMCw4MCA1MCwxMCIgc3Ryb2tlPSJyZWQiIHN0cm9rZS13aWR0aD0i
MTAiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcG9seWdvbj48cG9seWdvbiBmaWxsPSJ3aGl0
ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUyLDI5IDUzLDMwIDUwLDYwIiBzdHJv
a2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48L3Bv
bHlnb24+PGNpcmNsZSBjeD0iNTAiIGN5PSI3MyIgcj0iNiIgZmlsbD0id2hpdGUiPjwvY2lyY2xl
Pjwvc3ZnPiA8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNz
PSJyZXN1bHQiIHRpdGxlPSLPgz0yLjQ5LCBtaW49Mzk2Ljc1LCBtYXg9NDE1LjQ0CnNsb3BlPS0w
LjQ4LCBSXjI9MC4yOSI+NDA3LjQ3PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+
PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9Mi40OSwg
bWluPTM5Ni43NSwgbWF4PTQxNS40NApzbG9wZT0tMC40OCwgUl4yPTAuMjkiPsKxIDAuNjElPC90
ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLP
gz03LjQ0LCBtaW49MzcxLjkwLCBtYXg9NDE0LjU5CnNsb3BlPS0xLjgxLCBSXjI9MC40NSI+NDAy
LjUxPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNv
bmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9Ny40NCwgbWluPTM3MS45MCwgbWF4PTQx
NC41OQpzbG9wZT0tMS44MSwgUl4yPTAuNDUiPsKxIDEuODUlPC90ZD48dGQgY2xhc3M9ImNvbXBh
cmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz01LjIyLCBtaW49MzczLjM3
LCBtYXg9NDA4LjcyCnNsb3BlPTEuMTAsIFJeMj0wLjM0Ij4zOTMuMjY8c3BhbiBzdHlsZT0iZGlz
cGxheTogbm9uZSI+fDIuNDYlIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25m
aWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTUuMjIsIG1pbj0zNzMuMzcsIG1heD00MDgu
NzIKc2xvcGU9MS4xMCwgUl4yPTAuMzQiPsKxIDEuMzMlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlz
b24gd29yc2UiPjIuNDYlIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9
Is+DPTUuMzIsIG1pbj0zODIuNjEsIG1heD00MTQuNTQKc2xvcGU9LTEuMjksIFJeMj0wLjQ1Ij4z
OTguMDA8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0i
Y29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz01LjMyLCBtaW49MzgyLjYxLCBtYXg9
NDE0LjU0CnNsb3BlPS0xLjI5LCBSXjI9MC40NSI+wrEgMS4zNCU8L3RkPjx0ZCBjbGFzcz0iY29t
cGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTUuNzksIG1pbj0zNjAu
NzcsIG1heD0zOTcuNDIKc2xvcGU9LTAuOTAsIFJeMj0wLjE5Ij4zODQuMzc8c3BhbiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+fDQuNjclIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJj
b25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTUuNzksIG1pbj0zNjAuNzcsIG1heD0z
OTcuNDIKc2xvcGU9LTAuOTAsIFJeMj0wLjE5Ij7CsSAxLjUxJTwvdGQ+PHRkIGNsYXNzPSJjb21w
YXJpc29uIHdvcnNlIj40LjY3JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRp
dGxlPSLPgz02LjIzLCBtaW49MzcxLjY1LCBtYXg9NDA3LjYwCnNsb3BlPTAuMDIsIFJeMj0wLjAw
Ij4zOTEuNjg8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDIuODYlIFdvcnNlJm5ic3A7PC9z
cGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTYu
MjMsIG1pbj0zNzEuNjUsIG1heD00MDcuNjAKc2xvcGU9MC4wMiwgUl4yPTAuMDAiPsKxIDEuNTkl
PC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjIuODYlIFdvcnNlJm5ic3A7PC90ZD48
dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTMuNjUsIG1pbj0zNzcuMjYsIG1heD00MDEuNDUK
c2xvcGU9MC4yMiwgUl4yPTAuMDMiPjM5MC4zODxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58
My4xOCUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZh
bERlbHRhIiB0aXRsZT0iz4M9My42NSwgbWluPTM3Ny4yNiwgbWF4PTQwMS40NQpzbG9wZT0wLjIy
LCBSXjI9MC4wMyI+wrEgMC45MyU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+My4x
OCUgV29yc2UmbmJzcDs8L3RkPjwvdHI+PHRyIGNsYXNzPSJvZGQiPjx0ZCBjbGFzcz0idGVzdCI+
L0Ryb21hZW8vanNsaWItbW9kaWZ5LXByb3RvdHlwZTpSdW5zPC90ZD48dGQgY2xhc3M9InVuaXQi
PnJ1bnMvczwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjY3LCBtaW49MTQ4LjQ0
LCBtYXg9MTU0LjAwCnNsb3BlPTAuMDYsIFJeMj0wLjA1Ij4xNTEuODM8L3RkPjx0ZCBjbGFzcz0i
Y29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjY3LCBtaW49MTQ4LjQ0LCBtYXg9
MTU0LjAwCnNsb3BlPTAuMDYsIFJeMj0wLjA1Ij7CsSAwLjQ0JTwvdGQ+PHRkIGNsYXNzPSJyZXN1
bHQiIHRpdGxlPSLPgz0xLjIyLCBtaW49MTQ1LjQ5LCBtYXg9MTU0LjM0CnNsb3BlPS0wLjIwLCBS
XjI9MC4yMSI+MTUxLjEwPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48
dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MS4yMiwgbWluPTE0
NS40OSwgbWF4PTE1NC4zNApzbG9wZT0tMC4yMCwgUl4yPTAuMjEiPsKxIDAuODElPC90ZD48dGQg
Y2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0xLjM3
LCBtaW49MTQ2LjQwLCBtYXg9MTU1LjU0CnNsb3BlPS0wLjM0LCBSXjI9MC40OCI+MTUxLjEyPHNw
YW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVu
Y2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MS4zNywgbWluPTE0Ni40MCwgbWF4PTE1NS41NApz
bG9wZT0tMC4zNCwgUl4yPTAuNDgiPsKxIDAuOTElPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0xLjA3LCBtaW49MTQ3LjU1LCBtYXg9
MTU1Ljk0CnNsb3BlPTAuMDcsIFJeMj0wLjAzIj4xNTEuODc8c3BhbiBzdHlsZT0iZGlzcGxheTog
bm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRp
dGxlPSLPgz0xLjA3LCBtaW49MTQ3LjU1LCBtYXg9MTU1Ljk0CnNsb3BlPTAuMDcsIFJeMj0wLjAz
Ij7CsSAwLjcwJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVz
dWx0IiB0aXRsZT0iz4M9MC45NiwgbWluPTE0Ny43NCwgbWF4PTE1NC4zNgpzbG9wZT0wLjE1LCBS
XjI9MC4xOSI+MTUxLjU4PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48
dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC45NiwgbWluPTE0
Ny43NCwgbWF4PTE1NC4zNgpzbG9wZT0wLjE1LCBSXjI9MC4xOSI+wrEgMC42MyU8L3RkPjx0ZCBj
bGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuNjMs
IG1pbj0xNTEuODMsIG1heD0xNTcuMDgKc2xvcGU9MC4wOCwgUl4yPTAuMTMiPjE1NC4wOTxzcGFu
IHN0eWxlPSJkaXNwbGF5OiBub25lIj58MS40OSUgQmV0dGVyPC9zcGFuPjwvdGQ+PHRkIGNsYXNz
PSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuNjMsIG1pbj0xNTEuODMsIG1h
eD0xNTcuMDgKc2xvcGU9MC4wOCwgUl4yPTAuMTMiPsKxIDAuNDElPC90ZD48dGQgY2xhc3M9ImNv
bXBhcmlzb24gYmV0dGVyIj4xLjQ5JSBCZXR0ZXI8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRs
ZT0iz4M9MC44NywgbWluPTE0OC44MCwgbWF4PTE1Ni4zNQpzbG9wZT0tMC4wNCwgUl4yPTAuMDIi
PjE1My4yMzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58MC45MiUgQmV0dGVyPC9zcGFuPjwv
dGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuODcsIG1p
bj0xNDguODAsIG1heD0xNTYuMzUKc2xvcGU9LTAuMDQsIFJeMj0wLjAyIj7CsSAwLjU3JTwvdGQ+
PHRkIGNsYXNzPSJjb21wYXJpc29uIGJldHRlciI+MC45MiUgQmV0dGVyPC90ZD48dGQgY2xhc3M9
InJlc3VsdCIgdGl0bGU9Is+DPTEuMDQsIG1pbj0xNDkuNTUsIG1heD0xNTcuMTgKc2xvcGU9LTAu
MTEsIFJeMj0wLjA4Ij4xNTQuMjE8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDEuNTclIEJl
dHRlcjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxl
PSLPgz0xLjA0LCBtaW49MTQ5LjU1LCBtYXg9MTU3LjE4CnNsb3BlPS0wLjExLCBSXjI9MC4wOCI+
wrEgMC42NyU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiBiZXR0ZXIiPjEuNTclIEJldHRlcjwv
dGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjc2LCBtaW49MTQ5LjgzLCBtYXg9MTU2
LjA4CnNsb3BlPTAuMDIsIFJeMj0wLjAxIj4xNTMuMzc8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9u
ZSI+fDEuMDElIEJldHRlcjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFs
RGVsdGEiIHRpdGxlPSLPgz0wLjc2LCBtaW49MTQ5LjgzLCBtYXg9MTU2LjA4CnNsb3BlPTAuMDIs
IFJeMj0wLjAxIj7CsSAwLjUwJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIGJldHRlciI+MS4w
MSUgQmV0dGVyPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuODMsIG1pbj0xNTAu
NzcsIG1heD0xNTcuNjgKc2xvcGU9MC4yMSwgUl4yPTAuNTAiPjE1NC4zMjxzcGFuIHN0eWxlPSJk
aXNwbGF5OiBub25lIj58MS42NCUgQmV0dGVyPC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRl
bmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuODMsIG1pbj0xNTAuNzcsIG1heD0xNTcuNjgK
c2xvcGU9MC4yMSwgUl4yPTAuNTAiPsKxIDAuNTQlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24g
YmV0dGVyIj4xLjY0JSBCZXR0ZXI8L3RkPjwvdHI+PHRyIGNsYXNzPSJldmVuIj48dGQgY2xhc3M9
InRlc3QiPi9Ecm9tYWVvL2pzbGliLXN0eWxlLWpxdWVyeTpSdW5zPC90ZD48dGQgY2xhc3M9InVu
aXQiPnJ1bnMvczwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjAwLCBtaW49MS4w
NiwgbWF4PTEuMDkKc2xvcGU9MC4wMCwgUl4yPTAuMjQiPjEuMDc8L3RkPjx0ZCBjbGFzcz0iY29u
ZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAwLCBtaW49MS4wNiwgbWF4PTEuMDkK
c2xvcGU9MC4wMCwgUl4yPTAuMjQiPsKxIDAuMzYlPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0
bGU9Is+DPTAuMDAsIG1pbj0xLjA2LCBtYXg9MS4wOQpzbG9wZT0wLjAwLCBSXjI9MC44NSI+MS4w
ODxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58MC40NyUgQmV0dGVyPC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDAsIG1pbj0xLjA2
LCBtYXg9MS4wOQpzbG9wZT0wLjAwLCBSXjI9MC44NSI+wrEgMC4zMSU8L3RkPjx0ZCBjbGFzcz0i
Y29tcGFyaXNvbiBiZXR0ZXIiPjAuNDclIEJldHRlcjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRp
dGxlPSLPgz0wLjAwLCBtaW49MS4wNywgbWF4PTEuMDgKc2xvcGU9MC4wMCwgUl4yPTAuMTIiPjEu
MDg8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29u
ZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAwLCBtaW49MS4wNywgbWF4PTEuMDgK
c2xvcGU9MC4wMCwgUl4yPTAuMTIiPsKxIDAuMTYlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24i
PjwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjAwLCBtaW49MS4wNiwgbWF4PTEu
MDkKc2xvcGU9LTAuMDAsIFJeMj0wLjIyIj4xLjA4PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUi
Pnw8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0i
z4M9MC4wMCwgbWluPTEuMDYsIG1heD0xLjA5CnNsb3BlPS0wLjAwLCBSXjI9MC4yMiI+wrEgMC4y
NyU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0
bGU9Is+DPTAuMDEsIG1pbj0xLjA0LCBtYXg9MS4wOApzbG9wZT0tMC4wMCwgUl4yPTAuMjUiPjEu
MDc8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29u
ZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAxLCBtaW49MS4wNCwgbWF4PTEuMDgK
c2xvcGU9LTAuMDAsIFJeMj0wLjI1Ij7CsSAwLjU1JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29u
Ij48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wMCwgbWluPTEuMDQsIG1heD0x
LjA2CnNsb3BlPTAuMDAsIFJeMj0wLjA5Ij4xLjA1PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUi
PnwyLjA2JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVy
dmFsRGVsdGEiIHRpdGxlPSLPgz0wLjAwLCBtaW49MS4wNCwgbWF4PTEuMDYKc2xvcGU9MC4wMCwg
Ul4yPTAuMDkiPsKxIDAuMzAlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2UiPjIuMDYl
IFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDAsIG1pbj0x
LjAzLCBtYXg9MS4wNgpzbG9wZT0tMC4wMCwgUl4yPTAuMjEiPjEuMDU8c3BhbiBzdHlsZT0iZGlz
cGxheTogbm9uZSI+fDEuOTYlIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25m
aWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDAsIG1pbj0xLjAzLCBtYXg9MS4wNgpz
bG9wZT0tMC4wMCwgUl4yPTAuMjEiPsKxIDAuMzMlPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24g
d29yc2UiPjEuOTYlIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+D
PTAuMDAsIG1pbj0xLjAzLCBtYXg9MS4wNgpzbG9wZT0tMC4wMCwgUl4yPTAuMDEiPjEuMDU8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDIuMTQlIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDAsIG1pbj0xLjAz
LCBtYXg9MS4wNgpzbG9wZT0tMC4wMCwgUl4yPTAuMDEiPsKxIDAuMzAlPC90ZD48dGQgY2xhc3M9
ImNvbXBhcmlzb24gd29yc2UiPjIuMTQlIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3Vs
dCIgdGl0bGU9Is+DPTAuMDAsIG1pbj0xLjA0LCBtYXg9MS4wNgpzbG9wZT0wLjAwLCBSXjI9MC4z
MSI+MS4wNTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58MS44NyUgV29yc2UmbmJzcDs8L3Nw
YW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4w
MCwgbWluPTEuMDQsIG1heD0xLjA2CnNsb3BlPTAuMDAsIFJeMj0wLjMxIj7CsSAwLjI1JTwvdGQ+
PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4xLjg3JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNs
YXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjAwLCBtaW49MS4wNCwgbWF4PTEuMDYKc2xvcGU9MC4w
MCwgUl4yPTAuMzAiPjEuMDU8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDEuNzUlIFdvcnNl
Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0
bGU9Is+DPTAuMDAsIG1pbj0xLjA0LCBtYXg9MS4wNgpzbG9wZT0wLjAwLCBSXjI9MC4zMCI+wrEg
MC4yOSU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MS43NSUgV29yc2UmbmJzcDs8
L3RkPjwvdHI+PHRyIGNsYXNzPSJvZGQiPjx0ZCBjbGFzcz0idGVzdCI+L0Ryb21hZW8vanNsaWIt
c3R5bGUtcHJvdG90eXBlOlJ1bnM8L3RkPjx0ZCBjbGFzcz0idW5pdCI+cnVucy9zPC90ZD48dGQg
Y2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuODMsIG1pbj0xNTEuMzYsIG1heD0xNTcuMDUKc2xv
cGU9MC4yNCwgUl4yPTAuNjIiPjE1NS4xMzwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2
YWxEZWx0YSIgdGl0bGU9Is+DPTAuODMsIG1pbj0xNTEuMzYsIG1heD0xNTcuMDUKc2xvcGU9MC4y
NCwgUl4yPTAuNjIiPsKxIDAuNTQlIDxzcGFuIGNsYXNzPSJyZWdyZXNzaW9uLXdhcm5pbmciIHRp
dGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3aXRoIHNsb3BlPTAuMjQsIFJeMj0wLjYy
Ij48c3ZnIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdodDog
MThweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+PHBvbHlnb24gZmls
bD0icmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJva2U9InJlZCIgc3Ry
b2tlLXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PC9wb2x5Z29uPjxwb2x5Z29u
IGZpbGw9IndoaXRlIiBwb2ludHM9IjQ3LDMwIDQ4LDI5LCA1MCwgMjguNywgNTIsMjkgNTMsMzAg
NTAsNjAiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMTAiIHN0cm9rZS1saW5lam9pbj0i
cm91bmQiPjwvcG9seWdvbj48Y2lyY2xlIGN4PSI1MCIgY3k9IjczIiByPSI2IiBmaWxsPSJ3aGl0
ZSI+PC9jaXJjbGU+PC9zdmc+IDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0i
z4M9MS4wMiwgbWluPTE0OC45NywgbWF4PTE1NS44NgpzbG9wZT0wLjE0LCBSXjI9MC4xNCI+MTUx
LjU4PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwyLjI5JSBXb3JzZSZuYnNwOzwvc3Bhbj48
L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0xLjAyLCBt
aW49MTQ4Ljk3LCBtYXg9MTU1Ljg2CnNsb3BlPTAuMTQsIFJeMj0wLjE0Ij7CsSAwLjY3JTwvdGQ+
PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4yLjI5JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNs
YXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0wLjc2LCBtaW49MTQ3Ljc4LCBtYXg9MTUzLjQ1CnNsb3Bl
PS0wLjE4LCBSXjI9MC40NCI+MTUwLjIzPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwzLjE2
JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVs
dGEiIHRpdGxlPSLPgz0wLjc2LCBtaW49MTQ3Ljc4LCBtYXg9MTUzLjQ1CnNsb3BlPS0wLjE4LCBS
XjI9MC40NCI+wrEgMC41MCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+My4xNiUg
V29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9Mi41NiwgbWluPTE0
MC45MSwgbWF4PTE1Ni40NgpzbG9wZT0wLjM3LCBSXjI9MC4xNiI+MTUxLjE0PHNwYW4gc3R5bGU9
ImRpc3BsYXk6IG5vbmUiPnwyLjU3JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0i
Y29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0yLjU2LCBtaW49MTQwLjkxLCBtYXg9
MTU2LjQ2CnNsb3BlPTAuMzcsIFJeMj0wLjE2Ij7CsSAxLjcwJTwvdGQ+PHRkIGNsYXNzPSJjb21w
YXJpc29uIHdvcnNlIj4yLjU3JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRp
dGxlPSLPgz0xLjQxLCBtaW49MTQ2LjAxLCBtYXg9MTU1Ljg2CnNsb3BlPS0wLjA0LCBSXjI9MC4w
MSI+MTUxLjEzPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwyLjU4JSBXb3JzZSZuYnNwOzwv
c3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0x
LjQxLCBtaW49MTQ2LjAxLCBtYXg9MTU1Ljg2CnNsb3BlPS0wLjA0LCBSXjI9MC4wMSI+wrEgMC45
NCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+Mi41OCUgV29yc2UmbmJzcDs8L3Rk
Pjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MS44MCwgbWluPTE0NS4zNiwgbWF4PTE1OC4w
MgpzbG9wZT0tMC4zMCwgUl4yPTAuMjEiPjE1MS42NzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25l
Ij58Mi4yMyUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRl
cnZhbERlbHRhIiB0aXRsZT0iz4M9MS44MCwgbWluPTE0NS4zNiwgbWF4PTE1OC4wMgpzbG9wZT0t
MC4zMCwgUl4yPTAuMjEiPsKxIDEuMTklPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24gd29yc2Ui
PjIuMjMlIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTEuMTAs
IG1pbj0xNDAuODQsIG1heD0xNDguNDgKc2xvcGU9LTAuMTgsIFJeMj0wLjIwIj4xNDUuMDM8c3Bh
biBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDYuNTElIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTEuMTAsIG1pbj0xNDAu
ODQsIG1heD0xNDguNDgKc2xvcGU9LTAuMTgsIFJeMj0wLjIwIj7CsSAwLjc2JTwvdGQ+PHRkIGNs
YXNzPSJjb21wYXJpc29uIHdvcnNlIj42LjUxJSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJy
ZXN1bHQiIHRpdGxlPSLPgz0wLjkxLCBtaW49MTQ4LjIwLCBtYXg9MTU0LjA0CnNsb3BlPS0wLjI1
LCBSXjI9MC41NyI+MTUxLjUxPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwyLjMzJSBXb3Jz
ZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRp
dGxlPSLPgz0wLjkxLCBtaW49MTQ4LjIwLCBtYXg9MTU0LjA0CnNsb3BlPS0wLjI1LCBSXjI9MC41
NyI+wrEgMC42MCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+Mi4zMyUgV29yc2Um
bmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9My43NiwgbWluPTE0MC40NSwg
bWF4PTE2My40MgpzbG9wZT0tMC4xOSwgUl4yPTAuMDIiPjE0OS43ODxzcGFuIHN0eWxlPSJkaXNw
bGF5OiBub25lIj58My40NSUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZp
ZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9My43NiwgbWluPTE0MC40NSwgbWF4PTE2My40
MgpzbG9wZT0tMC4xOSwgUl4yPTAuMDIiPsKxIDIuNTElPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlz
b24gd29yc2UiPjMuNDUlIFdvcnNlJm5ic3A7PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9
Is+DPTIuOTQsIG1pbj0xNDEuMzAsIG1heD0xNjAuNTcKc2xvcGU9LTAuMzAsIFJeMj0wLjA4Ij4x
NTEuMDM8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDIuNjQlIFdvcnNlJm5ic3A7PC9zcGFu
PjwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTIuOTQs
IG1pbj0xNDEuMzAsIG1heD0xNjAuNTcKc2xvcGU9LTAuMzAsIFJeMj0wLjA4Ij7CsSAxLjk1JTwv
dGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdvcnNlIj4yLjY0JSBXb3JzZSZuYnNwOzwvdGQ+PC90
cj48dHIgY2xhc3M9ImV2ZW4iPjx0ZCBjbGFzcz0idGVzdCI+L0Ryb21hZW8vanNsaWItdHJhdmVy
c2UtanF1ZXJ5OlJ1bnM8L3RkPjx0ZCBjbGFzcz0idW5pdCI+cnVucy9zPC90ZD48dGQgY2xhc3M9
InJlc3VsdCIgdGl0bGU9Is+DPTAuMDQsIG1pbj0yOS41OCwgbWF4PTI5Ljg2CnNsb3BlPS0wLjAw
LCBSXjI9MC4wMCI+MjkuNzQ8L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz0wLjA0LCBtaW49MjkuNTgsIG1heD0yOS44NgpzbG9wZT0tMC4wMCwgUl4yPTAu
MDAiPsKxIDAuMTIlPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMjQsIG1pbj0y
OC41OCwgbWF4PTI5LjkzCnNsb3BlPS0wLjA0LCBSXjI9MC4yMCI+MjkuNDg8c3BhbiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+fDAuODclIFdvcnNlJm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJj
b25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMjQsIG1pbj0yOC41OCwgbWF4PTI5
LjkzCnNsb3BlPS0wLjA0LCBSXjI9MC4yMCI+wrEgMC44MSU8L3RkPjx0ZCBjbGFzcz0iY29tcGFy
aXNvbiB3b3JzZSI+MC44NyUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRs
ZT0iz4M9MC4wOSwgbWluPTI5LjQ5LCBtYXg9MzAuMDQKc2xvcGU9LTAuMDEsIFJeMj0wLjE3Ij4y
OS43NTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJj
b25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTAuMDksIG1pbj0yOS40OSwgbWF4PTMw
LjA0CnNsb3BlPS0wLjAxLCBSXjI9MC4xNyI+wrEgMC4zMSU8L3RkPjx0ZCBjbGFzcz0iY29tcGFy
aXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTAuMDUsIG1pbj0yOS41NSwg
bWF4PTI5Ljk3CnNsb3BlPS0wLjAwLCBSXjI9MC4wMyI+MjkuNzc8c3BhbiBzdHlsZT0iZGlzcGxh
eTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz0wLjA1LCBtaW49MjkuNTUsIG1heD0yOS45NwpzbG9wZT0tMC4wMCwgUl4yPTAu
MDMiPsKxIDAuMTglPC90ZD48dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+PHRkIGNsYXNzPSJy
ZXN1bHQiIHRpdGxlPSLPgz0wLjA4LCBtaW49MjkuNDksIG1heD0zMC4wMwpzbG9wZT0tMC4wMiwg
Ul4yPTAuMzUiPjI5LjczPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90ZD48
dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wOCwgbWluPTI5
LjQ5LCBtYXg9MzAuMDMKc2xvcGU9LTAuMDIsIFJeMj0wLjM1Ij7CsSAwLjI2JTwvdGQ+PHRkIGNs
YXNzPSJjb21wYXJpc29uIj48L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wNSwg
bWluPTI5LjQ0LCBtYXg9MjkuODEKc2xvcGU9MC4wMSwgUl4yPTAuMzIiPjI5LjY1PHNwYW4gc3R5
bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjMxJSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFz
cz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjA1LCBtaW49MjkuNDQsIG1h
eD0yOS44MQpzbG9wZT0wLjAxLCBSXjI9MC4zMiI+wrEgMC4xNiU8L3RkPjx0ZCBjbGFzcz0iY29t
cGFyaXNvbiB3b3JzZSI+MC4zMSUgV29yc2UmbmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0
aXRsZT0iz4M9MC4wNywgbWluPTI5LjI1LCBtYXg9MjkuODgKc2xvcGU9MC4wMSwgUl4yPTAuMTIi
PjI5LjYyPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjQxJSBXb3JzZSZuYnNwOzwvc3Bh
bj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjA3
LCBtaW49MjkuMjUsIG1heD0yOS44OApzbG9wZT0wLjAxLCBSXjI9MC4xMiI+wrEgMC4yMiU8L3Rk
Pjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MC40MSUgV29yc2UmbmJzcDs8L3RkPjx0ZCBj
bGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wNywgbWluPTI5LjM2LCBtYXg9MjkuODkKc2xvcGU9
MC4wMCwgUl4yPTAuMDAiPjI5LjY1PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjI5JSBX
b3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEi
IHRpdGxlPSLPgz0wLjA3LCBtaW49MjkuMzYsIG1heD0yOS44OQpzbG9wZT0wLjAwLCBSXjI9MC4w
MCI+wrEgMC4yNCU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiB3b3JzZSI+MC4yOSUgV29yc2Um
bmJzcDs8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0aXRsZT0iz4M9MC4wNSwgbWluPTI5LjM0LCBt
YXg9MjkuNzcKc2xvcGU9LTAuMDEsIFJeMj0wLjE2Ij4yOS41OTxzcGFuIHN0eWxlPSJkaXNwbGF5
OiBub25lIj58MC40OSUgV29yc2UmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVu
Y2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MC4wNSwgbWluPTI5LjM0LCBtYXg9MjkuNzcKc2xv
cGU9LTAuMDEsIFJeMj0wLjE2Ij7CsSAwLjE4JTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIHdv
cnNlIj4wLjQ5JSBXb3JzZSZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQiIHRpdGxlPSLPgz0w
LjA2LCBtaW49MjkuMzYsIG1heD0yOS44MgpzbG9wZT0tMC4wMCwgUl4yPTAuMDAiPjI5LjYxPHNw
YW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwwLjQ1JSBXb3JzZSZuYnNwOzwvc3Bhbj48L3RkPjx0
ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0wLjA2LCBtaW49Mjku
MzYsIG1heD0yOS44MgpzbG9wZT0tMC4wMCwgUl4yPTAuMDAiPsKxIDAuMTklPC90ZD48dGQgY2xh
c3M9ImNvbXBhcmlzb24gd29yc2UiPjAuNDUlIFdvcnNlJm5ic3A7PC90ZD48L3RyPjx0ciBjbGFz
cz0ib2RkIj48dGQgY2xhc3M9InRlc3QiPi9Ecm9tYWVvL2pzbGliLXRyYXZlcnNlLXByb3RvdHlw
ZTpSdW5zPC90ZD48dGQgY2xhc3M9InVuaXQiPnJ1bnMvczwvdGQ+PHRkIGNsYXNzPSJyZXN1bHQi
IHRpdGxlPSLPgz0zLjE2LCBtaW49MTg0LjIxLCBtYXg9MjA2LjI2CnNsb3BlPS0wLjMxLCBSXjI9
MC4wNyI+MTk0LjIzPC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRs
ZT0iz4M9My4xNiwgbWluPTE4NC4yMSwgbWF4PTIwNi4yNgpzbG9wZT0tMC4zMSwgUl4yPTAuMDci
PsKxIDEuNjMlPC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTIuODYsIG1pbj0xODQu
MzksIG1heD0yMDAuMTcKc2xvcGU9LTAuNzEsIFJeMj0wLjQ4Ij4xOTQuODE8c3BhbiBzdHlsZT0i
ZGlzcGxheTogbm9uZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFs
RGVsdGEiIHRpdGxlPSLPgz0yLjg2LCBtaW49MTg0LjM5LCBtYXg9MjAwLjE3CnNsb3BlPS0wLjcx
LCBSXjI9MC40OCI+wrEgMS40NyU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQg
Y2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTEuODMsIG1pbj0xODguMTksIG1heD0yMDAuMjkKc2xv
cGU9LTAuMjIsIFJeMj0wLjExIj4xOTQuMDU8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDwv
c3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxlPSLPgz0x
LjgzLCBtaW49MTg4LjE5LCBtYXg9MjAwLjI5CnNsb3BlPS0wLjIyLCBSXjI9MC4xMSI+wrEgMC45
NSU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0
bGU9Is+DPTEuNDYsIG1pbj0xOTQuMTgsIG1heD0yMDMuMzkKc2xvcGU9MC4wMSwgUl4yPTAuMDAi
PjE5OS44NzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58Mi45MCUgQmV0dGVyPC9zcGFuPjwv
dGQ+PHRkIGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTEuNDYsIG1p
bj0xOTQuMTgsIG1heD0yMDMuMzkKc2xvcGU9MC4wMSwgUl4yPTAuMDAiPsKxIDAuNzMlPC90ZD48
dGQgY2xhc3M9ImNvbXBhcmlzb24gYmV0dGVyIj4yLjkwJSBCZXR0ZXI8L3RkPjx0ZCBjbGFzcz0i
cmVzdWx0IiB0aXRsZT0iz4M9My4wMCwgbWluPTE4Ni42MCwgbWF4PTIwNC45MQpzbG9wZT0wLjU3
LCBSXjI9MC4yOCI+MTk0LjU1PHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnw8L3NwYW4+PC90
ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9My4wMCwgbWlu
PTE4Ni42MCwgbWF4PTIwNC45MQpzbG9wZT0wLjU3LCBSXjI9MC4yOCI+wrEgMS41NCU8L3RkPjx0
ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTIu
MDksIG1pbj0xOTAuNjUsIG1heD0yMDQuNzkKc2xvcGU9MC4xOSwgUl4yPTAuMDYiPjE5OC4xODxz
cGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58Mi4wMyUgQmV0dGVyPC9zcGFuPjwvdGQ+PHRkIGNs
YXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTIuMDksIG1pbj0xOTAuNjUs
IG1heD0yMDQuNzkKc2xvcGU9MC4xOSwgUl4yPTAuMDYiPsKxIDEuMDUlPC90ZD48dGQgY2xhc3M9
ImNvbXBhcmlzb24gYmV0dGVyIj4yLjAzJSBCZXR0ZXI8L3RkPjx0ZCBjbGFzcz0icmVzdWx0IiB0
aXRsZT0iz4M9MS4wNSwgbWluPTE5NC45NiwgbWF4PTIwMi4xMgpzbG9wZT0wLjEyLCBSXjI9MC4x
MCI+MTk4LjIwPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwyLjA0JSBCZXR0ZXI8L3NwYW4+
PC90ZD48dGQgY2xhc3M9ImNvbmZpZGVuY2VJbnRlcnZhbERlbHRhIiB0aXRsZT0iz4M9MS4wNSwg
bWluPTE5NC45NiwgbWF4PTIwMi4xMgpzbG9wZT0wLjEyLCBSXjI9MC4xMCI+wrEgMC41MyU8L3Rk
Pjx0ZCBjbGFzcz0iY29tcGFyaXNvbiBiZXR0ZXIiPjIuMDQlIEJldHRlcjwvdGQ+PHRkIGNsYXNz
PSJyZXN1bHQiIHRpdGxlPSLPgz0yLjk3LCBtaW49MTkzLjI4LCBtYXg9MjA5LjQ4CnNsb3BlPTAu
MjgsIFJeMj0wLjA3Ij4xOTguMTY8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9uZSI+fDIuMDIlIEJl
dHRlcjwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxl
PSLPgz0yLjk3LCBtaW49MTkzLjI4LCBtYXg9MjA5LjQ4CnNsb3BlPTAuMjgsIFJeMj0wLjA3Ij7C
sSAxLjUwJTwvdGQ+PHRkIGNsYXNzPSJjb21wYXJpc29uIGJldHRlciI+Mi4wMiUgQmV0dGVyPC90
ZD48dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Is+DPTQuNDksIG1pbj0xODAuOTksIG1heD0yMDQu
NjcKc2xvcGU9LTEuMjIsIFJeMj0wLjU3Ij4xOTcuODQ8c3BhbiBzdHlsZT0iZGlzcGxheTogbm9u
ZSI+fDwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iY29uZmlkZW5jZUludGVydmFsRGVsdGEiIHRpdGxl
PSLPgz00LjQ5LCBtaW49MTgwLjk5LCBtYXg9MjA0LjY3CnNsb3BlPS0xLjIyLCBSXjI9MC41NyI+
wrEgMi4yNyU8L3RkPjx0ZCBjbGFzcz0iY29tcGFyaXNvbiI+PC90ZD48dGQgY2xhc3M9InJlc3Vs
dCIgdGl0bGU9Is+DPTQuMDUsIG1pbj0xODMuNDUsIG1heD0yMDcuNjgKc2xvcGU9MC4yNCwgUl4y
PTAuMDMiPjE5Ny41MTxzcGFuIHN0eWxlPSJkaXNwbGF5OiBub25lIj58PC9zcGFuPjwvdGQ+PHRk
IGNsYXNzPSJjb25maWRlbmNlSW50ZXJ2YWxEZWx0YSIgdGl0bGU9Is+DPTQuMDUsIG1pbj0xODMu
NDUsIG1heD0yMDcuNjgKc2xvcGU9MC4yNCwgUl4yPTAuMDMiPsKxIDIuMDUlPC90ZD48dGQgY2xh
c3M9ImNvbXBhcmlzb24iPjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+CjxzY3JpcHQ+CgooZnVu
Y3Rpb24gKCkgewogICAgdmFyIGpRdWVyeSA9ICdQZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVz
b3VyY2VzL2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42LjQuanMnOwogICAgdmFyIHBsdWdpbnMg
PSBbJ1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL2pxdWVyeS5mbG90Lm1pbi5qcycsICdQZXJm
b3JtYW5jZVRlc3RzL3Jlc291cmNlcy9qcXVlcnkudGFibGVzb3J0ZXIubWluLmpzJywKICAgICAg
ICAnUGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvc3RhdGlzdGljcy5qcyddOwogICAgdmFyIGxv
Y2FsUGF0aCA9ICcvVXNlcnMvYWJ1Y3VyL1dlYktpdCc7CiAgICB2YXIgcmVtb3RlUGF0aCA9ICdo
dHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rJzsKICAgIHZhciBu
dW1iZXJPZkZhaWx1cmVzID0gMDsKICAgIHZhciBzdGFydGVkTG9hZGluZ1BsdWdpbnMgPSBmYWxz
ZTsKICAgIHZhciBudW1iZXJPZkxvYWRlZFBsdWdpbnMgPSAwOwoKICAgIGZ1bmN0aW9uIGxvYWRT
Y3JpcHQoc3JjLCBsb2FkZWQsIGZhaWxlZCkgewogICAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlOwog
ICAgICAgIHNjcmlwdC5zcmMgPSBzcmM7CiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRlZDsK
ICAgICAgICBpZiAoZmFpbGVkKQogICAgICAgICAgICBzY3JpcHQub25lcnJvciA9IGZhaWxlZDsK
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICB9CgogICAgZnVu
Y3Rpb24gbG9hZFBsdWdpbnModHJ1bmtQYXRoKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwbHVnaW5zLmxlbmd0aDsgaSsrKQogICAgICAgICAgICBsb2FkU2NyaXB0KHRydW5rUGF0aCAr
ICcvJyArIHBsdWdpbnNbaV0sIGxvYWRlZFBsdWdpbiwgY3JlYXRlRmFpbGVkVG9Mb2FkUGx1Z2lu
KHBsdWdpbnNbaV0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkZWRQbHVnaW4oKSB7CiAgICAg
ICAgbnVtYmVyT2ZMb2FkZWRQbHVnaW5zKys7CiAgICAgICAgaWYgKG51bWJlck9mTG9hZGVkUGx1
Z2lucyA9PSBwbHVnaW5zLmxlbmd0aCkKICAgICAgICAgICAgc2V0VGltZW91dChpbml0LCAwKTsg
ICAgICAgICAgICAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVGYWlsZWRUb0xvYWRQbHVnaW4o
cGx1Z2luKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBs
b2FkICIgKyBwbHVnaW4pOyB9CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlTG9hZGVkSlF1ZXJ5
KHRydW5rUGF0aCkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IGxvYWRQbHVnaW5zKHRy
dW5rUGF0aCk7IH0KICAgIH0KCiAgICBsb2FkU2NyaXB0KGxvY2FsUGF0aCArICcvJyArIGpRdWVy
eSwKICAgICAgICBjcmVhdGVMb2FkZWRKUXVlcnkobG9jYWxQYXRoKSwKICAgICAgICBmdW5jdGlv
biAoKSB7CiAgICAgICAgICAgIGxvYWRTY3JpcHQocmVtb3RlUGF0aCArICcvJyArIGpRdWVyeSwK
ICAgICAgICAgICAgICAgIGNyZWF0ZUxvYWRlZEpRdWVyeShyZW1vdGVQYXRoKSwKICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uICgpIHsgYWxlcnQoIkZhaWxlZCB0byBsb2FkIGpRdWVyeS4iKTsgfSk7
CiAgICAgICAgfSk7Cn0pKCk7CgpmdW5jdGlvbiBUZXN0UmVzdWx0KG1ldHJpYywgdmFsdWVzLCBh
c3NvY2lhdGVkUnVuKSB7CiAgICBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgQXJyYXkpIHsKICAg
ICAgICB2YXIgZmxhdHRlbmVkVmFsdWVzID0gW107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB2YWx1ZXMubGVuZ3RoOyBpKyspCiAgICAgICAgICAgIGZsYXR0ZW5lZFZhbHVlcyA9IGZsYXR0
ZW5lZFZhbHVlcy5jb25jYXQodmFsdWVzW2ldKTsKICAgICAgICB2YWx1ZXMgPSBmbGF0dGVuZWRW
YWx1ZXM7CiAgICB9CgogICAgdGhpcy50ZXN0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0cmlj
OyB9CiAgICB0aGlzLnZhbHVlcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlcy5tYXAoZnVu
Y3Rpb24gKHZhbHVlKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogdmFsdWU7IH0p
OyB9CiAgICB0aGlzLnVuc2NhbGVkTWVhbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFN0YXRpc3Rp
Y3Muc3VtKHZhbHVlcykgLyB2YWx1ZXMubGVuZ3RoOyB9CiAgICB0aGlzLm1lYW4gPSBmdW5jdGlv
biAoKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogdGhpcy51bnNjYWxlZE1lYW4o
KTsgfQogICAgdGhpcy5taW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0Zh
Y3RvcigpICogU3RhdGlzdGljcy5taW4odmFsdWVzKTsgfQogICAgdGhpcy5tYXggPSBmdW5jdGlv
biAoKSB7IHJldHVybiBtZXRyaWMuc2NhbGluZ0ZhY3RvcigpICogU3RhdGlzdGljcy5tYXgodmFs
dWVzKTsgfQogICAgdGhpcy5jb25maWRlbmNlSW50ZXJ2YWxEZWx0YSA9IGZ1bmN0aW9uICgpIHsK
ICAgICAgICByZXR1cm4gbWV0cmljLnNjYWxpbmdGYWN0b3IoKSAqIFN0YXRpc3RpY3MuY29uZmlk
ZW5jZUludGVydmFsRGVsdGEoMC45NSwgdmFsdWVzLmxlbmd0aCwKICAgICAgICAgICAgU3RhdGlz
dGljcy5zdW0odmFsdWVzKSwgU3RhdGlzdGljcy5zcXVhcmVTdW0odmFsdWVzKSk7CiAgICB9CiAg
ICB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhUmF0aW8gPSBmdW5jdGlvbiAoKSB7IHJldHVy
biB0aGlzLmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCkgLyB0aGlzLm1lYW4oKTsgfQogICAgdGhp
cy5wZXJjZW50RGlmZmVyZW5jZSA9IGZ1bmN0aW9uKG90aGVyKSB7IHJldHVybiAob3RoZXIudW5z
Y2FsZWRNZWFuKCkgLSB0aGlzLnVuc2NhbGVkTWVhbigpKSAvIHRoaXMudW5zY2FsZWRNZWFuKCk7
IH0KICAgIHRoaXMuaXNTdGF0aXN0aWNhbGx5U2lnbmlmaWNhbnQgPSBmdW5jdGlvbiAob3RoZXIp
IHsKICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigp
KTsKICAgICAgICByZXR1cm4gZGlmZiA+IHRoaXMuY29uZmlkZW5jZUludGVydmFsRGVsdGEoKSAm
JiBkaWZmID4gb3RoZXIuY29uZmlkZW5jZUludGVydmFsRGVsdGEoKTsKICAgIH0KICAgIHRoaXMu
cnVuID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFJ1bjsgfQp9CgpmdW5jdGlvbiBU
ZXN0UnVuKGVudHJ5KSB7CiAgICB0aGlzLmRlc2NyaXB0aW9uID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gZW50cnlbJ2Rlc2NyaXB0aW9uJ107IH0KICAgIHRoaXMud2Via2l0UmV2aXNpb24gPSBmdW5j
dGlvbiAoKSB7IHJldHVybiBlbnRyeVsncmV2aXNpb25zJ11bJ1dlYktpdCddWydyZXZpc2lvbidd
OyB9CiAgICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYWJlbCA9ICdy
JyArIHRoaXMud2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbigp
KQogICAgICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5kZXNjcmlwdGlvbigpOwog
ICAgICAgIHJldHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVyZlRlc3RNZXRyaWMobmFt
ZSwgbWV0cmljKSB7CiAgICB2YXIgdGVzdFJlc3VsdHMgPSBbXTsKICAgIHZhciBjYWNoZWRVbml0
ID0gbnVsbDsKICAgIHZhciBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIHZhciB1bml0
ID0geydGcmFtZVJhdGUnOiAnZnBzJywgJ1J1bnMnOiAncnVucy9zJywgJ1RpbWUnOiAnbXMnLCAn
TWFsbG9jJzogJ2J5dGVzJywgJ0pTSGVhcCc6ICdieXRlcyd9W21ldHJpY107CgogICAgLy8gV2Ug
Y2FuJ3QgZG8gdGhpcyBpbiBUZXN0UmVzdWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2gg
dGVzdCBuZWVkIHRvIHNoYXJlIHRoZSBzYW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFj
dG9yLgogICAgZnVuY3Rpb24gY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0
IHJlc3VsdC4KICAgICAgICAvLyBXZSBjYW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0
LgogICAgICAgIGlmICghdGVzdFJlc3VsdHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAg
ICAgIHJldHVybjsKCiAgICAgICAgdmFyIG1lYW4gPSB0ZXN0UmVzdWx0c1swXS51bnNjYWxlZE1l
YW4oKTsgLy8gRklYTUU6IFdlIHNob3VsZCBsb29rIGF0IGFsbCB2YWx1ZXMuCiAgICAgICAgdmFy
IGtpbG8gPSB1bml0ID09ICdieXRlcycgPyAxMDI0IDogMTAwMDsKICAgICAgICBpZiAobWVhbiA+
IDEwICoga2lsbyAqIGtpbG8gJiYgdW5pdCAhPSAnbXMnKSB7CiAgICAgICAgICAgIGNhY2hlZFNj
YWxpbmdGYWN0b3IgPSAxIC8ga2lsbyAvIGtpbG87CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSAn
TSAnICsgdW5pdDsKICAgICAgICB9IGVsc2UgaWYgKG1lYW4gPiAxMCAqIGtpbG8pIHsKICAgICAg
ICAgICAgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IDEgLyBraWxvOwogICAgICAgICAgICBjYWNoZWRV
bml0ID0gdW5pdCA9PSAnbXMnID8gJ3MnIDogKCdLICcgKyB1bml0KTsKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMTsKICAgICAgICAgICAgY2FjaGVk
VW5pdCA9IHVuaXQ7CiAgICAgICAgfQogICAgfQoKICAgIHRoaXMubmFtZSA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIG5hbWUgKyAnOicgKyBtZXRyaWM7IH0KICAgIHRoaXMuaXNNZW1vcnlUZXN0ID0g
ZnVuY3Rpb24gKCkgeyByZXR1cm4gbWV0cmljID09ICdKU0hlYXAnIHx8IG1ldHJpYyA9PSAnTWFs
bG9jJzsgfQogICAgdGhpcy5hZGRSZXN1bHQgPSBmdW5jdGlvbiAobmV3UmVzdWx0KSB7CiAgICAg
ICAgdGVzdFJlc3VsdHMucHVzaChuZXdSZXN1bHQpOwogICAgICAgIGNhY2hlZFVuaXQgPSBudWxs
OwogICAgICAgIGNhY2hlZFNjYWxpbmdGYWN0b3IgPSBudWxsOwogICAgfQogICAgdGhpcy5yZXN1
bHRzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGVzdFJlc3VsdHM7IH0KICAgIHRoaXMuc2NhbGlu
Z0ZhY3RvciA9IGZ1bmN0aW9uKCkgewogICAgICAgIGNvbXB1dGVTY2FsaW5nRmFjdG9ySWZOZWVk
ZWQoKTsKICAgICAgICByZXR1cm4gY2FjaGVkU2NhbGluZ0ZhY3RvcjsKICAgIH0KICAgIHRoaXMu
dW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3RvcklmTmVlZGVk
KCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFVuaXQ7CiAgICB9CiAgICB0aGlzLnNtYWxsZXJJc0Jl
dHRlciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuaXQgPT0gJ21zJyB8fCB1bml0ID09ICdieXRl
cyc7IH0KfQoKdmFyIHBsb3RDb2xvciA9ICdyZ2IoMjMwLDUwLDUwKSc7CnZhciBzdWJwb2ludHNQ
bG90T3B0aW9ucyA9IHsKICAgIGxpbmVzOiB7c2hvdzp0cnVlLCBsaW5lV2lkdGg6IDB9LAogICAg
Y29sb3I6IHBsb3RDb2xvciwKICAgIHBvaW50czoge3Nob3c6IHRydWUsIHJhZGl1czogMX0sCiAg
ICBiYXJzOiB7c2hvdzogZmFsc2V9fTsKCnZhciBtYWluUGxvdE9wdGlvbnMgPSB7CiAgICB4YXhp
czogewogICAgICAgIG1pbjogLTAuNSwKICAgICAgICB0aWNrU2l6ZTogMSwKICAgIH0sCiAgICBj
cm9zc2hhaXI6IHsgbW9kZTogJ3knIH0sCiAgICBzZXJpZXM6IHsgc2hhZG93U2l6ZTogMCB9LAog
ICAgYmFyczoge3Nob3c6IHRydWUsIGFsaWduOiAnY2VudGVyJywgYmFyV2lkdGg6IDAuNX0sCiAg
ICBsaW5lczogeyBzaG93OiBmYWxzZSB9LAogICAgcG9pbnRzOiB7IHNob3c6IHRydWUgfSwKICAg
IGdyaWQ6IHsKICAgICAgICBib3JkZXJXaWR0aDogMSwKICAgICAgICBib3JkZXJDb2xvcjogJyNj
Y2MnLAogICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLAogICAgICAgIGhvdmVyYWJsZTog
dHJ1ZSwKICAgICAgICBhdXRvSGlnaGxpZ2h0OiBmYWxzZSwKICAgIH0KfTsKCnZhciB0aW1lUGxv
dE9wdGlvbnMgPSB7CiAgICB5YXhpczogeyBzaG93OiBmYWxzZSB9LAogICAgeGF4aXM6IHsgc2hv
dzogZmFsc2UgfSwKICAgIGxpbmVzOiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsgYm9yZGVy
V2lkdGg6IDEsIGJvcmRlckNvbG9yOiAnI2NjYycgfSwKICAgIGNvbG9yczogWyBwbG90Q29sb3Ig
XQp9OwoKZnVuY3Rpb24gY3JlYXRlUGxvdChjb250YWluZXIsIHRlc3QpIHsKICAgIHZhciBzZWN0
aW9uID0gJCgnPHNlY3Rpb24+PGRpdiBjbGFzcz0icGxvdCI+PC9kaXY+PGRpdiBjbGFzcz0idGlt
ZS1wbG90cyI+PC9kaXY+JwogICAgICAgICsgJzxzcGFuIGNsYXNzPSJ0b29sdGlwIj48L3NwYW4+
PC9zZWN0aW9uPicpOwogICAgc2VjdGlvbi5jaGlsZHJlbignLnBsb3QnKS5jc3Moeyd3aWR0aCc6
ICgxMDAgKiB0ZXN0LnJlc3VsdHMoKS5sZW5ndGggKyAyNSkgKyAncHgnLCAnaGVpZ2h0JzogJzMw
MHB4J30pOwogICAgJChjb250YWluZXIpLmFwcGVuZChzZWN0aW9uKTsKCiAgICB2YXIgcGxvdENv
bnRhaW5lciA9IHNlY3Rpb24uY2hpbGRyZW4oJy5wbG90Jyk7CiAgICB2YXIgbWluSXNaZXJvID0g
dHJ1ZTsKICAgIGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKCiAg
ICBhdHRhY2hUaW1lUGxvdHModGVzdCwgc2VjdGlvbi5jaGlsZHJlbignLnRpbWUtcGxvdHMnKSk7
CgogICAgdmFyIHRvb2x0aXAgPSBzZWN0aW9uLmNoaWxkcmVuKCcudG9vbHRpcCcpOwogICAgcGxv
dENvbnRhaW5lci5iaW5kKCdwbG90aG92ZXInLCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0aW9uLCBp
dGVtKSB7CiAgICAgICAgaWYgKGl0ZW0pIHsKICAgICAgICAgICAgdmFyIHBvc3RmaXggPSBpdGVt
LnNlcmllcy5pZCA/ICcgKCcgKyBpdGVtLnNlcmllcy5pZCArICcpJyA6ICcnOwogICAgICAgICAg
ICB0b29sdGlwLmh0bWwoaXRlbS5kYXRhcG9pbnRbMV0udG9QcmVjaXNpb24oNCkgKyBwb3N0Zml4
KTsKICAgICAgICAgICAgdmFyIHNlY3Rpb25PZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNldCgpOwog
ICAgICAgICAgICB0b29sdGlwLmNzcyh7bGVmdDogaXRlbS5wYWdlWCAtIHNlY3Rpb25PZmZzZXQu
bGVmdCAtIHRvb2x0aXAub3V0ZXJXaWR0aCgpIC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0gc2VjdGlv
bk9mZnNldC50b3AgKyAxMH0pOwogICAgICAgICAgICB0b29sdGlwLmZhZGVJbigyMDApOwogICAg
ICAgIH0gZWxzZQogICAgICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENv
bnRhaW5lci5tb3VzZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAg
ICB9KTsKICAgIHBsb3RDb250YWluZXIuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICBtaW5Jc1plcm8gPSAhbWluSXNaZXJvOwog
ICAgICAgIGF0dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKICAgIH0p
OwoKICAgIHJldHVybiBzZWN0aW9uOwp9CgpmdW5jdGlvbiBhdHRhY2hUaW1lUGxvdHModGVzdCwg
Y29udGFpbmVyKSB7CiAgICB2YXIgcmVzdWx0cyA9IHRlc3QucmVzdWx0cygpOwogICAgdmFyIGF0
dGFjaGVkUGxvdCA9IGZhbHNlOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0
aDsgaSsrKSB7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZCgnPGRpdj48L2Rpdj4nKTsKICAgICAg
ICB2YXIgdmFsdWVzID0gcmVzdWx0c1tpXS52YWx1ZXMoKTsKICAgICAgICBpZiAoIXZhbHVlcykK
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgYXR0YWNoZWRQbG90ID0gdHJ1ZTsKCiAgICAg
ICAgJC5wbG90KGNvbnRhaW5lci5jaGlsZHJlbigpLmxhc3QoKSwgW3ZhbHVlcy5tYXAoZnVuY3Rp
b24gKHZhbHVlLCBpbmRleCkgeyByZXR1cm4gW2luZGV4LCB2YWx1ZV07IH0pXSwKICAgICAgICAg
ICAgJC5leHRlbmQodHJ1ZSwge30sIHRpbWVQbG90T3B0aW9ucywge3lheGlzOiB7bWluOiBNYXRo
Lm1pbi5hcHBseShNYXRoLCB2YWx1ZXMpICogMC45LCBtYXg6IE1hdGgubWF4LmFwcGx5KE1hdGgs
IHZhbHVlcykgKiAxLjF9LAogICAgICAgICAgICAgICAgeGF4aXM6IHttaW46IC0wLjUsIG1heDog
dmFsdWVzLmxlbmd0aCAtIDAuNX19KSk7CiAgICB9CiAgICBpZiAoIWF0dGFjaGVkUGxvdCkKICAg
ICAgICBjb250YWluZXIuY2hpbGRyZW4oKS5yZW1vdmUoKTsKfQoKZnVuY3Rpb24gYXR0YWNoUGxv
dCh0ZXN0LCBwbG90Q29udGFpbmVyLCBtaW5Jc1plcm8pIHsKICAgIHZhciByZXN1bHRzID0gdGVz
dC5yZXN1bHRzKCk7CgogICAgdmFyIHZhbHVlcyA9IHJlc3VsdHMucmVkdWNlKGZ1bmN0aW9uICh2
YWx1ZXMsIHJlc3VsdCwgaW5kZXgpIHsKICAgICAgICB2YXIgbmV3VmFsdWVzID0gcmVzdWx0LnZh
bHVlcygpOwogICAgICAgIHJldHVybiBuZXdWYWx1ZXMgPyB2YWx1ZXMuY29uY2F0KG5ld1ZhbHVl
cy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBbaW5kZXgsIHZhbHVlXTsgfSkpIDogdmFs
dWVzOwogICAgfSwgW10pOwoKICAgIHZhciBwbG90RGF0YSA9IFskLmV4dGVuZCh0cnVlLCB7fSwg
c3VicG9pbnRzUGxvdE9wdGlvbnMsIHtkYXRhOiB2YWx1ZXN9KV07CiAgICBwbG90RGF0YS5wdXNo
KHtpZDogJyZtdTsnLCBkYXRhOiByZXN1bHRzLm1hcChmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkg
eyByZXR1cm4gW2luZGV4LCByZXN1bHQubWVhbigpXTsgfSksIGNvbG9yOiBwbG90Q29sb3J9KTsK
CiAgICB2YXIgb3ZlcmFsbE1heCA9IFN0YXRpc3RpY3MubWF4KHJlc3VsdHMubWFwKGZ1bmN0aW9u
IChyZXN1bHQsIGluZGV4KSB7IHJldHVybiByZXN1bHQubWF4KCk7IH0pKTsKICAgIHZhciBvdmVy
YWxsTWluID0gU3RhdGlzdGljcy5taW4ocmVzdWx0cy5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5k
ZXgpIHsgcmV0dXJuIHJlc3VsdC5taW4oKTsgfSkpOwogICAgdmFyIG1hcmdpbiA9IChvdmVyYWxs
TWF4IC0gb3ZlcmFsbE1pbikgKiAwLjE7CiAgICB2YXIgY3VycmVudFBsb3RPcHRpb25zID0gJC5l
eHRlbmQodHJ1ZSwge30sIG1haW5QbG90T3B0aW9ucywge3lheGlzOiB7CiAgICAgICAgbWluOiBt
aW5Jc1plcm8gPyAwIDogb3ZlcmFsbE1pbiAtIG1hcmdpbiwKICAgICAgICBtYXg6IG1pbklzWmVy
byA/IG92ZXJhbGxNYXggKiAxLjEgOiBvdmVyYWxsTWF4ICsgbWFyZ2lufX0pOwoKICAgIGN1cnJl
bnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1bHRzLmxlbmd0aCAtIDAuNTsKICAgIGN1cnJl
bnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJlc3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQs
IGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5ydW4oKS5sYWJlbCgpXTsgfSk7CgogICAg
JC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRhLCBjdXJyZW50UGxvdE9wdGlvbnMpOwp9Cgpm
dW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24odmFsdWUpIHsKICAgIHZhciBkZWNpbWFsID0g
dmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBkZWNpbWFsOwp9CgpmdW5jdGlvbiBmb3JtYXRQ
ZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIgcGVyY2VudGFnZSA9IGZyYWN0aW9uICogMTAw
OwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCkudG9GaXhlZCgyKSArICclJzsKfQoKZnVuY3Rp
b24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNl
SW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5odG1sKCc8dGhlYWQ+PHRyPjx0aD5UZXN0PC90
aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1bmN0aW9uIChydW4sIGluZGV4KSB7CiAgICAg
ICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChpbmRleCA9PSByZWZlcmVuY2VJbmRleCA/IDIg
OiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2NvbXBhcmlzb25cJ30iPicgKyBydW4ubGFiZWwo
KSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1cCwgY2VsbCkgeyByZXR1
cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwvdHI+PC9oZWFkPjx0Ym9keT48L3Rib2R5Picp
OwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAgIGZvciAodGVzdE5hbWUgaW4gdGVzdHMpCiAg
ICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUpOwoKICAgIHRlc3ROYW1lcy5zb3J0KCkubWFw
KGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAgIHZhciB0ZXN0ID0gdGVzdHNbdGVzdE5hbWVd
OwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVzdCgpICE9IHNob3VsZElnbm9yZU1lbW9yeSkK
ICAgICAgICAgICAgY3JlYXRlVGFibGVSb3cocnVucywgdGVzdCwgcmVmZXJlbmNlSW5kZXgpOwog
ICAgfSk7CgogICAgJCgnI2NvbnRhaW5lcicpLnRhYmxlc29ydGVyKHt3aWRnZXRzOiBbJ3plYnJh
J119KTsKfQoKZnVuY3Rpb24gbGluZWFyUmVncmVzc2lvbihwb2ludHMpIHsKICAgIC8vIEltcGxl
bWVudCBodHRwOi8vd3d3LmVhc3ljYWxjdWxhdGlvbi5jb20vc3RhdGlzdGljcy9sZWFybi1jb3Jy
ZWxhdGlvbi5waHAuCiAgICAvLyB4ID0gbWFnbml0dWRlCiAgICAvLyB5ID0gaXRlcmF0aW9ucwog
ICAgdmFyIHN1bVggPSAwOwogICAgdmFyIHN1bVkgPSAwOwogICAgdmFyIHN1bVhTcXVhcmVkID0g
MDsKICAgIHZhciBzdW1ZU3F1YXJlZCA9IDA7CiAgICB2YXIgc3VtWFRpbWVzWSA9IDA7CgogICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgeCA9
IGk7CiAgICAgICAgdmFyIHkgPSBwb2ludHNbaV07CiAgICAgICAgc3VtWCArPSB4OwogICAgICAg
IHN1bVkgKz0geTsKICAgICAgICBzdW1YU3F1YXJlZCArPSB4ICogeDsKICAgICAgICBzdW1ZU3F1
YXJlZCArPSB5ICogeTsKICAgICAgICBzdW1YVGltZXNZICs9IHggKiB5OwogICAgfQoKICAgIHZh
ciByID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3VtWCAqIHN1bVkpIC8KICAgICAg
ICBNYXRoLnNxcnQoKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1YKSAq
CiAgICAgICAgICAgICAgICAgIChwb2ludHMubGVuZ3RoICogc3VtWVNxdWFyZWQgLSBzdW1ZICog
c3VtWSkpOwoKICAgIGlmIChpc05hTihyKSB8fCByID09IE1hdGguSW5maW5pdHkpCiAgICAgICAg
ciA9IDA7CgogICAgdmFyIHNsb3BlID0gKHBvaW50cy5sZW5ndGggKiBzdW1YVGltZXNZIC0gc3Vt
WCAqIHN1bVkpIC8gKHBvaW50cy5sZW5ndGggKiBzdW1YU3F1YXJlZCAtIHN1bVggKiBzdW1YKTsK
ICAgIHZhciBpbnRlcmNlcHQgPSBzdW1ZIC8gcG9pbnRzLmxlbmd0aCAtIHNsb3BlICogc3VtWCAv
IHBvaW50cy5sZW5ndGg7CiAgICByZXR1cm4ge3Nsb3BlOiBzbG9wZSwgaW50ZXJjZXB0OiBpbnRl
cmNlcHQsIHJTcXVhcmVkOiByICogcn07Cn0KCnZhciB3YXJuaW5nU2lnbiA9ICc8c3ZnIHZpZXdC
b3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0id2lkdGg6IDE4cHg7IGhlaWdodDogMThweDsgdmVydGlj
YWwtYWxpZ246IGJvdHRvbTsiIHZlcnNpb249IjEuMSI+JwogICAgKyAnPHBvbHlnb24gZmlsbD0i
cmVkIiBwb2ludHM9IjUwLDEwIDkwLDgwIDEwLDgwIDUwLDEwIiBzdHJva2U9InJlZCIgc3Ryb2tl
LXdpZHRoPSIxMCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgLz4nCiAgICArICc8cG9seWdvbiBm
aWxsPSJ3aGl0ZSIgcG9pbnRzPSI0NywzMCA0OCwyOSwgNTAsIDI4LjcsIDUyLDI5IDUzLDMwIDUw
LDYwIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBzdHJva2UtbGluZWpvaW49InJv
dW5kIiAvPicKICAgICsgJzxjaXJjbGUgY3g9IjUwIiBjeT0iNzMiIHI9IjYiIGZpbGw9IndoaXRl
IiAvPicKICAgICsgJzwvc3ZnPic7CgpmdW5jdGlvbiBjcmVhdGVUYWJsZVJvdyhydW5zLCB0ZXN0
LCByZWZlcmVuY2VJbmRleCkgewogICAgdmFyIHRhYmxlUm93ID0gJCgnPHRyPjx0ZCBjbGFzcz0i
dGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNzPSJ1bml0Ij4nICsgdGVzdC51
bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIGZ1bmN0aW9uIG1hcmt1cEZvclJ1bihyZXN1bHQs
IHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgIHZhciBjb21wYXJpc29uQ2VsbCA9ICcnOwogICAg
ICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAgICAgIHZhciBzaG91bGRDb21wYXJlID0gcmVz
dWx0ICE9PSByZWZlcmVuY2VSZXN1bHQ7CiAgICAgICAgaWYgKHNob3VsZENvbXBhcmUgJiYgcmVm
ZXJlbmNlUmVzdWx0KSB7CiAgICAgICAgICAgIHZhciBwZXJjZW50RGlmZmVyZW5jZSA9IHJlZmVy
ZW5jZVJlc3VsdC5wZXJjZW50RGlmZmVyZW5jZShyZXN1bHQpOwogICAgICAgICAgICB2YXIgYmV0
dGVyID0gdGVzdC5zbWFsbGVySXNCZXR0ZXIoKSA/IHBlcmNlbnREaWZmZXJlbmNlIDwgMCA6IHBl
cmNlbnREaWZmZXJlbmNlID4gMDsKICAgICAgICAgICAgdmFyIGNvbXBhcmlzb24gPSAnJzsKICAg
ICAgICAgICAgdmFyIGNsYXNzTmFtZSA9ICdjb21wYXJpc29uJzsKICAgICAgICAgICAgaWYgKHJl
ZmVyZW5jZVJlc3VsdC5pc1N0YXRpc3RpY2FsbHlTaWduaWZpY2FudChyZXN1bHQpKSB7CiAgICAg
ICAgICAgICAgICBjb21wYXJpc29uID0gZm9ybWF0UGVyY2VudGFnZShNYXRoLmFicyhwZXJjZW50
RGlmZmVyZW5jZSkpICsgKGJldHRlciA/ICcgQmV0dGVyJyA6ICcgV29yc2UmbmJzcDsnKTsKICAg
ICAgICAgICAgICAgIGNsYXNzTmFtZSArPSBiZXR0ZXIgPyAnIGJldHRlcicgOiAnIHdvcnNlJzsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBoaWRkZW5WYWx1ZSA9ICc8c3BhbiBzdHlsZT0iZGlz
cGxheTogbm9uZSI+fCcgKyBjb21wYXJpc29uICsgJzwvc3Bhbj4nOwogICAgICAgICAgICBjb21w
YXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9IicgKyBjbGFzc05hbWUgKyAnIj4nICsgY29tcGFyaXNv
biArICc8L3RkPic7CiAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21wYXJlKQogICAgICAgICAg
ICBjb21wYXJpc29uQ2VsbCA9ICc8dGQgY2xhc3M9ImNvbXBhcmlzb24iPjwvdGQ+JzsKCiAgICAg
ICAgdmFyIHZhbHVlcyA9IHJlc3VsdC52YWx1ZXMoKTsKICAgICAgICB2YXIgd2FybmluZyA9ICcn
OwogICAgICAgIHZhciByZWdyZXNzaW9uQW5hbHlzaXMgPSAnJzsKICAgICAgICBpZiAodmFsdWVz
ICYmIHZhbHVlcy5sZW5ndGggPiAzKSB7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25SZXN1bHQgPSBs
aW5lYXJSZWdyZXNzaW9uKHZhbHVlcyk7CiAgICAgICAgICAgIHJlZ3Jlc3Npb25BbmFseXNpcyA9
ICdzbG9wZT0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jlc3Npb25SZXN1bHQuc2xvcGUp
CiAgICAgICAgICAgICAgICArICcsIFJeMj0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlZ3Jl
c3Npb25SZXN1bHQuclNxdWFyZWQpOwogICAgICAgICAgICBpZiAocmVncmVzc2lvblJlc3VsdC5y
U3F1YXJlZCA+IDAuNiAmJiBNYXRoLmFicyhyZWdyZXNzaW9uUmVzdWx0LnNsb3BlKSA+IDAuMDEp
IHsKICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAnIDxzcGFuIGNsYXNzPSJyZWdyZXNzaW9uLXdh
cm5pbmciIHRpdGxlPSJEZXRlY3RlZCBhIHRpbWUgZGVwZW5kZW5jeSB3aXRoICcgKyByZWdyZXNz
aW9uQW5hbHlzaXMgKyAnIj4nICsgd2FybmluZ1NpZ24gKyAnIDwvc3Bhbj4nOwogICAgICAgICAg
ICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGlzdGljcyA9ICcmc2lnbWE7PScgKyB0b0Zp
eGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRhKCkpICsgJywg
bWluPScgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1pbigpKQogICAgICAgICAgICAr
ICcsIG1heD0nICsgdG9GaXhlZFdpZHRoUHJlY2lzaW9uKHJlc3VsdC5tYXgoKSkgKyAnXG4nICsg
cmVncmVzc2lvbkFuYWx5c2lzOwoKICAgICAgICAvLyBUYWJsZXNvcnRlciBkb2Vzbid0IGtub3cg
YWJvdXQgdGhlIHNlY29uZCBjZWxsIHNvIHB1dCB0aGUgY29tcGFyaXNvbiBpbiB0aGUgaW52aXNp
YmxlIGVsZW1lbnQuCiAgICAgICAgcmV0dXJuICc8dGQgY2xhc3M9InJlc3VsdCIgdGl0bGU9Iicg
KyBzdGF0aXN0aWNzICsgJyI+JyArIHRvRml4ZWRXaWR0aFByZWNpc2lvbihyZXN1bHQubWVhbigp
KSArIGhpZGRlblZhbHVlCiAgICAgICAgICAgICsgJzwvdGQ+PHRkIGNsYXNzPSJjb25maWRlbmNl
SW50ZXJ2YWxEZWx0YSIgdGl0bGU9IicgKyBzdGF0aXN0aWNzICsgJyI+JnBsdXNtbjsgJwogICAg
ICAgICAgICArIGZvcm1hdFBlcmNlbnRhZ2UocmVzdWx0LmNvbmZpZGVuY2VJbnRlcnZhbERlbHRh
UmF0aW8oKSkgKyB3YXJuaW5nICsgJzwvdGQ+JyArIGNvbXBhcmlzb25DZWxsOwogICAgfQoKICAg
IGZ1bmN0aW9uIG1hcmt1cEZvck1pc3NpbmdSdW4oaXNSZWZlcmVuY2UpIHsKICAgICAgICByZXR1
cm4gJzx0ZCBjb2xzcGFuPSInICsgKGlzUmVmZXJlbmNlID8gMiA6IDMpICsgJyIgY2xhc3M9Im1p
c3NpbmciPk1pc3Npbmc8L3RkPic7CiAgICB9CgogICAgdmFyIHJ1bkluZGV4ID0gMDsKICAgIHZh
ciByZXN1bHRzID0gdGVzdC5yZXN1bHRzKCk7CiAgICB2YXIgcmVmZXJlbmNlUmVzdWx0ID0gdW5k
ZWZpbmVkOwogICAgdmFyIHJlc3VsdEluZGV4TWFwID0ge307CiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB3aGlsZSAocnVuc1tydW5JbmRleF0g
IT09IHJlc3VsdHNbaV0ucnVuKCkpCiAgICAgICAgICAgIHJ1bkluZGV4Kys7CiAgICAgICAgaWYg
KHJ1bkluZGV4ID09IHJlZmVyZW5jZUluZGV4KQogICAgICAgICAgICByZWZlcmVuY2VSZXN1bHQg
PSByZXN1bHRzW2ldOwogICAgICAgIHJlc3VsdEluZGV4TWFwW3J1bkluZGV4XSA9IGk7CiAgICB9
CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bnMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIg
cmVzdWx0SW5kZXggPSByZXN1bHRJbmRleE1hcFtpXTsKICAgICAgICBpZiAocmVzdWx0SW5kZXgg
PT0gdW5kZWZpbmVkKQogICAgICAgICAgICB0YWJsZVJvdy5hcHBlbmQobWFya3VwRm9yTWlzc2lu
Z1J1bihpID09IHJlZmVyZW5jZUluZGV4KSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICB0YWJs
ZVJvdy5hcHBlbmQobWFya3VwRm9yUnVuKHJlc3VsdHNbcmVzdWx0SW5kZXhdLCByZWZlcmVuY2VS
ZXN1bHQpKTsKICAgIH0KCiAgICAkKCcjY29udGFpbmVyJykuY2hpbGRyZW4oJ3Rib2R5JykubGFz
dCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xpY2soZnVuY3Rpb24gKGV2ZW50
KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJvd1swXSAmJiBldmVudC50YXJn
ZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAgICAgcmV0dXJuOwoKICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIgZmlyc3RDZWxsID0gdGFibGVS
b3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAoZmlyc3RDZWxsLmNoaWxkcmVu
KCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0Q2VsbC5jaGlsZHJlbignc2Vj
dGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGlsZHJlbigndGQnKS5jc3Mo
eydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFy
IHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAgICAgICAgICAgIHBsb3QuY3Nz
KHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9KTsKICAgICAgICAgICAgdmFy
IG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAgICBvZmZzZXQubGVmdCArPSAx
OwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91dGVySGVpZ2h0KCk7CiAgICAg
ICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgIHRhYmxlUm93LmNoaWxkcmVu
KCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRlckhlaWdodCgpICsgNX0pOwog
ICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Cn0KCmZ1bmN0aW9uIGluaXQo
KSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAgICAgaWQ6ICdjb21wYXJpc29u
JywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAgICByZXR1cm4gcy5pbmRleE9m
KCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDogZnVuY3Rpb24ocykgewogICAg
ICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0cmluZyhzLmluZGV4T2YoJ3wn
KSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2VkOwog
ICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAgfSk7CgogICAgdmFyIHJ1bnMg
PSBbXTsKICAgIHZhciBtZXRyaWNzID0ge307CiAgICAkLmVhY2goSlNPTi5wYXJzZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnanNvbicpLnRleHRDb250ZW50KSwgZnVuY3Rpb24gKGluZGV4LCBl
bnRyeSkgewogICAgICAgIHZhciBydW4gPSBuZXcgVGVzdFJ1bihlbnRyeSk7CiAgICAgICAgcnVu
cy5wdXNoKHJ1bik7CgogICAgICAgIGZ1bmN0aW9uIGFkZFRlc3RzKHRlc3RzLCBwYXJlbnRGdWxs
TmFtZSkgewogICAgICAgICAgICBmb3IgKHZhciB0ZXN0TmFtZSBpbiB0ZXN0cykgewogICAgICAg
ICAgICAgICAgdmFyIGZ1bGxUZXN0TmFtZSA9IHBhcmVudEZ1bGxOYW1lICsgJy8nICsgdGVzdE5h
bWU7CiAgICAgICAgICAgICAgICB2YXIgcmF3TWV0cmljcyA9IHRlc3RzW3Rlc3ROYW1lXS5tZXRy
aWNzOwoKICAgICAgICAgICAgICAgIGZvciAodmFyIG1ldHJpY05hbWUgaW4gcmF3TWV0cmljcykg
ewogICAgICAgICAgICAgICAgICAgIHZhciBmdWxsTWV0cmljTmFtZSA9IGZ1bGxUZXN0TmFtZSAr
ICc6JyArIG1ldHJpY05hbWU7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1ldHJpYyA9IG1ldHJp
Y3NbZnVsbE1ldHJpY05hbWVdOwogICAgICAgICAgICAgICAgICAgIGlmICghbWV0cmljKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgIG1ldHJpYyA9IG5ldyBQZXJmVGVzdE1ldHJpYyhmdWxsVGVz
dE5hbWUsIG1ldHJpY05hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNzW2Z1bGxN
ZXRyaWNOYW1lXSA9IG1ldHJpYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgbWV0cmljLmFkZFJlc3VsdChuZXcgVGVzdFJlc3VsdChtZXRyaWMsIHJhd01ldHJpY3Nb
bWV0cmljTmFtZV0uY3VycmVudCwgcnVuKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgaWYgKHRlc3RzW3Rlc3ROYW1lXS50ZXN0cykKICAgICAgICAgICAgICAgICAgICBhZGRU
ZXN0cyh0ZXN0c1t0ZXN0TmFtZV0udGVzdHMsIGZ1bGxUZXN0TmFtZSk7CiAgICAgICAgICAgIH0K
ICAgICAgICB9CgogICAgICAgIGFkZFRlc3RzKGVudHJ5LnRlc3RzLCAnJyk7CiAgICB9KTsKCiAg
ICB2YXIgc2hvdWxkSWdub3JlTWVtb3J5PSB0cnVlOwogICAgdmFyIHJlZmVyZW5jZUluZGV4ID0g
MDsKCiAgICBjcmVhdGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJl
ZmVyZW5jZUluZGV4KTsKCiAgICAkKCcjdGltZS1tZW1vcnknKS5iaW5kKCdjaGFuZ2UnLCBmdW5j
dGlvbiAoZXZlbnQsIGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgc2hvdWxkSWdub3JlTWVtb3J5
ID0gY2hlY2tlZEVsZW1lbnQudGV4dENvbnRlbnQgPT0gJ1RpbWUnOwogICAgICAgIGNyZWF0ZVRh
YmxlKG1ldHJpY3MsIHJ1bnMsIHNob3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpOwog
ICAgfSk7CgogICAgcnVucy5tYXAoZnVuY3Rpb24gKHJ1biwgaW5kZXgpIHsKICAgICAgICAkKCcj
cmVmZXJlbmNlJykuYXBwZW5kKCc8c3BhbiB2YWx1ZT0iJyArIGluZGV4ICsgJyInICsgKGluZGV4
ID09IHJlZmVyZW5jZUluZGV4ID8gJyBjbGFzcz0iY2hlY2tlZCInIDogJycpICsgJz4nICsgcnVu
LmxhYmVsKCkgKyAnPC9zcGFuPicpOwogICAgfSkKCiAgICAkKCcjcmVmZXJlbmNlJykuYmluZCgn
Y2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHJlZmVy
ZW5jZUluZGV4ID0gcGFyc2VJbnQoY2hlY2tlZEVsZW1lbnQuZ2V0QXR0cmlidXRlKCd2YWx1ZScp
KTsKICAgICAgICBjcmVhdGVUYWJsZShtZXRyaWNzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnks
IHJlZmVyZW5jZUluZGV4KTsKICAgIH0pOwoKICAgICQoJy5jaGVja2JveCcpLmVhY2goZnVuY3Rp
b24gKGluZGV4LCBjaGVja2JveCkgewogICAgICAgICQoY2hlY2tib3gpLmNoaWxkcmVuKCdzcGFu
JykuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0Ns
YXNzKCdjaGVja2VkJykpCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICQoY2hl
Y2tib3gpLmNoaWxkcmVuKCdzcGFuJykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAg
ICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tlZCcpOwogICAgICAgICAgICAkKGNoZWNrYm94KS50
cmlnZ2VyKCdjaGFuZ2UnLCAkKHRoaXMpKTsKICAgICAgICB9KTsKICAgIH0pOwp9Cgo8L3Njcmlw
dD48c2NyaXB0IGFzeW5jPSIiIHNyYz0iL1VzZXJzL2FidWN1ci9XZWJLaXQvUGVyZm9ybWFuY2VU
ZXN0cy9Ecm9tYWVvL3Jlc291cmNlcy9kcm9tYWVvL3dlYi9saWIvanF1ZXJ5LTEuNi40LmpzIj48
L3NjcmlwdD4KPHNjcmlwdCBpZD0ianNvbiIgdHlwZT0iYXBwbGljYXRpb24vanNvbiI+W3sidGVz
dHMiOiB7IkRyb21hZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjogeyJqc2xpYi1tb2RpZnkt
cHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5r
L1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlLmh0bWwiLCAi
bWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTQ4LjQ0MTYyODgxNTI1OTEsIDE1MC45
MDY0MTA5NTEwMjg3LCAxNTEuNDU4ODE5MzMyMjY2NzYsIDE1MS44NDM0NDA3MTQxNjcyLCAxNTIu
Nzg3NjY3MzgyMzA0OV0sIFsxNTIuMDc0MzA2NDA4NTgyNywgMTUyLjg0MTg3MDI3ODA3NTY3LCAx
NTMuMjcyNDI4NTIyMTY2MywgMTUzLjgzOTEwOTM2NTEzNzgzLCAxNTMuOTk4MzY2NTc2NzE2MV0s
IFsxNDkuNjcyMDIzNjIzMDQxNSwgMTUwLjQ5ODcxNjUzMTcxODUxLCAxNTAuODc4NDgyMTk0Mzk2
NSwgMTUxLjMwNjAzMzk2NTYxMTksIDE1Mi4yMzgzMTIwOTY2NTA3Nl0sIFsxNTAuMzQwMjk2NDYy
NDMwNCwgMTUxLjc0OTEyNjE2NTgzODI1LCAxNTIuNTQ5ODk1ODY1OTAzODQsIDE1Mi43OTk4ODQw
NDM5MjkyLCAxNTMuMTIyNDY0NjgxOTE1ODNdXX19fSwgImRyb21hZW8tM2QtY3ViZSI6IHsidXJs
IjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3Rz
L0Ryb21hZW8vZHJvbWFlby0zZC1jdWJlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3Vy
cmVudCI6IFtbMzc1OS4wLCAzODE4LjAsIDM4MTguOTk5OTk5OTk5OTk5NSwgMzgzNS4wLCAzODM3
LjBdLCBbMzcyOC4wLCAzNzk2LjAwMDAwMDAwMDAwMDUsIDM4MDIuMCwgMzgwMy4wLCAzODA1LjAw
MDAwMDAwMDAwMDVdLCBbMzc3MS45OTk5OTk5OTk5OTk1LCAzODM4LjAwMDAwMDAwMDAwMDUsIDM4
NDMuMCwgMzg0Ny4wMDAwMDAwMDAwMDA1LCAzODQ3LjE1Mjg0NzE1Mjg0NzJdLCBbMzc3MS45OTk5
OTk5OTk5OTk1LCAzODQwLjAsIDM4NDMuMCwgMzg1MC4wLCAzODU1LjBdXX19fSwgImRvbS10cmF2
ZXJzZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJm
b3JtYW5jZVRlc3RzL0Ryb21hZW8vZG9tLXRyYXZlcnNlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVu
cyI6IHsiY3VycmVudCI6IFtbMTg2LjMxMjYzNDY1NDQ3MjQsIDE4Ni41ODUxMjAyMjU5NzI0Nywg
MTg3Ljc4NzMzNTE0NTQwNzkyLCAxODcuODY0NTk4ODc0NjgzMTcsIDE4OC4xMzk2NjE4MjYwMDI5
NF0sIFsxODIuOTM5OTc3MDU3Njk1NywgMTgzLjE5MzA3NzIwNDIxNTgsIDE4My45MjQ5ODczMTk4
MTA1OCwgMTg0LjIyOTU4MjQ3NTI1Mzg2LCAxODQuODY3ODI2MjM4NDYwMV0sIFsxODEuMTQyNTA2
NjMzMjI1MDgsIDE4MS41MTI0ODc2MTk1NDI3OCwgMTgyLjQ1MTg1NzM1MDMwMzY0LCAxODIuNjcy
OTkyNjI5NDIwNSwgMTgyLjgxMjgzOTE5MTQwODJdLCBbMTc1LjkxNDM3MDM0MDA2MTgsIDE3Ni4x
MTkwMzQ2MTE0MDc5MywgMTc2LjYzMjc2OTE5MzUwNTc0LCAxNzYuNzMxNTY1Mzk4MDQ4MywgMTc3
LjA0NDAzOTM3NjA5NjU1XV19fX0sICJkb20tbW9kaWZ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tbW9k
aWZ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbNTQuOTQyNDkzMTE0
Mjc5NDY1LCA1NS41NjYzNzQ5NzUyMjE3OSwgNTYuNTAxMDUyMDU0MzM1NDUsIDU3LjQ4NDkyODQx
MzI2NTMxNSwgNTguMTM5Njk5MjMyNjU1M10sIFs1NC43MjM1OTU1ODQ2NDc3NCwgNTUuNDk5NTky
MDA1Mjk4ODQ0LCA1Ni4zMDg0NzQxNTE2MzM0NTUsIDU3LjIyNTk0NjMyODM1NjE0NCwgNTguMDc1
MjM5MTA1OTY3NTU1XSwgWzU0LjcyMjY5MzgzODQxODA4LCA1NC45NTMwMDA0ODI4OTM1NSwgNTUu
NTg3OTk0NTQyMDYzMjksIDU3LjA1NTM0OTY5MzMxOTcsIDU4LjExODI2OTY2ODkxNjI1XSwgWzU0
LjgxMjA1ODMzNTgxNTUxNCwgNTUuMzY2OTA3MzE4NTI1Mjg2LCA1Ni4xNTQ0Nzk1NDY2MzUxMiwg
NTcuMzkxMjI4OTkyMzI5NjY1LCA1OC4wNTIwOTQ5NzgzNDY5MzZdXX19fSwgImpzbGliLXN0eWxl
LWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9Q
ZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtanF1ZXJ5Lmh0bWwiLCAibWV0cmlj
cyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMS4wNjE5NDIyODQ2MzYxNDA0LCAxLjA2ODk5MTQ1
NjE1ODE0LCAxLjA3MzE2MjA1MDU5NDg4OCwgMS4wNzQ4NjA3OTYwMDQxNjIsIDEuMDc4MTY1NDk4
MTk0NzUwNF0sIFsxLjA2Nzg1Mzk4NTA4MDgyOTUsIDEuMDcxMDAxOTU5MTE4NjY2NCwgMS4wNzUz
Mjc1Mjg0OTc0MDY5LCAxLjA3NzMzMjU2OTI0MTY3NywgMS4wNzk2NjU4ODY2NDAyMl0sIFsxLjA2
MDU5NDkxMTE3OTQ5NiwgMS4wNjMyNDgxODA5Nzc4NDE4LCAxLjA2NTA0MjIxNDYzMDEyMDIsIDEu
MDY2MDA3NjMzNTUzNDI4NSwgMS4wNjg0MjgzNjU2NTA4Njg4XSwgWzEuMDc3MjMwMTcxNjg2NjYx
MiwgMS4wNzk0MjYwMjgwNDM4NDYsIDEuMDg2Mjk1NjQwOTYwMTc4NSwgMS4wODcxNDk5MzEzMDg5
MzEsIDEuMDg4MDgxMTU2MTQ2ODI3XV19fX0sICJkcm9tYWVvLW9iamVjdC1yZWdleHAiOiB7InVy
bCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0
cy9Ecm9tYWVvL2Ryb21hZW8tb2JqZWN0LXJlZ2V4cC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMi
OiB7ImN1cnJlbnQiOiBbWzUuMDE0MTI0Mzk3MjA4MzQyLCA1LjAyNzMyODkxOTA2MTA2NywgNS4w
MzMwOTExNjQ5OTE4MjEsIDUuMDM1ODE5MTY4MTA2MDU0NSwgNS4wMzczMTcxMjAyMDg4MTNdLCBb
NS4wMDk2MzYzODMwNDc3NDEsIDUuMDIyODkyODkwODE4MTE3LCA1LjAyOTQ3Mjc3Njk3ODQ4OSwg
NS4wMzM1NzMwNzYyMDA5NjIsIDUuMDM2ODgyNTM4OTQ5MTg3XSwgWzUuMDA2ODQ3NjAzNzk2OTM4
LCA1LjAxNTA3MTQzODQyNTg0NzUsIDUuMDI0MTA1NzI5OTUyNDMxLCA1LjAyNTk0NzU0NzMwNzY5
NTYsIDUuMDI4OTQwNzYyNjgwNDYwNV0sIFs1LjAwNjM0ODE0MjczNzY4NywgNS4wMjQ1NDQxMTEz
MTg2NTgsIDUuMDMyODQwODczNzE5MzgxLCA1LjAzNTE4NjY1NTQ0NzgwNCwgNS4wMzk4NzAxMzA0
MjgyOTFdXX19fSwgImRyb21hZW8tb2JqZWN0LXN0cmluZyI6IHsidXJsIjogImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFl
by1vYmplY3Qtc3RyaW5nLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtb
NjYuMzQ2NTU2ODUyMTg1LCA2Ni42MjgzMDcxNDQwNjIxOSwgNjYuNzc1MTUxNDA1Mjc3MzYsIDY3
LjE5OTgyMzIzMTA1NjEzLCA2Ny41NzQ4NzIyODg5OTQ4OF0sIFs2Ny4zMDI1OTY1Mzk0MTcxOCwg
NjcuNzg3OTY4ODg4MjUzNjcsIDY3Ljk5MjU0MTAwNTUxOTcsIDY4LjE4Nzg5MzUyMjc1Mzg3LCA2
OC42NDI2NDI0NDgwNzU5Nl0sIFs2OC4wMjg4NTEyMzc1NzgzLCA2OC4zMjY3NjA2NjIzNDU3Niwg
NjguNTk4MjQzNTM2OTY0NzYsIDY4LjkzMDY1MDE5OTE3MDk2LCA2OS4zNTE2ODM2NDA0NTI5Ml0s
IFs2OC41NjczMTk4MTMyOTU5NCwgNjkuMzA2NTk0MzQyMTY5MjUsIDY5LjU4MzU3NzE2MzM1OTM0
LCA2OS44NDgwOTkxMzMzMzA1NSwgNzAuNDU0ODY3MjkzNDM5MzVdXX19fSwgImRvbS1xdWVyeSI6
IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5j
ZVRlc3RzL0Ryb21hZW8vZG9tLXF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3Vy
cmVudCI6IFtbMjA4LjMyMjk0MzY3MDUxMDA2LCAyMDkuNTk1ODM0MzIxODAzNDcsIDIwOS45NTY3
NzU5MDY0OTc1LCAyMTAuMzEwNjY4NDEyNTk3NzIsIDIxMC43NDM3NjI2Nzc3NjIxNl0sIFsyMTIu
MTQzODM1MTIzNjAxMywgMjEzLjI5Nzc1MzUwMTQ2MTY0LCAyMTMuNjI0MDAzODgzNjAzMSwgMjEz
Ljc4Nzk2NjcwNDgzMjEyLCAyMTQuMTQwODU3NzIxMjE3NzddLCBbMjEzLjcxNjM3MDYzMjYyODks
IDIxNS4wOTcwNTY4MTgzMjc2NywgMjE1LjM0NjMyNTA1OTE3ODkyLCAyMTUuNTEwODYxNDEyNDYw
MywgMjE1Ljc5Mzc0MDM1NTczMjMzXSwgWzE2OS41MTI2NTM5OTcwNDY0NywgMTcwLjcyMzY3NTc5
NzQ3MTEyLCAxNzAuOTczOTE1MjgwNjc2NDcsIDE3MS4yNTgwNzI4MjU0Mjc4LCAxNzEuMzU5MzY4
NjQ1NzY4MTRdXX19fSwgImpzbGliLWF0dHItcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xp
Yi1hdHRyLXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBb
WzQxNC42MzU2NzU0MjM4NDIxNCwgNDE2LjM0MDkyMzE3OTIyNDUsIDQxNy4wNzg1ODU2NTk0NjY4
NSwgNDE4LjEzNzQ3NDIxNDI4NjksIDQxOC4zNDI0NzU1MjI3ODY0XSwgWzQxNC45NDMzNzM2MTc3
OTI5MywgNDE3LjUxODA4MDI0MjYwNDY0LCA0MTguMjAwNDQ1MDQzODg4MSwgNDE4LjU5MTY5MDE3
OTk0MzYsIDQxOS4zMDE3NDYzMjA5MTM2XSwgWzM2NC4yNzQwMjc2MzI0MTY0NSwgMzY4Ljg3OTc5
MTA3MzE4MTM3LCAzNjkuMzUwMDA4OTI5NDk0MjcsIDM3MC4yMjczMjI3NjE5MDg4LCAzNzAuNjMy
OTQzMzQyMjQ0OF0sIFs0MDcuMTI3MDQ3NDcwNjEyLCA0MTMuNzkzNTc4MDU5MjA2OCwgNDE0LjI3
MDA3MDA5NDM0MjI2LCA0MTQuODE3MTg3NjY0Nzg4MSwgNDE1LjM2NDkyNjQ4MDUxMjVdXX19fSwg
ImpzbGliLXRyYXZlcnNlLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2Ut
cHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTkyLjQw
MjQwMjM5NjQ0NjgzLCAxOTIuOTM2NzM2ODQzNDk1NTQsIDE5My4yNTMxNTg4NzE2NDEwMywgMTkz
LjMyMzk5MjU5MjAyNzg4LCAyMDYuMjYyMzIyNTA5NTQ0NV0sIFsyMDEuMTM3MDQwNDQ5MDEyNSwg
MjAxLjQ3NDU3Mzk3NjQyNDcyLCAyMDEuNjQ1NjAxMTE0OTM5ODYsIDIwMS45MjQ2NjQzMjYzMTc4
LCAyMDIuMTY2MzUwMjYzMzk3NjJdLCBbMTg0LjIxMTIyNjQwOTc1ODYsIDE4NC43NjM2NTA5OTgw
Mjg3NywgMTg1LjAzMDE2NzA2MTQyODg3LCAxODUuMTk0MDAyMjkwMjYzNTcsIDE4NS40NTA3Mjg4
MzM4MTddLCBbMTkzLjI2NzkyODM3MjAwOTE4LCAxOTQuODEzMTkyOTY5Nzc4MzYsIDE5NC45MDcz
OTY1OTgzNzU1MywgMTk1LjA5NzQyMzc2NjEyNjQ3LCAxOTUuMzgyNDg5NjA3OTYxNjVdXX19fSwg
ImpzbGliLXRyYXZlcnNlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
YnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2UtanF1
ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjkuNzA2OTMxNTAx
MDIyMjU3LCAyOS43NDQ2NDE2NTUwNTI0NzYsIDI5Ljc3MzU5MDM0OTU4NzczNSwgMjkuNzgzMTA4
NDczNTg0MTUsIDI5LjgxMTI5NjEzNzcxNTY5N10sIFsyOS43MjY5MzAyODg2NTQzNSwgMjkuNzYw
NzQ1MzcwOTQ1MTczLCAyOS43Nzc3MjE5NTEyNTM2MjUsIDI5LjgwOTU4ODc2MDk4OTQ5NSwgMjku
ODM4OTI3NDY4NzE0NTc2XSwgWzI5LjU4ODMwMjE4NjY1Mjk3OCwgMjkuNjMzNDUzNDc3NTEzMTQ3
LCAyOS42NTc2NDc2ODk5NzIxMzcsIDI5LjY3Nzk4ODM5Nzc2NiwgMjkuNzA5Mzg3MzM3NzUzMzUy
XSwgWzI5LjU4Mzc5MzIwMTA5MzQsIDI5Ljc1MDQwMDQ5ODU1OTQ5MywgMjkuNzg1MzQ5Mzc3Mjkz
ODM3LCAyOS44MTI1MDkzMDcxNDQxMjYsIDI5Ljg2MjE5MTA2MTUyMTM3Nl1dfX19LCAianNsaWIt
c3R5bGUtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2Vy
L3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1zdHlsZS1wcm90b3R5cGUuaHRt
bCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxNTEuMzYxMjIyMTE2NjQ2OTks
IDE1Mi4yMjU3MjkwNDAzOTc4OCwgMTUyLjQ3NDg5MDUzNzE0OTk3LCAxNTIuNzk2Njk2MzMzNDQ4
MjcsIDE1My4yMjQ1ODI4MTI2NDc5Ml0sIFsxNTQuNTkyMjQ1MzQzMDY4MywgMTU1LjY5NTU4Njgw
NDE2NjM3LCAxNTYuMTYxMTYxNjE2OTY1LCAxNTYuNTA3MTUwNjY3MDIzNzgsIDE1Ni43ODA4MDc1
Mzk0NzU5NF0sIFsxNTQuNjY5ODkxNTczNDUsIDE1Ni4wMjc3ODgxNzA2NjkyOCwgMTU2LjMyNTU2
OTI1OTE3MjIzLCAxNTYuNzI3NjIyOTQ4MzMwMywgMTU2Ljg0NjE5MDUwODQyOTEyXSwgWzE1NC45
NjM5MTY3MDc4MzIxNywgMTU1LjU4MjY4MzU2NzExODY0LCAxNTUuODk3NzkxODcwMjU4NCwgMTU2
LjY3OTYxOTMxNjAxOTA2LCAxNTcuMDU0OTYyOTMwNjE3OTNdXX19fSwgImRyb21hZW8tY29yZS1l
dmFsIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLWNvcmUtZXZhbC5odG1sIiwgIm1ldHJpY3MiOiB7
IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzIzNi41MTQ0MjA5NDcxMjA5LCAyMzguMzI0NDAyMTExMTgz
NjIsIDIzOC41NzEzMjgzODQ1MDQwNiwgMjM4LjgxODY1NTA1MTUyNDUsIDIzOS4xMTA4NzUzMzE1
NjQ5OF0sIFsyMzIuNTQxODY2NjY2NjY2NjYsIDIzNS4zMDE2MTY2NDI4OTY0LCAyMzYuNzc2OTMw
MDY5MTY2MSwgMjM3LjQzMTI2NDcyODk4NjY2LCAyMzguOTAzMDA4OTE5MzM4XSwgWzIzNS41MjM5
MTA3MzMyNjI0NSwgMjM2LjYxODc4Nzg5OTMxOTA1LCAyMzcuMjI5MzgwNjAwNDMxNywgMjM3LjQz
MTI2NDcyODk4NjY2LCAyMzcuODU3ODIyNDEwMTQ4XSwgWzIzNS44NTUwMzcwODk1MjQwNSwgMjM3
LjM0OTAzMDI5ODQ4Mzg4LCAyMzcuNjY4OTIwODAxOTc2LCAyMzguMTE3MzcwNTk1MjU2MywgMjM4
LjQwODQ4ODA2MzY2MDQ5XV19fX0sICJkcm9tYWVvLW9iamVjdC1hcnJheSI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21h
ZW8vZHJvbWFlby1vYmplY3QtYXJyYXkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJy
ZW50IjogW1s0LjE2OTU4MzgxNzkyNTY1NCwgNC4xOTU5NTc0OTEzODcyMTM1LCA0LjIwMDMxNDc4
NzEzMjM5NDUsIDQuMjA3NjY2MDQzNTEzNzQ3LCA0LjIyNjUxOTM4MDU4MzI4XSwgWzQuMTY1OTQz
MTQ5NzUyOTUzLCA0LjE4MjQ1MzE2MjkyMTk3LCA0LjE5MDI2NzM4NzA3MDQ1OCwgNC4xOTM4MTEz
NDA0MjQwOTUsIDQuMTk5Mjg2NDM4MjQxOTU2XSwgWzQuMTk0NTM3MTg4ODIzNzY0LCA0LjE5NDkw
OTA4MDMxNDI2NywgNC4yMjE1NTA2NDYwNDg5NjksIDQuMjI1MTY2NDQzMDkxNTQ4LCA0LjIzNjc0
MDI4ODI0ODI5NjVdLCBbNC4xOTE1NTc5NTMyOTYyNDcsIDQuMjE5MDc2MDU4OTYwNTEwNSwgNC4y
MjI5NjQ1MzQ4NDc3MjMsIDQuMjI3MzgxNjM5MTk0NjAxLCA0LjIzMTExNTM3MzE1NDI1MTVdXX19
fSwgImRyb21hZW8tc3RyaW5nLWJhc2U2NCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1zdHJpbmct
YmFzZTY0Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTI5Ny41MzA2
OTcwMDI1MjgsIDEzMDAuODYwNDMxNjU0Njc2MiwgMTMwNS4yNzc0NTk3NDk1NTI3LCAxMzA5Ljkz
MDk4NTQxNDQ0MzMsIDEzMTAuNDY0OTcxNTUwNDk4XSwgWzEyOTcuNDQ4ODM1OTUwMTg5NSwgMTMw
MC44NjA0MzE2NTQ2NzYyLCAxMzA0LjU2NTY0NTcxMDE5MTYsIDEzMDguNDk0NjQ2NjgwOTQyMiwg
MTMxMC44MTgyOTUwNzAyOTc0XSwgWzEyOTguODE5NjA3MTM2NDIxLCAxMzAyLjc2MDUwMjY5Mjk5
ODIsIDEzMDUuNzkwNTE4NzgzNTQyLCAxMzEwLjE5MTU2ODgzNjcxMjgsIDEzMTEuNTE5Mzc0MzMz
NDUxOV0sIFsxMjk2Ljg1Njk2MjQ4MTk2MjcsIDEyOTkuODg4NTY5Mzc0NTUwNiwgMTMwMi45NzIx
ODA0OTY0NTU0LCAxMzA2LjE4MDUyMDg3MDQ5NiwgMTMwOS44MTc1OTk5OTk5OTk5XV19fX0sICJk
b20tYXR0ciI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9Q
ZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZG9tLWF0dHIuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5z
IjogeyJjdXJyZW50IjogW1sxMjEuMjE4MzA0MTc5MDIwMSwgMTIxLjgyMzU1NjUxMjg1MTA3LCAx
MjQuMTk5MjgwNjIyNjYzNDcsIDEyNC4yNjk2Nzg3OTg5MDA3MywgMTI0LjM2NjQ0MjkyNTc0NjVd
LCBbMTE5LjE2MDQxMDU2MzUyNTgsIDExOS43OTM3NjUxMzA1OTQzOCwgMTE5Ljk5NTA2MjAzMDM2
NTE1LCAxMjAuMDU1MTk5NzYwNTUwMjgsIDEyMC41NTY1ODgyMzE1MDg4OF0sIFsxMjQuMTUwMDQ1
Njg3MzAxMTYsIDEyNC42OTc4Mzc2Njc5ODk5NywgMTI0LjkxNzQyNTkwMzA3MDQyLCAxMjUuMDc3
NTg3NjgwNzQzNDIsIDEyNS4yMDg2MDgwNTg3Mjc1OF0sIFsxMjQuNDg4OTY0MzM5ODQwMTcsIDEy
NS4yODY0MDQwMDg0NTE1NCwgMTI1LjQ5NDM2NjQ5MTE0MzM1LCAxMjUuNTQzNjI4ODc3NzU1MDMs
IDEyNS42Mzc5MzIwOTAxMDEyMl1dfX19LCAianNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJ1cmwi
OiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMv
RHJvbWFlby9qc2xpYi1ldmVudC1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjog
eyJjdXJyZW50IjogW1szODEuNzAyMDExMzQ4Njg2LCAzODkuMzMyNDMwOTcyMTM5MSwgMzkwLjA3
NzU1MjkyMDg4MzUzLCAzOTAuMTkzMjY4MTc3NTQxMzcsIDM5MS4xNzYwMDIzMzIzMzE5Nl0sIFs0
MjIuNTY0MzY4NjQ3NjM1OCwgNDI4Ljg5OTg3NDYzOTU5NiwgNDI5LjI2MzI1NjY4NzAwMTQ0LCA0
MjkuOTkyOTU1NTkxODY3OCwgNDMwLjMzNDk0NDM5MDkyMjRdLCBbMzgyLjI0OTE4MDMyNzg2ODgs
IDM4Ny45ODg0MTk2Nzk4NSwgMzg4LjIzNzY2NDEzNTgwMDA2LCAzODguNjg0OTMwMDE5OTUzNCwg
Mzg5LjA2ODI2MzkxODg5NDQ0XSwgWzQwNC43NzY4OTg5ODEwNjQ1NiwgNDA5LjE2ODcwNTYzNzQ3
NzEsIDQwOS41NzQ3MjAzNDcwMzk2NiwgNDEwLjA0NTkzNzM3NjgxNzMsIDQxMC41Mjc4NzA0Njgz
MTE5Nl1dfX19LCAianNsaWItZXZlbnQtanF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1ldmVu
dC1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1swLjAxMzkz
NzUxMzU3MTAzMzY0MywgMC4xMDMxNTI5Mzk4OTIxMTY4NCwgMC4xMDQzMzc1OTgwNzIxMDkzNSwg
MC4xMDQ0OTA1MjM0MTc5NTIwNiwgMC4xMDc5NTM4MDA1MTE0NTY2N10sIFswLjAxNDE0MjkxMDc3
NjMwMzIzOSwgMC4xMDQyODA4MzQzMDQ5Mzc5NSwgMC4xMDU1Njk1NjY2NzU3MTI0NSwgMC4xMDY0
MzUyNTk0ODk4ODk4LCAwLjEwOTA0NjgzMDI2NTYwODYyXSwgWzAuMDE1NTM0OTgzNTM3NTA1ODQs
IDAuMTA4MDg3NjU3MzY0OTIwOTIsIDAuMTA5NTkyMjA1MjUxODI0NiwgMC4xMTI2MTY5MjIyMTIy
NzQ4OSwgMC4xMTM5Mzg2NzEzMzkyNDQ4Ml0sIFswLjAxNTc4Njg1MjYxOTc1MzkyNiwgMC4xMDg4
NDA2MjExODI1MDkxNywgMC4xMDg4NzYzNTMxMTY0MDkwNCwgMC4xMTE5MjM1MzAyMjE2MDMwNiwg
MC4xMTUyOTE1MDAyMzgwNzAwN11dfX19LCAianNsaWItYXR0ci1qcXVlcnkiOiB7InVybCI6ICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9t
YWVvL2pzbGliLWF0dHItanF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVu
dCI6IFtbMjk4LjMwMDQyODE3NDk5MjY1LCAyOTkuNjYzNDkzMTU2MzcwNjMsIDMwMC4zODM2MDY4
NjY2Njc4MywgMzAxLjI1NzQwNDc3NDU1OTMsIDMwMi42MDE4NzQ0OTkyMTI5NV0sIFszMDQuMzg4
MTkxMDY4ODAzMywgMzA3LjE5MDcxNzk2MzE3NTcsIDMwOC4xNTk4Mzc1NTMzOTU0LCAzMDguODYz
MTMwMjk2OTcsIDMwOS43MDIwNDg0OTcwNTM0NV0sIFszMDMuNjMxODUzMjI3NDM2NDcsIDMwNi4y
NjQ3MzY1ODE5NzEzNiwgMzA3LjE2MTI2NzQ2Mzg2MTYzLCAzMDguMjc4MDMxMDcwMTQ4LCAzMDku
MjA1ODgyMTk2ODgwNl0sIFszMTUuODg0NjAwODMzOTEzMDUsIDMxOC4xOTUyMjkwNTYwNzMwNiwg
MzE4Ljg0NjU1NDg0ODY2MjksIDMxOS42MTE1Mjg5MjUzMjU3LCAzMjAuOTE2OTMyMDE0MjE1M11d
fX19fX19LCAiYnVpbGRUaW1lIjogIjIwMTMtMDQtMTdUMjA6MDE6MDguNjY0NDU4IiwgImRlc2Ny
aXB0aW9uIjogIk5vIHBhdGNoIiwgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAi
OiAiMjAxMy0wNC0xNlQxMDowNToyOVoiLCAicmV2aXNpb24iOiAiMTQ4NTA4In19fSwgeyJ0ZXN0
cyI6IHsiRHJvbWFlbyI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90
cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8iLCAidGVzdHMiOiB7ImpzbGliLW1vZGlmeS1w
cm90b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
UGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLW1vZGlmeS1wcm90b3R5cGUuaHRtbCIsICJt
ZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxNTAuMDcyNDA3MjEwNjM3MSwgMTUxLjIx
MDI1MTQwNjAxMzAxLCAxNTEuNjUwNDU0NTAyNzg2NTIsIDE1Mi4zMDE4NTU1NDgzMzA4NSwgMTUy
LjY2MTg3Mjg0ODk3MzIyXSwgWzE1MS4wMjMyNzQ3NTcwMzA5OCwgMTUyLjIzMDA5OTQ5NjEyNDg0
LCAxNTIuNzU2MDI0NjE2OTQxNSwgMTUzLjIzOTY1NDk1NTI1MzU0LCAxNTQuMDY4NDgwMDAwOTk4
MjhdLCBbMTUxLjMwODAzMjExNDU2MDkyLCAxNTIuNjMxMzE5MDQ0OTYwMjYsIDE1My4zMDczNTAz
Nzk3MjczNSwgMTUzLjU1MzUxNDE4NDY1MDIzLCAxNTQuMzM5NzY1MDMzMzk4OV0sIFsxNDUuNDkw
ODI0NDQ0NTg0NzIsIDE0Ni43MTY0OTAwNzA5NjEwNCwgMTQ3LjMyMDIxMDMzNjgwNTczLCAxNDcu
NzY0NjYzODE2NjkyNTIsIDE0OC4zNjQxNDQ0Mzg1Njg3XV19fX0sICJqc2xpYi1zdHlsZS1wcm90
b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVy
Zm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLXN0eWxlLXByb3RvdHlwZS5odG1sIiwgIm1ldHJp
Y3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE0OS4wNzU3NjEwMTEwMzE1LCAxNDkuNjkxMDEy
MDYxNzA0NiwgMTUwLjA5NDk2NDE1MjQwMzcyLCAxNTAuNDQ1OTY4NTYwNDE5MTIsIDE1MC44NDEy
NjA2NjkxNzk0XSwgWzE0OC45NjY1MjgzNzkwNzgwMywgMTUwLjcyODEwNDA0OTc2NjQ3LCAxNTEu
MTY0NDE1Njg0Nzk2MjcsIDE1MS4zNDc3OTkzMjkxNjU2NywgMTUxLjc2NTM0MzIwMjc2MDI1XSwg
WzE1My41MzgyMTY2ODM5MzY1OCwgMTU0LjM3NTIyMTE5OTI2NDIyLCAxNTUuMzE3NTEyMDUwMTM4
MjgsIDE1NS41ODI0OTI3NTc5NTY1NCwgMTU1Ljg1OTQ4NjQzNTU2NDZdLCBbMTQ5LjM5NjYxNTA0
NzQ1MDA3LCAxNTAuMTA2MDkwOTY4OTc4NTgsIDE1MC43ODc4MzEyMzg0NTk3LCAxNTEuMDQ4MzUy
MjM2MzExOSwgMTUxLjQwMTMwODIzMzIxMDhdXX19fSwgImRvbS1tb2RpZnkiOiB7InVybCI6ICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9t
YWVvL2RvbS1tb2RpZnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s1
NC42MDUxMjcxNzcxNjA1NTQsIDU1LjEyNjI5NzU5Mzc5MDcyNCwgNTUuOTg5ODQ4MTk4OTE1OCwg
NTcuMzI5MTAyMjY4NzUzNDUsIDU3Ljk5MDA5MzA5NDIyODU0XSwgWzU1LjA2MTUyOTE5MjM3NDU2
NCwgNTYuMTI4Mjk2Nzk5NTU1NzU2LCA1Ni40Njg0MTI5MzExODE1NywgNTcuNjYwODE3NjA4ODMx
MjE2LCA1OC4yMzQxNTExMzE3NTMzNjRdLCBbNTQuMTUyNTYzNjEzNjY1MTE2LCA1NS4xMjY3NTk0
Mzk2MDYwNzYsIDU1Ljg2Mjg0OTExMzg4OTkxLCA1Ni44MDc5MzQ2Mzg5NTM3MSwgNTcuODEzMzIz
NTIwMjQyNTM0XSwgWzU0LjY4MDQ0ODEwNzQ2Mzk2LCA1NS44OTI2MjgxMjQ4NzQ4OSwgNTYuMjc0
NzkzMzcxOTIxMTEsIDU3LjQ3MDM5ODA3NzI3MDYzLCA1Ny45NDMzNjY0NzE2NDk4NDZdXX19fSwg
ImpzbGliLXN0eWxlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtanF1ZXJ5Lmh0
bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMS4wNjQ3MTA2MTI0MjgwMjYs
IDEuMDY3NDY0MTA1OTk1OTc5MywgMS4wNzA1OTQzODc2ODM1MjEzLCAxLjA3MTkxNjY1Mjc2Njc4
OTYsIDEuMDczMTk3NjM3MzA3ODM3MV0sIFsxLjA3NTU5NTI1MDQ4NzQzNCwgMS4wNzY0MTQ0NTEw
NjgwODYyLCAxLjA3OTY1NjE3ODA4MjkwNiwgMS4wODA2ODk5NTgyOTQ0NTk0LCAxLjA4MjI3Nzk2
NDYwMjc4NV0sIFsxLjA3Mzk4NDI4OTc5MzE1MiwgMS4wNzcwODU4OTcxMDc3MDA0LCAxLjA3OTMw
MDM0MTUzMTU1MDUsIDEuMDgwODMwMzE2MDkzOTgzLCAxLjA4MzU4NDY4NDE5NjI3OF0sIFsxLjA4
MDQ1NDQ5NTExODM3NDMsIDEuMDg0MjM1Mjg4Mzc2NTMzNCwgMS4wODY2ODQwNTU5NDI5OTM2LCAx
LjA5MDI1NTA3ODEyNzc2NTEsIDEuMDkyMzE3MjE4Njg3MzkzXV19fX0sICJkcm9tYWVvLW9iamVj
dC1yZWdleHAiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
UGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tb2JqZWN0LXJlZ2V4cC5odG1sIiwgIm1l
dHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzQuNzI0MzkwMTI2NDc5MDg0LCA0LjgwNTMy
MzI0MzgyMTA5MywgNC44MjI0NTU4NjI2NzUzNDYsIDQuODU3MDQ5ODU5NDQ1MjA2NSwgNC44Njk1
NDc4MTE3NDMwMTddLCBbNS4wMDgyMTQ0OTIwNDc2NjEsIDUuMDIyOTg4OTQxNTgyNzIsIDUuMDI5
MTg1MzQ0MTc5NTk2LCA1LjAzMTEyNzAxNjUyMzI1NiwgNS4wMzMyNjQ2NjA1MTMwNDldLCBbNS4w
MTQ0ODAwNDg2NDc0ODg1LCA1LjAyODQyMjg2NzQwNTI5NCwgNS4wMzEzMDA2NjI1MTczNzE1LCA1
LjAzOTE2Mzk1MTU3ODQ4NSwgNS4wNDA3MDkxODcxNDMxNjVdLCBbNC45OTc3MDQ4MTY2MDYxMDYs
IDUuMDMzMjM4NzY4MTAzMTM5LCA1LjAzNjkzMzI1NjQyOTg3NSwgNS4wNDI4NTU3Mzk0ODE1OTIs
IDUuMDQ1OTkzNDQxNDkyOTUxXV19fX0sICJqc2xpYi1ldmVudC1qcXVlcnkiOiB7InVybCI6ICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9t
YWVvL2pzbGliLWV2ZW50LWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJl
bnQiOiBbWzAuMDE1NDQwNzEzMTE2MzA0MzEsIDAuMTA4NDA0MzEwMDI3NzQwMTYsIDAuMTA5MzI4
Nzg0NzQ4NjQyMSwgMC4xMTAzNzkyMjQ0MzA1OTYwOCwgMC4xMTYwOTQ2MDc5Mjk5ODM1NF0sIFsw
LjAxMzc4ODk1OTc2NDY3MjQ3MSwgMC4xMDUwNDEyMjA0OTk1MDAwMywgMC4xMDU2NDEyOTAwNjkz
MzMyOSwgMC4xMDU5MjE2MDk1NDcxODc1NiwgMC4xMDg3MDg5MzY4OTc2NjQwM10sIFswLjAxNTAz
MTUyODAwMTU3NDk0MiwgMC4xMDg2MjYwMzE3ODIxODUxOSwgMC4xMDg5NjkzOTY4OTcxNTQ3MSwg
MC4xMDk1NjY4ODA1MjI4MTY0OSwgMC4xMTQwMDE0OTIxNzgwNjIwN10sIFswLjAxNjI0NDYxMjc5
MTk5NjkxNSwgMC4xMTI0MDEwMTUxMjg3NzYyNywgMC4xMTI3MTg0NDAwMTk2MTM0NywgMC4xMTI4
NDYwMjYyNzM4NzI0MSwgMC4xMTg2NTczNTkyOTU2NzIyN11dfX19LCAiZHJvbWFlby1vYmplY3Qt
c3RyaW5nIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1Bl
cmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9iamVjdC1zdHJpbmcuaHRtbCIsICJtZXRy
aWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s3MC40NzEzOTUxNTgxMDQyMywgNzAuNjQ0NDA2
NzgyMjY5MTYsIDcxLjAwNTY1MTQ4MDkwMTQ2LCA3MS4yOTYxNDc2MDUxMTE3NiwgNzEuNzA4NzYz
OTM3MDg2NTZdLCBbNjguMjk2NjgxMDY5OTAwMzksIDY4LjU1NjIwNTk3NzEzODk3LCA2OC44NzM2
MTEzMzg4NjA5NywgNjkuMjEwNjQ4NTU4NDkxODcsIDY5LjY3NzM1MjE2MTcxODAyXSwgWzY2LjI2
MDg2NDEzNDA0MjI1LCA2Ni41NDM4NTU5ODM0MjA0NCwgNjYuNzk1MzAxNTI3OTc1ODcsIDY3LjAy
NDU1MTg1NDUyMTA4LCA2Ny40MTU1Mzc3NTkyOTk1NF0sIFs2Ny4xMzg3MDU5NDkyOTU0LCA2Ny40
NzQ2NDgxOTg0NTA1MSwgNjcuNzk1NjY2NjgwODI3NDEsIDY4LjA2NDkzMDc3NzU2NDY0LCA2OC40
Njc5NDY0NDI0OTMyN11dfX19LCAiZG9tLXF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tcXVlcnku
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syMTUuODUwMzg2Nzg2MzM0
NzUsIDIxNy41NDE4NzkzOTY0OTcxLCAyMTkuMDQ2MTA2MTU2NDM4MSwgMjE5LjY3NzExNTMyMjQ3
MDIzLCAyMTkuODcyOTk0OTM3ODA1OTRdLCBbMTUyLjM3MTA1NTM1NzAzMTc0LCAxNTMuMzM2MTM3
MzI3OTE1NzYsIDE1My40MDU3NTg1NzUzMDYxMiwgMTUzLjY0MjE3NzgwMjQ2NiwgMTUzLjgxMjI1
Mzc2Mzc5Mzg4XSwgWzIyMS43NTI0OTUyOTgzNjc2OCwgMjIzLjgxNzk5MzMyNDA0NjQsIDIyNC4x
MjgxODE1ODIzNjYyLCAyMjQuMTUzMjAwMTk0OTUyNzUsIDIyNC40MjMzNDMyNjk1MzM0XSwgWzIw
My4yMTU1OTI4MzI4NTAzMiwgMjA0LjQyNTY0NjUzMzY2NywgMjA0LjY4OTk3Nzc1MjcyODIsIDIw
NC43MjI5MzY0MDAzMzAzNSwgMjA1LjA0OTQwMTk2OTgxNjE2XV19fX0sICJqc2xpYi1hdHRyLXBy
b3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9Q
ZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItYXR0ci1wcm90b3R5cGUuaHRtbCIsICJtZXRy
aWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0MDUuMzIzMzgxNzAzNDY0MjQsIDQwOC40NjYw
Nzg3MTk2NTgyLCA0MDkuMjAzMjI4ODM3MDk3LCA0MDkuNjY5NTQ5NDQ1NTM2LCA0MTAuMTkyOTg0
MTI5MjE1OF0sIFszODguMjcyNjQ4ODEyMDAzNzUsIDM5MS40NzY4MjM2NjE2NjY5NywgMzkyLjMx
Njc2NDg2NTUzMTcsIDM5Mi41ODQ1NjI2NTA3ODYwNCwgMzkzLjMxNzg2NTE0Njc3Mzk1XSwgWzM3
Ni4wODAzMDgxMTg4MzE4NSwgMzc4LjU5MDQwMzgxODI3OTA3LCAzNzkuMTAxMDM3OTM1NTk0OTUs
IDM3OS4zNDgyNzg2MjM4OTc0NCwgMzgwLjA5NzUzODEyMjg4NzZdLCBbMzk5LjI3MDY0MDMwMTQ3
NTg1LCA0MDIuNTQwOTA1OTY4ODQyNSwgNDAyLjgxODMxNzA5NzM2NDgsIDQwMy4zNDIzOTE1NzU4
MzcsIDQwMy43NjU4MTA2ODk1MTA1XV19fX0sICJqc2xpYi10cmF2ZXJzZS1wcm90b3R5cGUiOiB7
InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VU
ZXN0cy9Ecm9tYWVvL2pzbGliLXRyYXZlcnNlLXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7
IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE5OC44Nzc5NTA0MzI3MzQwNSwgMTk5LjY1Mzk5MDYyNTA1
NjY4LCAxOTkuNzgyMjA2ODc4NDc2NjcsIDE5OS44OTU4NDA1OTU3MjYzMywgMjAwLjE3MTE2NTY0
ODc2NzhdLCBbMTk0LjA4OTI5NTE5NDY2MDcsIDE5NC41Mjk4NTAyODQ2Mzg0MywgMTk0Ljk4OTEz
NDM1MDE4NzMzLCAxOTUuMTYwOTk5MzA5ODk2MzcsIDE5NS40MTY3MDAzMTMzMjUxMl0sIFsxOTku
MDk1Mjk4NjE1NzQ1MzIsIDE5OS40MTU2MTQ2MTM1MDIyNywgMTk5LjY4NTE4NjIzODk4NTkyLCAx
OTkuODUzNjUzOTcyMzExMzIsIDIwMC4wNzg4MDUyMzMxMDM1XSwgWzE4NC4zODc4ODE4NTQ0MzQ4
LCAxODQuOTY3NzUxNTAwMTQ2MiwgMTg1LjE1NTk5NDU5NTE4MDc0LCAxODUuMzM2MDMyNDQ1ODI0
MiwgMTg1LjY4NjM4MTU0Mjc4MDE3XV19fX0sICJqc2xpYi10cmF2ZXJzZS1qcXVlcnkiOiB7InVy
bCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0
cy9Ecm9tYWVvL2pzbGliLXRyYXZlcnNlLWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMi
OiB7ImN1cnJlbnQiOiBbWzI5LjgwMDM0MTgyOTQ2ODIsIDI5Ljg2MTc3ODAxMzE3OTQyLCAyOS44
ODAzNDQxODgxNzY5MzgsIDI5LjkwMjg2MjI2MzExNjIzNywgMjkuOTMzMjM2MTg0NjY1MjNdLCBb
MjkuNzQ2OTczMjUyMjgxMTM3LCAyOS44MjQ2NzI1OTA0NDQ0NywgMjkuODUxMDEwNzU5MDc2OTc0
LCAyOS44ODYxNzAxNzg2NDUxODQsIDI5LjkyMjExNDA5MTA1MTQzN10sIFsyOC41NzcyNzYwNDg1
NjM3MTgsIDI4LjYzNDM0OTM5Mjg3ODE1LCAyOC42NzMyODgwOTE2OTUyODcsIDI4LjY4Nzg2MjY4
MTA1MDcwNiwgMjguNzE1MTAwNTc0NTkwMTkyXSwgWzI5LjQyMDc0NDcyODY1MTYyLCAyOS41NjA4
MDQ5NzQ0ODQzNSwgMjkuNTY5MjAyNTA0NTAwOTI1LCAyOS41ODUwMTEwMjY2MTU2NCwgMjkuNjEy
MDA3MzI1OTk2NTE1XV19fX0sICJkcm9tYWVvLTNkLWN1YmUiOiB7InVybCI6ICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21h
ZW8tM2QtY3ViZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzM3NTgu
MCwgMzgxOC45OTk5OTk5OTk5OTk1LCAzODMwLjk5OTk5OTk5OTk5OTUsIDM4MzYuMCwgMzg0MC45
OTk5OTk5OTk5OTk1XSwgWzM3NzMuMDAwMDAwMDAwMDAwNSwgMzg0NS45OTk5OTk5OTk5OTk1LCAz
ODU0LjAsIDM4NTQuMCwgMzg2MC4wXSwgWzM3NTQuMCwgMzgzMy4wLCAzODM1LjAsIDM4MzYuMCwg
Mzg0MC4wXSwgWzM3NzAuMDAwMDAwMDAwMDAwNSwgMzg0My45OTk5OTk5OTk5OTk1LCAzODQ1LjAs
IDM4NTAuMCwgMzg1NS4wXV19fX0sICJkcm9tYWVvLWNvcmUtZXZhbCI6IHsidXJsIjogImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8v
ZHJvbWFlby1jb3JlLWV2YWwuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50Ijog
W1syMzUuNzA2NTkwNDAwNDI0MzUsIDIzNy4yMzUwODIwMDE2NDg2LCAyMzguMTgzNjI3MTAzMDM5
NywgMjM4LjM4NjQxMTg4OTU5NjYyLCAyMzguNTE4NTE4NTE4NTE4NTNdLCBbMjM2LjQyNDExNDIy
NTI3NzYzLCAyMzcuNjk4NTgzMzA5Mzc0NTMsIDIzOC40NDY1NTYwOTk4NjQyNywgMjM4LjQ2ODMx
NjY3NDcxNjQyLCAyMzguNjcxNTg2NzE1ODY3MTZdLCBbMjM2LjY4MzY0NDk0MjI5NTM2LCAyMzcu
ODE0Mjg1NzE0Mjg1NywgMjM4Ljg4MTA2MDQ2NTQzMDIsIDIzOS4zNTM5MDI5NTM1ODY1LCAyMzku
NDY3NDY0NDg4NDMwOTVdLCBbMjM0LjczMTA5NjkxMTYwODEsIDIzNi41NTM3MjQxMzQ2NDAzNiwg
MjM3LjY4MzEyMTAxOTEwODI2LCAyMzcuNzA1MDM5Nzg3Nzk4NDMsIDIzNy43NDg4MDc2MzExNjA2
XV19fX0sICJkcm9tYWVvLW9iamVjdC1hcnJheSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1vYmpl
Y3QtYXJyYXkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0LjE3NzAz
MTQ4NDI4OTE4NiwgNC4xODQ3MDMwNjU0NDI5ODYsIDQuMTg0NzI0NTU5NDQ1NzA1LCA0LjE5NTU0
MDExNjA1NjY4MiwgNC4yMTc1NjcyOTA1ODE1OTVdLCBbNC4xNjI0NjkyNTY1MTI5Mzk1LCA0LjE3
NjMyMTk4OTQxOTM4MSwgNC4xOTczODY0Njk2MTYzMDcsIDQuMTk3NjkzMDk4Mjc2OTA5LCA0LjIw
NTAzMDIxNTI4MzkwNl0sIFs0LjIwMjYyNzg4NDQyMzMzLCA0LjIwOTc4MzQzMzkyODc1OSwgNC4y
MTMzNzI2Njc3OTM1NDU1LCA0LjIyMDUwNzg1NTgwOTQ4NCwgNC4yMjQzNTMyNzY1ODIyMTddLCBb
NC4xODUzMDMxODc1NTYyMzMsIDQuMTkxNjUzMTMxNTUxMDMyLCA0LjE5OTAyMzIzNjIyNDk0NCwg
NC4yMDI2MTU1MzQ5MDk1NjIsIDQuMjEzMjU1ODQ4ODY1NjI0XV19fX0sICJkcm9tYWVvLXN0cmlu
Zy1iYXNlNjQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
UGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tc3RyaW5nLWJhc2U2NC5odG1sIiwgIm1l
dHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEyOTguODk1NDA5NTQwOTU0LCAxMzAzLjg5
NDQ0NDQ0NDQ0NDYsIDEzMDkuMzcwMTkyMzA3NjkyNCwgMTMxMy43MjI5ODk3MjcyNDA1LCAxMzE1
LjU4OTUyNTgzMTU2NF0sIFsxMzAyLjE3NzM5MDM2NjY0MjgsIDEzMDYuNjYzODUwNjI1NDUyNCwg
MTMwOC42MzI2NDk0MjAxNjA1LCAxMzEyLjQwMTYyODc4MDg1MTMsIDEzMTQuNTk5MDQyMzgzNDAx
Ml0sIFsxMzAyLjc5MzgxNjI4NjE3NjUsIDEzMDUuMTY3NzQxOTM1NDgzNywgMTMwOC4zMTU3NzA2
NzMzMzQzLCAxMzE0LjM1MjA2NTIzNjY2LCAxMzE1LjQ4MDM2Njg3NDU0OTldLCBbMTI5OS44ODMz
MDYzMjA5MDc2LCAxMzAzLjY2MDAyNTEzMDEzODQsIDEzMDcuMjcxMDM4MDU2MTAxNiwgMTMxMS43
OTMxNzY5NzIyODEzLCAxMzEyLjc0OTk1NTYzNDQyNzhdXX19fSwgImRvbS1hdHRyIjogeyJ1cmwi
OiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMv
RHJvbWFlby9kb20tYXR0ci5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBb
WzEyNC45MjY2ODA4ODg2MDU2NywgMTI1LjY0MDY2NTIzODAxMjU1LCAxMjUuODgxMTU0NjI4OTE3
MDYsIDEyNS45OTExNTM4NTE4Nzc3NywgMTI2LjA2NDU4MjYwODgyODM2XSwgWzEyMy41OTA4MDM5
NTYxMDgwMiwgMTI0LjM2MjcwOTAzMDAxMDU1LCAxMjQuNDg3MDYxNTMyNTY3NCwgMTI0LjU1MTIz
NjQ2ODY5ODUsIDEyNC42MjE0NDY4NDcwMzc0Nl0sIFsxMjUuMTkxNjA5NjgxOTYxMTcsIDEyNS42
NjMyMzM1Njk5MTgyNiwgMTI1Ljg5NTc2MDQwNzAzNTY3LCAxMjUuOTIxNTc5NjEzOTAzOTcsIDEy
Ni4xMDg2NTUxMDcyMzIyMV0sIFsxMjQuMjA1NDA1OTMyOTA0NjMsIDEyNC45MTY1MzIzODcxNDk2
MywgMTI1LjA1NDc3MzA5NTM2NjI0LCAxMjUuMTg1MDE3ODgzNTc1MzgsIDEyNS4zMjc4OTU3OTAx
ODQ5OF1dfX19LCAianNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1l
dmVudC1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0
MjYuNzQ4ODAxMDU4Mzc2MDUsIDQzMS4wNzAwODc0MjUxMjk5LCA0MzIuODgxNDYwMTM1OTg0NCwg
NDMzLjE4Nzg4MDE5OTMxMjgsIDQzMy4yMzcyNjAxMjY3NjM4XSwgWzM2NC4zNjM1MjY2NTY2MTAx
MywgMzY4Ljc2ODM2NjQ1NTMxMDM0LCAzNjkuMzQyMTAzNDI5NTYzMTcsIDM2OS42NzY3MzY5ODM1
Nzk3LCAzNzAuMTgwOTEwMTE2OTEwODddLCBbMzkzLjcwMzMxMzAzNjU1NzUsIDM5Ny44MDM5MDkw
MTQwMzY2LCAzOTguMjY0ODYwODA3MzU2OTcsIDM5OC4yOTQ2NzgxOTUzMjMyLCAzOTkuMjE2Njkw
NTAyNTAxMl0sIFs0MDIuNDY2Mjc1NjM2MDI2NzUsIDQwNy43MTA4NDM0MTEzNzYwNiwgNDA4LjEy
OTM2NDExMDQ1OSwgNDA4LjIxMjA0MzA0NzEwODcsIDQwOC43NDkwNjgxNTg4MzQwNl1dfX19LCAi
ZG9tLXRyYXZlcnNlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3Ry
dW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tdHJhdmVyc2UuaHRtbCIsICJtZXRyaWNz
IjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxODQuNzkxNDE4NzcxOTY2MTYsIDE4NS4xMjM0NjI1
MzkxNjUxLCAxODUuOTk2NTU1MzE0NDYzNjUsIDE4Ni4xMTAwNDUzMTgyOTMwNiwgMTg2LjMxOTI5
NDQ5NTIwNDhdLCBbMTgwLjEzODc2OTIyMzIwNzMzLCAxODAuNTc5MjA0NzE1OTkzODgsIDE4MS40
MzUyMDc3MDg4MjA3NywgMTgxLjg1NTAwNjQ5NzYwNDI4LCAxODIuNDgwMDMxOTI3MTQzMzNdLCBb
MTc4Ljk3NTQzOTEzMDYzNjMyLCAxNzkuNzk1MDM0NTIwMDAxNTQsIDE3OS44NjgyNjM2NjM4MTkz
NiwgMTgwLjYwMzE3NDAzOTcwMzM2LCAxODEuMjEzNTk1Mjg2MjAxNzhdLCBbMTgyLjg4MzQzMzcw
MDg5OTY3LCAxODMuMDk1MTY1NjQxMzc4MywgMTg0LjA0MTk0MjY0MTYwMzEzLCAxODQuMTkxMTU2
MzUyOTIzNDksIDE4NC40ODk1NjI1NzE5ODg2XV19fX0sICJqc2xpYi1hdHRyLWpxdWVyeSI6IHsi
dXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRl
c3RzL0Ryb21hZW8vanNsaWItYXR0ci1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjog
eyJjdXJyZW50IjogW1syOTMuNTg4NDA5NDQ5ODY3MzYsIDI5Ni4wMTcwODg4MDAyMzgzNSwgMjk3
LjA0OTc4MDM4NjkwMDg2LCAyOTcuODI3NzA3ODE5ODMxNCwgMjk4Ljg2MjYwOTkzODEwNTU1XSwg
WzMwOC4yNDM3MDAzOTYzNzg0LCAzMTAuODE4MzE2MTEyNjE0OCwgMzExLjMwNzkyMjA3MDc4OTgs
IDMxMi40OTY2ODI3MDUxOTcxNCwgMzEzLjg4NDEzMjMxMTA1MTFdLCBbMzE5LjMxMDQ3MDc1NTg1
MDYsIDMyMC45MjY2OTk0Mzg2NTc4NiwgMzIxLjg3ODI1NjMyNzExOSwgMzIyLjM1NTc2MTIwODIw
Nzg3LCAzMjQuMDk1Mjc1MTQ1NjQyNzRdLCBbMjg5LjQzMzgxODM4NDMwNzYsIDI5Mi41ODQ4Nzg1
MjU2MTk1LCAyOTMuMzk3OTk2NjU4MTIyLCAyOTQuMTM1OTEyNjk3MjY4MSwgMjk0LjkwNzk1ODU5
MDE0MzNdXX19fX19fSwgImRlc2NyaXB0aW9uIjogIk5vIHBhdGNoIiwgImJ1aWxkVGltZSI6ICIy
MDEzLTA0LTE3VDIwOjAxOjA4LjY2NDQ1OCIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGlt
ZXN0YW1wIjogIjIwMTMtMDQtMTZUMTA6MDU6MjlaIiwgInJldmlzaW9uIjogIjE0ODUwOCJ9fX0s
IHsidGVzdHMiOiB7IkRyb21hZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jy
b3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjogeyJqc2xpYi1t
b2RpZnktcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2Vy
L3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlLmh0
bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTUyLjIzODAwNTU5NTQyNDgs
IDE1My45NzYzMDQxNzY4NDA3MywgMTU0LjU0NDI5Nzg1Mzk0NjUyLCAxNTQuOTg0MDcyNzk2NjY2
NDUsIDE1NS41NDM3MTE2MDM2NDcyN10sIFsxNTEuOTAzMDA0OTEyMjY1MSwgMTUyLjg2ODQ0ODMz
MzA5Njc1LCAxNTMuMzA4MTc4OTQ0ODcyNTcsIDE1My42NTc0NTYyMjc2MzE2LCAxNTQuMjM4OTQy
MDYxNDY5MTVdLCBbMTQ2LjM5OTk2NDI0ODA1MTk2LCAxNDcuMzIwNDg1MjQzNDgyLCAxNDcuNjc0
MjI5MjgxMzE4NDUsIDE0OC4yNjYzOTA4NjY1ODkwMywgMTQ4Ljg2MDA3MzA4NzY1MDNdLCBbMTQ3
LjU3ODUyNzkyNjk4NDU1LCAxNDkuMTYzNTY0NDc1MTk1NzgsIDE0OS4yNjI0NjUwMzM3MzA2Miwg
MTUwLjA5MjgwMjI4NTE5MjM2LCAxNTAuNjAyMjU4OTc0NDAyNjJdXX19fSwgImRyb21hZW8tM2Qt
Y3ViZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJm
b3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby0zZC1jdWJlLmh0bWwiLCAibWV0cmljcyI6IHsi
UnVucyI6IHsiY3VycmVudCI6IFtbMzc1MS4wLCAzODE4LjAsIDM4MjMuMDAwMDAwMDAwMDAwNSwg
MzgyNC45OTk5OTk5OTk5OTk1LCAzODI5LjBdLCBbMzc2MC45OTk5OTk5OTk5OTk1LCAzODI3Ljk5
OTk5OTk5OTk5OTUsIDM4MzguMDAwMDAwMDAwMDAwNSwgMzg0MC45OTk5OTk5OTk5OTk1LCAzODQ4
Ljk5OTk5OTk5OTk5OTVdLCBbMzc3MC4wMDAwMDAwMDAwMDA1LCAzODUxLjAsIDM4NTQuMCwgMzg1
NS4wLCAzODU5LjBdLCBbMzc2OC4wLCAzODI0Ljk5OTk5OTk5OTk5OTUsIDM4MzAuOTk5OTk5OTk5
OTk5NSwgMzg0Mi4wLCAzODQzLjBdXX19fSwgImRvbS1tb2RpZnkiOiB7InVybCI6ICJodHRwOi8v
dHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Rv
bS1tb2RpZnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s1NS4xNjg4
NjgwNzA3ODYwNCwgNTUuODE4NjU1NTIwODcxMjIsIDU2Ljc4NzQyNjk4NTc2MTIyLCA1Ny43NTE1
NzIyMDgwMDE3MywgNTguNzA4OTg2OTc0NzMyODQ1XSwgWzU0LjY5NDQwOTA0OTA1NDA2NiwgNTUu
NjUzMDUxMTQ3NDI4NjM0LCA1Ni4zMTU0MDcyNTkwNjIxNCwgNTcuMjYxMzUxMjg3NzkxNTcsIDU3
Ljc5MjE5NjYzOTc1OTcyXSwgWzU0LjI5NTYwMjcwNjU2NTc3LCA1NC44MzAyNzE3MDU0Nzk5Mywg
NTUuNzU0MzY3NzY1NzQzNzk0LCA1Ni43MDgyMDc1NTAwOTc0OSwgNTguNDA3OTU3MjM5ODg3NDdd
LCBbNTUuMDEzNjA2MjMwNDA1OTA1LCA1NS44ODY4NTE3NzM3MzcwOSwgNTYuMTkyNTE4MzEyMzk0
NjUsIDU3LjUyMzk1NTUzMDI3MTY3LCA1OC4yMjI1OTg4OTI0Nzc4NF1dfX19LCAiZHJvbWFlby1j
b3JlLWV2YWwiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
UGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tY29yZS1ldmFsLmh0bWwiLCAibWV0cmlj
cyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjM1Ljk1MDc1MTM3NjI4MzMsIDIzNy4yMTMxNjgw
MDA5MTcxLCAyMzguMTYxNTY1MDYxNzEzMywgMjM4LjE4MzYyNzEwMzAzOTcsIDIzOC40OTY1NTkw
MjU5Mzk2Nl0sIFsyMzUuMzA3NjkyMzA3NjkyMywgMjM2LjkyMzkxNDA5NDc0MTU1LCAyMzcuOTE1
MDQzMDc5MjQ1MjQsIDIzNy45NTkxNjI0NjY4Nzc5NiwgMjM4LjIwNTY2NTczMjg5MDZdLCBbMjM2
LjA5OTY4MDE3MDU3NTY4LCAyMzcuODkyOTQ4MTczMzIyMDMsIDIzNy45ODExODcwMjMzNjk5OCwg
MjM4LjE4MzYyNzEwMzAzOTcsIDIzOC41NjgyNTM0MTY0NjE0M10sIFsyMzUuNTIzOTEwNzMzMjYy
NDUsIDIzNi44MjAzNTY3Njg5OTAyLCAyMzcuMzQ0MzAzNTA4MTcwNSwgMjM3Ljg4ODY3NzI2NTY2
MzYsIDIzOC4yMDAxNTMwNjU0MTk3XV19fX0sICJqc2xpYi1zdHlsZS1qcXVlcnkiOiB7InVybCI6
ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9E
cm9tYWVvL2pzbGliLXN0eWxlLWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1
cnJlbnQiOiBbWzEuMDY5ODMxNDM1NzM3MDgwNCwgMS4wNzQ1NTg5ODYzNDc0MzA1LCAxLjA3NzU0
ODg5MzEzNTA2LCAxLjA3ODcxNjY2ODkyNTMzMjUsIDEuMDc5MzM5NzQ4Nzk1Nzg0OF0sIFsxLjA3
MTk3NzA5NzU3NzQyNDMsIDEuMDczNTk2ODMwNDIxODc0OCwgMS4wNzUzNTU0Mjg4MTU0ODE0LCAx
LjA3NzMyNzU2OTQ3Njk0NCwgMS4wODAyNTk4MjcwNTE2NTY0XSwgWzEuMDcwMTk1OTk1OTk4MTI1
LCAxLjA3MDcwNzc2MzM0ODM1NDYsIDEuMDc1NTA3ODg2NDQzMjUzNSwgMS4wNzU5NzQwNzg5NjI4
NjczLCAxLjA3NzczNTE2ODQxMTUyOTddLCBbMS4wNzI5OTIyNTM1OTY5MzE4LCAxLjA3NDIyNzA2
MDU4MTA1MiwgMS4wNzc5NDIyMzc0Nzc2MTQyLCAxLjA4MTQ1NDI0NzYxMjQ4MzMsIDEuMDgzMTM3
NTYxMzM0NDg5XV19fX0sICJkcm9tYWVvLW9iamVjdC1yZWdleHAiOiB7InVybCI6ICJodHRwOi8v
dHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ry
b21hZW8tb2JqZWN0LXJlZ2V4cC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQi
OiBbWzUuMDEyNjEzODI4MDQ0NDU4LCA1LjAyNzY4ODIxMzEwMzc2NSwgNS4wMzIwODc1ODUzMzUy
MzI1LCA1LjAzNTg5MTA4NDA0NzQ5MSwgNS4wNDEzOTQ4Mjc4OTgzOTddLCBbNS4wMTY0ODczMzU5
MjE4ODcsIDUuMDM2ODU0NzI2NjExNjgxLCA1LjAzODQ3ODg3MjM4NDY2MywgNS4wNDIzODk0MTEy
NjM1MjQsIDUuMDQ4MjcxMjY5MzMyMjYxXSwgWzUuMDE0MTI0NjE0MjM5NDY3LCA1LjAyNTMxOTc5
OTYzMzU1MSwgNS4wMzE2OTA0MDY4MjYwMjUsIDUuMDM0MTg4Nzc5NTk4NzA5NSwgNS4wNDEwMDMx
Njk1ODYxNDVdLCBbNS4wMTgyNzExNTQ4ODMzODUsIDUuMDI1MjU0NDU2MjY4MjI3LCA1LjAyODk3
NDUzODkwNDcxOSwgNS4wMzMyOTc1NTk0NzMyMDQsIDUuMDM2NjUyNDg5MDExNDE3XV19fX0sICJk
cm9tYWVvLW9iamVjdC1zdHJpbmciOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jy
b3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tb2JqZWN0LXN0cmlu
Zy5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzY5Ljk2MDQ3ODQ2OTky
NTQzLCA3MC4yMDE3NjY4MTEwMDEyOCwgNzAuNDQzMDA5NzkyMzE0OTIsIDcwLjc3OTgxNjEyODI1
ODUyLCA3MS4yNDgzODk1ODQwNDM3Nl0sIFs2Ny41NTc1MjczNzI2ODE2MywgNjcuODcxODQ2Njc2
NjQyOTcsIDY4LjI2NjY4NjYwNTkzNjY3LCA2OC40OTU2MDc0MDE5ODYzOSwgNjkuMDUyNDA2ODI1
Njk4NzddLCBbNjguNTc5ODU5MjAyMDg1MjcsIDY4Ljk3MTI1OTQxNjQwMjgsIDY5LjMyOTU5Mzkz
MTc4MTc2LCA2OS41NTU4OTMyNjE2OTAwOSwgNzAuMDE1NjY4OTc0MTg5MTNdLCBbNjkuNDE4Nzc4
MDAyMDcyNTMsIDY5Ljc1OTEzMjQxNDU4ODEsIDcwLjIyMzc2NjQ5Mzg2OTIsIDcwLjQ0MzkyMDIx
MTk5Nzc2LCA3MC44OTExMzQ1NjUxNzgwNV1dfX19LCAiZG9tLXF1ZXJ5IjogeyJ1cmwiOiAiaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFl
by9kb20tcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syMTAu
NjQwNDU4Njg3MzU2NjQsIDIxMS43MzY0MTExODA5NzIzLCAyMTIuMDMwMjM5MDQwNjQwNzcsIDIx
Mi41MTE2OTUyODUyMzAxMywgMjEyLjYwNTMxNzE0OTY4NDRdLCBbMjAzLjM3OTg1Mzg1ODY5Njky
LCAyMDQuNjU4OTY0NzY2ODUwOTEsIDIwNS4wMjYxNTA5ODk1ODE1NCwgMjA1LjEwNjMzMDYxNzQx
MDcyLCAyMDUuMTcxODgxMjI4MDM3ODVdLCBbMjAzLjQ4MDczNzM1NTA0NTczLCAyMDUuNjgwMDQy
MTc4MDYyLCAyMDYuNjg2OTUzNDgwODY0NDcsIDIwNy4wNDE0MjU3MTg4ODcxOCwgMjA3LjU2MTQ5
NjI1Nzg3ODkzXSwgWzE5OS4yNDQwOTczOTAxNjk0NiwgMjAwLjM4OTA4MDQ4MTc2NDI3LCAyMDEu
NTAzNzgzMDEyMTgxMzQsIDIwMS44NTE3NzUyODc1NDczNSwgMjAyLjQzNjQ2MDQ1ODE0NTgzXV19
fX0sICJqc2xpYi1hdHRyLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItYXR0ci1wcm90
b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0MDguOTQ4Mjk5
NDU4MjI0MywgNDEzLjY4MjY0Mjk3MDI3NjMsIDQxMy45NzM1MjQxODEzNDkwMywgNDE0LjIwNTk0
Mzc5MzY2MTYsIDQxNC40MTEyMDc0MTQ5NjA4N10sIFszOTkuNjAzNjAxNjMwNzY0NCwgNDAzLjAx
MTA2OTUyMzgzNDg2LCA0MDMuNTAyMDIyNzA1MzQ4NzQsIDQwNC4xNjcxNTYyNDA3ODk4LCA0MDQu
NDY3OTkyOTQxNjg1Nl0sIFs0MTAuOTg1MzIzMTMxMTcxNCwgNDE0LjE5Mzg4Mzc2NDUyMDEsIDQx
NC40OTA0Njk3OTIyNjg0NywgNDE0LjgxNjc0NjI2Nzg5NzgsIDQxNS42NTUwNTgyMjYwNDE5XSwg
WzQyMi43NDkzNzUyNTY5NzYzNSwgNDI1LjI4MjczMTI5MDY2NTY1LCA0MjUuNTU1NDg3MTc4MDA0
MSwgNDI1LjgyMzI3ODIyODkzNDY3LCA0MjYuMzgyNjI4NDg5MDMwNF1dfX19LCAianNsaWItdHJh
dmVyc2UtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2Vy
L3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi10cmF2ZXJzZS1wcm90b3R5cGUu
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxOTguOTk0NDkzOTE5NDg2
NywgMTk5LjM2MDk3NjY3NTI2NzQsIDE5OS43MTI0NjA4MTk1MTg2NCwgMTk5LjkyMDU5NDQ4NTYy
NzUsIDIwMC4yODYwNzM0MTY2NzM0Ml0sIFsxODguMTk0MjU1ODgxMTUzMjMsIDE4OC44MzQzNzIz
NDM1ODk4LCAxODkuMTE5Mzc3NDM5MjIxNSwgMTg5LjE5MDAxNzE0MzcxMzY3LCAxODkuNDA5MDg4
MDA0MTkwMThdLCBbMTkzLjIyODI4MzAzNzI3OCwgMTkzLjcwNzI2NDAzNzQwOTE3LCAxOTMuNzkz
MjU0NDQzMTY1MjQsIDE5NC4wNjM1MTA2NTczNjg5LCAxOTQuMjIyNDc3MjQxODIzNzNdLCBbMTky
Ljg3NjA2NTY3NzE3MDMyLCAxOTMuNTM2NTE5MzA5Mzg5LCAxOTMuOTUxMTcxNTkyMjQxMzcsIDE5
NC4yMzE4ODU5MzkxNDk1LCAxOTQuNDUwMjQzNjQ0MjE1NjJdXX19fSwgImpzbGliLXRyYXZlcnNl
LWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9Q
ZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2UtanF1ZXJ5Lmh0bWwiLCAibWV0
cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjkuODk4NDE1MTA4ODAyNjksIDI5Ljk1NTUw
ODU2NzM3Mjk4NCwgMjkuOTk0NDYxNDA3Mjc1NjksIDMwLjAyNTkyNTkyNTcyMDAzNSwgMzAuMDQz
NTU0NDU2MTcwNDEyXSwgWzI5LjQ4ODIyNTk5NDU3NDMxNCwgMjkuNTMxODcwNTM2MzAzODc0LCAy
OS41NTExNDM3MDYzMTEyNiwgMjkuNTY5NzIyMDY3MjkwNjI3LCAyOS42MTE1NjY3NDA0ODUwMV0s
IFsyOS42OTAwMDg2OTg2OTM2OCwgMjkuODc0MDI1NDQ1NzgxNjY1LCAyOS44OTQyNDgwNDY3NzMz
MywgMjkuOTMyMTY1MDcyNzY3OTM3LCAyOS45NTc1MDk1MDk3NTIzMTddLCBbMjkuNTMwNzI1NDc4
MjgxMjMsIDI5LjU4MjQ5MDIwMzgzNTE5NiwgMjkuNjA2MDMyNDMwNjIyNDM4LCAyOS42MTgyNzM4
MDA0NDE3MzgsIDI5LjY0NDA3ODcwMTEzMTM3N11dfX19LCAianNsaWItc3R5bGUtcHJvdG90eXBl
IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1h
bmNlVGVzdHMvRHJvbWFlby9qc2xpYi1zdHlsZS1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjog
eyJSdW5zIjogeyJjdXJyZW50IjogW1sxNTAuOTkyODQ5ODc3NDMzNzcsIDE1Mi4xOTk4OTY3NDg4
OTM0NSwgMTUyLjYzOTI2OTM1ODU0NzM4LCAxNTIuOTQxNjIxMzA5NDg3ODYsIDE1My40NTMyMTUw
MzMyOTg3Nl0sIFsxNDkuMDU0NzI4ODk2OTI2MTgsIDE1MC4wNjc0MDY4NTg4MTM1LCAxNTAuNTMy
MjU0MTY5NjA3NDYsIDE1MC45MDU1MzU3NzQ0MDEyNywgMTUxLjQ0ODI2Nzc0MDAzMzM3XSwgWzE0
Ny43ODM2NjM4Mjg1NDQ4LCAxNDguNTY5Njk1MTYyNjY0MzcsIDE0OS4wMjAxMzAzNDA4NjExMywg
MTQ5LjI5NzA3MjA3MjQzNzMsIDE0OS40MTI2NDkzMTQ5MjAzXSwgWzE0OC40ODU5NTU0OTY5NzA5
LCAxNDguODg5OTg4Mzg3MTI1NiwgMTQ5LjIxNjUzNzA5OTQ5MTk3LCAxNDkuNTQ0NTQ5MTM4NzI1
OTgsIDE1MC4xODYzNTcyNjM4Mzk5XV19fX0sICJkb20tdHJhdmVyc2UiOiB7InVybCI6ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVv
L2RvbS10cmF2ZXJzZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE4
NC4wNjM0ODk1MjMyMTc5NSwgMTg0LjE1NTMwNTgyNDA2Nzc0LCAxODUuMjg2NzM3MjA4MDE5NDUs
IDE4NS4zOTgwMDg0ODE2NTY4MywgMTg1LjUzNzk4ODQyNjQ0MTYxXSwgWzE3Ny4zNTM0NDIyMzU4
Mjg2NSwgMTc4LjgxNzUyNTE2MTQ2ODM1LCAxNzkuOTM2NTU5NjYzMzM5NTIsIDE4MC4xNTY2Nzkw
MDgzNTE0NiwgMTgxLjIyNzUwNjczNTAwOTRdLCBbMTc5LjY3MTI4OTkzNDEyNDg3LCAxNzkuODI4
NTkwNjk4MTU0NSwgMTgwLjE4NTAxMzYwMDE2MTc0LCAxODEuMzU3ODc3MTIxNzUxNiwgMTgxLjY4
NjA2Mzk5OTE0NDM4XSwgWzE4Mi41NjA2MDQ5MDM2MDQ4LCAxODMuMjQzNDEzNzIzMTU2MzUsIDE4
NC45ODIxMTc5MjkyODYsIDE4NS4xMjczNDI3NjM5NjEzLCAxODUuMjUxMDI0NzgzMTE0NjRdXX19
fSwgImRyb21hZW8tb2JqZWN0LWFycmF5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9iamVjdC1h
cnJheS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzQuMTQ2ODAxMjk4
OTgxMjU5LCA0LjE2Mzg4OTU3Mjc4NzE3NywgNC4xNzEyNjYwOTQxNTU4OTMsIDQuMTgxNzgxMjE1
MDk1Mjc3LCA0LjE4MTgxNDU1ODA4NTY5NF0sIFs0LjIwMTY2ODkyNzY2NTMwOCwgNC4yMTA1Nzc3
Njk2MjkxNzYsIDQuMjE0NDA4ODMwMzM0Njk4LCA0LjIyMTg5MDEyOTY0MTc5NCwgNC4yMjkzNDMz
NjMwODEwMDldLCBbNC4xNzc4ODYxMTYzMDQ5NTUsIDQuMTkyOTkwNTIwNzEzNzE5LCA0LjE5Njc5
ODc5MTY2ODM3MiwgNC4yMDM5MDQ5Nzk1MzcwNDg0LCA0LjIxODE0ODE3Nzc1Mzc5N10sIFs0LjE0
NzE4NDgzNDA0OTE0NiwgNC4yMjYzNjI1MDQ4NDcwNTYsIDQuMjI2NzA0NjY0NjUwNzIyLCA0LjIz
Mzg5MzY4MTg3MDg2NzUsIDQuMjM1MDgzNzIwODk2MDc2XV19fX0sICJkcm9tYWVvLXN0cmluZy1i
YXNlNjQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVy
Zm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tc3RyaW5nLWJhc2U2NC5odG1sIiwgIm1ldHJp
Y3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEyOTUuMzIxODg2ODYwNjU0MywgMTI5OS4zMzQ1
MzIzNzQxMDA3LCAxMzAyLjYzMDA2MDkxMDA2OCwgMTMwNy4zNzIwODA1ODQ3NzQ1LCAxMzA4LjQ1
MzA3MjEyODIyNzldLCBbMTI5Ny44MDY4MTIwMzgyMDUyLCAxMjk4LjczMTk4ODQ3MjYyMjYsIDEz
MDIuNDc0Mjc4NTQ0NTQyLCAxMzA1LjA4NjEwMjE3OTM0OTgsIDEzMDcuNTIxNzM5MTMwNDM0OF0s
IFsxMzAwLjUyNzE4NzYxMjUzMTQsIDEzMDIuMzQyNzMzOTY4MDI1NiwgMTMwNi40ODE1MDEzNDA0
ODI1LCAxMzA4LjExNzc1MjAwNzEzNjUsIDEzMTIuMTAxMTY4OTQ1NjMzOF0sIFsxMzAwLjk0Njkx
MzgwMjQxMTIsIDEzMDIuNDU2NTIxNzM5MTMwNSwgMTMwNS45NzU5NjQ1OTc0Njc3LCAxMzEwLjk4
NTU5NzQzOTU0NDYsIDEzMTEuOTE2MTE4NzEzMzQ2M11dfX19LCAiZG9tLWF0dHIiOiB7InVybCI6
ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9E
cm9tYWVvL2RvbS1hdHRyLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtb
MTI0LjU0MjI3MDQyNjI1NTgxLCAxMjUuMTcyMDc3OTUzNTQyLCAxMjUuMzI5NzcxODY0NTg3NTgs
IDEyNS4zNjM5Mzc3NjU2OTU2LCAxMjUuNDczODY5NTE3MTM2NzVdLCBbMTI1LjEwNzY5OTMxNjYx
MzI4LCAxMjUuODA1NjYzMDQwMDIzODksIDEyNS45MjI5NzM1ODc1MzY1NiwgMTI2LjAxMTA2NjAy
OTE0NTA2LCAxMjYuMTM1NDM1NjUwMDc0NzNdLCBbMTI1Ljc1MzAwMzAxNTUwODEsIDEyNi40ODk5
NzU5ODAyOTMyNSwgMTI2LjY3NDk2OTQ3OTg4NDc0LCAxMjYuNzM0MjI3OTIyNTc5NzIsIDEyNi43
ODg5ODI1NTY2MjgyM10sIFsxMjQuNTc5MTA2NDc4NDc5NTIsIDEyNS43NDIyODk1Mjc0OTQ2Miwg
MTI1Ljk4MDc3NjQxNzk5NTE3LCAxMjYuMDcwMTA3NjQ3NzA3NTYsIDEyNi4yNjMxMzcyNjc1Njc4
Nl1dfX19LCAianNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1ldmVu
dC1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1szODku
ODIxNjM0NTU4MTQxNDUsIDM5Ny42MTcxNjg1MDY3MzgyNywgMzk4LjQwMjAyOTcyNjIwNTgsIDM5
OC45MzU1NTg1Mjc5NjIyLCA0MDAuMzQyMzU1ODgwNjA3NDRdLCBbMzg5LjgwOTkxMDg5MDI1MzA0
LCAzOTUuNzE2NzgzNzUxNDM3OTYsIDM5Ni4wMzk3OTk5OTE0NTM4LCAzOTYuMzg2OTg4NDgyMzY0
NjQsIDM5Ni45MTg0MjkzMjUwNjA2M10sIFs0MDQuNTY1MzUwMTAyOTU4NjMsIDQwOC40NjQ0ODg2
Njg0MzIyNCwgNDA4Ljk2ODU4NDIwNTkzNTIsIDQwOS43MDE4NTU3ODg0NzQ4NiwgNDEwLjM5NjU0
NzA4MzEyMDY1XSwgWzQwNy43ODM0OTYwOTAyMDY3LCA0MTMuMzIyNTEwMTkyMTMxMjMsIDQxMy44
MTg0MDk0MTMzMzU2LCA0MTQuMjU3NTc4OTc3MjQ5NDcsIDQxNS4zNTEzNTY3ODgzNzY1Nl1dfX19
LCAianNsaWItZXZlbnQtanF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9i
cm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1ldmVudC1qcXVlcnku
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1swLjAxMzY3MjA3MzY3MzE2
ODk2LCAwLjEwMTA2NzI2NzYyMzAwOTM1LCAwLjEwMzM5ODE2NzM5ODQwMzc3LCAwLjEwMzQ4NDA2
NTUxMTc1NTYyLCAwLjEwNTQyNjEzNjI5MTEwMTc5XSwgWzAuMDEzNjc5OTMwOTI0Mzk1ODUxLCAw
LjEwMjA2Mzg0ODU0Nzg1OTA2LCAwLjEwMjkxNTQ3MDgxOTgzMTE0LCAwLjEwNDQ0MjE5NTg5NTYw
OTMyLCAwLjEwNTkwMjM2Nzc2NTU1MjEyXSwgWzAuMDEzNzQ4NzY3MDA5OTE4ODA3LCAwLjEwMzk0
NjE5MDEyMjk1OTUsIDAuMTA0NTY2NDA0NDk5MDcyNzYsIDAuMTA0ODk1ODA3MzYxODE0NjQsIDAu
MTA2MjQ0NTc2MjIzMzc2NDVdLCBbMC4wMTU3Njc0MzYzNTIzOTQ4MjQsIDAuMTExMzA0MjQzMTU1
NjM0OCwgMC4xMTI5NTE1MDI4NDc0OTE5OSwgMC4xMTMxNTY2NzkxOTM1MDAyOCwgMC4xMTU0OTYy
NTQwOTY3ODExXV19fX0sICJqc2xpYi1hdHRyLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWIt
YXR0ci1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syODgu
MTE1NjI1NzMzOTI2NDQsIDI4OS43MDQ3MTk1NzEyNjgxLCAyOTAuNjM3NDY1NzQ1ODU3MDcsIDI5
MS40MzE1OTk1MzgxNDcxLCAyOTIuMzI3NzE5NTUzMzc1NF0sIFszMDcuMjUxNjgzNDY1MTEwMiwg
MzA5LjM2NDE3MzA4NDM1NCwgMzA5Ljg4MDMyODA0MDgzOTYsIDMxMC42NDIwOTUzOTU5MDU1LCAz
MTIuMDIxNTI2MTIwODcxMTZdLCBbMzE1LjA5MDU3MjA3OTUxODksIDMxNy41NDY4NDE5ODc5MjQ4
NCwgMzE4LjIxODU1ODg3ODQ5NDMsIDMxOS41NjUyMjcwMTMwOTQ3LCAzMjAuMzc3NTIyOTg3Mzc5
MTddLCBbMzA2LjY0MjY4NzkyMTQ3NzAzLCAzMDguNTU1NTgyODg5MDQ5OCwgMzA5LjQxMzE4MDQx
NjAyMTkzLCAzMTAuNjA4NDAwMjQ5MjEsIDMxMS4yOTA5NDY0OTY1NTY1XV19fX19fX0sICJyZXZp
c2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDQtMTZUMTA6MDU6MjlaIiwg
InJldmlzaW9uIjogIjE0ODUwOCJ9fSwgImJ1aWxkVGltZSI6ICIyMDEzLTA0LTE3VDIwOjAxOjA4
LjY2NDQ1OCIsICJkZXNjcmlwdGlvbiI6ICJObyBwYXRjaCJ9LCB7InRlc3RzIjogeyJEcm9tYWVv
IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1h
bmNlVGVzdHMvRHJvbWFlbyIsICJ0ZXN0cyI6IHsianNsaWItbW9kaWZ5LXByb3RvdHlwZSI6IHsi
dXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRl
c3RzL0Ryb21hZW8vanNsaWItbW9kaWZ5LXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1
bnMiOiB7ImN1cnJlbnQiOiBbWzE1MS4yNDEzMzM3OTk2ODQ5MiwgMTUyLjA5ODIxNDI3NjkyNTky
LCAxNTIuNjI3MjEwMDAyMzg1NCwgMTUzLjA3NDQ4MDIyNTkxMDIsIDE1My41ODMzMjY0Njc1OTY5
OF0sIFsxNDcuNTUyMzgwNzc0ODA2MzUsIDE0OC41NDQ5OTMxNzg2ODUzLCAxNDkuMjU4MTQ3Mjgx
MTE3MDMsIDE1MC4xMDAzMDcwODQ4MjM0NCwgMTUwLjU2MDQ3Nzg5OTUxOV0sIFsxNTMuMDQ5MTU4
NDI5ODA2MDYsIDE1NC4xNDgwNzc3MTE3OTU0MiwgMTU0Ljc1NzU2NTg5NjczNDE4LCAxNTUuMDkw
OTA2NzgzOTI2NjQsIDE1NS45MzY5NTA4MjY1OTE1XSwgWzE0OC43NjQzMTY5NzQxODg0LCAxNTAu
OTU5MDQ4MTczNzUwNTIsIDE1MS41OTYxNjI3Mzk2MTQ5MywgMTUyLjA2NDkzODI1NzUyOTkyLCAx
NTIuMzE2MzE2NTg5MjY4N11dfX19LCAianNsaWItc3R5bGUtcHJvdG90eXBlIjogeyJ1cmwiOiAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJv
bWFlby9qc2xpYi1zdHlsZS1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJj
dXJyZW50IjogW1sxNTEuODYzNzk5NjE2MzYsIDE1Mi45NzA5NjIzNTIzOTQ1NCwgMTUzLjQ4NzQy
MzMxNzY4OTYzLCAxNTMuODQ1MzA2MzMyMDU4OCwgMTU0LjIyNDA5MjE0ODc3NDVdLCBbMTQwLjkx
MzQ5MTQyNTg4MDA0LCAxNDIuMTEyNjg5MjgzOTI2MTMsIDE0Mi4yMDE1OTk5NTAwNjAxNCwgMTQy
LjQwNTA0NDQyMTM5NTQyLCAxNDIuODA3MTAxNjM5NjAwOTddLCBbMTUyLjc4MDc3MDE2NTAwODks
IDE1My40MDQ4NTE3ODU5OTUwNSwgMTUzLjY5NTc1OTI4ODY4NzI3LCAxNTQuMTA2Mjk3NTgwODE2
NDMsIDE1NC40NDM5NDQ2NTgwNDM2Ml0sIFsxNTQuMzEyNTMzMDk4NzgzODYsIDE1NS4xNTc4Mjk4
NDA2OTcyNSwgMTU1LjY2MTUyODYyMjU0NTMsIDE1NS45NzA5ODUyMTk3NjQ2LCAxNTYuNDU2MTY5
NDA5NTEzNF1dfX19LCAiZG9tLXRyYXZlcnNlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tdHJhdmVyc2Uu
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxODIuNDI1Mzg1MTU0ODc5
NDIsIDE4My4xMDQ4NzQyOTE3NTExNCwgMTgzLjk5Nzk1MzE0MTEwOTgsIDE4NC4zMzAzMzc4NDMy
NjY4MiwgMTg0LjU2MjA0ODQyMTMwNjYzXSwgWzE4MS4wODM1MTcxMTg1Mjg1LCAxODIuNzQ0OTAx
MTI3NDk2MTgsIDE4NC4zMDM2MzU0NzEyMzcyMSwgMTg0LjUzNzIzMjM4NDIyOTcsIDE4NC42MTQ4
MzQ2OTUwOTI5NV0sIFsxODQuMTA0ODc0MDAzMTQ2ODUsIDE4NC4zOTcxODgxNDY2MzIwNiwgMTg1
LjI3NjA3ODg5OTYyNjksIDE4NS41NjE0ODYzNzAwNjI0NSwgMTg2LjE5NDcxMzA5Mjk1NjgyXSwg
WzE4MS44MTAwMjIyNTI1Njg5OCwgMTgyLjE0MzAyMTE1MTY2NTM4LCAxODMuNDE5NTI0MTUyNDY2
OTgsIDE4My41NDMyMjMzMTYyNDUxNiwgMTgzLjc1Nzg3MjYxMDMwNDI1XV19fX0sICJkb20tbW9k
aWZ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvRHJvbWFlby9kb20tbW9kaWZ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6
IHsiY3VycmVudCI6IFtbNTQuNzQ1NTg1Mjc0Mjc0NjYsIDU1LjMzNTAzMzg0MDEzODYyLCA1NS45
NTQ0MjE2MTQxNzEzOSwgNTcuMDA2OTI1NjU0NTEwNDksIDU3LjcxMjg0MzI0MDY0MTg1XSwgWzU0
LjQzNzc0OTA2NDU0Mjk2LCA1NC44NTE3MTA4NDkyNjYxMywgNTUuNjYwMTcyNTQ3NzI5Mjk2LCA1
Ni45OTkyMTg5ODIwNjQ4MiwgNTguNjU3NDI4NjUxNzY5MjQ0XSwgWzU0LjY1NDg5ODI5MTYyODQ3
LCA1NS4zNjQyNDU3NTYwNTc5NCwgNTUuODk4NTQxNjA2MDE0MDUsIDU2Ljg5ODUxOTMyMjA1Nzg0
LCA1Ny42NDE2NTA2NTg2NjI1MDZdLCBbNTQuMjY0Mzg5NDA1NTkyODQ0LCA1NS40NTQ0MjU0NDU1
ODMwMSwgNTUuODc3NTAwNTAyMDc4OTEsIDU2LjkwMzc2NTY3MzI1OTM3LCA1Ny44NDM2ODAzNDYy
MDgxNzRdXX19fSwgImpzbGliLXN0eWxlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5
bGUtanF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMS4wNzA4
NDU5NjU1ODMyMTk2LCAxLjA3NTc5ODYwNTA3NTcxMTgsIDEuMDc5NjcyNjY2MjU2NjM5MiwgMS4w
ODI5NTgwMjA3Mzk1ODAxLCAxLjA4NTYzNjYzODg2Mjc5Nl0sIFsxLjA3MzM4Mzk3MzY0ODkwOSwg
MS4wNzYwNDI4Nzg4MzA4MzIzLCAxLjA3OTk4NTcyMjkzMDMzMiwgMS4wODEzODQ3NjY5MzYyNjMz
LCAxLjA4MTg4Nzc1NjEyNTMyNzVdLCBbMS4wNjkzNDg5MTcxODEyMTg1LCAxLjA3MTQwNzg3Njky
OTI1NzksIDEuMDc4NzgzNDIwNTg3MjMyLCAxLjA3OTcyNjk0NTkyMDEzMzUsIDEuMDgwNjg5NTk3
NjE3MzgxNF0sIFsxLjA2MjE1NjA3NTU4Nzk1MywgMS4wNjU5NjE3NDA1ODk4Njk2LCAxLjA2OTUx
MTQ1MTgwNTgxNDksIDEuMDcwMDkxNzQ0MjMwMDQ5LCAxLjA3MTY0NDY0MTUwMTE1NTNdXX19fSwg
ImRyb21hZW8tb2JqZWN0LXJlZ2V4cCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
YnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1vYmplY3QtcmVn
ZXhwLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbNS4wMjg2OTg2MTI5
MzI2NzIsIDUuMDM4OTM2MTgyMTE5NjU5LCA1LjA0NDAyNTYwNDYwNjEyNCwgNS4wNDg0NTA0ODU1
MzI0NzMsIDUuMDQ5NTQzOTI5MzkwODA5NV0sIFs1LjAwODI1NjAzNjY5OTk1NDQsIDUuMDIyNzAx
MzMxNTQwMzc3LCA1LjAyNjM2OTkyMTMzNTE5MiwgNS4wMjg2Nzk0MDU4NDIxMTQsIDUuMDM0NzA0
MzY3MzgzODI3XSwgWzUuMDIzNjk5Njg2Njk4NDg0LCA1LjAzNzY2OTE2MzYwOTUyLCA1LjA0MTA0
NjY0NDQ3MTQ1OSwgNS4wNDY0ODMzNjgyNjUxNDEsIDUuMDUwODQyMDEyMjk1MTA0XSwgWzUuMDI1
NzY3MTU1MzIxODkwNiwgNS4wMzA5MTUxMDM5MDI5MTIsIDUuMDM2Njg3OTczMTE4NTE0LCA1LjA0
MDkzNjk2Mjg0NDEzLCA1LjA0MzIwMzUzNDU1MjgxMl1dfX19LCAiZHJvbWFlby1vYmplY3Qtc3Ry
aW5nIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9iamVjdC1zdHJpbmcuaHRtbCIsICJtZXRyaWNz
IjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s3MC4wMjgyNTY3MjEyOTE4NCwgNzAuMjU2NjM4MDY5
NTc4MTksIDcwLjU2MDk0NDM4NDcwMDY2LCA3MC44MzgxMDQ5MTU1OTQ5MywgNzEuMjM5MTYxNzI2
NTA3NV0sIFs2NS4zNDc1MjU0MTk3NDg2NCwgNjUuNTMxMDUzMDEzMDAzNjYsIDY1LjgxNzMwODcy
NDYwNDUzLCA2Ni4xMDM5NzMzMjM5MTU4MiwgNjYuNDYxNDI1NjAxOTQ2OTddLCBbNjkuNTY0MjUx
MTU0ODc0ODQsIDY5LjkwNzUxNzI2NDg1MDMxLCA3MC4yMjExNjU4MDAwMDY5OSwgNzAuNDY3ODgw
NjEwMjA5MDEsIDcwLjk4NzA4MTYwODUxNDI2XSwgWzY4LjYwODEzNjQzNzQ5MDMyLCA2OC44OTYw
MzE1Mzc1MDg1NSwgNjkuMTc2NjcwMjM5MDQzODksIDY5LjM2MTQxNzk2NzMwMzM4LCA2OS45Mjc0
MTM4NDU2Mzg1OF1dfX19LCAiZG9tLXF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tcXVlcnkuaHRt
bCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syMjEuNzI4Mjc2MzgyODQ2MTMs
IDIyMy4xMDIwMTY1MzU0ODg2NywgMjIzLjY0NzY1MTYxMjgxNzUzLCAyMjMuNjkzMTA1OTU3ODIw
ODgsIDIyMy45MTI3MDMyMzk2MTAxMl0sIFsyMTYuNzEzNTU3NzA2Mzc3NSwgMjE4LjMzOTMxODMx
MjE5MDQxLCAyMTguNDk2MDg0NzI3Njc3OTIsIDIxOC41ODY3OTc3ODgxOTcxMiwgMjE4LjcwNTc1
MTk5MDQ0MzA1XSwgWzE5OS42NDE4MzA3NDAyMzg3LCAyMDAuOTgwODA0ODY1MjUwMjQsIDIwMS4w
Nzc1ODM5MjM3MzAwMywgMjAxLjQxOTIxMzAwMzU0MSwgMjAxLjU1MzQxNTgwMjE3NTM4XSwgWzIx
NC4zMDI2ODE0NDU1OTk0MywgMjE1LjY5ODU3NDU2NTgyNjgyLCAyMTUuODkzNTAwMDA2MTg2NTQs
IDIxNi4xMjc3MjQ2ODE4ODEzOCwgMjE2LjIwNTMzMjQ1NzQ3OV1dfX19LCAianNsaWItYXR0ci1w
cm90b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
UGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLWF0dHItcHJvdG90eXBlLmh0bWwiLCAibWV0
cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMzg3LjQ3Mjk3MjMxMTEyNDcsIDM5MS44NjYx
NjU2MzgzMzUxMywgMzkyLjQ0MTM3MTMzMzU0Mzk0LCAzOTIuODEwMzUyNDQ3NDI2OCwgMzkzLjQy
MzAyMjMxODU3MjI0XSwgWzQwOS40NDQwNDkwNzcyNTE4NiwgNDExLjA4MjA0MDk0MDM3MjEsIDQx
MS43NjAzNTE3MDAwMTAyMywgNDEyLjQ0MTI2MTg4NTg5Mzc3LCA0MTUuMjM3MDU3MTY3Nzk0MjZd
LCBbNDA1LjU3NDI0OTk1NjY3NTcsIDQwNy40MzQ4NTE0NDY0NDg1MywgNDA4LjgyODI4MzEzNjc4
ODcsIDQwOS4xMTIxMjE2MjEyMDAzNCwgNDA5Ljg5ODkwMDcxNTA4MTI1XSwgWzQxMC4xODM5MDE0
MjA0MDg3NCwgNDEzLjQzMzYyODkzNTM4NTg1LCA0MTQuMDMwNjAxNDY1MTAxLCA0MTQuMjA5MTI0
NTY5NTg3MSwgNDE0LjQ3NjE3NTYzMTU4OTRdXX19fSwgImpzbGliLXRyYXZlcnNlLXByb3RvdHlw
ZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3Jt
YW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2UtcHJvdG90eXBlLmh0bWwiLCAibWV0cmlj
cyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjAyLjQ5OTczNDQ4MzAxMDIsIDIwMi44NTQ1NDg3
MDMxMjg5NiwgMjAzLjEwMjU0OTI3OTE4ODYyLCAyMDMuMjI1ODM2Nzk5ODA4MDYsIDIwMy4zOTI5
NjI3ODMzOTc2NV0sIFsxOTQuMTc2MDE0MzI2OTQ2MzMsIDE5NC43MTgzOTU5NDM0Mjc0MiwgMTk1
LjA2NTQzOTE2NTQ0NTMsIDE5NS4xNzQ5MTEyNTQ2NTU2MywgMTk1LjMwNzk0MDcwOTg1NjM4XSwg
WzE5OS43OTkyNTA2MTE1OTEzMywgMjAwLjQ3MjMwMDY2Nzk3ODU3LCAyMDAuNTg4MTkzMTYwNTQ4
NDksIDIwMC42NzU2NTYyMjI3NzMyLCAyMDAuOTIzMjEzOTM0MjU5MjhdLCBbMjAwLjUyNTgwMzQ5
MDM5NDg1LCAyMDAuOTUzMDA0MTAwMjc4MjYsIDIwMS4wOTEzODcwMDgzNDY1LCAyMDEuMjUxODE1
NDg4NDY0NzMsIDIwMS41MjA0MDk0NjAzMjg1NV1dfX19LCAianNsaWItdHJhdmVyc2UtanF1ZXJ5
IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1h
bmNlVGVzdHMvRHJvbWFlby9qc2xpYi10cmF2ZXJzZS1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjog
eyJSdW5zIjogeyJjdXJyZW50IjogW1syOS44NDg3MzI2NjE1NzkxOSwgMjkuODk2OTQ2MjYyMTA4
MjA1LCAyOS45MjgzNzE2MTYwNTE3NSwgMjkuOTU3MDc5Mjk3NDA3OSwgMjkuOTc0ODc0NTA4MDMx
MzFdLCBbMjkuNTUyMTg0MzY2NDM0NjI0LCAyOS42NDQ4MzU0NzgxMzE1OCwgMjkuNjY4Njk5NTY0
MjQxNjcsIDI5LjY4NTM5MTY5NzQwNzE4NywgMjkuNjkzNjE0NTQyMjczMDg1XSwgWzI5LjYzNTAw
Njk5NjAwNzUzMywgMjkuNzAzODA5OTEwMjcxMTgzLCAyOS43NDkwMDExODU0MTQwMjMsIDI5Ljc2
NjYyMDQyNDY3NzksIDI5LjgwNDU5MjI4MDUzNTA3XSwgWzI5LjcwMTU3MjY5Mzc4NjUwNiwgMjku
NzY2MDY1MjI3MTU3OTUyLCAyOS44MDU0MjM5MzEwOTI4NjQsIDI5LjgxODA2ODYzMjYzMDAyNywg
MjkuODY2NTk3OTI3OTg5NTk1XV19fX0sICJkcm9tYWVvLTNkLWN1YmUiOiB7InVybCI6ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVv
L2Ryb21hZW8tM2QtY3ViZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBb
WzM3NDEuMjU4NzQxMjU4NzQxMywgMzgxMy4wLCAzODEzLjAsIDM4MTUuMCwgMzgxOC45OTk5OTk5
OTk5OTk1XSwgWzM3NzcuMCwgMzg0MC4wLCAzODQ1Ljk5OTk5OTk5OTk5OTUsIDM4NTMuMDAwMDAw
MDAwMDAwNSwgMzg1My4wMDAwMDAwMDAwMDA1XSwgWzM3OTcuMCwgMzg1OS4wLCAzODYwLjk5OTk5
OTk5OTk5OTUsIDM4NjIuOTk5OTk5OTk5OTk5NSwgMzg2Ny4wXSwgWzM3NDYuMCwgMzgwOC4wLCAz
ODE0LjAsIDM4MjEuMDAwMDAwMDAwMDAwNSwgMzgyNC45OTk5OTk5OTk5OTk1XV19fX0sICJkcm9t
YWVvLWNvcmUtZXZhbCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90
cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1jb3JlLWV2YWwuaHRtbCIsICJt
ZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syMzUuNDUxNTEwNjgwNDk5NSwgMjM3LjYz
MzQ5Mjc2MDI2OTk1LCAyMzcuODM2MDY1NTczNzcwNSwgMjM4LjIwMDE1MzA2NTQxOTcsIDIzOC40
MjQ3NzI1NTUzMTU3XSwgWzIzNi40MDI2NDU1MDI2NDU1LCAyMzcuNjYzNjAzNTU1ODk1LCAyMzgu
MjQzNjY5MDE5ODk4NiwgMjM4LjI4NzA5MzIzODI5MzQ0LCAyMzguODMxMDUxMzU5NzYwODNdLCBb
MjM2Ljg2MzY5MTQ0OTU1ODQyLCAyMzkuMDYyMjk5NDkwMjMzMjIsIDIzOS4wNjIyOTk0OTAyMzMy
MiwgMjM5LjQwMTQwMTcwMDgzMTQ2LCAyMzkuNjA0ODEyMDgzMzM4NTddLCBbMjM1LjA1ODIyNDIz
MjYyOTIsIDIzNS4yNTg1ODQ2MTM1NTIxMywgMjM2Ljk4NzMzNjk2NzI5NzUsIDIzNy41NDYzODMz
NjgwNjc5MiwgMjM3LjkzMjM0OTUyNjU2NjkyXV19fX0sICJkcm9tYWVvLW9iamVjdC1hcnJheSI6
IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5j
ZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1vYmplY3QtYXJyYXkuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1s0LjE3ODkxNjczOTE5MDAwNCwgNC4xODEyNDE2MTgxMzA4MSwg
NC4xODQ4OTIzNzg3MzE5MjUsIDQuMTkyNzUwNTMzNjA4NTk2LCA0LjIwMDA5NDI3NDg5MDE0XSwg
WzQuMTYxOTY3OTY3NTY5MjUxLCA0LjE2NDYyODQwNjQwNDMwOCwgNC4xOTMzNTgzNTU4MTc2MDks
IDQuMTk2OTMzNjE3MzM1ODk0LCA0LjIxMTYwNDI4NTEyODcxNV0sIFs0LjIzMjQ5NjQ0NjE3ODI3
NiwgNC4yNDIyMTg0ODU3Nzg5ODQsIDQuMjUzNjU5NDU0MjEzMjIzLCA0LjI2NDg0NDE4NzU0OTg2
OCwgNC4yNzYwOTQ0MjU0NDE3NjJdLCBbNC4xMjE2OTk5MzY1NTE3OSwgNC4yMDQwNzE4NzI5OTY2
NTM1LCA0LjIxODgwMzQ4MTgzNjMzNSwgNC4yMzMzNTk1NjYwNjgwNzEsIDQuMjM3MDA4MzI5NTQ1
Mjg5XV19fX0sICJkcm9tYWVvLXN0cmluZy1iYXNlNjQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8t
c3RyaW5nLWJhc2U2NC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEz
MDEuOTgyMDExMTUzMDg1LCAxMzA2LjAwMjE0ODIyNzcxMiwgMTMwOC44ODk1NjI4OTAyNzY1LCAx
MzEwLjY2MzgxNzY2MzgxNzgsIDEzMTIuOTgzNDg0MjgzNDMxXSwgWzEzMDMuNDkzNTM0NDgyNzU4
NiwgMTMwNS43MjQyMTIwMzQzODQsIDEzMDkuNTc5NTAwODkxMjY1OCwgMTMxNC4wOTExMTg1OTU5
OTM3LCAxMzE1LjI4MzMwOTcwOTQyNl0sIFsxMzAyLjU2OTYzMTYyNjIzNTQsIDEzMDQuNDcxMDMx
MzkwMTM0NiwgMTMwOC43NzA2MDI5MjU0MzcsIDEzMTMuNTQ0NzkzMzI5Nzg1MywgMTMxMy42ODE0
NDczMjE3NDU1XSwgWzEzMDQuNzc0NjkwODA0ODAzNiwgMTMwNi40NDA3MDgyODExNjYsIDEzMDcu
OTIxNTc5MTM1NDA1NCwgMTMxNC42MjUxOTkzNjIwNDEzLCAxMzE1LjY5MzI4ODQ3MTc1NDhdXX19
fSwgImRvbS1hdHRyIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3Ry
dW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tYXR0ci5odG1sIiwgIm1ldHJpY3MiOiB7
IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEyNC4wMDc2MTM5ODQ0NzExMywgMTI0LjU4NjczMTE1MDAw
NzIxLCAxMjQuODEwMjA2NjMxNTc2NjMsIDEyNS42Nzg5MDUxNDExMzU4LCAxMjUuODIyODAyNzU1
MjM3ODRdLCBbMTE5Ljc0NDc1OTE3MjU2ODI0LCAxMjAuNDI3ODI0Mzk2NTkxNiwgMTIwLjQ4NTI1
MTA0MzYxMzcyLCAxMjEuMDA3MTcyNTYzNDk2ODcsIDEyMS4xMTgwOTk4MTgyMzIwN10sIFsxMjMu
MzMwOTkzMDIwOTc2NTksIDEyNC4xMjU1MTg0MjM3NTQ2MSwgMTI0LjIzMzYwNjM4NzE5MDI5LCAx
MjQuMzMxMzYzMTAzNTgxMTQsIDEyNC4zOTk5NTEyNjY3MjczOF0sIFsxMjUuMDc4NzU0NDM3Nzc3
NSwgMTI1LjY3OTM0NDExMDUwMTY1LCAxMjUuOTcxMzQ3OTg0MzY5MywgMTI2LjA5NTI2MDQ4ODk5
NDE0LCAxMjYuMzQ0MDQ5ODI5OTM4NTNdXX19fSwgImpzbGliLWV2ZW50LXByb3RvdHlwZSI6IHsi
dXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRl
c3RzL0Ryb21hZW8vanNsaWItZXZlbnQtcHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVu
cyI6IHsiY3VycmVudCI6IFtbNDA5LjkxODA2MDY1NjkyOTEsIDQxMy41NTE3MTQxNDU3NDY1Mywg
NDEzLjg2ODI1MTA0MDQ4MjYsIDQxNC42NzIxNDAxNTQxMjkzLCA0MTUuNDQyMzA4NTYzNjcyOTVd
LCBbNDAwLjk3NDE4MTMwODI1NywgNDAzLjk2MTkxNDM1MzI4MTU0LCA0MDQuOTY4Nzk0ODM3MTY0
NDcsIDQwNS41MTk3NTM2MTM1NzYzLCA0MDYuNjM0MzA4OTA2NzEzNV0sIFs0MDYuNzM1NTA1MzM1
OTQyNSwgNDEwLjUyODQxNDA0MDg0NDEsIDQxMS4xNzEwMTkzMzU5MTMzLCA0MTEuNjg3NzY0MzYz
ODcyMSwgNDEyLjE0NzQ5NzEzNDEyMzA2XSwgWzM5Ni43NDg5NDg2MTgwNTc3LCA0MDEuNzUxNzgz
MzA4OTExNCwgNDAyLjI3MTc4NjcyNTIxMzgsIDQwMy4xNDU3NzE4OTkyNjUwNywgNDAzLjYxNDA5
NDk5NjI3NjRdXX19fSwgImpzbGliLWV2ZW50LWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWIt
ZXZlbnQtanF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMC4w
MTU3NTQyNzMwOTU0NjAzNzUsIDAuMTExMDY5MDczMjUxMzgzMDQsIDAuMTEzNTI4NDUwMTQ1MDkz
ODcsIDAuMTEzNzc0MzUzMjg3MTU4MjgsIDAuMTE2MzgzMTE4NjQ2ODk0MDddLCBbMC4wMTM4MjA5
NTExOTMwMTM5MTksIDAuMTAxMzg0ODU1ODY0NTM0MywgMC4xMDI3ODIxMDU1NzUxOTY4MiwgMC4x
MDQwNzY3NDk5NzAyNzYsIDAuMTA0NTU2MTc5MTgyMTMzOTVdLCBbMC4wMTQyOTM1MTIwNzI3NzM2
NTUsIDAuMTA1NjIxNzkzNTUxNzI3MzIsIDAuMTA1ODM0NTczOTI4NzU4MzgsIDAuMTA4MTAwNDQ5
MjkzMTUxMDIsIDAuMTIyNDk0MjkyOTQzMzc2NzFdLCBbMC4wMTQxNzc1OTgyNjkyMzczMTMsIDAu
MTA0ODQ5ODA1ODYwMjc4NjIsIDAuMTA2OTQ3Mjc1NjUzNDgzNTUsIDAuMTA4MjA5MzQ4NDg4ODU5
NywgMC4xMTE1OTA1NDE3OTY0NTEyOF1dfX19LCAianNsaWItYXR0ci1qcXVlcnkiOiB7InVybCI6
ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9E
cm9tYWVvL2pzbGliLWF0dHItanF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3Vy
cmVudCI6IFtbMzAxLjMzNzA0MzY3NzkyMjc0LCAzMDIuODg0MDY3NjE2OTIyMiwgMzAzLjcyNDA1
Njc4OTkwNDUsIDMwNC41MTYwNzgxOTM3MjY4LCAzMDYuMjE4NzI4MjA4NzQwOV0sIFszMDEuNzY2
NTcxMjE3Njc1LCAzMDMuMzgwODA2NTk3OTA5NywgMzA0LjA5NDg3MjY4NDY4OTEsIDMwNC43NTAw
NzM1OTY2MDA5LCAzMDYuMzI0Njg1MjAwMTY4M10sIFszMDguNzQ1OTE3MTc4NTA3MDYsIDMxMC4w
NjAzMzc4MzkzOTc3LCAzMTEuMDg1Mzc1NTQ3MTU0OTcsIDMxMS44ODI0NjYxOTM0NzQzLCAzMTMu
NDYwNTY4MTg2ODU2XSwgWzI5NS45NDQ2MDg3MTAyMDI0LCAyOTguOTAzNjE3ODUwOTA3LCAyOTku
NjMzOTY1MDIzNDQzNDcsIDMwMC4zMjQ1NzI1NDc4ODY1MywgMzAxLjE4NTUwNDE1MDIyNjddXX19
fX19fSwgImJ1aWxkVGltZSI6ICIyMDEzLTA0LTE3VDIwOjAxOjA4LjY2NDQ1OCIsICJkZXNjcmlw
dGlvbiI6ICJObyBwYXRjaCIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjog
IjIwMTMtMDQtMTZUMTA6MDU6MjlaIiwgInJldmlzaW9uIjogIjE0ODUwOCJ9fX0sIHsidGVzdHMi
OiB7IkRyb21hZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1
bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjogeyJqc2xpYi1tb2RpZnktcHJv
dG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1Bl
cmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90eXBlLmh0bWwiLCAibWV0
cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTQ3LjczNjkxNzgzNjkzNTg3LCAxNDguNDU2
NDg1Nzk4MTgyMjYsIDE0OC45OTY4MjUxOTc0MTk1LCAxNDkuNTQzNTM4NDQyOTc4OTMsIDE1MC4w
MzA5NTk4NTA1NTg2NV0sIFsxNTEuODMyNDg0Nzg5Nzc4NTMsIDE1Mi42MTE1NTYzOTA3Mzg1NCwg
MTUzLjI3NDg0MTM1NTE1MzM0LCAxNTMuNjQxNDMzMDkwNjg3NjgsIDE1NC4zNDQzNTUwNzI4MTM4
N10sIFsxNTIuMjYzMjU0ODA5MDE3NzIsIDE1Mi44MjE2NzU2MTY3Mjk0LCAxNTMuMjU5NTI0Njc3
MjY5MjQsIDE1My44MzEyMzYxNzAxMDQsIDE1NC4zNjIxMTEyMTE1MjUxXSwgWzE0OC44ODQ5MDU4
MjgyMjMyMiwgMTUwLjU1MDI1NzI4NDQ3MTYzLCAxNTEuMTY5Nzg2ODU2ODcyNSwgMTUxLjY1Nzg0
Mjg4MTAxMzk4LCAxNTIuMjUzNTkxODM1OTExMV1dfX19LCAiZHJvbWFlby0zZC1jdWJlIjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvRHJvbWFlby9kcm9tYWVvLTNkLWN1YmUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJj
dXJyZW50IjogW1szNzg1LjAsIDM4MzcuMCwgMzg0Ny4wMDAwMDAwMDAwMDA1LCAzODUxLjAsIDM4
NTguMF0sIFszNzc4LjAsIDM4NDMuMCwgMzg0NS4wLCAzODQ1Ljk5OTk5OTk5OTk5OTUsIDM4NTEu
MF0sIFszNzc4LjAsIDM4NDMuOTk5OTk5OTk5OTk5NSwgMzg0OC45OTk5OTk5OTk5OTk1LCAzODUw
LjAsIDM4NjAuMF0sIFszNzY4LjAsIDM4MzMuMCwgMzgzOC4wMDAwMDAwMDAwMDA1LCAzODQ1LjAs
IDM4NDUuOTk5OTk5OTk5OTk5NV1dfX19LCAiZG9tLW1vZGlmeSI6IHsidXJsIjogImh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZG9t
LW1vZGlmeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzU0LjczOTUz
NTI0MzA1NTUxLCA1NS4yNDIyMzQ2MDkzOTY3MjUsIDU2LjMzNzMwMzkzMzM2MTcyNCwgNTcuMTk3
ODA0MTE4NzMxNjA0LCA1OC4wMjQwMjYzNjE5NTY2NjVdLCBbNTQuOTgyOTc0NDk4NTU1NTIsIDU1
LjI0NjYyNzkyMTMzNTk1LCA1Ni4yODgzMzMwNTM0NTk3LCA1Ny4zMDk2NzQ5MjY3NDA5OCwgNTcu
ODIzNjU1OTQ2NjMxMzddLCBbNTQuODE2Mzg4MDQ3ODMxMzc0LCA1NS43MDk2MDI2ODkxMTQ5NCwg
NTYuMzYwMjk0NzUwNTA1MzcsIDU3LjU0MjQ2ODk3NDA3Njg4LCA1OC4zNjg3NjMzMzg1NjEzXSwg
WzU1LjE4MTk4Nzg3MjA5NzU3LCA1NS42NTkzNTAxNTc0MTM1LCA1Ni42NDM4MDUyNTQ2ODAwNDYs
IDU3LjYwMDU1NDk4MjEzMTk2LCA1OC43NzA5ODYxOTY2NjkxOF1dfX19LCAianNsaWItc3R5bGUt
anF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1Bl
cmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1zdHlsZS1qcXVlcnkuaHRtbCIsICJtZXRyaWNz
IjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxLjA3MjAzOTAyMjczODUwNDQsIDEuMDc3MTk5ODU1
NDk3NTU4MSwgMS4wNzk2NTYwMTExOTI4MjU1LCAxLjA4MTQwNDUyMTExOTI1NzMsIDEuMDg0NTM5
OTQyOTgxMDYxNF0sIFsxLjA3Mjc3OTA4MDI2MzI4OCwgMS4wNzY2ODE2ODc3NTU2ODE1LCAxLjA3
ODk3Mjg3NTY0ODAwNzUsIDEuMDc5ODcwMTA2MDcyMTU0NywgMS4wODE4NzU5Mzk0OTMzMzc3XSwg
WzEuMDcxNTMwNjg2NjQ1MzIxOCwgMS4wNzUwNzQxNDg1MzY3NTQzLCAxLjA3NjY2NTY3ODU0MTY5
ODEsIDEuMDc5MTI3NzA0MTQ0OTk0MywgMS4wODIwODIwMDk2OTg0OTAyXSwgWzEuMDQwMDk4NzMx
OTM0Njc4MiwgMS4wNDI3MjY5NzAwNzIzMDIzLCAxLjA1NTAyMzI2MDI1MTAxOTQsIDEuMDY1NTk0
NjI2MzI0NzE4LCAxLjA3NzE5MTM1ODE4NzgzNTJdXX19fSwgImRyb21hZW8tb2JqZWN0LXJlZ2V4
cCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3Jt
YW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1vYmplY3QtcmVnZXhwLmh0bWwiLCAibWV0cmljcyI6
IHsiUnVucyI6IHsiY3VycmVudCI6IFtbNS4wMzAzOTA0OTEzMzg4MzYsIDUuMDQwOTE3NzExODYw
MywgNS4wNDY3NTkyOTkwODM5NTMsIDUuMDQ4NjE1OTA0Njc4NTY0LCA1LjA1MjIzNDg4Njg5MjIw
MV0sIFs1LjAxNjI2MjY3ODY0NDQxMSwgNS4wMjMzMDg5NTE3ODM3OTgsIDUuMDM4OTkxNjA5MTEw
MTg2NSwgNS4wNDEzNDAzNjk2NDU2Nzc2LCA1LjA0MzE0MTg2ODQzODEyMl0sIFs1LjAwODYzNTI4
MzUyNjc2NSwgNS4wMjI1ODY4NTc2MDkyOTQsIDUuMDI1NjE4NzQ1OTQ1MjUyLCA1LjAyOTY1NDU2
NTI3MzYzLCA1LjAzNDgyNzg1MzU4MTA0Ml0sIFs1LjAxMzY3OTE3ODg3NTM5MiwgNS4wMjg3MDc0
ODQ5MjU1MDQsIDUuMDMxMDY5NjAyODcyNjUxLCA1LjAzNDYzODM2OTA0MDA3NCwgNS4wMzU5Mzg2
MTg4ODM1NDNdXX19fSwgImpzbGliLWV2ZW50LWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWIt
ZXZlbnQtanF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMC4w
MTY0MjQ3MDkzNTU4MjczNywgMC4xMTI5MjQ1ODg3MjgxNDg3NCwgMC4xMTU1MjA4NjY0MjE4MTQ3
MSwgMC4xMTYzNTQ3NTczNTM1MjIxOSwgMC4xMjA2Nzk4MzIwODQ4ODE5Ml0sIFswLjAxNDgwMzg4
ODIyNTQ0MTg3MywgMC4xMDc1NDEyMTUwMTA3NTgwMiwgMC4xMDc3NzM2NTIxMzMxMzIzMSwgMC4x
MDg1NDYxODMxODgzOTA1OSwgMC4xMTA2NzI1MzI3NjcyNDA5N10sIFswLjAxNDMzOTQyMTc3MDM5
MTk4OCwgMC4xMDI1NTk0MDA2NjIwMjM5NCwgMC4xMDU5MzkyMDIwMjcxMDY0MiwgMC4xMDc5Mjg5
Nzg3OTg2NjA1MiwgMC4xMTEyNDI4NDQ3NzU3NDk2OF0sIFswLjAxNTE1NDUzOTE5OTUxMDgyOCwg
MC4xMDg1OTY4NDAzMzg4NzU2MSwgMC4xMDk2NDUwNDI1MTc5OTcxNiwgMC4xMTAzNzE1NzAxOTMy
ODc0NywgMC4xMTE2NjU3NzU2NzA3MjYyNl1dfX19LCAiZHJvbWFlby1vYmplY3Qtc3RyaW5nIjog
eyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNl
VGVzdHMvRHJvbWFlby9kcm9tYWVvLW9iamVjdC1zdHJpbmcuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1s2OC45NzkwOTY1NzUyODc4NywgNjkuMjM4NTUxNDU1MTY3MTcs
IDY5LjUwODQ2MzkyOTUyMDY0LCA2OS44NDg5NjE0Njg1NTAyLCA3MC4yOTU3NjgxODYzODk3MV0s
IFs2Ny4yNDk3MDY0ODE1MzQ0NywgNjcuNjE4MDgwMDgxNjM4MTMsIDY3LjkxMjM0ODcxNDg4MTA5
LCA2OC4yMDk5MjUyMDYwMTQ1NiwgNjguNjU5NzY1MjkwNzIxNDRdLCBbNjkuMjMxOTc2MDQzMzQw
MjcsIDY5LjcxMDQ5OTA3NzgzOCwgNjkuOTk2ODMzODUwNjg4NTcsIDcwLjIyMjczMTA5ODgxNTc0
LCA3MC43Nzc1NjEwMDQ2NjM0NF0sIFs2NS42Njk4NjY3NDgyMjI1MiwgNjUuODg2MTQxNjcyNTY1
MDcsIDY2LjA5NjI3NjUzODMzNzA1LCA2Ni40NzMzOTIwMzQyNjU3LCA2Ni43OTM4NTI1NTIzODEw
M11dfX19LCAiZG9tLXF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tcXVlcnkuaHRtbCIsICJtZXRy
aWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxODQuNjkwMzE4NDc5Njk0OTIsIDE4NS43OTE3
MDY4NzI4NjQ3NSwgMTg1Ljk5MTExOTYxODI1OTA2LCAxODYuMTMxNzU3MTY5MTU3NzQsIDE4Ni4z
Mjg0MTU2ODI0OTk4NF0sIFsyMjEuODQ3Mjg4OTk0NTMwNDYsIDIyMy4wNzY0NTYyMzg1ODE3LCAy
MjMuMjI5OTY1MjU1NDY4MDIsIDIyMy40MDMxOTY5MTE4NTI1MiwgMjIzLjU5NzI5NjEwODk5MzY3
XSwgWzIyMS4xMzQ1NDkyMzM1NDQwNSwgMjIyLjc5ODExNTQyNjAyMDQ0LCAyMjMuMDcwNjM1MzI3
ODIzODIsIDIyMy4zMDY0MDI5MzM4NzI4NywgMjIzLjUxODY0Nzg0NTUyMTEyXSwgWzIxNi4zMDg5
MDgwODk3NDQzLCAyMTguMDg1MTU4NTMwMTExMDIsIDIxOC4zMTQzNTk0NzQ4NjQ4NiwgMjE4LjQ3
NDUyODA5Mzg0MzUsIDIxOC44NDkxMTIxMjI0NjkyOF1dfX19LCAianNsaWItYXR0ci1wcm90b3R5
cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLWF0dHItcHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6
IHsiUnVucyI6IHsiY3VycmVudCI6IFtbNDExLjQxNzgwMTU0MDI5NzgsIDQxMy4yMDQwNDE0NzY2
NTkxNCwgNDE0LjI0OTkyMDY0NjI0MDg3LCA0MTQuODgxMzcyNDc4NzI5MywgNDE1LjU2MDE3MzYz
NDk3NjkzXSwgWzQxOC42MTE2MDQzODgxMTQyNCwgNDIxLjEyOTE3ODkwODIyMzU0LCA0MjEuOTU3
NDQ3NDY4MjA0LCA0MjIuNDMwMTkyODY3MTkzOCwgNDIyLjk0NzQ5MTA1NDYxNzczXSwgWzM5OS44
MDkyNjY1MTMxOTc2NiwgNDAyLjQwOTAwNjg1MDU3MDM0LCA0MDMuMzU5ODM2NzEwMTYxMjMsIDQw
My42NDY1MzE4ODUxODQwNiwgNDA0LjEwOTEzMjc3MDc0NTddLCBbNDA5LjIxODUyMzk1NzkyNjQ0
LCA0MTIuMjY4MzMwMjI4Mjg3LCA0MTIuODMyNDgyOTUxMDY1MiwgNDEzLjM3NDQ3OTI5NDY1OTMs
IDQxMy42Njc4NDAwMDU0MzQxM11dfX19LCAianNsaWItdHJhdmVyc2UtcHJvdG90eXBlIjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvRHJvbWFlby9qc2xpYi10cmF2ZXJzZS1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1sxOTEuMjM1MzkyNTM4OTU5MzMsIDE5MS44MTIwMzQ1Mzk3Nzg0
LCAxOTEuOTA0NzU1NjY3ODIyLCAxOTIuMDg1NDU4ODgyNzgyMSwgMTkyLjMyNzA1OTUzMTc4ODU2
XSwgWzE5NC4yMTIwMzc4ODcwMTMwOCwgMTk0Ljc1MzI2NzQ5MDI2MzgyLCAxOTQuOTgyMjgxMDA0
ODUzMDQsIDE5NS4wNzIxNzc3MDAxMDIyLCAxOTUuMjI2MDMxNzk3OTcwN10sIFsxODYuNTk5MzMx
NTA4OTg0NTMsIDE4Ny4wNzU0NjY4NTUyMzQ2MiwgMTg3LjIwMTE1NTMyMjk5MDEzLCAxODcuNDM2
MTk2MzQ2NjI4NiwgMTg3LjY1NDA0MzM2ODMxMjkzXSwgWzIwMy40ODM5MTA2NjI1NzA3NiwgMjAz
Ljk4ODU1NTI5Njk2MTksIDIwNC4zNzg1NDAyNzUyNDU1NCwgMjA0LjU3MDEzNTk5MzczODYsIDIw
NC45MTE1MzgxNDI0OTI0NV1dfX19LCAianNsaWItdHJhdmVyc2UtanF1ZXJ5IjogeyJ1cmwiOiAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJv
bWFlby9qc2xpYi10cmF2ZXJzZS1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJj
dXJyZW50IjogW1syOS45NDE4MjEwMzk2NzIxODgsIDI5Ljk2OTcwNDc2ODI3NDA1NiwgMzAuMDAw
ODcxMzUwNzk5NDMyLCAzMC4wMDU2NzQ1Nzg4MDA3MywgMzAuMDMwMDU1MDkxMjEwNjk1XSwgWzI5
LjU5NDgxNjExMDU1Njc2NywgMjkuNjU0MDIwMDE2NDkzMSwgMjkuNjY5NjY0MzMzNDc3MiwgMjku
NjcyNDY4Mzg1MjM4MDUsIDI5LjY5OTI2NjA5NDc1MjE1XSwgWzI5LjQ5MTQxNzQ4OTgwNzM0LCAy
OS41NzY5NDI3NzI3NzA0MjYsIDI5LjYxNzQ5ODU5ODY5NzA4LCAyOS42MzcxNjA5NzA3MDUzNiwg
MjkuNjc3MTk0NzQ0MzM4MzJdLCBbMjkuNTg5NTEzNjAxNzAzNjA0LCAyOS42NjcyNDU3MjM5ODQx
NjMsIDI5LjY5MzYyODEyNjU5NDIwNiwgMjkuNzI1NjMxNzI4MjYyNjEzLCAyOS43NTgwNDM4NTcx
NTE2MjddXX19fSwgImpzbGliLXN0eWxlLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWIt
c3R5bGUtcHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtb
MTQ5LjY2OTkwMjczNjM5OTksIDE1MC42ODQxNTg5Nzk0Mjk1NSwgMTUwLjkxNzQ2ODY1NDEzMTA2
LCAxNTEuMTg3NzM3OTEwMDYxMTQsIDE1MS4zMzA3MjQ5MDQ2NDI4XSwgWzE1My4yODQ4NjE2MzAx
MTA1NiwgMTU0LjQwOTc2MjA4NTYxMDQsIDE1NS4wNDQ5OTIwNjY3NTE5NywgMTU1LjI1ODk3NzMx
MTE4MjQzLCAxNTUuODYyOTk0MTc5NDMyOTVdLCBbMTQ2LjAwNTE1MTgxMTQyMjQ4LCAxNDYuNzUy
MDY3MzA3Mzk4LCAxNDYuODM5NjA1NTg0MTcyMzgsIDE0Ny4xNjAyMTQ3OTkyMDAxLCAxNDcuNDI1
NTk3MDQzNTI5NDVdLCBbMTUwLjkxNDcyMzA3NjcxNTQzLCAxNTEuODc5NDY5MjUyNDgsIDE1Mi4y
OTM1NTQ1MzY3NjIyNiwgMTUyLjUxODY4ODg1Nzk4NTUyLCAxNTMuMDgzMzg4MDYwODY3NTJdXX19
fSwgImRyb21hZW8tY29yZS1ldmFsIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9i
cm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLWNvcmUtZXZhbC5o
dG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzIzNC45NDQzODU1OTMyMjAz
NSwgMjM0Ljk3Mzc2MTA4NzA5NzM2LCAyMzUuNzE2NTUyMDg4ODQxOSwgMjM2LjA4NTI2OTM5NzQ0
OTEsIDIzNi42MzI1ODcyNDc2MjY2Ml0sIFsyMzYuMDcxOTkxNjcxNjQ3MzcsIDIzNy44NjY4MDY0
MjI1NzI4NCwgMjM4LjI3MTY0MTUyNTY0OTc4LCAyMzguNDk2NTU5MDI1OTM5NjYsIDIzOC44NTkw
ODg4MDMzMTY5OF0sIFsyMzUuNDgwODUxMDYzODI5OCwgMjM2LjczMzQxMTA1NjY3NjUsIDIzNy40
NTg5MDM4MzMzNzgyNiwgMjM3Ljk4MTE4NzAyMzM2OTk4LCAyMzguNTYyMzY3ODY0NjkzNDRdLCBb
MjM2LjcwMDM5NzQwOTA5MDkzLCAyMzguMjAwMTUzMDY1NDE5NywgMjM4LjIyMTkyMjUyNzgyODU1
LCAyMzguNzY1NjYzNzEyMzQ3MTMsIDIzOC45Njg3MTUzOTg5NjE4XV19fX0sICJkcm9tYWVvLW9i
amVjdC1hcnJheSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVu
ay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1vYmplY3QtYXJyYXkuaHRtbCIsICJt
ZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0LjIwNjU4NTkwOTg1NzE3MywgNC4yMjQ4
OTgwNDY1MjAwNTIsIDQuMjMxMzE3MzQ2ODA2MDQxLCA0LjIzODUwOTI5Nzk1MzM0OSwgNC4yNDI0
Mjg4OTk3MTM1NjhdLCBbNC4xNTYxNzEwMTY0NTYyOTMsIDQuMTY5MDAzNDM0MzA1MTY2LCA0LjE3
NjIzMDkwNzg2NDM3MywgNC4xOTA1MTg4NjI5NDM2ODYsIDQuMTk3NjI5MTEyNTkwODM0NV0sIFs0
LjA4MDc0MTU0NjQ2MDkxMiwgNC4xMDY1NDY2MzE0MzE2NCwgNC4xMTMzODkwMTY1NDA1MzIsIDQu
MTIwNDMxNTEyOTI4Njk4LCA0LjEzNDA3NjQwNDY0MDI0Nl0sIFs0LjEzOTgxMzE3ODQzNDg4Nywg
NC4xOTk5MjU1NjM3OTkxNSwgNC4yMTQzOTE0NzQ1NjY1NDYsIDQuMjIxNzg2NjgwNjE3NDgxLCA0
LjIyODk4NDI1MjIzMDQyXV19fX0sICJkcm9tYWVvLXN0cmluZy1iYXNlNjQiOiB7InVybCI6ICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9t
YWVvL2Ryb21hZW8tc3RyaW5nLWJhc2U2NC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1
cnJlbnQiOiBbWzEyOTkuMzUxNDY4MjAzOTI3NCwgMTMwNC4zMjUyNzQ4NTkxNTUxLCAxMzA3LjEz
Mjc3MzQwOTU3OCwgMTMxMS43OTMxNzY5NzIyODEzLCAxMzEzLjUzMTQ5OTU1NjM0NDJdLCBbMTI5
Ni4yNTU2MzM2NzU4NjA3LCAxMzAyLjI0NTI1NDQ1NzMzMSwgMTMwNS41ODg4MTM0MzgxNywgMTMx
MC44ODYxMjU0MjE5MjIsIDEzMTEuNjgxNzYxNjc2NDM0XSwgWzEzMDAuMTg1MDEyNjI5MjAxLCAx
MzAzLjA4NDY0ODQ5MzU0NCwgMTMwNy4zNTc5NDU0MjUzNjEsIDEzMTEuMTY4NDcxNTA3MTksIDEz
MTEuODQ3NjQxMDA3NDQ5NV0sIFsxMzAyLjc1NDE5MzQxNDc4NTUsIDEzMDUuMzk1OTU2MzQyODE2
MSwgMTMxMC4wNTQ3OTQ1MjA1NDc4LCAxMzEzLjA0Mzc4NjU2MjY2NjEsIDEzMTQuNjU2Mzk5MzYy
NzE5Ml1dfX19LCAiZG9tLWF0dHIiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jy
b3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS1hdHRyLmh0bWwiLCAibWV0
cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTIzLjc5NzgyNjM5NzU4Nzk1LCAxMjQuNTY4
MDE2MzU1OTc0NzMsIDEyNC42NDEzMDEwODM1ODA2MSwgMTI0Ljc4MDE0NTQxMzc3NzIzLCAxMjQu
ODYzOTM2NTM5NDY3NF0sIFsxMjQuMjI0MDgxNjUzNzUwOCwgMTI0LjgyNDM5MTMwMzM4NTYsIDEy
NC45NjI1MjM5MDk2Nzc2NiwgMTI1LjExNjY2MDE3NzUyNDM1LCAxMjUuMjk0NjcxMTk0NDE5MDdd
LCBbMTA5Ljc5NDg4MjUzMTI3NjU3LCAxMTEuMjU2MzE1MTgwMDcyNDgsIDExMS4zNDQzOTU1OTc2
Njc4NCwgMTExLjk0MTE1NjI1NTc0NTY1LCAxMTIuMDQ3ODQxNzkzNTY1Ml0sIFsxMjIuMzI0MjM1
Njg2Mjg3OTIsIDEyMy4yNjAyNjgwNDk1NTI5NSwgMTIzLjM2NjI5NDUwMzEzOTQ2LCAxMjMuNDg3
NTQzNzg5NDE3MDcsIDEyMy41NzEwMDc5MDk4MDIxM11dfX19LCAianNsaWItZXZlbnQtcHJvdG90
eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1ldmVudC1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNz
IjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0MDMuODI2MzMwMTc4ODE1NiwgNDEwLjQ0MTg2NDgz
NTQxNTksIDQxMS4yNjczMTQ2MDQzNDU0LCA0MTEuODU1MDQ5MzgwMzg1OCwgNDEyLjQyMzAyMDQy
NDA5NTg1XSwgWzQwNy40OTIwNTczOTg1NTk2NywgNDEyLjQzNDIxOTkxMDA5NDMsIDQxMi44NjM4
ODYwOTQ1NjAxNCwgNDEzLjI3NTUxMjY1OTY4NDY0LCA0MTMuNzYzOTU1NjE5Mjg5NF0sIFs0MDYu
MjI4MzQ2NDg3NDY4NTcsIDQxMi43MTc4NTk1NjIxOTczNiwgNDEzLjE1MDc1OTM2MjM1NzYsIDQx
My4zNDAzOTI0NzM2ODg2LCA0MTQuNTg4NDM3MDAyNzgxNjNdLCBbMzcxLjkwMzU2Nzg3Mzc2OTc2
LCAzNzUuNTgyNTY5MTg0NzcwNzYsIDM3Ny4xMDU2OTQ4NzI0NzU1NywgMzc3LjU1ODU1NjMwOTAw
NTQsIDM3OC4zNzc2MzMyNDI4MDNdXX19fSwgImRvbS10cmF2ZXJzZSI6IHsidXJsIjogImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8v
ZG9tLXRyYXZlcnNlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTgx
Ljk5OTE2NDYxNTkwMjQzLCAxODIuNTQ3MjQ5MzE5NzcyOTYsIDE4My43NzI4ODI0NjA2Njk2OCwg
MTgzLjg3MTU3NzM5OTYzMTI2LCAxODUuMDQ3NTk1NzMyODc3MzRdLCBbMTgyLjI5NDE2MTYxODI5
MzM3LCAxODMuMzc5MDI3NTM5OTMxNiwgMTg0LjY5NDY4MzU0ODc5NDkzLCAxODQuODEwNTg4NDE4
MTgyMTQsIDE4NC45NzIxNzM3MDEwMzQzNF0sIFsxODQuMTUyMDAzMTYyMzE2NzMsIDE4NC4zNzEz
NDEzODc3OTAzMiwgMTg1LjE0NDIzNDc2MDg3ODU2LCAxODUuNjYyMjk1MzI4NTQ3NywgMTg2LjAy
NDA3MjAyOTAwOTVdLCBbMTgyLjYxMjcwNTI1NTYzMzgsIDE4Mi43NzQzNzE4NDk4NjM0MywgMTgz
Ljk1MjEyNjQ4NzQ3ODcsIDE4NC4yNzI4MjIwMjAwMDgyMiwgMTg0LjcyMzg4MTk2MjA1NzAyXV19
fX0sICJqc2xpYi1hdHRyLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
YnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItYXR0ci1qcXVlcnku
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1szMDkuMzI5NDM1MDIxMjU0
NSwgMzEwLjQwNDU5MTg3NzQyNDIsIDMxMS4yMjA2ODcxOTkxNTYzLCAzMTIuMDg3MjMxMjcyNTI1
NSwgMzEzLjA1NTI5NDkwMDY3MDZdLCBbMzAyLjcxMzg5ODcxNDk2NjQzLCAzMDQuNzQ1NDUzOTIz
NTAyMTcsIDMwNS4yNjAxMTUyMzM4OTg3LCAzMDYuMTUwNDg2MDk1MDQ1OTUsIDMwNi44OTQ1MjUw
MzM2Nzc1XSwgWzI4Mi4xNzA3NTkwMjkwODQzNywgMjg0LjEwODE5ODQ5NzA5NzQsIDI4NC42NDYx
OTgyODUxMzk5LCAyODUuODQxMzcyNzAyOTUwOSwgMjg2Ljk1NzYxOTQ1ODQ3MTZdLCBbMjkyLjIw
NzE0MDI4OTUxODYzLCAyOTQuNDI0NjIzNzUyMDA4NCwgMjk1LjUwNjYxMDY4MDAxNDU1LCAyOTYu
NDA4MTE3MjA5MDY3NjUsIDI5Ny4xMDQ5NTU4NzEyMjQ2XV19fX19fX0sICJkZXNjcmlwdGlvbiI6
ICJObyBwYXRjaCIsICJidWlsZFRpbWUiOiAiMjAxMy0wNC0xN1QyMDowMTowOC42NjQ0NTgiLCAi
cmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTA0LTE2VDEwOjA1OjI5
WiIsICJyZXZpc2lvbiI6ICIxNDg1MDgifX19LCB7InRlc3RzIjogeyJEcm9tYWVvIjogeyJ1cmwi
OiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMv
RHJvbWFlbyIsICJ0ZXN0cyI6IHsianNsaWItbW9kaWZ5LXByb3RvdHlwZSI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21h
ZW8vanNsaWItbW9kaWZ5LXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1
cnJlbnQiOiBbWzE1MS44MzMyMTExOTkzMjUxMiwgMTUyLjk4NzM0OTY4NjQ2MzgzLCAxNTMuNTk3
MTIzODU1OTk5OSwgMTUzLjg3NDEwODM0ODE1MjA1LCAxNTQuOTU0MTI5OTY2MDUwMl0sIFsxNTIu
NDYwOTg5ODM4NzIxNTMsIDE1My44OTE5NzQzNTIyNTE3NiwgMTU0LjU2NDQxMjI3MzE0OTM3LCAx
NTYuMDY2MTc4MDY5ODIyMTIsIDE1Ny4wNzg2Nzg2OTk1NTIzXSwgWzE1Mi4xNjU2NDExNzEzMTc4
NCwgMTUzLjQwMDMzODgyNjYwMjE3LCAxNTMuNTUyMTQ0MzM0NjgxODYsIDE1NC40ODE1NDgzNDYz
ODA3LCAxNTUuMDY4NzU2NDA5MzQ3NTddLCBbMTUyLjY0MjEyMDg1ODYxNDM2LCAxNTQuMTE0MzA3
NTc4Mjc3OTMsIDE1NC41NDU1NDAzOTQzNDQ2NCwgMTU0Ljg0MjQwNjQwNjE3NjI4LCAxNTUuNzQ5
NTc3NDQ5MzczODJdXX19fSwgImpzbGliLXN0eWxlLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8v
anNsaWItc3R5bGUtcHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVu
dCI6IFtbMTU0Ljc0NjI1MDU0MjUxNjMyLCAxNTYuMjk5NTQwOTMwNzM5MjgsIDE1Ny4wMDY4MDEw
Njg3MzU3LCAxNTcuNjE2MTM2ODMwOTU3MjMsIDE1OC4wMjQ5NTkxMTYzMjMyNl0sIFsxNDkuNjc3
MDAwNDgyMzQ0NjUsIDE1MC43MTMxNjQ3ODMyMDM3MiwgMTUxLjA3NzM5MzgxNTUxMjM4LCAxNTEu
NjA0NDI2MDgxODkwMzIsIDE1Mi4zNTk3OTM0OTE2MjU4Ml0sIFsxNDUuMzU4NTg5NTU3NzcwMzYs
IDE0Ni4zNTk4Mjc5Njg0NDE3LCAxNDYuNjA3Njg2NjgxMTM1NjgsIDE0Ni45MjgyNDY4Njc4NjIy
LCAxNDcuNDE0ODQ0OTgyOTg1N10sIFsxNTEuMDMyODE2OTgxOTAyMDIsIDE1MS44NDM3MDc4OTA1
ODcsIDE1Mi4zNzUzODAyNDc0Nzc3MiwgMTUyLjcxMjg1Njg4OTI4MDE1LCAxNTMuNjE5OTIyMDQ5
NzI3MTRdXX19fSwgImRvbS1tb2RpZnkiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS1tb2RpZnkuaHRtbCIs
ICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s1My42MzM1ODU5NDcxNDUyMzUsIDU0
LjQwMDA5NzUwMzE4NDUwNCwgNTUuMTkxOTMxNzc4NTU2NjQsIDU2LjM3MzcyMDI5MTUxNTY3NCwg
NTcuMDk3MzYzODIwODc3MDldLCBbNTMuNjg1NTAwNjE2NzUzNzUsIDU0LjMyNTY1NzgzMzA4OTI0
LCA1NS4yNDcxNDc3NTA2NzI0NywgNTUuODI3MTUyODc3MTYwOTEsIDU3LjAxODM4NDY3NDgxNzY1
XSwgWzUzLjY0OTcwOTYyMjY2NDAzNCwgNTQuMzYyNDU3OTk0Nzc3NiwgNTUuMTA0MjU2NDYzNDcw
MTMsIDU2LjcwNDE1MDI2MjE5MzUsIDU3LjE4NzUyNTg0MDA0OTg4XSwgWzUzLjI4ODE5NzkyMDQ2
NTYxLCA1NC4zMTAzMDMwNTg4MTAzMzQsIDU0LjkyMTU1NjAwNjc2ODMzLCA1Ni4xNzQyODkxNjg1
Njc1NzYsIDU3LjI4NTc2Njg0NzY0Mzk4NF1dfX19LCAiZHJvbWFlby1jb3JlLWV2YWwiOiB7InVy
bCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0
cy9Ecm9tYWVvL2Ryb21hZW8tY29yZS1ldmFsLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsi
Y3VycmVudCI6IFtbMjMzLjgxMTU1NTA3NTAxMjQ4LCAyMzQuOTM0NzcwODg5NDg3ODUsIDIzNS40
NTg2MjY1MjQwOTQwMywgMjM2LjIwMzg3Mzk5MzA1MjE4LCAyMzYuODM3MDMxNDQzMzA3MjddLCBb
MjMxLjIwNTEzOTcxMjkxNTYsIDIzMi40ODU0MDY5NTQ0NDIzNCwgMjMzLjQzMjUwNDE3OTU5NzE3
LCAyMzMuNjAzMTI2NDY1OTI5ODIsIDIzNC43OTUzMjE2Mzc0MjY5XSwgWzIzMC4yNTc5NDIwMzQ4
MjM2NiwgMjMzLjE5MDk5MTAzMDQ1ODE1LCAyMzQuMzU4OTI5MTQ4NjY3MzYsIDIzNS40NTQwNzY1
ODQzNTY2NywgMjM1Ljg5ODYxMzA2OTEzNzc4XSwgWzIzMy44NTIyOTE5OTMxMzI4NCwgMjM1Ljkw
MjUxNzQwNzYwNTc5LCAyMzYuMDI0NzEyMDU3NTQwNDYsIDIzNi4yOTEzODE5NjUyOTA1LCAyMzYu
NzM3ODUzNzEwNjI0NjVdXX19fSwgImpzbGliLXN0eWxlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8v
anNsaWItc3R5bGUtanF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6
IFtbMS4wMzUzMTg3Nzk1NjAzOTk1LCAxLjA0NzM3NzIyNDM5NjE2OCwgMS4wNTEyNDM1MDMwNDQy
NDY0LCAxLjA1NjExNTE0NzAxNTAxMSwgMS4wNTgwNTU4ODM2ODkyNDg5XSwgWzEuMDQ0MzkwNTkz
NDg3NzI4NywgMS4wNTM3NDkxMjU3MjkxMjM4LCAxLjA1NDc3OTAyNDQzNTc5ODksIDEuMDU4MjMx
MDMxMDA3MzMzNywgMS4wNjIwMTE4MzAzNTAxNDU2XSwgWzEuMDQyMzA4NjMzNTg0NzIzLCAxLjA0
NDY2MjE5Mjc5MDcwMTQsIDEuMDQ2OTk3MTk1MjM2NzMzOCwgMS4wNDgxNzQ1NTY3MzQxMDksIDEu
MDUzMzUzMDAxNDM5MjYzOF0sIFsxLjA0OTE3NTc1Nzk1NjkyOTksIDEuMDUwMTQ0MDg4MTA5Nzk5
OSwgMS4wNTM2MzU4NjY5NTY1OTgsIDEuMDU4MjE3NDI0MTMyOTkwMiwgMS4wNjAxNjY3NjMyMzQ4
NzA0XV19fX0sICJkcm9tYWVvLW9iamVjdC1yZWdleHAiOiB7InVybCI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8t
b2JqZWN0LXJlZ2V4cC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzQu
OTM1ODU1Mzg4OTM4NjgyLCA0Ljk5Mjc0NDM3NDU2ODA0MTUsIDUuMDEyODkzNDg0NTkxMTM0LCA1
LjAyMDUxMDAzODk2NTYyOCwgNS4wMjgwMjU3OTEyNjYyNTVdLCBbNC45Nzg2MzEzMzE1Njk3MjYs
IDQuOTk2OTcwNjcyMTkyOTU4LCA1LjAxMDEzMTc5NjIwMjU4MywgNS4wMTU0ODExNDg2MTY3OTMs
IDUuMDI0NzA4MTgyMjU5ODQ0XSwgWzQuOTYxMjgwMjUzODc2ODY4LCA0Ljk4ODI2ODQ4OTk4NzY2
OSwgNC45OTQ2ODUwMTkyNjA1MiwgNS4wMDkxNTU3MzA5NjM4MDQsIDUuMDE3ODEwNzQzMzQwNTcx
XSwgWzQuOTUzNzYwNjAyMjUxNzA2LCA1LjAwMjc4Mjg2MzU2MTI5MSwgNS4wMTI2NTgyMzIyODY3
NDMsIDUuMDIyMDU4MDk1MzUyNzMxLCA1LjAyODU1OTUzMTYxNDk1OF1dfX19LCAiZHJvbWFlby1v
YmplY3Qtc3RyaW5nIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3Ry
dW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9iamVjdC1zdHJpbmcuaHRtbCIs
ICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s2OS4yNTAwODI4MTQ2Mzk3MSwgNjku
NDk0OTE0NTc4NTQ5MzYsIDY5LjgwODc0MzMxMzg4MTQsIDcwLjA2NDgzNjkzMjg3NzI2LCA3MC43
NTQwNDE2MDk3MDgxOF0sIFs2Ny4zNzQ0NzU0NTk1NjcxOCwgNjcuNjU2Nzg1MDY2MTMwNTUsIDY3
Ljk0NTE1MzY4NDc5NjM4LCA2OC4zMDQwMjE5MTYwNzcxLCA2OC43NDY0MzUxNDMxODg1NV0sIFs2
Ni43Mzc5MzM0MDAyMzk3NywgNjcuMjE1OTEwMzU1NjI0MiwgNjcuNDk3NTYxOTM3MTY0MTIsIDY3
LjcyNjIxNTMyNDM5MzU2LCA2OC4zNDYyOTE1NDEzNTc1XSwgWzY1LjE5MTI1MjYwNTgyMzg5LCA2
NS45ODExMzk0NTkwNTg0NCwgNjYuNDc1MzMxODM2MTI2ODYsIDY2Ljc2ODE2MjQwNzk0Mzc2LCA2
Ny4xNzM3MTU0MjI3MDM2Ml1dfX19LCAiZG9tLXF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tcXVl
cnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syMDkuMDU4OTg3OTY4
Nzc0OTQsIDIwOS43OTQzMjcwOTkyOTY4MiwgMjEwLjM1MjU1ODAxODgzNjA1LCAyMTAuNzUyOTgy
ODIzNTkyMiwgMjExLjAxMDc1OTc5MTAxMzZdLCBbMjE3LjU5NDgxODA4Mjg2OTc1LCAyMTkuNzU5
NjU5OTk3NzU5NjMsIDIxOS45NzcwNzAzMjA3NjI1OCwgMjIwLjg3ODI0MDc3MTc1MjUzLCAyMjEu
MjE0ODkzMzAxMzk2Ml0sIFsyMTEuMzMyNzA4NDI2NTcyNTcsIDIxMi41NDQ0ODkyOTIzMzQ4LCAy
MTMuMDI2Mzc0MjI4MTY5NzQsIDIxMy43MjQ1NTE3NjYyMzk0NywgMjE0LjI2NzYxNTAzMjA5MjI0
XSwgWzIxOS44NjAxMjExNjU4NzcwOCwgMjIyLjExMTE1ODcxMDc3NTcsIDIyMi43NTY2MjkwMDA1
NjYzLCAyMjMuMTgwNzMwOTg3MDQxNzMsIDIyMy4zNTE4NDY2MzIxMjE5Ml1dfX19LCAianNsaWIt
YXR0ci1wcm90b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLWF0dHItcHJvdG90eXBlLmh0bWwi
LCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMzk0LjMyMjAyNzU2MTM1MzksIDM5
OC40MjI0NTk1NDQ0MDQxNSwgMzk5LjQ2NjI3NDQyMzE5NjEsIDQwMC41ODg4OTc0ODU5NjU4NCwg
NDAxLjIyMzUwNzAzMTM4MzhdLCBbMzc2LjEyMjc0MTI4NDkyODksIDM3OS40OTYxMjgwODY1NzM4
LCAzODAuMDYwODYyODg0MTM2OTUsIDM4MC43MDgxOTE2MzUzMjUyNSwgMzgxLjg2NDY3MjgzOTMx
MDJdLCBbNDA2LjQxNDc0NTg2NDc3MTUzLCA0MDguNTUyMzQ1NDM1NjkwNjUsIDQwOS42NDM2ODg1
MjA3MTQ5LCA0MTAuOTY1MTY2ODI1MjY1OCwgNDExLjc4MjcyMTQxOTU2NDI3XSwgWzM4OC42NTMz
MTcwNjI2NzcsIDM5MS4zNjY4MzIyNDE4MDI1NywgMzkzLjE0MjUxMjI0NDg1NzUsIDM5My44MjIx
OTExMTQxMjU1MywgMzk0LjQwNTM2MTM5NTQ4OTZdXX19fSwgImpzbGliLXRyYXZlcnNlLXByb3Rv
dHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJm
b3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2UtcHJvdG90eXBlLmh0bWwiLCAibWV0
cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTk4LjA2NTM0MzkyMzkzODk3LCAxOTguODE5
MjcxNzcwMTA3OTcsIDE5OS4wMzUyOTA4ODI4MDM5NiwgMTk5LjMzMTI4MDEyNTg0MDMsIDE5OS42
NjYyMTUzMzI3NjQ3OF0sIFsxOTAuNjQ2ODY4NDc0NzI4NDUsIDE5MS43ODIwNzY3NzY1MjQxOCwg
MTkyLjEyMTQwMDExMTU1MjYyLCAxOTIuMzQxMTE4NjEzODI5ODUsIDE5Mi41MDgyMDU0NTAxNTc5
XSwgWzIwMi43NTkyODg1NjgwMjcxMywgMjAzLjc0NzY3OTQ2ODA0MDI1LCAyMDQuMTkwNzk5NzY3
Mjg5NywgMjA0LjQ4NTYzNjE2NDM2MjI2LCAyMDQuNzg1MTY4NjIxMDgxOV0sIFsxOTcuMTE3NTQx
NTk4Nzc2NSwgMTk3LjU0NDA1MzgwMDczODQ4LCAxOTcuODg2ODg4NDEzNjQ4MTcsIDE5OC4yMjU0
ODI0NzgzOTA1NywgMTk4LjUyNzA4OTE1NDI3MDk1XV19fX0sICJqc2xpYi10cmF2ZXJzZS1qcXVl
cnkiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLXRyYXZlcnNlLWpxdWVyeS5odG1sIiwgIm1ldHJpY3Mi
OiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzI5LjQzNTQxNTAyNjIzOTAyLCAyOS41ODU4Nzc2ODU0
OTA4MywgMjkuNjY1MjAwNjkyMzU5NjEsIDI5LjY5MzQ0MTQzNjg3MzgsIDI5LjczOTYxOTgzNzU3
MjY5XSwgWzI5LjQ0OTc3MDE5NjYyNTAxOCwgMjkuNTg5NDkxNDI4MDYzNTc1LCAyOS42MjAyNDQx
MDE4Mjk4OTcsIDI5LjY1MTI0MTE0MjE0NjgxLCAyOS43MDEyNTMzMDA2Mzk0OTNdLCBbMjkuNDg4
NDY4NzI4NDA3OTg3LCAyOS41OTA0MjQxOTQ3OTg5NSwgMjkuNjY2Mjg4NjE3MzA3NzQ2LCAyOS42
OTI1NTE1MjkzMzk1NSwgMjkuNzMzODYwODM4NTQwMDY0XSwgWzI5LjYwMTA3NDQ4MDU2MzE5NSwg
MjkuNjk4ODQxMzM1ODg1NjIsIDI5LjczMDg0OTQzNDAyMjM3NSwgMjkuNzgzNTUxMTI4MDIyNzA1
LCAyOS44MDY5MzU4NzQ2NDE4MzRdXX19fSwgImRyb21hZW8tM2QtY3ViZSI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21h
ZW8vZHJvbWFlby0zZC1jdWJlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6
IFtbMzcyNS4wMDAwMDAwMDAwMDA1LCAzNzY2Ljk5OTk5OTk5OTk5OTUsIDM3OTguMDAwMDAwMDAw
MDAwNSwgMzgwMi4wLCAzODA1LjAwMDAwMDAwMDAwMDVdLCBbMzc2MC45OTk5OTk5OTk5OTk1LCAz
ODE2LjAsIDM4MTYuMCwgMzgxOS45OTk5OTk5OTk5OTk1LCAzODM1LjBdLCBbMzc0OS4wMDAwMDAw
MDAwMDA1LCAzNzcxLjk5OTk5OTk5OTk5OTUsIDM3OTguMDAwMDAwMDAwMDAwNSwgMzgwNi45OTk5
OTk5OTk5OTk1LCAzODEwLjBdLCBbMzcxNS4wMDAwMDAwMDAwMDA1LCAzNzkwLjk5OTk5OTk5OTk5
OTUsIDM4MTMuMCwgMzgxNi45OTk5OTk5OTk5OTk1LCAzODE4Ljk5OTk5OTk5OTk5OTVdXX19fSwg
ImRvbS10cmF2ZXJzZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90
cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZG9tLXRyYXZlcnNlLmh0bWwiLCAibWV0cmlj
cyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTgwLjI2OTM1NzA5MTk4NzIyLCAxODAuMzA0Nzc3
NTI0NTQ1ODQsIDE4MC43NTQ5OTI0MTIwODc2NiwgMTgwLjg4MTMyOTQxMDg0NTEzLCAxODEuNTQ5
ODE1NDE0NjE2NF0sIFsxNzkuMzg2MjIwMzA2NDgyMywgMTgwLjUxMjg2Njc2MDEyMjQyLCAxODEu
ODUwMDU2NzA3MDc2NDUsIDE4Mi4zOTc3MDQ2OTc5MjY0OSwgMTgyLjcxOTk1ODUzNTA0OTg3XSwg
WzE4MC44OTk0MzQ1NjMyODMyOCwgMTgyLjA3NTk0OTk3MzEzNzIzLCAxODMuMzc4OTY0OTE3NDU0
NzQsIDE4My42Mjc1MTg2MDk2MTA5NywgMTgzLjc1MDMwNDczNTc1ODI4XSwgWzE4MS4wODYzNTkx
OTM2ODE4LCAxODEuNDg0Mjg5NjM1ODU5MDgsIDE4Mi4yMTQ2MjMwNzk5NDg2NCwgMTgzLjI0OTcz
NTc0NDg1NzMsIDE4My41NDgyODE2MDI1Mjc1N11dfX19LCAiZHJvbWFlby1vYmplY3QtYXJyYXki
OiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFu
Y2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tb2JqZWN0LWFycmF5Lmh0bWwiLCAibWV0cmljcyI6IHsi
UnVucyI6IHsiY3VycmVudCI6IFtbNC4yNDMwMTI1MDY4MzgzNjEsIDQuMjU5NjkzOTIzMTkzMDgx
LCA0LjI3ODUyMjE4MjY4NTAxLCA0LjI5MDEzMTg2NDE2NTU3OSwgNC4yOTgxMTQ3OTgyODg1NzZd
LCBbNC4yMzg3MzgxNzU1MTc2MjUsIDQuMjUyMDMzOTM1OTk0MTQzNSwgNC4yNTk2MDM1NjE4MDU5
MjQsIDQuMjYzODY3MzUzNDM2NjAzLCA0LjI3MTc0MTYwNjIyNDI0NV0sIFs0LjI5MTM5ODUzMTgy
NDcxNywgNC4yOTc3OTA4NDE2OTgxNTIsIDQuMjk4MTA1NDQ1MTMwNzk5LCA0LjMxMjk2OTU1ODc5
Mzc0MiwgNC4zMjQ1MDg5MTMyNzQ1NTddLCBbNC4wNTMyMDQyNzc0OTIyNzEsIDQuMDY1ODM3NDc2
MjI3MSwgNC4wODk0MTM5NTMwNjkzNiwgNC4wODk3MDEzNTI4Mzc0NDEsIDQuMDkwMjc3Nzc4MzIz
NDM0XV19fX0sICJkcm9tYWVvLXN0cmluZy1iYXNlNjQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8t
c3RyaW5nLWJhc2U2NC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEy
OTIuNTc0NzM3NjA0MDUzNiwgMTI5NC4yMTk0NzI1NDMzNTI2LCAxMjk2LjM5NDE5NjEwNjcwNSwg
MTI5OC44NjE5Njk4MDU4OTUxLCAxMzA2LjUxNjkwOTY1MTMxOV0sIFsxMjk1LjM5OTUzMDYwMTE5
MTYsIDEyOTYuODU2OTYyNDgxOTYyNywgMTMwMS45MjIxNTI0NjYzNjc2LCAxMzA3LjM4NTEzNjMz
OTMzMzUsIDEzMDcuNzk0Nzk4NzE3NDkxOV0sIFsxMjkyLjU0OTQyMDcwOTYzMDYsIDEyOTMuNzUy
OTM5MDQ4NjUyNywgMTI5Ni4yMzMzNjMzOTA0NDIsIDEzMDMuMzQ3ODgwNTIyMjY3OCwgMTMwNC45
NjMwMjkxMTIzNDE3XSwgWzEyODkuMDE1NjY0ODQ1MTczLCAxMjk2LjEwNTUxMDM4ODQzNywgMTMw
MS45NDExODcwMTgxMTAyLCAxMzA1LjA5OTgyMTQyODU3MTQsIDEzMDYuNDUzNjM3NjYwNDg1MV1d
fX19LCAiZG9tLWF0dHIiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS1hdHRyLmh0bWwiLCAibWV0cmljcyI6
IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTIyLjI3NDcxMTU5NTA4MDg2LCAxMjIuNjkxNjk5ODE5
NjE3MywgMTIzLjM1ODY4ODEzMTQ3ODAzLCAxMjMuNjE2NjUwODE5NDA2MTcsIDEyMy45ODk4MTE3
MzQ5NDQwNl0sIFsxMjMuMjc5ODUzMzc0OTg2NTYsIDEyNC4yNzkxMjQ4ODE5MjY0NiwgMTI0LjYy
NDAzOTU0MzA5MDc5LCAxMjQuNzQ1MzQ0OTM3MTAwNTEsIDEyNC45NjEwNDYwMTQ4MzQ2NF0sIFsx
MDAuMjg3MTEwODE2NjI5LCAxMDEuMTk1Mzk4MDU3NzkwOSwgMTAxLjU1MDAwODk1MTUzNjk4LCAx
MDIuNDU0NjI0MzI4NDA4NSwgMTAyLjkwMTk1OTM3NTUwMTc1XSwgWzEyMy42MjA4NTc4ODI0Njg3
MywgMTI0LjUyOTc4Mjk2ODcwNzU1LCAxMjQuODA2NzY5NTQ2MTE3NTIsIDEyNS4wODk4NzcwNjk2
ODc2NiwgMTI1LjQzODk4ODgwMTM0N11dfX19LCAianNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvRHJvbWFlby9qc2xpYi1ldmVudC1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5z
IjogeyJjdXJyZW50IjogW1szODQuNDQzNTc0NDE2MDczLCAzOTAuMjIwNDE2NDY4NTgyNDcsIDM5
Mi4wNzU5OTkxNDAwOTM3LCAzOTIuMjQzMDg1ODA0MTc5NywgMzkzLjU3Nzk3NTI4NjgwNzddLCBb
MzczLjM3MzU0NjU2NDU0MjMsIDM3Ni43ODc2ODk5NDIxMjc2NiwgMzc4LjY2OTg2OTYxMjA1NTYs
IDM3OS42NzIwODc5OTI0NDM4MywgMzgwLjc4OTQ3MjA4MzQ4OF0sIFszOTkuMTI4NDcyMDc1OTg5
LCA0MDYuODAyNjQ1MDczMzgyMDUsIDQwNy4xMDM5NjUzMjc2MDU1LCA0MDguMjI0MTQ3NDg1NjE3
NywgNDA4LjcxNTE3OTkxMDgwNjldLCBbMzkzLjU4MTIzOTE1OTYwNTMsIDM5OC45NDQ0MjY1Njc5
MDEyLCAzOTkuOTM5NTY4Njg2NDM2OSwgNDAwLjI1ODU3NDU0ODYyNzcsIDQwMC41ODkzMjA1NjAw
MTQ2NF1dfX19LCAianNsaWItZXZlbnQtanF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1ldmVu
dC1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1swLjAxNzE0
Nzk3OTAyMzI5Mzg2OCwgMC4xMTMzMjEwMDc5Mzg1NDAzLCAwLjExMzM0NzU2NDI2Nzg3ODc3LCAw
LjExMzQzODA4NTQ1NDA1NDgyLCAwLjEyMDgxMTI3NTY4ODQxODIxXSwgWzAuMDE1NDk3NjY3MjEw
Mzg3MzQ0LCAwLjExMDI0NTAyNDk1MTA4NTA1LCAwLjExMTA0MDg1ODY2MjkyMzQyLCAwLjExMTM3
NTQyNzE2NzUzNzA3LCAwLjExMjY2ODE1NDY4MDQ4Njg1XSwgWzAuMDE1MjA4NDcxNTM4Nzk4NDMs
IDAuMTA3NDA2NjQ5MTM0OTY2MzQsIDAuMTA4MTk3MzA3MzAyMjE5NDEsIDAuMTA5NzQxMzUzMjI2
MTU5ODcsIDAuMTExNTY1NzA0MDczOTE1OTRdLCBbMC4wMTgzNDIyMzc1MjAzNDQyMjcsIDAuMTE4
MTI2NDExNTM4NjIxMjUsIDAuMTE4NDIwNjMxMDAyOTg4MjksIDAuMTIwNjM1NTgxMDczNTc3NzUs
IDAuMTI1ODQyNzk2OTE1MDA5NTVdXX19fSwgImpzbGliLWF0dHItanF1ZXJ5IjogeyJ1cmwiOiAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJv
bWFlby9qc2xpYi1hdHRyLWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJl
bnQiOiBbWzI3MC4zODc2NjA2NTU0NTY3LCAyNzMuMjE4MTU4MDIxNDI2NCwgMjc0LjMxMTgxMzM2
ODI1OTk1LCAyNzUuMjU0MDk2MDA4NzcxOCwgMjc2LjA5MzcwNzc3MjQzODU2XSwgWzI5NC4zNDkx
Njk4MzU4MzA4LCAyOTYuODAyNjMxOTg2NTA1MzMsIDI5OC4wOTk4NDY1NzY3OTUzLCAyOTguNDUz
NjcxMDA1MDg4NjcsIDMwMC4wNzk0NjEwNTcxODgyN10sIFszMDAuNjg0MDA3NTc1MDMxMywgMzA1
LjMwNDQxNTI0MDMyNzEsIDMwNS45NjcxMTE4MzAyOTY1LCAzMDYuNjI4NDExNDIwODg0ODUsIDMw
Ny42NDM3ODgxNzEyODc2N10sIFsyODQuNTAwNDEwNDgzMzU4NDUsIDI4Ni4xMjgwMTcyODUxNzky
LCAyODcuMTA1NTE0MDMwNzIwMzcsIDI4Ny42MzM2NTc2MDUxNzU1LCAyODkuMzI5NjczMzE0NzA5
OF1dfX19fX19LCAicmV2aXNpb25zIjogeyJXZWJLaXQiOiB7InRpbWVzdGFtcCI6ICIyMDEzLTA0
LTE2VDEwOjA1OjI5WiIsICJyZXZpc2lvbiI6ICIxNDg1MDgifX0sICJidWlsZFRpbWUiOiAiMjAx
My0wNC0xOFQwNzo0Mzo0My40MTI2MzciLCAiZGVzY3JpcHRpb24iOiAiV2l0aCBwYXRjaCJ9LCB7
InRlc3RzIjogeyJEcm9tYWVvIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlbyIsICJ0ZXN0cyI6IHsianNsaWItbW9k
aWZ5LXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90
cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItbW9kaWZ5LXByb3RvdHlwZS5odG1s
IiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE1My4yMTM2NDk2MDYzMzkzLCAx
NTQuMjI3MjQ0NDg4MzIzLCAxNTQuOTM5MjQzODE1OTQwOCwgMTU1LjU3MDIzMzA0MTg0Njk2LCAx
NTYuMzUzOTExNjk4NTc4NDNdLCBbMTUxLjQxNTQwMDc4NTE5Mjk2LCAxNTIuNzAzODA5MzYwMjM4
NDQsIDE1My4xODAzOTA0MTM2NTQ5NSwgMTUzLjU1MTI5OTc0NDAyMDM4LCAxNTQuMTg3NDczMTE3
Mjk2NDNdLCBbMTQ4LjgwMDU1NzQwNTE0MTM1LCAxNTAuNzk5MTYzMzc1OTE4MywgMTUxLjA1NzY0
MjU4NDA2MTQzLCAxNTEuNjU0NDkwMjY5Mzc1MSwgMTUyLjUwMjMxNTQ4NDIwMDM4XSwgWzE1Mi40
ODYwNjk1OTY4ODE5NSwgMTUzLjc5MTk3OTcxMzc4NDU0LCAxNTQuMDU3NDM0MzU5NzQzNDcsIDE1
NC42MzM3NTU3ODEyODIzMywgMTU1LjM4NTM0MTE5NzkyOTM2XV19fX0sICJkcm9tYWVvLTNkLWN1
YmUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tM2QtY3ViZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1
bnMiOiB7ImN1cnJlbnQiOiBbWzM3NzUuMCwgMzgzMi4wMDAwMDAwMDAwMDA1LCAzODM3LjAsIDM4
NDAuOTk5OTk5OTk5OTk5NSwgMzg0My45OTk5OTk5OTk5OTk1XSwgWzM3NTAuMCwgMzgxMy4wLCAz
ODE1LjAsIDM4MzIuMDAwMDAwMDAwMDAwNSwgMzgzMy4wXSwgWzM3NzEuMCwgMzgyNy4wMDAwMDAw
MDAwMDA1LCAzODI3Ljk5OTk5OTk5OTk5OTUsIDM4MzUuMCwgMzg0MC4wXSwgWzM3NjguMCwgMzgz
NS4wLCAzODM2LjAsIDM4MzguMDAwMDAwMDAwMDAwNSwgMzg0NS4wXV19fX0sICJkb20tdHJhdmVy
c2UiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9y
bWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS10cmF2ZXJzZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMi
OiB7ImN1cnJlbnQiOiBbWzE3MC40OTM2MDI2NTI2MjE1OCwgMTcxLjEyOTU1NTQyMjYxNDEyLCAx
NzIuMDAwMTY3Nzk4OTkzMzIsIDE3Mi4zOTUwMTk4MTg4NDg4NSwgMTcyLjYyOTg1MjQ2MDAyMDZd
LCBbMTgzLjI0ODE1NTcwMzM4NzE3LCAxODMuNjY0NzM1MzQ2MTk0MjIsIDE4NC4zMDc5OTIzMDU1
NjE5LCAxODQuNjY5NTU3NTA1NDIzNzcsIDE4NC44OTkxNDM3NjQxMTY0XSwgWzE3Ny43MzQ0MzE4
MzgwNTMyNywgMTc4LjY1MDUzOTM0OTM0MzQzLCAxNzkuNjA0NjU1MjY4NzI5NTIsIDE4MC4wMjYy
MzM4MzM1NjA5NSwgMTgwLjU2NzUxNzE0NDM5Nzk1XSwgWzE3Ny4wNjkxMDE5NTM1NjUwMiwgMTc3
LjQ0Njk5ODg3NjEyMTI4LCAxNzguMzcwMDk3ODk1NDk1MDQsIDE3OS4zMzU2MzcwNzE5ODAxLCAx
ODEuMTE1OTc5Nzc3NjM3NzNdXX19fSwgImRvbS1tb2RpZnkiOiB7InVybCI6ICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS1t
b2RpZnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s1My40MTYyNjE3
MTg1ODYzMDYsIDU0LjA5OTk2MDkxMjkyOTI0LCA1NC44OTA5NTc2NzI3ODQ4OSwgNTYuMDc3NDk0
OTY1MzM5MywgNTYuNzQ3NDA2MTcyNDAyNjddLCBbNTQuMTg5MzU0MjI1Njg2MjMsIDU1LjQyMjQ4
NzcxNzI4ODA3LCA1NS41ODI5MDk3MDU3NTMsIDU2Ljc1MzA4MjEzNjU2ODk5LCA1Ny4yOTE3OTY2
MDI3NTM5N10sIFs1My40NTU5OTgxMzM4Nzg1MSwgNTQuMzE4NDg0MjI2NjEyMjcsIDU1LjAzNDI3
MzUyOTIxMjQ1LCA1Ni4yMjk0MjM5NjQwMTY1OSwgNTcuMTI3MTI5NTUxMTA5MzJdLCBbNTMuODk1
MDU4ODkxNzY2NTgsIDU0LjU3MDA3OTEyMDI3OTQxNiwgNTUuMTU0NTE4OTEwMzAxNTcsIDU2LjIw
Nzc0MDY3OTEyMDI0LCA1Ni42MDQyMDAwODA3MDMyM11dfX19LCAianNsaWItc3R5bGUtanF1ZXJ5
IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1h
bmNlVGVzdHMvRHJvbWFlby9qc2xpYi1zdHlsZS1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1sxLjA0OTAyNjcwNzA0ODY0MjgsIDEuMDUzMzE4NDYzNzQxODU1
MSwgMS4wNTg5ODQzMDI5Mzk0NDIsIDEuMDU5NTIwMDA0NTE4NjEwOCwgMS4wNjEyODE3NTA5ODA1
NzRdLCBbMS4wNDk4NjQyNTcxMDYwOTE0LCAxLjA1MjE4MTQxMjE2NTkxMywgMS4wNTMzMDM1ODcz
OTg5NjkxLCAxLjA1NzcyNDI1ODQ4MjU4MjMsIDEuMDYxMDkxNTEzNTI3NzMxN10sIFsxLjA1MDc2
NDU4Nzg0NTI2MTYsIDEuMDU1NDEwNTk3MjA3NDMwMSwgMS4wNTY5NzczOTA2NDk4NzYsIDEuMDU4
MjUyOTAyNDUzNjczMywgMS4wNTg0NzQyNTUzOTgxNjldLCBbMS4wMzI1MDEwOTM3NzcwNzMzLCAx
LjA0MDQ0NTE4OTczMTg4MjcsIDEuMDQ0NzE3MDk1ODcyNDg2NywgMS4wNDcyNzc2OTU3NTcwNzk3
LCAxLjA0ODc1MjgzNzQzMjEwNTNdXX19fSwgImRyb21hZW8tb2JqZWN0LXJlZ2V4cCI6IHsidXJs
IjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3Rz
L0Ryb21hZW8vZHJvbWFlby1vYmplY3QtcmVnZXhwLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6
IHsiY3VycmVudCI6IFtbNS4wMDAzNDM0NDkyNzgwNiwgNS4wMTE5NDg0MjIxMjQwNDQsIDUuMDE4
OTU5MjA3NDQzMTI5LCA1LjAyMjM5ODc1MDU0ODI4MiwgNS4wMjYxMjY3Mzk3ODEwMTRdLCBbNC45
OTYxMDg5ODk5MzkyNTYsIDUuMDA0NTAzNjU1NDUwOTczLCA1LjAxNjI1MTI3OTUwNDc5OSwgNS4w
MjMwMTE0OTQzNjU5MzI1LCA1LjAzMDM3NDUwODU4NzU0Ml0sIFs0Ljc4MTk1NTY3NDI5NDA2MSwg
NC44NDg0ODQ2NzUxNzg5NzYsIDQuODg5NzI3MTQxNzQxNDUyLCA0Ljg5NzM2NjUwODMxNzY5Miwg
NC45NzI5NDUzNjcwMzU2MTFdLCBbNC45OTk1OTY2MzQ1NzQxNDEsIDUuMDE4MTgyNDczMjQ2OTUs
IDUuMDI1NzYxMTMwMjQ4NTM5LCA1LjAzMDQ3MzM2NDE3NjU4NTUsIDUuMDM2MjM3NDg2MzQxODE2
NF1dfX19LCAiZHJvbWFlby1vYmplY3Qtc3RyaW5nIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9i
amVjdC1zdHJpbmcuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s2NS41
NTU4NTY3NzU2MTI0NSwgNjUuODE2ODE4MzY2NzcxLCA2Ni4xMDk3MTY3NTQ1MDMzMSwgNjYuNTA1
NTQ3NjczMzY1NjUsIDY2LjgyNTQ2OTkyNTAwMzI4XSwgWzY3LjM4NTQ3NjI4ODIyODc3LCA2Ny42
NTQ4NjE5ODE0NzczNywgNjcuODIzNzIwNDI3MTkyMzgsIDY4LjE1OTA0Mjc3NDg0NTc3LCA2OC41
NTA3Nzg4NjA1OTk3Nl0sIFs2OS4yNjU3MjY4OTkyMzIzMywgNjkuNTI4NDQxNjY5MjAxODcsIDY5
LjcxNzg3MTU2ODE5NDE3LCA3MC4wOTkzMzcwNTU4OTI1MiwgNzAuNjE3NTA4MTg5MjczNDJdLCBb
NjcuNTcxMjE1NzUzMDExOTcsIDY3LjkwNTM0ODEwNDM1NDczLCA2OC4yNDQ4MTUzODE4OTczNCwg
NjguNTE1NjA3NTg5NjA4NCwgNjguOTcwNTM1ODU2NjY2NTddXX19fSwgImRvbS1xdWVyeSI6IHsi
dXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRl
c3RzL0Ryb21hZW8vZG9tLXF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVu
dCI6IFtbMTY4LjczNjcxNjY5OTM5MDI2LCAxNjkuNjY1MDg0NzEyMDk4MywgMTY5Ljk0ODUyMDk2
NjIxNTIzLCAxNzAuMjU4MTM3MDMwMzE5MiwgMTcwLjY5MTMxMjA1MDg3NTcyXSwgWzIxMy44MzAy
ODY4MTkxOTYxNywgMjE1LjIzNjYxNTc5MzI1NTYsIDIxNS40ODMxMzIzMDI3NjY5NiwgMjE1LjYw
NzEzMDUzMTYwNTgzLCAyMTYuMTM4NTM4MzgxNTM3ODRdLCBbMjEzLjAxNDUzMDU1NjcyMDU2LCAy
MTQuOTE1ODM5MDk2NjI2NywgMjE1LjYxMDY3MzU0ODMxMTg3LCAyMTUuOTAxNDE1OTkwNDQ3OCwg
MjE2LjE4MzU2MDQ4OTUyMzI0XSwgWzIxNy4zOTQyNzY2Mjg1NDI0LCAyMTguNzMyOTU2MjMyOTI2
MSwgMjIwLjAzNTc5NTM5NDE3MSwgMjIwLjE2NDc4MDIzNjgwODI3LCAyMjAuNTQyMjExNzA4NjI3
ODNdXX19fSwgImpzbGliLWF0dHItcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1hdHRy
LXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzQxMC4y
Nzg4MDQ0Nzk3NzM0NCwgNDEyLjMwMTgxMjAxNzQ2MTc3LCA0MTMuOTIzODgwNDAwODc1MywgNDE0
LjI2MzE4NDk3NjgyODcsIDQxNC41NDg1OTYwMDgxMzAyXSwgWzQwMi4zMjg0ODE3NzA2MDYzLCA0
MDYuMDExOTk3OTE5NzAxMzQsIDQwNi42MDk2NzA2NjkxNzk2LCA0MDcuMzE2ODYzMzk2OTk2Nywg
NDA4LjE2MzAxMTA1MTZdLCBbMzc3LjI3MTQ3Mjc2NzcxNTksIDM4MC4zMzQ0NTk1NzY1NTA1Niwg
MzgwLjcwNTI4NTU5ODc0NDI0LCAzODEuNTQ2MDA3NDkxNDg2NCwgMzgxLjk0MzY5MTYwMjc5Mjhd
LCBbMzg4Ljk4MjI1MzU0MTk0NTc0LCAzOTAuNzYxNTAyMjIyNTM0ODMsIDM5MS4zNTgwNDA4OTIy
MjM3NiwgMzkyLjMyNzIyMjgxMTUwNjcsIDM5My4zNzI0MDUxNTAxODEyXV19fX0sICJqc2xpYi10
cmF2ZXJzZS1wcm90b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dz
ZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLXRyYXZlcnNlLXByb3RvdHlw
ZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE5NS42OTcyMDkyNTIx
Mjc0NiwgMTk3LjkwNjgyMTQ4MjY3MjYsIDE5OC40NzQ5ODAwODMzODk5NywgMTk4Ljk4MzAzNTU1
NTUxNDg3LCAxOTkuMjk2NzAxNzc2NjU1MDNdLCBbMTk0Ljk1NzcwMjQzODk1OTc5LCAxOTUuNDI5
MDE5OTQ3MDc0NDcsIDE5NS43MTAyMDY1MTU0MDMxLCAxOTUuOTI3ODg0NjkyMTg3NTUsIDE5Ni4x
MTAwMTkyNTA5OTE4OF0sIFsyMDAuMzY5MjY3OTIyMzk2MTgsIDIwMC44OTcyNjAzOTQ3MTQyNywg
MjAxLjMyNjIwNjM0MDQyOTAyLCAyMDEuNzgxOTU0NDE1NzgwMiwgMjAyLjExNjYxODIxNTI3NDk3
XSwgWzE5Ni43MDEzMzcxODg4NTA4LCAxOTcuNDUyNDUzMDU4NzM4NTQsIDE5Ny45MzE0MDAwMjUx
MjQzMywgMTk4LjMwNzg1MTYxODcyOTY3LCAxOTguNTY0OTA5MDQ3NTQ0OTddXX19fSwgImpzbGli
LXRyYXZlcnNlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nl
ci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2UtanF1ZXJ5Lmh0
bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjkuNDgzMDIxNDgyNTA4OTQ2
LCAyOS41Mjc2MTA0ODUyMjQyNCwgMjkuNTgzMTM5NzY3ODE1MTIsIDI5LjYxMjQ2ODMwMjU0Mjg1
OCwgMjkuNjU0OTQ3NTI3MDM0ODU3XSwgWzI5LjI0ODkxMzYxOTU4OTUsIDI5LjYzMzMyNzYxNjQ2
NTc5LCAyOS43NjE2NTE0ODk2NDE5MDYsIDI5LjgwMTMzOTE3NDQ3NDA2LCAyOS44Nzg5NDExOTI3
OTY5NTVdLCBbMjkuNDQzOTA2MzU2MTk2NDI1LCAyOS41MDU5NzkzNzU4NzM3MTgsIDI5LjU2Mjcz
Nzc5ODU4MzA5NywgMjkuNjAwMTI2MjQ4NDQ0NjQyLCAyOS42NDc0NjQxODg2ODI0ODRdLCBbMjku
NTU0MzcyNTQ3Mjk5ODE3LCAyOS42MzUyMzMzOTU1MjgwMjIsIDI5LjY3OTEwMzA2MTE5MjUwNywg
MjkuNzI2MTk1MDE1ODQ1OTI4LCAyOS43OTIyOTA4MjAwOTU5NzhdXX19fSwgImpzbGliLXN0eWxl
LXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVu
ay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtcHJvdG90eXBlLmh0bWwiLCAi
bWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTQ1LjAxMDQ1NDU5NDU3MzUzLCAxNDUu
OTc0MTMzMTAzMzI1ODQsIDE0Ni4yNjk0OTI1Mzk2MzgwNCwgMTQ2LjQ2NDY3NjI4MDM0NjY1LCAx
NDYuOTE5NDA2OTc0OTAwMTddLCBbMTQzLjYwMjQ4NDE4ODIxOTYyLCAxNDQuNDA4MDcxMTU5Njk2
NjUsIDE0NS4wNTAwMDkwNTQwMTM0MywgMTQ1LjUxMDkwNzA4MDkxODg4LCAxNDUuODc1NDIxNDc3
MTM5NTNdLCBbMTQ2LjMyNjA5MjY4NDYxMDE2LCAxNDYuODExNTc5NDU5MjcxODgsIDE0Ny42NTU1
MTk2Mjk4NzI4NiwgMTQ4LjEzODE2NDIwODU3MDk3LCAxNDguNDg0MjM0NzY1OTA5MTVdLCBbMTQw
LjgzOTk5OTE4OTgwNjUyLCAxNDEuMzYxOTA4ODc0OTU2MzYsIDE0MS41Njg1MTk0MDYyNzc5Nywg
MTQxLjg4OTY0NDUwNzczODUyLCAxNDIuNDU1NTUwNjQwMDYzMV1dfX19LCAiZHJvbWFlby1jb3Jl
LWV2YWwiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVy
Zm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tY29yZS1ldmFsLmh0bWwiLCAibWV0cmljcyI6
IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjMyLjc2ODYxMTE4MDQ3NDE4LCAyMzMuNTE3OTk3NTY3
NDIwOTYsIDIzMy45NDY2NDEwNTU2MjQxLCAyMzQuMjg4Mjc3NjgzODI1MzYsIDIzNC4zMzEwNjIw
OTUyNzI5M10sIFsyMzQuOTc2NjI3NjMyNDAzMjgsIDIzNi43ODE4NjY2NjY2NjY2NCwgMjM2Ljky
MzkxNDA5NDc0MTU1LCAyMzguNjM4MDg3NTg5NTUyNzUsIDIzOC42MzgwODc1ODk1NTI3NV0sIFsy
MzQuODAxNTE0MzMyMDcxMzgsIDIzNi43NDc1MjkyMDAzNTk0LCAyMzcuMDYwNjAxNTQ3NDI0MDMs
IDIzOC4wMDc0OTg2NjA5NTM0MiwgMjM4LjMyNDcwOTUxMzkyMDE0XSwgWzIzNC4yNTA2OTI0Mzkx
NTM3NywgMjM2LjQ5MjM5MzE2ODE4OTgsIDIzNi44NTc4NjI5MjczNzA2NiwgMjM3LjI4MjgyNDg1
OTQ3OTYsIDIzNy41MDY5Mjk2Mzc1MjY2NF1dfX19LCAiZHJvbWFlby1vYmplY3QtYXJyYXkiOiB7
InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VU
ZXN0cy9Ecm9tYWVvL2Ryb21hZW8tb2JqZWN0LWFycmF5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVu
cyI6IHsiY3VycmVudCI6IFtbNC4yMjc5MTc4OTc0NjY2NDUsIDQuMjM1NDAyOTg1OTQ2NTc2NSwg
NC4yNTMyMDMzMzA3MzY1NTU1LCA0LjI1MzI4Mjc5NTgzOTY0OSwgNC4yNjE3MTg4OTk2Mjc5NDZd
LCBbNC4yNzIyNjU4MzQ0NzM4ODYsIDQuMjg4MzMwMTUxNDIxNTM2LCA0LjI5OTk2ODA5NzA4MDIy
MSwgNC4zMDAyNDQ5MDA1MDQ2MDIsIDQuMzA0MjgxNzkxMzUzODg5XSwgWzQuMjg2NDY1NTkzNTA0
MjQ2LCA0LjMwMzUxMTk3NDYyNDA3NCwgNC4zMDM4Mjk4Nzc5NzYwNDYsIDQuMzA3NjM1MTgyOTM3
MTkyLCA0LjMxMjE5MDc2MjYwNTcxOF0sIFs0LjI0NTkzOTUxMDM1NTA1OCwgNC4yNDk2MTY5NzEy
Mzc0NywgNC4yNzE0NjQwMTk5MTQwNTM0LCA0LjI3NTEyMzc1NTY1NDcxNTUsIDQuMjc5MTA0Njk3
MDY3MzA3XV19fX0sICJkcm9tYWVvLXN0cmluZy1iYXNlNjQiOiB7InVybCI6ICJodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21h
ZW8tc3RyaW5nLWJhc2U2NC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBb
WzEyOTMuNjYzNTkzNjM3MDIwOCwgMTI5OC4zMjg4Mzg1NDcyODUsIDEzMDMuMDczODk1MTUxMTg5
OCwgMTMwNi42MTE0Mzc3MzM4MzIyLCAxMzA3Ljk1MjMwNDY4MDU0ODJdLCBbMTI5Ny44NTM0MTI1
Njk3ODIsIDEzMDAuMTg1MTY1MjI5ODg1MSwgMTMwNC41MDkyMDYzMjE1Mzk1LCAxMzA4LjM2MDAx
NDIyOTgxMTQsIDEzMDkuODM2NTYwNjY3OTY5NV0sIFsxMjk1LjA1MTc4NjM1ODcxNTIsIDEyOTYu
MDIwNTQ0MjQyMjA2LCAxMjk4Ljg3OTgwNTk2NDc4NjMsIDEzMDYuMzE3MTAzNjIwNDc0NCwgMTMw
OS4wMTA4NTIxNjE1MzddLCBbMTI5OC4xMzMxODMxNzYyMzY4LCAxMzAwLjk1NDAyMjk4ODUwNTYs
IDEzMDMuNDIxMDI0MzU1MzAxLCAxMzEwLjMxNDg5MDU4ODg2MzEsIDEzMTEuNDA4Nzc1OTgxNTI0
M11dfX19LCAiZG9tLWF0dHIiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dz
ZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS1hdHRyLmh0bWwiLCAibWV0cmlj
cyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTIyLjA5NTIzNzg3NTIxNzI4LCAxMjIuNzQ1NTI0
NDIwMzY4OTgsIDEyMi45NTgyMzgwMTUyOTQxLCAxMjMuMDU3OTQ5MTg2MDY0MzIsIDEyMy40NDc1
OTU5Njk3NzU1Nl0sIFsxMjMuMTYyNjQxNjE1NTkyMjEsIDEyMy44Njk0MTEyMDg1NzAyNywgMTIz
Ljk3MTU4NTI3NTI5MDI0LCAxMjQuMTM3MjY2MzA0OTQ0MzYsIDEyNC4zMjIwNzUyODg4MjQ2OV0s
IFsxMjQuMzgyMDQ3NDk3OTcyMywgMTI1LjI1Nzc2NzQ5NjcxNzM0LCAxMjUuNTQ3MDc0NjI2MjY5
NDYsIDEyNS42NDExMDQzMDg1Mzg2MiwgMTI1LjY4NDU0NDE2NjA5NjddLCBbMTIwLjg3MTkzMzkw
NTc5NDQyLCAxMjEuNTE2MjAxMzMzNzE3NjcsIDEyMS44ODc3MjQ0NzQ3NjQ1MSwgMTI0Ljk1NDc3
NzAzOTQxNTk5LCAxMjUuMDcxMTk2NTU2NDA0NDddXX19fSwgImpzbGliLWV2ZW50LXByb3RvdHlw
ZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3Jt
YW5jZVRlc3RzL0Ryb21hZW8vanNsaWItZXZlbnQtcHJvdG90eXBlLmh0bWwiLCAibWV0cmljcyI6
IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMzk5Ljc1MjY4NTg4NjEwOTM2LCA0MDQuODQ4OTEwMzY4
NTU4OTYsIDQwNS4zMjQyODU4MDAxMTIzNiwgNDA2LjI2MDgyNDg3MjUxMzQ3LCA0MDcuNTM5NTE2
MTA0OTgyXSwgWzQwOC4zNzMyMjA1MjE3MTAzLCA0MTEuNTA1MDI0OTU4NzkyNywgNDEyLjYwMDY3
MDczNzY4MjMsIDQxMy43MTU4MTQxMjU5MzAyLCA0MTQuNTM1MjM3OTE4NDM5OF0sIFszODIuNjA5
MTg3MDMyMzU0NCwgMzg2LjA2MDM3NzE2MTM0ODc1LCAzODcuNDgzNjk2MDE1NzI3MzMsIDM4Ny41
NzMxNzczMzQ2ODMzLCAzODguMzk1NTc4MDkzMDI4M10sIFszODMuODQ2MjIwNjQ0OTcxOTQsIDM4
Ny40MDA2OTc2OTk0MzM5LCAzODkuNzU1NjQyNTAxNzgyNzUsIDM5MC4yNTMyNTYzODc0ODE2LCAz
OTIuMjI4NDMxNTQ5Mjg1MDZdXX19fSwgImpzbGliLWV2ZW50LWpxdWVyeSI6IHsidXJsIjogImh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21h
ZW8vanNsaWItZXZlbnQtanF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVu
dCI6IFtbMC4wMTQ4ODQwOTE4MjQ4OTEwNTcsIDAuMTA4NDk4Mjg5OTQ0NzM5NCwgMC4xMDg5ODMy
MTE2MzI2NjA1NiwgMC4xMDkxNTA0OTIyOTY5MDI1LCAwLjExMTg3MzYwOTcxMDk2NTVdLCBbMC4w
MjQ3MjYxMDg5NDQ2MjQ1MTQsIDAuMTQ2Njc2OTY0NDQ1NTUzNzUsIDAuMTQ3OTM2MjkyMDIzOTY1
MDgsIDAuMTQ4MTM0MzUyMjExNjQ2ODQsIDAuMTU5MTk0ODk4OTI2NzU4NV0sIFswLjAxNDU1Nzk4
MzM4MTExMDQyOCwgMC4xMDc1NDU3ODQ5MzM3MDI3MiwgMC4xMDc4OTQyNTQxMDE0NDU0MiwgMC4x
MDg3NTEyMTYxMjQ2Mjg3LCAwLjExMDg3MzQ1OTc0MTkzMTMyXSwgWzAuMDE4MjQxNTQxMTk3MzAw
MTcsIDAuMTE5MDI2MjgzNDU0NDg5NjUsIDAuMTE5NTk2NDYwNTIxNDE0NjgsIDAuMTIwNDE3NjI1
MTAxMzIyODcsIDAuMTI0OTQ2NTgyMjMwNDEyMjVdXX19fSwgImpzbGliLWF0dHItanF1ZXJ5Ijog
eyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNl
VGVzdHMvRHJvbWFlby9qc2xpYi1hdHRyLWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMi
OiB7ImN1cnJlbnQiOiBbWzI3OS4zOTM4Mzk0MzQ5NDEyNCwgMjgwLjc5MTcwMTY2MzA4MDUsIDI4
MS43Nzg5NTQzOTM3NzMxLCAyODIuNTQxNTIxODI5ODA0NjUsIDI4My40NDY0Nzc2MTg1NDQ2M10s
IFsyOTMuNzUwNjM2OTE4NzM5OTMsIDI5NS4wMjAzNzYyNDQ5Nzc5NywgMjk1LjYzMjExNjk3MzEw
MDk1LCAyOTYuNTAyNDY1Mjg1OTUyNSwgMjk3LjQ0MDU3MDY0OTE4OTZdLCBbMjk0Ljg5NjUzMjE3
ODM2OTksIDI5Ni4xNTU3NTMwMzk2NTYyLCAyOTcuNjE2MTgyODIzNDgsIDI5OC40NTkwNDExNzQ0
MjM1LCAyOTkuNzc4NzQyMjQ5NDEyMDZdLCBbMjgyLjgyOTM2MDUyOTk4MzksIDI4NS43OTAxODk2
ODAzMjIyNywgMjg2LjUzMjYzODExMDU1MjE3LCAyODcuNTQzMjcxNTk2MTk1MSwgMjg4LjMwMjcw
Mjg0NTAyMTI2XV19fX19fX0sICJidWlsZFRpbWUiOiAiMjAxMy0wNC0xOFQwNzo0Mzo0My40MTI2
MzciLCAiZGVzY3JpcHRpb24iOiAiV2l0aCBwYXRjaCIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6
IHsidGltZXN0YW1wIjogIjIwMTMtMDQtMTZUMTA6MDU6MjlaIiwgInJldmlzaW9uIjogIjE0ODUw
OCJ9fX0sIHsidGVzdHMiOiB7IkRyb21hZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjogeyJq
c2xpYi1tb2RpZnktcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9i
cm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1tb2RpZnktcHJvdG90
eXBlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTUxLjc1NzUzNDkw
MTM3MjA1LCAxNTMuOTQyODMxMjQ0NTk0LCAxNTQuMDgzMDIwODYzMDk1NjQsIDE1NC43ODE4NzE1
ODI2NDE0NiwgMTU1LjY3NjgwNDkxMjcwODc1XSwgWzE1My45MjUxNTI2MTE4NDY3MywgMTU0Ljg3
MjA4NzkyMzc4MzYsIDE1NS43NjY2NzEyMjMyOTA3LCAxNTYuMzIwNjU2MDM1NjEyNzMsIDE1Ny4w
MDg2ODg1NDY4MzU0Nl0sIFsxNTQuNzU2NzQ0MDAzMDIzMzMsIDE1NS41Nzg3NDU1MTk1MDk1LCAx
NTYuMDYzMDkxMDIwMzI3NjIsIDE1Ni40NzE1MjQ1MzM0MjQ5NywgMTU3LjE3ODI1MDkxOTU0NTdd
LCBbMTQ5LjU1NDM4MzA3NzQ5MjcsIDE1MC40ODY2MzgzODg0MTgzOCwgMTUxLjQ4MjkxODU2ODc3
OCwgMTUxLjkxNzc2NDQyMTU5ODYzLCAxNTIuNjY0NzQ3ODQ3Nzg3OV1dfX19LCAianNsaWItc3R5
bGUtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3Ry
dW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1zdHlsZS1wcm90b3R5cGUuaHRtbCIs
ICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxNTIuMDEyMDU5OTY5NjY5NSwgMTUy
LjU2Nzc5NjIxNTU5NTI1LCAxNTMuNDIyNjE3MTIzMTcwODgsIDE1My43NTU0ODI3Mjk3NTg5Nywg
MTU0LjA0NDI1ODIyMDMyNjU4XSwgWzE1MS4zMzg2MjE2NzIzNjIxNywgMTUyLjU3MzgwMjMzNzgw
OTk4LCAxNTMuMDA4ODI0NDcxMjY2MDgsIDE1My42NjY1MTk0MjY5Njk4NCwgMTU0LjAyMzY5Nzg3
OTg5NjM2XSwgWzE0OS44MTQzODM4NDEwNzc0NCwgMTUwLjgxNDkxNTMwNjU4MzYzLCAxNTEuMjcz
ODA5NjQzNzQ2OCwgMTUxLjcwNTIxMDA3Njc2ODg1LCAxNTIuMTI2ODU3Mjc2Mzc2ODJdLCBbMTQ4
LjE5NzU3NjQ4MjMzNTQ1LCAxNDguNTIyMzUzMTg2MzYzMTUsIDE0OC43MzcyOTg3MTMzNjk3Nywg
MTQ5LjE3Nzg4NjA3NDc5MjgsIDE0OS40NzAwODUzNDY0NDczOF1dfX19LCAiZG9tLW1vZGlmeSI6
IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5j
ZVRlc3RzL0Ryb21hZW8vZG9tLW1vZGlmeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1
cnJlbnQiOiBbWzUzLjY1OTY1MjQ4NzgwNzU4NCwgNTQuNzc4MTQ0MjgyMDgsIDU1LjQxNDgxMDU4
NzA3ODgwNCwgNTYuNjIzOTc4ODAwNDQ3NjcsIDU3LjU2MTMwMDI1MDAzNzQ3XSwgWzUzLjU2Mjg2
ODYxOTY1NDk4NSwgNTQuMjE5MzExNjc1NTU4Nzg1LCA1NC43NzczMDI2Njk5MDA3MywgNTYuNDE1
OTg4NDcwMjMzMDQsIDU3LjQ2MzIxMjU2NjQ3NDcxXSwgWzU0LjA0ODkxNDM4NjY2NTc5LCA1NC40
NzMzOTQyODY3OTkzNTUsIDU1LjIxODg0NDQ5OTA3NTU0LCA1Ni4yNDI5NzU2MTQ0MjcyOCwgNTcu
MDI2NjU0NTQzNzY3NTA2XSwgWzUzLjY2NzU5NDEyOTI3OTE5LCA1NC45MDM4OTI5NTA3MjczOSwg
NTUuNTM1MTYwNzUzNjI3NjE1LCA1Ni41NTc0MTYzMjAyOTc2NSwgNTcuNDIzMjM2MTM3MDk0Njdd
XX19fSwgImpzbGliLXN0eWxlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtanF1
ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMS4wNDk2OTc4OTk4
MzQwNzk4LCAxLjA1MTkwMTUyMDkyNzc0ODcsIDEuMDUyMzUyNzM3ODEwMzQ5NCwgMS4wNTQ5NTA0
NTQzNzU1MzQ4LCAxLjA1NTczMTI1MTAxNTA1NTRdLCBbMS4wNDMzNjI3OTA2MzczNDkzLCAxLjA0
OTYwODY3NzI4NjQzNjgsIDEuMDUyODIzNTUxODAzNzY0MywgMS4wNTY2Mzg2ODY3MjU0MTcyLCAx
LjA1OTM2NTcyNTE5NjkxOTddLCBbMS4wMzA4MDcwOTA3MDgwNzIsIDEuMDQ4NDQ5MTExMTU1MzAz
NiwgMS4wNTE4NzA0MTA2MDA4MywgMS4wNTUwMTQxNDY1NDc2MTI2LCAxLjA1NzMxNDcyNzQ0NTMz
NTJdLCBbMS4wNDEyNTMxOTU2MDE5NTQ4LCAxLjA0NDI1ODE5MjM2OTQ3MDMsIDEuMDQ3NTU3MzQ4
NDgxODY3NywgMS4wNTMxNjgxMTM0MzIwNDQ1LCAxLjA1NTIwMzM5MDQ4ODYxM11dfX19LCAiZHJv
bWFlby1vYmplY3QtcmVnZXhwIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9iamVjdC1yZWdleHAu
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0Ljk5NjQwNjYwNjExMTg1
NSwgNS4wMDgyOTkyNDIyNzQ3MzQ2LCA1LjAxODAyMzM4NDgzMzkzMywgNS4wMjQ0NDM2OTgwNzQ1
MDQsIDUuMDMxMjIyNzIzNzI5MjAxXSwgWzQuOTg4MTgyNzg1MDkzMDg2LCA1LjAwMTkyNzc1MTE3
Mzk1MzUsIDUuMDE3NzIxNjEzNzgwNDQsIDUuMDI2MTA5MTk2ODc3NTczLCA1LjAzMDk0NTU1NTQy
NzQ5Nl0sIFs0Ljk5NDU5Njc3NTgzMjIyNiwgNS4wMTM2MDA1ODk0MTQxODcsIDUuMDIyNTAyNTYy
NjQyNzk0LCA1LjAyODE2NzU1OTY3MDE3MSwgNS4wMzEzODQ1NTA1MTcwODddLCBbNC45OTAxNjAz
ODUwOTg2MzIsIDUuMDAwMjAwMjY4MTY3OTM2LCA1LjAxMjkyNDUzMzM3OTE5MSwgNS4wMjM2MDg4
NTgwODc5NjgsIDUuMDI2MDU0MTgxOTYwMzMxNV1dfX19LCAianNsaWItZXZlbnQtanF1ZXJ5Ijog
eyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNl
VGVzdHMvRHJvbWFlby9qc2xpYi1ldmVudC1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5z
IjogeyJjdXJyZW50IjogW1swLjAxNTAyNTQzMDg1NDIyOTc0NSwgMC4xMDc4OTAzOTAwNzkzMjE4
NiwgMC4xMDgwNTM3ODgyODUxNjgwOCwgMC4xMDgzMTE4NDQ5MjI5MTc4MywgMC4xMjU3MTM1MzA5
NjAwMTM4Nl0sIFswLjAxNTQ2NDgyODI0MjgzMzkyMywgMC4xMDkxNjQ4Nzc0MjU5MzYzNSwgMC4x
MTAzNzAxODIwNDI4MzE3NSwgMC4xMTA2Mzk0MjExNTQ3MzIyNCwgMC4xMTcwNDk4NzQxNTUwNTc3
N10sIFswLjAxOTA5OTI5MjQxNDMzMTY0NiwgMC4xMjIyNzE0MjUyNjk3NDg5MywgMC4xMjI1MjY3
NTM1MjQ3NjYwMSwgMC4xMjM0OTU1MDk0MDgzNzkzMiwgMC4xMzAzMDI2ODI4MDY1NjY0OF0sIFsw
LjAxMzY4NzIxMzc5NjQyNjczOSwgMC4xMDM2OTcyOTA3NzM1NTU0MywgMC4xMDM4MTY3NzMyMzAz
NTk1NSwgMC4xMDM5NTcxNTgyMjgwMjg2MiwgMC4xMDQ3NzQ2OTEwNzQ0MTc0M11dfX19LCAiZHJv
bWFlby1vYmplY3Qtc3RyaW5nIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93
c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9iamVjdC1zdHJpbmcu
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s2NS44MTE5OTYzODAxODgw
OCwgNjYuMjIyNjE0NjgyNDE5NjIsIDY2LjQ1MDczODg2MjU0MTUzLCA2Ni44NzcyMjY5MjM5MTA5
NCwgNjcuMzM4MTUxNzIzNTkyNDldLCBbNjguMzA4NDUwOTg0NzA5NTEsIDY4LjU3Mjg4NTIyNDM2
MDc5LCA2OC44MTA5NDQ4MTY4ODUwMSwgNjkuMDc5NDgzNjI5NTgyMjEsIDY5LjYzNjUzMzM4NTgy
OTc0XSwgWzcwLjk2Mzc2MzAxNTk1MDQzLCA3MS41Mjg0ODA0NDQ4MzQ1NiwgNzEuODQ3NjA2ODI0
MzMyNzEsIDcyLjEzNzg4NjgxOTA3ODU5LCA3Mi43MzM4NjgxMTgxNTE0XSwgWzY4LjA3MTQ1NjE2
ODgwOTAxLCA2OC4zMDIxNzA2NTEwMTEyNCwgNjguNjUzOTAzMTcwMDQ2MTYsIDY4Ljk1NjM5NzE2
NjQ3NzgsIDY5LjQ4NjE2NDI5OTEyMDQ2XV19fX0sICJkb20tcXVlcnkiOiB7InVybCI6ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVv
L2RvbS1xdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE0NS40
ODc4NjI4MDQ0NTU5NCwgMTQ2LjgzNjgzMTI1MDk0NDc1LCAxNDcuMDA2NTUyMTEyOTQxOTMsIDE0
Ny4xNzYzNTE5OTgwMTU3OCwgMTQ3LjMxOTU1NjAwNjAwNzMzXSwgWzIyMC43MTcxMzUyMDk2MTgx
NiwgMjIxLjg0MDQ4MjY4MzA3NzYsIDIyMi4zMDI0NzMzMDIzMDg0NCwgMjIyLjMyODgwMDQ3Mzk1
Mjc4LCAyMjIuNzExNTY0OTczNjkxMDhdLCBbMjA2LjQyMjE4MDM2NzU4MjQzLCAyMDguODMzMDk2
MTcwNTU5OCwgMjA5LjUyOTUxMzczOTUxMDYsIDIwOS42ODYzMDU2MTI3Nzc2NiwgMjEwLjAxMjk3
OTk2MDUxMzY2XSwgWzIxMS44OTAxNDYwNzI4NTI1NiwgMjEzLjMzMDcxNTMyOTQwNTkzLCAyMTMu
NjY0NTEyMjU0Mjk1NTIsIDIxMy44Njc1Mzc5MjYxMjMzNiwgMjE0LjAwNTk5MzMxNTM1MjY3XV19
fX0sICJqc2xpYi1hdHRyLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItYXR0ci1wcm90
b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1szNzcuMjA1NjQz
NTgyMDYxLCAzODAuNDA4ODYyNTA4ODE4MjMsIDM4MC44MjY2OTYwMTA4NjA4NywgMzgxLjU1NDM3
NDg4ODM1NTI2LCAzODIuNDQ5NzcwNjQ2NjA4NF0sIFszODcuMDQ0OTAzMzQxNTM1NywgMzg5LjU0
MzAyNTg4OTIyNzA3LCAzOTAuMTkwMjk0ODI1NjAzMzYsIDM5MC45NDczODAwMTkwNDM3NSwgMzkx
LjgxNTk4NTEzNzgxN10sIFszOTkuMTQ1OTMxNzgzMTgzNywgNDAyLjE1NzAyMzY2Nzg4NzY0LCA0
MDIuOTAxODY4NDU0NDUzLCA0MDMuNDQzNzUyODExOTQxNywgNDAzLjkwNzExMDg4NzIzODg0XSwg
WzM2Ny43NzY0NzE0NDg4MDUzLCAzNzAuNjU1MTM2NjY3NzQwMzUsIDM3MS4zNTcwODAwNDE3NTMs
IDM3MS42OTg0MjgyNTQ4NTAyLCAzNzIuMzI0OTMzMjQ0MDE1M11dfX19LCAianNsaWItdHJhdmVy
c2UtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3Ry
dW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi10cmF2ZXJzZS1wcm90b3R5cGUuaHRt
bCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sxOTMuNzE3MzkwMTU5OTQ3OCwg
MTk0LjMyMTQ1MTM3NjAzNDIsIDE5NC41NjEzNzIzOTU3MTcxLCAxOTQuNzM2NDM4NjUxMTY2OTQs
IDE5NC45MzQ1OTk3NTUwNjc0XSwgWzE5My42NjUzOTEwOTg5MTI1MiwgMTk0LjYxMDc2Njk3OTM5
OTksIDE5NS4wOTM4NzQ4MDYyODAxLCAxOTUuNjg3ODUwMTUzOTUwMTQsIDE5NS45ODQ2ODk0NTkz
Njk0Nl0sIFsyMDcuODkxMjczODkzODU1NTMsIDIwOC42MjU0Mzg5MTc0MDQ5NSwgMjA4Ljg1MzIy
OTE4NjI1MTcyLCAyMDkuMTk3NDQxNjMyNDk2MjYsIDIwOS40ODM1NzQzNDEyNDc5M10sIFsxOTMu
MjgxNjYxMTYzOTk5OTgsIDE5My45NDAyNDcyMDk3MDI2OCwgMTk0LjYwMDUwODQ2OTMxOTM1LCAx
OTQuODEyMjg0MTQ2NTY0NywgMTk1LjI3NjQ4OTAxODU3OF1dfX19LCAianNsaWItdHJhdmVyc2Ut
anF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1Bl
cmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi10cmF2ZXJzZS1qcXVlcnkuaHRtbCIsICJtZXRy
aWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syOS42NjUzNjc1MDAyOTQ5MjcsIDI5LjcxNDI0
NDU0NTA5MDgwNywgMjkuODA4NzE3MzI0MDcwODgsIDI5LjgzNzkxNTA0NjUwMTg4NCwgMjkuODg5
NTkxOTM4MjgxMDg2XSwgWzI5LjQzNDUyODA2MjkyNDYwNiwgMjkuNTA1MDYzMTg3OTEzNDA3LCAy
OS41NTI1OTcxMTgyNjY5MTcsIDI5LjYyMzExOTQ3NjU5MjMzMywgMjkuNjk0NDUwMzY4MTI5MzU2
XSwgWzI5LjM2MzYyNzQ0Njk1NTAxLCAyOS40NDg4NjEyMTY0MDMyNDgsIDI5LjU0MDMwMzMyMDE2
MTI4MiwgMjkuNTc4MTM5MzQ4NTY2OTU3LCAyOS42MTcwNTc0NjM3ODg2NF0sIFsyOS42NDUyMjY3
NTA1MDIwMywgMjkuNzI0NzI2Nzk2NTM4NzY0LCAyOS43NTg0NzQ3NDI3ODQ4MTYsIDI5Ljc5NDA5
MzY3NDAyNzgsIDI5Ljg1ODYzMjYzMjQ3MTY5M11dfX19LCAiZHJvbWFlby0zZC1jdWJlIjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvRHJvbWFlby9kcm9tYWVvLTNkLWN1YmUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJj
dXJyZW50IjogW1szNzMxLjAsIDM3ODQuMCwgMzc5Mi4wMDAwMDAwMDAwMDA1LCAzODA2Ljk5OTk5
OTk5OTk5OTUsIDM4MTAuMF0sIFszNzMyLjAsIDM3OTAuMCwgMzc5NC4wLCAzNzk5LjAsIDM4MDQu
MF0sIFszNzUwLjAsIDM3OTkuMCwgMzgxMC4wLCAzODE4LjAsIDM4MjcuMDAwMDAwMDAwMDAwNV0s
IFszNzQ1LjAsIDM3OTkuMCwgMzgwNi4wLCAzODI0Ljk5OTk5OTk5OTk5OTUsIDM4MjcuOTk5OTk5
OTk5OTk5NV1dfX19LCAiZHJvbWFlby1jb3JlLWV2YWwiOiB7InVybCI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8t
Y29yZS1ldmFsLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjM1LjA4
OTE1MTQ1MDA1MzcsIDIzNi4yODcyOTczMzcwMjI4NCwgMjM2LjMxMzM3MjMxMjUzNjEsIDIzNi43
ODE4NjY2NjY2NjY2NCwgMjM3LjY5MTAwMTY5Nzc5Mjg3XSwgWzIzNC40MDIzMjg2MDUxODgyNSwg
MjM2Ljc5MTU5OTg0OTg3NTUyLCAyMzYuOTkyNzM5MjQwMTE3MywgMjM3LjIxNjQwNzE5MTk1Njgy
LCAyMzcuMzI2OTg1MzM2OTM3NF0sIFsyMzMuNjExMTYwNjI1MTIyMTUsIDIzNS40Nzk0NDYwNDUy
NjY5LCAyMzUuOTQ2NDk1NDUyMTEzNDIsIDIzNi43MjQ3NTQ4MTIyNTMwMiwgMjM3LjE2OTI3MDAw
MzE4NzhdLCBbMjM1LjQ3OTQ0NjA0NTI2NjksIDIzNi4yNjkzNjgwOTE5NzYwMiwgMjM2LjY4OTY0
ODEwODY3MjE1LCAyMzYuNzM3ODUzNzEwNjI0NjUsIDIzNy40ODA1NTY4OTUyMzU2XV19fX0sICJk
cm9tYWVvLW9iamVjdC1hcnJheSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1vYmplY3QtYXJyYXku
aHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s0LjI2ODk1MzI0NjA5NzY4
NCwgNC4yOTg0MTM3NDAzNDg1MDcsIDQuMzAyMTM5MjM0OTM1NTY4LCA0LjMwNTkyOTI0MzY5OTcz
NCwgNC4zMjQ4ODQyNDQ2MzE0Nzk1XSwgWzQuMjQ4NzA0MDIzNTExNjcsIDQuMjc2NTk3MjQzNTU4
NzA5LCA0LjI4NDU0ODU0OTk1NDc5NCwgNC4yODgyNzUwMzQwODQ3OSwgNC4yODkyNTc1MTcyNDA0
NTVdLCBbNC4xODU3ODg4MjE5NzkyNzQ1LCA0LjE5MTU1NDAzNTk3NDM5MSwgNC4yMTI4MDQ2MDk4
NDk0MjcsIDQuMjEyODU0NDgwMzg1OTk1LCA0LjIxNjY5MDI2NDA0NDU5MV0sIFs0LjI3MTc1MTQy
ODc5NjMwNCwgNC4yNzkyMzAxNjIxODY4NzksIDQuMjg2ODUwMjc0ODU3NjM5LCA0LjI4NzE5NDgy
MTQzOTY5OCwgNC4zMDI1NDg0NjE5NTA4NjA1XV19fX0sICJkcm9tYWVvLXN0cmluZy1iYXNlNjQi
OiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFu
Y2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tc3RyaW5nLWJhc2U2NC5odG1sIiwgIm1ldHJpY3MiOiB7
IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEyOTYuMjk5NDU4NDgzNzU0NSwgMTI5Ny43NDAyMTU3MzM2
ODc0LCAxMzA0Ljk0OTA3OTg2NDIxMywgMTMwNi41Nzc4NDkxMTcxNzUsIDEzMTIuMTEwNjc3NTQ1
MjI4OF0sIFsxMjk4LjYxNzMyMzk2OTAyNTgsIDEzMDEuOTIyMTUyNDY2MzY3NiwgMTMwNC4yNDcw
NDgzMDA1MzY4LCAxMzA5LjEzNTk0MzA2MDQ5ODIsIDEzMDkuODA2NTA4OTgwOTcxXSwgWzEyOTku
NjU2ODg1Njg4NTY4OCwgMTMwMi44MDczMTk2OTg2MDA2LCAxMzA2LjIwNTI1NjU3MDcxMzMsIDEz
MTEuMTM1NTk2MjMyNDUwNiwgMTMxMy44MTgwNTI4NDYyNDk0XSwgWzEyOTkuMTQ5NTk0OTU5NDk1
NywgMTMwMy40NTU3ODQ3NTMzNjMsIDEzMDkuMTg0MTY4MzAwOTQ0NywgMTMxMC42ODA4NDcyNzY2
MTA4LCAxMzEzLjgxODA1Mjg0NjI0OTRdXX19fSwgImRvbS1hdHRyIjogeyJ1cmwiOiAiaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9k
b20tYXR0ci5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEyNS4zNjA5
NzMxMjI2NzI1MywgMTI1LjY1OTE5ODg1Nzc4ODQsIDEyNi4wMzI1MTQ2MjYzMDkwNywgMTI2LjE3
ODI0MTM3MTE2MDU3LCAxMjYuMzI3NzM2MDkzMDk1MTRdLCBbMTIzLjkyMzAwNjI4NjAxMzMsIDEy
NC41ODU5Njg1NDIyNDMzOCwgMTI0LjY2NjQwNTkwNTM1MDgsIDEyNS4yMTc1ODcxMDEzNzc3LCAx
MjUuMzYyNzczMTIxNDM4MThdLCBbMTIzLjUxMTYyODg4NjUwMDMsIDEyNC41Njk0MDk5MTM3Nzc5
NywgMTI1LjM3MDA5Mzg5ODMwMTAxLCAxMjUuNjM4NTQzMzM0NzYyMzUsIDEyNS44MzI2NTAxOTU4
Nzg1XSwgWzEyNC4xODY5NTkxOTQ2MDg1LCAxMjUuNDUwNjAyMDg5MTUyNzQsIDEyNS42MDIxMjY5
MTI4NTc3MywgMTI1Ljc2NzMyNzMxNDI2MTAyLCAxMjUuOTkzODk4MTMzOTQzNjJdXX19fSwgImpz
bGliLWV2ZW50LXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItZXZlbnQtcHJvdG90eXBl
Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMzkyLjAwNTk2MzY5OTY4
MDMsIDM5Ni40NDEwNjU5MjE4MzkyLCAzOTYuNjg0NjY3NzYyMzg1NiwgMzk2Ljk4NjM0NzA0ODAz
NTQsIDM5Ny40MTY3ODY4MDAyODI1XSwgWzM4My43MTMzODI1OTU0NTI0LCAzODkuNjYxNjU2MzE1
MjEyOCwgMzkxLjM1MzgwMTI4OTkyMzksIDM5Mi4zMDY3NjQ3Njk5MzgxLCAzOTMuMzgxMzQ3NDAw
MTM0XSwgWzM2MC43NzAyNTU2MDg1MjQ4NSwgMzY0Ljk1MTIwMTE1NjMxNzQsIDM2NS42ODE5NTU4
NjMyNjI2NiwgMzY2LjA3NzQ4MzczNTY2NywgMzY2LjMyMTI0MzUyMzMxNl0sIFszODIuNTYxNjY3
MTM1OTA5NywgMzg2LjYzODE1OTE3MjU0MDIsIDM4Ny4xNDI2ODAzNDEwOTQ0MywgMzg4LjI3ODMx
MTAyNzY1MDYsIDM4OS4wMDY2NDY5MDY5ODI0XV19fX0sICJkb20tdHJhdmVyc2UiOiB7InVybCI6
ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9E
cm9tYWVvL2RvbS10cmF2ZXJzZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQi
OiBbWzE4My41NjM2NjQwNzA3ODYsIDE4My44Nzg4NTQxMTU5MDI2NywgMTg0LjkyMDc2MjQ1NzY3
MDcyLCAxODUuMTkwMjU5NDIyNDUxMTMsIDE4NS41ODUzMDU3OTkwNzc5M10sIFsxNzcuODkyNzA0
MjcyNTAxODcsIDE3OC42MzUxNzgzOTQyNzUwNCwgMTgwLjIyMTEzNjg5NzUxOTUzLCAxODAuNDY4
NjYyNTA1NzIxNjgsIDE4MC41Nzg5MTI4NTA0NzkwNF0sIFsxNzYuNTUwMDY0NTA0MjM4NTIsIDE3
Ni43OTE4NTAxMDk4MTg1NywgMTc3LjUzNDgxMzQ3NTM4OTgsIDE3Ny43Mzc4NTkyOTgwNjE2Niwg
MTc3Ljg3NDY2NDQ3NDgzOTI4XSwgWzE4MC4xMzk2NDIyODUyNTk1NSwgMTgwLjc0NDk0ODUzODMz
NDM3LCAxODIuMzY5NDg0NjA0NjgzMjQsIDE4Mi43NjE5OTAxOTExNzU1LCAxODMuMDM3OTQxMjQ4
MTg1MjZdXX19fSwgImpzbGliLWF0dHItanF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1hdHRy
LWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzI4OS42Njgx
NTcwMDA0ODMsIDI5MC40NTE0NjA5NjM0MDE1MywgMjkyLjAyODk0MTM0MDM1NDE1LCAyOTMuOTQ3
MjA5NjMxODU1OTcsIDI5NC43MDk2ODQ2NDA4OTM1Nl0sIFsyNzIuOTk5NTk0NTAwNzY1MywgMjc0
LjQyNTIwNTI2NzIxNzg1LCAyNzYuMjUzMTU0MjkyNTk3MiwgMjc3LjExODM1NDAzMjM2MzgsIDI3
OC41NzkwODAzNjI3MzE5M10sIFsyODAuNDM0MTM5NzU0MDA2MSwgMjgzLjc3ODIxNTcxNzczOTcs
IDI4NC4zMzY1NjcyNTQ2OTU2NCwgMjg1LjQ0MjE0NzkyOTcyOTYsIDI4NS44OTc1MTUyNjEyMjY4
XSwgWzI3Ny4yNjg0MTkwNTc3NTkzMywgMjc5LjE5MTYyNjk0MDY0NDI2LCAyODAuMDIxMDc4NDU0
NDMsIDI4MC42MDc2MDcyMTcyMjYzLCAyODIuMTI3MTkxNzM3MjAxMjZdXX19fX19fSwgImRlc2Ny
aXB0aW9uIjogIldpdGggcGF0Y2giLCAiYnVpbGRUaW1lIjogIjIwMTMtMDQtMThUMDc6NDM6NDMu
NDEyNjM3IiwgInJldmlzaW9ucyI6IHsiV2ViS2l0IjogeyJ0aW1lc3RhbXAiOiAiMjAxMy0wNC0x
NlQxMDowNToyOVoiLCAicmV2aXNpb24iOiAiMTQ4NTA4In19fSwgeyJ0ZXN0cyI6IHsiRHJvbWFl
byI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3Jt
YW5jZVRlc3RzL0Ryb21hZW8iLCAidGVzdHMiOiB7ImpzbGliLW1vZGlmeS1wcm90b3R5cGUiOiB7
InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VU
ZXN0cy9Ecm9tYWVvL2pzbGliLW1vZGlmeS1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1sxNTEuNDQ4MzM5OTk5OTgyMjcsIDE1Mi45OTcwMDMxODQ2OTI1
NywgMTUzLjMyODQ5NzY4NDMzMTEzLCAxNTMuOTU4OTMyMTE2MzM2NzQsIDE1NC4yMjkxOTg3MTQz
NjQzNF0sIFsxNTIuNzc2NzYyNDg5NTE3ODQsIDE1NC42ODgxMDQwMjU2NTE4MiwgMTU0Ljk3MDE5
MTI1Njg0NjAyLCAxNTUuMjYzMzQxNzc1NzA1MywgMTU2LjA4MDMyMjg2ODYxMzQ1XSwgWzE0OS44
MzI2OTcyNDc2MTk0OCwgMTUxLjU0ODAwMTE2ODQwMDgsIDE1Mi4wMzE5NjM2NzM5NDYyOCwgMTUy
LjQ4MTIyNzM2NjE3NjQsIDE1Mi44Njc1NDg0NzkxNTIxNl0sIFsxNTEuMjMwMTg3MDU3NDQzMjYs
IDE1My4zMzcyOTM3MTM3Mjk3NCwgMTU0LjI1OTg3MjEzMzUzMDE0LCAxNTQuNTUzODc4NTUwMDgy
NCwgMTU1LjU0MTEyODc3NDg0NTc2XV19fX0sICJkcm9tYWVvLTNkLWN1YmUiOiB7InVybCI6ICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9t
YWVvL2Ryb21hZW8tM2QtY3ViZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQi
OiBbWzM3NzUuMCwgMzgzMC4wLCAzODM5LjAsIDM4NDUuOTk5OTk5OTk5OTk5NSwgMzg0Ny4wMDAw
MDAwMDAwMDA1XSwgWzM3NjkuMDAwMDAwMDAwMDAwNSwgMzgwNi45OTk5OTk5OTk5OTk1LCAzODE0
LjAsIDM4NDAuMCwgMzg0My45OTk5OTk5OTk5OTk1XSwgWzM3MTQuMCwgMzc5MC4wLCAzNzk1LjAw
MDAwMDAwMDAwMDUsIDM3OTUuMDAwMDAwMDAwMDAwNSwgMzc5Ni4wMDAwMDAwMDAwMDA1XSwgWzM3
NjYuMDAwMDAwMDAwMDAwNSwgMzgyMS4wMDAwMDAwMDAwMDA1LCAzODM3LjAsIDM4NDMuOTk5OTk5
OTk5OTk5NSwgMzg0Ny4wMDAwMDAwMDAwMDA1XV19fX0sICJkb20tbW9kaWZ5IjogeyJ1cmwiOiAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJv
bWFlby9kb20tbW9kaWZ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtb
NTQuMDk4NjY5NDQwMjYyNDUsIDU0LjcxODUxMTgyOTI3OTgwNSwgNTUuMTgzMTE0MjI0MDQ4MzEs
IDU2LjM5OTM0NTA5MzM4MzQsIDU2Ljg1MTc2MDk3MTQyMjldLCBbNTMuMzA3OTU1Mzc2MjY5Nzgs
IDUzLjk1Mzc4ODk1NDEyMjE0NiwgNTQuODExNDY0NjUzNTgxNjUsIDU1LjU4MTk4Mjc4NjQ3NTc4
NCwgNTYuMTM2NjY0OTU2Mzc1NjI1XSwgWzU0LjY0MTcxMzk2MjYzMTU5LCA1NS4zMjQwNjMxMDIx
MzU5OTUsIDU1LjcxNzA0NTYwODIyMDUxLCA1Ni44NTE5ODE5ODI0NTI2NSwgNTcuNDEzODU0NzQ1
MzM4Nl0sIFs1My4wNzQzMzgzMzIzNDg3MywgNTQuMTE2Nzk1MDAyMjUxOTksIDU1LjA5ODY1NDUz
MTUyMDM2LCA1Ni4wMDE4MjkzODkzNzk5ODUsIDU2Ljc0OTc5NzcyODc5MjEyNF1dfX19LCAiZHJv
bWFlby1jb3JlLWV2YWwiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tY29yZS1ldmFsLmh0bWwiLCAi
bWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjM0LjU1NTQyODU2NDA5MzgsIDIzNi4w
MjQ3MTIwNTc1NDA0NiwgMjM2Ljc5MTU5OTg0OTg3NTUyLCAyMzYuODU3ODYyOTI3MzcwNjYsIDIz
Ny4yNjA3MDkyNjgyNTg4Nl0sIFsyMzMuODA5NDIxODQxNTQxNzYsIDIzNC44MTA4OTA2MjkwNzc0
OCwgMjM1Ljk0MjA5NjIyMTQ4NTM0LCAyMzYuMjMwMDc0Mzg4OTQ3OSwgMjM2Ljc5ODY1NDkzOTc5
NDA2XSwgWzIzNS4xMjg5MzcwNDYyMDI0NSwgMjM2LjQwMTA5OTE5MzQ4NDg3LCAyMzcuMzY2NjU4
MTU3MTMyMDQsIDIzNy40MzY5NzU4MzgzMjY4NCwgMjM3Ljc3OTA5MDc3MjQwMDgyXSwgWzIzNC42
Njc0MzkxMjg0MDU2OCwgMjM2LjEzNjc4ODY4MzYzNDksIDIzNi4zNTk3MzAzNTI3Nzc1OCwgMjM3
LjMyOTIyOTEyMjA1NTY2LCAyMzcuOTE3MzI2NzE3ODc2N11dfX19LCAianNsaWItc3R5bGUtanF1
ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZv
cm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1zdHlsZS1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjog
eyJSdW5zIjogeyJjdXJyZW50IjogW1sxLjA0NDU3MDc3ODAyNTUwMzYsIDEuMDQ5NzUwOTU5NzE5
NTcxNiwgMS4wNTMwODA3ODkzOTgwOTExLCAxLjA1NDk0OTYwMjUyMDAzOTMsIDEuMDU4NDE1MTkw
MjQ4Mzc0NV0sIFsxLjA0NDI5MDE4MzQ2MDM5NTcsIDEuMDUwNjkxMzI4MzIyOTQ1MywgMS4wNTI2
MTE3MDk5MzU4MDU5LCAxLjA1MzgzNzQxNTk2Njg0NzMsIDEuMDU0OTgwOTIyNzExNjA1XSwgWzEu
MDQxOTQ4MDYxMDU2OTMyLCAxLjA0ODI5MjAyNjQyNzc5NzUsIDEuMDUyNDQxNzcyMzg3OTEsIDEu
MDU3MjgwNDg4MDU0Mzc3NiwgMS4wNjE0MTU5NzcyMTI0MTE3XSwgWzEuMDUyNjM0NTYwMzQyNjEz
LCAxLjA1NzI4NDM1NDY4MDU3MDYsIDEuMDU4MTEyNDI0MDQ0NTAwOCwgMS4wNjAwNTY4ODMxNDQ0
Nzg4LCAxLjA2MDk0OTIxOTA5ODkzNTFdXX19fSwgImRyb21hZW8tb2JqZWN0LXJlZ2V4cCI6IHsi
dXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRl
c3RzL0Ryb21hZW8vZHJvbWFlby1vYmplY3QtcmVnZXhwLmh0bWwiLCAibWV0cmljcyI6IHsiUnVu
cyI6IHsiY3VycmVudCI6IFtbNC45OTM1MDI1OTU2MDUxMzYsIDUuMDA4NzY2MTQ3MTQ3Mjg2LCA1
LjAxNjk0MDAzMTE5MjQ1NywgNS4wMjE1NzI3NzYyMzM4MDMsIDUuMDI3NjE3ODIxNDMwNTE4NV0s
IFs1LjAwMjExNTk5MjE5ODc3OCwgNS4wMjc3ODUxMDM2NzM1ODcsIDUuMDMxNTE5NjA3OTM1MTgy
NSwgNS4wMzg0NjQ4MzcwNjU3NzcsIDUuMDQ0NTEyNTM1NDc1Njg5XSwgWzQuOTg3MDA2NzE4ODIy
MTk0LCA1LjAxNTc1OTY5MDg4MjIzMSwgNS4wMjU2NzkyODAwODU3MjU1LCA1LjAyOTYxMzY1NzE5
NjQ4NCwgNS4wMzY3MTY1MDM3NTE0MzldLCBbNS4wMDI4OTI2ODcwMjAyMzIsIDUuMDE0MDkxNTM3
MjgzODI1LCA1LjAyNTMxODc3OTM3NjM3LCA1LjAzMTczOTY2MzE4NTAyNSwgNS4wMzY2MTgwMDcx
MzM2NDVdXX19fSwgImRyb21hZW8tb2JqZWN0LXN0cmluZyI6IHsidXJsIjogImh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFl
by1vYmplY3Qtc3RyaW5nLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtb
NjUuMjU5OTg5NTc0ODE0NDEsIDY1LjUwMTYyODcwMjczOTk4LCA2NS43NjAwNzIyNzI5MTYyOCwg
NjUuOTY0ODA2NDc0ODY3MjYsIDY2LjUyODEzMzc3Njk2ODUzXSwgWzY2LjI4MDY4NjIzNzgwMzcy
LCA2Ni41MDY3MTMwOTI1NDM3NSwgNjYuNzQzMjAzMzM4MzQwNDksIDY2Ljg3MDQ1NzE1OTU5NDQ1
LCA2Ny41ODg1NDk3NTU3OTc4XSwgWzY2LjU5NzUyOTY5OTgzOTA5LCA2Ni44NzMxNDA5ODgzODY1
NCwgNjcuMzMxMDk2OTQ3NDk4NTgsIDY3LjU0NzY5MDg2MTQ4ODQ2LCA2OC4wNjEzNTU3NTE4NDM2
OV0sIFs2OC44ODk4MzA4MDg4MTkxOCwgNjkuMTAxMDQ0NjQwNzY3NzEsIDY5LjQ4NjA1MDQ1NTAw
Mzc2LCA2OS43OTY1MTQ1MTIyNTQzNSwgNzAuMzI2NDI2OTUwMDIzNTJdXX19fSwgImRvbS1xdWVy
eSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3Jt
YW5jZVRlc3RzL0Ryb21hZW8vZG9tLXF1ZXJ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsi
Y3VycmVudCI6IFtbMjE5LjUyOTA2OTU2OTgxNTE2LCAyMjAuOTUyNDM5ODc1MTE4NSwgMjIxLjA3
MTE1MjU1MTgwMTczLCAyMjEuNzM0MzM5OTI5NTM4MTIsIDIyMS44Njc1OTg5MTIxMzMzM10sIFsy
MDMuOTEzNjY5NzU1MzEzNTUsIDIwNS4xMDAwODA3MDkzMzgwMiwgMjA1LjQ4NDczNzQ2MjI3Njgs
IDIwNS42NTkyNzUxNzk4MjU1LCAyMDUuOTI4MTA2MjkzOTE0MjVdLCBbMjE1LjIyNjE1NzcxMzE3
MTIzLCAyMTcuMDY0MDg2NjQ4MjgxNzIsIDIxNy41NjExNzk3NDU5ODIsIDIxOC4yNjQ2ODIyMjc1
NjE5NiwgMjE4LjcyMjIyMDkyNjIyMzEyXSwgWzE4Ny4wMjkzODAxOTA2NDgwOCwgMTg4LjI1ODcz
NDkyOTY0ODQsIDE4OC40NzAzNzA5MTM0NjczOCwgMTg4LjcwMjExNzkyMjAyODA3LCAxODkuMTU2
NDM1NDYxNTU3MzVdXX19fSwgImpzbGliLWF0dHItcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9q
c2xpYi1hdHRyLXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQi
OiBbWzM3MC45NDQ5MDIwNjk4NTUxLCAzNzQuMjI1MDAzNzM2MzQ2LCAzNzUuMjY2MTY2MDA5Njc3
NTMsIDM3NS45NzM4MTkyOTE3MjMyLCAzNzcuMDI4MTMyMTk3ODY4ODRdLCBbMzY1LjM4MjkwMjQz
ODQzMzgsIDM2Ny4xMzk0NzkyMzg5OTAzNiwgMzY5LjA3MzczOTk3NDMxNSwgMzY5LjUzNjA2NTc3
MjI0Nzg3LCAzNzAuNTg3MTIzODI1NjEwOF0sIFszNTQuNDMwODgwNzYwODYzMTUsIDM1Ni44MDA5
MjkyNTU4NjY3LCAzNTcuNDY3NTAzOTAzNDk4NzcsIDM1Ny44ODYwMDE5NjYwNzgyNSwgMzU4LjU4
MTg5NzcyMTAwNzc1XSwgWzM3Mi4xNTA5OTU1NDI0NzYzLCAzNzUuMjk0NDQ1Mzg0ODczMywgMzc1
Ljk5ODIzODE1MzI5NTA2LCAzNzcuMDYwMDIwOTE2MDc3MDYsIDM3OC4wNjA2MTUwMzY0MTk1XV19
fX0sICJqc2xpYi10cmF2ZXJzZS1wcm90b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLXRyYXZl
cnNlLXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzIw
Mi43Njk1Nzk3NTk2MjUzNCwgMjAzLjgxNjk1NjIxMTI0MDQ0LCAyMDQuMjQyMDg5MTQyNzEyODcs
IDIwNC40MTg3Mjg4ODI2NTU0MiwgMjA0LjY2NTE5MjY2NjY1ODM4XSwgWzIwMS40OTU4Njg1NTc1
MzQ1OCwgMjAyLjEwNDIyNzc1MDkzNiwgMjAyLjY4MTYyMjExNDEzOTQ2LCAyMDIuOTUyMTEzMTg4
MTkwODIsIDIwMy40NDY3NjQ2Mzc1MDUwNV0sIFsyMDIuMTI4MzA2Njk1Njc2MywgMjAyLjg5MDkz
NTc0NDIzNTUsIDIwMy4yMDQ3OTY0NzMzMjI5NywgMjAzLjU2NTM5Mzc5NDI1Nzk3LCAyMDMuODI5
NjU1ODA5NTc4NTVdLCBbMTgwLjk4NTEwOTk0OTc2MTY0LCAxODEuNTY2ODAzMjIzNTIwMDgsIDE4
MS43NTUwNzA0NDg5OTAzMiwgMTgyLjAyMjg0NjI3OTcxNzcsIDE4Mi4xOTcxMjI4MzcyODQwN11d
fX19LCAianNsaWItdHJhdmVyc2UtanF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi10cmF2ZXJz
ZS1qcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1syOS40NzI4
MTM0NjE0NDg3NSwgMjkuNjA2MjMwNTg2NTM0NDIzLCAyOS42MzY2MzQ2MzQzNDA1ODQsIDI5LjY2
OTQxOTU1MjIyNjk5LCAyOS43MTIzMTU3NDI4NDM3NV0sIFsyOS42MjU1MTYzMDY0ODU3MSwgMjku
NjU0MDUwNDYzNzU1NzM4LCAyOS42OTk1MjY0NzkwMjQzNDMsIDI5LjcyOTA4MTc5NTcxOTQ5OCwg
MjkuNzY3MTY5NzQzNTkwMzU1XSwgWzI5LjQ5NDU5NDgxNzQ3MzEyLCAyOS41NTU1Nzc1NDkxMDg0
NSwgMjkuNjAyODg4NzkwNTM3NzIyLCAyOS42MzQxNjk0MTQ0NzA2MSwgMjkuNjg2NzQ2MjE1MjEw
OTg4XSwgWzI5LjMzOTcxODQ5MzM4NDY0NSwgMjkuMzkzNzA1MjE4OTA2MDA3LCAyOS40NDgwMjE5
NzQ2OTE4MTIsIDI5LjUzMDgwNDM2NDA2MDYxOCwgMjkuNTk5ODQ3NDk1NzQxNTRdXX19fSwgImpz
bGliLXN0eWxlLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtcHJvdG90eXBl
Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTQ1LjEyNTU5NjY0NDk1
OTE2LCAxNDUuNzM3OTMxMjI3NzMxNDgsIDE0Ni4xNjA3OTkwNzIyMzU2MiwgMTQ2LjQ3NDg5NDc1
NjgzODIsIDE0Ni43MDc2NzEzMTY5ODIwN10sIFsxNjAuODk5MDE5NDIxNTYyODMsIDE2Mi4wODM5
OTI1ODcwNTc2OCwgMTYyLjYyNjQ1NDA5ODQ3Mjg2LCAxNjMuMTQyMzU5Njk3OTYwMzMsIDE2My40
MjIwMDE4MTcxMjQ2NV0sIFsxNDAuNDQ1NDExOTUxOTUwNSwgMTQxLjA0NDk4NDkyMTQwMzk0LCAx
NDEuNTk3NjI1ODYyMjIzMjgsIDE0Mi4wMDg4ODEwODkwMzkyNSwgMTQyLjQwNzExMTAxMTAzNTE0
XSwgWzE0OC4yNzczNTEyMzQzMDc2LCAxNDguNzk1MjIyMTE0OTY2MjYsIDE0OS4yMzc2MDMwNTI2
NDY3MywgMTQ5LjU0Mzg1MDU5ODczMjEsIDE0OS45MjE3MzM1MDA3MTk3N11dfX19LCAiZG9tLXRy
YXZlcnNlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1Bl
cmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kb20tdHJhdmVyc2UuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1sxODIuNTg5OTI1NzA2MDY4OTUsIDE4Mi45OTcyODUxMjMxMjM4
LCAxODMuMjU1MjA3MDQxNzE5NzYsIDE4My41NDE2NzE1NTA1MDcyNiwgMTgzLjc3NDY1MTg0MTI2
ODJdLCBbMTgyLjk3MjczNzk5OTg5MDIsIDE4My4yODc3NTI3NjQ4NzY4NywgMTg0LjUyNjQwMzcy
ODA3NzEsIDE4NC42MzM1OTA3MTQ5MzIyNCwgMTg1LjEwODM3MzU0Njk3MjczXSwgWzE4My43MjIy
ODE1OTUxOTYxNCwgMTg0LjI5NDQ4MzA1NjgxODQsIDE4NS4wNDg0MjcwMzI3OTQzLCAxODUuMTY5
MjIwNTMzODI0NjcsIDE4NS41NDM2ODgyMTIyNjcwOV0sIFsxNzguMDM4OTEwOTA5OTE4MSwgMTgw
LjAxOTc1ODc2NDkzNjI2LCAxODEuMDg0MjgzMTg3NDYyOSwgMTgxLjM0NDE0MjkyNTY4NDU0LCAx
ODIuNzI5MTUwMTQxNDQzNTRdXX19fSwgImRyb21hZW8tb2JqZWN0LWFycmF5IjogeyJ1cmwiOiAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJv
bWFlby9kcm9tYWVvLW9iamVjdC1hcnJheS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1
cnJlbnQiOiBbWzQuMjM1MjE0MzE5OTc0NTMxLCA0LjI1NjMwNTMwNDgwMTgzNTYsIDQuMjU5OTk1
MjU2MjA2OTQyLCA0LjI2Nzg0NDUyOTAwNDAzNSwgNC4yNjg2ODU3ODcyNTQwOTM1XSwgWzQuMjY1
NjM2NDcwNTEyMDE3NiwgNC4yODAyODAyMjIxODg0MDIsIDQuMjkxMzYyMDQ0MTYwODUyLCA0LjI5
ODgxODQ1MDE1NjE3NCwgNC4zMDI4NTkzMDU3Njc0NzJdLCBbNC4yNTQ4MzgwMDI5NTYxMjEsIDQu
Mjg3MTYzOTQwNTMyMjY5LCA0LjI5ODU0MzkxNDk2ODg2NjUsIDQuMjk5MTM0MDA2NTYwNDI1LCA0
LjMwNzE5Mzc0NjgxODE5MV0sIFs0LjExNjc4NjE0ODM2NjksIDQuMTE5NjYwMDcyNTc1MTc5LCA0
LjExOTk3MjExMTQ1MzgzNiwgNC4xMjY4MTcxNjI4MDcxMDUsIDQuMTM3MzgxODkwNTU1MTQ4XV19
fX0sICJkcm9tYWVvLXN0cmluZy1iYXNlNjQiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tc3RyaW5n
LWJhc2U2NC5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzEyODMuMjMx
OTc2NjM4MDcyOSwgMTI4OC4zMTY1MTU0MjY0OTczLCAxMjk0LjcxNjQyMzI5MTg2OTQsIDEyOTgu
MTQ1NTQ5MTc0NDQzNywgMTMwMS4xMTE2Njc4NTk2OTkzXSwgWzEyOTAuMDI1OTg1MjA2NjkxMywg
MTI5NS41NDUxMDkzODM0NzUsIDEzMDMuMjY0Mjg5NTUzODQzMSwgMTMwNS44NDcwMzM1OTU0MjU1
LCAxMzA3LjMyNjQzMjI2ODQyNzRdLCBbMTI5My42NTEyNTEzNjAxNzQyLCAxMjk4LjQyNzM2MTIx
MTI0NzIsIDEzMDEuMzQ4MTc3NDEwNjY2MywgMTMwNC45MTc5MzMxMzA2OTksIDEzMDcuNzU0NDU3
OTE3MjYxXSwgWzEyOTYuMjA5OTk0NTg3NzY4MywgMTI5Ny4zMjA4NDMwOTEzMzQ4LCAxMzAyLjUw
OTQwMzU0NjQ4MDQsIDEzMDQuOTYzMDI5MTEyMzQxNywgMTMwOC4xMTg2NjM4OTY4MzQzXV19fX0s
ICJkb20tYXR0ciI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVu
ay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZG9tLWF0dHIuaHRtbCIsICJtZXRyaWNzIjogeyJS
dW5zIjogeyJjdXJyZW50IjogW1sxMjUuNzk5MDM5NDQ2MjQwNTMsIDEyNi4yMjgxMTEzODYxNjM4
OSwgMTI2LjU2NTIxMzE2NzAxMDI3LCAxMjYuNjE3MTk5Njc5MDc0NzksIDEyNi43OTc5NDM5Mjky
ODg0NF0sIFsxMjIuNzEzNDAxMjUxNDM5NDQsIDEyMy40NDg0NDUzNTMzMTQ1LCAxMjMuNjI3MDEz
NjI5ODU1MTMsIDEyMy43MzUzNDg0ODMxMjM1MywgMTI0LjAzNzM4MjAyNzk4Nzk1XSwgWzEyNC4x
MDc4ODM0MDE5MzY3NiwgMTI0LjgwODMyMDg0NDUwODMsIDEyNS4wOTk0MTkwMjkwMjM2NCwgMTI1
LjIyMzY4NzQ5Mjc1MDE5LCAxMjUuMzc1OTUzODI0ODc1MDFdLCBbMTIzLjk1MzQ0OTg1NTY3NjQ0
LCAxMjQuODEzNzk2Njk1ODI2MzEsIDEyNS4wNDMyNjA1Mzc4NTM3MSwgMTI1LjI1MTk3MDM4NzM5
NTkzLCAxMjUuNTE4NjI4NzI5Mzk0Nl1dfX19LCAianNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvRHJvbWFlby9qc2xpYi1ldmVudC1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5z
IjogeyJjdXJyZW50IjogW1s0MDEuODE3ODcyNTg3OTEyNSwgNDA1LjQzODA3NzU4NjQ4NTM1LCA0
MDUuNzA1MzI2NDAxODI1ODYsIDQwNi45OTU2MjY0NjkzOTIxNiwgNDA3LjU5NTUwMTkzNzA2NThd
LCBbMzcxLjY1NDIxNDQ3OTg5MjYzLCAzNzcuNjgzMjIxNjY5NDI5NDMsIDM3OC42NDU1NTQzMDk3
Nzg2LCAzNzkuMTExNzQyNjU4MTE4MDMsIDM3OS44NzEwMzY3OTYyNTAxN10sIFszNzYuNjMxMjU4
MDk1MDY4MjMsIDM4MC4yNzIzMDI2NDE5MzczNiwgMzgxLjA3NjU4NDUxMjg4MDEsIDM4Mi4yODIx
NTUwNzQzOTg1MywgMzgyLjgwNjc2NTYzMTkzMzczXSwgWzM5OC43NTAwOTE3MjAyNDYzNiwgNDAz
LjA3NjMyMzgzNTg2MTksIDQwNC4zMzI1NDU4NzQzMDM1LCA0MDQuNzcxMTEwODAxMjIxNzcsIDQw
NS4xMDEyMzYzNDQzNTg4XV19fX0sICJqc2xpYi1ldmVudC1qcXVlcnkiOiB7InVybCI6ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVv
L2pzbGliLWV2ZW50LWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQi
OiBbWzAuMDE2NzI4MzEzMzc4ODE2ODgyLCAwLjExNDg3MDQ3MTgyNzYwODU3LCAwLjExNTE4ODYw
MDAxNTM5NDYsIDAuMTE3NjQxNjAyMTc2NjgzNCwgMC4xMjE3Mzc2ODc3NjU2MzA0OV0sIFswLjAx
NjA2NDI4MzAxOTg0NDgyMiwgMC4xMTAwNzgyNzQzNzA3NTg2OSwgMC4xMTE3MjY3MTgxMDgxNTgz
NiwgMC4xMTIwMjc2MDU3NTkyOTgyNCwgMC4xMTgzODAyOTYyNDk0ODY2NV0sIFswLjAxNzQ4MTAx
Nzk2MDA4OTc3LCAwLjExNDIyMzUzODg4NjM4NjY2LCAwLjExNTI3NzkxNTkyMDk5OTA0LCAwLjEx
NjgyNzAwNDI0MTA3NzAyLCAwLjEyMjIwOTcwMTU1NTg2NTc1XSwgWzAuMDE1ODYyMjI2NTY3MDcx
MTc1LCAwLjExMDc2OTc3NDI1NTAyNTQ1LCAwLjExMTQ0OTA2MzczMzUyMDAxLCAwLjExMjk2MDMz
ODM3MDAyNzMsIDAuMTE3MzYxOTA1ODM3NTkzOTddXX19fSwgImpzbGliLWF0dHItanF1ZXJ5Ijog
eyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNl
VGVzdHMvRHJvbWFlby9qc2xpYi1hdHRyLWpxdWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMi
OiB7ImN1cnJlbnQiOiBbWzMwNC45MDA5MTc3MDg2OTEzLCAzMDcuODE3MzIwMzgzNTA4NDUsIDMw
OC4xMjI5OTIzMzE5NTcwNSwgMzA5LjA4NjQ4NDM0MTEyNDU2LCAzMTAuMTk1MDkzMzUzNDE4NF0s
IFszMDIuNTIxODczMjc5ODAyMiwgMzA1Ljk5MDY1Njg4MzQyNzMzLCAzMDcuMDE1NDYyODQxMDQz
NTMsIDMwOC4xMTIyODQ4MzU0MzM1LCAzMDkuMTA2MDQxNzYzNTg5OF0sIFsyOTMuOTE3NTA4NjIw
NTUyNCwgMjk2LjM4OTg1NTA1ODAyNjc0LCAyOTcuMzYzNzQ2OTk2MDM3MTUsIDI5OC40Nzk0ODYz
MDUyNTkwNiwgMjk5LjEyMjMxMjQzNTc5MjZdLCBbMjg5Ljg1OTg0MDAzNTMyOTk3LCAyOTEuNTk4
Nzc5MjY0NTU2NzUsIDI5Mi43NDUwOTY5NDIzOTY0NiwgMjk0LjI0MzM0NTMyMTA3MjcsIDI5NS4w
OTQ5MzAxODA5MTcxXV19fX19fX0sICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1w
IjogIjIwMTMtMDQtMTZUMTA6MDU6MjlaIiwgInJldmlzaW9uIjogIjE0ODUwOCJ9fSwgImJ1aWxk
VGltZSI6ICIyMDEzLTA0LTE4VDA3OjQzOjQzLjQxMjYzNyIsICJkZXNjcmlwdGlvbiI6ICJXaXRo
IHBhdGNoIn0sIHsidGVzdHMiOiB7IkRyb21hZW8iOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvIiwgInRlc3RzIjog
eyJqc2xpYi1tb2RpZnktcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1tb2RpZnktcHJv
dG90eXBlLmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTUwLjc3NDUy
NTA3NjMzMDI0LCAxNTMuMjk4MjM5OTIzNDY4MzQsIDE1NC4zMDg2NjYwMjAzNDM5NCwgMTU0Ljg0
NjU4OTgzOTU4MzQsIDE1NS4zNzEyMzQ2MDAzNTQxNF0sIFsxNTEuNzU2NDQzMDQxNDEzNDYsIDE1
Mi42MjkzMTczMDE2MjQxMywgMTUzLjEwMTU5MjAwMzc0NDU3LCAxNTMuOTE3OTA3MDk5NTAxMiwg
MTU0LjU4OTE1MTg2Mzc0MTgyXSwgWzE1MS44MjA4MzI4MDQwNTc0MywgMTUzLjc3NjU0MTczMTEw
MjQ0LCAxNTQuMzA1MzUwODUwMTUxMzcsIDE1NC44Njg1NDAyMzY1MjcyNSwgMTU1LjM1ODE1OTQz
MDI5Mzk0XSwgWzE1NC41MzQ3MDYzMDc1NDA2NiwgMTU2LjEyODEwNTYzOTQwOTU3LCAxNTYuNDM2
NjI3NzQ3Mjg1NjMsIDE1Ni45NjgxNjE1MTIyMDU4LCAxNTcuNjgyNzI4NzE5OTY4NTRdXX19fSwg
ImpzbGliLXN0eWxlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtanF1ZXJ5Lmh0
bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMS4wMzc2MjI1OTk1ODc2NjY3
LCAxLjA0MjMwNzMwOTQwODIzMTYsIDEuMDQ4NjgyNDUxMDg1NzQ5OCwgMS4wNTI4NjA4ODEyMzUz
Njk1LCAxLjA1NDg5NTAyNDg0NTM4MzJdLCBbMS4wNTU2NTE5ODkzMTU1MTk4LCAxLjA1ODgxOTQ5
Mzk3MTIyMTQsIDEuMDU5ODA1ODIzNDMxMDQ4LCAxLjA2MDk2MjYwMDk4MzY5NTksIDEuMDYxNzgy
MjMzNjc3OTI4M10sIFsxLjA0OTY4OTU0ODI2NDUwNTQsIDEuMDUyOTIxODU2NTIwNTAxNiwgMS4w
NTgxOTM4NTk2MDY2OTQ0LCAxLjA1OTAxMTAxMTgxMzM1OSwgMS4wNjIwOTIzNzExNTM2NDUyXSwg
WzEuMDQ5NzY1MDAxMjkzMjkxMywgMS4wNTU1Nzc1MTkxMjAzNTkxLCAxLjA1Njc3MDc0MzUzMjIy
MzYsIDEuMDU4NDk2MDQyMzE3MTQ5OSwgMS4wNTg1Njc2MDc5MDgwMjldXX19fSwgImpzbGliLXN0
eWxlLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90
cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItc3R5bGUtcHJvdG90eXBlLmh0bWwi
LCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTU4LjI0MjA0NDQ2MDI2MTksIDE1
OS43MDgyMDUwOTMyNzMxNCwgMTU5Ljk3NDA4NTEyMzUzMzIzLCAxNjAuMjQxMDA2NDM3MzU0Mywg
MTYwLjU2NjEzMjYxMDkxMzQ2XSwgWzE0MS4zMDE4NjMzNzYzOTQ1NSwgMTQyLjI2NTQxMzU5MzI1
MjIsIDE0Mi43OTE1NTk4Njk5NDk1NCwgMTQzLjA4MDk2NjEyNDI3NDA2LCAxNDMuMzk1NjExMTY3
NTI0OTJdLCBbMTQ5LjQ2MTAzNTgzNTkxMTgsIDE1MC4yODExODU4OTE0NDgwNSwgMTUwLjY4NjI3
MDA5MDcwNzEsIDE1MS4xNjY2OTAxMzg5MTY3LCAxNTIuMTI5NjQ2MTA2NzgzOF0sIFsxNDkuODUy
MjM0NjI1MTk0ODUsIDE1MC44MjU5NzcwOTIwMDk0LCAxNTEuMTAzMzA0NzQxMDQ4OTYsIDE1MS41
Nzc5NzY2MTkwMzg4MiwgMTUyLjAzMzMwMjU0MTcwMjAzXV19fX0sICJkb20tbW9kaWZ5IjogeyJ1
cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVz
dHMvRHJvbWFlby9kb20tbW9kaWZ5Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVu
dCI6IFtbNTMuNjg4NjM3MTk3MDQwMjgsIDU0LjQ1NjQxNTM1Njg3MjI3LCA1NS4xODQwNjM5MTg3
MzkzNSwgNTYuNzUzNzQ2NjU1Mjk5ODYsIDU3LjAzNjI3MDIzMTUzODcxNV0sIFs1My44ODcyMjc3
NTE4ODg2NiwgNTUuMjUyNjI3ODc5ODg4MjcsIDU1LjU4MTUzMDYyOTU3MjI4LCA1Ni41NDkwMjkz
MjkwMzg2NCwgNTcuMDk4NDQyMTE3MDMyMDddLCBbNTMuOTExOTYzNDk3NjA5OTYsIDU0LjM2MTA0
NDkxOTk5MTY1NiwgNTUuMDgxNzE1NjY5NDM4OTEsIDU2LjI3MzQwMDMyNzgzNzMyLCA1Ny4wMTM4
MjM1MDkwODAxMl0sIFs1My43OTM5OTY4NzYzNDUxNSwgNTQuNzk5OTk5OTM5Nzk5NjQsIDU1LjI5
MDEzNTc4MTUxNzM4LCA1Ni41NzI3ODY5NDQ5NzM0MTYsIDU3LjM0NzkzNzg3Mjc0NzA5XV19fX0s
ICJkb20tdHJhdmVyc2UiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIv
dHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2RvbS10cmF2ZXJzZS5odG1sIiwgIm1ldHJp
Y3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzE4NC43NTU5Njk3MzQ4NzM0NSwgMTg0LjkyODk3
MjQ4MTIyMzc4LCAxODYuMzM2OTE2NTA2MjQxMjcsIDE4Ni42MzQxMzM1NTU4MDU2MiwgMTg2Ljg3
MDQzMDE1MjI2ODg4XSwgWzE4MS43OTY2MjQzNjczMjAxMywgMTgzLjAwMDg2Mjc0MTUzOSwgMTg0
LjA4Nzg4NjY0NTI1OTgsIDE4NC4yMzc0OTM3MzMzODg1MywgMTg0LjM5MTE2NzExNjA5ODA3XSwg
WzE4Mi44NjQzNDgwMTMzNTgyLCAxODMuMTQ2OTg1MjE3MzAwODgsIDE4NC4wNDg1NDgxMjk4Mzky
LCAxODQuMjQ3OTAxNDQ5NTE3NiwgMTg0LjM0Mzg5NDA0NzE0MTA4XSwgWzE3Ny41OTcxNzE1ODI1
Njk1LCAxNzcuNzUxNjE4MjMyNzIzLCAxNzguNzIzMTA3MjUxODcxOSwgMTc4Ljg5MjY3MDAwNDM1
NzE3LCAxNzkuMDg3OTQxODQ5Mzg1MTVdXX19fSwgImRyb21hZW8tb2JqZWN0LXJlZ2V4cCI6IHsi
dXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRl
c3RzL0Ryb21hZW8vZHJvbWFlby1vYmplY3QtcmVnZXhwLmh0bWwiLCAibWV0cmljcyI6IHsiUnVu
cyI6IHsiY3VycmVudCI6IFtbNS4wMTEzMzg2MzMzMzQ2LCA1LjAyNjY3MjU3NTMyNjkxNCwgNS4w
MzYzMDgyMTUyMDkyNTgsIDUuMDQwNDY4NTYxNzQwMDQyLCA1LjA0MzU0NTA3NjIzOTQ1MV0sIFs0
Ljc3ODc5ODMyNDA4MDg4NCwgNC44MTk1MjEyMDYwMzE1MTksIDQuODQ0MjczMjM3NzI4NTQ0LCA0
Ljg1ODE5NTAyMTc5NDA3MywgNC44NzkwNDIyOTM2ODY2ODNdLCBbNC45OTI4Nzk2ODQyNjY3OTQs
IDUuMDA3MjU4OTg4MzQ1MjM2LCA1LjAxOTc5NjA1Nzg4NDgwOSwgNS4wMjMxNTc0NDQyNjU0MTcs
IDUuMDMxMTcyNDkzNDA3ODc1XSwgWzQuOTg1MTgyMTQ5MjczOTE1LCA1LjAwODM3NTExMzg3OTc4
NCwgNS4wMTU2ODIzMTExMDExNjgsIDUuMDIwOTk5MDk5MDk1NTU3LCA1LjAyNzcyMzQ1NTg2MzU3
NV1dfX19LCAiZHJvbWFlby1vYmplY3Qtc3RyaW5nIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9tYWVvLW9i
amVjdC1zdHJpbmcuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1s2Ny41
MTk4NDEyMDg4NTQyOSwgNjcuNzA3MzU5NzEyMDAyNjYsIDY4LjA3OTEzMTk4MDUzOTczLCA2OC4y
ODUyMTI2NTgzNzcxNiwgNjguNjE0NTMzMDYxODc3MzRdLCBbNjguMjQ5NTQ2OTU0Mzc4NzMsIDY4
LjY3NTExMTc0MjEzNzMzLCA2OC45MzIxMzY1MzE1NzM0LCA2OS4yMzM5NTQ5NDU0NzQzOCwgNjku
NzA1MDQ5MTI2NjU1MjhdLCBbNjguMzQ0Mzk5NDUwMzY4OTQsIDY4LjU5MTY1MzAxMjg4MjQ2LCA2
OC44ODQ2MDM3NTYxOTY2NCwgNjkuMjExMjE3ODg0MDQwMDcsIDY5LjYzNTY5Njk3NjE3Nzg0XSwg
WzY2LjE2ODM0OTYwMDY1OTYxLCA2Ni41NTc0MjYxOTA3MzQxMywgNjYuODEwNTUzNzY1NzY0Njgs
IDY2Ljk2OTYyNjk1OTc4MjU3LCA2Ny40OTk5NDIyODg5NTA4M11dfX19LCAiZG9tLXF1ZXJ5Ijog
eyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNl
VGVzdHMvRHJvbWFlby9kb20tcXVlcnkuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJy
ZW50IjogW1syMjIuNzYwMjg3OTE0Nzg1OTgsIDIyMy45Mjg4NzA4MTI5NjQyLCAyMjQuNTM2NjU1
MDgwMjQ4NzUsIDIyNC45ODM5Njg3MzY1NDI3NSwgMjI1LjMyODQwOTQ3NDU3NTY0XSwgWzIyMC40
ODczMzkyMTM4OTM3NiwgMjIyLjY0NTQ2MDQxMzY1NTIsIDIyMi44Nzk3ODAyNjU3NzU4OCwgMjIz
LjU3NTE4MDA3NzE1Mjc3LCAyMjMuODQyNDc4NTM1ODYyNTRdLCBbMTc0LjQ2MzY3MjA1MDI1MjEx
LCAxNzUuNDg3MTkzNjg3NTk4NSwgMTc1LjkyNzE3OTMzNDY4MTU3LCAxNzYuMTEyNzM4NDY1MDUz
MSwgMTc2LjQyMjAxMTUzODk5NjIzXSwgWzIxNy4wNjI5MjEyMjQwNzUyNywgMjE5LjQzMDE3NDEy
MDY2NzAzLCAyMjAuMzQ2Mzk1NjE0NTQ1NzQsIDIyMC44NDM5MDE3MDkzNDIwOCwgMjIxLjEyNzQ3
MzEyNzQ5NTg4XV19fX0sICJqc2xpYi1hdHRyLXByb3RvdHlwZSI6IHsidXJsIjogImh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNs
aWItYXR0ci1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50Ijog
W1szNzAuODk2MDE4MTEyOTA0MzYsIDM3Mi45Mjk3MTY2Nzc5NTk2LCAzNzMuNjgxNTgzMDM2NzMy
MjYsIDM3NC4xOTY5MDM1OTMwNiwgMzc0Ljg1ODE2NzUwOTEzODg3XSwgWzM4Ny4zNzU0MzQ5NjM3
NDEsIDM5MC42Mjc3Njg4NDU3MTYwNSwgMzkxLjA1NzIyODAzMjQ2ODQ2LCAzOTIuMjM4MDAzMDkx
MjQ0MjUsIDM5Mi4zODU4ODA2MDgwNDQ2XSwgWzM4My44MzAwMDIzNjQ1ODM5NSwgMzg2LjQxNTUx
MzU2MTY1NCwgMzg3LjMwOTI4ODg2NzU3MzIzLCAzODcuNzQzMDAwMzI0Njk5OTUsIDM4OC4xOTAy
NzExMzE0NDkxNV0sIFszNTMuMDE2MzUzMDQ1MDExNywgMzU1Ljk0OTE2NTczNzA5MzI3LCAzNTYu
NDI5OTgzMTkwMDg1NSwgMzU2LjkwNzA2ODU2OTAzNzksIDM1Ny42OTczNzgxNTc3ODQ2XV19fX0s
ICJqc2xpYi10cmF2ZXJzZS1wcm90b3R5cGUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2Jyb3dzZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLXRyYXZlcnNl
LXByb3RvdHlwZS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzIwMC41
ODI1NjE1Njc2NzU0LCAyMDEuMTgyMjY4NTAwODE0NywgMjAxLjU4MzQ1Mjc1OTM2MDgsIDIwMS43
MTM1Mjc4MjExMTk5NSwgMjAxLjg5MjQxNDA5NjUxNzY4XSwgWzE4My40NTE4MjcxOTc0Nzc0OCwg
MTgzLjc2MDg5OTExMzQ0Njc1LCAxODQuMTg2ODMwMzA3ODY2MDIsIDE4NC4zNDkzNTAyNTU0ODEx
NywgMTg0LjYzOTAyMzgxOTM3MTc3XSwgWzIwNS45MjIxMDQyODgwNDU5MiwgMjA2LjY3OTE4NzE3
NDU3NjE2LCAyMDYuOTgxODYxODk3ODQxMywgMjA3LjIyMDM2MDM2MjczNDIsIDIwNy42Nzc1ODQ2
NDA3MTE5XSwgWzE5Ni44MTUxNjcyNzAyODI5MywgMTk3LjYwMDk5NDE5NTg1MDc3LCAxOTcuODEx
MjI3Nzg1NjUsIDE5OC4wNTU5ODczMjE3NDc3NSwgMTk4LjE1MjAxOTAwNjk1MzhdXX19fSwgImpz
bGliLXRyYXZlcnNlLWpxdWVyeSI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vanNsaWItdHJhdmVyc2UtanF1ZXJ5
Lmh0bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMjkuNTc5OTIxNjYxNDg5
NzQyLCAyOS42NzM2OTkzMjUyOTIyOCwgMjkuNzIzOTI5MTE0MjcyMzA1LCAyOS44MDY3ODA5MjMz
MTk3OTIsIDI5LjgyNDkzNjU5OTgzMzYxM10sIFsyOS4zNTgzMzQ2ODkzODA2MiwgMjkuNDY0NDk1
Mzg5MjM5Mzc4LCAyOS40NzU5NDgzMzE2NjAzNjIsIDI5LjUwNzM5Mzk2NTAyMjU5NywgMjkuNTUy
OTE4MzYyMTIwNDMzXSwgWzI5LjUyMjExMDI4NDE0MTAzMiwgMjkuNTg5ODE5MzE4MzQwMjc1LCAy
OS42MzU4NDIyNjcwNzgwNDcsIDI5LjY3MDIwMjM3MTk4ODUxNiwgMjkuNzE5NjMyMTY0MTY0NzJd
LCBbMjkuNDgzOTExODg1ODI3MDgsIDI5LjU1NzMyNDIwNzQ3NDEwMywgMjkuNjAzODg2MDI2MzIw
MTYsIDI5LjY0NTc5MTk2NzEzNDk1NCwgMjkuNzA1OTE2MzA0MDQ4MDAzXV19fX0sICJkcm9tYWVv
LTNkLWN1YmUiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
UGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2Ryb21hZW8tM2QtY3ViZS5odG1sIiwgIm1ldHJpY3Mi
OiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzM3NjAuMCwgMzgzMC4wLCAzODM4LjAwMDAwMDAwMDAw
MDUsIDM4MzkuMCwgMzg0MC4wXSwgWzM3NjAuMCwgMzgwMC4wLCAzODE4Ljk5OTk5OTk5OTk5OTUs
IDM4MzIuMDAwMDAwMDAwMDAwNSwgMzgzNC4wXSwgWzM3NjMuMCwgMzc5NS4wMDAwMDAwMDAwMDA1
LCAzODEyLjAsIDM4MTguOTk5OTk5OTk5OTk5NSwgMzgzMy4wXSwgWzM3NDUuMCwgMzgwNi4wLCAz
ODI5LjAsIDM4MzYuMCwgMzg0MC4wXV19fX0sICJkcm9tYWVvLWNvcmUtZXZhbCI6IHsidXJsIjog
Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ry
b21hZW8vZHJvbWFlby1jb3JlLWV2YWwuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJy
ZW50IjogW1syMzIuMjQ1MDI5NTU0MDAzMjIsIDIzNS4xNzY4NDg4NzQ1OTgwNSwgMjM1LjcwMTc4
NTgzODUxOTk4LCAyMzYuNDIyOTcyNDc0MTc1NTQsIDIzNi42MjQyMDc3MjA3NTM2XSwgWzIzMS40
ODY3ODU2NTQ4NzY0NiwgMjMyLjk4ODQ4ODk5ODk4MDA3LCAyMzMuNTYwNjA3NDMyMDAxNSwgMjMz
Ljk2Nzk3Njk3MDg2MzA1LCAyMzQuMTUyODc3MjUxMDIwNzhdLCBbMjM2LjAzMzczNTU2MTc0OTE4
LCAyMzcuOTYxOTQ2OTg4NTI3NCwgMjM4LjUyNjcwMzY1NTc5NjgsIDIzOC43MjkzNDg5MzkzMTQy
NiwgMjM4Ljc1MTcxMTEzODA3OTA2XSwgWzIzNS4zMjk0MTgwNDU5MTU2NywgMjM2LjA3Nzg2NjY2
NjY2NjY0LCAyMzYuODQ3NzEwMzMwMTM4NDUsIDIzNy42MTcyMjQ4ODAzODI4LCAyMzcuNjYxMTc4
OTY5NzI5MTVdXX19fSwgImRyb21hZW8tb2JqZWN0LWFycmF5IjogeyJ1cmwiOiAiaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9kcm9t
YWVvLW9iamVjdC1hcnJheS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBb
WzQuMjc1NDk1Nzg3MzAyMzAyLCA0LjI5NTg0MDM2ODQ1OTkwMywgNC4zMDgxMTkzMDA4NTUzMjks
IDQuMzA4MTg1NzY4NDI5ODMyLCA0LjMyNzQyMTU0Mjc1MjczOF0sIFs0LjIwNjQ1ODQ2NTczMjg3
NCwgNC4yMzQxMjY2NDg5NTg2MjQsIDQuMjQ4NjMzMDI2MzU2MzU5LCA0LjI0OTQ4MTcyNDU2NzQ1
MiwgNC4yNTM0NDM3NjQ5NjE3MzZdLCBbNC4yNjQzNTk5MjI5ODAwMjYsIDQuMjY3NDMwNTE2NzYx
MDE3LCA0LjI3MTQwMTA5OTUxMjc4MiwgNC4yNzg3NjM3OTkxNDkzNjg2LCA0LjI3OTM3ODIwMDI1
MzUyOV0sIFs0LjIyMjQ1NDQ0NTA0MjIyNCwgNC4yMjk0MDUwMDQxNDUwNzcsIDQuMjU0OTIzODQ5
MDE0NDE5LCA0LjI1ODg2OTE4ODczNDkyOSwgNC4yNTk0NDIwMDQwMTExODldXX19fSwgImRyb21h
ZW8tc3RyaW5nLWJhc2U2NCI6IHsidXJsIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nl
ci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vZHJvbWFlby1zdHJpbmctYmFzZTY0Lmh0
bWwiLCAibWV0cmljcyI6IHsiUnVucyI6IHsiY3VycmVudCI6IFtbMTI5Ni4yNDU0ODQxMDQwNDYy
LCAxMzAwLjg4NTQ3Mjg1MTQ5MjMsIDEzMDQuNjkyMDcyOTM5MTQ3NSwgMTMwNS4yOTYxMzczMzkw
NTU4LCAxMzA5LjYyOTYyOTYyOTYyOTNdLCBbMTI5NS42MjUsIDEyOTkuMjExNzExNzExNzExOCwg
MTMwMy4xNzQ2NTI5MTkyMzkyLCAxMzAzLjk4MzY5NjcxNDIxNzgsIDEzMDUuODU4MDgzODQ3NjM2
OV0sIFsxMjkwLjg4NTc1MDQ5NzkxNzgsIDEyOTUuMTY4MzgxMTU4NjM1NiwgMTI5OS4wMzM5Mzc4
NzAzNTM2LCAxMzA2LjE1MTkzNjM1MTA5NCwgMTMwNy4zODUxMzYzMzkzMzM1XSwgWzEyODguODcz
MzYyNDQ1NDE0OCwgMTI5MS4zMTE1OTQxMTc1MjQyLCAxMjk2LjE1OTk1NjY3MDg3OTIsIDEzMDEu
MjE4NDU4MzI3NjA3LCAxMzAyLjg4Nzg1MzgxNTgzNjVdXX19fSwgImRvbS1hdHRyIjogeyJ1cmwi
OiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMv
RHJvbWFlby9kb20tYXR0ci5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBb
WzEyMC40MjEwNDM1NTAyMzQ0MiwgMTIxLjI2ODc5NjUzODIwMTIsIDEyMS40MzQyMTAwNDc1ODI1
OCwgMTIxLjU5MTA4NTY3MTc2MzM4LCAxMjEuNzQwNzEwNDk0MTAxNjZdLCBbMTIzLjk3MTg3ODQy
ODM4MjU0LCAxMjQuNjI4NzcwMTYxOTg5ODMsIDEyNC43Njk2MzAwMjcyODg4MSwgMTI0LjkwODc5
MTcyMDUwMzE5LCAxMjUuMjM1NzE1MjI5NDAyMzldLCBbMTIzLjM4ODA2MjE3NTYzOTE2LCAxMjMu
ODg1NTE1MTkxOTg5NzUsIDEyMy45NzY0NTI2MTYzNzA3NiwgMTI0LjE1MzM1ODI3OTc1OTU2LCAx
MjQuMjEzNDM1NTUzNzczMzJdLCBbMTIzLjc4NjIwNDE2MzM1NTEsIDEyNC41MTY1ODA2NzkxMTk4
MSwgMTI0LjY4MDQ4MDQ3MzgzNjI0LCAxMjQuODc0OTk5MDgzNzQ4NDgsIDEyNC45OTU4MzE3Mjcy
NDg1Nl1dfX19LCAianNsaWItZXZlbnQtcHJvdG90eXBlIjogeyJ1cmwiOiAiaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1l
dmVudC1wcm90b3R5cGUuaHRtbCIsICJtZXRyaWNzIjogeyJSdW5zIjogeyJjdXJyZW50IjogW1sz
ODguMjg4MzA1ODQ0NDA1NjcsIDM5NS4zMDQ1OTAxMDk2NjUzNiwgMzk2Ljg0NTU4MDQwMDkxNDQs
IDM5OC4wODM4NzEyODQ5ODEzLCA0MDAuNTc1NzUxMTQ5ODgxM10sIFszODAuNTQ4NjQ3Njk4MzA1
NSwgMzg0LjAxNDEwMzA5ODY2MzQsIDM4NS45MzkxODUyODY5OTQxLCAzODYuNjI3MDcxODU4NzQ0
MSwgMzg3LjE3OTAxMTUzNDYwOTk3XSwgWzM3Ny4yNjIwNjMzMjgzODY2NiwgMzgyLjk1NTI4ODk2
OTk3NjgzLCAzODMuMTU0NDY1MjQ1MzY4MTYsIDM4My4zMjU0ODkwMTIwNDIsIDM4NC42NDg4NjYz
MzE0OTk3XSwgWzM5My44NTE5OTMwNTQ0NzMwNCwgMzk2Ljg1NzE3OTQ0Mzc5ODYsIDQwMC4wOTcx
MzkzMjQ4NjA1LCA0MDAuNjQwMDkwNjc4NjA0NiwgNDAxLjQ1MDc2ODg4ODI5MTM1XV19fX0sICJq
c2xpYi1ldmVudC1qcXVlcnkiOiB7InVybCI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dz
ZXIvdHJ1bmsvUGVyZm9ybWFuY2VUZXN0cy9Ecm9tYWVvL2pzbGliLWV2ZW50LWpxdWVyeS5odG1s
IiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzAuMDE0NTIxNDExOTE3OTYxNzgs
IDAuMTAzODgwMzM0OTg1MTU5OTMsIDAuMTA2MjMxNzA3OTEyODczODEsIDAuMTA2NTI2MzI4NDk0
MTI0MDEsIDAuMTA4MTM5MTQ0ODU5MDYxMzZdLCBbMC4wMTYyMjU4OTMwNzIyODg1NSwgMC4xMTIz
MjcxMDcxNzM5OTA0NiwgMC4xMTMxMDIzODkyNDI4ODU2LCAwLjExMzgzNzI4MDE5MzU0MzYyLCAw
LjExODAxNTYyOTU0OTQ1OTk2XSwgWzAuMDE2MTI1OTQ2Nzg4OTExNDU2LCAwLjExMzIyNzgzMjYx
ODg3NjUsIDAuMTE0MTA3MTc2MzU3ODEyLCAwLjExNDMyOTMwMTU1NDMzNTcsIDAuMTE4NjQyODAz
NjUzMjAyNDddLCBbMC4wMTQ3NjMwMTg3NjkzMTc3ODgsIDAuMTA0NzI5NDI5MjA3MDQ1MzQsIDAu
MTA1NTU4OTA2MDgwOTI4NjksIDAuMTA1OTA1OTMyODc1MDMwMTcsIDAuMTExNDkxMDY2NjAxNzEw
MDddXX19fSwgImpzbGliLWF0dHItanF1ZXJ5IjogeyJ1cmwiOiAiaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9icm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvRHJvbWFlby9qc2xpYi1hdHRyLWpx
dWVyeS5odG1sIiwgIm1ldHJpY3MiOiB7IlJ1bnMiOiB7ImN1cnJlbnQiOiBbWzI4Ni4wODA5Nzg2
MDk1ODAyNiwgMjg3LjUyMjcwNzQxNzIwMDcsIDI4OC4yOTY3NDY3OTE3MTgxNCwgMjg5LjE1NzY1
NTIwMzg5MSwgMjkwLjIwNDcwNjQxNDA2NF0sIFsyOTAuNDEzNjg3OTU2MDU2MTUsIDI5Mi41Mzcy
ODA2ODAxMTgsIDI5My4wNjk1NTQ0OTgxMDIsIDI5NC4wNjE3NjI4ODMwNDU2LCAyOTQuNzQ0NjY2
MTc1ODg1NDddLCBbMjg5LjkxMDI0MDMwMDcyODE2LCAyOTQuMzM2MzQyMDYxMzA0NywgMjk1LjI5
MzUyMDY1MzEwMDEzLCAyOTYuMDAyODg2NDU4ODE4MywgMjk2Ljg2OTY4MjUwNDI3OTldLCBbMjg4
Ljk2MDEwMjI2MDc0MTQsIDI5MC42MDcwNjg0MDMxMjA1NCwgMjkxLjY0MTIwNTkxNTM0ODE3LCAy
OTIuNTQ0MTE1NzE5NTA1NTYsIDI5My4zMDA4NzU4OTE1MzM4XV19fX19fX0sICJidWlsZFRpbWUi
OiAiMjAxMy0wNC0xOFQwNzo0Mzo0My40MTI2MzciLCAiZGVzY3JpcHRpb24iOiAiV2l0aCBwYXRj
aCIsICJyZXZpc2lvbnMiOiB7IldlYktpdCI6IHsidGltZXN0YW1wIjogIjIwMTMtMDQtMTZUMTA6
MDU6MjlaIiwgInJldmlzaW9uIjogIjE0ODUwOCJ9fX1dPC9zY3JpcHQ+CgoKPHNjcmlwdCBhc3lu
Yz0iIiBzcmM9Ii9Vc2Vycy9hYnVjdXIvV2ViS2l0L1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2Vz
L2pxdWVyeS5mbG90Lm1pbi5qcyI+PC9zY3JpcHQ+PHNjcmlwdCBhc3luYz0iIiBzcmM9Ii9Vc2Vy
cy9hYnVjdXIvV2ViS2l0L1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL2pxdWVyeS50YWJsZXNv
cnRlci5taW4uanMiPjwvc2NyaXB0PjxzY3JpcHQgYXN5bmM9IiIgc3JjPSIvVXNlcnMvYWJ1Y3Vy
L1dlYktpdC9QZXJmb3JtYW5jZVRlc3RzL3Jlc291cmNlcy9zdGF0aXN0aWNzLmpzIj48L3Njcmlw
dD48L2JvZHk+PC9odG1sPll0ZXh0L2h0bWxVVVRGLTgAAAAIAAAADQAAAB8AAAAxAAAANgAAAD8A
AABOAAAAZAAAAHYAAACMAAAA7QAAA08ABcyUAAXMpgAFzK8ABcz7AAXPRgAGYf0ABmIPAAZiGAAG
YmsABmS9AAalSQAGpVsABqVkAAalqwAGp/EABsruAAbLAAAGywsABssiAAbLQAAGy0EABstwAAmw
rQAJsLcAAAAAAAAEAQAAAAAAAAAkAAAAAAAAAAAAAAAAAAmwvQ==
</data>

          </attachment>
      

    </bug>

</bugzilla>