<?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>138446</bug_id>
          
          <creation_ts>2014-11-05 16:01:11 -0800</creation_ts>
          <short_desc>Update testharness.js to the latest version</short_desc>
          <delta_ts>2014-11-06 07:22:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bem Jones-Bey">bjonesbe</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rhauck</cc>
    
    <cc>rniwa</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1046645</commentid>
    <comment_count>0</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-11-05 16:01:11 -0800</bug_when>
    <thetext>I would like to import new versions of some CSS Shapes tests from the CSSWG test suite to fix Bug 135927. These tests require a newer version of testharness.js than is in WebKit. To isolate the changes, I&apos;d like to do testharness.js first, see if it causes any issues, and then import the tests. It seems to work fine in my local testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046646</commentid>
    <comment_count>1</comment_count>
      <attachid>241071</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-11-05 16:03:32 -0800</bug_when>
    <thetext>Created attachment 241071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046725</commentid>
    <comment_count>2</comment_count>
      <attachid>241071</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-11-05 22:35:51 -0800</bug_when>
    <thetext>Comment on attachment 241071
Patch

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046799</commentid>
    <comment_count>3</comment_count>
      <attachid>241071</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-06 07:22:09 -0800</bug_when>
    <thetext>Comment on attachment 241071
Patch

Clearing flags on attachment: 241071

Committed r175695: &lt;http://trac.webkit.org/changeset/175695&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046800</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-06 07:22:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241071</attachid>
            <date>2014-11-05 16:03:32 -0800</date>
            <delta_ts>2014-11-06 07:22:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138446-20141105160324.patch</filename>
            <type>text/plain</type>
            <size>74298</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NTQ5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjQ5N2Q1ZDZlMjZkOGMxY2U3ZDEy
ZTlmNmZlMGVlNWRmMTQxNTk3MC4uOWUxNzAyZDE1ZDRlODIxYmFhMzRjZWRmNDgwZDM5M2Q5OTk0
YjViMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTExLTA1ICBCZW0gSm9uZXMtQmV5ICA8
YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFVwZGF0ZSB0ZXN0aGFybmVzcy5qcyB0byB0
aGUgbGF0ZXN0IHZlcnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzODQ0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBvbmx5IGNoYW5nZSBJJ3ZlIG1hZGUgZnJvbSB1cHN0cmVhbSBpcyB0byBz
ZXQgb3V0cHV0IHRvIGZhbHNlIGJ5CisgICAgICAgIGRlZmF1bHQuCisKKyAgICAgICAgKiByZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanM6CisKIDIwMTQtMTEtMDQgIFRpYm9yIE1lc3phcm9zICA8dG1l
c3phcm9zLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gU2tp
cCB3ZWJzb2NrZXQgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcwppbmRleCBm
MjQyM2VkYWEzYWI1OWJhMTM3YjZhY2MyNDNkNGNmNTY4MWYzY2UxLi45YTBiNzM5MjFjZGI0Y2Vj
MGViZjEyODE2ZWY1MzAzZjdjNmQ4MjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzCkBAIC0xLDMgKzEsNSBAQAorLypnbG9iYWwgc2VsZiovCisvKmpzaGludCBsYXRlZGVmOiBu
b2Z1bmMqLwogLyoKIERpc3RyaWJ1dGVkIHVuZGVyIGJvdGggdGhlIFczQyBUZXN0IFN1aXRlIExp
Y2Vuc2UgWzFdIGFuZCB0aGUgVzNDCiAzLWNsYXVzZSBCU0QgTGljZW5zZSBbMl0uIFRvIGNvbnRy
aWJ1dGUgdG8gYSBXM0MgVGVzdCBTdWl0ZSwgc2VlIHRoZQpAQCAtOCwzNzQgKzEwLDE5IEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogWzNdIGh0dHA6Ly93d3cudzMub3Jn
LzIwMDQvMTAvMjctdGVzdGNhc2VzCiAqLwogCi0vKgotICogPT0gSW50cm9kdWN0aW9uID09Ci0g
KgotICogVGhpcyBmaWxlIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciB3cml0aW5nIHRlc3RjYXNl
cy4gSXQgaXMgaW50ZW5kZWQgdG8KLSAqIHByb3ZpZGUgYSBjb252ZW5pZW50IEFQSSBmb3IgbWFr
aW5nIGNvbW1vbiBhc3NlcnRpb25zLCBhbmQgdG8gd29yayBib3RoCi0gKiBmb3IgdGVzdGluZyBz
eW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIERPTSBmZWF0dXJlcyBpbiBhIHdheSB0aGF0Ci0g
KiBwcm9tb3RlcyBjbGVhciwgcm9idXN0LCB0ZXN0cy4KLSAqCi0gKiA9PSBCYXNpYyBVc2FnZSA9
PQotICoKLSAqIFRvIHVzZSB0aGlzIGZpbGUsIGltcG9ydCB0aGUgc2NyaXB0IGFuZCB0aGUgdGVz
dGhhcm5lc3NyZXBvcnQgc2NyaXB0IGludG8KLSAqIHRoZSB0ZXN0IGRvY3VtZW50OgotICogPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotICogPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotICoKLSAq
IFdpdGhpbiBlYWNoIGZpbGUgb25lIG1heSBkZWZpbmUgb25lIG9yIG1vcmUgdGVzdHMuIEVhY2gg
dGVzdCBpcyBhdG9taWMKLSAqIGluIHRoZSBzZW5zZSB0aGF0IGEgc2luZ2xlIHRlc3QgaGFzIGEg
c2luZ2xlIHJlc3VsdCAocGFzcy9mYWlsL3RpbWVvdXQpLgotICogV2l0aGluIGVhY2ggdGVzdCBv
bmUgbWF5IGhhdmUgYSBudW1iZXIgb2YgYXNzZXJ0cy4gVGhlIHRlc3QgZmFpbHMgYXQgdGhlCi0g
KiBmaXJzdCBmYWlsaW5nIGFzc2VydCwgYW5kIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlc3QgaXMg
KHR5cGljYWxseSkgbm90IHJ1bi4KLSAqCi0gKiBJZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSB0
ZXN0cyBpcyBhIEhUTUwgZmlsZSB3aXRoIGFuIGVsZW1lbnQgb2YgaWQgImxvZyIKLSAqIHRoaXMg
d2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBhIHRhYmxlIGNvbnRhaW5pbmcgdGhlIHRlc3QgcmVzdWx0
cyBhZnRlciBhbGwKLSAqIHRoZSB0ZXN0cyBoYXZlIHJ1bi4KLSAqCi0gKiBOT1RFOiBCeSBkZWZh
dWx0IHRlc3RzIG11c3QgYmUgY3JlYXRlZCBiZWZvcmUgdGhlIGxvYWQgZXZlbnQgZmlyZXMuIEZv
ciB3YXlzCi0gKiAgICAgICB0byBjcmVhdGUgdGVzdHMgYWZ0ZXIgdGhlIGxvYWQgZXZlbnQsIHNl
ZSAiRGV0ZXJtaW5pbmcgd2hlbiBhbGwgdGVzdHMKLSAqICAgICAgIGFyZSBjb21wbGV0ZSIsIGJl
bG93Ci0gKgotICogPT0gU3luY2hyb25vdXMgVGVzdHMgPT0KLSAqCi0gKiBUbyBjcmVhdGUgYSBz
eW5jaHJvbm91cyB0ZXN0IHVzZSB0aGUgdGVzdCgpIGZ1bmN0aW9uOgotICoKLSAqIHRlc3QodGVz
dF9mdW5jdGlvbiwgbmFtZSwgcHJvcGVydGllcykKLSAqCi0gKiB0ZXN0X2Z1bmN0aW9uIGlzIGEg
ZnVuY3Rpb24gdGhhdCBjb250YWlucyB0aGUgY29kZSB0byB0ZXN0LiBGb3IgZXhhbXBsZSBhCi0g
KiB0cml2aWFsIHBhc3NpbmcgdGVzdCB3b3VsZCBiZToKLSAqCi0gKiB0ZXN0KGZ1bmN0aW9uKCkg
e2Fzc2VydF90cnVlKHRydWUpfSwgImFzc2VydF90cnVlIHdpdGggdHJ1ZSIpCi0gKgotICogVGhl
IGZ1bmN0aW9uIHBhc3NlZCBpbiBpcyBydW4gaW4gdGhlIHRlc3QoKSBjYWxsLgotICoKLSAqIHBy
b3BlcnRpZXMgaXMgYW4gb2JqZWN0IHRoYXQgb3ZlcnJpZGVzIGRlZmF1bHQgdGVzdCBwcm9wZXJ0
aWVzLiBUaGUKLSAqIHJlY29nbmlzZWQgcHJvcGVydGllcyBhcmU6Ci0gKiAgICB0aW1lb3V0IC0g
dGhlIHRlc3QgdGltZW91dCBpbiBtcwotICoKLSAqIGUuZy4KLSAqIHRlc3QodGVzdF9mdW5jdGlv
biwgIlNhbXBsZSB0ZXN0Iiwge3RpbWVvdXQ6MTAwMH0pCi0gKgotICogd291bGQgcnVuIHRlc3Rf
ZnVuY3Rpb24gd2l0aCBhIHRpbWVvdXQgb2YgMXMuCi0gKgotICogQWRkaXRpb25hbGx5LCB0ZXN0
LXNwZWNpZmljIG1ldGFkYXRhIGNhbiBiZSBwYXNzZWQgaW4gdGhlIHByb3BlcnRpZXMuIFRoZXNl
Ci0gKiBhcmUgdXNlZCB3aGVuIHRoZSBpbmRpdmlkdWFsIHRlc3QgaGFzIGRpZmZlcmVudCBtZXRh
ZGF0YSBmcm9tIHRoYXQgc3RvcmVkCi0gKiBpbiB0aGUgPGhlYWQ+LgotICogVGhlIHJlY29nbml6
ZWQgbWV0YWRhdGEgcHJvcGVydGllcyBhcmU6Ci0gKgotICogICAgaGVscCAtIFRoZSB1cmwgb2Yg
dGhlIHBhcnQgb2YgdGhlIHNwZWNpZmljYXRpb24gYmVpbmcgdGVzdGVkCi0gKgotICogICAgYXNz
ZXJ0IC0gQSBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoZSB0ZXN0IGlzIGF0
dGVtcHRpbmcKLSAqICAgICAgICAgICAgIHRvIHByb3ZlCi0gKgotICogICAgYXV0aG9yIC0gTmFt
ZSBhbmQgY29udGFjdCBpbmZvcm1hdGlvbiBmb3IgdGhlIGF1dGhvciBvZiB0aGUgdGVzdCBpbiB0
aGUKLSAqICAgICAgICAgICAgIGZvcm1hdDogIk5hbWUgPGVtYWlsX2FkZHI+IiBvciAiTmFtZSBo
dHRwOi8vY29udGFjdC91cmwiCi0gKgotICogPT0gQXN5bmNocm9ub3VzIFRlc3RzID09Ci0gKgot
ICogVGVzdGluZyBhc3luY2hyb25vdXMgZmVhdHVyZXMgaXMgc29tZXdoYXQgbW9yZSBjb21wbGV4
IHNpbmNlIHRoZSByZXN1bHQgb2YKLSAqIGEgdGVzdCBtYXkgZGVwZW5kIG9uIG9uZSBvciBtb3Jl
IGV2ZW50cyBvciBvdGhlciBjYWxsYmFja3MuIFRoZSBBUEkgcHJvdmlkZWQKLSAqIGZvciB0ZXN0
aW5nIHRoZXNlIGZlYXR1cmVzIGlzIGluZGVuZGVkIHRvIGJlIHJhdGhlciBsb3ctbGV2ZWwgYnV0
IGhvcGVmdWxseQotICogYXBwbGljYWJsZSB0byBtYW55IHNpdHVhdGlvbnMuCi0gKgotICogVG8g
Y3JlYXRlIGEgdGVzdCwgb25lIHN0YXJ0cyBieSBnZXR0aW5nIGEgVGVzdCBvYmplY3QgdXNpbmcg
YXN5bmNfdGVzdDoKLSAqCi0gKiBhc3luY190ZXN0KG5hbWUsIHByb3BlcnRpZXMpCi0gKgotICog
ZS5nLgotICogdmFyIHQgPSBhc3luY190ZXN0KCJTaW1wbGUgYXN5bmMgdGVzdCIpCi0gKgotICog
QXNzZXJ0aW9ucyBjYW4gYmUgYWRkZWQgdG8gdGhlIHRlc3QgYnkgY2FsbGluZyB0aGUgc3RlcCBt
ZXRob2Qgb2YgdGhlIHRlc3QKLSAqIG9iamVjdCB3aXRoIGEgZnVuY3Rpb24gY29udGFpbmluZyB0
aGUgdGVzdCBhc3NlcnRpb25zOgotICoKLSAqIHQuc3RlcChmdW5jdGlvbigpIHthc3NlcnRfdHJ1
ZSh0cnVlKX0pOwotICoKLSAqIFdoZW4gYWxsIHRoZSBzdGVwcyBhcmUgY29tcGxldGUsIHRoZSBk
b25lKCkgbWV0aG9kIG11c3QgYmUgY2FsbGVkOgotICoKLSAqIHQuZG9uZSgpOwotICoKLSAqIEFz
IGEgY29udmVuaWVuY2UsIGFzeW5jX3Rlc3QgY2FuIGFsc28gdGFrZXMgYSBmdW5jdGlvbiBhcyBm
aXJzdCBhcmd1bWVudC4KLSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHRlc3Qg
b2JqZWN0IGFzIGJvdGggaXRzIGB0aGlzYCBvYmplY3QgYW5kCi0gKiBmaXJzdCBhcmd1bWVudC4g
VGhlIGFib3ZlIGV4YW1wbGUgY2FuIGJlIHJld3JpdHRlbiBhczoKLSAqCi0gKiBhc3luY190ZXN0
KGZ1bmN0aW9uKHQpIHsKLSAqICAgICBvYmplY3Quc29tZV9ldmVudCA9IGZ1bmN0aW9uKCkgewot
ICogICAgICAgICB0LnN0ZXAoZnVuY3Rpb24gKCl7YXNzZXJ0X3RydWUodHJ1ZSk7IHQuZG9uZSgp
O30pOwotICogICAgIH07Ci0gKiB9LCAiU2ltcGxlIGFzeW5jIHRlc3QiKTsKLSAqCi0gKiB3aGlj
aCBhdm9pZHMgY2x1dHRlcmluZyB0aGUgZ2xvYmFsIHNjb3BlIHdpdGggcmVmZXJlbmNlcyB0byBh
c3luYwotICogdGVzdHMgaW5zdGFuY2VzLgotICoKLSAqIFRoZSBwcm9wZXJ0aWVzIGFyZ3VtZW50
IGlzIGlkZW50aWNhbCB0byB0aGF0IGZvciB0ZXN0KCkuCi0gKgotICogSW4gbWFueSBjYXNlcyBp
dCBpcyBjb252ZW5pZW50IHRvIHJ1biBhIHN0ZXAgaW4gcmVzcG9uc2UgdG8gYW4gZXZlbnQgb3Ig
YQotICogY2FsbGJhY2suIEEgY29udmVuaWVudCBtZXRob2Qgb2YgZG9pbmcgdGhpcyBpcyB0aHJv
dWdoIHRoZSBzdGVwX2Z1bmMgbWV0aG9kCi0gKiB3aGljaCByZXR1cm5zIGEgZnVuY3Rpb24gdGhh
dCwgd2hlbiBjYWxsZWQgcnVucyBhIHRlc3Qgc3RlcC4gRm9yIGV4YW1wbGUKLSAqCi0gKiBvYmpl
Y3Quc29tZV9ldmVudCA9IHQuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHthc3NlcnRfdHJ1ZShlLmEp
fSk7Ci0gKgotICogPT0gTWFraW5nIGFzc2VydGlvbnMgPT0KLSAqCi0gKiBGdW5jdGlvbnMgZm9y
IG1ha2luZyBhc3NlcnRpb25zIHN0YXJ0IGFzc2VydF8KLSAqIFRoZSBiZXN0IHdheSB0byBnZXQg
YSBsaXN0IGlzIHRvIGxvb2sgaW4gdGhpcyBmaWxlIGZvciBmdW5jdGlvbnMgbmFtZXMKLSAqIG1h
dGNoaW5nIHRoYXQgcGF0dGVybi4gVGhlIGdlbmVyYWwgc2lnbmF0dXJlIGlzCi0gKgotICogYXNz
ZXJ0X3NvbWV0aGluZyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqCi0gKiBhbHRo
b3VnaCBub3QgYWxsIGFzc2VydGlvbnMgcHJlY2lzZWx5IG1hdGNoIHRoaXMgcGF0dGVybiBlLmcu
IGFzc2VydF90cnVlCi0gKiBvbmx5IHRha2VzIGFjdHVhbCBhbmQgZGVzY3JpcHRpb24gYXMgYXJn
dW1lbnRzLgotICoKLSAqIFRoZSBkZXNjcmlwdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCB0byBwcmVz
ZW50IG1vcmUgdXNlZnVsIGVycm9yIG1lc3NhZ2VzIHdoZW4KLSAqIGEgdGVzdCBmYWlscwotICoK
LSAqIE5PVEU6IEFsbCBhc3NlcnRzIG11c3QgYmUgbG9jYXRlZCBpbiBhIHRlc3QoKSBvciBhIHN0
ZXAgb2YgYW4gYXN5bmNfdGVzdCgpLgotICogICAgICAgYXNzZXJ0cyBvdXRzaWRlIHRoZXNlIHBs
YWNlcyB3b24ndCBiZSBkZXRlY3RlZCBjb3JyZWN0bHkgYnkgdGhlIGhhcm5lc3MKLSAqICAgICAg
IGFuZCBtYXkgY2F1c2UgYSBmaWxlIHRvIHN0b3AgdGVzdGluZy4KLSAqCi0gKiA9PSBIYXJuZXNz
IFRpbWVvdXQgPT0KLSAqIAotICogVGhlIG92ZXJhbGwgaGFybmVzcyBhZG1pdHMgdHdvIHRpbWVv
dXQgdmFsdWVzICJub3JtYWwiICh0aGUKLSAqIGRlZmF1bHQpIGFuZCAibG9uZyIsIHVzZWQgZm9y
IHRlc3RzIHdoaWNoIGhhdmUgYW4gdW51c3VhbGx5IGxvbmcKLSAqIHJ1bnRpbWUuIEFmdGVyIHRo
ZSB0aW1lb3V0IGlzIHJlYWNoZWQsIHRoZSBoYXJuZXNzIHdpbGwgc3RvcAotICogd2FpdGluZyBm
b3IgZnVydGhlciBhc3luYyB0ZXN0cyB0byBjb21wbGV0ZS4gQnkgZGVmYXVsdCB0aGUKLSAqIHRp
bWVvdXRzIGFyZSBzZXQgdG8gMTBzIGFuZCA2MHMsIHJlc3BlY3RpdmVseSwgYnV0IG1heSBiZSBj
aGFuZ2VkCi0gKiB3aGVuIHRoZSB0ZXN0IGlzIHJ1biBvbiBoYXJkd2FyZSB3aXRoIGRpZmZlcmVu
dCBwZXJmb3JtYW5jZQotICogY2hhcmFjdGVyaXN0aWNzIHRvIGEgY29tbW9uIGRlc2t0b3AgY29t
cHV0ZXIuICBJbiBvcmRlciB0byBvcHQtaW4KLSAqIHRvIHRoZSBsb25nZXIgdGVzdCB0aW1lb3V0
LCB0aGUgdGVzdCBtdXN0IHNwZWNpZnkgYSBtZXRhIGVsZW1lbnQ6Ci0gKiA8bWV0YSBuYW1lPSJ0
aW1lb3V0IiBjb250ZW50PSJsb25nIj4KLSAqCi0gKiA9PSBTZXR1cCA9PQotICoKLSAqIFNvbWV0
aW1lcyB0ZXN0cyByZXF1aXJlIG5vbi10cml2aWFsIHNldHVwIHRoYXQgbWF5IGZhaWwuIEZvciB0
aGlzIHB1cnBvc2UKLSAqIHRoZXJlIGlzIGEgc2V0dXAoKSBmdW5jdGlvbiwgdGhhdCBtYXkgYmUg
Y2FsbGVkIHdpdGggb25lIG9yIHR3byBhcmd1bWVudHMuCi0gKiBUaGUgdHdvIGFyZ3VtZW50IHZl
cnNpb24gaXM6Ci0gKgotICogc2V0dXAoZnVuYywgcHJvcGVydGllcykKLSAqCi0gKiBUaGUgb25l
IGFyZ3VtZW50IHZlcnNpb25zIG1heSBvbWl0IGVpdGhlciBhcmd1bWVudC4KLSAqIGZ1bmMgaXMg
YSBmdW5jdGlvbiB0byBiZSBydW4gc3luY2hyb25vdXNseS4gc2V0dXAoKSBiZWNvbWVzIGEgbm8t
b3Agb25jZQotICogYW55IHRlc3RzIGhhdmUgcmV0dXJuZWQgcmVzdWx0cy4gUHJvcGVydGllcyBh
cmUgZ2xvYmFsIHByb3BlcnRpZXMgb2YgdGhlIHRlc3QKLSAqIGhhcm5lc3MuIEN1cnJlbnRseSBy
ZWNvZ25pc2VkIHByb3BlcnRpZXMgYXJlOgotICoKLSAqCi0gKiBleHBsaWNpdF9kb25lIC0gV2Fp
dCBmb3IgYW4gZXhwbGljaXQgY2FsbCB0byBkb25lKCkgYmVmb3JlIGRlY2xhcmluZyBhbGwKLSAq
ICAgICAgICAgICAgICAgICB0ZXN0cyBjb21wbGV0ZSAoc2VlIGJlbG93KQotICoKLSAqIG91dHB1
dF9kb2N1bWVudCAtIFRoZSBkb2N1bWVudCB0byB3aGljaCByZXN1bHRzIHNob3VsZCBiZSBsb2dn
ZWQuIEJ5IGRlZmF1bHQKLSAqICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIGN1cnJlbnQg
ZG9jdW1lbnQgYnV0IGNvdWxkIGJlIGFuIGFuY2VzdG9yCi0gKiAgICAgICAgICAgICAgICAgICBk
b2N1bWVudCBpbiBzb21lIGNhc2VzIGUuZy4gYSBTVkcgdGVzdCBsb2FkZWQgaW4gYW4gSFRNTAot
ICogICAgICAgICAgICAgICAgICAgd3JhcHBlcgotICoKLSAqIGV4cGxpY2l0X3RpbWVvdXQgLSBk
aXNhYmxlIGZpbGUgdGltZW91dDsgb25seSBzdG9wIHdhaXRpbmcgZm9yIHJlc3VsdHMKLSAqICAg
ICAgICAgICAgICAgICAgICB3aGVuIHRoZSB0aW1lb3V0KCkgZnVuY3Rpb24gaXMgY2FsbGVkICh0
eXBpY2FsbHkgZm9yCi0gKiAgICAgICAgICAgICAgICAgICAgdXNlIHdoZW4gaW50ZWdyYXRpbmcg
d2l0aCBzb21lIGV4aXN0aW5nIHRlc3QgZnJhbWV3b3JrCi0gKiAgICAgICAgICAgICAgICAgICAg
dGhhdCBoYXMgaXRzIG93biB0aW1lb3V0IG1lY2hhbmlzbSkuCi0gKgotICogYWxsb3dfdW5jYXVn
aHRfZXhjZXB0aW9uIC0gZG9uJ3QgdHJlYXQgYW4gdW5jYXVnaHQgZXhjZXB0aW9uIGFzIGFuIGVy
cm9yOwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkIHdoZW4gZS5nLiB0ZXN0
aW5nIHRoZSB3aW5kb3cub25lcnJvcgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFu
ZGxlci4KLSAqCi0gKiB0aW1lb3V0X211bHRpcGxpZXIgLSBNdWx0aXBsaWVyIHRvIGFwcGx5IHRv
IHBlci10ZXN0IHRpbWVvdXRzLgotICoKLSAqID09IERldGVybWluaW5nIHdoZW4gYWxsIHRlc3Rz
IGFyZSBjb21wbGV0ZSA9PQotICoKLSAqIEJ5IGRlZmF1bHQgdGhlIHRlc3QgaGFybmVzcyB3aWxs
IGFzc3VtZSB0aGVyZSBhcmUgbm8gbW9yZSByZXN1bHRzIHRvIGNvbWUKLSAqIHdoZW46Ci0gKiAx
KSBUaGVyZSBhcmUgbm8gVGVzdCBvYmplY3RzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IG5v
dCBjb21wbGV0ZWQKLSAqIDIpIFRoZSBsb2FkIGV2ZW50IG9uIHRoZSBkb2N1bWVudCBoYXMgZmly
ZWQKLSAqCi0gKiBUaGlzIGJlaGF2aW91ciBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRo
ZSBleHBsaWNpdF9kb25lIHByb3BlcnR5IHRvCi0gKiB0cnVlIGluIGEgY2FsbCB0byBzZXR1cCgp
LiBJZiBleHBsaWNpdF9kb25lIGlzIHRydWUsIHRoZSB0ZXN0IGhhcm5lc3Mgd2lsbAotICogbm90
IGFzc3VtZSBpdCBpcyBkb25lIHVudGlsIHRoZSBnbG9iYWwgZG9uZSgpIGZ1bmN0aW9uIGlzIGNh
bGxlZC4gT25jZSBkb25lKCkKLSAqIGlzIGNhbGxlZCwgdGhlIHR3byBjb25kaXRpb25zIGFib3Zl
IGFwcGx5IGxpa2Ugbm9ybWFsLgotICoKLSAqID09IEdlbmVyYXRpbmcgdGVzdHMgPT0KLSAqCi0g
KiBOT1RFOiB0aGlzIGZ1bmN0aW9uYWxpdHkgbWF5IGJlIHJlbW92ZWQKLSAqCi0gKiBUaGVyZSBh
cmUgc2NlbmFyaW9zIGluIHdoaWNoIGlzIGlzIGRlc2lyYWJsZSB0byBjcmVhdGUgYSBsYXJnZSBu
dW1iZXIgb2YKLSAqIChzeW5jaHJvbm91cykgdGVzdHMgdGhhdCBhcmUgaW50ZXJuYWxseSBzaW1p
bGFyIGJ1dCB2YXJ5IGluIHRoZSBwYXJhbWV0ZXJzCi0gKiB1c2VkLiBUbyBtYWtlIHRoaXMgZWFz
aWVyLCB0aGUgZ2VuZXJhdGVfdGVzdHMgZnVuY3Rpb24gYWxsb3dzIGEgc2luZ2xlCi0gKiBmdW5j
dGlvbiB0byBiZSBjYWxsZWQgd2l0aCBlYWNoIHNldCBvZiBwYXJhbWV0ZXJzIGluIGEgbGlzdDoK
LSAqCi0gKiBnZW5lcmF0ZV90ZXN0cyh0ZXN0X2Z1bmN0aW9uLCBwYXJhbWV0ZXJfbGlzdHMsIHBy
b3BlcnRpZXMpCi0gKgotICogRm9yIGV4YW1wbGU6Ci0gKgotICogZ2VuZXJhdGVfdGVzdHMoYXNz
ZXJ0X2VxdWFscywgWwotICogICAgIFsiU3VtIG9uZSBhbmQgb25lIiwgMSsxLCAyXSwKLSAqICAg
ICBbIlN1bSBvbmUgYW5kIHplcm8iLCAxKzAsIDFdCi0gKiAgICAgXSkKLSAqCi0gKiBJcyBlcXVp
dmFsZW50IHRvOgotICoKLSAqIHRlc3QoZnVuY3Rpb24oKSB7YXNzZXJ0X2VxdWFscygxKzEsIDIp
fSwgIlN1bSBvbmUgYW5kIG9uZSIpCi0gKiB0ZXN0KGZ1bmN0aW9uKCkge2Fzc2VydF9lcXVhbHMo
MSswLCAxKX0sICJTdW0gb25lIGFuZCB6ZXJvIikKLSAqCi0gKiBOb3RlIHRoYXQgdGhlIGZpcnN0
IGl0ZW0gaW4gZWFjaCBwYXJhbWV0ZXIgbGlzdCBjb3JyZXNwb25kcyB0byB0aGUgbmFtZSBvZgot
ICogdGhlIHRlc3QuCi0gKgotICogVGhlIHByb3BlcnRpZXMgYXJndW1lbnQgaXMgaWRlbnRpY2Fs
IHRvIHRoYXQgZm9yIHRlc3QoKS4gVGhpcyBtYXkgYmUgYQotICogc2luZ2xlIG9iamVjdCAodXNl
ZCBmb3IgYWxsIGdlbmVyYXRlZCB0ZXN0cykgb3IgYW4gYXJyYXkuCi0gKgotICogPT0gQ2FsbGJh
Y2sgQVBJID09Ci0gKgotICogVGhlIGZyYW1ld29yayBwcm92aWRlcyBjYWxsYmFja3MgY29ycmVz
cG9uZGluZyB0byAzIGV2ZW50czoKLSAqCi0gKiBzdGFydCAtIGhhcHBlbnMgd2hlbiB0aGUgZmly
c3QgVGVzdCBpcyBjcmVhdGVkCi0gKiByZXN1bHQgLSBoYXBwZW5zIHdoZW4gYSB0ZXN0IHJlc3Vs
dCBpcyByZWNpZXZlZAotICogY29tcGxldGUgLSBoYXBwZW5zIHdoZW4gYWxsIHJlc3VsdHMgYXJl
IHJlY2lldmVkCi0gKgotICogVGhlIHBhZ2UgZGVmaW5pbmcgdGhlIHRlc3RzIG1heSBhZGQgY2Fs
bGJhY2tzIGZvciB0aGVzZSBldmVudHMgYnkgY2FsbGluZwotICogdGhlIGZvbGxvd2luZyBtZXRo
b2RzOgotICoKLSAqICAgYWRkX3N0YXJ0X2NhbGxiYWNrKGNhbGxiYWNrKSAtIGNhbGxiYWNrIGNh
bGxlZCB3aXRoIG5vIGFyZ3VtZW50cwotICogICBhZGRfcmVzdWx0X2NhbGxiYWNrKGNhbGxiYWNr
KSAtIGNhbGxiYWNrIGNhbGxlZCB3aXRoIGEgdGVzdCBhcmd1bWVudAotICogICBhZGRfY29tcGxl
dGlvbl9jYWxsYmFjayhjYWxsYmFjaykgLSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBhcnJheSBv
ZiB0ZXN0cwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW4g
c3RhdHVzIG9iamVjdAotICoKLSAqIHRlc3RzIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVz
OgotICogICBzdGF0dXM6IEEgc3RhdHVzIGNvZGUuIFRoaXMgY2FuIGJlIGNvbXBhcmVkIHRvIHRo
ZSBQQVNTLCBGQUlMLCBUSU1FT1VUIGFuZAotICogICAgICAgICAgIE5PVFJVTiBwcm9wZXJ0aWVz
IG9uIHRoZSB0ZXN0IG9iamVjdAotICogICBtZXNzYWdlOiBBIG1lc3NhZ2UgaW5kaWNhdGluZyB0
aGUgcmVhc29uIGZvciBmYWlsdXJlLiBJbiB0aGUgZnV0dXJlIHRoaXMKLSAqICAgICAgICAgICAg
d2lsbCBhbHdheXMgYmUgYSBzdHJpbmcKLSAqCi0gKiAgVGhlIHN0YXR1cyBvYmplY3QgZ2l2ZXMg
dGhlIG92ZXJhbGwgc3RhdHVzIG9mIHRoZSBoYXJuZXNzLiBJdCBoYXMgdGhlCi0gKiAgZm9sbG93
aW5nIHByb3BlcnRpZXM6Ci0gKiAgICBzdGF0dXM6IENhbiBiZSBjb21wYXJlZCB0byB0aGUgT0ss
IEVSUk9SIGFuZCBUSU1FT1VUIHByb3BlcnRpZXMKLSAqICAgIG1lc3NhZ2U6IEFuIGVycm9yIG1l
c3NhZ2Ugc2V0IHdoZW4gdGhlIHN0YXR1cyBpcyBFUlJPUgotICoKLSAqID09IEV4dGVybmFsIEFQ
SSA9PQotICoKLSAqIEluIG9yZGVyIHRvIGNvbGxlY3QgdGhlIHJlc3VsdHMgb2YgbXVsdGlwbGUg
cGFnZXMgY29udGFpbmluZyB0ZXN0cywgdGhlIHRlc3QKLSAqIGhhcm5lc3Mgd2lsbCwgd2hlbiBs
b2FkZWQgaW4gYSBuZXN0ZWQgYnJvd3NpbmcgY29udGV4dCwgYXR0ZW1wdCB0byBjYWxsCi0gKiBj
ZXJ0YWluIGZ1bmN0aW9ucyBpbiBlYWNoIGFuY2VzdG9yIGFuZCBvcGVuZXIgYnJvd3NpbmcgY29u
dGV4dDoKLSAqCi0gKiBzdGFydCAtIHN0YXJ0X2NhbGxiYWNrCi0gKiByZXN1bHQgLSByZXN1bHRf
Y2FsbGJhY2sKLSAqIGNvbXBsZXRlIC0gY29tcGxldGlvbl9jYWxsYmFjawotICoKLSAqIFRoZXNl
IGFyZSBnaXZlbiB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJu
YWwgY2FsbGJhY2tzCi0gKiBkZXNjcmliZWQgYWJvdmUuCi0gKgotICogPT0gRXh0ZXJuYWwgQVBJ
IHRocm91Z2ggY3Jvc3MtZG9jdW1lbnQgbWVzc2FnaW5nID09Ci0gKgotICogV2hlcmUgc3VwcG9y
dGVkLCB0aGUgdGVzdCBoYXJuZXNzIHdpbGwgYWxzbyBzZW5kIG1lc3NhZ2VzIHVzaW5nCi0gKiBj
cm9zcy1kb2N1bWVudCBtZXNzYWdpbmcgdG8gZWFjaCBhbmNlc3RvciBhbmQgb3BlbmVyIGJyb3dz
aW5nIGNvbnRleHQuIFNpbmNlCi0gKiBpdCB1c2VzIHRoZSB3aWxkY2FyZCBrZXl3b3JkICgqKSwg
Y3Jvc3Mtb3JpZ2luIGNvbW11bmljYXRpb24gaXMgZW5hYmxlZCBhbmQKLSAqIHNjcmlwdCBvbiBk
aWZmZXJlbnQgb3JpZ2lucyBjYW4gY29sbGVjdCB0aGUgcmVzdWx0cy4KLSAqCi0gKiBUaGlzIEFQ
SSBmb2xsb3dzIHNpbWlsYXIgY29udmVudGlvbnMgYXMgdGhvc2UgZGVzY3JpYmVkIGFib3ZlIG9u
bHkgc2xpZ2h0bHkKLSAqIG1vZGlmaWVkIHRvIGFjY29tbW9kYXRlIG1lc3NhZ2UgZXZlbnQgQVBJ
LiBFYWNoIG1lc3NhZ2UgaXMgc2VudCBieSB0aGUgaGFybmVzcwotICogaXMgcGFzc2VkIGEgc2lu
Z2xlIHZhbmlsbGEgb2JqZWN0LCBhdmFpbGFibGUgYXMgdGhlIGBkYXRhYCBwcm9wZXJ0eSBvZiB0
aGUKLSAqIGV2ZW50IG9iamVjdC4gVGhlc2Ugb2JqZWN0cyBhcmUgc3RydWN0dXJlcyBhcyBmb2xs
b3dzOgotICoKLSAqIHN0YXJ0IC0geyB0eXBlOiAic3RhcnQiIH0KLSAqIHJlc3VsdCAtIHsgdHlw
ZTogInJlc3VsdCIsIHRlc3Q6IFRlc3QgfQotICogY29tcGxldGUgLSB7IHR5cGU6ICJjb21wbGV0
ZSIsIHRlc3RzOiBbVGVzdCwgLi4uXSwgc3RhdHVzOiBUZXN0c1N0YXR1cyB9Ci0gKgotICogPT0g
TGlzdCBvZiBhc3NlcnRpb25zID09Ci0gKgotICogYXNzZXJ0X3RydWUoYWN0dWFsLCBkZXNjcmlw
dGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0IC9hY3R1YWwvIGlzIHN0cmljdGx5IHRydWUKLSAqCi0g
KiBhc3NlcnRfZmFsc2UoYWN0dWFsLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0IC9h
Y3R1YWwvIGlzIHN0cmljdGx5IGZhbHNlCi0gKgotICogYXNzZXJ0X2VxdWFscyhhY3R1YWwsIGV4
cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0IC9hY3R1YWwvIGlzIHRoZSBz
YW1lIHZhbHVlIGFzIC9leHBlY3RlZC8KLSAqCi0gKiBhc3NlcnRfbm90X2VxdWFscyhhY3R1YWws
IGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0IC9hY3R1YWwvIGlzIGEg
ZGlmZmVyZW50IHZhbHVlIHRvIC9leHBlY3RlZC8uIFllcywgdGhpcyBtZWFucwotICogICB0aGF0
ICJleHBlY3RlZCIgaXMgYSBtaXNub21lcgotICoKLSAqIGFzc2VydF9pbl9hcnJheShhY3R1YWws
IGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0IC9leHBlY3RlZC8gaXMg
YW4gQXJyYXksIGFuZCAvYWN0dWFsLyBpcyBlcXVhbCB0byBvbmUgb2YgdGhlCi0gKiAgIG1lbWJl
cnMgLS0gZXhwZWN0ZWQuaW5kZXhPZihhY3R1YWwpICE9IC0xCi0gKgotICogYXNzZXJ0X2FycmF5
X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0
IC9hY3R1YWwvIGFuZCAvZXhwZWN0ZWQvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFuZCB0aGUgdmFs
dWUgb2YKLSAqICAgZWFjaCBpbmRleGVkIHByb3BlcnR5IGluIC9hY3R1YWwvIGlzIHRoZSBzdHJp
Y3RseSBlcXVhbCB0byB0aGUgY29ycmVzcG9uZGluZwotICogICBwcm9wZXJ0eSB2YWx1ZSBpbiAv
ZXhwZWN0ZWQvCi0gKgotICogYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwg
ZXBzaWxvbiwgZGVzY3JpcHRpb24pCi0gKiAgIGFzc2VydHMgdGhhdCAvYWN0dWFsLyBpcyBhIG51
bWJlciB3aXRoaW4gKy8tIC9lcHNpbG9uLyBvZiAvZXhwZWN0ZWQvCi0gKgotICogYXNzZXJ0X2xl
c3NfdGhhbihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0
IC9hY3R1YWwvIGlzIGEgbnVtYmVyIGxlc3MgdGhhbiAvZXhwZWN0ZWQvCi0gKgotICogYXNzZXJ0
X2dyZWF0ZXJfdGhhbihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0
cyB0aGF0IC9hY3R1YWwvIGlzIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAvZXhwZWN0ZWQvCi0gKgot
ICogYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikK
LSAqICAgYXNzZXJ0cyB0aGF0IC9hY3R1YWwvIGlzIGEgbnVtYmVyIGxlc3MgdGhhbiBvciBlcXVh
bCB0byAvZXhwZWN0ZWQvCi0gKgotICogYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChhY3R1YWws
IGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0cyB0aGF0IC9hY3R1YWwvIGlzIGEg
bnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAvZXhwZWN0ZWQvCi0gKgotICogYXNzZXJ0
X3JlZ2V4cF9tYXRjaChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKLSAqICAgYXNzZXJ0
cyB0aGF0IC9hY3R1YWwvIG1hdGNoZXMgdGhlIHJlZ2V4cCAvZXhwZWN0ZWQvCi0gKgotICogYXNz
ZXJ0X2NsYXNzX3N0cmluZyhvYmplY3QsIGNsYXNzX25hbWUsIGRlc2NyaXB0aW9uKQotICogICBh
c3NlcnRzIHRoYXQgdGhlIGNsYXNzIHN0cmluZyBvZiAvb2JqZWN0LyBhcyByZXR1cm5lZCBpbgot
ICogICBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIGlzIGVxdWFsIHRvIC9jbGFzc19uYW1lLy4K
LSAqCi0gKiBhc3NlcnRfb3duX3Byb3BlcnR5KG9iamVjdCwgcHJvcGVydHlfbmFtZSwgZGVzY3Jp
cHRpb24pCi0gKiAgIGFzc2VydCB0aGF0IG9iamVjdCBoYXMgb3duIHByb3BlcnR5IHByb3BlcnR5
X25hbWUKLSAqCi0gKiBhc3NlcnRfaW5oZXJpdHMob2JqZWN0LCBwcm9wZXJ0eV9uYW1lLCBkZXNj
cmlwdGlvbikKLSAqICAgYXNzZXJ0IHRoYXQgb2JqZWN0IGRvZXMgbm90IGhhdmUgYW4gb3duIHBy
b3BlcnR5IG5hbWVkIHByb3BlcnR5X25hbWUKLSAqICAgYnV0IHRoYXQgcHJvcGVydHlfbmFtZSBp
cyBwcmVzZW50IGluIHRoZSBwcm90b3R5cGUgY2hhaW4gZm9yIG9iamVjdAotICoKLSAqIGFzc2Vy
dF9pZGxfYXR0cmlidXRlKG9iamVjdCwgYXR0cmlidXRlX25hbWUsIGRlc2NyaXB0aW9uKQotICog
ICBhc3NlcnQgdGhhdCBhbiBvYmplY3QgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiBzb21lIGludGVy
ZmFjZSBoYXMgdGhlCi0gKiAgIGF0dHJpYnV0ZSBhdHRyaWJ1dGVfbmFtZSBmb2xsb3dpbmcgdGhl
IGNvbmRpdGlvbnMgc3BlY2lmaWVkIGJ5IFdlYklETAotICoKLSAqIGFzc2VydF9yZWFkb25seShv
YmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKQotICogICBhc3NlcnQgdGhhdCBwcm9w
ZXJ0eSBwcm9wZXJ0eV9uYW1lIG9uIG9iamVjdCBpcyByZWFkb25seQotICoKLSAqIGFzc2VydF90
aHJvd3MoY29kZSwgZnVuYywgZGVzY3JpcHRpb24pCi0gKiAgIGNvZGUgLSB0aGUgZXhwZWN0ZWQg
ZXhjZXB0aW9uOgotICogICAgIG8gc3RyaW5nOiB0aGUgdGhyb3duIGV4Y2VwdGlvbiBtdXN0IGJl
IGEgRE9NRXhjZXB0aW9uIHdpdGggdGhlIGdpdmVuCi0gKiAgICAgICAgICAgICAgIG5hbWUsIGUu
Zy4sICJUaW1lb3V0RXJyb3IiIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nCi0gKiAg
ICAgICAgICAgICAgIHRlc3RzLCBhIGNvbnN0YW50IGlzIGFsc28gc3VwcG9ydGVkLCBlLmcuLCAi
VElNRU9VVF9FUlIiKQotICogICAgIG8gb2JqZWN0OiB0aGUgdGhyb3duIGV4Y2VwdGlvbiBtdXN0
IGhhdmUgYSBwcm9wZXJ0eSBjYWxsZWQgIm5hbWUiIHRoYXQKLSAqICAgICAgICAgICAgICAgbWF0
Y2hlcyBjb2RlLm5hbWUKLSAqICAgICBvIG51bGw6ICAgYWxsb3cgYW55IGV4Y2VwdGlvbiAoaW4g
Z2VuZXJhbCwgb25lIG9mIHRoZSBvcHRpb25zIGFib3ZlCi0gKiAgICAgICAgICAgICAgIHNob3Vs
ZCBiZSB1c2VkKQotICogICBmdW5jIC0gYSBmdW5jdGlvbiB0aGF0IHNob3VsZCB0aHJvdwotICoK
LSAqIGFzc2VydF91bnJlYWNoZWQoZGVzY3JpcHRpb24pCi0gKiAgIGFzc2VydHMgaWYgY2FsbGVk
LiBVc2VkIHRvIGVuc3VyZSB0aGF0IHNvbWUgY29kZXBhdGggaXMgKm5vdCogdGFrZW4gZS5nLgot
ICogICBhbiBldmVudCBkb2VzIG5vdCBmaXJlLgotICoKLSAqIGFzc2VydF9hbnkoYXNzZXJ0X2Z1
bmMsIGFjdHVhbCwgZXhwZWN0ZWRfYXJyYXksIGV4dHJhX2FyZ18xLCAuLi4gZXh0cmFfYXJnX04p
Ci0gKiAgIGFzc2VydHMgdGhhdCBvbmUgYXNzZXJ0X2Z1bmMoYWN0dWFsLCBleHBlY3RlZF9hcnJh
eV9OLCBleHRyYV9hcmcxLCAuLi4sIGV4dHJhX2FyZ19OKQotICogICBpcyB0cnVlIGZvciBzb21l
IGV4cGVjdGVkX2FycmF5X04gaW4gZXhwZWN0ZWRfYXJyYXkuIFRoaXMgb25seSB3b3JrcyBmb3Ig
YXNzZXJ0X2Z1bmMKLSAqICAgd2l0aCBzaWduYXR1cmUgYXNzZXJ0X2Z1bmMoYWN0dWFsLCBleHBl
Y3RlZCwgYXJnc18xLCAuLi4sIGFyZ3NfTikuIE5vdGUgdGhhdCB0ZXN0cwotICogICB3aXRoIG11
bHRpcGxlIGFsbG93ZWQgcGFzcyBjb25kaXRpb25zIGFyZSBiYWQgcHJhY3RpY2UgdW5sZXNzIHRo
ZSBzcGVjIHNwZWNpZmljYWxseQotICogICBhbGxvd3MgbXVsdGlwbGUgYmVoYXZpb3Vycy4gVGVz
dCBhdXRob3JzIHNob3VsZCBub3QgdXNlIHRoaXMgbWV0aG9kIHNpbXBseSB0byBoaWRlCi0gKiAg
IFVBIGJ1Z3MuCi0gKgotICogYXNzZXJ0X2V4aXN0cyhvYmplY3QsIHByb3BlcnR5X25hbWUsIGRl
c2NyaXB0aW9uKQotICogICAqKiogZGVwcmVjYXRlZCAqKioKLSAqICAgYXNzZXJ0cyB0aGF0IG9i
amVjdCBoYXMgYW4gb3duIHByb3BlcnR5IHByb3BlcnR5X25hbWUKLSAqCi0gKiBhc3NlcnRfbm90
X2V4aXN0cyhvYmplY3QsIHByb3BlcnR5X25hbWUsIGRlc2NyaXB0aW9uKQotICogICAqKiogZGVw
cmVjYXRlZCAqKioKLSAqICAgYXNzZXJ0IHRoYXQgb2JqZWN0IGRvZXMgbm90IGhhdmUgb3duIHBy
b3BlcnR5IHByb3BlcnR5X25hbWUKLSAqLworLyogRG9jdW1lbnRhdGlvbiBpcyBpbiBkb2NzL2Fw
aS5tZCAqLwogCiAoZnVuY3Rpb24gKCkKIHsKICAgICB2YXIgZGVidWcgPSBmYWxzZTsKICAgICAv
LyBkZWZhdWx0IHRpbWVvdXQgaXMgMTAgc2Vjb25kcywgdGVzdCBjYW4gb3ZlcnJpZGUgaWYgbmVl
ZGVkCiAgICAgdmFyIHNldHRpbmdzID0gewotICAgICAgb3V0cHV0OnRydWUsCi0gICAgICBoYXJu
ZXNzX3RpbWVvdXQ6eyJub3JtYWwiOjEwMDAwLAotICAgICAgICAgICAgICAgICAgICAgICAibG9u
ZyI6NjAwMDB9LAotICAgICAgdGVzdF90aW1lb3V0Om51bGwKKyAgICAgICAgb3V0cHV0OmZhbHNl
LAorICAgICAgICBoYXJuZXNzX3RpbWVvdXQ6eworICAgICAgICAgICAgIm5vcm1hbCI6MTAwMDAs
CisgICAgICAgICAgICAibG9uZyI6NjAwMDAKKyAgICAgICAgfSwKKyAgICAgICAgdGVzdF90aW1l
b3V0Om51bGwKICAgICB9OwogCiAgICAgdmFyIHhodG1sX25zID0gImh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiOwpAQCAtMzg3LDE5ICszNCwxNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0
aW9uIGZvcm1zIFszXS4KICAgICAoZnVuY3Rpb24gKCkKICAgICB7CiAgICAgICAgIHZhciBzY3Jp
cHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpOwotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChzY3JpcHRzW2ldLnNyYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICB2YXIgc3JjID0gc2NyaXB0c1tpXS5zcmM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmIChzY3JpcHRzW2ldLmhyZWYpCi0gICAgICAgICAgICB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdmFyIHNyYzsK
KyAgICAgICAgICAgIGlmIChzY3JpcHRzW2ldLnNyYykgeworICAgICAgICAgICAgICAgIHNyYyA9
IHNjcmlwdHNbaV0uc3JjOworICAgICAgICAgICAgfSBlbHNlIGlmIChzY3JpcHRzW2ldLmhyZWYp
IHsKICAgICAgICAgICAgICAgICAvL1NWRyBjYXNlCi0gICAgICAgICAgICAgICAgdmFyIHNyYyA9
IHNjcmlwdHNbaV0uaHJlZi5iYXNlVmFsOworICAgICAgICAgICAgICAgIHNyYyA9IHNjcmlwdHNb
aV0uaHJlZi5iYXNlVmFsOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNyYyAmJiBz
cmMuc2xpY2Uoc3JjLmxlbmd0aCAtICJ0ZXN0aGFybmVzcy5qcyIubGVuZ3RoKSA9PT0gInRlc3Ro
YXJuZXNzLmpzIikKLSAgICAgICAgICAgIHsKKworICAgICAgICAgICAgaWYgKHNyYyAmJiBzcmMu
c2xpY2Uoc3JjLmxlbmd0aCAtICJ0ZXN0aGFybmVzcy5qcyIubGVuZ3RoKSA9PT0gInRlc3RoYXJu
ZXNzLmpzIikgewogICAgICAgICAgICAgICAgIHNjcmlwdF9wcmVmaXggPSBzcmMuc2xpY2UoMCwg
c3JjLmxlbmd0aCAtICJ0ZXN0aGFybmVzcy5qcyIubGVuZ3RoKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTQyNiw3ICs3MCw3IEBAIHBvbGljaWVzIGFuZCBjb250
cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB2YXIgdGVzdF9uYW1lID0gbmFtZSA/IG5hbWUg
OiBuZXh0X2RlZmF1bHRfbmFtZSgpOwogICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcyA/
IHByb3BlcnRpZXMgOiB7fTsKICAgICAgICAgdmFyIHRlc3Rfb2JqID0gbmV3IFRlc3QodGVzdF9u
YW1lLCBwcm9wZXJ0aWVzKTsKLSAgICAgICAgdGVzdF9vYmouc3RlcChmdW5jKTsKKyAgICAgICAg
dGVzdF9vYmouc3RlcChmdW5jLCB0ZXN0X29iaiwgdGVzdF9vYmopOwogICAgICAgICBpZiAodGVz
dF9vYmoucGhhc2UgPT09IHRlc3Rfb2JqLnBoYXNlcy5TVEFSVEVEKSB7CiAgICAgICAgICAgICB0
ZXN0X29iai5kb25lKCk7CiAgICAgICAgIH0KQEAgLTQ1NSw3ICs5OSw3IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9
PT0gMikgewogICAgICAgICAgICAgZnVuYyA9IGZ1bmNfb3JfcHJvcGVydGllczsKICAgICAgICAg
ICAgIHByb3BlcnRpZXMgPSBtYXliZV9wcm9wZXJ0aWVzOwotICAgICAgICB9IGVsc2UgaWYgKGZ1
bmNfb3JfcHJvcGVydGllcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKXsKKyAgICAgICAgfSBlbHNlIGlm
IChmdW5jX29yX3Byb3BlcnRpZXMgaW5zdGFuY2VvZiBGdW5jdGlvbikgewogICAgICAgICAgICAg
ZnVuYyA9IGZ1bmNfb3JfcHJvcGVydGllczsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHByb3BlcnRpZXMgPSBmdW5jX29yX3Byb3BlcnRpZXM7CkBAIC00NjUsNiArMTA5LDEyIEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgIH0KIAogICAgIGZ1bmN0aW9u
IGRvbmUoKSB7CisgICAgICAgIGlmICh0ZXN0cy50ZXN0cy5sZW5ndGggPT09IDApIHsKKyAgICAg
ICAgICAgIHRlc3RzLnNldF9maWxlX2lzX3Rlc3QoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dGVzdHMuZmlsZV9pc190ZXN0KSB7CisgICAgICAgICAgICB0ZXN0cy50ZXN0c1swXS5kb25lKCk7
CisgICAgICAgIH0KICAgICAgICAgdGVzdHMuZW5kX3dhaXQoKTsKICAgICB9CiAKQEAgLTQ4Myw3
ICsxMzMsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KIAogICAgIGZ1
bmN0aW9uIG9uX2V2ZW50KG9iamVjdCwgZXZlbnQsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgIG9i
amVjdC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBjYWxsYmFjaywgZmFsc2UpOworICAgICAgICBv
YmplY3QuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgY2FsbGJhY2ssIGZhbHNlKTsKICAgICB9CiAK
ICAgICBleHBvc2UodGVzdCwgJ3Rlc3QnKTsKQEAgLTUxNCwxNyArMTY0LDEzIEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAvLyBpbnN0YW5jZW9mIGRvZXNu
J3Qgd29yayBpZiB0aGUgbm9kZSBpcyBmcm9tIGFub3RoZXIgd2luZG93IChsaWtlIGFuCiAgICAg
ICAgIC8vIGlmcmFtZSdzIGNvbnRlbnRXaW5kb3cpOgogICAgICAgICAvLyBodHRwOi8vd3d3Lncz
Lm9yZy9CdWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTUKLSAgICAgICAgaWYgKCJub2Rl
VHlwZSIgaW4gb2JqZWN0Ci0gICAgICAgICYmICJub2RlTmFtZSIgaW4gb2JqZWN0Ci0gICAgICAg
ICYmICJub2RlVmFsdWUiIGluIG9iamVjdAotICAgICAgICAmJiAiY2hpbGROb2RlcyIgaW4gb2Jq
ZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICB0cnkKLSAgICAgICAgICAgIHsKKyAgICAgICAg
aWYgKCJub2RlVHlwZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAgICAibm9kZU5hbWUiIGluIG9i
amVjdCAmJgorICAgICAgICAgICAgIm5vZGVWYWx1ZSIgaW4gb2JqZWN0ICYmCisgICAgICAgICAg
ICAiY2hpbGROb2RlcyIgaW4gb2JqZWN0KSB7CisgICAgICAgICAgICB0cnkgewogICAgICAgICAg
ICAgICAgIG9iamVjdC5ub2RlVHlwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNo
IChlKQotICAgICAgICAgICAgeworICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAg
ICAgICAgIC8vIFRoZSBvYmplY3QgaXMgcHJvYmFibHkgTm9kZS5wcm90b3R5cGUgb3IgYW5vdGhl
ciBwcm90b3R5cGUKICAgICAgICAgICAgICAgICAvLyBvYmplY3QgdGhhdCBpbmhlcml0cyBmcm9t
IGl0LCBhbmQgbm90IGEgTm9kZSBpbnN0YW5jZS4KICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC01NDIsMjUgKzE4OCwyMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgaWYgKCFzZWVuKSB7CiAgICAgICAgICAgICBzZWVuID0gW107CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICJvYmplY3QiICYmIHZhbCAhPT0gbnVs
bCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHNlZW4uaW5kZXhPZih2YWwpID49IDApCi0g
ICAgICAgICAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAib2JqZWN0IiAmJiB2YWwg
IT09IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChzZWVuLmluZGV4T2YodmFsKSA+PSAwKSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuICJbLi4uXSI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzZWVuLnB1c2godmFsKTsKICAgICAgICAgfQotICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2
YWwpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIlsiICsgdmFsLm1hcChmdW5jdGlv
bih4KSB7cmV0dXJuIGZvcm1hdF92YWx1ZSh4LCBzZWVuKX0pLmpvaW4oIiwgIikgKyAiXSI7Cisg
ICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHsKKyAgICAgICAgICAgIHJldHVybiAiWyIg
KyB2YWwubWFwKGZ1bmN0aW9uKHgpIHtyZXR1cm4gZm9ybWF0X3ZhbHVlKHgsIHNlZW4pO30pLmpv
aW4oIiwgIikgKyAiXSI7CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWwp
Ci0gICAgICAgIHsKKyAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsKSB7CiAgICAgICAgIGNhc2Ug
InN0cmluZyI6CiAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgiXFwiLCAiXFxcXCIpOwot
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKQotICAgICAgICAgICAgewor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgdmFyIHJlcGxhY2UgPSAiXFwiOwogICAgICAgICAgICAgICAgIHN3aXRjaCAoaSkgewogICAg
ICAgICAgICAgICAgIGNhc2UgMDogcmVwbGFjZSArPSAiMCI7IGJyZWFrOwpAQCAtNjA1LDMwICsy
NDYsMjUgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIGNh
c2UgIm51bWJlciI6CiAgICAgICAgICAgICAvLyBJbiBKYXZhU2NyaXB0LCAtMCA9PT0gMCBhbmQg
U3RyaW5nKC0wKSA9PSAiMCIsIHNvIHdlIGhhdmUgdG8KICAgICAgICAgICAgIC8vIHNwZWNpYWwt
Y2FzZS4KLSAgICAgICAgICAgIGlmICh2YWwgPT09IC0wICYmIDEvdmFsID09PSAtSW5maW5pdHkp
Ci0gICAgICAgICAgICB7CisgICAgICAgICAgICBpZiAodmFsID09PSAtMCAmJiAxL3ZhbCA9PT0g
LUluZmluaXR5KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuICItMCI7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbCk7CiAgICAgICAgIGNhc2UgIm9iamVjdCI6
Ci0gICAgICAgICAgICBpZiAodmFsID09PSBudWxsKQotICAgICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHZhbCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHJldHVybiAibnVsbCI7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFNwZWNpYWwtY2FzZSBOb2RlIG9iamVjdHMs
IHNpbmNlIHRob3NlIGNvbWUgdXAgYSBsb3QgaW4gbXkgdGVzdHMuICBJCiAgICAgICAgICAgICAv
LyBpZ25vcmUgbmFtZXNwYWNlcy4KLSAgICAgICAgICAgIGlmIChpc19ub2RlKHZhbCkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh2YWwubm9kZVR5cGUpCi0gICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzX25vZGUodmFsKSkgeworICAgICAgICAgICAg
ICAgIHN3aXRjaCAodmFsLm5vZGVUeXBlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBOb2RlLkVM
RU1FTlRfTk9ERToKLSAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9ICI8IiArIHZhbC50YWdO
YW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdmFsLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIHJldCA9ICI8IiArIHZhbC5sb2NhbE5hbWU7CisgICAgICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmF0dHJpYnV0ZXMubGVuZ3RoOyBp
KyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldCArPSAiICIgKyB2YWwuYXR0cmlidXRl
c1tpXS5uYW1lICsgJz0iJyArIHZhbC5hdHRyaWJ1dGVzW2ldLnZhbHVlICsgJyInOwogICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldCArPSAiPiIgKyB2YWwuaW5u
ZXJIVE1MICsgIjwvIiArIHZhbC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgKyAiPiI7CisgICAgICAg
ICAgICAgICAgICAgIHJldCArPSAiPiIgKyB2YWwuaW5uZXJIVE1MICsgIjwvIiArIHZhbC5sb2Nh
bE5hbWUgKyAiPiI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiRWxlbWVudCBub2RlICIg
KyB0cnVuY2F0ZShyZXQsIDYwKTsKICAgICAgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RF
OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1RleHQgbm9kZSAiJyArIHRydW5jYXRlKHZh
bC5kYXRhLCA2MCkgKyAnIic7CkBAIC02NDcsNyArMjgzLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gZGVmYXVsdAorICAgICAgICAvKiBmYWxscyB0
aHJvdWdoICovCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHZh
bCArICcgIicgKyB0cnVuY2F0ZShTdHJpbmcodmFsKSwgNjApICsgJyInOwogICAgICAgICB9CkBA
IC02NjIsMzEgKzI5OCwyNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICB7CiAgICAgICAgIGFzc2VydChhY3R1YWwgPT09IHRydWUsICJhc3NlcnRfdHJ1ZSIsIGRl
c2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgdHJ1
ZSBnb3QgJHthY3R1YWx9Iiwge2FjdHVhbDphY3R1YWx9KTsKLSAgICB9OworICAgIH0KICAgICBl
eHBvc2UoYXNzZXJ0X3RydWUsICJhc3NlcnRfdHJ1ZSIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0
X2ZhbHNlKGFjdHVhbCwgZGVzY3JpcHRpb24pCiAgICAgewogICAgICAgICBhc3NlcnQoYWN0dWFs
ID09PSBmYWxzZSwgImFzc2VydF9mYWxzZSIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGZhbHNlIGdvdCAke2FjdHVhbH0iLCB7YWN0dWFs
OmFjdHVhbH0pOwotICAgIH07CisgICAgfQogICAgIGV4cG9zZShhc3NlcnRfZmFsc2UsICJhc3Nl
cnRfZmFsc2UiKTsKIAogICAgIGZ1bmN0aW9uIHNhbWVfdmFsdWUoeCwgeSkgewotICAgICAgICBp
ZiAoeSAhPT0geSkKLSAgICAgICAgeworICAgICAgICBpZiAoeSAhPT0geSkgewogICAgICAgICAg
ICAgLy9OYU4gY2FzZQogICAgICAgICAgICAgcmV0dXJuIHggIT09IHg7CiAgICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAoeCA9PT0gMCAmJiB5ID09PSAwKSB7CisgICAgICAgIGlmICh4ID09PSAw
ICYmIHkgPT09IDApIHsKICAgICAgICAgICAgIC8vRGlzdGluZ3Vpc2ggKzAgYW5kIC0wCiAgICAg
ICAgICAgICByZXR1cm4gMS94ID09PSAxL3k7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICAvL3R5cGljYWwgY2FzZQotICAgICAgICAgICAgcmV0dXJuIHgg
PT09IHk7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHggPT09IHk7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gYXNzZXJ0X2VxdWFscyhhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKQEAg
LTY5NSw4ICszMjYsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAg
ICAgICAgICAqIFRlc3QgaWYgdHdvIHByaW1pdGl2ZXMgYXJlIGVxdWFsIG9yIHR3byBvYmplY3Rz
CiAgICAgICAgICAgKiBhcmUgdGhlIHNhbWUgb2JqZWN0CiAgICAgICAgICAgKi8KLSAgICAgICAg
aWYgKHR5cGVvZiBhY3R1YWwgIT0gdHlwZW9mIGV4cGVjdGVkKQotICAgICAgICB7CisgICAgICAg
IGlmICh0eXBlb2YgYWN0dWFsICE9IHR5cGVvZiBleHBlY3RlZCkgewogICAgICAgICAgICAgYXNz
ZXJ0KGZhbHNlLCAiYXNzZXJ0X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgKCIgKyB0eXBlb2YgZXhwZWN0ZWQgKyAiKSAke2V4cGVjdGVk
fSBidXQgZ290ICgiICsgdHlwZW9mIGFjdHVhbCArICIpICR7YWN0dWFsfSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwpAQCAt
NzA1LDcgKzMzNSw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAg
ICAgICBhc3NlcnQoc2FtZV92YWx1ZShhY3R1YWwsIGV4cGVjdGVkKSwgImFzc2VydF9lcXVhbHMi
LCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwZWN0ZWQ6ZXhwZWN0ZWQsIGFj
dHVhbDphY3R1YWx9KTsKLSAgICB9OworICAgIH0KICAgICBleHBvc2UoYXNzZXJ0X2VxdWFscywg
ImFzc2VydF9lcXVhbHMiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2VydF9ub3RfZXF1YWxzKGFjdHVh
bCwgZXhwZWN0ZWQsIGRlc2NyaXB0aW9uKQpAQCAtNzE3LDcgKzM0Nyw3IEBAIHBvbGljaWVzIGFu
ZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBhc3NlcnQoIXNhbWVfdmFsdWUoYWN0
dWFsLCBleHBlY3RlZCksICJhc3NlcnRfbm90X2VxdWFscyIsIGRlc2NyaXB0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgZGlzYWxsb3dlZCB2
YWx1ZSAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHthY3R1YWw6YWN0dWFsfSk7Ci0gICAgfTsKKyAgICB9CiAgICAgZXhwb3NlKGFzc2Vy
dF9ub3RfZXF1YWxzLCAiYXNzZXJ0X25vdF9lcXVhbHMiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2Vy
dF9pbl9hcnJheShhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKQEAgLTczNiwyNyArMzY2
LDIxIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAgICAg
IHN0YWNrLnB1c2goYWN0dWFsKTsKIAogICAgICAgICAgICAgIHZhciBwOwotICAgICAgICAgICAg
IGZvciAocCBpbiBhY3R1YWwpCi0gICAgICAgICAgICAgeworICAgICAgICAgICAgIGZvciAocCBp
biBhY3R1YWwpIHsKICAgICAgICAgICAgICAgICAgYXNzZXJ0KGV4cGVjdGVkLmhhc093blByb3Bl
cnR5KHApLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBwcm9w
ZXJ0eSAke3B9Iiwge3A6cH0pOwogCi0gICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0dWFs
W3BdID09PSAib2JqZWN0IiAmJiBhY3R1YWxbcF0gIT09IG51bGwpCi0gICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5pbmRleE9mKGFjdHVhbFtwXSkgPT09
IC0xKQotICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBpZiAodHlwZW9m
IGFjdHVhbFtwXSA9PT0gIm9iamVjdCIgJiYgYWN0dWFsW3BdICE9PSBudWxsKSB7CisgICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RhY2suaW5kZXhPZihhY3R1YWxbcF0pID09PSAtMSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2VxdWFsKGFjdHVhbFtwXSwgZXhwZWN0ZWRbcF0s
IHN0YWNrKTsKICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChzYW1lX3ZhbHVlKGFjdHVhbFtw
XSwgZXhwZWN0ZWRbcF0pLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJv
cGVydHkgJHtwfSBleHBlY3RlZCAke2V4cGVjdGVkfSBnb3QgJHthY3R1YWx9IiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cDpwLCBleHBl
Y3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwogICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgIGZvciAocCBpbiBleHBlY3RlZCkKLSAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgZm9yIChwIGluIGV4cGVjdGVkKSB7CiAgICAgICAgICAgICAgICAg
IGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHkocCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAiYXNzZXJ0X29iamVjdF9lcXVhbHMiLCBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZCBwcm9wZXJ0eSAke3B9IG1pc3NpbmciLCB7cDpwfSk7CkBAIC03NjQs
NyArMzg4LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAg
ICAgICAgc3RhY2sucG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgICBjaGVja19lcXVhbChhY3R1
YWwsIGV4cGVjdGVkLCBbXSk7Ci0gICAgfTsKKyAgICB9CiAgICAgZXhwb3NlKGFzc2VydF9vYmpl
Y3RfZXF1YWxzLCAiYXNzZXJ0X29iamVjdF9lcXVhbHMiKTsKIAogICAgIGZ1bmN0aW9uIGFzc2Vy
dF9hcnJheV9lcXVhbHMoYWN0dWFsLCBleHBlY3RlZCwgZGVzY3JpcHRpb24pCkBAIC03NzQsOCAr
Mzk4LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAg
ICAgICAibGVuZ3RocyBkaWZmZXIsIGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGdvdCAke2FjdHVhbH0i
LAogICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLmxlbmd0aCwgYWN0dWFsOmFjdHVh
bC5sZW5ndGh9KTsKIAotICAgICAgICBmb3IgKHZhciBpPTA7IGkgPCBhY3R1YWwubGVuZ3RoOyBp
KyspCi0gICAgICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1YWwubGVuZ3Ro
OyBpKyspIHsKICAgICAgICAgICAgIGFzc2VydChhY3R1YWwuaGFzT3duUHJvcGVydHkoaSkgPT09
IGV4cGVjdGVkLmhhc093blByb3BlcnR5KGkpLAogICAgICAgICAgICAgICAgICAgICJhc3NlcnRf
YXJyYXlfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5
ICR7aX0sIHByb3BlcnR5IGV4cGVjdGVkIHRvIGJlICRleHBlY3RlZCBidXQgd2FzICRhY3R1YWwi
LApAQCAtODAzLDcgKzQyNiw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogICAgICAgICAgICAgICAgImFzc2VydF9hcHByb3hfZXF1YWxzIiwgZGVzY3JpcHRpb24sCiAg
ICAgICAgICAgICAgICAiZXhwZWN0ZWQgJHtleHBlY3RlZH0gKy8tICR7ZXBzaWxvbn0gYnV0IGdv
dCAke2FjdHVhbH0iLAogICAgICAgICAgICAgICAge2V4cGVjdGVkOmV4cGVjdGVkLCBhY3R1YWw6
YWN0dWFsLCBlcHNpbG9uOmVwc2lsb259KTsKLSAgICB9OworICAgIH0KICAgICBleHBvc2UoYXNz
ZXJ0X2FwcHJveF9lcXVhbHMsICJhc3NlcnRfYXBwcm94X2VxdWFscyIpOwogCiAgICAgZnVuY3Rp
b24gYXNzZXJ0X2xlc3NfdGhhbihhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlwdGlvbikKQEAgLTgy
MCw3ICs0NDMsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAg
ICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVzcyB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1
YWx9IiwKICAgICAgICAgICAgICAgIHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0p
OwotICAgIH07CisgICAgfQogICAgIGV4cG9zZShhc3NlcnRfbGVzc190aGFuLCAiYXNzZXJ0X2xl
c3NfdGhhbiIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbihhY3R1YWwsIGV4
cGVjdGVkLCBkZXNjcmlwdGlvbikKQEAgLTgzNyw3ICs0NjAsNyBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFu
IiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRl
ciB0aGFuICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtl
eHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwotICAgIH07CisgICAgfQogICAgIGV4
cG9zZShhc3NlcnRfZ3JlYXRlcl90aGFuLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbiIpOwogCiAgICAg
ZnVuY3Rpb24gYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlw
dGlvbikKQEAgLTg1NCw3ICs0NzcsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgICAgICAgICJhc3NlcnRfbGVzc190aGFuIiwgZGVzY3JpcHRpb24sCiAg
ICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICR7
ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAgIHtleHBlY3RlZDpl
eHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwotICAgIH07CisgICAgfQogICAgIGV4cG9zZShhc3Nl
cnRfbGVzc190aGFuX2VxdWFsLCAiYXNzZXJ0X2xlc3NfdGhhbl9lcXVhbCIpOwogCiAgICAgZnVu
Y3Rpb24gYXNzZXJ0X2dyZWF0ZXJfdGhhbl9lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBkZXNjcmlw
dGlvbikKQEAgLTg3MSw3ICs0OTQsNyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgICAgICAgICJhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwgZGVzY3Jp
cHRpb24sCiAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYSBudW1iZXIgZ3JlYXRlciB0aGFuIG9y
IGVxdWFsIHRvICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9IiwKICAgICAgICAgICAgICAg
IHtleHBlY3RlZDpleHBlY3RlZCwgYWN0dWFsOmFjdHVhbH0pOwotICAgIH07CisgICAgfQogICAg
IGV4cG9zZShhc3NlcnRfZ3JlYXRlcl90aGFuX2VxdWFsLCAiYXNzZXJ0X2dyZWF0ZXJfdGhhbl9l
cXVhbCIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3JlZ2V4cF9tYXRjaChhY3R1YWwsIGV4cGVj
dGVkLCBkZXNjcmlwdGlvbikgewpAQCAtOTA4LDcgKzUzMSw3IEBAIHBvbGljaWVzIGFuZCBjb250
cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBhc3NlcnQoIW9iamVjdC5oYXNPd25Qcm9wZXJ0
eShwcm9wZXJ0eV9uYW1lKSwKICAgICAgICAgICAgICAgICJhc3NlcnRfbm90X2V4aXN0cyIsIGRl
c2NyaXB0aW9uLAogICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgcHJvcGVydHkgJHtwfSBmb3Vu
ZCIsIHtwOnByb3BlcnR5X25hbWV9KTsKLSAgICB9OworICAgIH0KICAgICBleHBvc2UoYXNzZXJ0
X25vdF9leGlzdHMsICJhc3NlcnRfbm90X2V4aXN0cyIpOwogCiAgICAgZnVuY3Rpb24gX2Fzc2Vy
dF9pbmhlcml0cyhuYW1lKSB7CkBAIC05NDcsMzMgKzU3MCwyNiBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9yZWFkb25s
eSIsIGRlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICAiY2hhbmdpbmcgcHJvcGVydHkg
JHtwfSBzdWNjZWVkZWQiLAogICAgICAgICAgICAgICAgICAgICB7cDpwcm9wZXJ0eV9uYW1lfSk7
Ci0gICAgICAgICB9Ci0gICAgICAgICBmaW5hbGx5Ci0gICAgICAgICB7CisgICAgICAgICB9IGZp
bmFsbHkgewogICAgICAgICAgICAgIG9iamVjdFtwcm9wZXJ0eV9uYW1lXSA9IGluaXRpYWxfdmFs
dWU7CiAgICAgICAgICB9Ci0gICAgfTsKKyAgICB9CiAgICAgZXhwb3NlKGFzc2VydF9yZWFkb25s
eSwgImFzc2VydF9yZWFkb25seSIpOwogCiAgICAgZnVuY3Rpb24gYXNzZXJ0X3Rocm93cyhjb2Rl
LCBmdW5jLCBkZXNjcmlwdGlvbikKICAgICB7Ci0gICAgICAgIHRyeQotICAgICAgICB7CisgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICBmdW5jLmNhbGwodGhpcyk7CiAgICAgICAgICAgICBhc3Nl
cnQoZmFsc2UsICJhc3NlcnRfdGhyb3dzIiwgZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAg
ICAgIiR7ZnVuY30gZGlkIG5vdCB0aHJvdyIsIHtmdW5jOmZ1bmN9KTsKLSAgICAgICAgfQotICAg
ICAgICBjYXRjaChlKQotICAgICAgICB7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAg
ICAgIGlmIChlIGluc3RhbmNlb2YgQXNzZXJ0aW9uRXJyb3IpIHsKLSAgICAgICAgICAgICAgICB0
aHJvdyhlKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgaWYgKGNvZGUgPT09IG51bGwpCi0gICAgICAgICAgICB7CisgICAgICAgICAgICBpZiAo
Y29kZSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmICh0eXBlb2YgY29kZSA9PT0gIm9iamVjdCIpCi0gICAgICAgICAgICB7
CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvZGUgPT09ICJvYmplY3QiKSB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0KHR5cGVvZiBlID09ICJvYmplY3QiICYmICJuYW1lIiBpbiBlICYmIGUubmFt
ZSA9PSBjb2RlLm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfdGhyb3dzIiwg
ZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7YWN0
dWFsfSAoJHthY3R1YWxfbmFtZX0pIGV4cGVjdGVkICR7ZXhwZWN0ZWR9ICgke2V4cGVjdGVkX25h
bWV9KSIsCkBAIC0xMDQwLDE2ICs2NTYsMTQgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgICAgICAgICAgVmVyc2lvbkVycm9yOiAwCiAgICAgICAgICAgICB9
OwogCi0gICAgICAgICAgICBpZiAoIShuYW1lIGluIG5hbWVfY29kZV9tYXApKQotICAgICAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCEobmFtZSBpbiBuYW1lX2NvZGVfbWFwKSkgewogICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcignVGVzdCBidWc6IHVucmVjb2duaXpl
ZCBET01FeGNlcHRpb24gY29kZSAiJyArIGNvZGUgKyAnIiBwYXNzZWQgdG8gYXNzZXJ0X3Rocm93
cygpJyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHZhciByZXF1aXJlZF9wcm9wcyA9
IHsgY29kZTogbmFtZV9jb2RlX21hcFtuYW1lXSB9OwogCi0gICAgICAgICAgICBpZiAocmVxdWly
ZWRfcHJvcHMuY29kZSA9PT0gMAotICAgICAgICAgICAgfHwgKCJuYW1lIiBpbiBlICYmIGUubmFt
ZSAhPT0gZS5uYW1lLnRvVXBwZXJDYXNlKCkgJiYgZS5uYW1lICE9PSAiRE9NRXhjZXB0aW9uIikp
Ci0gICAgICAgICAgICB7CisgICAgICAgICAgICBpZiAocmVxdWlyZWRfcHJvcHMuY29kZSA9PT0g
MCB8fAorICAgICAgICAgICAgICAgKCJuYW1lIiBpbiBlICYmIGUubmFtZSAhPT0gZS5uYW1lLnRv
VXBwZXJDYXNlKCkgJiYgZS5uYW1lICE9PSAiRE9NRXhjZXB0aW9uIikpIHsKICAgICAgICAgICAg
ICAgICAvLyBOZXcgc3R5bGUgZXhjZXB0aW9uOiBhbHNvIHRlc3QgdGhlIG5hbWUgcHJvcGVydHku
CiAgICAgICAgICAgICAgICAgcmVxdWlyZWRfcHJvcHMubmFtZSA9IG5hbWU7CiAgICAgICAgICAg
ICB9CkBAIC0xMDY0LDggKzY3OCw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMg
WzNdLgogICAgICAgICAgICAgICAgICAgICIke2Z1bmN9IHRocmV3ICR7ZX0gd2l0aCB0eXBlICR7
dHlwZX0sIG5vdCBhbiBvYmplY3QiLAogICAgICAgICAgICAgICAgICAgIHtmdW5jOmZ1bmMsIGU6
ZSwgdHlwZTp0eXBlb2YgZX0pOwogCi0gICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHJlcXVp
cmVkX3Byb3BzKQotICAgICAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBy
ZXF1aXJlZF9wcm9wcykgewogICAgICAgICAgICAgICAgIGFzc2VydCh0eXBlb2YgZSA9PSAib2Jq
ZWN0IiAmJiBwcm9wIGluIGUgJiYgZVtwcm9wXSA9PSByZXF1aXJlZF9wcm9wc1twcm9wXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgImFzc2VydF90aHJvd3MiLCBkZXNjcmlwdGlvbiwKICAgICAg
ICAgICAgICAgICAgICAgICAgIiR7ZnVuY30gdGhyZXcgJHtlfSB0aGF0IGlzIG5vdCBhIERPTUV4
Y2VwdGlvbiAiICsgY29kZSArICI6IHByb3BlcnR5ICR7cHJvcH0gaXMgZXF1YWwgdG8gJHthY3R1
YWx9LCBleHBlY3RlZCAke2V4cGVjdGVkfSIsCkBAIC0xMDgzLDE2ICs2OTYsMTYgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAKICAgICBmdW5jdGlvbiBhc3NlcnRfYW55
KGFzc2VydF9mdW5jLCBhY3R1YWwsIGV4cGVjdGVkX2FycmF5KQogICAgIHsKLSAgICAgICAgdmFy
IGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMykKLSAgICAgICAgdmFyIGVycm9ycyA9
IFtdCisgICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDMpOworICAg
ICAgICB2YXIgZXJyb3JzID0gW107CiAgICAgICAgIHZhciBwYXNzZWQgPSBmYWxzZTsKICAgICAg
ICAgZm9yRWFjaChleHBlY3RlZF9hcnJheSwKICAgICAgICAgICAgICAgICBmdW5jdGlvbihleHBl
Y3RlZCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZnVuYy5hcHBseSh0aGlzLCBbYWN0dWFsLCBleHBl
Y3RlZF0uY29uY2F0KGFyZ3MpKQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2Z1bmMu
YXBwbHkodGhpcywgW2FjdHVhbCwgZXhwZWN0ZWRdLmNvbmNhdChhcmdzKSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwYXNzZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3JzLnB1c2goZS5tZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0pOwpAQCAtMTEwNCw2ICs3MTcsOSBAQCBwb2xpY2llcyBhbmQgY29u
dHJpYnV0aW9uIGZvcm1zIFszXS4KIAogICAgIGZ1bmN0aW9uIFRlc3QobmFtZSwgcHJvcGVydGll
cykKICAgICB7CisgICAgICAgIGlmICh0ZXN0cy5maWxlX2lzX3Rlc3QgJiYgdGVzdHMudGVzdHMu
bGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlRyaWVkIHRvIGNyZWF0ZSBh
IHRlc3Qgd2l0aCBmaWxlX2lzX3Rlc3QiKTsKKyAgICAgICAgfQogICAgICAgICB0aGlzLm5hbWUg
PSBuYW1lOwogCiAgICAgICAgIHRoaXMucGhhc2VzID0gewpAQCAtMTExOCw3ICs3MzQsNyBAQCBw
b2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgdGhpcy50aW1lb3V0
X2lkID0gbnVsbDsKIAogICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwotICAg
ICAgICB2YXIgdGltZW91dCA9IHByb3BlcnRpZXMudGltZW91dCA/IHByb3BlcnRpZXMudGltZW91
dCA6IHNldHRpbmdzLnRlc3RfdGltZW91dAorICAgICAgICB2YXIgdGltZW91dCA9IHByb3BlcnRp
ZXMudGltZW91dCA/IHByb3BlcnRpZXMudGltZW91dCA6IHNldHRpbmdzLnRlc3RfdGltZW91dDsK
ICAgICAgICAgaWYgKHRpbWVvdXQgIT0gbnVsbCkgewogICAgICAgICAgICAgdGhpcy50aW1lb3V0
X2xlbmd0aCA9IHRpbWVvdXQgKiB0ZXN0cy50aW1lb3V0X211bHRpcGxpZXI7CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC0xMTI3LDkgKzc0MywxMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KIAogICAgICAgICB0aGlzLm1lc3NhZ2UgPSBudWxsOwogCi0gICAgICAgIHZhciB0
aGlzX29iaiA9IHRoaXM7CiAgICAgICAgIHRoaXMuc3RlcHMgPSBbXTsKIAorICAgICAgICB0aGlz
LmNsZWFudXBfY2FsbGJhY2tzID0gW107CisKICAgICAgICAgdGVzdHMucHVzaCh0aGlzKTsKICAg
ICB9CiAKQEAgLTExNDQsOCArNzYxLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3Jt
cyBbM10uCiAKICAgICBUZXN0LnByb3RvdHlwZS5zdHJ1Y3R1cmVkX2Nsb25lID0gZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgaWYoIXRoaXMuX3N0cnVjdHVyZWRfY2xvbmUpCi0gICAgICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lKSB7CiAgICAgICAgICAgICB2YXIg
bXNnID0gdGhpcy5tZXNzYWdlOwogICAgICAgICAgICAgbXNnID0gbXNnID8gU3RyaW5nKG1zZykg
OiBtc2c7CiAgICAgICAgICAgICB0aGlzLl9zdHJ1Y3R1cmVkX2Nsb25lID0gbWVyZ2UoewpAQCAt
MTE1OSw5ICs3NzUsOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KIAog
ICAgIFRlc3QucHJvdG90eXBlLnN0ZXAgPSBmdW5jdGlvbihmdW5jLCB0aGlzX29iaikKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLnBoYXNlID4gdGhpcy5waGFzZXMuU1RBUlRFRCkKLSAgICAgICAg
ewotICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHRoaXMucGhhc2UgPiB0aGlzLnBoYXNl
cy5TVEFSVEVEKSB7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhp
cy5waGFzZSA9IHRoaXMucGhhc2VzLlNUQVJURUQ7CiAgICAgICAgIC8vSWYgd2UgZG9uJ3QgZ2V0
IGEgcmVzdWx0IGJlZm9yZSB0aGUgaGFybmVzcyB0aW1lcyBvdXQgdGhhdCB3aWxsIGJlIGEgdGVz
dCB0aW1vdXQKQEAgLTExNjksMjYgKzc4NCwyMCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KIAogICAgICAgICB0ZXN0cy5zdGFydGVkID0gdHJ1ZTsKIAotICAgICAgICBp
ZiAodGhpcy50aW1lb3V0X2lkID09PSBudWxsKQotICAgICAgICB7CisgICAgICAgIGlmICh0aGlz
LnRpbWVvdXRfaWQgPT09IG51bGwpIHsKICAgICAgICAgICAgIHRoaXMuc2V0X3RpbWVvdXQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuc3RlcHMucHVzaChmdW5jKTsKIAotICAgICAgICBp
ZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkKLSAgICAgICAgeworICAgICAgICBpZiAoYXJndW1l
bnRzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgdGhpc19vYmogPSB0aGlzOwogICAgICAg
ICB9CiAKLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKKyAgICAgICAgdHJ5IHsKICAgICAgICAgICAg
IHJldHVybiBmdW5jLmFwcGx5KHRoaXNfb2JqLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh
cmd1bWVudHMsIDIpKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaChlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAodGhpcy5waGFzZSA+PSB0aGlzLnBoYXNlcy5IQVNfUkVTVUxUKQotICAg
ICAgICAgICAgeworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5w
aGFzZSA+PSB0aGlzLnBoYXNlcy5IQVNfUkVTVUxUKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSAodHlwZW9mIGUgPT09
ICJvYmplY3QiICYmIGUgIT09IG51bGwpID8gZS5tZXNzYWdlIDogZTsKQEAgLTEyMDksMTQgKzgx
OCwxMyBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICB7CiAgICAg
ICAgIHZhciB0ZXN0X3RoaXMgPSB0aGlzOwogCi0gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3Ro
ID09PSAxKQotICAgICAgICB7CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7
CiAgICAgICAgICAgICB0aGlzX29iaiA9IHRlc3RfdGhpczsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBmdW5jdGlvbigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RfdGhpcy5zdGVw
LmFwcGx5KHRlc3RfdGhpcywgW2Z1bmMsIHRoaXNfb2JqXS5jb25jYXQoCisgICAgICAgICAgICBy
ZXR1cm4gdGVzdF90aGlzLnN0ZXAuYXBwbHkodGVzdF90aGlzLCBbZnVuYywgdGhpc19vYmpdLmNv
bmNhdCgKICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMpKSk7CiAgICAgICAgIH07CiAgICAgfTsKQEAgLTEyMjUsNDEgKzgzMyw1NyBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICB7CiAgICAgICAgIHZhciB0ZXN0X3Ro
aXMgPSB0aGlzOwogCi0gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKQotICAgICAg
ICB7CisgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICB0
aGlzX29iaiA9IHRlc3RfdGhpczsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmdW5jdGlv
bigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RfdGhpcy5zdGVwLmFwcGx5KHRlc3RfdGhp
cywgW2Z1bmMsIHRoaXNfb2JqXS5jb25jYXQoCi0gICAgICAgICAgICAgICAgQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpOworICAgICAgICAgICAgaWYgKGZ1bmMpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0X3RoaXMuc3RlcC5hcHBseSh0ZXN0X3RoaXMsIFtmdW5jLCB0aGlz
X29ial0uY29uY2F0KAorICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMpKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB0ZXN0X3RoaXMu
ZG9uZSgpOwogICAgICAgICB9OworICAgIH07CisKKyAgICBUZXN0LnByb3RvdHlwZS51bnJlYWNo
ZWRfZnVuYyA9IGZ1bmN0aW9uKGRlc2NyaXB0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZChk
ZXNjcmlwdGlvbik7CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBUZXN0LnByb3RvdHlwZS5h
ZGRfY2xlYW51cCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgICAgICAgIHRoaXMuY2xlYW51cF9j
YWxsYmFja3MucHVzaChjYWxsYmFjayk7CisgICAgfTsKKworICAgIFRlc3QucHJvdG90eXBlLmZv
cmNlX3RpbWVvdXQgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdGhpcy5zZXRfc3RhdHVzKHRoaXMu
VElNRU9VVCk7CisgICAgICAgIHRoaXMucGhhc2UgPSB0aGlzLnBoYXNlcy5IQVNfUkVTVUxUOwog
ICAgIH0KIAogICAgIFRlc3QucHJvdG90eXBlLnNldF90aW1lb3V0ID0gZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgaWYgKHRoaXMudGltZW91dF9sZW5ndGggIT09IG51bGwpCi0gICAgICAgIHsK
KyAgICAgICAgaWYgKHRoaXMudGltZW91dF9sZW5ndGggIT09IG51bGwpIHsKICAgICAgICAgICAg
IHZhciB0aGlzX29iaiA9IHRoaXM7CiAgICAgICAgICAgICB0aGlzLnRpbWVvdXRfaWQgPSBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19v
YmoudGltZW91dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LCB0aGlzLnRpbWVvdXRfbGVuZ3RoKTsKICAgICAgICAgfQotICAgIH0KKyAgICB9OwogCiAgICAg
VGVzdC5wcm90b3R5cGUuc2V0X3N0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cywgbWVzc2FnZSkKICAg
ICB7CiAgICAgICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwogICAgICAgICB0aGlzLm1lc3NhZ2Ug
PSBtZXNzYWdlOwotICAgIH0KKyAgICB9OwogCiAgICAgVGVzdC5wcm90b3R5cGUudGltZW91dCA9
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMudGltZW91dF9pZCA9IG51bGw7Ci0gICAg
ICAgIHRoaXMuc2V0X3N0YXR1cyh0aGlzLlRJTUVPVVQsICJUZXN0IHRpbWVkIG91dCIpCisgICAg
ICAgIHRoaXMuc2V0X3N0YXR1cyh0aGlzLlRJTUVPVVQsICJUZXN0IHRpbWVkIG91dCIpOwogICAg
ICAgICB0aGlzLnBoYXNlID0gdGhpcy5waGFzZXMuSEFTX1JFU1VMVDsKICAgICAgICAgdGhpcy5k
b25lKCk7CiAgICAgfTsKQEAgLTEyNjgsMTMgKzg5MiwxMyBAQCBwb2xpY2llcyBhbmQgY29udHJp
YnV0aW9uIGZvcm1zIFszXS4KICAgICB7CiAgICAgICAgIGlmICh0aGlzLnBoYXNlID09IHRoaXMu
cGhhc2VzLkNPTVBMRVRFKSB7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSBp
ZiAodGhpcy5waGFzZSA8PSB0aGlzLnBoYXNlcy5TVEFSVEVEKQotICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBpZiAodGhpcy5waGFzZSA8PSB0aGlzLnBoYXNlcy5TVEFSVEVEKSB7CiAg
ICAgICAgICAgICB0aGlzLnNldF9zdGF0dXModGhpcy5QQVNTLCBudWxsKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PSB0aGlzLk5PVFJVTikKLSAgICAgICAgeworICAg
ICAgICBpZiAodGhpcy5zdGF0dXMgPT0gdGhpcy5OT1RSVU4pIHsKICAgICAgICAgICAgIGFsZXJ0
KHRoaXMucGhhc2UpOwogICAgICAgICB9CiAKQEAgLTEyODIsOCArOTA2LDE1IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogCiAgICAgICAgIGNsZWFyVGltZW91dCh0aGlz
LnRpbWVvdXRfaWQpOwogICAgICAgICB0ZXN0cy5yZXN1bHQodGhpcyk7CisgICAgICAgIHRoaXMu
Y2xlYW51cCgpOwogICAgIH07CiAKKyAgICBUZXN0LnByb3RvdHlwZS5jbGVhbnVwID0gZnVuY3Rp
b24oKSB7CisgICAgICAgIGZvckVhY2godGhpcy5jbGVhbnVwX2NhbGxiYWNrcywKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbihjbGVhbnVwX2NhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFudXBfY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9OwogCiAgICAg
LyoKICAgICAgKiBIYXJuZXNzCkBAIC0xMzA1LDggKzkzNiw3IEBAIHBvbGljaWVzIGFuZCBjb250
cmlidXRpb24gZm9ybXMgWzNdLgogCiAgICAgVGVzdHNTdGF0dXMucHJvdG90eXBlLnN0cnVjdHVy
ZWRfY2xvbmUgPSBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZighdGhpcy5fc3RydWN0dXJl
ZF9jbG9uZSkKLSAgICAgICAgeworICAgICAgICBpZiAoIXRoaXMuX3N0cnVjdHVyZWRfY2xvbmUp
IHsKICAgICAgICAgICAgIHZhciBtc2cgPSB0aGlzLm1lc3NhZ2U7CiAgICAgICAgICAgICBtc2cg
PSBtc2cgPyBTdHJpbmcobXNnKSA6IG1zZzsKICAgICAgICAgICAgIHRoaXMuX3N0cnVjdHVyZWRf
Y2xvbmUgPSBtZXJnZSh7CkBAIC0xMzQwLDYgKzk3MCw4IEBAIHBvbGljaWVzIGFuZCBjb250cmli
dXRpb24gZm9ybXMgWzNdLgogCiAgICAgICAgIHRoaXMuYWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9u
ID0gZmFsc2U7CiAKKyAgICAgICAgdGhpcy5maWxlX2lzX3Rlc3QgPSBmYWxzZTsKKwogICAgICAg
ICB0aGlzLnRpbWVvdXRfbXVsdGlwbGllciA9IDE7CiAgICAgICAgIHRoaXMudGltZW91dF9sZW5n
dGggPSB0aGlzLmdldF90aW1lb3V0KCk7CiAgICAgICAgIHRoaXMudGltZW91dF9pZCA9IG51bGw7
CkBAIC0xMzY3LDgwICs5OTksNzMgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBb
M10uCiAKICAgICBUZXN0cy5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbihmdW5jLCBwcm9wZXJ0
aWVzKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMucGhhc2UgPj0gdGhpcy5waGFzZXMuSEFWRV9S
RVNVTFRTKQotICAgICAgICB7CisgICAgICAgIGlmICh0aGlzLnBoYXNlID49IHRoaXMucGhhc2Vz
LkhBVkVfUkVTVUxUUykgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGlmICh0aGlzLnBoYXNlIDwgdGhpcy5waGFzZXMuU0VUVVApCi0gICAgICAgIHsKKworICAgICAg
ICBpZiAodGhpcy5waGFzZSA8IHRoaXMucGhhc2VzLlNFVFVQKSB7CiAgICAgICAgICAgICB0aGlz
LnBoYXNlID0gdGhpcy5waGFzZXMuU0VUVVA7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnBy
b3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwogCi0gICAgICAgIGZvciAodmFyIHAgaW4gcHJvcGVydGll
cykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuaGFzT3duUHJvcGVydHko
cCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcGVydGll
c1twXQorICAgICAgICBmb3IgKHZhciBwIGluIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGlm
IChwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHApKSB7CisgICAgICAgICAgICAgICAgdmFyIHZh
bHVlID0gcHJvcGVydGllc1twXTsKICAgICAgICAgICAgICAgICBpZiAocCA9PSAiYWxsb3dfdW5j
YXVnaHRfZXhjZXB0aW9uIikgewogICAgICAgICAgICAgICAgICAgICB0aGlzLmFsbG93X3VuY2F1
Z2h0X2V4Y2VwdGlvbiA9IHZhbHVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChwID09ICJleHBsaWNpdF9kb25lIiAmJiB2YWx1ZSkKLSAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwID09ICJleHBsaWNpdF9kb25lIiAmJiB2
YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXRfZm9yX2ZpbmlzaCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHAgPT0gImV4cGxp
Y2l0X3RpbWVvdXQiICYmIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwID09
ICJleHBsaWNpdF90aW1lb3V0IiAmJiB2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICB0aGlz
LnRpbWVvdXRfbGVuZ3RoID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGlt
ZW91dF9pZCkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dF9pZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocCA9PSAidGltZW91dF9t
dWx0aXBsaWVyIikKLSAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChwID09ICJ0aW1lb3V0X211bHRpcGxpZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMu
dGltZW91dF9tdWx0aXBsaWVyID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGZ1bmMpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHRyeQotICAgICAgICAgICAgeworICAgICAgICBpZiAoZnVuYykgeworICAgICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgICAgICBmdW5jKCk7Ci0gICAgICAgICAgICB9IGNhdGNoKGUpCi0g
ICAgICAgICAgICB7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICAg
dGhpcy5zdGF0dXMuc3RhdHVzID0gdGhpcy5zdGF0dXMuRVJST1I7Ci0gICAgICAgICAgICAgICAg
dGhpcy5zdGF0dXMubWVzc2FnZSA9IGU7Ci0gICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IHRoaXMuc3RhdHVzLm1lc3NhZ2UgPSBTdHJpbmcoZSk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgdGhpcy5zZXRfdGltZW91dCgpOwogICAgIH07CiAKLSAgICBUZXN0cy5wcm90
b3R5cGUuZ2V0X3RpbWVvdXQgPSBmdW5jdGlvbigpCi0gICAgeworICAgIFRlc3RzLnByb3RvdHlw
ZS5zZXRfZmlsZV9pc190ZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLnRlc3Rz
Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVHJpZWQgdG8gc2V0
IGZpbGUgYXMgdGVzdCBhZnRlciBjcmVhdGluZyBhIHRlc3QiKTsKKyAgICAgICAgfQorICAgICAg
ICB0aGlzLndhaXRfZm9yX2ZpbmlzaCA9IHRydWU7CisgICAgICAgIHRoaXMuZmlsZV9pc190ZXN0
ID0gdHJ1ZTsKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSB0ZXN0LCB3aGljaCB3aWxsIGFkZCBpdCB0
byB0aGUgbGlzdCBvZiB0ZXN0cworICAgICAgICBhc3luY190ZXN0KCk7CisgICAgfTsKKworICAg
IFRlc3RzLnByb3RvdHlwZS5nZXRfdGltZW91dCA9IGZ1bmN0aW9uKCkgewogICAgICAgICB2YXIg
bWV0YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibWV0YSIpOwotICAgICAgICBm
b3IgKHZhciBpPTA7IGk8bWV0YXMubGVuZ3RoOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChtZXRhc1tpXS5uYW1lID09ICJ0aW1lb3V0IikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpZiAobWV0YXNbaV0uY29udGVudCA9PSAibG9uZyIpCi0gICAgICAgICAgICAgICAg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGFzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgICAgICBpZiAobWV0YXNbaV0ubmFtZSA9PSAidGltZW91dCIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAobWV0YXNbaV0uY29udGVudCA9PSAibG9uZyIpIHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHNldHRpbmdzLmhhcm5lc3NfdGltZW91dC5sb25nOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gc2V0dGluZ3MuaGFybmVzc190aW1lb3V0Lm5vcm1hbDsKLSAgICB9CisgICAgfTsK
IAotICAgIFRlc3RzLnByb3RvdHlwZS5zZXRfdGltZW91dCA9IGZ1bmN0aW9uKCkKLSAgICB7Cisg
ICAgVGVzdHMucHJvdG90eXBlLnNldF90aW1lb3V0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZh
ciB0aGlzX29iaiA9IHRoaXM7CiAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXRfaWQp
OwotICAgICAgICBpZiAodGhpcy50aW1lb3V0X2xlbmd0aCAhPT0gbnVsbCkKLSAgICAgICAgewor
ICAgICAgICBpZiAodGhpcy50aW1lb3V0X2xlbmd0aCAhPT0gbnVsbCkgewogICAgICAgICAgICAg
dGhpcy50aW1lb3V0X2lkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfb2JqLnRpbWVvdXQoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy50aW1lb3V0X2xlbmd0
aCk7CkBAIC0xNDQ4LDcgKzEwNzMsOSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICB9OwogCiAgICAgVGVzdHMucHJvdG90eXBlLnRpbWVvdXQgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gdGhpcy5zdGF0dXMuVElNRU9VVDsKKyAg
ICAgICAgaWYgKHRoaXMuc3RhdHVzLnN0YXR1cyA9PT0gbnVsbCkgeworICAgICAgICAgICAgdGhp
cy5zdGF0dXMuc3RhdHVzID0gdGhpcy5zdGF0dXMuVElNRU9VVDsKKyAgICAgICAgfQogICAgICAg
ICB0aGlzLmNvbXBsZXRlKCk7CiAgICAgfTsKIApAQCAtMTQ3MCw3ICsxMDk3LDcgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgfTsKIAogICAgIFRlc3RzLnByb3Rv
dHlwZS5hbGxfZG9uZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICByZXR1cm4gKHRoaXMuYWxsX2xv
YWRlZCAmJiB0aGlzLm51bV9wZW5kaW5nID09PSAwICYmCisgICAgICAgIHJldHVybiAodGhpcy50
ZXN0cy5sZW5ndGggPiAwICYmIHRoaXMuYWxsX2xvYWRlZCAmJiB0aGlzLm51bV9wZW5kaW5nID09
PSAwICYmCiAgICAgICAgICAgICAgICAgIXRoaXMud2FpdF9mb3JfZmluaXNoICYmICF0aGlzLnBy
b2Nlc3NpbmdfY2FsbGJhY2tzKTsKICAgICB9OwogCkBAIC0xNDg5LDIyICsxMTE2LDE2IEBAIHBv
bGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICBmb3JFYWNoX3dpbmRv
d3MoCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24odywgaXNfc2FtZV9vcmlnaW4pCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZihpc19zYW1lX29yaWdpbiAmJiB3LnN0
YXJ0X2NhbGxiYWNrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB0cnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGlzX3NhbWVfb3JpZ2luICYmIHcuc3RhcnRfY2FsbGJhY2spIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdy5zdGFydF9jYWxs
YmFjayh0aGlzX29iai5wcm9wZXJ0aWVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNhdGNoKGUpCi0gICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coZSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGRlYnVnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChzdXBwb3J0c19wb3N0X21lc3NhZ2UodykgJiYgdyAhPT0gc2VsZikKLSAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNfcG9zdF9tZXNzYWdlKHcp
ICYmIHcgIT09IHNlbGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHcucG9zdE1lc3NhZ2Uo
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJzdGFydCIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogdGhpc19vYmoucHJvcGVydGllcwpAQCAtMTUx
NSw4ICsxMTM2LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAKICAg
ICBUZXN0cy5wcm90b3R5cGUucmVzdWx0ID0gZnVuY3Rpb24odGVzdCkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLnBoYXNlID4gdGhpcy5waGFzZXMuSEFWRV9SRVNVTFRTKQotICAgICAgICB7Cisg
ICAgICAgIGlmICh0aGlzLnBoYXNlID4gdGhpcy5waGFzZXMuSEFWRV9SRVNVTFRTKSB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMucGhh
c2VzLkhBVkVfUkVTVUxUUzsKQEAgLTE1MzYsMjEgKzExNTYsMTYgQEAgcG9saWNpZXMgYW5kIGNv
bnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIGZvckVhY2hfd2luZG93cygKICAgICAgICAg
ICAgICAgICBmdW5jdGlvbih3LCBpc19zYW1lX29yaWdpbikKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmKGlzX3NhbWVfb3JpZ2luICYmIHcucmVzdWx0X2NhbGxiYWNr
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3NhbWVf
b3JpZ2luICYmIHcucmVzdWx0X2NhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcucmVzdWx0X2NhbGxiYWNrKHRlc3Qp
OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgY2F0
Y2goZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZihkZWJ1ZykgeworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBpZiAoc3VwcG9ydHNfcG9zdF9tZXNzYWdlKHcpICYmIHcgIT09IHNlbGYp
Ci0gICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN1cHBvcnRz
X3Bvc3RfbWVzc2FnZSh3KSAmJiB3ICE9PSBzZWxmKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB3LnBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAicmVz
dWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LnN0cnVjdHVyZWRf
Y2xvbmUoKQpAQCAtMTU1OCw4ICsxMTczLDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBm
b3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgdGhpcy5wcm9jZXNzaW5nX2NhbGxiYWNrcyA9IGZhbHNlOwotICAgICAgICBpZiAodGhp
c19vYmouYWxsX2RvbmUoKSkKLSAgICAgICAgeworICAgICAgICBpZiAodGhpc19vYmouYWxsX2Rv
bmUoKSkgewogICAgICAgICAgICAgdGhpc19vYmouY29tcGxldGUoKTsKICAgICAgICAgfQogICAg
IH07CkBAIC0xNTczLDkgKzExODcsOSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1z
IFszXS4KICAgICAgICAgdGhpcy50ZXN0cy5mb3JFYWNoKAogICAgICAgICAgICAgZnVuY3Rpb24o
eCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZih4LnN0YXR1cyA9PT0geC5OT1RS
VU4pCi0gICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh4LnN0YXR1cyA9PT0g
eC5OT1RSVU4pIHsKICAgICAgICAgICAgICAgICAgICAgdGhpc19vYmoubm90aWZ5X3Jlc3VsdCh4
KTsKKyAgICAgICAgICAgICAgICAgICAgeC5jbGVhbnVwKCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICApOwpAQCAtMTU5MSw4ICsxMjA1LDcgQEAgcG9saWNpZXMg
YW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3Quc3RydWN0dXJlZF9jbG9uZSgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIGlmICh0aGlzLnN0YXR1cy5z
dGF0dXMgPT09IG51bGwpCi0gICAgICAgIHsKKyAgICAgICAgaWYgKHRoaXMuc3RhdHVzLnN0YXR1
cyA9PT0gbnVsbCkgewogICAgICAgICAgICAgdGhpcy5zdGF0dXMuc3RhdHVzID0gdGhpcy5zdGF0
dXMuT0s7CiAgICAgICAgIH0KIApAQCAtMTYwNSwyMiArMTIxOCwxNiBAQCBwb2xpY2llcyBhbmQg
Y29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgZm9yRWFjaF93aW5kb3dzKAogICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uKHcsIGlzX3NhbWVfb3JpZ2luKQogICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYoaXNfc2FtZV9vcmlnaW4gJiYgdy5jb21wbGV0aW9uX2Nh
bGxiYWNrKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
cnkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlz
X3NhbWVfb3JpZ2luICYmIHcuY29tcGxldGlvbl9jYWxsYmFjaykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3LmNvbXBsZXRpb25f
Y2FsbGJhY2sodGhpc19vYmoudGVzdHMsIHRoaXNfb2JqLnN0YXR1cyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaChlKQotICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWJ1ZykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdXBwb3J0c19wb3N0X21lc3NhZ2Uodykg
JiYgdyAhPT0gc2VsZikKLSAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoc3VwcG9ydHNfcG9zdF9tZXNzYWdlKHcpICYmIHcgIT09IHNlbGYpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIHcucG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHR5cGU6ICJjb21wbGV0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHM6
IHRlc3RzLApAQCAtMTYzMiwxOCArMTIzOSwyNSBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9u
IGZvcm1zIFszXS4KIAogICAgIHZhciB0ZXN0cyA9IG5ldyBUZXN0cygpOwogCi0gICAgd2luZG93
Lm9uZXJyb3IgPSBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgaWYgKCF0ZXN0cy5hbGxvd191bmNh
dWdodF9leGNlcHRpb24pCi0gICAgICAgIHsKKyAgICBhZGRFdmVudExpc3RlbmVyKCJlcnJvciIs
IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgaWYgKHRlc3RzLmZpbGVfaXNfdGVzdCkgeworICAgICAg
ICAgICAgdmFyIHRlc3QgPSB0ZXN0cy50ZXN0c1swXTsKKyAgICAgICAgICAgIGlmICh0ZXN0LnBo
YXNlID49IHRlc3QucGhhc2VzLkhBU19SRVNVTFQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGUubWVzc2FnZTsKKyAg
ICAgICAgICAgIHRlc3Quc2V0X3N0YXR1cyh0ZXN0LkZBSUwsIG1lc3NhZ2UpOworICAgICAgICAg
ICAgdGVzdC5waGFzZSA9IHRlc3QucGhhc2VzLkhBU19SRVNVTFQ7CisgICAgICAgICAgICB0ZXN0
LmRvbmUoKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgfSBlbHNlIGlmICghdGVzdHMu
YWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICB0ZXN0cy5zdGF0dXMuc3Rh
dHVzID0gdGVzdHMuc3RhdHVzLkVSUk9SOwotICAgICAgICAgICAgdGVzdHMuc3RhdHVzLm1lc3Nh
Z2UgPSBtc2c7Ci0gICAgICAgICAgICB0ZXN0cy5jb21wbGV0ZSgpOworICAgICAgICAgICAgdGVz
dHMuc3RhdHVzLm1lc3NhZ2UgPSBlLm1lc3NhZ2U7CiAgICAgICAgIH0KLSAgICB9CisgICAgfSk7
CiAKICAgICBmdW5jdGlvbiB0aW1lb3V0KCkgewotICAgICAgICBpZiAodGVzdHMudGltZW91dF9s
ZW5ndGggPT09IG51bGwpCi0gICAgICAgIHsKKyAgICAgICAgaWYgKHRlc3RzLnRpbWVvdXRfbGVu
Z3RoID09PSBudWxsKSB7CiAgICAgICAgICAgICB0ZXN0cy50aW1lb3V0KCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNjcyLDExICsxMjg2LDExIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogICAgICovCiAKICAgICBmdW5jdGlvbiBPdXRwdXQoKSB7Ci0gICAgICB0aGlz
Lm91dHB1dF9kb2N1bWVudCA9IGRvY3VtZW50OwotICAgICAgdGhpcy5vdXRwdXRfbm9kZSA9IG51
bGw7Ci0gICAgICB0aGlzLmRvbmVfY291bnQgPSAwOwotICAgICAgdGhpcy5lbmFibGVkID0gc2V0
dGluZ3Mub3V0cHV0OwotICAgICAgdGhpcy5waGFzZSA9IHRoaXMuSU5JVElBTDsKKyAgICAgICAg
dGhpcy5vdXRwdXRfZG9jdW1lbnQgPSBkb2N1bWVudDsKKyAgICAgICAgdGhpcy5vdXRwdXRfbm9k
ZSA9IG51bGw7CisgICAgICAgIHRoaXMuZG9uZV9jb3VudCA9IDA7CisgICAgICAgIHRoaXMuZW5h
YmxlZCA9IHNldHRpbmdzLm91dHB1dDsKKyAgICAgICAgdGhpcy5waGFzZSA9IHRoaXMuSU5JVElB
TDsKICAgICB9CiAKICAgICBPdXRwdXQucHJvdG90eXBlLklOSVRJQUwgPSAwOwpAQCAtMTY5NSw4
ICsxMzA5LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5vdXRwdXQgOiBzZXR0
aW5ncy5vdXRwdXQpOwogICAgIH07CiAKLSAgICBPdXRwdXQucHJvdG90eXBlLmluaXQgPSBmdW5j
dGlvbihwcm9wZXJ0aWVzKQotICAgIHsKKyAgICBPdXRwdXQucHJvdG90eXBlLmluaXQgPSBmdW5j
dGlvbihwcm9wZXJ0aWVzKSB7CiAgICAgICAgIGlmICh0aGlzLnBoYXNlID49IHRoaXMuU1RBUlRF
RCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNzA4LDYzICsxMzIxLDU3
IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB0aGlzLnBo
YXNlID0gdGhpcy5TVEFSVEVEOwogICAgIH07CiAKLSAgICBPdXRwdXQucHJvdG90eXBlLnJlc29s
dmVfbG9nID0gZnVuY3Rpb24oKQotICAgIHsKKyAgICBPdXRwdXQucHJvdG90eXBlLnJlc29sdmVf
bG9nID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHZhciBvdXRwdXRfZG9jdW1lbnQ7Ci0gICAgICAg
IGlmICh0eXBlb2YgdGhpcy5vdXRwdXRfZG9jdW1lbnQgPT09ICJmdW5jdGlvbiIpCi0gICAgICAg
IHsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm91dHB1dF9kb2N1bWVudCA9PT0gImZ1bmN0aW9u
IikgewogICAgICAgICAgICAgb3V0cHV0X2RvY3VtZW50ID0gdGhpcy5vdXRwdXRfZG9jdW1lbnQu
YXBwbHkodW5kZWZpbmVkKTsKLSAgICAgICAgfSBlbHNlIAotICAgICAgICB7CisgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBvdXRwdXRfZG9jdW1lbnQgPSB0aGlzLm91dHB1dF9kb2N1bWVu
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoIW91dHB1dF9kb2N1bWVudCkKLSAgICAgICAgewor
ICAgICAgICBpZiAoIW91dHB1dF9kb2N1bWVudCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIHZhciBub2RlID0gb3V0cHV0X2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsb2ciKTsKLSAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMu
b3V0cHV0X2RvY3VtZW50ID0gb3V0cHV0X2RvY3VtZW50OwotICAgICAgICAgICAgdGhpcy5vdXRw
dXRfbm9kZSA9IG5vZGU7CisgICAgICAgIGlmICghbm9kZSkgeworICAgICAgICAgICAgaWYgKCFk
b2N1bWVudC5ib2R5IHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT0gImxvYWRpbmciKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9kZSA9IG91
dHB1dF9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIG5vZGUuaWQg
PSAibG9nIjsKKyAgICAgICAgICAgIG91dHB1dF9kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5v
ZGUpOwogICAgICAgICB9CisgICAgICAgIHRoaXMub3V0cHV0X2RvY3VtZW50ID0gb3V0cHV0X2Rv
Y3VtZW50OworICAgICAgICB0aGlzLm91dHB1dF9ub2RlID0gbm9kZTsKICAgICB9OwogCi0gICAg
T3V0cHV0LnByb3RvdHlwZS5zaG93X3N0YXR1cyA9IGZ1bmN0aW9uKHRlc3QpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5waGFzZSA8IHRoaXMuU1RBUlRFRCkKLSAgICAgICAgeworICAgIE91dHB1
dC5wcm90b3R5cGUuc2hvd19zdGF0dXMgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHRoaXMu
cGhhc2UgPCB0aGlzLlNUQVJURUQpIHsKICAgICAgICAgICAgIHRoaXMuaW5pdCgpOwogICAgICAg
ICB9Ci0gICAgICAgIGlmICghdGhpcy5lbmFibGVkKQotICAgICAgICB7CisgICAgICAgIGlmICgh
dGhpcy5lbmFibGVkKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKHRoaXMucGhhc2UgPCB0aGlzLkhBVkVfUkVTVUxUUykKLSAgICAgICAgeworICAgICAgICBp
ZiAodGhpcy5waGFzZSA8IHRoaXMuSEFWRV9SRVNVTFRTKSB7CiAgICAgICAgICAgICB0aGlzLnJl
c29sdmVfbG9nKCk7CiAgICAgICAgICAgICB0aGlzLnBoYXNlID0gdGhpcy5IQVZFX1JFU1VMVFM7
CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5kb25lX2NvdW50Kys7Ci0gICAgICAgIGlmICh0aGlz
Lm91dHB1dF9ub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodGhpcy5kb25lX2NvdW50
IDwgMTAwCi0gICAgICAgICAgICB8fCAodGhpcy5kb25lX2NvdW50IDwgMTAwMCAmJiB0aGlzLmRv
bmVfY291bnQgJSAxMDAgPT0gMCkKLSAgICAgICAgICAgIHx8IHRoaXMuZG9uZV9jb3VudCAlIDEw
MDAgPT0gMCkgewotICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0X25vZGUudGV4dENvbnRlbnQg
PSAiUnVubmluZywgIgotICAgICAgICAgICAgICAgICAgICArIHRoaXMuZG9uZV9jb3VudCArICIg
Y29tcGxldGUsICIKLSAgICAgICAgICAgICAgICAgICAgKyB0ZXN0cy5udW1fcGVuZGluZyArICIg
cmVtYWluIjsKKyAgICAgICAgaWYgKHRoaXMub3V0cHV0X25vZGUpIHsKKyAgICAgICAgICAgIGlm
ICh0aGlzLmRvbmVfY291bnQgPCAxMDAgfHwKKyAgICAgICAgICAgICAgICAodGhpcy5kb25lX2Nv
dW50IDwgMTAwMCAmJiB0aGlzLmRvbmVfY291bnQgJSAxMDAgPT09IDApIHx8CisgICAgICAgICAg
ICAgICAgdGhpcy5kb25lX2NvdW50ICUgMTAwMCA9PT0gMCkgeworICAgICAgICAgICAgICAgIHRo
aXMub3V0cHV0X25vZGUudGV4dENvbnRlbnQgPSAiUnVubmluZywgIiArCisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuZG9uZV9jb3VudCArICIgY29tcGxldGUsICIgKworICAgICAgICAgICAgICAg
ICAgICB0ZXN0cy5udW1fcGVuZGluZyArICIgcmVtYWluIjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH07CiAKLSAgICBPdXRwdXQucHJvdG90eXBlLnNob3dfcmVzdWx0cyA9IGZ1bmN0
aW9uICh0ZXN0cywgaGFybmVzc19zdGF0dXMpCi0gICAgeworICAgIE91dHB1dC5wcm90b3R5cGUu
c2hvd19yZXN1bHRzID0gZnVuY3Rpb24gKHRlc3RzLCBoYXJuZXNzX3N0YXR1cykgewogICAgICAg
ICBpZiAodGhpcy5waGFzZSA+PSB0aGlzLkNPTVBMRVRFKSB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpCi0gICAgICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLmVuYWJsZWQpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIXRoaXMub3V0cHV0X25vZGUpIHsKQEAgLTE3NzMsMTQgKzEzODAsMTIgQEAg
cG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHRoaXMucGhhc2Ug
PSB0aGlzLkNPTVBMRVRFOwogCiAgICAgICAgIHZhciBsb2cgPSB0aGlzLm91dHB1dF9ub2RlOwot
ICAgICAgICBpZiAoIWxvZykKLSAgICAgICAgeworICAgICAgICBpZiAoIWxvZykgewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHZhciBvdXRwdXRfZG9jdW1lbnQgPSB0
aGlzLm91dHB1dF9kb2N1bWVudDsKIAotICAgICAgICB3aGlsZSAobG9nLmxhc3RDaGlsZCkKLSAg
ICAgICAgeworICAgICAgICB3aGlsZSAobG9nLmxhc3RDaGlsZCkgewogICAgICAgICAgICAgbG9n
LnJlbW92ZUNoaWxkKGxvZy5sYXN0Q2hpbGQpOwogICAgICAgICB9CiAKQEAgLTE4MDYsMTAgKzE0
MTEsMTAgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHN0
YXR1c190ZXh0W1Rlc3QucHJvdG90eXBlLk5PVFJVTl0gPSAiTm90IFJ1biI7CiAKICAgICAgICAg
dmFyIHN0YXR1c19udW1iZXIgPSB7fTsKLSAgICAgICAgZm9yRWFjaCh0ZXN0cywgZnVuY3Rpb24o
dGVzdCkgeworICAgICAgICBmb3JFYWNoKHRlc3RzLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KHRlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IHN0YXR1c190ZXh0W3Rl
c3Quc3RhdHVzXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19udW1iZXIuaGFzT3du
UHJvcGVydHkoc3RhdHVzKSkKLSAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RhdHVzX251bWJlci5oYXNPd25Qcm9wZXJ0eShzdGF0dXMpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXNfbnVtYmVyW3N0YXR1c10gKz0gMTsKICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c19udW1iZXJb
c3RhdHVzXSA9IDE7CkBAIC0xODIzLDM4ICsxNDI4LDI4IEBAIHBvbGljaWVzIGFuZCBjb250cmli
dXRpb24gZm9ybXMgWzNdLgogCiAgICAgICAgIHZhciBzdW1tYXJ5X3RlbXBsYXRlID0gWyJzZWN0
aW9uIiwgeyJpZCI6InN1bW1hcnkifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WyJoMiIsIHt9LCAiU3VtbWFyeSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
dW5jdGlvbih2YXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChoYXJuZXNzX3N0YXR1cy5zdGF0dXMgPT09IGhhcm5lc3Nfc3Rh
dHVzLk9LKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBzdGF0dXNfdGV4
dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLnN0YXR1c107Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHJ2ID0gW1sicCIsIHsiY2xhc3MiOnN0YXR1c19jbGFzcyhz
dGF0dXMpfV1dOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGhhcm5lc3Nfc3RhdHVzLnN0YXR1cyA9PT0gaGFybmVzc19zdGF0dXMuRVJST1IpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBydlswXS5wdXNoKCJIYXJuZXNzIGVuY291bnRlcmVkIGFu
IGVycm9yOiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
di5wdXNoKFsicHJlIiwge30sIGhhcm5lc3Nfc3RhdHVzLm1lc3NhZ2VdKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaGFybmVzc19zdGF0dXMuc3RhdHVzID09PSBoYXJuZXNz
X3N0YXR1cy5USU1FT1VUKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZbMF0ucHVz
aCgiSGFybmVzcyB0aW1lZCBvdXQuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2WzBdLnB1c2goIkhhcm5lc3MgZ290IGFu
IHVuZXhwZWN0ZWQgc3RhdHVzLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBydjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBz
dGF0dXNfdGV4dF9oYXJuZXNzW2hhcm5lc3Nfc3RhdHVzLnN0YXR1c107CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnYgPSBbWyJzZWN0aW9uIiwge30sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsicCIsIHt9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhhcm5lc3Mgc3RhdHVz
OiAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJz
cGFuIiwgeyJjbGFzcyI6c3RhdHVzX2NsYXNzKHN0YXR1cyl9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF1dOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaGFybmVzc19zdGF0dXMuc3RhdHVzID09PSBoYXJuZXNzX3N0YXR1cy5FUlJPUikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2WzBdLnB1c2goWyJwcmUi
LCB7fSwgaGFybmVzc19zdGF0dXMubWVzc2FnZV0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJ2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbInAiLCB7fSwgIkZvdW5kICR7bnVtX3Rlc3RzfSB0ZXN0cyJdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbih2YXJzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIHJ2ID0gW1siZGl2Iiwge31dXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBpPTA7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3aGlsZSAoc3RhdHVzX3RleHQuaGFzT3duUHJvcGVydHkoaSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzX251bWJlci5oYXNPd25Qcm9wZXJ0
eShzdGF0dXNfdGV4dFtpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXR1cyA9IHN0YXR1c190ZXh0W2ldOwpAQCAtMTg2Niw3ICsxNDYxLDgg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ2
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogCiAg
ICAgICAgIGxvZy5hcHBlbmRDaGlsZChyZW5kZXIoc3VtbWFyeV90ZW1wbGF0ZSwge251bV90ZXN0
czp0ZXN0cy5sZW5ndGh9LCBvdXRwdXRfZG9jdW1lbnQpKTsKIApAQCAtMTg3Niw4ICsxNDcyLDcg
QEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgICAgICAgICAg
ICAgIG9uX2V2ZW50KGVsZW1lbnQsICJjbGljayIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXRfZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdHMiKSA9PT0gbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXRfZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CkBAIC0xOTMwLDIyICsxNTI1LDIyIEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24g
Zm9ybXMgWzNdLgogCiAgICAgICAgIGxvZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoeGh0bWxfbnMsICJzZWN0aW9uIikpOwogICAgICAgICB2YXIgYXNzZXJ0aW9ucyA9IGhh
c19hc3NlcnRpb25zKCk7Ci0gICAgICAgIHZhciBodG1sID0gIjxoMj5EZXRhaWxzPC9oMj48dGFi
bGUgaWQ9J3Jlc3VsdHMnICIgKyAoYXNzZXJ0aW9ucyA/ICJjbGFzcz0nYXNzZXJ0aW9ucyciIDog
IiIgKSArICI+IgotICAgICAgICAgICAgKyAiPHRoZWFkPjx0cj48dGg+UmVzdWx0PC90aD48dGg+
VGVzdCBOYW1lPC90aD4iCi0gICAgICAgICAgICArIChhc3NlcnRpb25zID8gIjx0aD5Bc3NlcnRp
b248L3RoPiIgOiAiIikKLSAgICAgICAgICAgICsgIjx0aD5NZXNzYWdlPC90aD48L3RyPjwvdGhl
YWQ+IgotICAgICAgICAgICAgKyAiPHRib2R5PiI7CisgICAgICAgIHZhciBodG1sID0gIjxoMj5E
ZXRhaWxzPC9oMj48dGFibGUgaWQ9J3Jlc3VsdHMnICIgKyAoYXNzZXJ0aW9ucyA/ICJjbGFzcz0n
YXNzZXJ0aW9ucyciIDogIiIgKSArICI+IiArCisgICAgICAgICAgICAiPHRoZWFkPjx0cj48dGg+
UmVzdWx0PC90aD48dGg+VGVzdCBOYW1lPC90aD4iICsKKyAgICAgICAgICAgIChhc3NlcnRpb25z
ID8gIjx0aD5Bc3NlcnRpb248L3RoPiIgOiAiIikgKworICAgICAgICAgICAgIjx0aD5NZXNzYWdl
PC90aD48L3RyPjwvdGhlYWQ+IiArCisgICAgICAgICAgICAiPHRib2R5PiI7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGh0bWwg
Kz0gJzx0ciBjbGFzcz0iJwotICAgICAgICAgICAgICAgICsgZXNjYXBlX2h0bWwoc3RhdHVzX2Ns
YXNzKHN0YXR1c190ZXh0W3Rlc3RzW2ldLnN0YXR1c10pKQotICAgICAgICAgICAgICAgICsgJyI+
PHRkPicKLSAgICAgICAgICAgICAgICArIGVzY2FwZV9odG1sKHN0YXR1c190ZXh0W3Rlc3RzW2ld
LnN0YXR1c10pCi0gICAgICAgICAgICAgICAgKyAiPC90ZD48dGQ+IgotICAgICAgICAgICAgICAg
ICsgZXNjYXBlX2h0bWwodGVzdHNbaV0ubmFtZSkKLSAgICAgICAgICAgICAgICArICI8L3RkPjx0
ZD4iCi0gICAgICAgICAgICAgICAgKyAoYXNzZXJ0aW9ucyA/IGVzY2FwZV9odG1sKGdldF9hc3Nl
cnRpb24odGVzdHNbaV0pKSArICI8L3RkPjx0ZD4iIDogIiIpCi0gICAgICAgICAgICAgICAgKyBl
c2NhcGVfaHRtbCh0ZXN0c1tpXS5tZXNzYWdlID8gdGVzdHNbaV0ubWVzc2FnZSA6ICIgIikKLSAg
ICAgICAgICAgICAgICArICI8L3RkPjwvdHI+IjsKKyAgICAgICAgICAgIGh0bWwgKz0gJzx0ciBj
bGFzcz0iJyArCisgICAgICAgICAgICAgICAgZXNjYXBlX2h0bWwoc3RhdHVzX2NsYXNzKHN0YXR1
c190ZXh0W3Rlc3RzW2ldLnN0YXR1c10pKSArCisgICAgICAgICAgICAgICAgJyI+PHRkPicgKwor
ICAgICAgICAgICAgICAgIGVzY2FwZV9odG1sKHN0YXR1c190ZXh0W3Rlc3RzW2ldLnN0YXR1c10p
ICsKKyAgICAgICAgICAgICAgICAiPC90ZD48dGQ+IiArCisgICAgICAgICAgICAgICAgZXNjYXBl
X2h0bWwodGVzdHNbaV0ubmFtZSkgKworICAgICAgICAgICAgICAgICI8L3RkPjx0ZD4iICsKKyAg
ICAgICAgICAgICAgICAoYXNzZXJ0aW9ucyA/IGVzY2FwZV9odG1sKGdldF9hc3NlcnRpb24odGVz
dHNbaV0pKSArICI8L3RkPjx0ZD4iIDogIiIpICsKKyAgICAgICAgICAgICAgICBlc2NhcGVfaHRt
bCh0ZXN0c1tpXS5tZXNzYWdlID8gdGVzdHNbaV0ubWVzc2FnZSA6ICIgIikgKworICAgICAgICAg
ICAgICAgICI8L3RkPjwvdHI+IjsKICAgICAgICAgfQogICAgICAgICBodG1sICs9ICI8L3Rib2R5
PjwvdGFibGU+IjsKICAgICAgICAgdHJ5IHsKQEAgLTE5NjAsNyArMTU1NSw3IEBAIHBvbGljaWVz
IGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogCiAgICAgdmFyIG91dHB1dCA9IG5ldyBPdXRw
dXQoKTsKICAgICBhZGRfc3RhcnRfY2FsbGJhY2soZnVuY3Rpb24gKHByb3BlcnRpZXMpIHtvdXRw
dXQuaW5pdChwcm9wZXJ0aWVzKTt9KTsKLSAgICBhZGRfcmVzdWx0X2NhbGxiYWNrKGZ1bmN0aW9u
ICh0ZXN0KSB7b3V0cHV0LnNob3dfc3RhdHVzKHRlc3RzKTt9KTsKKyAgICBhZGRfcmVzdWx0X2Nh
bGxiYWNrKGZ1bmN0aW9uICgpIHtvdXRwdXQuc2hvd19zdGF0dXMoKTt9KTsKICAgICBhZGRfY29t
cGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7b3V0cHV0
LnNob3dfcmVzdWx0cyh0ZXN0cywgaGFybmVzc19zdGF0dXMpO30pOwogCiAgICAgLyoKQEAgLTIw
MDUsMTU0ICsxNjAwLDEyNiBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4K
ICAgICB7CiAgICAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICJmdW5jdGlvbiIpIHsKICAg
ICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IHRlbXBsYXRlKHN1YnN0aXR1dGlvbnMpOwotICAg
ICAgICAgICAgaWYgKHJlcGxhY2VtZW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHZhciBydiA9IHN1YnN0aXR1dGUocmVwbGFjZW1lbnQsIHN1YnN0aXR1dGlvbnMpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBydjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghcmVwbGFjZW1lbnQpIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHN1
YnN0aXR1dGUocmVwbGFjZW1lbnQsIHN1YnN0aXR1dGlvbnMpOwogICAgICAgICB9Ci0gICAgICAg
IGVsc2UgaWYgKGlzX3NpbmdsZV9ub2RlKHRlbXBsYXRlKSkKLSAgICAgICAgeworCisgICAgICAg
IGlmIChpc19zaW5nbGVfbm9kZSh0ZW1wbGF0ZSkpIHsKICAgICAgICAgICAgIHJldHVybiBzdWJz
dGl0dXRlX3NpbmdsZSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucyk7CiAgICAgICAgIH0KLSAgICAg
ICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmlsdGVyKG1hcCh0ZW1wbGF0
ZSwgZnVuY3Rpb24oeCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBzdWJzdGl0dXRlKHgsIHN1YnN0aXR1dGlvbnMpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSksIGZ1bmN0aW9uKHgpIHtyZXR1cm4geCAhPT0gbnVsbDt9KTsKLSAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBmaWx0ZXIobWFwKHRlbXBsYXRlLCBmdW5jdGlvbih4KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RpdHV0ZSh4LCBzdWJzdGl0dXRp
b25zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIGZ1bmN0aW9uKHgpIHtyZXR1cm4g
eCAhPT0gbnVsbDt9KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdWJzdGl0dXRlX3NpbmdsZSh0
ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucykKICAgICB7Ci0gICAgICAgIHZhciBzdWJzdGl0dXRpb25f
cmUgPSAvXCR7KFteIH1dKil9L2c7CisgICAgICAgIHZhciBzdWJzdGl0dXRpb25fcmUgPSAvXCRc
eyhbXiB9XSopXH0vZzsKIAogICAgICAgICBmdW5jdGlvbiBkb19zdWJzdGl0dXRpb24oaW5wdXQp
IHsKICAgICAgICAgICAgIHZhciBjb21wb25lbnRzID0gaW5wdXQuc3BsaXQoc3Vic3RpdHV0aW9u
X3JlKTsKICAgICAgICAgICAgIHZhciBydiA9IFtdOwotICAgICAgICAgICAgZm9yICh2YXIgaT0w
OyBpPGNvbXBvbmVudHMubGVuZ3RoOyBpKz0yKQotICAgICAgICAgICAgeworICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aDsgaSArPSAyKSB7CiAgICAgICAg
ICAgICAgICAgcnYucHVzaChjb21wb25lbnRzW2ldKTsKLSAgICAgICAgICAgICAgICBpZiAoY29t
cG9uZW50c1tpKzFdKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcnYu
cHVzaChTdHJpbmcoc3Vic3RpdHV0aW9uc1tjb21wb25lbnRzW2krMV1dKSk7CisgICAgICAgICAg
ICAgICAgaWYgKGNvbXBvbmVudHNbaSArIDFdKSB7CisgICAgICAgICAgICAgICAgICAgIHJ2LnB1
c2goU3RyaW5nKHN1YnN0aXR1dGlvbnNbY29tcG9uZW50c1tpICsgMV1dKSk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHJ2OwogICAgICAgICB9
CiAKLSAgICAgICAgdmFyIHJ2ID0gW107Ci0gICAgICAgIHJ2LnB1c2goZG9fc3Vic3RpdHV0aW9u
KFN0cmluZyh0ZW1wbGF0ZVswXSkpLmpvaW4oIiIpKTsKLQotICAgICAgICBpZiAodGVtcGxhdGVb
MF0gPT09ICJ7dGV4dH0iKSB7Ci0gICAgICAgICAgICBzdWJzdGl0dXRlX2NoaWxkcmVuKHRlbXBs
YXRlLnNsaWNlKDEpLCBydik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdWJzdGl0
dXRlX2F0dHJzKHRlbXBsYXRlWzFdLCBydik7Ci0gICAgICAgICAgICBzdWJzdGl0dXRlX2NoaWxk
cmVuKHRlbXBsYXRlLnNsaWNlKDIpLCBydik7Ci0gICAgICAgIH0KLQogICAgICAgICBmdW5jdGlv
biBzdWJzdGl0dXRlX2F0dHJzKGF0dHJzLCBydikKICAgICAgICAgewogICAgICAgICAgICAgcnZb
MV0gPSB7fTsKLSAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGVtcGxhdGVbMV0pCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGF0dHJzLmhhc093blByb3BlcnR5KG5hbWUp
KQotICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGVtcGxh
dGVbMV0pIHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cnMuaGFzT3duUHJvcGVydHkobmFtZSkp
IHsKICAgICAgICAgICAgICAgICAgICAgdmFyIG5ld19uYW1lID0gZG9fc3Vic3RpdHV0aW9uKG5h
bWUpLmpvaW4oIiIpOwogICAgICAgICAgICAgICAgICAgICB2YXIgbmV3X3ZhbHVlID0gZG9fc3Vi
c3RpdHV0aW9uKGF0dHJzW25hbWVdKS5qb2luKCIiKTsKICAgICAgICAgICAgICAgICAgICAgcnZb
MV1bbmV3X25hbWVdID0gbmV3X3ZhbHVlOwotICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gc3Vi
c3RpdHV0ZV9jaGlsZHJlbihjaGlsZHJlbiwgcnYpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGk9MDsgaTxjaGlsZHJlbi5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKICAgICAg
ICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0gaW5zdGFuY2VvZiBPYmplY3QpIHsKICAgICAgICAg
ICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gc3Vic3RpdHV0ZShjaGlsZHJlbltpXSwgc3Vi
c3RpdHV0aW9ucyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudCAhPT0gbnVs
bCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlz
X3NpbmdsZV9ub2RlKHJlcGxhY2VtZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50ICE9PSBudWxsKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNfc2luZ2xlX25vZGUocmVwbGFjZW1lbnQpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnYucHVzaChyZXBsYWNlbWVudCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGV4dGVuZChydiwgcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kKHJ2LCBkb19zdWJzdGl0dXRpb24o
U3RyaW5nKGNoaWxkcmVuW2ldKSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybiBydjsKICAgICAgICAgfQogCisgICAgICAgIHZhciBydiA9IFtd
OworICAgICAgICBydi5wdXNoKGRvX3N1YnN0aXR1dGlvbihTdHJpbmcodGVtcGxhdGVbMF0pKS5q
b2luKCIiKSk7CisKKyAgICAgICAgaWYgKHRlbXBsYXRlWzBdID09PSAie3RleHR9IikgeworICAg
ICAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0ZW1wbGF0ZS5zbGljZSgxKSwgcnYpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3Vic3RpdHV0ZV9hdHRycyh0ZW1wbGF0ZVsxXSwg
cnYpOworICAgICAgICAgICAgc3Vic3RpdHV0ZV9jaGlsZHJlbih0ZW1wbGF0ZS5zbGljZSgyKSwg
cnYpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHJ2OwogICAgIH0KIAotIGZ1bmN0aW9u
IG1ha2VfZG9tX3NpbmdsZSh0ZW1wbGF0ZSwgZG9jKQotIHsKLSAgICAgdmFyIG91dHB1dF9kb2N1
bWVudCA9IGRvYyB8fCBkb2N1bWVudDsKLSAgICAgaWYgKHRlbXBsYXRlWzBdID09PSAie3RleHR9
IikKLSAgICAgewotICAgICAgICAgdmFyIGVsZW1lbnQgPSBvdXRwdXRfZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIiIpOwotICAgICAgICAgZm9yICh2YXIgaT0xOyBpPHRlbXBsYXRlLmxlbmd0aDsg
aSsrKQotICAgICAgICAgewotICAgICAgICAgICAgIGVsZW1lbnQuZGF0YSArPSB0ZW1wbGF0ZVtp
XTsKLSAgICAgICAgIH0KLSAgICAgfQotICAgICBlbHNlCi0gICAgIHsKLSAgICAgICAgIHZhciBl
bGVtZW50ID0gb3V0cHV0X2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbF9ucywgdGVtcGxh
dGVbMF0pOwotICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0ZW1wbGF0ZVsxXSkgewotICAgICAg
ICAgICAgIGlmICh0ZW1wbGF0ZVsxXS5oYXNPd25Qcm9wZXJ0eShuYW1lKSkKLSAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHRlbXBsYXRl
WzFdW25hbWVdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBmb3IgKHZh
ciBpPTI7IGk8dGVtcGxhdGUubGVuZ3RoOyBpKyspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAg
aWYgKHRlbXBsYXRlW2ldIGluc3RhbmNlb2YgT2JqZWN0KQotICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgdmFyIHN1Yl9lbGVtZW50ID0gbWFrZV9kb20odGVtcGxhdGVbaV0pOwotICAg
ICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHN1Yl9lbGVtZW50KTsKLSAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgdmFyIHRleHRfbm9kZSA9IG91dHB1dF9kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZW1wbGF0
ZVtpXSk7Ci0gICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dF9ub2RlKTsK
LSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0KKyAgICBmdW5jdGlvbiBtYWtlX2Rv
bV9zaW5nbGUodGVtcGxhdGUsIGRvYykKKyAgICB7CisgICAgICAgIHZhciBvdXRwdXRfZG9jdW1l
bnQgPSBkb2MgfHwgZG9jdW1lbnQ7CisgICAgICAgIHZhciBlbGVtZW50OworICAgICAgICBpZiAo
dGVtcGxhdGVbMF0gPT09ICJ7dGV4dH0iKSB7CisgICAgICAgICAgICBlbGVtZW50ID0gb3V0cHV0
X2RvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAx
OyBpIDwgdGVtcGxhdGUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmRh
dGEgKz0gdGVtcGxhdGVbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBlbGVtZW50ID0gb3V0cHV0X2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh4aHRtbF9u
cywgdGVtcGxhdGVbMF0pOworICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0ZW1wbGF0ZVsx
XSkgeworICAgICAgICAgICAgICAgIGlmICh0ZW1wbGF0ZVsxXS5oYXNPd25Qcm9wZXJ0eShuYW1l
KSkgeworICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB0ZW1w
bGF0ZVsxXVtuYW1lXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCB0ZW1wbGF0ZS5sZW5ndGg7IGkrKykgeworICAgICAg
ICAgICAgICAgIGlmICh0ZW1wbGF0ZVtpXSBpbnN0YW5jZW9mIE9iamVjdCkgeworICAgICAgICAg
ICAgICAgICAgICB2YXIgc3ViX2VsZW1lbnQgPSBtYWtlX2RvbSh0ZW1wbGF0ZVtpXSk7CisgICAg
ICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoc3ViX2VsZW1lbnQpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0X25vZGUgPSBv
dXRwdXRfZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVtcGxhdGVbaV0pOworICAgICAgICAgICAg
ICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHRleHRfbm9kZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CiAKLSAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gfQor
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICB9CiAKIAogCi0gZnVuY3Rpb24gbWFrZV9kb20o
dGVtcGxhdGUsIHN1YnN0aXR1dGlvbnMsIG91dHB1dF9kb2N1bWVudCkKKyAgICBmdW5jdGlvbiBt
YWtlX2RvbSh0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucywgb3V0cHV0X2RvY3VtZW50KQogICAgIHsK
LSAgICAgICAgaWYgKGlzX3NpbmdsZV9ub2RlKHRlbXBsYXRlKSkKLSAgICAgICAgeworICAgICAg
ICBpZiAoaXNfc2luZ2xlX25vZGUodGVtcGxhdGUpKSB7CiAgICAgICAgICAgICByZXR1cm4gbWFr
ZV9kb21fc2luZ2xlKHRlbXBsYXRlLCBvdXRwdXRfZG9jdW1lbnQpOwogICAgICAgICB9Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1hcCh0ZW1wbGF0ZSwgZnVu
Y3Rpb24oeCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfZG9tX3Np
bmdsZSh4LCBvdXRwdXRfZG9jdW1lbnQpOwotICAgICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBtYXAodGVtcGxhdGUsIGZ1bmN0aW9uKHgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfZG9tX3NpbmdsZSh4LCBvdXRwdXRfZG9j
dW1lbnQpOworICAgICAgICAgICAgICAgICAgIH0pOwogICAgIH0KIAotIGZ1bmN0aW9uIHJlbmRl
cih0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucywgb3V0cHV0X2RvY3VtZW50KQorICAgIGZ1bmN0aW9u
IHJlbmRlcih0ZW1wbGF0ZSwgc3Vic3RpdHV0aW9ucywgb3V0cHV0X2RvY3VtZW50KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1ha2VfZG9tKHN1YnN0aXR1dGUodGVtcGxhdGUsIHN1YnN0aXR1dGlv
bnMpLCBvdXRwdXRfZG9jdW1lbnQpOwogICAgIH0KQEAgLTIxNjIsMTAgKzE3MjksMTMgQEAgcG9s
aWNpZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICovCiAgICAgZnVuY3Rpb24g
YXNzZXJ0KGV4cGVjdGVkX3RydWUsIGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLCBlcnJvciwg
c3Vic3RpdHV0aW9ucykKICAgICB7Ci0gICAgICAgIGlmIChleHBlY3RlZF90cnVlICE9PSB0cnVl
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IobWFrZV9t
ZXNzYWdlKGZ1bmN0aW9uX25hbWUsIGRlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgc3Vic3RpdHV0aW9ucykpOworICAg
ICAgICBpZiAodGVzdHMudGVzdHMubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICB0ZXN0cy5z
ZXRfZmlsZV9pc190ZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4cGVjdGVkX3RydWUg
IT09IHRydWUpIHsKKyAgICAgICAgICAgIHZhciBtc2cgPSBtYWtlX21lc3NhZ2UoZnVuY3Rpb25f
bmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yLCBzdWJzdGl0dXRpb25zKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJv
cihtc2cpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTc0LDYgKzE3NDQsMTAgQEAgcG9saWNp
ZXMgYW5kIGNvbnRyaWJ1dGlvbiBmb3JtcyBbM10uCiAgICAgICAgIHRoaXMubWVzc2FnZSA9IG1l
c3NhZ2U7CiAgICAgfQogCisgICAgQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nID0g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7CisgICAgfTsKKwogICAg
IGZ1bmN0aW9uIG1ha2VfbWVzc2FnZShmdW5jdGlvbl9uYW1lLCBkZXNjcmlwdGlvbiwgZXJyb3Is
IHN1YnN0aXR1dGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBwIGluIHN1YnN0aXR1dGlv
bnMpIHsKQEAgLTIxOTAsMTAgKzE3NjQsOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KIAogICAgIGZ1bmN0aW9uIGZpbHRlcihhcnJheSwgY2FsbGFibGUsIHRoaXNPYmop
IHsKICAgICAgICAgdmFyIHJ2ID0gW107Ci0gICAgICAgIGZvciAodmFyIGk9MDsgaTxhcnJheS5s
ZW5ndGg7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGFycmF5Lmhhc093blByb3Bl
cnR5KGkpKQotICAgICAgICAgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkp
IHsKICAgICAgICAgICAgICAgICB2YXIgcGFzcyA9IGNhbGxhYmxlLmNhbGwodGhpc09iaiwgYXJy
YXlbaV0sIGksIGFycmF5KTsKICAgICAgICAgICAgICAgICBpZiAocGFzcykgewogICAgICAgICAg
ICAgICAgICAgICBydi5wdXNoKGFycmF5W2ldKTsKQEAgLTIyMDcsMTAgKzE3NzksOCBAQCBwb2xp
Y2llcyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICB7CiAgICAgICAgIHZhciBydiA9
IFtdOwogICAgICAgICBydi5sZW5ndGggPSBhcnJheS5sZW5ndGg7Ci0gICAgICAgIGZvciAodmFy
IGk9MDsgaTxhcnJheS5sZW5ndGg7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGFy
cmF5Lmhhc093blByb3BlcnR5KGkpKQotICAgICAgICAgICAgeworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYXJyYXkuaGFz
T3duUHJvcGVydHkoaSkpIHsKICAgICAgICAgICAgICAgICBydltpXSA9IGNhbGxhYmxlLmNhbGwo
dGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMjIyNCwxMCArMTc5NCw4IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNd
LgogCiAgICAgZnVuY3Rpb24gZm9yRWFjaCAoYXJyYXksIGNhbGxiYWNrLCB0aGlzT2JqKQogICAg
IHsKLSAgICAgICAgZm9yICh2YXIgaT0wOyBpPGFycmF5Lmxlbmd0aDsgaSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoYXJyYXkuaGFzT3duUHJvcGVydHkoaSkpCi0gICAgICAgICAgICB7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgICAgIGlmIChhcnJheS5oYXNPd25Qcm9wZXJ0eShpKSkgewogICAgICAgICAgICAgICAgIGNh
bGxiYWNrLmNhbGwodGhpc09iaiwgYXJyYXlbaV0sIGksIGFycmF5KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMjIzNyw4ICsxODA1LDcgQEAgcG9saWNpZXMgYW5kIGNvbnRyaWJ1dGlv
biBmb3JtcyBbM10uCiAgICAgewogICAgICAgICB2YXIgcnYgPSB7fTsKICAgICAgICAgdmFyIHA7
Ci0gICAgICAgIGZvciAocCBpbiBhKQotICAgICAgICB7CisgICAgICAgIGZvciAocCBpbiBhKSB7
CiAgICAgICAgICAgICBydltwXSA9IGFbcF07CiAgICAgICAgIH0KICAgICAgICAgZm9yIChwIGlu
IGIpIHsKQEAgLTIyNTEsMTAgKzE4MTgsOCBAQCBwb2xpY2llcyBhbmQgY29udHJpYnV0aW9uIGZv
cm1zIFszXS4KICAgICB7CiAgICAgICAgIHZhciBjb21wb25lbnRzID0gbmFtZS5zcGxpdCgiLiIp
OwogICAgICAgICB2YXIgdGFyZ2V0ID0gd2luZG93OwotICAgICAgICBmb3IgKHZhciBpPTA7IGk8
Y29tcG9uZW50cy5sZW5ndGggLSAxOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
KGNvbXBvbmVudHNbaV0gaW4gdGFyZ2V0KSkKLSAgICAgICAgICAgIHsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjb21wb25lbnRzLmxlbmd0aCAtIDE7IGkrKykgeworICAgICAgICAgICAg
aWYgKCEoY29tcG9uZW50c1tpXSBpbiB0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICAgdGFyZ2V0
W2NvbXBvbmVudHNbaV1dID0ge307CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0YXJnZXQg
PSB0YXJnZXRbY29tcG9uZW50c1tpXV07CkBAIC0yMjc0LDggKzE4MzksNyBAQCBwb2xpY2llcyBh
bmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgIHZhciBpID0gMDsKICAgICAg
ICAgICAgIHZhciBzbzsKICAgICAgICAgICAgIHZhciBvcmlnaW5zID0gbG9jYXRpb24uYW5jZXN0
b3JPcmlnaW5zOwotICAgICAgICAgICAgd2hpbGUgKHcgIT0gdy5wYXJlbnQpCi0gICAgICAgICAg
ICB7CisgICAgICAgICAgICB3aGlsZSAodyAhPSB3LnBhcmVudCkgewogICAgICAgICAgICAgICAg
IHcgPSB3LnBhcmVudDsKICAgICAgICAgICAgICAgICAvLyBJbiBXZWJLaXQsIGNhbGxzIHRvIHBh
cmVudCB3aW5kb3dzJyBwcm9wZXJ0aWVzIHRoYXQgYXJlbid0IG9uIHRoZSBzYW1lCiAgICAgICAg
ICAgICAgICAgLy8gb3JpZ2luIGNhdXNlIGFuIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVk
IGluIHRoZSBlcnJvciBjb25zb2xlIGJ1dApAQCAtMjI4OCwxOSArMTg1MiwxNiBAQCBwb2xpY2ll
cyBhbmQgY29udHJpYnV0aW9uIGZvcm1zIFszXS4KICAgICAgICAgICAgICAgICAvLyBgbG9jYXRp
b24uYW5jZXN0b3JPcmlnaW5zYCBwcm9wZXJ0eSB3aGljaCByZXR1cm5zIGFuIG9yZGVyZWQgbGlz
dCBvZgogICAgICAgICAgICAgICAgIC8vIHRoZSBvcmlnaW5zIG9mIGVuY2xvc2luZyB3aW5kb3dz
LiBTZWU6CiAgICAgICAgICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTEzOTQ1LgotICAgICAgICAgICAgICAgIGlmKG9yaWdpbnMpIHsKKyAgICAgICAgICAgICAg
ICBpZiAob3JpZ2lucykgewogICAgICAgICAgICAgICAgICAgICBzbyA9IChsb2NhdGlvbi5vcmln
aW4gPT0gb3JpZ2luc1tpXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgc28gPSBpc19zYW1lX29yaWdpbih3KTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgY2FjaGUucHVzaChbdywgc29dKTsKICAgICAgICAgICAgICAgICBpKys7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3ID0gd2luZG93Lm9wZW5lcjsKLSAgICAgICAg
ICAgIGlmKHcpCi0gICAgICAgICAgICB7CisgICAgICAgICAgICBpZiAodykgewogICAgICAgICAg
ICAgICAgIC8vIHdpbmRvdy5vcGVuZXIgaXNuJ3QgaW5jbHVkZWQgaW4gdGhlIGBsb2NhdGlvbi5h
bmNlc3Rvck9yaWdpbnNgIHByb3AuCiAgICAgICAgICAgICAgICAgLy8gV2UnbGwganVzdCBoYXZl
IHRvIGRlYWwgd2l0aCBhIHNpbXBsZSBjaGVjayBhbmQgYW4gZXJyb3IgbXNnIG9uIFdlYktpdAog
ICAgICAgICAgICAgICAgIC8vIGJyb3dzZXJzIGluIHRoaXMgY2FzZS4KQEAgLTIzMjAsNyArMTg4
MSw3IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICB0cnkg
ewogICAgICAgICAgICAgJ3JhbmRvbV9wcm9wJyBpbiB3OwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzM3LDI3ICsxODk4LDI0
IEBAIHBvbGljaWVzIGFuZCBjb250cmlidXRpb24gZm9ybXMgWzNdLgogICAgICAgICAvLyBub3Qg
ZnJvbSB0aGUgc2FtZSBvcmlnaW4gQU5EIHBvc3QgbWVzc2FnZSBpcyBub3Qgc3VwcG9ydGVkIGlu
IHRoYXQKICAgICAgICAgLy8gYnJvd3Nlci4gU28ganVzdCBkb2luZyBhbiBleGlzdGVuY2UgdGVz
dCBoZXJlIHdvbid0IGRvLCB5b3UgYWxzbyBuZWVkCiAgICAgICAgIC8vIHRvIHdyYXAgaXQgaW4g
YSB0cnkuLmNhY3RoIGJsb2NrLgotICAgICAgICB0cnkKLSAgICAgICAgeworICAgICAgICB0cnkg
ewogICAgICAgICAgICAgdHlwZSA9IHR5cGVvZiB3LnBvc3RNZXNzYWdlOwotICAgICAgICAgICAg
aWYgKHR5cGUgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB7CisgICAgICAgICAgICBpZiAo
dHlwZSA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgICAgIHN1cHBvcnRzID0gdHJ1ZTsK
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gSUU4IHN1cHBvcnRzIHBvc3RNZXNzYWdl
LCBidXQgaW1wbGVtZW50cyBpdCBhcyBhIGhvc3Qgb2JqZWN0IHdoaWNoCiAgICAgICAgICAgICAv
LyByZXR1cm5zICJvYmplY3QiIGFzIGl0cyBgdHlwZW9mYC4KLSAgICAgICAgICAgIGVsc2UgaWYg
KHR5cGUgPT09ICJvYmplY3QiKQotICAgICAgICAgICAgeworICAgICAgICAgICAgZWxzZSBpZiAo
dHlwZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgICAgICAgICBzdXBwb3J0cyA9IHRydWU7CiAg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgcG9z
dE1lc3NhZ2UgaXNuJ3Qgc3VwcG9ydGVkIEFORCBhY2Nlc3NpbmcgYQogICAgICAgICAgICAgLy8g
d2luZG93IHByb3BlcnR5IGFjcm9zcyBvcmlnaW5zIGRvZXMgTk9UIHRocm93IChlLmcuIG9sZCBT
YWZhcmkgYnJvd3NlcikuCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7CisgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBzdXBwb3J0cyA9IGZhbHNlOwogICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKGUpIHsKKyAgICAgICAgfSBjYXRjaCAoZSkg
ewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSBwb3N0TWVzc2FnZSBpc24n
dCBzdXBwb3J0ZWQgQU5EIGFjY2Vzc2luZyBhCiAgICAgICAgICAgICAvLyB3aW5kb3cgcHJvcGVy
dHkgYWNyb3NzIG9yaWdpbnMgdGhyb3dzIChlLmcuIG9sZCBGaXJlZm94IGJyb3dzZXIpLgogICAg
ICAgICAgICAgc3VwcG9ydHMgPSBmYWxzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>