From 6c67f20fe8896686cbb01818484529e2763d9219 Mon Sep 17 00:00:00 2001 From: Gurunandan Rao Date: Tue, 5 Nov 2024 15:28:39 +0530 Subject: [PATCH] connector glassfish runner. Signed-off-by: Gurunandan Rao --- .../whitebox/whitebox-notx-param.rar | Bin 0 -> 1547 bytes .../connectors/whitebox/whitebox-notx.rar | Bin 0 -> 1544 bytes .../connectors/whitebox/whitebox-tx-param.rar | Bin 0 -> 1638 bytes .../connectors/whitebox/whitebox-tx.rar | Bin 0 -> 1635 bytes .../connectors/whitebox/whitebox-xa-param.rar | Bin 0 -> 1545 bytes .../connectors/whitebox/whitebox-xa.rar | Bin 0 -> 1562 bytes .../connectors/whitebox/whitebox.jar | Bin 0 -> 127202 bytes .../bin/certificates/clientcert.jks | Bin 0 -> 2257 bytes .../bin/certificates/clientcert.p12 | Bin 0 -> 1615 bytes .../jakartaeetck/bin/certificates/cts_cert | Bin 0 -> 909 bytes .../jakartaeetck/bin/ts.jte | 2462 +++++++++++++++++ .../jakartaeetck/bin/tssql.stmt | 805 ++++++ .../jakartaeetck/tmp/tstest.jte | 83 + .../connector-platform-tck/pom.xml | 734 +++++ .../sql/derby/derby.ddl.cmp.sql | 288 ++ .../sql/derby/derby.ddl.sprocs.sql | 347 +++ .../sql/derby/derby.ddl.sql | 176 ++ .../sql/derby/derby.dml.sql | 770 ++++++ .../java/arquillian/AppclientConfigTest.txt | 34 + .../arquillian/GlassfishTckExtension.java | 13 + .../arquillian/GlassfishXmlProcessor.java | 139 + ...boss.arquillian.core.spi.LoadableExtension | 1 + .../test/resources/appclient-arquillian.xml | 64 + .../src/test/resources/arquillian.xml | 32 + .../src/test/resources/logging.properties | 15 + .../connector-platform-tck/whitebox.jar | Bin 0 -> 127202 bytes 26 files changed, 5963 insertions(+) create mode 100644 glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-notx-param.rar create mode 100644 glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-notx.rar create mode 100644 glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-tx-param.rar create mode 100644 glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-tx.rar create mode 100644 glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-xa-param.rar create mode 100644 glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-xa.rar create mode 100644 glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox.jar create mode 100644 glassfish-runner/connector-platform-tck/jakartaeetck/bin/certificates/clientcert.jks create mode 100644 glassfish-runner/connector-platform-tck/jakartaeetck/bin/certificates/clientcert.p12 create mode 100644 glassfish-runner/connector-platform-tck/jakartaeetck/bin/certificates/cts_cert create mode 100644 glassfish-runner/connector-platform-tck/jakartaeetck/bin/ts.jte create mode 100644 glassfish-runner/connector-platform-tck/jakartaeetck/bin/tssql.stmt create mode 100644 glassfish-runner/connector-platform-tck/jakartaeetck/tmp/tstest.jte create mode 100644 glassfish-runner/connector-platform-tck/pom.xml create mode 100644 glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.cmp.sql create mode 100644 glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sprocs.sql create mode 100644 glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sql create mode 100644 glassfish-runner/connector-platform-tck/sql/derby/derby.dml.sql create mode 100644 glassfish-runner/connector-platform-tck/src/test/java/arquillian/AppclientConfigTest.txt create mode 100644 glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishTckExtension.java create mode 100644 glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishXmlProcessor.java create mode 100644 glassfish-runner/connector-platform-tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension create mode 100644 glassfish-runner/connector-platform-tck/src/test/resources/appclient-arquillian.xml create mode 100644 glassfish-runner/connector-platform-tck/src/test/resources/arquillian.xml create mode 100644 glassfish-runner/connector-platform-tck/src/test/resources/logging.properties create mode 100644 glassfish-runner/connector-platform-tck/whitebox.jar diff --git a/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-notx-param.rar b/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-notx-param.rar new file mode 100644 index 0000000000000000000000000000000000000000..3b74e0980c7e9a61e730e9d64163ee5ebdc1d375 GIT binary patch literal 1547 zcmZ{kXH?T?6o>zWL?IwVh;S-IR@e#1kRb*EO_*VX5DOxN7(}R24;v9$NkQ5IB6|gy zVXG)gAu?2Cg^@^<;E4el3L3Nnj_R{3Dx_rrbPbDrP5=iCpEtD`6w3IJjNfDD6q z06UI200!__qBYvy8K=L|2LP`BqGEvB7Fs^o(ZSimZ9xD4->P3xytT7E4(m?T!{f5j zFcJ?B!m&$M8^>^1LR}KM$x9J@bk_q6k>oS~0&}NA` z;s+1`BMuFQ{RV$Z&4XlpL{eWrY3R?-OK40w6X&dDlWQ#6s<9uXE~aa}w-meL(9;G~ zlWjhS(2LO&hl3$b2%}*cs#a#d;_b>yrRC%$LNQ|q5)dn3l3C60P+V^ldE7Cxd1+Kx zGKZz!4W%hqNbDQ5O31DLbs}=~s#7o|-Pqpx=Ygaezl=%ZC|Aor8+%?2j?*NMsC(f# zdri3&0e)FUue#jQ{Pi^Z4ygvtjr5o3ql$Dm3O_iLd}?Mo98I%wC3*9c5=?B09M`7< zD^AjvdKTbl9|$F3ds0BJ4U4b6bRd&19I33X#nNZ*!?}6YzA^=_#y^(S7%nusc%X$d zvkOhdXW)GGs#fGgL`R~_(qpGvH;3Nd+gKfYv3wnU2T(YZ&@e0>|JU&Ec7&9N8TpNi zcbRWYxN#kuWXy%mG*n5%fEcBTN;vAzBTrNJdCA{hW7buV&7DddJMhkylBx|RSV()l z6)`ivP_Zr$`!GGY3Xx&L+Q$zBL)QhHf=S(+`>GA23rM`F9@P(C*)8b1KBZ6Sl ziSb~==WOc%W5z3ZLU(d~$Tz0#bDD60^??q} z<-16JTpRBxt;_M`&}9l8PTl)VUm>s$KBCT)8f8U3^oUuKHPbFiT6w}l zLR~D{cge}IB*0aO-U6e>(MrC5I$YrF3&@w>KS>jf%m4rY literal 0 HcmV?d00001 diff --git a/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-notx.rar b/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-notx.rar new file mode 100644 index 0000000000000000000000000000000000000000..80d149e9fd5514837a1c26cd3dd52c8fca43132a GIT binary patch literal 1544 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 aD6wMrvh=WfKr-I}siph(Qaum){`&{l<-lD4 literal 0 HcmV?d00001 diff --git a/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-tx.rar b/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox-tx.rar new file mode 100644 index 0000000000000000000000000000000000000000..e7b29ee35c870c3ffcb257bdccdefc2ed2b4275e GIT binary patch literal 1635 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 Bi$DMX literal 0 HcmV?d00001 diff --git a/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox.jar b/glassfish-runner/connector-platform-tck/connectors/whitebox/whitebox.jar new file mode 100644 index 0000000000000000000000000000000000000000..94540364b7fe90cbdc7a30d0979cbeeea649e053 GIT binary patch literal 127202 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 z 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⩔s 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 literal 0 HcmV?d00001 diff --git a/glassfish-runner/connector-platform-tck/jakartaeetck/bin/certificates/clientcert.jks b/glassfish-runner/connector-platform-tck/jakartaeetck/bin/certificates/clientcert.jks new file mode 100644 index 0000000000000000000000000000000000000000..09f5569c47a3e472d830625a54508a94d5f98054 GIT binary patch literal 2257 zcmc&#XH%027tNCbl2DY;K}w{F?FmJtC;?PL5JHs@6hxLL5Lzf|YE(mO15ac6dB|H1p=%-nPDmpkX)IcI-=M$ zK6zXTfgm7Y2z(dhW<#E01K@xH^cVmjAn*|QG(D4)8fZRb!S$JcFw^uoGNaQ}r#xbT*+A-m%u z2VdIk)9j%evc|LL9EVd1;;@J0zkXv-N3j?z!TDBi)JoJ$+${`BB5t3SMh=a}xS= zZ#?tI!KL#V(x-Nn9+zBuK;GszKVf7?{J~#wscX(Rp469MP9G5d427(jRGn6X5bZn0 zW*BwKfld>J<8|C|8Vieq>y3JZx|PY8xM(L@f^>Tju)REK2Md<&{!{bZg=Smf&d^nm zg-i|2$f+N!ik3C=Jh{5j;TCo9EK4b~`*NF{*ps^zVGPj?KwAW%Kkq6vlSSECvM4u3 z7MnHZ%xV@_=Z@FElNcOk#SDC~#EPz0x)dF_s9mL98MvkHuOar^tv1&|{Alt0wDk5I zeeEfqm`+|yV>9szMzf?0t>|E_E)K4vv4WPO0@+Lx5uwdT*x(3J6}`$+mr(b_ELLzoi%77GAP|beC#VQpaAAO!H3( zHjCiqg06WKyryYNNCy@2eznRE^{EKHEZ(WHzD;gleDx+ZAbv9P?#PBALyo;5im@}8 zsqeyWKSDdYLMwF)C`wF@_)@A+$iR=GABkDjl+%UQT_}9_pg2xo0;3z-QYl8XX$|jD zOkk!6Q6AK)7a47K3g;7K>?N!jvAx(1j$AWRB4Ub(Z`&72>v}6!C#;5xb2YdzBI#l= z7=6ZnZ6tP^fa^=TZ>6N-9Dmu^UDyeFIzu0(D}tMP_IzaiZtzTQ(m`7d~#Zh%;N)HN% zx&AS{RC%PYH6gW#)X}I^aGobWO0Vl{%=C3G3)?5Y0o8`reJ$=Lv}Vd`ow#6MC-QyB zt1-7$O3-)i{mzwWX$-}R!wmnzSgqxg-c0=%%w`x-anI(Q>B&+=^V>$pzf29>Ov*Cz zq@Kq69E1%fFJ74-?V4%Vsj1!b#UaAT&bjc}qPA@=YV!Q?os}|-&)pfz-Q*Phet#L4 zK~K{koVwZ*--fCSvb3unA;jg;)AsT>Wmy}JG!&|DMn2M!v->=BrBQnwq|Gdap?@Y) zm}^ZPE+=J-lPYSG^8GPrX3uES!AEM}GxpBD7R$9Z0pdTVh#;L+0aYOoSQHondjf_) zJu_fX01AaWjkT+STx=W);rQ@PE&xCs8m12x1#+;#%;9WksJZFC!$v8P{S+%9*Hzi> zja(5{O3}>2z9j`F5jDF5ki9k(bL8{RAK|kNLeTq&w^oABiKdBW8lvr&6StD zO{AG<>iwEW4I8Le9WFtgi%YfL8y4RkJj^pWbyuFo;57kd^TN_oh1)YQ;S>_^|} zW-v?BT1o`2=XLa!5Qn$J&FME>Zd-+YYnK>CaGssRlo`qcUg{dRyxJIPdkFev={xeS zwt~smh)LUv39p=WTAx!mWGmfn^ypAaj2nbqOLFpht2f{L?k&KJyA@FlpUpyLwJuA% zY$~GwAYUsvAR57h!T<o28$9T&s$Kc6c(0=2lk```kI=tCX~m4_^>QF zf_5Lt-Glq>2sdiIG8GJ3mRWg|kRpU8ecBC&O~AG3yZRH@(^^A86%m`6+MZh#jKamz zc?b1zxf4wjJsK0mB`*4VQ!!=0UNj*}=4wuM*XV`4Cbzoxxi2=$8I-t(oWX>NrACjV aN2^xEnzd)x&M^H7bqrttb?%;#-pt>D`u9=* literal 0 HcmV?d00001 diff --git a/glassfish-runner/connector-platform-tck/jakartaeetck/bin/certificates/clientcert.p12 b/glassfish-runner/connector-platform-tck/jakartaeetck/bin/certificates/clientcert.p12 new file mode 100644 index 0000000000000000000000000000000000000000..409e41e673587e2381ded8fdfe7958c5b2c616ae GIT binary patch literal 1615 zcmV-V2C(@sf(A2kx;s>GcIZ0;*S|y~<-^X=pwb0lP;Qtti>gC};O4;iJ9ZYc8h`9X{A8TqL=AoL- z?9N+iX5$_Ayw`nsB^=zGN~DUW?Y72c(I)0rKZXRbF=P*Cx`nsB+Ej+?;HAX~exhIzg4w3hxwIjNG=iz= z%|X^`1R-ZKc{)KA5(6h)EzyaC!>-v*Obr7E*ZiCY`W!^5>W_G}%y`3F&mi<3Kj_Sa zUo$ydR%%HTn(oiVGq$t^%qvdGaIt%hYuRSys>w(S)ROYxk(Xg9$6gZW)~ybmpZVwK zIC>#fGDg)SkNI|7JxBhjm1S~1%->>3wv~%;l+byf8+;u9^;=qPGmoZwK?K%N7%IOQu|x=w_mfDX zIAg9im~Fp4hJ1d(lzQvbKxw|H?D_b2zx7IIY|pVHQcX}T>kTL;Gl1)j?}%2M+KijB zsX!tkQ0*vLy;64d)9`aO0bFUf$u}~VF!8q-V%ew%6MruW!LyDURZ%5rC}8(o!`eEo z7STB=JT1jN%o$k>r>eNhd-*-U4>wG7(NASH3e3c8rRr{aG#YMaM02R0Lt`ntgDNI{ zUw9y61g=PJy%A0ff!aeKsTh{AHE?j6GWUK0sHz;NBhWdXf5;IGXXXZ3P%2Ta zkYX!*Ll1F|tCgf$dok}u0tLw;K`WtTQ_%%qF3bu47%S`8f~8d$`JY#t3~KXlxR_1j z+32VdcefI^NqT2MB@uKmE4Ef6S5qNamP1a-f0SEPu-m|=Z&+ibF`t4pwd<|*zWn5GLG9aJ&?-5X zT#zi%+lLZOd$15qm`hlNbR`&rAHMgAK3AX4XWoJ1a?aRN#A1G-vKpK<^l%|zhH3|> zQgTPbey`&?W_PRMB<|zJ5ufeIr}0zU`KNr|le2fU%NYM|=mtRG?4W!39VtgYzba zud!tvbKSLz*Bzj1!tCXSX*Ev)!T;>dRkw@k>%>Scm-qcBFJ|(_ai)hEhhd`MeVo{C z-xV3MiU+>K*Gmm_}qPsRWyWEShCj91hvc=-qe3YFh1nB4iWwHj>i}cP;>~ zs^F^^7xC%s7hz=c8=dY2X3mEB5wqx;U7jbLZVHrjxoIv%n#&Cr! zYC)_TU_W=dcbi}`>4^bbQ!RME;ne7Jb~8OPJ2>8gg$O;`9&gyhfr|iqhY#iqAVAOS zf@M_Vx#a9aaLPi=#O^+p*z!%V!?Q4y24f$rLyf67!TVu5)+TyzR_1t&=g&2o?Qp%l zieE1}5bi=OY|CJJor_7&`|d#AN85K^Mn-N{27^*VZUas>=1>+kVW!Yv z7>7fc$=A_P*gy~@!!FF_R9cjinU`LYpJym%AOjNQ5*7_E%~SBrOfJeVt}HG|%`H~& z%uCiY6f+P3$#VGI@9Ax=}hpS#$lqwX0zyJi1rrqGdySA8XQd)p6v0 z*ahd3O@W6bb2hD5b8*-ArPak^LJqNAyI5W?;a+m$qx{SxTk;qUL{3Ci^|2mjVrFDu zT&!pyZy*bdOj$k_F&2?)ZCi3zSFGea-THIww>6b>4UVTLA_pQcl>q~hks;Rj*Yk=M zN!_z=%A4#nOjDY2B>Cp@?&sHzR9}5S}frD z_0p@)i~c8j)!V3T(Y;~5WOIYGmx5V%-VUvIAN~KQM*Ls=#VXLAi9gN1dCRP>$~rE- z3l1q9eB58R&oQX~sQPK??U-xoR+{@Au>{rk;t z)2#2SD<64q!REonP1)XmpY(5G{M+Z%tLnO9+1b11e~;wu-@S6i_pN*KCN}dlcs=-V JxIjQ)2LO6WWJmx2 literal 0 HcmV?d00001 diff --git a/glassfish-runner/connector-platform-tck/jakartaeetck/bin/ts.jte b/glassfish-runner/connector-platform-tck/jakartaeetck/bin/ts.jte new file mode 100644 index 0000000000..b5f85dc381 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/jakartaeetck/bin/ts.jte @@ -0,0 +1,2462 @@ +# +# Copyright (c) 2006, 2022 Oracle and/or its affiliates and others. +# All rights reserved. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License v. 2.0, which is available at +# http://www.eclipse.org/legal/epl-2.0. +# +# This Source Code may also be made available under the following Secondary +# Licenses when the conditions for such availability set forth in the +# Eclipse Public License v. 2.0 are satisfied: GNU General Public License, +# version 2 with the GNU Classpath Exception, which is available at +# https://www.gnu.org/software/classpath/license.html. +# +# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 +# + +######################################################################### +## +## JavaTest Environment file for Java EE Compatibility Test Suite +## +## Environment specific properties in this file will likely +## have to be modified prior to running the Java EE CTS. +## Instructions for modifying these properties are contained in this +## file. +## +## This file is processed by an external tool that helps generate the +## CTS documents. Therefore this file has a standard format that must +## be followed. This file is a standard Java Properties file with +## very specific comment formatting. Users can write property specific +## comments by using the property name and an ampersand (@). As an +## example the following comment applies to the foo.bar property: +## # @foo.bar - This is a comment pertaining to foo.bar +## # that spans multiple lines. +## This comment must be preceded by a single hash (#) character and +## the property name must be prepended with an ampersand (@). The +## comment can appear anywhere in the ts.jte file. If users have +## comments that belong in ts.jte but DO NOT pertain to a particular +## property the user must start the comment with at least 2 hash (#) +## characters. The following is a valid non-property comment: +## ## A valid non-property comment +## ## that spans multiple lines. +######################################################################### + +######################################################################### +## @jte.version This version denotes the bundle this JTE was +## originally included with. The version matches the ID +## in the bundle name. It can be used to identify a +## mismatched JTE file. This value is filled in during +## the build process as part of sanitizing the jte file. +######################################################################### +jte.version=@JTE_VERSION@ + +######################################################################## +## Javatest batch mode work directory and report directory, and policy for +## handling existing work and report directories. These properties affects +## runclient and report targets, but not gui target. +## To disable generating test report, unset report.dir, or set it to "none" +## either here or from command line, as in the following command: +## ant runclient -Dreport.dir="none" +## +# @work.dir The directory used to store Javatest test results and test +# information. +# @report.dir The directory used to store Javatest summary reports of +# test results. +# @if.existing.work.report.dirs specifies how existing work.dir and +# report.dir will be handled, and it must be one of the following values: +# overwrite overwrites all content in work.dir and report.dir +# backup moves all content in work.dir and report.dir to +# work.dir_time_day_bak and report.dir_time_day_bak, +# respectively +# append reuses and preserves the existing work.dir and report.dir +# auto lets the build files decide which mode to use +# (overwrite, backup or append). the value is determined +# like this: +# if.existing.work.report.dirs == auto +# if in CTS workspace +# if.existing.work.report.dirs = overwrite +# else we are in a distribution bundle +# if.existing.work.report.dirs = append +# end if +# else +# if.existing.work.report.dirs = value in this file +# end if +######################################################################## +work.dir=/home/jenkins/agent/workspace/jakartaee-tck_master/JTWork +report.dir=/home/jenkins/agent/workspace/jakartaee-tck_master/JTReport +if.existing.work.report.dirs=auto + +######################################################################## +# @javatest.timeout.factor This property specifies the scale factor used by +# Javatest to adjust the time JavaTest will wait for a given test to +# complete before returning failure. For instance if the default test timeout +# is 5 minutes, this value will be multiplied by 5 minutes to determine +# the total timeout delay. Note: this value only works with Javatest's +# batch mode (runclient). When using the Javatest GUI users must change +# this timeout factor in the GUI. Configure -> Edit Configuration -> View +# -> choose Standard Values -> select tab Execution -> set Time Factor. +# +# Note that javatest.timeout.factor can be a positive real number, such as 1.5 +######################################################################## +javatest.timeout.factor=1 + +######################################################################## +## Level of Vendor Java EE Implementation +# @javaee.level The level of Java EE support for the implementation under test. +# This property serves two purposes: First, it is used to determine +# whether the impl under test is a Java EE Full profile (full) or Java +# EE Web profile (web). Either "full" or "web" must be specified in +# the list values. "full" will tell the harness to deploy ears. "web" +# will tell the harness to deploy wars. +# This property is also used to help determine which apis (in the +# signature tests) are to be tested. +# +# NOTE: This property does not determine which CTS tests to run for +# different profiles and optional technologies. That is done using +# keywords. Please refer to the keywords functionality in the CTS +# User's Guide for information on how to use keywords when +# running CTS tests. +# +# Currently, there are 4 settings supported for this property: +# 1. full: This is the minimal set of signature requirements that vendors +# must support. Specifying a javaee.level of "full" with nothing +# else implies there are NO additional technologies existing within +# the vendors implementation. Again, "full" only covers the +# REQUIRED Technologies for Jakarta EE 8 Full profile +# ex/ javaee.level=full +# +# 2. web : This is the minimal set of signature requirements that vendors +# must support for Web Profile. Specifying a javaee.level of "web" +# with nothing else implies there are NO additional technologies +# existing within the vendors implementation. Again, "web" only +# covers REQUIRED Technologies for Jakarta EE 8 Web profile +# ex/ javaee.level=web +# +# 3. full + optional_technologies: This covers REQUIRED Technologies for +# Java EE 8 Full Profile and any combination of the optional +# technologies. +# Known optional technologies for CTS8 full profile include: +# "jaxr". +# ex 1/ javaee.level=full jaxr +# ex 2/ javaee.level=full jaxr +# ex 3/ javaee.level=full +# ex 4/ etc... +# +# 4. web + optional_technologies: This covers REQUIRED Technologies for +# Java EE 8 Web Profile and any combination of optional +# technologies. +# Known optional technologies for Web Profile include: +# "jaxr", "connector", "jaxb", +# "jms", "javamail", "jacc", "jaspic", "wsmd" +# ex 1/ javaee.level=web connector jms jacc +# ex 2/ javaee.level=web jaspic +# ex 3/ javaee.level=web jms connector +# ex 4/ etc... +# +# Note 1: spaces separate multiple entries +# +# Note 2: optional technologies for full/javaee profile are listed +# in the Java EE 8 spec, in Table EE.6-1. Currently, the only +# optional technologies for full profile are: "jaxr" (JAXR 1.0) +# +# Note 3: The list of optional technologies for Web Profile includes any OPTIONAL +# technology explicitly called out in the Web Profile spec (if applicable) +# as well as any additional technology which is listed within +# JavaEE Profile 8 spec *but* not included/Required in the +# Web Profile spec. +# +# Note 4: Two different examples of javaee.level are provided immediately +# following this comment block. One is for running CTS8 against +# the EE 8 (full) Profile RI and the other is for running CTS8 +# against the EE 8 Web Profile RI. Notice that optional technologies +# are supplied here since the RI for CTS8 contains those optional +# technologies in it. It's very possible vendors may provider different +# optional technologies in their implementations. If so, the list of +# optional technologies will need to be adjusted here to suite each +# vendors implementation. +# +# Note 5: For EE 8 (RI) Web Profile, you can uncomment and use the line +# below which starts with: javaee.level=web .... +# +# IMPORTANT: when testing Web Profile - be sure to adjust the +# "optional.tech.packages.to.ignore" property accordingly. +# (see comments for optional.tech.packages.to.ignore below) +# +############################################################################### +#javaee.level=web connector jaxws jaxb javamail jacc jaspic wsmd +javaee.level=full + + +######################################################################## +## Settings for Vendor Java EE Implementation +# @javaee.home The location of the vendor's Java EE platform +# implementation. +# @orb.host Hostname of the machine running the vendor's +# implementation. +# @orb.port The port number the vendor implementation is listening +# to for service requests. +######################################################################## +javaee.home= +orb.host=localhost +orb.port=3699 + +######################################################################## +## JVMOPTS_RUNTESTCOMMAND is a marker that implementations may replace with +# the JVM options to pass when starting JVMs for running tests. +# This is intended to be used for implementations convencience. +# See file docker/run_jakartaeetck.sh for an example. +######################################################################## + +######################################################################## +## Settings for Sun RI Java EE Implementation +# @javaee.home.ri The location of the RI. +# @orb.host Hostname of the machine running the RI. +# @orb.port The port number the RI is listening to for service +# requests. +######################################################################## +javaee.home.ri= +orb.host.ri=localhost +orb.port.ri=3700 + +################################################################### +################################################################### +################################################################### +## RI SPECIFIC PROPERTIES LIVE BELOW +################################################################### +################################################################### +################################################################### + +############################################################### +# @ts.display -- location to display CTS output on Unix +############################################################### +ts.display=:0.0 + +########################################################################### +# @endorsed.dirs using Java SE 6 or above and you provide newer versions +# of technologies than those contained in Java SE 6, verify +# that the property endorsed.dirs is set to the location of +# the VI api jars for those technologies you wish to +# override. For example, Java SE 6 contains an +# implementation of JAXWS 2.0 which will conflict with +# JAXWS 2.1, therefore this property would need to be set +# so that JAXWS 2.1 would be used during the building of +# tests and during test execution. +# +# @endorsed.dirs.ri If using Java SE 6 or above and you provide newer versions +# of technologies than those contained in Java SE 6, verify +# that the property endorsed.dirs is set to the location of +# the RI api jars for those technologies you wish to +# override. For example, Java SE 6 contains an +# implementation of JAXWS 2.0 which will conflict with +# JAXWS 2.1, therefore this property would need to be set +# so that JAXWS 2.1 would be used during the building of +# tests and during test execution. +########################################################################### +endorsed.dirs=${javaee.home}/modules/endorsed +endorsed.dirs.ri=${javaee.home.ri}/modules/endorsed + +############################################################### +## Config params needed for Java EE RI asadmin +## You must change these values as needed +## +# @ri.admin.user -- The Java EE RI asadmin user id +# @ri.admin.passwd -- The Java EE RI asadmin user password +# @ri.admin.host -- The Java EE RI host +# @ri.admin.port -- The Java EE RI port +# @ri.admin -- The Java EE RI admin command +# @ri.server -- The Java EE RI server instance being used +# @ri.domain.dir -- Points to where your domains are installed. +# @ri.domain.name -- The Java EE RI domain being used +# @ri.domain -- The Java EE RI domain path being used +# @ri.asenv.loc -- location of asenv.conf or asenv.bat +# @ri.imqbin.loc -- location of the IMQ bin directory +# @ri.lib -- Library directory for other Java EE RI +# jars +# @ri.imq.share.lib -- Shared library directory for imq +# @ri.jvm.options -- Java options needed by the Java EE RI +# note, the second option is not needed +# but is required to work around asadmin +# command line parsing issues. The +# xxxlogin and xxxpassword are used +# to set known server side creds for use +# with connector tests. +# @ri.applicationRoot-- Location of application repository +# Only needed when running on windows +# @ri.and.vi.run.on.same.host - set to true if interop tests are run +# with both RI and VI on same machine. set to +# false if they are run on different machines. +# This is used to work around an orb issue +# specific to running VI and RI on same box. +# +# @ri.orb.iiop.orbserverid - This is used to set a similarly +# named jvm option in the RI. It is only used +# when we are running interop where remote EJBs +# try to access target EJB's on the same host with +# zero port configuration for ssl. +# This only gets used when ri.and.vi.run.on.same.host=true. +# The value is to be an ORB server id. +############################################################### +ri.admin.user=admin +ri.admin.passwd= +ri.admin.host=${orb.host.ri} +ri.admin.port=4848 +ri.admin=${javaee.home.ri}/bin/asadmin +ri.server=server +ri.domain.dir=${javaee.home.ri}/domains +ri.domain.name=domain1 +ri.domain=${ri.domain.dir}/${ri.domain.name} +ri.asenv.loc=${javaee.home.ri}/config +ri.imqbin.loc=${javaee.home.ri}/../mq/bin +ri.lib=${javaee.home.ri}/lib +ri.log.file.location=${ri.domain}/logs +ri.modules=${javaee.home.ri}/modules +ri.imq.share.lib=${javaee.home.ri}/../mq/lib +ri.jvm.options=-Doracle.jdbc.J2EE13Compliant=true:-Xmx4096m:-Dj2eelogin.name=${user}:-Dj2eelogin.password=${password}:-Deislogin.name=${user1}:-Deislogin.password=${password1}:-Dtest.ejb.stateful.timeout.wait.seconds=${test.ejb.stateful.timeout.wait.seconds}:-DwebServerPort.2=${webServerPort.2}:-DwebServerHost.2=${webServerHost.2}:-Dcsiv2.save.log.file=${harness.log.traceflag}:-Djavax.xml.accessExternalStylesheet=all:-Djavax.xml.accessExternalDTD=file,http +ri.jvm.options.remove=-Xmx512m:${ri.jvm.options} +ri.java.endorsed.dirs=${endorsed.dirs.ri} +ri.applicationRoot=c: +ri.and.vi.run.on.same.host=true +ri.orb.iiop.orbserverid=200 + +############################################################### +## Config params needed for Java EE VI asadmin +## You must change these values as needed +## +# @vi.admin.user -- The Java EE VI asadmin user id +# @vi.admin.passwd -- The Java EE VI asadmin user password +# @vi.admin.host -- The Java EE VI host +# @vi.admin.port -- The Java EE VI port +# @vi.admin -- The Java EE VI admin command +# @vi.server -- The Java EE VI server instance being used +# @vi.domain.dir -- Points to where your domains are installed. +# @vi.domain.name -- The Java EE VI domain being used +# @vi.domain -- The Java EE VI domain path being used +# @vi.asenv.loc -- location of asenv.conf or asenv.bat +# @vi.imqbin.loc -- location of the IMQ bin directory +# @vi.lib -- Library directory for other Java EE VI +# jars +# @vi.imq.share.lib -- Shared library directory for imq +# @vi.jvm.options -- Java options needed by the Java EE VI +# note, the second option is not needed +# but is required to work around asadmin +# command line parsing issues. The +# xxxlogin and xxxpassword are used +# to set known server side creds for use +# with connector tests. +# @vi.applicationRoot-- Location of application repository +# Only needed when running on windows +############################################################### +vi.admin.user=admin +vi.admin.passwd= +vi.admin.host=${orb.host} +vi.admin.port=4848 +vi.admin=${javaee.home}/bin/asadmin +vi.server=server +vi.domain.dir=${javaee.home}/domains +vi.domain.name=domain1 +vi.domain=${vi.domain.dir}/${vi.domain.name} +vi.asenv.loc=${javaee.home}/config +vi.imqbin.loc=${javaee.home}/../mq/bin +vi.lib=${javaee.home}/server/lib +vi.log.file.location=${vi.domain}/logs +vi.modules=${javaee.home}/modules +vi.imq.share.lib=${javaee.home}/../mq/lib +vi.jvm.options=-Doracle.jdbc.J2EE13Compliant=true:-Xmx4096m:-Dj2eelogin.name=${user}:-Dj2eelogin.password=${password}:-Deislogin.name=${user1}:-Deislogin.password=${password1}:-Dtest.ejb.stateful.timeout.wait.seconds=${test.ejb.stateful.timeout.wait.seconds}:-DwebServerPort.2=${webServerPort.2}:-DwebServerHost.2=${webServerHost.2}:-Dcsiv2.save.log.file=${harness.log.traceflag}:-Djavax.xml.accessExternalStylesheet=all:-Djavax.xml.accessExternalDTD=file,http +vi.jvm.options.remove=-Xmx512m:${vi.jvm.options} +vi.java.endorsed.dirs=${endorsed.dirs} +vi.applicationRoot=c: + +############################################################### +## Config params needed for Sun Java System Application Server +## (SJSAS) asadmin. You must change these values as needed +## only if you are testing against SJSAS app server +## (javaee.home is pointing to SJSAS). +# +# @s1as.admin.user -- The SJSAS asadmin user id +# @s1as.admin.passwd -- The SJSAS asadmin user password +# @s1as.admin.host -- The SJSAS host +# @s1as.admin.port -- The SJSAS port +# @s1as.admin -- The SJSAS admin command +# @s1as.server -- The SJSAS server instance being used +# @s1as.domain.dir -- Points to where your domains are installed. +# @s1as.domain.name -- The SJSAS domain being used +# @s1as.domain -- The SJSAS domain path being used +# @s1as.asenv.loc -- location of asenv.conf or asenv.bat +# @s1as.imqbin.loc -- location of the IMQ bin directory +# @s1as.lib -- Library directory for other Java EE RI +# jars +# @s1as.imq.share.lib -- Shared library directory for imq +# @s1as.jvm.options -- Java options needed by SJSAS +# The xxxlogin and xxxpassword are used +# to set known server side creds for use +# with connector tests. +# @s1as.applicationRoot-- Location of application repository +# Only needed when running on windows +############################################################### +s1as.admin.user=admin +s1as.admin.passwd= +s1as.admin.host=${orb.host} +s1as.admin.port=4848 +s1as.admin=${javaee.home}/bin/asadmin +s1as.server=server +s1as.domain.dir=${javaee.home}/domains +s1as.domain.name=domain1 +s1as.domain=${s1as.domain.dir}/${s1as.domain.name} +s1as.asenv.loc=${javaee.home}/config +s1as.imqbin.loc=${javaee.home}/../mq/bin +s1as.lib=${javaee.home}/lib +s1as.modules=${javaee.home}/modules +s1as.imq.share.lib=${javaee.home}/../mq/lib +s1as.jvm.options=-Doracle.jdbc.J2EE13Compliant=true:-Xmx4096m:-Dj2eelogin.name=${user}:-Dj2eelogin.password=${password}:-Deislogin.name=${user1}:-Deislogin.password=${password1}:-Dtest.ejb.stateful.timeout.wait.seconds=${test.ejb.stateful.timeout.wait.seconds}:-DwebServerPort.2=${webServerPort.2}:-DwebServerHost.2=${webServerHost.2} +s1as.jvm.options.remove=-Xmx512m:${s1as.jvm.options} +s1as.java.endorsed.dirs=${endorsed.dirs} +s1as.applicationRoot=c: + +############################################################### +# @sjsas.das.orb.port -- ORB port number for the DAS +# @sjsas.das.orb.host -- ORB host name for the DAS +# @sjsas.das.webServerPort -- HTTP listener port for the DAS +# @sjsas.das.securedWebServicePort -- HTTPS listener port for the DAS +# @sjsas.nodeagent.name -- Name of node agent used by +# the remote instance. +# @sjsas.nodeinstance.name -- Name of the remote instance +# @sjsas.master.password -- Used to create a node agent only +# applicable to EE. Defaults to changeit. This +# can be changed at EE install time. +# @sjsas.instance.config.dir -- config directory used by the intsance +# being tested. +# For PE/DAS = config +# For remote instance = config +# @sjsas.cts.timer.resource -- Backend to use when we are using java2db with +# the CMP tests for the jdbc/DBTimer resource +# @sjsas.cmp.backend -- Backend to use when we are using java2db with +# the CMP tests +# @sjsas.node.agent.dir.name -- The name of the node agent directory to use. +# This value will be used on Windows only and +# ignored on non-Windows platforms. The default +# is 'n' meaning the create-node-agent command +# will pass the --agentdir argument with a value +# of ${s1as.applicationRoot}\${sjsas.node.agent.dir.name}. +# @sjsas.env.type -- CTS test configuration. Possible values are: +# das (for PE or DAS) +# remote (for remote intance) +# cluster (for cluster config not yet supported) +# @s1as.targets -- Instance(s) to deploy tests +# Supports multiple instances, For example: +# s1as.targets=server server-1 +############################################################### +sjsas.das.orb.port=3700 +sjsas.das.orb.host=${orb.host} +sjsas.das.webServerPort=8000 +sjsas.das.securedWebServicePort=1043 +sjsas.nodeagent.name=node-agent-1 +sjsas.nodeinstance.name=server-1 +sjsas.master.password=changeit +sjsas.instance.config.dir=config +sjsas.cts.timer.resource=derby +sjsas.cmp.backend=derby +sjsas.node.agent.dir.name=n + +sjsas.env.type=das +#sjsas.env.type=remote + +s1as.targets=${s1as.server} +#s1as.targets=${sjsas.nodeinstance.name} + +############################################################### +# @s1as.pe.jmsServer -- name of the JMS server the RI/PE +# @s1as.se.jmsServer -- name of the JMS server for SE/EE +############################################################### +s1as.pe.jmsServer=imqbroker +s1as.se.jmsServer=imqbroker +#s1as.se.jmsServer=${s1as.domain.name}_${s1as.server} + +############################################################### +# @extension.dir - The extension directory for the app +# server under test. This does not apply +# to the RI. +# +# Note: App server vendors will need to set this to their +# app server's extension directory. The CTS config.vi +# target will copy the CTS library jars to this location. +############################################################### +extension.dir=${s1as.domain}/lib + +############################################################### +# @instance.listenerName - Default value for the iiop listener +# for your instance. Users will +# most likely not need to change this. +############################################################### +instance.listenerName=orb-listener-1 + +############################################################### +# @tz - your local timezone. For valid values, consult your +# Operating System documentation. +############################################################### +tz=US/Eastern + +############################################################### +# @jdbc.lib.class.path - This property is used by the +# database.classes properties to point to +# where the JDBC drivers live. +############################################################### +jdbc.lib.class.path=${ts.home}/internal/lib + +############################################################### +## The following section is for CTS Database configuration +## For each database that you will test, configure the following: +## Here is an example using derby: Users will need to +## replace derby with the appropriate DB name. +# @derby.dbName -- Database Name +# @derby.server -- Database Server +# @derby.port -- Database Server port +# @derby.dml.file -- DML file used for CTS test cases +# @derby.user -- User Id configured +# @derby.passwd -- User password configured +# @derby.url -- URL to the cts database +# @derby.driver -- DriverManager driver +# @derby.classes -- CLASSPATH to JDBC driver classes +# @derby.poolName -- Name of pool configured in the Java EE +# RI (do not change!) +# @derby.dataSource -- DataSource driver +# @derby.properties -- Any additional JDBC driver required +# properties +# @derby.startup.delay-- delay to wait for DB to start + +############################################################### + +## +## Info for Cloudscape 10/Derby +## +derby.dbName=derbyDB +derby.server=${orb.host} +derby.port=1527 +derby.port.ri=1527 +derby.dml.file=derby/derby.dml.sql +derby.user=cts1 +derby.passwd=cts1 +derby.url=jdbc:derby://${derby.server}:${derby.port}/${derby.dbName};create=true +derby.driver=org.apache.derby.jdbc.ClientDriver +derby.home=${javaee.home}/../javadb +derby.system.home=${derby.home}/databases +derby.classpath=${ts.home}/lib/dbprocedures.jar${pathsep}${derby.home}/lib/derbynet.jar${pathsep}${derby.home}/lib/derbyshared.jar${pathsep}${derby.home}/lib/derbytools.jar +derby.classes=${derby.home}/lib/derbyclient.jar${pathsep}${derby.home}/lib/derbyshared.jar${pathsep}${derby.home}/lib/derbytools.jar +derby.poolName=cts-derby-pool +derby.dataSource=org.apache.derby.jdbc.ClientDataSource +derby.properties=DatabaseName\=\"${derby.dbName}\":user\=${derby.user}:password\=${derby.passwd}:serverName\=${derby.server}:portNumber=${derby.port} +derby.startup.delay=5 + +# +# Cloudscape 10 /Derby embedded driver +# +derbyEmbedded.dbName=/tmp/DerbyDB +derbyEmbedded.server=${orb.host} +derbyEmbedded.port=1527 +derbyEmbedded.dml.file=derby/derby.dml.sql +derbyEmbedded.user=cts1 +derbyEmbedded.passwd=cts1 +derbyEmbedded.url=jdbc:derby:${derbyEmbedded.dbName};create=true +derbyEmbedded.driver=org.apache.derby.jdbc.EmbeddedDriver +derbyEmbedded.classes=${javaee.home}/../javadb/lib/derby.jar${pathsep}${javaee.home}/../javadb/lib/derbyshared.jar${pathsep}${javaee.home}/../javadb/lib/derbytools.jar${pathsep}${ts.home}/lib/dbprocedures.jar +derbyEmbedded.poolName=cts-derbyEmbedded-pool +derbyEmbedded.dataSource=org.apache.derby.jdbc.EmbeddedDataSource +derbyEmbedded.pool.url='jdbc\\:derby\\:${derbyEmbedded.dbName}\\;create=true' +derbyEmbedded.properties=DatabaseName\=\"${derbyEmbedded.dbName}\":user\=${derbyEmbedded.user}:password\=${derbyEmbedded.passwd} + + +## +## Info for DB2 (8.1 type 2 driver) +## +db2.dbName=cts +db2.server=${orb.host} +db2.port=50000 +db2.dml.file=db2/db2.dml.sql +db2.user=db2inst1 +db2.passwd=ibmdb2 +db2.url=jdbc:db2:${db2.dbName} +db2.driver=com.ibm.db2.jcc.DB2Driver +db2.classes=${jdbc.lib.class.path}/db2jcc.jar:${jdbc.lib.class.path}/db2jcc_license_cu.jar:${jdbc.lib.class.path}/db2java.zip +db2.poolName=cts-db2-pool +db2.dataSource=com.ibm.db2.jcc.DB2SimpleDataSource +db2.properties=user=${db2.user}:password=${db2.passwd}:databaseName=${db2.dbName}:driverType=2:deferPrepares\=false + +## +## Info for db2 using the DataDirect driver +## +db2DD.dbName=cts +db2DD.server=${orb.host} +db2DD.port=50000 +db2DD.dml.file=db2/db2.dml.sql +db2DD.user=db2inst1 +db2DD.passwd=ibmdb2 +db2DD.url=jdbc:datadirect:db2://${db2DD.server}:${db2DD.port};DatabaseName\=${db2DD.dbName} +db2DD.driver=com.ddtek.jdbc.db2.DB2Driver +db2DD.classes=${jdbc.lib.class.path}/util.jar${pathsep}${jdbc.lib.class.path}/db2.jar${pathsep}${jdbc.lib.class.path}/base.jar +db2DD.poolName=cts-db2-DataDirect-pool +db2DD.dataSource=com.ddtek.jdbcx.db2.DB2DataSource +db2DD.properties=user\=${db2DD.user}:password\=${db2DD.passwd}:ServerName\=${db2DD.server}:portNumber\=${db2DD.port}:databasename\=${db2DD.dbName} + +## +## Info for db2 using the Sun driver +## +db2Sun.dbName=cts +db2Sun.server=${orb.host} +db2Sun.port=50000 +db2Sun.dml.file=db2/db2.dml.sql +db2Sun.user=db2inst1 +db2Sun.passwd=ibmdb2 +db2Sun.url=jdbc:sun:db2://${db2Sun.server}:${db2Sun.port};DatabaseName\=${db2Sun.dbName} +db2Sun.driver=com.sun.sql.jdbc.db2.DB2Driver +db2Sun.classes=${jdbc.lib.class.path}/smdb2.jar +db2Sun.poolName=cts-db2-Sun-pool +db2Sun.dataSource=com.sun.sql.jdbcx.db2.DB2DataSource +db2Sun.properties=user\=${db2Sun.user}:password\=${db2Sun.passwd}:ServerName\=${db2Sun.server}:portNumber\=${db2Sun.port}:databasename\=${db2Sun.dbName} + +## +## Info for Microsoft SQL Server +## +mssqlserver.dbName=cts +mssqlserver.server=${orb.host} +mssqlserver.port=1433 +mssqlserver.dml.file=mssqlserver/mssqlserver.dml.sql +mssqlserver.user=guest +mssqlserver.passwd=guest +mssqlserver.url=jdbc:microsoft:sqlserver://${mssqlserver.server}:${mssqlserver.port} +mssqlserver.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver +mssqlserver.classes=${jdbc.lib.class.path}/sqljdbc.jar +mssqlserver.poolName=cts-mssqlserver-pool +mssqlserver.dataSource=com.microsoft.sqlserver.jdbc.SQLServerDataSource +mssqlserver.properties=user\=${mssqlserver.user}:password\=${mssqlserver.passwd}:ServerName\=${mssqlserver.server}:portNumber\=${mssqlserver.port} + + +## +## Info for Microsoft SQL Server using the DataDirect driver +## +mssqlserverDD.dbName=cts +mssqlserverDD.server=${orb.host} +mssqlserverDD.port=1433 +mssqlserverDD.dml.file=mssqlserver/mssqlserver.dml.sql +mssqlserverDD.user=guest +mssqlserverDD.passwd=guest +mssqlserverDD.url=jdbc:datadirect:sqlserver://${mssqlserverDD.server}:${mssqlserverDD.port} +mssqlserverDD.driver=com.ddtek.jdbc.sqlserver.SQLServerDriver +mssqlserverDD.classes=${jdbc.lib.class.path}/util.jar${pathsep}${jdbc.lib.class.path}/sqlserver.jar${pathsep}${jdbc.lib.class.path}/base.jar +mssqlserverDD.poolName=cts-mssqlserver-DataDirect-pool +mssqlserverDD.dataSource=com.ddtek.jdbcx.sqlserver.SQLServerDataSource +mssqlserverDD.properties=user\=${mssqlserverDD.user}:password\=${mssqlserverDD.passwd}:ServerName\=${mssqlserverDD.server}:portNumber\=${mssqlserverDD.port}:selectMethod\=cursor + +## +## Info for Microsoft SQL Server using the Inet driver +## +mssqlserverInet.dbName=cts1 +mssqlserverInet.server=${orb.host} +mssqlserverInet.port=1433 +mssqlserverInet.dml.file=mssqlserver/mssqlserver.dml.sql +mssqlserverInet.user=cts1 +mssqlserverInet.passwd=cts1 +mssqlserverInet.url=jdbc:inetdae7:${mssqlserverInet.server}:${mssqlserverInet.port} +mssqlserverInet.driver=com.inet.tds.TdsDriver +mssqlserverInet.classes=${jdbc.lib.class.path}/Merlia.jar +mssqlserverInet.poolName=cts-mssqlserver-Inet-pool +mssqlserverInet.dataSource=com.inet.tds.TdsDataSource +mssqlserverInet.properties=user\=${mssqlserverInet.user}:password\=${mssqlserverInet.passwd}:ServerName\=${mssqlserverInet.server}:port\=${mssqlserverInet.port} + +## +## Info for Microsoft SQL Server using the Sun driver +## +mssqlserverSun.dbName=cts +mssqlserverSun.server=${orb.host} +mssqlserverSun.port=1433 +mssqlserverSun.dml.file=mssqlserver/mssqlserver.dml.sql +mssqlserverSun.user=guest +mssqlserverSun.passwd=guest +mssqlserverSun.url=jdbc:sun:sqlserver://${mssqlserverSun.server}:${mssqlserverSun.port} +mssqlserverSun.driver=com.sun.sql.jdbc.sqlserver.SQLServerDriver +mssqlserverSun.classes=${jdbc.lib.class.path}/smsqlserver.jar +mssqlserverSun.poolName=cts-mssqlserver-Sun-pool +mssqlserverSun.dataSource=com.sun.sql.jdbcx.sqlserver.SQLServerDataSource +mssqlserverSun.properties=user\=${mssqlserverSun.user}:password\=${mssqlserverSun.passwd}:ServerName\=${mssqlserverSun.server}:portNumber\=${mssqlserverSun.port}:selectMethod\=cursor + +## +## Info for MYSQL driver +## +mysql.dbName=cts +mysql.server=${orb.host} +mysql.port=3306 +mysql.dml.file=mysql/mysql.dml.sql +mysql.user=cts1 +mysql.passwd=cts1 +mysql.url=jdbc:mysql://${mysql.server}:${mysql.port}/${mysql.dbName} +mysql.driver=com.mysql.jdbc.Driver +mysql.classes=${jdbc.lib.class.path}/mysql-connector-java-5.1.42-bin.jar +mysql.poolName=cts-mysql-pool +mysql.dataSource=com.mysql.jdbc.jdbc2.optional.MysqlDataSource +mysql.properties=user\=${mysql.user}:password\=${mysql.passwd}:DatabaseName\=${mysql.dbName}\:ServerName\=${mysql.server}\:port\=${mysql.port}\:jdbcCompliantTruncation\=false + +## +## Info for Oracle DataDirect +## +oracleDD.dbName=ora817 +oracleDD.server=${orb.host} +oracleDD.port=1521 +oracleDD.dml.file=oracle/oracle.dml.sql +oracleDD.user=la +oracleDD.passwd=la +oracleDD.url=jdbc:datadirect:oracle://${oracleDD.server};SID=${oracleDD.dbName} +oracleDD.driver=com.ddtek.jdbc.oracle.OracleDriver +oracleDD.classes=${jdbc.lib.class.path}/base.jar${pathsep}${jdbc.lib.class.path}/oracle.jar${pathsep}${jdbc.lib.class.path}/util.jar +oracleDD.poolName=cts-oracle-DataDirect-pool +oracleDD.dataSource=com.ddtek.jdbcx.oracle.OracleDataSource +oracleDD.properties=user\=${oracleDD.user}:password\=${oracleDD.passwd}:SID\="${oracleDD.dbName}":serverName=${oracleDD.server}:portNumber=${oracleDD.port} + +## +## Info for Oracle thin +## +oracle.dbName=cts +oracle.server=${orb.host} +oracle.port=1521 +oracle.dml.file=oracle/oracle.dml.sql +oracle.user=cts1 +oracle.passwd=cts1 +oracle.url=jdbc:oracle:thin:@${oracle.server}:${oracle.port}:${oracle.dbName} +oracle.driver=oracle.jdbc.OracleDriver +oracle.classes=${jdbc.lib.class.path}/ojdbc8.jar +oracle.poolName=cts-oracle-pool +oracle.dataSource=oracle.jdbc.pool.OracleDataSource +oracle.pool.url=jdbc\\:oracle\\:thin\\:@${oracle.server}\\:${oracle.port}\\:${oracle.dbName} +oracle.properties=user\=${oracle.user}:password\=${oracle.passwd}:URL\=\"${oracle.pool.url}\" + +# +# Info for Oracle oci driver +# +oracleOCI.dbName=cts1 +oracleOCI.server=${orb.host} +oracleOCI.port=1521 +oracleOCI.dml.file=oracle/oracle.dml.sql +oracleOCI.user=cts1 +oracleOCI.passwd=cts1 +oracleOCI.url=jdbc:oracle:oci:@${oracleOCI.dbName} +oracleOCI.driver=oracle.jdbc.OracleDriver +oracleOCI.classes=${jdbc.lib.class.path}/ojdbc8.jar +oracleOCI.poolName=cts-oracle-oci-pool +oracleOCI.dataSource=oracle.jdbc.pool.OracleDataSource +oracleOCI.pool.url=jdbc\\:oracle\\:oci\\:@${oracleOCI.dbName} +oracleOCI.properties=user\=${oracleOCI.user}:password\=${oracleOCI.passwd}:URL\=\"${oracleOCI.pool.url}\" + +## +## Info for Oracle inet +## +oracleInet.dbName=cts1 +oracleInet.server=${orb.host} +oracleInet.port=1521 +oracleInet.dml.file=oracle/oracle.dml.sql +oracleInet.user=cts1 +oracleInet.passwd=cts1 +oracleInet.url=jdbc:inetora:${oracleInet.server}:${oracleInet.port}:${oracleInet.dbName} +oracleInet.driver=com.inet.ora.OraDriver +oracleInet.classes=${jdbc.lib.class.path}/Oranxo.jar +oracleInet.poolName=cts-oracle-Inet-pool +oracleInet.dataSource=com.inet.ora.OraDataSource +oracleInet.properties=user\=${oracleInet.user}:password\=${oracleInet.passwd}:serviceName\="${oracleInet.dbName}":serverName=${oracleInet.server}:port=${oracleInet.port} + +## +## Info for Oracle Sun +## +oracleSun.dbName=ora817 +oracleSun.server=${orb.host} +oracleSun.port=1521 +oracleSun.dml.file=oracle/oracle.dml.sql +oracleSun.user=la +oracleSun.passwd=la +oracleSun.url=jdbc:sun:oracle://${oracleSun.server};SID=${oracleSun.dbName} +oracleSun.driver=com.sun.sql.jdbc.oracle.OracleDriver +oracleSun.classes=${jdbc.lib.class.path}/smoracle.jar +oracleSun.poolName=cts-oracle-Sun-pool +oracleSun.dataSource=com.sun.sql.jdbcx.oracle.OracleDataSource +oracleSun.properties=user\=${oracleSun.user}:password\=${oracleSun.passwd}:SID\="${oracleSun.dbName}":serverName=${oracleSun.server}:portNumber=${oracleSun.port} + +## +## Info for Pointbase +## +pointbase.dbName=cts +pointbase.server=${orb.host} +pointbase.port=9092 +pointbase.dml.file=pointbase/pointbase.dml.sql +pointbase.user=PBPUBLIC +pointbase.passwd=PBPUBLIC +pointbase.url=jdbc:pointbase:server://${pointbase.server}:${pointbase.port}/${pointbase.dbName},new +pointbase.driver=com.pointbase.jdbc.jdbcUniversalDriver +pointbase.classes=${jdbc.lib.class.path}/pbclient.jar${pathsep}${jdbc.lib.class.path}/pbembedded.jar +pointbase.poolName=cts-pointbase-pool +pointbase.dataSource=com.pointbase.jdbc.jdbcDataSource +pointbase.pool.url="jdbc\\:pointbase\\:server\\:\/\/${pointbase.server}\\:${pointbase.port}\/${pointbase.dbName},new" +pointbase.properties=user\=${pointbase.user}:password\=${pointbase.passwd}:DatabaseName\=\"${pointbase.pool.url}\" + +## +## Info for Postgres +## +postgresql.dbName=CTS5 +postgresql.server=${orb.host} +postgresql.port=5432 +postgresql.dml.file=postgresql/postgresql.dml.sql +postgresql.user=cts1 +postgresql.passwd=cts1 +postgresql.url=jdbc:postgresql://${postgresql.server}:${postgresql.port}/${postgresql.dbName} +postgresql.driver=org.postgresql.Driver +postgresql.classes=${jdbc.lib.class.path}/postgresql-8.4-701.jdbc4.jar +postgresql.poolName=cts-postgresql-pool +postgresql.pool.url="jdbc\\:postgresql\\:server\\:\/\/${postgresql.server}\\:${postgresql.port}\/${postgresql.dbName},new" +postgresql.dataSource=org.postgresql.ds.PGSimpleDataSource +postgresql.properties=user\=${postgresql.user}:password\=${postgresql.passwd}:DatabaseName\=${postgresql.dbName}\:ServerName\=${postgresql.server}\:port\=${postgresql.port} + +## +## Info for Sybase (jConnect Driver) +## +sybase.dbName=cts2 +sybase.server=${orb.host} +sybase.port=4100 +sybase.dml.file=sybase/sybase.dml.sql +sybase.user=cts1 +sybase.passwd=cts1 +sybase.url=jdbc:sybase:Tds:${sybase.server}:${sybase.port}/${sybase.dbName} +sybase.driver=com.sybase.jdbc2.jdbc.SybDriver +sybase.classes=${jdbc.lib.class.path}/jconn2.jar +sybase.poolName=cts-sybase-pool +sybase.dataSource= com.sybase.jdbc2.jdbc.SybDataSource +sybase.properties=user\=${sybase.user}:password\=${sybase.passwd}:DatabaseName\=${sybase.dbName}\:ServerName\=${sybase.server}\:PortNumber\=${sybase.port}\:BE_AS_JDBC_COMPLIANT_AS_POSSIBLE\=true\:FAKE_METADATA\=true + +## +## Info for Sybase (Inet Driver) +## +sybaseInet.dbName=cts2 +sybaseInet.server=${orb.host} +sybaseInet.port=4100 +sybaseInet.dml.file=sybase/sybase.dml.sql +sybaseInet.user=cts1 +sybaseInet.passwd=cts1 +sybaseInet.url=jdbc:inetsyb:${sybaseInet.server}:${sybaseInet.port}?database=${sybaseInet.dbName} +sybaseInet.driver=com.inet.syb.SybDriver +sybaseInet.classes=${jdbc.lib.class.path}/Sybelux.jar +sybaseInet.poolName=cts-sybase-Inet-pool +sybaseInet.dataSource= com.inet.syb.SybDataSource +sybaseInet.properties=user\=${sybaseInet.user}:password\=${sybaseInet.passwd}:DatabaseName\=${sybaseInet.dbName}\:ServerName\=${sybaseInet.server}\:PortNumber\=${sybaseInet.port} + + +## +## Info for Sybase using the DataDirect driver +## +sybaseDD.dbName=cts2 +sybaseDD.server=${orb.host} +sybaseDD.port=4100 +sybaseDD.dml.file=sybase/sybase.dml.sql +sybaseDD.user=cts1 +sybaseDD.passwd=cts1 +sybaseDD.url=jdbc:datadirect:sybase://${sybaseDD.server}:${sybaseDD.port} +sybaseDD.driver=com.ddtek.jdbc.sybase.SybaseDriver +sybaseDD.classes=${jdbc.lib.class.path}/util.jar${pathsep}${jdbc.lib.class.path}/sybase.jar${pathsep}${jdbc.lib.class.path}/base.jar +sybaseDD.poolName=cts-sybase-DataDirect-pool +sybaseDD.dataSource=com.ddtek.jdbcx.sybase.SybaseDataSource +sybaseDD.properties=user\=${sybaseDD.user}:password\=${sybaseDD.passwd}:ServerName\=${sybaseDD.server}:portNumber\=${sybaseDD.port}:selectMethod\=cursor:DatabaseName\=${sybaseDD.dbName} + +## +## Info for Sybase using the Sun driver +## +sybaseSun.dbName=cts2 +sybaseSun.server=${orb.host} +sybaseSun.port=4100 +sybaseSun.dml.file=sybase/sybase.dml.sql +sybaseSun.user=cts1 +sybaseSun.passwd=cts1 +sybaseSun.url=jdbc:sun:sybase://${sybaseSun.server}:${sybaseSun.port} +sybaseSun.driver=com.sun.sql.jdbc.sybase.SybaseDriver +sybaseSun.classes=${jdbc.lib.class.path}/smsybase.jar +sybaseSun.poolName=cts-sybase-Sun-pool +sybaseSun.dataSource=com.sun.sql.jdbcx.sybase.SybaseDataSource +sybaseSun.properties=user\=${sybaseSun.user}:password\=${sybaseSun.passwd}:ServerName\=${sybaseSun.server}:portNumber\=${sybaseSun.port}:selectMethod\=cursor:DatabaseName\=${sybaseSun.dbName} + +############################################################### +## The following database configuration section is for the CTS +## interop tests which require a database that is used by the +## reference implementation. These entries should not be changed. +# @derby.dbName.ri -- Database Name +# @derby.server.ri -- Database Server +# @derby.port.ri -- Database Server port +# @derby.dml.file.ri -- DML file used for CTS test cases +# @derby.user.ri -- User Id configured +# @derby.passwd.ri -- User password configured +# @derby.url.ri -- URL to the cts database +# @derby.driver.ri -- DriverManager driver +# @derby.classes.ri -- CLASSPATH to JDBC driver classes +# @derby.poolName.ri -- Name of pool configured in the Java EE +# RI (do not change!) +# @derby.dataSource.ri -- DataSource driver +# @derby.properties.ri -- Any additional JDBC driver required +# properties +# @derby.startup.delay.ri -- delay to wait for DB to start +############################################################### +derby.dbName.ri=derbyDBri +derby.server.ri=${orb.host.ri} +derby.port.ri=1527 +derby.dml.file.ri=derby/derby.dml.sql +derby.user.ri=cts1 +derby.passwd.ri=cts1 +derby.url.ri=jdbc:derby://${derby.server.ri}:${derby.port.ri}/${derby.dbName.ri};create=true +derby.driver.ri=org.apache.derby.jdbc.ClientDriver +derby.home.ri=${javaee.home.ri}/../javadb +derby.system.home.ri=${derby.home.ri}/databases +derby.classpath.ri=${ts.home}/lib/dbprocedures.jar${pathsep}${derby.home.ri}/lib/derbynet.jar${pathsep}${derby.home.ri}/lib/derbyshared.jar${pathsep}${derby.home.ri}/lib/derbytools.jar +derby.classes.ri=${derby.home.ri}/lib/derbyclient.jar{pathsep}${derby.home.ri}/lib/derbyshared.jar${pathsep}${derby.home.ri}/lib/derbytools.jar +derby.poolName.ri=cts-derby-pool +derby.dataSource.ri=org.apache.derby.jdbc.ClientDataSource +derby.properties.ri=DatabaseName\=\"${derby.dbName.ri}\":user\=${derby.user.ri}:password\=${derby.passwd.ri}:serverName\=${derby.server.ri}:portNumber=${derby.port.ri} +derby.startup.delay.ri=5 +############################################################### +# @alt.dtd.dir DTD location for Java EE and RI xml files. Used +# for xml validation when building tests. If +# javaee.home.ri is set, /lib/dtds +# will be used and alt.dtd.dir is ignored. +# @alt.schema.dir schema location for Java EE and RI xml files. +# Used for xml validation when building tests. +# If javaee.home.ri is set, +# /lib/schemas will be used and +# alt.schema.dir is ignored. +############################################################### +alt.dtd.dir=${ts.home}/lib/dtds +alt.schema.dir=${ts.home}/lib/schemas + +############################################################### +## Configure the behavior of which tables CTS will create when +## ant init.[datbaseName] is invoked. +# +# @create.cmp.tables - When set to false, the appserver is +# responsible for creating cmp tables +# at deployment of the ejb/ear +# When set to true, init.[datbaseName] +# will create the tables used by CMP +# EJBs. The sql for the CMP tables are +# contained in: +# $TS_HOME/[datbaseName]/sql/[databaseName].ddl.cmp.sql +# $TS_HOME/[datbaseName]/sql/[databaseName].ddl.interop.sql +# +############################################################### +create.cmp.tables=true + +############################################################### +# @jdbc.poolName - Configure the connection pool that will be +# tested in this cts test run. +# +# @jdbc.maxpoolsize - This property defines the max pool size +# when creating JDBC connection pools. +# +# @jdbc.steadypoolsize - This property defines the steady pool size +# when creating JDBC connection pools. +############################################################### +jdbc.poolName=${derby.poolName} +jdbc.maxpoolsize=64 +jdbc.steadypoolsize=32 + +############################################################### +## These properties are use for the CTS +## interop tests which require a database that is used by the +## reference implementation. +# +# @jdbc.poolName.ri - Configure the connection pool that will be +# use when configuring the JDBC connection +# pools for the reference implemetation. +# +# @jdbc.maxpoolsize.ri - This property defines the max pool size +# when creating JDBC connection pools. +# +# @jdbc.steadypoolsize.ri - This property defines the steady pool size +# when creating JDBC connection pools. +############################################################### +jdbc.poolName.ri=${derby.poolName.ri} +jdbc.maxpoolsize.ri=96 +jdbc.steadypoolsize.ri=32 + +############################################################### +# @jdbc.datasource.props - Used to to specify Vendor specific +# properties and less commonly used DataSource properties. +# Its value is a comma-separated array of name-value pairs. +# Each property pair follows the format of "name=value", +# including the surrounding double quotes. +# +# The value of this property must not contain any extra spaces. +# +# In most cases, this property is not needed and therefore +# commented out. +# +############################################################### +#jdbc.datasource.props="driverType=thin","name2=value2" + +############################################################### +# @jdbc.db - The name of the currently configured DB. This +# value is the prefix of the DB properties currently +# being used. Some valid values are; derby and +# derbyEmbedded. See the other DB property +# names for other valid values. +############################################################### +jdbc.db=derby +jdbc.db.classes=${derby.classes} + +############################################################### +## These properties are configurable and must specify valid +## usernames and passwords to establish JDBC connections to +## backend RDBMS. +## +# @user1 - Set this to the user for the jdbc/DB1 resource +# @password1 - Set this to the password for the jdbc/DB1 resource +# @user2 - Set this to the user for the jdbc/DB2 resource +# @password2 - Set this to the password for the jdbc/DB2 resource +# @user3 - Set this to the user for the jdbc/DBTimer resource +# @password3 - Set this to the password for the jdbc/DBTimer resource +############################################################### +user1=${derby.user} +password1=${derby.passwd} +user2=${derby.user} +password2=${derby.passwd} +user3=${derby.user} +password3=${derby.passwd} + +############################################################### +## Configure the dml file to use +# @db.dml.file - dml file for VI +# @db.dml.file.ri - dml file for RI +############################################################### +db.dml.file=${derby.dml.file} +db.dml.file.ri=${derby.dml.file} + +############################################################### +## Configure the DB specific information needed by JSTL +# @jstl.db.driver - JDBC driver +# @jstl.db.url - DB URL +############################################################### +jstl.db.driver=${derby.driver} +jstl.db.url=${derby.url} + +######################################################################## +# +# @jtaJarClasspath: This property must be set when running signature +# tests. This property should be set to the Path +# for the JTA API jar. +# +######################################################################## +jtaJarClasspath=${s1as.modules}/jakarta.transaction-api.jar + +############################################################### +## Classpath properties required by CTS: +# @javaee.classes.ri -- Classes required by Java EE RI +# @ts.run.classpath.ri -- Classpath required by Java EE RI +# appclient container. +# @ts.run.classpath -- Classpath required by the vendor +# appclient container. +# @ts.harness.classpath -- Classes required by javatest +# @ts.classpath -- Classes used to build the CTS tests +# @ts.lib.classpath -- Classes used to build cts.jar +############################################################### +implementation.classes.ri=${ri.modules}/orb-connector.jar${pathsep}${ri.modules}/deployment-client.jar${pathsep}${ri.modules}/security-ee.jar${pathsep}${ri.modules}/security.jar${pathsep}${ri.modules}/common-util.jar${pathsep}${ri.modules}/glassfish-corba-omgapi.jar${pathsep}${ri.modules}/glassfish-corba-orb.jar${pathsep}${ri.modules}/internal-api.jar${pathsep}${ri.modules}/deployment-common.jar${pathsep}${ri.modules}/gmbal.jar${pathsep}${ri.modules}/bean-validator.jar${pathsep}${ri.modules}/jersey-client.jar${pathsep}${ri.modules}/jersey-common.jar${pathsep}${ri.modules}/jersey-hk2.jar${pathsep}${ri.modules}/jersey-media-jaxb.jar${pathsep}${ri.modules}/jersey-media-sse.jar${pathsep}${ri.modules}/jersey-media-json-processing.jar${pathsep}${ri.modules}/jsonp-jaxrs.jar${pathsep}${ri.modules}/jersey-media-json-binding.jar${pathsep}${ri.modules}/jersey-server.jar${pathsep}${ri.modules}/jersey-container-servlet.jar${pathsep}${ri.modules}/jersey-container-servlet-core.jar${pathsep}${ri.modules}/guava.jar${pathsep}${ri.modules}/jakarta.el.jar${pathsep}${ri.modules}/jakarta.el-api.jar${pathsep}${ri.modules}/tyrus-websocket-core.jar${pathsep}${ri.modules}/tyrus-client.jar${pathsep}${ri.modules}/tyrus-container-grizzly-client.jar${pathsep}${ri.modules}/tyrus-core.jar${pathsep}${ri.modules}/tyrus-container-grizzly.jar${pathsep}${ri.modules}/tyrus-container-grizzly-client.jar${pathsep}${ri.modules}/glassfish-grizzly-extra-all.jar${pathsep}${ri.modules}/nucleus-grizzly-all.jar${pathsep}${ri.modules}/tyrus-server.jar${pathsep}${ri.modules}/tyrus-container-servlet.jar${pathsep}${ri.modules}/tyrus-spi.jar${pathsep}${ri.modules}/yasson.jar${pathsep}${ri.modules}/jakarta.websocket-client-api.jar${pathsep}${ri.modules}/parsson.jar${pathsep}${ri.modules}/parsson-media.jar${pathsep}${ri.modules}/angus-activation.jar${pathsep}${ri.modules}/angus-mail.jar${pathsep}${ri.modules}/expressly.jar + +implementation.classes=${s1as.modules}/deployment-client.jar${pathsep}${s1as.modules}/security.jar${pathsep}${s1as.modules}/common-util.jar${pathsep}${s1as.modules}/glassfish-corba-omgapi.jar${pathsep}${s1as.modules}/deployment-common.jar${pathsep}${s1as.modules}/gmbal.jar${pathsep}${s1as.modules}/bean-validator.jar${pathsep}${s1as.modules}/jakarta.ws.rs-api.jar${pathsep}${s1as.modules}/jersey-client.jar${pathsep}${s1as.modules}/jersey-common.jar${pathsep}${s1as.modules}/jersey-hk2.jar${pathsep}${s1as.modules}/jersey-media-jaxb.jar${pathsep}${s1as.modules}/jersey-media-sse.jar${pathsep}${s1as.modules}/jersey-media-json-processing.jar${pathsep}${s1as.modules}/jsonp-jaxrs.jar${pathsep}${s1as.modules}/jersey-media-json-binding.jar${pathsep}${s1as.modules}/jersey-server.jar${pathsep}${s1as.modules}/jersey-container-servlet.jar${pathsep}${s1as.modules}/jersey-container-servlet-core.jar${pathsep}${s1as.modules}/guava.jar${pathsep}${s1as.modules}/jakarta.el.jar${pathsep}${s1as.modules}/jakarta.el-api.jar${pathsep}${s1as.modules}/tyrus-websocket-core.jar${pathsep}${s1as.modules}/tyrus-client.jar${pathsep}${s1as.modules}/tyrus-core.jar${pathsep}${s1as.modules}/tyrus-container-grizzly.jar${pathsep}${s1as.modules}/tyrus-container-grizzly-client.jar${pathsep}${s1as.modules}/glassfish-grizzly-extra-all.jar${pathsep}${s1as.modules}/nucleus-grizzly-all.jar${pathsep}${s1as.modules}/tyrus-server.jar${pathsep}${s1as.modules}/tyrus-container-servlet.jar${pathsep}${s1as.modules}/tyrus-spi.jar${pathsep}${s1as.modules}/yasson.jar${pathsep}${s1as.modules}/jakarta.websocket-client-api.jar${pathsep}${s1as.modules}/parsson.jar${pathsep}${s1as.modules}/parsson-media.jar${pathsep}${s1as.modules}/angus-activation.jar${pathsep}${s1as.modules}/angus-mail.jar${pathsep}${s1as.modules}/expressly.jar + +javaee.classes.ri=${ri.modules}/jakarta.jms-api.jar${pathsep}${ri.modules}/jakarta.json.jar${pathsep}${ri.modules}/jakarta.json-api.jar${pathsep}${ri.modules}/jakarta.json.bind-api.jar${pathsep}${ri.modules}/jakarta.ejb-api.jar${pathsep}${ri.modules}/jakarta.annotation-api.jar${pathsep}${ri.modules}/jakarta.enterprise.deploy-api.jar${pathsep}${ri.modules}/jakarta.mail.jar${pathsep}${ri.modules}/jakarta.mail-api.jar${pathsep}${ri.modules}/jakarta.persistence.jar${pathsep}${ri.modules}/jakarta.persistence-api.jar${pathsep}${ri.modules}/jakarta.resource-api.jar${pathsep}${ri.modules}/jakarta.security.auth.message-api.jar${pathsep}${ri.modules}/jakarta.authentication-api.jar${pathsep}${ri.modules}/jakarta.security.jacc-api.jar${pathsep}${ri.modules}/jakarta.authorization-api.jar${pathsep}${ri.modules}/jakarta.interceptor-api.jar${pathsep}${ri.modules}/jakarta.servlet-api.jar${pathsep}${ri.modules}/jakarta.servlet.jsp-api.jar${pathsep}${ri.modules}/jakarta.transaction-api.jar${pathsep}${ri.modules}/jakarta.xml.bind-api.jar${pathsep}${ri.modules}/jaxb-osgi.jar${pathsep}${ri.modules}/jmxremote_optional-repackaged.jar${pathsep}${ri.modules}/jakarta.faces.jar${pathsep}${ri.modules}/jakarta.faces-api.jar${pathsep}${ri.modules}/jakarta.servlet.jsp.jstl.jar${pathsep}${ri.modules}/jakarta.servlet.jsp.jstl-api.jar${pathsep}${ri.modules}/webservices-osgi.jar${pathsep}${ri.modules}/webservices-api-osgi.jar${pathsep}${ri.modules}/ejb.security.jar${pathsep}${ri.modules}/glassfish-corba-csiv2-idl.jar${pathsep}${ri.modules}/weld-osgi-bundle.jar${pathsep}${implementation.classes.ri}${pathsep}${ri.modules}/javamail-connector.jar${pathsep}${ri.modules}/javamail-runtime.jar${pathsep}${ri.modules}/jakarta.websocket-api.jar${pathsep}${ri.modules}/jakarta.enterprise.concurrent-api.jar${pathsep}${ri.modules}/jakarta.enterprise.cdi-api.jar${pathsep}${ri.modules}/jakarta.security.enterprise-api.jar${pathsep}${ri.modules}/resolver.jar${pathsep}${ri.modules}/jakarta.websocket-client-api.jar${pathsep}${ri.modules}/parsson.jar${pathsep}${s1as.modules}/parsson-media.jar${pathsep}${ri.modules}/angus-activation.jar${pathsep}${s1as.modules}/angus-mail.jar${pathsep}${s1as.modules}/expressly.jar${pathsep}${ri.modules}/webservices-extra-jdk-packages.jar${pathsep}${ri.modules}/webservices-connector.jar${pathsep}${ri.modules}/webservices-extra-xmlsec.jar${pathsep}${ri.modules}/webservices.security.jar + +javaee.classes=${s1as.modules}/jakarta.jms-api.jar${pathsep}${s1as.modules}/jakarta.json.jar${pathsep}${s1as.modules}/jakarta.json-api.jar${pathsep}${s1as.modules}/jakarta.json.bind-api.jar${pathsep}${s1as.modules}/jakarta.ejb-api.jar${pathsep}${s1as.modules}/jakarta.annotation-api.jar${pathsep}${s1as.modules}/jakarta.enterprise.deploy-api.jar${pathsep}${s1as.modules}/jakarta.mail.jar${pathsep}${s1as.modules}/jakarta.mail-api.jar${pathsep}${s1as.modules}/jakarta.persistence.jar${pathsep}${s1as.modules}/jakarta.persistence-api.jar${pathsep}${s1as.modules}/jakarta.resource-api.jar${pathsep}${s1as.modules}/jakarta.security.auth.message-api.jar${pathsep}${s1as.modules}/jakarta.security.jacc-api.jar${pathsep}${s1as.modules}/jakarta.authentication-api.jar${pathsep}${s1as.modules}/jakarta.authorization-api.jar${pathsep}${s1as.modules}/jakarta.servlet-api.jar${pathsep}${s1as.modules}/el-impl.jar${pathsep}${s1as.modules}/jakarta.servlet.jsp-api.jar${pathsep}${jtaJarClasspath}${pathsep}${s1as.modules}/jakarta.xml.bind-api.jar${pathsep}${s1as.modules}/jaxb-osgi.jar${pathsep}${s1as.modules}/jmxremote_optional-repackaged.jar${pathsep}${s1as.modules}/jakarta.faces.jar${pathsep}${s1as.modules}/jakarta.faces-api.jar${pathsep}${s1as.modules}/jakarta.servlet.jsp.jstl.jar${pathsep}${ri.modules}/jakarta.servlet.jsp.jstl-api.jar${pathsep}${s1as.modules}/webservices-osgi.jar${pathsep}${s1as.modules}/webservices-api-osgi.jar${pathsep}${s1as.modules}/jakarta.management.j2ee-api.jar${pathsep}${s1as.modules}/ejb.security.jar${pathsep}${s1as.modules}/glassfish-corba-csiv2-idl.jar${pathsep}${s1as.modules}/weld-osgi-bundle.jar${pathsep}${implementation.classes}${pathsep}${s1as.modules}/javamail-connector.jar${pathsep}${s1as.modules}/javamail-runtime.jar${pathsep}${s1as.modules}/jakarta.websocket-api.jar${pathsep}${s1as.modules}/jakarta.enterprise.concurrent-api.jar${pathsep}${s1as.modules}/jakarta.enterprise.cdi-api.jar$${pathsep}${s1as.modules}/jakarta.xml.ws-api.jar${pathsep}${s1as.modules}/jakarta.xml.bind-api.jar${pathsep}${s1as.modules}/jakarta.security.enterprise-api.jar${pathsep}${s1as.modules}/jakarta.inject-api.jar${pathsep}${s1as.modules}/jakarta.activation-api.jar${pathsep}${s1as.modules}/jakarta.validation-api.jar${pathsep}${s1as.modules}/resolver.jar${pathsep}${s1as.modules}/jakarta.websocket-client-api.jar${pathsep}${s1as.modules}/parsson.jar${pathsep}${s1as.modules}/parsson-media.jar${pathsep}${s1as.modules}/angus-activation.jar${pathsep}${s1as.modules}/angus-mail.jar${pathsep}${s1as.modules}/expressly.jar${pathsep}${s1as.modules}/webservices-extra-jdk-packages.jar${pathsep}${s1as.modules}/webservices-connector.jar${pathsep}${s1as.modules}/webservices-extra-xmlsec.jar${pathsep}${s1as.modules}/webservices.security.jar + +ts.run.classpath.ri=${javaee.classes.ri}${pathsep}${ts.home}/lib/tsharness.jar${pathsep}${ts.home}/lib/cts.jar${pathsep}${ts.home}/lib/glassfishporting.jar + +ts.run.classpath=${pathsep}${javaee.classes}${pathsep}${ts.home}/lib/tsharness.jar${pathsep}${ts.home}/lib/cts.jar${pathsep}${ts.home}/lib/glassfishporting.jar${pathsep}${jdbc.db.classes} + +ts.harness.classpath=${ts.home}/lib/jaxb-api.jar${pathsep}${ts.home}/lib/jaxb-core.jar${pathsep}${ts.home}/lib/jaxb-impl.jar${pathsep}${ts.home}/lib/jaxb-xjc.jar${pathsep}${ts.home}/lib/tsharness.jar${pathsep}${ts.home}/lib/cts.jar${pathsep}${ts.home}/lib/glassfishporting.jar${pathsep}${ts.home}/lib/sigtest.jar${pathsep}${ts.run.classpath}${pathsep}${ts.home}/lib/javatest.jar${pathsep}${ts.home}/lib/jdom-1.1.3.jar${pathsep}${ant.home}/lib/ant.jar${pathsep}${ri.modules}/admin-cli.jar + +#classpath used for building CTS tests only (DO NOT MODIFY) +ts.classpath=${ts.home}/lib/commons-lang3-3.3.2.jar${pathsep}${javaee.home.ri}/javadb/lib/derby.jar${pathsep}${ts.home}/lib/tsharness.jar${pathsep}${ts.home}/lib/cts.jar${pathsep}${ts.home}/lib/glassfishporting.jar${pathsep}${ts.home}/lib/sigtest.jar${pathsep}${ts.run.classpath}${pathsep}${ts.run.classpath.ri}${pathsep}${ts.home}/lib/javatest.jar${pathsep}${ts.home}/lib/jdom-1.1.3.jar${pathsep}${ant.home}/lib/ant.jar${pathsep}${ts.home}/lib/commons-httpclient-3.1.jar${pathsep}${ts.home}/lib/commons-logging-1.1.3.jar${pathsep}${ts.home}/lib/htmlunit-2.15.jar${pathsep}${ts.home}/lib/htmlunit-core-js-2.15.jar${pathsep}${ts.home}/lib/unboundid-ldapsdk.jar${pathsep}${ts.home}/lib/commons-codec-1.9.jar${pathsep}${ts.home}/lib/xml-apis-1.4.01.jar${pathsep}${ts.home}/lib/jaxb-api.jar +#classpath used for building cts.jar (DO NOT MODIFY) +ts.lib.classpath=${javaee.home.ri}/javadb/lib/derby.jar${pathsep}${ts.harness.classpath} + + +############################################################### +# @javaee.home.ri.classpathsuffix - The classpath suffix of +# the RI used in interop tests. Must contain the RI JDBC +# driver jars and the RMI interceptor classes. +############################################################### +javaee.home.ri.classpathsuffix=${javaee.home.ri}/lib/riinterceptors.jar${pathsep}${javaee.home.ri}/javadb/lib/derbyclient.jar + +############################################################### +# @s1as.classpathsuffix - The classpath suffix of +# the RI when being used as the app server under test. +############################################################### +s1as.classpathsuffix=${javaee.home}/lib/tsprovider.jar + +######################################################################## +## Common environment for both ts_unix and ts_win32 +# +# @command.testExecute - This command is used to execute any test +# clients which are not run inside an +# application client container. For example, +# any URL clients or standalone java clients +# would be executed with this command. Some +# test directories which make use of this command +# are servlet and jsp. +######################################################################## + +command.testExecute=com.sun.ts.lib.harness.ExecTSTestCmd \ + CLASSPATH=${ts.harness.classpath}${pathsep}${ts.home}/classes${pathsep}\ + ${JAVA_HOME}/../lib/tools.jar${pathsep}\ + ${ri.modules}/security-ee.jar${pathsep}\ + ${ts.home}/lib/commons-httpclient-3.1.jar${pathsep}\ + ${ts.home}/lib/commons-logging-1.1.3.jar${pathsep}\ + ${ts.home}/lib/commons-codec-1.9.jar${pathsep}\ + ${ts.home}/lib/cssparser-0.9.25.jar${pathsep}\ + ${ts.home}/lib/htmlunit-2.15.jar${pathsep}\ + ${ts.home}/lib/htmlunit-core-js-2.15.jar${pathsep}\ + ${ts.home}/lib/httpcore-4.4.9.jar${pathsep}\ + ${ts.home}/lib/httpclient-4.5.5.jar${pathsep}\ + ${ts.home}/lib/httpmime-4.5.5.jar${pathsep}\ + ${ts.home}/lib/commons-collections-3.2.1.jar${pathsep}\ + ${ts.home}/lib/commons-io-2.4.jar${pathsep}\ + ${ts.home}/lib/commons-lang3-3.3.2.jar${pathsep}\ + ${ts.home}/lib/jaxen-1.1.6.jar${pathsep}\ + ${ts.home}/lib/nekohtml-1.9.21.jar${pathsep}\ + ${ts.home}/lib/sac-1.3.jar${pathsep}\ + ${ts.home}/lib/saxpath.jar${pathsep}\ + ${ts.home}/lib/xercesImpl-2.11.0.jar${pathsep}\ + ${ts.home}/lib/xalan-2.7.2.jar${pathsep}\ + ${ts.home}/lib/serializer-2.7.2.jar${pathsep}\ + ${ts.home}/lib/xml-apis-1.4.01.jar${pathsep}\ + ${ts.home}/lib/unboundid-ldapsdk.jar${pathsep}\ + ${jdbc.db.classes} \ + DISPLAY=${ts.display} \ + HOME="${user.home}" \ + TMP=${TMP} \ + windir=${windir} \ + SYSTEMROOT=${SYSTEMROOT} \ + PATH="${javaee.home}/nativelib" \ + ${JAVA_HOME}/bin/java \ + ${JVMOPTS_RUNTESTCOMMAND} \ + -Xss2048k \ + -Dcts.tmp=$harness.temp.directory \ + -Djava.protocol.handler.pkgs=javax.net.ssl \ + -Djavax.net.ssl.keyStore=${bin.dir}/certificates/clientcert.jks \ + -Djavax.net.ssl.keyStorePassword=changeit \ + -Djavax.net.ssl.trustStore=${s1as.domain}/${sjsas.instance.config.dir}/cacerts.jks \ + -Dcom.sun.aas.installRoot=${javaee.home} \ + -Dlog.file.location=${log.file.location} \ + -Dservlet.is.jsr115.compatible=${servlet.is.jsr115.compatible} \ + -Dprovider.configuration.file=${provider.configuration.file} \ + -Djava.security.properties=${s1as.domain}/${sjsas.instance.config.dir}/ts.java.security \ + -Dlogical.hostname.servlet=${logical.hostname.servlet} \ + -Dcom.sun.aas.configRoot=${javaee.home}/config \ + -Ddeliverable.class=${deliverable.class} $testExecuteClass $testExecuteArgs + +######################################################################## +## Appclient Command line for the App Server under test +## Licensees modify this command +# +# @command.testExecuteAppClient - This command is used to execute +# the application client container for +# the vendor implementation (vi). +# Please note that $TS_HOME/classes +# should not be in the classpath for +# this command since all client classes +# are self contained in the application +# archive (or referenced via the manifest). +######################################################################## +command.testExecuteAppClient= \ + com.sun.ts.lib.harness.ExecTSTestCmd DISPLAY=${ts.display} HOME="${user.home}" \ + LD_LIBRARY_PATH=${javaee.home}/lib \ + TMP=${TMP} \ + windir=${windir} \ + SYSTEMROOT=${SYSTEMROOT} \ + PATH="${javaee.home}/nativelib" \ + APPCPATH=${ts.home}/lib/tsharness.jar${pathsep}${ts.home}/lib/cts.jar${pathsep}${ts.home}/lib/glassfishporting.jar${pathsep}${javaee.home}/lib/jpa_alternate_provider.jar${pathsep}${ts.home}/lib/tssv.jar${pathsep}${javaee.home}/modules/weld-osgi-bundle.jar${pathsep}${javaee.home}/modules/jakarta.enterprise.cdi-api.jar \ + TZ=${tz} \ + ${JAVA_HOME}/bin/java \ + ${JVMOPTS_RUNTESTCOMMAND} \ + -Djava.system.class.loader=org.glassfish.appclient.client.acc.agent.ACCAgentClassLoader \ + -Djava.security.policy=${javaee.home}/lib/appclient/client.policy \ + -Dcts.tmp=$harness.temp.directory \ + -Djava.security.auth.login.config=${javaee.home}/lib/appclient/appclientlogin.conf \ + -Djava.protocol.handler.pkgs=javax.net.ssl \ + -Dcom.sun.enterprise.home=${javaee.home} \ + -Djavax.net.ssl.keyStore=${bin.dir}/certificates/clientcert.jks \ + -Djavax.net.ssl.keyStorePassword=changeit \ + -Dcom.sun.aas.installRoot=${javaee.home} \ + -Dcom.sun.aas.imqLib=${javaee.home}/../mq/lib \ + -Djavax.net.ssl.trustStore=${s1as.domain}/${sjsas.instance.config.dir}/cacerts.jks \ + -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl \ + -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl \ + -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl \ + -Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.SAXParser \ + -Dorg.xml.sax.parser=org.xml.sax.helpers.XMLReaderAdapter \ + -Doracle.jdbc.J2EE13Compliant=true \ + -Doracle.jdbc.mapDateToTimestamp \ + -Dstartup.login=false \ + -Dauth.gui=false \ + -Dlog.file.location=${log.file.location} \ + -Dri.log.file.location=${ri.log.file.location} \ + -DwebServerHost.2=${webServerHost.2} \ + -DwebServerPort.2=${webServerPort.2} \ + -Dprovider.configuration.file=${provider.configuration.file} \ + -Djava.security.properties=${s1as.domain}/${sjsas.instance.config.dir}/ts.java.security \ + -Dcom.sun.aas.configRoot=${javaee.home}/config \ + -Ddeliverable.class=${deliverable.class} -javaagent:${javaee.home}/lib/gf-client.jar=arg=-configxml,arg=${ts.home}/tmp/appclient/s1as.sun-acc.xml,client=jar=$testExecuteArgs + +#-Ddeliverable.class=${deliverable.class} -javaagent:${javaee.home}/modules/gf-client.jar=arg=-configxml,arg=${s1as.domain}/config/sun-acc.xml,client=jar=$testExecuteArgs +#-Xbootclasspath/a:${pathsep}${ts.home}/lib/tsharness.jar${pathsep}${ts.home}/lib/cts.jar + +######################################################################## +# @command.testExecuteEjbEmbed - Command line for standalone embedded EJB tests. +# Its classpath must include all the APIs required +# by EJB Lite, vendor's implementation classes and +# configuration for embeddable EJB container, and +# JDBC driver classes (e.g., ${db2.classes}, +# ${oracle.classes}, etc). +# +# Current test archives are dynamically added to +# the classpath by the harness, and need not be +# included in the classpath here. +# +# Most test directories contain one test archive, +# all named ejbembed_vehicle_ejb.jar. If certain +# tooling and pre-processing of test archives are +# needed, the resulting test archives must remain +# the same name and location. +# +# ${ts.home}/classes must not be in the classpath +# since all the required test classes are packaged +# in the test archive (ejbembed_vehicle_ejb.jar). In +# addition, including ${ts.home}/classes in the +# classpath would incorrectly expose all EJBs in +# cts to EJB container bootstrapping process. +######################################################################## +command.testExecuteEjbEmbed=com.sun.ts.lib.harness.ExecTSTestCmd \ + CLASSPATH=${ts.home}/lib/tsharness.jar${pathsep}\ + ${ts.home}/lib/cts.jar${pathsep}\ + ${ts.home}/lib/glassfishporting.jar${pathsep}\ + ${ts.home}/lib/commons-lang3-3.3.2.jar${pathsep}\ + ${jdbc.db.classes}${pathsep}\ + ${javaee.home}/lib/embedded/glassfish-embedded-static-shell.jar \ + DISPLAY=${ts.display} \ + HOME="${user.home}" \ + TMP=${TMP} \ + windir=${windir} \ + SYSTEMROOT=${SYSTEMROOT} \ + ${JAVA_HOME}/bin/java \ + ${JVMOPTS_RUNTESTCOMMAND} \ + -Dcts.tmp=$harness.temp.directory \ + -Djava.util.logging.config.file=${TS_HOME}/bin/client-logging.properties \ + -Dtest.ejb.stateful.timeout.wait.seconds=${test.ejb.stateful.timeout.wait.seconds} \ + -Ddeliverable.class=${deliverable.class} $testExecuteClass $testExecuteArgs + + +######################################################################## +## Appclient Command line for the Java EE RI (Do not modify) +######################################################################## +command.testExecuteAppClient2= \ + com.sun.ts.lib.harness.ExecTSTestCmd DISPLAY=${ts.display} HOME="${user.home}" \ + LD_LIBRARY_PATH=${javaee.home.ri}/lib \ + TMP=${TMP} \ + windir=${windir} \ + SYSTEMROOT=${SYSTEMROOT} \ + PATH="${javaee.home.ri}/nativelib" \ + APPCPATH=${ts.home}/lib/tsharness.jar${pathsep}${ts.home}/lib/cts.jar${pathsep}${ts.home}/lib/glassfishporting.jar${pathsep}${ts.home}/lib/riinterceptors.jar \ + TZ=${tz} \ + ${RI_JAVA_HOME}/bin/java \ + ${JVMOPTS_RUNTESTCOMMAND} \ + -Djava.system.class.loader=org.glassfish.appclient.client.acc.agent.ACCAgentClassLoader \ + -Djava.security.policy=${javaee.home.ri}/lib/appclient/client.policy \ + -Dcts.tmp=$harness.temp.directory \ + -Djava.security.auth.login.config=${javaee.home.ri}/lib/appclient/appclientlogin.conf \ + -Djava.protocol.handler.pkgs=javax.net.ssl \ + -Dcom.sun.enterprise.home=${javaee.home.ri} \ + -Djavax.net.ssl.keyStore=${bin.dir}/certificates/clientcert.jks \ + -Djavax.net.ssl.keyStorePassword=changeit \ + -Dcom.sun.aas.installRoot=${javaee.home.ri} \ + -Dcom.sun.aas.imqLib=${javaee.home.ri}/../mq/lib \ + -Djavax.net.ssl.trustStore=${ri.domain}/config/cacerts.jks \ + -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl \ + -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl \ + -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl \ + -Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.SAXParser \ + -Dorg.xml.sax.parser=org.xml.sax.helpers.XMLReaderAdapter \ + -Doracle.jdbc.J2EE13Compliant=true \ + -Doracle.jdbc.mapDateToTimestamp \ + -Dstartup.login=false \ + -Dauth.gui=false \ + -Dlog.file.location=${log.file.location} \ + -Dri.log.file.location=${ri.log.file.location} \ + -DwebServerHost.2=${webServerHost.2} \ + -DwebServerPort.2=${webServerPort.2} \ + -Dprovider.configuration.file=${provider.configuration.file} \ + -Djava.security.properties=${s1as.domain}/${sjsas.instance.config.dir}/ts.java.security \ + -Dcom.sun.aas.configRoot=${javaee.home.ri}/config \ + -Ddeliverable.class=${deliverable.class} -javaagent:${javaee.home.ri}/lib/gf-client.jar=arg=-configxml,arg=${ts.home}/tmp/appclient/ri.sun-acc.xml,client=jar=$testExecuteArgs + +######################################################################## +## Command line for standalone clients running against the +## Java EE RI (Do not modify) +######################################################################## +command.testExecute2=com.sun.ts.lib.harness.ExecTSTestCmd \ + CLASSPATH=${ts.harness.classpath}${pathsep}${ts.home}/classes${pathsep}\ + ${ts.home}/lib/commons-httpclient-3.1.jar${pathsep}\ + ${ts.home}/lib/commons-logging-1.1.3.jar${pathsep}\ + ${ts.home}/lib/commons-codec-1.9.jar${pathsep}\ + ${ts.home}/lib/cssparser-0.9.25.jar${pathsep}\ + ${ts.home}/lib/htmlunit-2.15.jar${pathsep}\ + ${ts.home}/lib/htmlunit-core-js-2.15.jar${pathsep}\ + ${ts.home}/lib/httpcore-4.4.9.jar${pathsep}\ + ${ts.home}/lib/httpclient-4.5.5.jar${pathsep}\ + ${ts.home}/lib/httpmime-4.5.5.jar${pathsep}\ + ${ts.home}/lib/commons-collections-3.2.1.jar${pathsep}\ + ${ts.home}/lib/commons-io-2.4.jar${pathsep}\ + ${ts.home}/lib/commons-lang3-3.3.2.jar${pathsep}\ + ${ts.home}/lib/jaxen-1.1.6.jar${pathsep}\ + ${ts.home}/lib/nekohtml-1.9.21.jar${pathsep}\ + ${ts.home}/lib/sac-1.3.jar${pathsep}\ + ${ts.home}/lib/saxpath.jar${pathsep}\ + ${ts.home}/lib/xercesImpl-2.11.0.jar${pathsep}\ + ${ts.home}/lib/xalan-2.7.2.jar${pathsep}\ + ${ts.home}/lib/serializer-2.7.2.jar${pathsep}\ + ${ts.home}/lib/xml-apis-1.4.01.jar \ + ${ts.home}/lib/unboundid-ldapsdk.jar\ + DISPLAY=${ts.display} \ + HOME="${user.home}" \ + TMP=${TMP} \ + windir=${windir} \ + SYSTEMROOT=${SYSTEMROOT} \ + PATH="${javaee.home}/nativelib" \ + ${RI_JAVA_HOME}/bin/java \ + ${JVMOPTS_RUNTESTCOMMAND} \ + -Dcts.tmp=$harness.temp.directory \ + -Djava.protocol.handler.pkgs=javax.net.ssl \ + -Djavax.net.ssl.keyStore=${bin.dir}/certificates/clientcert.jks \ + -Djavax.net.ssl.keyStorePassword=changeit \ + -Djavax.net.ssl.trustStore=${ri.domain}/${ri.instance.config.dir}/cacerts.jks \ + -Ddeliverable.class=${deliverable.class} $testExecuteClass $testExecuteArgs + +######################################################################### +## Environment for ts_unix +## 3 test execution commands inherit from common environment +## defined above: testExecuteAppClient2, testExecuteAppClient, and +## testExecute. If you need to override them, uncomment them in the +## following section. +######################################################################### +env.ts_unix.menu=true +##env.ts_unix.command.testExecute= +##env.ts_unix.command.testExecuteAppClient= +##env.ts_unix.command.testExecuteAppClient2= + + +######################################################################## +## Environment for ts_win32 +## 3 test execution commands inherit from common environment +## defined above: testExecuteAppClient2, testExecuteAppClient, and +## testExecute. If you need to override them, uncomment them in the +## following section. +######################################################################## +env.ts_win32.menu=true +##env.ts_win32.command.testExecute= +##env.ts_win32.command.testExecuteAppClient= +##env.ts_win32.command.testExecuteAppClient2= + +######################################################################### +# @jimage.dir: This property specifies the directory where Java 11+ +# modules will be expanded by the jimage tool for use +# in sigTestClasspath +# @sigTestClasspath: This property must be set when running signature +# tests. This property should be set to a list of +# jar files and/or directories which contain your +# Java EE and Java SE classes. Paths must be +# separated by the appropriate path separator +# (';' windows, ':' Unixes). +######################################################################### + +jimage.dir=${ts.home}/tmp/jdk-bundles + +sigTestClasspath=${s1as.modules}/glassfish-corba-omgapi.jar${pathsep}${s1as.modules}/glassfish-corba-orb.jar${pathsep}${s1as.modules}/jakarta.enterprise.cdi-api.jar${pathsep}${s1as.modules}/jakarta.json-api.jar${pathsep}${s1as.modules}/jakarta.json.bind-api.jar${pathsep}${s1as.modules}/jakarta.batch-api.jar${pathsep}${s1as.modules}/jakarta.interceptor-api.jar${pathsep}${s1as.modules}/stax2-api.jar${pathsep}${s1as.modules}/jakarta.enterprise.concurrent-api.jar${pathsep}${s1as.modules}/jakarta.websocket-api.jar${pathsep}${s1as.modules}/jakarta.websocket-client-api.jar${pathsep}${s1as.modules}/jakarta.jms-api.jar${pathsep}${s1as.modules}/jakarta.faces.jar${pathsep}${s1as.modules}/jakarta.validation-api.jar${pathsep}${s1as.modules}/jakarta.annotation-api.jar${pathsep}${s1as.modules}/jakarta.xml.bind-api.jar${pathsep}${s1as.modules}/webservices-api-osgi.jar${pathsep}${pathsep}${s1as.modules}/jakarta.ws.rs-api.jar${pathsep}${s1as.modules}/weld-osgi-bundle.jar${pathsep}${s1as.modules}/jakarta.ejb-api.jar${pathsep}${s1as.modules}/jakarta.mail-api.jar${pathsep}${s1as.modules}/jakarta.persistence-api.jar${pathsep}${s1as.modules}/jakarta.resource-api.jar${pathsep}${s1as.modules}/jakarta.authorization-api.jar${pathsep}${s1as.modules}/jakarta.authentication-api.jar${pathsep}${s1as.modules}/jakarta.servlet-api.jar${pathsep}${s1as.modules}/jakarta.inject-api.jar${pathsep}${s1as.modules}/jakarta.el-api.jar${pathsep}${s1as.modules}/jakarta.servlet.jsp-api.jar${pathsep}${s1as.modules}/jakarta.servlet.jsp.jstl-api.jar${pathsep}${jtaJarClasspath}${pathsep}${s1as.modules}/jakarta.security.enterprise-api.jar${pathsep}${s1as.modules}/jakarta.activation-api.jar${pathsep}${jimage.dir}/java.base${pathsep}${jimage.dir}/java.rmi${pathsep}${jimage.dir}/java.sql${pathsep}${jimage.dir}/java.naming + +######################################################################## +## This property is used to support the odd side case when we have an +## optional technology package that is used but should not be tested. +## +## This property (i.e. optional.tech.packages.to.ignore) must be a comma +## separated list of packages that are NOT to be validated/tested when +## during the sigtest utilities validation of Optional Technologies. +## Example Usage: +## optional.tech.packages.to.ignore=javax.foo.pkg1,javax.bar.pkg2,com.blah.foo.pkg3 +## +## Additional notes: +## - always ignore the optional JAXB packages: +## optional.tech.packages.to.ignore=jakarta.xml.bind +## +######################################################################### +optional.tech.packages.to.ignore=jakarta.xml.bind + +######################################################################## +## These properties are used by the harness. "harness.log.port" +## specifies the port that server components use to send logging +## output back to JavaTest. If the default port # is not available +## on the machine running JavaTest, then you can set it here. +## +# +# @harness.temp.directory directory location used by the +# harness to store temporary files +# +# @harness.log.port the port the harness listens on for log mesages +# from remote clients +# +# @harness.log.traceflag used to turn on/off verbose debugging output +# for the tests. +# +# @harness.executeMode used to run the harness in the following modes +# of execution: +# 0 - default (deploy, run, undeploy) +# 1 - deploy only +# 2 - run only +# 3 - undeploy only +# 4 - deploy and run only +# +# @harness.socket.retry.count - denotes the number of time we should +# attempt to create a server socket when intilizing a test +# client. The socket is used for logging purposes. +# +# @harness.log.delayseconds Number of seconds to delay to allow +# reporting from remote clients to finish. +# +# @harness.maxoutputsize Number of characters that the harness will use +# for a test's output. +######################################################################## +harness.temp.directory=${ts.home}/tmp +harness.log.port=2000 +harness.log.traceflag=true +harness.executeMode=0 +harness.socket.retry.count=10 +harness.log.delayseconds=1 +harness.maxoutputsize=200000 + + +######################################################################### +# @wsdlRepository1 Location to publish final wsdl files when using +# file URL publishing for Vendor Java EE implementation. +# @wsdlRepository2 Location to publish final wsdl files when using +# file URL publishing for Sun RI. +######################################################################### +wsdlRepository1=${harness.temp.directory}/wsdlRepository1 +wsdlRepository2=${harness.temp.directory}/wsdlRepository2 + +####################################################################### +# @deployment_host.1 name of machine running the JSR 88 deployment +# process for the vendor's Java EE implementation. +# @deployment_host.2 name of machine running the JSR 88 deployment +# process for the Java EE RI. +# @deployment_port.1 deployment port (if applicable) for the vendor's +# Java EE implementation. +# @deployment_port.2 deployment port (if applicable) for the +# Java EE RI. +####################################################################### +deployment_host.1=${orb.host} +deployment_host.2=${orb.host.ri} +deployment_port.1=${impl.vi.port} +deployment_port.2=${impl.ri.port} + +#################################################################### +# Implementation Property Settings for Vendor and RI. These properties +# are used when either porting.ts.deploy.class.1 or porting.ts.deploy.class.2 +# are set to com.sun.ts.lib.implementation.sun.javaee.glassfish.AutoDeployment. +# Note: They are are also used when using the "ant deploy" and "ant undeploy" +# targets outside of running tests. +# +# The CTS provides the glassfish implementation out of the box. +# +# Here are the common properties that need to be defined for the common +# implementation functionality: +# +# @impl.vi This property must be set to the Vendor implementation +# under test. +# @impl.vi.deploy.dir This property must be set to the deploy directory for +# the Vendor implementation. +# @impl.vi.host This property must be set to the admin host where +# the Vendor implementation is running. +# @impl.vi.port This property must be set to the admin port where +# the Vendor implementation is running. +# @impl.ri This property must be set to the RI implementation +# under test. +# @impl.ri.deploy.dir This property must be set to the deploy directory for +# the RI implementation. +# @impl.ri.host This property must be set to the admin host where +# the RI implementation is running. +# @impl.ri.port This property must be set to the admin port where +# the RI implementation is running. +# +# @impl.deploy.timeout.multiplier The time it will wait for deployment to +# succeed or fail +#################################################################### +impl.vi=glassfish +impl.vi.deploy.dir=${s1as.domain}/autodeploy +impl.vi.host=${s1as.admin.host} +impl.vi.port=${s1as.admin.port} + +impl.ri=glassfish +impl.ri.deploy.dir=${ri.domain}/autodeploy +impl.ri.host=${ri.admin.host} +impl.ri.port=${ri.admin.port} + +impl.deploy.timeout.multiplier=240 + + +############################################################### +## These properties are implementations of the pre-1.4 Deployment +## porting interface. The impls defined below use those APIs. +# +# @porting.ts.deploy.class.1 This property must point to an implementation +# of com.sun.ts.lib.porting.TSDeploymentInterface. The default +# value for this property points to an impl that deploys via copying/deleting +# to/from the RI autodeploy directory. More details about setting +# porting.ts.deploy.class.1: +# +# 1. Set this property to deploy/undeploy to/from your impl in +# a custom way. In the case of the RI, it would be set to the following. +# This is the default setting for CTS 8. +# +# porting.ts.deploy.class.1=com.sun.ts.lib.implementation.sun.javaee.glassfish.AutoDeployment +# +# 2. Note that Jakarta Deployment is removed, so do not use either of the following classes: +# com.sun.ts.lib.deliverable.cts.deploy.StandardDeployment14 +# com.sun.ts.lib.porting.TSDeploymentInterface2 +# com.sun.ts.lib.implementation.sun.javaee.SunRIDeployment2 +# +# +# @porting.ts.deploy.class.2 This property must point to an implementation +# of com.sun.ts.lib.porting.TSDeploymentInterface. +# The default value for this property points to an impl that deploys via copying/deleting +# to/from the RI autodeploy directory. This should be left unchanged... +# +# porting.ts.deploy.class.2=com.sun.ts.lib.implementation.sun.javaee.glassfish.AutoDeployment +# +# +############################################################### +porting.ts.deploy.class.1=com.sun.ts.lib.implementation.sun.javaee.glassfish.AutoDeployment +porting.ts.deploy.class.2=com.sun.ts.lib.implementation.sun.javaee.glassfish.AutoDeploymentSeparateVM + +######################################################################## +# @deploy.delay.in.minutes is no longer used, it was for pruned Jakarta Deployment +######################################################################## + +######################################################################## +## Following are no longer used, were settings for pruned Jakarta Deployment +######################################################################## +#deployManagerJarFile.1 +#deployManageruri.1 +#deployManageruname.1 +#deployManagerpasswd.1 + +######################################################################## +## Following are no longer used, were settings for pruned Jakarta Deployment +######################################################################## +#deployManagerJarFile.2 +#deployManageruri.2 +#deployManageruname.2 +#deployManagerpasswd.2 +# +# @porting.ts.deploy2.class.1 +# @porting.ts.deploy2.class.2 +# porting.ts.deploy2.class.1=com.sun.ts.lib.implementation.sun.javaee.SunRIDeployment2 +# porting.ts.deploy2.class.2=com.sun.ts.lib.implementation.sun.javaee.SunRIDeployment2 + + +############################################################### +## These properties must be set to tell the Test harness the +## class names of your porting class implementations. By default +## both property sets below point to Sun RI specific classes. To +## run interoperability tests, the ".2" set of properties should +## always point to Sun RI classes. The ".1" set should point to +## implementations that work in your specific Java EE environment. +# +# @porting.ts.login.class.1 VI of +# com.sun.ts.lib.porting.TSLoginContextInterface +# @porting.ts.url.class.1 VI of +# com.sun.ts.lib.porting.TSURLInterface +# @porting.ts.jms.class.1 VI of +# com.sun.ts.lib.porting.TSJMSAdminInterface +# @porting.ts.HttpsURLConnection.class.1 VI of +# com.sun.ts.lib.porting.TSHttpsURLConnectionInterface +# @porting.ts.login.class.2 RI of +# com.sun.ts.lib.porting.TSLoginContextInterface +# @porting.ts.url.class.2 RI of +# com.sun.ts.lib.porting.TSURLInterface +# @porting.ts.jms.class.2 RI of +# com.sun.ts.lib.porting.TSJMSAdminInterface +# @porting.ts.HttpsURLConnection.class.2 RI of +# com.sun.ts.lib.porting.TSHttpsURLConnectionInterface +############################################################### +porting.ts.login.class.1=com.sun.ts.lib.implementation.sun.javaee.GlassFishLoginContext +porting.ts.url.class.1=com.sun.ts.lib.implementation.sun.common.SunRIURL +porting.ts.jms.class.1=com.sun.ts.lib.implementation.sun.javaee.SunRIJMSAdmin +porting.ts.HttpsURLConnection.class.1=com.sun.ts.lib.implementation.sun.javaee.SunRIHttpsURLConnection + +##Porting class names for Sun RI Java EE Implementation #2 (must be Sun's RI) +porting.ts.login.class.2=com.sun.ts.lib.implementation.sun.javaee.GlassFishLoginContext +porting.ts.url.class.2=com.sun.ts.lib.implementation.sun.common.SunRIURL +porting.ts.jms.class.2=com.sun.ts.lib.implementation.sun.javaee.SunRIJMSAdmin +porting.ts.HttpsURLConnection.class.2=com.sun.ts.lib.implementation.sun.javaee.SunRIHttpsURLConnection + +############################################################## +# @namingServiceHost1 Naming Service host name for the +# Vendor's Implementation (VI) +# @namingServicePort1 Naming Service port for the VI +# @namingServiceHost2 Naming Service host name for the +# Reference Implementation (RI) +# @ namingServicePort2 Naming Service port for the RI +############################################################## +namingServiceHost1=${orb.host} +namingServicePort1=${orb.port} +namingServiceHost2=${orb.host.ri} +namingServicePort2=${orb.port.ri} + +############################################################## +# @certLoginUserAlias User alias for certificate based login. +# This property is used in mutual authentication to pickup the +# certificate based on the user alias. +############################################################## +certLoginUserAlias=cts + +##################################################################### +## The following properties must be set prior to running the Servlet +## or JSP API tests and interoperability tests. +## +## These properties must specify the host and port of the web server, +## in which the servlets and JSPs are deployed. +# +# @webServerHost hostname for the Vendor's Java EE Web Server +# @webServerPort port number of the Vendor's Java EE Web Server +# @webServerHost.2 hostname for the Java EE RI Web Server +# @webServerPort.2 port number of the Java EE RI Web Server +# @ServletClientThreads The ServletClientThreads property configures +# the number of threads used by the client for +# the SingleThreadModel servlet test. If the +# container implementation supports pooling of +# SingleThreadModel servlets, set the value of +# ServletClientThreads to twice the value of +# the default servlet instance pool size. If +# the container implementation only maintains +# a single instance of a SingleTheadModel +# servlet, leave the default value of 2. +##################################################################### +webServerHost=${orb.host} +webServerPort=8080 +webServerHost.2=${orb.host.ri} +webServerPort.2=8181 +ServletClientThreads=2 + +#################################################################### +# @EJBServer1TxInteropEnabled Transaction interoperability settings +# for Vendor Java EE EJB Server +# @EJBServer2TxInteropEnabled Transaction interoperability settings +# for Java EE RI EJB Server +#################################################################### +EJBServer1TxInteropEnabled=true +EJBServer2TxInteropEnabled=true + +############################################################### +## These properties are used for the Connector specific tests. +## +## You must be able to deploy the following resource adapters +## on your Java EE server. +############################################################### + +## JNDI name bindings. You should not change these. The TSDeploymentInterface +## will pass these values as a properties object. See the SunRIDeployment.java +## file for usage patterns. +whitebox-tx=java:comp/env/eis/whitebox-tx +whitebox-notx=java:comp/env/eis/whitebox-notx +whitebox-xa=java:comp/env/eis/whitebox-xa +whitebox-tx-param=java:comp/env/eis/whitebox-tx-param +whitebox-notx-param=java:comp/env/eis/whitebox-notx-param +whitebox-xa-param=java:comp/env/eis/whitebox-xa-param +whitebox-anno_no_md=java:comp/env/eis/whitebox-anno_no_md +whitebox-ibanno_no_md=java:comp/env/eis/whitebox-ibanno_no_md +whitebox-mixedmode=java:comp/env/eis/whitebox-mixedmode +whitebox-multianno=java:comp/env/eis/whitebox-multianno +whitebox-mdcomplete=java:comp/env/eis/whitebox-mdcomplete +whitebox-permissiondd=java:comp/env/eis/whitebox-permissiondd + +## Embedded resource adapter property +whitebox-embed=java:comp/env/eis/ejb_Deployment_whitebox-tx.rar + +whitebox-embed-xa="__SYSTEM/resource/ejb_Tsr#whitebox-xa#com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory" +tsrJndiName=java:comp/TransactionSynchronizationRegistry +tsrHomeJndiName="java:global/ejb_Tsr/ejb_Tsr_ejb/Tsr" + +## JNDI name bindings for JDBC Connector. +JDBCwhitebox-tx=java:comp/env/eis/JDBCwhitebox-tx +JDBCwhitebox-notx=java:comp/env/eis/JDBCwhitebox-notx +JDBCwhitebox-xa=java:comp/env/eis/JDBCwhitebox-xa +JDBCwhitebox-tx-param=java:comp/env/eis/JDBCwhitebox-tx-param +JDBCwhitebox-notx-param=java:comp/env/eis/JDBCwhitebox-notx-param +JDBCwhitebox-xa-param=java:comp/env/eis/JDBCwhitebox-xa-param + +######################################################################### +## Resource adapter configuration values. You must modify these values +## to plug your JDBC driver into the TS JDBCwhitebox resource adapter. +## +## When you run the XA tests (src/com/sun/ts/tests/xa), you must +## configure this resource adapter to use a database. +## +# @xa.properties: These are the properties required by the XA driver. The +# managed connection factory will set these properties via +# reflection on the class specified by the +# xa.xadatasource.class property. +# +# Note: The xa.properties value is the set of properties that will be set on +# your XA JDBC driver (the class denoted by the xa.xadatasource.class property). +# See section 9.4.1 of the JDBC 3.0 specification for more details. +# +# When specifying the xa.properties property please escape the appropriate +# characters. The xa.properties value needs to be treated as a single property +# even though it is made up of many properties. The properties need to be +# separated by :'s and the names and values to be separated by ='s. +# We also need any values that contain colons or equals that do not +# need to be interrpretted to be inside single quotes. Anything in +# single quotes will be treated as a string literal. +# +# For example: The following xa.properties property: +# +# xa.properties=user=admin:password=some-password:DatabaseName='jdbc:pointbase:server://localhost:9092/cts,new' +# +# Would result in the following setters being called on the supplied XA JDBC driver denoted +# by the xa.xadatasource.class property. +# +# XADataSource.setUser("admin"); +# XADataSource.setPassword("some-password"); +# XADataSource.setDatabaseName("jdbc:pointbase:server://localhost:9092/cts,new"); +# +# Please map the property xa.properties to the property name XAProps and map the +# xa.xadatasource.class property to the property name XADataSourceName. This will +# ensure the appropriate setters will be called to make these properties +# available to the managed connection factory. See section 17.4.2 of the Connector +# specification version 1.5. +# +# @xa.xadatasource.class: The implementation of the XADataSource interface. +# This class is your XA JDBC driver. +# Please note: this class and any dependent classes +# must be accessible by the CTS libraries in the app +# server's extension directory. +# +# @connector_connectionURL: The URL for your JDBC driver. Should be the +# same as the one used for the rest of the TS. +# +######################################################################### + +### Cloudscape/Derby properties for XA +xa.properties="user\\\=${derbyEmbedded.user}\\\:password\\\=${derbyEmbedded.passwd}\\\:DatabaseName\\\=${derbyEmbedded.dbName}" +xa.xadatasource.class=org.apache.derby.jdbc.EmbeddedXADataSource +connector_connectionURL="jdbc\\:derby\\:${derbyEmbedded.dbName}\\;create\\=true" + +######################################################################### +## The following properties must be set before running any security +## related tests. The properties user, password, authuser, authpassword, +## and nobodyuser must be set. +## +## The value for user, password, authuser, and authpassword need to be set +## exactly as they are set in the container/server. +# +# @user User defined to exercise rolemapping feature +# @password Associated password for the user +# @authuser User defined to exercise rolemapping feature +# @authpassword Associated password for the authuser +# @user_vi Username for the vendor implementation used in +# interop tests +# @password_vi Associated password for the VI user +# @user_ri Username for the reference implementation used in +# interop tests +# @password_ri Associated password for the RI user +# @nobodyuser This value must be the same value returned by a call to +# getCallerPrincipal().getName() from the ejb-tier when +# an unauthenticated caller in the web tier invokes an +# ejb method. +######################################################################### +user=j2ee +password=j2ee +authuser=javajoe +authpassword=javajoe +user_vi=j2ee_vi +password_vi=j2ee_vi +user_ri=j2ee_ri +password_ri=j2ee_ri +nobodyuser=guest + +############################################################### +# @securedWebServicePort must be set to run secbasicssl and +# csiv2 tests. Set this property with your application +# server's secured webservice port. +# @securedWebServicePort.2 points to the secured webservice +# port in Sun's Reference Implementation(RI). +############################################################### +securedWebServicePort=1044 +securedWebServicePort.2=1045 + +############################################################################### +# @client.cert.test.jdk.tls.client.protocols JDK 11 in TLSv1.3 does not support +# Post-Handshake Authentication, so TLSv1.2 must be used +# for client-cert authentication to work. +############################################################################### +client.cert.test.jdk.tls.client.protocols=TLSv1.2 + +############################################################### +# @login This property must be set to run appclient security +# tests +############################################################### +login=default + +################################################################################ +##These properties are needed for jms tests. +# +# @jms_timeout - this is the amount of time in milliseconds that synchronous +# receives will wait for a message +############################################################################### +jms_timeout=10000 + +######################################################################### + +############################################################################### +## These properties are needed for the EJB timer tests. +# +# @ejb_timeout - this is the amount of time in milliseconds that duration will +# be set for an ejbtimeout callback method +# +# @ejb_wait - this is the amount of time in milliseconds that the client will +# wait for ejbtimeout callback method results +############################################################################## +ejb_timeout=30000 +ejb_wait=60000 + +############################################################################### +## This property is needed for ejb30 stateful timeout tests. +# @test.ejb.stateful.timeout.wait.seconds - the minimum amount of time in seconds +# the test client waits before verifying the status of the target stateful +# bean. Its value must be an integer number. Its default value in ts.jte +# file is 480 seconds. It may be set to a smaller number (e.g., 240 seconds) +# to speed up testing, depending on the stateful timeout implementation +# strategy in the target server. +# +# For these stateful timeout tests, the property javatest.timeout.factor +# must be set to a value such that the JavaTest harness does not timeout +# before the test completes. Usually setting javatest.timeout.factor to +# 2.0 or greater should suffice. +############################################################################### +test.ejb.stateful.timeout.wait.seconds=480 + +################################################################### +# @log.file.location This property is used by JACC tests to create +# and analyze provider logs. Specify the log directory in which +# your appserver generates logs. +################################################################### +log.file.location=${vi.log.file.location} + + +################################################################### +################################################################### +################################################################### +## PROPERTIES USERS WILL NOT HAVE TO SET LIVE BELOW +################################################################### +################################################################### +################################################################### + +## +## The directory seperator for the platform. User should not change +## this property. +## +dirsep=/ + +##build level +##1: compile only +##2: compile and build component archives (e.g., jar's, war's) +##3: compile and build component and application archives +##default is set to 3 +build.level=3 + +deliverable.class=com.sun.ts.lib.deliverable.cts.CTSDeliverable + +################################################################### +## Deliverables wanting ts.* packaging tasks to add extension list +## attributes to the manifest files must set this property to true. +################################################################### +create.manifest.extension.entries=true + +###################################################################### +## Deliverables must set this property to the name of the deliverable +## specific library jar file (iff create.manifest.extension.entries +## is set to true) +###################################################################### +tslib.name=cts + +############################################################### +## These properties are used by connector tests and are non configurable +## and must specify valid username,password to establish TSeis connection. +############################################################### +rauser1=cts1 +rapassword1=cts1 +rauser2=cts2 +rapassword2=cts2 + +############################################################### +## These properties are for JSTL +############################################################### +jstl.db.user=${user1} +jstl.db.password=${password1} + +############################################################### +## This command is only used when quickly checking any servlet +## or jsp related tests. The test clients will be run in +## the same JVM as JavaTest in this case. This mode can be +## enabled by passing "-Dsame.jvm=true" to the runclient or gui +## targets. NOTE: This option is only to be used for sanity +## checking and not when running CTS for compatibility. +############################################################### +command.testExecuteSameJVM=com.sun.ts.lib.harness.ExecuteTSTestSameJVMCmd \ + $testExecuteClass $testExecuteArgs + +############################################################### +## These properties are used for the JDBC specific tests, +## they do not need to be changed. +############################################################### +DriverManager=no +Driver=DriverOnlyUsedIfDriverManagerIsYes +db1=db1OnlyUsedIfDriverManagerIsYes +db2=db1OnlyUsedIfDriverManagerIsYes +ptable=ctstable1 +ftable=ctstable2 +cofSize=5 +cofTypeSize=5 +binarySize=24 +varbinarySize=48 +longvarbinarySize=50 + +ts_home=${ts.home} + +####################################################################### +## platform.mode is used by jpa tests to know whether to use +## the Java EE Programming Model for service and port access. +## platform.mode=jakartaEE Java EE Programming Model +###################################################################### +platform.mode=jakartaEE + +########################################################################### +# tools.jar should be set to the location of the tools.jar from the installed +# jdk +########################################################################### +tools.jar=/home/jenkins/agent/workspace/jakartaee-tck_master/modules/webservices-tools.jar:/home/jenkins/agent/workspace/jakartaee-tck_master/modules/webservices-api.jar + +########################################################################### +# various flags used by the generation tools +########################################################################### +wsgen.ant.classname= +wsgen.classpath=${javaee.classes}${pathsep}${tools.jar} +wsgen.verbose=true +wsgen.debug=false +wsimport.ant.classname= +wsimport.classpath=${javaee.classes}${pathsep}${tools.jar} +wsimport.verbose=true +wsimport.debug=false +wsimport.jvmargs= + +########################################################################### +# various flags used by Suns generation tools +# DO NOT EDIT +########################################################################### +ri.wsgen.ant.classname=com.sun.tools.ws.ant.WsGen +ri.wsgen.classpath=${javaee.classes.ri}${pathsep}${tools.jar} +ri.wsgen.verbose=true +ri.wsgen.debug=false +ri.wsimport.ant.classname=com.sun.tools.ws.ant.WsImport +ri.wsimport.classpath=${javaee.classes.ri}${pathsep}${tools.jar} +ri.wsimport.verbose=true +ri.wsimport.debug=false +ri.wsimport.jvmargs= + +################################# +## Packaging properties for DAOs +################################# +ts.dao.root=com/sun/ts/tests/common/dao + +ts.dao.classes.base=\ + ${ts.dao.root}/InvalidDAOSettingException.class, \ + ${ts.dao.root}/DAOException.class, \ + ${ts.dao.root}/DAO.class, \ + ${ts.dao.root}/DataSourceDAO*.class, \ + ${ts.dao.root}/DAOFactory.class, \ + ${ts.dao.root}/TSDAOFactory*.class, \ + ${ts.dao.root}/coffee/CoffeeBean.class, \ + ${ts.dao.root}/coffee/CoffeeDAO.class, \ + ${ts.dao.root}/coffee/TxCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/StringPKCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/LongPKCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/FloatPKCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/CompoundPK.class, \ + ${ts.dao.root}/coffee/variants/CompoundPKCoffeeDAO.class + +ts.dao.classes.impl=\ + ${ts.dao.root}/coffee/DataSourceCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/StringPKDSCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/LongPKDSCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/FloatPKDSCoffeeDAO.class, \ + ${ts.dao.root}/coffee/variants/CompoundPKDSCoffeeDAO.class + +ts.dao.classes.coffee.standard=\ + ${ts.dao.classes.base}, \ + ${ts.dao.classes.impl} + +ts.dao.classes.coffee.txaware=\ + ${ts.dao.classes.base}, \ + ${ts.dao.classes.impl} + +ts.dao.classes.coffee.variants=\ + ${ts.dao.classes.base}, \ + ${ts.dao.classes.impl} + +##################################### +## Packaging properties for Wrappers +##################################### + +ts.wrappers.ejb.root=com/sun/ts/tests/common/ejb/wrappers + +ts.wrappers.web.root=com/sun/ts/tests/common/web + +## Classes to package in ejb-jar for EJB Stateless wrapper +ts.wrappers.classes.stateless.ejb=\ + ${ts.wrappers.ejb.root}/StatelessWrapper.class + +## Classes to package in ejb-jar for EJB Stateful wrapper +ts.wrappers.classes.stateful.ejb=\ + ${ts.wrappers.ejb.root}/StatefulWrapper.class + +## Classes to package in ejb-jar for EJB BMP wrapper +ts.wrappers.classes.bmp.ejb=\ + ${ts.dao.classes.coffee.standard}, \ + ${ts.wrappers.ejb.root}/BMPWrapper.class + +## Classes to package in ejb-jar for EJB CMP 1.1 wrapper +ts.wrappers.classes.cmp11.ejb=${ts.wrappers.ejb.root}/CMP11Wrapper.class + +## Classes to package in ejb-jar for EJB CMP 2.0 wrapper +ts.wrappers.classes.cmp20.ejb=${ts.wrappers.ejb.root}/CMP20Wrapper.class + +## Classes to package in ejb-jar for EJB MDB wrapper +ts.wrappers.classes.mdb.ejb=\ + com/sun/ts/tests/jms/common/JmsUtil.class, \ + com/sun/ts/tests/jms/commonee/ParentMsgBean.class, \ + ${ts.wrappers.ejb.root}/MDBWrapper.class + +## Classes to package in client module for EJB MDB wrapper +ts.wrappers.classes.mdb.client=com/sun/ts/tests/jms/commonee/Client.class + +## Classes to package in ejb-jar for all EJB wrappers +ts.wrappers.classes.all.ejb=\ + ${ts.wrappers.classes.stateless.ejb}, \ + ${ts.wrappers.classes.stateful.ejb}, \ + ${ts.wrappers.classes.bmp.ejb}, \ + ${ts.wrappers.classes.cmp11.ejb}, \ + ${ts.wrappers.classes.cmp20.ejb}, \ + ${ts.wrappers.classes.mdb.ejb} + +## Classes to package in client module for all WEB wrappers +ts.wrappers.classes.web.client=\ + ${ts.wrappers.web.root}/WebServer.class + +## Classes to package in war for all WEB wrappers +ts.wrappers.classes.web.server=\ + ${ts.wrappers.web.root}/WebUtil.class, \ + ${ts.wrappers.web.root}/JSPBeanWrapper.class, \ + ${ts.wrappers.web.root}/ServletWrapper.class + +## Classes to package in client module for Servlet wrapper +ts.wrappers.classes.servlet.client=${ts.wrappers.classes.web.client} + +## Classes to package in war for Servlet wrappers +ts.wrappers.classes.servlet.server=\ + ${ts.wrappers.web.root}/WebUtil.class, \ + ${ts.wrappers.web.root}/ServletWrapper.class + +## Classes to package in client module for JSP wrapper +ts.wrappers.classes.jsp.client=${ts.wrappers.classes.web.client} + +## Classes to package in war for JSP wrappers +ts.wrappers.classes.jsp.server=\ + ${ts.wrappers.web.root}/WebUtil.class, \ + ${ts.wrappers.web.root}/JSPBeanWrapper.class + + +############################################################################### +## DO NOT MODIFY ANY PROPERTIES BELOW THIS LINE. +############################################################################### + +#classpath used by standard deployment server to deploy to the RI in a separate +#VM (DO NOT MODIFY) +ts.standard.deployment.server.classpath=${ant.jars}:${pathsep}${ts.run.classpath.ri}${pathsep}${ts.home}/lib/javatest.jar${pathsep}${ts.home}/lib/jdom-1.1.3.jar${pathsep}${ri.modules}/admin-cli.jar + +harness.deployment.server.port=2002 + +java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory +org.omg.CORBA.ORBClass=foo +undeploy_redeploy_apps=${UNDEPLOY_REDEPLOY_FLAG} + +############################################################################### +# The following properties are aliases for the old J2EE properties. These +# properties are now named javaee instead of j2ee and will eventually be phased +# out of the CTS. These props are necessary until the props are renamed +# through out all CTS. +############################################################################### +j2ee.home=${javaee.home} +j2ee.home.ri=${javaee.home.ri} + +#################################################################### +## This propertry is passed to any test +## that needs to programatically login from with the appclient +## container and propogate that login context to test code running +## within the EJB container. The value is a no-op. The fact that +## the test includes the property is sufficient to cause the +## EJBVehicleRunner to programatically login. To have a test +## include this property simply add it to the javatest props list +## of the test. +#################################################################### +secured.ejb.vehicle.client=true + +#################################################################### +# This property is used to point to the location of the +# implementation of VariableMapper. The value for sjsas 9.x is +# +# variable.mapper=org.glassfish.expressly.lang.VariableMapperImpl +# +#################################################################### +variable.mapper=org.glassfish.expressly.lang.VariableMapperImpl + +####################################################################### +# Endpoint API test +# +# Port info is obtained dynamically for Endpoint API test. +# Uncomment port range min/max if you want to specify port range +# for Endpoint publish test. +# Server endpoints will be published on ports within this range. +# If you do not want to dynamically obtain the port but wish to publish +# to a fixed static port than make the values below both equal to the +# specific port. +####################################################################### +port.range.min=1025 +port.range.max=10000 + +################################################################ +# @http.server.supports.endpoint.publish +# Does HTTP server-side support endpoint publish API's. +# @http.server.supports.endpoint.publish.2 +# Does the RI HTTP server-side support endpoint publish API's. +# +# http.server.supports.endpoint.publish=(true|false) +# DO NOT TOUCH - value MUST be false for managed environments like Java EE +################################################################ +http.server.supports.endpoint.publish=false +http.server.supports.endpoint.publish.2=false + +########################################################################### +# This property is used by some test clients that need a delay between +# method invocations to server endpoints. The value specified is the amount +# of time the client will delay in seconds. +########################################################################### +client.delay=1 + +####################################################################### +## This persistence unit name is used by jpa/ee/pluggability tests. Its value is the +## same as the name attribute in persistence.xml +###################################################################### +persistence.unit.name=CTS-EM + +############################################################### +# @db.supports.sequence +# +# - This property is used to determine if a database supports +# the use of SEQUENCE. If it does not, this property +# should be set to false so the test is not run. The +# default value is true. +# This value should be set to false for the following databases: +# sybase, mysql, and mssqlserver. +############################################################### +db.supports.sequence=true + +####################################################################### +## @persistence.second.level.caching.supported +## - This property is used to determine if the persistence provider supports +## second level caching. +###################################################################### +persistence.second.level.caching.supported=true + +########################################################################## +## This section contains all properties that are specific to JAX-RS Tests. +## All default values are specific to GlassFish and Jersey. +## +## servlet_adaptor - implementation specific servlet for JAX-RS +## jaxrs_impl_class.dir - Directory that servlet_adaptor locates +## jaxrs_impl_name - used to tag intermediate file names +########################################################################## +servlet_adaptor=org/glassfish/jersey/servlet/ServletContainer.class +jaxrs_impl_lib=${javaee.home}/modules/jakarta.ws.rs-api.jar +jaxrs_impl_name=jersey + + +########################################################################## +# This section contains all properties that are specific to JSR-196 Tests. +# All default values are specific to GlassFish. +# +# @servlet.is.jsr115.compatible This property is used by JASPIC tests +# to determine if the servlet container is a jsr 115 compatible +# container. (true = compatible to JSR 115, false = not compatible.) +# +# @soap.is.jsr115.compatible This may used by JASPIC tests to +# determin if the SOAP container is JSR 115 compatible. This is +# only used when running SOAP profile tests. +# +# @provider.configuration.file +# This property is used by JASPIC tests to configure TestSuite's +# AuthConfig Provider and points at an xml file which is used +# to register the JASPIC test providers into the current +# ACF. This file contaiins known/expected test provider info. +# Only app-context-id element can be edited to suit the +# impl under test. +# +# @schema.file.location +# This points to the directory that the provider-configuration.xsd +# file will live. The provider-configuration.xsd is used to +# describe the provider.configuration.file (above). +# +# @logical.hostname.servlet +# This used to identify the the name of a logical host that +# processes Servlet requests. Servlet requests may be directed to +# a logical host using various physical or virtual host names or +# addresses, and a message processing runtime may be composed of +# multiple logical hosts (This is required to properly identify +# the servlet profiles AppContextId hostname.) +# If a logical.hostname.servlet does not exist, you can set this +# to the default hostname (eg webServerHost). +# +# @logical.hostname.soap +# This property is used to identify the name of the logical host +# that processes soap requests. This hostname is used in server +# side Application context Identifier in soap profile. +# +# @appclient.log.output +# The client logging level for appclient container depends on the +# log level specified in sun-acc.xml +# +# This log level directly affects the output of TSLogger which +# logs the JSR196 SPI calls made in appclient container. +# +# using this property we enable the appclient container's +# logging level to INFO +# +# @vendor.authconfig.factory +# This property specifies vendor's authconfig factory class +# this will be used by JASPIC tests to register TestSuite's +# provider in Vendor's AuthConfig Factory. +# +# For example for SJSAS RI this value is +# +# vendor.authconfig.factory= +# com.sun.enterprise.security.jmac.config.GFAuthConfigFactory +# +########################################################################## +servlet.is.jsr115.compatible=true +soap.is.jsr115.compatible=false +provider.configuration.file=${javaee.home}/domains/domain1/config/ProviderConfiguration.xml +schema.file.location=${javaee.home}/lib/schemas +logical.hostname.servlet=server +logical.hostname.soap=localhost +appclient.log.output=true +vendor.authconfig.factory=com.sun.enterprise.security.jmac.config.GFAuthConfigFactory + +########################################################################## +# @servlet_waittime: Time in seconds to wait after HttpSession expires +# to access the session +# @servlet_async_wait: Time in seconds to wait between sending asynchronous messages +########################################################################## +servlet_waittime=10 +servlet_async_wait=4 + +########################################################################################## +# The following properties are ONLY used if testing a Standalone JMS Resource Adapter. +# Since support for a JMS Resource Adapter is OPTIONAL by the JMS 2.0 Specification +# this funtionality is USE AT YOUR OWN RISK. We WILL NOT support it. Its here in the +# case that a vendor wants to test a Standalone JMS Resource Adapter which is OPTIONAL. +# +# test.sa.jmsra // Set to true ONLY if testing a standalone JMS Resource Adapter +# jmsra.rarfile // Location of the standalone JMS Resource Adapter RAR file +# jmsra.jarfile // Location of the standalone JMS Resource Adapter JAR file +# +# A standalone JMS Resource Adapter requires deployment/configuration to the Vendor +# Implementation under test (Example: Java EE 8 RI). If not testing a standalone JMS +# Resource Adapter then these properties MUST NOT be used and the value of the property +# (test.sa.jmsra) MUST BE SET to false (which is the DEFAULT setting). If you set the +# property (test.sa.jmsra=true) then you are testing a standalone JMS Resource Adapter +# and the (jmsra.rarfile and jmsra.jarfile) properties must point to the location of +# the standalone JMS Resource Adapter RAR and JAR files. During CTS configuration the +# (config.vi) ant task will call another script that will deploy the standalone JMS +# Resource Adapter, configure the standalone JMS Resource Adapter, create the JMS +# connector connection pools, create the JMS connector resources, and finally create +# the JMS administration objects. The ant scripts that handles all of these steps for +# the (Java EE 8 RI) are the following: +# +# $TS_HOME/bin/xml/impl/glassfish/jmsra.xml +# $TS_HOME/bin/xml/impl/glassfish/templates/create.jmsra.template +# +# These scripts work for the Standalone Generic JMS Resource Adapter (GenericJMSRA) +# located at: (http://genericjmsra.java.net/). If testing another standalone JMS +# Resource Adapter then these scripts will need to be rewritten/modified for that +# JMS Resource Adapter. +# +# Here is the summary of steps of what the (jmsra.xml) script does. It configures the JMS +# resource adapter by doing a resource-adapter-config, it deploys the JMS resource adapter +# RAR file specified in the "jmsra.rarfile" property to the (Java EE 8 RI), it copies the +# JMS Resource Adapter JAR file specified in the "jmsra.jarfile" property to the (Java EE +# 8 RI) lib directory under $JAVAEE_HOME/lib. It copies some of the JMS client library jars +# to the $JAVAEE_HOME/lib directory. it then creates the JMS connector connection pools, +# the JMS connector resources, and the JMS administration objects that are needed by CTS. +# When the (config.vi) ant task completes the Java EE 8 environment will be ready to run +# the JMS CTS tests. One final step is needed to the JMS MDB CTS tests which is to modify +# the sun-ejb-jar runtime xml files by adding the deployment info. +# +# Here are the manual steps for the Standalone Generic JMS Resource Adapter (GenericJMSRA) +# after the (config.vi) ant task completes. +# +# (1) Edit the ts.jte file and add the following: +# Add "-Dgenericra.inAppClientContainer=true" to the "command.testExecuteAppClient" +# property and then add "${pathsep}${jmsra.jarfile}" to the end of APPCPATH variable +# in the same "command.testExecuteAppClient" property. You can refer to the Generic +# JMS Resource Adapter (GenericJMSRA) user guide for more information on this. +# (2) Modify the sun-ejb-jar runtime xml files for the JMS MDB tests by adding the +# deployment info. +# cd $TS_HOME/bin +# ant -f xml/impl/glassfish/jmsra.xml modify-jmsmdbejbxml +# (3) Now you can run the JMS CTS tests. After you are done running the JMS CTS tests ypu +# can unconfigure the Java EE 8 RI and restore the original sun-ejb-jar runtime xml +# files. +# cd $TS_HOME/bin +# ant -f xml/impl/glassfish/jmsra.xml restore-jmsmdbejbxml +# ant clean.vi +# (4) Finally reset the properties back to there defaults. Set (test.sa.jmsra=false) and unset +# (jmsra.rarfile and jmsra.jarfile). Remove the "-Dgenericra.inAppClientContainer=true" +# and "${pathsep}${jmsra.jarfile}" from the ts.jte file from step 1. +# +# If using a different Java EE environment from the Java EE RI than a vendor will need to +# provide his own JMS Resource Adapter support scripts needed for that Java EE environment. +# It can reuse/modify the (Java EE 8 RI) scripts above or simply write their own scripts. A +# vendor can use the Java EE 8 RI or any Java EE 8 implementation of its choice as the Java +# EE 8 environment for testing its Standalone JMS Resource Adapter. The Standalone JMS Resource +# Adapter MUST pass all of the JMS CTS tests under: (TS_HOME/src/com/sun/ts/tests/jms) in order +# to be declared fully JMS 2.0 compliant. +# +# See the JMS 2.0 Specification and the CTS 8 User's Guide for more information. +########################################################################################## +test.sa.jmsra=false +jmsra.rarfile= +jmsra.jarfile= + +########################################################################################## +# The following property specifies the name of the JMS Resource Adapter under test. The +# Java EE 8 RI contains its own builtin JMS Resource Adapter (JMSRA). Its name is "jmsra". +# So we set (jmsra.name=jmsra) as the default value for the Java EE 8 RI. +# +# Change the value of this property for the JMS Resource Adapter that is under test. This +# hardcoded value is specific to the Java EE 8 RI. +# +# jmsra.name // Name of JMS Resource Adapter for the implementation under test +########################################################################################## +jmsra.name=jmsra + + +########################################################################## +# The following property is for WebSocket tests. +# +# @ws_wait: waiting time in seconds for socket to send/receive a message +########################################################################## +ws_wait=5 + +############################################################################################ +# These following properties are needed for Javamail tests. +# +# @mailHost hostname of the mail server +# @mailuser1 must be set to a valid email address where test mails will be sent to. +# @mailFrom reply to address set in the email messages generated by the javamail tests +# @javamail.username user account name on server +# @javamail.password password for the mailuser1 +# +############################################################################################ + +mailHost= +mailuser1= +mailFrom= +javamail.password= +smtp.port=25 +imap.port=143 + +### User need not change the following javamail properties + +javamail.username=${mailuser1} +transport_protocol=smtp + +# mail server used to run tests against. +javamail.server=${mailHost} + +# protocol used to run the Store tests +javamail.protocol=imap + +# mail server used to run tests against. +javamail.transport.server=$javamail.server + +# rootpath of test mailboxes +javamail.root.path="" + +# note the mailbox 'test1' +javamail.mailbox=test1 + +# search pattern used by list tests in Folder +javamail.listpattern=test + +# your own login account name +smtp.username=$javamail.username + +# smtp domain name ; i.e. oracle.com +smtp.domain=$javamail.server + +# smtp From address +smtp.from=$smtp.username + +# smtp To address +smtp.to=$smtp.username + +# io file +iofile=MailIOFile.txt + +##################################################################################################### +#### Properties used by ldap installation +# @ldap.server -- The type of ldap server. unboundid is supported by now +# @ldap.install.server -- Install ldap server by CTS script or not +# @ldap.ldif.file -- The ldif file containing data seeded in ldap server +# +# @unboundid.installation.package -- The package for installing Unboundid ldap server +######################################################################################################## +ldap.server=unboundid +ldap.install.server=true +ldap.ldif.file=${ts.home}/bin/ldap.ldif + +unboundid.installation.package=${ts.home}/lib/unboundid-ldapsdk.jar + +##################################################################################################### +# Properties used for JPA 2.2 Tests +######################################################################################################## +persistencs.properties.file=${bin.dir}/jpa-provider.properties +persistence.unit.name.2=JPATCK2 + +jpa.provider.implementation.specific.properties=eclipselink.logging.level\=OFF +jakarta.persistence.provider=org.eclipse.persistence.jpa.PersistenceProvider +jakarta.persistence.jdbc.driver=${derby.driver} +jakarta.persistence.jdbc.url=${derby.url} +jakarta.persistence.jdbc.user=${derby.user} +jakarta.persistence.jdbc.password=${derby.passwd} diff --git a/glassfish-runner/connector-platform-tck/jakartaeetck/bin/tssql.stmt b/glassfish-runner/connector-platform-tck/jakartaeetck/bin/tssql.stmt new file mode 100644 index 0000000000..2d279c5402 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/jakartaeetck/bin/tssql.stmt @@ -0,0 +1,805 @@ +# @(#)ctssql.dml.derby 1.16 01/06/20 +#------------------------------------------------- +#All sql DML statements used in the test cases against derby +#------------------------------------------------- + + + +Dbschema_Tab1_Insert=insert into ctstable2 values(?, ?, ?, ?) +Dbschema_Tab2_Insert=insert into ctstable1 values(?, ?) + +Dbschema_Tab1_Delete=delete from ctstable2 +Dbschema_Tab2_Delete=delete from ctstable1 + +Dbschema_Concur_Insert=insert into concurrencetable values(?, ?) +Dbschema_Concur_Delete=delete from concurrencetable + +#****************************************************************** +# SQL Statements for creating procedures in side the test. +#****************************************************************** + +UpdCoffee_Proc=create method alias UpdCoffee_Proc for com.sun.ts.lib.tests.jdbc.CS_Procs.UpdCoffee_Proc + +#****************************************************************** +# SQL Statements for deleting tables for appropriate JDBC Datatypes +#****************************************************************** + +Numeric_Tab_Delete=delete from Numeric_Tab + +Decimal_Tab_Delete=delete from Decimal_Tab + +Double_Tab_Delete=delete from Double_Tab + +Float_Tab_Delete=delete from Float_Tab + +Real_Tab_Delete=delete from Real_Tab + +Bit_Tab_Delete=delete from Bit_Tab + +Smallint_Tab_Delete=delete from Smallint_Tab + +Tinyint_Tab_Delete=delete from Tinyint_Tab + +Integer_Tab_Delete=delete from Integer_Tab + +Bigint_Tab_Delete=delete from Bigint_Tab + +Char_Tab_Delete=delete from Char_Tab + +Varchar_Tab_Delete=delete from Varchar_Tab + +Longvarchar_Tab_Delete=delete from Longvarchar_Tab + +Longvarcharnull_Tab_Delete=delete from Longvarcharnull_Tab + +Date_Tab_Delete=delete from Date_Tab + +Time_Tab_Delete=delete from Time_Tab + +Timestamp_Tab_Delete=delete from Timestamp_Tab + +Binary_Tab_Delete=delete from Binary_Tab + +Varbinary_Tab_Delete=delete from Varbinary_Tab + +Longvarbinary_Tab_Delete=delete from Longvarbinary_Tab + + + +#**************************************************** +# SQL Statements for inserting values into the tables +#**************************************************** + +Numeric_Tab_Insert=insert into Numeric_Tab values(999999999999999,0.000000000000001, null) + +Decimal_Tab_Insert= insert into Decimal_Tab values(999999999999999,0.000000000000001, null) + +#Double_Tab_Insert=insert into Double_Tab values(1.7976931348623157E308,4.9E-324,null) +Double_Tab_Insert=insert into Double_Tab values(1.0E125,1.0E-130,null) + +Float_Tab_Insert=insert into Float_Tab values(3.4028235E37,1.4E-45,null) + +Real_Tab_Insert= insert into Real_Tab values(3.402E38,1.4E-37, null) + +Bit_Tab_Insert=insert into Bit_Tab values(true,false,null) + +Smallint_Tab_Insert= insert into Smallint_Tab values(32767,-32768,null) + +Tinyint_Tab_Insert=insert into Tinyint_Tab values(127,0,null) + +Integer_Tab_Insert=insert into Integer_Tab values(2147483647,-2147483648,null) + +Bigint_Tab_Insert= insert into Bigint_Tab values(9223372036854775807,-9223372036854775808,null) + +Char_Tab_Insert= insert into Char_Tab values('Test Coffee', null) + +Varchar_Tab_Insert= insert into Varchar_Tab values('Test Coffee',null) + +Longvarchar_Tab_Insert= insert into Longvarchar_Tab values('Test Coffee') + +Longvarcharnull_Tab_Insert= insert into Longvarcharnull_Tab values(null) + +Date_Tab_Insert=insert into Date_Tab values({d '1999-05-05'}, null) + +Time_Tab_Insert= insert into Time_Tab values({t '12:59:59'}, null) + +Timestamp_Tab_Insert= insert into Timestamp_Tab values({ts '1999-12-31 12:59:59'}, null) + +Binary_Tab_Insert= insert into Binary_Tab values(null) + +Varbinary_Tab_Insert= insert into Varbinary_Tab values(null) + +Longvarbinary_Tab_Insert= insert into Longvarbinary_Tab values(null) + +Boolean_Tab_Insert = insert into Boolean_Tab values(true,false,null) + + +#***************************************************** +# SQL Statements for retrieving values from the tables +#***************************************************** + +SelCoffeeAll=SELECT COF_NAME, PRICE FROM ctstable2 +SelCoffeeNull=select * from ctstable2 where TYPE_ID=0 + +Numeric_Query_Max=Select MAX_VAL from Numeric_Tab +Numeric_Query_Min=Select MIN_VAL from Numeric_Tab +Numeric_Query_Null=Select NULL_VAL from Numeric_Tab + +Decimal_Query_Max=Select MAX_VAL from Decimal_Tab +Decimal_Query_Min=Select MIN_VAL from Decimal_Tab +Decimal_Query_Null=Select NULL_VAL from Decimal_Tab + +Double_Query_Max=Select MAX_VAL from Double_Tab +Double_Query_Min=Select MIN_VAL from Double_Tab +Double_Query_Null=Select NULL_VAL from Double_Tab + +Float_Query_Max=Select MAX_VAL from Float_Tab +Float_Query_Min=Select MIN_VAL from Float_Tab +Float_Query_Null=Select NULL_VAL from Float_Tab + +Real_Query_Max=Select MAX_VAL from Real_Tab +Real_Query_Min=Select MIN_VAL from Real_Tab +Real_Query_Null=Select NULL_VAL from Real_Tab + +Bit_Query_Max=Select MAX_VAL from Bit_Tab +Bit_Query_Min=Select MIN_VAL from Bit_Tab +Bit_Query_Null=Select NULL_VAL from Bit_Tab + +Smallint_Query_Max=Select MAX_VAL from Smallint_Tab +Smallint_Query_Min=Select MIN_VAL from Smallint_Tab +Smallint_Query_Null=Select NULL_VAL from Smallint_Tab + +Tinyint_Query_Max=Select MAX_VAL from Tinyint_Tab +Tinyint_Query_Min=Select MIN_VAL from Tinyint_Tab +Tinyint_Query_Null=Select NULL_VAL from Tinyint_Tab + +Integer_Query_Max=Select MAX_VAL from Integer_Tab +Integer_Query_Min=Select MIN_VAL from Integer_Tab +Integer_Query_Null=Select NULL_VAL from Integer_Tab + +Bigint_Query_Max=Select MAX_VAL from Bigint_Tab +Bigint_Query_Min=Select MIN_VAL from Bigint_Tab +Bigint_Query_Null=Select NULL_VAL from Bigint_Tab + +Char_Query_Name=Select COFFEE_NAME from Char_Tab +Char_Query_Null=Select NULL_VAL from Char_Tab + +Varchar_Query_Name=Select COFFEE_NAME from Varchar_Tab +Varchar_Query_Null=Select NULL_VAL from Varchar_Tab + +Longvarchar_Query_Name=Select COFFEE_NAME from Longvarchar_Tab +Longvarchar_Query_Null=Select NULL_VAL from Longvarcharnull_Tab + +Date_Query_Mfg=Select MFG_DATE from Date_Tab +Date_Query_Null=Select NULL_VAL from Date_Tab + +Time_Query_Brk=Select BRK_TIME from Time_Tab +Time_Query_Null=Select NULL_VAL from Time_Tab + +Timestamp_Query_In=Select IN_TIME from Timestamp_Tab +Timestamp_Query_Null=Select NULL_VAL from Timestamp_Tab + +Binary_Query_Val=Select BINARY_VAL from Binary_Tab +Varbinary_Query_Val=Select VARBINARY_VAL from Varbinary_Tab +Longvarbinary_Query_Val=Select LONGVARBINARY_VAL from Longvarbinary_Tab + + + + + +#*************************************** +# SQL Statements for updating the tables +#*************************************** + +Numeric_Tab_Max_Update=update Numeric_Tab set MAX_VAL=? +Numeric_Tab_Min_Update=update Numeric_Tab set MIN_VAL=? +Numeric_Tab_Null_Update=update Numeric_Tab set NULL_VAL=? + +Decimal_Tab_Max_Update=update Decimal_Tab set MAX_VAL=? +Decimal_Tab_Min_Update=update Decimal_Tab set MIN_VAL=? +Decimal_Tab_Null_Update=update Decimal_Tab set NULL_VAL=? + +Double_Tab_Max_Update=update Double_Tab set MAX_VAL=? +Double_Tab_Min_Update=update Double_Tab set MIN_VAL=? +Double_Tab_Null_Update=update Double_Tab set NULL_VAL=? + +Float_Tab_Max_Update=update Float_Tab set MAX_VAL=? +Float_Tab_Min_Update=update Float_Tab set MIN_VAL=? +Float_Tab_Null_Update=update Float_Tab set NULL_VAL=? + +Real_Tab_Max_Update=update Real_Tab set MAX_VAL=? +Real_Tab_Min_Update=update Real_Tab set MIN_VAL=? +Real_Tab_Null_Update=update Real_Tab set NULL_VAL=? + +Bit_Tab_Max_Update=update Bit_Tab set MAX_VAL=? +Bit_Tab_Min_Update=update Bit_Tab set MIN_VAL=? +Bit_Tab_Null_Update=update Bit_Tab set NULL_VAL=? + +Smallint_Tab_Max_Update=update Smallint_Tab set MAX_VAL=? +Smallint_Tab_Min_Update=update Smallint_Tab set MIN_VAL=? +Smallint_Tab_Null_Update=update Smallint_Tab set NULL_VAL=? + +Tinyint_Tab_Max_Update=update Tinyint_Tab set MAX_VAL=? +Tinyint_Tab_Min_Update=update Tinyint_Tab set MIN_VAL=? +Tinyint_Tab_Null_Update=update Tinyint_Tab set NULL_VAL=? + +Integer_Tab_Max_Update=update Integer_Tab set MAX_VAL=? +Integer_Tab_Min_Update=update Integer_Tab set MIN_VAL=? +Integer_Tab_Null_Update=update Integer_Tab set NULL_VAL=? + +Bigint_Tab_Max_Update=update Bigint_Tab set MAX_VAL=? +Bigint_Tab_Min_Update=update Bigint_Tab set MIN_VAL=? +Bigint_Tab_Null_Update=update Bigint_Tab set NULL_VAL=? + +Char_Tab_Name_Update=update Char_Tab set COFFEE_NAME=? +Char_Tab_Null_Update=update Char_Tab set NULL_VAL=? + +Varchar_Tab_Name_Update=update Varchar_Tab set COFFEE_NAME=? +Varchar_Tab_Null_Update=update Varchar_Tab set NULL_VAL=? + +Longvarchar_Tab_Name_Update=update Longvarchar_Tab set COFFEE_NAME=? +Longvarchar_Tab_Null_Update=update Longvarcharnull_Tab set NULL_VAL=? + +Date_Tab_Mfgdate_Update=update Date_Tab set MFG_DATE=? +Date_Tab_Null_Update=update Date_Tab set NULL_VAL=? + +Time_Tab_Brktime_Update=update Time_Tab set BRK_TIME=? +Time_Tab_Null_Update=update Time_Tab set NULL_VAL=? + +Timestamp_Tab_Intime_Update=update Timestamp_Tab set IN_TIME=? +Timestamp_Tab_Null_Update=update Timestamp_Tab set NULL_VAL=? + +Binary_Tab_Val_Update=update Binary_Tab set BINARY_VAL=? +Varbinary_Tab_Val_Update=update Varbinary_Tab set VARBINARY_VAL=? +Longvarbinary_Tab_Val_Update=update Longvarbinary_Tab set LONGVARBINARY_VAL=? + +CoffeeTab_Query=select COF_NAME,PRICE from ctstable2 where TYPE_ID=? +CoffeeTab_Delete=delete from ctstable2 where KEY_ID=? + +CoffeeTab_Select=select PRICE from ctstable2 where KEY_ID=? +CoffeeTab_Update=update ctstable2 set PRICE=PRICE*20 where TYPE_ID=? + +Ins_Coffee_Tab=insert into ctstable2 values (9,'COFFEE-9',9.0,5) +Del_Coffee_Tab=delete from ctstable2 where KEY_ID=9 +Upd_Coffee_Tab=update ctstable2 set PRICE=PRICE*20 where TYPE_ID=1 +Sel_Coffee_Tab=select PRICE from ctstable2 where KEY_ID>4 + +#********************************************************************************** +# is used in ResultSet. To update with BIT value. +#********************************************************************************** +Update_decimal_tab=update Decimal_Tab set MAX_VAL=1.0, MIN_VAL=0.0, NULL_VAL=null +Update_numeric_tab=update Numeric_Tab set MAX_VAL=1.0, MIN_VAL=0.0, NULL_VAL=null +Update_char_tab1=update Char_Tab set COFFEE_NAME=1, NULL_VAL=null +Update_char_tab2=update Char_Tab set COFFEE_NAME=0, NULL_VAL=null +Update_varchar_tab1=update Varchar_Tab set COFFEE_NAME=1, NULL_VAL=null +Update_varchar_tab2=update Varchar_Tab set COFFEE_NAME=0, NULL_VAL=null + +#********************************************************************************** +# is used in BatchUpdate Tests. +#********************************************************************************** +BatchUpdate_Query=select count(*) from ctstable2 where TYPE_ID=? +BatchUpdate_Delete=delete from ctstable2 +BatchInsert_String=insert into ctstable2 values(?,?,?,?) + +#********************************************************************************** +# is used in BatchUpdate exception +#********************************************************************************** +Coffee_InsTab=insert into ctstable2 values (9,'COFFEE-9',9.0,5) +Coffee_DelTab=delete from ctstable2 where KEY_ID=2 +Coffee_UpdTab=update ctstable2 set PRICE=PRICE*20 where TYPE_ID=1 +Coffee_SelTab=select PRICE from ctstable2 where KEY_ID>4 +Coffee_Inscount_Query=select count(*) from ctstable2 where KEY_ID=9 +Coffee_Delcount_Query=select count(*) from ctstable2 where KEY_ID=2 +Coffee_Updcount_Query=select count(*) from ctstable2 where TYPE_ID=1 +CoffeeTab_Continue1=update ctstable2 set KEY_ID=?, COF_NAME=? where COF_NAME=? +CoffeeTab_ContinueSelect1=Select count(*) from ctstable2 where COF_NAME in ('Continue-1') +CoffeeTab_Continue2=update ctstable2 set KEY_ID=1,COF_NAME = 'Continue-1' where COF_NAME='COFFEE-1' +CoffeeTab_Continue3=update ctstable2 set KEY_ID=1 ,COF_NAME = 'Invalid' where COF_NAME='COFFEE-3' +CoffeeTab_Continue4=update ctstable2 set KEY_ID=2,COF_NAME = 'Continue-3' where COF_NAME='COFFEE-2' +Coffee_Proc1=create procedure Coffee_Proc1(keyid in Numeric) as begin update ctstable2 set KEY_ID=keyid,COF_NAME = 'Continue-1' where KEY_ID=1;end; +Coffee_Proc1_Delete=Drop procedure Coffee_Proc1 +#********************************************************************************** +# is used in DataTruncation exception +#********************************************************************************** +DTrunc_Ins_Coffee=insert into ctstable2 values (10,'kumarjadjsjdhsjhdjsjdajhdjasdsdsdsd',21.00,1) + +#********************************************************************************** +# is used in SQLException +#********************************************************************************** +Error_Query=select * from + +#********************************************************************************** +# Constructor arguments for exceptions +#********************************************************************************** +Reason_BatUpdExec=Message +SQLState_BatUpdExec=S100 +VendorCode_BatUpdExec=10 +IntialValue_BatUpdExec={1,1,1} +Index_DataTrunc=1 +Param_DataTrunc=true +Read_DataTrunc=true +DataSize_DataTrunc=100 +TranSize_DataTrunc=50 + +#********************************************************************************** +# is used to print a message to the current logging writer +#********************************************************************************** +JDBCLogstream_Message=Hello World + + +#********************************************************************************** +#The following pair of values are related and so must be changed simultaneously +#The first one is a reference value and the second one is a equivalent in millisecond after epoch +#********************************************************************************** +DateTime_Str_Val1=1970-01-02 00:00:00.001 +DateTime_Long_Val1=86400001 + +#********************************************************************************** +#The following pair of values are related and so must be changed simultaneously +#The first one is a reference value and the second one is a equivalent in millisecond after epoch +#********************************************************************************** +DateTime_Str_Val2=1969-12-30 23:59:59.999 +DateTime_Long_Val2=-86400001 + +#********************************************************************************** +#value in millisecond for testing after() and before() in Timestamp +#********************************************************************************** +Ref_Milli_Val = 86400000 + +#********************************************************************************** +#Value in nanoseconds for testing time values +#********************************************************************************** +Ref_Nano_Val = 999999999 + + +#********************************************************************************** +#Value in nanoseconds and must be equivalent equivalent to multiples of milliseconds +#********************************************************************************** +Ref_Nano_Val2 = 1000000 + +Trial_String=TrialSetting +Escape_Seq_Query=select count(*) from ctstable2 where cof_name like '\%-%' { escape '\\' } +Escape_Seq_ChkQuery=select count(*) from ctstable2 +Max_Set_Val=10 + + +#********************************************************************************** +#The SQL Statements which are used to test the Scalar functions using escape syntax +#********************************************************************************** +Concat_Fn_Query=SELECT {FN CONCAT(STRING1,STRING2)} FROM ctstable3 +Ascii_Fn_Query=SELECT {FN ASCII(STRING1)} FROM ctstable3 +Insert_Fn_Query=SELECT {FN INSERT(STRING1,2,4,STRING2)} FROM ctstable3 +Lcase_Fn_Query=SELECT {FN LCASE(STRING1)} FROM ctstable3 +Left_Fn_Query=SELECT {FN LEFT(STRING1,2)} FROM ctstable3 +Length_Fn_Query=SELECT {FN LENGTH(STRING1)} FROM ctstable3 +Locate_Fn_Query=SELECT {FN LOCATE(STRING1,STRING2)} FROM ctstable3 +Ltrim_Fn_Query=SELECT {FN LTRIM(STRING2)} FROM ctstable3 +Repeat_Fn_Query=SELECT {FN REPEAT(STRING1,3)} FROM ctstable3 +Right_Fn_Query=SELECT {FN RIGHT(STRING1,3)} FROM ctstable3 +Rtrim_Fn_Query=SELECT {FN RTRIM(STRING2)} FROM ctstable3 +Soundex_Fn_Query=SELECT {FN SOUNDEX(STRING1)} FROM ctstable3 +Space_Fn_Query=SELECT {FN SPACE(5)} FROM ctstable3 +Substring_Fn_Query=SELECT {FN SUBSTR(STRING2,2,3)} FROM ctstable3 +Ucase_Fn_Query=SELECT {FN UCASE(STRING1)} FROM ctstable3 +Char_Fn_Query=SELECT {FN CHAR(NUMCOL)} FROM ctstable3 +Replace_Fn_Query=SELECT {FN REPLACE(STRING2,STRING1,STRING3)} FROM ctstable3 +User_Fn_Query=SELECT {FN USER()} FROM ctstable3 +Ifnull_Fn_Query=SELECT {FN IFNULL(STRING1,100)} FROM ctstable3 +Sin_Fn_Query=SELECT {FN SIN(0)} FROM ctstable3 +Abs_Fn_Query=SELECT {FN ABS(NUMCOL)} FROM ctstable3 +Power_Fn_Query=SELECT {FN POWER(NUMCOL,2)} FROM ctstable3 +Round_Fn_Query=SELECT {FN ROUND(FLOATCOL,2)} FROM ctstable3 +Sign_Fn_Query=SELECT {FN SIGN(NUMCOL)} FROM ctstable3 +Sqrt_Fn_Query=SELECT {FN SQRT(FLOATCOL)} FROM ctstable3 +Truncate_Fn_Query=SELECT {FN TRUNCATE(FLOATCOL,1)} FROM ctstable3 +Mod_Fn_Query=SELECT {FN MOD(NUMCOL,7)} FROM ctstable3 +Floor_Fn_Query=SELECT {FN FLOOR(FLOATCOL)} FROM ctstable3 +Ceiling_Fn_Query=SELECT {FN CEILING(NUMCOL)} FROM ctstable3 +Log10_Fn_Query=SELECT {FN LOG10(NUMCOL)} FROM ctstable3 +Log_Fn_Query=SELECT {FN LOG(NUMCOL)} FROM ctstable3 +Exp_Fn_Query=SELECT {FN EXP(FLOATCOL)} FROM ctstable3 +Cos_Fn_Query=SELECT {FN COS(FLOATCOL)} FROM ctstable3 +Tan_Fn_Query=SELECT {FN TAN(FLOATCOL)} FROM ctstable3 +Cot_Fn_Query=SELECT {FN COT(FLOATCOL)} FROM ctstable3 +Curdate_Fn_Query=SELECT {FN CURDATE()} FROM ctstable3 +Dayname_Fn_Query=SELECT {FN DAYNAME(DATECOL)} FROM ctstable3 +Dayofmonth_Fn_Query=SELECT {FN DAYOFMONTH(DATECOL)} FROM ctstable3 +Dayofweek_Fn_Query=SELECT {FN DAYOFWEEK(DATECOL)} FROM ctstable3 +Dayofyear_Fn_Query=SELECT {FN DAYOFYEAR(DATECOL)} FROM ctstable3 +Week_Fn_Query=SELECT {FN WEEK(DATECOL)} FROM ctstable3 +Month_Fn_Query=SELECT {FN MONTH(DATECOL)} FROM ctstable3 +Year_Fn_Query=SELECT {FN YEAR(DATECOL)} FROM ctstable3 +Monthname_Fn_Query=SELECT {FN MONTHNAME(DATECOL)} FROM ctstable3 +Quarter_Fn_Query=SELECT {FN QUARTER(DATECOL)} FROM ctstable3 +Now_Fn_Query=SELECT {FN NOW()} FROM ctstable3 +Hour_Fn_Query=SELECT {FN HOUR(TIMECOL)} FROM ctstable3 +Minute_Fn_Query=SELECT {FN MINUTE(TIMECOL)} FROM ctstable3 +Second_Fn_Query=SELECT {FN SECOND(TIMECOL)} FROM ctstable3 +Database_Fn_Query=SELECT {FN DATABASE()} FROM ctstable3 +Acos_Fn_Query=SELECT {FN ACOS(FLOATCOL)} FROM ctstable3 +Asin_Fn_Query=SELECT {FN ASIN(FLOATCOL)} FROM ctstable3 +Atan_Fn_Query=SELECT {FN ATAN(FLOATCOL)} FROM ctstable3 +Atan2_Fn_Query=SELECT {FN ATAN2(FLOATCOL,FLOATCOL)} FROM ctstable3 +Degrees_Fn_Query=SELECT {FN DEGREES(NUMCOL)} FROM ctstable3 +Radians_Fn_Query=SELECT {FN RADIANS(NUMCOL)} FROM ctstable3 +Pi_Fn_Query=SELECT {FN PI()} FROM ctstable3 +Rand_Fn_Query=SELECT {FN RAND(NUMCOL)} FROM ctstable3 +Difference_Fn_Query=SELECT {FN DIFFERENCE(STRING1,STRING2)} FROM ctstable3 +Locate_Fn_Query=SELECT {FN LOCATE(STRING1,STRING2,2)} FROM ctstable3 +Timestampaddfrac_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_FRAC_SECOND,2,TSCOL1)} FROM ctstable3 +Timestampaddsecond_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_SECOND,2,TSCOL1)} FROM ctstable3 +Timestampaddminute_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_MINUTE,2,TSCOL1)} FROM ctstable3 +Timestampaddhour_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_HOUR,2,TSCOL1)} FROM ctstable3 +Timestampaddday_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_DAY,2,TSCOL1)} FROM ctstable3 +Timestampaddweek_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_WEEK,2,TSCOL1)} FROM ctstable3 +Timestampaddmonth_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_MONTH,2,TSCOL1)} FROM ctstable3 +Timestampaddquarter_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_QUARTER,2,TSCOL1)} FROM ctstable3 +Timestampaddyear_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_YEAR,2,TSCOL1)} FROM ctstable3 +Timestampdifffrac_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_FRAC_SECOND,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffsecond_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_SECOND,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffminute_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_MINUTE,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffhour_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_HOUR,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffday_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_DAY,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffweek_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_WEEK,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffmonth_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_MONTH,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffquarter_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_QUARTER,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffyear_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_YEAR,TSCOL1,TSCOL2)} FROM ctstable3 + + +#***************************************************************************** +#The SQL Statements which are used to test the Outer Joins using escape syntax +#***************************************************************************** +Left_Oj_Query=SELECT * FROM {OJ ctstable3 LEFT OUTER JOIN ctstable4 ON ctstable3.NUMCOL=ctstable4.NUMCOL} +Right_Oj_Query=SELECT * FROM {OJ ctstable3 RIGHT OUTER JOIN ctstable4 ON ctstable3.NUMCOL=ctstable4.NUMCOL} +Full_Oj_Query=SELECT * FROM {OJ ctstable3 FULL OUTER JOIN ctstable4 ON ctstable3.NUMCOL=ctstable4.NUMCOL} + + +#***************************************************************************** +#The SQL Statements for creating, inserting and dropping the tables which are +#used in testing the scalar functions and outer joins using escape syntax +#***************************************************************************** + +Fnschema_Tab1_Insert=INSERT INTO ctstable3 VALUES ('Java',' HotJava ','JAVA',100,0.5,{d '1993-07-13'},{t '10:30:55'},{ts '1996-05-10 10:07:04'},{ts '1996-05-10 10:07:05'}) +Fnschema_Tab2_Insert=INSERT INTO ctstable4 VALUES ('STRING3',100) + +Fnschema_Tab1_Delete=delete from ctstable3 +Fnschema_Tab2_Delete=delete from ctstable4 + +#***************************************************************************** +#The SQL Statements which are used in TxBean (Session bean) +#***************************************************************************** +TxBean_insert1=insert into TxBean_Tab1 values(?, ?, ?) +TxBean_insert2=insert into TxBean_Tab2 values(?, ?, ?) + +TxBean_delete1=delete from TxBean_Tab1 where KEY_ID = ? +TxBean_delete2=delete from TxBean_Tab2 where KEY_ID = ? + +TxBean_update1=update TxBean_Tab1 set TABONE_NAME = ? where KEY_ID = ? +TxBean_update2=update TxBean_Tab2 set TABTWO_NAME = ? where KEY_ID = ? +TxBean_update3=update TxBean_Tab1 set PRICE = ? where KEY_ID = ? +TxBean_update4=update TxBean_Tab2 set PRICE = ? where KEY_ID = ? + +TxBean_query1=select * from TxBean_Tab1 +TxBean_query2=select * from TxBean_Tab2 +TxBean_query3=select KEY_ID, TABONE_NAME, PRICE from TxBean_Tab1 where KEY_ID = ? +TxBean_query4=select KEY_ID, TABTWO_NAME, PRICE from TxBean_Tab2 where KEY_ID = ? + + +TxBean_Tab1_Delete=delete from TxBean_Tab1 +TxBean_Tab2_Delete=delete from TxBean_Tab2 + +#***************************************************************************** +#The SQL Statements which are used in TxEBean (Entity bean) +#***************************************************************************** +TxEBean_updateString1=insert into TxEBean_Tab values(?, ?, ?) +TxEBean_updateString2=delete from TxEBean_Tab where KEY_ID = ? +TxEBean_updateString3=update TxEBean_Tab set BRAND_NAME = ?, PRICE = ? where KEY_ID = ? + +TxEBean_selectString1=select KEY_ID from TxEBean_Tab where KEY_ID = ? +TxEBean_selectString2=select KEY_ID from TxEBean_Tab where BRAND_NAME = ? +TxEBean_selectString3=select KEY_ID from TxEBean_Tab where PRICE = ? +TxEBean_selectString4=select KEY_ID, BRAND_NAME, PRICE from TxEBean_Tab where KEY_ID = ? +TxEBean_selectString5=select BRAND_NAME from TxEBean_Tab where KEY_ID = ? +TxEBean_selectString6=select PRICE from TxEBean_Tab where KEY_ID = ? + +TxEBean_queryStr1=select KEY_ID from TxEBean_Tab where KEY_ID = ? + +TxEBean_Delete=delete from TxEBean_Tab + +#***************************************************************************** +#The SQL Statements which are used in the integration/session and +#integration/entity tests +#***************************************************************************** +Integration_Tab_Delete=delete from Integration_Tab +Integration_Insert=insert into Integration_Tab values(?, ?) +Integration_Insert1=insert into Integration_Tab values(1000, 50000.0) +Integration_Insert2=insert into Integration_Tab values(1075, 10490.75) +Integration_Insert3=insert into Integration_Tab values(40, 200.50) +Integration_Insert4=insert into Integration_Tab values(30564, 25000.0) +Integration_Insert5=insert into Integration_Tab values(387, 1000000.0) +Integration_Select_Account=select * from Integration_Tab WHERE ACCOUNT = ? +Integration_Select_All=select * from Integration_Tab +Integration_Update_Account=update Integration_Tab set BALANCE = ? where ACCOUNT = ? +Integration_Delete_Account=delete from Integration_Tab where ACCOUNT = ? + +#***************************************************************************** +#The SQL Statements which are used in the integration/sec tests +#***************************************************************************** +Integration_Sec_Tab_Delete=delete from Integration_Sec_Tab +Integration_Sec_Tab_Insert=insert into Integration_Sec_Tab values(?, ?, ?) +Integration_Sec_Tab_Delete1=delete from Integration_Sec_Tab WHERE LOG_NO=? +Integration_Sec_Tab_Delete2=delete FROM Integration_Sec_Tab where LOG_NO=? and not ( LINE_NO = ? ) +Integration_Sec_Tab_Update=update Integration_Sec_Tab set MESSAGE= ? where LOG_NO = ? and LINE_NO = ? +Integration_Sec_Tab_Select1=select MESSAGE, LINE_NO from Integration_Sec_Tab where LOG_NO = ? and not( LINE_NO= ? ) order by LINE_NO +Integration_Sec_Tab_Select2=select MESSAGE FROM Integration_Sec_Tab where LOG_NO = ? and LINE_NO = ? +Integration_Sec_Tab_Select3=select MAX(LOG_NO) FROM Integration_Sec_Tab +Integration_Sec_Tab_Select4=select LOG_NO from Integration_Sec_Tab where MESSAGE = ? and LINE_NO = ? +Integration_Sec_Tab_Select5=select LINE_NO from Integration_Sec_Tab where LOG_NO = ? and LINE_NO= ? + + +#***************************************************************************** +#The SQL Statements which are used in DBSupport used by ejb/ee/bb tests +#***************************************************************************** +BB_Tab_Delete=delete from BB_Tab +BB_Insert1=insert into BB_Tab values(?, ?, ?) +BB_Select1=select KEY_ID from BB_Tab where KEY_ID = ? +BB_Select2=select KEY_ID from BB_Tab where BRAND_NAME = ? +BB_Select3=select KEY_ID from BB_Tab where PRICE = ? +BB_Select4=select KEY_ID from BB_Tab where PRICE >= ? and PRICE <= ? +BB_Select5=select KEY_ID from BB_Tab where KEY_ID >= ? and KEY_ID <= ? +BB_Select6=select PRICE from BB_Tab where KEY_ID = ? +BB_Update1=update BB_Tab set PRICE = ? where KEY_ID = ? +BB_Delete1=delete from BB_Tab where KEY_ID = ? + +#***************************************************************************** +#The SQL Statements which are used in DAO by ejb/ee/bb tests +#***************************************************************************** +COFFEE_BB_Tab_Delete=delete from BB_Tab +COFFEE_BB_Insert1=insert into BB_Tab values(?, ?, ?) +COFFEE_BB_Select1=select KEY_ID from BB_Tab where KEY_ID = ? +COFFEE_BB_Select2=select KEY_ID from BB_Tab where BRAND_NAME = ? +COFFEE_BB_Select3=select KEY_ID from BB_Tab where PRICE = ? +COFFEE_BB_Select4=select KEY_ID from BB_Tab where PRICE >= ? and PRICE <= ? +COFFEE_BB_Select5=select KEY_ID from BB_Tab where KEY_ID >= ? and KEY_ID <= ? +COFFEE_BB_Select6=select PRICE from BB_Tab where KEY_ID = ? +COFFEE_BB_Update1=update BB_Tab set PRICE = ? where KEY_ID = ? +COFFEE_BB_Delete1=delete from BB_Tab where KEY_ID = ? + +#***************************************************************************** +#The SQL Statements which are used in DBSupport in jta/ee/txpropagationtest +#***************************************************************************** +JTA_Tab1_Delete=delete from JTA_Tab1 +JTA_Tab2_Delete=delete from JTA_Tab2 + +JTA_Tab1_Insert=insert into JTA_Tab1 values(?, ?, ?) +JTA_Tab2_Insert=insert into JTA_Tab2 values(?, ?, ?) + +JTA_Delete1=delete from JTA_Tab1 where KEY_ID = ? +JTA_Delete2=delete from JTA_Tab2 where KEY_ID = ? + +JTA_Tab1_Update1=update JTA_Tab1 set COF_NAME = ? where KEY_ID = ? +JTA_Tab2_Update1=update JTA_Tab2 set CHOC_NAME = ? where KEY_ID = ? + +JTA_Tab1_Update2=update JTA_Tab1 set PRICE = ? where KEY_ID = ? +JTA_Tab2_Update2=update JTA_Tab2 set PRICE = ? where KEY_ID = ? + +JTA_Tab1_Select=select * from JTA_Tab1 +JTA_Tab2_Select=select * from JTA_Tab2 + +JTA_Tab1_Select1=select KEY_ID, COF_NAME, PRICE FROM JTA_Tab1 where KEY_ID = ? +JTA_Tab2_Select1=select KEY_ID, CHOC_NAME, PRICE FROM JTA_Tab2 where KEY_ID = ? + + +#***************************************************************************** +# SQL Statements used by deployment tests +# +# See /tests/assembly/util/dbsupport for more details +# +#***************************************************************************** + +# +# BMP table with Integer Primary Key +# +DEPLOY_intPKTable_Insert=insert into Deploy_Tab1 values(?, ?, ?) +DEPLOY_intPKTable_Select_PK=select KEY_ID from Deploy_Tab1 where KEY_ID = ? +DEPLOY_intPKTable_Select_Price=select PRICE from Deploy_Tab1 where KEY_ID = ? +DEPLOY_intPKTable_Update=update Deploy_Tab1 set PRICE = ? where KEY_ID = ? +DEPLOY_intPKTable_Delete=delete from Deploy_Tab1 where KEY_ID = ? +DEPLOY_intPKTable_Cleanup=delete from Deploy_Tab1 + +# +# BMP table with String Primary Key +# +DEPLOY_strPKTable_Insert=insert into Deploy_Tab2 values(?, ?, ?) +DEPLOY_strPKTable_Select_PK=select KEY_ID from Deploy_Tab2 where KEY_ID = ? +DEPLOY_strPKTable_Select_Price=select PRICE from Deploy_Tab2 where KEY_ID = ? +DEPLOY_strPKTable_Update=update Deploy_Tab2 set PRICE = ? where KEY_ID = ? +DEPLOY_strPKTable_Delete=delete from Deploy_Tab2 where KEY_ID = ? +DEPLOY_strPKTable_Cleanup=delete from Deploy_Tab2 + +# +# BMP table with Long Primary Key +# +DEPLOY_longPKTable_Insert=insert into Deploy_Tab3 values(?, ?, ?) +DEPLOY_longPKTable_Select_PK=select KEY_ID from Deploy_Tab3 where KEY_ID = ? +DEPLOY_longPKTable_Select_Price=select PRICE from Deploy_Tab3 where KEY_ID = ? +DEPLOY_longPKTable_Update=update Deploy_Tab3 set PRICE = ? where KEY_ID = ? +DEPLOY_longPKTable_Delete=delete from Deploy_Tab3 where KEY_ID = ? +DEPLOY_longPKTable_Cleanup=delete from Deploy_Tab3 + +# +# BMP table with Float Primary Key +# +DEPLOY_floatPKTable_Insert=insert into Deploy_Tab4 values(?, ?, ?) +DEPLOY_floatPKTable_Select_PK=select KEY_ID from Deploy_Tab4 where KEY_ID = ? +DEPLOY_floatPKTable_Select_Price=select PRICE from Deploy_Tab4 where KEY_ID = ? +DEPLOY_floatPKTable_Update=update Deploy_Tab4 set PRICE = ? where KEY_ID = ? +DEPLOY_floatPKTable_Delete=delete from Deploy_Tab4 where KEY_ID = ? +DEPLOY_floatPKTable_Cleanup=delete from Deploy_Tab4 + +# +# BMP table with Compound Primary Key +# +DEPLOY_compoundPKTable_Insert=insert into Deploy_Tab5 values(?, ?, ?, ?, ?) +DEPLOY_compoundPKTable_Select_PK=select KEY_ID1, KEY_ID2, KEY_ID3 from Deploy_Tab5 where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Select_Price=select PRICE from Deploy_Tab5 where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Update=update Deploy_Tab5 set PRICE = ? where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Delete=delete from Deploy_Tab5 where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Cleanup=delete from Deploy_Tab5 + +#***************************************************************************** +#The SQL Statements which are used in DBSupport2 used by secpropagation tests +#***************************************************************************** +SEC_Insert1=insert into SEC_Tab1 values(?, ?, ?) +SEC_Select1=select KEY_ID from SEC_Tab1 where KEY_ID = ? +SEC_Select2=select KEY_ID from SEC_Tab1 where BRAND = ? +SEC_Select3=select KEY_ID from SEC_Tab1 where PRICE = ? +SEC_Select4=select KEY_ID from SEC_Tab1 where PRICE >= ? and PRICE <= ? +SEC_Select5=select KEY_ID from SEC_Tab1 where KEY_ID >= ? and KEY_ID <= ? +SEC_Select6=select PRICE from SEC_Tab1 where KEY_ID = ? +SEC_Update1=update SEC_Tab1 set PRICE = ? where KEY_ID = ? +SEC_Delete1=delete from SEC_Tab1 where KEY_ID = ? +SEC_Tab1_Delete=delete from SEC_Tab1 + +#***************************************************************************** +# Connector tests in src/tests/connector +#***************************************************************************** +ConnectorTable_Insert=insert into Connector_Tab values(?, ?, ?) +ConnectorTable_Delete=delete from Connector_Tab + +#***************************************************************************** +# insert values EIS +#***************************************************************************** +TSEIS_insert_init=1 +TSEIS_insert1=2 +TSEIS_insert2=3 + +#***************************************************************************** +#The SQL Statements which are used in xa multires tests +#***************************************************************************** + +Xa_Tab1_Select=select * from Xa_Tab1 + +# insert values +Xa_Tab1_Insert=insert into Xa_Tab1 values(?, ?, ?) + +# delete using id +Xa_Tab1_Delete1=delete from Xa_Tab1 where col1 = ? + +Xa_Tab1_Delete=delete from Xa_Tab1 +Xa_Tab2_Delete=delete from Xa_Tab2 + +#initial insert +Xa_Tab1_insert_init=insert into Xa_Tab1 values (1, 'Table1 Line one ', '1.0' ) +Xa_Tab2_insert_init=insert into Xa_Tab2 values (1, 'Table2 Line one ', '2.0' ) + +#subsequent insert +Xa_Tab1_insert1=insert into Xa_Tab1 values (2, 'Table1 Line two ', '11.0' ) +Xa_Tab1_insert2=insert into Xa_Tab1 values (3, 'Table1 Line three ','111.0' ) + +Xa_Tab2_insert1=insert into Xa_Tab2 values (2, 'Table2 Line two ', '22.0' ) +Xa_Tab2_insert2=insert into Xa_Tab2 values (3, 'Table2 Line three ', '222.0' ) + +#get results + +Xa_Tab1_query=select col1 from Xa_Tab1 order by col1 +Xa_Tab2_query=select col1 from Xa_Tab2 order by col1 + + + +#***************************************************************************** +# Coffee DAO SQL statements +#***************************************************************************** + +# +# Standard Coffee DAO +# +COFFEE_insert=insert into Coffee_Table values(?, ?, ?) +COFFEE_select=select BRAND_NAME, PRICE from Coffee_Table where KEY_ID = ? +COFFEE_select_pk_by_name=select KEY_ID from Coffee_Table where BRAND_NAME = ? +COFFEE_select_pk_by_price=select KEY_ID from Coffee_Table where PRICE = ? +COFFEE_select_pk_by_price_range=select KEY_ID from Coffee_Table where PRICE >= ? and PRICE <= ? +COFFEE_select_pk_by_pk_range=select KEY_ID from Coffee_Table where KEY_ID >= ? and KEY_ID <= ? +COFFEE_select_price=select PRICE from Coffee_Table where KEY_ID = ? +COFFEE_update=update Coffee_Table set BRAND_NAME = ?, PRICE = ? where KEY_ID = ? +COFFEE_update_price=update Coffee_Table set PRICE = ? where KEY_ID = ? +COFFEE_delete=delete from Coffee_Table where KEY_ID = ? +COFFEE_delete_all=delete from Coffee_Table + + +# +# Coffee DAO variant with String Primary Key +# +COFFEE_STRING_PK_insert=insert into Coffee_StringPK_Table values(?, ?, ?) +COFFEE_STRING_PK_select=select KEY_ID from Coffee_StringPK_Table where KEY_ID = ? +COFFEE_STRING_PK_select_price=select PRICE from Coffee_StringPK_Table where KEY_ID = ? +COFFEE_STRING_PK_update_price=update Coffee_StringPK_Table set PRICE = ? where KEY_ID = ? +COFFEE_STRING_PK_delete=delete from Coffee_StringPK_Table where KEY_ID = ? +COFFEE_STRING_PK_delete_all=delete from Coffee_StringPK_Table + +# +# Coffee DAO variant with Long Primary Key +# +COFFEE_LONG_PK_insert=insert into Coffee_LongPK_Table values(?, ?, ?) +COFFEE_LONG_PK_select=select KEY_ID from Coffee_LongPK_Table where KEY_ID = ? +COFFEE_LONG_PK_select_price=select PRICE from Coffee_LongPK_Table where KEY_ID = ? +COFFEE_LONG_PK_update_price=update Coffee_LongPK_Table set PRICE = ? where KEY_ID = ? +COFFEE_LONG_PK_delete=delete from Coffee_LongPK_Table where KEY_ID = ? +COFFEE_LONG_PK_delete_all=delete from Coffee_LongPK_Table + +# +# Coffee DAO variant with Float Primary Key +# +COFFEE_FLOAT_PK_insert=insert into Coffee_FloatPK_Table values(?, ?, ?) +COFFEE_FLOAT_PK_select=select KEY_ID from Coffee_FloatPK_Table where KEY_ID = ? +COFFEE_FLOAT_PK_select_price=select PRICE from Coffee_FloatPK_Table where KEY_ID = ? +COFFEE_FLOAT_PK_update_price=update Coffee_FloatPK_Table set PRICE = ? where KEY_ID = ? +COFFEE_FLOAT_PK_delete=delete from Coffee_FloatPK_Table where KEY_ID = ? +COFFEE_FLOAT_PK_delete_all=delete from Coffee_FloatPK_Table + +# +# Coffee DAO variant with Compound Primary Key +# +COFFEE_COMPOUND_PK_insert=insert into Coffee_CompoundPK_Table values(?, ?, ?, ?, ?) +COFFEE_COMPOUND_PK_select=select KEY_ID1, KEY_ID2, KEY_ID3 from Coffee_CompoundPK_Table where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_select_price=select PRICE from Coffee_CompoundPK_Table where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_update_price=update Coffee_CompoundPK_Table set PRICE = ? where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_delete=delete from Coffee_CompoundPK_Table where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_delete_all=delete from Coffee_CompoundPK_Table + + +Simple_Select_Query= SELECT * FROM jstl_tab1 +Select_NoRows_Query= SELECT * FROM jstl_tab1 WHERE idNum = -9999 +Select_Jstl_Tab1_OneRow_Query= SELECT * FROM jstl_tab1 where idNum = 1 +Select_Jstl_Tab1_By_Id_Query= SELECT * FROM jstl_tab1 ORDER BY idNum +Select_Jstl_Tab1_Using_Param_Query= SELECT * FROM jstl_tab1 WHERE idNum = ? +Select_Jstl_Tab2_Using_Param_Query= SELECT idNum, lastName FROM jstl_tab2 WHERE idNum = ? + +Update_Jstl_Tab2_Using_Param_Query= UPDATE jstl_tab2 SET lastName= ? WHERE idNum = ? + +Delete_NoRows_Query= DELETE FROM jstl_tab2 WHERE idNum = -9999 +Delete_AllRows_Query= DELETE FROM jstl_tab2 + +Insert_Row_Query= INSERT INTO jstl_tab2(idNum, dob, firstName, lastName, rank, rating) VALUES (1, {d '1961-08-30'}, 'Clark', 'Kent', 1, 4.5) +Insert2_Row_Query= INSERT INTO jstl_tab2(idNum, dob, firstName, lastName, rank, rating) VALUES (2, {d '1980-12-30'}, 'Fred', 'Flinstone', 2, 4.5) +Insert3_Row_Query= INSERT INTO jstl_tab2(idNum, dob, firstName, lastName, rank, rating) VALUES (3, {d '1961-01-01'}, 'Scooby', 'Doo', 4, 4.5) +Insert4_Row_Query= INSERT INTO jstl_tab2(idNum, dob, firstName, lastName, rank, rating) VALUES (4, {d '1990-03-15'}, 'Bruce', 'Wayne', 3, 4.5) +Delete_Jstl_Tab2_Using_Param_Query=DELETE FROM jstl_tab2 where idNum = ? +Failed_Insert_Query=INSERT INTO jstl_tab2(idNum, dob, firstName, lastName, rank, rating) VALUES (2, '1992-02-03'}, NULL,NULL, 2, 4.5) +Select_Jstl_Tab2_AllRows_Query=SELECT * from jstl_tab2 +Invalid_SQL_Query=This Will Fail on Any RDBMS I Hope! +Select_Jstl_Tab1_MultiParam_Query=SELECT idNum, firstName, lastName from jstl_tab1 where idNum= ? and lastName = ? +Delete_Jstl_Tab2_MultiParam_Query=DELETE FROM jstl_tab2 where idNum = ? and lastName = ? +Select_Jstl_Tab3_Date_Query=SELECT * from jstl_tab3 where aDate= ? +Select_Jstl_Tab3_Time_Query=SELECT * from jstl_tab3 where aTime= ? +Select_Jstl_Tab3_Timestamp_Query=SELECT * from jstl_tab3 where aTimestamp= ? +Insert_Jstl_Tab3_Query=INSERT INTO jstl_tab3(idNum, aDate, aTime, aTimestamp) VALUES(1, {d '2001-08-30'}, {t '20:20:20'}, {ts '2001-08-30 20:20:20'}) +Insert_Jstl_Tab3_Date_Query=INSERT INTO jstl_tab3(idNum, aDate, aTime, aTimestamp) VALUES(1, ?, {t '20:20:20'}, {ts '2001-08-30 20:20:20'}) +Insert_Jstl_Tab3_Time_Query=INSERT INTO jstl_tab3(idNum, aDate, aTime, aTimestamp) VALUES(1, {d '2001-08-30'}, ?, {ts '2001-08-30 20:20:20'}) +Insert_Jstl_Tab3_Timestamp_Query=INSERT INTO jstl_tab3(idNum, aDate, aTime, aTimestamp) VALUES(1, {d '2001-08-30'}, {t '20:20:20'}, ?) +Delete_Jstl_Tab3_AllRows_Query= DELETE FROM jstl_tab3 + +Insert_Jstl_Tab3_Null_Query=INSERT INTO jstl_tab3(idNum, aDate, aTime, aTimestamp) VALUES(99, null, null, null) +Select_Jstl_Tab2_NullParam_Query= SELECT * FROM jstl_tab2 WHERE rank = ? +Insert_Jstl_Tab2_Null_Query=INSERT INTO jstl_tab2(idNum, dob, firstName, lastName, rank, rating) VALUES (5, {d '1970-07-04'}, 'Peter', 'Parker', 5, null) +Insert_Jstl_Tab2_NullParam_Query=INSERT INTO jstl_tab2(idNum, dob, firstName, lastName, rank, rating) VALUES (5, {d '1970-07-04'}, 'Peter', 'Parker', 5, ?) diff --git a/glassfish-runner/connector-platform-tck/jakartaeetck/tmp/tstest.jte b/glassfish-runner/connector-platform-tck/jakartaeetck/tmp/tstest.jte new file mode 100644 index 0000000000..40b28adac7 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/jakartaeetck/tmp/tstest.jte @@ -0,0 +1,83 @@ +#Properties for test: testWorkManagerImplementaion +#Mon Nov 11 10:22:41 IST 2024 +harness.socket.retry.count=10 +logical.hostname.servlet=server +harness.temp.directory=${ts.home}/tmp +whitebox-anno_no_md=java\:comp/env/eis/whitebox-anno_no_md +porting.ts.HttpsURLConnection.class.1=com.sun.ts.lib.implementation.sun.javaee.SunRIHttpsURLConnection +javamail.protocol=imap +whitebox-tx=java\:comp/env/eis/whitebox-tx +porting.ts.HttpsURLConnection.class.2=com.sun.ts.lib.implementation.sun.javaee.SunRIHttpsURLConnection +log.file.location=${vi.domain}/logs +password=j2ee +porting.ts.deploy.class.1=com.sun.ts.lib.implementation.sun.javaee.glassfish.AutoDeployment +porting.ts.deploy.class.2=com.sun.ts.lib.implementation.sun.javaee.glassfish.AutoDeploymentSeparateVM +db.supports.sequence=true +varbinarySize=48 +sigTestClasspath=${s1as.modules}/glassfish-corba-omgapi.jar${pathsep}${s1as.modules}/glassfish-corba-orb.jar${pathsep}${s1as.modules}/jakarta.enterprise.cdi-api.jar${pathsep}${s1as.modules}/jakarta.json-api.jar${pathsep}${s1as.modules}/jakarta.json.bind-api.jar${pathsep}${s1as.modules}/jakarta.batch-api.jar${pathsep}${s1as.modules}/jakarta.interceptor-api.jar${pathsep}${s1as.modules}/stax2-api.jar${pathsep}${s1as.modules}/jakarta.enterprise.concurrent-api.jar${pathsep}${s1as.modules}/jakarta.websocket-api.jar${pathsep}${s1as.modules}/jakarta.websocket-client-api.jar${pathsep}${s1as.modules}/jakarta.jms-api.jar${pathsep}${s1as.modules}/jakarta.faces.jar${pathsep}${s1as.modules}/jakarta.validation-api.jar${pathsep}${s1as.modules}/jakarta.annotation-api.jar${pathsep}${s1as.modules}/jakarta.xml.bind-api.jar${pathsep}${s1as.modules}/webservices-api-osgi.jar${pathsep}${pathsep}${s1as.modules}/jakarta.ws.rs-api.jar${pathsep}${s1as.modules}/weld-osgi-bundle.jar${pathsep}${s1as.modules}/jakarta.ejb-api.jar${pathsep}${s1as.modules}/jakarta.mail-api.jar${pathsep}${s1as.modules}/jakarta.persistence-api.jar${pathsep}${s1as.modules}/jakarta.resource-api.jar${pathsep}${s1as.modules}/jakarta.authorization-api.jar${pathsep}${s1as.modules}/jakarta.authentication-api.jar${pathsep}${s1as.modules}/jakarta.servlet-api.jar${pathsep}${s1as.modules}/jakarta.inject-api.jar${pathsep}${s1as.modules}/jakarta.el-api.jar${pathsep}${s1as.modules}/jakarta.servlet.jsp-api.jar${pathsep}${s1as.modules}/jakarta.servlet.jsp.jstl-api.jar${pathsep}${jtaJarClasspath}${pathsep}${s1as.modules}/jakarta.security.enterprise-api.jar${pathsep}${s1as.modules}/jakarta.activation-api.jar${pathsep}${jimage.dir}/java.base${pathsep}${jimage.dir}/java.rmi${pathsep}${jimage.dir}/java.sql${pathsep}${jimage.dir}/java.naming +porting.ts.login.class.1=com.sun.ts.lib.implementation.sun.javaee.GlassFishLoginContext +porting.ts.login.class.2=com.sun.ts.lib.implementation.sun.javaee.GlassFishLoginContext +DriverManager=no +authuser=javajoe +jstl.db.user=${derby.user} +securedWebServicePort=1044 +binarySize=24 +whitebox-multianno=java\:comp/env/eis/whitebox-multianno +cofSize=5 +javamail.mailbox=test1 +finder=cts +authpassword=javajoe +work.dir=/home/jenkins/agent/workspace/jakartaee-tck_master/JTWork +variable.mapper=org.glassfish.expressly.lang.VariableMapperImpl +imap.port=143 +ftable=ctstable2 +whitebox-xa=java\:comp/env/eis/whitebox-xa +whitebox-mdcomplete=java\:comp/env/eis/whitebox-mdcomplete +harness.log.delayseconds=0 +mailuser1= +harness.log.traceflag=true +transport_protocol=smtp +org.omg.CORBA.ORBClass=foo +javamail.root.path="" +whitebox-notx-param=java\:comp/env/eis/whitebox-notx-param +jms_timeout=10000 +test_classname=com.sun.ts.tests.connector.xa.workmgt.workmgtClient1 +rauser1=cts1 +whitebox-mixedmode=java\:comp/env/eis/whitebox-mixedmode +javamail.server= +db.dml.file=derby/derby.dml.sql +java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory +Driver=DriverOnlyUsedIfDriverManagerIsYes +rauser2=cts2 +harness.log.port=2000 +ws_wait=5 +vehicle=servlet +whitebox-notx=java\:comp/env/eis/whitebox-notx +javamail.username= +smtp.port=25 +jdbc.db=derby +iofile=MailIOFile.txt +porting.ts.url.class.2=com.sun.ts.lib.implementation.sun.common.SunRIURL +porting.ts.url.class.1=com.sun.ts.lib.implementation.sun.common.SunRIURL +webServerPort=8080 +user1=cts1 +porting.ts.jms.class.2=com.sun.ts.lib.implementation.sun.javaee.SunRIJMSAdmin +cofTypeSize=5 +platform.mode=jakartaEE +vehicle_archive_name=xa_workmgt_servlet_vehicle +ts_home=/home/g/tck/connector/platform-tck/glassfish-runner/connector-platform-tck/jakartaeetck/ +whitebox-permissiondd=java\:comp/env/eis/whitebox-permissiondd +porting.ts.jms.class.1=com.sun.ts.lib.implementation.sun.javaee.SunRIJMSAdmin +whitebox-xa-param=java\:comp/env/eis/whitebox-xa-param +service_eetest.vehicles=servlet +javamail.password= +jstl.db.password=${derby.passwd} +ptable=ctstable1 +rapassword2=cts2 +db1=db1OnlyUsedIfDriverManagerIsYes +whitebox-tx-param=java\:comp/env/eis/whitebox-tx-param +longvarbinarySize=50 +db2=db1OnlyUsedIfDriverManagerIsYes +user=j2ee +rapassword1=cts1 +webServerHost=localhost diff --git a/glassfish-runner/connector-platform-tck/pom.xml b/glassfish-runner/connector-platform-tck/pom.xml new file mode 100644 index 0000000000..34fa968ffe --- /dev/null +++ b/glassfish-runner/connector-platform-tck/pom.xml @@ -0,0 +1,734 @@ + + + + 4.0.0 + + org.glassfish + standalone-tck + 11.0.0-SNAPSHOT + ../pom.xml + + jakarta.tck + glassfish.connector-platform-tck + 11.0.0-SNAPSHOT + jar + + 1.9.1.Final + cts-derby-pool + ; + + derbyDB + cts1 + 1527 + localhost + cts1 + + + ${glassfish.home}/glassfish/bin/asadmin + ${project.build.directory}/glassfish7 + ${glassfish.home}/glassfish/lib + ${glassfish.home}/javadb/lib + + + derby + org.apache.derby.jdbc.ClientDriver + ${javadb.lib}/derbyclient.jar:${javadb.lib}/derbyshared.jar:${javadb.lib}/derbytools.jar + 64 + cts1 + 32 + jdbc:derby://localhost:1527/derbyDB;create=true + cts1 + + 5.9.1 + cts1 + cts1 + ./sql + jakarta.tck.jdbc + 11.0.0-SNAPSHOT + 1.0.0-M17 + + org.apache.derby.jdbc.ClientXADataSource + 64 + cts-derby-XA-pool + serverName=${derby.server}:portNumber=${derby.port}:user=${derby.user}:password=${derby.passwd}:DatabaseName=${derby.dbName}:connectionAttributes=";create\=true;" + javax.sql.XADataSource + 32 + + + + + org.junit + junit-bom + ${junit.jupiter.version} + pom + import + + + + + + org.junit.jupiter + junit-jupiter + ${junit.jupiter.version} + + + jakarta.tck + common + ${project.version} + + + jakarta.tck + libutil + ${project.version} + + + jakarta.tck + runtime + ${project.version} + + + jakarta.tck + connector + ${project.version} + test + + + org.jboss.arquillian.container + arquillian-container-test-spi + ${arquillian.core.version} + + + org.jboss.arquillian.junit5 + arquillian-junit5-container + ${arquillian.core.version} + test + + + org.junit.vintage + junit-vintage-engine + test + + + jakarta.tck.arquillian + arquillian-protocol-appclient + ${version.jakarta.tck.arquillian} + + + jakarta.tck.arquillian + arquillian-protocol-common + ${version.jakarta.tck.arquillian} + + + jakarta.tck.arquillian + arquillian-protocol-javatest + ${version.jakarta.tck.arquillian} + + + jakarta.tck.arquillian + arquillian-protocol-lib + ${version.jakarta.tck.arquillian} + + + jakarta.tck.arquillian + tck-porting-lib + ${version.jakarta.tck.arquillian} + + + org.omnifaces.arquillian + arquillian-glassfish-server-managed + 1.6 + test + + + org.apache.derby + derbyclient + 10.15.2.0 + + + org.apache.derby + derbytools + 10.15.2.0 + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.2.0 + + + 1-unpack + + unpack + + pre-integration-test + + + + org.glassfish.main.distributions + ${glassfish-artifact-id} + ${glassfish.container.version} + zip + true + ${project.build.directory} + + + + + + 2-copy-lib + + copy + + pre-integration-test + + + + jakarta.tck.arquillian + arquillian-protocol-lib + true + ${glassfish.lib.dir} + arquillian-protocol-lib.jar + + + jakarta.tck + libutil + true + ${glassfish.lib.dir} + libutil.jar + + + jakarta.tck.arquillian + tck-porting-lib + true + ${glassfish.lib.dir} + tck-porting-lib.jar + + + jakarta.tck + runtime + true + ${glassfish.lib.dir} + runtime.jar + + + jakarta.tck.arquillian + arquillian-protocol-lib + true + ${project.build.directory}/protocol + protocol.jar + + + + + + + + org.codehaus.mojo + exec-maven-plugin + + + 1-start-database + + exec + + pre-integration-test + + ${exec.asadmin} + + start-database + + + + + + + maven-resources-plugin + 3.0.2 + + + copy-resource-one + + copy-resources + + generate-sources + + ${glassfish.lib.dir} + + + ${basedir} + + *.jar + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + + + 11-stop-domain + + exec + + pre-integration-test + + ${exec.asadmin} + + stop-domain + + + + + 12-start-domain + + exec + + pre-integration-test + + ${exec.asadmin} + + start-domain + + + + + 13-create-jvm-options + + exec + + pre-integration-test + + ${exec.asadmin} + + create-jvm-options + -Dwhitebox-tx-map=${rauser1}=${user}:-Dwhitebox-tx-param-map=${rauser1}=${user}:-Dwhitebox-notx-map=${rauser1}=${user}:-Dwhitebox-notx-param-map=${rauser1}=${user}:-Dwhitebox-xa-map=${rauser1}=${user}:-Dwhitebox-xa-param-map=${rauser1}=${user} + + + + + 24-deploy-whitebox-tx-connector + + exec + + pre-integration-test + + ${exec.asadmin} + + deploy + ${project.basedir}/connectors/whitebox/whitebox-tx.rar + + + + + 25-create-whitebox-tx-connector-pool + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-connection-pool + --raname + whitebox-tx + --property + user=cts1:password=cts1:TSRValue=comp/TransactionSynchronizationRegistry + --connectiondefinition + com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory + whitebox-tx-pool + + + + + 26-create-whitebox-tx-jndi + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-resource + --poolname + whitebox-tx-pool + eis/whitebox-tx + + + + + 27-deploy-whitebox-connector + + exec + + pre-integration-test + + ${exec.asadmin} + + deploy + ${project.basedir}/connectors/whitebox/whitebox-xa.rar + + + + + 28-create-whitebox-connector-pool + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-connection-pool + --raname + whitebox-xa + --property + user=cts1:password=cts1:TSRValue=comp/TransactionSynchronizationRegistry + --connectiondefinition + com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory + whitebox-xa-pool + + + + + 29-create-whitebox-xa-jndi + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-resource + --poolname + whitebox-xa-pool + eis/whitebox-xa + + + + + 30-deploy-whitebox-notx-connector + + exec + + pre-integration-test + + ${exec.asadmin} + + deploy + ${project.basedir}/connectors/whitebox/whitebox-notx.rar + + + + + 31-create-whitebox-notx-connector-pool + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-connection-pool + --raname + whitebox-notx + --property + user=cts1:password=cts1:TSRValue=comp/TransactionSynchronizationRegistry + --connectiondefinition + com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory + whitebox-notx-pool + + + + + 32-create-whitebox-notx-jndi + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-resource + --poolname + whitebox-notx-pool + eis/whitebox-notx + + + + + 33-deploy-whitebox-mdcomplete-connector + + exec + + pre-integration-test + + ${exec.asadmin} + + deploy + ${project.basedir}/connectors/whitebox/mdcomplete/whitebox-mdcomplete.rar + + + + + 34-create-whitebox-mdcomplete-connector-pool + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-connection-pool + --raname + whitebox-mdcomplete + --property + user=cts1:password=cts1:TSRValue=comp/TransactionSynchronizationRegistry + --connectiondefinition + com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory + whitebox-mdcomplete-pool + + + + + 35-create-whitebox-mdcomplete-jndi + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-resource + --poolname + whitebox-mdcomplete-pool + eis/whitebox-mdcomplete + + + + + 36-deploy-whitebox-anno_no_md-connector + + exec + + pre-integration-test + + ${exec.asadmin} + + deploy + ${project.basedir}/connectors/whitebox/annotated/whitebox-anno_no_md.rar + + + + + 37-create-whitebox-anno_no_md-connector-pool + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-connection-pool + --raname + whitebox-anno_no_md + --property + user=cts1:password=cts1:TSRValue=comp/TransactionSynchronizationRegistry + --connectiondefinition + com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory + whitebox-anno_no_md-pool + + + + + 38-create-whitebox-anno_no_md-jndi + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-resource + --poolname + whitebox-anno_no_md-pool + eis/whitebox-anno_no_md + + + + + 42-deploy-whitebox-mixedmode-connector + + exec + + pre-integration-test + + ${exec.asadmin} + + deploy + ${project.basedir}/connectors/whitebox/mixedmode/whitebox-mixedmode.rar + + + + + 43-create-whitebox-mixedmode-connector-pool + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-connection-pool + --raname + whitebox-mixedmode + --property + user=cts1:password=cts1:TSRValue=comp/TransactionSynchronizationRegistry + --connectiondefinition + com.sun.ts.tests.common.connector.whitebox.TSConnectionFactory + whitebox-mixedmode-pool + + + + + 44-create-whitebox-mixedmode-jndi + + exec + + pre-integration-test + + ${exec.asadmin} + + create-connector-resource + --poolname + whitebox-mixedmode-pool + eis/whitebox-mixedmode + + + + + 90-stop-domain + + exec + + pre-integration-test + + ${exec.asadmin} + + stop-domain + + + + + + + maven-failsafe-plugin + 3.0.0-M5 + + + xa-javatest-tests + + integration-test + verify + + + jakarta.tck:connector + + ${project.build.directory}/${glassfish.toplevel.dir}/javadb/lib/derbytools.jar + ${project.build.directory}/${glassfish.toplevel.dir}/javadb/lib/derbyclient.jar + ${project.build.directory}/${glassfish.toplevel.dir}/javadb/lib/derby.jar + ${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/glassfish-naming.jar + + + ${project.build.directory}/${glassfish.toplevel.dir} + ${env.TS_HOME} + ${project.basedir} + arquillian.xml + + + **/*Servlet*.* + **/*JSP*.* + + + ${project.build.directory}/${glassfish.toplevel.dir} + + + + + + + maven-failsafe-plugin + 3.0.0-M5 + + + xa-appclient-tests + + integration-test + verify + + + jakarta.tck:connector + + ${project.build.directory}/${glassfish.toplevel.dir}/javadb/lib/derbytools.jar + ${project.build.directory}/${glassfish.toplevel.dir}/javadb/lib/derbyclient.jar + ${project.build.directory}/${glassfish.toplevel.dir}/javadb/lib/derby.jar + ${project.build.directory}/${glassfish.toplevel.dir}/glassfish/modules/glassfish-naming.jar + + + ${project.build.directory}/${glassfish.toplevel.dir} + com.sun.enterprise.naming.impl.SerialInitContextFactory + ${env.TS_HOME} + ${project.basedir} + appclient-arquillian.xml + + + **/*EJB*.* + + + ${project.build.directory}/${glassfish.toplevel.dir} + + + + + + + + + + full + + true + + + glassfish + + + + web + + web + + + + diff --git a/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.cmp.sql b/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.cmp.sql new file mode 100644 index 0000000000..12466f0d55 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.cmp.sql @@ -0,0 +1,288 @@ +ALTER TABLE PHONEEJB_TABLE DROP CONSTRAINT FK_FOR_ADDRESSEJB_ ; +ALTER TABLE ORDEREJB_TABLE DROP CONSTRAINT FK4_FOR_CUSTOMEREJ ; +ALTER TABLE ORDEREJB_TABLE DROP CONSTRAINT FK0_FOR_LINEITEMEJ ; +ALTER TABLE FKS_FOR_ALIAS_CUSTOMER DROP CONSTRAINT FK_FOR_ALIASEJB_TA ; +ALTER TABLE LINEITEMEJB_TABLE DROP CONSTRAINT FK1_FOR_ORDEREJB_T ; +ALTER TABLE LINEITEMEJB_TABLE DROP CONSTRAINT FK_FOR_PRODUCTEJB_ ; +ALTER TABLE SPOUSEEJB_TABLE DROP CONSTRAINT FK_INFOEJBTAB ; +ALTER TABLE SPOUSEEJB_TABLE DROP CONSTRAINT FK7_CUSTOMEREJBTAB ; +ALTER TABLE INFOEJB_TABLE DROP CONSTRAINT FK_SPOUSEEJBTAB ; +ALTER TABLE COMPLEXPK_TABLE1 DROP CONSTRAINT FK_FOR_LINEITEMS ; +ALTER TABLE COMPLEXPK_LINEITEM_TABLE1 DROP CONSTRAINT FK_FOR_ID ; +ALTER TABLE FKS_ALIASNOOP_CUSTNOOP DROP CONSTRAINT FK2_ALIASEJBTAB ; +ALTER TABLE FKS_ALIASNOOP_CUSTNOOP DROP CONSTRAINT FK8_CUSTOMEREJBTAB ; +ALTER TABLE FKS_FOR_ALIAS_CUSTOMER DROP CONSTRAINT FK_FOR_CUSTOMEREJB ; +ALTER TABLE ALIASEJB_TABLE DROP CONSTRAINT FK1_FOR_CUSTOMEREJ ; +ALTER TABLE ALIASEJB_TABLE DROP CONSTRAINT FK2_FOR_CUSTOMEREJ ; +ALTER TABLE CREDITCARDEJB_TABLE DROP CONSTRAINT FK3_FOR_CUSTOMEREJ ; + + +DROP TABLE COMMON_TABLE; +CREATE TABLE COMMON_TABLE (ID INT NOT NULL, BRANDNAME VARCHAR(25), PRICE REAL, CONSTRAINT COMMON_TABLE PRIMARY KEY (ID)); + +DROP TABLE COMMON_TABLE2; +CREATE TABLE COMMON_TABLE2 (ID INT NOT NULL, BRANDNAME VARCHAR(25), PRICE REAL, CONSTRAINT COMMON_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE COMMON_TABLE3; +CREATE TABLE COMMON_TABLE3 (ID INT NOT NULL, BRANDNAME VARCHAR(25), PRICE REAL, CONSTRAINT COMMON_TABLE3 PRIMARY KEY (ID)); + +DROP TABLE LOCALACCESSTEST_TABLE1; +CREATE TABLE LOCALACCESSTEST_TABLE1 ( ID INT NOT NULL, NAME VARCHAR(25) , VALUE REAL , CONSTRAINT LOCALACCESS_TAB1 PRIMARY KEY (ID)); + +DROP TABLE EBACCESSTEST_TABLE2; +CREATE TABLE EBACCESSTEST_TABLE2 ( ID INT NOT NULL, NAME VARCHAR(25) , VALUE REAL , CONSTRAINT EBACCESSTEST_TABL1 PRIMARY KEY (ID)); + +DROP TABLE ENTITY_BEAN_TABLE1; +CREATE TABLE ENTITY_BEAN_TABLE1 ( KEY_ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT ENTITY_BEAN_TABLE2 PRIMARY KEY (KEY_ID)); + +DROP TABLE PHONEEJB_TABLE; +CREATE TABLE PHONEEJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, AREA VARCHAR(255) , PHONE_NUMBER VARCHAR(255) , FK_FOR_ADDRESSEJB_TABLE VARCHAR(255) ); + +DROP TABLE ADDRESSEJB_TABLE; +CREATE TABLE ADDRESSEJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, STREET VARCHAR(255) , CITY VARCHAR(255) , STATE VARCHAR(255) , ZIP VARCHAR(255) , FK5_FOR_CUSTOMEREJB_TABLE VARCHAR(255) , FK6_FOR_CUSTOMEREJB_TABLE VARCHAR(255) ); + +DROP TABLE CUSTOMEREJB_TABLE; +CREATE TABLE CUSTOMEREJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, NAME VARCHAR(255) , COUNTRY BLOB(2G)); + +DROP TABLE ALIASEJB_TABLE; +CREATE TABLE ALIASEJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, ALIAS VARCHAR(255) , FK1_FOR_CUSTOMEREJB_TABLE VARCHAR(255) , FK2_FOR_CUSTOMEREJB_TABLE VARCHAR(255) ); + +DROP TABLE FKS_FOR_ALIAS_CUSTOMER; +CREATE TABLE FKS_FOR_ALIAS_CUSTOMER ( FK_FOR_CUSTOMEREJB_TABLE VARCHAR(255) NOT NULL, FK_FOR_ALIASEJB_TABLE VARCHAR(255) ); + +DROP table FKS_ALIASNOOP_CUSTNOOP ; +CREATE TABLE FKS_ALIASNOOP_CUSTNOOP( FK8_FOR_CUSTOMEREJB_TABLE VARCHAR(255) , FK2_FOR_ALIASEJB_TABLE VARCHAR(255)); + +DROP TABLE CREDITCARDEJB_TABLE; +CREATE TABLE CREDITCARDEJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, TYPE VARCHAR(255) , EXPIRES VARCHAR(255) , APPROVED DECIMAL(18,0) , CREDITCARD_NUMBER VARCHAR(255) , BALANCE DOUBLE, FK3_FOR_CUSTOMEREJB_TABLE VARCHAR(255) , FK_FOR_ORDEREJB_TABLE VARCHAR(255) ); + +DROP TABLE ORDEREJB_TABLE; +CREATE TABLE ORDEREJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, TOTALPRICE DOUBLE , FK4_FOR_CUSTOMEREJB_TABLE VARCHAR(255) , FK0_FOR_LINEITEMEJB_TABLE VARCHAR(255) ); + +DROP TABLE PRODUCTEJB_TABLE; +CREATE TABLE PRODUCTEJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, NAME VARCHAR(255) , PRICE DOUBLE , QUANTITY INT, PNUM INT ); + +DROP table INFOEJB_TABLE ; +CREATE TABLE INFOEJB_TABLE (ID VARCHAR(255) PRIMARY KEY NOT NULL, INFOSTREET VARCHAR(255), INFOCITY VARCHAR(255), INFOSTATE VARCHAR(255), INFOZIP VARCHAR(255), FK_FOR_SPOUSEEJB_TABLE VARCHAR(255) ) ; + +DROP table SPOUSEEJB_TABLE ; +CREATE TABLE SPOUSEEJB_TABLE (ID VARCHAR(255) PRIMARY KEY NOT NULL, FIRSTNAME VARCHAR(255), MAIDENNAME VARCHAR(255), LASTNAME VARCHAR(255), SOCSECNUM VARCHAR(255), FK7_FOR_CUSTOMEREJB_TABLE VARCHAR(255), FK_FOR_INFOEJB_TABLE VARCHAR(255) ); + +DROP TABLE LINEITEMEJB_TABLE; +CREATE TABLE LINEITEMEJB_TABLE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, QUANTITY INT , FK_FOR_PRODUCTEJB_TABLE VARCHAR(255) , FK1_FOR_ORDEREJB_TABLE VARCHAR(255) ); + +ALTER TABLE PHONEEJB_TABLE ADD CONSTRAINT FK_FOR_ADDRESSEJB_ FOREIGN KEY (FK_FOR_ADDRESSEJB_TABLE) REFERENCES ADDRESSEJB_TABLE (ID) ; + +ALTER TABLE ALIASEJB_TABLE ADD CONSTRAINT FK1_FOR_CUSTOMEREJ FOREIGN KEY (FK1_FOR_CUSTOMEREJB_TABLE) REFERENCES CUSTOMEREJB_TABLE (ID) ; + +ALTER TABLE ALIASEJB_TABLE ADD CONSTRAINT FK2_FOR_CUSTOMEREJ FOREIGN KEY (FK2_FOR_CUSTOMEREJB_TABLE) REFERENCES CUSTOMEREJB_TABLE (ID) ; + +ALTER TABLE FKS_FOR_ALIAS_CUSTOMER ADD CONSTRAINT FK_FOR_CUSTOMEREJB FOREIGN KEY (FK_FOR_CUSTOMEREJB_TABLE) REFERENCES CUSTOMEREJB_TABLE (ID) ; + +ALTER TABLE FKS_FOR_ALIAS_CUSTOMER ADD CONSTRAINT FK_FOR_ALIASEJB_TA FOREIGN KEY (FK_FOR_ALIASEJB_TABLE) REFERENCES ALIASEJB_TABLE (ID) ; + +ALTER TABLE FKS_ALIASNOOP_CUSTNOOP add constraint FK2_ALIASEJBTAB Foreign Key (FK2_FOR_ALIASEJB_TABLE) references ALIASEJB_TABLE(id) ; + +ALTER TABLE FKS_ALIASNOOP_CUSTNOOP add constraint FK8_CUSTOMEREJBTAB Foreign Key (FK8_FOR_CUSTOMEREJB_TABLE) references CUSTOMEREJB_TABLE(id) ; + +ALTER TABLE CREDITCARDEJB_TABLE ADD CONSTRAINT FK3_FOR_CUSTOMEREJ FOREIGN KEY (FK3_FOR_CUSTOMEREJB_TABLE) REFERENCES CUSTOMEREJB_TABLE (ID) ; + +ALTER TABLE CREDITCARDEJB_TABLE ADD CONSTRAINT FK_FOR_ORDEREJB_TA FOREIGN KEY (FK_FOR_ORDEREJB_TABLE) REFERENCES ORDEREJB_TABLE (ID) ; + +ALTER TABLE ORDEREJB_TABLE ADD CONSTRAINT FK4_FOR_CUSTOMEREJ FOREIGN KEY (FK4_FOR_CUSTOMEREJB_TABLE) REFERENCES CUSTOMEREJB_TABLE (ID) ; + +ALTER TABLE ORDEREJB_TABLE ADD CONSTRAINT FK0_FOR_LINEITEMEJ FOREIGN KEY (FK0_FOR_LINEITEMEJB_TABLE) REFERENCES LINEITEMEJB_TABLE (ID) ; + +ALTER TABLE LINEITEMEJB_TABLE ADD CONSTRAINT FK_FOR_PRODUCTEJB_ FOREIGN KEY (FK_FOR_PRODUCTEJB_TABLE) REFERENCES PRODUCTEJB_TABLE (ID) ; + +ALTER TABLE LINEITEMEJB_TABLE ADD CONSTRAINT FK1_FOR_ORDEREJB_T FOREIGN KEY (FK1_FOR_ORDEREJB_TABLE) REFERENCES ORDEREJB_TABLE (ID) ; + +ALTER TABLE ADDRESSEJB_TABLE ADD CONSTRAINT FK5_FOR_CUSTOMEREJ FOREIGN KEY (FK5_FOR_CUSTOMEREJB_TABLE) REFERENCES CUSTOMEREJB_TABLE (ID) ; + +ALTER TABLE ADDRESSEJB_TABLE ADD CONSTRAINT FK6_FOR_CUSTOMEREJ FOREIGN KEY (FK6_FOR_CUSTOMEREJB_TABLE) REFERENCES CUSTOMEREJB_TABLE (ID) ; + +ALTER TABLE SPOUSEEJB_TABLE add constraint FK7_CUSTOMEREJBTAB Foreign Key (FK7_FOR_CUSTOMEREJB_TABLE) references CUSTOMEREJB_TABLE(ID) ; + +ALTER TABLE SPOUSEEJB_TABLE add constraint FK_INFOEJBTAB Foreign Key (FK_FOR_INFOEJB_TABLE) references INFOEJB_TABLE(ID) ; + +ALTER TABLE INFOEJB_TABLE add constraint FK_SPOUSEEJBTAB Foreign Key (FK_FOR_SPOUSEEJB_TABLE) references SPOUSEEJB_TABLE(ID) ; + +DROP table COMPLEXPK_LINEITEM_TABLE1 ; +CREATE table COMPLEXPK_LINEITEM_TABLE1(ID varchar(25) NOT NULL, QUANTITY INTEGER, FK_FOR_ID INTEGER, FK_FOR_BRANDNAME varchar(25), constraint PK_LineItem_Tab1 primary key(ID)); + +DROP TABLE COMPLEXPK_TABLE1; +CREATE TABLE COMPLEXPK_TABLE1 ( ID INT NOT NULL, BRANDNAME VARCHAR(25) NOT NULL, PRICE REAL , PRODUCT BLOB(2G), FK_FOR_LINEITEMS varchar(25), CONSTRAINT COMPLEXPK_TABLE1 PRIMARY KEY (ID, BRANDNAME)); + +ALTER TABLE COMPLEXPK_TABLE1 add constraint FK_FOR_LINEITEMS Foreign Key (FK_FOR_LINEITEMS) references COMPLEXPK_LINEITEM_TABLE1(ID); + +ALTER TABLE COMPLEXPK_LINEITEM_TABLE1 add constraint FK_FOR_ID Foreign Key (FK_FOR_ID, FK_FOR_BRANDNAME) references COMPLEXPK_TABLE1(ID,BRANDNAME) ; + +DROP TABLE CMP20_ENTITYCMP_TABLE1; +CREATE TABLE CMP20_ENTITYCMP_TABLE1 ( KEY_ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , B BLOB(2G), CONSTRAINT CMP20_ENTITYCMP_TA PRIMARY KEY (KEY_ID)); + +DROP table CMP20_ENTITY_CTX_TABLE1 ; +CREATE TABLE CMP20_ENTITY_CTX_TABLE1 (KEY_ID VARCHAR(255) NOT NULL, BRAND_NAME VARCHAR(255) , CONSTRAINT CMP20ENTITYCTXTAB primary key (KEY_ID) ) ; + +DROP TABLE CMP20_HANDLE_TABLE1; +CREATE TABLE CMP20_HANDLE_TABLE1 ( KEY_ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_HANDLE_TABLE PRIMARY KEY (KEY_ID)); + +DROP TABLE CMP20_HOMEM_TABLE1; +CREATE TABLE CMP20_HOMEM_TABLE1 ( NAME VARCHAR(25) , STATE VARCHAR(25) , CODE VARCHAR(25) , ZIP INT , ID INT NOT NULL, EXPIRES VARCHAR(25) , STREET VARCHAR(25) , CARDBALANCE DOUBLE , CITY VARCHAR(25) , HOMEPHONE VARCHAR(25) , WORKPHONE VARCHAR(25) , LASTNAME VARCHAR(25) , PAYMENTTYPE VARCHAR(25) , CREDITCARDNUMBER VARCHAR(25) , ACCOUNTNUMBER VARCHAR(25) , MIDDLENAME VARCHAR(25) , FIRSTNAME VARCHAR(25) , CONSTRAINT CMP20_HOMEM_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE UNKNOWNPK_TABLE1; +CREATE TABLE UNKNOWNPK_TABLE1 ( MIDDLENAME VARCHAR(255) , LASTNAME VARCHAR(25) , FIRSTNAME VARCHAR(25) , STREET VARCHAR(25) , CITY VARCHAR(25) , STATE VARCHAR(25) , ZIP INT , ACCOUNTNUMBER VARCHAR(25) , ABC DECIMAL(29,0) NOT NULL, CONSTRAINT UNKNOWNPK_TABLE11 PRIMARY KEY (ABC)); + +DROP TABLE CMP_COMPLEXPK_TABLE1; +CREATE TABLE CMP_COMPLEXPK_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) NOT NULL, PRICE REAL , PRODUCT BLOB(2G), CONSTRAINT CMP_COMPLEXPK_TABL PRIMARY KEY (ID, BRAND_NAME)); + +DROP TABLE LRAPITEST_TABLE1; +CREATE TABLE LRAPITEST_TABLE1 ( ID INT NOT NULL, NAME VARCHAR(25) , VALUE REAL , CONSTRAINT LRAPITEST_TABLE11 PRIMARY KEY (ID)); + +DROP TABLE LRAPITEST_TABLE2; +CREATE TABLE LRAPITEST_TABLE2 ( ID INT NOT NULL, NAME VARCHAR(25) , VALUE REAL , CONSTRAINT LRAPITEST_TABLE21 PRIMARY KEY (ID)); + +DROP TABLE LRAPITEST_TABLE3; +CREATE TABLE LRAPITEST_TABLE3 ( ID VARCHAR(25) NOT NULL, NAME VARCHAR(25) , VALUE REAL , CONSTRAINT LRAPITEST_TABLE31 PRIMARY KEY (ID)); + +DROP TABLE COMPAT_ENTITYCMP_TABLE1; +CREATE TABLE COMPAT_ENTITYCMP_TABLE1 ( KEY_ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT COMPAT_ENTITYCMP_T PRIMARY KEY (KEY_ID)); + + +DROP TABLE TX_NOT_TABLE3; +CREATE TABLE TX_NOT_TABLE3 ( KEY_ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT TX_NOT_TABLE31 PRIMARY KEY (KEY_ID)); + +DROP TABLE TX_NOT_TABLE4; +CREATE TABLE TX_NOT_TABLE4 ( KEY_ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT TX_NOT_TABLE41 PRIMARY KEY (KEY_ID)); + +DROP TABLE CMP11PK_TABLE1; +CREATE TABLE CMP11PK_TABLE1 ( CMPID VARCHAR(25) NOT NULL, CMPBRANDNAME VARCHAR(25) , CMPPRICE REAL , CONSTRAINT CMP11PK_TABLE11 PRIMARY KEY (CMPID)); + +DROP TABLE CMP11PK_TABLE2; +CREATE TABLE CMP11PK_TABLE2 ( CMPID INT NOT NULL, CMPBRANDNAME VARCHAR(25) , CMPPRICE REAL , CONSTRAINT CMP11PK_TABLE21 PRIMARY KEY (CMPID)); + +DROP TABLE CMP11PK_TABLE3; +CREATE TABLE CMP11PK_TABLE3 ( CMPID REAL NOT NULL, CMPBRANDNAME VARCHAR(25) , CMPPRICE REAL , CONSTRAINT CMP11PK_TABLE31 PRIMARY KEY (CMPID)); + +DROP TABLE CMP11PK_TABLE4; +CREATE TABLE CMP11PK_TABLE4 ( PMIDINTEGER INT NOT NULL, PMIDSTRING VARCHAR(25) NOT NULL, PMIDFLOAT REAL NOT NULL, CMPBRANDNAME VARCHAR(25) , CMPPRICE REAL , CONSTRAINT CMP11PK_TABLE41 PRIMARY KEY (PMIDINTEGER, PMIDSTRING, PMIDFLOAT)); + +DROP TABLE CMP20_DEP_PKEY_TABLE1; +CREATE TABLE CMP20_DEP_PKEY_TABLE1 ( KEY_ID DECIMAL(18,0) NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_DEP_PKEY_TAB PRIMARY KEY (KEY_ID)); + +DROP TABLE CMP20_DEP_PKEY_TABLE2; +CREATE TABLE CMP20_DEP_PKEY_TABLE2 ( KEY_ID REAL NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_DEP_PKEY_TA1 PRIMARY KEY (KEY_ID)); + +DROP TABLE CMP20_DEP_PKEY_TABLE3; +CREATE TABLE CMP20_DEP_PKEY_TABLE3 ( KEY_ID VARCHAR(50) NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_DEP_PKEY_TA2 PRIMARY KEY (KEY_ID)); + +DROP TABLE CMP20_DEP_PKEY_TABLE4; +CREATE TABLE CMP20_DEP_PKEY_TABLE4 ( PMIDINTEGER INT NOT NULL, PMIDSTRING VARCHAR(25) NOT NULL, PMIDFLOAT REAL NOT NULL, BRANDNAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_DEP_PKEY_TA3 PRIMARY KEY (PMIDINTEGER, PMIDSTRING, PMIDFLOAT)); + +DROP TABLE TABLER5_DELETE; +CREATE TABLE TABLER5_DELETE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, NAME VARCHAR(255) , VALUE DECIMAL(18,0) NOT NULL, FK1_FOR_TABLER6_DELETE_ID VARCHAR(255) , FK2_FOR_TABLER6_DELETE_ID VARCHAR(255) , FK1_FOR_TABLER7_DELETE_ID VARCHAR(255) , FK2_FOR_TABLER7_DELETE_ID VARCHAR(255) ); + +DROP TABLE TABLER7_DELETE; +CREATE TABLE TABLER7_DELETE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, NAME VARCHAR(255) , VALUE DECIMAL(18,0) NOT NULL, FK_FOR_TABLER6_DELETE_ID VARCHAR(255) ); + +DROP TABLE TABLER6_DELETE; +CREATE TABLE TABLER6_DELETE ( ID VARCHAR(255) PRIMARY KEY NOT NULL, NAME VARCHAR(255) , VALUE DECIMAL(18,0) NOT NULL); + +ALTER TABLE TABLER5_DELETE ADD CONSTRAINT FK1_FOR_TABLER6_DE FOREIGN KEY (FK1_FOR_TABLER6_DELETE_ID) REFERENCES TABLER6_DELETE (ID) ; + +ALTER TABLE TABLER5_DELETE ADD CONSTRAINT FK2_FOR_TABLER6_DE FOREIGN KEY (FK2_FOR_TABLER6_DELETE_ID) REFERENCES TABLER6_DELETE (ID) ; + +ALTER TABLE TABLER5_DELETE ADD CONSTRAINT FK1_FOR_TABLER7_DE FOREIGN KEY (FK1_FOR_TABLER7_DELETE_ID) REFERENCES TABLER7_DELETE (ID) ; + +ALTER TABLE TABLER5_DELETE ADD CONSTRAINT FK2_FOR_TABLER7_DE FOREIGN KEY (FK2_FOR_TABLER7_DELETE_ID) REFERENCES TABLER7_DELETE (ID) ; + +ALTER TABLE TABLER7_DELETE ADD CONSTRAINT FK_FOR_TABLER6_DEL FOREIGN KEY (FK_FOR_TABLER6_DELETE_ID) REFERENCES TABLER6_DELETE (ID) ; + +DROP TABLE CMP20_LSECP_TABLE1; +CREATE TABLE CMP20_LSECP_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_LSECP_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE CMP20_LSECP_TABLE2; +CREATE TABLE CMP20_LSECP_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_LSECP_TABLE3 PRIMARY KEY (ID)); + +DROP TABLE CMP20_LSECP_TABLE3; +CREATE TABLE CMP20_LSECP_TABLE3 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_LSECP_TABLE4 PRIMARY KEY (ID)); + +DROP TABLE CMP20_LSECR_TABLE1; +CREATE TABLE CMP20_LSECR_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_LSECR_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE CMP20_LSECR_TABLE2; +CREATE TABLE CMP20_LSECR_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_LSECR_TABLE3 PRIMARY KEY (ID)); + +DROP TABLE CMP20_LSECR_TABLE3; +CREATE TABLE CMP20_LSECR_TABLE3 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_LSECR_TABLE4 PRIMARY KEY (ID)); + +DROP TABLE CMP20_SEC_TABLE1; +CREATE TABLE CMP20_SEC_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_SEC_TABLE11 PRIMARY KEY (ID)); + +DROP TABLE CMP20_SEC_TABLE2; +CREATE TABLE CMP20_SEC_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , + CONSTRAINT CMP20_SEC_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE CMP20_SECP_TABLE1; +CREATE TABLE CMP20_SECP_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_SECP_TABLE11 PRIMARY KEY (ID)); + +DROP TABLE CMP20_SECP_TABLE2; +CREATE TABLE CMP20_SECP_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_SECP_TABLE21 PRIMARY KEY (ID)); + +DROP TABLE CMP20_SECP_TABLE3; +CREATE TABLE CMP20_SECP_TABLE3 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_SECP_TABLE31 PRIMARY KEY (ID)); + +DROP TABLE CMP_SEC_TABLE1; +CREATE TABLE CMP_SEC_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , + CONSTRAINT CMP_SEC_TABLE11 PRIMARY KEY (ID)); + +DROP TABLE CMP_SEC_TABLE2; +CREATE TABLE CMP_SEC_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , + CONSTRAINT CMP_SEC_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE CMP_SECP_TABLE1; +CREATE TABLE CMP_SECP_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , + CONSTRAINT CMP_SECP_TABLE1 PRIMARY KEY (ID)); + +DROP TABLE CMP_SECP_TABLE2; +CREATE TABLE CMP_SECP_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , + CONSTRAINT CMP_SECP_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE CMP_SECP_TABLE3; +CREATE TABLE CMP_SECP_TABLE3 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP_SECP_TABLE PRIMARY KEY (ID)); + +DROP TABLE CMP20_SECRASP_TABLE1; +CREATE TABLE CMP20_SECRASP_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_SECRASP_TABL PRIMARY KEY (ID)); + +DROP TABLE CMP20_SECRASP_TABLE2; +CREATE TABLE CMP20_SECRASP_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_SECRASP_TAB1 PRIMARY KEY (ID)); + +DROP TABLE CMP20_SECRASP_TABLE3; +CREATE TABLE CMP20_SECRASP_TABLE3 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP20_SECRASP_TAB2 PRIMARY KEY (ID)); + +DROP TABLE CMP_SECRASP_TABLE1; +CREATE TABLE CMP_SECRASP_TABLE1 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP_SECRASP_TABLE2 PRIMARY KEY (ID)); + +DROP TABLE CMP_SECRASP_TABLE2; +CREATE TABLE CMP_SECRASP_TABLE2 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP_SECRASP_TABLE3 PRIMARY KEY (ID)); + +DROP TABLE CMP_SECRASP_TABLE3; +CREATE TABLE CMP_SECRASP_TABLE3 ( ID INT NOT NULL, BRAND_NAME VARCHAR(25) , PRICE REAL , CONSTRAINT CMP_SECRASP_TABLE4 PRIMARY KEY (ID)); + +DROP table TIMER_TABLE1 ; +CREATE TABLE TIMER_TABLE1 (KEY_ID INTEGER NOT NULL, BRAND_NAME VARCHAR(255), PRICE REAL NOT NULL, CONSTRAINT TIMER_TABLE1 PRIMARY KEY (KEY_ID) ); + +DROP table TIMER_FLAGSTORE ; +CREATE TABLE TIMER_FLAGSTORE (KEY_ID INTEGER NOT NULL, BRAND_NAME VARCHAR(255) , PRICE REAL NOT NULL , REQUIRESNEWACCESSED SMALLINT NOT NULL, REQUIREDACCESSED SMALLINT NOT NULL , CONSTRAINT TIMER_FLAGSTORE PRIMARY KEY (KEY_ID) ); + +DROP table CMP20_JACC_TABLE1 ; +CREATE TABLE CMP20_JACC_TABLE1 (ARG1 VARCHAR(255) NOT NULL, ARG2 INTEGER NOT NULL, ARG3 INTEGER NOT NULL, CONSTRAINT CMP20_JACC_TAB PRIMARY KEY (ARG1,ARG2,ARG3) ); + +DROP TABLE EMPLOYEEEJB ; +CREATE TABLE EMPLOYEEEJB (HIREDATE DATE , ID INTEGER NOT NULL, FIRSTNAME VARCHAR(256) , SALARY REAL NOT NULL, LASTNAME VARCHAR(256) , EMPLOYEEEJB_ID INTEGER , DEPARTMENTEJB_ID INTEGER , CONSTRAINT PK_EMPLOYEEEJB PRIMARY KEY (ID)) ; + +DROP TABLE DEPARTMENTEJB ; +CREATE TABLE DEPARTMENTEJB (NAME VARCHAR(256) , ID INTEGER NOT NULL, CONSTRAINT PK_DEPARTMENTEJB PRIMARY KEY (ID)) ; + +ALTER TABLE EMPLOYEEEJB ADD CONSTRAINT FK_MANAGER FOREIGN KEY (EMPLOYEEEJB_ID) REFERENCES EMPLOYEEEJB (ID) ; +ALTER TABLE EMPLOYEEEJB ADD CONSTRAINT FK_DEPARTMENT FOREIGN KEY (DEPARTMENTEJB_ID) REFERENCES DEPARTMENTEJB (ID) ; + diff --git a/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sprocs.sql b/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sprocs.sql new file mode 100644 index 0000000000..e1054cc968 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sprocs.sql @@ -0,0 +1,347 @@ +drop procedure Numeric_Proc ; +create procedure Numeric_Proc(out MAX_PARAM NUMERIC(30,15), out MIN_PARAM NUMERIC(30,15), out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Numeric_Proc' parameter style java; + +drop procedure Decimal_Proc ; +create procedure Decimal_Proc(out MAX_PARAM DECIMAL(30,15), out MIN_PARAM DECIMAL(30,15), out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Decimal_Proc' parameter style java; + +drop procedure Double_Proc ; +create procedure Double_Proc (out MAX_PARAM DOUBLE PRECISION, out MIN_PARAM DOUBLE PRECISION, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Double_Proc' parameter style java; + +drop procedure Float_Proc ; +create procedure Float_Proc (out MAX_PARAM FLOAT, out MIN_PARAM FLOAT, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Float_Proc' parameter style java; + +drop procedure Real_Proc ; +create procedure Real_Proc (out MAX_PARAM REAL, out MIN_PARAM REAL, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Real_Proc' parameter style java; + +drop procedure Bit_Proc ; +create procedure Bit_Proc (out MAX_PARAM BOOLEAN, out MIN_PARAM BOOLEAN, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bit_Proc' parameter style java; + +drop procedure Smallint_Proc ; +create procedure Smallint_Proc (out MAX_PARAM SMALLINT, out MIN_PARAM SMALLINT, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Smallint_Proc' parameter style java; + +drop procedure Tinyint_Proc ; +create procedure Tinyint_Proc (out MAX_PARAM INTEGER, out MIN_PARAM INTEGER, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Tinyint_Proc' parameter style java; + +drop procedure Integer_Proc ; +create procedure Integer_Proc (out MAX_PARAM INTEGER, out MIN_PARAM INTEGER, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_Proc' parameter style java; + +drop procedure Bigint_Proc ; +create procedure Bigint_Proc (out MAX_PARAM BIGINT, out MIN_PARAM BIGINT, out NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bigint_Proc' parameter style java; + +drop procedure Char_Proc ; +create procedure Char_Proc (out NAME_PARAM CHAR(30), out NULL_PARAM CHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Char_Proc' parameter style java; + +drop procedure Varchar_Proc ; +create procedure Varchar_Proc (out NAME_PARAM VARCHAR(30), out NULL_PARAM VARCHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varchar_Proc' parameter style java; + +drop procedure Longvarchar_Proc ; +create procedure Longvarchar_Proc (out NAME_PARAM VARCHAR(448)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarchar_Proc' parameter style java; + +drop procedure Lvarcharnull_Proc ; +create procedure Lvarcharnull_Proc (out NULL_PARAM VARCHAR(448)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarcharnull_Proc' parameter style java; + +drop procedure Date_Proc ; +create procedure Date_Proc (out MFG_PARAM DATE, out NULL_PARAM DATE) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Date_Proc' parameter style java; + +drop procedure Time_Proc ; +create procedure Time_Proc (out BRK_PARAM TIME, out NULL_PARAM TIME) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Time_Proc' parameter style java; + +drop procedure Timestamp_Proc ; +create procedure Timestamp_Proc (out IN_PARAM TIMESTAMP, out NULL_PARAM TIMESTAMP) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Timestamp_Proc' parameter style java; + +drop procedure Binary_Proc ; +create procedure Binary_Proc (out BINARY_PARAM VARCHAR(24) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Binary_Proc' parameter style java; + +drop procedure Varbinary_Proc ; +create procedure Varbinary_Proc (out VARBINARY_PARAM VARCHAR(255) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varbinary_Proc' parameter style java; + +drop procedure Longvarbinary_Proc ; +create procedure Longvarbinary_Proc (out LONGVARBINARY_PARAM VARCHAR(255) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarbinary_Proc' parameter style java; + +drop procedure Integer_In_Proc ; +create procedure Integer_In_Proc (IN_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_In_Proc' parameter style java; + +drop procedure Integer_InOut_Proc ; +create procedure Integer_InOut_Proc (inout INOUT_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_InOut_Proc' parameter style java; + +drop procedure UpdCoffee_Proc ; +create procedure UpdCoffee_Proc (in TYPE_PARAM NUMERIC) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.UpdCoffee_Proc' parameter style java; + +drop procedure SelCoffee_Proc ; +create procedure SelCoffee_Proc (out KEYID_PARAM VARCHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.SelCoffee_Proc' parameter style java; + +drop procedure IOCoffee_Proc ; +create procedure IOCoffee_Proc (inout PRICE_PARAM REAL) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.IOCoffee_Proc' parameter style java; + +drop procedure Coffee_Proc ; +create procedure Coffee_Proc (in TYPE_PARAM Numeric) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Coffee_Proc' parameter style java; + +drop procedure Numeric_Io_Max ; +create procedure Numeric_Io_Max (inout MAX_PARAM NUMERIC(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Numeric_Io_Max' parameter style java; + +drop procedure Numeric_Io_Min ; +create procedure Numeric_Io_Min (inout MIN_PARAM NUMERIC(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Numeric_Io_Min' parameter style java; + +drop procedure Numeric_Io_Null ; +create procedure Numeric_Io_Null (inout NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Numeric_Io_Null' parameter style java; + +drop procedure Decimal_Io_Max ; +create procedure Decimal_Io_Max (inout MAX_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Decimal_Io_Max' parameter style java; + +drop procedure Decimal_Io_Min ; +create procedure Decimal_Io_Min (inout MIN_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Decimal_Io_Min' parameter style java; + +drop procedure Decimal_Io_Null ; +create procedure Decimal_Io_Null (inout NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Decimal_Io_Null' parameter style java; + +drop procedure Double_Io_Max ; +create procedure Double_Io_Max (inout MAX_PARAM DOUBLE PRECISION) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Double_Io_Max' parameter style java; + +drop procedure Double_Io_Min ; +create procedure Double_Io_Min (inout MIN_PARAM DOUBLE PRECISION) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Double_Io_Min' parameter style java; + +drop procedure Double_Io_Null ; +create procedure Double_Io_Null (inout NULL_PARAM DOUBLE PRECISION) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Double_Io_Null' parameter style java; + +drop procedure Float_Io_Max ; +create procedure Float_Io_Max (inout MAX_PARAM FLOAT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Float_Io_Max' parameter style java; + +drop procedure Float_Io_Min ; +create procedure Float_Io_Min (inout MIN_PARAM FLOAT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Float_Io_Min' parameter style java; + +drop procedure Float_Io_Null ; +create procedure Float_Io_Null (inout NULL_PARAM FLOAT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Float_Io_Null' parameter style java; + +drop procedure Real_Io_Max ; +create procedure Real_Io_Max (inout MAX_PARAM REAL) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Real_Io_Max' parameter style java; + +drop procedure Real_Io_Min ; +create procedure Real_Io_Min (inout MIN_PARAM REAL) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Real_Io_Min' parameter style java; + +drop procedure Real_Io_Null ; +create procedure Real_Io_Null (inout NULL_PARAM REAL) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Real_Io_Null' parameter style java; + +drop procedure Bit_Io_Max ; +create procedure Bit_Io_Max (inout MAX_PARAM BOOLEAN) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bit_Io_Max' parameter style java; + +drop procedure Bit_Io_Min ; +create procedure Bit_Io_Min (inout MIN_PARAM BOOLEAN) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bit_Io_Min' parameter style java; + +drop procedure Bit_Io_Null ; +create procedure Bit_Io_Null (inout NULL_PARAM BOOLEAN) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bit_Io_Null' parameter style java; + +drop procedure Smallint_Io_Max ; +create procedure Smallint_Io_Max (inout MAX_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Smallint_Io_Max' parameter style java; + +drop procedure Smallint_Io_Min ; +create procedure Smallint_Io_Min (inout MIN_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Smallint_Io_Min' parameter style java; + +drop procedure Smallint_Io_Null ; +create procedure Smallint_Io_Null (inout NULL_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Smallint_Io_Null' parameter style java; + +drop procedure Tinyint_Io_Max ; +create procedure Tinyint_Io_Max (inout MAX_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Tinyint_Io_Max' parameter style java; + +drop procedure Tinyint_Io_Min ; +create procedure Tinyint_Io_Min (inout MIN_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Tinyint_Io_Min' parameter style java; + +drop procedure Tinyint_Io_Null ; +create procedure Tinyint_Io_Null (inout NULL_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Tinyint_Io_Null' parameter style java; + +drop procedure Integer_Io_Max ; +create procedure Integer_Io_Max (inout MAX_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_Io_Max' parameter style java; + +drop procedure Integer_Io_Min ; +create procedure Integer_Io_Min (inout MIN_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_Io_Min' parameter style java; + +drop procedure Integer_Io_Null ; +create procedure Integer_Io_Null (inout NULL_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_Io_Null' parameter style java; + +drop procedure Bigint_Io_Max ; +create procedure Bigint_Io_Max (inout MAX_PARAM BIGINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bigint_Io_Max' parameter style java; + +drop procedure Bigint_Io_Min ; +create procedure Bigint_Io_Min (inout MIN_PARAM BIGINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bigint_Io_Min' parameter style java; + +drop procedure Bigint_Io_Null ; +create procedure Bigint_Io_Null (inout NULL_PARAM BIGINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bigint_Io_Null' parameter style java; + +drop procedure Char_Io_Name ; +create procedure Char_Io_Name (inout NAME_PARAM CHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Char_Io_Name' parameter style java; + +drop procedure Char_Io_Null ; +create procedure Char_Io_Null (inout NULL_PARAM VARCHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Char_Io_Null' parameter style java; + +drop procedure Varchar_Io_Name ; +create procedure Varchar_Io_Name (inout NAME_PARAM VARCHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varchar_Io_Name' parameter style java; + +drop procedure Varchar_Io_Null ; +create procedure Varchar_Io_Null (inout NULL_PARAM VARCHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varchar_Io_Null' parameter style java; + +drop procedure Lvarchar_Io_Name ; +create procedure Lvarchar_Io_Name (inout NAME_PARAM VARCHAR(448)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarchar_Io_Name' parameter style java; + +drop procedure Lvarchar_Io_Null ; +create procedure Lvarchar_Io_Null (inout NULL_PARAM VARCHAR(448)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarchar_Io_Null' parameter style java; + +drop procedure Date_Io_Mfg ; +create procedure Date_Io_Mfg (inout MFG_PARAM DATE) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Date_Io_Mfg' parameter style java; + +drop procedure Date_Io_Null ; +create procedure Date_Io_Null (inout NULL_PARAM DATE) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Date_Io_Null' parameter style java; + +drop procedure Time_Io_Brk ; +create procedure Time_Io_Brk (inout BRK_PARAM TIME) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Time_Io_Brk' parameter style java; + +drop procedure Time_Io_Null ; +create procedure Time_Io_Null (inout NULL_PARAM TIME) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Time_Io_Null' parameter style java; + +drop procedure Timestamp_Io_Intime ; +create procedure Timestamp_Io_Intime (inout INTIME_PARAM TIMESTAMP) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Timestamp_Io_Intime' parameter style java; + +drop procedure Timestamp_Io_Null ; +create procedure Timestamp_Io_Null (inout NULL_PARAM TIMESTAMP) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Timestamp_Io_Null' parameter style java; + +drop procedure Binary_Proc_Io ; +create procedure Binary_Proc_Io (inout BINARY_PARAM VARCHAR(24) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Binary_Proc_Io' parameter style java; + +drop procedure Varbinary_Proc_Io ; +create procedure Varbinary_Proc_Io (inout VARBINARY_PARAM VARCHAR(255) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varbinary_Proc_Io' parameter style java; + +drop procedure Longvarbinary_Io ; +create procedure Longvarbinary_Io (inout LONGVARBINARY_PARAM VARCHAR(255) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarbinary_Io' parameter style java; + +drop procedure Numeric_In_Max ; +create procedure Numeric_In_Max (in MAX_PARAM NUMERIC(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Numeric_In_Max' parameter style java; + +drop procedure Numeric_In_Min ; +create procedure Numeric_In_Min (in MIN_PARAM NUMERIC(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Numeric_In_Min' parameter style java; + +drop procedure Numeric_In_Null ; +create procedure Numeric_In_Null (in NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Numeric_In_Null' parameter style java; + +drop procedure Decimal_In_Max ; +create procedure Decimal_In_Max (in MAX_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Decimal_In_Max' parameter style java; + +drop procedure Decimal_In_Min ; +create procedure Decimal_In_Min (in MIN_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Decimal_In_Min' parameter style java; + +drop procedure Decimal_In_Null ; +create procedure Decimal_In_Null (in NULL_PARAM DECIMAL(30,15)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Decimal_In_Null' parameter style java; + +drop procedure Double_In_Max ; +create procedure Double_In_Max (in MAX_PARAM DOUBLE PRECISION) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Double_In_Max' parameter style java; + +drop procedure Double_In_Min ; +create procedure Double_In_Min (in MIN_PARAM DOUBLE PRECISION) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Double_In_Min' parameter style java; + +drop procedure Double_In_Null ; +create procedure Double_In_Null (in NULL_PARAM DOUBLE PRECISION) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Double_In_Null' parameter style java; + +drop procedure Float_In_Max ; +create procedure Float_In_Max (in MAX_PARAM FLOAT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Float_In_Max' parameter style java; + +drop procedure Float_In_Min ; +create procedure Float_In_Min (in MIN_PARAM FLOAT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Float_In_Min' parameter style java; + +drop procedure Float_In_Null ; +create procedure Float_In_Null (in NULL_PARAM FLOAT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Float_In_Null' parameter style java; + +drop procedure Real_In_Max ; +create procedure Real_In_Max (in MAX_PARAM REAL) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Real_In_Max' parameter style java; + +drop procedure Real_In_Min ; +create procedure Real_In_Min (in MIN_PARAM REAL) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Real_In_Min' parameter style java; + +drop procedure Real_In_Null ; +create procedure Real_In_Null (in NULL_PARAM REAL) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Real_In_Null' parameter style java; + +drop procedure Bit_In_Max ; +create procedure Bit_In_Max (in MAX_PARAM BOOLEAN) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bit_In_Max' parameter style java; + +drop procedure Bit_In_Min ; +create procedure Bit_In_Min (in MIN_PARAM BOOLEAN) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bit_In_Min' parameter style java; + +drop procedure Bit_In_Null ; +create procedure Bit_In_Null (in NULL_PARAM BOOLEAN) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bit_In_Null' parameter style java; + +drop procedure Smallint_In_Max ; +create procedure Smallint_In_Max (in MAX_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Smallint_In_Max' parameter style java; + +drop procedure Smallint_In_Min ; +create procedure Smallint_In_Min (in MIN_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Smallint_In_Min' parameter style java; + +drop procedure Smallint_In_Null ; +create procedure Smallint_In_Null (in NULL_PARAM SMALLINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Smallint_In_Null' parameter style java; + +drop procedure Tinyint_In_Max ; +create procedure Tinyint_In_Max (in MAX_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Tinyint_In_Max' parameter style java; + +drop procedure Tinyint_In_Min ; +create procedure Tinyint_In_Min (in MIN_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Tinyint_In_Min' parameter style java; + +drop procedure Tinyint_In_Null ; +create procedure Tinyint_In_Null (in NULL_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Tinyint_In_Null' parameter style java; + +drop procedure Integer_In_Max ; +create procedure Integer_In_Max (in MAX_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_In_Max' parameter style java; + +drop procedure Integer_In_Min ; +create procedure Integer_In_Min (in MIN_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_In_Min' parameter style java; + +drop procedure Integer_In_Null ; +create procedure Integer_In_Null (in NULL_PARAM INTEGER) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Integer_In_Null' parameter style java; + +drop procedure Bigint_In_Max ; +create procedure Bigint_In_Max (in MAX_PARAM BIGINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bigint_In_Max' parameter style java; + +drop procedure Bigint_In_Min ; +create procedure Bigint_In_Min (in MIN_PARAM BIGINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bigint_In_Min' parameter style java; + +drop procedure Bigint_In_Null ; +create procedure Bigint_In_Null (in NULL_PARAM BIGINT) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Bigint_In_Null' parameter style java; + +drop procedure Char_In_Name ; +create procedure Char_In_Name (in NAME_PARAM CHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Char_In_Name' parameter style java; + +drop procedure Char_In_Null ; +create procedure Char_In_Null (in NULL_PARAM CHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Char_In_Null' parameter style java; + +drop procedure Varchar_In_Name ; +create procedure Varchar_In_Name (in NAME_PARAM VARCHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varchar_In_Name' parameter style java; + +drop procedure Varchar_In_Null ; +create procedure Varchar_In_Null (in NULL_PARAM VARCHAR(30)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varchar_In_Null' parameter style java; + +drop procedure Lvarchar_In_Name ; +create procedure Lvarchar_In_Name (in NAME_PARAM VARCHAR(448)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarchar_In_Name' parameter style java; + +drop procedure Lvarchar_In_Null ; +create procedure Lvarchar_In_Null (in NULL_PARAM VARCHAR(448)) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarchar_In_Null' parameter style java; + +drop procedure Date_In_Mfg ; +create procedure Date_In_Mfg (in MFG_PARAM DATE) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Date_In_Mfg' parameter style java; + +drop procedure Date_In_Null ; +create procedure Date_In_Null (in NULL_PARAM DATE) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Date_In_Null' parameter style java; + +drop procedure Time_In_Brk ; +create procedure Time_In_Brk (in BRK_PARAM TIME) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Time_In_Brk' parameter style java; + +drop procedure Time_In_Null ; +create procedure Time_In_Null (in NULL_PARAM TIME) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Time_In_Null' parameter style java; + +drop procedure Timestamp_In_Intime ; +create procedure Timestamp_In_Intime (in INTIME_PARAM TIMESTAMP) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Timestamp_In_Intime' parameter style java; + +drop procedure Timestamp_In_Null ; +create procedure Timestamp_In_Null (in NULL_PARAM TIMESTAMP) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Timestamp_In_Null' parameter style java; + +drop procedure Binary_Proc_In ; +create procedure Binary_Proc_In (in BINARY_PARAM VARCHAR(24) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Binary_Proc_In' parameter style java; + +drop procedure Varbinary_Proc_In ; +create procedure Varbinary_Proc_In (in VARBINARY_PARAM VARCHAR(255) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Varbinary_Proc_In' parameter style java; + +drop procedure Longvarbinary_In ; +create procedure Longvarbinary_In (in LONGVARBINARY_PARAM VARCHAR(255) FOR BIT DATA) language java external name 'com.sun.ts.lib.tests.jdbc.CS_Procs.Longvarbinary_Proc_In' parameter style java; diff --git a/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sql b/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sql new file mode 100644 index 0000000000..b2bd297182 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/sql/derby/derby.ddl.sql @@ -0,0 +1,176 @@ +drop table ctstable2 ; +drop table ctstable1 ; +create table ctstable1 (TYPE_ID int NOT NULL, TYPE_DESC varchar(32), primary key(TYPE_ID)) ; +create table ctstable2 (KEY_ID int NOT NULL, COF_NAME varchar(32), PRICE float, TYPE_ID int, primary key(KEY_ID), foreign key(TYPE_ID) references ctstable1) ; + +drop table concurrencetable ; +create table concurrencetable (TYPE_ID int NOT NULL, TYPE_DESC varchar(32), primary key(TYPE_ID)) ; + +drop table Numeric_Tab ; +create table Numeric_Tab (MAX_VAL NUMERIC(30,15), MIN_VAL NUMERIC(30,15), NULL_VAL NUMERIC(30,15)) ; + +drop table Decimal_Tab ; + create table Decimal_Tab (MAX_VAL DECIMAL(30,15),MIN_VAL DECIMAL(30,15), NULL_VAL DECIMAL(30,15)) ; + +drop table Double_Tab ; +create table Double_Tab (MAX_VAL DOUBLE PRECISION, MIN_VAL DOUBLE PRECISION, NULL_VAL DOUBLE PRECISION) ; + +drop table Float_Tab ; +create table Float_Tab (MAX_VAL FLOAT, MIN_VAL FLOAT, NULL_VAL FLOAT) ; + +drop table Real_Tab ; +create table Real_Tab (MAX_VAL REAL, MIN_VAL REAL,NULL_VAL REAL) ; + +drop table Bit_Tab ; +create table Bit_Tab (MAX_VAL BOOLEAN, MIN_VAL BOOLEAN, NULL_VAL SMALLINT) ; + +drop table Smallint_Tab ; +create table Smallint_Tab (MAX_VAL SMALLINT, MIN_VAL SMALLINT, NULL_VAL SMALLINT) ; + +drop table Tinyint_Tab ; +create table Tinyint_Tab (MAX_VAL SMALLINT, MIN_VAL SMALLINT, NULL_VAL SMALLINT) ; + +drop table Integer_Tab ; +create table Integer_Tab (MAX_VAL INTEGER, MIN_VAL INTEGER, NULL_VAL INTEGER) ; + +drop table Bigint_Tab ; +create table Bigint_Tab (MAX_VAL BIGINT, MIN_VAL BIGINT, NULL_VAL BIGINT) ; + +drop table Char_Tab ; +create table Char_Tab (COFFEE_NAME CHAR(30), NULL_VAL CHAR(30)) ; + +drop table Varchar_Tab ; +create table Varchar_Tab (COFFEE_NAME VARCHAR(30), NULL_VAL VARCHAR(30)) ; + +drop table Longvarchar_Tab ; +create table Longvarchar_Tab (COFFEE_NAME LONG VARCHAR) ; + +drop table Longvarcharnull_Tab ; +create table Longvarcharnull_Tab (NULL_VAL LONG VARCHAR) ; + +drop table Date_Tab ; +create table Date_Tab (MFG_DATE DATE, NULL_VAL DATE) ; + +drop table Time_Tab ; +create table Time_Tab (BRK_TIME TIME, NULL_VAL TIME) ; + +drop table Timestamp_Tab ; +create table Timestamp_Tab (IN_TIME TIMESTAMP, NULL_VAL TIMESTAMP) ; + +drop table Binary_Tab ; +create table Binary_Tab (BINARY_VAL VARCHAR(24) FOR BIT DATA) ; + +drop table Varbinary_Tab ; +create table Varbinary_Tab (VARBINARY_VAL VARCHAR(255) FOR BIT DATA) ; + +drop table Longvarbinary_Tab ; +create table Longvarbinary_Tab (LONGVARBINARY_VAL VARCHAR(255) FOR BIT DATA) ; + +drop table ctstable3 ; +create table ctstable3(STRING1 VARCHAR(20), STRING2 VARCHAR(20), STRING3 VARCHAR(20), NUMCOL INTEGER, FLOATCOL FLOAT, DATECOL DATE, TIMECOL TIME, TSCOL1 TIMESTAMP, TSCOL2 TIMESTAMP) ; + +drop table ctstable4 ; +create table ctstable4(STRING4 VARCHAR(20), NUMCOL NUMERIC) ; + + +drop table TxBean_Tab1 ; +create table TxBean_Tab1 (KEY_ID int, TABONE_NAME varchar(32), PRICE float) ; + +drop table TxBean_Tab2 ; +create table TxBean_Tab2 (KEY_ID int, TABTWO_NAME varchar(32), PRICE float) ; + ; +drop table TxEBean_Tab ; +create table TxEBean_Tab (KEY_ID INTEGER NOT NULL, BRAND_NAME VARCHAR(32), PRICE FLOAT, primary key(KEY_ID)) ; + +drop table Integration_Tab ; +create table Integration_Tab (ACCOUNT INTEGER NOT NULL, BALANCE FLOAT, primary key(ACCOUNT)) ; + +drop table BB_Tab ; +create table BB_Tab (KEY_ID INTEGER NOT NULL, BRAND_NAME varchar(32), PRICE float, primary key(KEY_ID)) ; + +drop table JTA_Tab1 ; +create table JTA_Tab1 (KEY_ID int, COF_NAME varchar(32), PRICE float) ; + +drop table JTA_Tab2 ; +create table JTA_Tab2 (KEY_ID int, CHOC_NAME varchar(32), PRICE float) ; + +drop table Deploy_Tab1 ; +create table Deploy_Tab1 (KEY_ID INTEGER NOT NULL, BRAND_NAME varchar(32), PRICE float, primary key(KEY_ID)) ; + +drop table Deploy_Tab2 ; +create table Deploy_Tab2 (KEY_ID VARCHAR(100) NOT NULL, BRAND_NAME varchar(32), PRICE float, primary key(KEY_ID)) ; + +drop table Deploy_Tab3 ; +create table Deploy_Tab3 (KEY_ID BIGINT NOT NULL, BRAND_NAME varchar(32), PRICE float, primary key(KEY_ID)) ; + +drop table Deploy_Tab4 ; +create table Deploy_Tab4 (KEY_ID FLOAT NOT NULL, BRAND_NAME varchar(32), PRICE float, primary key(KEY_ID)) ; + +drop table Deploy_Tab5 ; +create table Deploy_Tab5 (KEY_ID1 int NOT NULL, KEY_ID2 varchar(100) NOT NULL, KEY_ID3 float NOT NULL, BRAND_NAME varchar(32), PRICE float, primary key(KEY_ID1, KEY_ID2, KEY_ID3)) ; + +drop table Xa_Tab1 ; +create table Xa_Tab1 (col1 int NOT NULL, col2 varchar(32), col3 varchar(32), primary key(col1)) ; + +drop table Xa_Tab2 ; +create table Xa_Tab2 (col1 int NOT NULL, col2 varchar(32), col3 varchar(32), primary key(col1)) ; + +drop table SEC_Tab1 ; +create table SEC_Tab1 (KEY_ID INTEGER NOT NULL, PRICE float, BRAND varchar(32), primary key(KEY_ID)) ; + +drop table Connector_Tab ; +create table Connector_Tab (KEY_ID int, PRODUCT_NAME varchar(32), PRICE float) ; + +drop table Coffee_Table ; +create table Coffee_Table (KEY_ID INTEGER NOT NULL, BRAND_NAME varchar(32) NOT NULL, PRICE float NOT NULL, primary key(KEY_ID)) ; + +drop table Coffee_StringPK_Table ; +create table Coffee_StringPK_Table (KEY_ID VARCHAR(100) NOT NULL, BRAND_NAME varchar(32) NOT NULL, PRICE float NOT NULL, primary key(KEY_ID)) ; + +drop table Coffee_LongPK_Table ; +create table Coffee_LongPK_Table (KEY_ID BIGINT NOT NULL, BRAND_NAME varchar(32) NOT NULL, PRICE float NOT NULL, primary key(KEY_ID)) ; + +drop table Coffee_FloatPK_Table ; +create table Coffee_FloatPK_Table (KEY_ID FLOAT NOT NULL, BRAND_NAME varchar(32) NOT NULL, PRICE float NOT NULL, primary key(KEY_ID)) ; + +drop table Coffee_CompoundPK_Table ; +create table Coffee_CompoundPK_Table (KEY_ID1 int NOT NULL, KEY_ID2 varchar(100) NOT NULL, KEY_ID3 float NOT NULL, BRAND_NAME varchar(32) NOT NULL, PRICE float NOT NULL, primary key(KEY_ID1, KEY_ID2, KEY_ID3)) ; + +DROP TABLE COFFEEEJBLITE; +CREATE TABLE COFFEEEJBLITE (ID INT NOT NULL, BRANDNAME VARCHAR(25), PRICE REAL, CONSTRAINT PK_COFFEEEJBLITE PRIMARY KEY (ID)); + + +DROP TABLE EJB_AUTOCLOSE_TAB ; +CREATE TABLE EJB_AUTOCLOSE_TAB (NAME VARCHAR(25) NOT NULL, MESSAGE VARCHAR(25) NOT NULL); + + +DROP TABLE caller ; +DROP TABLE caller_groups ; + +CREATE TABLE caller(name VARCHAR(64) PRIMARY KEY, password VARCHAR(1024)) ; +CREATE TABLE caller_groups(caller_name VARCHAR(64), group_name VARCHAR(64)) ; + +INSERT INTO caller VALUES('tom', 'secret1') ; +INSERT INTO caller VALUES('emma', 'secret2') ; +INSERT INTO caller VALUES('bob', 'secret3') ; + +INSERT INTO caller_groups VALUES('tom', 'Administrator') ; +INSERT INTO caller_groups VALUES('tom', 'Manager') ; + +INSERT INTO caller_groups VALUES('emma', 'Administrator') ; +INSERT INTO caller_groups VALUES('emma', 'Employee') ; + +INSERT INTO caller_groups VALUES('bob', 'Administrator') ; + + INSERT INTO caller VALUES('tom_hash512_saltsize16', 'PBKDF2WithHmacSHA512:1024:DbjXqT9p8VhJ7OtU6DrqDw==:p/qihG8IZKkz03JzKd6XXA==') ; + INSERT INTO caller VALUES('tom_hash256_saltsize32', 'PBKDF2WithHmacSHA256:2048:suVayUIJMQMc6wCgckvAIgKRlo1UkxyFXhXbTxX6C7s=:cvdHkBXVUCN2WL3LRAYodeCdNZxEM4RLlNCCYP68Kmg=') ; + INSERT INTO caller VALUES('tom_hash512_saltsize32', 'PBKDF2WithHmacSHA512:2048:dPTjUfiklfyg2bas/KOQKqEfdtoXK8YvbBscIxA8tNg=:ixBg0wr3ySBI86y8HP7+Yw==') ; + + INSERT INTO caller_groups VALUES('tom_hash512_saltsize16', 'Administrator') ; + INSERT INTO caller_groups VALUES('tom_hash512_saltsize16', 'Manager') ; + + INSERT INTO caller_groups VALUES('tom_hash256_saltsize32', 'Administrator') ; + INSERT INTO caller_groups VALUES('tom_hash256_saltsize32', 'Manager') ; + + INSERT INTO caller_groups VALUES('tom_hash512_saltsize32', 'Administrator') ; + INSERT INTO caller_groups VALUES('tom_hash512_saltsize32', 'Manager') ; diff --git a/glassfish-runner/connector-platform-tck/sql/derby/derby.dml.sql b/glassfish-runner/connector-platform-tck/sql/derby/derby.dml.sql new file mode 100644 index 0000000000..f1ccdae780 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/sql/derby/derby.dml.sql @@ -0,0 +1,770 @@ +# @(#)ctssql.dml.derby 1.16 01/06/20 +#------------------------------------------------- +#All sql DML statements used in the test cases against derby +#------------------------------------------------- + + + +Dbschema_Tab1_Insert=insert into ctstable2 values(?, ?, ?, ?) +Dbschema_Tab2_Insert=insert into ctstable1 values(?, ?) + +Dbschema_Tab1_Delete=delete from ctstable2 +Dbschema_Tab2_Delete=delete from ctstable1 + +Dbschema_Concur_Insert=insert into concurrencetable values(?, ?) +Dbschema_Concur_Delete=delete from concurrencetable + +#****************************************************************** +# SQL Statements for creating procedures in side the test. +#****************************************************************** + +UpdCoffee_Proc=create method alias UpdCoffee_Proc for com.sun.ts.lib.tests.jdbc.CS_Procs.UpdCoffee_Proc + +#****************************************************************** +# SQL Statements for deleting tables for appropriate JDBC Datatypes +#****************************************************************** + +Numeric_Tab_Delete=delete from Numeric_Tab + +Decimal_Tab_Delete=delete from Decimal_Tab + +Double_Tab_Delete=delete from Double_Tab + +Float_Tab_Delete=delete from Float_Tab + +Real_Tab_Delete=delete from Real_Tab + +Bit_Tab_Delete=delete from Bit_Tab + +Smallint_Tab_Delete=delete from Smallint_Tab + +Tinyint_Tab_Delete=delete from Tinyint_Tab + +Integer_Tab_Delete=delete from Integer_Tab + +Bigint_Tab_Delete=delete from Bigint_Tab + +Char_Tab_Delete=delete from Char_Tab + +Varchar_Tab_Delete=delete from Varchar_Tab + +Longvarchar_Tab_Delete=delete from Longvarchar_Tab + +Longvarcharnull_Tab_Delete=delete from Longvarcharnull_Tab + +Date_Tab_Delete=delete from Date_Tab + +Time_Tab_Delete=delete from Time_Tab + +Timestamp_Tab_Delete=delete from Timestamp_Tab + +Binary_Tab_Delete=delete from Binary_Tab + +Varbinary_Tab_Delete=delete from Varbinary_Tab + +Longvarbinary_Tab_Delete=delete from Longvarbinary_Tab + + + +#**************************************************** +# SQL Statements for inserting values into the tables +#**************************************************** + +Numeric_Tab_Insert=insert into Numeric_Tab values(9999999999,0.000000000000001, null) + +Decimal_Tab_Insert= insert into Decimal_Tab values(9999999999,0.000000000000001, null) + +#Double_Tab_Insert=insert into Double_Tab values(1.7976931348623157E308,4.9E-324,null) +Double_Tab_Insert=insert into Double_Tab values(1.0E125,1.0E-130,null) + +Float_Tab_Insert=insert into Float_Tab values(3.4028235E37,1.4E-45,null) + +Real_Tab_Insert= insert into Real_Tab values(3.402E38,1.4E-37, null) + +Bit_Tab_Insert=insert into Bit_Tab values(true,false,null) + +Smallint_Tab_Insert= insert into Smallint_Tab values(32767,-32768,null) + +Tinyint_Tab_Insert=insert into Tinyint_Tab values(127,0,null) + +Integer_Tab_Insert=insert into Integer_Tab values(2147483647,-2147483648,null) + +Bigint_Tab_Insert= insert into Bigint_Tab values(9223372036854775807,-9223372036854775808,null) + +Char_Tab_Insert= insert into Char_Tab values('Test Coffee', null) + +Varchar_Tab_Insert= insert into Varchar_Tab values('Test Coffee',null) + +Longvarchar_Tab_Insert= insert into Longvarchar_Tab values('Test Coffee') + +Longvarcharnull_Tab_Insert= insert into Longvarcharnull_Tab values(null) + +Date_Tab_Insert=insert into Date_Tab values({d '1999-05-05'}, null) + +Time_Tab_Insert= insert into Time_Tab values({t '12:59:59'}, null) + +Timestamp_Tab_Insert= insert into Timestamp_Tab values({ts '1999-12-31 12:59:59'}, null) + +Binary_Tab_Insert= insert into Binary_Tab values(null) + +Varbinary_Tab_Insert= insert into Varbinary_Tab values(null) + +Longvarbinary_Tab_Insert= insert into Longvarbinary_Tab values(null) + +Boolean_Tab_Insert = insert into Boolean_Tab values(true,false,null) + + +#***************************************************** +# SQL Statements for retrieving values from the tables +#***************************************************** + +SelCoffeeAll=SELECT COF_NAME, PRICE FROM ctstable2 +SelCoffeeNull=select * from ctstable2 where TYPE_ID=0 + +Numeric_Query_Max=Select MAX_VAL from Numeric_Tab +Numeric_Query_Min=Select MIN_VAL from Numeric_Tab +Numeric_Query_Null=Select NULL_VAL from Numeric_Tab + +Decimal_Query_Max=Select MAX_VAL from Decimal_Tab +Decimal_Query_Min=Select MIN_VAL from Decimal_Tab +Decimal_Query_Null=Select NULL_VAL from Decimal_Tab + +Double_Query_Max=Select MAX_VAL from Double_Tab +Double_Query_Min=Select MIN_VAL from Double_Tab +Double_Query_Null=Select NULL_VAL from Double_Tab + +Float_Query_Max=Select MAX_VAL from Float_Tab +Float_Query_Min=Select MIN_VAL from Float_Tab +Float_Query_Null=Select NULL_VAL from Float_Tab + +Real_Query_Max=Select MAX_VAL from Real_Tab +Real_Query_Min=Select MIN_VAL from Real_Tab +Real_Query_Null=Select NULL_VAL from Real_Tab + +Bit_Query_Max=Select MAX_VAL from Bit_Tab +Bit_Query_Min=Select MIN_VAL from Bit_Tab +Bit_Query_Null=Select NULL_VAL from Bit_Tab + +Smallint_Query_Max=Select MAX_VAL from Smallint_Tab +Smallint_Query_Min=Select MIN_VAL from Smallint_Tab +Smallint_Query_Null=Select NULL_VAL from Smallint_Tab + +Tinyint_Query_Max=Select MAX_VAL from Tinyint_Tab +Tinyint_Query_Min=Select MIN_VAL from Tinyint_Tab +Tinyint_Query_Null=Select NULL_VAL from Tinyint_Tab + +Integer_Query_Max=Select MAX_VAL from Integer_Tab +Integer_Query_Min=Select MIN_VAL from Integer_Tab +Integer_Query_Null=Select NULL_VAL from Integer_Tab + +Bigint_Query_Max=Select MAX_VAL from Bigint_Tab +Bigint_Query_Min=Select MIN_VAL from Bigint_Tab +Bigint_Query_Null=Select NULL_VAL from Bigint_Tab + +Char_Query_Name=Select COFFEE_NAME from Char_Tab +Char_Query_Null=Select NULL_VAL from Char_Tab + +Varchar_Query_Name=Select COFFEE_NAME from Varchar_Tab +Varchar_Query_Null=Select NULL_VAL from Varchar_Tab + +Longvarchar_Query_Name=Select COFFEE_NAME from Longvarchar_Tab +Longvarchar_Query_Null=Select NULL_VAL from Longvarcharnull_Tab + +Date_Query_Mfg=Select MFG_DATE from Date_Tab +Date_Query_Null=Select NULL_VAL from Date_Tab + +Time_Query_Brk=Select BRK_TIME from Time_Tab +Time_Query_Null=Select NULL_VAL from Time_Tab + +Timestamp_Query_In=Select IN_TIME from Timestamp_Tab +Timestamp_Query_Null=Select NULL_VAL from Timestamp_Tab + +Binary_Query_Val=Select BINARY_VAL from Binary_Tab +Varbinary_Query_Val=Select VARBINARY_VAL from Varbinary_Tab +Longvarbinary_Query_Val=Select LONGVARBINARY_VAL from Longvarbinary_Tab + + + + + +#*************************************** +# SQL Statements for updating the tables +#*************************************** + +Numeric_Tab_Max_Update=update Numeric_Tab set MAX_VAL=? +Numeric_Tab_Min_Update=update Numeric_Tab set MIN_VAL=? +Numeric_Tab_Null_Update=update Numeric_Tab set NULL_VAL=? + +Decimal_Tab_Max_Update=update Decimal_Tab set MAX_VAL=? +Decimal_Tab_Min_Update=update Decimal_Tab set MIN_VAL=? +Decimal_Tab_Null_Update=update Decimal_Tab set NULL_VAL=? + +Double_Tab_Max_Update=update Double_Tab set MAX_VAL=? +Double_Tab_Min_Update=update Double_Tab set MIN_VAL=? +Double_Tab_Null_Update=update Double_Tab set NULL_VAL=? + +Float_Tab_Max_Update=update Float_Tab set MAX_VAL=? +Float_Tab_Min_Update=update Float_Tab set MIN_VAL=? +Float_Tab_Null_Update=update Float_Tab set NULL_VAL=? + +Real_Tab_Max_Update=update Real_Tab set MAX_VAL=? +Real_Tab_Min_Update=update Real_Tab set MIN_VAL=? +Real_Tab_Null_Update=update Real_Tab set NULL_VAL=? + +Bit_Tab_Max_Update=update Bit_Tab set MAX_VAL=? +Bit_Tab_Min_Update=update Bit_Tab set MIN_VAL=? +Bit_Tab_Null_Update=update Bit_Tab set NULL_VAL=? + +Smallint_Tab_Max_Update=update Smallint_Tab set MAX_VAL=? +Smallint_Tab_Min_Update=update Smallint_Tab set MIN_VAL=? +Smallint_Tab_Null_Update=update Smallint_Tab set NULL_VAL=? + +Tinyint_Tab_Max_Update=update Tinyint_Tab set MAX_VAL=? +Tinyint_Tab_Min_Update=update Tinyint_Tab set MIN_VAL=? +Tinyint_Tab_Null_Update=update Tinyint_Tab set NULL_VAL=? + +Integer_Tab_Max_Update=update Integer_Tab set MAX_VAL=? +Integer_Tab_Min_Update=update Integer_Tab set MIN_VAL=? +Integer_Tab_Null_Update=update Integer_Tab set NULL_VAL=? + +Bigint_Tab_Max_Update=update Bigint_Tab set MAX_VAL=? +Bigint_Tab_Min_Update=update Bigint_Tab set MIN_VAL=? +Bigint_Tab_Null_Update=update Bigint_Tab set NULL_VAL=? + +Char_Tab_Name_Update=update Char_Tab set COFFEE_NAME=? +Char_Tab_Null_Update=update Char_Tab set NULL_VAL=? + +Varchar_Tab_Name_Update=update Varchar_Tab set COFFEE_NAME=? +Varchar_Tab_Null_Update=update Varchar_Tab set NULL_VAL=? + +Longvarchar_Tab_Name_Update=update Longvarchar_Tab set COFFEE_NAME=? +Longvarchar_Tab_Null_Update=update Longvarcharnull_Tab set NULL_VAL=? + +Date_Tab_Mfgdate_Update=update Date_Tab set MFG_DATE=? +Date_Tab_Null_Update=update Date_Tab set NULL_VAL=? + +Time_Tab_Brktime_Update=update Time_Tab set BRK_TIME=? +Time_Tab_Null_Update=update Time_Tab set NULL_VAL=? + +Timestamp_Tab_Intime_Update=update Timestamp_Tab set IN_TIME=? +Timestamp_Tab_Null_Update=update Timestamp_Tab set NULL_VAL=? + +Binary_Tab_Val_Update=update Binary_Tab set BINARY_VAL=? +Varbinary_Tab_Val_Update=update Varbinary_Tab set VARBINARY_VAL=? +Longvarbinary_Tab_Val_Update=update Longvarbinary_Tab set LONGVARBINARY_VAL=? + +CoffeeTab_Query=select COF_NAME,PRICE from ctstable2 where TYPE_ID=? +CoffeeTab_Delete=delete from ctstable2 where KEY_ID=? + +CoffeeTab_Select=select PRICE from ctstable2 where KEY_ID=? +CoffeeTab_Update=update ctstable2 set PRICE=PRICE*20 where TYPE_ID=? + +Ins_Coffee_Tab=insert into ctstable2 values (9,'COFFEE-9',9.0,5) +Del_Coffee_Tab=delete from ctstable2 where KEY_ID=9 +Upd_Coffee_Tab=update ctstable2 set PRICE=PRICE*20 where TYPE_ID=1 +Sel_Coffee_Tab=select PRICE from ctstable2 where KEY_ID>4 + +#********************************************************************************** +# is used in ResultSet. To update with BIT value. +#********************************************************************************** +Update_decimal_tab=update Decimal_Tab set MAX_VAL=1.0, MIN_VAL=0.0, NULL_VAL=null +Update_numeric_tab=update Numeric_Tab set MAX_VAL=1.0, MIN_VAL=0.0, NULL_VAL=null +Update_char_tab1=update Char_Tab set COFFEE_NAME=1, NULL_VAL=null +Update_char_tab2=update Char_Tab set COFFEE_NAME=0, NULL_VAL=null +Update_varchar_tab1=update Varchar_Tab set COFFEE_NAME=1, NULL_VAL=null +Update_varchar_tab2=update Varchar_Tab set COFFEE_NAME=0, NULL_VAL=null + +#********************************************************************************** +# is used in BatchUpdate Tests. +#********************************************************************************** +BatchUpdate_Query=select count(*) from ctstable2 where TYPE_ID=? +BatchUpdate_Delete=delete from ctstable2 +BatchInsert_String=insert into ctstable2 values(?,?,?,?) + +#********************************************************************************** +# is used in BatchUpdate exception +#********************************************************************************** +Coffee_InsTab=insert into ctstable2 values (9,'COFFEE-9',9.0,5) +Coffee_DelTab=delete from ctstable2 where KEY_ID=2 +Coffee_UpdTab=update ctstable2 set PRICE=PRICE*20 where TYPE_ID=1 +Coffee_SelTab=select PRICE from ctstable2 where KEY_ID>4 +Coffee_Inscount_Query=select count(*) from ctstable2 where KEY_ID=9 +Coffee_Delcount_Query=select count(*) from ctstable2 where KEY_ID=2 +Coffee_Updcount_Query=select count(*) from ctstable2 where TYPE_ID=1 +CoffeeTab_Continue1=update ctstable2 set KEY_ID=?, COF_NAME=? where COF_NAME=? +CoffeeTab_ContinueSelect1=Select count(*) from ctstable2 where COF_NAME in ('Continue-1') +CoffeeTab_Continue2=update ctstable2 set KEY_ID=1,COF_NAME = 'Continue-1' where COF_NAME='COFFEE-1' +CoffeeTab_Continue3=update ctstable2 set KEY_ID=1 ,COF_NAME = 'Invalid' where COF_NAME='COFFEE-3' +CoffeeTab_Continue4=update ctstable2 set KEY_ID=2,COF_NAME = 'Continue-3' where COF_NAME='COFFEE-2' +Coffee_Proc1=create procedure Coffee_Proc1(keyid in Numeric) as begin update ctstable2 set KEY_ID=keyid,COF_NAME = 'Continue-1' where KEY_ID=1;end; +Coffee_Proc1_Delete=Drop procedure Coffee_Proc1 +#********************************************************************************** +# is used in DataTruncation exception +#********************************************************************************** +DTrunc_Ins_Coffee=insert into ctstable2 values (10,'kumarjadjsjdhsjhdjsjdajhdjasdsdsdsd',21.00,1) + +#********************************************************************************** +# is used in SQLException +#********************************************************************************** +Error_Query=select * from + +#********************************************************************************** +# Constructor arguments for exceptions +#********************************************************************************** +Reason_BatUpdExec=Message +SQLState_BatUpdExec=S100 +VendorCode_BatUpdExec=10 +IntialValue_BatUpdExec={1,1,1} +Index_DataTrunc=1 +Param_DataTrunc=true +Read_DataTrunc=true +DataSize_DataTrunc=100 +TranSize_DataTrunc=50 + +#********************************************************************************** +# is used to print a message to the current logging writer +#********************************************************************************** +JDBCLogstream_Message=Hello World + + +#********************************************************************************** +#The following pair of values are related and so must be changed simultaneously +#The first one is a reference value and the second one is a equivalent in millisecond after epoch +#********************************************************************************** +DateTime_Str_Val1=1970-01-02 00:00:00.001 +DateTime_Long_Val1=86400001 + +#********************************************************************************** +#The following pair of values are related and so must be changed simultaneously +#The first one is a reference value and the second one is a equivalent in millisecond after epoch +#********************************************************************************** +DateTime_Str_Val2=1969-12-30 23:59:59.999 +DateTime_Long_Val2=-86400001 + +#********************************************************************************** +#value in millisecond for testing after() and before() in Timestamp +#********************************************************************************** +Ref_Milli_Val = 86400000 + +#********************************************************************************** +#Value in nanoseconds for testing time values +#********************************************************************************** +Ref_Nano_Val = 999999999 + + +#********************************************************************************** +#Value in nanoseconds and must be equivalent equivalent to multiples of milliseconds +#********************************************************************************** +Ref_Nano_Val2 = 1000000 + +Trial_String=TrialSetting +Escape_Seq_Query=select count(*) from ctstable2 where cof_name like '\%-%' { escape '\\' } +Escape_Seq_ChkQuery=select count(*) from ctstable2 +Max_Set_Val=10 + + +#********************************************************************************** +#The SQL Statements which are used to test the Scalar functions using escape syntax +#********************************************************************************** +Concat_Fn_Query=SELECT {FN CONCAT(STRING1,STRING2)} FROM ctstable3 +Ascii_Fn_Query=SELECT {FN ASCII(STRING1)} FROM ctstable3 +Insert_Fn_Query=SELECT {FN INSERT(STRING1,2,4,STRING2)} FROM ctstable3 +Lcase_Fn_Query=SELECT {FN LCASE(STRING1)} FROM ctstable3 +Left_Fn_Query=SELECT {FN LEFT(STRING1,2)} FROM ctstable3 +Length_Fn_Query=SELECT {FN LENGTH(STRING1)} FROM ctstable3 +Locate_Fn_Query=SELECT {FN LOCATE(STRING1,STRING2)} FROM ctstable3 +Ltrim_Fn_Query=SELECT {FN LTRIM(STRING2)} FROM ctstable3 +Repeat_Fn_Query=SELECT {FN REPEAT(STRING1,3)} FROM ctstable3 +Right_Fn_Query=SELECT {FN RIGHT(STRING1,3)} FROM ctstable3 +Rtrim_Fn_Query=SELECT {FN RTRIM(STRING2)} FROM ctstable3 +Soundex_Fn_Query=SELECT {FN SOUNDEX(STRING1)} FROM ctstable3 +Space_Fn_Query=SELECT {FN SPACE(5)} FROM ctstable3 +Substring_Fn_Query=SELECT {FN SUBSTR(STRING2,2,3)} FROM ctstable3 +Ucase_Fn_Query=SELECT {FN UCASE(STRING1)} FROM ctstable3 +Char_Fn_Query=SELECT {FN CHAR(NUMCOL)} FROM ctstable3 +Replace_Fn_Query=SELECT {FN REPLACE(STRING2,STRING1,STRING3)} FROM ctstable3 +User_Fn_Query=SELECT {FN USER()} FROM ctstable3 +Ifnull_Fn_Query=SELECT {FN IFNULL(STRING1,100)} FROM ctstable3 +Sin_Fn_Query=SELECT {FN SIN(0)} FROM ctstable3 +Abs_Fn_Query=SELECT {FN ABS(NUMCOL)} FROM ctstable3 +Power_Fn_Query=SELECT {FN POWER(NUMCOL,2)} FROM ctstable3 +Round_Fn_Query=SELECT {FN ROUND(FLOATCOL,2)} FROM ctstable3 +Sign_Fn_Query=SELECT {FN SIGN(NUMCOL)} FROM ctstable3 +Sqrt_Fn_Query=SELECT {FN SQRT(FLOATCOL)} FROM ctstable3 +Truncate_Fn_Query=SELECT {FN TRUNCATE(FLOATCOL,1)} FROM ctstable3 +Mod_Fn_Query=SELECT {FN MOD(NUMCOL,7)} FROM ctstable3 +Floor_Fn_Query=SELECT {FN FLOOR(FLOATCOL)} FROM ctstable3 +Ceiling_Fn_Query=SELECT {FN CEILING(NUMCOL)} FROM ctstable3 +Log10_Fn_Query=SELECT {FN LOG10(NUMCOL)} FROM ctstable3 +Log_Fn_Query=SELECT {FN LOG(NUMCOL)} FROM ctstable3 +Exp_Fn_Query=SELECT {FN EXP(FLOATCOL)} FROM ctstable3 +Cos_Fn_Query=SELECT {FN COS(FLOATCOL)} FROM ctstable3 +Tan_Fn_Query=SELECT {FN TAN(FLOATCOL)} FROM ctstable3 +Cot_Fn_Query=SELECT {FN COT(FLOATCOL)} FROM ctstable3 +Curdate_Fn_Query=SELECT {FN CURDATE()} FROM ctstable3 +Dayname_Fn_Query=SELECT {FN DAYNAME(DATECOL)} FROM ctstable3 +Dayofmonth_Fn_Query=SELECT {FN DAYOFMONTH(DATECOL)} FROM ctstable3 +Dayofweek_Fn_Query=SELECT {FN DAYOFWEEK(DATECOL)} FROM ctstable3 +Dayofyear_Fn_Query=SELECT {FN DAYOFYEAR(DATECOL)} FROM ctstable3 +Week_Fn_Query=SELECT {FN WEEK(DATECOL)} FROM ctstable3 +Month_Fn_Query=SELECT {FN MONTH(DATECOL)} FROM ctstable3 +Year_Fn_Query=SELECT {FN YEAR(DATECOL)} FROM ctstable3 +Monthname_Fn_Query=SELECT {FN MONTHNAME(DATECOL)} FROM ctstable3 +Quarter_Fn_Query=SELECT {FN QUARTER(DATECOL)} FROM ctstable3 +Now_Fn_Query=SELECT {FN NOW()} FROM ctstable3 +Hour_Fn_Query=SELECT {FN HOUR(TIMECOL)} FROM ctstable3 +Minute_Fn_Query=SELECT {FN MINUTE(TIMECOL)} FROM ctstable3 +Second_Fn_Query=SELECT {FN SECOND(TIMECOL)} FROM ctstable3 +Database_Fn_Query=SELECT {FN DATABASE()} FROM ctstable3 +Acos_Fn_Query=SELECT {FN ACOS(FLOATCOL)} FROM ctstable3 +Asin_Fn_Query=SELECT {FN ASIN(FLOATCOL)} FROM ctstable3 +Atan_Fn_Query=SELECT {FN ATAN(FLOATCOL)} FROM ctstable3 +Atan2_Fn_Query=SELECT {FN ATAN2(FLOATCOL,FLOATCOL)} FROM ctstable3 +Degrees_Fn_Query=SELECT {FN DEGREES(NUMCOL)} FROM ctstable3 +Radians_Fn_Query=SELECT {FN RADIANS(NUMCOL)} FROM ctstable3 +Pi_Fn_Query=SELECT {FN PI()} FROM ctstable3 +Rand_Fn_Query=SELECT {FN RAND(NUMCOL)} FROM ctstable3 +Difference_Fn_Query=SELECT {FN DIFFERENCE(STRING1,STRING2)} FROM ctstable3 +Locate_Fn_Query=SELECT {FN LOCATE(STRING1,STRING2,2)} FROM ctstable3 +Timestampaddfrac_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_FRAC_SECOND,2,TSCOL1)} FROM ctstable3 +Timestampaddsecond_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_SECOND,2,TSCOL1)} FROM ctstable3 +Timestampaddminute_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_MINUTE,2,TSCOL1)} FROM ctstable3 +Timestampaddhour_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_HOUR,2,TSCOL1)} FROM ctstable3 +Timestampaddday_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_DAY,2,TSCOL1)} FROM ctstable3 +Timestampaddweek_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_WEEK,2,TSCOL1)} FROM ctstable3 +Timestampaddmonth_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_MONTH,2,TSCOL1)} FROM ctstable3 +Timestampaddquarter_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_QUARTER,2,TSCOL1)} FROM ctstable3 +Timestampaddyear_Fn_Query=SELECT {FN TIMESTAMPADD(SQL_TSI_YEAR,2,TSCOL1)} FROM ctstable3 +Timestampdifffrac_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_FRAC_SECOND,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffsecond_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_SECOND,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffminute_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_MINUTE,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffhour_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_HOUR,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffday_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_DAY,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffweek_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_WEEK,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffmonth_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_MONTH,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffquarter_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_QUARTER,TSCOL1,TSCOL2)} FROM ctstable3 +Timestampdiffyear_Fn_Query=SELECT {FN TIMESTAMPDIFF(SQL_TSI_YEAR,TSCOL1,TSCOL2)} FROM ctstable3 + + +#***************************************************************************** +#The SQL Statements which are used to test the Outer Joins using escape syntax +#***************************************************************************** +Left_Oj_Query=SELECT * FROM {OJ ctstable3 LEFT OUTER JOIN ctstable4 ON ctstable3.NUMCOL=ctstable4.NUMCOL} +Right_Oj_Query=SELECT * FROM {OJ ctstable3 RIGHT OUTER JOIN ctstable4 ON ctstable3.NUMCOL=ctstable4.NUMCOL} +Full_Oj_Query=SELECT * FROM {OJ ctstable3 FULL OUTER JOIN ctstable4 ON ctstable3.NUMCOL=ctstable4.NUMCOL} + + +#***************************************************************************** +#The SQL Statements for creating, inserting and dropping the tables which are +#used in testing the scalar functions and outer joins using escape syntax +#***************************************************************************** + +Fnschema_Tab1_Insert=INSERT INTO ctstable3 VALUES ('Java',' HotJava ','JAVA',100,0.5,{d '1993-07-13'},{t '10:30:55'},{ts '1996-05-10 10:07:04'},{ts '1996-05-10 10:07:05'}) +Fnschema_Tab2_Insert=INSERT INTO ctstable4 VALUES ('STRING3',100) + +Fnschema_Tab1_Delete=delete from ctstable3 +Fnschema_Tab2_Delete=delete from ctstable4 + +#***************************************************************************** +#The SQL Statements which are used in TxBean (Session bean) +#***************************************************************************** +TxBean_insert1=insert into TxBean_Tab1 values(?, ?, ?) +TxBean_insert2=insert into TxBean_Tab2 values(?, ?, ?) + +TxBean_delete1=delete from TxBean_Tab1 where KEY_ID = ? +TxBean_delete2=delete from TxBean_Tab2 where KEY_ID = ? + +TxBean_update1=update TxBean_Tab1 set TABONE_NAME = ? where KEY_ID = ? +TxBean_update2=update TxBean_Tab2 set TABTWO_NAME = ? where KEY_ID = ? +TxBean_update3=update TxBean_Tab1 set PRICE = ? where KEY_ID = ? +TxBean_update4=update TxBean_Tab2 set PRICE = ? where KEY_ID = ? + +TxBean_query1=select * from TxBean_Tab1 +TxBean_query2=select * from TxBean_Tab2 +TxBean_query3=select KEY_ID, TABONE_NAME, PRICE from TxBean_Tab1 where KEY_ID = ? +TxBean_query4=select KEY_ID, TABTWO_NAME, PRICE from TxBean_Tab2 where KEY_ID = ? + + +TxBean_Tab1_Delete=delete from TxBean_Tab1 +TxBean_Tab2_Delete=delete from TxBean_Tab2 + +#***************************************************************************** +#The SQL Statements which are used in TxEBean (Entity bean) +#***************************************************************************** +TxEBean_updateString1=insert into TxEBean_Tab values(?, ?, ?) +TxEBean_updateString2=delete from TxEBean_Tab where KEY_ID = ? +TxEBean_updateString3=update TxEBean_Tab set BRAND_NAME = ?, PRICE = ? where KEY_ID = ? + +TxEBean_selectString1=select KEY_ID from TxEBean_Tab where KEY_ID = ? +TxEBean_selectString2=select KEY_ID from TxEBean_Tab where BRAND_NAME = ? +TxEBean_selectString3=select KEY_ID from TxEBean_Tab where PRICE = ? +TxEBean_selectString4=select KEY_ID, BRAND_NAME, PRICE from TxEBean_Tab where KEY_ID = ? +TxEBean_selectString5=select BRAND_NAME from TxEBean_Tab where KEY_ID = ? +TxEBean_selectString6=select PRICE from TxEBean_Tab where KEY_ID = ? + +TxEBean_queryStr1=select KEY_ID from TxEBean_Tab where KEY_ID = ? + +TxEBean_Delete=delete from TxEBean_Tab + +#***************************************************************************** +#The SQL Statements which are used in the integration/session and +#integration/entity tests +#***************************************************************************** +Integration_Tab_Delete=delete from Integration_Tab +Integration_Insert=insert into Integration_Tab values(?, ?) +Integration_Insert1=insert into Integration_Tab values(1000, 50000.0) +Integration_Insert2=insert into Integration_Tab values(1075, 10490.75) +Integration_Insert3=insert into Integration_Tab values(40, 200.50) +Integration_Insert4=insert into Integration_Tab values(30564, 25000.0) +Integration_Insert5=insert into Integration_Tab values(387, 1000000.0) +Integration_Select_Account=select * from Integration_Tab WHERE ACCOUNT = ? +Integration_Select_All=select * from Integration_Tab +Integration_Update_Account=update Integration_Tab set BALANCE = ? where ACCOUNT = ? +Integration_Delete_Account=delete from Integration_Tab where ACCOUNT = ? + +#***************************************************************************** +#The SQL Statements which are used in the integration/sec tests +#***************************************************************************** +Integration_Sec_Tab_Delete=delete from Integration_Sec_Tab +Integration_Sec_Tab_Insert=insert into Integration_Sec_Tab values(?, ?, ?) +Integration_Sec_Tab_Delete1=delete from Integration_Sec_Tab WHERE LOG_NO=? +Integration_Sec_Tab_Delete2=delete FROM Integration_Sec_Tab where LOG_NO=? and not ( LINE_NO = ? ) +Integration_Sec_Tab_Update=update Integration_Sec_Tab set MESSAGE= ? where LOG_NO = ? and LINE_NO = ? +Integration_Sec_Tab_Select1=select MESSAGE, LINE_NO from Integration_Sec_Tab where LOG_NO = ? and not( LINE_NO= ? ) order by LINE_NO +Integration_Sec_Tab_Select2=select MESSAGE FROM Integration_Sec_Tab where LOG_NO = ? and LINE_NO = ? +Integration_Sec_Tab_Select3=select MAX(LOG_NO) FROM Integration_Sec_Tab +Integration_Sec_Tab_Select4=select LOG_NO from Integration_Sec_Tab where MESSAGE = ? and LINE_NO = ? +Integration_Sec_Tab_Select5=select LINE_NO from Integration_Sec_Tab where LOG_NO = ? and LINE_NO= ? + + +#***************************************************************************** +#The SQL Statements which are used in DBSupport used by ejb/ee/bb tests +#***************************************************************************** +BB_Tab_Delete=delete from BB_Tab +BB_Insert1=insert into BB_Tab values(?, ?, ?) +BB_Select1=select KEY_ID from BB_Tab where KEY_ID = ? +BB_Select2=select KEY_ID from BB_Tab where BRAND_NAME = ? +BB_Select3=select KEY_ID from BB_Tab where PRICE = ? +BB_Select4=select KEY_ID from BB_Tab where PRICE >= ? and PRICE <= ? +BB_Select5=select KEY_ID from BB_Tab where KEY_ID >= ? and KEY_ID <= ? +BB_Select6=select PRICE from BB_Tab where KEY_ID = ? +BB_Update1=update BB_Tab set PRICE = ? where KEY_ID = ? +BB_Delete1=delete from BB_Tab where KEY_ID = ? + +#***************************************************************************** +#The SQL Statements which are used in DAO by ejb/ee/bb tests +#***************************************************************************** +COFFEE_BB_Tab_Delete=delete from BB_Tab +COFFEE_BB_Insert1=insert into BB_Tab values(?, ?, ?) +COFFEE_BB_Select1=select KEY_ID from BB_Tab where KEY_ID = ? +COFFEE_BB_Select2=select KEY_ID from BB_Tab where BRAND_NAME = ? +COFFEE_BB_Select3=select KEY_ID from BB_Tab where PRICE = ? +COFFEE_BB_Select4=select KEY_ID from BB_Tab where PRICE >= ? and PRICE <= ? +COFFEE_BB_Select5=select KEY_ID from BB_Tab where KEY_ID >= ? and KEY_ID <= ? +COFFEE_BB_Select6=select PRICE from BB_Tab where KEY_ID = ? +COFFEE_BB_Update1=update BB_Tab set PRICE = ? where KEY_ID = ? +COFFEE_BB_Delete1=delete from BB_Tab where KEY_ID = ? + +#***************************************************************************** +#The SQL Statements which are used in DBSupport in jta/ee/txpropagationtest +#***************************************************************************** +JTA_Tab1_Delete=delete from JTA_Tab1 +JTA_Tab2_Delete=delete from JTA_Tab2 + +JTA_Tab1_Insert=insert into JTA_Tab1 values(?, ?, ?) +JTA_Tab2_Insert=insert into JTA_Tab2 values(?, ?, ?) + +JTA_Delete1=delete from JTA_Tab1 where KEY_ID = ? +JTA_Delete2=delete from JTA_Tab2 where KEY_ID = ? + +JTA_Tab1_Update1=update JTA_Tab1 set COF_NAME = ? where KEY_ID = ? +JTA_Tab2_Update1=update JTA_Tab2 set CHOC_NAME = ? where KEY_ID = ? + +JTA_Tab1_Update2=update JTA_Tab1 set PRICE = ? where KEY_ID = ? +JTA_Tab2_Update2=update JTA_Tab2 set PRICE = ? where KEY_ID = ? + +JTA_Tab1_Select=select * from JTA_Tab1 +JTA_Tab2_Select=select * from JTA_Tab2 + +JTA_Tab1_Select1=select KEY_ID, COF_NAME, PRICE FROM JTA_Tab1 where KEY_ID = ? +JTA_Tab2_Select1=select KEY_ID, CHOC_NAME, PRICE FROM JTA_Tab2 where KEY_ID = ? + + +#***************************************************************************** +# SQL Statements used by deployment tests +# +# See /tests/assembly/util/dbsupport for more details +# +#***************************************************************************** + +# +# BMP table with Integer Primary Key +# +DEPLOY_intPKTable_Insert=insert into Deploy_Tab1 values(?, ?, ?) +DEPLOY_intPKTable_Select_PK=select KEY_ID from Deploy_Tab1 where KEY_ID = ? +DEPLOY_intPKTable_Select_Price=select PRICE from Deploy_Tab1 where KEY_ID = ? +DEPLOY_intPKTable_Update=update Deploy_Tab1 set PRICE = ? where KEY_ID = ? +DEPLOY_intPKTable_Delete=delete from Deploy_Tab1 where KEY_ID = ? +DEPLOY_intPKTable_Cleanup=delete from Deploy_Tab1 + +# +# BMP table with String Primary Key +# +DEPLOY_strPKTable_Insert=insert into Deploy_Tab2 values(?, ?, ?) +DEPLOY_strPKTable_Select_PK=select KEY_ID from Deploy_Tab2 where KEY_ID = ? +DEPLOY_strPKTable_Select_Price=select PRICE from Deploy_Tab2 where KEY_ID = ? +DEPLOY_strPKTable_Update=update Deploy_Tab2 set PRICE = ? where KEY_ID = ? +DEPLOY_strPKTable_Delete=delete from Deploy_Tab2 where KEY_ID = ? +DEPLOY_strPKTable_Cleanup=delete from Deploy_Tab2 + +# +# BMP table with Long Primary Key +# +DEPLOY_longPKTable_Insert=insert into Deploy_Tab3 values(?, ?, ?) +DEPLOY_longPKTable_Select_PK=select KEY_ID from Deploy_Tab3 where KEY_ID = ? +DEPLOY_longPKTable_Select_Price=select PRICE from Deploy_Tab3 where KEY_ID = ? +DEPLOY_longPKTable_Update=update Deploy_Tab3 set PRICE = ? where KEY_ID = ? +DEPLOY_longPKTable_Delete=delete from Deploy_Tab3 where KEY_ID = ? +DEPLOY_longPKTable_Cleanup=delete from Deploy_Tab3 + +# +# BMP table with Float Primary Key +# +DEPLOY_floatPKTable_Insert=insert into Deploy_Tab4 values(?, ?, ?) +DEPLOY_floatPKTable_Select_PK=select KEY_ID from Deploy_Tab4 where KEY_ID = ? +DEPLOY_floatPKTable_Select_Price=select PRICE from Deploy_Tab4 where KEY_ID = ? +DEPLOY_floatPKTable_Update=update Deploy_Tab4 set PRICE = ? where KEY_ID = ? +DEPLOY_floatPKTable_Delete=delete from Deploy_Tab4 where KEY_ID = ? +DEPLOY_floatPKTable_Cleanup=delete from Deploy_Tab4 + +# +# BMP table with Compound Primary Key +# +DEPLOY_compoundPKTable_Insert=insert into Deploy_Tab5 values(?, ?, ?, ?, ?) +DEPLOY_compoundPKTable_Select_PK=select KEY_ID1, KEY_ID2, KEY_ID3 from Deploy_Tab5 where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Select_Price=select PRICE from Deploy_Tab5 where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Update=update Deploy_Tab5 set PRICE = ? where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Delete=delete from Deploy_Tab5 where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +DEPLOY_compoundPKTable_Cleanup=delete from Deploy_Tab5 + +#***************************************************************************** +#The SQL Statements which are used in DBSupport2 used by secpropagation tests +#***************************************************************************** +SEC_Insert1=insert into SEC_Tab1 values(?, ?, ?) +SEC_Select1=select KEY_ID from SEC_Tab1 where KEY_ID = ? +SEC_Select2=select KEY_ID from SEC_Tab1 where BRAND = ? +SEC_Select3=select KEY_ID from SEC_Tab1 where PRICE = ? +SEC_Select4=select KEY_ID from SEC_Tab1 where PRICE >= ? and PRICE <= ? +SEC_Select5=select KEY_ID from SEC_Tab1 where KEY_ID >= ? and KEY_ID <= ? +SEC_Select6=select PRICE from SEC_Tab1 where KEY_ID = ? +SEC_Update1=update SEC_Tab1 set PRICE = ? where KEY_ID = ? +SEC_Delete1=delete from SEC_Tab1 where KEY_ID = ? +SEC_Tab1_Delete=delete from SEC_Tab1 + +#***************************************************************************** +# Connector tests in src/tests/connector +#***************************************************************************** +ConnectorTable_Insert=insert into Connector_Tab values(?, ?, ?) +ConnectorTable_Delete=delete from Connector_Tab + +#***************************************************************************** +# insert values EIS +#***************************************************************************** +TSEIS_insert_init=1 +TSEIS_insert1=2 +TSEIS_insert2=3 + +#***************************************************************************** +#The SQL Statements which are used in xa multires tests +#***************************************************************************** + +Xa_Tab1_Select=select * from Xa_Tab1 + +# insert values +Xa_Tab1_Insert=insert into Xa_Tab1 values(?, ?, ?) + +# delete using id +Xa_Tab1_Delete1=delete from Xa_Tab1 where col1 = ? + +Xa_Tab1_Delete=delete from Xa_Tab1 +Xa_Tab2_Delete=delete from Xa_Tab2 + +#initial insert +Xa_Tab1_insert_init=insert into Xa_Tab1 values (1, 'Table1 Line one ', '1.0' ) +Xa_Tab2_insert_init=insert into Xa_Tab2 values (1, 'Table2 Line one ', '2.0' ) + +#subsequent insert +Xa_Tab1_insert1=insert into Xa_Tab1 values (2, 'Table1 Line two ', '11.0' ) +Xa_Tab1_insert2=insert into Xa_Tab1 values (3, 'Table1 Line three ','111.0' ) + +Xa_Tab2_insert1=insert into Xa_Tab2 values (2, 'Table2 Line two ', '22.0' ) +Xa_Tab2_insert2=insert into Xa_Tab2 values (3, 'Table2 Line three ', '222.0' ) + +#get results + +Xa_Tab1_query=select col1 from Xa_Tab1 order by col1 +Xa_Tab2_query=select col1 from Xa_Tab2 order by col1 + + + +#***************************************************************************** +# Coffee DAO SQL statements +#***************************************************************************** + +# +# Standard Coffee DAO +# +COFFEE_insert=insert into Coffee_Table values(?, ?, ?) +COFFEE_select=select BRAND_NAME, PRICE from Coffee_Table where KEY_ID = ? +COFFEE_select_pk_by_name=select KEY_ID from Coffee_Table where BRAND_NAME = ? +COFFEE_select_pk_by_price=select KEY_ID from Coffee_Table where PRICE = ? +COFFEE_select_pk_by_price_range=select KEY_ID from Coffee_Table where PRICE >= ? and PRICE <= ? +COFFEE_select_pk_by_pk_range=select KEY_ID from Coffee_Table where KEY_ID >= ? and KEY_ID <= ? +COFFEE_select_price=select PRICE from Coffee_Table where KEY_ID = ? +COFFEE_update=update Coffee_Table set BRAND_NAME = ?, PRICE = ? where KEY_ID = ? +COFFEE_update_price=update Coffee_Table set PRICE = ? where KEY_ID = ? +COFFEE_delete=delete from Coffee_Table where KEY_ID = ? +COFFEE_delete_all=delete from Coffee_Table + + +# +# Coffee DAO variant with String Primary Key +# +COFFEE_STRING_PK_insert=insert into Coffee_StringPK_Table values(?, ?, ?) +COFFEE_STRING_PK_select=select KEY_ID from Coffee_StringPK_Table where KEY_ID = ? +COFFEE_STRING_PK_select_price=select PRICE from Coffee_StringPK_Table where KEY_ID = ? +COFFEE_STRING_PK_update_price=update Coffee_StringPK_Table set PRICE = ? where KEY_ID = ? +COFFEE_STRING_PK_delete=delete from Coffee_StringPK_Table where KEY_ID = ? +COFFEE_STRING_PK_delete_all=delete from Coffee_StringPK_Table + +# +# Coffee DAO variant with Long Primary Key +# +COFFEE_LONG_PK_insert=insert into Coffee_LongPK_Table values(?, ?, ?) +COFFEE_LONG_PK_select=select KEY_ID from Coffee_LongPK_Table where KEY_ID = ? +COFFEE_LONG_PK_select_price=select PRICE from Coffee_LongPK_Table where KEY_ID = ? +COFFEE_LONG_PK_update_price=update Coffee_LongPK_Table set PRICE = ? where KEY_ID = ? +COFFEE_LONG_PK_delete=delete from Coffee_LongPK_Table where KEY_ID = ? +COFFEE_LONG_PK_delete_all=delete from Coffee_LongPK_Table + +# +# Coffee DAO variant with Float Primary Key +# +COFFEE_FLOAT_PK_insert=insert into Coffee_FloatPK_Table values(?, ?, ?) +COFFEE_FLOAT_PK_select=select KEY_ID from Coffee_FloatPK_Table where KEY_ID = ? +COFFEE_FLOAT_PK_select_price=select PRICE from Coffee_FloatPK_Table where KEY_ID = ? +COFFEE_FLOAT_PK_update_price=update Coffee_FloatPK_Table set PRICE = ? where KEY_ID = ? +COFFEE_FLOAT_PK_delete=delete from Coffee_FloatPK_Table where KEY_ID = ? +COFFEE_FLOAT_PK_delete_all=delete from Coffee_FloatPK_Table + +# +# Coffee DAO variant with Compound Primary Key +# +COFFEE_COMPOUND_PK_insert=insert into Coffee_CompoundPK_Table values(?, ?, ?, ?, ?) +COFFEE_COMPOUND_PK_select=select KEY_ID1, KEY_ID2, KEY_ID3 from Coffee_CompoundPK_Table where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_select_price=select PRICE from Coffee_CompoundPK_Table where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_update_price=update Coffee_CompoundPK_Table set PRICE = ? where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_delete=delete from Coffee_CompoundPK_Table where KEY_ID1 = ? and KEY_ID2 = ? and KEY_ID3 = ? +COFFEE_COMPOUND_PK_delete_all=delete from Coffee_CompoundPK_Table + + diff --git a/glassfish-runner/connector-platform-tck/src/test/java/arquillian/AppclientConfigTest.txt b/glassfish-runner/connector-platform-tck/src/test/java/arquillian/AppclientConfigTest.txt new file mode 100644 index 0000000000..56fcdb2ec1 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/src/test/java/arquillian/AppclientConfigTest.txt @@ -0,0 +1,34 @@ +package arquillian; + +import org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor; +import org.jboss.arquillian.config.descriptor.api.ProtocolDef; +import org.jboss.arquillian.container.test.impl.MapObject; +import org.jboss.shrinkwrap.descriptor.api.Descriptors; +import org.junit.jupiter.api.Test; +import tck.arquillian.protocol.appclient.AppClientProtocolConfiguration; + +import java.io.InputStream; +import java.util.Arrays; +import java.util.Map; + +public class AppclientConfigTest { + @Test + public void testLoadAppclientConfig() throws Exception{ + System.out.println("AppclientConfigTest.testLoadAppclientConfig"); + InputStream input = AppclientConfigTest.class.getResource("/arquillian.xml").openStream(); + ArquillianDescriptor descriptor = Descriptors.importAs(ArquillianDescriptor.class) + .fromStream(input); + System.out.println("########################" +descriptor.getGroups().get(0)); + AppClientProtocolConfiguration config = new AppClientProtocolConfiguration(); + ProtocolDef appclientDef = descriptor.getGroups().get(0).getGroupContainers().get(0).getProtocols().get(0); + System.out.println(appclientDef); + Map props = appclientDef.getProtocolProperties(); + System.out.println(props); + MapObject.populate(config, props); + System.out.println(config.getClientCmdLineString()); + System.out.println("--- ENV array:"); + System.out.println(Arrays.asList(config.clientEnvAsArray())); + System.out.println("--- CMD array:"); + System.out.println(Arrays.asList(config.clientCmdLineAsArray())); + } +} diff --git a/glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishTckExtension.java b/glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishTckExtension.java new file mode 100644 index 0000000000..413555b96a --- /dev/null +++ b/glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishTckExtension.java @@ -0,0 +1,13 @@ +package arquillian; + +import org.jboss.arquillian.container.test.spi.client.deployment.ApplicationArchiveProcessor; +import org.jboss.arquillian.core.spi.LoadableExtension; +import org.jboss.arquillian.test.spi.enricher.resource.ResourceProvider; + +public class GlassfishTckExtension implements LoadableExtension { + @Override + public void register(ExtensionBuilder builder) { + builder.service(ResourceProvider.class, GlassfishXmlProcessor.class); + builder.observer(GlassfishXmlProcessor.class); + } +} \ No newline at end of file diff --git a/glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishXmlProcessor.java b/glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishXmlProcessor.java new file mode 100644 index 0000000000..0db6d11f0b --- /dev/null +++ b/glassfish-runner/connector-platform-tck/src/test/java/arquillian/GlassfishXmlProcessor.java @@ -0,0 +1,139 @@ +package arquillian; + +import org.jboss.arquillian.config.descriptor.api.ArquillianDescriptor; +import org.jboss.arquillian.config.descriptor.api.ExtensionDef; +import org.jboss.arquillian.core.api.annotation.Observes; +import org.jboss.shrinkwrap.api.Archive; +import org.jboss.shrinkwrap.api.container.ManifestContainer; +import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import tck.arquillian.porting.lib.spi.AbstractTestArchiveProcessor; +import org.jboss.shrinkwrap.api.asset.StringAsset; + + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.logging.Logger; + +public class GlassfishXmlProcessor extends AbstractTestArchiveProcessor { + static Logger log = Logger.getLogger(GlassfishXmlProcessor.class.getName()); + static HashSet sunXmlFiles = new HashSet(); + static { + sunXmlFiles.add("META-INF/sun-application-client.xml"); + sunXmlFiles.add("META-INF/sun-application.xml"); + sunXmlFiles.add("META-INF/sun-ra.xml"); + sunXmlFiles.add("WEB-INF/sun-web.xml"); + sunXmlFiles.add("META-INF/sun-ejb-jar.xml"); + } + + private Path descriptorDirRoot; + + /** + * Called on completion of the Arquillian configuration. + */ + public void initalize(@Observes ArquillianDescriptor descriptor) { + // Must call to setup the ResourceProvider + super.initalize(descriptor); + + // Get the descriptor path + ExtensionDef descriptorsDef = descriptor.extension("jboss-descriptors"); + String descriptorDir = descriptorsDef.getExtensionProperties().get("descriptorDir"); + if(descriptorDir == null) { + String msg = "Specify the descriptorDir property in arquillian.xml as extension:\n"+ + "\n" + + " path-to-descriptors-dir\n" + + ""; + //throw new IllegalStateException(msg); + } else { + this.descriptorDirRoot = Paths.get(descriptorDir); + if(!Files.exists(this.descriptorDirRoot)) { + //throw new RuntimeException("Descriptor directory does not exist: " + this.descriptorDirRoot); + } + } + } + + @Override + public void processClientArchive(JavaArchive clientArchive, Class testClass, URL sunXmlURL) { + String name = clientArchive.getName(); + addDescriptors(name, clientArchive, testClass); + } + + @Override + public void processWebArchive(WebArchive webArchive, Class testClass, URL sunXmlURL) { + String name = webArchive.getName(); + addDescriptors(name, webArchive, testClass); + } + + @Override + public void processRarArchive(JavaArchive warArchive, Class testClass, URL sunXmlURL) { + + } + + @Override + public void processParArchive(JavaArchive javaArchive, Class aClass, URL url) { + + } + + @Override + public void processEarArchive(EnterpriseArchive earArchive, Class testClass, URL sunXmlURL) { + String name = earArchive.getName(); + addDescriptors(name, earArchive, testClass); + } + + @Override + public void processEjbArchive(JavaArchive ejbArchive, Class testClass, URL sunXmlURL) { + String name = ejbArchive.getName(); + addDescriptors(name, ejbArchive, testClass); + } + + /** + * + * @param archiveName + * @param archive + * @param testClass + */ + protected void addDescriptors(String archiveName, ManifestContainer archive, Class testClass) { + /*String pkgName = testClass.getPackageName(); + Path pkgPath = Paths.get(pkgName.replace(".", "/")); + Path descriptorDir = descriptorDirRoot.resolve(pkgPath); + List files = findJBossDescriptors(descriptorDir); + for (File f : files) { + String name = f.getName(); + if(!name.startsWith(archiveName)) { + continue; + } + try { + URL url = f.toURL(); + // stateful_migration_threetwo_annotated.ear.jboss-deployment-structure.xml -> jboss-deployment-structure.xml + String descriptorName = name.replace(archiveName+".", ""); + if(archive instanceof WebArchive webArchive) { + webArchive.addAsWebInfResource(url, descriptorName); + } else { + + archive.addAsManifestResource(url, descriptorName); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + }*/ + } + protected List findJBossDescriptors(Path pkgPath) { + try { + List files = Files.walk(pkgPath, 1) + .map(Path::toFile) + .filter(File::isFile) + .toList(); + return files; + } catch (Exception e) { + } + return Collections.emptyList(); + } +} diff --git a/glassfish-runner/connector-platform-tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension b/glassfish-runner/connector-platform-tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension new file mode 100644 index 0000000000..213f7f5aa9 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/src/test/resources/META-INF/services/org.jboss.arquillian.core.spi.LoadableExtension @@ -0,0 +1 @@ +arquillian.GlassfishTckExtension \ No newline at end of file diff --git a/glassfish-runner/connector-platform-tck/src/test/resources/appclient-arquillian.xml b/glassfish-runner/connector-platform-tck/src/test/resources/appclient-arquillian.xml new file mode 100644 index 0000000000..0c311e2a65 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/src/test/resources/appclient-arquillian.xml @@ -0,0 +1,64 @@ + + + + + + true + true + target/appclient + true + + ${glassfish.home}/glassfish/bin/appclient \ + -Djdk.tls.client.enableSessionTicketExtension=false \ + -Djdk.tls.server.enableSessionTicketExtension=false \ + -Djava.security.policy=${glassfish.home}/glassfish/lib/appclient/client.policy \ + -Dcts.tmp=${ts.home}/tmp \ + -Djava.security.auth.login.config=${glassfish.home}/glassfish/lib/appclient/appclientlogin.conf \ + -Djava.protocol.handler.pkgs=javax.net.ssl \ + -Djavax.net.ssl.keyStore=${ts.home}/bin/certificates/clientcert.jks \ + -Djavax.net.ssl.keyStorePassword=changeit \ + -Djavax.net.ssl.trustStore=${glassfish.home}/glassfish/domains/domain1/config/cacerts.jks \ + -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl \ + -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl \ + -Djavax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl \ + -Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.SAXParser \ + -Dorg.xml.sax.parser=org.xml.sax.helpers.XMLReaderAdapter \ + -Doracle.jdbc.J2EE13Compliant=true \ + -Doracle.jdbc.mapDateToTimestamp \ + -Dstartup.login=false \ + -Dauth.gui=false \ + -Dlog.file.location=${glassfish.home}/glassfish/domains/domain1/logs \ + -Dri.log.file.location=${glassfish.home}/glassfish/domains/domain1/logs \ + -DwebServerHost.2=localhost \ + -DwebServerPort.2=8080 \ + -Ddeliverable.class=com.sun.ts.lib.deliverable.cts.CTSDeliverable \ + -jar \ + ${clientEarDir}/${clientAppArchive} + + \\ + + PATH=${env.PATH};LD_LIBRARY_PATH=${glassfish.home}/lib;AS_DEBUG=true; + APPCPATH=${glassfish.home}/glassfish/lib/arquillian-protocol-lib.jar:target/appclient/lib/arquillian-core.jar:target/appclient/lib/arquillian-junit5.jar:${glassfish.home}/glassfish/modules/security.jar + ${project.basedir} + ${ts.home}/tmp + ${ts.home}/bin/ts.jte + ${ts.home}/bin/tssql.stmt + true + 20000 + + + \ No newline at end of file diff --git a/glassfish-runner/connector-platform-tck/src/test/resources/arquillian.xml b/glassfish-runner/connector-platform-tck/src/test/resources/arquillian.xml new file mode 100644 index 0000000000..02ab1a7c68 --- /dev/null +++ b/glassfish-runner/connector-platform-tck/src/test/resources/arquillian.xml @@ -0,0 +1,32 @@ + + + + + + true + true + target/appclient + true + ${project.basedir} + ${ts.home}/tmp + ${ts.home}/bin/ts.jte + ${ts.home}/bin/tssql.stmt + true + 20000 + + + \ No newline at end of file diff --git a/glassfish-runner/connector-platform-tck/src/test/resources/logging.properties b/glassfish-runner/connector-platform-tck/src/test/resources/logging.properties new file mode 100644 index 0000000000..5139b6bf9d --- /dev/null +++ b/glassfish-runner/connector-platform-tck/src/test/resources/logging.properties @@ -0,0 +1,15 @@ +handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler + +tck.jakarta.platform.ant.level = FINER +org.glassfish.appclient.client.level = FINER + +java.util.logging.FileHandler.pattern = tck-run.log +java.util.logging.FileHandler.level = FINEST +#java.util.logging.FileHandler.formatter = tck.conversion.log.TestLogFormatter +java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter +# date(1), source(2), logger(3), level(4), message(5), thrown(6) +java.util.logging.SimpleFormatter.format = [%1$tH:%tM:%1$tS.%1$tL] %2$.12s/%4$s %5$s %n + +# Limit the message that are printed on the console to INFO and above. +java.util.logging.ConsoleHandler.level = FINEST +java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter \ No newline at end of file diff --git a/glassfish-runner/connector-platform-tck/whitebox.jar b/glassfish-runner/connector-platform-tck/whitebox.jar new file mode 100644 index 0000000000000000000000000000000000000000..94540364b7fe90cbdc7a30d0979cbeeea649e053 GIT binary patch literal 127202 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 z z2&C$#8{|NKn9KLnPqX~lpqHAE$(P|`iI!9x_4({foCNE2xn;_=x^B+j;EG_2rNNm~ zm}z$LC}C;)0iQi{E1w~Jmb3?rdm1!6AM!Jbjyq!YXUX!Lf!_D16JV3jV2g4R8Tx=0 z&VWs=uY(bziGwq?m?4qGbKm7lslF4RhHSc+$~gD4@U})R1>Pr!lIpqhA)mG?2}mHF z`2cbm)d#1BR8&2I6k9OIaXWWCLLo129t};l0h3(`$2G`NnVhIM_{=tnm5I;Vk^`JhJwdIQ zLl%N^9kR$Etk`Roo`NW58&x>`1wcMeyS?Xb2-15+$1rvrw=Gvv;i_$|4qgYFA4yDC zLY?sWt}y+>2*_q2Ejl7^mtYb~+N2!raGI8g;4&JY?f370g(vc&qzPAD^AGk&@YhJ> zs5dHr4#kqyB_gyw+!zk!qY=^ceyBV0d^0pF(~(PUuXa9+T#4v8e;V{}*XyN1-%V=1 z=3fue|N5tqq#4Le%F)Wn%K4vHZL+l#G+x({GdUg%n>nL+2#7aew+}GzxA?pS^5jkz5!V3=bJ{XaKbD;0 zPsnE@^^FjDvar~Ity8(|Lf~Skk0$)-wt~g{r&xb*LQoynKN_77`o3cJm+_yjh~kf6q+h_mYfDW(BnI5T{Rte z2-fy#YxaqzbM-0MmUz&y6U#4{T7<9=dB1TMN^mZh?C_PGX3$QHAC}k&HjaP5S>29% zgUOWD>DTH z6&=xxOv=%q!S-d1TT$aj z^+PK|?(wM)c*Hb+TxCH$+%v#iXkwY`9xvOgg~R(anIP>8s{0i6rtAkycJQ4oO^))o zqdEPtsXILr%BX*-X1CNfU`djB>sGT%R{REjNwR`kJ;gF3L|T_iNxaw$lrhC{MJz?J z^reMiVK+w31wl!3t+ijNx;9zWwb)kCjTmRIMe#*CUqz{+7PLgG)afQV%RYBhrQ*7+ zAakLxwe7aGZEADDytVD26kvcOx@KAmUxR&ZO^7nZ%!l5d*Gf^@k$`7t=Eg?-(KfR- z)~pNRM8MJ~KHuNA19yzh59jAV{eDqr?5?t5k%BP#7Xi}e!?g>mEk3(!kH?>+{$X^Q z7w8L&-JU1$Sl@(Jy>Lkr14bSTV@o>ZJn&yUy_c|#9JgCs(3hd*q%Z%Ltp%=`^}es! z8u+?e^8D{sOGztp&wt*OP0>{HnAgS=npUSaNXQ=KhBstDVOc<-EGRPh%H8J7W}MCDNY}xp-&ugn^TBCu z5X?PnykqiZ+vI#ILd>2vMT?W+VCN)6oWi6$fFoYO*Z*7G7G6ZBg9Qo%HE?l?E3STBweK@Uq4(!KB_&T+P0 z{!SbV@u;9z^4G>;x)Y2CqrGg%tUlKGmklqYVFTkXTCJwhJN-3dvNAtw?)g$NYS)H+ z87JPOaOaHHa>drUnK*H0GloChQ5(5Ah~-r>9n~e0CDMt*j`m!?o(>$0Wo#NRvU^oY z{DhNIankMCsq9j%CXR8H>bg(svS%^mC}ExsU~QCdK`zUw+1wH08`{ce^#>u&1opT1 zoE2PI#+Nf$lkwWhwP`o{lgAZIrau{!9}s#{(9>))PAAJqf4kGF&ewacdrI~9=}qXB z@#zjoAeCNF@Ks+o#-Sro?j-i!U+s9PjH#lR?rckFruha~Ntr&bY=Gr<-&=8Nr5=Ar zPDBet&>{Darvy6kuZR!z!7Cfw&-U@`lPT`T^v1sY2Ekg4SQyrb(3FgT-j*28L*Au0 z9Vg&weNSYNR&3k0ZQFWdqhd|< zbPu|(=KJPcp4;==>+Jo1)?SbI{G+C1t~r9#Y-K8QfvxA?E}=tPN)twHPn*zOY<={) zCU4FC{9ZM*u=|CH4Moo(*4|;}UTe@6Plg<8HrZ~cgslfe?-l6PXODL{t}p-MbpgVf zOOj{o5&Y<0g?&x-UHwxu@o68})M}qYzkZLaEajO%S8kI`_@MAzmvtv?hQhu_(6lyx zB)~lT^doUa(g@wTDN?FE1_6*)p%h^P#pmZ-Db+%WqdUIHwI0L~ZL}6F#Z@4(nz&DL ze4v*F0ZFa?O@F#i&;e5vvYS5oU|S?{&4uNRP;kvpok4#}X1d|5;%s1zph)s6Ww|w1 z_Vfy`U1RAhN_yy8CAMwAwsIrbGm9>~N4mfuapklzcg<7iEvgIM#Q!C{cdqapJNd5^tQ04&Q-mO@H{^Ai)R$+-nQq0$$Ofr z6_jPzi9qHC(F4&+6aedZU1O7PMU?l`|Cr*gI zOw~21hHcU5oUl{k4rGy)*p3d)Mh!TtjHL$rk>GHvY+G}6l!z5-;3fC($1ID9CHopZ zIPPSVw^l6*Zrx@hM)(MTQCh8?1i@9A&HAGTLH2C}fT;vw!|}ByNa=lxkq!8A!4V&G z6q+TnN2{@_D_~aDQ5q}WtA(L1fuUVx5CK=@EwsryM_E}X%rDj`x#$Axkxxrg?76Sa z>V2UxDxk?#<$l_-TDT>{Ooeul!j!YxJ-EBiU|d#5|JrV@)m*JE7!_<1SLv-gC_yE$ zNw^Ue_F~YEuf+QpC%2_urTNeb5!_o3&C`1SGeGif(Zt*PsR!Q~SZ4 z;-EDc8LP52UsnR8zlO@P!gy_D3$m%MP-yovj}LXh!)cq9ST;xmTd=__^1YKxp33W@ z08jb8k%9bM@q~@GNQHwC^&X9w_Qf)vi+B#CLJW8XVu3BxU|NL{6ZpfvHf0bwh z%(&gduYN2us&3t%Kb7>su|)TUdDh?8ZUn(Nh7=(Mh%-2qi$4VXsI)_%FB_Qqjj){HXVNW$LY z7X3v<()5qN{1txrmnWE?I4hh~mQ=P&Vim_cV$4faZ;>RJD93Dm_<^@j98n~4%t*9T zaGG;wj(JYBaF;93K}n+>ixH4(Is+%}gdeY5ZYZHR>?^q}QqhNc!Y&eS4XSGg(Xt1= zk07Mi0zFPO_kuLXDb$(BRr$P=3fMaq= zZS0f!>f!HL{1|R=2t+pOXBg5brQOzBG`3Nd@MJS(>_aJ$vDInBf_=Th_7K8$8Dsy%hKB9NFCginq<`p4@wK+buCY6E)jw}+?mv|6-{PKQa|7Ebe;=BQ z3hk~T(6yd^6E|QnvR-DCIFHJSWKjQ+o^Vw8yK)RNSf^BdYB4ZlU8<-vh4sQbxKl55 zX)b^sF4aM7xGD5KP2o;(khTFNHCF3!)!Z=Z=${JV!%(BM(HdwBr(&ztQQO!5L=Lz{ z(RSBL;pa-8_PuyDEw3pzfI~1*tix#U>#AnEh%xCPfIl;7KvIY#k5&s$;`Ax*du z-(V&P0e=}F#YN^z%op*OcKY}SpmXxMus1}EG1L}%g|yDMMJ}AOCP_Itd*j^ilJEnb z9fF?q^AcpT>JMEetP;yYv8cu$9W0~sGBHkmh%*HyLRWY#6t&VlT;WWMP2jC|yFHeNvT=S=uPA zsz+IiJiAu9nxv)?mp^NBiR7wJ%EeEjnFZ4b!qhXXm>t#Mqtq7Ozb|Md$M*4$&6(un zqLy?I%+s;0qU!>AC2*Fu4*|$LQuq*Q>7)wzCdq3*KAV<}JuJr*e&4GUs`mpmsYusX z5x;(QL=NF8&h#?VaiRGzcwp4S`Y4us$wUn%pVq1wR;fl57bb_}v##;e<5%`gPtm{0 ziui^fs#)9^zuiG^XT$1zmS8$3pqg;qoKUKi`lQSW1)?VX?v&YRrQAKvS>QoNBx3kl|z8^BZPG&Ck{0KgO?vZd(!S2fnETmnJ!kQkfQdnS97uES2 zV#9*3yD`LILR$<49e<*x+?|Uk4Ynt^Zd-M>Zd&cdifQKz8(eN<_J56#Z3mie8FuU*{U9gTHC7GdUm(%86Tqi? zF?J{^a=XbJqh%;Ai;YfcifPCRB@;HHKqvX0Z1I3*dW7ALBl@ai)vF4qEty@u;tW5ql?&D?b~(~)q9hF&L=x2NLVcG{VQ++z7|on zV`O;y+8p+Tyx<`IiP&1gvAg6ep^C6B`%MV5GdOT27;iU9XW@=lNZq4) z7Zb|CShAN60lG;|z0gz zc0Gm=`ug4ZY2HkcSZ#ZgfH0UmChEci{~lXXoywIgzWu>p7R}y$pHJZ)bZ^KZ=~Co; zStrh;JjZ_|ZbTkpr(l#84XVj{x0)Ok&$(k8un!JA;jhdYR?pJY*b3{z6Q9Z(^M!U@X6OWFb0A34S5rLXTUVn6TppJGv$5HqQNO6d~#S6yJ!)!dKFu^TN z!u@+`ifQDIf9%gK^F;4+LbOWNJdi&wmatd*R25Y57ew3yAF zi=7AS1J#s@piH$usGd`THa-9dql?gx(wVk4^q>* z<+u|%6~GW@OYdE(X9()zEdjS{t|!%^mGu72qtmce;4_aiy!J!Skv-FCzntw!B zot6BbS4411fk(tOS8=!NyX!&#!DxZzbjx_z6H8E+>ak&r2o=K|F;xS#=!Pp z+>`Nt1sMJlLh*l{qn)G2e`;a329&$iT^$v7WBxVrai#k5k7xOHZqi|TY8=6y zT@cyFIi6%?O_ermOkjSLZ2%;9Ee+jro#j_w7_HUj=LBC@I!B-OPxAr}}eM~FqM*1QuYcLXYN8J4Fz zR-uQqRAD8b_&UAaa}{FGuvRK$B@@O;)(Q*>&I!vP91*n7--}^XlSU6vJ20UrRnsz5 zsLUNc!RafwC>2A%GV-dHa-r>7upzu9xZ|kM(JiT{Xhw;fp&sU;tK4w3fXb&^Jjux9 zLmA1a^i2B={~i7PPiqU|b^8zDF`ET6J+tlw8&a4E;|NDGY$65xF!9uackZ{c(e^{= z2XP5!zrM{P?EYK7KS|N_PmR@+t?_$!2jx3|O<-)+k}@JtI9OLx`^=U_Gh~*Nx!$p| za=~hjI*S;Opd-YQje8DU@}FF+p&YPA(?;&Yx+=Mz&zRh4K|_f>2c9k70i}E)GpFvt zXF+Mh5XvB$nk8&#)V6F={sYmtc#$hem3Z2}Esb!oy(;(A6N60fnjG4r&r+NV<`#E< z=I8ug>lT~B2OR#@%?navtEWDjL(X-TtLD71X7+BMB4D&#>|?XYKolK$Z4>+tr+*d3 zV7qzzDQdblYb2u`Bl2fTQrB@wakGpxs!l`%sSZtx=q6f zqa-o%#IoNdcdP+*m!#|Nk&{u89X?{o$zuJ#{U?1C99wFx&fx(p#CaIG@(u~@dh&^9 zfQ*;BVLSp9wNQe~@|b~*%()p`DLZ3h=LORJ$#G^7bGJFveWpK%L2Tu3?jfRcbn)d$ z6Qmi`i>&t(tl4d+e;O#!gQ-#^;|gmmDoZMLpaAKn!Y*^PL}%6xMx1%abJ_!2{Z*zq zh@1{ZMN>B80c7*M>Boy8=@aF`B_VUh6-CrYs%GO&;T0xZ0X$;c*uid=ig>7eY;H9# zhn{*^G3E*Npgd%nw1vN5+kd$^5Zaf?!_mdhlLsF2#`|8Q*A+Jb3K~r`>H9Vv)TA)0 znJ3?u3{)8DJw(oKD%j`_A842;jz*&-5+`ng{J#^{9`>B0$cF(3Ouu2ah2qnNcRK)xRb~>o$60`-d~xjYw03eJkh5*gRzDsk_?N7 zb6YORC11I&GoZchj!KaXsXIi&mVOKjou%$Ra72rZJ>tPSo01s&1$4M@+F_++pX_^7 zHKZu0YGVG74`I$Mw1pPQ!wM;%MrnITa>o^Lht2zvZniE7-W1j9R+aO!jaTh_Dxw&Z za+hDe#;1i=AAsRoPo5bs?Y^Zt!uhE-?{^RweDM{(UOHsv6SV8o0zqu>Px*vMj$ zVsm*%Z1#E9or4r^1*Aza&rIvb!BiDo)2Q5M%cSrT)`@Ag0Hd39h)^065D(w!EOj4~*ut&>_^H?6@qUm)ARLPnTaauvy7lzSRug z3rGcL&VCwl65lfu+7j8`7)M;X(WwFT__w>l@br9hCcF`wIHW< zWNVnRjiI&v0IjH`plPj66_~$|=)IzU$rK8~KxA<1(U94Y$>Ai~3r+AK5r7I2o@?{| zD(W##ghV2&S3hPy%-KzSU2q=S&6$o>opkMHPOu)#<6gu9MqxbIqRf07NE(d^PIW=A zi1D*|L8H8kjdQ zbq^a9oDdAb$zL>PYOxSBNrVc1P zzO|{=aJ{6D))2b%cw(g9aJsAuDYxtFl$ma@+{khfhJJ%^7wt65B${0p>dZ)NDXGb) z!o02P7J^~-l?k?tW#k9U9EASu1_Yx*O6#=<7%*pC5$UZbO4+D`zb~U$WMT44#OT0h z17TD%=92nkSpM(`K?WJ4-L)t~#X%x~t$`)$vgvLZ)lvHO6eaJw!sX1?A7r;D7>5-qVD?(2XM4`O?EO&%J-e7Rf zXiMG!w-1FL%|G?!vG!mBGpc?dn=kLoxP#5^3Eghd-A|}3Ku*_vtgR@s^hu|+sFU<_ z7|uwHJ62t0*xj*XyZ}7!FU6FCAG-(UozXsRcq9&75<28YJPzRelXcygVKjGKB+#)G z1$&(Qe;6=3a7R_zGPa+@zVHz?f2kAhOC#5C1+4tBhp>d8iUFVp+~m3{jHzAQ zQCeY&&Mn*`XS0Xk!LFamR$}}o?bx1?hONc(%pZJ0q-dtiSuy%QwRKl|N9MjUY(6?4 zxvZntIB8)VT%%nf#qOEFPrMqioBQ-<^>36=xLKos%9j%Fn^Pc1%^g;RDVLnow0diOD0e>8s;`nJBXN zde+#i{tFXHE1cR{Sxtr$7aMPz-Q;j$AVlIXF6C%#>X4|3I62)m3kdRg0H9DKO}0@% z%&9K?xG)x7A1>JlPi0S76Ec~4UN#D`#PYNWOl?k4Tha{ZsTqr70e)SSye9kD_6NHz zOqIgq$b2A3f#kT&%T&%c%%J|A6WS5pr2CI>Pp}8Lha>*CQPEY~Bw)d5iZojZc{q|% zRa~K!hD~MhRq|^}vgjOd%_4y_$_z;+;Z{n=LKCY{)>x5{>XbB5l)ScQ5=!Rw8^6a+ zWvOx@lKYXdy809Kk+YgWoda@m(Za?^GxbTtDs`Q3%VxctR*uHhx!r`RlfvNeaIpRC zxO?IL7NNfL4|<69;$m}KWOG}`F1s1tVjYpIIM^RfF=dHLuCy)pwAI%xzqEQ^>*!v_ zk=_rC|31Z?&?V8P{Nq>$|A7Dhx3J#-+vWeCz~B9Ur1t(7$WpaYLyNCAttS?! zhxBh(YG6aa_?D6aN)K`i18D70YB3%w-h0ML zx!`L-`kgk}X5^EPQ|v_<4Ma}SmvkTBNP34IVagr#LZAMO!%?+rA?arU<#IXJxQB^C zFN3$lq>c%onkyh+DvT8E0Cm#?3#@?JNj9&D#s}Sk@A+dxxScjrDq%yp!fj(?!ne=l zEZvz$5(jYfz^CC>xRofEo*c`ZHyl_{nDS&r1&n9Gnuu>{Jo{Tb09TFu1({XLG@8aMyW334>8q@kW z%A)fRjFQ`Gw8ijn5AMinK{eZBJOfZ^QSV|R-qG>*c4lfaX=ASRm&s;_Dni2CjSuQW z?C!Dy?(nkMIoa=q2A*H~`{u+2j*B%PsQdK^L~+SrOq6$`QkG(lDT&F{9tFwWI)A_* zdw{}xcN(SF$C|8$Xf@lVvZ_FkyV?%O?3zn)Tn}$Inp2h9nth>3wpcnGh*v1uDCtVc zTp1vG{cNBCy3|&HKke-++cq`?-s81m$F8S%!d%c6^)q*&SMqPwyYarm$DrvHnIk^v zBQ*bPEHCbuOy6GY99j)uw#DP{Y*^|B9G%vPdu#L18Sjan^8qiE7yhvRJmLSiI)WKI zOy%n(Qf@)s@nR1kP%x>jGQ~*zC>yhDK&uPF<7j7VJ_HuU9}?o(glCXqndIYhTE>(L zLaBkjl{6@A-b4no@dQ6)Q@s_?%2b^(8L|U2S7P6%D#vS-e)(#g60gYII=(sPs9CYS z8k%Zk<(5Yg#zntAtX!WOI+MGKwIz4Jj_|~uT}5=y*0=2>@l6q&?BLb?U2+YNE?b2m z<+B-p(XvEnzpHU;8Km^1!v(<-5BBqRe3d3F(9^koFB1p_Y76B5jeDbf?mt^)ERpLL zHTFCvD_{@~lWUJ99B~P}AbpD;_zBntV;hgf;RizPONKEGB*LTad!QO^GrA3m`tR=| z;jBMH`}7Vhd3|gPmZtAw4H+0gnhgp{aL3{VggPJtgUPhI_uo5jKl%1%QNBR-8IXNl zF|YU>6D(nsoARf-{ah>)p@k+s@5dj>-FtNo+vqBg^}?6&pyqY`-2tyMa`kUG6)4-&BOh+Eahr&(_dgo_fJ+=Y;^JhW854 z((JPMA{O{8mpugdkNE%ru3G{4kJ`{@wk)STSqkjifKUXymqt(mF8dxx46rO=$V~Ek zR)ba19)CXU@KX@m?~%R|e+Jxe+gmoQ2zlp0?HRHdb#1{d;=E??Kyli7F@1C{9uO#! zJ?YbNb!wy~pK&-2E=D#WGrLzPu5ChZMDRX}qG)=A~Jv=j7c~5)p^1CE7WUF9l88_Li7bQ!p%& z*b#pL`O|LLqyu1?vzh?AU{KA}QAX6B-=c%y3iZ;bpdzJSuGX8!E-FSzrtu0Iu)dXJA+G7k|(R#s9 zwpWlXt(=uvBuZOL!M))Mg27Y#U8TgMs10XaQJPi53tEKrj5{GxIICU6g=6mHr#Yw_03p-k`F09dYVHqVN#ep0N8*Wp-f_<;ToH<8RkxwZegF-%ofFNKlZ3Wr_vM> z2wKw24}-}I#aH!<6cbl`YDyVo&=XJXcw*dcSxYese@D($32_@W&nR2Qa$;EL zZVM2Ih58p>8lQmPd5f8h4zDmq+F;qzpv8_V-JJo)F6ZU#)T7Sg2p-m9hF}$B%fi{$}2s?!~huUYksiUQ( zrhJ^N2FW(SnWS!$NW4U@$1TM*9QiGeKLfV;9KTTK`7hd`0mPGe z!4lcT5G96YUf`thLse|3t@K$=mgv6ZX_ah&XC({*5DB9v@>g2uf)%Z)oYR!Zpw1fX zjzHoWxyL(-Y$ZE=t86EMY@|z|L0^TG|?cRjxeZ=`X_QN!qc+ z%x(ZEK{NvleY8be-|gJM$}}kKTtb-WXjw#%-jiHA8W;V)#(br%T+Jj4SsE z(gFdH(UPAkpr6SI;BPkNf}H6}0%`c!TH|h)Rg+!DmWv|Pc12YgjR^IjVpGddMK!VZ z)Z!uN#38!baze6M>zF6Nafc)==E$1Dk`50nEqbJ%e*iiAN|3ykDdpX$!ANl zdfY}%6nbWTsgJa^T?Z%bu5)$DdU8c%7`2!<^}?N zSMOzQr-LT;H`KX123PcqpU{!1WTrCNc4L@JL(UrL)5beD>ujjos26i|aMOrQ`gsu= zurz+OEAa&pHE-r`pQHr85ll19#u?FiBcPb7C?=;voZdYR@pZQFZpi*4I`YzK8Pt??A&4DVFf!rpb%t|L6_HVb9#T5O@06`oSDnsbZq zd17ahV(huB7>gsy_o#~hew$SM}?~gy$qb>$r zYBij}caiDvhp90|J{hgxGVUXu_r{`p~)@+zPO*jmdyfc+j& z$h$0)bZ0TKCWW<031msC4>EJ+XxXEAL3Q1C<&}!1cjOi7;XB-r?y%&{JqjBj@ z+^`))TKJRT8?8tRaUfcl_}z*q=dm;=>(ScC0X|9Tz&Dy0-rt*_#9JdfyEC1av~lQ= z%X$UrK;{LGOos))JMk3?SpqKY(HEStTr!ByS7S@rF3CS3RlF|Gxx*XTGFu#7nZB>X zC|3y%s>9K+S^vs@(}0{o>#9ZU4f0H*^oe>$DL%lyS**K4jqZnzh%Hs1g)dlu@RMup z-(0*2#lCG7jKQhY?VqcldRJ&h5kpqEjD1kO8dbjW1yt6nC2y!8jzQYLHwX*fzoFWd z`v{cKTz`}ozeajh9M-6ADY0xVAMS)VS9~g)39p7Ie*c`(;eqAA?fanT#4bBKtby@xbTwFgMKICYaQQ;;@}R`t>F)%~ zx84W&_W{W=%9#XN=7uyz>0@9b3y595eVz)-rTBzN^Y>DSVMu)T-2#kN?`5_^ zAuv(g7{0w??|(7&|Ai!ar8Ky6!C&UM<@$FUSZ_r33wpWECEv*2nvDM!%jXv!?ogt8 z>@8Ph>8%fM42PsoCetUp*$$bp++ODkoNn>RtO5|D>_K|zO)P8Bz&lv2{B@GHribEw z-EA+Na)`zd@m=IL1LUc6ui#pO?nNdqxYuY_9H&QUGO+0hCAc8CD7&MkpYQT0u{XF- z3+e!+NO}$C+FVV)RRMv+A~$Sr#`Wze>JqKNjlqC{^n-RyI-G&bb=D|3u;zp7k5{&w9)CI=b#OJ*1hTX&;iD^%&RKepp zVC%%-%v=qMJCo$_w^h3rx>MnMWv)6=WY>RuZ>qnlEp8v@2*jjb{X%m=I;x~=i-D}N2HtEbrFt(Bpw7vmK ztzQG7*T2+<6}V-MNq-6un)-$tcFDf|p}Zk=;S;fuyTj(3uKc1c?j5K3q(}>DWke7- z(xoW>#?rKhjycp2%UOQGLV97h%E(m;OKduUrQ;s1+-I%#PQm^RT_i$SdZ;HH^K(-NUO_*?sB8jc z*Tu)`b&@%r7qBdn1OmrDa)9H0eNJC-e+7)1>FuZ)!GrRYnw!i`=Hx+k)54|*2d*YW zw(OC#L&+N9nso!hTanU)mzC~)6|>LsZK7+O`)&w!bpm0bE*{q-B_mYVN4&dez8Cy@ z>dg{pKoXA*n5qX%gkLx5`E?QdV;CgrW6`9n;`x9i!z9Wjs9(zQ9bwq_|G+KU)o5(Iw2*T-To#X;AdF@q5O6eaqfyPaXG4c%vf` z%xTjX5lkY5-pI04n?!0AW$@*x>m7g#uegc@J}f$rNg2=wsUX`-v4D~YMPav6Ih0vW z*u8>ApIk@|JWPI}{0h)k#L2ye~3wo?a;mhu~wI5*!#EOz*v!5O)<%)Q+FN`$xjMf|&(lRw*2)z5KIkeA|cV zvVeUO{1pr1kR@R9*&IKLr~MeJL#hV3KvP?8HTghqiH92DTdJn;{JrDt>s{}EtV!Xc zYwaZdqrl(j|I3>d|D6Q?2M%HSPYhhGX61}BiuR?NqM?C~X$=V$jT9V4;BTnwfrzXd z`lCU{I*3Scazl3$M1w|^Chh?YdE*C_uY8`MKLm2t5PRs45kbj?1#+9W!qRU~+4sT| zQoqH-k5h{cC(Y-~?c}%^_m-#mshMoAn=P-CPA9XTkJ)CqAG`q!Tkg>Nu)GmA%+46Z zwnhDjz%uieC{qatLvz=CG7jAl8v3q`h}GMUv~{Ws9b5KJmOF@@r25ei0uy2!0d!#N z)>@QL!8(Kc4*IlQ@a<0wP2;AH_$YR)E8D|}uRI)q;e6*bzjPl%XY~;zj*{^8+;%27 z8+u%q{WL_*>j55Hckr`d7z!QEqk&l+_tlU^=9w|~*$^4qss4B7nTgZ5y8tk=-xi8w z#_z3^n`nCSP;4*MaD0fCX|wI&`5|P#8KmMak~KvZGs&h%PE^G>P;+angz#hlPluG7xGfpfF>!p&BYvI*oKk8$bQu;hf$&;{3Hh~OORT~8BK_t^1sn8 zd+=g@id4@V^7pD%f>j!}EVx8bU$TX`Fo_kr^!#cJ3$(CwPYEWP1rz=W)PSnIw|oBF z_oh{su1qm^i8f0SKvbM8kYTIPEnWhfhJ;aDq4pGvwkcRNhZQBI^?r#{wt8DJ+)u)X ztDnYTH?}15QXTTLPVnl`Bq-wM)@QZ+cS$Ow5uPPrVC%h($Pz5DM{M6-vPu;W=O>*g z95NaJpjiN@j9y{agdu&1kvfnp!6=S>%s^}h6+$X8whfy(BHyJ)9u;H0nUfMJ-`1=M zp4Ojykq^wwhf!shkTMjN6(LHna~$*08Fug{jofgreeVZ0seQ=)hG-1+TQj zP6yTm$AeBuk~VfOz|J-J_id-45@t{Z^Qwn3BcS_7)E|Dwl_KMJFDlooS1tyLsbBUx zsh{?H^O6)!2H9pMG7=?6Xmc5!D%7_`<0H%zDh(LX2*(R%pR-}B*g+F9unf`w1Ah?! z3w}x0Ed?RZF9me^j0a7gCfA+v&+DmJT*TU)MaJcy^WvSID|@-voh=MEcBynAN8TFC zUv#yEw@RTX;aem7>ItPs^CQ$8Wc*qMHz|bdCeF~?gZRYGtC59+XsPsUuk-^IKyv6c8>#wy}5|)iLPGvmX@u2C~S}wEV=^~@Spa|db z)Umo(E!!;ksq>jpX(!*k~ zMfm&oU_`lMp6mk9TjS74>fA!bBwK|aiQSf_8OT2@G?#v(=KCLO$(RNaS1hm!)c6vn zk6Nim2W|~>Avh7lF;=BSMuX`HhnUz;Va)1ZCoz<~B+#>iBY5Yg-wA>=Rft!wI=htn z2w z=5QDsWBi4lfl<@EvA3Kq@Bs1$yajXj5^&Ub^8<9FrWnApPQB2Yp;k+NC zd$B{+4FqDo4Q1fhXpGfQ?Z#DNp6mDHnc*70X8PcxPC9`+QWop4kJh_ZID~9*Fh*ItWZ{v&WH=vwiTxsV{8YlSvc!X+nCp*H+|rFOVtzP25ltx^^$_}X}}`??vT*W8Gxby!l#0FNi*Pa5OW0STlX>OSe};2mGeKR!0kJ%0b5A+L-cRVX_yh8i7~7 z#nX()K6D4QD(lRstQCQ2M<|F#w;n>;;f{THCnb~14|OeTDoRPM=GG?sL_WuwfY6n| z_V|R%$W#-mni_#fa)OJfj2?jzO$+kO&Z;E6g6yqmD-h*7u%a`QyQ|j{f+0P3T8Ml+ zcHONbx-EDeo9XMVmm7g7*CP}p&saaCPmLeVZ6y%dCydVx4(6VCTQv~(lzRwrQ$rxtov&7QN5O++N#&Lcw z!oWVb15EH`j8I1k(-^e|5K}jSmJqe@GLV}<%y+(Eu}nUGDfb*P1iRst7i@#qUms9@ zEu(t%bS2{RYD$TxMoWZmg-NKNY*OK0R^CB&DE41C`LNbT*r&lxU`G1#dN4LNrOnlp zMQ|)oQ-A2eS?NgDRcQ7{B?s(1QbaT#lM20 zyfiWn$i^*0ZE(B)MuBRe6S5+omP&pCyTY^(U|qa440OdKnPyEi*T{Ox{v?x~xk+5G z=4t=|;KZwBR_%1ooR_Zq)NISGTR&#Lw;N~tmhg>Q$~^v{z=#{F9O5rn-LP;wfVWWN z<-BUyB!o{l&owFZY2ggFW9rstslG*!8l||382t=txWsSY$4bI!rwyq*4QA7w)Ls|l zWm_|f=@v@5Y8tgmU(>UGvKpuIjKM9~oy6l#>U)z^I>3DX;;jFIN3svR&(?m&Rl6ZZ z?udBAxAaO?=ai|+C0f}nyq4W?ibZ!py4l`3!ms(uui%h!;j+-;)Kn7{=D>jf#IM;A z+VT^`;kG#8(%cXmazp9nYdR;NXrXB8GWe%yRt_KzCrQrJe8&7mizf@azXuY{hcX-42G5$-qej-+7}&W!yG-gek#j> z)*9vIFB((&;JR~8-eYt_kT(4rPF}2osfCsZc53UVqr7Dl7SFx`Jnlb&uv`i^5Wq`O z+A_itj6sx!CfDJjgl&jyn?d7MC8^aq1VVt3WwaAIrgK^Z+FG<-!j`+Z!;ruVD`^gS zuiV7?G9?IdHU+i%Dm3YrPMVd22%oOK;rH{u+aEqSHmJV-1wwiKGqQ{R|2+d_{;#I@ z-?}4;8tRuUBmgqV9JLnpP7`tuRkYf$JY0VnEP1F?C5%y+Fg=0=B_?%6x4L<`=50-& zPib|bCUC9B^|9Tr%<3`!FHa&^khs`}@pSuT<8v#6S+37a?)S$%kH5|feK;Lv#fa$; z>JTU=k|?F4;>!AwqrvpS?76}fqQ}Y0 z^?AcR0hGVN<3lx|Zq!&v%u)gYh;WXNksv%jD8j|tpc{m&la?x>YpBMcUS#-eAcKj4 zZz?*{XUApePFF=-8`Er~&CDPNRsN0|a&0L-I{Fk`6waH=Y@7B~RoRTJ6p2f)PNYU; zGHOxSv4wxIKSN#xbz{wwEzDR;Vg5=Wt7Y)y33C4AeiFCwY4yW`JpxQvkPP%-G#CZ>80#2MTFD&$dx9)JBBMzj0xqJU7pU8@qPY`= zLf)Q8g*Bphy^&T)L0;flg88U0$fxN{Y*!^H;xt*QtuX*Zop8N8*I#N>9ALgw* zk=0;41~(z3+Sbt_=W3B8Lc?|~Hy2XRyYb@`1hLX>S)y{;mYZ`Hyt(t-#dWEXVw`sea#=20biDx z2Yu(sJZQ1y=4~JOtt3<=5)y<{dvf8;H|YwVTloT_SJ6g7)XH$6U-kms38smj^$mSp z@q+!V{O`vAo|4KX4`@5NPkR0GR)tcYH7SmKckk2jk|Brr`_YQbJ{w&)2uwmWr@eS% zySGvdfBkAOn(|aEshT`cKfiJ*`JJJ%IMLw*PHAB=I(DfzG`F}t%s4~w5N>)%D>mAR z?xY4uD~ULkT?hkv1UF-0OO%PJN>^${)~Y&*qxLr&W~#I2An9>&n)`L&6~qBSdhXzd zg%qJl%tS;N9?PqIgYv`aSfNG(%^ed&D2{sO*hY&%$MEaNTWaY9&!i;Qeaiy}LCU6< z%)h*sx>^8qmwKt51BO1Ro`M!(9h&cpF&+?QoT9R9wXw~Ej|T6Z`rg7l%;uL_E0scj z57`G8u{IO9-iw-Y7SwBQo+Gr%ehU@l{t6YCudoXxXH3Q@zB0w8IHmO_R2|x~a&yA% z1?0Bqt!bd$iKP-guFl$i_ogNjG8OF&@m+E!pn6fA zi_43HIcT|5Reu_GMTQvBCUZn9vGK|1t$&pK!nS*LcZmA`VC|ivG=YLG&8)PoKUrzp zwr$(CRcWKrwr$(CZQH8M$-8d%y50RSv+m5ip67ESc0}y+g)WMl`VdwtVS#}YsAriz zo5!<0O8eP@*JD-a)yHbA&nr+@m?NqXzHC8G?Cvk^egRBvzyLwFIRXloAdNyRrZ7BN z=@~f-Zb>zJ6WktN5q{hk50Y_EC}M6mjC+bFSQB2s^;VP-#FMj=vH;BU{Wspr*wKoR z7O28!V@Zm43nHOSPYW3W%*W!09SF)1-EDdWU#b2QwdI~tZJH1y7@Xe#T}zCbEHTsWm z!^9z2-`h}WNb!`Abb$sNF01b$53)^JdenQ5RoKW@k4)&>27K|d%;p7V(wVPVq!7!G z5y9IkJV2wnv@47mA@F!gz9hr#k1}r=VlQ5M{`dTX@A|Rr_=Bnl|AFXA{C~+W>H>-; zPIfMiMkfE6WSag5QCD`}xtL%U)1pmjF`y_BJdVrVA4t*SmxX|)a%yp?t2v{R87avS zmpj-^_v>K=9rvgvFs+W%&ObTbZYR@t(zwR+`OxdMwU0|XKd&4gS6RQ0gAzTU%f1zf z%03Gex@H5G=~PTvLr^oO#%L@|DMJ7)vBB;UYlIpjBBsnfAuWXg08?(BDn|ge05F(j zu0WV4OeHF_YPp97vH*BjvY=ES`9r1uI#R?!z~eu;i)OVvj!td%vj@q&naP7c_bK;k zwT}t-E_><(RMYV~2-O_F5!a($87E~sj72wYd~HfA*eThp;zoQ8S$eIzcdoBfYx13h z4EuGB|2S() zR-)LUNrf_`qI#rDr7BYoTvY!TdD(+OuT6|~7D1uM2vYlsi2F59grwB3Fc>bB}HJR5sVMR#N#(rt#j>hKFv+f;WsAd1dd z1kiT$H9i#l^jGoUFZfZv(Dk!-%I>I~4}RG-cezvygcHdNMNEtyTGdaG)+wioP0G9I~CU`lEz-lH8bpwZDPiw(<`8GcRz&j!lgNk1)XTFQ3|< z!+$%f=Fw03^62kU`A7RjVxR2yU)*BWpjx@lsrT`fN{F;2-ryJ|V!ygXy}+4By=;e` zP7PiYW?Q@=g>x+qog$QaLDq)XV@t%uxjybXl(yyly9IrkO~odflzNORbAL$f(n@^& zb(iCwB7o~lR>R)g4C%*p=N9*%#3^bPhB72?myrtMceg}dpgcG1t`YIj_GyM$pmp8% z(+|(6XWs;`b5L)@dSm1-@BXp`Jq8BrDO5z!zRzY)GaH49dRm$+X5^Ifm zr^Txx)7~GH3`FK9Y)W_92X@{oiL3orUGDd;M)4aCULV1F%&aG7 zMO?vEDQQ!}kvOswHcIqD{A?lWTs7q!ZL&qE=#62XYy32AH+EPSTP?N1h$owq?I@?r za)j-mx56^rPZ4(xZowsTf!LN+c=gz0*p;GH3v}^sN}cZ>K_iEx!fCNfcmuQQWXvY9 z8Ri?}0)!p2j(36%Yyq$SxCcnc$3+Ie`9MUpXV9&p7#JwWy#m1clHwxIr zLCQXcRh!O`-4d3Dle`gh9I4tbwU@a{%Uk~itt?E<- zhT%8(8MtJt`;lR>6E=JV&sn20HRt&BV^cqr7bnBf(TJ$L`4?j@4t0sA?OhC~TC8soHE;>q11SAjj{2$YT2QBJ* zpdSvC=8tz==Kob<`=9wtz}Ue42d?`cxESL9IW|zbvP2O;jLLzZo+%XWjY_UOe^=KdLuIp2}?~!md!b+i(~mG_*k)m($FDm?YiY zy1oBB0(x~8Pv`@swyBfl2Nj`IsKr`w_9TNUVCT9=EpapGD;qxyYf{m#d>Iw z5pLk|<;3xwN8}|GvtXKL-wTv0zQpaB_(*1cuTDkdh6pOTkqEVAQMPelITx;>XGO)m z_4W`+pZ|kWzujUQq){|VPpegp-$;+ST*t){-Ht+CYhOVJq)8Z**;-J6@=0`s74;}> zo=5r!Y*m&KFR-d~V9!4}vkB7t2NEQ8i`YZ1$%R3Z9o-1siNTP1Q2nlErDPFOXozYr zO}^t(qeQL@Hq!5t5@P-G4#OC8xmYpFV3@OfV7ByoBo+})*XE6xdclVx0O*hsjqmp# z*L3u)GVUtOk+Ul(PL{tg;%#-Fpv$cuLD~mI_cu`EdD6=ZKs5>kULo|*LlT+5{bNdu zp0Y*;g6^?~-lCiA#N9%Nyt%gtRj8QT^2-~&n0~QY^o-@Vfo3ePjlL=O*D1oR64bla zVVt24eHHt_wBUsiZ}Q2cSi}d||GS1_VAo*GLy{f|;z1IAl8N#BbyQ!qH*Z*$J#)QGOOp-+5$pT*aMXBBe|w*N^ODv0 zI$nYSITcO>R@^BN2)?SL`Kb;;;rb~&k(IwD2J@rsBc&Xk?W?+Ui$M!7h`fmBxjR$L z56u>-Phsza4Qde=F-p6HUN8!#{7uiSl1ig3Uc5qgt;!+bWUbO6QpQnr%DFG4 z>EZ#3RUve<#>Eg$Cdsr7E@=g0+D)$6l$OkCH+_T}xttj1_3{ZKZ!6yCpA@ASXNnc( z)XOH}v{GG&8r2g+>6P*w(+fqiDM{(t`L5X|5?v57=hAR^l|y2e;sqGAclA^iENzQ{ zGWDW!R*HxjEE*Smsv0F@o-(ZF^$IC6c&YUo2@~A4#<)YoTFz_b6G!dZdm`EET_PAg zq*W0CMG-dT<`3c>pvqPql&+2;}SD6r8QbAJHZW+F!Z_U1NQivE?TsB}=Fh7L@qdS>7#s=S$eNQXmiZjk7U z9|O25b;6~Tcoh*^49PgBkfG{-JNfWpRIh9i2CI_o%~Y6rY7oTSm{SQFrXr@*gf&}T zuJpsH;X@DV+!vz|wKvbB65=a}$kiD!1)mIh0M^&mwT2A&We9`&s-xg4wZ+YIm$jhV z?^nmP4V2~~>*eYDbNr>zdR^hEOU7>~bNt?Nfq-y(W%+c5gx!E-z`pVnzAU0%VrC`E z;mz@!86(Mi`Y3ew(cZw9i#Py;{wTJ};A$V7Q=sOYr@2FU?$*j8}`*PGO{OvHXc0ALE+hz#Ed>Ui#GGM-SgdCq5M4)y!bJ6SIoc0ty{L6wVG2-h^r zdVMQ=^A8l8YZacv48r6cUIPiLG%U!qz?iFJg~EW~zy@t|>xrC>SL63nASjcj*kWdAPYkF9 z;%|B73zg>tqS6WAqLC3Im=%h!4)C;?O1y8%)_`>+D=7|Fu34z*@l-nmhjcPS(W#hY z9wZmen`0cNVUsA9kPPH6SF>2@0tzUz0_+RBojO+3)wEj2ixz$Lao}W4(~z#ixvxZ+ z^)&jxAm&bPqYo9D4Ugfs1d7W}`-$gm1YNrMm--!^OH30a^%dJI(z2g@-bv6(YVu~kO-$;${0OQC(TR!UYF}xcmbYm12LN9 z){#p@dKO+v1s0p?FLqn%zfm{Si@R#Ki+739+Y8b<)f-suE{=w9 zz$){MS+B-hVyK;?^?K<|lP(W^%ycN(Su~~+q8;60KDJRoLxpJz6I4urWaSu5kdtCn zCdh+NsO;WOidUYBRBOgaL$)P1#bA$rU6NE37*p_C7Z2Pfn{olyCSbdG2ovJ1&~3c? z8y?E^Q1p5tMyq?6-Y;B#wgkugng#GCeEfLcy>+Gd9$=nJf}{q|VAQ7He+{okjT9bK zaF<$hW1+-uW3d|XhNZ?*a-3uMK9nP|nnNEbNyr9pY}gcBL!gg>F+Ivm>+-M9jRQ=o zt2w<>bj=@+zk_%kE4FV-e7~<_D_L#2XMhTQ#|~myk@j#gNH0W8D_saY#ar*o(uC0!nbk^CHOd^ z0`Cr~VZz4m++?EI_huy>odlPIdK)e#S-vj7CCJy^9 z#dX}a>JOzI>R*7|Ju5@13E!|D{=q5idv;*{;OF&QWIRC6S{?kQBL>Ss{PH+O8)`ba zW7|Y(9lliuvDugmCI*F=NU@WNdw#S5-Y4l~Je=9PlKYy$+`wl4*)vv^a~BBpUY z4q~a~*QIEsz`5HpY4i7%>HAU^Bh^izuJMVsG}pXFF#*EZfHd3tm^55xj2`58g4yGd ztVq&5M_IYPFP~CY<03}xpGx@1S1q3}d**Q^@U(eaZM}}-y6U@qtR0HYr$%iLyEo(N zxg#V2lY{klPrZTqBiq#nTgS*kM#Jz z1qf5!;Ik00#31^vb~Ug;73r5`y}i08?S8I$Y*c-hzsf)2m0Kumhfx?#(B0OP@F{P+Y{{HAw@O^)ilGoBjsERm zk~<-ZU_}n2X$tVyQFWGcy5|rQ8FCu`@b#1bpz_g6|HtYg0k6Z^1;Oajtk@o&kd#aM zg7+_G^%BdlxtUV8r0nTwGc{SVm_1r~c~`u#K`*=-XA(w(Z*czR6?*LUGEpj+!$I21 zgMHm#_=0=@3HvK3{j+@ZP2dHx)Zsacu? zs{m&e7;3L@+keQaQjl0v@Xc4m-ODYn{;L! z&lhMF^d#F8ZV4H^LU-buHDrKG4#^oh4|#|-g4!I^y0(5=ifhn;w^}TC!w)-gAP0y>)2g| zBeC1iMT$XDCcfzN+1ftb?xL^0#DHfw(YS z?Eb9*>{E>FvslAT9A^vzHWg*;e&&foH4HZVfH^n(&Ts+d%l^XPhQ!{@LHL7pb>pse z@-O#VT#{7*B(Sk?cI*(nQN*;iJL>(kj8j$=iLQv;(Rhp3&=gPfIMsKbm3Y?Q4RqeeHyc!dNU zUs-#%gU4Xtb(I=Pq=2koV;RB1)D2-INqU?J2M<>0BkO>5K!ZvJW9en_n0pS>o; z*~VB&et1jX1ixrc*04RMo48xX5?UUDBCv^YW-ahQZ!4z)ORj|4kKqD2CCBACHK?*G zh(j!DdJD>JmFv>4AB)|Lz$+|E)V88wJoU3-qD|N)3Y0wyV z>=)O)58)_ikL}q~*2uMQ3jVl)gi~C(QeC-vnNdbx4_6M4m(3V8!!&FSY=zoq&A)Rf z>Gp5h{(NwKS!Va-J3%|$ek=FEfniNPs>my7t%X@w^nazg8ty+(Z~Qw2{KfqBSO^-s zpO3}DT2+~g-LyRfKZImyjF}w49eV_Jt2?(N?_6zFc2dEvf{$GP4|dF;d&N zT{(%jK3bH)np`H7h&OahtDU@=pRScy)}U)@HxR=0?TgoqtpzV+m$@E2k+de*ECta_ zTI3mJ2`<0=N+5Hj^0T67gyWTA_yFI5*H=*ED>3FWhaQHnpu#IU=F+9IkM6YDS7N|7 zFyxaI?wMvd^gB1aTV}~8wELr{)bU0U!dFJ+ADqg4PZ{0KoLtWguCLTMzWq?>tK27^ z-=WP5=oj(OtGMW{5g?Lpf;cno>@{+-kE|XzXI#}`jCG92R)@2YUoc-nnY(%Ts%Toq z?9wv^JV%ZhrEP(Ma`I;VsZocdklk}prgDwI4L>#1B zEXo#Y&iM=6uVOQDP_cMunJP-bu*LUJk5oGbexsax#a^f&#sdQ_pMRO_L36CUa7}}X zN4naW(g=`QgDUt%e94dK>n-LW9>~3hRu$HcJoLsX+VX9hN{2@ciUXn*6hr11p^Z$U z;EYH$(h%sto=_CY_sVk=!R}8N(2Ty;z&U84=7%6}nHXp9I12w!usK^m{w4dZM17>D zC)JV5&!{TrckQp^T6JZD`$}v8?N|w&xO>) zJ&Su(82(FY{6v1~-n!Vv#ap&w9M&3W-2PbE@gAjxtU?O4w^JZ(C z{Rwjb6{}<(kIL^4q1~)2T6;^N3&N&lK!9=|5fi;=IfHC7SyZSzk&1WYyy`K<#V3H(!uMX%Po-nUGz_w@#_&3`8<> zA?)hi*&Qka7Gm@qCk;w4L_`$rfz1^BqLH6YjxyO!4{%u0lVEd2xM#C%FRzAAVvGUz zEC5Q4#ObTAEch9MxzV+8-w<-#p84sG_Sy=vjz>zKqzj82HvSasu{b*8))0a-5ZJtd zuBng*R-I}gFI(j75w9c^57(zwK&&Pm+u!Rc03?q^P)~j|yD~Z{5<0nYbx8v`d5WhO zczytLK5+X#AJzc3vsYYA6$xR=*|vJ0?JwBhZx+9M41QEHV>-Z|HLe5l@S4~EvW3l; zj;2lex5pYIS0c*j_aXTHG`J(3|K!S#u`{B|HDk~#8 zv_ETS{tL)mm9(RTt%5qz<0iCP3#$3U!7MMN(L^SMNkrE|toWt59%Lv~cJ+D@zv*w2 zptHFJS<1xOz4p!j4UTWGoLa~9T!ru@$LZ^qFfYH)u8x1b7H zBE9qXx7D^50!}eZUA#+fVCb~U<(Zw?sM|-%u6VahUp{W~)_9C%0*jN@-P> zDK@j3aXcsTUo@I%eMRxRo|^yE zujpc=88?tPQl<0>lfX<5avi<&>if)cE#>2@cYWK6Qr2_8!eVl7I5=H&0xp;yI{xvI zD373#-~2)yeHLxOtntnW57W(SrMC-NZLh{WMOyZ`oY!br;` zZCYX|+Sx5)d;bR+h1T5KtGDucJAfD-i2uhByRAXELQHhjxjSFXM(%^N5*y4>y=H<* z@v<767d#$i-(mY>e1+uN7;?p^OS1|^jLBxW5hw_7m=Ty880oiB8x)Qo-e=Vk1Tz|@ zMT9rxRT{p3!?&&paDf=lI*4^sJG@kw+dO21ln0)_daF?A1s}a7OtybzrDx+9^E!1+ z$F!;Zq*7V2rhi(B7n}MRmuXA@JVzQ zkYACYia&}4%& z%4>19TZsB2P60jk8K1Tz?ji#U&>9*<+2I480P;{oookoOkof+K*=_R;I8DXJq+6bl z%g);%O?`1SQZ{mjF*~JwcOCcZ_1qQbqu9f?jVn-ip(e*k zlqV00Im1@(Nl-$I1c*7yAtlF=(LIcix{&>RFmNCpl#j=& z+e^Aj|JK+eorIrxts)igab>ciQP|U>RxFzwpi9EDSJUFkqM6uj_WYwmOUaDH_59;O zs_3y}Yfbm+qFp}q51^_S0wY0Wn%MaGiyx(5>@FN00Kp8}uWq`4YMjVdmovM_W-5T~ zx0^{we^D37RwULbgit-lVJ1ADk709&osSBPS}JqRIkc zy>RXPMFp<6EZ+q3KM_7bfJJ>Fusqg3Q>E10SWx|Av#6;BJc+R3hek_9a3Zg=cks%0 z3`M>k0Z)uHOAlj=HOsYik!ys*iQpZE_w`(F!2=Cr3+K2#;w&B!GaZ6KtJbiKR(>wm zuyDCMfQBfVuRz*~3_Oz;(b7)b8w>a()`>Hr2eBmlMyq(Y)GH&f23f|u#u5dkN=gzd zIoLr~(I!VAGm@x?xaV_H-m#;1#Iy9Ev5GlsxTUa6{o1I(Dh2lz8Q-NNSb@5Xv&D$cdMg&LUvxE*us3Fs()^FNc=#5X=u9n5 zjloT%zSn2mm;b>tzh5!Pdtk7hki%~HJ&mzw;l;CbgbWH4{l%S1HZ#w>D`n-J5>H-j zbysfGfaq6ztU$5M;nmB3J^2676zmJ;A`m|_T>Kwh!TaBT@c+3+N8Q5sKWAxK@f)@% z42U6qYy=%pd7(5gaI^EkMG|u0wCs(LP%6MG5$loy{#s;piX|B?M^B3G)UD)UFnE7L z1*3$ZpelujrlQQaAEs8BcDnuEpm&k*677+kNR;iTMqKdOHXXXdz&5E3kfeBR-&(Ks zVnR(2+yKyWDwUT^A=*vL#-lf6zInle;Q0zniKmTJ4ilQhjVUzA4DO1%G+T&r#jnJ&{mM2zwiy?G}c{a@; zN1Q_7CO`MwuDHK;N*JU&Ts?^QX?N_N$de87$YO%(08~r$1%A1^`NMXbSDTLcUKJ`=fB$~cHNZ_oLH@A3WN3Iq|@tL<5 zZXPWrIg4^2{f4Qg5Xe^*BT#+HIWzW(NjO|pg&!c9(#u%tKwDm;NZ}8~7h>Wv39axw zIDaKA$?4}XARPvH$MFpX$C87#DY@gHIsz{cgFu5FOVGx3g>m#x_g2jT@xL?_0%#HT z=w^2FKt71{{b0Ezcz#WQYUUlDLo(wC4p^HzfND@I{WiwmE|^$uO1 zoykk%njlaczqg}|w{DM}kL{113$Kscjejpd>ikW3)FV{|_SoH=&`qls2TMM9-XI@7 zzb{d&cJA|lKD_Ny7r4CbBP{ZAxxzX&Pn`+|qJ<1y)%%eUyiYL_-9C2vUk2}a3_WYG z#kN{!qHnzH`S9Xyb0HG!D==d`ZUt~K280aXL7))4b%x4(!(4)!mY@VFySxLZ+Yq}&DiBawCEZ|j59Ah(0chZ4f$+B=obmX<&b zM3rLeWh71|>7OV{pF#qyn9k0j3XsoLS@MPjDGh+_)~hdJhZD`&mxl(IF-WOkhY}dF z_@hDHYVs|(_QPcZW>%4+$fdW-$=op(I1|zl`)KfJBohH0=)pz?K2Uu~rP?!~aCfr0 zPprX4mQsxCd8F%!F=3ReLqd|qUGb2SZB3_(9RpZ-brh(v;7!KVrB(tuOYVok=G?=v z>e6s$cf$5!Zt7}W`&@xEcgXStZis8ov3AIfs^U1EXmU#FFFDw6>s31NvEpF1Wl_v72;@G|R#JQWQSOSFv?84~TzQda-DfleKOS3Gc5vY*rnEH6xXxz-8r8oKmRJX>m zvqH?@#Uz*n2&M6mg<>Y@4}?kqQ0YN)Rqe>@%axBRpkal-yPvF`PR86L=E=3YT+Tx$N>Y~?!R3)_HlXAJXT^t<_I#f z=aAl5P-xM4Cntt1CZch4p`EHzZrK7R6?RZ>)_e6MUNiOgaAP1=?6()DT$nzF656i> zG3eiMEAF?=?PdavX2#R81SL@#~(GK(* zH5XvoOGLYCtv-V)YSCEgILJz03HEEhqXT>o`w@2%9LO|w+$BdXnY$j?uxi`Za~#xQ2ARHrybOe#Nk2;QAr>%{Bi5c)}{f2MUnt< z#i+Vx4IDydkQn8;3=qKr$8zt%4wF|2*Eb7R8SP5d8`$x z1K`C9lqI@gY>jBQU=bqBWC9J@vH52UhiWa{pWaGXBB9~Z-WD*yLW2iQMd~xer}Lz1S5 zRh^|oq3*5{zU);RUoM-7U5V|QThE<$J|-O1R82)kc935yW84y#ZwGmyjc1r%J?LCb z%5=ZA_Mr1Ha`ZQXj=#$gJ^To!!+DHZs~*?emxB%TC^A^z3|j_B~bQJ)<`Q%lU< zd>ln~f3~qIEp(c%jtskdE-w9kNlwnvlrOG9eMIH+5Hq4en0UL%8%_@n{g~m)URBt_ z4!>{!@W{)0sT-X(1Asoh-wcrg;?AzYdBa(mT8CcZI06-mlUZhPon)TEo`2~7N|^of z^ZdqZ-vjXM3W+*a;wOK=F1vGpBxPVhRy?@R6o}qr)i%43?Q;otO^T0$R9LS^4F_-WSYxEb zD>MCF`%(7CczGgQW!N+U=D3E#h0@~er&IdV`g{VgbN*A<)-$u$=LlA97gQqOLZ?`R zVj;}$VQ!GhlJ{;ruzKnZL1`S7pp>Zq8^s`meaZAYkm$NmPOpaKNxg01fAOW7jZgyp zjla_Et-ZW6EVJ}gU140qkL@GuB1T$Byw>Kh)+nI@3&y$KN?@$-=s(Jx64lLwmx|M{ zLuo+(*c+}-#i_ikyM&#f7D7of99nQ9;FT02kL(S>uhLRY(M4qrl-v~4!g z{Y%lXh~Oq^dd80qPD6c@-g%#GH?a{uqaHF6p}^e}ePKFj;mKqjcRJacG*xEibi?{Mu|r zl*vkE0J;w7lN`x23I3Etp%s~T_(ZR7RXd!~8wc$b)O4RxD8@0NhDHo%3rBMk;$APc ziDon|tV0cEAs1H|LV+{4ctU+Mi|tSIZ^JUDhkM2Ne0>ut-AF z`{Ja_Rly_jCiyHSoZS-;()(X3ODv%Zs%ocn+_bV8jdzHoF9wnmSE>3_pTR!tDzHaB zsq2nxl&q?6Fc!%J4v;0dyKj%t4e#^?Ieh~Jpy!#sWHVH3uURix0aeGPX~XW#SRR8D z2Rzh^U9f!$&t)HbBOs{(5DI|@r2|6hlQT!|sct;|V`mDg=M2yOBY-0^SeKQ0O2VX} zxe09;j&%`EC&nDGR!AsaCENl85+-n|1^=FZz)i&WH%kF}f!L^%L~iHQ(mBOdj&Pj#z`r9UT`? zCm8pd2|C=?e_2ArnSH{}yrK`U%v^m;ml-ql-7^N@*=BOy{&((wk^I6V2PSZyYV4`I z#^Za2yFc6g4^5Ljp)#%tT5*t-lAMIK`%b~rE|PGN`VBm-7d_c|s~P1l7;dTPw_O1W z>XXdCUSv5t0do6F)?of+7%?sM;d6=hPuT2aOxC>7GwRuXA$uF*HC&>jw^a_msp4p$ z_OQHJsi?FgXEY`)D>12aD}f3bEcO)R$h3dbf+@~|=@+fHsofKUd-;vfRW!NtWli;Z zq~OWdc|oboF;I>h?7?8*!vw%5)h;gV&0*B=ER}_hWlYk;MgV_W`fpOYF^r<|5VwYV z1IyiQ;Whoa(ja^`on(d-w_avC*UQFsZBhXcGeCqHte^~sH$B2I9h`5f*ExO67Nght zd4)td*n}BI#+h?j0TJ7rm9~&W-h#IM6qeYW*I6@cq7*)5flym2(gBxdh^7&?WiFx- zr){NqTzA0i)iAQ+&O?`}U_3OR(6K9=F^1SKT6wh>|C z*(|M!WXf8^b$c@qn+9F#jRHp)d6!Maj6|~8gdi*DSS)@hKh8{Vmn)F{JMuMt$U0mF zO()-Qa-tnVA=Trl@Xm2YyQp0^F2o!bh7UkQ2vb&#|DA@BgDi ze?MAb{P7D2Nc^Xomi%v4(?6xo|E(R`#!86+)py>tORH<0GmFk;x@>7lHp&-S8FYmM z#~E!iHD_UCb^Dr?LZW>shr}A%_ZH%{U@$>lL0F(p+cEy(F!O}_B}OLbG@x{ySwSDtD;F+O}D1pi5ijLWls!_)5Ga{RNBN>n!e zYLEQETTU^ly#%(L7pA}G@?e@*D6gy|K5tVp$vQR^*Wy{2jL5jI2<7h;OoFE$G`jZ= z>>aBF!<4i-)!0_L|M5Bqme6(-+FCote_El=xvn&3?3f+Z! z_TG-2hkk%=%QV>{u?l0O6NM~0lsY09g(=0b{P}cDt*Kw?4&X*9AJKCKPaLVe-xy(^ zKmOB0I#7G}T?9C;EFgr9e&^%%W%lm4Sg4is6GH<1tycCr2h_Nbd5SQ;5aEz+J2P7r zuFXFl{e)6GyoGXzg&*f9CJ%2?pACMRFZc{>fEv-j4iS`4V*HpjGM{*hH1rzP>LBes zGTJ4!2cbnl-Xf&cf0jqpZnsP<1a&5QeU&HjJ6V*kSi{ZmNesNjBWUz0Zc=ug*$N8V<)m}V(< z&yD!vsz%~p>5q^}M)hf=8`neA)*1W$z=UCcBA|yrgmZCJ$Y&en{n0_eI8c@4l@XQY zJMH2IZl)$}SvR0$`VLb(nC!l8zPrDly1ozVT5h`Vd%YQSh8(>MU|}2rJ2%Pc*veLe zGXh&hVp@{-ST9xYWW1%iJ9q|7+>#D#FX8g(!h9&nUZ`5dhU_=BVld&!Uz-Cyl%t#< zw`+EPp%pmD^WrGp{lP1VPXF({{^9gs6N@jz+1e=?H*%CFVQ=S!;4;QG^ zb0^hHQx%kCC`wG6HkFR0guyW5M&}!RuoKc)FlWkNlb&3k%P(2TL@T9?BW`WYBcmu6R?^s?fDBs#wyeo! zm{ev(DLSWk4%mi_7EkwFj6gD~!CPBxT}Jy$DgiN*zpKh)boO_1KP)Xqq;W*T`S^_`7-tSh}Pm7=Nz@Oc>ykTu8UX`XU?h9Tu5$1`F7&uC=IE$ z+G1CpCg!4cb4wE^YKulwlq}I=otvl)-=u228Z*QDwJcb59){!ohyo}BtMV?kliFcg z9vQtF*}{V$MMKRXYI!v#;YZ|JJ1&PsyuLjuuL4ocVX60U%F`1An`Ar_;`wF@=&wQj zlOgkj_|>`N-aD}>-SwPEej<<_nG{7}Gx&f<@wt25rJ6Px8)2J^PgqKuMJV&(IP|sW zqIqBg7604Ho9+tZ)P$X7Dl?T@sij#5y;Pn5uH+Qu=~2HUbi+ zQBw}ZvV$HIECVQ}Zq@rXq9~XOzwP7{q-8DuJagSdG*vJ*_i?v?t~Ntg-Nxee`Z+wa zf_~*PX*3}mHg@-I=cM?&OjO;*a_0H8 zllpSR5Yffe{aLGVj zfdvo8;^c@mYf)$Gs;knom-gRgxno8#P8YbPs+5eSTOSTbSfQ3|T{1UavKt0(64r_F zQ>%vYBSn_hY4K1~iIPaU(?qXQua8ATk}O&u-qxjqxvWitle3C+{92GesztT32u>Ao zGrEvse%YQ7yO0o-?3_KN>_RPG3B_wgNYCC4@B+93DybdAq6R=7?z^`L`m1bD@3kf1 z+uR*D#gZL2BbCr2-$`+zl6nYR;8SfN!(FOx18du$UB7ySb_nlbG6cpR+~eQBh4)ABcS%T@*Pxt{c|;4%T~N8PeK_M~;wN|CtPs~q6!pjL4{X31 zEnLN|fCwnF0-+=rFTFZ9MyLnzaN51W%zK$ZWwfRUc{=3yt}ekiXmYojNk-bUXceh4 zAkE~a;cea?S=}O9Ow}ks-b+hi#Kgo4Q0SM z*rrz$4)@*>u6vS6o|EoUrfM%0;99Dt-`6q50gD_ncP84OOQ5r7PMMI`c88l@ikJip z=h&5iq$3kU6-H6QuV|-$#$s;BUOhhui8L>qggHjKQL%a)^yIsbfZg?247g^lybAdX zTVn%zF;-n$3GN?`H*s>zp(n(o364am|8aEF= z1FR~zi`QC;kCeE}BJKj$9Z_R6 z#fYV!Q`;2lIk;dDvbH-wO^~=CRF?kmvb=cY%Jbis5R%p(ARA;1IttbuHZQ6UES)Sy zdr^}cQf@39D_dG6=jf?n>^op^=<Er=~j$!YTgdVA$5 zZyt%`&mOMJ(+B-NUXb@{E6e~o7`(pm2(L0_}DqFES?;swoYr!1llS#i0A*{rw!xdm{_2>{-V8Oj*KA zIvAr|0C0gT8tpYfx5)xi04Ja4t1l?9ok3eb8noe22C8zB0!L{OsNi1J=4|*TNalk> zVN!FS7eo0qkf_`2F@qOFa`wZMf%Yz^a`5oY2q;uSo5>`kTpP+}1Jq_FgP9>|Z%{b)*i%0LqR&~4@W|5!xj8kA4Lr=F zKNA~U0)FBhUe-q5aEvU-kEuqJj9zrdB7QMR>upYHRn(WAlT;|qZ=xSv{OPnQ9GPP$ z&Rsk=d6(k>g{W_Z%&}31Cvghuu(bu&cw%S3Ijsfa8)`5(hZ9y03L~suQ?8HgoY%P( z#_!TdQ+a1J{vY%O1NiA{%bZ-yR23t8{pF<Goz*rqAn%v*%MZ4;vJ+#W!4Kux zysi$23)aEpY3@v&9D}*fz}+{Emq(9>ez%u)D$N_}aW?e9kLki|I467FYYj|oBd2HW zy^7rlhaSTui(_!jyAcq6 zi%kAtF!d3T!}Ktj1~{V}db>H=xZYs@?%mW9#s&!;4JQ2e#w@CKza|FLb}pX3+=1ds zrmCdG$_D$1geei%^v#Uah*GT65(?~E0%k}FbbUEtjtbf8@L7g_r+7*wQ>O zc%;dj8TlpMZ{{anrCkpeJ!-YxhU(-Z+J43G$(H|%w08=Rv|YD_JGSkPZM$RJwrzCS zv2EMx*sj>NZ9Ccd{ zys-HT`1`Y+bhVft#wFyjzZheec>J%|Hg(>Si%g(xjTg!uLTazE6QA9dmNo+8doEuC z)R&1Sj0kDkRJ&ret_>V64fqI>&xat+Rd^IqZgJBtV4FgthA5MYjA6H3vJvbUz_yGv zyTE*!j4H1U+OC=FrDlGaa>$mNqaK(e_uKz1{ncJN;E6<)yAb8!W<8)L9tUhRGNiYc zsYHh+KPqyPfho{7LnY+pYqP0A-ZDu=zHH*nQHKyELWhC^qpf;ri`L`PG`}Q~FbTz- zIh0ySOK^2gz$hV2I1?EpJ^GW>_{{$3>woBhBmN^h_urE9^LOUbe<(RC+L^hS{F5#E zFCSZ0;+i6g0AlbLVH}(ls&-^31gMBKqV_e-Hc$bDiUOrjZ;+Z$Dzp?EciDzU9QzIH zy&x^U*AIfx+bt4cBxp)%){x7S&!+YgW`1AqFQ9FF-DQqw7&baXiU27rSn{mtg1I!Yww0bJ)arPbX6c4ia0SqFhq!*R@{9|6ILMN4wE~hE)hX9DGHAJ>^RcasyJ*!3!ljl@)IvGDRm4Lu zKec|)s2URyEgHbz@0tUhvx$=ra@hng1g&wKwcz-=tB!JOj7E05FbGGZB^4R-yg~m* z9Mm2OD3CE@R0g`Oi35%s&HBV&(#j$YJiYM;8~Lu$23sdaDzK)`IkXBQM zJ4-f5v2ofcG>+8X5ajE9vBUQ3og5)RmDKBQ5Wgd$?*tl(`V8o?(Sbo+G?d0Gh$hO- z*uo`JhI@pejO%I%jCLFxPelA@Hkj$%Yplv`X8+I*7s{@oXV;69R#`a+{cIn84HD54 zjoZcGyM(KsFn?H*!m50u!nWbW*Byo*I=Bet>Uq~Wxnj$pJr_eQx=L9omUa}_K8-W9 zYC1D;#T2+jXY}Y|r>uTYaJ($K2e-KN>%FN#+?qZp%xp;b{9}|eb5YpU^E%K^ckke8 z4$Ws^p`Fk3r`~Hsmhgpu9f;@Zh|1m*;xiv^igbG%-@X{cE1nU^2=w4Ydl_Wn;+GS* zyi5&AtpB`r&PVN(>`P2&$1@)9FNjCjXou`vmXWM6WN8KVje(eEL>n)R8#4;1RnBoM zKkN(d?LU(=+I5aZMmt_VNYg0-#cw|3dW z6roaiU=MNd;|%EXwdH89D+Vt3+zE~P?N4uoat3Ugw>Jsa;Tcu3-JFk9x?4V49C_tg zQ)qf0g&9H?)|v`b|D31RlSe#YooszHkc9J8f&{N`SgmFIJTE|UBTJTYqN1d6pqsFbhDE*9Y#k9z|eNKpkGMQN5OCM`*3 zEVezwGH(Ko*_9y1$DlNJ-e7ORY11&w28Xa}T|aR=&93?94q(y6gHfR?W3`FfBas*D zAe)6ier(Xk6(3;r>LKiiK)?ffdO_WzJ%QOE8ze@O7{9F>w9&bZgbmxd^+LyBG-BAx zWIdCZr3}D21j3uoaQ~fnLdAx6!~eDhj(tZN{rb;{CnbyTU zUa_5%N91L9-CblvHCOMG)kxB&laZiV6=4*zoYzxw4aB1YOhWN} zxYP4o%RoAK?FF+58!8mGIt?)&jc0~^Tnv5FngDwdG4vvzQp~Uk1-Jq(IjJE=+?Y-j zhdv3s62mK&Nps9Od)0nUpoQkM=$_;&`PH?1O@a^=jZjAAi^+Z+Hx8F!Mj+MebhOWY?gA*oI z?vkX$T>h02zHmsL8V+`}g3wE9orkx7(KY_V@$fgKQil)~TewF4lc?%}c{8C*dq|7N z;uX=ZuIg34>WlQ^-8#Iu9fU`q@d!ChOlraP_>(@P*zrgHY8dQ=KdZ7(Acy$0P`s@# zPN`6e+_9k@c_-?J&TN&vNxVVqMRoKhM*_JvBN;V zurXqNo&G4ZRf4~JlmAC9#1VWZhrML(c#!ERV#|GY@qN-O6j~iWLwLk9nOwCfsO3{c z>;znjAh&%m5|UJ^0Vvm(u(}Xume@RWdH9UEa02QR##h)Kq)c4=9U&Yti;V|cO}=qF zD2rF`vHYYd?hri~%^|Q=s(6&78naUd_KIE>MrU1P+YK3@rw(qQ^|CY%bam4*bpCpP zpl(_`NN9eB-MBu7vkj+QtehNxpIgfoTL!%X(){<(emX@^AChmekrnZHXP`?q$gaUI z6|kTy08JxRr2M%Sh=V>H^tB|LTj!H`q#vI6%PPvpS2FE~Kk)Jt?Jitis5cb1)|fbM zsj)a~Nm;LJ@OGzyE$Bt|qq5(iTq6CblMy|Mg>5sl7SjETDZ>zb_{(4}|TC;VQ)= z3fT${#oyfpp!aM3Rem{u^p0%tO6P zP1HrTYqj3*MAS8zvxRum5o+i7v=xrnhymI`u}vCWTddiXPhC8SIFXrrw68v>+PIvm z*Z_C;Q^=^*{1}#(g^f6)36~jdtTa`G)O4b}4oM@WBvEm8+J#9TE{i4|p{&i4z;s!s zS>XzkQxcmrD37$@bkw|vrz{oBLs5x?wt&LQ=x^EWQ+e%7wrbd|eX)6>k*Y|{it4y3 zOG;>R?i_VUCEhSDT_M}UMpPJF)-6@H7bzoOsQ_(OCilg z{WWl9WG-;;+7!G0*R}AH+mLeG?7r#_NKlYQx}tcRnK{h;cx~CS0bbHWJWdL$7X=+p zPM``&(At^dU=+;*&57OcnxliMaCQ~IJp%xu$6&G%kN1(8XCY}3pNQ$XBynl!jGs?7 z2xom{*+X(5*=SQVFkR;vIh;BvUZGuHh1Op=7;9kX4cd|GM1)tY$aa|cgGJ9PA>Dv8 zQdO98j%D1sPMuMP4|#<9GFSz_NNZ6?6@-T$`4Z3!VzzM-4;l&GX(p=jw}K-zx%#<)u5)9fwxFho(xHHLxxC`{ipLEUKK}tAf;cWVMMA$Sx zRx0ukrCPTub{I`j2-#8FU`;c~*wvWi!rZtOFk!{&xFSu)>P!;n^{cO6+pHo+j4Ea9 zknHcszEJBtVt*AiX=?FmYJ6iLrwS#CM~yq>lNfA&G3sbNaX7C{Vr8-^P55(bVDk;U z+^7~T#A1w?JsQ44`E~Hb`tF8acUq0`(?%&8`>IxVoZ1b@*&65-*r#HrXX_{MQT2#H z7MwsI{S7s_Y}tJyw9~|A&q*_?8pc-54Gz@P4l}IKSIk{`Q`U2nPjE1PS3jIC!PZJ( z2bR+G1vLMA3F_}ChRr#xAs`&k;kO?Xsgk$_LYLY2TM|jlGAcP->M;YHT;b_?b98Hx z(!kN}pKV%^EMijgHTdrEPLZ_97!+Fu>x(Gsc=D>5M!HJR#j&-mrd;+^U5SSn6jLTl zY*bB4$fcs^m_dWZ+Z2vzuuY($Sb-X!#U~XM9)wZb%^Y$!m9}c!9pEHg0Sbgk2Uxmr zA}f5=t8)@Q_rq;ARe3st1@*C1Ob3(ET#(I~9Zx-_nfkHjbuVng(G~IS$hJUNx4e!c zocosj<$Px26e_@U3kGTQ9biBy<_jjUM#W50e6xwf%w;3VMTlQ&@5<$vm#*i<)2FU* zHJwZ~O#2Ej^88o~M~#RQ8gsYG$1EdHC(ktzIIK8Jiv@Q6-uEto3(~y4p>CM>VTijE zz`Xq=-8fIvys~yw*xzkkE6uQrZeV#gCM?>*d!#HP83lsM+JY^1Pa?vT+=vh-U2qf5 zTSCDg<^r%<4iIg%7~I1rgxD5tKo0cqAd~!;sn|MQ53ROBALc|v`WbI@xeie5-hT2O zaf2DJUy+N{u>c9&6HP#{`y5ezcCIfL&YsNg&p>;#xopw~=lGN2-os#lJQ;H<9~9qn zYipF`+7}SvJ;NpL{WrL_QY|98Oo-TAtITRAGq7#OVt09W$UC>!~ScGj2<7;FI z-Qwy)72E=RdNFTB{3FI-nEAo?XtFOt*`1nun^!mKZGzMReucj7-0iJYz!1j-QA>`E z;EKcnrQ|HsDkU-paGaO7cvr~J>w$$?sV_wmqseZASt!o0XygKL@k*$iqJ^bUbaWyg zEXe`HPf?pAMB01>rY*1&6lWMns93gOeu31w7>8fKoPR@n@bv}93RDld78sU1(+6Z0=h32MmPMPiogjta;P%;cXjcYtzI= z)bH=koV5%?v>)HJ9z)sRfVR5FYx9WEWp_nK01LF!;or9(M?JO{Ngp)*hH6*Swk~7= znnHPp0sY$Ly7mIHe`ZABQwy>?y8ck>zvAq|{$lOp7vre;c6#%^yCQtGU=X^EVr84c`>lS;5&QhMNNU96u!xa+F(en%ld= zFQ|-;ae_rS@>{tJV>*m}rd|9hX6|9&-?^}V7Q5#ZH0|eaFtz!;+zJ0@pz7Zj15pDb zXFEra|5^!(6zXLA84$hI1mS`Nkzl3AO?ruiNYI5#B*hE49rKAf3fUaBDZH>j2ztZ_ z&;8ORt$&_*wYfcA@~#l%*j@dYbog0I&49X$vP=#u^_a4VN!QU792+fH5|lM&YEWob zcto}il&XcI$ZeM8)wPuE)Sg&hNn8@xyYP2=NSy_kxbMPUvy7b7%0x2FqeLd{Q}nYa zbtQ<}J>QB9w}zdZ3R!P5A9rUr2AN+AvS9MjMK_3Sr%(}L)Pod{y$Z&o-|c)Ewet4( zsPw>`n%Pxz;q?KB?_9NNvqJ9Yec#G2-Tq$5ij+KXC1iOZNY#)B!loWSw1Zs*d9sl zHgH^2SrilpRArHfZpR|kEcAJk#cCm~%xcH0cwS6{MMiuB2`d!EOT5p?)kneW!}z6T zV=`Od_WO3$M%s6gbL-Q1=dJJ8(@n{b$6Zxii}68w{@Y!J&|gu+##5Ow1)&}{)4MHx zK@|5C=z~_2z{JtAiAL_&NuY6b00$^3!z)MBEwsI-{O2yroUmO8Loc>)g76zL;ICGS zYzzYa=v{J!cjXRU^q3rxn?IO(k-JBR?;@!5BG-*5!ouTy140R;4*+vBc93%3?8+Km>Er2`_O$hE69@K?*C>mfu3M z)MY4*gPe`K%jAxtx-({p;bdJ|Be9${Dx{Hz$BarJA|f?Vet*g^F@8r^!|tgVq}ikL!RWm*c?a@MoOT&zkTzAIjHx*6P$;#9+>4_4B-xvC zXa3VY{7j9H@~J`py86BfoWK~|{X)BT8|MIP_x=7ij*+hN%A(oUSPLM5RNHOT9JtwJ zlZ!Dvzeg(gmh%-lEJ*3G0@# zzf{o0cAv?snd_Rnw@y~=J&rz=CGSHOC{3CJ=FKJZ0T@YON!)kg9+J#QFRH9b@gwd< z`~_k!v9ho735b*t^jW8zZe{}QYnSAP+&f2xw0_o5<$bCyKRd}%tHUi9sYtJMJol@S zs&WK@AI?)eS6wS1H_;B>g9H5!(^cEdX-X&2wU~^;dvv0=L3HCX4QS>^&riglbVg2< z(1Ke4NrGIi-H_}0vvsz~h?R&YZr^UstbK@dEY`X0G= z0q~x0-phS@9~R=vVLyTMmF`l!f3a9u8JiuZ?sMUA=IHG$vAF%c+0E`nAcO87B639-viUm`#sSxd z04F$@znFgh2F(!vHc2=oWL(dtfU(q;(I;dPtyn zH+Ik+L1_7m0p4-Y6c_aq53qY-peeDqCa?;IT|!aGH;8V0Q=WIFyv7eV<*lLXF6U&%wB%T!I1@4qE$@we;%9*nA86Kr@{== zPlIenV(jVXP4l!CaVCf@2ZXymcP0qOC_8s166hpjroT!#2OxDhQ139)Z-or<$sIDm zu4a49=njv-^?7qFvF4CltP4z1^I(-nZ7RVjE`M74q!_mgNJ<*6Yc00^nTuwssSfuE z!Aeg`y_?GX(c4yCs!+pJJ?AieWC6NgoiuDU1!ECvbWT+ z}szs+@Nom>%&{YqlK37Ou%^@vufy?m2Qo>+7Kp7CBs zo*mWhkyE~}pFPx`dYii6&NlV3cq8kIDu=CsR8>0>DwZCX%lnfh3_!8ldA`5$z02A5D6=(?RrmUMLRTmmt@EWaF`iTs@Ks) z41{(}g<2ao{%Fq`I3>(`^!@K!1T;Vp1^kLxsdxGCTilNg2M5a|!~##uxTak*ww2360^g%K z6$7ng@Jc&dmQ;8At=}p&%(3NOLzw2nc;pXl)WiahWTx(gQ6c(7`^rP*RPUvGNFWo< zWGMJt8&z!PFd(Y3q|0QkCBgp|^ntghbWH(OV(TJH7kLnEjZ8}-l@AZ(l?XeRiL$y$^?YUK6m_;brug#*ad`hY=CC=(u61C-C=x3V^>`*~)Wdf|as4dXKJ1RU#&*v%wfBLP zj9KO0VBQin5nkx2z-QL#qG7Fy;C(dJOb2G5PLblc9YOsR`UU}~Td_{H&1nqL0aL`A zr?}4452|A{;G4*{*}jskXX?iHu)gf}3EuQ|Y*TJy?^}|*o1gzfTuIfQ&jk4vS0KK{ zmH*Jy`|mhF(Zs>!JBC5R*3|BQV*zCwxjA`MpUcIn0_w<=y!_{2Xf5_KzfcZgR8~SD zVF=7ny*35)p+&ORc907j{Ql3nf|d5)a%%^g4vRPa^6L|k6xPhYYYP-8)o$;_3nqaz67G|Uygj2uG9t2NhC~x<#^N%ISZyj! zW^odlXlpXCHO3^;O5ZzIf5aAY?_+>-i#Pb`uzuG<+A5t^QpK7@$Yz!L>Q$6EcOgQn zHtRu4U6Yi|y0-1MMbQG*Z{W_6(L7qN#Hg~QptC_J5&YL=)*#(;v(eh6M8Cyz(zA%p zw8ToZpDE{ro_e3ps9I~jwI#1z3cuE!Xa!a?5f>ePMxjI^~~_uNQFd)sQK$0DK@{* zQryRNB+I;dKv|Q*ou&pqa7}W2F3i2e4E)bu{D#?GV?W4qCK*<^rzQSI*isuK%wj3= z`BRqhf+pVM{~_q`;~0^Z1iMeb{RM-ZNE2rJSGzoD2UQj%8!*Now-*FlIH&&3M3wbU zTj(Xc{ULB$YleG+Jjx2ePq+tSi;Qaxn{ACPZS)kd_40$cj38EVi?BnKq9sFd^C!u9 zahE{qp2nO?ARqC0=MDM^-Df9EJ1YLYBvq{VBw@J6uB-pBhvcKksdL(~hwOai^w$;@ z;3hx1a2!YiD{~0UvJ%3(MZD>U$MvC*0{UlA3#7l2c*Gey|0!_{m5Ok=d70pZagNU`T^|MD>iLz3D`q+2*tK7y=f8A=Vm?>W2hX zE568FobfCFP$4C8d8WU`dMY{6^ZSK~ooU zii$p(f$qW1y+#lu=<>xx!MX4owzSkT4mOky&mOGc|70Ajrvj;hZxMU*9lgH#_;mXI zP~YVl)CkuI=iE`eiu7rFn8d=fyt-U*Fv0F)(6fe=FzFjr3ykopTfJkhpqp2%8a&Ui z>J!%LmvI)?mlL55)t%$JJsSd^dW%<}1^5?C+Iq(j#=Rbil4E?JSH{XXAGtz&o3M(s#Nc>;o zRHN#O6OIV}r)CLl%-#T-1OpHj2-sqL0`wc@Nf+4rJ9l8T`v zx2*1;bTD3V!)dLrPo_6p4_a3)Gv_i@QN68V9diMIfp?g8Ub1=BY$wb7wiNi4i7b9m zhdZ`KZEt?>NhxcSgD$?m5l*7f>$qQMY9q>4JdTyY9FXq1YOQ|CnJWEUpG;nRbXtla zm%K_Nr4dbz}h?vE5d7{#59jd(!UF)}L>NQc!iA-84a^R&h~r zGjl zvIc#=EPl;8@c>E621l3FB8AInn+=!29>$in7E243C;X59#qg|y&fn=C@0P6|TVuH7 zdI&h4z!11dqZt3rWix$#_`(?$hM0O_D}=V{s~5O>-NesIts8K~?>gUne~cSNY>}kR{9xw%XbJqcQA+6`R)`k>>Svs7=J2C*kzQ8`#fq zb}-RZVb1oxfh|(Z+jP#7+g9sWa$4VH;wg5#oRkjtq%gdRV_P@Z(gR3eVI_HqH{T~1&X zw@de3ZjYq?8sCz0hu~speGo)=@6lv9bFw71$OH+ke_8WxU0>s*t!sva@KEk@L-cc#&7Vy^S)$zV>LlI5; z^UsHU(J6e&zCZa8Lx%`0s7wr45BvBpBZzCu^I`?7vex&tHY32`!@hcxH!tK|t99rUsa`AmxZ@vm@(9BQ54@ z1>}o4fphR+V>^&A4{1qDZQ@h%#TIqECQJ_hd$a5#74B- zba3b)9zBd=A6ka@EuHdN&bpDjWmEGz9*~|^q}_#w#%jb z04J38J2v^EFY^ggPk`PId~Je9(u^J{P1NZVZ>Ve%e6s>2MEN)Ok zqs$F5sSH_|SHh$7t|RZ9yN;!EJ>RceYCi*-{h5fni{suF?ak9)Kz3HC)AochG<2gy zg$7J9uF@7QiDDtBT>)+fOtdL~gU1|w<$%Y{-Szq*u&d2msAALVL8NlqoyXn>SjvmF z7)SH2T9Op}ohQ;U7~GxL?uF*AFM2B8l5IdEq8TmPOb4@Z?zESh1c#i4WT@}o+Z&`b zSp5a9>Wh6qx0Sj#nvZO@TxqrRQ;7Z=x0pteM4l|5l$*$LSEFPjwX^{}1}8R27IF0Z zMS3{x*LCi79$T!ZedpsW1_dT`rFZ9|>(cD*1u(ru57H@l8apa{k75!%m zC3_)-^sS!yZ!`p^dIPQ9q!B!(zt&z2*+fr;g|N`Sf3 zFZI$pMJ~vrOpvYhU=a4!MGH)h!%Q=K;;P^{;hE|+4=7+Rj4eCAeixJdZdTXC;ne7& zd63|Sgv>b}9s2TjZNe1!D-&&NBdl;Ye+Z=*pl|)40`JdNqVMMP$`(Ydh22~AL#$x) zFg8>)`j?vFt}qks{+AQ|>~a|1u@E>VPk_!lwD<_RDtEj31&!&Y2V~P2P&LHMBi4b% zrS}H{;VVRP9QHfP%2nJMfwt%?klZW>$c>#Aa3>65rF$2ZV`PY)=;4g=Y~#27jX0vY%z{ff5c|TVKSp??nSs!-Y58tCuPG zguhMn!B&O#eU!dyiVxYP2db1deEs7iI*JN89+1i*xWE}o@1KUwNfKxV8UQYkNI{kP z4m8C#a3)xngJS00ObpM6FJ&r%LU4jg@zc}L_uzyl=3>&NT0q)Hr8P>P0sh@(;#vBL zcRZ}uM66F#o-)*Jt4A2FP`H(W)Mj1Z*@$~X&o#?%56u1;T`AUxT5D&hy zzs!gzEg&hq(1;n&{n~=NA*`OgvVI}L@!>Aj?cmHOyCfEH|5lw|XqcjYX};fW7mbsz zL3+c5d5ye1bjcSsH#2Ogw2r=PRDVjHAwX7N0asOR%oy-QF*Bkej#kDYUg%^SAA@RM z#kP&2taAGLANQY;_?0$6zrkDK_ly5O)%Csshlsn8iT%IKa9Q%bk^|pjX<6e!TU%Sc zo82Y!A%)^fMCDIZdY#8?z;skY7)#luod+_{GmuXrM^%0(J4&j@-L2_nZ1Yo!+7B~K zQuTfYfNdmi@UbAyMF}j#&`Op&Vh3{Zeyd#r<=o95!j6XKaD!Bf0^8L#`3Y@QG{%B) zNd;Qrg7()4*bhbSV3vfY!)n%b?#ra_$a@<&QlrHCrkxn63l#%3uk5MnyA{du-!)Yd zSi72>juSXHHVAwvJ#h}NbT8_~kbWDW`0|9m6 zgjh0@^h6k{;HbbPbZ2Ms%3gQ2l<2jU78}zS;Y)V55+)?hc;d+@8#Wu|uPDCr~)3Hf)^;)V>#ufUf=3>oB z42l`SP;*0_W|bR~U+KcSvN0A;O)wet31uAIkm{{OX|k(F(D;^Vg?$MnhoJ8VEgQyX zi$N)nquf<|N;dpyZ0!5s&1q>efF{)6`S3O=m}!Ntk6dFH{>G~IoBM&$#Np?Q_sgP& zZ=OcO0*i%$36e4_GMLH_kG}w`jWfh{6ZU<$iWQ*DTH4e_kedOw!UFNfo*s_#uy zhXiw~FV<(pHFiE7)6(2~It`0>sVW%w)WlLovv{ z3#imu)2bLGYNs`DayOUDgiFc#Jm=U{ahiGqbuABCj`4H~pk-7k^NH(kjstvJ`IN$qwR5iuAFJi3#CA;9I}ii9o^@o zN=6jur-V6W$oSf)uoBOuIy($Wtxp-VPz$g#Po~T zO`wLi=}DfG+_`SgI7icQlH_k7D-4$sz$_m(S*guB+=HXJ-(Kh>dNBbutq zxE0PblX_f3>&9n#0$#QX5nnOk$ynx-wioM}O%k3wIP5i*TZ6{s%m#?(pNe*PaP6D zq&NvHHy>86`-upTDa)gQ-SpC)L0ms;viGqZJI*-y8Rtf-sPM5ii z6OLZqFVu6NB4dq(kUuA0$#_D>;j!zH8iM~#>J)|kETl8|p|#ncne0Yf zasW4B;i2QCiJzaD{9TcDai=+Fj+TK|oyLL7SC*p?D;k2Fuymg8H;E$;-XB*-D&!eo7P z2Yc*Qofq0z+84nHcE*6GV?F?u8Ue#du)%?MRtJn@k56ZKC0f{Gm{oxc9tWPu-YDX* zIbSR^nUP;K?x8f0$ZcnNhBle8>P1S^HT8!_&Rj+)CYTV8o5h&LSOizmePl;TA?{~- zpA}DdS!Y!U!v)yUJ^}A`_CAwv-T)%3$$^T!HL#7QfK76$sJfve`@)@8 z_Xu%4dT9@Co=UL4BThNRK?kjRAfq&oh#A%c+)2W4Mz*>S-;JCp#5+8Igf+7s;{d|w zK9BP~6t{Qe&*dUc-0fR@DYTFb%NHIcR)L8m{TJMqUU*=|RGxLt|d`nbMFiI8TbR)j&ikZ7p*S*Qmq zdkxPdD|7ROf+eS{B9;%h5{owT7v(s&UVmRW(d=eCdDRNBjrz({YKtY@VL0jpo%~_^ z0+~MQRX;3i&o33Yc8s8R-0(dnZh-xh!RZ5%=!ID8S_~tlcP7#s)NNCYtOIq{al-xu zTP2_bv;XacCdYK%JD8&x<>Uv`IB5HIE05dV?YfLXxnt|ta|;gL;bcMe0i`s~)J9`N z77o|dT?@C8!;&Y0>BZo=Y6z7pjjHxwK}oxI-XlfwebeS($3QLL-KAi@<}U(>F6q*m zTGmkh_)w^dyHR$+>B-qM8UqLlUwQ$I+Z8FIMp?`iBQ(>ZxzhYSX17ZV z+e`UGMtdxLNH?RN+$Eh$1)5lGq4lcvD>-A?gQ@Of=j7>V`OdKs)(~1Tt{#3)nN+|k zl#M>F1{l>&iU!f#VKp+@%}W9z1xWZ$-)?{qST9p?D&O4nZ3KEH7bq*dM^!*6o&?r+ zdui_U%R3TP8C`4c6<3Y}DzG6Syh5?W0T!%gUzk<8NV!Q24&E&K4lB#Fq#)=4E0=ql zyHcI+v$?njgEKBK=3Hem@Of6!JQDD2=YpNEZ<8Q!9?RgxQ{K^~;6n*Q(WP3v3LmH{ zx`;0Ra`X8=6x0;wRZttra}4yvl|h&vU80FM0ht%j8@oYw(xmr&=1-;5kP(xwh-?^z zTp{?aKq`*Jq+5aD9_>@zriY|c&WZ*3UcR-7aD$3;(6P5Zk}p4syuSO9(&Qz@KUyw1 zH$3Tw^DlP_M2p^z2M5bG4=xiTkJm6~-ndIK&j_g$9YMhtA(MfBhTE`-fFGwrVC8696}%-SyfzC;U)Bq@C7!Z!70dT-Tfdpp ztSQ_N_cz`yKf11bwyu2E#xlNszkvEh+*lDD67vDyO&9NQ5v)H-^$m$BcBT_gM{jtL zbZv&<*cV`o&2P$J+ddLPG?xzXJ+!DOY!&agvKND#9>6!JSnJNWwf<<9;^kQ!{(*<>W{FoJj)=S3A8I40>Q>tM%`Mx#$)B%AM6j` zMS8d`MR;@g)o+B|MLitdjKx?W@ly+o_`#S7Kl<2|1Ro``rc-sRDr9v+oTWijt|`^i zXugzWY*(DdP!(#u_YXB#_NjXUA*K#a7}mo@Rg|b<0TJr{0-)dXUXm9{;c7B}$U2M! zOr>$h-HKubA0}-i)`H|^U(kvNK#0!VXUc=LI)}^{1#lNLH|hr`#k?&&i=;1yRoN^wVkaL##NafD0B5 zQF{37?u>bg9CppM(x$efxSe}lMGYo721epZRlurNR3MsP5;i`$UElPGs~JQ8JUBB_ z7^_-#x9m}0t04PBl0v~kXxgZT8`f_XV+2J}A@V4x({b3}6$-NOCsV5b%c|9z9E5!a!eW8 zGmQ^#T);Aw>Y(K0!jbd1X&{)&mFj=`_~wj`hZ=M7(2fW;CA%x$pON6-ZfLUa_J-Vb z8EjI`#WjwHkZ>Q2@N^NSzw(EXo^c|NCl%L5++ONru-=HGktaNCc9i9#QghPZ>X0@h z>-s6jUx#7{csUM-Kj(^-O^TWgb^yGq8>^P$&jka&sEZKdMPXKI_lHzRyJ;x zBGAtA?DpPG3{ZmxrBUQ-rqpr@Lttd`lsEdg4O+z9sL{&JRVv|?N@b?w(_oPGHJKa5 zR7R1*koS?%DptZrVd9oHjR8Qyd0tRZY369kkUeu#HW_2jZ-IAE36$bRkgitB@cB_- zR|sAyq`7~a61(R!4E{ntYsHhWgJ7Q6^S_~&8l$m@m3g={ALu6V2dpgV+>Qo*63*oo`T4K%T_jd+;~{^NvS0lw6^TsJT9I zW#C29a>gRPWyRnf7ng-TwK3~UA+Q164d95)D_#uOC{9#7L-8}PM=|{2m|qgM>zKdw zsJdWJ+a9d6U7_d=z)1zhXjq=8hROHFc7#=XNS7pA)9paCYk?50P0WV&fh2`%VQO0; z7eUR(rT$hpfOu9h38A+!QA;!i*zO zPiyr`!b3f=pgcAaU;~)P()=uJiuKnK)dpIAYv)DNLL+p$(3&YU(n_^udK zF{V!y7y9}&*~uD{a>m8n=(3iLx~0fHV{q!?pFv8pNwCVszNj`&Rx$kR$`Y#cgLEwS z+ajA}*K7zocw>&9n}u!7CFn?Sm^;cCS`xAYF6XuAzZQ*+DJdCNnRwpXSj+GWHyu(A z_3=5sTXY0Dyz~F$h&l4dT?pm#0kg=LR^b*f5k!qwd{ed#&3rpwMCuRf4ER-_l2CNl2YR)rE~N2$DQG05)P++w zJ~ZLpS6G?NqpMnozHKm5>AvK@I;h`#==RKZ!k0Nx6sh&+d0yyaz~M7^`$?qm8=1XQ zzkH8W-@BJ~{F$5omaO_2-h5Br@H5(P5d3#ij-6US=9RqI8aSeH>5g0nNFdhlXpc`5|S4ADc}wSi#`F-PvHPFuQuB&+_k zt=C%XeFPMbG47cVBdxq&4_`^+KuAd`MrhF$-#0e23eYU?FYZdY4x`uaP(6FA-C;j^ zW3dZ)1ilUWOHFqanPoW`q?s7_e;CT6x&x}KWnk$y&|1!1bVssl|J zBJGQn=B3t+M*a7KHrNA$yu?a$LiyLdmyKWcf4d zxhSiGD(|=(*;uoJJHdE()||?34ME0>BL`{mMbq%Tz4N}o|oyZ1RA&Z2l_+-y^y^}*Y${}ATM!ZBP7b#LWW@XpO5)R7c zPa4gL7gJWg_{rOd>fuu*dOl6^L(?9RBc}}FERz76gpx+pl?k?W0`Ek1 zxR$1A!{`?C1L>Oag-08AuNMWcE8LNWMa)i~inGHhN{4LD971!&TodtKjH9U>7ETUN zEe9P3#k;~;ibDFFuJzsLo`dObhVYYvzt&z#a*`0r5|ISN2t>3)$cBIf3|m7; zTRIot3-<;PK+~~687x2l=Yw^_QX+Kb5%^KqwUfL9FfuIIgh#LD`T4GEyNCDdYj$2A z;M$Nqgl$V!K%OwLz|4dp`>#Y~Zc${ksf2YS=1YP)R0s@4sdD-Nu&5a`N!AoW;Sf=rxb`D?J_R#1q?$C8dnH1T_5UROQ1s1fJY#6QA*+IFd*lUrD zC*uTZTW_&0d+TB(ahHxVI3xb8I=(k@+)m~uT}&E;t0(uBZ=dYO`pXF%y<+_vr^am? zoKqssFkERzy=aq6+sqv;$8XuXGBX1wG_0>!|=^ z{g^J$EnBds-w4QSvJ5pNswE+ zU5qyQ-y~BgwQ4UpMe#sMBSj^WgZ6^une7sPOy~Reuy(;mK>=1y<{dv-k3^^4d?7Fq zg~!8zlcTAhrJrX?!7W};F`ht9hb>{$zDVY{uYXyuXsF_5!bz$nNZHaP75tmc;T9F= zx;(Qh0y_4I?ZK6SkEIq!@wZm0&UlLl=2A-MX*V ztQ}|S@#Uh~ePvSUZff@2ql(ovi`J}~PeO{ET6^tbC1)*57@a~#hePeK8fQI`y_wc>009R5`Q? zoONE{YaMbvX7V2NHWI=Hba9>iUzd^KkPVU-2QM_6OsR z2BoaDgyY^pE;A^&ZYK-l(iXjI{aZAfgxA4D+i2$N2-vXEJ zEcisO!Eycz*2N$2^My}&Ldzj!g+Uepa^;~ALkymHgf>NhoilUJxZAD^|6u17lNRs> zU;E-?2ia<$@b?dy2ebo7q4)#_EWZ}+ve+D;CTu~o`G%ApLtHUE6HzTT7g5YY`+4(4 zrorMH4eQw2kZ^uU@4^bQQ8 z0Wcx!6>!X3Iwhh~x1X+c`wdo?91l7CNNSB&5jG`tMoAhrPYg+b8~(M@SuPe^9xj|L z7h5JR*=9awEZs3PpI+A%FN-2QhxKxv<~p05@H0D~OlkH$Kfj>^Ru=;Mb;Il56+qKN zcq)$JLwib&&;SVCWyC zy-_efq+skcm(MDOzKcC z{GUo=bt0EP*dEjUb*|lb!RTo)-RI&U_Min(-4HwTkYEY;*tf9=xr`>IQ943fLOep< zVCP_%-SqdEN9^TO`Tl~(T(V5%gK=!#Si$ldn-)$8emYQvG7{UP z=Ts}1lbIR1^Fw5WYhDyyBpd1BWZu}DH8MQwU7@Fo^ES^GRExspEQjlCc(KEa^TE?f zE5>HV86F#vWr@K8M9W>==Ihj+>zf>9HtBz}7vnitFtkH$7b*vb2Crq_VU2OT08rNWnD~ly$OiqQixIH_` zr~3NH6_16j6z(lsGp@pINYh9an#?uy>A%O^{AaE22bzPOD;gIL#%yUe&5bds8Kx7! zVak$riIQL$6D)XFQQBti7aGRm-d&iJrUxrEv=zmscui}?0o9f*BFGWf7S(yjp4RX< z_46*&S?yhI>oJYunDjf^E{Z8bb|K5IB$<0HJwvN*kUz6 z$NzA#oR(K`Dd?049-7>C@zl#74lDU%M%lTzT(xeF&Bz#MPxcE~E80x*1J#>jA=)B$ z77{8wT8Ah>s59Ir$2=-8aamQilc+o_^D-jvqelx{FZ?zkN3ohbSJ}jz)%1;N`q~@% zU3FR3lNgw-anw)SxSorhY~Lw_S33WaY95;zIn4NoLU<>w>u}{vXqd?ZPNy0(DzC>H z=UZtQz~I+~#{|o1_?T)R`!j`oIIg5`D*MggM2t=m1<|v)Fi_bhb5iG8*u zEOZK9oZ^7IXCx>IdEqOWJikmuFSeO7DQrWs>LNSAGpoVNn75NfZ`4wbNLiIrIN};u zv~zSfXQ?qcXAv&T;F?~zOO6HS1is^(ERjYc!2cj_<(^7iu+a7jA(zgHs~*l)hGG&g zPKa;n-XE>%>|fJEiU>`iI!ZV%@@b%Szs-komycV|IVAPknFaadO_dgrp?zqyb)oq7 zry(3_4`CW^kF1;DKP$vXKte^L4FQ=K5C>&}x>#O9M?z*S%rP5&v{Yr{phkR=TegaR zIjQD$0VhZZFjM*g$OBJ&okBQQ6_EJabY@}N;i%-J@XO4etj9&;Pllj+RP!5{F7Z_$ z0Bx~WuVdZbyLBAC9Ql+{{bcVy7bx)ZTr7y`oAa}XdeLCn8OzRAIwUQWgD6TD7Q3eq zujLLaKE*8y;qvy`O~|J-bfiQf;u%4wY+2L;Y+8Y+iiG+*-cy40ex#t(NXIlsT!;Ff z6P;9JPe^=h>bfa0dRDC_UR)^0%P^sk%4*IGX%ZN%8Pjp^Nq!hGanO0FpxP8SQbRdF z3F(38LRyuh7Z;cquA|n_>BX*URdsgWN)M~w4Z}Nuk`h@C_PHnUrgpjf>h)BP^_o~Xd zp`pW<$8gd0Z(V!>yJ9F`&d=fT@CE?ps9mfDxJvCZzVh}wLb!lhr!Y2K_FYSt9mVD} zeqxW++H@dw=QA9^Q0G!lCa%JKvRFSYW9tm4cSlihv)ljLlo@KIdXdKOVmi6awZmTFpQw4`W85LujN`w26s~*LLkp zXxqq?dOBUO3B01=SxhweBnulX8gkD~GweILoTTI4HN*Lsz!;!__byX8au5-VLU?I? zC|x~U%AnsF9TrRHedd}HMc)C>hso^r=qMX6Qg6W@Yn%7k%&~vVsnTNJ#hYsDd26NL z9Z}^@(uWP3n`If$uNxTp@xQ($ppY>yfOLd(gua8g3*9y^2-7t;gt&vegQkRDg%%HT zph1eI(!+pgs&+E0vDZ*J=8Kcuv#L0Vf*LX`T^0W3He%n>0L9Pr@PjSQ$6Rc{YpTb5 zs7Hl%#KrPBR%$jP-S8NOUGwK%3v|2e*DL*4hXao{k)*!FB?w{3_cG#C;%&$&^)lj3 zyNKx7;`sy33xOXDl2m|gVglfN9@!K=SNGm3%YswY185Blb<+& zX^B9tBgj3#hc=@(m8Y)1CSHgC#EhU!Y&+#aL3kQb=P4)%x9$MtRnGO^(sMXsYD}(p zN~bbOsGMQMQBPEP66F<7QA$N9piGzlc@7iVxdj62sY6QWmlKk_;SA{1nN2w(7$frm zEVwzNcud!bH(b*dX|M7bx@_4zGTh9*X5_2LlxXixJEnkyZ_`EyIzwBN;5%!t;8c{y zAZW^|V@seD*s_(Z1K&Dy;Og21kMM=uL&!wO1&Uncin7Jgh%aIbQFPrLsMH)N&85wl z{RD6LhTxLuBeO+A!0+Pz36w?5 z=ZWW%JB$=dZ*aj`qm;0nhlrx56|o!f2lH$I74hexy>*1&KgF;Bl`S*g_HQQEtf)-Q z9gM-UPc?tgKXL*~;|h}f?c%>J*{526Yjs#U<%y?b!mZpLNe@!bO7pAx z^_@^3SYvnl4l4Kl=}`IvQK#GA2fU)KveY@iI!D|**gH=@@%H}o&8CgQbKri5GcU(E zV(||gzEb86R=om$!p#2KG?;yR%Y8=~`gdd2Ti!uB9!X?}wr{?PYKdZ5YM}eQJotZoNZ&>qQ z)3Pm@X%{T~AuZ=Bb+q}SI>2mJlNJ%JnWZP6?iQeJ1d#hZL z#21rzyMR`buoGP;|SRv!g8SzNeTTL8~_? zIH*2u?V6MbI#7c)t!!rmIw)asVG44PDoRMI$%8VTqJog?Kv4>2#|7;UsJ+D(u6M!k z8(9?Q-eb5=rhHgzx!(64Cz~Er>m=NA%++e3)~D(9v5eJ+=_2F|DR!eQok4^-f0tcO z88jZE>QAVPt@yb7%*>$l$9a4SZAXE{%8|LV=S5#(5OzfXgucT~8XoP6Fn8 zWBlu}8T?oehBx5yg=sn$T$&fQ$Pa5s#v8Ema>2MRCAua%79Hqu!m#7lY2~Dz^t8*@ z@Xc2H26NLD&^Esf6}+^pX`_#Klk~&=_;*!hb2Ep&EB+DM`^vPF_XD+4o(bpzm%`Y3 z%s+7Vig9z`NRv-qAIKLW`$%b1CJ$dl?{@6IcUsKlFQ_WdqhH;g*^#1}`+n+}U#wCv z+b=5*k9ospc3w&}C{j+*<--2Ibr$q&FJm_U@)-yr0089vr*R48|GGB#|8GlcRBfHH zSrPnDHaS;y{_T;`9uMQ#YT$6 zq|Kd!`vLGr8oIi(Kr#|`uQ4auwR~Liby1(M?&^I3?J@uUdK&kJ|0C@Vz&3lW7s8G~ zvMbd5TbQv8g~3O)Z|q~V-x?xMOT#ErHzx3F=hkSMhw-1*&ISc+E*HRnO`0e0XnPFC z+gJ4(P`H~AupKDM2WxkqCKWFz;=SbEDrDZsq^}BNGV)w_SRIKu?p=&66BQEWBVk(@*t92#d)G! zRn*Tq_{lKI$9Cjh=r0k%6XjV~1lkY7H^BVvM9pEE^e(EXU3l!O=GV|OVVqcpI-Fdb zW2ARAre((p6?0<~S%nMey%?ugBt#JL5wt3*4(5=p7m80VDtORgTVtRpm|5hOZ8+gV z#N~{W#IWHi*`CI6Lo+_4EI0NJM}^>3`Kja&ABeQrQX7m6mq&EBjN7vVxDpD)4JhAw zW9SuV52TCyc7--afK@P8etr%0>Q8iv&=TCIS1SX)a@szAIWO*WH}g0SE-#8~+v5+bI0z0+ zb#B_Q1QwF7W*%8gnYE$ph~4sP>KUox}H75=j{@bi6Yg%9t+!PU~J zKErhW;FJO97HX!)=49(F|4VHTnbY>7B|9FodVD00wdZp+#N;#lxRE@=;#2D!a9@3q zhl>4k^$W(Kny-fR{O@hVc{BSk2s~+Nu=$hTUDAa~G&YRdJW96Ei*v76e>}7-y@ZFy z)+5W(sPGZY_YJ{-?|zvc$0p9SAIxgK3@(9d@$B zCV|GxAyOfhs>$X|DK-0fsu zP~KSY8S^~alqaXSi`pwOFUTyhcaOb@LwM8r@di~XVDiPRppz4^23C>BSdQ+kg-pBi z5R6WMX8P4F*|b7Nq?6$Yr6cMk`=iA3q3Q~tl6`?wh|xw)u<%ILTwV%;!jiMJ2Av~? zj8I}R?Z4pubFKIv7=*!G=@FXWi=?1mR?z?WDoI1|zazR!5(eae7!g9t#u_6FDcJK2 zIyml3rg9+$7O{}hFp%U;Emw$|i)q_uM+U%e3!)ce9N9_m!g*zw_07KjkUhM$d;s`! zpM}i9?k5V8quZ6IAY~+JF@_iUC7z>h#0Z(sLrN#~OHsd1aM|8|sd6zcg32vaa+=NI zp=M}&{0(&&Hozf;?mcclq8eSothj$QeZ>dozj3)GsoqJKVHhhM`is|b(2>5%@^Ksv z$~Ba7Oga>3Y${YM*t(Ru6eZl5RzuKE;{7d!AJsJ#M;;ZlViZ4O;%qExV()Plia;r~Z4$t{HJ7|`_F zK80k9c+{a$e8Ztrd?sHQGsrm-w*B@0;!*sEm4(Apk@N3YsJVWvEaCsDQ2*Z_;y=NU zC90cFi)tvkqi#gvtROIuv?akxLbll=b08EP?5nUW!*WX5Ckx5oqVpI5w4NlGTQ_IU zKZI97h8r1v0{oSWt|r52BQlP>x$~Sm8{Rdp&&OwVeSdzC`+a$o6aH>9ZVi2L^s3we zz@wU|MjI#&Bc&c2lg6r|a{8c(^TpO3yU7j^qnh7o^!|tqbOzd^@*ra9Hrq_q>va{|=-b$B@-1FlCjVuG$a0)9k!_ zmgQV*=$mY?yN)fZv$VTBE?66Gmh@@%8MLE%bt_bw0nDb0yOX@Eyk*x|AZ$uOf@rSV z^jYG#TQ;4yLVrrwS$3Cg<>76#gjcypOkz}E1AbY*=|iD*cQ`=ng7sWVgCynFutU|7 zGIc2laF7Mc=L5mdR4hKT@eJ^x01@f10TBdsTB2=}TH1Bh2IH$SX`(%7ts`cYlMP2* zsk$?GM`4`8)z=xdHh-1df$lP|J?n5^!l~fzfr!P1@5&Dv{gzZKThvRh&}nAbZ6jR7 zrF<&7dTTojNm=U5EN>vjCf>r;H};)_M4Ng``u`=6J~*F0;!KSPkvbqELqS2JG!Qz} z#A(k~Q>@7tK<_p*|8%{OoGOEsfVAHE0j*ShYr@Gk1)KTyrq zH(I2_S?42nzssZU#w}*o6Y!dn1wnUL;RITWV0;!9zlgxGPpor7b<0>gCk%8+Jb~}9 z&n}WUPiFMTz=Zz+tY|pnkZo(d{}}8by)-ck@Tf&i1A@{$Z;z^Amf0-Qp12qc6haJ| zbB}O;wpr3~(Y}BMkzQhl@xC`C^OGP$f-I9GiIdJG6Jr;3G~k*#I2EZl`5y}4l)wPZ z2%|XVFV8m%&t2jN)beEW9tCM9-(&}UYxnOd;D!qY=d#oZbI4kc(qh4qzD3kHkCK&H zX@oQOHj#N8yIGfroYGE&ge15LW2oqgZN#!xsc*=j8YK%lgpL8{2nHdjn589TG?*#( z_&JIlA#%R_-B?pHYUIvW+Zm@*vxs>hP*E4Q81T?xtsDZOD0}b-O>5?b9l|>Jfg}Lq zy4Ske_$(GO{f7hJt^OMz=FOKmw3{{*A?VNwXy#HVELXL)~ z1NJiRcP@!Fsi!Os_^6r?oCHKKDg~**qQa;nR?ua-1S90!TuV!g>0}~xO+RHaal8{K zPymV$=is?O5?jGvGVy@imdbCcf=jO0{>!5Lv#jRsgF9odD{+WaF#o zhg4g8LoxThNujif9!;UzKBJ04eQ@VYZ1bX`x-dYu7`(Sl6^8 zK$r1_FOnS}$1diWzMG_+_=$1$6Cq*8XNYeeDnrKiJ)2>pz~%kOSh*+^=Nibmn_GyM zb`h;L=LiV4#Vy5&n3ED(x?)7uofRlRS|l6YY#W_Qav}cwjdTm^8x0F&?Gk$?s?OSL zWbG9p!DF4NsVfpD%boQkULZa>*4o@zs~a++KzbVujhF!kxhhPS&l--IXcX`-nCjRC z)u{5pYSZ~cg5=oxMysOik71JG}#x7NV;NNbf<9h#!n;XYa#o&O9B*0vZ2*7V@%9G zi3|eMu|E|qXPGpYB|{pkeV&q;4v&kCrn`=nQ}8NE3Fd$ z6yi9~I8LwG*(b9p{ve4tDN`7g9FEH}WitIa&5M3c2{mmdn*wCElzh{R0+q)__3W~h zH3Oe&-q)btpYeL%j1g1?!^%a1IO;wOmCmUVn+^~xQ`%yDu+gM19s_W=Of#O;dy+am zNR8e(X7cJ)S-8ApWzs=PbIz0_McQVmFruttvBj#+a9F+rEYJO(0WRfL`R#mBT6c-- zprZTYc9oiElW5{n%hw-0tyeKn3mBYhz(GHM<;euiKeXg2GSnEw-1%l|jd4v)Z}vhCQ>vm z9b@`8>DOABNkxakEW*oINXwW}a0jT{cMX`RNVmktg6(!!g~9kD>#82Dr;F0=Ib>(` zG(QMXI!j)vAhsqM5uRtcQW%5fo>-x@IIt93UEU#Eolx1NR$aC95N>^=2SNLVa3-mj zy~~OZ?yOP?zt?LHX|o6*T+AYcKC->1+DT$$M2}DNrQ=JBhs97-#hB0-nxSn5%8q)w z5)GW42sQzHpyuhF#zvwMCxkPY$ztu0760h>LQeg-@MX`~hl1%Pe|)% z&Fp_NdpBe{_RD$mCfaMerIP}05v zsZGW~$8L-bU?b3tkjB=e#M1VhfTAp?S`y#tvK8>=uh0oIuAEvfIb*qM*_Dya9bkzY zOK9$yhb^`9mrYcK>nmBgWDO`1&qYY%?jIkel6A8>cU)D(J}Q>-&m!8-Al5-uvrKJ@ z0*dQ+mvJOgo=GGR(oxd1GSlfTxbeaN(KG-VW+k2*Y9Xeutm6(=265Zh>R<_yCP{|s z4$Q!9c_OCp25rLP6`X~TTXr-4j-r6~Ity?IX$oU3YB+4!y zAYz><7~v`CP!0|qZEb(49E4;(LLECG+Zt@swylLe_R)jKw-bO=pQs0Qc4S6ND8tj% ztZh@ecbl*)dc=+X$Y}?1e|X%D1>6$0<)&y!+IqRee)dzs+dC6PtzMoR!|&(PqCB{G zEyv@fNqBlRz+}6oJ_Tt3X`3Gug|Wl@YDdy9zQLBX_jiLa#oEHE#WJ==u`F*e z$1=0}EJnkkiZpk-dn1h0t;X?NSCS?@j=3{J?y_8-P2pv7dcfc;Qygr3y-#w@GD*)% zs|LmWt;md5$4jY994RzN7{W>+<}QfY$tOQ^b*fyR*gx-bP_vCafo?ROfp~xQz~MR< zToxR9J8a->Zk90cpwXuOAmmq$V^EGOMCt0NBZm-?FT|2Zbjc-ifI&ujW>B7GYMmtv z?U|b6gSmU}Mg7QVI(4MCKY-sSXo*&ELYdu*pIAzX?~9lcV|U&!dW1^Br+3XRyDyp_ z%(v2Izj|c)gU;AWjj@XHKn!Ram(-(lvZJzIWkM@sQYU3rw=lCxUcOS_kB2`*>h`XK zKY04?zXED)owTTOGoLGV?kh90HKYOauFK<&?ly5^RcDN4qNIXkS3Y~(uT0KdJUC6V zZp$j}1~F7UWV{Mr6#UQaM-@MRkvcs6%BImy zXbxak+W~!uamU41MD3Q3wr;WH7bxZ%lf1g_VqZVCdz5kOZ1qa&+AU0L-{7%phUF(} z+gEyNUvbASv9D`0a#Q~Hvh*cx^#iPZ$IBDVzt8xYF?@%P*8kD*SnIekD?NTUAG=i! zD4F5}Z~Ic7j6Pq*twP*+wyBmP^>#SdixYfpO!zmWHs&I&t)FoU(|*Qz&(t~cu#1@p zUoOlKB5g8nwM57-f>WC4S6QW67I$Q{%YXnw{RC4xP^Cvbn7*mMD9<{zk zM%ADT(jYuFEPTMiLwaJEmma6sfDkrJgnB2ahy0GSbl0?IyELy6&vx;;cKbzzkC%(N z4doi?QPC+>5S!M{&h74nGo5m*n0oJJHWG%8g4D5QihI}AA z|4hwX4{q$&Cw#x1=Kb0E>AA@P_S@fPJ`J~k+&wAa^IDOe^(^<#r7eW=(hH@ZyhX*- zi{BT;)Jxp2V)_iq`koi=?D(;^d+!XJ5E*0VVF}1h$+DkFvhO%Ig|F3kBY$rd`>CGq z8++t#JVeFprKaz$oPUWtV|`brNATSh{*mOLJL}_FlKrWf|EFj4j!)nJB~gSAJ(f3i ztIYnDNARl2$Sc9`zDUpV{s$iP9G3IO9IvuK-|CUNqnDD}etf6R^u|-uTfE3!bOJO6 z@@0w%#o}^qjZ!%cCPdGvzSI%Xtx^2Y$iP(h5UGQHxn1VaDMOB;bhbe~G{P?Th_viX zVI;|vBBek{#Z%Z!ndKP}PCmsj6K0V$moRJ^MZ?~LN7}e=Yc_SCE9TUKNBz*#E_e2b zVNkMkr1pEw!PkjID^F^rESlsOS36qRE>a}+hbpz4p94h>)3;&%oi^)Ej#^o9O9G}$ z$QLoFqR?9ZOrYG41T}W44w^J&X$>tl zRQYPJuF?xz?m8USKcunNVd)GL^O_k+TSl*2x8YmCM4JLJ)!TYL0}E-PMUc3p-NdT4 zvKI?F*+wqp{lz`(AaxH(VoG6n$*aVOnO?ZFNZ-T(qc2B>T`j{#OlW@KeY!$~gKKSL z(~?}IWCNvVdc6)ns# zQ$;n09{nEhQ^?D7Wr%e?!H^hHsk5U)s^s>S@By_HR5fj)!$nk3x)e#`5fprhpo0su z7uUSwJz5a*bI=dkW>b~9WQGz0=>`6&OiU<2ZgN|zPQt`ZCPGAdO>NS)dUHATLFLF1 z&$9}I4;`K~nkBSGJw|XGzeb)^Xx>DEQi~s}au*R#;gmycXe>Z^*IOA(Y7~J%N@A=h z2ir`g=Lb-W2rc5Vpq7AksE)4E_h4N;{gJ*VH+R~~&{pG^Ty^>aBuP#ZXfVRl3o-|0 zqiT@=_8g_um+LBxkZ7nLMiJ8pC5&Genj^=K_)NpEL3*gHmN473_5>^E9Wqthqr`P* z8ZgJ26GBg>l#c4Y*co^A-y;S6Qbz!`t6gE3AT^YAji%uCR`mms9!!tgun{GQ8O4rm zai|gSc%zVB;hj=W-6K_o9a6KlU~xTngmZ zPsKC;igPG6d6D9RKM?o7VMhpg_MfTM7rB{?p$Pz3%MiSF1^bvZbefH z7Ll@qRHOeML2?!>WkMYd4?1HNRH_ZFV1{t2AK2|KZ^MedJ&4%CGjo@MQrKjqc z#uw2X)#O7A&Gq}|csW~zd6r6bq#=?^If=ic`TnsYu_QZ_M$@LF7Cc3!pw%W}Yj+|B zI(nb9UcX-vdc==cFmWxTPC3b0PP>S;BQOe16svW{l^P5oBwGc#lEI8zdC7 zXkQ)*;t57>CA$3FFV34Ef(d)Zo&zWB;myVxq{)C1Ro*l9>y6B*)6GdgrC?ci?1++> zG};OkBY4Ae6B#|;F2AqgHxdC4Q$nkcQfZT?R?aex0Q{5G(?onTW28ZgDipg;fR7U^ z_|}?}2QS1I>iRY@mlkBKfR7l~Qah8al`wN7intiXc7S%>f>@~bhsc-m)v|7Kch=cXu_ z5r>-qHd&d1=uMn87E@x!?v6N6t-kuY7q@za;ec za0{l_;ZeY*&+yK2?eF!0Vz@8F8ag6yQ{f}lBN5g!N&_>F zPT54}F%KvmR<9_i6MLzGNd*#MaWKQb97FeUN~+;zm_;XNSD;co&&AwMW@TDt+6ft6 zR{6bU@^Xi0GA(6yvr5xa(Toc4#U!Z#U<~(plW6I2N$2wDlX(&?0M#l>GSGUYVyeo~ zHG!BVk;yYJEpgiB3@uCcmVhx+g5n&%sMN)qMW}aTt>5H4s&6jW96(KJP<(Y3%X~SL z7$R=rrYzK*9pLz%B)lTYS>XfR5_@w0UBptevaXZMC53FQJAFJ}q@ts}rn7U4ungAi zygcGv6XULp&2M7MLx7DPr-ZU#J)09iN3=7~SM4Kd_1$m4hmm z^-q(j$|2L_1w^(nh#Zc);R!X$rlopp#KhnVL4MwPDj*ekf?@TL2 zF(}`VlNBY_gc#b|y$6+ZXFhqoJn3Nthq5-i?2EoVXFl-|zEj9N>DpT40hop>g@k+s zKozP0EE8yMy2y0iCl4kx4bnGA;7GB!@qr! za|~x6z+lXSD@}pQ2g|e`z@i{xY4=elB$MP_j!yOb||XzN-}c-HXN<29G9aNnOo`J zSyVyg7mdI?n|$a*hLP@`N^V_E9rCQBYj^#!%_gj%)qLqlZb=1Ao&KFm<~#PQ9QT`M zI`EG3-+rN9^TGS#4>a`+FZK;wK*oC_$-QzYEm0OeA+M9*IF@nfmQc63RE{XQQ?Vtk)zWRFgjE~qx zIa+vF0xFW5-hT<7wkI`_vg(>7X&XKVmaX9ut1@q2pc}99U@L0TR1q(G_Pa@PUk~0fMXU@6j;nfY7w)J##VLpYni8^VRVkX&8g|syyy)I z_W+&0(=Gp|k}bL^K=gnm{J3cj{stcY_W|*PZ!)Y_R%7-b53Y7q^;)NJ%1_{f3jA^D z(b;p^qq&=WeA}&^BvohhG^ni}_6Ug8w z#x{ZUzv_}HO1+Zlxcs-cf;V}C+dQ)t2ETtSrD1bN>E_K@N23!oV~@ft)?D~I*X03Fu_z5~A(yxvGJ(Qerz61WXbsv0ht zQ1y0Uz3mZZEs{aETo`#}x79iZqyW5f(9W>J?_u=wH6U=z53l1d=%_x^E0D!htPD*EK z2R8JH8!|Fug!LumWN*VQuWlb=DmT*|qfbDJ$Janu6^N*_%`3diW?ALfW9H44t-CYt z{$(iD#z*Sth=^Vi(xWfJtRMp6Ssf{HgU<+@@dLrT0nYhU5%P4UE3$=9_NT8f?_k&S;HWnMDzZnsj_n@L`*@s%~4IZ`xk8-cm$XOsPd9R{Jpx zZ5j2)!(5$E`kyBK90q>!!~pT+WO{9*>~n5u zJfzS|Hh|Wsun)1yXtZ(>h!lS}Bw+uMMRU=K39St+b)fYjkzmzHLmdLd_7t!jI)_iB zi)`=gh+HTQ|0Cqhmg?-LY-!iEVU}j&0kvZQHiZPA8||I%n73zy0k!RqG#ERqGyW z-gC||F5N~*`JS_)SJpyVash=#VMC-9M|Nnc6=?b@x%8GMs!E3G;Po0NY*Apou^r?R zN5=4ESw`x=aF7i}Iwdt(&GvaSb>u*8`ec!e{?-5<{A;TwW~z-@L%D&*>u&n$4wl48 zs3%i?;qp{oGfuRv2t$ETjlm}y!w>v2IG_QcyE0wvEUhb$V~r!yC_THl7rcblhj-T| zwL?btfCm5VuX^ud+9evlRo7vYj8`5(Q#w^K$)rl>J_-5QgL3cY?1Ul%UYlT{^93S=!t~|^^4R%y8@g{?Xr?7b`tM#|Fnl8b}|us_=boibBIK1tHF(w)ZCobK~8qU7)pg>}8j$Yrtn^%MTX2LAdn$CQ*(8RhA< zvA6T~&(3?-p?>%M%l;{7REjrX0kUiLc76hJc06kB*ff=?d*aRMlFHreLKY0 z-#6ZXs|APL&~4fm%Ql1If1ySg4`HV7QE`G*2l33>cV+ak;}2Shxs`*b_aQLdZ%%|g zLABOz8KJe69wKWwOLZEbA{?Z#lPkOOkj;fR4qkH%ldKnQgY|N{UI?2w?0QD`)lKI)`G$B}ZaDQ( z_Ql4&PAR>7iA;3#n-3bamR1#WX(!QeB6>3c<#_^j>;G&^+xGtukp2xgK9KP6uEkYfS+C*xW=pOhT(4`X?`5lN}!Dl$~gQyQqsYj&~aTw~vr z4v#;LrJP1ZC9|^_YCi!x2HbT|{icbdtr?%hY&IXWR$iNO_SMr5R}3 zlNO&nN-n~wcdb7CkpGtyu!X0{OjqYs1yj#L-m;EI5^bFblpT{tgWT3I&CBs>v++*=O!x+VeKAwO0n*XxiSspqD&IRqF^q={5+bGFu;Jjo$fOYpOP5N87L!Cc&PKnG0DSX+Q!b}?H+!4l~>nyV3MdNtfL>0 zYUZ?6X7ho&deSLqD#1?uGbHh=GML$s40mutzP}ON?S5F;bFra>igS57&`4Z`{+#xr zS8H?k6sIJQ@jRo6k26Frx30|tgR^!5hvqiz?3iqR%Cj&h1#4Cv9^RH`-VhLy1<4S8 ztQ}LobPKISM`-FcbHyr}3{k8xBAB1874y$&ZC8C*g4pX#lD5-1_(tego7a7nT2)pH zywNAuQ&Dno+Q8xXnachtmm)aC`3~|9`fHmq(fFpbK-|AETBYAg?s$8f_86mH8X<-) zBPJ6!v$f(a`01v%?!DXDYMnRBh|NNGCAvAZ=(8=NcRnUOm(`0?rXNu({R!xvACwh! zWpN-9BS5pL6KAID#|LtZ^JheI3hgL0d2H}d+{H2GXC3nW>d0U z<|hN8NV4phPi2CF7$l$tmA27H^mFksbf zBFYF&el%n&JE>TLa|N_N)ABGNHWFoayo+xQype1f8r6C|7Vm5I!Qi-eTKjW7(mttORt)J^{NSE}o-Zp31EB*faiWnHLi$ z`%NWT!QV9TAAi&E%1d!$MI&Y5a~2O#^+U+m+L~@82TQsGKe3ufMPi35kTyUIicuSR z3INd_0L8=dE$it5f!mMj}{i zOG*BZI?}lg*3;z?kj=SG%`&no;wv08J(B>3lw=}6np*% z-1tQAlsQ5#+1t{HS~hTl(joHbVLQfuXL4&x42F{}P6y|%n*EWr!;9PepAHh}{`>$Q zok^l6xU3JQ;~;F=lCH9Mv{E`SPTkp3mWp&Z?6em{&d7mCSx!mg9mtIa!x*r4R)M|OPNb!OSS%Dc9+bjAw?IP5 z8*-`tc=r35>mp%6WO?27{J!-DhfjEN_q%h!y`Y!J4~JovZBl+(q+%o=I-m{RE_@b1 zCmnRSCE3Pd!J)R+Nc_fek;bGSW_aM}{9$aF-sLv)Bz9wk99iPeR(2l&7c zBh7WTfOLD60ryp0!8pIkFyR3i)<^xF0c6%vO>FS1#wTJ(?Nq`w?=adeV_zWJ-f2WK zUhPe;p=q2p!>?{1J8m#6kYQR!BqGuI1wb48R}0m`W|kyh)EYL(nPSka!~@9pD|Jl@FLH)AQj{fB$x3)l@g1f5Z=g>4~jT z1in5j=eRFI<77f}Dk39ruN1^@$d*cMtwg5yZ!_~lx}@&w5qey8|x!BWta^pwYINogTOe!avv`2Ej%KWAAsSkFgTP7jrGLUKRGEbR`EwvpH zRibaRSyfdD9IfA#=?4pcd_TEC4El-hHD2x|_-49C{$js>7k`8P?*jEdtK((a=S_Wt zARtY$|NWNXzXDam-pS^F3t7Jqw=7CwOMdx1MLzEJjl$7M=GL;ahbS%Pmr# z>(eA20n*(PVA&E&AOpcd$iN1WQBf3y>l=PxSOrRa-aCuV6O;W2iXbV=3xa1PA^Ge% zoyp|1r%Gg3`Fd;4b>H!R?e@NX&$-TVK0O{smiJBkeNw65d8W2wcNgRL1b2(kATwr1 zN{sF#@4qv6I-#amgLhOhzek0f*|oZ79<0M>2?x7QZQ2`G7pG1N6d@DY2+5+RprxRq zU@Q_H10~HCL4xC^IPxLIhIwy`gAdWAI5G}K{`33o_m-~R9j1VB&%*RS_X&-`@xH>t zvPccfn>M$-)g3nCS3ydhD`s%eDVcWG3}VUNmfKV zU#HCpCj3tw&hHsfjYl`m?;X+A34+?=#4k<^W`oyxMS+7tqoBVEP`#ub9*cW|lb!yK zj|TiMboQyBUsM|Q&!@eQf=3tjPR|O#-^cq_pDnSWkEopAo1*TNJAN`_opye+qVA7w zsN;X2zDM_veb|Fy_w?iQ*AyqJb&0$bdHBm7wrF=nso!)$X_=EYCCORJE>81R7LHg{ z{Ue=MFIj_DB@35?h%w=C8ETR4=iHxcCoIbH?Eq7vyQwvUhyb!(<=HR+yh5k}g{2>) zAz*I|t$5e@7QZ4pmvD%q)eaE=JJnPkXQvafoJ(TF(TOADp&18-_i-salalC1x)9YB z#;tH|YOpH$7Bf~j>wLV+V40q6_?OH_4nD+Pna9|<|GaI|T~1rt zlriAMj;-BjmO08yK?n-)dwFuLt?24w$A)fX+_!G^dRitOKkR&qu)YgM*iz}yeXFmDG@`{ z?ZAnvif71{2m|st8e0mR`=eH%@drwNi*W7WMTH*iSWiW^{xX)0bQac+Jw5MmA%qd} zk!UKE%Q529h_6$|xwN!I98TP$XDp^$4CwHvLlte(i9!I{#`VxuURH3ZLvChph-lzI z-~IaeBg)E3UUtPymd^IVNZRY)_v;Hq{pQ39;F(v&MbdyA+=uG>z3ldDFgz?|n^>KS z7s)v$`GR$9z01o)O=5DSTCK%H{SvFG7A}1Et@SJ>xhghOdbR)l6sma z8d^hKdvnly%U0X7Zr&E#U3_#OiPO2|&tXcn=Ht?@myGBzyup^lo5=VL2hfU zP0 zh5S*7&f;!_<_D50<WnKCcjd($-b`9=-)&{c9p&^ zR108ksGxkf8dEe1G#Iz*BukIQ6uR@Xvviknwwt4d$}l1CXqrT>FQIZUX#5798qgh5 zJw1z63gaG?Nv|xWQEso_fOEbv^p;|DR)v8oi!xeA#aYlxDJqc)x@~W_URgNn8v^+a zz~Nc&fTBvcvPN7}prhzl6*%yQrVm{$;K#GNsrz*m;TD=k>y&Qg+|UXPSA3778so&X zKKngsY#6;wVUn9Yxki^zm?js43ukQZ)2TVuR*<8D$Z`~9emPvf0p=|$&4*KmRdwdh zKOK{~@6kXxX`Q1{#Bb)|{4%P^;J(pM08R-Jx9TM|l9d<lYIel7oW@+ zA1QnYJu0i7RCrvo2uHwNm=i#8jEi*e*A%KU;}CgKE{f=H4Jm(8J5umpb%t53Xz@&V zfXvTm#Ie+c#l!+*!J5wnnEm%dhW@tRh1gTSBUZP8wwDLNK>zdR{ zPk0gY6uzpmwt?H*oZ^qm727rC#(`bKkHdMSMMZeCJh&17F{Q#LRzxesAVX3GR{OGX zt#(0**D|YqbO=AZW!-ApRLduWB|@g$+{=2`@MNL~>*BwUAhSFXb)UC#EzO+wXhS0( zuOh+9@AXxIx~{w50Rc^Ch8@u8tj;Wp&Pw8P>aPa%y^gkoKp`y1I-xA6Jf*yy6Y$HY zv7wdp1I7-rAv`DS9Ms$qD{Z~qP9C0$?QjC@N?O3#a+7`h3cRa7e$ z{B816o0T=9MRwqJPxY`ox#@Z(3>vRl$m zVvz01AeKhk5af-S9icNz& z&)vH|HbFPDAMkN9)trNDrUA8Tm2B?DB+WCY-(^(h+M>?Z@dCUq6XxjVY}>v1EnZ#u zGDB6X%|z;NmEySQ099Dh>n7@p#^ghZ^Oy;}={n5O?fo`8P^`1;wG7o9ZTO!ly<2Z)~M^;=wfdYbCUxr}OIC5o$~n4#ainj+{zw?2A* z#d0yRP%br$xsQlutBN&HOKllgUZJg}5yqShiLr%1%7R(YfNWBRC7KVFgToOF{S-0Z z_N*Q>V9jNk3m@q9aR#Vk58)6@J0-Sb@Vz@%~3Fbrl=(l}VEc2rG?%`(%2)&s#^ z+ego-nMGCdM*nzAcHw7vV?8I)=Sz!<_=|?3WhHp%MUv}NUOp1;g-;2jMF%*g4V`Vi z6epD`o_)9kkI7dK)>JVuP!vvo0oW*WG@r=D8ah^x4d3cyf#VKwxF0w@T>R%Ys z2&4JcO?s5B^w<>>H#3eT%wGNVVp&8O<5&iU`&2CJ*`Q`pHtDd86FdD>L5{XeJM$^Y zP|{!ii<;DVsl;~&SK%_}$Bfs+3#fp%bg>o)JnRvl?Fx!?YMB!NQMqOOX~zkS~9Ac`BW|W9};rwbgg67aVuVwy^>29P!{1krnEl=9WDbq&W;%snvCNMeh!f5l!j%F( zB6(E!0FvZ{*TY}k@yx6g4!aI81TwzYiZ*zE`d=IzGY(Q%Bi;$1K)#+pr9awG;{)oV zcy(ldGfhX>j%U)?G`quzY_O|5CZEs>G<{c>!03mzyDn+ zrTwBL3vIT*sceAi37ktWtU3d~ow=1m%DFifw{d>weq|3{-(4SDQk!O`VoT5X8IoBK zj7KZ}EoWLjOB1OFriFJe#rg}0Zh|%sx4pKj&e1HdK28KO~oPEC*Tyi9vX1(Ei+eLJ*aoQ81h4E-Pt~$^2-r zy2ru!3&N+BnJ<~A9lGRc5emDXYJ4+w1$FfSs4vikOhA4R`2VaG4G9*tU26bd++VZCQ!NN^qQ= zGK6Hwjih0>DS!elLQOclE^O-p?@d>ZqM^5t5Y`hwX5T~`#Uf`4$;oR{4v;wDd;;*K zhRgkQx$;Goztr?E+n##(sL7b>U<1y#gvLEJA<+$xwRWgur}*w61{S@(T9S2()S|_Q zCHYX~*ZL{co(k5L3@JvX7H%>`sFSRt?#SKb9AL1SuM9#fDhOgD3vXp3)L<4P*~# zQ9;FFDAogM!OxokE#uEHvk$_JG)qxXpqF53#9;{hv7K9dpXLpQBp4IUMYW$6Wir76 z^F|>z?3hw_vQPy{B3PjAq{91L`q*cg6sjC0p-ixF6;Ob@pydK{tG8!ZNYNjv3zn2| zM3thTMIV||4Az8p{UBFK!wo5>ivEN9=P)R$QN87sFPtcfT}PP<^o<_ZgTv8eV_3PZ zuT{>ZYeGqCP*UoLc~((+adTipS0X#zUS_l(&H79sXkIG#3}%2628e+0;5jX`AL7)J z3UlbCA;_u<;x-847L3&{1nh2AKLnbsHmmErn|hs>DS$m*55e$^CE&3gWLC3hqaH*6 z2)cEXNe*&a0x}~5nzf5aVjW@I0)fB*l-h=z6-zj zMO$6?$4Fz;ND`T64%j*mte=~1ov(JzW3zQp&_3h%LkqE8fYC8b<0510GUo%Qp|20O zy1=eG*|2vpFtrO(Ga7K&8+hrs_rWn;bUSd-8%C1@(n8!9;twPLjlGuRw6|e~!?cgCyZp!RS2uCQOh6RpJqS_9G-U{ATD(65{PkBw2915M5Za>4}i zs1fi^X4n&DQ5z7ZVU*Py;`l`r@C9=Ci5~SR$Ai7k2??+iu?)!mOEL zo&(U7Ew8Jcu}?Q!(dwp(hkOrA*@JKL_PsFHbwk?{&&i5~LMG${@6z72qY=~uhXaFn zoHUHS>Enwf9I9^%56#NvKmp7yVx6>up0vlOJW^>7J~ySbE=cUi z>v)EN?{VN8b^{A6v_MvQK#*j?hRzm5Tn5RTM%{0I!a@B4lMS}4+#OufM0cpT#sEB5 z%p@!%no7?m7%feG{s@7S3f&3Ik5%%N>%*3~HDL!huW|5K!EgpSkCQL?>00ndH>JK@ zI`gjl6~n4aIhrNNj8ANy6WWn1iCfgdh8$Tdpf9??^dC zqGmmhzSvnsv8hSIDS9sZNHTp+ZHBtoYDdW!C)~%n6~_d3dR1nfvYTiBObN;iD!K-4 zQD7bS4=Q84RU?I?mTh)j4;Tq3mG>2g8w6xyl}MM5N<0O#t?LWD7~{nE&vDa;M~9h4 zC9QK@J;_v$gsKDX1G>FZ@b5BBNxcYcpKv~Rc5wIn82k3hNwO^mVG@P~hJL((_jtJMgT#%zd%-A|Few!Fw);O3<}CdYWWy&T*!z@3-p& zKqP5GEt0H9(~_2EN}I`I=HrUY?PT9VZrONrf7_jqYZ9!SK5KJ6#=B9wIwP?f9o&j= z?uOa1-zGi5e-ihHWP+Dic^9GF{?`(;&_!aM0APQzzvU~1+Z0FB0BUW^)Tw3W?pPfgR#+_O7CsQ71q!acs1`l4Z zo?hBAkQ#$7@FvZEOCWe-vt0S&O%TT!(9o(gX5_@LD+%k?hDA#Z_8 z@r?cUcLkNVe2RkbrBj@3;!<|qOb5Y@%mbukw;)uho?L5vylX)31lsi6n? zz@PAz4keSxOMXP~Oa@ubc`*D~>ASlUl`Z_`+mR7a1wf9KzCzeXvSBk)$KFN^y)B== z`TDV4i4uD&^VW7-xiKC_k^O12p&nyH^I^r>wFYa9B{W5qn;}}bq|4kJKvn4p!klYf z5rX&YEls$vEoqW@1Y@(YFJv%xs|asj=0I{0=tkVS^2h9_TO!M3jPmcc*GcV%fZ;#) zIi5_S>$yjI8YkAU9tLob^uc?xCFKJ@K%nYeHVS2{D>+#mQ5Sd ziAx+Xw!B&X*bM5tmf;&eZI7$YOTR!iLF%GGHX-V$`fecC%r(W* zXw_im?TE>?{VG(dk@^}zJZhi_>Of z03P)-z0}+RQw|{K3N;Lx3M*QQDMibGg3HIwvp*>{{(E!JiQVVg4qqr-k|a!T^QHF1 zEGZ+o(pH}|GKZy@6Lv+sf1W*i8IrWCXp3sXFtVh&Y13S{O%4Zkg zT`djQ@aE9amLNNXXLUE!8DBjgEw`lGd@1S?fxNJj zEOOmU57uGoK(k79P6n(Y*s!&c)LjdI+=IVp@(e1za=$phC+Lhn{4`Kk&zUhj2CZ}Y zWUs24nweNkui{HePFCyMxaeMT$`0yFLqD21I@(OC?K#{l>N_b4*pWn|%&HP@&c&(R zIuOHNel=r$_!S)QlNsOKg8aQ5amiZ^A&q~m&~b*l#n-v>5U|0@PLxP3$S*D^V_I_; zv|#GMWKx;uGb0U_vxsH4L~-Gi?u|}nw~+Td6ZL`G^=XBdmlK#OD08@^V6-F{Y#}JA zc5ympk{k9ftoC9VzDfKq*#5PKTaskT}tXEA@x=o?ZUAEOS<~GAN*BIWLv86XPUFSWZ1H@F9!{7#6r9?@KX&`FXT~S>_oINb ze5rS=c!xChgA-BdmMo(;OzaQ%Q5mr^$hmrZq*V=FELP`3`GlH~P2Brx#|L+me{lCt zwZTlYL}`aS^DvR*{BsaFXe%Dg#rTYvWtW5!6+rfj|Nov2 z|0jcHq#zVb=wF`IDHI3@=YO}psODm2OTqI0`fan-CYA9eG58r^p^6+mhES-7I7TAa z(Dqnj-zd@g8el2VT-Z6opiJwzaAEnaN@*4!Q759mNmYf*R~~ zgy3V@X}3`-uBB8PXI0tLD!^ye0w;j&mm?E0WCnt+W(Aoy8=3^_M1^11wWyLg4HJfDRj@5^j?p%aS{??DiO?4g^?)i z)AFZKHPy8%=3kOkog{=65rr0_u`z{L=z%P|kNSXa5e=ng%0o>@UX{mz7JTZ!N)wIB zG;+vm<~>v6(D=^9r)F(r_if_lU0V5gRSs#ez()CTMJFBBHHX{Y8Fl%}mz2JzPTX#z zZ$i|oUrL2|<)Ls*Ogc^14{ebu@*|D|0XG?}`r)L;Q{>QeNm5`(=ji~3?orovvoY;9 zVBo@MMtJ8@>8H2KlZJ{-M=!QVHSHOw6|u%JwU>i-eh=ylcPsm&amR}6aML2@DdC=>I_Bh$UYGu zV=bek$ z#|=6Ns&=Ag?P@uxP3Ros5@=N=eXjZb@@AjFca^lGH>9pIQfaM$&xNe@5V#)2eDh~v z{o8_Q)B{pWKb~kwui!O)0Gm$Ot4rv&u+P|Hqwe;B zz+`(Z-xomv-#tP4!|m9YHAWbhn+j@IRT%e%`F2?B9g9Vv0<+VedF%%FO!9+0N^m>B z%ks$UJcDBHS{UUW`bgUu>KlCf@;LvKGE-x$Pbjrs;;i4-E%ANSi5B_;oY%DXLUiUB z`aXyqn`(&tD1o^ro$e@KF+7xVx>4lOBh3sxQ8KuLr|do$Bias#tAt}X$mkEj;463p z%{JS7O<5Ly^ECbb(=2BP#R4x{M~9iV{Y8jJZ`l8NDBm-@l8XNElBE9a6$AeJL;3%4 zL)7&&&^0i&Q)OAH5Q2PYnl%+GNI@m4mRA(vB&_Ox)^*$f|xx`wRUU z2<{1}tXlq{uz5~>YQ6<(yk-{}Qg*1@26)f%ziv6dtiNW-`2G2FY5<}enl40LQ#MwH z^D__BVBCm3ki#ci2*Sh(N5c^i$khO=JLrmuE_o*hhS!s9p15!z0Y>;HFU^hVS)OtU#C zbLejAS-l~r*_b;Jm;}+1&>l8IJ_wJn-RRSLm7a2Azvi{$5T#~AspDwbIrEG3ubsK& z*N{iapA@Z^D?=5|iT(_IdM3dlt&)~naO%aCL)LqF9^@@qf8e3-XxKb!^x8+s^dQ*k z#lB&QCVr66U?`2lzG$4-$}}{XSN0WbnO_K9;LWS@_-2hMk0Nq8nA~t5Gx2eBwDmMa zjUZb!qSa~TTh2Z3`{S^o>%(~*B|x7wORXEnqopx}yXxEk1tpYzOjKt}6YH$u?;wPl zXjM;P$BrcMFEzzbXtWWxuHnG&-O?|H#@NXR;)F3sJa|(Y`*EsAK$cKy-}1MC7})70 zWR($~I3k-<+Hls8lguD+sZ-@c(@S``Ae3?ol}iU*wjR#B7YjljYb$4P&Wotc z%tHL5t8$;{#)g?@OyMowV7O=7)($Pa|fj6fim-%K_QQS z-JtRZ{;tPG8{F1a#(uPSPW^a}^b3|86iyaE5i(TllLMRzl zpQ(iH>s~WOeyYs+dM|NElWcw*Ice+pN&oolIATbV7UI#^wgqnZnfWE8A$T}Mu5lJD z+CO(JlGVlmc3B4mqts{l$$X!@+2Y)%3*J)5SERH#$Xz0$M%eN1{lFiek#^)Q;Li~Y z#YHWSMKYc}k#9a3^Jq--Z*cJgdqf#-`O~c&*L!ER!L#Q~XvS^7sAB#`#Sfqs#rKh9 ztRqmvd?3s?Ti}4V{hobi3!)!+`@084B{Eewm6!h8+c9Hj2IU#oyl}3DGKmZgATYch zmq0K>iff);xQfvzqjG{BA$FU4rf$WrNNE?B6DqP``X$q3ySJ5NjC3TV<`;yvE?wL@ z-_@KuI&aMm={cc7+A}l3ZO%eKW;qHeO%{bODu$1qa6X%+N4Y@!l<%M~TkJ2Ux^CR( z@c}46c*$7M{{buviPzCTSVMMVcqkCkyR>1yEdc6A@LJB6BCDQ9R4_A-u|Wq&{v>?k zkYItvY;Eg^Hc7LXrg!j<$6!D`BTR5iRoyxi-yT(?H$kIP&@u`thts86!=`E*gZLu? z7UrQhC~H7np87+4phyQr> zr-b|$`|*z(E&Sif-hZ~#gzZd)ot^DX{*Po$bscYXaU4JDFgrZ#&CrxWL!mNm5G!F6 zZEc1S5db7m2KBzroULe+s?*VZ0ju^es@ElA>m8r6XWQNVhR#0}D3f6`~uk-NaQint{;Ut9(> ze|nmRu%mQ@%{@PH25Nu`l52rR+jd7ARJFFB)WB{c<*m^9sUO{&bkFa37{*bJ;rb!FoTFU&Vf>5uM zk+-IB1kx#ehOsiISGR4@e8j05&bI*`to~=MEGxhGXfh{$bHdYUwKAaSH2yK@nAdA7 zBdT1S8U=@LL%$k@eJcnKP8!OVTj^2Pt%eSG{2sC_E;*jiiY1ZdFo`a_x4ziym8?o$ z2?%_3A6F*1;M8rwopztiYOt+Y=Cp)Tp1xV4|APnV7EuC9-a~2F=9KKsOdr?PVm{g7 z#K*~eM|n?2c*mB0W#?YJs-N`Yl-6Zpr5S$`pf1pxzPy1RV966_#YB`X>%@p4cx-6}9xYb!k0Zg=6SE*uU^j!Tp5X=Y1~zL1s~BjxH-`@>~p1C5Vil|bFHgJQWN$TBnGvh%`pQxU0Eow?_TMZCNoxUC`!ob2pI<xQmZY1W`#w5*29WLSu+qa>jg7wr=63u z;@Lc>x*>mMMw>kejrp5yTgrw9pLJ{IA$(tQo1&(bSd*a$Tx*qtoi9YoyheSd;QMS;4Kaz#EG%W<%^*WrQ#GYV3hti&e~th>W2OhMKvZg zCCN%RZzO+X=FZVe^np^0i$U{>h4!IX%(ARO>vr}nKO(rXAXqO1J5=XseIbb1;Xj>< z#7vPHZ2<LP}Agp4_@9d;#bwM&b zT`oKM3ERloL}jhkm!^4nQ}Osw^v2}m#?KOKN#5R`;fE7OvE(l)NEN@tSXLvCr0JImE_lKmYJDNomz9V@eOrXScFjBybLx|DbyVvvG|5>eVEgE!HhUF(a?^jn?g$&VZ-(pWRbYhdldLLVjm)Jz=Ym%HsB!M4i$xHcXt> zIxW5CKs7al*uYhW-T2#jX3QI|z&^3^tL3S@{R|_+P`AGLpo~)|C%sMrub%eS!(T5c z?grwzRm+uPvQYU<%+8uU8jVRq+b+sJ#S|I#8bG=|T5gKw1iwME^6l={BE6Fy)3lV+ ze@0|`!*0i3+f~s~XREn(JZ-au)kAAnXty`o^ZWeo@yZ4HP7BMnZKKlG>uL#cApYoi9XmYQ-x`7{V^WxXG-3!`wNj=G>tydL&D zOm)b$S(~?wJ}!wy%~@m7y#d}O`)3zod~?hUn&4yH;;IeaJYzoo&-m>8Ftk z)wbKk8GY-k+YzP$cr zk#Ye*g&z1U@5NT3kOi$kN?sVtDWVDwquU<4bJwk%9rasuQ%jEu4Vb82@mby28u+3`m=d{k`hZ!}J4TyB~g6@RsnB;gwA+ETS=Hj%)|Y+cy* zz~Lum$q{F0?_|>Fp2Nxy!Du!D!M#nUBx>%{M+K6H_91eLNAlRX2|=+3+=adc6;n8F zhEjeB4g-&<7{T)FzA%E>1?)LV7cb_55CFup23qtZ^ z8m|O)UzX|Gr{n`$q9U3xHFT?VsY1D;d0#2tu?iB@1(wQ| zMgt*o1J(0R@7t#&0%MwBp9n^>sn2u^Br5K(cVzb53FyYF3un*JBg9Ko4VCqtsM4Y4 z`W-WrEXG_yWE<%>)Gnq}F7ag8C9Ue!D6%_I^@vx4`IaGEd96#@uh_|zl zg{(!J0)uq-=|zhqbI9D|Op?oMx`*QJ9E(h1D0n3|d?J8mlyxDwN+&y%J-H=+Et2%q z4*`Ig^83f{|BJ(M1y)Yq`mY^U`;Wu%|Dy!`Uy$PeErb6FcgGh;;V;~rnBZY0lW$w= zCyj|e9?HZIHyMVKtPdBCp&>|s&QV_=v2WT@yN)4v7;wLX?h?UFRVDH$j)*PbYV3>; z>0SesZf0BL-!7eXd5!vddpx!Wu{(T38(|TILT^UHa%lfe=cQle@ah$QfiJ#Ae=ta9 zmu%T%x)&2@2JRX-(06`SCX~0}V|}}sV&knB2{(FqvE3PSTBa6g>-tqMRI~41B-DQH z@vv`LOBpQbHkrJ!ZoheB!t2nK^~2eE6&6xG1L!{s2c1(aA~POGj_KVqI{s*?^B(wY zyQ~F$D+F zYxT9b^dh5%BwVJ}jDfkQ@XF18@`n1Tu*_hr^r*BjXMs#END6ONd5~HVcibdj)qu(~ ztBOdjh$?ZrRZrUunSNIFbkQm2c5Ee2CQK1O*^O)gKZXk6$;BVJu{(rcmiEJBpid8- z&ak^ARx`$Yen_&7gxPWS6|->dFGIQ8UwKW&y+g7U*)7q*AxdB(l1p4#`O;sbl9^IF zWEG3Oo^V&f(l5b`U)0=Vhi)<|=xMw?H?^OTcG(1;c?7H0U1*+M07DZE%}MeJGpy%c z(1s`R)mv-fl)69#2u32E;q=utw;*nAY1@(;y=B%{suCGdS{l8M|*U=h|>+ zfkj~Jomg`30S|_wWhcl&;+%?wbgcvH5`#4g>(G=5&d&#W>{qXKo|_tiF!h zr111Wy#@4IW4zi%{UiTWy5BL9D>!D0mJ}#(@*g#1JJ8sm4gWA@fyE`R6rsK&ri-1F z9l@lsaHNp+#3{-8Wt6elKT392k8x)M(JOz457Fxh_U3)QR}9mY1m>5yCj-$ddUuT8 zXOT9B;{yO?TEbF}=n|P)My(n^sq8C|71PAl%D|b7FpVRj`!k4AfkLw?;YFF-XIc<3 zGDD}tCkj(z7=C}F<_CJfF z;_mRFw|}aT5Bpz3egAVY{XbQK^?x6Gs7?k;JNl5V7tE(s~W%{}+rbM$)8|9bBC^5|9{XMTIFS!+$aGi%PlZ*x67Of`{2 z!zl=p5?fs}cAH&y#!gRO+kOId3)ahN3Xb!0LIceUWC|>XF36q!M9>e9L(2KF}V{}tKg%xJjT%NLQA$1yEuUK(_ zuV|K4j@4bgo$E-i`oH`1Dkd?VW-u9g1=⩔s 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 literal 0 HcmV?d00001