<?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>64998</bug_id>
          
          <creation_ts>2011-07-21 17:04:26 -0700</creation_ts>
          <short_desc>Refactor Trac.js for use in garden-o-matic</short_desc>
          <delta_ts>2011-07-21 17:29:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>aroben</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>440732</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-21 17:04:26 -0700</bug_when>
    <thetext>Refactor Trac.js for use in garden-o-matic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440735</commentid>
    <comment_count>1</comment_count>
      <attachid>101671</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-21 17:05:56 -0700</bug_when>
    <thetext>Created attachment 101671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440738</commentid>
    <comment_count>2</comment_count>
      <attachid>101673</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-21 17:10:17 -0700</bug_when>
    <thetext>Created attachment 101673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440743</commentid>
    <comment_count>3</comment_count>
      <attachid>101671</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-21 17:21:59 -0700</bug_when>
    <thetext>Comment on attachment 101671
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:83
&gt; +        expectedDescription: &apos;css1/basic/class_as_selector.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\nhttp://trac.webkit.org/log/trunkrev=10&amp;stop_rev=9\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n&apos;,

This looks like a ? is missing.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:93
&gt; +        expectedDescription: &apos;css1/basic/class_as_selector.html and fast/css/ex-after-font-variant.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\nhttp://trac.webkit.org/log/trunkrev=10&amp;stop_rev=9\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n&apos;,

Same here.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:109
&gt; +        expectedDescription: &apos;The following tests started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive):\n\n    css1/basic/class_as_selector1.html\n    css1/basic/class_as_selector2.html\n    css1/basic/class_as_selector3.html\n    css1/basic/class_as_selector4.html\n    css1/basic/class_as_selector5.html\n    css1/basic/class_as_selector6.html\n    css1/basic/class_as_selector7.html\n    css1/basic/class_as_selector8.html\n\nhttp://trac.webkit.org/log/trunkrev=10&amp;stop_rev=9\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n&apos;,

And here.

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:167
&gt; +        this._callbackCache[key].push(callback);

s/this/self/

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:181
&gt; +        $.each(callbackList, function(index, cachedCallback) {
&gt; +            cachedCallback(data);
&gt; +        });

callbackList.forEach could work too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440746</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-21 17:29:48 -0700</bug_when>
    <thetext>Committed r91538: &lt;http://trac.webkit.org/changeset/91538&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101671</attachid>
            <date>2011-07-21 17:05:56 -0700</date>
            <delta_ts>2011-07-21 17:21:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64998-20110721170555.patch</filename>
            <type>text/plain</type>
            <size>26569</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE1MjUKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9G
YWlsaW5nVGVzdHNCdWdGb3JtLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0ZhaWxpbmdUZXN0c0J1Z0Zv
cm0uanMKaW5kZXggOWUzMDUzODU3N2Y5ZWZhYzBlZGM3YmIyZTM5NDNiOWM5YTRlNzJhOS4uNzdk
ZTBlZDkwYmZjOWE4NjY2NDdhMWNiOWEyOTkzNDAzN2VjNGE0NiAxMDA2NDQKLS0tIGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0Zh
aWxpbmdUZXN0c0J1Z0Zvcm0uanMKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZnVuY3Rpb24gRmFpbGluZ1Rlc3RzQnVnRm9ybShi
dWd6aWxsYSwgdHJhYywgdGVzdGVyLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1l
LCBmYWlsaW5nVGVzdHMpIHsKK2Z1bmN0aW9uIEZhaWxpbmdUZXN0c0J1Z0Zvcm0oYnVnemlsbGEs
IHRlc3RlciwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3Rz
KSB7CiAgICAgVGVzdFJlbGF0ZWRCdWdGb3JtLmNhbGwodGhpcywgYnVnemlsbGEsIHRlc3Rlcik7
CiAKLSAgICB0aGlzLl90cmFjID0gdHJhYzsKICAgICB0aGlzLl9mYWlsaW5nQnVpbGROYW1lID0g
ZmFpbGluZ0J1aWxkTmFtZTsKICAgICB0aGlzLl9wYXNzaW5nQnVpbGROYW1lID0gcGFzc2luZ0J1
aWxkTmFtZTsKICAgICB0aGlzLl9mYWlsaW5nVGVzdHMgPSBmYWlsaW5nVGVzdHM7CkBAIC00OCwx
MSArNDcsMTEgQEAgRmFpbGluZ1Rlc3RzQnVnRm9ybS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICh0aGlzLl9wYXNzaW5nQnVpbGROYW1lKSB7CiAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVu
Y2UgPSAnc3RhcnRlZCBmYWlsaW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZTsKICAgICAgICAg
ICAgIGlmIChmaXJzdFN1c3BlY3RSZXZpc2lvbiA9PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAg
ICAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBpbiByJyArIGZpcnN0U3VzcGVj
dFJldmlzaW9uICsgJyA8JyArIHRoaXMuX3RyYWMuY2hhbmdlc2V0VVJMKGZpcnN0U3VzcGVjdFJl
dmlzaW9uKSArICc+JzsKKyAgICAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBp
biByJyArIGZpcnN0U3VzcGVjdFJldmlzaW9uICsgJyA8JyArIHRyYWMuY2hhbmdlc2V0VVJMKGZp
cnN0U3VzcGVjdFJldmlzaW9uKSArICc+JzsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBiZXR3ZWVuIHInICsgZmlyc3RTdXNwZWN0UmV2
aXNpb24gKyAnIGFuZCByJyArIGxhc3RTdXNwZWN0UmV2aXNpb24gKyAnIChpbmNsdXNpdmUpJzsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgPSAodGhpcy5f
ZmFpbGluZ1Rlc3RzLmxlbmd0aCA9PT0gMSA/ICdoYXMnIDogJ2hhdmUnKSArICcgYmVlbiBmYWls
aW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZSArICcgc2luY2UgYXQgbGVhc3QgcicgKyBmaXJz
dFN1c3BlY3RSZXZpc2lvbiArICcgPCcgKyB0aGlzLl90cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1
c3BlY3RSZXZpc2lvbikgKyAnPic7CisgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgPSAo
dGhpcy5fZmFpbGluZ1Rlc3RzLmxlbmd0aCA9PT0gMSA/ICdoYXMnIDogJ2hhdmUnKSArICcgYmVl
biBmYWlsaW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZSArICcgc2luY2UgYXQgbGVhc3Qgcicg
KyBmaXJzdFN1c3BlY3RSZXZpc2lvbiArICcgPCcgKyB0cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1
c3BlY3RSZXZpc2lvbikgKyAnPic7CiAgICAgICAgIHZhciBkZXNjcmlwdGlvbjsKICAgICAgICAg
aWYgKHRoaXMuX2ZhaWxpbmdUZXN0cy5sZW5ndGggPT09IDEpCiAgICAgICAgICAgICBkZXNjcmlw
dGlvbiA9IHRoaXMuX2ZhaWxpbmdUZXN0c1swXSArICcgJyArIGVuZE9mRmlyc3RTZW50ZW5jZSAr
ICcuXG5cbic7CkBAIC02NCw3ICs2Myw3IEBAIEZhaWxpbmdUZXN0c0J1Z0Zvcm0ucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgICsgJ1xuXG4nOwogICAgICAgICB9CiAgICAgICAgIGlmIChm
aXJzdFN1c3BlY3RSZXZpc2lvbiAhPT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAgICAgICAgICAg
IGRlc2NyaXB0aW9uICs9IHRoaXMuX3RyYWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJl
dmlzaW9uLCBsYXN0U3VzcGVjdFJldmlzaW9uKSArICdcblxuJzsKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uICs9IHRyYWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0
U3VzcGVjdFJldmlzaW9uKSArICdcblxuJzsKICAgICAgICAgaWYgKHRoaXMuX3Bhc3NpbmdCdWls
ZE5hbWUpCiAgICAgICAgICAgICBkZXNjcmlwdGlvbiArPSB0aGlzLl90ZXN0ZXIucmVzdWx0c1Bh
Z2VVUkwodGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkgKyAnIHBhc3NlZFxuJzsKICAgICAgICAgZGVz
Y3JpcHRpb24gKz0gdGhpcy5fZmFpbGluZ1Jlc3VsdHNIVE1MVVJMKCkgKyAnIGZhaWxlZFxuJzsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0
cy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0cy5qcwpp
bmRleCA0MWRkNTRkMmY5N2U2ZjQ5OGUzZWYyOGUwNjk1OTIwYjg5NDhlMDFiLi4yNGMxNTEwNTc5
M2ExODc3YTg3ODI3MzA1ZDBkMDhlMmE1MGQzM2M4IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvRmFpbGluZ1Rlc3RzQnVnRm9ybV91bml0dGVzdHMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCkBAIC0zMSwxNCArMzEsNiBAQCBmdW5j
dGlvbiBjcmVhdGVUZXN0Rm9ybSh0ZXN0ZXJOYW1lLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5n
QnVpbGROYW1lLCBmYWlsaW5nVAogICAgIHZhciBtb2NrQnVnemlsbGEgPSB7fTsKICAgICBtb2Nr
QnVnemlsbGEuYmFzZVVSTCA9ICdbQlVHWklMTEEgQkFTRSBVUkxdJzsKIAotICAgIHZhciBtb2Nr
VHJhYyA9IHt9OwotICAgIG1vY2tUcmFjLmNoYW5nZXNldFVSTCA9IGZ1bmN0aW9uKHJldmlzaW9u
TnVtYmVyKSB7Ci0gICAgICAgIHJldHVybiAnW0NIQU5HRVNFVCBVUkwgcicgKyByZXZpc2lvbk51
bWJlciArICddJzsKLSAgICB9Ci0gICAgbW9ja1RyYWMubG9nVVJMID0gZnVuY3Rpb24ocGF0aCwg
c3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pIHsKLSAgICAgICAgcmV0dXJuICdbTE9HIFVSTCAn
ICsgcGF0aCArICcsIHInICsgc3RhcnRSZXZpc2lvbiArICcsIHInICsgZW5kUmV2aXNpb24gKyAn
XSc7Ci0gICAgfQotCiAgICAgdmFyIG1vY2tCdWlsZGJvdCA9IHt9OwogICAgIG1vY2tCdWlsZGJv
dC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewogICAgICAgICB2YXIgbWF0
Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1lKTsKQEAgLTU1LDcgKzQ3LDcgQEAgZnVuY3Rpb24g
Y3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxk
TmFtZSwgZmFpbGluZ1QKICAgICAgICAgcmV0dXJuICdbUkVTVUxUUyBQQUdFIFVSTCAnICsgdGhp
cy5uYW1lICsgJywgJyArIGJ1aWxkTmFtZSArICddJzsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3
IEZhaWxpbmdUZXN0c0J1Z0Zvcm0obW9ja0J1Z3ppbGxhLCBtb2NrVHJhYywgbW9ja0J1aWxkZXIs
IGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0cyk7CisgICAg
cmV0dXJuIG5ldyBGYWlsaW5nVGVzdHNCdWdGb3JtKG1vY2tCdWd6aWxsYSwgbW9ja0J1aWxkZXIs
IGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0cyk7CiB9CiAK
IHRlc3QoJ2tleXdvcmRzIGFyZSBzZXQnLCAxLCBmdW5jdGlvbigpIHsKQEAgLTcwLDcgKzYyLDcg
QEAgY29uc3QgdGVzdENhc2VzID0gWwogICAgICAgICBmYWlsaW5nVGVzdHM6IFsKICAgICAgICAg
ICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAogICAgICAgICBdLAotICAg
ICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5o
dG1sIGhhcyBiZWVuIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSBzaW5jZSBh
dCBsZWFzdCByMTAgPFtDSEFOR0VTRVQgVVJMIHIxMF0+LlxuXG5bUkVTVUxUUyBQQUdFIFVSTCBX
aW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCisgICAgICAgIGV4
cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgaGFz
IGJlZW4gZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpIHNpbmNlIGF0IGxlYXN0
IHIxMCA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA+LlxuXG5bUkVTVUxUUyBQ
QUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCiAg
ICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyMTApOiBjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywK
ICAgICB9LAogICAgIHsKQEAgLTc5LDcgKzcxLDcgQEAgY29uc3QgdGVzdENhc2VzID0gWwogICAg
ICAgICBmYWlsaW5nVGVzdHM6IFsKICAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yLmh0bWwnLAogICAgICAgICBdLAotICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAn
Y3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5k
b3dzIDcgUmVsZWFzZSAoVGVzdHMpIGluIHIxMCA8W0NIQU5HRVNFVCBVUkwgcjEwXT4uXG5cbltS
RVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI5ICgzKV0gcGFzc2Vk
XG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBm
YWlsZWRcbicsCisgICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yLmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChU
ZXN0cykgaW4gcjEwIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMD4uXG5cbltS
RVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI5ICgzKV0gcGFzc2Vk
XG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBm
YWlsZWRcbicsCiAgICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyMTApOiBjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFz
ZSAoVGVzdHMpJywKICAgICB9LAogICAgIHsKQEAgLTg4LDcgKzgwLDcgQEAgY29uc3QgdGVzdENh
c2VzID0gWwogICAgICAgICBmYWlsaW5nVGVzdHM6IFsKICAgICAgICAgICAgICdjc3MxL2Jhc2lj
L2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAogICAgICAgICBdLAotICAgICAgICBleHBlY3RlZERl
c2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIHN0YXJ0ZWQgZmFp
bGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpIGJldHdlZW4gcjkgYW5kIHIxMCAoaW5j
bHVzaXZlKS5cblxuW0xPRyBVUkwgdHJ1bmssIHI5LCByMTBdXG5cbltSRVNVTFRTIFBBR0UgVVJM
IFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4ICgyKV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdF
IFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCisgICAg
ICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0
bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgYmV0d2VlbiBy
OSBhbmQgcjEwIChpbmNsdXNpdmUpLlxuXG5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVu
a3Jldj0xMCZzdG9wX3Jldj05XG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNl
IChUZXN0cyksIHI4ICgyKV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVs
ZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCiAgICAgICAgIGV4cGVjdGVkVGl0bGU6
ICdSRUdSRVNTSU9OIChyOC1yMTApOiBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwg
ZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywKICAgICB9LAogICAgIHsKQEAg
LTk4LDcgKzkwLDcgQEAgY29uc3QgdGVzdENhc2VzID0gWwogICAgICAgICAgICAgJ2NzczEvYmFz
aWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCcsCiAgICAgICAgICAgICAnZmFzdC9jc3MvZXgtYWZ0
ZXItZm9udC12YXJpYW50Lmh0bWwnLAogICAgICAgICBdLAotICAgICAgICBleHBlY3RlZERlc2Ny
aXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGFuZCBmYXN0L2Nzcy9l
eC1hZnRlci1mb250LXZhcmlhbnQuaHRtbCBzdGFydGVkIGZhaWxpbmcgb24gV2luZG93cyA3IFJl
bGVhc2UgKFRlc3RzKSBiZXR3ZWVuIHI5IGFuZCByMTAgKGluY2x1c2l2ZSkuXG5cbltMT0cgVVJM
IHRydW5rLCByOSwgcjEwXVxuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAo
VGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVh
c2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVkXG4nLAorICAgICAgICBleHBlY3RlZERlc2NyaXB0
aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGFuZCBmYXN0L2Nzcy9leC1h
ZnRlci1mb250LXZhcmlhbnQuaHRtbCBzdGFydGVkIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVh
c2UgKFRlc3RzKSBiZXR3ZWVuIHI5IGFuZCByMTAgKGluY2x1c2l2ZSkuXG5cbmh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvbG9nL3RydW5rcmV2PTEwJnN0b3BfcmV2PTlcblxuW1JFU1VMVFMgUEFHRSBV
UkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjggKDIpXSBwYXNzZWRcbltSRVNVTFRTIFBB
R0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHIxMCAoNSldIGZhaWxlZFxuJywKICAg
ICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHI4LXIxMCk6IGNzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3IuaHRtbCwgZmFzdC9jc3MvZXgtYWZ0ZXItZm9udC12YXJpYW50Lmh0bWwg
ZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywKICAgICB9LAogICAgIHsKQEAg
LTExNCw3ICsxMDYsNyBAQCBjb25zdCB0ZXN0Q2FzZXMgPSBbCiAgICAgICAgICAgICAnY3NzMS9i
YXNpYy9jbGFzc19hc19zZWxlY3RvcjcuaHRtbCcsCiAgICAgICAgICAgICAnY3NzMS9iYXNpYy9j
bGFzc19hc19zZWxlY3RvcjguaHRtbCcsCiAgICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVz
Y3JpcHRpb246ICdUaGUgZm9sbG93aW5nIHRlc3RzIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dz
IDcgUmVsZWFzZSAoVGVzdHMpIGJldHdlZW4gcjkgYW5kIHIxMCAoaW5jbHVzaXZlKTpcblxuICAg
IGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IxLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yMi5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjMuaHRt
bFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWxcbiAgICBjc3MxL2Jhc2lj
L2NsYXNzX2FzX3NlbGVjdG9yNS5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
cjYuaHRtbFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I3Lmh0bWxcbiAgICBjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yOC5odG1sXG5cbltMT0cgVVJMIHRydW5rLCByOSwgcjEw
XVxuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByOCAoMild
IHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEw
ICg1KV0gZmFpbGVkXG4nLAorICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnVGhlIGZvbGxv
d2luZyB0ZXN0cyBzdGFydGVkIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSBi
ZXR3ZWVuIHI5IGFuZCByMTAgKGluY2x1c2l2ZSk6XG5cbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2Fz
X3NlbGVjdG9yMS5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjIuaHRtbFxu
ICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IzLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2Ns
YXNzX2FzX3NlbGVjdG9yNC5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjUu
aHRtbFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I2Lmh0bWxcbiAgICBjc3MxL2Jh
c2ljL2NsYXNzX2FzX3NlbGVjdG9yNy5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxl
Y3RvcjguaHRtbFxuXG5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVua3Jldj0xMCZzdG9w
X3Jldj05XG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4
ICgyKV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMp
LCByMTAgKDUpXSBmYWlsZWRcbicsCiAgICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9O
IChyOC1yMTApOiA4IGNzczEvYmFzaWMgdGVzdHMgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFz
ZSAoVGVzdHMpJywKICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9U
cmFjLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1RyYWMuanMKaW5kZXggMWMzNWU5ZjUzYWNjOWUxNzBk
ZjA3Y2JiYWI5ZmYyNDQ5NzAwNjg2Mi4uMzkwYWQ2MmFlZjdlNzNmMzIwYjRiM2EwMDY3NjgzZjU5
N2IyZDlhMSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1RyYWMuanMKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL1RyYWMuanMKQEAgLTIzLDc5ICsyMyw2OSBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWZ1bmN0aW9uIFRyYWMoYmFzZVVSTCkgewotICAgIHRo
aXMuYmFzZVVSTCA9IGJhc2VVUkw7Ci0gICAgdGhpcy5fY2FjaGUgPSB7fTsKLX0KK3ZhciB0cmFj
ID0gdHJhYyB8fCB7fTsKKworKGZ1bmN0aW9uKCkgeworCitmdW5jdGlvbiBwYXJzZUNvbW1pdERh
dGEocmVzcG9uc2VYTUwpCit7CisgICAgdmFyIGNvbW1pdHMgPSBBcnJheS5wcm90b3R5cGUubWFw
LmNhbGwocmVzcG9uc2VYTUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2l0ZW0nKSwgZnVuY3Rpb24o
aXRlbSkgeworICAgICAgICB2YXIgdGl0bGUgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0
aXRsZScpWzBdLnRleHRDb250ZW50OworICAgICAgICB2YXIgcmV2aXNpb24gPSBwYXJzZUludCgv
XlJldmlzaW9uIChcZCspOi8uZXhlYyh0aXRsZSlbMV0sIDEwKTsKIAotVHJhYy5wcm90b3R5cGUg
PSB7Ci0gICAgY2hhbmdlc2V0VVJMOiBmdW5jdGlvbihyZXZpc2lvbikgewotICAgICAgICByZXR1
cm4gdGhpcy5iYXNlVVJMICsgJ2NoYW5nZXNldC8nICsgcmV2aXNpb247Ci0gICAgfSwKLQotICAg
IGdldENvbW1pdERhdGFGb3JSZXZpc2lvblJhbmdlOiBmdW5jdGlvbihwYXRoLCBzdGFydFJldmlz
aW9uLCBlbmRSZXZpc2lvbiwgY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxk
IHRyeSB0byBiZSBzbWFydGVyIGFuZCBjYWNoZSBpbmRpdmlkdWFsIGNvbW1pdHMsIGJ1dCBpbiBw
cmFjdGljZSB3ZSBqdXN0Ci0gICAgICAgIC8vIGdldCBjYWxsZWQgd2l0aCB0aGUgc2FtZSBwYXJh
bWV0ZXJzIG92ZXIgYW5kIG92ZXIuCi0gICAgICAgIHZhciBjYWNoZUtleSA9ICdnZXRDb21taXRE
YXRhRm9yUmV2aXNpb25SYW5nZS4nICsgW3BhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9u
XS5qb2luKCcuJyk7Ci0gICAgICAgIGlmIChjYWNoZUtleSBpbiB0aGlzLl9jYWNoZSkgewotICAg
ICAgICAgICAgY2FsbGJhY2sodGhpcy5fY2FjaGVbY2FjaGVLZXldKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjYWxsYmFja3NDYWNoZUtleSA9ICdjYWxs
YmFja3MuJyArIGNhY2hlS2V5OwotICAgICAgICBpZiAoY2FsbGJhY2tzQ2FjaGVLZXkgaW4gdGhp
cy5fY2FjaGUpIHsKLSAgICAgICAgICAgIHRoaXMuX2NhY2hlW2NhbGxiYWNrc0NhY2hlS2V5XS5w
dXNoKGNhbGxiYWNrKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuX2NhY2hlW2NhbGxiYWNrc0NhY2hlS2V5XSA9IFtjYWxsYmFja107Ci0KLSAgICAgICAg
dmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgIGZ1bmN0aW9uIGNhY2hlUmVzdWx0c0FuZENhbGxD
YWxsYmFja3MoY29tbWl0cykgewotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0g
Y29tbWl0czsKLQotICAgICAgICAgICAgdmFyIGNhbGxiYWNrcyA9IHNlbGYuX2NhY2hlW2NhbGxi
YWNrc0NhY2hlS2V5XTsKLSAgICAgICAgICAgIGRlbGV0ZSBzZWxmLl9jYWNoZVtjYWxsYmFja3ND
YWNoZUtleV07Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKGNhbGxi
YWNrKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soY29tbWl0cyk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGdldFJlc291cmNlKHNlbGYubG9nVVJMKCd0cnVuaycs
IHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCB0cnVlLCB0cnVlKSwgZnVuY3Rpb24oeGhyKSB7
Ci0gICAgICAgICAgICB2YXIgY29tbWl0cyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh4aHIu
cmVzcG9uc2VYTUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2l0ZW0nKSwgZnVuY3Rpb24oaXRlbSkg
ewotICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J3RpdGxlJylbMF0udGV4dENvbnRlbnQ7Ci0gICAgICAgICAgICAgICAgdmFyIHJldmlzaW9uID0g
cGFyc2VJbnQoL15SZXZpc2lvbiAoXGQrKTovLmV4ZWModGl0bGUpWzFdLCAxMCk7Ci0KLSAgICAg
ICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgICAgICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGl0ZW0uZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2Rlc2NyaXB0aW9uJylbMF0udGV4dENvbnRlbnQ7Ci0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjogcmV2aXNpb24sCi0gICAg
ICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IFRoaXMgaXNuJ3QgYSB2ZXJ5IGhpZ2gtZmlkZWxpdHkgcmVwcm9kdWN0aW9uIG9mIHRoZSBj
b21taXQgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGl0J3MgZ29vZCBlbm91
Z2ggZm9yIG91ciBwdXJwb3Nlcy4KLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY29udGFp
bmVyLmlubmVyVGV4dCwKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgICAgIGNhY2hlUmVzdWx0c0FuZENhbGxDYWxsYmFja3MoY29tbWl0cyk7Ci0gICAgICAg
IH0sCi0gICAgICAgIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgY2FjaGVSZXN1bHRzQW5k
Q2FsbENhbGxiYWNrcyhbXSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBsb2dVUkw6IGZ1
bmN0aW9uKHBhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBzaG93RnVsbENvbW1pdExv
Z3MsIGZvcm1hdEFzUlNTKSB7Ci0gICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB7Ci0gICAg
ICAgICAgICByZXY6IGVuZFJldmlzaW9uLAotICAgICAgICAgICAgc3RvcF9yZXY6IHN0YXJ0UmV2
aXNpb24sCisgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ2Rlc2NyaXB0aW9uJylbMF0udGV4dENvbnRlbnQ7CisKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgIHJldmlzaW9uOiByZXZpc2lvbiwKKyAgICAgICAgICAgIHRpdGxlOiB0aXRs
ZSwKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IGEgdmVyeSBoaWdoLWZpZGVsaXR5
IHJlcHJvZHVjdGlvbiBvZiB0aGUgY29tbWl0IG1lc3NhZ2UsCisgICAgICAgICAgICAvLyBidXQg
aXQncyBnb29kIGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzLgorICAgICAgICAgICAgbWVzc2FnZTog
Y29udGFpbmVyLmlubmVyVGV4dCwKICAgICAgICAgfTsKLSAgICAgICAgaWYgKHNob3dGdWxsQ29t
bWl0TG9ncykKLSAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycy52ZXJib3NlID0gJ29uJzsKLSAg
ICAgICAgaWYgKGZvcm1hdEFzUlNTKQotICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLmZvcm1h
dCA9ICdyc3MnOwotICAgICAgICByZXR1cm4gYWRkUXVlcnlQYXJhbWV0ZXJzVG9VUkwodGhpcy5i
YXNlVVJMICsgJ2xvZy8nICsgcGF0aCwgcXVlcnlQYXJhbWV0ZXJzKTsKLSAgICB9LAorICAgIH0p
OworCisgICAgcmV0dXJuIGNvbW1pdHM7Cit9CisKK3ZhciBnX2NhY2hlID0gbmV3IGJhc2UuQXN5
bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgeworICAgIHZhciBleHBsb2Rl
ZEtleSA9IGtleS5zcGxpdCgnXG4nKTsKKworICAgIHZhciBwYXRoID0gZXhwbG9kZWRLZXlbMF07
CisgICAgdmFyIHN0YXJ0UmV2aXNpb24gPSBleHBsb2RlZEtleVsxXTsKKyAgICB2YXIgZW5kUmV2
aXNpb24gPSBleHBsb2RlZEtleVsyXTsKKworICAgIHZhciB1cmwgPSB0cmFjLmxvZ1VSTChwYXRo
LCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAkLmdldCh1
cmwsIGZ1bmN0aW9uKGNvbW1pdERhdGEpIHsKKyAgICAgICAgY2FsbGJhY2socGFyc2VDb21taXRE
YXRhKGNvbW1pdERhdGEpKTsKKyAgICB9KTsKK30pOworCit0cmFjLmNoYW5nZXNldFVSTCA9IGZ1
bmN0aW9uKHJldmlzaW9uKQoreworICAgIHJldHVybiBjb25maWcua1RyYWNVUkwgKyAnL2NoYW5n
ZXNldC8nICsgcmV2aXNpb247CiB9OworCit0cmFjLmxvZ1VSTCA9IGZ1bmN0aW9uKHBhdGgsIHN0
YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBzaG93RnVsbENvbW1pdExvZ3MsIGZvcm1hdEFzUlNT
KQoreworICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB7CisgICAgICAgIHJldjogZW5kUmV2aXNp
b24sCisgICAgICAgIHN0b3BfcmV2OiBzdGFydFJldmlzaW9uLAorICAgIH07CisKKyAgICBpZiAo
c2hvd0Z1bGxDb21taXRMb2dzKQorICAgICAgICBxdWVyeVBhcmFtZXRlcnMudmVyYm9zZSA9ICdv
bic7CisgICAgaWYgKGZvcm1hdEFzUlNTKQorICAgICAgICBxdWVyeVBhcmFtZXRlcnMuZm9ybWF0
ID0gJ3Jzcyc7CisKKyAgICByZXR1cm4gY29uZmlnLmtUcmFjVVJMICsgJy9sb2cvJyArIHBhdGgg
KyAkLnBhcmFtKHF1ZXJ5UGFyYW1ldGVycyk7Cit9OworCit0cmFjLmNvbW1pdERhdGFGb3JSZXZp
c2lvblJhbmdlID0gZnVuY3Rpb24ocGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sIGNh
bGxiYWNrKQoreworICAgIHZhciBrZXkgPSBbcGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNp
b25dLmpvaW4oJ1xuJyk7CisgICAgZ19jYWNoZS5nZXQoa2V5LCBjYWxsYmFjayk7Cit9OworCit9
KSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1ZpZXdDb250cm9sbGVyLmpzIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL1ZpZXdDb250cm9sbGVyLmpzCmluZGV4IDUzMGRjNzg2NDU3MjJmNzZjZjky
NTU3MWQ2YWFiZjk5NTkwYzc2MzcuLjE3NTRjMzYyYjllNGY1MDQxMTMyZmMwMjgzMjRmOTU3NGZj
NzE4MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9WaWV3Q29udHJvbGxlci5qcworKysg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvVmlld0NvbnRyb2xsZXIuanMKQEAgLTIzLDEwICsyMyw5IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZnVuY3Rpb24gVmlld0Nv
bnRyb2xsZXIoYnVpbGRib3QsIGJ1Z3ppbGxhLCB0cmFjKSB7CitmdW5jdGlvbiBWaWV3Q29udHJv
bGxlcihidWlsZGJvdCwgYnVnemlsbGEpIHsKICAgICB0aGlzLl9idWlsZGJvdCA9IGJ1aWxkYm90
OwogICAgIHRoaXMuX2J1Z3ppbGxhID0gYnVnemlsbGE7Ci0gICAgdGhpcy5fdHJhYyA9IHRyYWM7
CiAgICAgdGhpcy5fbmF2aWdhdGlvbklEID0gMDsKIAogICAgIHZhciBzZWxmID0gdGhpczsKQEAg
LTEwNCw3ICsxMDMsNyBAQCBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JSZWdyZXNzaW9uUmFuZ2UoYnVpbGRl
ciwgYnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVzKSk7CiAKICAg
ICAgICAgICAgICAgICBpZiAocGFzc2luZ0J1aWxkTmFtZSB8fCAhc3RpbGxGZXRjaGluZ0RhdGEp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJ1Z0Zvcm0gPSBuZXcgRmFpbGluZ1Rlc3RzQnVn
Rm9ybShzZWxmLl9idWd6aWxsYSwgc2VsZi5fdHJhYywgYnVpbGRlciwgYnVpbGROYW1lLCBwYXNz
aW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy
IGJ1Z0Zvcm0gPSBuZXcgRmFpbGluZ1Rlc3RzQnVnRm9ybShzZWxmLl9idWd6aWxsYSwgYnVpbGRl
ciwgYnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVzKTsKICAgICAg
ICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JOZXdBbmRFeGlzdGlu
Z0J1Z3MoYnVpbGRlciwgZmFpbGluZ1Rlc3ROYW1lcywgYnVnRm9ybSkpCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSk7CkBAIC0xOTgsMTQgKzE5NywxNCBAQCBWaWV3Q29udHJvbGxl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYScpOwogICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQobGluayk7CiAKLSAgICAgICAgbGlu
ay5ocmVmID0gdGhpcy5fdHJhYy5sb2dVUkwoJ3RydW5rJywgZmlyc3RTdXNwZWN0UmV2aXNpb24s
IGxhc3RTdXNwZWN0UmV2aXNpb24sIHRydWUpOworICAgICAgICBsaW5rLmhyZWYgPSB0cmFjLmxv
Z1VSTCgndHJ1bmsnLCBmaXJzdFN1c3BlY3RSZXZpc2lvbiwgbGFzdFN1c3BlY3RSZXZpc2lvbiwg
dHJ1ZSk7CiAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
J1ZpZXcgcmVncmVzc2lvbiByYW5nZSBpbiBUcmFjJykpOwogCiAgICAgICAgIHN1c3BlY3RzQ29u
dGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdTZWFyY2hpbmcgZm9y
IHN1c3BlY3QgcmV2aXNpb25zXHUyMDI2JykpOwogCiAgICAgICAgIC8vIEZJWE1FOiBNYXliZSBz
b21lIG9mIHRoaXMgY29kZSBzaG91bGQgZ28gaW4gTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplciwg
b3Igc29tZSBvdGhlciBjbGFzcz8KICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBz
ZWxmLl90cmFjLmdldENvbW1pdERhdGFGb3JSZXZpc2lvblJhbmdlKCd0cnVuaycsIGZpcnN0U3Vz
cGVjdFJldmlzaW9uLCBsYXN0U3VzcGVjdFJldmlzaW9uLCBmdW5jdGlvbihjb21taXRzKSB7Cisg
ICAgICAgIHRyYWMuZ2V0Q29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UoJ3RydW5rJywgZmlyc3RT
dXNwZWN0UmV2aXNpb24sIGxhc3RTdXNwZWN0UmV2aXNpb24sIGZ1bmN0aW9uKGNvbW1pdHMpIHsK
ICAgICAgICAgICAgIHZhciBmYWlsaW5nVGVzdE5hbWVzV2l0aG91dEV4dGVuc2lvbnMgPSBmYWls
aW5nVGVzdE5hbWVzLm1hcChyZW1vdmVQYXRoRXh0ZW5zaW9uKTsKICAgICAgICAgICAgIHZhciBz
dXNwZWN0Q29tbWl0cyA9IGNvbW1pdHMuZmlsdGVyKGZ1bmN0aW9uKGNvbW1pdCkgewogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWlsaW5nVGVzdE5hbWVzV2l0aG91dEV4dGVuc2lvbnMuc29tZShm
dW5jdGlvbih0ZXN0TmFtZSkgewpAQCAtMjM0LDcgKzIzMyw3IEBAIFZpZXdDb250cm9sbGVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2EnKTsKICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGxpbmspOwogCi0g
ICAgICAgICAgICAgICAgbGluay5ocmVmID0gc2VsZi5fdHJhYy5jaGFuZ2VzZXRVUkwoY29tbWl0
LnJldmlzaW9uKTsKKyAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB0cmFjLmNoYW5nZXNldFVS
TChjb21taXQucmV2aXNpb24pOwogICAgICAgICAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoY29tbWl0LnRpdGxlKSkKIAogICAgICAgICAgICAgICAgIHJl
dHVybiBpdGVtOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Jhc2UuanMgYi9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvYmFzZS5qcwppbmRleCA0N2YyNjIyMjBhNGE3YWNkM2ZlOTEyNjIzMDk2YWU2ZDJl
MGRlYmRmLi4xZjVhY2EyYzhlOWZiMzA2MzIyNGE1NThmMzVjY2NmMDYxMzRkNjliIDEwMDY0NAot
LS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvYmFzZS5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvYmFzZS5q
cwpAQCAtMTQ2LDQgKzE0Niw0MCBAQCBiYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJvdG90eXBlLmNh
bGxQcmV2aW91cyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9jYWxsYmFjay5hcHBseShudWxsLCBh
cmdzKTsKIH07CiAKK2Jhc2UuQXN5bmNocm9ub3VzQ2FjaGUgPSBmdW5jdGlvbihmZXRjaCkKK3sK
KyAgICB0aGlzLl9mZXRjaCA9IGZldGNoOworICAgIHRoaXMuX2RhdGFDYWNoZSA9IHt9OworICAg
IHRoaXMuX2NhbGxiYWNrQ2FjaGUgPSB7fTsKK307CisKK2Jhc2UuQXN5bmNocm9ub3VzQ2FjaGUu
cHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spCit7CisgICAgdmFyIHNlbGYg
PSB0aGlzOworCisgICAgaWYgKHNlbGYuX2RhdGFDYWNoZVtrZXldKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBDb25zaWRlciBhbHdheXMgY2FsbGluZyBjYWxsYmFjayBhc3luY2hyb25vdXNseS4KKyAg
ICAgICAgY2FsbGJhY2soc2VsZi5fZGF0YUNhY2hlW2tleV0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGtleSBpbiBzZWxmLl9jYWxsYmFja0NhY2hlKSB7CisgICAgICAgIHRo
aXMuX2NhbGxiYWNrQ2FjaGVba2V5XS5wdXNoKGNhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNlbGYuX2NhbGxiYWNrQ2FjaGVba2V5XSA9IFtjYWxsYmFja107CisKKyAg
ICBzZWxmLl9mZXRjaC5jYWxsKG51bGwsIGtleSwgZnVuY3Rpb24oZGF0YSkgeworICAgICAgICBz
ZWxmLl9kYXRhQ2FjaGVba2V5XSA9IGRhdGE7CisKKyAgICAgICAgdmFyIGNhbGxiYWNrTGlzdCA9
IHNlbGYuX2NhbGxiYWNrQ2FjaGVba2V5XTsKKyAgICAgICAgZGVsZXRlIHNlbGYuX2NhbGxiYWNr
Q2FjaGVba2V5XTsKKworICAgICAgICAkLmVhY2goY2FsbGJhY2tMaXN0LCBmdW5jdGlvbihpbmRl
eCwgY2FjaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhY2hlZENhbGxiYWNrKGRhdGEpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK307CisKIH0pKCk7CmRpZmYgLS1naXQgYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvY29uZmlnLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbmZpZy5qcwppbmRleCBhNzI5ZDc0
ZjQ0NmVjNmM1NzdmZWFlOTc1MWRkYjI2YjY0ZGI0MDA2Li41M2QyMmM4YmY1MTkzMGFlYWE1Y2Q3
NGIzYTgxZmNlNGIxODllZjdmIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvY29uZmlnLmpz
CisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb25maWcuanMKQEAgLTI5LDYgKzI5LDggQEAgY29uZmln
LmtCdWlsZGVyc1RoYXRPbmx5Q29tcGlsZSA9IFsKICAgICAnTWFjIENsYW5nIEJ1aWxkZXIgKGRi
ZyknLAogXTsKIAorY29uZmlnLmtUcmFjVVJMID0gJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcnOwor
CiBjb25maWcua1Rlc3ROYW1lQXR0ciA9ICdkYXRhLXRlc3QtbmFtZSc7CiBjb25maWcua0J1aWxk
ZXJOYW1lQXR0ciA9ICdkYXRhLWJ1aWxkZXItbmFtZSc7CiBjb25maWcua0ZhaWx1cmVDb3VudEF0
dHIgPSAnZGF0YS1mYWlsdXJlLWNvdW50JzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9p
bmRleC5odG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKaW5kZXggOTEzNjVjODIyMWI3
Zjc1ZmFlNThjYTcyNzc3MTg4NzMyM2JjOTY3ZS4uYmJiODhkZjZlOGNiZjc3NGEyY2IwNmU1OWM3
M2IzNjVkNTJiNDk2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKKysr
IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKQEAgLTI3LDYgKzI3LDEyIEBAIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDxodG1sPgogPGhlYWQ+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJUZXN0RmFpbHVyZXMuY3NzIj48L2xpbms+CisgICAgPHNjcmlwdCBz
cmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNC4yL2px
dWVyeS5taW4uanMiPjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9ImNvbmZpZy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImJhc2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJUcmFjLmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJVdGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJOZXdCdWdGb3JtLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVGVzdFJlbGF0ZWRCdWdGb3JtLmpzIj48L3NjcmlwdD4KQEAgLTQyLDEy
ICs0OCwxMSBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCBz
cmM9Ik5SV1RSZXN1bHRzUGFyc2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iT1JX
VFJlc3VsdHNQYXJzZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQZXJzaXN0ZW50
Q2FjaGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJUcmFjLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJXZWJLaXRCdWd6aWxsYS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ildl
YktpdEJ1aWxkYm90LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAgICB2YXIgdmll
d0NvbnRyb2xsZXIgPSBuZXcgVmlld0NvbnRyb2xsZXIobmV3IFdlYktpdEJ1aWxkYm90KCksIG5l
dyBCdWd6aWxsYSgnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvJyksIG5ldyBUcmFjKCdodHRwOi8v
dHJhYy53ZWJraXQub3JnLycpKTsKKyAgICAgICAgdmFyIHZpZXdDb250cm9sbGVyID0gbmV3IFZp
ZXdDb250cm9sbGVyKG5ldyBXZWJLaXRCdWlsZGJvdCgpLCBuZXcgQnVnemlsbGEoJ2h0dHBzOi8v
YnVncy53ZWJraXQub3JnLycpKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Jlc3VsdHMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVz
dWx0cy5qcwppbmRleCAyYjliZDVmNzNmMGNiNGFjMTNiN2E2OTExYmZhNTIzNDU1N2ZiMmY1Li4z
MDgxY2U0OGIxM2RjY2FjNTI5ODJkMmU3OGI0ZWRiZmE0OTk5Zjk2IDEwMDY0NAotLS0gYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvcmVzdWx0cy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0cy5qcwpA
QCAtMTU3LDM0ICsxNTcsOSBAQCBmdW5jdGlvbiBkaXJlY3RvcnlPZlJlc3VsdHNTdW1tYXJ5VVJM
KGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSkKICAgICByZXR1cm4ga1Rlc3RSZXN1bHRzUXVlcnkgKyAk
LnBhcmFtKHBhcmFtZXRlcnMpOwogfQogCi1mdW5jdGlvbiBSZXN1bHRzQ2FjaGUoKQotewotICAg
IHRoaXMuX2NhY2hlID0ge307Ci19Ci0KLVJlc3VsdHNDYWNoZS5wcm90b3R5cGUuX2ZldGNoID0g
ZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykKLXsKLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICB2
YXIgdXJsID0ga1Rlc3RSZXN1bHRzU2VydmVyICsgJ3Rlc3RmaWxlP2tleT0nICsga2V5OwotICAg
IGJhc2UuanNvbnAodXJsLCBmdW5jdGlvbiAocmVzdWx0c1RyZWUpIHsKLSAgICAgICAgc2VsZi5f
Y2FjaGVba2V5XSA9IHJlc3VsdHNUcmVlOwotICAgICAgICBjYWxsYmFjayhyZXN1bHRzVHJlZSk7
Ci0gICAgfSk7Ci19OwotCi0vLyBXYXJuaW5nISBUaGlzIGZ1bmN0aW9uIGNhbiBjYWxsIGNhbGxi
YWNrIGVpdGhlciBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5LgotLy8gRklYTUU6IENv
bnNpZGVyIHVzaW5nIHNldFRpbWVvdXQgdG8gbWFrZSB0aGlzIG1ldGhvZCBhbHdheXMgYXN5bmNo
cm9ub3VzLgotUmVzdWx0c0NhY2hlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihrZXksIGNhbGxi
YWNrKQotewotICAgIGlmICh0aGlzLl9jYWNoZVtrZXldKSB7Ci0gICAgICAgIGNhbGxiYWNrKHRo
aXMuX2NhY2hlW2tleV0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHRoaXMuX2ZldGNo
KGtleSwgY2FsbGJhY2spOwotfTsKLQotdmFyIGdfcmVzdWx0c0NhY2hlID0gbmV3IFJlc3VsdHND
YWNoZSgpOwordmFyIGdfcmVzdWx0c0NhY2hlID0gbmV3IGJhc2UuQXN5bmNocm9ub3VzQ2FjaGUo
ZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgeworICAgIGJhc2UuanNvbnAoa1Rlc3RSZXN1bHRzU2Vy
dmVyICsgJ3Rlc3RmaWxlP2tleT0nICsga2V5LCBjYWxsYmFjayk7Cit9KTsKIAogZnVuY3Rpb24g
YW55SXNGYWlsdXJlKHJlc3VsdHNMaXN0KQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3J1bi11bml0dGVzdHMuaHRtbCBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRlc3RzLmh0bWwK
aW5kZXggMTU4ZDA4ZjFhMDE5ZjI4NGYzY2E1Zjg4NDBiMzQ3OGMzODkzYjZkMC4uYTkyYjNkYjNl
MWY4MDVhNmJkMmJmY2M2MTNlZmJmY2U3NGE3ZWE2OCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3J1bi11bml0dGVzdHMuaHRtbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0
cy5odG1sCkBAIC0xMSw2ICsxMSwxOSBAQAogPGRpdiBpZD0icXVuaXQtdGVzdHJ1bm5lci10b29s
YmFyIj48L2Rpdj4KIDxoMiBpZD0icXVuaXQtdXNlckFnZW50Ij48L2gyPgogPG9sIGlkPSJxdW5p
dC10ZXN0cyI+PC9vbD4KKworPHNjcmlwdCBzcmM9ImNvbmZpZy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFzZV91bml0dGVzdHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlRyYWMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InRyYWNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJjaGVja291dC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY2hlY2tvdXRfdW5pdHRlc3RzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXN1bHRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXN1
bHRzX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idWkuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InVpX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CisKIDwhLS0gRklYTUU6
IFdlIHNob3VsZCBoYXZlIHRlc3RzIGZvciB0aGVzZSBmaWxlcyEgLS0+CiA8c2NyaXB0IHNyYz0i
QnVnemlsbGEuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldlYktpdEJ1Z3ppbGxhLmpzIj48
L3NjcmlwdD4KQEAgLTM5LDE0ICs1Miw1IEBACiA8c2NyaXB0IHNyYz0iQnVpbGRlci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbGRlcl91bml0dGVzdHMuanMiPjwvc2NyaXB0PgogCi08
c2NyaXB0IHNyYz0iY29uZmlnLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiYXNlLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiYXNlX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iY2hlY2tvdXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImNoZWNrb3V0X3Vu
aXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzdWx0cy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0icmVzdWx0c191bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InVpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1aV91bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDJlNzI2ODAzZTI5MTZlNGI0MjI3YjM5ZTY1Yzk0N2Y4OTlmODEy
NWEuLjUzNzg3ZGE0MjNlNTdjYzMwMDY3MGI4NWQ3MGU5ZmQ5YTNlZDkzNmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMiBAQAog
MjAxMS0wNy0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJl
ZmFjdG9yIFRyYWMuanMgZm9yIHVzZSBpbiBnYXJkZW4tby1tYXRpYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5OTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZmFjdG9ycyBUcmFj
LmpzIHRvIG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHN0eWxlIG9mCisgICAgICAgIGdhcmRl
bi1vLW1hdGljLiAgSSd2ZSBhbHNvIGZhY3RvcmVkIEFzeW5jaHJvbm91c0NhY2hlIG91dCBvZiBU
cmFjIChhbmQKKyAgICAgICAgbW92ZWQgaXQgdG8gYmFzZSkgYmVjYXVzZSBpdCB3YXMgcmVkdW5k
YW50IHdpdGggc29tZSBvdGhlciBjb2RlIHdlCisgICAgICAgIGFscmVhZHkgaGFkLgorCisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanM6CisgICAgICAgIChGYWlsaW5n
VGVzdHNCdWdGb3JtKToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmFpbGluZ1Rlc3RzQnVnRm9ybV91
bml0dGVzdHMuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1RyYWMuanM6CisgICAgICAgICogQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL1ZpZXdDb250cm9sbGVyLmpzOgorICAgICAgICAoVmlld0NvbnRyb2xsZXIucHJvdG90
eXBlLl9kaXNwbGF5QnVpbGRlci5zdGFydCk6CisgICAgICAgIChWaWV3Q29udHJvbGxlci5wcm90
b3R5cGUuX2Rpc3BsYXlCdWlsZGVyKToKKyAgICAgICAgKFZpZXdDb250cm9sbGVyLnByb3RvdHlw
ZS5fZG9tRm9yUmVncmVzc2lvblJhbmdlLnRyYWMuZ2V0Q29tbWl0RGF0YUZvclJldmlzaW9uUmFu
Z2UpOgorICAgICAgICAoVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLl9kb21Gb3JSZWdyZXNzaW9u
UmFuZ2UpOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlLmpzOgorICAgICAgICAqIEJ1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9jb25maWcuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWw6CisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3Jlc3VsdHMuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3J1bi11bml0dGVzdHMu
aHRtbDoKKworMjAxMS0wNy0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAg
ICAgICAgIE1lcmdlIFRlc3RGYWlsdXJlcyBhbmQgZ2FyZGVuLW8tbWF0aWMgdW5pdCB0ZXN0cyBo
YXJuZXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDk4NAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101673</attachid>
            <date>2011-07-21 17:10:17 -0700</date>
            <delta_ts>2011-07-21 17:24:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64998-20110721171016.patch</filename>
            <type>text/plain</type>
            <size>26578</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE1MjUKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9G
YWlsaW5nVGVzdHNCdWdGb3JtLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0ZhaWxpbmdUZXN0c0J1Z0Zv
cm0uanMKaW5kZXggOWUzMDUzODU3N2Y5ZWZhYzBlZGM3YmIyZTM5NDNiOWM5YTRlNzJhOS4uNzdk
ZTBlZDkwYmZjOWE4NjY2NDdhMWNiOWEyOTkzNDAzN2VjNGE0NiAxMDA2NDQKLS0tIGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0Zh
aWxpbmdUZXN0c0J1Z0Zvcm0uanMKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZnVuY3Rpb24gRmFpbGluZ1Rlc3RzQnVnRm9ybShi
dWd6aWxsYSwgdHJhYywgdGVzdGVyLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1l
LCBmYWlsaW5nVGVzdHMpIHsKK2Z1bmN0aW9uIEZhaWxpbmdUZXN0c0J1Z0Zvcm0oYnVnemlsbGEs
IHRlc3RlciwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3Rz
KSB7CiAgICAgVGVzdFJlbGF0ZWRCdWdGb3JtLmNhbGwodGhpcywgYnVnemlsbGEsIHRlc3Rlcik7
CiAKLSAgICB0aGlzLl90cmFjID0gdHJhYzsKICAgICB0aGlzLl9mYWlsaW5nQnVpbGROYW1lID0g
ZmFpbGluZ0J1aWxkTmFtZTsKICAgICB0aGlzLl9wYXNzaW5nQnVpbGROYW1lID0gcGFzc2luZ0J1
aWxkTmFtZTsKICAgICB0aGlzLl9mYWlsaW5nVGVzdHMgPSBmYWlsaW5nVGVzdHM7CkBAIC00OCwx
MSArNDcsMTEgQEAgRmFpbGluZ1Rlc3RzQnVnRm9ybS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICh0aGlzLl9wYXNzaW5nQnVpbGROYW1lKSB7CiAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVu
Y2UgPSAnc3RhcnRlZCBmYWlsaW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZTsKICAgICAgICAg
ICAgIGlmIChmaXJzdFN1c3BlY3RSZXZpc2lvbiA9PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAg
ICAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBpbiByJyArIGZpcnN0U3VzcGVj
dFJldmlzaW9uICsgJyA8JyArIHRoaXMuX3RyYWMuY2hhbmdlc2V0VVJMKGZpcnN0U3VzcGVjdFJl
dmlzaW9uKSArICc+JzsKKyAgICAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBp
biByJyArIGZpcnN0U3VzcGVjdFJldmlzaW9uICsgJyA8JyArIHRyYWMuY2hhbmdlc2V0VVJMKGZp
cnN0U3VzcGVjdFJldmlzaW9uKSArICc+JzsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBiZXR3ZWVuIHInICsgZmlyc3RTdXNwZWN0UmV2
aXNpb24gKyAnIGFuZCByJyArIGxhc3RTdXNwZWN0UmV2aXNpb24gKyAnIChpbmNsdXNpdmUpJzsK
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgPSAodGhpcy5f
ZmFpbGluZ1Rlc3RzLmxlbmd0aCA9PT0gMSA/ICdoYXMnIDogJ2hhdmUnKSArICcgYmVlbiBmYWls
aW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZSArICcgc2luY2UgYXQgbGVhc3QgcicgKyBmaXJz
dFN1c3BlY3RSZXZpc2lvbiArICcgPCcgKyB0aGlzLl90cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1
c3BlY3RSZXZpc2lvbikgKyAnPic7CisgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgPSAo
dGhpcy5fZmFpbGluZ1Rlc3RzLmxlbmd0aCA9PT0gMSA/ICdoYXMnIDogJ2hhdmUnKSArICcgYmVl
biBmYWlsaW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZSArICcgc2luY2UgYXQgbGVhc3Qgcicg
KyBmaXJzdFN1c3BlY3RSZXZpc2lvbiArICcgPCcgKyB0cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1
c3BlY3RSZXZpc2lvbikgKyAnPic7CiAgICAgICAgIHZhciBkZXNjcmlwdGlvbjsKICAgICAgICAg
aWYgKHRoaXMuX2ZhaWxpbmdUZXN0cy5sZW5ndGggPT09IDEpCiAgICAgICAgICAgICBkZXNjcmlw
dGlvbiA9IHRoaXMuX2ZhaWxpbmdUZXN0c1swXSArICcgJyArIGVuZE9mRmlyc3RTZW50ZW5jZSAr
ICcuXG5cbic7CkBAIC02NCw3ICs2Myw3IEBAIEZhaWxpbmdUZXN0c0J1Z0Zvcm0ucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgICsgJ1xuXG4nOwogICAgICAgICB9CiAgICAgICAgIGlmIChm
aXJzdFN1c3BlY3RSZXZpc2lvbiAhPT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAgICAgICAgICAg
IGRlc2NyaXB0aW9uICs9IHRoaXMuX3RyYWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJl
dmlzaW9uLCBsYXN0U3VzcGVjdFJldmlzaW9uKSArICdcblxuJzsKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uICs9IHRyYWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0
U3VzcGVjdFJldmlzaW9uKSArICdcblxuJzsKICAgICAgICAgaWYgKHRoaXMuX3Bhc3NpbmdCdWls
ZE5hbWUpCiAgICAgICAgICAgICBkZXNjcmlwdGlvbiArPSB0aGlzLl90ZXN0ZXIucmVzdWx0c1Bh
Z2VVUkwodGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkgKyAnIHBhc3NlZFxuJzsKICAgICAgICAgZGVz
Y3JpcHRpb24gKz0gdGhpcy5fZmFpbGluZ1Jlc3VsdHNIVE1MVVJMKCkgKyAnIGZhaWxlZFxuJzsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0
cy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9GYWlsaW5nVGVzdHNCdWdGb3JtX3VuaXR0ZXN0cy5qcwpp
bmRleCA0MWRkNTRkMmY5N2U2ZjQ5OGUzZWYyOGUwNjk1OTIwYjg5NDhlMDFiLi45NTgwNzgxNjFh
ZWQwYTkwY2E1MTA2MmNhNWI0MWEyNjRmYzAwYWRjIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvRmFpbGluZ1Rlc3RzQnVnRm9ybV91bml0dGVzdHMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCkBAIC0zMSwxNCArMzEsNiBAQCBmdW5j
dGlvbiBjcmVhdGVUZXN0Rm9ybSh0ZXN0ZXJOYW1lLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5n
QnVpbGROYW1lLCBmYWlsaW5nVAogICAgIHZhciBtb2NrQnVnemlsbGEgPSB7fTsKICAgICBtb2Nr
QnVnemlsbGEuYmFzZVVSTCA9ICdbQlVHWklMTEEgQkFTRSBVUkxdJzsKIAotICAgIHZhciBtb2Nr
VHJhYyA9IHt9OwotICAgIG1vY2tUcmFjLmNoYW5nZXNldFVSTCA9IGZ1bmN0aW9uKHJldmlzaW9u
TnVtYmVyKSB7Ci0gICAgICAgIHJldHVybiAnW0NIQU5HRVNFVCBVUkwgcicgKyByZXZpc2lvbk51
bWJlciArICddJzsKLSAgICB9Ci0gICAgbW9ja1RyYWMubG9nVVJMID0gZnVuY3Rpb24ocGF0aCwg
c3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24pIHsKLSAgICAgICAgcmV0dXJuICdbTE9HIFVSTCAn
ICsgcGF0aCArICcsIHInICsgc3RhcnRSZXZpc2lvbiArICcsIHInICsgZW5kUmV2aXNpb24gKyAn
XSc7Ci0gICAgfQotCiAgICAgdmFyIG1vY2tCdWlsZGJvdCA9IHt9OwogICAgIG1vY2tCdWlsZGJv
dC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewogICAgICAgICB2YXIgbWF0
Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1lKTsKQEAgLTU1LDcgKzQ3LDcgQEAgZnVuY3Rpb24g
Y3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxk
TmFtZSwgZmFpbGluZ1QKICAgICAgICAgcmV0dXJuICdbUkVTVUxUUyBQQUdFIFVSTCAnICsgdGhp
cy5uYW1lICsgJywgJyArIGJ1aWxkTmFtZSArICddJzsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3
IEZhaWxpbmdUZXN0c0J1Z0Zvcm0obW9ja0J1Z3ppbGxhLCBtb2NrVHJhYywgbW9ja0J1aWxkZXIs
IGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0cyk7CisgICAg
cmV0dXJuIG5ldyBGYWlsaW5nVGVzdHNCdWdGb3JtKG1vY2tCdWd6aWxsYSwgbW9ja0J1aWxkZXIs
IGZhaWxpbmdCdWlsZE5hbWUsIHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0cyk7CiB9CiAK
IHRlc3QoJ2tleXdvcmRzIGFyZSBzZXQnLCAxLCBmdW5jdGlvbigpIHsKQEAgLTcwLDcgKzYyLDcg
QEAgY29uc3QgdGVzdENhc2VzID0gWwogICAgICAgICBmYWlsaW5nVGVzdHM6IFsKICAgICAgICAg
ICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAogICAgICAgICBdLAotICAg
ICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5o
dG1sIGhhcyBiZWVuIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSBzaW5jZSBh
dCBsZWFzdCByMTAgPFtDSEFOR0VTRVQgVVJMIHIxMF0+LlxuXG5bUkVTVUxUUyBQQUdFIFVSTCBX
aW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCisgICAgICAgIGV4
cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgaGFz
IGJlZW4gZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpIHNpbmNlIGF0IGxlYXN0
IHIxMCA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA+LlxuXG5bUkVTVUxUUyBQ
QUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCiAg
ICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyMTApOiBjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywK
ICAgICB9LAogICAgIHsKQEAgLTc5LDcgKzcxLDcgQEAgY29uc3QgdGVzdENhc2VzID0gWwogICAg
ICAgICBmYWlsaW5nVGVzdHM6IFsKICAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yLmh0bWwnLAogICAgICAgICBdLAotICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAn
Y3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5k
b3dzIDcgUmVsZWFzZSAoVGVzdHMpIGluIHIxMCA8W0NIQU5HRVNFVCBVUkwgcjEwXT4uXG5cbltS
RVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI5ICgzKV0gcGFzc2Vk
XG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBm
YWlsZWRcbicsCisgICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yLmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChU
ZXN0cykgaW4gcjEwIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMD4uXG5cbltS
RVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI5ICgzKV0gcGFzc2Vk
XG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBm
YWlsZWRcbicsCiAgICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyMTApOiBjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFz
ZSAoVGVzdHMpJywKICAgICB9LAogICAgIHsKQEAgLTg4LDcgKzgwLDcgQEAgY29uc3QgdGVzdENh
c2VzID0gWwogICAgICAgICBmYWlsaW5nVGVzdHM6IFsKICAgICAgICAgICAgICdjc3MxL2Jhc2lj
L2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAogICAgICAgICBdLAotICAgICAgICBleHBlY3RlZERl
c2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIHN0YXJ0ZWQgZmFp
bGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpIGJldHdlZW4gcjkgYW5kIHIxMCAoaW5j
bHVzaXZlKS5cblxuW0xPRyBVUkwgdHJ1bmssIHI5LCByMTBdXG5cbltSRVNVTFRTIFBBR0UgVVJM
IFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4ICgyKV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdF
IFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCisgICAg
ICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0
bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgYmV0d2VlbiBy
OSBhbmQgcjEwIChpbmNsdXNpdmUpLlxuXG5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVu
az9yZXY9MTAmc3RvcF9yZXY9OVxuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFz
ZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJl
bGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVkXG4nLAogICAgICAgICBleHBlY3RlZFRpdGxl
OiAnUkVHUkVTU0lPTiAocjgtcjEwKTogY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1s
IGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCiAgICAgfSwKICAgICB7CkBA
IC05OCw3ICs5MCw3IEBAIGNvbnN0IHRlc3RDYXNlcyA9IFsKICAgICAgICAgICAgICdjc3MxL2Jh
c2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAogICAgICAgICAgICAgJ2Zhc3QvY3NzL2V4LWFm
dGVyLWZvbnQtdmFyaWFudC5odG1sJywKICAgICAgICAgXSwKLSAgICAgICAgZXhwZWN0ZWREZXNj
cmlwdGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBhbmQgZmFzdC9jc3Mv
ZXgtYWZ0ZXItZm9udC12YXJpYW50Lmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBS
ZWxlYXNlIChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNpdmUpLlxuXG5bTE9HIFVS
TCB0cnVuaywgcjksIHIxMF1cblxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2Ug
KFRlc3RzKSwgcjggKDIpXSBwYXNzZWRcbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxl
YXNlIChUZXN0cyksIHIxMCAoNSldIGZhaWxlZFxuJywKKyAgICAgICAgZXhwZWN0ZWREZXNjcmlw
dGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBhbmQgZmFzdC9jc3MvZXgt
YWZ0ZXItZm9udC12YXJpYW50Lmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxl
YXNlIChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNpdmUpLlxuXG5odHRwOi8vdHJh
Yy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9MTAmc3RvcF9yZXY9OVxuXG5bUkVTVUxUUyBQQUdF
IFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JFU1VMVFMg
UEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVkXG4nLAog
ICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogY3NzMS9iYXNpYy9j
bGFzc19hc19zZWxlY3Rvci5odG1sLCBmYXN0L2Nzcy9leC1hZnRlci1mb250LXZhcmlhbnQuaHRt
bCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLAogICAgIH0sCiAgICAgewpA
QCAtMTE0LDcgKzEwNiw3IEBAIGNvbnN0IHRlc3RDYXNlcyA9IFsKICAgICAgICAgICAgICdjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNy5odG1sJywKICAgICAgICAgICAgICdjc3MxL2Jhc2lj
L2NsYXNzX2FzX3NlbGVjdG9yOC5odG1sJywKICAgICAgICAgXSwKLSAgICAgICAgZXhwZWN0ZWRE
ZXNjcmlwdGlvbjogJ1RoZSBmb2xsb3dpbmcgdGVzdHMgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRv
d3MgNyBSZWxlYXNlIChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNpdmUpOlxuXG4g
ICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjEuaHRtbFxuICAgIGNzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3IyLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yMy5o
dG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjQuaHRtbFxuICAgIGNzczEvYmFz
aWMvY2xhc3NfYXNfc2VsZWN0b3I1Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVj
dG9yNi5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjcuaHRtbFxuICAgIGNz
czEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0bWxcblxuW0xPRyBVUkwgdHJ1bmssIHI5LCBy
MTBdXG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4ICgy
KV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCBy
MTAgKDUpXSBmYWlsZWRcbicsCisgICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdUaGUgZm9s
bG93aW5nIHRlc3RzIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMp
IGJldHdlZW4gcjkgYW5kIHIxMCAoaW5jbHVzaXZlKTpcblxuICAgIGNzczEvYmFzaWMvY2xhc3Nf
YXNfc2VsZWN0b3IxLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yMi5odG1s
XG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjMuaHRtbFxuICAgIGNzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9y
NS5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjYuaHRtbFxuICAgIGNzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I3Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yOC5odG1sXG5cbmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMCZz
dG9wX3Jldj05XG5cbltSRVNVTFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyks
IHI4ICgyKV0gcGFzc2VkXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVz
dHMpLCByMTAgKDUpXSBmYWlsZWRcbicsCiAgICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNT
SU9OIChyOC1yMTApOiA4IGNzczEvYmFzaWMgdGVzdHMgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVs
ZWFzZSAoVGVzdHMpJywKICAgICB9LAogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9UcmFjLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1RyYWMuanMKaW5kZXggMWMzNWU5ZjUzYWNjOWUx
NzBkZjA3Y2JiYWI5ZmYyNDQ5NzAwNjg2Mi4uOTAxNzFhYmM1MGE2ZTNiMmJiZmVhMGJjZjE4ZDgy
MzIzZmUxNDZkNyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1RyYWMuanMKKysrIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL1RyYWMuanMKQEAgLTIzLDc5ICsyMyw2OSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLWZ1bmN0aW9uIFRyYWMoYmFzZVVSTCkgewotICAg
IHRoaXMuYmFzZVVSTCA9IGJhc2VVUkw7Ci0gICAgdGhpcy5fY2FjaGUgPSB7fTsKLX0KK3ZhciB0
cmFjID0gdHJhYyB8fCB7fTsKKworKGZ1bmN0aW9uKCkgeworCitmdW5jdGlvbiBwYXJzZUNvbW1p
dERhdGEocmVzcG9uc2VYTUwpCit7CisgICAgdmFyIGNvbW1pdHMgPSBBcnJheS5wcm90b3R5cGUu
bWFwLmNhbGwocmVzcG9uc2VYTUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2l0ZW0nKSwgZnVuY3Rp
b24oaXRlbSkgeworICAgICAgICB2YXIgdGl0bGUgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdOYW1l
KCd0aXRsZScpWzBdLnRleHRDb250ZW50OworICAgICAgICB2YXIgcmV2aXNpb24gPSBwYXJzZUlu
dCgvXlJldmlzaW9uIChcZCspOi8uZXhlYyh0aXRsZSlbMV0sIDEwKTsKIAotVHJhYy5wcm90b3R5
cGUgPSB7Ci0gICAgY2hhbmdlc2V0VVJMOiBmdW5jdGlvbihyZXZpc2lvbikgewotICAgICAgICBy
ZXR1cm4gdGhpcy5iYXNlVVJMICsgJ2NoYW5nZXNldC8nICsgcmV2aXNpb247Ci0gICAgfSwKLQot
ICAgIGdldENvbW1pdERhdGFGb3JSZXZpc2lvblJhbmdlOiBmdW5jdGlvbihwYXRoLCBzdGFydFJl
dmlzaW9uLCBlbmRSZXZpc2lvbiwgY2FsbGJhY2spIHsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNv
dWxkIHRyeSB0byBiZSBzbWFydGVyIGFuZCBjYWNoZSBpbmRpdmlkdWFsIGNvbW1pdHMsIGJ1dCBp
biBwcmFjdGljZSB3ZSBqdXN0Ci0gICAgICAgIC8vIGdldCBjYWxsZWQgd2l0aCB0aGUgc2FtZSBw
YXJhbWV0ZXJzIG92ZXIgYW5kIG92ZXIuCi0gICAgICAgIHZhciBjYWNoZUtleSA9ICdnZXRDb21t
aXREYXRhRm9yUmV2aXNpb25SYW5nZS4nICsgW3BhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlz
aW9uXS5qb2luKCcuJyk7Ci0gICAgICAgIGlmIChjYWNoZUtleSBpbiB0aGlzLl9jYWNoZSkgewot
ICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fY2FjaGVbY2FjaGVLZXldKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjYWxsYmFja3NDYWNoZUtleSA9ICdj
YWxsYmFja3MuJyArIGNhY2hlS2V5OwotICAgICAgICBpZiAoY2FsbGJhY2tzQ2FjaGVLZXkgaW4g
dGhpcy5fY2FjaGUpIHsKLSAgICAgICAgICAgIHRoaXMuX2NhY2hlW2NhbGxiYWNrc0NhY2hlS2V5
XS5wdXNoKGNhbGxiYWNrKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMuX2NhY2hlW2NhbGxiYWNrc0NhY2hlS2V5XSA9IFtjYWxsYmFja107Ci0KLSAgICAg
ICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgIGZ1bmN0aW9uIGNhY2hlUmVzdWx0c0FuZENh
bGxDYWxsYmFja3MoY29tbWl0cykgewotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXld
ID0gY29tbWl0czsKLQotICAgICAgICAgICAgdmFyIGNhbGxiYWNrcyA9IHNlbGYuX2NhY2hlW2Nh
bGxiYWNrc0NhY2hlS2V5XTsKLSAgICAgICAgICAgIGRlbGV0ZSBzZWxmLl9jYWNoZVtjYWxsYmFj
a3NDYWNoZUtleV07Ci0KLSAgICAgICAgICAgIGNhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKGNh
bGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soY29tbWl0cyk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIGdldFJlc291cmNlKHNlbGYubG9nVVJMKCd0cnVu
aycsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCB0cnVlLCB0cnVlKSwgZnVuY3Rpb24oeGhy
KSB7Ci0gICAgICAgICAgICB2YXIgY29tbWl0cyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh4
aHIucmVzcG9uc2VYTUwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2l0ZW0nKSwgZnVuY3Rpb24oaXRl
bSkgewotICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3RpdGxlJylbMF0udGV4dENvbnRlbnQ7Ci0gICAgICAgICAgICAgICAgdmFyIHJldmlzaW9u
ID0gcGFyc2VJbnQoL15SZXZpc2lvbiAoXGQrKTovLmV4ZWModGl0bGUpWzFdLCAxMCk7Ci0KLSAg
ICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci0gICAgICAgICAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGl0ZW0uZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2Rlc2NyaXB0aW9uJylbMF0udGV4dENvbnRlbnQ7Ci0KLSAgICAgICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICByZXZpc2lvbjogcmV2aXNpb24sCi0g
ICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgaXNuJ3QgYSB2ZXJ5IGhpZ2gtZmlkZWxpdHkgcmVwcm9kdWN0aW9uIG9mIHRo
ZSBjb21taXQgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGl0J3MgZ29vZCBl
bm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY29u
dGFpbmVyLmlubmVyVGV4dCwKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSk7Ci0K
LSAgICAgICAgICAgIGNhY2hlUmVzdWx0c0FuZENhbGxDYWxsYmFja3MoY29tbWl0cyk7Ci0gICAg
ICAgIH0sCi0gICAgICAgIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgY2FjaGVSZXN1bHRz
QW5kQ2FsbENhbGxiYWNrcyhbXSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBsb2dVUkw6
IGZ1bmN0aW9uKHBhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBzaG93RnVsbENvbW1p
dExvZ3MsIGZvcm1hdEFzUlNTKSB7Ci0gICAgICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB7Ci0g
ICAgICAgICAgICByZXY6IGVuZFJldmlzaW9uLAotICAgICAgICAgICAgc3RvcF9yZXY6IHN0YXJ0
UmV2aXNpb24sCisgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGl0ZW0uZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2Rlc2NyaXB0aW9uJylbMF0udGV4dENvbnRlbnQ7CisKKyAgICAgICAgcmV0dXJu
IHsKKyAgICAgICAgICAgIHJldmlzaW9uOiByZXZpc2lvbiwKKyAgICAgICAgICAgIHRpdGxlOiB0
aXRsZSwKKyAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IGEgdmVyeSBoaWdoLWZpZGVs
aXR5IHJlcHJvZHVjdGlvbiBvZiB0aGUgY29tbWl0IG1lc3NhZ2UsCisgICAgICAgICAgICAvLyBi
dXQgaXQncyBnb29kIGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzLgorICAgICAgICAgICAgbWVzc2Fn
ZTogY29udGFpbmVyLmlubmVyVGV4dCwKICAgICAgICAgfTsKLSAgICAgICAgaWYgKHNob3dGdWxs
Q29tbWl0TG9ncykKLSAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycy52ZXJib3NlID0gJ29uJzsK
LSAgICAgICAgaWYgKGZvcm1hdEFzUlNTKQotICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLmZv
cm1hdCA9ICdyc3MnOwotICAgICAgICByZXR1cm4gYWRkUXVlcnlQYXJhbWV0ZXJzVG9VUkwodGhp
cy5iYXNlVVJMICsgJ2xvZy8nICsgcGF0aCwgcXVlcnlQYXJhbWV0ZXJzKTsKLSAgICB9LAorICAg
IH0pOworCisgICAgcmV0dXJuIGNvbW1pdHM7Cit9CisKK3ZhciBnX2NhY2hlID0gbmV3IGJhc2Uu
QXN5bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgeworICAgIHZhciBleHBs
b2RlZEtleSA9IGtleS5zcGxpdCgnXG4nKTsKKworICAgIHZhciBwYXRoID0gZXhwbG9kZWRLZXlb
MF07CisgICAgdmFyIHN0YXJ0UmV2aXNpb24gPSBleHBsb2RlZEtleVsxXTsKKyAgICB2YXIgZW5k
UmV2aXNpb24gPSBleHBsb2RlZEtleVsyXTsKKworICAgIHZhciB1cmwgPSB0cmFjLmxvZ1VSTChw
YXRoLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAkLmdl
dCh1cmwsIGZ1bmN0aW9uKGNvbW1pdERhdGEpIHsKKyAgICAgICAgY2FsbGJhY2socGFyc2VDb21t
aXREYXRhKGNvbW1pdERhdGEpKTsKKyAgICB9KTsKK30pOworCit0cmFjLmNoYW5nZXNldFVSTCA9
IGZ1bmN0aW9uKHJldmlzaW9uKQoreworICAgIHJldHVybiBjb25maWcua1RyYWNVUkwgKyAnL2No
YW5nZXNldC8nICsgcmV2aXNpb247CiB9OworCit0cmFjLmxvZ1VSTCA9IGZ1bmN0aW9uKHBhdGgs
IHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBzaG93RnVsbENvbW1pdExvZ3MsIGZvcm1hdEFz
UlNTKQoreworICAgIHZhciBxdWVyeVBhcmFtZXRlcnMgPSB7CisgICAgICAgIHJldjogZW5kUmV2
aXNpb24sCisgICAgICAgIHN0b3BfcmV2OiBzdGFydFJldmlzaW9uLAorICAgIH07CisKKyAgICBp
ZiAoc2hvd0Z1bGxDb21taXRMb2dzKQorICAgICAgICBxdWVyeVBhcmFtZXRlcnMudmVyYm9zZSA9
ICdvbic7CisgICAgaWYgKGZvcm1hdEFzUlNTKQorICAgICAgICBxdWVyeVBhcmFtZXRlcnMuZm9y
bWF0ID0gJ3Jzcyc7CisKKyAgICByZXR1cm4gY29uZmlnLmtUcmFjVVJMICsgJy9sb2cvJyArIHBh
dGggKyAnPycgKyAkLnBhcmFtKHF1ZXJ5UGFyYW1ldGVycyk7Cit9OworCit0cmFjLmNvbW1pdERh
dGFGb3JSZXZpc2lvblJhbmdlID0gZnVuY3Rpb24ocGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2
aXNpb24sIGNhbGxiYWNrKQoreworICAgIHZhciBrZXkgPSBbcGF0aCwgc3RhcnRSZXZpc2lvbiwg
ZW5kUmV2aXNpb25dLmpvaW4oJ1xuJyk7CisgICAgZ19jYWNoZS5nZXQoa2V5LCBjYWxsYmFjayk7
Cit9OworCit9KSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1ZpZXdDb250cm9sbGVy
LmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL1ZpZXdDb250cm9sbGVyLmpzCmluZGV4IDUzMGRjNzg2NDU3
MjJmNzZjZjkyNTU3MWQ2YWFiZjk5NTkwYzc2MzcuLjE3NTRjMzYyYjllNGY1MDQxMTMyZmMwMjgz
MjRmOTU3NGZjNzE4MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9WaWV3Q29udHJvbGxl
ci5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVmlld0NvbnRyb2xsZXIuanMKQEAgLTIzLDEwICsy
Myw5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZnVuY3Rp
b24gVmlld0NvbnRyb2xsZXIoYnVpbGRib3QsIGJ1Z3ppbGxhLCB0cmFjKSB7CitmdW5jdGlvbiBW
aWV3Q29udHJvbGxlcihidWlsZGJvdCwgYnVnemlsbGEpIHsKICAgICB0aGlzLl9idWlsZGJvdCA9
IGJ1aWxkYm90OwogICAgIHRoaXMuX2J1Z3ppbGxhID0gYnVnemlsbGE7Ci0gICAgdGhpcy5fdHJh
YyA9IHRyYWM7CiAgICAgdGhpcy5fbmF2aWdhdGlvbklEID0gMDsKIAogICAgIHZhciBzZWxmID0g
dGhpczsKQEAgLTEwNCw3ICsxMDMsNyBAQCBWaWV3Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JSZWdyZXNzaW9uUmFu
Z2UoYnVpbGRlciwgYnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVz
KSk7CiAKICAgICAgICAgICAgICAgICBpZiAocGFzc2luZ0J1aWxkTmFtZSB8fCAhc3RpbGxGZXRj
aGluZ0RhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJ1Z0Zvcm0gPSBuZXcgRmFpbGlu
Z1Rlc3RzQnVnRm9ybShzZWxmLl9idWd6aWxsYSwgc2VsZi5fdHJhYywgYnVpbGRlciwgYnVpbGRO
YW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVzKTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGJ1Z0Zvcm0gPSBuZXcgRmFpbGluZ1Rlc3RzQnVnRm9ybShzZWxmLl9idWd6aWxs
YSwgYnVpbGRlciwgYnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWlsaW5nVGVzdE5hbWVz
KTsKICAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JOZXdB
bmRFeGlzdGluZ0J1Z3MoYnVpbGRlciwgZmFpbGluZ1Rlc3ROYW1lcywgYnVnRm9ybSkpCiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CkBAIC0xOTgsMTQgKzE5NywxNCBAQCBWaWV3
Q29udHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYScpOwogICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQobGluayk7CiAKLSAg
ICAgICAgbGluay5ocmVmID0gdGhpcy5fdHJhYy5sb2dVUkwoJ3RydW5rJywgZmlyc3RTdXNwZWN0
UmV2aXNpb24sIGxhc3RTdXNwZWN0UmV2aXNpb24sIHRydWUpOworICAgICAgICBsaW5rLmhyZWYg
PSB0cmFjLmxvZ1VSTCgndHJ1bmsnLCBmaXJzdFN1c3BlY3RSZXZpc2lvbiwgbGFzdFN1c3BlY3RS
ZXZpc2lvbiwgdHJ1ZSk7CiAgICAgICAgIGxpbmsuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJ1ZpZXcgcmVncmVzc2lvbiByYW5nZSBpbiBUcmFjJykpOwogCiAgICAgICAgIHN1
c3BlY3RzQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdTZWFy
Y2hpbmcgZm9yIHN1c3BlY3QgcmV2aXNpb25zXHUyMDI2JykpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBNYXliZSBzb21lIG9mIHRoaXMgY29kZSBzaG91bGQgZ28gaW4gTGF5b3V0VGVzdEhpc3RvcnlB
bmFseXplciwgb3Igc29tZSBvdGhlciBjbGFzcz8KICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot
ICAgICAgICBzZWxmLl90cmFjLmdldENvbW1pdERhdGFGb3JSZXZpc2lvblJhbmdlKCd0cnVuaycs
IGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0U3VzcGVjdFJldmlzaW9uLCBmdW5jdGlvbihjb21t
aXRzKSB7CisgICAgICAgIHRyYWMuZ2V0Q29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UoJ3RydW5r
JywgZmlyc3RTdXNwZWN0UmV2aXNpb24sIGxhc3RTdXNwZWN0UmV2aXNpb24sIGZ1bmN0aW9uKGNv
bW1pdHMpIHsKICAgICAgICAgICAgIHZhciBmYWlsaW5nVGVzdE5hbWVzV2l0aG91dEV4dGVuc2lv
bnMgPSBmYWlsaW5nVGVzdE5hbWVzLm1hcChyZW1vdmVQYXRoRXh0ZW5zaW9uKTsKICAgICAgICAg
ICAgIHZhciBzdXNwZWN0Q29tbWl0cyA9IGNvbW1pdHMuZmlsdGVyKGZ1bmN0aW9uKGNvbW1pdCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBmYWlsaW5nVGVzdE5hbWVzV2l0aG91dEV4dGVuc2lv
bnMuc29tZShmdW5jdGlvbih0ZXN0TmFtZSkgewpAQCAtMjM0LDcgKzIzMyw3IEBAIFZpZXdDb250
cm9sbGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB2YXIgbGluayA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGxp
bmspOwogCi0gICAgICAgICAgICAgICAgbGluay5ocmVmID0gc2VsZi5fdHJhYy5jaGFuZ2VzZXRV
UkwoY29tbWl0LnJldmlzaW9uKTsKKyAgICAgICAgICAgICAgICBsaW5rLmhyZWYgPSB0cmFjLmNo
YW5nZXNldFVSTChjb21taXQucmV2aXNpb24pOwogICAgICAgICAgICAgICAgIGxpbmsuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29tbWl0LnRpdGxlKSkKIAogICAgICAgICAg
ICAgICAgIHJldHVybiBpdGVtOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Jhc2UuanMg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvYmFzZS5qcwppbmRleCA0N2YyNjIyMjBhNGE3YWNkM2ZlOTEyNjIz
MDk2YWU2ZDJlMGRlYmRmLi4xZjVhY2EyYzhlOWZiMzA2MzIyNGE1NThmMzVjY2NmMDYxMzRkNjli
IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvYmFzZS5qcworKysgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvYmFzZS5qcwpAQCAtMTQ2LDQgKzE0Niw0MCBAQCBiYXNlLkNhbGxiYWNrSXRlcmF0b3IucHJv
dG90eXBlLmNhbGxQcmV2aW91cyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9jYWxsYmFjay5hcHBs
eShudWxsLCBhcmdzKTsKIH07CiAKK2Jhc2UuQXN5bmNocm9ub3VzQ2FjaGUgPSBmdW5jdGlvbihm
ZXRjaCkKK3sKKyAgICB0aGlzLl9mZXRjaCA9IGZldGNoOworICAgIHRoaXMuX2RhdGFDYWNoZSA9
IHt9OworICAgIHRoaXMuX2NhbGxiYWNrQ2FjaGUgPSB7fTsKK307CisKK2Jhc2UuQXN5bmNocm9u
b3VzQ2FjaGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spCit7CisgICAg
dmFyIHNlbGYgPSB0aGlzOworCisgICAgaWYgKHNlbGYuX2RhdGFDYWNoZVtrZXldKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBDb25zaWRlciBhbHdheXMgY2FsbGluZyBjYWxsYmFjayBhc3luY2hyb25v
dXNseS4KKyAgICAgICAgY2FsbGJhY2soc2VsZi5fZGF0YUNhY2hlW2tleV0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaWYgKGtleSBpbiBzZWxmLl9jYWxsYmFja0NhY2hlKSB7Cisg
ICAgICAgIHRoaXMuX2NhbGxiYWNrQ2FjaGVba2V5XS5wdXNoKGNhbGxiYWNrKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNlbGYuX2NhbGxiYWNrQ2FjaGVba2V5XSA9IFtjYWxsYmFj
a107CisKKyAgICBzZWxmLl9mZXRjaC5jYWxsKG51bGwsIGtleSwgZnVuY3Rpb24oZGF0YSkgewor
ICAgICAgICBzZWxmLl9kYXRhQ2FjaGVba2V5XSA9IGRhdGE7CisKKyAgICAgICAgdmFyIGNhbGxi
YWNrTGlzdCA9IHNlbGYuX2NhbGxiYWNrQ2FjaGVba2V5XTsKKyAgICAgICAgZGVsZXRlIHNlbGYu
X2NhbGxiYWNrQ2FjaGVba2V5XTsKKworICAgICAgICAkLmVhY2goY2FsbGJhY2tMaXN0LCBmdW5j
dGlvbihpbmRleCwgY2FjaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIGNhY2hlZENhbGxiYWNr
KGRhdGEpOworICAgICAgICB9KTsKKyAgICB9KTsKK307CisKIH0pKCk7CmRpZmYgLS1naXQgYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvY29uZmlnLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2NvbmZpZy5qcwppbmRl
eCBhNzI5ZDc0ZjQ0NmVjNmM1NzdmZWFlOTc1MWRkYjI2YjY0ZGI0MDA2Li41M2QyMmM4YmY1MTkz
MGFlYWE1Y2Q3NGIzYTgxZmNlNGIxODllZjdmIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
Y29uZmlnLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9jb25maWcuanMKQEAgLTI5LDYgKzI5LDgg
QEAgY29uZmlnLmtCdWlsZGVyc1RoYXRPbmx5Q29tcGlsZSA9IFsKICAgICAnTWFjIENsYW5nIEJ1
aWxkZXIgKGRiZyknLAogXTsKIAorY29uZmlnLmtUcmFjVVJMID0gJ2h0dHA6Ly90cmFjLndlYmtp
dC5vcmcnOworCiBjb25maWcua1Rlc3ROYW1lQXR0ciA9ICdkYXRhLXRlc3QtbmFtZSc7CiBjb25m
aWcua0J1aWxkZXJOYW1lQXR0ciA9ICdkYXRhLWJ1aWxkZXItbmFtZSc7CiBjb25maWcua0ZhaWx1
cmVDb3VudEF0dHIgPSAnZGF0YS1mYWlsdXJlLWNvdW50JzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9pbmRleC5odG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKaW5kZXggOTEz
NjVjODIyMWI3Zjc1ZmFlNThjYTcyNzc3MTg4NzMyM2JjOTY3ZS4uYmJiODhkZjZlOGNiZjc3NGEy
Y2IwNmU1OWM3M2IzNjVkNTJiNDk2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4
Lmh0bWwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKQEAgLTI3LDYgKzI3LDEyIEBA
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDxodG1sPgogPGhlYWQ+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJUZXN0RmFpbHVyZXMuY3NzIj48L2xpbms+CisgICAg
PHNjcmlwdCBzcmM9Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5
LzEuNC4yL2pxdWVyeS5taW4uanMiPjwvc2NyaXB0PgorCisgICAgPHNjcmlwdCBzcmM9ImNvbmZp
Zy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9ImJhc2UuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJUcmFjLmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJVdGls
aXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJOZXdCdWdGb3JtLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVGVzdFJlbGF0ZWRCdWdGb3JtLmpzIj48L3NjcmlwdD4K
QEAgLTQyLDEyICs0OCwxMSBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAg
PHNjcmlwdCBzcmM9Ik5SV1RSZXN1bHRzUGFyc2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iT1JXVFJlc3VsdHNQYXJzZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQ
ZXJzaXN0ZW50Q2FjaGUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJUcmFjLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJXZWJLaXRCdWd6aWxsYS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IldlYktpdEJ1aWxkYm90LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0PgotICAgICAg
ICB2YXIgdmlld0NvbnRyb2xsZXIgPSBuZXcgVmlld0NvbnRyb2xsZXIobmV3IFdlYktpdEJ1aWxk
Ym90KCksIG5ldyBCdWd6aWxsYSgnaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvJyksIG5ldyBUcmFj
KCdodHRwOi8vdHJhYy53ZWJraXQub3JnLycpKTsKKyAgICAgICAgdmFyIHZpZXdDb250cm9sbGVy
ID0gbmV3IFZpZXdDb250cm9sbGVyKG5ldyBXZWJLaXRCdWlsZGJvdCgpLCBuZXcgQnVnemlsbGEo
J2h0dHBzOi8vYnVncy53ZWJraXQub3JnLycpKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Jlc3VsdHMuanMgYi9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvcmVzdWx0cy5qcwppbmRleCAyYjliZDVmNzNmMGNiNGFjMTNiN2E2OTExYmZhNTIzNDU1
N2ZiMmY1Li4zMDgxY2U0OGIxM2RjY2FjNTI5ODJkMmU3OGI0ZWRiZmE0OTk5Zjk2IDEwMDY0NAot
LS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVzdWx0cy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmVz
dWx0cy5qcwpAQCAtMTU3LDM0ICsxNTcsOSBAQCBmdW5jdGlvbiBkaXJlY3RvcnlPZlJlc3VsdHNT
dW1tYXJ5VVJMKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSkKICAgICByZXR1cm4ga1Rlc3RSZXN1bHRz
UXVlcnkgKyAkLnBhcmFtKHBhcmFtZXRlcnMpOwogfQogCi1mdW5jdGlvbiBSZXN1bHRzQ2FjaGUo
KQotewotICAgIHRoaXMuX2NhY2hlID0ge307Ci19Ci0KLVJlc3VsdHNDYWNoZS5wcm90b3R5cGUu
X2ZldGNoID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykKLXsKLSAgICB2YXIgc2VsZiA9IHRoaXM7
Ci0KLSAgICB2YXIgdXJsID0ga1Rlc3RSZXN1bHRzU2VydmVyICsgJ3Rlc3RmaWxlP2tleT0nICsg
a2V5OwotICAgIGJhc2UuanNvbnAodXJsLCBmdW5jdGlvbiAocmVzdWx0c1RyZWUpIHsKLSAgICAg
ICAgc2VsZi5fY2FjaGVba2V5XSA9IHJlc3VsdHNUcmVlOwotICAgICAgICBjYWxsYmFjayhyZXN1
bHRzVHJlZSk7Ci0gICAgfSk7Ci19OwotCi0vLyBXYXJuaW5nISBUaGlzIGZ1bmN0aW9uIGNhbiBj
YWxsIGNhbGxiYWNrIGVpdGhlciBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5LgotLy8g
RklYTUU6IENvbnNpZGVyIHVzaW5nIHNldFRpbWVvdXQgdG8gbWFrZSB0aGlzIG1ldGhvZCBhbHdh
eXMgYXN5bmNocm9ub3VzLgotUmVzdWx0c0NhY2hlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihr
ZXksIGNhbGxiYWNrKQotewotICAgIGlmICh0aGlzLl9jYWNoZVtrZXldKSB7Ci0gICAgICAgIGNh
bGxiYWNrKHRoaXMuX2NhY2hlW2tleV0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHRo
aXMuX2ZldGNoKGtleSwgY2FsbGJhY2spOwotfTsKLQotdmFyIGdfcmVzdWx0c0NhY2hlID0gbmV3
IFJlc3VsdHNDYWNoZSgpOwordmFyIGdfcmVzdWx0c0NhY2hlID0gbmV3IGJhc2UuQXN5bmNocm9u
b3VzQ2FjaGUoZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgeworICAgIGJhc2UuanNvbnAoa1Rlc3RS
ZXN1bHRzU2VydmVyICsgJ3Rlc3RmaWxlP2tleT0nICsga2V5LCBjYWxsYmFjayk7Cit9KTsKIAog
ZnVuY3Rpb24gYW55SXNGYWlsdXJlKHJlc3VsdHNMaXN0KQogewpkaWZmIC0tZ2l0IGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3J1bi11bml0dGVzdHMuaHRtbCBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRl
c3RzLmh0bWwKaW5kZXggMTU4ZDA4ZjFhMDE5ZjI4NGYzY2E1Zjg4NDBiMzQ3OGMzODkzYjZkMC4u
YTkyYjNkYjNlMWY4MDVhNmJkMmJmY2M2MTNlZmJmY2U3NGE3ZWE2OCAxMDA2NDQKLS0tIGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3J1bi11bml0dGVzdHMuaHRtbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVu
LXVuaXR0ZXN0cy5odG1sCkBAIC0xMSw2ICsxMSwxOSBAQAogPGRpdiBpZD0icXVuaXQtdGVzdHJ1
bm5lci10b29sYmFyIj48L2Rpdj4KIDxoMiBpZD0icXVuaXQtdXNlckFnZW50Ij48L2gyPgogPG9s
IGlkPSJxdW5pdC10ZXN0cyI+PC9vbD4KKworPHNjcmlwdCBzcmM9ImNvbmZpZy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iYmFzZV91
bml0dGVzdHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IlRyYWMuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InRyYWNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJj
aGVja291dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY2hlY2tvdXRfdW5pdHRlc3RzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXN1bHRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXN1bHRzX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idWkuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InVpX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CisKIDwh
LS0gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRlc3RzIGZvciB0aGVzZSBmaWxlcyEgLS0+CiA8c2Ny
aXB0IHNyYz0iQnVnemlsbGEuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldlYktpdEJ1Z3pp
bGxhLmpzIj48L3NjcmlwdD4KQEAgLTM5LDE0ICs1Miw1IEBACiA8c2NyaXB0IHNyYz0iQnVpbGRl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iQnVpbGRlcl91bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgogCi08c2NyaXB0IHNyYz0iY29uZmlnLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJi
YXNlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiYXNlX3VuaXR0ZXN0cy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iY2hlY2tvdXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9ImNo
ZWNrb3V0X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzdWx0cy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzdWx0c191bml0dGVzdHMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9InVpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJ1aV91bml0dGVzdHMu
anMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJlNzI2ODAzZTI5MTZlNGI0MjI3YjM5ZTY1Yzk0
N2Y4OTlmODEyNWEuLjUzNzg3ZGE0MjNlNTdjYzMwMDY3MGI4NWQ3MGU5ZmQ5YTNlZDkzNmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsNSAr
MSwzMiBAQAogMjAxMS0wNy0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisg
ICAgICAgIFJlZmFjdG9yIFRyYWMuanMgZm9yIHVzZSBpbiBnYXJkZW4tby1tYXRpYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ5OTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZmFj
dG9ycyBUcmFjLmpzIHRvIG1hdGNoIHRoZSBhcmNoaXRlY3R1cmUgYW5kIHN0eWxlIG9mCisgICAg
ICAgIGdhcmRlbi1vLW1hdGljLiAgSSd2ZSBhbHNvIGZhY3RvcmVkIEFzeW5jaHJvbm91c0NhY2hl
IG91dCBvZiBUcmFjIChhbmQKKyAgICAgICAgbW92ZWQgaXQgdG8gYmFzZSkgYmVjYXVzZSBpdCB3
YXMgcmVkdW5kYW50IHdpdGggc29tZSBvdGhlciBjb2RlIHdlCisgICAgICAgIGFscmVhZHkgaGFk
LgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm0uanM6CisgICAgICAg
IChGYWlsaW5nVGVzdHNCdWdGb3JtKToKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvRmFpbGluZ1Rlc3Rz
QnVnRm9ybV91bml0dGVzdHMuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1RyYWMuanM6CisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL1ZpZXdDb250cm9sbGVyLmpzOgorICAgICAgICAoVmlld0NvbnRyb2xs
ZXIucHJvdG90eXBlLl9kaXNwbGF5QnVpbGRlci5zdGFydCk6CisgICAgICAgIChWaWV3Q29udHJv
bGxlci5wcm90b3R5cGUuX2Rpc3BsYXlCdWlsZGVyKToKKyAgICAgICAgKFZpZXdDb250cm9sbGVy
LnByb3RvdHlwZS5fZG9tRm9yUmVncmVzc2lvblJhbmdlLnRyYWMuZ2V0Q29tbWl0RGF0YUZvclJl
dmlzaW9uUmFuZ2UpOgorICAgICAgICAoVmlld0NvbnRyb2xsZXIucHJvdG90eXBlLl9kb21Gb3JS
ZWdyZXNzaW9uUmFuZ2UpOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9iYXNlLmpzOgorICAgICAgICAq
IEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9jb25maWcuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWw6Cisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3Jlc3VsdHMuanM6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3J1bi11
bml0dGVzdHMuaHRtbDoKKworMjAxMS0wNy0yMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCiAgICAgICAgIE1lcmdlIFRlc3RGYWlsdXJlcyBhbmQgZ2FyZGVuLW8tbWF0aWMgdW5p
dCB0ZXN0cyBoYXJuZXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NDk4NAogCg==
</data>
<flag name="review"
          id="96659"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>