<?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>89744</bug_id>
          
          <creation_ts>2012-06-22 00:18:10 -0700</creation_ts>
          <short_desc>Use testRunner instead of layoutTestController in fast/hidpi, history, html, images, inline, inline-block, innerHTML, inspector-support, invalid tests</short_desc>
          <delta_ts>2012-07-14 01:23:35 -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>
          <dependson>88210</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655285</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 00:18:10 -0700</bug_when>
    <thetext>Use testRunner instead of layoutTestController in fast/hidpi, history, html, images, inline, inline-block, innerHTML, inspector-support, invalid tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655286</commentid>
    <comment_count>1</comment_count>
      <attachid>148973</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 00:19:34 -0700</bug_when>
    <thetext>Created attachment 148973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655291</commentid>
    <comment_count>2</comment_count>
      <attachid>148973</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-22 00:26:27 -0700</bug_when>
    <thetext>Comment on attachment 148973
Patch

Looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655294</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 00:30:37 -0700</bug_when>
    <thetext>Thanks a lot for reviewing these patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655306</commentid>
    <comment_count>4</comment_count>
      <attachid>148973</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 01:52:47 -0700</bug_when>
    <thetext>Comment on attachment 148973
Patch

Clearing flags on attachment: 148973

Committed r121012: &lt;http://trac.webkit.org/changeset/121012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655307</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-22 01:52:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148973</attachid>
            <date>2012-06-22 00:19:34 -0700</date>
            <delta_ts>2012-06-22 01:52:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89744-20120622001933.patch</filename>
            <type>text/plain</type>
            <size>152539</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMTAwOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE5MiBAQAorMjAxMi0wNi0yMiAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgdGVzdFJ1bm5lciBpbnN0ZWFkIG9mIGxh
eW91dFRlc3RDb250cm9sbGVyIGluIGZhc3QvaGlkcGksIGhpc3RvcnksIGh0bWwsIGltYWdlcywg
aW5saW5lLCBpbmxpbmUtYmxvY2ssIGlubmVySFRNTCwgaW5zcGVjdG9yLXN1cHBvcnQsIGludmFs
aWQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5NzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2hpZHBpL2Jyb2tlbi1pbWFnZS1pY29uLWhpZHBpLmh0bWw6CisgICAgICAgICogZmFz
dC9oaWRwaS9icm9rZW4taW1hZ2Utd2l0aC1zaXplLWhpZHBpLmh0bWw6CisgICAgICAgICogZmFz
dC9oaWRwaS9jbGlwLXRleHQtaW4taGlkcGkuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpZHBpL2Rl
dmljZS1zY2FsZS1mYWN0b3ItcGFpbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpZHBpL2ZvY3Vz
LXJpbmdzLmh0bWw6CisgICAgICAgICogZmFzdC9oaWRwaS9pbWFnZS1zZXQtYXMtYmFja2dyb3Vu
ZC5odG1sOgorICAgICAgICAqIGZhc3QvaGlkcGkvaW1hZ2Utc2V0LWJhY2tncm91bmQtZHluYW1p
Yy5odG1sOgorICAgICAgICAqIGZhc3QvaGlkcGkvaW1hZ2Utc2V0LWJhY2tncm91bmQtcmVwZWF0
LXdpdGhvdXQtc2l6ZS5odG1sOgorICAgICAgICAqIGZhc3QvaGlkcGkvaW1hZ2Utc2V0LWJhY2tn
cm91bmQtcmVwZWF0Lmh0bWw6CisgICAgICAgICogZmFzdC9oaWRwaS9pbWFnZS1zZXQtYm9yZGVy
LWltYWdlLWNvbXBhcmlzb24uaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpZHBpL2ltYWdlLXNldC1i
b3JkZXItaW1hZ2UtZHluYW1pYy5odG1sOgorICAgICAgICAqIGZhc3QvaGlkcGkvaW1hZ2Utc2V0
LWJvcmRlci1pbWFnZS1zaW1wbGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpZHBpL2ltYWdlLXNl
dC1pbi1jb250ZW50LWR5bmFtaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpZHBpL2ltYWdlLXNl
dC1vdXQtb2Ytb3JkZXIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpZHBpL2ltYWdlLXNldC1zaW1w
bGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpZHBpL2ltYWdlLXNldC13aXRob3V0LXNwZWNpZmll
ZC13aWR0aC5odG1sOgorICAgICAgICAqIGZhc3QvaGlkcGkvcmVzaXplLWNvcm5lci1oaWRwaS5o
dG1sOgorICAgICAgICAqIGZhc3QvaGlkcGkvdmlkZW8tY29udHJvbHMtaW4taGlkcGkuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2hpc3RvcnkvYmFjay1mb3J3YXJkLXJlc2V0LWFmdGVyLWVycm9yLWhh
bmRsaW5nLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L2Zvcm0tc3VibWl0LWluLWZyYW1l
LXZpYS1vbmNsaWNrLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L2Zvcm0tc3VibWl0LWlu
LWZyYW1lLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L2ZvcndhcmQtZHVyaW5nLWxvYWQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWZvcm0t
c3VibWl0Lmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9h
ZC1sb2NhdGlvbi1ocmVmLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L2dvLWJhY2stdG8t
Y2hhbmdlZC1uYW1lLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L2hpc3RvcnktYmFjay1p
bml0aWFsLXZzLWZpbmFsLXVybC5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9oaXN0b3J5
LWJhY2stdHdpY2Utd2l0aC1zdWJmcmFtZXMtYXNzZXJ0Lmh0bWw6CisgICAgICAgICogZmFzdC9o
aXN0b3J5L2hpc3RvcnktYmFjay13aXRoaW4tc3ViZnJhbWUtaGFzaC5odG1sOgorICAgICAgICAq
IGZhc3QvaGlzdG9yeS9oaXN0b3J5LWJhY2std2l0aGluLXN1YmZyYW1lLXVybC5odG1sOgorICAg
ICAgICAqIGZhc3QvaGlzdG9yeS9oaXN0b3J5LWxlbmd0aC5odG1sOgorICAgICAgICAqIGZhc3Qv
aGlzdG9yeS9oaXN0b3J5LXJlcGxhY2UtdXBkYXRlcy1jdXJyZW50LWl0ZW0uaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2hpc3RvcnkvaGlzdG9yeS1zdWJmcmFtZS13aXRoLW5hbWUuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2hpc3RvcnkvaGlzdG9yeV9yZWxvYWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hp
c3RvcnkvbG9jYXRpb24tcmVwbGFjZS1oYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5
L211bHRpcGxlLWNsYXNzZXMtdmlzaXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9u
ZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L3JlZGlyZWN0
LXZpYS1pZnJhbWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2NsaWNr
ZWQtbGluay1pcy12aXNpdGVkLTIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvcmVzb3Vy
Y2VzL2hpc3RvcnktYmFjay13aXRoaW4tc3ViZnJhbWUtaGFzaC0yLmh0bWw6CisgICAgICAgICog
ZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5LXJlcGxhY2UtdXBkYXRlcy1jdXJyZW50LWl0
ZW0tZG9uZS5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9yZXNvdXJjZXMvaGlzdG9yeV9y
ZWxvYWRfd2luZG93Lmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9yZWRp
cmVjdC10YXJnZXQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1p
ZnJhbWVzLWNoYW5naW5nLWZyYWdtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L3Nh
bWUtZG9jdW1lbnQtaWZyYW1lcy1jaGFuZ2luZy1wdXNoc3RhdGUuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWw6CisgICAgICAg
ICogZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFmdGVyLWZyYW1lLW5hdi5odG1sOgorICAgICAg
ICAqIGZhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hp
c3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkv
dGltZWQtcmVmcmVzaC1pbi1jYWNoZWQtZnJhbWUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3Rv
cnkvdmlzaXRlZC1nZW5lcmF0ZWQtY29udGVudC10ZXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9o
aXN0b3J5L3Zpc2l0ZWQtbGluay1iYWNrZ3JvdW5kLWNvbG9yLmh0bWw6CisgICAgICAgICogZmFz
dC9oaXN0b3J5L3dpbmRvdy1vcGVuLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2Fkb3B0LXBh
cmVudC1mcmFtZS5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9ib2R5LW9mZnNldC1wcm9wZXJ0
aWVzLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2NyYXNoLXN0eWxlLWZpcnN0LWxldHRlci5o
dG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTEtYW5kLWNsaWNr
Lmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1bW1hcnktMTAtYW5kLWNs
aWNrLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1bW1hcnktMi1hbmQt
Y2xpY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L2h0bWwvZGV0YWlscy1hZGQtc3VtbWFyeS0zLWFu
ZC1jbGljay5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTQt
YW5kLWNsaWNrLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1bW1hcnkt
NS1hbmQtY2xpY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L2h0bWwvZGV0YWlscy1hZGQtc3VtbWFy
eS02LWFuZC1jbGljay5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1t
YXJ5LTctYW5kLWNsaWNrLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1
bW1hcnktOC1hbmQtY2xpY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L2h0bWwvZGV0YWlscy1hZGQt
c3VtbWFyeS05LWFuZC1jbGljay5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9kZXRhaWxzLWNo
aWxkcmVuLW1lcmdlLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2RldGFpbHMtZWxl
bWVudC1yZW5kZXItaW5saW5lLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2RldGFp
bHMtbW91c2UtY2xpY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L2h0bWwvZGV0YWlscy1yZW1vdmUt
c3VtbWFyeS0xLWFuZC1jbGljay5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9kZXRhaWxzLXJl
bW92ZS1zdW1tYXJ5LTItYW5kLWNsaWNrLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL2RldGFp
bHMtcmVtb3ZlLXN1bW1hcnktMy1hbmQtY2xpY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L2h0bWwv
ZGV0YWlscy1yZW1vdmUtc3VtbWFyeS00LWFuZC1jbGljay5odG1sOgorICAgICAgICAqIGZhc3Qv
aHRtbC9kZXRhaWxzLXJlbW92ZS1zdW1tYXJ5LTUtYW5kLWNsaWNrLmh0bWw6CisgICAgICAgICog
ZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktNi1hbmQtY2xpY2suaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2h0bWwvZGV0YWlscy1yZXBsYWNlLXN1bW1hcnktY2hpbGQuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2h0bWwvZGV0YWlscy1yZXBsYWNlLXRleHQuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2h0bWwvZGV0YWlscy1zdW1tYXJ5LWRvY3VtZW50LWNoaWxkLmh0bWw6CisgICAgICAgICogZmFz
dC9odG1sL2RyYWdnYWJsZS5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9lbXB0eS1mcmFnbWVu
dC1pZC1nb3RvLXRvcC5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9mb250LWZhY2UtZW1wdHkt
c2hvdWxkLW5vdC1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9tYXJxdWVlLXNjcm9s
bGFtb3VudC5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9uYXYtZWxlbWVudC5odG1sOgorICAg
ICAgICAqIGZhc3QvaHRtbC9vYmplY3QtaW1hZ2UtbmVzdGVkLWZhbGxiYWNrLmh0bWw6CisgICAg
ICAgICogZmFzdC9odG1sL3BlbmRpbmctc3R5bGVzaGVldC1jcmFzaC5odG1sOgorICAgICAgICAq
IGZhc3QvaHRtbC9wcm9jZXNzLWVuZC10YWctZm9yLWluYm9keS1jcmFzaC5odG1sOgorICAgICAg
ICAqIGZhc3QvaHRtbC9zY3JpcHQtYWxsb3dlZC10eXBlcy1sYW5ndWFnZXMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2h0bWwvc2VsZWN0LWRyb3Bkb3duLWNvbnNpc3RlbnQtYmFja2dyb3VuZC1jb2xv
ci5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC9zZXQtdGV4dC1kaXJlY3Rpb24uaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2h0bWwvdGFiLW9yZGVyLmh0bWw6CisgICAgICAgICogZmFzdC9odG1sL3Rh
YmluZGV4LXJlbW92YWwuaHRtbDoKKyAgICAgICAgKiBmYXN0L2h0bWwvdGV4dC1maWVsZC1pbnB1
dC10eXBlcy5odG1sOgorICAgICAgICAqIGZhc3QvaHRtbC94aHRtbC1zZXJpYWxpemUuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9hbmltYXRlZC1iYWNrZ3JvdW5kLWltYWdlLWNyYXNoLmh0
bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXJlc3RvcmVkLWZyb20tYmZj
YWNoZS5odG1sOgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2JhZC1wbmcuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2ltYWdlcy9idXN0ZWQtb3ZhbC1kb2VzLW5vdC1yZW5kZXIuaHRtbDoKKyAgICAgICAg
KiBmYXN0L2ltYWdlcy9kZXN0cm95ZWQtaW1hZ2UtbG9hZC1ldmVudC5odG1sOgorICAgICAgICAq
IGZhc3QvaW1hZ2VzL2RvbnQtY3Jhc2gtd2l0aC1udWxsLWdpZi1mcmFtZXMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2ltYWdlcy9kcmFnLXBkZi1hcy1pbWFnZS5odG1sOgorICAgICAgICAqIGZhc3Qv
aW1hZ2VzL2VtYmVkLWRvZXMtbm90LXByb3BhZ2F0ZS1kaW1lbnNpb25zLXRvLW9iamVjdC1hbmNl
c3Rvci5odG1sOgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2VtYmVkLWltYWdlLmh0bWw6CisgICAg
ICAgICogZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi1jc3MuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMv
ZXh0cmEtaW1hZ2UtaW4taW1hZ2UtZG9jdW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdl
cy9naWYtbG9vcC1jb3VudC5odG1sOgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLWVtcHR5
LWRhdGEuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1pbnZhbGlkLWRhdGEuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9pbWFnZS1sb2FkLWV2ZW50LWluLWZyYWdtZW50Lmh0
bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvaW1hZ2UtbWFwLW11bHRpcGxlLXhodG1sLnhodG1s
OgorICAgICAgICAqIGZhc3QvaW1hZ2VzL2ltYWdlLW1hcC1tdWx0aXBsZS5odG1sOgorICAgICAg
ICAqIGZhc3QvaW1hZ2VzL2ltYWdlLW1hcC16b29tLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFn
ZXMvaW1hZ2VtYXAtc2Nyb2xsLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvanBlZy13aXRo
LWNvbG9yLXByb2ZpbGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWlt
YWdlLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvbGluay1ib2R5LWNvbnRlbnQt
aW1hZ2VEaW1lbnNpb25DaGFuZ2VkLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMv
bG9hZC1pbWctd2l0aC1lbXB0eS1zcmMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9wYWxl
dHRlZC1wbmctd2l0aC1jb2xvci1wcm9maWxlLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMv
cGVyY2VudC1oZWlnaHQtaW1hZ2UuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9wbmctZXh0
cmEtcm93LWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvcG5nLXN1aXRlL3Rlc3Qu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9wbmctd2l0aC1jb2xvci1wcm9maWxlLmh0bWw6
CisgICAgICAgICogZmFzdC9pbWFnZXMvcmVhZC1wYXN0LWVuZC1vZi1idWZmZXIuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2ltYWdlcy9yZ2ItanBlZy1lbmRpYW4tcGl4ZWxzLmh0bWw6CisgICAgICAg
ICogZmFzdC9pbWFnZXMvcmdiLWpwZWctd2l0aC1hZG9iZS1tYXJrZXItb25seS5odG1sOgorICAg
ICAgICAqIGZhc3QvaW1hZ2VzL3JnYi1wbmctd2l0aC1jbXlrLWNvbG9yLXByb2ZpbGUuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9zY3JpcHQtY291bnRlci1pbWFnZURpbWVuc2lvbkNoYW5n
ZWQtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zY3JpcHQtdGVzdHMvbW92ZS1p
bWFnZS10by1uZXctZG9jdW1lbnQuanM6CisgICAgICAgICogZmFzdC9pbWFnZXMvc2l6ZS1mYWls
dXJlLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvc3R5bGUtYWNjZXNzLWR1cmluZy1pbWFn
ZUNoYW5nZWQtY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdHlsZS1hY2Nlc3Mt
ZHVyaW5nLWltYWdlQ2hhbmdlZC1zdHlsZS1mcmVlemUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2lt
YWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sOgorICAgICAgICAqIGZhc3Qv
aW1hZ2VzL3RleHQtY29udGVudC1jcmFzaC0yLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMv
dGV4dC1jb250ZW50LWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvd2VicC1pbWFn
ZS1kZWNvZGluZy5odG1sOgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3ljYmNyLXdpdGgtY215ay1j
b2xvci1wcm9maWxlLmh0bWw6CisgICAgICAgICogZmFzdC9pbWFnZXMvem9vbWVkLWltZy1zaXpl
Lmh0bWw6CisgICAgICAgICogZmFzdC9pbmxpbmUtYmxvY2svYW5vbnltb3VzLWJsb2NrLWNyYXNo
Lmh0bWw6CisgICAgICAgICogZmFzdC9pbmxpbmUtYmxvY2svaW5saW5lLWJsb2NrLXZlcnRpY2Fs
LWFsaWduLTIuaHRtbDoKKyAgICAgICAgKiBmYXN0L2lubGluZS1ibG9jay9yZWxhdGl2ZS1wb3Np
dGlvbmVkLXJ0bC1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvaW5saW5lL2JvdW5kaW5nQm94
LXdpdGgtY29udGludWF0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9pbmxpbmUvY2xlYW4tYWZ0
ZXItcmVtb3ZpbmctdGVtcC1ib3hlcy5odG1sOgorICAgICAgICAqIGZhc3QvaW5saW5lL2NvbnRp
bnVhdGlvbi1wb3NpdGlvbmVkLXJlcGFyZW50aW5nLmh0bWw6CisgICAgICAgICogZmFzdC9pbmxp
bmUvY3Jhc2gtbmV3LWNvbnRpbnVhdGlvbi13aXRoLW91dGxpbmUuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2lubGluZS9kaXJ0eUxpbmVzRm9ySW5saW5lLmh0bWw6CisgICAgICAgICogZmFzdC9pbmxp
bmUvaW5saW5lLWJvZHktY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2lubGluZS9pbmxpbmUt
Ym9keS13aXRoLXNjcm9sbGJhci1jcmFzaC5odG1sOgorICAgICAgICAqIGZhc3QvaW5saW5lL2lu
bGluZS1ib3gtYWRqdXN0LXBvc2l0aW9uLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9pbmxp
bmUvaW5saW5lLWJveC1hZGp1c3QtcG9zaXRpb24tY3Jhc2gyLmh0bWw6CisgICAgICAgICogZmFz
dC9pbmxpbmUvaW5saW5lLWNoaWxkLWhlaWdodC13aWR0aC1jYWxjLWNyYXNoLmh0bWw6CisgICAg
ICAgICogZmFzdC9pbmxpbmUvaW5saW5lLWRlc3Ryb3ktZGlydHktbGluZXMtY3Jhc2guaHRtbDoK
KyAgICAgICAgKiBmYXN0L2lubGluZS9pbmxpbmUtbWFycXVlZS1jcmFzaC5odG1sOgorICAgICAg
ICAqIGZhc3QvaW5saW5lL3JlbGF0aXZlLXBvc2l0aW9uZWQtb3ZlcmZsb3cuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2lubGluZS9za2lwcGVkLXdoaXRlc3BhY2UtYm91bmRpbmdCb3guaHRtbDoKKyAg
ICAgICAgKiBmYXN0L2lubGluZS9za2lwcGVkLXdoaXRlc3BhY2UtY2xpZW50LXJlY3QuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2lubGluZS91cGRhdGUtYWx3YXlzLWNyZWF0ZS1saW5lLWJveGVzLWZ1
bGwtbGF5b3V0LWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9pbm5lckhUTUwvMDA0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2lubmVySFRNTC8wMDQueGh0bWw6CisgICAgICAgICog
ZmFzdC9pbm5lckhUTUwvMDA1LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2lubmVySFRN
TC8wMDUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2lubmVySFRNTC9hZGRpdGlvbmFsLWlubGluZS1z
dHlsZS5odG1sOgorICAgICAgICAqIGZhc3QvaW5uZXJIVE1ML2lubmVySFRNTC1jYXNlLmh0bWw6
CisgICAgICAgICogZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLWNoYW5naW5nLWRvY3VtZW50LXBy
b3BlcnRpZXMueGh0bWw6CisgICAgICAgICogZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLWN1c3Rv
bS10YWcuaHRtbDoKKyAgICAgICAgKiBmYXN0L2lubmVySFRNTC9pbm5lckhUTUwtaWZyYW1lLmh0
bWw6CisgICAgICAgICogZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLW5ic3AueGh0bWw6CisgICAg
ICAgICogZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLXNjcmlwdC10YWctY3Jhc2gueGh0bWw6Cisg
ICAgICAgICogZmFzdC9pbm5lckhUTUwvamF2YXNjcmlwdC11cmwuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2luc3BlY3Rvci1zdXBwb3J0L2Nzc1VSTFF1b3Rlcy5odG1sOgorICAgICAgICAqIGZhc3Qv
aW5zcGVjdG9yLXN1cHBvcnQvc3R5bGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2luc3BlY3Rvci1z
dXBwb3J0L3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9pbnNw
ZWN0b3Itc3VwcG9ydC91bmNhdWdodC1kb20zLWV4Y2VwdGlvbi5odG1sOgorICAgICAgICAqIGZh
c3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9tOC1leGNlcHRpb24uaHRtbDoKKyAgICAg
ICAgKiBmYXN0L2ludmFsaWQvaW52YWxpZFNWR0ZvbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2lu
dmFsaWQvbmVzdGVkaDNzLXJhcGlkd2VhdmVyLmh0bWw6CisgICAgICAgICogZmFzdC9pbnZhbGlk
L3Rlc3QtY2FzZS10ci10aC10ZC1zaG91bGQtbm90LWNsb3NlLWRsLWxpc3QuaHRtbDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi1jc3MtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0
aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvZXhp
Zi1vcmllbnRhdGlvbi1jc3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9m
YXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9mYXN0L2hpc3RvcnkvYmFjay10by11bnJlYWNoYWJsZS11cmwtdGhlbi1mb3J3YXJk
Lmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jaGVj
ay1zY3JvbGwtcG9zaXRpb24uaHRtbDoKKwogMjAxMi0wNi0yMSAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgdGVzdFJ1bm5lciBpbnN0ZWFkIG9mIGxheW91
dFRlc3RDb250cm9sbGVyIGluIGZhc3QvZmFzdC1tb2JpbGUtc2Nyb2xsaW5nLCBmbGV4Ym94LCBm
b3JtcywgZnJhbWVzLCBncmFkaWVudHMgdGVzdHMKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlk
cGkvYnJva2VuLWltYWdlLWljb24taGlkcGkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2hpZHBpL2Jyb2tlbi1pbWFnZS1pY29uLWhpZHBpLmh0bWwJKHJldmlzaW9uIDEyMTAw
NykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlkcGkvYnJva2VuLWltYWdlLWljb24taGlkcGkuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNCBAQAogPGh0bWw+CiAgICAgPHNjcmlwdD4K
ICAgICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZmluaXNoVGVzdCk7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3Rv
cigyLCBmaW5pc2hUZXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgfSwgMCk7CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsg
fSwgMCk7CiAgICAgICAgIH0KICAgICAgICAgPC9zY3JpcHQ+CiAgICAgPC9oZWFkPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9icm9rZW4taW1hZ2Utd2l0aC1zaXplLWhpZHBpLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9icm9rZW4taW1hZ2Utd2l0aC1z
aXplLWhpZHBpLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlk
cGkvYnJva2VuLWltYWdlLXdpdGgtc2l6ZS1oaWRwaS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE0ICsxLDE0IEBACiA8aHRtbD4KICAgICA8c2NyaXB0PgogICAgICAgICBmdW5jdGlvbiBzdGFy
dFRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
ICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEJhY2tpbmdTY2FsZUZhY3Rv
cigyLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIGZpbmlzaFRlc3QpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBmaW5pc2hU
ZXN0KCkgewotICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKICAgICAgICAgfQogICAg
ICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpZHBp
L2NsaXAtdGV4dC1pbi1oaWRwaS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aGlkcGkvY2xpcC10ZXh0LWluLWhpZHBpLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91
dFRlc3RzL2Zhc3QvaGlkcGkvY2xpcC10ZXh0LWluLWhpZHBpLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsMTYgKzIsMTYgQEAKIDxoZWFkPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBzdGFydFRl
c3QoKSB7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmaW5pc2hUZXN0
KTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QmFja2luZ1Nj
YWxlRmFjdG9yKDIsIGZpbmlzaFRlc3QpOwogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKSB7CiAgICAgICAgIHZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKTsKICAgICAgICAgdGVzdC5pbm5lckhUTUwgPSB3aW5kb3cuZGV2aWNl
UGl4ZWxSYXRpbzsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDApOwogICAgIH0KIDwvc2NyaXB0Pgog
PC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9kZXZpY2Utc2NhbGUtZmFjdG9y
LXBhaW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9kZXZpY2Ut
c2NhbGUtZmFjdG9yLXBhaW50Lmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3Rz
L2Zhc3QvaGlkcGkvZGV2aWNlLXNjYWxlLWZhY3Rvci1wYWludC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDE0ICsyLDE0IEBACiA8aHRtbD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gc3RhcnRU
ZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZmluaXNoVGVz
dCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdT
Y2FsZUZhY3RvcigyLCBmaW5pc2hUZXN0KTsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBm
dW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkgfSwgMCk7CisgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpIH0sIDApOwogICAgIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9mb2N1cy1yaW5n
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlkcGkvZm9jdXMtcmluZ3Mu
aHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9mb2N1cy1y
aW5ncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE2ICsxLDE2IEBACiA8aHRtbD4KIDxzY3Jp
cHQ+CiAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRCYWNraW5n
U2NhbGVGYWN0b3IoMiwgZmluaXNoVGVzdCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmaW5pc2hUZXN0KTsKICAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewogICAgICAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOwogICAgICAgICBkaXYuZm9j
dXMoKTsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDApOwogICAgIH0KICAgICA8L3NjcmlwdD4KIDwv
aGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlkcGkvaW1hZ2Utc2V0LWFzLWJhY2tncm91
bmQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNldC1h
cy1iYWNrZ3JvdW5kLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3Qv
aGlkcGkvaW1hZ2Utc2V0LWFzLWJhY2tncm91bmQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiwx
OCArMiwxOCBAQAogPGhlYWQ+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0g
ICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5kb3cuc2Vzc2lv
blN0b3JhZ2UpCisgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5zZXNz
aW9uU3RvcmFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIXNlc3Npb25T
dG9yYWdlLnNjYWxlRmFjdG9ySXNTZXQpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dEJhY2tpbmdTY2FsZUZhY3RvcigyLCBzY2FsZUZhY3RvcklzU2V0KTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRCYWNr
aW5nU2NhbGVGYWN0b3IoMiwgc2NhbGVGYWN0b3JJc1NldCk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGlmIChzZXNzaW9uU3RvcmFnZS5wYWdlUmVsb2FkZWQgJiYgc2Vzc2lvblN0b3Jh
Z2Uuc2NhbGVGYWN0b3JJc1NldCkgewogICAgICAgICAgICAgZGVsZXRlIHNlc3Npb25TdG9yYWdl
LnBhZ2VSZWxvYWRlZDsKICAgICAgICAgICAgIGRlbGV0ZSBzZXNzaW9uU3RvcmFnZS5zY2FsZUZh
Y3RvcklzU2V0OwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyBSaWdodCBub3cgdGhlcmUgaXMgYSBidWcgdGhhdCBpbWFnZS1zZXQg
ZG9lcyBub3QgcHJvcGVybHkgZGVhbCB3aXRoIGR5bmFtaWMgY2hhbmdlcyB0byB0aGUgc2NhbGUg
ZmFjdG9yLAogICAgICAgICAgICAgLy8gc28gdG8gd29yayBhcm91bmQgdGhhdCwgd2UgbXVzdCBy
ZWxvYWQgdGhlIHBhZ2UgdG8gZ2V0IHRoZSAyeCBpbWFnZS4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvaGlkcGkvaW1hZ2Utc2V0LWJhY2tncm91bmQtZHluYW1pYy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvaGlkcGkvaW1hZ2Utc2V0LWJhY2tncm91bmQtZHluYW1pYy5odG1s
CShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNldC1i
YWNrZ3JvdW5kLWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxNiArMywxNiBAQAog
ICAgIDxoZWFkPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIGZpbmlz
aFRlc3QpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZmluaXNoVGVzdCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewogICAgICAgICAg
ICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9vIik7CiAgICAgICAgICAg
ICB0ZXN0LmlubmVySFRNTCA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOwotICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OyB9LCAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOyB9LCAwKTsKICAgICAgICAgfQogICAgIDwvc2NyaXB0PgogICAgIApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQtYmFja2dyb3VuZC1yZXBlYXQtd2l0
aG91dC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFn
ZS1zZXQtYmFja2dyb3VuZC1yZXBlYXQtd2l0aG91dC1zaXplLmh0bWwJKHJldmlzaW9uIDEyMTAw
NykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlkcGkvaW1hZ2Utc2V0LWJhY2tncm91bmQtcmVwZWF0
LXdpdGhvdXQtc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE4ICsyLDE4IEBACiA8aGVh
ZD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgaWYgKCF3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5zZXNzaW9uU3RvcmFnZSkKKyAgICAg
ICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LnNlc3Npb25TdG9yYWdlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghc2Vzc2lvblN0b3JhZ2Uuc2NhbGVGYWN0
b3JJc1NldCkgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QmFja2luZ1NjYWxlRmFj
dG9yKDIsIHNjYWxlRmFjdG9ySXNTZXQpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3Rvcigy
LCBzY2FsZUZhY3RvcklzU2V0KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHNl
c3Npb25TdG9yYWdlLnBhZ2VSZWxvYWRlZCAmJiBzZXNzaW9uU3RvcmFnZS5zY2FsZUZhY3Rvcklz
U2V0KSB7CiAgICAgICAgICAgICBkZWxldGUgc2Vzc2lvblN0b3JhZ2UucGFnZVJlbG9hZGVkOwog
ICAgICAgICAgICAgZGVsZXRlIHNlc3Npb25TdG9yYWdlLnNjYWxlRmFjdG9ySXNTZXQ7Ci0gICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8v
IFJpZ2h0IG5vdyB0aGVyZSBpcyBhIGJ1ZyB0aGF0IGltYWdlLXNldCBkb2VzIG5vdCBwcm9wZXJs
eSBkZWFsIHdpdGggZHluYW1pYyBjaGFuZ2VzIHRvIHRoZSBzY2FsZSBmYWN0b3IsCiAgICAgICAg
ICAgICAvLyBzbyB0byB3b3JrIGFyb3VuZCB0aGF0LCB3ZSBtdXN0IHJlbG9hZCB0aGUgcGFnZSB0
byBnZXQgdGhlIDJ4IGltYWdlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1z
ZXQtYmFja2dyb3VuZC1yZXBlYXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2hpZHBpL2ltYWdlLXNldC1iYWNrZ3JvdW5kLXJlcGVhdC5odG1sCShyZXZpc2lvbiAxMjEwMDcp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNldC1iYWNrZ3JvdW5kLXJlcGVhdC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE4ICsyLDE4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIgfHwgIXdpbmRvdy5zZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgaWYgKCF3aW5kb3cu
dGVzdFJ1bm5lciB8fCAhd2luZG93LnNlc3Npb25TdG9yYWdlKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmICghc2Vzc2lvblN0b3JhZ2Uuc2NhbGVGYWN0b3JJc1NldCkgewotICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIHNjYWxlRmFj
dG9ySXNTZXQpOworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBzY2FsZUZhY3Rvcklz
U2V0KTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLnBh
Z2VSZWxvYWRlZCAmJiBzZXNzaW9uU3RvcmFnZS5zY2FsZUZhY3RvcklzU2V0KSB7CiAgICAgICAg
ICAgICBkZWxldGUgc2Vzc2lvblN0b3JhZ2UucGFnZVJlbG9hZGVkOwogICAgICAgICAgICAgZGVs
ZXRlIHNlc3Npb25TdG9yYWdlLnNjYWxlRmFjdG9ySXNTZXQ7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGVy
ZSBpcyBhIGJ1ZyB0aGF0IGltYWdlLXNldCBkb2VzIG5vdCBwcm9wZXJseSBkZWFsIHdpdGggZHlu
YW1pYyBjaGFuZ2VzIHRvIHRoZSBzY2FsZSBmYWN0b3IsCiAgICAgICAgICAgICAvLyBzbyB0byB3
b3JrIGFyb3VuZCB0aGF0LCB3ZSBtdXN0IHJlbG9hZCB0aGUgcGFnZSB0byBnZXQgdGhlIDJ4IGlt
YWdlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQtYm9yZGVyLWltYWdl
LWNvbXBhcmlzb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2lt
YWdlLXNldC1ib3JkZXItaW1hZ2UtY29tcGFyaXNvbi5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNldC1ib3JkZXItaW1hZ2UtY29tcGFyaXNv
bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE0ICsyLDE0IEBACiA8aGVhZD4KIDxzY3JpcHQ+
CiAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgewotICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRCYWNraW5nU2Nh
bGVGYWN0b3IoMiwgZmluaXNoVGVzdCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmaW5pc2hUZXN0KTsKICAgICAgICAg
fQogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0s
IDApOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsgfSwgMCk7CiAgICAgfQogPC9zY3JpcHQ+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
aGlkcGkvaW1hZ2Utc2V0LWJvcmRlci1pbWFnZS1keW5hbWljLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQtYm9yZGVyLWltYWdlLWR5bmFtaWMuaHRt
bAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQt
Ym9yZGVyLWltYWdlLWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxNiArMywxNiBA
QAogICAgIDxoZWFkPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgp
IHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIGZp
bmlzaFRlc3QpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZmluaXNoVGVzdCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewogICAgICAg
ICAgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9vIik7CiAgICAgICAg
ICAgICB0ZXN0LmlubmVySFRNTCA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOwotICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOyB9LCAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKICAgICAgICAgfQogICAgIDwvc2NyaXB0PgogICAgIApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQtYm9yZGVyLWltYWdlLXNpbXBs
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlkcGkvaW1hZ2Utc2V0LWJv
cmRlci1pbWFnZS1zaW1wbGUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9oaWRwaS9pbWFnZS1zZXQtYm9yZGVyLWltYWdlLXNpbXBsZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yLDE4ICsyLDE4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKLSAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdp
bmRvdy5zZXNzaW9uU3RvcmFnZSkKKyAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAh
d2luZG93LnNlc3Npb25TdG9yYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlm
ICghc2Vzc2lvblN0b3JhZ2Uuc2NhbGVGYWN0b3JJc1NldCkgewotICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIHNjYWxlRmFjdG9ySXNTZXQpOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBzY2FsZUZhY3RvcklzU2V0KTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgaWYgKHNlc3Npb25TdG9yYWdlLnBhZ2VSZWxvYWRlZCAmJiBz
ZXNzaW9uU3RvcmFnZS5zY2FsZUZhY3RvcklzU2V0KSB7CiAgICAgICAgICAgICBkZWxldGUgc2Vz
c2lvblN0b3JhZ2UucGFnZVJlbG9hZGVkOwogICAgICAgICAgICAgZGVsZXRlIHNlc3Npb25TdG9y
YWdlLnNjYWxlRmFjdG9ySXNTZXQ7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdyB0aGVyZSBpcyBhIGJ1ZyB0aGF0
IGltYWdlLXNldCBkb2VzIG5vdCBwcm9wZXJseSBkZWFsIHdpdGggZHluYW1pYyBjaGFuZ2VzIHRv
IHRoZSBzY2FsZSBmYWN0b3IsCiAgICAgICAgICAgICAvLyBzbyB0byB3b3JrIGFyb3VuZCB0aGF0
LCB3ZSBtdXN0IHJlbG9hZCB0aGUgcGFnZSB0byBnZXQgdGhlIDJ4IGltYWdlLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQtaW4tY29udGVudC1keW5hbWljLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQtaW4tY29udGVudC1k
eW5hbWljLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlkcGkv
aW1hZ2Utc2V0LWluLWNvbnRlbnQtZHluYW1pYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE2
ICszLDE2IEBACiAgICAgPGhlYWQ+CiAgICAgPHNjcmlwdD4KICAgICAgICAgZnVuY3Rpb24gc3Rh
cnRUZXN0KCkgewotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
LSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRCYWNraW5nU2NhbGVGYWN0
b3IoMiwgZmluaXNoVGVzdCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldEJhY2tpbmdTY2FsZUZhY3RvcigyLCBmaW5pc2hUZXN0KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7
CiAgICAgICAgICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb28iKTsK
ICAgICAgICAgICAgIHRlc3QuaW5uZXJIVE1MID0gd2luZG93LmRldmljZVBpeGVsUmF0aW87Ci0g
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7IH0sIDApOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDApOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+
CiAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNldC1vdXQtb2Ytb3Jk
ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNldC1v
dXQtb2Ytb3JkZXIuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9o
aWRwaS9pbWFnZS1zZXQtb3V0LW9mLW9yZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTgg
KzIsMTggQEAKIDxoZWFkPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAg
ICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93LnNlc3Npb25T
dG9yYWdlKQorICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuc2Vzc2lv
blN0b3JhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFzZXNzaW9uU3Rv
cmFnZS5zY2FsZUZhY3RvcklzU2V0KSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRC
YWNraW5nU2NhbGVGYWN0b3IoMiwgc2NhbGVGYWN0b3JJc1NldCk7CisgICAgICAgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0QmFja2lu
Z1NjYWxlRmFjdG9yKDIsIHNjYWxlRmFjdG9ySXNTZXQpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UucGFnZVJlbG9hZGVkICYmIHNlc3Npb25TdG9yYWdl
LnNjYWxlRmFjdG9ySXNTZXQpIHsKICAgICAgICAgICAgIGRlbGV0ZSBzZXNzaW9uU3RvcmFnZS5w
YWdlUmVsb2FkZWQ7CiAgICAgICAgICAgICBkZWxldGUgc2Vzc2lvblN0b3JhZ2Uuc2NhbGVGYWN0
b3JJc1NldDsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgLy8gUmlnaHQgbm93IHRoZXJlIGlzIGEgYnVnIHRoYXQgaW1hZ2Utc2V0IGRv
ZXMgbm90IHByb3Blcmx5IGRlYWwgd2l0aCBkeW5hbWljIGNoYW5nZXMgdG8gdGhlIHNjYWxlIGZh
Y3RvciwKICAgICAgICAgICAgIC8vIHNvIHRvIHdvcmsgYXJvdW5kIHRoYXQsIHdlIG11c3QgcmVs
b2FkIHRoZSBwYWdlIHRvIGdldCB0aGUgMnggaW1hZ2UuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2hpZHBpL2ltYWdlLXNldC1zaW1wbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2hpZHBpL2ltYWdlLXNldC1zaW1wbGUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zZXQtc2ltcGxlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsMTggKzIsMTggQEAKIDxoZWFkPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBydW5UZXN0
KCkgewotICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93
LnNlc3Npb25TdG9yYWdlKQorICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5k
b3cuc2Vzc2lvblN0b3JhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFz
ZXNzaW9uU3RvcmFnZS5zY2FsZUZhY3RvcklzU2V0KSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgc2NhbGVGYWN0b3JJc1NldCk7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIHNjYWxlRmFjdG9ySXNTZXQpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UucGFnZVJlbG9hZGVkICYmIHNlc3Np
b25TdG9yYWdlLnNjYWxlRmFjdG9ySXNTZXQpIHsKICAgICAgICAgICAgIGRlbGV0ZSBzZXNzaW9u
U3RvcmFnZS5wYWdlUmVsb2FkZWQ7CiAgICAgICAgICAgICBkZWxldGUgc2Vzc2lvblN0b3JhZ2Uu
c2NhbGVGYWN0b3JJc1NldDsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gUmlnaHQgbm93IHRoZXJlIGlzIGEgYnVnIHRoYXQgaW1h
Z2Utc2V0IGRvZXMgbm90IHByb3Blcmx5IGRlYWwgd2l0aCBkeW5hbWljIGNoYW5nZXMgdG8gdGhl
IHNjYWxlIGZhY3RvciwKICAgICAgICAgICAgIC8vIHNvIHRvIHdvcmsgYXJvdW5kIHRoYXQsIHdl
IG11c3QgcmVsb2FkIHRoZSBwYWdlIHRvIGdldCB0aGUgMnggaW1hZ2UuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNldC13aXRob3V0LXNwZWNpZmllZC13aWR0aC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlkcGkvaW1hZ2Utc2V0LXdpdGhvdXQtc3Bl
Y2lmaWVkLXdpZHRoLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3Qv
aGlkcGkvaW1hZ2Utc2V0LXdpdGhvdXQtc3BlY2lmaWVkLXdpZHRoLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsMTggKzIsMTggQEAKIDxoZWFkPgogPHNjcmlwdD4KICAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgewotICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2lu
ZG93LnNlc3Npb25TdG9yYWdlKQorICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3
aW5kb3cuc2Vzc2lvblN0b3JhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYg
KCFzZXNzaW9uU3RvcmFnZS5zY2FsZUZhY3RvcklzU2V0KSB7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgc2NhbGVGYWN0b3JJc1NldCk7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIHNjYWxlRmFjdG9ySXNTZXQpOwogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UucGFnZVJlbG9hZGVkICYmIHNl
c3Npb25TdG9yYWdlLnNjYWxlRmFjdG9ySXNTZXQpIHsKICAgICAgICAgICAgIGRlbGV0ZSBzZXNz
aW9uU3RvcmFnZS5wYWdlUmVsb2FkZWQ7CiAgICAgICAgICAgICBkZWxldGUgc2Vzc2lvblN0b3Jh
Z2Uuc2NhbGVGYWN0b3JJc1NldDsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gUmlnaHQgbm93IHRoZXJlIGlzIGEgYnVnIHRoYXQg
aW1hZ2Utc2V0IGRvZXMgbm90IHByb3Blcmx5IGRlYWwgd2l0aCBkeW5hbWljIGNoYW5nZXMgdG8g
dGhlIHNjYWxlIGZhY3RvciwKICAgICAgICAgICAgIC8vIHNvIHRvIHdvcmsgYXJvdW5kIHRoYXQs
IHdlIG11c3QgcmVsb2FkIHRoZSBwYWdlIHRvIGdldCB0aGUgMnggaW1hZ2UuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2hpZHBpL3Jlc2l6ZS1jb3JuZXItaGlkcGkuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL3Jlc2l6ZS1jb3JuZXItaGlkcGkuaHRtbAkocmV2aXNp
b24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9yZXNpemUtY29ybmVyLWhpZHBp
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAKIDxodG1sPgogICAgIDxzY3Jp
cHQ+CiAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKLSAgICAgICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIGZpbmlzaFRlc3QpOworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRCYWNraW5nU2NhbGVG
YWN0b3IoMiwgZmluaXNoVGVzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0sIDApOwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7IH0sIDApOwogICAgICAgICB9CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvaGVhZD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvaGlkcGkvdmlkZW8tY29udHJvbHMtaW4taGlkcGkuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpZHBpL3ZpZGVvLWNvbnRyb2xzLWluLWhp
ZHBpLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlkcGkvdmlk
ZW8tY29udHJvbHMtaW4taGlkcGkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNCBA
QAogPGh0bWw+CiA8c2NyaXB0PgogICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpIHsKLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0QmFja2luZ1NjYWxlRmFjdG9yKDIsIGZpbmlzaFRlc3QpOworICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRCYWNraW5nU2NhbGVGYWN0b3IoMiwgZmlu
aXNoVGVzdCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOyB9LCAwKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDApOwogICAgIH0KICAgICA8L3NjcmlwdD4KIDwv
aGVhZD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9iYWNrLWZvcndhcmQtcmVzZXQt
YWZ0ZXItZXJyb3ItaGFuZGxpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvYmFjay1mb3J3YXJkLXJlc2V0LWFmdGVyLWVycm9yLWhhbmRsaW5nLmh0bWwJKHJl
dmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9iYWNrLWZvcndhcmQt
cmVzZXQtYWZ0ZXItZXJyb3ItaGFuZGxpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsMTEg
KzIwLDExIEBACiAgICAgIiAgICAgICAgY29uc29sZS5pbm5lckhUTUwgPSAnRkFJTCc7ICAgICAg
ICAgICAgICAgICAgICAiKwogICAgICJ9IjsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVz
ZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmhhbmRsZUVycm9yUGFnZXMoKTsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEJhY2tGb3J3YXJkTGlzdCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgICAg
IHRlc3RSdW5uZXIuaGFuZGxlRXJyb3JQYWdlcygpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBC
YWNrRm9yd2FyZExpc3QoKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBvblBhZ2VTaG93KGV2dCkK
QEAgLTMyLDExICszMiwxMSBAQAogICAgICAgICBpZiAoIWV2dC5wZXJzaXN0ZWQpIHsKICAgICAg
ICAgICAgIC8vIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhlIHBhZ2UgaGFzIGJlZW4gbG9hZGVk
LCB0aGVuIHNldHVwIHRoZQogICAgICAgICAgICAgLy8gdG8tYmUtdGVzdGVkIHNjZW5hcmlvLgot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVMb2FkKCIuL25vbi1leGlzdGVu
dC5odG1sIik7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUJhY2tOYXZp
Z2F0aW9uKDEpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVGb3J3YXJk
TmF2aWdhdGlvbigxKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFj
a05hdmlnYXRpb24oMSk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZU5v
bkxvYWRpbmdTY3JpcHQoImV2YWwoXCIiICsgaXNPa1RvQ29udGludWUgKyAiXCIpIik7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgiLi9ub24tZXhpc3RlbnQuaHRtbCIpOworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5xdWV1ZUZvcndhcmROYXZpZ2F0aW9uKDEpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5xdWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5xdWV1
ZU5vbkxvYWRpbmdTY3JpcHQoImV2YWwoXCIiICsgaXNPa1RvQ29udGludWUgKyAiXCIpIik7CiAg
ICAgICAgIH0KICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9mb3JtLXN1
Ym1pdC1pbi1mcmFtZS12aWEtb25jbGljay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9mb3JtLXN1Ym1pdC1pbi1mcmFtZS12aWEtb25jbGljay5odG1sCShyZXZp
c2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZm9ybS1zdWJtaXQtaW4t
ZnJhbWUtdmlhLW9uY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOCwxMSArOCwxMSBAQAog
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2Fy
ZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiB9CiAKIHZhciBmb3JtU3VibWl0dGVkID0gZmFs
c2U7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZm9ybS1zdWJtaXQtaW4tZnJhbWUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZm9ybS1zdWJtaXQt
aW4tZnJhbWUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L2Zvcm0tc3VibWl0LWluLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsMTEgKzgs
MTEgQEAKIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwogfQogCiB2YXIgZm9ybVN1Ym1pdHRl
ZCA9IGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2ZvcndhcmQtZHVyaW5n
LWxvYWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZm9yd2Fy
ZC1kdXJpbmctbG9hZC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvZm9yd2FyZC1kdXJpbmctbG9hZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgg
KzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIGhpc3Rvcnku
Zm9yd2FyZCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWZvcm0tc3VibWl0Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dlc3R1cmUtYmVmb3JlLW9ubG9hZC1mb3JtLXN1
Ym1pdC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
Z2VzdHVyZS1iZWZvcmUtb25sb2FkLWZvcm0tc3VibWl0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcsOSArNyw5IEBACiAgIDxkaXYgaWQ9Im1hbnVhbC1leHBsYW5hdGlvbiIgc3R5bGU9ImRpc3Bs
YXk6IG5vbmU7IGNvbG9yOiBibHVlIj5XaGVuIHJ1bm5pbmcgdGhpcyB0ZXN0IG91dHNpZGUgb2Yg
RFJULCBwbGVhc2UgY2xpY2sgb24gdGhlICJOYXZpZ2F0ZSIgYnV0dG9uLjwvZGl2PgogPC9ib2R5
PgogPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgfQogCiAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQt
bG9jYXRpb24taHJlZi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9nZXN0dXJlLWJlZm9yZS1vbmxvYWQtbG9jYXRpb24taHJlZi5odG1sCShyZXZpc2lvbiAxMjEw
MDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvZ2VzdHVyZS1iZWZvcmUtb25sb2FkLWxv
Y2F0aW9uLWhyZWYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw5ICs1LDkgQEAKICAgPGRpdiBp
ZD0ibWFudWFsLWV4cGxhbmF0aW9uIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgY29sb3I6IGJsdWUi
PldoZW4gcnVubmluZyB0aGlzIHRlc3Qgb3V0c2lkZSBvZiBEUlQsIHBsZWFzZSBjbGljayBvbiB0
aGUgIk5hdmlnYXRlIiBidXR0b24uPC9kaXY+CiA8L2JvZHk+CiA8c2NyaXB0PgotICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5j
bGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIu
Y2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKKyAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogICB9CiAKICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2dvLWJhY2stdG8tY2hhbmdlZC1uYW1lLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2dvLWJhY2stdG8tY2hhbmdlZC1uYW1lLmh0bWwJKHJl
dmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9nby1iYWNrLXRvLWNo
YW5nZWQtbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogICAgIHZhciB0
bXAgPSB3aW5kb3cubmFtZTsKICAgICB3aW5kb3cubmFtZSA9ICJjcmFzaCI7CiAgICAgCi0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2dvLWJhY2stdG8tY2hhbmdlZC1uYW1lMi5odG1sPyIg
KyB0bXApOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2dv
LWJhY2stdG8tY2hhbmdlZC1uYW1lMy5odG1sIik7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
cXVldWVCYWNrTmF2aWdhdGlvbigxKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLnF1ZXVlTG9hZCgicmVzb3VyY2VzL2dvLWJhY2stdG8tY2hhbmdlZC1uYW1l
Mi5odG1sPyIgKyB0bXApOworICAgIHRlc3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvZ28t
YmFjay10by1jaGFuZ2VkLW5hbWUzLmh0bWwiKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlQmFja05h
dmlnYXRpb24oMSk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9o
aXN0b3J5LWJhY2staW5pdGlhbC12cy1maW5hbC11cmwuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1iYWNrLWluaXRpYWwtdnMtZmluYWwtdXJsLmh0
bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5
LWJhY2staW5pdGlhbC12cy1maW5hbC11cmwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsMTEg
KzE0LDExIEBACiA8aWZyYW1lIGEgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIG9udW5sb2FkPSIi
IHNyYz0icmVzb3VyY2VzL2ZyYW1lLWluaXRpYWwtdXJsLmh0bWwiPjwvaWZyYW1lPgogCiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAg
dGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKIH0gZWxz
ZSB7CiAgICAgLy8gRGlzYWJsZSBwYWdlIGNhY2hlIHdoZW4gbm90IHJ1bm5pbmcgdW5kZXIgdGhl
IERSVC4KICAgICBvbnVubG9hZCA9IGZ1bmN0aW9uKCkge307CkBAIC0yOCw4ICsyOCw4IEBAIGZ1
bmN0aW9uIHJ1blRlc3QoKSAKIHsKICAgICBpZiAoc2Vzc2lvblN0b3JhZ2UuZGlkTmF2KSB7CiAg
ICAgICAgIGRlbGV0ZSBzZXNzaW9uU3RvcmFnZS5kaWROYXY7Ci0gICAgICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE5hdmln
YXRlIGEgdGltZW91dCB0byBtYWtlIHN1cmUgd2UgZ2VuZXJhdGUgYSBoaXN0b3J5IGVudHJ5IHRo
YXQgd2UgY2FuIGdvIGJhY2sgdG8uCiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bG9j
YXRpb24uaHJlZiA9ICdkYXRhOnRleHQvaHRtbCw8c2NyaXB0PmFsZXJ0KCJHb2luZyBiYWNrLiIp
O2hpc3RvcnkuYmFjaygpOzwvJyArICdzY3JpcHQ+Jzt9LCAwKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWJhY2stdHdpY2Utd2l0aC1zdWJmcmFtZXMtYXNzZXJ0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktYmFjay10
d2ljZS13aXRoLXN1YmZyYW1lcy1hc3NlcnQuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktYmFjay10d2ljZS13aXRoLXN1YmZyYW1lcy1h
c3NlcnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDwhRE9DVFlQRSBodG1s
PgogPHNjcmlwdD4KLWlmIChsYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CitpZiAodGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogfQogCiBmdW5jdGlvbiBydW5UZXN0
KCkgewpAQCAtMjQsOCArMjQsOCBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh0ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiAgICAgfQogCiAgICAgZnJhbWUxLnNyYyA9IGZyYW1lMi5zcmMgPSAnZGF0YTp0ZXh0L2h0
bWwsbmF2aWdhdGVkJzsgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1i
YWNrLXdpdGhpbi1zdWJmcmFtZS1oYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2hpc3RvcnktYmFjay13aXRoaW4tc3ViZnJhbWUtaGFzaC5odG1sCShyZXZp
c2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1iYWNrLXdp
dGhpbi1zdWJmcmFtZS1oYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8
Ym9keT4KIDxzY3JpcHQ+CiBvbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOwogICB9CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWJhY2std2l0aGluLXN1YmZyYW1lLXVybC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5LWJhY2std2l0aGlu
LXN1YmZyYW1lLXVybC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2hpc3RvcnkvaGlzdG9yeS1iYWNrLXdpdGhpbi1zdWJmcmFtZS11cmwuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxMCArMSwxMCBAQAogPGJvZHk+CiA8c2NyaXB0Pgogb25sb2FkID0gZnVuY3Rp
b24oKSB7Ci0gIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKICAgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
ICAgfQogfQogCkBAIC0xNSw4ICsxNSw4IEBAIGZ1bmN0aW9uIG9uRnJhbWVMb2FkZWQoKQogICAg
IHdlbnRCYWNrID0gdHJ1ZTsKICAgICBoaXN0b3J5LmJhY2soKTsKICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJUZXh0ID0gJ1BBU1MnOwotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsgICAgICAKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOyAgICAgIAogfQogPC9zY3JpcHQ+CiA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL2hpc3RvcnktYmFjay13aXRoaW4tc3ViZnJhbWUtdXJsLTIuaHRtbCI+PC9pZnJhbWU+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1sZW5ndGguaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1sZW5ndGguaHRtbAko
cmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktbGVu
Z3RoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsMTAgKzIsMTAgQEAKIG9ubG9hZCA9IGZ1bmN0
aW9uKCkgewogICBpZiAobG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5sZW5ndGggPT0gMCkg
ewogICAgIHNlc3Npb25TdG9yYWdlLnRlc3RTdGFnZSA9IDA7Ci0gICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsK
LSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
dGVzdFJ1bm5lci5jbGVhckJhY2tGb3J3YXJkTGlzdCgpOworICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CiAgICAgfQogICB9CiAKQEAgLTMxLDggKzMxLDggQEAgb25sb2FkID0gZnVu
Y3Rpb24oKSB7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1MiOwogICAg
ICAgZWxzZQogICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICJGQUlMOiBpbml0aWFs
TGVuZ3RoPSIgKyBzZXNzaW9uU3RvcmFnZS5pbml0aWFsTGVuZ3RoICsgIiwgaGlzdG9yeS5sZW5n
dGg9IiArIGhpc3RvcnkubGVuZ3RoOwotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
ICAgICAgIGJyZWFrOwogICAgIH0KICAgfSwgMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvaGlzdG9yeS1yZXBsYWNlLXVwZGF0ZXMtY3VycmVudC1pdGVtLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3RvcnktcmVwbGFjZS11cGRhdGVzLWN1
cnJlbnQtaXRlbS5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvaGlzdG9yeS1yZXBsYWNlLXVwZGF0ZXMtY3VycmVudC1pdGVtLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOCArMSw4IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQmFja0Zvcndh
cmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiB9CiAKIG9udW5sb2Fk
ID0gZnVuY3Rpb24oKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvaGlzdG9yeS1z
dWJmcmFtZS13aXRoLW5hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvaGlzdG9yeS1zdWJmcmFtZS13aXRoLW5hbWUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2hpc3Rvcnktc3ViZnJhbWUtd2l0aC1uYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDEwICsxMSwxMCBAQCB2YXIgdGVzdFdpbmRvdzsKIAog
b25sb2FkID0gZnVuY3Rpb24oKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsK
LSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogICAgIH0KICAgICAKICAgICB0ZXN0V2luZG93ID0gd2luZG93Lm9wZW4oJ3Jlc291cmNl
cy9oaXN0b3J5LXN1YmZyYW1lLXdpdGgtbmFtZS1jb250YWluZXIuaHRtbCcpOwpAQCAtNjIsOCAr
NjIsOCBAQCBmdW5jdGlvbiBvbkZyYW1lTG9hZGVkKHBhZ2VJZCkKICAgICAKICAgICBpZiAoY3Vy
cmVudFN0YXRlID09IDQpIHsKICAgICAgICAgdGVzdFBhc3NlZCgnQ29tcGxldGU6IG5hdmlnYXRl
ZCB0aHJvdWdoIGFsbCB0aGUgc3RhdGVzJyk7Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2hpc3RvcnlfcmVsb2FkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L2hpc3RvcnlfcmVsb2FkLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysr
IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9oaXN0b3J5X3JlbG9hZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0zLDEwICszLDEwIEBACiAgICAgPHNjcmlwdD4KICAgICB2YXIgaSA9IDA7CiAgICAg
ZnVuY3Rpb24gdGVzdCgpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3Mo
KTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5X
aW5kb3dzKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgICAgICAgICAgdmFyIGJ1dHRvbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidXR0b24iKTsKICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGJ1dHRvbi5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCArIGJ1dHRvbi5v
ZmZzZXRMZWZ0ICsgYnV0dG9uLm9mZnNldFdpZHRoIC8gMiwgYnV0dG9uLm9mZnNldFBhcmVudC5v
ZmZzZXRUb3AgKyAgYnV0dG9uLm9mZnNldFRvcCArIGJ1dHRvbi5vZmZzZXRIZWlnaHQgLyAyKTsK
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L2xvY2F0aW9uLXJlcGxhY2UtaGFzaC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9sb2NhdGlvbi1yZXBsYWNlLWhhc2guaHRtbAkocmV2aXNp
b24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L2xvY2F0aW9uLXJlcGxhY2Ut
aGFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMywxMCArMTMsMTAgQEAgdmFyIHRlc3RXaW5k
b3c7CiAKIG9ubG9hZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5k
b3dzKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKICAgICB9CiAKICAgICB0ZXN0V2luZG93ID0gd2luZG93Lm9wZW4oJ3Jlc291
cmNlcy9sb2NhdGlvbi1yZXBsYWNlLWhhc2gtMS5odG1sJyk7CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2hpc3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRpcGxlLWNsYXNzZXMtdmlzaXRlZC5odG1sCShy
ZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbXVsdGlwbGUtY2xh
c3Nlcy12aXNpdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsMTYgQEAKIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOwotICAgIHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5rZWVwV2ViSGlzdG9yeSgpOworICAgIHdp
bmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gY29tcGFyZVN0eWxl
cygpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICB2
YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5jb21wdXRlZFN0eWxl
SW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKLSAg
ICAgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmNvbXB1
dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdv
JykpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB2YXIgZmlyc3RTdHls
ZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykpOworICAgICAgICB2YXIgc2Vjb25kU3R5bGUg
PSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsKICAgICAgICAgaWYgKGZpcnN0U3R5bGUuY29s
b3IgIT0gc2Vjb25kU3R5bGUuY29sb3IpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTCc7CiAgICAgICAgICAgICByZXR1cm47
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9uZXN0ZWQtdmlzaXRlZC10
ZXN0Lmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9u
ZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSArMSw5IEBACiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsKLSAg
ICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIua2VlcFdlYkhpc3RvcnkoKTsKKyAg
ICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIGNvbXBhcmVT
dHlsZXMoKQpAQCAtMTQsOSArMTQsOSBAQCBmdW5jdGlvbiBjb21wYXJlU3R5bGVzKCkKICAgICBh
bmNob3IuaW5uZXJIVE1MID0gIk9uZSI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Vu
Y2xvc3VyZScpLmFwcGVuZENoaWxkKGFuY2hvcik7CiAKLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0gICAgICAgIHZhciBmaXJzdFN0eWxlID0gd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnb25lJykpOwotICAgICAgICB2YXIgc2Vjb25kU3R5bGUgPSB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHZhciBmaXJzdFN0eWxlID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUnKSk7
CisgICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOwog
ICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBzZWNvbmRTdHlsZS5jb2xvcikgewogICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdG
QUlMJzsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9yZWRpcmVjdC12aWEtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L3JlZGlyZWN0LXZpYS1pZnJhbWUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3JlZGlyZWN0LXZpYS1pZnJhbWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw5ICszLDkgQEAKIDxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgogPC9ib2R5
PgogPHNjcmlwdD4KLSAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CisgICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgfQogCiAgIGZ1bmN0aW9uIG9ubG9hZCgpIHsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMtY2hhbmdp
bmctZnJhZ21lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
c2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLWZyYWdtZW50Lmh0bWwJKHJldmlzaW9uIDEy
MTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYW1lLWRvY3VtZW50LWlmcmFtZXMt
Y2hhbmdpbmctZnJhZ21lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsMTAgKzE1LDEwIEBA
IHZhciB3ZW50QmFjayA9IGZhbHNlOwogCiBkZXNjcmlwdGlvbignVGVzdHMgdGhhdCB3ZSB0cmln
Z2VyIHNhbWUtZG9jdW1lbnQgbmF2aWdhdGlvbiB3aGVuIGhpc3RvcnkgZW50cmllcyBhcmUgZ2Vu
ZXJhdGVkIHZpYSBmcmFnbWVudCBjaGFuZ2VzLCBldmVuIGlmIHRoZSBmcmFtZXMgcHJlc2VudCBp
biB0aGUgZG9jdW1lbnQgY2hhbmdlIGJldHdlZW4gaGlzdG9yeSBlbnRyaWVzLicpOwogCi1pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuY2xlYXJC
YWNrRm9yd2FyZExpc3QoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0Zvcndh
cmRMaXN0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuY2xlYXJCYWNrRm9yd2FyZExpc3Qo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBCYWNrRm9yd2FyZExpc3QoKTsKIH0KIAogb25sb2FkID0g
ZnVuY3Rpb24oKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhbWUtZG9jdW1lbnQt
aWZyYW1lcy1jaGFuZ2luZy1wdXNoc3RhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2hpc3Rvcnkvc2FtZS1kb2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLXB1c2hzdGF0ZS5o
dG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2FtZS1k
b2N1bWVudC1pZnJhbWVzLWNoYW5naW5nLXB1c2hzdGF0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xNSwxMCArMTUsMTAgQEAgdmFyIHdlbnRCYWNrID0gZmFsc2U7CiAKIGRlc2NyaXB0aW9uKCdU
ZXN0cyB0aGF0IHdlIHRyaWdnZXIgc2FtZS1kb2N1bWVudCBuYXZpZ2F0aW9uIHdoZW4gaGlzdG9y
eSBlbnRyaWVzIGFyZSBnZW5lcmF0ZWQgdmlhIHB1c2hTdGF0ZSwgZXZlbiBpZiB0aGUgZnJhbWVz
IHByZXNlbnQgaW4gdGhlIGRvY3VtZW50IGNoYW5nZSBiZXR3ZWVuIGhpc3RvcnkgZW50cmllcy4n
KTsKIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEJhY2tGb3J3YXJkTGlzdCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmNsZWFyQmFja0Zv
cndhcmRMaXN0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7CiB9CiAK
IG9ubG9hZCA9IGZ1bmN0aW9uKCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZl
cy1zdGF0ZS1hZnRlci1mcmFnbWVudC1uYXYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhZ21lbnQtbmF2Lmh0bWwJKHJldmlz
aW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zYXZlcy1zdGF0ZS1hZnRl
ci1mcmFnbWVudC1uYXYuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQCBmdW5j
dGlvbiBydW5UZXN0U3RlcCgpIHsKICAgdmFyIGZpZWxkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ZpZWxkJyk7CiAKICAgaWYgKGhhc2ggPT0gIiIpIHsKLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7Ci0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIH0KICAgICAvLyBMb2NhdGlvbiBj
aGFuZ2VzIG5lZWQgdG8gaGFwcGVuIG91dHNpZGUgdGhlIG9ubG9hZCBoYW5kbGVyIHRvIGdlbmVy
YXRlIGhpc3RvcnkgZW50cmllcy4KICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewpAQCAtMzcs
OCArMzcsOCBAQCBmdW5jdGlvbiBydW5UZXN0U3RlcCgpIHsKICAgICB9LCAwKTsKICAgfSBlbHNl
IHsKICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9IChmaWVsZC52YWx1ZSA9PSAnJykgPyAn
RkFJTCcgOiAnUEFTUyc7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgfQogfQogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhbWUtbmF2Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NhdmVzLXN0YXRlLWFm
dGVyLWZyYW1lLW5hdi5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2hpc3Rvcnkvc2F2ZXMtc3RhdGUtYWZ0ZXItZnJhbWUtbmF2Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTQyLDE2ICs0MiwxNiBAQCBmdW5jdGlvbiBmcmFtZUxvYWRlZCgpIHsKICAgICBpZiAoZ2V0
VGV4dElucHV0KCkudmFsdWUgPT0gInRlc3QiKQogICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJQQVNTIjsKIAotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwogICAgIH0KICAgfQogfQogCiBvbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgfQogICBjbGlja0xpbmsoKTsKIH0K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2VsZi1pcy12aXNpdGVkLmh0bWwJ
KHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zZWxmLWlzLXZp
c2l0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNiArMSwxNiBAQAogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLmtlZXBXZWJIaXN0b3J5KCk7Ci0gICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHdpbmRvdy50ZXN0UnVubmVyLmtlZXBXZWJIaXN0b3J5KCk7CisgICAgd2luZG93LnRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogfQogCiBmdW5jdGlvbiBjb21wYXJlU3R5bGVzKCkKIHsK
LSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIHZhciBmaXJz
dFN0eWxlID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykpOwotICAgICAgICB2
YXIgc2Vjb25kU3R5bGUgPSB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuY29tcHV0ZWRTdHls
ZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHZhciBmaXJzdFN0eWxlID0gd2lu
ZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdvbmUnKSk7CisgICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IHdpbmRv
dy50ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndHdvJykpOwogICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBz
ZWNvbmRTdHlsZS5jb2xvciB8fCBmaXJzdFN0eWxlLmJhY2tncm91bmRDb2xvciA9PSBzZWNvbmRT
dHlsZS5iYWNrZ3JvdW5kQ29sb3IpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTCc7CiAgICAgICAgICAgICByZXR1cm47Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRl
c3QuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Np
YmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzEsMTYgQEAK
IDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgewotICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOwot
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5rZWVwV2ViSGlzdG9yeSgpOwor
ICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24gY29tcGFy
ZVN0eWxlcygpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5jb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScp
KTsKLSAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
LmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndHdvJykpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB2YXIgZmly
c3RTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVk
SW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykpOworICAgICAgICB2YXIgc2Vjb25k
U3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsKICAgICAgICAgaWYgKGZpcnN0U3R5
bGUuY29sb3IgPT0gc2Vjb25kU3R5bGUuY29sb3IpIHsKICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTCc7CiAgICAgICAgICAgICBy
ZXR1cm47CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvdGltZWQtcmVmcmVzaC1pbi1j
YWNoZWQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
dGltZWQtcmVmcmVzaC1pbi1jYWNoZWQtZnJhbWUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3RpbWVkLXJlZnJlc2gtaW4tY2FjaGVkLWZyYW1lLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTUgKzEsMTUgQEAKIDxib2R5IG9ubG9hZD0icmVkaXJl
Y3QoKSI+CiA8IS0tIE5lZWRzIHRvIHRha2UgdHdvIHNlY29uZHMsIGJlY2F1c2UgYSBmYXN0ZXIg
cmVmcmVzaCB3b3VsZCByZXN1bHQgaW4gbm90IGNyZWF0aW5nIGEgYi9mIGl0ZW0gZm9yIHRoZSBu
YXZpZ2F0aW9uIC0tPgotPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxtZXRhIGh0dHAtZXF1
aXY9IlJlZnJlc2giIGNvbnRlbnQ9IjI7IFVSTD1hYm91dDpibGFuayI+PHNjcmlwdD5pZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7IHdpbmRvdy5vbnBhZ2VoaWRlPWZ1bmN0aW9uKGUp
e2FsZXJ0KCZhcG9zO3BhZ2VoaWRlICZhcG9zOyArIGUucGVyc2lzdGVkKX07IH08L3NjcmlwdD4n
PjwvaWZyYW1lPgorPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxtZXRhIGh0dHAtZXF1aXY9
IlJlZnJlc2giIGNvbnRlbnQ9IjI7IFVSTD1hYm91dDpibGFuayI+PHNjcmlwdD5pZiAod2luZG93
LnRlc3RSdW5uZXIpIHsgd2luZG93Lm9ucGFnZWhpZGU9ZnVuY3Rpb24oZSl7YWxlcnQoJmFwb3M7
cGFnZWhpZGUgJmFwb3M7ICsgZS5wZXJzaXN0ZWQpfTsgfTwvc2NyaXB0Pic+PC9pZnJhbWU+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CiB9CiAKIGZ1bmN0aW9uIHJlZGlyZWN0
KCkKIHsKLSAgICBsb2NhdGlvbj0nZGF0YTp0ZXh0L2h0bWwsPHA+UEFTU0VEIGlmIGRpZG4mYXBv
czt0IGNyYXNoIGluIHR3byBzZWNvbmRzLjwvcD48c2NyaXB0PmlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHNldFRpbWVvdXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KSIsIDI1MDApOyA8L3NjcicgKyAnaXB0Pic7CisgICAgbG9jYXRpb249J2RhdGE6dGV4dC9odG1s
LDxwPlBBU1NFRCBpZiBkaWRuJmFwb3M7dCBjcmFzaCBpbiB0d28gc2Vjb25kcy48L3A+PHNjcmlw
dD5pZiAod2luZG93LnRlc3RSdW5uZXIpIHNldFRpbWVvdXQoInRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpIiwgMjUwMCk7IDwvc2NyJyArICdpcHQ+JzsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9oaXN0b3J5L3Zpc2l0ZWQtZ2VuZXJhdGVkLWNvbnRlbnQtdGVzdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS92aXNpdGVkLWdlbmVyYXRlZC1j
b250ZW50LXRlc3QuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9o
aXN0b3J5L3Zpc2l0ZWQtZ2VuZXJhdGVkLWNvbnRlbnQtdGVzdC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMiwxMCArMTIsMTAgQEAKICAgPC9oZWFkPgogICA8Ym9keSBvbmxvYWQ9ImluaXQoKSI+
CiAgICAgPHNjcmlwdD4KLSAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
LSAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIua2VlcFdlYkhpc3RvcnkoKTsK
LSAgICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5r
ZWVwV2ViSGlzdG9yeSgpOworICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICB9
CiAgICAgICB2YXIgb1Zpc2l0ZWRMaW5rLCBvVW52aXNpdGVkTGluazsKICAgICAgIGZ1bmN0aW9u
IGluaXQoKSB7CkBAIC0yOSw4ICsyOSw4IEBACiAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKSkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoc0RpZmZlcmVudCkpOwogICAgICAgICAgIG9WaXNpdGVkTGlu
ay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgIG9VbnZpc2l0ZWRMaW5rLnN0eWxl
LmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICAgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgIHdp
bmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgfSwgMCk7CiAgICAgICB9CiAg
ICAgICBmdW5jdGlvbiBjcmVhdGVJbnZpc2libGVMaW5rKHNVcmwpIHsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvaGlzdG9yeS92aXNpdGVkLWxpbmstYmFja2dyb3VuZC1jb2xvci5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS92aXNpdGVkLWxpbmstYmFja2dyb3Vu
ZC1jb2xvci5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rv
cnkvdmlzaXRlZC1saW5rLWJhY2tncm91bmQtY29sb3IuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OSw4ICs5LDggQEAgYTp2aXNpdGVkIHsKIH0KIDwvc3R5bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIu
a2VlcFdlYkhpc3RvcnkoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVz
dFJ1bm5lci5rZWVwV2ViSGlzdG9yeSgpOwogPC9zY3JpcHQ+CiA8Ym9keT4KIDxpZnJhbWUgc3Jj
PSJyZXNvdXJjZXMvZHVtbXkuaHRtbCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9pZnJhbWU+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvd2luZG93LW9wZW4uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvd2luZG93LW9wZW4uaHRtbAkocmV2aXNpb24g
MTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3dpbmRvdy1vcGVuLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEzLDEyICsxMywxMiBAQAogPHAgaWQ9InJlc3VsdCI+CiA8L3A+CiA8
c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5rZWVwV2ViSGlzdG9yeSgpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5X
aW5kb3dzKHRydWUpOwotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJlbWFp
bmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVy
LmtlZXBXZWJIaXN0b3J5KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKHRydWUpOworICAgICAgICB0ZXN0
UnVubmVyLnNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSh0cnVlKTsKICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9ICJGQUlMOiBU
ZXN0IGRpZCBub3QgY29tcGxldGUiOwogICAgICAgICB2YXIgYnV0dG9uID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImJ1dHRvbiIpOwogICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhi
dXR0b24ub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQgKyBidXR0b24ub2Zmc2V0TGVmdCArIGJ1dHRv
bi5vZmZzZXRXaWR0aCAvIDIsIGJ1dHRvbi5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wICsgIGJ1dHRv
bi5vZmZzZXRUb3AgKyBidXR0b24ub2Zmc2V0SGVpZ2h0IC8gMik7CkBAIC0yOSw5ICsyOSw5IEBA
CiAgICAgZnVuY3Rpb24gY2hpbGRMb2FkZWQoKQogICAgIHsKICAgICAgICAgY2hpbGRXaW5kb3cu
Y2xvc2UoKTsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IGxh
eW91dFRlc3RDb250cm9sbGVyLndlYkhpc3RvcnlJdGVtQ291bnQgPT09IDEgPyAiUEFTUyIgOiAi
RkFJTCI7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9IHRlc3RSdW5uZXIud2ViSGlzdG9yeUl0
ZW1Db3VudCA9PT0gMSA/ICJQQVNTIiA6ICJGQUlMIjsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAgICAgfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2NsaWNrZWQtbGluay1pcy12aXNpdGVkLTIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2NsaWNr
ZWQtbGluay1pcy12aXNpdGVkLTIuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9jbGlja2VkLWxpbmstaXMtdmlzaXRlZC0yLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiBmdW5jdGlv
biBydW5UZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9CiB9
CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvaGlz
dG9yeS1iYWNrLXdpdGhpbi1zdWJmcmFtZS1oYXNoLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3RvcnktYmFjay13aXRoaW4tc3ViZnJh
bWUtaGFzaC0yLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9yZXNvdXJjZXMvaGlzdG9yeS1iYWNrLXdpdGhpbi1zdWJmcmFtZS1oYXNoLTIuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQCBvbmhhc2hjaGFuZ2UgPSBmdW5jdGlvbigp
IHsKICAgfQogICBpZiAobG9jYXRpb24uaGFzaCA9PSAiIikgewogICAgIHBhcmVudC5kb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gIlBBU1MiOwotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CiAgIH0KIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5LXJlcGxhY2UtdXBkYXRlcy1jdXJyZW50LWl0ZW0t
ZG9uZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJj
ZXMvaGlzdG9yeS1yZXBsYWNlLXVwZGF0ZXMtY3VycmVudC1pdGVtLWRvbmUuaHRtbAkocmV2aXNp
b24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5
LXJlcGxhY2UtdXBkYXRlcy1jdXJyZW50LWl0ZW0tZG9uZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogPHNjcmlwdD4KIG9ubG9hZCA9IGZ1bmN0aW9uKCkgewotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8Ym9keT5QQVNTPC9ib2R5PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3Jlc291cmNlcy9oaXN0b3J5X3JlbG9hZF93aW5k
b3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2Vz
L2hpc3RvcnlfcmVsb2FkX3dpbmRvdy5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2hpc3RvcnlfcmVsb2FkX3dpbmRvdy5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw4ICsyMiw4IEBACiAgICAgICAgIGZ1bmN0aW9uIGNsb3NlZCgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh3aW5kb3cub3BlbmVyLmkgPT0gMikKLSAgICAg
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgICAgICBvcGVuZXIuc2V0VGltZW91dCgibGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpIiwgMCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgICAgICBvcGVuZXIuc2V0VGltZW91dCgidGVzdFJ1bm5lci5ub3RpZnlEb25lKCki
LCAwKTsKICAgICAgICAgfQogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2hlYWQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL3JlZGlyZWN0LXRhcmdldC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvcmVkaXJlY3Qt
dGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9yZXNvdXJjZXMvcmVkaXJlY3QtdGFyZ2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEx
ICsyMiwxMSBAQCBmdW5jdGlvbiB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpCiB9CiAKIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24gKCkgewotICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKICAgICAgICAgdGVzdEhpc3RvcnlJdGVtQ291bnQoKTsKLSAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3YXJkTGlzdCgpOwotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEJh
Y2tGb3J3YXJkTGlzdCgpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9
IGVsc2UgewogICAgICAgICB0ZXN0SGlzdG9yeUl0ZW1Db3VudCgpOwogICAgIH0KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaHRtbC9hZG9wdC1wYXJlbnQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvYWRvcHQtcGFyZW50LWZyYW1lLmh0bWwJKHJldmlzaW9u
IDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9hZG9wdC1wYXJlbnQtZnJhbWUuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNiw4ICs2LDggQEAKIDxkaXY+QWRvcHRpbmcgZ3JhbmRwYXJl
bnQgZnJhbWU6IDxzcGFuIGlkPSJncmFuZGNoaWxkIj48L3NwYW4+PC9kaXY+CiA8c2NyaXB0Pgog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKIAogZnVuY3Rpb24gY3JlYXRlRnJhbWUoaWQsIHBhcmVudCkgewogICAg
IHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaHRtbC9ib2R5LW9mZnNldC1wcm9wZXJ0aWVzLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2JvZHktb2Zmc2V0LXByb3BlcnRpZXMuaHRtbAko
cmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2JvZHktb2Zmc2V0LXBy
b3BlcnRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDggQEAKIAogPC9wcmU+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB2YXIgY29uc29sZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIik7CiBjb25zb2xlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJib2R5Lm9mZnNldFBhcmVudCA9ICIgKyBkb2N1bWVudC5ib2R5Lm9mZnNldFBhcmVudCAr
ICJcbiIpKTsKIGNvbnNvbGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImJv
ZHkub2Zmc2V0TGVmdCA9ICIgKyBkb2N1bWVudC5ib2R5Lm9mZnNldExlZnQgKyAiXG4iKSk7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvY3Jhc2gtc3R5bGUtZmlyc3QtbGV0dGVyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2NyYXNoLXN0eWxlLWZpcnN0LWxl
dHRlci5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvY3Jh
c2gtc3R5bGUtZmlyc3QtbGV0dGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEgQEAKLTxz
dmc+PHA+VGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
MzE2OiBUaGUgdGVzdCBQQVNTRUQgaWYgaXQgZGlkIG5vdCBjcmFzaC48L3A+PHNjcmlwdD5pZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7PC9zY3JpcHQ+PHVzZT48c3R5bGU+OmZpcnN0LWxldHRlcnttYXJnaW4tcmlnaHQ6YXV0
b308aT48c3R5bGU+Cis8c3ZnPjxwPlRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00OTMxNjogVGhlIHRlc3QgUEFTU0VEIGlmIGl0IGRpZCBub3QgY3Jhc2gu
PC9wPjxzY3JpcHQ+aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTs8L3NjcmlwdD48dXNlPjxzdHlsZT46Zmlyc3QtbGV0dGVye21hcmdpbi1yaWdodDphdXRvfTxp
PjxzdHlsZT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5
LTEtYW5kLWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Rl
dGFpbHMtYWRkLXN1bW1hcnktMS1hbmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1bW1hcnktMS1hbmQtY2xpY2suaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQCB2YXIgY3JlYXRlTmV3RWxlbWVudCA9
IGZ1bmN0aW9uICh0YWcsIGlkCiB2YXIgcnVuVGVzdHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR0MSIpLmFwcGVuZENoaWxkKGNyZWF0ZU5ld0VsZW1lbnQo
InN1bW1hcnkiLCAibmV3MSIsICJuZXcgMSIpKTsKIAotICAgIGlmICghd2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgaWYgKCF3aW5kb3cudGVz
dFJ1bm5lciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICByZXR1cm47CiAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oMiwgMik7CiAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1hZGQtc3VtbWFyeS0yLWFuZC1j
bGljay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFk
ZC1zdW1tYXJ5LTItYW5kLWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRl
c3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTItYW5kLWNsaWNrLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAgdmFyIHJ1blRlc3RzID0gZnVuY3Rpb24gKCkgewog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkdDEiKS5hcHBlbmRDaGlsZChjcmVhdGVOZXdF
bGVtZW50KCJzdW1tYXJ5IiwgIm5ldzEiLCAibmV3IDEiKSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImR0MSIpLmFwcGVuZENoaWxkKGNyZWF0ZU5ld0VsZW1lbnQoInN1bW1hcnkiLCAi
bmV3MiIsICJuZXcgMiIpKTsKIAotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
IHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAh
d2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICByZXR1cm47CiAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oMiwgMik7CiAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1hZGQtc3VtbWFyeS0zLWFuZC1jbGljay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTMt
YW5kLWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaHRt
bC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTMtYW5kLWNsaWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEyLDcgKzEyLDcgQEAgdmFyIHJ1blRlc3RzID0gZnVuY3Rpb24gKCkgewogICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkdDEiKS5hcHBlbmRDaGlsZChjcmVhdGVOZXdFbGVtZW50KCJzdW1t
YXJ5IiwgIm5ldzEiLCAibmV3IDEiKSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR0
MSIpLmluc2VydEJlZm9yZShjcmVhdGVOZXdFbGVtZW50KCJzdW1tYXJ5IiwgIm5ldzIiLCAibmV3
IDIiKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5ldzEiKSk7CiAKLSAgICBpZiAoIXdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQorICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKICAgICAgICAgcmV0dXJu
OwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIsIDIpOwogICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bigpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1bW1h
cnktNC1hbmQtY2xpY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwv
ZGV0YWlscy1hZGQtc3VtbWFyeS00LWFuZC1jbGljay5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1hZGQtc3VtbWFyeS00LWFuZC1jbGljay5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBAIHZhciBjcmVhdGVOZXdFbGVtZW50
ID0gZnVuY3Rpb24gKHRhZywgaWQKIHZhciBydW5UZXN0cyA9IGZ1bmN0aW9uICgpIHsKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHQxIikuYXBwZW5kQ2hpbGQoY3JlYXRlTmV3RWxlbWVu
dCgic3VtbWFyeSIsICJuZXcxIiwgIm5ldyAxIikpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICBpZiAoIXdpbmRvdy50
ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTUtYW5k
LWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMt
YWRkLXN1bW1hcnktNS1hbmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1bW1hcnktNS1hbmQtY2xpY2suaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQCB2YXIgY3JlYXRlTmV3RWxlbWVudCA9IGZ1bmN0
aW9uICh0YWcsIGlkCiB2YXIgcnVuVGVzdHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImR0MSIpLmluc2VydEJlZm9yZShjcmVhdGVOZXdFbGVtZW50KCJzdW1t
YXJ5IiwgIm5ldzEiLCAibmV3IDEiKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1bW1hcnkx
IikpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5l
dmVudFNlbmRlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRT
ZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAy
KTsKICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
aHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTYtYW5kLWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtYWRkLXN1bW1hcnktNi1hbmQtY2xpY2suaHRt
bAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtYWRk
LXN1bW1hcnktNi1hbmQtY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBA
QCB2YXIgY3JlYXRlTmV3RWxlbWVudCA9IGZ1bmN0aW9uICh0YWcsIGlkCiB2YXIgcnVuVGVzdHMg
PSBmdW5jdGlvbiAoKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR0MSIpLmFwcGVu
ZENoaWxkKGNyZWF0ZU5ld0VsZW1lbnQoInN1bW1hcnkiLCAibmV3MSIsICJuZXcgMSIpKTsKIAot
ICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5kb3cuZXZlbnRTZW5k
ZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQog
ICAgICAgICByZXR1cm47CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMiwgMik7CiAgICAg
ZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0
YWlscy1hZGQtc3VtbWFyeS03LWFuZC1jbGljay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTctYW5kLWNsaWNrLmh0bWwJKHJldmlz
aW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5
LTctYW5kLWNsaWNrLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDcgQEAgdmFyIHJ1
blRlc3RzID0gZnVuY3Rpb24gKCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkdDEi
KS5hcHBlbmRDaGlsZChjcmVhdGVOZXdFbGVtZW50KCJzdW1tYXJ5IiwgIm5ldzEiLCAibmV3IDEi
KSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR0MSIpLmFwcGVuZENoaWxkKGNyZWF0
ZU5ld0VsZW1lbnQoInN1bW1hcnkiLCAibmV3MiIsICJuZXcgMiIpKTsKIAotICAgIGlmICghd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgaWYg
KCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhd2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICByZXR1
cm47CiAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMiwgMik7CiAgICAgZXZlbnRTZW5kZXIu
bW91c2VEb3duKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1hZGQtc3Vt
bWFyeS04LWFuZC1jbGljay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRt
bC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTgtYW5kLWNsaWNrLmh0bWwJKHJldmlzaW9uIDEyMTAwNykK
KysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTgtYW5kLWNsaWNr
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAgdmFyIHJ1blRlc3RzID0gZnVu
Y3Rpb24gKCkgewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkdDEiKS5hcHBlbmRDaGls
ZChjcmVhdGVOZXdFbGVtZW50KCJzdW1tYXJ5IiwgIm5ldzEiLCAibmV3IDEiKSk7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR0MSIpLmluc2VydEJlZm9yZShjcmVhdGVOZXdFbGVtZW50
KCJzdW1tYXJ5IiwgIm5ldzIiLCAibmV3IDIiKSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm5l
dzEiKSk7CiAKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAhd2luZG93
LmV2ZW50U2VuZGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRvdy5ldmVu
dFNlbmRlcikKICAgICAgICAgcmV0dXJuOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDIs
IDIpOwogICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9odG1sL2RldGFpbHMtYWRkLXN1bW1hcnktOS1hbmQtY2xpY2suaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1hZGQtc3VtbWFyeS05LWFuZC1jbGljay5o
dG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1h
ZGQtc3VtbWFyeS05LWFuZC1jbGljay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3
IEBAIHZhciBjcmVhdGVOZXdFbGVtZW50ID0gZnVuY3Rpb24gKHRhZywgaWQKIHZhciBydW5UZXN0
cyA9IGZ1bmN0aW9uICgpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHQxIikuYXBw
ZW5kQ2hpbGQoY3JlYXRlTmV3RWxlbWVudCgic3VtbWFyeSIsICJuZXcxIiwgIm5ldyAxIikpOwog
Ci0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5ldmVudFNl
bmRlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIp
CiAgICAgICAgIHJldHVybjsKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAg
ICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9k
ZXRhaWxzLWFkZC1zdW1tYXJ5LTEwLWFuZC1jbGljay5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWFkZC1zdW1tYXJ5LTEwLWFuZC1jbGljay5odG1sCShy
ZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1hZGQtc3Vt
bWFyeS0xMC1hbmQtY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsNyArMTAsNyBAQCB2
YXIgY3JlYXRlTmV3RWxlbWVudCA9IGZ1bmN0aW9uICh0YWcsIGlkCiB2YXIgcnVuVGVzdHMgPSBm
dW5jdGlvbiAoKSB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImR0MSIpLmluc2VydEJl
Zm9yZShjcmVhdGVOZXdFbGVtZW50KCJzdW1tYXJ5IiwgIm5ldzEiLCAibmV3IDEiKSwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN1bW1hcnkxIikpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICBpZiAoIXdpbmRvdy50
ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNlbmRlci5tb3VzZURvd24o
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWNoaWxkcmVuLW1lcmdlLWNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtY2hp
bGRyZW4tbWVyZ2UtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9odG1sL2RldGFpbHMtY2hpbGRyZW4tbWVyZ2UtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMywxMSArMywxMSBAQAogCiB2YXIgcnVuVGVzdHMgPSBmdW5jdGlvbiAoKSB7CiAKLSAg
ICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwogCiAgICAgdmFyIGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZDEiKTsKIApAQCAtMTcs
NyArMTcsNyBAQCB2YXIgcnVuVGVzdHMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBkLm9w
ZW4gPSB0cnVlOwogICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAg
ICAgICAgICAgZC5vcGVuID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgIH0sIDEpOwogICAgIH0sIDEpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtZWxlbWVudC1yZW5kZXItaW5saW5lLWNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtZWxl
bWVudC1yZW5kZXItaW5saW5lLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91
dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLWVsZW1lbnQtcmVuZGVyLWlubGluZS1jcmFzaC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+DQogPGhlYWQ+DQogPHNjcmlw
dD4NCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQ0KKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQogPC9zY3JpcHQ+DQogPC9oZWFk
Pg0KIDxib2R5Pg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLW1vdXNlLWNs
aWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtbW91
c2UtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1s
L2RldGFpbHMtbW91c2UtY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTAgKzYxLDEw
IEBAIHZhciB0ZXN0RWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7CiAKIHZhciBydW5UZXN0
cyA9IGZ1bmN0aW9uICgpIHsKIAotICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
IHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAh
d2luZG93LmV2ZW50U2VuZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAg
ICB0ZXN0RWxlbWVudCgwKTsKICAgICB0ZXN0RWxlbWVudCgxKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1zdW1tYXJ5LTEtYW5kLWNsaWNrLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktMS1h
bmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1s
L2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktMS1hbmQtY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMyw3ICszLDcgQEAKIHZhciBydW5UZXN0cyA9IGZ1bmN0aW9uICgpIHsKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZHQxIikucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInN1bW1hcnkxIikpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIg
fHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3
aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1zdW1tYXJ5LTItYW5kLWNsaWNrLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1h
cnktMi1hbmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktMi1hbmQtY2xpY2suaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMyw3ICszLDcgQEAKIHZhciBydW5UZXN0cyA9IGZ1bmN0aW9uICgpIHsKICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHQxIikucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN1bW1hcnkxIikpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVy
IHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1zdW1tYXJ5LTMtYW5kLWNsaWNr
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3Zl
LXN1bW1hcnktMy1hbmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktMy1hbmQtY2xpY2suaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIHZhciBydW5UZXN0cyA9IGZ1bmN0aW9uICgpIHsK
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHQxIikucmVtb3ZlQ2hpbGQoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInN1bW1hcnkyIikpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1zdW1tYXJ5LTQtYW5k
LWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMt
cmVtb3ZlLXN1bW1hcnktNC1hbmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktNC1hbmQtY2xpY2suaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIHZhciBydW5UZXN0cyA9IGZ1bmN0aW9u
ICgpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHQxIikucmVtb3ZlQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1bW1hcnkxIikpOwogCi0gICAgaWYgKCF3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICBpZiAoIXdpbmRv
dy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNlbmRlci5tb3VzZURv
d24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1zdW1tYXJ5
LTUtYW5kLWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL2Rl
dGFpbHMtcmVtb3ZlLXN1bW1hcnktNS1hbmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIxMDA3KQor
KysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktNS1hbmQtY2xp
Y2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIHZhciBydW5UZXN0cyA9IGZ1
bmN0aW9uICgpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHQxIikucmVtb3ZlQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1bW1hcnkxIikpOwogCi0gICAgaWYgKCF3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICBpZiAo
IXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLXJlbW92ZS1z
dW1tYXJ5LTYtYW5kLWNsaWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9o
dG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktNi1hbmQtY2xpY2suaHRtbAkocmV2aXNpb24gMTIx
MDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtcmVtb3ZlLXN1bW1hcnktNi1h
bmQtY2xpY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKIHZhciBydW5UZXN0
cyA9IGZ1bmN0aW9uICgpIHsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZHQxIikucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1bW1hcnkyIikpOwogCi0gICAgaWYg
KCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgIXdpbmRvdy5ldmVudFNlbmRlcikKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF3aW5kb3cuZXZlbnRTZW5kZXIpCiAgICAgICAg
IHJldHVybjsKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygyLCAyKTsKICAgICBldmVudFNl
bmRlci5tb3VzZURvd24oKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLXJl
cGxhY2Utc3VtbWFyeS1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aHRtbC9kZXRhaWxzLXJlcGxhY2Utc3VtbWFyeS1jaGlsZC5odG1sCShyZXZpc2lvbiAxMjEwMDcp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1yZXBsYWNlLXN1bW1hcnktY2hpbGQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAog
ZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJydW4iKS5jbGljaygpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2h0bWwvZGV0YWlscy1yZXBsYWNlLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2h0bWwvZGV0YWlscy1yZXBsYWNlLXRleHQuaHRtbAkocmV2aXNpb24gMTIxMDA3
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtcmVwbGFjZS10ZXh0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKIGZ1bmN0aW9u
IHJ1blRlc3QoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cnVuIikuY2xpY2soKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9odG1s
L2RldGFpbHMtc3VtbWFyeS1kb2N1bWVudC1jaGlsZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvaHRtbC9kZXRhaWxzLXN1bW1hcnktZG9jdW1lbnQtY2hpbGQuaHRtbAkocmV2
aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2RldGFpbHMtc3VtbWFyeS1k
b2N1bWVudC1jaGlsZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+
CiA8Ym9keSBvbmxvYWQ9InRlc3QoKSI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIGZ1bmN0
aW9uIHRlc3QoKSB7CiAgICAgZG9jdW1lbnQub3BlbigpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9odG1sL2RyYWdnYWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRt
bC9kcmFnZ2FibGUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9o
dG1sL2RyYWdnYWJsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgIHByZS50ZXh0Q29udGVudCA9IHM7CiAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChwcmUpOwogICAgIAotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsgICAgCisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsg
ICAgCiB9OwogCiBkb2N1bWVudC5vbmRyYWdzdGFydCA9IGZ1bmN0aW9uKGUpCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2h0bWwvZW1wdHktZnJhZ21lbnQtaWQtZ290by10b3AuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZW1wdHktZnJhZ21lbnQtaWQtZ290by10b3Au
aHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL2VtcHR5LWZy
YWdtZW50LWlkLWdvdG8tdG9wLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8
aGVhZD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIGZ1bmN0
aW9uIHRlc3QoKSB7Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8o
MCwgMTAwMCk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9mb250LWZhY2UtZW1wdHkt
c2hvdWxkLW5vdC1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRt
bC9mb250LWZhY2UtZW1wdHktc2hvdWxkLW5vdC1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjEwMDcp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvZm9udC1mYWNlLWVtcHR5LXNob3VsZC1ub3QtY3Jh
c2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsyLDggQEAKIDxodG1sPgogPGhlYWQ+CiA8
c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9odG1sL21hcnF1ZWUtc2Nyb2xsYW1vdW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL21hcnF1ZWUtc2Nyb2xsYW1vdW50Lmh0bWwJKHJl
dmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9tYXJxdWVlLXNjcm9sbGFt
b3VudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGJvZHk+CiA8cD5UaGlz
IGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTA0MzQuIEl0IHZlcmlmaWVzIHRoYXQgYSBtYXJxdWVlIGRvZXMgbm90IGFuaW1h
dGUgd2hlbiBzY3JvbGxBbW91bnQgaXMgc2V0IHRvIDAgYnkgc2NyaXB0LjwvcD4KIDxzY3JpcHQ+
Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgdmFyIG1hcnF1ZWUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJtYXJxdWVlIik7CiAgICAgbWFycXVlZS5pbm5lckhUTUwg
PSAiVGVzdCI7CiAgICAgbWFycXVlZS53aWR0aCA9ICIxMDBweCI7CkBAIC0xMCw5ICsxMCw5IEBA
CiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtYXJxdWVlKTsKICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgewogICAgICAgICBtYXJxdWVlLnNjcm9sbEFtb3VudCA9IDA7Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CiAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICAgICAgICAgIH0sIDU1KTsKICAgICAg
ICAgfQogICAgIH0sIDApOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9odG1sL25hdi1lbGVtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL25hdi1lbGVtZW50Lmh0
bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9uYXYtZWxlbWVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBAQAogPHRpdGxlPlRlc3Qgb2YgSFRN
TDUgbmF2IGVsZW1lbnQ8L3RpdGxlPgogCiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Njcmlw
dD4KIAogPHN0eWxlPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9odG1sL29iamVjdC1pbWFnZS1u
ZXN0ZWQtZmFsbGJhY2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwv
b2JqZWN0LWltYWdlLW5lc3RlZC1mYWxsYmFjay5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2h0bWwvb2JqZWN0LWltYWdlLW5lc3RlZC1mYWxsYmFjay5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGh0bWw+CiAgICAgPHNjcmlwdD4KLSAgICAg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiAg
ICAgPGJvZHk+IAogICAgICAgICA8b2JqZWN0IHR5cGU9ImltYWdlL3BuZyIgZGF0YT0idGhpcy5v
YmplY3QuZG9lcy5ub3QuZXhpc3QuZHRkIj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9w
ZW5kaW5nLXN0eWxlc2hlZXQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2h0bWwvcGVuZGluZy1zdHlsZXNoZWV0LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMTAwNykK
KysrIExheW91dFRlc3RzL2Zhc3QvaHRtbC9wZW5kaW5nLXN0eWxlc2hlZXQtY3Jhc2guaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIDwvaGVhZD4KIDxib2R5PgogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0Jd2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwl3aW5kb3cudGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnbGluaycpOwogbGluay5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAndGV4dC9jc3MnKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaHRtbC9wcm9jZXNzLWVuZC10YWctZm9yLWluYm9keS1jcmFzaC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaHRtbC9wcm9jZXNzLWVuZC10YWct
Zm9yLWluYm9keS1jcmFzaC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2h0bWwvcHJvY2Vzcy1lbmQtdGFnLWZvci1pbmJvZHktY3Jhc2guaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw3ICsxLDcgQEAKIDxydD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAkKIGRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIlBBU1MiOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2h0bWwvc2NyaXB0LWFsbG93ZWQtdHlwZXMtbGFuZ3VhZ2VzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NjcmlwdC1hbGxvd2VkLXR5cGVzLWxhbmd1
YWdlcy5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2Ny
aXB0LWFsbG93ZWQtdHlwZXMtbGFuZ3VhZ2VzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQzLDgg
KzQzLDggQEAgZnVuY3Rpb24gY3JlYXRlU2NyaXB0RWxlbWVudCh0eXBlLCBsYW5ndQogCiBmdW5j
dGlvbiB0ZXN0KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHZhciB0
eXBlcyA9IFsKICAgICAgICAgbnVsbCwKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaHRtbC9zZWxl
Y3QtZHJvcGRvd24tY29uc2lzdGVudC1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL3NlbGVjdC1kcm9wZG93bi1jb25zaXN0ZW50LWJhY2tn
cm91bmQtY29sb3IuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9o
dG1sL3NlbGVjdC1kcm9wZG93bi1jb25zaXN0ZW50LWJhY2tncm91bmQtY29sb3IuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMjAsOCArMjAsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICQoJ3Jl
c3VsdCcpLnRleHRDb250ZW50ID0KICAgICAgICAgKGRlZmF1bHRfY29sb3IgPT0gc2l6ZTBfY29s
b3IgJiYgZGVmYXVsdF9jb2xvciA9PSBzaXplMV9jb2xvcikgPyAiUEFTUyIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAiRkFJTCI7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiA8L3NjcmlwdD4K
IDxib2R5IG9ubG9hZD0ndGVzdCgpOyc+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvc2V0
LXRleHQtZGlyZWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1s
L3NldC10ZXh0LWRpcmVjdGlvbi5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnB1dCk7CiBleHBlY3RlZCA9
ICdydGwnOwogc2VudElucHV0RXZlbnQgPSBmYWxzZTsKIHRleHRhcmVhLmZvY3VzKCk7Ci1sYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uKCdydGwnKTsKK3Rlc3RSdW5uZXIuc2V0
VGV4dERpcmVjdGlvbigncnRsJyk7CiBzaG91bGRCZVRydWUoJ3NlbnRJbnB1dEV2ZW50Jyk7CiAK
IC8vIENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIHRleHRhcmVhIGVsZW1lbnQgdG8g
TFRSLgpAQCAtNTcsMTQgKzU3LDE0IEBAIHNob3VsZEJlVHJ1ZSgnc2VudElucHV0RXZlbnQnKTsK
IGV4cGVjdGVkID0gJ2x0cic7CiBzZW50SW5wdXRFdmVudCA9IGZhbHNlOwogdGV4dGFyZWEuZm9j
dXMoKTsKLWxheW91dFRlc3RDb250cm9sbGVyLnNldFRleHREaXJlY3Rpb24oJ2x0cicpOwordGVz
dFJ1bm5lci5zZXRUZXh0RGlyZWN0aW9uKCdsdHInKTsKIHNob3VsZEJlVHJ1ZSgnc2VudElucHV0
RXZlbnQnKTsKIAogLy8gQ2hhbmdlIHRoZSB0ZXh0IGRpcmVjdGlvbiBvZiB0aGUgaW5wdXQgZWxl
bWVudCB0byBSVEwuCiBleHBlY3RlZCA9ICdydGwnOwogc2VudElucHV0RXZlbnQgPSBmYWxzZTsK
IGlucHV0LmZvY3VzKCk7Ci1sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9uKCdy
dGwnKTsKK3Rlc3RSdW5uZXIuc2V0VGV4dERpcmVjdGlvbigncnRsJyk7CiBzaG91bGRCZVRydWUo
J3NlbnRJbnB1dEV2ZW50Jyk7CiAKIC8vIENoYW5nZSB0aGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhl
IGlucHV0IGVsZW1lbnQgdG8gTFRSLgpAQCAtNzIsNyArNzIsNyBAQCBzaG91bGRCZVRydWUoJ3Nl
bnRJbnB1dEV2ZW50Jyk7CiBleHBlY3RlZCA9ICdsdHInOwogc2VudElucHV0RXZlbnQgPSBmYWxz
ZTsKIGlucHV0LmZvY3VzKCk7Ci1sYXlvdXRUZXN0Q29udHJvbGxlci5zZXRUZXh0RGlyZWN0aW9u
KCdsdHInKTsKK3Rlc3RSdW5uZXIuc2V0VGV4dERpcmVjdGlvbignbHRyJyk7CiBzaG91bGRCZVRy
dWUoJ3NlbnRJbnB1dEV2ZW50Jyk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9odG1sL3RhYi1vcmRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvaHRtbC90YWItb3JkZXIuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9odG1sL3RhYi1vcmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBA
CiAKICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgdmFyIGlucHV0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdpbnB1dCcpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9odG1sL3RhYmluZGV4LXJl
bW92YWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2h0bWwvdGFiaW5kZXgt
cmVtb3ZhbC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2h0bWwv
dGFiaW5kZXgtcmVtb3ZhbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGRp
diBpZD0iYSIgdGFiaW5kZXg9IjEiPlBBU1M8L2Rpdj4KIAogPHNjcmlwdD4KLSAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgfQogICAgIHZhciBhID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2EnKTsKICAgICBhLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaHRtbC90ZXh0LWZpZWxkLWlucHV0LXR5cGVzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9odG1sL3RleHQtZmllbGQtaW5wdXQtdHlwZXMuaHRt
bAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9odG1sL3RleHQtZmllbGQt
aW5wdXQtdHlwZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IFsgImVtYWlsIiwgInBh
c3N3b3JkIiwgInRlbCIsICJ0ZXh0IiAsICJ1cmwiIF07CkBAIC0yNyw3ICsyNyw3IEBACiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gcmVzdWx0OwogCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAg
ICAgICAgfQogICAgIDwvc2NyaXB0PgogPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9o
dG1sL3hodG1sLXNlcmlhbGl6ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aHRtbC94aHRtbC1zZXJpYWxpemUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9odG1sL3hodG1sLXNlcmlhbGl6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDgg
KzYsOCBAQAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICAKIGZ1bmN0aW9uIGxvZyhzKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvYW5pbWF0ZWQtYmFja2dyb3VuZC1pbWFnZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWJhY2tncm91bmQtaW1hZ2UtY3Jhc2guaHRt
bAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQt
YmFja2dyb3VuZC1pbWFnZS1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwxNCArMTIs
MTQgQEAKICAgICA8c2NyaXB0PgogICAgICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmRpc3BsYXkoKTsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmRpc3BsYXkoKTsKICAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5zdHlsZS5kaXNwbGF5
PSJub25lIjsKICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgICAgICAg
ICAgc2V0VGltZW91dCgic3RlcDIoKSIsIDIwMCk7CkBAIC0yNyw5ICsyNyw5IEBACiAKICAgICAg
ICAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXRU
aW1lb3V0KCJzdGVwMSgpIiwgMTAwKTsKICAgICAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXJlc3RvcmVkLWZyb20tYmZjYWNoZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLWdpZi1yZXN0b3JlZC1mcm9t
LWJmY2FjaGUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvYW5pbWF0ZWQtZ2lmLXJlc3RvcmVkLWZyb20tYmZjYWNoZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDEyICsxLDEyIEBACiA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwot
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVz
ZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiLCAx
KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgICAgICB2YXIgaW1hZ2UgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2UiKTsKICAgICAgICAgdmFyIGNvbnNvbGUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpOyAgICAgICAgICAgIApAQCAtMzAsMTUg
KzMwLDE1IEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29uc29sZS5pbm5l
ckhUTUwgPSAiPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5QQVNTPC9zcGFuPiI7CiAKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwog
ICAgICAgICB9LCAxMDApOwogICAgIH0KIAogICAgIHdpbmRvdy5vbnBhZ2VzaG93ID0gZnVuY3Rp
b24oZXZlbnQpIHsKLSAgICAgICAgaWYgKCFldmVudC5wZXJzaXN0ZWQgJiYgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1
ZUxvYWQoImFib3V0OmJsYW5rIik7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5x
dWV1ZUJhY2tOYXZpZ2F0aW9uKDEpOworICAgICAgICBpZiAoIWV2ZW50LnBlcnNpc3RlZCAmJiB3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWQoImFi
b3V0OmJsYW5rIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnF1ZXVlQmFja05hdmlnYXRpb24o
MSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9pbWFnZXMvYmFkLXBuZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2JhZC1wbmcuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvYmFkLXBuZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOCBAQAogPGh0
bWw+CiAgIDxoZWFkPgogICAgIDxzY3JpcHQ+Ci0gICAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIDwvc2NyaXB0PgogCiAgICA8L2hlYWQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9idXN0ZWQtb3ZhbC1kb2VzLW5vdC1yZW5kZXIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9idXN0ZWQtb3ZhbC1kb2VzLW5vdC1yZW5kZXIuaHRtbAko
cmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvYnVzdGVkLW92YWwt
ZG9lcy1ub3QtcmVuZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxpbWcgc3JjPSJyZXNvdXJjZXMvYnVzdGVk
LW92YWwucG5nIiBvbmVycm9yPSJhbGVydCgnUEFTUycpIj4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2Rlc3Ryb3llZC1pbWFnZS1sb2FkLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVzdHJveWVkLWltYWdlLWxvYWQtZXZlbnQuaHRtbAko
cmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZGVzdHJveWVkLWlt
YWdlLWxvYWQtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw5ICs0LDkgQEAgV2ViQ29y
ZTo6SW1hZ2VFdmVudFNlbmRlcjo6ZGlzcGF0Y2hQZW5kaQogPGRpdiBpZD0idGVzdFJ1biI+PC9k
aXY+CiA8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIGdjKCkKQEAgLTI5LDggKzI5LDgg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBpZiAoLS1yZW1haW5pbmdUZXN0UnVucyA8IDApIHsK
ICAgICAgICAgdGVzdFJ1bkRpdi5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9kb250LWNyYXNoLXdpdGgtbnVsbC1naWYtZnJh
bWVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZG9udC1jcmFz
aC13aXRoLW51bGwtZ2lmLWZyYW1lcy5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9kb250LWNyYXNoLXdpdGgtbnVsbC1naWYtZnJhbWVzLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Nj
cmlwdD4KIFRoaXMgdGVzdHMgcGFzc2VzIGlmIGl0IGRvZXNuJ3QgY3Jhc2guPGJyPgogPGltZyBz
cmM9cmVzb3VyY2VzL3F1aWNrc29ydC5naWY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9kcmFnLXBkZi1hcy1pbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2RyYWctcGRmLWFzLWltYWdlLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL2RyYWctcGRmLWFzLWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMsMTAgKzMsMTAgQEAKIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KIGZ1bmN0
aW9uIHRlc3QoKSB7CiAKLSAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlciB8fCAh
d2luZG93LmV2ZW50U2VuZGVyKQorICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXdpbmRv
dy5ldmVudFNlbmRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiAgICAgdmFy
IGRyYWdNZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkcmFnTWUiKTsKICAgICB2YXIgc3Rh
cnRYID0gZHJhZ01lLm9mZnNldExlZnQgKyAoZHJhZ01lLm9mZnNldFdpZHRoIC8gMik7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9lbWJlZC1kb2VzLW5vdC1wcm9wYWdhdGUtZGltZW5z
aW9ucy10by1vYmplY3QtYW5jZXN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9lbWJlZC1kb2VzLW5vdC1wcm9wYWdhdGUtZGltZW5zaW9ucy10by1vYmplY3Qt
YW5jZXN0b3IuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvZW1iZWQtZG9lcy1ub3QtcHJvcGFnYXRlLWRpbWVuc2lvbnMtdG8tb2JqZWN0LWFuY2VzdG9y
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOSArMiw5IEBACiA8aGVhZD4KICAgICA8IS0tIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4OCAtIGVuc3VyZSB0aGUg
PGVtYmVkPiBlbGVtZW50IGRvZXMgbm90IHByb3BhZ2F0ZSBpdHMgaGVpZ2h0IGFuZCB3aWR0aCB0
byBhbiBvYmplY3QgYW5jZXN0b3Igbm9kZSAtLT4KICAgICA8c2NyaXB0PgotICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIG1lYXN1cmUoKSB7
CkBAIC0xMyw3ICsxMyw3IEBACiAgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRoaXJkIikuaGVpZ2h0ID09IDEwMCAKICAgICAgICAgICAgICAgICAmJiBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGhpcmQiKS53aWR0aCA9PSAxMDApCiAgICAgICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuaW5uZXJIVE1MID0gIlNVQ0NFU1MiOwot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiAgICAgICAgIH0KIAogICAgICAgICBmdW5jdGlv
biB0ZXN0KCl7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9lbWJlZC1pbWFnZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2VtYmVkLWltYWdlLmh0bWwJ
KHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2VtYmVkLWltYWdl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiA8c2NyaXB0PgotICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0UGx1Z2luc0VuYWJsZWQoZmFsc2UpOwogPC9zY3JpcHQ+CiA8
ZW1iZWQgc3JjPSIuLi9ib3JkZXJzL3Jlc291cmNlcy9CYWxsb29uXzgxMDc1MDIudGlmZiIgd2lk
dGg9IjM4IiBoZWlnaHQ9IjI0IiB0eXBlPSJpbWFnZS90aWZmIj48L2VtYmVkPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi1jc3MuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLWNzcy5odG1sCShy
ZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0
aW9uLWNzcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsOSBAQAogPGh0bWw+CiA8aGVh
ZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRTaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbicsIDEpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoMSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgnV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24nLCAxKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoMSk7CiB9CiAKIGZ1bmN0aW9uIGxvZyhzdHIpIHsKQEAg
LTMyLDcgKzMyLDcgQEAgaW1nIHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZwog
PC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0ibG9hZCgpIj4KLTxiPk5vbmUgb2YgdGhl
IGltYWdlcyBzaG91bGQgYmUgcm90YXRlZC4gVGhpcyB0ZXN0IGlzIG9ubHkgdmFsaWQgd2hlbiBy
dW4gd2l0aCBsYXlvdXRUZXN0Q29udHJvbGxlciAob3Igd2l0aCBXZWJLaXRTaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiBtYW51YWxseSBzZXQgdG8gdHJ1ZSkuPC9iPjxicj48YnI+Cis8Yj5O
b25lIG9mIHRoZSBpbWFnZXMgc2hvdWxkIGJlIHJvdGF0ZWQuIFRoaXMgdGVzdCBpcyBvbmx5IHZh
bGlkIHdoZW4gcnVuIHdpdGggdGVzdFJ1bm5lciAob3Igd2l0aCBXZWJLaXRTaG91bGRSZXNwZWN0
SW1hZ2VPcmllbnRhdGlvbiBtYW51YWxseSBzZXQgdG8gdHJ1ZSkuPC9iPjxicj48YnI+CiA8ZGl2
IGNsYXNzPSJjb250YWluZXIiPjxkaXYgY2xhc3M9ImltYWdlIiBpZD0iaW1nMSIgc3R5bGU9ImNv
bnRlbnQ6IHVybChyZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi0xLXVsLmpwZykiPjwvZGl2Pjxi
cj5Ob3JtYWw8L2Rpdj4KIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+PGRpdiBjbGFzcz0iaW1hZ2Ui
IGlkPSJpbWcyIiBzdHlsZT0iY29udGVudDogdXJsKHJlc291cmNlcy9leGlmLW9yaWVudGF0aW9u
LTItdXIuanBnKSI+PC9kaXY+PGJyPkZsaXBwZWQgaG9yaXpvbnRhbGx5PC9kaXY+CiA8ZGl2IGNs
YXNzPSJjb250YWluZXIiPjxkaXYgY2xhc3M9ImltYWdlIiBpZD0iaW1nMyIgc3R5bGU9ImNvbnRl
bnQ6IHVybChyZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi0zLWxyLmpwZykiPjwvZGl2Pjxicj5S
b3RhdGVkIDE4MCZkZWc7PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9leGlm
LW9yaWVudGF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
ZXhpZi1vcmllbnRhdGlvbi5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOSAr
MSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
J1dlYktpdFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uJywgMSk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgxKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbicsIDEpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgxKTsKIH0KIAogZnVu
Y3Rpb24gbG9nKHN0cikgewpAQCAtMzEsNyArMzEsNyBAQCBkaXYgeyBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7IG1hcmdpbi1yaWdoCiA8L3N0eWxlPgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJsb2Fk
KCkiPgotPGI+VGhlIGltYWdlcyBzaG91bGQgYmUgcm90YXRlZCByZXNwZWN0aW5nIHRoZWlyIEVY
SUYgb3JpZW50YXRpb24uIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gd2l0aCBsYXlvdXRUZXN0
Q29udHJvbGxlciAob3IgYnkgbWFudWFsbHkgc2V0dGluZyBXZWJLaXRTaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbiB0byB0cnVlKS48L2I+PGJyPjxicj4KKzxiPlRoZSBpbWFnZXMgc2hvdWxk
IGJlIHJvdGF0ZWQgcmVzcGVjdGluZyB0aGVpciBFWElGIG9yaWVudGF0aW9uLiBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgcnVuIHdpdGggdGVzdFJ1bm5lciAob3IgYnkgbWFudWFsbHkgc2V0dGluZyBX
ZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiB0byB0cnVlKS48L2I+PGJyPjxicj4K
IDxkaXY+PGltZyBpZD0iaW1nMSIgc3JjPSJyZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi0xLXVs
LmpwZyI+PGJyPk5vcm1hbDwvZGl2PgogPGRpdj48aW1nIGlkPSJpbWcyIiBzcmM9InJlc291cmNl
cy9leGlmLW9yaWVudGF0aW9uLTItdXIuanBnIj48YnI+RmxpcHBlZCBob3Jpem9udGFsbHk8L2Rp
dj4KIDxkaXY+PGltZyBpZD0iaW1nMyIgc3JjPSJyZXNvdXJjZXMvZXhpZi1vcmllbnRhdGlvbi0z
LWxyLmpwZyI+PGJyPlJvdGF0ZWQgMTgwJmRlZzs8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL2V4dHJhLWltYWdlLWluLWltYWdlLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZXh0cmEtaW1hZ2UtaW4taW1hZ2UtZG9jdW1lbnQu
aHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvZXh0cmEt
aW1hZ2UtaW4taW1hZ2UtZG9jdW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxNyArNCwx
NyBAQCBJbWFnZXMgY2Fubm90IGJlIGR5bmFtaWNhbGx5IGFkZGVkIHRvIGltCiA8cCBpZD1yZXN1
bHQ+T25sb2FkIHdhcyBub3QgY2FsbGVkLCB3aGljaCBpcyBub3QgZ29vZC4gQnV0IGlzIHRoZSBz
cXVhcmUgYmVsb3cgZ3JlZW4/PC9wPgogPGlmcmFtZSBzcmM9InJlc291cmNlcy90ZXN0LWxvYWQu
anBnIiB3aWR0aD0xMDAgaGVpZ2h0PTEwMCBmcmFtZWJvcmRlcj0wPjwvaWZyYW1lPgogPHNjcmlw
dD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB9CiAKIGZ1bmN0aW9uIGxv
YWRlZCgpCiB7CiAgICAgaWYgKGZyYW1lc1swXS5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Jl
ZW4iKS5uYXR1cmFsV2lkdGggPT0gMTYpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
Z2lmLWxvb3AtY291bnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9naWYtbG9vcC1jb3VudC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9naWYtbG9vcC1jb3VudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE2ICsy
LDE2IEBACiA8aGVhZD4KIDxzY3JpcHQ+CiAgICAgZnVuY3Rpb24gc3RlcDIoKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogICAgIH0KICAgICBmdW5jdGlv
biBzdGVwMSgpIHsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlcGxhY2VtZScp
LnNyYyA9ICdyZXNvdXJjZXMvZ2lmLWxvb3AtY291bnQuZ2lmJzsKICAgICAgICAgc2V0VGltZW91
dCgic3RlcDIoKSIsIDIwMCk7CiAgICAgfQogICAgIGZ1bmN0aW9uIHRlc3QoKSB7Ci0gICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAg
fQogICAgICAgICBzZXRUaW1lb3V0KCJzdGVwMSgpIiwgMjAwKTsKICAgICB9CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1lbXB0eS1kYXRhLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2UtZW1wdHktZGF0YS5odG1sCShyZXZpc2lvbiAx
MjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1lbXB0eS1kYXRhLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KICAgICA8dGl0bGU+PC90aXRs
ZT4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1pbnZhbGlkLWRhdGEuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1pbnZhbGlkLWRh
dGEuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1h
Z2UtaW52YWxpZC1kYXRhLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBACiA8aHRt
bD4KIDxoZWFkPgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAgICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgPC9zY3JpcHQ+CiA8L2hl
YWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLWxvYWQtZXZl
bnQtaW4tZnJhZ21lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9pbWFnZS1sb2FkLWV2ZW50LWluLWZyYWdtZW50Lmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysr
IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLWxvYWQtZXZlbnQtaW4tZnJhZ21lbnQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtNiw5ICs2LDkgQEAgSW1hZ2UgbG9hZCBldmVudCBmaXJlcyBi
ZWZvcmUgdGhlIGRvY3VtZQogPCEtLSBQcmVsb2FkIGFuIGltYWdlLCBwb3NzaWJseSBtYWtpbmcg
c2Vjb25kIGxvYWQgc3luY2hyb25vdXMgLS0+CiA8aW1nIHNyYz0icmVzb3VyY2VzL2Jvc3Rvbi5n
aWYiIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbiI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIGZ1bmN0aW9uIHRlc3QoKQogewpAQCAtMjUsOCArMjUs
OCBAQCBmdW5jdGlvbiBsb2FkZWQoKQogewogICAgIC8vIFRoZXJlIGlzIGNvZGUgb24gdGhlIFdl
YiBleHBlY3RpbmcgdGhhdCBhbiBpbWFnZSBpcyBpbiB0aGUgZG9jdW1lbnQgYnkgdGhlIHRpbWUg
aXRzIGxvYWQgZXZlbnQgZmlyZXMuCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVySFRNTCA9IChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3IikpID8gIlBBU1Mi
IDogIkZBSUwiOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CiA8
L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlwbGUt
eGh0bWwueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Ut
bWFwLW11bHRpcGxlLXhodG1sLnhodG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlwbGUteGh0bWwueGh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDcgKzYzLDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJsb2ciKS50ZXh0Q29udGVudCA9ICJUbyBydW4gdGhlIHRlc3QgbWFu
dWFsbHksIGNsaWNrICIgKyBudW1DbGlja3MgKyAiIHRpbWVzIGluIHRoZSBpbWFnZSByZWN0YW5n
bGUuXG4iOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyg1MCwgNTApOwogICAgIGZvciAodmFyIGNsaWNrID0gMDsgbnVtQ2xp
Y2tzID4gY2xpY2s7ICsrY2xpY2spIHsKICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlwbGUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZS1tYXAtbXVsdGlwbGUu
aHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2Ut
bWFwLW11bHRpcGxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgZnVuY3Rp
b24gcnVuVGVzdCgpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS50ZXh0
Q29udGVudCA9ICJUbyBydW4gdGhlIHRlc3QgbWFudWFsbHksIGNsaWNrICIgKyBudW1DbGlja3Mg
KyAiIHRpbWVzIGluIHRoZSBpbWFnZSByZWN0YW5nbGUuXG4iOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1MCwgNTApOwog
ICAgIGZvciAodmFyIGNsaWNrID0gMDsgY2xpY2sgPCBudW1DbGlja3M7ICsrY2xpY2spIHsKICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9pbWFnZS1tYXAtem9vbS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL2ltYWdlLW1hcC16b29tLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRl
c3RzL2Zhc3QvaW1hZ2VzL2ltYWdlLW1hcC16b29tLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTks
NyArOSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbygzNDAsIDE0MCk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZW1hcC1zY3JvbGwuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9pbWFnZW1hcC1zY3JvbGwuaHRtbAkocmV2aXNpb24g
MTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvaW1hZ2VtYXAtc2Nyb2xsLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTksOCArOSw4IEBAIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQogfQog
ZnVuY3Rpb24gcnVuVGVzdCgpCiB7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
aWYgKGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID09IDApCiAgICAgICAgIGxvZygiUEFTUzogRG9j
dW1lbnQgaXMgc3RhcnRpbmcgc2Nyb2xsZWQgdG8gdG9wLiIpOwogICAgIGVsc2UKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2pwZWctd2l0aC1jb2xvci1wcm9maWxlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvanBlZy13aXRoLWNvbG9yLXByb2ZpbGUu
aHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvanBlZy13
aXRoLWNvbG9yLXByb2ZpbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFRo
ZSByZWQgc2VjdG9yIG9mIHRoZSBpbWFnZSBzaG91bGQgYmUgYXQgdGhlIDEyIG8nY2xvY2sgcG9z
aXRpb24uPC9wPgogPGltZyBzcmM9InJlc291cmNlcy9yZWQtYXQtMTItb2Nsb2NrLXdpdGgtY29s
b3ItcHJvZmlsZS5qcGciIHdpZHRoPSI0MDBweCI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dChwaXhlbFRlc3QgPSB0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHBpeGVsVGVzdCA9IHRydWUpOwogPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvbGFyZ2Utc2l6ZS1pbWFnZS1j
cmFzaC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9s
YXJnZS1zaXplLWltYWdlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMSw4IEBA
CiA8aHRtbD4NCiAgICAgPGhlYWQ+DQogICAgICAgICA8c2NyaXB0Pg0KLSAgICAgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICAgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpDQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KICAgICAg
ICAgPC9zY3JpcHQ+DQogICAgIDwvaGVhZD4NCiAgICAgPGJvZHk+DQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvbGluay1ib2R5LWNvbnRlbnQtaW1hZ2VEaW1lbnNpb25DaGFuZ2VkLWNy
YXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvbGluay1ib2R5
LWNvbnRlbnQtaW1hZ2VEaW1lbnNpb25DaGFuZ2VkLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMTAw
NykKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2xpbmstYm9keS1jb250ZW50LWltYWdlRGlt
ZW5zaW9uQ2hhbmdlZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgsOCBAQCBk
aXYgewogfQogIDwvc3R5bGU+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDwv
aGVhZD4KIDxwPiBCdWcgPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYi84NTkxMiI+ODU5MTI8
L2E+OiBDcmFzaCBpbiBjb21wdXRlZENTU1BhZGRpbmcqIGZ1bmN0aW9ucyBkdWUgdG8gUmVuZGVy
SW1hZ2U6OmltYWdlRGltZW5zaW9uc0NoYW5nZWQgY2FsbGVkIGR1cmluZyBhdHRhY2htZW50PC9w
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvbG9hZC1pbWctd2l0aC1lbXB0eS1zcmMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9sb2FkLWltZy13aXRo
LWVtcHR5LXNyYy5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9sb2FkLWltZy13aXRoLWVtcHR5LXNyYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4
ICsxMCw4IEBACiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
LmFwcGVuZENoaWxkKHBhcmFncmFwaCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7IAorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOyAKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgdmFyIHJlc3VsdHMgPSBbdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlXTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BhbGV0dGVkLXBuZy13aXRoLWNvbG9yLXByb2ZpbGUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wYWxldHRlZC1wbmctd2l0
aC1jb2xvci1wcm9maWxlLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3BhbGV0dGVkLXBuZy13aXRoLWNvbG9yLXByb2ZpbGUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIDxpbWcgc3JjPSJyZXNvdXJjZXMvcGFsYXR0ZWQtY29sb3It
cG5nLWdhbW1hLW9uZS1jb2xvci1wcm9maWxlLnBuZyI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dChwaXhlbFRlc3QgPSB0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3
aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHBpeGVsVGVzdCA9IHRydWUpOwogPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wZXJjZW50LWhlaWdodC1pbWFnZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BlcmNlbnQtaGVpZ2h0LWlt
YWdlLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Bl
cmNlbnQtaGVpZ2h0LWltYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOSArOCw5IEBACiA8
L2Rpdj4NCiA8cHJlPjwvcHJlPg0KIDxzY3JpcHQ+DQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7DQorICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsNCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KICAgICB9DQogDQogICAg
IGZ1bmN0aW9uIGNoZWNrKCkgew0KQEAgLTIxLDYgKzIxLDYgQEAKICAgICAgICAgICAgIG91dC50
ZXh0Q29udGVudCA9ICJQQVNTIjsNCiAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICBvdXQudGV4
dENvbnRlbnQgPSAiRkFJTDogaW1hZ2UgaGVpZ2h0IHdhcyAiICsgYWN0dWFsICsgIiBleHBlY3Rl
ZCAiICsgZXhwZWN0ZWQ7DQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7DQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCiAgICAgfQ0KIDwvc2NyaXB0
Pg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BuZy1leHRyYS1yb3ctY3Jhc2guaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wbmctZXh0cmEtcm93LWNy
YXNoLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Bu
Zy1leHRyYS1yb3ctY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxo
dG1sPgogICA8aGVhZD4KICAgICA8c2NyaXB0PgotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwogICAgIGZ1bmN0aW9uIGxvYWRlZCgpCiAgICAgewogICAgICAgICB2YXIgcCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInAiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BuZy13
aXRoLWNvbG9yLXByb2ZpbGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy9wbmctd2l0aC1jb2xvci1wcm9maWxlLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExh
eW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BuZy13aXRoLWNvbG9yLXByb2ZpbGUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFRoZSByZWQgc2VjdG9yIG9mIHRoZSBpbWFnZSBzaG91
bGQgYmUgYXQgdGhlIDEyIG8nY2xvY2sgcG9zaXRpb24uPC9wPgogPGltZyBzcmM9InJlc291cmNl
cy9yZWQtYXQtMTItb2Nsb2NrLXdpdGgtY29sb3ItcHJvZmlsZS5wbmciIHdpZHRoPSI0MDBweCI+
CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dChwaXhlbFRlc3QgPSB0cnVlKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHBpeGVs
VGVzdCA9IHRydWUpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9y
ZWFkLXBhc3QtZW5kLW9mLWJ1ZmZlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3JlYWQtcGFzdC1lbmQtb2YtYnVmZmVyLmh0bWwJKHJldmlzaW9uIDEyMTAwNykK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3JlYWQtcGFzdC1lbmQtb2YtYnVmZmVyLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8
L3NjcmlwdD4KIFRoaXMgdGVzdCBwYXNzZXMgaWYgbm8gaGVhcCBlcnJvcnMgYXJlIGRldGVjdGVk
IGR1cmluZyBkZWNvZGluZy48YnI+CiA8aW1nIHNyYz1yZXNvdXJjZXMvd3JvbmctYmxvY2stbGVu
Z3RoLmdpZj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3JnYi1qcGVnLWVuZGlhbi1w
aXhlbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZ2ItanBl
Zy1lbmRpYW4tcGl4ZWxzLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3JnYi1qcGVnLWVuZGlhbi1waXhlbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OSw5ICs5LDkgQEAgb3JkZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlIHVuZGVybHlpbmcgbWFjaAogPHBy
ZSBpZD0ibG9nIj5QQVNTPC9wcmU+CiAKIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIH0KIAogZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCkBAIC03MCw3ICs3MCw3IEBAIGZ1bmN0aW9uIHRlc3QoaW1hZ2UsIGV4cGVj
dCkKICAgICAgICAgbG9nKCdGQUlMOiAnICsgZS5tZXNzYWdlKTsKICAgICB9CiAKLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZ2ItanBlZy13aXRoLWFkb2JlLW1hcmtlci1vbmx5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmdiLWpwZWctd2l0aC1h
ZG9iZS1tYXJrZXItb25seS5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9yZ2ItanBlZy13aXRoLWFkb2JlLW1hcmtlci1vbmx5Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNyArMSw3IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxpbWcgc3JjPSJyZXNvdXJj
ZXMvcmdiLWpwZWctd2l0aC1hZG9iZS1tYXJrZXItb25seS5qcGciPgogPHNjcmlwdD4KLWlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQocGl4ZWxUZXN0ID0gdHJ1ZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dChwaXhlbFRlc3QgPSB0cnVlKTsKIDwv
c2NyaXB0PgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZ2ItcG5nLXdpdGgtY215
ay1jb2xvci1wcm9maWxlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFn
ZXMvcmdiLXBuZy13aXRoLWNteWstY29sb3ItcHJvZmlsZS5odG1sCShyZXZpc2lvbiAxMjEwMDcp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZ2ItcG5nLXdpdGgtY215ay1jb2xvci1wcm9m
aWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8IURPQ1RZUEUgaHRtbD4K
IDxpbWcgc3JjPSJyZXNvdXJjZXMvcmdiLXBuZy13aXRoLWNteWstY29sb3ItcHJvZmlsZS5wbmci
IHdpZHRoPSI2MDBweCIgaGVpZ2h0PSIyMTNweCI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dChwaXhlbFRlc3QgPSB0cnVlKTsKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB3aW5k
b3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHBpeGVsVGVzdCA9IHRydWUpOwogPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zY3JpcHQtY291bnRlci1pbWFnZURpbWVuc2lv
bkNoYW5nZWQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9zY3JpcHQtY291bnRlci1pbWFnZURpbWVuc2lvbkNoYW5nZWQtY3Jhc2guaHRtbAkocmV2aXNp
b24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc2NyaXB0LWNvdW50ZXItaW1h
Z2VEaW1lbnNpb25DaGFuZ2VkLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEy
LDggQEAgYm9keSB7CiB9CiA8L3N0eWxlPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3Jp
cHQ+CiA8L2hlYWQ+CiA8cD4gQnVnIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnL2IvODU5MTIi
Pjg1OTEyPC9hPjogQ3Jhc2ggaW4gY29tcHV0ZWRDU1NQYWRkaW5nKiBmdW5jdGlvbnMgZHVlIHRv
IFJlbmRlckltYWdlOjppbWFnZURpbWVuc2lvbnNDaGFuZ2VkIGNhbGxlZCBkdXJpbmcgYXR0YWNo
bWVudDwvcD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NpemUtZmFpbHVyZS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3NpemUtZmFpbHVyZS5odG1s
CShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zaXplLWZhaWx1
cmUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogICA8aGVhZD4K
ICAgICA8c2NyaXB0PgotICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICA8L3Nj
cmlwdD4KIAogICAgPC9oZWFkPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3R5bGUt
YWNjZXNzLWR1cmluZy1pbWFnZUNoYW5nZWQtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9zdHlsZS1hY2Nlc3MtZHVyaW5nLWltYWdlQ2hhbmdlZC1jcmFz
aC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdHls
ZS1hY2Nlc3MtZHVyaW5nLWltYWdlQ2hhbmdlZC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xNyw4ICsxNyw4IEBAIEEgPGltZyBpZD0idGFyZ2V0IiBhbHQ9IkEiPgogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iikuc3JjID0gImRhdGE6dGV4dC9wbGFpbiwyIjsK
ICAgICB9CiAKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIHRlc3QoKTsKIDwv
c2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3R5bGUtYWNjZXNzLWR1cmlu
Zy1pbWFnZUNoYW5nZWQtc3R5bGUtZnJlZXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvc3R5bGUtYWNjZXNzLWR1cmluZy1pbWFnZUNoYW5nZWQtc3R5bGUtZnJl
ZXplLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N0
eWxlLWFjY2Vzcy1kdXJpbmctaW1hZ2VDaGFuZ2VkLXN0eWxlLWZyZWV6ZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiA8ZGl2IGlkPSJyZXN1bHQiPjwvZGl2PgogPHNjcmlw
dD4KICAgICBvbmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CiAg
ICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVy
Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1k
ZWxlZ2F0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1cHBv
cnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsMTEgKzIsMTEgQEAKIDxoZWFkPgogPHNjcmlwdD4KIAotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U2hvdWxkUGFpbnRCcm9rZW5J
bWFnZShmYWxzZSk7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci5zZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKIH0KIAogZnVuY3Rpb24gbG9hZGVkKCkgewpAQCAtMTQsOSArMTQsOSBAQCBm
dW5jdGlvbiBsb2FkZWQoKSB7CiAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbWcnKTsKICAgICAvLyBUaGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgaGVpZ2h0IGluIG1hYyBp
cyAyMC4KICAgICByZXN1bHQuaW5uZXJIVE1MID0gaW1nLm9mZnNldEhlaWdodCA+PSAxMCA/ICJG
QUlMIiA6ICJQQVNTIjsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1
ZSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTaG91bGRQYWludEJy
b2tlbkltYWdlKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKICAgICB9
CiB9CiAKQEAgLTI0LDkgKzI0LDkgQEAgZnVuY3Rpb24gZmFpbGVkKCkgewogICAgIHZhciByZXN1
bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7CiAgICAgLy8gUmVwb3J0ICdG
QUlMJyBpZiBXZWJDb3JlIGRpZG4ndCByZXBvcnQgb25FcnJvciBvbiBicm9rZW4gaW1hZ2UuCiAg
ICAgcmVzdWx0LmlubmVySFRNTCA9ICJGQUlMIjsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNob3VsZFBhaW50
QnJva2VuSW1hZ2UodHJ1ZSk7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTaG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKICAgICB9IAogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lt
YWdlcy90ZXh0LWNvbnRlbnQtY3Jhc2gtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL3RleHQtY29udGVudC1jcmFzaC0yLmh0bWwJKHJldmlzaW9uIDEyMTAwNykK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtY29udGVudC1jcmFzaC0yLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KICAgICA8dGl0bGU+PC90aXRsZT4K
ICAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvdGV4dC1jb250ZW50LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvdGV4dC1jb250ZW50LWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMTAwNykK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3RleHQtY29udGVudC1jcmFzaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDggKzIsOCBAQAogPGhlYWQ+CiAgICAgPHRpdGxlPjwvdGl0bGU+CiAg
ICAgPHNjcmlwdD4KLSAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3dlYnAtaW1hZ2UtZGVjb2RpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2ltYWdlcy93ZWJwLWltYWdlLWRlY29kaW5nLmh0bWwJKHJldmlzaW9uIDEyMTAwNykK
KysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3dlYnAtaW1hZ2UtZGVjb2RpbmcuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw4ICsxLDggQEAKIDxodG1sPgogPGJvZHk+CiA8c2NyaXB0PgotaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0cycpLmlubmVySFRNTCA9CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy95Y2Jjci13aXRoLWNteWstY29sb3ItcHJvZmlsZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3ljYmNyLXdpdGgtY215ay1jb2xvci1wcm9maWxl
Lmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3ljYmNy
LXdpdGgtY215ay1jb2xvci1wcm9maWxlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw2
IEBACiA8aW1nIHNyYz0icmVzb3VyY2VzL3ljYmNyLXdpdGgtY215ay1jb2xvci1wcm9maWxlLmpw
ZyIgd2lkdGg9IjM1MCIgaGVpZ2h0PSIzNTAiPgogPGltZyBzcmM9InJlc291cmNlcy95Y2Jjci13
aXRoLW5vLWNvbG9yLXByb2ZpbGUuanBnIiB3aWR0aD0iMzUwIiBoZWlnaHQ9IjM1MCI+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dChwaXhlbFRlc3QgPSB0cnVlKTsKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHBpeGVsVGVzdCA9
IHRydWUpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29tZWQt
aW1nLXNpemUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy96b29t
ZWQtaW1nLXNpemUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvem9vbWVkLWltZy1zaXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBA
CiA8aHRtbD4KICAgPGhlYWQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgot
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgICAgZnVuY3Rpb24gdXBkYXRl
KCkgewogICAgICAgICAvLyBUaGVzZSBhcnJheXMgd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgaWYg
d2UgZml4IHRoZSByb3VuZGluZyBpc3N1ZXMgdGhhdCBtYWtlIHVzIG5vdCBhbHdheXMgcmVwb3J0
ICIzN3gzMyIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9wbmctc3VpdGUvdGVzdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BuZy1zdWl0ZS90ZXN0
Lmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3BuZy1z
dWl0ZS90ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsNiBAQAogPGltZyBz
cmM9c2FtcGxlcy96MDZuMmMwOC5wbmc+CiA8aW1nIHNyYz1zYW1wbGVzL3owOW4yYzA4LnBuZz4K
IDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQocGl4ZWxUZXN0ID0gdHJ1ZSk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KHBpeGVsVGVz
dCA9IHRydWUpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zY3Jp
cHQtdGVzdHMvbW92ZS1pbWFnZS10by1uZXctZG9jdW1lbnQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvc2NyaXB0LXRlc3RzL21vdmUtaW1hZ2UtdG8tbmV3LWRvY3Vt
ZW50LmpzCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zY3Jp
cHQtdGVzdHMvbW92ZS1pbWFnZS10by1uZXctZG9jdW1lbnQuanMJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHdoZW4gaW1hZ2VzIGFyZSBtb3Zl
ZCB0byBhIG5ldyBkb2N1bWVudCwgYSBuZXcgbG9hZCBmaXJlcy4iKTsKIAotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQbHVnaW5z
RW5hYmxlZChmYWxzZSk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5z
ZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7CiAKIGpzVGVzdElzQXN5bmMgPSB0cnVlOwogCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS1ibG9jay9hbm9ueW1vdXMtYmxvY2stY3Jhc2guaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS1ibG9jay9hbm9ueW1vdXMt
YmxvY2stY3Jhc2guaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9p
bmxpbmUtYmxvY2svYW5vbnltb3VzLWJsb2NrLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTI0LDggKzI0LDggQEAKICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4NCiAgIDwvYm9keT4N
CiA8c2NyaXB0Pg0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpDQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlBBU1MiKSk7Ow0K
IDwvc2NyaXB0Pg0KIDwvaHRtbD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS1ibG9j
ay9pbmxpbmUtYmxvY2stdmVydGljYWwtYWxpZ24tMi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvaW5saW5lLWJsb2NrL2lubGluZS1ibG9jay12ZXJ0aWNhbC1hbGlnbi0yLmh0
bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW5saW5lLWJsb2NrL2lu
bGluZS1ibG9jay12ZXJ0aWNhbC1hbGlnbi0yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDgg
KzI1LDggQEAKICAgICA8L3A+CiAgICAgPHAgaWQ9InJlc3VsdCI+PC9wPgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
Ci0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiB2YXIg
cmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOwogdmFyIG91dGVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ291dGVyJyk7CiB2YXIgaW5uZXIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnaW5uZXInKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW5saW5lLWJs
b2NrL3JlbGF0aXZlLXBvc2l0aW9uZWQtcnRsLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9pbmxpbmUtYmxvY2svcmVsYXRpdmUtcG9zaXRpb25lZC1ydGwtY3Jhc2gu
aHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUtYmxvY2sv
cmVsYXRpdmUtcG9zaXRpb25lZC1ydGwtY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIO+7vzxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiA8L3Nj
cmlwdD4KIDxib2R5IHN0eWxlPSJkaXJlY3Rpb246IHJ0bDsiPgogICAgIDxkaXYgc3R5bGU9ImRp
c3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDEwMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGhl
aWdodDogMTBweDsiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvYm91bmRpbmdCb3gt
d2l0aC1jb250aW51YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lu
bGluZS9ib3VuZGluZ0JveC13aXRoLWNvbnRpbnVhdGlvbi5odG1sCShyZXZpc2lvbiAxMjEwMDcp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9ib3VuZGluZ0JveC13aXRoLWNvbnRpbnVhdGlv
bi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPCFkb2N0eXBlIGh0bWw+IDxo
dG1sPiA8aGVhZD4KIDxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCkKIAogZnVuY3Rp
b24gcnVuVGVzdCgpCiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9jbGVhbi1hZnRl
ci1yZW1vdmluZy10ZW1wLWJveGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9pbmxpbmUvY2xlYW4tYWZ0ZXItcmVtb3ZpbmctdGVtcC1ib3hlcy5odG1sCShyZXZpc2lvbiAx
MjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9jbGVhbi1hZnRlci1yZW1vdmluZy10
ZW1wLWJveGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiA8c2NyaXB0Pgot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cD4KICAgICBUaGlzIHRl
c3RzIHRoYXQgaGF2aW5nIGEgJmx0O3dicj4gZWxlbWVudCBvciBhIHBvc2l0aW9uZWQgZWxlbWVu
dCBhbmQgYSBmbG9hdApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvY29udGludWF0aW9u
LXBvc2l0aW9uZWQtcmVwYXJlbnRpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2lubGluZS9jb250aW51YXRpb24tcG9zaXRpb25lZC1yZXBhcmVudGluZy5odG1sCShyZXZp
c2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9jb250aW51YXRpb24tcG9z
aXRpb25lZC1yZXBhcmVudGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMyw4ICsxMyw4IEBA
CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKS5zdHlsZS5kaXNwbGF5
ID0gImJsb2NrIjsKICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvc2l0aW9uZWQi
KS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgIH0KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwogICAgIHRlc3QoKTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvaW5saW5lL2NyYXNoLW5ldy1jb250aW51YXRpb24td2l0aC1vdXRs
aW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvY3Jhc2gtbmV3
LWNvbnRpbnVhdGlvbi13aXRoLW91dGxpbmUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9pbmxpbmUvY3Jhc2gtbmV3LWNvbnRpbnVhdGlvbi13aXRoLW91dGxpbmUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTUsOCArMTUsOCBAQAogPGJvZHk+CiA8cD5UZXN0IGNh
c2UgZm9yIGJ1ZyA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQ3NzQiPjg0Nzc0PC9hPjogTlVMTC1kZXJlZiBpbiBSZW5kZXJCb3g6OmNsaXBwZWRPdmVy
Zmxvd1JlY3RGb3JSZXBhaW50PC9wPgogPHNjcmlwdD4KLSAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKIAogICAgIHZhciBvYmplY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b2JqZWN0Iik7CiAgICAgbmV3Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJMb3Jl
bSIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvZGlydHlMaW5lc0ZvcklubGluZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL2RpcnR5TGluZXNGb3JJ
bmxpbmUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUv
ZGlydHlMaW5lc0ZvcklubGluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNyw5IEBA
IFRoZSBidWcgaXMgZml4ZWQgaWYgd2UgZG9uJ3QgY3Jhc2guIDwvcD4KIDwvZGl2PgogCiA8c2Ny
aXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKICAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyg1
MCw3NSk7CiAgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CkBAIC01Myw3
ICs1Myw3IEBAIFRoZSBidWcgaXMgZml4ZWQgaWYgd2UgZG9uJ3QgY3Jhc2guIDwvcD4KICAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKICAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVVwKCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKICAgICAgICAgfQogPC9zY3JpcHQ+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW5s
aW5lL2lubGluZS1ib2R5LWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9pbmxpbmUvaW5saW5lLWJvZHktY3Jhc2guaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9pbmxpbmUvaW5saW5lLWJvZHktY3Jhc2guaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMiw4ICsyLDggQEAKIDxoZWFkPgogPHRpdGxlPmlubGluZSBib2R5IGNhdXNlcyBjcmFz
aDwvdGl0bGU+CiA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQot
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0PgogPC9o
ZWFkPgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9pbmxpbmUtYm9keS13aXRoLXNj
cm9sbGJhci1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5saW5l
L2lubGluZS1ib2R5LXdpdGgtc2Nyb2xsYmFyLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMTAwNykK
KysrIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL2lubGluZS1ib2R5LXdpdGgtc2Nyb2xsYmFyLWNy
YXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiAgIDo6LXdlYmtpdC1zY3Jv
bGxiYXIgeyB3aWR0aDogNXB4OyBoZWlnaHQ6IDVweDsgfQogPC9zdHlsZT4KIDxzY3JpcHQ+Ci0g
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8L2hlYWQ+CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvaW5saW5lL2lubGluZS1ib3gtYWRqdXN0LXBvc2l0aW9uLWNyYXNoMi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL2lubGluZS1ib3gtYWRqdXN0LXBv
c2l0aW9uLWNyYXNoMi5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2lubGluZS9pbmxpbmUtYm94LWFkanVzdC1wb3NpdGlvbi1jcmFzaDIuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtOCw3ICs4LDcgQEAgVGVzdCBwYXNzZXMgaXQgaWYgZG9lcyBub3QgY3Jhc2guDQog
fQ0KIDwvc3R5bGU+DQogPHNjcmlwdD4NCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsNCisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
DQogPC9zY3JpcHQ+DQogPC9odG1sPg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW5saW5lL2lu
bGluZS1ib3gtYWRqdXN0LXBvc2l0aW9uLWNyYXNoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9pbmxpbmUvaW5saW5lLWJveC1hZGp1c3QtcG9zaXRpb24tY3Jhc2guaHRtbAko
cmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvaW5saW5lLWJveC1h
ZGp1c3QtcG9zaXRpb24tY3Jhc2guaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsOCArMTQsOCBA
QCBkaXYgew0KIFBBU1MNCiA8L2Rpdj4NCiA8c2NyaXB0Pg0KLSAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQ0KLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOw0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsNCiANCiAgICAgZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7DQogICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsNCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2lubGluZS9pbmxpbmUtY2hpbGQtaGVpZ2h0LXdpZHRoLWNhbGMtY3Jhc2guaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9pbmxpbmUtY2hpbGQtaGVpZ2h0LXdpZHRo
LWNhbGMtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9p
bmxpbmUvaW5saW5lLWNoaWxkLWhlaWdodC13aWR0aC1jYWxjLWNyYXNoLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMTAgKzEsMTAgQEAKIDxodG1sPg0KICAgICA8aGVhZD4NCiAgICAgICAgIDxz
Y3JpcHQ+DQotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCisg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQogICAgICAgICAgICAgew0KLSAgICAg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQotICAgICAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsNCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOw0KICAgICAgICAgICAgIH0NCiANCiAgICAgICAgICAgICBmdW5j
dGlvbiBydW5UZXN0KCkgew0KQEAgLTE0LDggKzE0LDggQEAKICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuYXBwZW5kQ2hpbGQoYnJFbGVtZW50KTsNCiAgICAgICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgICAgICAgICAgYWxlcnQoJ1BBU1MnKTsNCi0gICAgICAgICAgICAgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpDQotICAgICAgICAgICAgICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOw0KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOw0KICAgICAgICAgICAgICAgICB9LCAwKTsNCiAgICAgICAgICAg
ICB9DQogICAgICAgICA8L3NjcmlwdD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9p
bmxpbmUtZGVzdHJveS1kaXJ0eS1saW5lcy1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvaW5saW5lL2lubGluZS1kZXN0cm95LWRpcnR5LWxpbmVzLWNyYXNoLmh0bWwJ
KHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL2lubGluZS1kZXN0
cm95LWRpcnR5LWxpbmVzLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIsOCArMiw4IEBA
CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiBUZXN0IHBhc3NlcyBpdCBpdCBkb2VzIG5vdCBj
cmFzaC4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAKICAgICBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9pbmxp
bmUtbWFycXVlZS1jcmFzaC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5s
aW5lL2lubGluZS1tYXJxdWVlLWNyYXNoLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91
dFRlc3RzL2Zhc3QvaW5saW5lL2lubGluZS1tYXJxdWVlLWNyYXNoLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTIsOCArMiw4IEBACiA8aGVhZD4KIDx0aXRsZT5pbmxpbmUgbWFycXVlZSBjYXVzZXMg
Y3Jhc2hlczwvdGl0bGU+CiA8c2NyaXB0PgotICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIDwvc2NyaXB0
PgogPC9oZWFkPgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9yZWxhdGl2ZS1wb3Np
dGlvbmVkLW92ZXJmbG93Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbmxp
bmUvcmVsYXRpdmUtcG9zaXRpb25lZC1vdmVyZmxvdy5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9yZWxhdGl2ZS1wb3NpdGlvbmVkLW92ZXJmbG93Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBACiAgICAgfSk7CiAKICAgICBkb2N1bWVu
dC5ib2R5Lm9mZnNldFRvcDsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDUwLCA1MCk7CiAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOwogICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2lubGluZS9za2lwcGVkLXdoaXRlc3BhY2UtYm91bmRpbmdCb3guaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9za2lwcGVkLXdoaXRlc3BhY2Ut
Ym91bmRpbmdCb3guaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9p
bmxpbmUvc2tpcHBlZC13aGl0ZXNwYWNlLWJvdW5kaW5nQm94Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTIsOCArMiw4IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKQoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1
bXBBc1RleHQoKQogCiBmdW5jdGlvbiBydW5UZXN0KCkKIHsKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvaW5saW5lL3NraXBwZWQtd2hpdGVzcGFjZS1jbGllbnQtcmVjdC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL3NraXBwZWQtd2hpdGVzcGFjZS1jbGllbnQtcmVj
dC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubGluZS9za2lw
cGVkLXdoaXRlc3BhY2UtY2xpZW50LXJlY3QuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw4ICsy
LDggQEAKIDxodG1sPgogPGhlYWQ+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKLSAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCitp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
CiAKIGZ1bmN0aW9uIHJ1blRlc3QoKQogewpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUv
dXBkYXRlLWFsd2F5cy1jcmVhdGUtbGluZS1ib3hlcy1mdWxsLWxheW91dC1jcmFzaC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5saW5lL3VwZGF0ZS1hbHdheXMtY3JlYXRl
LWxpbmUtYm94ZXMtZnVsbC1sYXlvdXQtY3Jhc2guaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvdXBkYXRlLWFsd2F5cy1jcmVhdGUtbGluZS1ib3hlcy1m
dWxsLWxheW91dC1jcmFzaC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDkgKzQsOSBAQAogLnRh
YmxlOm50aC1sYXN0LWNoaWxkKGV2ZW4pIHsgbGluZS1oZWlnaHQ6IDEwMCU7IH0NCiA8L3N0eWxl
Pg0KIDxzY3JpcHQ+DQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgew0KLSAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7DQotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsNCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOw0K
IH0NCiANCiBmdW5jdGlvbiBydW5UZXN0KCkNCkBAIC0xNCw4ICsxNCw4IEBAIGZ1bmN0aW9uIHJ1
blRlc3QoKQ0KICAgICB2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7
DQogICAgIHRlc3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0ZXN0KTsNCiANCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikNCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsNCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7DQogfQ0KIA0KIHNldFRpbWVvdXQoInJ1blRlc3QoKSIsIDAp
OyANCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC8wMDQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1MLzAwNC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1MLzAwNC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDggKzE4LDggQEAgQ29udGVudDoKIDwvc3Zn
PgogPHNjcmlwdD4KIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyICgibG9hZCIsIGZ1bmN0aW9uKCkg
ewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisJICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b250ZW50IikuZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQu
aW5uZXJIVE1MOwogfSwgZmFsc2UpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRN
TC8wMDQueGh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvMDA0
LnhodG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC8w
MDQueGh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKIDwvc3ZnPgogPHNjcmlw
dD4KIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyICgibG9hZCIsIGZ1bmN0aW9uKCkgewotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisJICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iiku
Zmlyc3RDaGlsZC5ub2RlVmFsdWUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1M
OwogfSwgZmFsc2UpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC8wMDUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1MLzAwNS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW5uZXJI
VE1MLzAwNS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDggKzExLDggQEAgQ29u
dGVudDoKIDxiPnRlc3Q8L2I+CiA8YnI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudCIpLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmlubmVySFRNTDsKIDwvc2NyaXB0PjwvYm9keT4KIHRlc3QgCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC8wMDUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2lubmVySFRNTC8wMDUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9pbm5lckhUTUwvMDA1Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDggKzEy
LDggQEAKIDxiPnRlc3Q8L2I+CiA8YnI+CiA8c2NyaXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLQlsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudCIpLmZpcnN0Q2hpbGQubm9kZVZhbHVlID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LmlubmVySFRNTDsKIDwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9pbm5lckhUTUwvYWRkaXRpb25hbC1pbmxpbmUtc3R5bGUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9hZGRpdGlvbmFsLWlubGluZS1zdHls
ZS5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9h
ZGRpdGlvbmFsLWlubGluZS1zdHlsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDggKzcsOCBA
QAogICAgIDxzY3JpcHQ+CiAgICAgICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
IAogICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKTsKICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGFyZ2V0Iik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtY2Fz
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1ML2lubmVySFRN
TC1jYXNlLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW5uZXJI
VE1ML2lubmVySFRNTC1jYXNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsOCArNSw4IEBACiA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIAogPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgd2lu
ZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewog
ICAgIHZhciBjb25zb2xlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1ML2lubmVySFRNTC1jaGFuZ2luZy1kb2N1bWVu
dC1wcm9wZXJ0aWVzLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5uZXJI
VE1ML2lubmVySFRNTC1jaGFuZ2luZy1kb2N1bWVudC1wcm9wZXJ0aWVzLnhodG1sCShyZXZpc2lv
biAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtY2hhbmdp
bmctZG9jdW1lbnQtcHJvcGVydGllcy54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4ICszLDgg
QEAKIDxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KIDxkaXYgaWQ9
ImxvZyI+PC9kaXY+CiA8c2NyaXB0PjwhW0NEQVRBWwotICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAog
ICB2YXIgeGh0bWxOUyA9ICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIjsKICAgCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtY3VzdG9tLXRhZy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1ML2lubmVySFRNTC1jdXN0b20t
dGFnLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1M
L2lubmVySFRNTC1jdXN0b20tdGFnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBA
CiA8dGl0bGU+SFRNTCBpbm5lckhUTUwgdGVzdCwgaW5jbHVkaW5nIGN1c3RvbSB0YWdzPC90aXRs
ZT4KIDxzY3JpcHQ+CiBmdW5jdGlvbiB0ZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOwogICAgIHZhciBuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImVtcHR5Q3Vz
dG9tVGFnIilbMF07CiAgICAgbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoImh0dHA6Ly93ZWJraXQub3JnL3Rlc3QiLCAiYW5vdGhlckVtcHR5Q3VzdG9t
VGFnIiksIG4ubmV4dFNpYmxpbmcpOwogICAgIG4ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIlxuIiksIG4ubmV4dFNpYmxpbmcpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1ML2lubmVySFRNTC1pZnJhbWUuaHRtbAkocmV2aXNp
b24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLWlmcmFt
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEyIEBACiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIH0KIAogc2V0VGltZW91dChmdW5jdGlvbigp
ewogICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICI8Yj5QQVNTOjwvYj4gYm9keSBh
bmQgaWZyYW1lIGNsZWFyZWQgd2l0aG91dCBjcmFzaGluZy4iOwotICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwogICAgIH0sIDApOwogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9J2RvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ4IikuaW5uZXJIVE1MID0gMSc+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2lubmVy
SFRNTC9pbm5lckhUTUwtbmJzcC54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2lubmVySFRNTC9pbm5lckhUTUwtbmJzcC54aHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLW5ic3AueGh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTYsOCArNiw4IEBACiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIAogPHNjcmlwdD4K
LWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOwogCiBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewogICAgIHZhciBjb25zb2xl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKTsKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvaW5uZXJIVE1ML2lubmVySFRNTC1zY3JpcHQtdGFnLWNyYXNoLnhodG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1ML2lubmVySFRNTC1zY3JpcHQtdGFnLWNy
YXNoLnhodG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRN
TC9pbm5lckhUTUwtc2NyaXB0LXRhZy1jcmFzaC54aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMyw4
ICszLDggQEAKIDxoZWFkPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIDwhW0NEQVRBWwotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAK
ICAgICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwog
ICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHNwYW4pOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvamF2YXNjcmlwdC11cmwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9qYXZhc2NyaXB0LXVybC5odG1s
CShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9qYXZhc2Ny
aXB0LXVybC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogPGhlYWQ+CiA8c2Ny
aXB0PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgCiBmdW5jdGlvbiBwcmludChtZXNzYWdlLCBjb2xvcikg
CiB7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci1zdXBwb3J0L2Nzc1VSTFF1b3Rl
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQv
Y3NzVVJMUXVvdGVzLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3Qv
aW5zcGVjdG9yLXN1cHBvcnQvY3NzVVJMUXVvdGVzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
OCArNSw4IEBACiBmdW5jdGlvbiB0ZXN0KGlkLCByZWFzb24pIHsKICAgICBhbGVydChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1p
bWFnZSIpICsgIiAoIiArIHJlYXNvbiArICIpIik7CiB9Ci1pZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIHRlc3QoInRl
c3RVbnF1b3RlZCIsICJVUkwgc2hvdWxkIG5vdCBiZSBxdW90ZWQiKTsKIHRlc3QoInRlc3ROb1F1
b3Rlc05lZWRlZCIsICJVUkwgc2hvdWxkIG5vdCBiZSBxdW90ZWQiKTsKIHRlc3QoInRlc3RTaG91
bGRRdW90ZSIsICJVUkwgc2hvdWxkIGJlIHF1b3RlZCIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9pbnNwZWN0b3Itc3VwcG9ydC9zdHlsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvc3R5bGUuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC9zdHlsZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDggKzEsOCBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQ+Ci0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxzdHlsZT4KIGRpdiB7IGJhY2tncm91bmQ6
IHB1cnBsZTsgbWFyZ2luOiAxZW07IGNvbG9yOiB3aGl0ZTsgZm9udDogMjRweCAnTHVjaWRhIEdy
YW5kZSc7IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVn
aHQtZG9tMS1leGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2lu
c3BlY3Rvci1zdXBwb3J0L3VuY2F1Z2h0LWRvbTEtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDEy
MTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9t
MS1leGNlcHRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIAogZnVuY3Rp
b24gb25sb2FkKCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAogICAgIC8vIEZv
bGxvd2luZyBjb2RlIGdlbmVyYXRlcyBhbiBleGNlcHRpb24uCiAgICAgdmFyIHAgPSBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3Itc3Vw
cG9ydC91bmNhdWdodC1kb20zLWV4Y2VwdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9tMy1leGNlcHRpb24uaHRtbAko
cmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbnNwZWN0b3Itc3VwcG9ydC91
bmNhdWdodC1kb20zLWV4Y2VwdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDggKzQsOCBA
QAogCiBmdW5jdGlvbiBvbmxvYWQoKQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
ICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoKSk7CiB9CiAK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9tOC1l
eGNlcHRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2luc3BlY3Rvci1z
dXBwb3J0L3VuY2F1Z2h0LWRvbTgtZXhjZXB0aW9uLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysr
IExheW91dFRlc3RzL2Zhc3QvaW5zcGVjdG9yLXN1cHBvcnQvdW5jYXVnaHQtZG9tOC1leGNlcHRp
b24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw4ICs0LDggQEAKIAogZnVuY3Rpb24gb25sb2Fk
KCkKIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICBkb2N1bWVudC5hcHBlbmRD
aGlsZCgpOwogfQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ludmFsaWQvaW52YWxpZFNWR0Zv
bnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ludmFsaWQvaW52YWxpZFNW
R0ZvbnQuaHRtbAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbnZhbGlk
L2ludmFsaWRTVkdGb250Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE1LDggKzE1LDggQEAKIDxi
b2R5PgogPHA+VGVzdCBjYXNlIGZvciBidWcgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODYyIj4xODg2MjwvYT46IENyYXNoIHdoaWxlIGhhbmRsaW5n
IFNWRyBmb250IGluIHRoZSB3cm9uZyBuYW1lc3BhY2UgaW1wb3J0ZWQgd2l0aCBAZm9udC1mYWNl
PC9wPgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogPC9zY3JpcHQ+CiA8cCBjbGFzcz0iY3VzdG9t
Rm9udCI+IFBBU1NFRCAoZGlkIG5vdCBjcmFzaCBvciBBU1NFUlQpPC9wPgogPC9ib2R5PjwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW52YWxpZC9uZXN0ZWRoM3MtcmFwaWR3ZWF2ZXIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ludmFsaWQvbmVzdGVkaDNzLXJh
cGlkd2VhdmVyLmh0bWwJKHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW52
YWxpZC9uZXN0ZWRoM3MtcmFwaWR3ZWF2ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCAr
MTAsOCBAQCBmdW5jdGlvbiBsb2cocykKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
c29sZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHMgKyAiXG4iKSk7CiB9
CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOwogCiB2YXIgaDMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaDMi
KTsKIGxvZygiaDMuZmlyc3RDaGlsZDogIiArIGgzLmZpcnN0Q2hpbGQudGFnTmFtZSk7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ludmFsaWQvdGVzdC1jYXNlLXRyLXRoLXRkLXNob3VsZC1ub3Qt
Y2xvc2UtZGwtbGlzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW52YWxp
ZC90ZXN0LWNhc2UtdHItdGgtdGQtc2hvdWxkLW5vdC1jbG9zZS1kbC1saXN0Lmh0bWwJKHJldmlz
aW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL2Zhc3QvaW52YWxpZC90ZXN0LWNhc2UtdHItdGgt
dGQtc2hvdWxkLW5vdC1jbG9zZS1kbC1saXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsOCAr
MSw4IEBACiA8IWRvY3R5cGUgaHRtbD4KIDxodG1sPgogPHNjcmlwdD4KLSAgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiA8L3NjcmlwdD4KIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAg
ICAgZHQgPiBwLCBkbCA+IHAgeyBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1lOyBvdXRsaW5lOiAxcHgg
c29saWQgbGltZTsgfQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvaW1hZ2Vz
L2V4aWYtb3JpZW50YXRpb24tY3NzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi1jc3MtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9pbWFnZXMvZXhpZi1vcmllbnRhdGlvbi1jc3MtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAotTm9uZSBvZiB0aGUgaW1hZ2VzIHNob3VsZCBiZSByb3RhdGVkLiBU
aGlzIHRlc3QgaXMgb25seSB2YWxpZCB3aGVuIHJ1biB3aXRoIGxheW91dFRlc3RDb250cm9sbGVy
IChvciB3aXRoIFdlYktpdFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIG1hbnVhbGx5IHNl
dCB0byB0cnVlKS4KK05vbmUgb2YgdGhlIGltYWdlcyBzaG91bGQgYmUgcm90YXRlZC4gVGhpcyB0
ZXN0IGlzIG9ubHkgdmFsaWQgd2hlbiBydW4gd2l0aCB0ZXN0UnVubmVyIChvciB3aXRoIFdlYktp
dFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uIG1hbnVhbGx5IHNldCB0byB0cnVlKS4KIAog
CiBOb3JtYWwgCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9pbWFnZXMvZXhp
Zi1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvaW1hZ2VzL2V4aWYtb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9pbWFnZXMvZXhp
Zi1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci1UaGUgaW1hZ2VzIHNob3VsZCBiZSByb3RhdGVkIHJlc3BlY3RpbmcgdGhlaXIgRVhJRiBvcmll
bnRhdGlvbi4gVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biB3aXRoIGxheW91dFRlc3RDb250cm9s
bGVyIChvciBieSBtYW51YWxseSBzZXR0aW5nIFdlYktpdFNob3VsZFJlc3BlY3RJbWFnZU9yaWVu
dGF0aW9uIHRvIHRydWUpLgorVGhlIGltYWdlcyBzaG91bGQgYmUgcm90YXRlZCByZXNwZWN0aW5n
IHRoZWlyIEVYSUYgb3JpZW50YXRpb24uIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gd2l0aCB0
ZXN0UnVubmVyIChvciBieSBtYW51YWxseSBzZXR0aW5nIFdlYktpdFNob3VsZFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uIHRvIHRydWUpLgogCiAKIE5vcm1hbCAKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLWNzcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL2V4aWYt
b3JpZW50YXRpb24tY3NzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL2V4aWYtb3JpZW50YXRpb24tY3NzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLU5vbmUgb2YgdGhlIGltYWdl
cyBzaG91bGQgYmUgcm90YXRlZC4gVGhpcyB0ZXN0IGlzIG9ubHkgdmFsaWQgd2hlbiBydW4gd2l0
aCBsYXlvdXRUZXN0Q29udHJvbGxlciAob3Igd2l0aCBXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VP
cmllbnRhdGlvbiBtYW51YWxseSBzZXQgdG8gdHJ1ZSkuCitOb25lIG9mIHRoZSBpbWFnZXMgc2hv
dWxkIGJlIHJvdGF0ZWQuIFRoaXMgdGVzdCBpcyBvbmx5IHZhbGlkIHdoZW4gcnVuIHdpdGggdGVz
dFJ1bm5lciAob3Igd2l0aCBXZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiBtYW51
YWxseSBzZXQgdG8gdHJ1ZSkuCiAKIAogTm9ybWFsIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvaW1hZ2VzL2V4aWYtb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0
aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTIxMDA3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2Zhc3QvaW1hZ2VzL2V4aWYtb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotVGhlIGltYWdlcyBzaG91bGQgYmUgcm90YXRlZCByZXNw
ZWN0aW5nIHRoZWlyIEVYSUYgb3JpZW50YXRpb24uIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4g
d2l0aCBsYXlvdXRUZXN0Q29udHJvbGxlciAob3IgYnkgbWFudWFsbHkgc2V0dGluZyBXZWJLaXRT
aG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiB0byB0cnVlKS4KK1RoZSBpbWFnZXMgc2hvdWxk
IGJlIHJvdGF0ZWQgcmVzcGVjdGluZyB0aGVpciBFWElGIG9yaWVudGF0aW9uLiBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgcnVuIHdpdGggdGVzdFJ1bm5lciAob3IgYnkgbWFudWFsbHkgc2V0dGluZyBX
ZWJLaXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiB0byB0cnVlKS4KIAogCiBOb3JtYWwg
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvYmFjay10by11bnJl
YWNoYWJsZS11cmwtdGhlbi1mb3J3YXJkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvZmFzdC9oaXN0b3J5L2JhY2stdG8tdW5yZWFjaGFibGUtdXJsLXRoZW4tZm9y
d2FyZC5odG1sCShyZXZpc2lvbiAxMjEwMDcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9m
YXN0L2hpc3RvcnkvYmFjay10by11bnJlYWNoYWJsZS11cmwtdGhlbi1mb3J3YXJkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTcsMjIgKzcsMjIgQEAKIC8vIDItIGxvYWRzIGNoZWNrLXNjcm9sbC1w
b3NpdGlvbi5odG1sLgogLy8gMy0gZXhlY3V0ZXMgYmFjayBhbmQgZm9yd2FyZCBuYXZpZ2F0aW9u
cy4KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuaGFuZGxlRXJyb3JQYWdlcygpOworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IiwgMSk7
CisgICAgdGVzdFJ1bm5lci5oYW5kbGVFcnJvclBhZ2VzKCk7CiB9CiAKIGZ1bmN0aW9uIG9uUGFn
ZVNob3coZXZ0KQogewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICAgICAgaWYgKCFldnQucGVyc2lzdGVkKSB7
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRoZSBwYWdlIGhhcyBiZWVu
IGxvYWRlZCwgdGhlbiBzZXR1cCB0aGUKICAgICAgICAgICAgIC8vIHRvLWJlLXRlc3RlZCBzY2Vu
YXJpby4KLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlTG9hZCgiLi9ub24t
ZXhpc3RlbnQuaHRtbCIpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIucXVldWVM
b2FkKCJyZXNvdXJjZXMvY2hlY2stc2Nyb2xsLXBvc2l0aW9uLmh0bWwiKTsKLSAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLnF1ZXVlQmFja05hdmlnYXRpb24oMSk7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5xdWV1ZUZvcndhcmROYXZpZ2F0aW9uKDEpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5xdWV1ZUxvYWQoIi4vbm9uLWV4aXN0ZW50Lmh0bWwiKTsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIucXVldWVMb2FkKCJyZXNvdXJjZXMvY2hlY2stc2Nyb2xsLXBvc2l0
aW9uLmh0bWwiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucXVldWVCYWNrTmF2aWdhdGlvbigx
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucXVldWVGb3J3YXJkTmF2aWdhdGlvbigxKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBwYWdlIGlzIGxvYWRlZCBhZ2Fpbj8g
U28gZWl0aGVyIHRoZSBEUlQgZG9lc24ndCBzdXBwb3J0IGVycm9yIHBhZ2UKICAgICAgICAgICAg
IC8vIG9yIGl0IGRvZXNuJ3Qgc2F2ZSBhIGhpc3RvcnkgaXRlbSBmb3IgdGhlIGVycm9yIHBhZ2Uu
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L2hpc3RvcnkvcmVzb3VyY2VzL2No
ZWNrLXNjcm9sbC1wb3NpdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL3F0L2Zhc3QvaGlzdG9yeS9yZXNvdXJjZXMvY2hlY2stc2Nyb2xsLXBvc2l0aW9uLmh0bWwJ
KHJldmlzaW9uIDEyMTAwNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvaGlzdG9y
eS9yZXNvdXJjZXMvY2hlY2stc2Nyb2xsLXBvc2l0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsOCArMSw4IEBACiA8aGVhZD4KIDx0aXRsZT5DaGVjayBTY3JvbGwgUG9zaXRpb248L3RpdGxl
PgogPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCiBmdW5jdGlvbiBjaGVja1Njcm9sbFBv
c2l0aW9uKCkKIHsKQEAgLTEwLDggKzEwLDggQEAgZnVuY3Rpb24gY2hlY2tTY3JvbGxQb3NpdGlv
bigpCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwg
PSAiU1VDQ0VTUyI7CiAgICAgZWxzZQogICAgICAgICB3aW5kb3cuc2Nyb2xsKDAsIDUwMCk7Ci0g
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIG9ubG9hZCA9IGNoZWNrU2Nyb2xsUG9z
aXRpb247Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>