<?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>22306</bug_id>
          
          <creation_ts>2008-11-17 01:06:15 -0800</creation_ts>
          <short_desc>Disable channel messaging support</short_desc>
          <delta_ts>2008-11-18 00:53:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99008</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-17 01:06:15 -0800</bug_when>
    <thetext>MessagePort API is likely to change to be usable for communication with workers. So, it would be counter-productive to ship it in its current state, but I&apos;d like to keep the implementation around for experiments for now.

Patch to disable MesagePort/MessageChannel by default forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99010</commentid>
    <comment_count>1</comment_count>
      <attachid>25210</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-17 01:15:18 -0800</bug_when>
    <thetext>Created attachment 25210
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99046</commentid>
    <comment_count>2</comment_count>
      <attachid>25210</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-17 09:06:59 -0800</bug_when>
    <thetext>Comment on attachment 25210
proposed patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99139</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-18 00:07:14 -0800</bug_when>
    <thetext>Committed revision 38547.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99142</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-18 00:53:25 -0800</bug_when>
    <thetext>...and revision 38550 for WebKitTools.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25210</attachid>
            <date>2008-11-17 01:15:18 -0800</date>
            <delta_ts>2008-11-17 09:06:59 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>DisableMessagePort.txt</filename>
            <type>text/plain</type>
            <size>60883</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODQ5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDgtMTEtMTcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMwNgorICAgICAgICBE
aXNhYmxlIGNoYW5uZWwgbWVzc2FnaW5nIHN1cHBvcnQKKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgIChqc0RPTVdpbmRvd0Jhc2VNZXNzYWdlQ2hh
bm5lbCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICBIaWRlIE1lc3Nz
YWdlUG9ydCBhbmQgTWVzc2FnZUNoYW5uZWwgZ2xvYmFsIGNvbnN0cnVjdG9ycy4gRHVlIHRvIHRo
ZSB3YXkgTWVzc2FnZUNoYW5uZWwKKyAgICAgICAgY29uc3RydWN0b3IgaXMgYWRkZWQsIGl0IHJl
bWFpbnMgZW51bWVyYWJsZSwgYnV0IHVuZGVmaW5lZC4KKwogMjAwOC0xMS0xNiAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4g
QmVybnN0ZWluCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShy
ZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDE5LDkgKzQxOSwxMyBAQCBKU1ZhbHVlKiBqc0RPTVdpbmRv
d0Jhc2VJbWFnZShFeGVjU3RhdGUqCiAKIEpTVmFsdWUqIGpzRE9NV2luZG93QmFzZU1lc3NhZ2VD
aGFubmVsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyNpZiBFTkFCTEUoQ0hBTk5FTF9NRVNTQUdJTkcpCiAgICAgaWYgKCFz
dGF0aWNfY2FzdDxKU0RPTVdpbmRvd0Jhc2UqPihhc09iamVjdChzbG90LnNsb3RCYXNlKCkpKS0+
YWxsb3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTTWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvcj4o
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlKj4oYXNPYmplY3Qoc2xvdC5zbG90QmFz
ZSgpKSkpOworI2Vsc2UKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyNlbmRpZgogfQogCiBK
U1ZhbHVlKiBqc0RPTVdpbmRvd0Jhc2VPcHRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQpJbmRleDogV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJl
dmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM0Myw3ICszNDMsOSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRl
IE1lc3NhZ2VFdmVudENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKICAgICAgICAgYXR0cmlidXRl
IEV2ZW50RXhjZXB0aW9uQ29uc3RydWN0b3IgRXZlbnRFeGNlcHRpb247CiAKKyNpZiBFTkFCTEUo
Q0hBTk5FTF9NRVNTQUdJTkcpCiAgICAgICAgIGF0dHJpYnV0ZSBNZXNzYWdlUG9ydENvbnN0cnVj
dG9yIE1lc3NhZ2VQb3J0OworI2VuZGlmCiAKICAgICAgICAgYXR0cmlidXRlIENsaXBib2FyZENv
bnN0cnVjdG9yIENsaXBib2FyZDsKIApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMzg0OTIpCisrKyBXZWJL
aXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAwOC0x
MS0xNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMzA2CisgICAgICAgIERpc2FibGUgY2hhbm5lbCBtZXNzYWdp
bmcgc3VwcG9ydAorCisgICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6IEFkZCBhbiBvcHRp
b24gdG8gZW5hYmxlIGNoYW5uZWwgbWVzc2FnaW5nLgorCiAyMDA4LTExLTE2ICBHcmVnIEJvbHNp
bmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHJldmlzaW9uIDM4NDkwKQorKysg
V2ViS2l0VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgdXNlIFBPU0lYOwogCiBteSAkb3JpZ2luYWxXb3JraW5nRGlyZWN0b3J5ID0gZ2V0
Y3dkKCk7CiAKK215ICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydCA9IDA7CiBteSAkZGF0YWJhc2VT
dXBwb3J0ID0gMTsKIG15ICRkb21TdG9yYWdlU3VwcG9ydCA9IDE7CiBteSAkaWNvbkRhdGFiYXNl
U3VwcG9ydCA9IDE7CkBAIC02OSw2ICs3MCw3IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlv
bnNdIFtvcHRpb25zIHQKICAgLS1jbGVhbiAgICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cCB0
aGUgYnVpbGQgZGlyZWN0b3J5CiAgIC0tdW5pdmVyc2FsICAgICAgICAgICAgICAgICAgIEJ1aWxk
IDItd2F5IHVuaXZlcnNhbCAoUFBDIGFuZCBJbnRlbCAzMi1iaXQpCiAgIC0tNjQtYml0ICAgICAg
ICAgICAgICAgICAgICAgIEJ1aWxkIDY0LWJpdCwgY29tYmluZSB3aXRoIC0tdW5pdmVyc2FsIHRv
IGJ1aWxkIDQtd2F5IHVuaXZlcnNhbAorICAtLVtuby1dY2hhbm5lbC1tZXNzYWdpbmcgICAgICAg
ICAgVG9nZ2xlIE1lc3NhZ2VDaGFubmVsIGFuZCBNZXNzYWdlUG9ydCBzdXBwb3J0IChkZWZhdWx0
OiAkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQpCiAgIC0tW25vLV1vZmZsaW5lLXdlYi1hcHBsaWNh
dGlvbnMgICBUb2dnbGUgT2ZmbGluZSBXZWIgQXBwbGljYXRpb24gU3VwcG9ydCAoZGVmYXVsdCA6
ICRvZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0KQogICAtLVtuby1dZGF0YWJhc2UgICAgICAg
ICAgICAgICBUb2dnbGUgRGF0YWJhc2UgU3VwcG9ydCAoZGVmYXVsdDogJGRhdGFiYXNlU3VwcG9y
dCkKICAgLS1bbm8tXWRvbS1zdG9yYWdlICAgICAgICAgICAgVG9nZ2xlIERPTSBTdG9yYWdlIFN1
cHBvcnQgKGRlZmF1bHQ6ICRkb21TdG9yYWdlU3VwcG9ydCkKQEAgLTg5LDcgKzkxLDggQEAgVXNh
Z2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10gW29wdGlvbnMgdAogICAtLVtuby1dY292ZXJhZ2Ug
ICAgICAgICAgICAgICBUb2dnbGUgY29kZSBjb3ZlcmFnZSBzdXBwb3J0IChkZWZhdWx0OiAkY292
ZXJhZ2VTdXBwb3J0KQogRU9GCiAKLUdldE9wdGlvbnMoJ2RhdGFiYXNlIScgPT4gXCRkYXRhYmFz
ZVN1cHBvcnQsCitHZXRPcHRpb25zKCdjaGFubmVsLW1lc3NhZ2luZyEnID0+IFwkY2hhbm5lbE1l
c3NhZ2luZ1N1cHBvcnQsCisgICAgICAgICAgICdkYXRhYmFzZSEnID0+IFwkZGF0YWJhc2VTdXBw
b3J0LAogICAgICAgICAgICAnZG9tLXN0b3JhZ2UhJyA9PiBcJGRvbVN0b3JhZ2VTdXBwb3J0LAog
ICAgICAgICAgICAnaWNvbi1kYXRhYmFzZSEnID0+IFwkaWNvbkRhdGFiYXNlU3VwcG9ydCwKICAg
ICAgICAgICAgJ29mZmxpbmUtd2ViLWFwcGxpY2F0aW9ucyEnID0+IFwkb2ZmbGluZVdlYkFwcGxp
Y2F0aW9uU3VwcG9ydCwKQEAgLTE1Nyw2ICsxNjAsNyBAQCBpZiAoaXNXeCgpKSB7CiBteSAkcHJv
ZHVjdERpciA9IHByb2R1Y3REaXIoKTsKIG15IEBvdmVycmlkZUZlYXR1cmVEZWZpbmVzT3B0aW9u
ID0gKCk7CiAKK3B1c2ggQG92ZXJyaWRlRmVhdHVyZURlZmluZXNPcHRpb24sICJFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkciIGlmICRjaGFubmVsTWVzc2FnaW5nU3VwcG9ydDsKIHB1c2ggQG92ZXJy
aWRlRmVhdHVyZURlZmluZXNPcHRpb24sICJFTkFCTEVfREFUQUJBU0UiIGlmICRkYXRhYmFzZVN1
cHBvcnQ7CiBwdXNoIEBvdmVycmlkZUZlYXR1cmVEZWZpbmVzT3B0aW9uLCAiRU5BQkxFX0RPTV9T
VE9SQUdFIiBpZiAkZG9tU3RvcmFnZVN1cHBvcnQ7CiBwdXNoIEBvdmVycmlkZUZlYXR1cmVEZWZp
bmVzT3B0aW9uLCAiRU5BQkxFX0lDT05EQVRBQkFTRSIgaWYgJGljb25EYXRhYmFzZVN1cHBvcnQ7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAzODQ5MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDA4LTExLTE3ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIz
MDYKKyAgICAgICAgRGlzYWJsZSBjaGFubmVsIG1lc3NhZ2luZyBzdXBwb3J0CisKKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbm8td3JhcHBlci5odG1sLWRpc2FibGVkOiBBZGRl
ZCBhIHRlc3QgdGhhdCBJIGhhZCBpbiBteSB0cmVlLgorCisgICAgICAgICogZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9j
b25zdHJ1Y3RvcnMtY2FjaGVkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9jb25z
dHJ1Y3RvcnMtY2FjaGVkLW5hdmlnYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pz
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICBVcGRhdGVkIHJlc3Vs
dHMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9kZXN0cm95ZWQtYXRvbWljLXN0cmluZy5odG1s
OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2Rlc3Ryb3llZC1hdG9taWMtc3RyaW5n
Lmh0bWwtZGlzYWJsZWQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rlc3Ry
b3llZC1hdG9taWMtc3RyaW5nLmh0bWwuCisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1j
aGFubmVsLWdjLTIuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNzYWdl
LWNoYW5uZWwtZ2MtMi5odG1sLWRpc2FibGVkOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L21lc3NhZ2UtY2hhbm5lbC1nYy0zLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZDogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbC1kaXNhYmxlZDogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLmh0bWwuCisgICAgICAg
ICogZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hp
cC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1s
aXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxlZDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93
bmVyc2hpcC5odG1sLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1
Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1s
LWRpc2FibGVkOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQtY29uc3RydWN0b3ItZm9yLWRlbGV0ZWQtZG9jdW1lbnQuaHRtbC4KKyAgICAgICAgKiBmYXN0
L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlz
YWJsZWQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1k
ZWxldGVkLWRvY3VtZW50Lmh0bWwuCisgICAgICAgICogZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWRlbGV0ZWQtZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sLWRpc2FibGVkOiBDb3BpZWQgZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sLgorICAgICAg
ICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1sOiBSZW1v
dmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVu
dC5odG1sLWRpc2FibGVkOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNz
YWdlLXBvcnQtaW5hY3RpdmUtZG9jdW1lbnQuaHRtbC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQtb25jbG9zZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1vbmNsb3NlLmh0bWwtZGlzYWJsZWQ6IENvcGllZCBmcm9tIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1vbmNsb3NlLmh0bWwuCisgICAgICAgICogZmFz
dC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0Lmh0bWwtZGlzYWJsZWQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC5odG1sOiBSZW1vdmVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29u
dGV4dC5odG1sLWRpc2FibGVkOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L01lc3NhZ2VQb3J0L2V2ZW50LWxpc3RlbmVyLWNvbnRleHQuaHRtbC4KKyAgICAgICAg
RGlzYWJsZWQgTWVzc2FnZVBvcnQgdGVzdHMuCisKIDIwMDgtMTEtMTYgIEdlb2ZmcmV5IEdhcmVu
ICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3RvcnMtY2FjaGVkLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3RvcnMtY2FjaGVkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMzg0OTApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9jb25zdHJ1Y3Rv
cnMtY2FjaGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogUEFTUyBJbWFnZSBpcyBJbWFn
ZQogUEFTUyBJbWFnZS50ZXN0UHJvcGVydHkgaXMgInByb3BlcnR5IHNldCBzdWNjZXNzZnVsbHki
CiBQQVNTIE1lc3NhZ2VDaGFubmVsIGlzIE1lc3NhZ2VDaGFubmVsCi1QQVNTIE1lc3NhZ2VDaGFu
bmVsLnRlc3RQcm9wZXJ0eSBpcyAicHJvcGVydHkgc2V0IHN1Y2Nlc3NmdWxseSIKK0ZBSUwgVGVz
dGluZyBNZXNzYWdlQ2hhbm5lbCB0aHJldyBUeXBlRXJyb3I6IFJlc3VsdCBvZiBleHByZXNzaW9u
ICd0aGlzW2NvbnN0cnVjdG9yXScgW3VuZGVmaW5lZF0gaXMgbm90IGFuIG9iamVjdC4KIFBBU1Mg
T3B0aW9uIGlzIE9wdGlvbgogUEFTUyBPcHRpb24udGVzdFByb3BlcnR5IGlzICJwcm9wZXJ0eSBz
ZXQgc3VjY2Vzc2Z1bGx5IgogUEFTUyBYTUxIdHRwUmVxdWVzdCBpcyBYTUxIdHRwUmVxdWVzdApJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vY29uc3RydWN0b3JzLWNhY2hlZC1uYXZpZ2F0ZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vY29uc3RydWN0
b3JzLWNhY2hlZC1uYXZpZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM4NDkwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vY29uc3RydWN0b3JzLWNhY2hlZC1uYXZpZ2F0ZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiw4IEBAIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRX
aW5kb3cuSW1hZ2UgaXMgdGUKIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuSW1hZ2UgIT09
IHdpbmRvdy5JbWFnZSBpcyB0cnVlCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93LkltYWdl
LnRlc3RQcm9wZXJ0eSBpcyAicHJvcGVydHkgc2V0IHN1Y2Nlc3NmdWxseSIKIFBBU1MgdGVzdEZy
YW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwgaXMgdGVzdEZyYW1lLmNvbnRlbnRXaW5k
b3cuTWVzc2FnZUNoYW5uZWwKLVBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNo
YW5uZWwgIT09IHdpbmRvdy5NZXNzYWdlQ2hhbm5lbCBpcyB0cnVlCi1QQVNTIHRlc3RGcmFtZS5j
b250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsLnRlc3RQcm9wZXJ0eSBpcyAicHJvcGVydHkgc2V0
IHN1Y2Nlc3NmdWxseSIKK0ZBSUwgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5u
ZWwgIT09IHdpbmRvdy5NZXNzYWdlQ2hhbm5lbCBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgor
RkFJTCBUZXN0aW5nIE1lc3NhZ2VDaGFubmVsIHRocmV3IFR5cGVFcnJvcjogUmVzdWx0IG9mIGV4
cHJlc3Npb24gJ3Rlc3RGcmFtZS5jb250ZW50V2luZG93W2NvbnN0cnVjdG9yXScgW3VuZGVmaW5l
ZF0gaXMgbm90IGFuIG9iamVjdC4KIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuT3B0aW9u
IGlzIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk9wdGlvbgogUEFTUyB0ZXN0RnJhbWUuY29udGVu
dFdpbmRvdy5PcHRpb24gIT09IHdpbmRvdy5PcHRpb24gaXMgdHJ1ZQogUEFTUyB0ZXN0RnJhbWUu
Y29udGVudFdpbmRvdy5PcHRpb24udGVzdFByb3BlcnR5IGlzICJwcm9wZXJ0eSBzZXQgc3VjY2Vz
c2Z1bGx5IgpAQCAtMjQsMTEgKzI0LDExIEBAIFBBU1Mgc3RvcmVkQ29uc3RydWN0b3JzLkltYWdl
LnRlc3RQcm9wZXIKIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuSW1hZ2UudGVzdFByb3Bl
cnR5IGlzIHVuZGVmaW5lZC4KIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuSW1hZ2UuY2Fj
aGVkT25Pd25lckRvY3VtZW50IGlzIHRydWUKIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cu
TWVzc2FnZUNoYW5uZWwgaXMgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwK
LVBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwgIT09IHdpbmRvdy5N
ZXNzYWdlQ2hhbm5lbCBpcyB0cnVlCi1QQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk1lc3Nh
Z2VDaGFubmVsICE9PSBzdG9yZWRDb25zdHJ1Y3RvcnMuTWVzc2FnZUNoYW5uZWwgaXMgdHJ1ZQot
UEFTUyBzdG9yZWRDb25zdHJ1Y3RvcnMuTWVzc2FnZUNoYW5uZWwudGVzdFByb3BlcnR5IGlzICJw
cm9wZXJ0eSBzZXQgc3VjY2Vzc2Z1bGx5IgotUEFTUyB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5N
ZXNzYWdlQ2hhbm5lbC50ZXN0UHJvcGVydHkgaXMgdW5kZWZpbmVkLgotUEFTUyB0ZXN0RnJhbWUu
Y29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbC5jYWNoZWRPbk93bmVyRG9jdW1lbnQgaXMgdHJ1
ZQorRkFJTCB0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNzYWdlQ2hhbm5lbCAhPT0gd2luZG93
Lk1lc3NhZ2VDaGFubmVsIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlMIHRlc3RGcmFt
ZS5jb250ZW50V2luZG93Lk1lc3NhZ2VDaGFubmVsICE9PSBzdG9yZWRDb25zdHJ1Y3RvcnMuTWVz
c2FnZUNoYW5uZWwgc2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK0ZBSUwgc3RvcmVkQ29uc3Ry
dWN0b3JzLk1lc3NhZ2VDaGFubmVsLnRlc3RQcm9wZXJ0eSBzaG91bGQgYmUgcHJvcGVydHkgc2V0
IHN1Y2Nlc3NmdWxseS4gVGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogUmVzdWx0IG9mIGV4cHJl
c3Npb24gJ3N0b3JlZENvbnN0cnVjdG9ycy5NZXNzYWdlQ2hhbm5lbCcgW3VuZGVmaW5lZF0gaXMg
bm90IGFuIG9iamVjdC4KK0ZBSUwgdGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5u
ZWwudGVzdFByb3BlcnR5IHNob3VsZCBiZSB1bmRlZmluZWQuIFRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFJlc3VsdCBvZiBleHByZXNzaW9uICd0ZXN0RnJhbWUuY29udGVudFdpbmRvdy5NZXNz
YWdlQ2hhbm5lbCcgW3VuZGVmaW5lZF0gaXMgbm90IGFuIG9iamVjdC4KK0ZBSUwgdGVzdEZyYW1l
LmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwuY2FjaGVkT25Pd25lckRvY3VtZW50IHNob3Vs
ZCBiZSB0cnVlLiBUaHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBSZXN1bHQgb2YgZXhwcmVzc2lv
biAndGVzdEZyYW1lLmNvbnRlbnRXaW5kb3cuTWVzc2FnZUNoYW5uZWwnIFt1bmRlZmluZWRdIGlz
IG5vdCBhbiBvYmplY3QuCiBQQVNTIHRlc3RGcmFtZS5jb250ZW50V2luZG93Lk9wdGlvbiBpcyB0
ZXN0RnJhbWUuY29udGVudFdpbmRvdy5PcHRpb24KIFBBU1MgdGVzdEZyYW1lLmNvbnRlbnRXaW5k
b3cuT3B0aW9uICE9PSB3aW5kb3cuT3B0aW9uIGlzIHRydWUKIFBBU1MgdGVzdEZyYW1lLmNvbnRl
bnRXaW5kb3cuT3B0aW9uICE9PSBzdG9yZWRDb25zdHJ1Y3RvcnMuT3B0aW9uIGlzIHRydWUKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1w
cm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzg0OTApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC05MDYsMTkgKzkwNiw5IEBAIHdpbmRvdy5NZWRpYUxpc3QucHJvdG90eXBlIFtvYmpl
Y3QgTWVkaWEKIHdpbmRvdy5NZWRpYUxpc3QucHJvdG90eXBlLmFwcGVuZE1lZGl1bSBbZnVuY3Rp
b25dCiB3aW5kb3cuTWVkaWFMaXN0LnByb3RvdHlwZS5kZWxldGVNZWRpdW0gW2Z1bmN0aW9uXQog
d2luZG93Lk1lZGlhTGlzdC5wcm90b3R5cGUuaXRlbSBbZnVuY3Rpb25dCi13aW5kb3cuTWVzc2Fn
ZUNoYW5uZWwgW29iamVjdCBNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yXQotd2luZG93Lk1lc3Nh
Z2VDaGFubmVsLnByb3RvdHlwZSBbb2JqZWN0IE1lc3NhZ2VDaGFubmVsUHJvdG90eXBlXQord2lu
ZG93Lk1lc3NhZ2VDaGFubmVsIFt1bmRlZmluZWRdCiB3aW5kb3cuTWVzc2FnZUV2ZW50IFtvYmpl
Y3QgTWVzc2FnZUV2ZW50Q29uc3RydWN0b3JdCiB3aW5kb3cuTWVzc2FnZUV2ZW50LnByb3RvdHlw
ZSBbcHJpbnRlZCBhYm92ZSBhcyB3aW5kb3cuRXZlbnQucHJvdG90eXBlXQotd2luZG93Lk1lc3Nh
Z2VQb3J0IFtvYmplY3QgTWVzc2FnZVBvcnRDb25zdHJ1Y3Rvcl0KLXdpbmRvdy5NZXNzYWdlUG9y
dC5wcm90b3R5cGUgW29iamVjdCBNZXNzYWdlUG9ydFByb3RvdHlwZV0KLXdpbmRvdy5NZXNzYWdl
UG9ydC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCi13aW5kb3cuTWVzc2Fn
ZVBvcnQucHJvdG90eXBlLmNsb3NlIFtmdW5jdGlvbl0KLXdpbmRvdy5NZXNzYWdlUG9ydC5wcm90
b3R5cGUuZGlzcGF0Y2hFdmVudCBbZnVuY3Rpb25dCi13aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90
eXBlLnBvc3RNZXNzYWdlIFtmdW5jdGlvbl0KLXdpbmRvdy5NZXNzYWdlUG9ydC5wcm90b3R5cGUu
cmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCi13aW5kb3cuTWVzc2FnZVBvcnQucHJvdG90
eXBlLnN0YXJ0IFtmdW5jdGlvbl0KLXdpbmRvdy5NZXNzYWdlUG9ydC5wcm90b3R5cGUuc3RhcnRD
b252ZXJzYXRpb24gW2Z1bmN0aW9uXQogd2luZG93Lk1pbWVUeXBlIFtvYmplY3QgTWltZVR5cGVD
b25zdHJ1Y3Rvcl0KIHdpbmRvdy5NaW1lVHlwZS5wcm90b3R5cGUgW29iamVjdCBNaW1lVHlwZVBy
b3RvdHlwZV0KIHdpbmRvdy5NaW1lVHlwZUFycmF5IFtvYmplY3QgTWltZVR5cGVBcnJheUNvbnN0
cnVjdG9yXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGVzdHJveWVkLWF0b21pYy1z
dHJpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9kZXN0cm95
ZWQtYXRvbWljLXN0cmluZy5odG1sCShyZXZpc2lvbiAzODQ5MCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2Rlc3Ryb3llZC1hdG9taWMtc3RyaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsODQgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgYWRkaW5nIGFuIGV2ZW50IGxpc3Rl
bmVyIGZvciBhbiBldmVudCB3aXRoIGEgdW5pcXVlIG5hbWUgd29ya3MgY29ycmVjdGx5ICh0aGlz
IHVzZWQgdG8gY29ycnVwdCBldmVudCBsaXN0ZW5lciBtYXAgYWZ0ZXIgR0MpLjwvcD4KLTxwcmUg
aWQ9bG9nPjwvcHJlPgotCi08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5k
b3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsK
LQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJh
Z2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEg
Y29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
Ci0KLXZhciBsaXN0ZW5lckNhbGxDb3VudCA9IDA7Ci12YXIgZXhwZWN0ZWRMaXN0ZW5lckNhbGxD
b3VudCA9IDA7Ci1mdW5jdGlvbiBsaXN0ZW5lcigpCi17Ci0gICAgKytsaXN0ZW5lckNhbGxDb3Vu
dDsKLX0KLQotZnVuY3Rpb24gYWRkTGlzdGVuZXIodGFyZ2V0TmFtZSwgbmFtZSkKLXsKLSAgICB2
YXIgdGFyZ2V0OwotICAgIHRyeSB7Ci0gICAgICAgIHRhcmdldCA9IGV2YWwodGFyZ2V0TmFtZSk7
Ci0gICAgICAgIGV2YWwodGFyZ2V0KS5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGxpc3RlbmVyLCB0
cnVlKTsKLSAgICAgICAgKytleHBlY3RlZExpc3RlbmVyQ2FsbENvdW50OwotICAgIH0gY2F0Y2gg
KGV4KSB7Ci0gICAgICAgIGxvZygodGFyZ2V0ID8gdGFyZ2V0IDogdGFyZ2V0TmFtZSkgKyAiIGlz
IG5vdCBzdXBwb3J0ZWQsIG9yIGNhbm5vdCBiZSB1c2VkIHRvIHJlZ2lzdGVyIGFyYml0cmFyeSBl
dmVudCBoYW5kbGVycy4iKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQodGFy
Z2V0LCBuYW1lKQotewotICAgIHRyeSB7Ci0gICAgICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVh
dGVFdmVudCgiTWVzc2FnZUV2ZW50Iik7Ci0gICAgICAgIGV2dC5pbml0TWVzc2FnZUV2ZW50KG5h
bWUpOwotICAgICAgICBldmFsKHRhcmdldCkuZGlzcGF0Y2hFdmVudChldnQpOwotICAgIH0gY2F0
Y2ggKGV4KSB7Ci0gICAgfQotfQotCi12YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OwotYWRk
TGlzdGVuZXIoInhociIsICJmb28xIik7Ci1hZGRMaXN0ZW5lcigieGhyLnVwbG9hZCIsICJmb28y
Iik7Ci1hZGRMaXN0ZW5lcigid2luZG93LmFwcGxpY2F0aW9uQ2FjaGUiLCAiZm9vMyIpOwotdmFy
IGNoYW5uZWw7Ci10cnkgewotICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAg
Y2hhbm5lbC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKCJmb280IiwgbGlzdGVuZXIsIHRydWUpOwot
ICAgICsrZXhwZWN0ZWRMaXN0ZW5lckNhbGxDb3VudDsKLX0gY2F0Y2ggKGV4KSB7Ci0gICAgbG9n
KCJNZXNzYWdlQ2hhbm5lbCBpcyBub3Qgc3VwcG9ydGVkLCBvciBjYW5ub3QgYmUgdXNlZCB0byBy
ZWdpc3RlciBhcmJpdHJhcnkgZXZlbnQgaGFuZGxlcnMuIik7Ci19Ci0vLyB3aW5kb3cuZGlzcGF0
Y2hFdmVudCBpcyBjdXJyZW50bHkgdW5pbXBsZW1lbnRlZC4KLS8vIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCJmb281IiwgbGlzdGVuZXIsIHRydWUpOwotLy8gKytleHBlY3RlZExpc3RlbmVyQ2Fs
bENvdW50OwotZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJmb282IiwgbGlzdGVuZXIs
IHRydWUpOwotKytleHBlY3RlZExpc3RlbmVyQ2FsbENvdW50OwotCi1nYygpOwotCi1kaXNwYXRj
aEV2ZW50KCJ4aHIiLCAiZm9vMSIpOwotZGlzcGF0Y2hFdmVudCgieGhyLnVwbG9hZCIsICJmb28y
Iik7Ci1kaXNwYXRjaEV2ZW50KCJ3aW5kb3cuYXBwbGljYXRpb25DYWNoZSIsICJmb28zIik7Ci1k
aXNwYXRjaEV2ZW50KCJjaGFubmVsLnBvcnQxIiwgImZvbzQiKTsKLWRpc3BhdGNoRXZlbnQoIndp
bmRvdyIsICJmb281Iik7Ci1kaXNwYXRjaEV2ZW50KCJkb2N1bWVudC5ib2R5IiwgImZvbzYiKTsK
LQotZ2MoKTsKLQotbG9nKChsaXN0ZW5lckNhbGxDb3VudCA9PSBleHBlY3RlZExpc3RlbmVyQ2Fs
bENvdW50KSA/ICJQQVNTIiA6ICJGQUlMIik7Ci08L3NjcmlwdD4KLTwvYm9keT4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rlc3Ryb3llZC1hdG9taWMtc3RyaW5nLmh0bWwtZGlzYWJs
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGVzdHJveWVkLWF0b21p
Yy1zdHJpbmcuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMzg0NDIpCShmcm9tIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2Rlc3Ryb3llZC1hdG9taWMtc3RyaW5nLmh0bWw6Mzg0NDIpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9kZXN0cm95ZWQtYXRvbWljLXN0cmluZy5odG1sLWRpc2FibGVk
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IGFk
ZGluZyBhbiBldmVudCBsaXN0ZW5lciBmb3IgYW4gZXZlbnQgd2l0aCBhIHVuaXF1ZSBuYW1lIHdv
cmtzIGNvcnJlY3RseSAodGhpcyB1c2VkIHRvIGNvcnJ1cHQgZXZlbnQgbGlzdGVuZXIgbWFwIGFm
dGVyIEdDKS48L3A+Cis8cHJlIGlkPWxvZz48L3ByZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIGdj
KCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29u
dHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKysp
IHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFs
bG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3IFN0cmluZygi
YWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgbGlzdGVuZXJDYWxsQ291bnQgPSAwOwordmFyIGV4
cGVjdGVkTGlzdGVuZXJDYWxsQ291bnQgPSAwOworZnVuY3Rpb24gbGlzdGVuZXIoKQoreworICAg
ICsrbGlzdGVuZXJDYWxsQ291bnQ7Cit9CisKK2Z1bmN0aW9uIGFkZExpc3RlbmVyKHRhcmdldE5h
bWUsIG5hbWUpCit7CisgICAgdmFyIHRhcmdldDsKKyAgICB0cnkgeworICAgICAgICB0YXJnZXQg
PSBldmFsKHRhcmdldE5hbWUpOworICAgICAgICBldmFsKHRhcmdldCkuYWRkRXZlbnRMaXN0ZW5l
cihuYW1lLCBsaXN0ZW5lciwgdHJ1ZSk7CisgICAgICAgICsrZXhwZWN0ZWRMaXN0ZW5lckNhbGxD
b3VudDsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBsb2coKHRhcmdldCA/IHRhcmdldCA6
IHRhcmdldE5hbWUpICsgIiBpcyBub3Qgc3VwcG9ydGVkLCBvciBjYW5ub3QgYmUgdXNlZCB0byBy
ZWdpc3RlciBhcmJpdHJhcnkgZXZlbnQgaGFuZGxlcnMuIik7CisgICAgfQorfQorCitmdW5jdGlv
biBkaXNwYXRjaEV2ZW50KHRhcmdldCwgbmFtZSkKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIg
ZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1lc3NhZ2VFdmVudCIpOworICAgICAgICBldnQu
aW5pdE1lc3NhZ2VFdmVudChuYW1lKTsKKyAgICAgICAgZXZhbCh0YXJnZXQpLmRpc3BhdGNoRXZl
bnQoZXZ0KTsKKyAgICB9IGNhdGNoIChleCkgeworICAgIH0KK30KKwordmFyIHhociA9IG5ldyBY
TUxIdHRwUmVxdWVzdDsKK2FkZExpc3RlbmVyKCJ4aHIiLCAiZm9vMSIpOworYWRkTGlzdGVuZXIo
Inhoci51cGxvYWQiLCAiZm9vMiIpOworYWRkTGlzdGVuZXIoIndpbmRvdy5hcHBsaWNhdGlvbkNh
Y2hlIiwgImZvbzMiKTsKK3ZhciBjaGFubmVsOwordHJ5IHsKKyAgICBjaGFubmVsID0gbmV3IE1l
c3NhZ2VDaGFubmVsOworICAgIGNoYW5uZWwucG9ydDEuYWRkRXZlbnRMaXN0ZW5lcigiZm9vNCIs
IGxpc3RlbmVyLCB0cnVlKTsKKyAgICArK2V4cGVjdGVkTGlzdGVuZXJDYWxsQ291bnQ7Cit9IGNh
dGNoIChleCkgeworICAgIGxvZygiTWVzc2FnZUNoYW5uZWwgaXMgbm90IHN1cHBvcnRlZCwgb3Ig
Y2Fubm90IGJlIHVzZWQgdG8gcmVnaXN0ZXIgYXJiaXRyYXJ5IGV2ZW50IGhhbmRsZXJzLiIpOwor
fQorLy8gd2luZG93LmRpc3BhdGNoRXZlbnQgaXMgY3VycmVudGx5IHVuaW1wbGVtZW50ZWQuCisv
LyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZm9vNSIsIGxpc3RlbmVyLCB0cnVlKTsKKy8vICsr
ZXhwZWN0ZWRMaXN0ZW5lckNhbGxDb3VudDsKK2RvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5l
cigiZm9vNiIsIGxpc3RlbmVyLCB0cnVlKTsKKysrZXhwZWN0ZWRMaXN0ZW5lckNhbGxDb3VudDsK
KworZ2MoKTsKKworZGlzcGF0Y2hFdmVudCgieGhyIiwgImZvbzEiKTsKK2Rpc3BhdGNoRXZlbnQo
Inhoci51cGxvYWQiLCAiZm9vMiIpOworZGlzcGF0Y2hFdmVudCgid2luZG93LmFwcGxpY2F0aW9u
Q2FjaGUiLCAiZm9vMyIpOworZGlzcGF0Y2hFdmVudCgiY2hhbm5lbC5wb3J0MSIsICJmb280Iik7
CitkaXNwYXRjaEV2ZW50KCJ3aW5kb3ciLCAiZm9vNSIpOworZGlzcGF0Y2hFdmVudCgiZG9jdW1l
bnQuYm9keSIsICJmb282Iik7CisKK2djKCk7CisKK2xvZygobGlzdGVuZXJDYWxsQ291bnQgPT0g
ZXhwZWN0ZWRMaXN0ZW5lckNhbGxDb3VudCkgPyAiUEFTUyIgOiAiRkFJTCIpOworPC9zY3JpcHQ+
Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwt
Z2MtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2Ut
Y2hhbm5lbC1nYy0yLmh0bWwJKHJldmlzaW9uIDM4NDkwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0MSAr
MCwwIEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBjbG9zZSBldmVudCBnZXRz
IGRlbGl2ZXJlZCAod2l0aG91dCBjcmFzaGluZykgZXZlbiBpZiB0aGUgY2hhbm5lbCBvYmplY3Qg
aXMgZ2FyYmFnZSBjb2xsZWN0ZWQuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0Pgot
ZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICBy
ZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMg
YWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBu
ZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSAr
ICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVs
OwotCi1jaGFubmVsLnBvcnQxLm9uY2xvc2UgPSBmdW5jdGlvbigpIHsgbG9nKCJvbmNsb3NlIik7
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgZ2MoKTsgfSwgMCkgfQotY2hhbm5l
bC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKCJjbG9zZSIsIGZ1bmN0aW9uKCkgeyBsb2coImNsb3Nl
IGxpc3RlbmVyIik7IGdjKCk7IH0sIGZhbHNlKTsKLQotZ2MoKTsKLWNoYW5uZWwucG9ydDEuc3Rh
cnQoKTsKLWNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOwotCi1nYygpOwotY2hhbm5l
bC5wb3J0MS5jbG9zZSgpOwotY2hhbm5lbC5wb3J0Mi5jbG9zZSgpOwotZ2MoKTsKLWNoYW5uZWwg
PSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci1nYygpOwotPC9zY3JpcHQ+Ci08L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sLWRpc2FibGVk
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1n
Yy0yLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDM4NDQyKQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMi5odG1sOjM4NDQyKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWdjLTIuaHRtbC1kaXNhYmxlZAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQxIEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBj
bG9zZSBldmVudCBnZXRzIGRlbGl2ZXJlZCAod2l0aG91dCBjcmFzaGluZykgZXZlbiBpZiB0aGUg
Y2hhbm5lbCBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQuPC9wPgorPHByZSBpZD1sb2c+PC9w
cmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9s
bGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlv
biAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAg
ICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsOworCitjaGFubmVsLnBvcnQxLm9uY2xvc2UgPSBmdW5jdGlvbigpIHsg
bG9nKCJvbmNsb3NlIik7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgZ2MoKTsg
fSwgMCkgfQorY2hhbm5lbC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKCJjbG9zZSIsIGZ1bmN0aW9u
KCkgeyBsb2coImNsb3NlIGxpc3RlbmVyIik7IGdjKCk7IH0sIGZhbHNlKTsKKworZ2MoKTsKK2No
YW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOwor
CitnYygpOworY2hhbm5lbC5wb3J0MS5jbG9zZSgpOworY2hhbm5lbC5wb3J0Mi5jbG9zZSgpOwor
Z2MoKTsKK2NoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CitnYygpOworPC9zY3JpcHQ+Cis8
L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2Mt
My5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hh
bm5lbC1nYy0zLmh0bWwJKHJldmlzaW9uIDM4NDkwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWdjLTMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1MiArMCww
IEBACi08Ym9keT4KLTxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBtZXNzYWdlcyBhcmUgZGVsaXZl
cmVkIGV2ZW4gaWYgYm90aCBwb3J0cyBhcmUgaW5hY2Nlc3NpYmxlIGZyb20gSlMgYW55IG1vcmUu
PC9wPgotPHA+U2hvdWxkIHNheSBQQVNTIHR3aWNlLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgot
PHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
LSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZG
IHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAg
IHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVz
c2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0MSgpCi17Ci0g
ICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgCi0gICAgY2hhbm5lbC5w
b3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsgbG9nKCJQQVNTOiBtZXNzYWdlIGRlbGl2
ZXJlZC4gUG9ydDogIiArIGV2dC50YXJnZXQpOyB0ZXN0MigpOyB9Ci0gICAgY2hhbm5lbC5wb3J0
MS5zdGFydCgpOwotICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOwotICAgIAot
ICAgIGNoYW5uZWwgPSAwOwotICAgIGdjKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkKLXsKLSAg
ICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICAKLSAgICBjaGFubmVsLnBv
cnQxLm9uY2xvc2UgPSBmdW5jdGlvbihldnQpIHsgbG9nKCJQQVNTOiBjbG9zZSBtZXNzYWdlIGRl
bGl2ZXJlZC4gUG9ydDogIiArIGV2dC50YXJnZXQpOyBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0KLSAgICBjaGFubmVs
LnBvcnQyLmNsb3NlKCk7Ci0gICAgCi0gICAgY2hhbm5lbCA9IDA7Ci0gICAgZ2MoKTsKLX0KLQot
dGVzdDEoKTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MtMy5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy0zLmh0bWwtZGlzYWJsZWQJ
KHJldmlzaW9uIDM4NDQyKQkoZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNo
YW5uZWwtZ2MtMy5odG1sOjM4NDQyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2Fn
ZS1jaGFubmVsLWdjLTMuaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUy
IEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBNZXNzYWdlUG9ydCBtZXNzYWdlcyBhcmUgZGVsaXZl
cmVkIGV2ZW4gaWYgYm90aCBwb3J0cyBhcmUgaW5hY2Nlc3NpYmxlIGZyb20gSlMgYW55IG1vcmUu
PC9wPgorPHA+U2hvdWxkIHNheSBQQVNTIHR3aWNlLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
KyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZG
IHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAg
IHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVz
c2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0MSgpCit7Cisg
ICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAgCisgICAgY2hhbm5lbC5w
b3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsgbG9nKCJQQVNTOiBtZXNzYWdlIGRlbGl2
ZXJlZC4gUG9ydDogIiArIGV2dC50YXJnZXQpOyB0ZXN0MigpOyB9CisgICAgY2hhbm5lbC5wb3J0
MS5zdGFydCgpOworICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOworICAgIAor
ICAgIGNoYW5uZWwgPSAwOworICAgIGdjKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAg
ICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKKyAgICAKKyAgICBjaGFubmVsLnBv
cnQxLm9uY2xvc2UgPSBmdW5jdGlvbihldnQpIHsgbG9nKCJQQVNTOiBjbG9zZSBtZXNzYWdlIGRl
bGl2ZXJlZC4gUG9ydDogIiArIGV2dC50YXJnZXQpOyBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7IH0KKyAgICBjaGFubmVs
LnBvcnQyLmNsb3NlKCk7CisgICAgCisgICAgY2hhbm5lbCA9IDA7CisgICAgZ2MoKTsKK30KKwor
dGVzdDEoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbAkocmV2aXNpb24gMzg0OTApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw0NiArMCwwIEBACi08Ym9keT4KLTxwPlRlc3Qgc29tZSBjYXNlcyBvZiBNZXNz
YWdlUG9ydCBnYXJiYWdlIGNvbGxlY3Rpb24uPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2Ny
aXB0PgotZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAg
ICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVx
dWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFy
IHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdl
KQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVz
c2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewot
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOwotY2hhbm5lbC5wb3J0MS5mb28gPSAiYmFyIjsKLQotZ2MoKTsKLWxvZygiU2hvdWxk
IGJlICdiYXInOiAiICsgY2hhbm5lbC5wb3J0MS5mb28pOwotCi1jaGFubmVsLnBvcnQxLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKCkgeyBsb2coIm9ubWVzc2FnZSIpOyB9Ci1jaGFubmVsLnBvcnQxLm9u
Y2xvc2UgPSBmdW5jdGlvbigpIHsgbG9nKCJvbmNsb3NlIik7IHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKSB9LCAwKSB9Ci1jaGFubmVsLnBvcnQxLmFkZEV2ZW50TGlzdGVuZXIoImNs
b3NlIiwgZnVuY3Rpb24oKSB7IGxvZygiY2xvc2UgbGlzdGVuZXIiKTsgfSwgZmFsc2UpOwotY2hh
bm5lbC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oKSB7IGxvZygi
bWVzc2FnZSBsaXN0ZW5lciIpOyB9LCBmYWxzZSk7Ci0KLWdjKCk7Ci1jaGFubmVsLnBvcnQxLnN0
YXJ0KCk7Ci1jaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKCJtc2ciKTsKLQotZ2MoKTsKLWNoYW5u
ZWwucG9ydDEuY2xvc2UoKTsKLWNoYW5uZWwucG9ydDIuY2xvc2UoKTsKLQotZ2MoKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFu
bmVsLWdjLmh0bWwtZGlzYWJsZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1jaGFubmVsLWdjLmh0bWwtZGlzYWJsZWQJKHJldmlzaW9uIDM4NDQyKQkoZnJv
bSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLWNoYW5uZWwtZ2MuaHRtbDozODQ0MikK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1nYy5odG1sLWRpc2Fi
bGVkCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKzxib2R5PgorPHA+VGVzdCBzb21l
IGNhc2VzIG9mIE1lc3NhZ2VQb3J0IGdhcmJhZ2UgY29sbGVjdGlvbi48L3A+Cis8cHJlIGlkPWxv
Zz48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdpbmRvdy5HQ0Nv
bnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xs
ZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0
KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30KKworZnVuY3Rp
b24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlu
bmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGNoYW5uZWwg
PSBuZXcgTWVzc2FnZUNoYW5uZWw7CitjaGFubmVsLnBvcnQxLmZvbyA9ICJiYXIiOworCitnYygp
OworbG9nKCJTaG91bGQgYmUgJ2Jhcic6ICIgKyBjaGFubmVsLnBvcnQxLmZvbyk7CisKK2NoYW5u
ZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7IGxvZygib25tZXNzYWdlIik7IH0KK2No
YW5uZWwucG9ydDEub25jbG9zZSA9IGZ1bmN0aW9uKCkgeyBsb2coIm9uY2xvc2UiKTsgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpIH0sIDApIH0KK2NoYW5uZWwucG9ydDEuYWRkRXZl
bnRMaXN0ZW5lcigiY2xvc2UiLCBmdW5jdGlvbigpIHsgbG9nKCJjbG9zZSBsaXN0ZW5lciIpOyB9
LCBmYWxzZSk7CitjaGFubmVsLnBvcnQxLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5j
dGlvbigpIHsgbG9nKCJtZXNzYWdlIGxpc3RlbmVyIik7IH0sIGZhbHNlKTsKKworZ2MoKTsKK2No
YW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoIm1zZyIpOwor
CitnYygpOworY2hhbm5lbC5wb3J0MS5jbG9zZSgpOworY2hhbm5lbC5wb3J0Mi5jbG9zZSgpOwor
CitnYygpOworPC9zY3JpcHQ+Cis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLWNoYW5uZWwtbGlzdGVuZXItY2lyY3VsYXItb3duZXJzaGlwLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFubmVsLWxpc3RlbmVy
LWNpcmN1bGFyLW93bmVyc2hpcC5odG1sCShyZXZpc2lvbiAzODQ5MCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMCArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgdGhh
dCBhIGxlYWsgaXMgbm90IGNyZWF0ZWQgYnkgYXNzaWduaW5nIGEgTWVzc2FnZVBvcnQgdG8gYSBw
cm9wZXJ0eSBvZiBpdHMgb3duIGxpc3RlbmVyLjwvcD4KLTxwPk9ubHkgd29ya3Mgd2l0aCBydW4t
d2Via2l0LXRlc3RzIC0tbGVha3MuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0Pgot
ZnVuY3Rpb24gZ2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICBy
ZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMg
YWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBu
ZXcgU3RyaW5nKCJhYmMiKTsKLSAgICB9Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi12YXIgY2hh
bm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLQotY2hhbm5lbC5wb3J0MS5vbmNsb3NlID0gZnVu
Y3Rpb24oKSB7fQotCi1jaGFubmVsLnBvcnQxLm9uY2xvc2UuZm9vID0gY2hhbm5lbDsKLWNoYW5u
ZWwucG9ydDEub25jbG9zZS5iYXIgPSBjaGFubmVsLnBvcnQxOwotY2hhbm5lbC5wb3J0MS5vbmNs
b3NlLmJheiA9IGNoYW5uZWwucG9ydDI7Ci0KLWNoYW5uZWwgPSBudWxsOwotZ2MoKTsKLTwvc2Ny
aXB0PgotPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1jaGFu
bmVsLWxpc3RlbmVyLWNpcmN1bGFyLW93bmVyc2hpcC5odG1sLWRpc2FibGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJj
dWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMzg0NDIpCShmcm9tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hhbm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25l
cnNoaXAuaHRtbDozODQ0MikKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtY2hh
bm5lbC1saXN0ZW5lci1jaXJjdWxhci1vd25lcnNoaXAuaHRtbC1kaXNhYmxlZAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMwIEBACis8Ym9keT4KKzxwPlRlc3QgdGhhdCBhIGxlYWsgaXMgbm90
IGNyZWF0ZWQgYnkgYXNzaWduaW5nIGEgTWVzc2FnZVBvcnQgdG8gYSBwcm9wZXJ0eSBvZiBpdHMg
b3duIGxpc3RlbmVyLjwvcD4KKzxwPk9ubHkgd29ya3Mgd2l0aCBydW4td2Via2l0LXRlc3RzIC0t
bGVha3MuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQor
eworICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9s
bGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAv
LyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2Nh
dGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMi
KTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCit2YXIgY2hhbm5lbCA9IG5ldyBNZXNz
YWdlQ2hhbm5lbDsKKworY2hhbm5lbC5wb3J0MS5vbmNsb3NlID0gZnVuY3Rpb24oKSB7fQorCitj
aGFubmVsLnBvcnQxLm9uY2xvc2UuZm9vID0gY2hhbm5lbDsKK2NoYW5uZWwucG9ydDEub25jbG9z
ZS5iYXIgPSBjaGFubmVsLnBvcnQxOworY2hhbm5lbC5wb3J0MS5vbmNsb3NlLmJheiA9IGNoYW5u
ZWwucG9ydDI7CisKK2NoYW5uZWwgPSBudWxsOworZ2MoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZv
ci1kZWxldGVkLWRvY3VtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwJ
KHJldmlzaW9uIDM4NDkwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0
LWNvbnN0cnVjdG9yLWZvci1kZWxldGVkLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTEsNTUgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgZGVzdHJveWluZyBhIGRvY3VtZW50
IGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIGV4ZWN1dGluZyBNZXNzYWdlQ2hhbm5lbCBjb25z
dHJ1Y3RvciBzYXZlZCBmcm9tIGl0cyBXaW5kb3cgb2JqZWN0LjwvcD4KLTxwcmUgaWQ9bG9nPjwv
cHJlPgotPHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJv
bGxlcikKLSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rp
b24gKEZGIHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0g
ICAgICAgIHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBs
b2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJI
VE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgY29uc3RydWN0b3I7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGNvbnN0cnVjdG9yID0gd2luZG93LmZyYW1lc1sw
XS5NZXNzYWdlQ2hhbm5lbDsKLQotICAgIHZhciBmcmFtZUVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIilbMF07Ci0gICAgZnJhbWVFbGVtZW50LnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQoZnJhbWVFbGVtZW50KTsKLSAgICBmcmFtZUVsZW1lbnQgPSBudWxsOwot
Ci0gICAgZ2MoKTsKLSAgICBzZXRUaW1lb3V0KHRlc3QyLCAxMCk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3QyKCkKLXsKLSAgICBnYygpOwotICAgIHRyeSB7Ci0gICAgICAgIG5ldyBjb25zdHJ1Y3RvcjsK
LSAgICB9IGNhdGNoIChleCkgewotICAgIH0KLQotICAgIGxvZygiRGlkbid0IGNyYXNoOiBTVUND
RVNTIik7Ci0KLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwvc2NyaXB0PgotPGlmcmFt
ZSBzcmM9InJlc291cmNlcy9tZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwiIG9ubG9hZD0idGVzdCgp
Ij48L2lmcmFtZT4KLTwvYm9keT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1jb25zdHJ1Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sLWRpc2FibGVkCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1jb25zdHJ1
Y3Rvci1mb3ItZGVsZXRlZC1kb2N1bWVudC5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAzODQ0MikJ
KGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWNvbnN0cnVjdG9yLWZv
ci1kZWxldGVkLWRvY3VtZW50Lmh0bWw6Mzg0NDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9tZXNzYWdlLXBvcnQtY29uc3RydWN0b3ItZm9yLWRlbGV0ZWQtZG9jdW1lbnQuaHRtbC1kaXNh
YmxlZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACis8Ym9keT4KKzxwPlRlc3QgdGhh
dCBkZXN0cm95aW5nIGEgZG9jdW1lbnQgZG9lc24ndCBjYXVzZSBhIGNyYXNoIHdoZW4gZXhlY3V0
aW5nIE1lc3NhZ2VDaGFubmVsIGNvbnN0cnVjdG9yIHNhdmVkIGZyb20gaXRzIFdpbmRvdyBvYmpl
Y3QuPC9wPgorPHByZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQorewor
ICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVy
LmNvbGxlY3QoKTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+
IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlv
bnMgYmVmb3JlIGEgY29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3ZhciBjb25zdHJ1Y3RvcjsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgY29uc3Ry
dWN0b3IgPSB3aW5kb3cuZnJhbWVzWzBdLk1lc3NhZ2VDaGFubmVsOworCisgICAgdmFyIGZyYW1l
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKKyAg
ICBmcmFtZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZUVsZW1lbnQpOworICAg
IGZyYW1lRWxlbWVudCA9IG51bGw7CisKKyAgICBnYygpOworICAgIHNldFRpbWVvdXQodGVzdDIs
IDEwKTsKK30KKworZnVuY3Rpb24gdGVzdDIoKQoreworICAgIGdjKCk7CisgICAgdHJ5IHsKKyAg
ICAgICAgbmV3IGNvbnN0cnVjdG9yOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgfQorCisgICAg
bG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJh
bWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgorPC9ib2R5PgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1k
b2N1bWVudC5odG1sCShyZXZpc2lvbiAzODQ5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NzEgKzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgZGVzdHJveWluZyBhIGRvY3VtZW50IGRv
ZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIHBvc3RpbmcgYSBtZXNzYWdlIHRvIGEgTWVzc2FnZVBv
cnQgaXQgb3duZWQuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24g
Z2MoKQotewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0ND
b250cm9sbGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkr
KykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsg
YWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5n
KCJhYmMiKTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsK
LX0KLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7Ci19Ci0KLXZhciBtYWluUG9ydDsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAg
dmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7Ci0gICAgd2luZG93LmZyYW1lc1swXS5w
b3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0MiwgIioiKTsKLSAgICBtYWluUG9ydCA9IGNo
YW5uZWwucG9ydDE7Ci0gICAgbWFpblBvcnQuc3RhcnQoKTsKLQotICAgIG1haW5Qb3J0LnBvc3RN
ZXNzYWdlKCJwaW5nIik7Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0gdGVzdDI7Ci19Ci0KLWZ1
bmN0aW9uIHRlc3QyKCkKLXsKLSAgICB2YXIgZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOwotICAgIGZyYW1lRWxlbWVudC5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKGZyYW1lRWxlbWVudCk7Ci0gICAgZnJhbWVFbGVtZW50ID0gbnVsbDsKLQot
ICAgIGdjKCk7Ci0gICAgc2V0VGltZW91dCh0ZXN0MywgMTApOwotfQotCi1mdW5jdGlvbiB0ZXN0
MygpCi17Ci0gICAgZ2MoKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAg
IG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBpZiAoZXZ0LmRh
dGEgPT0gInBvbmciKQotICAgICAgICAgICAgbG9nKCJVbmV4cGVjdGVkIHJlc3BvbnNlOiBGQUlM
Iik7Ci0gICAgfTsKLSAgICBzZXRUaW1lb3V0KHRlc3Q0LCAxMCk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3Q0KCkKLXsKLSAgICBtYWluUG9ydC5jbG9zZSgpOwotCi0gICAgbG9nKCJEaWRuJ3QgY3Jhc2g6
IFNVQ0NFU1MiKTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08
aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0
ZXN0KCkiPjwvaWZyYW1lPgotPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRlZC1kb2N1bWVudC5o
dG1sLWRpc2FibGVkCShyZXZpc2lvbiAzODQ0MikJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZG9jdW1lbnQuaHRtbDozODQ0MikKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWRvY3VtZW50Lmh0bWwtZGlzYWJs
ZWQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorPGJvZHk+Cis8cD5UZXN0IHRoYXQg
ZGVzdHJveWluZyBhIGRvY3VtZW50IGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3aGVuIHBvc3Rpbmcg
YSBtZXNzYWdlIHRvIGEgTWVzc2FnZVBvcnQgaXQgb3duZWQuPC9wPgorPHByZSBpZD1sb2c+PC9w
cmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5kb3cuR0NDb250cm9s
bGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlv
biAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKKyAg
ICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBtYWluUG9ydDsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0Miwg
IioiKTsKKyAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CisgICAgbWFpblBvcnQuc3RhcnQo
KTsKKworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQub25t
ZXNzYWdlID0gdGVzdDI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2YXIgZnJhbWVF
bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOworICAg
IGZyYW1lRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZyYW1lRWxlbWVudCk7CisgICAg
ZnJhbWVFbGVtZW50ID0gbnVsbDsKKworICAgIGdjKCk7CisgICAgc2V0VGltZW91dCh0ZXN0Mywg
MTApOworfQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgZ2MoKTsKKyAgICBtYWluUG9ydC5w
b3N0TWVzc2FnZSgicGluZyIpOworICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2
dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gInBvbmciKQorICAgICAgICAgICAgbG9nKCJV
bmV4cGVjdGVkIHJlc3BvbnNlOiBGQUlMIik7CisgICAgfTsKKyAgICBzZXRUaW1lb3V0KHRlc3Q0
LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3Q0KCkKK3sKKyAgICBtYWluUG9ydC5jbG9zZSgpOwor
CisgICAgbG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9y
dC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgorPC9ib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtZGVsZXRl
ZC1mcmFtZS5odG1sCShyZXZpc2lvbiAzODQ5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L21lc3NhZ2UtcG9ydC1kZWxldGVkLWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNzEg
KzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgZGVzdHJveWluZyBhIGZyYW1lIGRvZXNuJ3Qg
Y2F1c2UgYSBjcmFzaCB3aGVuIHBvc3RpbmcgYSBtZXNzYWdlIHRvIGEgTWVzc2FnZVBvcnQgaXQg
b3duZWQuPC9wPgotPHByZSBpZD1sb2c+PC9wcmU+Ci08c2NyaXB0PgotZnVuY3Rpb24gZ2MoKQot
ewotICAgIGlmICh3aW5kb3cuR0NDb250cm9sbGVyKQotICAgICAgICByZXR1cm4gR0NDb250cm9s
bGVyLmNvbGxlY3QoKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAv
LyA+IGZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2Nh
dGlvbnMgYmVmb3JlIGEgY29sbGVjdCkKLSAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMi
KTsKLSAgICB9Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Ci19Ci0KLXZhciBtYWluUG9ydDsKLXZhciBmcmFtZURvYzsKLQotZnVuY3Rpb24gdGVzdCgp
Ci17Ci0gICAgZnJhbWVEb2MgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50OwotICAgIHZhciBj
aGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1l
c3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9ydDIsICIqIik7Ci0gICAgbWFpblBvcnQgPSBjaGFubmVs
LnBvcnQxOwotICAgIG1haW5Qb3J0LnN0YXJ0KCk7Ci0KLSAgICBtYWluUG9ydC5wb3N0TWVzc2Fn
ZSgicGluZyIpOwotICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IHRlc3QyOwotfQotCi1mdW5jdGlv
biB0ZXN0MigpCi17Ci0gICAgdmFyIGZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJpZnJhbWUiKVswXTsKLSAgICBmcmFtZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChmcmFtZUVsZW1lbnQpOwotICAgIGZyYW1lRWxlbWVudCA9IG51bGw7Ci0KLSAgICBn
YygpOwotICAgIHNldFRpbWVvdXQodGVzdDMsIDEwKTsKLX0KLQotZnVuY3Rpb24gdGVzdDMoKQot
ewotICAgIGdjKCk7Ci0gICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKLSAgICBtYWlu
UG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKGV2dC5kYXRhID09
ICJwb25nIikKLSAgICAgICAgICAgIGxvZygiVW5leHBlY3RlZCByZXNwb25zZTogRkFJTCIpOwot
ICAgIH07Ci0gICAgc2V0VGltZW91dCh0ZXN0NCwgMTApOwotfQotCi1mdW5jdGlvbiB0ZXN0NCgp
Ci17Ci0gICAgbG9nKCJEaWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKLQotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2Ut
cG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgotPC9ib2R5PgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRt
bC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdl
LXBvcnQtZGVsZXRlZC1mcmFtZS5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAzODQ0MikJKGZyb20g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWRlbGV0ZWQtZnJhbWUuaHRtbDoz
ODQ0MikKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1kZWxldGVkLWZy
YW1lLmh0bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MSBAQAorPGJvZHk+
Cis8cD5UZXN0IHRoYXQgZGVzdHJveWluZyBhIGZyYW1lIGRvZXNuJ3QgY2F1c2UgYSBjcmFzaCB3
aGVuIHBvc3RpbmcgYSBtZXNzYWdlIHRvIGEgTWVzc2FnZVBvcnQgaXQgb3duZWQuPC9wPgorPHBy
ZSBpZD1sb2c+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gZ2MoKQoreworICAgIGlmICh3aW5k
b3cuR0NDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gR0NDb250cm9sbGVyLmNvbGxlY3QoKTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgeyAvLyA+IGZvcmNlIGdhcmJh
Z2UgY29sbGVjdGlvbiAoRkYgcmVxdWlyZXMgYWJvdXQgOUsgYWxsb2NhdGlvbnMgYmVmb3JlIGEg
Y29sbGVjdCkKKyAgICAgICAgdmFyIHMgPSBuZXcgU3RyaW5nKCJhYmMiKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJs
b2ciKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBt
YWluUG9ydDsKK3ZhciBmcmFtZURvYzsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZnJhbWVE
b2MgPSB3aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50OworICAgIHZhciBjaGFubmVsID0gbmV3IE1l
c3NhZ2VDaGFubmVsOworICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNo
YW5uZWwucG9ydDIsICIqIik7CisgICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOworICAgIG1h
aW5Qb3J0LnN0YXJ0KCk7CisKKyAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOworICAg
IG1haW5Qb3J0Lm9ubWVzc2FnZSA9IHRlc3QyOworfQorCitmdW5jdGlvbiB0ZXN0MigpCit7Cisg
ICAgdmFyIGZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJh
bWUiKVswXTsKKyAgICBmcmFtZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZUVs
ZW1lbnQpOworICAgIGZyYW1lRWxlbWVudCA9IG51bGw7CisKKyAgICBnYygpOworICAgIHNldFRp
bWVvdXQodGVzdDMsIDEwKTsKK30KKworZnVuY3Rpb24gdGVzdDMoKQoreworICAgIGdjKCk7Cisg
ICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoInBpbmciKTsKKyAgICBtYWluUG9ydC5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIikKKyAgICAg
ICAgICAgIGxvZygiVW5leHBlY3RlZCByZXNwb25zZTogRkFJTCIpOworICAgIH07CisgICAgc2V0
VGltZW91dCh0ZXN0NCwgMTApOworfQorCitmdW5jdGlvbiB0ZXN0NCgpCit7CisgICAgbG9nKCJE
aWRuJ3QgY3Jhc2g6IFNVQ0NFU1MiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwor
PC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRt
bCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3Vt
ZW50Lmh0bWwJKHJldmlzaW9uIDM4NDkwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVz
c2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNzIg
KzAsMCBAQAotPGJvZHk+Ci08cD5UZXN0IHRoYXQgbWVzc2FnaW5nIGFuIGluYWN0aXZlIGZyYW1l
bGVzcyBkb2N1bWVudCB3b3JrcyBhcyBleHBlY3RlZC48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4K
LTxzY3JpcHQ+Ci1mdW5jdGlvbiBnYygpCi17Ci0gICAgaWYgKHdpbmRvdy5HQ0NvbnRyb2xsZXIp
Ci0gICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwotCi0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIChG
RiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUgYSBjb2xsZWN0KQotICAgICAg
ICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOwotICAgIH0KLX0KLQotZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCAr
PSBtZXNzYWdlICsgIjxicj4iOwotfQotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotdmFyIG90aGVyRG9jdW1lbnQ7Ci12
YXIgbWFpblBvcnQ7Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIG90aGVyRG9jdW1lbnQgPSB3
aW5kb3cuZnJhbWVzWzBdLmRvY3VtZW50OwotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsOwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwu
cG9ydDIsICIqIik7Ci0gICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwotICAgIG1haW5Qb3J0
LnN0YXJ0KCk7Ci0KLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAgIG1haW5Q
b3J0Lm9ubWVzc2FnZSA9IHRlc3QyOwotfQotCi1mdW5jdGlvbiB0ZXN0MigpCi17Ci0gICAgdmFy
IGZyYW1lRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVsw
XTsKLSAgICBmcmFtZUVsZW1lbnQuc3JjID0gInJlc291cmNlcy93aW5kb3ctb3BlbmVkLmh0bWwi
OwotICAgIGZyYW1lRWxlbWVudC5vbmxvYWQgPSB0ZXN0MzsKLSAgICBnYygpOwotfQotCi1mdW5j
dGlvbiB0ZXN0MygpCi17Ci0gICAgZ2MoKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgiYWxl
cnQgRkFJTDogdGhlIGRvY3VtZW50IGlzIGluYWN0aXZlLiIpOwotICAgIG1haW5Qb3J0LnBvc3RN
ZXNzYWdlKCJmcmVlemUiKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwotICAg
IG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgewotICAgICAgICBsb2coIlVuZXhw
ZWN0ZWQgcmVzcG9uc2U6IEZBSUwiKTsKLSAgICB9OwotICAgIHNldFRpbWVvdXQodGVzdDQsIDEw
KTsKLX0KLQotZnVuY3Rpb24gdGVzdDQoKQotewotICAgIG1haW5Qb3J0LmNsb3NlKCk7Ci0KLSAg
ICBsb2coIkRpZG4ndCBjcmFzaCwgZnJlZXplIG9yIHJlc3BvbmQ6IFNVQ0NFU1MiKTsKLQotICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIHNyYz0icmVzb3Vy
Y2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiIHdpZHRoPTAgaGVp
Z2h0PTAgZnJhbWVib3JkZXI9MD48L2lmcmFtZT4KLTwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFjdGl2ZS1kb2N1bWVudC5odG1sLWRpc2FibGVk
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC1pbmFj
dGl2ZS1kb2N1bWVudC5odG1sLWRpc2FibGVkCShyZXZpc2lvbiAzODQ0MikJKGZyb20gTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LWluYWN0aXZlLWRvY3VtZW50Lmh0bWw6Mzg0
NDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtaW5hY3RpdmUtZG9j
dW1lbnQuaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACis8Ym9k
eT4KKzxwPlRlc3QgdGhhdCBtZXNzYWdpbmcgYW4gaW5hY3RpdmUgZnJhbWVsZXNzIGRvY3VtZW50
IHdvcmtzIGFzIGV4cGVjdGVkLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0
dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZGIHJlcXVpcmVzIGFi
b3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAgIHZhciBzID0gbmV3
IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAi
PGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgb3RoZXJEb2N1bWVudDsKK3ZhciBtYWluUG9ydDsK
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgb3RoZXJEb2N1bWVudCA9IHdpbmRvdy5mcmFtZXNb
MF0uZG9jdW1lbnQ7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CisgICAg
d2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0MiwgIioiKTsK
KyAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CisgICAgbWFpblBvcnQuc3RhcnQoKTsKKwor
ICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQub25tZXNzYWdl
ID0gdGVzdDI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2YXIgZnJhbWVFbGVtZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpWzBdOworICAgIGZyYW1l
RWxlbWVudC5zcmMgPSAicmVzb3VyY2VzL3dpbmRvdy1vcGVuZWQuaHRtbCI7CisgICAgZnJhbWVF
bGVtZW50Lm9ubG9hZCA9IHRlc3QzOworICAgIGdjKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkK
K3sKKyAgICBnYygpOworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJhbGVydCBGQUlMOiB0aGUg
ZG9jdW1lbnQgaXMgaW5hY3RpdmUuIik7CisgICAgbWFpblBvcnQucG9zdE1lc3NhZ2UoImZyZWV6
ZSIpOworICAgIG1haW5Qb3J0LnBvc3RNZXNzYWdlKCJwaW5nIik7CisgICAgbWFpblBvcnQub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgICAgIGxvZygiVW5leHBlY3RlZCByZXNwb25z
ZTogRkFJTCIpOworICAgIH07CisgICAgc2V0VGltZW91dCh0ZXN0NCwgMTApOworfQorCitmdW5j
dGlvbiB0ZXN0NCgpCit7CisgICAgbWFpblBvcnQuY2xvc2UoKTsKKworICAgIGxvZygiRGlkbid0
IGNyYXNoLCBmcmVlemUgb3IgcmVzcG9uZDogU1VDQ0VTUyIpOworCisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvbWVzc2FnZS1w
b3J0LWlmcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSIgd2lkdGg9MCBoZWlnaHQ9MCBmcmFtZWJv
cmRlcj0wPjwvaWZyYW1lPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
bWVzc2FnZS1wb3J0LW5vLXdyYXBwZXIuaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtbm8td3JhcHBlci5odG1sLWRpc2FibGVk
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW5v
LXdyYXBwZXIuaHRtbC1kaXNhYmxlZAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorPGJv
ZHk+Cis8cD5UZXN0IHRoYXQgZGVsaXZlcmluZyBhIG1lc3NhZ2UgdG8gYSBwb3J0IHRoYXQgd2Fz
IG5ldmVyIHJlZmVyZW5jZWQgZnJvbSBKUyBkb2Vzbid0IGNhdXNlIGEgY3Jhc2guPC9wPgorPHBy
ZSBpZD1sb2c+PC9wcmU+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBnYygpCit7CisgICAgaWYgKHdp
bmRvdy5HQ0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBHQ0NvbnRyb2xsZXIuY29sbGVjdCgp
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7IC8vID4gZm9yY2UgZ2Fy
YmFnZSBjb2xsZWN0aW9uIChGRiByZXF1aXJlcyBhYm91dCA5SyBhbGxvY2F0aW9ucyBiZWZvcmUg
YSBjb2xsZWN0KQorICAgICAgICB2YXIgcyA9IG5ldyBTdHJpbmcoImFiYyIpOworICAgIH0KK30K
KworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImxvZyIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFy
IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7CitjaGFubmVsLnBvcnQxLnBvc3RNZXNzYWdl
KCJtc2ciKTsKK2NoYW5uZWwucG9ydDEuc3RhcnQoKTsKK2NoYW5uZWwgPSAwOworZ2MoKTsKKwor
c2V0VGltZW91dCgibG9nKCdQQVNTJyk7IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsIDEwMCk7CisKKzwvc2NyaXB0Pgor
PC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0LW9uY2xv
c2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBv
cnQtb25jbG9zZS5odG1sCShyZXZpc2lvbiAzODQ5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL21lc3NhZ2UtcG9ydC1vbmNsb3NlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAxICsw
LDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IGNsb3NlIGV2ZW50IGhhbmRsZXIgaXMgaW52b2tl
ZCB3aGVuIGEgTWVzc2FnZVBvcnQgaXMgY2xvc2VkLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgot
PHNjcmlwdD4KLWZ1bmN0aW9uIGdjKCkKLXsKLSAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
LSAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7Ci0KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZG
IHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCi0gICAgICAg
IHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBsb2cobWVz
c2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAg
ICAvLyBTaW5nbGUgZnJhbWUuCi0gICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
Ci0gICAgdmFyIGNsb3NlQ291bnQgPSAwOwotICAgIGZ1bmN0aW9uIG9uY2xvc2UoKQotICAgIHsK
LSAgICAgICAgKytjbG9zZUNvdW50OwotICAgICAgICBpZiAoY2xvc2VDb3VudCA9PSA0KQotICAg
ICAgICAgICAgdGVzdDIoKTsKLSAgICB9Ci0KLSAgICBjaGFubmVsLnBvcnQxLm9uY2xvc2UgPSBv
bmNsb3NlOwotICAgIGNoYW5uZWwucG9ydDIub25jbG9zZSA9IG9uY2xvc2U7Ci0gICAgY2hhbm5l
bC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKCJjbG9zZSIsIG9uY2xvc2UsIGZhbHNlKTsKLSAgICBj
aGFubmVsLnBvcnQyLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwgb25jbG9zZSwgZmFsc2UpOwot
ICAgIAotICAgIGdjKCk7Ci0gICAgY2hhbm5lbC5wb3J0MS5zdGFydCgpOwotICAgIGNoYW5uZWwu
cG9ydDIuc3RhcnQoKTsKLSAgICBjaGFubmVsLnBvcnQxLmNsb3NlKCk7Ci19Ci0KLWZ1bmN0aW9u
IHRlc3QyKCkKLXsKLSAgICAvLyBDcm9zcy1mcmFtZS4KLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKLSAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBj
aGFubmVsLnBvcnQyLCAiKiIpOwotCi0gICAgdmFyIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsK
LSAgICBtYWluUG9ydC5zdGFydCgpOwotCi0gICAgdmFyIGNsb3NlQ291bnQgPSAwOwotICAgIGZ1
bmN0aW9uIG9uY2xvc2UoKQotICAgIHsKLSAgICAgICAgKytjbG9zZUNvdW50OwotICAgICAgICBp
ZiAoY2xvc2VDb3VudCA9PSAyKQotICAgICAgICAgICAgdGVzdDMoKTsKLSAgICB9Ci0KLSAgICBt
YWluUG9ydC5wb3N0TWVzc2FnZSgiY2xvc2VQb3J0Iik7Ci0gICAgbWFpblBvcnQub25jbG9zZSA9
IG9uY2xvc2U7Ci0gICAgbWFpblBvcnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xvc2UiLCBvbmNsb3Nl
LCBmYWxzZSk7Ci0gICAgZ2MoKTsKLX0KLQotZnVuY3Rpb24gdGVzdDMoKQotewotICAgIC8vIERv
Y3VtZW50IGRlc3Ryb3llZC4KLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
LSAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAi
KiIpOwotCi0gICAgdmFyIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKLSAgICBtYWluUG9ydC5z
dGFydCgpOwotCi0gICAgdmFyIGNsb3NlQ291bnQgPSAwOwotICAgIGZ1bmN0aW9uIG9uY2xvc2Uo
KQotICAgIHsKLSAgICAgICAgKytjbG9zZUNvdW50OwotICAgICAgICBsb2coIkZBSUw6IHVuZXhw
ZWN0ZWQgY2xvc2UgZXZlbnQgZnJvbSBkb2N1bWVudCBkZXN0cnVjdGlvbi4iKTsKLSAgICB9Ci0K
LSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgiY2xvc2VGcmFtZSIpOwotICAgIG1haW5Qb3J0Lm9u
Y2xvc2UgPSBvbmNsb3NlOwotICAgIG1haW5Qb3J0LmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwg
b25jbG9zZSwgZmFsc2UpOwotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlm
IChjbG9zZUNvdW50ID09IDApCi0gICAgICAgICAgICBsb2coIlBBU1MiKTsKLSAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKLSAgICB9LCA1MCk7Ci0KLSAgICBnYygpOwotfQotPC9zY3Jp
cHQ+Ci08aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25s
b2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgotPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0LW9uY2xvc2UuaHRtbC1kaXNhYmxlZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9tZXNzYWdlLXBvcnQtb25jbG9zZS5odG1sLWRpc2FibGVk
CShyZXZpc2lvbiAzODQ0MikJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvbWVzc2FnZS1w
b3J0LW9uY2xvc2UuaHRtbDozODQ0MikKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3Nh
Z2UtcG9ydC1vbmNsb3NlLmh0bWwtZGlzYWJsZWQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MDEgQEAKKzxib2R5PgorPHA+VGVzdCB0aGF0IGNsb3NlIGV2ZW50IGhhbmRsZXIgaXMgaW52b2tl
ZCB3aGVuIGEgTWVzc2FnZVBvcnQgaXMgY2xvc2VkLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgor
PHNjcmlwdD4KK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikK
KyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDAwOyBpKyspIHsgLy8gPiBmb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gKEZG
IHJlcXVpcmVzIGFib3V0IDlLIGFsbG9jYXRpb25zIGJlZm9yZSBhIGNvbGxlY3QpCisgICAgICAg
IHZhciBzID0gbmV3IFN0cmluZygiYWJjIik7CisgICAgfQorfQorCitmdW5jdGlvbiBsb2cobWVz
c2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9
IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICAvLyBTaW5nbGUgZnJhbWUuCisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
CisgICAgdmFyIGNsb3NlQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIG9uY2xvc2UoKQorICAgIHsK
KyAgICAgICAgKytjbG9zZUNvdW50OworICAgICAgICBpZiAoY2xvc2VDb3VudCA9PSA0KQorICAg
ICAgICAgICAgdGVzdDIoKTsKKyAgICB9CisKKyAgICBjaGFubmVsLnBvcnQxLm9uY2xvc2UgPSBv
bmNsb3NlOworICAgIGNoYW5uZWwucG9ydDIub25jbG9zZSA9IG9uY2xvc2U7CisgICAgY2hhbm5l
bC5wb3J0MS5hZGRFdmVudExpc3RlbmVyKCJjbG9zZSIsIG9uY2xvc2UsIGZhbHNlKTsKKyAgICBj
aGFubmVsLnBvcnQyLmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwgb25jbG9zZSwgZmFsc2UpOwor
ICAgIAorICAgIGdjKCk7CisgICAgY2hhbm5lbC5wb3J0MS5zdGFydCgpOworICAgIGNoYW5uZWwu
cG9ydDIuc3RhcnQoKTsKKyAgICBjaGFubmVsLnBvcnQxLmNsb3NlKCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QyKCkKK3sKKyAgICAvLyBDcm9zcy1mcmFtZS4KKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBN
ZXNzYWdlQ2hhbm5lbDsKKyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBj
aGFubmVsLnBvcnQyLCAiKiIpOworCisgICAgdmFyIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsK
KyAgICBtYWluUG9ydC5zdGFydCgpOworCisgICAgdmFyIGNsb3NlQ291bnQgPSAwOworICAgIGZ1
bmN0aW9uIG9uY2xvc2UoKQorICAgIHsKKyAgICAgICAgKytjbG9zZUNvdW50OworICAgICAgICBp
ZiAoY2xvc2VDb3VudCA9PSAyKQorICAgICAgICAgICAgdGVzdDMoKTsKKyAgICB9CisKKyAgICBt
YWluUG9ydC5wb3N0TWVzc2FnZSgiY2xvc2VQb3J0Iik7CisgICAgbWFpblBvcnQub25jbG9zZSA9
IG9uY2xvc2U7CisgICAgbWFpblBvcnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xvc2UiLCBvbmNsb3Nl
LCBmYWxzZSk7CisgICAgZ2MoKTsKK30KKworZnVuY3Rpb24gdGVzdDMoKQoreworICAgIC8vIERv
Y3VtZW50IGRlc3Ryb3llZC4KKyAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsK
KyAgICB3aW5kb3cuZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJtc2ciLCBjaGFubmVsLnBvcnQyLCAi
KiIpOworCisgICAgdmFyIG1haW5Qb3J0ID0gY2hhbm5lbC5wb3J0MTsKKyAgICBtYWluUG9ydC5z
dGFydCgpOworCisgICAgdmFyIGNsb3NlQ291bnQgPSAwOworICAgIGZ1bmN0aW9uIG9uY2xvc2Uo
KQorICAgIHsKKyAgICAgICAgKytjbG9zZUNvdW50OworICAgICAgICBsb2coIkZBSUw6IHVuZXhw
ZWN0ZWQgY2xvc2UgZXZlbnQgZnJvbSBkb2N1bWVudCBkZXN0cnVjdGlvbi4iKTsKKyAgICB9CisK
KyAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgiY2xvc2VGcmFtZSIpOworICAgIG1haW5Qb3J0Lm9u
Y2xvc2UgPSBvbmNsb3NlOworICAgIG1haW5Qb3J0LmFkZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwg
b25jbG9zZSwgZmFsc2UpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGlm
IChjbG9zZUNvdW50ID09IDApCisgICAgICAgICAgICBsb2coIlBBU1MiKTsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCA1MCk7CisKKyAgICBnYygpOworfQorPC9zY3Jp
cHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3NhZ2UtcG9ydC1pZnJhbWUuaHRtbCIgb25s
b2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwJKHJldmlzaW9uIDM4NDkwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvbWVzc2FnZS1wb3J0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNzcgKzAs
MCBAQAotPGJvZHk+Ci08cD5UZXN0IGNyb3NzLWZyYW1lIE1lc3NhZ2VQb3J0IGNvbW11bmljYXRp
b24uPC9wPgotPHA+U2hvdWxkIGJlIGEgc2VyaWVzIG9mIFNVQ0NFU1MgbWVzc2FnZXMsIGZvbGxv
d2VkIHdpdGggRE9ORS48L3A+Ci08cHJlIGlkPWxvZz48L3ByZT4KLTxzY3JpcHQ+Ci1mdW5jdGlv
biBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5u
ZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Ci19Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi12YXIgbWFpblBvcnQ7
Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFu
bmVsOwotICAgIHdpbmRvdy5mcmFtZXNbMF0ucG9zdE1lc3NhZ2UoIm1zZyIsIGNoYW5uZWwucG9y
dDIsICIqIik7Ci0gICAgbWFpblBvcnQgPSBjaGFubmVsLnBvcnQxOwotICAgIG1haW5Qb3J0LnBv
c3RNZXNzYWdlKCJwaW5nIik7Ci0gICAgbWFpblBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0
KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSA9PSAicG9uZyIgJiYgZXZ0Lm9yaWdpbiA9PSAiIikK
LSAgICAgICAgICAgIGxvZygiU2ltcGxlIGV4Y2hhbmdlOiBTVUNDRVNTIik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGxvZygiU2ltcGxlIGV4Y2hhbmdlOiBGQUlMLiBHb3QgbWVzc2FnZSAn
IiArIGV2dC5kYXRhICsgIicgZnJvbSAnIiArIGV2dC5vcmlnaW4gKyAiJy4iKTsKLSAgICAgICAg
dGVzdDIoKTsKLSAgICB9OwotICAgIG1haW5Qb3J0LnN0YXJ0KCk7Ci19Ci0KLWZ1bmN0aW9uIHRl
c3QyKCkKLXsKLSAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbDsKLSAgICBtYWlu
UG9ydC5wb3N0TWVzc2FnZSgibmV3UG9ydCIsIGNoYW5uZWwucG9ydDIpOwotICAgIGNoYW5uZWwu
cG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7Ci0gICAgICAgIGlmIChldnQuZGF0YSA9
PSAieW8iICYmIGV2dC5vcmlnaW4gPT0gIiIpCi0gICAgICAgICAgICBsb2coIlBvc3RlZCBwb3J0
OiBTVUNDRVNTIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiUG9zdGVkIHBvcnQ6
IEZBSUwuIEdvdCBtZXNzYWdlICciICsgZXZ0LmRhdGEgKyAiJyBmcm9tICciICsgZXZ0Lm9yaWdp
biArICInLiIpOwotICAgICAgICB0ZXN0MygpOwotICAgIH07Ci0gICAgY2hhbm5lbC5wb3J0MS5z
dGFydCgpOwotfQotCi1mdW5jdGlvbiB0ZXN0MygpCi17Ci0gICAgdmFyIHBvcnQgPSBtYWluUG9y
dC5zdGFydENvbnZlcnNhdGlvbigibmV3Q29udmVyc2F0aW9uIik7Ci0gICAgcG9ydC5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldnQpIHsKLSAgICAgICAgaWYgKGV2dC5kYXRhID09ICJoZXkiICYmIGV2
dC5vcmlnaW4gPT0gIiIpCi0gICAgICAgICAgICBsb2coIkNvbnZlcnNhdGlvbjogU1VDQ0VTUyIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2coIkNvbnZlcnNhdGlvbjogRkFJTC4gR290
IG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIGZyb20gJyIgKyBldnQub3JpZ2luICsgIicuIik7
Ci0gICAgICAgIHRlc3Q0KCk7Ci0gICAgfTsKLSAgICBwb3J0LnN0YXJ0KCk7Ci19Ci0KLWZ1bmN0
aW9uIHRlc3Q0KCkKLXsKLSAgICBsb2coIkEgcG9ydCBpcyBhY3RpdmU6ICIgKyAobWFpblBvcnQu
YWN0aXZlID8gIlNVQ0NFU1MiIDogIkZBSUwiKSk7Ci0KLSAgICBtYWluUG9ydC5jbG9zZSgpOwot
Ci0gICAgbG9nKCJBIGNsb3NlZCBwb3J0IGlzIGluYWN0aXZlOiAiICsgKG1haW5Qb3J0LmFjdGl2
ZSA/ICJGQUlMIiA6ICJTVUNDRVNTIikpOwotCi0gICAgbG9nKCJET05FIik7Ci0KLSAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5ub3RpZnlEb25lKCk7Ci19Ci0KLTwvc2NyaXB0PgotPGlmcmFtZSBzcmM9InJlc291cmNlcy9t
ZXNzYWdlLXBvcnQtaWZyYW1lLmh0bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KLTwvYm9k
eT4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5odG1sLWRpc2Fi
bGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL21lc3NhZ2UtcG9ydC5o
dG1sLWRpc2FibGVkCShyZXZpc2lvbiAzODQ0MikJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvbWVzc2FnZS1wb3J0Lmh0bWw6Mzg0NDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9t
ZXNzYWdlLXBvcnQuaHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBA
Cis8Ym9keT4KKzxwPlRlc3QgY3Jvc3MtZnJhbWUgTWVzc2FnZVBvcnQgY29tbXVuaWNhdGlvbi48
L3A+Cis8cD5TaG91bGQgYmUgYSBzZXJpZXMgb2YgU1VDQ0VTUyBtZXNzYWdlcywgZm9sbG93ZWQg
d2l0aCBET05FLjwvcD4KKzxwcmUgaWQ9bG9nPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhU
TUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBtYWluUG9ydDsKKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWw7
CisgICAgd2luZG93LmZyYW1lc1swXS5wb3N0TWVzc2FnZSgibXNnIiwgY2hhbm5lbC5wb3J0Miwg
IioiKTsKKyAgICBtYWluUG9ydCA9IGNoYW5uZWwucG9ydDE7CisgICAgbWFpblBvcnQucG9zdE1l
c3NhZ2UoInBpbmciKTsKKyAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsK
KyAgICAgICAgaWYgKGV2dC5kYXRhID09ICJwb25nIiAmJiBldnQub3JpZ2luID09ICIiKQorICAg
ICAgICAgICAgbG9nKCJTaW1wbGUgZXhjaGFuZ2U6IFNVQ0NFU1MiKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbG9nKCJTaW1wbGUgZXhjaGFuZ2U6IEZBSUwuIEdvdCBtZXNzYWdlICciICsg
ZXZ0LmRhdGEgKyAiJyBmcm9tICciICsgZXZ0Lm9yaWdpbiArICInLiIpOworICAgICAgICB0ZXN0
MigpOworICAgIH07CisgICAgbWFpblBvcnQuc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdDIo
KQoreworICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsOworICAgIG1haW5Qb3J0
LnBvc3RNZXNzYWdlKCJuZXdQb3J0IiwgY2hhbm5lbC5wb3J0Mik7CisgICAgY2hhbm5lbC5wb3J0
MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgaWYgKGV2dC5kYXRhID09ICJ5
byIgJiYgZXZ0Lm9yaWdpbiA9PSAiIikKKyAgICAgICAgICAgIGxvZygiUG9zdGVkIHBvcnQ6IFNV
Q0NFU1MiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9nKCJQb3N0ZWQgcG9ydDogRkFJ
TC4gR290IG1lc3NhZ2UgJyIgKyBldnQuZGF0YSArICInIGZyb20gJyIgKyBldnQub3JpZ2luICsg
IicuIik7CisgICAgICAgIHRlc3QzKCk7CisgICAgfTsKKyAgICBjaGFubmVsLnBvcnQxLnN0YXJ0
KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QzKCkKK3sKKyAgICB2YXIgcG9ydCA9IG1haW5Qb3J0LnN0
YXJ0Q29udmVyc2F0aW9uKCJuZXdDb252ZXJzYXRpb24iKTsKKyAgICBwb3J0Lm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICBpZiAoZXZ0LmRhdGEgPT0gImhleSIgJiYgZXZ0Lm9y
aWdpbiA9PSAiIikKKyAgICAgICAgICAgIGxvZygiQ29udmVyc2F0aW9uOiBTVUNDRVNTIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvZygiQ29udmVyc2F0aW9uOiBGQUlMLiBHb3QgbWVz
c2FnZSAnIiArIGV2dC5kYXRhICsgIicgZnJvbSAnIiArIGV2dC5vcmlnaW4gKyAiJy4iKTsKKyAg
ICAgICAgdGVzdDQoKTsKKyAgICB9OworICAgIHBvcnQuc3RhcnQoKTsKK30KKworZnVuY3Rpb24g
dGVzdDQoKQoreworICAgIGxvZygiQSBwb3J0IGlzIGFjdGl2ZTogIiArIChtYWluUG9ydC5hY3Rp
dmUgPyAiU1VDQ0VTUyIgOiAiRkFJTCIpKTsKKworICAgIG1haW5Qb3J0LmNsb3NlKCk7CisKKyAg
ICBsb2coIkEgY2xvc2VkIHBvcnQgaXMgaW5hY3RpdmU6ICIgKyAobWFpblBvcnQuYWN0aXZlID8g
IkZBSUwiIDogIlNVQ0NFU1MiKSk7CisKKyAgICBsb2coIkRPTkUiKTsKKworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL21lc3Nh
Z2UtcG9ydC1pZnJhbWUuaHRtbCIgb25sb2FkPSJ0ZXN0KCkiPjwvaWZyYW1lPgorPC9ib2R5PgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9nbG9iYWwtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2dsb2JhbC1jb25zdHJ1Y3RvcnMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzODQ5MCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZ2xv
YmFsLWNvbnN0cnVjdG9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw5ICsx
MDUsNyBAQCBQQVNTIEltYWdlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgSW1hZ2VDCiBQQVNTIEtl
eWJvYXJkRXZlbnQudG9TdHJpbmcoKSBpcyAnW29iamVjdCBLZXlib2FyZEV2ZW50Q29uc3RydWN0
b3JdJwogUEFTUyBNZWRpYUVycm9yLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWVkaWFFcnJvckNv
bnN0cnVjdG9yXScKIFBBU1MgTWVkaWFMaXN0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWVkaWFM
aXN0Q29uc3RydWN0b3JdJwotUEFTUyBNZXNzYWdlQ2hhbm5lbC50b1N0cmluZygpIGlzICdbb2Jq
ZWN0IE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3JdJwogUEFTUyBNZXNzYWdlRXZlbnQudG9TdHJp
bmcoKSBpcyAnW29iamVjdCBNZXNzYWdlRXZlbnRDb25zdHJ1Y3Rvcl0nCi1QQVNTIE1lc3NhZ2VQ
b3J0LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWVzc2FnZVBvcnRDb25zdHJ1Y3Rvcl0nCiBQQVNT
IE1pbWVUeXBlLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTWltZVR5cGVDb25zdHJ1Y3Rvcl0nCiBQ
QVNTIE1pbWVUeXBlQXJyYXkudG9TdHJpbmcoKSBpcyAnW29iamVjdCBNaW1lVHlwZUFycmF5Q29u
c3RydWN0b3JdJwogUEFTUyBNb3VzZUV2ZW50LnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgTW91c2VF
dmVudENvbnN0cnVjdG9yXScKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
TWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXIt
Y29udGV4dC5odG1sCShyZXZpc2lvbiAzODQ5MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ2ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCB0aGF0IEpTIGNvZGUgY2Fu
bm90IGJlIHBsYW50ZWQgaW50byBhbiB1bnN1c3BlY3Rpbmcgc3ViZnJhbWUgdmlhIE1lc3NhZ2VQ
b3J0IGFuZCBuYXZpZ2F0aW9uLjwvcD4KLTxwcmUgaWQ9bG9nPjwvcHJlPgotPHNjcmlwdD4KLWZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ci
KS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKLX0KLQotaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXZhciBjbG9z
dXJlOwotdmFyIG1haW5Qb3J0OwotdmFyIGZhaWxlZDsKLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0g
ICAgZmFpbGVkID0gZmFsc2U7Ci0gICAgY2xvc3VyZSA9IHdpbmRvdy5mcmFtZXNbMF0uY3JlYXRl
Q2xvc3VyZSgpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpZnJhbWUiKVsw
XS5vbmxvYWQgPSB0ZXN0MjsKLSAgICB3aW5kb3cuZnJhbWVzWzBdLmxvY2F0aW9uID0gInJlc291
cmNlcy9iYW5raW5nLXNpdGUuaHRtbCI7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QyKCkKLXsKLSAgICBt
YWluUG9ydCA9IGNsb3N1cmUoKTsKLSAgICBtYWluUG9ydC5wb3N0TWVzc2FnZSgicGluZyIpOwot
ICAgIG1haW5Qb3J0Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeyBpZiAoL3NlbnNpdGl2ZS8u
dGVzdChldnQuZGF0YSkpIGZhaWxlZCA9IHRydWU7IH0KLSAgICBtYWluUG9ydC5zdGFydCgpOwot
ICAgIHNldFRpbWVvdXQodGVzdDMsIDEwMCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QzKCkKLXsKLSAg
ICBsb2coZmFpbGVkID8gIkZBSUwiIDogIlBBU1MiKTsKLQotICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIHNyYz0icmVzb3VyY2VzL2F0dGFja2VyLWZyYW1l
Lmh0bWwiIG9ubG9hZD0idGVzdCgpIj48L2lmcmFtZT4KLTwvYm9keT4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4
dC5odG1sLWRpc2FibGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvTWVzc2FnZVBvcnQvZXZlbnQtbGlzdGVuZXItY29udGV4dC5odG1sLWRpc2FibGVkCShy
ZXZpc2lvbiAzODQ0MikJKGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9NZXNz
YWdlUG9ydC9ldmVudC1saXN0ZW5lci1jb250ZXh0Lmh0bWw6Mzg0NDIpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L01lc3NhZ2VQb3J0L2V2ZW50LWxpc3RlbmVyLWNvbnRleHQu
aHRtbC1kaXNhYmxlZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACis8Ym9keT4KKzxw
PlRlc3QgdGhhdCBKUyBjb2RlIGNhbm5vdCBiZSBwbGFudGVkIGludG8gYW4gdW5zdXNwZWN0aW5n
IHN1YmZyYW1lIHZpYSBNZXNzYWdlUG9ydCBhbmQgbmF2aWdhdGlvbi48L3A+Cis8cHJlIGlkPWxv
Zz48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorCit2YXIgY2xvc3VyZTsKK3ZhciBtYWluUG9ydDsKK3ZhciBmYWlsZWQ7CisK
K2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZhaWxlZCA9IGZhbHNlOworICAgIGNsb3N1cmUgPSB3
aW5kb3cuZnJhbWVzWzBdLmNyZWF0ZUNsb3N1cmUoKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiaWZyYW1lIilbMF0ub25sb2FkID0gdGVzdDI7CisgICAgd2luZG93LmZyYW1l
c1swXS5sb2NhdGlvbiA9ICJyZXNvdXJjZXMvYmFua2luZy1zaXRlLmh0bWwiOworfQorCitmdW5j
dGlvbiB0ZXN0MigpCit7CisgICAgbWFpblBvcnQgPSBjbG9zdXJlKCk7CisgICAgbWFpblBvcnQu
cG9zdE1lc3NhZ2UoInBpbmciKTsKKyAgICBtYWluUG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihl
dnQpIHsgaWYgKC9zZW5zaXRpdmUvLnRlc3QoZXZ0LmRhdGEpKSBmYWlsZWQgPSB0cnVlOyB9Cisg
ICAgbWFpblBvcnQuc3RhcnQoKTsKKyAgICBzZXRUaW1lb3V0KHRlc3QzLCAxMDApOworfQorCitm
dW5jdGlvbiB0ZXN0MygpCit7CisgICAgbG9nKGZhaWxlZCA/ICJGQUlMIiA6ICJQQVNTIik7CisK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPGlmcmFtZSBzcmM9InJl
c291cmNlcy9hdHRhY2tlci1mcmFtZS5odG1sIiBvbmxvYWQ9InRlc3QoKSI+PC9pZnJhbWU+Cis8
L2JvZHk+Cg==
</data>
<flag name="review"
          id="11642"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>