<?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>26903</bug_id>
          
          <creation_ts>2009-07-01 13:48:19 -0700</creation_ts>
          <short_desc>Need to enable CHANNEL_MESSAGING by default</short_desc>
          <delta_ts>2009-07-09 20:21:52 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Wilson">atwilson</reporter>
          <assigned_to name="Andrew Wilson">atwilson</assigned_to>
          <cc>ap</cc>
    
    <cc>dimich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129358</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-01 13:48:19 -0700</bug_when>
    <thetext>Now that the spec has stabilized and we&apos;ve resolved the cross-thread GC issues, we can turn on CHANNEL_MESSAGING by default.

There&apos;s one open API issue (https://bugs.webkit.org/show_bug.cgi?id=26902), but I&apos;m not certain whether this is something we want to support (posting an array of ports to postMessage), and whether that should block enabling CHANNEL_MESSAGING.

ap, your thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129400</commentid>
    <comment_count>1</comment_count>
      <attachid>32152</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-01 15:46:04 -0700</bug_when>
    <thetext>Created attachment 32152
Proposed patch

This patch is actually much smaller than it appears - I&apos;ve re-enabled a bunch of the previously disabled tests (I didn&apos;t modify them, I just renamed them) which makes it look large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130434</commentid>
    <comment_count>2</comment_count>
      <attachid>32152</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-07-08 07:40:41 -0700</bug_when>
    <thetext>Comment on attachment 32152
Proposed patch

This enables channel messaging for Xcode and for autoconf builds - are any changes to Windows Visual Studio project files necessary?

It would be nice to add a few words about why we&apos;re turning CHANNEL_MESSAGING on (e.g. &quot;because the MessageChannel API can now be implemented for Web Workers, and is reasonably stable thus&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130469</commentid>
    <comment_count>3</comment_count>
      <attachid>32461</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-08 11:08:58 -0700</bug_when>
    <thetext>Created attachment 32461
Patch addressing ap&apos;s comments

Good catch on the visual studio stuff - I&apos;ve done a search to make sure I haven&apos;t missed any other places, and also updated the ChangeLogs to have a less terse change description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130472</commentid>
    <comment_count>4</comment_count>
      <attachid>32461</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-07-08 11:29:59 -0700</bug_when>
    <thetext>Comment on attachment 32461
Patch addressing ap&apos;s comments

&gt; +&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:LayoutTests/ChangeLog

&gt; +=======

Please fix conflict markers before landing.

Does the Visual Studio project actually build? I&apos;m not sure if it has all the necessary source files in it.

Oh, and please also enable LayoutTests/http/tests/security/MessagePort/event-listener-context.html-disabled.

I&apos;m going to say r=me now, but please address these comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130687</commentid>
    <comment_count>5</comment_count>
      <attachid>32523</attachid>
    <who name="Andrew Wilson">atwilson</who>
    <bug_when>2009-07-09 10:43:31 -0700</bug_when>
    <thetext>Created attachment 32523
Patch with enabled security test and removing merge conflict.

Sigh, fixed merge errors - tragically git didn&apos;t notice that I&apos;d committed a file with a merge conflict.

I enabled that test - as I mentioned on IRC, you can no longer use a MessageChannel constructor from a closed frame, so now I simplified the test to just check for a thrown exception.

I was able to build on Windows just fine - what files were you concerned were missing from the vcproj file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130722</commentid>
    <comment_count>6</comment_count>
      <attachid>32523</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-07-09 14:20:09 -0700</bug_when>
    <thetext>Comment on attachment 32523
Patch with enabled security test and removing merge conflict.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130817</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-07-09 20:21:52 -0700</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/45695</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32152</attachid>
            <date>2009-07-01 15:46:04 -0700</date>
            <delta_ts>2009-07-08 11:08:58 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>76679</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi4zZWJlZTEx
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMDktMDctMDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MDMKKworICAgICAgICBUdXJuZWQgb24gQ0hBTk5F
TF9NRVNTQUdJTkcgYnkgZGVmYXVsdC4KKworICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAw
OS0wNi0yMCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAzN2I4NGMuLmY1NzFiZGQg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAwOS0wNy0wMSAgRHJldyBXaWxzb24gIDxh
dHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NBR0lORyBieSBkZWZhdWx0CisKKyAg
ICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAwOS0w
Ni0zMCAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMmZiY2RkLi4wM2M2MWVkIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZworKysgYi9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQAogRU5BQkxFXzNEX1JFTkRFUklORyA9ICQoRU5B
QkxFXzNEX1JFTkRFUklOR18kKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8zRF9S
RU5ERVJJTkdfMTA2MCA9IEVOQUJMRV8zRF9SRU5ERVJJTkc7CiAKLUVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORyA9IDsKK0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01F
U1NBR0lORzsKIEVOQUJMRV9EQVRBQkFTRSA9IEVOQUJMRV9EQVRBQkFTRTsKIEVOQUJMRV9ET01f
U1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsKIEVOQUJMRV9GSUxURVJTID0gOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDU2ZTJmZjQuLjhhMWNjOWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0wNy0wMSAgRHJl
dyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNjkwMworCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NBR0lORyBieSBk
ZWZhdWx0LCByZS1lbmFibGVkIHRoZSB2YXJpb3VzIHRlc3RzLCBhbmQgdXBkYXRlZCBleHBlY3Rl
ZCByZXN1bHRzLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9jb25zdHJ1Y3RvcnMtY2FjaGVkLW5h
dmlnYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5u
ZWwtZ2MtMi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1jaGFubmVsLWdjLTIuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNz
YWdlLWNoYW5uZWwtZ2MtMy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbDogUmVuYW1lZCBmcm9tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sLWRpc2FibGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25l
cnNoaXAuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
Y2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxlZC4KKyAgICAg
ICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5odG1sLWRpc2FibGVkLgor
ICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRl
ZC1kb2N1bWVudC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxl
dGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwtZGlzYWJsZWQuCisgICAgICAg
ICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWw6IFJlbmFt
ZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9j
dW1lbnQuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
bm8td3JhcHBlci5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC5odG1sLWRpc2FibGVkLgorICAgICAgICAqIGZhc3QvanMvZ2xvYmFsLWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1j
bG9uZXBvcnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItY2xvbmVwb3J0Lmh0bWwtZGlzYWJsZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtl
ci1tZXNzYWdlcG9ydC1nYy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1nYy5odG1sLWRpc2FibGVkLgorICAgICAgICAqIGZhc3Qv
d29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbC1kaXNhYmxlZC4KKwogMjAwOS0w
Ni0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CmluZGV4IDM1OTM2Yzcu
LmY4OTFlNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93
L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dApAQCAtMTAyNCw4ICsxMDI0LDE4IEBAIHdp
bmRvdy5NZWRpYUxpc3QucHJvdG90eXBlIFtvYmplY3QgTWVkaWFMaXN0UHJvdG90eXBlXQogd2lu
ZG93Lk1lZGlhTGlzdC5wcm90b3R5cGUuYXBwZW5kTWVkaXVtIFtmdW5jdGlvbl0KIHdpbmRvdy5N
ZWRpYUxpc3QucHJvdG90eXBlLmRlbGV0ZU1lZGl1bSBbZnVuY3Rpb25dCiB3aW5kb3cuTWVkaWFM
aXN0LnByb3RvdHlwZS5pdGVtIFtmdW5jdGlvbl0KK3dpbmRvdy5NZXNzYWdlQ2hhbm5lbCBbb2Jq
ZWN0IE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3JdCit3aW5kb3cuTWVzc2FnZUNoYW5uZWwucHJv
dG90eXBlIFtvYmplY3QgTWVzc2FnZUNoYW5uZWxQcm90b3R5cGVdCiB3aW5kb3cuTWVzc2FnZUV2
ZW50IFtvYmplY3QgTWVzc2FnZUV2ZW50Q29uc3RydWN0b3JdCiB3aW5kb3cuTWVzc2FnZUV2ZW50
LnByb3RvdHlwZSBbcHJpbnRlZCBhYm92ZSBhcyB3aW5kb3cuRXZlbnQucHJvdG90eXBlXQord2lu
ZG93Lk1lc3NhZ2VQb3J0IFtvYmplY3QgTWVzc2FnZVBvcnRDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5N
ZXNzYWdlUG9ydC5wcm90b3R5cGUgW29iamVjdCBNZXNzYWdlUG9ydFByb3RvdHlwZV0KK3dpbmRv
dy5NZXNzYWdlUG9ydC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCit3aW5k
b3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLmNsb3NlIFtmdW5jdGlvbl0KK3dpbmRvdy5NZXNzYWdl
UG9ydC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCit3aW5kb3cuTWVzc2FnZVBv
cnQucHJvdG90eXBlLnBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KK3dpbmRvdy5NZXNzYWdlUG9ydC5w
cm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCit3aW5kb3cuTWVzc2FnZVBv
cnQucHJvdG90eXBlLnN0YXJ0IFtmdW5jdGlvbl0KIHdpbmRvdy5NaW1lVHlwZSBbb2JqZWN0IE1p
bWVUeXBlQ29uc3RydWN0b3JdCiB3aW5kb3cuTWltZVR5cGUucHJvdG90eXBlIFtvYmplY3QgTWlt
ZVR5cGVQcm90b3R5cGVdCiB3aW5kb3cuTWltZVR5cGVBcnJheSBbb2JqZWN0IE1pbWVUeXBlQXJy
YXlDb25zdHJ1Y3Rvcl0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NvbnN0cnVj
dG9ycy1jYWNoZWQtbmF2aWdhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y29uc3RydWN0b3JzLWNhY2hlZC1uYXZpZ2F0ZS1leHBlY3RlZC50eHQKaW5kZXggMTRkODlmMy4u
MjdhZjExNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29uc3RydWN0b3JzLWNh
Y2hlZC1uYXZpZ2F0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29u
c3RydWN0b3JzLWNhY2hlZC1uYXZpZ2F0ZS1leHBlY3RlZC50eHQKQEAgLTYsOCArNiw4IEBAIFBB
U1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuSW1hZ2UgaXMgdGVzdEZyYW1lLmNvbnRlbnRXaW5k
b3cuSW1hZ2UKIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuSW1hZ2UgIT09IHdpbmRvdy5J
bWFnZSBpcyB0cnVlCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LkltYWdlLnRlc3RQcm9w
ZXJ0eSBpcyAicHJvcGVydHkgc2V0IHN1Y2Nlc3NmdWxseSIKIFBBU1MgdGVzdEZyYW1lLmNvbnRl
bnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwgaXMgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2Fn
ZUNoYW5uZWwKLUZBSUwgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwgIT09
IHdpbmRvdy5NZXNzYWdlQ2hhbm5lbCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgotRkFJTCBU
ZXN0aW5nIE1lc3NhZ2VDaGFubmVsIHRocmV3IFR5cGVFcnJvcjogUmVzdWx0IG9mIGV4cHJlc3Np
b24gJ3Rlc3RGcmFtZS5jb250ZW50V2luZG93W2NvbnN0cnVjdG9yXScgW3VuZGVmaW5lZF0gaXMg
bm90IGFuIG9iamVjdC4KK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5u
ZWwgIT09IHdpbmRvdy5NZXNzYWdlQ2hhbm5lbCBpcyB0cnVlCitQQVNTIHRlc3RGcmFtZS5jb250
ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsLnRlc3RQcm9wZXJ0eSBpcyAicHJvcGVydHkgc2V0IHN1
Y2Nlc3NmdWxseSIKIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9uIGlzIHRlc3RG
cmFtZS5jb250ZW50V2luZG93Lk9wdGlvbgogUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5P
cHRpb24gIT09IHdpbmRvdy5PcHRpb24gaXMgdHJ1ZQogUEFTUyB0ZXN0RnJhbWUuY29udGVudFdp
bmRvdy5PcHRpb24udGVzdFByb3BlcnR5IGlzICJwcm9wZXJ0eSBzZXQgc3VjY2Vzc2Z1bGx5IgpA
QCAtMjQsMTEgKzI0LDExIEBAIFBBU1Mgc3RvcmVkQ29uc3RydWN0b3JzLkltYWdlLnRlc3RQcm9w
ZXJ0eSBpcyAicHJvcGVydHkgc2V0IHN1Y2Nlc3NmdWxseSIKIFBBU1MgdGVzdEZyYW1lLmNvbnRl
bnRXaW5kb3cuSW1hZ2UudGVzdFByb3BlcnR5IGlzIHVuZGVmaW5lZC4KIFBBU1MgdGVzdEZyYW1l
LmNvbnRlbnRXaW5kb3cuSW1hZ2UuY2FjaGVkT25Pd25lckRvY3VtZW50IGlzIHRydWUKIFBBU1Mg
dGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwgaXMgdGVzdEZyYW1lLmNvbnRl
bnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwKLUZBSUwgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVz
c2FnZUNoYW5uZWwgIT09IHdpbmRvdy5NZXNzYWdlQ2hhbm5lbCBzaG91bGQgYmUgdHJ1ZS4gV2Fz
IGZhbHNlLgotRkFJTCB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCAhPT0g
c3RvcmVkQ29uc3RydWN0b3JzLk1lc3NhZ2VDaGFubmVsIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFs
c2UuCi1GQUlMIHN0b3JlZENvbnN0cnVjdG9ycy5NZXNzYWdlQ2hhbm5lbC50ZXN0UHJvcGVydHkg
c2hvdWxkIGJlIHByb3BlcnR5IHNldCBzdWNjZXNzZnVsbHkuIFRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFJlc3VsdCBvZiBleHByZXNzaW9uICdzdG9yZWRDb25zdHJ1Y3RvcnMuTWVzc2FnZUNo
YW5uZWwnIFt1bmRlZmluZWRdIGlzIG5vdCBhbiBvYmplY3QuCi1GQUlMIHRlc3RGcmFtZS5jb250
ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsLnRlc3RQcm9wZXJ0eSBzaG91bGQgYmUgdW5kZWZpbmVk
LiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSZXN1bHQgb2YgZXhwcmVzc2lvbiAndGVzdEZy
YW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwnIFt1bmRlZmluZWRdIGlzIG5vdCBhbiBv
YmplY3QuCi1GQUlMIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsLmNhY2hl
ZE9uT3duZXJEb2N1bWVudCBzaG91bGQgYmUgdHJ1ZS4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogUmVzdWx0IG9mIGV4cHJlc3Npb24gJ3Rlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VD
aGFubmVsJyBbdW5kZWZpbmVkXSBpcyBub3QgYW4gb2JqZWN0LgorUEFTUyB0ZXN0RnJhbWUuY29u
dGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCAhPT0gd2luZG93Lk1lc3NhZ2VDaGFubmVsIGlzIHRy
dWUKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwgIT09IHN0b3Jl
ZENvbnN0cnVjdG9ycy5NZXNzYWdlQ2hhbm5lbCBpcyB0cnVlCitQQVNTIHN0b3JlZENvbnN0cnVj
dG9ycy5NZXNzYWdlQ2hhbm5lbC50ZXN0UHJvcGVydHkgaXMgInByb3BlcnR5IHNldCBzdWNjZXNz
ZnVsbHkiCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsLnRlc3RQ
cm9wZXJ0eSBpcyB1bmRlZmluZWQuCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3Nh
Z2VDaGFubmVsLmNhY2hlZE9uT3duZXJEb2N1bWVudCBpcyB0cnVlCiBQQVNTIHRlc3RGcmFtZS5j
b250ZW50V2luZG93Lk9wdGlvbiBpcyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5PcHRpb24KIFBB
U1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9uICE9PSB3aW5kb3cuT3B0aW9uIGlzIHRy
dWUKIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9uICE9PSBzdG9yZWRDb25zdHJ1
Y3RvcnMuT3B0aW9uIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLWNoYW5uZWwtZ2MtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjYxZTVmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLWNoYW5uZWwtZ2MtMi5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzxib2R5PgorPHA+VGVzdCB0
aGF0IE1lc3NhZ2VQb3J0IGNsb3NlIGV2ZW50IGdldHMgZGVsaXZlcmVkICh3aXRob3V0IGNyYXNo
aW5nKSBldmVuIGlmIHRoZSBjaGFubmVsIG9iamVjdCBpcyBnYXJiYWdlIGNvbGxlY3RlZC48L3A+
Cis8cHJlIGlkPWxvZz48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYg
KHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVj
dCgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdh
cmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3Jl
IGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3Zh
ciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworCitnYygpOworY2hhbm5lbC5wb3J0MS5z
dGFydCgpOworY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgibXNnIik7CisKK2djKCk7CitjaGFu
bmVsLnBvcnQxLmNsb3NlKCk7CitjaGFubmVsLnBvcnQyLmNsb3NlKCk7CitnYygpOworCitzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGxvZygiRE9ORSIpOworICAgIGdjKCk7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfSwgMCk7CitjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwor
Z2MoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNjFlNWYwMS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sLWRpc2FibGVkCisrKyAvZGV2L251
bGwKQEAgLTEsNDUgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgTWVzc2FnZVBvcnQgY2xv
c2UgZXZlbnQgZ2V0cyBkZWxpdmVyZWQgKHdpdGhvdXQgY3Jhc2hpbmcpIGV2ZW4gaWYgdGhlIGNo
YW5uZWwgb2JqZWN0IGlzIGdhcmJhZ2UgY29sbGVjdGVkLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJl
PgotPHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxl
cikKLSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChG
RiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQotICAgICAg
ICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCAr
PSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotdmFyIGNoYW5uZWwgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7Ci0KLWdjKCk7Ci1jaGFubmVsLnBvcnQxLnN0YXJ0KCk7Ci1jaGFubmVsLnBv
cnQyLnBvc3RNZXNzYWdlKCJtc2ciKTsKLQotZ2MoKTsKLWNoYW5uZWwucG9ydDEuY2xvc2UoKTsK
LWNoYW5uZWwucG9ydDIuY2xvc2UoKTsKLWdjKCk7Ci0KLXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
Ci0gICAgbG9nKCJET05FIik7Ci0gICAgZ2MoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19
LCAwKTsKLWNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci1nYygpOwotCi08L3NjcmlwdD4K
LTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hh
bm5lbC1nYy0zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwt
Z2MtMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ZTQ3MTcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwt
Z2MtMy5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IE1lc3NhZ2VQ
b3J0IG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgZXZlbiBpZiBib3RoIHBvcnRzIGFyZSBpbmFjY2Vz
c2libGUgZnJvbSBKUyBhbnkgbW9yZS48L3A+Cis8cD5TaG91bGQgc2F5IFBBU1MgdHdpY2UuPC9w
PgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlm
ICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxl
Y3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNl
IGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVm
b3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K2Z1bmN0aW9uIHRlc3QxKCkKK3sKKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKKworICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IGxvZygi
UEFTUzogbWVzc2FnZSBkZWxpdmVyZWQuIFBvcnQ6ICIgKyBldnQudGFyZ2V0KTsgdGVzdDIoKTsg
fQorICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOworCisgICAgY2hhbm5lbCA9
IDA7CisgICAgZ2MoKTsKK30KKworZnVuY3Rpb24gdGVzdDIoKQoreworICAgIHZhciBjaGFubmVs
ID0gbmV3IE1lc3NhZ2VDaGFubmVsOworCisgICAgY2hhbm5lbC5wb3J0Mi5jbG9zZSgpOworCisg
ICAgY2hhbm5lbCA9IDA7CisgICAgZ2MoKTsKKyAgICBsb2coIlBBU1M6IHBvcnQgY2xvc2VkLiIp
OworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordGVzdDEoKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5u
ZWwtZ2MtMy5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1j
aGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjkwNmFhNi4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNo
YW5uZWwtZ2MtMy5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAot
PGJvZHk+Ci08cD5UZXN0IHRoYXQgTWVzc2FnZVBvcnQgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZCBl
dmVuIGlmIGJvdGggcG9ydHMgYXJlIGluYWNjZXNzaWJsZSBmcm9tIEpTIGFueSBtb3JlLjwvcD4K
LTxwPlNob3VsZCBzYXkgUEFTUyB0d2ljZS48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3Jp
cHQ+Ci1mdW5jdGlvbiBnYygpCi17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAg
ICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1
aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIg
cyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
Ci17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNz
YWdlICsgIjxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gdGVzdDEoKQotewotICAgIHZh
ciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIAotICAgIGNoYW5uZWwucG9ydDEu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IGxvZygiUEFTUzogbWVzc2FnZSBkZWxpdmVyZWQu
IFBvcnQ6ICIgKyBldnQudGFyZ2V0KTsgdGVzdDIoKTsgfQotICAgIGNoYW5uZWwucG9ydDIucG9z
dE1lc3NhZ2UoIm1zZyIpOwotICAgIAotICAgIGNoYW5uZWwgPSAwOwotICAgIGdjKCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3QyKCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKLSAgICAKLSAgICBjaGFubmVsLnBvcnQyLmNsb3NlKCk7Ci0gICAgCi0gICAgY2hhbm5lbCA9
IDA7Ci0gICAgZ2MoKTsKLSAgICBsb2coIlBBU1M6IHBvcnQgY2xvc2VkLiIpOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKLX0KLQotdGVzdDEoKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWVhOWY4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbApAQCAt
MCwwICsxLDU4IEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBtZXNzYWdlcyBh
cmUgZGVsaXZlcmVkIGV2ZW4gaWYgYm90aCBwb3J0cyBhcmUgaW4gdHJhbnNpdCAoY2xvbmVkKS48
L3A+Cis8cD5TaG91bGQgc2F5IFBBU1MgdHdpY2UuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8
c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQor
ICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJl
cXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZh
ciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1l
c3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0MSgpCit7CisgICAg
dmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgdmFyIGNoYW5uZWwyID0gbmV3
IE1lc3NhZ2VDaGFubmVsOworICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZzEiKTsK
KyAgICBjaGFubmVsMi5wb3J0MS5wb3N0TWVzc2FnZSgiIiwgY2hhbm5lbC5wb3J0MSk7CisgICAg
Y2hhbm5lbDIucG9ydDIucG9zdE1lc3NhZ2UoIiIsIGNoYW5uZWwucG9ydDIpOworICAgIGNoYW5u
ZWwyLnBvcnQyLm9ubWVzc2FnZSA9IGNoYW5uZWwyLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeworICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09ICJtc2cxIikgeworICAgICAgICAg
ICAgICAgIGxvZygiUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSB0byBjbG9uZWQgcG9ydC4iKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKCJtc2cyIik7CisgICAgICAgICAgICAgICAg
Z2MoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAibXNnMiIpIHsKKyAg
ICAgICAgICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBjbG9uZWQgcG9y
dC4iKTsKKyAgICAgICAgICAgICAgICBnYygpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmtub3duIG1lc3NhZ2U6ICIgKyBldmVudC5kYXRhKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBldnQubWVzc2FnZVBvcnQgPSAwOwor
ICAgIH0KKyAgICBjaGFubmVsID0gMDsKKyAgICBjaGFubmVsMiA9IDA7CisgICAgZ2MoKTsKK30K
KwordGVzdDEoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1sLWRpc2FibGVkIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbC1kaXNhYmxlZApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlYTlmOC4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1sLWRpc2FibGVkCisrKyAv
ZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgTWVzc2FnZVBv
cnQgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZCBldmVuIGlmIGJvdGggcG9ydHMgYXJlIGluIHRyYW5z
aXQgKGNsb25lZCkuPC9wPgotPHA+U2hvdWxkIHNheSBQQVNTIHR3aWNlLjwvcD4KLTxwcmUgaWQ9
bG9nPjwvcHJlPgotPHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdD
Q29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xs
ZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0
KQotICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlu
bmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gdGVz
dDEoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHZhciBj
aGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNz
YWdlKCJtc2cxIik7Ci0gICAgY2hhbm5lbDIucG9ydDEucG9zdE1lc3NhZ2UoIiIsIGNoYW5uZWwu
cG9ydDEpOwotICAgIGNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIiLCBjaGFubmVsLnBvcnQy
KTsKLSAgICBjaGFubmVsMi5wb3J0Mi5vbm1lc3NhZ2UgPSBjaGFubmVsMi5wb3J0MS5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PSAibXNnMSIp
IHsKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIG1lc3NhZ2UgdG8gY2xvbmVk
IHBvcnQuIik7Ci0gICAgICAgICAgICAgICAgdGhpcy5wb3N0TWVzc2FnZSgibXNnMiIpOwotICAg
ICAgICAgICAgICAgIGdjKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEgPT0g
Im1zZzIiKSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBtZXNzYWdlIGZy
b20gY2xvbmVkIHBvcnQuIik7Ci0gICAgICAgICAgICAgICAgZ2MoKTsKLSAgICAgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIGxvZygiRkFJTDogUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsg
ZXZlbnQuZGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZXZ0Lm1lc3Nh
Z2VQb3J0ID0gMDsKLSAgICB9Ci0gICAgY2hhbm5lbCA9IDA7Ci0gICAgY2hhbm5lbDIgPSAwOwot
ICAgIGdjKCk7Ci19Ci0KLXRlc3QxKCk7Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWExMDhlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLmh0bWwKQEAgLTAsMCArMSw1MSBA
QAorPGJvZHk+Cis8cD5UZXN0IHNvbWUgY2FzZXMgb2YgTWVzc2FnZVBvcnQgZ2FyYmFnZSBjb2xs
ZWN0aW9uLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkK
K3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJv
bGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsg
Ly8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9j
YXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJj
Iik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworfQorCit2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK2NoYW5uZWwucG9y
dDEuZm9vID0gImJhciI7CisKK2djKCk7Citsb2coIlNob3VsZCBiZSAnYmFyJzogIiArIGNoYW5u
ZWwucG9ydDEuZm9vKTsKKworY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsg
bG9nKCJvbm1lc3NhZ2UiKTsgfQorY2hhbm5lbC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgZnVuY3Rpb24oKSB7IGxvZygibWVzc2FnZSBsaXN0ZW5lciIpOyB9LCBmYWxzZSk7CisK
K2djKCk7CitjaGFubmVsLnBvcnQxLnN0YXJ0KCk7CitjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdl
KCJtc2ciKTsKKworZ2MoKTsKK2NoYW5uZWwucG9ydDEuY2xvc2UoKTsKK2NoYW5uZWwucG9ydDIu
Y2xvc2UoKTsKKworZ2MoKTsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBsb2coIkRP
TkUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkKK30sIDApOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1n
Yy5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVs
LWdjLmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhYTEwOGUu
LjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdj
Lmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi08Ym9keT4KLTxw
PlRlc3Qgc29tZSBjYXNlcyBvZiBNZXNzYWdlUG9ydCBnYXJiYWdlIGNvbGxlY3Rpb24uPC9wPgot
PHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3
aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3Qo
KTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdh
cmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3Jl
IGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZh
ciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotY2hhbm5lbC5wb3J0MS5mb28gPSAiYmFy
IjsKLQotZ2MoKTsKLWxvZygiU2hvdWxkIGJlICdiYXInOiAiICsgY2hhbm5lbC5wb3J0MS5mb28p
OwotCi1jaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeyBsb2coIm9ubWVzc2Fn
ZSIpOyB9Ci1jaGFubmVsLnBvcnQxLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlv
bigpIHsgbG9nKCJtZXNzYWdlIGxpc3RlbmVyIik7IH0sIGZhbHNlKTsKLQotZ2MoKTsKLWNoYW5u
ZWwucG9ydDEuc3RhcnQoKTsKLWNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOwotCi1n
YygpOwotY2hhbm5lbC5wb3J0MS5jbG9zZSgpOwotY2hhbm5lbC5wb3J0Mi5jbG9zZSgpOwotCi1n
YygpOwotCi1zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIGxvZygiRE9ORSIpOwotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKQotfSwgMCk7Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1
bGFyLW93bmVyc2hpcC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFu
bmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjlhYTIwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3duZXJzaGlwLmh0
bWwKQEAgLTAsMCArMSwzMCBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgYSBsZWFrIGlzIG5vdCBj
cmVhdGVkIGJ5IGFzc2lnbmluZyBhIE1lc3NhZ2VQb3J0IHRvIGEgcHJvcGVydHkgb2YgaXRzIG93
biBsaXN0ZW5lci48L3A+Cis8cD5Pbmx5IHdvcmtzIHdpdGggcnVuLXdlYmtpdC10ZXN0cyAtLWxl
YWtzLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sK
KyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxl
ci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8g
PiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRp
b25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7
CisgICAgfQorfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWw7CisKK2NoYW5uZWwucG9ydDEub25jbG9zZSA9IGZ1bmN0aW9uKCkge30KKworY2hh
bm5lbC5wb3J0MS5vbmNsb3NlLmZvbyA9IGNoYW5uZWw7CitjaGFubmVsLnBvcnQxLm9uY2xvc2Uu
YmFyID0gY2hhbm5lbC5wb3J0MTsKK2NoYW5uZWwucG9ydDEub25jbG9zZS5iYXogPSBjaGFubmVs
LnBvcnQyOworCitjaGFubmVsID0gbnVsbDsKK2djKCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5l
ci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNh
YmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFhMjBiMC4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3Vs
YXItb3duZXJzaGlwLmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBA
Ci08Ym9keT4KLTxwPlRlc3QgdGhhdCBhIGxlYWsgaXMgbm90IGNyZWF0ZWQgYnkgYXNzaWduaW5n
IGEgTWVzc2FnZVBvcnQgdG8gYSBwcm9wZXJ0eSBvZiBpdHMgb3duIGxpc3RlbmVyLjwvcD4KLTxw
Pk9ubHkgd29ya3Mgd2l0aCBydW4td2Via2l0LXRlc3RzIC0tbGVha3MuPC9wPgotPHByZSBpZD1s
b2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0ND
b250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29s
bGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVj
dCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotCi12YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLQotY2hhbm5l
bC5wb3J0MS5vbmNsb3NlID0gZnVuY3Rpb24oKSB7fQotCi1jaGFubmVsLnBvcnQxLm9uY2xvc2Uu
Zm9vID0gY2hhbm5lbDsKLWNoYW5uZWwucG9ydDEub25jbG9zZS5iYXIgPSBjaGFubmVsLnBvcnQx
OwotY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmJheiA9IGNoYW5uZWwucG9ydDI7Ci0KLWNoYW5uZWwg
PSBudWxsOwotZ2MoKTsKLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hODE4YTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0bWwKQEAgLTAsMCArMSwxMjggQEAKKzxib2R5Pgor
PHA+VGVzdHMgdmFyaW91cyB1c2UgY2FzZXMgd2hlbiBjbG9uaW5nIE1lc3NhZ2VQb3J0cy48L3A+
Cis8cD5TaG91bGQgYmUgYSBzZXJpZXMgb2YgU1VDQ0VTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0
aCBET05FLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KKworZnVuY3Rpb24gZ2Mo
KQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250
cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
eyAvLyBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9j
YXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpLgorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFi
YyIpOworICAgIH0KK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKwordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CitjaGFubmVsLnBv
cnQxLm9ubWVzc2FnZSA9IGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7
CisgICAgZmFpbCgiRkFJTDogU2hvdWxkIG5vdCBoYXZlIHJlY2VpdmVkIG1lc3NhZ2U6ICIgKyBl
dnQuZGF0YSk7Cit9Cit0cnkgeworICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIs
IGNoYW5uZWwucG9ydDEpOworICAgIGxvZygiRkFJTDogUG9zdGluZyBwb3J0IHRvIGl0c2VsZiBz
aG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiIpOworfSBjYXRjaCAoZXgpIHsKKyAgICBsb2coIlNV
Q0NFU1M6IFBvc3RpbmcgcG9ydCB0byBpdHNlbGY6ICIgKyBleCk7Cit9CisKK3RyeSB7CisgICAg
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0Mik7CisgICAgbG9n
KCJGQUlMOiBQb3N0aW5nIHBvcnQgdG8gZW50YW5nbGVkIHBhaXIgc2hvdWxkIHRocm93IGFuIGV4
Y2VwdGlvbi4iKTsKK30gY2F0Y2ggKGV4KSB7CisgICAgbG9nKCJTVUNDRVNTOiBQb3N0aW5nIGVu
dGFuZ2xlZCBwb3J0OiAiICsgZXgpOworfQorCitjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwordmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOworY2hhbm5lbC5wb3J0MS5wb3N0
TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOworCisvLyBTaG91bGQgbm90IGJlIGFibGUg
dG8gcG9zdCBhIGNsb25lZCBwb3J0LgordHJ5IHsKKyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNz
YWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7CisgICAgbG9nKCJGQUlMOiBQb3N0aW5nIGNsb25l
ZCBwb3J0IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChleCkgeworICAg
IGxvZygiU1VDQ0VTUzogUG9zdGluZyBjbG9uZWQgcG9ydC4iKTsKK30KKworLy8gVGVzdCBwb3N0
aW5nIG1lc3NhZ2VzIHRvIGEgcG9ydCBpbiBjbG9uZWQgc3RhdGUuCisKK3ZhciBjaGFubmVsID0g
bmV3IE1lc3NhZ2VDaGFubmVsOwordmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwor
CisvLyBQb3N0IG1lc3NhZ2VzIGJlZm9yZSBhbmQgYWZ0ZXIgY2xvbmUgdG8gbWFrZSBzdXJlIG9y
ZGVyaW5nIGlzIHByZXNlcnZlZCBhbmQgYWxsIG1lc3NhZ2VzIGFyZSByZWNlaXZlZC4KK2NoYW5u
ZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIxIik7CitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJt
c2ciLCBjaGFubmVsMi5wb3J0MSk7CitjaGFubmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiMiIpOwor
Y2hhbm5lbDIucG9ydDIucG9zdE1lc3NhZ2UoIjMiKTsKK2NoYW5uZWwucG9ydDIub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgdmFyIG1lc3NhZ2VJbmRleCA9IDE7CisgICAgZXZ0Lm1l
c3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRh
dGEgIT0gbWVzc2FnZUluZGV4KQorICAgICAgICAgICAgbG9nKCJGQUlMOiBHb3QgbWVzc2FnZSAi
ICsgZXZ0LmRhdGEgKyAiLCBleHBlY3RlZCAiICsgbWVzc2FnZUluZGV4KTsKKyAgICAgICAgbWVz
c2FnZUluZGV4Kys7CisgICAgICAgIGlmIChtZXNzYWdlSW5kZXggPT0gNCkgeworICAgICAgICAg
ICAgbG9nKCJTVUNDRVNTOiBQb3N0ZWQgbWVzc2FnZXMgdG8gY2xvbmVkIHBvcnQuIik7CisgICAg
ICAgICAgICB0ZXN0RG91Ymx5Q2xvbmVkUG9ydCgpOworICAgICAgICB9CisgICAgfQorfQorCitm
dW5jdGlvbiB0ZXN0RG91Ymx5Q2xvbmVkUG9ydCgpCit7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcg
TWVzc2FnZUNoYW5uZWw7CisgICAgdmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwor
ICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwyLnBvcnQxKTsKKyAg
ICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0Mik7CisgICAg
Z2MoKTsKKyAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAg
ICAgICBldnQubWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoInRlc3RtZSIpOworICAgIH0KKyAgICBj
aGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBldnQubWVz
c2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkgeworICAgICAgICAgICAgaWYgKGV2
dC5kYXRhID09ICJ0ZXN0bWUiKQorICAgICAgICAgICAgICAgIGxvZygiU1VDQ0VTUzogQ2xvbmVk
IGJvdGggZW5kcG9pbnRzIG9mIGEgY2hhbm5lbC4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBsb2coIkZBSUw6IEludmFsaWQgbWVzc2FnZSBhcnJpdmVkOiAiICsgZXZ0LmRh
dGEpOworICAgICAgICAgICAgdGVzdFBvc3RDbG9zZVBvcnQoKTsKKyAgICAgICAgfQorICAgIH0K
KworfQorCisvLyAqU2hvdWxkKiBiZSBhYmxlIHRvIHBvc3QgYSBjbG9zZWQgcG9ydC4KK2Z1bmN0
aW9uIHRlc3RQb3N0Q2xvc2VQb3J0KCkKK3sKKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbDsKKyAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgY2hh
bm5lbDIucG9ydDIuY2xvc2UoKTsKKyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJjbG9z
ZWQiLCBjaGFubmVsMi5wb3J0Mik7CisgICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldnQpIHsKKyAgICAgICAgaWYgKCFldnQubWVzc2FnZVBvcnQpCisgICAgICAgICAgICBs
b2coIkZBSUw6IENsb3NlZCBwb3J0IG5vdCBzZW50LiIpOworICAgICAgICBlbHNlIGlmIChldnQu
ZGF0YSAhPSAiY2xvc2VkIikKKyAgICAgICAgICAgIGxvZygiRkFJTDogVW5leHBlY3RlZCBtZXNz
YWdlOiAiICsgZXZ0LmRhdGEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIlNVQ0NF
U1M6IEdvdCBjbG9zZWQgcG9ydCB3aXRoIGV2ZW50IG1lc3NhZ2UgIiArIGV2dC5kYXRhKTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgbG9nKCJE
T05FIik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5o
dG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25l
Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MThhMmUuLjAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0
bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotPGJvZHk+Ci08cD5U
ZXN0cyB2YXJpb3VzIHVzZSBjYXNlcyB3aGVuIGNsb25pbmcgTWVzc2FnZVBvcnRzLjwvcD4KLTxw
PlNob3VsZCBiZSBhIHNlcmllcyBvZiBTVUNDRVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERP
TkUuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotCi1mdW5jdGlvbiBnYygpCi17
Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xs
ZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8v
IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlv
bnMgYmVmb3JlIGEgY29sbGVjdCkuCi0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7
Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotfQotCi12YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLWNoYW5uZWwucG9ydDEu
b25tZXNzYWdlID0gY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAg
ICBmYWlsKCJGQUlMOiBTaG91bGQgbm90IGhhdmUgcmVjZWl2ZWQgbWVzc2FnZTogIiArIGV2dC5k
YXRhKTsKLX0KLXRyeSB7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hh
bm5lbC5wb3J0MSk7Ci0gICAgbG9nKCJGQUlMOiBQb3N0aW5nIHBvcnQgdG8gaXRzZWxmIHNob3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24uIik7Ci19IGNhdGNoIChleCkgewotICAgIGxvZygiU1VDQ0VT
UzogUG9zdGluZyBwb3J0IHRvIGl0c2VsZjogIiArIGV4KTsKLX0KLQotdHJ5IHsKLSAgICBjaGFu
bmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyKTsKLSAgICBsb2coIkZB
SUw6IFBvc3RpbmcgcG9ydCB0byBlbnRhbmdsZWQgcGFpciBzaG91bGQgdGhyb3cgYW4gZXhjZXB0
aW9uLiIpOwotfSBjYXRjaCAoZXgpIHsKLSAgICBsb2coIlNVQ0NFU1M6IFBvc3RpbmcgZW50YW5n
bGVkIHBvcnQ6ICIgKyBleCk7Ci19Ci0KLWNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci12
YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci1jaGFubmVsLnBvcnQxLnBvc3RNZXNz
YWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7Ci0KLS8vIFNob3VsZCBub3QgYmUgYWJsZSB0byBw
b3N0IGEgY2xvbmVkIHBvcnQuCi10cnkgewotICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2Uo
Im1zZyIsIGNoYW5uZWwyLnBvcnQxKTsKLSAgICBsb2coIkZBSUw6IFBvc3RpbmcgY2xvbmVkIHBv
cnQgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKLX0gY2F0Y2ggKGV4KSB7Ci0gICAgbG9n
KCJTVUNDRVNTOiBQb3N0aW5nIGNsb25lZCBwb3J0LiIpOwotfQotCi0vLyBUZXN0IHBvc3Rpbmcg
bWVzc2FnZXMgdG8gYSBwb3J0IGluIGNsb25lZCBzdGF0ZS4KLQotdmFyIGNoYW5uZWwgPSBuZXcg
TWVzc2FnZUNoYW5uZWw7Ci12YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0KLS8v
IFBvc3QgbWVzc2FnZXMgYmVmb3JlIGFuZCBhZnRlciBjbG9uZSB0byBtYWtlIHN1cmUgb3JkZXJp
bmcgaXMgcHJlc2VydmVkIGFuZCBhbGwgbWVzc2FnZXMgYXJlIHJlY2VpdmVkLgotY2hhbm5lbDIu
cG9ydDIucG9zdE1lc3NhZ2UoIjEiKTsKLWNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIs
IGNoYW5uZWwyLnBvcnQxKTsKLWNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIyIik7Ci1jaGFu
bmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiMyIpOwotY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBm
dW5jdGlvbihldnQpIHsKLSAgICB2YXIgbWVzc2FnZUluZGV4ID0gMTsKLSAgICBldnQubWVzc2Fn
ZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSAh
PSBtZXNzYWdlSW5kZXgpCi0gICAgICAgICAgICBsb2coIkZBSUw6IEdvdCBtZXNzYWdlICIgKyBl
dnQuZGF0YSArICIsIGV4cGVjdGVkICIgKyBtZXNzYWdlSW5kZXgpOwotICAgICAgICBtZXNzYWdl
SW5kZXgrKzsKLSAgICAgICAgaWYgKG1lc3NhZ2VJbmRleCA9PSA0KSB7Ci0gICAgICAgICAgICBs
b2coIlNVQ0NFU1M6IFBvc3RlZCBtZXNzYWdlcyB0byBjbG9uZWQgcG9ydC4iKTsKLSAgICAgICAg
ICAgIHRlc3REb3VibHlDbG9uZWRQb3J0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHRlc3REb3VibHlDbG9uZWRQb3J0KCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNz
YWdlQ2hhbm5lbDsKLSAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAg
Y2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOwotICAgIGNo
YW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwyLnBvcnQyKTsKLSAgICBnYygp
OwotICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAg
IGV2dC5tZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgidGVzdG1lIik7Ci0gICAgfQotICAgIGNoYW5u
ZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGV2dC5tZXNzYWdl
UG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7Ci0gICAgICAgICAgICBpZiAoZXZ0LmRh
dGEgPT0gInRlc3RtZSIpCi0gICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiBDbG9uZWQgYm90
aCBlbmRwb2ludHMgb2YgYSBjaGFubmVsLiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGxvZygiRkFJTDogSW52YWxpZCBtZXNzYWdlIGFycml2ZWQ6ICIgKyBldnQuZGF0YSk7
Ci0gICAgICAgICAgICB0ZXN0UG9zdENsb3NlUG9ydCgpOwotICAgICAgICB9Ci0gICAgfQotCi19
Ci0KLS8vICpTaG91bGQqIGJlIGFibGUgdG8gcG9zdCBhIGNsb3NlZCBwb3J0LgotZnVuY3Rpb24g
dGVzdFBvc3RDbG9zZVBvcnQoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwotICAgIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBjaGFubmVs
Mi5wb3J0Mi5jbG9zZSgpOwotICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImNsb3NlZCIs
IGNoYW5uZWwyLnBvcnQyKTsKLSAgICBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgewotICAgICAgICBpZiAoIWV2dC5tZXNzYWdlUG9ydCkKLSAgICAgICAgICAgIGxvZygi
RkFJTDogQ2xvc2VkIHBvcnQgbm90IHNlbnQuIik7Ci0gICAgICAgIGVsc2UgaWYgKGV2dC5kYXRh
ICE9ICJjbG9zZWQiKQotICAgICAgICAgICAgbG9nKCJGQUlMOiBVbmV4cGVjdGVkIG1lc3NhZ2U6
ICIgKyBldnQuZGF0YSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiU1VDQ0VTUzog
R290IGNsb3NlZCBwb3J0IHdpdGggZXZlbnQgbWVzc2FnZSAiICsgZXZ0LmRhdGEpOwotICAgICAg
ICBkb25lKCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRPTkUi
KTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLTwvc2NyaXB0PgotPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9y
LWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtY29uc3RydWN0b3ItZm9yLWRlbGV0ZWQtZG9jdW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDg5YTczCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVk
LWRvY3VtZW50Lmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgZGVz
dHJveWluZyBhIGRvY3VtZW50IGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIGV4ZWN1dGluZyBN
ZXNzYWdlQ2hhbm5lbCBjb25zdHJ1Y3RvciBzYXZlZCBmcm9tIGl0cyBXaW5kb3cgb2JqZWN0Ljwv
cD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBp
ZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xs
ZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3Jj
ZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJl
Zm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAg
fQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQor
Cit2YXIgY29uc3RydWN0b3I7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGNvbnN0cnVjdG9y
ID0gd2luZG93LmZyYW1lc1swXS5NZXNzYWdlQ2hhbm5lbDsKKworICAgIHZhciBmcmFtZUVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07CisgICAgZnJh
bWVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZnJhbWVFbGVtZW50KTsKKyAgICBmcmFt
ZUVsZW1lbnQgPSBudWxsOworCisgICAgZ2MoKTsKKyAgICBzZXRUaW1lb3V0KHRlc3QyLCAxMCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICBnYygpOworICAgIHRyeSB7CisgICAgICAg
IG5ldyBjb25zdHJ1Y3RvcjsKKyAgICB9IGNhdGNoIChleCkgeworICAgIH0KKworICAgIGxvZygi
RGlkbid0IGNyYXNoOiBTVUNDRVNTIik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
Kzwvc2NyaXB0PgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZyYW1lLmh0
bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1k
b2N1bWVudC5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ODlhNzMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3Vt
ZW50Lmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi08Ym9keT4K
LTxwPlRlc3QgdGhhdCBkZXN0cm95aW5nIGEgZG9jdW1lbnQgZG9lc24ndCBjYXVzZSBhIGNyYXNo
IHdoZW4gZXhlY3V0aW5nIE1lc3NhZ2VDaGFubmVsIGNvbnN0cnVjdG9yIHNhdmVkIGZyb20gaXRz
IFdpbmRvdyBvYmplY3QuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rp
b24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4g
R0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQg
OUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3Ry
aW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+
IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci19Ci0KLXZhciBjb25zdHJ1Y3RvcjsKLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgY29uc3RydWN0b3IgPSB3aW5kb3cuZnJhbWVzWzBdLk1lc3NhZ2VDaGFubmVsOwotCi0g
ICAgdmFyIGZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJh
bWUiKVswXTsKLSAgICBmcmFtZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZUVs
ZW1lbnQpOwotICAgIGZyYW1lRWxlbWVudCA9IG51bGw7Ci0KLSAgICBnYygpOwotICAgIHNldFRp
bWVvdXQodGVzdDIsIDEwKTsKLX0KLQotZnVuY3Rpb24gdGVzdDIoKQotewotICAgIGdjKCk7Ci0g
ICAgdHJ5IHsKLSAgICAgICAgbmV3IGNvbnN0cnVjdG9yOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0g
ICAgfQotCi0gICAgbG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKLQotICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3Nh
Z2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgotPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQt
ZG9jdW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxl
dGVkLWRvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFl
MmUwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
cG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPGJvZHk+Cis8cD5U
ZXN0IHRoYXQgZGVzdHJveWluZyBhIGRvY3VtZW50IGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVu
IHBvc3RpbmcgYSBtZXNzYWdlIHRvIGEgTWVzc2FnZVBvcnQgaXQgb3duZWQuPC9wPgorPHByZSBp
ZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cu
R0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2Ug
Y29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29s
bGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ci
KS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBtYWlu
UG9ydDsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWw7CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5l
bC5wb3J0MiwgIioiKTsKKyAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CisgICAgbWFpblBv
cnQuc3RhcnQoKTsKKworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFp
blBvcnQub25tZXNzYWdlID0gdGVzdDI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2
YXIgZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIp
WzBdOworICAgIGZyYW1lRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZyYW1lRWxlbWVu
dCk7CisgICAgZnJhbWVFbGVtZW50ID0gbnVsbDsKKworICAgIGdjKCk7CisgICAgc2V0VGltZW91
dCh0ZXN0MywgMTApOworfQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgZ2MoKTsKKyAgICBt
YWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOworICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmciKQorICAgICAgICAg
ICAgbG9nKCJVbmV4cGVjdGVkIHJlc3BvbnNlOiBGQUlMIik7CisgICAgfTsKKyAgICBzZXRUaW1l
b3V0KHRlc3Q0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Q0KCkKK3sKKyAgICBtYWluUG9ydC5j
bG9zZSgpOworCisgICAgbG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKKworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21l
c3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0
ZWQtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMxZTJlMDcuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9u
dWxsCkBAIC0xLDcxICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IGRlc3Ryb3lpbmcgYSBk
b2N1bWVudCBkb2Vzbid0IGNhdXNlIGEgY3Jhc2ggd2hlbiBwb3N0aW5nIGEgbWVzc2FnZSB0byBh
IE1lc3NhZ2VQb3J0IGl0IG93bmVkLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNjcmlwdD4K
LWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAg
cmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVz
IGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAgIHZhciBzID0g
bmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2Ug
KyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgbWFpblBvcnQ7Ci0KLWZ1bmN0aW9uIHRlc3Qo
KQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5m
cmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIsICIqIik7Ci0gICAgbWFp
blBvcnQgPSBjaGFubmVsLnBvcnQxOwotICAgIG1haW5Qb3J0LnN0YXJ0KCk7Ci0KLSAgICBtYWlu
UG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IHRlc3Qy
OwotfQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgdmFyIGZyYW1lRWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKLSAgICBmcmFtZUVsZW1lbnQu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZUVsZW1lbnQpOwotICAgIGZyYW1lRWxlbWVudCA9
IG51bGw7Ci0KLSAgICBnYygpOwotICAgIHNldFRpbWVvdXQodGVzdDMsIDEwKTsKLX0KLQotZnVu
Y3Rpb24gdGVzdDMoKQotewotICAgIGdjKCk7Ci0gICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBp
bmciKTsKLSAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAg
aWYgKGV2dC5kYXRhID09ICJwb25nIikKLSAgICAgICAgICAgIGxvZygiVW5leHBlY3RlZCByZXNw
b25zZTogRkFJTCIpOwotICAgIH07Ci0gICAgc2V0VGltZW91dCh0ZXN0NCwgMTApOwotfQotCi1m
dW5jdGlvbiB0ZXN0NCgpCi17Ci0gICAgbWFpblBvcnQuY2xvc2UoKTsKLQotICAgIGxvZygiRGlk
bid0IGNyYXNoOiBTVUNDRVNTIik7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwv
c2NyaXB0PgotPGlmcmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwi
IG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZmEyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sCkBA
IC0wLDAgKzEsNzEgQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IGRlc3Ryb3lpbmcgYSBmcmFtZSBk
b2Vzbid0IGNhdXNlIGEgY3Jhc2ggd2hlbiBwb3N0aW5nIGEgbWVzc2FnZSB0byBhIE1lc3NhZ2VQ
b3J0IGl0IG93bmVkLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdD
Q29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlL
IGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmlu
ZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCit2YXIgbWFpblBvcnQ7Cit2YXIgZnJhbWVEb2M7CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIGZyYW1lRG9jID0gd2luZG93LmZyYW1lc1swXS5kb2N1bWVudDsKKyAg
ICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICB3aW5kb3cuZnJhbWVzWzBd
LnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAiKiIpOworICAgIG1haW5Qb3J0ID0g
Y2hhbm5lbC5wb3J0MTsKKyAgICBtYWluUG9ydC5zdGFydCgpOworCisgICAgbWFpblBvcnQucG9z
dE1lc3NhZ2UoInBpbmciKTsKKyAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSB0ZXN0MjsKK30KKwor
ZnVuY3Rpb24gdGVzdDIoKQoreworICAgIHZhciBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07CisgICAgZnJhbWVFbGVtZW50LnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQoZnJhbWVFbGVtZW50KTsKKyAgICBmcmFtZUVsZW1lbnQgPSBudWxsOwor
CisgICAgZ2MoKTsKKyAgICBzZXRUaW1lb3V0KHRlc3QzLCAxMCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QzKCkKK3sKKyAgICBnYygpOworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7Cisg
ICAgbWFpblBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmIChldnQu
ZGF0YSA9PSAicG9uZyIpCisgICAgICAgICAgICBsb2coIlVuZXhwZWN0ZWQgcmVzcG9uc2U6IEZB
SUwiKTsKKyAgICB9OworICAgIHNldFRpbWVvdXQodGVzdDQsIDEwKTsKK30KKworZnVuY3Rpb24g
dGVzdDQoKQoreworICAgIGxvZygiRGlkbid0IGNyYXNoOiBTVUNDRVNTIik7CisKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9t
ZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxl
dGVkLWZyYW1lLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2OWZhMmIzLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21l
c3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAt
MSw3MSArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBkZXN0cm95aW5nIGEgZnJhbWUgZG9l
c24ndCBjYXVzZSBhIGNyYXNoIHdoZW4gcG9zdGluZyBhIG1lc3NhZ2UgdG8gYSBNZXNzYWdlUG9y
dCBpdCBvd25lZC48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBn
YygpCi17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0Nv
bnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBh
bGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmco
ImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwot
fQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLX0KLQotdmFyIG1haW5Qb3J0OwotdmFyIGZyYW1lRG9jOwotCi1mdW5jdGlvbiB0
ZXN0KCkKLXsKLSAgICBmcmFtZURvYyA9IHdpbmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQ7Ci0gICAg
dmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5w
b3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0MiwgIioiKTsKLSAgICBtYWluUG9ydCA9IGNo
YW5uZWwucG9ydDE7Ci0gICAgbWFpblBvcnQuc3RhcnQoKTsKLQotICAgIG1haW5Qb3J0LnBvc3RN
ZXNzYWdlKCJwaW5nIik7Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0gdGVzdDI7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QyKCkKLXsKLSAgICB2YXIgZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOwotICAgIGZyYW1lRWxlbWVudC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKGZyYW1lRWxlbWVudCk7Ci0gICAgZnJhbWVFbGVtZW50ID0gbnVsbDsKLQot
ICAgIGdjKCk7Ci0gICAgc2V0VGltZW91dCh0ZXN0MywgMTApOwotfQotCi1mdW5jdGlvbiB0ZXN0
MygpCi17Ci0gICAgZ2MoKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAg
IG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBpZiAoZXZ0LmRh
dGEgPT0gInBvbmciKQotICAgICAgICAgICAgbG9nKCJVbmV4cGVjdGVkIHJlc3BvbnNlOiBGQUlM
Iik7Ci0gICAgfTsKLSAgICBzZXRUaW1lb3V0KHRlc3Q0LCAxMCk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3Q0KCkKLXsKLSAgICBsb2coIkRpZG4ndCBjcmFzaDogU1VDQ0VTUyIpOwotCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOwotfQotCi08L3NjcmlwdD4KLTxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbWVz
c2FnZS1wb3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Ci08L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3Rp
dmUtZG9jdW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1p
bmFjdGl2ZS1kb2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjU4NTk1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDcyIEBACis8Ym9keT4K
KzxwPlRlc3QgdGhhdCBtZXNzYWdpbmcgYW4gaW5hY3RpdmUgZnJhbWVsZXNzIGRvY3VtZW50IHdv
cmtzIGFzIGV4cGVjdGVkLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
IEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0
IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0
cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJy
PiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCit2YXIgb3RoZXJEb2N1bWVudDsKK3ZhciBtYWluUG9ydDsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgb3RoZXJEb2N1bWVudCA9IHdpbmRvdy5mcmFtZXNbMF0u
ZG9jdW1lbnQ7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgd2lu
ZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0MiwgIioiKTsKKyAg
ICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CisgICAgbWFpblBvcnQuc3RhcnQoKTsKKworICAg
IG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQub25tZXNzYWdlID0g
dGVzdDI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2YXIgZnJhbWVFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOworICAgIGZyYW1lRWxl
bWVudC5zcmMgPSAicmVzb3VyY2VzL3dpbmRvdy1vcGVuZWQuaHRtbCI7CisgICAgZnJhbWVFbGVt
ZW50Lm9ubG9hZCA9IHRlc3QzOworICAgIGdjKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkKK3sK
KyAgICBnYygpOworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJhbGVydCBGQUlMOiB0aGUgZG9j
dW1lbnQgaXMgaW5hY3RpdmUuIik7CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoImZyZWV6ZSIp
OworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZygiVW5leHBlY3RlZCByZXNwb25zZTog
RkFJTCIpOworICAgIH07CisgICAgc2V0VGltZW91dCh0ZXN0NCwgMTApOworfQorCitmdW5jdGlv
biB0ZXN0NCgpCit7CisgICAgbWFpblBvcnQuY2xvc2UoKTsKKworICAgIGxvZygiRGlkbid0IGNy
YXNoLCBmcmVlemUgb3IgcmVzcG9uZDogU1VDQ0VTUyIpOworCisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbWVzc2FnZS1wb3J0
LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSIgd2lkdGg9MCBoZWlnaHQ9MCBmcmFtZWJvcmRl
cj0wPjwvaWZyYW1lPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbC1kaXNh
YmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg1OTU3Ni4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQu
aHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLTxib2R5PgotPHA+
VGVzdCB0aGF0IG1lc3NhZ2luZyBhbiBpbmFjdGl2ZSBmcmFtZWxlc3MgZG9jdW1lbnQgd29ya3Mg
YXMgZXhwZWN0ZWQuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24g
Z2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0ND
b250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsg
YWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5n
KCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsK
LX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci19Ci0KLXZhciBvdGhlckRvY3VtZW50OwotdmFyIG1haW5Qb3J0OwotCi1mdW5j
dGlvbiB0ZXN0KCkKLXsKLSAgICBvdGhlckRvY3VtZW50ID0gd2luZG93LmZyYW1lc1swXS5kb2N1
bWVudDsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cu
ZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAiKiIpOwotICAgIG1h
aW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKLSAgICBtYWluUG9ydC5zdGFydCgpOwotCi0gICAgbWFp
blBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSB0ZXN0
MjsKLX0KLQotZnVuY3Rpb24gdGVzdDIoKQotewotICAgIHZhciBmcmFtZUVsZW1lbnQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07Ci0gICAgZnJhbWVFbGVtZW50
LnNyYyA9ICJyZXNvdXJjZXMvd2luZG93LW9wZW5lZC5odG1sIjsKLSAgICBmcmFtZUVsZW1lbnQu
b25sb2FkID0gdGVzdDM7Ci0gICAgZ2MoKTsKLX0KLQotZnVuY3Rpb24gdGVzdDMoKQotewotICAg
IGdjKCk7Ci0gICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoImFsZXJ0IEZBSUw6IHRoZSBkb2N1bWVu
dCBpcyBpbmFjdGl2ZS4iKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgiZnJlZXplIik7Ci0g
ICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBtYWluUG9ydC5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgbG9nKCJVbmV4cGVjdGVkIHJlc3BvbnNlOiBGQUlM
Iik7Ci0gICAgfTsKLSAgICBzZXRUaW1lb3V0KHRlc3Q0LCAxMCk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3Q0KCkKLXsKLSAgICBtYWluUG9ydC5jbG9zZSgpOwotCi0gICAgbG9nKCJEaWRuJ3QgY3Jhc2gs
IGZyZWV6ZSBvciByZXNwb25kOiBTVUNDRVNTIik7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Ci19Ci0KLTwvc2NyaXB0PgotPGlmcmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZy
YW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIiB3aWR0aD0wIGhlaWdodD0wIGZyYW1lYm9yZGVyPTA+
PC9pZnJhbWU+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtbm8td3JhcHBlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5lODc2NWI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbApAQCAtMCwwICsxLDM1IEBACis8Ym9keT4KKzxw
PlRlc3QgdGhhdCBkZWxpdmVyaW5nIGEgbWVzc2FnZSB0byBhIHBvcnQgdGhhdCB3YXMgbmV2ZXIg
cmVmZXJlbmNlZCBmcm9tIEpTIGRvZXNuJ3QgY2F1c2UgYSBjcmFzaC48L3A+Cis8cHJlIGlkPWxv
Zz48L3ByZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdD
Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNv
bGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxl
Y3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5j
dGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgY2hhbm5l
bCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK2NoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIp
OworY2hhbm5lbC5wb3J0MS5zdGFydCgpOworY2hhbm5lbCA9IDA7CitnYygpOworCitzZXRUaW1l
b3V0KCJsb2coJ1BBU1MnKTsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpIiwgMTAwKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbm8td3Jh
cHBlci5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LW5vLXdyYXBwZXIuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTg3NjViOS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQtbm8td3JhcHBlci5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBA
QAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgZGVsaXZlcmluZyBhIG1lc3NhZ2UgdG8gYSBwb3J0IHRo
YXQgd2FzIG5ldmVyIHJlZmVyZW5jZWQgZnJvbSBKUyBkb2Vzbid0IGNhdXNlIGEgY3Jhc2guPC9w
PgotPHByZSBpZD1sb2c+PC9wcmU+Ci0KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBnYygpCi17Ci0gICAg
aWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29s
bGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9y
Y2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBi
ZWZvcmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAg
IH0KLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0K
LQotdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci1jaGFubmVsLnBvcnQxLnBvc3RN
ZXNzYWdlKCJtc2ciKTsKLWNoYW5uZWwucG9ydDEuc3RhcnQoKTsKLWNoYW5uZWwgPSAwOwotZ2Mo
KTsKLQotc2V0VGltZW91dCgibG9nKCdQQVNTJyk7IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsIDEwMCk7Ci0KLTwvc2Ny
aXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDY0NjdmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwKQEAgLTAsMCAr
MSw5NSBAQAorPGJvZHk+Cis8cD5UZXN0IGNyb3NzLWZyYW1lIE1lc3NhZ2VQb3J0IGNvbW11bmlj
YXRpb24uPC9wPgorPHA+U2hvdWxkIGJlIGEgc2VyaWVzIG9mIFNVQ0NFU1MgbWVzc2FnZXMsIGZv
bGxvd2VkIHdpdGggRE9ORS48L3A+Cis8cHJlIGlkPWxvZz48L3ByZT4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgbWFpblBv
cnQ7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwu
cG9ydDIsICIqIik7CisgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOworICAgIG1haW5Qb3J0
LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZ0KSB7CisgICAgICAgIGlmIChldnQuZGF0YSA9PSAicG9uZyIgJiYgZXZ0Lm9yaWdpbiA9PSAi
IikKKyAgICAgICAgICAgIGxvZygiU2ltcGxlIGV4Y2hhbmdlOiBTVUNDRVNTIik7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGxvZygiU2ltcGxlIGV4Y2hhbmdlOiBGQUlMLiBHb3QgbWVzc2Fn
ZSAnIiArIGV2dC5kYXRhICsgIicgZnJvbSAnIiArIGV2dC5vcmlnaW4gKyAiJy4iKTsKKyAgICAg
ICAgdGVzdDIoKTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAgdmFyIGNo
YW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoIm5l
d1BvcnQiLCBjaGFubmVsLnBvcnQyKTsKKyAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gInlvIiAmJiBldnQub3JpZ2lu
ID09ICIiKQorICAgICAgICAgICAgbG9nKCJQb3N0ZWQgcG9ydDogU1VDQ0VTUyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBsb2coIlBvc3RlZCBwb3J0OiBGQUlMLiBHb3QgbWVzc2FnZSAn
IiArIGV2dC5kYXRhICsgIicgZnJvbSAnIiArIGV2dC5vcmlnaW4gKyAiJy4iKTsKKyAgICAgICAg
dGVzdDMoKTsKKyAgICB9OworfQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgdmFyIGNoYW5u
ZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
MSIpOworICAgIHZhciBzdGFydGVkID0gZmFsc2U7CisgICAgY2hhbm5lbC5wb3J0Mi5hZGRFdmVu
dExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmIChzdGFydGVk
KSB7CisgICAgICAgICAgICBsb2coIkV2ZW50IExpc3RlbmVyOiBTVUNDRVNTIik7CisgICAgICAg
ICAgICB0ZXN0NCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxvZygiRXZlbnQgTGlz
dGVuZXI6IEZBSUwuIEV2ZW50IGxpc3RlbmVyIGNhbGxlZCBiZWZvcmUgc3RhcnQoKSIpOworICAg
fSk7CisgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgY2hhbm5lbC5wb3J0Mi5zdGFy
dCgpOworICAgICAgc3RhcnRlZCA9IHRydWU7CisgICB9LCAxMDApOworCit9CisKK2Z1bmN0aW9u
IHRlc3Q0KCkKK3sKKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCIxIik7CisgICAgY2hhbm5lbC5wb3J0MS5jbG9zZSgp
OworICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIjIiKTsKKyAgICBjaGFubmVsLnBvcnQy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gIjEi
KSB7CisgICAgICAgICAgICBsb2coIkNsb3NlZCBwb3J0OiBTVUNDRVNTIik7CisgICAgICAgICAg
ICB0ZXN0NSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxvZygiQ2xvc2VkIHBvcnQ6
IEZBSUwuIEdvdCBtZXNzYWdlOiAiICsgZXZ0LmRhdGEgKyAiIGFmdGVyIGNsb3NlIik7CisgICB9
Cit9CisKK2Z1bmN0aW9uIHRlc3Q1KCkKK3sKKyAgICAvLyBDcmVhdGUgYSBjaGFubmVsIGFuZCBw
dXQgc29tZSBtZXNzYWdlcyBpbiBpdCB3aGljaCB3aWxsIGdvIHVuZGVsaXZlcmVkIGFuZCBzaG91
bGQgbm90IGxlYWsKKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJhYmNkZSIpOworICAgIC8vIE5vdyB3YWl0IGEgc2hv
cnQgcGVyaW9kIG9mIHRpbWUgdG8gZW5zdXJlIG5vIG1lc3NhZ2VzIGNvbWUgaW4gZnJvbSBwcmV2
aW91cyB0ZXN0cy4KKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBsb2coIkRP
TkUiKTsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCAxMDApOworfQor
Cis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5o
dG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyMDY0NjdmLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwKQEAgLTEsOTUg
KzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IGNyb3NzLWZyYW1lIE1lc3NhZ2VQb3J0IGNvbW11bmlj
YXRpb24uPC9wPgotPHA+U2hvdWxkIGJlIGEgc2VyaWVzIG9mIFNVQ0NFU1MgbWVzc2FnZXMsIGZv
bGxvd2VkIHdpdGggRE9ORS48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5j
dGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgbWFpblBv
cnQ7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwu
cG9ydDIsICIqIik7Ci0gICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwotICAgIG1haW5Qb3J0
LnBvc3RNZXNzYWdlKCJwaW5nIik7Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24o
ZXZ0KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSA9PSAicG9uZyIgJiYgZXZ0Lm9yaWdpbiA9PSAi
IikKLSAgICAgICAgICAgIGxvZygiU2ltcGxlIGV4Y2hhbmdlOiBTVUNDRVNTIik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGxvZygiU2ltcGxlIGV4Y2hhbmdlOiBGQUlMLiBHb3QgbWVzc2Fn
ZSAnIiArIGV2dC5kYXRhICsgIicgZnJvbSAnIiArIGV2dC5vcmlnaW4gKyAiJy4iKTsKLSAgICAg
ICAgdGVzdDIoKTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgdmFyIGNo
YW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoIm5l
d1BvcnQiLCBjaGFubmVsLnBvcnQyKTsKLSAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2dCkgewotICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gInlvIiAmJiBldnQub3JpZ2lu
ID09ICIiKQotICAgICAgICAgICAgbG9nKCJQb3N0ZWQgcG9ydDogU1VDQ0VTUyIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBsb2coIlBvc3RlZCBwb3J0OiBGQUlMLiBHb3QgbWVzc2FnZSAn
IiArIGV2dC5kYXRhICsgIicgZnJvbSAnIiArIGV2dC5vcmlnaW4gKyAiJy4iKTsKLSAgICAgICAg
dGVzdDMoKTsKLSAgICB9OwotfQotCi1mdW5jdGlvbiB0ZXN0MygpCi17Ci0gICAgdmFyIGNoYW5u
ZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
MSIpOwotICAgIHZhciBzdGFydGVkID0gZmFsc2U7Ci0gICAgY2hhbm5lbC5wb3J0Mi5hZGRFdmVu
dExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChzdGFydGVk
KSB7Ci0gICAgICAgICAgICBsb2coIkV2ZW50IExpc3RlbmVyOiBTVUNDRVNTIik7Ci0gICAgICAg
ICAgICB0ZXN0NCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxvZygiRXZlbnQgTGlz
dGVuZXI6IEZBSUwuIEV2ZW50IGxpc3RlbmVyIGNhbGxlZCBiZWZvcmUgc3RhcnQoKSIpOwotICAg
fSk7Ci0gICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgY2hhbm5lbC5wb3J0Mi5zdGFy
dCgpOwotICAgICAgc3RhcnRlZCA9IHRydWU7Ci0gICB9LCAxMDApOwotCi19Ci0KLWZ1bmN0aW9u
IHRlc3Q0KCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCIxIik7Ci0gICAgY2hhbm5lbC5wb3J0MS5jbG9zZSgp
OwotICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIjIiKTsKLSAgICBjaGFubmVsLnBvcnQy
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gIjEi
KSB7Ci0gICAgICAgICAgICBsb2coIkNsb3NlZCBwb3J0OiBTVUNDRVNTIik7Ci0gICAgICAgICAg
ICB0ZXN0NSgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxvZygiQ2xvc2VkIHBvcnQ6
IEZBSUwuIEdvdCBtZXNzYWdlOiAiICsgZXZ0LmRhdGEgKyAiIGFmdGVyIGNsb3NlIik7Ci0gICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3Q1KCkKLXsKLSAgICAvLyBDcmVhdGUgYSBjaGFubmVsIGFuZCBw
dXQgc29tZSBtZXNzYWdlcyBpbiBpdCB3aGljaCB3aWxsIGdvIHVuZGVsaXZlcmVkIGFuZCBzaG91
bGQgbm90IGxlYWsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJhYmNkZSIpOwotICAgIC8vIE5vdyB3YWl0IGEgc2hv
cnQgcGVyaW9kIG9mIHRpbWUgdG8gZW5zdXJlIG5vIG1lc3NhZ2VzIGNvbWUgaW4gZnJvbSBwcmV2
aW91cyB0ZXN0cy4KLSAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICBsb2coIkRP
TkUiKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCAxMDApOwotfQot
Ci08L3NjcmlwdD4KLTxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5o
dG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAppbmRleCAxNDQ1
MDRjLi4zNTdmMDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25z
dHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNv
bnN0cnVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTExMCw3ICsxMTAsOSBAQCBQQVNTIEltYWdlLnRv
U3RyaW5nKCkgaXMgJ1tvYmplY3QgSW1hZ2VDb25zdHJ1Y3Rvcl0nCiBQQVNTIEtleWJvYXJkRXZl
bnQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBLZXlib2FyZEV2ZW50Q29uc3RydWN0b3JdJwogUEFT
UyBNZWRpYUVycm9yLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWVkaWFFcnJvckNvbnN0cnVjdG9y
XScKIFBBU1MgTWVkaWFMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWVkaWFMaXN0Q29uc3Ry
dWN0b3JdJworUEFTUyBNZXNzYWdlQ2hhbm5lbC50b1N0cmluZygpIGlzICdbb2JqZWN0IE1lc3Nh
Z2VDaGFubmVsQ29uc3RydWN0b3JdJwogUEFTUyBNZXNzYWdlRXZlbnQudG9TdHJpbmcoKSBpcyAn
W29iamVjdCBNZXNzYWdlRXZlbnRDb25zdHJ1Y3Rvcl0nCitQQVNTIE1lc3NhZ2VQb3J0LnRvU3Ry
aW5nKCkgaXMgJ1tvYmplY3QgTWVzc2FnZVBvcnRDb25zdHJ1Y3Rvcl0nCiBQQVNTIE1pbWVUeXBl
LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWltZVR5cGVDb25zdHJ1Y3Rvcl0nCiBQQVNTIE1pbWVU
eXBlQXJyYXkudG9TdHJpbmcoKSBpcyAnW29iamVjdCBNaW1lVHlwZUFycmF5Q29uc3RydWN0b3Jd
JwogUEFTUyBNb3VzZUV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTW91c2VFdmVudENvbnN0
cnVjdG9yXScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xv
bmVwb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZDJjNjMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1s
CkBAIC0wLDAgKzEsMTAzIEBACis8Ym9keT4KKzxwPlRlc3QgTWVzc2FnZVBvcnQgbWVzc2FnaW5n
L2VudGFuZ2xlL2RldGFuZ2xlIGFjcm9zcyB0aHJlYWRzLiBTaG91bGQgcHJpbnQgIlNVQ0NFU1Mi
IHdoZW4gZG9uZS48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlv
biBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCisKK3ZhciBjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Cit2YXIgbnVtTWVzc2FnZXMgPSA1MDAwMDsKKwor
Ly8gQ3JlYXRlIGEgY2hhbm5lbCB3aGljaCB3ZSB3aWxsIHVzZSB0byBjbG9uZSBhbmQgcmUtY2xv
bmUgb25lIGVuZCBvZiBhCisvLyBNZXNzYWdlQ2hhbm5lbC4KK3ZhciBjbG9uZUNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWwoKTsKK3ZhciBzdG9wQ2xvbmluZyA9IGZhbHNlOworY2xvbmVDaGFu
bmVsLnBvcnQxLm9ubWVzc2FnZSA9IGNsb25lQ2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSByZXNl
bmRQb3J0OworY2xvbmVDaGFubmVsLnBvcnQxLnN0YXJ0KCk7CitjbG9uZUNoYW5uZWwucG9ydDIu
c3RhcnQoKTsKK2Nsb25lQ2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiIiwgY2hhbm5lbC5wb3J0
Mik7CisKKy8vIENyZWF0ZSB3b3JrZXIgd2l0aCBvdGhlciBlbmQgb2YgcG9ydCBhbmQgaGF2ZSBp
dCBzZW5kIG1lc3NhZ2VzIGJhY2sgdG8gdXMKKy8vIHdoaWxlIHdlIGNsb25lIG91ciBlbmQgb2Yg
dGhlIHBvcnQgcmVwZWF0ZWRseS4KK3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMv
d29ya2VyLWNsb25lcG9ydC5qcyIpOword29ya2VyLnBvc3RNZXNzYWdlKCJwb3N0QmFjayAiICsg
bnVtTWVzc2FnZXMsIGNoYW5uZWwucG9ydDEpOworCisvLyBUZXN0IHBvc3RpbmcgYmFjayA1MDAw
MCBtZXNzYWdlcywgbWFrZSBzdXJlIG9yZGVyaW5nIGlzIGZpbmUKK3dvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKKyAgICBpZiAoZXZ0LmRhdGEgPT0gInBvc3RCYWNrRG9uZSIpIHsK
KyAgICAgICAgc3RvcENsb25pbmcgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIExv
ZyBtZXNzYWdlIGZyb20gd29ya2VyCisgICAgICAgIGxvZyhldnQuZGF0YSk7CisgICAgfQorfQor
CisvLyBLZWVwIGNsb25pbmcgdGhlIHBhc3NlZCBwb3J0IHVudGlsIHdlJ3JlIHRvbGQgdG8gc3Rv
cC4KK3ZhciBudW1DbG9uZXMgPSAwOworZnVuY3Rpb24gcmVzZW5kUG9ydChldnQpCit7CisgICAg
aWYgKCFzdG9wQ2xvbmluZykgeworICAgICAgICBudW1DbG9uZXMrKzsKKyAgICAgICAgZXZ0LnRh
cmdldC5wb3N0TWVzc2FnZSgiIiwgZXZ0Lm1lc3NhZ2VQb3J0KTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAobnVtQ2xvbmVzIDwgMTAwMCkgeworICAgICAgICAgICAgLy8gSWYgd2UgZGlkbid0
IGNsb25lIGF0IGxlYXN0IDEwMDAgdGltZXMsIHRoZW4gdGhlcmUncyBzb21ldGhpbmcgYW1pc3Mu
CisgICAgICAgICAgICBsb2coIkZBSUw6IHBvc3RCYWNrIGNvbXBsZXRlLCBidXQgb25seSBjbG9u
ZWQgIiArIG51bUNsb25lcyArICIgdGltZXMuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBsb2coIlBBU1M6IHBvc3RCYWNrIGNvbXBsZXRlLCBjbG9uZWQgPiAxMDAwIHRpbWVzLiIp
OworICAgICAgICB9CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbWVzc2FnZXMgYXJyaXZlZCBp
biBvcmRlci4KKyAgICAgICAgdmFyIGl0ZW1OdW0gPSAwOworICAgICAgICAvLyBRdWV1ZSB1cCBh
IHRhc2sgdG8gZXhlY3V0ZSBvbmNlIHRoZSBtZXNzYWdlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLiBU
aGUgdGltZW91dCB2YWx1ZSBkb2Vzbid0IG1hdHRlciwgc2luY2UgdGltZXJzIHdvbid0IGZpcmUg
dW50aWwgdGhlIG1lc3NhZ2UgcXVldWUgaXMgY2xlYXJlZC4KKyAgICAgICAgdmFyIHRpbWVyID0g
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTFVSRTogUmVjZWl2
ZWQ6ICIgKyBpdGVtTnVtICsgIiBldmVudHMgLSBleHBlY3RlZDogIiArIG51bU1lc3NhZ2VzKTsK
KyAgICAgICAgfSwgMTApOworICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHZhciBkb25lID0gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoZXZlbnQuZGF0YSA9PSBpdGVtTnVtKSB7CisgICAgICAgICAgICAgICAgaXRlbU51bSsr
OworICAgICAgICAgICAgICAgIGlmIChpdGVtTnVtID09IG51bU1lc3NhZ2VzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGxvZygiU1VDQ0VTUyAtIHJlY2VpdmVkICIgKyBudW1NZXNzYWdlcyArICIg
bWVzc2FnZXMuIik7CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlM
VVJFOiBPdXQgb2Ygb3JkZXIgbWVzc2FnZTogZXhwZWN0ZWQgIzogIiArIGl0ZW1OdW0gKyAiLCBy
ZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOworICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKKyAgICAgICAg
ICAgIGlmIChkb25lKSB7CisgICAgICAgICAgICAgICAgZ2MoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KHJlcG9ydERvbmUsIDEwMCk7ICAvLyBNYWtlIHN1cmUgbm8gdW5leHBlY3RlZCBl
dmVudHMgY29tZSBpbi4KKyAgICAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgIGV2dC5tZXNz
YWdlUG9ydC5zdGFydCgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3
aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3Qo
KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJi
YWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBh
IGNvbGxlY3QpLgorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30K
K2Z1bmN0aW9uIHJlcG9ydERvbmUoKQoreworICAgICBsb2coIkRPTkUiKTsKKyAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sLWRpc2Fi
bGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbC1kaXNh
YmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVkMmM2My4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sLWRpc2FibGVk
CisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCBNZXNzYWdl
UG9ydCBtZXNzYWdpbmcvZW50YW5nbGUvZGV0YW5nbGUgYWNyb3NzIHRocmVhZHMuIFNob3VsZCBw
cmludCAiU1VDQ0VTUyIgd2hlbiBkb25lLjwvcD4KLTxkaXYgaWQ9cmVzdWx0PjwvZGl2PgotPHNj
cmlwdD4KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19
Ci0KLQotdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKLXZhciBudW1NZXNzYWdl
cyA9IDUwMDAwOwotCi0vLyBDcmVhdGUgYSBjaGFubmVsIHdoaWNoIHdlIHdpbGwgdXNlIHRvIGNs
b25lIGFuZCByZS1jbG9uZSBvbmUgZW5kIG9mIGEKLS8vIE1lc3NhZ2VDaGFubmVsLgotdmFyIGNs
b25lQ2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwotdmFyIHN0b3BDbG9uaW5nID0gZmFs
c2U7Ci1jbG9uZUNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gY2xvbmVDaGFubmVsLnBvcnQyLm9u
bWVzc2FnZSA9IHJlc2VuZFBvcnQ7Ci1jbG9uZUNoYW5uZWwucG9ydDEuc3RhcnQoKTsKLWNsb25l
Q2hhbm5lbC5wb3J0Mi5zdGFydCgpOwotY2xvbmVDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCIi
LCBjaGFubmVsLnBvcnQyKTsKLQotLy8gQ3JlYXRlIHdvcmtlciB3aXRoIG90aGVyIGVuZCBvZiBw
b3J0IGFuZCBoYXZlIGl0IHNlbmQgbWVzc2FnZXMgYmFjayB0byB1cwotLy8gd2hpbGUgd2UgY2xv
bmUgb3VyIGVuZCBvZiB0aGUgcG9ydCByZXBlYXRlZGx5LgotdmFyIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoInJlc291cmNlcy93b3JrZXItY2xvbmVwb3J0LmpzIik7Ci13b3JrZXIucG9zdE1lc3NhZ2Uo
InBvc3RCYWNrICIgKyBudW1NZXNzYWdlcywgY2hhbm5lbC5wb3J0MSk7Ci0KLS8vIFRlc3QgcG9z
dGluZyBiYWNrIDUwMDAwIG1lc3NhZ2VzLCBtYWtlIHN1cmUgb3JkZXJpbmcgaXMgZmluZQotd29y
a2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgIGlmIChldnQuZGF0YSA9PSAicG9z
dEJhY2tEb25lIikgewotICAgICAgICBzdG9wQ2xvbmluZyA9IHRydWU7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgLy8gTG9nIG1lc3NhZ2UgZnJvbSB3b3JrZXIKLSAgICAgICAgbG9nKGV2dC5kYXRh
KTsKLSAgICB9Ci19Ci0KLS8vIEtlZXAgY2xvbmluZyB0aGUgcGFzc2VkIHBvcnQgdW50aWwgd2Un
cmUgdG9sZCB0byBzdG9wLgotdmFyIG51bUNsb25lcyA9IDA7Ci1mdW5jdGlvbiByZXNlbmRQb3J0
KGV2dCkKLXsKLSAgICBpZiAoIXN0b3BDbG9uaW5nKSB7Ci0gICAgICAgIG51bUNsb25lcysrOwot
ICAgICAgICBldnQudGFyZ2V0LnBvc3RNZXNzYWdlKCIiLCBldnQubWVzc2FnZVBvcnQpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlmIChudW1DbG9uZXMgPCAxMDAwKSB7Ci0gICAgICAgICAgICAv
LyBJZiB3ZSBkaWRuJ3QgY2xvbmUgYXQgbGVhc3QgMTAwMCB0aW1lcywgdGhlbiB0aGVyZSdzIHNv
bWV0aGluZyBhbWlzcy4KLSAgICAgICAgICAgIGxvZygiRkFJTDogcG9zdEJhY2sgY29tcGxldGUs
IGJ1dCBvbmx5IGNsb25lZCAiICsgbnVtQ2xvbmVzICsgIiB0aW1lcy4iKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogcG9zdEJhY2sgY29tcGxldGUsIGNsb25lZCA+
IDEwMDAgdGltZXMuIik7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBtZXNz
YWdlcyBhcnJpdmVkIGluIG9yZGVyLgotICAgICAgICB2YXIgaXRlbU51bSA9IDA7Ci0gICAgICAg
IC8vIFF1ZXVlIHVwIGEgdGFzayB0byBleGVjdXRlIG9uY2UgdGhlIG1lc3NhZ2VzIGhhdmUgYmVl
biBwcm9jZXNzZWQuIFRoZSB0aW1lb3V0IHZhbHVlIGRvZXNuJ3QgbWF0dGVyLCBzaW5jZSB0aW1l
cnMgd29uJ3QgZmlyZSB1bnRpbCB0aGUgbWVzc2FnZSBxdWV1ZSBpcyBjbGVhcmVkLgotICAgICAg
ICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgbG9nKCJG
QUlMVVJFOiBSZWNlaXZlZDogIiArIGl0ZW1OdW0gKyAiIGV2ZW50cyAtIGV4cGVjdGVkOiAiICsg
bnVtTWVzc2FnZXMpOwotICAgICAgICB9LCAxMCk7Ci0gICAgICAgIGV2dC5tZXNzYWdlUG9ydC5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgdmFyIGRvbmUgPSBmYWxz
ZTsKLSAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09IGl0ZW1OdW0pIHsKLSAgICAgICAgICAg
ICAgICBpdGVtTnVtKys7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW1OdW0gPT0gbnVtTWVzc2Fn
ZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTIC0gcmVjZWl2ZWQgIiArIG51
bU1lc3NhZ2VzICsgIiBtZXNzYWdlcy4iKTsKLSAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBsb2coIkZBSUxVUkU6IE91dCBvZiBvcmRlciBtZXNzYWdlOiBleHBlY3RlZCAjOiAiICsg
aXRlbU51bSArICIsIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7Ci0gICAgICAgICAgICAgICAg
ZG9uZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbGVhclRpbWVvdXQodGlt
ZXIpOwotICAgICAgICAgICAgaWYgKGRvbmUpIHsKLSAgICAgICAgICAgICAgICBnYygpOwotICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQocmVwb3J0RG9uZSwgMTAwKTsgIC8vIE1ha2Ugc3VyZSBu
byB1bmV4cGVjdGVkIGV2ZW50cyBjb21lIGluLgotICAgICAgICAgICAgfQotICAgICAgIH0KLSAg
ICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnN0YXJ0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBnYygp
Ci17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRy
b2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2Nh
dGlvbnMgYmVmb3JlIGEgY29sbGVjdCkuCi0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJj
Iik7Ci0gICAgfQotfQotZnVuY3Rpb24gcmVwb3J0RG9uZSgpCi17Ci0gICAgIGxvZygiRE9ORSIp
OwotICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2Fn
ZXBvcnQtZ2MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBv
cnQtZ2MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGM5N2E1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdl
cG9ydC1nYy5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IHdvcmtl
cnMgc3RheSByZWFjaGFibGUgdmlhIG1lc3NhZ2UgcG9ydHMuCitTaG91bGQgcHJpbnQgIkRPTkUi
IHdoZW4gZG9uZS48L3A+Cis8ZGl2IGlkPXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlv
biBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCisvLyBUZXN0IHRo
YXQgd29ya2VycyBzdGF5IGFsaXZlIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIG9ubHkgcmVhY2hhYmxl
IHZpYSBtZXNzYWdlIHBvcnRzLgordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93
b3JrZXItbWVzc2FnZXBvcnQuanMiKTsKK3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
KCk7Cit3b3JrZXIucG9zdE1lc3NhZ2UoInBvcnQiLCBjaGFubmVsLnBvcnQxKTsKK3dvcmtlciA9
IDA7CisKK2NoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoInBpbmciKTsKK2NoYW5uZWwucG9ydDIu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgLy8gT3RoZXIgc2lkZSBpcyBydW5uaW5n
LCBub3cgZm9yY2UgYSBHQywgd2FpdCBhIGJpdCwgYW5kIHNlbmQgYSBuZXcgbWVzc2FnZSB0byBt
YWtlIHN1cmUgaXQgYXJyaXZlcy4KKyAgICBnYygpOworICAgIHNldFRpbWVvdXQodGVzdFJlYWNo
YWJsZSwgMTAwKTsKK30KKworZnVuY3Rpb24gdGVzdFJlYWNoYWJsZSgpCit7CisgICAgY2hhbm5l
bC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgbG9nKCJQQVNTOiBX
b3JrZXIgaXMgcmVhY2hhYmxlLiIpOworICAgICAgICBkb25lKCk7CisgICAgfQorICAgIGNoYW5u
ZWwucG9ydDIucG9zdE1lc3NhZ2UoInBpbmciKTsKK30KKworZnVuY3Rpb24gZ2MoKQoreworICAg
IGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNv
bGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3Jj
ZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJl
Zm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAg
fQorfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBsb2coIkRPTkUiKTsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWdjLmh0bWwt
ZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWdj
Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4Yzk3YTUuLjAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1n
Yy5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotPGJvZHk+Ci08
cD5UZXN0IHRoYXQgd29ya2VycyBzdGF5IHJlYWNoYWJsZSB2aWEgbWVzc2FnZSBwb3J0cy4KLVNo
b3VsZCBwcmludCAiRE9ORSIgd2hlbiBkb25lLjwvcD4KLTxkaXYgaWQ9cmVzdWx0PjwvZGl2Pgot
PHNjcmlwdD4KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Ci19Ci0KLS8vIFRlc3QgdGhhdCB3b3JrZXJzIHN0YXkgYWxpdmUgZXZlbiB0aG91Z2ggdGhleSBh
cmUgb25seSByZWFjaGFibGUgdmlhIG1lc3NhZ2UgcG9ydHMuCi12YXIgd29ya2VyID0gbmV3IFdv
cmtlcigicmVzb3VyY2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qcyIpOwotdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWwoKTsKLXdvcmtlci5wb3N0TWVzc2FnZSgicG9ydCIsIGNoYW5uZWwu
cG9ydDEpOwotd29ya2VyID0gMDsKLQotY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgicGluZyIp
OwotY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAvLyBPdGhl
ciBzaWRlIGlzIHJ1bm5pbmcsIG5vdyBmb3JjZSBhIEdDLCB3YWl0IGEgYml0LCBhbmQgc2VuZCBh
IG5ldyBtZXNzYWdlIHRvIG1ha2Ugc3VyZSBpdCBhcnJpdmVzLgotICAgIGdjKCk7Ci0gICAgc2V0
VGltZW91dCh0ZXN0UmVhY2hhYmxlLCAxMDApOwotfQotCi1mdW5jdGlvbiB0ZXN0UmVhY2hhYmxl
KCkKLXsKLSAgICBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAg
ICAgICBsb2coIlBBU1M6IFdvcmtlciBpcyByZWFjaGFibGUuIik7Ci0gICAgICAgIGRvbmUoKTsK
LSAgICB9Ci0gICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgicGluZyIpOwotfQotCi1mdW5j
dGlvbiBnYygpCi17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVy
biBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQg
OUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3Ry
aW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygiRE9O
RSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVz
c2FnZXBvcnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBv
cnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmE2ZWJiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9y
dC5odG1sCkBAIC0wLDAgKzEsOTggQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IHBhZ2VzIGFuZCB3
b3JrZXJzIGNhbiBzZW5kIE1lc3NhZ2VQb3J0cyB0byBvbmUgYW5vdGhlci4KK1Nob3VsZCBwcmlu
dCAiRE9ORSIgd2hlbiBkb25lLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3Zh
ciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLW1lc3NhZ2Vwb3J0LmpzIik7
Cit2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworCisvLyBTZW5kIG1lc3NhZ2Vz
IHdpdGggYW5kIHdpdGhvdXQgcG9ydHMgdG8gdGhlIHdvcmtlciB0byBtYWtlIHN1cmUgaXQgZ2V0
cyB0aGVtLgord29ya2VyLnBvc3RNZXNzYWdlKCJub3BvcnQiKTsKK3dvcmtlci5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKKyAgICBsb2coZXZ0LmRhdGEpOworICAgIHdvcmtlci5wb3N0TWVz
c2FnZSgicG9ydCIsIGNoYW5uZWwucG9ydDEpOworICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldnQpIHsKKyAgICAgICAgbG9nKGV2dC5kYXRhKTsKKyAgICB9Cit9OworCisvLyBTZW5k
IGEgbWVzc2FnZSBvbiB0aGUgbmV3IHBvcnQgdG8gbWFrZSBzdXJlIGl0IGdldHMgdG8gdGhlIHdv
cmtlci4KK2NoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoInBpbmciKTsKKworLy8gV2FpdCBmb3Ig
dGhlIHJlc3BvbnNlLgorY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsK
KyAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmciKSB7CisgICAgICAgIGxvZygiUEFTUzogUmVjZWl2
ZWQgcmVzcG9uc2UgZnJvbSBXb3JrZXIgdmlhIE1lc3NhZ2VQb3J0Iik7CisgICAgICAgIHdvcmtl
ci5vbm1lc3NhZ2UgPSBhd2FpdFBvcnRGcm9tV29ya2VyOworICAgICAgICB3b3JrZXIucG9zdE1l
c3NhZ2UoImdldHBvcnQiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsb2coIkZBSUw6IFJlY2Vp
dmVkIHVua25vd24gZXZlbnQ6ICIgKyBldnQuZGF0YSk7CisgICAgfQorfQorY2hhbm5lbC5wb3J0
Mi5zdGFydCgpOworCisvLyBJbnZva2VkIG9uY2UgdGhlIGZpcnN0IGJhdGNoIG9mIHRlc3RzIGFy
ZSBkb25lLCB0byB0ZXN0IHNlbmRpbmcgZnJvbSB0aGUgd29ya2VyLgorZnVuY3Rpb24gYXdhaXRQ
b3J0RnJvbVdvcmtlcihldnQpCit7CisgICAgaWYgKGV2dC5kYXRhID09ICJwb3J0IikgeworICAg
ICAgICBpZiAoIWV2dC5tZXNzYWdlUG9ydCkgeworICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQg
bm90IGdldCBwb3J0IGZyb20gd29ya2VyIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBsb2coIlBBU1M6IEdvdCBwb3J0IGZyb20gd29ya2VyIik7CisgICAgICAgICAgICBldnQubWVz
c2FnZVBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAgICAgICAgICAgIGV2dC5tZXNzYWdlUG9y
dC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZ0LmRh
dGEgPT0gInBvbmciKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZygiUEFTUzogUmVjZWl2ZWQg
ZmluYWwgcmVzcG9uc2UgZnJvbSB3b3JrZXIiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBsb2coIkZBSUw6IEdvdCB1bmV4cGVjdGVkIHJlc3BvbnNlOiAi
ICsgZXZ0LmRhdGEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGFydFNw
YW1UZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBldnQubWVzc2FnZVBvcnQuc3Rh
cnQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGxvZyhldnQuZGF0YSk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBzdGFydFNwYW1UZXN0KCkKK3sKKyAgICB2YXIgY2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAo
KSB7IGdvdFNwYW0oY2hhbm5lbC5wb3J0MSk7IH0KKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInNw
YW0iLCBjaGFubmVsLnBvcnQyKTsKK30KKworZnVuY3Rpb24gZ290U3BhbShwb3J0KQoreworICAg
IHZhciBzcGFtQ291bnQgPSAwOworICAgIHBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7
CisgICAgICAgIGlmIChldnQuZGF0YSAhPSBzcGFtQ291bnQpCisgICAgICAgICAgICBsb2coIkZB
SUw6IEdvdCBvdXQgb2Ygb3JkZXIgbWVzc2FnZTogIiArIHNwYW1Db3VudCk7CisgICAgICAgIHNw
YW1Db3VudCsrOworICAgICAgICBpZiAoc3BhbUNvdW50ID09IDEwMDApIHsKKyAgICAgICAgICAg
IGxvZygiUEFTUzogR290IDEwMDAgbWVzc2FnZXMiKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgbG9nKCJET05FIik7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBv
cnQuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2Fn
ZXBvcnQuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJhNmVi
Yi4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vw
b3J0Lmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi08Ym9keT4K
LTxwPlRlc3QgdGhhdCBwYWdlcyBhbmQgd29ya2VycyBjYW4gc2VuZCBNZXNzYWdlUG9ydHMgdG8g
b25lIGFub3RoZXIuCi1TaG91bGQgcHJpbnQgIkRPTkUiIHdoZW4gZG9uZS48L3A+Ci08ZGl2IGlk
PXJlc3VsdD48L2Rpdj4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2Vz
L3dvcmtlci1tZXNzYWdlcG9ydC5qcyIpOwotdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWwoKTsKLQotLy8gU2VuZCBtZXNzYWdlcyB3aXRoIGFuZCB3aXRob3V0IHBvcnRzIHRvIHRoZSB3
b3JrZXIgdG8gbWFrZSBzdXJlIGl0IGdldHMgdGhlbS4KLXdvcmtlci5wb3N0TWVzc2FnZSgibm9w
b3J0Iik7Ci13b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgbG9nKGV2dC5k
YXRhKTsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInBvcnQiLCBjaGFubmVsLnBvcnQxKTsKLSAg
ICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGxvZyhldnQuZGF0
YSk7Ci0gICAgfQotfTsKLQotLy8gU2VuZCBhIG1lc3NhZ2Ugb24gdGhlIG5ldyBwb3J0IHRvIG1h
a2Ugc3VyZSBpdCBnZXRzIHRvIHRoZSB3b3JrZXIuCi1jaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdl
KCJwaW5nIik7Ci0KLS8vIFdhaXQgZm9yIHRoZSByZXNwb25zZS4KLWNoYW5uZWwucG9ydDIub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgaWYgKGV2dC5kYXRhID09ICJwb25nIikgewot
ICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIHJlc3BvbnNlIGZyb20gV29ya2VyIHZpYSBNZXNz
YWdlUG9ydCIpOwotICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gYXdhaXRQb3J0RnJvbVdvcmtl
cjsKLSAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJnZXRwb3J0Iik7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmtub3duIGV2ZW50OiAiICsgZXZ0LmRhdGEp
OwotICAgIH0KLX0KLWNoYW5uZWwucG9ydDIuc3RhcnQoKTsKLQotLy8gSW52b2tlZCBvbmNlIHRo
ZSBmaXJzdCBiYXRjaCBvZiB0ZXN0cyBhcmUgZG9uZSwgdG8gdGVzdCBzZW5kaW5nIGZyb20gdGhl
IHdvcmtlci4KLWZ1bmN0aW9uIGF3YWl0UG9ydEZyb21Xb3JrZXIoZXZ0KQotewotICAgIGlmIChl
dnQuZGF0YSA9PSAicG9ydCIpIHsKLSAgICAgICAgaWYgKCFldnQubWVzc2FnZVBvcnQpIHsKLSAg
ICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBnZXQgcG9ydCBmcm9tIHdvcmtlciIpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBHb3QgcG9ydCBmcm9tIHdvcmtl
ciIpOwotICAgICAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7Ci0g
ICAgICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIikgewotICAgICAgICAgICAgICAg
ICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIGZpbmFsIHJlc3BvbnNlIGZyb20gd29ya2VyIik7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBH
b3QgdW5leHBlY3RlZCByZXNwb25zZTogIiArIGV2dC5kYXRhKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgc3RhcnRTcGFtVGVzdCgpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnN0YXJ0KCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgICBsb2coZXZ0LmRhdGEpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gc3RhcnRTcGFtVGVz
dCgpCi17Ci0gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKLSAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKCkgeyBnb3RTcGFtKGNoYW5uZWwucG9ydDEpOyB9Ci0g
ICAgd29ya2VyLnBvc3RNZXNzYWdlKCJzcGFtIiwgY2hhbm5lbC5wb3J0Mik7Ci19Ci0KLWZ1bmN0
aW9uIGdvdFNwYW0ocG9ydCkKLXsKLSAgICB2YXIgc3BhbUNvdW50ID0gMDsKLSAgICBwb3J0Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBpZiAoZXZ0LmRhdGEgIT0gc3BhbUNv
dW50KQotICAgICAgICAgICAgbG9nKCJGQUlMOiBHb3Qgb3V0IG9mIG9yZGVyIG1lc3NhZ2U6ICIg
KyBzcGFtQ291bnQpOwotICAgICAgICBzcGFtQ291bnQrKzsKLSAgICAgICAgaWYgKHNwYW1Db3Vu
dCA9PSAxMDAwKSB7Ci0gICAgICAgICAgICBsb2coIlBBU1M6IEdvdCAxMDAwIG1lc3NhZ2VzIik7
Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRv
bmUoKQotewotICAgIGxvZygiRE9ORSIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQot
PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZhYTZmN2YuLmM0ZWM1MGIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMDktMDctMDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MDMKKworICAgICAgICBUdXJuZWQgb24gQ0hB
Tk5FTF9NRVNTQUdJTkcgYnkgZGVmYXVsdC4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMv
bWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVz
c2FnZS1jaGFubmVsLWdjLTMuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2Fn
ZS1jaGFubmVsLWdjLTQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1j
aGFubmVsLWdjLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5l
bC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9j
dW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW5vLXdy
YXBwZXIuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC5odG1sCisKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKyAgICAgICAgVHVybmVk
IG9uIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORy4KKwogMjAwOS0wNi0zMCAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5z
dGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CmluZGV4IGUxMzIyYjcuLmJlOTZkMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQAogRU5BQkxFXzNEX1JFTkRF
UklORyA9ICQoRU5BQkxFXzNEX1JFTkRFUklOR18kKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsK
IEVOQUJMRV8zRF9SRU5ERVJJTkdfMTA2MCA9IEVOQUJMRV8zRF9SRU5ERVJJTkc7CiAKLUVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORyA9IDsKK0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJM
RV9DSEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9EQVRBQkFTRSA9IEVOQUJMRV9EQVRBQkFTRTsK
IEVOQUJMRV9EQVRBR1JJRCA9IEVOQUJMRV9EQVRBR1JJRDsKIEVOQUJMRV9ET01fU1RPUkFHRSA9
IEVOQUJMRV9ET01fU1RPUkFHRTsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMmQxYWQxMS4uMmQ3MDk5OSAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAwOS0wNy0wMSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkwMworCisgICAgICAgIFR1cm5lZCBv
biBDSEFOTkVMX01FU1NBR0lORyBieSBkZWZhdWx0LgorCisgICAgICAgICogQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMDktMDYtMzAgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZlIEh5YXR0LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZyBiL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5k
ZXggZTEzMjJiNy4uYmU5NmQyNSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0zMCw3ICszMCw3IEBACiBFTkFCTEVfM0RfUkVO
REVSSU5HID0gJChFTkFCTEVfM0RfUkVOREVSSU5HXyQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUikp
OwogRU5BQkxFXzNEX1JFTkRFUklOR18xMDYwID0gRU5BQkxFXzNEX1JFTkRFUklORzsKIAotRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gOworRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HOwogRU5BQkxFX0RBVEFCQVNFID0gRU5BQkxFX0RBVEFCQVNF
OwogRU5BQkxFX0RBVEFHUklEID0gRU5BQkxFX0RBVEFHUklEOwogRU5BQkxFX0RPTV9TVE9SQUdF
ID0gRU5BQkxFX0RPTV9TVE9SQUdFOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRjZTFlZjQuLjQ4ODJmZTEgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAwOS0wNy0wMSAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkwMworICAgICAgICAKKyAg
ICAgICAgVHVybmVkIG9uIENIQU5ORUxfTUVTU0FHSU5HIGJ5IGRlZmF1bHQuCisKKyAgICAgICAg
KiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoKKwogMjAwOS0wNi0zMCAgRXJpYyBTZWlkZWwgIDxlcmlj
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0CmluZGV4IGMyNDJmZTcuLjY2NjdkYmMgMTAwNzU1Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0CkBAIC01Niw3ICs1Niw3IEBAIG15IEBmZWF0dXJlcyA9ICgKICAgICAg
IGRlZmluZSA9PiAiRU5BQkxFXzNEX1JFTkRFUklORyIsIGRlZmF1bHQgPT4gKGlzQXBwbGVNYWNX
ZWJLaXQoKSAmJiBpc1Nub3dMZW9wYXJkKCkpLCB2YWx1ZSA9PiBcJHRocmVlRFJlbmRlcmluZ1N1
cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJjaGFubmVsLW1lc3NhZ2luZyIsIGRlc2MgPT4g
IlRvZ2dsZSBNZXNzYWdlQ2hhbm5lbCBhbmQgTWVzc2FnZVBvcnQgc3VwcG9ydCIsCi0gICAgICBk
ZWZpbmUgPT4gIkVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUg
PT4gXCRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCB9LAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkciLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkY2hhbm5lbE1lc3Nh
Z2luZ1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJjb3ZlcmFnZSIsIGRlc2MgPT4gIlRv
Z2dsZSBjb2RlIGNvdmVyYWdlIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICIiLCBkZWZhdWx0
ID0+IDAsIHZhbHVlID0+IFwkY292ZXJhZ2VTdXBwb3J0IH0sCmRpZmYgLS1naXQgYS9jb25maWd1
cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggYjcyMGE0My4uYjU3ZjUwOCAxMDA2NDQKLS0tIGEv
Y29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjk4LDggKzI5OCw4IEBAIEFDX01T
R19SRVNVTFQoWyRlbmFibGVfM0RfdHJhbnNmb3Jtc10pCiBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRo
ZXIgdG8gZW5hYmxlIEhUTUw1IENoYW5uZWwgTWVzc2FnaW5nIHN1cHBvcnRdKQogQUNfQVJHX0VO
QUJMRShjaGFubmVsX21lc3NhZ2luZywKICAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0t
ZW5hYmxlLWNoYW5uZWwtbWVzc2FnaW5nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
W2VuYWJsZSBIVE1MNSBjaGFubmVsIG1lc3NhZ2luZyBzdXBwb3J0IFtkZWZhdWx0PW5vXV0pLAot
ICAgICAgICAgICAgICBbXSxbZW5hYmxlX2NoYW5uZWxfbWVzc2FnaW5nPSJubyJdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIEhUTUw1IGNoYW5uZWwgbWVzc2FnaW5nIHN1
cHBvcnQgW2RlZmF1bHQ9eWVzXV0pLAorICAgICAgICAgICAgICBbXSxbZW5hYmxlX2NoYW5uZWxf
bWVzc2FnaW5nPSJ5ZXMiXSkKIEFDX01TR19SRVNVTFQoWyRlbmFibGVfY2hhbm5lbF9tZXNzYWdp
bmddKQogCiAjIGNoZWNrIHdoZXRoZXIgdG8gZW5hYmxlIEphdmFTY3JpcHQgZGVidWdnZXIvcHJv
ZmlsZXIgc3VwcG9ydAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32461</attachid>
            <date>2009-07-08 11:08:58 -0700</date>
            <delta_ts>2009-07-09 10:43:31 -0700</delta_ts>
            <desc>Patch addressing ap&apos;s comments</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>93409</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlNDQwMTIzLi5iNWIxY2Fk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDggIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MDMKKworICAgICAgICBUdXJuZWQgb24gQ0hBTk5F
TF9NRVNTQUdJTkcgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBNZXNzYWdlQ2hhbm5lbCBBUEkKKyAg
ICAgICAgY2FuIG5vdyBiZSBpbXBsZW1lbnRlZCBmb3IgV2ViIFdvcmtlcnMgYW5kIGlzIHJlYXNv
bmFibHkgc3RhYmxlLgorCisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDA5LTA3LTAzICBK
YW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFhhbiBMb3BleiBhbmQgR3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVmM2Ex
NzUuLjc0Y2RmYjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0wNy0wOCAgRHJl
dyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NBR0lORyBieSBk
ZWZhdWx0IGJlY2F1c2UgdGhlIE1lc3NhZ2VDaGFubmVsIEFQSQorICAgICAgICBjYW4gbm93IGJl
IGltcGxlbWVudGVkIGZvciBXZWIgV29ya2VycyBhbmQgaXMgcmVhc29uYWJseSBzdGFibGUuCisK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAw
OS0wNy0wNiAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlciBhbmQgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMmZiY2RkLi4w
M2M2MWVkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQAogRU5BQkxFXzNEX1JFTkRFUklO
RyA9ICQoRU5BQkxFXzNEX1JFTkRFUklOR18kKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVO
QUJMRV8zRF9SRU5ERVJJTkdfMTA2MCA9IEVOQUJMRV8zRF9SRU5ERVJJTkc7CiAKLUVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyA9IDsKK0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9EQVRBQkFTRSA9IEVOQUJMRV9EQVRBQkFTRTsKIEVO
QUJMRV9ET01fU1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsKIEVOQUJMRV9GSUxURVJTID0g
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDkxYmE2ZWIuLjFjNjJiYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorPDw8PDw8
PCBIRUFEOkxheW91dFRlc3RzL0NoYW5nZUxvZworMjAwOS0wNy0wMSAgRHJldyBXaWxzb24gIDxh
dHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjkw
MworCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NBR0lORyBieSBkZWZhdWx0LCByZS1l
bmFibGVkIHRoZSB2YXJpb3VzIHRlc3RzLCBhbmQgdXBkYXRlZCBleHBlY3RlZCByZXN1bHRzLgor
CisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2RvbS9jb25zdHJ1Y3RvcnMtY2FjaGVkLW5hdmlnYXRlLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1s
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdj
LTIuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwt
Z2MtMy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1j
aGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LWNoYW5uZWwtZ2MtNC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50
cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sLWRpc2FibGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0
ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5odG1sLWRpc2FibGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNv
bnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQuCisgICAgICAgICog
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50
Lmh0bWwtZGlzYWJsZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0
ZWQtZnJhbWUuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwtZGlzYWJsZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbC1k
aXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbm8td3JhcHBlci5o
dG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW5v
LXdyYXBwZXIuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC5odG1sLWRpc2FibGVkLgorICAgICAgICAqIGZhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0
Lmh0bWwtZGlzYWJsZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9y
dC1nYy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC1nYy5odG1sLWRpc2FibGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy93b3Jr
ZXItbWVzc2FnZXBvcnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbC1kaXNhYmxlZC4KKz09PT09PT0KIDIwMDktMDctMDYg
IEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgpAQCAtNjMwLDYgKzY1OCw3IEBACiAKICAgICAgICAgKiBjb21w
b3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1zY3JvbGwuaHRtbDogQWRkZWQuCiAgICAgICAgICog
cGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93LXNjcm9sbC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorPj4+Pj4+PiBtYXN0ZXI6TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCiAKIDIw
MDktMDYtMzAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAppbmRleCAzNTkzNmM3Li5mODkxZTQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQK
QEAgLTEwMjQsOCArMTAyNCwxOCBAQCB3aW5kb3cuTWVkaWFMaXN0LnByb3RvdHlwZSBbb2JqZWN0
IE1lZGlhTGlzdFByb3RvdHlwZV0KIHdpbmRvdy5NZWRpYUxpc3QucHJvdG90eXBlLmFwcGVuZE1l
ZGl1bSBbZnVuY3Rpb25dCiB3aW5kb3cuTWVkaWFMaXN0LnByb3RvdHlwZS5kZWxldGVNZWRpdW0g
W2Z1bmN0aW9uXQogd2luZG93Lk1lZGlhTGlzdC5wcm90b3R5cGUuaXRlbSBbZnVuY3Rpb25dCit3
aW5kb3cuTWVzc2FnZUNoYW5uZWwgW29iamVjdCBNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yXQor
d2luZG93Lk1lc3NhZ2VDaGFubmVsLnByb3RvdHlwZSBbb2JqZWN0IE1lc3NhZ2VDaGFubmVsUHJv
dG90eXBlXQogd2luZG93Lk1lc3NhZ2VFdmVudCBbb2JqZWN0IE1lc3NhZ2VFdmVudENvbnN0cnVj
dG9yXQogd2luZG93Lk1lc3NhZ2VFdmVudC5wcm90b3R5cGUgW3ByaW50ZWQgYWJvdmUgYXMgd2lu
ZG93LkV2ZW50LnByb3RvdHlwZV0KK3dpbmRvdy5NZXNzYWdlUG9ydCBbb2JqZWN0IE1lc3NhZ2VQ
b3J0Q29uc3RydWN0b3JdCit3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlIFtvYmplY3QgTWVz
c2FnZVBvcnRQcm90b3R5cGVdCit3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLmFkZEV2ZW50
TGlzdGVuZXIgW2Z1bmN0aW9uXQord2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5jbG9zZSBb
ZnVuY3Rpb25dCit3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLmRpc3BhdGNoRXZlbnQgW2Z1
bmN0aW9uXQord2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5wb3N0TWVzc2FnZSBbZnVuY3Rp
b25dCit3aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIgW2Z1
bmN0aW9uXQord2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5zdGFydCBbZnVuY3Rpb25dCiB3
aW5kb3cuTWltZVR5cGUgW29iamVjdCBNaW1lVHlwZUNvbnN0cnVjdG9yXQogd2luZG93Lk1pbWVU
eXBlLnByb3RvdHlwZSBbb2JqZWN0IE1pbWVUeXBlUHJvdG90eXBlXQogd2luZG93Lk1pbWVUeXBl
QXJyYXkgW29iamVjdCBNaW1lVHlwZUFycmF5Q29uc3RydWN0b3JdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3RvcnMtY2FjaGVkLW5hdmlnYXRlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NvbnN0cnVjdG9ycy1jYWNoZWQtbmF2aWdhdGUtZXhw
ZWN0ZWQudHh0CmluZGV4IDE0ZDg5ZjMuLjI3YWYxMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2NvbnN0cnVjdG9ycy1jYWNoZWQtbmF2aWdhdGUtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2NvbnN0cnVjdG9ycy1jYWNoZWQtbmF2aWdhdGUtZXhwZWN0
ZWQudHh0CkBAIC02LDggKzYsOCBAQCBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LkltYWdl
IGlzIHRlc3RGcmFtZS5jb250ZW50V2luZG93LkltYWdlCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50
V2luZG93LkltYWdlICE9PSB3aW5kb3cuSW1hZ2UgaXMgdHJ1ZQogUEFTUyB0ZXN0RnJhbWUuY29u
dGVudFdpbmRvdy5JbWFnZS50ZXN0UHJvcGVydHkgaXMgInByb3BlcnR5IHNldCBzdWNjZXNzZnVs
bHkiCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsIGlzIHRlc3RG
cmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsCi1GQUlMIHRlc3RGcmFtZS5jb250ZW50
V2luZG93Lk1lc3NhZ2VDaGFubmVsICE9PSB3aW5kb3cuTWVzc2FnZUNoYW5uZWwgc2hvdWxkIGJl
IHRydWUuIFdhcyBmYWxzZS4KLUZBSUwgVGVzdGluZyBNZXNzYWdlQ2hhbm5lbCB0aHJldyBUeXBl
RXJyb3I6IFJlc3VsdCBvZiBleHByZXNzaW9uICd0ZXN0RnJhbWUuY29udGVudFdpbmRvd1tjb25z
dHJ1Y3Rvcl0nIFt1bmRlZmluZWRdIGlzIG5vdCBhbiBvYmplY3QuCitQQVNTIHRlc3RGcmFtZS5j
b250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsICE9PSB3aW5kb3cuTWVzc2FnZUNoYW5uZWwgaXMg
dHJ1ZQorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbC50ZXN0UHJv
cGVydHkgaXMgInByb3BlcnR5IHNldCBzdWNjZXNzZnVsbHkiCiBQQVNTIHRlc3RGcmFtZS5jb250
ZW50V2luZG93Lk9wdGlvbiBpcyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5PcHRpb24KIFBBU1Mg
dGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9uICE9PSB3aW5kb3cuT3B0aW9uIGlzIHRydWUK
IFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9uLnRlc3RQcm9wZXJ0eSBpcyAicHJv
cGVydHkgc2V0IHN1Y2Nlc3NmdWxseSIKQEAgLTI0LDExICsyNCwxMSBAQCBQQVNTIHN0b3JlZENv
bnN0cnVjdG9ycy5JbWFnZS50ZXN0UHJvcGVydHkgaXMgInByb3BlcnR5IHNldCBzdWNjZXNzZnVs
bHkiCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LkltYWdlLnRlc3RQcm9wZXJ0eSBpcyB1
bmRlZmluZWQuCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LkltYWdlLmNhY2hlZE9uT3du
ZXJEb2N1bWVudCBpcyB0cnVlCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VD
aGFubmVsIGlzIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsCi1GQUlMIHRl
c3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsICE9PSB3aW5kb3cuTWVzc2FnZUNo
YW5uZWwgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KLUZBSUwgdGVzdEZyYW1lLmNvbnRlbnRX
aW5kb3cuTWVzc2FnZUNoYW5uZWwgIT09IHN0b3JlZENvbnN0cnVjdG9ycy5NZXNzYWdlQ2hhbm5l
bCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgotRkFJTCBzdG9yZWRDb25zdHJ1Y3RvcnMuTWVz
c2FnZUNoYW5uZWwudGVzdFByb3BlcnR5IHNob3VsZCBiZSBwcm9wZXJ0eSBzZXQgc3VjY2Vzc2Z1
bGx5LiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSZXN1bHQgb2YgZXhwcmVzc2lvbiAnc3Rv
cmVkQ29uc3RydWN0b3JzLk1lc3NhZ2VDaGFubmVsJyBbdW5kZWZpbmVkXSBpcyBub3QgYW4gb2Jq
ZWN0LgotRkFJTCB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbC50ZXN0UHJv
cGVydHkgc2hvdWxkIGJlIHVuZGVmaW5lZC4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVz
dWx0IG9mIGV4cHJlc3Npb24gJ3Rlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVs
JyBbdW5kZWZpbmVkXSBpcyBub3QgYW4gb2JqZWN0LgotRkFJTCB0ZXN0RnJhbWUuY29udGVudFdp
bmRvdy5NZXNzYWdlQ2hhbm5lbC5jYWNoZWRPbk93bmVyRG9jdW1lbnQgc2hvdWxkIGJlIHRydWUu
IFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFJlc3VsdCBvZiBleHByZXNzaW9uICd0ZXN0RnJh
bWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCcgW3VuZGVmaW5lZF0gaXMgbm90IGFuIG9i
amVjdC4KK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwgIT09IHdp
bmRvdy5NZXNzYWdlQ2hhbm5lbCBpcyB0cnVlCitQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93
Lk1lc3NhZ2VDaGFubmVsICE9PSBzdG9yZWRDb25zdHJ1Y3RvcnMuTWVzc2FnZUNoYW5uZWwgaXMg
dHJ1ZQorUEFTUyBzdG9yZWRDb25zdHJ1Y3RvcnMuTWVzc2FnZUNoYW5uZWwudGVzdFByb3BlcnR5
IGlzICJwcm9wZXJ0eSBzZXQgc3VjY2Vzc2Z1bGx5IgorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdp
bmRvdy5NZXNzYWdlQ2hhbm5lbC50ZXN0UHJvcGVydHkgaXMgdW5kZWZpbmVkLgorUEFTUyB0ZXN0
RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbC5jYWNoZWRPbk93bmVyRG9jdW1lbnQg
aXMgdHJ1ZQogUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5PcHRpb24gaXMgdGVzdEZyYW1l
LmNvbnRlbnRXaW5kb3cuT3B0aW9uCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk9wdGlv
biAhPT0gd2luZG93Lk9wdGlvbiBpcyB0cnVlCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93
Lk9wdGlvbiAhPT0gc3RvcmVkQ29uc3RydWN0b3JzLk9wdGlvbiBpcyB0cnVlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWU1ZjAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbApAQCAtMCwwICsx
LDQ1IEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBjbG9zZSBldmVudCBnZXRz
IGRlbGl2ZXJlZCAod2l0aG91dCBjcmFzaGluZykgZXZlbiBpZiB0aGUgY2hhbm5lbCBvYmplY3Qg
aXMgZ2FyYmFnZSBjb2xsZWN0ZWQuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFi
b3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3
IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
KworZ2MoKTsKK2NoYW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5uZWwucG9ydDIucG9zdE1lc3Nh
Z2UoIm1zZyIpOworCitnYygpOworY2hhbm5lbC5wb3J0MS5jbG9zZSgpOworY2hhbm5lbC5wb3J0
Mi5jbG9zZSgpOworZ2MoKTsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBsb2coIkRP
TkUiKTsKKyAgICBnYygpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30sIDApOworY2hhbm5l
bCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK2djKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRt
bC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0y
Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZTVmMDEuLjAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIu
aHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLTxib2R5PgotPHA+
VGVzdCB0aGF0IE1lc3NhZ2VQb3J0IGNsb3NlIGV2ZW50IGdldHMgZGVsaXZlcmVkICh3aXRob3V0
IGNyYXNoaW5nKSBldmVuIGlmIHRoZSBjaGFubmVsIG9iamVjdCBpcyBnYXJiYWdlIGNvbGxlY3Rl
ZC48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBnYygpCi17Ci0g
ICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIu
Y29sbGVjdCgpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZv
cmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMg
YmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAg
ICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19
Ci0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotCi1nYygpOwotY2hhbm5lbC5w
b3J0MS5zdGFydCgpOwotY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgibXNnIik7Ci0KLWdjKCk7
Ci1jaGFubmVsLnBvcnQxLmNsb3NlKCk7Ci1jaGFubmVsLnBvcnQyLmNsb3NlKCk7Ci1nYygpOwot
Ci1zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIGxvZygiRE9ORSIpOwotICAgIGdjKCk7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfSwgMCk7Ci1jaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwotZ2MoKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43N2U0NzE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbApAQCAtMCwwICsxLDUzIEBACis8Ym9k
eT4KKzxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkIGV2ZW4g
aWYgYm90aCBwb3J0cyBhcmUgaW5hY2Nlc3NpYmxlIGZyb20gSlMgYW55IG1vcmUuPC9wPgorPHA+
U2hvdWxkIHNheSBQQVNTIHR3aWNlLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAg
cmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVz
IGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0g
bmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2Ug
KyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0MSgpCit7CisgICAgdmFyIGNo
YW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisKKyAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2dCkgeyBsb2coIlBBU1M6IG1lc3NhZ2UgZGVsaXZlcmVkLiBQb3J0OiAi
ICsgZXZ0LnRhcmdldCk7IHRlc3QyKCk7IH0KKyAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdl
KCJtc2ciKTsKKworICAgIGNoYW5uZWwgPSAwOworICAgIGdjKCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QyKCkKK3sKKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKworICAgIGNo
YW5uZWwucG9ydDIuY2xvc2UoKTsKKworICAgIGNoYW5uZWwgPSAwOworICAgIGdjKCk7CisgICAg
bG9nKCJQQVNTOiBwb3J0IGNsb3NlZC4iKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisK
K3Rlc3QxKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0zLmh0bWwtZGlzYWJsZWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MDZhYTYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZAorKysgL2Rl
di9udWxsCkBAIC0xLDUzICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IE1lc3NhZ2VQb3J0
IG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgZXZlbiBpZiBib3RoIHBvcnRzIGFyZSBpbmFjY2Vzc2li
bGUgZnJvbSBKUyBhbnkgbW9yZS48L3A+Ci08cD5TaG91bGQgc2F5IFBBU1MgdHdpY2UuPC9wPgot
PHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3
aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3Qo
KTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdh
cmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3Jl
IGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QxKCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
LSAgICAKLSAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBsb2co
IlBBU1M6IG1lc3NhZ2UgZGVsaXZlcmVkLiBQb3J0OiAiICsgZXZ0LnRhcmdldCk7IHRlc3QyKCk7
IH0KLSAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJtc2ciKTsKLSAgICAKLSAgICBjaGFu
bmVsID0gMDsKLSAgICBnYygpOwotfQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgdmFyIGNo
YW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgCi0gICAgY2hhbm5lbC5wb3J0Mi5jbG9z
ZSgpOwotICAgIAotICAgIGNoYW5uZWwgPSAwOwotICAgIGdjKCk7Ci0gICAgbG9nKCJQQVNTOiBw
b3J0IGNsb3NlZC4iKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLXRlc3QxKCk7Ci0K
LTwvc2NyaXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtY2hhbm5lbC1nYy00Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MGFlYTlmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtY2hhbm5lbC1nYy00Lmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPGJvZHk+Cis8cD5UZXN0IHRo
YXQgTWVzc2FnZVBvcnQgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZCBldmVuIGlmIGJvdGggcG9ydHMg
YXJlIGluIHRyYW5zaXQgKGNsb25lZCkuPC9wPgorPHA+U2hvdWxkIHNheSBQQVNTIHR3aWNlLjwv
cD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBp
ZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xs
ZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gZm9yY2Ug
Z2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZv
cmUgYSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0K
K30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
ZnVuY3Rpb24gdGVzdDEoKQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
OworICAgIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJtc2cxIik7CisgICAgY2hhbm5lbDIucG9ydDEucG9zdE1lc3NhZ2Uo
IiIsIGNoYW5uZWwucG9ydDEpOworICAgIGNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIiLCBj
aGFubmVsLnBvcnQyKTsKKyAgICBjaGFubmVsMi5wb3J0Mi5vbm1lc3NhZ2UgPSBjaGFubmVsMi5w
b3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0
Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0
YSA9PSAibXNnMSIpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIG1lc3Nh
Z2UgdG8gY2xvbmVkIHBvcnQuIik7CisgICAgICAgICAgICAgICAgdGhpcy5wb3N0TWVzc2FnZSgi
bXNnMiIpOworICAgICAgICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2
ZW50LmRhdGEgPT0gIm1zZzIiKSB7CisgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZl
ZCBtZXNzYWdlIGZyb20gY2xvbmVkIHBvcnQuIik7CisgICAgICAgICAgICAgICAgZ2MoKTsKKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTDogUmVjZWl2ZWQgdW5rbm93biBt
ZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZXZ0Lm1lc3NhZ2VQb3J0ID0gMDsKKyAgICB9CisgICAgY2hhbm5lbCA9IDA7CisgICAgY2hh
bm5lbDIgPSAwOworICAgIGdjKCk7Cit9CisKK3Rlc3QxKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdj
LTQuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5l
bC1nYy00Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZWE5
ZjguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVs
LWdjLTQuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLTxib2R5
PgotPHA+VGVzdCB0aGF0IE1lc3NhZ2VQb3J0IG1lc3NhZ2VzIGFyZSBkZWxpdmVyZWQgZXZlbiBp
ZiBib3RoIHBvcnRzIGFyZSBpbiB0cmFuc2l0IChjbG9uZWQpLjwvcD4KLTxwPlNob3VsZCBzYXkg
UEFTUyB0d2ljZS48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBn
YygpCi17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0Nv
bnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxs
b2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJh
YmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0K
LQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QxKCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKLSAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0g
ICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnMSIpOwotICAgIGNoYW5uZWwyLnBvcnQx
LnBvc3RNZXNzYWdlKCIiLCBjaGFubmVsLnBvcnQxKTsKLSAgICBjaGFubmVsMi5wb3J0Mi5wb3N0
TWVzc2FnZSgiIiwgY2hhbm5lbC5wb3J0Mik7Ci0gICAgY2hhbm5lbDIucG9ydDIub25tZXNzYWdl
ID0gY2hhbm5lbDIucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGV2
dC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAg
aWYgKGV2ZW50LmRhdGEgPT0gIm1zZzEiKSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBS
ZWNlaXZlZCBtZXNzYWdlIHRvIGNsb25lZCBwb3J0LiIpOwotICAgICAgICAgICAgICAgIHRoaXMu
cG9zdE1lc3NhZ2UoIm1zZzIiKTsKLSAgICAgICAgICAgICAgICBnYygpOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJtc2cyIikgewotICAgICAgICAgICAgICAgIGxvZygi
UEFTUzogUmVjZWl2ZWQgbWVzc2FnZSBmcm9tIGNsb25lZCBwb3J0LiIpOwotICAgICAgICAgICAg
ICAgIGdjKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFJlY2Vp
dmVkIHVua25vd24gbWVzc2FnZTogIiArIGV2ZW50LmRhdGEpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGV2dC5tZXNzYWdlUG9ydCA9IDA7Ci0gICAgfQotICAgIGNoYW5uZWwg
PSAwOwotICAgIGNoYW5uZWwyID0gMDsKLSAgICBnYygpOwotfQotCi10ZXN0MSgpOwotCi08L3Nj
cmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtY2hhbm5lbC1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFu
bmVsLWdjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FhMTA4ZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5l
bC1nYy5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxib2R5PgorPHA+VGVzdCBzb21lIGNhc2VzIG9m
IE1lc3NhZ2VQb3J0IGdhcmJhZ2UgY29sbGVjdGlvbi48L3A+Cis8cHJlIGlkPWxvZz48L3ByZT4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIp
CisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChG
RiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQorICAgICAg
ICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCAr
PSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGNoYW5uZWwgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7CitjaGFubmVsLnBvcnQxLmZvbyA9ICJiYXIiOworCitnYygpOworbG9nKCJT
aG91bGQgYmUgJ2Jhcic6ICIgKyBjaGFubmVsLnBvcnQxLmZvbyk7CisKK2NoYW5uZWwucG9ydDEu
b25tZXNzYWdlID0gZnVuY3Rpb24oKSB7IGxvZygib25tZXNzYWdlIik7IH0KK2NoYW5uZWwucG9y
dDEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKCkgeyBsb2coIm1lc3NhZ2Ug
bGlzdGVuZXIiKTsgfSwgZmFsc2UpOworCitnYygpOworY2hhbm5lbC5wb3J0MS5zdGFydCgpOwor
Y2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgibXNnIik7CisKK2djKCk7CitjaGFubmVsLnBvcnQx
LmNsb3NlKCk7CitjaGFubmVsLnBvcnQyLmNsb3NlKCk7CisKK2djKCk7CisKK3NldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpCit9
LCAwKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYWExMDhlLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwKQEAg
LTEsNTEgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHNvbWUgY2FzZXMgb2YgTWVzc2FnZVBvcnQg
Z2FyYmFnZSBjb2xsZWN0aW9uLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNjcmlwdD4KLWZ1
bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgcmV0
dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFi
b3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAgIHZhciBzID0gbmV3
IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
LWNoYW5uZWwucG9ydDEuZm9vID0gImJhciI7Ci0KLWdjKCk7Ci1sb2coIlNob3VsZCBiZSAnYmFy
JzogIiArIGNoYW5uZWwucG9ydDEuZm9vKTsKLQotY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBm
dW5jdGlvbigpIHsgbG9nKCJvbm1lc3NhZ2UiKTsgfQotY2hhbm5lbC5wb3J0MS5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oKSB7IGxvZygibWVzc2FnZSBsaXN0ZW5lciIpOyB9
LCBmYWxzZSk7Ci0KLWdjKCk7Ci1jaGFubmVsLnBvcnQxLnN0YXJ0KCk7Ci1jaGFubmVsLnBvcnQy
LnBvc3RNZXNzYWdlKCJtc2ciKTsKLQotZ2MoKTsKLWNoYW5uZWwucG9ydDEuY2xvc2UoKTsKLWNo
YW5uZWwucG9ydDIuY2xvc2UoKTsKLQotZ2MoKTsKLQotc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICBsb2coIkRPTkUiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkKLX0sIDApOwotCi08L3Nj
cmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWEyMGIwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3Rl
bmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxib2R5PgorPHA+
VGVzdCB0aGF0IGEgbGVhayBpcyBub3QgY3JlYXRlZCBieSBhc3NpZ25pbmcgYSBNZXNzYWdlUG9y
dCB0byBhIHByb3BlcnR5IG9mIGl0cyBvd24gbGlzdGVuZXIuPC9wPgorPHA+T25seSB3b3JrcyB3
aXRoIHJ1bi13ZWJraXQtdGVzdHMgLS1sZWFrcy48L3A+Cis8cHJlIGlkPWxvZz48L3ByZT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiBy
ZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQorICAgICAgICB2
YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
K3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworCitjaGFubmVsLnBvcnQxLm9uY2xv
c2UgPSBmdW5jdGlvbigpIHt9CisKK2NoYW5uZWwucG9ydDEub25jbG9zZS5mb28gPSBjaGFubmVs
OworY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmJhciA9IGNoYW5uZWwucG9ydDE7CitjaGFubmVsLnBv
cnQxLm9uY2xvc2UuYmF6ID0gY2hhbm5lbC5wb3J0MjsKKworY2hhbm5lbCA9IG51bGw7CitnYygp
OworPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3duZXJzaGlwLmh0bWwtZGlzYWJs
ZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2ly
Y3VsYXItb3duZXJzaGlwLmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDlhYTIwYjAuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sLWRpc2FibGVkCisrKyAv
ZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgYSBsZWFrIGlz
IG5vdCBjcmVhdGVkIGJ5IGFzc2lnbmluZyBhIE1lc3NhZ2VQb3J0IHRvIGEgcHJvcGVydHkgb2Yg
aXRzIG93biBsaXN0ZW5lci48L3A+Ci08cD5Pbmx5IHdvcmtzIHdpdGggcnVuLXdlYmtpdC10ZXN0
cyAtLWxlYWtzLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNjcmlwdD4KLWZ1bmN0aW9uIGdj
KCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFs
bG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygi
YWJjIik7Ci0gICAgfQotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQotdmFyIGNoYW5uZWwgPSBuZXcg
TWVzc2FnZUNoYW5uZWw7Ci0KLWNoYW5uZWwucG9ydDEub25jbG9zZSA9IGZ1bmN0aW9uKCkge30K
LQotY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmZvbyA9IGNoYW5uZWw7Ci1jaGFubmVsLnBvcnQxLm9u
Y2xvc2UuYmFyID0gY2hhbm5lbC5wb3J0MTsKLWNoYW5uZWwucG9ydDEub25jbG9zZS5iYXogPSBj
aGFubmVsLnBvcnQyOwotCi1jaGFubmVsID0gbnVsbDsKLWdjKCk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9u
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNsb25lLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxOGEyZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5odG1sCkBA
IC0wLDAgKzEsMTI4IEBACis8Ym9keT4KKzxwPlRlc3RzIHZhcmlvdXMgdXNlIGNhc2VzIHdoZW4g
Y2xvbmluZyBNZXNzYWdlUG9ydHMuPC9wPgorPHA+U2hvdWxkIGJlIGEgc2VyaWVzIG9mIFNVQ0NF
U1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdpdGggRE9ORS48L3A+Cis8cHJlIGlkPWxvZz48L3ByZT4K
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxl
cikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChG
RiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KS4KKyAgICAg
ICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvZyht
ZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwg
Kz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBjaGFubmVsID0gbmV3IE1l
c3NhZ2VDaGFubmVsOworY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjaGFubmVsLnBvcnQyLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIGZhaWwoIkZBSUw6IFNob3VsZCBub3QgaGF2
ZSByZWNlaXZlZCBtZXNzYWdlOiAiICsgZXZ0LmRhdGEpOworfQordHJ5IHsKKyAgICBjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQxKTsKKyAgICBsb2coIkZBSUw6
IFBvc3RpbmcgcG9ydCB0byBpdHNlbGYgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKK30g
Y2F0Y2ggKGV4KSB7CisgICAgbG9nKCJTVUNDRVNTOiBQb3N0aW5nIHBvcnQgdG8gaXRzZWxmOiAi
ICsgZXgpOworfQorCit0cnkgeworICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIs
IGNoYW5uZWwucG9ydDIpOworICAgIGxvZygiRkFJTDogUG9zdGluZyBwb3J0IHRvIGVudGFuZ2xl
ZCBwYWlyIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChleCkgeworICAg
IGxvZygiU1VDQ0VTUzogUG9zdGluZyBlbnRhbmdsZWQgcG9ydDogIiArIGV4KTsKK30KKworY2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3ZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hh
bm5lbDsKK2NoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwyLnBvcnQxKTsK
KworLy8gU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHBvc3QgYSBjbG9uZWQgcG9ydC4KK3RyeSB7Cisg
ICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOworICAg
IGxvZygiRkFJTDogUG9zdGluZyBjbG9uZWQgcG9ydCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9u
LiIpOworfSBjYXRjaCAoZXgpIHsKKyAgICBsb2coIlNVQ0NFU1M6IFBvc3RpbmcgY2xvbmVkIHBv
cnQuIik7Cit9CisKKy8vIFRlc3QgcG9zdGluZyBtZXNzYWdlcyB0byBhIHBvcnQgaW4gY2xvbmVk
IHN0YXRlLgorCit2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK3ZhciBjaGFubmVs
MiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKworLy8gUG9zdCBtZXNzYWdlcyBiZWZvcmUgYW5kIGFm
dGVyIGNsb25lIHRvIG1ha2Ugc3VyZSBvcmRlcmluZyBpcyBwcmVzZXJ2ZWQgYW5kIGFsbCBtZXNz
YWdlcyBhcmUgcmVjZWl2ZWQuCitjaGFubmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiMSIpOworY2hh
bm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOworY2hhbm5lbDIu
cG9ydDIucG9zdE1lc3NhZ2UoIjIiKTsKK2NoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIzIik7
CitjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIHZhciBtZXNz
YWdlSW5kZXggPSAxOworICAgIGV2dC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhICE9IG1lc3NhZ2VJbmRleCkKKyAgICAgICAgICAg
IGxvZygiRkFJTDogR290IG1lc3NhZ2UgIiArIGV2dC5kYXRhICsgIiwgZXhwZWN0ZWQgIiArIG1l
c3NhZ2VJbmRleCk7CisgICAgICAgIG1lc3NhZ2VJbmRleCsrOworICAgICAgICBpZiAobWVzc2Fn
ZUluZGV4ID09IDQpIHsKKyAgICAgICAgICAgIGxvZygiU1VDQ0VTUzogUG9zdGVkIG1lc3NhZ2Vz
IHRvIGNsb25lZCBwb3J0LiIpOworICAgICAgICAgICAgdGVzdERvdWJseUNsb25lZFBvcnQoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworZnVuY3Rpb24gdGVzdERvdWJseUNsb25lZFBvcnQoKQor
eworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIHZhciBjaGFubmVs
MiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJt
c2ciLCBjaGFubmVsMi5wb3J0MSk7CisgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgibXNn
IiwgY2hhbm5lbDIucG9ydDIpOworICAgIGdjKCk7CisgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdl
KCJ0ZXN0bWUiKTsKKyAgICB9CisgICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldnQpIHsKKyAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChl
dnQpIHsKKyAgICAgICAgICAgIGlmIChldnQuZGF0YSA9PSAidGVzdG1lIikKKyAgICAgICAgICAg
ICAgICBsb2coIlNVQ0NFU1M6IENsb25lZCBib3RoIGVuZHBvaW50cyBvZiBhIGNoYW5uZWwuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBJbnZhbGlkIG1l
c3NhZ2UgYXJyaXZlZDogIiArIGV2dC5kYXRhKTsKKyAgICAgICAgICAgIHRlc3RQb3N0Q2xvc2VQ
b3J0KCk7CisgICAgICAgIH0KKyAgICB9CisKK30KKworLy8gKlNob3VsZCogYmUgYWJsZSB0byBw
b3N0IGEgY2xvc2VkIHBvcnQuCitmdW5jdGlvbiB0ZXN0UG9zdENsb3NlUG9ydCgpCit7CisgICAg
dmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgdmFyIGNoYW5uZWwyID0gbmV3
IE1lc3NhZ2VDaGFubmVsOworICAgIGNoYW5uZWwyLnBvcnQyLmNsb3NlKCk7CisgICAgY2hhbm5l
bC5wb3J0MS5wb3N0TWVzc2FnZSgiY2xvc2VkIiwgY2hhbm5lbDIucG9ydDIpOworICAgIGNoYW5u
ZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmICghZXZ0Lm1l
c3NhZ2VQb3J0KQorICAgICAgICAgICAgbG9nKCJGQUlMOiBDbG9zZWQgcG9ydCBub3Qgc2VudC4i
KTsKKyAgICAgICAgZWxzZSBpZiAoZXZ0LmRhdGEgIT0gImNsb3NlZCIpCisgICAgICAgICAgICBs
b2coIkZBSUw6IFVuZXhwZWN0ZWQgbWVzc2FnZTogIiArIGV2dC5kYXRhKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiBHb3QgY2xvc2VkIHBvcnQgd2l0aCBldmVudCBt
ZXNzYWdlICIgKyBldnQuZGF0YSk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGRvbmUoKQoreworICAgIGxvZygiRE9ORSIpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworfQorPC9zY3JpcHQ+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBhODE4YTJlLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwKQEAgLTEs
MTI4ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdHMgdmFyaW91cyB1c2UgY2FzZXMgd2hlbiBjbG9u
aW5nIE1lc3NhZ2VQb3J0cy48L3A+Ci08cD5TaG91bGQgYmUgYSBzZXJpZXMgb2YgU1VDQ0VTUyBt
ZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNj
cmlwdD4KLQotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQot
ICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJl
cXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpLgotICAgICAgICB2
YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBt
ZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWw7Ci1jaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGNoYW5uZWwucG9ydDIub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgZmFpbCgiRkFJTDogU2hvdWxkIG5vdCBoYXZlIHJl
Y2VpdmVkIG1lc3NhZ2U6ICIgKyBldnQuZGF0YSk7Ci19Ci10cnkgewotICAgIGNoYW5uZWwucG9y
dDEucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDEpOwotICAgIGxvZygiRkFJTDogUG9z
dGluZyBwb3J0IHRvIGl0c2VsZiBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiIpOwotfSBjYXRj
aCAoZXgpIHsKLSAgICBsb2coIlNVQ0NFU1M6IFBvc3RpbmcgcG9ydCB0byBpdHNlbGY6ICIgKyBl
eCk7Ci19Ci0KLXRyeSB7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hh
bm5lbC5wb3J0Mik7Ci0gICAgbG9nKCJGQUlMOiBQb3N0aW5nIHBvcnQgdG8gZW50YW5nbGVkIHBh
aXIgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKLX0gY2F0Y2ggKGV4KSB7Ci0gICAgbG9n
KCJTVUNDRVNTOiBQb3N0aW5nIGVudGFuZ2xlZCBwb3J0OiAiICsgZXgpOwotfQotCi1jaGFubmVs
ID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotdmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwotY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOwotCi0v
LyBTaG91bGQgbm90IGJlIGFibGUgdG8gcG9zdCBhIGNsb25lZCBwb3J0LgotdHJ5IHsKLSAgICBj
aGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7Ci0gICAgbG9n
KCJGQUlMOiBQb3N0aW5nIGNsb25lZCBwb3J0IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIik7
Ci19IGNhdGNoIChleCkgewotICAgIGxvZygiU1VDQ0VTUzogUG9zdGluZyBjbG9uZWQgcG9ydC4i
KTsKLX0KLQotLy8gVGVzdCBwb3N0aW5nIG1lc3NhZ2VzIHRvIGEgcG9ydCBpbiBjbG9uZWQgc3Rh
dGUuCi0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotdmFyIGNoYW5uZWwyID0g
bmV3IE1lc3NhZ2VDaGFubmVsOwotCi0vLyBQb3N0IG1lc3NhZ2VzIGJlZm9yZSBhbmQgYWZ0ZXIg
Y2xvbmUgdG8gbWFrZSBzdXJlIG9yZGVyaW5nIGlzIHByZXNlcnZlZCBhbmQgYWxsIG1lc3NhZ2Vz
IGFyZSByZWNlaXZlZC4KLWNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIxIik7Ci1jaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7Ci1jaGFubmVsMi5wb3J0
Mi5wb3N0TWVzc2FnZSgiMiIpOwotY2hhbm5lbDIucG9ydDIucG9zdE1lc3NhZ2UoIjMiKTsKLWNo
YW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgdmFyIG1lc3NhZ2VJ
bmRleCA9IDE7Ci0gICAgZXZ0Lm1lc3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkg
ewotICAgICAgICBpZiAoZXZ0LmRhdGEgIT0gbWVzc2FnZUluZGV4KQotICAgICAgICAgICAgbG9n
KCJGQUlMOiBHb3QgbWVzc2FnZSAiICsgZXZ0LmRhdGEgKyAiLCBleHBlY3RlZCAiICsgbWVzc2Fn
ZUluZGV4KTsKLSAgICAgICAgbWVzc2FnZUluZGV4Kys7Ci0gICAgICAgIGlmIChtZXNzYWdlSW5k
ZXggPT0gNCkgewotICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiBQb3N0ZWQgbWVzc2FnZXMgdG8g
Y2xvbmVkIHBvcnQuIik7Ci0gICAgICAgICAgICB0ZXN0RG91Ymx5Q2xvbmVkUG9ydCgpOwotICAg
ICAgICB9Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0RG91Ymx5Q2xvbmVkUG9ydCgpCi17Ci0g
ICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgdmFyIGNoYW5uZWwyID0g
bmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIs
IGNoYW5uZWwyLnBvcnQxKTsKLSAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJtc2ciLCBj
aGFubmVsMi5wb3J0Mik7Ci0gICAgZ2MoKTsKLSAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBldnQubWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoInRl
c3RtZSIpOwotICAgIH0KLSAgICBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgewotICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkg
ewotICAgICAgICAgICAgaWYgKGV2dC5kYXRhID09ICJ0ZXN0bWUiKQotICAgICAgICAgICAgICAg
IGxvZygiU1VDQ0VTUzogQ2xvbmVkIGJvdGggZW5kcG9pbnRzIG9mIGEgY2hhbm5lbC4iKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IEludmFsaWQgbWVzc2Fn
ZSBhcnJpdmVkOiAiICsgZXZ0LmRhdGEpOwotICAgICAgICAgICAgdGVzdFBvc3RDbG9zZVBvcnQo
KTsKLSAgICAgICAgfQotICAgIH0KLQotfQotCi0vLyAqU2hvdWxkKiBiZSBhYmxlIHRvIHBvc3Qg
YSBjbG9zZWQgcG9ydC4KLWZ1bmN0aW9uIHRlc3RQb3N0Q2xvc2VQb3J0KCkKLXsKLSAgICB2YXIg
Y2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7Ci0gICAgY2hhbm5lbDIucG9ydDIuY2xvc2UoKTsKLSAgICBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKCJjbG9zZWQiLCBjaGFubmVsMi5wb3J0Mik7Ci0gICAgY2hhbm5lbC5w
b3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKCFldnQubWVzc2Fn
ZVBvcnQpCi0gICAgICAgICAgICBsb2coIkZBSUw6IENsb3NlZCBwb3J0IG5vdCBzZW50LiIpOwot
ICAgICAgICBlbHNlIGlmIChldnQuZGF0YSAhPSAiY2xvc2VkIikKLSAgICAgICAgICAgIGxvZygi
RkFJTDogVW5leHBlY3RlZCBtZXNzYWdlOiAiICsgZXZ0LmRhdGEpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBsb2coIlNVQ0NFU1M6IEdvdCBjbG9zZWQgcG9ydCB3aXRoIGV2ZW50IG1lc3Nh
Z2UgIiArIGV2dC5kYXRhKTsKLSAgICAgICAgZG9uZSgpOwotICAgIH0KLX0KLQotZnVuY3Rpb24g
ZG9uZSgpCi17Ci0gICAgbG9nKCJET05FIik7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19
Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVk
LWRvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ4OWE3
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9y
dC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsNTUgQEAK
Kzxib2R5PgorPHA+VGVzdCB0aGF0IGRlc3Ryb3lpbmcgYSBkb2N1bWVudCBkb2Vzbid0IGNhdXNl
IGEgY3Jhc2ggd2hlbiBleGVjdXRpbmcgTWVzc2FnZUNoYW5uZWwgY29uc3RydWN0b3Igc2F2ZWQg
ZnJvbSBpdHMgV2luZG93IG9iamVjdC48L3A+Cis8cHJlIGlkPWxvZz48L3ByZT4KKzxzY3JpcHQ+
CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAg
IHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJl
cyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9
IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdl
ICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGNvbnN0cnVjdG9yOworCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBjb25zdHJ1Y3RvciA9IHdpbmRvdy5mcmFtZXNbMF0uTWVzc2FnZUNoYW5u
ZWw7CisKKyAgICB2YXIgZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImlmcmFtZSIpWzBdOworICAgIGZyYW1lRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGZyYW1lRWxlbWVudCk7CisgICAgZnJhbWVFbGVtZW50ID0gbnVsbDsKKworICAgIGdjKCk7Cisg
ICAgc2V0VGltZW91dCh0ZXN0MiwgMTApOworfQorCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAg
Z2MoKTsKKyAgICB0cnkgeworICAgICAgICBuZXcgY29uc3RydWN0b3I7CisgICAgfSBjYXRjaCAo
ZXgpIHsKKyAgICB9CisKKyAgICBsb2coIkRpZG4ndCBjcmFzaDogU1VDQ0VTUyIpOworCisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
Y29uc3RydWN0b3ItZm9yLWRlbGV0ZWQtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1
bWVudC5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDg5YTcz
Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25z
dHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwK
QEAgLTEsNTUgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgZGVzdHJveWluZyBhIGRvY3Vt
ZW50IGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIGV4ZWN1dGluZyBNZXNzYWdlQ2hhbm5lbCBj
b25zdHJ1Y3RvciBzYXZlZCBmcm9tIGl0cyBXaW5kb3cgb2JqZWN0LjwvcD4KLTxwcmUgaWQ9bG9n
PjwvcHJlPgotPHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29u
dHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxl
Y3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3Qp
Ci0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5u
ZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgY29uc3RydWN0
b3I7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGNvbnN0cnVjdG9yID0gd2luZG93LmZyYW1l
c1swXS5NZXNzYWdlQ2hhbm5lbDsKLQotICAgIHZhciBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07Ci0gICAgZnJhbWVFbGVtZW50LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoZnJhbWVFbGVtZW50KTsKLSAgICBmcmFtZUVsZW1lbnQgPSBudWxs
OwotCi0gICAgZ2MoKTsKLSAgICBzZXRUaW1lb3V0KHRlc3QyLCAxMCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3QyKCkKLXsKLSAgICBnYygpOwotICAgIHRyeSB7Ci0gICAgICAgIG5ldyBjb25zdHJ1Y3Rv
cjsKLSAgICB9IGNhdGNoIChleCkgewotICAgIH0KLQotICAgIGxvZygiRGlkbid0IGNyYXNoOiBT
VUNDRVNTIik7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwvc2NyaXB0PgotPGlm
cmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwiIG9ubG9hZD0idGVz
dCgpIj48L2lmcmFtZT4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZTJlMDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sCkBAIC0w
LDAgKzEsNzEgQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IGRlc3Ryb3lpbmcgYSBkb2N1bWVudCBk
b2Vzbid0IGNhdXNlIGEgY3Jhc2ggd2hlbiBwb3N0aW5nIGEgbWVzc2FnZSB0byBhIE1lc3NhZ2VQ
b3J0IGl0IG93bmVkLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdD
Q29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlL
IGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmlu
ZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCit2YXIgbWFpblBvcnQ7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIHdpbmRvdy5mcmFtZXNbMF0u
cG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIsICIqIik7CisgICAgbWFpblBvcnQgPSBj
aGFubmVsLnBvcnQxOworICAgIG1haW5Qb3J0LnN0YXJ0KCk7CisKKyAgICBtYWluUG9ydC5wb3N0
TWVzc2FnZSgicGluZyIpOworICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IHRlc3QyOworfQorCitm
dW5jdGlvbiB0ZXN0MigpCit7CisgICAgdmFyIGZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKKyAgICBmcmFtZUVsZW1lbnQucGFyZW50Tm9k
ZS5yZW1vdmVDaGlsZChmcmFtZUVsZW1lbnQpOworICAgIGZyYW1lRWxlbWVudCA9IG51bGw7CisK
KyAgICBnYygpOworICAgIHNldFRpbWVvdXQodGVzdDMsIDEwKTsKK30KKworZnVuY3Rpb24gdGVz
dDMoKQoreworICAgIGdjKCk7CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAg
ICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgaWYgKGV2dC5k
YXRhID09ICJwb25nIikKKyAgICAgICAgICAgIGxvZygiVW5leHBlY3RlZCByZXNwb25zZTogRkFJ
TCIpOworICAgIH07CisgICAgc2V0VGltZW91dCh0ZXN0NCwgMTApOworfQorCitmdW5jdGlvbiB0
ZXN0NCgpCit7CisgICAgbWFpblBvcnQuY2xvc2UoKTsKKworICAgIGxvZygiRGlkbid0IGNyYXNo
OiBTVUNDRVNTIik7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0Pgor
PGlmcmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwiIG9ubG9hZD0i
dGVzdCgpIj48L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sLWRp
c2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWUyZTA3Li4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50
Lmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi08Ym9keT4KLTxw
PlRlc3QgdGhhdCBkZXN0cm95aW5nIGEgZG9jdW1lbnQgZG9lc24ndCBjYXVzZSBhIGNyYXNoIHdo
ZW4gcG9zdGluZyBhIG1lc3NhZ2UgdG8gYSBNZXNzYWdlUG9ydCBpdCBvd25lZC48L3A+Ci08cHJl
IGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBnYygpCi17Ci0gICAgaWYgKHdpbmRv
dy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwot
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFn
ZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBj
b2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxv
ZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotdmFyIG1h
aW5Qb3J0OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNz
YWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFu
bmVsLnBvcnQyLCAiKiIpOwotICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKLSAgICBtYWlu
UG9ydC5zdGFydCgpOwotCi0gICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBt
YWluUG9ydC5vbm1lc3NhZ2UgPSB0ZXN0MjsKLX0KLQotZnVuY3Rpb24gdGVzdDIoKQotewotICAg
IHZhciBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1l
IilbMF07Ci0gICAgZnJhbWVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZnJhbWVFbGVt
ZW50KTsKLSAgICBmcmFtZUVsZW1lbnQgPSBudWxsOwotCi0gICAgZ2MoKTsKLSAgICBzZXRUaW1l
b3V0KHRlc3QzLCAxMCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QzKCkKLXsKLSAgICBnYygpOwotICAg
IG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSA9PSAicG9uZyIpCi0gICAgICAg
ICAgICBsb2coIlVuZXhwZWN0ZWQgcmVzcG9uc2U6IEZBSUwiKTsKLSAgICB9OwotICAgIHNldFRp
bWVvdXQodGVzdDQsIDEwKTsKLX0KLQotZnVuY3Rpb24gdGVzdDQoKQotewotICAgIG1haW5Qb3J0
LmNsb3NlKCk7Ci0KLSAgICBsb2coIkRpZG4ndCBjcmFzaDogU1VDQ0VTUyIpOwotCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotfQotCi08L3NjcmlwdD4KLTxpZnJhbWUgc3JjPSJyZXNvdXJjZXMv
bWVzc2FnZS1wb3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Ci08L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVs
ZXRlZC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRl
bGV0ZWQtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWZh
MmIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWRlbGV0ZWQtZnJhbWUuaHRtbApAQCAtMCwwICsxLDcxIEBACis8Ym9keT4KKzxwPlRlc3Qg
dGhhdCBkZXN0cm95aW5nIGEgZnJhbWUgZG9lc24ndCBjYXVzZSBhIGNyYXNoIHdoZW4gcG9zdGlu
ZyBhIG1lc3NhZ2UgdG8gYSBNZXNzYWdlUG9ydCBpdCBvd25lZC48L3A+Cis8cHJlIGlkPWxvZz48
L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRy
b2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0
aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQor
ICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVy
SFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIG1haW5Qb3J0Owor
dmFyIGZyYW1lRG9jOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmcmFtZURvYyA9IHdpbmRv
dy5mcmFtZXNbMF0uZG9jdW1lbnQ7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0
MiwgIioiKTsKKyAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CisgICAgbWFpblBvcnQuc3Rh
cnQoKTsKKworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQu
b25tZXNzYWdlID0gdGVzdDI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2YXIgZnJh
bWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOwor
ICAgIGZyYW1lRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZyYW1lRWxlbWVudCk7Cisg
ICAgZnJhbWVFbGVtZW50ID0gbnVsbDsKKworICAgIGdjKCk7CisgICAgc2V0VGltZW91dCh0ZXN0
MywgMTApOworfQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgZ2MoKTsKKyAgICBtYWluUG9y
dC5wb3N0TWVzc2FnZSgicGluZyIpOworICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmciKQorICAgICAgICAgICAgbG9n
KCJVbmV4cGVjdGVkIHJlc3BvbnNlOiBGQUlMIik7CisgICAgfTsKKyAgICBzZXRUaW1lb3V0KHRl
c3Q0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Q0KCkKK3sKKyAgICBsb2coIkRpZG4ndCBjcmFz
aDogU1VDQ0VTUyIpOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4K
KzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9
InRlc3QoKSI+PC9pZnJhbWU+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sLWRpc2FibGVkIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbC1kaXNhYmxl
ZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmYTJiMy4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sLWRp
c2FibGVkCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRo
YXQgZGVzdHJveWluZyBhIGZyYW1lIGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIHBvc3Rpbmcg
YSBtZXNzYWdlIHRvIGEgTWVzc2FnZVBvcnQgaXQgb3duZWQuPC9wPgotPHByZSBpZD1sb2c+PC9w
cmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9s
bGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlv
biAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAg
ICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxv
ZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciBtYWluUG9ydDsKLXZh
ciBmcmFtZURvYzsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgZnJhbWVEb2MgPSB3aW5kb3cu
ZnJhbWVzWzBdLmRvY3VtZW50OwotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIs
ICIqIik7Ci0gICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwotICAgIG1haW5Qb3J0LnN0YXJ0
KCk7Ci0KLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAgIG1haW5Qb3J0Lm9u
bWVzc2FnZSA9IHRlc3QyOwotfQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgdmFyIGZyYW1l
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKLSAg
ICBmcmFtZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZUVsZW1lbnQpOwotICAg
IGZyYW1lRWxlbWVudCA9IG51bGw7Ci0KLSAgICBnYygpOwotICAgIHNldFRpbWVvdXQodGVzdDMs
IDEwKTsKLX0KLQotZnVuY3Rpb24gdGVzdDMoKQotewotICAgIGdjKCk7Ci0gICAgbWFpblBvcnQu
cG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKLSAgICAgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIikKLSAgICAgICAgICAgIGxvZygi
VW5leHBlY3RlZCByZXNwb25zZTogRkFJTCIpOwotICAgIH07Ci0gICAgc2V0VGltZW91dCh0ZXN0
NCwgMTApOwotfQotCi1mdW5jdGlvbiB0ZXN0NCgpCi17Ci0gICAgbG9nKCJEaWRuJ3QgY3Jhc2g6
IFNVQ0NFU1MiKTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08
aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0
ZXN0KCkiPjwvaWZyYW1lPgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODU5NTc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwK
QEAgLTAsMCArMSw3MiBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgbWVzc2FnaW5nIGFuIGluYWN0
aXZlIGZyYW1lbGVzcyBkb2N1bWVudCB3b3JrcyBhcyBleHBlY3RlZC48L3A+Cis8cHJlIGlkPWxv
Zz48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0Nv
bnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xs
ZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0
KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlu
bmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIG90aGVyRG9j
dW1lbnQ7Cit2YXIgbWFpblBvcnQ7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIG90aGVyRG9j
dW1lbnQgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50OworICAgIHZhciBjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIs
IGNoYW5uZWwucG9ydDIsICIqIik7CisgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOworICAg
IG1haW5Qb3J0LnN0YXJ0KCk7CisKKyAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwor
ICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IHRlc3QyOworfQorCitmdW5jdGlvbiB0ZXN0MigpCit7
CisgICAgdmFyIGZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJp
ZnJhbWUiKVswXTsKKyAgICBmcmFtZUVsZW1lbnQuc3JjID0gInJlc291cmNlcy93aW5kb3ctb3Bl
bmVkLmh0bWwiOworICAgIGZyYW1lRWxlbWVudC5vbmxvYWQgPSB0ZXN0MzsKKyAgICBnYygpOwor
fQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgZ2MoKTsKKyAgICBtYWluUG9ydC5wb3N0TWVz
c2FnZSgiYWxlcnQgRkFJTDogdGhlIGRvY3VtZW50IGlzIGluYWN0aXZlLiIpOworICAgIG1haW5Q
b3J0LnBvc3RNZXNzYWdlKCJmcmVlemUiKTsKKyAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGlu
ZyIpOworICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBs
b2coIlVuZXhwZWN0ZWQgcmVzcG9uc2U6IEZBSUwiKTsKKyAgICB9OworICAgIHNldFRpbWVvdXQo
dGVzdDQsIDEwKTsKK30KKworZnVuY3Rpb24gdGVzdDQoKQoreworICAgIG1haW5Qb3J0LmNsb3Nl
KCk7CisKKyAgICBsb2coIkRpZG4ndCBjcmFzaCwgZnJlZXplIG9yIHJlc3BvbmQ6IFNVQ0NFU1Mi
KTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiIHdp
ZHRoPTAgaGVpZ2h0PTAgZnJhbWVib3JkZXI9MD48L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVu
dC5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWlu
YWN0aXZlLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDU4NTk1NzYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAt
MSw3MiArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBtZXNzYWdpbmcgYW4gaW5hY3RpdmUg
ZnJhbWVsZXNzIGRvY3VtZW50IHdvcmtzIGFzIGV4cGVjdGVkLjwvcD4KLTxwcmUgaWQ9bG9nPjwv
cHJlPgotPHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJv
bGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rp
b24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0g
ICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBs
b2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJI
VE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgb3RoZXJEb2N1bWVu
dDsKLXZhciBtYWluUG9ydDsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgb3RoZXJEb2N1bWVu
dCA9IHdpbmRvdy5mcmFtZXNbMF0uZG9jdW1lbnQ7Ci0gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hh
bm5lbC5wb3J0MiwgIioiKTsKLSAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7Ci0gICAgbWFp
blBvcnQuc3RhcnQoKTsKLQotICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7Ci0gICAg
bWFpblBvcnQub25tZXNzYWdlID0gdGVzdDI7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkKLXsKLSAg
ICB2YXIgZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFt
ZSIpWzBdOwotICAgIGZyYW1lRWxlbWVudC5zcmMgPSAicmVzb3VyY2VzL3dpbmRvdy1vcGVuZWQu
aHRtbCI7Ci0gICAgZnJhbWVFbGVtZW50Lm9ubG9hZCA9IHRlc3QzOwotICAgIGdjKCk7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3QzKCkKLXsKLSAgICBnYygpOwotICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdl
KCJhbGVydCBGQUlMOiB0aGUgZG9jdW1lbnQgaXMgaW5hY3RpdmUuIik7Ci0gICAgbWFpblBvcnQu
cG9zdE1lc3NhZ2UoImZyZWV6ZSIpOwotICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7
Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGxvZygi
VW5leHBlY3RlZCByZXNwb25zZTogRkFJTCIpOwotICAgIH07Ci0gICAgc2V0VGltZW91dCh0ZXN0
NCwgMTApOwotfQotCi1mdW5jdGlvbiB0ZXN0NCgpCi17Ci0gICAgbWFpblBvcnQuY2xvc2UoKTsK
LQotICAgIGxvZygiRGlkbid0IGNyYXNoLCBmcmVlemUgb3IgcmVzcG9uZDogU1VDQ0VTUyIpOwot
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi08L3NjcmlwdD4KLTxpZnJhbWUgc3JjPSJy
ZXNvdXJjZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSIgd2lkdGg9
MCBoZWlnaHQ9MCBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1uby13cmFwcGVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3NjViOQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1uby13cmFwcGVyLmh0bWwKQEAg
LTAsMCArMSwzNSBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgZGVsaXZlcmluZyBhIG1lc3NhZ2Ug
dG8gYSBwb3J0IHRoYXQgd2FzIG5ldmVyIHJlZmVyZW5jZWQgZnJvbSBKUyBkb2Vzbid0IGNhdXNl
IGEgY3Jhc2guPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBn
YygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0Nv
bnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsr
KSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBh
bGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmco
ImFiYyIpOworICAgIH0KK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwor
fQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKwordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CitjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciKTsKK2NoYW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5u
ZWwgPSAwOworZ2MoKTsKKworc2V0VGltZW91dCgibG9nKCdQQVNTJyk7IGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsIDEw
MCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1uby13cmFwcGVyLmh0bWwtZGlzYWJsZWQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NzY1YjkuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbC1kaXNhYmxlZAorKysg
L2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IGRlbGl2ZXJp
bmcgYSBtZXNzYWdlIHRvIGEgcG9ydCB0aGF0IHdhcyBuZXZlciByZWZlcmVuY2VkIGZyb20gSlMg
ZG9lc24ndCBjYXVzZSBhIGNyYXNoLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotCi08c2NyaXB0
PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAg
ICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWly
ZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMg
PSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQot
ewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2Fn
ZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwotY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIik7Ci1jaGFubmVsLnBvcnQxLnN0
YXJ0KCk7Ci1jaGFubmVsID0gMDsKLWdjKCk7Ci0KLXNldFRpbWVvdXQoImxvZygnUEFTUycpOyBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCkiLCAxMDApOwotCi08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMjA2NDY3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21l
c3NhZ2UtcG9ydC5odG1sCkBAIC0wLDAgKzEsOTUgQEAKKzxib2R5PgorPHA+VGVzdCBjcm9zcy1m
cmFtZSBNZXNzYWdlUG9ydCBjb21tdW5pY2F0aW9uLjwvcD4KKzxwPlNob3VsZCBiZSBhIHNlcmll
cyBvZiBTVUNDRVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgorPHByZSBpZD1s
b2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwor
fQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKwordmFyIG1haW5Qb3J0OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2
YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBv
c3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAiKiIpOworICAgIG1haW5Qb3J0ID0gY2hh
bm5lbC5wb3J0MTsKKyAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOworICAgIG1haW5Q
b3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0g
InBvbmciICYmIGV2dC5vcmlnaW4gPT0gIiIpCisgICAgICAgICAgICBsb2coIlNpbXBsZSBleGNo
YW5nZTogU1VDQ0VTUyIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2coIlNpbXBsZSBl
eGNoYW5nZTogRkFJTC4gR290IG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIGZyb20gJyIgKyBl
dnQub3JpZ2luICsgIicuIik7CisgICAgICAgIHRlc3QyKCk7CisgICAgfTsKK30KKworZnVuY3Rp
b24gdGVzdDIoKQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAg
IG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJuZXdQb3J0IiwgY2hhbm5lbC5wb3J0Mik7CisgICAgY2hh
bm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgaWYgKGV2dC5k
YXRhID09ICJ5byIgJiYgZXZ0Lm9yaWdpbiA9PSAiIikKKyAgICAgICAgICAgIGxvZygiUG9zdGVk
IHBvcnQ6IFNVQ0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJQb3N0ZWQg
cG9ydDogRkFJTC4gR290IG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIGZyb20gJyIgKyBldnQu
b3JpZ2luICsgIicuIik7CisgICAgICAgIHRlc3QzKCk7CisgICAgfTsKK30KKworZnVuY3Rpb24g
dGVzdDMoKQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIGNo
YW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIjEiKTsKKyAgICB2YXIgc3RhcnRlZCA9IGZhbHNlOwor
ICAgIGNoYW5uZWwucG9ydDIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2
dCkgeworICAgICAgICBpZiAoc3RhcnRlZCkgeworICAgICAgICAgICAgbG9nKCJFdmVudCBMaXN0
ZW5lcjogU1VDQ0VTUyIpOworICAgICAgICAgICAgdGVzdDQoKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBsb2coIkV2ZW50IExpc3RlbmVyOiBGQUlMLiBFdmVudCBsaXN0ZW5lciBjYWxs
ZWQgYmVmb3JlIHN0YXJ0KCkiKTsKKyAgIH0pOworICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICAgIGNoYW5uZWwucG9ydDIuc3RhcnQoKTsKKyAgICAgIHN0YXJ0ZWQgPSB0cnVlOworICAg
fSwgMTAwKTsKKworfQorCitmdW5jdGlvbiB0ZXN0NCgpCit7CisgICAgdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiMSIpOwor
ICAgIGNoYW5uZWwucG9ydDEuY2xvc2UoKTsKKyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdl
KCIyIik7CisgICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAg
ICAgICAgaWYgKGV2dC5kYXRhID09ICIxIikgeworICAgICAgICAgICAgbG9nKCJDbG9zZWQgcG9y
dDogU1VDQ0VTUyIpOworICAgICAgICAgICAgdGVzdDUoKTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBsb2coIkNsb3NlZCBwb3J0OiBGQUlMLiBHb3QgbWVzc2FnZTogIiArIGV2dC5kYXRh
ICsgIiBhZnRlciBjbG9zZSIpOworICAgfQorfQorCitmdW5jdGlvbiB0ZXN0NSgpCit7CisgICAg
Ly8gQ3JlYXRlIGEgY2hhbm5lbCBhbmQgcHV0IHNvbWUgbWVzc2FnZXMgaW4gaXQgd2hpY2ggd2ls
bCBnbyB1bmRlbGl2ZXJlZCBhbmQgc2hvdWxkIG5vdCBsZWFrCisgICAgdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiYWJjZGUi
KTsKKyAgICAvLyBOb3cgd2FpdCBhIHNob3J0IHBlcmlvZCBvZiB0aW1lIHRvIGVuc3VyZSBubyBt
ZXNzYWdlcyBjb21lIGluIGZyb20gcHJldmlvdXMgdGVzdHMuCisgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgbG9nKCJET05FIik7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfSwgMTAwKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
Lmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRt
bC1kaXNhYmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjA2NDY3Zi4uMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbC1kaXNhYmxl
ZAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCBjcm9zcy1m
cmFtZSBNZXNzYWdlUG9ydCBjb21tdW5pY2F0aW9uLjwvcD4KLTxwPlNob3VsZCBiZSBhIHNlcmll
cyBvZiBTVUNDRVNTIG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuPC9wPgotPHByZSBpZD1s
b2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwot
fQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKLX0KLQotdmFyIG1haW5Qb3J0OwotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB2
YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cuZnJhbWVzWzBdLnBv
c3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAiKiIpOwotICAgIG1haW5Qb3J0ID0gY2hh
bm5lbC5wb3J0MTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAgIG1haW5Q
b3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBpZiAoZXZ0LmRhdGEgPT0g
InBvbmciICYmIGV2dC5vcmlnaW4gPT0gIiIpCi0gICAgICAgICAgICBsb2coIlNpbXBsZSBleGNo
YW5nZTogU1VDQ0VTUyIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2coIlNpbXBsZSBl
eGNoYW5nZTogRkFJTC4gR290IG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIGZyb20gJyIgKyBl
dnQub3JpZ2luICsgIicuIik7Ci0gICAgICAgIHRlc3QyKCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rp
b24gdGVzdDIoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAg
IG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJuZXdQb3J0IiwgY2hhbm5lbC5wb3J0Mik7Ci0gICAgY2hh
bm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKGV2dC5k
YXRhID09ICJ5byIgJiYgZXZ0Lm9yaWdpbiA9PSAiIikKLSAgICAgICAgICAgIGxvZygiUG9zdGVk
IHBvcnQ6IFNVQ0NFU1MiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJQb3N0ZWQg
cG9ydDogRkFJTC4gR290IG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIGZyb20gJyIgKyBldnQu
b3JpZ2luICsgIicuIik7Ci0gICAgICAgIHRlc3QzKCk7Ci0gICAgfTsKLX0KLQotZnVuY3Rpb24g
dGVzdDMoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIGNo
YW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIjEiKTsKLSAgICB2YXIgc3RhcnRlZCA9IGZhbHNlOwot
ICAgIGNoYW5uZWwucG9ydDIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2
dCkgewotICAgICAgICBpZiAoc3RhcnRlZCkgewotICAgICAgICAgICAgbG9nKCJFdmVudCBMaXN0
ZW5lcjogU1VDQ0VTUyIpOwotICAgICAgICAgICAgdGVzdDQoKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBsb2coIkV2ZW50IExpc3RlbmVyOiBGQUlMLiBFdmVudCBsaXN0ZW5lciBjYWxs
ZWQgYmVmb3JlIHN0YXJ0KCkiKTsKLSAgIH0pOwotICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsK
LSAgICAgIGNoYW5uZWwucG9ydDIuc3RhcnQoKTsKLSAgICAgIHN0YXJ0ZWQgPSB0cnVlOwotICAg
fSwgMTAwKTsKLQotfQotCi1mdW5jdGlvbiB0ZXN0NCgpCi17Ci0gICAgdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiMSIpOwot
ICAgIGNoYW5uZWwucG9ydDEuY2xvc2UoKTsKLSAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdl
KCIyIik7Ci0gICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAg
ICAgICAgaWYgKGV2dC5kYXRhID09ICIxIikgewotICAgICAgICAgICAgbG9nKCJDbG9zZWQgcG9y
dDogU1VDQ0VTUyIpOwotICAgICAgICAgICAgdGVzdDUoKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBsb2coIkNsb3NlZCBwb3J0OiBGQUlMLiBHb3QgbWVzc2FnZTogIiArIGV2dC5kYXRh
ICsgIiBhZnRlciBjbG9zZSIpOwotICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0NSgpCi17Ci0gICAg
Ly8gQ3JlYXRlIGEgY2hhbm5lbCBhbmQgcHV0IHNvbWUgbWVzc2FnZXMgaW4gaXQgd2hpY2ggd2ls
bCBnbyB1bmRlbGl2ZXJlZCBhbmQgc2hvdWxkIG5vdCBsZWFrCi0gICAgdmFyIGNoYW5uZWwgPSBu
ZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiYWJjZGUi
KTsKLSAgICAvLyBOb3cgd2FpdCBhIHNob3J0IHBlcmlvZCBvZiB0aW1lIHRvIGVuc3VyZSBubyBt
ZXNzYWdlcyBjb21lIGluIGZyb20gcHJldmlvdXMgdGVzdHMuCi0gICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKLSAgICAgICAgbG9nKCJET05FIik7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Ci0gICAgfSwgMTAwKTsKLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgot
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0
b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9y
cy1leHBlY3RlZC50eHQKaW5kZXggMTQ0NTA0Yy4uMzU3ZjA3MCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CkBAIC0xMTAs
NyArMTEwLDkgQEAgUEFTUyBJbWFnZS50b1N0cmluZygpIGlzICdbb2JqZWN0IEltYWdlQ29uc3Ry
dWN0b3JdJwogUEFTUyBLZXlib2FyZEV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgS2V5Ym9h
cmRFdmVudENvbnN0cnVjdG9yXScKIFBBU1MgTWVkaWFFcnJvci50b1N0cmluZygpIGlzICdbb2Jq
ZWN0IE1lZGlhRXJyb3JDb25zdHJ1Y3Rvcl0nCiBQQVNTIE1lZGlhTGlzdC50b1N0cmluZygpIGlz
ICdbb2JqZWN0IE1lZGlhTGlzdENvbnN0cnVjdG9yXScKK1BBU1MgTWVzc2FnZUNoYW5uZWwudG9T
dHJpbmcoKSBpcyAnW29iamVjdCBNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yXScKIFBBU1MgTWVz
c2FnZUV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWVzc2FnZUV2ZW50Q29uc3RydWN0b3Jd
JworUEFTUyBNZXNzYWdlUG9ydC50b1N0cmluZygpIGlzICdbb2JqZWN0IE1lc3NhZ2VQb3J0Q29u
c3RydWN0b3JdJwogUEFTUyBNaW1lVHlwZS50b1N0cmluZygpIGlzICdbb2JqZWN0IE1pbWVUeXBl
Q29uc3RydWN0b3JdJwogUEFTUyBNaW1lVHlwZUFycmF5LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3Qg
TWltZVR5cGVBcnJheUNvbnN0cnVjdG9yXScKIFBBU1MgTW91c2VFdmVudC50b1N0cmluZygpIGlz
ICdbb2JqZWN0IE1vdXNlRXZlbnRDb25zdHJ1Y3Rvcl0nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93
b3JrZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mNWQyYzYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbApAQCAtMCwwICsxLDEwMyBAQAorPGJvZHk+Cis8cD5U
ZXN0IE1lc3NhZ2VQb3J0IG1lc3NhZ2luZy9lbnRhbmdsZS9kZXRhbmdsZSBhY3Jvc3MgdGhyZWFk
cy4gU2hvdWxkIHByaW50ICJTVUNDRVNTIiB3aGVuIGRvbmUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+
PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwor
fQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworCit2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwordmFy
IG51bU1lc3NhZ2VzID0gNTAwMDA7CisKKy8vIENyZWF0ZSBhIGNoYW5uZWwgd2hpY2ggd2Ugd2ls
bCB1c2UgdG8gY2xvbmUgYW5kIHJlLWNsb25lIG9uZSBlbmQgb2YgYQorLy8gTWVzc2FnZUNoYW5u
ZWwuCit2YXIgY2xvbmVDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Cit2YXIgc3RvcENs
b25pbmcgPSBmYWxzZTsKK2Nsb25lQ2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjbG9uZUNoYW5u
ZWwucG9ydDIub25tZXNzYWdlID0gcmVzZW5kUG9ydDsKK2Nsb25lQ2hhbm5lbC5wb3J0MS5zdGFy
dCgpOworY2xvbmVDaGFubmVsLnBvcnQyLnN0YXJ0KCk7CitjbG9uZUNoYW5uZWwucG9ydDEucG9z
dE1lc3NhZ2UoIiIsIGNoYW5uZWwucG9ydDIpOworCisvLyBDcmVhdGUgd29ya2VyIHdpdGggb3Ro
ZXIgZW5kIG9mIHBvcnQgYW5kIGhhdmUgaXQgc2VuZCBtZXNzYWdlcyBiYWNrIHRvIHVzCisvLyB3
aGlsZSB3ZSBjbG9uZSBvdXIgZW5kIG9mIHRoZSBwb3J0IHJlcGVhdGVkbHkuCit2YXIgd29ya2Vy
ID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1jbG9uZXBvcnQuanMiKTsKK3dvcmtlci5w
b3N0TWVzc2FnZSgicG9zdEJhY2sgIiArIG51bU1lc3NhZ2VzLCBjaGFubmVsLnBvcnQxKTsKKwor
Ly8gVGVzdCBwb3N0aW5nIGJhY2sgNTAwMDAgbWVzc2FnZXMsIG1ha2Ugc3VyZSBvcmRlcmluZyBp
cyBmaW5lCit3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgaWYgKGV2dC5k
YXRhID09ICJwb3N0QmFja0RvbmUiKSB7CisgICAgICAgIHN0b3BDbG9uaW5nID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBMb2cgbWVzc2FnZSBmcm9tIHdvcmtlcgorICAgICAgICBs
b2coZXZ0LmRhdGEpOworICAgIH0KK30KKworLy8gS2VlcCBjbG9uaW5nIHRoZSBwYXNzZWQgcG9y
dCB1bnRpbCB3ZSdyZSB0b2xkIHRvIHN0b3AuCit2YXIgbnVtQ2xvbmVzID0gMDsKK2Z1bmN0aW9u
IHJlc2VuZFBvcnQoZXZ0KQoreworICAgIGlmICghc3RvcENsb25pbmcpIHsKKyAgICAgICAgbnVt
Q2xvbmVzKys7CisgICAgICAgIGV2dC50YXJnZXQucG9zdE1lc3NhZ2UoIiIsIGV2dC5tZXNzYWdl
UG9ydCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG51bUNsb25lcyA8IDEwMDApIHsKKyAg
ICAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBjbG9uZSBhdCBsZWFzdCAxMDAwIHRpbWVzLCB0aGVu
IHRoZXJlJ3Mgc29tZXRoaW5nIGFtaXNzLgorICAgICAgICAgICAgbG9nKCJGQUlMOiBwb3N0QmFj
ayBjb21wbGV0ZSwgYnV0IG9ubHkgY2xvbmVkICIgKyBudW1DbG9uZXMgKyAiIHRpbWVzLiIpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCJQQVNTOiBwb3N0QmFjayBjb21wbGV0
ZSwgY2xvbmVkID4gMTAwMCB0aW1lcy4iKTsKKyAgICAgICAgfQorICAgICAgICAvLyBNYWtlIHN1
cmUgdGhlIG1lc3NhZ2VzIGFycml2ZWQgaW4gb3JkZXIuCisgICAgICAgIHZhciBpdGVtTnVtID0g
MDsKKyAgICAgICAgLy8gUXVldWUgdXAgYSB0YXNrIHRvIGV4ZWN1dGUgb25jZSB0aGUgbWVzc2Fn
ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gVGhlIHRpbWVvdXQgdmFsdWUgZG9lc24ndCBtYXR0ZXIs
IHNpbmNlIHRpbWVycyB3b24ndCBmaXJlIHVudGlsIHRoZSBtZXNzYWdlIHF1ZXVlIGlzIGNsZWFy
ZWQuCisgICAgICAgIHZhciB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBsb2coIkZBSUxVUkU6IFJlY2VpdmVkOiAiICsgaXRlbU51bSArICIgZXZlbnRzIC0gZXhw
ZWN0ZWQ6ICIgKyBudW1NZXNzYWdlcyk7CisgICAgICAgIH0sIDEwKTsKKyAgICAgICAgZXZ0Lm1l
c3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICB2YXIg
ZG9uZSA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gaXRlbU51bSkgewor
ICAgICAgICAgICAgICAgIGl0ZW1OdW0rKzsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbU51bSA9
PSBudW1NZXNzYWdlcykgeworICAgICAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MgLSByZWNl
aXZlZCAiICsgbnVtTWVzc2FnZXMgKyAiIG1lc3NhZ2VzLiIpOworICAgICAgICAgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGxvZygiRkFJTFVSRTogT3V0IG9mIG9yZGVyIG1lc3NhZ2U6IGV4cGVj
dGVkICM6ICIgKyBpdGVtTnVtICsgIiwgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICAg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsZWFy
VGltZW91dCh0aW1lcik7CisgICAgICAgICAgICBpZiAoZG9uZSkgeworICAgICAgICAgICAgICAg
IGdjKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXBvcnREb25lLCAxMDApOyAgLy8g
TWFrZSBzdXJlIG5vIHVuZXhwZWN0ZWQgZXZlbnRzIGNvbWUgaW4uCisgICAgICAgICAgICB9Cisg
ICAgICAgfQorICAgICAgICBldnQubWVzc2FnZVBvcnQuc3RhcnQoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91
dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KS4KKyAgICAgICAgdmFyIHMgPSBuZXcg
U3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CitmdW5jdGlvbiByZXBvcnREb25lKCkKK3sKKyAgICAg
bG9nKCJET05FIik7CisgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci1jbG9uZXBvcnQuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItY2xvbmVwb3J0Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY1ZDJjNjMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci1jbG9uZXBvcnQuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBA
Ci08Ym9keT4KLTxwPlRlc3QgTWVzc2FnZVBvcnQgbWVzc2FnaW5nL2VudGFuZ2xlL2RldGFuZ2xl
IGFjcm9zcyB0aHJlYWRzLiBTaG91bGQgcHJpbnQgIlNVQ0NFU1MiIHdoZW4gZG9uZS48L3A+Ci08
ZGl2IGlkPXJlc3VsdD48L2Rpdj4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsK
LSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3Nh
Z2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsKCk7Ci12YXIgbnVtTWVzc2FnZXMgPSA1MDAwMDsKLQotLy8gQ3JlYXRlIGEgY2hhbm5l
bCB3aGljaCB3ZSB3aWxsIHVzZSB0byBjbG9uZSBhbmQgcmUtY2xvbmUgb25lIGVuZCBvZiBhCi0v
LyBNZXNzYWdlQ2hhbm5lbC4KLXZhciBjbG9uZUNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwo
KTsKLXZhciBzdG9wQ2xvbmluZyA9IGZhbHNlOwotY2xvbmVDaGFubmVsLnBvcnQxLm9ubWVzc2Fn
ZSA9IGNsb25lQ2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSByZXNlbmRQb3J0OwotY2xvbmVDaGFu
bmVsLnBvcnQxLnN0YXJ0KCk7Ci1jbG9uZUNoYW5uZWwucG9ydDIuc3RhcnQoKTsKLWNsb25lQ2hh
bm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiIiwgY2hhbm5lbC5wb3J0Mik7Ci0KLS8vIENyZWF0ZSB3
b3JrZXIgd2l0aCBvdGhlciBlbmQgb2YgcG9ydCBhbmQgaGF2ZSBpdCBzZW5kIG1lc3NhZ2VzIGJh
Y2sgdG8gdXMKLS8vIHdoaWxlIHdlIGNsb25lIG91ciBlbmQgb2YgdGhlIHBvcnQgcmVwZWF0ZWRs
eS4KLXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWNsb25lcG9ydC5q
cyIpOwotd29ya2VyLnBvc3RNZXNzYWdlKCJwb3N0QmFjayAiICsgbnVtTWVzc2FnZXMsIGNoYW5u
ZWwucG9ydDEpOwotCi0vLyBUZXN0IHBvc3RpbmcgYmFjayA1MDAwMCBtZXNzYWdlcywgbWFrZSBz
dXJlIG9yZGVyaW5nIGlzIGZpbmUKLXdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsK
LSAgICBpZiAoZXZ0LmRhdGEgPT0gInBvc3RCYWNrRG9uZSIpIHsKLSAgICAgICAgc3RvcENsb25p
bmcgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIExvZyBtZXNzYWdlIGZyb20gd29y
a2VyCi0gICAgICAgIGxvZyhldnQuZGF0YSk7Ci0gICAgfQotfQotCi0vLyBLZWVwIGNsb25pbmcg
dGhlIHBhc3NlZCBwb3J0IHVudGlsIHdlJ3JlIHRvbGQgdG8gc3RvcC4KLXZhciBudW1DbG9uZXMg
PSAwOwotZnVuY3Rpb24gcmVzZW5kUG9ydChldnQpCi17Ci0gICAgaWYgKCFzdG9wQ2xvbmluZykg
ewotICAgICAgICBudW1DbG9uZXMrKzsKLSAgICAgICAgZXZ0LnRhcmdldC5wb3N0TWVzc2FnZSgi
IiwgZXZ0Lm1lc3NhZ2VQb3J0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAobnVtQ2xvbmVz
IDwgMTAwMCkgewotICAgICAgICAgICAgLy8gSWYgd2UgZGlkbid0IGNsb25lIGF0IGxlYXN0IDEw
MDAgdGltZXMsIHRoZW4gdGhlcmUncyBzb21ldGhpbmcgYW1pc3MuCi0gICAgICAgICAgICBsb2co
IkZBSUw6IHBvc3RCYWNrIGNvbXBsZXRlLCBidXQgb25seSBjbG9uZWQgIiArIG51bUNsb25lcyAr
ICIgdGltZXMuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIlBBU1M6IHBv
c3RCYWNrIGNvbXBsZXRlLCBjbG9uZWQgPiAxMDAwIHRpbWVzLiIpOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgbWVzc2FnZXMgYXJyaXZlZCBpbiBvcmRlci4KLSAgICAgICAg
dmFyIGl0ZW1OdW0gPSAwOwotICAgICAgICAvLyBRdWV1ZSB1cCBhIHRhc2sgdG8gZXhlY3V0ZSBv
bmNlIHRoZSBtZXNzYWdlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLiBUaGUgdGltZW91dCB2YWx1ZSBk
b2Vzbid0IG1hdHRlciwgc2luY2UgdGltZXJzIHdvbid0IGZpcmUgdW50aWwgdGhlIG1lc3NhZ2Ug
cXVldWUgaXMgY2xlYXJlZC4KLSAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlv
bigpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTFVSRTogUmVjZWl2ZWQ6ICIgKyBpdGVtTnVtICsg
IiBldmVudHMgLSBleHBlY3RlZDogIiArIG51bU1lc3NhZ2VzKTsKLSAgICAgICAgfSwgMTApOwot
ICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgICAgIHZhciBkb25lID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9
PSBpdGVtTnVtKSB7Ci0gICAgICAgICAgICAgICAgaXRlbU51bSsrOwotICAgICAgICAgICAgICAg
IGlmIChpdGVtTnVtID09IG51bU1lc3NhZ2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvZygi
U1VDQ0VTUyAtIHJlY2VpdmVkICIgKyBudW1NZXNzYWdlcyArICIgbWVzc2FnZXMuIik7Ci0gICAg
ICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJGQUlMVVJFOiBPdXQgb2Ygb3JkZXIg
bWVzc2FnZTogZXhwZWN0ZWQgIzogIiArIGl0ZW1OdW0gKyAiLCByZWNlaXZlZDogIiArIGV2ZW50
LmRhdGEpOwotICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTsKLSAgICAgICAgICAgIGlmIChkb25lKSB7Ci0g
ICAgICAgICAgICAgICAgZ2MoKTsKLSAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KHJlcG9ydERv
bmUsIDEwMCk7ICAvLyBNYWtlIHN1cmUgbm8gdW5leHBlY3RlZCBldmVudHMgY29tZSBpbi4KLSAg
ICAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgICAgIGV2dC5tZXNzYWdlUG9ydC5zdGFydCgpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVy
KQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZG
IHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpLgotICAgICAg
ICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLWZ1bmN0aW9uIHJlcG9ydERv
bmUoKQotewotICAgICBsb2coIkRPTkUiKTsKLSAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0K
LQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWdjLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0LWdjLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDhjOTdhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbApAQCAtMCwwICsxLDU4IEBACis8
Ym9keT4KKzxwPlRlc3QgdGhhdCB3b3JrZXJzIHN0YXkgcmVhY2hhYmxlIHZpYSBtZXNzYWdlIHBv
cnRzLgorU2hvdWxkIHByaW50ICJET05FIiB3aGVuIGRvbmUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+
PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwor
fQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworLy8gVGVzdCB0aGF0IHdvcmtlcnMgc3RheSBhbGl2ZSBldmVuIHRob3Vn
aCB0aGV5IGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgbWVzc2FnZSBwb3J0cy4KK3ZhciB3b3JrZXIg
PSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLW1lc3NhZ2Vwb3J0LmpzIik7Cit2YXIgY2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOword29ya2VyLnBvc3RNZXNzYWdlKCJwb3J0Iiwg
Y2hhbm5lbC5wb3J0MSk7Cit3b3JrZXIgPSAwOworCitjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdl
KCJwaW5nIik7CitjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAg
IC8vIE90aGVyIHNpZGUgaXMgcnVubmluZywgbm93IGZvcmNlIGEgR0MsIHdhaXQgYSBiaXQsIGFu
ZCBzZW5kIGEgbmV3IG1lc3NhZ2UgdG8gbWFrZSBzdXJlIGl0IGFycml2ZXMuCisgICAgZ2MoKTsK
KyAgICBzZXRUaW1lb3V0KHRlc3RSZWFjaGFibGUsIDEwMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RS
ZWFjaGFibGUoKQoreworICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0
KSB7CisgICAgICAgIGxvZygiUEFTUzogV29ya2VyIGlzIHJlYWNoYWJsZS4iKTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKyAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJwaW5nIik7Cit9
CisKK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAg
ICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyBpKyspIHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJl
cyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9
IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworZnVuY3Rpb24gZG9uZSgpCit7CisgICAg
bG9nKCJET05FIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci1tZXNzYWdlcG9ydC1nYy5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1nYy5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0OGM5N2E1Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2MuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBA
IC0xLDU4ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IHdvcmtlcnMgc3RheSByZWFjaGFi
bGUgdmlhIG1lc3NhZ2UgcG9ydHMuCi1TaG91bGQgcHJpbnQgIkRPTkUiIHdoZW4gZG9uZS48L3A+
Ci08ZGl2IGlkPXJlc3VsdD48L2Rpdj4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkK
LXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1l
c3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi0vLyBUZXN0IHRoYXQgd29ya2VycyBzdGF5
IGFsaXZlIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIG9ubHkgcmVhY2hhYmxlIHZpYSBtZXNzYWdlIHBv
cnRzLgotdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItbWVzc2FnZXBv
cnQuanMiKTsKLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Ci13b3JrZXIucG9z
dE1lc3NhZ2UoInBvcnQiLCBjaGFubmVsLnBvcnQxKTsKLXdvcmtlciA9IDA7Ci0KLWNoYW5uZWwu
cG9ydDIucG9zdE1lc3NhZ2UoInBpbmciKTsKLWNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZ0KSB7Ci0gICAgLy8gT3RoZXIgc2lkZSBpcyBydW5uaW5nLCBub3cgZm9yY2UgYSBH
Qywgd2FpdCBhIGJpdCwgYW5kIHNlbmQgYSBuZXcgbWVzc2FnZSB0byBtYWtlIHN1cmUgaXQgYXJy
aXZlcy4KLSAgICBnYygpOwotICAgIHNldFRpbWVvdXQodGVzdFJlYWNoYWJsZSwgMTAwKTsKLX0K
LQotZnVuY3Rpb24gdGVzdFJlYWNoYWJsZSgpCi17Ci0gICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgbG9nKCJQQVNTOiBXb3JrZXIgaXMgcmVhY2hh
YmxlLiIpOwotICAgICAgICBkb25lKCk7Ci0gICAgfQotICAgIGNoYW5uZWwucG9ydDIucG9zdE1l
c3NhZ2UoInBpbmciKTsKLX0KLQotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0ND
b250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJiYWdlIGNvbGxl
Y3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3Qp
Ci0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlv
biBkb25lKCkKLXsKLSAgICBsb2coIkRPTkUiKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19
Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzJhNmViYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbApAQCAtMCwwICsxLDk4IEBACis8Ym9keT4K
KzxwPlRlc3QgdGhhdCBwYWdlcyBhbmQgd29ya2VycyBjYW4gc2VuZCBNZXNzYWdlUG9ydHMgdG8g
b25lIGFub3RoZXIuCitTaG91bGQgcHJpbnQgIkRPTkUiIHdoZW4gZG9uZS48L3A+Cis8ZGl2IGlk
PXJlc3VsdD48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2Vz
L3dvcmtlci1tZXNzYWdlcG9ydC5qcyIpOwordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWwoKTsKKworLy8gU2VuZCBtZXNzYWdlcyB3aXRoIGFuZCB3aXRob3V0IHBvcnRzIHRvIHRoZSB3
b3JrZXIgdG8gbWFrZSBzdXJlIGl0IGdldHMgdGhlbS4KK3dvcmtlci5wb3N0TWVzc2FnZSgibm9w
b3J0Iik7Cit3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgbG9nKGV2dC5k
YXRhKTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInBvcnQiLCBjaGFubmVsLnBvcnQxKTsKKyAg
ICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZyhldnQuZGF0
YSk7CisgICAgfQorfTsKKworLy8gU2VuZCBhIG1lc3NhZ2Ugb24gdGhlIG5ldyBwb3J0IHRvIG1h
a2Ugc3VyZSBpdCBnZXRzIHRvIHRoZSB3b3JrZXIuCitjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdl
KCJwaW5nIik7CisKKy8vIFdhaXQgZm9yIHRoZSByZXNwb25zZS4KK2NoYW5uZWwucG9ydDIub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIikgewor
ICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIHJlc3BvbnNlIGZyb20gV29ya2VyIHZpYSBNZXNz
YWdlUG9ydCIpOworICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gYXdhaXRQb3J0RnJvbVdvcmtl
cjsKKyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJnZXRwb3J0Iik7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmtub3duIGV2ZW50OiAiICsgZXZ0LmRhdGEp
OworICAgIH0KK30KK2NoYW5uZWwucG9ydDIuc3RhcnQoKTsKKworLy8gSW52b2tlZCBvbmNlIHRo
ZSBmaXJzdCBiYXRjaCBvZiB0ZXN0cyBhcmUgZG9uZSwgdG8gdGVzdCBzZW5kaW5nIGZyb20gdGhl
IHdvcmtlci4KK2Z1bmN0aW9uIGF3YWl0UG9ydEZyb21Xb3JrZXIoZXZ0KQoreworICAgIGlmIChl
dnQuZGF0YSA9PSAicG9ydCIpIHsKKyAgICAgICAgaWYgKCFldnQubWVzc2FnZVBvcnQpIHsKKyAg
ICAgICAgICAgIGxvZygiRkFJTDogRGlkIG5vdCBnZXQgcG9ydCBmcm9tIHdvcmtlciIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nKCJQQVNTOiBHb3QgcG9ydCBmcm9tIHdvcmtl
ciIpOworICAgICAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7Cisg
ICAgICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIikgeworICAgICAgICAgICAgICAg
ICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIGZpbmFsIHJlc3BvbnNlIGZyb20gd29ya2VyIik7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBH
b3QgdW5leHBlY3RlZCByZXNwb25zZTogIiArIGV2dC5kYXRhKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgc3RhcnRTcGFtVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnN0YXJ0KCk7CisgICAgICAgIH0KKyAgICB9IGVsc2Ugewor
ICAgICAgICBsb2coZXZ0LmRhdGEpOworICAgIH0KK30KKworZnVuY3Rpb24gc3RhcnRTcGFtVGVz
dCgpCit7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKKyAgICB3b3Jr
ZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKCkgeyBnb3RTcGFtKGNoYW5uZWwucG9ydDEpOyB9Cisg
ICAgd29ya2VyLnBvc3RNZXNzYWdlKCJzcGFtIiwgY2hhbm5lbC5wb3J0Mik7Cit9CisKK2Z1bmN0
aW9uIGdvdFNwYW0ocG9ydCkKK3sKKyAgICB2YXIgc3BhbUNvdW50ID0gMDsKKyAgICBwb3J0Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgIT0gc3BhbUNv
dW50KQorICAgICAgICAgICAgbG9nKCJGQUlMOiBHb3Qgb3V0IG9mIG9yZGVyIG1lc3NhZ2U6ICIg
KyBzcGFtQ291bnQpOworICAgICAgICBzcGFtQ291bnQrKzsKKyAgICAgICAgaWYgKHNwYW1Db3Vu
dCA9PSAxMDAwKSB7CisgICAgICAgICAgICBsb2coIlBBU1M6IEdvdCAxMDAwIG1lc3NhZ2VzIik7
CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Z1bmN0aW9uIGRv
bmUoKQoreworICAgIGxvZygiRE9ORSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGMyYTZlYmIuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwK
QEAgLTEsOTggKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgcGFnZXMgYW5kIHdvcmtlcnMg
Y2FuIHNlbmQgTWVzc2FnZVBvcnRzIHRvIG9uZSBhbm90aGVyLgotU2hvdWxkIHByaW50ICJET05F
IiB3aGVuIGRvbmUuPC9wPgotPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Ci08c2NyaXB0PgotZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotdmFyIHdvcmtl
ciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItbWVzc2FnZXBvcnQuanMiKTsKLXZhciBj
aGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Ci0KLS8vIFNlbmQgbWVzc2FnZXMgd2l0aCBh
bmQgd2l0aG91dCBwb3J0cyB0byB0aGUgd29ya2VyIHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHRoZW0u
Ci13b3JrZXIucG9zdE1lc3NhZ2UoIm5vcG9ydCIpOwotd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGV2dCkgewotICAgIGxvZyhldnQuZGF0YSk7Ci0gICAgd29ya2VyLnBvc3RNZXNzYWdlKCJw
b3J0IiwgY2hhbm5lbC5wb3J0MSk7Ci0gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgewotICAgICAgICBsb2coZXZ0LmRhdGEpOwotICAgIH0KLX07Ci0KLS8vIFNlbmQgYSBtZXNz
YWdlIG9uIHRoZSBuZXcgcG9ydCB0byBtYWtlIHN1cmUgaXQgZ2V0cyB0byB0aGUgd29ya2VyLgot
Y2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgicGluZyIpOwotCi0vLyBXYWl0IGZvciB0aGUgcmVz
cG9uc2UuCi1jaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgIGlm
IChldnQuZGF0YSA9PSAicG9uZyIpIHsKLSAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCByZXNw
b25zZSBmcm9tIFdvcmtlciB2aWEgTWVzc2FnZVBvcnQiKTsKLSAgICAgICAgd29ya2VyLm9ubWVz
c2FnZSA9IGF3YWl0UG9ydEZyb21Xb3JrZXI7Ci0gICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgi
Z2V0cG9ydCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGxvZygiRkFJTDogUmVjZWl2ZWQgdW5r
bm93biBldmVudDogIiArIGV2dC5kYXRhKTsKLSAgICB9Ci19Ci1jaGFubmVsLnBvcnQyLnN0YXJ0
KCk7Ci0KLS8vIEludm9rZWQgb25jZSB0aGUgZmlyc3QgYmF0Y2ggb2YgdGVzdHMgYXJlIGRvbmUs
IHRvIHRlc3Qgc2VuZGluZyBmcm9tIHRoZSB3b3JrZXIuCi1mdW5jdGlvbiBhd2FpdFBvcnRGcm9t
V29ya2VyKGV2dCkKLXsKLSAgICBpZiAoZXZ0LmRhdGEgPT0gInBvcnQiKSB7Ci0gICAgICAgIGlm
ICghZXZ0Lm1lc3NhZ2VQb3J0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgZ2V0
IHBvcnQgZnJvbSB3b3JrZXIiKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxvZygi
UEFTUzogR290IHBvcnQgZnJvbSB3b3JrZXIiKTsKLSAgICAgICAgICAgIGV2dC5tZXNzYWdlUG9y
dC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAgICAgICAgICAgZXZ0Lm1lc3NhZ2VQb3J0Lm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICAgICAgICAgIGlmIChldnQuZGF0YSA9PSAi
cG9uZyIpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBmaW5hbCBy
ZXNwb25zZSBmcm9tIHdvcmtlciIpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGxvZygiRkFJTDogR290IHVuZXhwZWN0ZWQgcmVzcG9uc2U6ICIgKyBldnQu
ZGF0YSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXJ0U3BhbVRlc3Qo
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGV2dC5tZXNzYWdlUG9ydC5zdGFydCgpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbG9nKGV2dC5kYXRhKTsKLSAgICB9Ci19
Ci0KLWZ1bmN0aW9uIHN0YXJ0U3BhbVRlc3QoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1l
c3NhZ2VDaGFubmVsKCk7Ci0gICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uICgpIHsgZ290
U3BhbShjaGFubmVsLnBvcnQxKTsgfQotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgic3BhbSIsIGNo
YW5uZWwucG9ydDIpOwotfQotCi1mdW5jdGlvbiBnb3RTcGFtKHBvcnQpCi17Ci0gICAgdmFyIHNw
YW1Db3VudCA9IDA7Ci0gICAgcG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAg
ICAgaWYgKGV2dC5kYXRhICE9IHNwYW1Db3VudCkKLSAgICAgICAgICAgIGxvZygiRkFJTDogR290
IG91dCBvZiBvcmRlciBtZXNzYWdlOiAiICsgc3BhbUNvdW50KTsKLSAgICAgICAgc3BhbUNvdW50
Kys7Ci0gICAgICAgIGlmIChzcGFtQ291bnQgPT0gMTAwMCkgewotICAgICAgICAgICAgbG9nKCJQ
QVNTOiBHb3QgMTAwMCBtZXNzYWdlcyIpOwotICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBsb2coIkRPTkUiKTsKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYjUw
NWI2Li5iMDE0NTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACis8PDw8PDw8IEhFQUQ6V2ViQ29yZS9DaGFuZ2VM
b2cKKzIwMDktMDctMDEgIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MDMKKworICAgICAgICBUdXJuZWQgb24gQ0hB
Tk5FTF9NRVNTQUdJTkcgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBNZXNzYWdlQ2hhbm5lbCBBUEkK
KyAgICAgICAgY2FuIG5vdyBiZSBpbXBsZW1lbnRlZCBmb3IgV2ViIFdvcmtlcnMgYW5kIGlzIHJl
YXNvbmFibHkgc3RhYmxlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNo
YW5uZWwtZ2MtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5u
ZWwtZ2MtMy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwt
Z2MtNC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2Mu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVy
LWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtY2xvbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbm8td3JhcHBlci5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC93b3JrZXJzL3dvcmtlci1jbG9uZXBvcnQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1nYy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vwb3J0Lmh0bWwKKworICAgICAgICAqIENvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICBUdXJuZWQgb24gRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HLgorCiAyMDA5LTA3LTA2ICBFcmljIENhcmxzb24gIDxlcmljLmNh
cmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcg
Yi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGUx
MzIyYjcuLmJlOTZkMjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQAogRU5BQkxFXzNEX1JFTkRFUklORyA9ICQo
RU5BQkxFXzNEX1JFTkRFUklOR18kKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVOQUJMRV8z
RF9SRU5ERVJJTkdfMTA2MCA9IEVOQUJMRV8zRF9SRU5ERVJJTkc7CiAKLUVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORyA9IDsKK0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORzsKIEVOQUJMRV9EQVRBQkFTRSA9IEVOQUJMRV9EQVRBQkFTRTsKIEVOQUJMRV9E
QVRBR1JJRCA9IEVOQUJMRV9EQVRBR1JJRDsKIEVOQUJMRV9ET01fU1RPUkFHRSA9IEVOQUJMRV9E
T01fU1RPUkFHRTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZUNv
bW1vbi52c3Byb3BzIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJv
cHMKaW5kZXggYWU2N2FhNy4uZDM0YjQ5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlQ29tbW9uLnZzcHJvcHMKQEAgLTgsNyArOCw3IEBACiAJPFRvb2wNCiAJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQogCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsk
KFByb2plY3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cYWNjZXNzaWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
YWNjZXNzaWJpbGl0eVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRpdGluZyZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5k
ZXJpbmdcc3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRv
bVxkZWZhdWx0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxoaXN0b3J5JnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxodG1sJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxpbnNwZWN0
b3ImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlciZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyXGFwcGNhY2hlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2Fk
ZXJcYXJjaGl2ZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmVcY2Ym
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxpY29uJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwYWdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwYWdlXGFuaW1hdGlv
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxh
bmltYXRpb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxwbGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxuZXR3b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2YmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3NcdHJhbnNmb3JtcyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm1cZ3JhcGhpY3Ncd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3NcZmlsdGVycyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cc3ZnJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx3bWwmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHdvcmtlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxp
bmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxpY29u
diZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxzcWxpdGUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJp
bGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29y
ZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0aWJpbGl0eSZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGFuaW1hdGlvbiZxdW90OyINCi0JCVByZXByb2Nl
c3NvckRlZmluaXRpb25zPSJfX1dJTjMyX187V0VCQ09SRV9DT05URVhUX01FTlVTO0VOQUJMRV9E
QVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFU
QUJBU0U7RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9T
VkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9Y
UEFUSDtFTkFCTEVfWFNMVCINCisJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1dJTjMyX187
V0VCQ09SRV9DT05URVhUX01FTlVTO0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORztFTkFCTEVfREFU
QUJBU0U7RU5BQkxFX0RBVEFHUklEO0VOQUJMRV9ET01fU1RPUkFHRTtFTkFCTEVfSUNPTkRBVEFC
QVNFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZH
X0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVDtFTkFCTEVfU1ZHX1VTRTtFTkFCTEVfV09SS0VSUztFTkFCTEVfWFBB
VEg7RU5BQkxFX1hTTFQiDQogCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCVByZWNvbXBp
bGVkSGVhZGVyVGhyb3VnaD0iV2ViQ29yZVByZWZpeC5oIg0KIAkJRm9yY2VkSW5jbHVkZUZpbGVz
PSJXZWJDb3JlUHJlZml4LmgiDQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9i
dWlsZC1nZW5lcmF0ZWQtZmlsZXMuc2ggYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdl
bmVyYXRlZC1maWxlcy5zaAppbmRleCA3NTY3NDFhLi43MjVjYTM4IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaApAQCAtNjUsNSArNjUsNSBA
QCBta2RpciAtcCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzIgogY2QgIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcyIKIAogZXhwb3J0IFdlYkNvcmU9IiR7
WFNSQ1JPT1R9IgotZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJM
RV9EQVRBR1JJRCBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxFX0lDT05EQVRBQkFTRSBFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJM
RV9TVkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZH
X0ZPTlRTIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1ZJ
REVPIEVOQUJMRV9XT1JLRVJTIEVOQUJMRV9YUEFUSCBFTkFCTEVfWFNMVCIKK2V4cG9ydCBGRUFU
VVJFX0RFRklORVM9IkVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyBFTkFCTEVfREFUQUJBU0UgRU5B
QkxFX0RBVEFHUklEIEVOQUJMRV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgRU5B
QkxFX1NWRyBFTkFCTEVfU1ZHX0FOSU1BVElPTiBFTkFCTEVfU1ZHX0FTX0lNQUdFIEVOQUJMRV9T
VkdfRk9OVFMgRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCBFTkFCTEVfU1ZHX1VTRSBFTkFCTEVf
VklERU8gRU5BQkxFX1dPUktFUlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9YU0xUIgogbWFrZSAtZiAi
JFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSIgLWogJHtOVU1DUFVTfSB8fCBleGl0IDEKZGlm
ZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5k
ZXggYzA0YWE0Ny4uZDE3ZjNkNSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wNy0wMSAgRHJl
dyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNjkwMworCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NBR0lORyBieSBk
ZWZhdWx0IGJlY2F1c2UgdGhlIE1lc3NhZ2VDaGFubmVsIEFQSQorICAgICAgICBjYW4gbm93IGJl
IGltcGxlbWVudGVkIGZvciBXZWIgV29ya2VycyBhbmQgaXMgcmVhc29uYWJseSBzdGFibGUuCisK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAw
OS0wNy0wNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9Db25m
aWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1dlYktpdC9tYWMvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTEzMjJiNy4uYmU5NmQyNSAxMDA2
NDQKLS0tIGEvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZworKysgYi9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CkBAIC0zMCw3ICszMCw3IEBACiBFTkFCTEVfM0RfUkVOREVSSU5HID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HXyQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxFXzNEX1JFTkRFUklOR18x
MDYwID0gRU5BQkxFXzNEX1JFTkRFUklORzsKIAotRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0g
OworRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwog
RU5BQkxFX0RBVEFCQVNFID0gRU5BQkxFX0RBVEFCQVNFOwogRU5BQkxFX0RBVEFHUklEID0gRU5B
QkxFX0RBVEFHUklEOwogRU5BQkxFX0RPTV9TVE9SQUdFID0gRU5BQkxFX0RPTV9TVE9SQUdFOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpp
bmRleCBiMTRlMTE0Li5jMzNhNTUwIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZwor
KysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDA5LTA3LTA4ICBE
cmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2OTAzCisKKyAgICAgICAgVHVybmVkIG9uIENIQU5ORUxfTUVTU0FHSU5HIGJ5
IGRlZmF1bHQgYmVjYXVzZSB0aGUgTWVzc2FnZUNoYW5uZWwgQVBJCisgICAgICAgIGNhbiBub3cg
YmUgaW1wbGVtZW50ZWQgZm9yIFdlYiBXb3JrZXJzIGFuZCBpcyByZWFzb25hYmx5IHN0YWJsZS4K
KworICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qOgogMjAwOS0wNy0wMiAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnZj
cHJvaiBiL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCmluZGV4IDhlZTk3
NDkuLjkxZGQ2M2MgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQu
dmNwcm9qCisrKyBiL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCkBAIC00
MCw3ICs0MCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJ
CQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdE91dHB1dERpcilc
aW5jbHVkZVxXZWJLaXQmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNs
dWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XEluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0
aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0
aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7
OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBh
dGliaWxpdHlIZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNc
R05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJDb3JlU3VwcG9y
dCZxdW90OzsmcXVvdDskKEludERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcb2JqXFdlYktpdFxEZXJpdmVkU291cmNlcyZxdW90OyINCi0JCQkJUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0
O0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJM
RV9JQ09OREFUQUJBU0U7RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZH
O0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19GT05U
UztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9WSURFTztF
TkFCTEVfV09SS0VSUztFTkFCTEVfWFBBVEg7RU5BQkxFX1hTTFQiDQorCQkJCVByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPSJfVVNSRExMO1dFQktJVF9FWFBPUlRTO0ZSQU1FV09SS19OQU1FPVdlYktp
dDtFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJ
RDtFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NW
R19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5B
QkxFX1NWR19VU0U7RU5BQkxFX1ZJREVPO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFC
TEVfWFNMVCINCiAJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQogCQkJCVByZWNvbXBpbGVk
SGVhZGVyVGhyb3VnaD0iV2ViS2l0UHJlZml4LmgiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0i
V2ViS2l0UHJlZml4LmgiDQpAQCAtMTE2LDcgKzExNiw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIm
cXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJLaXQmcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXElu
Y2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENv
bXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRl
XENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25c
T1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKVwuLlxXZWJDb3JlU3VwcG9ydCZxdW90OzsmcXVvdDskKEludERpcilcaW5jbHVkZSZx
dW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcb2JqXFdlYktpdFxEZXJpdmVkU291cmNlcyZx
dW90OyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9S
VFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0O0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7
RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFUQUJBU0U7RU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdf
QVNfSU1BR0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJM
RV9TVkdfVVNFO0VOQUJMRV9WSURFTztFTkFCTEVfV09SS0VSUztFTkFCTEVfWFBBVEg7RU5BQkxF
X1hTTFQiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1dFQktJVF9FWFBP
UlRTO0ZSQU1FV09SS19OQU1FPVdlYktpdDtFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7RU5BQkxF
X0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05E
QVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxF
X1NWR19BTklNQVRJT047RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1ZJREVPO0VOQUJMRV9X
T1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNMVCINCiAJCQkJVXNlUHJlY29tcGlsZWRIZWFk
ZXI9IjIiDQogCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iV2ViS2l0UHJlZml4LmgiDQog
CQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iV2ViS2l0UHJlZml4LmgiDQpAQCAtMTkxLDcgKzE5MSw3
IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxX
ZWJLaXQmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNv
cmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXElu
Y2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1
dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVc
aWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1
b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENv
bXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNs
dWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlI
ZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0
aWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJDb3JlU3VwcG9ydCZxdW90Ozsm
cXVvdDskKEludERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcb2Jq
XFdlYktpdFxEZXJpdmVkU291cmNlcyZxdW90OyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0O0VOQUJMRV9E
QVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFU
QUJBU0U7RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9T
VkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9WSURFTztFTkFCTEVfV09S
S0VSUztFTkFCTEVfWFBBVEg7RU5BQkxFX1hTTFQiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRp
b25zPSJfVVNSRExMO1dFQktJVF9FWFBPUlRTO0ZSQU1FV09SS19OQU1FPVdlYktpdDtFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVf
RE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElD
QVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NWR19BU19JTUFH
RTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NWR19V
U0U7RU5BQkxFX1ZJREVPO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNMVCIN
CiAJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQogCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhy
b3VnaD0iV2ViS2l0UHJlZml4LmgiDQogCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVt
cz0iZmFsc2UiDQpAQCAtMjY5LDcgKzI2OSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsk
KFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxXZWJLaXQmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVy
cyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJ
bmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGli
aWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXENvcmVG
b3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29t
cGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpXC4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLlxXZWJDb3JlU3VwcG9ydCZxdW90OzsmcXVvdDskKEludERpcilcaW5jbHVkZSZxdW90Ozsm
cXVvdDskKFdlYktpdE91dHB1dERpcilcb2JqXFdlYktpdFxEZXJpdmVkU291cmNlcyZxdW90OyIN
Ci0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJB
TUVXT1JLX05BTUU9V2ViS2l0O0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxF
X0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFUQUJBU0U7RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdfQVNfSU1B
R0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdf
VVNFO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNMVCINCisJCQkJUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9
V2ViS2l0O0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORztFTkFCTEVfREFUQUJBU0U7RU5BQkxFX0RB
VEFHUklEO0VOQUJMRV9ET01fU1RPUkFHRTtFTkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFC
TEVfU1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVD
VDtFTkFCTEVfU1ZHX1VTRTtFTkFCTEVfV09SS0VSUztFTkFCTEVfWFBBVEg7RU5BQkxFX1hTTFQi
DQogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KIAkJCQlQcmVjb21waWxlZEhlYWRlclRo
cm91Z2g9IldlYktpdFByZWZpeC5oIg0KIAkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IldlYktpdFBy
ZWZpeC5oIg0KQEAgLTM0OCw3ICszNDgsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcV2ViS2l0JnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlJnF1
b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5j
bHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmls
aXR5SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxDb3JlRm91
bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBh
dGliaWxpdHlIZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cV2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7JChJbnREaXIpXGluY2x1ZGUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9ialxXZWJLaXRcRGVyaXZlZFNvdXJjZXMmcXVvdDsiDQot
CQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1dFQktJVF9FWFBPUlRTO0ZSQU1F
V09SS19OQU1FPVdlYktpdDtFTkFCTEVfREFUQUJBU0U7RU5BQkxFX0RBVEFHUklEO0VOQUJMRV9E
T01fU1RPUkFHRTtFTkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lNQUdF
O0VOQUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVDtFTkFCTEVfU1ZHX1VT
RTtFTkFCTEVfV09SS0VSUztFTkFCTEVfWFBBVEg7RU5BQkxFX1hTTFQiDQorCQkJCVByZXByb2Nl
c3NvckRlZmluaXRpb25zPSJfVVNSRExMO1dFQktJVF9FWFBPUlRTO0ZSQU1FV09SS19OQU1FPVdl
YktpdDtFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRB
R1JJRDtFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxF
X1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7
RU5BQkxFX1NWR19VU0U7RU5BQkxFX1dPUktFUlM7RU5BQkxFX1hQQVRIO0VOQUJMRV9YU0xUIg0K
IAkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJv
dWdoPSJXZWJLaXRQcmVmaXguaCINCiAJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSJXZWJLaXRQcmVm
aXguaCINCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKaW5kZXggOTkzMTEzYy4uYmE3ZDBjOSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDA5LTA3LTAxICBEcmV3IFdpbHNvbiAgPGF0d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTAzCisgICAgICAgIAorICAgICAgICBUdXJuZWQgb24g
Q0hBTk5FTF9NRVNTQUdJTkcgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBNZXNzYWdlQ2hhbm5lbCBB
UEkKKyAgICAgICAgY2FuIG5vdyBiZSBpbXBsZW1lbnRlZCBmb3IgV2ViIFdvcmtlcnMgYW5kIGlz
IHJlYXNvbmFibHkgc3RhYmxlLgorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisK
IDIwMDktMDctMDMgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXgg
YzI0MmZlNy4uNjY2N2RiYyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13
ZWJraXQKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTU2LDcgKzU2
LDcgQEAgbXkgQGZlYXR1cmVzID0gKAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfM0RfUkVOREVS
SU5HIiwgZGVmYXVsdCA9PiAoaXNBcHBsZU1hY1dlYktpdCgpICYmIGlzU25vd0xlb3BhcmQoKSks
IHZhbHVlID0+IFwkdGhyZWVEUmVuZGVyaW5nU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4g
ImNoYW5uZWwtbWVzc2FnaW5nIiwgZGVzYyA9PiAiVG9nZ2xlIE1lc3NhZ2VDaGFubmVsIGFuZCBN
ZXNzYWdlUG9ydCBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0NIQU5ORUxfTUVT
U0FHSU5HIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0
IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyIsIGRlZmF1bHQg
PT4gMSwgdmFsdWUgPT4gXCRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCB9LAogCiAgICAgeyBvcHRp
b24gPT4gImNvdmVyYWdlIiwgZGVzYyA9PiAiVG9nZ2xlIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydCIs
CiAgICAgICBkZWZpbmUgPT4gIiIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRjb3ZlcmFnZVN1
cHBvcnQgfSwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAz
YjJlZDg3Li5iM2Y0YTcyIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJl
LmFjCkBAIC0zMDksOCArMzA5LDggQEAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV8zRF90cmFuc2Zv
cm1zXSkKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgSFRNTDUgQ2hhbm5lbCBN
ZXNzYWdpbmcgc3VwcG9ydF0pCiBBQ19BUkdfRU5BQkxFKGNoYW5uZWxfbWVzc2FnaW5nLAogICAg
ICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtY2hhbm5lbC1tZXNzYWdpbmddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIEhUTUw1IGNoYW5uZWwgbWVzc2Fn
aW5nIHN1cHBvcnQgW2RlZmF1bHQ9bm9dXSksCi0gICAgICAgICAgICAgIFtdLFtlbmFibGVfY2hh
bm5lbF9tZXNzYWdpbmc9Im5vIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFi
bGUgSFRNTDUgY2hhbm5lbCBtZXNzYWdpbmcgc3VwcG9ydCBbZGVmYXVsdD15ZXNdXSksCisgICAg
ICAgICAgICAgIFtdLFtlbmFibGVfY2hhbm5lbF9tZXNzYWdpbmc9InllcyJdKQogQUNfTVNHX1JF
U1VMVChbJGVuYWJsZV9jaGFubmVsX21lc3NhZ2luZ10pCiAKICMgY2hlY2sgd2hldGhlciB0byBl
bmFibGUgSmF2YVNjcmlwdCBkZWJ1Z2dlci9wcm9maWxlciBzdXBwb3J0Cg==
</data>
<flag name="review"
          id="16894"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32523</attachid>
            <date>2009-07-09 10:43:31 -0700</date>
            <delta_ts>2009-07-09 14:20:09 -0700</delta_ts>
            <desc>Patch with enabled security test and removing merge conflict.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>97720</size>
            <attacher name="Andrew Wilson">atwilson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlNDQwMTIzLi5iNWIxY2Fk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDktMDctMDggIERyZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MDMKKworICAgICAgICBUdXJuZWQgb24gQ0hBTk5F
TF9NRVNTQUdJTkcgYnkgZGVmYXVsdCBiZWNhdXNlIHRoZSBNZXNzYWdlQ2hhbm5lbCBBUEkKKyAg
ICAgICAgY2FuIG5vdyBiZSBpbXBsZW1lbnRlZCBmb3IgV2ViIFdvcmtlcnMgYW5kIGlzIHJlYXNv
bmFibHkgc3RhYmxlLgorCisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDA5LTA3LTAzICBK
YW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFhhbiBMb3BleiBhbmQgR3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDVmM2Ex
NzUuLjc0Y2RmYjkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0wNy0wOCAgRHJl
dyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NBR0lORyBieSBk
ZWZhdWx0IGJlY2F1c2UgdGhlIE1lc3NhZ2VDaGFubmVsIEFQSQorICAgICAgICBjYW4gbm93IGJl
IGltcGxlbWVudGVkIGZvciBXZWIgV29ya2VycyBhbmQgaXMgcmVhc29uYWJseSBzdGFibGUuCisK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAw
OS0wNy0wNiAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlciBhbmQgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcgYi9KYXZhU2NyaXB0Q29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMmZiY2RkLi4w
M2M2MWVkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzAsNyArMzAsNyBAQAogRU5BQkxFXzNEX1JFTkRFUklO
RyA9ICQoRU5BQkxFXzNEX1JFTkRFUklOR18kKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKIEVO
QUJMRV8zRF9SRU5ERVJJTkdfMTA2MCA9IEVOQUJMRV8zRF9SRU5ERVJJTkc7CiAKLUVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORyA9IDsKK0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9D
SEFOTkVMX01FU1NBR0lORzsKIEVOQUJMRV9EQVRBQkFTRSA9IEVOQUJMRV9EQVRBQkFTRTsKIEVO
QUJMRV9ET01fU1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsKIEVOQUJMRV9GSUxURVJTID0g
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDkxYmE2ZWIuLjU4ZDEwNWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0w
Ny0wOCAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNjkwMworCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NB
R0lORyBieSBkZWZhdWx0LCByZS1lbmFibGVkIHRoZSB2YXJpb3VzIHRlc3RzLCBhbmQgdXBkYXRl
ZCBleHBlY3RlZCByZXN1bHRzLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9jb25zdHJ1Y3RvcnMt
Y2FjaGVkLW5hdmlnYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNz
YWdlLWNoYW5uZWwtZ2MtMi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1sOiBSZW5hbWVkIGZyb20gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTQuaHRtbC1kaXNhYmxlZC4K
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sLWRpc2Fi
bGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJj
dWxhci1vd25lcnNoaXAuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxl
ZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5odG1sLWRp
c2FibGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1m
b3ItZGVsZXRlZC1kb2N1bWVudC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwt
ZGlzYWJsZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9j
dW1lbnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
cG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwtZGlzYWJsZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0
bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5h
Y3RpdmUtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtbm8td3JhcHBlci5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbC1kaXNhYmxlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sLWRpc2FibGVkLgorICAgICAgICAqIGZhc3QvanMv
Z2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC93b3JrZXJz
L3dvcmtlci1jbG9uZXBvcnQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwtZGlzYWJsZWQuCisgICAgICAgICogZmFzdC93b3Jr
ZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1nYy5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1nYy5odG1sLWRpc2FibGVkLgorICAgICAg
ICAqIGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbC1kaXNhYmxlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0L2V2ZW50LWxpc3RlbmVy
LWNvbnRleHQuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC5odG1sLWRpc2FibGVkCisKIDIw
MDktMDctMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQKaW5kZXggMzU5
MzZjNy4uZjg5MWU0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CkBAIC0xMDI0LDggKzEwMjQsMTgg
QEAgd2luZG93Lk1lZGlhTGlzdC5wcm90b3R5cGUgW29iamVjdCBNZWRpYUxpc3RQcm90b3R5cGVd
CiB3aW5kb3cuTWVkaWFMaXN0LnByb3RvdHlwZS5hcHBlbmRNZWRpdW0gW2Z1bmN0aW9uXQogd2lu
ZG93Lk1lZGlhTGlzdC5wcm90b3R5cGUuZGVsZXRlTWVkaXVtIFtmdW5jdGlvbl0KIHdpbmRvdy5N
ZWRpYUxpc3QucHJvdG90eXBlLml0ZW0gW2Z1bmN0aW9uXQord2luZG93Lk1lc3NhZ2VDaGFubmVs
IFtvYmplY3QgTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcl0KK3dpbmRvdy5NZXNzYWdlQ2hhbm5l
bC5wcm90b3R5cGUgW29iamVjdCBNZXNzYWdlQ2hhbm5lbFByb3RvdHlwZV0KIHdpbmRvdy5NZXNz
YWdlRXZlbnQgW29iamVjdCBNZXNzYWdlRXZlbnRDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5NZXNzYWdl
RXZlbnQucHJvdG90eXBlIFtwcmludGVkIGFib3ZlIGFzIHdpbmRvdy5FdmVudC5wcm90b3R5cGVd
Cit3aW5kb3cuTWVzc2FnZVBvcnQgW29iamVjdCBNZXNzYWdlUG9ydENvbnN0cnVjdG9yXQord2lu
ZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZSBbb2JqZWN0IE1lc3NhZ2VQb3J0UHJvdG90eXBlXQor
d2luZG93Lk1lc3NhZ2VQb3J0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyIFtmdW5jdGlvbl0K
K3dpbmRvdy5NZXNzYWdlUG9ydC5wcm90b3R5cGUuY2xvc2UgW2Z1bmN0aW9uXQord2luZG93Lk1l
c3NhZ2VQb3J0LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50IFtmdW5jdGlvbl0KK3dpbmRvdy5NZXNz
YWdlUG9ydC5wcm90b3R5cGUucG9zdE1lc3NhZ2UgW2Z1bmN0aW9uXQord2luZG93Lk1lc3NhZ2VQ
b3J0LnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyIFtmdW5jdGlvbl0KK3dpbmRvdy5NZXNz
YWdlUG9ydC5wcm90b3R5cGUuc3RhcnQgW2Z1bmN0aW9uXQogd2luZG93Lk1pbWVUeXBlIFtvYmpl
Y3QgTWltZVR5cGVDb25zdHJ1Y3Rvcl0KIHdpbmRvdy5NaW1lVHlwZS5wcm90b3R5cGUgW29iamVj
dCBNaW1lVHlwZVByb3RvdHlwZV0KIHdpbmRvdy5NaW1lVHlwZUFycmF5IFtvYmplY3QgTWltZVR5
cGVBcnJheUNvbnN0cnVjdG9yXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vY29u
c3RydWN0b3JzLWNhY2hlZC1uYXZpZ2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9jb25zdHJ1Y3RvcnMtY2FjaGVkLW5hdmlnYXRlLWV4cGVjdGVkLnR4dAppbmRleCAxNGQ4
OWYzLi4yN2FmMTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3Rv
cnMtY2FjaGVkLW5hdmlnYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jb25zdHJ1Y3RvcnMtY2FjaGVkLW5hdmlnYXRlLWV4cGVjdGVkLnR4dApAQCAtNiw4ICs2LDgg
QEAgUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5JbWFnZSBpcyB0ZXN0RnJhbWUuY29udGVu
dFdpbmRvdy5JbWFnZQogUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5JbWFnZSAhPT0gd2lu
ZG93LkltYWdlIGlzIHRydWUKIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuSW1hZ2UudGVz
dFByb3BlcnR5IGlzICJwcm9wZXJ0eSBzZXQgc3VjY2Vzc2Z1bGx5IgogUEFTUyB0ZXN0RnJhbWUu
Y29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCBpcyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5N
ZXNzYWdlQ2hhbm5lbAotRkFJTCB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5l
bCAhPT0gd2luZG93Lk1lc3NhZ2VDaGFubmVsIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCi1G
QUlMIFRlc3RpbmcgTWVzc2FnZUNoYW5uZWwgdGhyZXcgVHlwZUVycm9yOiBSZXN1bHQgb2YgZXhw
cmVzc2lvbiAndGVzdEZyYW1lLmNvbnRlbnRXaW5kb3dbY29uc3RydWN0b3JdJyBbdW5kZWZpbmVk
XSBpcyBub3QgYW4gb2JqZWN0LgorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdl
Q2hhbm5lbCAhPT0gd2luZG93Lk1lc3NhZ2VDaGFubmVsIGlzIHRydWUKK1BBU1MgdGVzdEZyYW1l
LmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwudGVzdFByb3BlcnR5IGlzICJwcm9wZXJ0eSBz
ZXQgc3VjY2Vzc2Z1bGx5IgogUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5PcHRpb24gaXMg
dGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9uCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2lu
ZG93Lk9wdGlvbiAhPT0gd2luZG93Lk9wdGlvbiBpcyB0cnVlCiBQQVNTIHRlc3RGcmFtZS5jb250
ZW50V2luZG93Lk9wdGlvbi50ZXN0UHJvcGVydHkgaXMgInByb3BlcnR5IHNldCBzdWNjZXNzZnVs
bHkiCkBAIC0yNCwxMSArMjQsMTEgQEAgUEFTUyBzdG9yZWRDb25zdHJ1Y3RvcnMuSW1hZ2UudGVz
dFByb3BlcnR5IGlzICJwcm9wZXJ0eSBzZXQgc3VjY2Vzc2Z1bGx5IgogUEFTUyB0ZXN0RnJhbWUu
Y29udGVudFdpbmRvdy5JbWFnZS50ZXN0UHJvcGVydHkgaXMgdW5kZWZpbmVkLgogUEFTUyB0ZXN0
RnJhbWUuY29udGVudFdpbmRvdy5JbWFnZS5jYWNoZWRPbk93bmVyRG9jdW1lbnQgaXMgdHJ1ZQog
UEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCBpcyB0ZXN0RnJhbWUu
Y29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbAotRkFJTCB0ZXN0RnJhbWUuY29udGVudFdpbmRv
dy5NZXNzYWdlQ2hhbm5lbCAhPT0gd2luZG93Lk1lc3NhZ2VDaGFubmVsIHNob3VsZCBiZSB0cnVl
LiBXYXMgZmFsc2UuCi1GQUlMIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVs
ICE9PSBzdG9yZWRDb25zdHJ1Y3RvcnMuTWVzc2FnZUNoYW5uZWwgc2hvdWxkIGJlIHRydWUuIFdh
cyBmYWxzZS4KLUZBSUwgc3RvcmVkQ29uc3RydWN0b3JzLk1lc3NhZ2VDaGFubmVsLnRlc3RQcm9w
ZXJ0eSBzaG91bGQgYmUgcHJvcGVydHkgc2V0IHN1Y2Nlc3NmdWxseS4gVGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogUmVzdWx0IG9mIGV4cHJlc3Npb24gJ3N0b3JlZENvbnN0cnVjdG9ycy5NZXNz
YWdlQ2hhbm5lbCcgW3VuZGVmaW5lZF0gaXMgbm90IGFuIG9iamVjdC4KLUZBSUwgdGVzdEZyYW1l
LmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwudGVzdFByb3BlcnR5IHNob3VsZCBiZSB1bmRl
ZmluZWQuIFRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFJlc3VsdCBvZiBleHByZXNzaW9uICd0
ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCcgW3VuZGVmaW5lZF0gaXMgbm90
IGFuIG9iamVjdC4KLUZBSUwgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwu
Y2FjaGVkT25Pd25lckRvY3VtZW50IHNob3VsZCBiZSB0cnVlLiBUaHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBSZXN1bHQgb2YgZXhwcmVzc2lvbiAndGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVz
c2FnZUNoYW5uZWwnIFt1bmRlZmluZWRdIGlzIG5vdCBhbiBvYmplY3QuCitQQVNTIHRlc3RGcmFt
ZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsICE9PSB3aW5kb3cuTWVzc2FnZUNoYW5uZWwg
aXMgdHJ1ZQorUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCAhPT0g
c3RvcmVkQ29uc3RydWN0b3JzLk1lc3NhZ2VDaGFubmVsIGlzIHRydWUKK1BBU1Mgc3RvcmVkQ29u
c3RydWN0b3JzLk1lc3NhZ2VDaGFubmVsLnRlc3RQcm9wZXJ0eSBpcyAicHJvcGVydHkgc2V0IHN1
Y2Nlc3NmdWxseSIKK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwu
dGVzdFByb3BlcnR5IGlzIHVuZGVmaW5lZC4KK1BBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cu
TWVzc2FnZUNoYW5uZWwuY2FjaGVkT25Pd25lckRvY3VtZW50IGlzIHRydWUKIFBBU1MgdGVzdEZy
YW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9uIGlzIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk9wdGlv
bgogUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5PcHRpb24gIT09IHdpbmRvdy5PcHRpb24g
aXMgdHJ1ZQogUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5PcHRpb24gIT09IHN0b3JlZENv
bnN0cnVjdG9ycy5PcHRpb24gaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNjFlNWYwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPGJvZHk+Cis8cD5U
ZXN0IHRoYXQgTWVzc2FnZVBvcnQgY2xvc2UgZXZlbnQgZ2V0cyBkZWxpdmVyZWQgKHdpdGhvdXQg
Y3Jhc2hpbmcpIGV2ZW4gaWYgdGhlIGNoYW5uZWwgb2JqZWN0IGlzIGdhcmJhZ2UgY29sbGVjdGVk
LjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sKKyAg
ICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5j
b2xsZWN0KCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9y
Y2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBi
ZWZvcmUgYSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAg
IH0KK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KwordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisKK2djKCk7CitjaGFubmVsLnBv
cnQxLnN0YXJ0KCk7CitjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJtc2ciKTsKKworZ2MoKTsK
K2NoYW5uZWwucG9ydDEuY2xvc2UoKTsKK2NoYW5uZWwucG9ydDIuY2xvc2UoKTsKK2djKCk7CisK
K3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgbG9nKCJET05FIik7CisgICAgZ2MoKTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKK2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7CitnYygpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sLWRpc2FibGVkCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWU1ZjAxLi4wMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0bWwtZGlzYWJsZWQKKysrIC9k
ZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBNZXNzYWdlUG9y
dCBjbG9zZSBldmVudCBnZXRzIGRlbGl2ZXJlZCAod2l0aG91dCBjcmFzaGluZykgZXZlbiBpZiB0
aGUgY2hhbm5lbCBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuPC9wPgotPHByZSBpZD1sb2c+
PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250
cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rp
b24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0g
ICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBs
b2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJI
VE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgY2hhbm5lbCA9IG5l
dyBNZXNzYWdlQ2hhbm5lbDsKLQotZ2MoKTsKLWNoYW5uZWwucG9ydDEuc3RhcnQoKTsKLWNoYW5u
ZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOwotCi1nYygpOwotY2hhbm5lbC5wb3J0MS5jbG9z
ZSgpOwotY2hhbm5lbC5wb3J0Mi5jbG9zZSgpOwotZ2MoKTsKLQotc2V0VGltZW91dChmdW5jdGlv
bigpIHsKLSAgICBsb2coIkRPTkUiKTsKLSAgICBnYygpOwotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKLX0sIDApOwotY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLWdjKCk7Ci0KLTwvc2Ny
aXB0PgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1jaGFubmVsLWdjLTMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hh
bm5lbC1nYy0zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdlNDcx
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hh
bm5lbC1nYy0zLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgTWVz
c2FnZVBvcnQgbWVzc2FnZXMgYXJlIGRlbGl2ZXJlZCBldmVuIGlmIGJvdGggcG9ydHMgYXJlIGlu
YWNjZXNzaWJsZSBmcm9tIEpTIGFueSBtb3JlLjwvcD4KKzxwPlNob3VsZCBzYXkgUEFTUyB0d2lj
ZS48L3A+Cis8cHJlIGlkPWxvZz48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7Cisg
ICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIu
Y29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4g
Zm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9u
cyBiZWZvcmUgYSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKworZnVuY3Rpb24gdGVzdDEoKQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOworCisgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsg
bG9nKCJQQVNTOiBtZXNzYWdlIGRlbGl2ZXJlZC4gUG9ydDogIiArIGV2dC50YXJnZXQpOyB0ZXN0
MigpOyB9CisgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgibXNnIik7CisKKyAgICBjaGFu
bmVsID0gMDsKKyAgICBnYygpOworfQorCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAgdmFyIGNo
YW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisKKyAgICBjaGFubmVsLnBvcnQyLmNsb3NlKCk7
CisKKyAgICBjaGFubmVsID0gMDsKKyAgICBnYygpOworICAgIGxvZygiUEFTUzogcG9ydCBjbG9z
ZWQuIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit0ZXN0MSgpOworCis8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
Y2hhbm5lbC1nYy0zLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLWNoYW5uZWwtZ2MtMy5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiOTA2YWE2Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtY2hhbm5lbC1nYy0zLmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCww
IEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBtZXNzYWdlcyBhcmUgZGVsaXZl
cmVkIGV2ZW4gaWYgYm90aCBwb3J0cyBhcmUgaW5hY2Nlc3NpYmxlIGZyb20gSlMgYW55IG1vcmUu
PC9wPgotPHA+U2hvdWxkIHNheSBQQVNTIHR3aWNlLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgot
PHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
LSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZG
IHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAg
IHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVz
c2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0MSgpCi17Ci0g
ICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgCi0gICAgY2hhbm5lbC5w
b3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsgbG9nKCJQQVNTOiBtZXNzYWdlIGRlbGl2
ZXJlZC4gUG9ydDogIiArIGV2dC50YXJnZXQpOyB0ZXN0MigpOyB9Ci0gICAgY2hhbm5lbC5wb3J0
Mi5wb3N0TWVzc2FnZSgibXNnIik7Ci0gICAgCi0gICAgY2hhbm5lbCA9IDA7Ci0gICAgZ2MoKTsK
LX0KLQotZnVuY3Rpb24gdGVzdDIoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOwotICAgIAotICAgIGNoYW5uZWwucG9ydDIuY2xvc2UoKTsKLSAgICAKLSAgICBjaGFu
bmVsID0gMDsKLSAgICBnYygpOwotICAgIGxvZygiUEFTUzogcG9ydCBjbG9zZWQuIik7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi10ZXN0MSgpOwotCi08L3NjcmlwdD4KLTwvYm9keT4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy00
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZWE5ZjgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1s
CkBAIC0wLDAgKzEsNTggQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IE1lc3NhZ2VQb3J0IG1lc3Nh
Z2VzIGFyZSBkZWxpdmVyZWQgZXZlbiBpZiBib3RoIHBvcnRzIGFyZSBpbiB0cmFuc2l0IChjbG9u
ZWQpLjwvcD4KKzxwPlNob3VsZCBzYXkgUEFTUyB0d2ljZS48L3A+Cis8cHJlIGlkPWxvZz48L3By
ZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xs
ZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAo
RkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAg
ICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvZyht
ZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwg
Kz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QxKCkKK3sK
KyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICB2YXIgY2hhbm5lbDIg
PSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNn
MSIpOworICAgIGNoYW5uZWwyLnBvcnQxLnBvc3RNZXNzYWdlKCIiLCBjaGFubmVsLnBvcnQxKTsK
KyAgICBjaGFubmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiIiwgY2hhbm5lbC5wb3J0Mik7CisgICAg
Y2hhbm5lbDIucG9ydDIub25tZXNzYWdlID0gY2hhbm5lbDIucG9ydDEub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZ0KSB7CisgICAgICAgIGV2dC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gIm1zZzEiKSB7CisgICAg
ICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNlaXZlZCBtZXNzYWdlIHRvIGNsb25lZCBwb3J0LiIp
OworICAgICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2UoIm1zZzIiKTsKKyAgICAgICAgICAg
ICAgICBnYygpOworICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJtc2cyIikg
eworICAgICAgICAgICAgICAgIGxvZygiUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSBmcm9tIGNsb25l
ZCBwb3J0LiIpOworICAgICAgICAgICAgICAgIGdjKCk7CisgICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBsb2coIkZBSUw6IFJlY2VpdmVkIHVua25vd24gbWVzc2FnZTogIiArIGV2ZW50LmRh
dGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGV2dC5tZXNzYWdlUG9ydCA9
IDA7CisgICAgfQorICAgIGNoYW5uZWwgPSAwOworICAgIGNoYW5uZWwyID0gMDsKKyAgICBnYygp
OworfQorCit0ZXN0MSgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy00Lmh0bWwtZGlzYWJsZWQgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtNC5odG1sLWRpc2FibGVk
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWVhOWY4Li4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy00Lmh0bWwtZGlzYWJsZWQK
KysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBNZXNz
YWdlUG9ydCBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkIGV2ZW4gaWYgYm90aCBwb3J0cyBhcmUgaW4g
dHJhbnNpdCAoY2xvbmVkKS48L3A+Ci08cD5TaG91bGQgc2F5IFBBU1MgdHdpY2UuPC9wPgotPHBy
ZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5k
b3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsK
LQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyBmb3JjZSBnYXJiYWdl
IGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNv
bGxlY3QpCi0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1m
dW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9n
IikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlv
biB0ZXN0MSgpCi17Ci0gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAg
dmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIGNoYW5uZWwucG9ydDEucG9z
dE1lc3NhZ2UoIm1zZzEiKTsKLSAgICBjaGFubmVsMi5wb3J0MS5wb3N0TWVzc2FnZSgiIiwgY2hh
bm5lbC5wb3J0MSk7Ci0gICAgY2hhbm5lbDIucG9ydDIucG9zdE1lc3NhZ2UoIiIsIGNoYW5uZWwu
cG9ydDIpOwotICAgIGNoYW5uZWwyLnBvcnQyLm9ubWVzc2FnZSA9IGNoYW5uZWwyLnBvcnQxLm9u
bWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBldnQubWVzc2FnZVBvcnQub25tZXNz
YWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09ICJt
c2cxIikgewotICAgICAgICAgICAgICAgIGxvZygiUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSB0byBj
bG9uZWQgcG9ydC4iKTsKLSAgICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKCJtc2cyIik7
Ci0gICAgICAgICAgICAgICAgZ2MoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0
YSA9PSAibXNnMiIpIHsKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFJlY2VpdmVkIG1lc3Nh
Z2UgZnJvbSBjbG9uZWQgcG9ydC4iKTsKLSAgICAgICAgICAgICAgICBnYygpOwotICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBSZWNlaXZlZCB1bmtub3duIG1lc3NhZ2U6
ICIgKyBldmVudC5kYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBldnQu
bWVzc2FnZVBvcnQgPSAwOwotICAgIH0KLSAgICBjaGFubmVsID0gMDsKLSAgICBjaGFubmVsMiA9
IDA7Ci0gICAgZ2MoKTsKLX0KLQotdGVzdDEoKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYTEwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbApAQCAtMCwwICsx
LDUxIEBACis8Ym9keT4KKzxwPlRlc3Qgc29tZSBjYXNlcyBvZiBNZXNzYWdlUG9ydCBnYXJiYWdl
IGNvbGxlY3Rpb24uPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24g
Z2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0ND
b250cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsg
YWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5n
KCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsK
K30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Cit9CisKK3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworY2hhbm5l
bC5wb3J0MS5mb28gPSAiYmFyIjsKKworZ2MoKTsKK2xvZygiU2hvdWxkIGJlICdiYXInOiAiICsg
Y2hhbm5lbC5wb3J0MS5mb28pOworCitjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KCkgeyBsb2coIm9ubWVzc2FnZSIpOyB9CitjaGFubmVsLnBvcnQxLmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCBmdW5jdGlvbigpIHsgbG9nKCJtZXNzYWdlIGxpc3RlbmVyIik7IH0sIGZhbHNl
KTsKKworZ2MoKTsKK2NoYW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5uZWwucG9ydDIucG9zdE1l
c3NhZ2UoIm1zZyIpOworCitnYygpOworY2hhbm5lbC5wb3J0MS5jbG9zZSgpOworY2hhbm5lbC5w
b3J0Mi5jbG9zZSgpOworCitnYygpOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGxv
ZygiRE9ORSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKQorfSwgMCk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFu
bmVsLWdjLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNo
YW5uZWwtZ2MuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Fh
MTA4ZS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5u
ZWwtZ2MuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLTxib2R5
PgotPHA+VGVzdCBzb21lIGNhc2VzIG9mIE1lc3NhZ2VQb3J0IGdhcmJhZ2UgY29sbGVjdGlvbi48
L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBnYygpCi17Ci0gICAg
aWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29s
bGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9y
Y2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBi
ZWZvcmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAg
IH0KLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0K
LQotdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci1jaGFubmVsLnBvcnQxLmZvbyA9
ICJiYXIiOwotCi1nYygpOwotbG9nKCJTaG91bGQgYmUgJ2Jhcic6ICIgKyBjaGFubmVsLnBvcnQx
LmZvbyk7Ci0KLWNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7IGxvZygib25t
ZXNzYWdlIik7IH0KLWNoYW5uZWwucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1
bmN0aW9uKCkgeyBsb2coIm1lc3NhZ2UgbGlzdGVuZXIiKTsgfSwgZmFsc2UpOwotCi1nYygpOwot
Y2hhbm5lbC5wb3J0MS5zdGFydCgpOwotY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgibXNnIik7
Ci0KLWdjKCk7Ci1jaGFubmVsLnBvcnQxLmNsb3NlKCk7Ci1jaGFubmVsLnBvcnQyLmNsb3NlKCk7
Ci0KLWdjKCk7Ci0KLXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgbG9nKCJET05FIik7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpCi19LCAwKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXIt
Y2lyY3VsYXItb3duZXJzaGlwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3duZXJzaGlwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOWFhMjBiMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNo
aXAuaHRtbApAQCAtMCwwICsxLDMwIEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBhIGxlYWsgaXMg
bm90IGNyZWF0ZWQgYnkgYXNzaWduaW5nIGEgTWVzc2FnZVBvcnQgdG8gYSBwcm9wZXJ0eSBvZiBp
dHMgb3duIGxpc3RlbmVyLjwvcD4KKzxwPk9ubHkgd29ya3Mgd2l0aCBydW4td2Via2l0LXRlc3Rz
IC0tbGVha3MuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2Mo
KQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250
cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykg
eyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxs
b2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJh
YmMiKTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKKworY2hhbm5lbC5wb3J0MS5vbmNsb3NlID0gZnVuY3Rpb24oKSB7fQor
CitjaGFubmVsLnBvcnQxLm9uY2xvc2UuZm9vID0gY2hhbm5lbDsKK2NoYW5uZWwucG9ydDEub25j
bG9zZS5iYXIgPSBjaGFubmVsLnBvcnQxOworY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmJheiA9IGNo
YW5uZWwucG9ydDI7CisKK2NoYW5uZWwgPSBudWxsOworZ2MoKTsKKzwvc2NyaXB0PgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxp
c3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1s
LWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWEyMGIwLi4wMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1j
aXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDMwICsw
LDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IGEgbGVhayBpcyBub3QgY3JlYXRlZCBieSBhc3Np
Z25pbmcgYSBNZXNzYWdlUG9ydCB0byBhIHByb3BlcnR5IG9mIGl0cyBvd24gbGlzdGVuZXIuPC9w
PgotPHA+T25seSB3b3JrcyB3aXRoIHJ1bi13ZWJraXQtdGVzdHMgLS1sZWFrcy48L3A+Ci08cHJl
IGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBnYygpCi17Ci0gICAgaWYgKHdpbmRv
dy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwot
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFn
ZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBj
b2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotCi1j
aGFubmVsLnBvcnQxLm9uY2xvc2UgPSBmdW5jdGlvbigpIHt9Ci0KLWNoYW5uZWwucG9ydDEub25j
bG9zZS5mb28gPSBjaGFubmVsOwotY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmJhciA9IGNoYW5uZWwu
cG9ydDE7Ci1jaGFubmVsLnBvcnQxLm9uY2xvc2UuYmF6ID0gY2hhbm5lbC5wb3J0MjsKLQotY2hh
bm5lbCA9IG51bGw7Ci1nYygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmE4MThhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xvbmUuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPGJv
ZHk+Cis8cD5UZXN0cyB2YXJpb3VzIHVzZSBjYXNlcyB3aGVuIGNsb25pbmcgTWVzc2FnZVBvcnRz
LjwvcD4KKzxwPlNob3VsZCBiZSBhIHNlcmllcyBvZiBTVUNDRVNTIG1lc3NhZ2VzLCBmb2xsb3dl
ZCB3aXRoIERPTkUuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorCitmdW5jdGlv
biBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBH
Q0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKSB7IC8vIGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsg
YWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkuCisgICAgICAgIHZhciBzID0gbmV3IFN0cmlu
ZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorCit2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKK2NoYW5u
ZWwucG9ydDEub25tZXNzYWdlID0gY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKKyAgICBmYWlsKCJGQUlMOiBTaG91bGQgbm90IGhhdmUgcmVjZWl2ZWQgbWVzc2FnZTog
IiArIGV2dC5kYXRhKTsKK30KK3RyeSB7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bXNnIiwgY2hhbm5lbC5wb3J0MSk7CisgICAgbG9nKCJGQUlMOiBQb3N0aW5nIHBvcnQgdG8gaXRz
ZWxmIHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChleCkgeworICAgIGxv
ZygiU1VDQ0VTUzogUG9zdGluZyBwb3J0IHRvIGl0c2VsZjogIiArIGV4KTsKK30KKwordHJ5IHsK
KyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyKTsKKyAg
ICBsb2coIkZBSUw6IFBvc3RpbmcgcG9ydCB0byBlbnRhbmdsZWQgcGFpciBzaG91bGQgdGhyb3cg
YW4gZXhjZXB0aW9uLiIpOworfSBjYXRjaCAoZXgpIHsKKyAgICBsb2coIlNVQ0NFU1M6IFBvc3Rp
bmcgZW50YW5nbGVkIHBvcnQ6ICIgKyBleCk7Cit9CisKK2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWw7Cit2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CitjaGFubmVsLnBvcnQx
LnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7CisKKy8vIFNob3VsZCBub3QgYmUg
YWJsZSB0byBwb3N0IGEgY2xvbmVkIHBvcnQuCit0cnkgeworICAgIGNoYW5uZWwucG9ydDEucG9z
dE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwyLnBvcnQxKTsKKyAgICBsb2coIkZBSUw6IFBvc3Rpbmcg
Y2xvbmVkIHBvcnQgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKK30gY2F0Y2ggKGV4KSB7
CisgICAgbG9nKCJTVUNDRVNTOiBQb3N0aW5nIGNsb25lZCBwb3J0LiIpOworfQorCisvLyBUZXN0
IHBvc3RpbmcgbWVzc2FnZXMgdG8gYSBwb3J0IGluIGNsb25lZCBzdGF0ZS4KKwordmFyIGNoYW5u
ZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Cit2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7CisKKy8vIFBvc3QgbWVzc2FnZXMgYmVmb3JlIGFuZCBhZnRlciBjbG9uZSB0byBtYWtlIHN1
cmUgb3JkZXJpbmcgaXMgcHJlc2VydmVkIGFuZCBhbGwgbWVzc2FnZXMgYXJlIHJlY2VpdmVkLgor
Y2hhbm5lbDIucG9ydDIucG9zdE1lc3NhZ2UoIjEiKTsKK2NoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoIm1zZyIsIGNoYW5uZWwyLnBvcnQxKTsKK2NoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIy
Iik7CitjaGFubmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiMyIpOworY2hhbm5lbC5wb3J0Mi5vbm1l
c3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICB2YXIgbWVzc2FnZUluZGV4ID0gMTsKKyAgICBl
dnQubWVzc2FnZVBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmIChl
dnQuZGF0YSAhPSBtZXNzYWdlSW5kZXgpCisgICAgICAgICAgICBsb2coIkZBSUw6IEdvdCBtZXNz
YWdlICIgKyBldnQuZGF0YSArICIsIGV4cGVjdGVkICIgKyBtZXNzYWdlSW5kZXgpOworICAgICAg
ICBtZXNzYWdlSW5kZXgrKzsKKyAgICAgICAgaWYgKG1lc3NhZ2VJbmRleCA9PSA0KSB7CisgICAg
ICAgICAgICBsb2coIlNVQ0NFU1M6IFBvc3RlZCBtZXNzYWdlcyB0byBjbG9uZWQgcG9ydC4iKTsK
KyAgICAgICAgICAgIHRlc3REb3VibHlDbG9uZWRQb3J0KCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK2Z1bmN0aW9uIHRlc3REb3VibHlDbG9uZWRQb3J0KCkKK3sKKyAgICB2YXIgY2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICB2YXIgY2hhbm5lbDIgPSBuZXcgTWVzc2FnZUNoYW5u
ZWw7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEp
OworICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwyLnBvcnQyKTsK
KyAgICBnYygpOworICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7
CisgICAgICAgIGV2dC5tZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgidGVzdG1lIik7CisgICAgfQor
ICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGV2
dC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7CisgICAgICAgICAgICBp
ZiAoZXZ0LmRhdGEgPT0gInRlc3RtZSIpCisgICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTOiBD
bG9uZWQgYm90aCBlbmRwb2ludHMgb2YgYSBjaGFubmVsLiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGxvZygiRkFJTDogSW52YWxpZCBtZXNzYWdlIGFycml2ZWQ6ICIgKyBl
dnQuZGF0YSk7CisgICAgICAgICAgICB0ZXN0UG9zdENsb3NlUG9ydCgpOworICAgICAgICB9Cisg
ICAgfQorCit9CisKKy8vICpTaG91bGQqIGJlIGFibGUgdG8gcG9zdCBhIGNsb3NlZCBwb3J0Lgor
ZnVuY3Rpb24gdGVzdFBvc3RDbG9zZVBvcnQoKQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1l
c3NhZ2VDaGFubmVsOworICAgIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAg
ICBjaGFubmVsMi5wb3J0Mi5jbG9zZSgpOworICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2Uo
ImNsb3NlZCIsIGNoYW5uZWwyLnBvcnQyKTsKKyAgICBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoIWV2dC5tZXNzYWdlUG9ydCkKKyAgICAgICAg
ICAgIGxvZygiRkFJTDogQ2xvc2VkIHBvcnQgbm90IHNlbnQuIik7CisgICAgICAgIGVsc2UgaWYg
KGV2dC5kYXRhICE9ICJjbG9zZWQiKQorICAgICAgICAgICAgbG9nKCJGQUlMOiBVbmV4cGVjdGVk
IG1lc3NhZ2U6ICIgKyBldnQuZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygi
U1VDQ0VTUzogR290IGNsb3NlZCBwb3J0IHdpdGggZXZlbnQgbWVzc2FnZSAiICsgZXZ0LmRhdGEp
OworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBs
b2coIkRPTkUiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNs
b25lLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
Y2xvbmUuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxOGEy
ZS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY2xv
bmUuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi08Ym9keT4K
LTxwPlRlc3RzIHZhcmlvdXMgdXNlIGNhc2VzIHdoZW4gY2xvbmluZyBNZXNzYWdlUG9ydHMuPC9w
PgotPHA+U2hvdWxkIGJlIGEgc2VyaWVzIG9mIFNVQ0NFU1MgbWVzc2FnZXMsIGZvbGxvd2VkIHdp
dGggRE9ORS48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIGdj
KCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxv
Y2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KS4KLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJh
YmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0K
LQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci19Ci0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotY2hhbm5lbC5w
b3J0MS5vbm1lc3NhZ2UgPSBjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkg
ewotICAgIGZhaWwoIkZBSUw6IFNob3VsZCBub3QgaGF2ZSByZWNlaXZlZCBtZXNzYWdlOiAiICsg
ZXZ0LmRhdGEpOwotfQotdHJ5IHsKLSAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ci
LCBjaGFubmVsLnBvcnQxKTsKLSAgICBsb2coIkZBSUw6IFBvc3RpbmcgcG9ydCB0byBpdHNlbGYg
c2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKLX0gY2F0Y2ggKGV4KSB7Ci0gICAgbG9nKCJT
VUNDRVNTOiBQb3N0aW5nIHBvcnQgdG8gaXRzZWxmOiAiICsgZXgpOwotfQotCi10cnkgewotICAg
IGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIpOwotICAgIGxv
ZygiRkFJTDogUG9zdGluZyBwb3J0IHRvIGVudGFuZ2xlZCBwYWlyIHNob3VsZCB0aHJvdyBhbiBl
eGNlcHRpb24uIik7Ci19IGNhdGNoIChleCkgewotICAgIGxvZygiU1VDQ0VTUzogUG9zdGluZyBl
bnRhbmdsZWQgcG9ydDogIiArIGV4KTsKLX0KLQotY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5l
bDsKLXZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLWNoYW5uZWwucG9ydDEucG9z
dE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwyLnBvcnQxKTsKLQotLy8gU2hvdWxkIG5vdCBiZSBhYmxl
IHRvIHBvc3QgYSBjbG9uZWQgcG9ydC4KLXRyeSB7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVz
c2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDEpOwotICAgIGxvZygiRkFJTDogUG9zdGluZyBjbG9u
ZWQgcG9ydCBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiIpOwotfSBjYXRjaCAoZXgpIHsKLSAg
ICBsb2coIlNVQ0NFU1M6IFBvc3RpbmcgY2xvbmVkIHBvcnQuIik7Ci19Ci0KLS8vIFRlc3QgcG9z
dGluZyBtZXNzYWdlcyB0byBhIHBvcnQgaW4gY2xvbmVkIHN0YXRlLgotCi12YXIgY2hhbm5lbCA9
IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLXZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
LQotLy8gUG9zdCBtZXNzYWdlcyBiZWZvcmUgYW5kIGFmdGVyIGNsb25lIHRvIG1ha2Ugc3VyZSBv
cmRlcmluZyBpcyBwcmVzZXJ2ZWQgYW5kIGFsbCBtZXNzYWdlcyBhcmUgcmVjZWl2ZWQuCi1jaGFu
bmVsMi5wb3J0Mi5wb3N0TWVzc2FnZSgiMSIpOwotY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bXNnIiwgY2hhbm5lbDIucG9ydDEpOwotY2hhbm5lbDIucG9ydDIucG9zdE1lc3NhZ2UoIjIiKTsK
LWNoYW5uZWwyLnBvcnQyLnBvc3RNZXNzYWdlKCIzIik7Ci1jaGFubmVsLnBvcnQyLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgIHZhciBtZXNzYWdlSW5kZXggPSAxOwotICAgIGV2dC5t
ZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKGV2dC5k
YXRhICE9IG1lc3NhZ2VJbmRleCkKLSAgICAgICAgICAgIGxvZygiRkFJTDogR290IG1lc3NhZ2Ug
IiArIGV2dC5kYXRhICsgIiwgZXhwZWN0ZWQgIiArIG1lc3NhZ2VJbmRleCk7Ci0gICAgICAgIG1l
c3NhZ2VJbmRleCsrOwotICAgICAgICBpZiAobWVzc2FnZUluZGV4ID09IDQpIHsKLSAgICAgICAg
ICAgIGxvZygiU1VDQ0VTUzogUG9zdGVkIG1lc3NhZ2VzIHRvIGNsb25lZCBwb3J0LiIpOwotICAg
ICAgICAgICAgdGVzdERvdWJseUNsb25lZFBvcnQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
ZnVuY3Rpb24gdGVzdERvdWJseUNsb25lZFBvcnQoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOwotICAgIHZhciBjaGFubmVsMiA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
LSAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsMi5wb3J0MSk7Ci0g
ICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbDIucG9ydDIpOwotICAg
IGdjKCk7Ci0gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAg
ICAgICAgZXZ0Lm1lc3NhZ2VQb3J0LnBvc3RNZXNzYWdlKCJ0ZXN0bWUiKTsKLSAgICB9Ci0gICAg
Y2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgZXZ0Lm1l
c3NhZ2VQb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldnQpIHsKLSAgICAgICAgICAgIGlmIChl
dnQuZGF0YSA9PSAidGVzdG1lIikKLSAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1M6IENsb25l
ZCBib3RoIGVuZHBvaW50cyBvZiBhIGNoYW5uZWwuIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgbG9nKCJGQUlMOiBJbnZhbGlkIG1lc3NhZ2UgYXJyaXZlZDogIiArIGV2dC5k
YXRhKTsKLSAgICAgICAgICAgIHRlc3RQb3N0Q2xvc2VQb3J0KCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLX0KLQotLy8gKlNob3VsZCogYmUgYWJsZSB0byBwb3N0IGEgY2xvc2VkIHBvcnQuCi1mdW5j
dGlvbiB0ZXN0UG9zdENsb3NlUG9ydCgpCi17Ci0gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWw7Ci0gICAgdmFyIGNoYW5uZWwyID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIGNo
YW5uZWwyLnBvcnQyLmNsb3NlKCk7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiY2xv
c2VkIiwgY2hhbm5lbDIucG9ydDIpOwotICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVu
Y3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmICghZXZ0Lm1lc3NhZ2VQb3J0KQotICAgICAgICAgICAg
bG9nKCJGQUlMOiBDbG9zZWQgcG9ydCBub3Qgc2VudC4iKTsKLSAgICAgICAgZWxzZSBpZiAoZXZ0
LmRhdGEgIT0gImNsb3NlZCIpCi0gICAgICAgICAgICBsb2coIkZBSUw6IFVuZXhwZWN0ZWQgbWVz
c2FnZTogIiArIGV2dC5kYXRhKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJTVUND
RVNTOiBHb3QgY2xvc2VkIHBvcnQgd2l0aCBldmVudCBtZXNzYWdlICIgKyBldnQuZGF0YSk7Ci0g
ICAgICAgIGRvbmUoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGxvZygi
RE9ORSIpOwotCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotPC9zY3JpcHQ+Ci08L2JvZHk+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY29uc3Ry
dWN0b3ItZm9yLWRlbGV0ZWQtZG9jdW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ODlhNzMKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY29uc3RydWN0b3ItZm9yLWRl
bGV0ZWQtZG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDU1IEBACis8Ym9keT4KKzxwPlRlc3QgdGhh
dCBkZXN0cm95aW5nIGEgZG9jdW1lbnQgZG9lc24ndCBjYXVzZSBhIGNyYXNoIHdoZW4gZXhlY3V0
aW5nIE1lc3NhZ2VDaGFubmVsIGNvbnN0cnVjdG9yIHNhdmVkIGZyb20gaXRzIFdpbmRvdyBvYmpl
Y3QuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQorewor
ICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVy
LmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+
IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlv
bnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3ZhciBjb25zdHJ1Y3RvcjsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgY29uc3Ry
dWN0b3IgPSB3aW5kb3cuZnJhbWVzWzBdLk1lc3NhZ2VDaGFubmVsOworCisgICAgdmFyIGZyYW1l
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKKyAg
ICBmcmFtZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZUVsZW1lbnQpOworICAg
IGZyYW1lRWxlbWVudCA9IG51bGw7CisKKyAgICBnYygpOworICAgIHNldFRpbWVvdXQodGVzdDIs
IDEwKTsKK30KKworZnVuY3Rpb24gdGVzdDIoKQoreworICAgIGdjKCk7CisgICAgdHJ5IHsKKyAg
ICAgICAgbmV3IGNvbnN0cnVjdG9yOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgfQorCisgICAg
bG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJh
bWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxl
dGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtY29uc3RydWN0b3ItZm9yLWRlbGV0ZWQtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ4OWE3My4uMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY29uc3RydWN0b3ItZm9yLWRlbGV0ZWQt
ZG9jdW1lbnQuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLTxi
b2R5PgotPHA+VGVzdCB0aGF0IGRlc3Ryb3lpbmcgYSBkb2N1bWVudCBkb2Vzbid0IGNhdXNlIGEg
Y3Jhc2ggd2hlbiBleGVjdXRpbmcgTWVzc2FnZUNoYW5uZWwgY29uc3RydWN0b3Igc2F2ZWQgZnJv
bSBpdHMgV2luZG93IG9iamVjdC48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1m
dW5jdGlvbiBnYygpCi17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJl
dHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBh
Ym91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5l
dyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0g
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsg
Ijxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKLX0KLQotdmFyIGNvbnN0cnVjdG9yOwotCi1mdW5jdGlvbiB0ZXN0
KCkKLXsKLSAgICBjb25zdHJ1Y3RvciA9IHdpbmRvdy5mcmFtZXNbMF0uTWVzc2FnZUNoYW5uZWw7
Ci0KLSAgICB2YXIgZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImlmcmFtZSIpWzBdOwotICAgIGZyYW1lRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZy
YW1lRWxlbWVudCk7Ci0gICAgZnJhbWVFbGVtZW50ID0gbnVsbDsKLQotICAgIGdjKCk7Ci0gICAg
c2V0VGltZW91dCh0ZXN0MiwgMTApOwotfQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgZ2Mo
KTsKLSAgICB0cnkgewotICAgICAgICBuZXcgY29uc3RydWN0b3I7Ci0gICAgfSBjYXRjaCAoZXgp
IHsKLSAgICB9Ci0KLSAgICBsb2coIkRpZG4ndCBjcmFzaDogU1VDQ0VTUyIpOwotCi0gICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwotfQotCi08L3NjcmlwdD4KLTxpZnJhbWUgc3JjPSJyZXNvdXJjZXMv
bWVzc2FnZS1wb3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Ci08L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVs
ZXRlZC1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jMWUyZTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbApAQCAtMCwwICsxLDcxIEBACis8Ym9keT4K
KzxwPlRlc3QgdGhhdCBkZXN0cm95aW5nIGEgZG9jdW1lbnQgZG9lc24ndCBjYXVzZSBhIGNyYXNo
IHdoZW4gcG9zdGluZyBhIG1lc3NhZ2UgdG8gYSBNZXNzYWdlUG9ydCBpdCBvd25lZC48L3A+Cis8
cHJlIGlkPWxvZz48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdp
bmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgp
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2Fy
YmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUg
YSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30K
KworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFy
IG1haW5Qb3J0OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBj
aGFubmVsLnBvcnQyLCAiKiIpOworICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKKyAgICBt
YWluUG9ydC5zdGFydCgpOworCisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAg
ICBtYWluUG9ydC5vbm1lc3NhZ2UgPSB0ZXN0MjsKK30KKworZnVuY3Rpb24gdGVzdDIoKQorewor
ICAgIHZhciBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZy
YW1lIilbMF07CisgICAgZnJhbWVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZnJhbWVF
bGVtZW50KTsKKyAgICBmcmFtZUVsZW1lbnQgPSBudWxsOworCisgICAgZ2MoKTsKKyAgICBzZXRU
aW1lb3V0KHRlc3QzLCAxMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkKK3sKKyAgICBnYygpOwor
ICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmIChldnQuZGF0YSA9PSAicG9uZyIpCisgICAg
ICAgICAgICBsb2coIlVuZXhwZWN0ZWQgcmVzcG9uc2U6IEZBSUwiKTsKKyAgICB9OworICAgIHNl
dFRpbWVvdXQodGVzdDQsIDEwKTsKK30KKworZnVuY3Rpb24gdGVzdDQoKQoreworICAgIG1haW5Q
b3J0LmNsb3NlKCk7CisKKyAgICBsb2coIkRpZG4ndCBjcmFzaDogU1VDQ0VTUyIpOworCisgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJj
ZXMvbWVzc2FnZS1wb3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQt
ZGVsZXRlZC1kb2N1bWVudC5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYzFlMmUwNy4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sLWRpc2FibGVkCisrKyAv
ZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgZGVzdHJveWlu
ZyBhIGRvY3VtZW50IGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIHBvc3RpbmcgYSBtZXNzYWdl
IHRvIGEgTWVzc2FnZVBvcnQgaXQgb3duZWQuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2Ny
aXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAg
ICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVx
dWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFy
IHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciBtYWluUG9ydDsKLQotZnVuY3Rpb24g
dGVzdCgpCi17Ci0gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2lu
ZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0MiwgIioiKTsKLSAg
ICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7Ci0gICAgbWFpblBvcnQuc3RhcnQoKTsKLQotICAg
IG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0g
dGVzdDI7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkKLXsKLSAgICB2YXIgZnJhbWVFbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOwotICAgIGZyYW1lRWxl
bWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZyYW1lRWxlbWVudCk7Ci0gICAgZnJhbWVFbGVt
ZW50ID0gbnVsbDsKLQotICAgIGdjKCk7Ci0gICAgc2V0VGltZW91dCh0ZXN0MywgMTApOwotfQot
Ci1mdW5jdGlvbiB0ZXN0MygpCi17Ci0gICAgZ2MoKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2Fn
ZSgicGluZyIpOwotICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAg
ICAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmciKQotICAgICAgICAgICAgbG9nKCJVbmV4cGVjdGVk
IHJlc3BvbnNlOiBGQUlMIik7Ci0gICAgfTsKLSAgICBzZXRUaW1lb3V0KHRlc3Q0LCAxMCk7Ci19
Ci0KLWZ1bmN0aW9uIHRlc3Q0KCkKLXsKLSAgICBtYWluUG9ydC5jbG9zZSgpOwotCi0gICAgbG9n
KCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0K
LQotPC9zY3JpcHQ+Ci08aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUu
aHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgotPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjlmYTJiMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0
bWwKQEAgLTAsMCArMSw3MSBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgZGVzdHJveWluZyBhIGZy
YW1lIGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIHBvc3RpbmcgYSBtZXNzYWdlIHRvIGEgTWVz
c2FnZVBvcnQgaXQgb3duZWQuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1
cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJv
dXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcg
U3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8
YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBtYWluUG9ydDsKK3ZhciBmcmFtZURvYzsKKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgZnJhbWVEb2MgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50
OworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIHdpbmRvdy5mcmFt
ZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIsICIqIik7CisgICAgbWFpblBv
cnQgPSBjaGFubmVsLnBvcnQxOworICAgIG1haW5Qb3J0LnN0YXJ0KCk7CisKKyAgICBtYWluUG9y
dC5wb3N0TWVzc2FnZSgicGluZyIpOworICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IHRlc3QyOwor
fQorCitmdW5jdGlvbiB0ZXN0MigpCit7CisgICAgdmFyIGZyYW1lRWxlbWVudCA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKKyAgICBmcmFtZUVsZW1lbnQucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZUVsZW1lbnQpOworICAgIGZyYW1lRWxlbWVudCA9IG51
bGw7CisKKyAgICBnYygpOworICAgIHNldFRpbWVvdXQodGVzdDMsIDEwKTsKK30KKworZnVuY3Rp
b24gdGVzdDMoKQoreworICAgIGdjKCk7CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmci
KTsKKyAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgaWYg
KGV2dC5kYXRhID09ICJwb25nIikKKyAgICAgICAgICAgIGxvZygiVW5leHBlY3RlZCByZXNwb25z
ZTogRkFJTCIpOworICAgIH07CisgICAgc2V0VGltZW91dCh0ZXN0NCwgMTApOworfQorCitmdW5j
dGlvbiB0ZXN0NCgpCit7CisgICAgbG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKKworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWRlbGV0ZWQtZnJhbWUuaHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21l
c3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDY5ZmEyYjMuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxs
CkBAIC0xLDcxICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IGRlc3Ryb3lpbmcgYSBmcmFt
ZSBkb2Vzbid0IGNhdXNlIGEgY3Jhc2ggd2hlbiBwb3N0aW5nIGEgbWVzc2FnZSB0byBhIE1lc3Nh
Z2VQb3J0IGl0IG93bmVkLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNjcmlwdD4KLWZ1bmN0
aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJu
IEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAw
OyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0
IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAgIHZhciBzID0gbmV3IFN0
cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJy
PiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOwotfQotCi12YXIgbWFpblBvcnQ7Ci12YXIgZnJhbWVEb2M7Ci0KLWZ1bmN0
aW9uIHRlc3QoKQotewotICAgIGZyYW1lRG9jID0gd2luZG93LmZyYW1lc1swXS5kb2N1bWVudDsK
LSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cuZnJhbWVz
WzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAiKiIpOwotICAgIG1haW5Qb3J0
ID0gY2hhbm5lbC5wb3J0MTsKLSAgICBtYWluUG9ydC5zdGFydCgpOwotCi0gICAgbWFpblBvcnQu
cG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSB0ZXN0MjsKLX0K
LQotZnVuY3Rpb24gdGVzdDIoKQotewotICAgIHZhciBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07Ci0gICAgZnJhbWVFbGVtZW50LnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoZnJhbWVFbGVtZW50KTsKLSAgICBmcmFtZUVsZW1lbnQgPSBudWxs
OwotCi0gICAgZ2MoKTsKLSAgICBzZXRUaW1lb3V0KHRlc3QzLCAxMCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3QzKCkKLXsKLSAgICBnYygpOwotICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7
Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChl
dnQuZGF0YSA9PSAicG9uZyIpCi0gICAgICAgICAgICBsb2coIlVuZXhwZWN0ZWQgcmVzcG9uc2U6
IEZBSUwiKTsKLSAgICB9OwotICAgIHNldFRpbWVvdXQodGVzdDQsIDEwKTsKLX0KLQotZnVuY3Rp
b24gdGVzdDQoKQotewotICAgIGxvZygiRGlkbid0IGNyYXNoOiBTVUNDRVNTIik7Ci0KLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwvc2NyaXB0PgotPGlmcmFtZSBzcmM9InJlc291cmNl
cy9tZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KLTwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1p
bmFjdGl2ZS1kb2N1bWVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTg1OTU3NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzxi
b2R5PgorPHA+VGVzdCB0aGF0IG1lc3NhZ2luZyBhbiBpbmFjdGl2ZSBmcmFtZWxlc3MgZG9jdW1l
bnQgd29ya3MgYXMgZXhwZWN0ZWQuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMg
YWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBu
ZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSAr
ICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBvdGhlckRvY3VtZW50OwordmFyIG1haW5Qb3J0
OworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBvdGhlckRvY3VtZW50ID0gd2luZG93LmZyYW1l
c1swXS5kb2N1bWVudDsKKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAg
ICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAiKiIp
OworICAgIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKKyAgICBtYWluUG9ydC5zdGFydCgpOwor
CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAgICBtYWluUG9ydC5vbm1lc3Nh
Z2UgPSB0ZXN0MjsKK30KKworZnVuY3Rpb24gdGVzdDIoKQoreworICAgIHZhciBmcmFtZUVsZW1l
bnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07CisgICAgZnJh
bWVFbGVtZW50LnNyYyA9ICJyZXNvdXJjZXMvd2luZG93LW9wZW5lZC5odG1sIjsKKyAgICBmcmFt
ZUVsZW1lbnQub25sb2FkID0gdGVzdDM7CisgICAgZ2MoKTsKK30KKworZnVuY3Rpb24gdGVzdDMo
KQoreworICAgIGdjKCk7CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoImFsZXJ0IEZBSUw6IHRo
ZSBkb2N1bWVudCBpcyBpbmFjdGl2ZS4iKTsKKyAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgiZnJl
ZXplIik7CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAgICBtYWluUG9ydC5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgbG9nKCJVbmV4cGVjdGVkIHJlc3Bv
bnNlOiBGQUlMIik7CisgICAgfTsKKyAgICBzZXRUaW1lb3V0KHRlc3Q0LCAxMCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3Q0KCkKK3sKKyAgICBtYWluUG9ydC5jbG9zZSgpOworCisgICAgbG9nKCJEaWRu
J3QgY3Jhc2gsIGZyZWV6ZSBvciByZXNwb25kOiBTVUNDRVNTIik7CisKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdl
LXBvcnQtaWZyYW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIiB3aWR0aD0wIGhlaWdodD0wIGZyYW1l
Ym9yZGVyPTA+PC9pZnJhbWU+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1s
LWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODU5NTc2Li4wMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1
bWVudC5odG1sLWRpc2FibGVkCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotPGJvZHk+
Ci08cD5UZXN0IHRoYXQgbWVzc2FnaW5nIGFuIGluYWN0aXZlIGZyYW1lbGVzcyBkb2N1bWVudCB3
b3JrcyBhcyBleHBlY3RlZC48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5j
dGlvbiBnYygpCi17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCi0gICAgICAgIHJldHVy
biBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91
dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5ldyBT
dHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxi
cj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLX0KLQotdmFyIG90aGVyRG9jdW1lbnQ7Ci12YXIgbWFpblBvcnQ7Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIG90aGVyRG9jdW1lbnQgPSB3aW5kb3cuZnJhbWVzWzBd
LmRvY3VtZW50OwotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdp
bmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIsICIqIik7Ci0g
ICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwotICAgIG1haW5Qb3J0LnN0YXJ0KCk7Ci0KLSAg
ICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9
IHRlc3QyOwotfQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgdmFyIGZyYW1lRWxlbWVudCA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKLSAgICBmcmFtZUVs
ZW1lbnQuc3JjID0gInJlc291cmNlcy93aW5kb3ctb3BlbmVkLmh0bWwiOwotICAgIGZyYW1lRWxl
bWVudC5vbmxvYWQgPSB0ZXN0MzsKLSAgICBnYygpOwotfQotCi1mdW5jdGlvbiB0ZXN0MygpCi17
Ci0gICAgZ2MoKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgiYWxlcnQgRkFJTDogdGhlIGRv
Y3VtZW50IGlzIGluYWN0aXZlLiIpOwotICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJmcmVlemUi
KTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAgIG1haW5Qb3J0Lm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBsb2coIlVuZXhwZWN0ZWQgcmVzcG9uc2U6
IEZBSUwiKTsKLSAgICB9OwotICAgIHNldFRpbWVvdXQodGVzdDQsIDEwKTsKLX0KLQotZnVuY3Rp
b24gdGVzdDQoKQotewotICAgIG1haW5Qb3J0LmNsb3NlKCk7Ci0KLSAgICBsb2coIkRpZG4ndCBj
cmFzaCwgZnJlZXplIG9yIHJlc3BvbmQ6IFNVQ0NFU1MiKTsKLQotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9y
dC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiIHdpZHRoPTAgaGVpZ2h0PTAgZnJhbWVib3Jk
ZXI9MD48L2lmcmFtZT4KLTwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1uby13cmFwcGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtbm8td3JhcHBlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmU4NzY1YjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLXBvcnQtbm8td3JhcHBlci5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxib2R5
PgorPHA+VGVzdCB0aGF0IGRlbGl2ZXJpbmcgYSBtZXNzYWdlIHRvIGEgcG9ydCB0aGF0IHdhcyBu
ZXZlciByZWZlcmVuY2VkIGZyb20gSlMgZG9lc24ndCBjYXVzZSBhIGNyYXNoLjwvcD4KKzxwcmUg
aWQ9bG9nPjwvcHJlPgorCis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5k
b3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJh
Z2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEg
Y29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBj
aGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgi
bXNnIik7CitjaGFubmVsLnBvcnQxLnN0YXJ0KCk7CitjaGFubmVsID0gMDsKK2djKCk7CisKK3Nl
dFRpbWVvdXQoImxvZygnUEFTUycpOyBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkiLCAxMDApOworCis8L3NjcmlwdD4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1u
by13cmFwcGVyLmh0bWwtZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtbm8td3JhcHBlci5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlODc2NWI5Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1uby13cmFwcGVyLmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSwzNSAr
MCwwIEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBkZWxpdmVyaW5nIGEgbWVzc2FnZSB0byBhIHBv
cnQgdGhhdCB3YXMgbmV2ZXIgcmVmZXJlbmNlZCBmcm9tIEpTIGRvZXNuJ3QgY2F1c2UgYSBjcmFz
aC48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLQotPHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsK
LSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxl
ci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8g
PiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRp
b25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7
Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotfQotCi12YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLWNoYW5uZWwucG9ydDEu
cG9zdE1lc3NhZ2UoIm1zZyIpOwotY2hhbm5lbC5wb3J0MS5zdGFydCgpOwotY2hhbm5lbCA9IDA7
Ci1nYygpOwotCi1zZXRUaW1lb3V0KCJsb2coJ1BBU1MnKTsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpIiwgMTAwKTsKLQot
PC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNjQ2N2YKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQuaHRtbApAQCAt
MCwwICsxLDk1IEBACis8Ym9keT4KKzxwPlRlc3QgY3Jvc3MtZnJhbWUgTWVzc2FnZVBvcnQgY29t
bXVuaWNhdGlvbi48L3A+Cis8cD5TaG91bGQgYmUgYSBzZXJpZXMgb2YgU1VDQ0VTUyBtZXNzYWdl
cywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBt
YWluUG9ydDsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hh
bm5lbC5wb3J0MiwgIioiKTsKKyAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CisgICAgbWFp
blBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldnQpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIiAmJiBldnQub3JpZ2lu
ID09ICIiKQorICAgICAgICAgICAgbG9nKCJTaW1wbGUgZXhjaGFuZ2U6IFNVQ0NFU1MiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJTaW1wbGUgZXhjaGFuZ2U6IEZBSUwuIEdvdCBt
ZXNzYWdlICciICsgZXZ0LmRhdGEgKyAiJyBmcm9tICciICsgZXZ0Lm9yaWdpbiArICInLiIpOwor
ICAgICAgICB0ZXN0MigpOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2
YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBtYWluUG9ydC5wb3N0TWVzc2Fn
ZSgibmV3UG9ydCIsIGNoYW5uZWwucG9ydDIpOworICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmIChldnQuZGF0YSA9PSAieW8iICYmIGV2dC5v
cmlnaW4gPT0gIiIpCisgICAgICAgICAgICBsb2coIlBvc3RlZCBwb3J0OiBTVUNDRVNTIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiUG9zdGVkIHBvcnQ6IEZBSUwuIEdvdCBtZXNz
YWdlICciICsgZXZ0LmRhdGEgKyAiJyBmcm9tICciICsgZXZ0Lm9yaWdpbiArICInLiIpOworICAg
ICAgICB0ZXN0MygpOworICAgIH07Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkKK3sKKyAgICB2YXIg
Y2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNz
YWdlKCIxIik7CisgICAgdmFyIHN0YXJ0ZWQgPSBmYWxzZTsKKyAgICBjaGFubmVsLnBvcnQyLmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgaWYgKHN0
YXJ0ZWQpIHsKKyAgICAgICAgICAgIGxvZygiRXZlbnQgTGlzdGVuZXI6IFNVQ0NFU1MiKTsKKyAg
ICAgICAgICAgIHRlc3Q0KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbG9nKCJFdmVu
dCBMaXN0ZW5lcjogRkFJTC4gRXZlbnQgbGlzdGVuZXIgY2FsbGVkIGJlZm9yZSBzdGFydCgpIik7
CisgICB9KTsKKyAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICBjaGFubmVsLnBvcnQy
LnN0YXJ0KCk7CisgICAgICBzdGFydGVkID0gdHJ1ZTsKKyAgIH0sIDEwMCk7CisKK30KKworZnVu
Y3Rpb24gdGVzdDQoKQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwor
ICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIjEiKTsKKyAgICBjaGFubmVsLnBvcnQxLmNs
b3NlKCk7CisgICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiMiIpOworICAgIGNoYW5uZWwu
cG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGlmIChldnQuZGF0YSA9
PSAiMSIpIHsKKyAgICAgICAgICAgIGxvZygiQ2xvc2VkIHBvcnQ6IFNVQ0NFU1MiKTsKKyAgICAg
ICAgICAgIHRlc3Q1KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbG9nKCJDbG9zZWQg
cG9ydDogRkFJTC4gR290IG1lc3NhZ2U6ICIgKyBldnQuZGF0YSArICIgYWZ0ZXIgY2xvc2UiKTsK
KyAgIH0KK30KKworZnVuY3Rpb24gdGVzdDUoKQoreworICAgIC8vIENyZWF0ZSBhIGNoYW5uZWwg
YW5kIHB1dCBzb21lIG1lc3NhZ2VzIGluIGl0IHdoaWNoIHdpbGwgZ28gdW5kZWxpdmVyZWQgYW5k
IHNob3VsZCBub3QgbGVhaworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwor
ICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImFiY2RlIik7CisgICAgLy8gTm93IHdhaXQg
YSBzaG9ydCBwZXJpb2Qgb2YgdGltZSB0byBlbnN1cmUgbm8gbWVzc2FnZXMgY29tZSBpbiBmcm9t
IHByZXZpb3VzIHRlc3RzLgorICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxv
ZygiRE9ORSIpOworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0sIDEwMCk7
Cit9CisKKzwvc2NyaXB0PgorPGlmcmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZy
YW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sLWRpc2FibGVkIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwtZGlzYWJsZWQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNjQ2N2YuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAt
MSw5NSArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgY3Jvc3MtZnJhbWUgTWVzc2FnZVBvcnQgY29t
bXVuaWNhdGlvbi48L3A+Ci08cD5TaG91bGQgYmUgYSBzZXJpZXMgb2YgU1VDQ0VTUyBtZXNzYWdl
cywgZm9sbG93ZWQgd2l0aCBET05FLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNjcmlwdD4K
LWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciBt
YWluUG9ydDsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVz
c2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hh
bm5lbC5wb3J0MiwgIioiKTsKLSAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7Ci0gICAgbWFp
blBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5j
dGlvbihldnQpIHsKLSAgICAgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIiAmJiBldnQub3JpZ2lu
ID09ICIiKQotICAgICAgICAgICAgbG9nKCJTaW1wbGUgZXhjaGFuZ2U6IFNVQ0NFU1MiKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJTaW1wbGUgZXhjaGFuZ2U6IEZBSUwuIEdvdCBt
ZXNzYWdlICciICsgZXZ0LmRhdGEgKyAiJyBmcm9tICciICsgZXZ0Lm9yaWdpbiArICInLiIpOwot
ICAgICAgICB0ZXN0MigpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkKLXsKLSAgICB2
YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2Fn
ZSgibmV3UG9ydCIsIGNoYW5uZWwucG9ydDIpOwotICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdl
ID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSA9PSAieW8iICYmIGV2dC5v
cmlnaW4gPT0gIiIpCi0gICAgICAgICAgICBsb2coIlBvc3RlZCBwb3J0OiBTVUNDRVNTIik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiUG9zdGVkIHBvcnQ6IEZBSUwuIEdvdCBtZXNz
YWdlICciICsgZXZ0LmRhdGEgKyAiJyBmcm9tICciICsgZXZ0Lm9yaWdpbiArICInLiIpOwotICAg
ICAgICB0ZXN0MygpOwotICAgIH07Ci19Ci0KLWZ1bmN0aW9uIHRlc3QzKCkKLXsKLSAgICB2YXIg
Y2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBjaGFubmVsLnBvcnQxLnBvc3RNZXNz
YWdlKCIxIik7Ci0gICAgdmFyIHN0YXJ0ZWQgPSBmYWxzZTsKLSAgICBjaGFubmVsLnBvcnQyLmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKHN0
YXJ0ZWQpIHsKLSAgICAgICAgICAgIGxvZygiRXZlbnQgTGlzdGVuZXI6IFNVQ0NFU1MiKTsKLSAg
ICAgICAgICAgIHRlc3Q0KCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbG9nKCJFdmVu
dCBMaXN0ZW5lcjogRkFJTC4gRXZlbnQgbGlzdGVuZXIgY2FsbGVkIGJlZm9yZSBzdGFydCgpIik7
Ci0gICB9KTsKLSAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICBjaGFubmVsLnBvcnQy
LnN0YXJ0KCk7Ci0gICAgICBzdGFydGVkID0gdHJ1ZTsKLSAgIH0sIDEwMCk7Ci0KLX0KLQotZnVu
Y3Rpb24gdGVzdDQoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwot
ICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoIjEiKTsKLSAgICBjaGFubmVsLnBvcnQxLmNs
b3NlKCk7Ci0gICAgY2hhbm5lbC5wb3J0MS5wb3N0TWVzc2FnZSgiMiIpOwotICAgIGNoYW5uZWwu
cG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSA9
PSAiMSIpIHsKLSAgICAgICAgICAgIGxvZygiQ2xvc2VkIHBvcnQ6IFNVQ0NFU1MiKTsKLSAgICAg
ICAgICAgIHRlc3Q1KCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbG9nKCJDbG9zZWQg
cG9ydDogRkFJTC4gR290IG1lc3NhZ2U6ICIgKyBldnQuZGF0YSArICIgYWZ0ZXIgY2xvc2UiKTsK
LSAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdDUoKQotewotICAgIC8vIENyZWF0ZSBhIGNoYW5uZWwg
YW5kIHB1dCBzb21lIG1lc3NhZ2VzIGluIGl0IHdoaWNoIHdpbGwgZ28gdW5kZWxpdmVyZWQgYW5k
IHNob3VsZCBub3QgbGVhawotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwot
ICAgIGNoYW5uZWwucG9ydDEucG9zdE1lc3NhZ2UoImFiY2RlIik7Ci0gICAgLy8gTm93IHdhaXQg
YSBzaG9ydCBwZXJpb2Qgb2YgdGltZSB0byBlbnN1cmUgbm8gbWVzc2FnZXMgY29tZSBpbiBmcm9t
IHByZXZpb3VzIHRlc3RzLgotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxv
ZygiRE9ORSIpOwotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotICAgIH0sIDEwMCk7
Ci19Ci0KLTwvc2NyaXB0PgotPGlmcmFtZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZy
YW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KLTwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CmluZGV4
IDE0NDUwNGMuLjM1N2YwNzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvZ2xvYmFs
LWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9i
YWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dApAQCAtMTEwLDcgKzExMCw5IEBAIFBBU1MgSW1h
Z2UudG9TdHJpbmcoKSBpcyAnW29iamVjdCBJbWFnZUNvbnN0cnVjdG9yXScKIFBBU1MgS2V5Ym9h
cmRFdmVudC50b1N0cmluZygpIGlzICdbb2JqZWN0IEtleWJvYXJkRXZlbnRDb25zdHJ1Y3Rvcl0n
CiBQQVNTIE1lZGlhRXJyb3IudG9TdHJpbmcoKSBpcyAnW29iamVjdCBNZWRpYUVycm9yQ29uc3Ry
dWN0b3JdJwogUEFTUyBNZWRpYUxpc3QudG9TdHJpbmcoKSBpcyAnW29iamVjdCBNZWRpYUxpc3RD
b25zdHJ1Y3Rvcl0nCitQQVNTIE1lc3NhZ2VDaGFubmVsLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3Qg
TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcl0nCiBQQVNTIE1lc3NhZ2VFdmVudC50b1N0cmluZygp
IGlzICdbb2JqZWN0IE1lc3NhZ2VFdmVudENvbnN0cnVjdG9yXScKK1BBU1MgTWVzc2FnZVBvcnQu
dG9TdHJpbmcoKSBpcyAnW29iamVjdCBNZXNzYWdlUG9ydENvbnN0cnVjdG9yXScKIFBBU1MgTWlt
ZVR5cGUudG9TdHJpbmcoKSBpcyAnW29iamVjdCBNaW1lVHlwZUNvbnN0cnVjdG9yXScKIFBBU1Mg
TWltZVR5cGVBcnJheS50b1N0cmluZygpIGlzICdbb2JqZWN0IE1pbWVUeXBlQXJyYXlDb25zdHJ1
Y3Rvcl0nCiBQQVNTIE1vdXNlRXZlbnQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBNb3VzZUV2ZW50
Q29uc3RydWN0b3JdJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci1jbG9uZXBvcnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVw
b3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVkMmM2MwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0
Lmh0bWwKQEAgLTAsMCArMSwxMDMgQEAKKzxib2R5PgorPHA+VGVzdCBNZXNzYWdlUG9ydCBtZXNz
YWdpbmcvZW50YW5nbGUvZGV0YW5nbGUgYWNyb3NzIHRocmVhZHMuIFNob3VsZCBwcmludCAiU1VD
Q0VTUyIgd2hlbiBkb25lLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKKwordmFy
IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKK3ZhciBudW1NZXNzYWdlcyA9IDUwMDAw
OworCisvLyBDcmVhdGUgYSBjaGFubmVsIHdoaWNoIHdlIHdpbGwgdXNlIHRvIGNsb25lIGFuZCBy
ZS1jbG9uZSBvbmUgZW5kIG9mIGEKKy8vIE1lc3NhZ2VDaGFubmVsLgordmFyIGNsb25lQ2hhbm5l
bCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwordmFyIHN0b3BDbG9uaW5nID0gZmFsc2U7CitjbG9u
ZUNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gY2xvbmVDaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9
IHJlc2VuZFBvcnQ7CitjbG9uZUNoYW5uZWwucG9ydDEuc3RhcnQoKTsKK2Nsb25lQ2hhbm5lbC5w
b3J0Mi5zdGFydCgpOworY2xvbmVDaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdlKCIiLCBjaGFubmVs
LnBvcnQyKTsKKworLy8gQ3JlYXRlIHdvcmtlciB3aXRoIG90aGVyIGVuZCBvZiBwb3J0IGFuZCBo
YXZlIGl0IHNlbmQgbWVzc2FnZXMgYmFjayB0byB1cworLy8gd2hpbGUgd2UgY2xvbmUgb3VyIGVu
ZCBvZiB0aGUgcG9ydCByZXBlYXRlZGx5LgordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291
cmNlcy93b3JrZXItY2xvbmVwb3J0LmpzIik7Cit3b3JrZXIucG9zdE1lc3NhZ2UoInBvc3RCYWNr
ICIgKyBudW1NZXNzYWdlcywgY2hhbm5lbC5wb3J0MSk7CisKKy8vIFRlc3QgcG9zdGluZyBiYWNr
IDUwMDAwIG1lc3NhZ2VzLCBtYWtlIHN1cmUgb3JkZXJpbmcgaXMgZmluZQord29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIGlmIChldnQuZGF0YSA9PSAicG9zdEJhY2tEb25l
IikgeworICAgICAgICBzdG9wQ2xvbmluZyA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gTG9nIG1lc3NhZ2UgZnJvbSB3b3JrZXIKKyAgICAgICAgbG9nKGV2dC5kYXRhKTsKKyAgICB9
Cit9CisKKy8vIEtlZXAgY2xvbmluZyB0aGUgcGFzc2VkIHBvcnQgdW50aWwgd2UncmUgdG9sZCB0
byBzdG9wLgordmFyIG51bUNsb25lcyA9IDA7CitmdW5jdGlvbiByZXNlbmRQb3J0KGV2dCkKK3sK
KyAgICBpZiAoIXN0b3BDbG9uaW5nKSB7CisgICAgICAgIG51bUNsb25lcysrOworICAgICAgICBl
dnQudGFyZ2V0LnBvc3RNZXNzYWdlKCIiLCBldnQubWVzc2FnZVBvcnQpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChudW1DbG9uZXMgPCAxMDAwKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBk
aWRuJ3QgY2xvbmUgYXQgbGVhc3QgMTAwMCB0aW1lcywgdGhlbiB0aGVyZSdzIHNvbWV0aGluZyBh
bWlzcy4KKyAgICAgICAgICAgIGxvZygiRkFJTDogcG9zdEJhY2sgY29tcGxldGUsIGJ1dCBvbmx5
IGNsb25lZCAiICsgbnVtQ2xvbmVzICsgIiB0aW1lcy4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGxvZygiUEFTUzogcG9zdEJhY2sgY29tcGxldGUsIGNsb25lZCA+IDEwMDAgdGlt
ZXMuIik7CisgICAgICAgIH0KKyAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBtZXNzYWdlcyBhcnJp
dmVkIGluIG9yZGVyLgorICAgICAgICB2YXIgaXRlbU51bSA9IDA7CisgICAgICAgIC8vIFF1ZXVl
IHVwIGEgdGFzayB0byBleGVjdXRlIG9uY2UgdGhlIG1lc3NhZ2VzIGhhdmUgYmVlbiBwcm9jZXNz
ZWQuIFRoZSB0aW1lb3V0IHZhbHVlIGRvZXNuJ3QgbWF0dGVyLCBzaW5jZSB0aW1lcnMgd29uJ3Qg
ZmlyZSB1bnRpbCB0aGUgbWVzc2FnZSBxdWV1ZSBpcyBjbGVhcmVkLgorICAgICAgICB2YXIgdGlt
ZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbG9nKCJGQUlMVVJFOiBS
ZWNlaXZlZDogIiArIGl0ZW1OdW0gKyAiIGV2ZW50cyAtIGV4cGVjdGVkOiAiICsgbnVtTWVzc2Fn
ZXMpOworICAgICAgICB9LCAxMCk7CisgICAgICAgIGV2dC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgdmFyIGRvbmUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmIChldmVudC5kYXRhID09IGl0ZW1OdW0pIHsKKyAgICAgICAgICAgICAgICBpdGVt
TnVtKys7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW1OdW0gPT0gbnVtTWVzc2FnZXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbG9nKCJTVUNDRVNTIC0gcmVjZWl2ZWQgIiArIG51bU1lc3NhZ2Vz
ICsgIiBtZXNzYWdlcy4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2co
IkZBSUxVUkU6IE91dCBvZiBvcmRlciBtZXNzYWdlOiBleHBlY3RlZCAjOiAiICsgaXRlbU51bSAr
ICIsIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CisgICAgICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOworICAg
ICAgICAgICAgaWYgKGRvbmUpIHsKKyAgICAgICAgICAgICAgICBnYygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQocmVwb3J0RG9uZSwgMTAwKTsgIC8vIE1ha2Ugc3VyZSBubyB1bmV4cGVj
dGVkIGV2ZW50cyBjb21lIGluLgorICAgICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICAgZXZ0
Lm1lc3NhZ2VQb3J0LnN0YXJ0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBnYygpCit7CisgICAg
aWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29s
bGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vIGZvcmNl
IGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVm
b3JlIGEgY29sbGVjdCkuCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAg
fQorfQorZnVuY3Rpb24gcmVwb3J0RG9uZSgpCit7CisgICAgIGxvZygiRE9ORSIpOworICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwt
ZGlzYWJsZWQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1s
LWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWQyYzYzLi4wMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwtZGlz
YWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IE1l
c3NhZ2VQb3J0IG1lc3NhZ2luZy9lbnRhbmdsZS9kZXRhbmdsZSBhY3Jvc3MgdGhyZWFkcy4gU2hv
dWxkIHByaW50ICJTVUNDRVNTIiB3aGVuIGRvbmUuPC9wPgotPGRpdiBpZD1yZXN1bHQ+PC9kaXY+
Ci08c2NyaXB0PgotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKLX0KLQotCi12YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwotdmFyIG51bU1l
c3NhZ2VzID0gNTAwMDA7Ci0KLS8vIENyZWF0ZSBhIGNoYW5uZWwgd2hpY2ggd2Ugd2lsbCB1c2Ug
dG8gY2xvbmUgYW5kIHJlLWNsb25lIG9uZSBlbmQgb2YgYQotLy8gTWVzc2FnZUNoYW5uZWwuCi12
YXIgY2xvbmVDaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7Ci12YXIgc3RvcENsb25pbmcg
PSBmYWxzZTsKLWNsb25lQ2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjbG9uZUNoYW5uZWwucG9y
dDIub25tZXNzYWdlID0gcmVzZW5kUG9ydDsKLWNsb25lQ2hhbm5lbC5wb3J0MS5zdGFydCgpOwot
Y2xvbmVDaGFubmVsLnBvcnQyLnN0YXJ0KCk7Ci1jbG9uZUNoYW5uZWwucG9ydDEucG9zdE1lc3Nh
Z2UoIiIsIGNoYW5uZWwucG9ydDIpOwotCi0vLyBDcmVhdGUgd29ya2VyIHdpdGggb3RoZXIgZW5k
IG9mIHBvcnQgYW5kIGhhdmUgaXQgc2VuZCBtZXNzYWdlcyBiYWNrIHRvIHVzCi0vLyB3aGlsZSB3
ZSBjbG9uZSBvdXIgZW5kIG9mIHRoZSBwb3J0IHJlcGVhdGVkbHkuCi12YXIgd29ya2VyID0gbmV3
IFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1jbG9uZXBvcnQuanMiKTsKLXdvcmtlci5wb3N0TWVz
c2FnZSgicG9zdEJhY2sgIiArIG51bU1lc3NhZ2VzLCBjaGFubmVsLnBvcnQxKTsKLQotLy8gVGVz
dCBwb3N0aW5nIGJhY2sgNTAwMDAgbWVzc2FnZXMsIG1ha2Ugc3VyZSBvcmRlcmluZyBpcyBmaW5l
Ci13b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgaWYgKGV2dC5kYXRhID09
ICJwb3N0QmFja0RvbmUiKSB7Ci0gICAgICAgIHN0b3BDbG9uaW5nID0gdHJ1ZTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBMb2cgbWVzc2FnZSBmcm9tIHdvcmtlcgotICAgICAgICBsb2coZXZ0
LmRhdGEpOwotICAgIH0KLX0KLQotLy8gS2VlcCBjbG9uaW5nIHRoZSBwYXNzZWQgcG9ydCB1bnRp
bCB3ZSdyZSB0b2xkIHRvIHN0b3AuCi12YXIgbnVtQ2xvbmVzID0gMDsKLWZ1bmN0aW9uIHJlc2Vu
ZFBvcnQoZXZ0KQotewotICAgIGlmICghc3RvcENsb25pbmcpIHsKLSAgICAgICAgbnVtQ2xvbmVz
Kys7Ci0gICAgICAgIGV2dC50YXJnZXQucG9zdE1lc3NhZ2UoIiIsIGV2dC5tZXNzYWdlUG9ydCk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG51bUNsb25lcyA8IDEwMDApIHsKLSAgICAgICAg
ICAgIC8vIElmIHdlIGRpZG4ndCBjbG9uZSBhdCBsZWFzdCAxMDAwIHRpbWVzLCB0aGVuIHRoZXJl
J3Mgc29tZXRoaW5nIGFtaXNzLgotICAgICAgICAgICAgbG9nKCJGQUlMOiBwb3N0QmFjayBjb21w
bGV0ZSwgYnV0IG9ubHkgY2xvbmVkICIgKyBudW1DbG9uZXMgKyAiIHRpbWVzLiIpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbG9nKCJQQVNTOiBwb3N0QmFjayBjb21wbGV0ZSwgY2xv
bmVkID4gMTAwMCB0aW1lcy4iKTsKLSAgICAgICAgfQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhl
IG1lc3NhZ2VzIGFycml2ZWQgaW4gb3JkZXIuCi0gICAgICAgIHZhciBpdGVtTnVtID0gMDsKLSAg
ICAgICAgLy8gUXVldWUgdXAgYSB0YXNrIHRvIGV4ZWN1dGUgb25jZSB0aGUgbWVzc2FnZXMgaGF2
ZSBiZWVuIHByb2Nlc3NlZC4gVGhlIHRpbWVvdXQgdmFsdWUgZG9lc24ndCBtYXR0ZXIsIHNpbmNl
IHRpbWVycyB3b24ndCBmaXJlIHVudGlsIHRoZSBtZXNzYWdlIHF1ZXVlIGlzIGNsZWFyZWQuCi0g
ICAgICAgIHZhciB0aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBs
b2coIkZBSUxVUkU6IFJlY2VpdmVkOiAiICsgaXRlbU51bSArICIgZXZlbnRzIC0gZXhwZWN0ZWQ6
ICIgKyBudW1NZXNzYWdlcyk7Ci0gICAgICAgIH0sIDEwKTsKLSAgICAgICAgZXZ0Lm1lc3NhZ2VQ
b3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgICAgICB2YXIgZG9uZSA9
IGZhbHNlOwotICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT0gaXRlbU51bSkgewotICAgICAg
ICAgICAgICAgIGl0ZW1OdW0rKzsKLSAgICAgICAgICAgICAgICBpZiAoaXRlbU51bSA9PSBudW1N
ZXNzYWdlcykgewotICAgICAgICAgICAgICAgICAgICBsb2coIlNVQ0NFU1MgLSByZWNlaXZlZCAi
ICsgbnVtTWVzc2FnZXMgKyAiIG1lc3NhZ2VzLiIpOwotICAgICAgICAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGxvZygiRkFJTFVSRTogT3V0IG9mIG9yZGVyIG1lc3NhZ2U6IGV4cGVjdGVkICM6
ICIgKyBpdGVtTnVtICsgIiwgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKLSAgICAgICAgICAg
ICAgICBkb25lID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNsZWFyVGltZW91
dCh0aW1lcik7Ci0gICAgICAgICAgICBpZiAoZG9uZSkgewotICAgICAgICAgICAgICAgIGdjKCk7
Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXBvcnREb25lLCAxMDApOyAgLy8gTWFrZSBz
dXJlIG5vIHVuZXhwZWN0ZWQgZXZlbnRzIGNvbWUgaW4uCi0gICAgICAgICAgICB9Ci0gICAgICAg
fQotICAgICAgICBldnQubWVzc2FnZVBvcnQuc3RhcnQoKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9u
IGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAgcmV0dXJuIEdD
Q29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBh
bGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KS4KLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5n
KCJhYmMiKTsKLSAgICB9Ci19Ci1mdW5jdGlvbiByZXBvcnREb25lKCkKLXsKLSAgICAgbG9nKCJE
T05FIik7Ci0gICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC1nYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNz
YWdlcG9ydC1nYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4Yzk3
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1l
c3NhZ2Vwb3J0LWdjLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQg
d29ya2VycyBzdGF5IHJlYWNoYWJsZSB2aWEgbWVzc2FnZSBwb3J0cy4KK1Nob3VsZCBwcmludCAi
RE9ORSIgd2hlbiBkb25lLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKKy8vIFRl
c3QgdGhhdCB3b3JrZXJzIHN0YXkgYWxpdmUgZXZlbiB0aG91Z2ggdGhleSBhcmUgb25seSByZWFj
aGFibGUgdmlhIG1lc3NhZ2UgcG9ydHMuCit2YXIgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3Vy
Y2VzL3dvcmtlci1tZXNzYWdlcG9ydC5qcyIpOwordmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNo
YW5uZWwoKTsKK3dvcmtlci5wb3N0TWVzc2FnZSgicG9ydCIsIGNoYW5uZWwucG9ydDEpOword29y
a2VyID0gMDsKKworY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgicGluZyIpOworY2hhbm5lbC5w
b3J0Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAvLyBPdGhlciBzaWRlIGlzIHJ1
bm5pbmcsIG5vdyBmb3JjZSBhIEdDLCB3YWl0IGEgYml0LCBhbmQgc2VuZCBhIG5ldyBtZXNzYWdl
IHRvIG1ha2Ugc3VyZSBpdCBhcnJpdmVzLgorICAgIGdjKCk7CisgICAgc2V0VGltZW91dCh0ZXN0
UmVhY2hhYmxlLCAxMDApOworfQorCitmdW5jdGlvbiB0ZXN0UmVhY2hhYmxlKCkKK3sKKyAgICBj
aGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBsb2coIlBB
U1M6IFdvcmtlciBpcyByZWFjaGFibGUuIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisgICAg
Y2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgicGluZyIpOworfQorCitmdW5jdGlvbiBnYygpCit7
CisgICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xs
ZXIuY29sbGVjdCgpOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8v
IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlv
bnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGxvZygiRE9ORSIpOworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQtZ2Mu
aHRtbC1kaXNhYmxlZCBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBv
cnQtZ2MuaHRtbC1kaXNhYmxlZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhjOTdh
NS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vw
b3J0LWdjLmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi08Ym9k
eT4KLTxwPlRlc3QgdGhhdCB3b3JrZXJzIHN0YXkgcmVhY2hhYmxlIHZpYSBtZXNzYWdlIHBvcnRz
LgotU2hvdWxkIHByaW50ICJET05FIiB3aGVuIGRvbmUuPC9wPgotPGRpdiBpZD1yZXN1bHQ+PC9k
aXY+Ci08c2NyaXB0PgotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOwotfQot
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLX0KLQotLy8gVGVzdCB0aGF0IHdvcmtlcnMgc3RheSBhbGl2ZSBldmVuIHRob3VnaCB0
aGV5IGFyZSBvbmx5IHJlYWNoYWJsZSB2aWEgbWVzc2FnZSBwb3J0cy4KLXZhciB3b3JrZXIgPSBu
ZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLW1lc3NhZ2Vwb3J0LmpzIik7Ci12YXIgY2hhbm5l
bCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwotd29ya2VyLnBvc3RNZXNzYWdlKCJwb3J0IiwgY2hh
bm5lbC5wb3J0MSk7Ci13b3JrZXIgPSAwOwotCi1jaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJw
aW5nIik7Ci1jaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgIC8v
IE90aGVyIHNpZGUgaXMgcnVubmluZywgbm93IGZvcmNlIGEgR0MsIHdhaXQgYSBiaXQsIGFuZCBz
ZW5kIGEgbmV3IG1lc3NhZ2UgdG8gbWFrZSBzdXJlIGl0IGFycml2ZXMuCi0gICAgZ2MoKTsKLSAg
ICBzZXRUaW1lb3V0KHRlc3RSZWFjaGFibGUsIDEwMCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RSZWFj
aGFibGUoKQotewotICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7
Ci0gICAgICAgIGxvZygiUEFTUzogV29ya2VyIGlzIHJlYWNoYWJsZS4iKTsKLSAgICAgICAgZG9u
ZSgpOwotICAgIH0KLSAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJwaW5nIik7Ci19Ci0K
LWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKLSAgICAgICAg
cmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsgLy8gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBh
Ym91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQotICAgICAgICB2YXIgcyA9IG5l
dyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gZG9uZSgpCi17Ci0gICAgbG9n
KCJET05FIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtl
ci1tZXNzYWdlcG9ydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNz
YWdlcG9ydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYTZlYmIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLW1lc3Nh
Z2Vwb3J0Lmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQgcGFnZXMg
YW5kIHdvcmtlcnMgY2FuIHNlbmQgTWVzc2FnZVBvcnRzIHRvIG9uZSBhbm90aGVyLgorU2hvdWxk
IHByaW50ICJET05FIiB3aGVuIGRvbmUuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KwordmFyIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItbWVzc2FnZXBvcnQu
anMiKTsKK3ZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisKKy8vIFNlbmQgbWVz
c2FnZXMgd2l0aCBhbmQgd2l0aG91dCBwb3J0cyB0byB0aGUgd29ya2VyIHRvIG1ha2Ugc3VyZSBp
dCBnZXRzIHRoZW0uCit3b3JrZXIucG9zdE1lc3NhZ2UoIm5vcG9ydCIpOword29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIGxvZyhldnQuZGF0YSk7CisgICAgd29ya2VyLnBv
c3RNZXNzYWdlKCJwb3J0IiwgY2hhbm5lbC5wb3J0MSk7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBsb2coZXZ0LmRhdGEpOworICAgIH0KK307CisKKy8v
IFNlbmQgYSBtZXNzYWdlIG9uIHRoZSBuZXcgcG9ydCB0byBtYWtlIHN1cmUgaXQgZ2V0cyB0byB0
aGUgd29ya2VyLgorY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgicGluZyIpOworCisvLyBXYWl0
IGZvciB0aGUgcmVzcG9uc2UuCitjaGFubmVsLnBvcnQyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgeworICAgIGlmIChldnQuZGF0YSA9PSAicG9uZyIpIHsKKyAgICAgICAgbG9nKCJQQVNTOiBS
ZWNlaXZlZCByZXNwb25zZSBmcm9tIFdvcmtlciB2aWEgTWVzc2FnZVBvcnQiKTsKKyAgICAgICAg
d29ya2VyLm9ubWVzc2FnZSA9IGF3YWl0UG9ydEZyb21Xb3JrZXI7CisgICAgICAgIHdvcmtlci5w
b3N0TWVzc2FnZSgiZ2V0cG9ydCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvZygiRkFJTDog
UmVjZWl2ZWQgdW5rbm93biBldmVudDogIiArIGV2dC5kYXRhKTsKKyAgICB9Cit9CitjaGFubmVs
LnBvcnQyLnN0YXJ0KCk7CisKKy8vIEludm9rZWQgb25jZSB0aGUgZmlyc3QgYmF0Y2ggb2YgdGVz
dHMgYXJlIGRvbmUsIHRvIHRlc3Qgc2VuZGluZyBmcm9tIHRoZSB3b3JrZXIuCitmdW5jdGlvbiBh
d2FpdFBvcnRGcm9tV29ya2VyKGV2dCkKK3sKKyAgICBpZiAoZXZ0LmRhdGEgPT0gInBvcnQiKSB7
CisgICAgICAgIGlmICghZXZ0Lm1lc3NhZ2VQb3J0KSB7CisgICAgICAgICAgICBsb2coIkZBSUw6
IERpZCBub3QgZ2V0IHBvcnQgZnJvbSB3b3JrZXIiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGxvZygiUEFTUzogR290IHBvcnQgZnJvbSB3b3JrZXIiKTsKKyAgICAgICAgICAgIGV2
dC5tZXNzYWdlUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOworICAgICAgICAgICAgZXZ0Lm1lc3Nh
Z2VQb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgICAgIGlmIChl
dnQuZGF0YSA9PSAicG9uZyIpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBSZWNl
aXZlZCBmaW5hbCByZXNwb25zZSBmcm9tIHdvcmtlciIpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIGxvZygiRkFJTDogR290IHVuZXhwZWN0ZWQgcmVzcG9u
c2U6ICIgKyBldnQuZGF0YSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0
YXJ0U3BhbVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV2dC5tZXNzYWdlUG9y
dC5zdGFydCgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9nKGV2dC5kYXRh
KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHN0YXJ0U3BhbVRlc3QoKQoreworICAgIHZhciBjaGFu
bmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uICgpIHsgZ290U3BhbShjaGFubmVsLnBvcnQxKTsgfQorICAgIHdvcmtlci5wb3N0TWVzc2Fn
ZSgic3BhbSIsIGNoYW5uZWwucG9ydDIpOworfQorCitmdW5jdGlvbiBnb3RTcGFtKHBvcnQpCit7
CisgICAgdmFyIHNwYW1Db3VudCA9IDA7CisgICAgcG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhICE9IHNwYW1Db3VudCkKKyAgICAgICAgICAgIGxv
ZygiRkFJTDogR290IG91dCBvZiBvcmRlciBtZXNzYWdlOiAiICsgc3BhbUNvdW50KTsKKyAgICAg
ICAgc3BhbUNvdW50Kys7CisgICAgICAgIGlmIChzcGFtQ291bnQgPT0gMTAwMCkgeworICAgICAg
ICAgICAgbG9nKCJQQVNTOiBHb3QgMTAwMCBtZXNzYWdlcyIpOworICAgICAgICAgICAgZG9uZSgp
OworICAgICAgICB9CisgICAgfQorfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBsb2coIkRP
TkUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1tZXNz
YWdlcG9ydC5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC5odG1sLWRpc2FibGVkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
MmE2ZWJiLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItbWVz
c2FnZXBvcnQuaHRtbC1kaXNhYmxlZAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLTxi
b2R5PgotPHA+VGVzdCB0aGF0IHBhZ2VzIGFuZCB3b3JrZXJzIGNhbiBzZW5kIE1lc3NhZ2VQb3J0
cyB0byBvbmUgYW5vdGhlci4KLVNob3VsZCBwcmludCAiRE9ORSIgd2hlbiBkb25lLjwvcD4KLTxk
aXYgaWQ9cmVzdWx0PjwvZGl2PgotPHNjcmlwdD4KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2Fn
ZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCJyZXNv
dXJjZXMvd29ya2VyLW1lc3NhZ2Vwb3J0LmpzIik7Ci12YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdl
Q2hhbm5lbCgpOwotCi0vLyBTZW5kIG1lc3NhZ2VzIHdpdGggYW5kIHdpdGhvdXQgcG9ydHMgdG8g
dGhlIHdvcmtlciB0byBtYWtlIHN1cmUgaXQgZ2V0cyB0aGVtLgotd29ya2VyLnBvc3RNZXNzYWdl
KCJub3BvcnQiKTsKLXdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICBsb2co
ZXZ0LmRhdGEpOwotICAgIHdvcmtlci5wb3N0TWVzc2FnZSgicG9ydCIsIGNoYW5uZWwucG9ydDEp
OwotICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgbG9nKGV2
dC5kYXRhKTsKLSAgICB9Ci19OwotCi0vLyBTZW5kIGEgbWVzc2FnZSBvbiB0aGUgbmV3IHBvcnQg
dG8gbWFrZSBzdXJlIGl0IGdldHMgdG8gdGhlIHdvcmtlci4KLWNoYW5uZWwucG9ydDIucG9zdE1l
c3NhZ2UoInBpbmciKTsKLQotLy8gV2FpdCBmb3IgdGhlIHJlc3BvbnNlLgotY2hhbm5lbC5wb3J0
Mi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmci
KSB7Ci0gICAgICAgIGxvZygiUEFTUzogUmVjZWl2ZWQgcmVzcG9uc2UgZnJvbSBXb3JrZXIgdmlh
IE1lc3NhZ2VQb3J0Iik7Ci0gICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBhd2FpdFBvcnRGcm9t
V29ya2VyOwotICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoImdldHBvcnQiKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBsb2coIkZBSUw6IFJlY2VpdmVkIHVua25vd24gZXZlbnQ6ICIgKyBldnQu
ZGF0YSk7Ci0gICAgfQotfQotY2hhbm5lbC5wb3J0Mi5zdGFydCgpOwotCi0vLyBJbnZva2VkIG9u
Y2UgdGhlIGZpcnN0IGJhdGNoIG9mIHRlc3RzIGFyZSBkb25lLCB0byB0ZXN0IHNlbmRpbmcgZnJv
bSB0aGUgd29ya2VyLgotZnVuY3Rpb24gYXdhaXRQb3J0RnJvbVdvcmtlcihldnQpCi17Ci0gICAg
aWYgKGV2dC5kYXRhID09ICJwb3J0IikgewotICAgICAgICBpZiAoIWV2dC5tZXNzYWdlUG9ydCkg
ewotICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IGdldCBwb3J0IGZyb20gd29ya2VyIik7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsb2coIlBBU1M6IEdvdCBwb3J0IGZyb20g
d29ya2VyIik7Ci0gICAgICAgICAgICBldnQubWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoInBpbmci
KTsKLSAgICAgICAgICAgIGV2dC5tZXNzYWdlUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQp
IHsKLSAgICAgICAgICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmciKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGxvZygiUEFTUzogUmVjZWl2ZWQgZmluYWwgcmVzcG9uc2UgZnJvbSB3b3JrZXIi
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBsb2coIkZB
SUw6IEdvdCB1bmV4cGVjdGVkIHJlc3BvbnNlOiAiICsgZXZ0LmRhdGEpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBzdGFydFNwYW1UZXN0KCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBldnQubWVzc2FnZVBvcnQuc3RhcnQoKTsKLSAgICAgICAgfQotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGxvZyhldnQuZGF0YSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBzdGFydFNw
YW1UZXN0KCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOwotICAg
IHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7IGdvdFNwYW0oY2hhbm5lbC5wb3J0MSk7
IH0KLSAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInNwYW0iLCBjaGFubmVsLnBvcnQyKTsKLX0KLQot
ZnVuY3Rpb24gZ290U3BhbShwb3J0KQotewotICAgIHZhciBzcGFtQ291bnQgPSAwOwotICAgIHBv
cnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSAhPSBz
cGFtQ291bnQpCi0gICAgICAgICAgICBsb2coIkZBSUw6IEdvdCBvdXQgb2Ygb3JkZXIgbWVzc2Fn
ZTogIiArIHNwYW1Db3VudCk7Ci0gICAgICAgIHNwYW1Db3VudCsrOwotICAgICAgICBpZiAoc3Bh
bUNvdW50ID09IDEwMDApIHsKLSAgICAgICAgICAgIGxvZygiUEFTUzogR290IDEwMDAgbWVzc2Fn
ZXMiKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotZnVuY3Rp
b24gZG9uZSgpCi17Ci0gICAgbG9nKCJET05FIik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwot
fQotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0
L2V2ZW50LWxpc3RlbmVyLWNvbnRleHQtZXhwZWN0ZWQudHh0CmluZGV4IDE4YzJlODIuLjk0YTY3
OTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBv
cnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9NZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0LWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIFRlc3QgdGhhdCBKUyBjb2RlIGNhbm5vdCBiZSBw
bGFudGVkIGludG8gYW4gdW5zdXNwZWN0aW5nIHN1YmZyYW1lIHZpYSBNZXNzYWdlUG9ydCBhbmQg
bmF2aWdhdGlvbi4KIAotUEFTUworUEFTUzogZ290IGV4Y2VwdGlvbiB3aGlsZSBjcmVhdGluZyBw
b3J0IGZyb20gY2xvc2VkIGZyYW1lJ3MgY29uc3RydWN0b3I6IFJlZmVyZW5jZUVycm9yOiBNZXNz
YWdlQ2hhbm5lbCBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxl
CitET05FCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVz
c2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9NZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ5ZmI0YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlz
dGVuZXItY29udGV4dC5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0
IEpTIGNvZGUgY2Fubm90IGJlIHBsYW50ZWQgaW50byBhbiB1bnN1c3BlY3Rpbmcgc3ViZnJhbWUg
dmlhIE1lc3NhZ2VQb3J0IGFuZCBuYXZpZ2F0aW9uLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisKK3ZhciBjbG9zdXJlOwordmFyIGZhaWxlZDsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAg
ZmFpbGVkID0gZmFsc2U7CisgICAgY2xvc3VyZSA9IHdpbmRvdy5mcmFtZXNbMF0uY3JlYXRlQ2xv
c3VyZSgpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXS5v
bmxvYWQgPSB0ZXN0MjsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uID0gInJlc291cmNl
cy9iYW5raW5nLXNpdGUuaHRtbCI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgIHRyeSB7
CisgICAgICB2YXIgY2hhbm5lbCA9IGNsb3N1cmUoKTsKKyAgICB9IGNhdGNoIChleCkgeworICAg
ICAgbG9nKCJQQVNTOiBnb3QgZXhjZXB0aW9uIHdoaWxlIGNyZWF0aW5nIHBvcnQgZnJvbSBjbG9z
ZWQgZnJhbWUncyBjb25zdHJ1Y3RvcjogIiArIGV4KTsKKyAgICAgIGRvbmUoKTsKKyAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgbG9nKCJGQUlMOiBDcmVhdGluZyBNZXNzYWdlQ2hhbm5lbCBmcm9t
IGNsb3NlZCBmcmFtZSBkb2VzIG5vdCB0aHJvdyBleGNlcHRpb24iKTsKKyAgICBkb25lKCk7Cit9
CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGxvZygiRE9ORSIpOworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL2F0dGFja2Vy
LWZyYW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlz
dGVuZXItY29udGV4dC5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9NZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0Lmh0bWwtZGlzYWJsZWQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ODRhMWIuLjAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9NZXNzYWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250
ZXh0Lmh0bWwtZGlzYWJsZWQKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08Ym9keT4K
LTxwPlRlc3QgdGhhdCBKUyBjb2RlIGNhbm5vdCBiZSBwbGFudGVkIGludG8gYW4gdW5zdXNwZWN0
aW5nIHN1YmZyYW1lIHZpYSBNZXNzYWdlUG9ydCBhbmQgbmF2aWdhdGlvbi48L3A+Ci08cHJlIGlk
PWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7
Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotCi12YXIgY2xvc3VyZTsKLXZhciBtYWluUG9ydDsKLXZhciBmYWlsZWQ7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGZhaWxlZCA9IGZhbHNlOwotICAgIGNsb3N1cmUg
PSB3aW5kb3cuZnJhbWVzWzBdLmNyZWF0ZUNsb3N1cmUoKTsKLSAgICBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0ub25sb2FkID0gdGVzdDI7Ci0gICAgd2luZG93LmZy
YW1lc1swXS5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvYmFua2luZy1zaXRlLmh0bWwiOwotfQotCi1m
dW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgbWFpblBvcnQgPSBjbG9zdXJlKCk7Ci0gICAgbWFpblBv
cnQucG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldnQpIHsgaWYgKC9zZW5zaXRpdmUvLnRlc3QoZXZ0LmRhdGEpKSBmYWlsZWQgPSB0cnVlOyB9
Ci0gICAgbWFpblBvcnQuc3RhcnQoKTsKLSAgICBzZXRUaW1lb3V0KHRlc3QzLCAxMDApOwotfQot
Ci1mdW5jdGlvbiB0ZXN0MygpCi17Ci0gICAgbG9nKGZhaWxlZCA/ICJGQUlMIiA6ICJQQVNTIik7
Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwvc2NyaXB0PgotPGlmcmFtZSBzcmM9
InJlc291cmNlcy9hdHRhY2tlci1mcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+
Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L01l
c3NhZ2VQb3J0L3Jlc291cmNlcy9hdHRhY2tlci1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9NZXNzYWdlUG9ydC9yZXNvdXJjZXMvYXR0YWNrZXItZnJhbWUuaHRt
bAppbmRleCBhZTdjYjAzLi5kM2JhOGU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0L3Jlc291cmNlcy9hdHRhY2tlci1mcmFtZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBvcnQvcmVzb3VyY2Vz
L2F0dGFja2VyLWZyYW1lLmh0bWwKQEAgLTQsMTEgKzQsNyBAQCB3aW5kb3cuY3JlYXRlQ2xvc3Vy
ZSA9IGZ1bmN0aW9uKCkgewogICAgIHZhciBNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yID0gd2lu
ZG93Lk1lc3NhZ2VDaGFubmVsOwogICAgIHZhciBjaGFubmVsOwogICAgIHJldHVybiBmdW5jdGlv
bigpIHsKLSAgICAgICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yOwot
ICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeyBjaGFubmVsLnBv
cnQxLnBvc3RNZXNzYWdlKGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MKSB9Ci0gICAgICAgIGNoYW5u
ZWwucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKCkgeyBjaGFubmVs
LnBvcnQxLnBvc3RNZXNzYWdlKGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MKSB9LCBmYWxzZSk7Ci0g
ICAgICAgIGNoYW5uZWwucG9ydDEuc3RhcnQoKTsKLSAgICAgICAgcmV0dXJuIGNoYW5uZWwucG9y
dDI7CisgICAgICAgIHJldHVybiBuZXcgTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3RvcjsKICAgICB9
CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggY2I1MDViNi4uZWIwYTM0YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAwOS0wNy0w
OCAgRHJldyBXaWxzb24gIDxhdHdpbHNvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNjkwMworCisgICAgICAgIFR1cm5lZCBvbiBDSEFOTkVMX01FU1NBR0lO
RyBieSBkZWZhdWx0IGJlY2F1c2UgdGhlIE1lc3NhZ2VDaGFubmVsIEFQSQorICAgICAgICBjYW4g
bm93IGJlIGltcGxlbWVudGVkIGZvciBXZWIgV29ya2VycyBhbmQgaXMgcmVhc29uYWJseSBzdGFi
bGUuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0yLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0zLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy00Lmh0bWwKKyAg
ICAgICAgICAgICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3du
ZXJzaGlwLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jbG9u
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtY29uc3RydWN0
b3ItZm9yLWRlbGV0ZWQtZG9jdW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1uby13cmFwcGVyLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dv
cmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3dvcmtlcnMv
d29ya2VyLW1lc3NhZ2Vwb3J0LWdjLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvd29ya2Vycy93
b3JrZXItbWVzc2FnZXBvcnQuaHRtbAorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWc6CisgICAgICAgIFR1cm5lZCBvbiBFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcuCisKIDIwMDktMDctMDYgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZTEzMjJiNy4uYmU5NmQy
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZworKysgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
CkBAIC0zMCw3ICszMCw3IEBACiBFTkFCTEVfM0RfUkVOREVSSU5HID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HXyQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwogRU5BQkxFXzNEX1JFTkRFUklOR18x
MDYwID0gRU5BQkxFXzNEX1JFTkRFUklORzsKIAotRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0g
OworRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HID0gRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HOwog
RU5BQkxFX0RBVEFCQVNFID0gRU5BQkxFX0RBVEFCQVNFOwogRU5BQkxFX0RBVEFHUklEID0gRU5B
QkxFX0RBVEFHUklEOwogRU5BQkxFX0RPTV9TVE9SQUdFID0gRU5BQkxFX0RPTV9TVE9SQUdFOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlQ29tbW9uLnZzcHJvcHMg
Yi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24udnNwcm9wcwppbmRleCBhZTY3
YWE3Li5kMzRiNDk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVD
b21tb24udnNwcm9wcworKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmVDb21tb24u
dnNwcm9wcwpAQCAtOCw3ICs4LDcgQEAKIAk8VG9vbA0KIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCINCiAJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoUHJvamVjdERpciku
LlwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxhY2Nlc3NpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxhY2Nlc3NpYmlsaXR5
XHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxicmlkZ2VcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cY3NzJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxlZGl0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxyZW5kZXJpbmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGRvbSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZG9tXGRlZmF1bHQmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2Fk
ZXJcYXBwY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBh
Z2UmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxh
dGZvcm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGFuaW1hdGlvbiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwbGF0Zm9ybVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XG5ldHdvcmsmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdvcmtcd2lu
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXGdyYXBoaWNzXG9wZW50eXBlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxncmFwaGljc1x0cmFuc2Zvcm1zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVx0ZXh0JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGlj
c1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHhtbCZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcb2JqXFdlYkNvcmVcRGVyaXZlZFNvdXJjZXMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsdWdpbnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsdWdpbnNcd2lu
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxzdmcmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHdtbCZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cc3RvcmFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cd29ya2VycyZx
dW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktp
dE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZx
dW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxP
U1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7Ig0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM9Il9fV0lOMzJfXztXRUJDT1JFX0NPTlRFWFRfTUVOVVM7RU5BQkxFX0RBVEFCQVNFO0VOQUJM
RV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047
RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9P
QkpFQ1Q7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1dPUktFUlM7RU5BQkxFX1hQQVRIO0VOQUJMRV9Y
U0xUIg0KKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9fV0lOMzJfXztXRUJDT1JFX0NPTlRF
WFRfTUVOVVM7RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HO0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVf
REFUQUdSSUQ7RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFUQUJBU0U7RU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VO
QUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JK
RUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNM
VCINCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KIAkJUHJlY29tcGlsZWRIZWFkZXJUaHJv
dWdoPSJXZWJDb3JlUHJlZml4LmgiDQogCQlGb3JjZWRJbmNsdWRlRmlsZXM9IldlYkNvcmVQcmVm
aXguaCINCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRl
ZC1maWxlcy5zaCBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVz
LnNoCmluZGV4IDc1Njc0MWEuLjcyNWNhMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCkBAIC02NSw1ICs2NSw1IEBAIG1rZGlyIC1wICIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMiCiBjZCAiJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L0Rlcml2ZWRTb3VyY2VzIgogCiBleHBvcnQgV2ViQ29yZT0iJHtYU1JDUk9PVH0iCi1l
eHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RBVEFHUklEIEVO
QUJMRV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgRU5BQkxFX1NWRyBFTkFCTEVf
U1ZHX0FOSU1BVElPTiBFTkFCTEVfU1ZHX0FTX0lNQUdFIEVOQUJMRV9TVkdfRk9OVFMgRU5BQkxF
X1NWR19GT1JFSUdOX09CSkVDVCBFTkFCTEVfU1ZHX1VTRSBFTkFCTEVfVklERU8gRU5BQkxFX1dP
UktFUlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9YU0xUIgorZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0i
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HIEVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfREFUQUdSSUQg
RU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfU1ZHIEVOQUJM
RV9TVkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19GT05UUyBFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9WSURFTyBFTkFCTEVf
V09SS0VSUyBFTkFCTEVfWFBBVEggRU5BQkxFX1hTTFQiCiBtYWtlIC1mICIkV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlIiAtaiAke05VTUNQVVN9IHx8IGV4aXQgMQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBjMDRhYTQ3Li5k
MTdmM2Q1IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA3LTAxICBEcmV3IFdpbHNvbiAgPGF0
d2lsc29uQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTAz
CisKKyAgICAgICAgVHVybmVkIG9uIENIQU5ORUxfTUVTU0FHSU5HIGJ5IGRlZmF1bHQgYmVjYXVz
ZSB0aGUgTWVzc2FnZUNoYW5uZWwgQVBJCisgICAgICAgIGNhbiBub3cgYmUgaW1wbGVtZW50ZWQg
Zm9yIFdlYiBXb3JrZXJzIGFuZCBpcyByZWFzb25hYmx5IHN0YWJsZS4KKworICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA3LTA2ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRlbGUgUGV0ZXJzb24uCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwppbmRleCBlMTMyMmI3Li5iZTk2ZDI1IDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1dlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTMwLDcgKzMw
LDcgQEAKIEVOQUJMRV8zRF9SRU5ERVJJTkcgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkdfJChNQUNf
T1NfWF9WRVJTSU9OX01BSk9SKSk7CiBFTkFCTEVfM0RfUkVOREVSSU5HXzEwNjAgPSBFTkFCTEVf
M0RfUkVOREVSSU5HOwogCi1FTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSA7CitFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkc7CiBFTkFCTEVfREFUQUJB
U0UgPSBFTkFCTEVfREFUQUJBU0U7CiBFTkFCTEVfREFUQUdSSUQgPSBFTkFCTEVfREFUQUdSSUQ7
CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVfRE9NX1NUT1JBR0U7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGIxNGUxMTQu
LmMzM2E1NTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDctMDggIERyZXcgV2lsc29uICA8
YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5
MDMKKworICAgICAgICBUdXJuZWQgb24gQ0hBTk5FTF9NRVNTQUdJTkcgYnkgZGVmYXVsdCBiZWNh
dXNlIHRoZSBNZXNzYWdlQ2hhbm5lbCBBUEkKKyAgICAgICAgY2FuIG5vdyBiZSBpbXBsZW1lbnRl
ZCBmb3IgV2ViIFdvcmtlcnMgYW5kIGlzIHJlYXNvbmFibHkgc3RhYmxlLgorCisgICAgICAgKiBX
ZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2o6CiAyMDA5LTA3LTAyICBFcmlrIEFydmlkc3NvbiAg
PGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qIGIvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKaW5kZXggOGVlOTc0OS4uOTFkZDYzYyAx
MDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKKysrIGIv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC52Y3Byb2oKQEAgLTQwLDcgKzQwLDcgQEAK
IAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxJ
bmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYktp
dCZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilc
SW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
XFdlYkNvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVk
ZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGly
KVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJ
bmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxpY3Um
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7
JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0
aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVc
Q29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJL
aXRPdXRwdXREaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRl
cnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmls
aXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90
OyQoSW50RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2Vi
S2l0XERlcml2ZWRTb3VyY2VzJnF1b3Q7Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0i
X1VTUkRMTDtXRUJLSVRfRVhQT1JUUztGUkFNRVdPUktfTkFNRT1XZWJLaXQ7RU5BQkxFX0RBVEFC
QVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFT
RTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19B
TklNQVRJT047RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1ZJREVPO0VOQUJMRV9XT1JLRVJT
O0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNMVCINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9
Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0O0VOQUJMRV9DSEFO
TkVMX01FU1NBR0lORztFTkFCTEVfREFUQUJBU0U7RU5BQkxFX0RBVEFHUklEO0VOQUJMRV9ET01f
U1RPUkFHRTtFTkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lNQUdFO0VO
QUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVDtFTkFCTEVfU1ZHX1VTRTtF
TkFCTEVfVklERU87RU5BQkxFX1dPUktFUlM7RU5BQkxFX1hQQVRIO0VOQUJMRV9YU0xUIg0KIAkJ
CQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdo
PSJXZWJLaXRQcmVmaXguaCINCiAJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSJXZWJLaXRQcmVmaXgu
aCINCkBAIC0xMTYsNyArMTE2LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQogCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxpbmNsdWRlXFdlYktpdCZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilc
SW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90Ozsm
cXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRw
dXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7
OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVc
Q29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhl
YWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRp
b25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmls
aXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi4m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdl
YkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90OyQoSW50RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViS2l0XERlcml2ZWRTb3VyY2VzJnF1b3Q7Ig0KLQkJCQlQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtXRUJLSVRfRVhQT1JUUztGUkFNRVdPUktf
TkFNRT1XZWJLaXQ7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NU
T1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
O0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NWR19BU19JTUFHRTtFTkFC
TEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NWR19VU0U7RU5B
QkxFX1ZJREVPO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNMVCINCisJCQkJ
UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JL
X05BTUU9V2ViS2l0O0VOQUJMRV9DSEFOTkVMX01FU1NBR0lORztFTkFCTEVfREFUQUJBU0U7RU5B
QkxFX0RBVEFHUklEO0VOQUJMRV9ET01fU1RPUkFHRTtFTkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElP
TjtFTkFCTEVfU1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NWR19GT1JFSUdO
X09CSkVDVDtFTkFCTEVfU1ZHX1VTRTtFTkFCTEVfVklERU87RU5BQkxFX1dPUktFUlM7RU5BQkxF
X1hQQVRIO0VOQUJMRV9YU0xUIg0KIAkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCQkJ
UHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSJXZWJLaXRQcmVmaXguaCINCiAJCQkJRm9yY2VkSW5j
bHVkZUZpbGVzPSJXZWJLaXRQcmVmaXguaCINCkBAIC0xOTEsNyArMTkxLDcgQEAKIAkJCTxUb29s
DQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGly
ZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRlXFdlYktpdCZxdW90Ozsm
cXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxX
ZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5n
SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3Jl
XEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRl
XEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
XEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXGlj
dSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhl
YWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5k
YXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29t
cGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3Jl
Rm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpXC4uXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90OyQoSW50RGly
KVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViS2l0XERlcml2
ZWRTb3VyY2VzJnF1b3Q7Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtX
RUJLSVRfRVhQT1JUUztGUkFNRVdPUktfTkFNRT1XZWJLaXQ7RU5BQkxFX0RBVEFCQVNFO0VOQUJM
RV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVf
T0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047
RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9P
QkpFQ1Q7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1ZJREVPO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9Y
UEFUSDtFTkFCTEVfWFNMVCINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7
V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0O0VOQUJMRV9DSEFOTkVMX01FU1NB
R0lORztFTkFCTEVfREFUQUJBU0U7RU5BQkxFX0RBVEFHUklEO0VOQUJMRV9ET01fU1RPUkFHRTtF
TkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxF
X1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdf
Rk9OVFM7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVDtFTkFCTEVfU1ZHX1VTRTtFTkFCTEVfVklE
RU87RU5BQkxFX1dPUktFUlM7RU5BQkxFX1hQQVRIO0VOQUJMRV9YU0xUIg0KIAkJCQlVc2VQcmVj
b21waWxlZEhlYWRlcj0iMiINCiAJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSJXZWJLaXRQ
cmVmaXguaCINCiAJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJmYWxzZSINCkBA
IC0yNjksNyArMjY5LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
DQogCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoV2ViS2l0T3V0cHV0
RGlyKVxpbmNsdWRlXFdlYktpdCZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcSW5jbHVk
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIp
XEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90
OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQo
V2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQo
V2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcQ29yZUZv
dW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMm
cXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NY
Q29tcGF0aWJpbGl0eUhlYWRlcnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVh
ZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilcLi4mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uXFdlYkNvcmVT
dXBwb3J0JnF1b3Q7OyZxdW90OyQoSW50RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcV2ViS2l0XERlcml2ZWRTb3VyY2VzJnF1b3Q7Ig0KLQkJCQlQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtXRUJLSVRfRVhQT1JUUztGUkFNRVdPUktfTkFNRT1X
ZWJLaXQ7RU5BQkxFX0RBVEFCQVNFO0VOQUJMRV9EQVRBR1JJRDtFTkFCTEVfRE9NX1NUT1JBR0U7
RU5BQkxFX0lDT05EQVRBQkFTRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJM
RV9TVkc7RU5BQkxFX1NWR19BTklNQVRJT047RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZH
X0ZPTlRTO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1dP
UktFUlM7RU5BQkxFX1hQQVRIO0VOQUJMRV9YU0xUIg0KKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz0iX1VTUkRMTDtXRUJLSVRfRVhQT1JUUztGUkFNRVdPUktfTkFNRT1XZWJLaXQ7RU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HO0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxF
X0RPTV9TVE9SQUdFO0VOQUJMRV9JQ09OREFUQUJBU0U7RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdfQVNfSU1B
R0U7RU5BQkxFX1NWR19GT05UUztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdf
VVNFO0VOQUJMRV9XT1JLRVJTO0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNMVCINCiAJCQkJVXNlUHJl
Y29tcGlsZWRIZWFkZXI9IjIiDQogCQkJCVByZWNvbXBpbGVkSGVhZGVyVGhyb3VnaD0iV2ViS2l0
UHJlZml4LmgiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iV2ViS2l0UHJlZml4LmgiDQpAQCAt
MzQ4LDcgKzM0OCw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
IAkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZVxXZWJLaXQmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXEluY2x1ZGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChX
ZWJLaXRPdXRwdXREaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcSW5jbHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJ
bmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJy
YXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDsk
KFdlYktpdE91dHB1dERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdE91dHB1dERpcilcSW5jbHVkZVxpY3UmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXEluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRl
XHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXENvcmVGb3Vu
ZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENvbXBhdGliaWxpdHlIZWFkZXJzJnF1
b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxJbmNsdWRlXENvcmVGb3VuZGF0aW9uXE9TWENv
bXBhdGliaWxpdHlIZWFkZXJzXEdOVUNvbXBhdGliaWxpdHkmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRl
cnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpXC4uJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLlxXZWJDb3JlU3Vw
cG9ydCZxdW90OzsmcXVvdDskKEludERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91
dHB1dERpcilcb2JqXFdlYktpdFxEZXJpdmVkU291cmNlcyZxdW90OyINCi0JCQkJUHJlcHJvY2Vz
c29yRGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2Vi
S2l0O0VOQUJMRV9EQVRBQkFTRTtFTkFCTEVfREFUQUdSSUQ7RU5BQkxFX0RPTV9TVE9SQUdFO0VO
QUJMRV9JQ09OREFUQUJBU0U7RU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVf
U1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19G
T05UUztFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9XT1JL
RVJTO0VOQUJMRV9YUEFUSDtFTkFCTEVfWFNMVCINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlv
bnM9Il9VU1JETEw7V0VCS0lUX0VYUE9SVFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0O0VOQUJMRV9D
SEFOTkVMX01FU1NBR0lORztFTkFCTEVfREFUQUJBU0U7RU5BQkxFX0RBVEFHUklEO0VOQUJMRV9E
T01fU1RPUkFHRTtFTkFCTEVfSUNPTkRBVEFCQVNFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lNQUdF
O0VOQUJMRV9TVkdfRk9OVFM7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVDtFTkFCTEVfU1ZHX1VT
RTtFTkFCTEVfV09SS0VSUztFTkFCTEVfWFBBVEg7RU5BQkxFX1hTTFQiDQogCQkJCVVzZVByZWNv
bXBpbGVkSGVhZGVyPSIyIg0KIAkJCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IldlYktpdFBy
ZWZpeC5oIg0KIAkJCQlGb3JjZWRJbmNsdWRlRmlsZXM9IldlYktpdFByZWZpeC5oIg0KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRl
eCA5OTMxMTNjLi4wZTVlYzY1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMDEgIERy
ZXcgV2lsc29uICA8YXR3aWxzb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjY5MDMKKworICAgICAgICBUdXJuZWQgb24gQ0hBTk5FTF9NRVNTQUdJTkcgYnkg
ZGVmYXVsdCBiZWNhdXNlIHRoZSBNZXNzYWdlQ2hhbm5lbCBBUEkKKyAgICAgICAgY2FuIG5vdyBi
ZSBpbXBsZW1lbnRlZCBmb3IgV2ViIFdvcmtlcnMgYW5kIGlzIHJlYXNvbmFibHkgc3RhYmxlLgor
CisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisKIDIwMDktMDctMDMgIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggYzI0MmZlNy4uNjY2N2RiYyAxMDA3
NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTU2LDcgKzU2LDcgQEAgbXkgQGZlYXR1cmVzID0g
KAogICAgICAgZGVmaW5lID0+ICJFTkFCTEVfM0RfUkVOREVSSU5HIiwgZGVmYXVsdCA9PiAoaXNB
cHBsZU1hY1dlYktpdCgpICYmIGlzU25vd0xlb3BhcmQoKSksIHZhbHVlID0+IFwkdGhyZWVEUmVu
ZGVyaW5nU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImNoYW5uZWwtbWVzc2FnaW5nIiwg
ZGVzYyA9PiAiVG9nZ2xlIE1lc3NhZ2VDaGFubmVsIGFuZCBNZXNzYWdlUG9ydCBzdXBwb3J0IiwK
LSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HIiwgZGVmYXVsdCA9PiAw
LCB2YWx1ZSA9PiBcJGNoYW5uZWxNZXNzYWdpbmdTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyIsIGRlZmF1bHQgPT4gMSwgdmFsdWUgPT4gXCRjaGFu
bmVsTWVzc2FnaW5nU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gImNvdmVyYWdlIiwgZGVz
YyA9PiAiVG9nZ2xlIGNvZGUgY292ZXJhZ2Ugc3VwcG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIiIs
IGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRjb3ZlcmFnZVN1cHBvcnQgfSwKZGlmZiAtLWdpdCBh
L2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAzYjJlZDg3Li5iM2Y0YTcyIDEwMDY0
NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zMDksOCArMzA5LDgg
QEAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV8zRF90cmFuc2Zvcm1zXSkKIEFDX01TR19DSEVDS0lO
Ryhbd2hldGhlciB0byBlbmFibGUgSFRNTDUgQ2hhbm5lbCBNZXNzYWdpbmcgc3VwcG9ydF0pCiBB
Q19BUkdfRU5BQkxFKGNoYW5uZWxfbWVzc2FnaW5nLAogICAgICAgICAgICAgICBBQ19IRUxQX1NU
UklORyhbLS1lbmFibGUtY2hhbm5lbC1tZXNzYWdpbmddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbZW5hYmxlIEhUTUw1IGNoYW5uZWwgbWVzc2FnaW5nIHN1cHBvcnQgW2RlZmF1bHQ9
bm9dXSksCi0gICAgICAgICAgICAgIFtdLFtlbmFibGVfY2hhbm5lbF9tZXNzYWdpbmc9Im5vIl0p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgSFRNTDUgY2hhbm5lbCBtZXNz
YWdpbmcgc3VwcG9ydCBbZGVmYXVsdD15ZXNdXSksCisgICAgICAgICAgICAgIFtdLFtlbmFibGVf
Y2hhbm5lbF9tZXNzYWdpbmc9InllcyJdKQogQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9jaGFubmVs
X21lc3NhZ2luZ10pCiAKICMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgSmF2YVNjcmlwdCBkZWJ1
Z2dlci9wcm9maWxlciBzdXBwb3J0Cg==
</data>
<flag name="review"
          id="16946"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>