<?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>175815</bug_id>
          
          <creation_ts>2017-08-22 00:50:53 -0700</creation_ts>
          <short_desc>REGRESSION(r216718): Speedometer 2.0: Fix vanilla JS examples</short_desc>
          <delta_ts>2017-08-22 16:11:42 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>172339</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>addyo</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lforschler</cc>
    
    <cc>mathias</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340982</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 00:50:53 -0700</bug_when>
    <thetext>Vanilla JS &amp; ES2015 test cases got broken again in https://trac.webkit.org/changeset/217107

We can&apos;t use new Date().getTime() to generate an unique ID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340983</commentid>
    <comment_count>1</comment_count>
      <attachid>318744</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 00:56:49 -0700</bug_when>
    <thetext>Created attachment 318744
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340984</commentid>
    <comment_count>2</comment_count>
      <attachid>318744</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 00:57:52 -0700</bug_when>
    <thetext>Comment on attachment 318744
Fixes the bug

bundle.app* files are generated from npm run build. See changes in
PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js
PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015/src/store.js
for the actual code/test change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340990</commentid>
    <comment_count>3</comment_count>
      <attachid>318744</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 01:11:14 -0700</bug_when>
    <thetext>Comment on attachment 318744
Fixes the bug

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

&gt; PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js:5
&gt; +var uniqueID = 0;

`vanilla-examples/es2015/src/store.js` has the same line but uses `let` instead of `var` and starts at `1` instead of `0`. Is there a reason for these subtle differences? If so, we may want to add a comment saying so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340994</commentid>
    <comment_count>4</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 01:40:21 -0700</bug_when>
    <thetext>How did https://trac.webkit.org/changeset/220043/webkit(In reply to Ryosuke Niwa from comment #0)
&gt; Vanilla JS &amp; ES2015 test cases got broken again in
&gt; https://trac.webkit.org/changeset/217107

That doesn’t seem like the right link.

This bug’s title refers to R220043 but that patch didn’t touch any JavaScript: https://trac.webkit.org/changeset/220043

Did you mean R216718 instead? https://trac.webkit.org/changeset/216718</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341247</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 13:54:46 -0700</bug_when>
    <thetext>(In reply to Mathias Bynens from comment #3)
&gt; Comment on attachment 318744 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318744&amp;action=review
&gt; 
&gt; &gt; PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js:5
&gt; &gt; +var uniqueID = 0;
&gt; 
&gt; `vanilla-examples/es2015/src/store.js` has the same line but uses `let`
&gt; instead of `var` and starts at `1` instead of `0`. Is there a reason for
&gt; these subtle differences? If so, we may want to add a comment saying so.

It looked like all variable declarations in this file was using `var` so I used that to be consistent.

(In reply to Mathias Bynens from comment #4)
&gt; How did https://trac.webkit.org/changeset/220043/webkit(In reply to Ryosuke
&gt; Niwa from comment #0)
&gt; &gt; Vanilla JS &amp; ES2015 test cases got broken again in
&gt; &gt; https://trac.webkit.org/changeset/217107
&gt; 
&gt; That doesn’t seem like the right link.
&gt; 
&gt; This bug’s title refers to R220043 but that patch didn’t touch any
&gt; JavaScript: https://trac.webkit.org/changeset/220043
&gt; 
&gt; Did you mean R216718 instead? https://trac.webkit.org/changeset/216718

Oops, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341322</commentid>
    <comment_count>6</comment_count>
      <attachid>318744</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-22 16:04:08 -0700</bug_when>
    <thetext>Comment on attachment 318744
Fixes the bug

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

&gt;&gt;&gt; PerformanceTests/Speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js:5
&gt;&gt;&gt; +var uniqueID = 0;
&gt;&gt; 
&gt;&gt; `vanilla-examples/es2015/src/store.js` has the same line but uses `let` instead of `var` and starts at `1` instead of `0`. Is there a reason for these subtle differences? If so, we may want to add a comment saying so.
&gt; 
&gt; It looked like all variable declarations in this file was using `var` so I used that to be consistent.
&gt; 
&gt; (In reply to Mathias Bynens from comment #4)

As Mathias asked, is there a reason to use 0 instead of 1 or vice versa?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341323</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 16:06:16 -0700</bug_when>
    <thetext>Oh oops, clearly, I need to start the value at 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341324</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-22 16:11:07 -0700</bug_when>
    <thetext>Committed r221054: &lt;http://trac.webkit.org/changeset/221054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341325</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-22 16:11:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/34023999&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318744</attachid>
            <date>2017-08-22 00:56:49 -0700</date>
            <delta_ts>2017-08-22 16:04:08 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-175815-20170822005646.patch</filename>
            <type>text/plain</type>
            <size>262622</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwODIxCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwMDY0ODE0YmY0
MGZjZDU0OWNlZDU1MjgxNDA0M2YzZGZmNjc0YzQuLmU0NzI4ZTQ5NDZlODM1MTUyZDcwZDljYzk1
NmY1MjI1ZWYzMTUwNTEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDgt
MjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lP
TihSMjIwMDQzKTogU3BlZWRvbWV0ZXIgMi4wOiBGaXggdmFuaWxsYSBKUyBleGFtcGxlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1ODE1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQm90aCB2YW5pbGxh
IEVTMjAxNSBhbmQgQmFiZWwgKyBXZWJQYWNrIHRlc3QgY2FzZXMgd2VyZSBmYWlsaW5nIHRvIG1h
cmsgVG9kbyBpdGVtcyBhcyBjb21wbGV0ZWQgc2luY2UgdGhleSB3ZXJlIHJlbHlpbmcgb24KKyAg
ICAgICAgYG5ldyBEYXRlKCkuZ2V0VGltZSgpYCB0byBnZW5lcmF0ZSBhbiB1bmlxdWUgSUQuIFRo
YXQncyBub3QgZ29pbmcgdG8gd29yayBpZiBtdWxpdHBsZSB0b2RvIGl0ZW1zIGFyZSBhZGRlZCB3
aXRoaW4gMW1zLgorCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuNzFiYjFm
NjcxZTRlNjU2MDRkMDUuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5k
bGUuYXBwLjcxYmIxZjY3MWU0ZTY1NjA0ZDA1LmpzLm1hcDogQWRkZWQuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwt
d2VicGFjay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanM6IFJlbW92ZWQu
CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGVi
ZTkuanMubWFwOiBSZW1vdmVkLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFu
aWZlc3QuMjEwMjA0MGM5YTZlMDRjYzA0NmUuanM6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9idW5kbGUubWFuaWZlc3QuMjEwMjA0MGM5YTZlMDRjYzA0NmUuanMubWFwOiBBZGRl
ZC4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5iMTZjYzA4ZTAxNmQw
Nzg4NmY1Zi5qczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5k
b3IuYjE2Y2MwOGUwMTZkMDc4ODZmNWYuanMubWFwOiBBZGRlZC4KKyAgICAgICAgKiBTcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3QvaW5kZXguaHRtbDoKKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFw
cC43MWJiMWY2NzFlNGU2NTYwNGQwNS5jc3M6IEFkZGVkLgorICAgICAgICAqIFNwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2sv
ZGlzdC9zdHlsZXMuYXBwLjcxYmIxZjY3MWU0ZTY1NjA0ZDA1LmNzcy5tYXA6IEFkZGVkLgorICAg
ICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmIxNmNjMDhlMDE2ZDA3ODg2ZjVm
LmNzczogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuYjE2
Y2MwOGUwMTZkMDc4ODZmNWYuY3NzLm1hcDogQWRkZWQuCisgICAgICAgICogU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9z
cmMvc3RvcmUuanM6CisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFu
aWxsYS1leGFtcGxlcy9lczIwMTUvc3JjL3N0b3JlLmpzOgorCiAyMDE3LTA4LTE2ICBNYXRoaWFz
IEJ5bmVucyAgPG1hdGhpYXNAcWl3aS5iZT4KIAogICAgICAgICBTcGVlZG9tZXRlcjogVXBkYXRl
IEFuZ3VsYXIgMSBUb2RvTVZDIGV4YW1wbGUgdG8gdjEuNi41CmRpZmYgLS1naXQgYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMv
ZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUuYXBwLjcxYmIxZjY3MWU0ZTY1NjA0ZDA1
LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC43MWJiMWY2
NzFlNGU2NTYwNGQwNS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTE5MmI0OTVlYTc5ZmE5YTg5OGU0YWEwM2Mz
Zjc2Njc2MTM0Zjg1Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3QvYnVuZGxlLmFwcC43MWJiMWY2NzFlNGU2NTYwNGQwNS5qcwpAQCAtMCwwICsxLDIg
QEAKK3dlYnBhY2tKc29ucChbMCwyXSxbZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBvKHQsZSl7cmV0dXJuKGV8fGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHQpfWZ1bmN0aW9u
IG4odCxlKXtyZXR1cm4oZXx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwodCl9ZnVuY3Rpb24g
cih0LGUsaSxvKXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxpLCEhbyl9ZnVuY3Rpb24gYyh0LGUsaSxv
KXtmdW5jdGlvbiBjKGkpe3ZhciByPWkudGFyZ2V0LGM9bihlLHQpLGw9QXJyYXkucHJvdG90eXBl
LmluZGV4T2YuY2FsbChjLHIpPj0wO2wmJm8uY2FsbChyLGkpfXZhciBsPSJibHVyIj09PWl8fCJm
b2N1cyI9PT1pO3IodCxpLGMsbCl9ZnVuY3Rpb24gbCh0LGUpe2lmKHQucGFyZW50Tm9kZSlyZXR1
cm4gdC5wYXJlbnROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKT90
LnBhcmVudE5vZGU6bCh0LnBhcmVudE5vZGUsZSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBpPXQuaW5k
ZXhPZihlKTtyZXR1cm4gaT09PS0xP3Q6dm9pZCB0LnNwbGljZShpLDEpfWkuZChlLCJhIixmdW5j
dGlvbigpe3JldHVybiBvfSksaS5kKGUsImIiLGZ1bmN0aW9uKCl7cmV0dXJuIG59KSxpLmQoZSwi
ZCIsZnVuY3Rpb24oKXtyZXR1cm4gcn0pLGkuZChlLCJjIixmdW5jdGlvbigpe3JldHVybiBjfSks
aS5kKGUsImUiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSxpLmQoZSwiZiIsZnVuY3Rpb24oKXtyZXR1
cm4gYX0pLE5vZGVMaXN0LnByb3RvdHlwZS5mb3JFYWNoPUFycmF5LnByb3RvdHlwZS5mb3JFYWNo
fSwsZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7aS5pKGMuYSkoKX12
YXIgbj1pKDEpLHI9KGkubihuKSxpKDEwKSksYz0oaS5uKHIpLGkoMCksaSg4KSk7ZS5hPW99LGZ1
bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0LGUpe3ZhciBpPXRoaXM7aS5t
b2RlbD10LGkudmlldz1lLGkudmlldy5iaW5kKCJuZXdUb2RvIixmdW5jdGlvbih0KXtpLmFkZEl0
ZW0odCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXQiLGZ1bmN0aW9uKHQpe2kuZWRpdEl0ZW0odC5p
ZCl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXREb25lIixmdW5jdGlvbih0KXtpLmVkaXRJdGVtU2F2
ZSh0LmlkLHQudGl0bGUpfSksaS52aWV3LmJpbmQoIml0ZW1FZGl0Q2FuY2VsIixmdW5jdGlvbih0
KXtpLmVkaXRJdGVtQ2FuY2VsKHQuaWQpfSksaS52aWV3LmJpbmQoIml0ZW1SZW1vdmUiLGZ1bmN0
aW9uKHQpe2kucmVtb3ZlSXRlbSh0LmlkKX0pLGkudmlldy5iaW5kKCJpdGVtVG9nZ2xlIixmdW5j
dGlvbih0KXtpLnRvZ2dsZUNvbXBsZXRlKHQuaWQsdC5jb21wbGV0ZWQpfSksaS52aWV3LmJpbmQo
InJlbW92ZUNvbXBsZXRlZCIsZnVuY3Rpb24oKXtpLnJlbW92ZUNvbXBsZXRlZEl0ZW1zKCl9KSxp
LnZpZXcuYmluZCgidG9nZ2xlQWxsIixmdW5jdGlvbih0KXtpLnRvZ2dsZUFsbCh0LmNvbXBsZXRl
ZCl9KX1lLmE9byxvLnByb3RvdHlwZS5zZXRWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3BsaXQo
Ii8iKVsxXSxpPWV8fCIiO3RoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKGkpfSxvLnByb3RvdHlwZS5z
aG93QWxsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoZnVuY3Rpb24oZSl7dC52
aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUpfSl9LG8ucHJvdG90eXBlLnNob3dBY3RpdmU9ZnVu
Y3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZCh7Y29tcGxldGVkOiExfSxmdW5jdGlvbihl
KXt0LnZpZXcucmVuZGVyKCJzaG93RW50cmllcyIsZSl9KX0sby5wcm90b3R5cGUuc2hvd0NvbXBs
ZXRlZD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6ITB9LGZ1
bmN0aW9uKGUpe3Qudmlldy5yZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxvLnByb3RvdHlwZS5h
ZGRJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7IiIhPT10LnRyaW0oKSYmZS5tb2RlbC5jcmVh
dGUodCxmdW5jdGlvbigpe2Uudmlldy5yZW5kZXIoImNsZWFyTmV3VG9kbyIpLGUuX2ZpbHRlcigh
MCl9KX0sby5wcm90b3R5cGUuZWRpdEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVs
LnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbSIse2lkOnQsdGl0bGU6
aVswXS50aXRsZX0pfSl9LG8ucHJvdG90eXBlLmVkaXRJdGVtU2F2ZT1mdW5jdGlvbih0LGUpe3Zh
ciBpPXRoaXM7ZS50cmltKCk/aS5tb2RlbC51cGRhdGUodCx7dGl0bGU6ZX0sZnVuY3Rpb24oKXtp
LnZpZXcucmVuZGVyKCJlZGl0SXRlbURvbmUiLHtpZDp0LHRpdGxlOmV9KX0pOmkucmVtb3ZlSXRl
bSh0KX0sby5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztl
Lm1vZGVsLnJlYWQodCxmdW5jdGlvbihpKXtlLnZpZXcucmVuZGVyKCJlZGl0SXRlbURvbmUiLHtp
ZDp0LHRpdGxlOmlbMF0udGl0bGV9KX0pfSxvLnByb3RvdHlwZS5yZW1vdmVJdGVtPWZ1bmN0aW9u
KHQpe3ZhciBlPXRoaXM7ZS5tb2RlbC5yZW1vdmUodCxmdW5jdGlvbigpe2Uudmlldy5yZW5kZXIo
InJlbW92ZUl0ZW0iLHQpfSksZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnJlbW92ZUNvbXBsZXRl
ZEl0ZW1zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDohMH0s
ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3QucmVtb3ZlSXRlbShlLmlkKX0pfSks
dC5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnRvZ2dsZUNvbXBsZXRlPWZ1bmN0aW9uKHQsZSxpKXt2
YXIgbz10aGlzO28ubW9kZWwudXBkYXRlKHQse2NvbXBsZXRlZDplfSxmdW5jdGlvbigpe28udmll
dy5yZW5kZXIoImVsZW1lbnRDb21wbGV0ZSIse2lkOnQsY29tcGxldGVkOmV9KX0pLGl8fG8uX2Zp
bHRlcigpfSxvLnByb3RvdHlwZS50b2dnbGVBbGw9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1v
ZGVsLnJlYWQoe2NvbXBsZXRlZDohdH0sZnVuY3Rpb24oaSl7aS5mb3JFYWNoKGZ1bmN0aW9uKGkp
e2UudG9nZ2xlQ29tcGxldGUoaS5pZCx0LCEwKX0pfSksZS5fZmlsdGVyKCl9LG8ucHJvdG90eXBl
Ll91cGRhdGVDb3VudD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5nZXRDb3VudChmdW5j
dGlvbihlKXt0LnZpZXcucmVuZGVyKCJ1cGRhdGVFbGVtZW50Q291bnQiLGUuYWN0aXZlKSx0LnZp
ZXcucmVuZGVyKCJjbGVhckNvbXBsZXRlZEJ1dHRvbiIse2NvbXBsZXRlZDplLmNvbXBsZXRlZCx2
aXNpYmxlOmUuY29tcGxldGVkPjB9KSx0LnZpZXcucmVuZGVyKCJ0b2dnbGVBbGwiLHtjaGVja2Vk
OmUuY29tcGxldGVkPT09ZS50b3RhbH0pLHQudmlldy5yZW5kZXIoImNvbnRlbnRCbG9ja1Zpc2li
aWxpdHkiLHt2aXNpYmxlOmUudG90YWw+MH0pfSl9LG8ucHJvdG90eXBlLl9maWx0ZXI9ZnVuY3Rp
b24odCl7dmFyIGU9dGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdGhp
cy5fYWN0aXZlUm91dGUuc3Vic3RyKDEpO3RoaXMuX3VwZGF0ZUNvdW50KCksKHR8fCJBbGwiIT09
dGhpcy5fbGFzdEFjdGl2ZVJvdXRlfHx0aGlzLl9sYXN0QWN0aXZlUm91dGUhPT1lKSYmdGhpc1si
c2hvdyIrZV0oKSx0aGlzLl9sYXN0QWN0aXZlUm91dGU9ZX0sby5wcm90b3R5cGUuX3VwZGF0ZUZp
bHRlclN0YXRlPWZ1bmN0aW9uKHQpe3Q9dC5zcGxpdCgiPyIpWzBdLHRoaXMuX2FjdGl2ZVJvdXRl
PXQsIiI9PT10JiYodGhpcy5fYWN0aXZlUm91dGU9IkFsbCIpLHRoaXMuX2ZpbHRlcigpLHRoaXMu
dmlldy5yZW5kZXIoInNldEZpbHRlciIsdCl9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG89ImZ1bmN0
aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVu
Y3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9u
Ij09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90
b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9OyFmdW5jdGlvbihpKXt2YXIgbj17fSxyPXt9O24ubGVu
Z3RoPTAsbi5nZXRJdGVtPWZ1bmN0aW9uKHQpe3JldHVybiByW3RdfHxudWxsfSxuLnNldEl0ZW09
ZnVuY3Rpb24odCxlKXsidW5kZWZpbmVkIj09dHlwZW9mIGU/bi5yZW1vdmVJdGVtKHQpOihyLmhh
c093blByb3BlcnR5KHQpfHxuLmxlbmd0aCsrLHJbdF09IiIrZSl9LG4ucmVtb3ZlSXRlbT1mdW5j
dGlvbih0KXtyLmhhc093blByb3BlcnR5KHQpJiYoZGVsZXRlIHJbdF0sbi5sZW5ndGgtLSl9LG4u
a2V5PWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyhyKVt0XXx8bnVsbH0sbi5jbGVhcj1m
dW5jdGlvbigpe3I9e30sbi5sZW5ndGg9MH0sIm9iamVjdCI9PT1vKGUpP3QuZXhwb3J0cz1uOmku
bG9jYWxTdG9yYWdlTWVtb3J5PW59KHRoaXMpfSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG8odCl7dGhpcy5zdG9yYWdlPXR9dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5
bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJu
IHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv
bCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6
dHlwZW9mIHR9O2UuYT1vLG8ucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3Q9dHx8IiIs
ZT1lfHxmdW5jdGlvbigpe307dmFyIGk9e3RpdGxlOnQudHJpbSgpLGNvbXBsZXRlZDohMX07dGhp
cy5zdG9yYWdlLnNhdmUoaSxlKX0sby5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0LGUpe3ZhciBp
PSJ1bmRlZmluZWQiPT10eXBlb2YgdD8idW5kZWZpbmVkIjpuKHQpO3JldHVybiBlPWV8fGZ1bmN0
aW9uKCl7fSwiZnVuY3Rpb24iPT09aT8oZT10LHRoaXMuc3RvcmFnZS5maW5kQWxsKGUpKTp2b2lk
KCJzdHJpbmciPT09aXx8Im51bWJlciI9PT1pPyh0PXBhcnNlSW50KHQsMTApLHRoaXMuc3RvcmFn
ZS5maW5kKHtpZDp0fSxlKSk6dGhpcy5zdG9yYWdlLmZpbmQodCxlKSl9LG8ucHJvdG90eXBlLnVw
ZGF0ZT1mdW5jdGlvbih0LGUsaSl7dGhpcy5zdG9yYWdlLnNhdmUoZSxpLHQpfSxvLnByb3RvdHlw
ZS5yZW1vdmU9ZnVuY3Rpb24odCxlKXt0aGlzLnN0b3JhZ2UucmVtb3ZlKHQsZSl9LG8ucHJvdG90
eXBlLnJlbW92ZUFsbD1mdW5jdGlvbih0KXt0aGlzLnN0b3JhZ2UuZHJvcCh0KX0sby5wcm90b3R5
cGUuZ2V0Q291bnQ9ZnVuY3Rpb24odCl7dmFyIGU9e2FjdGl2ZTowLGNvbXBsZXRlZDowLHRvdGFs
OjB9O3RoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uKGkpe2kuZm9yRWFjaChmdW5jdGlvbih0
KXt0LmNvbXBsZXRlZD9lLmNvbXBsZXRlZCsrOmUuYWN0aXZlKyssZS50b3RhbCsrfSksdChlKX0p
fX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7aWYoZT1lfHxm
dW5jdGlvbigpe30sdGhpcy5fZGJOYW1lPXQsIXJbdF0pe3ZhciBpPXt0b2RvczpbXX07clt0XT1K
U09OLnN0cmluZ2lmeShpKX1lLmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdF0pKSx0aGlzLnN1YnNj
cmliZXJzPVtdfXZhciBuPWkoMCkscj1pKDQpO2kubihyKTtlLmE9bzt2YXIgYz0wO28ucHJvdG90
eXBlLnN1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLnN1YnNjcmli
ZXJzLnB1c2godCksZnVuY3Rpb24oKXtyZXR1cm4gaS5pKG4uZikoZS5zdWJzY3JpYmVycyx0KX19
LG8ucHJvdG90eXBlLl9ub3RpZnk9ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmliZXJzLmZvckVhY2go
ZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfSxvLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9uKHQsZSl7
aWYoZSl7dmFyIGk9SlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zO2UuY2FsbCh0aGlz
LGkuZmlsdGVyKGZ1bmN0aW9uKGUpe2Zvcih2YXIgaSBpbiB0KWlmKHRbaV0hPT1lW2ldKXJldHVy
biExO3JldHVybiEwfSkpfX0sby5wcm90b3R5cGUuZmluZEFsbD1mdW5jdGlvbih0KXt0PXR8fGZ1
bmN0aW9uKCl7fSx0LmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSkudG9kb3Mp
fSxvLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1KU09OLnBhcnNlKHJbdGhp
cy5fZGJOYW1lXSksbj1vLnRvZG9zO2lmKGU9ZXx8ZnVuY3Rpb24oKXt9LGkpe2Zvcih2YXIgbD0w
O2w8bi5sZW5ndGg7bCsrKWlmKG5bbF0uaWQ9PT1pKXtmb3IodmFyIGEgaW4gdCluW2xdW2FdPXRb
YV07YnJlYWt9clt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KG8pLGUuY2FsbCh0aGlzLEpT
T04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2Rvcyl9ZWxzZSB0LmlkPWMrKyxuLnB1c2godCks
clt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KG8pLGUuY2FsbCh0aGlzLFt0XSk7dGhpcy5f
bm90aWZ5KCl9LG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1KU09O
LnBhcnNlKHJbdGhpcy5fZGJOYW1lXSksbz1pLnRvZG9zLG49MDtuPG8ubGVuZ3RoO24rKylpZihv
W25dLmlkPT09dCl7by5zcGxpY2UobiwxKTticmVha31yW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJp
bmdpZnkoaSksZS5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zKSx0
aGlzLl9ub3RpZnkoKX0sby5wcm90b3R5cGUuZHJvcD1mdW5jdGlvbih0KXtyW3RoaXMuX2RiTmFt
ZV09SlNPTi5zdHJpbmdpZnkoe3RvZG9zOltdfSksdC5jYWxsKHRoaXMsSlNPTi5wYXJzZShyW3Ro
aXMuX2RiTmFtZV0pLnRvZG9zKSx0aGlzLl9ub3RpZnkoKX19LGZ1bmN0aW9uKHQsZSxpKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gbygpe3RoaXMuZGVmYXVsdFRlbXBsYXRlPSdcbiAgICA8bGkgZGF0
YS1pZD0ie3tpZH19IiBjbGFzcz0ie3tjb21wbGV0ZWR9fSI+XG4gICAgICA8ZGl2IGNsYXNzPSJ2
aWV3Ij5cbiAgICAgICAgPGlucHV0IGNsYXNzPSJ0b2dnbGUiIHR5cGU9ImNoZWNrYm94IiB7e2No
ZWNrZWR9fSAvPlxuICAgICAgICA8bGFiZWw+e3t0aXRsZX19PC9sYWJlbD5cbiAgICAgICAgPGJ1
dHRvbiBjbGFzcz0iZGVzdHJveSI+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxu
ICAnfWUuYT1vO3ZhciBuPXsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiIm
cXVvdDsiLCInIjoiJiN4Mjc7IiwiYCI6IiYjeDYwOyJ9LHI9ZnVuY3Rpb24odCl7cmV0dXJuIG5b
dF19LGM9L1smPD4iJ2BdL2csbD1uZXcgUmVnRXhwKGMuc291cmNlKSxhPWZ1bmN0aW9uKHQpe3Jl
dHVybiB0JiZsLnRlc3QodCk/dC5yZXBsYWNlKGMscik6dH07by5wcm90b3R5cGUuc2hvdz1mdW5j
dGlvbih0KXt2YXIgZSxpLG89IiI7Zm9yKGU9MCxpPXQubGVuZ3RoO2U8aTtlKyspe3ZhciBuPXRo
aXMuZGVmYXVsdFRlbXBsYXRlLHI9IiIsYz0iIjt0W2VdLmNvbXBsZXRlZCYmKHI9ImNvbXBsZXRl
ZCIsYz0iY2hlY2tlZCIpLG49bi5yZXBsYWNlKCJ7e2lkfX0iLHRbZV0uaWQpLG49bi5yZXBsYWNl
KCJ7e3RpdGxlfX0iLGEodFtlXS50aXRsZSkpLG49bi5yZXBsYWNlKCJ7e2NvbXBsZXRlZH19Iixy
KSxuPW4ucmVwbGFjZSgie3tjaGVja2VkfX0iLGMpLG8rPW59cmV0dXJuIG99LG8ucHJvdG90eXBl
Lml0ZW1Db3VudGVyPWZ1bmN0aW9uKHQpe3ZhciBlPTE9PT10PyIiOiJzIjtyZXR1cm4iPHN0cm9u
Zz4iK3QrIjwvc3Ryb25nPiBpdGVtIitlKyIgbGVmdCJ9LG8ucHJvdG90eXBlLmNsZWFyQ29tcGxl
dGVkQnV0dG9uPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/IkNsZWFyIGNvbXBsZXRlZCI6IiJ9fSxm
dW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCl7dGhpcy5zdG9yYWdlPW5l
dyBhLmEodCksdGhpcy5tb2RlbD1uZXcgbC5hKHRoaXMuc3RvcmFnZSksdGhpcy50ZW1wbGF0ZT1u
ZXcgZC5hLHRoaXMudmlldz1uZXcgci5hKHRoaXMudGVtcGxhdGUpLHRoaXMuY29udHJvbGxlcj1u
ZXcgYy5hKHRoaXMubW9kZWwsdGhpcy52aWV3KX1mdW5jdGlvbiBuKCl7cz1uZXcgbygidG9kb3Mt
dmFuaWxsYWpzIikscy5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQubG9jYXRpb24uaGFzaCks
dS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KX12YXIgcj1pKDkpLGM9aSgzKSxsPWko
NSksYT1pKDYpLGQ9aSg3KTtpKDApO2kuZChlLCJhIixmdW5jdGlvbigpe3JldHVybiBufSk7dmFy
IHM9dm9pZCAwLHU9W119LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0
LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxs
IGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG4odCl7aS5pKGEuYSkoIi5maWx0ZXJz
IC5zZWxlY3RlZCIpLmNsYXNzTmFtZT0iIixpLmkoYS5hKSgnLmZpbHRlcnMgW2hyZWY9IiMvJyt0
KyciXScpLmNsYXNzTmFtZT0ic2VsZWN0ZWQifWZ1bmN0aW9uIHIodCxlKXt2YXIgbz1pLmkoYS5h
KSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtvJiYoby5jbGFzc05hbWU9ZT8iY29tcGxldGVkIjoiIixp
LmkoYS5hKSgiaW5wdXQiLG8pLmNoZWNrZWQ9ZSl9ZnVuY3Rpb24gYyh0LGUpe3ZhciBvPWkuaShh
LmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO2lmKG8pe28uY2xhc3NOYW1lPW8uY2xhc3NOYW1lKyIg
ZWRpdGluZyI7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtuLmNsYXNzTmFt
ZT0iZWRpdCIsby5hcHBlbmRDaGlsZChuKSxuLmZvY3VzKCksbi52YWx1ZT1lfX1mdW5jdGlvbiBs
KHQpe3ZhciBlPWkuaShhLmUpKHQsImxpIik7cmV0dXJuIHBhcnNlSW50KGUuZGF0YXNldC5pZCwx
MCl9dmFyIGE9aSgwKSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgaT0wO2k8
ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO28uZW51bWVyYWJsZT1vLmVudW1lcmFibGV8fCExLG8u
Y29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHQsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbihlLGksbyl7cmV0dXJuIGkmJnQo
ZS5wcm90b3R5cGUsaSksbyYmdChlLG8pLGV9fSgpLHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUp
e28odGhpcyx0KSx0aGlzLnRlbXBsYXRlPWUsdGhpcy5FTlRFUl9LRVk9MTMsdGhpcy5FU0NBUEVf
S0VZPTI3LHRoaXMuJHRvZG9MaXN0PWkuaShhLmEpKCIudG9kby1saXN0IiksdGhpcy4kdG9kb0l0
ZW1Db3VudGVyPWkuaShhLmEpKCIudG9kby1jb3VudCIpLHRoaXMuJGNsZWFyQ29tcGxldGVkPWku
aShhLmEpKCIuY2xlYXItY29tcGxldGVkIiksdGhpcy4kbWFpbj1pLmkoYS5hKSgiLm1haW4iKSx0
aGlzLiRmb290ZXI9aS5pKGEuYSkoIi5mb290ZXIiKSx0aGlzLiR0b2dnbGVBbGw9aS5pKGEuYSko
Ii50b2dnbGUtYWxsIiksdGhpcy4kbmV3VG9kbz1pLmkoYS5hKSgiLm5ldy10b2RvIil9cmV0dXJu
IGQodCxbe2tleToiX3JlbW92ZUl0ZW0iLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWkuaShhLmEp
KCdbZGF0YS1pZD0iJyt0KyciXScpO2UmJnRoaXMuJHRvZG9MaXN0LnJlbW92ZUNoaWxkKGUpfX0s
e2tleToiX2NsZWFyQ29tcGxldGVkQnV0dG9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuJGNs
ZWFyQ29tcGxldGVkLmlubmVySFRNTD10aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9u
KHQpLHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXk9ZT8iYmxvY2siOiJub25lIn19
LHtrZXk6Il9lZGl0SXRlbURvbmUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG89aS5pKGEuYSko
J1tkYXRhLWlkPSInK3QrJyJdJyk7aWYobyl7dmFyIG49aS5pKGEuYSkoImlucHV0LmVkaXQiLG8p
O28ucmVtb3ZlQ2hpbGQobiksby5jbGFzc05hbWU9by5jbGFzc05hbWUucmVwbGFjZSgiZWRpdGlu
ZyIsIiIpLGkuaShhLmIpKCJsYWJlbCIsbykuZm9yRWFjaChmdW5jdGlvbih0KXt0LnRleHRDb250
ZW50PWV9KX19fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxv
PXtzaG93RW50cmllczpmdW5jdGlvbigpe2kuJHRvZG9MaXN0LmlubmVySFRNTD1pLnRlbXBsYXRl
LnNob3coZSl9LHJlbW92ZUl0ZW06ZnVuY3Rpb24oKXtpLl9yZW1vdmVJdGVtKGUpfSx1cGRhdGVF
bGVtZW50Q291bnQ6ZnVuY3Rpb24oKXtpLiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJIVE1MPWkudGVt
cGxhdGUuaXRlbUNvdW50ZXIoZSl9LGNsZWFyQ29tcGxldGVkQnV0dG9uOmZ1bmN0aW9uKCl7aS5f
Y2xlYXJDb21wbGV0ZWRCdXR0b24oZS5jb21wbGV0ZWQsZS52aXNpYmxlKX0sY29udGVudEJsb2Nr
VmlzaWJpbGl0eTpmdW5jdGlvbigpe2kuJG1haW4uc3R5bGUuZGlzcGxheT1pLiRmb290ZXIuc3R5
bGUuZGlzcGxheT1lLnZpc2libGU/ImJsb2NrIjoibm9uZSJ9LHRvZ2dsZUFsbDpmdW5jdGlvbigp
e2kuJHRvZ2dsZUFsbC5jaGVja2VkPWUuY2hlY2tlZH0sc2V0RmlsdGVyOmZ1bmN0aW9uKCl7bihl
KX0sY2xlYXJOZXdUb2RvOmZ1bmN0aW9uKCl7aS4kbmV3VG9kby52YWx1ZT0iIn0sZWxlbWVudENv
bXBsZXRlOmZ1bmN0aW9uKCl7cihlLmlkLGUuY29tcGxldGVkKX0sZWRpdEl0ZW06ZnVuY3Rpb24o
KXtjKGUuaWQsZS50aXRsZSl9LGVkaXRJdGVtRG9uZTpmdW5jdGlvbigpe2kuX2VkaXRJdGVtRG9u
ZShlLmlkLGUudGl0bGUpfX07b1t0XSgpfX0se2tleToiX2JpbmRJdGVtRWRpdERvbmUiLHZhbHVl
OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aS5pKGEuYykoZS4kdG9kb0xpc3QsImxpIC5lZGl0Iiwi
Ymx1ciIsZnVuY3Rpb24oKXt0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZHx8dCh7aWQ6bCh0aGlzKSx0
aXRsZTp0aGlzLnZhbHVlfSl9KSxpLmkoYS5jKShlLiR0b2RvTGlzdCwibGkgLmVkaXQiLCJrZXlw
cmVzcyIsZnVuY3Rpb24odCl7dC5rZXlDb2RlPT09ZS5FTlRFUl9LRVkmJnRoaXMuYmx1cigpfSl9
fSx7a2V5OiJfYmluZEl0ZW1FZGl0Q2FuY2VsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlz
O2kuaShhLmMpKGUuJHRvZG9MaXN0LCJsaSAuZWRpdCIsImtleXVwIixmdW5jdGlvbihpKXtpLmtl
eUNvZGU9PT1lLkVTQ0FQRV9LRVkmJih0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZD0hMCx0aGlzLmJs
dXIoKSx0KHtpZDpsKHRoaXMpfSkpfSl9fSx7a2V5OiJiaW5kIix2YWx1ZTpmdW5jdGlvbih0LGUp
e3ZhciBvPXRoaXM7Im5ld1RvZG8iPT09dD9pLmkoYS5kKShvLiRuZXdUb2RvLCJjaGFuZ2UiLGZ1
bmN0aW9uKCl7ZShvLiRuZXdUb2RvLnZhbHVlKX0pOiJyZW1vdmVDb21wbGV0ZWQiPT09dD9pLmko
YS5kKShvLiRjbGVhckNvbXBsZXRlZCwiY2xpY2siLGZ1bmN0aW9uKCl7ZSgpfSk6InRvZ2dsZUFs
bCI9PT10P2kuaShhLmQpKG8uJHRvZ2dsZUFsbCwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7Y29tcGxl
dGVkOnRoaXMuY2hlY2tlZH0pfSk6Iml0ZW1FZGl0Ij09PXQ/aS5pKGEuYykoby4kdG9kb0xpc3Qs
ImxpIGxhYmVsIiwiZGJsY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKX0pfSk6Iml0ZW1S
ZW1vdmUiPT09dD9pLmkoYS5jKShvLiR0b2RvTGlzdCwiLmRlc3Ryb3kiLCJjbGljayIsZnVuY3Rp
b24oKXtlKHtpZDpsKHRoaXMpfSl9KToiaXRlbVRvZ2dsZSI9PT10P2kuaShhLmMpKG8uJHRvZG9M
aXN0LCIudG9nZ2xlIiwiY2xpY2siLGZ1bmN0aW9uKCl7ZSh7aWQ6bCh0aGlzKSxjb21wbGV0ZWQ6
dGhpcy5jaGVja2VkfSl9KToiaXRlbUVkaXREb25lIj09PXQ/by5fYmluZEl0ZW1FZGl0RG9uZShl
KToiaXRlbUVkaXRDYW5jZWwiPT09dCYmby5fYmluZEl0ZW1FZGl0Q2FuY2VsKGUpfX1dKSx0fSgp
O2UuYT1zfSxmdW5jdGlvbih0LGUpe30sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBvKCl7aS5pKHIuZCkod2luZG93LCJsb2FkIixuLmEpLGkuaShyLmQpKHdpbmRvdywiaGFz
aGNoYW5nZSIsbi5hKX12YXIgbj1pKDIpLHI9aSgwKTsiY29tcGxldGUiPT09ZG9jdW1lbnQucmVh
ZHlTdGF0ZTtvKCl9XSxbMTFdKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPWJ1bmRsZS5hcHAuNzFi
YjFmNjcxZTRlNjU2MDRkMDUuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC43MWJi
MWY2NzFlNGU2NTYwNGQwNS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlz
dC9idW5kbGUuYXBwLjcxYmIxZjY3MWU0ZTY1NjA0ZDA1LmpzLm1hcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMWNm
MDk2ZGM2YmQyOGJlYzZjNjU2Mzc2OWJiMDg5ZDYyZGYzODg2Ci0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC43MWJiMWY2NzFlNGU2
NTYwNGQwNS5qcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndl
YnBhY2s6Ly8vYnVuZGxlLmFwcC43MWJiMWY2NzFlNGU2NTYwNGQwNS5qcyIsIndlYnBhY2s6Ly8v
Li9oZWxwZXJzLmpzIiwid2VicGFjazovLy8uL2FwcC5qcyIsIndlYnBhY2s6Ly8vLi9jb250cm9s
bGVyLmpzIiwid2VicGFjazovLy8uL21lbW9yeS5qcyIsIndlYnBhY2s6Ly8vLi9tb2RlbC5qcyIs
IndlYnBhY2s6Ly8vLi9zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi90ZW1wbGF0ZS5qcyIsIndlYnBh
Y2s6Ly8vLi90b2RvLmpzIiwid2VicGFjazovLy8uL3ZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vYm9v
dHN0cmFwLmpzIl0sIm5hbWVzIjpbIndlYnBhY2tKc29ucCIsIm1vZHVsZSIsImV4cG9ydHMiLCJf
X3dlYnBhY2tfcmVxdWlyZV9fIiwicXMiLCJzZWxlY3RvciIsInNjb3BlIiwiZG9jdW1lbnQiLCJx
dWVyeVNlbGVjdG9yIiwicXNhIiwicXVlcnlTZWxlY3RvckFsbCIsIiRvbiIsInRhcmdldCIsInR5
cGUiLCJjYWxsYmFjayIsInVzZUNhcHR1cmUiLCJhZGRFdmVudExpc3RlbmVyIiwiJGRlbGVnYXRl
IiwiaGFuZGxlciIsImRpc3BhdGNoRXZlbnQiLCJldmVudCIsInRhcmdldEVsZW1lbnQiLCJwb3Rl
bnRpYWxFbGVtZW50cyIsImhhc01hdGNoIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwi
Y2FsbCIsIiRwYXJlbnQiLCJlbGVtZW50IiwidGFnTmFtZSIsInBhcmVudE5vZGUiLCJ0b0xvd2Vy
Q2FzZSIsInJlbW92ZSIsImFycmF5IiwidGhpbmciLCJpbmRleCIsInNwbGljZSIsImQiLCJOb2Rl
TGlzdCIsImZvckVhY2giLCJvbkxvYWQiLCJpIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8z
X190b2RvX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2lu
ZGV4X2Nzc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3NzX18iLCJuIiwi
Q29udHJvbGxlciIsIm1vZGVsIiwidmlldyIsInRoYXQiLCJ0aGlzIiwiYmluZCIsInRpdGxlIiwi
YWRkSXRlbSIsIml0ZW0iLCJlZGl0SXRlbSIsImlkIiwiZWRpdEl0ZW1TYXZlIiwiZWRpdEl0ZW1D
YW5jZWwiLCJyZW1vdmVJdGVtIiwidG9nZ2xlQ29tcGxldGUiLCJjb21wbGV0ZWQiLCJyZW1vdmVD
b21wbGV0ZWRJdGVtcyIsInN0YXR1cyIsInRvZ2dsZUFsbCIsInNldFZpZXciLCJsb2NhdGlvbkhh
c2giLCJyb3V0ZSIsInNwbGl0IiwicGFnZSIsIl91cGRhdGVGaWx0ZXJTdGF0ZSIsInNob3dBbGwi
LCJyZWFkIiwiZGF0YSIsInJlbmRlciIsInNob3dBY3RpdmUiLCJzaG93Q29tcGxldGVkIiwidHJp
bSIsImNyZWF0ZSIsIl9maWx0ZXIiLCJ1cGRhdGUiLCJzaWxlbnQiLCJfdXBkYXRlQ291bnQiLCJn
ZXRDb3VudCIsInRvZG9zIiwiYWN0aXZlIiwidmlzaWJsZSIsImNoZWNrZWQiLCJ0b3RhbCIsImZv
cmNlIiwiYWN0aXZlUm91dGUiLCJfYWN0aXZlUm91dGUiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIs
InN1YnN0ciIsIl9sYXN0QWN0aXZlUm91dGUiLCJjdXJyZW50UGFnZSIsIl90eXBlb2YiLCJTeW1i
b2wiLCJpdGVyYXRvciIsIm9iaiIsImNvbnN0cnVjdG9yIiwicm9vdCIsImxvY2FsU3RvcmFnZU1l
bW9yeSIsImNhY2hlIiwibGVuZ3RoIiwiZ2V0SXRlbSIsImtleSIsInNldEl0ZW0iLCJ2YWx1ZSIs
Imhhc093blByb3BlcnR5IiwiT2JqZWN0Iiwia2V5cyIsImNsZWFyIiwiTW9kZWwiLCJzdG9yYWdl
IiwibmV3SXRlbSIsInNhdmUiLCJxdWVyeSIsInF1ZXJ5VHlwZSIsImZpbmRBbGwiLCJwYXJzZUlu
dCIsImZpbmQiLCJyZW1vdmVBbGwiLCJkcm9wIiwidG9kbyIsIlN0b3JlIiwibmFtZSIsIl9kYk5h
bWUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fIiwiSlNPTiIsInN0cmlu
Z2lmeSIsInBhcnNlIiwic3Vic2NyaWJlcnMiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBf
X2hlbHBlcnNfXyIsInVuaXF1ZUlEIiwic3Vic2NyaWJlIiwic3Vic2NyaWJlciIsIl90aGlzIiwi
cHVzaCIsIl9ub3RpZnkiLCJzIiwiZmlsdGVyIiwicSIsInVwZGF0ZURhdGEiLCJUZW1wbGF0ZSIs
ImRlZmF1bHRUZW1wbGF0ZSIsImh0bWxFc2NhcGVzIiwiJiIsIjwiLCI+IiwiXCIiLCInIiwiYCIs
ImVzY2FwZUh0bWxDaGFyIiwiY2hyIiwicmVVbmVzY2FwZWRIdG1sIiwicmVIYXNVbmVzY2FwZWRI
dG1sIiwiUmVnRXhwIiwic291cmNlIiwiZXNjYXBlIiwic3RyaW5nIiwidGVzdCIsInJlcGxhY2Ui
LCJzaG93IiwibCIsInRlbXBsYXRlIiwiaXRlbUNvdW50ZXIiLCJhY3RpdmVUb2RvcyIsInBsdXJh
bCIsImNsZWFyQ29tcGxldGVkQnV0dG9uIiwiY29tcGxldGVkVG9kb3MiLCJUb2RvIiwiX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8yX19tb2RlbF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fIiwi
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X18iLCJjb250cm9sbGVyIiwiX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250cm9sbGVyX18iLCJ1cGRhdGVUb2RvIiwibG9jYXRp
b24iLCJoYXNoIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5
cGVFcnJvciIsIl9zZXRGaWx0ZXIiLCJjbGFzc05hbWUiLCJfZWxlbWVudENvbXBsZXRlIiwibGlz
dEl0ZW0iLCJfZWRpdEl0ZW0iLCJpbnB1dCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBlbmRDaGlsZCIs
ImZvY3VzIiwiX2l0ZW1JZCIsImxpIiwiZGF0YXNldCIsIl9jcmVhdGVDbGFzcyIsImRlZmluZVBy
b3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxl
Iiwid3JpdGFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIs
IlZpZXciLCJFTlRFUl9LRVkiLCJFU0NBUEVfS0VZIiwiJHRvZG9MaXN0IiwiJHRvZG9JdGVtQ291
bnRlciIsIiRjbGVhckNvbXBsZXRlZCIsIiRtYWluIiwiJGZvb3RlciIsIiR0b2dnbGVBbGwiLCIk
bmV3VG9kbyIsImVsZW0iLCJyZW1vdmVDaGlsZCIsImNvbXBsZXRlZENvdW50IiwiaW5uZXJIVE1M
Iiwic3R5bGUiLCJkaXNwbGF5IiwibGFiZWwiLCJ0ZXh0Q29udGVudCIsInZpZXdDbWQiLCJwYXJh
bWV0ZXIiLCJ2aWV3Q29tbWFuZHMiLCJzaG93RW50cmllcyIsIl9yZW1vdmVJdGVtIiwidXBkYXRl
RWxlbWVudENvdW50IiwiX2NsZWFyQ29tcGxldGVkQnV0dG9uIiwiY29udGVudEJsb2NrVmlzaWJp
bGl0eSIsInNldEZpbHRlciIsImNsZWFyTmV3VG9kbyIsImVsZW1lbnRDb21wbGV0ZSIsImVkaXRJ
dGVtRG9uZSIsIl9lZGl0SXRlbURvbmUiLCJpc2NhbmNlbGVkIiwia2V5Q29kZSIsImJsdXIiLCJf
YmluZEl0ZW1FZGl0RG9uZSIsIl9iaW5kSXRlbUVkaXRDYW5jZWwiLCJib290c3RyYXAiLCJfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2hlbHBlcnNfXyIsIndpbmRvdyIsIl9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMF9fYXBwX18iLCJyZWFkeVN0YXRlIl0sIm1hcHBpbmdzIjoiQUFBQUEs
Y0FBYyxFQUFFLElBRVYsU0FBU0MsRUFBUUMsRUFBU0MsR0FFaEMsWUNEQSxTQUFTQyxHQUFHQyxF
QUFVQyxHQUNwQixPQUFRQSxHQUFTQyxVQUFVQyxjQUFjSCxHQUczQyxRQUFTSSxHQUFJSixFQUFV
QyxHQUNyQixPQUFRQSxHQUFTQyxVQUFVRyxpQkFBaUJMLEdBSTlDLFFBQVNNLEdBQUlDLEVBQVFD
LEVBQU1DLEVBQVVDLEdBQ25DSCxFQUFPSSxpQkFBaUJILEVBQU1DLElBQVlDLEdBSzVDLFFBQVNF
LEdBQVVMLEVBQVFQLEVBQVVRLEVBQU1LLEdBS3pDLFFBQVNDLEdBQWNDLEdBQ3JCLEdBQUlDLEdB
QWdCRCxFQUFNUixPQUN0QlUsRUFBb0JiLEVBQUlKLEVBQVVPLEdBQ2xDVyxFQUFXQyxNQUFNQyxV
QUFVQyxRQUFRQyxLQUFLTCxFQUFtQkQsSUFBa0IsQ0FFN0VFLElBQ0ZMLEVBQVFTLEtBQUtOLEVB
QWVELEdBVGhDLEdBQUlMLEdBQXNCLFNBQVRGLEdBQTRCLFVBQVRBLENBQ3BDRixHQUFJQyxFQUFR
QyxFQUFNTSxFQUFlSixHQWVuQyxRQUFTYSxHQUFRQyxFQUFTQyxHQUN4QixHQUFLRCxFQUFRRSxX
QUdiLE1BQUlGLEdBQVFFLFdBQVdELFFBQVFFLGdCQUFrQkYsRUFBUUUsY0FDaERILEVBQVFFLFdB
RVZILEVBQVFDLEVBQVFFLFdBQVlELEdBT3JDLFFBQVNHLEdBQU9DLEVBQU9DLEdBQ3JCLEdBQU1D
LEdBQVFGLEVBQU1SLFFBQVFTLEVBQzVCLE9BQUlDLFFBQ0tGLE1BRVRBLEdBQU1HLE9BQU9ELEVB
QU8sR0RqRERqQyxFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPRSxLQUN4REQsRUFB
b0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT08sS0FDeEROLEVBQW9CbUMsRUFBRXBDLEVB
QVMsSUFBSyxXQUFhLE1BQU9TLEtBQ3hEUixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxN
QUFPZSxLQUN4RGQsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBTzBCLEtBQ3hEekIs
RUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBTytCLEtDaUQ3RU0sU0FBU2QsVUFBVWUs
UUFBVWhCLE1BQU1DLFVBQVVlLFNEY3RDLENBRUQsU0FBU3ZDLEVBQVFDLEVBQVNDLEdBRWhDLFlF
eEVPLFNBQVNzQyxLQUNkdEMsRUFBQXVDLEVBQUFDLEVBQUEsS0Z3RW1CLEdBQUlDLEdBQTBEekMs
RUFBb0IsR0FFOUUwQyxHQURrRTFDLEVBQW9CMkMsRUFBRUYsR0FDL0N6QyxFQUFvQixLQUc3RHdD
LEdBRmlEeEMsRUFBb0IyQyxFQUFFRCxHQUM5QjFDLEVBQW9CLEdBQ3ZCQSxFQUFvQixHQUM5REQs
R0FBVyxFQUFJdUMsR0FhOUIsU0FBU3hDLEVBQVFDLEVBQVNDLEdBRWhDLFlHM0ZBLFNBQVM0QyxH
QUFXQyxFQUFPQyxHQUN6QixHQUFJQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFRQSxFQUNiRSxFQUFL
RCxLQUFPQSxFQUVaQyxFQUFLRCxLQUFLRyxLQUFLLFVBQVcsU0FBU0MsR0FDakNILEVBQUtJLFFB
QVFELEtBR2ZILEVBQUtELEtBQUtHLEtBQUssV0FBWSxTQUFTRyxHQUNsQ0wsRUFBS00sU0FBU0Qs
RUFBS0UsTUFHckJQLEVBQUtELEtBQUtHLEtBQUssZUFBZ0IsU0FBU0csR0FDdENMLEVBQUtRLGFB
QWFILEVBQUtFLEdBQUlGLEVBQUtGLFNBR2xDSCxFQUFLRCxLQUFLRyxLQUFLLGlCQUFrQixTQUFT
RyxHQUN4Q0wsRUFBS1MsZUFBZUosRUFBS0UsTUFHM0JQLEVBQUtELEtBQUtHLEtBQUssYUFBYyxT
QUFTRyxHQUNwQ0wsRUFBS1UsV0FBV0wsRUFBS0UsTUFHdkJQLEVBQUtELEtBQUtHLEtBQUssYUFB
YyxTQUFTRyxHQUNwQ0wsRUFBS1csZUFBZU4sRUFBS0UsR0FBSUYsRUFBS08sYUFHcENaLEVBQUtE
LEtBQUtHLEtBQUssa0JBQW1CLFdBQ2hDRixFQUFLYSx5QkFHUGIsRUFBS0QsS0FBS0csS0FBSyxZ
QUFhLFNBQVNZLEdBQ25DZCxFQUFLZSxVQUFVRCxFQUFPRixhQTNDMUI1RCxFQUFBLEVBQWU2QyxF
QW9EZkEsRUFBV3RCLFVBQVV5QyxRQUFVLFNBQVNDLEdBQ3RDLEdBQUlDLEdBQVFELEVBQWFFLE1B
QU0sS0FBSyxHQUNoQ0MsRUFBT0YsR0FBUyxFQUNwQmpCLE1BQUtvQixtQkFBbUJELElBTzFCdkIs
RUFBV3RCLFVBQVUrQyxRQUFVLFdBQzdCLEdBQUl0QixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIs
S0FBSyxTQUFTQyxHQUN2QnhCLEVBQUtELEtBQUswQixPQUFPLGNBQWVELE1BT3BDM0IsRUFBV3RC
LFVBQVVtRCxXQUFhLFdBQ2hDLEdBQUkxQixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsTUFBTVgs
V0FBVyxHQUFRLFNBQVNZLEdBQzNDeEIsRUFBS0QsS0FBSzBCLE9BQU8sY0FBZUQsTUFPcEMzQixF
QUFXdEIsVUFBVW9ELGNBQWdCLFdBQ25DLEdBQUkzQixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIs
TUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdBQzFDeEIsRUFBS0QsS0FBSzBCLE9BQU8sY0FBZUQsTUFR
cEMzQixFQUFXdEIsVUFBVTZCLFFBQVUsU0FBU0QsR0FDdEMsR0FBSUgsR0FBT0MsSUFFVSxNQUFq
QkUsRUFBTXlCLFFBSVY1QixFQUFLRixNQUFNK0IsT0FBTzFCLEVBQU8sV0FDdkJILEVBQUtELEtB
QUswQixPQUFPLGdCQUNqQnpCLEVBQUs4QixTQUFRLE1BT2pCakMsRUFBV3RCLFVBQVUrQixTQUFX
LFNBQVNDLEdBQ3ZDLEdBQUlQLEdBQU9DLElBQ1hELEdBQUtGLE1BQU15QixLQUFLaEIsRUFBSSxT
QUFTaUIsR0FDM0J4QixFQUFLRCxLQUFLMEIsT0FBTyxZQUFhbEIsS0FBSUosTUFBT3FCLEVBQUss
R0FBR3JCLFdBT3JETixFQUFXdEIsVUFBVWlDLGFBQWUsU0FBU0QsRUFBSUosR0FDL0MsR0FBSUgs
R0FBT0MsSUFDUEUsR0FBTXlCLE9BQ1I1QixFQUFLRixNQUFNaUMsT0FBT3hCLEdBQUtKLFNBQVEs
V0FDN0JILEVBQUtELEtBQUswQixPQUFPLGdCQUFpQmxCLEtBQUlKLFlBR3hDSCxFQUFLVSxXQUFX
SCxJQU9wQlYsRUFBV3RCLFVBQVVrQyxlQUFpQixTQUFTRixHQUM3QyxHQUFJUCxHQUFPQyxJQUNY
RCxHQUFLRixNQUFNeUIsS0FBS2hCLEVBQUksU0FBU2lCLEdBQzNCeEIsRUFBS0QsS0FBSzBCLE9B
QU8sZ0JBQWlCbEIsS0FBSUosTUFBT3FCLEVBQUssR0FBR3JCLFdBV3pETixFQUFXdEIsVUFBVW1D
LFdBQWEsU0FBU0gsR0FDekMsR0FBSVAsR0FBT0MsSUFDWEQsR0FBS0YsTUFBTWYsT0FBT3dCLEVB
QUksV0FDcEJQLEVBQUtELEtBQUswQixPQUFPLGFBQWNsQixLQUdqQ1AsRUFBSzhCLFdBTVBqQyxF
QUFXdEIsVUFBVXNDLHFCQUF1QixXQUMxQyxHQUFJYixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIs
TUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdBQzFDQSxFQUFLbEMsUUFBUSxTQUFTZSxHQUNwQkwsRUFB
S1UsV0FBV0wsRUFBS0UsUUFJekJQLEVBQUs4QixXQVlQakMsRUFBV3RCLFVBQVVvQyxlQUFpQixT
QUFTSixFQUFJSyxFQUFXb0IsR0FDNUQsR0FBSWhDLEdBQU9DLElBQ1hELEdBQUtGLE1BQU1pQyxP
QUFPeEIsR0FBS0ssYUFBWSxXQUNqQ1osRUFBS0QsS0FBSzBCLE9BQU8sbUJBQ2ZsQixLQUNBSyxn
QkFJQ29CLEdBQ0hoQyxFQUFLOEIsV0FRVGpDLEVBQVd0QixVQUFVd0MsVUFBWSxTQUFTSCxHQUN4
QyxHQUFJWixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsTUFBTVgsV0FBWUEsR0FBWSxTQUFTWSxH
QUNoREEsRUFBS2xDLFFBQVEsU0FBU2UsR0FDcEJMLEVBQUtXLGVBQWVOLEVBQUtFLEdBQUlLLEdB
QVcsT0FJNUNaLEVBQUs4QixXQU9QakMsRUFBV3RCLFVBQVUwRCxhQUFlLFdBQ2xDLEdBQUlqQyxH
QUFPQyxJQUNYRCxHQUFLRixNQUFNb0MsU0FBUyxTQUFTQyxHQUMzQm5DLEVBQUtELEtBQUswQixP
QUFPLHFCQUFzQlUsRUFBTUMsUUFDN0NwQyxFQUFLRCxLQUFLMEIsT0FBTyx3QkFDZmIsVUFBV3VC
LEVBQU12QixVQUNqQnlCLFFBQVNGLEVBQU12QixVQUFZLElBRzdCWixFQUFLRCxLQUFLMEIsT0FB
TyxhQUFjYSxRQUFTSCxFQUFNdkIsWUFBY3VCLEVBQU1JLFFBQ2xFdkMsRUFBS0QsS0FBSzBCLE9B
QU8sMEJBQTJCWSxRQUFTRixFQUFNSSxNQUFRLE9BUXZFMUMsRUFBV3RCLFVBQVV1RCxRQUFVLFNB
QVNVLEdBQ3RDLEdBQUlDLEdBQWN4QyxLQUFLeUMsYUFBYUMsT0FBTyxHQUFHQyxjQUFnQjNDLEtB
QUt5QyxhQUFhRyxPQUFPLEVBR3ZGNUMsTUFBS2dDLGdCQUtETyxHQUFtQyxRQUExQnZDLEtBQUs2
QyxrQkFBOEI3QyxLQUFLNkMsbUJBQXFCTCxJQUN4RXhDLEtBQUssT0FBU3dDLEtBR2hCeEMsS0FB
SzZDLGlCQUFtQkwsR0FNMUI1QyxFQUFXdEIsVUFBVThDLG1CQUFxQixTQUFTMEIsR0FHakRBLEVB
QWNBLEVBQVk1QixNQUFNLEtBQUssR0FDckNsQixLQUFLeUMsYUFBZUssRUFFQSxLQUFoQkEsSUFD
RjlDLEtBQUt5QyxhQUFlLE9BR3RCekMsS0FBSzZCLFVBRUw3QixLQUFLRixLQUFLMEIsT0FBTyxZ
QUFhc0IsS0gwRzFCLFNBQVNoRyxFQUFRQyxFQUFTQyxHQUVoQyxHQUFJK0YsR0FBNEIsa0JBQVhD
LFNBQW9ELGdCQUFwQkEsUUFBT0MsU0FBd0IsU0FBVUMsR0FBTyxhQUFjQSxJQUFTLFNBQVVBLEdB
QU8sTUFBT0EsSUFBeUIsa0JBQVhGLFNBQXlCRSxFQUFJQyxjQUFnQkgsUUFBVUUsSUFBUUYsT0FB
TzFFLFVBQVksZUFBa0I0RSxLSWpYdFEsU0FBVUUsR0FDUixHQUFJQyxNQUNBQyxJQUtKRCxHQUFt
QkUsT0FBUyxFQVM1QkYsRUFBbUJHLFFBQVUsU0FBU0MsR0FDcEMsTUFBT0gsR0FBTUcsSUFBUSxN
QVl2QkosRUFBbUJLLFFBQVUsU0FBU0QsRUFBS0UsR0FDcEIsbUJBQVZBLEdBQ1ROLEVBQW1CNUMs
V0FBV2dELElBRXhCSCxFQUFNTSxlQUFlSCxJQUN6QkosRUFBbUJFLFNBR3JCRCxFQUFNRyxHQUFP
LEdBQUtFLElBV3RCTixFQUFtQjVDLFdBQWEsU0FBU2dELEdBQ25DSCxFQUFNTSxlQUFlSCxXQUNo
QkgsR0FBTUcsR0FDYkosRUFBbUJFLFdBV3ZCRixFQUFtQkksSUFBTSxTQUFTeEUsR0FDaEMsTUFB
TzRFLFFBQU9DLEtBQUtSLEdBQU9yRSxJQUFVLE1BUXRDb0UsRUFBbUJVLE1BQVEsV0FDekJULEtB
Q0FELEVBQW1CRSxPQUFTLEdBR1AsV0FBbkJSLEVBQU9oRyxHQUNURCxFQUFPQyxRQUFVc0csRUFF
akJELEVBQUtDLG1CQUFxQkEsR0FFM0JyRCxPSnVYRyxTQUFTbEQsRUFBUUMsRUFBU0MsR0FFaEMs
WUtsY0EsU0FBU2dILEdBQU1DLEdBQ2JqRSxLQUFLaUUsUUFBVUEsRUxrY2pCLEdBQUlsQixHQUE0
QixrQkFBWEMsU0FBb0QsZ0JBQXBCQSxRQUFPQyxTQUF3QixTQUFVQyxHQUFPLGFBQWNBLElBQVMs
U0FBVUEsR0FBTyxNQUFPQSxJQUF5QixrQkFBWEYsU0FBeUJFLEVBQUlDLGNBQWdCSCxRQUFVRSxJ
QUFRRixPQUFPMUUsVUFBWSxlQUFrQjRFLEdLM2N0UW5HLEdBQUEsRUFBZWlILEVBa0JmQSxFQUFN
MUYsVUFBVXNELE9BQVMsU0FBUzFCLEVBQU92QyxHQUN2Q3VDLEVBQVFBLEdBQVMsR0FDakJ2QyxF
QUFXQSxHQUFZLFlBR3ZCLElBQUl1RyxJQUNGaEUsTUFBT0EsRUFBTXlCLE9BQ2JoQixXQUFXLEVB
R2JYLE1BQUtpRSxRQUFRRSxLQUFLRCxFQUFTdkcsSUFpQjdCcUcsRUFBTTFGLFVBQVVnRCxLQUFP
LFNBQVM4QyxFQUFPekcsR0FDckMsR0FBSTBHLEdBQUEsbUJBQW1CRCxHQUFuQixZQUFBckIsRUFB
bUJxQixFQUl2QixPQUhBekcsR0FBV0EsR0FBWSxhQUdMLGFBQWQwRyxHQUNGMUcsRUFBV3lHLEVB
Q0pwRSxLQUFLaUUsUUFBUUssUUFBUTNHLFNBQ0wsV0FBZDBHLEdBQXdDLFdBQWRBLEdBQ25DRCxF
QUFRRyxTQUFTSCxFQUFPLElBQ3hCcEUsS0FBS2lFLFFBQVFPLE1BQU1sRSxHQUFJOEQsR0FBUXpH
LElBRS9CcUMsS0FBS2lFLFFBQVFPLEtBQUtKLEVBQU96RyxLQWE3QnFHLEVBQU0xRixVQUFVd0Qs
T0FBUyxTQUFTeEIsRUFBSWlCLEVBQU01RCxHQUMxQ3FDLEtBQUtpRSxRQUFRRSxLQUFLNUMsRUFB
TTVELEVBQVUyQyxJQVNwQzBELEVBQU0xRixVQUFVUSxPQUFTLFNBQVN3QixFQUFJM0MsR0FDcENx
QyxLQUFLaUUsUUFBUW5GLE9BQU93QixFQUFJM0MsSUFRMUJxRyxFQUFNMUYsVUFBVW1HLFVBQVks
U0FBUzlHLEdBQ25DcUMsS0FBS2lFLFFBQVFTLEtBQUsvRyxJQU1wQnFHLEVBQU0xRixVQUFVMkQs
U0FBVyxTQUFTdEUsR0FDbEMsR0FBSXVFLElBQ0ZDLE9BQVEsRUFDUnhCLFVBQVcsRUFDWDJCLE1B
QU8sRUFHVHRDLE1BQUtpRSxRQUFRSyxRQUFRLFNBQVMvQyxHQUM1QkEsRUFBS2xDLFFBQVEsU0FB
U3NGLEdBQ2hCQSxFQUFLaEUsVUFDUHVCLEVBQU12QixZQUVOdUIsRUFBTUMsU0FHUkQsRUFBTUks
VUFFUjNFLEVBQVN1RSxPTGlkUCxTQUFTcEYsRUFBUUMsRUFBU0MsR0FFaEMsWU10akJBLFNBQVM0
SCxHQUFNQyxFQUFNbEgsR0FNbkIsR0FMQUEsRUFBV0EsR0FBWSxhQUd2QnFDLEtBQUs4RSxRQUFV
RCxHQUVWRSxFQUFtQkYsR0FBTyxDQUM3QixHQUFJdEQsSUFDRlcsU0FHRjZDLEdBQW1CRixHQUFR
RyxLQUFLQyxVQUFVMUQsR0FHNUM1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVB
QW1CRixLQUNsRDdFLEtBQUttRixlTndpQmMsR0FBSUMsR0FBeUNwSSxFQUFvQixHQUM3RCtILEVB
QXdDL0gsRUFBb0IsRUFDWkEsR0FBb0IyQyxFQUFFb0YsRU1ya0IvRmhJLEdBQUEsRUFBZTZILENB
RWYsSUFBSVMsR0FBVyxDQTRCZlQsR0FBTXRHLFVBQVVnSCxVQUFZLFNBQVNDLEdBQVksR0FBQUMs
R0FBQXhGLElBRS9DLE9BREFBLE1BQUttRixZQUFZTSxLQUFLRixHQUNmLGlCQUFNdkksR0FBQXVD
LEVBQUE2RixFQUFBLEdBQU9JLEVBQUtMLFlBQWFJLEtBR3hDWCxFQUFNdEcsVUFBVW9ILFFBQVUs
V0FDeEIxRixLQUFLbUYsWUFBWTlGLFFBQVEsU0FBQXNHLEdBQUEsTUFBS0EsUUFnQmhDZixFQUFN
dEcsVUFBVWtHLEtBQU8sU0FBU0osRUFBT3pHLEdBQ3JDLEdBQUtBLEVBQUwsQ0FJQSxHQUFJdUUs
R0FBUThDLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxLQUV6RHZFLEdBQVNhLEtB
QUt3QixLQUFNa0MsRUFBTTBELE9BQU8sU0FBU2pCLEdBQ3hDLElBQUssR0FBSWtCLEtBQUt6QixH
QUNaLEdBQUlBLEVBQU15QixLQUFPbEIsRUFBS2tCLEdBQ3BCLE9BQU8sQ0FHWCxRQUFPLE9BU1hq
QixFQUFNdEcsVUFBVWdHLFFBQVUsU0FBUzNHLEdBQ2pDQSxFQUFXQSxHQUFZLGFBRXZCQSxFQUFT
YSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxRQVduRTBD
LEVBQU10RyxVQUFVNkYsS0FBTyxTQUFTMkIsRUFBWW5JLEVBQVUyQyxHQUNwRCxHQUFJaUIsR0FB
T3lELEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQzFDNUMsRUFBUVgsRUFBS1csS0FNakIs
SUFKQXZFLEVBQVdBLEdBQVksYUFJbkIyQyxFQUFJLENBQ04sSUFBSyxHQUFJZixHQUFJLEVBQUdB
LEVBQUkyQyxFQUFNcUIsT0FBUWhFLElBQ2hDLEdBQUkyQyxFQUFNM0MsR0FBR2UsS0FBT0EsRUFB
SSxDQUN0QixJQUFLLEdBQUltRCxLQUFPcUMsR0FDZDVELEVBQU0zQyxHQUFHa0UsR0FBT3FDLEVB
QVdyQyxFQUU3QixPQUlKc0IsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsVUFBVTFELEdBQ2xE
NUQsRUFBU2EsS0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxVQUFVNUMs
V0FHakU0RCxHQUFXeEYsR0FBSytFLElBRWhCbkQsRUFBTXVELEtBQUtLLEdBQ1hmLEVBQW1CL0Us
S0FBSzhFLFNBQVdFLEtBQUtDLFVBQVUxRCxHQUNsRDVELEVBQVNhLEtBQUt3QixNQUFPOEYsR0FF
dkI5RixNQUFLMEYsV0FTUGQsRUFBTXRHLFVBQVVRLE9BQVMsU0FBU3dCLEVBQUkzQyxHQUlwQyxJ
QUFLLEdBSEQ0RCxHQUFPeUQsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFDMUM1QyxFQUFR
WCxFQUFLVyxNQUVSM0MsRUFBSSxFQUFHQSxFQUFJMkMsRUFBTXFCLE9BQVFoRSxJQUNoQyxHQUFJ
MkMsRUFBTTNDLEdBQUdlLEtBQU9BLEVBQUksQ0FDdEI0QixFQUFNaEQsT0FBT0ssRUFBRyxFQUNo
QixPQUlKd0YsRUFBbUIvRSxLQUFLOEUsU0FBV0UsS0FBS0MsVUFBVTFELEdBQ2xENUQsRUFBU2Es
S0FBS3dCLEtBQU1nRixLQUFLRSxNQUFNSCxFQUFtQi9FLEtBQUs4RSxVQUFVNUMsT0FDakVsQyxL
QUFLMEYsV0FRUGQsRUFBTXRHLFVBQVVvRyxLQUFPLFNBQVMvRyxHQUM5Qm9ILEVBQW1CL0UsS0FB
SzhFLFNBQVdFLEtBQUtDLFdBQVcvQyxXQUNuRHZFLEVBQVNhLEtBQUt3QixLQUFNZ0YsS0FBS0Us
TUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVDLE9BQ2pFbEMsS0FBSzBGLFlOaWxCRCxTQUFTNUks
RUFBUUMsRUFBU0MsR0FFaEMsWU8zc0JBLFNBQVMrSSxLQUNQL0YsS0FBS2dHLGdCQUFMLHNQQWhD
RmpKLEVBQUEsRUFBZWdKLENBRWYsSUFBSUUsSUFDRkMsSUFBSyxRQUNMQyxJQUFLLE9BQ0xDLElB
QUssT0FDTEMsSUFBSyxTQUNMQyxJQUFNLFNBQ05DLElBQUssVUFHSEMsRUFBaUIsU0FBU0MsR0FD
NUIsTUFBT1IsR0FBWVEsSUFHakJDLEVBQWtCLFlBQ2xCQyxFQUFxQixHQUFJQyxRQUFPRixFQUFn
QkcsUUFFaERDLEVBQVMsU0FBU0MsR0FDcEIsTUFBSUEsSUFBVUosRUFBbUJLLEtBQUtELEdBQzdC
QSxFQUFPRSxRQUFRUCxFQUFpQkYsR0FFaENPLEVBc0NYaEIsR0FBU3pILFVBQVU0SSxLQUFPLFNB
QVMzRixHQUNqQyxHQUFJaEMsR0FBRzRILEVBQ0hySCxFQUFPLEVBRVgsS0FBS1AsRUFBSSxFQUFH
NEgsRUFBSTVGLEVBQUtnQyxPQUFRaEUsRUFBSTRILEVBQUc1SCxJQUFLLENBQ3ZDLEdBQUk2SCxH
QUFXcEgsS0FBS2dHLGdCQUNoQnJGLEVBQVksR0FDWjBCLEVBQVUsRUFFVmQsR0FBS2hDLEdBQUdv
QixZQUNWQSxFQUFZLFlBQ1owQixFQUFVLFdBR1orRSxFQUFXQSxFQUFTSCxRQUFRLFNBQVUxRixF
QUFLaEMsR0FBR2UsSUFDOUM4RyxFQUFXQSxFQUFTSCxRQUFRLFlBQWFILEVBQU92RixFQUFLaEMs
R0FBR1csUUFDeERrSCxFQUFXQSxFQUFTSCxRQUFRLGdCQUFpQnRHLEdBQzdDeUcsRUFBV0EsRUFB
U0gsUUFBUSxjQUFlNUUsR0FFM0N2QyxHQUFjc0gsRUFHaEIsTUFBT3RILElBU1RpRyxFQUFTekgs
VUFBVStJLFlBQWMsU0FBU0MsR0FDeEMsR0FBSUMsR0FBeUIsSUFBaEJELEVBQW9CLEdBQUssR0FF
dEMsT0FBTyxXQUFhQSxFQUFjLGlCQUFtQkMsRUFBUyxTQVNoRXhCLEVBQVN6SCxVQUFVa0oscUJB
QXVCLFNBQVNDLEdBQ2pELE1BQUlBLEdBQWlCLEVBQ1osa0JBRUEsS1B5dUJMLFNBQVMzSyxFQUFR
QyxFQUFTQyxHQUVoQyxZUXIwQkEsU0FBUzBLLEdBQUs3QyxHQUNaN0UsS0FBS2lFLFFBQVUsR0FB
STBELEdBQUEsRUFBTTlDLEdBQ3pCN0UsS0FBS0gsTUFBUSxHQUFJK0gsR0FBQSxFQUFNNUgsS0FB
S2lFLFNBQzVCakUsS0FBS29ILFNBQVcsR0FBSVMsR0FBQSxFQUNwQjdILEtBQUtGLEtBQU8sR0FB
SWdJLEdBQUEsRUFBSzlILEtBQUtvSCxVQUMxQnBILEtBQUsrSCxXQUFhLEdBQUlDLEdBQUEsRUFB
V2hJLEtBQUtILE1BQU9HLEtBQUtGLE1BR3BELFFBQVNtSSxLQUNQdEQsRUFBTyxHQUFJK0MsR0FB
SyxtQkFDaEIvQyxFQUFLb0QsV0FBV2hILFFBQVEzRCxTQUFTOEssU0FBU0MsTUFDMUNoRCxFQUFZ
OUYsUUFBUSxTQUFBc0csR0FBQSxNQUFLQSxPUjJ6Qk4sR0FBSW1DLEdBQXNDOUssRUFBb0IsR0FD
MURnTCxFQUE0Q2hMLEVBQW9CLEdBQ2hFNEssRUFBdUM1SyxFQUFvQixHQUMzRDJLLEVBQXVDM0ss
RUFBb0IsR0FDM0Q2SyxFQUEwQzdLLEVBQW9CLEVBQ3JCQSxHQUFvQixFQUVqRUEsR0FBb0JtQyxF
QUFFcEMsRUFBUyxJQUFLLFdBQWEsTUFBT2tMLElRcjFCN0UsSUFBSXRELFVBQ0VRLE1SazRCQSxT
QUFTckksRUFBUUMsRUFBU0MsR0FFaEMsWUFJQSxTQUFTb0wsR0FBZ0JDLEVBQVVDLEdBQWUsS0FB
TUQsWUFBb0JDLElBQWdCLEtBQU0sSUFBSUMsV0FBVSxxQ1NudUJoSCxRQUFTQyxHQUFXMUYsR0FD
bEI5RixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxzQkFBc0JxRCxVQUFZLEdBQ3JDekwsRUFBQXVD
LEVBQUE2RixFQUFBLEdBQUcscUJBQXVCdEMsRUFBYyxNQUFNMkYsVUFBWSxXQUc1RCxRQUFTQyxH
QUFpQnBJLEVBQUlLLEdBQzVCLEdBQUlnSSxHQUFXM0wsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcs
YUFBZTlFLEVBQUssS0FFakNxSSxLQUlMQSxFQUFTRixVQUFZOUgsRUFBWSxZQUFjLEdBRy9DM0Qs
RUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsUUFBU3VELEdBQVV0RyxRQUFVMUIsR0FHbEMsUUFBU2lJ
LEdBQVV0SSxFQUFJSixHQUNyQixHQUFJeUksR0FBVzNMLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFH
LGFBQWU5RSxFQUFLLEtBRXRDLElBQUtxSSxFQUFMLENBSUFBLEVBQVNGLFVBQVlFLEVBQVNGLFVB
QVksVUFFMUMsSUFBSUksR0FBUXpMLFNBQVMwTCxjQUFjLFFBQ25DRCxHQUFNSixVQUFZLE9BRWxC
RSxFQUFTSSxZQUFZRixHQUNyQkEsRUFBTUcsUUFDTkgsRUFBTWxGLE1BQVF6RCxHQUdoQixRQUFT
K0ksR0FBUXZLLEdBQ2YsR0FBSXdLLEdBQUtsTSxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBUTFHLEVB
QVMsS0FDMUIsT0FBTzZGLFVBQVMyRSxFQUFHQyxRQUFRN0ksR0FBSSxJVDJyQlosR0FBSThFLEdB
QXlDcEksRUFBb0IsR0FDbEZvTSxFQUFlLFdBQWMsUUFBU0MsR0FBaUI1TCxFQUFRNkwsR0FBUyxJ
QUFLLEdBQUkvSixHQUFJLEVBQUdBLEVBQUkrSixFQUFNL0YsT0FBUWhFLElBQUssQ0FBRSxHQUFJ
Z0ssR0FBYUQsRUFBTS9KLEVBQUlnSyxHQUFXQyxXQUFhRCxFQUFXQyxhQUFjLEVBQU9ELEVBQVdF
LGNBQWUsRUFBVSxTQUFXRixLQUFZQSxFQUFXRyxVQUFXLEdBQU03RixPQUFPOEYsZUFBZWxNLEVB
QVE4TCxFQUFXOUYsSUFBSzhGLElBQWlCLE1BQU8sVUFBVWpCLEVBQWFzQixFQUFZQyxHQUFpSixN
QUE5SEQsSUFBWVAsRUFBaUJmLEVBQVloSyxVQUFXc0wsR0FBaUJDLEdBQWFSLEVBQWlCZixFQUFh
dUIsR0FBcUJ2QixNU3A0QjNnQndCLEVUcTVCVixXU3A1QlQsUUFBQUEsR0FBWTFDLEdBQVVnQixF
QUFBcEksS0FBQThKLEdBQ3BCOUosS0FBS29ILFNBQVdBLEVBRWhCcEgsS0FBSytKLFVBQVksR0FD
akIvSixLQUFLZ0ssV0FBYSxHQUVsQmhLLEtBQUtpSyxVQUFZak4sRUFBQXVDLEVBQUE2RixFQUFB
LEdBQUcsY0FDcEJwRixLQUFLa0ssaUJBQW1CbE4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsZUFD
M0JwRixLQUFLbUssZ0JBQWtCbk4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsb0JBQzFCcEYsS0FB
S29LLE1BQVFwTixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxTQUNoQnBGLEtBQUtxSyxRQUFVck4s
RUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsV0FDbEJwRixLQUFLc0ssV0FBYXROLEVBQUF1QyxFQUFB
NkYsRUFBQSxHQUFHLGVBQ3JCcEYsS0FBS3VLLFNBQVd2TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FB
RyxhVDhpQ3JCLE1BcEpBZ0UsR0FBYVUsSUFDWHJHLElBQUssY0FDTEUsTUFBTyxTU3o1QkdyRCxH
QUNWLEdBQUlrSyxHQUFPeE4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYUFBZTlFLEVBQUssS0FF
OUJrSyxJQUNGeEssS0FBS2lLLFVBQVVRLFlBQVlELE1UNjVCN0IvRyxJQUFLLHdCQUNMRSxNQUFP
LFNTMTVCYStHLEVBQWdCdEksR0FDcENwQyxLQUFLbUssZ0JBQWdCUSxVQUFZM0ssS0FBS29ILFNB
QVNJLHFCQUFxQmtELEdBQ3BFMUssS0FBS21LLGdCQUFnQlMsTUFBTUMsUUFBVXpJLEVBQVUsUUFB
VSxVVDY1QnpEcUIsSUFBSyxnQkFDTEUsTUFBTyxTUzM1QktyRCxFQUFJSixHQUNoQixHQUFJeUks
R0FBVzNMLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFBQWU5RSxFQUFLLEtBRXRDLElBQUtxSSxF
QUFMLENBSUEsR0FBSUUsR0FBUTdMLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFBQWN1RCxFQUM3
QkEsR0FBUzhCLFlBQVk1QixHQUVyQkYsRUFBU0YsVUFBWUUsRUFBU0YsVUFBVXhCLFFBQVEsVUFB
VyxJQUUzRGpLLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFJLFFBQVN1RCxHQUFVdEosUUFBUSxTQUFT
eUwsR0FDdENBLEVBQU1DLFlBQWM3SyxRVCs1QnRCdUQsSUFBSyxTQUNMRSxNQUFPLFNTNTVCRnFI
LEVBQVNDLEdBQ2QsR0FBSWxMLEdBQU9DLEtBQ1BrTCxHQUNGQyxZQUFhLFdBQ1hwTCxFQUFLa0ss
VUFBVVUsVUFBWTVLLEVBQUtxSCxTQUFTRixLQUFLK0QsSUFFaER4SyxXQUFZLFdBQ1ZWLEVBQUtx
TCxZQUFZSCxJQUVuQkksbUJBQW9CLFdBQ2xCdEwsRUFBS21LLGlCQUFpQlMsVUFBWTVLLEVBQUtx
SCxTQUFTQyxZQUFZNEQsSUFFOUR6RCxxQkFBc0IsV0FDcEJ6SCxFQUFLdUwsc0JBQXNCTCxFQUFV
dEssVUFBV3NLLEVBQVU3SSxVQUU1RG1KLHVCQUF3QixXQUN0QnhMLEVBQUtxSyxNQUFNUSxNQUFN
QyxRQUFVOUssRUFBS3NLLFFBQVFPLE1BQU1DLFFBQVVJLEVBQVU3SSxRQUFVLFFBQVUsUUFFeEZ0
QixVQUFXLFdBQ1RmLEVBQUt1SyxXQUFXakksUUFBVTRJLEVBQVU1SSxTQUV0Q21KLFVBQVcsV0FD
VGhELEVBQVd5QyxJQUViUSxhQUFjLFdBQ1oxTCxFQUFLd0ssU0FBUzVHLE1BQVEsSUFFeEIrSCxn
QkFBaUIsV0FDZmhELEVBQWlCdUMsRUFBVTNLLEdBQUkySyxFQUFVdEssWUFFM0NOLFNBQVUsV0FD
UnVJLEVBQVVxQyxFQUFVM0ssR0FBSTJLLEVBQVUvSyxRQUVwQ3lMLGFBQWMsV0FDWjVMLEVBQUs2
TCxjQUFjWCxFQUFVM0ssR0FBSTJLLEVBQVUvSyxRQUkvQ2dMLEdBQWFGLFFUKzVCYnZILElBQUss
b0JBQ0xFLE1BQU8sU1M3NUJTNUYsR0FDaEIsR0FBSWdDLEdBQU9DLElBQ1hoRCxHQUFBdUMsRUFB
QTZGLEVBQUEsR0FBVXJGLEVBQUtrSyxVQUFXLFdBQVksT0FBUSxXQUN2Q2pLLEtBQUttSixRQUFR
MEMsWUFDaEI5TixHQUNFdUMsR0FBSTJJLEVBQVFqSixNQUNaRSxNQUFPRixLQUFLMkQsVUFLbEIz
RyxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBVXJGLEVBQUtrSyxVQUFXLFdBQVksV0FBWSxTQUFTaE0s
R0FDckRBLEVBQU02TixVQUFZL0wsRUFBS2dLLFdBR3pCL0osS0FBSytMLFlUazZCVHRJLElBQUss
c0JBQ0xFLE1BQU8sU1M5NUJXNUYsR0FDbEIsR0FBSWdDLEdBQU9DLElBQ1hoRCxHQUFBdUMsRUFB
QTZGLEVBQUEsR0FBVXJGLEVBQUtrSyxVQUFXLFdBQVksUUFBUyxTQUFTaE0sR0FDbERBLEVBQU02
TixVQUFZL0wsRUFBS2lLLGFBQ3pCaEssS0FBS21KLFFBQVEwQyxZQUFhLEVBQzFCN0wsS0FBSytM
LE9BRUxoTyxHQUFTdUMsR0FBSTJJLEVBQVFqSixjVG02QnpCeUQsSUFBSyxPQUNMRSxNQUFPLFNT
LzVCSjFGLEVBQU9GLEdBQ1YsR0FBSWdDLEdBQU9DLElBQ0csYUFBVi9CLEVBQ0ZqQixFQUFBdUMs
RUFBQTZGLEVBQUEsR0FBSXJGLEVBQUt3SyxTQUFVLFNBQVUsV0FDM0J4TSxFQUFRZ0MsRUFBS3dL
LFNBQVM1RyxTQUdMLG9CQUFWMUYsRUFDVGpCLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFJckYsRUFB
S29LLGdCQUFpQixRQUFTLFdBQ2pDcE0sTUFHaUIsY0FBVkUsRUFDVGpCLEVBQUF1QyxFQUFBNkYs
RUFBQSxHQUFJckYsRUFBS3VLLFdBQVksUUFBUyxXQUM1QnZNLEdBQVM0QyxVQUFXWCxLQUFLcUMs
WUFHUixhQUFWcEUsRUFDVGpCLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS2tLLFVBQVcs
V0FBWSxXQUFZLFdBQ2hEbE0sR0FBU3VDLEdBQUkySSxFQUFRakosVUFHSixlQUFWL0IsRUFDVGpC
LEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFVckYsRUFBS2tLLFVBQVcsV0FBWSxRQUFTLFdBQzdDbE0s
R0FBU3VDLEdBQUkySSxFQUFRakosVUFHSixlQUFWL0IsRUFDVGpCLEVBQUF1QyxFQUFBNkYsRUFB
QSxHQUFVckYsRUFBS2tLLFVBQVcsVUFBVyxRQUFTLFdBQzVDbE0sR0FDRXVDLEdBQUkySSxFQUFR
akosTUFDWlcsVUFBV1gsS0FBS3FDLFlBSUQsaUJBQVZwRSxFQUNUOEIsRUFBS2lNLGtCQUFrQmpP
LEdBRUosbUJBQVZFLEdBQ1Q4QixFQUFLa00sb0JBQW9CbE8sT1Q2NUJ0QitMLElBR29CL00sR0FB
VyxFUzlqQ25CK00sR1QybUNmLFNBQVNoTixFQUFRQyxLQU1qQixTQUFTRCxFQUFRQyxFQUFTQyxH
QUVoQyxZVTVtQ0EsU0FBU2tQLEtBQ1BsUCxFQUFBdUMsRUFBQTRNLEVBQUEsR0FBSUMsT0FBUSxP
QUFRQyxFQUFBLEdBQ3BCclAsRUFBQXVDLEVBQUE0TSxFQUFBLEdBQUlDLE9BQVEsYUFBY0MsRUFB
QSxHVjJtQ1AsR0FBSUEsR0FBcUNyUCxFQUFvQixHVWhvQ2xGbVAsRUFBQW5QLEVBQUEsRUFNMEMs
Y0FBeEJJLFNBQVNrUCxVQVV6QkosUVYwb0NDIiwiZmlsZSI6ImJ1bmRsZS5hcHAuNzFiYjFmNjcx
ZTRlNjU2MDRkMDUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ3ZWJwYWNrSnNvbnAoWzAsMl0sW1xu
LyogMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBh
Y2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJhXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gcXM7IH0p
O1xuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwi
YlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHFzYTsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAqLyBf
X3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJkXCIsIGZ1bmN0aW9uKCkgeyByZXR1cm4g
JG9uOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBv
cnRzLCBcImNcIiwgZnVuY3Rpb24oKSB7IHJldHVybiAkZGVsZWdhdGU7IH0pO1xuLyogaGFybW9u
eSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiZVwiLCBmdW5jdGlv
bigpIHsgcmV0dXJuICRwYXJlbnQ7IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNr
X3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiZlwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHJlbW92ZTsg
fSk7XG5cbi8vIEdldCBlbGVtZW50KHMpIGJ5IENTUyBzZWxlY3RvcjpcbmZ1bmN0aW9uIHFzKHNl
bGVjdG9yLCBzY29wZSkge1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVj
dG9yKHNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gcXNhKHNlbGVjdG9yLCBzY29wZSkge1xuICBy
ZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbn1c
blxuLy8gYWRkRXZlbnRMaXN0ZW5lciB3cmFwcGVyOlxuZnVuY3Rpb24gJG9uKHRhcmdldCwgdHlw
ZSwgY2FsbGJhY2ssIHVzZUNhcHR1cmUpIHtcbiAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlw
ZSwgY2FsbGJhY2ssICEhdXNlQ2FwdHVyZSk7XG59XG5cbi8vIEF0dGFjaCBhIGhhbmRsZXIgdG8g
ZXZlbnQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoIHRoZSBzZWxlY3Rvcixcbi8vIG5vdyBv
ciBpbiB0aGUgZnV0dXJlLCBiYXNlZCBvbiBhIHJvb3QgZWxlbWVudFxuZnVuY3Rpb24gJGRlbGVn
YXRlKHRhcmdldCwgc2VsZWN0b3IsIHR5cGUsIGhhbmRsZXIpIHtcbiAgLy8gaHR0cHM6Ly9kZXZl
bG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZlbnRzL2JsdXJcbiAgdmFyIHVzZUNh
cHR1cmUgPSB0eXBlID09PSAnYmx1cicgfHwgdHlwZSA9PT0gJ2ZvY3VzJztcbiAgJG9uKHRhcmdl
dCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNlQ2FwdHVyZSk7XG5cbiAgZnVuY3Rpb24gZGlzcGF0
Y2hFdmVudChldmVudCkge1xuICAgIHZhciB0YXJnZXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xu
ICAgIHZhciBwb3RlbnRpYWxFbGVtZW50cyA9IHFzYShzZWxlY3RvciwgdGFyZ2V0KTtcbiAgICB2
YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBvdGVudGlhbEVsZW1l
bnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwO1xuXG4gICAgaWYgKGhhc01hdGNoKSB7XG4gICAgICBo
YW5kbGVyLmNhbGwodGFyZ2V0RWxlbWVudCwgZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBG
aW5kIHRoZSBlbGVtZW50J3MgcGFyZW50IHdpdGggdGhlIGdpdmVuIHRhZyBuYW1lOlxuLy8gJHBh
cmVudChxcygnYScpLCAnZGl2Jyk7XG5mdW5jdGlvbiAkcGFyZW50KGVsZW1lbnQsIHRhZ05hbWUp
IHtcbiAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xu
ICB9XG4gIGlmIChlbGVtZW50LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0
YWdOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlO1xu
ICB9XG4gIHJldHVybiAkcGFyZW50KGVsZW1lbnQucGFyZW50Tm9kZSwgdGFnTmFtZSk7XG59XG5c
bi8vIHJlbW92ZXMgYW4gZWxlbWVudCBmcm9tIGFuIGFycmF5XG4vLyBjb25zdCB4ID0gWzEsMiwz
XVxuLy8gcmVtb3ZlKHgsIDIpXG4vLyB4IH49PSBbMSwzXVxuZnVuY3Rpb24gcmVtb3ZlKGFycmF5
LCB0aGluZykge1xuICB2YXIgaW5kZXggPSBhcnJheS5pbmRleE9mKHRoaW5nKTtcbiAgaWYgKGlu
ZGV4ID09PSAtMSkge1xuICAgIHJldHVybiBhcnJheTtcbiAgfVxuICBhcnJheS5zcGxpY2UoaW5k
ZXgsIDEpO1xufVxuXG4vLyBBbGxvdyBmb3IgbG9vcGluZyBvbiBub2RlcyBieSBjaGFpbmluZzpc
bi8vIHFzYSgnLmZvbycpLmZvckVhY2goZnVuY3Rpb24gKCkge30pXG5Ob2RlTGlzdC5wcm90b3R5
cGUuZm9yRWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoO1xuXG4vKioqLyB9LFxuLyogMSAq
Lyxcbi8qIDIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19fID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19fX2RlZmF1bHQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9t
dmNfYXBwX2Nzc19pbmRleF9jc3NfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3NzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEw
KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFf
X2FwcF9jc3NfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMV9fYXBwX2Nzc19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
MCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8z
X190b2RvX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuLyogaGFybW9ueSBleHBvcnQgKi8g
ZXhwb3J0c1tcImFcIl0gPSBvbkxvYWQ7XG5cblxuXG5cblxuZnVuY3Rpb24gb25Mb2FkKCkge1xu
ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9wcmVmZXItZGVmYXVsdC1leHBvcnRcbiAg
X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdG9kb19f
W1wiYVwiIC8qIHVwZGF0ZVRvZG8gKi9dKSgpO1xufVxuXG4vKioqLyB9LFxuLyogMyAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwi
dXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwi
XSA9IENvbnRyb2xsZXI7XG5cbi8qKlxuKiBUYWtlcyBhIG1vZGVsIGFuZCB2aWV3IGFuZCBhY3Rz
IGFzIHRoZSBjb250cm9sbGVyIGJldHdlZW4gdGhlbVxuKlxuKiBAY29uc3RydWN0b3JcbiogQHBh
cmFtIHtvYmplY3R9IG1vZGVsIFRoZSBtb2RlbCBpbnN0YW5jZVxuKiBAcGFyYW0ge29iamVjdH0g
dmlldyBUaGUgdmlldyBpbnN0YW5jZVxuKi9cbmZ1bmN0aW9uIENvbnRyb2xsZXIobW9kZWwsIHZp
ZXcpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsID0gbW9kZWw7XG4gIHRoYXQu
dmlldyA9IHZpZXc7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ25ld1RvZG8nLCBmdW5jdGlvbiAodGl0
bGUpIHtcbiAgICB0aGF0LmFkZEl0ZW0odGl0bGUpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmlu
ZCgnaXRlbUVkaXQnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW0oaXRlbS5p
ZCk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtRWRpdERvbmUnLCBmdW5jdGlvbiAo
aXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1TYXZlKGl0ZW0uaWQsIGl0ZW0udGl0bGUpO1xuICB9
KTtcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXRDYW5jZWwnLCBmdW5jdGlvbiAoaXRlbSkg
e1xuICAgIHRoYXQuZWRpdEl0ZW1DYW5jZWwoaXRlbS5pZCk7XG4gIH0pO1xuXG4gIHRoYXQudmll
dy5iaW5kKCdpdGVtUmVtb3ZlJywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB0aGF0LnJlbW92ZUl0
ZW0oaXRlbS5pZCk7XG4gIH0pO1xuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtVG9nZ2xlJywgZnVu
Y3Rpb24gKGl0ZW0pIHtcbiAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGl0ZW0uY29t
cGxldGVkKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ3JlbW92ZUNvbXBsZXRlZCcsIGZ1
bmN0aW9uICgpIHtcbiAgICB0aGF0LnJlbW92ZUNvbXBsZXRlZEl0ZW1zKCk7XG4gIH0pO1xuXG4g
IHRoYXQudmlldy5iaW5kKCd0b2dnbGVBbGwnLCBmdW5jdGlvbiAoc3RhdHVzKSB7XG4gICAgdGhh
dC50b2dnbGVBbGwoc3RhdHVzLmNvbXBsZXRlZCk7XG4gIH0pO1xufVxuXG4vKipcbiogTG9hZHMg
YW5kIGluaXRpYWxpc2VzIHRoZSB2aWV3XG4qXG4qIEBwYXJhbSB7c3RyaW5nfSAnJyB8ICdhY3Rp
dmUnIHwgJ2NvbXBsZXRlZCdcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zZXRWaWV3ID0gZnVu
Y3Rpb24gKGxvY2F0aW9uSGFzaCkge1xuICB2YXIgcm91dGUgPSBsb2NhdGlvbkhhc2guc3BsaXQo
Jy8nKVsxXTtcbiAgdmFyIHBhZ2UgPSByb3V0ZSB8fCAnJztcbiAgdGhpcy5fdXBkYXRlRmlsdGVy
U3RhdGUocGFnZSk7XG59O1xuXG4vKipcbiogQW4gZXZlbnQgdG8gZmlyZSBvbiBsb2FkLiBXaWxs
IGdldCBhbGwgaXRlbXMgYW5kIGRpc3BsYXkgdGhlbSBpbiB0aGVcbiogdG9kby1saXN0XG4qL1xu
Q29udHJvbGxlci5wcm90b3R5cGUuc2hvd0FsbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQg
PSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlYWQoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZp
ZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpO1xuICB9KTtcbn07XG5cbi8qKlxuKiBSZW5k
ZXJzIGFsbCBhY3RpdmUgdGFza3NcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93QWN0aXZl
ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7
IGNvbXBsZXRlZDogZmFsc2UgfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVu
ZGVyKCdzaG93RW50cmllcycsIGRhdGEpO1xuICB9KTtcbn07XG5cbi8qKlxuKiBSZW5kZXJzIGFs
bCBjb21wbGV0ZWQgdGFza3NcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zaG93Q29tcGxldGVk
ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVhZCh7
IGNvbXBsZXRlZDogdHJ1ZSB9LCBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5k
ZXIoJ3Nob3dFbnRyaWVzJywgZGF0YSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIEFuIGV2ZW50IHRv
IGZpcmUgd2hlbmV2ZXIgeW91IHdhbnQgdG8gYWRkIGFuIGl0ZW0uIFNpbXBseSBwYXNzIGluIHRo
ZSBldmVudFxuKiBvYmplY3QgYW5kIGl0J2xsIGhhbmRsZSB0aGUgRE9NIGluc2VydGlvbiBhbmQg
c2F2aW5nIG9mIHRoZSBuZXcgaXRlbS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVt
ID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcblxuICBpZiAodGl0bGUu
dHJpbSgpID09PSAnJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoYXQubW9kZWwuY3JlYXRl
KHRpdGxlLCBmdW5jdGlvbiAoKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignY2xlYXJOZXdUb2Rv
Jyk7XG4gICAgdGhhdC5fZmlsdGVyKHRydWUpO1xuICB9KTtcbn07XG5cbi8qXG4qIFRyaWdnZXJz
IHRoZSBpdGVtIGVkaXRpbmcgbW9kZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRl
bSA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVh
ZChpZCwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbScs
IHsgaWQ6IGlkLCB0aXRsZTogZGF0YVswXS50aXRsZSB9KTtcbiAgfSk7XG59O1xuXG4vKlxuKiBG
aW5pc2hlcyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUgc3VjY2Vzc2Z1bGx5LlxuKi9cbkNvbnRyb2xs
ZXIucHJvdG90eXBlLmVkaXRJdGVtU2F2ZSA9IGZ1bmN0aW9uIChpZCwgdGl0bGUpIHtcbiAgdmFy
IHRoYXQgPSB0aGlzO1xuICBpZiAodGl0bGUudHJpbSgpKSB7XG4gICAgdGhhdC5tb2RlbC51cGRh
dGUoaWQsIHsgdGl0bGU6IHRpdGxlIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoYXQudmlldy5y
ZW5kZXIoJ2VkaXRJdGVtRG9uZScsIHsgaWQ6IGlkLCB0aXRsZTogdGl0bGUgfSk7XG4gICAgfSk7
XG4gIH0gZWxzZSB7XG4gICAgdGhhdC5yZW1vdmVJdGVtKGlkKTtcbiAgfVxufTtcblxuLypcbiog
Q2FuY2VscyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUu
ZWRpdEl0ZW1DYW5jZWwgPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0
aGF0Lm1vZGVsLnJlYWQoaWQsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRl
cignZWRpdEl0ZW1Eb25lJywgeyBpZDogaWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlIH0pO1xuICB9
KTtcbn07XG5cbi8qKlxuKiBCeSBnaXZpbmcgaXQgYW4gSUQgaXQnbGwgZmluZCB0aGUgRE9NIGVs
ZW1lbnQgbWF0Y2hpbmcgdGhhdCBJRCxcbiogcmVtb3ZlIGl0IGZyb20gdGhlIERPTSBhbmQgYWxz
byByZW1vdmUgaXQgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElE
IG9mIHRoZSBpdGVtIHRvIHJlbW92ZSBmcm9tIHRoZSBET00gYW5kXG4qIHN0b3JhZ2VcbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG4gIHZhciB0
aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZW1vdmUoaWQsIGZ1bmN0aW9uICgpIHtcbiAgICB0
aGF0LnZpZXcucmVuZGVyKCdyZW1vdmVJdGVtJywgaWQpO1xuICB9KTtcblxuICB0aGF0Ll9maWx0
ZXIoKTtcbn07XG5cbi8qKlxuKiBXaWxsIHJlbW92ZSBhbGwgY29tcGxldGVkIGl0ZW1zIGZyb20g
dGhlIERPTSBhbmQgc3RvcmFnZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVDb21w
bGV0ZWRJdGVtcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1v
ZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IHRydWUgfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkYXRh
LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHRoYXQucmVtb3ZlSXRlbShpdGVtLmlk
KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGhhdC5fZmlsdGVyKCk7XG59O1xuXG4vKipcbiogR2l2
ZSBpdCBhbiBJRCBvZiBhIG1vZGVsIGFuZCBhIGNoZWNrYm94IGFuZCBpdCB3aWxsIHVwZGF0ZSB0
aGUgaXRlbVxuKiBpbiBzdG9yYWdlIGJhc2VkIG9uIHRoZSBjaGVja2JveCdzIHN0YXRlLlxuKlxu
KiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBlbGVtZW50IHRvIGNvbXBsZXRlIG9y
IHVuY29tcGxldGVcbiogQHBhcmFtIHtvYmplY3R9IGNoZWNrYm94IFRoZSBjaGVja2JveCB0byBj
aGVjayB0aGUgc3RhdGUgb2YgY29tcGxldGVcbiogICAgICAgICAgICAgICAgICAgICAgICAgIG9y
IG5vdFxuKiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxlbnQgUHJldmVudCByZS1maWx0
ZXJpbmcgdGhlIHRvZG8gaXRlbXNcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21w
bGV0ZSA9IGZ1bmN0aW9uIChpZCwgY29tcGxldGVkLCBzaWxlbnQpIHtcbiAgdmFyIHRoYXQgPSB0
aGlzO1xuICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwgeyBjb21wbGV0ZWQ6IGNvbXBsZXRlZCB9LCBm
dW5jdGlvbiAoKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWxlbWVudENvbXBsZXRlJywge1xu
ICAgICAgaWQ6IGlkLFxuICAgICAgY29tcGxldGVkOiBjb21wbGV0ZWRcbiAgICB9KTtcbiAgfSk7
XG5cbiAgaWYgKCFzaWxlbnQpIHtcbiAgICB0aGF0Ll9maWx0ZXIoKTtcbiAgfVxufTtcblxuLyoq
XG4qIFdpbGwgdG9nZ2xlIEFMTCBjaGVja2JveGVzJyBvbi9vZmYgc3RhdGUgYW5kIGNvbXBsZXRl
bmVzcyBvZiBtb2RlbHMuXG4qIEp1c3QgcGFzcyBpbiB0aGUgZXZlbnQgb2JqZWN0LlxuKi9cbkNv
bnRyb2xsZXIucHJvdG90eXBlLnRvZ2dsZUFsbCA9IGZ1bmN0aW9uIChjb21wbGV0ZWQpIHtcbiAg
dmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6ICFjb21wbGV0
ZWQgfSwgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0p
IHtcbiAgICAgIHRoYXQudG9nZ2xlQ29tcGxldGUoaXRlbS5pZCwgY29tcGxldGVkLCB0cnVlKTtc
biAgICB9KTtcbiAgfSk7XG5cbiAgdGhhdC5fZmlsdGVyKCk7XG59O1xuXG4vKipcbiogVXBkYXRl
cyB0aGUgcGllY2VzIG9mIHRoZSBwYWdlIHdoaWNoIGNoYW5nZSBkZXBlbmRpbmcgb24gdGhlIHJl
bWFpbmluZ1xuKiBudW1iZXIgb2YgdG9kb3MuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX3Vw
ZGF0ZUNvdW50ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9k
ZWwuZ2V0Q291bnQoZnVuY3Rpb24gKHRvZG9zKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcigndXBk
YXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZlKTtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdj
bGVhckNvbXBsZXRlZEJ1dHRvbicsIHtcbiAgICAgIGNvbXBsZXRlZDogdG9kb3MuY29tcGxldGVk
LFxuICAgICAgdmlzaWJsZTogdG9kb3MuY29tcGxldGVkID4gMFxuICAgIH0pO1xuXG4gICAgdGhh
dC52aWV3LnJlbmRlcigndG9nZ2xlQWxsJywgeyBjaGVja2VkOiB0b2Rvcy5jb21wbGV0ZWQgPT09
IHRvZG9zLnRvdGFsIH0pO1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2NvbnRlbnRCbG9ja1Zpc2li
aWxpdHknLCB7IHZpc2libGU6IHRvZG9zLnRvdGFsID4gMCB9KTtcbiAgfSk7XG59O1xuXG4vKipc
biogUmUtZmlsdGVycyB0aGUgdG9kbyBpdGVtcywgYmFzZWQgb24gdGhlIGFjdGl2ZSByb3V0ZS5c
biogQHBhcmFtIHtib29sZWFufHVuZGVmaW5lZH0gZm9yY2UgIGZvcmNlcyBhIHJlLXBhaW50aW5n
IG9mIHRvZG8gaXRlbXMuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuX2ZpbHRlciA9IGZ1bmN0
aW9uIChmb3JjZSkge1xuICB2YXIgYWN0aXZlUm91dGUgPSB0aGlzLl9hY3RpdmVSb3V0ZS5jaGFy
QXQoMCkudG9VcHBlckNhc2UoKSArIHRoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigxKTtcblxuICAv
LyBVcGRhdGUgdGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGljaCBjaGFuZ2Ugd2l0aCBlYWNo
IGNvbXBsZXRlZCB0b2RvXG4gIHRoaXMuX3VwZGF0ZUNvdW50KCk7XG5cbiAgLy8gSWYgdGhlIGxh
c3QgYWN0aXZlIHJvdXRlIGlzbid0IFwiQWxsXCIsIG9yIHdlJ3JlIHN3aXRjaGluZyByb3V0ZXMs
IHdlXG4gIC8vIHJlLWNyZWF0ZSB0aGUgdG9kbyBpdGVtIGVsZW1lbnRzLCBjYWxsaW5nOlxuICAv
LyAgIHRoaXMuc2hvd1tBbGx8QWN0aXZlfENvbXBsZXRlZF0oKTtcbiAgaWYgKGZvcmNlIHx8IHRo
aXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gJ0FsbCcgfHwgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlICE9
PSBhY3RpdmVSb3V0ZSkge1xuICAgIHRoaXNbJ3Nob3cnICsgYWN0aXZlUm91dGVdKCk7XG4gIH1c
blxuICB0aGlzLl9sYXN0QWN0aXZlUm91dGUgPSBhY3RpdmVSb3V0ZTtcbn07XG5cbi8qKlxuKiBT
aW1wbHkgdXBkYXRlcyB0aGUgZmlsdGVyIG5hdidzIHNlbGVjdGVkIHN0YXRlc1xuKi9cbkNvbnRy
b2xsZXIucHJvdG90eXBlLl91cGRhdGVGaWx0ZXJTdGF0ZSA9IGZ1bmN0aW9uIChjdXJyZW50UGFn
ZSkge1xuICAvLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJvdXRlLCBhbGxvd2lu
ZyB1cyB0byByZS1maWx0ZXIgdG9kb1xuICAvLyBpdGVtcyBhcyB0aGV5IGFyZSBtYXJrZWQgY29t
cGxldGUgb3IgaW5jb21wbGV0ZS5cbiAgY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZS5zcGxpdCgn
PycpWzBdO1xuICB0aGlzLl9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlO1xuXG4gIGlmIChjdXJy
ZW50UGFnZSA9PT0gJycpIHtcbiAgICB0aGlzLl9hY3RpdmVSb3V0ZSA9ICdBbGwnO1xuICB9XG5c
biAgdGhpcy5fZmlsdGVyKCk7XG5cbiAgdGhpcy52aWV3LnJlbmRlcignc2V0RmlsdGVyJywgY3Vy
cmVudFBhZ2UpO1xufTtcblxuLyoqKi8gfSxcbi8qIDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgX3R5cGVvZiA9IHR5cGVv
ZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBc
InN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0
aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIg
JiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBl
ID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbihmdW5jdGlvbiAocm9vdCkge1xuICB2
YXIgbG9jYWxTdG9yYWdlTWVtb3J5ID0ge307XG4gIHZhciBjYWNoZSA9IHt9O1xuXG4gIC8qKlxu
ICAgKiBudW1iZXIgb2Ygc3RvcmVkIGl0ZW1zLlxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5
Lmxlbmd0aCA9IDA7XG5cbiAgLyoqXG4gICAqIHJldHVybnMgaXRlbSBmb3IgcGFzc2VkIGtleSwg
b3IgbnVsbFxuICAgKlxuICAgKiBAcGFyYSB7U3RyaW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBv
ZiBpdGVtIHRvIGJlIHJldHVybmVkXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAgICov
XG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVtID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJl
dHVybiBjYWNoZVtrZXldIHx8IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNldHMgaXRlbSBm
b3Iga2V5IHRvIHBhc3NlZCB2YWx1ZSwgYXMgU3RyaW5nXG4gICAqXG4gICAqIEBwYXJhIHtTdHJp
bmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUgc2V0XG4gICAqIEBwYXJhIHtT
dHJpbmd9IHZhbHVlXG4gICAqICAgICAgIHZhbHVlLCB3aWxsIGFsd2F5cyBiZSB0dXJuZWQgaW50
byBhIFN0cmluZ1xuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgbG9jYWxTdG9y
YWdlTWVtb3J5LnNldEl0ZW0gPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIGlmICh0eXBl
b2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBsb2NhbFN0b3JhZ2VNZW1vcnkucmVt
b3ZlSXRlbShrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNhY2hlLmhhc093blByb3Bl
cnR5KGtleSkpIHtcbiAgICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCsrO1xuICAgICAg
fVxuXG4gICAgICBjYWNoZVtrZXldID0gJycgKyB2YWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgLyoq
XG4gICAqIHJlbW92ZXMgaXRlbSBmb3IgcGFzc2VkIGtleVxuICAgKlxuICAgKiBAcGFyYSB7U3Ry
aW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBpdGVtIHRvIGJlIHJlbW92ZWRcbiAgICogQHJl
dHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVt
ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChjYWNoZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7
XG4gICAgICBkZWxldGUgY2FjaGVba2V5XTtcbiAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5n
dGgtLTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgbmFtZSBvZiBrZXkgYXQg
cGFzc2VkIGluZGV4XG4gICAqXG4gICAqIEBwYXJhIHtOdW1iZXJ9IGluZGV4XG4gICAqICAgICAg
IFBvc2l0aW9uIGZvciBrZXkgdG8gYmUgcmV0dXJuZWQgKHN0YXJ0cyBhdCAwKVxuICAgKiBAcmV0
dXJucyB7U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkua2V5ID0gZnVu
Y3Rpb24gKGluZGV4KSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNhY2hlKVtpbmRleF0gfHwg
bnVsbDtcbiAgfTtcblxuICAvKipcbiAgICogcmVtb3ZlcyBhbGwgc3RvcmVkIGl0ZW1zIGFuZCBz
ZXRzIGxlbmd0aCB0byAwXG4gICAqXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xu
ICBsb2NhbFN0b3JhZ2VNZW1vcnkuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgY2FjaGUgPSB7
fTtcbiAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoID0gMDtcbiAgfTtcblxuICBpZiAoKCBm
YWxzZSA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihleHBvcnRzKSkgPT09ICdvYmplY3QnKSB7XG4g
ICAgbW9kdWxlLmV4cG9ydHMgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7XG4gIH0gZWxzZSB7XG4gICAg
cm9vdC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7XG4gIH1cbn0pKHRo
aXMpO1xuXG4vKioqLyB9LFxuLyogNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xudmFyIF90eXBlb2Yg
PSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRv
ciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0g
OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5j
dGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnBy
b3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG4vKiBoYXJtb255IGRlZmF1
bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gTW9kZWw7XG5cbi8qKlxuKiBDcmVhdGVzIGEg
bmV3IE1vZGVsIGluc3RhbmNlIGFuZCBob29rcyB1cCB0aGUgc3RvcmFnZS5cbipcbiogQGNvbnN0
cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBzdG9yYWdlIEEgcmVmZXJlbmNlIHRvIHRoZSBjbGll
bnQgc2lkZSBzdG9yYWdlIGNsYXNzXG4qL1xuZnVuY3Rpb24gTW9kZWwoc3RvcmFnZSkge1xuICB0
aGlzLnN0b3JhZ2UgPSBzdG9yYWdlO1xufVxuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyB0b2RvIG1v
ZGVsXG4qXG4qIEBwYXJhbSB7c3RyaW5nfSBbdGl0bGVdIFRoZSB0aXRsZSBvZiB0aGUgdGFza1xu
KiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVy
IHRoZSBtb2RlbCBpcyBjcmVhdGVkXG4qL1xuTW9kZWwucHJvdG90eXBlLmNyZWF0ZSA9IGZ1bmN0
aW9uICh0aXRsZSwgY2FsbGJhY2spIHtcbiAgdGl0bGUgPSB0aXRsZSB8fCAnJztcbiAgY2FsbGJh
Y2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICB2YXIgbmV3SXRlbSA9IHtcbiAg
ICB0aXRsZTogdGl0bGUudHJpbSgpLFxuICAgIGNvbXBsZXRlZDogZmFsc2VcbiAgfTtcblxuICB0
aGlzLnN0b3JhZ2Uuc2F2ZShuZXdJdGVtLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEZpbmRz
IGFuZCByZXR1cm5zIGEgbW9kZWwgaW4gc3RvcmFnZS4gSWYgbm8gcXVlcnkgaXMgZ2l2ZW4gaXQn
bGwgc2ltcGx5XG4gKiByZXR1cm4gZXZlcnl0aGluZy4gSWYgeW91IHBhc3MgaW4gYSBzdHJpbmcg
b3IgbnVtYmVyIGl0J2xsIGxvb2sgdGhhdCB1cCBhc1xuICogdGhlIElEIG9mIHRoZSBtb2RlbCB0
byBmaW5kLiBMYXN0bHksIHlvdSBjYW4gcGFzcyBpdCBhbiBvYmplY3QgdG8gbWF0Y2ggYWdhaW5z
dC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8b2JqZWN0fSBbcXVlcnldIEEgcXVlcnkg
dG8gbWF0Y2ggbW9kZWxzIGFnYWluc3RcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFja10g
VGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGZvdW5kXG4gKlxuICogQGV4
YW1wbGVcbiAqIG1vZGVsLnJlYWQoMSwgZnVuYyk7IC8vIFdpbGwgZmluZCB0aGUgbW9kZWwgd2l0
aCBhbiBJRCBvZiAxXG4gKiBtb2RlbC5yZWFkKCcxJyk7IC8vIFNhbWUgYXMgYWJvdmVcbiAqIC8v
QmVsb3cgd2lsbCBmaW5kIGEgbW9kZWwgd2l0aCBmb28gZXF1YWxsaW5nIGJhciBhbmQgaGVsbG8g
ZXF1YWxsaW5nIHdvcmxkLlxuICogbW9kZWwucmVhZCh7IGZvbzogJ2JhcicsIGhlbGxvOiAnd29y
bGQnIH0pO1xuICovXG5Nb2RlbC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChxdWVyeSwgY2Fs
bGJhY2spIHtcbiAgdmFyIHF1ZXJ5VHlwZSA9IHR5cGVvZiBxdWVyeSA9PT0gJ3VuZGVmaW5lZCcg
PyAndW5kZWZpbmVkJyA6IF90eXBlb2YocXVlcnkpO1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8
IGZ1bmN0aW9uICgpIHt9O1xuXG4gIGlmIChxdWVyeVR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAg
ICBjYWxsYmFjayA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZmluZEFsbChjYWxs
YmFjayk7XG4gIH0gZWxzZSBpZiAocXVlcnlUeXBlID09PSAnc3RyaW5nJyB8fCBxdWVyeVR5cGUg
PT09ICdudW1iZXInKSB7XG4gICAgcXVlcnkgPSBwYXJzZUludChxdWVyeSwgMTApO1xuICAgIHRo
aXMuc3RvcmFnZS5maW5kKHsgaWQ6IHF1ZXJ5IH0sIGNhbGxiYWNrKTtcbiAgfSBlbHNlIHtcbiAg
ICB0aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwgY2FsbGJhY2spO1xuICB9XG4gIHJldHVybiB1bmRl
ZmluZWQ7XG59O1xuXG4vKipcbiogVXBkYXRlcyBhIG1vZGVsIGJ5IGdpdmluZyBpdCBhbiBJRCwg
ZGF0YSB0byB1cGRhdGUsIGFuZCBhIGNhbGxiYWNrIHRvIGZpcmUgd2hlblxuKiB0aGUgdXBkYXRl
IGlzIGNvbXBsZXRlLlxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBtb2Rl
bCB0byB1cGRhdGVcbiogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIHByb3BlcnRpZXMgdG8gdXBk
YXRlIGFuZCB0aGVpciBuZXcgdmFsdWVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhl
IGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuKi9cbk1vZGVs
LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoaWQsIGRhdGEsIGNhbGxiYWNrKSB7XG4gIHRo
aXMuc3RvcmFnZS5zYXZlKGRhdGEsIGNhbGxiYWNrLCBpZCk7XG59O1xuXG4vKipcbiogUmVtb3Zl
cyBhIG1vZGVsIGZyb20gc3RvcmFnZVxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9m
IHRoZSBtb2RlbCB0byByZW1vdmVcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNh
bGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5w
cm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlkLCBjYWxsYmFjaykge1xuICB0aGlzLnN0b3Jh
Z2UucmVtb3ZlKGlkLCBjYWxsYmFjayk7XG59O1xuXG4vKipcbiogV0FSTklORzogV2lsbCByZW1v
dmUgQUxMIGRhdGEgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFj
ayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9yYWdlIGlzIHdpcGVkLlxuKi9cbk1v
ZGVsLnByb3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy5z
dG9yYWdlLmRyb3AoY2FsbGJhY2spO1xufTtcblxuLyoqXG4qIFJldHVybnMgYSBjb3VudCBvZiBh
bGwgdG9kb3NcbiovXG5Nb2RlbC5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoY2FsbGJh
Y2spIHtcbiAgdmFyIHRvZG9zID0ge1xuICAgIGFjdGl2ZTogMCxcbiAgICBjb21wbGV0ZWQ6IDAs
XG4gICAgdG90YWw6IDBcbiAgfTtcblxuICB0aGlzLnN0b3JhZ2UuZmluZEFsbChmdW5jdGlvbiAo
ZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbiAodG9kbykge1xuICAgICAgaWYgKHRv
ZG8uY29tcGxldGVkKSB7XG4gICAgICAgIHRvZG9zLmNvbXBsZXRlZCsrO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgdG9kb3MuYWN0aXZlKys7XG4gICAgICB9XG5cbiAgICAgIHRvZG9zLnRvdGFs
Kys7XG4gICAgfSk7XG4gICAgY2FsbGJhY2sodG9kb3MpO1xuICB9KTtcbn07XG5cbi8qKiovIH0s
XG4vKiA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
MV9fbWVtb3J5X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQg
Ki8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19fZGVmYXVsdCA9IF9f
d2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9f
KTtcblxuXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gU3Rv
cmU7XG5cbnZhciB1bmlxdWVJRCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBjbGllbnQg
c2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1wdHlcbiAqIGNvbGxlY3Rp
b24gaWYgbm8gY29sbGVjdGlvbiBhbHJlYWR5IGV4aXN0cy5cbiAqXG4gKiBAcGFyYW0ge3N0cmlu
Z30gbmFtZSBUaGUgbmFtZSBvZiBvdXIgREIgd2Ugd2FudCB0byB1c2VcbiAqIEBwYXJhbSB7ZnVu
Y3Rpb259IGNhbGxiYWNrIE91ciBmYWtlIERCIHVzZXMgY2FsbGJhY2tzIGJlY2F1c2UgaW5cbiAq
IHJlYWwgbGlmZSB5b3UgcHJvYmFibHkgd291bGQgYmUgbWFraW5nIEFKQVggY2FsbHNcbiAqL1xu
ZnVuY3Rpb24gU3RvcmUobmFtZSwgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8
fCBmdW5jdGlvbiAoKSB7fTtcblxuICB0aGlzLl9kYk5hbWUgPSBuYW1lO1xuXG4gIGlmICghX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1tuYW1lXSkge1xuICAgIHZhciBkYXRh
ID0ge1xuICAgICAgdG9kb3M6IFtdXG4gICAgfTtcblxuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMV9fbWVtb3J5X19bbmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgfVxuXG4g
IGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX21lbW9yeV9fW25hbWVdKSk7XG4gIHRoaXMuc3Vic2NyaWJlcnMgPSBbXTtcbn1cblxuU3Rv
cmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uIChzdWJzY3JpYmVyKSB7XG4gIHZhciBf
dGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuICBy
ZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJmXCIgLyogcmVtb3ZlICovXSko
X3RoaXMuc3Vic2NyaWJlcnMsIHN1YnNjcmliZXIpO1xuICB9O1xufTtcblxuU3RvcmUucHJvdG90
eXBlLl9ub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc3Vic2NyaWJlcnMuZm9yRWFjaChm
dW5jdGlvbiAocykge1xuICAgIHJldHVybiBzKCk7XG4gIH0pO1xufTtcblxuLyoqXG4qIEZpbmRz
IGl0ZW1zIGJhc2VkIG9uIGEgcXVlcnkgZ2l2ZW4gYXMgYSBKUyBvYmplY3RcbipcbiogQHBhcmFt
IHtvYmplY3R9IHF1ZXJ5IFRoZSBxdWVyeSB0byBtYXRjaCBhZ2FpbnN0IChpLmUuIHtmb286ICdi
YXInfSlcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgICBUaGUgY2FsbGJhY2sgdG8gZmly
ZSB3aGVuIHRoZSBxdWVyeSBoYXNcbiogY29tcGxldGVkIHJ1bm5pbmdcbipcbiogQGV4YW1wbGVc
biogZGIuZmluZCh7Zm9vOiAnYmFyJywgaGVsbG86ICd3b3JsZCd9LCBmdW5jdGlvbiAoZGF0YSkg
e1xuKiAgIC8vIGRhdGEgd2lsbCByZXR1cm4gYW55IGl0ZW1zIHRoYXQgaGF2ZSBmb286IGJhciBh
bmRcbiogICAvLyBoZWxsbzogd29ybGQgaW4gdGhlaXIgcHJvcGVydGllc1xuKiB9KTtcbiovXG5T
dG9yZS5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChxdWVyeSwgY2FsbGJhY2spIHtcbiAgaWYg
KCFjYWxsYmFjaykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciB0b2RvcyA9IEpTT04ucGFy
c2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKS50
b2RvcztcblxuICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zLmZpbHRlcihmdW5jdGlvbiAodG9k
bykge1xuICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHtcbiAgICAgIGlmIChxdWVyeVtxXSAhPT0g
dG9kb1txXSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJl
dHVybiB0cnVlO1xuICB9KSk7XG59O1xuXG4vKipcbiogV2lsbCByZXRyaWV2ZSBhbGwgZGF0YSBm
cm9tIHRoZSBjb2xsZWN0aW9uXG4qXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBj
YWxsYmFjayB0byBmaXJlIHVwb24gcmV0cmlldmluZyBkYXRhXG4qL1xuU3RvcmUucHJvdG90eXBl
LmZpbmRBbGwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8
fCBmdW5jdGlvbiAoKSB7fTtcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3MpO1xu
fTtcblxuLyoqXG4qIFdpbGwgc2F2ZSB0aGUgZ2l2ZW4gZGF0YSB0byB0aGUgREIuIElmIG5vIGl0
ZW0gZXhpc3RzIGl0IHdpbGwgY3JlYXRlIGEgbmV3XG4qIGl0ZW0sIG90aGVyd2lzZSBpdCdsbCBz
aW1wbHkgdXBkYXRlIGFuIGV4aXN0aW5nIGl0ZW0ncyBwcm9wZXJ0aWVzXG4qXG4qIEBwYXJhbSB7
b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBkYXRhIHRvIHNhdmUgYmFjayBpbnRvIHRoZSBEQlxuKiBA
cGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZp
bmdcbiogQHBhcmFtIHtudW1iZXJ9IGlkIEFuIG9wdGlvbmFsIHBhcmFtIHRvIGVudGVyIGFuIElE
IG9mIGFuIGl0ZW0gdG8gdXBkYXRlXG4qL1xuU3RvcmUucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlv
biAodXBkYXRlRGF0YSwgY2FsbGJhY2ssIGlkKSB7XG4gIHZhciBkYXRhID0gSlNPTi5wYXJzZShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pO1xuICB2
YXIgdG9kb3MgPSBkYXRhLnRvZG9zO1xuXG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rp
b24gKCkge307XG5cbiAgLy8gSWYgYW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBmaW5kIHRoZSBp
dGVtIGFuZCB1cGRhdGUgZWFjaCBwcm9wZXJ0eVxuICBpZiAoaWQpIHtcbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodG9kb3NbaV0uaWQgPT09
IGlkKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiB1cGRhdGVEYXRhKSB7XG4gICAgICAgICAg
Ly8gZXNsaW50LWRpc2FibGUtbGluZSBndWFyZC1mb3ItaW5cbiAgICAgICAgICB0b2Rvc1tpXVtr
ZXldID0gdXBkYXRlRGF0YVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAg
fVxuICAgIH1cblxuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhp
cy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIGNhbGxiYWNrLmNhbGwodGhp
cywgSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMu
X2RiTmFtZV0pLnRvZG9zKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZW5lcmF0ZSBhbiBJRFxuICAg
IHVwZGF0ZURhdGEuaWQgPSB1bmlxdWVJRCsrO1xuXG4gICAgdG9kb3MucHVzaCh1cGRhdGVEYXRh
KTtcbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFt
ZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIFt1cGRh
dGVEYXRhXSk7XG4gIH1cbiAgdGhpcy5fbm90aWZ5KCk7XG59O1xuXG4vKipcbiogV2lsbCByZW1v
dmUgYW4gaXRlbSBmcm9tIHRoZSBTdG9yZSBiYXNlZCBvbiBpdHMgSURcbipcbiogQHBhcmFtIHtu
dW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgaXRlbSB5b3Ugd2FudCB0byByZW1vdmVcbiogQHBhcmFt
IHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgc2F2aW5nXG4q
L1xuU3RvcmUucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChpZCwgY2FsbGJhY2spIHtcbiAg
dmFyIGRhdGEgPSBKU09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5
X19bdGhpcy5fZGJOYW1lXSk7XG4gIHZhciB0b2RvcyA9IGRhdGEudG9kb3M7XG5cbiAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b2Rvc1tpXS5pZCA9
PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShpLCAxKTtcbiAgICAgIGJyZWFrO1xuICAgIH1c
biAgfVxuXG4gIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJO
YW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04u
cGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVd
KS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgpO1xufTtcblxuLyoqXG4qIFdpbGwgZHJvcCBhbGwg
c3RvcmFnZSBhbmQgc3RhcnQgZnJlc2hcbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sg
VGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgZHJvcHBpbmcgdGhlIGRhdGFcbiovXG5TdG9yZS5w
cm90b3R5cGUuZHJvcCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeSh7IHRv
ZG9zOiBbXSB9KTtcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSkudG9kb3MpO1xuICB0aGlz
Ll9ub3RpZnkoKTtcbn07XG5cbi8qKiovIH0sXG4vKiA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4v
KiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gVGVtcGxhdGU7XG5c
bnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAg
Jz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICAnXFwnJzogJyYjeDI3OycsXG4gICdg
JzogJyYjeDYwOydcbn07XG5cbnZhciBlc2NhcGVIdG1sQ2hhciA9IGZ1bmN0aW9uIGVzY2FwZUh0
bWxDaGFyKGNocikge1xuICByZXR1cm4gaHRtbEVzY2FwZXNbY2hyXTtcbn07XG5cbnZhciByZVVu
ZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ2BdL2c7XG52YXIgcmVIYXNVbmVzY2FwZWRIdG1sID0gbmV3
IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxudmFyIGVzY2FwZSA9IGZ1bmN0aW9u
IGVzY2FwZShzdHJpbmcpIHtcbiAgaWYgKHN0cmluZyAmJiByZUhhc1VuZXNjYXBlZEh0bWwudGVz
dChzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwg
ZXNjYXBlSHRtbENoYXIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbn07
XG5cbi8qKlxuKiBTZXRzIHVwIGRlZmF1bHRzIGZvciBhbGwgdGhlIFRlbXBsYXRlIG1ldGhvZHMg
c3VjaCBhcyBhIGRlZmF1bHQgdGVtcGxhdGVcbipcbiogQGNvbnN0cnVjdG9yXG4qL1xuZnVuY3Rp
b24gVGVtcGxhdGUoKSB7XG4gIHRoaXMuZGVmYXVsdFRlbXBsYXRlID0gJ1xcbiAgICA8bGkgZGF0
YS1pZD1cInt7aWR9fVwiIGNsYXNzPVwie3tjb21wbGV0ZWR9fVwiPlxcbiAgICAgIDxkaXYgY2xh
c3M9XCJ2aWV3XCI+XFxuICAgICAgICA8aW5wdXQgY2xhc3M9XCJ0b2dnbGVcIiB0eXBlPVwiY2hl
Y2tib3hcIiB7e2NoZWNrZWR9fSAvPlxcbiAgICAgICAgPGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+
XFxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxcbiAgICAgIDwv
ZGl2PlxcbiAgICA8L2xpPlxcbiAgJztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIDxsaT4gSFRN
TCBzdHJpbmcgYW5kIHJldHVybnMgaXQgZm9yIHBsYWNlbWVudCBpbiB5b3VyIGFwcC5cbiAqXG4g
KiBOT1RFOiBJbiByZWFsIGxpZmUgeW91IHNob3VsZCBiZSB1c2luZyBhIHRlbXBsYXRpbmcgZW5n
aW5lIHN1Y2ggYXMgTXVzdGFjaGVcbiAqIG9yIEhhbmRsZWJhcnMsIGhvd2V2ZXIsIHRoaXMgaXMg
YSB2YW5pbGxhIEpTIGV4YW1wbGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGRhdGEgVGhlIG9i
amVjdCBjb250YWluaW5nIGtleXMgeW91IHdhbnQgdG8gZmluZCBpbiB0aGVcbiAqICAgICAgICAg
ICAgICAgICAgICAgIHRlbXBsYXRlIHRvIHJlcGxhY2UuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBI
VE1MIFN0cmluZyBvZiBhbiA8bGk+IGVsZW1lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICogdmlldy5z
aG93KHtcbiAqICBpZDogMSxcbiAqICB0aXRsZTogXCJIZWxsbyBXb3JsZFwiLFxuICogIGNvbXBs
ZXRlZDogMCxcbiAqIH0pO1xuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuc2hvdyA9IGZ1bmN0aW9u
IChkYXRhKSB7XG4gIHZhciBpLCBsO1xuICB2YXIgdmlldyA9ICcnO1xuXG4gIGZvciAoaSA9IDAs
IGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMu
ZGVmYXVsdFRlbXBsYXRlO1xuICAgIHZhciBjb21wbGV0ZWQgPSAnJztcbiAgICB2YXIgY2hlY2tl
ZCA9ICcnO1xuXG4gICAgaWYgKGRhdGFbaV0uY29tcGxldGVkKSB7XG4gICAgICBjb21wbGV0ZWQg
PSAnY29tcGxldGVkJztcbiAgICAgIGNoZWNrZWQgPSAnY2hlY2tlZCc7XG4gICAgfVxuXG4gICAg
dGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2lkfX0nLCBkYXRhW2ldLmlkKTtcbiAgICB0
ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7dGl0bGV9fScsIGVzY2FwZShkYXRhW2ldLnRp
dGxlKSk7XG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRlZH19Jywg
Y29tcGxldGVkKTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19
JywgY2hlY2tlZCk7XG5cbiAgICB2aWV3ID0gdmlldyArIHRlbXBsYXRlO1xuICB9XG5cbiAgcmV0
dXJuIHZpZXc7XG59O1xuXG4vKipcbiAqIERpc3BsYXlzIGEgY291bnRlciBvZiBob3cgbWFueSB0
byBkb3MgYXJlIGxlZnQgdG8gY29tcGxldGVcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gYWN0aXZl
VG9kb3MgVGhlIG51bWJlciBvZiBhY3RpdmUgdG9kb3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBT
dHJpbmcgY29udGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBlLml0ZW1D
b3VudGVyID0gZnVuY3Rpb24gKGFjdGl2ZVRvZG9zKSB7XG4gIHZhciBwbHVyYWwgPSBhY3RpdmVU
b2RvcyA9PT0gMSA/ICcnIDogJ3MnO1xuXG4gIHJldHVybiAnPHN0cm9uZz4nICsgYWN0aXZlVG9k
b3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBsZWZ0Jztcbn07XG5cbi8qKlxuICog
VXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwiQ2xlYXIgY29tcGxldGVkXCIgYnV0dG9uXG4g
KlxuICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRUb2RvcyBUaGUgbnVtYmVyIG9mIGNvbXBs
ZXRlZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBj
b3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b24gPSBmdW5j
dGlvbiAoY29tcGxldGVkVG9kb3MpIHtcbiAgaWYgKGNvbXBsZXRlZFRvZG9zID4gMCkge1xuICAg
IHJldHVybiAnQ2xlYXIgY29tcGxldGVkJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJyc7XG4g
IH1cbn07XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKiBoYXJtb255
IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX192aWV3X18gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDkpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19J
TVBPUlRFRF9NT0RVTEVfMV9fY29udHJvbGxlcl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtc
bi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX21v
ZGVsX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fc3RvcmVfXyA9IF9fd2VicGFja19yZXF1aXJl
X18oNik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV80X190ZW1wbGF0ZV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcbi8qIGhhcm1vbnkgaW1w
b3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2hlbHBlcnNfXyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMCk7XG5cbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1
aXJlX18uZChleHBvcnRzLCBcImFcIiwgZnVuY3Rpb24oKSB7IHJldHVybiB1cGRhdGVUb2RvOyB9
KTsvKiB1bnVzZWQgaGFybW9ueSBleHBvcnQgZ2V0VG9kbyAqLy8qIHVudXNlZCBoYXJtb255IGV4
cG9ydCBzdWJzY3JpYmUgKi9cblxuXG5cblxuXG5cblxuXG52YXIgdG9kbyA9IHZvaWQgMDtcbnZh
ciBzdWJzY3JpYmVycyA9IFtdO1xuXG4vKipcbiAqIFNldHMgdXAgYSBicmFuZCBuZXcgVG9kbyBs
aXN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRv
IGRvIGxpc3QuXG4gKi9cbmZ1bmN0aW9uIFRvZG8obmFtZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBu
ZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fW1wiYVwiIC8qIGRlZmF1bHQg
Ki9dKG5hbWUpO1xuICB0aGlzLm1vZGVsID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVf
Ml9fbW9kZWxfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLnN0b3JhZ2UpO1xuICB0aGlzLnRl
bXBsYXRlID0gbmV3IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fdGVtcGxhdGVfX1tcImFc
IiAvKiBkZWZhdWx0ICovXSgpO1xuICB0aGlzLnZpZXcgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX192aWV3X19bXCJhXCIgLyogZGVmYXVsdCAqL10odGhpcy50ZW1wbGF0ZSk7XG4g
IHRoaXMuY29udHJvbGxlciA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2NvbnRy
b2xsZXJfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0aGlzLm1vZGVsLCB0aGlzLnZpZXcpO1xufVxu
XG5mdW5jdGlvbiB1cGRhdGVUb2RvKCkge1xuICB0b2RvID0gbmV3IFRvZG8oJ3RvZG9zLXZhbmls
bGFqcycpO1xuICB0b2RvLmNvbnRyb2xsZXIuc2V0Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5oYXNo
KTtcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiBzKCk7
XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXRUb2RvKCkge1xuICByZXR1cm4gdG9kbztcbn1cblxu
ZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1YnNjcmliZXJzLnB1c2goY2IpO1xuICByZXR1
cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9faGVscGVyc19fW1wiZlwiIC8qIHJlbW92ZSAqL10p
KHN1YnNjcmliZXJzLCBjYik7XG4gIH07XG59XG5cbi8qKiovIH0sXG4vKiA5ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ug
c3RyaWN0XCI7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8wX19oZWxwZXJzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xudmFyIF9jcmVhdGVD
bGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHBy
b3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2Ny
aXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVt
ZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZh
bHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJl
dHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlm
IChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJv
dG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwg
c3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuZnVuY3Rpb24gX2Ns
YXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0
YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwg
YSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyogZXNsaW50IG5vLWludmFsaWQtdGhp
czogMCwgY29tcGxleGl0eTpbMiwgOV0gKi9cblxuXG4vKipcbiAqIFZpZXcgdGhhdCBhYnN0cmFj
dHMgYXdheSB0aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5LlxuICogSXQgaGFzIHR3byBzaW1w
bGUgZW50cnkgcG9pbnRzOlxuICpcbiAqICAgLSBiaW5kKGV2ZW50TmFtZSwgaGFuZGxlcilcbiAq
ICAgICBUYWtlcyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5kIHJlZ2lzdGVycyB0aGUgaGFu
ZGxlclxuICogICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0ZXJPYmplY3QpXG4gKiAgICAgUmVu
ZGVycyB0aGUgZ2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBvcHRpb25zXG4gKi9cblxudmFyIFZpZXcg
PSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFZpZXcodGVtcGxhdGUpIHtcbiAgICBfY2xhc3ND
YWxsQ2hlY2sodGhpcywgVmlldyk7XG5cbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG5c
biAgICB0aGlzLkVOVEVSX0tFWSA9IDEzO1xuICAgIHRoaXMuRVNDQVBFX0tFWSA9IDI3O1xuXG4g
ICAgdGhpcy4kdG9kb0xpc3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9S
VEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLnRvZG8tbGlzdCcpO1xu
ICAgIHRoaXMuJHRvZG9JdGVtQ291bnRlciA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCcudG9kby1j
b3VudCcpO1xuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXy5p
KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSko
Jy5jbGVhci1jb21wbGV0ZWQnKTtcbiAgICB0aGlzLiRtYWluID0gX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICov
XSkoJy5tYWluJyk7XG4gICAgdGhpcy4kZm9vdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5m
b290ZXInKTtcbiAgICB0aGlzLiR0b2dnbGVBbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19X
RUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLnRv
Z2dsZS1hbGwnKTtcbiAgICB0aGlzLiRuZXdUb2RvID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9f
V0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJy5u
ZXctdG9kbycpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZpZXcsIFt7XG4gICAga2V5OiAnX3Jl
bW92ZUl0ZW0nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVtb3ZlSXRlbShpZCkge1xuICAgICAg
dmFyIGVsZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJd
Jyk7XG5cbiAgICAgIGlmIChlbGVtKSB7XG4gICAgICAgIHRoaXMuJHRvZG9MaXN0LnJlbW92ZUNo
aWxkKGVsZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19jbGVhckNvbXBs
ZXRlZEJ1dHRvbicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9jbGVhckNvbXBsZXRlZEJ1dHRvbihj
b21wbGV0ZWRDb3VudCwgdmlzaWJsZSkge1xuICAgICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuaW5u
ZXJIVE1MID0gdGhpcy50ZW1wbGF0ZS5jbGVhckNvbXBsZXRlZEJ1dHRvbihjb21wbGV0ZWRDb3Vu
dCk7XG4gICAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5zdHlsZS5kaXNwbGF5ID0gdmlzaWJsZSA/
ICdibG9jaycgOiAnbm9uZSc7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2VkaXRJdGVtRG9u
ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9lZGl0SXRlbURvbmUoaWQsIHRpdGxlKSB7XG4gICAg
ICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnW2RhdGEtaWQ9XCInICsgaWQg
KyAnXCJdJyk7XG5cbiAgICAgIGlmICghbGlzdEl0ZW0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAg
ICAgfVxuXG4gICAgICB2YXIgaW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnaW5wdXQuZWRp
dCcsIGxpc3RJdGVtKTtcbiAgICAgIGxpc3RJdGVtLnJlbW92ZUNoaWxkKGlucHV0KTtcblxuICAg
ICAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1lLnJlcGxhY2UoJ2VkaXRp
bmcnLCAnJyk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImJcIiAvKiBxc2EgKi9dKSgnbGFiZWwnLCBsaXN0SXRl
bSkuZm9yRWFjaChmdW5jdGlvbiAobGFiZWwpIHtcbiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQg
PSB0aXRsZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3JlbmRlcicsXG4g
ICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtcbiAgICAgIHZh
ciB0aGF0ID0gdGhpcztcbiAgICAgIHZhciB2aWV3Q29tbWFuZHMgPSB7XG4gICAgICAgIHNob3dF
bnRyaWVzOiBmdW5jdGlvbiBzaG93RW50cmllcygpIHtcbiAgICAgICAgICB0aGF0LiR0b2RvTGlz
dC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNob3cocGFyYW1ldGVyKTtcbiAgICAgICAgfSxc
biAgICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gcmVtb3ZlSXRlbSgpIHtcbiAgICAgICAgICB0
aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAgICAgIHVwZGF0ZUVs
ZW1lbnRDb3VudDogZnVuY3Rpb24gdXBkYXRlRWxlbWVudENvdW50KCkge1xuICAgICAgICAgIHRo
YXQuJHRvZG9JdGVtQ291bnRlci5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLml0ZW1Db3VudGVy
KHBhcmFtZXRlcik7XG4gICAgICAgIH0sXG4gICAgICAgIGNsZWFyQ29tcGxldGVkQnV0dG9uOiBm
dW5jdGlvbiBjbGVhckNvbXBsZXRlZEJ1dHRvbigpIHtcbiAgICAgICAgICB0aGF0Ll9jbGVhckNv
bXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlzaWJsZSk7XG4g
ICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRCbG9ja1Zpc2liaWxpdHk6IGZ1bmN0aW9uIGNvbnRl
bnRCbG9ja1Zpc2liaWxpdHkoKSB7XG4gICAgICAgICAgdGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5
ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3BsYXkgPSBwYXJhbWV0ZXIudmlzaWJsZSA/ICdibG9j
aycgOiAnbm9uZSc7XG4gICAgICAgIH0sXG4gICAgICAgIHRvZ2dsZUFsbDogZnVuY3Rpb24gdG9n
Z2xlQWxsKCkge1xuICAgICAgICAgIHRoYXQuJHRvZ2dsZUFsbC5jaGVja2VkID0gcGFyYW1ldGVy
LmNoZWNrZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNldEZpbHRlcjogZnVuY3Rpb24gc2V0Rmls
dGVyKCkge1xuICAgICAgICAgIF9zZXRGaWx0ZXIocGFyYW1ldGVyKTtcbiAgICAgICAgfSxcbiAg
ICAgICAgY2xlYXJOZXdUb2RvOiBmdW5jdGlvbiBjbGVhck5ld1RvZG8oKSB7XG4gICAgICAgICAg
dGhhdC4kbmV3VG9kby52YWx1ZSA9ICcnO1xuICAgICAgICB9LFxuICAgICAgICBlbGVtZW50Q29t
cGxldGU6IGZ1bmN0aW9uIGVsZW1lbnRDb21wbGV0ZSgpIHtcbiAgICAgICAgICBfZWxlbWVudENv
bXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLmNvbXBsZXRlZCk7XG4gICAgICAgIH0sXG4g
ICAgICAgIGVkaXRJdGVtOiBmdW5jdGlvbiBlZGl0SXRlbSgpIHtcbiAgICAgICAgICBfZWRpdEl0
ZW0ocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpO1xuICAgICAgICB9LFxuICAgICAgICBl
ZGl0SXRlbURvbmU6IGZ1bmN0aW9uIGVkaXRJdGVtRG9uZSgpIHtcbiAgICAgICAgICB0aGF0Ll9l
ZGl0SXRlbURvbmUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpO1xuICAgICAgICB9XG4g
ICAgICB9O1xuXG4gICAgICB2aWV3Q29tbWFuZHNbdmlld0NtZF0oKTtcbiAgICB9XG4gIH0sIHtc
biAgICBrZXk6ICdfYmluZEl0ZW1FZGl0RG9uZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9iaW5k
SXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIF9f
d2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNf
X1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2Js
dXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhc2V0LmlzY2FuY2VsZWQp
IHtcbiAgICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxu
ICAgICAgICAgICAgdGl0bGU6IHRoaXMudmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxu
ICAgICAgfSk7XG5cbiAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2Rv
TGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAg
IGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVOVEVSX0tFWSkge1xuICAgICAgICAgIC8vIFJl
bW92ZSB0aGUgY3Vyc29yIGZyb20gdGhlIGlucHV0IHdoZW4geW91IGhpdCBlbnRlciBqdXN0IGxp
a2UgaWYgaXRcbiAgICAgICAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtXG4gICAgICAgICAgdGhpcy5i
bHVyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19i
aW5kSXRlbUVkaXRDYW5jZWwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfYmluZEl0ZW1FZGl0Q2Fu
Y2VsKGhhbmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIF9fd2VicGFja19y
ZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAv
KiAkZGVsZWdhdGUgKi9dKSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVu
Y3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQ
RV9LRVkpIHtcbiAgICAgICAgICB0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCA9IHRydWU7XG4gICAg
ICAgICAgdGhpcy5ibHVyKCk7XG5cbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6IF9pdGVtSWQodGhp
cykgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2Jp
bmQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgICB2
YXIgdGhhdCA9IHRoaXM7XG4gICAgICBpZiAoZXZlbnQgPT09ICduZXdUb2RvJykge1xuICAgICAg
ICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxw
ZXJzX19bXCJkXCIgLyogJG9uICovXSkodGhhdC4kbmV3VG9kbywgJ2NoYW5nZScsIGZ1bmN0aW9u
ICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHRoYXQuJG5ld1RvZG8udmFsdWUpO1xuICAgICAgICB9
KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdyZW1vdmVDb21wbGV0ZWQnKSB7XG4gICAg
ICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0LiRjbGVhckNvbXBsZXRlZCwgJ2NsaWNrJywg
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICB9
IGVsc2UgaWYgKGV2ZW50ID09PSAndG9nZ2xlQWxsJykge1xuICAgICAgICBfX3dlYnBhY2tfcmVx
dWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJkXCIgLyog
JG9uICovXSkodGhhdC4kdG9nZ2xlQWxsLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAg
ICAgaGFuZGxlcih7IGNvbXBsZXRlZDogdGhpcy5jaGVja2VkIH0pO1xuICAgICAgICB9KTtcbiAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdCcpIHtcbiAgICAgICAgX193ZWJwYWNr
X3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wi
IC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2sn
LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcih7IGlkOiBfaXRlbUlkKHRoaXMpIH0p
O1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykg
e1xuICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVnYXRlICovXSkodGhhdC4kdG9kb0xpc3QsICcu
ZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6
IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9
PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0
aGF0LiR0b2RvTGlzdCwgJy50b2dnbGUnLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAg
ICAgaGFuZGxlcih7XG4gICAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICAg
IGNvbXBsZXRlZDogdGhpcy5jaGVja2VkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAg
ICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0RG9uZScpIHtcbiAgICAgICAgdGhhdC5f
YmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdp
dGVtRWRpdENhbmNlbCcpIHtcbiAgICAgICAgdGhhdC5fYmluZEl0ZW1FZGl0Q2FuY2VsKGhhbmRs
ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBWaWV3O1xufSgpO1xuXG4v
KiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gVmlldztcblxuXG5m
dW5jdGlvbiBfc2V0RmlsdGVyKGN1cnJlbnRQYWdlKSB7XG4gIF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10p
KCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05hbWUgPSAnJztcbiAgX193ZWJwYWNrX3JlcXVp
cmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFz
ICovXSkoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBhZ2UgKyAnXCJdJykuY2xhc3NO
YW1lID0gJ3NlbGVjdGVkJztcbn1cblxuZnVuY3Rpb24gX2VsZW1lbnRDb21wbGV0ZShpZCwgY29t
cGxldGVkKSB7XG4gIHZhciBsaXN0SXRlbSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdbZGF0YS1p
ZD1cIicgKyBpZCArICdcIl0nKTtcblxuICBpZiAoIWxpc3RJdGVtKSB7XG4gICAgcmV0dXJuO1xu
ICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAn
JztcblxuICAvLyBJbiBjYXNlIGl0IHdhcyB0b2dnbGVkIGZyb20gYW4gZXZlbnQgYW5kIG5vdCBi
eSBjbGlja2luZyB0aGUgY2hlY2tib3hcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFD
S19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJ2lucHV0Jywg
bGlzdEl0ZW0pLmNoZWNrZWQgPSBjb21wbGV0ZWQ7XG59XG5cbmZ1bmN0aW9uIF9lZGl0SXRlbShp
ZCwgdGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0gX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8qIHFzICovXSkoJ1tkYXRh
LWlkPVwiJyArIGlkICsgJ1wiXScpO1xuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm47
XG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUgKyAnIGVk
aXRpbmcnO1xuXG4gIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7
XG4gIGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0JztcblxuICBsaXN0SXRlbS5hcHBlbmRDaGlsZChp
bnB1dCk7XG4gIGlucHV0LmZvY3VzKCk7XG4gIGlucHV0LnZhbHVlID0gdGl0bGU7XG59XG5cbmZ1
bmN0aW9uIF9pdGVtSWQoZWxlbWVudCkge1xuICB2YXIgbGkgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
LmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJlXCIgLyogJHBhcmVu
dCAqL10pKGVsZW1lbnQsICdsaScpO1xuICByZXR1cm4gcGFyc2VJbnQobGkuZGF0YXNldC5pZCwg
MTApO1xufVxuXG4vKioqLyB9LFxuLyogMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cykge1xuXG4vLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpblxuXG4v
KioqLyB9LFxuLyogMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICov
IHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMCk7XG4vKiBlc2xpbnQgbm8t
Y29uc29sZTowICovXG5cblxuXG4vLyB0aGlzIGlzIG9ubHkgcmVsZXZhbnQgd2hlbiB1c2luZyBg
aG90YCBtb2RlIHdpdGggd2VicGFja1xuLy8gc3BlY2lhbCB0aGFua3MgdG8gRXJpYyBDbGVtbW9u
czogaHR0cHM6Ly9naXRodWIuY29tL2VyaWNjbGVtbW9ucy93ZWJwYWNrLWhvdC1zZXJ2ZXItZXhh
bXBsZVxudmFyIHJlbG9hZGluZyA9IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZSc7
XG5pZiAoZmFsc2UpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoZnVuY3Rpb24gKGVycikge30pO1xu
ICBpZiAocmVsb2FkaW5nKSB7XG4gICAgb25Mb2FkKCk7XG4gIH0gZWxzZSB7XG4gICAgYm9vdHN0
cmFwKCk7XG4gIH1cbn0gZWxzZSB7XG4gIGJvb3RzdHJhcCgpO1xufVxuXG5mdW5jdGlvbiBib290
c3RyYXAoKSB7XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh3aW5kb3csICdsb2FkJywgX19XRUJQ
QUNLX0lNUE9SVEVEX01PRFVMRV8wX19hcHBfX1tcImFcIiAvKiBvbkxvYWQgKi9dKTtcbiAgX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faGVscGVyc19f
W1wiZFwiIC8qICRvbiAqL10pKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9uTG9hZCAqL10pO1xufVxuXG4vKioqLyB9XG5d
LFsxMV0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBidW5kbGUuYXBwLjcxYmIxZjY3
MWU0ZTY1NjA0ZDA1LmpzIiwiZXhwb3J0IHtxcywgcXNhLCAkb24sICRkZWxlZ2F0ZSwgJHBhcmVu
dCwgcmVtb3ZlfVxuXG4vLyBHZXQgZWxlbWVudChzKSBieSBDU1Mgc2VsZWN0b3I6XG5mdW5jdGlv
biBxcyhzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVl
cnlTZWxlY3RvcihzZWxlY3Rvcilcbn1cblxuZnVuY3Rpb24gcXNhKHNlbGVjdG9yLCBzY29wZSkg
e1xuICByZXR1cm4gKHNjb3BlIHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9y
KVxufVxuXG4vLyBhZGRFdmVudExpc3RlbmVyIHdyYXBwZXI6XG5mdW5jdGlvbiAkb24odGFyZ2V0
LCB0eXBlLCBjYWxsYmFjaywgdXNlQ2FwdHVyZSkge1xuICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5l
cih0eXBlLCBjYWxsYmFjaywgISF1c2VDYXB0dXJlKVxufVxuXG4vLyBBdHRhY2ggYSBoYW5kbGVy
IHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsXG4vLyBu
b3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSByb290IGVsZW1lbnRcbmZ1bmN0aW9uICRk
ZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBoYW5kbGVyKSB7XG4gIC8vIGh0dHBzOi8v
ZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0V2ZW50cy9ibHVyXG4gIHZhciB1
c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5cGUgPT09ICdmb2N1cydcbiAgJG9uKHRh
cmdldCwgdHlwZSwgZGlzcGF0Y2hFdmVudCwgdXNlQ2FwdHVyZSlcblxuICBmdW5jdGlvbiBkaXNw
YXRjaEV2ZW50KGV2ZW50KSB7XG4gICAgdmFyIHRhcmdldEVsZW1lbnQgPSBldmVudC50YXJnZXRc
biAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBxc2Eoc2VsZWN0b3IsIHRhcmdldClcbiAgICB2
YXIgaGFzTWF0Y2ggPSBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHBvdGVudGlhbEVsZW1l
bnRzLCB0YXJnZXRFbGVtZW50KSA+PSAwXG5cbiAgICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGhh
bmRsZXIuY2FsbCh0YXJnZXRFbGVtZW50LCBldmVudClcbiAgICB9XG4gIH1cbn1cblxuLy8gRmlu
ZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRoIHRoZSBnaXZlbiB0YWcgbmFtZTpcbi8vICRwYXJl
bnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rpb24gJHBhcmVudChlbGVtZW50LCB0YWdOYW1lKSB7
XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9
XG4gIGlmIChlbGVtZW50LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdO
YW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlXG4gIH1c
biAgcmV0dXJuICRwYXJlbnQoZWxlbWVudC5wYXJlbnROb2RlLCB0YWdOYW1lKVxufVxuXG4vLyBy
ZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBhbiBhcnJheVxuLy8gY29uc3QgeCA9IFsxLDIsM11cbi8v
IHJlbW92ZSh4LCAyKVxuLy8geCB+PT0gWzEsM11cbmZ1bmN0aW9uIHJlbW92ZShhcnJheSwgdGhp
bmcpIHtcbiAgY29uc3QgaW5kZXggPSBhcnJheS5pbmRleE9mKHRoaW5nKVxuICBpZiAoaW5kZXgg
PT09IC0xKSB7XG4gICAgcmV0dXJuIGFycmF5XG4gIH1cbiAgYXJyYXkuc3BsaWNlKGluZGV4LCAx
KVxufVxuXG4vLyBBbGxvdyBmb3IgbG9vcGluZyBvbiBub2RlcyBieSBjaGFpbmluZzpcbi8vIHFz
YSgnLmZvbycpLmZvckVhY2goZnVuY3Rpb24gKCkge30pXG5Ob2RlTGlzdC5wcm90b3R5cGUuZm9y
RWFjaCA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAv
L1xuLy8gLi9oZWxwZXJzLmpzIiwiaW1wb3J0ICd0b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzJ1xu
aW1wb3J0ICcuL2FwcC5jc3MnXG5cbmltcG9ydCB7JG9ufSBmcm9tICcuL2hlbHBlcnMnXG5pbXBv
cnQge3VwZGF0ZVRvZG99IGZyb20gJy4vdG9kbydcblxuZXhwb3J0IGZ1bmN0aW9uIG9uTG9hZCgp
IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0XG4g
IHVwZGF0ZVRvZG8oKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vYXBwLmpz
IiwiZXhwb3J0IGRlZmF1bHQgQ29udHJvbGxlclxuXG4vKipcbiogVGFrZXMgYSBtb2RlbCBhbmQg
dmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRoZW1cbipcbiogQGNvbnN0
cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwgaW5zdGFuY2VcbiogQHBh
cmFtIHtvYmplY3R9IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2VcbiovXG5mdW5jdGlvbiBDb250cm9s
bGVyKG1vZGVsLCB2aWV3KSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsID0gbW9k
ZWxcbiAgdGhhdC52aWV3ID0gdmlld1xuXG4gIHRoYXQudmlldy5iaW5kKCduZXdUb2RvJywgZnVu
Y3Rpb24odGl0bGUpIHtcbiAgICB0aGF0LmFkZEl0ZW0odGl0bGUpXG4gIH0pXG5cbiAgdGhhdC52
aWV3LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW0o
aXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXREb25lJywgZnVuY3Rp
b24oaXRlbSkge1xuICAgIHRoYXQuZWRpdEl0ZW1TYXZlKGl0ZW0uaWQsIGl0ZW0udGl0bGUpXG4g
IH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0Q2FuY2VsJywgZnVuY3Rpb24oaXRlbSkg
e1xuICAgIHRoYXQuZWRpdEl0ZW1DYW5jZWwoaXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcu
YmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICB0aGF0LnJlbW92ZUl0ZW0o
aXRlbS5pZClcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVRvZ2dsZScsIGZ1bmN0aW9u
KGl0ZW0pIHtcbiAgICB0aGF0LnRvZ2dsZUNvbXBsZXRlKGl0ZW0uaWQsIGl0ZW0uY29tcGxldGVk
KVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBmdW5jdGlvbigp
IHtcbiAgICB0aGF0LnJlbW92ZUNvbXBsZXRlZEl0ZW1zKClcbiAgfSlcblxuICB0aGF0LnZpZXcu
YmluZCgndG9nZ2xlQWxsJywgZnVuY3Rpb24oc3RhdHVzKSB7XG4gICAgdGhhdC50b2dnbGVBbGwo
c3RhdHVzLmNvbXBsZXRlZClcbiAgfSlcbn1cblxuLyoqXG4qIExvYWRzIGFuZCBpbml0aWFsaXNl
cyB0aGUgdmlld1xuKlxuKiBAcGFyYW0ge3N0cmluZ30gJycgfCAnYWN0aXZlJyB8ICdjb21wbGV0
ZWQnXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1bmN0aW9uKGxvY2F0aW9u
SGFzaCkge1xuICB2YXIgcm91dGUgPSBsb2NhdGlvbkhhc2guc3BsaXQoJy8nKVsxXVxuICB2YXIg
cGFnZSA9IHJvdXRlIHx8ICcnXG4gIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKHBhZ2UpXG59XG5c
bi8qKlxuKiBBbiBldmVudCB0byBmaXJlIG9uIGxvYWQuIFdpbGwgZ2V0IGFsbCBpdGVtcyBhbmQg
ZGlzcGxheSB0aGVtIGluIHRoZVxuKiB0b2RvLWxpc3RcbiovXG5Db250cm9sbGVyLnByb3RvdHlw
ZS5zaG93QWxsID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVs
LnJlYWQoZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVz
JywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIFJlbmRlcnMgYWxsIGFjdGl2ZSB0YXNrc1xuKi9c
bkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBY3RpdmUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRo
YXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiBmYWxzZX0sIGZ1bmN0aW9u
KGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpXG4gIH0p
XG59XG5cbi8qKlxuKiBSZW5kZXJzIGFsbCBjb21wbGV0ZWQgdGFza3NcbiovXG5Db250cm9sbGVy
LnByb3RvdHlwZS5zaG93Q29tcGxldGVkID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhp
c1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHtc
biAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpXG4gIH0pXG59XG5cbi8q
KlxuKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFkZCBhbiBpdGVtLiBT
aW1wbHkgcGFzcyBpbiB0aGUgZXZlbnRcbiogb2JqZWN0IGFuZCBpdCdsbCBoYW5kbGUgdGhlIERP
TSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uXG4qL1xuQ29udHJvbGxlci5w
cm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uKHRpdGxlKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xu
XG4gIGlmICh0aXRsZS50cmltKCkgPT09ICcnKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB0aGF0
Lm1vZGVsLmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24oKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcign
Y2xlYXJOZXdUb2RvJylcbiAgICB0aGF0Ll9maWx0ZXIodHJ1ZSlcbiAgfSlcbn1cblxuLypcbiog
VHJpZ2dlcnMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
LmVkaXRJdGVtID0gZnVuY3Rpb24oaWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9k
ZWwucmVhZChpZCwgZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJ
dGVtJywge2lkLCB0aXRsZTogZGF0YVswXS50aXRsZX0pXG4gIH0pXG59XG5cbi8qXG4qIEZpbmlz
aGVzIHRoZSBpdGVtIGVkaXRpbmcgbW9kZSBzdWNjZXNzZnVsbHkuXG4qL1xuQ29udHJvbGxlci5w
cm90b3R5cGUuZWRpdEl0ZW1TYXZlID0gZnVuY3Rpb24oaWQsIHRpdGxlKSB7XG4gIHZhciB0aGF0
ID0gdGhpc1xuICBpZiAodGl0bGUudHJpbSgpKSB7XG4gICAgdGhhdC5tb2RlbC51cGRhdGUoaWQs
IHt0aXRsZX0sIGZ1bmN0aW9uKCkge1xuICAgICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1E
b25lJywge2lkLCB0aXRsZX0pXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICB0aGF0LnJlbW92ZUl0
ZW0oaWQpXG4gIH1cbn1cblxuLypcbiogQ2FuY2VscyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4q
L1xuQ29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW1DYW5jZWwgPSBmdW5jdGlvbihpZCkge1xu
ICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbihkYXRhKSB7
XG4gICAgdGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW1Eb25lJywge2lkLCB0aXRsZTogZGF0YVsw
XS50aXRsZX0pXG4gIH0pXG59XG5cbi8qKlxuKiBCeSBnaXZpbmcgaXQgYW4gSUQgaXQnbGwgZmlu
ZCB0aGUgRE9NIGVsZW1lbnQgbWF0Y2hpbmcgdGhhdCBJRCxcbiogcmVtb3ZlIGl0IGZyb20gdGhl
IERPTSBhbmQgYWxzbyByZW1vdmUgaXQgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFyYW0ge251bWJl
cn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHRvIHJlbW92ZSBmcm9tIHRoZSBET00gYW5kXG4qIHN0
b3JhZ2VcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oaWQp
IHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVtb3ZlKGlkLCBmdW5jdGlvbigp
IHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdyZW1vdmVJdGVtJywgaWQpXG4gIH0pXG5cbiAgdGhh
dC5fZmlsdGVyKClcbn1cblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFsbCBjb21wbGV0ZWQgaXRlbXMg
ZnJvbSB0aGUgRE9NIGFuZCBzdG9yYWdlLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92
ZUNvbXBsZXRlZEl0ZW1zID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0
Lm1vZGVsLnJlYWQoe2NvbXBsZXRlZDogdHJ1ZX0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRh
LmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQp
XG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIoKVxufVxuXG4vKipcbiogR2l2ZSBpdCBh
biBJRCBvZiBhIG1vZGVsIGFuZCBhIGNoZWNrYm94IGFuZCBpdCB3aWxsIHVwZGF0ZSB0aGUgaXRl
bVxuKiBpbiBzdG9yYWdlIGJhc2VkIG9uIHRoZSBjaGVja2JveCdzIHN0YXRlLlxuKlxuKiBAcGFy
YW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBlbGVtZW50IHRvIGNvbXBsZXRlIG9yIHVuY29t
cGxldGVcbiogQHBhcmFtIHtvYmplY3R9IGNoZWNrYm94IFRoZSBjaGVja2JveCB0byBjaGVjayB0
aGUgc3RhdGUgb2YgY29tcGxldGVcbiogICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG5vdFxu
KiBAcGFyYW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBzaWxlbnQgUHJldmVudCByZS1maWx0ZXJpbmcg
dGhlIHRvZG8gaXRlbXNcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVDb21wbGV0ZSA9
IGZ1bmN0aW9uKGlkLCBjb21wbGV0ZWQsIHNpbGVudCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAg
dGhhdC5tb2RlbC51cGRhdGUoaWQsIHtjb21wbGV0ZWR9LCBmdW5jdGlvbigpIHtcbiAgICB0aGF0
LnZpZXcucmVuZGVyKCdlbGVtZW50Q29tcGxldGUnLCB7XG4gICAgICBpZCxcbiAgICAgIGNvbXBs
ZXRlZCxcbiAgICB9KVxuICB9KVxuXG4gIGlmICghc2lsZW50KSB7XG4gICAgdGhhdC5fZmlsdGVy
KClcbiAgfVxufVxuXG4vKipcbiogV2lsbCB0b2dnbGUgQUxMIGNoZWNrYm94ZXMnIG9uL29mZiBz
dGF0ZSBhbmQgY29tcGxldGVuZXNzIG9mIG1vZGVscy5cbiogSnVzdCBwYXNzIGluIHRoZSBldmVu
dCBvYmplY3QuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQWxsID0gZnVuY3Rpb24o
Y29tcGxldGVkKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoe2NvbXBs
ZXRlZDogIWNvbXBsZXRlZH0sIGZ1bmN0aW9uKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVu
Y3Rpb24oaXRlbSkge1xuICAgICAgdGhhdC50b2dnbGVDb21wbGV0ZShpdGVtLmlkLCBjb21wbGV0
ZWQsIHRydWUpXG4gICAgfSlcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIoKVxufVxuXG4vKipcbiog
VXBkYXRlcyB0aGUgcGllY2VzIG9mIHRoZSBwYWdlIHdoaWNoIGNoYW5nZSBkZXBlbmRpbmcgb24g
dGhlIHJlbWFpbmluZ1xuKiBudW1iZXIgb2YgdG9kb3MuXG4qL1xuQ29udHJvbGxlci5wcm90b3R5
cGUuX3VwZGF0ZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0
Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uKHRvZG9zKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcign
dXBkYXRlRWxlbWVudENvdW50JywgdG9kb3MuYWN0aXZlKVxuICAgIHRoYXQudmlldy5yZW5kZXIo
J2NsZWFyQ29tcGxldGVkQnV0dG9uJywge1xuICAgICAgY29tcGxldGVkOiB0b2Rvcy5jb21wbGV0
ZWQsXG4gICAgICB2aXNpYmxlOiB0b2Rvcy5jb21wbGV0ZWQgPiAwXG4gICAgfSlcblxuICAgIHRo
YXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHtjaGVja2VkOiB0b2Rvcy5jb21wbGV0ZWQgPT09
IHRvZG9zLnRvdGFsfSlcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdjb250ZW50QmxvY2tWaXNpYmls
aXR5Jywge3Zpc2libGU6IHRvZG9zLnRvdGFsID4gMH0pXG4gIH0pXG59XG5cbi8qKlxuKiBSZS1m
aWx0ZXJzIHRoZSB0b2RvIGl0ZW1zLCBiYXNlZCBvbiB0aGUgYWN0aXZlIHJvdXRlLlxuKiBAcGFy
YW0ge2Jvb2xlYW58dW5kZWZpbmVkfSBmb3JjZSAgZm9yY2VzIGEgcmUtcGFpbnRpbmcgb2YgdG9k
byBpdGVtcy5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fZmlsdGVyID0gZnVuY3Rpb24oZm9y
Y2UpIHtcbiAgdmFyIGFjdGl2ZVJvdXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRv
VXBwZXJDYXNlKCkgKyB0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSlcblxuICAvLyBVcGRhdGUg
dGhlIGVsZW1lbnRzIG9uIHRoZSBwYWdlLCB3aGljaCBjaGFuZ2Ugd2l0aCBlYWNoIGNvbXBsZXRl
ZCB0b2RvXG4gIHRoaXMuX3VwZGF0ZUNvdW50KClcblxuICAvLyBJZiB0aGUgbGFzdCBhY3RpdmUg
cm91dGUgaXNuJ3QgXCJBbGxcIiwgb3Igd2UncmUgc3dpdGNoaW5nIHJvdXRlcywgd2VcbiAgLy8g
cmUtY3JlYXRlIHRoZSB0b2RvIGl0ZW0gZWxlbWVudHMsIGNhbGxpbmc6XG4gIC8vICAgdGhpcy5z
aG93W0FsbHxBY3RpdmV8Q29tcGxldGVkXSgpO1xuICBpZiAoZm9yY2UgfHwgdGhpcy5fbGFzdEFj
dGl2ZVJvdXRlICE9PSAnQWxsJyB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09IGFjdGl2ZVJv
dXRlKSB7XG4gICAgdGhpc1snc2hvdycgKyBhY3RpdmVSb3V0ZV0oKVxuICB9XG5cbiAgdGhpcy5f
bGFzdEFjdGl2ZVJvdXRlID0gYWN0aXZlUm91dGVcbn1cblxuLyoqXG4qIFNpbXBseSB1cGRhdGVz
IHRoZSBmaWx0ZXIgbmF2J3Mgc2VsZWN0ZWQgc3RhdGVzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5
cGUuX3VwZGF0ZUZpbHRlclN0YXRlID0gZnVuY3Rpb24oY3VycmVudFBhZ2UpIHtcbiAgLy8gU3Rv
cmUgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dpbmcgdXMgdG8gcmUtZmls
dGVyIHRvZG9cbiAgLy8gaXRlbXMgYXMgdGhleSBhcmUgbWFya2VkIGNvbXBsZXRlIG9yIGluY29t
cGxldGUuXG4gIGN1cnJlbnRQYWdlID0gY3VycmVudFBhZ2Uuc3BsaXQoJz8nKVswXVxuICB0aGlz
Ll9hY3RpdmVSb3V0ZSA9IGN1cnJlbnRQYWdlXG5cbiAgaWYgKGN1cnJlbnRQYWdlID09PSAnJykg
e1xuICAgIHRoaXMuX2FjdGl2ZVJvdXRlID0gJ0FsbCdcbiAgfVxuXG4gIHRoaXMuX2ZpbHRlcigp
XG5cbiAgdGhpcy52aWV3LnJlbmRlcignc2V0RmlsdGVyJywgY3VycmVudFBhZ2UpXG59XG5cblxu
XG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9jb250cm9sbGVyLmpzIiwiKGZ1bmN0aW9uKHJv
b3QpIHtcbiAgdmFyIGxvY2FsU3RvcmFnZU1lbW9yeSA9IHt9O1xuICB2YXIgY2FjaGUgPSB7fTtc
blxuICAvKipcbiAgICogbnVtYmVyIG9mIHN0b3JlZCBpdGVtcy5cbiAgICovXG4gIGxvY2FsU3Rv
cmFnZU1lbW9yeS5sZW5ndGggPSAwO1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGl0ZW0gZm9yIHBh
c3NlZCBrZXksIG9yIG51bGxcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAg
ICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJucyB7U3RyaW5nfG51
bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRlbSA9IGZ1bmN0aW9uKGtleSkg
e1xuICAgIHJldHVybiBjYWNoZVtrZXldIHx8IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNl
dHMgaXRlbSBmb3Iga2V5IHRvIHBhc3NlZCB2YWx1ZSwgYXMgU3RyaW5nXG4gICAqXG4gICAqIEBw
YXJhIHtTdHJpbmd9IGtleVxuICAgKiAgICAgICBuYW1lIG9mIGl0ZW0gdG8gYmUgc2V0XG4gICAq
IEBwYXJhIHtTdHJpbmd9IHZhbHVlXG4gICAqICAgICAgIHZhbHVlLCB3aWxsIGFsd2F5cyBiZSB0
dXJuZWQgaW50byBhIFN0cmluZ1xuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAg
bG9jYWxTdG9yYWdlTWVtb3J5LnNldEl0ZW0gPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7XG4gICAg
aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGxvY2FsU3RvcmFnZU1l
bW9yeS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghKGNhY2hlLmhh
c093blByb3BlcnR5KGtleSkpKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGgr
KztcbiAgICAgIH1cblxuICAgICAgY2FjaGVba2V5XSA9ICcnICsgdmFsdWU7XG4gICAgfVxuICB9
O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGl0ZW0gZm9yIHBhc3NlZCBrZXlcbiAgICpcbiAgICog
QHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZW1vdmVk
XG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnku
cmVtb3ZlSXRlbSA9IGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5oYXNPd25Qcm9wZXJ0
eShrZXkpKSB7XG4gICAgICBkZWxldGUgY2FjaGVba2V5XTtcbiAgICAgIGxvY2FsU3RvcmFnZU1l
bW9yeS5sZW5ndGgtLTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgbmFtZSBv
ZiBrZXkgYXQgcGFzc2VkIGluZGV4XG4gICAqXG4gICAqIEBwYXJhIHtOdW1iZXJ9IGluZGV4XG4g
ICAqICAgICAgIFBvc2l0aW9uIGZvciBrZXkgdG8gYmUgcmV0dXJuZWQgKHN0YXJ0cyBhdCAwKVxu
ICAgKiBAcmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnku
a2V5ID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2FjaGUpW2lu
ZGV4XSB8fCBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGFsbCBzdG9yZWQgaXRl
bXMgYW5kIHNldHMgbGVuZ3RoIHRvIDBcbiAgICpcbiAgICogQHJldHVybnMge3VuZGVmaW5lZH1c
biAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgIGNh
Y2hlID0ge307XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7XG4gIH07XG5cbiAg
aWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0g
bG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9IGVsc2Uge1xuICAgIHJvb3QubG9jYWxTdG9yYWdlTWVt
b3J5ID0gbG9jYWxTdG9yYWdlTWVtb3J5O1xuICB9XG59KSh0aGlzKTtcblxuXG4vLyBXRUJQQUNL
IEZPT1RFUiAvL1xuLy8gLi9tZW1vcnkuanMiLCJleHBvcnQgZGVmYXVsdCBNb2RlbFxuXG4vKipc
biogQ3JlYXRlcyBhIG5ldyBNb2RlbCBpbnN0YW5jZSBhbmQgaG9va3MgdXAgdGhlIHN0b3JhZ2Uu
XG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gc3RvcmFnZSBBIHJlZmVyZW5j
ZSB0byB0aGUgY2xpZW50IHNpZGUgc3RvcmFnZSBjbGFzc1xuKi9cbmZ1bmN0aW9uIE1vZGVsKHN0
b3JhZ2UpIHtcbiAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZVxufVxuXG4vKipcbiogQ3JlYXRlcyBh
IG5ldyB0b2RvIG1vZGVsXG4qXG4qIEBwYXJhbSB7c3RyaW5nfSBbdGl0bGVdIFRoZSB0aXRsZSBv
ZiB0aGUgdGFza1xuKiBAcGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0
byBmaXJlIGFmdGVyIHRoZSBtb2RlbCBpcyBjcmVhdGVkXG4qL1xuTW9kZWwucHJvdG90eXBlLmNy
ZWF0ZSA9IGZ1bmN0aW9uKHRpdGxlLCBjYWxsYmFjaykge1xuICB0aXRsZSA9IHRpdGxlIHx8ICcn
XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cblxuICB2YXIgbmV3
SXRlbSA9IHtcbiAgICB0aXRsZTogdGl0bGUudHJpbSgpLFxuICAgIGNvbXBsZXRlZDogZmFsc2Vc
biAgfVxuXG4gIHRoaXMuc3RvcmFnZS5zYXZlKG5ld0l0ZW0sIGNhbGxiYWNrKVxufVxuXG4vKipc
biAqIEZpbmRzIGFuZCByZXR1cm5zIGEgbW9kZWwgaW4gc3RvcmFnZS4gSWYgbm8gcXVlcnkgaXMg
Z2l2ZW4gaXQnbGwgc2ltcGx5XG4gKiByZXR1cm4gZXZlcnl0aGluZy4gSWYgeW91IHBhc3MgaW4g
YSBzdHJpbmcgb3IgbnVtYmVyIGl0J2xsIGxvb2sgdGhhdCB1cCBhc1xuICogdGhlIElEIG9mIHRo
ZSBtb2RlbCB0byBmaW5kLiBMYXN0bHksIHlvdSBjYW4gcGFzcyBpdCBhbiBvYmplY3QgdG8gbWF0
Y2ggYWdhaW5zdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8b2JqZWN0fSBbcXVlcnld
IEEgcXVlcnkgdG8gbWF0Y2ggbW9kZWxzIGFnYWluc3RcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFtj
YWxsYmFja10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGZvdW5kXG4g
KlxuICogQGV4YW1wbGVcbiAqIG1vZGVsLnJlYWQoMSwgZnVuYyk7IC8vIFdpbGwgZmluZCB0aGUg
bW9kZWwgd2l0aCBhbiBJRCBvZiAxXG4gKiBtb2RlbC5yZWFkKCcxJyk7IC8vIFNhbWUgYXMgYWJv
dmVcbiAqIC8vQmVsb3cgd2lsbCBmaW5kIGEgbW9kZWwgd2l0aCBmb28gZXF1YWxsaW5nIGJhciBh
bmQgaGVsbG8gZXF1YWxsaW5nIHdvcmxkLlxuICogbW9kZWwucmVhZCh7IGZvbzogJ2JhcicsIGhl
bGxvOiAnd29ybGQnIH0pO1xuICovXG5Nb2RlbC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKHF1
ZXJ5LCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnlUeXBlID0gdHlwZW9mIHF1ZXJ5XG4gIGNhbGxi
YWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24oKSB7XG4gIH1cblxuICBpZiAocXVlcnlUeXBlID09
PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBxdWVyeVxuICAgIHJldHVybiB0aGlzLnN0
b3JhZ2UuZmluZEFsbChjYWxsYmFjaylcbiAgfSBlbHNlIGlmIChxdWVyeVR5cGUgPT09ICdzdHJp
bmcnIHx8IHF1ZXJ5VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICBxdWVyeSA9IHBhcnNlSW50KHF1
ZXJ5LCAxMClcbiAgICB0aGlzLnN0b3JhZ2UuZmluZCh7aWQ6IHF1ZXJ5fSwgY2FsbGJhY2spXG4g
IH0gZWxzZSB7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQocXVlcnksIGNhbGxiYWNrKVxuICB9XG4g
IHJldHVybiB1bmRlZmluZWRcbn1cblxuLyoqXG4qIFVwZGF0ZXMgYSBtb2RlbCBieSBnaXZpbmcg
aXQgYW4gSUQsIGRhdGEgdG8gdXBkYXRlLCBhbmQgYSBjYWxsYmFjayB0byBmaXJlIHdoZW5cbiog
dGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBpZCBv
ZiB0aGUgbW9kZWwgdG8gdXBkYXRlXG4qIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBwcm9wZXJ0
aWVzIHRvIHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNh
bGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5c
biovXG5Nb2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24oaWQsIGRhdGEsIGNhbGxiYWNr
KSB7XG4gIHRoaXMuc3RvcmFnZS5zYXZlKGRhdGEsIGNhbGxiYWNrLCBpZClcbn1cblxuLyoqXG4q
IFJlbW92ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2VcbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRo
ZSBJRCBvZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNr
IFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92YWwgaXMgY29tcGxldGUuXG4qL1xu
TW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGlkLCBjYWxsYmFjaykge1xuICB0aGlz
LnN0b3JhZ2UucmVtb3ZlKGlkLCBjYWxsYmFjaylcbn1cblxuLyoqXG4qIFdBUk5JTkc6IFdpbGwg
cmVtb3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2Fs
bGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgc3RvcmFnZSBpcyB3aXBlZC5cbiov
XG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhp
cy5zdG9yYWdlLmRyb3AoY2FsbGJhY2spXG59XG5cbi8qKlxuKiBSZXR1cm5zIGEgY291bnQgb2Yg
YWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBlLmdldENvdW50ID0gZnVuY3Rpb24oY2FsbGJh
Y2spIHtcbiAgdmFyIHRvZG9zID0ge1xuICAgIGFjdGl2ZTogMCxcbiAgICBjb21wbGV0ZWQ6IDAs
XG4gICAgdG90YWw6IDBcbiAgfVxuXG4gIHRoaXMuc3RvcmFnZS5maW5kQWxsKGZ1bmN0aW9uKGRh
dGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24odG9kbykge1xuICAgICAgaWYgKHRvZG8u
Y29tcGxldGVkKSB7XG4gICAgICAgIHRvZG9zLmNvbXBsZXRlZCsrXG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICB0b2Rvcy5hY3RpdmUrK1xuICAgICAgfVxuXG4gICAgICB0b2Rvcy50b3RhbCsrXG4g
ICAgfSlcbiAgICBjYWxsYmFjayh0b2RvcylcbiAgfSlcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9P
VEVSIC8vXG4vLyAuL21vZGVsLmpzIiwiaW1wb3J0IHtyZW1vdmV9IGZyb20gJy4vaGVscGVycydc
bmltcG9ydCAqIGFzIGxvY2FsU3RvcmFnZU1lbW9yeSBmcm9tICcuL21lbW9yeSdcbmV4cG9ydCBk
ZWZhdWx0IFN0b3JlXG5cbnZhciB1bmlxdWVJRCA9IDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5l
dyBjbGllbnQgc2lkZSBzdG9yYWdlIG9iamVjdCBhbmQgd2lsbCBjcmVhdGUgYW4gZW1wdHlcbiAq
IGNvbGxlY3Rpb24gaWYgbm8gY29sbGVjdGlvbiBhbHJlYWR5IGV4aXN0cy5cbiAqXG4gKiBAcGFy
YW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiBvdXIgREIgd2Ugd2FudCB0byB1c2VcbiAqIEBw
YXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIE91ciBmYWtlIERCIHVzZXMgY2FsbGJhY2tzIGJlY2F1
c2UgaW5cbiAqIHJlYWwgbGlmZSB5b3UgcHJvYmFibHkgd291bGQgYmUgbWFraW5nIEFKQVggY2Fs
bHNcbiAqL1xuZnVuY3Rpb24gU3RvcmUobmFtZSwgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sgPSBj
YWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4gIHRoaXMuX2RiTmFtZSA9IG5hbWVcblxu
ICBpZiAoIWxvY2FsU3RvcmFnZU1lbW9yeVtuYW1lXSkge1xuICAgIHZhciBkYXRhID0ge1xuICAg
ICAgdG9kb3M6IFtdXG4gICAgfVxuXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W25hbWVdID0gSlNP
Ti5zdHJpbmdpZnkoZGF0YSlcbiAgfVxuXG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJz
ZShsb2NhbFN0b3JhZ2VNZW1vcnlbbmFtZV0pKVxuICB0aGlzLnN1YnNjcmliZXJzID0gW11cbn1c
blxuU3RvcmUucHJvdG90eXBlLnN1YnNjcmliZSA9IGZ1bmN0aW9uKHN1YnNjcmliZXIpIHtcbiAg
dGhpcy5zdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpXG4gIHJldHVybiAoKSA9PiByZW1vdmUo
dGhpcy5zdWJzY3JpYmVycywgc3Vic2NyaWJlcilcbn1cblxuU3RvcmUucHJvdG90eXBlLl9ub3Rp
ZnkgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5zdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4gcygpKVxu
fVxuXG4vKipcbiogRmluZHMgaXRlbXMgYmFzZWQgb24gYSBxdWVyeSBnaXZlbiBhcyBhIEpTIG9i
amVjdFxuKlxuKiBAcGFyYW0ge29iamVjdH0gcXVlcnkgVGhlIHF1ZXJ5IHRvIG1hdGNoIGFnYWlu
c3QgKGkuZS4ge2ZvbzogJ2Jhcid9KVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAgIFRo
ZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHF1ZXJ5IGhhc1xuKiBjb21wbGV0ZWQgcnVubmlu
Z1xuKlxuKiBAZXhhbXBsZVxuKiBkYi5maW5kKHtmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJ30s
IGZ1bmN0aW9uIChkYXRhKSB7XG4qICAgLy8gZGF0YSB3aWxsIHJldHVybiBhbnkgaXRlbXMgdGhh
dCBoYXZlIGZvbzogYmFyIGFuZFxuKiAgIC8vIGhlbGxvOiB3b3JsZCBpbiB0aGVpciBwcm9wZXJ0
aWVzXG4qIH0pO1xuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24ocXVlcnksIGNh
bGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2spIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHZhciB0
b2RvcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9z
XG5cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rpb24odG9kbykge1xu
ICAgIGZvciAodmFyIHEgaW4gcXVlcnkpIHtcbiAgICAgIGlmIChxdWVyeVtxXSAhPT0gdG9kb1tx
XSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRy
dWVcbiAgfSkpXG59XG5cbi8qKlxuKiBXaWxsIHJldHJpZXZlIGFsbCBkYXRhIGZyb20gdGhlIGNv
bGxlY3Rpb25cbipcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRv
IGZpcmUgdXBvbiByZXRyaWV2aW5nIGRhdGFcbiovXG5TdG9yZS5wcm90b3R5cGUuZmluZEFsbCA9
IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24o
KSB7XG4gIH1cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1l
bW9yeVt0aGlzLl9kYk5hbWVdKS50b2Rvcylcbn1cblxuLyoqXG4qIFdpbGwgc2F2ZSB0aGUgZ2l2
ZW4gZGF0YSB0byB0aGUgREIuIElmIG5vIGl0ZW0gZXhpc3RzIGl0IHdpbGwgY3JlYXRlIGEgbmV3
XG4qIGl0ZW0sIG90aGVyd2lzZSBpdCdsbCBzaW1wbHkgdXBkYXRlIGFuIGV4aXN0aW5nIGl0ZW0n
cyBwcm9wZXJ0aWVzXG4qXG4qIEBwYXJhbSB7b2JqZWN0fSB1cGRhdGVEYXRhIFRoZSBkYXRhIHRv
IHNhdmUgYmFjayBpbnRvIHRoZSBEQlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUg
Y2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiogQHBhcmFtIHtudW1iZXJ9IGlkIEFuIG9w
dGlvbmFsIHBhcmFtIHRvIGVudGVyIGFuIElEIG9mIGFuIGl0ZW0gdG8gdXBkYXRlXG4qL1xuU3Rv
cmUucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbih1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHtc
biAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVd
KVxuICB2YXIgdG9kb3MgPSBkYXRhLnRvZG9zXG5cbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBm
dW5jdGlvbigpIHtcbiAgfVxuXG4gIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmlu
ZCB0aGUgaXRlbSBhbmQgdXBkYXRlIGVhY2ggcHJvcGVydHlcbiAgaWYgKGlkKSB7XG4gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRvZG9zW2ld
LmlkID09PSBpZCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkgeyAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lIGd1YXJkLWZvci1pblxuICAgICAgICAgIHRvZG9zW2ldW2tleV0g
PSB1cGRhdGVEYXRhW2tleV1cbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAg
IH1cblxuICAgIGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdp
ZnkoZGF0YSlcbiAgICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdl
TWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB9IGVsc2Uge1xuICAgIC8vIEdlbmVyYXRl
IGFuIElEXG4gICAgdXBkYXRlRGF0YS5pZCA9IHVuaXF1ZUlEKys7XG5cbiAgICB0b2Rvcy5wdXNo
KHVwZGF0ZURhdGEpXG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09O
LnN0cmluZ2lmeShkYXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKVxu
ICB9XG4gIHRoaXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBXaWxsIHJlbW92ZSBhbiBpdGVtIGZy
b20gdGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJRFxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhl
IElEIG9mIHRoZSBpdGVtIHlvdSB3YW50IHRvIHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBj
YWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBzYXZpbmdcbiovXG5TdG9yZS5wcm90
b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNhbGxiYWNrKSB7XG4gIHZhciBkYXRhID0gSlNP
Ti5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSlcbiAgdmFyIHRvZG9zID0g
ZGF0YS50b2Rvc1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9kb3MubGVuZ3RoOyBpKyspIHtc
biAgICBpZiAodG9kb3NbaV0uaWQgPT09IGlkKSB7XG4gICAgICB0b2Rvcy5zcGxpY2UoaSwgMSlc
biAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2Ri
TmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04u
cGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB0aGlzLl9u
b3RpZnkoKVxufVxuXG4vKipcbiogV2lsbCBkcm9wIGFsbCBzdG9yYWdlIGFuZCBzdGFydCBmcmVz
aFxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBh
ZnRlciBkcm9wcGluZyB0aGUgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5kcm9wID0gZnVuY3Rp
b24oY2FsbGJhY2spIHtcbiAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09O
LnN0cmluZ2lmeSh7dG9kb3M6IFtdfSlcbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNl
KGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKS50b2RvcylcbiAgdGhpcy5fbm90aWZ5
KClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3N0b3JlLmpzIiwiZXhwb3J0
IGRlZmF1bHQgVGVtcGxhdGVcblxudmFyIGh0bWxFc2NhcGVzID0ge1xuICAnJic6ICcmYW1wOycs
XG4gICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gICdc
XCcnOiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufVxuXG52YXIgZXNjYXBlSHRtbENoYXIg
PSBmdW5jdGlvbihjaHIpIHtcbiAgcmV0dXJuIGh0bWxFc2NhcGVzW2Nocl1cbn1cblxudmFyIHJl
VW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInYF0vZ1xudmFyIHJlSGFzVW5lc2NhcGVkSHRtbCA9IG5l
dyBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSlcblxudmFyIGVzY2FwZSA9IGZ1bmN0aW9u
KHN0cmluZykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmlu
ZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVI
dG1sQ2hhcilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaW5nXG4gIH1cbn1cblxuLyoqXG4q
IFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUgVGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFzIGEg
ZGVmYXVsdCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3RydWN0b3JcbiovXG5mdW5jdGlvbiBUZW1wbGF0
ZSgpIHtcbiAgdGhpcy5kZWZhdWx0VGVtcGxhdGUgPSBgXG4gICAgPGxpIGRhdGEtaWQ9XCJ7e2lk
fX1cIiBjbGFzcz1cInt7Y29tcGxldGVkfX1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2aWV3XCI+
XG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRvZ2dsZVwiIHR5cGU9XCJjaGVja2JveFwiIHt7Y2hl
Y2tlZH19IC8+XG4gICAgICAgIDxsYWJlbD57e3RpdGxlfX08L2xhYmVsPlxuICAgICAgICA8YnV0
dG9uIGNsYXNzPVwiZGVzdHJveVwiPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9saT5c
biAgYFxufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJu
cyBpdCBmb3IgcGxhY2VtZW50IGluIHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6IEluIHJlYWwgbGlm
ZSB5b3Ugc2hvdWxkIGJlIHVzaW5nIGEgdGVtcGxhdGluZyBlbmdpbmUgc3VjaCBhcyBNdXN0YWNo
ZVxuICogb3IgSGFuZGxlYmFycywgaG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBs
ZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcga2V5
cyB5b3Ugd2FudCB0byBmaW5kIGluIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgdGVtcGxh
dGUgdG8gcmVwbGFjZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxs
aT4gZWxlbWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiB2aWV3LnNob3coe1xuICogIGlkOiAxLFxu
ICogIHRpdGxlOiBcIkhlbGxvIFdvcmxkXCIsXG4gKiAgY29tcGxldGVkOiAwLFxuICogfSk7XG4g
Ki9cblRlbXBsYXRlLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oZGF0YSkge1xuICB2YXIgaSwg
bFxuICB2YXIgdmlldyA9ICcnXG5cbiAgZm9yIChpID0gMCwgbCA9IGRhdGEubGVuZ3RoOyBpIDwg
bDsgaSsrKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGVcbiAgICB2
YXIgY29tcGxldGVkID0gJydcbiAgICB2YXIgY2hlY2tlZCA9ICcnXG5cbiAgICBpZiAoZGF0YVtp
XS5jb21wbGV0ZWQpIHtcbiAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQnXG4gICAgICBjaGVj
a2VkID0gJ2NoZWNrZWQnXG4gICAgfVxuXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBsYWNl
KCd7e2lkfX0nLCBkYXRhW2ldLmlkKVxuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgn
e3t0aXRsZX19JywgZXNjYXBlKGRhdGFbaV0udGl0bGUpKVxuICAgIHRlbXBsYXRlID0gdGVtcGxh
dGUucmVwbGFjZSgne3tjb21wbGV0ZWR9fScsIGNvbXBsZXRlZClcbiAgICB0ZW1wbGF0ZSA9IHRl
bXBsYXRlLnJlcGxhY2UoJ3t7Y2hlY2tlZH19JywgY2hlY2tlZClcblxuICAgIHZpZXcgPSB2aWV3
ICsgdGVtcGxhdGVcbiAgfVxuXG4gIHJldHVybiB2aWV3XG59XG5cbi8qKlxuICogRGlzcGxheXMg
YSBjb3VudGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZVxuICpcbiAq
IEBwYXJhbSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFjdGl2ZSB0b2Rvcy5c
biAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5U
ZW1wbGF0ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbihhY3RpdmVUb2Rvcykge1xu
ICB2YXIgcGx1cmFsID0gYWN0aXZlVG9kb3MgPT09IDEgPyAnJyA6ICdzJ1xuXG4gIHJldHVybiAn
PHN0cm9uZz4nICsgYWN0aXZlVG9kb3MgKyAnPC9zdHJvbmc+IGl0ZW0nICsgcGx1cmFsICsgJyBs
ZWZ0J1xufVxuXG4vKipcbiAqIFVwZGF0ZXMgdGhlIHRleHQgd2l0aGluIHRoZSBcIkNsZWFyIGNv
bXBsZXRlZFwiIGJ1dHRvblxuICpcbiAqIEBwYXJhbSAge1t0eXBlXX0gY29tcGxldGVkVG9kb3Mg
VGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdG9kb3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJp
bmcgY29udGFpbmluZyB0aGUgY291bnRcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBlLmNsZWFyQ29t
cGxldGVkQnV0dG9uID0gZnVuY3Rpb24oY29tcGxldGVkVG9kb3MpIHtcbiAgaWYgKGNvbXBsZXRl
ZFRvZG9zID4gMCkge1xuICAgIHJldHVybiAnQ2xlYXIgY29tcGxldGVkJ1xuICB9IGVsc2Uge1xu
ICAgIHJldHVybiAnJ1xuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi90
ZW1wbGF0ZS5qcyIsImltcG9ydCBWaWV3IGZyb20gJy4vdmlldydcbmltcG9ydCBDb250cm9sbGVy
IGZyb20gJy4vY29udHJvbGxlcidcbmltcG9ydCBNb2RlbCBmcm9tICcuL21vZGVsJ1xuaW1wb3J0
IFN0b3JlIGZyb20gJy4vc3RvcmUnXG5pbXBvcnQgVGVtcGxhdGUgZnJvbSAnLi90ZW1wbGF0ZSdc
bmltcG9ydCB7cmVtb3ZlfSBmcm9tICcuL2hlbHBlcnMnXG5cbmV4cG9ydCB7dXBkYXRlVG9kbywg
Z2V0VG9kbywgc3Vic2NyaWJlfVxuXG5sZXQgdG9kb1xuY29uc3Qgc3Vic2NyaWJlcnMgPSBbXVxu
XG4vKipcbiAqIFNldHMgdXAgYSBicmFuZCBuZXcgVG9kbyBsaXN0LlxuICpcbiAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHlvdXIgbmV3IHRvIGRvIGxpc3QuXG4gKi9cbmZ1bmN0
aW9uIFRvZG8obmFtZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBuZXcgU3RvcmUobmFtZSlcbiAgdGhp
cy5tb2RlbCA9IG5ldyBNb2RlbCh0aGlzLnN0b3JhZ2UpXG4gIHRoaXMudGVtcGxhdGUgPSBuZXcg
VGVtcGxhdGUoKVxuICB0aGlzLnZpZXcgPSBuZXcgVmlldyh0aGlzLnRlbXBsYXRlKVxuICB0aGlz
LmNvbnRyb2xsZXIgPSBuZXcgQ29udHJvbGxlcih0aGlzLm1vZGVsLCB0aGlzLnZpZXcpXG59XG5c
bmZ1bmN0aW9uIHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcgVG9kbygndG9kb3MtdmFuaWxs
YWpzJylcbiAgdG9kby5jb250cm9sbGVyLnNldFZpZXcoZG9jdW1lbnQubG9jYXRpb24uaGFzaClc
biAgc3Vic2NyaWJlcnMuZm9yRWFjaChzID0+IHMoKSlcbn1cblxuZnVuY3Rpb24gZ2V0VG9kbygp
IHtcbiAgcmV0dXJuIHRvZG9cbn1cblxuZnVuY3Rpb24gc3Vic2NyaWJlKGNiKSB7XG4gIHN1YnNj
cmliZXJzLnB1c2goY2IpXG4gIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICBy
ZW1vdmUoc3Vic2NyaWJlcnMsIGNiKVxuICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAv
L1xuLy8gLi90b2RvLmpzIiwiLyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMCwgY29tcGxleGl0
eTpbMiwgOV0gKi9cbmltcG9ydCB7cXMsIHFzYSwgJG9uLCAkcGFyZW50LCAkZGVsZWdhdGV9IGZy
b20gJy4vaGVscGVycydcblxuLyoqXG4gKiBWaWV3IHRoYXQgYWJzdHJhY3RzIGF3YXkgdGhlIGJy
b3dzZXIncyBET00gY29tcGxldGVseS5cbiAqIEl0IGhhcyB0d28gc2ltcGxlIGVudHJ5IHBvaW50
czpcbiAqXG4gKiAgIC0gYmluZChldmVudE5hbWUsIGhhbmRsZXIpXG4gKiAgICAgVGFrZXMgYSB0
b2RvIGFwcGxpY2F0aW9uIGV2ZW50IGFuZCByZWdpc3RlcnMgdGhlIGhhbmRsZXJcbiAqICAgLSBy
ZW5kZXIoY29tbWFuZCwgcGFyYW1ldGVyT2JqZWN0KVxuICogICAgIFJlbmRlcnMgdGhlIGdpdmVu
IGNvbW1hbmQgd2l0aCB0aGUgb3B0aW9uc1xuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWV3
IHtcbiAgY29uc3RydWN0b3IodGVtcGxhdGUpIHtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxh
dGVcblxuICAgIHRoaXMuRU5URVJfS0VZID0gMTNcbiAgICB0aGlzLkVTQ0FQRV9LRVkgPSAyN1xu
XG4gICAgdGhpcy4kdG9kb0xpc3QgPSBxcygnLnRvZG8tbGlzdCcpXG4gICAgdGhpcy4kdG9kb0l0
ZW1Db3VudGVyID0gcXMoJy50b2RvLWNvdW50JylcbiAgICB0aGlzLiRjbGVhckNvbXBsZXRlZCA9
IHFzKCcuY2xlYXItY29tcGxldGVkJylcbiAgICB0aGlzLiRtYWluID0gcXMoJy5tYWluJylcbiAg
ICB0aGlzLiRmb290ZXIgPSBxcygnLmZvb3RlcicpXG4gICAgdGhpcy4kdG9nZ2xlQWxsID0gcXMo
Jy50b2dnbGUtYWxsJylcbiAgICB0aGlzLiRuZXdUb2RvID0gcXMoJy5uZXctdG9kbycpXG4gIH1c
blxuICBfcmVtb3ZlSXRlbShpZCkge1xuICAgIHZhciBlbGVtID0gcXMoJ1tkYXRhLWlkPVwiJyAr
IGlkICsgJ1wiXScpXG5cbiAgICBpZiAoZWxlbSkge1xuICAgICAgdGhpcy4kdG9kb0xpc3QucmVt
b3ZlQ2hpbGQoZWxlbSlcbiAgICB9XG4gIH1cblxuICBfY2xlYXJDb21wbGV0ZWRCdXR0b24oY29t
cGxldGVkQ291bnQsIHZpc2libGUpIHtcbiAgICB0aGlzLiRjbGVhckNvbXBsZXRlZC5pbm5lckhU
TUwgPSB0aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50KVxu
ICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRpc3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2Nr
JyA6ICdub25lJ1xuICB9XG5cbiAgX2VkaXRJdGVtRG9uZShpZCwgdGl0bGUpIHtcbiAgICB2YXIg
bGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJylcblxuICAgIGlmICghbGlz
dEl0ZW0pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBpbnB1dCA9IHFzKCdpbnB1
dC5lZGl0JywgbGlzdEl0ZW0pXG4gICAgbGlzdEl0ZW0ucmVtb3ZlQ2hpbGQoaW5wdXQpXG5cbiAg
ICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05hbWUucmVwbGFjZSgnZWRpdGlu
ZycsICcnKVxuXG4gICAgcXNhKCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNoKGZ1bmN0aW9uKGxh
YmVsKSB7XG4gICAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRpdGxlXG4gICAgfSlcbiAgfVxuXG4g
IHJlbmRlcih2aWV3Q21kLCBwYXJhbWV0ZXIpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICB2
YXIgdmlld0NvbW1hbmRzID0ge1xuICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0aW9uKCkge1xuICAg
ICAgICB0aGF0LiR0b2RvTGlzdC5pbm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLnNob3cocGFyYW1l
dGVyKVxuICAgICAgfSxcbiAgICAgIHJlbW92ZUl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgICB0
aGF0Ll9yZW1vdmVJdGVtKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAgICB1cGRhdGVFbGVtZW50
Q291bnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2RvSXRlbUNvdW50ZXIuaW5uZXJI
VE1MID0gdGhhdC50ZW1wbGF0ZS5pdGVtQ291bnRlcihwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAg
ICAgY2xlYXJDb21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0Ll9jbGVh
ckNvbXBsZXRlZEJ1dHRvbihwYXJhbWV0ZXIuY29tcGxldGVkLCBwYXJhbWV0ZXIudmlzaWJsZSlc
biAgICAgIH0sXG4gICAgICBjb250ZW50QmxvY2tWaXNpYmlsaXR5OiBmdW5jdGlvbigpIHtcbiAg
ICAgICAgdGhhdC4kbWFpbi5zdHlsZS5kaXNwbGF5ID0gdGhhdC4kZm9vdGVyLnN0eWxlLmRpc3Bs
YXkgPSBwYXJhbWV0ZXIudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgIH0sXG4gICAg
ICB0b2dnbGVBbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiR0b2dnbGVBbGwuY2hlY2tl
ZCA9IHBhcmFtZXRlci5jaGVja2VkXG4gICAgICB9LFxuICAgICAgc2V0RmlsdGVyOiBmdW5jdGlv
bigpIHtcbiAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAgY2xl
YXJOZXdUb2RvOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC4kbmV3VG9kby52YWx1ZSA9ICcn
XG4gICAgICB9LFxuICAgICAgZWxlbWVudENvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAg
X2VsZW1lbnRDb21wbGV0ZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci5jb21wbGV0ZWQpXG4gICAg
ICB9LFxuICAgICAgZWRpdEl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgICBfZWRpdEl0ZW0ocGFy
YW1ldGVyLmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAgICB9LFxuICAgICAgZWRpdEl0ZW1Eb25l
OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhhdC5fZWRpdEl0ZW1Eb25lKHBhcmFtZXRlci5pZCwg
cGFyYW1ldGVyLnRpdGxlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHZpZXdDb21tYW5kc1t2aWV3
Q21kXSgpXG4gIH1cblxuICBfYmluZEl0ZW1FZGl0RG9uZShoYW5kbGVyKSB7XG4gICAgdmFyIHRo
YXQgPSB0aGlzXG4gICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAnYmx1
cicsIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCkge1xu
ICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICBpZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAgICAg
ICB0aXRsZTogdGhpcy52YWx1ZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG5cbiAgICAk
ZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcsICdrZXlwcmVzcycsIGZ1bmN0aW9u
KGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gdGhhdC5FTlRFUl9LRVkpIHtc
biAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5b3UgaGl0
IGVudGVyIGp1c3QgbGlrZSBpZiBpdFxuICAgICAgICAvLyB3ZXJlIGEgcmVhbCBmb3JtXG4gICAg
ICAgIHRoaXMuYmx1cigpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIF9iaW5kSXRlbUVkaXRD
YW5jZWwoaGFuZGxlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgICRkZWxlZ2F0ZSh0aGF0
LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXVwJywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAg
IGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVTQ0FQRV9LRVkpIHtcbiAgICAgICAgdGhpcy5k
YXRhc2V0LmlzY2FuY2VsZWQgPSB0cnVlXG4gICAgICAgIHRoaXMuYmx1cigpXG5cbiAgICAgICAg
aGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBi
aW5kKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgaWYgKGV2ZW50
ID09PSAnbmV3VG9kbycpIHtcbiAgICAgICRvbih0aGF0LiRuZXdUb2RvLCAnY2hhbmdlJywgZnVu
Y3Rpb24oKSB7XG4gICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52YWx1ZSlcbiAgICAgIH0p
XG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAncmVtb3ZlQ29tcGxldGVkJykge1xuICAgICAg
JG9uKHRoYXQuJGNsZWFyQ29tcGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAg
aGFuZGxlcigpXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3RvZ2dsZUFs
bCcpIHtcbiAgICAgICRvbih0aGF0LiR0b2dnbGVBbGwsICdjbGljaycsIGZ1bmN0aW9uKCkge1xu
ICAgICAgICBoYW5kbGVyKHtjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZH0pXG4gICAgICB9KVxuXG4g
ICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xuICAgICAgJGRlbGVnYXRlKHRo
YXQuJHRvZG9MaXN0LCAnbGkgbGFiZWwnLCAnZGJsY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAg
ICAgaGFuZGxlcih7aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBp
ZiAoZXZlbnQgPT09ICdpdGVtUmVtb3ZlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9M
aXN0LCAnLmRlc3Ryb3knLCAnY2xpY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFuZGxlcih7
aWQ6IF9pdGVtSWQodGhpcyl9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09
ICdpdGVtVG9nZ2xlJykge1xuICAgICAgJGRlbGVnYXRlKHRoYXQuJHRvZG9MaXN0LCAnLnRvZ2ds
ZScsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICBp
ZDogX2l0ZW1JZCh0aGlzKSxcbiAgICAgICAgICBjb21wbGV0ZWQ6IHRoaXMuY2hlY2tlZFxuICAg
ICAgICB9KVxuICAgICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdERv
bmUnKSB7XG4gICAgICB0aGF0Ll9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpXG5cbiAgICB9IGVs
c2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXRDYW5jZWwnKSB7XG4gICAgICB0aGF0Ll9iaW5kSXRl
bUVkaXRDYW5jZWwoaGFuZGxlcilcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX3NldEZpbHRl
cihjdXJyZW50UGFnZSkge1xuICBxcygnLmZpbHRlcnMgLnNlbGVjdGVkJykuY2xhc3NOYW1lID0g
JydcbiAgcXMoJy5maWx0ZXJzIFtocmVmPVwiIy8nICsgY3VycmVudFBhZ2UgKyAnXCJdJykuY2xh
c3NOYW1lID0gJ3NlbGVjdGVkJ1xufVxuXG5mdW5jdGlvbiBfZWxlbWVudENvbXBsZXRlKGlkLCBj
b21wbGV0ZWQpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wi
XScpXG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgbGlzdEl0ZW0u
Y2xhc3NOYW1lID0gY29tcGxldGVkID8gJ2NvbXBsZXRlZCcgOiAnJ1xuXG4gIC8vIEluIGNhc2Ug
aXQgd2FzIHRvZ2dsZWQgZnJvbSBhbiBldmVudCBhbmQgbm90IGJ5IGNsaWNraW5nIHRoZSBjaGVj
a2JveFxuICBxcygnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tlZCA9IGNvbXBsZXRlZFxufVxuXG5m
dW5jdGlvbiBfZWRpdEl0ZW0oaWQsIHRpdGxlKSB7XG4gIHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0
YS1pZD1cIicgKyBpZCArICdcIl0nKVxuXG4gIGlmICghbGlzdEl0ZW0pIHtcbiAgICByZXR1cm5c
biAgfVxuXG4gIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZSArICcgZWRp
dGluZydcblxuICB2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4g
IGlucHV0LmNsYXNzTmFtZSA9ICdlZGl0J1xuXG4gIGxpc3RJdGVtLmFwcGVuZENoaWxkKGlucHV0
KVxuICBpbnB1dC5mb2N1cygpXG4gIGlucHV0LnZhbHVlID0gdGl0bGVcbn1cblxuZnVuY3Rpb24g
X2l0ZW1JZChlbGVtZW50KSB7XG4gIHZhciBsaSA9ICRwYXJlbnQoZWxlbWVudCwgJ2xpJylcbiAg
cmV0dXJuIHBhcnNlSW50KGxpLmRhdGFzZXQuaWQsIDEwKVxufVxuXG5cblxuLy8gV0VCUEFDSyBG
T09URVIgLy9cbi8vIC4vdmlldy5qcyIsIi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cbmltcG9y
dCB7b25Mb2FkfSBmcm9tICcuL2FwcCdcbmltcG9ydCB7JG9ufSBmcm9tICcuL2hlbHBlcnMnXG5c
bi8vIHRoaXMgaXMgb25seSByZWxldmFudCB3aGVuIHVzaW5nIGBob3RgIG1vZGUgd2l0aCB3ZWJw
YWNrXG4vLyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIENsZW1tb25zOiBodHRwczovL2dpdGh1Yi5j
b20vZXJpY2NsZW1tb25zL3dlYnBhY2staG90LXNlcnZlci1leGFtcGxlXG5jb25zdCByZWxvYWRp
bmcgPSBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnXG5pZiAobW9kdWxlLmhvdCkg
e1xuICBtb2R1bGUuaG90LmFjY2VwdChmdW5jdGlvbihlcnIpIHtcbiAgfSlcbiAgaWYgKHJlbG9h
ZGluZykge1xuICAgIG9uTG9hZCgpXG4gIH0gZWxzZSB7XG4gICAgYm9vdHN0cmFwKClcbiAgfVxu
fSBlbHNlIHtcbiAgYm9vdHN0cmFwKClcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwKCkge1xuICAk
b24od2luZG93LCAnbG9hZCcsIG9uTG9hZClcbiAgJG9uKHdpbmRvdywgJ2hhc2hjaGFuZ2UnLCBv
bkxvYWQpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9ib290c3RyYXAuanMi
XSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGViYjFiMGE5
NGYxNGQwZWJlOS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5h
cHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVkMjhmYjc1NjE1MWFkZDQ1MmI4Yzk3ZTE5Y2MyZGUwOTU0Njg3YjUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL2Rpc3QvYnVuZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcworKysgL2Rldi9udWxs
CkBAIC0xLDIgKzAsMCBAQAotd2VicGFja0pzb25wKFswLDJdLFtmdW5jdGlvbih0LGUsaSl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCxlKXtyZXR1cm4oZXx8ZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0
b3IodCl9ZnVuY3Rpb24gbih0LGUpe3JldHVybihlfHxkb2N1bWVudCkucXVlcnlTZWxlY3RvckFs
bCh0KX1mdW5jdGlvbiByKHQsZSxpLG8pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLGksISFvKX1mdW5j
dGlvbiBjKHQsZSxpLG8pe2Z1bmN0aW9uIGMoaSl7dmFyIHI9aS50YXJnZXQsYz1uKGUsdCksbD1B
cnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGMscik+PTA7bCYmby5jYWxsKHIsaSl9dmFyIGw9
ImJsdXIiPT09aXx8ImZvY3VzIj09PWk7cih0LGksYyxsKX1mdW5jdGlvbiBsKHQsZSl7aWYodC5w
YXJlbnROb2RlKXJldHVybiB0LnBhcmVudE5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ZS50
b0xvd2VyQ2FzZSgpP3QucGFyZW50Tm9kZTpsKHQucGFyZW50Tm9kZSxlKX1mdW5jdGlvbiBhKHQs
ZSl7dmFyIGk9dC5pbmRleE9mKGUpO3JldHVybiBpPT09LTE/dDp2b2lkIHQuc3BsaWNlKGksMSl9
aS5kKGUsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIG99KSxpLmQoZSwiYiIsZnVuY3Rpb24oKXtyZXR1
cm4gbn0pLGkuZChlLCJkIixmdW5jdGlvbigpe3JldHVybiByfSksaS5kKGUsImMiLGZ1bmN0aW9u
KCl7cmV0dXJuIGN9KSxpLmQoZSwiZSIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pLGkuZChlLCJmIixm
dW5jdGlvbigpe3JldHVybiBhfSksTm9kZUxpc3QucHJvdG90eXBlLmZvckVhY2g9QXJyYXkucHJv
dG90eXBlLmZvckVhY2h9LCxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8o
KXtpLmkoYy5hKSgpfXZhciBuPWkoMSkscj0oaS5uKG4pLGkoMTApKSxjPShpLm4ociksaSgwKSxp
KDgpKTtlLmE9b30sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7
dmFyIGk9dGhpcztpLm1vZGVsPXQsaS52aWV3PWUsaS52aWV3LmJpbmQoIm5ld1RvZG8iLGZ1bmN0
aW9uKHQpe2kuYWRkSXRlbSh0KX0pLGkudmlldy5iaW5kKCJpdGVtRWRpdCIsZnVuY3Rpb24odCl7
aS5lZGl0SXRlbSh0LmlkKX0pLGkudmlldy5iaW5kKCJpdGVtRWRpdERvbmUiLGZ1bmN0aW9uKHQp
e2kuZWRpdEl0ZW1TYXZlKHQuaWQsdC50aXRsZSl9KSxpLnZpZXcuYmluZCgiaXRlbUVkaXRDYW5j
ZWwiLGZ1bmN0aW9uKHQpe2kuZWRpdEl0ZW1DYW5jZWwodC5pZCl9KSxpLnZpZXcuYmluZCgiaXRl
bVJlbW92ZSIsZnVuY3Rpb24odCl7aS5yZW1vdmVJdGVtKHQuaWQpfSksaS52aWV3LmJpbmQoIml0
ZW1Ub2dnbGUiLGZ1bmN0aW9uKHQpe2kudG9nZ2xlQ29tcGxldGUodC5pZCx0LmNvbXBsZXRlZCl9
KSxpLnZpZXcuYmluZCgicmVtb3ZlQ29tcGxldGVkIixmdW5jdGlvbigpe2kucmVtb3ZlQ29tcGxl
dGVkSXRlbXMoKX0pLGkudmlldy5iaW5kKCJ0b2dnbGVBbGwiLGZ1bmN0aW9uKHQpe2kudG9nZ2xl
QWxsKHQuY29tcGxldGVkKX0pfWUuYT1vLG8ucHJvdG90eXBlLnNldFZpZXc9ZnVuY3Rpb24odCl7
dmFyIGU9dC5zcGxpdCgiLyIpWzFdLGk9ZXx8IiI7dGhpcy5fdXBkYXRlRmlsdGVyU3RhdGUoaSl9
LG8ucHJvdG90eXBlLnNob3dBbGw9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZChm
dW5jdGlvbihlKXt0LnZpZXcucmVuZGVyKCJzaG93RW50cmllcyIsZSl9KX0sby5wcm90b3R5cGUu
c2hvd0FjdGl2ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6
ITF9LGZ1bmN0aW9uKGUpe3Qudmlldy5yZW5kZXIoInNob3dFbnRyaWVzIixlKX0pfSxvLnByb3Rv
dHlwZS5zaG93Q29tcGxldGVkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVsLnJlYWQoe2Nv
bXBsZXRlZDohMH0sZnVuY3Rpb24oZSl7dC52aWV3LnJlbmRlcigic2hvd0VudHJpZXMiLGUpfSl9
LG8ucHJvdG90eXBlLmFkZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpczsiIiE9PXQudHJpbSgp
JiZlLm1vZGVsLmNyZWF0ZSh0LGZ1bmN0aW9uKCl7ZS52aWV3LnJlbmRlcigiY2xlYXJOZXdUb2Rv
IiksZS5fZmlsdGVyKCEwKX0pfSxvLnByb3RvdHlwZS5lZGl0SXRlbT1mdW5jdGlvbih0KXt2YXIg
ZT10aGlzO2UubW9kZWwucmVhZCh0LGZ1bmN0aW9uKGkpe2Uudmlldy5yZW5kZXIoImVkaXRJdGVt
Iix7aWQ6dCx0aXRsZTppWzBdLnRpdGxlfSl9KX0sby5wcm90b3R5cGUuZWRpdEl0ZW1TYXZlPWZ1
bmN0aW9uKHQsZSl7dmFyIGk9dGhpcztlLnRyaW0oKT9pLm1vZGVsLnVwZGF0ZSh0LHt0aXRsZTpl
fSxmdW5jdGlvbigpe2kudmlldy5yZW5kZXIoImVkaXRJdGVtRG9uZSIse2lkOnQsdGl0bGU6ZX0p
fSk6aS5yZW1vdmVJdGVtKHQpfSxvLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbD1mdW5jdGlvbih0
KXt2YXIgZT10aGlzO2UubW9kZWwucmVhZCh0LGZ1bmN0aW9uKGkpe2Uudmlldy5yZW5kZXIoImVk
aXRJdGVtRG9uZSIse2lkOnQsdGl0bGU6aVswXS50aXRsZX0pfSl9LG8ucHJvdG90eXBlLnJlbW92
ZUl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLm1vZGVsLnJlbW92ZSh0LGZ1bmN0aW9uKCl7
ZS52aWV3LnJlbmRlcigicmVtb3ZlSXRlbSIsdCl9KSxlLl9maWx0ZXIoKX0sby5wcm90b3R5cGUu
cmVtb3ZlQ29tcGxldGVkSXRlbXM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QubW9kZWwucmVhZCh7
Y29tcGxldGVkOiEwfSxmdW5jdGlvbihlKXtlLmZvckVhY2goZnVuY3Rpb24oZSl7dC5yZW1vdmVJ
dGVtKGUuaWQpfSl9KSx0Ll9maWx0ZXIoKX0sby5wcm90b3R5cGUudG9nZ2xlQ29tcGxldGU9ZnVu
Y3Rpb24odCxlLGkpe3ZhciBvPXRoaXM7by5tb2RlbC51cGRhdGUodCx7Y29tcGxldGVkOmV9LGZ1
bmN0aW9uKCl7by52aWV3LnJlbmRlcigiZWxlbWVudENvbXBsZXRlIix7aWQ6dCxjb21wbGV0ZWQ6
ZX0pfSksaXx8by5fZmlsdGVyKCl9LG8ucHJvdG90eXBlLnRvZ2dsZUFsbD1mdW5jdGlvbih0KXt2
YXIgZT10aGlzO2UubW9kZWwucmVhZCh7Y29tcGxldGVkOiF0fSxmdW5jdGlvbihpKXtpLmZvckVh
Y2goZnVuY3Rpb24oaSl7ZS50b2dnbGVDb21wbGV0ZShpLmlkLHQsITApfSl9KSxlLl9maWx0ZXIo
KX0sby5wcm90b3R5cGUuX3VwZGF0ZUNvdW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1vZGVs
LmdldENvdW50KGZ1bmN0aW9uKGUpe3Qudmlldy5yZW5kZXIoInVwZGF0ZUVsZW1lbnRDb3VudCIs
ZS5hY3RpdmUpLHQudmlldy5yZW5kZXIoImNsZWFyQ29tcGxldGVkQnV0dG9uIix7Y29tcGxldGVk
OmUuY29tcGxldGVkLHZpc2libGU6ZS5jb21wbGV0ZWQ+MH0pLHQudmlldy5yZW5kZXIoInRvZ2ds
ZUFsbCIse2NoZWNrZWQ6ZS5jb21wbGV0ZWQ9PT1lLnRvdGFsfSksdC52aWV3LnJlbmRlcigiY29u
dGVudEJsb2NrVmlzaWJpbGl0eSIse3Zpc2libGU6ZS50b3RhbD4wfSl9KX0sby5wcm90b3R5cGUu
X2ZpbHRlcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9hY3RpdmVSb3V0ZS5jaGFyQXQoMCkudG9V
cHBlckNhc2UoKSt0aGlzLl9hY3RpdmVSb3V0ZS5zdWJzdHIoMSk7dGhpcy5fdXBkYXRlQ291bnQo
KSwodHx8IkFsbCIhPT10aGlzLl9sYXN0QWN0aXZlUm91dGV8fHRoaXMuX2xhc3RBY3RpdmVSb3V0
ZSE9PWUpJiZ0aGlzWyJzaG93IitlXSgpLHRoaXMuX2xhc3RBY3RpdmVSb3V0ZT1lfSxvLnByb3Rv
dHlwZS5fdXBkYXRlRmlsdGVyU3RhdGU9ZnVuY3Rpb24odCl7dD10LnNwbGl0KCI/IilbMF0sdGhp
cy5fYWN0aXZlUm91dGU9dCwiIj09PXQmJih0aGlzLl9hY3RpdmVSb3V0ZT0iQWxsIiksdGhpcy5f
ZmlsdGVyKCksdGhpcy52aWV3LnJlbmRlcigic2V0RmlsdGVyIix0KX19LGZ1bmN0aW9uKHQsZSxp
KXt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJv
bC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVy
biB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0
IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH07IWZ1bmN0aW9uKGkpe3ZhciBu
PXt9LHI9e307bi5sZW5ndGg9MCxuLmdldEl0ZW09ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF18fG51
bGx9LG4uc2V0SXRlbT1mdW5jdGlvbih0LGUpeyJ1bmRlZmluZWQiPT10eXBlb2YgZT9uLnJlbW92
ZUl0ZW0odCk6KHIuaGFzT3duUHJvcGVydHkodCl8fG4ubGVuZ3RoKyssclt0XT0iIitlKX0sbi5y
ZW1vdmVJdGVtPWZ1bmN0aW9uKHQpe3IuaGFzT3duUHJvcGVydHkodCkmJihkZWxldGUgclt0XSxu
Lmxlbmd0aC0tKX0sbi5rZXk9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKHIpW3RdfHxu
dWxsfSxuLmNsZWFyPWZ1bmN0aW9uKCl7cj17fSxuLmxlbmd0aD0wfSwib2JqZWN0Ij09PW8oZSk/
dC5leHBvcnRzPW46aS5sb2NhbFN0b3JhZ2VNZW1vcnk9bn0odGhpcyl9LGZ1bmN0aW9uKHQsZSxp
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0KXt0aGlzLnN0b3JhZ2U9dH12YXIgbj0iZnVuY3Rp
b24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5j
dGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24i
PT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3Rv
dHlwZT8ic3ltYm9sIjp0eXBlb2YgdH07ZS5hPW8sby5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9u
KHQsZSl7dD10fHwiIixlPWV8fGZ1bmN0aW9uKCl7fTt2YXIgaT17dGl0bGU6dC50cmltKCksY29t
cGxldGVkOiExfTt0aGlzLnN0b3JhZ2Uuc2F2ZShpLGUpfSxvLnByb3RvdHlwZS5yZWFkPWZ1bmN0
aW9uKHQsZSl7dmFyIGk9InVuZGVmaW5lZCI9PXR5cGVvZiB0PyJ1bmRlZmluZWQiOm4odCk7cmV0
dXJuIGU9ZXx8ZnVuY3Rpb24oKXt9LCJmdW5jdGlvbiI9PT1pPyhlPXQsdGhpcy5zdG9yYWdlLmZp
bmRBbGwoZSkpOnZvaWQoInN0cmluZyI9PT1pfHwibnVtYmVyIj09PWk/KHQ9cGFyc2VJbnQodCwx
MCksdGhpcy5zdG9yYWdlLmZpbmQoe2lkOnR9LGUpKTp0aGlzLnN0b3JhZ2UuZmluZCh0LGUpKX0s
by5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQsZSxpKXt0aGlzLnN0b3JhZ2Uuc2F2ZShlLGks
dCl9LG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0LGUpe3RoaXMuc3RvcmFnZS5yZW1vdmUo
dCxlKX0sby5wcm90b3R5cGUucmVtb3ZlQWxsPWZ1bmN0aW9uKHQpe3RoaXMuc3RvcmFnZS5kcm9w
KHQpfSxvLnByb3RvdHlwZS5nZXRDb3VudD1mdW5jdGlvbih0KXt2YXIgZT17YWN0aXZlOjAsY29t
cGxldGVkOjAsdG90YWw6MH07dGhpcy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24oaSl7aS5mb3JF
YWNoKGZ1bmN0aW9uKHQpe3QuY29tcGxldGVkP2UuY29tcGxldGVkKys6ZS5hY3RpdmUrKyxlLnRv
dGFsKyt9KSx0KGUpfSl9fSxmdW5jdGlvbih0LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8o
dCxlKXtpZihlPWV8fGZ1bmN0aW9uKCl7fSx0aGlzLl9kYk5hbWU9dCwhclt0XSl7dmFyIGk9e3Rv
ZG9zOltdfTtyW3RdPUpTT04uc3RyaW5naWZ5KGkpfWUuY2FsbCh0aGlzLEpTT04ucGFyc2Uoclt0
XSkpLHRoaXMuc3Vic2NyaWJlcnM9W119dmFyIG49aSgwKSxyPWkoNCk7aS5uKHIpO2UuYT1vLG8u
cHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiB0aGlzLnN1
YnNjcmliZXJzLnB1c2godCksZnVuY3Rpb24oKXtyZXR1cm4gaS5pKG4uZikoZS5zdWJzY3JpYmVy
cyx0KX19LG8ucHJvdG90eXBlLl9ub3RpZnk9ZnVuY3Rpb24oKXt0aGlzLnN1YnNjcmliZXJzLmZv
ckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0pfSxvLnByb3RvdHlwZS5maW5kPWZ1bmN0aW9u
KHQsZSl7aWYoZSl7dmFyIGk9SlNPTi5wYXJzZShyW3RoaXMuX2RiTmFtZV0pLnRvZG9zO2UuY2Fs
bCh0aGlzLGkuZmlsdGVyKGZ1bmN0aW9uKGUpe2Zvcih2YXIgaSBpbiB0KWlmKHRbaV0hPT1lW2ld
KXJldHVybiExO3JldHVybiEwfSkpfX0sby5wcm90b3R5cGUuZmluZEFsbD1mdW5jdGlvbih0KXt0
PXR8fGZ1bmN0aW9uKCl7fSx0LmNhbGwodGhpcyxKU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSku
dG9kb3MpfSxvLnByb3RvdHlwZS5zYXZlPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1KU09OLnBhcnNl
KHJbdGhpcy5fZGJOYW1lXSksbj1vLnRvZG9zO2lmKGU9ZXx8ZnVuY3Rpb24oKXt9LGkpe2Zvcih2
YXIgYz0wO2M8bi5sZW5ndGg7YysrKWlmKG5bY10uaWQ9PT1pKXtmb3IodmFyIGwgaW4gdCluW2Nd
W2xdPXRbbF07YnJlYWt9clt0aGlzLl9kYk5hbWVdPUpTT04uc3RyaW5naWZ5KG8pLGUuY2FsbCh0
aGlzLEpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKS50b2Rvcyl9ZWxzZSB0LmlkPShuZXcgRGF0
ZSkuZ2V0VGltZSgpLG4ucHVzaCh0KSxyW3RoaXMuX2RiTmFtZV09SlNPTi5zdHJpbmdpZnkobyks
ZS5jYWxsKHRoaXMsW3RdKTt0aGlzLl9ub3RpZnkoKX0sby5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0
aW9uKHQsZSl7Zm9yKHZhciBpPUpTT04ucGFyc2Uoclt0aGlzLl9kYk5hbWVdKSxvPWkudG9kb3Ms
bj0wO248by5sZW5ndGg7bisrKWlmKG9bbl0uaWQ9PT10KXtvLnNwbGljZShuLDEpO2JyZWFrfXJb
dGhpcy5fZGJOYW1lXT1KU09OLnN0cmluZ2lmeShpKSxlLmNhbGwodGhpcyxKU09OLnBhcnNlKHJb
dGhpcy5fZGJOYW1lXSkudG9kb3MpLHRoaXMuX25vdGlmeSgpfSxvLnByb3RvdHlwZS5kcm9wPWZ1
bmN0aW9uKHQpe3JbdGhpcy5fZGJOYW1lXT1KU09OLnN0cmluZ2lmeSh7dG9kb3M6W119KSx0LmNh
bGwodGhpcyxKU09OLnBhcnNlKHJbdGhpcy5fZGJOYW1lXSkudG9kb3MpLHRoaXMuX25vdGlmeSgp
fX0sZnVuY3Rpb24odCxlLGkpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKCl7dGhpcy5kZWZhdWx0
VGVtcGxhdGU9J1xuICAgIDxsaSBkYXRhLWlkPSJ7e2lkfX0iIGNsYXNzPSJ7e2NvbXBsZXRlZH19
Ij5cbiAgICAgIDxkaXYgY2xhc3M9InZpZXciPlxuICAgICAgICA8aW5wdXQgY2xhc3M9InRvZ2ds
ZSIgdHlwZT0iY2hlY2tib3giIHt7Y2hlY2tlZH19IC8+XG4gICAgICAgIDxsYWJlbD57e3RpdGxl
fX08L2xhYmVsPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPSJkZXN0cm95Ij48L2J1dHRvbj5cbiAg
ICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gICd9ZS5hPW87dmFyIG49eyImIjoiJmFtcDsiLCI8Ijoi
Jmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImI3gyNzsiLCJgIjoiJiN4NjA7In0s
cj1mdW5jdGlvbih0KXtyZXR1cm4gblt0XX0sYz0vWyY8PiInYF0vZyxsPW5ldyBSZWdFeHAoYy5z
b3VyY2UpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJmwudGVzdCh0KT90LnJlcGxhY2UoYyxyKTp0
fTtvLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKHQpe3ZhciBlLGksbz0iIjtmb3IoZT0wLGk9dC5s
ZW5ndGg7ZTxpO2UrKyl7dmFyIG49dGhpcy5kZWZhdWx0VGVtcGxhdGUscj0iIixjPSIiO3RbZV0u
Y29tcGxldGVkJiYocj0iY29tcGxldGVkIixjPSJjaGVja2VkIiksbj1uLnJlcGxhY2UoInt7aWR9
fSIsdFtlXS5pZCksbj1uLnJlcGxhY2UoInt7dGl0bGV9fSIsYSh0W2VdLnRpdGxlKSksbj1uLnJl
cGxhY2UoInt7Y29tcGxldGVkfX0iLHIpLG49bi5yZXBsYWNlKCJ7e2NoZWNrZWR9fSIsYyksbys9
bn1yZXR1cm4gb30sby5wcm90b3R5cGUuaXRlbUNvdW50ZXI9ZnVuY3Rpb24odCl7dmFyIGU9MT09
PXQ/IiI6InMiO3JldHVybiI8c3Ryb25nPiIrdCsiPC9zdHJvbmc+IGl0ZW0iK2UrIiBsZWZ0In0s
by5wcm90b3R5cGUuY2xlYXJDb21wbGV0ZWRCdXR0b249ZnVuY3Rpb24odCl7cmV0dXJuIHQ+MD8i
Q2xlYXIgY29tcGxldGVkIjoiIn19LGZ1bmN0aW9uKHQsZSxpKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gbyh0KXt0aGlzLnN0b3JhZ2U9bmV3IGEuYSh0KSx0aGlzLm1vZGVsPW5ldyBsLmEodGhpcy5z
dG9yYWdlKSx0aGlzLnRlbXBsYXRlPW5ldyBkLmEsdGhpcy52aWV3PW5ldyByLmEodGhpcy50ZW1w
bGF0ZSksdGhpcy5jb250cm9sbGVyPW5ldyBjLmEodGhpcy5tb2RlbCx0aGlzLnZpZXcpfWZ1bmN0
aW9uIG4oKXtzPW5ldyBvKCJ0b2Rvcy12YW5pbGxhanMiKSxzLmNvbnRyb2xsZXIuc2V0Vmlldyhk
b2N1bWVudC5sb2NhdGlvbi5oYXNoKSx1LmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0p
fXZhciByPWkoOSksYz1pKDMpLGw9aSg1KSxhPWkoNiksZD1pKDcpO2koMCk7aS5kKGUsImEiLGZ1
bmN0aW9uKCl7cmV0dXJuIG59KTt2YXIgcz12b2lkIDAsdT1bXX0sZnVuY3Rpb24odCxlLGkpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3
IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24g
bih0KXtpLmkoYS5hKSgiLmZpbHRlcnMgLnNlbGVjdGVkIikuY2xhc3NOYW1lPSIiLGkuaShhLmEp
KCcuZmlsdGVycyBbaHJlZj0iIy8nK3QrJyJdJykuY2xhc3NOYW1lPSJzZWxlY3RlZCJ9ZnVuY3Rp
b24gcih0LGUpe3ZhciBvPWkuaShhLmEpKCdbZGF0YS1pZD0iJyt0KyciXScpO28mJihvLmNsYXNz
TmFtZT1lPyJjb21wbGV0ZWQiOiIiLGkuaShhLmEpKCJpbnB1dCIsbykuY2hlY2tlZD1lKX1mdW5j
dGlvbiBjKHQsZSl7dmFyIG89aS5pKGEuYSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7aWYobyl7by5j
bGFzc05hbWU9by5jbGFzc05hbWUrIiBlZGl0aW5nIjt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpO24uY2xhc3NOYW1lPSJlZGl0IixvLmFwcGVuZENoaWxkKG4pLG4uZm9jdXMo
KSxuLnZhbHVlPWV9fWZ1bmN0aW9uIGwodCl7dmFyIGU9aS5pKGEuZSkodCwibGkiKTtyZXR1cm4g
cGFyc2VJbnQoZS5kYXRhc2V0LmlkLDEwKX12YXIgYT1pKDApLGQ9ZnVuY3Rpb24oKXtmdW5jdGlv
biB0KHQsZSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07by5lbnVtZXJh
YmxlPW8uZW51bWVyYWJsZXx8ITEsby5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG8mJihvLndy
aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxvLmtleSxvKX19cmV0dXJuIGZ1bmN0
aW9uKGUsaSxvKXtyZXR1cm4gaSYmdChlLnByb3RvdHlwZSxpKSxvJiZ0KGUsbyksZX19KCkscz1m
dW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7byh0aGlzLHQpLHRoaXMudGVtcGxhdGU9ZSx0aGlzLkVO
VEVSX0tFWT0xMyx0aGlzLkVTQ0FQRV9LRVk9MjcsdGhpcy4kdG9kb0xpc3Q9aS5pKGEuYSkoIi50
b2RvLWxpc3QiKSx0aGlzLiR0b2RvSXRlbUNvdW50ZXI9aS5pKGEuYSkoIi50b2RvLWNvdW50Iiks
dGhpcy4kY2xlYXJDb21wbGV0ZWQ9aS5pKGEuYSkoIi5jbGVhci1jb21wbGV0ZWQiKSx0aGlzLiRt
YWluPWkuaShhLmEpKCIubWFpbiIpLHRoaXMuJGZvb3Rlcj1pLmkoYS5hKSgiLmZvb3RlciIpLHRo
aXMuJHRvZ2dsZUFsbD1pLmkoYS5hKSgiLnRvZ2dsZS1hbGwiKSx0aGlzLiRuZXdUb2RvPWkuaShh
LmEpKCIubmV3LXRvZG8iKX1yZXR1cm4gZCh0LFt7a2V5OiJfcmVtb3ZlSXRlbSIsdmFsdWU6ZnVu
Y3Rpb24odCl7dmFyIGU9aS5pKGEuYSkoJ1tkYXRhLWlkPSInK3QrJyJdJyk7ZSYmdGhpcy4kdG9k
b0xpc3QucmVtb3ZlQ2hpbGQoZSl9fSx7a2V5OiJfY2xlYXJDb21wbGV0ZWRCdXR0b24iLHZhbHVl
OmZ1bmN0aW9uKHQsZSl7dGhpcy4kY2xlYXJDb21wbGV0ZWQuaW5uZXJIVE1MPXRoaXMudGVtcGxh
dGUuY2xlYXJDb21wbGV0ZWRCdXR0b24odCksdGhpcy4kY2xlYXJDb21wbGV0ZWQuc3R5bGUuZGlz
cGxheT1lPyJibG9jayI6Im5vbmUifX0se2tleToiX2VkaXRJdGVtRG9uZSIsdmFsdWU6ZnVuY3Rp
b24odCxlKXt2YXIgbz1pLmkoYS5hKSgnW2RhdGEtaWQ9IicrdCsnIl0nKTtpZihvKXt2YXIgbj1p
LmkoYS5hKSgiaW5wdXQuZWRpdCIsbyk7by5yZW1vdmVDaGlsZChuKSxvLmNsYXNzTmFtZT1vLmNs
YXNzTmFtZS5yZXBsYWNlKCJlZGl0aW5nIiwiIiksaS5pKGEuYikoImxhYmVsIixvKS5mb3JFYWNo
KGZ1bmN0aW9uKHQpe3QudGV4dENvbnRlbnQ9ZX0pfX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVu
Y3Rpb24odCxlKXt2YXIgaT10aGlzLG89e3Nob3dFbnRyaWVzOmZ1bmN0aW9uKCl7aS4kdG9kb0xp
c3QuaW5uZXJIVE1MPWkudGVtcGxhdGUuc2hvdyhlKX0scmVtb3ZlSXRlbTpmdW5jdGlvbigpe2ku
X3JlbW92ZUl0ZW0oZSl9LHVwZGF0ZUVsZW1lbnRDb3VudDpmdW5jdGlvbigpe2kuJHRvZG9JdGVt
Q291bnRlci5pbm5lckhUTUw9aS50ZW1wbGF0ZS5pdGVtQ291bnRlcihlKX0sY2xlYXJDb21wbGV0
ZWRCdXR0b246ZnVuY3Rpb24oKXtpLl9jbGVhckNvbXBsZXRlZEJ1dHRvbihlLmNvbXBsZXRlZCxl
LnZpc2libGUpfSxjb250ZW50QmxvY2tWaXNpYmlsaXR5OmZ1bmN0aW9uKCl7aS4kbWFpbi5zdHls
ZS5kaXNwbGF5PWkuJGZvb3Rlci5zdHlsZS5kaXNwbGF5PWUudmlzaWJsZT8iYmxvY2siOiJub25l
In0sdG9nZ2xlQWxsOmZ1bmN0aW9uKCl7aS4kdG9nZ2xlQWxsLmNoZWNrZWQ9ZS5jaGVja2VkfSxz
ZXRGaWx0ZXI6ZnVuY3Rpb24oKXtuKGUpfSxjbGVhck5ld1RvZG86ZnVuY3Rpb24oKXtpLiRuZXdU
b2RvLnZhbHVlPSIifSxlbGVtZW50Q29tcGxldGU6ZnVuY3Rpb24oKXtyKGUuaWQsZS5jb21wbGV0
ZWQpfSxlZGl0SXRlbTpmdW5jdGlvbigpe2MoZS5pZCxlLnRpdGxlKX0sZWRpdEl0ZW1Eb25lOmZ1
bmN0aW9uKCl7aS5fZWRpdEl0ZW1Eb25lKGUuaWQsZS50aXRsZSl9fTtvW3RdKCl9fSx7a2V5OiJf
YmluZEl0ZW1FZGl0RG9uZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpLmkoYS5jKShl
LiR0b2RvTGlzdCwibGkgLmVkaXQiLCJibHVyIixmdW5jdGlvbigpe3RoaXMuZGF0YXNldC5pc2Nh
bmNlbGVkfHx0KHtpZDpsKHRoaXMpLHRpdGxlOnRoaXMudmFsdWV9KX0pLGkuaShhLmMpKGUuJHRv
ZG9MaXN0LCJsaSAuZWRpdCIsImtleXByZXNzIixmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLkVO
VEVSX0tFWSYmdGhpcy5ibHVyKCl9KX19LHtrZXk6Il9iaW5kSXRlbUVkaXRDYW5jZWwiLHZhbHVl
OmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aS5pKGEuYykoZS4kdG9kb0xpc3QsImxpIC5lZGl0Iiwi
a2V5dXAiLGZ1bmN0aW9uKGkpe2kua2V5Q29kZT09PWUuRVNDQVBFX0tFWSYmKHRoaXMuZGF0YXNl
dC5pc2NhbmNlbGVkPSEwLHRoaXMuYmx1cigpLHQoe2lkOmwodGhpcyl9KSl9KX19LHtrZXk6ImJp
bmQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG89dGhpczsibmV3VG9kbyI9PT10P2kuaShhLmQp
KG8uJG5ld1RvZG8sImNoYW5nZSIsZnVuY3Rpb24oKXtlKG8uJG5ld1RvZG8udmFsdWUpfSk6InJl
bW92ZUNvbXBsZXRlZCI9PT10P2kuaShhLmQpKG8uJGNsZWFyQ29tcGxldGVkLCJjbGljayIsZnVu
Y3Rpb24oKXtlKCl9KToidG9nZ2xlQWxsIj09PXQ/aS5pKGEuZCkoby4kdG9nZ2xlQWxsLCJjbGlj
ayIsZnVuY3Rpb24oKXtlKHtjb21wbGV0ZWQ6dGhpcy5jaGVja2VkfSl9KToiaXRlbUVkaXQiPT09
dD9pLmkoYS5jKShvLiR0b2RvTGlzdCwibGkgbGFiZWwiLCJkYmxjbGljayIsZnVuY3Rpb24oKXtl
KHtpZDpsKHRoaXMpfSl9KToiaXRlbVJlbW92ZSI9PT10P2kuaShhLmMpKG8uJHRvZG9MaXN0LCIu
ZGVzdHJveSIsImNsaWNrIixmdW5jdGlvbigpe2Uoe2lkOmwodGhpcyl9KX0pOiJpdGVtVG9nZ2xl
Ij09PXQ/aS5pKGEuYykoby4kdG9kb0xpc3QsIi50b2dnbGUiLCJjbGljayIsZnVuY3Rpb24oKXtl
KHtpZDpsKHRoaXMpLGNvbXBsZXRlZDp0aGlzLmNoZWNrZWR9KX0pOiJpdGVtRWRpdERvbmUiPT09
dD9vLl9iaW5kSXRlbUVkaXREb25lKGUpOiJpdGVtRWRpdENhbmNlbCI9PT10JiZvLl9iaW5kSXRl
bUVkaXRDYW5jZWwoZSl9fV0pLHR9KCk7ZS5hPXN9LGZ1bmN0aW9uKHQsZSl7fSxmdW5jdGlvbih0
LGUsaSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8oKXtpLmkoci5kKSh3aW5kb3csImxvYWQiLG4u
YSksaS5pKHIuZCkod2luZG93LCJoYXNoY2hhbmdlIixuLmEpfXZhciBuPWkoMikscj1pKDApOyJj
b21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlO28oKX1dLFsxMV0pOwotLy8jIHNvdXJjZU1h
cHBpbmdVUkw9YnVuZGxlLmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5qcy5tYXAKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9idW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzLm1hcCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTku
anMubWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWFkM2Q1NjgyYmRlNWUwNmZl
NGRlMzA2MDdjOWVkYWI3Mjk1Y2I1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5hcHAu
OWRlYmIxYjBhOTRmMTRkMGViZTkuanMubWFwCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYnVuZGxlLmFwcC45ZGViYjFiMGE5
NGYxNGQwZWJlOS5qcyIsIndlYnBhY2s6Ly8vLi9oZWxwZXJzLmpzIiwid2VicGFjazovLy8uL2Fw
cC5qcyIsIndlYnBhY2s6Ly8vLi9jb250cm9sbGVyLmpzIiwid2VicGFjazovLy8uL21lbW9yeS5q
cyIsIndlYnBhY2s6Ly8vLi9tb2RlbC5qcyIsIndlYnBhY2s6Ly8vLi9zdG9yZS5qcyIsIndlYnBh
Y2s6Ly8vLi90ZW1wbGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi90b2RvLmpzIiwid2VicGFjazovLy8u
L3ZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vYm9vdHN0cmFwLmpzIl0sIm5hbWVzIjpbIndlYnBhY2tK
c29ucCIsIm1vZHVsZSIsImV4cG9ydHMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwicXMiLCJzZWxl
Y3RvciIsInNjb3BlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicXNhIiwicXVlcnlTZWxl
Y3RvckFsbCIsIiRvbiIsInRhcmdldCIsInR5cGUiLCJjYWxsYmFjayIsInVzZUNhcHR1cmUiLCJh
ZGRFdmVudExpc3RlbmVyIiwiJGRlbGVnYXRlIiwiaGFuZGxlciIsImRpc3BhdGNoRXZlbnQiLCJl
dmVudCIsInRhcmdldEVsZW1lbnQiLCJwb3RlbnRpYWxFbGVtZW50cyIsImhhc01hdGNoIiwiQXJy
YXkiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiY2FsbCIsIiRwYXJlbnQiLCJlbGVtZW50IiwidGFn
TmFtZSIsInBhcmVudE5vZGUiLCJ0b0xvd2VyQ2FzZSIsInJlbW92ZSIsImFycmF5IiwidGhpbmci
LCJpbmRleCIsInNwbGljZSIsImQiLCJOb2RlTGlzdCIsImZvckVhY2giLCJvbkxvYWQiLCJpIiwi
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX190b2RvX18iLCJfX1dFQlBBQ0tfSU1QT1JURURf
TU9EVUxFXzBfdG9kb212Y19hcHBfY3NzX2luZGV4X2Nzc19fIiwiX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19hcHBfY3NzX18iLCJuIiwiQ29udHJvbGxlciIsIm1vZGVsIiwidmlldyIsInRo
YXQiLCJ0aGlzIiwiYmluZCIsInRpdGxlIiwiYWRkSXRlbSIsIml0ZW0iLCJlZGl0SXRlbSIsImlk
IiwiZWRpdEl0ZW1TYXZlIiwiZWRpdEl0ZW1DYW5jZWwiLCJyZW1vdmVJdGVtIiwidG9nZ2xlQ29t
cGxldGUiLCJjb21wbGV0ZWQiLCJyZW1vdmVDb21wbGV0ZWRJdGVtcyIsInN0YXR1cyIsInRvZ2ds
ZUFsbCIsInNldFZpZXciLCJsb2NhdGlvbkhhc2giLCJyb3V0ZSIsInNwbGl0IiwicGFnZSIsIl91
cGRhdGVGaWx0ZXJTdGF0ZSIsInNob3dBbGwiLCJyZWFkIiwiZGF0YSIsInJlbmRlciIsInNob3dB
Y3RpdmUiLCJzaG93Q29tcGxldGVkIiwidHJpbSIsImNyZWF0ZSIsIl9maWx0ZXIiLCJ1cGRhdGUi
LCJzaWxlbnQiLCJfdXBkYXRlQ291bnQiLCJnZXRDb3VudCIsInRvZG9zIiwiYWN0aXZlIiwidmlz
aWJsZSIsImNoZWNrZWQiLCJ0b3RhbCIsImZvcmNlIiwiYWN0aXZlUm91dGUiLCJfYWN0aXZlUm91
dGUiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInN1YnN0ciIsIl9sYXN0QWN0aXZlUm91dGUiLCJj
dXJyZW50UGFnZSIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsIm9iaiIsImNvbnN0cnVj
dG9yIiwicm9vdCIsImxvY2FsU3RvcmFnZU1lbW9yeSIsImNhY2hlIiwibGVuZ3RoIiwiZ2V0SXRl
bSIsImtleSIsInNldEl0ZW0iLCJ2YWx1ZSIsImhhc093blByb3BlcnR5IiwiT2JqZWN0Iiwia2V5
cyIsImNsZWFyIiwiTW9kZWwiLCJzdG9yYWdlIiwibmV3SXRlbSIsInNhdmUiLCJxdWVyeSIsInF1
ZXJ5VHlwZSIsImZpbmRBbGwiLCJwYXJzZUludCIsImZpbmQiLCJyZW1vdmVBbGwiLCJkcm9wIiwi
dG9kbyIsIlN0b3JlIiwibmFtZSIsIl9kYk5hbWUiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzFfX21lbW9yeV9fIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhcnNlIiwic3Vic2NyaWJlcnMiLCJf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfXyIsInN1YnNjcmliZSIsInN1YnNj
cmliZXIiLCJfdGhpcyIsInB1c2giLCJfbm90aWZ5IiwicyIsImZpbHRlciIsInEiLCJ1cGRhdGVE
YXRhIiwiRGF0ZSIsImdldFRpbWUiLCJUZW1wbGF0ZSIsImRlZmF1bHRUZW1wbGF0ZSIsImh0bWxF
c2NhcGVzIiwiJiIsIjwiLCI+IiwiXCIiLCInIiwiYCIsImVzY2FwZUh0bWxDaGFyIiwiY2hyIiwi
cmVVbmVzY2FwZWRIdG1sIiwicmVIYXNVbmVzY2FwZWRIdG1sIiwiUmVnRXhwIiwic291cmNlIiwi
ZXNjYXBlIiwic3RyaW5nIiwidGVzdCIsInJlcGxhY2UiLCJzaG93IiwibCIsInRlbXBsYXRlIiwi
aXRlbUNvdW50ZXIiLCJhY3RpdmVUb2RvcyIsInBsdXJhbCIsImNsZWFyQ29tcGxldGVkQnV0dG9u
IiwiY29tcGxldGVkVG9kb3MiLCJUb2RvIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19z
dG9yZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19tb2RlbF9fIiwiX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV80X190ZW1wbGF0ZV9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVM
RV8wX192aWV3X18iLCJjb250cm9sbGVyIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19j
b250cm9sbGVyX18iLCJ1cGRhdGVUb2RvIiwibG9jYXRpb24iLCJoYXNoIiwiX2NsYXNzQ2FsbENo
ZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9zZXRGaWx0ZXIiLCJj
bGFzc05hbWUiLCJfZWxlbWVudENvbXBsZXRlIiwibGlzdEl0ZW0iLCJfZWRpdEl0ZW0iLCJpbnB1
dCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBlbmRDaGlsZCIsImZvY3VzIiwiX2l0ZW1JZCIsImxpIiwi
ZGF0YXNldCIsIl9jcmVhdGVDbGFzcyIsImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2Ny
aXB0b3IiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJkZWZpbmVQcm9w
ZXJ0eSIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIlZpZXciLCJFTlRFUl9LRVkiLCJFU0NB
UEVfS0VZIiwiJHRvZG9MaXN0IiwiJHRvZG9JdGVtQ291bnRlciIsIiRjbGVhckNvbXBsZXRlZCIs
IiRtYWluIiwiJGZvb3RlciIsIiR0b2dnbGVBbGwiLCIkbmV3VG9kbyIsImVsZW0iLCJyZW1vdmVD
aGlsZCIsImNvbXBsZXRlZENvdW50IiwiaW5uZXJIVE1MIiwic3R5bGUiLCJkaXNwbGF5IiwibGFi
ZWwiLCJ0ZXh0Q29udGVudCIsInZpZXdDbWQiLCJwYXJhbWV0ZXIiLCJ2aWV3Q29tbWFuZHMiLCJz
aG93RW50cmllcyIsIl9yZW1vdmVJdGVtIiwidXBkYXRlRWxlbWVudENvdW50IiwiX2NsZWFyQ29t
cGxldGVkQnV0dG9uIiwiY29udGVudEJsb2NrVmlzaWJpbGl0eSIsInNldEZpbHRlciIsImNsZWFy
TmV3VG9kbyIsImVsZW1lbnRDb21wbGV0ZSIsImVkaXRJdGVtRG9uZSIsIl9lZGl0SXRlbURvbmUi
LCJpc2NhbmNlbGVkIiwia2V5Q29kZSIsImJsdXIiLCJfYmluZEl0ZW1FZGl0RG9uZSIsIl9iaW5k
SXRlbUVkaXRDYW5jZWwiLCJib290c3RyYXAiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFf
X2hlbHBlcnNfXyIsIndpbmRvdyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYXBwX18i
LCJyZWFkeVN0YXRlIl0sIm1hcHBpbmdzIjoiQUFBQUEsY0FBYyxFQUFFLElBRVYsU0FBU0MsRUFB
UUMsRUFBU0MsR0FFaEMsWUNEQSxTQUFTQyxHQUFHQyxFQUFVQyxHQUNwQixPQUFRQSxHQUFTQyxV
QUFVQyxjQUFjSCxHQUczQyxRQUFTSSxHQUFJSixFQUFVQyxHQUNyQixPQUFRQSxHQUFTQyxVQUFV
RyxpQkFBaUJMLEdBSTlDLFFBQVNNLEdBQUlDLEVBQVFDLEVBQU1DLEVBQVVDLEdBQ25DSCxFQUFP
SSxpQkFBaUJILEVBQU1DLElBQVlDLEdBSzVDLFFBQVNFLEdBQVVMLEVBQVFQLEVBQVVRLEVBQU1L
LEdBS3pDLFFBQVNDLEdBQWNDLEdBQ3JCLEdBQUlDLEdBQWdCRCxFQUFNUixPQUN0QlUsRUFBb0Ji
LEVBQUlKLEVBQVVPLEdBQ2xDVyxFQUFXQyxNQUFNQyxVQUFVQyxRQUFRQyxLQUFLTCxFQUFtQkQs
SUFBa0IsQ0FFN0VFLElBQ0ZMLEVBQVFTLEtBQUtOLEVBQWVELEdBVGhDLEdBQUlMLEdBQXNCLFNB
QVRGLEdBQTRCLFVBQVRBLENBQ3BDRixHQUFJQyxFQUFRQyxFQUFNTSxFQUFlSixHQWVuQyxRQUFT
YSxHQUFRQyxFQUFTQyxHQUN4QixHQUFLRCxFQUFRRSxXQUdiLE1BQUlGLEdBQVFFLFdBQVdELFFB
QVFFLGdCQUFrQkYsRUFBUUUsY0FDaERILEVBQVFFLFdBRVZILEVBQVFDLEVBQVFFLFdBQVlELEdB
T3JDLFFBQVNHLEdBQU9DLEVBQU9DLEdBQ3JCLEdBQU1DLEdBQVFGLEVBQU1SLFFBQVFTLEVBQzVC
LE9BQUlDLFFBQ0tGLE1BRVRBLEdBQU1HLE9BQU9ELEVBQU8sR0RqRERqQyxFQUFvQm1DLEVBQUVw
QyxFQUFTLElBQUssV0FBYSxNQUFPRSxLQUN4REQsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFLLFdB
QWEsTUFBT08sS0FDeEROLEVBQW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9TLEtBQ3hE
UixFQUFvQm1DLEVBQUVwQyxFQUFTLElBQUssV0FBYSxNQUFPZSxLQUN4RGQsRUFBb0JtQyxFQUFF
cEMsRUFBUyxJQUFLLFdBQWEsTUFBTzBCLEtBQ3hEekIsRUFBb0JtQyxFQUFFcEMsRUFBUyxJQUFL
LFdBQWEsTUFBTytCLEtDaUQ3RU0sU0FBU2QsVUFBVWUsUUFBVWhCLE1BQU1DLFVBQVVlLFNEY3RD
LENBRUQsU0FBU3ZDLEVBQVFDLEVBQVNDLEdBRWhDLFlFeEVPLFNBQVNzQyxLQUNkdEMsRUFBQXVD
LEVBQUFDLEVBQUEsS0Z3RW1CLEdBQUlDLEdBQTBEekMsRUFBb0IsR0FFOUUwQyxHQURrRTFDLEVB
QW9CMkMsRUFBRUYsR0FDL0N6QyxFQUFvQixLQUc3RHdDLEdBRmlEeEMsRUFBb0IyQyxFQUFFRCxH
QUM5QjFDLEVBQW9CLEdBQ3ZCQSxFQUFvQixHQUM5REQsR0FBVyxFQUFJdUMsR0FhOUIsU0FBU3hD
LEVBQVFDLEVBQVNDLEdBRWhDLFlHM0ZBLFNBQVM0QyxHQUFXQyxFQUFPQyxHQUN6QixHQUFJQyxH
QUFPQyxJQUNYRCxHQUFLRixNQUFRQSxFQUNiRSxFQUFLRCxLQUFPQSxFQUVaQyxFQUFLRCxLQUFL
RyxLQUFLLFVBQVcsU0FBU0MsR0FDakNILEVBQUtJLFFBQVFELEtBR2ZILEVBQUtELEtBQUtHLEtB
QUssV0FBWSxTQUFTRyxHQUNsQ0wsRUFBS00sU0FBU0QsRUFBS0UsTUFHckJQLEVBQUtELEtBQUtH
LEtBQUssZUFBZ0IsU0FBU0csR0FDdENMLEVBQUtRLGFBQWFILEVBQUtFLEdBQUlGLEVBQUtGLFNB
R2xDSCxFQUFLRCxLQUFLRyxLQUFLLGlCQUFrQixTQUFTRyxHQUN4Q0wsRUFBS1MsZUFBZUosRUFB
S0UsTUFHM0JQLEVBQUtELEtBQUtHLEtBQUssYUFBYyxTQUFTRyxHQUNwQ0wsRUFBS1UsV0FBV0ws
RUFBS0UsTUFHdkJQLEVBQUtELEtBQUtHLEtBQUssYUFBYyxTQUFTRyxHQUNwQ0wsRUFBS1csZUFB
ZU4sRUFBS0UsR0FBSUYsRUFBS08sYUFHcENaLEVBQUtELEtBQUtHLEtBQUssa0JBQW1CLFdBQ2hD
RixFQUFLYSx5QkFHUGIsRUFBS0QsS0FBS0csS0FBSyxZQUFhLFNBQVNZLEdBQ25DZCxFQUFLZSxV
QUFVRCxFQUFPRixhQTNDMUI1RCxFQUFBLEVBQWU2QyxFQW9EZkEsRUFBV3RCLFVBQVV5QyxRQUFV
LFNBQVNDLEdBQ3RDLEdBQUlDLEdBQVFELEVBQWFFLE1BQU0sS0FBSyxHQUNoQ0MsRUFBT0YsR0FB
UyxFQUNwQmpCLE1BQUtvQixtQkFBbUJELElBTzFCdkIsRUFBV3RCLFVBQVUrQyxRQUFVLFdBQzdC
LEdBQUl0QixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsS0FBSyxTQUFTQyxHQUN2QnhCLEVBQUtE
LEtBQUswQixPQUFPLGNBQWVELE1BT3BDM0IsRUFBV3RCLFVBQVVtRCxXQUFhLFdBQ2hDLEdBQUkx
QixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsTUFBTVgsV0FBVyxHQUFRLFNBQVNZLEdBQzNDeEIs
RUFBS0QsS0FBSzBCLE9BQU8sY0FBZUQsTUFPcEMzQixFQUFXdEIsVUFBVW9ELGNBQWdCLFdBQ25D
LEdBQUkzQixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsTUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdB
QzFDeEIsRUFBS0QsS0FBSzBCLE9BQU8sY0FBZUQsTUFRcEMzQixFQUFXdEIsVUFBVTZCLFFBQVUs
U0FBU0QsR0FDdEMsR0FBSUgsR0FBT0MsSUFFVSxNQUFqQkUsRUFBTXlCLFFBSVY1QixFQUFLRixN
QUFNK0IsT0FBTzFCLEVBQU8sV0FDdkJILEVBQUtELEtBQUswQixPQUFPLGdCQUNqQnpCLEVBQUs4
QixTQUFRLE1BT2pCakMsRUFBV3RCLFVBQVUrQixTQUFXLFNBQVNDLEdBQ3ZDLEdBQUlQLEdBQU9D
LElBQ1hELEdBQUtGLE1BQU15QixLQUFLaEIsRUFBSSxTQUFTaUIsR0FDM0J4QixFQUFLRCxLQUFL
MEIsT0FBTyxZQUFhbEIsS0FBSUosTUFBT3FCLEVBQUssR0FBR3JCLFdBT3JETixFQUFXdEIsVUFB
VWlDLGFBQWUsU0FBU0QsRUFBSUosR0FDL0MsR0FBSUgsR0FBT0MsSUFDUEUsR0FBTXlCLE9BQ1I1
QixFQUFLRixNQUFNaUMsT0FBT3hCLEdBQUtKLFNBQVEsV0FDN0JILEVBQUtELEtBQUswQixPQUFP
LGdCQUFpQmxCLEtBQUlKLFlBR3hDSCxFQUFLVSxXQUFXSCxJQU9wQlYsRUFBV3RCLFVBQVVrQyxl
QUFpQixTQUFTRixHQUM3QyxHQUFJUCxHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsS0FBS2hCLEVB
QUksU0FBU2lCLEdBQzNCeEIsRUFBS0QsS0FBSzBCLE9BQU8sZ0JBQWlCbEIsS0FBSUosTUFBT3FC
LEVBQUssR0FBR3JCLFdBV3pETixFQUFXdEIsVUFBVW1DLFdBQWEsU0FBU0gsR0FDekMsR0FBSVAs
R0FBT0MsSUFDWEQsR0FBS0YsTUFBTWYsT0FBT3dCLEVBQUksV0FDcEJQLEVBQUtELEtBQUswQixP
QUFPLGFBQWNsQixLQUdqQ1AsRUFBSzhCLFdBTVBqQyxFQUFXdEIsVUFBVXNDLHFCQUF1QixXQUMx
QyxHQUFJYixHQUFPQyxJQUNYRCxHQUFLRixNQUFNeUIsTUFBTVgsV0FBVyxHQUFPLFNBQVNZLEdB
QzFDQSxFQUFLbEMsUUFBUSxTQUFTZSxHQUNwQkwsRUFBS1UsV0FBV0wsRUFBS0UsUUFJekJQLEVB
QUs4QixXQVlQakMsRUFBV3RCLFVBQVVvQyxlQUFpQixTQUFTSixFQUFJSyxFQUFXb0IsR0FDNUQs
R0FBSWhDLEdBQU9DLElBQ1hELEdBQUtGLE1BQU1pQyxPQUFPeEIsR0FBS0ssYUFBWSxXQUNqQ1os
RUFBS0QsS0FBSzBCLE9BQU8sbUJBQ2ZsQixLQUNBSyxnQkFJQ29CLEdBQ0hoQyxFQUFLOEIsV0FR
VGpDLEVBQVd0QixVQUFVd0MsVUFBWSxTQUFTSCxHQUN4QyxHQUFJWixHQUFPQyxJQUNYRCxHQUFL
RixNQUFNeUIsTUFBTVgsV0FBWUEsR0FBWSxTQUFTWSxHQUNoREEsRUFBS2xDLFFBQVEsU0FBU2Us
R0FDcEJMLEVBQUtXLGVBQWVOLEVBQUtFLEdBQUlLLEdBQVcsT0FJNUNaLEVBQUs4QixXQU9QakMs
RUFBV3RCLFVBQVUwRCxhQUFlLFdBQ2xDLEdBQUlqQyxHQUFPQyxJQUNYRCxHQUFLRixNQUFNb0Ms
U0FBUyxTQUFTQyxHQUMzQm5DLEVBQUtELEtBQUswQixPQUFPLHFCQUFzQlUsRUFBTUMsUUFDN0Nw
QyxFQUFLRCxLQUFLMEIsT0FBTyx3QkFDZmIsVUFBV3VCLEVBQU12QixVQUNqQnlCLFFBQVNGLEVB
QU12QixVQUFZLElBRzdCWixFQUFLRCxLQUFLMEIsT0FBTyxhQUFjYSxRQUFTSCxFQUFNdkIsWUFB
Y3VCLEVBQU1JLFFBQ2xFdkMsRUFBS0QsS0FBSzBCLE9BQU8sMEJBQTJCWSxRQUFTRixFQUFNSSxN
QUFRLE9BUXZFMUMsRUFBV3RCLFVBQVV1RCxRQUFVLFNBQVNVLEdBQ3RDLEdBQUlDLEdBQWN4QyxL
QUFLeUMsYUFBYUMsT0FBTyxHQUFHQyxjQUFnQjNDLEtBQUt5QyxhQUFhRyxPQUFPLEVBR3ZGNUMs
TUFBS2dDLGdCQUtETyxHQUFtQyxRQUExQnZDLEtBQUs2QyxrQkFBOEI3QyxLQUFLNkMsbUJBQXFC
TCxJQUN4RXhDLEtBQUssT0FBU3dDLEtBR2hCeEMsS0FBSzZDLGlCQUFtQkwsR0FNMUI1QyxFQUFX
dEIsVUFBVThDLG1CQUFxQixTQUFTMEIsR0FHakRBLEVBQWNBLEVBQVk1QixNQUFNLEtBQUssR0FD
ckNsQixLQUFLeUMsYUFBZUssRUFFQSxLQUFoQkEsSUFDRjlDLEtBQUt5QyxhQUFlLE9BR3RCekMs
S0FBSzZCLFVBRUw3QixLQUFLRixLQUFLMEIsT0FBTyxZQUFhc0IsS0gwRzFCLFNBQVNoRyxFQUFR
QyxFQUFTQyxHQUVoQyxHQUFJK0YsR0FBNEIsa0JBQVhDLFNBQW9ELGdCQUFwQkEsUUFBT0MsU0FB
d0IsU0FBVUMsR0FBTyxhQUFjQSxJQUFTLFNBQVVBLEdBQU8sTUFBT0EsSUFBeUIsa0JBQVhGLFNB
QXlCRSxFQUFJQyxjQUFnQkgsUUFBVUUsSUFBUUYsT0FBTzFFLFVBQVksZUFBa0I0RSxLSWpYdFEs
U0FBVUUsR0FDUixHQUFJQyxNQUNBQyxJQUtKRCxHQUFtQkUsT0FBUyxFQVM1QkYsRUFBbUJHLFFB
QVUsU0FBU0MsR0FDcEMsTUFBT0gsR0FBTUcsSUFBUSxNQVl2QkosRUFBbUJLLFFBQVUsU0FBU0Qs
RUFBS0UsR0FDcEIsbUJBQVZBLEdBQ1ROLEVBQW1CNUMsV0FBV2dELElBRXhCSCxFQUFNTSxlQUFl
SCxJQUN6QkosRUFBbUJFLFNBR3JCRCxFQUFNRyxHQUFPLEdBQUtFLElBV3RCTixFQUFtQjVDLFdB
QWEsU0FBU2dELEdBQ25DSCxFQUFNTSxlQUFlSCxXQUNoQkgsR0FBTUcsR0FDYkosRUFBbUJFLFdB
V3ZCRixFQUFtQkksSUFBTSxTQUFTeEUsR0FDaEMsTUFBTzRFLFFBQU9DLEtBQUtSLEdBQU9yRSxJ
QUFVLE1BUXRDb0UsRUFBbUJVLE1BQVEsV0FDekJULEtBQ0FELEVBQW1CRSxPQUFTLEdBR1AsV0FB
bkJSLEVBQU9oRyxHQUNURCxFQUFPQyxRQUFVc0csRUFFakJELEVBQUtDLG1CQUFxQkEsR0FFM0Jy
RCxPSnVYRyxTQUFTbEQsRUFBUUMsRUFBU0MsR0FFaEMsWUtsY0EsU0FBU2dILEdBQU1DLEdBQ2Jq
RSxLQUFLaUUsUUFBVUEsRUxrY2pCLEdBQUlsQixHQUE0QixrQkFBWEMsU0FBb0QsZ0JBQXBCQSxR
QUFPQyxTQUF3QixTQUFVQyxHQUFPLGFBQWNBLElBQVMsU0FBVUEsR0FBTyxNQUFPQSxJQUF5Qixr
QkFBWEYsU0FBeUJFLEVBQUlDLGNBQWdCSCxRQUFVRSxJQUFRRixPQUFPMUUsVUFBWSxlQUFrQjRF
LEdLM2N0UW5HLEdBQUEsRUFBZWlILEVBa0JmQSxFQUFNMUYsVUFBVXNELE9BQVMsU0FBUzFCLEVB
QU92QyxHQUN2Q3VDLEVBQVFBLEdBQVMsR0FDakJ2QyxFQUFXQSxHQUFZLFlBR3ZCLElBQUl1RyxJ
QUNGaEUsTUFBT0EsRUFBTXlCLE9BQ2JoQixXQUFXLEVBR2JYLE1BQUtpRSxRQUFRRSxLQUFLRCxF
QUFTdkcsSUFpQjdCcUcsRUFBTTFGLFVBQVVnRCxLQUFPLFNBQVM4QyxFQUFPekcsR0FDckMsR0FB
STBHLEdBQUEsbUJBQW1CRCxHQUFuQixZQUFBckIsRUFBbUJxQixFQUl2QixPQUhBekcsR0FBV0Es
R0FBWSxhQUdMLGFBQWQwRyxHQUNGMUcsRUFBV3lHLEVBQ0pwRSxLQUFLaUUsUUFBUUssUUFBUTNH
LFNBQ0wsV0FBZDBHLEdBQXdDLFdBQWRBLEdBQ25DRCxFQUFRRyxTQUFTSCxFQUFPLElBQ3hCcEUs
S0FBS2lFLFFBQVFPLE1BQU1sRSxHQUFJOEQsR0FBUXpHLElBRS9CcUMsS0FBS2lFLFFBQVFPLEtB
QUtKLEVBQU96RyxLQWE3QnFHLEVBQU0xRixVQUFVd0QsT0FBUyxTQUFTeEIsRUFBSWlCLEVBQU01
RCxHQUMxQ3FDLEtBQUtpRSxRQUFRRSxLQUFLNUMsRUFBTTVELEVBQVUyQyxJQVNwQzBELEVBQU0x
RixVQUFVUSxPQUFTLFNBQVN3QixFQUFJM0MsR0FDcENxQyxLQUFLaUUsUUFBUW5GLE9BQU93QixF
QUFJM0MsSUFRMUJxRyxFQUFNMUYsVUFBVW1HLFVBQVksU0FBUzlHLEdBQ25DcUMsS0FBS2lFLFFB
QVFTLEtBQUsvRyxJQU1wQnFHLEVBQU0xRixVQUFVMkQsU0FBVyxTQUFTdEUsR0FDbEMsR0FBSXVF
LElBQ0ZDLE9BQVEsRUFDUnhCLFVBQVcsRUFDWDJCLE1BQU8sRUFHVHRDLE1BQUtpRSxRQUFRSyxR
QUFRLFNBQVMvQyxHQUM1QkEsRUFBS2xDLFFBQVEsU0FBU3NGLEdBQ2hCQSxFQUFLaEUsVUFDUHVC
LEVBQU12QixZQUVOdUIsRUFBTUMsU0FHUkQsRUFBTUksVUFFUjNFLEVBQVN1RSxPTGlkUCxTQUFT
cEYsRUFBUUMsRUFBU0MsR0FFaEMsWU14akJBLFNBQVM0SCxHQUFNQyxFQUFNbEgsR0FNbkIsR0FM
QUEsRUFBV0EsR0FBWSxhQUd2QnFDLEtBQUs4RSxRQUFVRCxHQUVWRSxFQUFtQkYsR0FBTyxDQUM3
QixHQUFJdEQsSUFDRlcsU0FHRjZDLEdBQW1CRixHQUFRRyxLQUFLQyxVQUFVMUQsR0FHNUM1RCxF
QUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CRixLQUNsRDdFLEtBQUttRixlTjBp
QmMsR0FBSUMsR0FBeUNwSSxFQUFvQixHQUM3RCtILEVBQXdDL0gsRUFBb0IsRUFDWkEsR0FBb0Iy
QyxFQUFFb0YsRU1ya0IvRmhJLEdBQUEsRUFBZTZILEVBNEJmQSxFQUFNdEcsVUFBVStHLFVBQVks
U0FBU0MsR0FBWSxHQUFBQyxHQUFBdkYsSUFFL0MsT0FEQUEsTUFBS21GLFlBQVlLLEtBQUtGLEdB
Q2YsaUJBQU10SSxHQUFBdUMsRUFBQTZGLEVBQUEsR0FBT0csRUFBS0osWUFBYUcsS0FHeENWLEVB
QU10RyxVQUFVbUgsUUFBVSxXQUN4QnpGLEtBQUttRixZQUFZOUYsUUFBUSxTQUFBcUcsR0FBQSxN
QUFLQSxRQWdCaENkLEVBQU10RyxVQUFVa0csS0FBTyxTQUFTSixFQUFPekcsR0FDckMsR0FBS0Es
RUFBTCxDQUlBLEdBQUl1RSxHQUFROEMsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFBVTVD
LEtBRXpEdkUsR0FBU2EsS0FBS3dCLEtBQU1rQyxFQUFNeUQsT0FBTyxTQUFTaEIsR0FDeEMsSUFB
SyxHQUFJaUIsS0FBS3hCLEdBQ1osR0FBSUEsRUFBTXdCLEtBQU9qQixFQUFLaUIsR0FDcEIsT0FB
TyxDQUdYLFFBQU8sT0FTWGhCLEVBQU10RyxVQUFVZ0csUUFBVSxTQUFTM0csR0FDakNBLEVBQVdB
LEdBQVksYUFFdkJBLEVBQVNhLEtBQUt3QixLQUFNZ0YsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFL
OEUsVUFBVTVDLFFBV25FMEMsRUFBTXRHLFVBQVU2RixLQUFPLFNBQVMwQixFQUFZbEksRUFBVTJD
LEdBQ3BELEdBQUlpQixHQUFPeUQsS0FBS0UsTUFBTUgsRUFBbUIvRSxLQUFLOEUsVUFDMUM1QyxF
QUFRWCxFQUFLVyxLQU1qQixJQUpBdkUsRUFBV0EsR0FBWSxhQUluQjJDLEVBQUksQ0FDTixJQUFL
LEdBQUlmLEdBQUksRUFBR0EsRUFBSTJDLEVBQU1xQixPQUFRaEUsSUFDaEMsR0FBSTJDLEVBQU0z
QyxHQUFHZSxLQUFPQSxFQUFJLENBQ3RCLElBQUssR0FBSW1ELEtBQU9vQyxHQUNkM0QsRUFBTTND
LEdBQUdrRSxHQUFPb0MsRUFBV3BDLEVBRTdCLE9BSUpzQixFQUFtQi9FLEtBQUs4RSxTQUFXRSxL
QUFLQyxVQUFVMUQsR0FDbEQ1RCxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1C
L0UsS0FBSzhFLFVBQVU1QyxXQUdqRTJELEdBQVd2RixJQUFLLEdBQUl3RixPQUFPQyxVQUUzQjdE
LEVBQU1zRCxLQUFLSyxHQUNYZCxFQUFtQi9FLEtBQUs4RSxTQUFXRSxLQUFLQyxVQUFVMUQsR0FD
bEQ1RCxFQUFTYSxLQUFLd0IsTUFBTzZGLEdBRXZCN0YsTUFBS3lGLFdBU1BiLEVBQU10RyxVQUFV
USxPQUFTLFNBQVN3QixFQUFJM0MsR0FJcEMsSUFBSyxHQUhENEQsR0FBT3lELEtBQUtFLE1BQU1I
LEVBQW1CL0UsS0FBSzhFLFVBQzFDNUMsRUFBUVgsRUFBS1csTUFFUjNDLEVBQUksRUFBR0EsRUFB
STJDLEVBQU1xQixPQUFRaEUsSUFDaEMsR0FBSTJDLEVBQU0zQyxHQUFHZSxLQUFPQSxFQUFJLENB
Q3RCNEIsRUFBTWhELE9BQU9LLEVBQUcsRUFDaEIsT0FJSndGLEVBQW1CL0UsS0FBSzhFLFNBQVdF
LEtBQUtDLFVBQVUxRCxHQUNsRDVELEVBQVNhLEtBQUt3QixLQUFNZ0YsS0FBS0UsTUFBTUgsRUFB
bUIvRSxLQUFLOEUsVUFBVTVDLE9BQ2pFbEMsS0FBS3lGLFdBUVBiLEVBQU10RyxVQUFVb0csS0FB
TyxTQUFTL0csR0FDOUJvSCxFQUFtQi9FLEtBQUs4RSxTQUFXRSxLQUFLQyxXQUFXL0MsV0FDbkR2
RSxFQUFTYSxLQUFLd0IsS0FBTWdGLEtBQUtFLE1BQU1ILEVBQW1CL0UsS0FBSzhFLFVBQVU1QyxP
QUNqRWxDLEtBQUt5RixZTmlsQkQsU0FBUzNJLEVBQVFDLEVBQVNDLEdBRWhDLFlPenNCQSxTQUFT
Z0osS0FDUGhHLEtBQUtpRyxnQkFBTCxzUEFoQ0ZsSixFQUFBLEVBQWVpSixDQUVmLElBQUlFLElB
Q0ZDLElBQUssUUFDTEMsSUFBSyxPQUNMQyxJQUFLLE9BQ0xDLElBQUssU0FDTEMsSUFBTSxTQUNO
QyxJQUFLLFVBR0hDLEVBQWlCLFNBQVNDLEdBQzVCLE1BQU9SLEdBQVlRLElBR2pCQyxFQUFrQixZ
QUNsQkMsRUFBcUIsR0FBSUMsUUFBT0YsRUFBZ0JHLFFBRWhEQyxFQUFTLFNBQVNDLEdBQ3BCLE1B
QUlBLElBQVVKLEVBQW1CSyxLQUFLRCxHQUM3QkEsRUFBT0UsUUFBUVAsRUFBaUJGLEdBRWhDTyxF
QXNDWGhCLEdBQVMxSCxVQUFVNkksS0FBTyxTQUFTNUYsR0FDakMsR0FBSWhDLEdBQUc2SCxFQUNI
dEgsRUFBTyxFQUVYLEtBQUtQLEVBQUksRUFBRzZILEVBQUk3RixFQUFLZ0MsT0FBUWhFLEVBQUk2
SCxFQUFHN0gsSUFBSyxDQUN2QyxHQUFJOEgsR0FBV3JILEtBQUtpRyxnQkFDaEJ0RixFQUFZLEdB
Q1owQixFQUFVLEVBRVZkLEdBQUtoQyxHQUFHb0IsWUFDVkEsRUFBWSxZQUNaMEIsRUFBVSxXQUda
Z0YsRUFBV0EsRUFBU0gsUUFBUSxTQUFVM0YsRUFBS2hDLEdBQUdlLElBQzlDK0csRUFBV0EsRUFB
U0gsUUFBUSxZQUFhSCxFQUFPeEYsRUFBS2hDLEdBQUdXLFFBQ3hEbUgsRUFBV0EsRUFBU0gsUUFB
USxnQkFBaUJ2RyxHQUM3QzBHLEVBQVdBLEVBQVNILFFBQVEsY0FBZTdFLEdBRTNDdkMsR0FBY3VI
LEVBR2hCLE1BQU92SCxJQVNUa0csRUFBUzFILFVBQVVnSixZQUFjLFNBQVNDLEdBQ3hDLEdBQUlD
LEdBQXlCLElBQWhCRCxFQUFvQixHQUFLLEdBRXRDLE9BQU8sV0FBYUEsRUFBYyxpQkFBbUJDLEVB
QVMsU0FTaEV4QixFQUFTMUgsVUFBVW1KLHFCQUF1QixTQUFTQyxHQUNqRCxNQUFJQSxHQUFpQixF
QUNaLGtCQUVBLEtQdXVCTCxTQUFTNUssRUFBUUMsRUFBU0MsR0FFaEMsWVFuMEJBLFNBQVMySyxH
QUFLOUMsR0FDWjdFLEtBQUtpRSxRQUFVLEdBQUkyRCxHQUFBLEVBQU0vQyxHQUN6QjdFLEtBQUtI
LE1BQVEsR0FBSWdJLEdBQUEsRUFBTTdILEtBQUtpRSxTQUM1QmpFLEtBQUtxSCxTQUFXLEdBQUlT
LEdBQUEsRUFDcEI5SCxLQUFLRixLQUFPLEdBQUlpSSxHQUFBLEVBQUsvSCxLQUFLcUgsVUFDMUJy
SCxLQUFLZ0ksV0FBYSxHQUFJQyxHQUFBLEVBQVdqSSxLQUFLSCxNQUFPRyxLQUFLRixNQUdwRCxR
QUFTb0ksS0FDUHZELEVBQU8sR0FBSWdELEdBQUssbUJBQ2hCaEQsRUFBS3FELFdBQVdqSCxRQUFR
M0QsU0FBUytLLFNBQVNDLE1BQzFDakQsRUFBWTlGLFFBQVEsU0FBQXFHLEdBQUEsTUFBS0EsT1J5
ekJOLEdBQUlxQyxHQUFzQy9LLEVBQW9CLEdBQzFEaUwsRUFBNENqTCxFQUFvQixHQUNoRTZLLEVB
QXVDN0ssRUFBb0IsR0FDM0Q0SyxFQUF1QzVLLEVBQW9CLEdBQzNEOEssRUFBMEM5SyxFQUFvQixF
QUNyQkEsR0FBb0IsRUFFakVBLEdBQW9CbUMsRUFBRXBDLEVBQVMsSUFBSyxXQUFhLE1BQU9tTCxJ
UW4xQjdFLElBQUl2RCxVQUNFUSxNUmc0QkEsU0FBU3JJLEVBQVFDLEVBQVNDLEdBRWhDLFlBSUEs
U0FBU3FMLEdBQWdCQyxFQUFVQyxHQUFlLEtBQU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlDLFdB
QVUscUNTanVCaEgsUUFBU0MsR0FBVzNGLEdBQ2xCOUYsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcs
c0JBQXNCc0QsVUFBWSxHQUNyQzFMLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLHFCQUF1QnRDLEVB
QWMsTUFBTTRGLFVBQVksV0FHNUQsUUFBU0MsR0FBaUJySSxFQUFJSyxHQUM1QixHQUFJaUksR0FB
VzVMLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGFBQWU5RSxFQUFLLEtBRWpDc0ksS0FJTEEsRUFB
U0YsVUFBWS9ILEVBQVksWUFBYyxHQUcvQzNELEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFFBQVN3
RCxHQUFVdkcsUUFBVTFCLEdBR2xDLFFBQVNrSSxHQUFVdkksRUFBSUosR0FDckIsR0FBSTBJLEdB
QVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxhQUFlOUUsRUFBSyxLQUV0QyxJQUFLc0ksRUFB
TCxDQUlBQSxFQUFTRixVQUFZRSxFQUFTRixVQUFZLFVBRTFDLElBQUlJLEdBQVExTCxTQUFTMkws
Y0FBYyxRQUNuQ0QsR0FBTUosVUFBWSxPQUVsQkUsRUFBU0ksWUFBWUYsR0FDckJBLEVBQU1HLFFB
Q05ILEVBQU1uRixNQUFRekQsR0FHaEIsUUFBU2dKLEdBQVF4SyxHQUNmLEdBQUl5SyxHQUFLbk0s
RUFBQXVDLEVBQUE2RixFQUFBLEdBQVExRyxFQUFTLEtBQzFCLE9BQU82RixVQUFTNEUsRUFBR0Ms
UUFBUTlJLEdBQUksSVR5ckJaLEdBQUk4RSxHQUF5Q3BJLEVBQW9CLEdBQ2xGcU0sRUFBZSxXQUFj
LFFBQVNDLEdBQWlCN0wsRUFBUThMLEdBQVMsSUFBSyxHQUFJaEssR0FBSSxFQUFHQSxFQUFJZ0ss
RUFBTWhHLE9BQVFoRSxJQUFLLENBQUUsR0FBSWlLLEdBQWFELEVBQU1oSyxFQUFJaUssR0FBV0Ms
V0FBYUQsRUFBV0MsYUFBYyxFQUFPRCxFQUFXRSxjQUFlLEVBQVUsU0FBV0YsS0FBWUEsRUFBV0cs
VUFBVyxHQUFNOUYsT0FBTytGLGVBQWVuTSxFQUFRK0wsRUFBVy9GLElBQUsrRixJQUFpQixNQUFP
LFVBQVVqQixFQUFhc0IsRUFBWUMsR0FBaUosTUFBOUhELElBQVlQLEVBQWlCZixFQUFZakssVUFB
V3VMLEdBQWlCQyxHQUFhUixFQUFpQmYsRUFBYXVCLEdBQXFCdkIsTVNsNEIzZ0J3QixFVG01QlYs
V1NsNUJULFFBQUFBLEdBQVkxQyxHQUFVZ0IsRUFBQXJJLEtBQUErSixHQUNwQi9KLEtBQUtxSCxT
QUFXQSxFQUVoQnJILEtBQUtnSyxVQUFZLEdBQ2pCaEssS0FBS2lLLFdBQWEsR0FFbEJqSyxLQUFL
a0ssVUFBWWxOLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGNBQ3BCcEYsS0FBS21LLGlCQUFtQm5O
LEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLGVBQzNCcEYsS0FBS29LLGdCQUFrQnBOLEVBQUF1QyxF
QUFBNkYsRUFBQSxHQUFHLG9CQUMxQnBGLEtBQUtxSyxNQUFRck4sRUFBQXVDLEVBQUE2RixFQUFB
LEdBQUcsU0FDaEJwRixLQUFLc0ssUUFBVXROLEVBQUF1QyxFQUFBNkYsRUFBQSxHQUFHLFdBQ2xC
cEYsS0FBS3VLLFdBQWF2TixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBRyxlQUNyQnBGLEtBQUt3SyxT
QUFXeE4sRUFBQXVDLEVBQUE2RixFQUFBLEdBQUcsYVQ0aUNyQixNQXBKQWlFLEdBQWFVLElBQ1h0
RyxJQUFLLGNBQ0xFLE1BQU8sU1N2NUJHckQsR0FDVixHQUFJbUssR0FBT3pOLEVBQUF1QyxFQUFB
NkYsRUFBQSxHQUFHLGFBQWU5RSxFQUFLLEtBRTlCbUssSUFDRnpLLEtBQUtrSyxVQUFVUSxZQUFZ
RCxNVDI1QjdCaEgsSUFBSyx3QkFDTEUsTUFBTyxTU3g1QmFnSCxFQUFnQnZJLEdBQ3BDcEMsS0FB
S29LLGdCQUFnQlEsVUFBWTVLLEtBQUtxSCxTQUFTSSxxQkFBcUJrRCxHQUNwRTNLLEtBQUtvSyxn
QkFBZ0JTLE1BQU1DLFFBQVUxSSxFQUFVLFFBQVUsVVQyNUJ6RHFCLElBQUssZ0JBQ0xFLE1BQU8s
U1N6NUJLckQsRUFBSUosR0FDaEIsR0FBSTBJLEdBQVc1TCxFQUFBdUMsRUFBQTZGLEVBQUEsR0FB
RyxhQUFlOUUsRUFBSyxLQUV0QyxJQUFLc0ksRUFBTCxDQUlBLEdBQUlFLEdBQVE5TCxFQUFBdUMs
RUFBQTZGLEVBQUEsR0FBRyxhQUFjd0QsRUFDN0JBLEdBQVM4QixZQUFZNUIsR0FFckJGLEVBQVNG
LFVBQVlFLEVBQVNGLFVBQVV4QixRQUFRLFVBQVcsSUFFM0RsSyxFQUFBdUMsRUFBQTZGLEVBQUEs
R0FBSSxRQUFTd0QsR0FBVXZKLFFBQVEsU0FBUzBMLEdBQ3RDQSxFQUFNQyxZQUFjOUssUVQ2NUJ0
QnVELElBQUssU0FDTEUsTUFBTyxTUzE1QkZzSCxFQUFTQyxHQUNkLEdBQUluTCxHQUFPQyxLQUNQ
bUwsR0FDRkMsWUFBYSxXQUNYckwsRUFBS21LLFVBQVVVLFVBQVk3SyxFQUFLc0gsU0FBU0YsS0FB
SytELElBRWhEekssV0FBWSxXQUNWVixFQUFLc0wsWUFBWUgsSUFFbkJJLG1CQUFvQixXQUNsQnZM
LEVBQUtvSyxpQkFBaUJTLFVBQVk3SyxFQUFLc0gsU0FBU0MsWUFBWTRELElBRTlEekQscUJBQXNC
LFdBQ3BCMUgsRUFBS3dMLHNCQUFzQkwsRUFBVXZLLFVBQVd1SyxFQUFVOUksVUFFNURvSix1QkFB
d0IsV0FDdEJ6TCxFQUFLc0ssTUFBTVEsTUFBTUMsUUFBVS9LLEVBQUt1SyxRQUFRTyxNQUFNQyxR
QUFVSSxFQUFVOUksUUFBVSxRQUFVLFFBRXhGdEIsVUFBVyxXQUNUZixFQUFLd0ssV0FBV2xJLFFB
QVU2SSxFQUFVN0ksU0FFdENvSixVQUFXLFdBQ1RoRCxFQUFXeUMsSUFFYlEsYUFBYyxXQUNaM0ws
RUFBS3lLLFNBQVM3RyxNQUFRLElBRXhCZ0ksZ0JBQWlCLFdBQ2ZoRCxFQUFpQnVDLEVBQVU1SyxH
QUFJNEssRUFBVXZLLFlBRTNDTixTQUFVLFdBQ1J3SSxFQUFVcUMsRUFBVTVLLEdBQUk0SyxFQUFV
aEwsUUFFcEMwTCxhQUFjLFdBQ1o3TCxFQUFLOEwsY0FBY1gsRUFBVTVLLEdBQUk0SyxFQUFVaEws
UUFJL0NpTCxHQUFhRixRVDY1QmJ4SCxJQUFLLG9CQUNMRSxNQUFPLFNTMzVCUzVGLEdBQ2hCLEdB
QUlnQyxHQUFPQyxJQUNYaEQsR0FBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxX
QUFZLE9BQVEsV0FDdkNsSyxLQUFLb0osUUFBUTBDLFlBQ2hCL04sR0FDRXVDLEdBQUk0SSxFQUFR
bEosTUFDWkUsTUFBT0YsS0FBSzJELFVBS2xCM0csRUFBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixF
QUFLbUssVUFBVyxXQUFZLFdBQVksU0FBU2pNLEdBQ3JEQSxFQUFNOE4sVUFBWWhNLEVBQUtpSyxX
QUd6QmhLLEtBQUtnTSxZVGc2QlR2SSxJQUFLLHNCQUNMRSxNQUFPLFNTNTVCVzVGLEdBQ2xCLEdB
QUlnQyxHQUFPQyxJQUNYaEQsR0FBQXVDLEVBQUE2RixFQUFBLEdBQVVyRixFQUFLbUssVUFBVyxX
QUFZLFFBQVMsU0FBU2pNLEdBQ2xEQSxFQUFNOE4sVUFBWWhNLEVBQUtrSyxhQUN6QmpLLEtBQUtv
SixRQUFRMEMsWUFBYSxFQUMxQjlMLEtBQUtnTSxPQUVMak8sR0FBU3VDLEdBQUk0SSxFQUFRbEos
Y1RpNkJ6QnlELElBQUssT0FDTEUsTUFBTyxTUzc1QkoxRixFQUFPRixHQUNWLEdBQUlnQyxHQUFP
QyxJQUNHLGFBQVYvQixFQUNGakIsRUFBQXVDLEVBQUE2RixFQUFBLEdBQUlyRixFQUFLeUssU0FB
VSxTQUFVLFdBQzNCek0sRUFBUWdDLEVBQUt5SyxTQUFTN0csU0FHTCxvQkFBVjFGLEVBQ1RqQixF
QUFBdUMsRUFBQTZGLEVBQUEsR0FBSXJGLEVBQUtxSyxnQkFBaUIsUUFBUyxXQUNqQ3JNLE1BR2lC
LGNBQVZFLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBSXJGLEVBQUt3SyxXQUFZLFFBQVMs
V0FDNUJ4TSxHQUFTNEMsVUFBV1gsS0FBS3FDLFlBR1IsYUFBVnBFLEVBQ1RqQixFQUFBdUMsRUFB
QTZGLEVBQUEsR0FBVXJGLEVBQUttSyxVQUFXLFdBQVksV0FBWSxXQUNoRG5NLEdBQVN1QyxHQUFJ
NEksRUFBUWxKLFVBR0osZUFBVi9CLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBVXJGLEVB
QUttSyxVQUFXLFdBQVksUUFBUyxXQUM3Q25NLEdBQVN1QyxHQUFJNEksRUFBUWxKLFVBR0osZUFB
Vi9CLEVBQ1RqQixFQUFBdUMsRUFBQTZGLEVBQUEsR0FBVXJGLEVBQUttSyxVQUFXLFVBQVcsUUFB
UyxXQUM1Q25NLEdBQ0V1QyxHQUFJNEksRUFBUWxKLE1BQ1pXLFVBQVdYLEtBQUtxQyxZQUlELGlC
QUFWcEUsRUFDVDhCLEVBQUtrTSxrQkFBa0JsTyxHQUVKLG1CQUFWRSxHQUNUOEIsRUFBS21NLG9C
QUFvQm5PLE9UMjVCdEJnTSxJQUdvQmhOLEdBQVcsRVM1akNuQmdOLEdUeW1DZixTQUFTak4sRUFB
UUMsS0FNakIsU0FBU0QsRUFBUUMsRUFBU0MsR0FFaEMsWVUxbUNBLFNBQVNtUCxLQUNQblAsRUFB
QXVDLEVBQUE2TSxFQUFBLEdBQUlDLE9BQVEsT0FBUUMsRUFBQSxHQUNwQnRQLEVBQUF1QyxFQUFB
Nk0sRUFBQSxHQUFJQyxPQUFRLGFBQWNDLEVBQUEsR1Z5bUNQLEdBQUlBLEdBQXFDdFAsRUFBb0Is
R1U5bkNsRm9QLEVBQUFwUCxFQUFBLEVBTTBDLGNBQXhCSSxTQUFTbVAsVUFVekJKLFFWd29DQyIs
ImZpbGUiOiJidW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzIiwic291cmNlc0NvbnRl
bnQiOlsid2VicGFja0pzb25wKFswLDJdLFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxu
LyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiYVwi
LCBmdW5jdGlvbigpIHsgcmV0dXJuIHFzOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2Vi
cGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImJcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBxc2E7
IH0pO1xuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMs
IFwiZFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuICRvbjsgfSk7XG4vKiBoYXJtb255IGV4cG9ydCAq
LyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZXhwb3J0cywgXCJjXCIsIGZ1bmN0aW9uKCkgeyByZXR1
cm4gJGRlbGVnYXRlOyB9KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJl
X18uZChleHBvcnRzLCBcImVcIiwgZnVuY3Rpb24oKSB7IHJldHVybiAkcGFyZW50OyB9KTtcbi8q
IGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChleHBvcnRzLCBcImZcIiwg
ZnVuY3Rpb24oKSB7IHJldHVybiByZW1vdmU7IH0pO1xuXG4vLyBHZXQgZWxlbWVudChzKSBieSBD
U1Mgc2VsZWN0b3I6XG5mdW5jdGlvbiBxcyhzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChz
Y29wZSB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG59XG5cbmZ1bmN0aW9u
IHFzYShzZWxlY3Rvciwgc2NvcGUpIHtcbiAgcmV0dXJuIChzY29wZSB8fCBkb2N1bWVudCkucXVl
cnlTZWxlY3RvckFsbChzZWxlY3Rvcik7XG59XG5cbi8vIGFkZEV2ZW50TGlzdGVuZXIgd3JhcHBl
cjpcbmZ1bmN0aW9uICRvbih0YXJnZXQsIHR5cGUsIGNhbGxiYWNrLCB1c2VDYXB0dXJlKSB7XG4g
IHRhcmdldC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGNhbGxiYWNrLCAhIXVzZUNhcHR1cmUpO1xu
fVxuXG4vLyBBdHRhY2ggYSBoYW5kbGVyIHRvIGV2ZW50IGZvciBhbGwgZWxlbWVudHMgdGhhdCBt
YXRjaCB0aGUgc2VsZWN0b3IsXG4vLyBub3cgb3IgaW4gdGhlIGZ1dHVyZSwgYmFzZWQgb24gYSBy
b290IGVsZW1lbnRcbmZ1bmN0aW9uICRkZWxlZ2F0ZSh0YXJnZXQsIHNlbGVjdG9yLCB0eXBlLCBo
YW5kbGVyKSB7XG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3Mv
V2ViL0V2ZW50cy9ibHVyXG4gIHZhciB1c2VDYXB0dXJlID0gdHlwZSA9PT0gJ2JsdXInIHx8IHR5
cGUgPT09ICdmb2N1cyc7XG4gICRvbih0YXJnZXQsIHR5cGUsIGRpc3BhdGNoRXZlbnQsIHVzZUNh
cHR1cmUpO1xuXG4gIGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgICB2YXIgdGFy
Z2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldDtcbiAgICB2YXIgcG90ZW50aWFsRWxlbWVudHMgPSBx
c2Eoc2VsZWN0b3IsIHRhcmdldCk7XG4gICAgdmFyIGhhc01hdGNoID0gQXJyYXkucHJvdG90eXBl
LmluZGV4T2YuY2FsbChwb3RlbnRpYWxFbGVtZW50cywgdGFyZ2V0RWxlbWVudCkgPj0gMDtcblxu
ICAgIGlmIChoYXNNYXRjaCkge1xuICAgICAgaGFuZGxlci5jYWxsKHRhcmdldEVsZW1lbnQsIGV2
ZW50KTtcbiAgICB9XG4gIH1cbn1cblxuLy8gRmluZCB0aGUgZWxlbWVudCdzIHBhcmVudCB3aXRo
IHRoZSBnaXZlbiB0YWcgbmFtZTpcbi8vICRwYXJlbnQocXMoJ2EnKSwgJ2RpdicpO1xuZnVuY3Rp
b24gJHBhcmVudChlbGVtZW50LCB0YWdOYW1lKSB7XG4gIGlmICghZWxlbWVudC5wYXJlbnROb2Rl
KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoZWxlbWVudC5wYXJlbnROb2Rl
LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAg
cmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gJHBhcmVudChlbGVtZW50
LnBhcmVudE5vZGUsIHRhZ05hbWUpO1xufVxuXG4vLyByZW1vdmVzIGFuIGVsZW1lbnQgZnJvbSBh
biBhcnJheVxuLy8gY29uc3QgeCA9IFsxLDIsM11cbi8vIHJlbW92ZSh4LCAyKVxuLy8geCB+PT0g
WzEsM11cbmZ1bmN0aW9uIHJlbW92ZShhcnJheSwgdGhpbmcpIHtcbiAgdmFyIGluZGV4ID0gYXJy
YXkuaW5kZXhPZih0aGluZyk7XG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXJy
YXk7XG4gIH1cbiAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbn1cblxuLy8gQWxsb3cgZm9yIGxv
b3Bpbmcgb24gbm9kZXMgYnkgY2hhaW5pbmc6XG4vLyBxc2EoJy5mb28nKS5mb3JFYWNoKGZ1bmN0
aW9uICgpIHt9KVxuTm9kZUxpc3QucHJvdG90eXBlLmZvckVhY2ggPSBBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaDtcblxuLyoqKi8gfSxcbi8qIDEgKi8sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7
XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3Rv
ZG9tdmNfYXBwX2Nzc19pbmRleF9jc3NfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBo
YXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3RvZG9tdmNf
YXBwX2Nzc19pbmRleF9jc3NfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMF90b2RvbXZjX2FwcF9jc3NfaW5kZXhfY3NzX18pO1xuLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fYXBwX2Nz
c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIg
X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19hcHBfY3NzX19fZGVmYXVsdCA9IF9fd2VicGFj
a19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX2FwcF9jc3NfXyk7XG4v
KiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19oZWxw
ZXJzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFy
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fdG9kb19fID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg4KTtcbi8qIGhhcm1vbnkgZXhwb3J0ICovIGV4cG9ydHNbXCJhXCJdID0gb25Mb2FkO1xuXG5c
blxuXG5cbmZ1bmN0aW9uIG9uTG9hZCgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBv
cnQvcHJlZmVyLWRlZmF1bHQtZXhwb3J0XG4gIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzNfX3RvZG9fX1tcImFcIiAvKiB1cGRhdGVUb2RvICovXSkoKTtc
bn1cblxuLyoqKi8gfSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVm
YXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFcIl0gPSBDb250cm9sbGVyO1xuXG4vKipcbiogVGFr
ZXMgYSBtb2RlbCBhbmQgdmlldyBhbmQgYWN0cyBhcyB0aGUgY29udHJvbGxlciBiZXR3ZWVuIHRo
ZW1cbipcbiogQGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBtb2RlbCBUaGUgbW9kZWwg
aW5zdGFuY2VcbiogQHBhcmFtIHtvYmplY3R9IHZpZXcgVGhlIHZpZXcgaW5zdGFuY2VcbiovXG5m
dW5jdGlvbiBDb250cm9sbGVyKG1vZGVsLCB2aWV3KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAg
dGhhdC5tb2RlbCA9IG1vZGVsO1xuICB0aGF0LnZpZXcgPSB2aWV3O1xuXG4gIHRoYXQudmlldy5i
aW5kKCduZXdUb2RvJywgZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgdGhhdC5hZGRJdGVtKHRpdGxl
KTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1FZGl0JywgZnVuY3Rpb24gKGl0ZW0p
IHtcbiAgICB0aGF0LmVkaXRJdGVtKGl0ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmlu
ZCgnaXRlbUVkaXREb25lJywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtU2F2
ZShpdGVtLmlkLCBpdGVtLnRpdGxlKTtcbiAgfSk7XG5cbiAgdGhhdC52aWV3LmJpbmQoJ2l0ZW1F
ZGl0Q2FuY2VsJywgZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB0aGF0LmVkaXRJdGVtQ2FuY2VsKGl0
ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbVJlbW92ZScsIGZ1bmN0aW9u
IChpdGVtKSB7XG4gICAgdGhhdC5yZW1vdmVJdGVtKGl0ZW0uaWQpO1xuICB9KTtcblxuICB0aGF0
LnZpZXcuYmluZCgnaXRlbVRvZ2dsZScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdGhhdC50b2dn
bGVDb21wbGV0ZShpdGVtLmlkLCBpdGVtLmNvbXBsZXRlZCk7XG4gIH0pO1xuXG4gIHRoYXQudmll
dy5iaW5kKCdyZW1vdmVDb21wbGV0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgdGhhdC5yZW1vdmVD
b21wbGV0ZWRJdGVtcygpO1xuICB9KTtcblxuICB0aGF0LnZpZXcuYmluZCgndG9nZ2xlQWxsJywg
ZnVuY3Rpb24gKHN0YXR1cykge1xuICAgIHRoYXQudG9nZ2xlQWxsKHN0YXR1cy5jb21wbGV0ZWQp
O1xuICB9KTtcbn1cblxuLyoqXG4qIExvYWRzIGFuZCBpbml0aWFsaXNlcyB0aGUgdmlld1xuKlxu
KiBAcGFyYW0ge3N0cmluZ30gJycgfCAnYWN0aXZlJyB8ICdjb21wbGV0ZWQnXG4qL1xuQ29udHJv
bGxlci5wcm90b3R5cGUuc2V0VmlldyA9IGZ1bmN0aW9uIChsb2NhdGlvbkhhc2gpIHtcbiAgdmFy
IHJvdXRlID0gbG9jYXRpb25IYXNoLnNwbGl0KCcvJylbMV07XG4gIHZhciBwYWdlID0gcm91dGUg
fHwgJyc7XG4gIHRoaXMuX3VwZGF0ZUZpbHRlclN0YXRlKHBhZ2UpO1xufTtcblxuLyoqXG4qIEFu
IGV2ZW50IHRvIGZpcmUgb24gbG9hZC4gV2lsbCBnZXQgYWxsIGl0ZW1zIGFuZCBkaXNwbGF5IHRo
ZW0gaW4gdGhlXG4qIHRvZG8tbGlzdFxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dBbGwg
PSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKGZ1
bmN0aW9uIChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRh
KTtcbiAgfSk7XG59O1xuXG4vKipcbiogUmVuZGVycyBhbGwgYWN0aXZlIHRhc2tzXG4qL1xuQ29u
dHJvbGxlci5wcm90b3R5cGUuc2hvd0FjdGl2ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQg
PSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IGZhbHNlIH0sIGZ1bmN0aW9u
IChkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcignc2hvd0VudHJpZXMnLCBkYXRhKTtcbiAg
fSk7XG59O1xuXG4vKipcbiogUmVuZGVycyBhbGwgY29tcGxldGVkIHRhc2tzXG4qL1xuQ29udHJv
bGxlci5wcm90b3R5cGUuc2hvd0NvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQg
PSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlYWQoeyBjb21wbGV0ZWQ6IHRydWUgfSwgZnVuY3Rpb24g
KGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdzaG93RW50cmllcycsIGRhdGEpO1xuICB9
KTtcbn07XG5cbi8qKlxuKiBBbiBldmVudCB0byBmaXJlIHdoZW5ldmVyIHlvdSB3YW50IHRvIGFk
ZCBhbiBpdGVtLiBTaW1wbHkgcGFzcyBpbiB0aGUgZXZlbnRcbiogb2JqZWN0IGFuZCBpdCdsbCBo
YW5kbGUgdGhlIERPTSBpbnNlcnRpb24gYW5kIHNhdmluZyBvZiB0aGUgbmV3IGl0ZW0uXG4qL1xu
Q29udHJvbGxlci5wcm90b3R5cGUuYWRkSXRlbSA9IGZ1bmN0aW9uICh0aXRsZSkge1xuICB2YXIg
dGhhdCA9IHRoaXM7XG5cbiAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1cm47
XG4gIH1cblxuICB0aGF0Lm1vZGVsLmNyZWF0ZSh0aXRsZSwgZnVuY3Rpb24gKCkge1xuICAgIHRo
YXQudmlldy5yZW5kZXIoJ2NsZWFyTmV3VG9kbycpO1xuICAgIHRoYXQuX2ZpbHRlcih0cnVlKTtc
biAgfSk7XG59O1xuXG4vKlxuKiBUcmlnZ2VycyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xu
Q29udHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgdmFyIHRo
YXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLnJlYWQoaWQsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAg
dGhhdC52aWV3LnJlbmRlcignZWRpdEl0ZW0nLCB7IGlkOiBpZCwgdGl0bGU6IGRhdGFbMF0udGl0
bGUgfSk7XG4gIH0pO1xufTtcblxuLypcbiogRmluaXNoZXMgdGhlIGl0ZW0gZWRpdGluZyBtb2Rl
IHN1Y2Nlc3NmdWxseS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUgPSBm
dW5jdGlvbiAoaWQsIHRpdGxlKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgaWYgKHRpdGxlLnRy
aW0oKSkge1xuICAgIHRoYXQubW9kZWwudXBkYXRlKGlkLCB7IHRpdGxlOiB0aXRsZSB9LCBmdW5j
dGlvbiAoKSB7XG4gICAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7IGlkOiBp
ZCwgdGl0bGU6IHRpdGxlIH0pO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRoYXQucmVtb3Zl
SXRlbShpZCk7XG4gIH1cbn07XG5cbi8qXG4qIENhbmNlbHMgdGhlIGl0ZW0gZWRpdGluZyBtb2Rl
LlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLmVkaXRJdGVtQ2FuY2VsID0gZnVuY3Rpb24gKGlk
KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbiAo
ZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VkaXRJdGVtRG9uZScsIHsgaWQ6IGlkLCB0
aXRsZTogZGF0YVswXS50aXRsZSB9KTtcbiAgfSk7XG59O1xuXG4vKipcbiogQnkgZ2l2aW5nIGl0
IGFuIElEIGl0J2xsIGZpbmQgdGhlIERPTSBlbGVtZW50IG1hdGNoaW5nIHRoYXQgSUQsXG4qIHJl
bW92ZSBpdCBmcm9tIHRoZSBET00gYW5kIGFsc28gcmVtb3ZlIGl0IGZyb20gc3RvcmFnZS5cbipc
biogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgaXRlbSB0byByZW1vdmUgZnJvbSB0
aGUgRE9NIGFuZFxuKiBzdG9yYWdlXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlSXRl
bSA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIHRoYXQubW9kZWwucmVt
b3ZlKGlkLCBmdW5jdGlvbiAoKSB7XG4gICAgdGhhdC52aWV3LnJlbmRlcigncmVtb3ZlSXRlbScs
IGlkKTtcbiAgfSk7XG5cbiAgdGhhdC5fZmlsdGVyKCk7XG59O1xuXG4vKipcbiogV2lsbCByZW1v
dmUgYWxsIGNvbXBsZXRlZCBpdGVtcyBmcm9tIHRoZSBET00gYW5kIHN0b3JhZ2UuXG4qL1xuQ29u
dHJvbGxlci5wcm90b3R5cGUucmVtb3ZlQ29tcGxldGVkSXRlbXMgPSBmdW5jdGlvbiAoKSB7XG4g
IHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC5yZWFkKHsgY29tcGxldGVkOiB0cnVlIH0s
IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4g
ICAgICB0aGF0LnJlbW92ZUl0ZW0oaXRlbS5pZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoYXQu
X2ZpbHRlcigpO1xufTtcblxuLyoqXG4qIEdpdmUgaXQgYW4gSUQgb2YgYSBtb2RlbCBhbmQgYSBj
aGVja2JveCBhbmQgaXQgd2lsbCB1cGRhdGUgdGhlIGl0ZW1cbiogaW4gc3RvcmFnZSBiYXNlZCBv
biB0aGUgY2hlY2tib3gncyBzdGF0ZS5cbipcbiogQHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBv
ZiB0aGUgZWxlbWVudCB0byBjb21wbGV0ZSBvciB1bmNvbXBsZXRlXG4qIEBwYXJhbSB7b2JqZWN0
fSBjaGVja2JveCBUaGUgY2hlY2tib3ggdG8gY2hlY2sgdGhlIHN0YXRlIG9mIGNvbXBsZXRlXG4q
ICAgICAgICAgICAgICAgICAgICAgICAgICBvciBub3RcbiogQHBhcmFtIHtib29sZWFufHVuZGVm
aW5lZH0gc2lsZW50IFByZXZlbnQgcmUtZmlsdGVyaW5nIHRoZSB0b2RvIGl0ZW1zXG4qL1xuQ29u
dHJvbGxlci5wcm90b3R5cGUudG9nZ2xlQ29tcGxldGUgPSBmdW5jdGlvbiAoaWQsIGNvbXBsZXRl
ZCwgc2lsZW50KSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2RlbC51cGRhdGUoaWQs
IHsgY29tcGxldGVkOiBjb21wbGV0ZWQgfSwgZnVuY3Rpb24gKCkge1xuICAgIHRoYXQudmlldy5y
ZW5kZXIoJ2VsZW1lbnRDb21wbGV0ZScsIHtcbiAgICAgIGlkOiBpZCxcbiAgICAgIGNvbXBsZXRl
ZDogY29tcGxldGVkXG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICghc2lsZW50KSB7XG4gICAgdGhh
dC5fZmlsdGVyKCk7XG4gIH1cbn07XG5cbi8qKlxuKiBXaWxsIHRvZ2dsZSBBTEwgY2hlY2tib3hl
cycgb24vb2ZmIHN0YXRlIGFuZCBjb21wbGV0ZW5lc3Mgb2YgbW9kZWxzLlxuKiBKdXN0IHBhc3Mg
aW4gdGhlIGV2ZW50IG9iamVjdC5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dnbGVBbGwg
PSBmdW5jdGlvbiAoY29tcGxldGVkKSB7XG4gIHZhciB0aGF0ID0gdGhpcztcbiAgdGhhdC5tb2Rl
bC5yZWFkKHsgY29tcGxldGVkOiAhY29tcGxldGVkIH0sIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAg
ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB0aGF0LnRvZ2dsZUNvbXBsZXRl
KGl0ZW0uaWQsIGNvbXBsZXRlZCwgdHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoYXQuX2Zp
bHRlcigpO1xufTtcblxuLyoqXG4qIFVwZGF0ZXMgdGhlIHBpZWNlcyBvZiB0aGUgcGFnZSB3aGlj
aCBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRoZSByZW1haW5pbmdcbiogbnVtYmVyIG9mIHRvZG9zLlxu
Ki9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl91cGRhdGVDb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAg
dmFyIHRoYXQgPSB0aGlzO1xuICB0aGF0Lm1vZGVsLmdldENvdW50KGZ1bmN0aW9uICh0b2Rvcykg
e1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3VwZGF0ZUVsZW1lbnRDb3VudCcsIHRvZG9zLmFjdGl2
ZSk7XG4gICAgdGhhdC52aWV3LnJlbmRlcignY2xlYXJDb21wbGV0ZWRCdXR0b24nLCB7XG4gICAg
ICBjb21wbGV0ZWQ6IHRvZG9zLmNvbXBsZXRlZCxcbiAgICAgIHZpc2libGU6IHRvZG9zLmNvbXBs
ZXRlZCA+IDBcbiAgICB9KTtcblxuICAgIHRoYXQudmlldy5yZW5kZXIoJ3RvZ2dsZUFsbCcsIHsg
Y2hlY2tlZDogdG9kb3MuY29tcGxldGVkID09PSB0b2Rvcy50b3RhbCB9KTtcbiAgICB0aGF0LnZp
ZXcucmVuZGVyKCdjb250ZW50QmxvY2tWaXNpYmlsaXR5JywgeyB2aXNpYmxlOiB0b2Rvcy50b3Rh
bCA+IDAgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4qIFJlLWZpbHRlcnMgdGhlIHRvZG8gaXRlbXMs
IGJhc2VkIG9uIHRoZSBhY3RpdmUgcm91dGUuXG4qIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9
IGZvcmNlICBmb3JjZXMgYSByZS1wYWludGluZyBvZiB0b2RvIGl0ZW1zLlxuKi9cbkNvbnRyb2xs
ZXIucHJvdG90eXBlLl9maWx0ZXIgPSBmdW5jdGlvbiAoZm9yY2UpIHtcbiAgdmFyIGFjdGl2ZVJv
dXRlID0gdGhpcy5fYWN0aXZlUm91dGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0aGlzLl9h
Y3RpdmVSb3V0ZS5zdWJzdHIoMSk7XG5cbiAgLy8gVXBkYXRlIHRoZSBlbGVtZW50cyBvbiB0aGUg
cGFnZSwgd2hpY2ggY2hhbmdlIHdpdGggZWFjaCBjb21wbGV0ZWQgdG9kb1xuICB0aGlzLl91cGRh
dGVDb3VudCgpO1xuXG4gIC8vIElmIHRoZSBsYXN0IGFjdGl2ZSByb3V0ZSBpc24ndCBcIkFsbFwi
LCBvciB3ZSdyZSBzd2l0Y2hpbmcgcm91dGVzLCB3ZVxuICAvLyByZS1jcmVhdGUgdGhlIHRvZG8g
aXRlbSBlbGVtZW50cywgY2FsbGluZzpcbiAgLy8gICB0aGlzLnNob3dbQWxsfEFjdGl2ZXxDb21w
bGV0ZWRdKCk7XG4gIGlmIChmb3JjZSB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09ICdBbGwn
IHx8IHRoaXMuX2xhc3RBY3RpdmVSb3V0ZSAhPT0gYWN0aXZlUm91dGUpIHtcbiAgICB0aGlzWydz
aG93JyArIGFjdGl2ZVJvdXRlXSgpO1xuICB9XG5cbiAgdGhpcy5fbGFzdEFjdGl2ZVJvdXRlID0g
YWN0aXZlUm91dGU7XG59O1xuXG4vKipcbiogU2ltcGx5IHVwZGF0ZXMgdGhlIGZpbHRlciBuYXYn
cyBzZWxlY3RlZCBzdGF0ZXNcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlRmlsdGVy
U3RhdGUgPSBmdW5jdGlvbiAoY3VycmVudFBhZ2UpIHtcbiAgLy8gU3RvcmUgYSByZWZlcmVuY2Ug
dG8gdGhlIGFjdGl2ZSByb3V0ZSwgYWxsb3dpbmcgdXMgdG8gcmUtZmlsdGVyIHRvZG9cbiAgLy8g
aXRlbXMgYXMgdGhleSBhcmUgbWFya2VkIGNvbXBsZXRlIG9yIGluY29tcGxldGUuXG4gIGN1cnJl
bnRQYWdlID0gY3VycmVudFBhZ2Uuc3BsaXQoJz8nKVswXTtcbiAgdGhpcy5fYWN0aXZlUm91dGUg
PSBjdXJyZW50UGFnZTtcblxuICBpZiAoY3VycmVudFBhZ2UgPT09ICcnKSB7XG4gICAgdGhpcy5f
YWN0aXZlUm91dGUgPSAnQWxsJztcbiAgfVxuXG4gIHRoaXMuX2ZpbHRlcigpO1xuXG4gIHRoaXMu
dmlldy5yZW5kZXIoJ3NldEZpbHRlcicsIGN1cnJlbnRQYWdlKTtcbn07XG5cbi8qKiovIH0sXG4v
KiA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYg
dHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsg
cmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlw
ZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9s
ICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9
O1xuXG4oZnVuY3Rpb24gKHJvb3QpIHtcbiAgdmFyIGxvY2FsU3RvcmFnZU1lbW9yeSA9IHt9O1xu
ICB2YXIgY2FjaGUgPSB7fTtcblxuICAvKipcbiAgICogbnVtYmVyIG9mIHN0b3JlZCBpdGVtcy5c
biAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5sZW5ndGggPSAwO1xuXG4gIC8qKlxuICAgKiBy
ZXR1cm5zIGl0ZW0gZm9yIHBhc3NlZCBrZXksIG9yIG51bGxcbiAgICpcbiAgICogQHBhcmEge1N0
cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRlbSB0byBiZSByZXR1cm5lZFxuICAgKiBA
cmV0dXJucyB7U3RyaW5nfG51bGx9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuZ2V0SXRl
bSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gY2FjaGVba2V5XSB8fCBudWxsO1xuICB9
O1xuXG4gIC8qKlxuICAgKiBzZXRzIGl0ZW0gZm9yIGtleSB0byBwYXNzZWQgdmFsdWUsIGFzIFN0
cmluZ1xuICAgKlxuICAgKiBAcGFyYSB7U3RyaW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBp
dGVtIHRvIGJlIHNldFxuICAgKiBAcGFyYSB7U3RyaW5nfSB2YWx1ZVxuICAgKiAgICAgICB2YWx1
ZSwgd2lsbCBhbHdheXMgYmUgdHVybmVkIGludG8gYSBTdHJpbmdcbiAgICogQHJldHVybnMge3Vu
ZGVmaW5lZH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5zZXRJdGVtID0gZnVuY3Rpb24g
KGtleSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xu
ICAgICAgbG9jYWxTdG9yYWdlTWVtb3J5LnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9IGVsc2Uge1xu
ICAgICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGxvY2FsU3Rv
cmFnZU1lbW9yeS5sZW5ndGgrKztcbiAgICAgIH1cblxuICAgICAgY2FjaGVba2V5XSA9ICcnICsg
dmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiByZW1vdmVzIGl0ZW0gZm9yIHBhc3Nl
ZCBrZXlcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2Yg
aXRlbSB0byBiZSByZW1vdmVkXG4gICAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gICAqL1xuICBs
b2NhbFN0b3JhZ2VNZW1vcnkucmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAo
Y2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgZGVsZXRlIGNhY2hlW2tleV07XG4g
ICAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3RoLS07XG4gICAgfVxuICB9O1xuXG4gIC8qKlxu
ICAgKiByZXR1cm5zIG5hbWUgb2Yga2V5IGF0IHBhc3NlZCBpbmRleFxuICAgKlxuICAgKiBAcGFy
YSB7TnVtYmVyfSBpbmRleFxuICAgKiAgICAgICBQb3NpdGlvbiBmb3Iga2V5IHRvIGJlIHJldHVy
bmVkIChzdGFydHMgYXQgMClcbiAgICogQHJldHVybnMge1N0cmluZ3xudWxsfVxuICAgKi9cbiAg
bG9jYWxTdG9yYWdlTWVtb3J5LmtleSA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgIHJldHVybiBP
YmplY3Qua2V5cyhjYWNoZSlbaW5kZXhdIHx8IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJl
bW92ZXMgYWxsIHN0b3JlZCBpdGVtcyBhbmQgc2V0cyBsZW5ndGggdG8gMFxuICAgKlxuICAgKiBA
cmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LmNsZWFyID0g
ZnVuY3Rpb24gKCkge1xuICAgIGNhY2hlID0ge307XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxl
bmd0aCA9IDA7XG4gIH07XG5cbiAgaWYgKCggZmFsc2UgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yo
ZXhwb3J0cykpID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gbG9jYWxTdG9y
YWdlTWVtb3J5O1xuICB9IGVsc2Uge1xuICAgIHJvb3QubG9jYWxTdG9yYWdlTWVtb3J5ID0gbG9j
YWxTdG9yYWdlTWVtb3J5O1xuICB9XG59KSh0aGlzKTtcblxuLyoqKi8gfSxcbi8qIDUgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbnZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlv
blwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAo
b2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2Jq
ICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09
IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9m
IG9iajsgfTtcblxuLyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9
IE1vZGVsO1xuXG4vKipcbiogQ3JlYXRlcyBhIG5ldyBNb2RlbCBpbnN0YW5jZSBhbmQgaG9va3Mg
dXAgdGhlIHN0b3JhZ2UuXG4qXG4qIEBjb25zdHJ1Y3RvclxuKiBAcGFyYW0ge29iamVjdH0gc3Rv
cmFnZSBBIHJlZmVyZW5jZSB0byB0aGUgY2xpZW50IHNpZGUgc3RvcmFnZSBjbGFzc1xuKi9cbmZ1
bmN0aW9uIE1vZGVsKHN0b3JhZ2UpIHtcbiAgdGhpcy5zdG9yYWdlID0gc3RvcmFnZTtcbn1cblxu
LyoqXG4qIENyZWF0ZXMgYSBuZXcgdG9kbyBtb2RlbFxuKlxuKiBAcGFyYW0ge3N0cmluZ30gW3Rp
dGxlXSBUaGUgdGl0bGUgb2YgdGhlIHRhc2tcbiogQHBhcmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNr
XSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUgbW9kZWwgaXMgY3JlYXRlZFxuKi9cbk1v
ZGVsLnByb3RvdHlwZS5jcmVhdGUgPSBmdW5jdGlvbiAodGl0bGUsIGNhbGxiYWNrKSB7XG4gIHRp
dGxlID0gdGl0bGUgfHwgJyc7XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkg
e307XG5cbiAgdmFyIG5ld0l0ZW0gPSB7XG4gICAgdGl0bGU6IHRpdGxlLnRyaW0oKSxcbiAgICBj
b21wbGV0ZWQ6IGZhbHNlXG4gIH07XG5cbiAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2Fs
bGJhY2spO1xufTtcblxuLyoqXG4gKiBGaW5kcyBhbmQgcmV0dXJucyBhIG1vZGVsIGluIHN0b3Jh
Z2UuIElmIG5vIHF1ZXJ5IGlzIGdpdmVuIGl0J2xsIHNpbXBseVxuICogcmV0dXJuIGV2ZXJ5dGhp
bmcuIElmIHlvdSBwYXNzIGluIGEgc3RyaW5nIG9yIG51bWJlciBpdCdsbCBsb29rIHRoYXQgdXAg
YXNcbiAqIHRoZSBJRCBvZiB0aGUgbW9kZWwgdG8gZmluZC4gTGFzdGx5LCB5b3UgY2FuIHBhc3Mg
aXQgYW4gb2JqZWN0IHRvIG1hdGNoIGFnYWluc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVt
YmVyfG9iamVjdH0gW3F1ZXJ5XSBBIHF1ZXJ5IHRvIG1hdGNoIG1vZGVscyBhZ2FpbnN0XG4gKiBA
cGFyYW0ge2Z1bmN0aW9ufSBbY2FsbGJhY2tdIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHRo
ZSBtb2RlbCBpcyBmb3VuZFxuICpcbiAqIEBleGFtcGxlXG4gKiBtb2RlbC5yZWFkKDEsIGZ1bmMp
OyAvLyBXaWxsIGZpbmQgdGhlIG1vZGVsIHdpdGggYW4gSUQgb2YgMVxuICogbW9kZWwucmVhZCgn
MScpOyAvLyBTYW1lIGFzIGFib3ZlXG4gKiAvL0JlbG93IHdpbGwgZmluZCBhIG1vZGVsIHdpdGgg
Zm9vIGVxdWFsbGluZyBiYXIgYW5kIGhlbGxvIGVxdWFsbGluZyB3b3JsZC5cbiAqIG1vZGVsLnJl
YWQoeyBmb286ICdiYXInLCBoZWxsbzogJ3dvcmxkJyB9KTtcbiAqL1xuTW9kZWwucHJvdG90eXBl
LnJlYWQgPSBmdW5jdGlvbiAocXVlcnksIGNhbGxiYWNrKSB7XG4gIHZhciBxdWVyeVR5cGUgPSB0
eXBlb2YgcXVlcnkgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKHF1ZXJ5
KTtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICBpZiAocXVl
cnlUeXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBxdWVyeTtcbiAgICByZXR1
cm4gdGhpcy5zdG9yYWdlLmZpbmRBbGwoY2FsbGJhY2spO1xuICB9IGVsc2UgaWYgKHF1ZXJ5VHlw
ZSA9PT0gJ3N0cmluZycgfHwgcXVlcnlUeXBlID09PSAnbnVtYmVyJykge1xuICAgIHF1ZXJ5ID0g
cGFyc2VJbnQocXVlcnksIDEwKTtcbiAgICB0aGlzLnN0b3JhZ2UuZmluZCh7IGlkOiBxdWVyeSB9
LCBjYWxsYmFjayk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zdG9yYWdlLmZpbmQocXVlcnksIGNh
bGxiYWNrKTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4qIFVwZGF0ZXMg
YSBtb2RlbCBieSBnaXZpbmcgaXQgYW4gSUQsIGRhdGEgdG8gdXBkYXRlLCBhbmQgYSBjYWxsYmFj
ayB0byBmaXJlIHdoZW5cbiogdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbipcbiogQHBhcmFtIHtu
dW1iZXJ9IGlkIFRoZSBpZCBvZiB0aGUgbW9kZWwgdG8gdXBkYXRlXG4qIEBwYXJhbSB7b2JqZWN0
fSBkYXRhIFRoZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZSBhbmQgdGhlaXIgbmV3IHZhbHVlXG4qIEBw
YXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHVw
ZGF0ZSBpcyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24g
KGlkLCBkYXRhLCBjYWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2Uuc2F2ZShkYXRhLCBjYWxsYmFj
aywgaWQpO1xufTtcblxuLyoqXG4qIFJlbW92ZXMgYSBtb2RlbCBmcm9tIHN0b3JhZ2Vcbipcbiog
QHBhcmFtIHtudW1iZXJ9IGlkIFRoZSBJRCBvZiB0aGUgbW9kZWwgdG8gcmVtb3ZlXG4qIEBwYXJh
bSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIHdoZW4gdGhlIHJlbW92
YWwgaXMgY29tcGxldGUuXG4qL1xuTW9kZWwucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uIChp
ZCwgY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLnJlbW92ZShpZCwgY2FsbGJhY2spO1xufTtc
blxuLyoqXG4qIFdBUk5JTkc6IFdpbGwgcmVtb3ZlIEFMTCBkYXRhIGZyb20gc3RvcmFnZS5cbipc
biogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0
aGUgc3RvcmFnZSBpcyB3aXBlZC5cbiovXG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlQWxsID0gZnVu
Y3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5kcm9wKGNhbGxiYWNrKTtcbn07XG5c
bi8qKlxuKiBSZXR1cm5zIGEgY291bnQgb2YgYWxsIHRvZG9zXG4qL1xuTW9kZWwucHJvdG90eXBl
LmdldENvdW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciB0b2RvcyA9IHtcbiAgICBh
Y3RpdmU6IDAsXG4gICAgY29tcGxldGVkOiAwLFxuICAgIHRvdGFsOiAwXG4gIH07XG5cbiAgdGhp
cy5zdG9yYWdlLmZpbmRBbGwoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkYXRhLmZvckVhY2goZnVu
Y3Rpb24gKHRvZG8pIHtcbiAgICAgIGlmICh0b2RvLmNvbXBsZXRlZCkge1xuICAgICAgICB0b2Rv
cy5jb21wbGV0ZWQrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvZG9zLmFjdGl2ZSsrO1xu
ICAgICAgfVxuXG4gICAgICB0b2Rvcy50b3RhbCsrO1xuICAgIH0pO1xuICAgIGNhbGxiYWNrKHRv
ZG9zKTtcbiAgfSk7XG59O1xuXG4vKioqLyB9LFxuLyogNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xu
LyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVs
cGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZh
ciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9E
VUxFXzFfX21lbW9yeV9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfXyk7XG5cblxuLyogaGFybW9ueSBkZWZhdWx0IGV4
cG9ydCAqLyBleHBvcnRzW1wiYVwiXSA9IFN0b3JlO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcg
Y2xpZW50IHNpZGUgc3RvcmFnZSBvYmplY3QgYW5kIHdpbGwgY3JlYXRlIGFuIGVtcHR5XG4gKiBj
b2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rpb24gYWxyZWFkeSBleGlzdHMuXG4gKlxuICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2Ygb3VyIERCIHdlIHdhbnQgdG8gdXNlXG4gKiBAcGFy
YW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBPdXIgZmFrZSBEQiB1c2VzIGNhbGxiYWNrcyBiZWNhdXNl
IGluXG4gKiByZWFsIGxpZmUgeW91IHByb2JhYmx5IHdvdWxkIGJlIG1ha2luZyBBSkFYIGNhbGxz
XG4gKi9cbmZ1bmN0aW9uIFN0b3JlKG5hbWUsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2Fs
bGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG5cbiAgdGhpcy5fZGJOYW1lID0gbmFtZTtcblxuICBp
ZiAoIV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bbmFtZV0pIHtcbiAgICB2
YXIgZGF0YSA9IHtcbiAgICAgIHRvZG9zOiBbXVxuICAgIH07XG5cbiAgICBfX1dFQlBBQ0tfSU1Q
T1JURURfTU9EVUxFXzFfX21lbW9yeV9fW25hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4g
IH1cblxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19tZW1vcnlfX1tuYW1lXSkpO1xuICB0aGlzLnN1YnNjcmliZXJzID0gW107XG59
XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoc3Vic2NyaWJlcikge1xu
ICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMuc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVy
KTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVf
Xy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiZlwiIC8qIHJlbW92
ZSAqL10pKF90aGlzLnN1YnNjcmliZXJzLCBzdWJzY3JpYmVyKTtcbiAgfTtcbn07XG5cblN0b3Jl
LnByb3RvdHlwZS5fbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnN1YnNjcmliZXJzLmZv
ckVhY2goZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gcygpO1xuICB9KTtcbn07XG5cbi8qKlxu
KiBGaW5kcyBpdGVtcyBiYXNlZCBvbiBhIHF1ZXJ5IGdpdmVuIGFzIGEgSlMgb2JqZWN0XG4qXG4q
IEBwYXJhbSB7b2JqZWN0fSBxdWVyeSBUaGUgcXVlcnkgdG8gbWF0Y2ggYWdhaW5zdCAoaS5lLiB7
Zm9vOiAnYmFyJ30pXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrICAgVGhlIGNhbGxiYWNr
IHRvIGZpcmUgd2hlbiB0aGUgcXVlcnkgaGFzXG4qIGNvbXBsZXRlZCBydW5uaW5nXG4qXG4qIEBl
eGFtcGxlXG4qIGRiLmZpbmQoe2ZvbzogJ2JhcicsIGhlbGxvOiAnd29ybGQnfSwgZnVuY3Rpb24g
KGRhdGEpIHtcbiogICAvLyBkYXRhIHdpbGwgcmV0dXJuIGFueSBpdGVtcyB0aGF0IGhhdmUgZm9v
OiBiYXIgYW5kXG4qICAgLy8gaGVsbG86IHdvcmxkIGluIHRoZWlyIHByb3BlcnRpZXNcbiogfSk7
XG4qL1xuU3RvcmUucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbiAocXVlcnksIGNhbGxiYWNrKSB7
XG4gIGlmICghY2FsbGJhY2spIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdG9kb3MgPSBK
U09OLnBhcnNlKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJO
YW1lXSkudG9kb3M7XG5cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCB0b2Rvcy5maWx0ZXIoZnVuY3Rp
b24gKHRvZG8pIHtcbiAgICBmb3IgKHZhciBxIGluIHF1ZXJ5KSB7XG4gICAgICBpZiAocXVlcnlb
cV0gIT09IHRvZG9bcV0pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1c
biAgICByZXR1cm4gdHJ1ZTtcbiAgfSkpO1xufTtcblxuLyoqXG4qIFdpbGwgcmV0cmlldmUgYWxs
IGRhdGEgZnJvbSB0aGUgY29sbGVjdGlvblxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFj
ayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB1cG9uIHJldHJpZXZpbmcgZGF0YVxuKi9cblN0b3JlLnBy
b3RvdHlwZS5maW5kQWxsID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gY2Fs
bGJhY2sgfHwgZnVuY3Rpb24gKCkge307XG4gIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJz
ZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9yeV9fW3RoaXMuX2RiTmFtZV0pLnRv
ZG9zKTtcbn07XG5cbi8qKlxuKiBXaWxsIHNhdmUgdGhlIGdpdmVuIGRhdGEgdG8gdGhlIERCLiBJ
ZiBubyBpdGVtIGV4aXN0cyBpdCB3aWxsIGNyZWF0ZSBhIG5ld1xuKiBpdGVtLCBvdGhlcndpc2Ug
aXQnbGwgc2ltcGx5IHVwZGF0ZSBhbiBleGlzdGluZyBpdGVtJ3MgcHJvcGVydGllc1xuKlxuKiBA
cGFyYW0ge29iamVjdH0gdXBkYXRlRGF0YSBUaGUgZGF0YSB0byBzYXZlIGJhY2sgaW50byB0aGUg
REJcbiogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0
ZXIgc2F2aW5nXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBBbiBvcHRpb25hbCBwYXJhbSB0byBlbnRl
ciBhbiBJRCBvZiBhbiBpdGVtIHRvIHVwZGF0ZVxuKi9cblN0b3JlLnByb3RvdHlwZS5zYXZlID0g
ZnVuY3Rpb24gKHVwZGF0ZURhdGEsIGNhbGxiYWNrLCBpZCkge1xuICB2YXIgZGF0YSA9IEpTT04u
cGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVd
KTtcbiAgdmFyIHRvZG9zID0gZGF0YS50b2RvcztcblxuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8
IGZ1bmN0aW9uICgpIHt9O1xuXG4gIC8vIElmIGFuIElEIHdhcyBhY3R1YWxseSBnaXZlbiwgZmlu
ZCB0aGUgaXRlbSBhbmQgdXBkYXRlIGVhY2ggcHJvcGVydHlcbiAgaWYgKGlkKSB7XG4gICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRvZG9zW2ld
LmlkID09PSBpZCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gdXBkYXRlRGF0YSkge1xuICAg
ICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICAgICAgdG9k
b3NbaV1ba2V5XSA9IHVwZGF0ZURhdGFba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztc
biAgICAgIH1cbiAgICB9XG5cbiAgICBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9y
eV9fW3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICBjYWxsYmFjay5j
YWxsKHRoaXMsIEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlf
X1t0aGlzLl9kYk5hbWVdKS50b2Rvcyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4g
SURcbiAgICB1cGRhdGVEYXRhLmlkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICB0b2Rv
cy5wdXNoKHVwZGF0ZURhdGEpO1xuICAgIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVt
b3J5X19bdGhpcy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgIGNhbGxiYWNr
LmNhbGwodGhpcywgW3VwZGF0ZURhdGFdKTtcbiAgfVxuICB0aGlzLl9ub3RpZnkoKTtcbn07XG5c
bi8qKlxuKiBXaWxsIHJlbW92ZSBhbiBpdGVtIGZyb20gdGhlIFN0b3JlIGJhc2VkIG9uIGl0cyBJ
RFxuKlxuKiBAcGFyYW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBpdGVtIHlvdSB3YW50IHRv
IHJlbW92ZVxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmly
ZSBhZnRlciBzYXZpbmdcbiovXG5TdG9yZS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKGlk
LCBjYWxsYmFjaykge1xuICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoX19XRUJQQUNLX0lNUE9SVEVE
X01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVdKTtcbiAgdmFyIHRvZG9zID0gZGF0YS50
b2RvcztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7XG4gICAg
aWYgKHRvZG9zW2ldLmlkID09PSBpZCkge1xuICAgICAgdG9kb3Muc3BsaWNlKGksIDEpO1xuICAg
ICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19t
ZW1vcnlfX1t0aGlzLl9kYk5hbWVdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIGNhbGxiYWNr
LmNhbGwodGhpcywgSlNPTi5wYXJzZShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX21lbW9y
eV9fW3RoaXMuX2RiTmFtZV0pLnRvZG9zKTtcbiAgdGhpcy5fbm90aWZ5KCk7XG59O1xuXG4vKipc
biogV2lsbCBkcm9wIGFsbCBzdG9yYWdlIGFuZCBzdGFydCBmcmVzaFxuKlxuKiBAcGFyYW0ge2Z1
bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciBkcm9wcGluZyB0aGUg
ZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5kcm9wID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4g
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fbWVtb3J5X19bdGhpcy5fZGJOYW1lXSA9IEpT
T04uc3RyaW5naWZ5KHsgdG9kb3M6IFtdIH0pO1xuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04u
cGFyc2UoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19tZW1vcnlfX1t0aGlzLl9kYk5hbWVd
KS50b2Rvcyk7XG4gIHRoaXMuX25vdGlmeSgpO1xufTtcblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
InVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFc
Il0gPSBUZW1wbGF0ZTtcblxudmFyIGh0bWxFc2NhcGVzID0ge1xuICAnJic6ICcmYW1wOycsXG4g
ICc8JzogJyZsdDsnLFxuICAnPic6ICcmZ3Q7JyxcbiAgJ1wiJzogJyZxdW90OycsXG4gICdcXCcn
OiAnJiN4Mjc7JyxcbiAgJ2AnOiAnJiN4NjA7J1xufTtcblxudmFyIGVzY2FwZUh0bWxDaGFyID0g
ZnVuY3Rpb24gZXNjYXBlSHRtbENoYXIoY2hyKSB7XG4gIHJldHVybiBodG1sRXNjYXBlc1tjaHJd
O1xufTtcblxudmFyIHJlVW5lc2NhcGVkSHRtbCA9IC9bJjw+XCInYF0vZztcbnZhciByZUhhc1Vu
ZXNjYXBlZEh0bWwgPSBuZXcgUmVnRXhwKHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UpO1xuXG52YXIg
ZXNjYXBlID0gZnVuY3Rpb24gZXNjYXBlKHN0cmluZykge1xuICBpZiAoc3RyaW5nICYmIHJlSGFz
VW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2Uo
cmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJu
IHN0cmluZztcbiAgfVxufTtcblxuLyoqXG4qIFNldHMgdXAgZGVmYXVsdHMgZm9yIGFsbCB0aGUg
VGVtcGxhdGUgbWV0aG9kcyBzdWNoIGFzIGEgZGVmYXVsdCB0ZW1wbGF0ZVxuKlxuKiBAY29uc3Ry
dWN0b3JcbiovXG5mdW5jdGlvbiBUZW1wbGF0ZSgpIHtcbiAgdGhpcy5kZWZhdWx0VGVtcGxhdGUg
PSAnXFxuICAgIDxsaSBkYXRhLWlkPVwie3tpZH19XCIgY2xhc3M9XCJ7e2NvbXBsZXRlZH19XCI+
XFxuICAgICAgPGRpdiBjbGFzcz1cInZpZXdcIj5cXG4gICAgICAgIDxpbnB1dCBjbGFzcz1cInRv
Z2dsZVwiIHR5cGU9XCJjaGVja2JveFwiIHt7Y2hlY2tlZH19IC8+XFxuICAgICAgICA8bGFiZWw+
e3t0aXRsZX19PC9sYWJlbD5cXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJkZXN0cm95XCI+PC9i
dXR0b24+XFxuICAgICAgPC9kaXY+XFxuICAgIDwvbGk+XFxuICAnO1xufVxuXG4vKipcbiAqIENy
ZWF0ZXMgYW4gPGxpPiBIVE1MIHN0cmluZyBhbmQgcmV0dXJucyBpdCBmb3IgcGxhY2VtZW50IGlu
IHlvdXIgYXBwLlxuICpcbiAqIE5PVEU6IEluIHJlYWwgbGlmZSB5b3Ugc2hvdWxkIGJlIHVzaW5n
IGEgdGVtcGxhdGluZyBlbmdpbmUgc3VjaCBhcyBNdXN0YWNoZVxuICogb3IgSGFuZGxlYmFycywg
aG93ZXZlciwgdGhpcyBpcyBhIHZhbmlsbGEgSlMgZXhhbXBsZS5cbiAqXG4gKiBAcGFyYW0ge29i
amVjdH0gZGF0YSBUaGUgb2JqZWN0IGNvbnRhaW5pbmcga2V5cyB5b3Ugd2FudCB0byBmaW5kIGlu
IHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgdG8gcmVwbGFjZS5cbiAqIEBy
ZXR1cm5zIHtzdHJpbmd9IEhUTUwgU3RyaW5nIG9mIGFuIDxsaT4gZWxlbWVudFxuICpcbiAqIEBl
eGFtcGxlXG4gKiB2aWV3LnNob3coe1xuICogIGlkOiAxLFxuICogIHRpdGxlOiBcIkhlbGxvIFdv
cmxkXCIsXG4gKiAgY29tcGxldGVkOiAwLFxuICogfSk7XG4gKi9cblRlbXBsYXRlLnByb3RvdHlw
ZS5zaG93ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdmFyIGksIGw7XG4gIHZhciB2aWV3ID0gJyc7
XG5cbiAgZm9yIChpID0gMCwgbCA9IGRhdGEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFy
IHRlbXBsYXRlID0gdGhpcy5kZWZhdWx0VGVtcGxhdGU7XG4gICAgdmFyIGNvbXBsZXRlZCA9ICcn
O1xuICAgIHZhciBjaGVja2VkID0gJyc7XG5cbiAgICBpZiAoZGF0YVtpXS5jb21wbGV0ZWQpIHtc
biAgICAgIGNvbXBsZXRlZCA9ICdjb21wbGV0ZWQnO1xuICAgICAgY2hlY2tlZCA9ICdjaGVja2Vk
JztcbiAgICB9XG5cbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2UoJ3t7aWR9fScsIGRh
dGFbaV0uaWQpO1xuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVwbGFjZSgne3t0aXRsZX19Jywg
ZXNjYXBlKGRhdGFbaV0udGl0bGUpKTtcbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJlcGxhY2Uo
J3t7Y29tcGxldGVkfX0nLCBjb21wbGV0ZWQpO1xuICAgIHRlbXBsYXRlID0gdGVtcGxhdGUucmVw
bGFjZSgne3tjaGVja2VkfX0nLCBjaGVja2VkKTtcblxuICAgIHZpZXcgPSB2aWV3ICsgdGVtcGxh
dGU7XG4gIH1cblxuICByZXR1cm4gdmlldztcbn07XG5cbi8qKlxuICogRGlzcGxheXMgYSBjb3Vu
dGVyIG9mIGhvdyBtYW55IHRvIGRvcyBhcmUgbGVmdCB0byBjb21wbGV0ZVxuICpcbiAqIEBwYXJh
bSB7bnVtYmVyfSBhY3RpdmVUb2RvcyBUaGUgbnVtYmVyIG9mIGFjdGl2ZSB0b2Rvcy5cbiAqIEBy
ZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0
ZS5wcm90b3R5cGUuaXRlbUNvdW50ZXIgPSBmdW5jdGlvbiAoYWN0aXZlVG9kb3MpIHtcbiAgdmFy
IHBsdXJhbCA9IGFjdGl2ZVRvZG9zID09PSAxID8gJycgOiAncyc7XG5cbiAgcmV0dXJuICc8c3Ry
b25nPicgKyBhY3RpdmVUb2RvcyArICc8L3N0cm9uZz4gaXRlbScgKyBwbHVyYWwgKyAnIGxlZnQn
O1xufTtcblxuLyoqXG4gKiBVcGRhdGVzIHRoZSB0ZXh0IHdpdGhpbiB0aGUgXCJDbGVhciBjb21w
bGV0ZWRcIiBidXR0b25cbiAqXG4gKiBAcGFyYW0gIHtbdHlwZV19IGNvbXBsZXRlZFRvZG9zIFRo
ZSBudW1iZXIgb2YgY29tcGxldGVkIHRvZG9zLlxuICogQHJldHVybnMge3N0cmluZ30gU3RyaW5n
IGNvbnRhaW5pbmcgdGhlIGNvdW50XG4gKi9cblRlbXBsYXRlLnByb3RvdHlwZS5jbGVhckNvbXBs
ZXRlZEJ1dHRvbiA9IGZ1bmN0aW9uIChjb21wbGV0ZWRUb2Rvcykge1xuICBpZiAoY29tcGxldGVk
VG9kb3MgPiAwKSB7XG4gICAgcmV0dXJuICdDbGVhciBjb21wbGV0ZWQnO1xuICB9IGVsc2Uge1xu
ICAgIHJldHVybiAnJztcbiAgfVxufTtcblxuLyoqKi8gfSxcbi8qIDggKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJp
Y3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxF
XzBfX3ZpZXdfXyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG4vKiBoYXJtb255IGltcG9ydCAq
LyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19jb250cm9sbGVyX18gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMl9fbW9kZWxfXyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG4vKiBoYXJt
b255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19zdG9yZV9fID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzRfX3RlbXBsYXRlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcp
O1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9f
aGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuLyogaGFybW9ueSBleHBvcnQg
Ki8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKGV4cG9ydHMsIFwiYVwiLCBmdW5jdGlvbigpIHsgcmV0
dXJuIHVwZGF0ZVRvZG87IH0pOy8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBnZXRUb2RvICovLyog
dW51c2VkIGhhcm1vbnkgZXhwb3J0IHN1YnNjcmliZSAqL1xuXG5cblxuXG5cblxuXG5cbnZhciB0
b2RvID0gdm9pZCAwO1xudmFyIHN1YnNjcmliZXJzID0gW107XG5cbi8qKlxuICogU2V0cyB1cCBh
IGJyYW5kIG5ldyBUb2RvIGxpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5h
bWUgb2YgeW91ciBuZXcgdG8gZG8gbGlzdC5cbiAqL1xuZnVuY3Rpb24gVG9kbyhuYW1lKSB7XG4g
IHRoaXMuc3RvcmFnZSA9IG5ldyBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX3N0b3JlX19b
XCJhXCIgLyogZGVmYXVsdCAqL10obmFtZSk7XG4gIHRoaXMubW9kZWwgPSBuZXcgX19XRUJQQUNL
X0lNUE9SVEVEX01PRFVMRV8yX19tb2RlbF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKHRoaXMuc3Rv
cmFnZSk7XG4gIHRoaXMudGVtcGxhdGUgPSBuZXcgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80
X190ZW1wbGF0ZV9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKCk7XG4gIHRoaXMudmlldyA9IG5ldyBf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX3ZpZXdfX1tcImFcIiAvKiBkZWZhdWx0ICovXSh0
aGlzLnRlbXBsYXRlKTtcbiAgdGhpcy5jb250cm9sbGVyID0gbmV3IF9fV0VCUEFDS19JTVBPUlRF
RF9NT0RVTEVfMV9fY29udHJvbGxlcl9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKHRoaXMubW9kZWws
IHRoaXMudmlldyk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRvZG8oKSB7XG4gIHRvZG8gPSBuZXcg
VG9kbygndG9kb3MtdmFuaWxsYWpzJyk7XG4gIHRvZG8uY29udHJvbGxlci5zZXRWaWV3KGRvY3Vt
ZW50LmxvY2F0aW9uLmhhc2gpO1xuICBzdWJzY3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7
XG4gICAgcmV0dXJuIHMoKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFRvZG8oKSB7XG4gIHJl
dHVybiB0b2RvO1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmUoY2IpIHtcbiAgc3Vic2NyaWJlcnMu
cHVzaChjYik7XG4gIHJldHVybiBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHtcbiAgICBfX3dlYnBh
Y2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X19oZWxwZXJzX19bXCJm
XCIgLyogcmVtb3ZlICovXSkoc3Vic2NyaWJlcnMsIGNiKTtcbiAgfTtcbn1cblxuLyoqKi8gfSxc
bi8qIDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dF
QlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfXyA9IF9fd2VicGFja19yZXF1aXJlX18o
MCk7XG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9w
ZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7
IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUg
PSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxl
ID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxl
ID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRl
c2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywg
c3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0
b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0
aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgp
O1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlm
ICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJy
b3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG4vKiBlc2xp
bnQgbm8taW52YWxpZC10aGlzOiAwLCBjb21wbGV4aXR5OlsyLCA5XSAqL1xuXG5cbi8qKlxuICog
VmlldyB0aGF0IGFic3RyYWN0cyBhd2F5IHRoZSBicm93c2VyJ3MgRE9NIGNvbXBsZXRlbHkuXG4g
KiBJdCBoYXMgdHdvIHNpbXBsZSBlbnRyeSBwb2ludHM6XG4gKlxuICogICAtIGJpbmQoZXZlbnRO
YW1lLCBoYW5kbGVyKVxuICogICAgIFRha2VzIGEgdG9kbyBhcHBsaWNhdGlvbiBldmVudCBhbmQg
cmVnaXN0ZXJzIHRoZSBoYW5kbGVyXG4gKiAgIC0gcmVuZGVyKGNvbW1hbmQsIHBhcmFtZXRlck9i
amVjdClcbiAqICAgICBSZW5kZXJzIHRoZSBnaXZlbiBjb21tYW5kIHdpdGggdGhlIG9wdGlvbnNc
biAqL1xuXG52YXIgVmlldyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVmlldyh0ZW1wbGF0
ZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBWaWV3KTtcblxuICAgIHRoaXMudGVtcGxh
dGUgPSB0ZW1wbGF0ZTtcblxuICAgIHRoaXMuRU5URVJfS0VZID0gMTM7XG4gICAgdGhpcy5FU0NB
UEVfS0VZID0gMjc7XG5cbiAgICB0aGlzLiR0b2RvTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18u
aShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10p
KCcudG9kby1saXN0Jyk7XG4gICAgdGhpcy4kdG9kb0l0ZW1Db3VudGVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8q
IHFzICovXSkoJy50b2RvLWNvdW50Jyk7XG4gICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19b
XCJhXCIgLyogcXMgKi9dKSgnLmNsZWFyLWNvbXBsZXRlZCcpO1xuICAgIHRoaXMuJG1haW4gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJz
X19bXCJhXCIgLyogcXMgKi9dKSgnLm1haW4nKTtcbiAgICB0aGlzLiRmb290ZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJh
XCIgLyogcXMgKi9dKSgnLmZvb3RlcicpO1xuICAgIHRoaXMuJHRvZ2dsZUFsbCA9IF9fd2VicGFj
a19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFc
IiAvKiBxcyAqL10pKCcudG9nZ2xlLWFsbCcpO1xuICAgIHRoaXMuJG5ld1RvZG8gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJh
XCIgLyogcXMgKi9dKSgnLm5ldy10b2RvJyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVmlldywg
W3tcbiAgICBrZXk6ICdfcmVtb3ZlSXRlbScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZW1vdmVJ
dGVtKGlkKSB7XG4gICAgICB2YXIgZWxlbSA9IF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdbZGF0YS1p
ZD1cIicgKyBpZCArICdcIl0nKTtcblxuICAgICAgaWYgKGVsZW0pIHtcbiAgICAgICAgdGhpcy4k
dG9kb0xpc3QucmVtb3ZlQ2hpbGQoZWxlbSk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAg
a2V5OiAnX2NsZWFyQ29tcGxldGVkQnV0dG9uJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2NsZWFy
Q29tcGxldGVkQnV0dG9uKGNvbXBsZXRlZENvdW50LCB2aXNpYmxlKSB7XG4gICAgICB0aGlzLiRj
bGVhckNvbXBsZXRlZC5pbm5lckhUTUwgPSB0aGlzLnRlbXBsYXRlLmNsZWFyQ29tcGxldGVkQnV0
dG9uKGNvbXBsZXRlZENvdW50KTtcbiAgICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLnN0eWxlLmRp
c3BsYXkgPSB2aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICB9XG4gIH0sIHtcbiAgICBr
ZXk6ICdfZWRpdEl0ZW1Eb25lJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2VkaXRJdGVtRG9uZShp
ZCwgdGl0bGUpIHtcbiAgICAgIHZhciBsaXN0SXRlbSA9IF9fd2VicGFja19yZXF1aXJlX18uaShf
X1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBxcyAqL10pKCdb
ZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKTtcblxuICAgICAgaWYgKCFsaXN0SXRlbSkge1xuICAg
ICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBpbnB1dCA9IF9fd2VicGFja19yZXF1
aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImFcIiAvKiBx
cyAqL10pKCdpbnB1dC5lZGl0JywgbGlzdEl0ZW0pO1xuICAgICAgbGlzdEl0ZW0ucmVtb3ZlQ2hp
bGQoaW5wdXQpO1xuXG4gICAgICBsaXN0SXRlbS5jbGFzc05hbWUgPSBsaXN0SXRlbS5jbGFzc05h
bWUucmVwbGFjZSgnZWRpdGluZycsICcnKTtcblxuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5p
KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYlwiIC8qIHFzYSAqL10p
KCdsYWJlbCcsIGxpc3RJdGVtKS5mb3JFYWNoKGZ1bmN0aW9uIChsYWJlbCkge1xuICAgICAgICBs
YWJlbC50ZXh0Q29udGVudCA9IHRpdGxlO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAg
a2V5OiAncmVuZGVyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKHZpZXdDbWQsIHBhcmFt
ZXRlcikge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgdmFyIHZpZXdDb21tYW5kcyA9
IHtcbiAgICAgICAgc2hvd0VudHJpZXM6IGZ1bmN0aW9uIHNob3dFbnRyaWVzKCkge1xuICAgICAg
ICAgIHRoYXQuJHRvZG9MaXN0LmlubmVySFRNTCA9IHRoYXQudGVtcGxhdGUuc2hvdyhwYXJhbWV0
ZXIpO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmVJdGVtOiBmdW5jdGlvbiByZW1vdmVJdGVt
KCkge1xuICAgICAgICAgIHRoYXQuX3JlbW92ZUl0ZW0ocGFyYW1ldGVyKTtcbiAgICAgICAgfSxc
biAgICAgICAgdXBkYXRlRWxlbWVudENvdW50OiBmdW5jdGlvbiB1cGRhdGVFbGVtZW50Q291bnQo
KSB7XG4gICAgICAgICAgdGhhdC4kdG9kb0l0ZW1Db3VudGVyLmlubmVySFRNTCA9IHRoYXQudGVt
cGxhdGUuaXRlbUNvdW50ZXIocGFyYW1ldGVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgY2xlYXJD
b21wbGV0ZWRCdXR0b246IGZ1bmN0aW9uIGNsZWFyQ29tcGxldGVkQnV0dG9uKCkge1xuICAgICAg
ICAgIHRoYXQuX2NsZWFyQ29tcGxldGVkQnV0dG9uKHBhcmFtZXRlci5jb21wbGV0ZWQsIHBhcmFt
ZXRlci52aXNpYmxlKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29udGVudEJsb2NrVmlzaWJpbGl0
eTogZnVuY3Rpb24gY29udGVudEJsb2NrVmlzaWJpbGl0eSgpIHtcbiAgICAgICAgICB0aGF0LiRt
YWluLnN0eWxlLmRpc3BsYXkgPSB0aGF0LiRmb290ZXIuc3R5bGUuZGlzcGxheSA9IHBhcmFtZXRl
ci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJztcbiAgICAgICAgfSxcbiAgICAgICAgdG9nZ2xl
QWxsOiBmdW5jdGlvbiB0b2dnbGVBbGwoKSB7XG4gICAgICAgICAgdGhhdC4kdG9nZ2xlQWxsLmNo
ZWNrZWQgPSBwYXJhbWV0ZXIuY2hlY2tlZDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0RmlsdGVy
OiBmdW5jdGlvbiBzZXRGaWx0ZXIoKSB7XG4gICAgICAgICAgX3NldEZpbHRlcihwYXJhbWV0ZXIp
O1xuICAgICAgICB9LFxuICAgICAgICBjbGVhck5ld1RvZG86IGZ1bmN0aW9uIGNsZWFyTmV3VG9k
bygpIHtcbiAgICAgICAgICB0aGF0LiRuZXdUb2RvLnZhbHVlID0gJyc7XG4gICAgICAgIH0sXG4g
ICAgICAgIGVsZW1lbnRDb21wbGV0ZTogZnVuY3Rpb24gZWxlbWVudENvbXBsZXRlKCkge1xuICAg
ICAgICAgIF9lbGVtZW50Q29tcGxldGUocGFyYW1ldGVyLmlkLCBwYXJhbWV0ZXIuY29tcGxldGVk
KTtcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdEl0ZW06IGZ1bmN0aW9uIGVkaXRJdGVtKCkge1xu
ICAgICAgICAgIF9lZGl0SXRlbShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSk7XG4gICAg
ICAgIH0sXG4gICAgICAgIGVkaXRJdGVtRG9uZTogZnVuY3Rpb24gZWRpdEl0ZW1Eb25lKCkge1xu
ICAgICAgICAgIHRoYXQuX2VkaXRJdGVtRG9uZShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRs
ZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZpZXdDb21tYW5kc1t2aWV3Q21kXSgp
O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ19iaW5kSXRlbUVkaXREb25lJyxcbiAgICB2YWx1
ZTogZnVuY3Rpb24gX2JpbmRJdGVtRWRpdERvbmUoaGFuZGxlcikge1xuICAgICAgdmFyIHRoYXQg
PSB0aGlzO1xuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9N
T0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0
LCAnbGkgLmVkaXQnLCAnYmx1cicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRh
dGFzZXQuaXNjYW5jZWxlZCkge1xuICAgICAgICAgIGhhbmRsZXIoe1xuICAgICAgICAgICAgaWQ6
IF9pdGVtSWQodGhpcyksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy52YWx1ZVxuICAgICAgICAg
IH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5p
KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0
ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5cHJlc3MnLCBmdW5jdGlvbiAo
ZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHRoYXQuRU5URVJfS0VZKSB7
XG4gICAgICAgICAgLy8gUmVtb3ZlIHRoZSBjdXJzb3IgZnJvbSB0aGUgaW5wdXQgd2hlbiB5b3Ug
aGl0IGVudGVyIGp1c3QgbGlrZSBpZiBpdFxuICAgICAgICAgIC8vIHdlcmUgYSByZWFsIGZvcm1c
biAgICAgICAgICB0aGlzLmJsdXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9
LCB7XG4gICAga2V5OiAnX2JpbmRJdGVtRWRpdENhbmNlbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9u
IF9iaW5kSXRlbUVkaXRDYW5jZWwoaGFuZGxlcikge1xuICAgICAgdmFyIHRoYXQgPSB0aGlzO1xu
ICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9f
aGVscGVyc19fW1wiY1wiIC8qICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVk
aXQnLCAna2V5dXAnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNv
ZGUgPT09IHRoYXQuRVNDQVBFX0tFWSkge1xuICAgICAgICAgIHRoaXMuZGF0YXNldC5pc2NhbmNl
bGVkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmJsdXIoKTtcblxuICAgICAgICAgIGhhbmRsZXIo
eyBpZDogX2l0ZW1JZCh0aGlzKSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9
LCB7XG4gICAga2V5OiAnYmluZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGJpbmQoZXZlbnQsIGhh
bmRsZXIpIHtcbiAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgIGlmIChldmVudCA9PT0gJ25l
d1RvZG8nKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JU
RURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0LiRuZXdUb2RvLCAn
Y2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGhhbmRsZXIodGhhdC4kbmV3VG9kby52
YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ3JlbW92ZUNv
bXBsZXRlZCcpIHtcbiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBP
UlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHRoYXQuJGNsZWFyQ29t
cGxldGVkLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGFuZGxlcigpO1xuICAg
ICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICd0b2dnbGVBbGwnKSB7XG4gICAg
ICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hl
bHBlcnNfX1tcImRcIiAvKiAkb24gKi9dKSh0aGF0LiR0b2dnbGVBbGwsICdjbGljaycsIGZ1bmN0
aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHsgY29tcGxldGVkOiB0aGlzLmNoZWNrZWQgfSk7
XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Jykge1xu
ICAgICAgICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8w
X19oZWxwZXJzX19bXCJjXCIgLyogJGRlbGVnYXRlICovXSkodGhhdC4kdG9kb0xpc3QsICdsaSBs
YWJlbCcsICdkYmxjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHsgaWQ6
IF9pdGVtSWQodGhpcykgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChldmVudCA9
PT0gJ2l0ZW1SZW1vdmUnKSB7XG4gICAgICAgIF9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBB
Q0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNfX1tcImNcIiAvKiAkZGVsZWdhdGUgKi9dKSh0
aGF0LiR0b2RvTGlzdCwgJy5kZXN0cm95JywgJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAg
ICAgIGhhbmRsZXIoeyBpZDogX2l0ZW1JZCh0aGlzKSB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9
IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbVRvZ2dsZScpIHtcbiAgICAgICAgX193ZWJwYWNrX3Jl
cXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiY1wiIC8q
ICRkZWxlZ2F0ZSAqL10pKHRoYXQuJHRvZG9MaXN0LCAnLnRvZ2dsZScsICdjbGljaycsIGZ1bmN0
aW9uICgpIHtcbiAgICAgICAgICBoYW5kbGVyKHtcbiAgICAgICAgICAgIGlkOiBfaXRlbUlkKHRo
aXMpLFxuICAgICAgICAgICAgY29tcGxldGVkOiB0aGlzLmNoZWNrZWRcbiAgICAgICAgICB9KTtc
biAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXREb25lJykg
e1xuICAgICAgICB0aGF0Ll9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpO1xuICAgICAgfSBlbHNl
IGlmIChldmVudCA9PT0gJ2l0ZW1FZGl0Q2FuY2VsJykge1xuICAgICAgICB0aGF0Ll9iaW5kSXRl
bUVkaXRDYW5jZWwoaGFuZGxlcik7XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJu
IFZpZXc7XG59KCk7XG5cbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gZXhwb3J0c1tcImFc
Il0gPSBWaWV3O1xuXG5cbmZ1bmN0aW9uIF9zZXRGaWx0ZXIoY3VycmVudFBhZ2UpIHtcbiAgX193
ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19f
W1wiYVwiIC8qIHFzICovXSkoJy5maWx0ZXJzIC5zZWxlY3RlZCcpLmNsYXNzTmFtZSA9ICcnO1xu
ICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxw
ZXJzX19bXCJhXCIgLyogcXMgKi9dKSgnLmZpbHRlcnMgW2hyZWY9XCIjLycgKyBjdXJyZW50UGFn
ZSArICdcIl0nKS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnO1xufVxuXG5mdW5jdGlvbiBfZWxlbWVu
dENvbXBsZXRlKGlkLCBjb21wbGV0ZWQpIHtcbiAgdmFyIGxpc3RJdGVtID0gX193ZWJwYWNrX3Jl
cXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9faGVscGVyc19fW1wiYVwiIC8q
IHFzICovXSkoJ1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpO1xuXG4gIGlmICghbGlzdEl0ZW0p
IHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsaXN0SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQg
PyAnY29tcGxldGVkJyA6ICcnO1xuXG4gIC8vIEluIGNhc2UgaXQgd2FzIHRvZ2dsZWQgZnJvbSBh
biBldmVudCBhbmQgbm90IGJ5IGNsaWNraW5nIHRoZSBjaGVja2JveFxuICBfX3dlYnBhY2tfcmVx
dWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIgLyog
cXMgKi9dKSgnaW5wdXQnLCBsaXN0SXRlbSkuY2hlY2tlZCA9IGNvbXBsZXRlZDtcbn1cblxuZnVu
Y3Rpb24gX2VkaXRJdGVtKGlkLCB0aXRsZSkge1xuICB2YXIgbGlzdEl0ZW0gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19oZWxwZXJzX19bXCJhXCIg
LyogcXMgKi9dKSgnW2RhdGEtaWQ9XCInICsgaWQgKyAnXCJdJyk7XG5cbiAgaWYgKCFsaXN0SXRl
bSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVt
LmNsYXNzTmFtZSArICcgZWRpdGluZyc7XG5cbiAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaW5wdXQnKTtcbiAgaW5wdXQuY2xhc3NOYW1lID0gJ2VkaXQnO1xuXG4gIGxpc3RJ
dGVtLmFwcGVuZENoaWxkKGlucHV0KTtcbiAgaW5wdXQuZm9jdXMoKTtcbiAgaW5wdXQudmFsdWUg
PSB0aXRsZTtcbn1cblxuZnVuY3Rpb24gX2l0ZW1JZChlbGVtZW50KSB7XG4gIHZhciBsaSA9IF9f
d2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2hlbHBlcnNf
X1tcImVcIiAvKiAkcGFyZW50ICovXSkoZWxlbWVudCwgJ2xpJyk7XG4gIHJldHVybiBwYXJzZUlu
dChsaS5kYXRhc2V0LmlkLCAxMCk7XG59XG5cbi8qKiovIH0sXG4vKiAxMCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdl
YnBhY2stcGx1Z2luXG5cbi8qKiovIH0sXG4vKiAxMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyog
aGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYXBwX18g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faGVscGVyc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygw
KTtcbi8qIGVzbGludCBuby1jb25zb2xlOjAgKi9cblxuXG5cbi8vIHRoaXMgaXMgb25seSByZWxl
dmFudCB3aGVuIHVzaW5nIGBob3RgIG1vZGUgd2l0aCB3ZWJwYWNrXG4vLyBzcGVjaWFsIHRoYW5r
cyB0byBFcmljIENsZW1tb25zOiBodHRwczovL2dpdGh1Yi5jb20vZXJpY2NsZW1tb25zL3dlYnBh
Y2staG90LXNlcnZlci1leGFtcGxlXG52YXIgcmVsb2FkaW5nID0gZG9jdW1lbnQucmVhZHlTdGF0
ZSA9PT0gJ2NvbXBsZXRlJztcbmlmIChmYWxzZSkge1xuICBtb2R1bGUuaG90LmFjY2VwdChmdW5j
dGlvbiAoZXJyKSB7fSk7XG4gIGlmIChyZWxvYWRpbmcpIHtcbiAgICBvbkxvYWQoKTtcbiAgfSBl
bHNlIHtcbiAgICBib290c3RyYXAoKTtcbiAgfVxufSBlbHNlIHtcbiAgYm9vdHN0cmFwKCk7XG59
XG5cbmZ1bmN0aW9uIGJvb3RzdHJhcCgpIHtcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VC
UEFDS19JTVBPUlRFRF9NT0RVTEVfMV9faGVscGVyc19fW1wiZFwiIC8qICRvbiAqL10pKHdpbmRv
dywgJ2xvYWQnLCBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX2FwcF9fW1wiYVwiIC8qIG9u
TG9hZCAqL10pO1xuICBfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01P
RFVMRV8xX19oZWxwZXJzX19bXCJkXCIgLyogJG9uICovXSkod2luZG93LCAnaGFzaGNoYW5nZScs
IF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fYXBwX19bXCJhXCIgLyogb25Mb2FkICovXSk7
XG59XG5cbi8qKiovIH1cbl0sWzExXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1
bmRsZS5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuanMiLCJleHBvcnQge3FzLCBxc2EsICRvbiwg
JGRlbGVnYXRlLCAkcGFyZW50LCByZW1vdmV9XG5cbi8vIEdldCBlbGVtZW50KHMpIGJ5IENTUyBz
ZWxlY3RvcjpcbmZ1bmN0aW9uIHFzKHNlbGVjdG9yLCBzY29wZSkge1xuICByZXR1cm4gKHNjb3Bl
IHx8IGRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKVxufVxuXG5mdW5jdGlvbiBxc2Eo
c2VsZWN0b3IsIHNjb3BlKSB7XG4gIHJldHVybiAoc2NvcGUgfHwgZG9jdW1lbnQpLnF1ZXJ5U2Vs
ZWN0b3JBbGwoc2VsZWN0b3IpXG59XG5cbi8vIGFkZEV2ZW50TGlzdGVuZXIgd3JhcHBlcjpcbmZ1
bmN0aW9uICRvbih0YXJnZXQsIHR5cGUsIGNhbGxiYWNrLCB1c2VDYXB0dXJlKSB7XG4gIHRhcmdl
dC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGNhbGxiYWNrLCAhIXVzZUNhcHR1cmUpXG59XG5cbi8v
IEF0dGFjaCBhIGhhbmRsZXIgdG8gZXZlbnQgZm9yIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoIHRo
ZSBzZWxlY3Rvcixcbi8vIG5vdyBvciBpbiB0aGUgZnV0dXJlLCBiYXNlZCBvbiBhIHJvb3QgZWxl
bWVudFxuZnVuY3Rpb24gJGRlbGVnYXRlKHRhcmdldCwgc2VsZWN0b3IsIHR5cGUsIGhhbmRsZXIp
IHtcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvRXZl
bnRzL2JsdXJcbiAgdmFyIHVzZUNhcHR1cmUgPSB0eXBlID09PSAnYmx1cicgfHwgdHlwZSA9PT0g
J2ZvY3VzJ1xuICAkb24odGFyZ2V0LCB0eXBlLCBkaXNwYXRjaEV2ZW50LCB1c2VDYXB0dXJlKVxu
XG4gIGZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHtcbiAgICB2YXIgdGFyZ2V0RWxlbWVu
dCA9IGV2ZW50LnRhcmdldFxuICAgIHZhciBwb3RlbnRpYWxFbGVtZW50cyA9IHFzYShzZWxlY3Rv
ciwgdGFyZ2V0KVxuICAgIHZhciBoYXNNYXRjaCA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNh
bGwocG90ZW50aWFsRWxlbWVudHMsIHRhcmdldEVsZW1lbnQpID49IDBcblxuICAgIGlmIChoYXNN
YXRjaCkge1xuICAgICAgaGFuZGxlci5jYWxsKHRhcmdldEVsZW1lbnQsIGV2ZW50KVxuICAgIH1c
biAgfVxufVxuXG4vLyBGaW5kIHRoZSBlbGVtZW50J3MgcGFyZW50IHdpdGggdGhlIGdpdmVuIHRh
ZyBuYW1lOlxuLy8gJHBhcmVudChxcygnYScpLCAnZGl2Jyk7XG5mdW5jdGlvbiAkcGFyZW50KGVs
ZW1lbnQsIHRhZ05hbWUpIHtcbiAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1
cm4gdW5kZWZpbmVkXG4gIH1cbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZS50YWdOYW1lLnRvTG93
ZXJDYXNlKCkgPT09IHRhZ05hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgIHJldHVybiBlbGVtZW50
LnBhcmVudE5vZGVcbiAgfVxuICByZXR1cm4gJHBhcmVudChlbGVtZW50LnBhcmVudE5vZGUsIHRh
Z05hbWUpXG59XG5cbi8vIHJlbW92ZXMgYW4gZWxlbWVudCBmcm9tIGFuIGFycmF5XG4vLyBjb25z
dCB4ID0gWzEsMiwzXVxuLy8gcmVtb3ZlKHgsIDIpXG4vLyB4IH49PSBbMSwzXVxuZnVuY3Rpb24g
cmVtb3ZlKGFycmF5LCB0aGluZykge1xuICBjb25zdCBpbmRleCA9IGFycmF5LmluZGV4T2YodGhp
bmcpXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gYXJyYXlcbiAgfVxuICBhcnJh
eS5zcGxpY2UoaW5kZXgsIDEpXG59XG5cbi8vIEFsbG93IGZvciBsb29waW5nIG9uIG5vZGVzIGJ5
IGNoYWluaW5nOlxuLy8gcXNhKCcuZm9vJykuZm9yRWFjaChmdW5jdGlvbiAoKSB7fSlcbk5vZGVM
aXN0LnByb3RvdHlwZS5mb3JFYWNoID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2hcblxuXG5cbi8v
IFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2hlbHBlcnMuanMiLCJpbXBvcnQgJ3RvZG9tdmMtYXBw
LWNzcy9pbmRleC5jc3MnXG5pbXBvcnQgJy4vYXBwLmNzcydcblxuaW1wb3J0IHskb259IGZyb20g
Jy4vaGVscGVycydcbmltcG9ydCB7dXBkYXRlVG9kb30gZnJvbSAnLi90b2RvJ1xuXG5leHBvcnQg
ZnVuY3Rpb24gb25Mb2FkKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9wcmVmZXIt
ZGVmYXVsdC1leHBvcnRcbiAgdXBkYXRlVG9kbygpXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RF
UiAvL1xuLy8gLi9hcHAuanMiLCJleHBvcnQgZGVmYXVsdCBDb250cm9sbGVyXG5cbi8qKlxuKiBU
YWtlcyBhIG1vZGVsIGFuZCB2aWV3IGFuZCBhY3RzIGFzIHRoZSBjb250cm9sbGVyIGJldHdlZW4g
dGhlbVxuKlxuKiBAY29uc3RydWN0b3JcbiogQHBhcmFtIHtvYmplY3R9IG1vZGVsIFRoZSBtb2Rl
bCBpbnN0YW5jZVxuKiBAcGFyYW0ge29iamVjdH0gdmlldyBUaGUgdmlldyBpbnN0YW5jZVxuKi9c
bmZ1bmN0aW9uIENvbnRyb2xsZXIobW9kZWwsIHZpZXcpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4g
IHRoYXQubW9kZWwgPSBtb2RlbFxuICB0aGF0LnZpZXcgPSB2aWV3XG5cbiAgdGhhdC52aWV3LmJp
bmQoJ25ld1RvZG8nLCBmdW5jdGlvbih0aXRsZSkge1xuICAgIHRoYXQuYWRkSXRlbSh0aXRsZSlc
biAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXQnLCBmdW5jdGlvbihpdGVtKSB7XG4g
ICAgdGhhdC5lZGl0SXRlbShpdGVtLmlkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVt
RWRpdERvbmUnLCBmdW5jdGlvbihpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbVNhdmUoaXRlbS5p
ZCwgaXRlbS50aXRsZSlcbiAgfSlcblxuICB0aGF0LnZpZXcuYmluZCgnaXRlbUVkaXRDYW5jZWwn
LCBmdW5jdGlvbihpdGVtKSB7XG4gICAgdGhhdC5lZGl0SXRlbUNhbmNlbChpdGVtLmlkKVxuICB9
KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVtUmVtb3ZlJywgZnVuY3Rpb24oaXRlbSkge1xuICAg
IHRoYXQucmVtb3ZlSXRlbShpdGVtLmlkKVxuICB9KVxuXG4gIHRoYXQudmlldy5iaW5kKCdpdGVt
VG9nZ2xlJywgZnVuY3Rpb24oaXRlbSkge1xuICAgIHRoYXQudG9nZ2xlQ29tcGxldGUoaXRlbS5p
ZCwgaXRlbS5jb21wbGV0ZWQpXG4gIH0pXG5cbiAgdGhhdC52aWV3LmJpbmQoJ3JlbW92ZUNvbXBs
ZXRlZCcsIGZ1bmN0aW9uKCkge1xuICAgIHRoYXQucmVtb3ZlQ29tcGxldGVkSXRlbXMoKVxuICB9
KVxuXG4gIHRoYXQudmlldy5iaW5kKCd0b2dnbGVBbGwnLCBmdW5jdGlvbihzdGF0dXMpIHtcbiAg
ICB0aGF0LnRvZ2dsZUFsbChzdGF0dXMuY29tcGxldGVkKVxuICB9KVxufVxuXG4vKipcbiogTG9h
ZHMgYW5kIGluaXRpYWxpc2VzIHRoZSB2aWV3XG4qXG4qIEBwYXJhbSB7c3RyaW5nfSAnJyB8ICdh
Y3RpdmUnIHwgJ2NvbXBsZXRlZCdcbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5zZXRWaWV3ID0g
ZnVuY3Rpb24obG9jYXRpb25IYXNoKSB7XG4gIHZhciByb3V0ZSA9IGxvY2F0aW9uSGFzaC5zcGxp
dCgnLycpWzFdXG4gIHZhciBwYWdlID0gcm91dGUgfHwgJydcbiAgdGhpcy5fdXBkYXRlRmlsdGVy
U3RhdGUocGFnZSlcbn1cblxuLyoqXG4qIEFuIGV2ZW50IHRvIGZpcmUgb24gbG9hZC4gV2lsbCBn
ZXQgYWxsIGl0ZW1zIGFuZCBkaXNwbGF5IHRoZW0gaW4gdGhlXG4qIHRvZG8tbGlzdFxuKi9cbkNv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dBbGwgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRoYXQgPSB0
aGlzXG4gIHRoYXQubW9kZWwucmVhZChmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52aWV3LnJl
bmRlcignc2hvd0VudHJpZXMnLCBkYXRhKVxuICB9KVxufVxuXG4vKipcbiogUmVuZGVycyBhbGwg
YWN0aXZlIHRhc2tzXG4qL1xuQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0FjdGl2ZSA9IGZ1bmN0
aW9uKCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKHtjb21wbGV0ZWQ6
IGZhbHNlfSwgZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRy
aWVzJywgZGF0YSlcbiAgfSlcbn1cblxuLyoqXG4qIFJlbmRlcnMgYWxsIGNvbXBsZXRlZCB0YXNr
c1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnNob3dDb21wbGV0ZWQgPSBmdW5jdGlvbigpIHtc
biAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiB0cnVlfSwg
ZnVuY3Rpb24oZGF0YSkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3Nob3dFbnRyaWVzJywgZGF0
YSlcbiAgfSlcbn1cblxuLyoqXG4qIEFuIGV2ZW50IHRvIGZpcmUgd2hlbmV2ZXIgeW91IHdhbnQg
dG8gYWRkIGFuIGl0ZW0uIFNpbXBseSBwYXNzIGluIHRoZSBldmVudFxuKiBvYmplY3QgYW5kIGl0
J2xsIGhhbmRsZSB0aGUgRE9NIGluc2VydGlvbiBhbmQgc2F2aW5nIG9mIHRoZSBuZXcgaXRlbS5c
biovXG5Db250cm9sbGVyLnByb3RvdHlwZS5hZGRJdGVtID0gZnVuY3Rpb24odGl0bGUpIHtcbiAg
dmFyIHRoYXQgPSB0aGlzXG5cbiAgaWYgKHRpdGxlLnRyaW0oKSA9PT0gJycpIHtcbiAgICByZXR1
cm5cbiAgfVxuXG4gIHRoYXQubW9kZWwuY3JlYXRlKHRpdGxlLCBmdW5jdGlvbigpIHtcbiAgICB0
aGF0LnZpZXcucmVuZGVyKCdjbGVhck5ld1RvZG8nKVxuICAgIHRoYXQuX2ZpbHRlcih0cnVlKVxu
ICB9KVxufVxuXG4vKlxuKiBUcmlnZ2VycyB0aGUgaXRlbSBlZGl0aW5nIG1vZGUuXG4qL1xuQ29u
dHJvbGxlci5wcm90b3R5cGUuZWRpdEl0ZW0gPSBmdW5jdGlvbihpZCkge1xuICB2YXIgdGhhdCA9
IHRoaXNcbiAgdGhhdC5tb2RlbC5yZWFkKGlkLCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhhdC52
aWV3LnJlbmRlcignZWRpdEl0ZW0nLCB7aWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlfSlcbiAgfSlc
bn1cblxuLypcbiogRmluaXNoZXMgdGhlIGl0ZW0gZWRpdGluZyBtb2RlIHN1Y2Nlc3NmdWxseS5c
biovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbVNhdmUgPSBmdW5jdGlvbihpZCwgdGl0
bGUpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIGlmICh0aXRsZS50cmltKCkpIHtcbiAgICB0aGF0
Lm1vZGVsLnVwZGF0ZShpZCwge3RpdGxlfSwgZnVuY3Rpb24oKSB7XG4gICAgICB0aGF0LnZpZXcu
cmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7aWQsIHRpdGxlfSlcbiAgICB9KVxuICB9IGVsc2Uge1xu
ICAgIHRoYXQucmVtb3ZlSXRlbShpZClcbiAgfVxufVxuXG4vKlxuKiBDYW5jZWxzIHRoZSBpdGVt
IGVkaXRpbmcgbW9kZS5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS5lZGl0SXRlbUNhbmNlbCA9
IGZ1bmN0aW9uKGlkKSB7XG4gIHZhciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnJlYWQoaWQs
IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICB0aGF0LnZpZXcucmVuZGVyKCdlZGl0SXRlbURvbmUnLCB7
aWQsIHRpdGxlOiBkYXRhWzBdLnRpdGxlfSlcbiAgfSlcbn1cblxuLyoqXG4qIEJ5IGdpdmluZyBp
dCBhbiBJRCBpdCdsbCBmaW5kIHRoZSBET00gZWxlbWVudCBtYXRjaGluZyB0aGF0IElELFxuKiBy
ZW1vdmUgaXQgZnJvbSB0aGUgRE9NIGFuZCBhbHNvIHJlbW92ZSBpdCBmcm9tIHN0b3JhZ2UuXG4q
XG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlIGZyb20g
dGhlIERPTSBhbmRcbiogc3RvcmFnZVxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLnJlbW92ZUl0
ZW0gPSBmdW5jdGlvbihpZCkge1xuICB2YXIgdGhhdCA9IHRoaXNcbiAgdGhhdC5tb2RlbC5yZW1v
dmUoaWQsIGZ1bmN0aW9uKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ3JlbW92ZUl0ZW0nLCBp
ZClcbiAgfSlcblxuICB0aGF0Ll9maWx0ZXIoKVxufVxuXG4vKipcbiogV2lsbCByZW1vdmUgYWxs
IGNvbXBsZXRlZCBpdGVtcyBmcm9tIHRoZSBET00gYW5kIHN0b3JhZ2UuXG4qL1xuQ29udHJvbGxl
ci5wcm90b3R5cGUucmVtb3ZlQ29tcGxldGVkSXRlbXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRo
YXQgPSB0aGlzXG4gIHRoYXQubW9kZWwucmVhZCh7Y29tcGxldGVkOiB0cnVlfSwgZnVuY3Rpb24o
ZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICB0aGF0LnJl
bW92ZUl0ZW0oaXRlbS5pZClcbiAgICB9KVxuICB9KVxuXG4gIHRoYXQuX2ZpbHRlcigpXG59XG5c
bi8qKlxuKiBHaXZlIGl0IGFuIElEIG9mIGEgbW9kZWwgYW5kIGEgY2hlY2tib3ggYW5kIGl0IHdp
bGwgdXBkYXRlIHRoZSBpdGVtXG4qIGluIHN0b3JhZ2UgYmFzZWQgb24gdGhlIGNoZWNrYm94J3Mg
c3RhdGUuXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBpZCBUaGUgSUQgb2YgdGhlIGVsZW1lbnQgdG8g
Y29tcGxldGUgb3IgdW5jb21wbGV0ZVxuKiBAcGFyYW0ge29iamVjdH0gY2hlY2tib3ggVGhlIGNo
ZWNrYm94IHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiBjb21wbGV0ZVxuKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3Igbm90XG4qIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IHNpbGVudCBQcmV2
ZW50IHJlLWZpbHRlcmluZyB0aGUgdG9kbyBpdGVtc1xuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBl
LnRvZ2dsZUNvbXBsZXRlID0gZnVuY3Rpb24oaWQsIGNvbXBsZXRlZCwgc2lsZW50KSB7XG4gIHZh
ciB0aGF0ID0gdGhpc1xuICB0aGF0Lm1vZGVsLnVwZGF0ZShpZCwge2NvbXBsZXRlZH0sIGZ1bmN0
aW9uKCkge1xuICAgIHRoYXQudmlldy5yZW5kZXIoJ2VsZW1lbnRDb21wbGV0ZScsIHtcbiAgICAg
IGlkLFxuICAgICAgY29tcGxldGVkLFxuICAgIH0pXG4gIH0pXG5cbiAgaWYgKCFzaWxlbnQpIHtc
biAgICB0aGF0Ll9maWx0ZXIoKVxuICB9XG59XG5cbi8qKlxuKiBXaWxsIHRvZ2dsZSBBTEwgY2hl
Y2tib3hlcycgb24vb2ZmIHN0YXRlIGFuZCBjb21wbGV0ZW5lc3Mgb2YgbW9kZWxzLlxuKiBKdXN0
IHBhc3MgaW4gdGhlIGV2ZW50IG9iamVjdC5cbiovXG5Db250cm9sbGVyLnByb3RvdHlwZS50b2dn
bGVBbGwgPSBmdW5jdGlvbihjb21wbGV0ZWQpIHtcbiAgdmFyIHRoYXQgPSB0aGlzXG4gIHRoYXQu
bW9kZWwucmVhZCh7Y29tcGxldGVkOiAhY29tcGxldGVkfSwgZnVuY3Rpb24oZGF0YSkge1xuICAg
IGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICB0aGF0LnRvZ2dsZUNvbXBsZXRl
KGl0ZW0uaWQsIGNvbXBsZXRlZCwgdHJ1ZSlcbiAgICB9KVxuICB9KVxuXG4gIHRoYXQuX2ZpbHRl
cigpXG59XG5cbi8qKlxuKiBVcGRhdGVzIHRoZSBwaWVjZXMgb2YgdGhlIHBhZ2Ugd2hpY2ggY2hh
bmdlIGRlcGVuZGluZyBvbiB0aGUgcmVtYWluaW5nXG4qIG51bWJlciBvZiB0b2Rvcy5cbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHRo
YXQgPSB0aGlzXG4gIHRoYXQubW9kZWwuZ2V0Q291bnQoZnVuY3Rpb24odG9kb3MpIHtcbiAgICB0
aGF0LnZpZXcucmVuZGVyKCd1cGRhdGVFbGVtZW50Q291bnQnLCB0b2Rvcy5hY3RpdmUpXG4gICAg
dGhhdC52aWV3LnJlbmRlcignY2xlYXJDb21wbGV0ZWRCdXR0b24nLCB7XG4gICAgICBjb21wbGV0
ZWQ6IHRvZG9zLmNvbXBsZXRlZCxcbiAgICAgIHZpc2libGU6IHRvZG9zLmNvbXBsZXRlZCA+IDBc
biAgICB9KVxuXG4gICAgdGhhdC52aWV3LnJlbmRlcigndG9nZ2xlQWxsJywge2NoZWNrZWQ6IHRv
ZG9zLmNvbXBsZXRlZCA9PT0gdG9kb3MudG90YWx9KVxuICAgIHRoYXQudmlldy5yZW5kZXIoJ2Nv
bnRlbnRCbG9ja1Zpc2liaWxpdHknLCB7dmlzaWJsZTogdG9kb3MudG90YWwgPiAwfSlcbiAgfSlc
bn1cblxuLyoqXG4qIFJlLWZpbHRlcnMgdGhlIHRvZG8gaXRlbXMsIGJhc2VkIG9uIHRoZSBhY3Rp
dmUgcm91dGUuXG4qIEBwYXJhbSB7Ym9vbGVhbnx1bmRlZmluZWR9IGZvcmNlICBmb3JjZXMgYSBy
ZS1wYWludGluZyBvZiB0b2RvIGl0ZW1zLlxuKi9cbkNvbnRyb2xsZXIucHJvdG90eXBlLl9maWx0
ZXIgPSBmdW5jdGlvbihmb3JjZSkge1xuICB2YXIgYWN0aXZlUm91dGUgPSB0aGlzLl9hY3RpdmVS
b3V0ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRoaXMuX2FjdGl2ZVJvdXRlLnN1YnN0cigx
KVxuXG4gIC8vIFVwZGF0ZSB0aGUgZWxlbWVudHMgb24gdGhlIHBhZ2UsIHdoaWNoIGNoYW5nZSB3
aXRoIGVhY2ggY29tcGxldGVkIHRvZG9cbiAgdGhpcy5fdXBkYXRlQ291bnQoKVxuXG4gIC8vIElm
IHRoZSBsYXN0IGFjdGl2ZSByb3V0ZSBpc24ndCBcIkFsbFwiLCBvciB3ZSdyZSBzd2l0Y2hpbmcg
cm91dGVzLCB3ZVxuICAvLyByZS1jcmVhdGUgdGhlIHRvZG8gaXRlbSBlbGVtZW50cywgY2FsbGlu
ZzpcbiAgLy8gICB0aGlzLnNob3dbQWxsfEFjdGl2ZXxDb21wbGV0ZWRdKCk7XG4gIGlmIChmb3Jj
ZSB8fCB0aGlzLl9sYXN0QWN0aXZlUm91dGUgIT09ICdBbGwnIHx8IHRoaXMuX2xhc3RBY3RpdmVS
b3V0ZSAhPT0gYWN0aXZlUm91dGUpIHtcbiAgICB0aGlzWydzaG93JyArIGFjdGl2ZVJvdXRlXSgp
XG4gIH1cblxuICB0aGlzLl9sYXN0QWN0aXZlUm91dGUgPSBhY3RpdmVSb3V0ZVxufVxuXG4vKipc
biogU2ltcGx5IHVwZGF0ZXMgdGhlIGZpbHRlciBuYXYncyBzZWxlY3RlZCBzdGF0ZXNcbiovXG5D
b250cm9sbGVyLnByb3RvdHlwZS5fdXBkYXRlRmlsdGVyU3RhdGUgPSBmdW5jdGlvbihjdXJyZW50
UGFnZSkge1xuICAvLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJvdXRlLCBhbGxv
d2luZyB1cyB0byByZS1maWx0ZXIgdG9kb1xuICAvLyBpdGVtcyBhcyB0aGV5IGFyZSBtYXJrZWQg
Y29tcGxldGUgb3IgaW5jb21wbGV0ZS5cbiAgY3VycmVudFBhZ2UgPSBjdXJyZW50UGFnZS5zcGxp
dCgnPycpWzBdXG4gIHRoaXMuX2FjdGl2ZVJvdXRlID0gY3VycmVudFBhZ2VcblxuICBpZiAoY3Vy
cmVudFBhZ2UgPT09ICcnKSB7XG4gICAgdGhpcy5fYWN0aXZlUm91dGUgPSAnQWxsJ1xuICB9XG5c
biAgdGhpcy5fZmlsdGVyKClcblxuICB0aGlzLnZpZXcucmVuZGVyKCdzZXRGaWx0ZXInLCBjdXJy
ZW50UGFnZSlcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2NvbnRyb2xsZXIu
anMiLCIoZnVuY3Rpb24ocm9vdCkge1xuICB2YXIgbG9jYWxTdG9yYWdlTWVtb3J5ID0ge307XG4g
IHZhciBjYWNoZSA9IHt9O1xuXG4gIC8qKlxuICAgKiBudW1iZXIgb2Ygc3RvcmVkIGl0ZW1zLlxu
ICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aCA9IDA7XG5cbiAgLyoqXG4gICAqIHJl
dHVybnMgaXRlbSBmb3IgcGFzc2VkIGtleSwgb3IgbnVsbFxuICAgKlxuICAgKiBAcGFyYSB7U3Ry
aW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBpdGVtIHRvIGJlIHJldHVybmVkXG4gICAqIEBy
ZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAgICovXG4gIGxvY2FsU3RvcmFnZU1lbW9yeS5nZXRJdGVt
ID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlW2tleV0gfHwgbnVsbDtcbiAgfTtc
blxuICAvKipcbiAgICogc2V0cyBpdGVtIGZvciBrZXkgdG8gcGFzc2VkIHZhbHVlLCBhcyBTdHJp
bmdcbiAgICpcbiAgICogQHBhcmEge1N0cmluZ30ga2V5XG4gICAqICAgICAgIG5hbWUgb2YgaXRl
bSB0byBiZSBzZXRcbiAgICogQHBhcmEge1N0cmluZ30gdmFsdWVcbiAgICogICAgICAgdmFsdWUs
IHdpbGwgYWx3YXlzIGJlIHR1cm5lZCBpbnRvIGEgU3RyaW5nXG4gICAqIEByZXR1cm5zIHt1bmRl
ZmluZWR9XG4gICAqL1xuICBsb2NhbFN0b3JhZ2VNZW1vcnkuc2V0SXRlbSA9IGZ1bmN0aW9uKGtl
eSwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAg
ICAgbG9jYWxTdG9yYWdlTWVtb3J5LnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9IGVsc2Uge1xuICAg
ICAgaWYgKCEoY2FjaGUuaGFzT3duUHJvcGVydHkoa2V5KSkpIHtcbiAgICAgICAgbG9jYWxTdG9y
YWdlTWVtb3J5Lmxlbmd0aCsrO1xuICAgICAgfVxuXG4gICAgICBjYWNoZVtrZXldID0gJycgKyB2
YWx1ZTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgaXRlbSBmb3IgcGFzc2Vk
IGtleVxuICAgKlxuICAgKiBAcGFyYSB7U3RyaW5nfSBrZXlcbiAgICogICAgICAgbmFtZSBvZiBp
dGVtIHRvIGJlIHJlbW92ZWRcbiAgICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGxv
Y2FsU3RvcmFnZU1lbW9yeS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKGNh
Y2hlLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGRlbGV0ZSBjYWNoZVtrZXldO1xuICAg
ICAgbG9jYWxTdG9yYWdlTWVtb3J5Lmxlbmd0aC0tO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAg
ICogcmV0dXJucyBuYW1lIG9mIGtleSBhdCBwYXNzZWQgaW5kZXhcbiAgICpcbiAgICogQHBhcmEg
e051bWJlcn0gaW5kZXhcbiAgICogICAgICAgUG9zaXRpb24gZm9yIGtleSB0byBiZSByZXR1cm5l
ZCAoc3RhcnRzIGF0IDApXG4gICAqIEByZXR1cm5zIHtTdHJpbmd8bnVsbH1cbiAgICovXG4gIGxv
Y2FsU3RvcmFnZU1lbW9yeS5rZXkgPSBmdW5jdGlvbihpbmRleCkge1xuICAgIHJldHVybiBPYmpl
Y3Qua2V5cyhjYWNoZSlbaW5kZXhdIHx8IG51bGw7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92
ZXMgYWxsIHN0b3JlZCBpdGVtcyBhbmQgc2V0cyBsZW5ndGggdG8gMFxuICAgKlxuICAgKiBAcmV0
dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgbG9jYWxTdG9yYWdlTWVtb3J5LmNsZWFyID0gZnVu
Y3Rpb24oKSB7XG4gICAgY2FjaGUgPSB7fTtcbiAgICBsb2NhbFN0b3JhZ2VNZW1vcnkubGVuZ3Ro
ID0gMDtcbiAgfTtcblxuICBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG4gICAg
bW9kdWxlLmV4cG9ydHMgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7XG4gIH0gZWxzZSB7XG4gICAgcm9v
dC5sb2NhbFN0b3JhZ2VNZW1vcnkgPSBsb2NhbFN0b3JhZ2VNZW1vcnk7XG4gIH1cbn0pKHRoaXMp
O1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL21lbW9yeS5qcyIsImV4cG9ydCBkZWZh
dWx0IE1vZGVsXG5cbi8qKlxuKiBDcmVhdGVzIGEgbmV3IE1vZGVsIGluc3RhbmNlIGFuZCBob29r
cyB1cCB0aGUgc3RvcmFnZS5cbipcbiogQGNvbnN0cnVjdG9yXG4qIEBwYXJhbSB7b2JqZWN0fSBz
dG9yYWdlIEEgcmVmZXJlbmNlIHRvIHRoZSBjbGllbnQgc2lkZSBzdG9yYWdlIGNsYXNzXG4qL1xu
ZnVuY3Rpb24gTW9kZWwoc3RvcmFnZSkge1xuICB0aGlzLnN0b3JhZ2UgPSBzdG9yYWdlXG59XG5c
bi8qKlxuKiBDcmVhdGVzIGEgbmV3IHRvZG8gbW9kZWxcbipcbiogQHBhcmFtIHtzdHJpbmd9IFt0
aXRsZV0gVGhlIHRpdGxlIG9mIHRoZSB0YXNrXG4qIEBwYXJhbSB7ZnVuY3Rpb259IFtjYWxsYmFj
a10gVGhlIGNhbGxiYWNrIHRvIGZpcmUgYWZ0ZXIgdGhlIG1vZGVsIGlzIGNyZWF0ZWRcbiovXG5N
b2RlbC5wcm90b3R5cGUuY3JlYXRlID0gZnVuY3Rpb24odGl0bGUsIGNhbGxiYWNrKSB7XG4gIHRp
dGxlID0gdGl0bGUgfHwgJydcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtc
biAgfVxuXG4gIHZhciBuZXdJdGVtID0ge1xuICAgIHRpdGxlOiB0aXRsZS50cmltKCksXG4gICAg
Y29tcGxldGVkOiBmYWxzZVxuICB9XG5cbiAgdGhpcy5zdG9yYWdlLnNhdmUobmV3SXRlbSwgY2Fs
bGJhY2spXG59XG5cbi8qKlxuICogRmluZHMgYW5kIHJldHVybnMgYSBtb2RlbCBpbiBzdG9yYWdl
LiBJZiBubyBxdWVyeSBpcyBnaXZlbiBpdCdsbCBzaW1wbHlcbiAqIHJldHVybiBldmVyeXRoaW5n
LiBJZiB5b3UgcGFzcyBpbiBhIHN0cmluZyBvciBudW1iZXIgaXQnbGwgbG9vayB0aGF0IHVwIGFz
XG4gKiB0aGUgSUQgb2YgdGhlIG1vZGVsIHRvIGZpbmQuIExhc3RseSwgeW91IGNhbiBwYXNzIGl0
IGFuIG9iamVjdCB0byBtYXRjaCBhZ2FpbnN0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJl
cnxvYmplY3R9IFtxdWVyeV0gQSBxdWVyeSB0byBtYXRjaCBtb2RlbHMgYWdhaW5zdFxuICogQHBh
cmFtIHtmdW5jdGlvbn0gW2NhbGxiYWNrXSBUaGUgY2FsbGJhY2sgdG8gZmlyZSBhZnRlciB0aGUg
bW9kZWwgaXMgZm91bmRcbiAqXG4gKiBAZXhhbXBsZVxuICogbW9kZWwucmVhZCgxLCBmdW5jKTsg
Ly8gV2lsbCBmaW5kIHRoZSBtb2RlbCB3aXRoIGFuIElEIG9mIDFcbiAqIG1vZGVsLnJlYWQoJzEn
KTsgLy8gU2FtZSBhcyBhYm92ZVxuICogLy9CZWxvdyB3aWxsIGZpbmQgYSBtb2RlbCB3aXRoIGZv
byBlcXVhbGxpbmcgYmFyIGFuZCBoZWxsbyBlcXVhbGxpbmcgd29ybGQuXG4gKiBtb2RlbC5yZWFk
KHsgZm9vOiAnYmFyJywgaGVsbG86ICd3b3JsZCcgfSk7XG4gKi9cbk1vZGVsLnByb3RvdHlwZS5y
ZWFkID0gZnVuY3Rpb24ocXVlcnksIGNhbGxiYWNrKSB7XG4gIHZhciBxdWVyeVR5cGUgPSB0eXBl
b2YgcXVlcnlcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtcbiAgfVxuXG4g
IGlmIChxdWVyeVR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IHF1ZXJ5XG4g
ICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5maW5kQWxsKGNhbGxiYWNrKVxuICB9IGVsc2UgaWYgKHF1
ZXJ5VHlwZSA9PT0gJ3N0cmluZycgfHwgcXVlcnlUeXBlID09PSAnbnVtYmVyJykge1xuICAgIHF1
ZXJ5ID0gcGFyc2VJbnQocXVlcnksIDEwKVxuICAgIHRoaXMuc3RvcmFnZS5maW5kKHtpZDogcXVl
cnl9LCBjYWxsYmFjaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnN0b3JhZ2UuZmluZChxdWVyeSwg
Y2FsbGJhY2spXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG4vKipcbiogVXBkYXRlcyBh
IG1vZGVsIGJ5IGdpdmluZyBpdCBhbiBJRCwgZGF0YSB0byB1cGRhdGUsIGFuZCBhIGNhbGxiYWNr
IHRvIGZpcmUgd2hlblxuKiB0aGUgdXBkYXRlIGlzIGNvbXBsZXRlLlxuKlxuKiBAcGFyYW0ge251
bWJlcn0gaWQgVGhlIGlkIG9mIHRoZSBtb2RlbCB0byB1cGRhdGVcbiogQHBhcmFtIHtvYmplY3R9
IGRhdGEgVGhlIHByb3BlcnRpZXMgdG8gdXBkYXRlIGFuZCB0aGVpciBuZXcgdmFsdWVcbiogQHBh
cmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgdXBk
YXRlIGlzIGNvbXBsZXRlLlxuKi9cbk1vZGVsLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbihp
ZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgdGhpcy5zdG9yYWdlLnNhdmUoZGF0YSwgY2FsbGJhY2ss
IGlkKVxufVxuXG4vKipcbiogUmVtb3ZlcyBhIG1vZGVsIGZyb20gc3RvcmFnZVxuKlxuKiBAcGFy
YW0ge251bWJlcn0gaWQgVGhlIElEIG9mIHRoZSBtb2RlbCB0byByZW1vdmVcbiogQHBhcmFtIHtm
dW5jdGlvbn0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcmVtb3ZhbCBp
cyBjb21wbGV0ZS5cbiovXG5Nb2RlbC5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24oaWQsIGNh
bGxiYWNrKSB7XG4gIHRoaXMuc3RvcmFnZS5yZW1vdmUoaWQsIGNhbGxiYWNrKVxufVxuXG4vKipc
biogV0FSTklORzogV2lsbCByZW1vdmUgQUxMIGRhdGEgZnJvbSBzdG9yYWdlLlxuKlxuKiBAcGFy
YW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmlyZSB3aGVuIHRoZSBzdG9y
YWdlIGlzIHdpcGVkLlxuKi9cbk1vZGVsLnByb3RvdHlwZS5yZW1vdmVBbGwgPSBmdW5jdGlvbihj
YWxsYmFjaykge1xuICB0aGlzLnN0b3JhZ2UuZHJvcChjYWxsYmFjaylcbn1cblxuLyoqXG4qIFJl
dHVybnMgYSBjb3VudCBvZiBhbGwgdG9kb3NcbiovXG5Nb2RlbC5wcm90b3R5cGUuZ2V0Q291bnQg
PSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgdG9kb3MgPSB7XG4gICAgYWN0aXZlOiAwLFxu
ICAgIGNvbXBsZXRlZDogMCxcbiAgICB0b3RhbDogMFxuICB9XG5cbiAgdGhpcy5zdG9yYWdlLmZp
bmRBbGwoZnVuY3Rpb24oZGF0YSkge1xuICAgIGRhdGEuZm9yRWFjaChmdW5jdGlvbih0b2RvKSB7
XG4gICAgICBpZiAodG9kby5jb21wbGV0ZWQpIHtcbiAgICAgICAgdG9kb3MuY29tcGxldGVkKytc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvZG9zLmFjdGl2ZSsrXG4gICAgICB9XG5cbiAgICAg
IHRvZG9zLnRvdGFsKytcbiAgICB9KVxuICAgIGNhbGxiYWNrKHRvZG9zKVxuICB9KVxufVxuXG5c
blxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vbW9kZWwuanMiLCJpbXBvcnQge3JlbW92ZX0g
ZnJvbSAnLi9oZWxwZXJzJ1xuaW1wb3J0ICogYXMgbG9jYWxTdG9yYWdlTWVtb3J5IGZyb20gJy4v
bWVtb3J5J1xuZXhwb3J0IGRlZmF1bHQgU3RvcmVcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGNs
aWVudCBzaWRlIHN0b3JhZ2Ugb2JqZWN0IGFuZCB3aWxsIGNyZWF0ZSBhbiBlbXB0eVxuICogY29s
bGVjdGlvbiBpZiBubyBjb2xsZWN0aW9uIGFscmVhZHkgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIG91ciBEQiB3ZSB3YW50IHRvIHVzZVxuICogQHBhcmFt
IHtmdW5jdGlvbn0gY2FsbGJhY2sgT3VyIGZha2UgREIgdXNlcyBjYWxsYmFja3MgYmVjYXVzZSBp
blxuICogcmVhbCBsaWZlIHlvdSBwcm9iYWJseSB3b3VsZCBiZSBtYWtpbmcgQUpBWCBjYWxsc1xu
ICovXG5mdW5jdGlvbiBTdG9yZShuYW1lLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxi
YWNrIHx8IGZ1bmN0aW9uKCkge1xuICB9XG5cbiAgdGhpcy5fZGJOYW1lID0gbmFtZVxuXG4gIGlm
ICghbG9jYWxTdG9yYWdlTWVtb3J5W25hbWVdKSB7XG4gICAgdmFyIGRhdGEgPSB7XG4gICAgICB0
b2RvczogW11cbiAgICB9XG5cbiAgICBsb2NhbFN0b3JhZ2VNZW1vcnlbbmFtZV0gPSBKU09OLnN0
cmluZ2lmeShkYXRhKVxuICB9XG5cbiAgY2FsbGJhY2suY2FsbCh0aGlzLCBKU09OLnBhcnNlKGxv
Y2FsU3RvcmFnZU1lbW9yeVtuYW1lXSkpXG4gIHRoaXMuc3Vic2NyaWJlcnMgPSBbXVxufVxuXG5T
dG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24oc3Vic2NyaWJlcikge1xuICB0aGlz
LnN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcilcbiAgcmV0dXJuICgpID0+IHJlbW92ZSh0aGlz
LnN1YnNjcmliZXJzLCBzdWJzY3JpYmVyKVxufVxuXG5TdG9yZS5wcm90b3R5cGUuX25vdGlmeSA9
IGZ1bmN0aW9uKCkge1xuICB0aGlzLnN1YnNjcmliZXJzLmZvckVhY2gocyA9PiBzKCkpXG59XG5c
bi8qKlxuKiBGaW5kcyBpdGVtcyBiYXNlZCBvbiBhIHF1ZXJ5IGdpdmVuIGFzIGEgSlMgb2JqZWN0
XG4qXG4qIEBwYXJhbSB7b2JqZWN0fSBxdWVyeSBUaGUgcXVlcnkgdG8gbWF0Y2ggYWdhaW5zdCAo
aS5lLiB7Zm9vOiAnYmFyJ30pXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrICAgVGhlIGNh
bGxiYWNrIHRvIGZpcmUgd2hlbiB0aGUgcXVlcnkgaGFzXG4qIGNvbXBsZXRlZCBydW5uaW5nXG4q
XG4qIEBleGFtcGxlXG4qIGRiLmZpbmQoe2ZvbzogJ2JhcicsIGhlbGxvOiAnd29ybGQnfSwgZnVu
Y3Rpb24gKGRhdGEpIHtcbiogICAvLyBkYXRhIHdpbGwgcmV0dXJuIGFueSBpdGVtcyB0aGF0IGhh
dmUgZm9vOiBiYXIgYW5kXG4qICAgLy8gaGVsbG86IHdvcmxkIGluIHRoZWlyIHByb3BlcnRpZXNc
biogfSk7XG4qL1xuU3RvcmUucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihxdWVyeSwgY2FsbGJh
Y2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHRvZG9z
ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSkudG9kb3Ncblxu
ICBjYWxsYmFjay5jYWxsKHRoaXMsIHRvZG9zLmZpbHRlcihmdW5jdGlvbih0b2RvKSB7XG4gICAg
Zm9yICh2YXIgcSBpbiBxdWVyeSkge1xuICAgICAgaWYgKHF1ZXJ5W3FdICE9PSB0b2RvW3FdKSB7
XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxu
ICB9KSlcbn1cblxuLyoqXG4qIFdpbGwgcmV0cmlldmUgYWxsIGRhdGEgZnJvbSB0aGUgY29sbGVj
dGlvblxuKlxuKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gZmly
ZSB1cG9uIHJldHJpZXZpbmcgZGF0YVxuKi9cblN0b3JlLnByb3RvdHlwZS5maW5kQWxsID0gZnVu
Y3Rpb24oY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbigpIHtc
biAgfVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5
W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxufVxuXG4vKipcbiogV2lsbCBzYXZlIHRoZSBnaXZlbiBk
YXRhIHRvIHRoZSBEQi4gSWYgbm8gaXRlbSBleGlzdHMgaXQgd2lsbCBjcmVhdGUgYSBuZXdcbiog
aXRlbSwgb3RoZXJ3aXNlIGl0J2xsIHNpbXBseSB1cGRhdGUgYW4gZXhpc3RpbmcgaXRlbSdzIHBy
b3BlcnRpZXNcbipcbiogQHBhcmFtIHtvYmplY3R9IHVwZGF0ZURhdGEgVGhlIGRhdGEgdG8gc2F2
ZSBiYWNrIGludG8gdGhlIERCXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxs
YmFjayB0byBmaXJlIGFmdGVyIHNhdmluZ1xuKiBAcGFyYW0ge251bWJlcn0gaWQgQW4gb3B0aW9u
YWwgcGFyYW0gdG8gZW50ZXIgYW4gSUQgb2YgYW4gaXRlbSB0byB1cGRhdGVcbiovXG5TdG9yZS5w
cm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uKHVwZGF0ZURhdGEsIGNhbGxiYWNrLCBpZCkge1xuICB2
YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pXG4g
IHZhciB0b2RvcyA9IGRhdGEudG9kb3NcblxuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0
aW9uKCkge1xuICB9XG5cbiAgLy8gSWYgYW4gSUQgd2FzIGFjdHVhbGx5IGdpdmVuLCBmaW5kIHRo
ZSBpdGVtIGFuZCB1cGRhdGUgZWFjaCBwcm9wZXJ0eVxuICBpZiAoaWQpIHtcbiAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRvZG9zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodG9kb3NbaV0uaWQg
PT09IGlkKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiB1cGRhdGVEYXRhKSB7IC8vIGVzbGlu
dC1kaXNhYmxlLWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICAgICAgdG9kb3NbaV1ba2V5XSA9IHVw
ZGF0ZURhdGFba2V5XVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxu
XG4gICAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShk
YXRhKVxuICAgIGNhbGxiYWNrLmNhbGwodGhpcywgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1v
cnlbdGhpcy5fZGJOYW1lXSkudG9kb3MpXG4gIH0gZWxzZSB7XG4gICAgLy8gR2VuZXJhdGUgYW4g
SURcbiAgICB1cGRhdGVEYXRhLmlkID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgIHRvZG9z
LnB1c2godXBkYXRlRGF0YSlcbiAgICBsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9
IEpTT04uc3RyaW5naWZ5KGRhdGEpXG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBbdXBkYXRlRGF0
YV0pXG4gIH1cbiAgdGhpcy5fbm90aWZ5KClcbn1cblxuLyoqXG4qIFdpbGwgcmVtb3ZlIGFuIGl0
ZW0gZnJvbSB0aGUgU3RvcmUgYmFzZWQgb24gaXRzIElEXG4qXG4qIEBwYXJhbSB7bnVtYmVyfSBp
ZCBUaGUgSUQgb2YgdGhlIGl0ZW0geW91IHdhbnQgdG8gcmVtb3ZlXG4qIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBmaXJlIGFmdGVyIHNhdmluZ1xuKi9cblN0b3Jl
LnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhdGEg
PSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZU1lbW9yeVt0aGlzLl9kYk5hbWVdKVxuICB2YXIgdG9k
b3MgPSBkYXRhLnRvZG9zXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2Rvcy5sZW5ndGg7IGkr
Kykge1xuICAgIGlmICh0b2Rvc1tpXS5pZCA9PT0gaWQpIHtcbiAgICAgIHRvZG9zLnNwbGljZShp
LCAxKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBsb2NhbFN0b3JhZ2VNZW1vcnlbdGhp
cy5fZGJOYW1lXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpXG4gIGNhbGxiYWNrLmNhbGwodGhpcywg
SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSkudG9kb3MpXG4gIHRo
aXMuX25vdGlmeSgpXG59XG5cbi8qKlxuKiBXaWxsIGRyb3AgYWxsIHN0b3JhZ2UgYW5kIHN0YXJ0
IGZyZXNoXG4qXG4qIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBm
aXJlIGFmdGVyIGRyb3BwaW5nIHRoZSBkYXRhXG4qL1xuU3RvcmUucHJvdG90eXBlLmRyb3AgPSBm
dW5jdGlvbihjYWxsYmFjaykge1xuICBsb2NhbFN0b3JhZ2VNZW1vcnlbdGhpcy5fZGJOYW1lXSA9
IEpTT04uc3RyaW5naWZ5KHt0b2RvczogW119KVxuICBjYWxsYmFjay5jYWxsKHRoaXMsIEpTT04u
cGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9zKVxuICB0aGlzLl9u
b3RpZnkoKVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3RvcmUuanMiLCJl
eHBvcnQgZGVmYXVsdCBUZW1wbGF0ZVxuXG52YXIgaHRtbEVzY2FwZXMgPSB7XG4gICcmJzogJyZh
bXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7Jyxc
biAgJ1xcJyc6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnXG59XG5cbnZhciBlc2NhcGVIdG1s
Q2hhciA9IGZ1bmN0aW9uKGNocikge1xuICByZXR1cm4gaHRtbEVzY2FwZXNbY2hyXVxufVxuXG52
YXIgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIidgXS9nXG52YXIgcmVIYXNVbmVzY2FwZWRIdG1s
ID0gbmV3IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKVxuXG52YXIgZXNjYXBlID0gZnVu
Y3Rpb24oc3RyaW5nKSB7XG4gIGlmIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qo
c3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVVuZXNjYXBlZEh0bWwsIGVz
Y2FwZUh0bWxDaGFyKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHJpbmdcbiAgfVxufVxuXG4v
KipcbiogU2V0cyB1cCBkZWZhdWx0cyBmb3IgYWxsIHRoZSBUZW1wbGF0ZSBtZXRob2RzIHN1Y2gg
YXMgYSBkZWZhdWx0IHRlbXBsYXRlXG4qXG4qIEBjb25zdHJ1Y3RvclxuKi9cbmZ1bmN0aW9uIFRl
bXBsYXRlKCkge1xuICB0aGlzLmRlZmF1bHRUZW1wbGF0ZSA9IGBcbiAgICA8bGkgZGF0YS1pZD1c
Int7aWR9fVwiIGNsYXNzPVwie3tjb21wbGV0ZWR9fVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZp
ZXdcIj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwidG9nZ2xlXCIgdHlwZT1cImNoZWNrYm94XCIg
e3tjaGVja2VkfX0gLz5cbiAgICAgICAgPGxhYmVsPnt7dGl0bGV9fTwvbGFiZWw+XG4gICAgICAg
IDxidXR0b24gY2xhc3M9XCJkZXN0cm95XCI+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8
L2xpPlxuICBgXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiA8bGk+IEhUTUwgc3RyaW5nIGFuZCBy
ZXR1cm5zIGl0IGZvciBwbGFjZW1lbnQgaW4geW91ciBhcHAuXG4gKlxuICogTk9URTogSW4gcmVh
bCBsaWZlIHlvdSBzaG91bGQgYmUgdXNpbmcgYSB0ZW1wbGF0aW5nIGVuZ2luZSBzdWNoIGFzIE11
c3RhY2hlXG4gKiBvciBIYW5kbGViYXJzLCBob3dldmVyLCB0aGlzIGlzIGEgdmFuaWxsYSBKUyBl
eGFtcGxlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIFRoZSBvYmplY3QgY29udGFpbmlu
ZyBrZXlzIHlvdSB3YW50IHRvIGZpbmQgaW4gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICB0
ZW1wbGF0ZSB0byByZXBsYWNlLlxuICogQHJldHVybnMge3N0cmluZ30gSFRNTCBTdHJpbmcgb2Yg
YW4gPGxpPiBlbGVtZW50XG4gKlxuICogQGV4YW1wbGVcbiAqIHZpZXcuc2hvdyh7XG4gKiAgaWQ6
IDEsXG4gKiAgdGl0bGU6IFwiSGVsbG8gV29ybGRcIixcbiAqICBjb21wbGV0ZWQ6IDAsXG4gKiB9
KTtcbiAqL1xuVGVtcGxhdGUucHJvdG90eXBlLnNob3cgPSBmdW5jdGlvbihkYXRhKSB7XG4gIHZh
ciBpLCBsXG4gIHZhciB2aWV3ID0gJydcblxuICBmb3IgKGkgPSAwLCBsID0gZGF0YS5sZW5ndGg7
IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgdGVtcGxhdGUgPSB0aGlzLmRlZmF1bHRUZW1wbGF0ZVxu
ICAgIHZhciBjb21wbGV0ZWQgPSAnJ1xuICAgIHZhciBjaGVja2VkID0gJydcblxuICAgIGlmIChk
YXRhW2ldLmNvbXBsZXRlZCkge1xuICAgICAgY29tcGxldGVkID0gJ2NvbXBsZXRlZCdcbiAgICAg
IGNoZWNrZWQgPSAnY2hlY2tlZCdcbiAgICB9XG5cbiAgICB0ZW1wbGF0ZSA9IHRlbXBsYXRlLnJl
cGxhY2UoJ3t7aWR9fScsIGRhdGFbaV0uaWQpXG4gICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5yZXBs
YWNlKCd7e3RpdGxlfX0nLCBlc2NhcGUoZGF0YVtpXS50aXRsZSkpXG4gICAgdGVtcGxhdGUgPSB0
ZW1wbGF0ZS5yZXBsYWNlKCd7e2NvbXBsZXRlZH19JywgY29tcGxldGVkKVxuICAgIHRlbXBsYXRl
ID0gdGVtcGxhdGUucmVwbGFjZSgne3tjaGVja2VkfX0nLCBjaGVja2VkKVxuXG4gICAgdmlldyA9
IHZpZXcgKyB0ZW1wbGF0ZVxuICB9XG5cbiAgcmV0dXJuIHZpZXdcbn1cblxuLyoqXG4gKiBEaXNw
bGF5cyBhIGNvdW50ZXIgb2YgaG93IG1hbnkgdG8gZG9zIGFyZSBsZWZ0IHRvIGNvbXBsZXRlXG4g
KlxuICogQHBhcmFtIHtudW1iZXJ9IGFjdGl2ZVRvZG9zIFRoZSBudW1iZXIgb2YgYWN0aXZlIHRv
ZG9zLlxuICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvdW50XG4g
Ki9cblRlbXBsYXRlLnByb3RvdHlwZS5pdGVtQ291bnRlciA9IGZ1bmN0aW9uKGFjdGl2ZVRvZG9z
KSB7XG4gIHZhciBwbHVyYWwgPSBhY3RpdmVUb2RvcyA9PT0gMSA/ICcnIDogJ3MnXG5cbiAgcmV0
dXJuICc8c3Ryb25nPicgKyBhY3RpdmVUb2RvcyArICc8L3N0cm9uZz4gaXRlbScgKyBwbHVyYWwg
KyAnIGxlZnQnXG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgdGV4dCB3aXRoaW4gdGhlIFwiQ2xl
YXIgY29tcGxldGVkXCIgYnV0dG9uXG4gKlxuICogQHBhcmFtICB7W3R5cGVdfSBjb21wbGV0ZWRU
b2RvcyBUaGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0b2Rvcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9
IFN0cmluZyBjb250YWluaW5nIHRoZSBjb3VudFxuICovXG5UZW1wbGF0ZS5wcm90b3R5cGUuY2xl
YXJDb21wbGV0ZWRCdXR0b24gPSBmdW5jdGlvbihjb21wbGV0ZWRUb2Rvcykge1xuICBpZiAoY29t
cGxldGVkVG9kb3MgPiAwKSB7XG4gICAgcmV0dXJuICdDbGVhciBjb21wbGV0ZWQnXG4gIH0gZWxz
ZSB7XG4gICAgcmV0dXJuICcnXG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4v
LyAuL3RlbXBsYXRlLmpzIiwiaW1wb3J0IFZpZXcgZnJvbSAnLi92aWV3J1xuaW1wb3J0IENvbnRy
b2xsZXIgZnJvbSAnLi9jb250cm9sbGVyJ1xuaW1wb3J0IE1vZGVsIGZyb20gJy4vbW9kZWwnXG5p
bXBvcnQgU3RvcmUgZnJvbSAnLi9zdG9yZSdcbmltcG9ydCBUZW1wbGF0ZSBmcm9tICcuL3RlbXBs
YXRlJ1xuaW1wb3J0IHtyZW1vdmV9IGZyb20gJy4vaGVscGVycydcblxuZXhwb3J0IHt1cGRhdGVU
b2RvLCBnZXRUb2RvLCBzdWJzY3JpYmV9XG5cbmxldCB0b2RvXG5jb25zdCBzdWJzY3JpYmVycyA9
IFtdXG5cbi8qKlxuICogU2V0cyB1cCBhIGJyYW5kIG5ldyBUb2RvIGxpc3QuXG4gKlxuICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgeW91ciBuZXcgdG8gZG8gbGlzdC5cbiAqL1xu
ZnVuY3Rpb24gVG9kbyhuYW1lKSB7XG4gIHRoaXMuc3RvcmFnZSA9IG5ldyBTdG9yZShuYW1lKVxu
ICB0aGlzLm1vZGVsID0gbmV3IE1vZGVsKHRoaXMuc3RvcmFnZSlcbiAgdGhpcy50ZW1wbGF0ZSA9
IG5ldyBUZW1wbGF0ZSgpXG4gIHRoaXMudmlldyA9IG5ldyBWaWV3KHRoaXMudGVtcGxhdGUpXG4g
IHRoaXMuY29udHJvbGxlciA9IG5ldyBDb250cm9sbGVyKHRoaXMubW9kZWwsIHRoaXMudmlldylc
bn1cblxuZnVuY3Rpb24gdXBkYXRlVG9kbygpIHtcbiAgdG9kbyA9IG5ldyBUb2RvKCd0b2Rvcy12
YW5pbGxhanMnKVxuICB0b2RvLmNvbnRyb2xsZXIuc2V0Vmlldyhkb2N1bWVudC5sb2NhdGlvbi5o
YXNoKVxuICBzdWJzY3JpYmVycy5mb3JFYWNoKHMgPT4gcygpKVxufVxuXG5mdW5jdGlvbiBnZXRU
b2RvKCkge1xuICByZXR1cm4gdG9kb1xufVxuXG5mdW5jdGlvbiBzdWJzY3JpYmUoY2IpIHtcbiAg
c3Vic2NyaWJlcnMucHVzaChjYilcbiAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xu
ICAgIHJlbW92ZShzdWJzY3JpYmVycywgY2IpXG4gIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9P
VEVSIC8vXG4vLyAuL3RvZG8uanMiLCIvKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAwLCBjb21w
bGV4aXR5OlsyLCA5XSAqL1xuaW1wb3J0IHtxcywgcXNhLCAkb24sICRwYXJlbnQsICRkZWxlZ2F0
ZX0gZnJvbSAnLi9oZWxwZXJzJ1xuXG4vKipcbiAqIFZpZXcgdGhhdCBhYnN0cmFjdHMgYXdheSB0
aGUgYnJvd3NlcidzIERPTSBjb21wbGV0ZWx5LlxuICogSXQgaGFzIHR3byBzaW1wbGUgZW50cnkg
cG9pbnRzOlxuICpcbiAqICAgLSBiaW5kKGV2ZW50TmFtZSwgaGFuZGxlcilcbiAqICAgICBUYWtl
cyBhIHRvZG8gYXBwbGljYXRpb24gZXZlbnQgYW5kIHJlZ2lzdGVycyB0aGUgaGFuZGxlclxuICog
ICAtIHJlbmRlcihjb21tYW5kLCBwYXJhbWV0ZXJPYmplY3QpXG4gKiAgICAgUmVuZGVycyB0aGUg
Z2l2ZW4gY29tbWFuZCB3aXRoIHRoZSBvcHRpb25zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNz
IFZpZXcge1xuICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZSkge1xuICAgIHRoaXMudGVtcGxhdGUgPSB0
ZW1wbGF0ZVxuXG4gICAgdGhpcy5FTlRFUl9LRVkgPSAxM1xuICAgIHRoaXMuRVNDQVBFX0tFWSA9
IDI3XG5cbiAgICB0aGlzLiR0b2RvTGlzdCA9IHFzKCcudG9kby1saXN0JylcbiAgICB0aGlzLiR0
b2RvSXRlbUNvdW50ZXIgPSBxcygnLnRvZG8tY291bnQnKVxuICAgIHRoaXMuJGNsZWFyQ29tcGxl
dGVkID0gcXMoJy5jbGVhci1jb21wbGV0ZWQnKVxuICAgIHRoaXMuJG1haW4gPSBxcygnLm1haW4n
KVxuICAgIHRoaXMuJGZvb3RlciA9IHFzKCcuZm9vdGVyJylcbiAgICB0aGlzLiR0b2dnbGVBbGwg
PSBxcygnLnRvZ2dsZS1hbGwnKVxuICAgIHRoaXMuJG5ld1RvZG8gPSBxcygnLm5ldy10b2RvJylc
biAgfVxuXG4gIF9yZW1vdmVJdGVtKGlkKSB7XG4gICAgdmFyIGVsZW0gPSBxcygnW2RhdGEtaWQ9
XCInICsgaWQgKyAnXCJdJylcblxuICAgIGlmIChlbGVtKSB7XG4gICAgICB0aGlzLiR0b2RvTGlz
dC5yZW1vdmVDaGlsZChlbGVtKVxuICAgIH1cbiAgfVxuXG4gIF9jbGVhckNvbXBsZXRlZEJ1dHRv
bihjb21wbGV0ZWRDb3VudCwgdmlzaWJsZSkge1xuICAgIHRoaXMuJGNsZWFyQ29tcGxldGVkLmlu
bmVySFRNTCA9IHRoaXMudGVtcGxhdGUuY2xlYXJDb21wbGV0ZWRCdXR0b24oY29tcGxldGVkQ291
bnQpXG4gICAgdGhpcy4kY2xlYXJDb21wbGV0ZWQuc3R5bGUuZGlzcGxheSA9IHZpc2libGUgPyAn
YmxvY2snIDogJ25vbmUnXG4gIH1cblxuICBfZWRpdEl0ZW1Eb25lKGlkLCB0aXRsZSkge1xuICAg
IHZhciBsaXN0SXRlbSA9IHFzKCdbZGF0YS1pZD1cIicgKyBpZCArICdcIl0nKVxuXG4gICAgaWYg
KCFsaXN0SXRlbSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdmFyIGlucHV0ID0gcXMo
J2lucHV0LmVkaXQnLCBsaXN0SXRlbSlcbiAgICBsaXN0SXRlbS5yZW1vdmVDaGlsZChpbnB1dClc
blxuICAgIGxpc3RJdGVtLmNsYXNzTmFtZSA9IGxpc3RJdGVtLmNsYXNzTmFtZS5yZXBsYWNlKCdl
ZGl0aW5nJywgJycpXG5cbiAgICBxc2EoJ2xhYmVsJywgbGlzdEl0ZW0pLmZvckVhY2goZnVuY3Rp
b24obGFiZWwpIHtcbiAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gdGl0bGVcbiAgICB9KVxuICB9
XG5cbiAgcmVuZGVyKHZpZXdDbWQsIHBhcmFtZXRlcikge1xuICAgIHZhciB0aGF0ID0gdGhpc1xu
ICAgIHZhciB2aWV3Q29tbWFuZHMgPSB7XG4gICAgICBzaG93RW50cmllczogZnVuY3Rpb24oKSB7
XG4gICAgICAgIHRoYXQuJHRvZG9MaXN0LmlubmVySFRNTCA9IHRoYXQudGVtcGxhdGUuc2hvdyhw
YXJhbWV0ZXIpXG4gICAgICB9LFxuICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oKSB7XG4gICAg
ICAgIHRoYXQuX3JlbW92ZUl0ZW0ocGFyYW1ldGVyKVxuICAgICAgfSxcbiAgICAgIHVwZGF0ZUVs
ZW1lbnRDb3VudDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuJHRvZG9JdGVtQ291bnRlci5p
bm5lckhUTUwgPSB0aGF0LnRlbXBsYXRlLml0ZW1Db3VudGVyKHBhcmFtZXRlcilcbiAgICAgIH0s
XG4gICAgICBjbGVhckNvbXBsZXRlZEJ1dHRvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQu
X2NsZWFyQ29tcGxldGVkQnV0dG9uKHBhcmFtZXRlci5jb21wbGV0ZWQsIHBhcmFtZXRlci52aXNp
YmxlKVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnRCbG9ja1Zpc2liaWxpdHk6IGZ1bmN0aW9uKCkg
e1xuICAgICAgICB0aGF0LiRtYWluLnN0eWxlLmRpc3BsYXkgPSB0aGF0LiRmb290ZXIuc3R5bGUu
ZGlzcGxheSA9IHBhcmFtZXRlci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgfSxc
biAgICAgIHRvZ2dsZUFsbDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHRoYXQuJHRvZ2dsZUFsbC5j
aGVja2VkID0gcGFyYW1ldGVyLmNoZWNrZWRcbiAgICAgIH0sXG4gICAgICBzZXRGaWx0ZXI6IGZ1
bmN0aW9uKCkge1xuICAgICAgICBfc2V0RmlsdGVyKHBhcmFtZXRlcilcbiAgICAgIH0sXG4gICAg
ICBjbGVhck5ld1RvZG86IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0LiRuZXdUb2RvLnZhbHVl
ID0gJydcbiAgICAgIH0sXG4gICAgICBlbGVtZW50Q29tcGxldGU6IGZ1bmN0aW9uKCkge1xuICAg
ICAgICBfZWxlbWVudENvbXBsZXRlKHBhcmFtZXRlci5pZCwgcGFyYW1ldGVyLmNvbXBsZXRlZClc
biAgICAgIH0sXG4gICAgICBlZGl0SXRlbTogZnVuY3Rpb24oKSB7XG4gICAgICAgIF9lZGl0SXRl
bShwYXJhbWV0ZXIuaWQsIHBhcmFtZXRlci50aXRsZSlcbiAgICAgIH0sXG4gICAgICBlZGl0SXRl
bURvbmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGF0Ll9lZGl0SXRlbURvbmUocGFyYW1ldGVy
LmlkLCBwYXJhbWV0ZXIudGl0bGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmlld0NvbW1hbmRz
W3ZpZXdDbWRdKClcbiAgfVxuXG4gIF9iaW5kSXRlbUVkaXREb25lKGhhbmRsZXIpIHtcbiAgICB2
YXIgdGhhdCA9IHRoaXNcbiAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICdsaSAuZWRpdCcs
ICdibHVyJywgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMuZGF0YXNldC5pc2NhbmNlbGVk
KSB7XG4gICAgICAgIGhhbmRsZXIoe1xuICAgICAgICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAg
ICAgICAgIHRpdGxlOiB0aGlzLnZhbHVlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSlcblxu
ICAgICRkZWxlZ2F0ZSh0aGF0LiR0b2RvTGlzdCwgJ2xpIC5lZGl0JywgJ2tleXByZXNzJywgZnVu
Y3Rpb24oZXZlbnQpIHtcbiAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSB0aGF0LkVOVEVSX0tF
WSkge1xuICAgICAgICAvLyBSZW1vdmUgdGhlIGN1cnNvciBmcm9tIHRoZSBpbnB1dCB3aGVuIHlv
dSBoaXQgZW50ZXIganVzdCBsaWtlIGlmIGl0XG4gICAgICAgIC8vIHdlcmUgYSByZWFsIGZvcm1c
biAgICAgICAgdGhpcy5ibHVyKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgX2JpbmRJdGVt
RWRpdENhbmNlbChoYW5kbGVyKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgJGRlbGVnYXRl
KHRoYXQuJHRvZG9MaXN0LCAnbGkgLmVkaXQnLCAna2V5dXAnLCBmdW5jdGlvbihldmVudCkge1xu
ICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IHRoYXQuRVNDQVBFX0tFWSkge1xuICAgICAgICB0
aGlzLmRhdGFzZXQuaXNjYW5jZWxlZCA9IHRydWVcbiAgICAgICAgdGhpcy5ibHVyKClcblxuICAg
ICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxu
XG4gIGJpbmQoZXZlbnQsIGhhbmRsZXIpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICBpZiAo
ZXZlbnQgPT09ICduZXdUb2RvJykge1xuICAgICAgJG9uKHRoYXQuJG5ld1RvZG8sICdjaGFuZ2Un
LCBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFuZGxlcih0aGF0LiRuZXdUb2RvLnZhbHVlKVxuICAg
ICAgfSlcblxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdyZW1vdmVDb21wbGV0ZWQnKSB7XG4g
ICAgICAkb24odGhhdC4kY2xlYXJDb21wbGV0ZWQsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAg
ICAgICBoYW5kbGVyKClcbiAgICAgIH0pXG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAndG9n
Z2xlQWxsJykge1xuICAgICAgJG9uKHRoYXQuJHRvZ2dsZUFsbCwgJ2NsaWNrJywgZnVuY3Rpb24o
KSB7XG4gICAgICAgIGhhbmRsZXIoe2NvbXBsZXRlZDogdGhpcy5jaGVja2VkfSlcbiAgICAgIH0p
XG5cbiAgICB9IGVsc2UgaWYgKGV2ZW50ID09PSAnaXRlbUVkaXQnKSB7XG4gICAgICAkZGVsZWdh
dGUodGhhdC4kdG9kb0xpc3QsICdsaSBsYWJlbCcsICdkYmxjbGljaycsIGZ1bmN0aW9uKCkge1xu
ICAgICAgICBoYW5kbGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0pXG4gICAgICB9KVxuXG4gICAgfSBl
bHNlIGlmIChldmVudCA9PT0gJ2l0ZW1SZW1vdmUnKSB7XG4gICAgICAkZGVsZWdhdGUodGhhdC4k
dG9kb0xpc3QsICcuZGVzdHJveScsICdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBoYW5k
bGVyKHtpZDogX2l0ZW1JZCh0aGlzKX0pXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVu
dCA9PT0gJ2l0ZW1Ub2dnbGUnKSB7XG4gICAgICAkZGVsZWdhdGUodGhhdC4kdG9kb0xpc3QsICcu
dG9nZ2xlJywgJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhbmRsZXIoe1xuICAgICAg
ICAgIGlkOiBfaXRlbUlkKHRoaXMpLFxuICAgICAgICAgIGNvbXBsZXRlZDogdGhpcy5jaGVja2Vk
XG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2l0ZW1F
ZGl0RG9uZScpIHtcbiAgICAgIHRoYXQuX2JpbmRJdGVtRWRpdERvbmUoaGFuZGxlcilcblxuICAg
IH0gZWxzZSBpZiAoZXZlbnQgPT09ICdpdGVtRWRpdENhbmNlbCcpIHtcbiAgICAgIHRoYXQuX2Jp
bmRJdGVtRWRpdENhbmNlbChoYW5kbGVyKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBfc2V0
RmlsdGVyKGN1cnJlbnRQYWdlKSB7XG4gIHFzKCcuZmlsdGVycyAuc2VsZWN0ZWQnKS5jbGFzc05h
bWUgPSAnJ1xuICBxcygnLmZpbHRlcnMgW2hyZWY9XCIjLycgKyBjdXJyZW50UGFnZSArICdcIl0n
KS5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnXG59XG5cbmZ1bmN0aW9uIF9lbGVtZW50Q29tcGxldGUo
aWQsIGNvbXBsZXRlZCkge1xuICB2YXIgbGlzdEl0ZW0gPSBxcygnW2RhdGEtaWQ9XCInICsgaWQg
KyAnXCJdJylcblxuICBpZiAoIWxpc3RJdGVtKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBsaXN0
SXRlbS5jbGFzc05hbWUgPSBjb21wbGV0ZWQgPyAnY29tcGxldGVkJyA6ICcnXG5cbiAgLy8gSW4g
Y2FzZSBpdCB3YXMgdG9nZ2xlZCBmcm9tIGFuIGV2ZW50IGFuZCBub3QgYnkgY2xpY2tpbmcgdGhl
IGNoZWNrYm94XG4gIHFzKCdpbnB1dCcsIGxpc3RJdGVtKS5jaGVja2VkID0gY29tcGxldGVkXG59
XG5cbmZ1bmN0aW9uIF9lZGl0SXRlbShpZCwgdGl0bGUpIHtcbiAgdmFyIGxpc3RJdGVtID0gcXMo
J1tkYXRhLWlkPVwiJyArIGlkICsgJ1wiXScpXG5cbiAgaWYgKCFsaXN0SXRlbSkge1xuICAgIHJl
dHVyblxuICB9XG5cbiAgbGlzdEl0ZW0uY2xhc3NOYW1lID0gbGlzdEl0ZW0uY2xhc3NOYW1lICsg
JyBlZGl0aW5nJ1xuXG4gIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0
JylcbiAgaW5wdXQuY2xhc3NOYW1lID0gJ2VkaXQnXG5cbiAgbGlzdEl0ZW0uYXBwZW5kQ2hpbGQo
aW5wdXQpXG4gIGlucHV0LmZvY3VzKClcbiAgaW5wdXQudmFsdWUgPSB0aXRsZVxufVxuXG5mdW5j
dGlvbiBfaXRlbUlkKGVsZW1lbnQpIHtcbiAgdmFyIGxpID0gJHBhcmVudChlbGVtZW50LCAnbGkn
KVxuICByZXR1cm4gcGFyc2VJbnQobGkuZGF0YXNldC5pZCwgMTApXG59XG5cblxuXG4vLyBXRUJQ
QUNLIEZPT1RFUiAvL1xuLy8gLi92aWV3LmpzIiwiLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xu
aW1wb3J0IHtvbkxvYWR9IGZyb20gJy4vYXBwJ1xuaW1wb3J0IHskb259IGZyb20gJy4vaGVscGVy
cydcblxuLy8gdGhpcyBpcyBvbmx5IHJlbGV2YW50IHdoZW4gdXNpbmcgYGhvdGAgbW9kZSB3aXRo
IHdlYnBhY2tcbi8vIHNwZWNpYWwgdGhhbmtzIHRvIEVyaWMgQ2xlbW1vbnM6IGh0dHBzOi8vZ2l0
aHViLmNvbS9lcmljY2xlbW1vbnMvd2VicGFjay1ob3Qtc2VydmVyLWV4YW1wbGVcbmNvbnN0IHJl
bG9hZGluZyA9IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZSdcbmlmIChtb2R1bGUu
aG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KGZ1bmN0aW9uKGVycikge1xuICB9KVxuICBpZiAo
cmVsb2FkaW5nKSB7XG4gICAgb25Mb2FkKClcbiAgfSBlbHNlIHtcbiAgICBib290c3RyYXAoKVxu
ICB9XG59IGVsc2Uge1xuICBib290c3RyYXAoKVxufVxuXG5mdW5jdGlvbiBib290c3RyYXAoKSB7
XG4gICRvbih3aW5kb3csICdsb2FkJywgb25Mb2FkKVxuICAkb24od2luZG93LCAnaGFzaGNoYW5n
ZScsIG9uTG9hZClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL2Jvb3RzdHJh
cC5qcyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3Qu
MjEwMjA0MGM5YTZlMDRjYzA0NmUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlz
dC9idW5kbGUubWFuaWZlc3QuMjEwMjA0MGM5YTZlMDRjYzA0NmUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGZj
YjAwMmU4YjJkNDAwN2Y3Y2I3NmQ1OWE0NmEyNDRiOWM0YjY3NQotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVzdC4yMTAyMDQw
YzlhNmUwNGNjMDQ2ZS5qcwpAQCAtMCwwICsxLDIgQEAKKyFmdW5jdGlvbihlKXtmdW5jdGlvbiBy
KG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgbz10W25dPXtpOm4sbDohMSxleHBv
cnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxyKSxvLmw9ITAs
by5leHBvcnRzfXZhciBuPXdpbmRvdy53ZWJwYWNrSnNvbnA7d2luZG93LndlYnBhY2tKc29ucD1m
dW5jdGlvbih0LHUsYyl7Zm9yKHZhciBpLGEsZixsPTAscz1bXTtsPHQubGVuZ3RoO2wrKylhPXRb
bF0sb1thXSYmcy5wdXNoKG9bYV1bMF0pLG9bYV09MDtmb3IoaSBpbiB1KU9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbCh1LGkpJiYoZVtpXT11W2ldKTtmb3IobiYmbih0LHUsYyk7
cy5sZW5ndGg7KXMuc2hpZnQoKSgpO2lmKGMpZm9yKGw9MDtsPGMubGVuZ3RoO2wrKylmPXIoci5z
PWNbbF0pO3JldHVybiBmfTt2YXIgdD17fSxvPXsyOjB9O3IuZT1mdW5jdGlvbihlKXtmdW5jdGlv
biBuKCl7dS5vbmVycm9yPXUub25sb2FkPW51bGwsY2xlYXJUaW1lb3V0KGMpO3ZhciByPW9bZV07
MCE9PXImJihyJiZyWzFdKG5ldyBFcnJvcigiTG9hZGluZyBjaHVuayAiK2UrIiBmYWlsZWQuIikp
LG9bZV09dm9pZCAwKX1pZigwPT09b1tlXSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7aWYob1tl
XSlyZXR1cm4gb1tlXVsyXTt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVh
ZCIpWzBdLHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7dS50eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiLHUuY2hhcnNldD0idXRmLTgiLHUuYXN5bmM9ITAsdS50aW1lb3V0PTEyZTQsdS5z
cmM9ci5wKyJidW5kbGUuIitlKyIuIit7MDoiNzFiYjFmNjcxZTRlNjU2MDRkMDUiLDE6ImIxNmNj
MDhlMDE2ZDA3ODg2ZjVmIn1bZV0rIi5qcyI7dmFyIGM9c2V0VGltZW91dChuLDEyZTQpO3Uub25l
cnJvcj11Lm9ubG9hZD1uLHQuYXBwZW5kQ2hpbGQodSk7dmFyIGk9bmV3IFByb21pc2UoZnVuY3Rp
b24ocixuKXtvW2VdPVtyLG5dfSk7cmV0dXJuIG9bZV1bMl09aX0sci5tPWUsci5jPXQsci5pPWZ1
bmN0aW9uKGUpe3JldHVybiBlfSxyLmQ9ZnVuY3Rpb24oZSxyLG4pe09iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLHIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpufSl9LHIubj1mdW5j
dGlvbihlKXt2YXIgbj1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZVsiZGVmYXVs
dCJdfTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gci5kKG4sImEiLG4pLG59LHIubz1mdW5j
dGlvbihlLHIpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxy
KX0sci5wPSIiLHIub2U9ZnVuY3Rpb24oZSl7dGhyb3cgY29uc29sZS5lcnJvcihlKSxlfX0oW10p
OworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLm1hbmlmZXN0LjIxMDIwNDBjOWE2ZTA0Y2Mw
NDZlLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVzdC4yMTAyMDQwYzlhNmUw
NGNjMDQ2ZS5qcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUu
bWFuaWZlc3QuMjEwMjA0MGM5YTZlMDRjYzA0NmUuanMubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZTE5YTlk
YWUyNDdlMmVkZmMyOTIxZDdmZmY1OWUyOGE2ZWFlODIKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUubWFuaWZlc3QuMjEwMjA0MGM5YTZl
MDRjYzA0NmUuanMubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3
ZWJwYWNrOi8vL2J1bmRsZS5tYW5pZmVzdC4yMTAyMDQwYzlhNmUwNGNjMDQ2ZS5qcyIsIndlYnBh
Y2s6Ly8vd2VicGFjay9ib290c3RyYXAgODA0Zjg0MjUzZTIwZThlZWU4YTgiXSwibmFtZXMiOlsi
bW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImluc3RhbGxlZE1vZHVs
ZXMiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJjYWxsIiwicGFyZW50SnNvbnBGdW5jdGlv
biIsIndpbmRvdyIsImNodW5rSWRzIiwibW9yZU1vZHVsZXMiLCJleGVjdXRlTW9kdWxlcyIsImNo
dW5rSWQiLCJyZXN1bHQiLCJyZXNvbHZlcyIsImxlbmd0aCIsImluc3RhbGxlZENodW5rcyIsInB1
c2giLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInNoaWZ0IiwicyIsIjIi
LCJlIiwib25TY3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsIm9uZXJyb3IiLCJvbmxvYWQiLCJjbGVh
clRpbWVvdXQiLCJ0aW1lb3V0IiwiY2h1bmsiLCJFcnJvciIsInVuZGVmaW5lZCIsIlByb21pc2Ui
LCJyZXNvbHZlIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJjcmVh
dGVFbGVtZW50IiwidHlwZSIsImNoYXJzZXQiLCJhc3luYyIsInNyYyIsInAiLCIwIiwiMSIsInNl
dFRpbWVvdXQiLCJhcHBlbmRDaGlsZCIsInByb21pc2UiLCJyZWplY3QiLCJtIiwiYyIsInZhbHVl
IiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVu
dW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJvYmplY3QiLCJwcm9wZXJ0eSIs
Im9lIiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQ0FBUyxTQUFVQSxHQ3FD
bkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFFLE9B
R0EsSUFBQUMsR0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FBQSxFQUNBSCxXQVVBLE9B
TkFKLEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVBQUFF
LEdBQUEsRUFHQUYsRUFBQUQsUUF4REEsR0FBQUssR0FBQUMsT0FBQSxZQUNBQSxRQUFBLHNCQUFB
QyxFQUFBQyxFQUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMsRUFBQVQsRUFBQSxFQUFB
VSxLQUNRVixFQUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVBQUFMLEdBQ0FZLEVBQUFK
LElBQ0FFLEVBQUFHLEtBQUFELEVBQUFKLEdBQUEsSUFDQUksRUFBQUosR0FBQSxDQUVBLEtBQUFa
LElBQUFVLEdBQ0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFWLEtBQ0FGLEVBQUFFLEdB
QUFVLEVBQUFWLEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FDQUcsRUFBQUMsUUFDQUQs
RUFBQU8sU0FDQSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFBQU8sRUFBQUksT0FBMkJY
LElBQ3ZDUyxFQUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFBUyxHQUlBLElBQUFaLE1B
R0FlLEdBQ0FPLEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixHQW1CQSxRQUFBYSxLQUVB
QyxFQUFBQyxRQUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0EsSUFBQUMsR0FBQWYsRUFB
QUosRUFDQSxLQUFBbUIsSUFDQUEsS0FBQSxNQUFBQyxPQUFBLGlCQUFBcEIsRUFBQSxhQUNBSSxF
QUFBSixHQUFBcUIsUUF6QkEsT0FBQWpCLEVBQUFKLEdBQ0EsTUFBQXNCLFNBQUFDLFNBR0EsSUFB
QW5CLEVBQUFKLEdBQ0EsTUFBQUksR0FBQUosR0FBQSxFQUdBLElBQUF3QixHQUFBQyxTQUFBQyxx
QkFBQSxXQUNBWixFQUFBVyxTQUFBRSxjQUFBLFNBQ0FiLEdBQUFjLEtBQUEsa0JBQ0FkLEVBQUFl
LFFBQUEsUUFDQWYsRUFBQWdCLE9BQUEsRUFDQWhCLEVBQUFJLFFBQUEsS0FFQUosRUFBQWlCLElB
QUE1QyxFQUFBNkMsRUFBQSxVQUFBaEMsRUFBQSxLQUFxRWlDLEVBQUEsdUJBQUFDLEVBQUEsd0JB
QXNEbEMsR0FBQSxLQUMzSCxJQUFBa0IsR0FBQWlCLFdBQUF0QixFQUFBLEtBQ0FDLEdBQUFDLFFB
QUFELEVBQUFFLE9BQUFILEVBV0FXLEVBQUFZLFlBQUF0QixFQUVBLElBQUF1QixHQUFBLEdBQUFm
LFNBQUEsU0FBQUMsRUFBQWUsR0FDQWxDLEVBQUFKLElBQUF1QixFQUFBZSxJQUVBLE9BQUFsQyxH
QUFBSixHQUFBLEdBQUFxQyxHQUlBbEQsRUFBQW9ELEVBQUFyRCxFQUdBQyxFQUFBcUQsRUFBQW5E
LEVBR0FGLEVBQUFLLEVBQUEsU0FBQWlELEdBQTJDLE1BQUFBLElBRzNDdEQsRUFBQXVELEVBQUEs
U0FBQXBELEVBQUFxRCxFQUFBQyxHQUNBdEMsT0FBQXVDLGVBQUF2RCxFQUFBcUQsR0FDQUcsY0FB
QSxFQUNBQyxZQUFBLEVBQ0FDLElBQUFKLEtBS0F6RCxFQUFBOEQsRUFBQSxTQUFBMUQsR0FDQSxH
QUFBcUQsR0FBQXJELEtBQUEyRCxXQUNBLFdBQTJCLE1BQUEzRCxHQUFBLFlBQzNCLFdBQWlDLE1B
QUFBLEdBRWpDLE9BREFKLEdBQUF1RCxFQUFBRSxFQUFBLElBQUFBLEdBQ0FBLEdBSUF6RCxFQUFB
Z0UsRUFBQSxTQUFBQyxFQUFBQyxHQUFzRCxNQUFBL0MsUUFBQUMsVUFBQUMsZUFBQWQsS0FBQTBE
LEVBQUFDLElBR3REbEUsRUFBQTZDLEVBQUEsR0FHQTdDLEVBQUFtRSxHQUFBLFNBQUFDLEdBQThE
LEtBQXBCQyxTQUFBQyxNQUFBRixHQUFvQkEiLCJmaWxlIjoiYnVuZGxlLm1hbmlmZXN0LjIxMDIw
NDBjOWE2ZTA0Y2MwNDZlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKi8gKGZ1bmN0aW9u
KG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBpbnN0YWxsIGEg
SlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbi8qKioqKiovIFx0dmFyIHBhcmVudEpz
b25wRnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4vKioqKioqLyBcdHdpbmRv
d1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNrKGNodW5r
SWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHQvLyBhZGQg
XCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbi8qKioqKiovIFx0XHQvLyB0
aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbi8q
KioqKiovIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9IFtdLCBy
ZXN1bHQ7XG4vKioqKioqLyBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcbi8q
KioqKiovIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbi8qKioqKiovIFx0XHRcdGlmKGlu
c3RhbGxlZENodW5rc1tjaHVua0lkXSlcbi8qKioqKiovIFx0XHRcdFx0cmVzb2x2ZXMucHVzaChp
bnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuLyoqKioqKi8gXHRcdFx0aW5zdGFsbGVkQ2h1
bmtzW2NodW5rSWRdID0gMDtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Zm9yKG1vZHVs
ZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRpZihPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuLyoqKioqKi8g
XHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcbi8qKioq
KiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0aWYocGFyZW50SnNvbnBG
dW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4ZWN1
dGVNb2R1bGVzKTtcbi8qKioqKiovIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpXG4vKioqKioq
LyBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4vKioqKioqLyBcdFx0aWYoZXhlY3V0ZU1vZHVs
ZXMpIHtcbi8qKioqKiovIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRlTW9kdWxlcy5sZW5ndGg7
IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9f
d2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbi8qKioqKiovIFx0XHRc
dH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0cmV0dXJuIHJlc3VsdDtcbi8qKioqKiov
IFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiov
IFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIG9i
amVjdHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLyoqKioqKi8gXHR2YXIg
aW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdDI6IDBcbi8qKioqKiovIFx0fTtcbi8q
KioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1
bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioq
LyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5z
dGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVk
TW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3Jl
YXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0
XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBc
dFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRc
dFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQv
LyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVs
ZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxl
IGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioq
KioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0
XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioq
LyBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8qKioqKiov
IFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVFbnN1cmUo
Y2h1bmtJZCkge1xuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9PT0g
MClcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbi8qKioqKiovXG4v
KioqKioqLyBcdFx0Ly8gYW4gUHJvbWlzZSBtZWFucyBcImN1cnJlbnRseSBsb2FkaW5nXCIuXG4v
KioqKioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4vKioqKioqLyBcdFx0
XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdO1xuLyoqKioqKi8gXHRcdH1cbi8q
KioqKiovIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdFx0dmFyIGhlYWQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuLyoqKioqKi8gXHRc
dHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbi8qKioqKiov
IFx0XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuLyoqKioqKi8gXHRcdHNjcmlw
dC5jaGFyc2V0ID0gJ3V0Zi04Jztcbi8qKioqKiovIFx0XHRzY3JpcHQuYXN5bmMgPSB0cnVlO1xu
LyoqKioqKi8gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuLyoqKioqKi9cbi8qKioqKiov
IFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJidW5kbGUuXCIgKyBj
aHVua0lkICsgXCIuXCIgKyB7XCIwXCI6XCI3MWJiMWY2NzFlNGU2NTYwNGQwNVwiLFwiMVwiOlwi
YjE2Y2MwOGUwMTZkMDc4ODZmNWZcIn1bY2h1bmtJZF0gKyBcIi5qc1wiO1xuLyoqKioqKi8gXHRc
dHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDApO1xuLyoq
KioqKi8gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG9uU2NyaXB0Q29tcGxl
dGU7XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0ZSgpIHtcbi8qKioqKiov
IFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5cbi8qKioqKiovIFx0XHRcdHNjcmlwdC5v
bmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4vKioqKioqLyBcdFx0XHRjbGVhclRpbWVv
dXQodGltZW91dCk7XG4vKioqKioqLyBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRDaHVua3Nb
Y2h1bmtJZF07XG4vKioqKioqLyBcdFx0XHRpZihjaHVuayAhPT0gMCkge1xuLyoqKioqKi8gXHRc
dFx0XHRpZihjaHVuaykgY2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcgKyBjaHVu
a0lkICsgJyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1
bmtJZF0gPSB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0fTtcbi8q
KioqKiovIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4vKioqKioqL1xuLyoqKioqKi8g
XHRcdHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7
XG4vKioqKioqLyBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVq
ZWN0XTtcbi8qKioqKiovIFx0XHR9KTtcbi8qKioqKiovIFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1
bmtzW2NodW5rSWRdWzJdID0gcHJvbWlzZTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioq
KioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18p
XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xu
LyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBh
Y2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0
Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9yeSBpbXBvcnRzIHdpdGggdGhl
IGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5j
dGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBk
ZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb3J5IGV4cG9ydHNcbi8qKioqKiovIFx0X193
ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4v
KioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioq
KiovIFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRlbnVtZXJhYmxl
OiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHR9KTtcbi8q
KioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVu
Y3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioq
LyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8g
XHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8g
XHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9
IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBt
b2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2En
LCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4v
KioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBw
cm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9i
amVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1
YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8q
KioqKiovXG4vKioqKioqLyBcdC8vIG9uIGVycm9yIGZ1bmN0aW9uIGZvciBhc3luYyBsb2FkaW5n
XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIpIHsgY29u
c29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKi9cbi8qKioqKiovIChbXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGJ1bmRs
ZS5tYW5pZmVzdC4yMTAyMDQwYzlhNmUwNGNjMDQ2ZS5qcyIsIiBcdC8vIGluc3RhbGwgYSBKU09O
UCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuIFx0dmFyIHBhcmVudEpzb25wRnVuY3Rpb24g
PSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4gXHR3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl0g
PSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywgbW9yZU1vZHVsZXMsIGV4
ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVs
ZXMgb2JqZWN0LFxuIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQg
YW5kIGZpcmUgY2FsbGJhY2tcbiBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMCwgcmVz
b2x2ZXMgPSBbXSwgcmVzdWx0O1xuIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7IGkrKykg
e1xuIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxsZWRDaHVu
a3NbY2h1bmtJZF0pXG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5rc1tjaHVu
a0lkXVswXSk7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbiBcdFx0fVxu
IFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRpZihPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuIFx0
XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4gXHRcdFx0
fVxuIFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25wRnVuY3Rp
b24oY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4gXHRcdHdoaWxlKHJl
c29sdmVzLmxlbmd0aClcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdGlmKGV4ZWN1
dGVNb2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVNb2R1bGVzLmxlbmd0aDsg
aSsrKSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19y
ZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBcdFx0XHR9XG4gXHRcdH1cbiBcdFx0
cmV0dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBp
bnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFu
ZCBsb2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0MjogMFxu
IFx0fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFj
a19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4g
Y2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJu
IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEg
bmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9
IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0
XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhl
Y3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9k
dWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
O1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0
cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJl
dHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuIFx0Ly8gVGhpcyBmaWxlIGNvbnRhaW5zIG9u
bHkgdGhlIGVudHJ5IGNodW5rLlxuIFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9y
IGFkZGl0aW9uYWwgY2h1bmtzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSBmdW5jdGlvbiBy
ZXF1aXJlRW5zdXJlKGNodW5rSWQpIHtcbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRd
ID09PSAwKVxuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblxuIFx0XHQvLyBhbiBQ
cm9taXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFsbGVkQ2h1
bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rc1tjaHVua0lkXVsy
XTtcbiBcdFx0fVxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4gXHRcdHZhciBoZWFkID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiBcdFx0dmFyIHNjcmlw
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRzY3JpcHQudHlwZSA9
ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7XG4gXHRc
dHNjcmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuXG4g
XHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcImJ1bmRsZS5cIiArIGNo
dW5rSWQgKyBcIi5cIiArIHtcIjBcIjpcIjcxYmIxZjY3MWU0ZTY1NjA0ZDA1XCIsXCIxXCI6XCJi
MTZjYzA4ZTAxNmQwNzg4NmY1ZlwifVtjaHVua0lkXSArIFwiLmpzXCI7XG4gXHRcdHZhciB0aW1l
b3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDApO1xuIFx0XHRzY3JpcHQu
b25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlO1xuIFx0XHRmdW5jdGlv
biBvblNjcmlwdENvbXBsZXRlKCkge1xuIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5c
biBcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuIFx0XHRcdGNs
ZWFyVGltZW91dCh0aW1lb3V0KTtcbiBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRDaHVua3Nb
Y2h1bmtJZF07XG4gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbiBcdFx0XHRcdGlmKGNodW5rKSBj
aHVua1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZhaWxlZC4n
KSk7XG4gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4gXHRc
dFx0fVxuIFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiBcdFx0dmFy
IHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiBcdFx0
XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbiBcdFx0fSk7
XG4gXHRcdHJldHVybiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMl0gPSBwcm9taXNlO1xuIFx0
fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNf
XylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0
aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1
bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb3J5IGltcG9y
dHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBm
dW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIg
ZnVuY3Rpb24gZm9yIGhhcm1vcnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0g
ZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0
XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdH0pO1xuIFx0fTtc
blxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRo
IG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9u
KG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxl
ID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0
J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1
bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtc
biBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2Jq
ZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhf
X1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gb24gZXJyb3IgZnVu
Y3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5j
dGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG5cblxuXG4vLyBX
RUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgODA0Zjg0MjUzZTIwZThlZWU4
YTgiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5p
bGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LmE1
NTAzNGI0MjRjNzk1YjFhOWE4LmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
YnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlOWM4YmI3Y2YyMjgzZjM1ZjRkNjc0N2ZhMTdhYTNhZjk2ZDdlNDcwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlh
OC5qcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIWZ1bmN0aW9uKGUpe2Z1bmN0aW9u
IHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiExLGV4
cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubD0h
MCxvLmV4cG9ydHN9dmFyIG49d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25w
PWZ1bmN0aW9uKHQsdSxhKXtmb3IodmFyIGksYyxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsrKWM9
dFtsXSxvW2NdJiZzLnB1c2gob1tjXVswXSksb1tjXT0wO2ZvcihpIGluIHUpT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUsaSkmJihlW2ldPXVbaV0pO2ZvcihuJiZuKHQsdSxh
KTtzLmxlbmd0aDspcy5zaGlmdCgpKCk7aWYoYSlmb3IobD0wO2w8YS5sZW5ndGg7bCsrKWY9cihy
LnM9YVtsXSk7cmV0dXJuIGZ9O3ZhciB0PXt9LG89ezI6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1bmN0
aW9uIG4oKXt1Lm9uZXJyb3I9dS5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQoYSk7dmFyIHI9b1tl
XTswIT09ciYmKHImJnJbMV0obmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxlZC4i
KSksb1tlXT12b2lkIDApfWlmKDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZihv
W2VdKXJldHVybiBvW2VdWzJdO3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJo
ZWFkIilbMF0sdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt1LnR5cGU9InRleHQv
amF2YXNjcmlwdCIsdS5jaGFyc2V0PSJ1dGYtOCIsdS5hc3luYz0hMCx1LnRpbWVvdXQ9MTJlNCx1
LnNyYz1yLnArImJ1bmRsZS4iK2UrIi4iK3swOiI5ZGViYjFiMGE5NGYxNGQwZWJlOSIsMToiYmFk
ZTJjYjg5OTJkOGE2OGQwZDcifVtlXSsiLmpzIjt2YXIgYT1zZXRUaW1lb3V0KG4sMTJlNCk7dS5v
bmVycm9yPXUub25sb2FkPW4sdC5hcHBlbmRDaGlsZCh1KTt2YXIgaT1uZXcgUHJvbWlzZShmdW5j
dGlvbihyLG4pe29bZV09W3Isbl19KTtyZXR1cm4gb1tlXVsyXT1pfSxyLm09ZSxyLmM9dCxyLmk9
ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHIuZD1mdW5jdGlvbihlLHIsbil7T2JqZWN0LmRlZmluZVBy
b3BlcnR5KGUscix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Om59KX0sci5uPWZ1
bmN0aW9uKGUpe3ZhciBuPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlWyJkZWZh
dWx0Il19OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1
bmN0aW9uKGUscil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChl
LHIpfSxyLnA9IiIsci5vZT1mdW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShb
XSk7Ci0vLyMgc291cmNlTWFwcGluZ1VSTD1idW5kbGUubWFuaWZlc3QuYTU1MDM0YjQyNGM3OTVi
MWE5YTguanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRj
Nzk1YjFhOWE4LmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRs
ZS5tYW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5qcy5tYXAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFjYTY4MmEzYTMwNTdiMzA0MzhmZTIwYTlmMWQ4ODA0ODQ1MzEwYjUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLm1hbmlmZXN0LmE1NTAzNGI0MjRjNzk1YjFhOWE4
LmpzLm1hcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXsidmVyc2lvbiI6Mywic291cmNl
cyI6WyJ3ZWJwYWNrOi8vL2J1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5qcyIs
IndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgZjhiOWMyNzY2OTBiYTRkNWE0ZDgiXSwibmFt
ZXMiOlsibW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImluc3RhbGxl
ZE1vZHVsZXMiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJjYWxsIiwicGFyZW50SnNvbnBG
dW5jdGlvbiIsIndpbmRvdyIsImNodW5rSWRzIiwibW9yZU1vZHVsZXMiLCJleGVjdXRlTW9kdWxl
cyIsImNodW5rSWQiLCJyZXN1bHQiLCJyZXNvbHZlcyIsImxlbmd0aCIsImluc3RhbGxlZENodW5r
cyIsInB1c2giLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInNoaWZ0Iiwi
cyIsIjIiLCJlIiwib25TY3JpcHRDb21wbGV0ZSIsInNjcmlwdCIsIm9uZXJyb3IiLCJvbmxvYWQi
LCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0IiwiY2h1bmsiLCJFcnJvciIsInVuZGVmaW5lZCIsIlBy
b21pc2UiLCJyZXNvbHZlIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUi
LCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImNoYXJzZXQiLCJhc3luYyIsInNyYyIsInAiLCIwIiwi
MSIsInNldFRpbWVvdXQiLCJhcHBlbmRDaGlsZCIsInByb21pc2UiLCJyZWplY3QiLCJtIiwiYyIs
InZhbHVlIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJs
ZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJvYmplY3QiLCJwcm9w
ZXJ0eSIsIm9lIiwiZXJyIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQ0FBUyxTQUFV
QSxHQ3FDbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdB
QUFFLE9BR0EsSUFBQUMsR0FBQUYsRUFBQUQsSUFDQUksRUFBQUosRUFDQUssR0FBQSxFQUNBSCxX
QVVBLE9BTkFKLEdBQUFFLEdBQUFNLEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJ
LEVBQUFFLEdBQUEsRUFHQUYsRUFBQUQsUUF4REEsR0FBQUssR0FBQUMsT0FBQSxZQUNBQSxRQUFB
LHNCQUFBQyxFQUFBQyxFQUFBQyxHQUlBLElBREEsR0FBQVgsR0FBQVksRUFBQUMsRUFBQVQsRUFB
QSxFQUFBVSxLQUNRVixFQUFBSyxFQUFBTSxPQUFvQlgsSUFDNUJRLEVBQUFILEVBQUFMLEdBQ0FZ
LEVBQUFKLElBQ0FFLEVBQUFHLEtBQUFELEVBQUFKLEdBQUEsSUFDQUksRUFBQUosR0FBQSxDQUVB
LEtBQUFaLElBQUFVLEdBQ0FRLE9BQUFDLFVBQUFDLGVBQUFkLEtBQUFJLEVBQUFWLEtBQ0FGLEVB
QUFFLEdBQUFVLEVBQUFWLEdBSUEsS0FEQU8sS0FBQUUsRUFBQUMsRUFBQUMsR0FDQUcsRUFBQUMs
UUFDQUQsRUFBQU8sU0FDQSxJQUFBVixFQUNBLElBQUFQLEVBQUEsRUFBWUEsRUFBQU8sRUFBQUks
T0FBMkJYLElBQ3ZDUyxFQUFBZCxJQUFBdUIsRUFBQVgsRUFBQVAsR0FHQSxPQUFBUyxHQUlBLElB
QUFaLE1BR0FlLEdBQ0FPLEVBQUEsRUE2QkF4QixHQUFBeUIsRUFBQSxTQUFBWixHQW1CQSxRQUFB
YSxLQUVBQyxFQUFBQyxRQUFBRCxFQUFBRSxPQUFBLEtBQ0FDLGFBQUFDLEVBQ0EsSUFBQUMsR0FB
QWYsRUFBQUosRUFDQSxLQUFBbUIsSUFDQUEsS0FBQSxNQUFBQyxPQUFBLGlCQUFBcEIsRUFBQSxh
QUNBSSxFQUFBSixHQUFBcUIsUUF6QkEsT0FBQWpCLEVBQUFKLEdBQ0EsTUFBQXNCLFNBQUFDLFNB
R0EsSUFBQW5CLEVBQUFKLEdBQ0EsTUFBQUksR0FBQUosR0FBQSxFQUdBLElBQUF3QixHQUFBQyxT
QUFBQyxxQkFBQSxXQUNBWixFQUFBVyxTQUFBRSxjQUFBLFNBQ0FiLEdBQUFjLEtBQUEsa0JBQ0Fk
LEVBQUFlLFFBQUEsUUFDQWYsRUFBQWdCLE9BQUEsRUFDQWhCLEVBQUFJLFFBQUEsS0FFQUosRUFB
QWlCLElBQUE1QyxFQUFBNkMsRUFBQSxVQUFBaEMsRUFBQSxLQUFxRWlDLEVBQUEsdUJBQUFDLEVB
QUEsd0JBQXNEbEMsR0FBQSxLQUMzSCxJQUFBa0IsR0FBQWlCLFdBQUF0QixFQUFBLEtBQ0FDLEdB
QUFDLFFBQUFELEVBQUFFLE9BQUFILEVBV0FXLEVBQUFZLFlBQUF0QixFQUVBLElBQUF1QixHQUFB
LEdBQUFmLFNBQUEsU0FBQUMsRUFBQWUsR0FDQWxDLEVBQUFKLElBQUF1QixFQUFBZSxJQUVBLE9B
QUFsQyxHQUFBSixHQUFBLEdBQUFxQyxHQUlBbEQsRUFBQW9ELEVBQUFyRCxFQUdBQyxFQUFBcUQs
RUFBQW5ELEVBR0FGLEVBQUFLLEVBQUEsU0FBQWlELEdBQTJDLE1BQUFBLElBRzNDdEQsRUFBQXVE
LEVBQUEsU0FBQXBELEVBQUFxRCxFQUFBQyxHQUNBdEMsT0FBQXVDLGVBQUF2RCxFQUFBcUQsR0FD
QUcsY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLElBQUFKLEtBS0F6RCxFQUFBOEQsRUFBQSxTQUFBMUQs
R0FDQSxHQUFBcUQsR0FBQXJELEtBQUEyRCxXQUNBLFdBQTJCLE1BQUEzRCxHQUFBLFlBQzNCLFdB
QWlDLE1BQUFBLEdBRWpDLE9BREFKLEdBQUF1RCxFQUFBRSxFQUFBLElBQUFBLEdBQ0FBLEdBSUF6
RCxFQUFBZ0UsRUFBQSxTQUFBQyxFQUFBQyxHQUFzRCxNQUFBL0MsUUFBQUMsVUFBQUMsZUFBQWQs
S0FBQTBELEVBQUFDLElBR3REbEUsRUFBQTZDLEVBQUEsR0FHQTdDLEVBQUFtRSxHQUFBLFNBQUFD
LEdBQThELEtBQXBCQyxTQUFBQyxNQUFBRixHQUFvQkEiLCJmaWxlIjoiYnVuZGxlLm1hbmlmZXN0
LmE1NTAzNGI0MjRjNzk1YjFhOWE4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKi8gKGZ1
bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBpbnN0
YWxsIGEgSlNPTlAgY2FsbGJhY2sgZm9yIGNodW5rIGxvYWRpbmdcbi8qKioqKiovIFx0dmFyIHBh
cmVudEpzb25wRnVuY3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4vKioqKioqLyBc
dHdpbmRvd1tcIndlYnBhY2tKc29ucFwiXSA9IGZ1bmN0aW9uIHdlYnBhY2tKc29ucENhbGxiYWNr
KGNodW5rSWRzLCBtb3JlTW9kdWxlcywgZXhlY3V0ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHQv
LyBhZGQgXCJtb3JlTW9kdWxlc1wiIHRvIHRoZSBtb2R1bGVzIG9iamVjdCxcbi8qKioqKiovIFx0
XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJh
Y2tcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlSWQsIGNodW5rSWQsIGkgPSAwLCByZXNvbHZlcyA9
IFtdLCByZXN1bHQ7XG4vKioqKioqLyBcdFx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKysp
IHtcbi8qKioqKiovIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbi8qKioqKiovIFx0XHRc
dGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSlcbi8qKioqKiovIFx0XHRcdFx0cmVzb2x2ZXMu
cHVzaChpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0pO1xuLyoqKioqKi8gXHRcdFx0aW5zdGFs
bGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Zm9y
KG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG4vKioqKioqLyBcdFx0XHRpZihPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuLyoq
KioqKi8gXHRcdFx0XHRtb2R1bGVzW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtc
bi8qKioqKiovIFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0aWYocGFyZW50
SnNvbnBGdW5jdGlvbikgcGFyZW50SnNvbnBGdW5jdGlvbihjaHVua0lkcywgbW9yZU1vZHVsZXMs
IGV4ZWN1dGVNb2R1bGVzKTtcbi8qKioqKiovIFx0XHR3aGlsZShyZXNvbHZlcy5sZW5ndGgpXG4v
KioqKioqLyBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4vKioqKioqLyBcdFx0aWYoZXhlY3V0
ZU1vZHVsZXMpIHtcbi8qKioqKiovIFx0XHRcdGZvcihpPTA7IGkgPCBleGVjdXRlTW9kdWxlcy5s
ZW5ndGg7IGkrKykge1xuLyoqKioqKi8gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbi8qKioqKiov
IFx0XHRcdH1cbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0cmV0dXJuIHJlc3VsdDtcbi8q
KioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8q
KioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBc
dC8vIG9iamVjdHMgdG8gc3RvcmUgbG9hZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuLyoqKioqKi8g
XHR2YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuLyoqKioqKi8gXHRcdDI6IDBcbi8qKioqKiovIFx0
fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioq
LyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4v
KioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0
aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5z
dGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0
Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioq
KiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioq
KioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioq
Ki8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiov
IFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVz
W21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUg
bW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiov
XG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioq
KiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4v
KioqKioqLyBcdC8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8q
KioqKiovIFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1
bmtzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZSA9IGZ1bmN0aW9uIHJlcXVpcmVF
bnN1cmUoY2h1bmtJZCkge1xuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZENodW5rc1tjaHVua0lk
XSA9PT0gMClcbi8qKioqKiovIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbi8qKioq
KiovXG4vKioqKioqLyBcdFx0Ly8gYW4gUHJvbWlzZSBtZWFucyBcImN1cnJlbnRseSBsb2FkaW5n
XCIuXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4vKioqKioq
LyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdWzJdO1xuLyoqKioqKi8gXHRc
dH1cbi8qKioqKiovIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4vKioqKioqLyBcdFx0dmFy
IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuLyoqKioq
Ki8gXHRcdHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbi8q
KioqKiovIFx0XHRzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuLyoqKioqKi8gXHRc
dHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04Jztcbi8qKioqKiovIFx0XHRzY3JpcHQuYXN5bmMgPSB0
cnVlO1xuLyoqKioqKi8gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAwO1xuLyoqKioqKi9cbi8q
KioqKiovIFx0XHRzY3JpcHQuc3JjID0gX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgXCJidW5kbGUu
XCIgKyBjaHVua0lkICsgXCIuXCIgKyB7XCIwXCI6XCI5ZGViYjFiMGE5NGYxNGQwZWJlOVwiLFwi
MVwiOlwiYmFkZTJjYjg5OTJkOGE2OGQwZDdcIn1bY2h1bmtJZF0gKyBcIi5qc1wiO1xuLyoqKioq
Ki8gXHRcdHZhciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDAp
O1xuLyoqKioqKi8gXHRcdHNjcmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG9uU2NyaXB0
Q29tcGxldGU7XG4vKioqKioqLyBcdFx0ZnVuY3Rpb24gb25TY3JpcHRDb21wbGV0ZSgpIHtcbi8q
KioqKiovIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBpbiBJRS5cbi8qKioqKiovIFx0XHRcdHNj
cmlwdC5vbmVycm9yID0gc2NyaXB0Lm9ubG9hZCA9IG51bGw7XG4vKioqKioqLyBcdFx0XHRjbGVh
clRpbWVvdXQodGltZW91dCk7XG4vKioqKioqLyBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRD
aHVua3NbY2h1bmtJZF07XG4vKioqKioqLyBcdFx0XHRpZihjaHVuayAhPT0gMCkge1xuLyoqKioq
Ki8gXHRcdFx0XHRpZihjaHVuaykgY2h1bmtbMV0obmV3IEVycm9yKCdMb2FkaW5nIGNodW5rICcg
KyBjaHVua0lkICsgJyBmYWlsZWQuJykpO1xuLyoqKioqKi8gXHRcdFx0XHRpbnN0YWxsZWRDaHVu
a3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7XG4vKioqKioqLyBcdFx0XHR9XG4vKioqKioqLyBcdFx0
fTtcbi8qKioqKiovIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4vKioqKioqL1xuLyoq
KioqKi8gXHRcdHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVq
ZWN0KSB7XG4vKioqKioqLyBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2
ZSwgcmVqZWN0XTtcbi8qKioqKiovIFx0XHR9KTtcbi8qKioqKiovIFx0XHRyZXR1cm4gaW5zdGFs
bGVkQ2h1bmtzW2NodW5rSWRdWzJdID0gcHJvbWlzZTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiov
XG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1
bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioq
KioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRf
X3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioq
KiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9yeSBpbXBvcnRzIHdp
dGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkg
PSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8g
XHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb3J5IGV4cG9ydHNcbi8qKioqKiov
IFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVy
KSB7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtc
bi8qKioqKiovIFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRlbnVt
ZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHR9
KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBv
cnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4v
KioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoq
KioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoq
KioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVs
dCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJl
dHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRl
ciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBc
dH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2Jq
ZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJw
YWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJc
Ijtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIG9uIGVycm9yIGZ1bmN0aW9uIGZvciBhc3luYyBs
b2FkaW5nXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ub2UgPSBmdW5jdGlvbihlcnIp
IHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG4vKioqKioqLyB9KVxuLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKi9cbi8qKioqKiovIChbXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8v
IGJ1bmRsZS5tYW5pZmVzdC5hNTUwMzRiNDI0Yzc5NWIxYTlhOC5qcyIsIiBcdC8vIGluc3RhbGwg
YSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xuIFx0dmFyIHBhcmVudEpzb25wRnVu
Y3Rpb24gPSB3aW5kb3dbXCJ3ZWJwYWNrSnNvbnBcIl07XG4gXHR3aW5kb3dbXCJ3ZWJwYWNrSnNv
bnBcIl0gPSBmdW5jdGlvbiB3ZWJwYWNrSnNvbnBDYWxsYmFjayhjaHVua0lkcywgbW9yZU1vZHVs
ZXMsIGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhl
IG1vZHVsZXMgb2JqZWN0LFxuIFx0XHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBs
b2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcbiBcdFx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0g
MCwgcmVzb2x2ZXMgPSBbXSwgcmVzdWx0O1xuIFx0XHRmb3IoO2kgPCBjaHVua0lkcy5sZW5ndGg7
IGkrKykge1xuIFx0XHRcdGNodW5rSWQgPSBjaHVua0lkc1tpXTtcbiBcdFx0XHRpZihpbnN0YWxs
ZWRDaHVua3NbY2h1bmtJZF0pXG4gXHRcdFx0XHRyZXNvbHZlcy5wdXNoKGluc3RhbGxlZENodW5r
c1tjaHVua0lkXVswXSk7XG4gXHRcdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcbiBc
dFx0fVxuIFx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcbiBcdFx0XHRpZihPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkg
e1xuIFx0XHRcdFx0bW9kdWxlc1ttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG4g
XHRcdFx0fVxuIFx0XHR9XG4gXHRcdGlmKHBhcmVudEpzb25wRnVuY3Rpb24pIHBhcmVudEpzb25w
RnVuY3Rpb24oY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBleGVjdXRlTW9kdWxlcyk7XG4gXHRcdHdo
aWxlKHJlc29sdmVzLmxlbmd0aClcbiBcdFx0XHRyZXNvbHZlcy5zaGlmdCgpKCk7XG4gXHRcdGlm
KGV4ZWN1dGVNb2R1bGVzKSB7XG4gXHRcdFx0Zm9yKGk9MDsgaSA8IGV4ZWN1dGVNb2R1bGVzLmxl
bmd0aDsgaSsrKSB7XG4gXHRcdFx0XHRyZXN1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2Vi
cGFja19yZXF1aXJlX18ucyA9IGV4ZWN1dGVNb2R1bGVzW2ldKTtcbiBcdFx0XHR9XG4gXHRcdH1c
biBcdFx0cmV0dXJuIHJlc3VsdDtcbiBcdH07XG5cbiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBc
dHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIG9iamVjdHMgdG8gc3RvcmUgbG9h
ZGVkIGFuZCBsb2FkaW5nIGNodW5rc1xuIFx0dmFyIGluc3RhbGxlZENodW5rcyA9IHtcbiBcdFx0
MjogMFxuIFx0fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9f
d2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUg
aXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0
cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3Jl
YXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1v
ZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlk
LFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0
Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNh
bGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxl
LmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4g
XHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuIFx0Ly8gVGhpcyBmaWxlIGNvbnRh
aW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuIFx0Ly8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rp
b24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSBmdW5j
dGlvbiByZXF1aXJlRW5zdXJlKGNodW5rSWQpIHtcbiBcdFx0aWYoaW5zdGFsbGVkQ2h1bmtzW2No
dW5rSWRdID09PSAwKVxuIFx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblxuIFx0XHQv
LyBhbiBQcm9taXNlIG1lYW5zIFwiY3VycmVudGx5IGxvYWRpbmdcIi5cbiBcdFx0aWYoaW5zdGFs
bGVkQ2h1bmtzW2NodW5rSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZENodW5rc1tjaHVu
a0lkXVsyXTtcbiBcdFx0fVxuIFx0XHQvLyBzdGFydCBjaHVuayBsb2FkaW5nXG4gXHRcdHZhciBo
ZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiBcdFx0dmFy
IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuIFx0XHRzY3JpcHQu
dHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuIFx0XHRzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7
XG4gXHRcdHNjcmlwdC5hc3luYyA9IHRydWU7XG4gXHRcdHNjcmlwdC50aW1lb3V0ID0gMTIwMDAw
O1xuXG4gXHRcdHNjcmlwdC5zcmMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBcImJ1bmRsZS5c
IiArIGNodW5rSWQgKyBcIi5cIiArIHtcIjBcIjpcIjlkZWJiMWIwYTk0ZjE0ZDBlYmU5XCIsXCIx
XCI6XCJiYWRlMmNiODk5MmQ4YTY4ZDBkN1wifVtjaHVua0lkXSArIFwiLmpzXCI7XG4gXHRcdHZh
ciB0aW1lb3V0ID0gc2V0VGltZW91dChvblNjcmlwdENvbXBsZXRlLCAxMjAwMDApO1xuIFx0XHRz
Y3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBvblNjcmlwdENvbXBsZXRlO1xuIFx0XHRm
dW5jdGlvbiBvblNjcmlwdENvbXBsZXRlKCkge1xuIFx0XHRcdC8vIGF2b2lkIG1lbSBsZWFrcyBp
biBJRS5cbiBcdFx0XHRzY3JpcHQub25lcnJvciA9IHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuIFx0
XHRcdGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiBcdFx0XHR2YXIgY2h1bmsgPSBpbnN0YWxsZWRD
aHVua3NbY2h1bmtJZF07XG4gXHRcdFx0aWYoY2h1bmsgIT09IDApIHtcbiBcdFx0XHRcdGlmKGNo
dW5rKSBjaHVua1sxXShuZXcgRXJyb3IoJ0xvYWRpbmcgY2h1bmsgJyArIGNodW5rSWQgKyAnIGZh
aWxlZC4nKSk7XG4gXHRcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSB1bmRlZmluZWQ7
XG4gXHRcdFx0fVxuIFx0XHR9O1xuIFx0XHRoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG5cbiBc
dFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtc
biBcdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0gPSBbcmVzb2x2ZSwgcmVqZWN0XTtcbiBc
dFx0fSk7XG4gXHRcdHJldHVybiBpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMl0gPSBwcm9taXNl
O1xuIFx0fTtcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21v
ZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4
cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxs
ZWRNb2R1bGVzO1xuXG4gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb3J5
IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9f
LmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG5cbiBcdC8vIGRlZmluZSBn
ZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vcnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVf
Xy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxc
biBcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdH0pO1xu
IFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0
eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1
bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2Vz
TW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydk
ZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVy
biBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0
dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rp
b24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGlj
X3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gb24gZXJy
b3IgZnVuY3Rpb24gZm9yIGFzeW5jIGxvYWRpbmdcbiBcdF9fd2VicGFja19yZXF1aXJlX18ub2Ug
PSBmdW5jdGlvbihlcnIpIHsgY29uc29sZS5lcnJvcihlcnIpOyB0aHJvdyBlcnI7IH07XG5cblxu
XG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgZjhiOWMyNzY2OTBi
YTRkNWE0ZDgiXSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212
Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRv
ci5iMTZjYzA4ZTAxNmQwNzg4NmY1Zi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9k
aXN0L2J1bmRsZS52ZW5kb3IuYjE2Y2MwOGUwMTZkMDc4ODZmNWYuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI2
MGFkOGY3ZGY0YmYwYWM3MDFkMDQxY2RmMWNlZGExMTgyOGUwMwotLS0gL2Rldi9udWxsCisrKyBi
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuYjE2Y2MwOGUw
MTZkMDc4ODZmNWYuanMKQEAgLTAsMCArMSwyIEBACit3ZWJwYWNrSnNvbnAoWzEsMl0sezE6ZnVu
Y3Rpb24obix0KXt9LDEyOmZ1bmN0aW9uKG4sdCxyKXtuLmV4cG9ydHM9cigxKX0sMTM6ZnVuY3Rp
b24obix0KXtuLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gbi50b1N0cmluZz1m
dW5jdGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7dDx0aGlzLmxlbmd0aDt0Kyspe3ZhciByPXRoaXNb
dF07clsyXT9uLnB1c2goIkBtZWRpYSAiK3JbMl0rInsiK3JbMV0rIn0iKTpuLnB1c2goclsxXSl9
cmV0dXJuIG4uam9pbigiIil9LG4uaT1mdW5jdGlvbih0LHIpeyJzdHJpbmciPT10eXBlb2YgdCYm
KHQ9W1tudWxsLHQsIiJdXSk7Zm9yKHZhciBvPXt9LGk9MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFy
IGU9dGhpc1tpXVswXTsibnVtYmVyIj09dHlwZW9mIGUmJihvW2VdPSEwKX1mb3IoaT0wO2k8dC5s
ZW5ndGg7aSsrKXt2YXIgdT10W2ldOyJudW1iZXIiPT10eXBlb2YgdVswXSYmb1t1WzBdXXx8KHIm
JiF1WzJdP3VbMl09cjpyJiYodVsyXT0iKCIrdVsyXSsiKSBhbmQgKCIrcisiKSIpLG4ucHVzaCh1
KSl9fSxufX19LFsxMl0pOworLy8jIHNvdXJjZU1hcHBpbmdVUkw9YnVuZGxlLnZlbmRvci5iMTZj
YzA4ZTAxNmQwNzg4NmY1Zi5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmIx
NmNjMDhlMDE2ZDA3ODg2ZjVmLmpzLm1hcCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9k
aXN0L2J1bmRsZS52ZW5kb3IuYjE2Y2MwOGUwMTZkMDc4ODZmNWYuanMubWFwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcxNmIxYzUzYmYxODA0ZTNhMTQ5NDAxNzhmMjI2ODc1YWVjZWUzNDcKLS0tIC9kZXYvbnVsbAor
KysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9yLmIxNmNj
MDhlMDE2ZDA3ODg2ZjVmLmpzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJj
ZXMiOlsid2VicGFjazovLy9idW5kbGUudmVuZG9yLmIxNmNjMDhlMDE2ZDA3ODg2ZjVmLmpzIiwi
d2VicGFjazovLy8uLi9+L2Nzcy1sb2FkZXIvbGliL2Nzcy1iYXNlLmpzIl0sIm5hbWVzIjpbIndl
YnBhY2tKc29ucCIsIjEiLCJtb2R1bGUiLCJleHBvcnRzIiwiMTIiLCJfX3dlYnBhY2tfcmVxdWly
ZV9fIiwiMTMiLCJsaXN0IiwidG9TdHJpbmciLCJyZXN1bHQiLCJpIiwidGhpcyIsImxlbmd0aCIs
Iml0ZW0iLCJwdXNoIiwiam9pbiIsIm1vZHVsZXMiLCJtZWRpYVF1ZXJ5IiwiYWxyZWFkeUltcG9y
dGVkTW9kdWxlcyIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQUEsY0FBYyxFQUFFLElBRVZDLEVBQ0Es
U0FBU0MsRUFBUUMsS0FNakJDLEdBQ0EsU0FBU0YsRUFBUUMsRUFBU0UsR0FFaENILEVBQU9DLFFB
QVVFLEVBQW9CLElBSy9CQyxHQUNBLFNBQVNKLEVBQVFDLEdDYnZCRCxFQUFBQyxRQUFBLFdBQ0Es
R0FBQUksS0EwQ0EsT0F2Q0FBLEdBQUFDLFNBQUEsV0FFQSxPQURBQyxNQUNBQyxFQUFBLEVBQWdC
QSxFQUFBQyxLQUFBQyxPQUFpQkYsSUFBQSxDQUNqQyxHQUFBRyxHQUFBRixLQUFBRCxFQUNBRyxH
QUFBLEdBQ0FKLEVBQUFLLEtBQUEsVUFBQUQsRUFBQSxPQUF3Q0EsRUFBQSxRQUV4Q0osRUFBQUss
S0FBQUQsRUFBQSxJQUdBLE1BQUFKLEdBQUFNLEtBQUEsS0FJQVIsRUFBQUcsRUFBQSxTQUFBTSxF
QUFBQyxHQUNBLGdCQUFBRCxLQUNBQSxJQUFBLEtBQUFBLEVBQUEsS0FFQSxRQURBRSxNQUNBUixF
QUFBLEVBQWdCQSxFQUFBQyxLQUFBQyxPQUFpQkYsSUFBQSxDQUNqQyxHQUFBUyxHQUFBUixLQUFB
RCxHQUFBLEVBQ0EsaUJBQUFTLEtBQ0FELEVBQUFDLElBQUEsR0FFQSxJQUFBVCxFQUFBLEVBQVlB
LEVBQUFNLEVBQUFKLE9BQW9CRixJQUFBLENBQ2hDLEdBQUFHLEdBQUFHLEVBQUFOLEVBS0EsaUJB
QUFHLEdBQUEsSUFBQUssRUFBQUwsRUFBQSxNQUNBSSxJQUFBSixFQUFBLEdBQ0FBLEVBQUEsR0FB
QUksRUFDS0EsSUFDTEosRUFBQSxPQUFBQSxFQUFBLGFBQUFJLEVBQUEsS0FFQVYsRUFBQU8sS0FB
QUQsTUFJQU4sTUQwQkciLCJmaWxlIjoiYnVuZGxlLnZlbmRvci5iMTZjYzA4ZTAxNmQwNzg4NmY1
Zi5qcyIsInNvdXJjZXNDb250ZW50IjpbIndlYnBhY2tKc29ucChbMSwyXSx7XG5cbi8qKiovIDE6
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gcmVtb3ZlZCBieSBleHRy
YWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSxcblxuLyoqKi8gMTI6XG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxubW9kdWxl
LmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXG5cbi8qKiovIH0sXG5cbi8qKiov
IDEzOlxuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8qXHJcblx0TUlUIExp
Y2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBc
clxuXHRBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXHJcbiovXHJcbi8vIGNzcyBiYXNlIGNv
ZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rp
b24oKSB7XHJcblx0dmFyIGxpc3QgPSBbXTtcclxuXHJcblx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9m
IG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xyXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0
cmluZygpIHtcclxuXHRcdHZhciByZXN1bHQgPSBbXTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkg
PCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gdGhpc1tpXTtcclxuXHRc
dFx0aWYoaXRlbVsyXSkge1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKFwiQG1lZGlhIFwiICsgaXRl
bVsyXSArIFwie1wiICsgaXRlbVsxXSArIFwifVwiKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRc
dFx0XHRyZXN1bHQucHVzaChpdGVtWzFdKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0
dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xyXG5cdH07XHJcblxyXG5cdC8vIGltcG9ydCBhIGxpc3Qg
b2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XHJcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywg
bWVkaWFRdWVyeSkge1xyXG5cdFx0aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXHJc
blx0XHRcdG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcclxuXHRcdHZhciBhbHJl
YWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5s
ZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xyXG5cdFx0XHRpZih0
eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXHJcblx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxl
c1tpZF0gPSB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5n
dGg7IGkrKykge1xyXG5cdFx0XHR2YXIgaXRlbSA9IG1vZHVsZXNbaV07XHJcblx0XHRcdC8vIHNr
aXAgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVcclxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlv
biBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNc
clxuXHRcdFx0Ly8gIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0
aCBkaWZmZXJlbnQgbWVkaWEgcXVlcmllcy5cclxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwg
bmV2ZXIgb2NjdXIgKEhleSB0aGlzIHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcclxuXHRc
dFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1v
ZHVsZXNbaXRlbVswXV0pIHtcclxuXHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7
XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gbWVkaWFRdWVyeTtcclxuXHRcdFx0XHR9IGVsc2UgaWYo
bWVkaWFRdWVyeSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwi
KSBhbmQgKFwiICsgbWVkaWFRdWVyeSArIFwiKVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRs
aXN0LnB1c2goaXRlbSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cdHJldHVybiBs
aXN0O1xyXG59O1xyXG5cblxuLyoqKi8gfVxuXG59LFsxMl0pO1xuXG5cbi8vIFdFQlBBQ0sgRk9P
VEVSIC8vXG4vLyBidW5kbGUudmVuZG9yLmIxNmNjMDhlMDE2ZDA3ODg2ZjVmLmpzIiwiLypcclxu
XHRNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNl
bnNlLnBocFxyXG5cdEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcclxuKi9cclxuLy8gY3Nz
IGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcclxubW9kdWxlLmV4cG9ydHMg
PSBmdW5jdGlvbigpIHtcclxuXHR2YXIgbGlzdCA9IFtdO1xyXG5cclxuXHQvLyByZXR1cm4gdGhl
IGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXHJcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0
aW9uIHRvU3RyaW5nKCkge1xyXG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xyXG5cdFx0Zm9yKHZhciBp
ID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0gPSB0aGlzW2ld
O1xyXG5cdFx0XHRpZihpdGVtWzJdKSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goXCJAbWVkaWEg
XCIgKyBpdGVtWzJdICsgXCJ7XCIgKyBpdGVtWzFdICsgXCJ9XCIpO1xyXG5cdFx0XHR9IGVsc2Ug
e1xyXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGl0ZW1bMV0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJc
blx0XHRyZXR1cm4gcmVzdWx0LmpvaW4oXCJcIik7XHJcblx0fTtcclxuXHJcblx0Ly8gaW1wb3J0
IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcclxuXHRsaXN0LmkgPSBmdW5jdGlvbiht
b2R1bGVzLCBtZWRpYVF1ZXJ5KSB7XHJcblx0XHRpZih0eXBlb2YgbW9kdWxlcyA9PT0gXCJzdHJp
bmdcIilcclxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xyXG5cdFx0
dmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkg
PCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XHJcblx0
XHRcdGlmKHR5cGVvZiBpZCA9PT0gXCJudW1iZXJcIilcclxuXHRcdFx0XHRhbHJlYWR5SW1wb3J0
ZWRNb2R1bGVzW2lkXSA9IHRydWU7XHJcblx0XHR9XHJcblx0XHRmb3IoaSA9IDA7IGkgPCBtb2R1
bGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHZhciBpdGVtID0gbW9kdWxlc1tpXTtcclxuXHRc
dFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxyXG5cdFx0XHQvLyB0aGlzIGltcGxl
bWVudGF0aW9uIGlzIG5vdCAxMDAlIHBlcmZlY3QgZm9yIHdlaXJkIG1lZGlhIHF1ZXJ5IGNvbWJp
bmF0aW9uc1xyXG5cdFx0XHQvLyAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBtdWx0aXBsZSB0
aW1lcyB3aXRoIGRpZmZlcmVudCBtZWRpYSBxdWVyaWVzLlxyXG5cdFx0XHQvLyAgSSBob3BlIHRo
aXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVz
KVxyXG5cdFx0XHRpZih0eXBlb2YgaXRlbVswXSAhPT0gXCJudW1iZXJcIiB8fCAhYWxyZWFkeUlt
cG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xyXG5cdFx0XHRcdGlmKG1lZGlhUXVlcnkgJiYgIWl0
ZW1bMl0pIHtcclxuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xyXG5cdFx0XHRcdH0g
ZWxzZSBpZihtZWRpYVF1ZXJ5KSB7XHJcblx0XHRcdFx0XHRpdGVtWzJdID0gXCIoXCIgKyBpdGVt
WzJdICsgXCIpIGFuZCAoXCIgKyBtZWRpYVF1ZXJ5ICsgXCIpXCI7XHJcblx0XHRcdFx0fVxyXG5c
dFx0XHRcdGxpc3QucHVzaChpdGVtKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcblx0
cmV0dXJuIGxpc3Q7XHJcbn07XHJcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFD
SyBGT09URVJcbi8vIC4uL34vY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcbi8vIG1vZHVsZSBp
ZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMSJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9idW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2Vz
MjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvYnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBk
Ny5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyNmYwMWJkNmE1OTU3OWQ2NDI1
MGZhODBhNzk3ZjdjMDAzZDllNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9idW5kbGUudmVuZG9y
LmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi13
ZWJwYWNrSnNvbnAoWzEsMl0sezE6ZnVuY3Rpb24obix0KXt9LDEyOmZ1bmN0aW9uKG4sdCxyKXtu
LmV4cG9ydHM9cigxKX0sMTM6ZnVuY3Rpb24obix0KXtuLmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIg
bj1bXTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgbj1bXSx0PTA7dDx0aGlz
Lmxlbmd0aDt0Kyspe3ZhciByPXRoaXNbdF07clsyXT9uLnB1c2goIkBtZWRpYSAiK3JbMl0rInsi
K3JbMV0rIn0iKTpuLnB1c2goclsxXSl9cmV0dXJuIG4uam9pbigiIil9LG4uaT1mdW5jdGlvbih0
LHIpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9W1tudWxsLHQsIiJdXSk7Zm9yKHZhciBvPXt9LGk9
MDtpPHRoaXMubGVuZ3RoO2krKyl7dmFyIGU9dGhpc1tpXVswXTsibnVtYmVyIj09dHlwZW9mIGUm
JihvW2VdPSEwKX1mb3IoaT0wO2k8dC5sZW5ndGg7aSsrKXt2YXIgdT10W2ldOyJudW1iZXIiPT10
eXBlb2YgdVswXSYmb1t1WzBdXXx8KHImJiF1WzJdP3VbMl09cjpyJiYodVsyXT0iKCIrdVsyXSsi
KSBhbmQgKCIrcisiKSIpLG4ucHVzaCh1KSl9fSxufX19LFsxMl0pOwotLy8jIHNvdXJjZU1hcHBp
bmdVUkw9YnVuZGxlLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcy5tYXAKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBh
Y2svZGlzdC9idW5kbGUudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmpzLm1hcCBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRsZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2
OGQwZDcuanMubWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2UyM2EzNGMyODQ2
YjhlZDJjODMzZWFlN2I2YmRiYTkxNDgwODhjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2J1bmRs
ZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuanMubWFwCisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAoteyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYnVuZGxlLnZlbmRv
ci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5qcyIsIndlYnBhY2s6Ly8vLi4vfi9jc3MtbG9hZGVyL2xp
Yi9jc3MtYmFzZS5qcyJdLCJuYW1lcyI6WyJ3ZWJwYWNrSnNvbnAiLCIxIiwibW9kdWxlIiwiZXhw
b3J0cyIsIjEyIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIjEzIiwibGlzdCIsInRvU3RyaW5nIiwi
cmVzdWx0IiwiaSIsInRoaXMiLCJsZW5ndGgiLCJpdGVtIiwicHVzaCIsImpvaW4iLCJtb2R1bGVz
IiwibWVkaWFRdWVyeSIsImFscmVhZHlJbXBvcnRlZE1vZHVsZXMiLCJpZCJdLCJtYXBwaW5ncyI6
IkFBQUFBLGNBQWMsRUFBRSxJQUVWQyxFQUNBLFNBQVNDLEVBQVFDLEtBTWpCQyxHQUNBLFNBQVNG
LEVBQVFDLEVBQVNFLEdBRWhDSCxFQUFPQyxRQUFVRSxFQUFvQixJQUsvQkMsR0FDQSxTQUFTSixF
QUFRQyxHQ2J2QkQsRUFBQUMsUUFBQSxXQUNBLEdBQUFJLEtBMENBLE9BdkNBQSxHQUFBQyxTQUFB
LFdBRUEsT0FEQUMsTUFDQUMsRUFBQSxFQUFnQkEsRUFBQUMsS0FBQUMsT0FBaUJGLElBQUEsQ0FD
akMsR0FBQUcsR0FBQUYsS0FBQUQsRUFDQUcsR0FBQSxHQUNBSixFQUFBSyxLQUFBLFVBQUFELEVB
QUEsT0FBd0NBLEVBQUEsUUFFeENKLEVBQUFLLEtBQUFELEVBQUEsSUFHQSxNQUFBSixHQUFBTSxL
QUFBLEtBSUFSLEVBQUFHLEVBQUEsU0FBQU0sRUFBQUMsR0FDQSxnQkFBQUQsS0FDQUEsSUFBQSxL
QUFBQSxFQUFBLEtBRUEsUUFEQUUsTUFDQVIsRUFBQSxFQUFnQkEsRUFBQUMsS0FBQUMsT0FBaUJG
LElBQUEsQ0FDakMsR0FBQVMsR0FBQVIsS0FBQUQsR0FBQSxFQUNBLGlCQUFBUyxLQUNBRCxFQUFB
QyxJQUFBLEdBRUEsSUFBQVQsRUFBQSxFQUFZQSxFQUFBTSxFQUFBSixPQUFvQkYsSUFBQSxDQUNo
QyxHQUFBRyxHQUFBRyxFQUFBTixFQUtBLGlCQUFBRyxHQUFBLElBQUFLLEVBQUFMLEVBQUEsTUFD
QUksSUFBQUosRUFBQSxHQUNBQSxFQUFBLEdBQUFJLEVBQ0tBLElBQ0xKLEVBQUEsT0FBQUEsRUFB
QSxhQUFBSSxFQUFBLEtBRUFWLEVBQUFPLEtBQUFELE1BSUFOLE1EMEJHIiwiZmlsZSI6ImJ1bmRs
ZS52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ3ZWJw
YWNrSnNvbnAoWzEsMl0se1xuXG4vKioqLyAxOlxuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzKSB7XG5cbi8vIHJlbW92ZWQgYnkgZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luXG5cbi8q
KiovIH0sXG5cbi8qKiovIDEyOlxuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKTtcblxuXG4vKioqLyB9LFxuXG4vKioqLyAxMzpcbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykge1xuXG4vKlxyXG5cdE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5v
cmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXHJcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBz
b2tyYVxyXG4qL1xyXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRl
clxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG5cdHZhciBsaXN0ID0gW107XHJc
blxyXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcclxuXHRs
aXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XHJcblx0XHR2YXIgcmVzdWx0ID0g
W107XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0
XHR2YXIgaXRlbSA9IHRoaXNbaV07XHJcblx0XHRcdGlmKGl0ZW1bMl0pIHtcclxuXHRcdFx0XHRy
ZXN1bHQucHVzaChcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGl0ZW1bMV0gKyBcIn1c
Iik7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0cmVzdWx0LnB1c2goaXRlbVsxXSk7XHJc
blx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQuam9pbihcIlwiKTtcclxuXHR9
O1xyXG5cclxuXHQvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxyXG5c
dGxpc3QuaSA9IGZ1bmN0aW9uKG1vZHVsZXMsIG1lZGlhUXVlcnkpIHtcclxuXHRcdGlmKHR5cGVv
ZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxyXG5cdFx0XHRtb2R1bGVzID0gW1tudWxsLCBtb2R1
bGVzLCBcIlwiXV07XHJcblx0XHR2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xyXG5c
dFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGlk
ID0gdGhpc1tpXVswXTtcclxuXHRcdFx0aWYodHlwZW9mIGlkID09PSBcIm51bWJlclwiKVxyXG5c
dFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcclxuXHRcdH1cclxuXHRc
dGZvcihpID0gMDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0dmFyIGl0ZW0g
PSBtb2R1bGVzW2ldO1xyXG5cdFx0XHQvLyBza2lwIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlXHJc
blx0XHRcdC8vIHRoaXMgaW1wbGVtZW50YXRpb24gaXMgbm90IDEwMCUgcGVyZmVjdCBmb3Igd2Vp
cmQgbWVkaWEgcXVlcnkgY29tYmluYXRpb25zXHJcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlz
IGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXHJc
blx0XHRcdC8vICBJIGhvcGUgdGhpcyB3aWxsIG5ldmVyIG9jY3VyIChIZXkgdGhpcyB3YXkgd2Ug
aGF2ZSBzbWFsbGVyIGJ1bmRsZXMpXHJcblx0XHRcdGlmKHR5cGVvZiBpdGVtWzBdICE9PSBcIm51
bWJlclwiIHx8ICFhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XHJcblx0XHRcdFx0
aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xyXG5cdFx0XHRcdFx0aXRlbVsyXSA9IG1lZGlh
UXVlcnk7XHJcblx0XHRcdFx0fSBlbHNlIGlmKG1lZGlhUXVlcnkpIHtcclxuXHRcdFx0XHRcdGl0
ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilc
IjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0bGlzdC5wdXNoKGl0ZW0pO1xyXG5cdFx0XHR9XHJc
blx0XHR9XHJcblx0fTtcclxuXHRyZXR1cm4gbGlzdDtcclxufTtcclxuXG5cbi8qKiovIH1cblxu
fSxbMTJdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gYnVuZGxlLnZlbmRvci5iYWRl
MmNiODk5MmQ4YTY4ZDBkNy5qcyIsIi8qXHJcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVu
c291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcclxuXHRBdXRob3IgVG9iaWFzIEtv
cHBlcnMgQHNva3JhXHJcbiovXHJcbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBj
c3MtbG9hZGVyXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcblx0dmFyIGxpc3Qg
PSBbXTtcclxuXHJcblx0Ly8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmlu
Z1xyXG5cdGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcclxuXHRcdHZhciBy
ZXN1bHQgPSBbXTtcclxuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7
XHJcblx0XHRcdHZhciBpdGVtID0gdGhpc1tpXTtcclxuXHRcdFx0aWYoaXRlbVsyXSkge1xyXG5c
dFx0XHRcdHJlc3VsdC5wdXNoKFwiQG1lZGlhIFwiICsgaXRlbVsyXSArIFwie1wiICsgaXRlbVsx
XSArIFwifVwiKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRyZXN1bHQucHVzaChpdGVt
WzFdKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIp
O1xyXG5cdH07XHJcblxyXG5cdC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBs
aXN0XHJcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xyXG5cdFx0
aWYodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpXHJcblx0XHRcdG1vZHVsZXMgPSBbW251
bGwsIG1vZHVsZXMsIFwiXCJdXTtcclxuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0g
e307XHJcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0
XHR2YXIgaWQgPSB0aGlzW2ldWzBdO1xyXG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVy
XCIpXHJcblx0XHRcdFx0YWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xyXG5cdFx0
fVxyXG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHR2
YXIgaXRlbSA9IG1vZHVsZXNbaV07XHJcblx0XHRcdC8vIHNraXAgYWxyZWFkeSBpbXBvcnRlZCBt
b2R1bGVcclxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0
IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcclxuXHRcdFx0Ly8gIHdoZW4gYSBt
b2R1bGUgaXMgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWVkaWEgcXVl
cmllcy5cclxuXHRcdFx0Ly8gIEkgaG9wZSB0aGlzIHdpbGwgbmV2ZXIgb2NjdXIgKEhleSB0aGlz
IHdheSB3ZSBoYXZlIHNtYWxsZXIgYnVuZGxlcylcclxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0g
IT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcclxu
XHRcdFx0XHRpZihtZWRpYVF1ZXJ5ICYmICFpdGVtWzJdKSB7XHJcblx0XHRcdFx0XHRpdGVtWzJd
ID0gbWVkaWFRdWVyeTtcclxuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xyXG5cdFx0
XHRcdFx0aXRlbVsyXSA9IFwiKFwiICsgaXRlbVsyXSArIFwiKSBhbmQgKFwiICsgbWVkaWFRdWVy
eSArIFwiKVwiO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XHJcblx0
XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG5cdHJldHVybiBsaXN0O1xyXG59O1xyXG5cblxuXG4v
Ly8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuLi9+L2Nzcy1sb2FkZXIv
bGliL2Nzcy1iYXNlLmpzXG4vLyBtb2R1bGUgaWQgPSAxM1xuLy8gbW9kdWxlIGNodW5rcyA9IDEi
XSwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxh
LWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3QvaW5kZXguaHRtbCBiL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9l
czIwMTUtYmFiZWwtd2VicGFjay9kaXN0L2luZGV4Lmh0bWwKaW5kZXggYjBlNWVkNzYyM2RlM2Ji
ZTkyZTNlYzdkZTUzYjViMjU1ZDcxNDNkYi4uNmFmZmMxMzljZmQyYjM3MDMxM2Q1ZDUwZGFjNjRj
N2RlODYyZjZjNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
aW5kZXguaHRtbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9pbmRleC5o
dG1sCkBAIC0zLDkgKzMsOSBAQAogICA8aGVhZD4KICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
CiAgICAgPHRpdGxlPkVTMjAxNSArIEJhYmVsICsgV2VicGFjayBUb2RvTVZDIGV4YW1wbGU8L3Rp
dGxlPgotICAgIDxzY3JpcHQ+IWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1
cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2k6bixsOiExLGV4cG9ydHM6e319O3JldHVybiBl
W25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubD0hMCxvLmV4cG9ydHN9dmFyIG49
d2luZG93LndlYnBhY2tKc29ucDt3aW5kb3cud2VicGFja0pzb25wPWZ1bmN0aW9uKHQsdSxhKXtm
b3IodmFyIGksYyxmLGw9MCxzPVtdO2w8dC5sZW5ndGg7bCsrKWM9dFtsXSxvW2NdJiZzLnB1c2go
b1tjXVswXSksb1tjXT0wO2ZvcihpIGluIHUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKHUsaSkmJihlW2ldPXVbaV0pO2ZvcihuJiZuKHQsdSxhKTtzLmxlbmd0aDspcy5zaGlm
dCgpKCk7aWYoYSlmb3IobD0wO2w8YS5sZW5ndGg7bCsrKWY9cihyLnM9YVtsXSk7cmV0dXJuIGZ9
O3ZhciB0PXt9LG89ezI6MH07ci5lPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oKXt1Lm9uZXJyb3I9
dS5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQoYSk7dmFyIHI9b1tlXTswIT09ciYmKHImJnJbMV0o
bmV3IEVycm9yKCJMb2FkaW5nIGNodW5rICIrZSsiIGZhaWxlZC4iKSksb1tlXT12b2lkIDApfWlm
KDA9PT1vW2VdKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTtpZihvW2VdKXJldHVybiBvW2VdWzJd
O3ZhciB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sdT1kb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt1LnR5cGU9InRleHQvamF2YXNjcmlwdCIsdS5jaGFy
c2V0PSJ1dGYtOCIsdS5hc3luYz0hMCx1LnRpbWVvdXQ9MTJlNCx1LnNyYz1yLnArImJ1bmRsZS4i
K2UrIi4iK3swOiI5ZGViYjFiMGE5NGYxNGQwZWJlOSIsMToiYmFkZTJjYjg5OTJkOGE2OGQwZDci
fVtlXSsiLmpzIjt2YXIgYT1zZXRUaW1lb3V0KG4sMTJlNCk7dS5vbmVycm9yPXUub25sb2FkPW4s
dC5hcHBlbmRDaGlsZCh1KTt2YXIgaT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe29bZV09W3Is
bl19KTtyZXR1cm4gb1tlXVsyXT1pfSxyLm09ZSxyLmM9dCxyLmk9ZnVuY3Rpb24oZSl7cmV0dXJu
IGV9LHIuZD1mdW5jdGlvbihlLHIsbil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7Y29uZmln
dXJhYmxlOiExLGVudW1lcmFibGU6ITAsZ2V0Om59KX0sci5uPWZ1bmN0aW9uKGUpe3ZhciBuPWUm
JmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlWyJkZWZhdWx0Il19OmZ1bmN0aW9uKCl7
cmV0dXJuIGV9O3JldHVybiByLmQobiwiYSIsbiksbn0sci5vPWZ1bmN0aW9uKGUscil7cmV0dXJu
IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpfSxyLnA9IiIsci5vZT1m
dW5jdGlvbihlKXt0aHJvdyBjb25zb2xlLmVycm9yKGUpLGV9fShbXSk7CisgICAgPHNjcmlwdD4h
ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihuKXtpZih0W25dKXJldHVybiB0W25dLmV4cG9ydHM7dmFy
IG89dFtuXT17aTpuLGw6ITEsZXhwb3J0czp7fX07cmV0dXJuIGVbbl0uY2FsbChvLmV4cG9ydHMs
byxvLmV4cG9ydHMsciksby5sPSEwLG8uZXhwb3J0c312YXIgbj13aW5kb3cud2VicGFja0pzb25w
O3dpbmRvdy53ZWJwYWNrSnNvbnA9ZnVuY3Rpb24odCx1LGMpe2Zvcih2YXIgaSxhLGYsbD0wLHM9
W107bDx0Lmxlbmd0aDtsKyspYT10W2xdLG9bYV0mJnMucHVzaChvW2FdWzBdKSxvW2FdPTA7Zm9y
KGkgaW4gdSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxpKSYmKGVbaV09
dVtpXSk7Zm9yKG4mJm4odCx1LGMpO3MubGVuZ3RoOylzLnNoaWZ0KCkoKTtpZihjKWZvcihsPTA7
bDxjLmxlbmd0aDtsKyspZj1yKHIucz1jW2xdKTtyZXR1cm4gZn07dmFyIHQ9e30sbz17MjowfTty
LmU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe3Uub25lcnJvcj11Lm9ubG9hZD1udWxsLGNsZWFy
VGltZW91dChjKTt2YXIgcj1vW2VdOzAhPT1yJiYociYmclsxXShuZXcgRXJyb3IoIkxvYWRpbmcg
Y2h1bmsgIitlKyIgZmFpbGVkLiIpKSxvW2VdPXZvaWQgMCl9aWYoMD09PW9bZV0pcmV0dXJuIFBy
b21pc2UucmVzb2x2ZSgpO2lmKG9bZV0pcmV0dXJuIG9bZV1bMl07dmFyIHQ9ZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSx1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNj
cmlwdCIpO3UudHlwZT0idGV4dC9qYXZhc2NyaXB0Iix1LmNoYXJzZXQ9InV0Zi04Iix1LmFzeW5j
PSEwLHUudGltZW91dD0xMmU0LHUuc3JjPXIucCsiYnVuZGxlLiIrZSsiLiIrezA6IjcxYmIxZjY3
MWU0ZTY1NjA0ZDA1IiwxOiJiMTZjYzA4ZTAxNmQwNzg4NmY1ZiJ9W2VdKyIuanMiO3ZhciBjPXNl
dFRpbWVvdXQobiwxMmU0KTt1Lm9uZXJyb3I9dS5vbmxvYWQ9bix0LmFwcGVuZENoaWxkKHUpO3Zh
ciBpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7b1tlXT1bcixuXX0pO3JldHVybiBvW2VdWzJd
PWl9LHIubT1lLHIuYz10LHIuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sci5kPWZ1bmN0aW9uKGUs
cixuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJs
ZTohMCxnZXQ6bn0pfSxyLm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0
aW9uKCl7cmV0dXJuIGVbImRlZmF1bHQiXX06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHIu
ZChuLCJhIixuKSxufSxyLm89ZnVuY3Rpb24oZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9LHIucD0iIixyLm9lPWZ1bmN0aW9uKGUpe3Rocm93IGNv
bnNvbGUuZXJyb3IoZSksZX19KFtdKTsKIDwvc2NyaXB0PgotICA8bGluayBocmVmPSJzdHlsZXMu
dmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij48bGluayBo
cmVmPSJzdHlsZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcyIgcmVsPSJzdHlsZXNoZWV0
Ij48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJidW5kbGUudmVuZG9yLmJhZGUy
Y2I4OTkyZDhhNjhkMGQ3LmpzIj48L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgc3JjPSJidW5kbGUuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmpzIj48L3NjcmlwdD48L2hl
YWQ+CisgIDxsaW5rIGhyZWY9InN0eWxlcy52ZW5kb3IuYjE2Y2MwOGUwMTZkMDc4ODZmNWYuY3Nz
IiByZWw9InN0eWxlc2hlZXQiPjxsaW5rIGhyZWY9InN0eWxlcy5hcHAuNzFiYjFmNjcxZTRlNjU2
MDRkMDUuY3NzIiByZWw9InN0eWxlc2hlZXQiPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9ImJ1bmRsZS52ZW5kb3IuYjE2Y2MwOGUwMTZkMDc4ODZmNWYuanMiPjwvc2NyaXB0Pjxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImJ1bmRsZS5hcHAuNzFiYjFmNjcxZTRl
NjU2MDRkMDUuanMiPjwvc2NyaXB0PjwvaGVhZD4KICAgPGJvZHk+CiAgICAgPHNlY3Rpb24gY2xh
c3M9InRvZG9hcHAiPgogICAgICAgPGhlYWRlciBjbGFzcz0iaGVhZGVyIj4KZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1l
eGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzFiYjFmNjcxZTRl
NjU2MDRkMDUuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFw
cC43MWJiMWY2NzFlNGU2NTYwNGQwNS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTczNTNhYTJlMjVmMTRiZWM4
YzQxMmYxMjI2OGEyMmE1NjIzZmFhYQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUt
YmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuNzFiYjFmNjcxZTRlNjU2MDRkMDUuY3NzCkBA
IC0wLDAgKzEsMiBAQAorLnRvZ2dsZS1ncmFwaHtmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjE2cHg7
Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxfS50b2dnbGUtZ3JhcGgg
c3Zne2hlaWdodDoyMHB4O3dpZHRoOjIwcHh9LnRvZ2dsZS1ncmFwaCBzdmcgcGF0aHtmaWxsOiM3
Nzd9LnRvZ2dsZS1ncmFwaC5hY3RpdmUgc3ZnIHBhdGgsLnRvZ2dsZS1ncmFwaDpmb2N1cyBzdmcg
cGF0aCwudG9nZ2xlLWdyYXBoOmhvdmVyIHN2ZyBwYXRoe2ZpbGw6IzAwMH0KKy8qIyBzb3VyY2VN
YXBwaW5nVVJMPXN0eWxlcy5hcHAuNzFiYjFmNjcxZTRlNjU2MDRkMDUuY3NzLm1hcCovClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13
ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC43MWJiMWY2NzFlNGU2NTYwNGQwNS5jc3MubWFwIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1w
bGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC43MWJiMWY2NzFlNGU2NTYw
NGQwNS5jc3MubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhNWI2MmFjZmQ4NWJjMzBiMDUxMTk2YWE0YWI1NWE3
NzJkOGMyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2sv
ZGlzdC9zdHlsZXMuYXBwLjcxYmIxZjY3MWU0ZTY1NjA0ZDA1LmNzcy5tYXAKQEAgLTAsMCArMSBA
QAoreyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZp
bGUiOiJzdHlsZXMuYXBwLjcxYmIxZjY3MWU0ZTY1NjA0ZDA1LmNzcyIsInNvdXJjZVJvb3QiOiIi
fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUt
YmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4
YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLmFwcC45ZGViYjFiMGE5NGYx
NGQwZWJlOS5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0NTI1ZDAzNTIxN2Uz
MTExYWU4MTU4ZjIzYTQ5MzBhZWU5NjMwZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVz
LmFwcC45ZGViYjFiMGE5NGYxNGQwZWJlOS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAg
QEAKLS50b2dnbGUtZ3JhcGh7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDoxNnB4O2N1cnNvcjpwb2lu
dGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MX0udG9nZ2xlLWdyYXBoIHN2Z3toZWlnaHQ6
MjBweDt3aWR0aDoyMHB4fS50b2dnbGUtZ3JhcGggc3ZnIHBhdGh7ZmlsbDojNzc3fS50b2dnbGUt
Z3JhcGguYWN0aXZlIHN2ZyBwYXRoLC50b2dnbGUtZ3JhcGg6Zm9jdXMgc3ZnIHBhdGgsLnRvZ2ds
ZS1ncmFwaDpob3ZlciBzdmcgcGF0aHtmaWxsOiMwMDB9Ci0vKiMgc291cmNlTWFwcGluZ1VSTD1z
dHlsZXMuYXBwLjlkZWJiMWIwYTk0ZjE0ZDBlYmU5LmNzcy5tYXAqLwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0
L3N0eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzLm1hcCBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUt
YmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzLm1h
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEwZDUyMWI3MmUxNjI3YzU2YjhlY2Fh
ZGViMzQzZGVhMzYyZGYzNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMuYXBwLjlkZWJi
MWIwYTk0ZjE0ZDBlYmU5LmNzcy5tYXAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi17InZl
cnNpb24iOjMsInNvdXJjZXMiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InN0
eWxlcy5hcHAuOWRlYmIxYjBhOTRmMTRkMGViZTkuY3NzIiwic291cmNlUm9vdCI6IiJ9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13
ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5iMTZjYzA4ZTAxNmQwNzg4NmY1Zi5jc3MgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBs
ZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmIxNmNjMDhlMDE2ZDA3
ODg2ZjVmLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTkyNTFlOWEyYWVkNmFmMTRkZGFkMjhkNWFkYzE2NGQz
YmI0MjFkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rp
c3Qvc3R5bGVzLnZlbmRvci5iMTZjYzA4ZTAxNmQwNzg4NmY1Zi5jc3MKQEAgLTAsMCArMSwyIEBA
Citib2R5LGJ1dHRvbixodG1se21hcmdpbjowO3BhZGRpbmc6MH1idXR0b257Ym9yZGVyOjA7YmFj
a2dyb3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQt
ZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0Oy13ZWJraXQt
YXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFu
dGlhbGlhc2VkfWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1i
b2R5e2ZvbnQ6MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjts
aW5lLWhlaWdodDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRkNGQ0ZDttaW4td2lk
dGg6MjMwcHg7bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtpdC1mb250LXNtb290
aGluZzphbnRpYWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxpbmU6MH0uaGlkZGVu
e2Rpc3BsYXk6bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEzMHB4IDAgNDBw
eDtwb3NpdGlvbjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEoMCwwLDAsLjIp
LDAgMjVweCA1MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNl
NmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7
Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNl
aG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50
b2RvYXBwIGgxe3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6MTAwJTtmb250LXNp
emU6MTAwcHg7Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnJnYmEoMTc1
LDQ3LDQ3LC4xNSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7LW1v
ei10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJpbmc6b3B0aW1p
emVMZWdpYmlsaXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDt3
aWR0aDoxMDAlO2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6
aW5oZXJpdDtsaW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhlcml0O3BhZGRpbmc6
NnB4O2JvcmRlcjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAgLTFweCA1cHggMCBy
Z2JhKDAsMCwwLC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1mb250LXNtb290aGlu
ZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Lm5ldy10b2Rv
e3BhZGRpbmc6MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnJnYmEo
MCwwLDAsLjAwMyk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsLjAzKX0u
bWFpbntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2
ZTZlNn1sYWJlbFtmb3I9dG9nZ2xlLWFsbF17ZGlzcGxheTpub25lfS50b2dnbGUtYWxse3Bvc2l0
aW9uOmFic29sdXRlO3RvcDotNTVweDtsZWZ0Oi0xMnB4O3dpZHRoOjYwcHg7aGVpZ2h0OjM0cHg7
dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyOm5vbmV9LnRvZ2dsZS1hbGw6YmVmb3Jle2NvbnRlbnQ6
IlwyNzZGIjtmb250LXNpemU6MjJweDtjb2xvcjojZTZlNmU2O3BhZGRpbmc6MTBweCAyN3B4fS50
b2dnbGUtYWxsOmNoZWNrZWQ6YmVmb3Jle2NvbG9yOiM3MzczNzN9LnRvZG8tbGlzdHttYXJnaW46
MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lfS50b2RvLWxpc3QgbGl7cG9zaXRpb246cmVsYXRp
dmU7Zm9udC1zaXplOjI0cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VkZWRlZH0udG9kby1s
aXN0IGxpOmxhc3QtY2hpbGR7Ym9yZGVyLWJvdHRvbTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGlu
Z3tib3JkZXItYm90dG9tOm5vbmU7cGFkZGluZzowfS50b2RvLWxpc3QgbGkuZWRpdGluZyAuZWRp
dHtkaXNwbGF5OmJsb2NrO3dpZHRoOjUwNnB4O3BhZGRpbmc6MTJweCAxNnB4O21hcmdpbjowIDAg
MCA0M3B4fS50b2RvLWxpc3QgbGkuZWRpdGluZyAudmlld3tkaXNwbGF5Om5vbmV9LnRvZG8tbGlz
dCBsaSAudG9nZ2xle3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjQwcHg7aGVpZ2h0OmF1dG87cG9z
aXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7bWFyZ2luOmF1dG8gMDtib3JkZXI6bm9uZTst
d2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNlOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9n
Z2xlOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5z
PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiB2aWV3
Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjUwIiBmaWxs
PSJub25lIiBzdHJva2U9IiNlZGVkZWQiIHN0cm9rZS13aWR0aD0iMyIvPjwvc3ZnPicpfS50b2Rv
LWxpc3QgbGkgLnRvZ2dsZTpjaGVja2VkOmFmdGVye2NvbnRlbnQ6dXJsKCdkYXRhOmltYWdlL3N2
Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9
IjQwIiBoZWlnaHQ9IjQwIiB2aWV3Qm94PSItMTAgLTE4IDEwMCAxMzUiPjxjaXJjbGUgY3g9IjUw
IiBjeT0iNTAiIHI9IjUwIiBmaWxsPSJub25lIiBzdHJva2U9IiNiZGRhZDUiIHN0cm9rZS13aWR0
aD0iMyIvPjxwYXRoIGZpbGw9IiM1ZGMyYWYiIGQ9Ik03MiAyNUw0MiA3MSAyNyA1NmwtNCA0IDIw
IDIwIDM0LTUyeiIvPjwvc3ZnPicpfS50b2RvLWxpc3QgbGkgbGFiZWx7d29yZC1icmVhazpicmVh
ay1hbGw7cGFkZGluZzoxNXB4IDYwcHggMTVweCAxNXB4O21hcmdpbi1sZWZ0OjQ1cHg7ZGlzcGxh
eTpibG9jaztsaW5lLWhlaWdodDoxLjI7dHJhbnNpdGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBs
aS5jb21wbGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJv
dWdofS50b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRl
O3RvcDowO3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46
YXV0byAwO2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4O3Ry
YW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0fS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXJ7
Y29sb3I6I2FmNWI1ZX0udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6IlxENyJ9
LnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2NrfS50b2RvLWxpc3QgbGkg
LmVkaXR7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxke21hcmdp
bi1ib3R0b206LTFweH0uZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7aGVpZ2h0
OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0uZm9v
dGVyOmJlZm9yZXtjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90dG9tOjA7
bGVmdDowO2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4IDFweCBy
Z2JhKDAsMCwwLC4yKSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAs
MCwwLC4yKSwwIDE2cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAs
LjIpfS50b2RvLWNvdW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNvdW50IHN0
cm9uZ3tmb250LXdlaWdodDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5
bGU6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0uZmlsdGVycyBsaXtkaXNw
bGF5OmlubGluZX0uZmlsdGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFyZ2luOjNweDtwYWRkaW5n
OjNweCA3cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVu
dDtib3JkZXItcmFkaXVzOjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2JvcmRlci1jb2xvcjpyZ2Jh
KDE3NSw0Nyw0NywuMSl9LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXItY29sb3I6cmdiYSgx
NzUsNDcsNDcsLjIpfS5jbGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2
ZXtmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVj
b3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7dGV4dC1k
ZWNvcmF0aW9uOnVuZGVybGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRvIDA7Y29sb3I6I2JmYmZi
Zjtmb250LXNpemU6MTBweDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0
ZXh0LWFsaWduOmNlbnRlcn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xvcjppbmhl
cml0O3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhvdmVye3Rl
eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRl
dmljZS1waXhlbC1yYXRpbzowKXsudG9kby1saXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1hbGx7YmFj
a2dyb3VuZDpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBweH0udG9nZ2xlLWFs
bHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcp
Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhIChtYXgtd2lk
dGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQorLyoj
IHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVzLnZlbmRvci5iMTZjYzA4ZTAxNmQwNzg4NmY1Zi5jc3Mu
bWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmIxNmNjMDhlMDE2ZDA3ODg2ZjVm
LmNzcy5tYXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9y
LmIxNmNjMDhlMDE2ZDA3ODg2ZjVmLmNzcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2FhNTZhODJjZWI4NzU1
OTc1NGZhNjViYjBjYThjMTA5NjkzNjZhNwotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxlcy9lczIw
MTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5kb3IuYjE2Y2MwOGUwMTZkMDc4ODZmNWYu
Y3NzLm1hcApAQCAtMCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOltdLCJuYW1lcyI6
W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InN0eWxlcy52ZW5kb3IuYjE2Y2MwOGUwMTZkMDc4ODZm
NWYuY3NzIiwic291cmNlUm9vdCI6IiJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92
YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5i
YWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svZGlz
dC9zdHlsZXMudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3LmNzcwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZDgyMWMxN2E5NGZlMzE2MzQ3OGM0YWM0MDFiYmM3YzU4MjQ3MjFlMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svZGlzdC9zdHlsZXMudmVuZG9yLmJhZGUyY2I4OTkyZDhhNjhkMGQ3
LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYm9keSxidXR0b24saHRtbHttYXJn
aW46MDtwYWRkaW5nOjB9YnV0dG9ue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250LXNpemU6
MTAwJTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2Vp
Z2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJh
bmNlOm5vbmU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1dHRvbnst
bW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVsdmV0aWNh
IE5ldWUsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07YmFja2dy
b3VuZDojZjVmNWY1O2NvbG9yOiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0aDo1NTBw
eDttYXJnaW46MCBhdXRvOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC13
ZWlnaHQ6MzAwfTpmb2N1c3tvdXRsaW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRvZG9hcHB7
YmFja2dyb3VuZDojZmZmO21hcmdpbjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRpdmU7Ym94
LXNoYWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEoMCww
LDAsLjEpfS50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5
bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0Ojot
bW96LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjoj
ZTZlNmU2fS50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxp
Yztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlvbjphYnNv
bHV0ZTt0b3A6LTE1NXB4O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEw
MDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4
dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6b3B0aW1p
emVMZWdpYmlsaXR5O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRpdCwubmV3
LXRvZG97cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MjRw
eDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS40
ZW07Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkICM5
OTk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNpemlu
Zzpib3JkZXItYm94Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gt
Zm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZweCAxNnB4
IDYwcHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1zaGFkb3c6
aW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVsYXRpdmU7
ei1pbmRleDoyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRvZ2dsZS1h
bGxde2Rpc3BsYXk6bm9uZX0udG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7
bGVmdDotMTJweDt3aWR0aDo2MHB4O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRl
cjpub25lfS50b2dnbGUtYWxsOmJlZm9yZXtjb250ZW50OiJcMjc2RiI7Zm9udC1zaXplOjIycHg7
Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9y
ZXtjb2xvcjojNzM3MzczfS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6
bm9uZX0udG9kby1saXN0IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRl
ci1ib3R0b206MXB4IHNvbGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRl
ci1ib3R0b206bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3Bh
ZGRpbmc6MH0udG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1
MDZweDtwYWRkaW5nOjEycHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVk
aXRpbmcgLnZpZXd7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWdu
OmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2Jv
dHRvbTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7
YXBwZWFyYW5jZTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZTphZnRlcntjb250ZW50OnVybCgn
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48
Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZWRlZGVk
IiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIC50b2dnbGU6Y2hlY2tl
ZDphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0Jv
eD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9IjMiLz48cGF0aCBmaWxsPSIjNWRj
MmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAyMCAzNC01MnoiLz48L3N2Zz4nKX0u
dG9kby1saXN0IGxpIGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxsO3BhZGRpbmc6MTVweCA2MHB4
IDE1cHggMTVweDttYXJnaW4tbGVmdDo0NXB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4y
O3RyYW5zaXRpb246Y29sb3IgLjRzfS50b2RvLWxpc3QgbGkuY29tcGxldGVkIGxhYmVse2NvbG9y
OiNkOWQ5ZDk7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0udG9kby1saXN0IGxpIC5kZXN0
cm95e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O2JvdHRv
bTowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luOmF1dG8gMDtmb250LXNpemU6MzBweDtj
b2xvcjojY2M5YTlhO21hcmdpbi1ib3R0b206MTFweDt0cmFuc2l0aW9uOmNvbG9yIC4ycyBlYXNl
LW91dH0udG9kby1saXN0IGxpIC5kZXN0cm95OmhvdmVye2NvbG9yOiNhZjViNWV9LnRvZG8tbGlz
dCBsaSAuZGVzdHJveTphZnRlcntjb250ZW50OiJcRDcifS50b2RvLWxpc3QgbGk6aG92ZXIgLmRl
c3Ryb3l7ZGlzcGxheTpibG9ja30udG9kby1saXN0IGxpIC5lZGl0e2Rpc3BsYXk6bm9uZX0udG9k
by1saXN0IGxpLmVkaXRpbmc6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOi0xcHh9LmZvb3Rlcntj
b2xvcjojNzc3O3BhZGRpbmc6MTBweCAxNXB4O2hlaWdodDoyMHB4O3RleHQtYWxpZ246Y2VudGVy
O2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9LmZvb3RlcjpiZWZvcmV7Y29udGVudDoiIjtw
b3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2JvdHRvbTowO2xlZnQ6MDtoZWlnaHQ6NTBweDtvdmVy
ZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDFweCAxcHggcmdiYSgwLDAsMCwuMiksMCA4cHggMCAt
M3B4ICNmNmY2ZjYsMCA5cHggMXB4IC0zcHggcmdiYSgwLDAsMCwuMiksMCAxNnB4IDAgLTZweCAj
ZjZmNmY2LDAgMTdweCAycHggLTZweCByZ2JhKDAsMCwwLC4yKX0udG9kby1jb3VudHtmbG9hdDps
ZWZ0O3RleHQtYWxpZ246bGVmdH0udG9kby1jb3VudCBzdHJvbmd7Zm9udC13ZWlnaHQ6MzAwfS5m
aWx0ZXJze21hcmdpbjowO3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmU7cG9zaXRpb246YWJzb2x1
dGU7cmlnaHQ6MDtsZWZ0OjB9LmZpbHRlcnMgbGl7ZGlzcGxheTppbmxpbmV9LmZpbHRlcnMgbGkg
YXtjb2xvcjppbmhlcml0O21hcmdpbjozcHg7cGFkZGluZzozcHggN3B4O3RleHQtZGVjb3JhdGlv
bjpub25lO2JvcmRlcjoxcHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czozcHh9LmZp
bHRlcnMgbGkgYTpob3Zlcntib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjEpfS5maWx0ZXJz
IGxpIGEuc2VsZWN0ZWR7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4yKX0uY2xlYXItY29t
cGxldGVkLGh0bWwgLmNsZWFyLWNvbXBsZXRlZDphY3RpdmV7ZmxvYXQ6cmlnaHQ7cG9zaXRpb246
cmVsYXRpdmU7bGluZS1oZWlnaHQ6MjBweDt0ZXh0LWRlY29yYXRpb246bm9uZTtjdXJzb3I6cG9p
bnRlcn0uY2xlYXItY29tcGxldGVkOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Lmlu
Zm97bWFyZ2luOjY1cHggYXV0byAwO2NvbG9yOiNiZmJmYmY7Zm9udC1zaXplOjEwcHg7dGV4dC1z
aGFkb3c6MCAxcHggMCBoc2xhKDAsMCUsMTAwJSwuNSk7dGV4dC1hbGlnbjpjZW50ZXJ9LmluZm8g
cHtsaW5lLWhlaWdodDoxfS5pbmZvIGF7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9u
ZTtmb250LXdlaWdodDo0MDB9LmluZm8gYTpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5l
fUBtZWRpYSBzY3JlZW4gYW5kICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86MCl7LnRv
ZG8tbGlzdCBsaSAudG9nZ2xlLC50b2dnbGUtYWxse2JhY2tncm91bmQ6bm9uZX0udG9kby1saXN0
IGxpIC50b2dnbGV7aGVpZ2h0OjQwcHh9LnRvZ2dsZS1hbGx7LXdlYmtpdC10cmFuc2Zvcm06cm90
YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVnKTstd2Via2l0LWFwcGVhcmFuY2U6bm9u
ZTthcHBlYXJhbmNlOm5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hlaWdo
dDo1MHB4fS5maWx0ZXJze2JvdHRvbToxMHB4fX0KLS8qIyBzb3VyY2VNYXBwaW5nVVJMPXN0eWxl
cy52ZW5kb3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuY3NzLm1hcCovClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJwYWNrL2Rpc3Qv
c3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MubWFwIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS1iYWJlbC13ZWJwYWNrL2Rpc3Qvc3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5j
c3MubWFwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzM3ZThmNDhlYmNjN2YxMGYz
MWQ1NTJkYmU0NTJiY2Y4MzljNzkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvdmFuaWxsYS1leGFtcGxlcy9lczIwMTUtYmFiZWwtd2VicGFjay9kaXN0L3N0eWxlcy52ZW5k
b3IuYmFkZTJjYjg5OTJkOGE2OGQwZDcuY3NzLm1hcAorKysgL2Rldi9udWxsCkBAIC0xICswLDAg
QEAKLXsidmVyc2lvbiI6Mywic291cmNlcyI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJm
aWxlIjoic3R5bGVzLnZlbmRvci5iYWRlMmNiODk5MmQ4YTY4ZDBkNy5jc3MiLCJzb3VyY2VSb290
IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMy
MDE1LWJhYmVsLXdlYnBhY2svc3JjL3N0b3JlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAxNS1iYWJlbC13ZWJw
YWNrL3NyYy9zdG9yZS5qcwppbmRleCA4NTA3M2JiZDJhMDlhZWRjMTZkYjRmYmQ2YzAyNzJhODJk
NWVkZDJjLi45NGE3MjljZTQ4M2U0MmEzOTdhMmY3N2IzYmFhMGFiZmM5MGJmMzRhIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zhbmls
bGEtZXhhbXBsZXMvZXMyMDE1LWJhYmVsLXdlYnBhY2svc3JjL3N0b3JlLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvdmFuaWxsYS1leGFtcGxl
cy9lczIwMTUtYmFiZWwtd2VicGFjay9zcmMvc3RvcmUuanMKQEAgLTIsNiArMiw4IEBAIGltcG9y
dCB7cmVtb3ZlfSBmcm9tICcuL2hlbHBlcnMnCiBpbXBvcnQgKiBhcyBsb2NhbFN0b3JhZ2VNZW1v
cnkgZnJvbSAnLi9tZW1vcnknCiBleHBvcnQgZGVmYXVsdCBTdG9yZQogCit2YXIgdW5pcXVlSUQg
PSAwOworCiAvKioKICAqIENyZWF0ZXMgYSBuZXcgY2xpZW50IHNpZGUgc3RvcmFnZSBvYmplY3Qg
YW5kIHdpbGwgY3JlYXRlIGFuIGVtcHR5CiAgKiBjb2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rpb24g
YWxyZWFkeSBleGlzdHMuCkBAIC0xMDgsNyArMTEwLDcgQEAgU3RvcmUucHJvdG90eXBlLnNhdmUg
PSBmdW5jdGlvbih1cGRhdGVEYXRhLCBjYWxsYmFjaywgaWQpIHsKICAgICBjYWxsYmFjay5jYWxs
KHRoaXMsIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMuX2RiTmFtZV0pLnRvZG9z
KQogICB9IGVsc2UgewogICAgIC8vIEdlbmVyYXRlIGFuIElECi0gICAgdXBkYXRlRGF0YS5pZCA9
IG5ldyBEYXRlKCkuZ2V0VGltZSgpCisgICAgdXBkYXRlRGF0YS5pZCA9IHVuaXF1ZUlEKys7CiAK
ICAgICB0b2Rvcy5wdXNoKHVwZGF0ZURhdGEpCiAgICAgbG9jYWxTdG9yYWdlTWVtb3J5W3RoaXMu
X2RiTmFtZV0gPSBKU09OLnN0cmluZ2lmeShkYXRhKQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy92YW5pbGxhLWV4YW1wbGVzL2VzMjAx
NS9zcmMvc3RvcmUuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L3NyYy9zdG9yZS5qcwppbmRleCA2YmE5N2Jk
ZGIzZmVhOGIxNmNjNTg5NTliNWJkNzAyNDA2YjkxYmY3Li5kYzIyZjI1MTA3M2QwMjhkYzJlZjkw
NDhlMDhhMTM3ZGNhYmRmMGVkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL3ZhbmlsbGEtZXhhbXBsZXMvZXMyMDE1L3NyYy9zdG9yZS5q
cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL3Zh
bmlsbGEtZXhhbXBsZXMvZXMyMDE1L3NyYy9zdG9yZS5qcwpAQCAtMSw2ICsxLDggQEAKIC8qanNo
aW50IGVxZXFlcTpmYWxzZSAqLwogJ3VzZSBzdHJpY3QnOwogCitsZXQgdW5pcXVlSUQgPSAxOwor
CiAvKioKICAqIENyZWF0ZXMgYSBuZXcgY2xpZW50IHNpZGUgc3RvcmFnZSBvYmplY3QgYW5kIHdp
bGwgY3JlYXRlIGFuIGVtcHR5CiAgKiBjb2xsZWN0aW9uIGlmIG5vIGNvbGxlY3Rpb24gYWxyZWFk
eSBleGlzdHMuCkBAIC05OSw3ICsxMDEsNyBAQCBjbGFzcyBTdG9yZSB7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBHZW5lcmF0ZSBhbiBJRAotICAgICAg
ICAgICAgdXBkYXRlRGF0YS5pZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworICAgICAgICAgICAg
dXBkYXRlRGF0YS5pZCA9IHVuaXF1ZUlEKys7CiAKICAgICAgICAgICAgIHRvZG9zLnB1c2godXBk
YXRlRGF0YSk7CiAgICAgICAgICAgICB0aGlzLm1lbW9yeVN0b3JhZ2VbdGhpcy5fZGJOYW1lXSA9
IEpTT04uc3RyaW5naWZ5KGRhdGEpOwo=
</data>
<flag name="review"
          id="339096"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>