summaryrefslogtreecommitdiffstats
path: root/sql-bench
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
commit3f619478f796eddbba6e39502fe941b285dd97b1 (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /sql-bench
parentInitial commit. (diff)
downloadmariadb-3f619478f796eddbba6e39502fe941b285dd97b1.tar.xz
mariadb-3f619478f796eddbba6e39502fe941b285dd97b1.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--sql-bench/CMakeLists.txt77
-rw-r--r--sql-bench/Comments/Access.crash-me40
-rw-r--r--sql-bench/Comments/Adabas.crash-me36
-rw-r--r--sql-bench/Comments/Empress.crash-me102
-rw-r--r--sql-bench/Comments/FrontBase.benchmark59
-rw-r--r--sql-bench/Comments/Informix.crash-me26
-rw-r--r--sql-bench/Comments/interbase18
-rw-r--r--sql-bench/Comments/mysql.benchmark39
-rw-r--r--sql-bench/Comments/postgres.benchmark107
-rw-r--r--sql-bench/Comments/postgres.crash-me30
-rw-r--r--sql-bench/Data/ATIS/aircraft.txt135
-rw-r--r--sql-bench/Data/ATIS/airline.txt314
-rw-r--r--sql-bench/Data/ATIS/airport.txt9
-rw-r--r--sql-bench/Data/ATIS/airport_service.txt14
-rw-r--r--sql-bench/Data/ATIS/city.txt11
-rw-r--r--sql-bench/Data/ATIS/class_of_service.txt27
-rw-r--r--sql-bench/Data/ATIS/code_description.txt15
-rw-r--r--sql-bench/Data/ATIS/compound_class.txt149
-rw-r--r--sql-bench/Data/ATIS/connect_leg.txt351
-rw-r--r--sql-bench/Data/ATIS/date_day.txt1826
-rw-r--r--sql-bench/Data/ATIS/day_name.txt7
-rw-r--r--sql-bench/Data/ATIS/dual_carrier.txt114
-rw-r--r--sql-bench/Data/ATIS/fare.txt534
-rw-r--r--sql-bench/Data/ATIS/fconnection.txt164
-rw-r--r--sql-bench/Data/ATIS/flight.txt579
-rw-r--r--sql-bench/Data/ATIS/flight_class.txt2895
-rw-r--r--sql-bench/Data/ATIS/flight_day.txt448
-rw-r--r--sql-bench/Data/ATIS/flight_fare.txt2998
-rw-r--r--sql-bench/Data/ATIS/food_service.txt121
-rw-r--r--sql-bench/Data/ATIS/ground_service.txt33
-rw-r--r--sql-bench/Data/ATIS/month_name.txt12
-rw-r--r--sql-bench/Data/ATIS/restrict_carrier.txt612
-rw-r--r--sql-bench/Data/ATIS/restrict_class.txt4
-rw-r--r--sql-bench/Data/ATIS/restriction.txt65
-rw-r--r--sql-bench/Data/ATIS/state.txt63
-rw-r--r--sql-bench/Data/ATIS/stop.txt69
-rw-r--r--sql-bench/Data/ATIS/stop1.txt69
-rw-r--r--sql-bench/Data/ATIS/time_interval.txt12
-rw-r--r--sql-bench/Data/ATIS/time_zone.txt9
-rw-r--r--sql-bench/Data/ATIS/transport.txt4
-rw-r--r--sql-bench/Data/Wisconsin/onek.data1000
-rw-r--r--sql-bench/Data/Wisconsin/tenk.data10000
-rw-r--r--sql-bench/README93
-rw-r--r--sql-bench/as3ap.sh638
-rw-r--r--sql-bench/bench-count-distinct.sh260
-rw-r--r--sql-bench/bench-init.pl.sh615
-rw-r--r--sql-bench/compare-results.sh620
-rw-r--r--sql-bench/copy-db.sh373
-rw-r--r--sql-bench/crash-me.sh5036
-rw-r--r--sql-bench/example19
-rwxr-xr-xsql-bench/example.bat7
-rwxr-xr-xsql-bench/graph-compare-results.sh661
-rw-r--r--sql-bench/innotest1.sh142
-rw-r--r--sql-bench/innotest1a.sh108
-rw-r--r--sql-bench/innotest1b.sh101
-rw-r--r--sql-bench/innotest2.sh150
-rw-r--r--sql-bench/innotest2a.sh94
-rw-r--r--sql-bench/innotest2b.sh104
-rw-r--r--sql-bench/limits/Adabas.cfg429
-rw-r--r--sql-bench/limits/Informix.cfg420
-rw-r--r--sql-bench/limits/access.cfg501
-rw-r--r--sql-bench/limits/access_odbc.cfg448
-rw-r--r--sql-bench/limits/db2.cfg522
-rw-r--r--sql-bench/limits/empress.cfg364
-rw-r--r--sql-bench/limits/frontbase.cfg516
-rw-r--r--sql-bench/limits/interbase-dialect1.cfg514
-rw-r--r--sql-bench/limits/interbase-dialect3.cfg514
-rw-r--r--sql-bench/limits/interbase-superserver.cfg514
-rw-r--r--sql-bench/limits/interbase.cfg472
-rw-r--r--sql-bench/limits/mimer.cfg491
-rw-r--r--sql-bench/limits/ms-sql.cfg523
-rw-r--r--sql-bench/limits/ms-sql65.cfg418
-rw-r--r--sql-bench/limits/msql.cfg227
-rw-r--r--sql-bench/limits/mysql-3.22.cfg452
-rw-r--r--sql-bench/limits/mysql-3.23.cfg523
-rw-r--r--sql-bench/limits/mysql-4.0.cfg7290
-rw-r--r--sql-bench/limits/mysql-4.1.cfg7056
-rw-r--r--sql-bench/limits/mysql.cfg1122
-rw-r--r--sql-bench/limits/oracle.cfg505
-rw-r--r--sql-bench/limits/pg.cfg523
-rw-r--r--sql-bench/limits/solid-nt4.cfg422
-rw-r--r--sql-bench/limits/solid.cfg422
-rw-r--r--sql-bench/limits/sybase.cfg422
-rwxr-xr-xsql-bench/myisam.cnf3
-rwxr-xr-xsql-bench/pwd.bat2
-rw-r--r--sql-bench/run-all-tests.sh314
-rw-r--r--sql-bench/server-cfg.sh3618
-rw-r--r--sql-bench/test-ATIS.sh567
-rw-r--r--sql-bench/test-alter-table.sh269
-rw-r--r--sql-bench/test-big-tables.sh174
-rw-r--r--sql-bench/test-connect.sh339
-rw-r--r--sql-bench/test-create.sh277
-rw-r--r--sql-bench/test-insert.sh1995
-rw-r--r--sql-bench/test-select.sh500
-rwxr-xr-xsql-bench/test-table-elimination.sh309
-rw-r--r--sql-bench/test-transactions.sh304
-rw-r--r--sql-bench/test-wisconsin.sh373
-rwxr-xr-xsql-bench/uname.bat2
98 files changed, 66874 insertions, 0 deletions
diff --git a/sql-bench/CMakeLists.txt b/sql-bench/CMakeLists.txt
new file mode 100644
index 00000000..f99627a5
--- /dev/null
+++ b/sql-bench/CMakeLists.txt
@@ -0,0 +1,77 @@
+# Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
+
+# Install sql-bench files
+
+IF(NOT INSTALL_SQLBENCHDIR)
+ RETURN()
+ENDIF()
+
+IF(INSTALL_SQLBENCHDIR STREQUAL ".")
+ SET(prefix)
+ELSE()
+ SET(prefix ${INSTALL_SQLBENCHDIR}/)
+ENDIF()
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Data/ATIS
+ DESTINATION ${prefix}sql-bench/Data COMPONENT SqlBench)
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Data/Wisconsin
+ DESTINATION ${prefix}sql-bench/Data COMPONENT SqlBench)
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/limits
+ DESTINATION ${prefix}sql-bench COMPONENT SqlBench)
+
+SET(all_files README bench-count-distinct.sh bench-init.pl.sh
+ compare-results.sh copy-db.sh crash-me.sh example.bat
+ graph-compare-results.sh innotest1.sh innotest1a.sh innotest1b.sh
+ innotest2.sh innotest2a.sh innotest2b.sh myisam.cnf pwd.bat
+ run-all-tests.sh server-cfg.sh test-ATIS.sh test-alter-table.sh
+ test-big-tables.sh test-connect.sh test-create.sh test-insert.sh
+ test-select.sh test-table-elimination.sh test-transactions.sh
+ test-wisconsin.sh uname.bat
+ )
+
+FOREACH(file ${all_files})
+ GET_FILENAME_COMPONENT(ext ${file} EXT)
+ GET_FILENAME_COMPONENT(name ${file} NAME)
+ SET(target ${name})
+ IF(ext MATCHES ".sh$")
+ # Those are perl files actually
+ STRING(REPLACE ".sh" "" target ${target} )
+ IF(WIN32)
+ IF(NOT ext MATCHES ".pl")
+ SET(target "${target}.pl")
+ ENDIF()
+ ENDIF()
+ ENDIF()
+ SET(target "${CMAKE_CURRENT_BINARY_DIR}/${target}")
+ CONFIGURE_FILE(${file} ${target} COPYONLY)
+ IF (UNIX AND NOT ${name} MATCHES "README")
+ EXECUTE_PROCESS(COMMAND chmod +x ${target})
+ ENDIF()
+ IF (ext MATCHES ".bat")
+ IF(WIN32)
+ INSTALL(PROGRAMS ${target}
+ DESTINATION ${prefix}sql-bench COMPONENT SqlBench)
+ ENDIF()
+ ELSEIF(name MATCHES "README")
+ INSTALL(FILES ${target}
+ DESTINATION ${prefix}sql-bench COMPONENT SqlBench)
+ ELSE()
+ INSTALL(PROGRAMS ${target}
+ DESTINATION ${prefix}sql-bench COMPONENT SqlBench)
+ ENDIF()
+ENDFOREACH()
diff --git a/sql-bench/Comments/Access.crash-me b/sql-bench/Comments/Access.crash-me
new file mode 100644
index 00000000..f4a419aa
--- /dev/null
+++ b/sql-bench/Comments/Access.crash-me
@@ -0,0 +1,40 @@
+Access 97 tested through ODBC 1998.04.19, by monty@mysql.com
+
+Access 97 has a bug when on executes a SELECT follwed very fast with a
+DROP TABLE or a DROP INDEX command:
+
+[Microsoft][ODBC Microsoft Access 97 Driver] The database engine couldn't lock table 'crash_q' because it's already in use by another person or process. (SQL-S1
+000)(DBD: st_execute/SQLExecute err=-1)
+
+Debugging SQL queries in Access 97 is terrible because most error messages
+are of type:
+
+Error: [Microsoft][ODBC Microsoft Access 97 Driver] Syntax error in CREATE TABLE statement. (SQL-37000)(DBD: st_prepare/SQLPrepare err=-1)
+
+Which doesn't tell a thing!
+
+--------------
+
+Access 2000 tested through ODBC 2000.01.02, by monty@mysql.com
+
+crash-me takes a LONG time to run under Access 2000.
+
+The '1+NULL' and the 'OR and AND in WHERE' tests kills
+Activestate Perl, build 521, DBI-DBC with an OUT OF MEMORY error.
+The later test also kills perl/access with some internal errors.
+To go around this one must run crash-me repeatedly with the --restart option.
+
+Testing of the 'constant string size' (< 500K) takes a LOT of memory
+in Access (at least 250M on My computer).
+
+Testing of number of 'simple expressions' takes REALLY a lot of time
+and memory; At some point I was up to 350M of used memory!
+
+To fix the above, I modified crash-me to have lower max limits in the
+above tests.
+
+Benchmarks (under Win98):
+
+Running the connect-test will take up all available memory and this
+will not be freed even after quitting perl! There is probably some
+bug in the Access connect code that eats memory!
diff --git a/sql-bench/Comments/Adabas.crash-me b/sql-bench/Comments/Adabas.crash-me
new file mode 100644
index 00000000..d36d0504
--- /dev/null
+++ b/sql-bench/Comments/Adabas.crash-me
@@ -0,0 +1,36 @@
+
+I did not spend much time for tuning crash-me or the limits file. In short,
+here's what I did:
+
+ - Put engine into ANSI SQL mode by using the following odbc.ini:
+
+ [ODBC Data Sources]
+ test
+
+ [test]
+ ServerDB=test
+ ServerNode=
+ SQLMode=3
+
+ - Grabbed the db_Oracle package and copied it to db_Adabas
+ - Implemented a 'version' method.
+ - Ran crash-me with the --restart option; it failed when guessing the
+ query_size.
+ - Reran crash-me 3 or 4 times until it succeeded. At some point it
+ justified its name; I had to restart the Adabas server in the
+ table name length test ...
+ - Finally crash-me succeeded.
+
+That's it, folks. The benchmarks have been running on my P90 machine,
+32 MB RAM, with Red Hat Linux 5.0 (Kernel 2.0.33, glibc-2.0.7-6).
+Mysql was version 3.21.30, Adabas was version 6.1.15.42 (the one from
+the promotion CD of 1997). I was using X11 and Emacs while benchmarking.
+
+An interesting note: The mysql server had 4 processes, the three usual
+ones and a process for serving me, each about 2 MB RAM, including a
+shared memory segment of about 900K. Adabas had 10 processes running from
+the start, each about 16-20 MB, including a shared segment of 1-5 MB. You
+guess which one I prefer ... :-)
+
+
+Jochen Wiedmann, joe@ispsoft.de
diff --git a/sql-bench/Comments/Empress.crash-me b/sql-bench/Comments/Empress.crash-me
new file mode 100644
index 00000000..b60bf4f1
--- /dev/null
+++ b/sql-bench/Comments/Empress.crash-me
@@ -0,0 +1,102 @@
+*****************************************************************
+NOTE:
+This is an old comment about how it was to run crash-me on empress
+the first time. I think it was on Empress 6.0
+*****************************************************************
+
+start testing empress ...
+added a nice line for the max join ....
+strip the as out of the from field ...
+that's working on empress ....
+
+at this moment with ....
+max constant string size in where .... taking a lot of memory ...
+at this moment (it's still growing just waiting till it stops ..) 99mb ..
+sorry it started growing again ...
+max 170 mb ... then it gives an error ...
+Yes it crashed .....
+at max constant string size in where ... with IOT trap/Abort(core dumped) :-)
+nice isn't it ... hope it saved the things ....
+I outcommented the sig story because I could see how the script is running
+and I wasn't sure if SIG{PIPE} ='DEFAULT' ... is working ...
+restarting with limit 8333xxx ... couldn't see it any more ...
+query is printed ...(200000 lines ..). mmm Nice IOT trap/Abort ...
+and again ..and again ...
+aha ... and now it's going further ...
+max constant string string size in select: ...
+taking 100 mb
+crashing over and over again ....
+max simple expressions ...
+is taking ... 82 mb ...
+mmmm this is taking very very very long .... after 10 minutes I will kill it and run it again ... I think he can't proces this query that fast ... and will crash any way ...
+still growing very slow to the 90 mb ...
+killed it ... strange is ... it don't react on ctrl-c ... but kill 15 does work
+mmm still bussy with killing his self ... memory is growing to 128 mb ...
+sorry .. 150 mb .. and then the output ..
+maybe something for the extra things for crash-me ...
+if debug ....
+if length $query > 300 ... just print $errstr .. else print $query + $errstr ..
+at this moment he is still bussy printing ....
+first clear all locks ... with empadm test lockclear ... else it will give me
+the error with a lock ...
+restarting at 4194297 .... mmm a bit high I think ...
+after 5 minutes I will kill it ...
+mmm have to kill it again ... took 30 mb ..now growing to 42 mb ..
+restarting at 838859 ... hope this will crash normaly ... :-)
+I will give it again 5 minutes to complete ...
+taking 12 mb .... will kill it ... after 4 minutes ....
+restarting at 167771 ... taking 6 mb ... give it again 5 minutes ....
+ will kill it again ... else it becomes to late tonight ...
+mmm started with 33xxxx and it crashes ...:-) yes ...
+can't we build in a function which will restart his self again ...
+mmmm this is really boring .. start it over and over again ...
+WHO .... NICE >>>>
+Restarting this with high limit: 4097
+.................
+*** Program Bug *** setexpr: unknown EXPR = 1254 (4e6)
+isn't it ... starting it again ...
+finally finished with 4092 ....
+now max big expression .....
+directly taking .. 85 mb ... give it again 5 minutes ...
+mmm I am going to kill it again ... mmm it grows to 146 mb ...
+restarting with 1026 ... taking 25 mb ..
+won't give him that long ... because it will crash any way (just a ques) ..
+killed it ...
+restarting at 205 ... hope this will work ....
+won't think so ... give it 2 minutes ... taking 12 mb ...
+killed it ...restarting at ... 40 ... yes it crashes ...
+ 7 is crashing ... 1 ....is good .. finaly ... a long way ...
+now max stacked expressions ....
+taking 80 mb ... mmmm what sort of test is this ...it looks more like a harddisk test .. but it crashes .. nice ...
+mmm a YACC overflow ... that's a nice error ...
+but it goes on ... yep it didn't crashed just an error ...
+ mmm
+my patch for the join didn't work ... let's take a look what goes wrong ...
+saw it ... forgot some little thing .. mm not .. them ... another little typo
+mmm again a really nice bug ...
+Restarting this with high limit: 131
+...
+*** Program Bug *** xflkadd: too many read locks
+them the lock forgotten ....
+mmmm bigger problem ...
+with empadm test lockinfo ... gives ...
+*** System Problem *** no more clients can be registered in coordinator
+
+*** User Error *** '/usr/local/empress/rdbms/bin/test' is not a valid database
+that's really really nice ....
+hmmm after coordclear ... it's fine again ...
+strange ...
+ after restarting it again the script ... it is going further ....
+the overflow trick is nice and working good ...
+now I have table 'crash_q' does not exist for every thing ...
+normal ...???? mmm went after all good .. so I think it's normal ...
+mmmm a lot of table 'crash_q' does not exist ... again ...
+sometimes when the overflow is there ... I restart it and it is saying ...
+restarting at xxxx that's not good ... but hey ... what the hack ...
+maybe that's good because if one test run's more then 200 times ....
+it won't exceeds that test ...
+....
+yes finally the end of crash-me ...
+at last ... crash-me safe: yes ...
+yep don't think so he ....
+
diff --git a/sql-bench/Comments/FrontBase.benchmark b/sql-bench/Comments/FrontBase.benchmark
new file mode 100644
index 00000000..03386a4d
--- /dev/null
+++ b/sql-bench/Comments/FrontBase.benchmark
@@ -0,0 +1,59 @@
+# This file describes how to run benchmarks and crash-me with FrontBase
+
+Installed components:
+
+- FrontBase-2.1-8.rpm
+ (had to run with rpm -i --nodeps; the rpm wanted libreadline.so.4.0,
+ but only libreadline.so.4.1 was available)
+
+- DBD-FB-0.03.tar.gz
+ (perl Makefile.Pl;
+ make;
+ make test;
+ make install;)
+
+- DBI-1.14.tar.gz
+ (perl Makefile.Pl;
+ make;
+ make test;
+ make install;)
+
+- Msql-Mysql-modules-1.2215.tar.gz
+ (perl Makefile.Pl;
+ make;
+ make test;
+ make install;)
+
+After installations:
+
+- cd /etc/rc.d
+ FBWeb start
+ FrontBase start
+
+- cd /usr/local/mysql/sql-bench
+- FBExec &
+- FrontBase test
+
+crash-me:
+
+There were a lot of troubles running the crash-me; FrontBase core
+dumped several tens of times while crash-me was trying to determine
+the maximum values in different areas.
+
+The crash-me program itself was also needed to be tuned quite a lot
+for FB. There were also some bugs/lacking features in the crash-me
+program, which are now fixed to the new version.
+
+After we finally got the limits, we runned the benchmarks.
+
+benchmarks:
+
+Problems again. Frontbase core dumped with every part of the
+benchmark (8/8) tests. After a lot of fine-tuning we got the
+benchmarks to run through. The maximum values had to be dropped
+down a lot in many of the tests.
+
+The benchmarks were run with the following command:
+
+perl run-all-tests --server=frontbase --host=prima
+--cmp=frontbase,mysql --tcpip --log
diff --git a/sql-bench/Comments/Informix.crash-me b/sql-bench/Comments/Informix.crash-me
new file mode 100644
index 00000000..557db012
--- /dev/null
+++ b/sql-bench/Comments/Informix.crash-me
@@ -0,0 +1,26 @@
+*****************************************************************
+NOTE:
+I, Monty, pulled this comment out from the public mail I got from
+Honza when he published the first crash-me run on Informix
+*****************************************************************
+
+Also attached are diffs from server-cfg and crash-me -- some of
+them are actual bugs in the code, some add extensions for Informix,
+some of the comment-outs were necessary to finish the test. Some of
+the problematic pieces that are commented out sent Informix to
+veeeery long load 1 on the machine (max_conditions for example), so
+could be considered crashes, but I'd prefer that someone checks the
+code before giving out such a conclusion.
+
+Some of the code that is commented out failed with some other SQL
+error message which might mean a problem with the sequence of commands
+in crash-me. Interesting thing, some of the tests failed for the
+first time but in the next or third run went OK, so the results are
+results of more iterations (like column doesn't exist in the first
+try but the second pass goes OK).
+
+I'd like to hear your comments on the bug fixes and Informix specific
+code before we go into debugging the problems.
+
+Yours,
+ Honza Pazdziora
diff --git a/sql-bench/Comments/interbase b/sql-bench/Comments/interbase
new file mode 100644
index 00000000..addaf74b
--- /dev/null
+++ b/sql-bench/Comments/interbase
@@ -0,0 +1,18 @@
+Running crash-me on Interbase:
+I
+- got opensource version of interbase 6.0.1
+ (both mode, classic and superserver),
+- set up DBD::InterBase from cpan,
+- created database "test" and set sql_dialect for that database to 3
+- executed crash-me for both interbase's models (classic and superserver).
+
+There were some problems during the execution:
+1) Sometimes client side got SIGSEGV , At that moment server side
+ writes
+ gds__alloc: non-positive size allocation request
+ to log file.
+ This problem has both models. I am not shure if it's interbase or
+ DBD:InterBase problem (though DBD::InterBase made all nesessary
+ tests during the installation without any problem)
+
+2) In "superserver" mode ibserver several times died (and ibguard restarted it)
diff --git a/sql-bench/Comments/mysql.benchmark b/sql-bench/Comments/mysql.benchmark
new file mode 100644
index 00000000..628903de
--- /dev/null
+++ b/sql-bench/Comments/mysql.benchmark
@@ -0,0 +1,39 @@
+# This file describes how to run MySQL benchmarks with MySQL
+#
+
+# The test was run on a Intel Xeon 2x 550 Mzh machine with 1G memory,
+# 9G hard disk. The OS is Suse 6.4, with Linux 2.2.14 compiled with SMP
+# support
+# Both the perl client and the database server is run
+# on the same machine. No other cpu intensive process was used during
+# the benchmark.
+
+#
+#
+# First, install MySQL from RPM or compile it according to the
+# recommendations in the MySQL manual
+#
+
+# Start MySQL
+
+bin/safe_mysqld --key_buffer=16M &
+
+#
+# Now we run the test that can be found in the sql-bench directory in the
+# MySQL 3.23 source distribution with and without --fast
+#
+# Note that if you want to make a results that is comparead to some database,
+# You should add "--cmp=databasename" as an extra option to the test
+#
+$CMP=--cmp=pg
+
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 1G, key_buffer=16M" $CMP
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 1G, key_buffer=16M" --fast $CMP
+
+# If you want to store the results in a output/RUN-xxx file, you should
+# repeate the benchmark with the extra option --log --use-old-result
+# This will create a the RUN file based of the previous results
+#
+
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 1G, key_buffer=16M" --log --use-old-result $CMP
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 1G, key_buffer=16M" --fast --log --use-old-result $CMP
diff --git a/sql-bench/Comments/postgres.benchmark b/sql-bench/Comments/postgres.benchmark
new file mode 100644
index 00000000..c52a5369
--- /dev/null
+++ b/sql-bench/Comments/postgres.benchmark
@@ -0,0 +1,107 @@
+# This file describes how to run MySQL benchmark suite with PostgreSQL
+#
+# WARNING:
+#
+# Don't run the --fast test on a PostgreSQL 7.1.1 database on
+# which you have any critical data; During one of our test runs
+# PostgreSQL got a corrupted database and all data was destroyed!
+# When we tried to restart postmaster, It died with a
+# 'no such file or directory' error and never recovered from that!
+#
+# Another time vacuum() filled our system disk with had 6G free
+# while vaccuming a table of 60 M.
+#
+# WARNING
+
+# The test was run on a Intel Xeon 2x 550 Mzh machine with 1G memory,
+# 9G hard disk. The OS is Suse 7.1, with Linux 2.4.2 compiled with SMP
+# support
+# Both the perl client and the database server is run
+# on the same machine. No other cpu intensive process was used during
+# the benchmark.
+#
+# During the test we run PostgreSQL with -o -F, not async mode (not ACID safe)
+# because when we started postmaster without -o -F, PostgreSQL log files
+# filled up a 9G disk until postmaster crashed.
+# We did however notice that with -o -F, PostgreSQL was a magnitude slower
+# than when not using -o -F.
+
+#
+# First, install postgresql-7.1.2.tar.gz
+
+# Adding the following lines to your ~/.bash_profile or
+# corresponding file. If you are using csh, use ´setenv´.
+
+export POSTGRES_INCLUDE=/usr/local/pg/include
+export POSTGRES_LIB=/usr/local/pg/lib
+
+PATH=$PATH:/usr/local/pg/bin
+MANPATH=$MANPATH:/usr/local/pg/man
+
+#
+# Add the following line to /etc/ld.so.conf:
+#
+
+/usr/local/pg/lib
+
+# and run:
+
+ldconfig
+
+# untar the postgres source distribution, cd to postgresql-*
+# and run the following commands:
+
+CFLAGS=-O3 ./configure
+gmake
+gmake install
+
+mkdir /usr/local/pg/data
+chown postgres /usr/local/pg/data
+su - postgres
+/usr/local/pg/bin/initdb -D /usr/local/pg/data
+/usr/local/pg/bin/postmaster -o -F -D /usr/local/pg/data &
+/usr/local/pg/bin/createdb test
+exit
+
+#
+# Second, install packages DBD-Pg-1.00.tar.gz and DBI-1.18.tar.gz,
+# available from http://www.perl.com/CPAN/
+
+export POSTGRES_LIB=/usr/local/pg/lib/
+export POSTGRES_INCLUDE=/usr/local/pg/include/postgresql
+perl Makefile.PL
+make
+make install
+
+#
+# Now we run the test that can be found in the sql-bench directory in the
+# MySQL 3.23 source distribution.
+#
+# We did run two tests:
+# The standard test
+
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 512M, pg started with -o -F" --user=postgres --server=pg --cmp=mysql
+
+# When running with --fast we run the following vacuum commands on
+# the database between each major update of the tables:
+# vacuum anlyze table
+# vacuum table
+# or
+# vacuum analyze
+# vacuum
+
+# The time for vacuum() is accounted for in the book-keeping() column, not
+# in the test that updates the database.
+
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 512M, pg started with -o -F" --user=postgres --server=pg --cmp=mysql --fast
+
+# If you want to store the results in a output/RUN-xxx file, you should
+# repeate the benchmark with the extra option --log --use-old-result
+# This will create a the RUN file based of the previous results
+
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 512M, pg started with -o -F" --user=postgres --server=pg --cmp=mysql --log --use-old-result
+run-all-tests --comment="Intel Xeon, 2x550 Mhz, 512MG, pg started with -o -F" --user=postgres --server=pg --cmp=mysql --fast --log --use-old-result
+
+# Between running the different tests we dropped and recreated the PostgreSQL
+# database to ensure that PostgreSQL should get a clean start,
+# independent of the previous runs.
diff --git a/sql-bench/Comments/postgres.crash-me b/sql-bench/Comments/postgres.crash-me
new file mode 100644
index 00000000..c693817c
--- /dev/null
+++ b/sql-bench/Comments/postgres.crash-me
@@ -0,0 +1,30 @@
+*****************************************************************
+NOTE:
+This is an old comment about how it was to run crash-me on postgreSQL
+the first time. I think it was on pg 6.2
+*****************************************************************
+
+mmm memory use of postgres is very very much ...
+at this moment I am testing it ...
+and the tables in join: is taking 200MB memory ...
+I am happy to have 400mb swap ... so he can do have it ...
+but other programs will give some errors ...
+just a second ago ... vim core dumped .. XFree crashed full ... to the prompt
+the menu bar of redhat disappeared ....
+at this momemt the max is 215 mb memore postgres is taking ...
+
+the problem with postgres is the following error:
+PQexec() -- Request was sent to backend, but backend closed the channel before r
+esponding. This probably means the backend terminated abnormally before or whil
+e processing the request
+
+I think we can solve this with a goto command ... to go back again ... after
+the connect again ...
+postgres is taking 377 mb .... mmm allmost out of memory ... 53mb left ..
+mmm it's growing ... 389 mb ..393 mb ... 397 mb .. better can wait for the out of memory ... i think 409 412 max ...
+
+ps added some nice code for the channel closing ...
+it must now do again the query when the error is the above error ...
+hopes this helps ...
+after crashing my X again ...
+I stopped testing postgres
diff --git a/sql-bench/Data/ATIS/aircraft.txt b/sql-bench/Data/ATIS/aircraft.txt
new file mode 100644
index 00000000..a8d91c39
--- /dev/null
+++ b/sql-bench/Data/ATIS/aircraft.txt
@@ -0,0 +1,135 @@
+'ATR','AEROSPATIALE/AERITALIA (ALL SERIES)',2,'TURBOPROP','NO',80.58,73.83,32446,49,10603,277,0,'YES'
+'SSC','AEROSPATIALE-BRITISH AEROSPACE (BAC) CONCORDE',4,'JET','NO',83.83,203.75,400000,128,25000,1400,3800,'YES'
+'CRV','AEROSPATIALE CARAVELLE (ALL SERIES)',2,'JET','NO',112.50,118.83,127870,140,29100,512,2150,'YES'
+'ND2','AEROSPATIALE N 262/FRAKES MOHAWK 298',2,'TURBOPROP','NO',71.83,63.25,23370,27,5810,240,500,'YES'
+'NDH','AEROSPATIALE SA 365 DAUPHIN 2',1,'HELICOPTER','NO',0.00,43.50,6615,14,0,196,423,'NO'
+'AGH','AGUSTA A 109 A',2,'HELICOPTER','NO',36.08,35.14,5402,6,0,165,351,'NO'
+'AB3','AIRBUS INDUSTRIE (ALL SERIES)',2,'JET','YES',147.08,175.91,313060,345,68000,576,2100,'YES'
+'AN2','ANTONOV AN22 FREIGHTER',4,'TURBOPROP','YES',211.29,189.62,551156,28,99280,375,3107,''
+'AN4','ANTONOV AN24',2,'TURBOPROP','NO',95.83,77.25,42997,50,8150,295,807,'NO'
+'AN6','ANTONOV AN26 FREIGHTER',2,'TURBOPROP','NO',95.79,77.20,49297,50,0,280,342,''
+'BEC','BEECHCRAFT (ALL SERIES)',2,'TURBOPROP','NO',0.00,0.00,0,0,0,0,0,'NO'
+'BEB','BEECHCRAFT BARON',2,'PROPELLER','NO',37.83,28.00,5120,6,1965,225,1085,'NO'
+'BEQ','BEECHCRAFT QUEEN AIR',2,'PROPELLER','NO',50.25,35.50,8800,11,3578,214,1185,'NO'
+'BEO','BEECHCRAFT TWIN BONANZA',2,'PROPELLER','NO',45.95,31.50,6300,5,2230,201,1110,'NO'
+'BE8','BEECHCRAFT 18/VOLPAR TURBO 18',2,'PROPELLER','NO',49.66,35.25,9900,15,4055,256,1515,'NO'
+'BE9','BEECHCRAFT C99 AIRLINER',2,'TURBOPROP','NO',45.66,44.50,10900,15,5123,280,1150,'NO'
+'BH2','BELL (ALL SERIES)',1,'HELICOPTER','NO',33.25,39.08,3200,4,860,140,341,'NO'
+'DHP','BOEING CANADA DHC-2 BEAVER',1,'PROPELLER','NO',48.00,30.25,5100,10,1800,143,733,''
+'DHB','BOEING CANADA DHC-2 TURBO BEAVER',1,'TURBOPROP','NO',48.00,35.25,5370,10,1800,157,750,'NO'
+'DHO','BOEING CANADA DHC-3 OTTER',1,'PROPELLER','NO',58.00,41.83,8000,10,2100,132,960,'NO'
+'DHT','BOEING CANADA DHC-6 TWIN OTTER',2,'TURBOPROP','NO',65.00,51.75,12500,20,4420,209,745,'NO'
+'DH7','BOEING CANADA DHC-7 DASH-7 PASSENGER',4,'TURBOPROP','NO',93.00,80.58,43000,50,15000,275,850,'YES'
+'DH8','BOEING CANADA DHC-8 DASH-8 (ALL SERIES)',2,'TURBOPROP','NO',84.00,75.00,0,32,0,300,691,''
+'707','BOEING 707 PASSENGER (ALL SERIES)',4,'JET','NO',130.83,145.08,258000,181,52000,615,6325,'YES'
+'70M','BOEING 707-320C MIXED CONFIGURATION',4,'JET','NO',145.75,152.91,336000,145,83447,615,5750,'YES'
+'727','BOEING 727 PASSENGER (ALL SERIES)',3,'JET','NO',108.00,133.16,170000,131,35900,622,3000,'YES'
+'72M','BOEING 727-100C/100QC MIXED CONFIGURATION',3,'JET','NO',108.00,133.16,160000,96,30500,600,0,'YES'
+'72S','BOEING 727-200 (ALL SERIES)',3,'JET','NO',108.00,153.16,191000,145,40670,622,2400,'YES'
+'737','BOEING 737 PASSENGER (ALL SERIES)',2,'JET','NO',93.00,94.00,111000,138,29093,577,1300,'YES'
+'73M','BOEING 737-200C/200QC MIXED CONFIGURATION',2,'JET','NO',93.00,100.16,125000,130,33561,573,1800,'YES'
+'73S','BOEING 737 PASSENGER (ALL 200/200C SERIES)',2,'JET','NO',93.00,100.16,120000,130,34050,577,2300,'YES'
+'733','BOEING 737-300',2,'JET','NO',94.75,105.58,135000,138,35500,550,2500,'YES'
+'74M','BOEING 747 MIXED CONFIGURATION (ALL SERIES)',4,'JET','YES',195.66,231.83,78500,238,165710,600,5500,'YES'
+'747','BOEING 747 PASSENGER (ALL SERIES)',4,'JET','YES',195.66,321.83,833000,452,134000,557,7500,'YES'
+'74L','BOEING 747SP',4,'JET','YES',195.66,184.75,700000,430,98000,564,6730,'YES'
+'757','BOEING 757-200 PASSENGER',2,'JET','NO',124.50,155.25,220000,224,38940,560,2440,'YES'
+'767','BOEING 767 (ALL SERIES)',2,'JET','YES',156.08,159.16,312000,290,69000,550,4500,'YES'
+'B11','BRITISH AEROSPACE (BAC) ONE-ELEVEN (ALL SERIES)',2,'JET','NO',88.50,93.50,78500,79,17600,550,1430,'YES'
+'VGP','BRITISH AEROSPACE (BAC-VICKERS) VANGUARD PASSENGER',4,'TURBOPROP','NO',118.00,122.87,146500,139,21500,405,2910,'YES'
+'VCV','BRITISH AEROSPACE (BAC-VICKERS) VISCOUNT (ALL SERIES)',4,'TURBOPROP','NO',93.70,85.66,72500,75,14500,352,1725,'YES'
+'HPH','BRITISH AEROSPACE (HANDLEY PAGE) HERALD',2,'TURBOPROP','NO',113.00,96.83,82000,74,12000,266,3150,'YES'
+'HPJ','BRITISH AEROSPACE (HANDLEY PAGE) JETSTREAM 1/200',2,'TURBOPROP','NO',52.00,47.08,12550,18,4100,250,1440,'YES'
+'DHH','BRITISH AEROSPACE (HAWKER SIDDELEY) HERON',4,'PROPELLER','NO',71.50,48.50,13500,17,2100,195,0,'NO'
+'TRD','BRITISH AEROSPACE (HAWKER SIDDELEY) TRIDENT (ALL SERIES)',3,'JET','NO',95.00,114.75,135500,103,24500,606,2700,'YES'
+'HS7','BRITISH AEROSPACE (HAWKER SIDDELEY) 748 PASSENGER',2,'TURBOPROP','NO',98.50,67.00,46500,56,11363,275,850,'YES'
+'J31','BRITISH AEROSPACE JETSTREAM 31',2,'TURBOPROP','NO',52.00,47.12,12566,18,0,282,1380,'YES'
+'141','BRITISH AEROSPACE 146-100',4,'JET','NO',86.41,85.83,74600,88,17277,460,1450,'YES'
+'142','BRITISH AEROSPACE 146-200 PASSENGER',4,'JET','NO',86.41,93.66,89500,100,21000,460,1450,'YES'
+'BNI','BRITTEN-NORMAN BN-2A/B ISLANDER/BN-2T TURBINE ISLANDER',2,'PROPELLER','NO',49.00,35.66,6300,10,2000,260,425,'NO'
+'BNT','BRITTEN-NORMAN BN-2A MK III TRISLANDER',3,'PROPELLER','NO',53.00,43.75,9350,18,4000,180,0,'NO'
+'CS2','CASA C-212/NUSANTARA NC-212 AVIOCAR',2,'TURBOPROP','NO',62.50,45.83,16427,28,6077,230,1400,'NO'
+'CNA','CESSNA (ALL SERIES)',1,'TURBOPROP','NO',0.00,0.00,0,0,0,0,0,'NO'
+'CN2','CESSNA STATIONAIR/TURBO STATIONAIR 6',1,'PROPELLER','NO',35.83,28.00,3600,7,1792,169,702,'NO'
+'CNT','CESSNA STATIONAIR 207/TURBO STATIONAIR 7/8',1,'PROPELLER','NO',35.83,31.75,3800,7,1729,185,581,'NO'
+'CN4','CESSNA 402/402 UTILILINER',2,'PROPELLER','NO',39.91,36.08,6300,8,2436,239,562,'NO'
+'CVR','CONVAIR (ALL SERIES)',2,'TURBOPROP','NO',105.33,79.16,54600,56,11200,350,1100,'YES'
+'CWC','CURTISS C-46 COMMANDO',2,'PROPELLER','NO',108.08,76.33,40000,60,12000,220,1600,'NO'
+'DAM','DASSAULT-BREGUET MERCURE',2,'JET','NO',100.25,114.25,120150,0,32850,574,1094,'YES'
+'DOS','DORNIER DO 28',2,'PROPELLER','NO',51.02,37.02,8852,15,3000,160,708,''
+'DO8','DORNIER 228 (ALL SERIES)',2,'TURBOPROP','NO',55.58,49.25,12570,19,6000,231,1065,'NO'
+'EMB','EMBRAER EMP-110 BANDEIRANTE',2,'TURBOPROP','NO',50.16,49.41,12500,19,5000,262,900,'NO'
+'EM2','EMBRAER EMP-120 BRASILIA',2,'TURBOPROP','NO',64.89,64.70,12295,30,0,288,628,'YES'
+'FK7','FAIRCHILD INDUSTRIES FH-227',2,'TURBOPROP','NO',95.16,83.08,43500,52,11500,294,1520,'YES'
+'SWM','FAIRCHILD (SWEARINGEN) METRO/MERLIN',2,'TURBOPROP','NO',46.25,59.33,12500,19,3950,294,2139,'YES'
+'F27','FOKKER F27 FRIENDSHIP/FAIRCHILD (ALL SERIES)',2,'TURBOPROP','NO',95.16,82.16,45000,56,13500,265,1450,'YES'
+'F28','FOKKER F28 FELLOWSHIP (ALL SERIES)',2,'JET','NO',82.25,96.16,73000,85,19623,523,1055,'YES'
+'CD2','GOVERNMENT AIRCRAFT FACTORIES N22B/N24A NOMAD',2,'TURBOPROP','NO',54.00,43.00,8500,16,3000,165,850,'NO'
+'GRA','GRUMMAN G-111 ALBATROSS G-111',2,'AMPHIBIAN','NO',96.66,61.25,31000,28,7965,160,1500,'NO'
+'GRG','GRUMMAN G-21 GOOSE',2,'AMPHIBIAN','NO',49.00,38.33,8000,10,2000,160,825,'NO'
+'GRM','GRUMMAN G-73 MALLARD',2,'AMPHIBIAN','NO',66.66,48.33,12750,10,1950,180,1245,'NO'
+'GRS','GULFSTREAM AEROSPACE (GRUMMAN) GULFSTREAM 1/1-C',2,'TURBOPROP','NO',78.33,63.75,36000,37,4300,345,2300,'YES'
+'IL4','ILYUSHIN IL14',2,'PROPELLER','NO',104.00,69.91,36380,24,4800,224,1250,'NO'
+'IL8','ILYUSHIN IL18',4,'TURBOPROP','NO',122.70,117.79,119000,125,30860,403,1860,'YES'
+'IL6','ILYUSHIN IL62/62M',4,'JET','NO',141.29,174.16,347224,186,50706,528,5716,'YES'
+'ILW','ILYUSHIN IL86',4,'JET','YES',157.68,197.54,454152,350,0,575,0,'YES'
+'LOM','LOCKHEED L188 ELECTRA MIXED CONFIGURATION',4,'TURBOPROP','NO',99.00,104.50,116000,0,0,390,2200,''
+'LOE','LOCKHEED L188 ELECTRA PASSENGER',4,'TURBOPROP','NO',99.00,104.54,116000,104,22000,405,2750,'YES'
+'L10','LOCKHEED L1011 (ALL SERIES)',3,'JET','YES',155.25,177.58,430000,400,95500,615,3450,'YES'
+'L15','LOCKHEED L1011-500 TRISTAR',3,'JET','YES',155.33,164.20,496000,330,115000,580,5998,'YES'
+'MR4','MARTIN 404',2,'PROPELLER','NO',93.25,74.58,44900,44,9500,255,900,'YES'
+'DC3','MCDONNELL DOUGLAS DC3/C47 DAKOTA PASSENGER',2,'PROPELLER','NO',95.00,64.50,25200,30,7380,207,1330,'NO'
+'DC4','MCDONNELL DOUGLAS DOUGLAS DC4/C-54 SKYMASTER PASSENGER',4,'PROPELLER','NO',117.50,93.91,73800,80,11440,230,2750,'NO'
+'DC6','MCDONNELL DOUGLAS DC6 (ALL SERIES)',4,'PROPELLER','NO',117.50,101.50,93200,80,12310,309,3070,'YES'
+'D8M','MCDONNELL DOUGLAS DC8 MIXED CONFIGURATION (ALL SEIRES)',4,'JET','NO',142.33,187.41,325000,259,66665,600,3700,'YES'
+'DC8','MCDONNELL DOUGLAS DC8 PASSENGER (ALL 20-50 SERIES)',4,'JET','NO',142.25,150.41,315000,176,34000,544,7010,'YES'
+'D8S','MCDONNELL DOUGLAS DC8 (ALL 60/70 SERIES)',4,'JET','NO',142.25,187.33,325000,259,66665,580,7150,'YES'
+'DC9','MCDONNELL DOUGLAS DC9 (ALL 10 & 20 SERIES)',2,'JET','NO',93.25,104.33,98000,90,20850,593,2200,'YES'
+'D95','MCDONNELL DOUGLAS DC9-50',2,'JET','NO',93.25,133.41,12200,139,32615,593,2550,'YES'
+'D10','MCDONNELL DOUGLAS DC10 (ALL SERIES)',3,'JET','YES',155.25,182.25,455000,380,98490,608,6350,'YES'
+'M80','MCDONNELL DOUGLAS (MD-80 SERIES)',2,'JET','NO',107.83,147.83,140000,172,0,579,3060,'YES'
+'MIH','MIL MI-8',2,'HELICOPTER','NO',50.20,108.85,26455,28,0,140,311,''
+'MU2','MITSUBISHI MU2/MARQUISE/SOLITARE',2,'TURBOPROP','NO',39.16,39.41,11575,8,0,347,1606,''
+'YS1','NAMC YS-11',2,'TURBOPROP','NO',105.00,86.25,51800,60,12550,292,1980,'YES'
+'PN6','PARTENAVIA P.68 VICTOR',2,'PROPELLER','NO',39.37,31.33,4387,7,0,185,1312,''
+'PL6','PILATUS PC-6 TURBO-PORTER',1,'TURBOPROP','NO',49.66,35.75,4850,0,0,151,644,''
+'PA6','PIPER AEROSTAR',2,'TURBOPROP','NO',34.16,54.75,5500,6,240,250,1400,'YES'
+'PAZ','PIPER APACHE/AZTEC',2,'PROPELLER','NO',37.33,31.16,5200,6,2151,206,1519,'NO'
+'PAC','PIPER CHEROKEE',1,'PROPELLER','NO',32.83,27.66,3400,7,1544,167,856,'NO'
+'PAH','PIPER NAVAJO/MOHAVE/CHIEFTAIN',2,'PROPELLER','NO',40.50,34.50,7000,8,0,254,1019,'NO'
+'PAS','PIPER SENECA',2,'PROPELLER','NO',38.91,28.50,4570,7,1747,219,1036,'NO'
+'PA1','PIPER T-1020/1040',2,'TURBOPROP','NO',41.08,36.66,9000,9,3800,250,900,'NO'
+'ACD','ROCKWELL COMMANDER (ALL SERIES)',2,'PROPELLER','NO',49.50,35.08,6750,7,2750,205,1220,'YES'
+'SF3','SAAB-FAIRCHILD 340',2,'TURBOPROP','NO',70.33,63.75,25020,34,0,300,920,'YES'
+'SA2','SAUNDERS ST-27',2,'TURBOPROP','NO',71.50,59.00,13500,23,0,230,0,'NO'
+'SHP','SHORTS SKYLINER',2,'TURBOPROP','NO',64.91,40.00,12500,19,4600,188,694,'YES'
+'SHS','SHORTS SKYVAN',2,'TURBOPROP','NO',64.91,40.08,12500,19,0,188,694,''
+'SH3','SHORTS 330 PASSENGER',2,'TURBOPROP','NO',74.66,58.00,22000,30,7500,218,1137,'NO'
+'SH6','SHORTS 360',2,'TURBOPROP','NO',74.83,70.83,26000,36,7500,244,1151,'NO'
+'S58','SIKORSKY S58T',1,'HELICOPTER','NO',56.00,47.25,13000,16,0,127,278,'NO'
+'S61','SIKORSKY S61',2,'HELICOPTER','NO',62.00,72.00,20500,30,5500,139,282,'NO'
+'TU3','TUPOLEV TU134',2,'JET','NO',95.16,112.71,98100,72,14300,546,1490,'YES'
+'TU5','TUPOLEV TU154',3,'JET','NO',123.20,157.14,198410,164,44090,605,3280,'YES'
+'WLH','WESTLAND 30',2,'HELICOPTER','NO',43.66,52.16,12350,21,0,0,100,''
+'YK4','YAKOVLEV YAK-40',3,'JET','NO',82.08,66.75,35270,40,5070,342,1240,'YES'
+'YK2','YAKOVLEV YAK-42',3,'JET','NO',112.20,119.35,114640,120,2000,510,621,'YES'
+'100','FOKKER 100',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'146','BRITISH AEROSPACE 146 (ALL SERIES)',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'310','AIRBUS INDUSTRIE A310 (ALL SERIES)',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'320','AIRBUS INDUSTRIE A320 (ALL SERIES)',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'734','BOEING 737-400',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'743','BOEING 737-300 PASSENGER',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'744','BOEING 747-400 PASSENGER',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'74E','BOEING 747-400 MIXED CONFIGURATION',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'763','BOEING 767-300/300ER',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'BE1','BEECHCRAFT 1900',0,'TURBOPROP','',0.00,0.00,0,0,0,0,0,''
+'BUS','BUS',0,'','',0.00,0.00,0,0,0,0,0,''
+'CNJ','CESSNA CITATION',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'D3M','DOUGLAS DC3/C-47 DAKOTA MIXED CONFIGURATION',0,'PROPELLER','',0.00,0.00,0,0,0,0,0,''
+'D9S','MCDONNELL DOUGLAS DC9 (ALL 30/40/50 & 80 SERIES)',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'DHM','BOEING CANADA DHC-7 DASH 7 MIXED CONFIGURATION',0,'TURBOPROP','',0.00,0.00,0,0,0,0,0,''
+'LMO','LIMOSINE',0,'','',0.00,0.00,0,0,0,0,0,''
+'M87','MCDONNELL DOUGLAS MD-87',0,'JET','',0.00,0.00,0,0,0,0,0,''
+'NDE','AEROSPATIALE AS 350 ECUREUIL/AS 355 ECUREUIL 2',1,'TURBOPROP','',0.00,0.00,0,0,0,0,0,''
+'PAG','PIPER (ALL SERIES)',0,'PROPELLER','',0.00,0.00,0,0,0,0,0,''
+'S76','SIKORSKY S76',1,'TURBOPROP','',0.00,0.00,0,0,0,0,0,''
diff --git a/sql-bench/Data/ATIS/airline.txt b/sql-bench/Data/ATIS/airline.txt
new file mode 100644
index 00000000..7e825a5c
--- /dev/null
+++ b/sql-bench/Data/ATIS/airline.txt
@@ -0,0 +1,314 @@
+'AA','AMERICAN AIRLINES',''
+'AC','AIR CANADA',''
+'AD','EXEC EXPRESS II,INC.',''
+'AF','AIR FRANCE',''
+'AG','ATLANTIC AIRWAYS LIMITED',''
+'AM','AEROMEXICO - AEROVIAS DE MEXICO S.A. DE C.V.',''
+'AP','ASPEN AIRWAYS,INC.',''
+'AQ','ALOHA AIRLINES INC.',''
+'AR','AEROLINEAS ARGENTINAS',''
+'AS','ALASKA AIRLINES',''
+'AT','ROYAL AIR MAROC',''
+'AV','AVIANCA',''
+'AY','FINNAIR',''
+'AZ','ALITALIA',''
+'BA','BRITISH AIRWAYS',''
+'BE','ENTERPRISE AIRLINES,INC.',''
+'BF','MARKAIR,INC.',''
+'BK','CHALKS/PARADISE ISLAND AIRLINES',''
+'BL','AIR BVI,LTD.',''
+'BW','BWIA INTERNATIONAL',''
+'CA','CAAC',''
+'CD','TRANS-PROVINCIAL AIRLINES LTD.',''
+'CH','BEMIDJI AIRLINES',''
+'CI','CHINA AIRLINES LTD.',''
+'CO','CONTINENTAL AIRLINES',''
+'CP','CANADIAN AIRLINES INTERNATIONAL LTD.',''
+'CS','AIR TORONTO',''
+'CT','MIDCONTINENT AIRLINES INC.',''
+'CU','CUBANA AIRLINES',''
+'CX','CATHAY PACIFIC AIRWAYS LTD.',''
+'DD','COMMAND AIRWAYS,INC.',''
+'DE','PRIME AIR,INC.',''
+'DF','AERO COACH AVIATION INTERNATIONAL,INC.',''
+'DL','DELTA AIR LINES,INC.',''
+'DO','DOMINICANA DE AVIACION',''
+'DQ','COASTAL AIR TRANSPORT',''
+'DV','NANTUCKET AIRLINES',''
+'EA','EASTERN AIR LINES,INC.',''
+'ED','CCAIR INC.',''
+'EI','AER LINGUS P.L.C.',''
+'EJ','NEW ENGLAND AIRLINES,INC.',''
+'EM','EMPIRE AIRWAYS',''
+'EU','EMPRESA ECUATORIANA DE AVIACION',''
+'EV','ATLANTIC SOUTHEAST AIRLINES,INC.',''
+'FC','CHAPARRAL AIRLINES,INC.',''
+'FH','MALL AIRWAYS INC.',''
+'FI','ICELANDAIR',''
+'FK','FLAMENCO AIRWAYS,INC.',''
+'FN','SFO HEICOPTER AIRLINES,INC.',''
+'FQ','AIR ARUBA',''
+'FX','EXPRESS AIR,INC.',''
+'FY','METROFLIGHT AIRLINES',''
+'GA','GARUDA INDONESIAN AIRWAYS',''
+'GM','AIR AMERICA',''
+'GQ','BIG SKY AIRLINES',''
+'GS','BAS AIRLINES',''
+'GU','AVIATECA S.A.',''
+'HA','HAWAIIAN AIR LINES',''
+'HD','NEW YORK HELICOPTER CORPORATION',''
+'HE','KEYSTONE AIR SERVICE LTD.',''
+'HG','HARBOR AIRLINES,INC',''
+'HI','GRAND CANYON HELICOPTERS',''
+'HP','AMERICA WEST AIRLINES,INC.',''
+'HQ','BUSINESS EXPRESS',''
+'HY','METRO AIRLINES',''
+'IB','IBERIA',''
+'IF','INTERFUG',''
+'IH','CHANNEL FLYING,INC.','SERVICE TEMPORARILY SUSPENDED'
+'IN','EAST HAMPTON AIRE',''
+'IU','HELITRANS AIR SERVICE,INC.',''
+'JB','HELIJET AIRWAYS',''
+'JC','ROCKY MOUNTAIN AIRWAYS',''
+'JF','L.A.B. FYING SERVICE,INC.','CARRIER PERFORMS SEASONAL SERVICE ONLY'
+'JI','JET EXPRESS',''
+'JL','JAPAN AIRLINES',''
+'JM','AIR JAMAICA LIMITED',''
+'JO','HOLIDAY AIRLINES,INC.',''
+'JQ','TRANS-JAMAICAN AIRLINES LTD.',''
+'JR','AERO CALIFORNIA',''
+'JT','IOWA AIRWAYS,INC.',''
+'JU','YUGOSLAV AIRLINES (JAT)',''
+'JV','BEARSKIN LAKE AIR SERVICE LIMITED',''
+'KE','KOREAN AIR',''
+'KI','TIME AIR LTD.',''
+'KL','KLM-ROYAL DUTCH AIRLINES',''
+'KS','PENINSULA AIRWAYS,INC.',''
+'KW','CARNIVAL AIR LINES',''
+'KX','CAYMAN AIRWAYS,LTD.',''
+'LA','LAN CHILE S.A.',''
+'LH','LUFTHANSA GERMAN AIRLINES',''
+'LI','LIAT (1974) LTD.',''
+'LM','ALM-ANTILLEAN AIRLINES',''
+'LR','LACSA',''
+'LS','ILIAMNA AIR TAXI,INC.',''
+'LV','LAV-LINEA AEROPOSTAL VENEZOLANA',''
+'LW','AIR NEVADA',''
+'LY','EL AL ISRAEL AIRLINES',''
+'MG','MGM GRAND AIR,INC.',''
+'MH','MALAYSIAN AIRLINE SYSTEM',''
+'ML','MIDWAY AIRLINES,INC.',''
+'MO','CALM AIR INTERNATIONAL LTD.',''
+'MQ','SIMMONS AIRLINES',''
+'MX','MEXICANA DE AVIACION',''
+'NA','EXECUTIVE AIR CHARTER',''
+'ND','INTAIR',''
+'NN','C.A.A.A.-AIR MARTINIQUE',''
+'NQ','CUMBERLAND AIRLINES',''
+'NR','NORONTAIR',''
+'NV','NORTHWEST TERRITORIAL AIRWAYS,LTD.',''
+'NW','NORTHWEST AIRLINES,INC.',''
+'OA','OLYMPIC AIRWAYS',''
+'OB','TEMPUS AIR LTD.','CARRIER PERFORMS SEASONAL SERVICE ONLY'
+'OE','WESTAIR AIRLINES',''
+'OG','AIR GUADELOUPE',''
+'OH','COMAIR,INC.','NATL AIR TRANSPORTATION ASSOC,INC.'
+'OJ','AIR ST.-BARTHELEMY',''
+'OK','CZECHOSLOVAK AIRLINES',''
+'OO','SKY WEST AIRLINES',''
+'OQ','AEROLIBERTAD S.A. DE C.V.',''
+'OT','EVERGREEN ALASKA',''
+'OU','CITY EXPRESS',''
+'OY','SUNAIRE',''
+'PA','PAN AMERICAN WORLD AIRWAYS,INC.',''
+'PD','PEM AIR LIMITED',''
+'PK','PAKISTAN INTERNATIONAL AIRLINES',''
+'PN','COASTAL AIRWAYS',''
+'PQ','HOLIDAY AIRWAYS','SERVICE TEMPORARILY SUSPENDED'
+'PR','PHILIPPINE AIRLINES,INC.',''
+'PS','CENTRAL STATES AIRLINES,INC.',''
+'PT','PBA-PROVINCETOWN-BOSTON AIRLINE,INC.',''
+'PV','PANORAMA AIR',''
+'PY','SURINAM AIRWAYS LTD.',''
+'QA','AERO CARIBE',''
+'QB','INTER-QUEBEC',''
+'QD','GRAND AIRWAYS,INC.',''
+'QF','QANTAS AIRWAYS LTD.',''
+'QO','BAR HARBOR AIRLINES',''
+'QQ','DRUMMOND ISLAND AIR','CARRIER PERFORMS SEASONAL SERVICE ONLY'
+'QR','AIR SATELLITE,INC.',''
+'QS','PROPHETER AVIATION',''
+'QW','TURKS AND CAICOS NATIONAL AIRLINE',''
+'QX','HORIZON AIR',''
+'QY','AERO VIRGIN ISLANDS CORP',''
+'RG','VARIG,S.A.',''
+'RH','REGAL BAHAMAS INTERNATIONAL AIRLINES',''
+'RJ','ROYAL JORDANIAN',''
+'RM','WINGS WEST AIRLINE,INC.',''
+'RP','PRECISION AIRLINES',''
+'RV','REEVE ALEUTIAN AIRWAYS,INC.',''
+'SE','WINGS OF ALASKA',''
+'SK','SCANDINAVIAN AIRLINES SYSTEM',''
+'SN','SABENA BELGIAN WORLD AIRLINES',''
+'SQ','SINGAPORE AIRLINES',''
+'SR','SWISSAIR',''
+'SS','METRO AIRLINES NORTHEAST INC.',''
+'SU','AEROFLOT-SOVIET AIRLINES',''
+'SV','SAUDI ARABIAN AIRLINES',''
+'SX','CHRISTMAN AIR SYSTEM',''
+'TB','TRUMP SHUTTLE,INC.',''
+'TE','AIR NEW ZEALAND-INTERNATIONAL',''
+'TG','THAI AIRWAYS INTERNATIONAL,LTD.',''
+'TO','ALKAN AIR LTD.',''
+'TP','TAP AIR PORTUGAL',''
+'TV','HAITI TRANS AIR S.A.',''
+'TW','TRANS WORLD AIRLINES,INC.',''
+'TZ','AMERICAN TRANS AIR',''
+'UA','UNITED AIRLINES',''
+'UC','LADECO-LINEA AEREA DEL COBRE',''
+'UE','AIR LA',''
+'UJ','AIR SEDONA',''
+'UO','DIRECT AIR,INC.','NATL AIR TRANSPORTATION ASSOC,INC.'
+'UP','BAHAMASAIR',''
+'US','USAIR',''
+'UT','U.T.A. - UNION DE TRANSPORTS AERIENS',''
+'UW','PERIMETER AIRLINES (INLAND) LTD.',''
+'VA','VIASA',''
+'VI','VIEQUES AIR LINK,INC.',''
+'VW','TRANSPORTES AEROMAR,S.A. DE C.V.',''
+'WD','WARDAIR',''
+'WJ','LABRADOR AIRWAYS,LTD.',''
+'WM','WINDWARD ISLAND AIRWAYS INTERNATIONAL N.V.',''
+'WN','SOUTHWEST AIRLINES',''
+'WP','ALOHA ISLANDAIR,INC.',''
+'WQ','WINGS AIRWAYS','NATL AIR TRANSPORTATION ASSOC,INC.'
+'WS','WESTATES AIRLINES','SERVICE TEMPORARILY SUSPENDED'
+'WV','MIDWEST AVIATION',''
+'XE','SOUTHCENTRAL AIR,INC.',''
+'XJ','MESABA AVIATION',''
+'XK','RESORT COMMUTER,INC.',''
+'XQ','ACTION AIRLINES',''
+'XV','PRESIDENTIAL AIRWAYS,INC.',''
+'XW','WALKER\'S INTERNATIONAL',''
+'XY','RYAN AIR,INC.',''
+'YE','GRAND CANYON AIRLINES,INC.','CARRIER PERFORMS SEASONAL SERVICE ONLY'
+'YI','AIR SUNSHINE INC.','NATL AIR TRANSPORTATION ASSOC,INC.'
+'YL','LONG ISLAND AIRLINES',''
+'YN','AIR CREEBEC INC.',''
+'YR','SCENIC AIRLINES INC.','NATL AIR TRANSPORTATION ASSOC,INC.'
+'YS','SAN JUAN AIRLINES',''
+'YU','AEROLINEAS DOMINICANAS,S.A. - DOMINAIR',''
+'YV','MESA AIRLINES',''
+'YW','STATESWEST AIRLINES,INC.',''
+'YX','MIDWEST EXPRESS AIRLINES,INC.',''
+'ZD','ROSS AVIATION,INC.','NATL AIR TRANSPORTATION ASSOC,INC'
+'ZE','AIR CARIBE INTERNATIONAL,INC.',''
+'ZK','GREAT LAKES AVIATION,LTD.',''
+'ZO','MOHAWK AIRLINES',''
+'ZP','VIRGIN AIR,INC.',''
+'ZS','HISPANIOLA AIRWAYS C. POR A.',''
+'ZV','AIR MIDWEST',''
+'ZW','AIR WISCONSIN',''
+'ZX','AIR BC,LTD.',''
+'2E','HERMENS/MARKAIR EXPRESS',''
+'2F','FRONTIER FLYING SERVICE',''
+'2P','PRAIRIE FLYING SERVICE (1976) LTD.',''
+'2Q','AQUILA AIR LTD',''
+'2V','NORTHEAST EXPRESS REGIONAL AIRLINES','NATL AIR TRANSPORTATION ASSOC,INC.'
+'2Z','SERVICIOS AEROS LITORAL S.A. DE C.V.',''
+'3A','ALLIANCE AIRLINES',''
+'3C','CAMAI AIR',''
+'3G','VIRGIN ISLANDS SEAPLANE SHUTTLE','SERVICE TEMPORARILY SUSPENDED'
+'3H','AIR INUIT (1985) LTD.',''
+'3L','AIR-LIFT ASSOCIATES,INC',''
+'3N','PAC AIR',''
+'3R','AIR MOLOKAI - TROPIC AIRLINES','SERVICE TEMPORARILY SUSPENDED'
+'3S','SHUSWAP AIR',''
+'3V','WAGLISLA AIR INC.',''
+'4A','AIRWAYS INTERNATIONAL,INC.',''
+'4B','OLSON AIR SERVICE,INC.',''
+'4E','TANANA AIR SERVICE',''
+'4F','FRONTIER AIR',''
+'4G','INLET AIRLINES,INC.',''
+'4K','KENN BOREK AIR LTD.',''
+'4L','AIR ALMA INC.',''
+'4N','AIR NORTH',''
+'4T','PACIFIC RIM AIRLINES LTD.',''
+'4V','VOYAGEUR AIRWAYS LTD.',''
+'4W','WRANGELL AIR SERVICE',''
+'4Y','YUTE AIR ALASKA,INC.','SERVICE TEMPORARILY SUSPENDED'
+'5A','ALPINE AVIATION,INC.',''
+'5B','BELLAIR INC.',''
+'5E','HUB EXPRESS,INC.',''
+'5K','KENMORE AIR HARBOR,INC.',''
+'5L','LAREDO AIR,INC.',''
+'5N','SEAGULL AIR SERVICE,INC.','SERVICE TEMPORARILY SUSPENDED'
+'5P','PTARMIGAN AIRWAYS LTD',''
+'5S','AIRSPEED AVIATION INC.',''
+'5T','AVIACION DEL NOROESTE',''
+'5U','SKAGWAY AIR SERVICE,INC.',''
+'5V','AVIAIR AVIATION (1984) LTD.',''
+'5W','CHARTAIR,INC.',''
+'6A','PANAMA AIRWAYS',''
+'6B','BAXTER AVIATION',''
+'6C','CAPE SMYTHE AIR SERVICE,INC.',''
+'6D','ALASKA ISLAND AIR,INC.',''
+'6E','BURRARD AIR LTD.',''
+'6G','LAS VEGAS AIRLINES',''
+'6J','SOUTHERN JERSEY AIRWAYS,INC.',''
+'6K','KEEWATIN AIR LIMITED',''
+'6L','AKLAK AIR LTD.',''
+'6M','40-MILE AIR,LTD.',''
+'6P','PROPAIR INC.',''
+'6Q','BARROW AIR,INC.',''
+'6S','KETCHIKAN AIR SERVICE,INC.',''
+'6T','TYEE AIRWAYS LIMITED',''
+'6V','AIR VEGAS,INC.',''
+'6W','WILDERNESS AIRLINE (1975) LTD.',''
+'7A','HAINES AIRWAYS,INC.',''
+'7D','TRUMP AIR',''
+'7F','FIRST AIR',''
+'7G','GULFSTREAM AIRLINES,INC.','NATL AIR TRANSPORTATION ASSOC,INC.'
+'7H','ERA AVIATION',''
+'7K','LARRY\'S FLYING SERVICE,INC',''
+'7L','LAKE UNION AIR SERVICE',''
+'7N','NORTHLAND AIR MANITOBA LIMITED',''
+'7Q','CALIFORNIA AIR SHUTTLE',''
+'7R','GCS AIR SERVICE,INC.',''
+'7T','TRANS COTE INC.',''
+'7V','ALPHA AIR',''
+'7W','AIR SASK AVIATION',''
+'8B','BAKER AVIATION,INC.',''
+'8D','SKYLINK AIRLINES','SERVICE TEMPORARILY SUSPENDED'
+'8E','BERING AIR,INC.',''
+'8F','WILBUR\'S INC.',''
+'8G','GP EXPRESS AIRLINES,INC.',''
+'8H','HARBOR AIR SERVICE',''
+'8K','AIR MUSKOKA',''
+'8L','SERVICIO AEREO LEO LOPEZ',''
+'8M','APEX AIRLINES',''
+'8N','NASHVILLE EAGLE,INC.',''
+'8P','POCONO AIRLINES',''
+'8R','WRA,INC.',''
+'8T','TRI AIR,INC.','SERVICE TEMPORARILY SUSPENDED'
+'8V','WRIGHT AIR SERVICE,INC.',''
+'9A','AIR ATLANTIC LTD.',''
+'9C','ICARUS FLYING SERVICE,LTD.',''
+'9D','DELTA AIR CHARTER LTD.',''
+'9E','EXPRESS AIRLINES I,INC.',''
+'9F','SKYCRAFT AIR TRANSPORT INC.',''
+'9K','CAPE AIR',''
+'9M','CENTRAL MOUNTAIN AIR LTD.',''
+'9N','TRANS STATES AIRLINES,INC.',''
+'9Q','TAQUAN AIR SERVICE,INC.',''
+'9S','SABOURIN LAKE AIRWAYS LTD.',''
+'9V','AIR SCHEFFERVILLE','CARRIER PERFORMS SEASONAL SERVICE ONLY'
+'GD','AIR SOUTH,INC.','NATL AIR TRANSPORTATION ASSOC,INC.'
+'VL','SUN PACIFIC AIRLINES,INC.',''
+'3D','EDGARTOWN AIR,INC.',''
+'4Q','TRANS NORTH AVIATION,LTD.','CARRIER PERFORMS SEASONAL SERVICE ONLY'
+'4R','RAVEN AIR,INC.',''
+'4X','L\'EXPRESS AIRLINES',''
+'5C','CONQUEST AIRLINES CORP.',''
+'7C','SIERRA VISTA AVIATION','SERVICE TEMPORARILY SUSPENDED'
+'MC','MILITARY AIRLIFT COMMAND (MAC)-U.S. DEPARTMENT OF THE AIR FORCE',''
diff --git a/sql-bench/Data/ATIS/airport.txt b/sql-bench/Data/ATIS/airport.txt
new file mode 100644
index 00000000..9da49b2b
--- /dev/null
+++ b/sql-bench/Data/ATIS/airport.txt
@@ -0,0 +1,9 @@
+'ATL','WILLIAM B. HARTSFIELD','ATLANTA,GEORGIA','GA','USA','EST'
+'BOS','LOGAN INTERNATIONAL','BOSTON,MASSACHUSETTS','MA','USA','EST'
+'BWI','BALTIMORE/WASHINGTON INTERNATIONAL','BALTIMORE,MARYLAND','MD','USA','EST'
+'DEN','STAPLETON INTERNATIONAL','DENVER,COLORADO','CO','USA','MST'
+'DFW','DALLAS/FORT WORTH INTERNATIONAL','DALLAS/FT. WORTH,TEXAS','TX','USA','CST'
+'OAK','METROPOLITAN OAKLAND INTERNATIONAL','OAKLAND,CALIFORNIA','CA','USA','PST'
+'PHL','PHILADELPHIA INTERNATIONAL','PHILADELPHIA PA/WILM\'TON,DE','PA','USA','EST'
+'PIT','GREATER PITTSBURGH','PITTSBURGH,PENNSYLVANIA','PA','USA','EST'
+'SFO','SAN FRANCISCO INTERNATIONAL','SAN FRANCISCO,CALIFORNIA','CA','USA','PST'
diff --git a/sql-bench/Data/ATIS/airport_service.txt b/sql-bench/Data/ATIS/airport_service.txt
new file mode 100644
index 00000000..c38aa186
--- /dev/null
+++ b/sql-bench/Data/ATIS/airport_service.txt
@@ -0,0 +1,14 @@
+'MATL','ATL',9.0,'S',45
+'BBOS','BOS',3.0,'NE',30
+'DDFW','DFW',13.0,'NW',70
+'FDFW','DFW',17.0,'E',55
+'DDEN','DEN',6.5,'NE',30
+'PPHL','PHL',7.0,'SW',35
+'PPIT','PIT',17.0,'W',55
+'OOAK','OAK',10.0,'SE',15
+'OOAK','SFO',24.0,'SW',60
+'SSFO','SFO',8.0,'SE',30
+'SSFO','OAK',18.0,'SE',60
+'WWAS','BWI',32.0,'NE',50
+'BBWI','BWI',10.0,'S',25
+'','',0.0,'',0
diff --git a/sql-bench/Data/ATIS/city.txt b/sql-bench/Data/ATIS/city.txt
new file mode 100644
index 00000000..eb826a37
--- /dev/null
+++ b/sql-bench/Data/ATIS/city.txt
@@ -0,0 +1,11 @@
+'MATL','ATLANTA','GA','USA','EST'
+'BBOS','BOSTON','MA','USA','EST'
+'DDFW','DALLAS','TX','USA','CST'
+'FDFW','FORT WORTH','TX','USA','CST'
+'DDEN','DENVER','CO','USA','MST'
+'PPHL','PHILADELPHIA','PA','USA','EST'
+'PPIT','PITTSBURGH','PA','USA','EST'
+'SSFO','SAN FRANCISCO','CA','USA','PST'
+'OOAK','OAKLAND','CA','USA','PST'
+'WWAS','WASHINGTON','DC','USA','EST'
+'BBWI','BALTIMORE','MD','USA','EST'
diff --git a/sql-bench/Data/ATIS/class_of_service.txt b/sql-bench/Data/ATIS/class_of_service.txt
new file mode 100644
index 00000000..ab9b9c48
--- /dev/null
+++ b/sql-bench/Data/ATIS/class_of_service.txt
@@ -0,0 +1,27 @@
+'R',1,'SUPERSONIC AIRCRAFT'
+'P',2,'FIRST CLASS PREMIUM'
+'F',3,'FIRST CLASS'
+'A',4,'FIRST CLASS DISCOUNTED'
+'J',5,'BUSINESS CLASS PREMIUM'
+'C',6,'BUSINESS CLASS'
+'D',7,'BUSINESS CLASS DISCOUNTED'
+'S',8,'STANDARD CLASS'
+'W',9,'COACH ECONOMY CLASS PREMIUM'
+'FN',10,'FIRST CLASS NIGHT SERVICE'
+'Y',11,'COACH ECONOMY CLASS'
+'CN',12,'BUSINESS CLASS NIGHT SERVICE'
+'YN',13,'COACH ECONOMY CLASS NIGHT SERVICE'
+'B',14,'COACH ECONOMY CLASS DISCOUNTED'
+'H',15,'COACH ECONOMY CLASS DISCOUNTED'
+'Q',16,'COACH ECONOMY CLASS DISCOUNTED'
+'M',17,'COACH ECONOMY CLASS DISCOUNTED'
+'T',18,'COACH ECONOMY CLASS DISCOUNTED'
+'K',19,'THRIFT ECONOMY CLASS'
+'L',20,'THRIFT ECONOMY CLASS DISCOUNTED'
+'V',21,'THRIFT ECONOMY CLASS DISCOUNTED'
+'BN',22,'COACH ECONOMY CLASS DISCOUNTED NIGHT SERVICE'
+'QN',23,'COACH ECONOMY CLASS DISCOUNTED NIGHT SERVICE'
+'KN',24,'THRIFT ECONOMY CLASS DISCOUNTED NIGHT SERVICE'
+'VN',25,'THRIFT ECONOMY CLASS DISCOUNTED NIGHT SERVICE'
+'U',26,'SHUTTLE SERVICE (NO RESERVATION NEEDED - SEAT GUARANTEED)'
+'E',27,'SHUTTLE SERVICE (NO RESERVATION ALLOWED - SEAT TO BE CONFIRMED AT CHECK-IN)'
diff --git a/sql-bench/Data/ATIS/code_description.txt b/sql-bench/Data/ATIS/code_description.txt
new file mode 100644
index 00000000..d832a21b
--- /dev/null
+++ b/sql-bench/Data/ATIS/code_description.txt
@@ -0,0 +1,15 @@
+'-','A DASH IN A DAY CODE POSITION INDICATES NON-OPERATION ON THAT DAY'
+'AP','ADVANCE PURCHASE EXCURSION FARE'
+'CAD','CANADIAN DOLLARS'
+'EX','EXCURSION FARE'
+'H','HIGHEST LEVEL OF FARE HAVING MORE THAN ONE SEASONAL LEVEL'
+'J','THIRD LEVEL OF FARE HAVING MORE THAN THREE SEASONAL LEVELS'
+'K','SECOND LEVEL OF A FARE HAVING MORE THAN TWO SEASONAL LEVELS'
+'L','LOWEST LEVEL OF FARE HAVING MORE THAN ONE SEASONAL LEVEL'
+'MEP','MEXICAN PESOS'
+'O','SECOND LEVEL OF A FARE HAVING MORE THAN TWO SEASONAL LEVELS'
+'N','NIGHT SERVICE'
+'VU','VISIT USA FARE'
+'W','WHEN USED AS PART OF A FARE CLASS SUCH AS YW,INDICATES WEEKEND APPLICATION.'
+'X','WHEN USED AS PART OF A FARE CLASS SUCH AS YX,INDICATES WEEKDAY APPLICATION.'
+'U.S.','48 CONTIGUOUS STATES (NOT INCLUDING ALASKA AND HAWAII) UNLESS OTHERWISE NOTED.'
diff --git a/sql-bench/Data/ATIS/compound_class.txt b/sql-bench/Data/ATIS/compound_class.txt
new file mode 100644
index 00000000..86c0df5b
--- /dev/null
+++ b/sql-bench/Data/ATIS/compound_class.txt
@@ -0,0 +1,149 @@
+'A','A','FIRST','NO','NO','YES','NO','NONE','1234567'
+'AH','A','FIRST','NO','NO','YES','NO','HIGH','1234567'
+'AJ','A','FIRST','NO','NO','YES','NO','MID','1234567'
+'AL','A','FIRST','NO','NO','YES','NO','LOW','1234567'
+'B','B','COACH','NO','YES','YES','NO','NONE','1234567'
+'BH','B','COACH','NO','YES','YES','NO','HIGH','1234567'
+'BHW','B','COACH','NO','YES','YES','NO','HIGH','-----67'
+'BHX','B','COACH','NO','YES','YES','NO','HIGH','12345--'
+'BL','B','COACH','NO','YES','YES','NO','LOW','1234567'
+'BLW','B','COACH','NO','YES','YES','NO','LOW','-----67'
+'BLX','B','COACH','NO','YES','YES','NO','LOW','12345--'
+'BN','BN','COACH','NO','YES','YES','YES','NONE','1234567'
+'BO','B','COACH','NO','YES','YES','NO','MID','1234567'
+'BOW','B','COACH','NO','YES','YES','NO','MID','-----67'
+'BOX','B','COACH','NO','YES','YES','NO','MID','12345--'
+'BW','B','COACH','NO','YES','YES','NO','NONE','-----67'
+'BX','B','COACH','NO','YES','YES','NO','NONE','12345--'
+'C','C','BUSINESS','NO','NO','NO','NO','NONE','1234567'
+'CH','C','BUSINESS','NO','NO','NO','NO','HIGH','1234567'
+'CHW','C','BUSINESS','NO','NO','NO','NO','HIGH','-----67'
+'CHX','C','BUSINESS','NO','NO','NO','NO','HIGH','12345--'
+'CL','C','BUSINESS','NO','NO','NO','NO','LOW','1234567'
+'CLW','C','BUSINESS','NO','NO','NO','NO','LOW','-----67'
+'CLX','C','BUSINESS','NO','NO','NO','NO','LOW','12345--'
+'CN','CN','BUSINESS','NO','NO','NO','YES','NONE','1234567'
+'CO','C','BUSINESS','NO','NO','NO','NO','MID','1234567'
+'CW','C','BUSINESS','NO','NO','NO','NO','NONE','-----67'
+'CX','C','BUSINESS','NO','NO','NO','NO','NONE','12345--'
+'D','D','BUSINESS','NO','NO','YES','NO','NONE','1234567'
+'F','F','FIRST','NO','NO','NO','NO','NONE','1234567'
+'FH','F','FIRST','NO','NO','NO','NO','HIGH','1234567'
+'FHW','F','FIRST','NO','NO','NO','NO','HIGH','-----67'
+'FHX','F','FIRST','NO','NO','NO','NO','HIGH','12345--'
+'FL','F','FIRST','NO','NO','NO','NO','LOW','1234567'
+'FLW','F','FIRST','NO','NO','NO','NO','LOW','-----67'
+'FLX','F','FIRST','NO','NO','NO','NO','LOW','12345--'
+'FN','FN','FIRST','NO','NO','NO','YES','NONE','1234567'
+'FO','F','FIRST','NO','NO','NO','NO','MID','1234567'
+'FW','F','FIRST','NO','NO','NO','NO','NONE','-----67'
+'FX','F','FIRST','NO','NO','NO','NO','NONE','12345--'
+'H','H','COACH','NO','YES','YES','NO','NONE','1234567'
+'HH','H','COACH','NO','YES','YES','NO','HIGH','1234567'
+'HHW','H','COACH','NO','YES','YES','NO','HIGH','-----67'
+'HHX','H','COACH','NO','YES','YES','NO','HIGH','12345--'
+'HK','H','COACH','NO','YES','YES','NO','MID','1234567'
+'HKW','H','COACH','NO','YES','YES','NO','MID','-----67'
+'HKX','H','COACH','NO','YES','YES','NO','MID','12345--'
+'HL','H','COACH','NO','YES','YES','NO','LOW','1234567'
+'HLW','H','COACH','NO','YES','YES','NO','LOW','-----67'
+'HLX','H','COACH','NO','YES','YES','NO','LOW','12345--'
+'HO','H','COACH','NO','YES','YES','NO','MID','1234567'
+'HOW','H','COACH','NO','YES','YES','NO','MID','-----67'
+'HOX','H','COACH','NO','YES','YES','NO','MID','12345--'
+'HW','H','COACH','NO','YES','YES','NO','NONE','-----67'
+'HX','H','COACH','NO','YES','YES','NO','NONE','12345--'
+'J','J','BUSINESS','YES','NO','NO','NO','NONE','1234567'
+'JH','J','BUSINESS','YES','NO','NO','NO','HIGH','1234567'
+'JK','J','BUSINESS','YES','NO','NO','NO','MID','1234567'
+'JL','J','BUSINESS','YES','NO','NO','NO','LOW','1234567'
+'JO','J','BUSINESS','YES','NO','NO','NO','MID','1234567'
+'K','K','THRIFT','NO','YES','NO','NO','NONE','1234567'
+'KH','K','THRIFT','NO','YES','NO','NO','HIGH','1234567'
+'KHW','K','THRIFT','NO','YES','NO','NO','HIGH','-----67'
+'KHX','K','THRIFT','NO','YES','NO','NO','HIGH','12345--'
+'KL','K','THRIFT','NO','YES','NO','NO','LOW','1234567'
+'KLW','K','THRIFT','NO','YES','NO','NO','LOW','-----67'
+'KLX','K','THRIFT','NO','YES','NO','NO','LOW','12345--'
+'KN','KN','THRIFT','NO','YES','YES','YES','NONE','1234567'
+'KO','K','THRIFT','NO','YES','NO','NO','MID','1234567'
+'KW','K','THRIFT','NO','YES','NO','NO','NONE','-----67'
+'KX','K','THRIFT','NO','YES','NO','NO','NONE','12345--'
+'L','L','THRIFT','NO','YES','YES','NO','NONE','1234567'
+'LH','L','THRIFT','NO','YES','YES','NO','HIGH','1234567'
+'LHW','L','THRIFT','NO','YES','YES','NO','HIGH','-----67'
+'LHX','L','THRIFT','NO','YES','YES','NO','HIGH','12345--'
+'LL','L','THRIFT','NO','YES','YES','NO','LOW','1234567'
+'LLW','L','THRIFT','NO','YES','YES','NO','LOW','-----67'
+'LLX','L','THRIFT','NO','YES','YES','NO','LOW','12345--'
+'LO','L','THRIFT','NO','YES','YES','NO','MID','1234567'
+'LOW','L','THRIFT','NO','YES','YES','NO','MID','-----67'
+'LOX','L','THRIFT','NO','YES','YES','NO','MID','12345--'
+'LW','L','THRIFT','NO','YES','YES','NO','NONE','-----67'
+'LX','L','THRIFT','NO','YES','YES','NO','NONE','12345--'
+'M','M','COACH','NO','YES','YES','NO','NONE','1234567'
+'MH','M','COACH','NO','YES','YES','NO','HIGH','1234567'
+'MHW','M','COACH','NO','YES','YES','NO','HIGH','-----67'
+'MHX','M','COACH','NO','YES','YES','NO','HIGH','12345--'
+'MKW','M','COACH','NO','YES','YES','NO','MID','-----67'
+'MKX','M','COACH','NO','YES','YES','NO','MID','12345--'
+'ML','M','COACH','NO','YES','YES','NO','LOW','1234567'
+'MLW','M','COACH','NO','YES','YES','NO','LOW','-----67'
+'MLX','M','COACH','NO','YES','YES','NO','LOW','12345--'
+'MO','M','COACH','NO','YES','YES','NO','MID','1234567'
+'MOW','M','COACH','NO','YES','YES','NO','MID','-----67'
+'MOX','M','COACH','NO','YES','YES','NO','MID','12345--'
+'MW','M','COACH','NO','YES','YES','NO','NONE','-----67'
+'MX','M','COACH','NO','YES','YES','NO','NONE','12345--'
+'P','P','FIRST','YES','NO','NO','NO','NONE','1234567'
+'Q','Q','COACH','NO','YES','YES','NO','NONE','1234567'
+'QH','Q','COACH','NO','YES','YES','NO','HIGH','1234567'
+'QHW','Q','COACH','NO','YES','YES','NO','HIGH','-----67'
+'QHX','Q','COACH','NO','YES','YES','NO','HIGH','12345--'
+'QL','Q','COACH','NO','YES','YES','NO','LOW','1234567'
+'QLW','Q','COACH','NO','YES','YES','NO','LOW','-----67'
+'QLX','Q','COACH','NO','YES','YES','NO','LOW','12345--'
+'QN','QN','COACH','NO','YES','YES','YES','NONE','1234567'
+'QO','Q','COACH','NO','YES','YES','NO','MID','1234567'
+'QOW','Q','COACH','NO','YES','YES','NO','MID','-----67'
+'QOX','Q','COACH','NO','YES','YES','NO','MID','12345--'
+'QW','Q','COACH','NO','YES','YES','NO','NONE','-----67'
+'QX','Q','COACH','NO','YES','YES','NO','NONE','12345--'
+'R','R','SUPERSONIC','NO','NO','NO','NO','NONE','1234567'
+'S','S','STANDARD','NO','NO','NO','NO','NONE','1234567'
+'SH','S','STANDARD','NO','NO','NO','NO','HIGH','1234567'
+'SL','S','STANDARD','NO','NO','NO','NO','LOW','1234567'
+'T','T','COACH','NO','YES','YES','NO','NONE','1234567'
+'TH','T','COACH','NO','YES','YES','NO','HIGH','1234567'
+'TL','T','COACH','NO','YES','YES','NO','LOW','1234567'
+'TO','T','COACH','NO','YES','YES','NO','MID','1234567'
+'V','V','THRIFT','NO','YES','YES','NO','NONE','1234567'
+'VH','V','THRIFT','NO','YES','YES','NO','HIGH','1234567'
+'VHW','V','THRIFT','NO','YES','YES','NO','HIGH','-----67'
+'VHX','V','THRIFT','NO','YES','YES','NO','HIGH','12345--'
+'VK','V','THRIFT','NO','YES','YES','NO','MID','1234567'
+'VL','V','THRIFT','NO','YES','YES','NO','LOW','1234567'
+'VLW','V','THRIFT','NO','YES','YES','NO','LOW','-----67'
+'VLX','V','THRIFT','NO','YES','YES','NO','LOW','12345--'
+'VO','V','THRIFT','NO','YES','YES','NO','MID','1234567'
+'VOW','V','THRIFT','NO','YES','YES','NO','MID','-----67'
+'VOX','V','THRIFT','NO','YES','YES','NO','MID','12345--'
+'VW','V','THRIFT','NO','YES','YES','NO','NONE','-----67'
+'VX','V','THRIFT','NO','YES','YES','NO','NONE','12345--'
+'Y','Y','COACH','NO','YES','NO','NO','NONE','1234567'
+'YH','Y','COACH','NO','YES','NO','NO','HIGH','1234567'
+'YHW','Y','COACH','NO','YES','NO','NO','HIGH','-----67'
+'YHX','Y','COACH','NO','YES','NO','NO','HIGH','12345--'
+'YJ','Y','COACH','NO','YES','NO','NO','MID','1234567'
+'YJW','Y','COACH','NO','YES','NO','NO','MID','-----67'
+'YJX','Y','COACH','NO','YES','NO','NO','MID','12345--'
+'YK','Y','COACH','NO','YES','NO','NO','MID','1234567'
+'YL','Y','COACH','NO','YES','NO','NO','LOW','1234567'
+'YLW','Y','COACH','NO','YES','NO','NO','LOW','-----67'
+'YLX','Y','COACH','NO','YES','NO','NO','LOW','12345--'
+'YN','YN','COACH','NO','YES','NO','YES','NONE','1234567'
+'YO','Y','COACH','NO','YES','NO','NO','MID','1234567'
+'YOW','Y','COACH','NO','YES','NO','NO','MID','-----67'
+'YOX','Y','COACH','NO','YES','NO','NO','MID','12345--'
+'YW','Y','COACH','NO','YES','NO','NO','NONE','-----67'
+'YX','Y','COACH','NO','YES','NO','NO','NONE','12345--'
diff --git a/sql-bench/Data/ATIS/connect_leg.txt b/sql-bench/Data/ATIS/connect_leg.txt
new file mode 100644
index 00000000..43f860bb
--- /dev/null
+++ b/sql-bench/Data/ATIS/connect_leg.txt
@@ -0,0 +1,351 @@
+305276,1,106231
+305276,2,137225
+305277,1,106237
+305277,2,137231
+305280,1,106247
+305280,2,137237
+305416,1,112030
+305416,1,112031
+305416,2,112773
+305424,1,112033
+305424,2,112784
+305429,1,112040
+305429,2,112793
+305429,2,112794
+305435,1,112046
+305435,2,112806
+305436,1,112051
+305436,2,112808
+306026,1,133430
+306026,2,111891
+306031,1,133432
+306031,2,111896
+306304,1,144155
+306304,2,112766
+306307,1,144143
+306307,2,111891
+306309,1,144158
+306309,2,112784
+306314,1,144163
+306314,2,112793
+306314,2,112794
+306317,1,144167
+306317,2,112805
+306318,1,144150
+306318,2,111896
+306319,1,144169
+306319,2,112808
+308292,1,112766
+308292,2,101952
+308296,1,112773
+308296,2,101953
+308301,1,112784
+308301,2,101955
+308304,1,112793
+308304,1,112794
+308304,2,101958
+308320,1,112030
+308320,1,112031
+308320,2,112904
+308330,1,111892
+308330,2,101955
+308334,1,112040
+308334,2,112907
+308924,1,133432
+308924,2,111941
+309189,1,144060
+309189,2,101955
+309198,1,144163
+309198,2,112907
+309204,1,144150
+309204,2,111941
+312733,1,102767
+312733,2,137320
+312734,1,102771
+312734,2,137326
+312737,1,102777
+312737,2,137335
+313006,1,112805
+313006,2,101929
+313024,1,111886
+313024,2,101909
+313025,1,112030
+313025,1,112031
+313025,2,112866
+313025,2,112867
+313030,1,111888
+313030,2,101916
+313030,2,101917
+313034,1,112033
+313034,2,112870
+313037,1,111892
+313037,2,101922
+313041,1,112040
+313041,2,112873
+313048,1,111895
+313048,2,101929
+313867,1,133430
+313867,2,111928
+314256,1,144143
+314256,2,111928
+314259,1,144158
+314259,2,112870
+314263,1,144060
+314263,2,101922
+314268,1,144163
+314268,2,112873
+314269,1,144148
+314269,2,111931
+329933,1,107159
+329933,2,102144
+329937,1,107162
+329937,2,102150
+329941,1,107165
+329941,2,102166
+329944,1,107166
+329944,2,102177
+329947,1,107168
+329947,2,102191
+330865,1,133430
+330865,2,112034
+330867,1,133431
+330867,2,112043
+330870,1,133432
+330870,2,112049
+330947,1,137221
+330947,2,102144
+330956,1,137224
+330956,2,102150
+330962,1,137228
+330962,2,102166
+330964,1,137230
+330964,2,102173
+330967,1,137233
+330967,2,102177
+330971,1,137235
+330971,2,102190
+330974,1,137238
+330974,2,102191
+330977,1,138817
+330977,2,102144
+330981,1,138821
+330981,2,102150
+330984,1,138823
+330984,2,102166
+330989,1,138830
+330989,1,138831
+330989,2,102191
+331132,1,144143
+331132,2,112034
+331133,1,144148
+331133,2,112043
+331134,1,144150
+331134,2,112049
+333051,1,102136
+333051,1,102137
+333051,2,112992
+333054,1,102148
+333054,2,113000
+333059,1,102162
+333059,1,102163
+333059,2,113003
+333067,1,102190
+333067,2,113012
+333067,2,113013
+333086,1,107159
+333086,2,102122
+333091,1,107258
+333091,2,113000
+333099,1,107165
+333099,2,102127
+333110,1,107168
+333110,2,102135
+333153,1,105700
+333153,2,107255
+333158,1,105592
+333158,2,102127
+333168,1,105599
+333168,2,102135
+334183,1,137221
+334183,2,102122
+334190,1,137354
+334190,2,107255
+334198,1,137233
+334198,2,102133
+334202,1,137238
+334202,2,102135
+334210,1,138817
+334210,2,102122
+334218,1,138879
+334218,2,107255
+334222,1,138823
+334222,2,102127
+334230,1,138830
+334230,1,138831
+334230,2,102135
+393490,1,102125
+393490,2,112352
+393507,1,107254
+393507,2,112352
+393546,1,105794
+393546,2,112352
+393547,1,105795
+393547,2,112352
+393553,1,105799
+393553,2,112354
+393637,1,112991
+393637,2,112351
+393641,1,113004
+393641,2,112353
+393643,1,113008
+393643,2,112354
+393950,1,137407
+393950,2,112352
+393953,1,137412
+393953,2,112354
+402327,1,112766
+402327,2,102770
+402332,1,112773
+402332,2,102773
+402339,1,112784
+402339,2,102776
+402343,1,112790
+402343,2,102779
+402346,1,112793
+402346,1,112794
+402346,2,102782
+402350,1,112805
+402350,2,102784
+402376,1,112030
+402376,1,112031
+402376,2,113577
+402382,1,111888
+402382,2,102773
+402388,1,111892
+402388,2,102776
+402391,1,111939
+402391,2,107478
+402397,1,112046
+402397,2,113583
+402398,1,111895
+402398,2,102784
+403125,1,133430
+403125,2,112415
+403128,1,133431
+403128,2,112417
+403468,1,144143
+403468,2,112415
+403472,1,144158
+403472,2,113579
+403474,1,144060
+403474,2,102776
+403479,1,144148
+403479,2,112417
+403481,1,144062
+403481,1,144063
+403481,2,102782
+403485,1,144167
+403485,2,113583
+403486,1,144066
+403486,2,102784
+403488,1,144067
+403488,2,102766
+405211,1,112773
+405211,2,102800
+405214,1,112784
+405214,2,102802
+405214,2,102803
+405217,1,112793
+405217,1,112794
+405217,2,102807
+405219,1,112805
+405219,2,102809
+405235,1,111886
+405235,2,102795
+405236,1,111886
+405236,2,102796
+405241,1,111888
+405241,2,102800
+405250,1,111892
+405250,2,102802
+405250,2,102803
+405253,1,111939
+405253,2,107492
+405258,1,111895
+405258,2,102809
+405963,1,144060
+405963,2,102802
+405963,2,102803
+405970,1,144066
+405970,2,102809
+405971,1,144067
+405971,2,102796
+420730,1,102136
+420730,1,102137
+420730,2,113705
+420735,1,102148
+420735,2,113712
+420736,1,102125
+420736,2,112516
+420739,1,102162
+420739,1,102163
+420739,2,113715
+420745,1,102173
+420745,2,113719
+420747,1,102129
+420747,2,112526
+420751,1,102190
+420751,2,113721
+420782,1,107486
+420782,2,139353
+420783,1,107258
+420783,2,113712
+420785,1,107254
+420785,2,112516
+420791,1,107165
+420791,2,102929
+420792,1,107487
+420792,2,139355
+420798,1,107489
+420798,2,139356
+420887,1,105802
+420887,2,113712
+420888,1,105794
+420888,2,112516
+420893,1,105805
+420893,2,113715
+420894,1,106266
+420894,2,139355
+420903,1,105595
+420903,2,102932
+420911,1,105799
+420911,2,112526
+420912,1,105812
+420912,2,113721
+421176,1,112991
+421176,2,112513
+421177,1,112998
+421177,2,112516
+421179,1,113004
+421179,2,112524
+421180,1,113008
+421180,2,112526
+421181,1,113010
+421181,2,112527
+422233,1,137221
+422233,2,102923
+422233,2,102924
+422240,1,137415
+422240,2,113712
+422241,1,137407
+422241,2,112516
+422249,1,137228
+422249,2,102929
+422262,1,137412
+422262,2,112526
+422263,1,137423
+422263,2,113721
+422277,1,138821
+422277,2,102927
+422281,1,138823
+422281,2,102929
diff --git a/sql-bench/Data/ATIS/date_day.txt b/sql-bench/Data/ATIS/date_day.txt
new file mode 100644
index 00000000..b96ac310
--- /dev/null
+++ b/sql-bench/Data/ATIS/date_day.txt
@@ -0,0 +1,1826 @@
+"1","1","1990","MONDAY"
+"1","2","1990","TUESDAY"
+"1","3","1990","WEDNESDAY"
+"1","4","1990","THURSDAY"
+"1","5","1990","FRIDAY"
+"1","6","1990","SATURDAY"
+"1","7","1990","SUNDAY"
+"1","8","1990","MONDAY"
+"1","9","1990","TUESDAY"
+"1","10","1990","WEDNESDAY"
+"1","11","1990","THURSDAY"
+"1","12","1990","FRIDAY"
+"1","13","1990","SATURDAY"
+"1","14","1990","SUNDAY"
+"1","15","1990","MONDAY"
+"1","16","1990","TUESDAY"
+"1","17","1990","WEDNESDAY"
+"1","18","1990","THURSDAY"
+"1","19","1990","FRIDAY"
+"1","20","1990","SATURDAY"
+"1","21","1990","SUNDAY"
+"1","22","1990","MONDAY"
+"1","23","1990","TUESDAY"
+"1","24","1990","WEDNESDAY"
+"1","25","1990","THURSDAY"
+"1","26","1990","FRIDAY"
+"1","27","1990","SATURDAY"
+"1","28","1990","SUNDAY"
+"1","29","1990","MONDAY"
+"1","30","1990","TUESDAY"
+"1","31","1990","WEDNESDAY"
+"2","1","1990","THURSDAY"
+"2","2","1990","FRIDAY"
+"2","3","1990","SATURDAY"
+"2","4","1990","SUNDAY"
+"2","5","1990","MONDAY"
+"2","6","1990","TUESDAY"
+"2","7","1990","WEDNESDAY"
+"2","8","1990","THURSDAY"
+"2","9","1990","FRIDAY"
+"2","10","1990","SATURDAY"
+"2","11","1990","SUNDAY"
+"2","12","1990","MONDAY"
+"2","13","1990","TUESDAY"
+"2","14","1990","WEDNESDAY"
+"2","15","1990","THURSDAY"
+"2","16","1990","FRIDAY"
+"2","17","1990","SATURDAY"
+"2","18","1990","SUNDAY"
+"2","19","1990","MONDAY"
+"2","20","1990","TUESDAY"
+"2","21","1990","WEDNESDAY"
+"2","22","1990","THURSDAY"
+"2","23","1990","FRIDAY"
+"2","24","1990","SATURDAY"
+"2","25","1990","SUNDAY"
+"2","26","1990","MONDAY"
+"2","27","1990","TUESDAY"
+"2","28","1990","WEDNESDAY"
+"3","1","1990","THURSDAY"
+"3","2","1990","FRIDAY"
+"3","3","1990","SATURDAY"
+"3","4","1990","SUNDAY"
+"3","5","1990","MONDAY"
+"3","6","1990","TUESDAY"
+"3","7","1990","WEDNESDAY"
+"3","8","1990","THURSDAY"
+"3","9","1990","FRIDAY"
+"3","10","1990","SATURDAY"
+"3","11","1990","SUNDAY"
+"3","12","1990","MONDAY"
+"3","13","1990","TUESDAY"
+"3","14","1990","WEDNESDAY"
+"3","15","1990","THURSDAY"
+"3","16","1990","FRIDAY"
+"3","17","1990","SATURDAY"
+"3","18","1990","SUNDAY"
+"3","19","1990","MONDAY"
+"3","20","1990","TUESDAY"
+"3","21","1990","WEDNESDAY"
+"3","22","1990","THURSDAY"
+"3","23","1990","FRIDAY"
+"3","24","1990","SATURDAY"
+"3","25","1990","SUNDAY"
+"3","26","1990","MONDAY"
+"3","27","1990","TUESDAY"
+"3","28","1990","WEDNESDAY"
+"3","29","1990","THURSDAY"
+"3","30","1990","FRIDAY"
+"3","31","1990","SATURDAY"
+"4","1","1990","SUNDAY"
+"4","2","1990","MONDAY"
+"4","3","1990","TUESDAY"
+"4","4","1990","WEDNESDAY"
+"4","5","1990","THURSDAY"
+"4","6","1990","FRIDAY"
+"4","7","1990","SATURDAY"
+"4","8","1990","SUNDAY"
+"4","9","1990","MONDAY"
+"4","10","1990","TUESDAY"
+"4","11","1990","WEDNESDAY"
+"4","12","1990","THURSDAY"
+"4","13","1990","FRIDAY"
+"4","14","1990","SATURDAY"
+"4","15","1990","SUNDAY"
+"4","16","1990","MONDAY"
+"4","17","1990","TUESDAY"
+"4","18","1990","WEDNESDAY"
+"4","19","1990","THURSDAY"
+"4","20","1990","FRIDAY"
+"4","21","1990","SATURDAY"
+"4","22","1990","SUNDAY"
+"4","23","1990","MONDAY"
+"4","24","1990","TUESDAY"
+"4","25","1990","WEDNESDAY"
+"4","26","1990","THURSDAY"
+"4","27","1990","FRIDAY"
+"4","28","1990","SATURDAY"
+"4","29","1990","SUNDAY"
+"4","30","1990","MONDAY"
+"5","1","1990","TUESDAY"
+"5","2","1990","WEDNESDAY"
+"5","3","1990","THURSDAY"
+"5","4","1990","FRIDAY"
+"5","5","1990","SATURDAY"
+"5","6","1990","SUNDAY"
+"5","7","1990","MONDAY"
+"5","8","1990","TUESDAY"
+"5","9","1990","WEDNESDAY"
+"5","10","1990","THURSDAY"
+"5","11","1990","FRIDAY"
+"5","12","1990","SATURDAY"
+"5","13","1990","SUNDAY"
+"5","14","1990","MONDAY"
+"5","15","1990","TUESDAY"
+"5","16","1990","WEDNESDAY"
+"5","17","1990","THURSDAY"
+"5","18","1990","FRIDAY"
+"5","19","1990","SATURDAY"
+"5","20","1990","SUNDAY"
+"5","21","1990","MONDAY"
+"5","22","1990","TUESDAY"
+"5","23","1990","WEDNESDAY"
+"5","24","1990","THURSDAY"
+"5","25","1990","FRIDAY"
+"5","26","1990","SATURDAY"
+"5","27","1990","SUNDAY"
+"5","28","1990","MONDAY"
+"5","29","1990","TUESDAY"
+"5","30","1990","WEDNESDAY"
+"5","31","1990","THURSDAY"
+"6","1","1990","FRIDAY"
+"6","2","1990","SATURDAY"
+"6","3","1990","SUNDAY"
+"6","4","1990","MONDAY"
+"6","5","1990","TUESDAY"
+"6","6","1990","WEDNESDAY"
+"6","7","1990","THURSDAY"
+"6","8","1990","FRIDAY"
+"6","9","1990","SATURDAY"
+"6","10","1990","SUNDAY"
+"6","11","1990","MONDAY"
+"6","12","1990","TUESDAY"
+"6","13","1990","WEDNESDAY"
+"6","14","1990","THURSDAY"
+"6","15","1990","FRIDAY"
+"6","16","1990","SATURDAY"
+"6","17","1990","SUNDAY"
+"6","18","1990","MONDAY"
+"6","19","1990","TUESDAY"
+"6","20","1990","WEDNESDAY"
+"6","21","1990","THURSDAY"
+"6","22","1990","FRIDAY"
+"6","23","1990","SATURDAY"
+"6","24","1990","SUNDAY"
+"6","25","1990","MONDAY"
+"6","26","1990","TUESDAY"
+"6","27","1990","WEDNESDAY"
+"6","28","1990","THURSDAY"
+"6","29","1990","FRIDAY"
+"6","30","1990","SATURDAY"
+"7","1","1990","SUNDAY"
+"7","2","1990","MONDAY"
+"7","3","1990","TUESDAY"
+"7","4","1990","WEDNESDAY"
+"7","5","1990","THURSDAY"
+"7","6","1990","FRIDAY"
+"7","7","1990","SATURDAY"
+"7","8","1990","SUNDAY"
+"7","9","1990","MONDAY"
+"7","10","1990","TUESDAY"
+"7","11","1990","WEDNESDAY"
+"7","12","1990","THURSDAY"
+"7","13","1990","FRIDAY"
+"7","14","1990","SATURDAY"
+"7","15","1990","SUNDAY"
+"7","16","1990","MONDAY"
+"7","17","1990","TUESDAY"
+"7","18","1990","WEDNESDAY"
+"7","19","1990","THURSDAY"
+"7","20","1990","FRIDAY"
+"7","21","1990","SATURDAY"
+"7","22","1990","SUNDAY"
+"7","23","1990","MONDAY"
+"7","24","1990","TUESDAY"
+"7","25","1990","WEDNESDAY"
+"7","26","1990","THURSDAY"
+"7","27","1990","FRIDAY"
+"7","28","1990","SATURDAY"
+"7","29","1990","SUNDAY"
+"7","30","1990","MONDAY"
+"7","31","1990","TUESDAY"
+"8","1","1990","WEDNESDAY"
+"8","2","1990","THURSDAY"
+"8","3","1990","FRIDAY"
+"8","4","1990","SATURDAY"
+"8","5","1990","SUNDAY"
+"8","6","1990","MONDAY"
+"8","7","1990","TUESDAY"
+"8","8","1990","WEDNESDAY"
+"8","9","1990","THURSDAY"
+"8","10","1990","FRIDAY"
+"8","11","1990","SATURDAY"
+"8","12","1990","SUNDAY"
+"8","13","1990","MONDAY"
+"8","14","1990","TUESDAY"
+"8","15","1990","WEDNESDAY"
+"8","16","1990","THURSDAY"
+"8","17","1990","FRIDAY"
+"8","18","1990","SATURDAY"
+"8","19","1990","SUNDAY"
+"8","20","1990","MONDAY"
+"8","21","1990","TUESDAY"
+"8","22","1990","WEDNESDAY"
+"8","23","1990","THURSDAY"
+"8","24","1990","FRIDAY"
+"8","25","1990","SATURDAY"
+"8","26","1990","SUNDAY"
+"8","27","1990","MONDAY"
+"8","28","1990","TUESDAY"
+"8","29","1990","WEDNESDAY"
+"8","30","1990","THURSDAY"
+"8","31","1990","FRIDAY"
+"9","1","1990","SATURDAY"
+"9","2","1990","SUNDAY"
+"9","3","1990","MONDAY"
+"9","4","1990","TUESDAY"
+"9","5","1990","WEDNESDAY"
+"9","6","1990","THURSDAY"
+"9","7","1990","FRIDAY"
+"9","8","1990","SATURDAY"
+"9","9","1990","SUNDAY"
+"9","10","1990","MONDAY"
+"9","11","1990","TUESDAY"
+"9","12","1990","WEDNESDAY"
+"9","13","1990","THURSDAY"
+"9","14","1990","FRIDAY"
+"9","15","1990","SATURDAY"
+"9","16","1990","SUNDAY"
+"9","17","1990","MONDAY"
+"9","18","1990","TUESDAY"
+"9","19","1990","WEDNESDAY"
+"9","20","1990","THURSDAY"
+"9","21","1990","FRIDAY"
+"9","22","1990","SATURDAY"
+"9","23","1990","SUNDAY"
+"9","24","1990","MONDAY"
+"9","25","1990","TUESDAY"
+"9","26","1990","WEDNESDAY"
+"9","27","1990","THURSDAY"
+"9","28","1990","FRIDAY"
+"9","29","1990","SATURDAY"
+"9","30","1990","SUNDAY"
+"10","1","1990","MONDAY"
+"10","2","1990","TUESDAY"
+"10","3","1990","WEDNESDAY"
+"10","4","1990","THURSDAY"
+"10","5","1990","FRIDAY"
+"10","6","1990","SATURDAY"
+"10","7","1990","SUNDAY"
+"10","8","1990","MONDAY"
+"10","9","1990","TUESDAY"
+"10","10","1990","WEDNESDAY"
+"10","11","1990","THURSDAY"
+"10","12","1990","FRIDAY"
+"10","13","1990","SATURDAY"
+"10","14","1990","SUNDAY"
+"10","15","1990","MONDAY"
+"10","16","1990","TUESDAY"
+"10","17","1990","WEDNESDAY"
+"10","18","1990","THURSDAY"
+"10","19","1990","FRIDAY"
+"10","20","1990","SATURDAY"
+"10","21","1990","SUNDAY"
+"10","22","1990","MONDAY"
+"10","23","1990","TUESDAY"
+"10","24","1990","WEDNESDAY"
+"10","25","1990","THURSDAY"
+"10","26","1990","FRIDAY"
+"10","27","1990","SATURDAY"
+"10","28","1990","SUNDAY"
+"10","29","1990","MONDAY"
+"10","30","1990","TUESDAY"
+"10","31","1990","WEDNESDAY"
+"11","1","1990","THURSDAY"
+"11","2","1990","FRIDAY"
+"11","3","1990","SATURDAY"
+"11","4","1990","SUNDAY"
+"11","5","1990","MONDAY"
+"11","6","1990","TUESDAY"
+"11","7","1990","WEDNESDAY"
+"11","8","1990","THURSDAY"
+"11","9","1990","FRIDAY"
+"11","10","1990","SATURDAY"
+"11","11","1990","SUNDAY"
+"11","12","1990","MONDAY"
+"11","13","1990","TUESDAY"
+"11","14","1990","WEDNESDAY"
+"11","15","1990","THURSDAY"
+"11","16","1990","FRIDAY"
+"11","17","1990","SATURDAY"
+"11","18","1990","SUNDAY"
+"11","19","1990","MONDAY"
+"11","20","1990","TUESDAY"
+"11","21","1990","WEDNESDAY"
+"11","22","1990","THURSDAY"
+"11","23","1990","FRIDAY"
+"11","24","1990","SATURDAY"
+"11","25","1990","SUNDAY"
+"11","26","1990","MONDAY"
+"11","27","1990","TUESDAY"
+"11","28","1990","WEDNESDAY"
+"11","29","1990","THURSDAY"
+"11","30","1990","FRIDAY"
+"12","1","1990","SATURDAY"
+"12","2","1990","SUNDAY"
+"12","3","1990","MONDAY"
+"12","4","1990","TUESDAY"
+"12","5","1990","WEDNESDAY"
+"12","6","1990","THURSDAY"
+"12","7","1990","FRIDAY"
+"12","8","1990","SATURDAY"
+"12","9","1990","SUNDAY"
+"12","10","1990","MONDAY"
+"12","11","1990","TUESDAY"
+"12","12","1990","WEDNESDAY"
+"12","13","1990","THURSDAY"
+"12","14","1990","FRIDAY"
+"12","15","1990","SATURDAY"
+"12","16","1990","SUNDAY"
+"12","17","1990","MONDAY"
+"12","18","1990","TUESDAY"
+"12","19","1990","WEDNESDAY"
+"12","20","1990","THURSDAY"
+"12","21","1990","FRIDAY"
+"12","22","1990","SATURDAY"
+"12","23","1990","SUNDAY"
+"12","24","1990","MONDAY"
+"12","25","1990","TUESDAY"
+"12","26","1990","WEDNESDAY"
+"12","27","1990","THURSDAY"
+"12","28","1990","FRIDAY"
+"12","29","1990","SATURDAY"
+"12","30","1990","SUNDAY"
+"12","31","1990","MONDAY"
+"1","1","1991","TUESDAY"
+"1","2","1991","WEDNESDAY"
+"1","3","1991","THURSDAY"
+"1","4","1991","FRIDAY"
+"1","5","1991","SATURDAY"
+"1","6","1991","SUNDAY"
+"1","7","1991","MONDAY"
+"1","8","1991","TUESDAY"
+"1","9","1991","WEDNESDAY"
+"1","10","1991","THURSDAY"
+"1","11","1991","FRIDAY"
+"1","12","1991","SATURDAY"
+"1","13","1991","SUNDAY"
+"1","14","1991","MONDAY"
+"1","15","1991","TUESDAY"
+"1","16","1991","WEDNESDAY"
+"1","17","1991","THURSDAY"
+"1","18","1991","FRIDAY"
+"1","19","1991","SATURDAY"
+"1","20","1991","SUNDAY"
+"1","21","1991","MONDAY"
+"1","22","1991","TUESDAY"
+"1","23","1991","WEDNESDAY"
+"1","24","1991","THURSDAY"
+"1","25","1991","FRIDAY"
+"1","26","1991","SATURDAY"
+"1","27","1991","SUNDAY"
+"1","28","1991","MONDAY"
+"1","29","1991","TUESDAY"
+"1","30","1991","WEDNESDAY"
+"1","31","1991","THURSDAY"
+"2","1","1991","FRIDAY"
+"2","2","1991","SATURDAY"
+"2","3","1991","SUNDAY"
+"2","4","1991","MONDAY"
+"2","5","1991","TUESDAY"
+"2","6","1991","WEDNESDAY"
+"2","7","1991","THURSDAY"
+"2","8","1991","FRIDAY"
+"2","9","1991","SATURDAY"
+"2","10","1991","SUNDAY"
+"2","11","1991","MONDAY"
+"2","12","1991","TUESDAY"
+"2","13","1991","WEDNESDAY"
+"2","14","1991","THURSDAY"
+"2","15","1991","FRIDAY"
+"2","16","1991","SATURDAY"
+"2","17","1991","SUNDAY"
+"2","18","1991","MONDAY"
+"2","19","1991","TUESDAY"
+"2","20","1991","WEDNESDAY"
+"2","21","1991","THURSDAY"
+"2","22","1991","FRIDAY"
+"2","23","1991","SATURDAY"
+"2","24","1991","SUNDAY"
+"2","25","1991","MONDAY"
+"2","26","1991","TUESDAY"
+"2","27","1991","WEDNESDAY"
+"2","28","1991","THURSDAY"
+"3","1","1991","FRIDAY"
+"3","2","1991","SATURDAY"
+"3","3","1991","SUNDAY"
+"3","4","1991","MONDAY"
+"3","5","1991","TUESDAY"
+"3","6","1991","WEDNESDAY"
+"3","7","1991","THURSDAY"
+"3","8","1991","FRIDAY"
+"3","9","1991","SATURDAY"
+"3","10","1991","SUNDAY"
+"3","11","1991","MONDAY"
+"3","12","1991","TUESDAY"
+"3","13","1991","WEDNESDAY"
+"3","14","1991","THURSDAY"
+"3","15","1991","FRIDAY"
+"3","16","1991","SATURDAY"
+"3","17","1991","SUNDAY"
+"3","18","1991","MONDAY"
+"3","19","1991","TUESDAY"
+"3","20","1991","WEDNESDAY"
+"3","21","1991","THURSDAY"
+"3","22","1991","FRIDAY"
+"3","23","1991","SATURDAY"
+"3","24","1991","SUNDAY"
+"3","25","1991","MONDAY"
+"3","26","1991","TUESDAY"
+"3","27","1991","WEDNESDAY"
+"3","28","1991","THURSDAY"
+"3","29","1991","FRIDAY"
+"3","30","1991","SATURDAY"
+"3","31","1991","SUNDAY"
+"4","1","1991","MONDAY"
+"4","2","1991","TUESDAY"
+"4","3","1991","WEDNESDAY"
+"4","4","1991","THURSDAY"
+"4","5","1991","FRIDAY"
+"4","6","1991","SATURDAY"
+"4","7","1991","SUNDAY"
+"4","8","1991","MONDAY"
+"4","9","1991","TUESDAY"
+"4","10","1991","WEDNESDAY"
+"4","11","1991","THURSDAY"
+"4","12","1991","FRIDAY"
+"4","13","1991","SATURDAY"
+"4","14","1991","SUNDAY"
+"4","15","1991","MONDAY"
+"4","16","1991","TUESDAY"
+"4","17","1991","WEDNESDAY"
+"4","18","1991","THURSDAY"
+"4","19","1991","FRIDAY"
+"4","20","1991","SATURDAY"
+"4","21","1991","SUNDAY"
+"4","22","1991","MONDAY"
+"4","23","1991","TUESDAY"
+"4","24","1991","WEDNESDAY"
+"4","25","1991","THURSDAY"
+"4","26","1991","FRIDAY"
+"4","27","1991","SATURDAY"
+"4","28","1991","SUNDAY"
+"4","29","1991","MONDAY"
+"4","30","1991","TUESDAY"
+"5","1","1991","WEDNESDAY"
+"5","2","1991","THURSDAY"
+"5","3","1991","FRIDAY"
+"5","4","1991","SATURDAY"
+"5","5","1991","SUNDAY"
+"5","6","1991","MONDAY"
+"5","7","1991","TUESDAY"
+"5","8","1991","WEDNESDAY"
+"5","9","1991","THURSDAY"
+"5","10","1991","FRIDAY"
+"5","11","1991","SATURDAY"
+"5","12","1991","SUNDAY"
+"5","13","1991","MONDAY"
+"5","14","1991","TUESDAY"
+"5","15","1991","WEDNESDAY"
+"5","16","1991","THURSDAY"
+"5","17","1991","FRIDAY"
+"5","18","1991","SATURDAY"
+"5","19","1991","SUNDAY"
+"5","20","1991","MONDAY"
+"5","21","1991","TUESDAY"
+"5","22","1991","WEDNESDAY"
+"5","23","1991","THURSDAY"
+"5","24","1991","FRIDAY"
+"5","25","1991","SATURDAY"
+"5","26","1991","SUNDAY"
+"5","27","1991","MONDAY"
+"5","28","1991","TUESDAY"
+"5","29","1991","WEDNESDAY"
+"5","30","1991","THURSDAY"
+"5","31","1991","FRIDAY"
+"6","1","1991","SATURDAY"
+"6","2","1991","SUNDAY"
+"6","3","1991","MONDAY"
+"6","4","1991","TUESDAY"
+"6","5","1991","WEDNESDAY"
+"6","6","1991","THURSDAY"
+"6","7","1991","FRIDAY"
+"6","8","1991","SATURDAY"
+"6","9","1991","SUNDAY"
+"6","10","1991","MONDAY"
+"6","11","1991","TUESDAY"
+"6","12","1991","WEDNESDAY"
+"6","13","1991","THURSDAY"
+"6","14","1991","FRIDAY"
+"6","15","1991","SATURDAY"
+"6","16","1991","SUNDAY"
+"6","17","1991","MONDAY"
+"6","18","1991","TUESDAY"
+"6","19","1991","WEDNESDAY"
+"6","20","1991","THURSDAY"
+"6","21","1991","FRIDAY"
+"6","22","1991","SATURDAY"
+"6","23","1991","SUNDAY"
+"6","24","1991","MONDAY"
+"6","25","1991","TUESDAY"
+"6","26","1991","WEDNESDAY"
+"6","27","1991","THURSDAY"
+"6","28","1991","FRIDAY"
+"6","29","1991","SATURDAY"
+"6","30","1991","SUNDAY"
+"7","1","1991","MONDAY"
+"7","2","1991","TUESDAY"
+"7","3","1991","WEDNESDAY"
+"7","4","1991","THURSDAY"
+"7","5","1991","FRIDAY"
+"7","6","1991","SATURDAY"
+"7","7","1991","SUNDAY"
+"7","8","1991","MONDAY"
+"7","9","1991","TUESDAY"
+"7","10","1991","WEDNESDAY"
+"7","11","1991","THURSDAY"
+"7","12","1991","FRIDAY"
+"7","13","1991","SATURDAY"
+"7","14","1991","SUNDAY"
+"7","15","1991","MONDAY"
+"7","16","1991","TUESDAY"
+"7","17","1991","WEDNESDAY"
+"7","18","1991","THURSDAY"
+"7","19","1991","FRIDAY"
+"7","20","1991","SATURDAY"
+"7","21","1991","SUNDAY"
+"7","22","1991","MONDAY"
+"7","23","1991","TUESDAY"
+"7","24","1991","WEDNESDAY"
+"7","25","1991","THURSDAY"
+"7","26","1991","FRIDAY"
+"7","27","1991","SATURDAY"
+"7","28","1991","SUNDAY"
+"7","29","1991","MONDAY"
+"7","30","1991","TUESDAY"
+"7","31","1991","WEDNESDAY"
+"8","1","1991","THURSDAY"
+"8","2","1991","FRIDAY"
+"8","3","1991","SATURDAY"
+"8","4","1991","SUNDAY"
+"8","5","1991","MONDAY"
+"8","6","1991","TUESDAY"
+"8","7","1991","WEDNESDAY"
+"8","8","1991","THURSDAY"
+"8","9","1991","FRIDAY"
+"8","10","1991","SATURDAY"
+"8","11","1991","SUNDAY"
+"8","12","1991","MONDAY"
+"8","13","1991","TUESDAY"
+"8","14","1991","WEDNESDAY"
+"8","15","1991","THURSDAY"
+"8","16","1991","FRIDAY"
+"8","17","1991","SATURDAY"
+"8","18","1991","SUNDAY"
+"8","19","1991","MONDAY"
+"8","20","1991","TUESDAY"
+"8","21","1991","WEDNESDAY"
+"8","22","1991","THURSDAY"
+"8","23","1991","FRIDAY"
+"8","24","1991","SATURDAY"
+"8","25","1991","SUNDAY"
+"8","26","1991","MONDAY"
+"8","27","1991","TUESDAY"
+"8","28","1991","WEDNESDAY"
+"8","29","1991","THURSDAY"
+"8","30","1991","FRIDAY"
+"8","31","1991","SATURDAY"
+"9","1","1991","SUNDAY"
+"9","2","1991","MONDAY"
+"9","3","1991","TUESDAY"
+"9","4","1991","WEDNESDAY"
+"9","5","1991","THURSDAY"
+"9","6","1991","FRIDAY"
+"9","7","1991","SATURDAY"
+"9","8","1991","SUNDAY"
+"9","9","1991","MONDAY"
+"9","10","1991","TUESDAY"
+"9","11","1991","WEDNESDAY"
+"9","12","1991","THURSDAY"
+"9","13","1991","FRIDAY"
+"9","14","1991","SATURDAY"
+"9","15","1991","SUNDAY"
+"9","16","1991","MONDAY"
+"9","17","1991","TUESDAY"
+"9","18","1991","WEDNESDAY"
+"9","19","1991","THURSDAY"
+"9","20","1991","FRIDAY"
+"9","21","1991","SATURDAY"
+"9","22","1991","SUNDAY"
+"9","23","1991","MONDAY"
+"9","24","1991","TUESDAY"
+"9","25","1991","WEDNESDAY"
+"9","26","1991","THURSDAY"
+"9","27","1991","FRIDAY"
+"9","28","1991","SATURDAY"
+"9","29","1991","SUNDAY"
+"9","30","1991","MONDAY"
+"10","1","1991","TUESDAY"
+"10","2","1991","WEDNESDAY"
+"10","3","1991","THURSDAY"
+"10","4","1991","FRIDAY"
+"10","5","1991","SATURDAY"
+"10","6","1991","SUNDAY"
+"10","7","1991","MONDAY"
+"10","8","1991","TUESDAY"
+"10","9","1991","WEDNESDAY"
+"10","10","1991","THURSDAY"
+"10","11","1991","FRIDAY"
+"10","12","1991","SATURDAY"
+"10","13","1991","SUNDAY"
+"10","14","1991","MONDAY"
+"10","15","1991","TUESDAY"
+"10","16","1991","WEDNESDAY"
+"10","17","1991","THURSDAY"
+"10","18","1991","FRIDAY"
+"10","19","1991","SATURDAY"
+"10","20","1991","SUNDAY"
+"10","21","1991","MONDAY"
+"10","22","1991","TUESDAY"
+"10","23","1991","WEDNESDAY"
+"10","24","1991","THURSDAY"
+"10","25","1991","FRIDAY"
+"10","26","1991","SATURDAY"
+"10","27","1991","SUNDAY"
+"10","28","1991","MONDAY"
+"10","29","1991","TUESDAY"
+"10","30","1991","WEDNESDAY"
+"10","31","1991","THURSDAY"
+"11","1","1991","FRIDAY"
+"11","2","1991","SATURDAY"
+"11","3","1991","SUNDAY"
+"11","4","1991","MONDAY"
+"11","5","1991","TUESDAY"
+"11","6","1991","WEDNESDAY"
+"11","7","1991","THURSDAY"
+"11","8","1991","FRIDAY"
+"11","9","1991","SATURDAY"
+"11","10","1991","SUNDAY"
+"11","11","1991","MONDAY"
+"11","12","1991","TUESDAY"
+"11","13","1991","WEDNESDAY"
+"11","14","1991","THURSDAY"
+"11","15","1991","FRIDAY"
+"11","16","1991","SATURDAY"
+"11","17","1991","SUNDAY"
+"11","18","1991","MONDAY"
+"11","19","1991","TUESDAY"
+"11","20","1991","WEDNESDAY"
+"11","21","1991","THURSDAY"
+"11","22","1991","FRIDAY"
+"11","23","1991","SATURDAY"
+"11","24","1991","SUNDAY"
+"11","25","1991","MONDAY"
+"11","26","1991","TUESDAY"
+"11","27","1991","WEDNESDAY"
+"11","28","1991","THURSDAY"
+"11","29","1991","FRIDAY"
+"11","30","1991","SATURDAY"
+"12","1","1991","SUNDAY"
+"12","2","1991","MONDAY"
+"12","3","1991","TUESDAY"
+"12","4","1991","WEDNESDAY"
+"12","5","1991","THURSDAY"
+"12","6","1991","FRIDAY"
+"12","7","1991","SATURDAY"
+"12","8","1991","SUNDAY"
+"12","9","1991","MONDAY"
+"12","10","1991","TUESDAY"
+"12","11","1991","WEDNESDAY"
+"12","12","1991","THURSDAY"
+"12","13","1991","FRIDAY"
+"12","14","1991","SATURDAY"
+"12","15","1991","SUNDAY"
+"12","16","1991","MONDAY"
+"12","17","1991","TUESDAY"
+"12","18","1991","WEDNESDAY"
+"12","19","1991","THURSDAY"
+"12","20","1991","FRIDAY"
+"12","21","1991","SATURDAY"
+"12","22","1991","SUNDAY"
+"12","23","1991","MONDAY"
+"12","24","1991","TUESDAY"
+"12","25","1991","WEDNESDAY"
+"12","26","1991","THURSDAY"
+"12","27","1991","FRIDAY"
+"12","28","1991","SATURDAY"
+"12","29","1991","SUNDAY"
+"12","30","1991","MONDAY"
+"12","31","1991","TUESDAY"
+"1","1","1992","WEDNESDAY"
+"1","2","1992","THURSDAY"
+"1","3","1992","FRIDAY"
+"1","4","1992","SATURDAY"
+"1","5","1992","SUNDAY"
+"1","6","1992","MONDAY"
+"1","7","1992","TUESDAY"
+"1","8","1992","WEDNESDAY"
+"1","9","1992","THURSDAY"
+"1","10","1992","FRIDAY"
+"1","11","1992","SATURDAY"
+"1","12","1992","SUNDAY"
+"1","13","1992","MONDAY"
+"1","14","1992","TUESDAY"
+"1","15","1992","WEDNESDAY"
+"1","16","1992","THURSDAY"
+"1","17","1992","FRIDAY"
+"1","18","1992","SATURDAY"
+"1","19","1992","SUNDAY"
+"1","20","1992","MONDAY"
+"1","21","1992","TUESDAY"
+"1","22","1992","WEDNESDAY"
+"1","23","1992","THURSDAY"
+"1","24","1992","FRIDAY"
+"1","25","1992","SATURDAY"
+"1","26","1992","SUNDAY"
+"1","27","1992","MONDAY"
+"1","28","1992","TUESDAY"
+"1","29","1992","WEDNESDAY"
+"1","30","1992","THURSDAY"
+"1","31","1992","FRIDAY"
+"2","1","1992","SATURDAY"
+"2","2","1992","SUNDAY"
+"2","3","1992","MONDAY"
+"2","4","1992","TUESDAY"
+"2","5","1992","WEDNESDAY"
+"2","6","1992","THURSDAY"
+"2","7","1992","FRIDAY"
+"2","8","1992","SATURDAY"
+"2","9","1992","SUNDAY"
+"2","10","1992","MONDAY"
+"2","11","1992","TUESDAY"
+"2","12","1992","WEDNESDAY"
+"2","13","1992","THURSDAY"
+"2","14","1992","FRIDAY"
+"2","15","1992","SATURDAY"
+"2","16","1992","SUNDAY"
+"2","17","1992","MONDAY"
+"2","18","1992","TUESDAY"
+"2","19","1992","WEDNESDAY"
+"2","20","1992","THURSDAY"
+"2","21","1992","FRIDAY"
+"2","22","1992","SATURDAY"
+"2","23","1992","SUNDAY"
+"2","24","1992","MONDAY"
+"2","25","1992","TUESDAY"
+"2","26","1992","WEDNESDAY"
+"2","27","1992","THURSDAY"
+"2","28","1992","FRIDAY"
+"2","29","1992","SATURDAY"
+"3","1","1992","SUNDAY"
+"3","2","1992","MONDAY"
+"3","3","1992","TUESDAY"
+"3","4","1992","WEDNESDAY"
+"3","5","1992","THURSDAY"
+"3","6","1992","FRIDAY"
+"3","7","1992","SATURDAY"
+"3","8","1992","SUNDAY"
+"3","9","1992","MONDAY"
+"3","10","1992","TUESDAY"
+"3","11","1992","WEDNESDAY"
+"3","12","1992","THURSDAY"
+"3","13","1992","FRIDAY"
+"3","14","1992","SATURDAY"
+"3","15","1992","SUNDAY"
+"3","16","1992","MONDAY"
+"3","17","1992","TUESDAY"
+"3","18","1992","WEDNESDAY"
+"3","19","1992","THURSDAY"
+"3","20","1992","FRIDAY"
+"3","21","1992","SATURDAY"
+"3","22","1992","SUNDAY"
+"3","23","1992","MONDAY"
+"3","24","1992","TUESDAY"
+"3","25","1992","WEDNESDAY"
+"3","26","1992","THURSDAY"
+"3","27","1992","FRIDAY"
+"3","28","1992","SATURDAY"
+"3","29","1992","SUNDAY"
+"3","30","1992","MONDAY"
+"3","31","1992","TUESDAY"
+"4","1","1992","WEDNESDAY"
+"4","2","1992","THURSDAY"
+"4","3","1992","FRIDAY"
+"4","4","1992","SATURDAY"
+"4","5","1992","SUNDAY"
+"4","6","1992","MONDAY"
+"4","7","1992","TUESDAY"
+"4","8","1992","WEDNESDAY"
+"4","9","1992","THURSDAY"
+"4","10","1992","FRIDAY"
+"4","11","1992","SATURDAY"
+"4","12","1992","SUNDAY"
+"4","13","1992","MONDAY"
+"4","14","1992","TUESDAY"
+"4","15","1992","WEDNESDAY"
+"4","16","1992","THURSDAY"
+"4","17","1992","FRIDAY"
+"4","18","1992","SATURDAY"
+"4","19","1992","SUNDAY"
+"4","20","1992","MONDAY"
+"4","21","1992","TUESDAY"
+"4","22","1992","WEDNESDAY"
+"4","23","1992","THURSDAY"
+"4","24","1992","FRIDAY"
+"4","25","1992","SATURDAY"
+"4","26","1992","SUNDAY"
+"4","27","1992","MONDAY"
+"4","28","1992","TUESDAY"
+"4","29","1992","WEDNESDAY"
+"4","30","1992","THURSDAY"
+"5","1","1992","FRIDAY"
+"5","2","1992","SATURDAY"
+"5","3","1992","SUNDAY"
+"5","4","1992","MONDAY"
+"5","5","1992","TUESDAY"
+"5","6","1992","WEDNESDAY"
+"5","7","1992","THURSDAY"
+"5","8","1992","FRIDAY"
+"5","9","1992","SATURDAY"
+"5","10","1992","SUNDAY"
+"5","11","1992","MONDAY"
+"5","12","1992","TUESDAY"
+"5","13","1992","WEDNESDAY"
+"5","14","1992","THURSDAY"
+"5","15","1992","FRIDAY"
+"5","16","1992","SATURDAY"
+"5","17","1992","SUNDAY"
+"5","18","1992","MONDAY"
+"5","19","1992","TUESDAY"
+"5","20","1992","WEDNESDAY"
+"5","21","1992","THURSDAY"
+"5","22","1992","FRIDAY"
+"5","23","1992","SATURDAY"
+"5","24","1992","SUNDAY"
+"5","25","1992","MONDAY"
+"5","26","1992","TUESDAY"
+"5","27","1992","WEDNESDAY"
+"5","28","1992","THURSDAY"
+"5","29","1992","FRIDAY"
+"5","30","1992","SATURDAY"
+"5","31","1992","SUNDAY"
+"6","1","1992","MONDAY"
+"6","2","1992","TUESDAY"
+"6","3","1992","WEDNESDAY"
+"6","4","1992","THURSDAY"
+"6","5","1992","FRIDAY"
+"6","6","1992","SATURDAY"
+"6","7","1992","SUNDAY"
+"6","8","1992","MONDAY"
+"6","9","1992","TUESDAY"
+"6","10","1992","WEDNESDAY"
+"6","11","1992","THURSDAY"
+"6","12","1992","FRIDAY"
+"6","13","1992","SATURDAY"
+"6","14","1992","SUNDAY"
+"6","15","1992","MONDAY"
+"6","16","1992","TUESDAY"
+"6","17","1992","WEDNESDAY"
+"6","18","1992","THURSDAY"
+"6","19","1992","FRIDAY"
+"6","20","1992","SATURDAY"
+"6","21","1992","SUNDAY"
+"6","22","1992","MONDAY"
+"6","23","1992","TUESDAY"
+"6","24","1992","WEDNESDAY"
+"6","25","1992","THURSDAY"
+"6","26","1992","FRIDAY"
+"6","27","1992","SATURDAY"
+"6","28","1992","SUNDAY"
+"6","29","1992","MONDAY"
+"6","30","1992","TUESDAY"
+"7","1","1992","WEDNESDAY"
+"7","2","1992","THURSDAY"
+"7","3","1992","FRIDAY"
+"7","4","1992","SATURDAY"
+"7","5","1992","SUNDAY"
+"7","6","1992","MONDAY"
+"7","7","1992","TUESDAY"
+"7","8","1992","WEDNESDAY"
+"7","9","1992","THURSDAY"
+"7","10","1992","FRIDAY"
+"7","11","1992","SATURDAY"
+"7","12","1992","SUNDAY"
+"7","13","1992","MONDAY"
+"7","14","1992","TUESDAY"
+"7","15","1992","WEDNESDAY"
+"7","16","1992","THURSDAY"
+"7","17","1992","FRIDAY"
+"7","18","1992","SATURDAY"
+"7","19","1992","SUNDAY"
+"7","20","1992","MONDAY"
+"7","21","1992","TUESDAY"
+"7","22","1992","WEDNESDAY"
+"7","23","1992","THURSDAY"
+"7","24","1992","FRIDAY"
+"7","25","1992","SATURDAY"
+"7","26","1992","SUNDAY"
+"7","27","1992","MONDAY"
+"7","28","1992","TUESDAY"
+"7","29","1992","WEDNESDAY"
+"7","30","1992","THURSDAY"
+"7","31","1992","FRIDAY"
+"8","1","1992","SATURDAY"
+"8","2","1992","SUNDAY"
+"8","3","1992","MONDAY"
+"8","4","1992","TUESDAY"
+"8","5","1992","WEDNESDAY"
+"8","6","1992","THURSDAY"
+"8","7","1992","FRIDAY"
+"8","8","1992","SATURDAY"
+"8","9","1992","SUNDAY"
+"8","10","1992","MONDAY"
+"8","11","1992","TUESDAY"
+"8","12","1992","WEDNESDAY"
+"8","13","1992","THURSDAY"
+"8","14","1992","FRIDAY"
+"8","15","1992","SATURDAY"
+"8","16","1992","SUNDAY"
+"8","17","1992","MONDAY"
+"8","18","1992","TUESDAY"
+"8","19","1992","WEDNESDAY"
+"8","20","1992","THURSDAY"
+"8","21","1992","FRIDAY"
+"8","22","1992","SATURDAY"
+"8","23","1992","SUNDAY"
+"8","24","1992","MONDAY"
+"8","25","1992","TUESDAY"
+"8","26","1992","WEDNESDAY"
+"8","27","1992","THURSDAY"
+"8","28","1992","FRIDAY"
+"8","29","1992","SATURDAY"
+"8","30","1992","SUNDAY"
+"8","31","1992","MONDAY"
+"9","1","1992","TUESDAY"
+"9","2","1992","WEDNESDAY"
+"9","3","1992","THURSDAY"
+"9","4","1992","FRIDAY"
+"9","5","1992","SATURDAY"
+"9","6","1992","SUNDAY"
+"9","7","1992","MONDAY"
+"9","8","1992","TUESDAY"
+"9","9","1992","WEDNESDAY"
+"9","10","1992","THURSDAY"
+"9","11","1992","FRIDAY"
+"9","12","1992","SATURDAY"
+"9","13","1992","SUNDAY"
+"9","14","1992","MONDAY"
+"9","15","1992","TUESDAY"
+"9","16","1992","WEDNESDAY"
+"9","17","1992","THURSDAY"
+"9","18","1992","FRIDAY"
+"9","19","1992","SATURDAY"
+"9","20","1992","SUNDAY"
+"9","21","1992","MONDAY"
+"9","22","1992","TUESDAY"
+"9","23","1992","WEDNESDAY"
+"9","24","1992","THURSDAY"
+"9","25","1992","FRIDAY"
+"9","26","1992","SATURDAY"
+"9","27","1992","SUNDAY"
+"9","28","1992","MONDAY"
+"9","29","1992","TUESDAY"
+"9","30","1992","WEDNESDAY"
+"10","1","1992","THURSDAY"
+"10","2","1992","FRIDAY"
+"10","3","1992","SATURDAY"
+"10","4","1992","SUNDAY"
+"10","5","1992","MONDAY"
+"10","6","1992","TUESDAY"
+"10","7","1992","WEDNESDAY"
+"10","8","1992","THURSDAY"
+"10","9","1992","FRIDAY"
+"10","10","1992","SATURDAY"
+"10","11","1992","SUNDAY"
+"10","12","1992","MONDAY"
+"10","13","1992","TUESDAY"
+"10","14","1992","WEDNESDAY"
+"10","15","1992","THURSDAY"
+"10","16","1992","FRIDAY"
+"10","17","1992","SATURDAY"
+"10","18","1992","SUNDAY"
+"10","19","1992","MONDAY"
+"10","20","1992","TUESDAY"
+"10","21","1992","WEDNESDAY"
+"10","22","1992","THURSDAY"
+"10","23","1992","FRIDAY"
+"10","24","1992","SATURDAY"
+"10","25","1992","SUNDAY"
+"10","26","1992","MONDAY"
+"10","27","1992","TUESDAY"
+"10","28","1992","WEDNESDAY"
+"10","29","1992","THURSDAY"
+"10","30","1992","FRIDAY"
+"10","31","1992","SATURDAY"
+"11","1","1992","SUNDAY"
+"11","2","1992","MONDAY"
+"11","3","1992","TUESDAY"
+"11","4","1992","WEDNESDAY"
+"11","5","1992","THURSDAY"
+"11","6","1992","FRIDAY"
+"11","7","1992","SATURDAY"
+"11","8","1992","SUNDAY"
+"11","9","1992","MONDAY"
+"11","10","1992","TUESDAY"
+"11","11","1992","WEDNESDAY"
+"11","12","1992","THURSDAY"
+"11","13","1992","FRIDAY"
+"11","14","1992","SATURDAY"
+"11","15","1992","SUNDAY"
+"11","16","1992","MONDAY"
+"11","17","1992","TUESDAY"
+"11","18","1992","WEDNESDAY"
+"11","19","1992","THURSDAY"
+"11","20","1992","FRIDAY"
+"11","21","1992","SATURDAY"
+"11","22","1992","SUNDAY"
+"11","23","1992","MONDAY"
+"11","24","1992","TUESDAY"
+"11","25","1992","WEDNESDAY"
+"11","26","1992","THURSDAY"
+"11","27","1992","FRIDAY"
+"11","28","1992","SATURDAY"
+"11","29","1992","SUNDAY"
+"11","30","1992","MONDAY"
+"12","1","1992","TUESDAY"
+"12","2","1992","WEDNESDAY"
+"12","3","1992","THURSDAY"
+"12","4","1992","FRIDAY"
+"12","5","1992","SATURDAY"
+"12","6","1992","SUNDAY"
+"12","7","1992","MONDAY"
+"12","8","1992","TUESDAY"
+"12","9","1992","WEDNESDAY"
+"12","10","1992","THURSDAY"
+"12","11","1992","FRIDAY"
+"12","12","1992","SATURDAY"
+"12","13","1992","SUNDAY"
+"12","14","1992","MONDAY"
+"12","15","1992","TUESDAY"
+"12","16","1992","WEDNESDAY"
+"12","17","1992","THURSDAY"
+"12","18","1992","FRIDAY"
+"12","19","1992","SATURDAY"
+"12","20","1992","SUNDAY"
+"12","21","1992","MONDAY"
+"12","22","1992","TUESDAY"
+"12","23","1992","WEDNESDAY"
+"12","24","1992","THURSDAY"
+"12","25","1992","FRIDAY"
+"12","26","1992","SATURDAY"
+"12","27","1992","SUNDAY"
+"12","28","1992","MONDAY"
+"12","29","1992","TUESDAY"
+"12","30","1992","WEDNESDAY"
+"12","31","1992","THURSDAY"
+"1","1","1993","FRIDAY"
+"1","2","1993","SATURDAY"
+"1","3","1993","SUNDAY"
+"1","4","1993","MONDAY"
+"1","5","1993","TUESDAY"
+"1","6","1993","WEDNESDAY"
+"1","7","1993","THURSDAY"
+"1","8","1993","FRIDAY"
+"1","9","1993","SATURDAY"
+"1","10","1993","SUNDAY"
+"1","11","1993","MONDAY"
+"1","12","1993","TUESDAY"
+"1","13","1993","WEDNESDAY"
+"1","14","1993","THURSDAY"
+"1","15","1993","FRIDAY"
+"1","16","1993","SATURDAY"
+"1","17","1993","SUNDAY"
+"1","18","1993","MONDAY"
+"1","19","1993","TUESDAY"
+"1","20","1993","WEDNESDAY"
+"1","21","1993","THURSDAY"
+"1","22","1993","FRIDAY"
+"1","23","1993","SATURDAY"
+"1","24","1993","SUNDAY"
+"1","25","1993","MONDAY"
+"1","26","1993","TUESDAY"
+"1","27","1993","WEDNESDAY"
+"1","28","1993","THURSDAY"
+"1","29","1993","FRIDAY"
+"1","30","1993","SATURDAY"
+"1","31","1993","SUNDAY"
+"2","1","1993","MONDAY"
+"2","2","1993","TUESDAY"
+"2","3","1993","WEDNESDAY"
+"2","4","1993","THURSDAY"
+"2","5","1993","FRIDAY"
+"2","6","1993","SATURDAY"
+"2","7","1993","SUNDAY"
+"2","8","1993","MONDAY"
+"2","9","1993","TUESDAY"
+"2","10","1993","WEDNESDAY"
+"2","11","1993","THURSDAY"
+"2","12","1993","FRIDAY"
+"2","13","1993","SATURDAY"
+"2","14","1993","SUNDAY"
+"2","15","1993","MONDAY"
+"2","16","1993","TUESDAY"
+"2","17","1993","WEDNESDAY"
+"2","18","1993","THURSDAY"
+"2","19","1993","FRIDAY"
+"2","20","1993","SATURDAY"
+"2","21","1993","SUNDAY"
+"2","22","1993","MONDAY"
+"2","23","1993","TUESDAY"
+"2","24","1993","WEDNESDAY"
+"2","25","1993","THURSDAY"
+"2","26","1993","FRIDAY"
+"2","27","1993","SATURDAY"
+"2","28","1993","SUNDAY"
+"3","1","1993","MONDAY"
+"3","2","1993","TUESDAY"
+"3","3","1993","WEDNESDAY"
+"3","4","1993","THURSDAY"
+"3","5","1993","FRIDAY"
+"3","6","1993","SATURDAY"
+"3","7","1993","SUNDAY"
+"3","8","1993","MONDAY"
+"3","9","1993","TUESDAY"
+"3","10","1993","WEDNESDAY"
+"3","11","1993","THURSDAY"
+"3","12","1993","FRIDAY"
+"3","13","1993","SATURDAY"
+"3","14","1993","SUNDAY"
+"3","15","1993","MONDAY"
+"3","16","1993","TUESDAY"
+"3","17","1993","WEDNESDAY"
+"3","18","1993","THURSDAY"
+"3","19","1993","FRIDAY"
+"3","20","1993","SATURDAY"
+"3","21","1993","SUNDAY"
+"3","22","1993","MONDAY"
+"3","23","1993","TUESDAY"
+"3","24","1993","WEDNESDAY"
+"3","25","1993","THURSDAY"
+"3","26","1993","FRIDAY"
+"3","27","1993","SATURDAY"
+"3","28","1993","SUNDAY"
+"3","29","1993","MONDAY"
+"3","30","1993","TUESDAY"
+"3","31","1993","WEDNESDAY"
+"4","1","1993","THURSDAY"
+"4","2","1993","FRIDAY"
+"4","3","1993","SATURDAY"
+"4","4","1993","SUNDAY"
+"4","5","1993","MONDAY"
+"4","6","1993","TUESDAY"
+"4","7","1993","WEDNESDAY"
+"4","8","1993","THURSDAY"
+"4","9","1993","FRIDAY"
+"4","10","1993","SATURDAY"
+"4","11","1993","SUNDAY"
+"4","12","1993","MONDAY"
+"4","13","1993","TUESDAY"
+"4","14","1993","WEDNESDAY"
+"4","15","1993","THURSDAY"
+"4","16","1993","FRIDAY"
+"4","17","1993","SATURDAY"
+"4","18","1993","SUNDAY"
+"4","19","1993","MONDAY"
+"4","20","1993","TUESDAY"
+"4","21","1993","WEDNESDAY"
+"4","22","1993","THURSDAY"
+"4","23","1993","FRIDAY"
+"4","24","1993","SATURDAY"
+"4","25","1993","SUNDAY"
+"4","26","1993","MONDAY"
+"4","27","1993","TUESDAY"
+"4","28","1993","WEDNESDAY"
+"4","29","1993","THURSDAY"
+"4","30","1993","FRIDAY"
+"5","1","1993","SATURDAY"
+"5","2","1993","SUNDAY"
+"5","3","1993","MONDAY"
+"5","4","1993","TUESDAY"
+"5","5","1993","WEDNESDAY"
+"5","6","1993","THURSDAY"
+"5","7","1993","FRIDAY"
+"5","8","1993","SATURDAY"
+"5","9","1993","SUNDAY"
+"5","10","1993","MONDAY"
+"5","11","1993","TUESDAY"
+"5","12","1993","WEDNESDAY"
+"5","13","1993","THURSDAY"
+"5","14","1993","FRIDAY"
+"5","15","1993","SATURDAY"
+"5","16","1993","SUNDAY"
+"5","17","1993","MONDAY"
+"5","18","1993","TUESDAY"
+"5","19","1993","WEDNESDAY"
+"5","20","1993","THURSDAY"
+"5","21","1993","FRIDAY"
+"5","22","1993","SATURDAY"
+"5","23","1993","SUNDAY"
+"5","24","1993","MONDAY"
+"5","25","1993","TUESDAY"
+"5","26","1993","WEDNESDAY"
+"5","27","1993","THURSDAY"
+"5","28","1993","FRIDAY"
+"5","29","1993","SATURDAY"
+"5","30","1993","SUNDAY"
+"5","31","1993","MONDAY"
+"6","1","1993","TUESDAY"
+"6","2","1993","WEDNESDAY"
+"6","3","1993","THURSDAY"
+"6","4","1993","FRIDAY"
+"6","5","1993","SATURDAY"
+"6","6","1993","SUNDAY"
+"6","7","1993","MONDAY"
+"6","8","1993","TUESDAY"
+"6","9","1993","WEDNESDAY"
+"6","10","1993","THURSDAY"
+"6","11","1993","FRIDAY"
+"6","12","1993","SATURDAY"
+"6","13","1993","SUNDAY"
+"6","14","1993","MONDAY"
+"6","15","1993","TUESDAY"
+"6","16","1993","WEDNESDAY"
+"6","17","1993","THURSDAY"
+"6","18","1993","FRIDAY"
+"6","19","1993","SATURDAY"
+"6","20","1993","SUNDAY"
+"6","21","1993","MONDAY"
+"6","22","1993","TUESDAY"
+"6","23","1993","WEDNESDAY"
+"6","24","1993","THURSDAY"
+"6","25","1993","FRIDAY"
+"6","26","1993","SATURDAY"
+"6","27","1993","SUNDAY"
+"6","28","1993","MONDAY"
+"6","29","1993","TUESDAY"
+"6","30","1993","WEDNESDAY"
+"7","1","1993","THURSDAY"
+"7","2","1993","FRIDAY"
+"7","3","1993","SATURDAY"
+"7","4","1993","SUNDAY"
+"7","5","1993","MONDAY"
+"7","6","1993","TUESDAY"
+"7","7","1993","WEDNESDAY"
+"7","8","1993","THURSDAY"
+"7","9","1993","FRIDAY"
+"7","10","1993","SATURDAY"
+"7","11","1993","SUNDAY"
+"7","12","1993","MONDAY"
+"7","13","1993","TUESDAY"
+"7","14","1993","WEDNESDAY"
+"7","15","1993","THURSDAY"
+"7","16","1993","FRIDAY"
+"7","17","1993","SATURDAY"
+"7","18","1993","SUNDAY"
+"7","19","1993","MONDAY"
+"7","20","1993","TUESDAY"
+"7","21","1993","WEDNESDAY"
+"7","22","1993","THURSDAY"
+"7","23","1993","FRIDAY"
+"7","24","1993","SATURDAY"
+"7","25","1993","SUNDAY"
+"7","26","1993","MONDAY"
+"7","27","1993","TUESDAY"
+"7","28","1993","WEDNESDAY"
+"7","29","1993","THURSDAY"
+"7","30","1993","FRIDAY"
+"7","31","1993","SATURDAY"
+"8","1","1993","SUNDAY"
+"8","2","1993","MONDAY"
+"8","3","1993","TUESDAY"
+"8","4","1993","WEDNESDAY"
+"8","5","1993","THURSDAY"
+"8","6","1993","FRIDAY"
+"8","7","1993","SATURDAY"
+"8","8","1993","SUNDAY"
+"8","9","1993","MONDAY"
+"8","10","1993","TUESDAY"
+"8","11","1993","WEDNESDAY"
+"8","12","1993","THURSDAY"
+"8","13","1993","FRIDAY"
+"8","14","1993","SATURDAY"
+"8","15","1993","SUNDAY"
+"8","16","1993","MONDAY"
+"8","17","1993","TUESDAY"
+"8","18","1993","WEDNESDAY"
+"8","19","1993","THURSDAY"
+"8","20","1993","FRIDAY"
+"8","21","1993","SATURDAY"
+"8","22","1993","SUNDAY"
+"8","23","1993","MONDAY"
+"8","24","1993","TUESDAY"
+"8","25","1993","WEDNESDAY"
+"8","26","1993","THURSDAY"
+"8","27","1993","FRIDAY"
+"8","28","1993","SATURDAY"
+"8","29","1993","SUNDAY"
+"8","30","1993","MONDAY"
+"8","31","1993","TUESDAY"
+"9","1","1993","WEDNESDAY"
+"9","2","1993","THURSDAY"
+"9","3","1993","FRIDAY"
+"9","4","1993","SATURDAY"
+"9","5","1993","SUNDAY"
+"9","6","1993","MONDAY"
+"9","7","1993","TUESDAY"
+"9","8","1993","WEDNESDAY"
+"9","9","1993","THURSDAY"
+"9","10","1993","FRIDAY"
+"9","11","1993","SATURDAY"
+"9","12","1993","SUNDAY"
+"9","13","1993","MONDAY"
+"9","14","1993","TUESDAY"
+"9","15","1993","WEDNESDAY"
+"9","16","1993","THURSDAY"
+"9","17","1993","FRIDAY"
+"9","18","1993","SATURDAY"
+"9","19","1993","SUNDAY"
+"9","20","1993","MONDAY"
+"9","21","1993","TUESDAY"
+"9","22","1993","WEDNESDAY"
+"9","23","1993","THURSDAY"
+"9","24","1993","FRIDAY"
+"9","25","1993","SATURDAY"
+"9","26","1993","SUNDAY"
+"9","27","1993","MONDAY"
+"9","28","1993","TUESDAY"
+"9","29","1993","WEDNESDAY"
+"9","30","1993","THURSDAY"
+"10","1","1993","FRIDAY"
+"10","2","1993","SATURDAY"
+"10","3","1993","SUNDAY"
+"10","4","1993","MONDAY"
+"10","5","1993","TUESDAY"
+"10","6","1993","WEDNESDAY"
+"10","7","1993","THURSDAY"
+"10","8","1993","FRIDAY"
+"10","9","1993","SATURDAY"
+"10","10","1993","SUNDAY"
+"10","11","1993","MONDAY"
+"10","12","1993","TUESDAY"
+"10","13","1993","WEDNESDAY"
+"10","14","1993","THURSDAY"
+"10","15","1993","FRIDAY"
+"10","16","1993","SATURDAY"
+"10","17","1993","SUNDAY"
+"10","18","1993","MONDAY"
+"10","19","1993","TUESDAY"
+"10","20","1993","WEDNESDAY"
+"10","21","1993","THURSDAY"
+"10","22","1993","FRIDAY"
+"10","23","1993","SATURDAY"
+"10","24","1993","SUNDAY"
+"10","25","1993","MONDAY"
+"10","26","1993","TUESDAY"
+"10","27","1993","WEDNESDAY"
+"10","28","1993","THURSDAY"
+"10","29","1993","FRIDAY"
+"10","30","1993","SATURDAY"
+"10","31","1993","SUNDAY"
+"11","1","1993","MONDAY"
+"11","2","1993","TUESDAY"
+"11","3","1993","WEDNESDAY"
+"11","4","1993","THURSDAY"
+"11","5","1993","FRIDAY"
+"11","6","1993","SATURDAY"
+"11","7","1993","SUNDAY"
+"11","8","1993","MONDAY"
+"11","9","1993","TUESDAY"
+"11","10","1993","WEDNESDAY"
+"11","11","1993","THURSDAY"
+"11","12","1993","FRIDAY"
+"11","13","1993","SATURDAY"
+"11","14","1993","SUNDAY"
+"11","15","1993","MONDAY"
+"11","16","1993","TUESDAY"
+"11","17","1993","WEDNESDAY"
+"11","18","1993","THURSDAY"
+"11","19","1993","FRIDAY"
+"11","20","1993","SATURDAY"
+"11","21","1993","SUNDAY"
+"11","22","1993","MONDAY"
+"11","23","1993","TUESDAY"
+"11","24","1993","WEDNESDAY"
+"11","25","1993","THURSDAY"
+"11","26","1993","FRIDAY"
+"11","27","1993","SATURDAY"
+"11","28","1993","SUNDAY"
+"11","29","1993","MONDAY"
+"11","30","1993","TUESDAY"
+"12","1","1993","WEDNESDAY"
+"12","2","1993","THURSDAY"
+"12","3","1993","FRIDAY"
+"12","4","1993","SATURDAY"
+"12","5","1993","SUNDAY"
+"12","6","1993","MONDAY"
+"12","7","1993","TUESDAY"
+"12","8","1993","WEDNESDAY"
+"12","9","1993","THURSDAY"
+"12","10","1993","FRIDAY"
+"12","11","1993","SATURDAY"
+"12","12","1993","SUNDAY"
+"12","13","1993","MONDAY"
+"12","14","1993","TUESDAY"
+"12","15","1993","WEDNESDAY"
+"12","16","1993","THURSDAY"
+"12","17","1993","FRIDAY"
+"12","18","1993","SATURDAY"
+"12","19","1993","SUNDAY"
+"12","20","1993","MONDAY"
+"12","21","1993","TUESDAY"
+"12","22","1993","WEDNESDAY"
+"12","23","1993","THURSDAY"
+"12","24","1993","FRIDAY"
+"12","25","1993","SATURDAY"
+"12","26","1993","SUNDAY"
+"12","27","1993","MONDAY"
+"12","28","1993","TUESDAY"
+"12","29","1993","WEDNESDAY"
+"12","30","1993","THURSDAY"
+"12","31","1993","FRIDAY"
+"1","1","1994","SATURDAY"
+"1","2","1994","SUNDAY"
+"1","3","1994","MONDAY"
+"1","4","1994","TUESDAY"
+"1","5","1994","WEDNESDAY"
+"1","6","1994","THURSDAY"
+"1","7","1994","FRIDAY"
+"1","8","1994","SATURDAY"
+"1","9","1994","SUNDAY"
+"1","10","1994","MONDAY"
+"1","11","1994","TUESDAY"
+"1","12","1994","WEDNESDAY"
+"1","13","1994","THURSDAY"
+"1","14","1994","FRIDAY"
+"1","15","1994","SATURDAY"
+"1","16","1994","SUNDAY"
+"1","17","1994","MONDAY"
+"1","18","1994","TUESDAY"
+"1","19","1994","WEDNESDAY"
+"1","20","1994","THURSDAY"
+"1","21","1994","FRIDAY"
+"1","22","1994","SATURDAY"
+"1","23","1994","SUNDAY"
+"1","24","1994","MONDAY"
+"1","25","1994","TUESDAY"
+"1","26","1994","WEDNESDAY"
+"1","27","1994","THURSDAY"
+"1","28","1994","FRIDAY"
+"1","29","1994","SATURDAY"
+"1","30","1994","SUNDAY"
+"1","31","1994","MONDAY"
+"2","1","1994","TUESDAY"
+"2","2","1994","WEDNESDAY"
+"2","3","1994","THURSDAY"
+"2","4","1994","FRIDAY"
+"2","5","1994","SATURDAY"
+"2","6","1994","SUNDAY"
+"2","7","1994","MONDAY"
+"2","8","1994","TUESDAY"
+"2","9","1994","WEDNESDAY"
+"2","10","1994","THURSDAY"
+"2","11","1994","FRIDAY"
+"2","12","1994","SATURDAY"
+"2","13","1994","SUNDAY"
+"2","14","1994","MONDAY"
+"2","15","1994","TUESDAY"
+"2","16","1994","WEDNESDAY"
+"2","17","1994","THURSDAY"
+"2","18","1994","FRIDAY"
+"2","19","1994","SATURDAY"
+"2","20","1994","SUNDAY"
+"2","21","1994","MONDAY"
+"2","22","1994","TUESDAY"
+"2","23","1994","WEDNESDAY"
+"2","24","1994","THURSDAY"
+"2","25","1994","FRIDAY"
+"2","26","1994","SATURDAY"
+"2","27","1994","SUNDAY"
+"2","28","1994","MONDAY"
+"3","1","1994","TUESDAY"
+"3","2","1994","WEDNESDAY"
+"3","3","1994","THURSDAY"
+"3","4","1994","FRIDAY"
+"3","5","1994","SATURDAY"
+"3","6","1994","SUNDAY"
+"3","7","1994","MONDAY"
+"3","8","1994","TUESDAY"
+"3","9","1994","WEDNESDAY"
+"3","10","1994","THURSDAY"
+"3","11","1994","FRIDAY"
+"3","12","1994","SATURDAY"
+"3","13","1994","SUNDAY"
+"3","14","1994","MONDAY"
+"3","15","1994","TUESDAY"
+"3","16","1994","WEDNESDAY"
+"3","17","1994","THURSDAY"
+"3","18","1994","FRIDAY"
+"3","19","1994","SATURDAY"
+"3","20","1994","SUNDAY"
+"3","21","1994","MONDAY"
+"3","22","1994","TUESDAY"
+"3","23","1994","WEDNESDAY"
+"3","24","1994","THURSDAY"
+"3","25","1994","FRIDAY"
+"3","26","1994","SATURDAY"
+"3","27","1994","SUNDAY"
+"3","28","1994","MONDAY"
+"3","29","1994","TUESDAY"
+"3","30","1994","WEDNESDAY"
+"3","31","1994","THURSDAY"
+"4","1","1994","FRIDAY"
+"4","2","1994","SATURDAY"
+"4","3","1994","SUNDAY"
+"4","4","1994","MONDAY"
+"4","5","1994","TUESDAY"
+"4","6","1994","WEDNESDAY"
+"4","7","1994","THURSDAY"
+"4","8","1994","FRIDAY"
+"4","9","1994","SATURDAY"
+"4","10","1994","SUNDAY"
+"4","11","1994","MONDAY"
+"4","12","1994","TUESDAY"
+"4","13","1994","WEDNESDAY"
+"4","14","1994","THURSDAY"
+"4","15","1994","FRIDAY"
+"4","16","1994","SATURDAY"
+"4","17","1994","SUNDAY"
+"4","18","1994","MONDAY"
+"4","19","1994","TUESDAY"
+"4","20","1994","WEDNESDAY"
+"4","21","1994","THURSDAY"
+"4","22","1994","FRIDAY"
+"4","23","1994","SATURDAY"
+"4","24","1994","SUNDAY"
+"4","25","1994","MONDAY"
+"4","26","1994","TUESDAY"
+"4","27","1994","WEDNESDAY"
+"4","28","1994","THURSDAY"
+"4","29","1994","FRIDAY"
+"4","30","1994","SATURDAY"
+"5","1","1994","SUNDAY"
+"5","2","1994","MONDAY"
+"5","3","1994","TUESDAY"
+"5","4","1994","WEDNESDAY"
+"5","5","1994","THURSDAY"
+"5","6","1994","FRIDAY"
+"5","7","1994","SATURDAY"
+"5","8","1994","SUNDAY"
+"5","9","1994","MONDAY"
+"5","10","1994","TUESDAY"
+"5","11","1994","WEDNESDAY"
+"5","12","1994","THURSDAY"
+"5","13","1994","FRIDAY"
+"5","14","1994","SATURDAY"
+"5","15","1994","SUNDAY"
+"5","16","1994","MONDAY"
+"5","17","1994","TUESDAY"
+"5","18","1994","WEDNESDAY"
+"5","19","1994","THURSDAY"
+"5","20","1994","FRIDAY"
+"5","21","1994","SATURDAY"
+"5","22","1994","SUNDAY"
+"5","23","1994","MONDAY"
+"5","24","1994","TUESDAY"
+"5","25","1994","WEDNESDAY"
+"5","26","1994","THURSDAY"
+"5","27","1994","FRIDAY"
+"5","28","1994","SATURDAY"
+"5","29","1994","SUNDAY"
+"5","30","1994","MONDAY"
+"5","31","1994","TUESDAY"
+"6","1","1994","WEDNESDAY"
+"6","2","1994","THURSDAY"
+"6","3","1994","FRIDAY"
+"6","4","1994","SATURDAY"
+"6","5","1994","SUNDAY"
+"6","6","1994","MONDAY"
+"6","7","1994","TUESDAY"
+"6","8","1994","WEDNESDAY"
+"6","9","1994","THURSDAY"
+"6","10","1994","FRIDAY"
+"6","11","1994","SATURDAY"
+"6","12","1994","SUNDAY"
+"6","13","1994","MONDAY"
+"6","14","1994","TUESDAY"
+"6","15","1994","WEDNESDAY"
+"6","16","1994","THURSDAY"
+"6","17","1994","FRIDAY"
+"6","18","1994","SATURDAY"
+"6","19","1994","SUNDAY"
+"6","20","1994","MONDAY"
+"6","21","1994","TUESDAY"
+"6","22","1994","WEDNESDAY"
+"6","23","1994","THURSDAY"
+"6","24","1994","FRIDAY"
+"6","25","1994","SATURDAY"
+"6","26","1994","SUNDAY"
+"6","27","1994","MONDAY"
+"6","28","1994","TUESDAY"
+"6","29","1994","WEDNESDAY"
+"6","30","1994","THURSDAY"
+"7","1","1994","FRIDAY"
+"7","2","1994","SATURDAY"
+"7","3","1994","SUNDAY"
+"7","4","1994","MONDAY"
+"7","5","1994","TUESDAY"
+"7","6","1994","WEDNESDAY"
+"7","7","1994","THURSDAY"
+"7","8","1994","FRIDAY"
+"7","9","1994","SATURDAY"
+"7","10","1994","SUNDAY"
+"7","11","1994","MONDAY"
+"7","12","1994","TUESDAY"
+"7","13","1994","WEDNESDAY"
+"7","14","1994","THURSDAY"
+"7","15","1994","FRIDAY"
+"7","16","1994","SATURDAY"
+"7","17","1994","SUNDAY"
+"7","18","1994","MONDAY"
+"7","19","1994","TUESDAY"
+"7","20","1994","WEDNESDAY"
+"7","21","1994","THURSDAY"
+"7","22","1994","FRIDAY"
+"7","23","1994","SATURDAY"
+"7","24","1994","SUNDAY"
+"7","25","1994","MONDAY"
+"7","26","1994","TUESDAY"
+"7","27","1994","WEDNESDAY"
+"7","28","1994","THURSDAY"
+"7","29","1994","FRIDAY"
+"7","30","1994","SATURDAY"
+"7","31","1994","SUNDAY"
+"8","1","1994","MONDAY"
+"8","2","1994","TUESDAY"
+"8","3","1994","WEDNESDAY"
+"8","4","1994","THURSDAY"
+"8","5","1994","FRIDAY"
+"8","6","1994","SATURDAY"
+"8","7","1994","SUNDAY"
+"8","8","1994","MONDAY"
+"8","9","1994","TUESDAY"
+"8","10","1994","WEDNESDAY"
+"8","11","1994","THURSDAY"
+"8","12","1994","FRIDAY"
+"8","13","1994","SATURDAY"
+"8","14","1994","SUNDAY"
+"8","15","1994","MONDAY"
+"8","16","1994","TUESDAY"
+"8","17","1994","WEDNESDAY"
+"8","18","1994","THURSDAY"
+"8","19","1994","FRIDAY"
+"8","20","1994","SATURDAY"
+"8","21","1994","SUNDAY"
+"8","22","1994","MONDAY"
+"8","23","1994","TUESDAY"
+"8","24","1994","WEDNESDAY"
+"8","25","1994","THURSDAY"
+"8","26","1994","FRIDAY"
+"8","27","1994","SATURDAY"
+"8","28","1994","SUNDAY"
+"8","29","1994","MONDAY"
+"8","30","1994","TUESDAY"
+"8","31","1994","WEDNESDAY"
+"9","1","1994","THURSDAY"
+"9","2","1994","FRIDAY"
+"9","3","1994","SATURDAY"
+"9","4","1994","SUNDAY"
+"9","5","1994","MONDAY"
+"9","6","1994","TUESDAY"
+"9","7","1994","WEDNESDAY"
+"9","8","1994","THURSDAY"
+"9","9","1994","FRIDAY"
+"9","10","1994","SATURDAY"
+"9","11","1994","SUNDAY"
+"9","12","1994","MONDAY"
+"9","13","1994","TUESDAY"
+"9","14","1994","WEDNESDAY"
+"9","15","1994","THURSDAY"
+"9","16","1994","FRIDAY"
+"9","17","1994","SATURDAY"
+"9","18","1994","SUNDAY"
+"9","19","1994","MONDAY"
+"9","20","1994","TUESDAY"
+"9","21","1994","WEDNESDAY"
+"9","22","1994","THURSDAY"
+"9","23","1994","FRIDAY"
+"9","24","1994","SATURDAY"
+"9","25","1994","SUNDAY"
+"9","26","1994","MONDAY"
+"9","27","1994","TUESDAY"
+"9","28","1994","WEDNESDAY"
+"9","29","1994","THURSDAY"
+"9","30","1994","FRIDAY"
+"10","1","1994","SATURDAY"
+"10","2","1994","SUNDAY"
+"10","3","1994","MONDAY"
+"10","4","1994","TUESDAY"
+"10","5","1994","WEDNESDAY"
+"10","6","1994","THURSDAY"
+"10","7","1994","FRIDAY"
+"10","8","1994","SATURDAY"
+"10","9","1994","SUNDAY"
+"10","10","1994","MONDAY"
+"10","11","1994","TUESDAY"
+"10","12","1994","WEDNESDAY"
+"10","13","1994","THURSDAY"
+"10","14","1994","FRIDAY"
+"10","15","1994","SATURDAY"
+"10","16","1994","SUNDAY"
+"10","17","1994","MONDAY"
+"10","18","1994","TUESDAY"
+"10","19","1994","WEDNESDAY"
+"10","20","1994","THURSDAY"
+"10","21","1994","FRIDAY"
+"10","22","1994","SATURDAY"
+"10","23","1994","SUNDAY"
+"10","24","1994","MONDAY"
+"10","25","1994","TUESDAY"
+"10","26","1994","WEDNESDAY"
+"10","27","1994","THURSDAY"
+"10","28","1994","FRIDAY"
+"10","29","1994","SATURDAY"
+"10","30","1994","SUNDAY"
+"10","31","1994","MONDAY"
+"11","1","1994","TUESDAY"
+"11","2","1994","WEDNESDAY"
+"11","3","1994","THURSDAY"
+"11","4","1994","FRIDAY"
+"11","5","1994","SATURDAY"
+"11","6","1994","SUNDAY"
+"11","7","1994","MONDAY"
+"11","8","1994","TUESDAY"
+"11","9","1994","WEDNESDAY"
+"11","10","1994","THURSDAY"
+"11","11","1994","FRIDAY"
+"11","12","1994","SATURDAY"
+"11","13","1994","SUNDAY"
+"11","14","1994","MONDAY"
+"11","15","1994","TUESDAY"
+"11","16","1994","WEDNESDAY"
+"11","17","1994","THURSDAY"
+"11","18","1994","FRIDAY"
+"11","19","1994","SATURDAY"
+"11","20","1994","SUNDAY"
+"11","21","1994","MONDAY"
+"11","22","1994","TUESDAY"
+"11","23","1994","WEDNESDAY"
+"11","24","1994","THURSDAY"
+"11","25","1994","FRIDAY"
+"11","26","1994","SATURDAY"
+"11","27","1994","SUNDAY"
+"11","28","1994","MONDAY"
+"11","29","1994","TUESDAY"
+"11","30","1994","WEDNESDAY"
+"12","1","1994","THURSDAY"
+"12","2","1994","FRIDAY"
+"12","3","1994","SATURDAY"
+"12","4","1994","SUNDAY"
+"12","5","1994","MONDAY"
+"12","6","1994","TUESDAY"
+"12","7","1994","WEDNESDAY"
+"12","8","1994","THURSDAY"
+"12","9","1994","FRIDAY"
+"12","10","1994","SATURDAY"
+"12","11","1994","SUNDAY"
+"12","12","1994","MONDAY"
+"12","13","1994","TUESDAY"
+"12","14","1994","WEDNESDAY"
+"12","15","1994","THURSDAY"
+"12","16","1994","FRIDAY"
+"12","17","1994","SATURDAY"
+"12","18","1994","SUNDAY"
+"12","19","1994","MONDAY"
+"12","20","1994","TUESDAY"
+"12","21","1994","WEDNESDAY"
+"12","22","1994","THURSDAY"
+"12","23","1994","FRIDAY"
+"12","24","1994","SATURDAY"
+"12","25","1994","SUNDAY"
+"12","26","1994","MONDAY"
+"12","27","1994","TUESDAY"
+"12","28","1994","WEDNESDAY"
+"12","29","1994","THURSDAY"
+"12","30","1994","FRIDAY"
+"12","31","1994","SATURDAY"
diff --git a/sql-bench/Data/ATIS/day_name.txt b/sql-bench/Data/ATIS/day_name.txt
new file mode 100644
index 00000000..eca77e37
--- /dev/null
+++ b/sql-bench/Data/ATIS/day_name.txt
@@ -0,0 +1,7 @@
+1,'MONDAY'
+2,'TUESDAY'
+3,'WEDNESDAY'
+4,'THURSDAY'
+5,'FRIDAY'
+6,'SATURDAY'
+7,'SUNDAY'
diff --git a/sql-bench/Data/ATIS/dual_carrier.txt b/sql-bench/Data/ATIS/dual_carrier.txt
new file mode 100644
index 00000000..ecfc2e68
--- /dev/null
+++ b/sql-bench/Data/ATIS/dual_carrier.txt
@@ -0,0 +1,114 @@
+'AA','AA',3000,5799,'AMERICAN EAGLE'
+'AC','RJ',1001,1010,'AIR CANADA'
+'AC','CS',1100,1199,'AIR CANADA'
+'AC','GX',1200,1499,'AIR CANADA'
+'AC','ZX',1500,1799,'AIR CANADA'
+'AC','QK',1800,1899,'AIR CANADA'
+'AC','3J',1900,1949,'AIR CANADA'
+'AC','3J',1977,1981,'AIR CANADA'
+'AC','3J',1990,1999,'AIR CANADA'
+'AC','NV',1950,1976,'AIR CANADA'
+'AC','NV',1982,1989,'AIR CANADA'
+'AQ','WP',1000,1999,'ALOHA AIRLINES,INC'
+'AS','QX',2000,2199,'ALASKA AIRLINES COMMUTER SERVICE'
+'AS','QX',2260,2999,'ALASKA AIRLINES COMMUTER SERVICE'
+'AS','BF',2200,2259,'ALASKA AIRLINES COMMUTER SERVICE'
+'AS','BF',4000,4199,'ALASKA AIRLINES COMMUTER SERVICE'
+'AS','JF',4400,4499,'ALASKA AIRLINES COMMUTER SERVICE'
+'AS','KN',4500,4599,'ALASKA AIRLINES COMMUTER SERVICE'
+'AS','8E',4600,4699,'ALASKA AIRLINES COMMUTER SERVICE'
+'AS','7H',4800,4899,'ALASKA AIRLINES COMMUTER SERVICE'
+'BA','BE',8001,8002,'BRITISH AIRWAYS'
+'BA','BE',8004,8004,'BRITISH AIRWAYS'
+'BA','UA',8022,8022,'BRITISH AIRWAYS'
+'BA','UA',8154,8155,'BRITISH AIRWAYS'
+'BA','UA',8159,8159,'BRITISH AIRWAYS'
+'BA','UA',8235,8235,'BRITISH AIRWAYS'
+'BA','UA',8243,8243,'BRITISH AIRWAYS'
+'BA','UA',8246,8246,'BRITISH AIRWAYS'
+'BA','UA',8064,8064,'BRITISH AIRWAYS'
+'BA','UA',8269,8269,'BRITISH AIRWAYS'
+'BA','UA',8300,8300,'BRITISH AIRWAYS'
+'BF','2E',1100,1399,'MARKAIR,INC.'
+'BF','2E',1800,1899,'MARKAIR,INC.'
+'CO','CO',950,967,'CONTINENTAL AIRLINES/AIR MICRONESIA'
+'CO','CO',970,997,'CONTINENTAL AIRLINES/AIR MICRONESIA'
+'CO','CO',1880,1899,'CONTINENTAL AIRLINES/AIR MICRONESIA'
+'CO','CO',3300,3399,'CONTINENTAL AIRLINES/AIR MICRONESIA'
+'CO','SK',8900,8949,'CONTINENTAL AIRLINES/SAS SCANDINAVIAN AIRLINES SYSTEM'
+'CO','SK',9000,9125,'CONTINENTAL AIRLINES/SAS SCANDINAVIAN AIRLINES SYSTEM'
+'CO','SK',9370,9435,'CONTINENTAL AIRLINES/SAS SCANDINAVIAN AIRLINES SYSTEM'
+'CO','JC',2000,2499,'CONTINENTAL EXPRESS'
+'CO','RU',2500,2799,'CONTINENTAL EXPRESS'
+'CO','RU',3000,3025,'CONTINENTAL EXPRESS'
+'CO','RU',4400,4999,'CONTINENTAL EXPRESS'
+'CO','CO',2800,2999,'CONTINENTAL EXPRESS/RESORT EXPRESS'
+'CO','CO',3026,3099,'CONTINENTAL EXPRESS/HOME JAMES'
+'CO','CO',3100,3199,'CONTINENTAL EXPRESS/COLORADO MOUNTAIN EXPRESS'
+'CO','6J',3200,3299,'CONTINENTAL EXPRESS/SOUTHERN JERSEY AIRWAYS,INC.'
+'CO','QO',3400,3999,'CONTINENTAL EXPRESS/BAR HARBOR AIRLINES'
+'CP','SK',68,69,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','LH',144,145,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',950,951,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',954,955,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',957,958,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',960,961,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',963,964,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',967,968,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',983,983,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',986,986,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',988,988,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',991,992,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','WD',994,995,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','PJ',1001,1010,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','KI',1100,1272,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','KI',1274,1274,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','KI',1276,1276,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','KI',1278,1283,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','KI',1285,1288,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','MO',1300,1359,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','9A',1400,1499,'CANADIAN AIRLINES INTERNATIONAL LTD. CANADIAN PARTNERS'
+'CP','CP',1800,1999,'CANADIAN AIRLINES INTERNATIONAL LTD./ONTARIO EXPRESS LTD.'
+'DL','EV',2000,2999,'DELTA CONNECTION'
+'DL','OH',3000,3699,'DELTA CONNECTION'
+'DL','HQ',4300,4999,'DELTA CONNECTION'
+'DL','OO',5200,5999,'DELTA CONNECTION'
+'EA','LI',2300,2399,'EASTERN EXPRESS'
+'EA','HY',2900,3299,'EASTERN EXPRESS'
+'EA','QO',3700,3999,'EASTERN EXPRESS'
+'KL','UK',2843,2843,'KLM-ROYAL DUTCH AIRLINES'
+'KL','UK',2845,2845,'KLM-ROYAL DUTCH AIRLINES'
+'KL','UK',2847,2847,'KLM-ROYAL DUTCH AIRLINES'
+'ML','JT',1500,1550,'THE MIDWAY CONNECTION/IOWA AIRWAYS'
+'ML','ML',1600,1999,'THE MIDWAY CONNECTION/MIDWAY COMMUTER/FISCHER BROS. AVIATION'
+'ND','QR',240,259,'INTAIR'
+'ND','ND',940,959,'INTAIR/ALEXANDAIR,INC.'
+'NW','QX',2000,2399,'NORTHWEST AIRLINES'
+'NW','US',4000,4999,'NORTHWEST AIRLINES'
+'NW','9E',2500,2999,'NORTHWEST AIRLINK'
+'NW','XJ',3000,3399,'NORTHWEST AIRLINK'
+'NW','RP',3500,3799,'NORTHWEST AIRLINK'
+'NW','GQ',3800,3999,'NORTHWEST AIRLINK'
+'PA','RZ',270,271,'PAN AM EXPRESS,INC.'
+'PA','RZ',4500,4999,'PAN AM EXPRESS,INC.'
+'PA','MA',4072,4073,'PAN AMERICAN WORLD AIRWAYS,INC./MALEV-HUNGARIAN AIRLINES'
+'PA','JP',4076,4077,'PAN AMERICAN WORLD AIRWAYS,INC./ADRIA AIRWAYS'
+'QF','AA',301,302,'QANTAS AIRWAYS LTD.'
+'QK','QK',803,804,'AIR NOVA INC./NEWFOUNDLAND LABRADOR AIR TRANSPORT,LTD.'
+'QY','QY',600,615,'AERO VIRGIN ISLANDS CORP./TAINO AIRWAYS'
+'TW','US',8150,8155,'TRANS WORLD AIRLINES,INC.'
+'TW','US',8156,8199,'TRANS WORLD AIRLINES,INC.'
+'TW','9N',7000,7199,'TRANS WORLD EXPRESS,'
+'TW','ZV',7300,7499,'TRANS WORLD EXPRESS,'
+'TW','JI',7550,7569,'TRANS WORLD EXPRESS,'
+'TW','8P',7570,7699,'TRANS WORLD EXPRESS,'
+'TW','SS',7750,7949,'TRANS WORLD EXPRESS,'
+'UA','XV',2100,2349,'UNITED EXPRESS'
+'UA','NO',2375,2624,'UNITED EXPRESS'
+'UA','ZW',2640,3099,'UNITED EXPRESS'
+'UA','OE',3100,3569,'UNITED EXPRESS'
+'UA','AP',3640,3999,'UNITED EXPRESS'
+'US','US',3000,4999,'USAIR EXPRESS'
+'YX','YX',1000,1999,'MIDWEST EXPRESS CONNECTION/SKYWAY AIRLINES INC.'
+'2F','2F',526,529,'FRONTIER FLYING SERVICE/TATONDUK AIR SERVICE'
+'','',0,0,''
diff --git a/sql-bench/Data/ATIS/fare.txt b/sql-bench/Data/ATIS/fare.txt
new file mode 100644
index 00000000..5585a29a
--- /dev/null
+++ b/sql-bench/Data/ATIS/fare.txt
@@ -0,0 +1,534 @@
+'7100001','ATL','BOS','F','','',497.00,994.00
+'7100002','ATL','BOS','FN','','',348.00,696.00
+'7100003','ATL','BOS','Y','','',331.00,662.00
+'7100004','ATL','BOS','YN','','',266.00,532.00
+'7100005','ATL','BOS','K','','AP/57',0.00,388.00
+'7100006','ATL','BOS','KO','','AP/57',0.00,368.00
+'7100007','ATL','BOS','QW','','AP/57',0.00,268.00
+'7100008','ATL','BOS','QX','','AP/57',0.00,248.00
+'7100009','ATL','BOS','B','','VU/1',230.00,0.00
+'7100010','ATL','BOS','Y','','VU/1',226.00,0.00
+'7100011','ATL','BWI','F','','',428.00,856.00
+'7100012','ATL','BWI','FN','','',299.00,598.00
+'7100013','ATL','BWI','Y','','',286.00,572.00
+'7100014','ATL','BWI','YN','','',230.00,460.00
+'7100015','ATL','BWI','QW','','AP/57',0.00,248.00
+'7100016','ATL','BWI','QX','','AP/57',0.00,208.00
+'7100017','ATL','BWI','B','','VU/1',199.00,0.00
+'7100018','ATL','BWI','Y','','VU/1',196.00,0.00
+'7100019','ATL','DEN','F','UA','',685.00,1370.00
+'7100020','ATL','DEN','F','','',677.00,1354.00
+'7100021','ATL','DEN','FN','','',475.00,950.00
+'7100022','ATL','DEN','Y','UA','',457.00,914.00
+'7100023','ATL','DEN','Y','','',452.00,904.00
+'7100024','ATL','DEN','B','DL','',435.00,870.00
+'7100025','ATL','DEN','H','EA','',410.00,820.00
+'7100026','ATL','DEN','M','DL','',410.00,820.00
+'7100027','ATL','DEN','YN','','',361.00,722.00
+'7100028','ATL','DEN','MW','','AP/57',0.00,438.00
+'7100029','ATL','DEN','MX','','AP/57',0.00,378.00
+'7100030','ATL','DEN','QW','','AP/57',0.00,298.00
+'7100031','ATL','DEN','QX','','AP/57',0.00,238.00
+'7100032','ATL','DEN','B','','VU/1',314.00,0.00
+'7100033','ATL','DEN','Y','','VU/1',314.00,0.00
+'7100034','ATL','DEN','B','','AP/55',304.00,0.00
+'7100035','ATL','DEN','H','','AP/55',228.00,0.00
+'7100036','ATL','DFW','F','AA','',512.00,1024.00
+'7100037','ATL','DFW','F','DL','',504.00,1008.00
+'7100038','ATL','DFW','F','','',503.00,1006.00
+'7100039','ATL','DFW','FN','AA','',360.00,720.00
+'7100040','ATL','DFW','FN','','',352.00,704.00
+'7100041','ATL','DFW','Y','','',341.00,682.00
+'7100042','ATL','DFW','Y','DL','',336.00,672.00
+'7100043','ATL','DFW','YN','AA','',277.00,554.00
+'7100044','ATL','DFW','YN','','',272.00,544.00
+'7100045','ATL','DFW','QW','','AP/80',0.00,268.00
+'7100046','ATL','DFW','QX','','AP/80',0.00,228.00
+'7100047','ATL','DFW','B','','VU/1',233.00,0.00
+'7100048','ATL','DFW','Y','AA','VU/1',233.00,0.00
+'7100049','ATL','DFW','M','','VU/1',233.00,0.00
+'7100050','ATL','DFW','Y','','VU/1',222.00,0.00
+'7100051','ATL','OAK','F','UA','',843.00,1686.00
+'7100052','ATL','OAK','Y','UA','',557.00,1114.00
+'7100053','ATL','OAK','QW','','AP/80',0.00,398.00
+'7100054','ATL','OAK','QX','','AP/80',0.00,348.00
+'7100055','ATL','OAK','B','','AP/68',503.00,0.00
+'7100056','ATL','OAK','B','','VU/1',387.00,0.00
+'7100057','ATL','OAK','Y','','VU/1',376.00,0.00
+'7100058','ATL','PHL','F','US','',465.00,930.00
+'7100059','ATL','PHL','F','','',449.00,898.00
+'7100060','ATL','PHL','FN','','',314.00,628.00
+'7100061','ATL','PHL','Y','','',295.00,590.00
+'7100062','ATL','PHL','Y','US','',290.00,580.00
+'7100063','ATL','PHL','YN','','',243.00,486.00
+'7100064','ATL','PHL','KW','','AP/57',0.00,268.00
+'7100065','ATL','PHL','QW','','AP/80',0.00,268.00
+'7100066','ATL','PHL','QW','','AP/57',0.00,268.00
+'7100067','ATL','PHL','KX','','AP/57',0.00,228.00
+'7100068','ATL','PHL','QX','','AP/57',0.00,228.00
+'7100069','ATL','PHL','QX','','AP/80',0.00,228.00
+'7100070','ATL','PHL','B','','VU/1',205.00,0.00
+'7100071','ATL','PHL','Y','','VU/1',205.00,0.00
+'7100072','ATL','PIT','F','','',416.00,832.00
+'7100073','ATL','PIT','FN','','',291.00,582.00
+'7100074','ATL','PIT','Y','','',274.00,548.00
+'7100075','ATL','PIT','YN','','',217.00,434.00
+'7100076','ATL','PIT','KW','','AP/57',0.00,268.00
+'7100077','ATL','PIT','QW','','AP/57',0.00,248.00
+'7100078','ATL','PIT','KX','','AP/57',0.00,228.00
+'7100079','ATL','PIT','QX','','AP/57',0.00,208.00
+'7100080','ATL','PIT','B','','VU/1',190.00,0.00
+'7100081','ATL','PIT','Y','','VU/1',190.00,0.00
+'7100082','ATL','SFO','F','','',828.00,1656.00
+'7100083','ATL','SFO','Y','','',552.00,1104.00
+'7100084','ATL','SFO','QW','','AP/57',0.00,398.00
+'7100085','ATL','SFO','QX','','AP/57',0.00,358.00
+'7100086','ATL','SFO','K','','AP/68',435.00,0.00
+'7100087','ATL','SFO','Q','','AP/68',435.00,0.00
+'7100088','ATL','SFO','B','','VU/1',383.00,0.00
+'7100089','ATL','SFO','Y','','VU/1',376.00,0.00
+'7100090','BOS','ATL','F','','',497.00,994.00
+'7100091','BOS','ATL','FN','','',348.00,696.00
+'7100092','BOS','ATL','Y','','',331.00,662.00
+'7100093','BOS','ATL','YN','','',266.00,532.00
+'7100094','BOS','ATL','K','','AP/57',0.00,388.00
+'7100095','BOS','ATL','KO','','AP/57',0.00,368.00
+'7100096','BOS','ATL','QW','','AP/57',0.00,268.00
+'7100097','BOS','ATL','QX','','AP/57',0.00,248.00
+'7100098','BOS','ATL','B','','VU/1',230.00,0.00
+'7100099','BOS','ATL','Y','','VU/1',226.00,0.00
+'7100100','BOS','BWI','F','','',368.00,736.00
+'7100101','BOS','BWI','Y','','',161.00,322.00
+'7100102','BOS','BWI','Y','','VU/1',109.00,0.00
+'7100103','BOS','DEN','F','','',713.00,1426.00
+'7100104','BOS','DEN','Y','','',475.00,950.00
+'7100105','BOS','DEN','QW','','AP/80',0.00,378.00
+'7100106','BOS','DEN','QX','','AP/80',0.00,338.00
+'7100107','BOS','DEN','B','','VU/1',379.00,0.00
+'7100108','BOS','DEN','Y','','VU/1',326.00,0.00
+'7100109','BOS','DFW','F','AA','',773.00,1546.00
+'7100110','BOS','DFW','F','DL','',765.00,1530.00
+'7100111','BOS','DFW','Y','AA','',515.00,1030.00
+'7100112','BOS','DFW','Y','DL','',510.00,1020.00
+'7100113','BOS','DFW','B','','VU/1',354.00,0.00
+'7100114','BOS','DFW','Y','','VU/1',354.00,0.00
+'7100115','BOS','PHL','F','','',210.00,420.00
+'7100116','BOS','PHL','Y','DL','',147.00,294.00
+'7100117','BOS','PHL','B','DL','',140.00,280.00
+'7100118','BOS','PHL','K','','',140.00,280.00
+'7100119','BOS','PHL','Y','DL','',140.00,280.00
+'7100120','BOS','PHL','Y','','',140.00,280.00
+'7100121','BOS','PHL','B','','AP/75',0.00,270.00
+'7100122','BOS','PHL','B','DL','',129.00,258.00
+'7100123','BOS','PHL','B','US','',109.00,218.00
+'7100124','BOS','PHL','M','ML','',109.00,218.00
+'7100125','BOS','PHL','Q','','AP/27',0.00,188.00
+'7100126','BOS','PHL','B','','AP/44',129.00,0.00
+'7100127','BOS','PHL','B','','VU/1',102.00,0.00
+'7100128','BOS','PHL','Y','','VU/1',97.00,0.00
+'7100129','BOS','PIT','F','','',330.00,660.00
+'7100130','BOS','PIT','Y','','',240.00,480.00
+'7100131','BOS','PIT','Y','','VU/1',153.00,0.00
+'7100132','BOS','SFO','F','','',860.00,1720.00
+'7100133','BOS','SFO','F','AA','',852.00,1704.00
+'7100134','BOS','SFO','C','','',635.00,1270.00
+'7100135','BOS','SFO','Y','TW','',605.00,1210.00
+'7100136','BOS','SFO','Y','UA','',605.00,1210.00
+'7100137','BOS','SFO','Y','','',573.00,1146.00
+'7100138','BOS','SFO','B','AA','',508.00,1016.00
+'7100139','BOS','SFO','KW','','AP/57',0.00,418.00
+'7100140','BOS','SFO','QW','','AP/80',0.00,418.00
+'7100141','BOS','SFO','KX','','AP/57',0.00,378.00
+'7100142','BOS','SFO','QX','','AP/80',0.00,378.00
+'7100143','BOS','SFO','B','','VU/1',412.00,0.00
+'7100144','BOS','SFO','M','','VU/1',394.00,0.00
+'7100145','BOS','SFO','Y','','VU/1',394.00,0.00
+'7100146','BWI','ATL','F','','',428.00,856.00
+'7100147','BWI','ATL','FN','','',299.00,598.00
+'7100148','BWI','ATL','Y','','',286.00,572.00
+'7100149','BWI','ATL','YN','','',230.00,460.00
+'7100150','BWI','ATL','QW','','AP/57',0.00,248.00
+'7100151','BWI','ATL','QX','','AP/57',0.00,208.00
+'7100152','BWI','ATL','B','','VU/1',199.00,0.00
+'7100153','BWI','ATL','Y','','VU/1',196.00,0.00
+'7100154','BWI','BOS','F','','',368.00,736.00
+'7100155','BWI','BOS','Y','','',161.00,322.00
+'7100156','BWI','BOS','Y','','VU/1',109.00,0.00
+'7100157','BWI','DEN','F','US','',653.00,1306.00
+'7100158','BWI','DEN','F','','',645.00,1290.00
+'7100159','BWI','DEN','Y','UA','',424.00,848.00
+'7100160','BWI','DEN','Y','','',420.00,840.00
+'7100161','BWI','DEN','Q','US','',238.00,476.00
+'7100162','BWI','DEN','QW','','AP/80',0.00,306.00
+'7100163','BWI','DEN','QX','','AP/80',0.00,256.00
+'7100164','BWI','DEN','Y','','VU/1',280.00,0.00
+'7100165','BWI','DFW','F','AA','',630.00,1260.00
+'7100166','BWI','DFW','F','','',622.00,1244.00
+'7100167','BWI','DFW','Y','AA','',420.00,840.00
+'7100168','BWI','DFW','Y','','',415.00,830.00
+'7100169','BWI','DFW','B','','VU/1',288.00,0.00
+'7100170','BWI','DFW','Y','','VU/1',288.00,0.00
+'7100171','BWI','PHL','Y','','',165.00,330.00
+'7100172','BWI','PHL','M','','',106.00,212.00
+'7100173','BWI','PHL','Y','','VU/1',115.00,0.00
+'7100174','BWI','PIT','F','','',172.00,344.00
+'7100175','BWI','PIT','Y','','',119.00,238.00
+'7100176','BWI','PIT','Y','','VU/1',80.00,0.00
+'7100177','DEN','ATL','F','UA','',685.00,1370.00
+'7100178','DEN','ATL','F','','',677.00,1354.00
+'7100179','DEN','ATL','FN','','',475.00,950.00
+'7100180','DEN','ATL','Y','UA','',457.00,914.00
+'7100181','DEN','ATL','Y','','',452.00,904.00
+'7100182','DEN','ATL','B','DL','',435.00,870.00
+'7100183','DEN','ATL','H','','',410.00,820.00
+'7100184','DEN','ATL','M','DL','',410.00,820.00
+'7100185','DEN','ATL','YN','','',361.00,722.00
+'7100186','DEN','ATL','MW','','AP/57',0.00,438.00
+'7100187','DEN','ATL','MX','','AP/57',0.00,378.00
+'7100188','DEN','ATL','QW','','AP/57',0.00,298.00
+'7100189','DEN','ATL','QX','','AP/57',0.00,238.00
+'7100190','DEN','ATL','B','','VU/1',314.00,0.00
+'7100191','DEN','ATL','Y','','VU/1',314.00,0.00
+'7100192','DEN','ATL','B','','AP/55',304.00,0.00
+'7100193','DEN','BOS','F','','',713.00,1426.00
+'7100194','DEN','BOS','F','US','',705.00,1410.00
+'7100195','DEN','BOS','Y','','',475.00,950.00
+'7100196','DEN','BOS','Y','US','',470.00,940.00
+'7100197','DEN','BOS','B','US','',382.00,764.00
+'7100198','DEN','BOS','M','DL','',295.00,590.00
+'7100199','DEN','BOS','Q','US','',295.00,590.00
+'7100200','DEN','BOS','Q','DL','',238.00,476.00
+'7100201','DEN','BOS','KW','','AP/57',0.00,378.00
+'7100202','DEN','BOS','QW','','AP/80',0.00,378.00
+'7100203','DEN','BOS','KX','','AP/57',0.00,338.00
+'7100204','DEN','BOS','QX','','AP/80',0.00,338.00
+'7100205','DEN','BOS','B','','VU/1',379.00,0.00
+'7100206','DEN','BOS','Y','','VU/1',326.00,0.00
+'7100207','DEN','BWI','F','US','',653.00,1306.00
+'7100208','DEN','BWI','F','UA','',645.00,1290.00
+'7100209','DEN','BWI','Y','','',424.00,848.00
+'7100210','DEN','BWI','Y','US','',420.00,840.00
+'7100211','DEN','BWI','Q','US','',238.00,476.00
+'7100212','DEN','BWI','QW','','AP/80',0.00,306.00
+'7100213','DEN','BWI','QX','','AP/80',0.00,256.00
+'7100214','DEN','BWI','M','','VU/1',296.00,0.00
+'7100215','DEN','BWI','Y','','VU/1',280.00,0.00
+'7100216','DEN','DFW','F','','',489.00,978.00
+'7100217','DEN','DFW','F','DL','',481.00,962.00
+'7100218','DEN','DFW','FN','AA','',344.00,688.00
+'7100219','DEN','DFW','FN','','',336.00,672.00
+'7100220','DEN','DFW','Y','','',305.00,610.00
+'7100221','DEN','DFW','Y','DL','',300.00,600.00
+'7100222','DEN','DFW','YN','AA','',261.00,522.00
+'7100223','DEN','DFW','YN','','',256.00,512.00
+'7100224','DEN','DFW','QW','','AP/80',0.00,268.00
+'7100225','DEN','DFW','QX','','AP/80',0.00,228.00
+'7100226','DEN','DFW','B','','VU/1',208.00,0.00
+'7100227','DEN','DFW','Y','','VU/1',208.00,0.00
+'7100228','DEN','OAK','F','','',488.00,976.00
+'7100229','DEN','OAK','Y','','',325.00,650.00
+'7100230','DEN','OAK','QW','','AP/80',0.00,288.00
+'7100231','DEN','OAK','QX','','AP/80',0.00,248.00
+'7100232','DEN','OAK','Y','','VU/1',222.00,0.00
+'7100233','DEN','PHL','F','','',706.00,1412.00
+'7100234','DEN','PHL','Y','','',470.00,940.00
+'7100235','DEN','PHL','FN','','',441.00,882.00
+'7100236','DEN','PHL','YN','','',336.00,672.00
+'7100237','DEN','PHL','KW','','AP/57',0.00,488.00
+'7100238','DEN','PHL','KX','','AP/57',0.00,418.00
+'7100239','DEN','PHL','QW','','AP/80',0.00,348.00
+'7100240','DEN','PHL','QX','','AP/80',0.00,278.00
+'7100241','DEN','PHL','Y','','VU/1',323.00,0.00
+'7100242','DEN','PHL','B','','VU/1',297.00,0.00
+'7100243','DEN','PIT','F','','',647.00,1294.00
+'7100244','DEN','PIT','Y','','',412.00,824.00
+'7100245','DEN','PIT','Q','','',287.00,574.00
+'7100246','DEN','PIT','Y','','VU/1',285.00,0.00
+'7100247','DEN','SFO','F','','',488.00,976.00
+'7100248','DEN','SFO','Y','','',325.00,650.00
+'7100249','DEN','SFO','YN','','',325.00,650.00
+'7100250','DEN','SFO','QW','','AP/80',0.00,288.00
+'7100251','DEN','SFO','QX','','AP/80',0.00,248.00
+'7100252','DEN','SFO','B','','VU/1',222.00,0.00
+'7100253','DEN','SFO','Y','','VU/1',222.00,0.00
+'7100254','DFW','ATL','F','AA','',512.00,1024.00
+'7100255','DFW','ATL','F','DL','',504.00,1008.00
+'7100256','DFW','ATL','F','','',488.00,976.00
+'7100257','DFW','ATL','FN','AA','',360.00,720.00
+'7100258','DFW','ATL','FN','','',352.00,704.00
+'7100259','DFW','ATL','Y','AA','',341.00,682.00
+'7100260','DFW','ATL','Y','DL','',336.00,672.00
+'7100261','DFW','ATL','YN','AA','',277.00,554.00
+'7100262','DFW','ATL','YN','','',272.00,544.00
+'7100263','DFW','ATL','QW','','AP/80',0.00,268.00
+'7100264','DFW','ATL','QX','','AP/80',0.00,228.00
+'7100265','DFW','ATL','B','','VU/1',233.00,0.00
+'7100266','DFW','ATL','Y','AA','VU/1',233.00,0.00
+'7100267','DFW','ATL','Y','','VU/1',222.00,0.00
+'7100268','DFW','BOS','F','AA','',773.00,1546.00
+'7100269','DFW','BOS','F','','',765.00,1530.00
+'7100270','DFW','BOS','Y','AA','',515.00,1030.00
+'7100271','DFW','BOS','Y','DL','',510.00,1020.00
+'7100272','DFW','BOS','B','','VU/1',354.00,0.00
+'7100273','DFW','BOS','Y','AA','VU/1',354.00,0.00
+'7100274','DFW','BOS','Y','','VU/1',341.00,0.00
+'7100275','DFW','BWI','F','AA','',630.00,1260.00
+'7100276','DFW','BWI','F','','',622.00,1244.00
+'7100277','DFW','BWI','Y','AA','',420.00,840.00
+'7100278','DFW','BWI','Y','','',415.00,830.00
+'7100279','DFW','BWI','B','','VU/1',288.00,0.00
+'7100280','DFW','BWI','Y','','VU/1',288.00,0.00
+'7100281','DFW','DEN','F','','',489.00,978.00
+'7100282','DFW','DEN','F','DL','',481.00,962.00
+'7100283','DFW','DEN','FN','AA','',344.00,688.00
+'7100284','DFW','DEN','FN','','',336.00,672.00
+'7100285','DFW','DEN','Y','','',305.00,610.00
+'7100286','DFW','DEN','Y','DL','',300.00,600.00
+'7100287','DFW','DEN','YN','AA','',261.00,522.00
+'7100288','DFW','DEN','YN','','',256.00,512.00
+'7100289','DFW','DEN','QW','','AP/80',0.00,268.00
+'7100290','DFW','DEN','QX','','AP/80',0.00,228.00
+'7100291','DFW','DEN','B','','VU/1',208.00,0.00
+'7100292','DFW','DEN','Y','','VU/1',208.00,0.00
+'7100293','DFW','OAK','F','AA','',717.00,1434.00
+'7100294','DFW','OAK','F','','',646.00,1292.00
+'7100295','DFW','OAK','FN','','',504.00,1008.00
+'7100296','DFW','OAK','Y','AA','',478.00,956.00
+'7100297','DFW','OAK','Y','','',467.00,934.00
+'7100298','DFW','OAK','YN','','',386.00,772.00
+'7100299','DFW','OAK','QW','','AP/80',0.00,378.00
+'7100300','DFW','OAK','QX','','AP/80',0.00,338.00
+'7100301','DFW','OAK','Y','','VU/1',328.00,0.00
+'7100302','DFW','PHL','F','AA','',745.00,1490.00
+'7100303','DFW','PHL','F','','',737.00,1474.00
+'7100304','DFW','PHL','FN','','',516.00,1032.00
+'7100305','DFW','PHL','Y','AA','',496.00,992.00
+'7100306','DFW','PHL','Y','DL','',491.00,982.00
+'7100307','DFW','PHL','YN','','',396.00,792.00
+'7100308','DFW','PHL','B','','VU/1',341.00,0.00
+'7100309','DFW','PHL','Y','','VU/1',341.00,0.00
+'7100310','DFW','PIT','F','','',611.00,1222.00
+'7100311','DFW','PIT','Y','AA','',420.00,840.00
+'7100312','DFW','PIT','Y','AA','',380.00,760.00
+'7100313','DFW','PIT','Y','','',375.00,750.00
+'7100314','DFW','PIT','B','','VU/1',279.00,0.00
+'7100315','DFW','PIT','Y','','VU/1',260.00,0.00
+'7100316','DFW','SFO','F','','',717.00,1434.00
+'7100317','DFW','SFO','F','DL','',709.00,1418.00
+'7100318','DFW','SFO','FN','AA','',504.00,1008.00
+'7100319','DFW','SFO','FN','','',496.00,992.00
+'7100320','DFW','SFO','Y','','',478.00,956.00
+'7100321','DFW','SFO','Y','DL','',473.00,946.00
+'7100322','DFW','SFO','YN','AA','',386.00,772.00
+'7100323','DFW','SFO','YN','','',381.00,762.00
+'7100324','DFW','SFO','QW','','AP/80',0.00,378.00
+'7100325','DFW','SFO','QX','','AP/80',0.00,338.00
+'7100326','DFW','SFO','B','','VU/1',328.00,0.00
+'7100327','DFW','SFO','Y','','VU/1',328.00,0.00
+'7100328','OAK','BOS','F','','',836.00,1672.00
+'7100329','OAK','BOS','Y','','',557.00,1114.00
+'7100330','OAK','BOS','QW','','AP/80',0.00,418.00
+'7100331','OAK','BOS','QX','','AP/80',0.00,378.00
+'7100332','OAK','BOS','Y','','VU/1',394.00,0.00
+'7100333','OAK','DEN','F','','',488.00,976.00
+'7100334','OAK','DEN','Y','','',325.00,650.00
+'7100335','OAK','DEN','QW','','AP/80',0.00,288.00
+'7100336','OAK','DEN','QX','','AP/80',0.00,248.00
+'7100337','OAK','DEN','Y','','VU/1',222.00,0.00
+'7100338','OAK','DFW','F','','',717.00,1434.00
+'7100339','OAK','DFW','FN','','',504.00,1008.00
+'7100340','OAK','DFW','Y','','',478.00,956.00
+'7100341','OAK','DFW','YN','','',386.00,772.00
+'7100342','OAK','DFW','Y','','VU/1',328.00,0.00
+'7100343','OAK','PHL','F','AA','',877.00,1754.00
+'7100344','OAK','PHL','Y','AA','',584.00,1168.00
+'7100345','OAK','PHL','B','AA','',488.00,976.00
+'7100346','OAK','PHL','Y','','VU/1',402.00,0.00
+'7100347','OAK','SFO','Y','','',110.00,220.00
+'7100348','OAK','SFO','YN','','',54.00,108.00
+'7100349','OAK','SFO','Y','AA','VU/1',61.00,0.00
+'7100350','PHL','ATL','F','US','',465.00,930.00
+'7100351','PHL','ATL','F','','',449.00,898.00
+'7100352','PHL','ATL','FN','','',314.00,628.00
+'7100353','PHL','ATL','Y','DL','',295.00,590.00
+'7100354','PHL','ATL','Y','EA','',295.00,590.00
+'7100355','PHL','ATL','Y','','',290.00,580.00
+'7100356','PHL','ATL','YN','','',243.00,486.00
+'7100357','PHL','ATL','KW','','AP/57',0.00,268.00
+'7100358','PHL','ATL','QW','','AP/57',0.00,268.00
+'7100359','PHL','ATL','KX','','AP/57',0.00,228.00
+'7100360','PHL','ATL','QX','','AP/57',0.00,228.00
+'7100361','PHL','ATL','B','','VU/1',205.00,0.00
+'7100362','PHL','ATL','Y','','VU/1',205.00,0.00
+'7100363','PHL','BOS','F','','',210.00,420.00
+'7100364','PHL','BOS','FN','','',147.00,294.00
+'7100365','PHL','BOS','Y','DL','',147.00,294.00
+'7100366','PHL','BOS','B','DL','',140.00,280.00
+'7100367','PHL','BOS','K','','',140.00,280.00
+'7100368','PHL','BOS','Y','DL','',140.00,280.00
+'7100369','PHL','BOS','Y','','',140.00,280.00
+'7100370','PHL','BOS','B','','AP/75',0.00,270.00
+'7100371','PHL','BOS','B','DL','',129.00,258.00
+'7100372','PHL','BOS','YN','','',119.00,238.00
+'7100373','PHL','BOS','B','US','',109.00,218.00
+'7100374','PHL','BOS','M','ML','',109.00,218.00
+'7100375','PHL','BOS','Q','','AP/27',0.00,188.00
+'7100376','PHL','BOS','B','','AP/44',129.00,0.00
+'7100377','PHL','BOS','B','','VU/1',102.00,0.00
+'7100378','PHL','BOS','Y','','VU/1',97.00,0.00
+'7100379','PHL','BWI','Y','','',165.00,330.00
+'7100380','PHL','BWI','M','','',106.00,212.00
+'7100381','PHL','BWI','Y','','VU/1',115.00,0.00
+'7100382','PHL','DEN','F','','',706.00,1412.00
+'7100383','PHL','DEN','F','DL','',630.00,1260.00
+'7100384','PHL','DEN','Y','','',470.00,940.00
+'7100385','PHL','DEN','Y','DL','',420.00,840.00
+'7100386','PHL','DEN','KW','','AP/57',0.00,488.00
+'7100387','PHL','DEN','KX','','AP/57',0.00,418.00
+'7100388','PHL','DEN','QW','','AP/80',0.00,348.00
+'7100389','PHL','DEN','QX','','AP/80',0.00,278.00
+'7100390','PHL','DEN','Y','','VU/1',323.00,0.00
+'7100391','PHL','DEN','B','','VU/1',297.00,0.00
+'7100392','PHL','DFW','F','AA','',745.00,1490.00
+'7100393','PHL','DFW','F','','',737.00,1474.00
+'7100394','PHL','DFW','Y','AA','',496.00,992.00
+'7100395','PHL','DFW','Y','DL','',491.00,982.00
+'7100396','PHL','DFW','B','','VU/1',341.00,0.00
+'7100397','PHL','DFW','Y','AA','VU/1',341.00,0.00
+'7100398','PHL','DFW','M','','AP/68',284.00,0.00
+'7100399','PHL','DFW','Y','','VU/1',283.00,0.00
+'7100400','PHL','OAK','F','AA','',877.00,1754.00
+'7100401','PHL','OAK','Y','AA','',584.00,1168.00
+'7100402','PHL','OAK','B','AA','',488.00,976.00
+'7100403','PHL','OAK','Y','','VU/1',402.00,0.00
+'7100404','PHL','PIT','F','','',189.00,378.00
+'7100405','PHL','PIT','Y','','',131.00,262.00
+'7100406','PHL','PIT','Y','','VU/1',88.00,0.00
+'7100407','PHL','SFO','F','US','',995.00,1990.00
+'7100408','PHL','SFO','F','','',887.00,1774.00
+'7100409','PHL','SFO','Y','','',591.00,1182.00
+'7100410','PHL','SFO','Y','US','',586.00,1172.00
+'7100411','PHL','SFO','B','US','',483.00,966.00
+'7100412','PHL','SFO','QW','','AP/80',0.00,418.00
+'7100413','PHL','SFO','QX','','AP/80',0.00,378.00
+'7100414','PHL','SFO','B','','AP/55',488.00,0.00
+'7100415','PHL','SFO','B','','VU/1',407.00,0.00
+'7100416','PHL','SFO','M','','VU/1',407.00,0.00
+'7100417','PHL','SFO','Y','','VU/1',407.00,0.00
+'7100418','PHL','SFO','Y','US','VU/1',388.00,0.00
+'7100419','PIT','ATL','F','','',416.00,832.00
+'7100420','PIT','ATL','FN','','',291.00,582.00
+'7100421','PIT','ATL','Y','','',274.00,548.00
+'7100422','PIT','ATL','YN','','',217.00,434.00
+'7100423','PIT','ATL','KW','','AP/57',0.00,268.00
+'7100424','PIT','ATL','QW','','AP/57',0.00,248.00
+'7100425','PIT','ATL','KX','','AP/57',0.00,228.00
+'7100426','PIT','ATL','QX','','AP/57',0.00,208.00
+'7100427','PIT','ATL','B','','VU/1',190.00,0.00
+'7100428','PIT','ATL','Y','','VU/1',190.00,0.00
+'7100429','PIT','BOS','F','','',330.00,660.00
+'7100430','PIT','BOS','Y','','',240.00,480.00
+'7100431','PIT','BOS','Y','','VU/1',153.00,0.00
+'7100432','PIT','BWI','F','','',172.00,344.00
+'7100433','PIT','BWI','Y','','',119.00,238.00
+'7100434','PIT','BWI','Y','','VU/1',80.00,0.00
+'7100435','PIT','DEN','F','US','',647.00,1294.00
+'7100436','PIT','DEN','F','','',607.00,1214.00
+'7100437','PIT','DEN','Y','AA','',422.00,844.00
+'7100438','PIT','DEN','Y','','',412.00,824.00
+'7100439','PIT','DEN','Q','','',287.00,574.00
+'7100440','PIT','DEN','M','','',282.00,564.00
+'7100441','PIT','DEN','Y','AA','VU/1',299.00,0.00
+'7100442','PIT','DEN','Y','','VU/1',285.00,0.00
+'7100443','PIT','DFW','F','','',611.00,1222.00
+'7100444','PIT','DFW','Y','AA','',420.00,840.00
+'7100445','PIT','DFW','Y','AA','',380.00,760.00
+'7100446','PIT','DFW','Y','','',375.00,750.00
+'7100447','PIT','DFW','BW','','AP/57',0.00,428.00
+'7100448','PIT','DFW','BX','','AP/57',0.00,378.00
+'7100449','PIT','DFW','B','','VU/1',279.00,0.00
+'7100450','PIT','DFW','M','','VU/1',260.00,0.00
+'7100451','PIT','DFW','Y','','VU/1',260.00,0.00
+'7100452','PIT','PHL','F','','',189.00,378.00
+'7100453','PIT','PHL','Y','','',131.00,262.00
+'7100454','PIT','PHL','Y','','VU/1',88.00,0.00
+'7100455','PIT','SFO','F','US','',819.00,1638.00
+'7100456','PIT','SFO','Y','','',546.00,1092.00
+'7100457','PIT','SFO','QW','','AP/80',0.00,398.00
+'7100458','PIT','SFO','QX','','AP/80',0.00,358.00
+'7100459','PIT','SFO','Y','','VU/1',379.00,0.00
+'7100460','SFO','ATL','F','','',828.00,1656.00
+'7100461','SFO','ATL','F','AA','',821.00,1642.00
+'7100462','SFO','ATL','FN','','',580.00,1160.00
+'7100463','SFO','ATL','Y','','',552.00,1104.00
+'7100464','SFO','ATL','Y','AA','',547.00,1094.00
+'7100465','SFO','ATL','B','AA','',475.00,950.00
+'7100466','SFO','ATL','YN','EA','',445.00,890.00
+'7100467','SFO','ATL','YN','DL','',442.00,884.00
+'7100468','SFO','ATL','M','AA','',430.00,860.00
+'7100469','SFO','ATL','QW','','AP/57',0.00,398.00
+'7100470','SFO','ATL','QX','','AP/57',0.00,358.00
+'7100471','SFO','ATL','K','','AP/68',435.00,0.00
+'7100472','SFO','ATL','Q','','AP/68',435.00,0.00
+'7100473','SFO','ATL','B','','VU/1',383.00,0.00
+'7100474','SFO','ATL','Y','AA','VU/1',383.00,0.00
+'7100475','SFO','ATL','Y','','VU/1',376.00,0.00
+'7100476','SFO','BOS','F','US','',995.00,1990.00
+'7100477','SFO','BOS','F','DL','',890.00,1780.00
+'7100478','SFO','BOS','F','','',860.00,1720.00
+'7100479','SFO','BOS','C','','',635.00,1270.00
+'7100480','SFO','BOS','Y','TW','',605.00,1210.00
+'7100481','SFO','BOS','Y','UA','',605.00,1210.00
+'7100482','SFO','BOS','Y','DL','',593.00,1186.00
+'7100483','SFO','BOS','Y','','',573.00,1146.00
+'7100484','SFO','BOS','Y','US','',568.00,1136.00
+'7100485','SFO','BOS','B','AA','',508.00,1016.00
+'7100486','SFO','BOS','B','DL','',503.00,1006.00
+'7100487','SFO','BOS','B','US','',503.00,1006.00
+'7100488','SFO','BOS','KW','','AP/57',0.00,418.00
+'7100489','SFO','BOS','QW','','AP/80',0.00,418.00
+'7100490','SFO','BOS','KX','','AP/57',0.00,378.00
+'7100491','SFO','BOS','QX','','AP/80',0.00,378.00
+'7100492','SFO','BOS','B','','VU/1',412.00,0.00
+'7100493','SFO','BOS','M','','VU/1',394.00,0.00
+'7100494','SFO','BOS','Y','','VU/1',394.00,0.00
+'7100495','SFO','BWI','F','','',781.00,1562.00
+'7100496','SFO','BWI','Y','','',516.00,1032.00
+'7100497','SFO','BWI','B','','',449.00,898.00
+'7100498','SFO','BWI','Q','','',405.00,810.00
+'7100499','SFO','BWI','Y','','VU/1',358.00,0.00
+'7100500','SFO','DEN','F','','',488.00,976.00
+'7100501','SFO','DEN','Y','','',325.00,650.00
+'7100502','SFO','DEN','QW','','AP/80',0.00,288.00
+'7100503','SFO','DEN','QX','','AP/80',0.00,248.00
+'7100504','SFO','DEN','Y','','VU/1',222.00,0.00
+'7100505','SFO','DFW','F','','',717.00,1434.00
+'7100506','SFO','DFW','F','DL','',709.00,1418.00
+'7100507','SFO','DFW','FN','AA','',504.00,1008.00
+'7100508','SFO','DFW','FN','','',496.00,992.00
+'7100509','SFO','DFW','Y','','',478.00,956.00
+'7100510','SFO','DFW','Y','DL','',473.00,946.00
+'7100511','SFO','DFW','YN','AA','',386.00,772.00
+'7100512','SFO','DFW','YN','','',381.00,762.00
+'7100513','SFO','DFW','QW','','AP/80',0.00,378.00
+'7100514','SFO','DFW','QX','','AP/80',0.00,338.00
+'7100515','SFO','DFW','B','','VU/1',328.00,0.00
+'7100516','SFO','DFW','Y','','VU/1',328.00,0.00
+'7100517','SFO','OAK','Y','','',110.00,220.00
+'7100518','SFO','OAK','YN','','',54.00,108.00
+'7100519','SFO','OAK','Y','AA','VU/1',61.00,0.00
+'7100520','SFO','PHL','F','US','',995.00,1990.00
+'7100521','SFO','PHL','F','','',887.00,1774.00
+'7100522','SFO','PHL','Y','','',591.00,1182.00
+'7100523','SFO','PHL','Y','US','',586.00,1172.00
+'7100524','SFO','PHL','B','US','',483.00,966.00
+'7100525','SFO','PHL','QW','','AP/80',0.00,418.00
+'7100526','SFO','PHL','QX','','AP/80',0.00,378.00
+'7100527','SFO','PHL','B','','AP/55',488.00,0.00
+'7100528','SFO','PHL','B','','VU/1',407.00,0.00
+'7100529','SFO','PHL','M','','VU/1',407.00,0.00
+'7100530','SFO','PHL','Y','','VU/1',407.00,0.00
+'7100531','SFO','PHL','Y','US','VU/1',388.00,0.00
+'7100532','SFO','PIT','F','US','',819.00,1638.00
+'7100533','SFO','PIT','Y','','',546.00,1092.00
+'7100534','SFO','PIT','Y','','VU/1',379.00,0.00
diff --git a/sql-bench/Data/ATIS/fconnection.txt b/sql-bench/Data/ATIS/fconnection.txt
new file mode 100644
index 00000000..39d0bd75
--- /dev/null
+++ b/sql-bench/Data/ATIS/fconnection.txt
@@ -0,0 +1,164 @@
+312733,'ATL','BOS',740,1127,'1234567',0,1,227
+312734,'ATL','BOS',1200,1548,'1234567',0,1,228
+312737,'ATL','BOS',1650,2053,'1234567',0,1,243
+333051,'ATL','DEN',630,910,'1234567',0,1,280
+333054,'ATL','DEN',1000,1245,'1234567',0,1,285
+333059,'ATL','DEN',1319,1554,'1234567',0,1,275
+333067,'ATL','DEN',2029,2320,'1234567',0,1,291
+393490,'ATL','OAK',1000,1339,'1234567',0,1,399
+420730,'ATL','SFO',630,955,'1234567',0,1,385
+420735,'ATL','SFO',1000,1325,'1234567',0,1,385
+420736,'ATL','SFO',1000,1336,'1234567',0,1,396
+420739,'ATL','SFO',1319,1650,'1234567',0,1,391
+420745,'ATL','SFO',1650,2050,'1234567',0,1,420
+420747,'ATL','SFO',1825,2214,'1234567',0,1,409
+420751,'ATL','SFO',2029,2350,'1234567',0,1,381
+305276,'BOS','ATL',705,1110,'1234567',0,1,245
+305277,'BOS','ATL',1125,1615,'1234567',0,1,290
+305280,'BOS','ATL',1645,2101,'1234567',0,1,256
+333153,'BOS','DEN',1000,1410,'1234567',0,1,370
+333158,'BOS','DEN',1156,1615,'1234567',0,1,379
+333168,'BOS','DEN',1850,2320,'1234567',0,1,390
+393546,'BOS','OAK',838,1339,'123456-',0,1,481
+393547,'BOS','OAK',840,1339,'------7',0,1,479
+393553,'BOS','OAK',1720,2205,'1234567',0,1,465
+420887,'BOS','SFO',805,1325,'1234567',0,1,500
+420888,'BOS','SFO',838,1336,'123456-',0,1,478
+420893,'BOS','SFO',1132,1650,'1234567',0,1,498
+420894,'BOS','SFO',1210,1652,'1234567',0,1,462
+420903,'BOS','SFO',1520,2115,'1234567',0,1,535
+420911,'BOS','SFO',1720,2214,'1234567',0,1,474
+420912,'BOS','SFO',1845,2350,'1234567',0,1,485
+333086,'BWI','DEN',550,955,'1234567',0,1,365
+333091,'BWI','DEN',845,1245,'1234567',0,1,360
+333099,'BWI','DEN',1230,1615,'1234567',0,1,345
+333110,'BWI','DEN',1945,2320,'1234567',0,1,335
+329933,'BWI','DFW',550,930,'1234567',0,1,280
+329937,'BWI','DFW',900,1250,'1234567',0,1,290
+329941,'BWI','DFW',1230,1620,'1234567',0,1,290
+329944,'BWI','DFW',1600,1955,'1234567',0,1,295
+329947,'BWI','DFW',1945,2321,'1234567',0,1,276
+393507,'BWI','OAK',915,1339,'1234567',0,1,444
+420782,'BWI','SFO',800,1217,'123456-',0,1,437
+420783,'BWI','SFO',845,1325,'1234567',0,1,460
+420785,'BWI','SFO',915,1336,'1234567',0,1,441
+420791,'BWI','SFO',1230,1730,'1234567',0,1,480
+420792,'BWI','SFO',1240,1652,'1234567',0,1,432
+420798,'BWI','SFO',1620,2022,'1234567',0,1,422
+305416,'DEN','ATL',620,1244,'1234567',0,1,264
+305424,'DEN','ATL',950,1606,'1234567',0,1,256
+305429,'DEN','ATL',1325,1943,'1234567',0,1,258
+305435,'DEN','ATL',1700,100,'1234567',0,1,360
+305436,'DEN','ATL',1955,230,'1234567',0,1,275
+313024,'DEN','BOS',55,855,'1234567',0,1,360
+313025,'DEN','BOS',620,1435,'1234567',0,1,375
+313030,'DEN','BOS',800,1550,'1234567',0,1,350
+313034,'DEN','BOS',950,1755,'1234567',0,1,365
+313037,'DEN','BOS',1055,1920,'1234567',0,1,385
+313041,'DEN','BOS',1325,2125,'1234567',0,1,360
+313048,'DEN','BOS',1815,153,'1234567',0,1,338
+308320,'DEN','BWI',620,1400,'1234567',0,1,340
+308330,'DEN','BWI',1055,1850,'1234567',0,1,355
+308334,'DEN','BWI',1325,2045,'1234567',0,1,320
+402376,'DEN','PHL',620,1350,'1234567',0,1,330
+402382,'DEN','PHL',800,1515,'1234567',0,1,315
+402388,'DEN','PHL',1055,1840,'1234567',0,1,345
+402391,'DEN','PHL',1455,2146,'12345-7',0,1,291
+402397,'DEN','PHL',1700,15,'1234567',0,1,315
+402398,'DEN','PHL',1815,130,'1234567',0,1,315
+405235,'DEN','PIT',55,803,'1234567',0,1,308
+405236,'DEN','PIT',55,1000,'1234567',0,1,425
+405241,'DEN','PIT',800,1510,'1234567',0,1,310
+405250,'DEN','PIT',1055,1845,'1234567',0,1,350
+405253,'DEN','PIT',1455,2202,'1234567',0,1,307
+405258,'DEN','PIT',1815,59,'1234567',0,1,284
+313006,'DFW','BOS',2010,153,'1234567',0,1,283
+308292,'DFW','BWI',625,1145,'1234567',0,1,260
+308296,'DFW','BWI',945,1510,'1234567',0,1,265
+308301,'DFW','BWI',1305,1850,'1234567',0,1,285
+308304,'DFW','BWI',1650,2230,'1234567',0,1,280
+393637,'DFW','OAK',700,1014,'123456-',0,1,314
+393641,'DFW','OAK',1547,1852,'1234567',0,1,305
+393643,'DFW','OAK',1850,2205,'12345-7',0,1,315
+402327,'DFW','PHL',625,1200,'1234567',0,1,275
+402332,'DFW','PHL',945,1515,'1234567',0,1,270
+402339,'DFW','PHL',1305,1840,'1234567',0,1,275
+402343,'DFW','PHL',1501,2045,'1234567',0,1,284
+402346,'DFW','PHL',1650,2220,'1234567',0,1,270
+402350,'DFW','PHL',2010,130,'1234567',0,1,260
+405211,'DFW','PIT',945,1510,'1234567',0,1,265
+405214,'DFW','PIT',1305,1845,'1234567',0,1,280
+405217,'DFW','PIT',1650,2205,'1234567',0,1,255
+405219,'DFW','PIT',2010,59,'1234567',0,1,229
+421176,'DFW','SFO',700,1006,'123456-',0,1,306
+421177,'DFW','SFO',1032,1336,'1234567',0,1,304
+421179,'DFW','SFO',1547,1912,'1234567',0,1,325
+421180,'DFW','SFO',1850,2214,'12345-7',0,1,324
+421181,'DFW','SFO',1940,2310,'1234567',0,1,330
+306026,'OAK','ATL',625,1537,'1234567',0,1,372
+306031,'OAK','ATL',1425,2330,'1234567',0,1,365
+313867,'OAK','BOS',625,1619,'1234567',0,1,414
+308924,'OAK','BWI',1425,2332,'1234567',0,1,367
+330865,'OAK','DFW',625,1312,'1234567',0,1,287
+330867,'OAK','DFW',1105,1753,'1234567',0,1,288
+330870,'OAK','DFW',1425,2122,'12345-7',0,1,297
+403125,'OAK','PHL',625,1553,'1234567',0,1,388
+403128,'OAK','PHL',1105,2041,'1234567',0,1,396
+334183,'PHL','DEN',540,955,'1234567',0,1,375
+334190,'PHL','DEN',840,1410,'123456-',0,1,450
+334198,'PHL','DEN',1600,2015,'1234567',0,1,375
+334202,'PHL','DEN',1935,2320,'1234567',0,1,345
+330947,'PHL','DFW',540,930,'1234567',0,1,290
+330956,'PHL','DFW',900,1250,'1234567',0,1,290
+330962,'PHL','DFW',1230,1620,'1234567',0,1,290
+330964,'PHL','DFW',1405,1805,'1234567',0,1,300
+330967,'PHL','DFW',1600,1955,'1234567',0,1,295
+330971,'PHL','DFW',1750,2140,'1234567',0,1,290
+330974,'PHL','DFW',1935,2321,'1234567',0,1,286
+393950,'PHL','OAK',905,1339,'1234567',0,1,454
+393953,'PHL','OAK',1753,2205,'1234567',0,1,432
+422233,'PHL','SFO',540,1110,'1234567',0,1,510
+422240,'PHL','SFO',830,1325,'1234567',0,1,475
+422241,'PHL','SFO',905,1336,'1234567',0,1,451
+422249,'PHL','SFO',1230,1730,'1234567',0,1,480
+422262,'PHL','SFO',1753,2214,'1234567',0,1,441
+422263,'PHL','SFO',1915,2350,'1234567',0,1,455
+334210,'PIT','DEN',600,955,'1234567',0,1,355
+334218,'PIT','DEN',1030,1410,'1234567',0,1,340
+334222,'PIT','DEN',1245,1615,'1234567',0,1,330
+334230,'PIT','DEN',1945,2320,'1234567',0,1,335
+330977,'PIT','DFW',600,930,'1234567',0,1,270
+330981,'PIT','DFW',910,1250,'1234567',0,1,280
+330984,'PIT','DFW',1245,1620,'1234567',0,1,275
+330989,'PIT','DFW',1945,2321,'1234567',0,1,276
+422277,'PIT','SFO',910,1410,'1234567',0,1,480
+422281,'PIT','SFO',1245,1730,'1234567',0,1,465
+306304,'SFO','ATL',20,917,'1234567',0,1,357
+306307,'SFO','ATL',620,1537,'1234567',0,1,377
+306309,'SFO','ATL',700,1606,'1234567',0,1,366
+306314,'SFO','ATL',1059,1943,'1234567',0,1,344
+306317,'SFO','ATL',1425,2258,'1234567',0,1,333
+306318,'SFO','ATL',1431,2330,'1234567',0,1,359
+306319,'SFO','ATL',1750,230,'1234567',0,1,340
+314256,'SFO','BOS',620,1619,'1234567',0,1,419
+314259,'SFO','BOS',700,1755,'1234567',0,1,475
+314263,'SFO','BOS',815,1920,'1234567',0,1,485
+314268,'SFO','BOS',1059,2125,'1234567',0,1,446
+314269,'SFO','BOS',1108,2056,'1234567',0,1,408
+309189,'SFO','BWI',815,1850,'1234567',0,1,455
+309198,'SFO','BWI',1059,2045,'1234567',0,1,406
+309204,'SFO','BWI',1431,2332,'1234567',0,1,361
+331132,'SFO','DFW',620,1312,'1234567',0,1,292
+331133,'SFO','DFW',1108,1753,'1234567',0,1,285
+331134,'SFO','DFW',1431,2122,'12345-7',0,1,291
+403468,'SFO','PHL',620,1553,'1234567',0,1,393
+403472,'SFO','PHL',700,1705,'1234567',0,1,425
+403474,'SFO','PHL',815,1840,'1234567',0,1,445
+403479,'SFO','PHL',1108,2041,'1234567',0,1,393
+403481,'SFO','PHL',1215,2220,'1234567',0,1,425
+403485,'SFO','PHL',1425,15,'1234567',0,1,410
+403486,'SFO','PHL',1530,130,'1234567',0,1,420
+403488,'SFO','PHL',2220,825,'1234567',0,1,425
+405963,'SFO','PIT',815,1845,'1234567',0,1,450
+405970,'SFO','PIT',1530,59,'1234567',0,1,389
+405971,'SFO','PIT',2220,1000,'1234567',0,1,520
diff --git a/sql-bench/Data/ATIS/flight.txt b/sql-bench/Data/ATIS/flight.txt
new file mode 100644
index 00000000..9f680085
--- /dev/null
+++ b/sql-bench/Data/ATIS/flight.txt
@@ -0,0 +1,579 @@
+101908,'1234567','ATL','BOS',636,1000,'DL',296,'FNYNBNMQ','72S','B',1,'N',204
+101909,'1234567','ATL','BOS',641,855,'DL',314,'FNYNBNMQ','72S','B',0,'N',134
+101910,'1234567','ATL','BOS',755,1019,'EA',140,'FYHQK','D9S','B',0,'N',144
+101911,'1234567','ATL','BOS',920,1150,'EA',534,'FYHQK','D9S','B',0,'N',150
+101912,'1234567','ATL','BOS',959,1215,'DL',410,'FYBMQ','757','B',0,'N',136
+101913,'1234567','ATL','BOS',1010,1355,'DL',726,'FYBMQ','72S','S',1,'N',225
+101914,'1234567','ATL','BOS',1057,1320,'EA',640,'YHQKL','72S','L',0,'N',143
+101915,'1234567','ATL','BOS',1229,1456,'EA',142,'FYHQK','D9S','L',0,'N',147
+101916,'-----6-','ATL','BOS',1325,1550,'DL',110,'FYBMQ','767','L',0,'N',145
+101917,'12345-7','ATL','BOS',1325,1550,'DL',110,'FYBMQ','763','L',0,'N',145
+101918,'1234567','ATL','BOS',1426,1656,'EA',644,'FYHQK','D9S','S',0,'N',150
+101922,'1234567','ATL','BOS',1655,1920,'DL',134,'FYBMQ','L10','D',0,'N',145
+101923,'1234567','ATL','BOS',1800,2032,'EA',144,'FYHQK','757','D',0,'N',152
+101924,'1234567','ATL','BOS',1851,2219,'DL',106,'FYBMQ','M80','D',1,'N',208
+101925,'1234567','ATL','BOS',1855,2122,'DL',326,'FYBMQ','72S','D',0,'N',147
+101926,'1234567','ATL','BOS',1950,2220,'EA',148,'FYHQK','D9S','S',0,'N',150
+101927,'------7','ATL','BOS',2035,2255,'DL',166,'FYBMQ','L10','S/',0,'N',140
+101928,'123456-','ATL','BOS',2035,2255,'DL',116,'FYBMQ','L10','S/',0,'N',140
+101929,'1234567','ATL','BOS',2345,153,'DL',162,'FNYNBNMQ','757','',0,'N',128
+101951,'1234567','ATL','BWI',915,1055,'EA',202,'FYHQK','D9S','S',0,'N',100
+101952,'1234567','ATL','BWI',1002,1145,'DL',1204,'FYBMQ','M80','',0,'N',103
+101953,'1234567','ATL','BWI',1330,1510,'DL',662,'FYBMQ','M80','L',0,'N',100
+101954,'1234567','ATL','BWI',1423,1610,'EA',206,'FYHQK','D9S','',0,'N',107
+101955,'1234567','ATL','BWI',1704,1850,'DL',294,'FYBMQ','757','D',0,'N',106
+101956,'1234567','ATL','BWI',1800,1937,'EA',210,'FYHQK','D9S','D',0,'N',97
+101957,'1234567','ATL','BWI',1955,2140,'EA',212,'FYHQK','D9S','S',0,'N',105
+101958,'1234567','ATL','BWI',2048,2230,'DL',256,'FYBMQ','757','',0,'N',102
+101959,'1234567','ATL','BWI',2140,2318,'EA',208,'FNYNHQNK','72S','',0,'N',98
+102122,'1234567','ATL','DEN',840,955,'DL',445,'FYBMQ','757','B',0,'N',195
+102123,'1234567','ATL','DEN',934,1054,'EA',821,'FYHQK','72S','B',0,'N',200
+102125,'1234567','ATL','DEN',1000,1124,'UA',915,'FYBMQ','73S','S',0,'N',204
+102126,'1234567','ATL','DEN',1200,1305,'DL',257,'FYBMQ','72S','L',0,'N',185
+102127,'1234567','ATL','DEN',1510,1615,'DL',1083,'FYBMQ','72S','S',0,'N',185
+102128,'1234567','ATL','DEN',1755,1910,'EA',825,'FYHQK','72S','D',0,'N',195
+102129,'1234567','ATL','DEN',1825,1946,'UA',673,'FYBMQ','733','D',0,'N',201
+102133,'1234567','ATL','DEN',1900,2015,'DL',675,'FYBMQ','72S','D',0,'N',195
+102134,'1234567','ATL','DEN',2145,2308,'EA',823,'FNYNHQNK','757','S',0,'N',203
+102135,'1234567','ATL','DEN',2219,2320,'DL',229,'FNYNBNMQ','72S','',0,'N',181
+102136,'--34567','ATL','DFW',630,740,'DL',131,'FNYNBNMQ','L10','B',0,'N',130
+102137,'12-----','ATL','DFW',630,740,'DL',131,'FNYNBNMQ','763','B',0,'N',130
+102139,'1234567','ATL','DFW',730,849,'AA',1339,'FYBMV','M80','B',0,'N',139
+102144,'1234567','ATL','DFW',823,930,'DL',671,'FYBMQ','72S','B',0,'N',127
+102147,'1234567','ATL','DFW',901,1027,'AA',447,'FYBMV','M80','S',0,'N',146
+102148,'1234567','ATL','DFW',1000,1110,'DL',17,'FYBMQ','L15','S',0,'N',130
+102150,'1234567','ATL','DFW',1145,1250,'DL',545,'FYBMQ','72S','L',0,'N',125
+102162,'--34567','ATL','DFW',1319,1430,'DL',179,'FYBMQ','763','L',0,'N',131
+102163,'12-----','ATL','DFW',1319,1430,'DL',179,'FYBMQ','L10','L',0,'N',131
+102164,'1234567','ATL','DFW',1347,1505,'AA',237,'FYBMV','M80','S',0,'N',138
+102165,'-2-----','ATL','DFW',1415,1525,'LH',442,'FCBMK','74M','D',0,'N',130
+102166,'1234567','ATL','DFW',1510,1620,'DL',1145,'FYBMQ','757','S',0,'N',130
+102172,'1234567','ATL','DFW',1634,1759,'AA',351,'FYBMV','M80','S',0,'N',145
+102173,'1234567','ATL','DFW',1650,1805,'DL',82,'FYBMQ','L10','D',0,'N',135
+102177,'1234567','ATL','DFW',1840,1955,'DL',405,'FYBMQ','M80','D',0,'N',135
+102188,'1234567','ATL','DFW',1925,2050,'AA',1419,'FNYNBMV','M80','D',0,'N',145
+102190,'1234567','ATL','DFW',2029,2140,'DL',275,'FNYNBNMQ','763','',0,'N',131
+102191,'1234567','ATL','DFW',2213,2321,'DL',574,'FNYNBNMQ','M80','',0,'N',128
+102192,'12345-7','ATL','DFW',2335,40,'DL',1107,'FNYNBNMQ','D9S','',0,'N',125
+102674,'1234567','ATL','OAK',1825,2205,'UA',673,'FYBMQ','733','D',1,'N',400
+102766,'1234567','ATL','PHL',636,825,'DL',296,'FNYNBNMQ','72S','B',0,'N',109
+102767,'1234567','ATL','PHL',740,929,'US',258,'FYBHQ','D9S','B',0,'N',109
+102768,'1234567','ATL','PHL',805,956,'EA',124,'FYHQK','D9S','B',0,'N',111
+102769,'1234567','ATL','PHL',935,1125,'EA',126,'FYHQK','D9S','S',0,'N',110
+102770,'1234567','ATL','PHL',1010,1200,'DL',726,'FYBMQ','72S','',0,'N',110
+102771,'1234567','ATL','PHL',1200,1345,'US',29,'FYBHQ','733','L',0,'N',105
+102772,'1234567','ATL','PHL',1215,1415,'EA',610,'FYHQK','D9S','L',0,'N',120
+102773,'1234567','ATL','PHL',1322,1515,'DL',424,'FYBMQ','72S','L',0,'N',113
+102774,'1234567','ATL','PHL',1417,1607,'EA',324,'FYHQK','D9S','',0,'N',110
+102775,'1234567','ATL','PHL',1605,1800,'EA',602,'FYHQK','D9S','S',0,'N',115
+102776,'1234567','ATL','PHL',1649,1840,'DL',1206,'FYBMQ','767','D',0,'N',111
+102777,'1234567','ATL','PHL',1650,1835,'US',1786,'FYBHQ','73S','D',0,'N',105
+102778,'1234567','ATL','PHL',1802,1959,'EA',120,'FYHQK','D9S','D',0,'N',117
+102779,'1234567','ATL','PHL',1851,2045,'DL',106,'FYBMQ','M80','D',0,'N',114
+102781,'1234567','ATL','PHL',1957,2151,'EA',604,'FYHQK','D9S','S',0,'N',114
+102782,'1234567','ATL','PHL',2035,2220,'DL',250,'FYBMQ','72S','',0,'N',105
+102783,'1234567','ATL','PHL',2140,2335,'EA',128,'FNYNHQNK','D9S','',0,'N',115
+102784,'1234567','ATL','PHL',2350,130,'DL',1210,'FNYNBNMQ','757','',0,'N',100
+102795,'1234567','ATL','PIT',630,803,'US',339,'FYBHQ','D9S','B',0,'N',93
+102796,'1234567','ATL','PIT',831,1000,'DL',842,'FYBMQ','D9S','B',0,'N',89
+102797,'1234567','ATL','PIT',925,1100,'EA',302,'FYHQK','D9S','S',0,'N',95
+102798,'1234567','ATL','PIT',1105,1238,'US',248,'FYBHQ','D9S','L',0,'N',93
+102799,'1234567','ATL','PIT',1225,1405,'EA',308,'FYHQK','757','L',0,'N',100
+102800,'1234567','ATL','PIT',1340,1510,'DL',628,'FYBMQ','73S','',0,'N',90
+102801,'1234567','ATL','PIT',1540,1713,'US',508,'FYBHQ','D9S','L/S',0,'N',93
+102802,'-----67','ATL','PIT',1711,1845,'DL',1132,'FYBMQ','73S','D',0,'N',94
+102803,'12345--','ATL','PIT',1711,1845,'DL',1132,'FYBMQ','72S','D',0,'N',94
+102804,'1234567','ATL','PIT',1759,1933,'EA',310,'YHQKL','72S','D',0,'N',94
+102805,'1234567','ATL','PIT',1920,2056,'US',480,'FYBHQ','D9S','D',0,'N',96
+102806,'1234567','ATL','PIT',1959,2139,'EA',312,'FYHQK','757','S/',0,'N',100
+102807,'1234567','ATL','PIT',2030,2205,'DL',1076,'FYBMQ','73S','',0,'N',95
+102808,'1234567','ATL','PIT',2145,2313,'EA',314,'FNYNHQNK','D9S','',0,'N',88
+102809,'1234567','ATL','PIT',2334,59,'DL',311,'FNYNBNMQ','D9S','',0,'N',85
+102923,'------7','ATL','SFO',912,1110,'DL',137,'FYBMQ','767','B',0,'N',298
+102924,'123456-','ATL','SFO',912,1110,'DL',137,'FYBMQ','L10','B',0,'N',298
+102925,'1234567','ATL','SFO',930,1157,'EA',71,'FYHQK','757','B',0,'N',327
+102927,'1234567','ATL','SFO',1200,1410,'DL',977,'FYBMQ','757','L',0,'N',310
+102929,'1234567','ATL','SFO',1525,1730,'DL',97,'FYBMQ','763','D',0,'N',305
+102930,'1234567','ATL','SFO',1625,1844,'EA',73,'FYHQK','757','D',0,'N',319
+102932,'1234567','ATL','SFO',1855,2115,'DL',99,'FYBMQ','767','D',0,'N',320
+102933,'1234567','ATL','SFO',2010,2229,'EA',77,'FYHQK','757','D',0,'N',319
+105584,'1234567','BOS','ATL',630,913,'DL',225,'FYBMQ','M80','B',0,'N',163
+105586,'1234567','BOS','ATL',700,946,'EA',147,'FNYNHQNK','72S','B',0,'N',166
+105588,'1234567','BOS','ATL',815,1100,'DL',219,'FYBMQ','L10','B',0,'N',165
+105589,'1234567','BOS','ATL',832,1126,'EA',643,'FYHQK','D9S','B',0,'N',174
+105590,'1234567','BOS','ATL',955,1235,'DL',547,'FYBMQ','72S','B',0,'N',160
+105591,'1234567','BOS','ATL',1035,1327,'EA',145,'FYHQK','D9S','L',0,'N',172
+105592,'1234567','BOS','ATL',1156,1435,'DL',708,'FYBMQ','767','L',0,'N',159
+105593,'1234567','BOS','ATL',1240,1525,'EA',143,'FYHQK','D9S','L',0,'N',165
+105594,'1234567','BOS','ATL',1421,1709,'EA',645,'YHQKL','72S','S',0,'N',168
+105595,'1234567','BOS','ATL',1520,1804,'DL',975,'FYBMQ','757','S',0,'N',164
+105597,'1234567','BOS','ATL',1605,1900,'EA',141,'FYHQK','72S','D',0,'N',175
+105598,'1234567','BOS','ATL',1758,2049,'EA',149,'FYHQK','D9S','D',0,'N',171
+105599,'1234567','BOS','ATL',1850,2128,'DL',323,'FYBMQ','757','D',0,'N',158
+105601,'1234567','BOS','ATL',2024,2258,'DL',541,'FNYNBNMQ','L10','S',0,'N',154
+105698,'1234567','BOS','BWI',645,811,'US',369,'FYBHQ','733','B/S',0,'N',86
+105699,'1234567','BOS','BWI',930,1056,'US',511,'FYBHQ','733','S/',0,'N',86
+105700,'1234567','BOS','BWI',1000,1127,'US',437,'FYBHQ','M80','S/',0,'N',87
+105701,'1234567','BOS','BWI',1330,1451,'US',269,'FYBHQ','D9S','S',0,'N',81
+105702,'1234567','BOS','BWI',1505,1626,'US',428,'FYBHQ','D9S','',0,'N',81
+105703,'1234567','BOS','BWI',1745,1912,'US',1581,'FYBHQ','72S','S',0,'N',87
+105704,'1234567','BOS','BWI',1955,2122,'US',1609,'FYBHQ','73S','',0,'N',87
+105705,'12345-7','BOS','BWI',2140,2306,'US',76,'FYBHQ','733','',0,'N',86
+105794,'123456-','BOS','DEN',838,1110,'UA',201,'FYBMQ','D8S','B',0,'N',272
+105795,'------7','BOS','DEN',840,1112,'UA',343,'FYBMQ','D8S','B',0,'N',272
+105796,'1234567','BOS','DEN',855,1140,'CO',1209,'FYQHK','M80','B',0,'N',285
+105798,'1234567','BOS','DEN',1425,1732,'CO',1215,'FYQHK','733','S',0,'N',307
+105799,'1234567','BOS','DEN',1720,1949,'UA',281,'FYBMQ','D8S','D',0,'N',269
+105800,'12345-7','BOS','DEN',1740,2033,'CO',1765,'FYQHK','M80','D',0,'N',293
+105801,'1234567','BOS','DFW',653,1017,'AA',315,'FYBMV','D10','B',0,'N',264
+105802,'1234567','BOS','DFW',805,1110,'DL',831,'FYBMQ','757','B',0,'N',245
+105803,'1234567','BOS','DFW',830,1209,'AA',1099,'FYBMV','M80','B',0,'N',279
+105805,'1234567','BOS','DFW',1132,1430,'DL',169,'FYBMQ','757','L',0,'N',238
+105806,'1234567','BOS','DFW',1149,1520,'AA',813,'FYBMV','767','L',0,'N',271
+105807,'1234567','BOS','DFW',1428,1750,'AA',215,'FYBMV','D10','S',0,'N',262
+105808,'1234567','BOS','DFW',1445,1755,'DL',697,'FYBMQ','72S','S',0,'N',250
+105810,'1234567','BOS','DFW',1721,2144,'DL',589,'FYBMQ','72S','SD',1,'N',323
+105811,'1234567','BOS','DFW',1740,2100,'AA',155,'FYBMV','767','D',0,'N',260
+105812,'1234567','BOS','DFW',1845,2144,'DL',487,'FYBMQ','72S','D',0,'N',239
+106229,'123456-','BOS','PHL',630,750,'US',1800,'FYBHQ','734','S',0,'N',80
+106230,'1234567','BOS','PHL',700,820,'ML',455,'FYMHQ','D9S','B/S',0,'N',80
+106231,'1234567','BOS','PHL',705,817,'US',567,'FYBHQ','72S','S',0,'N',72
+106232,'1234567','BOS','PHL',817,940,'DL',891,'FYBMQ','72S','B/S',0,'N',83
+106234,'1234567','BOS','PHL',850,1010,'US',577,'FYBHQ','100','',0,'N',80
+106235,'123456-','BOS','PHL',910,1030,'ML',437,'FYMHQ','D9S','B/S',0,'N',80
+106236,'1234567','BOS','PHL',1030,1150,'US',569,'FYBHQ','733','',0,'N',80
+106237,'1234567','BOS','PHL',1125,1245,'US',359,'FYBHQ','733','',0,'N',80
+106238,'1234567','BOS','PHL',1142,1300,'DL',949,'FYBMQ','72S','S',0,'N',78
+106239,'1234567','BOS','PHL',1215,1335,'ML',425,'FYMHQ','D9S','L/S',0,'N',80
+106240,'-2-4--7','BOS','PHL',1325,1445,'LH',420,'FCBMK','D10','',0,'N',80
+106241,'1234567','BOS','PHL',1400,1520,'ML',439,'FYMHQ','D9S','',0,'N',80
+106242,'1234567','BOS','PHL',1414,1535,'DL',639,'FYBMQ','72S','',0,'N',81
+106245,'12345-7','BOS','PHL',1510,1629,'US',731,'FYBHQ','D9S','',0,'N',79
+106246,'1234567','BOS','PHL',1545,1704,'US',297,'FYBHQ','D9S','',0,'N',79
+106247,'1234567','BOS','PHL',1645,1808,'US',1664,'FYBHQ','733','',0,'N',83
+106248,'1234567','BOS','PHL',1721,1840,'DL',589,'FYBMQ','72S','S',0,'N',79
+106249,'1234567','BOS','PHL',1745,1905,'ML',413,'FYMHQ','D9S','D/S',0,'N',80
+106250,'12345-7','BOS','PHL',1805,1924,'US',101,'FYBHQ','D9S','',0,'N',79
+106251,'12345-7','BOS','PHL',1855,2015,'US',293,'FYBHQ','733','',0,'N',80
+106252,'12345-7','BOS','PHL',1900,2019,'ML',431,'FYMHQ','D9S','D/S',0,'N',79
+106253,'1234567','BOS','PHL',1950,2111,'US',411,'FYBHQ','M80','',0,'N',81
+106254,'1234567','BOS','PHL',2033,2150,'DL',339,'FYBMQ','72S','',0,'N',77
+106255,'12345-7','BOS','PHL',2145,2304,'US',307,'FYBHQ','D9S','',0,'N',79
+106262,'123456-','BOS','PIT',630,950,'US',1800,'FYBHQ','734','S',1,'N',200
+106263,'1234567','BOS','PIT',715,857,'US',476,'FYBHQ','72S','B',0,'N',102
+106264,'1234567','BOS','PIT',810,953,'US',65,'FYBHQ','D9S','B',0,'N',103
+106265,'1234567','BOS','PIT',1145,1333,'US',167,'FYBHQ','733','S',0,'N',108
+106266,'1234567','BOS','PIT',1210,1353,'US',81,'FYBHQ','M80','S',0,'N',103
+106267,'1234567','BOS','PIT',1520,1706,'US',148,'FYBHQ','73S','S/',0,'N',106
+106268,'1234567','BOS','PIT',1640,1823,'US',303,'FYBHQ','D9S','S/',0,'N',103
+106269,'1234567','BOS','PIT',1755,1941,'US',1652,'FYBHQ','73S','S',0,'N',106
+106270,'12345-7','BOS','PIT',1855,2207,'US',293,'FYBHQ','733','',1,'N',192
+106271,'12345-7','BOS','PIT',2105,2248,'US',345,'FYBHQ','M80','',0,'N',103
+106365,'1234567','BOS','SFO',800,1131,'UA',21,'FYBMQ','D10','B',0,'N',391
+106366,'------7','BOS','SFO',840,1336,'UA',343,'FYBMQ','D8S','BL',1,'N',476
+106373,'1234567','BOS','SFO',1149,1758,'AA',813,'FYBMV','767','LD',1,'N',549
+106375,'12345-7','BOS','SFO',1740,2310,'CO',1765,'FYQHK','M80','D',1,'N',510
+106376,'1234567','BOS','SFO',1745,2127,'UA',93,'FYBMQ','D8S','D',0,'N',402
+106377,'1234567','BOS','SFO',1810,2137,'TW',61,'FCYBQ','L10','D',0,'N',387
+107159,'1234567','BWI','ATL',550,739,'DL',995,'FNYNBNMQ','M80','B',0,'N',109
+107160,'1234567','BWI','ATL',640,835,'EA',207,'FNYNHQNK','72S','B',0,'N',115
+107161,'1234567','BWI','ATL',800,1001,'EA',203,'FYHQK','D9S','B',0,'N',121
+107162,'1234567','BWI','ATL',900,1050,'DL',125,'FYBMQ','757','S',0,'N',110
+107163,'1234567','BWI','ATL',940,1137,'EA',201,'FYHQK','D9S','S',0,'N',117
+107164,'1234567','BWI','ATL',1144,1335,'EA',205,'FYHQK','D9S','L',0,'N',111
+107165,'1234567','BWI','ATL',1230,1423,'DL',539,'FYBMQ','M80','L',0,'N',113
+107166,'1234567','BWI','ATL',1600,1750,'DL',1055,'FYBMQ','M80','S/',0,'N',110
+107167,'1234567','BWI','ATL',1659,1854,'EA',131,'FYHQK','D9S','D',0,'N',115
+107168,'1234567','BWI','ATL',1945,2128,'DL',469,'FYBMQ','757','',0,'N',103
+107193,'123456-','BWI','BOS',720,839,'US',1049,'FYBHQ','72S','B/S',0,'N',79
+107194,'1234567','BWI','BOS',905,1025,'US',600,'FYBHQ','733','S/',0,'N',80
+107195,'1234567','BWI','BOS',1010,1130,'US',1508,'FYBHQ','72S','S/',0,'N',80
+107196,'1234567','BWI','BOS',1310,1430,'US',324,'FYBHQ','73S','S',0,'N',80
+107197,'1234567','BWI','BOS',1630,1749,'US',1016,'FYBHQ','72S','',0,'N',79
+107198,'1234567','BWI','BOS',1745,1905,'US',1586,'FYBHQ','73S','S',0,'N',80
+107199,'1234567','BWI','BOS',2045,2205,'US',1750,'FYBHQ','734','',0,'N',80
+107200,'1234567','BWI','BOS',2110,2231,'US',368,'FYBHQ','733','',0,'N',81
+107253,'123456-','BWI','DEN',800,1135,'US',1402,'FYBHQ','733','SB',1,'N',335
+107254,'1234567','BWI','DEN',915,1110,'UA',277,'FYBMQ','72S','B',0,'N',235
+107255,'1234567','BWI','DEN',1205,1410,'US',2123,'FYBHQ','734','L',0,'N',245
+107256,'1234567','BWI','DEN',1745,1933,'UA',707,'FYBMQ','72S','D',0,'N',228
+107257,'1234567','BWI','DFW',745,1015,'AA',195,'FYBMV','M80','B',0,'N',210
+107258,'1234567','BWI','DFW',845,1100,'DL',1028,'FYBMQ','D9S','B',0,'N',195
+107259,'1234567','BWI','DFW',1245,1518,'AA',273,'FYBMV','72S','L',0,'N',213
+107260,'1234567','BWI','DFW',1505,1745,'AA',1179,'FYBMV','M80','S',0,'N',220
+107261,'1234567','BWI','DFW',1530,1800,'DL',743,'FYBMQ','73S','S',0,'N',210
+107264,'1234567','BWI','DFW',1852,2120,'AA',599,'FYBMV','72S','D',0,'N',208
+107470,'123456-','BWI','PHL',715,808,'US',3724,'YBHQM','SH3','',0,'Y',53
+107471,'1234567','BWI','PHL',1000,1053,'US',4518,'YBHQM','DH8','',0,'Y',53
+107472,'1234567','BWI','PHL',1205,1258,'US',3533,'YBHQM','SH6','',0,'Y',53
+107473,'1234567','BWI','PHL',1325,1415,'US',4393,'YBHQM','DH8','',0,'Y',50
+107474,'12345-7','BWI','PHL',1500,1543,'US',4386,'YBHQM','DH8','',0,'Y',43
+107475,'1234567','BWI','PHL',1640,1733,'US',3738,'YBHQM','SH3','',0,'Y',53
+107476,'12345-7','BWI','PHL',1930,2020,'US',3753,'YBHQM','SH3','',0,'Y',50
+107477,'12345-7','BWI','PHL',2010,2103,'US',3721,'YBHQM','SH6','',0,'Y',53
+107478,'12345-7','BWI','PHL',2053,2146,'US',3671,'YBHQM','SH6','',0,'Y',53
+107484,'123456-','BWI','PIT',700,758,'US',351,'FYBHQ','734','S',0,'N',58
+107485,'------7','BWI','PIT',715,815,'US',931,'FYBHQ','100','S',0,'N',60
+107486,'123456-','BWI','PIT',800,901,'US',1402,'FYBHQ','733','S',0,'N',61
+107487,'1234567','BWI','PIT',1240,1343,'US',1276,'FYBHQ','733','',0,'N',63
+107488,'------7','BWI','PIT',1300,1406,'US',977,'FYBHQ','F28','',0,'N',66
+107489,'1234567','BWI','PIT',1620,1720,'US',451,'FYBHQ','72S','',0,'N',60
+107490,'1234567','BWI','PIT',1710,1812,'US',189,'FYBHQ','D9S','',0,'N',62
+107491,'1234567','BWI','PIT',1825,1928,'US',1605,'FYBHQ','733','',0,'N',63
+107492,'1234567','BWI','PIT',2100,2202,'US',1216,'FYBHQ','73S','',0,'N',62
+111886,'1234567','DEN','ATL',55,527,'DL',296,'FNYNBNMQ','72S','',0,'N',152
+111887,'1234567','DEN','ATL',215,654,'EA',820,'FNYNHQNK','757','S',0,'N',159
+111888,'1234567','DEN','ATL',800,1235,'DL',402,'FYBMQ','72S','B',0,'N',155
+111889,'1234567','DEN','ATL',825,1315,'EA',822,'FYHQK','72S','B',0,'N',170
+111891,'1234567','DEN','ATL',1039,1537,'UA',408,'FYBMQ','733','L',0,'N',178
+111892,'1234567','DEN','ATL',1055,1541,'DL',317,'FYBMQ','757','L',0,'N',166
+111893,'1234567','DEN','ATL',1155,1645,'EA',824,'FYHQK','72S','L',0,'N',170
+111894,'1234567','DEN','ATL',1450,1925,'DL',704,'FYBMQ','757','D',0,'N',155
+111895,'1234567','DEN','ATL',1815,2250,'DL',1644,'FYBMQ','72S','D',0,'N',155
+111896,'1234567','DEN','ATL',1837,2330,'UA',886,'FYBMQ','73S','D',0,'N',173
+111924,'1234567','DEN','BOS',55,1000,'DL',296,'FNYNBNMQ','72S','B',2,'N',425
+111928,'1234567','DEN','BOS',1039,1619,'UA',352,'FYBMQ','D8S','L',0,'N',220
+111929,'1234567','DEN','BOS',1105,1700,'CO',1234,'FYQHK','M80','L',0,'N',235
+111930,'1234567','DEN','BOS',1455,2205,'US',1750,'FYBHQ','734','L',1,'N',310
+111931,'1234567','DEN','BOS',1520,2056,'UA',354,'FYBMQ','72S','D',0,'N',216
+111932,'1234567','DEN','BOS',1605,2145,'CO',1220,'FYQHK','M80','D',0,'N',220
+111933,'12345-7','DEN','BOS',1935,132,'CO',1270,'FYQHK','733','D',0,'N',237
+111937,'1234567','DEN','BWI',1045,1553,'UA',658,'FYBMQ','72S','L',0,'N',188
+111939,'1234567','DEN','BWI',1455,2010,'US',1750,'FYBHQ','734','L',0,'N',195
+111941,'1234567','DEN','BWI',1828,2332,'UA',302,'FYBMQ','72S','D',0,'N',184
+112028,'1234567','DEN','DFW',450,742,'AA',1412,'FNYNBMV','M80','',0,'N',112
+112029,'123456-','DEN','DFW',605,851,'UA',216,'FYBMQ','733','B',0,'N',106
+112030,'--34567','DEN','DFW',620,906,'DL',465,'FNYNBNMQ','M80','B',0,'N',106
+112031,'12-----','DEN','DFW',620,906,'DL',465,'FNYNBNMQ','72S','B',0,'N',106
+112032,'1234567','DEN','DFW',901,1210,'AA',912,'FYBMV','M80','S',0,'N',129
+112033,'1234567','DEN','DFW',950,1235,'DL',335,'FYBMQ','M80','S',0,'N',105
+112034,'1234567','DEN','DFW',1029,1312,'UA',438,'FYBMQ','727','L',0,'N',103
+112035,'1234567','DEN','DFW',1040,1343,'AA',464,'FYBMV','M80','S',0,'N',123
+112036,'1234567','DEN','DFW',1105,1353,'CO',1226,'FYQHK','72S','L',0,'N',108
+112037,'1234567','DEN','DFW',1210,1504,'AA',242,'FYBMV','M80','L',0,'N',114
+112038,'-----6-','DEN','DFW',1310,1555,'UA',888,'FYBMQ','727','S',0,'N',105
+112039,'12345-7','DEN','DFW',1310,1555,'UA',880,'FYBMQ','727','S',0,'N',105
+112041,'1234567','DEN','DFW',1325,1615,'CO',90,'FYQHK','72S','S',0,'N',110
+112040,'1234567','DEN','DFW',1325,1615,'DL',870,'FYBMQ','M80','L',0,'N',110
+112042,'1234567','DEN','DFW',1340,1628,'AA',50,'FYBMV','M80','',0,'N',108
+112043,'1234567','DEN','DFW',1507,1753,'UA',450,'FYBMQ','727','',0,'N',106
+112044,'1234567','DEN','DFW',1605,1905,'CO',1652,'FYQHK','M80','D',0,'N',120
+112045,'1234567','DEN','DFW',1613,1923,'AA',618,'FYBMV','72S','D',0,'N',130
+112046,'1234567','DEN','DFW',1700,1943,'DL',742,'FYBMQ','72S','D',0,'N',103
+112047,'1234567','DEN','DFW',1723,2006,'UA',714,'FYBMQ','72S','D',0,'N',103
+112048,'1234567','DEN','DFW',1808,2103,'AA',1486,'FYBMV','M80','D',0,'N',115
+112049,'12345-7','DEN','DFW',1835,2122,'UA',664,'FYBMQ','727','D',0,'N',107
+112050,'1234567','DEN','DFW',1925,2220,'CO',935,'FYQHK','733','S',0,'N',115
+112051,'1234567','DEN','DFW',1955,2240,'DL',661,'FNYNBNMQ','72S','S',0,'N',105
+112052,'1234567','DEN','DFW',2036,2327,'AA',1432,'FNYNBMV','M80','',0,'N',111
+112351,'1234567','DEN','OAK',840,1014,'UA',389,'FYBMQ','727','B',0,'N',154
+112352,'1234567','DEN','OAK',1208,1339,'UA',551,'FYBMQ','727','L',0,'N',151
+112353,'1234567','DEN','OAK',1715,1852,'UA',645,'FYBMQ','73S','D',0,'N',157
+112354,'1234567','DEN','OAK',2030,2205,'UA',673,'FYBMQ','733','',0,'N',155
+112413,'1234567','DEN','PHL',55,825,'DL',296,'FNYNBNMQ','72S','B',1,'N',330
+112415,'1234567','DEN','PHL',1033,1553,'UA',270,'FYBMQ','D8S','L',0,'N',200
+112416,'1234567','DEN','PHL',1120,1705,'CO',1602,'FYQHK','733','L',0,'N',225
+112417,'1234567','DEN','PHL',1524,2041,'UA',494,'FYBMQ','D10','D',0,'N',197
+112418,'1234567','DEN','PHL',1615,2146,'CO',784,'FYQHK','72S','D/S',0,'N',211
+112440,'1234567','DEN','PIT',730,1225,'US',1039,'FYBHQ','734','B',0,'N',175
+112441,'1234567','DEN','PIT',1035,1527,'US',1520,'FYBHQ','733','B',0,'N',172
+112442,'1234567','DEN','PIT',1605,2057,'US',1421,'FYBHQ','733','D',0,'N',172
+112513,'1234567','DEN','SFO',830,1006,'UA',819,'FCYBM','D10','B',0,'N',156
+112514,'1234567','DEN','SFO',840,1041,'CO',1679,'FYQHK','733','B',0,'N',181
+112515,'1234567','DEN','SFO',935,1110,'UA',315,'FYBMQ','72S','S',0,'N',155
+112516,'1234567','DEN','SFO',1200,1336,'UA',343,'FYBMQ','D8S','L',0,'N',156
+112519,'12345-7','DEN','SFO',1220,1416,'CO',1295,'FYQHK','733','L',0,'N',176
+112518,'-----6-','DEN','SFO',1220,1416,'CO',1291,'FYQHK','72S','L',0,'N',176
+112520,'1234567','DEN','SFO',1408,1535,'UA',773,'FYBMQ','727','S',0,'N',147
+112524,'1234567','DEN','SFO',1735,1912,'UA',207,'FYBMQ','757','D',0,'N',157
+112525,'1234567','DEN','SFO',1810,1947,'CO',511,'FYQHK','72S','D/S',0,'N',157
+112526,'1234567','DEN','SFO',2045,2214,'UA',297,'FYBMQ','72S','',0,'N',149
+112527,'1234567','DEN','SFO',2130,2310,'CO',1765,'FQYNHK','M80','',0,'N',160
+112766,'1234567','DFW','ATL',625,917,'DL',16,'FYBMQ','L15','B',0,'N',112
+112771,'1234567','DFW','ATL',658,950,'AA',864,'FNYNBMV','M80','B',0,'N',112
+112772,'1234567','DFW','ATL',800,1050,'DL',83,'FYBMQ','L10','B',0,'N',110
+112773,'1234567','DFW','ATL',945,1244,'DL',790,'FYBMQ','767','S',0,'N',119
+112777,'1234567','DFW','ATL',1140,1434,'DL',446,'FYBMQ','M80','L',0,'N',114
+112783,'1234567','DFW','ATL',1251,1549,'AA',504,'FYBMV','M80','L',0,'N',118
+112784,'1234567','DFW','ATL',1305,1606,'DL',796,'FYBMQ','763','L',0,'N',121
+112789,'1234567','DFW','ATL',1442,1746,'AA',482,'FYBMV','M80','S',0,'N',124
+112790,'1234567','DFW','ATL',1501,1753,'DL',688,'FYBMQ','763','S',0,'N',112
+112793,'--34567','DFW','ATL',1650,1943,'DL',748,'FYBMQ','L10','D',0,'N',113
+112794,'12-----','DFW','ATL',1650,1943,'DL',748,'FYBMQ','763','D',0,'N',113
+112797,'-2-----','DFW','ATL',1705,2005,'LH',443,'FCBMK','74M','D',0,'N',120
+112798,'1234567','DFW','ATL',1716,2016,'AA',222,'FYBMV','M80','D',0,'N',120
+112802,'1234567','DFW','ATL',1840,2133,'DL',832,'FYBMQ','M80','D',0,'N',113
+112804,'1234567','DFW','ATL',1958,2255,'AA',496,'FNYNBMV','M80','S/',0,'N',117
+112805,'1234567','DFW','ATL',2010,2258,'DL',1720,'FYBMQ','72S','S/',0,'N',108
+112806,'1234567','DFW','ATL',2215,100,'DL',1008,'FNYNBNMQ','D9S','',0,'N',105
+112807,'1234567','DFW','ATL',2257,151,'AA',628,'FNYNBMV','M80','',0,'N',114
+112808,'1234567','DFW','ATL',2345,230,'DL',1030,'FNYNBNMQ','M80','',0,'N',105
+112864,'1234567','DFW','BOS',641,1104,'AA',928,'FYBMV','767','B',0,'N',203
+112867,'12-----','DFW','BOS',1005,1435,'DL',694,'FYBMQ','72S','B',0,'N',210
+112866,'--34567','DFW','BOS',1005,1435,'DL',694,'FYBMQ','M80','B',0,'N',210
+112869,'1234567','DFW','BOS',1304,1730,'AA',28,'FYBMV','D10','L/S',0,'N',206
+112870,'1234567','DFW','BOS',1315,1755,'DL',128,'FYBMQ','757','L',0,'N',220
+112872,'1234567','DFW','BOS',1448,1925,'AA',634,'FYBMV','767','S',0,'N',217
+112873,'1234567','DFW','BOS',1705,2125,'DL',670,'FYBMQ','72S','D',0,'N',200
+112874,'1234567','DFW','BOS',1719,2152,'AA',154,'FYBMV','D10','D',0,'N',213
+112903,'1234567','DFW','BWI',822,1200,'AA',314,'FYBMV','72S','B',0,'N',158
+112904,'1234567','DFW','BWI',1020,1400,'DL',430,'FYBMQ','73S','L',0,'N',160
+112905,'1234567','DFW','BWI',1426,1807,'AA',600,'FYBMV','72S','S',0,'N',161
+112907,'1234567','DFW','BWI',1708,2045,'DL',605,'FYBMQ','M80','D',0,'N',157
+112908,'1234567','DFW','BWI',1717,2110,'AA',268,'FYBMV','M80','D',0,'N',173
+112909,'1234567','DFW','BWI',1957,2334,'AA',376,'FYBMV','72S','S',0,'N',157
+112989,'1234567','DFW','DEN',650,800,'CO',1149,'FYQHK','733','B',0,'N',130
+112990,'1234567','DFW','DEN',658,753,'AA',1443,'FYBMV','M80','B',0,'N',115
+112991,'123456-','DFW','DEN',700,753,'UA',953,'FYBMQ','72S','B',0,'N',113
+112992,'1234567','DFW','DEN',816,910,'DL',416,'FYBMQ','M80','B',0,'N',114
+112993,'1234567','DFW','DEN',822,932,'AA',445,'FYBMV','M80','B',0,'N',130
+112994,'1234567','DFW','DEN',830,921,'UA',985,'FYBMQ','727','B',0,'N',111
+112995,'1234567','DFW','DEN',941,1047,'AA',521,'FYBMV','M80','S',0,'N',126
+112996,'-----6-','DFW','DEN',1030,1130,'CO',1291,'FYQHK','72S','S',0,'N',120
+112997,'12345-7','DFW','DEN',1030,1130,'CO',215,'FYQHK','72S','S',0,'N',120
+112998,'1234567','DFW','DEN',1032,1125,'UA',551,'FYBMQ','727','S',0,'N',113
+112999,'1234567','DFW','DEN',1108,11,'AA',419,'FYBMV','M80','S',0,'N',123
+113000,'1234567','DFW','DEN',1151,1245,'DL',551,'FYBMQ','M80','L',0,'N',114
+113001,'1234567','DFW','DEN',1240,1333,'UA',773,'FYBMQ','727','L',0,'N',113
+113002,'1234567','DFW','DEN',1428,1528,'AA',1249,'FYBMV','72S','',0,'N',120
+113003,'1234567','DFW','DEN',1500,1554,'DL',309,'FYBMQ','72S','',0,'N',114
+113004,'1234567','DFW','DEN',1547,1646,'UA',725,'FYBMQ','733','',0,'N',119
+113005,'1234567','DFW','DEN',1607,1714,'AA',51,'FYBMV','M80','',0,'N',127
+113006,'1234567','DFW','DEN',1630,1729,'CO',469,'FYQHK','72S','',0,'N',119
+113007,'1234567','DFW','DEN',1835,1936,'AA',193,'FNYNBMV','M80','D',0,'N',121
+113008,'12345-7','DFW','DEN',1850,1951,'UA',475,'FYBMQ','733','D',0,'N',121
+113009,'1234567','DFW','DEN',1855,1950,'DL',807,'FYBMQ','72S','D',0,'N',115
+113010,'1234567','DFW','DEN',1940,2040,'CO',271,'FYQHK','M80','D/S',0,'N',120
+113011,'1234567','DFW','DEN',2153,2253,'AA',313,'FNYNBMV','M80','',0,'N',120
+113013,'1-----7','DFW','DEN',2225,2320,'DL',621,'FNYNBNMQ','72S','',0,'N',115
+113012,'-23456-','DFW','DEN',2225,2320,'DL',621,'FNYNBNMQ','M80','',0,'N',115
+113498,'1234567','DFW','OAK',943,1133,'AA',877,'FYBMV','M80','B',0,'N',230
+113499,'1234567','DFW','OAK',1032,1339,'UA',551,'FYBMQ','727','SL',1,'N',307
+113500,'1234567','DFW','OAK',1835,2023,'AA',459,'FYBMV','M80','D',0,'N',228
+113501,'1234567','DFW','OAK',2153,2343,'AA',367,'FNYNBMV','M80','',0,'N',230
+113576,'1234567','DFW','PHL',703,1106,'AA',124,'FYBMV','M80','B',0,'N',183
+113577,'1234567','DFW','PHL',950,1350,'DL',1006,'FYBMQ','73S','B',0,'N',180
+113578,'1234567','DFW','PHL',1303,1706,'AA',1010,'FYBMV','767','L/S',0,'N',183
+113579,'1234567','DFW','PHL',1310,1705,'DL',234,'FYBMQ','72S','L',0,'N',175
+113581,'1234567','DFW','PHL',1718,2130,'AA',586,'FYBMV','M80','D',0,'N',192
+113582,'1234567','DFW','PHL',1959,2358,'AA',1074,'FYBMV','M80','S/',0,'N',179
+113583,'1234567','DFW','PHL',2025,15,'DL',1546,'FNYNBNMQ','72S','S',0,'N',170
+113595,'1234567','DFW','PIT',825,1200,'AA',478,'FYBMV','M80','B',0,'N',155
+113596,'1234567','DFW','PIT',845,1214,'US',326,'FYBHQ','M80','B',0,'N',149
+113597,'1234567','DFW','PIT',1230,1559,'US',96,'FYBHQ','M80','L',0,'N',149
+113599,'1234567','DFW','PIT',1434,1804,'AA',296,'FYBMV','M80','S',0,'N',150
+113600,'1234567','DFW','PIT',1720,2059,'US',504,'FYBHQ','M80','D',0,'N',159
+113602,'1234567','DFW','PIT',1958,2328,'AA',144,'FYBMV','M80','S/',0,'N',150
+113705,'1234567','DFW','SFO',815,955,'DL',825,'FYBMQ','757','B',0,'N',220
+113706,'1234567','DFW','SFO',826,1013,'AA',203,'FYBMV','D10','B',0,'N',227
+113707,'1234567','DFW','SFO',935,1127,'UA',459,'FYBMQ','733','L',0,'N',232
+113709,'1234567','DFW','SFO',944,1147,'AA',125,'FYBMV','M80','B',0,'N',243
+113710,'-----6-','DFW','SFO',1030,1416,'CO',1291,'FYQHK','72S','SL',1,'N',346
+113711,'1234567','DFW','SFO',1107,59,'AA',295,'FYBMV','D10','L',0,'N',232
+113712,'1234567','DFW','SFO',1143,1325,'DL',149,'FYBMQ','767','L',0,'N',222
+113713,'1234567','DFW','SFO',1240,1535,'UA',773,'FYBMQ','727','LS',1,'N',295
+113715,'1234567','DFW','SFO',1510,1650,'DL',887,'FYBMQ','757','S',0,'N',220
+113716,'1234567','DFW','SFO',1604,1758,'AA',813,'FYBMV','767','D',0,'N',234
+113717,'1234567','DFW','SFO',1705,1858,'AA',1119,'FYBMV','767','D',0,'N',233
+113718,'1234567','DFW','SFO',1840,2029,'AA',71,'FYBMV','D10','D',0,'N',229
+113719,'1234567','DFW','SFO',1900,2050,'DL',139,'FYBMQ','757','D',0,'N',230
+113720,'1234567','DFW','SFO',2155,2341,'AA',37,'FNYNBMV','767','S',0,'N',226
+113721,'1234567','DFW','SFO',2214,2350,'DL',395,'FNYNBNMQ','757','S',0,'N',216
+133423,'1234567','OAK','BOS',1105,2056,'UA',354,'FYBMQ','72S','LD',1,'N',411
+133430,'1234567','OAK','DEN',625,949,'UA',982,'FYBMQ','733','B',0,'N',144
+133431,'1234567','OAK','DEN',1105,1417,'UA',354,'FYBMQ','72S','L',0,'N',132
+133432,'1234567','OAK','DEN',1425,1740,'UA',436,'FYBMQ','727','S',0,'N',135
+133433,'1234567','OAK','DEN',1930,2251,'UA',384,'FYBMQ','73S','S/',0,'N',141
+133434,'1234567','OAK','DFW',35,552,'AA',534,'FNYNBMV','M80','',0,'N',197
+133435,'1234567','OAK','DFW',640,1214,'AA',1086,'FYBMV','M80','B',0,'N',214
+133436,'1234567','OAK','DFW',1345,1912,'AA',1074,'FYBMV','M80','L',0,'N',207
+133516,'1234567','OAK','PHL',1345,2358,'AA',1074,'FYBMV','M80','LS/L',1,'N',433
+133567,'123456-','OAK','SFO',530,554,'AA',5112,'YNBMVQ','SWM','',0,'Y',24
+133568,'------7','OAK','SFO',735,759,'AA',5235,'YBMVQ','SWM','',0,'Y',24
+133569,'------7','OAK','SFO',1020,1055,'AA',5140,'YBMVQ','SWM','',0,'Y',35
+137221,'1234567','PHL','ATL',540,740,'DL',201,'FNYNBNMQ','72S','B',0,'N',120
+137222,'1234567','PHL','ATL',635,844,'EA',121,'FNYNHQNK','D9S','B',0,'N',129
+137223,'1234567','PHL','ATL',800,1004,'EA',601,'FYHQK','D9S','B',0,'N',124
+137224,'1234567','PHL','ATL',900,1104,'DL',803,'FYBMQ','757','S',0,'N',124
+137225,'1234567','PHL','ATL',900,1110,'US',667,'FYBHQ','733','B',0,'N',130
+137226,'1234567','PHL','ATL',930,1142,'EA',125,'FYHQK','D9S','S',0,'N',132
+137227,'1234567','PHL','ATL',1115,1320,'EA',123,'FYHQK','D9S','L',0,'N',125
+137228,'1234567','PHL','ATL',1230,1430,'DL',1083,'FYBMQ','72S','L',0,'N',120
+137229,'1234567','PHL','ATL',1304,1512,'EA',127,'FYHQK','D9S','L',0,'N',128
+137230,'1234567','PHL','ATL',1405,1605,'DL',429,'FYBMQ','72S','',0,'N',120
+137231,'1234567','PHL','ATL',1405,1615,'US',1623,'FYBHQ','73S','L/S',0,'N',130
+137232,'1234567','PHL','ATL',1500,1710,'EA',603,'FYHQK','D9S','S/',0,'N',130
+137233,'1234567','PHL','ATL',1600,1805,'DL',1507,'FYBMQ','72S','S',0,'N',125
+137234,'1234567','PHL','ATL',1700,1909,'EA',329,'FYHQK','D9S','D',0,'N',129
+137235,'1234567','PHL','ATL',1750,1950,'DL',101,'FYBMQ','72S','D',0,'N',120
+137236,'1234567','PHL','ATL',1850,2055,'EA',129,'FYHQK','D9S','D',0,'N',125
+137237,'1234567','PHL','ATL',1855,2101,'US',289,'FYBHQ','D9S','D',0,'N',126
+137238,'1234567','PHL','ATL',1935,2137,'DL',389,'FYBMQ','767','D',0,'N',122
+137315,'1234567','PHL','BOS',615,719,'DL',562,'FYBMQ','757','B/S',0,'N',64
+137316,'1234567','PHL','BOS',700,805,'US',292,'FYBHQ','733','S',0,'N',65
+137317,'123456-','PHL','BOS',700,820,'ML',436,'FYMHQ','D9S','B/S',0,'N',80
+137318,'1234567','PHL','BOS',800,907,'US',1557,'FYBHQ','73S','S',0,'N',67
+137319,'1234567','PHL','BOS',855,1000,'DL',296,'FYBMQ','72S','',0,'N',65
+137320,'1234567','PHL','BOS',1020,1127,'US',424,'FYBHQ','M80','',0,'N',67
+137321,'1234567','PHL','BOS',1020,1140,'ML',400,'FYMHQ','D9S','',0,'N',80
+137322,'1234567','PHL','BOS',1200,1315,'ML',438,'FYMHQ','D9S','L/S',0,'N',75
+137323,'1234567','PHL','BOS',1250,1355,'DL',726,'FYBMQ','72S','S',0,'N',65
+137324,'1234567','PHL','BOS',1325,1432,'US',122,'FYBHQ','D9S','',0,'N',67
+137326,'1234567','PHL','BOS',1440,1548,'US',404,'FYBHQ','72S','',0,'N',68
+137327,'1234567','PHL','BOS',1520,1627,'US',282,'FYBHQ','73S','',0,'N',67
+137328,'1234567','PHL','BOS',1540,1700,'ML',420,'FYMHQ','D9S','',0,'N',80
+137329,'1234567','PHL','BOS',1600,1707,'US',2,'FYBHQ','73S','',0,'N',67
+137330,'-2-4--7','PHL','BOS',1615,1730,'LH',421,'FCBMK','D10','',0,'N',75
+137331,'1234567','PHL','BOS',1650,1755,'DL',648,'FYBMQ','72S','S',0,'N',65
+137332,'12345-7','PHL','BOS',1700,1820,'ML',430,'FYMHQ','D9S','',0,'N',80
+137333,'1234567','PHL','BOS',1755,1902,'US',196,'FYBHQ','M80','',0,'N',67
+137334,'12345-7','PHL','BOS',1855,2002,'US',460,'FYBHQ','D9S','',0,'N',67
+137335,'1234567','PHL','BOS',1945,2053,'US',162,'FYBHQ','72S','',0,'N',68
+137336,'12345-7','PHL','BOS',2030,2137,'US',539,'FYBHQ','D9S','',0,'N',67
+137337,'1234567','PHL','BOS',2055,2215,'ML',432,'FYMHQ','D9S','',0,'N',80
+137338,'12345-7','PHL','BOS',2100,2207,'US',279,'FYBHQ','734','',0,'N',67
+137339,'1234567','PHL','BOS',2115,2219,'DL',106,'FNYNBNMQ','M80','',0,'N',64
+137353,'12345--','PHL','BWI',715,804,'US',3745,'YBHQM','SH3','',0,'Y',49
+137354,'123456-','PHL','BWI',840,929,'US',3725,'YBHQM','SH3','',0,'Y',49
+137355,'1234567','PHL','BWI',1100,1150,'US',3609,'YBHQM','SH6','',0,'Y',50
+137356,'1234567','PHL','BWI',1200,1250,'US',3765,'YBHQM','SH3','',0,'Y',50
+137357,'1234567','PHL','BWI',1335,1425,'US',4517,'YBHQM','DH8','',0,'Y',50
+137358,'1234567','PHL','BWI',1520,1620,'US',3749,'YBHQM','SH3','',0,'Y',60
+137359,'1234567','PHL','BWI',1854,1944,'US',3357,'YBHQM','J31','',0,'Y',50
+137360,'12345-7','PHL','BWI',2045,2135,'US',3753,'YBHQM','SH3','',0,'Y',50
+137361,'12345-7','PHL','BWI',2150,2240,'US',4400,'YBHQM','DH8','',0,'Y',50
+137407,'1234567','PHL','DEN',905,1107,'UA',131,'FYBMQ','D10','B',0,'N',242
+137408,'1234567','PHL','DEN',915,1138,'CO',781,'FYQHK','72S','B',0,'N',263
+137410,'1234567','PHL','DEN',1230,1615,'DL',1083,'FYBMQ','72S','LS',1,'N',345
+137412,'1234567','PHL','DEN',1753,1955,'UA',355,'FYBMQ','D8S','D',0,'N',242
+137413,'1234567','PHL','DEN',1800,2037,'CO',1631,'FYQHK','733','D',0,'N',277
+137414,'1234567','PHL','DFW',720,1014,'AA',487,'FYBMV','M80','B',0,'N',234
+137415,'1234567','PHL','DFW',830,1050,'DL',217,'FYBMQ','72S','B',0,'N',200
+137417,'1234567','PHL','DFW',1212,1502,'AA',883,'FYBMV','M80','L',0,'N',230
+137419,'1234567','PHL','DFW',1440,1710,'DL',1061,'FYBMQ','73S','S',0,'N',210
+137420,'1234567','PHL','DFW',1500,1747,'AA',459,'FYBMV','M80','S',0,'N',227
+137422,'1234567','PHL','DFW',1805,2047,'AA',573,'FYBMV','767','D',0,'N',222
+137423,'1234567','PHL','DFW',1915,2144,'DL',589,'FYBMQ','72S','D',0,'N',209
+137685,'1234567','PHL','OAK',1500,2023,'AA',459,'FYBMV','M80','SD',1,'N',503
+137732,'1234567','PHL','PIT',700,806,'US',71,'FYBHQ','733','B',0,'N',66
+137733,'1234567','PHL','PIT',740,847,'US',39,'FYBHQ','733','B',0,'N',67
+137734,'123456-','PHL','PIT',840,950,'US',1800,'FYBHQ','734','S/',0,'N',70
+137735,'1234567','PHL','PIT',1010,1115,'US',358,'FYBHQ','M80','S/',0,'N',65
+137736,'1234567','PHL','PIT',1235,1341,'US',37,'FYBHQ','733','S',0,'N',66
+137737,'1234567','PHL','PIT',1600,1706,'US',778,'FYBHQ','733','S/',0,'N',66
+137738,'1234567','PHL','PIT',1715,1822,'US',1580,'FYBHQ','734','S/',0,'N',67
+137739,'1234567','PHL','PIT',1810,1916,'US',772,'FYBHQ','72S','S',0,'N',66
+137740,'1234567','PHL','PIT',2100,2207,'US',293,'FYBHQ','733','',0,'N',67
+137811,'1234567','PHL','SFO',800,1121,'UA',143,'FYBMQ','767','B',0,'N',381
+137814,'1234567','PHL','SFO',1235,1652,'US',37,'FYBHQ','733','SL',1,'N',437
+137817,'1234567','PHL','SFO',1655,2005,'UA',101,'FYBMQ','D8S','D',0,'N',370
+138817,'1234567','PIT','ATL',600,739,'DL',357,'FNYNBNMQ','73S','B',0,'N',99
+138818,'1234567','PIT','ATL',645,825,'EA',303,'FYHQK','D9S','B',0,'N',100
+138819,'1234567','PIT','ATL',827,1004,'EA',301,'YHQKL','72S','B',0,'N',97
+138820,'1234567','PIT','ATL',845,1025,'US',573,'FYBHQ','D9S','B',0,'N',100
+138821,'1234567','PIT','ATL',910,1048,'DL',1059,'FYBMQ','D9S','S',0,'N',98
+138822,'1234567','PIT','ATL',1150,1329,'EA',307,'FYHQK','D9S','L',0,'N',99
+138823,'1234567','PIT','ATL',1245,1420,'DL',631,'FYBMQ','D9S','L',0,'N',95
+138824,'1234567','PIT','ATL',1320,1500,'US',18,'FYBHQ','D9S','L',0,'N',100
+138825,'1234567','PIT','ATL',1520,1701,'EA',311,'YHQKL','72S','S',0,'N',101
+138827,'1234567','PIT','ATL',1600,1735,'DL',709,'FYBMQ','73S','',0,'N',95
+138828,'1234567','PIT','ATL',1750,1930,'US',1103,'FYBHQ','733','D',0,'N',100
+138829,'1234567','PIT','ATL',1855,2035,'EA',327,'FYHQK','757','D',0,'N',100
+138830,'-----67','PIT','ATL',1945,2118,'DL',381,'FNYNBNMQ','73S','D',0,'N',93
+138831,'12345--','PIT','ATL',1945,2118,'DL',381,'FNYNBNMQ','72S','D',0,'N',93
+138832,'1234567','PIT','ATL',2025,2205,'US',412,'FYBHQ','D9S','D/S',0,'N',100
+138860,'1234567','PIT','BOS',710,839,'US',732,'FYBHQ','733','B',0,'N',89
+138861,'1234567','PIT','BOS',840,1006,'US',736,'FYBHQ','733','S/',0,'N',86
+138862,'1234567','PIT','BOS',1200,1328,'US',674,'FYBHQ','M80','S',0,'N',88
+138863,'1234567','PIT','BOS',1310,1440,'US',418,'FYBHQ','D9S','S',0,'N',90
+138864,'1234567','PIT','BOS',1355,1524,'US',794,'FYBHQ','D9S','S/',0,'N',89
+138865,'1234567','PIT','BOS',1640,1809,'US',14,'FYBHQ','733','S/',0,'N',89
+138866,'1234567','PIT','BOS',1800,2053,'US',162,'FYBHQ','72S','S',1,'N',173
+138867,'12345-7','PIT','BOS',1930,2058,'US',400,'FYBHQ','73S','S',0,'N',88
+138868,'1234567','PIT','BOS',2155,2322,'US',30,'FYBHQ','72S','',0,'N',87
+138878,'1234567','PIT','BWI',845,938,'US',446,'FYBHQ','72S','',0,'N',53
+138879,'1234567','PIT','BWI',1030,1129,'US',1801,'FYBHQ','734','',0,'N',59
+138880,'1234567','PIT','BWI',1400,1458,'US',538,'FYBHQ','D9S','',0,'N',58
+138881,'1234567','PIT','BWI',1525,1621,'US',1982,'FYBHQ','F28','',0,'N',56
+138882,'1234567','PIT','BWI',1640,1737,'US',2153,'FYBHQ','733','',0,'N',57
+138883,'-----6-','PIT','BWI',1810,1910,'US',975,'FYBHQ','F28','',0,'N',60
+138884,'1234567','PIT','BWI',2155,2252,'US',1793,'FYBHQ','733','',0,'N',57
+138963,'1234567','PIT','DEN',950,1135,'US',1402,'FYBHQ','733','B',0,'N',225
+138964,'1234567','PIT','DEN',1330,1510,'US',1417,'FYBHQ','733','L',0,'N',220
+138965,'1234567','PIT','DEN',1854,2253,'AA',313,'FYBMV','M80','D',1,'N',359
+138966,'1234567','PIT','DEN',2035,2226,'US',1742,'FYBHQ','734','D',0,'N',231
+138970,'1234567','PIT','DFW',640,852,'AA',493,'FYBMV','M80','B',0,'N',192
+138971,'1234567','PIT','DFW',940,1149,'US',7,'FYBHQ','M80','B',0,'N',189
+138973,'1234567','PIT','DFW',1301,1514,'AA',425,'FYBMV','M80','L/S',0,'N',193
+138974,'1234567','PIT','DFW',1430,1639,'US',503,'FYBHQ','M80','L',0,'N',189
+138976,'1234567','PIT','DFW',1854,2107,'AA',313,'FYBMV','M80','D',0,'N',193
+138977,'1234567','PIT','DFW',2020,2229,'US',19,'FYBHQ','M80','D',0,'N',189
+139264,'1234567','PIT','PHL',700,755,'US',771,'FYBHQ','72S','B',0,'N',55
+139265,'1234567','PIT','PHL',740,850,'US',620,'FYBHQ','733','B',0,'N',70
+139266,'1234567','PIT','PHL',850,958,'US',606,'FYBHQ','733','S/',0,'N',68
+139267,'1234567','PIT','PHL',1150,1251,'US',122,'FYBHQ','D9S','S',0,'N',61
+139268,'1234567','PIT','PHL',1325,1430,'US',198,'FYBHQ','733','S',0,'N',65
+139269,'1234567','PIT','PHL',1640,1745,'US',1438,'FYBHQ','733','S/',0,'N',65
+139270,'1234567','PIT','PHL',1800,1900,'US',162,'FYBHQ','72S','S',0,'N',60
+139271,'1234567','PIT','PHL',1955,2100,'US',166,'FYBHQ','733','',0,'N',65
+139272,'12345-7','PIT','PHL',2045,2145,'US',1984,'FYBHQ','73S','',0,'N',60
+139273,'1234567','PIT','PHL',2145,2250,'US',1678,'FYBHQ','734','',0,'N',65
+139353,'1234567','PIT','SFO',945,1217,'US',31,'FYBHQ','72S','B',0,'N',332
+139355,'1234567','PIT','SFO',1430,1652,'US',37,'FYBHQ','733','L',0,'N',322
+139356,'1234567','PIT','SFO',1750,2022,'US',33,'FYBHQ','733','D',0,'N',332
+139357,'1234567','PIT','SFO',2020,2250,'US',35,'FYBHQ','733','D',0,'N',330
+144059,'1234567','SFO','ATL',645,1549,'AA',504,'FYBMV','M80','BL',1,'N',364
+144060,'1234567','SFO','ATL',815,1540,'DL',98,'FYBMQ','763','B',0,'N',265
+144061,'1234567','SFO','ATL',900,1644,'EA',70,'FYHQK','757','B',0,'N',284
+144062,'------7','SFO','ATL',1215,1933,'DL',116,'FYBMQ','767','L',0,'N',258
+144063,'123456-','SFO','ATL',1215,1933,'DL',116,'FYBMQ','L10','L',0,'N',258
+144065,'1234567','SFO','ATL',1310,2041,'EA',72,'FYHQK','757','L',0,'N',271
+144066,'1234567','SFO','ATL',1530,2248,'DL',162,'FYBMQ','757','D',0,'N',258
+144067,'1234567','SFO','ATL',2220,540,'DL',156,'FNYNBNMQ','767','S',0,'N',260
+144069,'1234567','SFO','ATL',2340,657,'EA',74,'FNYNHQNK','757','S',0,'N',257
+144087,'1234567','SFO','BOS',30,1104,'AA',928,'FNYNBMV','767','B',1,'N',454
+144088,'1234567','SFO','BOS',650,1700,'CO',1234,'FYQHK','M80','BL',1,'N',430
+144089,'1234567','SFO','BOS',800,1627,'UA',92,'FYBMQ','D8S','B',0,'N',327
+144090,'1234567','SFO','BOS',825,1639,'TW',754,'FCYBQ','L10','B',0,'N',314
+144092,'123456-','SFO','BOS',1215,2255,'DL',116,'FYBMQ','L10','LS/L',1,'N',460
+144093,'1234567','SFO','BOS',1320,2322,'US',30,'FYBHQ','72S','L',1,'N',422
+144094,'1234567','SFO','BOS',1340,2202,'UA',20,'FYBMQ','D10','L',0,'N',322
+144095,'1234567','SFO','BOS',1530,153,'DL',162,'FYBMQ','757','D',1,'N',443
+144110,'1234567','SFO','BWI',755,1737,'US',2153,'FYBHQ','733','B',1,'N',402
+144143,'1234567','SFO','DEN',620,946,'UA',194,'FYBMQ','D10','B',0,'N',146
+144144,'1234567','SFO','DEN',650,1017,'CO',1234,'FYQHK','M80','B',0,'N',147
+144145,'-----6-','SFO','DEN',900,1223,'UA',888,'FYBMQ','727','B',0,'N',143
+144146,'12345--','SFO','DEN',900,1223,'UA',880,'FYBMQ','727','B',0,'N',143
+144147,'1234567','SFO','DEN',915,1244,'CO',64,'FYQHK','72S','B',0,'N',149
+144148,'1234567','SFO','DEN',1108,1428,'UA',820,'FCYBM','D10','L',0,'N',140
+144149,'1234567','SFO','DEN',1155,1523,'CO',1212,'FYQHK','733','L',0,'N',148
+144150,'1234567','SFO','DEN',1431,1753,'UA',178,'FYBMQ','D8S','S',0,'N',142
+144152,'12345-7','SFO','DEN',1520,1850,'CO',886,'FYQHK','733','S',0,'N',150
+144151,'-----6-','SFO','DEN',1520,1850,'CO',886,'FYQHK','72S','S',0,'N',150
+144153,'1234567','SFO','DEN',1825,2143,'UA',346,'FYBMQ','73S','D',0,'N',138
+144155,'1234567','SFO','DFW',20,522,'DL',374,'FNYNBNMQ','757','S',0,'N',182
+144156,'1234567','SFO','DFW',30,548,'AA',928,'FNYNBMV','767','',0,'N',198
+144157,'1234567','SFO','DFW',645,1204,'AA',504,'FYBMV','M80','B',0,'N',199
+144158,'1234567','SFO','DFW',700,1221,'DL',838,'FYBMQ','767','B',0,'N',201
+144159,'1234567','SFO','DFW',800,1315,'AA',70,'FYBMV','D10','B',0,'N',195
+144160,'-----6-','SFO','DFW',900,1555,'UA',888,'FYBMQ','727','BS',1,'N',295
+144161,'12345--','SFO','DFW',900,1555,'UA',880,'FYBMQ','727','BS',1,'N',295
+144162,'1234567','SFO','DFW',945,1503,'AA',986,'FYBMV','767','B',0,'N',198
+144163,'1234567','SFO','DFW',1059,1612,'DL',1014,'FYBMQ','757','L',0,'N',193
+144164,'1234567','SFO','DFW',1105,1622,'AA',288,'FYBMV','D10','L',0,'N',197
+144165,'1234567','SFO','DFW',1240,1808,'UA',478,'FYBMQ','733','L',0,'N',208
+144166,'1234567','SFO','DFW',1349,1910,'AA',404,'FYBMV','D10','L',0,'N',201
+144167,'1234567','SFO','DFW',1425,1937,'DL',180,'FYBMQ','767','L',0,'N',192
+144168,'1234567','SFO','DFW',1655,2215,'AA',264,'FYBMV','767','D',0,'N',200
+144169,'1234567','SFO','DFW',1750,2258,'DL',852,'FYBMQ','757','D',0,'N',188
+144477,'1234567','SFO','OAK',1250,1319,'AA',5302,'YBMVQ','SWM','',0,'Y',29
+144478,'-----6-','SFO','OAK',1749,1809,'AA',5130,'YBMVQ','SWM','',0,'Y',20
+144479,'-----6-','SFO','OAK',1831,1853,'AA',5111,'YBMVQ','SWM','',0,'Y',22
+144480,'12345-7','SFO','OAK',2221,2247,'AA',5104,'YNBMVQ','SWM','',0,'Y',26
+144541,'1234567','SFO','PHL',810,1608,'UA',130,'FYBMQ','D8S','B',0,'N',298
+144543,'1234567','SFO','PHL',1125,2100,'US',166,'FYBHQ','733','L',1,'N',395
+144547,'1234567','SFO','PHL',1330,2141,'UA',94,'FYBMQ','767','L',0,'N',311
+144572,'1234567','SFO','PIT',755,1534,'US',2153,'FYBHQ','733','B',0,'N',279
+144574,'1234567','SFO','PIT',1125,1856,'US',166,'FYBHQ','733','L',0,'N',271
+144575,'1234567','SFO','PIT',1320,2046,'US',30,'FYBHQ','72S','L',0,'N',266
+144576,'1234567','SFO','PIT',2355,726,'US',604,'FYBHQ','733','D',0,'N',271
diff --git a/sql-bench/Data/ATIS/flight_class.txt b/sql-bench/Data/ATIS/flight_class.txt
new file mode 100644
index 00000000..fb8bd241
--- /dev/null
+++ b/sql-bench/Data/ATIS/flight_class.txt
@@ -0,0 +1,2895 @@
+101909,'FN'
+101909,'YN'
+101909,'BN'
+101909,'M'
+101909,'Q'
+101910,'F'
+101910,'Y'
+101910,'H'
+101910,'Q'
+101910,'K'
+101911,'F'
+101911,'Y'
+101911,'H'
+101911,'Q'
+101911,'K'
+101912,'F'
+101912,'Y'
+101912,'B'
+101912,'M'
+101912,'Q'
+101914,'Y'
+101914,'H'
+101914,'Q'
+101914,'K'
+101914,'L'
+101915,'F'
+101915,'Y'
+101915,'H'
+101915,'Q'
+101915,'K'
+101916,'F'
+101916,'Y'
+101916,'B'
+101916,'M'
+101916,'Q'
+101917,'F'
+101917,'Y'
+101917,'B'
+101917,'M'
+101917,'Q'
+101918,'F'
+101918,'Y'
+101918,'H'
+101918,'Q'
+101918,'K'
+101922,'F'
+101922,'Y'
+101922,'B'
+101922,'M'
+101922,'Q'
+101923,'F'
+101923,'Y'
+101923,'H'
+101923,'Q'
+101923,'K'
+101925,'F'
+101925,'Y'
+101925,'B'
+101925,'M'
+101925,'Q'
+101926,'F'
+101926,'Y'
+101926,'H'
+101926,'Q'
+101926,'K'
+101927,'F'
+101927,'Y'
+101927,'B'
+101927,'M'
+101927,'Q'
+101928,'F'
+101928,'Y'
+101928,'B'
+101928,'M'
+101928,'Q'
+101929,'FN'
+101929,'YN'
+101929,'BN'
+101929,'M'
+101929,'Q'
+101951,'F'
+101951,'Y'
+101951,'H'
+101951,'Q'
+101951,'K'
+101952,'F'
+101952,'Y'
+101952,'B'
+101952,'M'
+101952,'Q'
+101953,'F'
+101953,'Y'
+101953,'B'
+101953,'M'
+101953,'Q'
+101954,'F'
+101954,'Y'
+101954,'H'
+101954,'Q'
+101954,'K'
+101955,'F'
+101955,'Y'
+101955,'B'
+101955,'M'
+101955,'Q'
+101956,'F'
+101956,'Y'
+101956,'H'
+101956,'Q'
+101956,'K'
+101957,'F'
+101957,'Y'
+101957,'H'
+101957,'Q'
+101957,'K'
+101958,'F'
+101958,'Y'
+101958,'B'
+101958,'M'
+101958,'Q'
+101959,'FN'
+101959,'YN'
+101959,'H'
+101959,'QN'
+101959,'K'
+102122,'F'
+102122,'Y'
+102122,'B'
+102122,'M'
+102122,'Q'
+102123,'F'
+102123,'Y'
+102123,'H'
+102123,'Q'
+102123,'K'
+102125,'F'
+102125,'Y'
+102125,'B'
+102125,'M'
+102125,'Q'
+102126,'F'
+102126,'Y'
+102126,'B'
+102126,'M'
+102126,'Q'
+102127,'F'
+102127,'Y'
+102127,'B'
+102127,'M'
+102127,'Q'
+102128,'F'
+102128,'Y'
+102128,'H'
+102128,'Q'
+102128,'K'
+102129,'F'
+102129,'Y'
+102129,'B'
+102129,'M'
+102129,'Q'
+102133,'F'
+102133,'Y'
+102133,'B'
+102133,'M'
+102133,'Q'
+102134,'FN'
+102134,'YN'
+102134,'H'
+102134,'QN'
+102134,'K'
+102135,'FN'
+102135,'YN'
+102135,'BN'
+102135,'M'
+102135,'Q'
+102136,'FN'
+102136,'YN'
+102136,'BN'
+102136,'M'
+102136,'Q'
+102137,'FN'
+102137,'YN'
+102137,'BN'
+102137,'M'
+102137,'Q'
+102139,'F'
+102139,'Y'
+102139,'B'
+102139,'M'
+102139,'V'
+102144,'F'
+102144,'Y'
+102144,'B'
+102144,'M'
+102144,'Q'
+102147,'F'
+102147,'Y'
+102147,'B'
+102147,'M'
+102147,'V'
+102148,'F'
+102148,'Y'
+102148,'B'
+102148,'M'
+102148,'Q'
+102150,'F'
+102150,'Y'
+102150,'B'
+102150,'M'
+102150,'Q'
+102162,'F'
+102162,'Y'
+102162,'B'
+102162,'M'
+102162,'Q'
+102163,'F'
+102163,'Y'
+102163,'B'
+102163,'M'
+102163,'Q'
+102164,'F'
+102164,'Y'
+102164,'B'
+102164,'M'
+102164,'V'
+102165,'F'
+102165,'C'
+102165,'B'
+102165,'M'
+102165,'K'
+102166,'F'
+102166,'Y'
+102166,'B'
+102166,'M'
+102166,'Q'
+102172,'F'
+102172,'Y'
+102172,'B'
+102172,'M'
+102172,'V'
+102173,'F'
+102173,'Y'
+102173,'B'
+102173,'M'
+102173,'Q'
+102177,'F'
+102177,'Y'
+102177,'B'
+102177,'M'
+102177,'Q'
+102188,'FN'
+102188,'YN'
+102188,'B'
+102188,'M'
+102188,'V'
+102190,'FN'
+102190,'YN'
+102190,'BN'
+102190,'M'
+102190,'Q'
+102191,'FN'
+102191,'YN'
+102191,'BN'
+102191,'M'
+102191,'Q'
+102192,'FN'
+102192,'YN'
+102192,'BN'
+102192,'M'
+102192,'Q'
+102766,'FN'
+102766,'YN'
+102766,'BN'
+102766,'M'
+102766,'Q'
+102767,'F'
+102767,'Y'
+102767,'B'
+102767,'H'
+102767,'Q'
+102768,'F'
+102768,'Y'
+102768,'H'
+102768,'Q'
+102768,'K'
+102769,'F'
+102769,'Y'
+102769,'H'
+102769,'Q'
+102769,'K'
+102770,'F'
+102770,'Y'
+102770,'B'
+102770,'M'
+102770,'Q'
+102771,'F'
+102771,'Y'
+102771,'B'
+102771,'H'
+102771,'Q'
+102772,'F'
+102772,'Y'
+102772,'H'
+102772,'Q'
+102772,'K'
+102773,'F'
+102773,'Y'
+102773,'B'
+102773,'M'
+102773,'Q'
+102774,'F'
+102774,'Y'
+102774,'H'
+102774,'Q'
+102774,'K'
+102775,'F'
+102775,'Y'
+102775,'H'
+102775,'Q'
+102775,'K'
+102776,'F'
+102776,'Y'
+102776,'B'
+102776,'M'
+102776,'Q'
+102777,'F'
+102777,'Y'
+102777,'B'
+102777,'H'
+102777,'Q'
+102778,'F'
+102778,'Y'
+102778,'H'
+102778,'Q'
+102778,'K'
+102779,'F'
+102779,'Y'
+102779,'B'
+102779,'M'
+102779,'Q'
+102781,'F'
+102781,'Y'
+102781,'H'
+102781,'Q'
+102781,'K'
+102782,'F'
+102782,'Y'
+102782,'B'
+102782,'M'
+102782,'Q'
+102783,'FN'
+102783,'YN'
+102783,'H'
+102783,'QN'
+102783,'K'
+102784,'FN'
+102784,'YN'
+102784,'BN'
+102784,'M'
+102784,'Q'
+102795,'F'
+102795,'Y'
+102795,'B'
+102795,'H'
+102795,'Q'
+102796,'F'
+102796,'Y'
+102796,'B'
+102796,'M'
+102796,'Q'
+102797,'F'
+102797,'Y'
+102797,'H'
+102797,'Q'
+102797,'K'
+102798,'F'
+102798,'Y'
+102798,'B'
+102798,'H'
+102798,'Q'
+102799,'F'
+102799,'Y'
+102799,'H'
+102799,'Q'
+102799,'K'
+102800,'F'
+102800,'Y'
+102800,'B'
+102800,'M'
+102800,'Q'
+102801,'F'
+102801,'Y'
+102801,'B'
+102801,'H'
+102801,'Q'
+102802,'F'
+102802,'Y'
+102802,'B'
+102802,'M'
+102802,'Q'
+102803,'F'
+102803,'Y'
+102803,'B'
+102803,'M'
+102803,'Q'
+102804,'Y'
+102804,'H'
+102804,'Q'
+102804,'K'
+102804,'L'
+102805,'F'
+102805,'Y'
+102805,'B'
+102805,'H'
+102805,'Q'
+102806,'F'
+102806,'Y'
+102806,'H'
+102806,'Q'
+102806,'K'
+102807,'F'
+102807,'Y'
+102807,'B'
+102807,'M'
+102807,'Q'
+102808,'FN'
+102808,'YN'
+102808,'H'
+102808,'QN'
+102808,'K'
+102809,'FN'
+102809,'YN'
+102809,'BN'
+102809,'M'
+102809,'Q'
+102923,'F'
+102923,'Y'
+102923,'B'
+102923,'M'
+102923,'Q'
+102924,'F'
+102924,'Y'
+102924,'B'
+102924,'M'
+102924,'Q'
+102925,'F'
+102925,'Y'
+102925,'H'
+102925,'Q'
+102925,'K'
+102927,'F'
+102927,'Y'
+102927,'B'
+102927,'M'
+102927,'Q'
+102929,'F'
+102929,'Y'
+102929,'B'
+102929,'M'
+102929,'Q'
+102930,'F'
+102930,'Y'
+102930,'H'
+102930,'Q'
+102930,'K'
+102932,'F'
+102932,'Y'
+102932,'B'
+102932,'M'
+102932,'Q'
+102933,'F'
+102933,'Y'
+102933,'H'
+102933,'Q'
+102933,'K'
+105584,'F'
+105584,'Y'
+105584,'B'
+105584,'M'
+105584,'Q'
+105586,'FN'
+105586,'YN'
+105586,'H'
+105586,'QN'
+105586,'K'
+105588,'F'
+105588,'Y'
+105588,'B'
+105588,'M'
+105588,'Q'
+105589,'F'
+105589,'Y'
+105589,'H'
+105589,'Q'
+105589,'K'
+105590,'F'
+105590,'Y'
+105590,'B'
+105590,'M'
+105590,'Q'
+105591,'F'
+105591,'Y'
+105591,'H'
+105591,'Q'
+105591,'K'
+105592,'F'
+105592,'Y'
+105592,'B'
+105592,'M'
+105592,'Q'
+105593,'F'
+105593,'Y'
+105593,'H'
+105593,'Q'
+105593,'K'
+105594,'Y'
+105594,'H'
+105594,'Q'
+105594,'K'
+105594,'L'
+105595,'F'
+105595,'Y'
+105595,'B'
+105595,'M'
+105595,'Q'
+105597,'F'
+105597,'Y'
+105597,'H'
+105597,'Q'
+105597,'K'
+105598,'F'
+105598,'Y'
+105598,'H'
+105598,'Q'
+105598,'K'
+105599,'F'
+105599,'Y'
+105599,'B'
+105599,'M'
+105599,'Q'
+105601,'FN'
+105601,'YN'
+105601,'BN'
+105601,'M'
+105601,'Q'
+105698,'F'
+105698,'Y'
+105698,'B'
+105698,'H'
+105698,'Q'
+105699,'F'
+105699,'Y'
+105699,'B'
+105699,'H'
+105699,'Q'
+105700,'F'
+105700,'Y'
+105700,'B'
+105700,'H'
+105700,'Q'
+105701,'F'
+105701,'Y'
+105701,'B'
+105701,'H'
+105701,'Q'
+105702,'F'
+105702,'Y'
+105702,'B'
+105702,'H'
+105702,'Q'
+105703,'F'
+105703,'Y'
+105703,'B'
+105703,'H'
+105703,'Q'
+105704,'F'
+105704,'Y'
+105704,'B'
+105704,'H'
+105704,'Q'
+105705,'F'
+105705,'Y'
+105705,'B'
+105705,'H'
+105705,'Q'
+105794,'F'
+105794,'Y'
+105794,'B'
+105794,'M'
+105794,'Q'
+105795,'F'
+105795,'Y'
+105795,'B'
+105795,'M'
+105795,'Q'
+105796,'F'
+105796,'Y'
+105796,'Q'
+105796,'H'
+105796,'K'
+105798,'F'
+105798,'Y'
+105798,'Q'
+105798,'H'
+105798,'K'
+105799,'F'
+105799,'Y'
+105799,'B'
+105799,'M'
+105799,'Q'
+105800,'F'
+105800,'Y'
+105800,'Q'
+105800,'H'
+105800,'K'
+105801,'F'
+105801,'Y'
+105801,'B'
+105801,'M'
+105801,'V'
+105802,'F'
+105802,'Y'
+105802,'B'
+105802,'M'
+105802,'Q'
+105803,'F'
+105803,'Y'
+105803,'B'
+105803,'M'
+105803,'V'
+105805,'F'
+105805,'Y'
+105805,'B'
+105805,'M'
+105805,'Q'
+105806,'F'
+105806,'Y'
+105806,'B'
+105806,'M'
+105806,'V'
+105807,'F'
+105807,'Y'
+105807,'B'
+105807,'M'
+105807,'V'
+105808,'F'
+105808,'Y'
+105808,'B'
+105808,'M'
+105808,'Q'
+105811,'F'
+105811,'Y'
+105811,'B'
+105811,'M'
+105811,'V'
+105812,'F'
+105812,'Y'
+105812,'B'
+105812,'M'
+105812,'Q'
+106229,'F'
+106229,'Y'
+106229,'B'
+106229,'H'
+106229,'Q'
+106230,'F'
+106230,'Y'
+106230,'M'
+106230,'H'
+106230,'Q'
+106231,'F'
+106231,'Y'
+106231,'B'
+106231,'H'
+106231,'Q'
+106232,'F'
+106232,'Y'
+106232,'B'
+106232,'M'
+106232,'Q'
+106234,'F'
+106234,'Y'
+106234,'B'
+106234,'H'
+106234,'Q'
+106235,'F'
+106235,'Y'
+106235,'M'
+106235,'H'
+106235,'Q'
+106236,'F'
+106236,'Y'
+106236,'B'
+106236,'H'
+106236,'Q'
+106237,'F'
+106237,'Y'
+106237,'B'
+106237,'H'
+106237,'Q'
+106238,'F'
+106238,'Y'
+106238,'B'
+106238,'M'
+106238,'Q'
+106239,'F'
+106239,'Y'
+106239,'M'
+106239,'H'
+106239,'Q'
+106240,'F'
+106240,'C'
+106240,'B'
+106240,'M'
+106240,'K'
+106241,'F'
+106241,'Y'
+106241,'M'
+106241,'H'
+106241,'Q'
+106242,'F'
+106242,'Y'
+106242,'B'
+106242,'M'
+106242,'Q'
+106245,'F'
+106245,'Y'
+106245,'B'
+106245,'H'
+106245,'Q'
+106246,'F'
+106246,'Y'
+106246,'B'
+106246,'H'
+106246,'Q'
+106247,'F'
+106247,'Y'
+106247,'B'
+106247,'H'
+106247,'Q'
+106248,'F'
+106248,'Y'
+106248,'B'
+106248,'M'
+106248,'Q'
+106249,'F'
+106249,'Y'
+106249,'M'
+106249,'H'
+106249,'Q'
+106250,'F'
+106250,'Y'
+106250,'B'
+106250,'H'
+106250,'Q'
+106251,'F'
+106251,'Y'
+106251,'B'
+106251,'H'
+106251,'Q'
+106252,'F'
+106252,'Y'
+106252,'M'
+106252,'H'
+106252,'Q'
+106253,'F'
+106253,'Y'
+106253,'B'
+106253,'H'
+106253,'Q'
+106254,'F'
+106254,'Y'
+106254,'B'
+106254,'M'
+106254,'Q'
+106255,'F'
+106255,'Y'
+106255,'B'
+106255,'H'
+106255,'Q'
+106263,'F'
+106263,'Y'
+106263,'B'
+106263,'H'
+106263,'Q'
+106264,'F'
+106264,'Y'
+106264,'B'
+106264,'H'
+106264,'Q'
+106265,'F'
+106265,'Y'
+106265,'B'
+106265,'H'
+106265,'Q'
+106266,'F'
+106266,'Y'
+106266,'B'
+106266,'H'
+106266,'Q'
+106267,'F'
+106267,'Y'
+106267,'B'
+106267,'H'
+106267,'Q'
+106268,'F'
+106268,'Y'
+106268,'B'
+106268,'H'
+106268,'Q'
+106269,'F'
+106269,'Y'
+106269,'B'
+106269,'H'
+106269,'Q'
+106271,'F'
+106271,'Y'
+106271,'B'
+106271,'H'
+106271,'Q'
+106365,'F'
+106365,'Y'
+106365,'B'
+106365,'M'
+106365,'Q'
+106376,'F'
+106376,'Y'
+106376,'B'
+106376,'M'
+106376,'Q'
+106377,'F'
+106377,'C'
+106377,'Y'
+106377,'B'
+106377,'Q'
+107159,'FN'
+107159,'YN'
+107159,'BN'
+107159,'M'
+107159,'Q'
+107160,'FN'
+107160,'YN'
+107160,'H'
+107160,'QN'
+107160,'K'
+107161,'F'
+107161,'Y'
+107161,'H'
+107161,'Q'
+107161,'K'
+107162,'F'
+107162,'Y'
+107162,'B'
+107162,'M'
+107162,'Q'
+107163,'F'
+107163,'Y'
+107163,'H'
+107163,'Q'
+107163,'K'
+107164,'F'
+107164,'Y'
+107164,'H'
+107164,'Q'
+107164,'K'
+107165,'F'
+107165,'Y'
+107165,'B'
+107165,'M'
+107165,'Q'
+107166,'F'
+107166,'Y'
+107166,'B'
+107166,'M'
+107166,'Q'
+107167,'F'
+107167,'Y'
+107167,'H'
+107167,'Q'
+107167,'K'
+107168,'F'
+107168,'Y'
+107168,'B'
+107168,'M'
+107168,'Q'
+107193,'F'
+107193,'Y'
+107193,'B'
+107193,'H'
+107193,'Q'
+107194,'F'
+107194,'Y'
+107194,'B'
+107194,'H'
+107194,'Q'
+107195,'F'
+107195,'Y'
+107195,'B'
+107195,'H'
+107195,'Q'
+107196,'F'
+107196,'Y'
+107196,'B'
+107196,'H'
+107196,'Q'
+107197,'F'
+107197,'Y'
+107197,'B'
+107197,'H'
+107197,'Q'
+107198,'F'
+107198,'Y'
+107198,'B'
+107198,'H'
+107198,'Q'
+107199,'F'
+107199,'Y'
+107199,'B'
+107199,'H'
+107199,'Q'
+107200,'F'
+107200,'Y'
+107200,'B'
+107200,'H'
+107200,'Q'
+107254,'F'
+107254,'Y'
+107254,'B'
+107254,'M'
+107254,'Q'
+107255,'F'
+107255,'Y'
+107255,'B'
+107255,'H'
+107255,'Q'
+107256,'F'
+107256,'Y'
+107256,'B'
+107256,'M'
+107256,'Q'
+107257,'F'
+107257,'Y'
+107257,'B'
+107257,'M'
+107257,'V'
+107258,'F'
+107258,'Y'
+107258,'B'
+107258,'M'
+107258,'Q'
+107259,'F'
+107259,'Y'
+107259,'B'
+107259,'M'
+107259,'V'
+107260,'F'
+107260,'Y'
+107260,'B'
+107260,'M'
+107260,'V'
+107261,'F'
+107261,'Y'
+107261,'B'
+107261,'M'
+107261,'Q'
+107264,'F'
+107264,'Y'
+107264,'B'
+107264,'M'
+107264,'V'
+107470,'Y'
+107470,'B'
+107470,'H'
+107470,'Q'
+107470,'M'
+107471,'Y'
+107471,'B'
+107471,'H'
+107471,'Q'
+107471,'M'
+107472,'Y'
+107472,'B'
+107472,'H'
+107472,'Q'
+107472,'M'
+107473,'Y'
+107473,'B'
+107473,'H'
+107473,'Q'
+107473,'M'
+107474,'Y'
+107474,'B'
+107474,'H'
+107474,'Q'
+107474,'M'
+107475,'Y'
+107475,'B'
+107475,'H'
+107475,'Q'
+107475,'M'
+107476,'Y'
+107476,'B'
+107476,'H'
+107476,'Q'
+107476,'M'
+107477,'Y'
+107477,'B'
+107477,'H'
+107477,'Q'
+107477,'M'
+107478,'Y'
+107478,'B'
+107478,'H'
+107478,'Q'
+107478,'M'
+107484,'F'
+107484,'Y'
+107484,'B'
+107484,'H'
+107484,'Q'
+107485,'F'
+107485,'Y'
+107485,'B'
+107485,'H'
+107485,'Q'
+107486,'F'
+107486,'Y'
+107486,'B'
+107486,'H'
+107486,'Q'
+107487,'F'
+107487,'Y'
+107487,'B'
+107487,'H'
+107487,'Q'
+107488,'F'
+107488,'Y'
+107488,'B'
+107488,'H'
+107488,'Q'
+107489,'F'
+107489,'Y'
+107489,'B'
+107489,'H'
+107489,'Q'
+107490,'F'
+107490,'Y'
+107490,'B'
+107490,'H'
+107490,'Q'
+107491,'F'
+107491,'Y'
+107491,'B'
+107491,'H'
+107491,'Q'
+107492,'F'
+107492,'Y'
+107492,'B'
+107492,'H'
+107492,'Q'
+111886,'FN'
+111886,'YN'
+111886,'BN'
+111886,'M'
+111886,'Q'
+111887,'FN'
+111887,'YN'
+111887,'H'
+111887,'QN'
+111887,'K'
+111888,'F'
+111888,'Y'
+111888,'B'
+111888,'M'
+111888,'Q'
+111889,'F'
+111889,'Y'
+111889,'H'
+111889,'Q'
+111889,'K'
+111891,'F'
+111891,'Y'
+111891,'B'
+111891,'M'
+111891,'Q'
+111892,'F'
+111892,'Y'
+111892,'B'
+111892,'M'
+111892,'Q'
+111893,'F'
+111893,'Y'
+111893,'H'
+111893,'Q'
+111893,'K'
+111894,'F'
+111894,'Y'
+111894,'B'
+111894,'M'
+111894,'Q'
+111895,'F'
+111895,'Y'
+111895,'B'
+111895,'M'
+111895,'Q'
+111896,'F'
+111896,'Y'
+111896,'B'
+111896,'M'
+111896,'Q'
+111928,'F'
+111928,'Y'
+111928,'B'
+111928,'M'
+111928,'Q'
+111929,'F'
+111929,'Y'
+111929,'Q'
+111929,'H'
+111929,'K'
+111931,'F'
+111931,'Y'
+111931,'B'
+111931,'M'
+111931,'Q'
+111932,'F'
+111932,'Y'
+111932,'Q'
+111932,'H'
+111932,'K'
+111933,'F'
+111933,'Y'
+111933,'Q'
+111933,'H'
+111933,'K'
+111937,'F'
+111937,'Y'
+111937,'B'
+111937,'M'
+111937,'Q'
+111939,'F'
+111939,'Y'
+111939,'B'
+111939,'H'
+111939,'Q'
+111941,'F'
+111941,'Y'
+111941,'B'
+111941,'M'
+111941,'Q'
+112028,'FN'
+112028,'YN'
+112028,'B'
+112028,'M'
+112028,'V'
+112029,'F'
+112029,'Y'
+112029,'B'
+112029,'M'
+112029,'Q'
+112030,'FN'
+112030,'YN'
+112030,'BN'
+112030,'M'
+112030,'Q'
+112031,'FN'
+112031,'YN'
+112031,'BN'
+112031,'M'
+112031,'Q'
+112032,'F'
+112032,'Y'
+112032,'B'
+112032,'M'
+112032,'V'
+112033,'F'
+112033,'Y'
+112033,'B'
+112033,'M'
+112033,'Q'
+112034,'F'
+112034,'Y'
+112034,'B'
+112034,'M'
+112034,'Q'
+112035,'F'
+112035,'Y'
+112035,'B'
+112035,'M'
+112035,'V'
+112036,'F'
+112036,'Y'
+112036,'Q'
+112036,'H'
+112036,'K'
+112037,'F'
+112037,'Y'
+112037,'B'
+112037,'M'
+112037,'V'
+112038,'F'
+112038,'Y'
+112038,'B'
+112038,'M'
+112038,'Q'
+112039,'F'
+112039,'Y'
+112039,'B'
+112039,'M'
+112039,'Q'
+112040,'F'
+112040,'Y'
+112040,'B'
+112040,'M'
+112040,'Q'
+112041,'F'
+112041,'Y'
+112041,'Q'
+112041,'H'
+112041,'K'
+112042,'F'
+112042,'Y'
+112042,'B'
+112042,'M'
+112042,'V'
+112043,'F'
+112043,'Y'
+112043,'B'
+112043,'M'
+112043,'Q'
+112044,'F'
+112044,'Y'
+112044,'Q'
+112044,'H'
+112044,'K'
+112045,'F'
+112045,'Y'
+112045,'B'
+112045,'M'
+112045,'V'
+112046,'F'
+112046,'Y'
+112046,'B'
+112046,'M'
+112046,'Q'
+112047,'F'
+112047,'Y'
+112047,'B'
+112047,'M'
+112047,'Q'
+112048,'F'
+112048,'Y'
+112048,'B'
+112048,'M'
+112048,'V'
+112049,'F'
+112049,'Y'
+112049,'B'
+112049,'M'
+112049,'Q'
+112050,'F'
+112050,'Y'
+112050,'Q'
+112050,'H'
+112050,'K'
+112051,'FN'
+112051,'YN'
+112051,'BN'
+112051,'M'
+112051,'Q'
+112052,'FN'
+112052,'YN'
+112052,'B'
+112052,'M'
+112052,'V'
+112351,'F'
+112351,'Y'
+112351,'B'
+112351,'M'
+112351,'Q'
+112352,'F'
+112352,'Y'
+112352,'B'
+112352,'M'
+112352,'Q'
+112353,'F'
+112353,'Y'
+112353,'B'
+112353,'M'
+112353,'Q'
+112354,'F'
+112354,'Y'
+112354,'B'
+112354,'M'
+112354,'Q'
+112415,'F'
+112415,'Y'
+112415,'B'
+112415,'M'
+112415,'Q'
+112416,'F'
+112416,'Y'
+112416,'Q'
+112416,'H'
+112416,'K'
+112417,'F'
+112417,'Y'
+112417,'B'
+112417,'M'
+112417,'Q'
+112418,'F'
+112418,'Y'
+112418,'Q'
+112418,'H'
+112418,'K'
+112440,'F'
+112440,'Y'
+112440,'B'
+112440,'H'
+112440,'Q'
+112441,'F'
+112441,'Y'
+112441,'B'
+112441,'H'
+112441,'Q'
+112442,'F'
+112442,'Y'
+112442,'B'
+112442,'H'
+112442,'Q'
+112513,'F'
+112513,'C'
+112513,'Y'
+112513,'B'
+112513,'M'
+112514,'F'
+112514,'Y'
+112514,'Q'
+112514,'H'
+112514,'K'
+112515,'F'
+112515,'Y'
+112515,'B'
+112515,'M'
+112515,'Q'
+112516,'F'
+112516,'Y'
+112516,'B'
+112516,'M'
+112516,'Q'
+112518,'F'
+112518,'Y'
+112518,'Q'
+112518,'H'
+112518,'K'
+112519,'F'
+112519,'Y'
+112519,'Q'
+112519,'H'
+112519,'K'
+112520,'F'
+112520,'Y'
+112520,'B'
+112520,'M'
+112520,'Q'
+112524,'F'
+112524,'Y'
+112524,'B'
+112524,'M'
+112524,'Q'
+112525,'F'
+112525,'Y'
+112525,'Q'
+112525,'H'
+112525,'K'
+112526,'F'
+112526,'Y'
+112526,'B'
+112526,'M'
+112526,'Q'
+112527,'F'
+112527,'Q'
+112527,'YN'
+112527,'H'
+112527,'K'
+112766,'F'
+112766,'Y'
+112766,'B'
+112766,'M'
+112766,'Q'
+112771,'FN'
+112771,'YN'
+112771,'B'
+112771,'M'
+112771,'V'
+112772,'F'
+112772,'Y'
+112772,'B'
+112772,'M'
+112772,'Q'
+112773,'F'
+112773,'Y'
+112773,'B'
+112773,'M'
+112773,'Q'
+112777,'F'
+112777,'Y'
+112777,'B'
+112777,'M'
+112777,'Q'
+112783,'F'
+112783,'Y'
+112783,'B'
+112783,'M'
+112783,'V'
+112784,'F'
+112784,'Y'
+112784,'B'
+112784,'M'
+112784,'Q'
+112789,'F'
+112789,'Y'
+112789,'B'
+112789,'M'
+112789,'V'
+112790,'F'
+112790,'Y'
+112790,'B'
+112790,'M'
+112790,'Q'
+112793,'F'
+112793,'Y'
+112793,'B'
+112793,'M'
+112793,'Q'
+112794,'F'
+112794,'Y'
+112794,'B'
+112794,'M'
+112794,'Q'
+112797,'F'
+112797,'C'
+112797,'B'
+112797,'M'
+112797,'K'
+112798,'F'
+112798,'Y'
+112798,'B'
+112798,'M'
+112798,'V'
+112802,'F'
+112802,'Y'
+112802,'B'
+112802,'M'
+112802,'Q'
+112804,'FN'
+112804,'YN'
+112804,'B'
+112804,'M'
+112804,'V'
+112805,'F'
+112805,'Y'
+112805,'B'
+112805,'M'
+112805,'Q'
+112806,'FN'
+112806,'YN'
+112806,'BN'
+112806,'M'
+112806,'Q'
+112807,'FN'
+112807,'YN'
+112807,'B'
+112807,'M'
+112807,'V'
+112808,'FN'
+112808,'YN'
+112808,'BN'
+112808,'M'
+112808,'Q'
+112864,'F'
+112864,'Y'
+112864,'B'
+112864,'M'
+112864,'V'
+112866,'F'
+112866,'Y'
+112866,'B'
+112866,'M'
+112866,'Q'
+112867,'F'
+112867,'Y'
+112867,'B'
+112867,'M'
+112867,'Q'
+112869,'F'
+112869,'Y'
+112869,'B'
+112869,'M'
+112869,'V'
+112870,'F'
+112870,'Y'
+112870,'B'
+112870,'M'
+112870,'Q'
+112872,'F'
+112872,'Y'
+112872,'B'
+112872,'M'
+112872,'V'
+112873,'F'
+112873,'Y'
+112873,'B'
+112873,'M'
+112873,'Q'
+112874,'F'
+112874,'Y'
+112874,'B'
+112874,'M'
+112874,'V'
+112903,'F'
+112903,'Y'
+112903,'B'
+112903,'M'
+112903,'V'
+112904,'F'
+112904,'Y'
+112904,'B'
+112904,'M'
+112904,'Q'
+112905,'F'
+112905,'Y'
+112905,'B'
+112905,'M'
+112905,'V'
+112907,'F'
+112907,'Y'
+112907,'B'
+112907,'M'
+112907,'Q'
+112908,'F'
+112908,'Y'
+112908,'B'
+112908,'M'
+112908,'V'
+112909,'F'
+112909,'Y'
+112909,'B'
+112909,'M'
+112909,'V'
+112989,'F'
+112989,'Y'
+112989,'Q'
+112989,'H'
+112989,'K'
+112990,'F'
+112990,'Y'
+112990,'B'
+112990,'M'
+112990,'V'
+112991,'F'
+112991,'Y'
+112991,'B'
+112991,'M'
+112991,'Q'
+112992,'F'
+112992,'Y'
+112992,'B'
+112992,'M'
+112992,'Q'
+112993,'F'
+112993,'Y'
+112993,'B'
+112993,'M'
+112993,'V'
+112994,'F'
+112994,'Y'
+112994,'B'
+112994,'M'
+112994,'Q'
+112995,'F'
+112995,'Y'
+112995,'B'
+112995,'M'
+112995,'V'
+112996,'F'
+112996,'Y'
+112996,'Q'
+112996,'H'
+112996,'K'
+112997,'F'
+112997,'Y'
+112997,'Q'
+112997,'H'
+112997,'K'
+112998,'F'
+112998,'Y'
+112998,'B'
+112998,'M'
+112998,'Q'
+112999,'F'
+112999,'Y'
+112999,'B'
+112999,'M'
+112999,'V'
+113000,'F'
+113000,'Y'
+113000,'B'
+113000,'M'
+113000,'Q'
+113001,'F'
+113001,'Y'
+113001,'B'
+113001,'M'
+113001,'Q'
+113002,'F'
+113002,'Y'
+113002,'B'
+113002,'M'
+113002,'V'
+113003,'F'
+113003,'Y'
+113003,'B'
+113003,'M'
+113003,'Q'
+113004,'F'
+113004,'Y'
+113004,'B'
+113004,'M'
+113004,'Q'
+113005,'F'
+113005,'Y'
+113005,'B'
+113005,'M'
+113005,'V'
+113006,'F'
+113006,'Y'
+113006,'Q'
+113006,'H'
+113006,'K'
+113007,'FN'
+113007,'YN'
+113007,'B'
+113007,'M'
+113007,'V'
+113008,'F'
+113008,'Y'
+113008,'B'
+113008,'M'
+113008,'Q'
+113009,'F'
+113009,'Y'
+113009,'B'
+113009,'M'
+113009,'Q'
+113010,'F'
+113010,'Y'
+113010,'Q'
+113010,'H'
+113010,'K'
+113011,'FN'
+113011,'YN'
+113011,'B'
+113011,'M'
+113011,'V'
+113012,'FN'
+113012,'YN'
+113012,'BN'
+113012,'M'
+113012,'Q'
+113013,'FN'
+113013,'YN'
+113013,'BN'
+113013,'M'
+113013,'Q'
+113498,'F'
+113498,'Y'
+113498,'B'
+113498,'M'
+113498,'V'
+113500,'F'
+113500,'Y'
+113500,'B'
+113500,'M'
+113500,'V'
+113501,'FN'
+113501,'YN'
+113501,'B'
+113501,'M'
+113501,'V'
+113576,'F'
+113576,'Y'
+113576,'B'
+113576,'M'
+113576,'V'
+113577,'F'
+113577,'Y'
+113577,'B'
+113577,'M'
+113577,'Q'
+113578,'F'
+113578,'Y'
+113578,'B'
+113578,'M'
+113578,'V'
+113579,'F'
+113579,'Y'
+113579,'B'
+113579,'M'
+113579,'Q'
+113581,'F'
+113581,'Y'
+113581,'B'
+113581,'M'
+113581,'V'
+113582,'F'
+113582,'Y'
+113582,'B'
+113582,'M'
+113582,'V'
+113583,'FN'
+113583,'YN'
+113583,'BN'
+113583,'M'
+113583,'Q'
+113595,'F'
+113595,'Y'
+113595,'B'
+113595,'M'
+113595,'V'
+113596,'F'
+113596,'Y'
+113596,'B'
+113596,'H'
+113596,'Q'
+113597,'F'
+113597,'Y'
+113597,'B'
+113597,'H'
+113597,'Q'
+113599,'F'
+113599,'Y'
+113599,'B'
+113599,'M'
+113599,'V'
+113600,'F'
+113600,'Y'
+113600,'B'
+113600,'H'
+113600,'Q'
+113602,'F'
+113602,'Y'
+113602,'B'
+113602,'M'
+113602,'V'
+113705,'F'
+113705,'Y'
+113705,'B'
+113705,'M'
+113705,'Q'
+113706,'F'
+113706,'Y'
+113706,'B'
+113706,'M'
+113706,'V'
+113707,'F'
+113707,'Y'
+113707,'B'
+113707,'M'
+113707,'Q'
+113709,'F'
+113709,'Y'
+113709,'B'
+113709,'M'
+113709,'V'
+113711,'F'
+113711,'Y'
+113711,'B'
+113711,'M'
+113711,'V'
+113712,'F'
+113712,'Y'
+113712,'B'
+113712,'M'
+113712,'Q'
+113715,'F'
+113715,'Y'
+113715,'B'
+113715,'M'
+113715,'Q'
+113716,'F'
+113716,'Y'
+113716,'B'
+113716,'M'
+113716,'V'
+113717,'F'
+113717,'Y'
+113717,'B'
+113717,'M'
+113717,'V'
+113718,'F'
+113718,'Y'
+113718,'B'
+113718,'M'
+113718,'V'
+113719,'F'
+113719,'Y'
+113719,'B'
+113719,'M'
+113719,'Q'
+113720,'FN'
+113720,'YN'
+113720,'B'
+113720,'M'
+113720,'V'
+113721,'FN'
+113721,'YN'
+113721,'BN'
+113721,'M'
+113721,'Q'
+133430,'F'
+133430,'Y'
+133430,'B'
+133430,'M'
+133430,'Q'
+133431,'F'
+133431,'Y'
+133431,'B'
+133431,'M'
+133431,'Q'
+133432,'F'
+133432,'Y'
+133432,'B'
+133432,'M'
+133432,'Q'
+133433,'F'
+133433,'Y'
+133433,'B'
+133433,'M'
+133433,'Q'
+133434,'FN'
+133434,'YN'
+133434,'B'
+133434,'M'
+133434,'V'
+133435,'F'
+133435,'Y'
+133435,'B'
+133435,'M'
+133435,'V'
+133436,'F'
+133436,'Y'
+133436,'B'
+133436,'M'
+133436,'V'
+133567,'YN'
+133567,'B'
+133567,'M'
+133567,'V'
+133567,'Q'
+133568,'Y'
+133568,'B'
+133568,'M'
+133568,'V'
+133568,'Q'
+133569,'Y'
+133569,'B'
+133569,'M'
+133569,'V'
+133569,'Q'
+137221,'FN'
+137221,'YN'
+137221,'BN'
+137221,'M'
+137221,'Q'
+137222,'FN'
+137222,'YN'
+137222,'H'
+137222,'QN'
+137222,'K'
+137223,'F'
+137223,'Y'
+137223,'H'
+137223,'Q'
+137223,'K'
+137224,'F'
+137224,'Y'
+137224,'B'
+137224,'M'
+137224,'Q'
+137225,'F'
+137225,'Y'
+137225,'B'
+137225,'H'
+137225,'Q'
+137226,'F'
+137226,'Y'
+137226,'H'
+137226,'Q'
+137226,'K'
+137227,'F'
+137227,'Y'
+137227,'H'
+137227,'Q'
+137227,'K'
+137228,'F'
+137228,'Y'
+137228,'B'
+137228,'M'
+137228,'Q'
+137229,'F'
+137229,'Y'
+137229,'H'
+137229,'Q'
+137229,'K'
+137230,'F'
+137230,'Y'
+137230,'B'
+137230,'M'
+137230,'Q'
+137231,'F'
+137231,'Y'
+137231,'B'
+137231,'H'
+137231,'Q'
+137232,'F'
+137232,'Y'
+137232,'H'
+137232,'Q'
+137232,'K'
+137233,'F'
+137233,'Y'
+137233,'B'
+137233,'M'
+137233,'Q'
+137234,'F'
+137234,'Y'
+137234,'H'
+137234,'Q'
+137234,'K'
+137235,'F'
+137235,'Y'
+137235,'B'
+137235,'M'
+137235,'Q'
+137236,'F'
+137236,'Y'
+137236,'H'
+137236,'Q'
+137236,'K'
+137237,'F'
+137237,'Y'
+137237,'B'
+137237,'H'
+137237,'Q'
+137238,'F'
+137238,'Y'
+137238,'B'
+137238,'M'
+137238,'Q'
+137315,'F'
+137315,'Y'
+137315,'B'
+137315,'M'
+137315,'Q'
+137316,'F'
+137316,'Y'
+137316,'B'
+137316,'H'
+137316,'Q'
+137317,'F'
+137317,'Y'
+137317,'M'
+137317,'H'
+137317,'Q'
+137318,'F'
+137318,'Y'
+137318,'B'
+137318,'H'
+137318,'Q'
+137319,'F'
+137319,'Y'
+137319,'B'
+137319,'M'
+137319,'Q'
+137320,'F'
+137320,'Y'
+137320,'B'
+137320,'H'
+137320,'Q'
+137321,'F'
+137321,'Y'
+137321,'M'
+137321,'H'
+137321,'Q'
+137322,'F'
+137322,'Y'
+137322,'M'
+137322,'H'
+137322,'Q'
+137323,'F'
+137323,'Y'
+137323,'B'
+137323,'M'
+137323,'Q'
+137324,'F'
+137324,'Y'
+137324,'B'
+137324,'H'
+137324,'Q'
+137326,'F'
+137326,'Y'
+137326,'B'
+137326,'H'
+137326,'Q'
+137327,'F'
+137327,'Y'
+137327,'B'
+137327,'H'
+137327,'Q'
+137328,'F'
+137328,'Y'
+137328,'M'
+137328,'H'
+137328,'Q'
+137329,'F'
+137329,'Y'
+137329,'B'
+137329,'H'
+137329,'Q'
+137330,'F'
+137330,'C'
+137330,'B'
+137330,'M'
+137330,'K'
+137331,'F'
+137331,'Y'
+137331,'B'
+137331,'M'
+137331,'Q'
+137332,'F'
+137332,'Y'
+137332,'M'
+137332,'H'
+137332,'Q'
+137333,'F'
+137333,'Y'
+137333,'B'
+137333,'H'
+137333,'Q'
+137334,'F'
+137334,'Y'
+137334,'B'
+137334,'H'
+137334,'Q'
+137335,'F'
+137335,'Y'
+137335,'B'
+137335,'H'
+137335,'Q'
+137336,'F'
+137336,'Y'
+137336,'B'
+137336,'H'
+137336,'Q'
+137337,'F'
+137337,'Y'
+137337,'M'
+137337,'H'
+137337,'Q'
+137338,'F'
+137338,'Y'
+137338,'B'
+137338,'H'
+137338,'Q'
+137339,'FN'
+137339,'YN'
+137339,'BN'
+137339,'M'
+137339,'Q'
+137353,'Y'
+137353,'B'
+137353,'H'
+137353,'Q'
+137353,'M'
+137354,'Y'
+137354,'B'
+137354,'H'
+137354,'Q'
+137354,'M'
+137355,'Y'
+137355,'B'
+137355,'H'
+137355,'Q'
+137355,'M'
+137356,'Y'
+137356,'B'
+137356,'H'
+137356,'Q'
+137356,'M'
+137357,'Y'
+137357,'B'
+137357,'H'
+137357,'Q'
+137357,'M'
+137358,'Y'
+137358,'B'
+137358,'H'
+137358,'Q'
+137358,'M'
+137359,'Y'
+137359,'B'
+137359,'H'
+137359,'Q'
+137359,'M'
+137360,'Y'
+137360,'B'
+137360,'H'
+137360,'Q'
+137360,'M'
+137361,'Y'
+137361,'B'
+137361,'H'
+137361,'Q'
+137361,'M'
+137407,'F'
+137407,'Y'
+137407,'B'
+137407,'M'
+137407,'Q'
+137408,'F'
+137408,'Y'
+137408,'Q'
+137408,'H'
+137408,'K'
+137412,'F'
+137412,'Y'
+137412,'B'
+137412,'M'
+137412,'Q'
+137413,'F'
+137413,'Y'
+137413,'Q'
+137413,'H'
+137413,'K'
+137414,'F'
+137414,'Y'
+137414,'B'
+137414,'M'
+137414,'V'
+137415,'F'
+137415,'Y'
+137415,'B'
+137415,'M'
+137415,'Q'
+137417,'F'
+137417,'Y'
+137417,'B'
+137417,'M'
+137417,'V'
+137419,'F'
+137419,'Y'
+137419,'B'
+137419,'M'
+137419,'Q'
+137420,'F'
+137420,'Y'
+137420,'B'
+137420,'M'
+137420,'V'
+137422,'F'
+137422,'Y'
+137422,'B'
+137422,'M'
+137422,'V'
+137423,'F'
+137423,'Y'
+137423,'B'
+137423,'M'
+137423,'Q'
+137732,'F'
+137732,'Y'
+137732,'B'
+137732,'H'
+137732,'Q'
+137733,'F'
+137733,'Y'
+137733,'B'
+137733,'H'
+137733,'Q'
+137734,'F'
+137734,'Y'
+137734,'B'
+137734,'H'
+137734,'Q'
+137735,'F'
+137735,'Y'
+137735,'B'
+137735,'H'
+137735,'Q'
+137736,'F'
+137736,'Y'
+137736,'B'
+137736,'H'
+137736,'Q'
+137737,'F'
+137737,'Y'
+137737,'B'
+137737,'H'
+137737,'Q'
+137738,'F'
+137738,'Y'
+137738,'B'
+137738,'H'
+137738,'Q'
+137739,'F'
+137739,'Y'
+137739,'B'
+137739,'H'
+137739,'Q'
+137740,'F'
+137740,'Y'
+137740,'B'
+137740,'H'
+137740,'Q'
+137811,'F'
+137811,'Y'
+137811,'B'
+137811,'M'
+137811,'Q'
+137817,'F'
+137817,'Y'
+137817,'B'
+137817,'M'
+137817,'Q'
+138817,'FN'
+138817,'YN'
+138817,'BN'
+138817,'M'
+138817,'Q'
+138818,'F'
+138818,'Y'
+138818,'H'
+138818,'Q'
+138818,'K'
+138819,'Y'
+138819,'H'
+138819,'Q'
+138819,'K'
+138819,'L'
+138820,'F'
+138820,'Y'
+138820,'B'
+138820,'H'
+138820,'Q'
+138821,'F'
+138821,'Y'
+138821,'B'
+138821,'M'
+138821,'Q'
+138822,'F'
+138822,'Y'
+138822,'H'
+138822,'Q'
+138822,'K'
+138823,'F'
+138823,'Y'
+138823,'B'
+138823,'M'
+138823,'Q'
+138824,'F'
+138824,'Y'
+138824,'B'
+138824,'H'
+138824,'Q'
+138825,'Y'
+138825,'H'
+138825,'Q'
+138825,'K'
+138825,'L'
+138827,'F'
+138827,'Y'
+138827,'B'
+138827,'M'
+138827,'Q'
+138828,'F'
+138828,'Y'
+138828,'B'
+138828,'H'
+138828,'Q'
+138829,'F'
+138829,'Y'
+138829,'H'
+138829,'Q'
+138829,'K'
+138830,'FN'
+138830,'YN'
+138830,'BN'
+138830,'M'
+138830,'Q'
+138831,'FN'
+138831,'YN'
+138831,'BN'
+138831,'M'
+138831,'Q'
+138832,'F'
+138832,'Y'
+138832,'B'
+138832,'H'
+138832,'Q'
+138860,'F'
+138860,'Y'
+138860,'B'
+138860,'H'
+138860,'Q'
+138861,'F'
+138861,'Y'
+138861,'B'
+138861,'H'
+138861,'Q'
+138862,'F'
+138862,'Y'
+138862,'B'
+138862,'H'
+138862,'Q'
+138863,'F'
+138863,'Y'
+138863,'B'
+138863,'H'
+138863,'Q'
+138864,'F'
+138864,'Y'
+138864,'B'
+138864,'H'
+138864,'Q'
+138865,'F'
+138865,'Y'
+138865,'B'
+138865,'H'
+138865,'Q'
+138867,'F'
+138867,'Y'
+138867,'B'
+138867,'H'
+138867,'Q'
+138868,'F'
+138868,'Y'
+138868,'B'
+138868,'H'
+138868,'Q'
+138878,'F'
+138878,'Y'
+138878,'B'
+138878,'H'
+138878,'Q'
+138879,'F'
+138879,'Y'
+138879,'B'
+138879,'H'
+138879,'Q'
+138880,'F'
+138880,'Y'
+138880,'B'
+138880,'H'
+138880,'Q'
+138881,'F'
+138881,'Y'
+138881,'B'
+138881,'H'
+138881,'Q'
+138882,'F'
+138882,'Y'
+138882,'B'
+138882,'H'
+138882,'Q'
+138883,'F'
+138883,'Y'
+138883,'B'
+138883,'H'
+138883,'Q'
+138884,'F'
+138884,'Y'
+138884,'B'
+138884,'H'
+138884,'Q'
+138963,'F'
+138963,'Y'
+138963,'B'
+138963,'H'
+138963,'Q'
+138964,'F'
+138964,'Y'
+138964,'B'
+138964,'H'
+138964,'Q'
+138966,'F'
+138966,'Y'
+138966,'B'
+138966,'H'
+138966,'Q'
+138970,'F'
+138970,'Y'
+138970,'B'
+138970,'M'
+138970,'V'
+138971,'F'
+138971,'Y'
+138971,'B'
+138971,'H'
+138971,'Q'
+138973,'F'
+138973,'Y'
+138973,'B'
+138973,'M'
+138973,'V'
+138974,'F'
+138974,'Y'
+138974,'B'
+138974,'H'
+138974,'Q'
+138976,'F'
+138976,'Y'
+138976,'B'
+138976,'M'
+138976,'V'
+138977,'F'
+138977,'Y'
+138977,'B'
+138977,'H'
+138977,'Q'
+139264,'F'
+139264,'Y'
+139264,'B'
+139264,'H'
+139264,'Q'
+139265,'F'
+139265,'Y'
+139265,'B'
+139265,'H'
+139265,'Q'
+139266,'F'
+139266,'Y'
+139266,'B'
+139266,'H'
+139266,'Q'
+139267,'F'
+139267,'Y'
+139267,'B'
+139267,'H'
+139267,'Q'
+139268,'F'
+139268,'Y'
+139268,'B'
+139268,'H'
+139268,'Q'
+139269,'F'
+139269,'Y'
+139269,'B'
+139269,'H'
+139269,'Q'
+139270,'F'
+139270,'Y'
+139270,'B'
+139270,'H'
+139270,'Q'
+139271,'F'
+139271,'Y'
+139271,'B'
+139271,'H'
+139271,'Q'
+139272,'F'
+139272,'Y'
+139272,'B'
+139272,'H'
+139272,'Q'
+139273,'F'
+139273,'Y'
+139273,'B'
+139273,'H'
+139273,'Q'
+139353,'F'
+139353,'Y'
+139353,'B'
+139353,'H'
+139353,'Q'
+139355,'F'
+139355,'Y'
+139355,'B'
+139355,'H'
+139355,'Q'
+139356,'F'
+139356,'Y'
+139356,'B'
+139356,'H'
+139356,'Q'
+139357,'F'
+139357,'Y'
+139357,'B'
+139357,'H'
+139357,'Q'
+144060,'F'
+144060,'Y'
+144060,'B'
+144060,'M'
+144060,'Q'
+144061,'F'
+144061,'Y'
+144061,'H'
+144061,'Q'
+144061,'K'
+144062,'F'
+144062,'Y'
+144062,'B'
+144062,'M'
+144062,'Q'
+144063,'F'
+144063,'Y'
+144063,'B'
+144063,'M'
+144063,'Q'
+144065,'F'
+144065,'Y'
+144065,'H'
+144065,'Q'
+144065,'K'
+144066,'F'
+144066,'Y'
+144066,'B'
+144066,'M'
+144066,'Q'
+144067,'FN'
+144067,'YN'
+144067,'BN'
+144067,'M'
+144067,'Q'
+144069,'FN'
+144069,'YN'
+144069,'H'
+144069,'QN'
+144069,'K'
+144089,'F'
+144089,'Y'
+144089,'B'
+144089,'M'
+144089,'Q'
+144090,'F'
+144090,'C'
+144090,'Y'
+144090,'B'
+144090,'Q'
+144094,'F'
+144094,'Y'
+144094,'B'
+144094,'M'
+144094,'Q'
+144143,'F'
+144143,'Y'
+144143,'B'
+144143,'M'
+144143,'Q'
+144144,'F'
+144144,'Y'
+144144,'Q'
+144144,'H'
+144144,'K'
+144145,'F'
+144145,'Y'
+144145,'B'
+144145,'M'
+144145,'Q'
+144146,'F'
+144146,'Y'
+144146,'B'
+144146,'M'
+144146,'Q'
+144147,'F'
+144147,'Y'
+144147,'Q'
+144147,'H'
+144147,'K'
+144148,'F'
+144148,'C'
+144148,'Y'
+144148,'B'
+144148,'M'
+144149,'F'
+144149,'Y'
+144149,'Q'
+144149,'H'
+144149,'K'
+144150,'F'
+144150,'Y'
+144150,'B'
+144150,'M'
+144150,'Q'
+144151,'F'
+144151,'Y'
+144151,'Q'
+144151,'H'
+144151,'K'
+144152,'F'
+144152,'Y'
+144152,'Q'
+144152,'H'
+144152,'K'
+144153,'F'
+144153,'Y'
+144153,'B'
+144153,'M'
+144153,'Q'
+144155,'FN'
+144155,'YN'
+144155,'BN'
+144155,'M'
+144155,'Q'
+144156,'FN'
+144156,'YN'
+144156,'B'
+144156,'M'
+144156,'V'
+144157,'F'
+144157,'Y'
+144157,'B'
+144157,'M'
+144157,'V'
+144158,'F'
+144158,'Y'
+144158,'B'
+144158,'M'
+144158,'Q'
+144159,'F'
+144159,'Y'
+144159,'B'
+144159,'M'
+144159,'V'
+144162,'F'
+144162,'Y'
+144162,'B'
+144162,'M'
+144162,'V'
+144163,'F'
+144163,'Y'
+144163,'B'
+144163,'M'
+144163,'Q'
+144164,'F'
+144164,'Y'
+144164,'B'
+144164,'M'
+144164,'V'
+144165,'F'
+144165,'Y'
+144165,'B'
+144165,'M'
+144165,'Q'
+144166,'F'
+144166,'Y'
+144166,'B'
+144166,'M'
+144166,'V'
+144167,'F'
+144167,'Y'
+144167,'B'
+144167,'M'
+144167,'Q'
+144168,'F'
+144168,'Y'
+144168,'B'
+144168,'M'
+144168,'V'
+144169,'F'
+144169,'Y'
+144169,'B'
+144169,'M'
+144169,'Q'
+144477,'Y'
+144477,'B'
+144477,'M'
+144477,'V'
+144477,'Q'
+144478,'Y'
+144478,'B'
+144478,'M'
+144478,'V'
+144478,'Q'
+144479,'Y'
+144479,'B'
+144479,'M'
+144479,'V'
+144479,'Q'
+144480,'YN'
+144480,'B'
+144480,'M'
+144480,'V'
+144480,'Q'
+144541,'F'
+144541,'Y'
+144541,'B'
+144541,'M'
+144541,'Q'
+144547,'F'
+144547,'Y'
+144547,'B'
+144547,'M'
+144547,'Q'
+144572,'F'
+144572,'Y'
+144572,'B'
+144572,'H'
+144572,'Q'
+144574,'F'
+144574,'Y'
+144574,'B'
+144574,'H'
+144574,'Q'
+144575,'F'
+144575,'Y'
+144575,'B'
+144575,'H'
+144575,'Q'
+144576,'F'
+144576,'Y'
+144576,'B'
+144576,'H'
+144576,'Q'
+101908,'FN'
+101908,'YN'
+101908,'BN'
+101908,'M'
+101908,'Q'
+101913,'F'
+101913,'Y'
+101913,'B'
+101913,'M'
+101913,'Q'
+101924,'F'
+101924,'Y'
+101924,'B'
+101924,'M'
+101924,'Q'
+102674,'F'
+102674,'Y'
+102674,'B'
+102674,'M'
+102674,'Q'
+105810,'F'
+105810,'Y'
+105810,'B'
+105810,'M'
+105810,'Q'
+106262,'F'
+106262,'Y'
+106262,'B'
+106262,'H'
+106262,'Q'
+106270,'F'
+106270,'Y'
+106270,'B'
+106270,'H'
+106270,'Q'
+106366,'F'
+106366,'Y'
+106366,'B'
+106366,'M'
+106366,'Q'
+106373,'F'
+106373,'Y'
+106373,'B'
+106373,'M'
+106373,'V'
+106375,'F'
+106375,'Y'
+106375,'Q'
+106375,'H'
+106375,'K'
+107253,'F'
+107253,'Y'
+107253,'B'
+107253,'H'
+107253,'Q'
+111924,'FN'
+111924,'YN'
+111924,'BN'
+111924,'M'
+111924,'Q'
+111930,'F'
+111930,'Y'
+111930,'B'
+111930,'H'
+111930,'Q'
+112413,'FN'
+112413,'YN'
+112413,'BN'
+112413,'M'
+112413,'Q'
+113499,'F'
+113499,'Y'
+113499,'B'
+113499,'M'
+113499,'Q'
+113710,'F'
+113710,'Y'
+113710,'Q'
+113710,'H'
+113710,'K'
+113713,'F'
+113713,'Y'
+113713,'B'
+113713,'M'
+113713,'Q'
+133423,'F'
+133423,'Y'
+133423,'B'
+133423,'M'
+133423,'Q'
+133516,'F'
+133516,'Y'
+133516,'B'
+133516,'M'
+133516,'V'
+137410,'F'
+137410,'Y'
+137410,'B'
+137410,'M'
+137410,'Q'
+137685,'F'
+137685,'Y'
+137685,'B'
+137685,'M'
+137685,'V'
+137814,'F'
+137814,'Y'
+137814,'B'
+137814,'H'
+137814,'Q'
+138866,'F'
+138866,'Y'
+138866,'B'
+138866,'H'
+138866,'Q'
+138965,'F'
+138965,'Y'
+138965,'B'
+138965,'M'
+138965,'V'
+144059,'F'
+144059,'Y'
+144059,'B'
+144059,'M'
+144059,'V'
+144087,'FN'
+144087,'YN'
+144087,'B'
+144087,'M'
+144087,'V'
+144088,'F'
+144088,'Y'
+144088,'Q'
+144088,'H'
+144088,'K'
+144092,'F'
+144092,'Y'
+144092,'B'
+144092,'M'
+144092,'Q'
+144093,'F'
+144093,'Y'
+144093,'B'
+144093,'H'
+144093,'Q'
+144095,'F'
+144095,'Y'
+144095,'B'
+144095,'M'
+144095,'Q'
+144110,'F'
+144110,'Y'
+144110,'B'
+144110,'H'
+144110,'Q'
+144160,'F'
+144160,'Y'
+144160,'B'
+144160,'M'
+144160,'Q'
+144161,'F'
+144161,'Y'
+144161,'B'
+144161,'M'
+144161,'Q'
+144543,'F'
+144543,'Y'
+144543,'B'
+144543,'H'
+144543,'Q'
diff --git a/sql-bench/Data/ATIS/flight_day.txt b/sql-bench/Data/ATIS/flight_day.txt
new file mode 100644
index 00000000..ef181d11
--- /dev/null
+++ b/sql-bench/Data/ATIS/flight_day.txt
@@ -0,0 +1,448 @@
+'1234567',1,'MONDAY'
+'1234567',2,'TUESDAY'
+'1234567',3,'WEDNESDAY'
+'1234567',4,'THURSDAY'
+'1234567',5,'FRIDAY'
+'1234567',6,'SATURDAY'
+'1234567',7,'SUNDAY'
+'-234567',2,'TUESDAY'
+'-234567',3,'WEDNESDAY'
+'-234567',4,'THURSDAY'
+'-234567',5,'FRIDAY'
+'-234567',6,'SATURDAY'
+'-234567',7,'SUNDAY'
+'1-34567',1,'MONDAY'
+'1-34567',3,'WEDNESDAY'
+'1-34567',4,'THURSDAY'
+'1-34567',5,'FRIDAY'
+'1-34567',6,'SATURDAY'
+'1-34567',7,'SUNDAY'
+'--34567',3,'WEDNESDAY'
+'--34567',4,'THURSDAY'
+'--34567',5,'FRIDAY'
+'--34567',6,'SATURDAY'
+'--34567',7,'SUNDAY'
+'12-4567',1,'MONDAY'
+'12-4567',2,'TUESDAY'
+'12-4567',4,'THURSDAY'
+'12-4567',5,'FRIDAY'
+'12-4567',6,'SATURDAY'
+'12-4567',7,'SUNDAY'
+'-2-4567',2,'TUESDAY'
+'-2-4567',4,'THURSDAY'
+'-2-4567',5,'FRIDAY'
+'-2-4567',6,'SATURDAY'
+'-2-4567',7,'SUNDAY'
+'1--4567',1,'MONDAY'
+'1--4567',4,'THURSDAY'
+'1--4567',5,'FRIDAY'
+'1--4567',6,'SATURDAY'
+'1--4567',7,'SUNDAY'
+'---4567',4,'THURSDAY'
+'---4567',5,'FRIDAY'
+'---4567',6,'SATURDAY'
+'---4567',7,'SUNDAY'
+'123-567',1,'MONDAY'
+'123-567',2,'TUESDAY'
+'123-567',3,'WEDNESDAY'
+'123-567',5,'FRIDAY'
+'123-567',6,'SATURDAY'
+'123-567',7,'SUNDAY'
+'-23-567',2,'TUESDAY'
+'-23-567',3,'WEDNESDAY'
+'-23-567',5,'FRIDAY'
+'-23-567',6,'SATURDAY'
+'-23-567',7,'SUNDAY'
+'1-3-567',1,'MONDAY'
+'1-3-567',3,'WEDNESDAY'
+'1-3-567',5,'FRIDAY'
+'1-3-567',6,'SATURDAY'
+'1-3-567',7,'SUNDAY'
+'--3-567',3,'WEDNESDAY'
+'--3-567',5,'FRIDAY'
+'--3-567',6,'SATURDAY'
+'--3-567',7,'SUNDAY'
+'12--567',1,'MONDAY'
+'12--567',2,'TUESDAY'
+'12--567',5,'FRIDAY'
+'12--567',6,'SATURDAY'
+'12--567',7,'SUNDAY'
+'-2--567',2,'TUESDAY'
+'-2--567',5,'FRIDAY'
+'-2--567',6,'SATURDAY'
+'-2--567',7,'SUNDAY'
+'1---567',1,'MONDAY'
+'1---567',5,'FRIDAY'
+'1---567',6,'SATURDAY'
+'1---567',7,'SUNDAY'
+'----567',5,'FRIDAY'
+'----567',6,'SATURDAY'
+'----567',7,'SUNDAY'
+'1234-67',1,'MONDAY'
+'1234-67',2,'TUESDAY'
+'1234-67',3,'WEDNESDAY'
+'1234-67',4,'THURSDAY'
+'1234-67',6,'SATURDAY'
+'1234-67',7,'SUNDAY'
+'-234-67',2,'TUESDAY'
+'-234-67',3,'WEDNESDAY'
+'-234-67',4,'THURSDAY'
+'-234-67',6,'SATURDAY'
+'-234-67',7,'SUNDAY'
+'1-34-67',1,'MONDAY'
+'1-34-67',3,'WEDNESDAY'
+'1-34-67',4,'THURSDAY'
+'1-34-67',6,'SATURDAY'
+'1-34-67',7,'SUNDAY'
+'--34-67',3,'WEDNESDAY'
+'--34-67',4,'THURSDAY'
+'--34-67',6,'SATURDAY'
+'--34-67',7,'SUNDAY'
+'12-4-67',1,'MONDAY'
+'12-4-67',2,'TUESDAY'
+'12-4-67',4,'THURSDAY'
+'12-4-67',6,'SATURDAY'
+'12-4-67',7,'SUNDAY'
+'-2-4-67',2,'TUESDAY'
+'-2-4-67',4,'THURSDAY'
+'-2-4-67',6,'SATURDAY'
+'-2-4-67',7,'SUNDAY'
+'1--4-67',1,'MONDAY'
+'1--4-67',4,'THURSDAY'
+'1--4-67',6,'SATURDAY'
+'1--4-67',7,'SUNDAY'
+'---4-67',4,'THURSDAY'
+'---4-67',6,'SATURDAY'
+'---4-67',7,'SUNDAY'
+'123--67',1,'MONDAY'
+'123--67',2,'TUESDAY'
+'123--67',3,'WEDNESDAY'
+'123--67',6,'SATURDAY'
+'123--67',7,'SUNDAY'
+'-23--67',2,'TUESDAY'
+'-23--67',3,'WEDNESDAY'
+'-23--67',6,'SATURDAY'
+'-23--67',7,'SUNDAY'
+'1-3--67',1,'MONDAY'
+'1-3--67',3,'WEDNESDAY'
+'1-3--67',6,'SATURDAY'
+'1-3--67',7,'SUNDAY'
+'--3--67',3,'WEDNESDAY'
+'--3--67',6,'SATURDAY'
+'--3--67',7,'SUNDAY'
+'12---67',1,'MONDAY'
+'12---67',2,'TUESDAY'
+'12---67',6,'SATURDAY'
+'12---67',7,'SUNDAY'
+'-2---67',2,'TUESDAY'
+'-2---67',6,'SATURDAY'
+'-2---67',7,'SUNDAY'
+'1----67',1,'MONDAY'
+'1----67',6,'SATURDAY'
+'1----67',7,'SUNDAY'
+'-----67',6,'SATURDAY'
+'-----67',7,'SUNDAY'
+'12345-7',1,'MONDAY'
+'12345-7',2,'TUESDAY'
+'12345-7',3,'WEDNESDAY'
+'12345-7',4,'THURSDAY'
+'12345-7',5,'FRIDAY'
+'12345-7',7,'SUNDAY'
+'-2345-7',2,'TUESDAY'
+'-2345-7',3,'WEDNESDAY'
+'-2345-7',4,'THURSDAY'
+'-2345-7',5,'FRIDAY'
+'-2345-7',7,'SUNDAY'
+'1-345-7',1,'MONDAY'
+'1-345-7',3,'WEDNESDAY'
+'1-345-7',4,'THURSDAY'
+'1-345-7',5,'FRIDAY'
+'1-345-7',7,'SUNDAY'
+'--345-7',3,'WEDNESDAY'
+'--345-7',4,'THURSDAY'
+'--345-7',5,'FRIDAY'
+'--345-7',7,'SUNDAY'
+'12-45-7',1,'MONDAY'
+'12-45-7',2,'TUESDAY'
+'12-45-7',4,'THURSDAY'
+'12-45-7',5,'FRIDAY'
+'12-45-7',7,'SUNDAY'
+'-2-45-7',2,'TUESDAY'
+'-2-45-7',4,'THURSDAY'
+'-2-45-7',5,'FRIDAY'
+'-2-45-7',7,'SUNDAY'
+'1--45-7',1,'MONDAY'
+'1--45-7',4,'THURSDAY'
+'1--45-7',5,'FRIDAY'
+'1--45-7',7,'SUNDAY'
+'---45-7',4,'THURSDAY'
+'---45-7',5,'FRIDAY'
+'---45-7',7,'SUNDAY'
+'123-5-7',1,'MONDAY'
+'123-5-7',2,'TUESDAY'
+'123-5-7',3,'WEDNESDAY'
+'123-5-7',5,'FRIDAY'
+'123-5-7',7,'SUNDAY'
+'-23-5-7',2,'TUESDAY'
+'-23-5-7',3,'WEDNESDAY'
+'-23-5-7',5,'FRIDAY'
+'-23-5-7',7,'SUNDAY'
+'1-3-5-7',1,'MONDAY'
+'1-3-5-7',3,'WEDNESDAY'
+'1-3-5-7',5,'FRIDAY'
+'1-3-5-7',7,'SUNDAY'
+'--3-5-7',3,'WEDNESDAY'
+'--3-5-7',5,'FRIDAY'
+'--3-5-7',7,'SUNDAY'
+'12--5-7',1,'MONDAY'
+'12--5-7',2,'TUESDAY'
+'12--5-7',5,'FRIDAY'
+'12--5-7',7,'SUNDAY'
+'-2--5-7',2,'TUESDAY'
+'-2--5-7',5,'FRIDAY'
+'-2--5-7',7,'SUNDAY'
+'1---5-7',1,'MONDAY'
+'1---5-7',5,'FRIDAY'
+'1---5-7',7,'SUNDAY'
+'----5-7',5,'FRIDAY'
+'----5-7',7,'SUNDAY'
+'1234--7',1,'MONDAY'
+'1234--7',2,'TUESDAY'
+'1234--7',3,'WEDNESDAY'
+'1234--7',4,'THURSDAY'
+'1234--7',7,'SUNDAY'
+'-234--7',2,'TUESDAY'
+'-234--7',3,'WEDNESDAY'
+'-234--7',4,'THURSDAY'
+'-234--7',7,'SUNDAY'
+'1-34--7',1,'MONDAY'
+'1-34--7',3,'WEDNESDAY'
+'1-34--7',4,'THURSDAY'
+'1-34--7',7,'SUNDAY'
+'--34--7',3,'WEDNESDAY'
+'--34--7',4,'THURSDAY'
+'--34--7',7,'SUNDAY'
+'12-4--7',1,'MONDAY'
+'12-4--7',2,'TUESDAY'
+'12-4--7',4,'THURSDAY'
+'12-4--7',7,'SUNDAY'
+'-2-4--7',2,'TUESDAY'
+'-2-4--7',4,'THURSDAY'
+'-2-4--7',7,'SUNDAY'
+'1--4--7',1,'MONDAY'
+'1--4--7',4,'THURSDAY'
+'1--4--7',7,'SUNDAY'
+'---4--7',4,'THURSDAY'
+'---4--7',7,'SUNDAY'
+'123---7',1,'MONDAY'
+'123---7',2,'TUESDAY'
+'123---7',3,'WEDNESDAY'
+'123---7',7,'SUNDAY'
+'-23---7',2,'TUESDAY'
+'-23---7',3,'WEDNESDAY'
+'-23---7',7,'SUNDAY'
+'1-3---7',1,'MONDAY'
+'1-3---7',3,'WEDNESDAY'
+'1-3---7',7,'SUNDAY'
+'--3---7',3,'WEDNESDAY'
+'--3---7',7,'SUNDAY'
+'12----7',1,'MONDAY'
+'12----7',2,'TUESDAY'
+'12----7',7,'SUNDAY'
+'-2----7',2,'TUESDAY'
+'-2----7',7,'SUNDAY'
+'1-----7',1,'MONDAY'
+'1-----7',7,'SUNDAY'
+'------7',7,'SUNDAY'
+'123456-',1,'MONDAY'
+'123456-',2,'TUESDAY'
+'123456-',3,'WEDNESDAY'
+'123456-',4,'THURSDAY'
+'123456-',5,'FRIDAY'
+'123456-',6,'SATURDAY'
+'-23456-',2,'TUESDAY'
+'-23456-',3,'WEDNESDAY'
+'-23456-',4,'THURSDAY'
+'-23456-',5,'FRIDAY'
+'-23456-',6,'SATURDAY'
+'1-3456-',1,'MONDAY'
+'1-3456-',3,'WEDNESDAY'
+'1-3456-',4,'THURSDAY'
+'1-3456-',5,'FRIDAY'
+'1-3456-',6,'SATURDAY'
+'--3456-',3,'WEDNESDAY'
+'--3456-',4,'THURSDAY'
+'--3456-',5,'FRIDAY'
+'--3456-',6,'SATURDAY'
+'12-456-',1,'MONDAY'
+'12-456-',2,'TUESDAY'
+'12-456-',4,'THURSDAY'
+'12-456-',5,'FRIDAY'
+'12-456-',6,'SATURDAY'
+'-2-456-',2,'TUESDAY'
+'-2-456-',4,'THURSDAY'
+'-2-456-',5,'FRIDAY'
+'-2-456-',6,'SATURDAY'
+'1--456-',1,'MONDAY'
+'1--456-',4,'THURSDAY'
+'1--456-',5,'FRIDAY'
+'1--456-',6,'SATURDAY'
+'---456-',4,'THURSDAY'
+'---456-',5,'FRIDAY'
+'---456-',6,'SATURDAY'
+'123-56-',1,'MONDAY'
+'123-56-',2,'TUESDAY'
+'123-56-',3,'WEDNESDAY'
+'123-56-',5,'FRIDAY'
+'123-56-',6,'SATURDAY'
+'-23-56-',2,'TUESDAY'
+'-23-56-',3,'WEDNESDAY'
+'-23-56-',5,'FRIDAY'
+'-23-56-',6,'SATURDAY'
+'1-3-56-',1,'MONDAY'
+'1-3-56-',3,'WEDNESDAY'
+'1-3-56-',5,'FRIDAY'
+'1-3-56-',6,'SATURDAY'
+'--3-56-',3,'WEDNESDAY'
+'--3-56-',5,'FRIDAY'
+'--3-56-',6,'SATURDAY'
+'12--56-',1,'MONDAY'
+'12--56-',2,'TUESDAY'
+'12--56-',5,'FRIDAY'
+'12--56-',6,'SATURDAY'
+'-2--56-',2,'TUESDAY'
+'-2--56-',5,'FRIDAY'
+'-2--56-',6,'SATURDAY'
+'1---56-',1,'MONDAY'
+'1---56-',5,'FRIDAY'
+'1---56-',6,'SATURDAY'
+'----56-',5,'FRIDAY'
+'----56-',6,'SATURDAY'
+'1234-6-',1,'MONDAY'
+'1234-6-',2,'TUESDAY'
+'1234-6-',3,'WEDNESDAY'
+'1234-6-',4,'THURSDAY'
+'1234-6-',6,'SATURDAY'
+'-234-6-',2,'TUESDAY'
+'-234-6-',3,'WEDNESDAY'
+'-234-6-',4,'THURSDAY'
+'-234-6-',6,'SATURDAY'
+'1-34-6-',1,'MONDAY'
+'1-34-6-',3,'WEDNESDAY'
+'1-34-6-',4,'THURSDAY'
+'1-34-6-',6,'SATURDAY'
+'--34-6-',3,'WEDNESDAY'
+'--34-6-',4,'THURSDAY'
+'--34-6-',6,'SATURDAY'
+'12-4-6-',1,'MONDAY'
+'12-4-6-',2,'TUESDAY'
+'12-4-6-',4,'THURSDAY'
+'12-4-6-',6,'SATURDAY'
+'-2-4-6-',2,'TUESDAY'
+'-2-4-6-',4,'THURSDAY'
+'-2-4-6-',6,'SATURDAY'
+'1--4-6-',1,'MONDAY'
+'1--4-6-',4,'THURSDAY'
+'1--4-6-',6,'SATURDAY'
+'---4-6-',4,'THURSDAY'
+'---4-6-',6,'SATURDAY'
+'123--6-',1,'MONDAY'
+'123--6-',2,'TUESDAY'
+'123--6-',3,'WEDNESDAY'
+'123--6-',6,'SATURDAY'
+'-23--6-',2,'TUESDAY'
+'-23--6-',3,'WEDNESDAY'
+'-23--6-',6,'SATURDAY'
+'1-3--6-',1,'MONDAY'
+'1-3--6-',3,'WEDNESDAY'
+'1-3--6-',6,'SATURDAY'
+'--3--6-',3,'WEDNESDAY'
+'--3--6-',6,'SATURDAY'
+'12---6-',1,'MONDAY'
+'12---6-',2,'TUESDAY'
+'12---6-',6,'SATURDAY'
+'-2---6-',2,'TUESDAY'
+'-2---6-',6,'SATURDAY'
+'1----6-',1,'MONDAY'
+'1----6-',6,'SATURDAY'
+'-----6-',6,'SATURDAY'
+'12345--',1,'MONDAY'
+'12345--',2,'TUESDAY'
+'12345--',3,'WEDNESDAY'
+'12345--',4,'THURSDAY'
+'12345--',5,'FRIDAY'
+'-2345--',2,'TUESDAY'
+'-2345--',3,'WEDNESDAY'
+'-2345--',4,'THURSDAY'
+'-2345--',5,'FRIDAY'
+'1-345--',1,'MONDAY'
+'1-345--',3,'WEDNESDAY'
+'1-345--',4,'THURSDAY'
+'1-345--',5,'FRIDAY'
+'--345--',3,'WEDNESDAY'
+'--345--',4,'THURSDAY'
+'--345--',5,'FRIDAY'
+'12-45--',1,'MONDAY'
+'12-45--',2,'TUESDAY'
+'12-45--',4,'THURSDAY'
+'12-45--',5,'FRIDAY'
+'-2-45--',2,'TUESDAY'
+'-2-45--',4,'THURSDAY'
+'-2-45--',5,'FRIDAY'
+'1--45--',1,'MONDAY'
+'1--45--',4,'THURSDAY'
+'1--45--',5,'FRIDAY'
+'---45--',4,'THURSDAY'
+'---45--',5,'FRIDAY'
+'123-5--',1,'MONDAY'
+'123-5--',2,'TUESDAY'
+'123-5--',3,'WEDNESDAY'
+'123-5--',5,'FRIDAY'
+'-23-5--',2,'TUESDAY'
+'-23-5--',3,'WEDNESDAY'
+'-23-5--',5,'FRIDAY'
+'1-3-5--',1,'MONDAY'
+'1-3-5--',3,'WEDNESDAY'
+'1-3-5--',5,'FRIDAY'
+'--3-5--',3,'WEDNESDAY'
+'--3-5--',5,'FRIDAY'
+'12--5--',1,'MONDAY'
+'12--5--',2,'TUESDAY'
+'12--5--',5,'FRIDAY'
+'-2--5--',2,'TUESDAY'
+'-2--5--',5,'FRIDAY'
+'1---5--',1,'MONDAY'
+'1---5--',5,'FRIDAY'
+'----5--',5,'FRIDAY'
+'1234---',1,'MONDAY'
+'1234---',2,'TUESDAY'
+'1234---',3,'WEDNESDAY'
+'1234---',4,'THURSDAY'
+'-234---',2,'TUESDAY'
+'-234---',3,'WEDNESDAY'
+'-234---',4,'THURSDAY'
+'1-34---',1,'MONDAY'
+'1-34---',3,'WEDNESDAY'
+'1-34---',4,'THURSDAY'
+'--34---',3,'WEDNESDAY'
+'--34---',4,'THURSDAY'
+'12-4---',1,'MONDAY'
+'12-4---',2,'TUESDAY'
+'12-4---',4,'THURSDAY'
+'-2-4---',2,'TUESDAY'
+'-2-4---',4,'THURSDAY'
+'1--4---',1,'MONDAY'
+'1--4---',4,'THURSDAY'
+'---4---',4,'THURSDAY'
+'123----',1,'MONDAY'
+'123----',2,'TUESDAY'
+'123----',3,'WEDNESDAY'
+'-23----',2,'TUESDAY'
+'-23----',3,'WEDNESDAY'
+'1-3----',1,'MONDAY'
+'1-3----',3,'WEDNESDAY'
+'--3----',3,'WEDNESDAY'
+'12-----',1,'MONDAY'
+'12-----',2,'TUESDAY'
+'-2-----',2,'TUESDAY'
+'1------',1,'MONDAY'
diff --git a/sql-bench/Data/ATIS/flight_fare.txt b/sql-bench/Data/ATIS/flight_fare.txt
new file mode 100644
index 00000000..1ca85f9b
--- /dev/null
+++ b/sql-bench/Data/ATIS/flight_fare.txt
@@ -0,0 +1,2998 @@
+101910,'7100001'
+101911,'7100001'
+101912,'7100001'
+101915,'7100001'
+101916,'7100001'
+101917,'7100001'
+101918,'7100001'
+101922,'7100001'
+101923,'7100001'
+101925,'7100001'
+101926,'7100001'
+101927,'7100001'
+101928,'7100001'
+101913,'7100001'
+101924,'7100001'
+101909,'7100002'
+101929,'7100002'
+101908,'7100002'
+101910,'7100003'
+101911,'7100003'
+101912,'7100003'
+101914,'7100003'
+101915,'7100003'
+101916,'7100003'
+101917,'7100003'
+101918,'7100003'
+101922,'7100003'
+101923,'7100003'
+101925,'7100003'
+101926,'7100003'
+101927,'7100003'
+101928,'7100003'
+101913,'7100003'
+101924,'7100003'
+101909,'7100004'
+101929,'7100004'
+101908,'7100004'
+101910,'7100005'
+101911,'7100005'
+101914,'7100005'
+101915,'7100005'
+101918,'7100005'
+101923,'7100005'
+101926,'7100005'
+101910,'7100006'
+101911,'7100006'
+101914,'7100006'
+101915,'7100006'
+101918,'7100006'
+101923,'7100006'
+101926,'7100006'
+101908,'7100007'
+101913,'7100007'
+101924,'7100007'
+101909,'7100007'
+101910,'7100007'
+101911,'7100007'
+101912,'7100007'
+101914,'7100007'
+101915,'7100007'
+101916,'7100007'
+101917,'7100007'
+101918,'7100007'
+101922,'7100007'
+101923,'7100007'
+101925,'7100007'
+101926,'7100007'
+101927,'7100007'
+101928,'7100007'
+101929,'7100007'
+101908,'7100008'
+101913,'7100008'
+101924,'7100008'
+101909,'7100008'
+101910,'7100008'
+101911,'7100008'
+101912,'7100008'
+101914,'7100008'
+101915,'7100008'
+101917,'7100008'
+101918,'7100008'
+101922,'7100008'
+101923,'7100008'
+101925,'7100008'
+101926,'7100008'
+101928,'7100008'
+101929,'7100008'
+101913,'7100009'
+101924,'7100009'
+101912,'7100009'
+101916,'7100009'
+101917,'7100009'
+101922,'7100009'
+101925,'7100009'
+101927,'7100009'
+101928,'7100009'
+101913,'7100010'
+101924,'7100010'
+101910,'7100010'
+101911,'7100010'
+101912,'7100010'
+101914,'7100010'
+101915,'7100010'
+101916,'7100010'
+101917,'7100010'
+101918,'7100010'
+101922,'7100010'
+101923,'7100010'
+101925,'7100010'
+101926,'7100010'
+101927,'7100010'
+101928,'7100010'
+101951,'7100011'
+101952,'7100011'
+101953,'7100011'
+101954,'7100011'
+101955,'7100011'
+101956,'7100011'
+101957,'7100011'
+101958,'7100011'
+101959,'7100012'
+101951,'7100013'
+101952,'7100013'
+101953,'7100013'
+101954,'7100013'
+101955,'7100013'
+101956,'7100013'
+101957,'7100013'
+101958,'7100013'
+101959,'7100014'
+101951,'7100015'
+101952,'7100015'
+101953,'7100015'
+101954,'7100015'
+101955,'7100015'
+101956,'7100015'
+101957,'7100015'
+101958,'7100015'
+101951,'7100016'
+101952,'7100016'
+101953,'7100016'
+101954,'7100016'
+101955,'7100016'
+101956,'7100016'
+101957,'7100016'
+101958,'7100016'
+101952,'7100017'
+101953,'7100017'
+101955,'7100017'
+101958,'7100017'
+101951,'7100018'
+101952,'7100018'
+101953,'7100018'
+101954,'7100018'
+101955,'7100018'
+101956,'7100018'
+101957,'7100018'
+101958,'7100018'
+102125,'7100019'
+102129,'7100019'
+102122,'7100020'
+102123,'7100020'
+102126,'7100020'
+102127,'7100020'
+102128,'7100020'
+102133,'7100020'
+102134,'7100021'
+102135,'7100021'
+102125,'7100022'
+102129,'7100022'
+102122,'7100023'
+102123,'7100023'
+102126,'7100023'
+102127,'7100023'
+102128,'7100023'
+102133,'7100023'
+102122,'7100024'
+102126,'7100024'
+102127,'7100024'
+102133,'7100024'
+102123,'7100025'
+102128,'7100025'
+102134,'7100025'
+102122,'7100026'
+102126,'7100026'
+102127,'7100026'
+102133,'7100026'
+102135,'7100026'
+102134,'7100027'
+102135,'7100027'
+102122,'7100028'
+102125,'7100028'
+102126,'7100028'
+102127,'7100028'
+102129,'7100028'
+102133,'7100028'
+102135,'7100028'
+102122,'7100029'
+102125,'7100029'
+102126,'7100029'
+102127,'7100029'
+102129,'7100029'
+102133,'7100029'
+102135,'7100029'
+102122,'7100030'
+102123,'7100030'
+102125,'7100030'
+102126,'7100030'
+102127,'7100030'
+102128,'7100030'
+102129,'7100030'
+102133,'7100030'
+102135,'7100030'
+102122,'7100031'
+102123,'7100031'
+102125,'7100031'
+102126,'7100031'
+102127,'7100031'
+102128,'7100031'
+102129,'7100031'
+102133,'7100031'
+102135,'7100031'
+102122,'7100032'
+102125,'7100032'
+102126,'7100032'
+102127,'7100032'
+102129,'7100032'
+102133,'7100032'
+102122,'7100033'
+102123,'7100033'
+102125,'7100033'
+102126,'7100033'
+102127,'7100033'
+102128,'7100033'
+102129,'7100033'
+102133,'7100033'
+102122,'7100034'
+102125,'7100034'
+102126,'7100034'
+102127,'7100034'
+102129,'7100034'
+102133,'7100034'
+102123,'7100035'
+102128,'7100035'
+102134,'7100035'
+102139,'7100036'
+102147,'7100036'
+102164,'7100036'
+102172,'7100036'
+102144,'7100037'
+102148,'7100037'
+102150,'7100037'
+102162,'7100037'
+102163,'7100037'
+102166,'7100037'
+102173,'7100037'
+102177,'7100037'
+102165,'7100038'
+102188,'7100039'
+102136,'7100040'
+102137,'7100040'
+102190,'7100040'
+102191,'7100040'
+102192,'7100040'
+102139,'7100041'
+102147,'7100041'
+102164,'7100041'
+102172,'7100041'
+102144,'7100042'
+102148,'7100042'
+102150,'7100042'
+102162,'7100042'
+102163,'7100042'
+102166,'7100042'
+102173,'7100042'
+102177,'7100042'
+102188,'7100043'
+102136,'7100044'
+102137,'7100044'
+102190,'7100044'
+102191,'7100044'
+102192,'7100044'
+102136,'7100045'
+102144,'7100045'
+102148,'7100045'
+102150,'7100045'
+102162,'7100045'
+102166,'7100045'
+102173,'7100045'
+102177,'7100045'
+102190,'7100045'
+102191,'7100045'
+102192,'7100045'
+102136,'7100046'
+102137,'7100046'
+102144,'7100046'
+102148,'7100046'
+102150,'7100046'
+102162,'7100046'
+102163,'7100046'
+102166,'7100046'
+102173,'7100046'
+102177,'7100046'
+102190,'7100046'
+102191,'7100046'
+102192,'7100046'
+102144,'7100047'
+102148,'7100047'
+102150,'7100047'
+102162,'7100047'
+102163,'7100047'
+102165,'7100047'
+102166,'7100047'
+102173,'7100047'
+102177,'7100047'
+102139,'7100048'
+102147,'7100048'
+102164,'7100048'
+102172,'7100048'
+102136,'7100049'
+102137,'7100049'
+102144,'7100049'
+102148,'7100049'
+102150,'7100049'
+102162,'7100049'
+102163,'7100049'
+102165,'7100049'
+102166,'7100049'
+102173,'7100049'
+102177,'7100049'
+102190,'7100049'
+102191,'7100049'
+102192,'7100049'
+102144,'7100050'
+102148,'7100050'
+102150,'7100050'
+102162,'7100050'
+102163,'7100050'
+102166,'7100050'
+102173,'7100050'
+102177,'7100050'
+102674,'7100051'
+102674,'7100052'
+102674,'7100053'
+102674,'7100054'
+102674,'7100055'
+102674,'7100056'
+102674,'7100057'
+102767,'7100058'
+102771,'7100058'
+102777,'7100058'
+102768,'7100059'
+102769,'7100059'
+102770,'7100059'
+102772,'7100059'
+102773,'7100059'
+102774,'7100059'
+102775,'7100059'
+102776,'7100059'
+102778,'7100059'
+102779,'7100059'
+102781,'7100059'
+102782,'7100059'
+102766,'7100060'
+102783,'7100060'
+102784,'7100060'
+102768,'7100061'
+102769,'7100061'
+102770,'7100061'
+102772,'7100061'
+102773,'7100061'
+102774,'7100061'
+102775,'7100061'
+102776,'7100061'
+102778,'7100061'
+102779,'7100061'
+102781,'7100061'
+102782,'7100061'
+102767,'7100062'
+102771,'7100062'
+102777,'7100062'
+102766,'7100063'
+102783,'7100063'
+102784,'7100063'
+102768,'7100064'
+102769,'7100064'
+102772,'7100064'
+102774,'7100064'
+102775,'7100064'
+102778,'7100064'
+102781,'7100064'
+102783,'7100064'
+102766,'7100065'
+102767,'7100065'
+102768,'7100065'
+102769,'7100065'
+102770,'7100065'
+102771,'7100065'
+102772,'7100065'
+102773,'7100065'
+102774,'7100065'
+102775,'7100065'
+102776,'7100065'
+102777,'7100065'
+102778,'7100065'
+102779,'7100065'
+102781,'7100065'
+102782,'7100065'
+102784,'7100065'
+102766,'7100066'
+102767,'7100066'
+102768,'7100066'
+102769,'7100066'
+102770,'7100066'
+102771,'7100066'
+102772,'7100066'
+102773,'7100066'
+102774,'7100066'
+102775,'7100066'
+102776,'7100066'
+102777,'7100066'
+102778,'7100066'
+102779,'7100066'
+102781,'7100066'
+102782,'7100066'
+102784,'7100066'
+102768,'7100067'
+102769,'7100067'
+102772,'7100067'
+102774,'7100067'
+102775,'7100067'
+102778,'7100067'
+102781,'7100067'
+102783,'7100067'
+102766,'7100068'
+102767,'7100068'
+102768,'7100068'
+102769,'7100068'
+102770,'7100068'
+102771,'7100068'
+102772,'7100068'
+102773,'7100068'
+102774,'7100068'
+102775,'7100068'
+102776,'7100068'
+102777,'7100068'
+102778,'7100068'
+102779,'7100068'
+102781,'7100068'
+102782,'7100068'
+102784,'7100068'
+102766,'7100069'
+102767,'7100069'
+102768,'7100069'
+102769,'7100069'
+102770,'7100069'
+102771,'7100069'
+102772,'7100069'
+102773,'7100069'
+102774,'7100069'
+102775,'7100069'
+102776,'7100069'
+102777,'7100069'
+102778,'7100069'
+102779,'7100069'
+102781,'7100069'
+102782,'7100069'
+102784,'7100069'
+102767,'7100070'
+102770,'7100070'
+102771,'7100070'
+102773,'7100070'
+102776,'7100070'
+102777,'7100070'
+102779,'7100070'
+102782,'7100070'
+102767,'7100071'
+102768,'7100071'
+102769,'7100071'
+102770,'7100071'
+102771,'7100071'
+102772,'7100071'
+102773,'7100071'
+102774,'7100071'
+102775,'7100071'
+102776,'7100071'
+102777,'7100071'
+102778,'7100071'
+102779,'7100071'
+102781,'7100071'
+102782,'7100071'
+102795,'7100072'
+102796,'7100072'
+102797,'7100072'
+102798,'7100072'
+102799,'7100072'
+102800,'7100072'
+102801,'7100072'
+102802,'7100072'
+102803,'7100072'
+102805,'7100072'
+102806,'7100072'
+102807,'7100072'
+102808,'7100073'
+102809,'7100073'
+102795,'7100074'
+102796,'7100074'
+102797,'7100074'
+102798,'7100074'
+102799,'7100074'
+102800,'7100074'
+102801,'7100074'
+102802,'7100074'
+102803,'7100074'
+102804,'7100074'
+102805,'7100074'
+102806,'7100074'
+102807,'7100074'
+102808,'7100075'
+102809,'7100075'
+102797,'7100076'
+102799,'7100076'
+102804,'7100076'
+102806,'7100076'
+102808,'7100076'
+102795,'7100077'
+102796,'7100077'
+102797,'7100077'
+102798,'7100077'
+102799,'7100077'
+102800,'7100077'
+102801,'7100077'
+102802,'7100077'
+102804,'7100077'
+102805,'7100077'
+102806,'7100077'
+102807,'7100077'
+102809,'7100077'
+102797,'7100078'
+102799,'7100078'
+102804,'7100078'
+102806,'7100078'
+102808,'7100078'
+102795,'7100079'
+102796,'7100079'
+102797,'7100079'
+102798,'7100079'
+102799,'7100079'
+102800,'7100079'
+102801,'7100079'
+102803,'7100079'
+102804,'7100079'
+102805,'7100079'
+102806,'7100079'
+102807,'7100079'
+102809,'7100079'
+102795,'7100080'
+102796,'7100080'
+102798,'7100080'
+102800,'7100080'
+102801,'7100080'
+102802,'7100080'
+102803,'7100080'
+102805,'7100080'
+102807,'7100080'
+102795,'7100081'
+102796,'7100081'
+102797,'7100081'
+102798,'7100081'
+102799,'7100081'
+102800,'7100081'
+102801,'7100081'
+102802,'7100081'
+102803,'7100081'
+102804,'7100081'
+102805,'7100081'
+102806,'7100081'
+102807,'7100081'
+102923,'7100082'
+102924,'7100082'
+102925,'7100082'
+102927,'7100082'
+102929,'7100082'
+102930,'7100082'
+102932,'7100082'
+102933,'7100082'
+102923,'7100083'
+102924,'7100083'
+102925,'7100083'
+102927,'7100083'
+102929,'7100083'
+102930,'7100083'
+102932,'7100083'
+102933,'7100083'
+102923,'7100084'
+102924,'7100084'
+102925,'7100084'
+102927,'7100084'
+102929,'7100084'
+102930,'7100084'
+102932,'7100084'
+102933,'7100084'
+102924,'7100085'
+102925,'7100085'
+102927,'7100085'
+102929,'7100085'
+102930,'7100085'
+102932,'7100085'
+102933,'7100085'
+102925,'7100086'
+102930,'7100086'
+102933,'7100086'
+102923,'7100087'
+102924,'7100087'
+102925,'7100087'
+102927,'7100087'
+102929,'7100087'
+102930,'7100087'
+102932,'7100087'
+102933,'7100087'
+102923,'7100088'
+102924,'7100088'
+102927,'7100088'
+102929,'7100088'
+102932,'7100088'
+102923,'7100089'
+102924,'7100089'
+102925,'7100089'
+102927,'7100089'
+102929,'7100089'
+102930,'7100089'
+102932,'7100089'
+102933,'7100089'
+105584,'7100090'
+105588,'7100090'
+105589,'7100090'
+105590,'7100090'
+105591,'7100090'
+105592,'7100090'
+105593,'7100090'
+105595,'7100090'
+105597,'7100090'
+105598,'7100090'
+105599,'7100090'
+105586,'7100091'
+105601,'7100091'
+105584,'7100092'
+105588,'7100092'
+105589,'7100092'
+105590,'7100092'
+105591,'7100092'
+105592,'7100092'
+105593,'7100092'
+105594,'7100092'
+105595,'7100092'
+105597,'7100092'
+105598,'7100092'
+105599,'7100092'
+105586,'7100093'
+105601,'7100093'
+105586,'7100094'
+105589,'7100094'
+105591,'7100094'
+105593,'7100094'
+105594,'7100094'
+105597,'7100094'
+105598,'7100094'
+105586,'7100095'
+105589,'7100095'
+105591,'7100095'
+105593,'7100095'
+105594,'7100095'
+105597,'7100095'
+105598,'7100095'
+105584,'7100096'
+105588,'7100096'
+105589,'7100096'
+105590,'7100096'
+105591,'7100096'
+105592,'7100096'
+105593,'7100096'
+105594,'7100096'
+105595,'7100096'
+105597,'7100096'
+105598,'7100096'
+105599,'7100096'
+105601,'7100096'
+105584,'7100097'
+105588,'7100097'
+105589,'7100097'
+105590,'7100097'
+105591,'7100097'
+105592,'7100097'
+105593,'7100097'
+105594,'7100097'
+105595,'7100097'
+105597,'7100097'
+105598,'7100097'
+105599,'7100097'
+105601,'7100097'
+105584,'7100098'
+105588,'7100098'
+105590,'7100098'
+105592,'7100098'
+105595,'7100098'
+105599,'7100098'
+105584,'7100099'
+105588,'7100099'
+105589,'7100099'
+105590,'7100099'
+105591,'7100099'
+105592,'7100099'
+105593,'7100099'
+105594,'7100099'
+105595,'7100099'
+105597,'7100099'
+105598,'7100099'
+105599,'7100099'
+105698,'7100100'
+105699,'7100100'
+105700,'7100100'
+105701,'7100100'
+105702,'7100100'
+105703,'7100100'
+105704,'7100100'
+105705,'7100100'
+105698,'7100101'
+105699,'7100101'
+105700,'7100101'
+105701,'7100101'
+105702,'7100101'
+105703,'7100101'
+105704,'7100101'
+105705,'7100101'
+105698,'7100102'
+105699,'7100102'
+105700,'7100102'
+105701,'7100102'
+105702,'7100102'
+105703,'7100102'
+105704,'7100102'
+105705,'7100102'
+105794,'7100103'
+105795,'7100103'
+105796,'7100103'
+105798,'7100103'
+105799,'7100103'
+105800,'7100103'
+105794,'7100104'
+105795,'7100104'
+105796,'7100104'
+105798,'7100104'
+105799,'7100104'
+105800,'7100104'
+105794,'7100105'
+105795,'7100105'
+105796,'7100105'
+105798,'7100105'
+105799,'7100105'
+105800,'7100105'
+105794,'7100106'
+105796,'7100106'
+105798,'7100106'
+105799,'7100106'
+105800,'7100106'
+105794,'7100107'
+105795,'7100107'
+105799,'7100107'
+105794,'7100108'
+105795,'7100108'
+105796,'7100108'
+105798,'7100108'
+105799,'7100108'
+105800,'7100108'
+105801,'7100109'
+105803,'7100109'
+105806,'7100109'
+105807,'7100109'
+105811,'7100109'
+105802,'7100110'
+105805,'7100110'
+105808,'7100110'
+105812,'7100110'
+105810,'7100110'
+105801,'7100111'
+105803,'7100111'
+105806,'7100111'
+105807,'7100111'
+105811,'7100111'
+105802,'7100112'
+105805,'7100112'
+105808,'7100112'
+105812,'7100112'
+105810,'7100112'
+105810,'7100113'
+105801,'7100113'
+105802,'7100113'
+105803,'7100113'
+105805,'7100113'
+105806,'7100113'
+105807,'7100113'
+105808,'7100113'
+105811,'7100113'
+105812,'7100113'
+105810,'7100114'
+105801,'7100114'
+105802,'7100114'
+105803,'7100114'
+105805,'7100114'
+105806,'7100114'
+105807,'7100114'
+105808,'7100114'
+105811,'7100114'
+105812,'7100114'
+106229,'7100115'
+106230,'7100115'
+106231,'7100115'
+106232,'7100115'
+106234,'7100115'
+106235,'7100115'
+106236,'7100115'
+106237,'7100115'
+106238,'7100115'
+106239,'7100115'
+106240,'7100115'
+106241,'7100115'
+106242,'7100115'
+106245,'7100115'
+106246,'7100115'
+106247,'7100115'
+106248,'7100115'
+106249,'7100115'
+106250,'7100115'
+106251,'7100115'
+106252,'7100115'
+106253,'7100115'
+106254,'7100115'
+106255,'7100115'
+106232,'7100116'
+106238,'7100116'
+106242,'7100116'
+106248,'7100116'
+106254,'7100116'
+106232,'7100117'
+106238,'7100117'
+106242,'7100117'
+106248,'7100117'
+106254,'7100117'
+106240,'7100118'
+106232,'7100119'
+106238,'7100119'
+106242,'7100119'
+106248,'7100119'
+106254,'7100119'
+106229,'7100120'
+106230,'7100120'
+106231,'7100120'
+106234,'7100120'
+106235,'7100120'
+106236,'7100120'
+106237,'7100120'
+106239,'7100120'
+106241,'7100120'
+106245,'7100120'
+106246,'7100120'
+106247,'7100120'
+106249,'7100120'
+106250,'7100120'
+106251,'7100120'
+106252,'7100120'
+106253,'7100120'
+106255,'7100120'
+106229,'7100121'
+106231,'7100121'
+106232,'7100121'
+106234,'7100121'
+106236,'7100121'
+106237,'7100121'
+106238,'7100121'
+106240,'7100121'
+106242,'7100121'
+106245,'7100121'
+106246,'7100121'
+106247,'7100121'
+106248,'7100121'
+106250,'7100121'
+106251,'7100121'
+106253,'7100121'
+106254,'7100121'
+106255,'7100121'
+106232,'7100122'
+106238,'7100122'
+106242,'7100122'
+106248,'7100122'
+106254,'7100122'
+106229,'7100123'
+106231,'7100123'
+106234,'7100123'
+106236,'7100123'
+106237,'7100123'
+106245,'7100123'
+106246,'7100123'
+106247,'7100123'
+106250,'7100123'
+106251,'7100123'
+106253,'7100123'
+106255,'7100123'
+106230,'7100124'
+106235,'7100124'
+106239,'7100124'
+106241,'7100124'
+106249,'7100124'
+106252,'7100124'
+106229,'7100125'
+106230,'7100125'
+106231,'7100125'
+106232,'7100125'
+106234,'7100125'
+106235,'7100125'
+106236,'7100125'
+106237,'7100125'
+106238,'7100125'
+106239,'7100125'
+106241,'7100125'
+106242,'7100125'
+106245,'7100125'
+106246,'7100125'
+106247,'7100125'
+106248,'7100125'
+106249,'7100125'
+106250,'7100125'
+106251,'7100125'
+106252,'7100125'
+106253,'7100125'
+106254,'7100125'
+106255,'7100125'
+106229,'7100126'
+106231,'7100126'
+106232,'7100126'
+106234,'7100126'
+106236,'7100126'
+106237,'7100126'
+106238,'7100126'
+106240,'7100126'
+106242,'7100126'
+106245,'7100126'
+106246,'7100126'
+106247,'7100126'
+106248,'7100126'
+106250,'7100126'
+106251,'7100126'
+106253,'7100126'
+106254,'7100126'
+106255,'7100126'
+106229,'7100127'
+106231,'7100127'
+106232,'7100127'
+106234,'7100127'
+106236,'7100127'
+106237,'7100127'
+106238,'7100127'
+106240,'7100127'
+106242,'7100127'
+106245,'7100127'
+106246,'7100127'
+106247,'7100127'
+106248,'7100127'
+106250,'7100127'
+106251,'7100127'
+106253,'7100127'
+106254,'7100127'
+106255,'7100127'
+106229,'7100128'
+106230,'7100128'
+106231,'7100128'
+106232,'7100128'
+106234,'7100128'
+106235,'7100128'
+106236,'7100128'
+106237,'7100128'
+106238,'7100128'
+106239,'7100128'
+106241,'7100128'
+106242,'7100128'
+106245,'7100128'
+106246,'7100128'
+106247,'7100128'
+106248,'7100128'
+106249,'7100128'
+106250,'7100128'
+106251,'7100128'
+106252,'7100128'
+106253,'7100128'
+106254,'7100128'
+106255,'7100128'
+106263,'7100129'
+106264,'7100129'
+106265,'7100129'
+106266,'7100129'
+106267,'7100129'
+106268,'7100129'
+106269,'7100129'
+106271,'7100129'
+106262,'7100129'
+106270,'7100129'
+106263,'7100130'
+106264,'7100130'
+106265,'7100130'
+106266,'7100130'
+106267,'7100130'
+106268,'7100130'
+106269,'7100130'
+106271,'7100130'
+106262,'7100130'
+106270,'7100130'
+106262,'7100131'
+106270,'7100131'
+106263,'7100131'
+106264,'7100131'
+106265,'7100131'
+106266,'7100131'
+106267,'7100131'
+106268,'7100131'
+106269,'7100131'
+106271,'7100131'
+106365,'7100132'
+106376,'7100132'
+106377,'7100132'
+106366,'7100132'
+106375,'7100132'
+106373,'7100133'
+106377,'7100134'
+106377,'7100135'
+106365,'7100136'
+106376,'7100136'
+106366,'7100136'
+106373,'7100137'
+106375,'7100137'
+106373,'7100138'
+106375,'7100139'
+106366,'7100140'
+106375,'7100140'
+106365,'7100140'
+106376,'7100140'
+106377,'7100140'
+106375,'7100141'
+106375,'7100142'
+106365,'7100142'
+106376,'7100142'
+106377,'7100142'
+106366,'7100143'
+106373,'7100143'
+106365,'7100143'
+106376,'7100143'
+106377,'7100143'
+106366,'7100144'
+106373,'7100144'
+106365,'7100144'
+106376,'7100144'
+106366,'7100145'
+106373,'7100145'
+106375,'7100145'
+106365,'7100145'
+106376,'7100145'
+106377,'7100145'
+107161,'7100146'
+107162,'7100146'
+107163,'7100146'
+107164,'7100146'
+107165,'7100146'
+107166,'7100146'
+107167,'7100146'
+107168,'7100146'
+107159,'7100147'
+107160,'7100147'
+107161,'7100148'
+107162,'7100148'
+107163,'7100148'
+107164,'7100148'
+107165,'7100148'
+107166,'7100148'
+107167,'7100148'
+107168,'7100148'
+107159,'7100149'
+107160,'7100149'
+107159,'7100150'
+107161,'7100150'
+107162,'7100150'
+107163,'7100150'
+107164,'7100150'
+107165,'7100150'
+107166,'7100150'
+107167,'7100150'
+107168,'7100150'
+107159,'7100151'
+107161,'7100151'
+107162,'7100151'
+107163,'7100151'
+107164,'7100151'
+107165,'7100151'
+107166,'7100151'
+107167,'7100151'
+107168,'7100151'
+107162,'7100152'
+107165,'7100152'
+107166,'7100152'
+107168,'7100152'
+107161,'7100153'
+107162,'7100153'
+107163,'7100153'
+107164,'7100153'
+107165,'7100153'
+107166,'7100153'
+107167,'7100153'
+107168,'7100153'
+107193,'7100154'
+107194,'7100154'
+107195,'7100154'
+107196,'7100154'
+107197,'7100154'
+107198,'7100154'
+107199,'7100154'
+107200,'7100154'
+107193,'7100155'
+107194,'7100155'
+107195,'7100155'
+107196,'7100155'
+107197,'7100155'
+107198,'7100155'
+107199,'7100155'
+107200,'7100155'
+107193,'7100156'
+107194,'7100156'
+107195,'7100156'
+107196,'7100156'
+107197,'7100156'
+107198,'7100156'
+107199,'7100156'
+107200,'7100156'
+107255,'7100157'
+107253,'7100157'
+107254,'7100158'
+107256,'7100158'
+107254,'7100159'
+107256,'7100159'
+107255,'7100160'
+107253,'7100160'
+107255,'7100161'
+107253,'7100161'
+107253,'7100162'
+107254,'7100162'
+107255,'7100162'
+107256,'7100162'
+107253,'7100163'
+107254,'7100163'
+107255,'7100163'
+107256,'7100163'
+107253,'7100164'
+107254,'7100164'
+107255,'7100164'
+107256,'7100164'
+107257,'7100165'
+107259,'7100165'
+107260,'7100165'
+107264,'7100165'
+107258,'7100166'
+107261,'7100166'
+107257,'7100167'
+107259,'7100167'
+107260,'7100167'
+107264,'7100167'
+107258,'7100168'
+107261,'7100168'
+107257,'7100169'
+107258,'7100169'
+107259,'7100169'
+107260,'7100169'
+107261,'7100169'
+107264,'7100169'
+107257,'7100170'
+107258,'7100170'
+107259,'7100170'
+107260,'7100170'
+107261,'7100170'
+107264,'7100170'
+107470,'7100171'
+107471,'7100171'
+107472,'7100171'
+107473,'7100171'
+107474,'7100171'
+107475,'7100171'
+107476,'7100171'
+107477,'7100171'
+107478,'7100171'
+107470,'7100172'
+107471,'7100172'
+107472,'7100172'
+107473,'7100172'
+107474,'7100172'
+107475,'7100172'
+107476,'7100172'
+107477,'7100172'
+107478,'7100172'
+107470,'7100173'
+107471,'7100173'
+107472,'7100173'
+107473,'7100173'
+107474,'7100173'
+107475,'7100173'
+107476,'7100173'
+107477,'7100173'
+107478,'7100173'
+107484,'7100174'
+107485,'7100174'
+107486,'7100174'
+107487,'7100174'
+107488,'7100174'
+107489,'7100174'
+107490,'7100174'
+107491,'7100174'
+107492,'7100174'
+107484,'7100175'
+107485,'7100175'
+107486,'7100175'
+107487,'7100175'
+107488,'7100175'
+107489,'7100175'
+107490,'7100175'
+107491,'7100175'
+107492,'7100175'
+107484,'7100176'
+107485,'7100176'
+107486,'7100176'
+107487,'7100176'
+107488,'7100176'
+107489,'7100176'
+107490,'7100176'
+107491,'7100176'
+107492,'7100176'
+111891,'7100177'
+111896,'7100177'
+111888,'7100178'
+111889,'7100178'
+111892,'7100178'
+111893,'7100178'
+111894,'7100178'
+111895,'7100178'
+111886,'7100179'
+111887,'7100179'
+111891,'7100180'
+111896,'7100180'
+111888,'7100181'
+111889,'7100181'
+111892,'7100181'
+111893,'7100181'
+111894,'7100181'
+111895,'7100181'
+111888,'7100182'
+111892,'7100182'
+111894,'7100182'
+111895,'7100182'
+111887,'7100183'
+111889,'7100183'
+111893,'7100183'
+111886,'7100184'
+111888,'7100184'
+111892,'7100184'
+111894,'7100184'
+111895,'7100184'
+111886,'7100185'
+111887,'7100185'
+111886,'7100186'
+111888,'7100186'
+111891,'7100186'
+111892,'7100186'
+111894,'7100186'
+111895,'7100186'
+111896,'7100186'
+111886,'7100187'
+111888,'7100187'
+111891,'7100187'
+111892,'7100187'
+111894,'7100187'
+111895,'7100187'
+111896,'7100187'
+111886,'7100188'
+111888,'7100188'
+111889,'7100188'
+111891,'7100188'
+111892,'7100188'
+111893,'7100188'
+111894,'7100188'
+111895,'7100188'
+111896,'7100188'
+111886,'7100189'
+111888,'7100189'
+111889,'7100189'
+111891,'7100189'
+111892,'7100189'
+111893,'7100189'
+111894,'7100189'
+111895,'7100189'
+111896,'7100189'
+111888,'7100190'
+111891,'7100190'
+111892,'7100190'
+111894,'7100190'
+111895,'7100190'
+111896,'7100190'
+111888,'7100191'
+111889,'7100191'
+111891,'7100191'
+111892,'7100191'
+111893,'7100191'
+111894,'7100191'
+111895,'7100191'
+111896,'7100191'
+111888,'7100192'
+111891,'7100192'
+111892,'7100192'
+111894,'7100192'
+111895,'7100192'
+111896,'7100192'
+111928,'7100193'
+111929,'7100193'
+111931,'7100193'
+111932,'7100193'
+111933,'7100193'
+111930,'7100194'
+111928,'7100195'
+111929,'7100195'
+111931,'7100195'
+111932,'7100195'
+111933,'7100195'
+111930,'7100196'
+111930,'7100197'
+111924,'7100198'
+111930,'7100199'
+111924,'7100200'
+111929,'7100201'
+111932,'7100201'
+111933,'7100201'
+111924,'7100202'
+111930,'7100202'
+111928,'7100202'
+111929,'7100202'
+111931,'7100202'
+111932,'7100202'
+111933,'7100202'
+111929,'7100203'
+111932,'7100203'
+111933,'7100203'
+111924,'7100204'
+111930,'7100204'
+111928,'7100204'
+111929,'7100204'
+111931,'7100204'
+111932,'7100204'
+111933,'7100204'
+111930,'7100205'
+111928,'7100205'
+111931,'7100205'
+111930,'7100206'
+111928,'7100206'
+111929,'7100206'
+111931,'7100206'
+111932,'7100206'
+111933,'7100206'
+111939,'7100207'
+111937,'7100208'
+111941,'7100208'
+111937,'7100209'
+111941,'7100209'
+111939,'7100210'
+111939,'7100211'
+111937,'7100212'
+111939,'7100212'
+111941,'7100212'
+111937,'7100213'
+111939,'7100213'
+111941,'7100213'
+111937,'7100214'
+111941,'7100214'
+111937,'7100215'
+111939,'7100215'
+111941,'7100215'
+112029,'7100216'
+112032,'7100216'
+112034,'7100216'
+112035,'7100216'
+112036,'7100216'
+112037,'7100216'
+112038,'7100216'
+112039,'7100216'
+112041,'7100216'
+112042,'7100216'
+112043,'7100216'
+112044,'7100216'
+112045,'7100216'
+112047,'7100216'
+112048,'7100216'
+112049,'7100216'
+112050,'7100216'
+112033,'7100217'
+112040,'7100217'
+112046,'7100217'
+112028,'7100218'
+112052,'7100218'
+112030,'7100219'
+112031,'7100219'
+112051,'7100219'
+112029,'7100220'
+112032,'7100220'
+112034,'7100220'
+112035,'7100220'
+112036,'7100220'
+112037,'7100220'
+112038,'7100220'
+112039,'7100220'
+112041,'7100220'
+112042,'7100220'
+112043,'7100220'
+112044,'7100220'
+112045,'7100220'
+112047,'7100220'
+112048,'7100220'
+112049,'7100220'
+112050,'7100220'
+112033,'7100221'
+112040,'7100221'
+112046,'7100221'
+112028,'7100222'
+112052,'7100222'
+112030,'7100223'
+112031,'7100223'
+112051,'7100223'
+112029,'7100224'
+112030,'7100224'
+112033,'7100224'
+112034,'7100224'
+112036,'7100224'
+112038,'7100224'
+112039,'7100224'
+112040,'7100224'
+112041,'7100224'
+112043,'7100224'
+112044,'7100224'
+112046,'7100224'
+112047,'7100224'
+112049,'7100224'
+112050,'7100224'
+112051,'7100224'
+112029,'7100225'
+112030,'7100225'
+112031,'7100225'
+112033,'7100225'
+112034,'7100225'
+112036,'7100225'
+112039,'7100225'
+112040,'7100225'
+112041,'7100225'
+112043,'7100225'
+112044,'7100225'
+112046,'7100225'
+112047,'7100225'
+112049,'7100225'
+112050,'7100225'
+112051,'7100225'
+112028,'7100226'
+112029,'7100226'
+112032,'7100226'
+112033,'7100226'
+112034,'7100226'
+112035,'7100226'
+112037,'7100226'
+112038,'7100226'
+112039,'7100226'
+112040,'7100226'
+112042,'7100226'
+112043,'7100226'
+112045,'7100226'
+112046,'7100226'
+112047,'7100226'
+112048,'7100226'
+112049,'7100226'
+112052,'7100226'
+112029,'7100227'
+112032,'7100227'
+112033,'7100227'
+112034,'7100227'
+112035,'7100227'
+112036,'7100227'
+112037,'7100227'
+112038,'7100227'
+112039,'7100227'
+112040,'7100227'
+112041,'7100227'
+112042,'7100227'
+112043,'7100227'
+112044,'7100227'
+112045,'7100227'
+112046,'7100227'
+112047,'7100227'
+112048,'7100227'
+112049,'7100227'
+112050,'7100227'
+112351,'7100228'
+112352,'7100228'
+112353,'7100228'
+112354,'7100228'
+112351,'7100229'
+112352,'7100229'
+112353,'7100229'
+112354,'7100229'
+112351,'7100230'
+112352,'7100230'
+112353,'7100230'
+112354,'7100230'
+112351,'7100231'
+112352,'7100231'
+112353,'7100231'
+112354,'7100231'
+112351,'7100232'
+112352,'7100232'
+112353,'7100232'
+112354,'7100232'
+112415,'7100233'
+112416,'7100233'
+112417,'7100233'
+112418,'7100233'
+112415,'7100234'
+112416,'7100234'
+112417,'7100234'
+112418,'7100234'
+112413,'7100235'
+112413,'7100236'
+112416,'7100237'
+112418,'7100237'
+112416,'7100238'
+112418,'7100238'
+112413,'7100239'
+112415,'7100239'
+112416,'7100239'
+112417,'7100239'
+112418,'7100239'
+112413,'7100240'
+112415,'7100240'
+112416,'7100240'
+112417,'7100240'
+112418,'7100240'
+112415,'7100241'
+112416,'7100241'
+112417,'7100241'
+112418,'7100241'
+112415,'7100242'
+112417,'7100242'
+112440,'7100243'
+112441,'7100243'
+112442,'7100243'
+112440,'7100244'
+112441,'7100244'
+112442,'7100244'
+112440,'7100245'
+112441,'7100245'
+112442,'7100245'
+112440,'7100246'
+112441,'7100246'
+112442,'7100246'
+112513,'7100247'
+112514,'7100247'
+112515,'7100247'
+112516,'7100247'
+112518,'7100247'
+112519,'7100247'
+112520,'7100247'
+112524,'7100247'
+112525,'7100247'
+112526,'7100247'
+112527,'7100247'
+112513,'7100248'
+112514,'7100248'
+112515,'7100248'
+112516,'7100248'
+112518,'7100248'
+112519,'7100248'
+112520,'7100248'
+112524,'7100248'
+112525,'7100248'
+112526,'7100248'
+112527,'7100249'
+112514,'7100250'
+112515,'7100250'
+112516,'7100250'
+112518,'7100250'
+112519,'7100250'
+112520,'7100250'
+112524,'7100250'
+112525,'7100250'
+112526,'7100250'
+112527,'7100250'
+112514,'7100251'
+112515,'7100251'
+112516,'7100251'
+112519,'7100251'
+112520,'7100251'
+112524,'7100251'
+112525,'7100251'
+112526,'7100251'
+112527,'7100251'
+112513,'7100252'
+112515,'7100252'
+112516,'7100252'
+112520,'7100252'
+112524,'7100252'
+112526,'7100252'
+112513,'7100253'
+112514,'7100253'
+112515,'7100253'
+112516,'7100253'
+112518,'7100253'
+112519,'7100253'
+112520,'7100253'
+112524,'7100253'
+112525,'7100253'
+112526,'7100253'
+112783,'7100254'
+112789,'7100254'
+112798,'7100254'
+112766,'7100255'
+112772,'7100255'
+112773,'7100255'
+112777,'7100255'
+112784,'7100255'
+112790,'7100255'
+112793,'7100255'
+112794,'7100255'
+112802,'7100255'
+112805,'7100255'
+112797,'7100256'
+112771,'7100257'
+112804,'7100257'
+112807,'7100257'
+112806,'7100258'
+112808,'7100258'
+112783,'7100259'
+112789,'7100259'
+112798,'7100259'
+112766,'7100260'
+112772,'7100260'
+112773,'7100260'
+112777,'7100260'
+112784,'7100260'
+112790,'7100260'
+112793,'7100260'
+112794,'7100260'
+112802,'7100260'
+112805,'7100260'
+112771,'7100261'
+112804,'7100261'
+112807,'7100261'
+112806,'7100262'
+112808,'7100262'
+112766,'7100263'
+112772,'7100263'
+112773,'7100263'
+112777,'7100263'
+112784,'7100263'
+112790,'7100263'
+112793,'7100263'
+112802,'7100263'
+112805,'7100263'
+112806,'7100263'
+112808,'7100263'
+112766,'7100264'
+112772,'7100264'
+112773,'7100264'
+112777,'7100264'
+112784,'7100264'
+112790,'7100264'
+112793,'7100264'
+112794,'7100264'
+112802,'7100264'
+112805,'7100264'
+112806,'7100264'
+112808,'7100264'
+112766,'7100265'
+112772,'7100265'
+112773,'7100265'
+112777,'7100265'
+112784,'7100265'
+112790,'7100265'
+112793,'7100265'
+112794,'7100265'
+112797,'7100265'
+112802,'7100265'
+112805,'7100265'
+112783,'7100266'
+112789,'7100266'
+112798,'7100266'
+112766,'7100267'
+112772,'7100267'
+112773,'7100267'
+112777,'7100267'
+112784,'7100267'
+112790,'7100267'
+112793,'7100267'
+112794,'7100267'
+112802,'7100267'
+112805,'7100267'
+112864,'7100268'
+112869,'7100268'
+112872,'7100268'
+112874,'7100268'
+112866,'7100269'
+112867,'7100269'
+112870,'7100269'
+112873,'7100269'
+112864,'7100270'
+112869,'7100270'
+112872,'7100270'
+112874,'7100270'
+112866,'7100271'
+112867,'7100271'
+112870,'7100271'
+112873,'7100271'
+112866,'7100272'
+112867,'7100272'
+112870,'7100272'
+112873,'7100272'
+112864,'7100273'
+112869,'7100273'
+112872,'7100273'
+112874,'7100273'
+112866,'7100274'
+112867,'7100274'
+112870,'7100274'
+112873,'7100274'
+112903,'7100275'
+112905,'7100275'
+112908,'7100275'
+112909,'7100275'
+112904,'7100276'
+112907,'7100276'
+112903,'7100277'
+112905,'7100277'
+112908,'7100277'
+112909,'7100277'
+112904,'7100278'
+112907,'7100278'
+112903,'7100279'
+112904,'7100279'
+112905,'7100279'
+112907,'7100279'
+112908,'7100279'
+112909,'7100279'
+112903,'7100280'
+112904,'7100280'
+112905,'7100280'
+112907,'7100280'
+112908,'7100280'
+112909,'7100280'
+112989,'7100281'
+112990,'7100281'
+112991,'7100281'
+112993,'7100281'
+112994,'7100281'
+112995,'7100281'
+112996,'7100281'
+112997,'7100281'
+112998,'7100281'
+112999,'7100281'
+113001,'7100281'
+113002,'7100281'
+113004,'7100281'
+113005,'7100281'
+113006,'7100281'
+113008,'7100281'
+113010,'7100281'
+112992,'7100282'
+113000,'7100282'
+113003,'7100282'
+113009,'7100282'
+113007,'7100283'
+113011,'7100283'
+113012,'7100284'
+113013,'7100284'
+112989,'7100285'
+112990,'7100285'
+112991,'7100285'
+112993,'7100285'
+112994,'7100285'
+112995,'7100285'
+112996,'7100285'
+112997,'7100285'
+112998,'7100285'
+112999,'7100285'
+113001,'7100285'
+113002,'7100285'
+113004,'7100285'
+113005,'7100285'
+113006,'7100285'
+113008,'7100285'
+113010,'7100285'
+112992,'7100286'
+113000,'7100286'
+113003,'7100286'
+113009,'7100286'
+113007,'7100287'
+113011,'7100287'
+113012,'7100288'
+113013,'7100288'
+112989,'7100289'
+112991,'7100289'
+112992,'7100289'
+112994,'7100289'
+112996,'7100289'
+112997,'7100289'
+112998,'7100289'
+113000,'7100289'
+113001,'7100289'
+113003,'7100289'
+113004,'7100289'
+113006,'7100289'
+113008,'7100289'
+113009,'7100289'
+113010,'7100289'
+113012,'7100289'
+113013,'7100289'
+112989,'7100290'
+112991,'7100290'
+112992,'7100290'
+112994,'7100290'
+112997,'7100290'
+112998,'7100290'
+113000,'7100290'
+113001,'7100290'
+113003,'7100290'
+113004,'7100290'
+113006,'7100290'
+113008,'7100290'
+113009,'7100290'
+113010,'7100290'
+113012,'7100290'
+113013,'7100290'
+112990,'7100291'
+112991,'7100291'
+112992,'7100291'
+112993,'7100291'
+112994,'7100291'
+112995,'7100291'
+112998,'7100291'
+112999,'7100291'
+113000,'7100291'
+113001,'7100291'
+113002,'7100291'
+113003,'7100291'
+113004,'7100291'
+113005,'7100291'
+113007,'7100291'
+113008,'7100291'
+113009,'7100291'
+113011,'7100291'
+112989,'7100292'
+112990,'7100292'
+112991,'7100292'
+112992,'7100292'
+112993,'7100292'
+112994,'7100292'
+112995,'7100292'
+112996,'7100292'
+112997,'7100292'
+112998,'7100292'
+112999,'7100292'
+113000,'7100292'
+113001,'7100292'
+113002,'7100292'
+113003,'7100292'
+113004,'7100292'
+113005,'7100292'
+113006,'7100292'
+113008,'7100292'
+113009,'7100292'
+113010,'7100292'
+113498,'7100293'
+113500,'7100293'
+113499,'7100294'
+113501,'7100295'
+113498,'7100296'
+113500,'7100296'
+113499,'7100297'
+113501,'7100298'
+113499,'7100299'
+113499,'7100300'
+113499,'7100301'
+113498,'7100301'
+113500,'7100301'
+113576,'7100302'
+113578,'7100302'
+113581,'7100302'
+113582,'7100302'
+113577,'7100303'
+113579,'7100303'
+113583,'7100304'
+113576,'7100305'
+113578,'7100305'
+113581,'7100305'
+113582,'7100305'
+113577,'7100306'
+113579,'7100306'
+113583,'7100307'
+113576,'7100308'
+113577,'7100308'
+113578,'7100308'
+113579,'7100308'
+113581,'7100308'
+113582,'7100308'
+113577,'7100309'
+113578,'7100309'
+113579,'7100309'
+113581,'7100309'
+113582,'7100309'
+113576,'7100309'
+113595,'7100310'
+113596,'7100310'
+113597,'7100310'
+113599,'7100310'
+113600,'7100310'
+113602,'7100310'
+113595,'7100311'
+113599,'7100311'
+113602,'7100311'
+113595,'7100312'
+113599,'7100312'
+113602,'7100312'
+113596,'7100313'
+113597,'7100313'
+113600,'7100313'
+113595,'7100314'
+113596,'7100314'
+113597,'7100314'
+113599,'7100314'
+113600,'7100314'
+113602,'7100314'
+113595,'7100315'
+113596,'7100315'
+113597,'7100315'
+113599,'7100315'
+113600,'7100315'
+113602,'7100315'
+113706,'7100316'
+113707,'7100316'
+113709,'7100316'
+113711,'7100316'
+113716,'7100316'
+113717,'7100316'
+113718,'7100316'
+113710,'7100316'
+113713,'7100316'
+113705,'7100317'
+113712,'7100317'
+113715,'7100317'
+113719,'7100317'
+113720,'7100318'
+113721,'7100319'
+113706,'7100320'
+113707,'7100320'
+113709,'7100320'
+113711,'7100320'
+113716,'7100320'
+113717,'7100320'
+113718,'7100320'
+113710,'7100320'
+113713,'7100320'
+113705,'7100321'
+113712,'7100321'
+113715,'7100321'
+113719,'7100321'
+113720,'7100322'
+113721,'7100323'
+113705,'7100324'
+113707,'7100324'
+113712,'7100324'
+113715,'7100324'
+113719,'7100324'
+113721,'7100324'
+113710,'7100324'
+113713,'7100324'
+113705,'7100325'
+113707,'7100325'
+113712,'7100325'
+113715,'7100325'
+113719,'7100325'
+113721,'7100325'
+113713,'7100325'
+113705,'7100326'
+113706,'7100326'
+113707,'7100326'
+113709,'7100326'
+113711,'7100326'
+113712,'7100326'
+113715,'7100326'
+113716,'7100326'
+113717,'7100326'
+113718,'7100326'
+113719,'7100326'
+113720,'7100326'
+113713,'7100326'
+113705,'7100327'
+113706,'7100327'
+113707,'7100327'
+113709,'7100327'
+113711,'7100327'
+113712,'7100327'
+113715,'7100327'
+113716,'7100327'
+113717,'7100327'
+113718,'7100327'
+113719,'7100327'
+113710,'7100327'
+113713,'7100327'
+133423,'7100328'
+133423,'7100329'
+133423,'7100330'
+133423,'7100331'
+133423,'7100332'
+133430,'7100333'
+133431,'7100333'
+133432,'7100333'
+133433,'7100333'
+133430,'7100334'
+133431,'7100334'
+133432,'7100334'
+133433,'7100334'
+133430,'7100335'
+133431,'7100335'
+133432,'7100335'
+133433,'7100335'
+133430,'7100336'
+133431,'7100336'
+133432,'7100336'
+133433,'7100336'
+133430,'7100337'
+133431,'7100337'
+133432,'7100337'
+133433,'7100337'
+133435,'7100338'
+133436,'7100338'
+133434,'7100339'
+133435,'7100340'
+133436,'7100340'
+133434,'7100341'
+133435,'7100342'
+133436,'7100342'
+133516,'7100343'
+133516,'7100344'
+133516,'7100345'
+133516,'7100346'
+133568,'7100347'
+133569,'7100347'
+133567,'7100348'
+133568,'7100349'
+133569,'7100349'
+137225,'7100350'
+137231,'7100350'
+137237,'7100350'
+137223,'7100351'
+137224,'7100351'
+137226,'7100351'
+137227,'7100351'
+137228,'7100351'
+137229,'7100351'
+137230,'7100351'
+137232,'7100351'
+137233,'7100351'
+137234,'7100351'
+137235,'7100351'
+137236,'7100351'
+137238,'7100351'
+137221,'7100352'
+137222,'7100352'
+137224,'7100353'
+137228,'7100353'
+137230,'7100353'
+137233,'7100353'
+137235,'7100353'
+137238,'7100353'
+137223,'7100354'
+137226,'7100354'
+137227,'7100354'
+137229,'7100354'
+137232,'7100354'
+137234,'7100354'
+137236,'7100354'
+137225,'7100355'
+137231,'7100355'
+137237,'7100355'
+137221,'7100356'
+137222,'7100356'
+137222,'7100357'
+137223,'7100357'
+137226,'7100357'
+137227,'7100357'
+137229,'7100357'
+137232,'7100357'
+137234,'7100357'
+137236,'7100357'
+137221,'7100358'
+137223,'7100358'
+137224,'7100358'
+137225,'7100358'
+137226,'7100358'
+137227,'7100358'
+137228,'7100358'
+137229,'7100358'
+137230,'7100358'
+137231,'7100358'
+137232,'7100358'
+137233,'7100358'
+137234,'7100358'
+137235,'7100358'
+137236,'7100358'
+137237,'7100358'
+137238,'7100358'
+137222,'7100359'
+137223,'7100359'
+137226,'7100359'
+137227,'7100359'
+137229,'7100359'
+137232,'7100359'
+137234,'7100359'
+137236,'7100359'
+137221,'7100360'
+137223,'7100360'
+137224,'7100360'
+137225,'7100360'
+137226,'7100360'
+137227,'7100360'
+137228,'7100360'
+137229,'7100360'
+137230,'7100360'
+137231,'7100360'
+137232,'7100360'
+137233,'7100360'
+137234,'7100360'
+137235,'7100360'
+137236,'7100360'
+137237,'7100360'
+137238,'7100360'
+137224,'7100361'
+137225,'7100361'
+137228,'7100361'
+137230,'7100361'
+137231,'7100361'
+137233,'7100361'
+137235,'7100361'
+137237,'7100361'
+137238,'7100361'
+137223,'7100362'
+137224,'7100362'
+137225,'7100362'
+137226,'7100362'
+137227,'7100362'
+137228,'7100362'
+137229,'7100362'
+137230,'7100362'
+137231,'7100362'
+137232,'7100362'
+137233,'7100362'
+137234,'7100362'
+137235,'7100362'
+137236,'7100362'
+137237,'7100362'
+137238,'7100362'
+137315,'7100363'
+137316,'7100363'
+137317,'7100363'
+137318,'7100363'
+137319,'7100363'
+137320,'7100363'
+137321,'7100363'
+137322,'7100363'
+137323,'7100363'
+137324,'7100363'
+137326,'7100363'
+137327,'7100363'
+137328,'7100363'
+137329,'7100363'
+137330,'7100363'
+137331,'7100363'
+137332,'7100363'
+137333,'7100363'
+137334,'7100363'
+137335,'7100363'
+137336,'7100363'
+137337,'7100363'
+137338,'7100363'
+137339,'7100364'
+137315,'7100365'
+137319,'7100365'
+137323,'7100365'
+137331,'7100365'
+137315,'7100366'
+137319,'7100366'
+137323,'7100366'
+137331,'7100366'
+137330,'7100367'
+137315,'7100368'
+137319,'7100368'
+137323,'7100368'
+137331,'7100368'
+137316,'7100369'
+137317,'7100369'
+137318,'7100369'
+137320,'7100369'
+137321,'7100369'
+137322,'7100369'
+137324,'7100369'
+137326,'7100369'
+137327,'7100369'
+137328,'7100369'
+137329,'7100369'
+137332,'7100369'
+137333,'7100369'
+137334,'7100369'
+137335,'7100369'
+137336,'7100369'
+137337,'7100369'
+137338,'7100369'
+137315,'7100370'
+137316,'7100370'
+137318,'7100370'
+137319,'7100370'
+137320,'7100370'
+137323,'7100370'
+137324,'7100370'
+137326,'7100370'
+137327,'7100370'
+137329,'7100370'
+137330,'7100370'
+137331,'7100370'
+137333,'7100370'
+137334,'7100370'
+137335,'7100370'
+137336,'7100370'
+137338,'7100370'
+137315,'7100371'
+137319,'7100371'
+137323,'7100371'
+137331,'7100371'
+137339,'7100372'
+137316,'7100373'
+137318,'7100373'
+137320,'7100373'
+137324,'7100373'
+137326,'7100373'
+137327,'7100373'
+137329,'7100373'
+137333,'7100373'
+137334,'7100373'
+137335,'7100373'
+137336,'7100373'
+137338,'7100373'
+137317,'7100374'
+137321,'7100374'
+137322,'7100374'
+137328,'7100374'
+137332,'7100374'
+137337,'7100374'
+137315,'7100375'
+137316,'7100375'
+137317,'7100375'
+137318,'7100375'
+137319,'7100375'
+137320,'7100375'
+137321,'7100375'
+137322,'7100375'
+137323,'7100375'
+137324,'7100375'
+137326,'7100375'
+137327,'7100375'
+137328,'7100375'
+137329,'7100375'
+137331,'7100375'
+137332,'7100375'
+137333,'7100375'
+137334,'7100375'
+137335,'7100375'
+137336,'7100375'
+137337,'7100375'
+137338,'7100375'
+137339,'7100375'
+137315,'7100376'
+137316,'7100376'
+137318,'7100376'
+137319,'7100376'
+137320,'7100376'
+137323,'7100376'
+137324,'7100376'
+137326,'7100376'
+137327,'7100376'
+137329,'7100376'
+137330,'7100376'
+137331,'7100376'
+137333,'7100376'
+137334,'7100376'
+137335,'7100376'
+137336,'7100376'
+137338,'7100376'
+137315,'7100377'
+137316,'7100377'
+137318,'7100377'
+137319,'7100377'
+137320,'7100377'
+137323,'7100377'
+137324,'7100377'
+137326,'7100377'
+137327,'7100377'
+137329,'7100377'
+137330,'7100377'
+137331,'7100377'
+137333,'7100377'
+137334,'7100377'
+137335,'7100377'
+137336,'7100377'
+137338,'7100377'
+137315,'7100378'
+137316,'7100378'
+137317,'7100378'
+137318,'7100378'
+137319,'7100378'
+137320,'7100378'
+137321,'7100378'
+137322,'7100378'
+137323,'7100378'
+137324,'7100378'
+137326,'7100378'
+137327,'7100378'
+137328,'7100378'
+137329,'7100378'
+137331,'7100378'
+137332,'7100378'
+137333,'7100378'
+137334,'7100378'
+137335,'7100378'
+137336,'7100378'
+137337,'7100378'
+137338,'7100378'
+137353,'7100379'
+137354,'7100379'
+137355,'7100379'
+137356,'7100379'
+137357,'7100379'
+137358,'7100379'
+137359,'7100379'
+137360,'7100379'
+137361,'7100379'
+137353,'7100380'
+137354,'7100380'
+137355,'7100380'
+137356,'7100380'
+137357,'7100380'
+137358,'7100380'
+137359,'7100380'
+137360,'7100380'
+137361,'7100380'
+137353,'7100381'
+137354,'7100381'
+137355,'7100381'
+137356,'7100381'
+137357,'7100381'
+137358,'7100381'
+137359,'7100381'
+137360,'7100381'
+137361,'7100381'
+137407,'7100382'
+137408,'7100382'
+137412,'7100382'
+137413,'7100382'
+137410,'7100383'
+137407,'7100384'
+137408,'7100384'
+137412,'7100384'
+137413,'7100384'
+137410,'7100385'
+137408,'7100386'
+137413,'7100386'
+137408,'7100387'
+137413,'7100387'
+137407,'7100388'
+137408,'7100388'
+137412,'7100388'
+137413,'7100388'
+137410,'7100388'
+137407,'7100389'
+137408,'7100389'
+137412,'7100389'
+137413,'7100389'
+137410,'7100389'
+137407,'7100390'
+137408,'7100390'
+137412,'7100390'
+137413,'7100390'
+137410,'7100390'
+137407,'7100391'
+137412,'7100391'
+137410,'7100391'
+137414,'7100392'
+137417,'7100392'
+137420,'7100392'
+137422,'7100392'
+137415,'7100393'
+137419,'7100393'
+137423,'7100393'
+137414,'7100394'
+137417,'7100394'
+137420,'7100394'
+137422,'7100394'
+137415,'7100395'
+137419,'7100395'
+137423,'7100395'
+137415,'7100396'
+137419,'7100396'
+137423,'7100396'
+137414,'7100397'
+137417,'7100397'
+137420,'7100397'
+137422,'7100397'
+137415,'7100398'
+137419,'7100398'
+137423,'7100398'
+137415,'7100399'
+137419,'7100399'
+137423,'7100399'
+137685,'7100400'
+137685,'7100401'
+137685,'7100402'
+137685,'7100403'
+137732,'7100404'
+137733,'7100404'
+137734,'7100404'
+137735,'7100404'
+137736,'7100404'
+137737,'7100404'
+137738,'7100404'
+137739,'7100404'
+137740,'7100404'
+137732,'7100405'
+137733,'7100405'
+137734,'7100405'
+137735,'7100405'
+137736,'7100405'
+137737,'7100405'
+137738,'7100405'
+137739,'7100405'
+137740,'7100405'
+137732,'7100406'
+137733,'7100406'
+137734,'7100406'
+137735,'7100406'
+137736,'7100406'
+137737,'7100406'
+137738,'7100406'
+137739,'7100406'
+137740,'7100406'
+137814,'7100407'
+137811,'7100408'
+137817,'7100408'
+137811,'7100409'
+137817,'7100409'
+137814,'7100410'
+137814,'7100411'
+137811,'7100412'
+137817,'7100412'
+137811,'7100413'
+137817,'7100413'
+137811,'7100414'
+137817,'7100414'
+137811,'7100415'
+137817,'7100415'
+137811,'7100416'
+137817,'7100416'
+137811,'7100417'
+137817,'7100417'
+137814,'7100418'
+138818,'7100419'
+138820,'7100419'
+138821,'7100419'
+138822,'7100419'
+138823,'7100419'
+138824,'7100419'
+138827,'7100419'
+138828,'7100419'
+138829,'7100419'
+138832,'7100419'
+138817,'7100420'
+138830,'7100420'
+138831,'7100420'
+138818,'7100421'
+138819,'7100421'
+138820,'7100421'
+138821,'7100421'
+138822,'7100421'
+138823,'7100421'
+138824,'7100421'
+138825,'7100421'
+138827,'7100421'
+138828,'7100421'
+138829,'7100421'
+138832,'7100421'
+138817,'7100422'
+138830,'7100422'
+138831,'7100422'
+138818,'7100423'
+138819,'7100423'
+138822,'7100423'
+138825,'7100423'
+138829,'7100423'
+138817,'7100424'
+138818,'7100424'
+138819,'7100424'
+138820,'7100424'
+138821,'7100424'
+138822,'7100424'
+138823,'7100424'
+138824,'7100424'
+138825,'7100424'
+138827,'7100424'
+138828,'7100424'
+138829,'7100424'
+138830,'7100424'
+138832,'7100424'
+138818,'7100425'
+138819,'7100425'
+138822,'7100425'
+138825,'7100425'
+138829,'7100425'
+138817,'7100426'
+138818,'7100426'
+138819,'7100426'
+138820,'7100426'
+138821,'7100426'
+138822,'7100426'
+138823,'7100426'
+138824,'7100426'
+138825,'7100426'
+138827,'7100426'
+138828,'7100426'
+138829,'7100426'
+138831,'7100426'
+138832,'7100426'
+138820,'7100427'
+138821,'7100427'
+138823,'7100427'
+138824,'7100427'
+138827,'7100427'
+138828,'7100427'
+138832,'7100427'
+138818,'7100428'
+138819,'7100428'
+138820,'7100428'
+138821,'7100428'
+138822,'7100428'
+138823,'7100428'
+138824,'7100428'
+138825,'7100428'
+138827,'7100428'
+138828,'7100428'
+138829,'7100428'
+138832,'7100428'
+138860,'7100429'
+138861,'7100429'
+138862,'7100429'
+138863,'7100429'
+138864,'7100429'
+138865,'7100429'
+138867,'7100429'
+138868,'7100429'
+138866,'7100429'
+138860,'7100430'
+138861,'7100430'
+138862,'7100430'
+138863,'7100430'
+138864,'7100430'
+138865,'7100430'
+138867,'7100430'
+138868,'7100430'
+138866,'7100430'
+138860,'7100431'
+138861,'7100431'
+138862,'7100431'
+138863,'7100431'
+138864,'7100431'
+138865,'7100431'
+138867,'7100431'
+138868,'7100431'
+138866,'7100431'
+138878,'7100432'
+138879,'7100432'
+138880,'7100432'
+138881,'7100432'
+138882,'7100432'
+138883,'7100432'
+138884,'7100432'
+138878,'7100433'
+138879,'7100433'
+138880,'7100433'
+138881,'7100433'
+138882,'7100433'
+138883,'7100433'
+138884,'7100433'
+138878,'7100434'
+138879,'7100434'
+138880,'7100434'
+138881,'7100434'
+138882,'7100434'
+138883,'7100434'
+138884,'7100434'
+138963,'7100435'
+138964,'7100435'
+138966,'7100435'
+138965,'7100436'
+138965,'7100437'
+138963,'7100438'
+138964,'7100438'
+138966,'7100438'
+138963,'7100439'
+138964,'7100439'
+138966,'7100439'
+138965,'7100440'
+138965,'7100441'
+138963,'7100442'
+138964,'7100442'
+138966,'7100442'
+138970,'7100443'
+138971,'7100443'
+138973,'7100443'
+138974,'7100443'
+138976,'7100443'
+138977,'7100443'
+138970,'7100444'
+138973,'7100444'
+138976,'7100444'
+138970,'7100445'
+138973,'7100445'
+138976,'7100445'
+138971,'7100446'
+138974,'7100446'
+138977,'7100446'
+138970,'7100447'
+138971,'7100447'
+138973,'7100447'
+138974,'7100447'
+138976,'7100447'
+138977,'7100447'
+138970,'7100448'
+138971,'7100448'
+138973,'7100448'
+138974,'7100448'
+138976,'7100448'
+138977,'7100448'
+138970,'7100449'
+138971,'7100449'
+138973,'7100449'
+138974,'7100449'
+138976,'7100449'
+138977,'7100449'
+138970,'7100450'
+138973,'7100450'
+138976,'7100450'
+138970,'7100451'
+138971,'7100451'
+138973,'7100451'
+138974,'7100451'
+138976,'7100451'
+138977,'7100451'
+139264,'7100452'
+139265,'7100452'
+139266,'7100452'
+139267,'7100452'
+139268,'7100452'
+139269,'7100452'
+139270,'7100452'
+139271,'7100452'
+139272,'7100452'
+139273,'7100452'
+139264,'7100453'
+139265,'7100453'
+139266,'7100453'
+139267,'7100453'
+139268,'7100453'
+139269,'7100453'
+139270,'7100453'
+139271,'7100453'
+139272,'7100453'
+139273,'7100453'
+139264,'7100454'
+139265,'7100454'
+139266,'7100454'
+139267,'7100454'
+139268,'7100454'
+139269,'7100454'
+139270,'7100454'
+139271,'7100454'
+139272,'7100454'
+139273,'7100454'
+139353,'7100455'
+139355,'7100455'
+139356,'7100455'
+139357,'7100455'
+139353,'7100456'
+139355,'7100456'
+139356,'7100456'
+139357,'7100456'
+139353,'7100457'
+139355,'7100457'
+139356,'7100457'
+139357,'7100457'
+139353,'7100458'
+139355,'7100458'
+139356,'7100458'
+139357,'7100458'
+139353,'7100459'
+139355,'7100459'
+139356,'7100459'
+139357,'7100459'
+144060,'7100460'
+144061,'7100460'
+144062,'7100460'
+144063,'7100460'
+144065,'7100460'
+144066,'7100460'
+144059,'7100461'
+144067,'7100462'
+144069,'7100462'
+144060,'7100463'
+144061,'7100463'
+144062,'7100463'
+144063,'7100463'
+144065,'7100463'
+144066,'7100463'
+144059,'7100464'
+144059,'7100465'
+144069,'7100466'
+144067,'7100467'
+144059,'7100468'
+144060,'7100469'
+144061,'7100469'
+144062,'7100469'
+144063,'7100469'
+144065,'7100469'
+144066,'7100469'
+144067,'7100469'
+144060,'7100470'
+144061,'7100470'
+144063,'7100470'
+144065,'7100470'
+144066,'7100470'
+144067,'7100470'
+144061,'7100471'
+144065,'7100471'
+144069,'7100471'
+144060,'7100472'
+144061,'7100472'
+144062,'7100472'
+144063,'7100472'
+144065,'7100472'
+144066,'7100472'
+144067,'7100472'
+144060,'7100473'
+144062,'7100473'
+144063,'7100473'
+144066,'7100473'
+144059,'7100474'
+144060,'7100475'
+144061,'7100475'
+144062,'7100475'
+144063,'7100475'
+144065,'7100475'
+144066,'7100475'
+144093,'7100476'
+144092,'7100477'
+144095,'7100477'
+144089,'7100478'
+144090,'7100478'
+144094,'7100478'
+144088,'7100478'
+144090,'7100479'
+144090,'7100480'
+144089,'7100481'
+144094,'7100481'
+144092,'7100482'
+144095,'7100482'
+144088,'7100483'
+144093,'7100484'
+144087,'7100485'
+144092,'7100486'
+144095,'7100486'
+144093,'7100487'
+144088,'7100488'
+144089,'7100489'
+144090,'7100489'
+144094,'7100489'
+144088,'7100489'
+144092,'7100489'
+144093,'7100489'
+144095,'7100489'
+144088,'7100490'
+144089,'7100491'
+144090,'7100491'
+144094,'7100491'
+144088,'7100491'
+144092,'7100491'
+144093,'7100491'
+144095,'7100491'
+144089,'7100492'
+144090,'7100492'
+144094,'7100492'
+144087,'7100492'
+144092,'7100492'
+144093,'7100492'
+144095,'7100492'
+144089,'7100493'
+144094,'7100493'
+144087,'7100493'
+144092,'7100493'
+144095,'7100493'
+144089,'7100494'
+144090,'7100494'
+144094,'7100494'
+144088,'7100494'
+144092,'7100494'
+144093,'7100494'
+144095,'7100494'
+144110,'7100495'
+144110,'7100496'
+144110,'7100497'
+144110,'7100498'
+144110,'7100499'
+144143,'7100500'
+144144,'7100500'
+144145,'7100500'
+144146,'7100500'
+144147,'7100500'
+144148,'7100500'
+144149,'7100500'
+144150,'7100500'
+144151,'7100500'
+144152,'7100500'
+144153,'7100500'
+144143,'7100501'
+144144,'7100501'
+144145,'7100501'
+144146,'7100501'
+144147,'7100501'
+144148,'7100501'
+144149,'7100501'
+144150,'7100501'
+144151,'7100501'
+144152,'7100501'
+144153,'7100501'
+144143,'7100502'
+144144,'7100502'
+144145,'7100502'
+144147,'7100502'
+144149,'7100502'
+144150,'7100502'
+144151,'7100502'
+144152,'7100502'
+144153,'7100502'
+144143,'7100503'
+144144,'7100503'
+144146,'7100503'
+144147,'7100503'
+144149,'7100503'
+144150,'7100503'
+144152,'7100503'
+144153,'7100503'
+144143,'7100504'
+144144,'7100504'
+144145,'7100504'
+144146,'7100504'
+144147,'7100504'
+144148,'7100504'
+144149,'7100504'
+144150,'7100504'
+144151,'7100504'
+144152,'7100504'
+144153,'7100504'
+144157,'7100505'
+144159,'7100505'
+144162,'7100505'
+144164,'7100505'
+144165,'7100505'
+144166,'7100505'
+144168,'7100505'
+144160,'7100505'
+144161,'7100505'
+144158,'7100506'
+144163,'7100506'
+144167,'7100506'
+144169,'7100506'
+144156,'7100507'
+144155,'7100508'
+144157,'7100509'
+144159,'7100509'
+144162,'7100509'
+144164,'7100509'
+144165,'7100509'
+144166,'7100509'
+144168,'7100509'
+144160,'7100509'
+144161,'7100509'
+144158,'7100510'
+144163,'7100510'
+144167,'7100510'
+144169,'7100510'
+144156,'7100511'
+144155,'7100512'
+144155,'7100513'
+144158,'7100513'
+144163,'7100513'
+144165,'7100513'
+144167,'7100513'
+144169,'7100513'
+144160,'7100513'
+144155,'7100514'
+144158,'7100514'
+144163,'7100514'
+144165,'7100514'
+144167,'7100514'
+144169,'7100514'
+144161,'7100514'
+144156,'7100515'
+144157,'7100515'
+144158,'7100515'
+144159,'7100515'
+144162,'7100515'
+144163,'7100515'
+144164,'7100515'
+144165,'7100515'
+144166,'7100515'
+144167,'7100515'
+144168,'7100515'
+144169,'7100515'
+144160,'7100515'
+144161,'7100515'
+144157,'7100516'
+144158,'7100516'
+144159,'7100516'
+144162,'7100516'
+144163,'7100516'
+144164,'7100516'
+144165,'7100516'
+144166,'7100516'
+144167,'7100516'
+144168,'7100516'
+144169,'7100516'
+144160,'7100516'
+144161,'7100516'
+144477,'7100517'
+144478,'7100517'
+144479,'7100517'
+144480,'7100518'
+144477,'7100519'
+144478,'7100519'
+144479,'7100519'
+144543,'7100520'
+144541,'7100521'
+144547,'7100521'
+144541,'7100522'
+144547,'7100522'
+144543,'7100523'
+144543,'7100524'
+144541,'7100525'
+144547,'7100525'
+144541,'7100526'
+144547,'7100526'
+144541,'7100527'
+144547,'7100527'
+144541,'7100528'
+144547,'7100528'
+144541,'7100529'
+144547,'7100529'
+144541,'7100530'
+144547,'7100530'
+144543,'7100531'
+144572,'7100532'
+144574,'7100532'
+144575,'7100532'
+144576,'7100532'
+144572,'7100533'
+144574,'7100533'
+144575,'7100533'
+144576,'7100533'
+144572,'7100534'
+144574,'7100534'
+144575,'7100534'
+144576,'7100534'
diff --git a/sql-bench/Data/ATIS/food_service.txt b/sql-bench/Data/ATIS/food_service.txt
new file mode 100644
index 00000000..7297e244
--- /dev/null
+++ b/sql-bench/Data/ATIS/food_service.txt
@@ -0,0 +1,121 @@
+'B',1,'FIRST','BREAKFAST'
+'B',1,'COACH','BREAKFAST'
+'B/',1,'FIRST','BREAKFAST'
+'B/S',1,'FIRST','BREAKFAST'
+'B/S',1,'COACH','SNACK'
+'BD',1,'FIRST','BREAKFAST'
+'BD',2,'FIRST','DINNER'
+'BD',1,'COACH','BREAKFAST'
+'BD',2,'COACH','DINNER'
+'BDS',1,'FIRST','BREAKFAST'
+'BDS',2,'FIRST','DINNER'
+'BDS',3,'FIRST','SNACK'
+'BDS',1,'COACH','BREAKFAST'
+'BDS',2,'COACH','DINNER'
+'BDS',3,'COACH','SNACK'
+'BL',1,'FIRST','BREAKFAST'
+'BL',2,'FIRST','LUNCH'
+'BL',1,'COACH','BREAKFAST'
+'BL',2,'COACH','LUNCH'
+'BLD',1,'FIRST','BREAKFAST'
+'BLD',2,'FIRST','LUNCH'
+'BLD',3,'FIRST','DINNER'
+'BLD',1,'COACH','BREAKFAST'
+'BLD',2,'COACH','LUNCH'
+'BLD',3,'COACH','DINNER'
+'BLS',1,'FIRST','BREAKFAST'
+'BLS',2,'FIRST','LUNCH'
+'BLS',3,'FIRST','SNACK'
+'BLS',1,'COACH','BREAKFAST'
+'BLS',2,'COACH','LUNCH'
+'BLS',3,'COACH','SNACK'
+'BS',1,'FIRST','BREAKFAST'
+'BS',2,'FIRST','SNACK'
+'BS',1,'COACH','BREAKFAST'
+'BS',2,'COACH','SNACK'
+'BSD',1,'FIRST','BREAKFAST'
+'BSD',2,'FIRST','SNACK'
+'BSD',3,'FIRST','DINNER'
+'BSD',1,'COACH','BREAKFAST'
+'BSD',2,'COACH','SNACK'
+'BSD',3,'COACH','DINNER'
+'BSL',1,'FIRST','BREAKFAST'
+'BSL',2,'FIRST','SNACK'
+'BSL',3,'FIRST','LUNCH'
+'BSL',1,'COACH','BREAKFAST'
+'BSL',2,'COACH','SNACK'
+'BSL',3,'COACH','LUNCH'
+'D',1,'FIRST','DINNER'
+'D',2,'COACH','DINNER'
+'D/',1,'FIRST','DINNER'
+'D/S',1,'FIRST','DINNER'
+'D/S',1,'COACH','SNACK'
+'DB',1,'FIRST','DINNER'
+'DB',2,'FIRST','BREAKFAST'
+'DB',1,'COACH','DINNER'
+'DB',2,'COACH','BREAKFAST'
+'DS',1,'FIRST','DINNER'
+'DS',2,'FIRST','SNACK'
+'DS',1,'COACH','DINNER'
+'DS',2,'COACH','SNACK'
+'L',1,'FIRST','LUNCH'
+'L',1,'COACH','LUNCH'
+'L/',1,'FIRST','LUNCH'
+'L/S',1,'FIRST','LUNCH'
+'L/S',1,'COACH','SNACK'
+'LD',1,'FIRST','LUNCH'
+'LD',2,'FIRST','DINNER'
+'LD',1,'COACH','LUNCH'
+'LD',2,'COACH','DINNER'
+'LDS',1,'FIRST','LUNCH'
+'LDS',2,'FIRST','DINNER'
+'LDS',3,'FIRST','SNACK'
+'LDS',1,'COACH','LUNCH'
+'LDS',2,'COACH','DINNER'
+'LDS',3,'COACH','SNACK'
+'LS',1,'FIRST','LUNCH'
+'LS',2,'FIRST','SNACK'
+'LS',1,'COACH','LUNCH'
+'LS',2,'COACH','SNACK'
+'LS/L',1,'FIRST','LUNCH'
+'LS/L',2,'FIRST','SNACK'
+'LS/L',1,'COACH','LUNCH'
+'LSD',1,'FIRST','LUNCH'
+'LSD',2,'FIRST','SNACK'
+'LSD',3,'FIRST','DINNER'
+'LSD',1,'COACH','LUNCH'
+'LSD',2,'COACH','SNACK'
+'LSD',3,'COACH','DINNER'
+'S',1,'FIRST','SNACK'
+'S',1,'COACH','SNACK'
+'S/',1,'FIRST','SNACK'
+'SB',1,'FIRST','SNACK'
+'SB',2,'FIRST','BREAKFAST'
+'SB',1,'COACH','SNACK'
+'SB',2,'COACH','BREAKFAST'
+'SBD',1,'FIRST','SNACK'
+'SBD',2,'FIRST','BREAKFAST'
+'SBD',3,'FIRST','DINNER'
+'SBD',1,'COACH','SNACK'
+'SBD',2,'COACH','BREAKFAST'
+'SBD',3,'COACH','DINNER'
+'SBL',1,'FIRST','SNACK'
+'SBL',2,'FIRST','BREAKFAST'
+'SBL',3,'FIRST','LUNCH'
+'SBL',1,'COACH','SNACK'
+'SBL',2,'COACH','BREAKFAST'
+'SBL',3,'COACH','LUNCH'
+'SD',1,'FIRST','SNACK'
+'SD',2,'FIRST','DINNER'
+'SD',1,'COACH','SNACK'
+'SD',2,'COACH','DINNER'
+'SL',1,'FIRST','SNACK'
+'SL',2,'FIRST','LUNCH'
+'SL',1,'COACH','SNACK'
+'SL',2,'COACH','LUNCH'
+'SLD',1,'FIRST','SNACK'
+'SLD',2,'FIRST','LUNCH'
+'SLD',3,'FIRST','DINNER'
+'SLD',1,'COACH','SNACK'
+'SLD',2,'COACH','LUNCH'
+'SLD',3,'COACH','DINNER'
diff --git a/sql-bench/Data/ATIS/ground_service.txt b/sql-bench/Data/ATIS/ground_service.txt
new file mode 100644
index 00000000..02f18757
--- /dev/null
+++ b/sql-bench/Data/ATIS/ground_service.txt
@@ -0,0 +1,33 @@
+'MATL','ATL','L',9.00
+'MATL','ATL','R',0.00
+'MATL','ATL','A',0.00
+'BBOS','BOS','L',5.00
+'BBOS','BOS','R',0.00
+'BBOS','BOS','A',0.00
+'DDFW','DFW','R',0.00
+'DDFW','DFW','L',6.00
+'FDFW','DFW','L',6.00
+'FDFW','DFW','R',0.00
+'DDEN','DEN','L',5.00
+'DDEN','DEN','R',0.00
+'DDEN','DEN','A',0.00
+'PPHL','PHL','L',4.75
+'PPHL','PHL','R',0.00
+'PPHL','PHL','A',0.00
+'PPIT','PIT','L',7.50
+'PPIT','PIT','R',0.00
+'PPIT','PIT','A',0.00
+'OOAK','OAK','L',3.50
+'OOAK','OAK','R',0.00
+'OOAK','SFO','L',6.00
+'OOAK','SFO','R',0.00
+'OOAK','SFO','A',0.00
+'SSFO','SFO','L',4.00
+'SSFO','SFO','R',0.00
+'SSFO','SFO','A',0.00
+'SSFO','OAK','L',5.00
+'WWAS','BWI','L',12.00
+'BBWI','BWI','L',5.00
+'BBWI','BWI','R',0.00
+'BBWI','BWI','A',0.00
+'','','',0.00
diff --git a/sql-bench/Data/ATIS/month_name.txt b/sql-bench/Data/ATIS/month_name.txt
new file mode 100644
index 00000000..947735f1
--- /dev/null
+++ b/sql-bench/Data/ATIS/month_name.txt
@@ -0,0 +1,12 @@
+1,'JANUARY'
+2,'FEBRUARY'
+3,'MARCH'
+4,'APRIL'
+5,'MAY'
+6,'JUNE'
+7,'JULY'
+8,'AUGUST'
+9,'SEPTEMBER'
+10,'OCTOBER'
+11,'NOVEMBER'
+12,'DECEMBER'
diff --git a/sql-bench/Data/ATIS/restrict_carrier.txt b/sql-bench/Data/ATIS/restrict_carrier.txt
new file mode 100644
index 00000000..814fc9ce
--- /dev/null
+++ b/sql-bench/Data/ATIS/restrict_carrier.txt
@@ -0,0 +1,612 @@
+'AP/1','AA'
+'AP/2','AA'
+'AP/2','AF'
+'AP/2','AM'
+'AP/2','EA'
+'AP/2','KX'
+'AP/2','MX'
+'AP/2','NW'
+'AP/4','AA'
+'AP/4','AC'
+'AP/4','AS'
+'AP/4','BW'
+'AP/4','CO'
+'AP/4','DL'
+'AP/4','EA'
+'AP/4','KW'
+'AP/4','LI'
+'AP/4','MX'
+'AP/4','PA'
+'AP/4','TW'
+'AP/6','AC'
+'AP/6','BA'
+'AP/6','CB'
+'AP/6','EA'
+'AP/6','ND'
+'AP/6','NW'
+'AP/6','OU'
+'AP/6','PA'
+'AP/6','US'
+'AP/6','WD'
+'AP/10','AA'
+'AP/10','AC'
+'AP/10','AM'
+'AP/10','CO'
+'AP/10','DL'
+'AP/10','EA'
+'AP/10','FH'
+'AP/10','NW'
+'AP/10','RP'
+'AP/10','TW'
+'AP/10','UA'
+'AP/10','US'
+'AP/12','AA'
+'AP/12','CO'
+'AP/12','DL'
+'AP/12','EA'
+'AP/12','JM'
+'AP/12','ML'
+'AP/12','MX'
+'AP/12','PA'
+'AP/12','TW'
+'AP/12','US'
+'AP/13','AA'
+'AP/13','JM'
+'AP/14','AA'
+'AP/14','EA'
+'AP/14','KX'
+'AP/14','NW'
+'AP/14','PA'
+'AP/16','AC'
+'AP/16','CX'
+'AP/16','DL'
+'AP/16','EA'
+'AP/16','SN'
+'AP/16','TW'
+'AP/16','UA'
+'AP/17','AA'
+'AP/18','CP'
+'AP/18','MX'
+'AP/19','AC'
+'AP/19','BW'
+'AP/19','CU'
+'AP/19','EA'
+'AP/19','JM'
+'AP/20','AA'
+'AP/20','AC'
+'AP/20','AS'
+'AP/20','CO'
+'AP/20','CP'
+'AP/20','DL'
+'AP/20','EA'
+'AP/20','FH'
+'AP/20','HP'
+'AP/20','LH'
+'AP/20','ND'
+'AP/20','NR'
+'AP/20','NW'
+'AP/20','NX'
+'AP/20','OU'
+'AP/20','QB'
+'AP/20','TG'
+'AP/20','UA'
+'AP/20','US'
+'AP/20','WD'
+'AP/20','YN'
+'AP/20','4F'
+'AP/20','4V'
+'AP/20','7F'
+'AP/20','8D'
+'AP/21','AA'
+'AP/21','AC'
+'AP/21','EA'
+'AP/21','KX'
+'AP/21','NW'
+'AP/25','AA'
+'AP/25','AS'
+'AP/25','EA'
+'AP/25','LR'
+'AP/25','MX'
+'AP/25','PA'
+'AP/27','AA'
+'AP/27','CO'
+'AP/27','DL'
+'AP/27','EA'
+'AP/27','HP'
+'AP/27','ML'
+'AP/27','NW'
+'AP/27','PA'
+'AP/27','TW'
+'AP/27','UA'
+'AP/27','US'
+'AP/27','WN'
+'AP/32','AA'
+'AP/32','AC'
+'AP/32','BA'
+'AP/32','CP'
+'AP/32','NW'
+'AP/33','LM'
+'AP/35','AA'
+'AP/35','AC'
+'AP/35','AS'
+'AP/35','CO'
+'AP/35','DF'
+'AP/35','EA'
+'AP/35','HA'
+'AP/35','HP'
+'AP/35','LM'
+'AP/35','ND'
+'AP/35','NW'
+'AP/35','PA'
+'AP/35','TW'
+'AP/35','UA'
+'AP/35','WD'
+'AP/43','AA'
+'AP/43','DF'
+'AP/43','UA'
+'AP/43','US'
+'AP/44','AA'
+'AP/44','AC'
+'AP/44','AD'
+'AP/44','AS'
+'AP/44','BE'
+'AP/44','CO'
+'AP/44','DF'
+'AP/44','DL'
+'AP/44','EA'
+'AP/44','FH'
+'AP/44','HP'
+'AP/44','IN'
+'AP/44','IT'
+'AP/44','KS'
+'AP/44','ML'
+'AP/44','NW'
+'AP/44','PA'
+'AP/44','TW'
+'AP/44','UA'
+'AP/44','UO'
+'AP/44','US'
+'AP/44','WN'
+'AP/44','YN'
+'AP/44','YV'
+'AP/44','YW'
+'AP/44','YX'
+'AP/44','ZO'
+'AP/44','ZK'
+'AP/44','3S'
+'AP/44','5A'
+'AP/44','5C'
+'AP/44','7F'
+'AP/44','7V'
+'AP/44','8G'
+'AP/47','AA'
+'AP/47','DO'
+'AP/48','AA'
+'AP/48','AC'
+'AP/48','BL'
+'AP/48','BW'
+'AP/48','CO'
+'AP/48','CP'
+'AP/48','DL'
+'AP/48','EA'
+'AP/48','IV'
+'AP/48','KW'
+'AP/48','KX'
+'AP/48','ML'
+'AP/48','MX'
+'AP/48','NR'
+'AP/48','NW'
+'AP/48','PA'
+'AP/48','PD'
+'AP/48','TW'
+'AP/48','UA'
+'AP/48','YV'
+'AP/48','8D'
+'AP/55','AA'
+'AP/55','AC'
+'AP/55','AS'
+'AP/55','CH'
+'AP/55','CO'
+'AP/55','CP'
+'AP/55','CT'
+'AP/55','DL'
+'AP/55','EA'
+'AP/55','GM'
+'AP/55','HA'
+'AP/55','HP'
+'AP/55','ML'
+'AP/55','ND'
+'AP/55','NR'
+'AP/55','NW'
+'AP/55','OD'
+'AP/55','PA'
+'AP/55','RP'
+'AP/55','TW'
+'AP/55','UA'
+'AP/55','UE'
+'AP/55','US'
+'AP/55','WD'
+'AP/55','YW'
+'AP/55','YX'
+'AP/55','YK'
+'AP/55','ZV'
+'AP/55','2V'
+'AP/55','3N'
+'AP/55','4N'
+'AP/55','4W'
+'AP/55','5A'
+'AP/55','5C'
+'AP/55','5L'
+'AP/55','8D'
+'AP/56','AA'
+'AP/56','DL'
+'AP/56','GM'
+'AP/56','HA'
+'AP/56','HP'
+'AP/56','PA'
+'AP/56','TW'
+'AP/56','UA'
+'AP/56','WD'
+'AP/57','AA'
+'AP/57','AC'
+'AP/57','AS'
+'AP/57','BE'
+'AP/57','CO'
+'AP/57','CP'
+'AP/57','CT'
+'AP/57','DL'
+'AP/57','EA'
+'AP/57','HP'
+'AP/57','ML'
+'AP/57','ND'
+'AP/57','NW'
+'AP/57','PA'
+'AP/57','PD'
+'AP/57','PS'
+'AP/57','TW'
+'AP/57','UA'
+'AP/57','US'
+'AP/57','YV'
+'AP/57','YW'
+'AP/57','YX'
+'AP/57','ZV'
+'AP/57','2P'
+'AP/57','2V'
+'AP/57','3N'
+'AP/57','4N'
+'AP/57','4X'
+'AP/57','8G'
+'AP/58','AS'
+'AP/58','EA'
+'AP/58','7H'
+'AP/59','DL'
+'AP/59','JN'
+'AP/60','AC'
+'AP/60','EA'
+'AP/60','NW'
+'AP/60','UA'
+'AP/60','US'
+'AP/61','CO'
+'AP/61','FY'
+'AP/61','JR'
+'AP/61','2V'
+'AP/68','AA'
+'AP/68','AD'
+'AP/68','AM'
+'AP/68','AS'
+'AP/68','BE'
+'AP/68','CO'
+'AP/68','CP'
+'AP/68','CT'
+'AP/68','DF'
+'AP/68','DL'
+'AP/68','EA'
+'AP/68','EM'
+'AP/68','HP'
+'AP/68','IN'
+'AP/68','ML'
+'AP/68','MX'
+'AP/68','NW'
+'AP/68','OU'
+'AP/68','PA'
+'AP/68','QQ'
+'AP/68','QS'
+'AP/68','RP'
+'AP/68','TW'
+'AP/68','UA'
+'AP/68','US'
+'AP/68','YN'
+'AP/68','YV'
+'AP/68','YW'
+'AP/68','YX'
+'AP/68','ZE'
+'AP/68','ZK'
+'AP/68','3N'
+'AP/68','5C'
+'AP/68','7L'
+'AP/70','AC'
+'AP/70','BW'
+'AP/70','EA'
+'AP/70','PA'
+'AP/73','AA'
+'AP/73','DL'
+'AP/73','EA'
+'AP/73','ML'
+'AP/73','PA'
+'AP/73','TW'
+'AP/75','AA'
+'AP/75','AC'
+'AP/75','AS'
+'AP/75','CH'
+'AP/75','CO'
+'AP/75','CP'
+'AP/75','DL'
+'AP/75','EA'
+'AP/75','HP'
+'AP/75','JV'
+'AP/75','KS'
+'AP/75','LH'
+'AP/75','ML'
+'AP/75','MX'
+'AP/75','ND'
+'AP/75','NW'
+'AP/75','OU'
+'AP/75','PA'
+'AP/75','RP'
+'AP/75','RV'
+'AP/75','TW'
+'AP/75','UA'
+'AP/75','US'
+'AP/75','WD'
+'AP/75','XE'
+'AP/75','YN'
+'AP/75','YV'
+'AP/75','ZO'
+'AP/75','7F'
+'AP/75','8D'
+'AP/76','MX'
+'AP/76','NW'
+'AP/80','AA'
+'AP/80','AC'
+'AP/80','AR'
+'AP/80','AS'
+'AP/80','BA'
+'AP/80','CO'
+'AP/80','CP'
+'AP/80','DL'
+'AP/80','EA'
+'AP/80','HP'
+'AP/80','JB'
+'AP/80','JL'
+'AP/80','JV'
+'AP/80','LA'
+'AP/80','LH'
+'AP/80','ND'
+'AP/80','NW'
+'AP/80','PA'
+'AP/80','TG'
+'AP/80','UA'
+'AP/80','US'
+'AP/80','UW'
+'AP/80','WD'
+'AP/80','YN'
+'AP/80','4V'
+'AP/80','7E'
+'AP/80','8D'
+'AP/87','AC'
+'AP/94','AA'
+'AP/94','AC'
+'AP/94','EA'
+'AP/94','LM'
+'AP/94','NW'
+'EX/1','AR'
+'EX/1','IB'
+'EX/2','AB'
+'EX/2','BW'
+'EX/2','FQ'
+'EX/2','MX'
+'EX/2','UA'
+'EX/2','UP'
+'EX/3','AA'
+'EX/3','CO'
+'EX/3','DL'
+'EX/3','EA'
+'EX/3','HP'
+'EX/3','PA'
+'EX/3','US'
+'EX/5','LR'
+'EX/9','AA'
+'EX/9','AC'
+'EX/9','AM'
+'EX/9','BA'
+'EX/9','CO'
+'EX/9','EA'
+'EX/9','FQ'
+'EX/9','HP'
+'EX/9','PA'
+'EX/9','TV'
+'EX/11','AA'
+'EX/11','AM'
+'EX/11','CO'
+'EX/11','CP'
+'EX/11','CX'
+'EX/11','DL'
+'EX/11','JT'
+'EX/11','LA'
+'EX/11','MX'
+'EX/11','NW'
+'EX/11','PA'
+'EX/11','UA'
+'EX/12','AS'
+'EX/12','CP'
+'EX/12','CX'
+'EX/13','AC'
+'EX/13','AS'
+'EX/13','BF'
+'EX/13','BW'
+'EX/13','DL'
+'EX/13','KS'
+'EX/13','LM'
+'EX/13','ML'
+'EX/13','YV'
+'EX/13','ZV'
+'EX/13','7H'
+'EX/14','AA'
+'EX/14','AS'
+'EX/14','BE'
+'EX/14','CO'
+'EX/14','CP'
+'EX/14','DL'
+'EX/14','EA'
+'EX/14','IN'
+'EX/14','ML'
+'EX/14','NW'
+'EX/14','PA'
+'EX/14','PD'
+'EX/14','TW'
+'EX/14','UA'
+'EX/14','US'
+'EX/14','WN'
+'EX/14','YW'
+'EX/14','ZV'
+'EX/14','2V'
+'EX/14','4N'
+'EX/14','4X'
+'EX/14','7F'
+'EX/14','8D'
+'EX/15','AC'
+'EX/15','BW'
+'EX/15','CU'
+'EX/15','HP'
+'EX/15','JM'
+'EX/17','AA'
+'EX/17','AM'
+'EX/17','AS'
+'EX/17','DL'
+'EX/17','EA'
+'EX/17','JL'
+'EX/17','LH'
+'EX/17','PA'
+'EX/17','UA'
+'EX/19','BW'
+'EX/19','KX'
+'EX/20','AA'
+'EX/20','CO'
+'EX/20','DL'
+'EX/20','HE'
+'EX/20','JM'
+'EX/20','ML'
+'EX/20','MX'
+'EX/20','NW'
+'EX/20','PA'
+'EX/20','UA'
+'EX/20','8R'
+'EX/21','AA'
+'EX/21','JM'
+'EX/25','AA'
+'EX/25','MX'
+'EX/29','AA'
+'EX/29','AM'
+'EX/29','CO'
+'EX/29','EA'
+'EX/29','LH'
+'EX/32','AA'
+'EX/32','EA'
+'EX/32','JM'
+'EX/33','AA'
+'EX/33','JM'
+'EX/33','LI'
+'EX/33','UA'
+'EX/33','5T'
+'EX/34','EA'
+'EX/34','IN'
+'EX/34','JM'
+'EX/34','KW'
+'EX/34','UE'
+'EX/34','UP'
+'EX/34','YV'
+'EX/34','YL'
+'EX/36','AA'
+'EX/36','AC'
+'EX/36','CO'
+'EX/36','CP'
+'EX/36','LI'
+'EX/36','OU'
+'EX/36','US'
+'EX/38','AA'
+'EX/38','EA'
+'EX/38','JM'
+'EX/38','KX'
+'EX/43','AA'
+'EX/43','AS'
+'EX/43','CO'
+'EX/43','CT'
+'EX/43','DL'
+'EX/43','EA'
+'EX/43','HP'
+'EX/43','MX'
+'EX/43','NW'
+'EX/43','OG'
+'EX/43','PA'
+'EX/43','TW'
+'EX/43','UA'
+'EX/43','US'
+'EX/45','NW'
+'EX/47','AA'
+'EX/47','CO'
+'EX/47','DL'
+'EX/47','EA'
+'EX/47','JM'
+'EX/47','JR'
+'EX/47','ML'
+'EX/47','NW'
+'EX/47','OG'
+'EX/47','PA'
+'EX/47','TW'
+'EX/47','US'
+'EX/48','AC'
+'EX/48','AF'
+'EX/48','CO'
+'EX/48','CP'
+'EX/48','DL'
+'EX/48','JM'
+'EX/48','KW'
+'EX/48','MX'
+'EX/48','PA'
+'EX/48','SN'
+'EX/55','AA'
+'EX/55','AF'
+'EX/55','BW'
+'EX/55','CO'
+'EX/55','DO'
+'EX/55','EA'
+'EX/55','JM'
+'EX/55','KX'
+'EX/55','LI'
+'EX/55','LM'
+'EX/55','NW'
+'EX/55','PA'
+'EX/55','PY'
+'EX/55','TW'
+'EX/55','UP'
+'EX/55','2V'
+'VU/1','AA'
+'VU/1','AC'
+'VU/1','AQ'
+'VU/1','AS'
+'VU/1','CP'
+'VU/1','CT'
+'VU/1','CX'
+'VU/1','DL'
+'VU/1','EA'
+'VU/1','HP'
+'VU/1','LW'
+'VU/1','ND'
+'VU/1','NW'
+'VU/1','PA'
+'VU/1','TB'
+'VU/1','TW'
+'VU/1','UA'
+'VU/1','US'
+'VU/1','YR'
+'VU/1','6G'
diff --git a/sql-bench/Data/ATIS/restrict_class.txt b/sql-bench/Data/ATIS/restrict_class.txt
new file mode 100644
index 00000000..1e1ac711
--- /dev/null
+++ b/sql-bench/Data/ATIS/restrict_class.txt
@@ -0,0 +1,4 @@
+'AP/2','B7NR'
+'AP/2','BW7NR'
+'AP/2','BWE14'
+'AP/2','YAP14'
diff --git a/sql-bench/Data/ATIS/restriction.txt b/sql-bench/Data/ATIS/restriction.txt
new file mode 100644
index 00000000..e72af1c1
--- /dev/null
+++ b/sql-bench/Data/ATIS/restriction.txt
@@ -0,0 +1,65 @@
+'AP/1','FOR TRAVEL ORIGINATING AND TERMINATING IN HAWAII','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'Y',3,150
+'AP/2','FOR TRAVEL BETWEEN UNITED STATES AND CARIBBEAN','TOUR CONDUCTORS',7,'N',3,14
+'AP/4','FOR TRAVEL BETWEEN UNITED STATES AND MEXICO','CHILDREN\'S FARES,SALES AGENTS',7,'Y',3,21
+'AP/6','FOR TRAVEL TO/FROM CANADA','CHILDREN\'S FARES,FAMILY FARES,TOUR CONDUCTORS,VISIT USA FARES',7,'Y',3,30
+'AP/10','FOR TRAVEL TO/FROM INTERMEDIATE POINTS','CONTACT CARRIER',30,'Y',3,21
+'AP/12','FOR TRAVEL BETWEEN UNITED STATES AND CARIBBEAN','CONTACT CARRIER',14,'N',3,21
+'AP/13','TRAVEL BETWEEN U.S. AND CANADA,AND POINTS IN CARIBBEAN','CONTACT CARRIER',3,'Y',0,180
+'AP/14','TRAVEL BETWEEN POINTS NAMED AND ARE NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CONTACT CARRIER',3,'Y',1,3
+'AP/16','FARES ARE NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CONTACT CARRIER',14,'Y',3,21
+'AP/17','ROUND TRIP TRAVEL BETWEEN U.S. AND MEXICO','SALES AGENTS (VIA AA TOUR CONDUCTORS)',7,'N',3,30
+'AP/18','ROUND TRIP TRAVEL BETWEEN CANADA AND MEXICO','FAMILY FARES,SALES AGENTS,TOUR CONDUCTORS',7,'N',7,180
+'AP/19','RND TRIP BETWEEN CANADA AND CARIBBEAN. NOT APPLICABLE TO/FROM INTERMEDIATE PNTS','CHILDREN\'S FARES,SALES AGENT,TOUR CONDUCTORS',7,'N',7,30
+'AP/20','ROUND TRIP EXCURSION FARES,NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\S FARES,FAMILY FARES,TOUR CONDUCTORS',14,'Y',3,180
+'AP/21','TRAVEL TO/FROM U.S.A. AND CANADA,NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','SALES AGENTS,TOUR CONDUCTORS',14,'N',7,7
+'AP/25','FARES DO NOT APPLY TO/FROM INTERMEDIATE POINTS ON THE ROUTING','SALES AGENTS,TOUR CONDUCTORS',7,'Y',3,60
+'AP/27','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CONTACT CARRIER',7,'Y',0,180
+'AP/32','ROUND TRIP CHARTER TO HAWAII. FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S AND FAMILY FARES,HAWAII COMMON FARE,SALES AGENTS,TOUR CONDUCTORS',7,'Y',3,30
+'AP/33','ROUND TRIP BETWEEN U.S. AND CARIBBEAN','CHILDREN\'S FARE,SALES AGENTS,TOUR CONDUCTORS',14,'Y',6,21
+'AP/35','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','SALES AGENTS,TOUR CONDUCTORS',7,'Y',0,30
+'AP/43','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARE,SALES AGENTS,TOUR CONDUCTORS',14,'N',3,3
+'AP/44','ONE_WAY TRAVEL,DURING PEAK/NON-PEAK HOURS','CONTACT CARRIER',4,'Y',0,0
+'AP/47','ROUND TRIP TRAVEL','CONTACT CARRIER',14,'Y',7,30
+'AP/48','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','SALES AGENTS,TOUR CONDUCTORS,VISIT USA FARES,CHILDREN\'S FARES',7,'Y',0,0
+'AP/55','MAY COMBINE FARES (EXCEPT VIA DELTA AIRLINES) SEATS LIMITED VIA UNITED AIRLINES','CONTACT CARRIER',3,'N',0,0
+'AP/56','SEATS ARE LIMITED','CONTACT CARRIERS',7,'Y',3,45
+'AP/57','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'Y',3,180
+'AP/58','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'Y',3,330
+'AP/59','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',14,'N',7,30
+'AP/60','ROUND TRIP TRAVEL BETWEEN U.S. AND CANADA','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'N',3,365
+'AP/61','FARES MAYBE COMBINED','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'Y',0,60
+'AP/68','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CONTACT CARRIER',7,'Y',0,0
+'AP/70','ROUND TRIP TRAVEL. FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','SALES AGENTS,TOUR CONDUCTORS,VISIT U.S.A. FARES,CHILDREN\'S FARES',14,'Y',7,14
+'AP/73','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CONTACT CARRIER',7,'N',0,30
+'AP/75','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','SALES AGENTS,TOUR CONDUCTORS,VISIT U.S.A. FARES,CHILDREN\'S FARES',7,'Y',3,60
+'AP/76','ROUND TRIP TRAVEL BETWEEN U.S. AND JAMAICA','SALES AGENTS,TOUR CONDUCTORS',7,'N',0,14
+'AP/80','FARES APPLY TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,FAMILY FARES,SALES AGENTS,TOUR CONDUCTORS',14,'N',3,30
+'AP/87','FARES APPLY TO ROUND TRIP TRAVEL','CONTACT CARRIER',14,'Y',7,21
+'AP/94','FOR ROUND TRIP TRAVEL. FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'Y',7,21
+'EX/1','FOR CIRCLE TRIP TRAVEL','CHILDREN\'S FARES,SALES AGENTS',0,'Y',5,60
+'EX/2','ECONOMY CLASS EXCURSION FARES','SALES AGENTS,TOUR CONDUCTORS',0,'Y',0,21
+'EX/3','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CONTACT CARRIER',0,'Y',2,45
+'EX/5','FOR ROUND TRIP TRAVEL','CONTACT CARRIER',0,'N',5,30
+'EX/9','FARES DO NOT APPLY TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',0,'N',0,30
+'EX/11','FARES MAY BE COMBINED','CONTACT CARRIER',0,'Y',0,60
+'EX/12','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES',0,'Y',3,180
+'EX/13','FARES NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,FAMILY FARES,SALES AGENTS,TOUR CONDUCTORS',0,'Y',0,3
+'EX/14','FARES MAY BE COMBINED','CONTACT CARRIER',0,'N',3,330
+'EX/15','ROUND TRIP TRAVEL BETWEEN CANADA AND CARIBBEAN','CONTACT CARRIER',0,'Y',7,45
+'EX/17','ROUND TRIP EXCURSION FARES','SALES AGENTS,TOUR CONDUCTORS',0,'N',0,180
+'EX/19','ROUND TRIP EXCURSION FARES BETWEEN CANADA AND CARIBBEAN','CONTACT CARRIER',0,'Y',7,7
+'EX/20','ROUND TRIP EXCURSION FARES','CONTACT CARRIER',0,'Y',0,14
+'EX/21','TRAVEL BETWEEN THE U.S.A. AND CARIBBEAN','SALES AGENTS,TOUR CONDUCTORS',0,'N',0,7
+'EX/25','VIA AA,ROUND TRIP TRAVEL BETWEEN SAN JUAN AND ACAPULCO/MEXICO CITY','SALES AGENTS,TOUR CONDUCTORS',0,'Y',3,14
+'EX/29','ROUND TRIP TRAVEL BETWEEN U.S.,CARIBBEAN,AND MEXICO','CHILDREN\'S FARES',0,'Y',0,21
+'EX/32','TRAVEL ORIGINATING IN JAMAICA','SALES AGENTS,TOUR CONDUCTORS',0,'N',0,365
+'EX/33','ROUND TRIP TRAVEL TO JAMAICA/CARIBBEAN','CHILDREN\'S FARES,TOUR CONDUCTORS',0,'N',0,21
+'EX/34','ONE DAY AWAY ROUND TRIP FARES','SALES AGENTS,TOUR CONDUCTORS',0,'N',1,1
+'EX/36','ROUND TRIP TRAVEL. NOT APPLICABLE TO/FROM INTERMEDIATE POINTS','CHILDREN\'S FARES,FAMILY FARES,TOUR CONDUCTORS',0,'Y',1,2
+'EX/38','SAME DAY FARES (VIA EASTERN AIRLINES)','SALES AGENTS,TOUR CONDUCTORS',0,'N',1,1
+'EX/43','ROUND TRIP EXCURSION FARES','CONTACT CARRIER',0,'Y',0,365
+'EX/45','VIA AMERICAN AIRLINES ROUND TRIP TRAVEL BETWEEN KINGSTON/MONTEGO BAY','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',0,'N',3,21
+'EX/47','ROUND TRIP TRAVEL BETWEEN U.S.,CANADA,AND CARIBBEAN','CONTACT CARRIER',0,'Y',3,21
+'EX/48','WEEKEND EXCURSION FARE','CHILDREN\'S FARE,FAMILY FARES,SALES AGENTS,TOUR CONDUCTORS',0,'N',7,365
+'EX/55','FARES MAY BE COMBINED','SALES AGENTS',0,'Y',3,21
+'VU/1','VISIT USA: INTERNATIONAL TRAVEL BEGINNING AND ENDING OUTSIDE U.S.','SALES AGENTS',0,'Y',3,21
diff --git a/sql-bench/Data/ATIS/state.txt b/sql-bench/Data/ATIS/state.txt
new file mode 100644
index 00000000..9c113450
--- /dev/null
+++ b/sql-bench/Data/ATIS/state.txt
@@ -0,0 +1,63 @@
+'AB','ALBERTA','CANADA'
+'AK','ALASKA','USA'
+'AL','ALABAMA','USA'
+'AR','ARKANSAS','USA'
+'AZ','ARIZONA','USA'
+'BC','BRITISH COLUMBIA','CANADA'
+'CA','CALIFORNIA','USA'
+'CO','COLORADO','USA'
+'CT','CONNECTICUT','USA'
+'DC','DISTRICT OF COLUMBIA','USA'
+'DE','DELAWARE','USA'
+'FL','FLORIDA','USA'
+'GA','GEORGIA','USA'
+'HI','HAWAII','USA'
+'IA','IOWA','USA'
+'ID','IDAHO','USA'
+'IL','ILLINOIS','USA'
+'IN','INDIANA','USA'
+'KS','KANSAS','USA'
+'KY','KENTUCKY','USA'
+'LA','LOUISIANA','USA'
+'MA','MASSACHUSETTS','USA'
+'MB','MANITOBA','CANADA'
+'MD','MARYLAND','USA'
+'ME','MAINE','USA'
+'MI','MICHIGAN','USA'
+'MN','MINNESOTA','USA'
+'MO','MISSOURI','USA'
+'MS','MISSISSIPPI','USA'
+'MT','MONTANA','USA'
+'NB','NEW BRUNSWICK','CANADA'
+'NC','NORTH CAROLINA','USA'
+'ND','NORTH DAKOTA','USA'
+'NE','NEBRASKA','USA'
+'NF','NEWFOUNDLAND','CANADA'
+'NH','NEW HAMPSHIRE','USA'
+'NJ','NEW JERSEY','USA'
+'NM','NEW MEXICO','USA'
+'NS','NOVA SCOTIA','CANADA'
+'NT','NORTHWEST TERRITORIES','CANADA'
+'NV','NEVADA','USA'
+'NY','NEW YORK','USA'
+'OH','OHIO','USA'
+'OK','OKLAHOMA','USA'
+'ON','ONTARIO','CANADA'
+'OR','OREGON','USA'
+'PA','PENNSYLVANIA','USA'
+'PE','PRINCE EDWARD ISLAND','CANADA'
+'PQ','QUEBEC','CANADA'
+'RI','RHODE ISLAND','USA'
+'SC','SOUTH CAROLINA','USA'
+'SD','SOUTH DAKOTA','USA'
+'SK','SASKATCHEWAN','CANADA'
+'TN','TENNESSEE','USA'
+'TX','TEXAS','USA'
+'UT','UTAH','USA'
+'VA','VIRGINIA','USA'
+'VT','VERMONT','USA'
+'WA','WASHINGTON','USA'
+'WI','WISCONSIN','USA'
+'WV','WEST VIRGINIA','USA'
+'WY','WYOMING','USA'
+'YT','YUKON TERRITORY','CANADA'
diff --git a/sql-bench/Data/ATIS/stop.txt b/sql-bench/Data/ATIS/stop.txt
new file mode 100644
index 00000000..c731f82f
--- /dev/null
+++ b/sql-bench/Data/ATIS/stop.txt
@@ -0,0 +1,69 @@
+101908,1,102766
+101908,2,137319
+101913,1,102770
+101913,2,137323
+101924,1,102779
+101924,2,137339
+102674,1,102129
+102674,2,112354
+105810,1,106248
+105810,2,137423
+106262,1,106229
+106262,2,137734
+106270,1,106251
+106270,2,137740
+106366,1,105795
+106366,2,112516
+106373,1,105806
+106373,2,113716
+106375,1,105800
+106375,2,112527
+107253,1,107486
+107253,2,138963
+111924,1,111886
+111924,2,102766
+111924,3,137319
+111930,1,111939
+111930,2,107199
+112413,1,111886
+112413,2,102766
+113499,1,112998
+113499,2,112352
+113710,1,112996
+113710,2,112518
+113713,1,113001
+113713,2,112520
+133423,1,133431
+133423,2,111931
+133516,1,133436
+133516,2,113582
+137410,1,137228
+137410,2,102127
+137685,1,137420
+137685,2,113500
+137814,1,137736
+137814,2,139355
+138866,1,139270
+138866,2,137335
+138965,1,138976
+138965,2,113011
+144059,1,144157
+144059,2,112783
+144087,1,144156
+144087,2,112864
+144088,1,144144
+144088,2,111929
+144092,1,144063
+144092,2,101928
+144093,1,144575
+144093,2,138868
+144095,1,144066
+144095,2,101929
+144110,1,144572
+144110,2,138882
+144160,1,144145
+144160,2,112038
+144161,1,144146
+144161,2,112039
+144543,1,144574
+144543,2,139271
diff --git a/sql-bench/Data/ATIS/stop1.txt b/sql-bench/Data/ATIS/stop1.txt
new file mode 100644
index 00000000..c731f82f
--- /dev/null
+++ b/sql-bench/Data/ATIS/stop1.txt
@@ -0,0 +1,69 @@
+101908,1,102766
+101908,2,137319
+101913,1,102770
+101913,2,137323
+101924,1,102779
+101924,2,137339
+102674,1,102129
+102674,2,112354
+105810,1,106248
+105810,2,137423
+106262,1,106229
+106262,2,137734
+106270,1,106251
+106270,2,137740
+106366,1,105795
+106366,2,112516
+106373,1,105806
+106373,2,113716
+106375,1,105800
+106375,2,112527
+107253,1,107486
+107253,2,138963
+111924,1,111886
+111924,2,102766
+111924,3,137319
+111930,1,111939
+111930,2,107199
+112413,1,111886
+112413,2,102766
+113499,1,112998
+113499,2,112352
+113710,1,112996
+113710,2,112518
+113713,1,113001
+113713,2,112520
+133423,1,133431
+133423,2,111931
+133516,1,133436
+133516,2,113582
+137410,1,137228
+137410,2,102127
+137685,1,137420
+137685,2,113500
+137814,1,137736
+137814,2,139355
+138866,1,139270
+138866,2,137335
+138965,1,138976
+138965,2,113011
+144059,1,144157
+144059,2,112783
+144087,1,144156
+144087,2,112864
+144088,1,144144
+144088,2,111929
+144092,1,144063
+144092,2,101928
+144093,1,144575
+144093,2,138868
+144095,1,144066
+144095,2,101929
+144110,1,144572
+144110,2,138882
+144160,1,144145
+144160,2,112038
+144161,1,144146
+144161,2,112039
+144543,1,144574
+144543,2,139271
diff --git a/sql-bench/Data/ATIS/time_interval.txt b/sql-bench/Data/ATIS/time_interval.txt
new file mode 100644
index 00000000..f645dedb
--- /dev/null
+++ b/sql-bench/Data/ATIS/time_interval.txt
@@ -0,0 +1,12 @@
+'morning',0000,1200
+'afternoon',1200,1800
+'evening',1800,2000
+'day',600,1800
+'night',1800,2400
+'night',000,600
+'early morning',0000,800
+'mid-morning',800,1000
+'late morning',1000,1200
+'early afternoon',1200,1400
+'mid-afternoon',1400,1600
+'late afternoon',1600,1800
diff --git a/sql-bench/Data/ATIS/time_zone.txt b/sql-bench/Data/ATIS/time_zone.txt
new file mode 100644
index 00000000..1cc3dc48
--- /dev/null
+++ b/sql-bench/Data/ATIS/time_zone.txt
@@ -0,0 +1,9 @@
+'HST','HAWAII/ALEUTIAN STANDARD TIME'
+'AST','ALASKA STANDARD TIME'
+'YST','YUKON STANDARD TIME'
+'PST','PACIFIC STANDARD TIME'
+'MST','MOUNTAIN STANDARD TIME'
+'CST','CENTRAL STANDARD TIME'
+'EST','EASTERN STANDARD TIME'
+'AST','ATLANTIC STANDARD TIME'
+'NST','NEWFOUNDLAND STANDARD TIME'
diff --git a/sql-bench/Data/ATIS/transport.txt b/sql-bench/Data/ATIS/transport.txt
new file mode 100644
index 00000000..3c3faf6a
--- /dev/null
+++ b/sql-bench/Data/ATIS/transport.txt
@@ -0,0 +1,4 @@
+'L','LIMOUSINE'
+'T','TAXI'
+'R','RENTAL CAR'
+'A','AIR TAXI OPERATION'
diff --git a/sql-bench/Data/Wisconsin/onek.data b/sql-bench/Data/Wisconsin/onek.data
new file mode 100644
index 00000000..4afe4483
--- /dev/null
+++ b/sql-bench/Data/Wisconsin/onek.data
@@ -0,0 +1,1000 @@
+147,0,1,3,7,7,7,47,147,147,147,14,15,'RFAAAA','AAAAAA','AAAAxx'
+931,1,1,3,1,11,1,31,131,431,931,2,3,'VJAAAA','BAAAAA','HHHHxx'
+714,2,0,2,4,14,4,14,114,214,714,8,9,'MBAAAA','CAAAAA','OOOOxx'
+711,3,1,3,1,11,1,11,111,211,711,2,3,'JBAAAA','DAAAAA','VVVVxx'
+883,4,1,3,3,3,3,83,83,383,883,6,7,'ZHAAAA','EAAAAA','AAAAxx'
+439,5,1,3,9,19,9,39,39,439,439,18,19,'XQAAAA','FAAAAA','HHHHxx'
+670,6,0,2,0,10,0,70,70,170,670,0,1,'UZAAAA','GAAAAA','OOOOxx'
+543,7,1,3,3,3,3,43,143,43,543,6,7,'XUAAAA','HAAAAA','VVVVxx'
+425,8,1,1,5,5,5,25,25,425,425,10,11,'JQAAAA','IAAAAA','AAAAxx'
+800,9,0,0,0,0,0,0,0,300,800,0,1,'UEAAAA','JAAAAA','HHHHxx'
+489,10,1,1,9,9,9,89,89,489,489,18,19,'VSAAAA','KAAAAA','OOOOxx'
+494,11,0,2,4,14,4,94,94,494,494,8,9,'ATAAAA','LAAAAA','VVVVxx'
+880,12,0,0,0,0,0,80,80,380,880,0,1,'WHAAAA','MAAAAA','AAAAxx'
+611,13,1,3,1,11,1,11,11,111,611,2,3,'NXAAAA','NAAAAA','HHHHxx'
+226,14,0,2,6,6,6,26,26,226,226,12,13,'SIAAAA','OAAAAA','OOOOxx'
+774,15,0,2,4,14,4,74,174,274,774,8,9,'UDAAAA','PAAAAA','VVVVxx'
+298,16,0,2,8,18,8,98,98,298,298,16,17,'MLAAAA','QAAAAA','AAAAxx'
+682,17,0,2,2,2,2,82,82,182,682,4,5,'GAAAAA','RAAAAA','HHHHxx'
+864,18,0,0,4,4,4,64,64,364,864,8,9,'GHAAAA','SAAAAA','OOOOxx'
+183,19,1,3,3,3,3,83,183,183,183,6,7,'BHAAAA','TAAAAA','VVVVxx'
+885,20,1,1,5,5,5,85,85,385,885,10,11,'BIAAAA','UAAAAA','AAAAxx'
+997,21,1,1,7,17,7,97,197,497,997,14,15,'JMAAAA','VAAAAA','HHHHxx'
+966,22,0,2,6,6,6,66,166,466,966,12,13,'ELAAAA','WAAAAA','OOOOxx'
+389,23,1,1,9,9,9,89,189,389,389,18,19,'ZOAAAA','XAAAAA','VVVVxx'
+846,24,0,2,6,6,6,46,46,346,846,12,13,'OGAAAA','YAAAAA','AAAAxx'
+206,25,0,2,6,6,6,6,6,206,206,12,13,'YHAAAA','ZAAAAA','HHHHxx'
+239,26,1,3,9,19,9,39,39,239,239,18,19,'FJAAAA','ABAAAA','OOOOxx'
+365,27,1,1,5,5,5,65,165,365,365,10,11,'BOAAAA','BBAAAA','VVVVxx'
+204,28,0,0,4,4,4,4,4,204,204,8,9,'WHAAAA','CBAAAA','AAAAxx'
+690,29,0,2,0,10,0,90,90,190,690,0,1,'OAAAAA','DBAAAA','HHHHxx'
+69,30,1,1,9,9,9,69,69,69,69,18,19,'RCAAAA','EBAAAA','OOOOxx'
+358,31,0,2,8,18,8,58,158,358,358,16,17,'UNAAAA','FBAAAA','VVVVxx'
+269,32,1,1,9,9,9,69,69,269,269,18,19,'JKAAAA','GBAAAA','AAAAxx'
+663,33,1,3,3,3,3,63,63,163,663,6,7,'NZAAAA','HBAAAA','HHHHxx'
+608,34,0,0,8,8,8,8,8,108,608,16,17,'KXAAAA','IBAAAA','OOOOxx'
+398,35,0,2,8,18,8,98,198,398,398,16,17,'IPAAAA','JBAAAA','VVVVxx'
+330,36,0,2,0,10,0,30,130,330,330,0,1,'SMAAAA','KBAAAA','AAAAxx'
+529,37,1,1,9,9,9,29,129,29,529,18,19,'JUAAAA','LBAAAA','HHHHxx'
+555,38,1,3,5,15,5,55,155,55,555,10,11,'JVAAAA','MBAAAA','OOOOxx'
+746,39,0,2,6,6,6,46,146,246,746,12,13,'SCAAAA','NBAAAA','VVVVxx'
+558,40,0,2,8,18,8,58,158,58,558,16,17,'MVAAAA','OBAAAA','AAAAxx'
+574,41,0,2,4,14,4,74,174,74,574,8,9,'CWAAAA','PBAAAA','HHHHxx'
+343,42,1,3,3,3,3,43,143,343,343,6,7,'FNAAAA','QBAAAA','OOOOxx'
+120,43,0,0,0,0,0,20,120,120,120,0,1,'QEAAAA','RBAAAA','VVVVxx'
+461,44,1,1,1,1,1,61,61,461,461,2,3,'TRAAAA','SBAAAA','AAAAxx'
+754,45,0,2,4,14,4,54,154,254,754,8,9,'ADAAAA','TBAAAA','HHHHxx'
+772,46,0,0,2,12,2,72,172,272,772,4,5,'SDAAAA','UBAAAA','OOOOxx'
+749,47,1,1,9,9,9,49,149,249,749,18,19,'VCAAAA','VBAAAA','VVVVxx'
+386,48,0,2,6,6,6,86,186,386,386,12,13,'WOAAAA','WBAAAA','AAAAxx'
+9,49,1,1,9,9,9,9,9,9,9,18,19,'JAAAAA','XBAAAA','HHHHxx'
+771,50,1,3,1,11,1,71,171,271,771,2,3,'RDAAAA','YBAAAA','OOOOxx'
+470,51,0,2,0,10,0,70,70,470,470,0,1,'CSAAAA','ZBAAAA','VVVVxx'
+238,52,0,2,8,18,8,38,38,238,238,16,17,'EJAAAA','ACAAAA','AAAAxx'
+86,53,0,2,6,6,6,86,86,86,86,12,13,'IDAAAA','BCAAAA','HHHHxx'
+56,54,0,0,6,16,6,56,56,56,56,12,13,'ECAAAA','CCAAAA','OOOOxx'
+767,55,1,3,7,7,7,67,167,267,767,14,15,'NDAAAA','DCAAAA','VVVVxx'
+363,56,1,3,3,3,3,63,163,363,363,6,7,'ZNAAAA','ECAAAA','AAAAxx'
+655,57,1,3,5,15,5,55,55,155,655,10,11,'FZAAAA','FCAAAA','HHHHxx'
+394,58,0,2,4,14,4,94,194,394,394,8,9,'EPAAAA','GCAAAA','OOOOxx'
+223,59,1,3,3,3,3,23,23,223,223,6,7,'PIAAAA','HCAAAA','VVVVxx'
+946,60,0,2,6,6,6,46,146,446,946,12,13,'KKAAAA','ICAAAA','AAAAxx'
+863,61,1,3,3,3,3,63,63,363,863,6,7,'FHAAAA','JCAAAA','HHHHxx'
+913,62,1,1,3,13,3,13,113,413,913,6,7,'DJAAAA','KCAAAA','OOOOxx'
+737,63,1,1,7,17,7,37,137,237,737,14,15,'JCAAAA','LCAAAA','VVVVxx'
+65,64,1,1,5,5,5,65,65,65,65,10,11,'NCAAAA','MCAAAA','AAAAxx'
+251,65,1,3,1,11,1,51,51,251,251,2,3,'RJAAAA','NCAAAA','HHHHxx'
+686,66,0,2,6,6,6,86,86,186,686,12,13,'KAAAAA','OCAAAA','OOOOxx'
+971,67,1,3,1,11,1,71,171,471,971,2,3,'JLAAAA','PCAAAA','VVVVxx'
+775,68,1,3,5,15,5,75,175,275,775,10,11,'VDAAAA','QCAAAA','AAAAxx'
+577,69,1,1,7,17,7,77,177,77,577,14,15,'FWAAAA','RCAAAA','HHHHxx'
+830,70,0,2,0,10,0,30,30,330,830,0,1,'YFAAAA','SCAAAA','OOOOxx'
+787,71,1,3,7,7,7,87,187,287,787,14,15,'HEAAAA','TCAAAA','VVVVxx'
+898,72,0,2,8,18,8,98,98,398,898,16,17,'OIAAAA','UCAAAA','AAAAxx'
+588,73,0,0,8,8,8,88,188,88,588,16,17,'QWAAAA','VCAAAA','HHHHxx'
+872,74,0,0,2,12,2,72,72,372,872,4,5,'OHAAAA','WCAAAA','OOOOxx'
+397,75,1,1,7,17,7,97,197,397,397,14,15,'HPAAAA','XCAAAA','VVVVxx'
+51,76,1,3,1,11,1,51,51,51,51,2,3,'ZBAAAA','YCAAAA','AAAAxx'
+381,77,1,1,1,1,1,81,181,381,381,2,3,'ROAAAA','ZCAAAA','HHHHxx'
+632,78,0,0,2,12,2,32,32,132,632,4,5,'IYAAAA','ADAAAA','OOOOxx'
+31,79,1,3,1,11,1,31,31,31,31,2,3,'FBAAAA','BDAAAA','VVVVxx'
+855,80,1,3,5,15,5,55,55,355,855,10,11,'XGAAAA','CDAAAA','AAAAxx'
+699,81,1,3,9,19,9,99,99,199,699,18,19,'XAAAAA','DDAAAA','HHHHxx'
+562,82,0,2,2,2,2,62,162,62,562,4,5,'QVAAAA','EDAAAA','OOOOxx'
+681,83,1,1,1,1,1,81,81,181,681,2,3,'FAAAAA','FDAAAA','VVVVxx'
+585,84,1,1,5,5,5,85,185,85,585,10,11,'NWAAAA','GDAAAA','AAAAxx'
+35,85,1,3,5,15,5,35,35,35,35,10,11,'JBAAAA','HDAAAA','HHHHxx'
+962,86,0,2,2,2,2,62,162,462,962,4,5,'ALAAAA','IDAAAA','OOOOxx'
+282,87,0,2,2,2,2,82,82,282,282,4,5,'WKAAAA','JDAAAA','VVVVxx'
+254,88,0,2,4,14,4,54,54,254,254,8,9,'UJAAAA','KDAAAA','AAAAxx'
+514,89,0,2,4,14,4,14,114,14,514,8,9,'UTAAAA','LDAAAA','HHHHxx'
+406,90,0,2,6,6,6,6,6,406,406,12,13,'QPAAAA','MDAAAA','OOOOxx'
+544,91,0,0,4,4,4,44,144,44,544,8,9,'YUAAAA','NDAAAA','VVVVxx'
+704,92,0,0,4,4,4,4,104,204,704,8,9,'CBAAAA','ODAAAA','AAAAxx'
+948,93,0,0,8,8,8,48,148,448,948,16,17,'MKAAAA','PDAAAA','HHHHxx'
+412,94,0,0,2,12,2,12,12,412,412,4,5,'WPAAAA','QDAAAA','OOOOxx'
+200,95,0,0,0,0,0,0,0,200,200,0,1,'SHAAAA','RDAAAA','VVVVxx'
+583,96,1,3,3,3,3,83,183,83,583,6,7,'LWAAAA','SDAAAA','AAAAxx'
+486,97,0,2,6,6,6,86,86,486,486,12,13,'SSAAAA','TDAAAA','HHHHxx'
+666,98,0,2,6,6,6,66,66,166,666,12,13,'QZAAAA','UDAAAA','OOOOxx'
+436,99,0,0,6,16,6,36,36,436,436,12,13,'UQAAAA','VDAAAA','VVVVxx'
+842,100,0,2,2,2,2,42,42,342,842,4,5,'KGAAAA','WDAAAA','AAAAxx'
+99,101,1,3,9,19,9,99,99,99,99,18,19,'VDAAAA','XDAAAA','HHHHxx'
+656,102,0,0,6,16,6,56,56,156,656,12,13,'GZAAAA','YDAAAA','OOOOxx'
+673,103,1,1,3,13,3,73,73,173,673,6,7,'XZAAAA','ZDAAAA','VVVVxx'
+371,104,1,3,1,11,1,71,171,371,371,2,3,'HOAAAA','AEAAAA','AAAAxx'
+869,105,1,1,9,9,9,69,69,369,869,18,19,'LHAAAA','BEAAAA','HHHHxx'
+569,106,1,1,9,9,9,69,169,69,569,18,19,'XVAAAA','CEAAAA','OOOOxx'
+616,107,0,0,6,16,6,16,16,116,616,12,13,'SXAAAA','DEAAAA','VVVVxx'
+612,108,0,0,2,12,2,12,12,112,612,4,5,'OXAAAA','EEAAAA','AAAAxx'
+505,109,1,1,5,5,5,5,105,5,505,10,11,'LTAAAA','FEAAAA','HHHHxx'
+922,110,0,2,2,2,2,22,122,422,922,4,5,'MJAAAA','GEAAAA','OOOOxx'
+221,111,1,1,1,1,1,21,21,221,221,2,3,'NIAAAA','HEAAAA','VVVVxx'
+388,112,0,0,8,8,8,88,188,388,388,16,17,'YOAAAA','IEAAAA','AAAAxx'
+567,113,1,3,7,7,7,67,167,67,567,14,15,'VVAAAA','JEAAAA','HHHHxx'
+58,114,0,2,8,18,8,58,58,58,58,16,17,'GCAAAA','KEAAAA','OOOOxx'
+316,115,0,0,6,16,6,16,116,316,316,12,13,'EMAAAA','LEAAAA','VVVVxx'
+659,116,1,3,9,19,9,59,59,159,659,18,19,'JZAAAA','MEAAAA','AAAAxx'
+501,117,1,1,1,1,1,1,101,1,501,2,3,'HTAAAA','NEAAAA','HHHHxx'
+815,118,1,3,5,15,5,15,15,315,815,10,11,'JFAAAA','OEAAAA','OOOOxx'
+638,119,0,2,8,18,8,38,38,138,638,16,17,'OYAAAA','PEAAAA','VVVVxx'
+696,120,0,0,6,16,6,96,96,196,696,12,13,'UAAAAA','QEAAAA','AAAAxx'
+734,121,0,2,4,14,4,34,134,234,734,8,9,'GCAAAA','REAAAA','HHHHxx'
+237,122,1,1,7,17,7,37,37,237,237,14,15,'DJAAAA','SEAAAA','OOOOxx'
+816,123,0,0,6,16,6,16,16,316,816,12,13,'KFAAAA','TEAAAA','VVVVxx'
+917,124,1,1,7,17,7,17,117,417,917,14,15,'HJAAAA','UEAAAA','AAAAxx'
+844,125,0,0,4,4,4,44,44,344,844,8,9,'MGAAAA','VEAAAA','HHHHxx'
+657,126,1,1,7,17,7,57,57,157,657,14,15,'HZAAAA','WEAAAA','OOOOxx'
+952,127,0,0,2,12,2,52,152,452,952,4,5,'QKAAAA','XEAAAA','VVVVxx'
+519,128,1,3,9,19,9,19,119,19,519,18,19,'ZTAAAA','YEAAAA','AAAAxx'
+792,129,0,0,2,12,2,92,192,292,792,4,5,'MEAAAA','ZEAAAA','HHHHxx'
+275,130,1,3,5,15,5,75,75,275,275,10,11,'PKAAAA','AFAAAA','OOOOxx'
+319,131,1,3,9,19,9,19,119,319,319,18,19,'HMAAAA','BFAAAA','VVVVxx'
+487,132,1,3,7,7,7,87,87,487,487,14,15,'TSAAAA','CFAAAA','AAAAxx'
+945,133,1,1,5,5,5,45,145,445,945,10,11,'JKAAAA','DFAAAA','HHHHxx'
+584,134,0,0,4,4,4,84,184,84,584,8,9,'MWAAAA','EFAAAA','OOOOxx'
+765,135,1,1,5,5,5,65,165,265,765,10,11,'LDAAAA','FFAAAA','VVVVxx'
+814,136,0,2,4,14,4,14,14,314,814,8,9,'IFAAAA','GFAAAA','AAAAxx'
+359,137,1,3,9,19,9,59,159,359,359,18,19,'VNAAAA','HFAAAA','HHHHxx'
+548,138,0,0,8,8,8,48,148,48,548,16,17,'CVAAAA','IFAAAA','OOOOxx'
+811,139,1,3,1,11,1,11,11,311,811,2,3,'FFAAAA','JFAAAA','VVVVxx'
+531,140,1,3,1,11,1,31,131,31,531,2,3,'LUAAAA','KFAAAA','AAAAxx'
+104,141,0,0,4,4,4,4,104,104,104,8,9,'AEAAAA','LFAAAA','HHHHxx'
+33,142,1,1,3,13,3,33,33,33,33,6,7,'HBAAAA','MFAAAA','OOOOxx'
+404,143,0,0,4,4,4,4,4,404,404,8,9,'OPAAAA','NFAAAA','VVVVxx'
+995,144,1,3,5,15,5,95,195,495,995,10,11,'HMAAAA','OFAAAA','AAAAxx'
+408,145,0,0,8,8,8,8,8,408,408,16,17,'SPAAAA','PFAAAA','HHHHxx'
+93,146,1,1,3,13,3,93,93,93,93,6,7,'PDAAAA','QFAAAA','OOOOxx'
+794,147,0,2,4,14,4,94,194,294,794,8,9,'OEAAAA','RFAAAA','VVVVxx'
+833,148,1,1,3,13,3,33,33,333,833,6,7,'BGAAAA','SFAAAA','AAAAxx'
+615,149,1,3,5,15,5,15,15,115,615,10,11,'RXAAAA','TFAAAA','HHHHxx'
+333,150,1,1,3,13,3,33,133,333,333,6,7,'VMAAAA','UFAAAA','OOOOxx'
+357,151,1,1,7,17,7,57,157,357,357,14,15,'TNAAAA','VFAAAA','VVVVxx'
+999,152,1,3,9,19,9,99,199,499,999,18,19,'LMAAAA','WFAAAA','AAAAxx'
+515,153,1,3,5,15,5,15,115,15,515,10,11,'VTAAAA','XFAAAA','HHHHxx'
+685,154,1,1,5,5,5,85,85,185,685,10,11,'JAAAAA','YFAAAA','OOOOxx'
+692,155,0,0,2,12,2,92,92,192,692,4,5,'QAAAAA','ZFAAAA','VVVVxx'
+627,156,1,3,7,7,7,27,27,127,627,14,15,'DYAAAA','AGAAAA','AAAAxx'
+654,157,0,2,4,14,4,54,54,154,654,8,9,'EZAAAA','BGAAAA','HHHHxx'
+115,158,1,3,5,15,5,15,115,115,115,10,11,'LEAAAA','CGAAAA','OOOOxx'
+75,159,1,3,5,15,5,75,75,75,75,10,11,'XCAAAA','DGAAAA','VVVVxx'
+14,160,0,2,4,14,4,14,14,14,14,8,9,'OAAAAA','EGAAAA','AAAAxx'
+148,161,0,0,8,8,8,48,148,148,148,16,17,'SFAAAA','FGAAAA','HHHHxx'
+201,162,1,1,1,1,1,1,1,201,201,2,3,'THAAAA','GGAAAA','OOOOxx'
+862,163,0,2,2,2,2,62,62,362,862,4,5,'EHAAAA','HGAAAA','VVVVxx'
+634,164,0,2,4,14,4,34,34,134,634,8,9,'KYAAAA','IGAAAA','AAAAxx'
+589,165,1,1,9,9,9,89,189,89,589,18,19,'RWAAAA','JGAAAA','HHHHxx'
+142,166,0,2,2,2,2,42,142,142,142,4,5,'MFAAAA','KGAAAA','OOOOxx'
+545,167,1,1,5,5,5,45,145,45,545,10,11,'ZUAAAA','LGAAAA','VVVVxx'
+983,168,1,3,3,3,3,83,183,483,983,6,7,'VLAAAA','MGAAAA','AAAAxx'
+87,169,1,3,7,7,7,87,87,87,87,14,15,'JDAAAA','NGAAAA','HHHHxx'
+335,170,1,3,5,15,5,35,135,335,335,10,11,'XMAAAA','OGAAAA','OOOOxx'
+915,171,1,3,5,15,5,15,115,415,915,10,11,'FJAAAA','PGAAAA','VVVVxx'
+286,172,0,2,6,6,6,86,86,286,286,12,13,'ALAAAA','QGAAAA','AAAAxx'
+361,173,1,1,1,1,1,61,161,361,361,2,3,'XNAAAA','RGAAAA','HHHHxx'
+97,174,1,1,7,17,7,97,97,97,97,14,15,'TDAAAA','SGAAAA','OOOOxx'
+98,175,0,2,8,18,8,98,98,98,98,16,17,'UDAAAA','TGAAAA','VVVVxx'
+377,176,1,1,7,17,7,77,177,377,377,14,15,'NOAAAA','UGAAAA','AAAAxx'
+525,177,1,1,5,5,5,25,125,25,525,10,11,'FUAAAA','VGAAAA','HHHHxx'
+448,178,0,0,8,8,8,48,48,448,448,16,17,'GRAAAA','WGAAAA','OOOOxx'
+154,179,0,2,4,14,4,54,154,154,154,8,9,'YFAAAA','XGAAAA','VVVVxx'
+866,180,0,2,6,6,6,66,66,366,866,12,13,'IHAAAA','YGAAAA','AAAAxx'
+741,181,1,1,1,1,1,41,141,241,741,2,3,'NCAAAA','ZGAAAA','HHHHxx'
+172,182,0,0,2,12,2,72,172,172,172,4,5,'QGAAAA','AHAAAA','OOOOxx'
+843,183,1,3,3,3,3,43,43,343,843,6,7,'LGAAAA','BHAAAA','VVVVxx'
+378,184,0,2,8,18,8,78,178,378,378,16,17,'OOAAAA','CHAAAA','AAAAxx'
+804,185,0,0,4,4,4,4,4,304,804,8,9,'YEAAAA','DHAAAA','HHHHxx'
+596,186,0,0,6,16,6,96,196,96,596,12,13,'YWAAAA','EHAAAA','OOOOxx'
+77,187,1,1,7,17,7,77,77,77,77,14,15,'ZCAAAA','FHAAAA','VVVVxx'
+572,188,0,0,2,12,2,72,172,72,572,4,5,'AWAAAA','GHAAAA','AAAAxx'
+444,189,0,0,4,4,4,44,44,444,444,8,9,'CRAAAA','HHAAAA','HHHHxx'
+47,190,1,3,7,7,7,47,47,47,47,14,15,'VBAAAA','IHAAAA','OOOOxx'
+274,191,0,2,4,14,4,74,74,274,274,8,9,'OKAAAA','JHAAAA','VVVVxx'
+40,192,0,0,0,0,0,40,40,40,40,0,1,'OBAAAA','KHAAAA','AAAAxx'
+339,193,1,3,9,19,9,39,139,339,339,18,19,'BNAAAA','LHAAAA','HHHHxx'
+13,194,1,1,3,13,3,13,13,13,13,6,7,'NAAAAA','MHAAAA','OOOOxx'
+878,195,0,2,8,18,8,78,78,378,878,16,17,'UHAAAA','NHAAAA','VVVVxx'
+53,196,1,1,3,13,3,53,53,53,53,6,7,'BCAAAA','OHAAAA','AAAAxx'
+939,197,1,3,9,19,9,39,139,439,939,18,19,'DKAAAA','PHAAAA','HHHHxx'
+928,198,0,0,8,8,8,28,128,428,928,16,17,'SJAAAA','QHAAAA','OOOOxx'
+886,199,0,2,6,6,6,86,86,386,886,12,13,'CIAAAA','RHAAAA','VVVVxx'
+267,200,1,3,7,7,7,67,67,267,267,14,15,'HKAAAA','SHAAAA','AAAAxx'
+105,201,1,1,5,5,5,5,105,105,105,10,11,'BEAAAA','THAAAA','HHHHxx'
+312,202,0,0,2,12,2,12,112,312,312,4,5,'AMAAAA','UHAAAA','OOOOxx'
+552,203,0,0,2,12,2,52,152,52,552,4,5,'GVAAAA','VHAAAA','VVVVxx'
+918,204,0,2,8,18,8,18,118,418,918,16,17,'IJAAAA','WHAAAA','AAAAxx'
+114,205,0,2,4,14,4,14,114,114,114,8,9,'KEAAAA','XHAAAA','HHHHxx'
+805,206,1,1,5,5,5,5,5,305,805,10,11,'ZEAAAA','YHAAAA','OOOOxx'
+875,207,1,3,5,15,5,75,75,375,875,10,11,'RHAAAA','ZHAAAA','VVVVxx'
+225,208,1,1,5,5,5,25,25,225,225,10,11,'RIAAAA','AIAAAA','AAAAxx'
+495,209,1,3,5,15,5,95,95,495,495,10,11,'BTAAAA','BIAAAA','HHHHxx'
+150,210,0,2,0,10,0,50,150,150,150,0,1,'UFAAAA','CIAAAA','OOOOxx'
+759,211,1,3,9,19,9,59,159,259,759,18,19,'FDAAAA','DIAAAA','VVVVxx'
+149,212,1,1,9,9,9,49,149,149,149,18,19,'TFAAAA','EIAAAA','AAAAxx'
+480,213,0,0,0,0,0,80,80,480,480,0,1,'MSAAAA','FIAAAA','HHHHxx'
+1,214,1,1,1,1,1,1,1,1,1,2,3,'BAAAAA','GIAAAA','OOOOxx'
+557,215,1,1,7,17,7,57,157,57,557,14,15,'LVAAAA','HIAAAA','VVVVxx'
+295,216,1,3,5,15,5,95,95,295,295,10,11,'JLAAAA','IIAAAA','AAAAxx'
+854,217,0,2,4,14,4,54,54,354,854,8,9,'WGAAAA','JIAAAA','HHHHxx'
+420,218,0,0,0,0,0,20,20,420,420,0,1,'EQAAAA','KIAAAA','OOOOxx'
+414,219,0,2,4,14,4,14,14,414,414,8,9,'YPAAAA','LIAAAA','VVVVxx'
+758,220,0,2,8,18,8,58,158,258,758,16,17,'EDAAAA','MIAAAA','AAAAxx'
+879,221,1,3,9,19,9,79,79,379,879,18,19,'VHAAAA','NIAAAA','HHHHxx'
+332,222,0,0,2,12,2,32,132,332,332,4,5,'UMAAAA','OIAAAA','OOOOxx'
+78,223,0,2,8,18,8,78,78,78,78,16,17,'ADAAAA','PIAAAA','VVVVxx'
+851,224,1,3,1,11,1,51,51,351,851,2,3,'TGAAAA','QIAAAA','AAAAxx'
+592,225,0,0,2,12,2,92,192,92,592,4,5,'UWAAAA','RIAAAA','HHHHxx'
+979,226,1,3,9,19,9,79,179,479,979,18,19,'RLAAAA','SIAAAA','OOOOxx'
+989,227,1,1,9,9,9,89,189,489,989,18,19,'BMAAAA','TIAAAA','VVVVxx'
+752,228,0,0,2,12,2,52,152,252,752,4,5,'YCAAAA','UIAAAA','AAAAxx'
+214,229,0,2,4,14,4,14,14,214,214,8,9,'GIAAAA','VIAAAA','HHHHxx'
+453,230,1,1,3,13,3,53,53,453,453,6,7,'LRAAAA','WIAAAA','OOOOxx'
+540,231,0,0,0,0,0,40,140,40,540,0,1,'UUAAAA','XIAAAA','VVVVxx'
+597,232,1,1,7,17,7,97,197,97,597,14,15,'ZWAAAA','YIAAAA','AAAAxx'
+356,233,0,0,6,16,6,56,156,356,356,12,13,'SNAAAA','ZIAAAA','HHHHxx'
+720,234,0,0,0,0,0,20,120,220,720,0,1,'SBAAAA','AJAAAA','OOOOxx'
+367,235,1,3,7,7,7,67,167,367,367,14,15,'DOAAAA','BJAAAA','VVVVxx'
+762,236,0,2,2,2,2,62,162,262,762,4,5,'IDAAAA','CJAAAA','AAAAxx'
+986,237,0,2,6,6,6,86,186,486,986,12,13,'YLAAAA','DJAAAA','HHHHxx'
+924,238,0,0,4,4,4,24,124,424,924,8,9,'OJAAAA','EJAAAA','OOOOxx'
+779,239,1,3,9,19,9,79,179,279,779,18,19,'ZDAAAA','FJAAAA','VVVVxx'
+684,240,0,0,4,4,4,84,84,184,684,8,9,'IAAAAA','GJAAAA','AAAAxx'
+413,241,1,1,3,13,3,13,13,413,413,6,7,'XPAAAA','HJAAAA','HHHHxx'
+479,242,1,3,9,19,9,79,79,479,479,18,19,'LSAAAA','IJAAAA','OOOOxx'
+731,243,1,3,1,11,1,31,131,231,731,2,3,'DCAAAA','JJAAAA','VVVVxx'
+409,244,1,1,9,9,9,9,9,409,409,18,19,'TPAAAA','KJAAAA','AAAAxx'
+372,245,0,0,2,12,2,72,172,372,372,4,5,'IOAAAA','LJAAAA','HHHHxx'
+139,246,1,3,9,19,9,39,139,139,139,18,19,'JFAAAA','MJAAAA','OOOOxx'
+717,247,1,1,7,17,7,17,117,217,717,14,15,'PBAAAA','NJAAAA','VVVVxx'
+539,248,1,3,9,19,9,39,139,39,539,18,19,'TUAAAA','OJAAAA','AAAAxx'
+318,249,0,2,8,18,8,18,118,318,318,16,17,'GMAAAA','PJAAAA','HHHHxx'
+208,250,0,0,8,8,8,8,8,208,208,16,17,'AIAAAA','QJAAAA','OOOOxx'
+797,251,1,1,7,17,7,97,197,297,797,14,15,'REAAAA','RJAAAA','VVVVxx'
+661,252,1,1,1,1,1,61,61,161,661,2,3,'LZAAAA','SJAAAA','AAAAxx'
+50,253,0,2,0,10,0,50,50,50,50,0,1,'YBAAAA','TJAAAA','HHHHxx'
+102,254,0,2,2,2,2,2,102,102,102,4,5,'YDAAAA','UJAAAA','OOOOxx'
+484,255,0,0,4,4,4,84,84,484,484,8,9,'QSAAAA','VJAAAA','VVVVxx'
+108,256,0,0,8,8,8,8,108,108,108,16,17,'EEAAAA','WJAAAA','AAAAxx'
+140,257,0,0,0,0,0,40,140,140,140,0,1,'KFAAAA','XJAAAA','HHHHxx'
+996,258,0,0,6,16,6,96,196,496,996,12,13,'IMAAAA','YJAAAA','OOOOxx'
+687,259,1,3,7,7,7,87,87,187,687,14,15,'LAAAAA','ZJAAAA','VVVVxx'
+241,260,1,1,1,1,1,41,41,241,241,2,3,'HJAAAA','AKAAAA','AAAAxx'
+923,261,1,3,3,3,3,23,123,423,923,6,7,'NJAAAA','BKAAAA','HHHHxx'
+500,262,0,0,0,0,0,0,100,0,500,0,1,'GTAAAA','CKAAAA','OOOOxx'
+536,263,0,0,6,16,6,36,136,36,536,12,13,'QUAAAA','DKAAAA','VVVVxx'
+490,264,0,2,0,10,0,90,90,490,490,0,1,'WSAAAA','EKAAAA','AAAAxx'
+773,265,1,1,3,13,3,73,173,273,773,6,7,'TDAAAA','FKAAAA','HHHHxx'
+19,266,1,3,9,19,9,19,19,19,19,18,19,'TAAAAA','GKAAAA','OOOOxx'
+534,267,0,2,4,14,4,34,134,34,534,8,9,'OUAAAA','HKAAAA','VVVVxx'
+941,268,1,1,1,1,1,41,141,441,941,2,3,'FKAAAA','IKAAAA','AAAAxx'
+477,269,1,1,7,17,7,77,77,477,477,14,15,'JSAAAA','JKAAAA','HHHHxx'
+173,270,1,1,3,13,3,73,173,173,173,6,7,'RGAAAA','KKAAAA','OOOOxx'
+113,271,1,1,3,13,3,13,113,113,113,6,7,'JEAAAA','LKAAAA','VVVVxx'
+526,272,0,2,6,6,6,26,126,26,526,12,13,'GUAAAA','MKAAAA','AAAAxx'
+727,273,1,3,7,7,7,27,127,227,727,14,15,'ZBAAAA','NKAAAA','HHHHxx'
+302,274,0,2,2,2,2,2,102,302,302,4,5,'QLAAAA','OKAAAA','OOOOxx'
+789,275,1,1,9,9,9,89,189,289,789,18,19,'JEAAAA','PKAAAA','VVVVxx'
+447,276,1,3,7,7,7,47,47,447,447,14,15,'FRAAAA','QKAAAA','AAAAxx'
+884,277,0,0,4,4,4,84,84,384,884,8,9,'AIAAAA','RKAAAA','HHHHxx'
+718,278,0,2,8,18,8,18,118,218,718,16,17,'QBAAAA','SKAAAA','OOOOxx'
+818,279,0,2,8,18,8,18,18,318,818,16,17,'MFAAAA','TKAAAA','VVVVxx'
+466,280,0,2,6,6,6,66,66,466,466,12,13,'YRAAAA','UKAAAA','AAAAxx'
+131,281,1,3,1,11,1,31,131,131,131,2,3,'BFAAAA','VKAAAA','HHHHxx'
+503,282,1,3,3,3,3,3,103,3,503,6,7,'JTAAAA','WKAAAA','OOOOxx'
+364,283,0,0,4,4,4,64,164,364,364,8,9,'AOAAAA','XKAAAA','VVVVxx'
+934,284,0,2,4,14,4,34,134,434,934,8,9,'YJAAAA','YKAAAA','AAAAxx'
+542,285,0,2,2,2,2,42,142,42,542,4,5,'WUAAAA','ZKAAAA','HHHHxx'
+146,286,0,2,6,6,6,46,146,146,146,12,13,'QFAAAA','ALAAAA','OOOOxx'
+652,287,0,0,2,12,2,52,52,152,652,4,5,'CZAAAA','BLAAAA','VVVVxx'
+566,288,0,2,6,6,6,66,166,66,566,12,13,'UVAAAA','CLAAAA','AAAAxx'
+788,289,0,0,8,8,8,88,188,288,788,16,17,'IEAAAA','DLAAAA','HHHHxx'
+168,290,0,0,8,8,8,68,168,168,168,16,17,'MGAAAA','ELAAAA','OOOOxx'
+736,291,0,0,6,16,6,36,136,236,736,12,13,'ICAAAA','FLAAAA','VVVVxx'
+795,292,1,3,5,15,5,95,195,295,795,10,11,'PEAAAA','GLAAAA','AAAAxx'
+103,293,1,3,3,3,3,3,103,103,103,6,7,'ZDAAAA','HLAAAA','HHHHxx'
+763,294,1,3,3,3,3,63,163,263,763,6,7,'JDAAAA','ILAAAA','OOOOxx'
+256,295,0,0,6,16,6,56,56,256,256,12,13,'WJAAAA','JLAAAA','VVVVxx'
+63,296,1,3,3,3,3,63,63,63,63,6,7,'LCAAAA','KLAAAA','AAAAxx'
+702,297,0,2,2,2,2,2,102,202,702,4,5,'ABAAAA','LLAAAA','HHHHxx'
+390,298,0,2,0,10,0,90,190,390,390,0,1,'APAAAA','MLAAAA','OOOOxx'
+116,299,0,0,6,16,6,16,116,116,116,12,13,'MEAAAA','NLAAAA','VVVVxx'
+354,300,0,2,4,14,4,54,154,354,354,8,9,'QNAAAA','OLAAAA','AAAAxx'
+162,301,0,2,2,2,2,62,162,162,162,4,5,'GGAAAA','PLAAAA','HHHHxx'
+71,302,1,3,1,11,1,71,71,71,71,2,3,'TCAAAA','QLAAAA','OOOOxx'
+916,303,0,0,6,16,6,16,116,416,916,12,13,'GJAAAA','RLAAAA','VVVVxx'
+565,304,1,1,5,5,5,65,165,65,565,10,11,'TVAAAA','SLAAAA','AAAAxx'
+509,305,1,1,9,9,9,9,109,9,509,18,19,'PTAAAA','TLAAAA','HHHHxx'
+20,306,0,0,0,0,0,20,20,20,20,0,1,'UAAAAA','ULAAAA','OOOOxx'
+813,307,1,1,3,13,3,13,13,313,813,6,7,'HFAAAA','VLAAAA','VVVVxx'
+80,308,0,0,0,0,0,80,80,80,80,0,1,'CDAAAA','WLAAAA','AAAAxx'
+400,309,0,0,0,0,0,0,0,400,400,0,1,'KPAAAA','XLAAAA','HHHHxx'
+888,310,0,0,8,8,8,88,88,388,888,16,17,'EIAAAA','YLAAAA','OOOOxx'
+825,311,1,1,5,5,5,25,25,325,825,10,11,'TFAAAA','ZLAAAA','VVVVxx'
+401,312,1,1,1,1,1,1,1,401,401,2,3,'LPAAAA','AMAAAA','AAAAxx'
+158,313,0,2,8,18,8,58,158,158,158,16,17,'CGAAAA','BMAAAA','HHHHxx'
+973,314,1,1,3,13,3,73,173,473,973,6,7,'LLAAAA','CMAAAA','OOOOxx'
+324,315,0,0,4,4,4,24,124,324,324,8,9,'MMAAAA','DMAAAA','VVVVxx'
+873,316,1,1,3,13,3,73,73,373,873,6,7,'PHAAAA','EMAAAA','AAAAxx'
+676,317,0,0,6,16,6,76,76,176,676,12,13,'AAAAAA','FMAAAA','HHHHxx'
+199,318,1,3,9,19,9,99,199,199,199,18,19,'RHAAAA','GMAAAA','OOOOxx'
+304,319,0,0,4,4,4,4,104,304,304,8,9,'SLAAAA','HMAAAA','VVVVxx'
+338,320,0,2,8,18,8,38,138,338,338,16,17,'ANAAAA','IMAAAA','AAAAxx'
+743,321,1,3,3,3,3,43,143,243,743,6,7,'PCAAAA','JMAAAA','HHHHxx'
+730,322,0,2,0,10,0,30,130,230,730,0,1,'CCAAAA','KMAAAA','OOOOxx'
+130,323,0,2,0,10,0,30,130,130,130,0,1,'AFAAAA','LMAAAA','VVVVxx'
+224,324,0,0,4,4,4,24,24,224,224,8,9,'QIAAAA','MMAAAA','AAAAxx'
+216,325,0,0,6,16,6,16,16,216,216,12,13,'IIAAAA','NMAAAA','HHHHxx'
+2,326,0,2,2,2,2,2,2,2,2,4,5,'CAAAAA','OMAAAA','OOOOxx'
+836,327,0,0,6,16,6,36,36,336,836,12,13,'EGAAAA','PMAAAA','VVVVxx'
+443,328,1,3,3,3,3,43,43,443,443,6,7,'BRAAAA','QMAAAA','AAAAxx'
+777,329,1,1,7,17,7,77,177,277,777,14,15,'XDAAAA','RMAAAA','HHHHxx'
+126,330,0,2,6,6,6,26,126,126,126,12,13,'WEAAAA','SMAAAA','OOOOxx'
+117,331,1,1,7,17,7,17,117,117,117,14,15,'NEAAAA','TMAAAA','VVVVxx'
+633,332,1,1,3,13,3,33,33,133,633,6,7,'JYAAAA','UMAAAA','AAAAxx'
+310,333,0,2,0,10,0,10,110,310,310,0,1,'YLAAAA','VMAAAA','HHHHxx'
+622,334,0,2,2,2,2,22,22,122,622,4,5,'YXAAAA','WMAAAA','OOOOxx'
+268,335,0,0,8,8,8,68,68,268,268,16,17,'IKAAAA','XMAAAA','VVVVxx'
+384,336,0,0,4,4,4,84,184,384,384,8,9,'UOAAAA','YMAAAA','AAAAxx'
+460,337,0,0,0,0,0,60,60,460,460,0,1,'SRAAAA','ZMAAAA','HHHHxx'
+475,338,1,3,5,15,5,75,75,475,475,10,11,'HSAAAA','ANAAAA','OOOOxx'
+624,339,0,0,4,4,4,24,24,124,624,8,9,'AYAAAA','BNAAAA','VVVVxx'
+826,340,0,2,6,6,6,26,26,326,826,12,13,'UFAAAA','CNAAAA','AAAAxx'
+680,341,0,0,0,0,0,80,80,180,680,0,1,'EAAAAA','DNAAAA','HHHHxx'
+306,342,0,2,6,6,6,6,106,306,306,12,13,'ULAAAA','ENAAAA','OOOOxx'
+896,343,0,0,6,16,6,96,96,396,896,12,13,'MIAAAA','FNAAAA','VVVVxx'
+30,344,0,2,0,10,0,30,30,30,30,0,1,'EBAAAA','GNAAAA','AAAAxx'
+576,345,0,0,6,16,6,76,176,76,576,12,13,'EWAAAA','HNAAAA','HHHHxx'
+551,346,1,3,1,11,1,51,151,51,551,2,3,'FVAAAA','INAAAA','OOOOxx'
+639,347,1,3,9,19,9,39,39,139,639,18,19,'PYAAAA','JNAAAA','VVVVxx'
+975,348,1,3,5,15,5,75,175,475,975,10,11,'NLAAAA','KNAAAA','AAAAxx'
+882,349,0,2,2,2,2,82,82,382,882,4,5,'YHAAAA','LNAAAA','HHHHxx'
+160,350,0,0,0,0,0,60,160,160,160,0,1,'EGAAAA','MNAAAA','OOOOxx'
+522,351,0,2,2,2,2,22,122,22,522,4,5,'CUAAAA','NNAAAA','VVVVxx'
+620,352,0,0,0,0,0,20,20,120,620,0,1,'WXAAAA','ONAAAA','AAAAxx'
+719,353,1,3,9,19,9,19,119,219,719,18,19,'RBAAAA','PNAAAA','HHHHxx'
+88,354,0,0,8,8,8,88,88,88,88,16,17,'KDAAAA','QNAAAA','OOOOxx'
+614,355,0,2,4,14,4,14,14,114,614,8,9,'QXAAAA','RNAAAA','VVVVxx'
+54,356,0,2,4,14,4,54,54,54,54,8,9,'CCAAAA','SNAAAA','AAAAxx'
+209,357,1,1,9,9,9,9,9,209,209,18,19,'BIAAAA','TNAAAA','HHHHxx'
+67,358,1,3,7,7,7,67,67,67,67,14,15,'PCAAAA','UNAAAA','OOOOxx'
+809,359,1,1,9,9,9,9,9,309,809,18,19,'DFAAAA','VNAAAA','VVVVxx'
+982,360,0,2,2,2,2,82,182,482,982,4,5,'ULAAAA','WNAAAA','AAAAxx'
+817,361,1,1,7,17,7,17,17,317,817,14,15,'LFAAAA','XNAAAA','HHHHxx'
+187,362,1,3,7,7,7,87,187,187,187,14,15,'FHAAAA','YNAAAA','OOOOxx'
+992,363,0,0,2,12,2,92,192,492,992,4,5,'EMAAAA','ZNAAAA','VVVVxx'
+580,364,0,0,0,0,0,80,180,80,580,0,1,'IWAAAA','AOAAAA','AAAAxx'
+658,365,0,2,8,18,8,58,58,158,658,16,17,'IZAAAA','BOAAAA','HHHHxx'
+222,366,0,2,2,2,2,22,22,222,222,4,5,'OIAAAA','COAAAA','OOOOxx'
+667,367,1,3,7,7,7,67,67,167,667,14,15,'RZAAAA','DOAAAA','VVVVxx'
+715,368,1,3,5,15,5,15,115,215,715,10,11,'NBAAAA','EOAAAA','AAAAxx'
+990,369,0,2,0,10,0,90,190,490,990,0,1,'CMAAAA','FOAAAA','HHHHxx'
+22,370,0,2,2,2,2,22,22,22,22,4,5,'WAAAAA','GOAAAA','OOOOxx'
+362,371,0,2,2,2,2,62,162,362,362,4,5,'YNAAAA','HOAAAA','VVVVxx'
+376,372,0,0,6,16,6,76,176,376,376,12,13,'MOAAAA','IOAAAA','AAAAxx'
+246,373,0,2,6,6,6,46,46,246,246,12,13,'MJAAAA','JOAAAA','HHHHxx'
+300,374,0,0,0,0,0,0,100,300,300,0,1,'OLAAAA','KOAAAA','OOOOxx'
+231,375,1,3,1,11,1,31,31,231,231,2,3,'XIAAAA','LOAAAA','VVVVxx'
+151,376,1,3,1,11,1,51,151,151,151,2,3,'VFAAAA','MOAAAA','AAAAxx'
+29,377,1,1,9,9,9,29,29,29,29,18,19,'DBAAAA','NOAAAA','HHHHxx'
+297,378,1,1,7,17,7,97,97,297,297,14,15,'LLAAAA','OOAAAA','OOOOxx'
+403,379,1,3,3,3,3,3,3,403,403,6,7,'NPAAAA','POAAAA','VVVVxx'
+716,380,0,0,6,16,6,16,116,216,716,12,13,'OBAAAA','QOAAAA','AAAAxx'
+260,381,0,0,0,0,0,60,60,260,260,0,1,'AKAAAA','ROAAAA','HHHHxx'
+170,382,0,2,0,10,0,70,170,170,170,0,1,'OGAAAA','SOAAAA','OOOOxx'
+285,383,1,1,5,5,5,85,85,285,285,10,11,'ZKAAAA','TOAAAA','VVVVxx'
+82,384,0,2,2,2,2,82,82,82,82,4,5,'EDAAAA','UOAAAA','AAAAxx'
+958,385,0,2,8,18,8,58,158,458,958,16,17,'WKAAAA','VOAAAA','HHHHxx'
+175,386,1,3,5,15,5,75,175,175,175,10,11,'TGAAAA','WOAAAA','OOOOxx'
+671,387,1,3,1,11,1,71,71,171,671,2,3,'VZAAAA','XOAAAA','VVVVxx'
+822,388,0,2,2,2,2,22,22,322,822,4,5,'QFAAAA','YOAAAA','AAAAxx'
+573,389,1,1,3,13,3,73,173,73,573,6,7,'BWAAAA','ZOAAAA','HHHHxx'
+723,390,1,3,3,3,3,23,123,223,723,6,7,'VBAAAA','APAAAA','OOOOxx'
+195,391,1,3,5,15,5,95,195,195,195,10,11,'NHAAAA','BPAAAA','VVVVxx'
+197,392,1,1,7,17,7,97,197,197,197,14,15,'PHAAAA','CPAAAA','AAAAxx'
+755,393,1,3,5,15,5,55,155,255,755,10,11,'BDAAAA','DPAAAA','HHHHxx'
+42,394,0,2,2,2,2,42,42,42,42,4,5,'QBAAAA','EPAAAA','OOOOxx'
+897,395,1,1,7,17,7,97,97,397,897,14,15,'NIAAAA','FPAAAA','VVVVxx'
+309,396,1,1,9,9,9,9,109,309,309,18,19,'XLAAAA','GPAAAA','AAAAxx'
+724,397,0,0,4,4,4,24,124,224,724,8,9,'WBAAAA','HPAAAA','HHHHxx'
+474,398,0,2,4,14,4,74,74,474,474,8,9,'GSAAAA','IPAAAA','OOOOxx'
+345,399,1,1,5,5,5,45,145,345,345,10,11,'HNAAAA','JPAAAA','VVVVxx'
+678,400,0,2,8,18,8,78,78,178,678,16,17,'CAAAAA','KPAAAA','AAAAxx'
+757,401,1,1,7,17,7,57,157,257,757,14,15,'DDAAAA','LPAAAA','HHHHxx'
+600,402,0,0,0,0,0,0,0,100,600,0,1,'CXAAAA','MPAAAA','OOOOxx'
+184,403,0,0,4,4,4,84,184,184,184,8,9,'CHAAAA','NPAAAA','VVVVxx'
+155,404,1,3,5,15,5,55,155,155,155,10,11,'ZFAAAA','OPAAAA','AAAAxx'
+136,405,0,0,6,16,6,36,136,136,136,12,13,'GFAAAA','PPAAAA','HHHHxx'
+889,406,1,1,9,9,9,89,89,389,889,18,19,'FIAAAA','QPAAAA','OOOOxx'
+95,407,1,3,5,15,5,95,95,95,95,10,11,'RDAAAA','RPAAAA','VVVVxx'
+549,408,1,1,9,9,9,49,149,49,549,18,19,'DVAAAA','SPAAAA','AAAAxx'
+81,409,1,1,1,1,1,81,81,81,81,2,3,'DDAAAA','TPAAAA','HHHHxx'
+679,410,1,3,9,19,9,79,79,179,679,18,19,'DAAAAA','UPAAAA','OOOOxx'
+27,411,1,3,7,7,7,27,27,27,27,14,15,'BBAAAA','VPAAAA','VVVVxx'
+748,412,0,0,8,8,8,48,148,248,748,16,17,'UCAAAA','WPAAAA','AAAAxx'
+107,413,1,3,7,7,7,7,107,107,107,14,15,'DEAAAA','XPAAAA','HHHHxx'
+870,414,0,2,0,10,0,70,70,370,870,0,1,'MHAAAA','YPAAAA','OOOOxx'
+848,415,0,0,8,8,8,48,48,348,848,16,17,'QGAAAA','ZPAAAA','VVVVxx'
+764,416,0,0,4,4,4,64,164,264,764,8,9,'KDAAAA','AQAAAA','AAAAxx'
+535,417,1,3,5,15,5,35,135,35,535,10,11,'PUAAAA','BQAAAA','HHHHxx'
+211,418,1,3,1,11,1,11,11,211,211,2,3,'DIAAAA','CQAAAA','OOOOxx'
+625,419,1,1,5,5,5,25,25,125,625,10,11,'BYAAAA','DQAAAA','VVVVxx'
+96,420,0,0,6,16,6,96,96,96,96,12,13,'SDAAAA','EQAAAA','AAAAxx'
+828,421,0,0,8,8,8,28,28,328,828,16,17,'WFAAAA','FQAAAA','HHHHxx'
+229,422,1,1,9,9,9,29,29,229,229,18,19,'VIAAAA','GQAAAA','OOOOxx'
+602,423,0,2,2,2,2,2,2,102,602,4,5,'EXAAAA','HQAAAA','VVVVxx'
+742,424,0,2,2,2,2,42,142,242,742,4,5,'OCAAAA','IQAAAA','AAAAxx'
+451,425,1,3,1,11,1,51,51,451,451,2,3,'JRAAAA','JQAAAA','HHHHxx'
+991,426,1,3,1,11,1,91,191,491,991,2,3,'DMAAAA','KQAAAA','OOOOxx'
+301,427,1,1,1,1,1,1,101,301,301,2,3,'PLAAAA','LQAAAA','VVVVxx'
+510,428,0,2,0,10,0,10,110,10,510,0,1,'QTAAAA','MQAAAA','AAAAxx'
+299,429,1,3,9,19,9,99,99,299,299,18,19,'NLAAAA','NQAAAA','HHHHxx'
+961,430,1,1,1,1,1,61,161,461,961,2,3,'ZKAAAA','OQAAAA','OOOOxx'
+3,431,1,3,3,3,3,3,3,3,3,6,7,'DAAAAA','PQAAAA','VVVVxx'
+106,432,0,2,6,6,6,6,106,106,106,12,13,'CEAAAA','QQAAAA','AAAAxx'
+591,433,1,3,1,11,1,91,191,91,591,2,3,'TWAAAA','RQAAAA','HHHHxx'
+700,434,0,0,0,0,0,0,100,200,700,0,1,'YAAAAA','SQAAAA','OOOOxx'
+841,435,1,1,1,1,1,41,41,341,841,2,3,'JGAAAA','TQAAAA','VVVVxx'
+829,436,1,1,9,9,9,29,29,329,829,18,19,'XFAAAA','UQAAAA','AAAAxx'
+508,437,0,0,8,8,8,8,108,8,508,16,17,'OTAAAA','VQAAAA','HHHHxx'
+750,438,0,2,0,10,0,50,150,250,750,0,1,'WCAAAA','WQAAAA','OOOOxx'
+665,439,1,1,5,5,5,65,65,165,665,10,11,'PZAAAA','XQAAAA','VVVVxx'
+157,440,1,1,7,17,7,57,157,157,157,14,15,'BGAAAA','YQAAAA','AAAAxx'
+694,441,0,2,4,14,4,94,94,194,694,8,9,'SAAAAA','ZQAAAA','HHHHxx'
+176,442,0,0,6,16,6,76,176,176,176,12,13,'UGAAAA','ARAAAA','OOOOxx'
+950,443,0,2,0,10,0,50,150,450,950,0,1,'OKAAAA','BRAAAA','VVVVxx'
+970,444,0,2,0,10,0,70,170,470,970,0,1,'ILAAAA','CRAAAA','AAAAxx'
+496,445,0,0,6,16,6,96,96,496,496,12,13,'CTAAAA','DRAAAA','HHHHxx'
+429,446,1,1,9,9,9,29,29,429,429,18,19,'NQAAAA','ERAAAA','OOOOxx'
+907,447,1,3,7,7,7,7,107,407,907,14,15,'XIAAAA','FRAAAA','VVVVxx'
+72,448,0,0,2,12,2,72,72,72,72,4,5,'UCAAAA','GRAAAA','AAAAxx'
+186,449,0,2,6,6,6,86,186,186,186,12,13,'EHAAAA','HRAAAA','HHHHxx'
+713,450,1,1,3,13,3,13,113,213,713,6,7,'LBAAAA','IRAAAA','OOOOxx'
+432,451,0,0,2,12,2,32,32,432,432,4,5,'QQAAAA','JRAAAA','VVVVxx'
+735,452,1,3,5,15,5,35,135,235,735,10,11,'HCAAAA','KRAAAA','AAAAxx'
+516,453,0,0,6,16,6,16,116,16,516,12,13,'WTAAAA','LRAAAA','HHHHxx'
+964,454,0,0,4,4,4,64,164,464,964,8,9,'CLAAAA','MRAAAA','OOOOxx'
+840,455,0,0,0,0,0,40,40,340,840,0,1,'IGAAAA','NRAAAA','VVVVxx'
+550,456,0,2,0,10,0,50,150,50,550,0,1,'EVAAAA','ORAAAA','AAAAxx'
+360,457,0,0,0,0,0,60,160,360,360,0,1,'WNAAAA','PRAAAA','HHHHxx'
+827,458,1,3,7,7,7,27,27,327,827,14,15,'VFAAAA','QRAAAA','OOOOxx'
+959,459,1,3,9,19,9,59,159,459,959,18,19,'XKAAAA','RRAAAA','VVVVxx'
+454,460,0,2,4,14,4,54,54,454,454,8,9,'MRAAAA','SRAAAA','AAAAxx'
+819,461,1,3,9,19,9,19,19,319,819,18,19,'NFAAAA','TRAAAA','HHHHxx'
+745,462,1,1,5,5,5,45,145,245,745,10,11,'RCAAAA','URAAAA','OOOOxx'
+279,463,1,3,9,19,9,79,79,279,279,18,19,'TKAAAA','VRAAAA','VVVVxx'
+426,464,0,2,6,6,6,26,26,426,426,12,13,'KQAAAA','WRAAAA','AAAAxx'
+70,465,0,2,0,10,0,70,70,70,70,0,1,'SCAAAA','XRAAAA','HHHHxx'
+637,466,1,1,7,17,7,37,37,137,637,14,15,'NYAAAA','YRAAAA','OOOOxx'
+417,467,1,1,7,17,7,17,17,417,417,14,15,'BQAAAA','ZRAAAA','VVVVxx'
+586,468,0,2,6,6,6,86,186,86,586,12,13,'OWAAAA','ASAAAA','AAAAxx'
+314,469,0,2,4,14,4,14,114,314,314,8,9,'CMAAAA','BSAAAA','HHHHxx'
+101,470,1,1,1,1,1,1,101,101,101,2,3,'XDAAAA','CSAAAA','OOOOxx'
+205,471,1,1,5,5,5,5,5,205,205,10,11,'XHAAAA','DSAAAA','VVVVxx'
+969,472,1,1,9,9,9,69,169,469,969,18,19,'HLAAAA','ESAAAA','AAAAxx'
+217,473,1,1,7,17,7,17,17,217,217,14,15,'JIAAAA','FSAAAA','HHHHxx'
+281,474,1,1,1,1,1,81,81,281,281,2,3,'VKAAAA','GSAAAA','OOOOxx'
+984,475,0,0,4,4,4,84,184,484,984,8,9,'WLAAAA','HSAAAA','VVVVxx'
+366,476,0,2,6,6,6,66,166,366,366,12,13,'COAAAA','ISAAAA','AAAAxx'
+483,477,1,3,3,3,3,83,83,483,483,6,7,'PSAAAA','JSAAAA','HHHHxx'
+838,478,0,2,8,18,8,38,38,338,838,16,17,'GGAAAA','KSAAAA','OOOOxx'
+64,479,0,0,4,4,4,64,64,64,64,8,9,'MCAAAA','LSAAAA','VVVVxx'
+981,480,1,1,1,1,1,81,181,481,981,2,3,'TLAAAA','MSAAAA','AAAAxx'
+538,481,0,2,8,18,8,38,138,38,538,16,17,'SUAAAA','NSAAAA','HHHHxx'
+39,482,1,3,9,19,9,39,39,39,39,18,19,'NBAAAA','OSAAAA','OOOOxx'
+60,483,0,0,0,0,0,60,60,60,60,0,1,'ICAAAA','PSAAAA','VVVVxx'
+874,484,0,2,4,14,4,74,74,374,874,8,9,'QHAAAA','QSAAAA','AAAAxx'
+955,485,1,3,5,15,5,55,155,455,955,10,11,'TKAAAA','RSAAAA','HHHHxx'
+347,486,1,3,7,7,7,47,147,347,347,14,15,'JNAAAA','SSAAAA','OOOOxx'
+227,487,1,3,7,7,7,27,27,227,227,14,15,'TIAAAA','TSAAAA','VVVVxx'
+44,488,0,0,4,4,4,44,44,44,44,8,9,'SBAAAA','USAAAA','AAAAxx'
+446,489,0,2,6,6,6,46,46,446,446,12,13,'ERAAAA','VSAAAA','HHHHxx'
+605,490,1,1,5,5,5,5,5,105,605,10,11,'HXAAAA','WSAAAA','OOOOxx'
+570,491,0,2,0,10,0,70,170,70,570,0,1,'YVAAAA','XSAAAA','VVVVxx'
+895,492,1,3,5,15,5,95,95,395,895,10,11,'LIAAAA','YSAAAA','AAAAxx'
+760,493,0,0,0,0,0,60,160,260,760,0,1,'GDAAAA','ZSAAAA','HHHHxx'
+428,494,0,0,8,8,8,28,28,428,428,16,17,'MQAAAA','ATAAAA','OOOOxx'
+628,495,0,0,8,8,8,28,28,128,628,16,17,'EYAAAA','BTAAAA','VVVVxx'
+933,496,1,1,3,13,3,33,133,433,933,6,7,'XJAAAA','CTAAAA','AAAAxx'
+263,497,1,3,3,3,3,63,63,263,263,6,7,'DKAAAA','DTAAAA','HHHHxx'
+729,498,1,1,9,9,9,29,129,229,729,18,19,'BCAAAA','ETAAAA','OOOOxx'
+860,499,0,0,0,0,0,60,60,360,860,0,1,'CHAAAA','FTAAAA','VVVVxx'
+76,500,0,0,6,16,6,76,76,76,76,12,13,'YCAAAA','GTAAAA','AAAAxx'
+293,501,1,1,3,13,3,93,93,293,293,6,7,'HLAAAA','HTAAAA','HHHHxx'
+296,502,0,0,6,16,6,96,96,296,296,12,13,'KLAAAA','ITAAAA','OOOOxx'
+124,503,0,0,4,4,4,24,124,124,124,8,9,'UEAAAA','JTAAAA','VVVVxx'
+568,504,0,0,8,8,8,68,168,68,568,16,17,'WVAAAA','KTAAAA','AAAAxx'
+337,505,1,1,7,17,7,37,137,337,337,14,15,'ZMAAAA','LTAAAA','HHHHxx'
+464,506,0,0,4,4,4,64,64,464,464,8,9,'WRAAAA','MTAAAA','OOOOxx'
+582,507,0,2,2,2,2,82,182,82,582,4,5,'KWAAAA','NTAAAA','VVVVxx'
+207,508,1,3,7,7,7,7,7,207,207,14,15,'ZHAAAA','OTAAAA','AAAAxx'
+518,509,0,2,8,18,8,18,118,18,518,16,17,'YTAAAA','PTAAAA','HHHHxx'
+513,510,1,1,3,13,3,13,113,13,513,6,7,'TTAAAA','QTAAAA','OOOOxx'
+127,511,1,3,7,7,7,27,127,127,127,14,15,'XEAAAA','RTAAAA','VVVVxx'
+396,512,0,0,6,16,6,96,196,396,396,12,13,'GPAAAA','STAAAA','AAAAxx'
+781,513,1,1,1,1,1,81,181,281,781,2,3,'BEAAAA','TTAAAA','HHHHxx'
+233,514,1,1,3,13,3,33,33,233,233,6,7,'ZIAAAA','UTAAAA','OOOOxx'
+709,515,1,1,9,9,9,9,109,209,709,18,19,'HBAAAA','VTAAAA','VVVVxx'
+325,516,1,1,5,5,5,25,125,325,325,10,11,'NMAAAA','WTAAAA','AAAAxx'
+143,517,1,3,3,3,3,43,143,143,143,6,7,'NFAAAA','XTAAAA','HHHHxx'
+824,518,0,0,4,4,4,24,24,324,824,8,9,'SFAAAA','YTAAAA','OOOOxx'
+122,519,0,2,2,2,2,22,122,122,122,4,5,'SEAAAA','ZTAAAA','VVVVxx'
+10,520,0,2,0,10,0,10,10,10,10,0,1,'KAAAAA','AUAAAA','AAAAxx'
+41,521,1,1,1,1,1,41,41,41,41,2,3,'PBAAAA','BUAAAA','HHHHxx'
+618,522,0,2,8,18,8,18,18,118,618,16,17,'UXAAAA','CUAAAA','OOOOxx'
+161,523,1,1,1,1,1,61,161,161,161,2,3,'FGAAAA','DUAAAA','VVVVxx'
+801,524,1,1,1,1,1,1,1,301,801,2,3,'VEAAAA','EUAAAA','AAAAxx'
+768,525,0,0,8,8,8,68,168,268,768,16,17,'ODAAAA','FUAAAA','HHHHxx'
+642,526,0,2,2,2,2,42,42,142,642,4,5,'SYAAAA','GUAAAA','OOOOxx'
+803,527,1,3,3,3,3,3,3,303,803,6,7,'XEAAAA','HUAAAA','VVVVxx'
+317,528,1,1,7,17,7,17,117,317,317,14,15,'FMAAAA','IUAAAA','AAAAxx'
+938,529,0,2,8,18,8,38,138,438,938,16,17,'CKAAAA','JUAAAA','HHHHxx'
+649,530,1,1,9,9,9,49,49,149,649,18,19,'ZYAAAA','KUAAAA','OOOOxx'
+738,531,0,2,8,18,8,38,138,238,738,16,17,'KCAAAA','LUAAAA','VVVVxx'
+344,532,0,0,4,4,4,44,144,344,344,8,9,'GNAAAA','MUAAAA','AAAAxx'
+399,533,1,3,9,19,9,99,199,399,399,18,19,'JPAAAA','NUAAAA','HHHHxx'
+609,534,1,1,9,9,9,9,9,109,609,18,19,'LXAAAA','OUAAAA','OOOOxx'
+677,535,1,1,7,17,7,77,77,177,677,14,15,'BAAAAA','PUAAAA','VVVVxx'
+478,536,0,2,8,18,8,78,78,478,478,16,17,'KSAAAA','QUAAAA','AAAAxx'
+452,537,0,0,2,12,2,52,52,452,452,4,5,'KRAAAA','RUAAAA','HHHHxx'
+261,538,1,1,1,1,1,61,61,261,261,2,3,'BKAAAA','SUAAAA','OOOOxx'
+449,539,1,1,9,9,9,49,49,449,449,18,19,'HRAAAA','TUAAAA','VVVVxx'
+433,540,1,1,3,13,3,33,33,433,433,6,7,'RQAAAA','UUAAAA','AAAAxx'
+5,541,1,1,5,5,5,5,5,5,5,10,11,'FAAAAA','VUAAAA','HHHHxx'
+664,542,0,0,4,4,4,64,64,164,664,8,9,'OZAAAA','WUAAAA','OOOOxx'
+887,543,1,3,7,7,7,87,87,387,887,14,15,'DIAAAA','XUAAAA','VVVVxx'
+546,544,0,2,6,6,6,46,146,46,546,12,13,'AVAAAA','YUAAAA','AAAAxx'
+253,545,1,1,3,13,3,53,53,253,253,6,7,'TJAAAA','ZUAAAA','HHHHxx'
+235,546,1,3,5,15,5,35,35,235,235,10,11,'BJAAAA','AVAAAA','OOOOxx'
+258,547,0,2,8,18,8,58,58,258,258,16,17,'YJAAAA','BVAAAA','VVVVxx'
+621,548,1,1,1,1,1,21,21,121,621,2,3,'XXAAAA','CVAAAA','AAAAxx'
+998,549,0,2,8,18,8,98,198,498,998,16,17,'KMAAAA','DVAAAA','HHHHxx'
+236,550,0,0,6,16,6,36,36,236,236,12,13,'CJAAAA','EVAAAA','OOOOxx'
+537,551,1,1,7,17,7,37,137,37,537,14,15,'RUAAAA','FVAAAA','VVVVxx'
+769,552,1,1,9,9,9,69,169,269,769,18,19,'PDAAAA','GVAAAA','AAAAxx'
+921,553,1,1,1,1,1,21,121,421,921,2,3,'LJAAAA','HVAAAA','HHHHxx'
+951,554,1,3,1,11,1,51,151,451,951,2,3,'PKAAAA','IVAAAA','OOOOxx'
+240,555,0,0,0,0,0,40,40,240,240,0,1,'GJAAAA','JVAAAA','VVVVxx'
+644,556,0,0,4,4,4,44,44,144,644,8,9,'UYAAAA','KVAAAA','AAAAxx'
+352,557,0,0,2,12,2,52,152,352,352,4,5,'ONAAAA','LVAAAA','HHHHxx'
+613,558,1,1,3,13,3,13,13,113,613,6,7,'PXAAAA','MVAAAA','OOOOxx'
+784,559,0,0,4,4,4,84,184,284,784,8,9,'EEAAAA','NVAAAA','VVVVxx'
+61,560,1,1,1,1,1,61,61,61,61,2,3,'JCAAAA','OVAAAA','AAAAxx'
+144,561,0,0,4,4,4,44,144,144,144,8,9,'OFAAAA','PVAAAA','HHHHxx'
+94,562,0,2,4,14,4,94,94,94,94,8,9,'QDAAAA','QVAAAA','OOOOxx'
+270,563,0,2,0,10,0,70,70,270,270,0,1,'KKAAAA','RVAAAA','VVVVxx'
+942,564,0,2,2,2,2,42,142,442,942,4,5,'GKAAAA','SVAAAA','AAAAxx'
+756,565,0,0,6,16,6,56,156,256,756,12,13,'CDAAAA','TVAAAA','HHHHxx'
+321,566,1,1,1,1,1,21,121,321,321,2,3,'JMAAAA','UVAAAA','OOOOxx'
+36,567,0,0,6,16,6,36,36,36,36,12,13,'KBAAAA','VVAAAA','VVVVxx'
+232,568,0,0,2,12,2,32,32,232,232,4,5,'YIAAAA','WVAAAA','AAAAxx'
+430,569,0,2,0,10,0,30,30,430,430,0,1,'OQAAAA','XVAAAA','HHHHxx'
+177,570,1,1,7,17,7,77,177,177,177,14,15,'VGAAAA','YVAAAA','OOOOxx'
+220,571,0,0,0,0,0,20,20,220,220,0,1,'MIAAAA','ZVAAAA','VVVVxx'
+109,572,1,1,9,9,9,9,109,109,109,18,19,'FEAAAA','AWAAAA','AAAAxx'
+419,573,1,3,9,19,9,19,19,419,419,18,19,'DQAAAA','BWAAAA','HHHHxx'
+135,574,1,3,5,15,5,35,135,135,135,10,11,'FFAAAA','CWAAAA','OOOOxx'
+610,575,0,2,0,10,0,10,10,110,610,0,1,'MXAAAA','DWAAAA','VVVVxx'
+956,576,0,0,6,16,6,56,156,456,956,12,13,'UKAAAA','EWAAAA','AAAAxx'
+626,577,0,2,6,6,6,26,26,126,626,12,13,'CYAAAA','FWAAAA','HHHHxx'
+375,578,1,3,5,15,5,75,175,375,375,10,11,'LOAAAA','GWAAAA','OOOOxx'
+976,579,0,0,6,16,6,76,176,476,976,12,13,'OLAAAA','HWAAAA','VVVVxx'
+152,580,0,0,2,12,2,52,152,152,152,4,5,'WFAAAA','IWAAAA','AAAAxx'
+308,581,0,0,8,8,8,8,108,308,308,16,17,'WLAAAA','JWAAAA','HHHHxx'
+445,582,1,1,5,5,5,45,45,445,445,10,11,'DRAAAA','KWAAAA','OOOOxx'
+326,583,0,2,6,6,6,26,126,326,326,12,13,'OMAAAA','LWAAAA','VVVVxx'
+422,584,0,2,2,2,2,22,22,422,422,4,5,'GQAAAA','MWAAAA','AAAAxx'
+972,585,0,0,2,12,2,72,172,472,972,4,5,'KLAAAA','NWAAAA','HHHHxx'
+45,586,1,1,5,5,5,45,45,45,45,10,11,'TBAAAA','OWAAAA','OOOOxx'
+725,587,1,1,5,5,5,25,125,225,725,10,11,'XBAAAA','PWAAAA','VVVVxx'
+753,588,1,1,3,13,3,53,153,253,753,6,7,'ZCAAAA','QWAAAA','AAAAxx'
+493,589,1,1,3,13,3,93,93,493,493,6,7,'ZSAAAA','RWAAAA','HHHHxx'
+601,590,1,1,1,1,1,1,1,101,601,2,3,'DXAAAA','SWAAAA','OOOOxx'
+463,591,1,3,3,3,3,63,63,463,463,6,7,'VRAAAA','TWAAAA','VVVVxx'
+303,592,1,3,3,3,3,3,103,303,303,6,7,'RLAAAA','UWAAAA','AAAAxx'
+59,593,1,3,9,19,9,59,59,59,59,18,19,'HCAAAA','VWAAAA','HHHHxx'
+595,594,1,3,5,15,5,95,195,95,595,10,11,'XWAAAA','WWAAAA','OOOOxx'
+807,595,1,3,7,7,7,7,7,307,807,14,15,'BFAAAA','XWAAAA','VVVVxx'
+424,596,0,0,4,4,4,24,24,424,424,8,9,'IQAAAA','YWAAAA','AAAAxx'
+521,597,1,1,1,1,1,21,121,21,521,2,3,'BUAAAA','ZWAAAA','HHHHxx'
+341,598,1,1,1,1,1,41,141,341,341,2,3,'DNAAAA','AXAAAA','OOOOxx'
+571,599,1,3,1,11,1,71,171,71,571,2,3,'ZVAAAA','BXAAAA','VVVVxx'
+165,600,1,1,5,5,5,65,165,165,165,10,11,'JGAAAA','CXAAAA','AAAAxx'
+908,601,0,0,8,8,8,8,108,408,908,16,17,'YIAAAA','DXAAAA','HHHHxx'
+351,602,1,3,1,11,1,51,151,351,351,2,3,'NNAAAA','EXAAAA','OOOOxx'
+334,603,0,2,4,14,4,34,134,334,334,8,9,'WMAAAA','FXAAAA','VVVVxx'
+636,604,0,0,6,16,6,36,36,136,636,12,13,'MYAAAA','GXAAAA','AAAAxx'
+138,605,0,2,8,18,8,38,138,138,138,16,17,'IFAAAA','HXAAAA','HHHHxx'
+438,606,0,2,8,18,8,38,38,438,438,16,17,'WQAAAA','IXAAAA','OOOOxx'
+391,607,1,3,1,11,1,91,191,391,391,2,3,'BPAAAA','JXAAAA','VVVVxx'
+395,608,1,3,5,15,5,95,195,395,395,10,11,'FPAAAA','KXAAAA','AAAAxx'
+502,609,0,2,2,2,2,2,102,2,502,4,5,'ITAAAA','LXAAAA','HHHHxx'
+85,610,1,1,5,5,5,85,85,85,85,10,11,'HDAAAA','MXAAAA','OOOOxx'
+786,611,0,2,6,6,6,86,186,286,786,12,13,'GEAAAA','NXAAAA','VVVVxx'
+619,612,1,3,9,19,9,19,19,119,619,18,19,'VXAAAA','OXAAAA','AAAAxx'
+440,613,0,0,0,0,0,40,40,440,440,0,1,'YQAAAA','PXAAAA','HHHHxx'
+949,614,1,1,9,9,9,49,149,449,949,18,19,'NKAAAA','QXAAAA','OOOOxx'
+691,615,1,3,1,11,1,91,91,191,691,2,3,'PAAAAA','RXAAAA','VVVVxx'
+348,616,0,0,8,8,8,48,148,348,348,16,17,'KNAAAA','SXAAAA','AAAAxx'
+506,617,0,2,6,6,6,6,106,6,506,12,13,'MTAAAA','TXAAAA','HHHHxx'
+192,618,0,0,2,12,2,92,192,192,192,4,5,'KHAAAA','UXAAAA','OOOOxx'
+369,619,1,1,9,9,9,69,169,369,369,18,19,'FOAAAA','VXAAAA','VVVVxx'
+311,620,1,3,1,11,1,11,111,311,311,2,3,'ZLAAAA','WXAAAA','AAAAxx'
+273,621,1,1,3,13,3,73,73,273,273,6,7,'NKAAAA','XXAAAA','HHHHxx'
+770,622,0,2,0,10,0,70,170,270,770,0,1,'QDAAAA','YXAAAA','OOOOxx'
+191,623,1,3,1,11,1,91,191,191,191,2,3,'JHAAAA','ZXAAAA','VVVVxx'
+90,624,0,2,0,10,0,90,90,90,90,0,1,'MDAAAA','AYAAAA','AAAAxx'
+163,625,1,3,3,3,3,63,163,163,163,6,7,'HGAAAA','BYAAAA','HHHHxx'
+350,626,0,2,0,10,0,50,150,350,350,0,1,'MNAAAA','CYAAAA','OOOOxx'
+55,627,1,3,5,15,5,55,55,55,55,10,11,'DCAAAA','DYAAAA','VVVVxx'
+488,628,0,0,8,8,8,88,88,488,488,16,17,'USAAAA','EYAAAA','AAAAxx'
+215,629,1,3,5,15,5,15,15,215,215,10,11,'HIAAAA','FYAAAA','HHHHxx'
+732,630,0,0,2,12,2,32,132,232,732,4,5,'ECAAAA','GYAAAA','OOOOxx'
+688,631,0,0,8,8,8,88,88,188,688,16,17,'MAAAAA','HYAAAA','VVVVxx'
+520,632,0,0,0,0,0,20,120,20,520,0,1,'AUAAAA','IYAAAA','AAAAxx'
+62,633,0,2,2,2,2,62,62,62,62,4,5,'KCAAAA','JYAAAA','HHHHxx'
+423,634,1,3,3,3,3,23,23,423,423,6,7,'HQAAAA','KYAAAA','OOOOxx'
+242,635,0,2,2,2,2,42,42,242,242,4,5,'IJAAAA','LYAAAA','VVVVxx'
+193,636,1,1,3,13,3,93,193,193,193,6,7,'LHAAAA','MYAAAA','AAAAxx'
+648,637,0,0,8,8,8,48,48,148,648,16,17,'YYAAAA','NYAAAA','HHHHxx'
+459,638,1,3,9,19,9,59,59,459,459,18,19,'RRAAAA','OYAAAA','OOOOxx'
+196,639,0,0,6,16,6,96,196,196,196,12,13,'OHAAAA','PYAAAA','VVVVxx'
+476,640,0,0,6,16,6,76,76,476,476,12,13,'ISAAAA','QYAAAA','AAAAxx'
+903,641,1,3,3,3,3,3,103,403,903,6,7,'TIAAAA','RYAAAA','HHHHxx'
+974,642,0,2,4,14,4,74,174,474,974,8,9,'MLAAAA','SYAAAA','OOOOxx'
+603,643,1,3,3,3,3,3,3,103,603,6,7,'FXAAAA','TYAAAA','VVVVxx'
+12,644,0,0,2,12,2,12,12,12,12,4,5,'MAAAAA','UYAAAA','AAAAxx'
+599,645,1,3,9,19,9,99,199,99,599,18,19,'BXAAAA','VYAAAA','HHHHxx'
+914,646,0,2,4,14,4,14,114,414,914,8,9,'EJAAAA','WYAAAA','OOOOxx'
+7,647,1,3,7,7,7,7,7,7,7,14,15,'HAAAAA','XYAAAA','VVVVxx'
+213,648,1,1,3,13,3,13,13,213,213,6,7,'FIAAAA','YYAAAA','AAAAxx'
+174,649,0,2,4,14,4,74,174,174,174,8,9,'SGAAAA','ZYAAAA','HHHHxx'
+392,650,0,0,2,12,2,92,192,392,392,4,5,'CPAAAA','AZAAAA','OOOOxx'
+674,651,0,2,4,14,4,74,74,174,674,8,9,'YZAAAA','BZAAAA','VVVVxx'
+650,652,0,2,0,10,0,50,50,150,650,0,1,'AZAAAA','CZAAAA','AAAAxx'
+8,653,0,0,8,8,8,8,8,8,8,16,17,'IAAAAA','DZAAAA','HHHHxx'
+492,654,0,0,2,12,2,92,92,492,492,4,5,'YSAAAA','EZAAAA','OOOOxx'
+322,655,0,2,2,2,2,22,122,322,322,4,5,'KMAAAA','FZAAAA','VVVVxx'
+315,656,1,3,5,15,5,15,115,315,315,10,11,'DMAAAA','GZAAAA','AAAAxx'
+380,657,0,0,0,0,0,80,180,380,380,0,1,'QOAAAA','HZAAAA','HHHHxx'
+353,658,1,1,3,13,3,53,153,353,353,6,7,'PNAAAA','IZAAAA','OOOOxx'
+892,659,0,0,2,12,2,92,92,392,892,4,5,'IIAAAA','JZAAAA','VVVVxx'
+932,660,0,0,2,12,2,32,132,432,932,4,5,'WJAAAA','KZAAAA','AAAAxx'
+993,661,1,1,3,13,3,93,193,493,993,6,7,'FMAAAA','LZAAAA','HHHHxx'
+859,662,1,3,9,19,9,59,59,359,859,18,19,'BHAAAA','MZAAAA','OOOOxx'
+806,663,0,2,6,6,6,6,6,306,806,12,13,'AFAAAA','NZAAAA','VVVVxx'
+145,664,1,1,5,5,5,45,145,145,145,10,11,'PFAAAA','OZAAAA','AAAAxx'
+373,665,1,1,3,13,3,73,173,373,373,6,7,'JOAAAA','PZAAAA','HHHHxx'
+418,666,0,2,8,18,8,18,18,418,418,16,17,'CQAAAA','QZAAAA','OOOOxx'
+865,667,1,1,5,5,5,65,65,365,865,10,11,'HHAAAA','RZAAAA','VVVVxx'
+462,668,0,2,2,2,2,62,62,462,462,4,5,'URAAAA','SZAAAA','AAAAxx'
+24,669,0,0,4,4,4,24,24,24,24,8,9,'YAAAAA','TZAAAA','HHHHxx'
+920,670,0,0,0,0,0,20,120,420,920,0,1,'KJAAAA','UZAAAA','OOOOxx'
+672,671,0,0,2,12,2,72,72,172,672,4,5,'WZAAAA','VZAAAA','VVVVxx'
+92,672,0,0,2,12,2,92,92,92,92,4,5,'ODAAAA','WZAAAA','AAAAxx'
+721,673,1,1,1,1,1,21,121,221,721,2,3,'TBAAAA','XZAAAA','HHHHxx'
+646,674,0,2,6,6,6,46,46,146,646,12,13,'WYAAAA','YZAAAA','OOOOxx'
+910,675,0,2,0,10,0,10,110,410,910,0,1,'AJAAAA','ZZAAAA','VVVVxx'
+909,676,1,1,9,9,9,9,109,409,909,18,19,'ZIAAAA','AABAAA','AAAAxx'
+630,677,0,2,0,10,0,30,30,130,630,0,1,'GYAAAA','BABAAA','HHHHxx'
+482,678,0,2,2,2,2,82,82,482,482,4,5,'OSAAAA','CABAAA','OOOOxx'
+559,679,1,3,9,19,9,59,159,59,559,18,19,'NVAAAA','DABAAA','VVVVxx'
+853,680,1,1,3,13,3,53,53,353,853,6,7,'VGAAAA','EABAAA','AAAAxx'
+141,681,1,1,1,1,1,41,141,141,141,2,3,'LFAAAA','FABAAA','HHHHxx'
+266,682,0,2,6,6,6,66,66,266,266,12,13,'GKAAAA','GABAAA','OOOOxx'
+835,683,1,3,5,15,5,35,35,335,835,10,11,'DGAAAA','HABAAA','VVVVxx'
+164,684,0,0,4,4,4,64,164,164,164,8,9,'IGAAAA','IABAAA','AAAAxx'
+629,685,1,1,9,9,9,29,29,129,629,18,19,'FYAAAA','JABAAA','HHHHxx'
+203,686,1,3,3,3,3,3,3,203,203,6,7,'VHAAAA','KABAAA','OOOOxx'
+411,687,1,3,1,11,1,11,11,411,411,2,3,'VPAAAA','LABAAA','VVVVxx'
+930,688,0,2,0,10,0,30,130,430,930,0,1,'UJAAAA','MABAAA','AAAAxx'
+435,689,1,3,5,15,5,35,35,435,435,10,11,'TQAAAA','NABAAA','HHHHxx'
+563,690,1,3,3,3,3,63,163,63,563,6,7,'RVAAAA','OABAAA','OOOOxx'
+960,691,0,0,0,0,0,60,160,460,960,0,1,'YKAAAA','PABAAA','VVVVxx'
+733,692,1,1,3,13,3,33,133,233,733,6,7,'FCAAAA','QABAAA','AAAAxx'
+967,693,1,3,7,7,7,67,167,467,967,14,15,'FLAAAA','RABAAA','HHHHxx'
+668,694,0,0,8,8,8,68,68,168,668,16,17,'SZAAAA','SABAAA','OOOOxx'
+994,695,0,2,4,14,4,94,194,494,994,8,9,'GMAAAA','TABAAA','VVVVxx'
+129,696,1,1,9,9,9,29,129,129,129,18,19,'ZEAAAA','UABAAA','AAAAxx'
+954,697,0,2,4,14,4,54,154,454,954,8,9,'SKAAAA','VABAAA','HHHHxx'
+68,698,0,0,8,8,8,68,68,68,68,16,17,'QCAAAA','WABAAA','OOOOxx'
+79,699,1,3,9,19,9,79,79,79,79,18,19,'BDAAAA','XABAAA','VVVVxx'
+121,700,1,1,1,1,1,21,121,121,121,2,3,'REAAAA','YABAAA','AAAAxx'
+740,701,0,0,0,0,0,40,140,240,740,0,1,'MCAAAA','ZABAAA','HHHHxx'
+902,702,0,2,2,2,2,2,102,402,902,4,5,'SIAAAA','ABBAAA','OOOOxx'
+695,703,1,3,5,15,5,95,95,195,695,10,11,'TAAAAA','BBBAAA','VVVVxx'
+455,704,1,3,5,15,5,55,55,455,455,10,11,'NRAAAA','CBBAAA','AAAAxx'
+89,705,1,1,9,9,9,89,89,89,89,18,19,'LDAAAA','DBBAAA','HHHHxx'
+893,706,1,1,3,13,3,93,93,393,893,6,7,'JIAAAA','EBBAAA','OOOOxx'
+202,707,0,2,2,2,2,2,2,202,202,4,5,'UHAAAA','FBBAAA','VVVVxx'
+132,708,0,0,2,12,2,32,132,132,132,4,5,'CFAAAA','GBBAAA','AAAAxx'
+782,709,0,2,2,2,2,82,182,282,782,4,5,'CEAAAA','HBBAAA','HHHHxx'
+512,710,0,0,2,12,2,12,112,12,512,4,5,'STAAAA','IBBAAA','OOOOxx'
+857,711,1,1,7,17,7,57,57,357,857,14,15,'ZGAAAA','JBBAAA','VVVVxx'
+248,712,0,0,8,8,8,48,48,248,248,16,17,'OJAAAA','KBBAAA','AAAAxx'
+858,713,0,2,8,18,8,58,58,358,858,16,17,'AHAAAA','LBBAAA','HHHHxx'
+527,714,1,3,7,7,7,27,127,27,527,14,15,'HUAAAA','MBBAAA','OOOOxx'
+450,715,0,2,0,10,0,50,50,450,450,0,1,'IRAAAA','NBBAAA','VVVVxx'
+712,716,0,0,2,12,2,12,112,212,712,4,5,'KBAAAA','OBBAAA','AAAAxx'
+153,717,1,1,3,13,3,53,153,153,153,6,7,'XFAAAA','PBBAAA','HHHHxx'
+587,718,1,3,7,7,7,87,187,87,587,14,15,'PWAAAA','QBBAAA','OOOOxx'
+593,719,1,1,3,13,3,93,193,93,593,6,7,'VWAAAA','RBBAAA','VVVVxx'
+249,720,1,1,9,9,9,49,49,249,249,18,19,'PJAAAA','SBBAAA','AAAAxx'
+128,721,0,0,8,8,8,28,128,128,128,16,17,'YEAAAA','TBBAAA','HHHHxx'
+675,722,1,3,5,15,5,75,75,175,675,10,11,'ZZAAAA','UBBAAA','OOOOxx'
+929,723,1,1,9,9,9,29,129,429,929,18,19,'TJAAAA','VBBAAA','VVVVxx'
+156,724,0,0,6,16,6,56,156,156,156,12,13,'AGAAAA','WBBAAA','AAAAxx'
+415,725,1,3,5,15,5,15,15,415,415,10,11,'ZPAAAA','XBBAAA','HHHHxx'
+28,726,0,0,8,8,8,28,28,28,28,16,17,'CBAAAA','YBBAAA','OOOOxx'
+18,727,0,2,8,18,8,18,18,18,18,16,17,'SAAAAA','ZBBAAA','VVVVxx'
+255,728,1,3,5,15,5,55,55,255,255,10,11,'VJAAAA','ACBAAA','AAAAxx'
+793,729,1,1,3,13,3,93,193,293,793,6,7,'NEAAAA','BCBAAA','HHHHxx'
+554,730,0,2,4,14,4,54,154,54,554,8,9,'IVAAAA','CCBAAA','OOOOxx'
+467,731,1,3,7,7,7,67,67,467,467,14,15,'ZRAAAA','DCBAAA','VVVVxx'
+410,732,0,2,0,10,0,10,10,410,410,0,1,'UPAAAA','ECBAAA','AAAAxx'
+651,733,1,3,1,11,1,51,51,151,651,2,3,'BZAAAA','FCBAAA','HHHHxx'
+287,734,1,3,7,7,7,87,87,287,287,14,15,'BLAAAA','GCBAAA','OOOOxx'
+640,735,0,0,0,0,0,40,40,140,640,0,1,'QYAAAA','HCBAAA','VVVVxx'
+245,736,1,1,5,5,5,45,45,245,245,10,11,'LJAAAA','ICBAAA','AAAAxx'
+21,737,1,1,1,1,1,21,21,21,21,2,3,'VAAAAA','JCBAAA','HHHHxx'
+83,738,1,3,3,3,3,83,83,83,83,6,7,'FDAAAA','KCBAAA','OOOOxx'
+228,739,0,0,8,8,8,28,28,228,228,16,17,'UIAAAA','LCBAAA','VVVVxx'
+323,740,1,3,3,3,3,23,123,323,323,6,7,'LMAAAA','MCBAAA','AAAAxx'
+594,741,0,2,4,14,4,94,194,94,594,8,9,'WWAAAA','NCBAAA','HHHHxx'
+528,742,0,0,8,8,8,28,128,28,528,16,17,'IUAAAA','OCBAAA','OOOOxx'
+276,743,0,0,6,16,6,76,76,276,276,12,13,'QKAAAA','PCBAAA','VVVVxx'
+598,744,0,2,8,18,8,98,198,98,598,16,17,'AXAAAA','QCBAAA','AAAAxx'
+635,745,1,3,5,15,5,35,35,135,635,10,11,'LYAAAA','RCBAAA','HHHHxx'
+868,746,0,0,8,8,8,68,68,368,868,16,17,'KHAAAA','SCBAAA','OOOOxx'
+290,747,0,2,0,10,0,90,90,290,290,0,1,'ELAAAA','TCBAAA','VVVVxx'
+468,748,0,0,8,8,8,68,68,468,468,16,17,'ASAAAA','UCBAAA','AAAAxx'
+689,749,1,1,9,9,9,89,89,189,689,18,19,'NAAAAA','VCBAAA','HHHHxx'
+799,750,1,3,9,19,9,99,199,299,799,18,19,'TEAAAA','WCBAAA','OOOOxx'
+210,751,0,2,0,10,0,10,10,210,210,0,1,'CIAAAA','XCBAAA','VVVVxx'
+346,752,0,2,6,6,6,46,146,346,346,12,13,'INAAAA','YCBAAA','AAAAxx'
+957,753,1,1,7,17,7,57,157,457,957,14,15,'VKAAAA','ZCBAAA','HHHHxx'
+905,754,1,1,5,5,5,5,105,405,905,10,11,'VIAAAA','ADBAAA','OOOOxx'
+523,755,1,3,3,3,3,23,123,23,523,6,7,'DUAAAA','BDBAAA','VVVVxx'
+899,756,1,3,9,19,9,99,99,399,899,18,19,'PIAAAA','CDBAAA','AAAAxx'
+867,757,1,3,7,7,7,67,67,367,867,14,15,'JHAAAA','DDBAAA','HHHHxx'
+11,758,1,3,1,11,1,11,11,11,11,2,3,'LAAAAA','EDBAAA','OOOOxx'
+320,759,0,0,0,0,0,20,120,320,320,0,1,'IMAAAA','FDBAAA','VVVVxx'
+766,760,0,2,6,6,6,66,166,266,766,12,13,'MDAAAA','GDBAAA','AAAAxx'
+84,761,0,0,4,4,4,84,84,84,84,8,9,'GDAAAA','HDBAAA','HHHHxx'
+507,762,1,3,7,7,7,7,107,7,507,14,15,'NTAAAA','IDBAAA','OOOOxx'
+471,763,1,3,1,11,1,71,71,471,471,2,3,'DSAAAA','JDBAAA','VVVVxx'
+517,764,1,1,7,17,7,17,117,17,517,14,15,'XTAAAA','KDBAAA','AAAAxx'
+234,765,0,2,4,14,4,34,34,234,234,8,9,'AJAAAA','LDBAAA','HHHHxx'
+988,766,0,0,8,8,8,88,188,488,988,16,17,'AMAAAA','MDBAAA','OOOOxx'
+473,767,1,1,3,13,3,73,73,473,473,6,7,'FSAAAA','NDBAAA','VVVVxx'
+66,768,0,2,6,6,6,66,66,66,66,12,13,'OCAAAA','ODBAAA','AAAAxx'
+530,769,0,2,0,10,0,30,130,30,530,0,1,'KUAAAA','PDBAAA','HHHHxx'
+834,770,0,2,4,14,4,34,34,334,834,8,9,'CGAAAA','QDBAAA','OOOOxx'
+894,771,0,2,4,14,4,94,94,394,894,8,9,'KIAAAA','RDBAAA','VVVVxx'
+481,772,1,1,1,1,1,81,81,481,481,2,3,'NSAAAA','SDBAAA','AAAAxx'
+280,773,0,0,0,0,0,80,80,280,280,0,1,'UKAAAA','TDBAAA','HHHHxx'
+705,774,1,1,5,5,5,5,105,205,705,10,11,'DBAAAA','UDBAAA','OOOOxx'
+218,775,0,2,8,18,8,18,18,218,218,16,17,'KIAAAA','VDBAAA','VVVVxx'
+560,776,0,0,0,0,0,60,160,60,560,0,1,'OVAAAA','WDBAAA','AAAAxx'
+123,777,1,3,3,3,3,23,123,123,123,6,7,'TEAAAA','XDBAAA','HHHHxx'
+289,778,1,1,9,9,9,89,89,289,289,18,19,'DLAAAA','YDBAAA','OOOOxx'
+189,779,1,1,9,9,9,89,189,189,189,18,19,'HHAAAA','ZDBAAA','VVVVxx'
+541,780,1,1,1,1,1,41,141,41,541,2,3,'VUAAAA','AEBAAA','AAAAxx'
+876,781,0,0,6,16,6,76,76,376,876,12,13,'SHAAAA','BEBAAA','HHHHxx'
+504,782,0,0,4,4,4,4,104,4,504,8,9,'KTAAAA','CEBAAA','OOOOxx'
+643,783,1,3,3,3,3,43,43,143,643,6,7,'TYAAAA','DEBAAA','VVVVxx'
+73,784,1,1,3,13,3,73,73,73,73,6,7,'VCAAAA','EEBAAA','AAAAxx'
+465,785,1,1,5,5,5,65,65,465,465,10,11,'XRAAAA','FEBAAA','HHHHxx'
+861,786,1,1,1,1,1,61,61,361,861,2,3,'DHAAAA','GEBAAA','OOOOxx'
+355,787,1,3,5,15,5,55,155,355,355,10,11,'RNAAAA','HEBAAA','VVVVxx'
+441,788,1,1,1,1,1,41,41,441,441,2,3,'ZQAAAA','IEBAAA','AAAAxx'
+219,789,1,3,9,19,9,19,19,219,219,18,19,'LIAAAA','JEBAAA','HHHHxx'
+839,790,1,3,9,19,9,39,39,339,839,18,19,'HGAAAA','KEBAAA','OOOOxx'
+271,791,1,3,1,11,1,71,71,271,271,2,3,'LKAAAA','LEBAAA','VVVVxx'
+212,792,0,0,2,12,2,12,12,212,212,4,5,'EIAAAA','MEBAAA','AAAAxx'
+904,793,0,0,4,4,4,4,104,404,904,8,9,'UIAAAA','NEBAAA','HHHHxx'
+244,794,0,0,4,4,4,44,44,244,244,8,9,'KJAAAA','OEBAAA','OOOOxx'
+751,795,1,3,1,11,1,51,151,251,751,2,3,'XCAAAA','PEBAAA','VVVVxx'
+944,796,0,0,4,4,4,44,144,444,944,8,9,'IKAAAA','QEBAAA','AAAAxx'
+305,797,1,1,5,5,5,5,105,305,305,10,11,'TLAAAA','REBAAA','HHHHxx'
+617,798,1,1,7,17,7,17,17,117,617,14,15,'TXAAAA','SEBAAA','OOOOxx'
+891,799,1,3,1,11,1,91,91,391,891,2,3,'HIAAAA','TEBAAA','VVVVxx'
+653,800,1,1,3,13,3,53,53,153,653,6,7,'DZAAAA','UEBAAA','AAAAxx'
+845,801,1,1,5,5,5,45,45,345,845,10,11,'NGAAAA','VEBAAA','HHHHxx'
+936,802,0,0,6,16,6,36,136,436,936,12,13,'AKAAAA','WEBAAA','OOOOxx'
+91,803,1,3,1,11,1,91,91,91,91,2,3,'NDAAAA','XEBAAA','VVVVxx'
+442,804,0,2,2,2,2,42,42,442,442,4,5,'ARAAAA','YEBAAA','AAAAxx'
+498,805,0,2,8,18,8,98,98,498,498,16,17,'ETAAAA','ZEBAAA','HHHHxx'
+987,806,1,3,7,7,7,87,187,487,987,14,15,'ZLAAAA','AFBAAA','OOOOxx'
+194,807,0,2,4,14,4,94,194,194,194,8,9,'MHAAAA','BFBAAA','VVVVxx'
+927,808,1,3,7,7,7,27,127,427,927,14,15,'RJAAAA','CFBAAA','AAAAxx'
+607,809,1,3,7,7,7,7,7,107,607,14,15,'JXAAAA','DFBAAA','HHHHxx'
+119,810,1,3,9,19,9,19,119,119,119,18,19,'PEAAAA','EFBAAA','OOOOxx'
+182,811,0,2,2,2,2,82,182,182,182,4,5,'AHAAAA','FFBAAA','VVVVxx'
+606,812,0,2,6,6,6,6,6,106,606,12,13,'IXAAAA','GFBAAA','AAAAxx'
+849,813,1,1,9,9,9,49,49,349,849,18,19,'RGAAAA','HFBAAA','HHHHxx'
+34,814,0,2,4,14,4,34,34,34,34,8,9,'IBAAAA','IFBAAA','OOOOxx'
+683,815,1,3,3,3,3,83,83,183,683,6,7,'HAAAAA','JFBAAA','VVVVxx'
+134,816,0,2,4,14,4,34,134,134,134,8,9,'EFAAAA','KFBAAA','AAAAxx'
+331,817,1,3,1,11,1,31,131,331,331,2,3,'TMAAAA','LFBAAA','HHHHxx'
+808,818,0,0,8,8,8,8,8,308,808,16,17,'CFAAAA','MFBAAA','OOOOxx'
+703,819,1,3,3,3,3,3,103,203,703,6,7,'BBAAAA','NFBAAA','VVVVxx'
+669,820,1,1,9,9,9,69,69,169,669,18,19,'TZAAAA','OFBAAA','AAAAxx'
+264,821,0,0,4,4,4,64,64,264,264,8,9,'EKAAAA','PFBAAA','HHHHxx'
+277,822,1,1,7,17,7,77,77,277,277,14,15,'RKAAAA','QFBAAA','OOOOxx'
+877,823,1,1,7,17,7,77,77,377,877,14,15,'THAAAA','RFBAAA','VVVVxx'
+783,824,1,3,3,3,3,83,183,283,783,6,7,'DEAAAA','SFBAAA','AAAAxx'
+791,825,1,3,1,11,1,91,191,291,791,2,3,'LEAAAA','TFBAAA','HHHHxx'
+171,826,1,3,1,11,1,71,171,171,171,2,3,'PGAAAA','UFBAAA','OOOOxx'
+564,827,0,0,4,4,4,64,164,64,564,8,9,'SVAAAA','VFBAAA','VVVVxx'
+230,828,0,2,0,10,0,30,30,230,230,0,1,'WIAAAA','WFBAAA','AAAAxx'
+881,829,1,1,1,1,1,81,81,381,881,2,3,'XHAAAA','XFBAAA','HHHHxx'
+890,830,0,2,0,10,0,90,90,390,890,0,1,'GIAAAA','YFBAAA','OOOOxx'
+374,831,0,2,4,14,4,74,174,374,374,8,9,'KOAAAA','ZFBAAA','VVVVxx'
+697,832,1,1,7,17,7,97,97,197,697,14,15,'VAAAAA','AGBAAA','AAAAxx'
+4,833,0,0,4,4,4,4,4,4,4,8,9,'EAAAAA','BGBAAA','HHHHxx'
+385,834,1,1,5,5,5,85,185,385,385,10,11,'VOAAAA','CGBAAA','OOOOxx'
+739,835,1,3,9,19,9,39,139,239,739,18,19,'LCAAAA','DGBAAA','VVVVxx'
+623,836,1,3,3,3,3,23,23,123,623,6,7,'ZXAAAA','EGBAAA','AAAAxx'
+547,837,1,3,7,7,7,47,147,47,547,14,15,'BVAAAA','FGBAAA','HHHHxx'
+532,838,0,0,2,12,2,32,132,32,532,4,5,'MUAAAA','GGBAAA','OOOOxx'
+383,839,1,3,3,3,3,83,183,383,383,6,7,'TOAAAA','HGBAAA','VVVVxx'
+181,840,1,1,1,1,1,81,181,181,181,2,3,'ZGAAAA','IGBAAA','AAAAxx'
+327,841,1,3,7,7,7,27,127,327,327,14,15,'PMAAAA','JGBAAA','HHHHxx'
+701,842,1,1,1,1,1,1,101,201,701,2,3,'ZAAAAA','KGBAAA','OOOOxx'
+111,843,1,3,1,11,1,11,111,111,111,2,3,'HEAAAA','LGBAAA','VVVVxx'
+977,844,1,1,7,17,7,77,177,477,977,14,15,'PLAAAA','MGBAAA','AAAAxx'
+431,845,1,3,1,11,1,31,31,431,431,2,3,'PQAAAA','NGBAAA','HHHHxx'
+456,846,0,0,6,16,6,56,56,456,456,12,13,'ORAAAA','OGBAAA','OOOOxx'
+368,847,0,0,8,8,8,68,168,368,368,16,17,'EOAAAA','PGBAAA','VVVVxx'
+32,848,0,0,2,12,2,32,32,32,32,4,5,'GBAAAA','QGBAAA','AAAAxx'
+125,849,1,1,5,5,5,25,125,125,125,10,11,'VEAAAA','RGBAAA','HHHHxx'
+847,850,1,3,7,7,7,47,47,347,847,14,15,'PGAAAA','SGBAAA','OOOOxx'
+485,851,1,1,5,5,5,85,85,485,485,10,11,'RSAAAA','TGBAAA','VVVVxx'
+387,852,1,3,7,7,7,87,187,387,387,14,15,'XOAAAA','UGBAAA','AAAAxx'
+288,853,0,0,8,8,8,88,88,288,288,16,17,'CLAAAA','VGBAAA','HHHHxx'
+919,854,1,3,9,19,9,19,119,419,919,18,19,'JJAAAA','WGBAAA','OOOOxx'
+393,855,1,1,3,13,3,93,193,393,393,6,7,'DPAAAA','XGBAAA','VVVVxx'
+953,856,1,1,3,13,3,53,153,453,953,6,7,'RKAAAA','YGBAAA','AAAAxx'
+798,857,0,2,8,18,8,98,198,298,798,16,17,'SEAAAA','ZGBAAA','HHHHxx'
+940,858,0,0,0,0,0,40,140,440,940,0,1,'EKAAAA','AHBAAA','OOOOxx'
+198,859,0,2,8,18,8,98,198,198,198,16,17,'QHAAAA','BHBAAA','VVVVxx'
+25,860,1,1,5,5,5,25,25,25,25,10,11,'ZAAAAA','CHBAAA','AAAAxx'
+190,861,0,2,0,10,0,90,190,190,190,0,1,'IHAAAA','DHBAAA','HHHHxx'
+820,862,0,0,0,0,0,20,20,320,820,0,1,'OFAAAA','EHBAAA','OOOOxx'
+15,863,1,3,5,15,5,15,15,15,15,10,11,'PAAAAA','FHBAAA','VVVVxx'
+427,864,1,3,7,7,7,27,27,427,427,14,15,'LQAAAA','GHBAAA','AAAAxx'
+349,865,1,1,9,9,9,49,149,349,349,18,19,'LNAAAA','HHBAAA','HHHHxx'
+785,866,1,1,5,5,5,85,185,285,785,10,11,'FEAAAA','IHBAAA','OOOOxx'
+340,867,0,0,0,0,0,40,140,340,340,0,1,'CNAAAA','JHBAAA','VVVVxx'
+292,868,0,0,2,12,2,92,92,292,292,4,5,'GLAAAA','KHBAAA','AAAAxx'
+17,869,1,1,7,17,7,17,17,17,17,14,15,'RAAAAA','LHBAAA','HHHHxx'
+985,870,1,1,5,5,5,85,185,485,985,10,11,'XLAAAA','MHBAAA','OOOOxx'
+645,871,1,1,5,5,5,45,45,145,645,10,11,'VYAAAA','NHBAAA','VVVVxx'
+631,872,1,3,1,11,1,31,31,131,631,2,3,'HYAAAA','OHBAAA','AAAAxx'
+761,873,1,1,1,1,1,61,161,261,761,2,3,'HDAAAA','PHBAAA','HHHHxx'
+707,874,1,3,7,7,7,7,107,207,707,14,15,'FBAAAA','QHBAAA','OOOOxx'
+776,875,0,0,6,16,6,76,176,276,776,12,13,'WDAAAA','RHBAAA','VVVVxx'
+856,876,0,0,6,16,6,56,56,356,856,12,13,'YGAAAA','SHBAAA','AAAAxx'
+978,877,0,2,8,18,8,78,178,478,978,16,17,'QLAAAA','THBAAA','HHHHxx'
+710,878,0,2,0,10,0,10,110,210,710,0,1,'IBAAAA','UHBAAA','OOOOxx'
+604,879,0,0,4,4,4,4,4,104,604,8,9,'GXAAAA','VHBAAA','VVVVxx'
+291,880,1,3,1,11,1,91,91,291,291,2,3,'FLAAAA','WHBAAA','AAAAxx'
+747,881,1,3,7,7,7,47,147,247,747,14,15,'TCAAAA','XHBAAA','HHHHxx'
+837,882,1,1,7,17,7,37,37,337,837,14,15,'FGAAAA','YHBAAA','OOOOxx'
+722,883,0,2,2,2,2,22,122,222,722,4,5,'UBAAAA','ZHBAAA','VVVVxx'
+925,884,1,1,5,5,5,25,125,425,925,10,11,'PJAAAA','AIBAAA','AAAAxx'
+49,885,1,1,9,9,9,49,49,49,49,18,19,'XBAAAA','BIBAAA','HHHHxx'
+832,886,0,0,2,12,2,32,32,332,832,4,5,'AGAAAA','CIBAAA','OOOOxx'
+336,887,0,0,6,16,6,36,136,336,336,12,13,'YMAAAA','DIBAAA','VVVVxx'
+185,888,1,1,5,5,5,85,185,185,185,10,11,'DHAAAA','EIBAAA','AAAAxx'
+434,889,0,2,4,14,4,34,34,434,434,8,9,'SQAAAA','FIBAAA','HHHHxx'
+284,890,0,0,4,4,4,84,84,284,284,8,9,'YKAAAA','GIBAAA','OOOOxx'
+812,891,0,0,2,12,2,12,12,312,812,4,5,'GFAAAA','HIBAAA','VVVVxx'
+810,892,0,2,0,10,0,10,10,310,810,0,1,'EFAAAA','IIBAAA','AAAAxx'
+252,893,0,0,2,12,2,52,52,252,252,4,5,'SJAAAA','JIBAAA','HHHHxx'
+965,894,1,1,5,5,5,65,165,465,965,10,11,'DLAAAA','KIBAAA','OOOOxx'
+110,895,0,2,0,10,0,10,110,110,110,0,1,'GEAAAA','LIBAAA','VVVVxx'
+698,896,0,2,8,18,8,98,98,198,698,16,17,'WAAAAA','MIBAAA','AAAAxx'
+283,897,1,3,3,3,3,83,83,283,283,6,7,'XKAAAA','NIBAAA','HHHHxx'
+533,898,1,1,3,13,3,33,133,33,533,6,7,'NUAAAA','OIBAAA','OOOOxx'
+662,899,0,2,2,2,2,62,62,162,662,4,5,'MZAAAA','PIBAAA','VVVVxx'
+329,900,1,1,9,9,9,29,129,329,329,18,19,'RMAAAA','QIBAAA','AAAAxx'
+250,901,0,2,0,10,0,50,50,250,250,0,1,'QJAAAA','RIBAAA','HHHHxx'
+407,902,1,3,7,7,7,7,7,407,407,14,15,'RPAAAA','SIBAAA','OOOOxx'
+823,903,1,3,3,3,3,23,23,323,823,6,7,'RFAAAA','TIBAAA','VVVVxx'
+852,904,0,0,2,12,2,52,52,352,852,4,5,'UGAAAA','UIBAAA','AAAAxx'
+871,905,1,3,1,11,1,71,71,371,871,2,3,'NHAAAA','VIBAAA','HHHHxx'
+118,906,0,2,8,18,8,18,118,118,118,16,17,'OEAAAA','WIBAAA','OOOOxx'
+912,907,0,0,2,12,2,12,112,412,912,4,5,'CJAAAA','XIBAAA','VVVVxx'
+458,908,0,2,8,18,8,58,58,458,458,16,17,'QRAAAA','YIBAAA','AAAAxx'
+926,909,0,2,6,6,6,26,126,426,926,12,13,'QJAAAA','ZIBAAA','HHHHxx'
+328,910,0,0,8,8,8,28,128,328,328,16,17,'QMAAAA','AJBAAA','OOOOxx'
+980,911,0,0,0,0,0,80,180,480,980,0,1,'SLAAAA','BJBAAA','VVVVxx'
+259,912,1,3,9,19,9,59,59,259,259,18,19,'ZJAAAA','CJBAAA','AAAAxx'
+900,913,0,0,0,0,0,0,100,400,900,0,1,'QIAAAA','DJBAAA','HHHHxx'
+137,914,1,1,7,17,7,37,137,137,137,14,15,'HFAAAA','EJBAAA','OOOOxx'
+159,915,1,3,9,19,9,59,159,159,159,18,19,'DGAAAA','FJBAAA','VVVVxx'
+243,916,1,3,3,3,3,43,43,243,243,6,7,'JJAAAA','GJBAAA','AAAAxx'
+472,917,0,0,2,12,2,72,72,472,472,4,5,'ESAAAA','HJBAAA','HHHHxx'
+796,918,0,0,6,16,6,96,196,296,796,12,13,'QEAAAA','IJBAAA','OOOOxx'
+382,919,0,2,2,2,2,82,182,382,382,4,5,'SOAAAA','JJBAAA','VVVVxx'
+911,920,1,3,1,11,1,11,111,411,911,2,3,'BJAAAA','KJBAAA','AAAAxx'
+179,921,1,3,9,19,9,79,179,179,179,18,19,'XGAAAA','LJBAAA','HHHHxx'
+778,922,0,2,8,18,8,78,178,278,778,16,17,'YDAAAA','MJBAAA','OOOOxx'
+405,923,1,1,5,5,5,5,5,405,405,10,11,'PPAAAA','NJBAAA','VVVVxx'
+265,924,1,1,5,5,5,65,65,265,265,10,11,'FKAAAA','OJBAAA','AAAAxx'
+556,925,0,0,6,16,6,56,156,56,556,12,13,'KVAAAA','PJBAAA','HHHHxx'
+16,926,0,0,6,16,6,16,16,16,16,12,13,'QAAAAA','QJBAAA','OOOOxx'
+706,927,0,2,6,6,6,6,106,206,706,12,13,'EBAAAA','RJBAAA','VVVVxx'
+497,928,1,1,7,17,7,97,97,497,497,14,15,'DTAAAA','SJBAAA','AAAAxx'
+708,929,0,0,8,8,8,8,108,208,708,16,17,'GBAAAA','TJBAAA','HHHHxx'
+46,930,0,2,6,6,6,46,46,46,46,12,13,'UBAAAA','UJBAAA','OOOOxx'
+901,931,1,1,1,1,1,1,101,401,901,2,3,'RIAAAA','VJBAAA','VVVVxx'
+416,932,0,0,6,16,6,16,16,416,416,12,13,'AQAAAA','WJBAAA','AAAAxx'
+307,933,1,3,7,7,7,7,107,307,307,14,15,'VLAAAA','XJBAAA','HHHHxx'
+166,934,0,2,6,6,6,66,166,166,166,12,13,'KGAAAA','YJBAAA','OOOOxx'
+178,935,0,2,8,18,8,78,178,178,178,16,17,'WGAAAA','ZJBAAA','VVVVxx'
+499,936,1,3,9,19,9,99,99,499,499,18,19,'FTAAAA','AKBAAA','AAAAxx'
+257,937,1,1,7,17,7,57,57,257,257,14,15,'XJAAAA','BKBAAA','HHHHxx'
+342,938,0,2,2,2,2,42,142,342,342,4,5,'ENAAAA','CKBAAA','OOOOxx'
+850,939,0,2,0,10,0,50,50,350,850,0,1,'SGAAAA','DKBAAA','VVVVxx'
+313,940,1,1,3,13,3,13,113,313,313,6,7,'BMAAAA','EKBAAA','AAAAxx'
+831,941,1,3,1,11,1,31,31,331,831,2,3,'ZFAAAA','FKBAAA','HHHHxx'
+57,942,1,1,7,17,7,57,57,57,57,14,15,'FCAAAA','GKBAAA','OOOOxx'
+37,943,1,1,7,17,7,37,37,37,37,14,15,'LBAAAA','HKBAAA','VVVVxx'
+511,944,1,3,1,11,1,11,111,11,511,2,3,'RTAAAA','IKBAAA','AAAAxx'
+578,945,0,2,8,18,8,78,178,78,578,16,17,'GWAAAA','JKBAAA','HHHHxx'
+100,946,0,0,0,0,0,0,100,100,100,0,1,'WDAAAA','KKBAAA','OOOOxx'
+935,947,1,3,5,15,5,35,135,435,935,10,11,'ZJAAAA','LKBAAA','VVVVxx'
+821,948,1,1,1,1,1,21,21,321,821,2,3,'PFAAAA','MKBAAA','AAAAxx'
+294,949,0,2,4,14,4,94,94,294,294,8,9,'ILAAAA','NKBAAA','HHHHxx'
+575,950,1,3,5,15,5,75,175,75,575,10,11,'DWAAAA','OKBAAA','OOOOxx'
+272,951,0,0,2,12,2,72,72,272,272,4,5,'MKAAAA','PKBAAA','VVVVxx'
+491,952,1,3,1,11,1,91,91,491,491,2,3,'XSAAAA','QKBAAA','AAAAxx'
+43,953,1,3,3,3,3,43,43,43,43,6,7,'RBAAAA','RKBAAA','HHHHxx'
+167,954,1,3,7,7,7,67,167,167,167,14,15,'LGAAAA','SKBAAA','OOOOxx'
+457,955,1,1,7,17,7,57,57,457,457,14,15,'PRAAAA','TKBAAA','VVVVxx'
+647,956,1,3,7,7,7,47,47,147,647,14,15,'XYAAAA','UKBAAA','AAAAxx'
+180,957,0,0,0,0,0,80,180,180,180,0,1,'YGAAAA','VKBAAA','HHHHxx'
+48,958,0,0,8,8,8,48,48,48,48,16,17,'WBAAAA','WKBAAA','OOOOxx'
+553,959,1,1,3,13,3,53,153,53,553,6,7,'HVAAAA','XKBAAA','VVVVxx'
+188,960,0,0,8,8,8,88,188,188,188,16,17,'GHAAAA','YKBAAA','AAAAxx'
+262,961,0,2,2,2,2,62,62,262,262,4,5,'CKAAAA','ZKBAAA','HHHHxx'
+728,962,0,0,8,8,8,28,128,228,728,16,17,'ACAAAA','ALBAAA','OOOOxx'
+581,963,1,1,1,1,1,81,181,81,581,2,3,'JWAAAA','BLBAAA','VVVVxx'
+937,964,1,1,7,17,7,37,137,437,937,14,15,'BKAAAA','CLBAAA','AAAAxx'
+370,965,0,2,0,10,0,70,170,370,370,0,1,'GOAAAA','DLBAAA','HHHHxx'
+590,966,0,2,0,10,0,90,190,90,590,0,1,'SWAAAA','ELBAAA','OOOOxx'
+421,967,1,1,1,1,1,21,21,421,421,2,3,'FQAAAA','FLBAAA','VVVVxx'
+693,968,1,1,3,13,3,93,93,193,693,6,7,'RAAAAA','GLBAAA','AAAAxx'
+906,969,0,2,6,6,6,6,106,406,906,12,13,'WIAAAA','HLBAAA','HHHHxx'
+802,970,0,2,2,2,2,2,2,302,802,4,5,'WEAAAA','ILBAAA','OOOOxx'
+38,971,0,2,8,18,8,38,38,38,38,16,17,'MBAAAA','JLBAAA','VVVVxx'
+790,972,0,2,0,10,0,90,190,290,790,0,1,'KEAAAA','KLBAAA','AAAAxx'
+726,973,0,2,6,6,6,26,126,226,726,12,13,'YBAAAA','LLBAAA','HHHHxx'
+23,974,1,3,3,3,3,23,23,23,23,6,7,'XAAAAA','MLBAAA','OOOOxx'
+641,975,1,1,1,1,1,41,41,141,641,2,3,'RYAAAA','NLBAAA','VVVVxx'
+524,976,0,0,4,4,4,24,124,24,524,8,9,'EUAAAA','OLBAAA','AAAAxx'
+169,977,1,1,9,9,9,69,169,169,169,18,19,'NGAAAA','PLBAAA','HHHHxx'
+6,978,0,2,6,6,6,6,6,6,6,12,13,'GAAAAA','QLBAAA','OOOOxx'
+943,979,1,3,3,3,3,43,143,443,943,6,7,'HKAAAA','RLBAAA','VVVVxx'
+26,980,0,2,6,6,6,26,26,26,26,12,13,'ABAAAA','SLBAAA','AAAAxx'
+469,981,1,1,9,9,9,69,69,469,469,18,19,'BSAAAA','TLBAAA','HHHHxx'
+968,982,0,0,8,8,8,68,168,468,968,16,17,'GLAAAA','ULBAAA','OOOOxx'
+947,983,1,3,7,7,7,47,147,447,947,14,15,'LKAAAA','VLBAAA','VVVVxx'
+133,984,1,1,3,13,3,33,133,133,133,6,7,'DFAAAA','WLBAAA','AAAAxx'
+52,985,0,0,2,12,2,52,52,52,52,4,5,'ACAAAA','XLBAAA','HHHHxx'
+660,986,0,0,0,0,0,60,60,160,660,0,1,'KZAAAA','YLBAAA','OOOOxx'
+780,987,0,0,0,0,0,80,180,280,780,0,1,'AEAAAA','ZLBAAA','VVVVxx'
+963,988,1,3,3,3,3,63,163,463,963,6,7,'BLAAAA','AMBAAA','AAAAxx'
+561,989,1,1,1,1,1,61,161,61,561,2,3,'PVAAAA','BMBAAA','HHHHxx'
+402,990,0,2,2,2,2,2,2,402,402,4,5,'MPAAAA','CMBAAA','OOOOxx'
+437,991,1,1,7,17,7,37,37,437,437,14,15,'VQAAAA','DMBAAA','VVVVxx'
+112,992,0,0,2,12,2,12,112,112,112,4,5,'IEAAAA','EMBAAA','AAAAxx'
+247,993,1,3,7,7,7,47,47,247,247,14,15,'NJAAAA','FMBAAA','HHHHxx'
+579,994,1,3,9,19,9,79,179,79,579,18,19,'HWAAAA','GMBAAA','OOOOxx'
+379,995,1,3,9,19,9,79,179,379,379,18,19,'POAAAA','HMBAAA','VVVVxx'
+74,996,0,2,4,14,4,74,74,74,74,8,9,'WCAAAA','IMBAAA','AAAAxx'
+744,997,0,0,4,4,4,44,144,244,744,8,9,'QCAAAA','JMBAAA','HHHHxx'
+0,998,0,0,0,0,0,0,0,0,0,0,1,'AAAAAA','KMBAAA','OOOOxx'
+278,999,0,2,8,18,8,78,78,278,278,16,17,'SKAAAA','LMBAAA','VVVVxx'
diff --git a/sql-bench/Data/Wisconsin/tenk.data b/sql-bench/Data/Wisconsin/tenk.data
new file mode 100644
index 00000000..e9d200a0
--- /dev/null
+++ b/sql-bench/Data/Wisconsin/tenk.data
@@ -0,0 +1,10000 @@
+8800,0,0,0,0,0,0,800,800,3800,8800,0,1,'MAAAAA','AAAAAA','AAAAxx'
+1891,1,1,3,1,11,91,891,1891,1891,1891,182,183,'TUAAAA','BAAAAA','HHHHxx'
+3420,2,0,0,0,0,20,420,1420,3420,3420,40,41,'OBAAAA','CAAAAA','OOOOxx'
+9850,3,0,2,0,10,50,850,1850,4850,9850,100,101,'WOAAAA','DAAAAA','VVVVxx'
+7164,4,0,0,4,4,64,164,1164,2164,7164,128,129,'OPAAAA','EAAAAA','AAAAxx'
+8009,5,1,1,9,9,9,9,9,3009,8009,18,19,'BWAAAA','FAAAAA','HHHHxx'
+5057,6,1,1,7,17,57,57,1057,57,5057,114,115,'NMAAAA','GAAAAA','OOOOxx'
+6701,7,1,1,1,1,1,701,701,1701,6701,2,3,'TXAAAA','HAAAAA','VVVVxx'
+4321,8,1,1,1,1,21,321,321,4321,4321,42,43,'FKAAAA','IAAAAA','AAAAxx'
+3043,9,1,3,3,3,43,43,1043,3043,3043,86,87,'BNAAAA','JAAAAA','HHHHxx'
+1314,10,0,2,4,14,14,314,1314,1314,1314,28,29,'OYAAAA','KAAAAA','OOOOxx'
+1504,11,0,0,4,4,4,504,1504,1504,1504,8,9,'WFAAAA','LAAAAA','VVVVxx'
+5222,12,0,2,2,2,22,222,1222,222,5222,44,45,'WSAAAA','MAAAAA','AAAAxx'
+6243,13,1,3,3,3,43,243,243,1243,6243,86,87,'DGAAAA','NAAAAA','HHHHxx'
+5471,14,1,3,1,11,71,471,1471,471,5471,142,143,'LCAAAA','OAAAAA','OOOOxx'
+5006,15,0,2,6,6,6,6,1006,6,5006,12,13,'OKAAAA','PAAAAA','VVVVxx'
+5387,16,1,3,7,7,87,387,1387,387,5387,174,175,'FZAAAA','QAAAAA','AAAAxx'
+5785,17,1,1,5,5,85,785,1785,785,5785,170,171,'NOAAAA','RAAAAA','HHHHxx'
+6621,18,1,1,1,1,21,621,621,1621,6621,42,43,'RUAAAA','SAAAAA','OOOOxx'
+6969,19,1,1,9,9,69,969,969,1969,6969,138,139,'BIAAAA','TAAAAA','VVVVxx'
+9460,20,0,0,0,0,60,460,1460,4460,9460,120,121,'WZAAAA','UAAAAA','AAAAxx'
+59,21,1,3,9,19,59,59,59,59,59,118,119,'HCAAAA','VAAAAA','HHHHxx'
+8020,22,0,0,0,0,20,20,20,3020,8020,40,41,'MWAAAA','WAAAAA','OOOOxx'
+7695,23,1,3,5,15,95,695,1695,2695,7695,190,191,'ZJAAAA','XAAAAA','VVVVxx'
+3442,24,0,2,2,2,42,442,1442,3442,3442,84,85,'KCAAAA','YAAAAA','AAAAxx'
+5119,25,1,3,9,19,19,119,1119,119,5119,38,39,'XOAAAA','ZAAAAA','HHHHxx'
+646,26,0,2,6,6,46,646,646,646,646,92,93,'WYAAAA','ABAAAA','OOOOxx'
+9605,27,1,1,5,5,5,605,1605,4605,9605,10,11,'LFAAAA','BBAAAA','VVVVxx'
+263,28,1,3,3,3,63,263,263,263,263,126,127,'DKAAAA','CBAAAA','AAAAxx'
+3269,29,1,1,9,9,69,269,1269,3269,3269,138,139,'TVAAAA','DBAAAA','HHHHxx'
+1839,30,1,3,9,19,39,839,1839,1839,1839,78,79,'TSAAAA','EBAAAA','OOOOxx'
+9144,31,0,0,4,4,44,144,1144,4144,9144,88,89,'SNAAAA','FBAAAA','VVVVxx'
+2513,32,1,1,3,13,13,513,513,2513,2513,26,27,'RSAAAA','GBAAAA','AAAAxx'
+8850,33,0,2,0,10,50,850,850,3850,8850,100,101,'KCAAAA','HBAAAA','HHHHxx'
+236,34,0,0,6,16,36,236,236,236,236,72,73,'CJAAAA','IBAAAA','OOOOxx'
+3162,35,0,2,2,2,62,162,1162,3162,3162,124,125,'QRAAAA','JBAAAA','VVVVxx'
+4380,36,0,0,0,0,80,380,380,4380,4380,160,161,'MMAAAA','KBAAAA','AAAAxx'
+8095,37,1,3,5,15,95,95,95,3095,8095,190,191,'JZAAAA','LBAAAA','HHHHxx'
+209,38,1,1,9,9,9,209,209,209,209,18,19,'BIAAAA','MBAAAA','OOOOxx'
+3055,39,1,3,5,15,55,55,1055,3055,3055,110,111,'NNAAAA','NBAAAA','VVVVxx'
+6921,40,1,1,1,1,21,921,921,1921,6921,42,43,'FGAAAA','OBAAAA','AAAAxx'
+7046,41,0,2,6,6,46,46,1046,2046,7046,92,93,'ALAAAA','PBAAAA','HHHHxx'
+7912,42,0,0,2,12,12,912,1912,2912,7912,24,25,'ISAAAA','QBAAAA','OOOOxx'
+7267,43,1,3,7,7,67,267,1267,2267,7267,134,135,'NTAAAA','RBAAAA','VVVVxx'
+3599,44,1,3,9,19,99,599,1599,3599,3599,198,199,'LIAAAA','SBAAAA','AAAAxx'
+923,45,1,3,3,3,23,923,923,923,923,46,47,'NJAAAA','TBAAAA','HHHHxx'
+1437,46,1,1,7,17,37,437,1437,1437,1437,74,75,'HDAAAA','UBAAAA','OOOOxx'
+6439,47,1,3,9,19,39,439,439,1439,6439,78,79,'RNAAAA','VBAAAA','VVVVxx'
+6989,48,1,1,9,9,89,989,989,1989,6989,178,179,'VIAAAA','WBAAAA','AAAAxx'
+8798,49,0,2,8,18,98,798,798,3798,8798,196,197,'KAAAAA','XBAAAA','HHHHxx'
+5960,50,0,0,0,0,60,960,1960,960,5960,120,121,'GVAAAA','YBAAAA','OOOOxx'
+5832,51,0,0,2,12,32,832,1832,832,5832,64,65,'IQAAAA','ZBAAAA','VVVVxx'
+6066,52,0,2,6,6,66,66,66,1066,6066,132,133,'IZAAAA','ACAAAA','AAAAxx'
+322,53,0,2,2,2,22,322,322,322,322,44,45,'KMAAAA','BCAAAA','HHHHxx'
+8321,54,1,1,1,1,21,321,321,3321,8321,42,43,'BIAAAA','CCAAAA','OOOOxx'
+734,55,0,2,4,14,34,734,734,734,734,68,69,'GCAAAA','DCAAAA','VVVVxx'
+688,56,0,0,8,8,88,688,688,688,688,176,177,'MAAAAA','ECAAAA','AAAAxx'
+4212,57,0,0,2,12,12,212,212,4212,4212,24,25,'AGAAAA','FCAAAA','HHHHxx'
+9653,58,1,1,3,13,53,653,1653,4653,9653,106,107,'HHAAAA','GCAAAA','OOOOxx'
+2677,59,1,1,7,17,77,677,677,2677,2677,154,155,'ZYAAAA','HCAAAA','VVVVxx'
+5423,60,1,3,3,3,23,423,1423,423,5423,46,47,'PAAAAA','ICAAAA','AAAAxx'
+2592,61,0,0,2,12,92,592,592,2592,2592,184,185,'SVAAAA','JCAAAA','HHHHxx'
+3233,62,1,1,3,13,33,233,1233,3233,3233,66,67,'JUAAAA','KCAAAA','OOOOxx'
+5032,63,0,0,2,12,32,32,1032,32,5032,64,65,'OLAAAA','LCAAAA','VVVVxx'
+2525,64,1,1,5,5,25,525,525,2525,2525,50,51,'DTAAAA','MCAAAA','AAAAxx'
+4450,65,0,2,0,10,50,450,450,4450,4450,100,101,'EPAAAA','NCAAAA','HHHHxx'
+5778,66,0,2,8,18,78,778,1778,778,5778,156,157,'GOAAAA','OCAAAA','OOOOxx'
+5852,67,0,0,2,12,52,852,1852,852,5852,104,105,'CRAAAA','PCAAAA','VVVVxx'
+5404,68,0,0,4,4,4,404,1404,404,5404,8,9,'WZAAAA','QCAAAA','AAAAxx'
+6223,69,1,3,3,3,23,223,223,1223,6223,46,47,'JFAAAA','RCAAAA','HHHHxx'
+6133,70,1,1,3,13,33,133,133,1133,6133,66,67,'XBAAAA','SCAAAA','OOOOxx'
+9112,71,0,0,2,12,12,112,1112,4112,9112,24,25,'MMAAAA','TCAAAA','VVVVxx'
+7575,72,1,3,5,15,75,575,1575,2575,7575,150,151,'JFAAAA','UCAAAA','AAAAxx'
+7414,73,0,2,4,14,14,414,1414,2414,7414,28,29,'EZAAAA','VCAAAA','HHHHxx'
+9741,74,1,1,1,1,41,741,1741,4741,9741,82,83,'RKAAAA','WCAAAA','OOOOxx'
+3767,75,1,3,7,7,67,767,1767,3767,3767,134,135,'XOAAAA','XCAAAA','VVVVxx'
+9372,76,0,0,2,12,72,372,1372,4372,9372,144,145,'MWAAAA','YCAAAA','AAAAxx'
+8976,77,0,0,6,16,76,976,976,3976,8976,152,153,'GHAAAA','ZCAAAA','HHHHxx'
+4071,78,1,3,1,11,71,71,71,4071,4071,142,143,'PAAAAA','ADAAAA','OOOOxx'
+1311,79,1,3,1,11,11,311,1311,1311,1311,22,23,'LYAAAA','BDAAAA','VVVVxx'
+2604,80,0,0,4,4,4,604,604,2604,2604,8,9,'EWAAAA','CDAAAA','AAAAxx'
+8840,81,0,0,0,0,40,840,840,3840,8840,80,81,'ACAAAA','DDAAAA','HHHHxx'
+567,82,1,3,7,7,67,567,567,567,567,134,135,'VVAAAA','EDAAAA','OOOOxx'
+5215,83,1,3,5,15,15,215,1215,215,5215,30,31,'PSAAAA','FDAAAA','VVVVxx'
+5474,84,0,2,4,14,74,474,1474,474,5474,148,149,'OCAAAA','GDAAAA','AAAAxx'
+3906,85,0,2,6,6,6,906,1906,3906,3906,12,13,'GUAAAA','HDAAAA','HHHHxx'
+1769,86,1,1,9,9,69,769,1769,1769,1769,138,139,'BQAAAA','IDAAAA','OOOOxx'
+1454,87,0,2,4,14,54,454,1454,1454,1454,108,109,'YDAAAA','JDAAAA','VVVVxx'
+6877,88,1,1,7,17,77,877,877,1877,6877,154,155,'NEAAAA','KDAAAA','AAAAxx'
+6501,89,1,1,1,1,1,501,501,1501,6501,2,3,'BQAAAA','LDAAAA','HHHHxx'
+934,90,0,2,4,14,34,934,934,934,934,68,69,'YJAAAA','MDAAAA','OOOOxx'
+4075,91,1,3,5,15,75,75,75,4075,4075,150,151,'TAAAAA','NDAAAA','VVVVxx'
+3180,92,0,0,0,0,80,180,1180,3180,3180,160,161,'ISAAAA','ODAAAA','AAAAxx'
+7787,93,1,3,7,7,87,787,1787,2787,7787,174,175,'NNAAAA','PDAAAA','HHHHxx'
+6401,94,1,1,1,1,1,401,401,1401,6401,2,3,'FMAAAA','QDAAAA','OOOOxx'
+4244,95,0,0,4,4,44,244,244,4244,4244,88,89,'GHAAAA','RDAAAA','VVVVxx'
+4591,96,1,3,1,11,91,591,591,4591,4591,182,183,'PUAAAA','SDAAAA','AAAAxx'
+4113,97,1,1,3,13,13,113,113,4113,4113,26,27,'FCAAAA','TDAAAA','HHHHxx'
+5925,98,1,1,5,5,25,925,1925,925,5925,50,51,'XTAAAA','UDAAAA','OOOOxx'
+1987,99,1,3,7,7,87,987,1987,1987,1987,174,175,'LYAAAA','VDAAAA','VVVVxx'
+8248,100,0,0,8,8,48,248,248,3248,8248,96,97,'GFAAAA','WDAAAA','AAAAxx'
+4151,101,1,3,1,11,51,151,151,4151,4151,102,103,'RDAAAA','XDAAAA','HHHHxx'
+8670,102,0,2,0,10,70,670,670,3670,8670,140,141,'MVAAAA','YDAAAA','OOOOxx'
+6194,103,0,2,4,14,94,194,194,1194,6194,188,189,'GEAAAA','ZDAAAA','VVVVxx'
+88,104,0,0,8,8,88,88,88,88,88,176,177,'KDAAAA','AEAAAA','AAAAxx'
+4058,105,0,2,8,18,58,58,58,4058,4058,116,117,'CAAAAA','BEAAAA','HHHHxx'
+2742,106,0,2,2,2,42,742,742,2742,2742,84,85,'MBAAAA','CEAAAA','OOOOxx'
+8275,107,1,3,5,15,75,275,275,3275,8275,150,151,'HGAAAA','DEAAAA','VVVVxx'
+4258,108,0,2,8,18,58,258,258,4258,4258,116,117,'UHAAAA','EEAAAA','AAAAxx'
+6129,109,1,1,9,9,29,129,129,1129,6129,58,59,'TBAAAA','FEAAAA','HHHHxx'
+7243,110,1,3,3,3,43,243,1243,2243,7243,86,87,'PSAAAA','GEAAAA','OOOOxx'
+2392,111,0,0,2,12,92,392,392,2392,2392,184,185,'AOAAAA','HEAAAA','VVVVxx'
+9853,112,1,1,3,13,53,853,1853,4853,9853,106,107,'ZOAAAA','IEAAAA','AAAAxx'
+6064,113,0,0,4,4,64,64,64,1064,6064,128,129,'GZAAAA','JEAAAA','HHHHxx'
+4391,114,1,3,1,11,91,391,391,4391,4391,182,183,'XMAAAA','KEAAAA','OOOOxx'
+726,115,0,2,6,6,26,726,726,726,726,52,53,'YBAAAA','LEAAAA','VVVVxx'
+6957,116,1,1,7,17,57,957,957,1957,6957,114,115,'PHAAAA','MEAAAA','AAAAxx'
+3853,117,1,1,3,13,53,853,1853,3853,3853,106,107,'FSAAAA','NEAAAA','HHHHxx'
+4524,118,0,0,4,4,24,524,524,4524,4524,48,49,'ASAAAA','OEAAAA','OOOOxx'
+5330,119,0,2,0,10,30,330,1330,330,5330,60,61,'AXAAAA','PEAAAA','VVVVxx'
+6671,120,1,3,1,11,71,671,671,1671,6671,142,143,'PWAAAA','QEAAAA','AAAAxx'
+5314,121,0,2,4,14,14,314,1314,314,5314,28,29,'KWAAAA','REAAAA','HHHHxx'
+9202,122,0,2,2,2,2,202,1202,4202,9202,4,5,'YPAAAA','SEAAAA','OOOOxx'
+4596,123,0,0,6,16,96,596,596,4596,4596,192,193,'UUAAAA','TEAAAA','VVVVxx'
+8951,124,1,3,1,11,51,951,951,3951,8951,102,103,'HGAAAA','UEAAAA','AAAAxx'
+9902,125,0,2,2,2,2,902,1902,4902,9902,4,5,'WQAAAA','VEAAAA','HHHHxx'
+1440,126,0,0,0,0,40,440,1440,1440,1440,80,81,'KDAAAA','WEAAAA','OOOOxx'
+5339,127,1,3,9,19,39,339,1339,339,5339,78,79,'JXAAAA','XEAAAA','VVVVxx'
+3371,128,1,3,1,11,71,371,1371,3371,3371,142,143,'RZAAAA','YEAAAA','AAAAxx'
+4467,129,1,3,7,7,67,467,467,4467,4467,134,135,'VPAAAA','ZEAAAA','HHHHxx'
+6216,130,0,0,6,16,16,216,216,1216,6216,32,33,'CFAAAA','AFAAAA','OOOOxx'
+5364,131,0,0,4,4,64,364,1364,364,5364,128,129,'IYAAAA','BFAAAA','VVVVxx'
+7547,132,1,3,7,7,47,547,1547,2547,7547,94,95,'HEAAAA','CFAAAA','AAAAxx'
+4338,133,0,2,8,18,38,338,338,4338,4338,76,77,'WKAAAA','DFAAAA','HHHHxx'
+3481,134,1,1,1,1,81,481,1481,3481,3481,162,163,'XDAAAA','EFAAAA','OOOOxx'
+826,135,0,2,6,6,26,826,826,826,826,52,53,'UFAAAA','FFAAAA','VVVVxx'
+3647,136,1,3,7,7,47,647,1647,3647,3647,94,95,'HKAAAA','GFAAAA','AAAAxx'
+3337,137,1,1,7,17,37,337,1337,3337,3337,74,75,'JYAAAA','HFAAAA','HHHHxx'
+3591,138,1,3,1,11,91,591,1591,3591,3591,182,183,'DIAAAA','IFAAAA','OOOOxx'
+7192,139,0,0,2,12,92,192,1192,2192,7192,184,185,'QQAAAA','JFAAAA','VVVVxx'
+1078,140,0,2,8,18,78,78,1078,1078,1078,156,157,'MPAAAA','KFAAAA','AAAAxx'
+1310,141,0,2,0,10,10,310,1310,1310,1310,20,21,'KYAAAA','LFAAAA','HHHHxx'
+9642,142,0,2,2,2,42,642,1642,4642,9642,84,85,'WGAAAA','MFAAAA','OOOOxx'
+39,143,1,3,9,19,39,39,39,39,39,78,79,'NBAAAA','NFAAAA','VVVVxx'
+8682,144,0,2,2,2,82,682,682,3682,8682,164,165,'YVAAAA','OFAAAA','AAAAxx'
+1794,145,0,2,4,14,94,794,1794,1794,1794,188,189,'ARAAAA','PFAAAA','HHHHxx'
+5630,146,0,2,0,10,30,630,1630,630,5630,60,61,'OIAAAA','QFAAAA','OOOOxx'
+6748,147,0,0,8,8,48,748,748,1748,6748,96,97,'OZAAAA','RFAAAA','VVVVxx'
+3766,148,0,2,6,6,66,766,1766,3766,3766,132,133,'WOAAAA','SFAAAA','AAAAxx'
+6403,149,1,3,3,3,3,403,403,1403,6403,6,7,'HMAAAA','TFAAAA','HHHHxx'
+175,150,1,3,5,15,75,175,175,175,175,150,151,'TGAAAA','UFAAAA','OOOOxx'
+2179,151,1,3,9,19,79,179,179,2179,2179,158,159,'VFAAAA','VFAAAA','VVVVxx'
+7897,152,1,1,7,17,97,897,1897,2897,7897,194,195,'TRAAAA','WFAAAA','AAAAxx'
+2760,153,0,0,0,0,60,760,760,2760,2760,120,121,'ECAAAA','XFAAAA','HHHHxx'
+1675,154,1,3,5,15,75,675,1675,1675,1675,150,151,'LMAAAA','YFAAAA','OOOOxx'
+2564,155,0,0,4,4,64,564,564,2564,2564,128,129,'QUAAAA','ZFAAAA','VVVVxx'
+157,156,1,1,7,17,57,157,157,157,157,114,115,'BGAAAA','AGAAAA','AAAAxx'
+8779,157,1,3,9,19,79,779,779,3779,8779,158,159,'RZAAAA','BGAAAA','HHHHxx'
+9591,158,1,3,1,11,91,591,1591,4591,9591,182,183,'XEAAAA','CGAAAA','OOOOxx'
+8732,159,0,0,2,12,32,732,732,3732,8732,64,65,'WXAAAA','DGAAAA','VVVVxx'
+139,160,1,3,9,19,39,139,139,139,139,78,79,'JFAAAA','EGAAAA','AAAAxx'
+5372,161,0,0,2,12,72,372,1372,372,5372,144,145,'QYAAAA','FGAAAA','HHHHxx'
+1278,162,0,2,8,18,78,278,1278,1278,1278,156,157,'EXAAAA','GGAAAA','OOOOxx'
+4697,163,1,1,7,17,97,697,697,4697,4697,194,195,'RYAAAA','HGAAAA','VVVVxx'
+8610,164,0,2,0,10,10,610,610,3610,8610,20,21,'ETAAAA','IGAAAA','AAAAxx'
+8180,165,0,0,0,0,80,180,180,3180,8180,160,161,'QCAAAA','JGAAAA','HHHHxx'
+2399,166,1,3,9,19,99,399,399,2399,2399,198,199,'HOAAAA','KGAAAA','OOOOxx'
+615,167,1,3,5,15,15,615,615,615,615,30,31,'RXAAAA','LGAAAA','VVVVxx'
+7629,168,1,1,9,9,29,629,1629,2629,7629,58,59,'LHAAAA','MGAAAA','AAAAxx'
+7628,169,0,0,8,8,28,628,1628,2628,7628,56,57,'KHAAAA','NGAAAA','HHHHxx'
+4659,170,1,3,9,19,59,659,659,4659,4659,118,119,'FXAAAA','OGAAAA','OOOOxx'
+5865,171,1,1,5,5,65,865,1865,865,5865,130,131,'PRAAAA','PGAAAA','VVVVxx'
+3973,172,1,1,3,13,73,973,1973,3973,3973,146,147,'VWAAAA','QGAAAA','AAAAxx'
+552,173,0,0,2,12,52,552,552,552,552,104,105,'GVAAAA','RGAAAA','HHHHxx'
+708,174,0,0,8,8,8,708,708,708,708,16,17,'GBAAAA','SGAAAA','OOOOxx'
+3550,175,0,2,0,10,50,550,1550,3550,3550,100,101,'OGAAAA','TGAAAA','VVVVxx'
+5547,176,1,3,7,7,47,547,1547,547,5547,94,95,'JFAAAA','UGAAAA','AAAAxx'
+489,177,1,1,9,9,89,489,489,489,489,178,179,'VSAAAA','VGAAAA','HHHHxx'
+3794,178,0,2,4,14,94,794,1794,3794,3794,188,189,'YPAAAA','WGAAAA','OOOOxx'
+9479,179,1,3,9,19,79,479,1479,4479,9479,158,159,'PAAAAA','XGAAAA','VVVVxx'
+6435,180,1,3,5,15,35,435,435,1435,6435,70,71,'NNAAAA','YGAAAA','AAAAxx'
+5120,181,0,0,0,0,20,120,1120,120,5120,40,41,'YOAAAA','ZGAAAA','HHHHxx'
+3615,182,1,3,5,15,15,615,1615,3615,3615,30,31,'BJAAAA','AHAAAA','OOOOxx'
+8399,183,1,3,9,19,99,399,399,3399,8399,198,199,'BLAAAA','BHAAAA','VVVVxx'
+2155,184,1,3,5,15,55,155,155,2155,2155,110,111,'XEAAAA','CHAAAA','AAAAxx'
+6690,185,0,2,0,10,90,690,690,1690,6690,180,181,'IXAAAA','DHAAAA','HHHHxx'
+1683,186,1,3,3,3,83,683,1683,1683,1683,166,167,'TMAAAA','EHAAAA','OOOOxx'
+6302,187,0,2,2,2,2,302,302,1302,6302,4,5,'KIAAAA','FHAAAA','VVVVxx'
+516,188,0,0,6,16,16,516,516,516,516,32,33,'WTAAAA','GHAAAA','AAAAxx'
+3901,189,1,1,1,1,1,901,1901,3901,3901,2,3,'BUAAAA','HHAAAA','HHHHxx'
+6938,190,0,2,8,18,38,938,938,1938,6938,76,77,'WGAAAA','IHAAAA','OOOOxx'
+7484,191,0,0,4,4,84,484,1484,2484,7484,168,169,'WBAAAA','JHAAAA','VVVVxx'
+7424,192,0,0,4,4,24,424,1424,2424,7424,48,49,'OZAAAA','KHAAAA','AAAAxx'
+9410,193,0,2,0,10,10,410,1410,4410,9410,20,21,'YXAAAA','LHAAAA','HHHHxx'
+1714,194,0,2,4,14,14,714,1714,1714,1714,28,29,'YNAAAA','MHAAAA','OOOOxx'
+8278,195,0,2,8,18,78,278,278,3278,8278,156,157,'KGAAAA','NHAAAA','VVVVxx'
+3158,196,0,2,8,18,58,158,1158,3158,3158,116,117,'MRAAAA','OHAAAA','AAAAxx'
+2511,197,1,3,1,11,11,511,511,2511,2511,22,23,'PSAAAA','PHAAAA','HHHHxx'
+2912,198,0,0,2,12,12,912,912,2912,2912,24,25,'AIAAAA','QHAAAA','OOOOxx'
+2648,199,0,0,8,8,48,648,648,2648,2648,96,97,'WXAAAA','RHAAAA','VVVVxx'
+9385,200,1,1,5,5,85,385,1385,4385,9385,170,171,'ZWAAAA','SHAAAA','AAAAxx'
+7545,201,1,1,5,5,45,545,1545,2545,7545,90,91,'FEAAAA','THAAAA','HHHHxx'
+8407,202,1,3,7,7,7,407,407,3407,8407,14,15,'JLAAAA','UHAAAA','OOOOxx'
+5893,203,1,1,3,13,93,893,1893,893,5893,186,187,'RSAAAA','VHAAAA','VVVVxx'
+7049,204,1,1,9,9,49,49,1049,2049,7049,98,99,'DLAAAA','WHAAAA','AAAAxx'
+6812,205,0,0,2,12,12,812,812,1812,6812,24,25,'ACAAAA','XHAAAA','HHHHxx'
+3649,206,1,1,9,9,49,649,1649,3649,3649,98,99,'JKAAAA','YHAAAA','OOOOxx'
+9275,207,1,3,5,15,75,275,1275,4275,9275,150,151,'TSAAAA','ZHAAAA','VVVVxx'
+1179,208,1,3,9,19,79,179,1179,1179,1179,158,159,'JTAAAA','AIAAAA','AAAAxx'
+969,209,1,1,9,9,69,969,969,969,969,138,139,'HLAAAA','BIAAAA','HHHHxx'
+7920,210,0,0,0,0,20,920,1920,2920,7920,40,41,'QSAAAA','CIAAAA','OOOOxx'
+998,211,0,2,8,18,98,998,998,998,998,196,197,'KMAAAA','DIAAAA','VVVVxx'
+3958,212,0,2,8,18,58,958,1958,3958,3958,116,117,'GWAAAA','EIAAAA','AAAAxx'
+6052,213,0,0,2,12,52,52,52,1052,6052,104,105,'UYAAAA','FIAAAA','HHHHxx'
+8791,214,1,3,1,11,91,791,791,3791,8791,182,183,'DAAAAA','GIAAAA','OOOOxx'
+5191,215,1,3,1,11,91,191,1191,191,5191,182,183,'RRAAAA','HIAAAA','VVVVxx'
+4267,216,1,3,7,7,67,267,267,4267,4267,134,135,'DIAAAA','IIAAAA','AAAAxx'
+2829,217,1,1,9,9,29,829,829,2829,2829,58,59,'VEAAAA','JIAAAA','HHHHxx'
+6396,218,0,0,6,16,96,396,396,1396,6396,192,193,'AMAAAA','KIAAAA','OOOOxx'
+9413,219,1,1,3,13,13,413,1413,4413,9413,26,27,'BYAAAA','LIAAAA','VVVVxx'
+614,220,0,2,4,14,14,614,614,614,614,28,29,'QXAAAA','MIAAAA','AAAAxx'
+4660,221,0,0,0,0,60,660,660,4660,4660,120,121,'GXAAAA','NIAAAA','HHHHxx'
+8834,222,0,2,4,14,34,834,834,3834,8834,68,69,'UBAAAA','OIAAAA','OOOOxx'
+2767,223,1,3,7,7,67,767,767,2767,2767,134,135,'LCAAAA','PIAAAA','VVVVxx'
+2444,224,0,0,4,4,44,444,444,2444,2444,88,89,'AQAAAA','QIAAAA','AAAAxx'
+4129,225,1,1,9,9,29,129,129,4129,4129,58,59,'VCAAAA','RIAAAA','HHHHxx'
+3394,226,0,2,4,14,94,394,1394,3394,3394,188,189,'OAAAAA','SIAAAA','OOOOxx'
+2705,227,1,1,5,5,5,705,705,2705,2705,10,11,'BAAAAA','TIAAAA','VVVVxx'
+8499,228,1,3,9,19,99,499,499,3499,8499,198,199,'XOAAAA','UIAAAA','AAAAxx'
+8852,229,0,0,2,12,52,852,852,3852,8852,104,105,'MCAAAA','VIAAAA','HHHHxx'
+6174,230,0,2,4,14,74,174,174,1174,6174,148,149,'MDAAAA','WIAAAA','OOOOxx'
+750,231,0,2,0,10,50,750,750,750,750,100,101,'WCAAAA','XIAAAA','VVVVxx'
+8164,232,0,0,4,4,64,164,164,3164,8164,128,129,'ACAAAA','YIAAAA','AAAAxx'
+4930,233,0,2,0,10,30,930,930,4930,4930,60,61,'QHAAAA','ZIAAAA','HHHHxx'
+9904,234,0,0,4,4,4,904,1904,4904,9904,8,9,'YQAAAA','AJAAAA','OOOOxx'
+7378,235,0,2,8,18,78,378,1378,2378,7378,156,157,'UXAAAA','BJAAAA','VVVVxx'
+2927,236,1,3,7,7,27,927,927,2927,2927,54,55,'PIAAAA','CJAAAA','AAAAxx'
+7155,237,1,3,5,15,55,155,1155,2155,7155,110,111,'FPAAAA','DJAAAA','HHHHxx'
+1302,238,0,2,2,2,2,302,1302,1302,1302,4,5,'CYAAAA','EJAAAA','OOOOxx'
+5904,239,0,0,4,4,4,904,1904,904,5904,8,9,'CTAAAA','FJAAAA','VVVVxx'
+9687,240,1,3,7,7,87,687,1687,4687,9687,174,175,'PIAAAA','GJAAAA','AAAAxx'
+3553,241,1,1,3,13,53,553,1553,3553,3553,106,107,'RGAAAA','HJAAAA','HHHHxx'
+4447,242,1,3,7,7,47,447,447,4447,4447,94,95,'BPAAAA','IJAAAA','OOOOxx'
+6878,243,0,2,8,18,78,878,878,1878,6878,156,157,'OEAAAA','JJAAAA','VVVVxx'
+9470,244,0,2,0,10,70,470,1470,4470,9470,140,141,'GAAAAA','KJAAAA','AAAAxx'
+9735,245,1,3,5,15,35,735,1735,4735,9735,70,71,'LKAAAA','LJAAAA','HHHHxx'
+5967,246,1,3,7,7,67,967,1967,967,5967,134,135,'NVAAAA','MJAAAA','OOOOxx'
+6601,247,1,1,1,1,1,601,601,1601,6601,2,3,'XTAAAA','NJAAAA','VVVVxx'
+7631,248,1,3,1,11,31,631,1631,2631,7631,62,63,'NHAAAA','OJAAAA','AAAAxx'
+3559,249,1,3,9,19,59,559,1559,3559,3559,118,119,'XGAAAA','PJAAAA','HHHHxx'
+2247,250,1,3,7,7,47,247,247,2247,2247,94,95,'LIAAAA','QJAAAA','OOOOxx'
+9649,251,1,1,9,9,49,649,1649,4649,9649,98,99,'DHAAAA','RJAAAA','VVVVxx'
+808,252,0,0,8,8,8,808,808,808,808,16,17,'CFAAAA','SJAAAA','AAAAxx'
+240,253,0,0,0,0,40,240,240,240,240,80,81,'GJAAAA','TJAAAA','HHHHxx'
+5031,254,1,3,1,11,31,31,1031,31,5031,62,63,'NLAAAA','UJAAAA','OOOOxx'
+9563,255,1,3,3,3,63,563,1563,4563,9563,126,127,'VDAAAA','VJAAAA','VVVVxx'
+5656,256,0,0,6,16,56,656,1656,656,5656,112,113,'OJAAAA','WJAAAA','AAAAxx'
+3886,257,0,2,6,6,86,886,1886,3886,3886,172,173,'MTAAAA','XJAAAA','HHHHxx'
+2431,258,1,3,1,11,31,431,431,2431,2431,62,63,'NPAAAA','YJAAAA','OOOOxx'
+5560,259,0,0,0,0,60,560,1560,560,5560,120,121,'WFAAAA','ZJAAAA','VVVVxx'
+9065,260,1,1,5,5,65,65,1065,4065,9065,130,131,'RKAAAA','AKAAAA','AAAAxx'
+8130,261,0,2,0,10,30,130,130,3130,8130,60,61,'SAAAAA','BKAAAA','HHHHxx'
+4054,262,0,2,4,14,54,54,54,4054,4054,108,109,'YZAAAA','CKAAAA','OOOOxx'
+873,263,1,1,3,13,73,873,873,873,873,146,147,'PHAAAA','DKAAAA','VVVVxx'
+3092,264,0,0,2,12,92,92,1092,3092,3092,184,185,'YOAAAA','EKAAAA','AAAAxx'
+6697,265,1,1,7,17,97,697,697,1697,6697,194,195,'PXAAAA','FKAAAA','HHHHxx'
+2452,266,0,0,2,12,52,452,452,2452,2452,104,105,'IQAAAA','GKAAAA','OOOOxx'
+7867,267,1,3,7,7,67,867,1867,2867,7867,134,135,'PQAAAA','HKAAAA','VVVVxx'
+3753,268,1,1,3,13,53,753,1753,3753,3753,106,107,'JOAAAA','IKAAAA','AAAAxx'
+7834,269,0,2,4,14,34,834,1834,2834,7834,68,69,'IPAAAA','JKAAAA','HHHHxx'
+5846,270,0,2,6,6,46,846,1846,846,5846,92,93,'WQAAAA','KKAAAA','OOOOxx'
+7604,271,0,0,4,4,4,604,1604,2604,7604,8,9,'MGAAAA','LKAAAA','VVVVxx'
+3452,272,0,0,2,12,52,452,1452,3452,3452,104,105,'UCAAAA','MKAAAA','AAAAxx'
+4788,273,0,0,8,8,88,788,788,4788,4788,176,177,'ECAAAA','NKAAAA','HHHHxx'
+8600,274,0,0,0,0,0,600,600,3600,8600,0,1,'USAAAA','OKAAAA','OOOOxx'
+8511,275,1,3,1,11,11,511,511,3511,8511,22,23,'JPAAAA','PKAAAA','VVVVxx'
+4452,276,0,0,2,12,52,452,452,4452,4452,104,105,'GPAAAA','QKAAAA','AAAAxx'
+1709,277,1,1,9,9,9,709,1709,1709,1709,18,19,'TNAAAA','RKAAAA','HHHHxx'
+3440,278,0,0,0,0,40,440,1440,3440,3440,80,81,'ICAAAA','SKAAAA','OOOOxx'
+9188,279,0,0,8,8,88,188,1188,4188,9188,176,177,'KPAAAA','TKAAAA','VVVVxx'
+3058,280,0,2,8,18,58,58,1058,3058,3058,116,117,'QNAAAA','UKAAAA','AAAAxx'
+5821,281,1,1,1,1,21,821,1821,821,5821,42,43,'XPAAAA','VKAAAA','HHHHxx'
+3428,282,0,0,8,8,28,428,1428,3428,3428,56,57,'WBAAAA','WKAAAA','OOOOxx'
+3581,283,1,1,1,1,81,581,1581,3581,3581,162,163,'THAAAA','XKAAAA','VVVVxx'
+7523,284,1,3,3,3,23,523,1523,2523,7523,46,47,'JDAAAA','YKAAAA','AAAAxx'
+3131,285,1,3,1,11,31,131,1131,3131,3131,62,63,'LQAAAA','ZKAAAA','HHHHxx'
+2404,286,0,0,4,4,4,404,404,2404,2404,8,9,'MOAAAA','ALAAAA','OOOOxx'
+5453,287,1,1,3,13,53,453,1453,453,5453,106,107,'TBAAAA','BLAAAA','VVVVxx'
+1599,288,1,3,9,19,99,599,1599,1599,1599,198,199,'NJAAAA','CLAAAA','AAAAxx'
+7081,289,1,1,1,1,81,81,1081,2081,7081,162,163,'JMAAAA','DLAAAA','HHHHxx'
+1750,290,0,2,0,10,50,750,1750,1750,1750,100,101,'IPAAAA','ELAAAA','OOOOxx'
+5085,291,1,1,5,5,85,85,1085,85,5085,170,171,'PNAAAA','FLAAAA','VVVVxx'
+9777,292,1,1,7,17,77,777,1777,4777,9777,154,155,'BMAAAA','GLAAAA','AAAAxx'
+574,293,0,2,4,14,74,574,574,574,574,148,149,'CWAAAA','HLAAAA','HHHHxx'
+5984,294,0,0,4,4,84,984,1984,984,5984,168,169,'EWAAAA','ILAAAA','OOOOxx'
+7039,295,1,3,9,19,39,39,1039,2039,7039,78,79,'TKAAAA','JLAAAA','VVVVxx'
+7143,296,1,3,3,3,43,143,1143,2143,7143,86,87,'TOAAAA','KLAAAA','AAAAxx'
+5702,297,0,2,2,2,2,702,1702,702,5702,4,5,'ILAAAA','LLAAAA','HHHHxx'
+362,298,0,2,2,2,62,362,362,362,362,124,125,'YNAAAA','MLAAAA','OOOOxx'
+6997,299,1,1,7,17,97,997,997,1997,6997,194,195,'DJAAAA','NLAAAA','VVVVxx'
+2529,300,1,1,9,9,29,529,529,2529,2529,58,59,'HTAAAA','OLAAAA','AAAAxx'
+6319,301,1,3,9,19,19,319,319,1319,6319,38,39,'BJAAAA','PLAAAA','HHHHxx'
+954,302,0,2,4,14,54,954,954,954,954,108,109,'SKAAAA','QLAAAA','OOOOxx'
+3413,303,1,1,3,13,13,413,1413,3413,3413,26,27,'HBAAAA','RLAAAA','VVVVxx'
+9081,304,1,1,1,1,81,81,1081,4081,9081,162,163,'HLAAAA','SLAAAA','AAAAxx'
+5599,305,1,3,9,19,99,599,1599,599,5599,198,199,'JHAAAA','TLAAAA','HHHHxx'
+4772,306,0,0,2,12,72,772,772,4772,4772,144,145,'OBAAAA','ULAAAA','OOOOxx'
+1124,307,0,0,4,4,24,124,1124,1124,1124,48,49,'GRAAAA','VLAAAA','VVVVxx'
+7793,308,1,1,3,13,93,793,1793,2793,7793,186,187,'TNAAAA','WLAAAA','AAAAxx'
+4201,309,1,1,1,1,1,201,201,4201,4201,2,3,'PFAAAA','XLAAAA','HHHHxx'
+7015,310,1,3,5,15,15,15,1015,2015,7015,30,31,'VJAAAA','YLAAAA','OOOOxx'
+5936,311,0,0,6,16,36,936,1936,936,5936,72,73,'IUAAAA','ZLAAAA','VVVVxx'
+4625,312,1,1,5,5,25,625,625,4625,4625,50,51,'XVAAAA','AMAAAA','AAAAxx'
+4989,313,1,1,9,9,89,989,989,4989,4989,178,179,'XJAAAA','BMAAAA','HHHHxx'
+4949,314,1,1,9,9,49,949,949,4949,4949,98,99,'JIAAAA','CMAAAA','OOOOxx'
+6273,315,1,1,3,13,73,273,273,1273,6273,146,147,'HHAAAA','DMAAAA','VVVVxx'
+4478,316,0,2,8,18,78,478,478,4478,4478,156,157,'GQAAAA','EMAAAA','AAAAxx'
+8854,317,0,2,4,14,54,854,854,3854,8854,108,109,'OCAAAA','FMAAAA','HHHHxx'
+2105,318,1,1,5,5,5,105,105,2105,2105,10,11,'ZCAAAA','GMAAAA','OOOOxx'
+8345,319,1,1,5,5,45,345,345,3345,8345,90,91,'ZIAAAA','HMAAAA','VVVVxx'
+1941,320,1,1,1,1,41,941,1941,1941,1941,82,83,'RWAAAA','IMAAAA','AAAAxx'
+1765,321,1,1,5,5,65,765,1765,1765,1765,130,131,'XPAAAA','JMAAAA','HHHHxx'
+9592,322,0,0,2,12,92,592,1592,4592,9592,184,185,'YEAAAA','KMAAAA','OOOOxx'
+1694,323,0,2,4,14,94,694,1694,1694,1694,188,189,'ENAAAA','LMAAAA','VVVVxx'
+8940,324,0,0,0,0,40,940,940,3940,8940,80,81,'WFAAAA','MMAAAA','AAAAxx'
+7264,325,0,0,4,4,64,264,1264,2264,7264,128,129,'KTAAAA','NMAAAA','HHHHxx'
+4699,326,1,3,9,19,99,699,699,4699,4699,198,199,'TYAAAA','OMAAAA','OOOOxx'
+4541,327,1,1,1,1,41,541,541,4541,4541,82,83,'RSAAAA','PMAAAA','VVVVxx'
+5768,328,0,0,8,8,68,768,1768,768,5768,136,137,'WNAAAA','QMAAAA','AAAAxx'
+6183,329,1,3,3,3,83,183,183,1183,6183,166,167,'VDAAAA','RMAAAA','HHHHxx'
+7457,330,1,1,7,17,57,457,1457,2457,7457,114,115,'VAAAAA','SMAAAA','OOOOxx'
+7317,331,1,1,7,17,17,317,1317,2317,7317,34,35,'LVAAAA','TMAAAA','VVVVxx'
+1944,332,0,0,4,4,44,944,1944,1944,1944,88,89,'UWAAAA','UMAAAA','AAAAxx'
+665,333,1,1,5,5,65,665,665,665,665,130,131,'PZAAAA','VMAAAA','HHHHxx'
+5974,334,0,2,4,14,74,974,1974,974,5974,148,149,'UVAAAA','WMAAAA','OOOOxx'
+7370,335,0,2,0,10,70,370,1370,2370,7370,140,141,'MXAAAA','XMAAAA','VVVVxx'
+9196,336,0,0,6,16,96,196,1196,4196,9196,192,193,'SPAAAA','YMAAAA','AAAAxx'
+6796,337,0,0,6,16,96,796,796,1796,6796,192,193,'KBAAAA','ZMAAAA','HHHHxx'
+6180,338,0,0,0,0,80,180,180,1180,6180,160,161,'SDAAAA','ANAAAA','OOOOxx'
+8557,339,1,1,7,17,57,557,557,3557,8557,114,115,'DRAAAA','BNAAAA','VVVVxx'
+928,340,0,0,8,8,28,928,928,928,928,56,57,'SJAAAA','CNAAAA','AAAAxx'
+6275,341,1,3,5,15,75,275,275,1275,6275,150,151,'JHAAAA','DNAAAA','HHHHxx'
+409,342,1,1,9,9,9,409,409,409,409,18,19,'TPAAAA','ENAAAA','OOOOxx'
+6442,343,0,2,2,2,42,442,442,1442,6442,84,85,'UNAAAA','FNAAAA','VVVVxx'
+5889,344,1,1,9,9,89,889,1889,889,5889,178,179,'NSAAAA','GNAAAA','AAAAxx'
+5180,345,0,0,0,0,80,180,1180,180,5180,160,161,'GRAAAA','HNAAAA','HHHHxx'
+1629,346,1,1,9,9,29,629,1629,1629,1629,58,59,'RKAAAA','INAAAA','OOOOxx'
+6088,347,0,0,8,8,88,88,88,1088,6088,176,177,'EAAAAA','JNAAAA','VVVVxx'
+5598,348,0,2,8,18,98,598,1598,598,5598,196,197,'IHAAAA','KNAAAA','AAAAxx'
+1803,349,1,3,3,3,3,803,1803,1803,1803,6,7,'JRAAAA','LNAAAA','HHHHxx'
+2330,350,0,2,0,10,30,330,330,2330,2330,60,61,'QLAAAA','MNAAAA','OOOOxx'
+5901,351,1,1,1,1,1,901,1901,901,5901,2,3,'ZSAAAA','NNAAAA','VVVVxx'
+780,352,0,0,0,0,80,780,780,780,780,160,161,'AEAAAA','ONAAAA','AAAAxx'
+7171,353,1,3,1,11,71,171,1171,2171,7171,142,143,'VPAAAA','PNAAAA','HHHHxx'
+8778,354,0,2,8,18,78,778,778,3778,8778,156,157,'QZAAAA','QNAAAA','OOOOxx'
+6622,355,0,2,2,2,22,622,622,1622,6622,44,45,'SUAAAA','RNAAAA','VVVVxx'
+9938,356,0,2,8,18,38,938,1938,4938,9938,76,77,'GSAAAA','SNAAAA','AAAAxx'
+8254,357,0,2,4,14,54,254,254,3254,8254,108,109,'MFAAAA','TNAAAA','HHHHxx'
+1951,358,1,3,1,11,51,951,1951,1951,1951,102,103,'BXAAAA','UNAAAA','OOOOxx'
+1434,359,0,2,4,14,34,434,1434,1434,1434,68,69,'EDAAAA','VNAAAA','VVVVxx'
+7539,360,1,3,9,19,39,539,1539,2539,7539,78,79,'ZDAAAA','WNAAAA','AAAAxx'
+600,361,0,0,0,0,0,600,600,600,600,0,1,'CXAAAA','XNAAAA','HHHHxx'
+3122,362,0,2,2,2,22,122,1122,3122,3122,44,45,'CQAAAA','YNAAAA','OOOOxx'
+5704,363,0,0,4,4,4,704,1704,704,5704,8,9,'KLAAAA','ZNAAAA','VVVVxx'
+6300,364,0,0,0,0,0,300,300,1300,6300,0,1,'IIAAAA','AOAAAA','AAAAxx'
+4585,365,1,1,5,5,85,585,585,4585,4585,170,171,'JUAAAA','BOAAAA','HHHHxx'
+6313,366,1,1,3,13,13,313,313,1313,6313,26,27,'VIAAAA','COAAAA','OOOOxx'
+3154,367,0,2,4,14,54,154,1154,3154,3154,108,109,'IRAAAA','DOAAAA','VVVVxx'
+642,368,0,2,2,2,42,642,642,642,642,84,85,'SYAAAA','EOAAAA','AAAAxx'
+7736,369,0,0,6,16,36,736,1736,2736,7736,72,73,'OLAAAA','FOAAAA','HHHHxx'
+5087,370,1,3,7,7,87,87,1087,87,5087,174,175,'RNAAAA','GOAAAA','OOOOxx'
+5708,371,0,0,8,8,8,708,1708,708,5708,16,17,'OLAAAA','HOAAAA','VVVVxx'
+8169,372,1,1,9,9,69,169,169,3169,8169,138,139,'FCAAAA','IOAAAA','AAAAxx'
+9768,373,0,0,8,8,68,768,1768,4768,9768,136,137,'SLAAAA','JOAAAA','HHHHxx'
+3874,374,0,2,4,14,74,874,1874,3874,3874,148,149,'ATAAAA','KOAAAA','OOOOxx'
+6831,375,1,3,1,11,31,831,831,1831,6831,62,63,'TCAAAA','LOAAAA','VVVVxx'
+18,376,0,2,8,18,18,18,18,18,18,36,37,'SAAAAA','MOAAAA','AAAAxx'
+6375,377,1,3,5,15,75,375,375,1375,6375,150,151,'FLAAAA','NOAAAA','HHHHxx'
+7106,378,0,2,6,6,6,106,1106,2106,7106,12,13,'INAAAA','OOAAAA','OOOOxx'
+5926,379,0,2,6,6,26,926,1926,926,5926,52,53,'YTAAAA','POAAAA','VVVVxx'
+4956,380,0,0,6,16,56,956,956,4956,4956,112,113,'QIAAAA','QOAAAA','AAAAxx'
+7042,381,0,2,2,2,42,42,1042,2042,7042,84,85,'WKAAAA','ROAAAA','HHHHxx'
+6043,382,1,3,3,3,43,43,43,1043,6043,86,87,'LYAAAA','SOAAAA','OOOOxx'
+2084,383,0,0,4,4,84,84,84,2084,2084,168,169,'ECAAAA','TOAAAA','VVVVxx'
+6038,384,0,2,8,18,38,38,38,1038,6038,76,77,'GYAAAA','UOAAAA','AAAAxx'
+7253,385,1,1,3,13,53,253,1253,2253,7253,106,107,'ZSAAAA','VOAAAA','HHHHxx'
+2061,386,1,1,1,1,61,61,61,2061,2061,122,123,'HBAAAA','WOAAAA','OOOOxx'
+7800,387,0,0,0,0,0,800,1800,2800,7800,0,1,'AOAAAA','XOAAAA','VVVVxx'
+4970,388,0,2,0,10,70,970,970,4970,4970,140,141,'EJAAAA','YOAAAA','AAAAxx'
+8580,389,0,0,0,0,80,580,580,3580,8580,160,161,'ASAAAA','ZOAAAA','HHHHxx'
+9173,390,1,1,3,13,73,173,1173,4173,9173,146,147,'VOAAAA','APAAAA','OOOOxx'
+8558,391,0,2,8,18,58,558,558,3558,8558,116,117,'ERAAAA','BPAAAA','VVVVxx'
+3897,392,1,1,7,17,97,897,1897,3897,3897,194,195,'XTAAAA','CPAAAA','AAAAxx'
+5069,393,1,1,9,9,69,69,1069,69,5069,138,139,'ZMAAAA','DPAAAA','HHHHxx'
+2301,394,1,1,1,1,1,301,301,2301,2301,2,3,'NKAAAA','EPAAAA','OOOOxx'
+9863,395,1,3,3,3,63,863,1863,4863,9863,126,127,'JPAAAA','FPAAAA','VVVVxx'
+5733,396,1,1,3,13,33,733,1733,733,5733,66,67,'NMAAAA','GPAAAA','AAAAxx'
+2338,397,0,2,8,18,38,338,338,2338,2338,76,77,'YLAAAA','HPAAAA','HHHHxx'
+9639,398,1,3,9,19,39,639,1639,4639,9639,78,79,'TGAAAA','IPAAAA','OOOOxx'
+1139,399,1,3,9,19,39,139,1139,1139,1139,78,79,'VRAAAA','JPAAAA','VVVVxx'
+2293,400,1,1,3,13,93,293,293,2293,2293,186,187,'FKAAAA','KPAAAA','AAAAxx'
+6125,401,1,1,5,5,25,125,125,1125,6125,50,51,'PBAAAA','LPAAAA','HHHHxx'
+5374,402,0,2,4,14,74,374,1374,374,5374,148,149,'SYAAAA','MPAAAA','OOOOxx'
+7216,403,0,0,6,16,16,216,1216,2216,7216,32,33,'ORAAAA','NPAAAA','VVVVxx'
+2285,404,1,1,5,5,85,285,285,2285,2285,170,171,'XJAAAA','OPAAAA','AAAAxx'
+2387,405,1,3,7,7,87,387,387,2387,2387,174,175,'VNAAAA','PPAAAA','HHHHxx'
+5015,406,1,3,5,15,15,15,1015,15,5015,30,31,'XKAAAA','QPAAAA','OOOOxx'
+2087,407,1,3,7,7,87,87,87,2087,2087,174,175,'HCAAAA','RPAAAA','VVVVxx'
+4938,408,0,2,8,18,38,938,938,4938,4938,76,77,'YHAAAA','SPAAAA','AAAAxx'
+3635,409,1,3,5,15,35,635,1635,3635,3635,70,71,'VJAAAA','TPAAAA','HHHHxx'
+7737,410,1,1,7,17,37,737,1737,2737,7737,74,75,'PLAAAA','UPAAAA','OOOOxx'
+8056,411,0,0,6,16,56,56,56,3056,8056,112,113,'WXAAAA','VPAAAA','VVVVxx'
+4502,412,0,2,2,2,2,502,502,4502,4502,4,5,'ERAAAA','WPAAAA','AAAAxx'
+54,413,0,2,4,14,54,54,54,54,54,108,109,'CCAAAA','XPAAAA','HHHHxx'
+3182,414,0,2,2,2,82,182,1182,3182,3182,164,165,'KSAAAA','YPAAAA','OOOOxx'
+3718,415,0,2,8,18,18,718,1718,3718,3718,36,37,'ANAAAA','ZPAAAA','VVVVxx'
+3989,416,1,1,9,9,89,989,1989,3989,3989,178,179,'LXAAAA','AQAAAA','AAAAxx'
+8028,417,0,0,8,8,28,28,28,3028,8028,56,57,'UWAAAA','BQAAAA','HHHHxx'
+1426,418,0,2,6,6,26,426,1426,1426,1426,52,53,'WCAAAA','CQAAAA','OOOOxx'
+3801,419,1,1,1,1,1,801,1801,3801,3801,2,3,'FQAAAA','DQAAAA','VVVVxx'
+241,420,1,1,1,1,41,241,241,241,241,82,83,'HJAAAA','EQAAAA','AAAAxx'
+8000,421,0,0,0,0,0,0,0,3000,8000,0,1,'SVAAAA','FQAAAA','HHHHxx'
+8357,422,1,1,7,17,57,357,357,3357,8357,114,115,'LJAAAA','GQAAAA','OOOOxx'
+7548,423,0,0,8,8,48,548,1548,2548,7548,96,97,'IEAAAA','HQAAAA','VVVVxx'
+7307,424,1,3,7,7,7,307,1307,2307,7307,14,15,'BVAAAA','IQAAAA','AAAAxx'
+2275,425,1,3,5,15,75,275,275,2275,2275,150,151,'NJAAAA','JQAAAA','HHHHxx'
+2718,426,0,2,8,18,18,718,718,2718,2718,36,37,'OAAAAA','KQAAAA','OOOOxx'
+7068,427,0,0,8,8,68,68,1068,2068,7068,136,137,'WLAAAA','LQAAAA','VVVVxx'
+3181,428,1,1,1,1,81,181,1181,3181,3181,162,163,'JSAAAA','MQAAAA','AAAAxx'
+749,429,1,1,9,9,49,749,749,749,749,98,99,'VCAAAA','NQAAAA','HHHHxx'
+5195,430,1,3,5,15,95,195,1195,195,5195,190,191,'VRAAAA','OQAAAA','OOOOxx'
+6136,431,0,0,6,16,36,136,136,1136,6136,72,73,'ACAAAA','PQAAAA','VVVVxx'
+8012,432,0,0,2,12,12,12,12,3012,8012,24,25,'EWAAAA','QQAAAA','AAAAxx'
+3957,433,1,1,7,17,57,957,1957,3957,3957,114,115,'FWAAAA','RQAAAA','HHHHxx'
+3083,434,1,3,3,3,83,83,1083,3083,3083,166,167,'POAAAA','SQAAAA','OOOOxx'
+9997,435,1,1,7,17,97,997,1997,4997,9997,194,195,'NUAAAA','TQAAAA','VVVVxx'
+3299,436,1,3,9,19,99,299,1299,3299,3299,198,199,'XWAAAA','UQAAAA','AAAAxx'
+846,437,0,2,6,6,46,846,846,846,846,92,93,'OGAAAA','VQAAAA','HHHHxx'
+2985,438,1,1,5,5,85,985,985,2985,2985,170,171,'VKAAAA','WQAAAA','OOOOxx'
+9238,439,0,2,8,18,38,238,1238,4238,9238,76,77,'IRAAAA','XQAAAA','VVVVxx'
+1403,440,1,3,3,3,3,403,1403,1403,1403,6,7,'ZBAAAA','YQAAAA','AAAAxx'
+5563,441,1,3,3,3,63,563,1563,563,5563,126,127,'ZFAAAA','ZQAAAA','HHHHxx'
+7965,442,1,1,5,5,65,965,1965,2965,7965,130,131,'JUAAAA','ARAAAA','OOOOxx'
+4512,443,0,0,2,12,12,512,512,4512,4512,24,25,'ORAAAA','BRAAAA','VVVVxx'
+9730,444,0,2,0,10,30,730,1730,4730,9730,60,61,'GKAAAA','CRAAAA','AAAAxx'
+1129,445,1,1,9,9,29,129,1129,1129,1129,58,59,'LRAAAA','DRAAAA','HHHHxx'
+2624,446,0,0,4,4,24,624,624,2624,2624,48,49,'YWAAAA','ERAAAA','OOOOxx'
+8178,447,0,2,8,18,78,178,178,3178,8178,156,157,'OCAAAA','FRAAAA','VVVVxx'
+6468,448,0,0,8,8,68,468,468,1468,6468,136,137,'UOAAAA','GRAAAA','AAAAxx'
+3027,449,1,3,7,7,27,27,1027,3027,3027,54,55,'LMAAAA','HRAAAA','HHHHxx'
+3845,450,1,1,5,5,45,845,1845,3845,3845,90,91,'XRAAAA','IRAAAA','OOOOxx'
+786,451,0,2,6,6,86,786,786,786,786,172,173,'GEAAAA','JRAAAA','VVVVxx'
+4971,452,1,3,1,11,71,971,971,4971,4971,142,143,'FJAAAA','KRAAAA','AAAAxx'
+1542,453,0,2,2,2,42,542,1542,1542,1542,84,85,'IHAAAA','LRAAAA','HHHHxx'
+7967,454,1,3,7,7,67,967,1967,2967,7967,134,135,'LUAAAA','MRAAAA','OOOOxx'
+443,455,1,3,3,3,43,443,443,443,443,86,87,'BRAAAA','NRAAAA','VVVVxx'
+7318,456,0,2,8,18,18,318,1318,2318,7318,36,37,'MVAAAA','ORAAAA','AAAAxx'
+4913,457,1,1,3,13,13,913,913,4913,4913,26,27,'ZGAAAA','PRAAAA','HHHHxx'
+9466,458,0,2,6,6,66,466,1466,4466,9466,132,133,'CAAAAA','QRAAAA','OOOOxx'
+7866,459,0,2,6,6,66,866,1866,2866,7866,132,133,'OQAAAA','RRAAAA','VVVVxx'
+784,460,0,0,4,4,84,784,784,784,784,168,169,'EEAAAA','SRAAAA','AAAAxx'
+9040,461,0,0,0,0,40,40,1040,4040,9040,80,81,'SJAAAA','TRAAAA','HHHHxx'
+3954,462,0,2,4,14,54,954,1954,3954,3954,108,109,'CWAAAA','URAAAA','OOOOxx'
+4183,463,1,3,3,3,83,183,183,4183,4183,166,167,'XEAAAA','VRAAAA','VVVVxx'
+3608,464,0,0,8,8,8,608,1608,3608,3608,16,17,'UIAAAA','WRAAAA','AAAAxx'
+7630,465,0,2,0,10,30,630,1630,2630,7630,60,61,'MHAAAA','XRAAAA','HHHHxx'
+590,466,0,2,0,10,90,590,590,590,590,180,181,'SWAAAA','YRAAAA','OOOOxx'
+3453,467,1,1,3,13,53,453,1453,3453,3453,106,107,'VCAAAA','ZRAAAA','VVVVxx'
+7757,468,1,1,7,17,57,757,1757,2757,7757,114,115,'JMAAAA','ASAAAA','AAAAxx'
+7394,469,0,2,4,14,94,394,1394,2394,7394,188,189,'KYAAAA','BSAAAA','HHHHxx'
+396,470,0,0,6,16,96,396,396,396,396,192,193,'GPAAAA','CSAAAA','OOOOxx'
+7873,471,1,1,3,13,73,873,1873,2873,7873,146,147,'VQAAAA','DSAAAA','VVVVxx'
+1553,472,1,1,3,13,53,553,1553,1553,1553,106,107,'THAAAA','ESAAAA','AAAAxx'
+598,473,0,2,8,18,98,598,598,598,598,196,197,'AXAAAA','FSAAAA','HHHHxx'
+7191,474,1,3,1,11,91,191,1191,2191,7191,182,183,'PQAAAA','GSAAAA','OOOOxx'
+8116,475,0,0,6,16,16,116,116,3116,8116,32,33,'EAAAAA','HSAAAA','VVVVxx'
+2516,476,0,0,6,16,16,516,516,2516,2516,32,33,'USAAAA','ISAAAA','AAAAxx'
+7750,477,0,2,0,10,50,750,1750,2750,7750,100,101,'CMAAAA','JSAAAA','HHHHxx'
+6625,478,1,1,5,5,25,625,625,1625,6625,50,51,'VUAAAA','KSAAAA','OOOOxx'
+8838,479,0,2,8,18,38,838,838,3838,8838,76,77,'YBAAAA','LSAAAA','VVVVxx'
+4636,480,0,0,6,16,36,636,636,4636,4636,72,73,'IWAAAA','MSAAAA','AAAAxx'
+7627,481,1,3,7,7,27,627,1627,2627,7627,54,55,'JHAAAA','NSAAAA','HHHHxx'
+1690,482,0,2,0,10,90,690,1690,1690,1690,180,181,'ANAAAA','OSAAAA','OOOOxx'
+7071,483,1,3,1,11,71,71,1071,2071,7071,142,143,'ZLAAAA','PSAAAA','VVVVxx'
+2081,484,1,1,1,1,81,81,81,2081,2081,162,163,'BCAAAA','QSAAAA','AAAAxx'
+7138,485,0,2,8,18,38,138,1138,2138,7138,76,77,'OOAAAA','RSAAAA','HHHHxx'
+864,486,0,0,4,4,64,864,864,864,864,128,129,'GHAAAA','SSAAAA','OOOOxx'
+6392,487,0,0,2,12,92,392,392,1392,6392,184,185,'WLAAAA','TSAAAA','VVVVxx'
+7544,488,0,0,4,4,44,544,1544,2544,7544,88,89,'EEAAAA','USAAAA','AAAAxx'
+5438,489,0,2,8,18,38,438,1438,438,5438,76,77,'EBAAAA','VSAAAA','HHHHxx'
+7099,490,1,3,9,19,99,99,1099,2099,7099,198,199,'BNAAAA','WSAAAA','OOOOxx'
+5157,491,1,1,7,17,57,157,1157,157,5157,114,115,'JQAAAA','XSAAAA','VVVVxx'
+3391,492,1,3,1,11,91,391,1391,3391,3391,182,183,'LAAAAA','YSAAAA','AAAAxx'
+3805,493,1,1,5,5,5,805,1805,3805,3805,10,11,'JQAAAA','ZSAAAA','HHHHxx'
+2110,494,0,2,0,10,10,110,110,2110,2110,20,21,'EDAAAA','ATAAAA','OOOOxx'
+3176,495,0,0,6,16,76,176,1176,3176,3176,152,153,'ESAAAA','BTAAAA','VVVVxx'
+5918,496,0,2,8,18,18,918,1918,918,5918,36,37,'QTAAAA','CTAAAA','AAAAxx'
+1218,497,0,2,8,18,18,218,1218,1218,1218,36,37,'WUAAAA','DTAAAA','HHHHxx'
+6683,498,1,3,3,3,83,683,683,1683,6683,166,167,'BXAAAA','ETAAAA','OOOOxx'
+914,499,0,2,4,14,14,914,914,914,914,28,29,'EJAAAA','FTAAAA','VVVVxx'
+4737,500,1,1,7,17,37,737,737,4737,4737,74,75,'FAAAAA','GTAAAA','AAAAxx'
+7286,501,0,2,6,6,86,286,1286,2286,7286,172,173,'GUAAAA','HTAAAA','HHHHxx'
+9975,502,1,3,5,15,75,975,1975,4975,9975,150,151,'RTAAAA','ITAAAA','OOOOxx'
+8030,503,0,2,0,10,30,30,30,3030,8030,60,61,'WWAAAA','JTAAAA','VVVVxx'
+7364,504,0,0,4,4,64,364,1364,2364,7364,128,129,'GXAAAA','KTAAAA','AAAAxx'
+1389,505,1,1,9,9,89,389,1389,1389,1389,178,179,'LBAAAA','LTAAAA','HHHHxx'
+4025,506,1,1,5,5,25,25,25,4025,4025,50,51,'VYAAAA','MTAAAA','OOOOxx'
+4835,507,1,3,5,15,35,835,835,4835,4835,70,71,'ZDAAAA','NTAAAA','VVVVxx'
+8045,508,1,1,5,5,45,45,45,3045,8045,90,91,'LXAAAA','OTAAAA','AAAAxx'
+1864,509,0,0,4,4,64,864,1864,1864,1864,128,129,'STAAAA','PTAAAA','HHHHxx'
+3313,510,1,1,3,13,13,313,1313,3313,3313,26,27,'LXAAAA','QTAAAA','OOOOxx'
+2384,511,0,0,4,4,84,384,384,2384,2384,168,169,'SNAAAA','RTAAAA','VVVVxx'
+6115,512,1,3,5,15,15,115,115,1115,6115,30,31,'FBAAAA','STAAAA','AAAAxx'
+5705,513,1,1,5,5,5,705,1705,705,5705,10,11,'LLAAAA','TTAAAA','HHHHxx'
+9269,514,1,1,9,9,69,269,1269,4269,9269,138,139,'NSAAAA','UTAAAA','OOOOxx'
+3379,515,1,3,9,19,79,379,1379,3379,3379,158,159,'ZZAAAA','VTAAAA','VVVVxx'
+8205,516,1,1,5,5,5,205,205,3205,8205,10,11,'PDAAAA','WTAAAA','AAAAxx'
+6575,517,1,3,5,15,75,575,575,1575,6575,150,151,'XSAAAA','XTAAAA','HHHHxx'
+486,518,0,2,6,6,86,486,486,486,486,172,173,'SSAAAA','YTAAAA','OOOOxx'
+4894,519,0,2,4,14,94,894,894,4894,4894,188,189,'GGAAAA','ZTAAAA','VVVVxx'
+3090,520,0,2,0,10,90,90,1090,3090,3090,180,181,'WOAAAA','AUAAAA','AAAAxx'
+759,521,1,3,9,19,59,759,759,759,759,118,119,'FDAAAA','BUAAAA','HHHHxx'
+4864,522,0,0,4,4,64,864,864,4864,4864,128,129,'CFAAAA','CUAAAA','OOOOxx'
+4083,523,1,3,3,3,83,83,83,4083,4083,166,167,'BBAAAA','DUAAAA','VVVVxx'
+6918,524,0,2,8,18,18,918,918,1918,6918,36,37,'CGAAAA','EUAAAA','AAAAxx'
+8146,525,0,2,6,6,46,146,146,3146,8146,92,93,'IBAAAA','FUAAAA','HHHHxx'
+1523,526,1,3,3,3,23,523,1523,1523,1523,46,47,'PGAAAA','GUAAAA','OOOOxx'
+1591,527,1,3,1,11,91,591,1591,1591,1591,182,183,'FJAAAA','HUAAAA','VVVVxx'
+3343,528,1,3,3,3,43,343,1343,3343,3343,86,87,'PYAAAA','IUAAAA','AAAAxx'
+1391,529,1,3,1,11,91,391,1391,1391,1391,182,183,'NBAAAA','JUAAAA','HHHHxx'
+9963,530,1,3,3,3,63,963,1963,4963,9963,126,127,'FTAAAA','KUAAAA','OOOOxx'
+2423,531,1,3,3,3,23,423,423,2423,2423,46,47,'FPAAAA','LUAAAA','VVVVxx'
+1822,532,0,2,2,2,22,822,1822,1822,1822,44,45,'CSAAAA','MUAAAA','AAAAxx'
+8706,533,0,2,6,6,6,706,706,3706,8706,12,13,'WWAAAA','NUAAAA','HHHHxx'
+3001,534,1,1,1,1,1,1,1001,3001,3001,2,3,'LLAAAA','OUAAAA','OOOOxx'
+6707,535,1,3,7,7,7,707,707,1707,6707,14,15,'ZXAAAA','PUAAAA','VVVVxx'
+2121,536,1,1,1,1,21,121,121,2121,2121,42,43,'PDAAAA','QUAAAA','AAAAxx'
+5814,537,0,2,4,14,14,814,1814,814,5814,28,29,'QPAAAA','RUAAAA','HHHHxx'
+2659,538,1,3,9,19,59,659,659,2659,2659,118,119,'HYAAAA','SUAAAA','OOOOxx'
+2016,539,0,0,6,16,16,16,16,2016,2016,32,33,'OZAAAA','TUAAAA','VVVVxx'
+4286,540,0,2,6,6,86,286,286,4286,4286,172,173,'WIAAAA','UUAAAA','AAAAxx'
+9205,541,1,1,5,5,5,205,1205,4205,9205,10,11,'BQAAAA','VUAAAA','HHHHxx'
+3496,542,0,0,6,16,96,496,1496,3496,3496,192,193,'MEAAAA','WUAAAA','OOOOxx'
+5333,543,1,1,3,13,33,333,1333,333,5333,66,67,'DXAAAA','XUAAAA','VVVVxx'
+5571,544,1,3,1,11,71,571,1571,571,5571,142,143,'HGAAAA','YUAAAA','AAAAxx'
+1696,545,0,0,6,16,96,696,1696,1696,1696,192,193,'GNAAAA','ZUAAAA','HHHHxx'
+4871,546,1,3,1,11,71,871,871,4871,4871,142,143,'JFAAAA','AVAAAA','OOOOxx'
+4852,547,0,0,2,12,52,852,852,4852,4852,104,105,'QEAAAA','BVAAAA','VVVVxx'
+8483,548,1,3,3,3,83,483,483,3483,8483,166,167,'HOAAAA','CVAAAA','AAAAxx'
+1376,549,0,0,6,16,76,376,1376,1376,1376,152,153,'YAAAAA','DVAAAA','HHHHxx'
+5456,550,0,0,6,16,56,456,1456,456,5456,112,113,'WBAAAA','EVAAAA','OOOOxx'
+499,551,1,3,9,19,99,499,499,499,499,198,199,'FTAAAA','FVAAAA','VVVVxx'
+3463,552,1,3,3,3,63,463,1463,3463,3463,126,127,'FDAAAA','GVAAAA','AAAAxx'
+7426,553,0,2,6,6,26,426,1426,2426,7426,52,53,'QZAAAA','HVAAAA','HHHHxx'
+5341,554,1,1,1,1,41,341,1341,341,5341,82,83,'LXAAAA','IVAAAA','OOOOxx'
+9309,555,1,1,9,9,9,309,1309,4309,9309,18,19,'BUAAAA','JVAAAA','VVVVxx'
+2055,556,1,3,5,15,55,55,55,2055,2055,110,111,'BBAAAA','KVAAAA','AAAAxx'
+2199,557,1,3,9,19,99,199,199,2199,2199,198,199,'PGAAAA','LVAAAA','HHHHxx'
+7235,558,1,3,5,15,35,235,1235,2235,7235,70,71,'HSAAAA','MVAAAA','OOOOxx'
+8661,559,1,1,1,1,61,661,661,3661,8661,122,123,'DVAAAA','NVAAAA','VVVVxx'
+9494,560,0,2,4,14,94,494,1494,4494,9494,188,189,'EBAAAA','OVAAAA','AAAAxx'
+935,561,1,3,5,15,35,935,935,935,935,70,71,'ZJAAAA','PVAAAA','HHHHxx'
+7044,562,0,0,4,4,44,44,1044,2044,7044,88,89,'YKAAAA','QVAAAA','OOOOxx'
+1974,563,0,2,4,14,74,974,1974,1974,1974,148,149,'YXAAAA','RVAAAA','VVVVxx'
+9679,564,1,3,9,19,79,679,1679,4679,9679,158,159,'HIAAAA','SVAAAA','AAAAxx'
+9822,565,0,2,2,2,22,822,1822,4822,9822,44,45,'UNAAAA','TVAAAA','HHHHxx'
+4088,566,0,0,8,8,88,88,88,4088,4088,176,177,'GBAAAA','UVAAAA','OOOOxx'
+1749,567,1,1,9,9,49,749,1749,1749,1749,98,99,'HPAAAA','VVAAAA','VVVVxx'
+2116,568,0,0,6,16,16,116,116,2116,2116,32,33,'KDAAAA','WVAAAA','AAAAxx'
+976,569,0,0,6,16,76,976,976,976,976,152,153,'OLAAAA','XVAAAA','HHHHxx'
+8689,570,1,1,9,9,89,689,689,3689,8689,178,179,'FWAAAA','YVAAAA','OOOOxx'
+2563,571,1,3,3,3,63,563,563,2563,2563,126,127,'PUAAAA','ZVAAAA','VVVVxx'
+7195,572,1,3,5,15,95,195,1195,2195,7195,190,191,'TQAAAA','AWAAAA','AAAAxx'
+9985,573,1,1,5,5,85,985,1985,4985,9985,170,171,'BUAAAA','BWAAAA','HHHHxx'
+7699,574,1,3,9,19,99,699,1699,2699,7699,198,199,'DKAAAA','CWAAAA','OOOOxx'
+5311,575,1,3,1,11,11,311,1311,311,5311,22,23,'HWAAAA','DWAAAA','VVVVxx'
+295,576,1,3,5,15,95,295,295,295,295,190,191,'JLAAAA','EWAAAA','AAAAxx'
+8214,577,0,2,4,14,14,214,214,3214,8214,28,29,'YDAAAA','FWAAAA','HHHHxx'
+3275,578,1,3,5,15,75,275,1275,3275,3275,150,151,'ZVAAAA','GWAAAA','OOOOxx'
+9646,579,0,2,6,6,46,646,1646,4646,9646,92,93,'AHAAAA','HWAAAA','VVVVxx'
+1908,580,0,0,8,8,8,908,1908,1908,1908,16,17,'KVAAAA','IWAAAA','AAAAxx'
+3858,581,0,2,8,18,58,858,1858,3858,3858,116,117,'KSAAAA','JWAAAA','HHHHxx'
+9362,582,0,2,2,2,62,362,1362,4362,9362,124,125,'CWAAAA','KWAAAA','OOOOxx'
+9307,583,1,3,7,7,7,307,1307,4307,9307,14,15,'ZTAAAA','LWAAAA','VVVVxx'
+6124,584,0,0,4,4,24,124,124,1124,6124,48,49,'OBAAAA','MWAAAA','AAAAxx'
+2405,585,1,1,5,5,5,405,405,2405,2405,10,11,'NOAAAA','NWAAAA','HHHHxx'
+8422,586,0,2,2,2,22,422,422,3422,8422,44,45,'YLAAAA','OWAAAA','OOOOxx'
+393,587,1,1,3,13,93,393,393,393,393,186,187,'DPAAAA','PWAAAA','VVVVxx'
+8973,588,1,1,3,13,73,973,973,3973,8973,146,147,'DHAAAA','QWAAAA','AAAAxx'
+5171,589,1,3,1,11,71,171,1171,171,5171,142,143,'XQAAAA','RWAAAA','HHHHxx'
+4929,590,1,1,9,9,29,929,929,4929,4929,58,59,'PHAAAA','SWAAAA','OOOOxx'
+6935,591,1,3,5,15,35,935,935,1935,6935,70,71,'TGAAAA','TWAAAA','VVVVxx'
+8584,592,0,0,4,4,84,584,584,3584,8584,168,169,'ESAAAA','UWAAAA','AAAAxx'
+1035,593,1,3,5,15,35,35,1035,1035,1035,70,71,'VNAAAA','VWAAAA','HHHHxx'
+3734,594,0,2,4,14,34,734,1734,3734,3734,68,69,'QNAAAA','WWAAAA','OOOOxx'
+1458,595,0,2,8,18,58,458,1458,1458,1458,116,117,'CEAAAA','XWAAAA','VVVVxx'
+8746,596,0,2,6,6,46,746,746,3746,8746,92,93,'KYAAAA','YWAAAA','AAAAxx'
+1677,597,1,1,7,17,77,677,1677,1677,1677,154,155,'NMAAAA','ZWAAAA','HHHHxx'
+8502,598,0,2,2,2,2,502,502,3502,8502,4,5,'APAAAA','AXAAAA','OOOOxx'
+7752,599,0,0,2,12,52,752,1752,2752,7752,104,105,'EMAAAA','BXAAAA','VVVVxx'
+2556,600,0,0,6,16,56,556,556,2556,2556,112,113,'IUAAAA','CXAAAA','AAAAxx'
+6426,601,0,2,6,6,26,426,426,1426,6426,52,53,'ENAAAA','DXAAAA','HHHHxx'
+8420,602,0,0,0,0,20,420,420,3420,8420,40,41,'WLAAAA','EXAAAA','OOOOxx'
+4462,603,0,2,2,2,62,462,462,4462,4462,124,125,'QPAAAA','FXAAAA','VVVVxx'
+1378,604,0,2,8,18,78,378,1378,1378,1378,156,157,'ABAAAA','GXAAAA','AAAAxx'
+1387,605,1,3,7,7,87,387,1387,1387,1387,174,175,'JBAAAA','HXAAAA','HHHHxx'
+8094,606,0,2,4,14,94,94,94,3094,8094,188,189,'IZAAAA','IXAAAA','OOOOxx'
+7247,607,1,3,7,7,47,247,1247,2247,7247,94,95,'TSAAAA','JXAAAA','VVVVxx'
+4261,608,1,1,1,1,61,261,261,4261,4261,122,123,'XHAAAA','KXAAAA','AAAAxx'
+5029,609,1,1,9,9,29,29,1029,29,5029,58,59,'LLAAAA','LXAAAA','HHHHxx'
+3625,610,1,1,5,5,25,625,1625,3625,3625,50,51,'LJAAAA','MXAAAA','OOOOxx'
+8068,611,0,0,8,8,68,68,68,3068,8068,136,137,'IYAAAA','NXAAAA','VVVVxx'
+102,612,0,2,2,2,2,102,102,102,102,4,5,'YDAAAA','OXAAAA','AAAAxx'
+5596,613,0,0,6,16,96,596,1596,596,5596,192,193,'GHAAAA','PXAAAA','HHHHxx'
+5872,614,0,0,2,12,72,872,1872,872,5872,144,145,'WRAAAA','QXAAAA','OOOOxx'
+4742,615,0,2,2,2,42,742,742,4742,4742,84,85,'KAAAAA','RXAAAA','VVVVxx'
+2117,616,1,1,7,17,17,117,117,2117,2117,34,35,'LDAAAA','SXAAAA','AAAAxx'
+3945,617,1,1,5,5,45,945,1945,3945,3945,90,91,'TVAAAA','TXAAAA','HHHHxx'
+7483,618,1,3,3,3,83,483,1483,2483,7483,166,167,'VBAAAA','UXAAAA','OOOOxx'
+4455,619,1,3,5,15,55,455,455,4455,4455,110,111,'JPAAAA','VXAAAA','VVVVxx'
+609,620,1,1,9,9,9,609,609,609,609,18,19,'LXAAAA','WXAAAA','AAAAxx'
+9829,621,1,1,9,9,29,829,1829,4829,9829,58,59,'BOAAAA','XXAAAA','HHHHxx'
+4857,622,1,1,7,17,57,857,857,4857,4857,114,115,'VEAAAA','YXAAAA','OOOOxx'
+3314,623,0,2,4,14,14,314,1314,3314,3314,28,29,'MXAAAA','ZXAAAA','VVVVxx'
+5353,624,1,1,3,13,53,353,1353,353,5353,106,107,'XXAAAA','AYAAAA','AAAAxx'
+4909,625,1,1,9,9,9,909,909,4909,4909,18,19,'VGAAAA','BYAAAA','HHHHxx'
+7597,626,1,1,7,17,97,597,1597,2597,7597,194,195,'FGAAAA','CYAAAA','OOOOxx'
+2683,627,1,3,3,3,83,683,683,2683,2683,166,167,'FZAAAA','DYAAAA','VVVVxx'
+3223,628,1,3,3,3,23,223,1223,3223,3223,46,47,'ZTAAAA','EYAAAA','AAAAxx'
+5363,629,1,3,3,3,63,363,1363,363,5363,126,127,'HYAAAA','FYAAAA','HHHHxx'
+4578,630,0,2,8,18,78,578,578,4578,4578,156,157,'CUAAAA','GYAAAA','OOOOxx'
+5544,631,0,0,4,4,44,544,1544,544,5544,88,89,'GFAAAA','HYAAAA','VVVVxx'
+1589,632,1,1,9,9,89,589,1589,1589,1589,178,179,'DJAAAA','IYAAAA','AAAAxx'
+7412,633,0,0,2,12,12,412,1412,2412,7412,24,25,'CZAAAA','JYAAAA','HHHHxx'
+3803,634,1,3,3,3,3,803,1803,3803,3803,6,7,'HQAAAA','KYAAAA','OOOOxx'
+6179,635,1,3,9,19,79,179,179,1179,6179,158,159,'RDAAAA','LYAAAA','VVVVxx'
+5588,636,0,0,8,8,88,588,1588,588,5588,176,177,'YGAAAA','MYAAAA','AAAAxx'
+2134,637,0,2,4,14,34,134,134,2134,2134,68,69,'CEAAAA','NYAAAA','HHHHxx'
+4383,638,1,3,3,3,83,383,383,4383,4383,166,167,'PMAAAA','OYAAAA','OOOOxx'
+6995,639,1,3,5,15,95,995,995,1995,6995,190,191,'BJAAAA','PYAAAA','VVVVxx'
+6598,640,0,2,8,18,98,598,598,1598,6598,196,197,'UTAAAA','QYAAAA','AAAAxx'
+8731,641,1,3,1,11,31,731,731,3731,8731,62,63,'VXAAAA','RYAAAA','HHHHxx'
+7177,642,1,1,7,17,77,177,1177,2177,7177,154,155,'BQAAAA','SYAAAA','OOOOxx'
+6578,643,0,2,8,18,78,578,578,1578,6578,156,157,'ATAAAA','TYAAAA','VVVVxx'
+9393,644,1,1,3,13,93,393,1393,4393,9393,186,187,'HXAAAA','UYAAAA','AAAAxx'
+1276,645,0,0,6,16,76,276,1276,1276,1276,152,153,'CXAAAA','VYAAAA','HHHHxx'
+8766,646,0,2,6,6,66,766,766,3766,8766,132,133,'EZAAAA','WYAAAA','OOOOxx'
+1015,647,1,3,5,15,15,15,1015,1015,1015,30,31,'BNAAAA','XYAAAA','VVVVxx'
+4396,648,0,0,6,16,96,396,396,4396,4396,192,193,'CNAAAA','YYAAAA','AAAAxx'
+5564,649,0,0,4,4,64,564,1564,564,5564,128,129,'AGAAAA','ZYAAAA','HHHHxx'
+927,650,1,3,7,7,27,927,927,927,927,54,55,'RJAAAA','AZAAAA','OOOOxx'
+3306,651,0,2,6,6,6,306,1306,3306,3306,12,13,'EXAAAA','BZAAAA','VVVVxx'
+1615,652,1,3,5,15,15,615,1615,1615,1615,30,31,'DKAAAA','CZAAAA','AAAAxx'
+4550,653,0,2,0,10,50,550,550,4550,4550,100,101,'ATAAAA','DZAAAA','HHHHxx'
+2468,654,0,0,8,8,68,468,468,2468,2468,136,137,'YQAAAA','EZAAAA','OOOOxx'
+5336,655,0,0,6,16,36,336,1336,336,5336,72,73,'GXAAAA','FZAAAA','VVVVxx'
+4471,656,1,3,1,11,71,471,471,4471,4471,142,143,'ZPAAAA','GZAAAA','AAAAxx'
+8085,657,1,1,5,5,85,85,85,3085,8085,170,171,'ZYAAAA','HZAAAA','HHHHxx'
+540,658,0,0,0,0,40,540,540,540,540,80,81,'UUAAAA','IZAAAA','OOOOxx'
+5108,659,0,0,8,8,8,108,1108,108,5108,16,17,'MOAAAA','JZAAAA','VVVVxx'
+8015,660,1,3,5,15,15,15,15,3015,8015,30,31,'HWAAAA','KZAAAA','AAAAxx'
+2857,661,1,1,7,17,57,857,857,2857,2857,114,115,'XFAAAA','LZAAAA','HHHHxx'
+9472,662,0,0,2,12,72,472,1472,4472,9472,144,145,'IAAAAA','MZAAAA','OOOOxx'
+5666,663,0,2,6,6,66,666,1666,666,5666,132,133,'YJAAAA','NZAAAA','VVVVxx'
+3555,664,1,3,5,15,55,555,1555,3555,3555,110,111,'TGAAAA','OZAAAA','AAAAxx'
+378,665,0,2,8,18,78,378,378,378,378,156,157,'OOAAAA','PZAAAA','HHHHxx'
+4466,666,0,2,6,6,66,466,466,4466,4466,132,133,'UPAAAA','QZAAAA','OOOOxx'
+3247,667,1,3,7,7,47,247,1247,3247,3247,94,95,'XUAAAA','RZAAAA','VVVVxx'
+6570,668,0,2,0,10,70,570,570,1570,6570,140,141,'SSAAAA','SZAAAA','AAAAxx'
+5655,669,1,3,5,15,55,655,1655,655,5655,110,111,'NJAAAA','TZAAAA','HHHHxx'
+917,670,1,1,7,17,17,917,917,917,917,34,35,'HJAAAA','UZAAAA','OOOOxx'
+3637,671,1,1,7,17,37,637,1637,3637,3637,74,75,'XJAAAA','VZAAAA','VVVVxx'
+3668,672,0,0,8,8,68,668,1668,3668,3668,136,137,'CLAAAA','WZAAAA','AAAAxx'
+5644,673,0,0,4,4,44,644,1644,644,5644,88,89,'CJAAAA','XZAAAA','HHHHxx'
+8286,674,0,2,6,6,86,286,286,3286,8286,172,173,'SGAAAA','YZAAAA','OOOOxx'
+6896,675,0,0,6,16,96,896,896,1896,6896,192,193,'GFAAAA','ZZAAAA','VVVVxx'
+2870,676,0,2,0,10,70,870,870,2870,2870,140,141,'KGAAAA','AABAAA','AAAAxx'
+8041,677,1,1,1,1,41,41,41,3041,8041,82,83,'HXAAAA','BABAAA','HHHHxx'
+8137,678,1,1,7,17,37,137,137,3137,8137,74,75,'ZAAAAA','CABAAA','OOOOxx'
+4823,679,1,3,3,3,23,823,823,4823,4823,46,47,'NDAAAA','DABAAA','VVVVxx'
+2438,680,0,2,8,18,38,438,438,2438,2438,76,77,'UPAAAA','EABAAA','AAAAxx'
+6329,681,1,1,9,9,29,329,329,1329,6329,58,59,'LJAAAA','FABAAA','HHHHxx'
+623,682,1,3,3,3,23,623,623,623,623,46,47,'ZXAAAA','GABAAA','OOOOxx'
+1360,683,0,0,0,0,60,360,1360,1360,1360,120,121,'IAAAAA','HABAAA','VVVVxx'
+7987,684,1,3,7,7,87,987,1987,2987,7987,174,175,'FVAAAA','IABAAA','AAAAxx'
+9788,685,0,0,8,8,88,788,1788,4788,9788,176,177,'MMAAAA','JABAAA','HHHHxx'
+3212,686,0,0,2,12,12,212,1212,3212,3212,24,25,'OTAAAA','KABAAA','OOOOxx'
+2725,687,1,1,5,5,25,725,725,2725,2725,50,51,'VAAAAA','LABAAA','VVVVxx'
+7837,688,1,1,7,17,37,837,1837,2837,7837,74,75,'LPAAAA','MABAAA','AAAAxx'
+4746,689,0,2,6,6,46,746,746,4746,4746,92,93,'OAAAAA','NABAAA','HHHHxx'
+3986,690,0,2,6,6,86,986,1986,3986,3986,172,173,'IXAAAA','OABAAA','OOOOxx'
+9128,691,0,0,8,8,28,128,1128,4128,9128,56,57,'CNAAAA','PABAAA','VVVVxx'
+5044,692,0,0,4,4,44,44,1044,44,5044,88,89,'AMAAAA','QABAAA','AAAAxx'
+8132,693,0,0,2,12,32,132,132,3132,8132,64,65,'UAAAAA','RABAAA','HHHHxx'
+9992,694,0,0,2,12,92,992,1992,4992,9992,184,185,'IUAAAA','SABAAA','OOOOxx'
+8468,695,0,0,8,8,68,468,468,3468,8468,136,137,'SNAAAA','TABAAA','VVVVxx'
+6876,696,0,0,6,16,76,876,876,1876,6876,152,153,'MEAAAA','UABAAA','AAAAxx'
+3532,697,0,0,2,12,32,532,1532,3532,3532,64,65,'WFAAAA','VABAAA','HHHHxx'
+2140,698,0,0,0,0,40,140,140,2140,2140,80,81,'IEAAAA','WABAAA','OOOOxx'
+2183,699,1,3,3,3,83,183,183,2183,2183,166,167,'ZFAAAA','XABAAA','VVVVxx'
+9766,700,0,2,6,6,66,766,1766,4766,9766,132,133,'QLAAAA','YABAAA','AAAAxx'
+7943,701,1,3,3,3,43,943,1943,2943,7943,86,87,'NTAAAA','ZABAAA','HHHHxx'
+9243,702,1,3,3,3,43,243,1243,4243,9243,86,87,'NRAAAA','ABBAAA','OOOOxx'
+6241,703,1,1,1,1,41,241,241,1241,6241,82,83,'BGAAAA','BBBAAA','VVVVxx'
+9540,704,0,0,0,0,40,540,1540,4540,9540,80,81,'YCAAAA','CBBAAA','AAAAxx'
+7418,705,0,2,8,18,18,418,1418,2418,7418,36,37,'IZAAAA','DBBAAA','HHHHxx'
+1603,706,1,3,3,3,3,603,1603,1603,1603,6,7,'RJAAAA','EBBAAA','OOOOxx'
+8950,707,0,2,0,10,50,950,950,3950,8950,100,101,'GGAAAA','FBBAAA','VVVVxx'
+6933,708,1,1,3,13,33,933,933,1933,6933,66,67,'RGAAAA','GBBAAA','AAAAxx'
+2646,709,0,2,6,6,46,646,646,2646,2646,92,93,'UXAAAA','HBBAAA','HHHHxx'
+3447,710,1,3,7,7,47,447,1447,3447,3447,94,95,'PCAAAA','IBBAAA','OOOOxx'
+9957,711,1,1,7,17,57,957,1957,4957,9957,114,115,'ZSAAAA','JBBAAA','VVVVxx'
+4623,712,1,3,3,3,23,623,623,4623,4623,46,47,'VVAAAA','KBBAAA','AAAAxx'
+9058,713,0,2,8,18,58,58,1058,4058,9058,116,117,'KKAAAA','LBBAAA','HHHHxx'
+7361,714,1,1,1,1,61,361,1361,2361,7361,122,123,'DXAAAA','MBBAAA','OOOOxx'
+2489,715,1,1,9,9,89,489,489,2489,2489,178,179,'TRAAAA','NBBAAA','VVVVxx'
+7643,716,1,3,3,3,43,643,1643,2643,7643,86,87,'ZHAAAA','OBBAAA','AAAAxx'
+9166,717,0,2,6,6,66,166,1166,4166,9166,132,133,'OOAAAA','PBBAAA','HHHHxx'
+7789,718,1,1,9,9,89,789,1789,2789,7789,178,179,'PNAAAA','QBBAAA','OOOOxx'
+2332,719,0,0,2,12,32,332,332,2332,2332,64,65,'SLAAAA','RBBAAA','VVVVxx'
+1832,720,0,0,2,12,32,832,1832,1832,1832,64,65,'MSAAAA','SBBAAA','AAAAxx'
+8375,721,1,3,5,15,75,375,375,3375,8375,150,151,'DKAAAA','TBBAAA','HHHHxx'
+948,722,0,0,8,8,48,948,948,948,948,96,97,'MKAAAA','UBBAAA','OOOOxx'
+5613,723,1,1,3,13,13,613,1613,613,5613,26,27,'XHAAAA','VBBAAA','VVVVxx'
+6310,724,0,2,0,10,10,310,310,1310,6310,20,21,'SIAAAA','WBBAAA','AAAAxx'
+4254,725,0,2,4,14,54,254,254,4254,4254,108,109,'QHAAAA','XBBAAA','HHHHxx'
+4260,726,0,0,0,0,60,260,260,4260,4260,120,121,'WHAAAA','YBBAAA','OOOOxx'
+2060,727,0,0,0,0,60,60,60,2060,2060,120,121,'GBAAAA','ZBBAAA','VVVVxx'
+4831,728,1,3,1,11,31,831,831,4831,4831,62,63,'VDAAAA','ACBAAA','AAAAxx'
+6176,729,0,0,6,16,76,176,176,1176,6176,152,153,'ODAAAA','BCBAAA','HHHHxx'
+6688,730,0,0,8,8,88,688,688,1688,6688,176,177,'GXAAAA','CCBAAA','OOOOxx'
+5752,731,0,0,2,12,52,752,1752,752,5752,104,105,'GNAAAA','DCBAAA','VVVVxx'
+8714,732,0,2,4,14,14,714,714,3714,8714,28,29,'EXAAAA','ECBAAA','AAAAxx'
+6739,733,1,3,9,19,39,739,739,1739,6739,78,79,'FZAAAA','FCBAAA','HHHHxx'
+7066,734,0,2,6,6,66,66,1066,2066,7066,132,133,'ULAAAA','GCBAAA','OOOOxx'
+7250,735,0,2,0,10,50,250,1250,2250,7250,100,101,'WSAAAA','HCBAAA','VVVVxx'
+3161,736,1,1,1,1,61,161,1161,3161,3161,122,123,'PRAAAA','ICBAAA','AAAAxx'
+1411,737,1,3,1,11,11,411,1411,1411,1411,22,23,'HCAAAA','JCBAAA','HHHHxx'
+9301,738,1,1,1,1,1,301,1301,4301,9301,2,3,'TTAAAA','KCBAAA','OOOOxx'
+8324,739,0,0,4,4,24,324,324,3324,8324,48,49,'EIAAAA','LCBAAA','VVVVxx'
+9641,740,1,1,1,1,41,641,1641,4641,9641,82,83,'VGAAAA','MCBAAA','AAAAxx'
+7077,741,1,1,7,17,77,77,1077,2077,7077,154,155,'FMAAAA','NCBAAA','HHHHxx'
+9888,742,0,0,8,8,88,888,1888,4888,9888,176,177,'IQAAAA','OCBAAA','OOOOxx'
+9909,743,1,1,9,9,9,909,1909,4909,9909,18,19,'DRAAAA','PCBAAA','VVVVxx'
+2209,744,1,1,9,9,9,209,209,2209,2209,18,19,'ZGAAAA','QCBAAA','AAAAxx'
+6904,745,0,0,4,4,4,904,904,1904,6904,8,9,'OFAAAA','RCBAAA','HHHHxx'
+6608,746,0,0,8,8,8,608,608,1608,6608,16,17,'EUAAAA','SCBAAA','OOOOxx'
+8400,747,0,0,0,0,0,400,400,3400,8400,0,1,'CLAAAA','TCBAAA','VVVVxx'
+5124,748,0,0,4,4,24,124,1124,124,5124,48,49,'CPAAAA','UCBAAA','AAAAxx'
+5484,749,0,0,4,4,84,484,1484,484,5484,168,169,'YCAAAA','VCBAAA','HHHHxx'
+3575,750,1,3,5,15,75,575,1575,3575,3575,150,151,'NHAAAA','WCBAAA','OOOOxx'
+9723,751,1,3,3,3,23,723,1723,4723,9723,46,47,'ZJAAAA','XCBAAA','VVVVxx'
+360,752,0,0,0,0,60,360,360,360,360,120,121,'WNAAAA','YCBAAA','AAAAxx'
+1059,753,1,3,9,19,59,59,1059,1059,1059,118,119,'TOAAAA','ZCBAAA','HHHHxx'
+4941,754,1,1,1,1,41,941,941,4941,4941,82,83,'BIAAAA','ADBAAA','OOOOxx'
+2535,755,1,3,5,15,35,535,535,2535,2535,70,71,'NTAAAA','BDBAAA','VVVVxx'
+4119,756,1,3,9,19,19,119,119,4119,4119,38,39,'LCAAAA','CDBAAA','AAAAxx'
+3725,757,1,1,5,5,25,725,1725,3725,3725,50,51,'HNAAAA','DDBAAA','HHHHxx'
+4758,758,0,2,8,18,58,758,758,4758,4758,116,117,'ABAAAA','EDBAAA','OOOOxx'
+9593,759,1,1,3,13,93,593,1593,4593,9593,186,187,'ZEAAAA','FDBAAA','VVVVxx'
+4663,760,1,3,3,3,63,663,663,4663,4663,126,127,'JXAAAA','GDBAAA','AAAAxx'
+7734,761,0,2,4,14,34,734,1734,2734,7734,68,69,'MLAAAA','HDBAAA','HHHHxx'
+9156,762,0,0,6,16,56,156,1156,4156,9156,112,113,'EOAAAA','IDBAAA','OOOOxx'
+8120,763,0,0,0,0,20,120,120,3120,8120,40,41,'IAAAAA','JDBAAA','VVVVxx'
+4385,764,1,1,5,5,85,385,385,4385,4385,170,171,'RMAAAA','KDBAAA','AAAAxx'
+2926,765,0,2,6,6,26,926,926,2926,2926,52,53,'OIAAAA','LDBAAA','HHHHxx'
+4186,766,0,2,6,6,86,186,186,4186,4186,172,173,'AFAAAA','MDBAAA','OOOOxx'
+2508,767,0,0,8,8,8,508,508,2508,2508,16,17,'MSAAAA','NDBAAA','VVVVxx'
+4012,768,0,0,2,12,12,12,12,4012,4012,24,25,'IYAAAA','ODBAAA','AAAAxx'
+6266,769,0,2,6,6,66,266,266,1266,6266,132,133,'AHAAAA','PDBAAA','HHHHxx'
+3709,770,1,1,9,9,9,709,1709,3709,3709,18,19,'RMAAAA','QDBAAA','OOOOxx'
+7289,771,1,1,9,9,89,289,1289,2289,7289,178,179,'JUAAAA','RDBAAA','VVVVxx'
+8875,772,1,3,5,15,75,875,875,3875,8875,150,151,'JDAAAA','SDBAAA','AAAAxx'
+4412,773,0,0,2,12,12,412,412,4412,4412,24,25,'SNAAAA','TDBAAA','HHHHxx'
+3033,774,1,1,3,13,33,33,1033,3033,3033,66,67,'RMAAAA','UDBAAA','OOOOxx'
+1645,775,1,1,5,5,45,645,1645,1645,1645,90,91,'HLAAAA','VDBAAA','VVVVxx'
+3557,776,1,1,7,17,57,557,1557,3557,3557,114,115,'VGAAAA','WDBAAA','AAAAxx'
+6316,777,0,0,6,16,16,316,316,1316,6316,32,33,'YIAAAA','XDBAAA','HHHHxx'
+2054,778,0,2,4,14,54,54,54,2054,2054,108,109,'ABAAAA','YDBAAA','OOOOxx'
+7031,779,1,3,1,11,31,31,1031,2031,7031,62,63,'LKAAAA','ZDBAAA','VVVVxx'
+3405,780,1,1,5,5,5,405,1405,3405,3405,10,11,'ZAAAAA','AEBAAA','AAAAxx'
+5343,781,1,3,3,3,43,343,1343,343,5343,86,87,'NXAAAA','BEBAAA','HHHHxx'
+5240,782,0,0,0,0,40,240,1240,240,5240,80,81,'OTAAAA','CEBAAA','OOOOxx'
+9650,783,0,2,0,10,50,650,1650,4650,9650,100,101,'EHAAAA','DEBAAA','VVVVxx'
+3777,784,1,1,7,17,77,777,1777,3777,3777,154,155,'HPAAAA','EEBAAA','AAAAxx'
+9041,785,1,1,1,1,41,41,1041,4041,9041,82,83,'TJAAAA','FEBAAA','HHHHxx'
+6923,786,1,3,3,3,23,923,923,1923,6923,46,47,'HGAAAA','GEBAAA','OOOOxx'
+2977,787,1,1,7,17,77,977,977,2977,2977,154,155,'NKAAAA','HEBAAA','VVVVxx'
+5500,788,0,0,0,0,0,500,1500,500,5500,0,1,'ODAAAA','IEBAAA','AAAAxx'
+1044,789,0,0,4,4,44,44,1044,1044,1044,88,89,'EOAAAA','JEBAAA','HHHHxx'
+434,790,0,2,4,14,34,434,434,434,434,68,69,'SQAAAA','KEBAAA','OOOOxx'
+611,791,1,3,1,11,11,611,611,611,611,22,23,'NXAAAA','LEBAAA','VVVVxx'
+5760,792,0,0,0,0,60,760,1760,760,5760,120,121,'ONAAAA','MEBAAA','AAAAxx'
+2445,793,1,1,5,5,45,445,445,2445,2445,90,91,'BQAAAA','NEBAAA','HHHHxx'
+7098,794,0,2,8,18,98,98,1098,2098,7098,196,197,'ANAAAA','OEBAAA','OOOOxx'
+2188,795,0,0,8,8,88,188,188,2188,2188,176,177,'EGAAAA','PEBAAA','VVVVxx'
+4597,796,1,1,7,17,97,597,597,4597,4597,194,195,'VUAAAA','QEBAAA','AAAAxx'
+1913,797,1,1,3,13,13,913,1913,1913,1913,26,27,'PVAAAA','REBAAA','HHHHxx'
+8696,798,0,0,6,16,96,696,696,3696,8696,192,193,'MWAAAA','SEBAAA','OOOOxx'
+3332,799,0,0,2,12,32,332,1332,3332,3332,64,65,'EYAAAA','TEBAAA','VVVVxx'
+8760,800,0,0,0,0,60,760,760,3760,8760,120,121,'YYAAAA','UEBAAA','AAAAxx'
+3215,801,1,3,5,15,15,215,1215,3215,3215,30,31,'RTAAAA','VEBAAA','HHHHxx'
+1625,802,1,1,5,5,25,625,1625,1625,1625,50,51,'NKAAAA','WEBAAA','OOOOxx'
+4219,803,1,3,9,19,19,219,219,4219,4219,38,39,'HGAAAA','XEBAAA','VVVVxx'
+415,804,1,3,5,15,15,415,415,415,415,30,31,'ZPAAAA','YEBAAA','AAAAxx'
+4242,805,0,2,2,2,42,242,242,4242,4242,84,85,'EHAAAA','ZEBAAA','HHHHxx'
+8660,806,0,0,0,0,60,660,660,3660,8660,120,121,'CVAAAA','AFBAAA','OOOOxx'
+6525,807,1,1,5,5,25,525,525,1525,6525,50,51,'ZQAAAA','BFBAAA','VVVVxx'
+2141,808,1,1,1,1,41,141,141,2141,2141,82,83,'JEAAAA','CFBAAA','AAAAxx'
+5152,809,0,0,2,12,52,152,1152,152,5152,104,105,'EQAAAA','DFBAAA','HHHHxx'
+8560,810,0,0,0,0,60,560,560,3560,8560,120,121,'GRAAAA','EFBAAA','OOOOxx'
+9835,811,1,3,5,15,35,835,1835,4835,9835,70,71,'HOAAAA','FFBAAA','VVVVxx'
+2657,812,1,1,7,17,57,657,657,2657,2657,114,115,'FYAAAA','GFBAAA','AAAAxx'
+6085,813,1,1,5,5,85,85,85,1085,6085,170,171,'BAAAAA','HFBAAA','HHHHxx'
+6698,814,0,2,8,18,98,698,698,1698,6698,196,197,'QXAAAA','IFBAAA','OOOOxx'
+5421,815,1,1,1,1,21,421,1421,421,5421,42,43,'NAAAAA','JFBAAA','VVVVxx'
+6661,816,1,1,1,1,61,661,661,1661,6661,122,123,'FWAAAA','KFBAAA','AAAAxx'
+5645,817,1,1,5,5,45,645,1645,645,5645,90,91,'DJAAAA','LFBAAA','HHHHxx'
+1248,818,0,0,8,8,48,248,1248,1248,1248,96,97,'AWAAAA','MFBAAA','OOOOxx'
+5690,819,0,2,0,10,90,690,1690,690,5690,180,181,'WKAAAA','NFBAAA','VVVVxx'
+4762,820,0,2,2,2,62,762,762,4762,4762,124,125,'EBAAAA','OFBAAA','AAAAxx'
+1455,821,1,3,5,15,55,455,1455,1455,1455,110,111,'ZDAAAA','PFBAAA','HHHHxx'
+9846,822,0,2,6,6,46,846,1846,4846,9846,92,93,'SOAAAA','QFBAAA','OOOOxx'
+5295,823,1,3,5,15,95,295,1295,295,5295,190,191,'RVAAAA','RFBAAA','VVVVxx'
+2826,824,0,2,6,6,26,826,826,2826,2826,52,53,'SEAAAA','SFBAAA','AAAAxx'
+7496,825,0,0,6,16,96,496,1496,2496,7496,192,193,'ICAAAA','TFBAAA','HHHHxx'
+3024,826,0,0,4,4,24,24,1024,3024,3024,48,49,'IMAAAA','UFBAAA','OOOOxx'
+4945,827,1,1,5,5,45,945,945,4945,4945,90,91,'FIAAAA','VFBAAA','VVVVxx'
+4404,828,0,0,4,4,4,404,404,4404,4404,8,9,'KNAAAA','WFBAAA','AAAAxx'
+9302,829,0,2,2,2,2,302,1302,4302,9302,4,5,'UTAAAA','XFBAAA','HHHHxx'
+1286,830,0,2,6,6,86,286,1286,1286,1286,172,173,'MXAAAA','YFBAAA','OOOOxx'
+8435,831,1,3,5,15,35,435,435,3435,8435,70,71,'LMAAAA','ZFBAAA','VVVVxx'
+8969,832,1,1,9,9,69,969,969,3969,8969,138,139,'ZGAAAA','AGBAAA','AAAAxx'
+3302,833,0,2,2,2,2,302,1302,3302,3302,4,5,'AXAAAA','BGBAAA','HHHHxx'
+9753,834,1,1,3,13,53,753,1753,4753,9753,106,107,'DLAAAA','CGBAAA','OOOOxx'
+9374,835,0,2,4,14,74,374,1374,4374,9374,148,149,'OWAAAA','DGBAAA','VVVVxx'
+4907,836,1,3,7,7,7,907,907,4907,4907,14,15,'TGAAAA','EGBAAA','AAAAxx'
+1659,837,1,3,9,19,59,659,1659,1659,1659,118,119,'VLAAAA','FGBAAA','HHHHxx'
+5095,838,1,3,5,15,95,95,1095,95,5095,190,191,'ZNAAAA','GGBAAA','OOOOxx'
+9446,839,0,2,6,6,46,446,1446,4446,9446,92,93,'IZAAAA','HGBAAA','VVVVxx'
+8528,840,0,0,8,8,28,528,528,3528,8528,56,57,'AQAAAA','IGBAAA','AAAAxx'
+4890,841,0,2,0,10,90,890,890,4890,4890,180,181,'CGAAAA','JGBAAA','HHHHxx'
+1221,842,1,1,1,1,21,221,1221,1221,1221,42,43,'ZUAAAA','KGBAAA','OOOOxx'
+5583,843,1,3,3,3,83,583,1583,583,5583,166,167,'TGAAAA','LGBAAA','VVVVxx'
+7303,844,1,3,3,3,3,303,1303,2303,7303,6,7,'XUAAAA','MGBAAA','AAAAxx'
+406,845,0,2,6,6,6,406,406,406,406,12,13,'QPAAAA','NGBAAA','HHHHxx'
+7542,846,0,2,2,2,42,542,1542,2542,7542,84,85,'CEAAAA','OGBAAA','OOOOxx'
+9507,847,1,3,7,7,7,507,1507,4507,9507,14,15,'RBAAAA','PGBAAA','VVVVxx'
+9511,848,1,3,1,11,11,511,1511,4511,9511,22,23,'VBAAAA','QGBAAA','AAAAxx'
+1373,849,1,1,3,13,73,373,1373,1373,1373,146,147,'VAAAAA','RGBAAA','HHHHxx'
+6556,850,0,0,6,16,56,556,556,1556,6556,112,113,'ESAAAA','SGBAAA','OOOOxx'
+4117,851,1,1,7,17,17,117,117,4117,4117,34,35,'JCAAAA','TGBAAA','VVVVxx'
+7794,852,0,2,4,14,94,794,1794,2794,7794,188,189,'UNAAAA','UGBAAA','AAAAxx'
+7170,853,0,2,0,10,70,170,1170,2170,7170,140,141,'UPAAAA','VGBAAA','HHHHxx'
+5809,854,1,1,9,9,9,809,1809,809,5809,18,19,'LPAAAA','WGBAAA','OOOOxx'
+7828,855,0,0,8,8,28,828,1828,2828,7828,56,57,'CPAAAA','XGBAAA','VVVVxx'
+8046,856,0,2,6,6,46,46,46,3046,8046,92,93,'MXAAAA','YGBAAA','AAAAxx'
+4833,857,1,1,3,13,33,833,833,4833,4833,66,67,'XDAAAA','ZGBAAA','HHHHxx'
+2107,858,1,3,7,7,7,107,107,2107,2107,14,15,'BDAAAA','AHBAAA','OOOOxx'
+4276,859,0,0,6,16,76,276,276,4276,4276,152,153,'MIAAAA','BHBAAA','VVVVxx'
+9536,860,0,0,6,16,36,536,1536,4536,9536,72,73,'UCAAAA','CHBAAA','AAAAxx'
+5549,861,1,1,9,9,49,549,1549,549,5549,98,99,'LFAAAA','DHBAAA','HHHHxx'
+6427,862,1,3,7,7,27,427,427,1427,6427,54,55,'FNAAAA','EHBAAA','OOOOxx'
+1382,863,0,2,2,2,82,382,1382,1382,1382,164,165,'EBAAAA','FHBAAA','VVVVxx'
+3256,864,0,0,6,16,56,256,1256,3256,3256,112,113,'GVAAAA','GHBAAA','AAAAxx'
+3270,865,0,2,0,10,70,270,1270,3270,3270,140,141,'UVAAAA','HHBAAA','HHHHxx'
+4808,866,0,0,8,8,8,808,808,4808,4808,16,17,'YCAAAA','IHBAAA','OOOOxx'
+7938,867,0,2,8,18,38,938,1938,2938,7938,76,77,'ITAAAA','JHBAAA','VVVVxx'
+4405,868,1,1,5,5,5,405,405,4405,4405,10,11,'LNAAAA','KHBAAA','AAAAxx'
+2264,869,0,0,4,4,64,264,264,2264,2264,128,129,'CJAAAA','LHBAAA','HHHHxx'
+80,870,0,0,0,0,80,80,80,80,80,160,161,'CDAAAA','MHBAAA','OOOOxx'
+320,871,0,0,0,0,20,320,320,320,320,40,41,'IMAAAA','NHBAAA','VVVVxx'
+2383,872,1,3,3,3,83,383,383,2383,2383,166,167,'RNAAAA','OHBAAA','AAAAxx'
+3146,873,0,2,6,6,46,146,1146,3146,3146,92,93,'ARAAAA','PHBAAA','HHHHxx'
+6911,874,1,3,1,11,11,911,911,1911,6911,22,23,'VFAAAA','QHBAAA','OOOOxx'
+7377,875,1,1,7,17,77,377,1377,2377,7377,154,155,'TXAAAA','RHBAAA','VVVVxx'
+9965,876,1,1,5,5,65,965,1965,4965,9965,130,131,'HTAAAA','SHBAAA','AAAAxx'
+8361,877,1,1,1,1,61,361,361,3361,8361,122,123,'PJAAAA','THBAAA','HHHHxx'
+9417,878,1,1,7,17,17,417,1417,4417,9417,34,35,'FYAAAA','UHBAAA','OOOOxx'
+2483,879,1,3,3,3,83,483,483,2483,2483,166,167,'NRAAAA','VHBAAA','VVVVxx'
+9843,880,1,3,3,3,43,843,1843,4843,9843,86,87,'POAAAA','WHBAAA','AAAAxx'
+6395,881,1,3,5,15,95,395,395,1395,6395,190,191,'ZLAAAA','XHBAAA','HHHHxx'
+6444,882,0,0,4,4,44,444,444,1444,6444,88,89,'WNAAAA','YHBAAA','OOOOxx'
+1820,883,0,0,0,0,20,820,1820,1820,1820,40,41,'ASAAAA','ZHBAAA','VVVVxx'
+2768,884,0,0,8,8,68,768,768,2768,2768,136,137,'MCAAAA','AIBAAA','AAAAxx'
+5413,885,1,1,3,13,13,413,1413,413,5413,26,27,'FAAAAA','BIBAAA','HHHHxx'
+2923,886,1,3,3,3,23,923,923,2923,2923,46,47,'LIAAAA','CIBAAA','OOOOxx'
+5286,887,0,2,6,6,86,286,1286,286,5286,172,173,'IVAAAA','DIBAAA','VVVVxx'
+6126,888,0,2,6,6,26,126,126,1126,6126,52,53,'QBAAAA','EIBAAA','AAAAxx'
+8343,889,1,3,3,3,43,343,343,3343,8343,86,87,'XIAAAA','FIBAAA','HHHHxx'
+6010,890,0,2,0,10,10,10,10,1010,6010,20,21,'EXAAAA','GIBAAA','OOOOxx'
+4177,891,1,1,7,17,77,177,177,4177,4177,154,155,'REAAAA','HIBAAA','VVVVxx'
+5808,892,0,0,8,8,8,808,1808,808,5808,16,17,'KPAAAA','IIBAAA','AAAAxx'
+4859,893,1,3,9,19,59,859,859,4859,4859,118,119,'XEAAAA','JIBAAA','HHHHxx'
+9252,894,0,0,2,12,52,252,1252,4252,9252,104,105,'WRAAAA','KIBAAA','OOOOxx'
+2941,895,1,1,1,1,41,941,941,2941,2941,82,83,'DJAAAA','LIBAAA','VVVVxx'
+8693,896,1,1,3,13,93,693,693,3693,8693,186,187,'JWAAAA','MIBAAA','AAAAxx'
+4432,897,0,0,2,12,32,432,432,4432,4432,64,65,'MOAAAA','NIBAAA','HHHHxx'
+2371,898,1,3,1,11,71,371,371,2371,2371,142,143,'FNAAAA','OIBAAA','OOOOxx'
+7546,899,0,2,6,6,46,546,1546,2546,7546,92,93,'GEAAAA','PIBAAA','VVVVxx'
+1369,900,1,1,9,9,69,369,1369,1369,1369,138,139,'RAAAAA','QIBAAA','AAAAxx'
+4687,901,1,3,7,7,87,687,687,4687,4687,174,175,'HYAAAA','RIBAAA','HHHHxx'
+8941,902,1,1,1,1,41,941,941,3941,8941,82,83,'XFAAAA','SIBAAA','OOOOxx'
+226,903,0,2,6,6,26,226,226,226,226,52,53,'SIAAAA','TIBAAA','VVVVxx'
+3493,904,1,1,3,13,93,493,1493,3493,3493,186,187,'JEAAAA','UIBAAA','AAAAxx'
+6433,905,1,1,3,13,33,433,433,1433,6433,66,67,'LNAAAA','VIBAAA','HHHHxx'
+9189,906,1,1,9,9,89,189,1189,4189,9189,178,179,'LPAAAA','WIBAAA','OOOOxx'
+6027,907,1,3,7,7,27,27,27,1027,6027,54,55,'VXAAAA','XIBAAA','VVVVxx'
+4615,908,1,3,5,15,15,615,615,4615,4615,30,31,'NVAAAA','YIBAAA','AAAAxx'
+5320,909,0,0,0,0,20,320,1320,320,5320,40,41,'QWAAAA','ZIBAAA','HHHHxx'
+7002,910,0,2,2,2,2,2,1002,2002,7002,4,5,'IJAAAA','AJBAAA','OOOOxx'
+7367,911,1,3,7,7,67,367,1367,2367,7367,134,135,'JXAAAA','BJBAAA','VVVVxx'
+289,912,1,1,9,9,89,289,289,289,289,178,179,'DLAAAA','CJBAAA','AAAAxx'
+407,913,1,3,7,7,7,407,407,407,407,14,15,'RPAAAA','DJBAAA','HHHHxx'
+504,914,0,0,4,4,4,504,504,504,504,8,9,'KTAAAA','EJBAAA','OOOOxx'
+8301,915,1,1,1,1,1,301,301,3301,8301,2,3,'HHAAAA','FJBAAA','VVVVxx'
+1396,916,0,0,6,16,96,396,1396,1396,1396,192,193,'SBAAAA','GJBAAA','AAAAxx'
+4794,917,0,2,4,14,94,794,794,4794,4794,188,189,'KCAAAA','HJBAAA','HHHHxx'
+6400,918,0,0,0,0,0,400,400,1400,6400,0,1,'EMAAAA','IJBAAA','OOOOxx'
+1275,919,1,3,5,15,75,275,1275,1275,1275,150,151,'BXAAAA','JJBAAA','VVVVxx'
+5797,920,1,1,7,17,97,797,1797,797,5797,194,195,'ZOAAAA','KJBAAA','AAAAxx'
+2221,921,1,1,1,1,21,221,221,2221,2221,42,43,'LHAAAA','LJBAAA','HHHHxx'
+2504,922,0,0,4,4,4,504,504,2504,2504,8,9,'ISAAAA','MJBAAA','OOOOxx'
+2143,923,1,3,3,3,43,143,143,2143,2143,86,87,'LEAAAA','NJBAAA','VVVVxx'
+1083,924,1,3,3,3,83,83,1083,1083,1083,166,167,'RPAAAA','OJBAAA','AAAAxx'
+6148,925,0,0,8,8,48,148,148,1148,6148,96,97,'MCAAAA','PJBAAA','HHHHxx'
+3612,926,0,0,2,12,12,612,1612,3612,3612,24,25,'YIAAAA','QJBAAA','OOOOxx'
+9499,927,1,3,9,19,99,499,1499,4499,9499,198,199,'JBAAAA','RJBAAA','VVVVxx'
+5773,928,1,1,3,13,73,773,1773,773,5773,146,147,'BOAAAA','SJBAAA','AAAAxx'
+1014,929,0,2,4,14,14,14,1014,1014,1014,28,29,'ANAAAA','TJBAAA','HHHHxx'
+1427,930,1,3,7,7,27,427,1427,1427,1427,54,55,'XCAAAA','UJBAAA','OOOOxx'
+6770,931,0,2,0,10,70,770,770,1770,6770,140,141,'KAAAAA','VJBAAA','VVVVxx'
+9042,932,0,2,2,2,42,42,1042,4042,9042,84,85,'UJAAAA','WJBAAA','AAAAxx'
+9892,933,0,0,2,12,92,892,1892,4892,9892,184,185,'MQAAAA','XJBAAA','HHHHxx'
+1771,934,1,3,1,11,71,771,1771,1771,1771,142,143,'DQAAAA','YJBAAA','OOOOxx'
+7392,935,0,0,2,12,92,392,1392,2392,7392,184,185,'IYAAAA','ZJBAAA','VVVVxx'
+4465,936,1,1,5,5,65,465,465,4465,4465,130,131,'TPAAAA','AKBAAA','AAAAxx'
+278,937,0,2,8,18,78,278,278,278,278,156,157,'SKAAAA','BKBAAA','HHHHxx'
+7776,938,0,0,6,16,76,776,1776,2776,7776,152,153,'CNAAAA','CKBAAA','OOOOxx'
+3763,939,1,3,3,3,63,763,1763,3763,3763,126,127,'TOAAAA','DKBAAA','VVVVxx'
+7503,940,1,3,3,3,3,503,1503,2503,7503,6,7,'PCAAAA','EKBAAA','AAAAxx'
+3793,941,1,1,3,13,93,793,1793,3793,3793,186,187,'XPAAAA','FKBAAA','HHHHxx'
+6510,942,0,2,0,10,10,510,510,1510,6510,20,21,'KQAAAA','GKBAAA','OOOOxx'
+7641,943,1,1,1,1,41,641,1641,2641,7641,82,83,'XHAAAA','HKBAAA','VVVVxx'
+3228,944,0,0,8,8,28,228,1228,3228,3228,56,57,'EUAAAA','IKBAAA','AAAAxx'
+194,945,0,2,4,14,94,194,194,194,194,188,189,'MHAAAA','JKBAAA','HHHHxx'
+8555,946,1,3,5,15,55,555,555,3555,8555,110,111,'BRAAAA','KKBAAA','OOOOxx'
+4997,947,1,1,7,17,97,997,997,4997,4997,194,195,'FKAAAA','LKBAAA','VVVVxx'
+8687,948,1,3,7,7,87,687,687,3687,8687,174,175,'DWAAAA','MKBAAA','AAAAxx'
+6632,949,0,0,2,12,32,632,632,1632,6632,64,65,'CVAAAA','NKBAAA','HHHHxx'
+9607,950,1,3,7,7,7,607,1607,4607,9607,14,15,'NFAAAA','OKBAAA','OOOOxx'
+6201,951,1,1,1,1,1,201,201,1201,6201,2,3,'NEAAAA','PKBAAA','VVVVxx'
+857,952,1,1,7,17,57,857,857,857,857,114,115,'ZGAAAA','QKBAAA','AAAAxx'
+5623,953,1,3,3,3,23,623,1623,623,5623,46,47,'HIAAAA','RKBAAA','HHHHxx'
+5979,954,1,3,9,19,79,979,1979,979,5979,158,159,'ZVAAAA','SKBAAA','OOOOxx'
+2201,955,1,1,1,1,1,201,201,2201,2201,2,3,'RGAAAA','TKBAAA','VVVVxx'
+3166,956,0,2,6,6,66,166,1166,3166,3166,132,133,'URAAAA','UKBAAA','AAAAxx'
+6249,957,1,1,9,9,49,249,249,1249,6249,98,99,'JGAAAA','VKBAAA','HHHHxx'
+3271,958,1,3,1,11,71,271,1271,3271,3271,142,143,'VVAAAA','WKBAAA','OOOOxx'
+7777,959,1,1,7,17,77,777,1777,2777,7777,154,155,'DNAAAA','XKBAAA','VVVVxx'
+6732,960,0,0,2,12,32,732,732,1732,6732,64,65,'YYAAAA','YKBAAA','AAAAxx'
+6297,961,1,1,7,17,97,297,297,1297,6297,194,195,'FIAAAA','ZKBAAA','HHHHxx'
+5685,962,1,1,5,5,85,685,1685,685,5685,170,171,'RKAAAA','ALBAAA','OOOOxx'
+9931,963,1,3,1,11,31,931,1931,4931,9931,62,63,'ZRAAAA','BLBAAA','VVVVxx'
+7485,964,1,1,5,5,85,485,1485,2485,7485,170,171,'XBAAAA','CLBAAA','AAAAxx'
+386,965,0,2,6,6,86,386,386,386,386,172,173,'WOAAAA','DLBAAA','HHHHxx'
+8204,966,0,0,4,4,4,204,204,3204,8204,8,9,'ODAAAA','ELBAAA','OOOOxx'
+3606,967,0,2,6,6,6,606,1606,3606,3606,12,13,'SIAAAA','FLBAAA','VVVVxx'
+1692,968,0,0,2,12,92,692,1692,1692,1692,184,185,'CNAAAA','GLBAAA','AAAAxx'
+3002,969,0,2,2,2,2,2,1002,3002,3002,4,5,'MLAAAA','HLBAAA','HHHHxx'
+9676,970,0,0,6,16,76,676,1676,4676,9676,152,153,'EIAAAA','ILBAAA','OOOOxx'
+915,971,1,3,5,15,15,915,915,915,915,30,31,'FJAAAA','JLBAAA','VVVVxx'
+7706,972,0,2,6,6,6,706,1706,2706,7706,12,13,'KKAAAA','KLBAAA','AAAAxx'
+6080,973,0,0,0,0,80,80,80,1080,6080,160,161,'WZAAAA','LLBAAA','HHHHxx'
+1860,974,0,0,0,0,60,860,1860,1860,1860,120,121,'OTAAAA','MLBAAA','OOOOxx'
+1444,975,0,0,4,4,44,444,1444,1444,1444,88,89,'ODAAAA','NLBAAA','VVVVxx'
+7208,976,0,0,8,8,8,208,1208,2208,7208,16,17,'GRAAAA','OLBAAA','AAAAxx'
+8554,977,0,2,4,14,54,554,554,3554,8554,108,109,'ARAAAA','PLBAAA','HHHHxx'
+2028,978,0,0,8,8,28,28,28,2028,2028,56,57,'AAAAAA','QLBAAA','OOOOxx'
+9893,979,1,1,3,13,93,893,1893,4893,9893,186,187,'NQAAAA','RLBAAA','VVVVxx'
+4740,980,0,0,0,0,40,740,740,4740,4740,80,81,'IAAAAA','SLBAAA','AAAAxx'
+6186,981,0,2,6,6,86,186,186,1186,6186,172,173,'YDAAAA','TLBAAA','HHHHxx'
+6357,982,1,1,7,17,57,357,357,1357,6357,114,115,'NKAAAA','ULBAAA','OOOOxx'
+3699,983,1,3,9,19,99,699,1699,3699,3699,198,199,'HMAAAA','VLBAAA','VVVVxx'
+7620,984,0,0,0,0,20,620,1620,2620,7620,40,41,'CHAAAA','WLBAAA','AAAAxx'
+921,985,1,1,1,1,21,921,921,921,921,42,43,'LJAAAA','XLBAAA','HHHHxx'
+5506,986,0,2,6,6,6,506,1506,506,5506,12,13,'UDAAAA','YLBAAA','OOOOxx'
+8851,987,1,3,1,11,51,851,851,3851,8851,102,103,'LCAAAA','ZLBAAA','VVVVxx'
+3205,988,1,1,5,5,5,205,1205,3205,3205,10,11,'HTAAAA','AMBAAA','AAAAxx'
+1956,989,0,0,6,16,56,956,1956,1956,1956,112,113,'GXAAAA','BMBAAA','HHHHxx'
+6272,990,0,0,2,12,72,272,272,1272,6272,144,145,'GHAAAA','CMBAAA','OOOOxx'
+1509,991,1,1,9,9,9,509,1509,1509,1509,18,19,'BGAAAA','DMBAAA','VVVVxx'
+53,992,1,1,3,13,53,53,53,53,53,106,107,'BCAAAA','EMBAAA','AAAAxx'
+213,993,1,1,3,13,13,213,213,213,213,26,27,'FIAAAA','FMBAAA','HHHHxx'
+4924,994,0,0,4,4,24,924,924,4924,4924,48,49,'KHAAAA','GMBAAA','OOOOxx'
+2097,995,1,1,7,17,97,97,97,2097,2097,194,195,'RCAAAA','HMBAAA','VVVVxx'
+4607,996,1,3,7,7,7,607,607,4607,4607,14,15,'FVAAAA','IMBAAA','AAAAxx'
+1582,997,0,2,2,2,82,582,1582,1582,1582,164,165,'WIAAAA','JMBAAA','HHHHxx'
+6643,998,1,3,3,3,43,643,643,1643,6643,86,87,'NVAAAA','KMBAAA','OOOOxx'
+2238,999,0,2,8,18,38,238,238,2238,2238,76,77,'CIAAAA','LMBAAA','VVVVxx'
+2942,1000,0,2,2,2,42,942,942,2942,2942,84,85,'EJAAAA','MMBAAA','AAAAxx'
+1655,1001,1,3,5,15,55,655,1655,1655,1655,110,111,'RLAAAA','NMBAAA','HHHHxx'
+3226,1002,0,2,6,6,26,226,1226,3226,3226,52,53,'CUAAAA','OMBAAA','OOOOxx'
+4263,1003,1,3,3,3,63,263,263,4263,4263,126,127,'ZHAAAA','PMBAAA','VVVVxx'
+960,1004,0,0,0,0,60,960,960,960,960,120,121,'YKAAAA','QMBAAA','AAAAxx'
+1213,1005,1,1,3,13,13,213,1213,1213,1213,26,27,'RUAAAA','RMBAAA','HHHHxx'
+1845,1006,1,1,5,5,45,845,1845,1845,1845,90,91,'ZSAAAA','SMBAAA','OOOOxx'
+6944,1007,0,0,4,4,44,944,944,1944,6944,88,89,'CHAAAA','TMBAAA','VVVVxx'
+5284,1008,0,0,4,4,84,284,1284,284,5284,168,169,'GVAAAA','UMBAAA','AAAAxx'
+188,1009,0,0,8,8,88,188,188,188,188,176,177,'GHAAAA','VMBAAA','HHHHxx'
+748,1010,0,0,8,8,48,748,748,748,748,96,97,'UCAAAA','WMBAAA','OOOOxx'
+2226,1011,0,2,6,6,26,226,226,2226,2226,52,53,'QHAAAA','XMBAAA','VVVVxx'
+7342,1012,0,2,2,2,42,342,1342,2342,7342,84,85,'KWAAAA','YMBAAA','AAAAxx'
+6120,1013,0,0,0,0,20,120,120,1120,6120,40,41,'KBAAAA','ZMBAAA','HHHHxx'
+536,1014,0,0,6,16,36,536,536,536,536,72,73,'QUAAAA','ANBAAA','OOOOxx'
+3239,1015,1,3,9,19,39,239,1239,3239,3239,78,79,'PUAAAA','BNBAAA','VVVVxx'
+2832,1016,0,0,2,12,32,832,832,2832,2832,64,65,'YEAAAA','CNBAAA','AAAAxx'
+5296,1017,0,0,6,16,96,296,1296,296,5296,192,193,'SVAAAA','DNBAAA','HHHHxx'
+5795,1018,1,3,5,15,95,795,1795,795,5795,190,191,'XOAAAA','ENBAAA','OOOOxx'
+6290,1019,0,2,0,10,90,290,290,1290,6290,180,181,'YHAAAA','FNBAAA','VVVVxx'
+4916,1020,0,0,6,16,16,916,916,4916,4916,32,33,'CHAAAA','GNBAAA','AAAAxx'
+8366,1021,0,2,6,6,66,366,366,3366,8366,132,133,'UJAAAA','HNBAAA','HHHHxx'
+4248,1022,0,0,8,8,48,248,248,4248,4248,96,97,'KHAAAA','INBAAA','OOOOxx'
+6460,1023,0,0,0,0,60,460,460,1460,6460,120,121,'MOAAAA','JNBAAA','VVVVxx'
+9296,1024,0,0,6,16,96,296,1296,4296,9296,192,193,'OTAAAA','KNBAAA','AAAAxx'
+3486,1025,0,2,6,6,86,486,1486,3486,3486,172,173,'CEAAAA','LNBAAA','HHHHxx'
+5664,1026,0,0,4,4,64,664,1664,664,5664,128,129,'WJAAAA','MNBAAA','OOOOxx'
+7624,1027,0,0,4,4,24,624,1624,2624,7624,48,49,'GHAAAA','NNBAAA','VVVVxx'
+2790,1028,0,2,0,10,90,790,790,2790,2790,180,181,'IDAAAA','ONBAAA','AAAAxx'
+682,1029,0,2,2,2,82,682,682,682,682,164,165,'GAAAAA','PNBAAA','HHHHxx'
+6412,1030,0,0,2,12,12,412,412,1412,6412,24,25,'QMAAAA','QNBAAA','OOOOxx'
+6882,1031,0,2,2,2,82,882,882,1882,6882,164,165,'SEAAAA','RNBAAA','VVVVxx'
+1332,1032,0,0,2,12,32,332,1332,1332,1332,64,65,'GZAAAA','SNBAAA','AAAAxx'
+4911,1033,1,3,1,11,11,911,911,4911,4911,22,23,'XGAAAA','TNBAAA','HHHHxx'
+3528,1034,0,0,8,8,28,528,1528,3528,3528,56,57,'SFAAAA','UNBAAA','OOOOxx'
+271,1035,1,3,1,11,71,271,271,271,271,142,143,'LKAAAA','VNBAAA','VVVVxx'
+7007,1036,1,3,7,7,7,7,1007,2007,7007,14,15,'NJAAAA','WNBAAA','AAAAxx'
+2198,1037,0,2,8,18,98,198,198,2198,2198,196,197,'OGAAAA','XNBAAA','HHHHxx'
+4266,1038,0,2,6,6,66,266,266,4266,4266,132,133,'CIAAAA','YNBAAA','OOOOxx'
+9867,1039,1,3,7,7,67,867,1867,4867,9867,134,135,'NPAAAA','ZNBAAA','VVVVxx'
+7602,1040,0,2,2,2,2,602,1602,2602,7602,4,5,'KGAAAA','AOBAAA','AAAAxx'
+7521,1041,1,1,1,1,21,521,1521,2521,7521,42,43,'HDAAAA','BOBAAA','HHHHxx'
+7200,1042,0,0,0,0,0,200,1200,2200,7200,0,1,'YQAAAA','COBAAA','OOOOxx'
+4816,1043,0,0,6,16,16,816,816,4816,4816,32,33,'GDAAAA','DOBAAA','VVVVxx'
+1669,1044,1,1,9,9,69,669,1669,1669,1669,138,139,'FMAAAA','EOBAAA','AAAAxx'
+4764,1045,0,0,4,4,64,764,764,4764,4764,128,129,'GBAAAA','FOBAAA','HHHHxx'
+7393,1046,1,1,3,13,93,393,1393,2393,7393,186,187,'JYAAAA','GOBAAA','OOOOxx'
+7434,1047,0,2,4,14,34,434,1434,2434,7434,68,69,'YZAAAA','HOBAAA','VVVVxx'
+9079,1048,1,3,9,19,79,79,1079,4079,9079,158,159,'FLAAAA','IOBAAA','AAAAxx'
+9668,1049,0,0,8,8,68,668,1668,4668,9668,136,137,'WHAAAA','JOBAAA','HHHHxx'
+7184,1050,0,0,4,4,84,184,1184,2184,7184,168,169,'IQAAAA','KOBAAA','OOOOxx'
+7347,1051,1,3,7,7,47,347,1347,2347,7347,94,95,'PWAAAA','LOBAAA','VVVVxx'
+951,1052,1,3,1,11,51,951,951,951,951,102,103,'PKAAAA','MOBAAA','AAAAxx'
+4513,1053,1,1,3,13,13,513,513,4513,4513,26,27,'PRAAAA','NOBAAA','HHHHxx'
+2692,1054,0,0,2,12,92,692,692,2692,2692,184,185,'OZAAAA','OOBAAA','OOOOxx'
+9930,1055,0,2,0,10,30,930,1930,4930,9930,60,61,'YRAAAA','POBAAA','VVVVxx'
+4516,1056,0,0,6,16,16,516,516,4516,4516,32,33,'SRAAAA','QOBAAA','AAAAxx'
+1592,1057,0,0,2,12,92,592,1592,1592,1592,184,185,'GJAAAA','ROBAAA','HHHHxx'
+6312,1058,0,0,2,12,12,312,312,1312,6312,24,25,'UIAAAA','SOBAAA','OOOOxx'
+185,1059,1,1,5,5,85,185,185,185,185,170,171,'DHAAAA','TOBAAA','VVVVxx'
+1848,1060,0,0,8,8,48,848,1848,1848,1848,96,97,'CTAAAA','UOBAAA','AAAAxx'
+5844,1061,0,0,4,4,44,844,1844,844,5844,88,89,'UQAAAA','VOBAAA','HHHHxx'
+1666,1062,0,2,6,6,66,666,1666,1666,1666,132,133,'CMAAAA','WOBAAA','OOOOxx'
+5864,1063,0,0,4,4,64,864,1864,864,5864,128,129,'ORAAAA','XOBAAA','VVVVxx'
+1004,1064,0,0,4,4,4,4,1004,1004,1004,8,9,'QMAAAA','YOBAAA','AAAAxx'
+1758,1065,0,2,8,18,58,758,1758,1758,1758,116,117,'QPAAAA','ZOBAAA','HHHHxx'
+8823,1066,1,3,3,3,23,823,823,3823,8823,46,47,'JBAAAA','APBAAA','OOOOxx'
+129,1067,1,1,9,9,29,129,129,129,129,58,59,'ZEAAAA','BPBAAA','VVVVxx'
+5703,1068,1,3,3,3,3,703,1703,703,5703,6,7,'JLAAAA','CPBAAA','AAAAxx'
+3331,1069,1,3,1,11,31,331,1331,3331,3331,62,63,'DYAAAA','DPBAAA','HHHHxx'
+5791,1070,1,3,1,11,91,791,1791,791,5791,182,183,'TOAAAA','EPBAAA','OOOOxx'
+4421,1071,1,1,1,1,21,421,421,4421,4421,42,43,'BOAAAA','FPBAAA','VVVVxx'
+9740,1072,0,0,0,0,40,740,1740,4740,9740,80,81,'QKAAAA','GPBAAA','AAAAxx'
+798,1073,0,2,8,18,98,798,798,798,798,196,197,'SEAAAA','HPBAAA','HHHHxx'
+571,1074,1,3,1,11,71,571,571,571,571,142,143,'ZVAAAA','IPBAAA','OOOOxx'
+7084,1075,0,0,4,4,84,84,1084,2084,7084,168,169,'MMAAAA','JPBAAA','VVVVxx'
+650,1076,0,2,0,10,50,650,650,650,650,100,101,'AZAAAA','KPBAAA','AAAAxx'
+1467,1077,1,3,7,7,67,467,1467,1467,1467,134,135,'LEAAAA','LPBAAA','HHHHxx'
+5446,1078,0,2,6,6,46,446,1446,446,5446,92,93,'MBAAAA','MPBAAA','OOOOxx'
+830,1079,0,2,0,10,30,830,830,830,830,60,61,'YFAAAA','NPBAAA','VVVVxx'
+5516,1080,0,0,6,16,16,516,1516,516,5516,32,33,'EEAAAA','OPBAAA','AAAAxx'
+8520,1081,0,0,0,0,20,520,520,3520,8520,40,41,'SPAAAA','PPBAAA','HHHHxx'
+1152,1082,0,0,2,12,52,152,1152,1152,1152,104,105,'ISAAAA','QPBAAA','OOOOxx'
+862,1083,0,2,2,2,62,862,862,862,862,124,125,'EHAAAA','RPBAAA','VVVVxx'
+454,1084,0,2,4,14,54,454,454,454,454,108,109,'MRAAAA','SPBAAA','AAAAxx'
+9956,1085,0,0,6,16,56,956,1956,4956,9956,112,113,'YSAAAA','TPBAAA','HHHHxx'
+1654,1086,0,2,4,14,54,654,1654,1654,1654,108,109,'QLAAAA','UPBAAA','OOOOxx'
+257,1087,1,1,7,17,57,257,257,257,257,114,115,'XJAAAA','VPBAAA','VVVVxx'
+5469,1088,1,1,9,9,69,469,1469,469,5469,138,139,'JCAAAA','WPBAAA','AAAAxx'
+9075,1089,1,3,5,15,75,75,1075,4075,9075,150,151,'BLAAAA','XPBAAA','HHHHxx'
+7799,1090,1,3,9,19,99,799,1799,2799,7799,198,199,'ZNAAAA','YPBAAA','OOOOxx'
+2001,1091,1,1,1,1,1,1,1,2001,2001,2,3,'ZYAAAA','ZPBAAA','VVVVxx'
+9786,1092,0,2,6,6,86,786,1786,4786,9786,172,173,'KMAAAA','AQBAAA','AAAAxx'
+7281,1093,1,1,1,1,81,281,1281,2281,7281,162,163,'BUAAAA','BQBAAA','HHHHxx'
+5137,1094,1,1,7,17,37,137,1137,137,5137,74,75,'PPAAAA','CQBAAA','OOOOxx'
+4053,1095,1,1,3,13,53,53,53,4053,4053,106,107,'XZAAAA','DQBAAA','VVVVxx'
+7911,1096,1,3,1,11,11,911,1911,2911,7911,22,23,'HSAAAA','EQBAAA','AAAAxx'
+4298,1097,0,2,8,18,98,298,298,4298,4298,196,197,'IJAAAA','FQBAAA','HHHHxx'
+4805,1098,1,1,5,5,5,805,805,4805,4805,10,11,'VCAAAA','GQBAAA','OOOOxx'
+9038,1099,0,2,8,18,38,38,1038,4038,9038,76,77,'QJAAAA','HQBAAA','VVVVxx'
+8023,1100,1,3,3,3,23,23,23,3023,8023,46,47,'PWAAAA','IQBAAA','AAAAxx'
+6595,1101,1,3,5,15,95,595,595,1595,6595,190,191,'RTAAAA','JQBAAA','HHHHxx'
+9831,1102,1,3,1,11,31,831,1831,4831,9831,62,63,'DOAAAA','KQBAAA','OOOOxx'
+788,1103,0,0,8,8,88,788,788,788,788,176,177,'IEAAAA','LQBAAA','VVVVxx'
+902,1104,0,2,2,2,2,902,902,902,902,4,5,'SIAAAA','MQBAAA','AAAAxx'
+9137,1105,1,1,7,17,37,137,1137,4137,9137,74,75,'LNAAAA','NQBAAA','HHHHxx'
+1744,1106,0,0,4,4,44,744,1744,1744,1744,88,89,'CPAAAA','OQBAAA','OOOOxx'
+7285,1107,1,1,5,5,85,285,1285,2285,7285,170,171,'FUAAAA','PQBAAA','VVVVxx'
+7006,1108,0,2,6,6,6,6,1006,2006,7006,12,13,'MJAAAA','QQBAAA','AAAAxx'
+9236,1109,0,0,6,16,36,236,1236,4236,9236,72,73,'GRAAAA','RQBAAA','HHHHxx'
+5472,1110,0,0,2,12,72,472,1472,472,5472,144,145,'MCAAAA','SQBAAA','OOOOxx'
+7975,1111,1,3,5,15,75,975,1975,2975,7975,150,151,'TUAAAA','TQBAAA','VVVVxx'
+4181,1112,1,1,1,1,81,181,181,4181,4181,162,163,'VEAAAA','UQBAAA','AAAAxx'
+7677,1113,1,1,7,17,77,677,1677,2677,7677,154,155,'HJAAAA','VQBAAA','HHHHxx'
+35,1114,1,3,5,15,35,35,35,35,35,70,71,'JBAAAA','WQBAAA','OOOOxx'
+6813,1115,1,1,3,13,13,813,813,1813,6813,26,27,'BCAAAA','XQBAAA','VVVVxx'
+6618,1116,0,2,8,18,18,618,618,1618,6618,36,37,'OUAAAA','YQBAAA','AAAAxx'
+8069,1117,1,1,9,9,69,69,69,3069,8069,138,139,'JYAAAA','ZQBAAA','HHHHxx'
+3071,1118,1,3,1,11,71,71,1071,3071,3071,142,143,'DOAAAA','ARBAAA','OOOOxx'
+4390,1119,0,2,0,10,90,390,390,4390,4390,180,181,'WMAAAA','BRBAAA','VVVVxx'
+7764,1120,0,0,4,4,64,764,1764,2764,7764,128,129,'QMAAAA','CRBAAA','AAAAxx'
+8163,1121,1,3,3,3,63,163,163,3163,8163,126,127,'ZBAAAA','DRBAAA','HHHHxx'
+1961,1122,1,1,1,1,61,961,1961,1961,1961,122,123,'LXAAAA','ERBAAA','OOOOxx'
+1103,1123,1,3,3,3,3,103,1103,1103,1103,6,7,'LQAAAA','FRBAAA','VVVVxx'
+5486,1124,0,2,6,6,86,486,1486,486,5486,172,173,'ADAAAA','GRBAAA','AAAAxx'
+9513,1125,1,1,3,13,13,513,1513,4513,9513,26,27,'XBAAAA','HRBAAA','HHHHxx'
+7311,1126,1,3,1,11,11,311,1311,2311,7311,22,23,'FVAAAA','IRBAAA','OOOOxx'
+4144,1127,0,0,4,4,44,144,144,4144,4144,88,89,'KDAAAA','JRBAAA','VVVVxx'
+7901,1128,1,1,1,1,1,901,1901,2901,7901,2,3,'XRAAAA','KRBAAA','AAAAxx'
+4629,1129,1,1,9,9,29,629,629,4629,4629,58,59,'BWAAAA','LRBAAA','HHHHxx'
+6858,1130,0,2,8,18,58,858,858,1858,6858,116,117,'UDAAAA','MRBAAA','OOOOxx'
+125,1131,1,1,5,5,25,125,125,125,125,50,51,'VEAAAA','NRBAAA','VVVVxx'
+3834,1132,0,2,4,14,34,834,1834,3834,3834,68,69,'MRAAAA','ORBAAA','AAAAxx'
+8155,1133,1,3,5,15,55,155,155,3155,8155,110,111,'RBAAAA','PRBAAA','HHHHxx'
+8230,1134,0,2,0,10,30,230,230,3230,8230,60,61,'OEAAAA','QRBAAA','OOOOxx'
+744,1135,0,0,4,4,44,744,744,744,744,88,89,'QCAAAA','RRBAAA','VVVVxx'
+357,1136,1,1,7,17,57,357,357,357,357,114,115,'TNAAAA','SRBAAA','AAAAxx'
+2159,1137,1,3,9,19,59,159,159,2159,2159,118,119,'BFAAAA','TRBAAA','HHHHxx'
+8559,1138,1,3,9,19,59,559,559,3559,8559,118,119,'FRAAAA','URBAAA','OOOOxx'
+6866,1139,0,2,6,6,66,866,866,1866,6866,132,133,'CEAAAA','VRBAAA','VVVVxx'
+3863,1140,1,3,3,3,63,863,1863,3863,3863,126,127,'PSAAAA','WRBAAA','AAAAxx'
+4193,1141,1,1,3,13,93,193,193,4193,4193,186,187,'HFAAAA','XRBAAA','HHHHxx'
+3277,1142,1,1,7,17,77,277,1277,3277,3277,154,155,'BWAAAA','YRBAAA','OOOOxx'
+5577,1143,1,1,7,17,77,577,1577,577,5577,154,155,'NGAAAA','ZRBAAA','VVVVxx'
+9503,1144,1,3,3,3,3,503,1503,4503,9503,6,7,'NBAAAA','ASBAAA','AAAAxx'
+7642,1145,0,2,2,2,42,642,1642,2642,7642,84,85,'YHAAAA','BSBAAA','HHHHxx'
+6197,1146,1,1,7,17,97,197,197,1197,6197,194,195,'JEAAAA','CSBAAA','OOOOxx'
+8995,1147,1,3,5,15,95,995,995,3995,8995,190,191,'ZHAAAA','DSBAAA','VVVVxx'
+440,1148,0,0,0,0,40,440,440,440,440,80,81,'YQAAAA','ESBAAA','AAAAxx'
+8418,1149,0,2,8,18,18,418,418,3418,8418,36,37,'ULAAAA','FSBAAA','HHHHxx'
+8531,1150,1,3,1,11,31,531,531,3531,8531,62,63,'DQAAAA','GSBAAA','OOOOxx'
+3790,1151,0,2,0,10,90,790,1790,3790,3790,180,181,'UPAAAA','HSBAAA','VVVVxx'
+7610,1152,0,2,0,10,10,610,1610,2610,7610,20,21,'SGAAAA','ISBAAA','AAAAxx'
+1252,1153,0,0,2,12,52,252,1252,1252,1252,104,105,'EWAAAA','JSBAAA','HHHHxx'
+7559,1154,1,3,9,19,59,559,1559,2559,7559,118,119,'TEAAAA','KSBAAA','OOOOxx'
+9945,1155,1,1,5,5,45,945,1945,4945,9945,90,91,'NSAAAA','LSBAAA','VVVVxx'
+9023,1156,1,3,3,3,23,23,1023,4023,9023,46,47,'BJAAAA','MSBAAA','AAAAxx'
+3516,1157,0,0,6,16,16,516,1516,3516,3516,32,33,'GFAAAA','NSBAAA','HHHHxx'
+4671,1158,1,3,1,11,71,671,671,4671,4671,142,143,'RXAAAA','OSBAAA','OOOOxx'
+1465,1159,1,1,5,5,65,465,1465,1465,1465,130,131,'JEAAAA','PSBAAA','VVVVxx'
+9515,1160,1,3,5,15,15,515,1515,4515,9515,30,31,'ZBAAAA','QSBAAA','AAAAxx'
+3242,1161,0,2,2,2,42,242,1242,3242,3242,84,85,'SUAAAA','RSBAAA','HHHHxx'
+1732,1162,0,0,2,12,32,732,1732,1732,1732,64,65,'QOAAAA','SSBAAA','OOOOxx'
+1678,1163,0,2,8,18,78,678,1678,1678,1678,156,157,'OMAAAA','TSBAAA','VVVVxx'
+1464,1164,0,0,4,4,64,464,1464,1464,1464,128,129,'IEAAAA','USBAAA','AAAAxx'
+6546,1165,0,2,6,6,46,546,546,1546,6546,92,93,'URAAAA','VSBAAA','HHHHxx'
+4448,1166,0,0,8,8,48,448,448,4448,4448,96,97,'CPAAAA','WSBAAA','OOOOxx'
+9847,1167,1,3,7,7,47,847,1847,4847,9847,94,95,'TOAAAA','XSBAAA','VVVVxx'
+8264,1168,0,0,4,4,64,264,264,3264,8264,128,129,'WFAAAA','YSBAAA','AAAAxx'
+1620,1169,0,0,0,0,20,620,1620,1620,1620,40,41,'IKAAAA','ZSBAAA','HHHHxx'
+9388,1170,0,0,8,8,88,388,1388,4388,9388,176,177,'CXAAAA','ATBAAA','OOOOxx'
+6445,1171,1,1,5,5,45,445,445,1445,6445,90,91,'XNAAAA','BTBAAA','VVVVxx'
+4789,1172,1,1,9,9,89,789,789,4789,4789,178,179,'FCAAAA','CTBAAA','AAAAxx'
+1562,1173,0,2,2,2,62,562,1562,1562,1562,124,125,'CIAAAA','DTBAAA','HHHHxx'
+7305,1174,1,1,5,5,5,305,1305,2305,7305,10,11,'ZUAAAA','ETBAAA','OOOOxx'
+6344,1175,0,0,4,4,44,344,344,1344,6344,88,89,'AKAAAA','FTBAAA','VVVVxx'
+5130,1176,0,2,0,10,30,130,1130,130,5130,60,61,'IPAAAA','GTBAAA','AAAAxx'
+3284,1177,0,0,4,4,84,284,1284,3284,3284,168,169,'IWAAAA','HTBAAA','HHHHxx'
+6346,1178,0,2,6,6,46,346,346,1346,6346,92,93,'CKAAAA','ITBAAA','OOOOxx'
+1061,1179,1,1,1,1,61,61,1061,1061,1061,122,123,'VOAAAA','JTBAAA','VVVVxx'
+872,1180,0,0,2,12,72,872,872,872,872,144,145,'OHAAAA','KTBAAA','AAAAxx'
+123,1181,1,3,3,3,23,123,123,123,123,46,47,'TEAAAA','LTBAAA','HHHHxx'
+7903,1182,1,3,3,3,3,903,1903,2903,7903,6,7,'ZRAAAA','MTBAAA','OOOOxx'
+560,1183,0,0,0,0,60,560,560,560,560,120,121,'OVAAAA','NTBAAA','VVVVxx'
+4446,1184,0,2,6,6,46,446,446,4446,4446,92,93,'APAAAA','OTBAAA','AAAAxx'
+3909,1185,1,1,9,9,9,909,1909,3909,3909,18,19,'JUAAAA','PTBAAA','HHHHxx'
+669,1186,1,1,9,9,69,669,669,669,669,138,139,'TZAAAA','QTBAAA','OOOOxx'
+7843,1187,1,3,3,3,43,843,1843,2843,7843,86,87,'RPAAAA','RTBAAA','VVVVxx'
+2546,1188,0,2,6,6,46,546,546,2546,2546,92,93,'YTAAAA','STBAAA','AAAAxx'
+6757,1189,1,1,7,17,57,757,757,1757,6757,114,115,'XZAAAA','TTBAAA','HHHHxx'
+466,1190,0,2,6,6,66,466,466,466,466,132,133,'YRAAAA','UTBAAA','OOOOxx'
+5556,1191,0,0,6,16,56,556,1556,556,5556,112,113,'SFAAAA','VTBAAA','VVVVxx'
+7196,1192,0,0,6,16,96,196,1196,2196,7196,192,193,'UQAAAA','WTBAAA','AAAAxx'
+2947,1193,1,3,7,7,47,947,947,2947,2947,94,95,'JJAAAA','XTBAAA','HHHHxx'
+6493,1194,1,1,3,13,93,493,493,1493,6493,186,187,'TPAAAA','YTBAAA','OOOOxx'
+7203,1195,1,3,3,3,3,203,1203,2203,7203,6,7,'BRAAAA','ZTBAAA','VVVVxx'
+3716,1196,0,0,6,16,16,716,1716,3716,3716,32,33,'YMAAAA','AUBAAA','AAAAxx'
+8058,1197,0,2,8,18,58,58,58,3058,8058,116,117,'YXAAAA','BUBAAA','HHHHxx'
+433,1198,1,1,3,13,33,433,433,433,433,66,67,'RQAAAA','CUBAAA','OOOOxx'
+7649,1199,1,1,9,9,49,649,1649,2649,7649,98,99,'FIAAAA','DUBAAA','VVVVxx'
+6966,1200,0,2,6,6,66,966,966,1966,6966,132,133,'YHAAAA','EUBAAA','AAAAxx'
+553,1201,1,1,3,13,53,553,553,553,553,106,107,'HVAAAA','FUBAAA','HHHHxx'
+3677,1202,1,1,7,17,77,677,1677,3677,3677,154,155,'LLAAAA','GUBAAA','OOOOxx'
+2344,1203,0,0,4,4,44,344,344,2344,2344,88,89,'EMAAAA','HUBAAA','VVVVxx'
+7439,1204,1,3,9,19,39,439,1439,2439,7439,78,79,'DAAAAA','IUBAAA','AAAAxx'
+3910,1205,0,2,0,10,10,910,1910,3910,3910,20,21,'KUAAAA','JUBAAA','HHHHxx'
+3638,1206,0,2,8,18,38,638,1638,3638,3638,76,77,'YJAAAA','KUBAAA','OOOOxx'
+6637,1207,1,1,7,17,37,637,637,1637,6637,74,75,'HVAAAA','LUBAAA','VVVVxx'
+4438,1208,0,2,8,18,38,438,438,4438,4438,76,77,'SOAAAA','MUBAAA','AAAAxx'
+171,1209,1,3,1,11,71,171,171,171,171,142,143,'PGAAAA','NUBAAA','HHHHxx'
+310,1210,0,2,0,10,10,310,310,310,310,20,21,'YLAAAA','OUBAAA','OOOOxx'
+2714,1211,0,2,4,14,14,714,714,2714,2714,28,29,'KAAAAA','PUBAAA','VVVVxx'
+5199,1212,1,3,9,19,99,199,1199,199,5199,198,199,'ZRAAAA','QUBAAA','AAAAxx'
+8005,1213,1,1,5,5,5,5,5,3005,8005,10,11,'XVAAAA','RUBAAA','HHHHxx'
+3188,1214,0,0,8,8,88,188,1188,3188,3188,176,177,'QSAAAA','SUBAAA','OOOOxx'
+1518,1215,0,2,8,18,18,518,1518,1518,1518,36,37,'KGAAAA','TUBAAA','VVVVxx'
+6760,1216,0,0,0,0,60,760,760,1760,6760,120,121,'AAAAAA','UUBAAA','AAAAxx'
+9373,1217,1,1,3,13,73,373,1373,4373,9373,146,147,'NWAAAA','VUBAAA','HHHHxx'
+1938,1218,0,2,8,18,38,938,1938,1938,1938,76,77,'OWAAAA','WUBAAA','OOOOxx'
+2865,1219,1,1,5,5,65,865,865,2865,2865,130,131,'FGAAAA','XUBAAA','VVVVxx'
+3203,1220,1,3,3,3,3,203,1203,3203,3203,6,7,'FTAAAA','YUBAAA','AAAAxx'
+6025,1221,1,1,5,5,25,25,25,1025,6025,50,51,'TXAAAA','ZUBAAA','HHHHxx'
+8684,1222,0,0,4,4,84,684,684,3684,8684,168,169,'AWAAAA','AVBAAA','OOOOxx'
+7732,1223,0,0,2,12,32,732,1732,2732,7732,64,65,'KLAAAA','BVBAAA','VVVVxx'
+3218,1224,0,2,8,18,18,218,1218,3218,3218,36,37,'UTAAAA','CVBAAA','AAAAxx'
+525,1225,1,1,5,5,25,525,525,525,525,50,51,'FUAAAA','DVBAAA','HHHHxx'
+601,1226,1,1,1,1,1,601,601,601,601,2,3,'DXAAAA','EVBAAA','OOOOxx'
+6091,1227,1,3,1,11,91,91,91,1091,6091,182,183,'HAAAAA','FVBAAA','VVVVxx'
+4498,1228,0,2,8,18,98,498,498,4498,4498,196,197,'ARAAAA','GVBAAA','AAAAxx'
+8192,1229,0,0,2,12,92,192,192,3192,8192,184,185,'CDAAAA','HVBAAA','HHHHxx'
+8006,1230,0,2,6,6,6,6,6,3006,8006,12,13,'YVAAAA','IVBAAA','OOOOxx'
+6157,1231,1,1,7,17,57,157,157,1157,6157,114,115,'VCAAAA','JVBAAA','VVVVxx'
+312,1232,0,0,2,12,12,312,312,312,312,24,25,'AMAAAA','KVBAAA','AAAAxx'
+8652,1233,0,0,2,12,52,652,652,3652,8652,104,105,'UUAAAA','LVBAAA','HHHHxx'
+2787,1234,1,3,7,7,87,787,787,2787,2787,174,175,'FDAAAA','MVBAAA','OOOOxx'
+1782,1235,0,2,2,2,82,782,1782,1782,1782,164,165,'OQAAAA','NVBAAA','VVVVxx'
+23,1236,1,3,3,3,23,23,23,23,23,46,47,'XAAAAA','OVBAAA','AAAAxx'
+1206,1237,0,2,6,6,6,206,1206,1206,1206,12,13,'KUAAAA','PVBAAA','HHHHxx'
+1076,1238,0,0,6,16,76,76,1076,1076,1076,152,153,'KPAAAA','QVBAAA','OOOOxx'
+5379,1239,1,3,9,19,79,379,1379,379,5379,158,159,'XYAAAA','RVBAAA','VVVVxx'
+2047,1240,1,3,7,7,47,47,47,2047,2047,94,95,'TAAAAA','SVBAAA','AAAAxx'
+6262,1241,0,2,2,2,62,262,262,1262,6262,124,125,'WGAAAA','TVBAAA','HHHHxx'
+1840,1242,0,0,0,0,40,840,1840,1840,1840,80,81,'USAAAA','UVBAAA','OOOOxx'
+2106,1243,0,2,6,6,6,106,106,2106,2106,12,13,'ADAAAA','VVBAAA','VVVVxx'
+1307,1244,1,3,7,7,7,307,1307,1307,1307,14,15,'HYAAAA','WVBAAA','AAAAxx'
+735,1245,1,3,5,15,35,735,735,735,735,70,71,'HCAAAA','XVBAAA','HHHHxx'
+3657,1246,1,1,7,17,57,657,1657,3657,3657,114,115,'RKAAAA','YVBAAA','OOOOxx'
+3006,1247,0,2,6,6,6,6,1006,3006,3006,12,13,'QLAAAA','ZVBAAA','VVVVxx'
+1538,1248,0,2,8,18,38,538,1538,1538,1538,76,77,'EHAAAA','AWBAAA','AAAAxx'
+6098,1249,0,2,8,18,98,98,98,1098,6098,196,197,'OAAAAA','BWBAAA','HHHHxx'
+5267,1250,1,3,7,7,67,267,1267,267,5267,134,135,'PUAAAA','CWBAAA','OOOOxx'
+9757,1251,1,1,7,17,57,757,1757,4757,9757,114,115,'HLAAAA','DWBAAA','VVVVxx'
+1236,1252,0,0,6,16,36,236,1236,1236,1236,72,73,'OVAAAA','EWBAAA','AAAAxx'
+83,1253,1,3,3,3,83,83,83,83,83,166,167,'FDAAAA','FWBAAA','HHHHxx'
+9227,1254,1,3,7,7,27,227,1227,4227,9227,54,55,'XQAAAA','GWBAAA','OOOOxx'
+8772,1255,0,0,2,12,72,772,772,3772,8772,144,145,'KZAAAA','HWBAAA','VVVVxx'
+8822,1256,0,2,2,2,22,822,822,3822,8822,44,45,'IBAAAA','IWBAAA','AAAAxx'
+7167,1257,1,3,7,7,67,167,1167,2167,7167,134,135,'RPAAAA','JWBAAA','HHHHxx'
+6909,1258,1,1,9,9,9,909,909,1909,6909,18,19,'TFAAAA','KWBAAA','OOOOxx'
+1439,1259,1,3,9,19,39,439,1439,1439,1439,78,79,'JDAAAA','LWBAAA','VVVVxx'
+2370,1260,0,2,0,10,70,370,370,2370,2370,140,141,'ENAAAA','MWBAAA','AAAAxx'
+4577,1261,1,1,7,17,77,577,577,4577,4577,154,155,'BUAAAA','NWBAAA','HHHHxx'
+2575,1262,1,3,5,15,75,575,575,2575,2575,150,151,'BVAAAA','OWBAAA','OOOOxx'
+2795,1263,1,3,5,15,95,795,795,2795,2795,190,191,'NDAAAA','PWBAAA','VVVVxx'
+5520,1264,0,0,0,0,20,520,1520,520,5520,40,41,'IEAAAA','QWBAAA','AAAAxx'
+382,1265,0,2,2,2,82,382,382,382,382,164,165,'SOAAAA','RWBAAA','HHHHxx'
+6335,1266,1,3,5,15,35,335,335,1335,6335,70,71,'RJAAAA','SWBAAA','OOOOxx'
+8430,1267,0,2,0,10,30,430,430,3430,8430,60,61,'GMAAAA','TWBAAA','VVVVxx'
+4131,1268,1,3,1,11,31,131,131,4131,4131,62,63,'XCAAAA','UWBAAA','AAAAxx'
+9332,1269,0,0,2,12,32,332,1332,4332,9332,64,65,'YUAAAA','VWBAAA','HHHHxx'
+293,1270,1,1,3,13,93,293,293,293,293,186,187,'HLAAAA','WWBAAA','OOOOxx'
+2276,1271,0,0,6,16,76,276,276,2276,2276,152,153,'OJAAAA','XWBAAA','VVVVxx'
+5687,1272,1,3,7,7,87,687,1687,687,5687,174,175,'TKAAAA','YWBAAA','AAAAxx'
+5862,1273,0,2,2,2,62,862,1862,862,5862,124,125,'MRAAAA','ZWBAAA','HHHHxx'
+5073,1274,1,1,3,13,73,73,1073,73,5073,146,147,'DNAAAA','AXBAAA','OOOOxx'
+4170,1275,0,2,0,10,70,170,170,4170,4170,140,141,'KEAAAA','BXBAAA','VVVVxx'
+5039,1276,1,3,9,19,39,39,1039,39,5039,78,79,'VLAAAA','CXBAAA','AAAAxx'
+3294,1277,0,2,4,14,94,294,1294,3294,3294,188,189,'SWAAAA','DXBAAA','HHHHxx'
+6015,1278,1,3,5,15,15,15,15,1015,6015,30,31,'JXAAAA','EXBAAA','OOOOxx'
+9015,1279,1,3,5,15,15,15,1015,4015,9015,30,31,'TIAAAA','FXBAAA','VVVVxx'
+9785,1280,1,1,5,5,85,785,1785,4785,9785,170,171,'JMAAAA','GXBAAA','AAAAxx'
+4312,1281,0,0,2,12,12,312,312,4312,4312,24,25,'WJAAAA','HXBAAA','HHHHxx'
+6343,1282,1,3,3,3,43,343,343,1343,6343,86,87,'ZJAAAA','IXBAAA','OOOOxx'
+2161,1283,1,1,1,1,61,161,161,2161,2161,122,123,'DFAAAA','JXBAAA','VVVVxx'
+4490,1284,0,2,0,10,90,490,490,4490,4490,180,181,'SQAAAA','KXBAAA','AAAAxx'
+4454,1285,0,2,4,14,54,454,454,4454,4454,108,109,'IPAAAA','LXBAAA','HHHHxx'
+7647,1286,1,3,7,7,47,647,1647,2647,7647,94,95,'DIAAAA','MXBAAA','OOOOxx'
+1028,1287,0,0,8,8,28,28,1028,1028,1028,56,57,'ONAAAA','NXBAAA','VVVVxx'
+2965,1288,1,1,5,5,65,965,965,2965,2965,130,131,'BKAAAA','OXBAAA','AAAAxx'
+9900,1289,0,0,0,0,0,900,1900,4900,9900,0,1,'UQAAAA','PXBAAA','HHHHxx'
+5509,1290,1,1,9,9,9,509,1509,509,5509,18,19,'XDAAAA','QXBAAA','OOOOxx'
+7751,1291,1,3,1,11,51,751,1751,2751,7751,102,103,'DMAAAA','RXBAAA','VVVVxx'
+9594,1292,0,2,4,14,94,594,1594,4594,9594,188,189,'AFAAAA','SXBAAA','AAAAxx'
+7632,1293,0,0,2,12,32,632,1632,2632,7632,64,65,'OHAAAA','TXBAAA','HHHHxx'
+6528,1294,0,0,8,8,28,528,528,1528,6528,56,57,'CRAAAA','UXBAAA','OOOOxx'
+1041,1295,1,1,1,1,41,41,1041,1041,1041,82,83,'BOAAAA','VXBAAA','VVVVxx'
+1534,1296,0,2,4,14,34,534,1534,1534,1534,68,69,'AHAAAA','WXBAAA','AAAAxx'
+4229,1297,1,1,9,9,29,229,229,4229,4229,58,59,'RGAAAA','XXBAAA','HHHHxx'
+84,1298,0,0,4,4,84,84,84,84,84,168,169,'GDAAAA','YXBAAA','OOOOxx'
+2189,1299,1,1,9,9,89,189,189,2189,2189,178,179,'FGAAAA','ZXBAAA','VVVVxx'
+7566,1300,0,2,6,6,66,566,1566,2566,7566,132,133,'AFAAAA','AYBAAA','AAAAxx'
+707,1301,1,3,7,7,7,707,707,707,707,14,15,'FBAAAA','BYBAAA','HHHHxx'
+581,1302,1,1,1,1,81,581,581,581,581,162,163,'JWAAAA','CYBAAA','OOOOxx'
+6753,1303,1,1,3,13,53,753,753,1753,6753,106,107,'TZAAAA','DYBAAA','VVVVxx'
+8604,1304,0,0,4,4,4,604,604,3604,8604,8,9,'YSAAAA','EYBAAA','AAAAxx'
+373,1305,1,1,3,13,73,373,373,373,373,146,147,'JOAAAA','FYBAAA','HHHHxx'
+9635,1306,1,3,5,15,35,635,1635,4635,9635,70,71,'PGAAAA','GYBAAA','OOOOxx'
+9277,1307,1,1,7,17,77,277,1277,4277,9277,154,155,'VSAAAA','HYBAAA','VVVVxx'
+7117,1308,1,1,7,17,17,117,1117,2117,7117,34,35,'TNAAAA','IYBAAA','AAAAxx'
+8564,1309,0,0,4,4,64,564,564,3564,8564,128,129,'KRAAAA','JYBAAA','HHHHxx'
+1697,1310,1,1,7,17,97,697,1697,1697,1697,194,195,'HNAAAA','KYBAAA','OOOOxx'
+7840,1311,0,0,0,0,40,840,1840,2840,7840,80,81,'OPAAAA','LYBAAA','VVVVxx'
+3646,1312,0,2,6,6,46,646,1646,3646,3646,92,93,'GKAAAA','MYBAAA','AAAAxx'
+368,1313,0,0,8,8,68,368,368,368,368,136,137,'EOAAAA','NYBAAA','HHHHxx'
+4797,1314,1,1,7,17,97,797,797,4797,4797,194,195,'NCAAAA','OYBAAA','OOOOxx'
+5300,1315,0,0,0,0,0,300,1300,300,5300,0,1,'WVAAAA','PYBAAA','VVVVxx'
+7664,1316,0,0,4,4,64,664,1664,2664,7664,128,129,'UIAAAA','QYBAAA','AAAAxx'
+1466,1317,0,2,6,6,66,466,1466,1466,1466,132,133,'KEAAAA','RYBAAA','HHHHxx'
+2477,1318,1,1,7,17,77,477,477,2477,2477,154,155,'HRAAAA','SYBAAA','OOOOxx'
+2036,1319,0,0,6,16,36,36,36,2036,2036,72,73,'IAAAAA','TYBAAA','VVVVxx'
+3624,1320,0,0,4,4,24,624,1624,3624,3624,48,49,'KJAAAA','UYBAAA','AAAAxx'
+5099,1321,1,3,9,19,99,99,1099,99,5099,198,199,'DOAAAA','VYBAAA','HHHHxx'
+1308,1322,0,0,8,8,8,308,1308,1308,1308,16,17,'IYAAAA','WYBAAA','OOOOxx'
+3704,1323,0,0,4,4,4,704,1704,3704,3704,8,9,'MMAAAA','XYBAAA','VVVVxx'
+2451,1324,1,3,1,11,51,451,451,2451,2451,102,103,'HQAAAA','YYBAAA','AAAAxx'
+4898,1325,0,2,8,18,98,898,898,4898,4898,196,197,'KGAAAA','ZYBAAA','HHHHxx'
+4959,1326,1,3,9,19,59,959,959,4959,4959,118,119,'TIAAAA','AZBAAA','OOOOxx'
+5942,1327,0,2,2,2,42,942,1942,942,5942,84,85,'OUAAAA','BZBAAA','VVVVxx'
+2425,1328,1,1,5,5,25,425,425,2425,2425,50,51,'HPAAAA','CZBAAA','AAAAxx'
+7760,1329,0,0,0,0,60,760,1760,2760,7760,120,121,'MMAAAA','DZBAAA','HHHHxx'
+6294,1330,0,2,4,14,94,294,294,1294,6294,188,189,'CIAAAA','EZBAAA','OOOOxx'
+6785,1331,1,1,5,5,85,785,785,1785,6785,170,171,'ZAAAAA','FZBAAA','VVVVxx'
+3542,1332,0,2,2,2,42,542,1542,3542,3542,84,85,'GGAAAA','GZBAAA','AAAAxx'
+1809,1333,1,1,9,9,9,809,1809,1809,1809,18,19,'PRAAAA','HZBAAA','HHHHxx'
+130,1334,0,2,0,10,30,130,130,130,130,60,61,'AFAAAA','IZBAAA','OOOOxx'
+8672,1335,0,0,2,12,72,672,672,3672,8672,144,145,'OVAAAA','JZBAAA','VVVVxx'
+2125,1336,1,1,5,5,25,125,125,2125,2125,50,51,'TDAAAA','KZBAAA','AAAAxx'
+7683,1337,1,3,3,3,83,683,1683,2683,7683,166,167,'NJAAAA','LZBAAA','HHHHxx'
+7842,1338,0,2,2,2,42,842,1842,2842,7842,84,85,'QPAAAA','MZBAAA','OOOOxx'
+9584,1339,0,0,4,4,84,584,1584,4584,9584,168,169,'QEAAAA','NZBAAA','VVVVxx'
+7963,1340,1,3,3,3,63,963,1963,2963,7963,126,127,'HUAAAA','OZBAAA','AAAAxx'
+8581,1341,1,1,1,1,81,581,581,3581,8581,162,163,'BSAAAA','PZBAAA','HHHHxx'
+2135,1342,1,3,5,15,35,135,135,2135,2135,70,71,'DEAAAA','QZBAAA','OOOOxx'
+7352,1343,0,0,2,12,52,352,1352,2352,7352,104,105,'UWAAAA','RZBAAA','VVVVxx'
+5789,1344,1,1,9,9,89,789,1789,789,5789,178,179,'ROAAAA','SZBAAA','AAAAxx'
+8490,1345,0,2,0,10,90,490,490,3490,8490,180,181,'OOAAAA','TZBAAA','HHHHxx'
+2145,1346,1,1,5,5,45,145,145,2145,2145,90,91,'NEAAAA','UZBAAA','OOOOxx'
+7021,1347,1,1,1,1,21,21,1021,2021,7021,42,43,'BKAAAA','VZBAAA','VVVVxx'
+3736,1348,0,0,6,16,36,736,1736,3736,3736,72,73,'SNAAAA','WZBAAA','AAAAxx'
+7396,1349,0,0,6,16,96,396,1396,2396,7396,192,193,'MYAAAA','XZBAAA','HHHHxx'
+6334,1350,0,2,4,14,34,334,334,1334,6334,68,69,'QJAAAA','YZBAAA','OOOOxx'
+5461,1351,1,1,1,1,61,461,1461,461,5461,122,123,'BCAAAA','ZZBAAA','VVVVxx'
+5337,1352,1,1,7,17,37,337,1337,337,5337,74,75,'HXAAAA','AACAAA','AAAAxx'
+7440,1353,0,0,0,0,40,440,1440,2440,7440,80,81,'EAAAAA','BACAAA','HHHHxx'
+6879,1354,1,3,9,19,79,879,879,1879,6879,158,159,'PEAAAA','CACAAA','OOOOxx'
+2432,1355,0,0,2,12,32,432,432,2432,2432,64,65,'OPAAAA','DACAAA','VVVVxx'
+8529,1356,1,1,9,9,29,529,529,3529,8529,58,59,'BQAAAA','EACAAA','AAAAxx'
+7859,1357,1,3,9,19,59,859,1859,2859,7859,118,119,'HQAAAA','FACAAA','HHHHxx'
+15,1358,1,3,5,15,15,15,15,15,15,30,31,'PAAAAA','GACAAA','OOOOxx'
+7475,1359,1,3,5,15,75,475,1475,2475,7475,150,151,'NBAAAA','HACAAA','VVVVxx'
+717,1360,1,1,7,17,17,717,717,717,717,34,35,'PBAAAA','IACAAA','AAAAxx'
+250,1361,0,2,0,10,50,250,250,250,250,100,101,'QJAAAA','JACAAA','HHHHxx'
+4700,1362,0,0,0,0,0,700,700,4700,4700,0,1,'UYAAAA','KACAAA','OOOOxx'
+7510,1363,0,2,0,10,10,510,1510,2510,7510,20,21,'WCAAAA','LACAAA','VVVVxx'
+4562,1364,0,2,2,2,62,562,562,4562,4562,124,125,'MTAAAA','MACAAA','AAAAxx'
+8075,1365,1,3,5,15,75,75,75,3075,8075,150,151,'PYAAAA','NACAAA','HHHHxx'
+871,1366,1,3,1,11,71,871,871,871,871,142,143,'NHAAAA','OACAAA','OOOOxx'
+7161,1367,1,1,1,1,61,161,1161,2161,7161,122,123,'LPAAAA','PACAAA','VVVVxx'
+9109,1368,1,1,9,9,9,109,1109,4109,9109,18,19,'JMAAAA','QACAAA','AAAAxx'
+8675,1369,1,3,5,15,75,675,675,3675,8675,150,151,'RVAAAA','RACAAA','HHHHxx'
+1025,1370,1,1,5,5,25,25,1025,1025,1025,50,51,'LNAAAA','SACAAA','OOOOxx'
+4065,1371,1,1,5,5,65,65,65,4065,4065,130,131,'JAAAAA','TACAAA','VVVVxx'
+3511,1372,1,3,1,11,11,511,1511,3511,3511,22,23,'BFAAAA','UACAAA','AAAAxx'
+9840,1373,0,0,0,0,40,840,1840,4840,9840,80,81,'MOAAAA','VACAAA','HHHHxx'
+7495,1374,1,3,5,15,95,495,1495,2495,7495,190,191,'HCAAAA','WACAAA','OOOOxx'
+55,1375,1,3,5,15,55,55,55,55,55,110,111,'DCAAAA','XACAAA','VVVVxx'
+6151,1376,1,3,1,11,51,151,151,1151,6151,102,103,'PCAAAA','YACAAA','AAAAxx'
+2512,1377,0,0,2,12,12,512,512,2512,2512,24,25,'QSAAAA','ZACAAA','HHHHxx'
+5881,1378,1,1,1,1,81,881,1881,881,5881,162,163,'FSAAAA','ABCAAA','OOOOxx'
+1442,1379,0,2,2,2,42,442,1442,1442,1442,84,85,'MDAAAA','BBCAAA','VVVVxx'
+1270,1380,0,2,0,10,70,270,1270,1270,1270,140,141,'WWAAAA','CBCAAA','AAAAxx'
+959,1381,1,3,9,19,59,959,959,959,959,118,119,'XKAAAA','DBCAAA','HHHHxx'
+8251,1382,1,3,1,11,51,251,251,3251,8251,102,103,'JFAAAA','EBCAAA','OOOOxx'
+3051,1383,1,3,1,11,51,51,1051,3051,3051,102,103,'JNAAAA','FBCAAA','VVVVxx'
+5052,1384,0,0,2,12,52,52,1052,52,5052,104,105,'IMAAAA','GBCAAA','AAAAxx'
+1863,1385,1,3,3,3,63,863,1863,1863,1863,126,127,'RTAAAA','HBCAAA','HHHHxx'
+344,1386,0,0,4,4,44,344,344,344,344,88,89,'GNAAAA','IBCAAA','OOOOxx'
+3590,1387,0,2,0,10,90,590,1590,3590,3590,180,181,'CIAAAA','JBCAAA','VVVVxx'
+4223,1388,1,3,3,3,23,223,223,4223,4223,46,47,'LGAAAA','KBCAAA','AAAAxx'
+2284,1389,0,0,4,4,84,284,284,2284,2284,168,169,'WJAAAA','LBCAAA','HHHHxx'
+9425,1390,1,1,5,5,25,425,1425,4425,9425,50,51,'NYAAAA','MBCAAA','OOOOxx'
+6221,1391,1,1,1,1,21,221,221,1221,6221,42,43,'HFAAAA','NBCAAA','VVVVxx'
+195,1392,1,3,5,15,95,195,195,195,195,190,191,'NHAAAA','OBCAAA','AAAAxx'
+1517,1393,1,1,7,17,17,517,1517,1517,1517,34,35,'JGAAAA','PBCAAA','HHHHxx'
+3791,1394,1,3,1,11,91,791,1791,3791,3791,182,183,'VPAAAA','QBCAAA','OOOOxx'
+572,1395,0,0,2,12,72,572,572,572,572,144,145,'AWAAAA','RBCAAA','VVVVxx'
+46,1396,0,2,6,6,46,46,46,46,46,92,93,'UBAAAA','SBCAAA','AAAAxx'
+9451,1397,1,3,1,11,51,451,1451,4451,9451,102,103,'NZAAAA','TBCAAA','HHHHxx'
+3359,1398,1,3,9,19,59,359,1359,3359,3359,118,119,'FZAAAA','UBCAAA','OOOOxx'
+8867,1399,1,3,7,7,67,867,867,3867,8867,134,135,'BDAAAA','VBCAAA','VVVVxx'
+674,1400,0,2,4,14,74,674,674,674,674,148,149,'YZAAAA','WBCAAA','AAAAxx'
+2674,1401,0,2,4,14,74,674,674,2674,2674,148,149,'WYAAAA','XBCAAA','HHHHxx'
+6523,1402,1,3,3,3,23,523,523,1523,6523,46,47,'XQAAAA','YBCAAA','OOOOxx'
+6210,1403,0,2,0,10,10,210,210,1210,6210,20,21,'WEAAAA','ZBCAAA','VVVVxx'
+7564,1404,0,0,4,4,64,564,1564,2564,7564,128,129,'YEAAAA','ACCAAA','AAAAxx'
+4776,1405,0,0,6,16,76,776,776,4776,4776,152,153,'SBAAAA','BCCAAA','HHHHxx'
+2993,1406,1,1,3,13,93,993,993,2993,2993,186,187,'DLAAAA','CCCAAA','OOOOxx'
+2969,1407,1,1,9,9,69,969,969,2969,2969,138,139,'FKAAAA','DCCAAA','VVVVxx'
+1762,1408,0,2,2,2,62,762,1762,1762,1762,124,125,'UPAAAA','ECCAAA','AAAAxx'
+685,1409,1,1,5,5,85,685,685,685,685,170,171,'JAAAAA','FCCAAA','HHHHxx'
+5312,1410,0,0,2,12,12,312,1312,312,5312,24,25,'IWAAAA','GCCAAA','OOOOxx'
+3264,1411,0,0,4,4,64,264,1264,3264,3264,128,129,'OVAAAA','HCCAAA','VVVVxx'
+7008,1412,0,0,8,8,8,8,1008,2008,7008,16,17,'OJAAAA','ICCAAA','AAAAxx'
+5167,1413,1,3,7,7,67,167,1167,167,5167,134,135,'TQAAAA','JCCAAA','HHHHxx'
+3060,1414,0,0,0,0,60,60,1060,3060,3060,120,121,'SNAAAA','KCCAAA','OOOOxx'
+1752,1415,0,0,2,12,52,752,1752,1752,1752,104,105,'KPAAAA','LCCAAA','VVVVxx'
+1016,1416,0,0,6,16,16,16,1016,1016,1016,32,33,'CNAAAA','MCCAAA','AAAAxx'
+7365,1417,1,1,5,5,65,365,1365,2365,7365,130,131,'HXAAAA','NCCAAA','HHHHxx'
+4358,1418,0,2,8,18,58,358,358,4358,4358,116,117,'QLAAAA','OCCAAA','OOOOxx'
+2819,1419,1,3,9,19,19,819,819,2819,2819,38,39,'LEAAAA','PCCAAA','VVVVxx'
+6727,1420,1,3,7,7,27,727,727,1727,6727,54,55,'TYAAAA','QCCAAA','AAAAxx'
+1459,1421,1,3,9,19,59,459,1459,1459,1459,118,119,'DEAAAA','RCCAAA','HHHHxx'
+1708,1422,0,0,8,8,8,708,1708,1708,1708,16,17,'SNAAAA','SCCAAA','OOOOxx'
+471,1423,1,3,1,11,71,471,471,471,471,142,143,'DSAAAA','TCCAAA','VVVVxx'
+387,1424,1,3,7,7,87,387,387,387,387,174,175,'XOAAAA','UCCAAA','AAAAxx'
+1166,1425,0,2,6,6,66,166,1166,1166,1166,132,133,'WSAAAA','VCCAAA','HHHHxx'
+2400,1426,0,0,0,0,0,400,400,2400,2400,0,1,'IOAAAA','WCCAAA','OOOOxx'
+3584,1427,0,0,4,4,84,584,1584,3584,3584,168,169,'WHAAAA','XCCAAA','VVVVxx'
+6423,1428,1,3,3,3,23,423,423,1423,6423,46,47,'BNAAAA','YCCAAA','AAAAxx'
+9520,1429,0,0,0,0,20,520,1520,4520,9520,40,41,'ECAAAA','ZCCAAA','HHHHxx'
+8080,1430,0,0,0,0,80,80,80,3080,8080,160,161,'UYAAAA','ADCAAA','OOOOxx'
+5709,1431,1,1,9,9,9,709,1709,709,5709,18,19,'PLAAAA','BDCAAA','VVVVxx'
+1131,1432,1,3,1,11,31,131,1131,1131,1131,62,63,'NRAAAA','CDCAAA','AAAAxx'
+8562,1433,0,2,2,2,62,562,562,3562,8562,124,125,'IRAAAA','DDCAAA','HHHHxx'
+5766,1434,0,2,6,6,66,766,1766,766,5766,132,133,'UNAAAA','EDCAAA','OOOOxx'
+245,1435,1,1,5,5,45,245,245,245,245,90,91,'LJAAAA','FDCAAA','VVVVxx'
+9869,1436,1,1,9,9,69,869,1869,4869,9869,138,139,'PPAAAA','GDCAAA','AAAAxx'
+3533,1437,1,1,3,13,33,533,1533,3533,3533,66,67,'XFAAAA','HDCAAA','HHHHxx'
+5109,1438,1,1,9,9,9,109,1109,109,5109,18,19,'NOAAAA','IDCAAA','OOOOxx'
+977,1439,1,1,7,17,77,977,977,977,977,154,155,'PLAAAA','JDCAAA','VVVVxx'
+1651,1440,1,3,1,11,51,651,1651,1651,1651,102,103,'NLAAAA','KDCAAA','AAAAxx'
+1357,1441,1,1,7,17,57,357,1357,1357,1357,114,115,'FAAAAA','LDCAAA','HHHHxx'
+9087,1442,1,3,7,7,87,87,1087,4087,9087,174,175,'NLAAAA','MDCAAA','OOOOxx'
+3399,1443,1,3,9,19,99,399,1399,3399,3399,198,199,'TAAAAA','NDCAAA','VVVVxx'
+7543,1444,1,3,3,3,43,543,1543,2543,7543,86,87,'DEAAAA','ODCAAA','AAAAxx'
+2469,1445,1,1,9,9,69,469,469,2469,2469,138,139,'ZQAAAA','PDCAAA','HHHHxx'
+8305,1446,1,1,5,5,5,305,305,3305,8305,10,11,'LHAAAA','QDCAAA','OOOOxx'
+3265,1447,1,1,5,5,65,265,1265,3265,3265,130,131,'PVAAAA','RDCAAA','VVVVxx'
+9977,1448,1,1,7,17,77,977,1977,4977,9977,154,155,'TTAAAA','SDCAAA','AAAAxx'
+3961,1449,1,1,1,1,61,961,1961,3961,3961,122,123,'JWAAAA','TDCAAA','HHHHxx'
+4952,1450,0,0,2,12,52,952,952,4952,4952,104,105,'MIAAAA','UDCAAA','OOOOxx'
+5173,1451,1,1,3,13,73,173,1173,173,5173,146,147,'ZQAAAA','VDCAAA','VVVVxx'
+860,1452,0,0,0,0,60,860,860,860,860,120,121,'CHAAAA','WDCAAA','AAAAxx'
+4523,1453,1,3,3,3,23,523,523,4523,4523,46,47,'ZRAAAA','XDCAAA','HHHHxx'
+2361,1454,1,1,1,1,61,361,361,2361,2361,122,123,'VMAAAA','YDCAAA','OOOOxx'
+7877,1455,1,1,7,17,77,877,1877,2877,7877,154,155,'ZQAAAA','ZDCAAA','VVVVxx'
+3422,1456,0,2,2,2,22,422,1422,3422,3422,44,45,'QBAAAA','AECAAA','AAAAxx'
+5781,1457,1,1,1,1,81,781,1781,781,5781,162,163,'JOAAAA','BECAAA','HHHHxx'
+4752,1458,0,0,2,12,52,752,752,4752,4752,104,105,'UAAAAA','CECAAA','OOOOxx'
+1786,1459,0,2,6,6,86,786,1786,1786,1786,172,173,'SQAAAA','DECAAA','VVVVxx'
+1892,1460,0,0,2,12,92,892,1892,1892,1892,184,185,'UUAAAA','EECAAA','AAAAxx'
+6389,1461,1,1,9,9,89,389,389,1389,6389,178,179,'TLAAAA','FECAAA','HHHHxx'
+8644,1462,0,0,4,4,44,644,644,3644,8644,88,89,'MUAAAA','GECAAA','OOOOxx'
+9056,1463,0,0,6,16,56,56,1056,4056,9056,112,113,'IKAAAA','HECAAA','VVVVxx'
+1423,1464,1,3,3,3,23,423,1423,1423,1423,46,47,'TCAAAA','IECAAA','AAAAxx'
+4901,1465,1,1,1,1,1,901,901,4901,4901,2,3,'NGAAAA','JECAAA','HHHHxx'
+3859,1466,1,3,9,19,59,859,1859,3859,3859,118,119,'LSAAAA','KECAAA','OOOOxx'
+2324,1467,0,0,4,4,24,324,324,2324,2324,48,49,'KLAAAA','LECAAA','VVVVxx'
+8101,1468,1,1,1,1,1,101,101,3101,8101,2,3,'PZAAAA','MECAAA','AAAAxx'
+8016,1469,0,0,6,16,16,16,16,3016,8016,32,33,'IWAAAA','NECAAA','HHHHxx'
+5826,1470,0,2,6,6,26,826,1826,826,5826,52,53,'CQAAAA','OECAAA','OOOOxx'
+8266,1471,0,2,6,6,66,266,266,3266,8266,132,133,'YFAAAA','PECAAA','VVVVxx'
+7558,1472,0,2,8,18,58,558,1558,2558,7558,116,117,'SEAAAA','QECAAA','AAAAxx'
+6976,1473,0,0,6,16,76,976,976,1976,6976,152,153,'IIAAAA','RECAAA','HHHHxx'
+222,1474,0,2,2,2,22,222,222,222,222,44,45,'OIAAAA','SECAAA','OOOOxx'
+1624,1475,0,0,4,4,24,624,1624,1624,1624,48,49,'MKAAAA','TECAAA','VVVVxx'
+1250,1476,0,2,0,10,50,250,1250,1250,1250,100,101,'CWAAAA','UECAAA','AAAAxx'
+1621,1477,1,1,1,1,21,621,1621,1621,1621,42,43,'JKAAAA','VECAAA','HHHHxx'
+2350,1478,0,2,0,10,50,350,350,2350,2350,100,101,'KMAAAA','WECAAA','OOOOxx'
+5239,1479,1,3,9,19,39,239,1239,239,5239,78,79,'NTAAAA','XECAAA','VVVVxx'
+6681,1480,1,1,1,1,81,681,681,1681,6681,162,163,'ZWAAAA','YECAAA','AAAAxx'
+4983,1481,1,3,3,3,83,983,983,4983,4983,166,167,'RJAAAA','ZECAAA','HHHHxx'
+7149,1482,1,1,9,9,49,149,1149,2149,7149,98,99,'ZOAAAA','AFCAAA','OOOOxx'
+3502,1483,0,2,2,2,2,502,1502,3502,3502,4,5,'SEAAAA','BFCAAA','VVVVxx'
+3133,1484,1,1,3,13,33,133,1133,3133,3133,66,67,'NQAAAA','CFCAAA','AAAAxx'
+8342,1485,0,2,2,2,42,342,342,3342,8342,84,85,'WIAAAA','DFCAAA','HHHHxx'
+3041,1486,1,1,1,1,41,41,1041,3041,3041,82,83,'ZMAAAA','EFCAAA','OOOOxx'
+5383,1487,1,3,3,3,83,383,1383,383,5383,166,167,'BZAAAA','FFCAAA','VVVVxx'
+3916,1488,0,0,6,16,16,916,1916,3916,3916,32,33,'QUAAAA','GFCAAA','AAAAxx'
+1438,1489,0,2,8,18,38,438,1438,1438,1438,76,77,'IDAAAA','HFCAAA','HHHHxx'
+9408,1490,0,0,8,8,8,408,1408,4408,9408,16,17,'WXAAAA','IFCAAA','OOOOxx'
+5783,1491,1,3,3,3,83,783,1783,783,5783,166,167,'LOAAAA','JFCAAA','VVVVxx'
+683,1492,1,3,3,3,83,683,683,683,683,166,167,'HAAAAA','KFCAAA','AAAAxx'
+9381,1493,1,1,1,1,81,381,1381,4381,9381,162,163,'VWAAAA','LFCAAA','HHHHxx'
+5676,1494,0,0,6,16,76,676,1676,676,5676,152,153,'IKAAAA','MFCAAA','OOOOxx'
+3224,1495,0,0,4,4,24,224,1224,3224,3224,48,49,'AUAAAA','NFCAAA','VVVVxx'
+8332,1496,0,0,2,12,32,332,332,3332,8332,64,65,'MIAAAA','OFCAAA','AAAAxx'
+3372,1497,0,0,2,12,72,372,1372,3372,3372,144,145,'SZAAAA','PFCAAA','HHHHxx'
+7436,1498,0,0,6,16,36,436,1436,2436,7436,72,73,'AAAAAA','QFCAAA','OOOOxx'
+5010,1499,0,2,0,10,10,10,1010,10,5010,20,21,'SKAAAA','RFCAAA','VVVVxx'
+7256,1500,0,0,6,16,56,256,1256,2256,7256,112,113,'CTAAAA','SFCAAA','AAAAxx'
+961,1501,1,1,1,1,61,961,961,961,961,122,123,'ZKAAAA','TFCAAA','HHHHxx'
+4182,1502,0,2,2,2,82,182,182,4182,4182,164,165,'WEAAAA','UFCAAA','OOOOxx'
+639,1503,1,3,9,19,39,639,639,639,639,78,79,'PYAAAA','VFCAAA','VVVVxx'
+8836,1504,0,0,6,16,36,836,836,3836,8836,72,73,'WBAAAA','WFCAAA','AAAAxx'
+8705,1505,1,1,5,5,5,705,705,3705,8705,10,11,'VWAAAA','XFCAAA','HHHHxx'
+32,1506,0,0,2,12,32,32,32,32,32,64,65,'GBAAAA','YFCAAA','OOOOxx'
+7913,1507,1,1,3,13,13,913,1913,2913,7913,26,27,'JSAAAA','ZFCAAA','VVVVxx'
+229,1508,1,1,9,9,29,229,229,229,229,58,59,'VIAAAA','AGCAAA','AAAAxx'
+2393,1509,1,1,3,13,93,393,393,2393,2393,186,187,'BOAAAA','BGCAAA','HHHHxx'
+2815,1510,1,3,5,15,15,815,815,2815,2815,30,31,'HEAAAA','CGCAAA','OOOOxx'
+4858,1511,0,2,8,18,58,858,858,4858,4858,116,117,'WEAAAA','DGCAAA','VVVVxx'
+6283,1512,1,3,3,3,83,283,283,1283,6283,166,167,'RHAAAA','EGCAAA','AAAAxx'
+4147,1513,1,3,7,7,47,147,147,4147,4147,94,95,'NDAAAA','FGCAAA','HHHHxx'
+6801,1514,1,1,1,1,1,801,801,1801,6801,2,3,'PBAAAA','GGCAAA','OOOOxx'
+1011,1515,1,3,1,11,11,11,1011,1011,1011,22,23,'XMAAAA','HGCAAA','VVVVxx'
+2527,1516,1,3,7,7,27,527,527,2527,2527,54,55,'FTAAAA','IGCAAA','AAAAxx'
+381,1517,1,1,1,1,81,381,381,381,381,162,163,'ROAAAA','JGCAAA','HHHHxx'
+3366,1518,0,2,6,6,66,366,1366,3366,3366,132,133,'MZAAAA','KGCAAA','OOOOxx'
+9636,1519,0,0,6,16,36,636,1636,4636,9636,72,73,'QGAAAA','LGCAAA','VVVVxx'
+2239,1520,1,3,9,19,39,239,239,2239,2239,78,79,'DIAAAA','MGCAAA','AAAAxx'
+5911,1521,1,3,1,11,11,911,1911,911,5911,22,23,'JTAAAA','NGCAAA','HHHHxx'
+449,1522,1,1,9,9,49,449,449,449,449,98,99,'HRAAAA','OGCAAA','OOOOxx'
+5118,1523,0,2,8,18,18,118,1118,118,5118,36,37,'WOAAAA','PGCAAA','VVVVxx'
+7684,1524,0,0,4,4,84,684,1684,2684,7684,168,169,'OJAAAA','QGCAAA','AAAAxx'
+804,1525,0,0,4,4,4,804,804,804,804,8,9,'YEAAAA','RGCAAA','HHHHxx'
+8378,1526,0,2,8,18,78,378,378,3378,8378,156,157,'GKAAAA','SGCAAA','OOOOxx'
+9855,1527,1,3,5,15,55,855,1855,4855,9855,110,111,'BPAAAA','TGCAAA','VVVVxx'
+1995,1528,1,3,5,15,95,995,1995,1995,1995,190,191,'TYAAAA','UGCAAA','AAAAxx'
+1979,1529,1,3,9,19,79,979,1979,1979,1979,158,159,'DYAAAA','VGCAAA','HHHHxx'
+4510,1530,0,2,0,10,10,510,510,4510,4510,20,21,'MRAAAA','WGCAAA','OOOOxx'
+3792,1531,0,0,2,12,92,792,1792,3792,3792,184,185,'WPAAAA','XGCAAA','VVVVxx'
+3541,1532,1,1,1,1,41,541,1541,3541,3541,82,83,'FGAAAA','YGCAAA','AAAAxx'
+8847,1533,1,3,7,7,47,847,847,3847,8847,94,95,'HCAAAA','ZGCAAA','HHHHxx'
+1336,1534,0,0,6,16,36,336,1336,1336,1336,72,73,'KZAAAA','AHCAAA','OOOOxx'
+6780,1535,0,0,0,0,80,780,780,1780,6780,160,161,'UAAAAA','BHCAAA','VVVVxx'
+8711,1536,1,3,1,11,11,711,711,3711,8711,22,23,'BXAAAA','CHCAAA','AAAAxx'
+7839,1537,1,3,9,19,39,839,1839,2839,7839,78,79,'NPAAAA','DHCAAA','HHHHxx'
+677,1538,1,1,7,17,77,677,677,677,677,154,155,'BAAAAA','EHCAAA','OOOOxx'
+1574,1539,0,2,4,14,74,574,1574,1574,1574,148,149,'OIAAAA','FHCAAA','VVVVxx'
+2905,1540,1,1,5,5,5,905,905,2905,2905,10,11,'THAAAA','GHCAAA','AAAAxx'
+1879,1541,1,3,9,19,79,879,1879,1879,1879,158,159,'HUAAAA','HHCAAA','HHHHxx'
+7820,1542,0,0,0,0,20,820,1820,2820,7820,40,41,'UOAAAA','IHCAAA','OOOOxx'
+4308,1543,0,0,8,8,8,308,308,4308,4308,16,17,'SJAAAA','JHCAAA','VVVVxx'
+4474,1544,0,2,4,14,74,474,474,4474,4474,148,149,'CQAAAA','KHCAAA','AAAAxx'
+6985,1545,1,1,5,5,85,985,985,1985,6985,170,171,'RIAAAA','LHCAAA','HHHHxx'
+6929,1546,1,1,9,9,29,929,929,1929,6929,58,59,'NGAAAA','MHCAAA','OOOOxx'
+777,1547,1,1,7,17,77,777,777,777,777,154,155,'XDAAAA','NHCAAA','VVVVxx'
+8271,1548,1,3,1,11,71,271,271,3271,8271,142,143,'DGAAAA','OHCAAA','AAAAxx'
+2389,1549,1,1,9,9,89,389,389,2389,2389,178,179,'XNAAAA','PHCAAA','HHHHxx'
+946,1550,0,2,6,6,46,946,946,946,946,92,93,'KKAAAA','QHCAAA','OOOOxx'
+9682,1551,0,2,2,2,82,682,1682,4682,9682,164,165,'KIAAAA','RHCAAA','VVVVxx'
+8722,1552,0,2,2,2,22,722,722,3722,8722,44,45,'MXAAAA','SHCAAA','AAAAxx'
+470,1553,0,2,0,10,70,470,470,470,470,140,141,'CSAAAA','THCAAA','HHHHxx'
+7425,1554,1,1,5,5,25,425,1425,2425,7425,50,51,'PZAAAA','UHCAAA','OOOOxx'
+2372,1555,0,0,2,12,72,372,372,2372,2372,144,145,'GNAAAA','VHCAAA','VVVVxx'
+508,1556,0,0,8,8,8,508,508,508,508,16,17,'OTAAAA','WHCAAA','AAAAxx'
+163,1557,1,3,3,3,63,163,163,163,163,126,127,'HGAAAA','XHCAAA','HHHHxx'
+6579,1558,1,3,9,19,79,579,579,1579,6579,158,159,'BTAAAA','YHCAAA','OOOOxx'
+2355,1559,1,3,5,15,55,355,355,2355,2355,110,111,'PMAAAA','ZHCAAA','VVVVxx'
+70,1560,0,2,0,10,70,70,70,70,70,140,141,'SCAAAA','AICAAA','AAAAxx'
+651,1561,1,3,1,11,51,651,651,651,651,102,103,'BZAAAA','BICAAA','HHHHxx'
+4436,1562,0,0,6,16,36,436,436,4436,4436,72,73,'QOAAAA','CICAAA','OOOOxx'
+4240,1563,0,0,0,0,40,240,240,4240,4240,80,81,'CHAAAA','DICAAA','VVVVxx'
+2722,1564,0,2,2,2,22,722,722,2722,2722,44,45,'SAAAAA','EICAAA','AAAAxx'
+8937,1565,1,1,7,17,37,937,937,3937,8937,74,75,'TFAAAA','FICAAA','HHHHxx'
+8364,1566,0,0,4,4,64,364,364,3364,8364,128,129,'SJAAAA','GICAAA','OOOOxx'
+8317,1567,1,1,7,17,17,317,317,3317,8317,34,35,'XHAAAA','HICAAA','VVVVxx'
+8872,1568,0,0,2,12,72,872,872,3872,8872,144,145,'GDAAAA','IICAAA','AAAAxx'
+5512,1569,0,0,2,12,12,512,1512,512,5512,24,25,'AEAAAA','JICAAA','HHHHxx'
+6651,1570,1,3,1,11,51,651,651,1651,6651,102,103,'VVAAAA','KICAAA','OOOOxx'
+5976,1571,0,0,6,16,76,976,1976,976,5976,152,153,'WVAAAA','LICAAA','VVVVxx'
+3301,1572,1,1,1,1,1,301,1301,3301,3301,2,3,'ZWAAAA','MICAAA','AAAAxx'
+6784,1573,0,0,4,4,84,784,784,1784,6784,168,169,'YAAAAA','NICAAA','HHHHxx'
+573,1574,1,1,3,13,73,573,573,573,573,146,147,'BWAAAA','OICAAA','OOOOxx'
+3015,1575,1,3,5,15,15,15,1015,3015,3015,30,31,'ZLAAAA','PICAAA','VVVVxx'
+8245,1576,1,1,5,5,45,245,245,3245,8245,90,91,'DFAAAA','QICAAA','AAAAxx'
+5251,1577,1,3,1,11,51,251,1251,251,5251,102,103,'ZTAAAA','RICAAA','HHHHxx'
+2281,1578,1,1,1,1,81,281,281,2281,2281,162,163,'TJAAAA','SICAAA','OOOOxx'
+518,1579,0,2,8,18,18,518,518,518,518,36,37,'YTAAAA','TICAAA','VVVVxx'
+9839,1580,1,3,9,19,39,839,1839,4839,9839,78,79,'LOAAAA','UICAAA','AAAAxx'
+4526,1581,0,2,6,6,26,526,526,4526,4526,52,53,'CSAAAA','VICAAA','HHHHxx'
+1261,1582,1,1,1,1,61,261,1261,1261,1261,122,123,'NWAAAA','WICAAA','OOOOxx'
+4259,1583,1,3,9,19,59,259,259,4259,4259,118,119,'VHAAAA','XICAAA','VVVVxx'
+9098,1584,0,2,8,18,98,98,1098,4098,9098,196,197,'YLAAAA','YICAAA','AAAAxx'
+6037,1585,1,1,7,17,37,37,37,1037,6037,74,75,'FYAAAA','ZICAAA','HHHHxx'
+4284,1586,0,0,4,4,84,284,284,4284,4284,168,169,'UIAAAA','AJCAAA','OOOOxx'
+3267,1587,1,3,7,7,67,267,1267,3267,3267,134,135,'RVAAAA','BJCAAA','VVVVxx'
+5908,1588,0,0,8,8,8,908,1908,908,5908,16,17,'GTAAAA','CJCAAA','AAAAxx'
+1549,1589,1,1,9,9,49,549,1549,1549,1549,98,99,'PHAAAA','DJCAAA','HHHHxx'
+8736,1590,0,0,6,16,36,736,736,3736,8736,72,73,'AYAAAA','EJCAAA','OOOOxx'
+2008,1591,0,0,8,8,8,8,8,2008,2008,16,17,'GZAAAA','FJCAAA','VVVVxx'
+548,1592,0,0,8,8,48,548,548,548,548,96,97,'CVAAAA','GJCAAA','AAAAxx'
+8846,1593,0,2,6,6,46,846,846,3846,8846,92,93,'GCAAAA','HJCAAA','HHHHxx'
+8374,1594,0,2,4,14,74,374,374,3374,8374,148,149,'CKAAAA','IJCAAA','OOOOxx'
+7986,1595,0,2,6,6,86,986,1986,2986,7986,172,173,'EVAAAA','JJCAAA','VVVVxx'
+6819,1596,1,3,9,19,19,819,819,1819,6819,38,39,'HCAAAA','KJCAAA','AAAAxx'
+4418,1597,0,2,8,18,18,418,418,4418,4418,36,37,'YNAAAA','LJCAAA','HHHHxx'
+833,1598,1,1,3,13,33,833,833,833,833,66,67,'BGAAAA','MJCAAA','OOOOxx'
+4416,1599,0,0,6,16,16,416,416,4416,4416,32,33,'WNAAAA','NJCAAA','VVVVxx'
+4902,1600,0,2,2,2,2,902,902,4902,4902,4,5,'OGAAAA','OJCAAA','AAAAxx'
+6828,1601,0,0,8,8,28,828,828,1828,6828,56,57,'QCAAAA','PJCAAA','HHHHxx'
+1118,1602,0,2,8,18,18,118,1118,1118,1118,36,37,'ARAAAA','QJCAAA','OOOOxx'
+9993,1603,1,1,3,13,93,993,1993,4993,9993,186,187,'JUAAAA','RJCAAA','VVVVxx'
+1430,1604,0,2,0,10,30,430,1430,1430,1430,60,61,'ADAAAA','SJCAAA','AAAAxx'
+5670,1605,0,2,0,10,70,670,1670,670,5670,140,141,'CKAAAA','TJCAAA','HHHHxx'
+5424,1606,0,0,4,4,24,424,1424,424,5424,48,49,'QAAAAA','UJCAAA','OOOOxx'
+5561,1607,1,1,1,1,61,561,1561,561,5561,122,123,'XFAAAA','VJCAAA','VVVVxx'
+2027,1608,1,3,7,7,27,27,27,2027,2027,54,55,'ZZAAAA','WJCAAA','AAAAxx'
+6924,1609,0,0,4,4,24,924,924,1924,6924,48,49,'IGAAAA','XJCAAA','HHHHxx'
+5946,1610,0,2,6,6,46,946,1946,946,5946,92,93,'SUAAAA','YJCAAA','OOOOxx'
+4294,1611,0,2,4,14,94,294,294,4294,4294,188,189,'EJAAAA','ZJCAAA','VVVVxx'
+2936,1612,0,0,6,16,36,936,936,2936,2936,72,73,'YIAAAA','AKCAAA','AAAAxx'
+3855,1613,1,3,5,15,55,855,1855,3855,3855,110,111,'HSAAAA','BKCAAA','HHHHxx'
+455,1614,1,3,5,15,55,455,455,455,455,110,111,'NRAAAA','CKCAAA','OOOOxx'
+2918,1615,0,2,8,18,18,918,918,2918,2918,36,37,'GIAAAA','DKCAAA','VVVVxx'
+448,1616,0,0,8,8,48,448,448,448,448,96,97,'GRAAAA','EKCAAA','AAAAxx'
+2149,1617,1,1,9,9,49,149,149,2149,2149,98,99,'REAAAA','FKCAAA','HHHHxx'
+8890,1618,0,2,0,10,90,890,890,3890,8890,180,181,'YDAAAA','GKCAAA','OOOOxx'
+8919,1619,1,3,9,19,19,919,919,3919,8919,38,39,'BFAAAA','HKCAAA','VVVVxx'
+4957,1620,1,1,7,17,57,957,957,4957,4957,114,115,'RIAAAA','IKCAAA','AAAAxx'
+4,1621,0,0,4,4,4,4,4,4,4,8,9,'EAAAAA','JKCAAA','HHHHxx'
+4837,1622,1,1,7,17,37,837,837,4837,4837,74,75,'BEAAAA','KKCAAA','OOOOxx'
+3976,1623,0,0,6,16,76,976,1976,3976,3976,152,153,'YWAAAA','LKCAAA','VVVVxx'
+9459,1624,1,3,9,19,59,459,1459,4459,9459,118,119,'VZAAAA','MKCAAA','AAAAxx'
+7097,1625,1,1,7,17,97,97,1097,2097,7097,194,195,'ZMAAAA','NKCAAA','HHHHxx'
+9226,1626,0,2,6,6,26,226,1226,4226,9226,52,53,'WQAAAA','OKCAAA','OOOOxx'
+5803,1627,1,3,3,3,3,803,1803,803,5803,6,7,'FPAAAA','PKCAAA','VVVVxx'
+21,1628,1,1,1,1,21,21,21,21,21,42,43,'VAAAAA','QKCAAA','AAAAxx'
+5275,1629,1,3,5,15,75,275,1275,275,5275,150,151,'XUAAAA','RKCAAA','HHHHxx'
+3488,1630,0,0,8,8,88,488,1488,3488,3488,176,177,'EEAAAA','SKCAAA','OOOOxx'
+1595,1631,1,3,5,15,95,595,1595,1595,1595,190,191,'JJAAAA','TKCAAA','VVVVxx'
+5212,1632,0,0,2,12,12,212,1212,212,5212,24,25,'MSAAAA','UKCAAA','AAAAxx'
+6574,1633,0,2,4,14,74,574,574,1574,6574,148,149,'WSAAAA','VKCAAA','HHHHxx'
+7524,1634,0,0,4,4,24,524,1524,2524,7524,48,49,'KDAAAA','WKCAAA','OOOOxx'
+6100,1635,0,0,0,0,0,100,100,1100,6100,0,1,'QAAAAA','XKCAAA','VVVVxx'
+1198,1636,0,2,8,18,98,198,1198,1198,1198,196,197,'CUAAAA','YKCAAA','AAAAxx'
+7345,1637,1,1,5,5,45,345,1345,2345,7345,90,91,'NWAAAA','ZKCAAA','HHHHxx'
+5020,1638,0,0,0,0,20,20,1020,20,5020,40,41,'CLAAAA','ALCAAA','OOOOxx'
+6925,1639,1,1,5,5,25,925,925,1925,6925,50,51,'JGAAAA','BLCAAA','VVVVxx'
+8915,1640,1,3,5,15,15,915,915,3915,8915,30,31,'XEAAAA','CLCAAA','AAAAxx'
+3088,1641,0,0,8,8,88,88,1088,3088,3088,176,177,'UOAAAA','DLCAAA','HHHHxx'
+4828,1642,0,0,8,8,28,828,828,4828,4828,56,57,'SDAAAA','ELCAAA','OOOOxx'
+7276,1643,0,0,6,16,76,276,1276,2276,7276,152,153,'WTAAAA','FLCAAA','VVVVxx'
+299,1644,1,3,9,19,99,299,299,299,299,198,199,'NLAAAA','GLCAAA','AAAAxx'
+76,1645,0,0,6,16,76,76,76,76,76,152,153,'YCAAAA','HLCAAA','HHHHxx'
+8458,1646,0,2,8,18,58,458,458,3458,8458,116,117,'INAAAA','ILCAAA','OOOOxx'
+7207,1647,1,3,7,7,7,207,1207,2207,7207,14,15,'FRAAAA','JLCAAA','VVVVxx'
+5585,1648,1,1,5,5,85,585,1585,585,5585,170,171,'VGAAAA','KLCAAA','AAAAxx'
+3234,1649,0,2,4,14,34,234,1234,3234,3234,68,69,'KUAAAA','LLCAAA','HHHHxx'
+8001,1650,1,1,1,1,1,1,1,3001,8001,2,3,'TVAAAA','MLCAAA','OOOOxx'
+1319,1651,1,3,9,19,19,319,1319,1319,1319,38,39,'TYAAAA','NLCAAA','VVVVxx'
+6342,1652,0,2,2,2,42,342,342,1342,6342,84,85,'YJAAAA','OLCAAA','AAAAxx'
+9199,1653,1,3,9,19,99,199,1199,4199,9199,198,199,'VPAAAA','PLCAAA','HHHHxx'
+5696,1654,0,0,6,16,96,696,1696,696,5696,192,193,'CLAAAA','QLCAAA','OOOOxx'
+2562,1655,0,2,2,2,62,562,562,2562,2562,124,125,'OUAAAA','RLCAAA','VVVVxx'
+4226,1656,0,2,6,6,26,226,226,4226,4226,52,53,'OGAAAA','SLCAAA','AAAAxx'
+1184,1657,0,0,4,4,84,184,1184,1184,1184,168,169,'OTAAAA','TLCAAA','HHHHxx'
+5807,1658,1,3,7,7,7,807,1807,807,5807,14,15,'JPAAAA','ULCAAA','OOOOxx'
+1890,1659,0,2,0,10,90,890,1890,1890,1890,180,181,'SUAAAA','VLCAAA','VVVVxx'
+451,1660,1,3,1,11,51,451,451,451,451,102,103,'JRAAAA','WLCAAA','AAAAxx'
+1049,1661,1,1,9,9,49,49,1049,1049,1049,98,99,'JOAAAA','XLCAAA','HHHHxx'
+5272,1662,0,0,2,12,72,272,1272,272,5272,144,145,'UUAAAA','YLCAAA','OOOOxx'
+4588,1663,0,0,8,8,88,588,588,4588,4588,176,177,'MUAAAA','ZLCAAA','VVVVxx'
+5213,1664,1,1,3,13,13,213,1213,213,5213,26,27,'NSAAAA','AMCAAA','AAAAxx'
+9543,1665,1,3,3,3,43,543,1543,4543,9543,86,87,'BDAAAA','BMCAAA','HHHHxx'
+6318,1666,0,2,8,18,18,318,318,1318,6318,36,37,'AJAAAA','CMCAAA','OOOOxx'
+7992,1667,0,0,2,12,92,992,1992,2992,7992,184,185,'KVAAAA','DMCAAA','VVVVxx'
+4619,1668,1,3,9,19,19,619,619,4619,4619,38,39,'RVAAAA','EMCAAA','AAAAxx'
+7189,1669,1,1,9,9,89,189,1189,2189,7189,178,179,'NQAAAA','FMCAAA','HHHHxx'
+2178,1670,0,2,8,18,78,178,178,2178,2178,156,157,'UFAAAA','GMCAAA','OOOOxx'
+4928,1671,0,0,8,8,28,928,928,4928,4928,56,57,'OHAAAA','HMCAAA','VVVVxx'
+3966,1672,0,2,6,6,66,966,1966,3966,3966,132,133,'OWAAAA','IMCAAA','AAAAxx'
+9790,1673,0,2,0,10,90,790,1790,4790,9790,180,181,'OMAAAA','JMCAAA','HHHHxx'
+9150,1674,0,2,0,10,50,150,1150,4150,9150,100,101,'YNAAAA','KMCAAA','OOOOxx'
+313,1675,1,1,3,13,13,313,313,313,313,26,27,'BMAAAA','LMCAAA','VVVVxx'
+1614,1676,0,2,4,14,14,614,1614,1614,1614,28,29,'CKAAAA','MMCAAA','AAAAxx'
+1581,1677,1,1,1,1,81,581,1581,1581,1581,162,163,'VIAAAA','NMCAAA','HHHHxx'
+3674,1678,0,2,4,14,74,674,1674,3674,3674,148,149,'ILAAAA','OMCAAA','OOOOxx'
+3444,1679,0,0,4,4,44,444,1444,3444,3444,88,89,'MCAAAA','PMCAAA','VVVVxx'
+1050,1680,0,2,0,10,50,50,1050,1050,1050,100,101,'KOAAAA','QMCAAA','AAAAxx'
+8241,1681,1,1,1,1,41,241,241,3241,8241,82,83,'ZEAAAA','RMCAAA','HHHHxx'
+3382,1682,0,2,2,2,82,382,1382,3382,3382,164,165,'CAAAAA','SMCAAA','OOOOxx'
+7105,1683,1,1,5,5,5,105,1105,2105,7105,10,11,'HNAAAA','TMCAAA','VVVVxx'
+2957,1684,1,1,7,17,57,957,957,2957,2957,114,115,'TJAAAA','UMCAAA','AAAAxx'
+6162,1685,0,2,2,2,62,162,162,1162,6162,124,125,'ADAAAA','VMCAAA','HHHHxx'
+5150,1686,0,2,0,10,50,150,1150,150,5150,100,101,'CQAAAA','WMCAAA','OOOOxx'
+2622,1687,0,2,2,2,22,622,622,2622,2622,44,45,'WWAAAA','XMCAAA','VVVVxx'
+2240,1688,0,0,0,0,40,240,240,2240,2240,80,81,'EIAAAA','YMCAAA','AAAAxx'
+8880,1689,0,0,0,0,80,880,880,3880,8880,160,161,'ODAAAA','ZMCAAA','HHHHxx'
+9250,1690,0,2,0,10,50,250,1250,4250,9250,100,101,'URAAAA','ANCAAA','OOOOxx'
+7010,1691,0,2,0,10,10,10,1010,2010,7010,20,21,'QJAAAA','BNCAAA','VVVVxx'
+1098,1692,0,2,8,18,98,98,1098,1098,1098,196,197,'GQAAAA','CNCAAA','AAAAxx'
+648,1693,0,0,8,8,48,648,648,648,648,96,97,'YYAAAA','DNCAAA','HHHHxx'
+5536,1694,0,0,6,16,36,536,1536,536,5536,72,73,'YEAAAA','ENCAAA','OOOOxx'
+7858,1695,0,2,8,18,58,858,1858,2858,7858,116,117,'GQAAAA','FNCAAA','VVVVxx'
+7053,1696,1,1,3,13,53,53,1053,2053,7053,106,107,'HLAAAA','GNCAAA','AAAAxx'
+8681,1697,1,1,1,1,81,681,681,3681,8681,162,163,'XVAAAA','HNCAAA','HHHHxx'
+8832,1698,0,0,2,12,32,832,832,3832,8832,64,65,'SBAAAA','INCAAA','OOOOxx'
+6836,1699,0,0,6,16,36,836,836,1836,6836,72,73,'YCAAAA','JNCAAA','VVVVxx'
+4856,1700,0,0,6,16,56,856,856,4856,4856,112,113,'UEAAAA','KNCAAA','AAAAxx'
+345,1701,1,1,5,5,45,345,345,345,345,90,91,'HNAAAA','LNCAAA','HHHHxx'
+6559,1702,1,3,9,19,59,559,559,1559,6559,118,119,'HSAAAA','MNCAAA','OOOOxx'
+3017,1703,1,1,7,17,17,17,1017,3017,3017,34,35,'BMAAAA','NNCAAA','VVVVxx'
+4176,1704,0,0,6,16,76,176,176,4176,4176,152,153,'QEAAAA','ONCAAA','AAAAxx'
+2839,1705,1,3,9,19,39,839,839,2839,2839,78,79,'FFAAAA','PNCAAA','HHHHxx'
+6065,1706,1,1,5,5,65,65,65,1065,6065,130,131,'HZAAAA','QNCAAA','OOOOxx'
+7360,1707,0,0,0,0,60,360,1360,2360,7360,120,121,'CXAAAA','RNCAAA','VVVVxx'
+9527,1708,1,3,7,7,27,527,1527,4527,9527,54,55,'LCAAAA','SNCAAA','AAAAxx'
+8849,1709,1,1,9,9,49,849,849,3849,8849,98,99,'JCAAAA','TNCAAA','HHHHxx'
+7274,1710,0,2,4,14,74,274,1274,2274,7274,148,149,'UTAAAA','UNCAAA','OOOOxx'
+4368,1711,0,0,8,8,68,368,368,4368,4368,136,137,'AMAAAA','VNCAAA','VVVVxx'
+2488,1712,0,0,8,8,88,488,488,2488,2488,176,177,'SRAAAA','WNCAAA','AAAAxx'
+4674,1713,0,2,4,14,74,674,674,4674,4674,148,149,'UXAAAA','XNCAAA','HHHHxx'
+365,1714,1,1,5,5,65,365,365,365,365,130,131,'BOAAAA','YNCAAA','OOOOxx'
+5897,1715,1,1,7,17,97,897,1897,897,5897,194,195,'VSAAAA','ZNCAAA','VVVVxx'
+8918,1716,0,2,8,18,18,918,918,3918,8918,36,37,'AFAAAA','AOCAAA','AAAAxx'
+1988,1717,0,0,8,8,88,988,1988,1988,1988,176,177,'MYAAAA','BOCAAA','HHHHxx'
+1210,1718,0,2,0,10,10,210,1210,1210,1210,20,21,'OUAAAA','COCAAA','OOOOxx'
+2945,1719,1,1,5,5,45,945,945,2945,2945,90,91,'HJAAAA','DOCAAA','VVVVxx'
+555,1720,1,3,5,15,55,555,555,555,555,110,111,'JVAAAA','EOCAAA','AAAAxx'
+9615,1721,1,3,5,15,15,615,1615,4615,9615,30,31,'VFAAAA','FOCAAA','HHHHxx'
+9939,1722,1,3,9,19,39,939,1939,4939,9939,78,79,'HSAAAA','GOCAAA','OOOOxx'
+1216,1723,0,0,6,16,16,216,1216,1216,1216,32,33,'UUAAAA','HOCAAA','VVVVxx'
+745,1724,1,1,5,5,45,745,745,745,745,90,91,'RCAAAA','IOCAAA','AAAAxx'
+3326,1725,0,2,6,6,26,326,1326,3326,3326,52,53,'YXAAAA','JOCAAA','HHHHxx'
+953,1726,1,1,3,13,53,953,953,953,953,106,107,'RKAAAA','KOCAAA','OOOOxx'
+444,1727,0,0,4,4,44,444,444,444,444,88,89,'CRAAAA','LOCAAA','VVVVxx'
+280,1728,0,0,0,0,80,280,280,280,280,160,161,'UKAAAA','MOCAAA','AAAAxx'
+3707,1729,1,3,7,7,7,707,1707,3707,3707,14,15,'PMAAAA','NOCAAA','HHHHxx'
+1351,1730,1,3,1,11,51,351,1351,1351,1351,102,103,'ZZAAAA','OOCAAA','OOOOxx'
+1280,1731,0,0,0,0,80,280,1280,1280,1280,160,161,'GXAAAA','POCAAA','VVVVxx'
+628,1732,0,0,8,8,28,628,628,628,628,56,57,'EYAAAA','QOCAAA','AAAAxx'
+6198,1733,0,2,8,18,98,198,198,1198,6198,196,197,'KEAAAA','ROCAAA','HHHHxx'
+1957,1734,1,1,7,17,57,957,1957,1957,1957,114,115,'HXAAAA','SOCAAA','OOOOxx'
+9241,1735,1,1,1,1,41,241,1241,4241,9241,82,83,'LRAAAA','TOCAAA','VVVVxx'
+303,1736,1,3,3,3,3,303,303,303,303,6,7,'RLAAAA','UOCAAA','AAAAxx'
+1945,1737,1,1,5,5,45,945,1945,1945,1945,90,91,'VWAAAA','VOCAAA','HHHHxx'
+3634,1738,0,2,4,14,34,634,1634,3634,3634,68,69,'UJAAAA','WOCAAA','OOOOxx'
+4768,1739,0,0,8,8,68,768,768,4768,4768,136,137,'KBAAAA','XOCAAA','VVVVxx'
+9262,1740,0,2,2,2,62,262,1262,4262,9262,124,125,'GSAAAA','YOCAAA','AAAAxx'
+2610,1741,0,2,0,10,10,610,610,2610,2610,20,21,'KWAAAA','ZOCAAA','HHHHxx'
+6640,1742,0,0,0,0,40,640,640,1640,6640,80,81,'KVAAAA','APCAAA','OOOOxx'
+3338,1743,0,2,8,18,38,338,1338,3338,3338,76,77,'KYAAAA','BPCAAA','VVVVxx'
+6560,1744,0,0,0,0,60,560,560,1560,6560,120,121,'ISAAAA','CPCAAA','AAAAxx'
+5986,1745,0,2,6,6,86,986,1986,986,5986,172,173,'GWAAAA','DPCAAA','HHHHxx'
+2970,1746,0,2,0,10,70,970,970,2970,2970,140,141,'GKAAAA','EPCAAA','OOOOxx'
+4731,1747,1,3,1,11,31,731,731,4731,4731,62,63,'ZZAAAA','FPCAAA','VVVVxx'
+9486,1748,0,2,6,6,86,486,1486,4486,9486,172,173,'WAAAAA','GPCAAA','AAAAxx'
+7204,1749,0,0,4,4,4,204,1204,2204,7204,8,9,'CRAAAA','HPCAAA','HHHHxx'
+6685,1750,1,1,5,5,85,685,685,1685,6685,170,171,'DXAAAA','IPCAAA','OOOOxx'
+6852,1751,0,0,2,12,52,852,852,1852,6852,104,105,'ODAAAA','JPCAAA','VVVVxx'
+2325,1752,1,1,5,5,25,325,325,2325,2325,50,51,'LLAAAA','KPCAAA','AAAAxx'
+1063,1753,1,3,3,3,63,63,1063,1063,1063,126,127,'XOAAAA','LPCAAA','HHHHxx'
+6810,1754,0,2,0,10,10,810,810,1810,6810,20,21,'YBAAAA','MPCAAA','OOOOxx'
+7718,1755,0,2,8,18,18,718,1718,2718,7718,36,37,'WKAAAA','NPCAAA','VVVVxx'
+1680,1756,0,0,0,0,80,680,1680,1680,1680,160,161,'QMAAAA','OPCAAA','AAAAxx'
+7402,1757,0,2,2,2,2,402,1402,2402,7402,4,5,'SYAAAA','PPCAAA','HHHHxx'
+4134,1758,0,2,4,14,34,134,134,4134,4134,68,69,'ADAAAA','QPCAAA','OOOOxx'
+8232,1759,0,0,2,12,32,232,232,3232,8232,64,65,'QEAAAA','RPCAAA','VVVVxx'
+6682,1760,0,2,2,2,82,682,682,1682,6682,164,165,'AXAAAA','SPCAAA','AAAAxx'
+7952,1761,0,0,2,12,52,952,1952,2952,7952,104,105,'WTAAAA','TPCAAA','HHHHxx'
+5943,1762,1,3,3,3,43,943,1943,943,5943,86,87,'PUAAAA','UPCAAA','OOOOxx'
+5394,1763,0,2,4,14,94,394,1394,394,5394,188,189,'MZAAAA','VPCAAA','VVVVxx'
+6554,1764,0,2,4,14,54,554,554,1554,6554,108,109,'CSAAAA','WPCAAA','AAAAxx'
+8186,1765,0,2,6,6,86,186,186,3186,8186,172,173,'WCAAAA','XPCAAA','HHHHxx'
+199,1766,1,3,9,19,99,199,199,199,199,198,199,'RHAAAA','YPCAAA','OOOOxx'
+3386,1767,0,2,6,6,86,386,1386,3386,3386,172,173,'GAAAAA','ZPCAAA','VVVVxx'
+8974,1768,0,2,4,14,74,974,974,3974,8974,148,149,'EHAAAA','AQCAAA','AAAAxx'
+8140,1769,0,0,0,0,40,140,140,3140,8140,80,81,'CBAAAA','BQCAAA','HHHHxx'
+3723,1770,1,3,3,3,23,723,1723,3723,3723,46,47,'FNAAAA','CQCAAA','OOOOxx'
+8827,1771,1,3,7,7,27,827,827,3827,8827,54,55,'NBAAAA','DQCAAA','VVVVxx'
+1998,1772,0,2,8,18,98,998,1998,1998,1998,196,197,'WYAAAA','EQCAAA','AAAAxx'
+879,1773,1,3,9,19,79,879,879,879,879,158,159,'VHAAAA','FQCAAA','HHHHxx'
+892,1774,0,0,2,12,92,892,892,892,892,184,185,'IIAAAA','GQCAAA','OOOOxx'
+9468,1775,0,0,8,8,68,468,1468,4468,9468,136,137,'EAAAAA','HQCAAA','VVVVxx'
+3797,1776,1,1,7,17,97,797,1797,3797,3797,194,195,'BQAAAA','IQCAAA','AAAAxx'
+8379,1777,1,3,9,19,79,379,379,3379,8379,158,159,'HKAAAA','JQCAAA','HHHHxx'
+2817,1778,1,1,7,17,17,817,817,2817,2817,34,35,'JEAAAA','KQCAAA','OOOOxx'
+789,1779,1,1,9,9,89,789,789,789,789,178,179,'JEAAAA','LQCAAA','VVVVxx'
+3871,1780,1,3,1,11,71,871,1871,3871,3871,142,143,'XSAAAA','MQCAAA','AAAAxx'
+7931,1781,1,3,1,11,31,931,1931,2931,7931,62,63,'BTAAAA','NQCAAA','HHHHxx'
+3636,1782,0,0,6,16,36,636,1636,3636,3636,72,73,'WJAAAA','OQCAAA','OOOOxx'
+699,1783,1,3,9,19,99,699,699,699,699,198,199,'XAAAAA','PQCAAA','VVVVxx'
+6850,1784,0,2,0,10,50,850,850,1850,6850,100,101,'MDAAAA','QQCAAA','AAAAxx'
+6394,1785,0,2,4,14,94,394,394,1394,6394,188,189,'YLAAAA','RQCAAA','HHHHxx'
+3475,1786,1,3,5,15,75,475,1475,3475,3475,150,151,'RDAAAA','SQCAAA','OOOOxx'
+3026,1787,0,2,6,6,26,26,1026,3026,3026,52,53,'KMAAAA','TQCAAA','VVVVxx'
+876,1788,0,0,6,16,76,876,876,876,876,152,153,'SHAAAA','UQCAAA','AAAAxx'
+1992,1789,0,0,2,12,92,992,1992,1992,1992,184,185,'QYAAAA','VQCAAA','HHHHxx'
+3079,1790,1,3,9,19,79,79,1079,3079,3079,158,159,'LOAAAA','WQCAAA','OOOOxx'
+8128,1791,0,0,8,8,28,128,128,3128,8128,56,57,'QAAAAA','XQCAAA','VVVVxx'
+8123,1792,1,3,3,3,23,123,123,3123,8123,46,47,'LAAAAA','YQCAAA','AAAAxx'
+3285,1793,1,1,5,5,85,285,1285,3285,3285,170,171,'JWAAAA','ZQCAAA','HHHHxx'
+9315,1794,1,3,5,15,15,315,1315,4315,9315,30,31,'HUAAAA','ARCAAA','OOOOxx'
+9862,1795,0,2,2,2,62,862,1862,4862,9862,124,125,'IPAAAA','BRCAAA','VVVVxx'
+2764,1796,0,0,4,4,64,764,764,2764,2764,128,129,'ICAAAA','CRCAAA','AAAAxx'
+3544,1797,0,0,4,4,44,544,1544,3544,3544,88,89,'IGAAAA','DRCAAA','HHHHxx'
+7747,1798,1,3,7,7,47,747,1747,2747,7747,94,95,'ZLAAAA','ERCAAA','OOOOxx'
+7725,1799,1,1,5,5,25,725,1725,2725,7725,50,51,'DLAAAA','FRCAAA','VVVVxx'
+2449,1800,1,1,9,9,49,449,449,2449,2449,98,99,'FQAAAA','GRCAAA','AAAAxx'
+8967,1801,1,3,7,7,67,967,967,3967,8967,134,135,'XGAAAA','HRCAAA','HHHHxx'
+7371,1802,1,3,1,11,71,371,1371,2371,7371,142,143,'NXAAAA','IRCAAA','OOOOxx'
+2158,1803,0,2,8,18,58,158,158,2158,2158,116,117,'AFAAAA','JRCAAA','VVVVxx'
+5590,1804,0,2,0,10,90,590,1590,590,5590,180,181,'AHAAAA','KRCAAA','AAAAxx'
+8072,1805,0,0,2,12,72,72,72,3072,8072,144,145,'MYAAAA','LRCAAA','HHHHxx'
+1971,1806,1,3,1,11,71,971,1971,1971,1971,142,143,'VXAAAA','MRCAAA','OOOOxx'
+772,1807,0,0,2,12,72,772,772,772,772,144,145,'SDAAAA','NRCAAA','VVVVxx'
+3433,1808,1,1,3,13,33,433,1433,3433,3433,66,67,'BCAAAA','ORCAAA','AAAAxx'
+8419,1809,1,3,9,19,19,419,419,3419,8419,38,39,'VLAAAA','PRCAAA','HHHHxx'
+1493,1810,1,1,3,13,93,493,1493,1493,1493,186,187,'LFAAAA','QRCAAA','OOOOxx'
+2584,1811,0,0,4,4,84,584,584,2584,2584,168,169,'KVAAAA','RRCAAA','VVVVxx'
+9502,1812,0,2,2,2,2,502,1502,4502,9502,4,5,'MBAAAA','SRCAAA','AAAAxx'
+4673,1813,1,1,3,13,73,673,673,4673,4673,146,147,'TXAAAA','TRCAAA','HHHHxx'
+7403,1814,1,3,3,3,3,403,1403,2403,7403,6,7,'TYAAAA','URCAAA','OOOOxx'
+7103,1815,1,3,3,3,3,103,1103,2103,7103,6,7,'FNAAAA','VRCAAA','VVVVxx'
+7026,1816,0,2,6,6,26,26,1026,2026,7026,52,53,'GKAAAA','WRCAAA','AAAAxx'
+8574,1817,0,2,4,14,74,574,574,3574,8574,148,149,'URAAAA','XRCAAA','HHHHxx'
+1366,1818,0,2,6,6,66,366,1366,1366,1366,132,133,'OAAAAA','YRCAAA','OOOOxx'
+5787,1819,1,3,7,7,87,787,1787,787,5787,174,175,'POAAAA','ZRCAAA','VVVVxx'
+2552,1820,0,0,2,12,52,552,552,2552,2552,104,105,'EUAAAA','ASCAAA','AAAAxx'
+4557,1821,1,1,7,17,57,557,557,4557,4557,114,115,'HTAAAA','BSCAAA','HHHHxx'
+3237,1822,1,1,7,17,37,237,1237,3237,3237,74,75,'NUAAAA','CSCAAA','OOOOxx'
+6901,1823,1,1,1,1,1,901,901,1901,6901,2,3,'LFAAAA','DSCAAA','VVVVxx'
+7708,1824,0,0,8,8,8,708,1708,2708,7708,16,17,'MKAAAA','ESCAAA','AAAAxx'
+2011,1825,1,3,1,11,11,11,11,2011,2011,22,23,'JZAAAA','FSCAAA','HHHHxx'
+9455,1826,1,3,5,15,55,455,1455,4455,9455,110,111,'RZAAAA','GSCAAA','OOOOxx'
+5228,1827,0,0,8,8,28,228,1228,228,5228,56,57,'CTAAAA','HSCAAA','VVVVxx'
+4043,1828,1,3,3,3,43,43,43,4043,4043,86,87,'NZAAAA','ISCAAA','AAAAxx'
+8242,1829,0,2,2,2,42,242,242,3242,8242,84,85,'AFAAAA','JSCAAA','HHHHxx'
+6351,1830,1,3,1,11,51,351,351,1351,6351,102,103,'HKAAAA','KSCAAA','OOOOxx'
+5899,1831,1,3,9,19,99,899,1899,899,5899,198,199,'XSAAAA','LSCAAA','VVVVxx'
+4849,1832,1,1,9,9,49,849,849,4849,4849,98,99,'NEAAAA','MSCAAA','AAAAxx'
+9583,1833,1,3,3,3,83,583,1583,4583,9583,166,167,'PEAAAA','NSCAAA','HHHHxx'
+4994,1834,0,2,4,14,94,994,994,4994,4994,188,189,'CKAAAA','OSCAAA','OOOOxx'
+9787,1835,1,3,7,7,87,787,1787,4787,9787,174,175,'LMAAAA','PSCAAA','VVVVxx'
+243,1836,1,3,3,3,43,243,243,243,243,86,87,'JJAAAA','QSCAAA','AAAAxx'
+3931,1837,1,3,1,11,31,931,1931,3931,3931,62,63,'FVAAAA','RSCAAA','HHHHxx'
+5945,1838,1,1,5,5,45,945,1945,945,5945,90,91,'RUAAAA','SSCAAA','OOOOxx'
+1325,1839,1,1,5,5,25,325,1325,1325,1325,50,51,'ZYAAAA','TSCAAA','VVVVxx'
+4142,1840,0,2,2,2,42,142,142,4142,4142,84,85,'IDAAAA','USCAAA','AAAAxx'
+1963,1841,1,3,3,3,63,963,1963,1963,1963,126,127,'NXAAAA','VSCAAA','HHHHxx'
+7041,1842,1,1,1,1,41,41,1041,2041,7041,82,83,'VKAAAA','WSCAAA','OOOOxx'
+3074,1843,0,2,4,14,74,74,1074,3074,3074,148,149,'GOAAAA','XSCAAA','VVVVxx'
+3290,1844,0,2,0,10,90,290,1290,3290,3290,180,181,'OWAAAA','YSCAAA','AAAAxx'
+4146,1845,0,2,6,6,46,146,146,4146,4146,92,93,'MDAAAA','ZSCAAA','HHHHxx'
+3832,1846,0,0,2,12,32,832,1832,3832,3832,64,65,'KRAAAA','ATCAAA','OOOOxx'
+2217,1847,1,1,7,17,17,217,217,2217,2217,34,35,'HHAAAA','BTCAAA','VVVVxx'
+635,1848,1,3,5,15,35,635,635,635,635,70,71,'LYAAAA','CTCAAA','AAAAxx'
+6967,1849,1,3,7,7,67,967,967,1967,6967,134,135,'ZHAAAA','DTCAAA','HHHHxx'
+3522,1850,0,2,2,2,22,522,1522,3522,3522,44,45,'MFAAAA','ETCAAA','OOOOxx'
+2471,1851,1,3,1,11,71,471,471,2471,2471,142,143,'BRAAAA','FTCAAA','VVVVxx'
+4236,1852,0,0,6,16,36,236,236,4236,4236,72,73,'YGAAAA','GTCAAA','AAAAxx'
+853,1853,1,1,3,13,53,853,853,853,853,106,107,'VGAAAA','HTCAAA','HHHHxx'
+3754,1854,0,2,4,14,54,754,1754,3754,3754,108,109,'KOAAAA','ITCAAA','OOOOxx'
+796,1855,0,0,6,16,96,796,796,796,796,192,193,'QEAAAA','JTCAAA','VVVVxx'
+4640,1856,0,0,0,0,40,640,640,4640,4640,80,81,'MWAAAA','KTCAAA','AAAAxx'
+9496,1857,0,0,6,16,96,496,1496,4496,9496,192,193,'GBAAAA','LTCAAA','HHHHxx'
+6873,1858,1,1,3,13,73,873,873,1873,6873,146,147,'JEAAAA','MTCAAA','OOOOxx'
+4632,1859,0,0,2,12,32,632,632,4632,4632,64,65,'EWAAAA','NTCAAA','VVVVxx'
+5758,1860,0,2,8,18,58,758,1758,758,5758,116,117,'MNAAAA','OTCAAA','AAAAxx'
+6514,1861,0,2,4,14,14,514,514,1514,6514,28,29,'OQAAAA','PTCAAA','HHHHxx'
+9510,1862,0,2,0,10,10,510,1510,4510,9510,20,21,'UBAAAA','QTCAAA','OOOOxx'
+8411,1863,1,3,1,11,11,411,411,3411,8411,22,23,'NLAAAA','RTCAAA','VVVVxx'
+7762,1864,0,2,2,2,62,762,1762,2762,7762,124,125,'OMAAAA','STCAAA','AAAAxx'
+2225,1865,1,1,5,5,25,225,225,2225,2225,50,51,'PHAAAA','TTCAAA','HHHHxx'
+4373,1866,1,1,3,13,73,373,373,4373,4373,146,147,'FMAAAA','UTCAAA','OOOOxx'
+7326,1867,0,2,6,6,26,326,1326,2326,7326,52,53,'UVAAAA','VTCAAA','VVVVxx'
+8651,1868,1,3,1,11,51,651,651,3651,8651,102,103,'TUAAAA','WTCAAA','AAAAxx'
+9825,1869,1,1,5,5,25,825,1825,4825,9825,50,51,'XNAAAA','XTCAAA','HHHHxx'
+2988,1870,0,0,8,8,88,988,988,2988,2988,176,177,'YKAAAA','YTCAAA','OOOOxx'
+8138,1871,0,2,8,18,38,138,138,3138,8138,76,77,'ABAAAA','ZTCAAA','VVVVxx'
+7792,1872,0,0,2,12,92,792,1792,2792,7792,184,185,'SNAAAA','AUCAAA','AAAAxx'
+1232,1873,0,0,2,12,32,232,1232,1232,1232,64,65,'KVAAAA','BUCAAA','HHHHxx'
+8221,1874,1,1,1,1,21,221,221,3221,8221,42,43,'FEAAAA','CUCAAA','OOOOxx'
+4044,1875,0,0,4,4,44,44,44,4044,4044,88,89,'OZAAAA','DUCAAA','VVVVxx'
+1204,1876,0,0,4,4,4,204,1204,1204,1204,8,9,'IUAAAA','EUCAAA','AAAAxx'
+5145,1877,1,1,5,5,45,145,1145,145,5145,90,91,'XPAAAA','FUCAAA','HHHHxx'
+7791,1878,1,3,1,11,91,791,1791,2791,7791,182,183,'RNAAAA','GUCAAA','OOOOxx'
+8270,1879,0,2,0,10,70,270,270,3270,8270,140,141,'CGAAAA','HUCAAA','VVVVxx'
+9427,1880,1,3,7,7,27,427,1427,4427,9427,54,55,'PYAAAA','IUCAAA','AAAAxx'
+2152,1881,0,0,2,12,52,152,152,2152,2152,104,105,'UEAAAA','JUCAAA','HHHHxx'
+7790,1882,0,2,0,10,90,790,1790,2790,7790,180,181,'QNAAAA','KUCAAA','OOOOxx'
+5301,1883,1,1,1,1,1,301,1301,301,5301,2,3,'XVAAAA','LUCAAA','VVVVxx'
+626,1884,0,2,6,6,26,626,626,626,626,52,53,'CYAAAA','MUCAAA','AAAAxx'
+260,1885,0,0,0,0,60,260,260,260,260,120,121,'AKAAAA','NUCAAA','HHHHxx'
+4369,1886,1,1,9,9,69,369,369,4369,4369,138,139,'BMAAAA','OUCAAA','OOOOxx'
+5457,1887,1,1,7,17,57,457,1457,457,5457,114,115,'XBAAAA','PUCAAA','VVVVxx'
+3468,1888,0,0,8,8,68,468,1468,3468,3468,136,137,'KDAAAA','QUCAAA','AAAAxx'
+2257,1889,1,1,7,17,57,257,257,2257,2257,114,115,'VIAAAA','RUCAAA','HHHHxx'
+9318,1890,0,2,8,18,18,318,1318,4318,9318,36,37,'KUAAAA','SUCAAA','OOOOxx'
+8762,1891,0,2,2,2,62,762,762,3762,8762,124,125,'AZAAAA','TUCAAA','VVVVxx'
+9153,1892,1,1,3,13,53,153,1153,4153,9153,106,107,'BOAAAA','UUCAAA','AAAAxx'
+9220,1893,0,0,0,0,20,220,1220,4220,9220,40,41,'QQAAAA','VUCAAA','HHHHxx'
+8003,1894,1,3,3,3,3,3,3,3003,8003,6,7,'VVAAAA','WUCAAA','OOOOxx'
+7257,1895,1,1,7,17,57,257,1257,2257,7257,114,115,'DTAAAA','XUCAAA','VVVVxx'
+3930,1896,0,2,0,10,30,930,1930,3930,3930,60,61,'EVAAAA','YUCAAA','AAAAxx'
+2976,1897,0,0,6,16,76,976,976,2976,2976,152,153,'MKAAAA','ZUCAAA','HHHHxx'
+2531,1898,1,3,1,11,31,531,531,2531,2531,62,63,'JTAAAA','AVCAAA','OOOOxx'
+2250,1899,0,2,0,10,50,250,250,2250,2250,100,101,'OIAAAA','BVCAAA','VVVVxx'
+8549,1900,1,1,9,9,49,549,549,3549,8549,98,99,'VQAAAA','CVCAAA','AAAAxx'
+7197,1901,1,1,7,17,97,197,1197,2197,7197,194,195,'VQAAAA','DVCAAA','HHHHxx'
+5916,1902,0,0,6,16,16,916,1916,916,5916,32,33,'OTAAAA','EVCAAA','OOOOxx'
+5287,1903,1,3,7,7,87,287,1287,287,5287,174,175,'JVAAAA','FVCAAA','VVVVxx'
+9095,1904,1,3,5,15,95,95,1095,4095,9095,190,191,'VLAAAA','GVCAAA','AAAAxx'
+7137,1905,1,1,7,17,37,137,1137,2137,7137,74,75,'NOAAAA','HVCAAA','HHHHxx'
+7902,1906,0,2,2,2,2,902,1902,2902,7902,4,5,'YRAAAA','IVCAAA','OOOOxx'
+7598,1907,0,2,8,18,98,598,1598,2598,7598,196,197,'GGAAAA','JVCAAA','VVVVxx'
+5652,1908,0,0,2,12,52,652,1652,652,5652,104,105,'KJAAAA','KVCAAA','AAAAxx'
+2017,1909,1,1,7,17,17,17,17,2017,2017,34,35,'PZAAAA','LVCAAA','HHHHxx'
+7255,1910,1,3,5,15,55,255,1255,2255,7255,110,111,'BTAAAA','MVCAAA','OOOOxx'
+7999,1911,1,3,9,19,99,999,1999,2999,7999,198,199,'RVAAAA','NVCAAA','VVVVxx'
+5388,1912,0,0,8,8,88,388,1388,388,5388,176,177,'GZAAAA','OVCAAA','AAAAxx'
+8754,1913,0,2,4,14,54,754,754,3754,8754,108,109,'SYAAAA','PVCAAA','HHHHxx'
+5415,1914,1,3,5,15,15,415,1415,415,5415,30,31,'HAAAAA','QVCAAA','OOOOxx'
+8861,1915,1,1,1,1,61,861,861,3861,8861,122,123,'VCAAAA','RVCAAA','VVVVxx'
+2874,1916,0,2,4,14,74,874,874,2874,2874,148,149,'OGAAAA','SVCAAA','AAAAxx'
+9910,1917,0,2,0,10,10,910,1910,4910,9910,20,21,'ERAAAA','TVCAAA','HHHHxx'
+5178,1918,0,2,8,18,78,178,1178,178,5178,156,157,'ERAAAA','UVCAAA','OOOOxx'
+5698,1919,0,2,8,18,98,698,1698,698,5698,196,197,'ELAAAA','VVCAAA','VVVVxx'
+8500,1920,0,0,0,0,0,500,500,3500,8500,0,1,'YOAAAA','WVCAAA','AAAAxx'
+1814,1921,0,2,4,14,14,814,1814,1814,1814,28,29,'URAAAA','XVCAAA','HHHHxx'
+4968,1922,0,0,8,8,68,968,968,4968,4968,136,137,'CJAAAA','YVCAAA','OOOOxx'
+2642,1923,0,2,2,2,42,642,642,2642,2642,84,85,'QXAAAA','ZVCAAA','VVVVxx'
+1578,1924,0,2,8,18,78,578,1578,1578,1578,156,157,'SIAAAA','AWCAAA','AAAAxx'
+4774,1925,0,2,4,14,74,774,774,4774,4774,148,149,'QBAAAA','BWCAAA','HHHHxx'
+7062,1926,0,2,2,2,62,62,1062,2062,7062,124,125,'QLAAAA','CWCAAA','OOOOxx'
+5381,1927,1,1,1,1,81,381,1381,381,5381,162,163,'ZYAAAA','DWCAAA','VVVVxx'
+7985,1928,1,1,5,5,85,985,1985,2985,7985,170,171,'DVAAAA','EWCAAA','AAAAxx'
+3850,1929,0,2,0,10,50,850,1850,3850,3850,100,101,'CSAAAA','FWCAAA','HHHHxx'
+5624,1930,0,0,4,4,24,624,1624,624,5624,48,49,'IIAAAA','GWCAAA','OOOOxx'
+8948,1931,0,0,8,8,48,948,948,3948,8948,96,97,'EGAAAA','HWCAAA','VVVVxx'
+995,1932,1,3,5,15,95,995,995,995,995,190,191,'HMAAAA','IWCAAA','AAAAxx'
+5058,1933,0,2,8,18,58,58,1058,58,5058,116,117,'OMAAAA','JWCAAA','HHHHxx'
+9670,1934,0,2,0,10,70,670,1670,4670,9670,140,141,'YHAAAA','KWCAAA','OOOOxx'
+3115,1935,1,3,5,15,15,115,1115,3115,3115,30,31,'VPAAAA','LWCAAA','VVVVxx'
+4935,1936,1,3,5,15,35,935,935,4935,4935,70,71,'VHAAAA','MWCAAA','AAAAxx'
+4735,1937,1,3,5,15,35,735,735,4735,4735,70,71,'DAAAAA','NWCAAA','HHHHxx'
+1348,1938,0,0,8,8,48,348,1348,1348,1348,96,97,'WZAAAA','OWCAAA','OOOOxx'
+2380,1939,0,0,0,0,80,380,380,2380,2380,160,161,'ONAAAA','PWCAAA','VVVVxx'
+4246,1940,0,2,6,6,46,246,246,4246,4246,92,93,'IHAAAA','QWCAAA','AAAAxx'
+522,1941,0,2,2,2,22,522,522,522,522,44,45,'CUAAAA','RWCAAA','HHHHxx'
+1701,1942,1,1,1,1,1,701,1701,1701,1701,2,3,'LNAAAA','SWCAAA','OOOOxx'
+9709,1943,1,1,9,9,9,709,1709,4709,9709,18,19,'LJAAAA','TWCAAA','VVVVxx'
+8829,1944,1,1,9,9,29,829,829,3829,8829,58,59,'PBAAAA','UWCAAA','AAAAxx'
+7936,1945,0,0,6,16,36,936,1936,2936,7936,72,73,'GTAAAA','VWCAAA','HHHHxx'
+8474,1946,0,2,4,14,74,474,474,3474,8474,148,149,'YNAAAA','WWCAAA','OOOOxx'
+4676,1947,0,0,6,16,76,676,676,4676,4676,152,153,'WXAAAA','XWCAAA','VVVVxx'
+6303,1948,1,3,3,3,3,303,303,1303,6303,6,7,'LIAAAA','YWCAAA','AAAAxx'
+3485,1949,1,1,5,5,85,485,1485,3485,3485,170,171,'BEAAAA','ZWCAAA','HHHHxx'
+2695,1950,1,3,5,15,95,695,695,2695,2695,190,191,'RZAAAA','AXCAAA','OOOOxx'
+8830,1951,0,2,0,10,30,830,830,3830,8830,60,61,'QBAAAA','BXCAAA','VVVVxx'
+898,1952,0,2,8,18,98,898,898,898,898,196,197,'OIAAAA','CXCAAA','AAAAxx'
+7268,1953,0,0,8,8,68,268,1268,2268,7268,136,137,'OTAAAA','DXCAAA','HHHHxx'
+6568,1954,0,0,8,8,68,568,568,1568,6568,136,137,'QSAAAA','EXCAAA','OOOOxx'
+9724,1955,0,0,4,4,24,724,1724,4724,9724,48,49,'AKAAAA','FXCAAA','VVVVxx'
+3329,1956,1,1,9,9,29,329,1329,3329,3329,58,59,'BYAAAA','GXCAAA','AAAAxx'
+9860,1957,0,0,0,0,60,860,1860,4860,9860,120,121,'GPAAAA','HXCAAA','HHHHxx'
+6833,1958,1,1,3,13,33,833,833,1833,6833,66,67,'VCAAAA','IXCAAA','OOOOxx'
+5956,1959,0,0,6,16,56,956,1956,956,5956,112,113,'CVAAAA','JXCAAA','VVVVxx'
+3963,1960,1,3,3,3,63,963,1963,3963,3963,126,127,'LWAAAA','KXCAAA','AAAAxx'
+883,1961,1,3,3,3,83,883,883,883,883,166,167,'ZHAAAA','LXCAAA','HHHHxx'
+2761,1962,1,1,1,1,61,761,761,2761,2761,122,123,'FCAAAA','MXCAAA','OOOOxx'
+4644,1963,0,0,4,4,44,644,644,4644,4644,88,89,'QWAAAA','NXCAAA','VVVVxx'
+1358,1964,0,2,8,18,58,358,1358,1358,1358,116,117,'GAAAAA','OXCAAA','AAAAxx'
+2049,1965,1,1,9,9,49,49,49,2049,2049,98,99,'VAAAAA','PXCAAA','HHHHxx'
+2193,1966,1,1,3,13,93,193,193,2193,2193,186,187,'JGAAAA','QXCAAA','OOOOxx'
+9435,1967,1,3,5,15,35,435,1435,4435,9435,70,71,'XYAAAA','RXCAAA','VVVVxx'
+5890,1968,0,2,0,10,90,890,1890,890,5890,180,181,'OSAAAA','SXCAAA','AAAAxx'
+8149,1969,1,1,9,9,49,149,149,3149,8149,98,99,'LBAAAA','TXCAAA','HHHHxx'
+423,1970,1,3,3,3,23,423,423,423,423,46,47,'HQAAAA','UXCAAA','OOOOxx'
+7980,1971,0,0,0,0,80,980,1980,2980,7980,160,161,'YUAAAA','VXCAAA','VVVVxx'
+9019,1972,1,3,9,19,19,19,1019,4019,9019,38,39,'XIAAAA','WXCAAA','AAAAxx'
+1647,1973,1,3,7,7,47,647,1647,1647,1647,94,95,'JLAAAA','XXCAAA','HHHHxx'
+9495,1974,1,3,5,15,95,495,1495,4495,9495,190,191,'FBAAAA','YXCAAA','OOOOxx'
+3904,1975,0,0,4,4,4,904,1904,3904,3904,8,9,'EUAAAA','ZXCAAA','VVVVxx'
+5838,1976,0,2,8,18,38,838,1838,838,5838,76,77,'OQAAAA','AYCAAA','AAAAxx'
+3866,1977,0,2,6,6,66,866,1866,3866,3866,132,133,'SSAAAA','BYCAAA','HHHHxx'
+3093,1978,1,1,3,13,93,93,1093,3093,3093,186,187,'ZOAAAA','CYCAAA','OOOOxx'
+9666,1979,0,2,6,6,66,666,1666,4666,9666,132,133,'UHAAAA','DYCAAA','VVVVxx'
+1246,1980,0,2,6,6,46,246,1246,1246,1246,92,93,'YVAAAA','EYCAAA','AAAAxx'
+9759,1981,1,3,9,19,59,759,1759,4759,9759,118,119,'JLAAAA','FYCAAA','HHHHxx'
+7174,1982,0,2,4,14,74,174,1174,2174,7174,148,149,'YPAAAA','GYCAAA','OOOOxx'
+7678,1983,0,2,8,18,78,678,1678,2678,7678,156,157,'IJAAAA','HYCAAA','VVVVxx'
+3004,1984,0,0,4,4,4,4,1004,3004,3004,8,9,'OLAAAA','IYCAAA','AAAAxx'
+5607,1985,1,3,7,7,7,607,1607,607,5607,14,15,'RHAAAA','JYCAAA','HHHHxx'
+8510,1986,0,2,0,10,10,510,510,3510,8510,20,21,'IPAAAA','KYCAAA','OOOOxx'
+1483,1987,1,3,3,3,83,483,1483,1483,1483,166,167,'BFAAAA','LYCAAA','VVVVxx'
+2915,1988,1,3,5,15,15,915,915,2915,2915,30,31,'DIAAAA','MYCAAA','AAAAxx'
+1548,1989,0,0,8,8,48,548,1548,1548,1548,96,97,'OHAAAA','NYCAAA','HHHHxx'
+5767,1990,1,3,7,7,67,767,1767,767,5767,134,135,'VNAAAA','OYCAAA','OOOOxx'
+3214,1991,0,2,4,14,14,214,1214,3214,3214,28,29,'QTAAAA','PYCAAA','VVVVxx'
+8663,1992,1,3,3,3,63,663,663,3663,8663,126,127,'FVAAAA','QYCAAA','AAAAxx'
+5425,1993,1,1,5,5,25,425,1425,425,5425,50,51,'RAAAAA','RYCAAA','HHHHxx'
+8530,1994,0,2,0,10,30,530,530,3530,8530,60,61,'CQAAAA','SYCAAA','OOOOxx'
+821,1995,1,1,1,1,21,821,821,821,821,42,43,'PFAAAA','TYCAAA','VVVVxx'
+8816,1996,0,0,6,16,16,816,816,3816,8816,32,33,'CBAAAA','UYCAAA','AAAAxx'
+9367,1997,1,3,7,7,67,367,1367,4367,9367,134,135,'HWAAAA','VYCAAA','HHHHxx'
+4138,1998,0,2,8,18,38,138,138,4138,4138,76,77,'EDAAAA','WYCAAA','OOOOxx'
+94,1999,0,2,4,14,94,94,94,94,94,188,189,'QDAAAA','XYCAAA','VVVVxx'
+1858,2000,0,2,8,18,58,858,1858,1858,1858,116,117,'MTAAAA','YYCAAA','AAAAxx'
+5513,2001,1,1,3,13,13,513,1513,513,5513,26,27,'BEAAAA','ZYCAAA','HHHHxx'
+9620,2002,0,0,0,0,20,620,1620,4620,9620,40,41,'AGAAAA','AZCAAA','OOOOxx'
+4770,2003,0,2,0,10,70,770,770,4770,4770,140,141,'MBAAAA','BZCAAA','VVVVxx'
+5193,2004,1,1,3,13,93,193,1193,193,5193,186,187,'TRAAAA','CZCAAA','AAAAxx'
+198,2005,0,2,8,18,98,198,198,198,198,196,197,'QHAAAA','DZCAAA','HHHHxx'
+417,2006,1,1,7,17,17,417,417,417,417,34,35,'BQAAAA','EZCAAA','OOOOxx'
+173,2007,1,1,3,13,73,173,173,173,173,146,147,'RGAAAA','FZCAAA','VVVVxx'
+6248,2008,0,0,8,8,48,248,248,1248,6248,96,97,'IGAAAA','GZCAAA','AAAAxx'
+302,2009,0,2,2,2,2,302,302,302,302,4,5,'QLAAAA','HZCAAA','HHHHxx'
+8983,2010,1,3,3,3,83,983,983,3983,8983,166,167,'NHAAAA','IZCAAA','OOOOxx'
+4840,2011,0,0,0,0,40,840,840,4840,4840,80,81,'EEAAAA','JZCAAA','VVVVxx'
+2876,2012,0,0,6,16,76,876,876,2876,2876,152,153,'QGAAAA','KZCAAA','AAAAxx'
+5841,2013,1,1,1,1,41,841,1841,841,5841,82,83,'RQAAAA','LZCAAA','HHHHxx'
+2766,2014,0,2,6,6,66,766,766,2766,2766,132,133,'KCAAAA','MZCAAA','OOOOxx'
+9482,2015,0,2,2,2,82,482,1482,4482,9482,164,165,'SAAAAA','NZCAAA','VVVVxx'
+5335,2016,1,3,5,15,35,335,1335,335,5335,70,71,'FXAAAA','OZCAAA','AAAAxx'
+1502,2017,0,2,2,2,2,502,1502,1502,1502,4,5,'UFAAAA','PZCAAA','HHHHxx'
+9291,2018,1,3,1,11,91,291,1291,4291,9291,182,183,'JTAAAA','QZCAAA','OOOOxx'
+8655,2019,1,3,5,15,55,655,655,3655,8655,110,111,'XUAAAA','RZCAAA','VVVVxx'
+1687,2020,1,3,7,7,87,687,1687,1687,1687,174,175,'XMAAAA','SZCAAA','AAAAxx'
+8171,2021,1,3,1,11,71,171,171,3171,8171,142,143,'HCAAAA','TZCAAA','HHHHxx'
+5699,2022,1,3,9,19,99,699,1699,699,5699,198,199,'FLAAAA','UZCAAA','OOOOxx'
+1462,2023,0,2,2,2,62,462,1462,1462,1462,124,125,'GEAAAA','VZCAAA','VVVVxx'
+608,2024,0,0,8,8,8,608,608,608,608,16,17,'KXAAAA','WZCAAA','AAAAxx'
+6860,2025,0,0,0,0,60,860,860,1860,6860,120,121,'WDAAAA','XZCAAA','HHHHxx'
+6063,2026,1,3,3,3,63,63,63,1063,6063,126,127,'FZAAAA','YZCAAA','OOOOxx'
+1422,2027,0,2,2,2,22,422,1422,1422,1422,44,45,'SCAAAA','ZZCAAA','VVVVxx'
+1932,2028,0,0,2,12,32,932,1932,1932,1932,64,65,'IWAAAA','AADAAA','AAAAxx'
+5065,2029,1,1,5,5,65,65,1065,65,5065,130,131,'VMAAAA','BADAAA','HHHHxx'
+432,2030,0,0,2,12,32,432,432,432,432,64,65,'QQAAAA','CADAAA','OOOOxx'
+4680,2031,0,0,0,0,80,680,680,4680,4680,160,161,'AYAAAA','DADAAA','VVVVxx'
+8172,2032,0,0,2,12,72,172,172,3172,8172,144,145,'ICAAAA','EADAAA','AAAAxx'
+8668,2033,0,0,8,8,68,668,668,3668,8668,136,137,'KVAAAA','FADAAA','HHHHxx'
+256,2034,0,0,6,16,56,256,256,256,256,112,113,'WJAAAA','GADAAA','OOOOxx'
+2500,2035,0,0,0,0,0,500,500,2500,2500,0,1,'ESAAAA','HADAAA','VVVVxx'
+274,2036,0,2,4,14,74,274,274,274,274,148,149,'OKAAAA','IADAAA','AAAAxx'
+5907,2037,1,3,7,7,7,907,1907,907,5907,14,15,'FTAAAA','JADAAA','HHHHxx'
+8587,2038,1,3,7,7,87,587,587,3587,8587,174,175,'HSAAAA','KADAAA','OOOOxx'
+9942,2039,0,2,2,2,42,942,1942,4942,9942,84,85,'KSAAAA','LADAAA','VVVVxx'
+116,2040,0,0,6,16,16,116,116,116,116,32,33,'MEAAAA','MADAAA','AAAAxx'
+7134,2041,0,2,4,14,34,134,1134,2134,7134,68,69,'KOAAAA','NADAAA','HHHHxx'
+9002,2042,0,2,2,2,2,2,1002,4002,9002,4,5,'GIAAAA','OADAAA','OOOOxx'
+1209,2043,1,1,9,9,9,209,1209,1209,1209,18,19,'NUAAAA','PADAAA','VVVVxx'
+9983,2044,1,3,3,3,83,983,1983,4983,9983,166,167,'ZTAAAA','QADAAA','AAAAxx'
+1761,2045,1,1,1,1,61,761,1761,1761,1761,122,123,'TPAAAA','RADAAA','HHHHxx'
+7723,2046,1,3,3,3,23,723,1723,2723,7723,46,47,'BLAAAA','SADAAA','OOOOxx'
+6518,2047,0,2,8,18,18,518,518,1518,6518,36,37,'SQAAAA','TADAAA','VVVVxx'
+1372,2048,0,0,2,12,72,372,1372,1372,1372,144,145,'UAAAAA','UADAAA','AAAAxx'
+3587,2049,1,3,7,7,87,587,1587,3587,3587,174,175,'ZHAAAA','VADAAA','HHHHxx'
+5323,2050,1,3,3,3,23,323,1323,323,5323,46,47,'TWAAAA','WADAAA','OOOOxx'
+5902,2051,0,2,2,2,2,902,1902,902,5902,4,5,'ATAAAA','XADAAA','VVVVxx'
+3749,2052,1,1,9,9,49,749,1749,3749,3749,98,99,'FOAAAA','YADAAA','AAAAxx'
+5965,2053,1,1,5,5,65,965,1965,965,5965,130,131,'LVAAAA','ZADAAA','HHHHxx'
+663,2054,1,3,3,3,63,663,663,663,663,126,127,'NZAAAA','ABDAAA','OOOOxx'
+36,2055,0,0,6,16,36,36,36,36,36,72,73,'KBAAAA','BBDAAA','VVVVxx'
+9782,2056,0,2,2,2,82,782,1782,4782,9782,164,165,'GMAAAA','CBDAAA','AAAAxx'
+5412,2057,0,0,2,12,12,412,1412,412,5412,24,25,'EAAAAA','DBDAAA','HHHHxx'
+9961,2058,1,1,1,1,61,961,1961,4961,9961,122,123,'DTAAAA','EBDAAA','OOOOxx'
+6492,2059,0,0,2,12,92,492,492,1492,6492,184,185,'SPAAAA','FBDAAA','VVVVxx'
+4234,2060,0,2,4,14,34,234,234,4234,4234,68,69,'WGAAAA','GBDAAA','AAAAxx'
+4922,2061,0,2,2,2,22,922,922,4922,4922,44,45,'IHAAAA','HBDAAA','HHHHxx'
+6166,2062,0,2,6,6,66,166,166,1166,6166,132,133,'EDAAAA','IBDAAA','OOOOxx'
+7019,2063,1,3,9,19,19,19,1019,2019,7019,38,39,'ZJAAAA','JBDAAA','VVVVxx'
+7805,2064,1,1,5,5,5,805,1805,2805,7805,10,11,'FOAAAA','KBDAAA','AAAAxx'
+9808,2065,0,0,8,8,8,808,1808,4808,9808,16,17,'GNAAAA','LBDAAA','HHHHxx'
+2550,2066,0,2,0,10,50,550,550,2550,2550,100,101,'CUAAAA','MBDAAA','OOOOxx'
+8626,2067,0,2,6,6,26,626,626,3626,8626,52,53,'UTAAAA','NBDAAA','VVVVxx'
+5649,2068,1,1,9,9,49,649,1649,649,5649,98,99,'HJAAAA','OBDAAA','AAAAxx'
+3117,2069,1,1,7,17,17,117,1117,3117,3117,34,35,'XPAAAA','PBDAAA','HHHHxx'
+866,2070,0,2,6,6,66,866,866,866,866,132,133,'IHAAAA','QBDAAA','OOOOxx'
+2323,2071,1,3,3,3,23,323,323,2323,2323,46,47,'JLAAAA','RBDAAA','VVVVxx'
+5132,2072,0,0,2,12,32,132,1132,132,5132,64,65,'KPAAAA','SBDAAA','AAAAxx'
+9222,2073,0,2,2,2,22,222,1222,4222,9222,44,45,'SQAAAA','TBDAAA','HHHHxx'
+3934,2074,0,2,4,14,34,934,1934,3934,3934,68,69,'IVAAAA','UBDAAA','OOOOxx'
+4845,2075,1,1,5,5,45,845,845,4845,4845,90,91,'JEAAAA','VBDAAA','VVVVxx'
+7714,2076,0,2,4,14,14,714,1714,2714,7714,28,29,'SKAAAA','WBDAAA','AAAAxx'
+9818,2077,0,2,8,18,18,818,1818,4818,9818,36,37,'QNAAAA','XBDAAA','HHHHxx'
+2219,2078,1,3,9,19,19,219,219,2219,2219,38,39,'JHAAAA','YBDAAA','OOOOxx'
+6573,2079,1,1,3,13,73,573,573,1573,6573,146,147,'VSAAAA','ZBDAAA','VVVVxx'
+4555,2080,1,3,5,15,55,555,555,4555,4555,110,111,'FTAAAA','ACDAAA','AAAAxx'
+7306,2081,0,2,6,6,6,306,1306,2306,7306,12,13,'AVAAAA','BCDAAA','HHHHxx'
+9313,2082,1,1,3,13,13,313,1313,4313,9313,26,27,'FUAAAA','CCDAAA','OOOOxx'
+3924,2083,0,0,4,4,24,924,1924,3924,3924,48,49,'YUAAAA','DCDAAA','VVVVxx'
+5176,2084,0,0,6,16,76,176,1176,176,5176,152,153,'CRAAAA','ECDAAA','AAAAxx'
+9767,2085,1,3,7,7,67,767,1767,4767,9767,134,135,'RLAAAA','FCDAAA','HHHHxx'
+905,2086,1,1,5,5,5,905,905,905,905,10,11,'VIAAAA','GCDAAA','OOOOxx'
+8037,2087,1,1,7,17,37,37,37,3037,8037,74,75,'DXAAAA','HCDAAA','VVVVxx'
+8133,2088,1,1,3,13,33,133,133,3133,8133,66,67,'VAAAAA','ICDAAA','AAAAxx'
+2954,2089,0,2,4,14,54,954,954,2954,2954,108,109,'QJAAAA','JCDAAA','HHHHxx'
+7262,2090,0,2,2,2,62,262,1262,2262,7262,124,125,'ITAAAA','KCDAAA','OOOOxx'
+8768,2091,0,0,8,8,68,768,768,3768,8768,136,137,'GZAAAA','LCDAAA','VVVVxx'
+6953,2092,1,1,3,13,53,953,953,1953,6953,106,107,'LHAAAA','MCDAAA','AAAAxx'
+1984,2093,0,0,4,4,84,984,1984,1984,1984,168,169,'IYAAAA','NCDAAA','HHHHxx'
+9348,2094,0,0,8,8,48,348,1348,4348,9348,96,97,'OVAAAA','OCDAAA','OOOOxx'
+7769,2095,1,1,9,9,69,769,1769,2769,7769,138,139,'VMAAAA','PCDAAA','VVVVxx'
+2994,2096,0,2,4,14,94,994,994,2994,2994,188,189,'ELAAAA','QCDAAA','AAAAxx'
+5938,2097,0,2,8,18,38,938,1938,938,5938,76,77,'KUAAAA','RCDAAA','HHHHxx'
+556,2098,0,0,6,16,56,556,556,556,556,112,113,'KVAAAA','SCDAAA','OOOOxx'
+2577,2099,1,1,7,17,77,577,577,2577,2577,154,155,'DVAAAA','TCDAAA','VVVVxx'
+8733,2100,1,1,3,13,33,733,733,3733,8733,66,67,'XXAAAA','UCDAAA','AAAAxx'
+3108,2101,0,0,8,8,8,108,1108,3108,3108,16,17,'OPAAAA','VCDAAA','HHHHxx'
+4166,2102,0,2,6,6,66,166,166,4166,4166,132,133,'GEAAAA','WCDAAA','OOOOxx'
+3170,2103,0,2,0,10,70,170,1170,3170,3170,140,141,'YRAAAA','XCDAAA','VVVVxx'
+8118,2104,0,2,8,18,18,118,118,3118,8118,36,37,'GAAAAA','YCDAAA','AAAAxx'
+8454,2105,0,2,4,14,54,454,454,3454,8454,108,109,'ENAAAA','ZCDAAA','HHHHxx'
+5338,2106,0,2,8,18,38,338,1338,338,5338,76,77,'IXAAAA','ADDAAA','OOOOxx'
+402,2107,0,2,2,2,2,402,402,402,402,4,5,'MPAAAA','BDDAAA','VVVVxx'
+5673,2108,1,1,3,13,73,673,1673,673,5673,146,147,'FKAAAA','CDDAAA','AAAAxx'
+4324,2109,0,0,4,4,24,324,324,4324,4324,48,49,'IKAAAA','DDDAAA','HHHHxx'
+1943,2110,1,3,3,3,43,943,1943,1943,1943,86,87,'TWAAAA','EDDAAA','OOOOxx'
+7703,2111,1,3,3,3,3,703,1703,2703,7703,6,7,'HKAAAA','FDDAAA','VVVVxx'
+7180,2112,0,0,0,0,80,180,1180,2180,7180,160,161,'EQAAAA','GDDAAA','AAAAxx'
+5478,2113,0,2,8,18,78,478,1478,478,5478,156,157,'SCAAAA','HDDAAA','HHHHxx'
+5775,2114,1,3,5,15,75,775,1775,775,5775,150,151,'DOAAAA','IDDAAA','OOOOxx'
+6952,2115,0,0,2,12,52,952,952,1952,6952,104,105,'KHAAAA','JDDAAA','VVVVxx'
+9022,2116,0,2,2,2,22,22,1022,4022,9022,44,45,'AJAAAA','KDDAAA','AAAAxx'
+547,2117,1,3,7,7,47,547,547,547,547,94,95,'BVAAAA','LDDAAA','HHHHxx'
+5877,2118,1,1,7,17,77,877,1877,877,5877,154,155,'BSAAAA','MDDAAA','OOOOxx'
+9580,2119,0,0,0,0,80,580,1580,4580,9580,160,161,'MEAAAA','NDDAAA','VVVVxx'
+6094,2120,0,2,4,14,94,94,94,1094,6094,188,189,'KAAAAA','ODDAAA','AAAAxx'
+3398,2121,0,2,8,18,98,398,1398,3398,3398,196,197,'SAAAAA','PDDAAA','HHHHxx'
+4574,2122,0,2,4,14,74,574,574,4574,4574,148,149,'YTAAAA','QDDAAA','OOOOxx'
+3675,2123,1,3,5,15,75,675,1675,3675,3675,150,151,'JLAAAA','RDDAAA','VVVVxx'
+6413,2124,1,1,3,13,13,413,413,1413,6413,26,27,'RMAAAA','SDDAAA','AAAAxx'
+9851,2125,1,3,1,11,51,851,1851,4851,9851,102,103,'XOAAAA','TDDAAA','HHHHxx'
+126,2126,0,2,6,6,26,126,126,126,126,52,53,'WEAAAA','UDDAAA','OOOOxx'
+6803,2127,1,3,3,3,3,803,803,1803,6803,6,7,'RBAAAA','VDDAAA','VVVVxx'
+6949,2128,1,1,9,9,49,949,949,1949,6949,98,99,'HHAAAA','WDDAAA','AAAAxx'
+115,2129,1,3,5,15,15,115,115,115,115,30,31,'LEAAAA','XDDAAA','HHHHxx'
+4165,2130,1,1,5,5,65,165,165,4165,4165,130,131,'FEAAAA','YDDAAA','OOOOxx'
+201,2131,1,1,1,1,1,201,201,201,201,2,3,'THAAAA','ZDDAAA','VVVVxx'
+9324,2132,0,0,4,4,24,324,1324,4324,9324,48,49,'QUAAAA','AEDAAA','AAAAxx'
+6562,2133,0,2,2,2,62,562,562,1562,6562,124,125,'KSAAAA','BEDAAA','HHHHxx'
+1917,2134,1,1,7,17,17,917,1917,1917,1917,34,35,'TVAAAA','CEDAAA','OOOOxx'
+558,2135,0,2,8,18,58,558,558,558,558,116,117,'MVAAAA','DEDAAA','VVVVxx'
+8515,2136,1,3,5,15,15,515,515,3515,8515,30,31,'NPAAAA','EEDAAA','AAAAxx'
+6321,2137,1,1,1,1,21,321,321,1321,6321,42,43,'DJAAAA','FEDAAA','HHHHxx'
+6892,2138,0,0,2,12,92,892,892,1892,6892,184,185,'CFAAAA','GEDAAA','OOOOxx'
+1001,2139,1,1,1,1,1,1,1001,1001,1001,2,3,'NMAAAA','HEDAAA','VVVVxx'
+2858,2140,0,2,8,18,58,858,858,2858,2858,116,117,'YFAAAA','IEDAAA','AAAAxx'
+2434,2141,0,2,4,14,34,434,434,2434,2434,68,69,'QPAAAA','JEDAAA','HHHHxx'
+4460,2142,0,0,0,0,60,460,460,4460,4460,120,121,'OPAAAA','KEDAAA','OOOOxx'
+5447,2143,1,3,7,7,47,447,1447,447,5447,94,95,'NBAAAA','LEDAAA','VVVVxx'
+3799,2144,1,3,9,19,99,799,1799,3799,3799,198,199,'DQAAAA','MEDAAA','AAAAxx'
+4310,2145,0,2,0,10,10,310,310,4310,4310,20,21,'UJAAAA','NEDAAA','HHHHxx'
+405,2146,1,1,5,5,5,405,405,405,405,10,11,'PPAAAA','OEDAAA','OOOOxx'
+4573,2147,1,1,3,13,73,573,573,4573,4573,146,147,'XTAAAA','PEDAAA','VVVVxx'
+706,2148,0,2,6,6,6,706,706,706,706,12,13,'EBAAAA','QEDAAA','AAAAxx'
+7619,2149,1,3,9,19,19,619,1619,2619,7619,38,39,'BHAAAA','REDAAA','HHHHxx'
+7959,2150,1,3,9,19,59,959,1959,2959,7959,118,119,'DUAAAA','SEDAAA','OOOOxx'
+6712,2151,0,0,2,12,12,712,712,1712,6712,24,25,'EYAAAA','TEDAAA','VVVVxx'
+6959,2152,1,3,9,19,59,959,959,1959,6959,118,119,'RHAAAA','UEDAAA','AAAAxx'
+9791,2153,1,3,1,11,91,791,1791,4791,9791,182,183,'PMAAAA','VEDAAA','HHHHxx'
+2112,2154,0,0,2,12,12,112,112,2112,2112,24,25,'GDAAAA','WEDAAA','OOOOxx'
+9114,2155,0,2,4,14,14,114,1114,4114,9114,28,29,'OMAAAA','XEDAAA','VVVVxx'
+3506,2156,0,2,6,6,6,506,1506,3506,3506,12,13,'WEAAAA','YEDAAA','AAAAxx'
+5002,2157,0,2,2,2,2,2,1002,2,5002,4,5,'KKAAAA','ZEDAAA','HHHHxx'
+3518,2158,0,2,8,18,18,518,1518,3518,3518,36,37,'IFAAAA','AFDAAA','OOOOxx'
+602,2159,0,2,2,2,2,602,602,602,602,4,5,'EXAAAA','BFDAAA','VVVVxx'
+9060,2160,0,0,0,0,60,60,1060,4060,9060,120,121,'MKAAAA','CFDAAA','AAAAxx'
+3292,2161,0,0,2,12,92,292,1292,3292,3292,184,185,'QWAAAA','DFDAAA','HHHHxx'
+77,2162,1,1,7,17,77,77,77,77,77,154,155,'ZCAAAA','EFDAAA','OOOOxx'
+1420,2163,0,0,0,0,20,420,1420,1420,1420,40,41,'QCAAAA','FFDAAA','VVVVxx'
+6001,2164,1,1,1,1,1,1,1,1001,6001,2,3,'VWAAAA','GFDAAA','AAAAxx'
+7477,2165,1,1,7,17,77,477,1477,2477,7477,154,155,'PBAAAA','HFDAAA','HHHHxx'
+6655,2166,1,3,5,15,55,655,655,1655,6655,110,111,'ZVAAAA','IFDAAA','OOOOxx'
+7845,2167,1,1,5,5,45,845,1845,2845,7845,90,91,'TPAAAA','JFDAAA','VVVVxx'
+8484,2168,0,0,4,4,84,484,484,3484,8484,168,169,'IOAAAA','KFDAAA','AAAAxx'
+4345,2169,1,1,5,5,45,345,345,4345,4345,90,91,'DLAAAA','LFDAAA','HHHHxx'
+4250,2170,0,2,0,10,50,250,250,4250,4250,100,101,'MHAAAA','MFDAAA','OOOOxx'
+2391,2171,1,3,1,11,91,391,391,2391,2391,182,183,'ZNAAAA','NFDAAA','VVVVxx'
+6884,2172,0,0,4,4,84,884,884,1884,6884,168,169,'UEAAAA','OFDAAA','AAAAxx'
+7270,2173,0,2,0,10,70,270,1270,2270,7270,140,141,'QTAAAA','PFDAAA','HHHHxx'
+2499,2174,1,3,9,19,99,499,499,2499,2499,198,199,'DSAAAA','QFDAAA','OOOOxx'
+7312,2175,0,0,2,12,12,312,1312,2312,7312,24,25,'GVAAAA','RFDAAA','VVVVxx'
+7113,2176,1,1,3,13,13,113,1113,2113,7113,26,27,'PNAAAA','SFDAAA','AAAAxx'
+6695,2177,1,3,5,15,95,695,695,1695,6695,190,191,'NXAAAA','TFDAAA','HHHHxx'
+6521,2178,1,1,1,1,21,521,521,1521,6521,42,43,'VQAAAA','UFDAAA','OOOOxx'
+272,2179,0,0,2,12,72,272,272,272,272,144,145,'MKAAAA','VFDAAA','VVVVxx'
+9976,2180,0,0,6,16,76,976,1976,4976,9976,152,153,'STAAAA','WFDAAA','AAAAxx'
+992,2181,0,0,2,12,92,992,992,992,992,184,185,'EMAAAA','XFDAAA','HHHHxx'
+6158,2182,0,2,8,18,58,158,158,1158,6158,116,117,'WCAAAA','YFDAAA','OOOOxx'
+3281,2183,1,1,1,1,81,281,1281,3281,3281,162,163,'FWAAAA','ZFDAAA','VVVVxx'
+7446,2184,0,2,6,6,46,446,1446,2446,7446,92,93,'KAAAAA','AGDAAA','AAAAxx'
+4679,2185,1,3,9,19,79,679,679,4679,4679,158,159,'ZXAAAA','BGDAAA','HHHHxx'
+5203,2186,1,3,3,3,3,203,1203,203,5203,6,7,'DSAAAA','CGDAAA','OOOOxx'
+9874,2187,0,2,4,14,74,874,1874,4874,9874,148,149,'UPAAAA','DGDAAA','VVVVxx'
+8371,2188,1,3,1,11,71,371,371,3371,8371,142,143,'ZJAAAA','EGDAAA','AAAAxx'
+9086,2189,0,2,6,6,86,86,1086,4086,9086,172,173,'MLAAAA','FGDAAA','HHHHxx'
+430,2190,0,2,0,10,30,430,430,430,430,60,61,'OQAAAA','GGDAAA','OOOOxx'
+8749,2191,1,1,9,9,49,749,749,3749,8749,98,99,'NYAAAA','HGDAAA','VVVVxx'
+577,2192,1,1,7,17,77,577,577,577,577,154,155,'FWAAAA','IGDAAA','AAAAxx'
+4884,2193,0,0,4,4,84,884,884,4884,4884,168,169,'WFAAAA','JGDAAA','HHHHxx'
+3421,2194,1,1,1,1,21,421,1421,3421,3421,42,43,'PBAAAA','KGDAAA','OOOOxx'
+2812,2195,0,0,2,12,12,812,812,2812,2812,24,25,'EEAAAA','LGDAAA','VVVVxx'
+5958,2196,0,2,8,18,58,958,1958,958,5958,116,117,'EVAAAA','MGDAAA','AAAAxx'
+9901,2197,1,1,1,1,1,901,1901,4901,9901,2,3,'VQAAAA','NGDAAA','HHHHxx'
+8478,2198,0,2,8,18,78,478,478,3478,8478,156,157,'COAAAA','OGDAAA','OOOOxx'
+6545,2199,1,1,5,5,45,545,545,1545,6545,90,91,'TRAAAA','PGDAAA','VVVVxx'
+1479,2200,1,3,9,19,79,479,1479,1479,1479,158,159,'XEAAAA','QGDAAA','AAAAxx'
+1046,2201,0,2,6,6,46,46,1046,1046,1046,92,93,'GOAAAA','RGDAAA','HHHHxx'
+6372,2202,0,0,2,12,72,372,372,1372,6372,144,145,'CLAAAA','SGDAAA','OOOOxx'
+8206,2203,0,2,6,6,6,206,206,3206,8206,12,13,'QDAAAA','TGDAAA','VVVVxx'
+9544,2204,0,0,4,4,44,544,1544,4544,9544,88,89,'CDAAAA','UGDAAA','AAAAxx'
+9287,2205,1,3,7,7,87,287,1287,4287,9287,174,175,'FTAAAA','VGDAAA','HHHHxx'
+6786,2206,0,2,6,6,86,786,786,1786,6786,172,173,'ABAAAA','WGDAAA','OOOOxx'
+6511,2207,1,3,1,11,11,511,511,1511,6511,22,23,'LQAAAA','XGDAAA','VVVVxx'
+603,2208,1,3,3,3,3,603,603,603,603,6,7,'FXAAAA','YGDAAA','AAAAxx'
+2022,2209,0,2,2,2,22,22,22,2022,2022,44,45,'UZAAAA','ZGDAAA','HHHHxx'
+2086,2210,0,2,6,6,86,86,86,2086,2086,172,173,'GCAAAA','AHDAAA','OOOOxx'
+1969,2211,1,1,9,9,69,969,1969,1969,1969,138,139,'TXAAAA','BHDAAA','VVVVxx'
+4841,2212,1,1,1,1,41,841,841,4841,4841,82,83,'FEAAAA','CHDAAA','AAAAxx'
+5845,2213,1,1,5,5,45,845,1845,845,5845,90,91,'VQAAAA','DHDAAA','HHHHxx'
+4635,2214,1,3,5,15,35,635,635,4635,4635,70,71,'HWAAAA','EHDAAA','OOOOxx'
+4658,2215,0,2,8,18,58,658,658,4658,4658,116,117,'EXAAAA','FHDAAA','VVVVxx'
+2896,2216,0,0,6,16,96,896,896,2896,2896,192,193,'KHAAAA','GHDAAA','AAAAxx'
+5179,2217,1,3,9,19,79,179,1179,179,5179,158,159,'FRAAAA','HHDAAA','HHHHxx'
+8667,2218,1,3,7,7,67,667,667,3667,8667,134,135,'JVAAAA','IHDAAA','OOOOxx'
+7294,2219,0,2,4,14,94,294,1294,2294,7294,188,189,'OUAAAA','JHDAAA','VVVVxx'
+3706,2220,0,2,6,6,6,706,1706,3706,3706,12,13,'OMAAAA','KHDAAA','AAAAxx'
+8389,2221,1,1,9,9,89,389,389,3389,8389,178,179,'RKAAAA','LHDAAA','HHHHxx'
+2486,2222,0,2,6,6,86,486,486,2486,2486,172,173,'QRAAAA','MHDAAA','OOOOxx'
+8743,2223,1,3,3,3,43,743,743,3743,8743,86,87,'HYAAAA','NHDAAA','VVVVxx'
+2777,2224,1,1,7,17,77,777,777,2777,2777,154,155,'VCAAAA','OHDAAA','AAAAxx'
+2113,2225,1,1,3,13,13,113,113,2113,2113,26,27,'HDAAAA','PHDAAA','HHHHxx'
+2076,2226,0,0,6,16,76,76,76,2076,2076,152,153,'WBAAAA','QHDAAA','OOOOxx'
+2300,2227,0,0,0,0,0,300,300,2300,2300,0,1,'MKAAAA','RHDAAA','VVVVxx'
+6894,2228,0,2,4,14,94,894,894,1894,6894,188,189,'EFAAAA','SHDAAA','AAAAxx'
+6939,2229,1,3,9,19,39,939,939,1939,6939,78,79,'XGAAAA','THDAAA','HHHHxx'
+446,2230,0,2,6,6,46,446,446,446,446,92,93,'ERAAAA','UHDAAA','OOOOxx'
+6218,2231,0,2,8,18,18,218,218,1218,6218,36,37,'EFAAAA','VHDAAA','VVVVxx'
+1295,2232,1,3,5,15,95,295,1295,1295,1295,190,191,'VXAAAA','WHDAAA','AAAAxx'
+5135,2233,1,3,5,15,35,135,1135,135,5135,70,71,'NPAAAA','XHDAAA','HHHHxx'
+8122,2234,0,2,2,2,22,122,122,3122,8122,44,45,'KAAAAA','YHDAAA','OOOOxx'
+316,2235,0,0,6,16,16,316,316,316,316,32,33,'EMAAAA','ZHDAAA','VVVVxx'
+514,2236,0,2,4,14,14,514,514,514,514,28,29,'UTAAAA','AIDAAA','AAAAxx'
+7970,2237,0,2,0,10,70,970,1970,2970,7970,140,141,'OUAAAA','BIDAAA','HHHHxx'
+9350,2238,0,2,0,10,50,350,1350,4350,9350,100,101,'QVAAAA','CIDAAA','OOOOxx'
+3700,2239,0,0,0,0,0,700,1700,3700,3700,0,1,'IMAAAA','DIDAAA','VVVVxx'
+582,2240,0,2,2,2,82,582,582,582,582,164,165,'KWAAAA','EIDAAA','AAAAxx'
+9722,2241,0,2,2,2,22,722,1722,4722,9722,44,45,'YJAAAA','FIDAAA','HHHHxx'
+7398,2242,0,2,8,18,98,398,1398,2398,7398,196,197,'OYAAAA','GIDAAA','OOOOxx'
+2265,2243,1,1,5,5,65,265,265,2265,2265,130,131,'DJAAAA','HIDAAA','VVVVxx'
+3049,2244,1,1,9,9,49,49,1049,3049,3049,98,99,'HNAAAA','IIDAAA','AAAAxx'
+9121,2245,1,1,1,1,21,121,1121,4121,9121,42,43,'VMAAAA','JIDAAA','HHHHxx'
+4275,2246,1,3,5,15,75,275,275,4275,4275,150,151,'LIAAAA','KIDAAA','OOOOxx'
+6567,2247,1,3,7,7,67,567,567,1567,6567,134,135,'PSAAAA','LIDAAA','VVVVxx'
+6755,2248,1,3,5,15,55,755,755,1755,6755,110,111,'VZAAAA','MIDAAA','AAAAxx'
+4535,2249,1,3,5,15,35,535,535,4535,4535,70,71,'LSAAAA','NIDAAA','HHHHxx'
+7968,2250,0,0,8,8,68,968,1968,2968,7968,136,137,'MUAAAA','OIDAAA','OOOOxx'
+3412,2251,0,0,2,12,12,412,1412,3412,3412,24,25,'GBAAAA','PIDAAA','VVVVxx'
+6112,2252,0,0,2,12,12,112,112,1112,6112,24,25,'CBAAAA','QIDAAA','AAAAxx'
+6805,2253,1,1,5,5,5,805,805,1805,6805,10,11,'TBAAAA','RIDAAA','HHHHxx'
+2880,2254,0,0,0,0,80,880,880,2880,2880,160,161,'UGAAAA','SIDAAA','OOOOxx'
+7710,2255,0,2,0,10,10,710,1710,2710,7710,20,21,'OKAAAA','TIDAAA','VVVVxx'
+7949,2256,1,1,9,9,49,949,1949,2949,7949,98,99,'TTAAAA','UIDAAA','AAAAxx'
+7043,2257,1,3,3,3,43,43,1043,2043,7043,86,87,'XKAAAA','VIDAAA','HHHHxx'
+9012,2258,0,0,2,12,12,12,1012,4012,9012,24,25,'QIAAAA','WIDAAA','OOOOxx'
+878,2259,0,2,8,18,78,878,878,878,878,156,157,'UHAAAA','XIDAAA','VVVVxx'
+7930,2260,0,2,0,10,30,930,1930,2930,7930,60,61,'ATAAAA','YIDAAA','AAAAxx'
+667,2261,1,3,7,7,67,667,667,667,667,134,135,'RZAAAA','ZIDAAA','HHHHxx'
+1905,2262,1,1,5,5,5,905,1905,1905,1905,10,11,'HVAAAA','AJDAAA','OOOOxx'
+4958,2263,0,2,8,18,58,958,958,4958,4958,116,117,'SIAAAA','BJDAAA','VVVVxx'
+2973,2264,1,1,3,13,73,973,973,2973,2973,146,147,'JKAAAA','CJDAAA','AAAAxx'
+3631,2265,1,3,1,11,31,631,1631,3631,3631,62,63,'RJAAAA','DJDAAA','HHHHxx'
+5868,2266,0,0,8,8,68,868,1868,868,5868,136,137,'SRAAAA','EJDAAA','OOOOxx'
+2873,2267,1,1,3,13,73,873,873,2873,2873,146,147,'NGAAAA','FJDAAA','VVVVxx'
+6941,2268,1,1,1,1,41,941,941,1941,6941,82,83,'ZGAAAA','GJDAAA','AAAAxx'
+6384,2269,0,0,4,4,84,384,384,1384,6384,168,169,'OLAAAA','HJDAAA','HHHHxx'
+3806,2270,0,2,6,6,6,806,1806,3806,3806,12,13,'KQAAAA','IJDAAA','OOOOxx'
+5079,2271,1,3,9,19,79,79,1079,79,5079,158,159,'JNAAAA','JJDAAA','VVVVxx'
+1970,2272,0,2,0,10,70,970,1970,1970,1970,140,141,'UXAAAA','KJDAAA','AAAAxx'
+7810,2273,0,2,0,10,10,810,1810,2810,7810,20,21,'KOAAAA','LJDAAA','HHHHxx'
+4639,2274,1,3,9,19,39,639,639,4639,4639,78,79,'LWAAAA','MJDAAA','OOOOxx'
+6527,2275,1,3,7,7,27,527,527,1527,6527,54,55,'BRAAAA','NJDAAA','VVVVxx'
+8079,2276,1,3,9,19,79,79,79,3079,8079,158,159,'TYAAAA','OJDAAA','AAAAxx'
+2740,2277,0,0,0,0,40,740,740,2740,2740,80,81,'KBAAAA','PJDAAA','HHHHxx'
+2337,2278,1,1,7,17,37,337,337,2337,2337,74,75,'XLAAAA','QJDAAA','OOOOxx'
+6670,2279,0,2,0,10,70,670,670,1670,6670,140,141,'OWAAAA','RJDAAA','VVVVxx'
+2345,2280,1,1,5,5,45,345,345,2345,2345,90,91,'FMAAAA','SJDAAA','AAAAxx'
+401,2281,1,1,1,1,1,401,401,401,401,2,3,'LPAAAA','TJDAAA','HHHHxx'
+2704,2282,0,0,4,4,4,704,704,2704,2704,8,9,'AAAAAA','UJDAAA','OOOOxx'
+5530,2283,0,2,0,10,30,530,1530,530,5530,60,61,'SEAAAA','VJDAAA','VVVVxx'
+51,2284,1,3,1,11,51,51,51,51,51,102,103,'ZBAAAA','WJDAAA','AAAAxx'
+4282,2285,0,2,2,2,82,282,282,4282,4282,164,165,'SIAAAA','XJDAAA','HHHHxx'
+7336,2286,0,0,6,16,36,336,1336,2336,7336,72,73,'EWAAAA','YJDAAA','OOOOxx'
+8320,2287,0,0,0,0,20,320,320,3320,8320,40,41,'AIAAAA','ZJDAAA','VVVVxx'
+7772,2288,0,0,2,12,72,772,1772,2772,7772,144,145,'YMAAAA','AKDAAA','AAAAxx'
+1894,2289,0,2,4,14,94,894,1894,1894,1894,188,189,'WUAAAA','BKDAAA','HHHHxx'
+2320,2290,0,0,0,0,20,320,320,2320,2320,40,41,'GLAAAA','CKDAAA','OOOOxx'
+6232,2291,0,0,2,12,32,232,232,1232,6232,64,65,'SFAAAA','DKDAAA','VVVVxx'
+2833,2292,1,1,3,13,33,833,833,2833,2833,66,67,'ZEAAAA','EKDAAA','AAAAxx'
+8265,2293,1,1,5,5,65,265,265,3265,8265,130,131,'XFAAAA','FKDAAA','HHHHxx'
+4589,2294,1,1,9,9,89,589,589,4589,4589,178,179,'NUAAAA','GKDAAA','OOOOxx'
+8182,2295,0,2,2,2,82,182,182,3182,8182,164,165,'SCAAAA','HKDAAA','VVVVxx'
+8337,2296,1,1,7,17,37,337,337,3337,8337,74,75,'RIAAAA','IKDAAA','AAAAxx'
+8210,2297,0,2,0,10,10,210,210,3210,8210,20,21,'UDAAAA','JKDAAA','HHHHxx'
+1406,2298,0,2,6,6,6,406,1406,1406,1406,12,13,'CCAAAA','KKDAAA','OOOOxx'
+4463,2299,1,3,3,3,63,463,463,4463,4463,126,127,'RPAAAA','LKDAAA','VVVVxx'
+4347,2300,1,3,7,7,47,347,347,4347,4347,94,95,'FLAAAA','MKDAAA','AAAAxx'
+181,2301,1,1,1,1,81,181,181,181,181,162,163,'ZGAAAA','NKDAAA','HHHHxx'
+9986,2302,0,2,6,6,86,986,1986,4986,9986,172,173,'CUAAAA','OKDAAA','OOOOxx'
+661,2303,1,1,1,1,61,661,661,661,661,122,123,'LZAAAA','PKDAAA','VVVVxx'
+4105,2304,1,1,5,5,5,105,105,4105,4105,10,11,'XBAAAA','QKDAAA','AAAAxx'
+2187,2305,1,3,7,7,87,187,187,2187,2187,174,175,'DGAAAA','RKDAAA','HHHHxx'
+1628,2306,0,0,8,8,28,628,1628,1628,1628,56,57,'QKAAAA','SKDAAA','OOOOxx'
+3119,2307,1,3,9,19,19,119,1119,3119,3119,38,39,'ZPAAAA','TKDAAA','VVVVxx'
+6804,2308,0,0,4,4,4,804,804,1804,6804,8,9,'SBAAAA','UKDAAA','AAAAxx'
+9918,2309,0,2,8,18,18,918,1918,4918,9918,36,37,'MRAAAA','VKDAAA','HHHHxx'
+8916,2310,0,0,6,16,16,916,916,3916,8916,32,33,'YEAAAA','WKDAAA','OOOOxx'
+6057,2311,1,1,7,17,57,57,57,1057,6057,114,115,'ZYAAAA','XKDAAA','VVVVxx'
+3622,2312,0,2,2,2,22,622,1622,3622,3622,44,45,'IJAAAA','YKDAAA','AAAAxx'
+9168,2313,0,0,8,8,68,168,1168,4168,9168,136,137,'QOAAAA','ZKDAAA','HHHHxx'
+3720,2314,0,0,0,0,20,720,1720,3720,3720,40,41,'CNAAAA','ALDAAA','OOOOxx'
+9927,2315,1,3,7,7,27,927,1927,4927,9927,54,55,'VRAAAA','BLDAAA','VVVVxx'
+5616,2316,0,0,6,16,16,616,1616,616,5616,32,33,'AIAAAA','CLDAAA','AAAAxx'
+5210,2317,0,2,0,10,10,210,1210,210,5210,20,21,'KSAAAA','DLDAAA','HHHHxx'
+636,2318,0,0,6,16,36,636,636,636,636,72,73,'MYAAAA','ELDAAA','OOOOxx'
+9936,2319,0,0,6,16,36,936,1936,4936,9936,72,73,'ESAAAA','FLDAAA','VVVVxx'
+2316,2320,0,0,6,16,16,316,316,2316,2316,32,33,'CLAAAA','GLDAAA','AAAAxx'
+4363,2321,1,3,3,3,63,363,363,4363,4363,126,127,'VLAAAA','HLDAAA','HHHHxx'
+7657,2322,1,1,7,17,57,657,1657,2657,7657,114,115,'NIAAAA','ILDAAA','OOOOxx'
+697,2323,1,1,7,17,97,697,697,697,697,194,195,'VAAAAA','JLDAAA','VVVVxx'
+912,2324,0,0,2,12,12,912,912,912,912,24,25,'CJAAAA','KLDAAA','AAAAxx'
+8806,2325,0,2,6,6,6,806,806,3806,8806,12,13,'SAAAAA','LLDAAA','HHHHxx'
+9698,2326,0,2,8,18,98,698,1698,4698,9698,196,197,'AJAAAA','MLDAAA','OOOOxx'
+6191,2327,1,3,1,11,91,191,191,1191,6191,182,183,'DEAAAA','NLDAAA','VVVVxx'
+1188,2328,0,0,8,8,88,188,1188,1188,1188,176,177,'STAAAA','OLDAAA','AAAAxx'
+7676,2329,0,0,6,16,76,676,1676,2676,7676,152,153,'GJAAAA','PLDAAA','HHHHxx'
+7073,2330,1,1,3,13,73,73,1073,2073,7073,146,147,'BMAAAA','QLDAAA','OOOOxx'
+8019,2331,1,3,9,19,19,19,19,3019,8019,38,39,'LWAAAA','RLDAAA','VVVVxx'
+4726,2332,0,2,6,6,26,726,726,4726,4726,52,53,'UZAAAA','SLDAAA','AAAAxx'
+4648,2333,0,0,8,8,48,648,648,4648,4648,96,97,'UWAAAA','TLDAAA','HHHHxx'
+3227,2334,1,3,7,7,27,227,1227,3227,3227,54,55,'DUAAAA','ULDAAA','OOOOxx'
+7232,2335,0,0,2,12,32,232,1232,2232,7232,64,65,'ESAAAA','VLDAAA','VVVVxx'
+9761,2336,1,1,1,1,61,761,1761,4761,9761,122,123,'LLAAAA','WLDAAA','AAAAxx'
+3105,2337,1,1,5,5,5,105,1105,3105,3105,10,11,'LPAAAA','XLDAAA','HHHHxx'
+5266,2338,0,2,6,6,66,266,1266,266,5266,132,133,'OUAAAA','YLDAAA','OOOOxx'
+6788,2339,0,0,8,8,88,788,788,1788,6788,176,177,'CBAAAA','ZLDAAA','VVVVxx'
+2442,2340,0,2,2,2,42,442,442,2442,2442,84,85,'YPAAAA','AMDAAA','AAAAxx'
+8198,2341,0,2,8,18,98,198,198,3198,8198,196,197,'IDAAAA','BMDAAA','HHHHxx'
+5806,2342,0,2,6,6,6,806,1806,806,5806,12,13,'IPAAAA','CMDAAA','OOOOxx'
+8928,2343,0,0,8,8,28,928,928,3928,8928,56,57,'KFAAAA','DMDAAA','VVVVxx'
+1657,2344,1,1,7,17,57,657,1657,1657,1657,114,115,'TLAAAA','EMDAAA','AAAAxx'
+9164,2345,0,0,4,4,64,164,1164,4164,9164,128,129,'MOAAAA','FMDAAA','HHHHxx'
+1851,2346,1,3,1,11,51,851,1851,1851,1851,102,103,'FTAAAA','GMDAAA','OOOOxx'
+4744,2347,0,0,4,4,44,744,744,4744,4744,88,89,'MAAAAA','HMDAAA','VVVVxx'
+8055,2348,1,3,5,15,55,55,55,3055,8055,110,111,'VXAAAA','IMDAAA','AAAAxx'
+1533,2349,1,1,3,13,33,533,1533,1533,1533,66,67,'ZGAAAA','JMDAAA','HHHHxx'
+1260,2350,0,0,0,0,60,260,1260,1260,1260,120,121,'MWAAAA','KMDAAA','OOOOxx'
+1290,2351,0,2,0,10,90,290,1290,1290,1290,180,181,'QXAAAA','LMDAAA','VVVVxx'
+297,2352,1,1,7,17,97,297,297,297,297,194,195,'LLAAAA','MMDAAA','AAAAxx'
+4145,2353,1,1,5,5,45,145,145,4145,4145,90,91,'LDAAAA','NMDAAA','HHHHxx'
+863,2354,1,3,3,3,63,863,863,863,863,126,127,'FHAAAA','OMDAAA','OOOOxx'
+3423,2355,1,3,3,3,23,423,1423,3423,3423,46,47,'RBAAAA','PMDAAA','VVVVxx'
+8750,2356,0,2,0,10,50,750,750,3750,8750,100,101,'OYAAAA','QMDAAA','AAAAxx'
+3546,2357,0,2,6,6,46,546,1546,3546,3546,92,93,'KGAAAA','RMDAAA','HHHHxx'
+3678,2358,0,2,8,18,78,678,1678,3678,3678,156,157,'MLAAAA','SMDAAA','OOOOxx'
+5313,2359,1,1,3,13,13,313,1313,313,5313,26,27,'JWAAAA','TMDAAA','VVVVxx'
+6233,2360,1,1,3,13,33,233,233,1233,6233,66,67,'TFAAAA','UMDAAA','AAAAxx'
+5802,2361,0,2,2,2,2,802,1802,802,5802,4,5,'EPAAAA','VMDAAA','HHHHxx'
+7059,2362,1,3,9,19,59,59,1059,2059,7059,118,119,'NLAAAA','WMDAAA','OOOOxx'
+6481,2363,1,1,1,1,81,481,481,1481,6481,162,163,'HPAAAA','XMDAAA','VVVVxx'
+1596,2364,0,0,6,16,96,596,1596,1596,1596,192,193,'KJAAAA','YMDAAA','AAAAxx'
+8181,2365,1,1,1,1,81,181,181,3181,8181,162,163,'RCAAAA','ZMDAAA','HHHHxx'
+5368,2366,0,0,8,8,68,368,1368,368,5368,136,137,'MYAAAA','ANDAAA','OOOOxx'
+9416,2367,0,0,6,16,16,416,1416,4416,9416,32,33,'EYAAAA','BNDAAA','VVVVxx'
+9521,2368,1,1,1,1,21,521,1521,4521,9521,42,43,'FCAAAA','CNDAAA','AAAAxx'
+1042,2369,0,2,2,2,42,42,1042,1042,1042,84,85,'COAAAA','DNDAAA','HHHHxx'
+4503,2370,1,3,3,3,3,503,503,4503,4503,6,7,'FRAAAA','ENDAAA','OOOOxx'
+3023,2371,1,3,3,3,23,23,1023,3023,3023,46,47,'HMAAAA','FNDAAA','VVVVxx'
+1976,2372,0,0,6,16,76,976,1976,1976,1976,152,153,'AYAAAA','GNDAAA','AAAAxx'
+5610,2373,0,2,0,10,10,610,1610,610,5610,20,21,'UHAAAA','HNDAAA','HHHHxx'
+7410,2374,0,2,0,10,10,410,1410,2410,7410,20,21,'AZAAAA','INDAAA','OOOOxx'
+7872,2375,0,0,2,12,72,872,1872,2872,7872,144,145,'UQAAAA','JNDAAA','VVVVxx'
+8591,2376,1,3,1,11,91,591,591,3591,8591,182,183,'LSAAAA','KNDAAA','AAAAxx'
+1804,2377,0,0,4,4,4,804,1804,1804,1804,8,9,'KRAAAA','LNDAAA','HHHHxx'
+5299,2378,1,3,9,19,99,299,1299,299,5299,198,199,'VVAAAA','MNDAAA','OOOOxx'
+4695,2379,1,3,5,15,95,695,695,4695,4695,190,191,'PYAAAA','NNDAAA','VVVVxx'
+2672,2380,0,0,2,12,72,672,672,2672,2672,144,145,'UYAAAA','ONDAAA','AAAAxx'
+585,2381,1,1,5,5,85,585,585,585,585,170,171,'NWAAAA','PNDAAA','HHHHxx'
+8622,2382,0,2,2,2,22,622,622,3622,8622,44,45,'QTAAAA','QNDAAA','OOOOxx'
+3780,2383,0,0,0,0,80,780,1780,3780,3780,160,161,'KPAAAA','RNDAAA','VVVVxx'
+7941,2384,1,1,1,1,41,941,1941,2941,7941,82,83,'LTAAAA','SNDAAA','AAAAxx'
+3305,2385,1,1,5,5,5,305,1305,3305,3305,10,11,'DXAAAA','TNDAAA','HHHHxx'
+8653,2386,1,1,3,13,53,653,653,3653,8653,106,107,'VUAAAA','UNDAAA','OOOOxx'
+5756,2387,0,0,6,16,56,756,1756,756,5756,112,113,'KNAAAA','VNDAAA','VVVVxx'
+576,2388,0,0,6,16,76,576,576,576,576,152,153,'EWAAAA','WNDAAA','AAAAxx'
+1915,2389,1,3,5,15,15,915,1915,1915,1915,30,31,'RVAAAA','XNDAAA','HHHHxx'
+4627,2390,1,3,7,7,27,627,627,4627,4627,54,55,'ZVAAAA','YNDAAA','OOOOxx'
+920,2391,0,0,0,0,20,920,920,920,920,40,41,'KJAAAA','ZNDAAA','VVVVxx'
+2537,2392,1,1,7,17,37,537,537,2537,2537,74,75,'PTAAAA','AODAAA','AAAAxx'
+50,2393,0,2,0,10,50,50,50,50,50,100,101,'YBAAAA','BODAAA','HHHHxx'
+1313,2394,1,1,3,13,13,313,1313,1313,1313,26,27,'NYAAAA','CODAAA','OOOOxx'
+8542,2395,0,2,2,2,42,542,542,3542,8542,84,85,'OQAAAA','DODAAA','VVVVxx'
+6428,2396,0,0,8,8,28,428,428,1428,6428,56,57,'GNAAAA','EODAAA','AAAAxx'
+4351,2397,1,3,1,11,51,351,351,4351,4351,102,103,'JLAAAA','FODAAA','HHHHxx'
+2050,2398,0,2,0,10,50,50,50,2050,2050,100,101,'WAAAAA','GODAAA','OOOOxx'
+5162,2399,0,2,2,2,62,162,1162,162,5162,124,125,'OQAAAA','HODAAA','VVVVxx'
+8229,2400,1,1,9,9,29,229,229,3229,8229,58,59,'NEAAAA','IODAAA','AAAAxx'
+7782,2401,0,2,2,2,82,782,1782,2782,7782,164,165,'INAAAA','JODAAA','HHHHxx'
+1563,2402,1,3,3,3,63,563,1563,1563,1563,126,127,'DIAAAA','KODAAA','OOOOxx'
+267,2403,1,3,7,7,67,267,267,267,267,134,135,'HKAAAA','LODAAA','VVVVxx'
+5138,2404,0,2,8,18,38,138,1138,138,5138,76,77,'QPAAAA','MODAAA','AAAAxx'
+7022,2405,0,2,2,2,22,22,1022,2022,7022,44,45,'CKAAAA','NODAAA','HHHHxx'
+6705,2406,1,1,5,5,5,705,705,1705,6705,10,11,'XXAAAA','OODAAA','OOOOxx'
+6190,2407,0,2,0,10,90,190,190,1190,6190,180,181,'CEAAAA','PODAAA','VVVVxx'
+8226,2408,0,2,6,6,26,226,226,3226,8226,52,53,'KEAAAA','QODAAA','AAAAxx'
+8882,2409,0,2,2,2,82,882,882,3882,8882,164,165,'QDAAAA','RODAAA','HHHHxx'
+5181,2410,1,1,1,1,81,181,1181,181,5181,162,163,'HRAAAA','SODAAA','OOOOxx'
+4598,2411,0,2,8,18,98,598,598,4598,4598,196,197,'WUAAAA','TODAAA','VVVVxx'
+4882,2412,0,2,2,2,82,882,882,4882,4882,164,165,'UFAAAA','UODAAA','AAAAxx'
+7490,2413,0,2,0,10,90,490,1490,2490,7490,180,181,'CCAAAA','VODAAA','HHHHxx'
+5224,2414,0,0,4,4,24,224,1224,224,5224,48,49,'YSAAAA','WODAAA','OOOOxx'
+2174,2415,0,2,4,14,74,174,174,2174,2174,148,149,'QFAAAA','XODAAA','VVVVxx'
+3059,2416,1,3,9,19,59,59,1059,3059,3059,118,119,'RNAAAA','YODAAA','AAAAxx'
+8790,2417,0,2,0,10,90,790,790,3790,8790,180,181,'CAAAAA','ZODAAA','HHHHxx'
+2222,2418,0,2,2,2,22,222,222,2222,2222,44,45,'MHAAAA','APDAAA','OOOOxx'
+5473,2419,1,1,3,13,73,473,1473,473,5473,146,147,'NCAAAA','BPDAAA','VVVVxx'
+937,2420,1,1,7,17,37,937,937,937,937,74,75,'BKAAAA','CPDAAA','AAAAxx'
+2975,2421,1,3,5,15,75,975,975,2975,2975,150,151,'LKAAAA','DPDAAA','HHHHxx'
+9569,2422,1,1,9,9,69,569,1569,4569,9569,138,139,'BEAAAA','EPDAAA','OOOOxx'
+3456,2423,0,0,6,16,56,456,1456,3456,3456,112,113,'YCAAAA','FPDAAA','VVVVxx'
+6657,2424,1,1,7,17,57,657,657,1657,6657,114,115,'BWAAAA','GPDAAA','AAAAxx'
+3776,2425,0,0,6,16,76,776,1776,3776,3776,152,153,'GPAAAA','HPDAAA','HHHHxx'
+6072,2426,0,0,2,12,72,72,72,1072,6072,144,145,'OZAAAA','IPDAAA','OOOOxx'
+8129,2427,1,1,9,9,29,129,129,3129,8129,58,59,'RAAAAA','JPDAAA','VVVVxx'
+1085,2428,1,1,5,5,85,85,1085,1085,1085,170,171,'TPAAAA','KPDAAA','AAAAxx'
+2079,2429,1,3,9,19,79,79,79,2079,2079,158,159,'ZBAAAA','LPDAAA','HHHHxx'
+1200,2430,0,0,0,0,0,200,1200,1200,1200,0,1,'EUAAAA','MPDAAA','OOOOxx'
+3276,2431,0,0,6,16,76,276,1276,3276,3276,152,153,'AWAAAA','NPDAAA','VVVVxx'
+2608,2432,0,0,8,8,8,608,608,2608,2608,16,17,'IWAAAA','OPDAAA','AAAAxx'
+702,2433,0,2,2,2,2,702,702,702,702,4,5,'ABAAAA','PPDAAA','HHHHxx'
+5750,2434,0,2,0,10,50,750,1750,750,5750,100,101,'ENAAAA','QPDAAA','OOOOxx'
+2776,2435,0,0,6,16,76,776,776,2776,2776,152,153,'UCAAAA','RPDAAA','VVVVxx'
+9151,2436,1,3,1,11,51,151,1151,4151,9151,102,103,'ZNAAAA','SPDAAA','AAAAxx'
+3282,2437,0,2,2,2,82,282,1282,3282,3282,164,165,'GWAAAA','TPDAAA','HHHHxx'
+408,2438,0,0,8,8,8,408,408,408,408,16,17,'SPAAAA','UPDAAA','OOOOxx'
+3473,2439,1,1,3,13,73,473,1473,3473,3473,146,147,'PDAAAA','VPDAAA','VVVVxx'
+7095,2440,1,3,5,15,95,95,1095,2095,7095,190,191,'XMAAAA','WPDAAA','AAAAxx'
+3288,2441,0,0,8,8,88,288,1288,3288,3288,176,177,'MWAAAA','XPDAAA','HHHHxx'
+8215,2442,1,3,5,15,15,215,215,3215,8215,30,31,'ZDAAAA','YPDAAA','OOOOxx'
+6244,2443,0,0,4,4,44,244,244,1244,6244,88,89,'EGAAAA','ZPDAAA','VVVVxx'
+8440,2444,0,0,0,0,40,440,440,3440,8440,80,81,'QMAAAA','AQDAAA','AAAAxx'
+3800,2445,0,0,0,0,0,800,1800,3800,3800,0,1,'EQAAAA','BQDAAA','HHHHxx'
+7279,2446,1,3,9,19,79,279,1279,2279,7279,158,159,'ZTAAAA','CQDAAA','OOOOxx'
+9206,2447,0,2,6,6,6,206,1206,4206,9206,12,13,'CQAAAA','DQDAAA','VVVVxx'
+6465,2448,1,1,5,5,65,465,465,1465,6465,130,131,'ROAAAA','EQDAAA','AAAAxx'
+4127,2449,1,3,7,7,27,127,127,4127,4127,54,55,'TCAAAA','FQDAAA','HHHHxx'
+7463,2450,1,3,3,3,63,463,1463,2463,7463,126,127,'BBAAAA','GQDAAA','OOOOxx'
+5117,2451,1,1,7,17,17,117,1117,117,5117,34,35,'VOAAAA','HQDAAA','VVVVxx'
+4715,2452,1,3,5,15,15,715,715,4715,4715,30,31,'JZAAAA','IQDAAA','AAAAxx'
+2010,2453,0,2,0,10,10,10,10,2010,2010,20,21,'IZAAAA','JQDAAA','HHHHxx'
+6486,2454,0,2,6,6,86,486,486,1486,6486,172,173,'MPAAAA','KQDAAA','OOOOxx'
+6434,2455,0,2,4,14,34,434,434,1434,6434,68,69,'MNAAAA','LQDAAA','VVVVxx'
+2151,2456,1,3,1,11,51,151,151,2151,2151,102,103,'TEAAAA','MQDAAA','AAAAxx'
+4821,2457,1,1,1,1,21,821,821,4821,4821,42,43,'LDAAAA','NQDAAA','HHHHxx'
+6507,2458,1,3,7,7,7,507,507,1507,6507,14,15,'HQAAAA','OQDAAA','OOOOxx'
+8741,2459,1,1,1,1,41,741,741,3741,8741,82,83,'FYAAAA','PQDAAA','VVVVxx'
+6846,2460,0,2,6,6,46,846,846,1846,6846,92,93,'IDAAAA','QQDAAA','AAAAxx'
+4525,2461,1,1,5,5,25,525,525,4525,4525,50,51,'BSAAAA','RQDAAA','HHHHxx'
+8299,2462,1,3,9,19,99,299,299,3299,8299,198,199,'FHAAAA','SQDAAA','OOOOxx'
+5465,2463,1,1,5,5,65,465,1465,465,5465,130,131,'FCAAAA','TQDAAA','VVVVxx'
+7206,2464,0,2,6,6,6,206,1206,2206,7206,12,13,'ERAAAA','UQDAAA','AAAAxx'
+2616,2465,0,0,6,16,16,616,616,2616,2616,32,33,'QWAAAA','VQDAAA','HHHHxx'
+4440,2466,0,0,0,0,40,440,440,4440,4440,80,81,'UOAAAA','WQDAAA','OOOOxx'
+6109,2467,1,1,9,9,9,109,109,1109,6109,18,19,'ZAAAAA','XQDAAA','VVVVxx'
+7905,2468,1,1,5,5,5,905,1905,2905,7905,10,11,'BSAAAA','YQDAAA','AAAAxx'
+6498,2469,0,2,8,18,98,498,498,1498,6498,196,197,'YPAAAA','ZQDAAA','HHHHxx'
+2034,2470,0,2,4,14,34,34,34,2034,2034,68,69,'GAAAAA','ARDAAA','OOOOxx'
+7693,2471,1,1,3,13,93,693,1693,2693,7693,186,187,'XJAAAA','BRDAAA','VVVVxx'
+7511,2472,1,3,1,11,11,511,1511,2511,7511,22,23,'XCAAAA','CRDAAA','AAAAxx'
+7531,2473,1,3,1,11,31,531,1531,2531,7531,62,63,'RDAAAA','DRDAAA','HHHHxx'
+6869,2474,1,1,9,9,69,869,869,1869,6869,138,139,'FEAAAA','ERDAAA','OOOOxx'
+2763,2475,1,3,3,3,63,763,763,2763,2763,126,127,'HCAAAA','FRDAAA','VVVVxx'
+575,2476,1,3,5,15,75,575,575,575,575,150,151,'DWAAAA','GRDAAA','AAAAxx'
+8953,2477,1,1,3,13,53,953,953,3953,8953,106,107,'JGAAAA','HRDAAA','HHHHxx'
+5833,2478,1,1,3,13,33,833,1833,833,5833,66,67,'JQAAAA','IRDAAA','OOOOxx'
+9035,2479,1,3,5,15,35,35,1035,4035,9035,70,71,'NJAAAA','JRDAAA','VVVVxx'
+9123,2480,1,3,3,3,23,123,1123,4123,9123,46,47,'XMAAAA','KRDAAA','AAAAxx'
+206,2481,0,2,6,6,6,206,206,206,206,12,13,'YHAAAA','LRDAAA','HHHHxx'
+4155,2482,1,3,5,15,55,155,155,4155,4155,110,111,'VDAAAA','MRDAAA','OOOOxx'
+532,2483,0,0,2,12,32,532,532,532,532,64,65,'MUAAAA','NRDAAA','VVVVxx'
+1370,2484,0,2,0,10,70,370,1370,1370,1370,140,141,'SAAAAA','ORDAAA','AAAAxx'
+7656,2485,0,0,6,16,56,656,1656,2656,7656,112,113,'MIAAAA','PRDAAA','HHHHxx'
+7735,2486,1,3,5,15,35,735,1735,2735,7735,70,71,'NLAAAA','QRDAAA','OOOOxx'
+2118,2487,0,2,8,18,18,118,118,2118,2118,36,37,'MDAAAA','RRDAAA','VVVVxx'
+6914,2488,0,2,4,14,14,914,914,1914,6914,28,29,'YFAAAA','SRDAAA','AAAAxx'
+6277,2489,1,1,7,17,77,277,277,1277,6277,154,155,'LHAAAA','TRDAAA','HHHHxx'
+6347,2490,1,3,7,7,47,347,347,1347,6347,94,95,'DKAAAA','URDAAA','OOOOxx'
+4030,2491,0,2,0,10,30,30,30,4030,4030,60,61,'AZAAAA','VRDAAA','VVVVxx'
+9673,2492,1,1,3,13,73,673,1673,4673,9673,146,147,'BIAAAA','WRDAAA','AAAAxx'
+2015,2493,1,3,5,15,15,15,15,2015,2015,30,31,'NZAAAA','XRDAAA','HHHHxx'
+1317,2494,1,1,7,17,17,317,1317,1317,1317,34,35,'RYAAAA','YRDAAA','OOOOxx'
+404,2495,0,0,4,4,4,404,404,404,404,8,9,'OPAAAA','ZRDAAA','VVVVxx'
+1604,2496,0,0,4,4,4,604,1604,1604,1604,8,9,'SJAAAA','ASDAAA','AAAAxx'
+1912,2497,0,0,2,12,12,912,1912,1912,1912,24,25,'OVAAAA','BSDAAA','HHHHxx'
+5727,2498,1,3,7,7,27,727,1727,727,5727,54,55,'HMAAAA','CSDAAA','OOOOxx'
+4538,2499,0,2,8,18,38,538,538,4538,4538,76,77,'OSAAAA','DSDAAA','VVVVxx'
+6868,2500,0,0,8,8,68,868,868,1868,6868,136,137,'EEAAAA','ESDAAA','AAAAxx'
+9801,2501,1,1,1,1,1,801,1801,4801,9801,2,3,'ZMAAAA','FSDAAA','HHHHxx'
+1781,2502,1,1,1,1,81,781,1781,1781,1781,162,163,'NQAAAA','GSDAAA','OOOOxx'
+7061,2503,1,1,1,1,61,61,1061,2061,7061,122,123,'PLAAAA','HSDAAA','VVVVxx'
+2412,2504,0,0,2,12,12,412,412,2412,2412,24,25,'UOAAAA','ISDAAA','AAAAxx'
+9191,2505,1,3,1,11,91,191,1191,4191,9191,182,183,'NPAAAA','JSDAAA','HHHHxx'
+1958,2506,0,2,8,18,58,958,1958,1958,1958,116,117,'IXAAAA','KSDAAA','OOOOxx'
+2203,2507,1,3,3,3,3,203,203,2203,2203,6,7,'TGAAAA','LSDAAA','VVVVxx'
+9104,2508,0,0,4,4,4,104,1104,4104,9104,8,9,'EMAAAA','MSDAAA','AAAAxx'
+3837,2509,1,1,7,17,37,837,1837,3837,3837,74,75,'PRAAAA','NSDAAA','HHHHxx'
+7055,2510,1,3,5,15,55,55,1055,2055,7055,110,111,'JLAAAA','OSDAAA','OOOOxx'
+4612,2511,0,0,2,12,12,612,612,4612,4612,24,25,'KVAAAA','PSDAAA','VVVVxx'
+6420,2512,0,0,0,0,20,420,420,1420,6420,40,41,'YMAAAA','QSDAAA','AAAAxx'
+613,2513,1,1,3,13,13,613,613,613,613,26,27,'PXAAAA','RSDAAA','HHHHxx'
+1691,2514,1,3,1,11,91,691,1691,1691,1691,182,183,'BNAAAA','SSDAAA','OOOOxx'
+33,2515,1,1,3,13,33,33,33,33,33,66,67,'HBAAAA','TSDAAA','VVVVxx'
+875,2516,1,3,5,15,75,875,875,875,875,150,151,'RHAAAA','USDAAA','AAAAxx'
+9030,2517,0,2,0,10,30,30,1030,4030,9030,60,61,'IJAAAA','VSDAAA','HHHHxx'
+4285,2518,1,1,5,5,85,285,285,4285,4285,170,171,'VIAAAA','WSDAAA','OOOOxx'
+6236,2519,0,0,6,16,36,236,236,1236,6236,72,73,'WFAAAA','XSDAAA','VVVVxx'
+4702,2520,0,2,2,2,2,702,702,4702,4702,4,5,'WYAAAA','YSDAAA','AAAAxx'
+3441,2521,1,1,1,1,41,441,1441,3441,3441,82,83,'JCAAAA','ZSDAAA','HHHHxx'
+2150,2522,0,2,0,10,50,150,150,2150,2150,100,101,'SEAAAA','ATDAAA','OOOOxx'
+1852,2523,0,0,2,12,52,852,1852,1852,1852,104,105,'GTAAAA','BTDAAA','VVVVxx'
+7713,2524,1,1,3,13,13,713,1713,2713,7713,26,27,'RKAAAA','CTDAAA','AAAAxx'
+6849,2525,1,1,9,9,49,849,849,1849,6849,98,99,'LDAAAA','DTDAAA','HHHHxx'
+3425,2526,1,1,5,5,25,425,1425,3425,3425,50,51,'TBAAAA','ETDAAA','OOOOxx'
+4681,2527,1,1,1,1,81,681,681,4681,4681,162,163,'BYAAAA','FTDAAA','VVVVxx'
+1134,2528,0,2,4,14,34,134,1134,1134,1134,68,69,'QRAAAA','GTDAAA','AAAAxx'
+7462,2529,0,2,2,2,62,462,1462,2462,7462,124,125,'ABAAAA','HTDAAA','HHHHxx'
+2148,2530,0,0,8,8,48,148,148,2148,2148,96,97,'QEAAAA','ITDAAA','OOOOxx'
+5921,2531,1,1,1,1,21,921,1921,921,5921,42,43,'TTAAAA','JTDAAA','VVVVxx'
+118,2532,0,2,8,18,18,118,118,118,118,36,37,'OEAAAA','KTDAAA','AAAAxx'
+3065,2533,1,1,5,5,65,65,1065,3065,3065,130,131,'XNAAAA','LTDAAA','HHHHxx'
+6590,2534,0,2,0,10,90,590,590,1590,6590,180,181,'MTAAAA','MTDAAA','OOOOxx'
+4993,2535,1,1,3,13,93,993,993,4993,4993,186,187,'BKAAAA','NTDAAA','VVVVxx'
+6818,2536,0,2,8,18,18,818,818,1818,6818,36,37,'GCAAAA','OTDAAA','AAAAxx'
+1449,2537,1,1,9,9,49,449,1449,1449,1449,98,99,'TDAAAA','PTDAAA','HHHHxx'
+2039,2538,1,3,9,19,39,39,39,2039,2039,78,79,'LAAAAA','QTDAAA','OOOOxx'
+2524,2539,0,0,4,4,24,524,524,2524,2524,48,49,'CTAAAA','RTDAAA','VVVVxx'
+1481,2540,1,1,1,1,81,481,1481,1481,1481,162,163,'ZEAAAA','STDAAA','AAAAxx'
+6984,2541,0,0,4,4,84,984,984,1984,6984,168,169,'QIAAAA','TTDAAA','HHHHxx'
+3960,2542,0,0,0,0,60,960,1960,3960,3960,120,121,'IWAAAA','UTDAAA','OOOOxx'
+1983,2543,1,3,3,3,83,983,1983,1983,1983,166,167,'HYAAAA','VTDAAA','VVVVxx'
+6379,2544,1,3,9,19,79,379,379,1379,6379,158,159,'JLAAAA','WTDAAA','AAAAxx'
+8975,2545,1,3,5,15,75,975,975,3975,8975,150,151,'FHAAAA','XTDAAA','HHHHxx'
+1102,2546,0,2,2,2,2,102,1102,1102,1102,4,5,'KQAAAA','YTDAAA','OOOOxx'
+2517,2547,1,1,7,17,17,517,517,2517,2517,34,35,'VSAAAA','ZTDAAA','VVVVxx'
+712,2548,0,0,2,12,12,712,712,712,712,24,25,'KBAAAA','AUDAAA','AAAAxx'
+5419,2549,1,3,9,19,19,419,1419,419,5419,38,39,'LAAAAA','BUDAAA','HHHHxx'
+723,2550,1,3,3,3,23,723,723,723,723,46,47,'VBAAAA','CUDAAA','OOOOxx'
+8057,2551,1,1,7,17,57,57,57,3057,8057,114,115,'XXAAAA','DUDAAA','VVVVxx'
+7471,2552,1,3,1,11,71,471,1471,2471,7471,142,143,'JBAAAA','EUDAAA','AAAAxx'
+8855,2553,1,3,5,15,55,855,855,3855,8855,110,111,'PCAAAA','FUDAAA','HHHHxx'
+5074,2554,0,2,4,14,74,74,1074,74,5074,148,149,'ENAAAA','GUDAAA','OOOOxx'
+7139,2555,1,3,9,19,39,139,1139,2139,7139,78,79,'POAAAA','HUDAAA','VVVVxx'
+3833,2556,1,1,3,13,33,833,1833,3833,3833,66,67,'LRAAAA','IUDAAA','AAAAxx'
+5186,2557,0,2,6,6,86,186,1186,186,5186,172,173,'MRAAAA','JUDAAA','HHHHxx'
+9436,2558,0,0,6,16,36,436,1436,4436,9436,72,73,'YYAAAA','KUDAAA','OOOOxx'
+8859,2559,1,3,9,19,59,859,859,3859,8859,118,119,'TCAAAA','LUDAAA','VVVVxx'
+6943,2560,1,3,3,3,43,943,943,1943,6943,86,87,'BHAAAA','MUDAAA','AAAAxx'
+2315,2561,1,3,5,15,15,315,315,2315,2315,30,31,'BLAAAA','NUDAAA','HHHHxx'
+1394,2562,0,2,4,14,94,394,1394,1394,1394,188,189,'QBAAAA','OUDAAA','OOOOxx'
+8863,2563,1,3,3,3,63,863,863,3863,8863,126,127,'XCAAAA','PUDAAA','VVVVxx'
+8812,2564,0,0,2,12,12,812,812,3812,8812,24,25,'YAAAAA','QUDAAA','AAAAxx'
+7498,2565,0,2,8,18,98,498,1498,2498,7498,196,197,'KCAAAA','RUDAAA','HHHHxx'
+8962,2566,0,2,2,2,62,962,962,3962,8962,124,125,'SGAAAA','SUDAAA','OOOOxx'
+2533,2567,1,1,3,13,33,533,533,2533,2533,66,67,'LTAAAA','TUDAAA','VVVVxx'
+8188,2568,0,0,8,8,88,188,188,3188,8188,176,177,'YCAAAA','UUDAAA','AAAAxx'
+6137,2569,1,1,7,17,37,137,137,1137,6137,74,75,'BCAAAA','VUDAAA','HHHHxx'
+974,2570,0,2,4,14,74,974,974,974,974,148,149,'MLAAAA','WUDAAA','OOOOxx'
+2751,2571,1,3,1,11,51,751,751,2751,2751,102,103,'VBAAAA','XUDAAA','VVVVxx'
+4975,2572,1,3,5,15,75,975,975,4975,4975,150,151,'JJAAAA','YUDAAA','AAAAxx'
+3411,2573,1,3,1,11,11,411,1411,3411,3411,22,23,'FBAAAA','ZUDAAA','HHHHxx'
+3143,2574,1,3,3,3,43,143,1143,3143,3143,86,87,'XQAAAA','AVDAAA','OOOOxx'
+8011,2575,1,3,1,11,11,11,11,3011,8011,22,23,'DWAAAA','BVDAAA','VVVVxx'
+988,2576,0,0,8,8,88,988,988,988,988,176,177,'AMAAAA','CVDAAA','AAAAxx'
+4289,2577,1,1,9,9,89,289,289,4289,4289,178,179,'ZIAAAA','DVDAAA','HHHHxx'
+8105,2578,1,1,5,5,5,105,105,3105,8105,10,11,'TZAAAA','EVDAAA','OOOOxx'
+9885,2579,1,1,5,5,85,885,1885,4885,9885,170,171,'FQAAAA','FVDAAA','VVVVxx'
+1002,2580,0,2,2,2,2,2,1002,1002,1002,4,5,'OMAAAA','GVDAAA','AAAAxx'
+5827,2581,1,3,7,7,27,827,1827,827,5827,54,55,'DQAAAA','HVDAAA','HHHHxx'
+1228,2582,0,0,8,8,28,228,1228,1228,1228,56,57,'GVAAAA','IVDAAA','OOOOxx'
+6352,2583,0,0,2,12,52,352,352,1352,6352,104,105,'IKAAAA','JVDAAA','VVVVxx'
+8868,2584,0,0,8,8,68,868,868,3868,8868,136,137,'CDAAAA','KVDAAA','AAAAxx'
+3643,2585,1,3,3,3,43,643,1643,3643,3643,86,87,'DKAAAA','LVDAAA','HHHHxx'
+1468,2586,0,0,8,8,68,468,1468,1468,1468,136,137,'MEAAAA','MVDAAA','OOOOxx'
+8415,2587,1,3,5,15,15,415,415,3415,8415,30,31,'RLAAAA','NVDAAA','VVVVxx'
+9631,2588,1,3,1,11,31,631,1631,4631,9631,62,63,'LGAAAA','OVDAAA','AAAAxx'
+7408,2589,0,0,8,8,8,408,1408,2408,7408,16,17,'YYAAAA','PVDAAA','HHHHxx'
+1934,2590,0,2,4,14,34,934,1934,1934,1934,68,69,'KWAAAA','QVDAAA','OOOOxx'
+996,2591,0,0,6,16,96,996,996,996,996,192,193,'IMAAAA','RVDAAA','VVVVxx'
+8027,2592,1,3,7,7,27,27,27,3027,8027,54,55,'TWAAAA','SVDAAA','AAAAxx'
+8464,2593,0,0,4,4,64,464,464,3464,8464,128,129,'ONAAAA','TVDAAA','HHHHxx'
+5007,2594,1,3,7,7,7,7,1007,7,5007,14,15,'PKAAAA','UVDAAA','OOOOxx'
+8356,2595,0,0,6,16,56,356,356,3356,8356,112,113,'KJAAAA','VVDAAA','VVVVxx'
+4579,2596,1,3,9,19,79,579,579,4579,4579,158,159,'DUAAAA','WVDAAA','AAAAxx'
+8513,2597,1,1,3,13,13,513,513,3513,8513,26,27,'LPAAAA','XVDAAA','HHHHxx'
+383,2598,1,3,3,3,83,383,383,383,383,166,167,'TOAAAA','YVDAAA','OOOOxx'
+9304,2599,0,0,4,4,4,304,1304,4304,9304,8,9,'WTAAAA','ZVDAAA','VVVVxx'
+7224,2600,0,0,4,4,24,224,1224,2224,7224,48,49,'WRAAAA','AWDAAA','AAAAxx'
+6023,2601,1,3,3,3,23,23,23,1023,6023,46,47,'RXAAAA','BWDAAA','HHHHxx'
+2746,2602,0,2,6,6,46,746,746,2746,2746,92,93,'QBAAAA','CWDAAA','OOOOxx'
+137,2603,1,1,7,17,37,137,137,137,137,74,75,'HFAAAA','DWDAAA','VVVVxx'
+9441,2604,1,1,1,1,41,441,1441,4441,9441,82,83,'DZAAAA','EWDAAA','AAAAxx'
+3690,2605,0,2,0,10,90,690,1690,3690,3690,180,181,'YLAAAA','FWDAAA','HHHHxx'
+913,2606,1,1,3,13,13,913,913,913,913,26,27,'DJAAAA','GWDAAA','OOOOxx'
+1768,2607,0,0,8,8,68,768,1768,1768,1768,136,137,'AQAAAA','HWDAAA','VVVVxx'
+8492,2608,0,0,2,12,92,492,492,3492,8492,184,185,'QOAAAA','IWDAAA','AAAAxx'
+8083,2609,1,3,3,3,83,83,83,3083,8083,166,167,'XYAAAA','JWDAAA','HHHHxx'
+4609,2610,1,1,9,9,9,609,609,4609,4609,18,19,'HVAAAA','KWDAAA','OOOOxx'
+7520,2611,0,0,0,0,20,520,1520,2520,7520,40,41,'GDAAAA','LWDAAA','VVVVxx'
+4231,2612,1,3,1,11,31,231,231,4231,4231,62,63,'TGAAAA','MWDAAA','AAAAxx'
+6022,2613,0,2,2,2,22,22,22,1022,6022,44,45,'QXAAAA','NWDAAA','HHHHxx'
+9784,2614,0,0,4,4,84,784,1784,4784,9784,168,169,'IMAAAA','OWDAAA','OOOOxx'
+1343,2615,1,3,3,3,43,343,1343,1343,1343,86,87,'RZAAAA','PWDAAA','VVVVxx'
+7549,2616,1,1,9,9,49,549,1549,2549,7549,98,99,'JEAAAA','QWDAAA','AAAAxx'
+269,2617,1,1,9,9,69,269,269,269,269,138,139,'JKAAAA','RWDAAA','HHHHxx'
+1069,2618,1,1,9,9,69,69,1069,1069,1069,138,139,'DPAAAA','SWDAAA','OOOOxx'
+4610,2619,0,2,0,10,10,610,610,4610,4610,20,21,'IVAAAA','TWDAAA','VVVVxx'
+482,2620,0,2,2,2,82,482,482,482,482,164,165,'OSAAAA','UWDAAA','AAAAxx'
+3025,2621,1,1,5,5,25,25,1025,3025,3025,50,51,'JMAAAA','VWDAAA','HHHHxx'
+7914,2622,0,2,4,14,14,914,1914,2914,7914,28,29,'KSAAAA','WWDAAA','OOOOxx'
+3198,2623,0,2,8,18,98,198,1198,3198,3198,196,197,'ATAAAA','XWDAAA','VVVVxx'
+1187,2624,1,3,7,7,87,187,1187,1187,1187,174,175,'RTAAAA','YWDAAA','AAAAxx'
+4707,2625,1,3,7,7,7,707,707,4707,4707,14,15,'BZAAAA','ZWDAAA','HHHHxx'
+8279,2626,1,3,9,19,79,279,279,3279,8279,158,159,'LGAAAA','AXDAAA','OOOOxx'
+6127,2627,1,3,7,7,27,127,127,1127,6127,54,55,'RBAAAA','BXDAAA','VVVVxx'
+1305,2628,1,1,5,5,5,305,1305,1305,1305,10,11,'FYAAAA','CXDAAA','AAAAxx'
+4804,2629,0,0,4,4,4,804,804,4804,4804,8,9,'UCAAAA','DXDAAA','HHHHxx'
+6069,2630,1,1,9,9,69,69,69,1069,6069,138,139,'LZAAAA','EXDAAA','OOOOxx'
+9229,2631,1,1,9,9,29,229,1229,4229,9229,58,59,'ZQAAAA','FXDAAA','VVVVxx'
+4703,2632,1,3,3,3,3,703,703,4703,4703,6,7,'XYAAAA','GXDAAA','AAAAxx'
+6410,2633,0,2,0,10,10,410,410,1410,6410,20,21,'OMAAAA','HXDAAA','HHHHxx'
+944,2634,0,0,4,4,44,944,944,944,944,88,89,'IKAAAA','IXDAAA','OOOOxx'
+3744,2635,0,0,4,4,44,744,1744,3744,3744,88,89,'AOAAAA','JXDAAA','VVVVxx'
+1127,2636,1,3,7,7,27,127,1127,1127,1127,54,55,'JRAAAA','KXDAAA','AAAAxx'
+6693,2637,1,1,3,13,93,693,693,1693,6693,186,187,'LXAAAA','LXDAAA','HHHHxx'
+583,2638,1,3,3,3,83,583,583,583,583,166,167,'LWAAAA','MXDAAA','OOOOxx'
+2684,2639,0,0,4,4,84,684,684,2684,2684,168,169,'GZAAAA','NXDAAA','VVVVxx'
+6192,2640,0,0,2,12,92,192,192,1192,6192,184,185,'EEAAAA','OXDAAA','AAAAxx'
+4157,2641,1,1,7,17,57,157,157,4157,4157,114,115,'XDAAAA','PXDAAA','HHHHxx'
+6470,2642,0,2,0,10,70,470,470,1470,6470,140,141,'WOAAAA','QXDAAA','OOOOxx'
+8965,2643,1,1,5,5,65,965,965,3965,8965,130,131,'VGAAAA','RXDAAA','VVVVxx'
+1433,2644,1,1,3,13,33,433,1433,1433,1433,66,67,'DDAAAA','SXDAAA','AAAAxx'
+4570,2645,0,2,0,10,70,570,570,4570,4570,140,141,'UTAAAA','TXDAAA','HHHHxx'
+1806,2646,0,2,6,6,6,806,1806,1806,1806,12,13,'MRAAAA','UXDAAA','OOOOxx'
+1230,2647,0,2,0,10,30,230,1230,1230,1230,60,61,'IVAAAA','VXDAAA','VVVVxx'
+2283,2648,1,3,3,3,83,283,283,2283,2283,166,167,'VJAAAA','WXDAAA','AAAAxx'
+6456,2649,0,0,6,16,56,456,456,1456,6456,112,113,'IOAAAA','XXDAAA','HHHHxx'
+7427,2650,1,3,7,7,27,427,1427,2427,7427,54,55,'RZAAAA','YXDAAA','OOOOxx'
+8310,2651,0,2,0,10,10,310,310,3310,8310,20,21,'QHAAAA','ZXDAAA','VVVVxx'
+8103,2652,1,3,3,3,3,103,103,3103,8103,6,7,'RZAAAA','AYDAAA','AAAAxx'
+3947,2653,1,3,7,7,47,947,1947,3947,3947,94,95,'VVAAAA','BYDAAA','HHHHxx'
+3414,2654,0,2,4,14,14,414,1414,3414,3414,28,29,'IBAAAA','CYDAAA','OOOOxx'
+2043,2655,1,3,3,3,43,43,43,2043,2043,86,87,'PAAAAA','DYDAAA','VVVVxx'
+4393,2656,1,1,3,13,93,393,393,4393,4393,186,187,'ZMAAAA','EYDAAA','AAAAxx'
+6664,2657,0,0,4,4,64,664,664,1664,6664,128,129,'IWAAAA','FYDAAA','HHHHxx'
+4545,2658,1,1,5,5,45,545,545,4545,4545,90,91,'VSAAAA','GYDAAA','OOOOxx'
+7637,2659,1,1,7,17,37,637,1637,2637,7637,74,75,'THAAAA','HYDAAA','VVVVxx'
+1359,2660,1,3,9,19,59,359,1359,1359,1359,118,119,'HAAAAA','IYDAAA','AAAAxx'
+5018,2661,0,2,8,18,18,18,1018,18,5018,36,37,'ALAAAA','JYDAAA','HHHHxx'
+987,2662,1,3,7,7,87,987,987,987,987,174,175,'ZLAAAA','KYDAAA','OOOOxx'
+1320,2663,0,0,0,0,20,320,1320,1320,1320,40,41,'UYAAAA','LYDAAA','VVVVxx'
+9311,2664,1,3,1,11,11,311,1311,4311,9311,22,23,'DUAAAA','MYDAAA','AAAAxx'
+7993,2665,1,1,3,13,93,993,1993,2993,7993,186,187,'LVAAAA','NYDAAA','HHHHxx'
+7588,2666,0,0,8,8,88,588,1588,2588,7588,176,177,'WFAAAA','OYDAAA','OOOOxx'
+5983,2667,1,3,3,3,83,983,1983,983,5983,166,167,'DWAAAA','PYDAAA','VVVVxx'
+4070,2668,0,2,0,10,70,70,70,4070,4070,140,141,'OAAAAA','QYDAAA','AAAAxx'
+8349,2669,1,1,9,9,49,349,349,3349,8349,98,99,'DJAAAA','RYDAAA','HHHHxx'
+3810,2670,0,2,0,10,10,810,1810,3810,3810,20,21,'OQAAAA','SYDAAA','OOOOxx'
+6948,2671,0,0,8,8,48,948,948,1948,6948,96,97,'GHAAAA','TYDAAA','VVVVxx'
+7153,2672,1,1,3,13,53,153,1153,2153,7153,106,107,'DPAAAA','UYDAAA','AAAAxx'
+5371,2673,1,3,1,11,71,371,1371,371,5371,142,143,'PYAAAA','VYDAAA','HHHHxx'
+8316,2674,0,0,6,16,16,316,316,3316,8316,32,33,'WHAAAA','WYDAAA','OOOOxx'
+5903,2675,1,3,3,3,3,903,1903,903,5903,6,7,'BTAAAA','XYDAAA','VVVVxx'
+6718,2676,0,2,8,18,18,718,718,1718,6718,36,37,'KYAAAA','YYDAAA','AAAAxx'
+4759,2677,1,3,9,19,59,759,759,4759,4759,118,119,'BBAAAA','ZYDAAA','HHHHxx'
+2555,2678,1,3,5,15,55,555,555,2555,2555,110,111,'HUAAAA','AZDAAA','OOOOxx'
+3457,2679,1,1,7,17,57,457,1457,3457,3457,114,115,'ZCAAAA','BZDAAA','VVVVxx'
+9626,2680,0,2,6,6,26,626,1626,4626,9626,52,53,'GGAAAA','CZDAAA','AAAAxx'
+2570,2681,0,2,0,10,70,570,570,2570,2570,140,141,'WUAAAA','DZDAAA','HHHHxx'
+7964,2682,0,0,4,4,64,964,1964,2964,7964,128,129,'IUAAAA','EZDAAA','OOOOxx'
+1543,2683,1,3,3,3,43,543,1543,1543,1543,86,87,'JHAAAA','FZDAAA','VVVVxx'
+929,2684,1,1,9,9,29,929,929,929,929,58,59,'TJAAAA','GZDAAA','AAAAxx'
+9244,2685,0,0,4,4,44,244,1244,4244,9244,88,89,'ORAAAA','HZDAAA','HHHHxx'
+9210,2686,0,2,0,10,10,210,1210,4210,9210,20,21,'GQAAAA','IZDAAA','OOOOxx'
+8334,2687,0,2,4,14,34,334,334,3334,8334,68,69,'OIAAAA','JZDAAA','VVVVxx'
+9310,2688,0,2,0,10,10,310,1310,4310,9310,20,21,'CUAAAA','KZDAAA','AAAAxx'
+5024,2689,0,0,4,4,24,24,1024,24,5024,48,49,'GLAAAA','LZDAAA','HHHHxx'
+8794,2690,0,2,4,14,94,794,794,3794,8794,188,189,'GAAAAA','MZDAAA','OOOOxx'
+4091,2691,1,3,1,11,91,91,91,4091,4091,182,183,'JBAAAA','NZDAAA','VVVVxx'
+649,2692,1,1,9,9,49,649,649,649,649,98,99,'ZYAAAA','OZDAAA','AAAAxx'
+8505,2693,1,1,5,5,5,505,505,3505,8505,10,11,'DPAAAA','PZDAAA','HHHHxx'
+6652,2694,0,0,2,12,52,652,652,1652,6652,104,105,'WVAAAA','QZDAAA','OOOOxx'
+8945,2695,1,1,5,5,45,945,945,3945,8945,90,91,'BGAAAA','RZDAAA','VVVVxx'
+2095,2696,1,3,5,15,95,95,95,2095,2095,190,191,'PCAAAA','SZDAAA','AAAAxx'
+8676,2697,0,0,6,16,76,676,676,3676,8676,152,153,'SVAAAA','TZDAAA','HHHHxx'
+3994,2698,0,2,4,14,94,994,1994,3994,3994,188,189,'QXAAAA','UZDAAA','OOOOxx'
+2859,2699,1,3,9,19,59,859,859,2859,2859,118,119,'ZFAAAA','VZDAAA','VVVVxx'
+5403,2700,1,3,3,3,3,403,1403,403,5403,6,7,'VZAAAA','WZDAAA','AAAAxx'
+3254,2701,0,2,4,14,54,254,1254,3254,3254,108,109,'EVAAAA','XZDAAA','HHHHxx'
+7339,2702,1,3,9,19,39,339,1339,2339,7339,78,79,'HWAAAA','YZDAAA','OOOOxx'
+7220,2703,0,0,0,0,20,220,1220,2220,7220,40,41,'SRAAAA','ZZDAAA','VVVVxx'
+4154,2704,0,2,4,14,54,154,154,4154,4154,108,109,'UDAAAA','AAEAAA','AAAAxx'
+7570,2705,0,2,0,10,70,570,1570,2570,7570,140,141,'EFAAAA','BAEAAA','HHHHxx'
+2576,2706,0,0,6,16,76,576,576,2576,2576,152,153,'CVAAAA','CAEAAA','OOOOxx'
+5764,2707,0,0,4,4,64,764,1764,764,5764,128,129,'SNAAAA','DAEAAA','VVVVxx'
+4314,2708,0,2,4,14,14,314,314,4314,4314,28,29,'YJAAAA','EAEAAA','AAAAxx'
+2274,2709,0,2,4,14,74,274,274,2274,2274,148,149,'MJAAAA','FAEAAA','HHHHxx'
+9756,2710,0,0,6,16,56,756,1756,4756,9756,112,113,'GLAAAA','GAEAAA','OOOOxx'
+8274,2711,0,2,4,14,74,274,274,3274,8274,148,149,'GGAAAA','HAEAAA','VVVVxx'
+1289,2712,1,1,9,9,89,289,1289,1289,1289,178,179,'PXAAAA','IAEAAA','AAAAxx'
+7335,2713,1,3,5,15,35,335,1335,2335,7335,70,71,'DWAAAA','JAEAAA','HHHHxx'
+5351,2714,1,3,1,11,51,351,1351,351,5351,102,103,'VXAAAA','KAEAAA','OOOOxx'
+8978,2715,0,2,8,18,78,978,978,3978,8978,156,157,'IHAAAA','LAEAAA','VVVVxx'
+2,2716,0,2,2,2,2,2,2,2,2,4,5,'CAAAAA','MAEAAA','AAAAxx'
+8906,2717,0,2,6,6,6,906,906,3906,8906,12,13,'OEAAAA','NAEAAA','HHHHxx'
+6388,2718,0,0,8,8,88,388,388,1388,6388,176,177,'SLAAAA','OAEAAA','OOOOxx'
+5675,2719,1,3,5,15,75,675,1675,675,5675,150,151,'HKAAAA','PAEAAA','VVVVxx'
+255,2720,1,3,5,15,55,255,255,255,255,110,111,'VJAAAA','QAEAAA','AAAAxx'
+9538,2721,0,2,8,18,38,538,1538,4538,9538,76,77,'WCAAAA','RAEAAA','HHHHxx'
+1480,2722,0,0,0,0,80,480,1480,1480,1480,160,161,'YEAAAA','SAEAAA','OOOOxx'
+4015,2723,1,3,5,15,15,15,15,4015,4015,30,31,'LYAAAA','TAEAAA','VVVVxx'
+5166,2724,0,2,6,6,66,166,1166,166,5166,132,133,'SQAAAA','UAEAAA','AAAAxx'
+91,2725,1,3,1,11,91,91,91,91,91,182,183,'NDAAAA','VAEAAA','HHHHxx'
+2958,2726,0,2,8,18,58,958,958,2958,2958,116,117,'UJAAAA','WAEAAA','OOOOxx'
+9131,2727,1,3,1,11,31,131,1131,4131,9131,62,63,'FNAAAA','XAEAAA','VVVVxx'
+3944,2728,0,0,4,4,44,944,1944,3944,3944,88,89,'SVAAAA','YAEAAA','AAAAxx'
+4514,2729,0,2,4,14,14,514,514,4514,4514,28,29,'QRAAAA','ZAEAAA','HHHHxx'
+5661,2730,1,1,1,1,61,661,1661,661,5661,122,123,'TJAAAA','ABEAAA','OOOOxx'
+8724,2731,0,0,4,4,24,724,724,3724,8724,48,49,'OXAAAA','BBEAAA','VVVVxx'
+6408,2732,0,0,8,8,8,408,408,1408,6408,16,17,'MMAAAA','CBEAAA','AAAAxx'
+5013,2733,1,1,3,13,13,13,1013,13,5013,26,27,'VKAAAA','DBEAAA','HHHHxx'
+6156,2734,0,0,6,16,56,156,156,1156,6156,112,113,'UCAAAA','EBEAAA','OOOOxx'
+7350,2735,0,2,0,10,50,350,1350,2350,7350,100,101,'SWAAAA','FBEAAA','VVVVxx'
+9858,2736,0,2,8,18,58,858,1858,4858,9858,116,117,'EPAAAA','GBEAAA','AAAAxx'
+895,2737,1,3,5,15,95,895,895,895,895,190,191,'LIAAAA','HBEAAA','HHHHxx'
+8368,2738,0,0,8,8,68,368,368,3368,8368,136,137,'WJAAAA','IBEAAA','OOOOxx'
+179,2739,1,3,9,19,79,179,179,179,179,158,159,'XGAAAA','JBEAAA','VVVVxx'
+4048,2740,0,0,8,8,48,48,48,4048,4048,96,97,'SZAAAA','KBEAAA','AAAAxx'
+3073,2741,1,1,3,13,73,73,1073,3073,3073,146,147,'FOAAAA','LBEAAA','HHHHxx'
+321,2742,1,1,1,1,21,321,321,321,321,42,43,'JMAAAA','MBEAAA','OOOOxx'
+5352,2743,0,0,2,12,52,352,1352,352,5352,104,105,'WXAAAA','NBEAAA','VVVVxx'
+1940,2744,0,0,0,0,40,940,1940,1940,1940,80,81,'QWAAAA','OBEAAA','AAAAxx'
+8803,2745,1,3,3,3,3,803,803,3803,8803,6,7,'PAAAAA','PBEAAA','HHHHxx'
+791,2746,1,3,1,11,91,791,791,791,791,182,183,'LEAAAA','QBEAAA','OOOOxx'
+9809,2747,1,1,9,9,9,809,1809,4809,9809,18,19,'HNAAAA','RBEAAA','VVVVxx'
+5519,2748,1,3,9,19,19,519,1519,519,5519,38,39,'HEAAAA','SBEAAA','AAAAxx'
+7420,2749,0,0,0,0,20,420,1420,2420,7420,40,41,'KZAAAA','TBEAAA','HHHHxx'
+7541,2750,1,1,1,1,41,541,1541,2541,7541,82,83,'BEAAAA','UBEAAA','OOOOxx'
+6538,2751,0,2,8,18,38,538,538,1538,6538,76,77,'MRAAAA','VBEAAA','VVVVxx'
+710,2752,0,2,0,10,10,710,710,710,710,20,21,'IBAAAA','WBEAAA','AAAAxx'
+9488,2753,0,0,8,8,88,488,1488,4488,9488,176,177,'YAAAAA','XBEAAA','HHHHxx'
+3135,2754,1,3,5,15,35,135,1135,3135,3135,70,71,'PQAAAA','YBEAAA','OOOOxx'
+4273,2755,1,1,3,13,73,273,273,4273,4273,146,147,'JIAAAA','ZBEAAA','VVVVxx'
+629,2756,1,1,9,9,29,629,629,629,629,58,59,'FYAAAA','ACEAAA','AAAAxx'
+9167,2757,1,3,7,7,67,167,1167,4167,9167,134,135,'POAAAA','BCEAAA','HHHHxx'
+751,2758,1,3,1,11,51,751,751,751,751,102,103,'XCAAAA','CCEAAA','OOOOxx'
+1126,2759,0,2,6,6,26,126,1126,1126,1126,52,53,'IRAAAA','DCEAAA','VVVVxx'
+3724,2760,0,0,4,4,24,724,1724,3724,3724,48,49,'GNAAAA','ECEAAA','AAAAxx'
+1789,2761,1,1,9,9,89,789,1789,1789,1789,178,179,'VQAAAA','FCEAAA','HHHHxx'
+792,2762,0,0,2,12,92,792,792,792,792,184,185,'MEAAAA','GCEAAA','OOOOxx'
+2771,2763,1,3,1,11,71,771,771,2771,2771,142,143,'PCAAAA','HCEAAA','VVVVxx'
+4313,2764,1,1,3,13,13,313,313,4313,4313,26,27,'XJAAAA','ICEAAA','AAAAxx'
+9312,2765,0,0,2,12,12,312,1312,4312,9312,24,25,'EUAAAA','JCEAAA','HHHHxx'
+955,2766,1,3,5,15,55,955,955,955,955,110,111,'TKAAAA','KCEAAA','OOOOxx'
+6382,2767,0,2,2,2,82,382,382,1382,6382,164,165,'MLAAAA','LCEAAA','VVVVxx'
+7875,2768,1,3,5,15,75,875,1875,2875,7875,150,151,'XQAAAA','MCEAAA','AAAAxx'
+7491,2769,1,3,1,11,91,491,1491,2491,7491,182,183,'DCAAAA','NCEAAA','HHHHxx'
+8193,2770,1,1,3,13,93,193,193,3193,8193,186,187,'DDAAAA','OCEAAA','OOOOxx'
+968,2771,0,0,8,8,68,968,968,968,968,136,137,'GLAAAA','PCEAAA','VVVVxx'
+4951,2772,1,3,1,11,51,951,951,4951,4951,102,103,'LIAAAA','QCEAAA','AAAAxx'
+2204,2773,0,0,4,4,4,204,204,2204,2204,8,9,'UGAAAA','RCEAAA','HHHHxx'
+2066,2774,0,2,6,6,66,66,66,2066,2066,132,133,'MBAAAA','SCEAAA','OOOOxx'
+2631,2775,1,3,1,11,31,631,631,2631,2631,62,63,'FXAAAA','TCEAAA','VVVVxx'
+8947,2776,1,3,7,7,47,947,947,3947,8947,94,95,'DGAAAA','UCEAAA','AAAAxx'
+8033,2777,1,1,3,13,33,33,33,3033,8033,66,67,'ZWAAAA','VCEAAA','HHHHxx'
+6264,2778,0,0,4,4,64,264,264,1264,6264,128,129,'YGAAAA','WCEAAA','OOOOxx'
+7778,2779,0,2,8,18,78,778,1778,2778,7778,156,157,'ENAAAA','XCEAAA','VVVVxx'
+9701,2780,1,1,1,1,1,701,1701,4701,9701,2,3,'DJAAAA','YCEAAA','AAAAxx'
+5091,2781,1,3,1,11,91,91,1091,91,5091,182,183,'VNAAAA','ZCEAAA','HHHHxx'
+7577,2782,1,1,7,17,77,577,1577,2577,7577,154,155,'LFAAAA','ADEAAA','OOOOxx'
+3345,2783,1,1,5,5,45,345,1345,3345,3345,90,91,'RYAAAA','BDEAAA','VVVVxx'
+7329,2784,1,1,9,9,29,329,1329,2329,7329,58,59,'XVAAAA','CDEAAA','AAAAxx'
+7551,2785,1,3,1,11,51,551,1551,2551,7551,102,103,'LEAAAA','DDEAAA','HHHHxx'
+6207,2786,1,3,7,7,7,207,207,1207,6207,14,15,'TEAAAA','EDEAAA','OOOOxx'
+8664,2787,0,0,4,4,64,664,664,3664,8664,128,129,'GVAAAA','FDEAAA','VVVVxx'
+8394,2788,0,2,4,14,94,394,394,3394,8394,188,189,'WKAAAA','GDEAAA','AAAAxx'
+7324,2789,0,0,4,4,24,324,1324,2324,7324,48,49,'SVAAAA','HDEAAA','HHHHxx'
+2713,2790,1,1,3,13,13,713,713,2713,2713,26,27,'JAAAAA','IDEAAA','OOOOxx'
+2230,2791,0,2,0,10,30,230,230,2230,2230,60,61,'UHAAAA','JDEAAA','VVVVxx'
+9211,2792,1,3,1,11,11,211,1211,4211,9211,22,23,'HQAAAA','KDEAAA','AAAAxx'
+1296,2793,0,0,6,16,96,296,1296,1296,1296,192,193,'WXAAAA','LDEAAA','HHHHxx'
+8104,2794,0,0,4,4,4,104,104,3104,8104,8,9,'SZAAAA','MDEAAA','OOOOxx'
+6916,2795,0,0,6,16,16,916,916,1916,6916,32,33,'AGAAAA','NDEAAA','VVVVxx'
+2208,2796,0,0,8,8,8,208,208,2208,2208,16,17,'YGAAAA','ODEAAA','AAAAxx'
+3935,2797,1,3,5,15,35,935,1935,3935,3935,70,71,'JVAAAA','PDEAAA','HHHHxx'
+7814,2798,0,2,4,14,14,814,1814,2814,7814,28,29,'OOAAAA','QDEAAA','OOOOxx'
+6508,2799,0,0,8,8,8,508,508,1508,6508,16,17,'IQAAAA','RDEAAA','VVVVxx'
+1703,2800,1,3,3,3,3,703,1703,1703,1703,6,7,'NNAAAA','SDEAAA','AAAAxx'
+5640,2801,0,0,0,0,40,640,1640,640,5640,80,81,'YIAAAA','TDEAAA','HHHHxx'
+6417,2802,1,1,7,17,17,417,417,1417,6417,34,35,'VMAAAA','UDEAAA','OOOOxx'
+1713,2803,1,1,3,13,13,713,1713,1713,1713,26,27,'XNAAAA','VDEAAA','VVVVxx'
+5309,2804,1,1,9,9,9,309,1309,309,5309,18,19,'FWAAAA','WDEAAA','AAAAxx'
+4364,2805,0,0,4,4,64,364,364,4364,4364,128,129,'WLAAAA','XDEAAA','HHHHxx'
+619,2806,1,3,9,19,19,619,619,619,619,38,39,'VXAAAA','YDEAAA','OOOOxx'
+9498,2807,0,2,8,18,98,498,1498,4498,9498,196,197,'IBAAAA','ZDEAAA','VVVVxx'
+2804,2808,0,0,4,4,4,804,804,2804,2804,8,9,'WDAAAA','AEEAAA','AAAAxx'
+2220,2809,0,0,0,0,20,220,220,2220,2220,40,41,'KHAAAA','BEEAAA','HHHHxx'
+9542,2810,0,2,2,2,42,542,1542,4542,9542,84,85,'ADAAAA','CEEAAA','OOOOxx'
+3349,2811,1,1,9,9,49,349,1349,3349,3349,98,99,'VYAAAA','DEEAAA','VVVVxx'
+9198,2812,0,2,8,18,98,198,1198,4198,9198,196,197,'UPAAAA','EEEAAA','AAAAxx'
+2727,2813,1,3,7,7,27,727,727,2727,2727,54,55,'XAAAAA','FEEAAA','HHHHxx'
+3768,2814,0,0,8,8,68,768,1768,3768,3768,136,137,'YOAAAA','GEEAAA','OOOOxx'
+2334,2815,0,2,4,14,34,334,334,2334,2334,68,69,'ULAAAA','HEEAAA','VVVVxx'
+7770,2816,0,2,0,10,70,770,1770,2770,7770,140,141,'WMAAAA','IEEAAA','AAAAxx'
+5963,2817,1,3,3,3,63,963,1963,963,5963,126,127,'JVAAAA','JEEAAA','HHHHxx'
+4732,2818,0,0,2,12,32,732,732,4732,4732,64,65,'AAAAAA','KEEAAA','OOOOxx'
+2448,2819,0,0,8,8,48,448,448,2448,2448,96,97,'EQAAAA','LEEAAA','VVVVxx'
+5998,2820,0,2,8,18,98,998,1998,998,5998,196,197,'SWAAAA','MEEAAA','AAAAxx'
+8577,2821,1,1,7,17,77,577,577,3577,8577,154,155,'XRAAAA','NEEAAA','HHHHxx'
+266,2822,0,2,6,6,66,266,266,266,266,132,133,'GKAAAA','OEEAAA','OOOOxx'
+2169,2823,1,1,9,9,69,169,169,2169,2169,138,139,'LFAAAA','PEEAAA','VVVVxx'
+8228,2824,0,0,8,8,28,228,228,3228,8228,56,57,'MEAAAA','QEEAAA','AAAAxx'
+4813,2825,1,1,3,13,13,813,813,4813,4813,26,27,'DDAAAA','REEAAA','HHHHxx'
+2769,2826,1,1,9,9,69,769,769,2769,2769,138,139,'NCAAAA','SEEAAA','OOOOxx'
+8382,2827,0,2,2,2,82,382,382,3382,8382,164,165,'KKAAAA','TEEAAA','VVVVxx'
+1717,2828,1,1,7,17,17,717,1717,1717,1717,34,35,'BOAAAA','UEEAAA','AAAAxx'
+7178,2829,0,2,8,18,78,178,1178,2178,7178,156,157,'CQAAAA','VEEAAA','HHHHxx'
+9547,2830,1,3,7,7,47,547,1547,4547,9547,94,95,'FDAAAA','WEEAAA','OOOOxx'
+8187,2831,1,3,7,7,87,187,187,3187,8187,174,175,'XCAAAA','XEEAAA','VVVVxx'
+3168,2832,0,0,8,8,68,168,1168,3168,3168,136,137,'WRAAAA','YEEAAA','AAAAxx'
+2180,2833,0,0,0,0,80,180,180,2180,2180,160,161,'WFAAAA','ZEEAAA','HHHHxx'
+859,2834,1,3,9,19,59,859,859,859,859,118,119,'BHAAAA','AFEAAA','OOOOxx'
+1554,2835,0,2,4,14,54,554,1554,1554,1554,108,109,'UHAAAA','BFEAAA','VVVVxx'
+3567,2836,1,3,7,7,67,567,1567,3567,3567,134,135,'FHAAAA','CFEAAA','AAAAxx'
+5985,2837,1,1,5,5,85,985,1985,985,5985,170,171,'FWAAAA','DFEAAA','HHHHxx'
+1,2838,1,1,1,1,1,1,1,1,1,2,3,'BAAAAA','EFEAAA','OOOOxx'
+5937,2839,1,1,7,17,37,937,1937,937,5937,74,75,'JUAAAA','FFEAAA','VVVVxx'
+7594,2840,0,2,4,14,94,594,1594,2594,7594,188,189,'CGAAAA','GFEAAA','AAAAxx'
+3783,2841,1,3,3,3,83,783,1783,3783,3783,166,167,'NPAAAA','HFEAAA','HHHHxx'
+6841,2842,1,1,1,1,41,841,841,1841,6841,82,83,'DDAAAA','IFEAAA','OOOOxx'
+9694,2843,0,2,4,14,94,694,1694,4694,9694,188,189,'WIAAAA','JFEAAA','VVVVxx'
+4322,2844,0,2,2,2,22,322,322,4322,4322,44,45,'GKAAAA','KFEAAA','AAAAxx'
+6012,2845,0,0,2,12,12,12,12,1012,6012,24,25,'GXAAAA','LFEAAA','HHHHxx'
+108,2846,0,0,8,8,8,108,108,108,108,16,17,'EEAAAA','MFEAAA','OOOOxx'
+3396,2847,0,0,6,16,96,396,1396,3396,3396,192,193,'QAAAAA','NFEAAA','VVVVxx'
+8643,2848,1,3,3,3,43,643,643,3643,8643,86,87,'LUAAAA','OFEAAA','AAAAxx'
+6087,2849,1,3,7,7,87,87,87,1087,6087,174,175,'DAAAAA','PFEAAA','HHHHxx'
+2629,2850,1,1,9,9,29,629,629,2629,2629,58,59,'DXAAAA','QFEAAA','OOOOxx'
+3009,2851,1,1,9,9,9,9,1009,3009,3009,18,19,'TLAAAA','RFEAAA','VVVVxx'
+438,2852,0,2,8,18,38,438,438,438,438,76,77,'WQAAAA','SFEAAA','AAAAxx'
+2480,2853,0,0,0,0,80,480,480,2480,2480,160,161,'KRAAAA','TFEAAA','HHHHxx'
+936,2854,0,0,6,16,36,936,936,936,936,72,73,'AKAAAA','UFEAAA','OOOOxx'
+6,2855,0,2,6,6,6,6,6,6,6,12,13,'GAAAAA','VFEAAA','VVVVxx'
+768,2856,0,0,8,8,68,768,768,768,768,136,137,'ODAAAA','WFEAAA','AAAAxx'
+1564,2857,0,0,4,4,64,564,1564,1564,1564,128,129,'EIAAAA','XFEAAA','HHHHxx'
+3236,2858,0,0,6,16,36,236,1236,3236,3236,72,73,'MUAAAA','YFEAAA','OOOOxx'
+3932,2859,0,0,2,12,32,932,1932,3932,3932,64,65,'GVAAAA','ZFEAAA','VVVVxx'
+8914,2860,0,2,4,14,14,914,914,3914,8914,28,29,'WEAAAA','AGEAAA','AAAAxx'
+119,2861,1,3,9,19,19,119,119,119,119,38,39,'PEAAAA','BGEAAA','HHHHxx'
+6034,2862,0,2,4,14,34,34,34,1034,6034,68,69,'CYAAAA','CGEAAA','OOOOxx'
+5384,2863,0,0,4,4,84,384,1384,384,5384,168,169,'CZAAAA','DGEAAA','VVVVxx'
+6885,2864,1,1,5,5,85,885,885,1885,6885,170,171,'VEAAAA','EGEAAA','AAAAxx'
+232,2865,0,0,2,12,32,232,232,232,232,64,65,'YIAAAA','FGEAAA','HHHHxx'
+1293,2866,1,1,3,13,93,293,1293,1293,1293,186,187,'TXAAAA','GGEAAA','OOOOxx'
+9204,2867,0,0,4,4,4,204,1204,4204,9204,8,9,'AQAAAA','HGEAAA','VVVVxx'
+527,2868,1,3,7,7,27,527,527,527,527,54,55,'HUAAAA','IGEAAA','AAAAxx'
+6539,2869,1,3,9,19,39,539,539,1539,6539,78,79,'NRAAAA','JGEAAA','HHHHxx'
+3679,2870,1,3,9,19,79,679,1679,3679,3679,158,159,'NLAAAA','KGEAAA','OOOOxx'
+8282,2871,0,2,2,2,82,282,282,3282,8282,164,165,'OGAAAA','LGEAAA','VVVVxx'
+5027,2872,1,3,7,7,27,27,1027,27,5027,54,55,'JLAAAA','MGEAAA','AAAAxx'
+7694,2873,0,2,4,14,94,694,1694,2694,7694,188,189,'YJAAAA','NGEAAA','HHHHxx'
+473,2874,1,1,3,13,73,473,473,473,473,146,147,'FSAAAA','OGEAAA','OOOOxx'
+6325,2875,1,1,5,5,25,325,325,1325,6325,50,51,'HJAAAA','PGEAAA','VVVVxx'
+8761,2876,1,1,1,1,61,761,761,3761,8761,122,123,'ZYAAAA','QGEAAA','AAAAxx'
+6184,2877,0,0,4,4,84,184,184,1184,6184,168,169,'WDAAAA','RGEAAA','HHHHxx'
+419,2878,1,3,9,19,19,419,419,419,419,38,39,'DQAAAA','SGEAAA','OOOOxx'
+6111,2879,1,3,1,11,11,111,111,1111,6111,22,23,'BBAAAA','TGEAAA','VVVVxx'
+3836,2880,0,0,6,16,36,836,1836,3836,3836,72,73,'ORAAAA','UGEAAA','AAAAxx'
+4086,2881,0,2,6,6,86,86,86,4086,4086,172,173,'EBAAAA','VGEAAA','HHHHxx'
+5818,2882,0,2,8,18,18,818,1818,818,5818,36,37,'UPAAAA','WGEAAA','OOOOxx'
+4528,2883,0,0,8,8,28,528,528,4528,4528,56,57,'ESAAAA','XGEAAA','VVVVxx'
+7199,2884,1,3,9,19,99,199,1199,2199,7199,198,199,'XQAAAA','YGEAAA','AAAAxx'
+1847,2885,1,3,7,7,47,847,1847,1847,1847,94,95,'BTAAAA','ZGEAAA','HHHHxx'
+2875,2886,1,3,5,15,75,875,875,2875,2875,150,151,'PGAAAA','AHEAAA','OOOOxx'
+2872,2887,0,0,2,12,72,872,872,2872,2872,144,145,'MGAAAA','BHEAAA','VVVVxx'
+3972,2888,0,0,2,12,72,972,1972,3972,3972,144,145,'UWAAAA','CHEAAA','AAAAxx'
+7590,2889,0,2,0,10,90,590,1590,2590,7590,180,181,'YFAAAA','DHEAAA','HHHHxx'
+1914,2890,0,2,4,14,14,914,1914,1914,1914,28,29,'QVAAAA','EHEAAA','OOOOxx'
+1658,2891,0,2,8,18,58,658,1658,1658,1658,116,117,'ULAAAA','FHEAAA','VVVVxx'
+2126,2892,0,2,6,6,26,126,126,2126,2126,52,53,'UDAAAA','GHEAAA','AAAAxx'
+645,2893,1,1,5,5,45,645,645,645,645,90,91,'VYAAAA','HHEAAA','HHHHxx'
+6636,2894,0,0,6,16,36,636,636,1636,6636,72,73,'GVAAAA','IHEAAA','OOOOxx'
+1469,2895,1,1,9,9,69,469,1469,1469,1469,138,139,'NEAAAA','JHEAAA','VVVVxx'
+1377,2896,1,1,7,17,77,377,1377,1377,1377,154,155,'ZAAAAA','KHEAAA','AAAAxx'
+8425,2897,1,1,5,5,25,425,425,3425,8425,50,51,'BMAAAA','LHEAAA','HHHHxx'
+9300,2898,0,0,0,0,0,300,1300,4300,9300,0,1,'STAAAA','MHEAAA','OOOOxx'
+5355,2899,1,3,5,15,55,355,1355,355,5355,110,111,'ZXAAAA','NHEAAA','VVVVxx'
+840,2900,0,0,0,0,40,840,840,840,840,80,81,'IGAAAA','OHEAAA','AAAAxx'
+5185,2901,1,1,5,5,85,185,1185,185,5185,170,171,'LRAAAA','PHEAAA','HHHHxx'
+6467,2902,1,3,7,7,67,467,467,1467,6467,134,135,'TOAAAA','QHEAAA','OOOOxx'
+58,2903,0,2,8,18,58,58,58,58,58,116,117,'GCAAAA','RHEAAA','VVVVxx'
+5051,2904,1,3,1,11,51,51,1051,51,5051,102,103,'HMAAAA','SHEAAA','AAAAxx'
+8901,2905,1,1,1,1,1,901,901,3901,8901,2,3,'JEAAAA','THEAAA','HHHHxx'
+1550,2906,0,2,0,10,50,550,1550,1550,1550,100,101,'QHAAAA','UHEAAA','OOOOxx'
+1698,2907,0,2,8,18,98,698,1698,1698,1698,196,197,'INAAAA','VHEAAA','VVVVxx'
+802,2908,0,2,2,2,2,802,802,802,802,4,5,'WEAAAA','WHEAAA','AAAAxx'
+2440,2909,0,0,0,0,40,440,440,2440,2440,80,81,'WPAAAA','XHEAAA','HHHHxx'
+2260,2910,0,0,0,0,60,260,260,2260,2260,120,121,'YIAAAA','YHEAAA','OOOOxx'
+8218,2911,0,2,8,18,18,218,218,3218,8218,36,37,'CEAAAA','ZHEAAA','VVVVxx'
+5144,2912,0,0,4,4,44,144,1144,144,5144,88,89,'WPAAAA','AIEAAA','AAAAxx'
+4822,2913,0,2,2,2,22,822,822,4822,4822,44,45,'MDAAAA','BIEAAA','HHHHxx'
+9476,2914,0,0,6,16,76,476,1476,4476,9476,152,153,'MAAAAA','CIEAAA','OOOOxx'
+7535,2915,1,3,5,15,35,535,1535,2535,7535,70,71,'VDAAAA','DIEAAA','VVVVxx'
+8738,2916,0,2,8,18,38,738,738,3738,8738,76,77,'CYAAAA','EIEAAA','AAAAxx'
+7946,2917,0,2,6,6,46,946,1946,2946,7946,92,93,'QTAAAA','FIEAAA','HHHHxx'
+8143,2918,1,3,3,3,43,143,143,3143,8143,86,87,'FBAAAA','GIEAAA','OOOOxx'
+2623,2919,1,3,3,3,23,623,623,2623,2623,46,47,'XWAAAA','HIEAAA','VVVVxx'
+5209,2920,1,1,9,9,9,209,1209,209,5209,18,19,'JSAAAA','IIEAAA','AAAAxx'
+7674,2921,0,2,4,14,74,674,1674,2674,7674,148,149,'EJAAAA','JIEAAA','HHHHxx'
+1135,2922,1,3,5,15,35,135,1135,1135,1135,70,71,'RRAAAA','KIEAAA','OOOOxx'
+424,2923,0,0,4,4,24,424,424,424,424,48,49,'IQAAAA','LIEAAA','VVVVxx'
+942,2924,0,2,2,2,42,942,942,942,942,84,85,'GKAAAA','MIEAAA','AAAAxx'
+7813,2925,1,1,3,13,13,813,1813,2813,7813,26,27,'NOAAAA','NIEAAA','HHHHxx'
+3539,2926,1,3,9,19,39,539,1539,3539,3539,78,79,'DGAAAA','OIEAAA','OOOOxx'
+2909,2927,1,1,9,9,9,909,909,2909,2909,18,19,'XHAAAA','PIEAAA','VVVVxx'
+3748,2928,0,0,8,8,48,748,1748,3748,3748,96,97,'EOAAAA','QIEAAA','AAAAxx'
+2996,2929,0,0,6,16,96,996,996,2996,2996,192,193,'GLAAAA','RIEAAA','HHHHxx'
+1869,2930,1,1,9,9,69,869,1869,1869,1869,138,139,'XTAAAA','SIEAAA','OOOOxx'
+8151,2931,1,3,1,11,51,151,151,3151,8151,102,103,'NBAAAA','TIEAAA','VVVVxx'
+6361,2932,1,1,1,1,61,361,361,1361,6361,122,123,'RKAAAA','UIEAAA','AAAAxx'
+5568,2933,0,0,8,8,68,568,1568,568,5568,136,137,'EGAAAA','VIEAAA','HHHHxx'
+2796,2934,0,0,6,16,96,796,796,2796,2796,192,193,'ODAAAA','WIEAAA','OOOOxx'
+8489,2935,1,1,9,9,89,489,489,3489,8489,178,179,'NOAAAA','XIEAAA','VVVVxx'
+9183,2936,1,3,3,3,83,183,1183,4183,9183,166,167,'FPAAAA','YIEAAA','AAAAxx'
+8227,2937,1,3,7,7,27,227,227,3227,8227,54,55,'LEAAAA','ZIEAAA','HHHHxx'
+1844,2938,0,0,4,4,44,844,1844,1844,1844,88,89,'YSAAAA','AJEAAA','OOOOxx'
+3975,2939,1,3,5,15,75,975,1975,3975,3975,150,151,'XWAAAA','BJEAAA','VVVVxx'
+6490,2940,0,2,0,10,90,490,490,1490,6490,180,181,'QPAAAA','CJEAAA','AAAAxx'
+8303,2941,1,3,3,3,3,303,303,3303,8303,6,7,'JHAAAA','DJEAAA','HHHHxx'
+7334,2942,0,2,4,14,34,334,1334,2334,7334,68,69,'CWAAAA','EJEAAA','OOOOxx'
+2382,2943,0,2,2,2,82,382,382,2382,2382,164,165,'QNAAAA','FJEAAA','VVVVxx'
+177,2944,1,1,7,17,77,177,177,177,177,154,155,'VGAAAA','GJEAAA','AAAAxx'
+8117,2945,1,1,7,17,17,117,117,3117,8117,34,35,'FAAAAA','HJEAAA','HHHHxx'
+5485,2946,1,1,5,5,85,485,1485,485,5485,170,171,'ZCAAAA','IJEAAA','OOOOxx'
+6544,2947,0,0,4,4,44,544,544,1544,6544,88,89,'SRAAAA','JJEAAA','VVVVxx'
+8517,2948,1,1,7,17,17,517,517,3517,8517,34,35,'PPAAAA','KJEAAA','AAAAxx'
+2252,2949,0,0,2,12,52,252,252,2252,2252,104,105,'QIAAAA','LJEAAA','HHHHxx'
+4480,2950,0,0,0,0,80,480,480,4480,4480,160,161,'IQAAAA','MJEAAA','OOOOxx'
+4785,2951,1,1,5,5,85,785,785,4785,4785,170,171,'BCAAAA','NJEAAA','VVVVxx'
+9700,2952,0,0,0,0,0,700,1700,4700,9700,0,1,'CJAAAA','OJEAAA','AAAAxx'
+2122,2953,0,2,2,2,22,122,122,2122,2122,44,45,'QDAAAA','PJEAAA','HHHHxx'
+8783,2954,1,3,3,3,83,783,783,3783,8783,166,167,'VZAAAA','QJEAAA','OOOOxx'
+1453,2955,1,1,3,13,53,453,1453,1453,1453,106,107,'XDAAAA','RJEAAA','VVVVxx'
+3908,2956,0,0,8,8,8,908,1908,3908,3908,16,17,'IUAAAA','SJEAAA','AAAAxx'
+7707,2957,1,3,7,7,7,707,1707,2707,7707,14,15,'LKAAAA','TJEAAA','HHHHxx'
+9049,2958,1,1,9,9,49,49,1049,4049,9049,98,99,'BKAAAA','UJEAAA','OOOOxx'
+654,2959,0,2,4,14,54,654,654,654,654,108,109,'EZAAAA','VJEAAA','VVVVxx'
+3336,2960,0,0,6,16,36,336,1336,3336,3336,72,73,'IYAAAA','WJEAAA','AAAAxx'
+622,2961,0,2,2,2,22,622,622,622,622,44,45,'YXAAAA','XJEAAA','HHHHxx'
+8398,2962,0,2,8,18,98,398,398,3398,8398,196,197,'ALAAAA','YJEAAA','OOOOxx'
+9193,2963,1,1,3,13,93,193,1193,4193,9193,186,187,'PPAAAA','ZJEAAA','VVVVxx'
+7896,2964,0,0,6,16,96,896,1896,2896,7896,192,193,'SRAAAA','AKEAAA','AAAAxx'
+9798,2965,0,2,8,18,98,798,1798,4798,9798,196,197,'WMAAAA','BKEAAA','HHHHxx'
+2881,2966,1,1,1,1,81,881,881,2881,2881,162,163,'VGAAAA','CKEAAA','OOOOxx'
+672,2967,0,0,2,12,72,672,672,672,672,144,145,'WZAAAA','DKEAAA','VVVVxx'
+6743,2968,1,3,3,3,43,743,743,1743,6743,86,87,'JZAAAA','EKEAAA','AAAAxx'
+8935,2969,1,3,5,15,35,935,935,3935,8935,70,71,'RFAAAA','FKEAAA','HHHHxx'
+2426,2970,0,2,6,6,26,426,426,2426,2426,52,53,'IPAAAA','GKEAAA','OOOOxx'
+722,2971,0,2,2,2,22,722,722,722,722,44,45,'UBAAAA','HKEAAA','VVVVxx'
+5088,2972,0,0,8,8,88,88,1088,88,5088,176,177,'SNAAAA','IKEAAA','AAAAxx'
+8677,2973,1,1,7,17,77,677,677,3677,8677,154,155,'TVAAAA','JKEAAA','HHHHxx'
+6963,2974,1,3,3,3,63,963,963,1963,6963,126,127,'VHAAAA','KKEAAA','OOOOxx'
+1653,2975,1,1,3,13,53,653,1653,1653,1653,106,107,'PLAAAA','LKEAAA','VVVVxx'
+7295,2976,1,3,5,15,95,295,1295,2295,7295,190,191,'PUAAAA','MKEAAA','AAAAxx'
+6675,2977,1,3,5,15,75,675,675,1675,6675,150,151,'TWAAAA','NKEAAA','HHHHxx'
+7183,2978,1,3,3,3,83,183,1183,2183,7183,166,167,'HQAAAA','OKEAAA','OOOOxx'
+4378,2979,0,2,8,18,78,378,378,4378,4378,156,157,'KMAAAA','PKEAAA','VVVVxx'
+2157,2980,1,1,7,17,57,157,157,2157,2157,114,115,'ZEAAAA','QKEAAA','AAAAxx'
+2621,2981,1,1,1,1,21,621,621,2621,2621,42,43,'VWAAAA','RKEAAA','HHHHxx'
+9278,2982,0,2,8,18,78,278,1278,4278,9278,156,157,'WSAAAA','SKEAAA','OOOOxx'
+79,2983,1,3,9,19,79,79,79,79,79,158,159,'BDAAAA','TKEAAA','VVVVxx'
+7358,2984,0,2,8,18,58,358,1358,2358,7358,116,117,'AXAAAA','UKEAAA','AAAAxx'
+3589,2985,1,1,9,9,89,589,1589,3589,3589,178,179,'BIAAAA','VKEAAA','HHHHxx'
+1254,2986,0,2,4,14,54,254,1254,1254,1254,108,109,'GWAAAA','WKEAAA','OOOOxx'
+3490,2987,0,2,0,10,90,490,1490,3490,3490,180,181,'GEAAAA','XKEAAA','VVVVxx'
+7533,2988,1,1,3,13,33,533,1533,2533,7533,66,67,'TDAAAA','YKEAAA','AAAAxx'
+2800,2989,0,0,0,0,0,800,800,2800,2800,0,1,'SDAAAA','ZKEAAA','HHHHxx'
+351,2990,1,3,1,11,51,351,351,351,351,102,103,'NNAAAA','ALEAAA','OOOOxx'
+4359,2991,1,3,9,19,59,359,359,4359,4359,118,119,'RLAAAA','BLEAAA','VVVVxx'
+5788,2992,0,0,8,8,88,788,1788,788,5788,176,177,'QOAAAA','CLEAAA','AAAAxx'
+5521,2993,1,1,1,1,21,521,1521,521,5521,42,43,'JEAAAA','DLEAAA','HHHHxx'
+3351,2994,1,3,1,11,51,351,1351,3351,3351,102,103,'XYAAAA','ELEAAA','OOOOxx'
+5129,2995,1,1,9,9,29,129,1129,129,5129,58,59,'HPAAAA','FLEAAA','VVVVxx'
+315,2996,1,3,5,15,15,315,315,315,315,30,31,'DMAAAA','GLEAAA','AAAAxx'
+7552,2997,0,0,2,12,52,552,1552,2552,7552,104,105,'MEAAAA','HLEAAA','HHHHxx'
+9176,2998,0,0,6,16,76,176,1176,4176,9176,152,153,'YOAAAA','ILEAAA','OOOOxx'
+7458,2999,0,2,8,18,58,458,1458,2458,7458,116,117,'WAAAAA','JLEAAA','VVVVxx'
+279,3000,1,3,9,19,79,279,279,279,279,158,159,'TKAAAA','KLEAAA','AAAAxx'
+738,3001,0,2,8,18,38,738,738,738,738,76,77,'KCAAAA','LLEAAA','HHHHxx'
+2557,3002,1,1,7,17,57,557,557,2557,2557,114,115,'JUAAAA','MLEAAA','OOOOxx'
+9395,3003,1,3,5,15,95,395,1395,4395,9395,190,191,'JXAAAA','NLEAAA','VVVVxx'
+7214,3004,0,2,4,14,14,214,1214,2214,7214,28,29,'MRAAAA','OLEAAA','AAAAxx'
+6354,3005,0,2,4,14,54,354,354,1354,6354,108,109,'KKAAAA','PLEAAA','HHHHxx'
+4799,3006,1,3,9,19,99,799,799,4799,4799,198,199,'PCAAAA','QLEAAA','OOOOxx'
+1231,3007,1,3,1,11,31,231,1231,1231,1231,62,63,'JVAAAA','RLEAAA','VVVVxx'
+5252,3008,0,0,2,12,52,252,1252,252,5252,104,105,'AUAAAA','SLEAAA','AAAAxx'
+5250,3009,0,2,0,10,50,250,1250,250,5250,100,101,'YTAAAA','TLEAAA','HHHHxx'
+9319,3010,1,3,9,19,19,319,1319,4319,9319,38,39,'LUAAAA','ULEAAA','OOOOxx'
+1724,3011,0,0,4,4,24,724,1724,1724,1724,48,49,'IOAAAA','VLEAAA','VVVVxx'
+7947,3012,1,3,7,7,47,947,1947,2947,7947,94,95,'RTAAAA','WLEAAA','AAAAxx'
+1105,3013,1,1,5,5,5,105,1105,1105,1105,10,11,'NQAAAA','XLEAAA','HHHHxx'
+1417,3014,1,1,7,17,17,417,1417,1417,1417,34,35,'NCAAAA','YLEAAA','OOOOxx'
+7101,3015,1,1,1,1,1,101,1101,2101,7101,2,3,'DNAAAA','ZLEAAA','VVVVxx'
+1088,3016,0,0,8,8,88,88,1088,1088,1088,176,177,'WPAAAA','AMEAAA','AAAAxx'
+979,3017,1,3,9,19,79,979,979,979,979,158,159,'RLAAAA','BMEAAA','HHHHxx'
+7589,3018,1,1,9,9,89,589,1589,2589,7589,178,179,'XFAAAA','CMEAAA','OOOOxx'
+8952,3019,0,0,2,12,52,952,952,3952,8952,104,105,'IGAAAA','DMEAAA','VVVVxx'
+2864,3020,0,0,4,4,64,864,864,2864,2864,128,129,'EGAAAA','EMEAAA','AAAAxx'
+234,3021,0,2,4,14,34,234,234,234,234,68,69,'AJAAAA','FMEAAA','HHHHxx'
+7231,3022,1,3,1,11,31,231,1231,2231,7231,62,63,'DSAAAA','GMEAAA','OOOOxx'
+6792,3023,0,0,2,12,92,792,792,1792,6792,184,185,'GBAAAA','HMEAAA','VVVVxx'
+4311,3024,1,3,1,11,11,311,311,4311,4311,22,23,'VJAAAA','IMEAAA','AAAAxx'
+3374,3025,0,2,4,14,74,374,1374,3374,3374,148,149,'UZAAAA','JMEAAA','HHHHxx'
+3367,3026,1,3,7,7,67,367,1367,3367,3367,134,135,'NZAAAA','KMEAAA','OOOOxx'
+2598,3027,0,2,8,18,98,598,598,2598,2598,196,197,'YVAAAA','LMEAAA','VVVVxx'
+1033,3028,1,1,3,13,33,33,1033,1033,1033,66,67,'TNAAAA','MMEAAA','AAAAxx'
+7803,3029,1,3,3,3,3,803,1803,2803,7803,6,7,'DOAAAA','NMEAAA','HHHHxx'
+3870,3030,0,2,0,10,70,870,1870,3870,3870,140,141,'WSAAAA','OMEAAA','OOOOxx'
+4962,3031,0,2,2,2,62,962,962,4962,4962,124,125,'WIAAAA','PMEAAA','VVVVxx'
+4842,3032,0,2,2,2,42,842,842,4842,4842,84,85,'GEAAAA','QMEAAA','AAAAxx'
+8814,3033,0,2,4,14,14,814,814,3814,8814,28,29,'ABAAAA','RMEAAA','HHHHxx'
+3429,3034,1,1,9,9,29,429,1429,3429,3429,58,59,'XBAAAA','SMEAAA','OOOOxx'
+6550,3035,0,2,0,10,50,550,550,1550,6550,100,101,'YRAAAA','TMEAAA','VVVVxx'
+6317,3036,1,1,7,17,17,317,317,1317,6317,34,35,'ZIAAAA','UMEAAA','AAAAxx'
+5023,3037,1,3,3,3,23,23,1023,23,5023,46,47,'FLAAAA','VMEAAA','HHHHxx'
+5825,3038,1,1,5,5,25,825,1825,825,5825,50,51,'BQAAAA','WMEAAA','OOOOxx'
+5297,3039,1,1,7,17,97,297,1297,297,5297,194,195,'TVAAAA','XMEAAA','VVVVxx'
+8764,3040,0,0,4,4,64,764,764,3764,8764,128,129,'CZAAAA','YMEAAA','AAAAxx'
+5084,3041,0,0,4,4,84,84,1084,84,5084,168,169,'ONAAAA','ZMEAAA','HHHHxx'
+6808,3042,0,0,8,8,8,808,808,1808,6808,16,17,'WBAAAA','ANEAAA','OOOOxx'
+1780,3043,0,0,0,0,80,780,1780,1780,1780,160,161,'MQAAAA','BNEAAA','VVVVxx'
+4092,3044,0,0,2,12,92,92,92,4092,4092,184,185,'KBAAAA','CNEAAA','AAAAxx'
+3618,3045,0,2,8,18,18,618,1618,3618,3618,36,37,'EJAAAA','DNEAAA','HHHHxx'
+7299,3046,1,3,9,19,99,299,1299,2299,7299,198,199,'TUAAAA','ENEAAA','OOOOxx'
+8544,3047,0,0,4,4,44,544,544,3544,8544,88,89,'QQAAAA','FNEAAA','VVVVxx'
+2359,3048,1,3,9,19,59,359,359,2359,2359,118,119,'TMAAAA','GNEAAA','AAAAxx'
+1939,3049,1,3,9,19,39,939,1939,1939,1939,78,79,'PWAAAA','HNEAAA','HHHHxx'
+5834,3050,0,2,4,14,34,834,1834,834,5834,68,69,'KQAAAA','INEAAA','OOOOxx'
+1997,3051,1,1,7,17,97,997,1997,1997,1997,194,195,'VYAAAA','JNEAAA','VVVVxx'
+7917,3052,1,1,7,17,17,917,1917,2917,7917,34,35,'NSAAAA','KNEAAA','AAAAxx'
+2098,3053,0,2,8,18,98,98,98,2098,2098,196,197,'SCAAAA','LNEAAA','HHHHxx'
+7576,3054,0,0,6,16,76,576,1576,2576,7576,152,153,'KFAAAA','MNEAAA','OOOOxx'
+376,3055,0,0,6,16,76,376,376,376,376,152,153,'MOAAAA','NNEAAA','VVVVxx'
+8535,3056,1,3,5,15,35,535,535,3535,8535,70,71,'HQAAAA','ONEAAA','AAAAxx'
+5659,3057,1,3,9,19,59,659,1659,659,5659,118,119,'RJAAAA','PNEAAA','HHHHxx'
+2786,3058,0,2,6,6,86,786,786,2786,2786,172,173,'EDAAAA','QNEAAA','OOOOxx'
+8820,3059,0,0,0,0,20,820,820,3820,8820,40,41,'GBAAAA','RNEAAA','VVVVxx'
+1229,3060,1,1,9,9,29,229,1229,1229,1229,58,59,'HVAAAA','SNEAAA','AAAAxx'
+9321,3061,1,1,1,1,21,321,1321,4321,9321,42,43,'NUAAAA','TNEAAA','HHHHxx'
+7662,3062,0,2,2,2,62,662,1662,2662,7662,124,125,'SIAAAA','UNEAAA','OOOOxx'
+5535,3063,1,3,5,15,35,535,1535,535,5535,70,71,'XEAAAA','VNEAAA','VVVVxx'
+4889,3064,1,1,9,9,89,889,889,4889,4889,178,179,'BGAAAA','WNEAAA','AAAAxx'
+8259,3065,1,3,9,19,59,259,259,3259,8259,118,119,'RFAAAA','XNEAAA','HHHHxx'
+6789,3066,1,1,9,9,89,789,789,1789,6789,178,179,'DBAAAA','YNEAAA','OOOOxx'
+5411,3067,1,3,1,11,11,411,1411,411,5411,22,23,'DAAAAA','ZNEAAA','VVVVxx'
+6992,3068,0,0,2,12,92,992,992,1992,6992,184,185,'YIAAAA','AOEAAA','AAAAxx'
+7698,3069,0,2,8,18,98,698,1698,2698,7698,196,197,'CKAAAA','BOEAAA','HHHHxx'
+2342,3070,0,2,2,2,42,342,342,2342,2342,84,85,'CMAAAA','COEAAA','OOOOxx'
+1501,3071,1,1,1,1,1,501,1501,1501,1501,2,3,'TFAAAA','DOEAAA','VVVVxx'
+6322,3072,0,2,2,2,22,322,322,1322,6322,44,45,'EJAAAA','EOEAAA','AAAAxx'
+9861,3073,1,1,1,1,61,861,1861,4861,9861,122,123,'HPAAAA','FOEAAA','HHHHxx'
+9802,3074,0,2,2,2,2,802,1802,4802,9802,4,5,'ANAAAA','GOEAAA','OOOOxx'
+4750,3075,0,2,0,10,50,750,750,4750,4750,100,101,'SAAAAA','HOEAAA','VVVVxx'
+5855,3076,1,3,5,15,55,855,1855,855,5855,110,111,'FRAAAA','IOEAAA','AAAAxx'
+4304,3077,0,0,4,4,4,304,304,4304,4304,8,9,'OJAAAA','JOEAAA','HHHHxx'
+2605,3078,1,1,5,5,5,605,605,2605,2605,10,11,'FWAAAA','KOEAAA','OOOOxx'
+1802,3079,0,2,2,2,2,802,1802,1802,1802,4,5,'IRAAAA','LOEAAA','VVVVxx'
+9368,3080,0,0,8,8,68,368,1368,4368,9368,136,137,'IWAAAA','MOEAAA','AAAAxx'
+7107,3081,1,3,7,7,7,107,1107,2107,7107,14,15,'JNAAAA','NOEAAA','HHHHxx'
+8895,3082,1,3,5,15,95,895,895,3895,8895,190,191,'DEAAAA','OOEAAA','OOOOxx'
+3750,3083,0,2,0,10,50,750,1750,3750,3750,100,101,'GOAAAA','POEAAA','VVVVxx'
+8934,3084,0,2,4,14,34,934,934,3934,8934,68,69,'QFAAAA','QOEAAA','AAAAxx'
+9464,3085,0,0,4,4,64,464,1464,4464,9464,128,129,'AAAAAA','ROEAAA','HHHHxx'
+1928,3086,0,0,8,8,28,928,1928,1928,1928,56,57,'EWAAAA','SOEAAA','OOOOxx'
+3196,3087,0,0,6,16,96,196,1196,3196,3196,192,193,'YSAAAA','TOEAAA','VVVVxx'
+5256,3088,0,0,6,16,56,256,1256,256,5256,112,113,'EUAAAA','UOEAAA','AAAAxx'
+7119,3089,1,3,9,19,19,119,1119,2119,7119,38,39,'VNAAAA','VOEAAA','HHHHxx'
+4495,3090,1,3,5,15,95,495,495,4495,4495,190,191,'XQAAAA','WOEAAA','OOOOxx'
+9292,3091,0,0,2,12,92,292,1292,4292,9292,184,185,'KTAAAA','XOEAAA','VVVVxx'
+1617,3092,1,1,7,17,17,617,1617,1617,1617,34,35,'FKAAAA','YOEAAA','AAAAxx'
+481,3093,1,1,1,1,81,481,481,481,481,162,163,'NSAAAA','ZOEAAA','HHHHxx'
+56,3094,0,0,6,16,56,56,56,56,56,112,113,'ECAAAA','APEAAA','OOOOxx'
+9120,3095,0,0,0,0,20,120,1120,4120,9120,40,41,'UMAAAA','BPEAAA','VVVVxx'
+1306,3096,0,2,6,6,6,306,1306,1306,1306,12,13,'GYAAAA','CPEAAA','AAAAxx'
+7773,3097,1,1,3,13,73,773,1773,2773,7773,146,147,'ZMAAAA','DPEAAA','HHHHxx'
+4863,3098,1,3,3,3,63,863,863,4863,4863,126,127,'BFAAAA','EPEAAA','OOOOxx'
+1114,3099,0,2,4,14,14,114,1114,1114,1114,28,29,'WQAAAA','FPEAAA','VVVVxx'
+8124,3100,0,0,4,4,24,124,124,3124,8124,48,49,'MAAAAA','GPEAAA','AAAAxx'
+6254,3101,0,2,4,14,54,254,254,1254,6254,108,109,'OGAAAA','HPEAAA','HHHHxx'
+8109,3102,1,1,9,9,9,109,109,3109,8109,18,19,'XZAAAA','IPEAAA','OOOOxx'
+1747,3103,1,3,7,7,47,747,1747,1747,1747,94,95,'FPAAAA','JPEAAA','VVVVxx'
+6185,3104,1,1,5,5,85,185,185,1185,6185,170,171,'XDAAAA','KPEAAA','AAAAxx'
+3388,3105,0,0,8,8,88,388,1388,3388,3388,176,177,'IAAAAA','LPEAAA','HHHHxx'
+4905,3106,1,1,5,5,5,905,905,4905,4905,10,11,'RGAAAA','MPEAAA','OOOOxx'
+5728,3107,0,0,8,8,28,728,1728,728,5728,56,57,'IMAAAA','NPEAAA','VVVVxx'
+7507,3108,1,3,7,7,7,507,1507,2507,7507,14,15,'TCAAAA','OPEAAA','AAAAxx'
+5662,3109,0,2,2,2,62,662,1662,662,5662,124,125,'UJAAAA','PPEAAA','HHHHxx'
+1686,3110,0,2,6,6,86,686,1686,1686,1686,172,173,'WMAAAA','QPEAAA','OOOOxx'
+5202,3111,0,2,2,2,2,202,1202,202,5202,4,5,'CSAAAA','RPEAAA','VVVVxx'
+6905,3112,1,1,5,5,5,905,905,1905,6905,10,11,'PFAAAA','SPEAAA','AAAAxx'
+9577,3113,1,1,7,17,77,577,1577,4577,9577,154,155,'JEAAAA','TPEAAA','HHHHxx'
+7194,3114,0,2,4,14,94,194,1194,2194,7194,188,189,'SQAAAA','UPEAAA','OOOOxx'
+7016,3115,0,0,6,16,16,16,1016,2016,7016,32,33,'WJAAAA','VPEAAA','VVVVxx'
+8905,3116,1,1,5,5,5,905,905,3905,8905,10,11,'NEAAAA','WPEAAA','AAAAxx'
+3419,3117,1,3,9,19,19,419,1419,3419,3419,38,39,'NBAAAA','XPEAAA','HHHHxx'
+6881,3118,1,1,1,1,81,881,881,1881,6881,162,163,'REAAAA','YPEAAA','OOOOxx'
+8370,3119,0,2,0,10,70,370,370,3370,8370,140,141,'YJAAAA','ZPEAAA','VVVVxx'
+6117,3120,1,1,7,17,17,117,117,1117,6117,34,35,'HBAAAA','AQEAAA','AAAAxx'
+1636,3121,0,0,6,16,36,636,1636,1636,1636,72,73,'YKAAAA','BQEAAA','HHHHxx'
+6857,3122,1,1,7,17,57,857,857,1857,6857,114,115,'TDAAAA','CQEAAA','OOOOxx'
+7163,3123,1,3,3,3,63,163,1163,2163,7163,126,127,'NPAAAA','DQEAAA','VVVVxx'
+5040,3124,0,0,0,0,40,40,1040,40,5040,80,81,'WLAAAA','EQEAAA','AAAAxx'
+6263,3125,1,3,3,3,63,263,263,1263,6263,126,127,'XGAAAA','FQEAAA','HHHHxx'
+4809,3126,1,1,9,9,9,809,809,4809,4809,18,19,'ZCAAAA','GQEAAA','OOOOxx'
+900,3127,0,0,0,0,0,900,900,900,900,0,1,'QIAAAA','HQEAAA','VVVVxx'
+3199,3128,1,3,9,19,99,199,1199,3199,3199,198,199,'BTAAAA','IQEAAA','AAAAxx'
+4156,3129,0,0,6,16,56,156,156,4156,4156,112,113,'WDAAAA','JQEAAA','HHHHxx'
+3501,3130,1,1,1,1,1,501,1501,3501,3501,2,3,'REAAAA','KQEAAA','OOOOxx'
+164,3131,0,0,4,4,64,164,164,164,164,128,129,'IGAAAA','LQEAAA','VVVVxx'
+9548,3132,0,0,8,8,48,548,1548,4548,9548,96,97,'GDAAAA','MQEAAA','AAAAxx'
+1149,3133,1,1,9,9,49,149,1149,1149,1149,98,99,'FSAAAA','NQEAAA','HHHHxx'
+1962,3134,0,2,2,2,62,962,1962,1962,1962,124,125,'MXAAAA','OQEAAA','OOOOxx'
+4072,3135,0,0,2,12,72,72,72,4072,4072,144,145,'QAAAAA','PQEAAA','VVVVxx'
+4280,3136,0,0,0,0,80,280,280,4280,4280,160,161,'QIAAAA','QQEAAA','AAAAxx'
+1398,3137,0,2,8,18,98,398,1398,1398,1398,196,197,'UBAAAA','RQEAAA','HHHHxx'
+725,3138,1,1,5,5,25,725,725,725,725,50,51,'XBAAAA','SQEAAA','OOOOxx'
+3988,3139,0,0,8,8,88,988,1988,3988,3988,176,177,'KXAAAA','TQEAAA','VVVVxx'
+5059,3140,1,3,9,19,59,59,1059,59,5059,118,119,'PMAAAA','UQEAAA','AAAAxx'
+2632,3141,0,0,2,12,32,632,632,2632,2632,64,65,'GXAAAA','VQEAAA','HHHHxx'
+1909,3142,1,1,9,9,9,909,1909,1909,1909,18,19,'LVAAAA','WQEAAA','OOOOxx'
+6827,3143,1,3,7,7,27,827,827,1827,6827,54,55,'PCAAAA','XQEAAA','VVVVxx'
+8156,3144,0,0,6,16,56,156,156,3156,8156,112,113,'SBAAAA','YQEAAA','AAAAxx'
+1192,3145,0,0,2,12,92,192,1192,1192,1192,184,185,'WTAAAA','ZQEAAA','HHHHxx'
+9545,3146,1,1,5,5,45,545,1545,4545,9545,90,91,'DDAAAA','AREAAA','OOOOxx'
+2249,3147,1,1,9,9,49,249,249,2249,2249,98,99,'NIAAAA','BREAAA','VVVVxx'
+5580,3148,0,0,0,0,80,580,1580,580,5580,160,161,'QGAAAA','CREAAA','AAAAxx'
+8403,3149,1,3,3,3,3,403,403,3403,8403,6,7,'FLAAAA','DREAAA','HHHHxx'
+4024,3150,0,0,4,4,24,24,24,4024,4024,48,49,'UYAAAA','EREAAA','OOOOxx'
+1866,3151,0,2,6,6,66,866,1866,1866,1866,132,133,'UTAAAA','FREAAA','VVVVxx'
+9251,3152,1,3,1,11,51,251,1251,4251,9251,102,103,'VRAAAA','GREAAA','AAAAxx'
+9979,3153,1,3,9,19,79,979,1979,4979,9979,158,159,'VTAAAA','HREAAA','HHHHxx'
+9899,3154,1,3,9,19,99,899,1899,4899,9899,198,199,'TQAAAA','IREAAA','OOOOxx'
+2540,3155,0,0,0,0,40,540,540,2540,2540,80,81,'STAAAA','JREAAA','VVVVxx'
+8957,3156,1,1,7,17,57,957,957,3957,8957,114,115,'NGAAAA','KREAAA','AAAAxx'
+7702,3157,0,2,2,2,2,702,1702,2702,7702,4,5,'GKAAAA','LREAAA','HHHHxx'
+4211,3158,1,3,1,11,11,211,211,4211,4211,22,23,'ZFAAAA','MREAAA','OOOOxx'
+6684,3159,0,0,4,4,84,684,684,1684,6684,168,169,'CXAAAA','NREAAA','VVVVxx'
+3883,3160,1,3,3,3,83,883,1883,3883,3883,166,167,'JTAAAA','OREAAA','AAAAxx'
+3531,3161,1,3,1,11,31,531,1531,3531,3531,62,63,'VFAAAA','PREAAA','HHHHxx'
+9178,3162,0,2,8,18,78,178,1178,4178,9178,156,157,'APAAAA','QREAAA','OOOOxx'
+3389,3163,1,1,9,9,89,389,1389,3389,3389,178,179,'JAAAAA','RREAAA','VVVVxx'
+7874,3164,0,2,4,14,74,874,1874,2874,7874,148,149,'WQAAAA','SREAAA','AAAAxx'
+4522,3165,0,2,2,2,22,522,522,4522,4522,44,45,'YRAAAA','TREAAA','HHHHxx'
+9399,3166,1,3,9,19,99,399,1399,4399,9399,198,199,'NXAAAA','UREAAA','OOOOxx'
+9083,3167,1,3,3,3,83,83,1083,4083,9083,166,167,'JLAAAA','VREAAA','VVVVxx'
+1530,3168,0,2,0,10,30,530,1530,1530,1530,60,61,'WGAAAA','WREAAA','AAAAxx'
+2360,3169,0,0,0,0,60,360,360,2360,2360,120,121,'UMAAAA','XREAAA','HHHHxx'
+4908,3170,0,0,8,8,8,908,908,4908,4908,16,17,'UGAAAA','YREAAA','OOOOxx'
+4628,3171,0,0,8,8,28,628,628,4628,4628,56,57,'AWAAAA','ZREAAA','VVVVxx'
+3889,3172,1,1,9,9,89,889,1889,3889,3889,178,179,'PTAAAA','ASEAAA','AAAAxx'
+1331,3173,1,3,1,11,31,331,1331,1331,1331,62,63,'FZAAAA','BSEAAA','HHHHxx'
+1942,3174,0,2,2,2,42,942,1942,1942,1942,84,85,'SWAAAA','CSEAAA','OOOOxx'
+4734,3175,0,2,4,14,34,734,734,4734,4734,68,69,'CAAAAA','DSEAAA','VVVVxx'
+8386,3176,0,2,6,6,86,386,386,3386,8386,172,173,'OKAAAA','ESEAAA','AAAAxx'
+3586,3177,0,2,6,6,86,586,1586,3586,3586,172,173,'YHAAAA','FSEAAA','HHHHxx'
+2354,3178,0,2,4,14,54,354,354,2354,2354,108,109,'OMAAAA','GSEAAA','OOOOxx'
+7108,3179,0,0,8,8,8,108,1108,2108,7108,16,17,'KNAAAA','HSEAAA','VVVVxx'
+1857,3180,1,1,7,17,57,857,1857,1857,1857,114,115,'LTAAAA','ISEAAA','AAAAxx'
+2544,3181,0,0,4,4,44,544,544,2544,2544,88,89,'WTAAAA','JSEAAA','HHHHxx'
+819,3182,1,3,9,19,19,819,819,819,819,38,39,'NFAAAA','KSEAAA','OOOOxx'
+2878,3183,0,2,8,18,78,878,878,2878,2878,156,157,'SGAAAA','LSEAAA','VVVVxx'
+1772,3184,0,0,2,12,72,772,1772,1772,1772,144,145,'EQAAAA','MSEAAA','AAAAxx'
+354,3185,0,2,4,14,54,354,354,354,354,108,109,'QNAAAA','NSEAAA','HHHHxx'
+3259,3186,1,3,9,19,59,259,1259,3259,3259,118,119,'JVAAAA','OSEAAA','OOOOxx'
+2170,3187,0,2,0,10,70,170,170,2170,2170,140,141,'MFAAAA','PSEAAA','VVVVxx'
+1190,3188,0,2,0,10,90,190,1190,1190,1190,180,181,'UTAAAA','QSEAAA','AAAAxx'
+3607,3189,1,3,7,7,7,607,1607,3607,3607,14,15,'TIAAAA','RSEAAA','HHHHxx'
+4661,3190,1,1,1,1,61,661,661,4661,4661,122,123,'HXAAAA','SSEAAA','OOOOxx'
+1796,3191,0,0,6,16,96,796,1796,1796,1796,192,193,'CRAAAA','TSEAAA','VVVVxx'
+1561,3192,1,1,1,1,61,561,1561,1561,1561,122,123,'BIAAAA','USEAAA','AAAAxx'
+4336,3193,0,0,6,16,36,336,336,4336,4336,72,73,'UKAAAA','VSEAAA','HHHHxx'
+7550,3194,0,2,0,10,50,550,1550,2550,7550,100,101,'KEAAAA','WSEAAA','OOOOxx'
+3238,3195,0,2,8,18,38,238,1238,3238,3238,76,77,'OUAAAA','XSEAAA','VVVVxx'
+9870,3196,0,2,0,10,70,870,1870,4870,9870,140,141,'QPAAAA','YSEAAA','AAAAxx'
+6502,3197,0,2,2,2,2,502,502,1502,6502,4,5,'CQAAAA','ZSEAAA','HHHHxx'
+3903,3198,1,3,3,3,3,903,1903,3903,3903,6,7,'DUAAAA','ATEAAA','OOOOxx'
+2869,3199,1,1,9,9,69,869,869,2869,2869,138,139,'JGAAAA','BTEAAA','VVVVxx'
+5072,3200,0,0,2,12,72,72,1072,72,5072,144,145,'CNAAAA','CTEAAA','AAAAxx'
+1201,3201,1,1,1,1,1,201,1201,1201,1201,2,3,'FUAAAA','DTEAAA','HHHHxx'
+6245,3202,1,1,5,5,45,245,245,1245,6245,90,91,'FGAAAA','ETEAAA','OOOOxx'
+1402,3203,0,2,2,2,2,402,1402,1402,1402,4,5,'YBAAAA','FTEAAA','VVVVxx'
+2594,3204,0,2,4,14,94,594,594,2594,2594,188,189,'UVAAAA','GTEAAA','AAAAxx'
+9171,3205,1,3,1,11,71,171,1171,4171,9171,142,143,'TOAAAA','HTEAAA','HHHHxx'
+2620,3206,0,0,0,0,20,620,620,2620,2620,40,41,'UWAAAA','ITEAAA','OOOOxx'
+6309,3207,1,1,9,9,9,309,309,1309,6309,18,19,'RIAAAA','JTEAAA','VVVVxx'
+1285,3208,1,1,5,5,85,285,1285,1285,1285,170,171,'LXAAAA','KTEAAA','AAAAxx'
+5466,3209,0,2,6,6,66,466,1466,466,5466,132,133,'GCAAAA','LTEAAA','HHHHxx'
+168,3210,0,0,8,8,68,168,168,168,168,136,137,'MGAAAA','MTEAAA','OOOOxx'
+1410,3211,0,2,0,10,10,410,1410,1410,1410,20,21,'GCAAAA','NTEAAA','VVVVxx'
+6332,3212,0,0,2,12,32,332,332,1332,6332,64,65,'OJAAAA','OTEAAA','AAAAxx'
+9530,3213,0,2,0,10,30,530,1530,4530,9530,60,61,'OCAAAA','PTEAAA','HHHHxx'
+7749,3214,1,1,9,9,49,749,1749,2749,7749,98,99,'BMAAAA','QTEAAA','OOOOxx'
+3656,3215,0,0,6,16,56,656,1656,3656,3656,112,113,'QKAAAA','RTEAAA','VVVVxx'
+37,3216,1,1,7,17,37,37,37,37,37,74,75,'LBAAAA','STEAAA','AAAAxx'
+2744,3217,0,0,4,4,44,744,744,2744,2744,88,89,'OBAAAA','TTEAAA','HHHHxx'
+4206,3218,0,2,6,6,6,206,206,4206,4206,12,13,'UFAAAA','UTEAAA','OOOOxx'
+1846,3219,0,2,6,6,46,846,1846,1846,1846,92,93,'ATAAAA','VTEAAA','VVVVxx'
+9913,3220,1,1,3,13,13,913,1913,4913,9913,26,27,'HRAAAA','WTEAAA','AAAAxx'
+4078,3221,0,2,8,18,78,78,78,4078,4078,156,157,'WAAAAA','XTEAAA','HHHHxx'
+2080,3222,0,0,0,0,80,80,80,2080,2080,160,161,'ACAAAA','YTEAAA','OOOOxx'
+4169,3223,1,1,9,9,69,169,169,4169,4169,138,139,'JEAAAA','ZTEAAA','VVVVxx'
+2070,3224,0,2,0,10,70,70,70,2070,2070,140,141,'QBAAAA','AUEAAA','AAAAxx'
+4500,3225,0,0,0,0,0,500,500,4500,4500,0,1,'CRAAAA','BUEAAA','HHHHxx'
+4123,3226,1,3,3,3,23,123,123,4123,4123,46,47,'PCAAAA','CUEAAA','OOOOxx'
+5594,3227,0,2,4,14,94,594,1594,594,5594,188,189,'EHAAAA','DUEAAA','VVVVxx'
+9941,3228,1,1,1,1,41,941,1941,4941,9941,82,83,'JSAAAA','EUEAAA','AAAAxx'
+7154,3229,0,2,4,14,54,154,1154,2154,7154,108,109,'EPAAAA','FUEAAA','HHHHxx'
+8340,3230,0,0,0,0,40,340,340,3340,8340,80,81,'UIAAAA','GUEAAA','OOOOxx'
+7110,3231,0,2,0,10,10,110,1110,2110,7110,20,21,'MNAAAA','HUEAAA','VVVVxx'
+7795,3232,1,3,5,15,95,795,1795,2795,7795,190,191,'VNAAAA','IUEAAA','AAAAxx'
+132,3233,0,0,2,12,32,132,132,132,132,64,65,'CFAAAA','JUEAAA','HHHHxx'
+4603,3234,1,3,3,3,3,603,603,4603,4603,6,7,'BVAAAA','KUEAAA','OOOOxx'
+9720,3235,0,0,0,0,20,720,1720,4720,9720,40,41,'WJAAAA','LUEAAA','VVVVxx'
+1460,3236,0,0,0,0,60,460,1460,1460,1460,120,121,'EEAAAA','MUEAAA','AAAAxx'
+4677,3237,1,1,7,17,77,677,677,4677,4677,154,155,'XXAAAA','NUEAAA','HHHHxx'
+9272,3238,0,0,2,12,72,272,1272,4272,9272,144,145,'QSAAAA','OUEAAA','OOOOxx'
+2279,3239,1,3,9,19,79,279,279,2279,2279,158,159,'RJAAAA','PUEAAA','VVVVxx'
+4587,3240,1,3,7,7,87,587,587,4587,4587,174,175,'LUAAAA','QUEAAA','AAAAxx'
+2244,3241,0,0,4,4,44,244,244,2244,2244,88,89,'IIAAAA','RUEAAA','HHHHxx'
+742,3242,0,2,2,2,42,742,742,742,742,84,85,'OCAAAA','SUEAAA','OOOOxx'
+4426,3243,0,2,6,6,26,426,426,4426,4426,52,53,'GOAAAA','TUEAAA','VVVVxx'
+4571,3244,1,3,1,11,71,571,571,4571,4571,142,143,'VTAAAA','UUEAAA','AAAAxx'
+4775,3245,1,3,5,15,75,775,775,4775,4775,150,151,'RBAAAA','VUEAAA','HHHHxx'
+24,3246,0,0,4,4,24,24,24,24,24,48,49,'YAAAAA','WUEAAA','OOOOxx'
+4175,3247,1,3,5,15,75,175,175,4175,4175,150,151,'PEAAAA','XUEAAA','VVVVxx'
+9877,3248,1,1,7,17,77,877,1877,4877,9877,154,155,'XPAAAA','YUEAAA','AAAAxx'
+7271,3249,1,3,1,11,71,271,1271,2271,7271,142,143,'RTAAAA','ZUEAAA','HHHHxx'
+5468,3250,0,0,8,8,68,468,1468,468,5468,136,137,'ICAAAA','AVEAAA','OOOOxx'
+6106,3251,0,2,6,6,6,106,106,1106,6106,12,13,'WAAAAA','BVEAAA','VVVVxx'
+9005,3252,1,1,5,5,5,5,1005,4005,9005,10,11,'JIAAAA','CVEAAA','AAAAxx'
+109,3253,1,1,9,9,9,109,109,109,109,18,19,'FEAAAA','DVEAAA','HHHHxx'
+6365,3254,1,1,5,5,65,365,365,1365,6365,130,131,'VKAAAA','EVEAAA','OOOOxx'
+7437,3255,1,1,7,17,37,437,1437,2437,7437,74,75,'BAAAAA','FVEAAA','VVVVxx'
+7979,3256,1,3,9,19,79,979,1979,2979,7979,158,159,'XUAAAA','GVEAAA','AAAAxx'
+6050,3257,0,2,0,10,50,50,50,1050,6050,100,101,'SYAAAA','HVEAAA','HHHHxx'
+2853,3258,1,1,3,13,53,853,853,2853,2853,106,107,'TFAAAA','IVEAAA','OOOOxx'
+7603,3259,1,3,3,3,3,603,1603,2603,7603,6,7,'LGAAAA','JVEAAA','VVVVxx'
+483,3260,1,3,3,3,83,483,483,483,483,166,167,'PSAAAA','KVEAAA','AAAAxx'
+5994,3261,0,2,4,14,94,994,1994,994,5994,188,189,'OWAAAA','LVEAAA','HHHHxx'
+6708,3262,0,0,8,8,8,708,708,1708,6708,16,17,'AYAAAA','MVEAAA','OOOOxx'
+5090,3263,0,2,0,10,90,90,1090,90,5090,180,181,'UNAAAA','NVEAAA','VVVVxx'
+4608,3264,0,0,8,8,8,608,608,4608,4608,16,17,'GVAAAA','OVEAAA','AAAAxx'
+4551,3265,1,3,1,11,51,551,551,4551,4551,102,103,'BTAAAA','PVEAAA','HHHHxx'
+5437,3266,1,1,7,17,37,437,1437,437,5437,74,75,'DBAAAA','QVEAAA','OOOOxx'
+4130,3267,0,2,0,10,30,130,130,4130,4130,60,61,'WCAAAA','RVEAAA','VVVVxx'
+6363,3268,1,3,3,3,63,363,363,1363,6363,126,127,'TKAAAA','SVEAAA','AAAAxx'
+1499,3269,1,3,9,19,99,499,1499,1499,1499,198,199,'RFAAAA','TVEAAA','HHHHxx'
+384,3270,0,0,4,4,84,384,384,384,384,168,169,'UOAAAA','UVEAAA','OOOOxx'
+2266,3271,0,2,6,6,66,266,266,2266,2266,132,133,'EJAAAA','VVEAAA','VVVVxx'
+6018,3272,0,2,8,18,18,18,18,1018,6018,36,37,'MXAAAA','WVEAAA','AAAAxx'
+7915,3273,1,3,5,15,15,915,1915,2915,7915,30,31,'LSAAAA','XVEAAA','HHHHxx'
+6167,3274,1,3,7,7,67,167,167,1167,6167,134,135,'FDAAAA','YVEAAA','OOOOxx'
+9988,3275,0,0,8,8,88,988,1988,4988,9988,176,177,'EUAAAA','ZVEAAA','VVVVxx'
+6599,3276,1,3,9,19,99,599,599,1599,6599,198,199,'VTAAAA','AWEAAA','AAAAxx'
+1693,3277,1,1,3,13,93,693,1693,1693,1693,186,187,'DNAAAA','BWEAAA','HHHHxx'
+5971,3278,1,3,1,11,71,971,1971,971,5971,142,143,'RVAAAA','CWEAAA','OOOOxx'
+8470,3279,0,2,0,10,70,470,470,3470,8470,140,141,'UNAAAA','DWEAAA','VVVVxx'
+2807,3280,1,3,7,7,7,807,807,2807,2807,14,15,'ZDAAAA','EWEAAA','AAAAxx'
+1120,3281,0,0,0,0,20,120,1120,1120,1120,40,41,'CRAAAA','FWEAAA','HHHHxx'
+5924,3282,0,0,4,4,24,924,1924,924,5924,48,49,'WTAAAA','GWEAAA','OOOOxx'
+9025,3283,1,1,5,5,25,25,1025,4025,9025,50,51,'DJAAAA','HWEAAA','VVVVxx'
+9454,3284,0,2,4,14,54,454,1454,4454,9454,108,109,'QZAAAA','IWEAAA','AAAAxx'
+2259,3285,1,3,9,19,59,259,259,2259,2259,118,119,'XIAAAA','JWEAAA','HHHHxx'
+5249,3286,1,1,9,9,49,249,1249,249,5249,98,99,'XTAAAA','KWEAAA','OOOOxx'
+6350,3287,0,2,0,10,50,350,350,1350,6350,100,101,'GKAAAA','LWEAAA','VVVVxx'
+2930,3288,0,2,0,10,30,930,930,2930,2930,60,61,'SIAAAA','MWEAAA','AAAAxx'
+6055,3289,1,3,5,15,55,55,55,1055,6055,110,111,'XYAAAA','NWEAAA','HHHHxx'
+7691,3290,1,3,1,11,91,691,1691,2691,7691,182,183,'VJAAAA','OWEAAA','OOOOxx'
+1573,3291,1,1,3,13,73,573,1573,1573,1573,146,147,'NIAAAA','PWEAAA','VVVVxx'
+9943,3292,1,3,3,3,43,943,1943,4943,9943,86,87,'LSAAAA','QWEAAA','AAAAxx'
+3085,3293,1,1,5,5,85,85,1085,3085,3085,170,171,'ROAAAA','RWEAAA','HHHHxx'
+5928,3294,0,0,8,8,28,928,1928,928,5928,56,57,'AUAAAA','SWEAAA','OOOOxx'
+887,3295,1,3,7,7,87,887,887,887,887,174,175,'DIAAAA','TWEAAA','VVVVxx'
+4630,3296,0,2,0,10,30,630,630,4630,4630,60,61,'CWAAAA','UWEAAA','AAAAxx'
+9827,3297,1,3,7,7,27,827,1827,4827,9827,54,55,'ZNAAAA','VWEAAA','HHHHxx'
+8926,3298,0,2,6,6,26,926,926,3926,8926,52,53,'IFAAAA','WWEAAA','OOOOxx'
+5726,3299,0,2,6,6,26,726,1726,726,5726,52,53,'GMAAAA','XWEAAA','VVVVxx'
+1569,3300,1,1,9,9,69,569,1569,1569,1569,138,139,'JIAAAA','YWEAAA','AAAAxx'
+8074,3301,0,2,4,14,74,74,74,3074,8074,148,149,'OYAAAA','ZWEAAA','HHHHxx'
+7909,3302,1,1,9,9,9,909,1909,2909,7909,18,19,'FSAAAA','AXEAAA','OOOOxx'
+8367,3303,1,3,7,7,67,367,367,3367,8367,134,135,'VJAAAA','BXEAAA','VVVVxx'
+7217,3304,1,1,7,17,17,217,1217,2217,7217,34,35,'PRAAAA','CXEAAA','AAAAxx'
+5254,3305,0,2,4,14,54,254,1254,254,5254,108,109,'CUAAAA','DXEAAA','HHHHxx'
+1181,3306,1,1,1,1,81,181,1181,1181,1181,162,163,'LTAAAA','EXEAAA','OOOOxx'
+6907,3307,1,3,7,7,7,907,907,1907,6907,14,15,'RFAAAA','FXEAAA','VVVVxx'
+5508,3308,0,0,8,8,8,508,1508,508,5508,16,17,'WDAAAA','GXEAAA','AAAAxx'
+4782,3309,0,2,2,2,82,782,782,4782,4782,164,165,'YBAAAA','HXEAAA','HHHHxx'
+793,3310,1,1,3,13,93,793,793,793,793,186,187,'NEAAAA','IXEAAA','OOOOxx'
+5740,3311,0,0,0,0,40,740,1740,740,5740,80,81,'UMAAAA','JXEAAA','VVVVxx'
+3107,3312,1,3,7,7,7,107,1107,3107,3107,14,15,'NPAAAA','KXEAAA','AAAAxx'
+1197,3313,1,1,7,17,97,197,1197,1197,1197,194,195,'BUAAAA','LXEAAA','HHHHxx'
+4376,3314,0,0,6,16,76,376,376,4376,4376,152,153,'IMAAAA','MXEAAA','OOOOxx'
+6226,3315,0,2,6,6,26,226,226,1226,6226,52,53,'MFAAAA','NXEAAA','VVVVxx'
+5033,3316,1,1,3,13,33,33,1033,33,5033,66,67,'PLAAAA','OXEAAA','AAAAxx'
+5494,3317,0,2,4,14,94,494,1494,494,5494,188,189,'IDAAAA','PXEAAA','HHHHxx'
+3244,3318,0,0,4,4,44,244,1244,3244,3244,88,89,'UUAAAA','QXEAAA','OOOOxx'
+7670,3319,0,2,0,10,70,670,1670,2670,7670,140,141,'AJAAAA','RXEAAA','VVVVxx'
+9273,3320,1,1,3,13,73,273,1273,4273,9273,146,147,'RSAAAA','SXEAAA','AAAAxx'
+5248,3321,0,0,8,8,48,248,1248,248,5248,96,97,'WTAAAA','TXEAAA','HHHHxx'
+3381,3322,1,1,1,1,81,381,1381,3381,3381,162,163,'BAAAAA','UXEAAA','OOOOxx'
+4136,3323,0,0,6,16,36,136,136,4136,4136,72,73,'CDAAAA','VXEAAA','VVVVxx'
+4163,3324,1,3,3,3,63,163,163,4163,4163,126,127,'DEAAAA','WXEAAA','AAAAxx'
+4270,3325,0,2,0,10,70,270,270,4270,4270,140,141,'GIAAAA','XXEAAA','HHHHxx'
+1729,3326,1,1,9,9,29,729,1729,1729,1729,58,59,'NOAAAA','YXEAAA','OOOOxx'
+2778,3327,0,2,8,18,78,778,778,2778,2778,156,157,'WCAAAA','ZXEAAA','VVVVxx'
+5082,3328,0,2,2,2,82,82,1082,82,5082,164,165,'MNAAAA','AYEAAA','AAAAxx'
+870,3329,0,2,0,10,70,870,870,870,870,140,141,'MHAAAA','BYEAAA','HHHHxx'
+4192,3330,0,0,2,12,92,192,192,4192,4192,184,185,'GFAAAA','CYEAAA','OOOOxx'
+308,3331,0,0,8,8,8,308,308,308,308,16,17,'WLAAAA','DYEAAA','VVVVxx'
+6783,3332,1,3,3,3,83,783,783,1783,6783,166,167,'XAAAAA','EYEAAA','AAAAxx'
+7611,3333,1,3,1,11,11,611,1611,2611,7611,22,23,'TGAAAA','FYEAAA','HHHHxx'
+4221,3334,1,1,1,1,21,221,221,4221,4221,42,43,'JGAAAA','GYEAAA','OOOOxx'
+6353,3335,1,1,3,13,53,353,353,1353,6353,106,107,'JKAAAA','HYEAAA','VVVVxx'
+1830,3336,0,2,0,10,30,830,1830,1830,1830,60,61,'KSAAAA','IYEAAA','AAAAxx'
+2437,3337,1,1,7,17,37,437,437,2437,2437,74,75,'TPAAAA','JYEAAA','HHHHxx'
+3360,3338,0,0,0,0,60,360,1360,3360,3360,120,121,'GZAAAA','KYEAAA','OOOOxx'
+1829,3339,1,1,9,9,29,829,1829,1829,1829,58,59,'JSAAAA','LYEAAA','VVVVxx'
+9475,3340,1,3,5,15,75,475,1475,4475,9475,150,151,'LAAAAA','MYEAAA','AAAAxx'
+4566,3341,0,2,6,6,66,566,566,4566,4566,132,133,'QTAAAA','NYEAAA','HHHHxx'
+9944,3342,0,0,4,4,44,944,1944,4944,9944,88,89,'MSAAAA','OYEAAA','OOOOxx'
+6054,3343,0,2,4,14,54,54,54,1054,6054,108,109,'WYAAAA','PYEAAA','VVVVxx'
+4722,3344,0,2,2,2,22,722,722,4722,4722,44,45,'QZAAAA','QYEAAA','AAAAxx'
+2779,3345,1,3,9,19,79,779,779,2779,2779,158,159,'XCAAAA','RYEAAA','HHHHxx'
+8051,3346,1,3,1,11,51,51,51,3051,8051,102,103,'RXAAAA','SYEAAA','OOOOxx'
+9671,3347,1,3,1,11,71,671,1671,4671,9671,142,143,'ZHAAAA','TYEAAA','VVVVxx'
+6084,3348,0,0,4,4,84,84,84,1084,6084,168,169,'AAAAAA','UYEAAA','AAAAxx'
+3729,3349,1,1,9,9,29,729,1729,3729,3729,58,59,'LNAAAA','VYEAAA','HHHHxx'
+6627,3350,1,3,7,7,27,627,627,1627,6627,54,55,'XUAAAA','WYEAAA','OOOOxx'
+4769,3351,1,1,9,9,69,769,769,4769,4769,138,139,'LBAAAA','XYEAAA','VVVVxx'
+2224,3352,0,0,4,4,24,224,224,2224,2224,48,49,'OHAAAA','YYEAAA','AAAAxx'
+1404,3353,0,0,4,4,4,404,1404,1404,1404,8,9,'ACAAAA','ZYEAAA','HHHHxx'
+8532,3354,0,0,2,12,32,532,532,3532,8532,64,65,'EQAAAA','AZEAAA','OOOOxx'
+6759,3355,1,3,9,19,59,759,759,1759,6759,118,119,'ZZAAAA','BZEAAA','VVVVxx'
+6404,3356,0,0,4,4,4,404,404,1404,6404,8,9,'IMAAAA','CZEAAA','AAAAxx'
+3144,3357,0,0,4,4,44,144,1144,3144,3144,88,89,'YQAAAA','DZEAAA','HHHHxx'
+973,3358,1,1,3,13,73,973,973,973,973,146,147,'LLAAAA','EZEAAA','OOOOxx'
+9789,3359,1,1,9,9,89,789,1789,4789,9789,178,179,'NMAAAA','FZEAAA','VVVVxx'
+6181,3360,1,1,1,1,81,181,181,1181,6181,162,163,'TDAAAA','GZEAAA','AAAAxx'
+1519,3361,1,3,9,19,19,519,1519,1519,1519,38,39,'LGAAAA','HZEAAA','HHHHxx'
+9729,3362,1,1,9,9,29,729,1729,4729,9729,58,59,'FKAAAA','IZEAAA','OOOOxx'
+8167,3363,1,3,7,7,67,167,167,3167,8167,134,135,'DCAAAA','JZEAAA','VVVVxx'
+3830,3364,0,2,0,10,30,830,1830,3830,3830,60,61,'IRAAAA','KZEAAA','AAAAxx'
+6286,3365,0,2,6,6,86,286,286,1286,6286,172,173,'UHAAAA','LZEAAA','HHHHxx'
+3047,3366,1,3,7,7,47,47,1047,3047,3047,94,95,'FNAAAA','MZEAAA','OOOOxx'
+3183,3367,1,3,3,3,83,183,1183,3183,3183,166,167,'LSAAAA','NZEAAA','VVVVxx'
+6687,3368,1,3,7,7,87,687,687,1687,6687,174,175,'FXAAAA','OZEAAA','AAAAxx'
+2783,3369,1,3,3,3,83,783,783,2783,2783,166,167,'BDAAAA','PZEAAA','HHHHxx'
+9920,3370,0,0,0,0,20,920,1920,4920,9920,40,41,'ORAAAA','QZEAAA','OOOOxx'
+4847,3371,1,3,7,7,47,847,847,4847,4847,94,95,'LEAAAA','RZEAAA','VVVVxx'
+3645,3372,1,1,5,5,45,645,1645,3645,3645,90,91,'FKAAAA','SZEAAA','AAAAxx'
+7406,3373,0,2,6,6,6,406,1406,2406,7406,12,13,'WYAAAA','TZEAAA','HHHHxx'
+6003,3374,1,3,3,3,3,3,3,1003,6003,6,7,'XWAAAA','UZEAAA','OOOOxx'
+3408,3375,0,0,8,8,8,408,1408,3408,3408,16,17,'CBAAAA','VZEAAA','VVVVxx'
+4243,3376,1,3,3,3,43,243,243,4243,4243,86,87,'FHAAAA','WZEAAA','AAAAxx'
+1622,3377,0,2,2,2,22,622,1622,1622,1622,44,45,'KKAAAA','XZEAAA','HHHHxx'
+5319,3378,1,3,9,19,19,319,1319,319,5319,38,39,'PWAAAA','YZEAAA','OOOOxx'
+4033,3379,1,1,3,13,33,33,33,4033,4033,66,67,'DZAAAA','ZZEAAA','VVVVxx'
+8573,3380,1,1,3,13,73,573,573,3573,8573,146,147,'TRAAAA','AAFAAA','AAAAxx'
+8404,3381,0,0,4,4,4,404,404,3404,8404,8,9,'GLAAAA','BAFAAA','HHHHxx'
+6993,3382,1,1,3,13,93,993,993,1993,6993,186,187,'ZIAAAA','CAFAAA','OOOOxx'
+660,3383,0,0,0,0,60,660,660,660,660,120,121,'KZAAAA','DAFAAA','VVVVxx'
+1136,3384,0,0,6,16,36,136,1136,1136,1136,72,73,'SRAAAA','EAFAAA','AAAAxx'
+3393,3385,1,1,3,13,93,393,1393,3393,3393,186,187,'NAAAAA','FAFAAA','HHHHxx'
+9743,3386,1,3,3,3,43,743,1743,4743,9743,86,87,'TKAAAA','GAFAAA','OOOOxx'
+9705,3387,1,1,5,5,5,705,1705,4705,9705,10,11,'HJAAAA','HAFAAA','VVVVxx'
+6960,3388,0,0,0,0,60,960,960,1960,6960,120,121,'SHAAAA','IAFAAA','AAAAxx'
+2753,3389,1,1,3,13,53,753,753,2753,2753,106,107,'XBAAAA','JAFAAA','HHHHxx'
+906,3390,0,2,6,6,6,906,906,906,906,12,13,'WIAAAA','KAFAAA','OOOOxx'
+999,3391,1,3,9,19,99,999,999,999,999,198,199,'LMAAAA','LAFAAA','VVVVxx'
+6927,3392,1,3,7,7,27,927,927,1927,6927,54,55,'LGAAAA','MAFAAA','AAAAxx'
+4846,3393,0,2,6,6,46,846,846,4846,4846,92,93,'KEAAAA','NAFAAA','HHHHxx'
+676,3394,0,0,6,16,76,676,676,676,676,152,153,'AAAAAA','OAFAAA','OOOOxx'
+8612,3395,0,0,2,12,12,612,612,3612,8612,24,25,'GTAAAA','PAFAAA','VVVVxx'
+4111,3396,1,3,1,11,11,111,111,4111,4111,22,23,'DCAAAA','QAFAAA','AAAAxx'
+9994,3397,0,2,4,14,94,994,1994,4994,9994,188,189,'KUAAAA','RAFAAA','HHHHxx'
+4399,3398,1,3,9,19,99,399,399,4399,4399,198,199,'FNAAAA','SAFAAA','OOOOxx'
+4464,3399,0,0,4,4,64,464,464,4464,4464,128,129,'SPAAAA','TAFAAA','VVVVxx'
+7316,3400,0,0,6,16,16,316,1316,2316,7316,32,33,'KVAAAA','UAFAAA','AAAAxx'
+8982,3401,0,2,2,2,82,982,982,3982,8982,164,165,'MHAAAA','VAFAAA','HHHHxx'
+1871,3402,1,3,1,11,71,871,1871,1871,1871,142,143,'ZTAAAA','WAFAAA','OOOOxx'
+4082,3403,0,2,2,2,82,82,82,4082,4082,164,165,'ABAAAA','XAFAAA','VVVVxx'
+3949,3404,1,1,9,9,49,949,1949,3949,3949,98,99,'XVAAAA','YAFAAA','AAAAxx'
+9352,3405,0,0,2,12,52,352,1352,4352,9352,104,105,'SVAAAA','ZAFAAA','HHHHxx'
+9638,3406,0,2,8,18,38,638,1638,4638,9638,76,77,'SGAAAA','ABFAAA','OOOOxx'
+8177,3407,1,1,7,17,77,177,177,3177,8177,154,155,'NCAAAA','BBFAAA','VVVVxx'
+3499,3408,1,3,9,19,99,499,1499,3499,3499,198,199,'PEAAAA','CBFAAA','AAAAxx'
+4233,3409,1,1,3,13,33,233,233,4233,4233,66,67,'VGAAAA','DBFAAA','HHHHxx'
+1953,3410,1,1,3,13,53,953,1953,1953,1953,106,107,'DXAAAA','EBFAAA','OOOOxx'
+7372,3411,0,0,2,12,72,372,1372,2372,7372,144,145,'OXAAAA','FBFAAA','VVVVxx'
+5127,3412,1,3,7,7,27,127,1127,127,5127,54,55,'FPAAAA','GBFAAA','AAAAxx'
+4384,3413,0,0,4,4,84,384,384,4384,4384,168,169,'QMAAAA','HBFAAA','HHHHxx'
+9964,3414,0,0,4,4,64,964,1964,4964,9964,128,129,'GTAAAA','IBFAAA','OOOOxx'
+5392,3415,0,0,2,12,92,392,1392,392,5392,184,185,'KZAAAA','JBFAAA','VVVVxx'
+616,3416,0,0,6,16,16,616,616,616,616,32,33,'SXAAAA','KBFAAA','AAAAxx'
+591,3417,1,3,1,11,91,591,591,591,591,182,183,'TWAAAA','LBFAAA','HHHHxx'
+6422,3418,0,2,2,2,22,422,422,1422,6422,44,45,'ANAAAA','MBFAAA','OOOOxx'
+6551,3419,1,3,1,11,51,551,551,1551,6551,102,103,'ZRAAAA','NBFAAA','VVVVxx'
+9286,3420,0,2,6,6,86,286,1286,4286,9286,172,173,'ETAAAA','OBFAAA','AAAAxx'
+3817,3421,1,1,7,17,17,817,1817,3817,3817,34,35,'VQAAAA','PBFAAA','HHHHxx'
+7717,3422,1,1,7,17,17,717,1717,2717,7717,34,35,'VKAAAA','QBFAAA','OOOOxx'
+8718,3423,0,2,8,18,18,718,718,3718,8718,36,37,'IXAAAA','RBFAAA','VVVVxx'
+8608,3424,0,0,8,8,8,608,608,3608,8608,16,17,'CTAAAA','SBFAAA','AAAAxx'
+2242,3425,0,2,2,2,42,242,242,2242,2242,84,85,'GIAAAA','TBFAAA','HHHHxx'
+4811,3426,1,3,1,11,11,811,811,4811,4811,22,23,'BDAAAA','UBFAAA','OOOOxx'
+6838,3427,0,2,8,18,38,838,838,1838,6838,76,77,'ADAAAA','VBFAAA','VVVVxx'
+787,3428,1,3,7,7,87,787,787,787,787,174,175,'HEAAAA','WBFAAA','AAAAxx'
+7940,3429,0,0,0,0,40,940,1940,2940,7940,80,81,'KTAAAA','XBFAAA','HHHHxx'
+336,3430,0,0,6,16,36,336,336,336,336,72,73,'YMAAAA','YBFAAA','OOOOxx'
+9859,3431,1,3,9,19,59,859,1859,4859,9859,118,119,'FPAAAA','ZBFAAA','VVVVxx'
+3864,3432,0,0,4,4,64,864,1864,3864,3864,128,129,'QSAAAA','ACFAAA','AAAAxx'
+7162,3433,0,2,2,2,62,162,1162,2162,7162,124,125,'MPAAAA','BCFAAA','HHHHxx'
+2071,3434,1,3,1,11,71,71,71,2071,2071,142,143,'RBAAAA','CCFAAA','OOOOxx'
+7469,3435,1,1,9,9,69,469,1469,2469,7469,138,139,'HBAAAA','DCFAAA','VVVVxx'
+2917,3436,1,1,7,17,17,917,917,2917,2917,34,35,'FIAAAA','ECFAAA','AAAAxx'
+7486,3437,0,2,6,6,86,486,1486,2486,7486,172,173,'YBAAAA','FCFAAA','HHHHxx'
+3355,3438,1,3,5,15,55,355,1355,3355,3355,110,111,'BZAAAA','GCFAAA','OOOOxx'
+6998,3439,0,2,8,18,98,998,998,1998,6998,196,197,'EJAAAA','HCFAAA','VVVVxx'
+5498,3440,0,2,8,18,98,498,1498,498,5498,196,197,'MDAAAA','ICFAAA','AAAAxx'
+5113,3441,1,1,3,13,13,113,1113,113,5113,26,27,'ROAAAA','JCFAAA','HHHHxx'
+2846,3442,0,2,6,6,46,846,846,2846,2846,92,93,'MFAAAA','KCFAAA','OOOOxx'
+6834,3443,0,2,4,14,34,834,834,1834,6834,68,69,'WCAAAA','LCFAAA','VVVVxx'
+8925,3444,1,1,5,5,25,925,925,3925,8925,50,51,'HFAAAA','MCFAAA','AAAAxx'
+2757,3445,1,1,7,17,57,757,757,2757,2757,114,115,'BCAAAA','NCFAAA','HHHHxx'
+2775,3446,1,3,5,15,75,775,775,2775,2775,150,151,'TCAAAA','OCFAAA','OOOOxx'
+6182,3447,0,2,2,2,82,182,182,1182,6182,164,165,'UDAAAA','PCFAAA','VVVVxx'
+4488,3448,0,0,8,8,88,488,488,4488,4488,176,177,'QQAAAA','QCFAAA','AAAAxx'
+8523,3449,1,3,3,3,23,523,523,3523,8523,46,47,'VPAAAA','RCFAAA','HHHHxx'
+52,3450,0,0,2,12,52,52,52,52,52,104,105,'ACAAAA','SCFAAA','OOOOxx'
+7251,3451,1,3,1,11,51,251,1251,2251,7251,102,103,'XSAAAA','TCFAAA','VVVVxx'
+6130,3452,0,2,0,10,30,130,130,1130,6130,60,61,'UBAAAA','UCFAAA','AAAAxx'
+205,3453,1,1,5,5,5,205,205,205,205,10,11,'XHAAAA','VCFAAA','HHHHxx'
+1186,3454,0,2,6,6,86,186,1186,1186,1186,172,173,'QTAAAA','WCFAAA','OOOOxx'
+1738,3455,0,2,8,18,38,738,1738,1738,1738,76,77,'WOAAAA','XCFAAA','VVVVxx'
+9485,3456,1,1,5,5,85,485,1485,4485,9485,170,171,'VAAAAA','YCFAAA','AAAAxx'
+4235,3457,1,3,5,15,35,235,235,4235,4235,70,71,'XGAAAA','ZCFAAA','HHHHxx'
+7891,3458,1,3,1,11,91,891,1891,2891,7891,182,183,'NRAAAA','ADFAAA','OOOOxx'
+4960,3459,0,0,0,0,60,960,960,4960,4960,120,121,'UIAAAA','BDFAAA','VVVVxx'
+8911,3460,1,3,1,11,11,911,911,3911,8911,22,23,'TEAAAA','CDFAAA','AAAAxx'
+1219,3461,1,3,9,19,19,219,1219,1219,1219,38,39,'XUAAAA','DDFAAA','HHHHxx'
+9652,3462,0,0,2,12,52,652,1652,4652,9652,104,105,'GHAAAA','EDFAAA','OOOOxx'
+9715,3463,1,3,5,15,15,715,1715,4715,9715,30,31,'RJAAAA','FDFAAA','VVVVxx'
+6629,3464,1,1,9,9,29,629,629,1629,6629,58,59,'ZUAAAA','GDFAAA','AAAAxx'
+700,3465,0,0,0,0,0,700,700,700,700,0,1,'YAAAAA','HDFAAA','HHHHxx'
+9819,3466,1,3,9,19,19,819,1819,4819,9819,38,39,'RNAAAA','IDFAAA','OOOOxx'
+5188,3467,0,0,8,8,88,188,1188,188,5188,176,177,'ORAAAA','JDFAAA','VVVVxx'
+5367,3468,1,3,7,7,67,367,1367,367,5367,134,135,'LYAAAA','KDFAAA','AAAAxx'
+6447,3469,1,3,7,7,47,447,447,1447,6447,94,95,'ZNAAAA','LDFAAA','HHHHxx'
+720,3470,0,0,0,0,20,720,720,720,720,40,41,'SBAAAA','MDFAAA','OOOOxx'
+9157,3471,1,1,7,17,57,157,1157,4157,9157,114,115,'FOAAAA','NDFAAA','VVVVxx'
+1082,3472,0,2,2,2,82,82,1082,1082,1082,164,165,'QPAAAA','ODFAAA','AAAAxx'
+3179,3473,1,3,9,19,79,179,1179,3179,3179,158,159,'HSAAAA','PDFAAA','HHHHxx'
+4818,3474,0,2,8,18,18,818,818,4818,4818,36,37,'IDAAAA','QDFAAA','OOOOxx'
+7607,3475,1,3,7,7,7,607,1607,2607,7607,14,15,'PGAAAA','RDFAAA','VVVVxx'
+2352,3476,0,0,2,12,52,352,352,2352,2352,104,105,'MMAAAA','SDFAAA','AAAAxx'
+1170,3477,0,2,0,10,70,170,1170,1170,1170,140,141,'ATAAAA','TDFAAA','HHHHxx'
+4269,3478,1,1,9,9,69,269,269,4269,4269,138,139,'FIAAAA','UDFAAA','OOOOxx'
+8767,3479,1,3,7,7,67,767,767,3767,8767,134,135,'FZAAAA','VDFAAA','VVVVxx'
+3984,3480,0,0,4,4,84,984,1984,3984,3984,168,169,'GXAAAA','WDFAAA','AAAAxx'
+3190,3481,0,2,0,10,90,190,1190,3190,3190,180,181,'SSAAAA','XDFAAA','HHHHxx'
+7456,3482,0,0,6,16,56,456,1456,2456,7456,112,113,'UAAAAA','YDFAAA','OOOOxx'
+4348,3483,0,0,8,8,48,348,348,4348,4348,96,97,'GLAAAA','ZDFAAA','VVVVxx'
+3150,3484,0,2,0,10,50,150,1150,3150,3150,100,101,'ERAAAA','AEFAAA','AAAAxx'
+8780,3485,0,0,0,0,80,780,780,3780,8780,160,161,'SZAAAA','BEFAAA','HHHHxx'
+2553,3486,1,1,3,13,53,553,553,2553,2553,106,107,'FUAAAA','CEFAAA','OOOOxx'
+7526,3487,0,2,6,6,26,526,1526,2526,7526,52,53,'MDAAAA','DEFAAA','VVVVxx'
+2031,3488,1,3,1,11,31,31,31,2031,2031,62,63,'DAAAAA','EEFAAA','AAAAxx'
+8793,3489,1,1,3,13,93,793,793,3793,8793,186,187,'FAAAAA','FEFAAA','HHHHxx'
+1122,3490,0,2,2,2,22,122,1122,1122,1122,44,45,'ERAAAA','GEFAAA','OOOOxx'
+1855,3491,1,3,5,15,55,855,1855,1855,1855,110,111,'JTAAAA','HEFAAA','VVVVxx'
+6613,3492,1,1,3,13,13,613,613,1613,6613,26,27,'JUAAAA','IEFAAA','AAAAxx'
+3231,3493,1,3,1,11,31,231,1231,3231,3231,62,63,'HUAAAA','JEFAAA','HHHHxx'
+9101,3494,1,1,1,1,1,101,1101,4101,9101,2,3,'BMAAAA','KEFAAA','OOOOxx'
+4937,3495,1,1,7,17,37,937,937,4937,4937,74,75,'XHAAAA','LEFAAA','VVVVxx'
+666,3496,0,2,6,6,66,666,666,666,666,132,133,'QZAAAA','MEFAAA','AAAAxx'
+8943,3497,1,3,3,3,43,943,943,3943,8943,86,87,'ZFAAAA','NEFAAA','HHHHxx'
+6164,3498,0,0,4,4,64,164,164,1164,6164,128,129,'CDAAAA','OEFAAA','OOOOxx'
+1081,3499,1,1,1,1,81,81,1081,1081,1081,162,163,'PPAAAA','PEFAAA','VVVVxx'
+210,3500,0,2,0,10,10,210,210,210,210,20,21,'CIAAAA','QEFAAA','AAAAxx'
+6024,3501,0,0,4,4,24,24,24,1024,6024,48,49,'SXAAAA','REFAAA','HHHHxx'
+5715,3502,1,3,5,15,15,715,1715,715,5715,30,31,'VLAAAA','SEFAAA','OOOOxx'
+8938,3503,0,2,8,18,38,938,938,3938,8938,76,77,'UFAAAA','TEFAAA','VVVVxx'
+1326,3504,0,2,6,6,26,326,1326,1326,1326,52,53,'AZAAAA','UEFAAA','AAAAxx'
+7111,3505,1,3,1,11,11,111,1111,2111,7111,22,23,'NNAAAA','VEFAAA','HHHHxx'
+757,3506,1,1,7,17,57,757,757,757,757,114,115,'DDAAAA','WEFAAA','OOOOxx'
+8933,3507,1,1,3,13,33,933,933,3933,8933,66,67,'PFAAAA','XEFAAA','VVVVxx'
+6495,3508,1,3,5,15,95,495,495,1495,6495,190,191,'VPAAAA','YEFAAA','AAAAxx'
+3134,3509,0,2,4,14,34,134,1134,3134,3134,68,69,'OQAAAA','ZEFAAA','HHHHxx'
+1304,3510,0,0,4,4,4,304,1304,1304,1304,8,9,'EYAAAA','AFFAAA','OOOOxx'
+1835,3511,1,3,5,15,35,835,1835,1835,1835,70,71,'PSAAAA','BFFAAA','VVVVxx'
+7275,3512,1,3,5,15,75,275,1275,2275,7275,150,151,'VTAAAA','CFFAAA','AAAAxx'
+7337,3513,1,1,7,17,37,337,1337,2337,7337,74,75,'FWAAAA','DFFAAA','HHHHxx'
+1282,3514,0,2,2,2,82,282,1282,1282,1282,164,165,'IXAAAA','EFFAAA','OOOOxx'
+6566,3515,0,2,6,6,66,566,566,1566,6566,132,133,'OSAAAA','FFFAAA','VVVVxx'
+3786,3516,0,2,6,6,86,786,1786,3786,3786,172,173,'QPAAAA','GFFAAA','AAAAxx'
+5741,3517,1,1,1,1,41,741,1741,741,5741,82,83,'VMAAAA','HFFAAA','HHHHxx'
+6076,3518,0,0,6,16,76,76,76,1076,6076,152,153,'SZAAAA','IFFAAA','OOOOxx'
+9998,3519,0,2,8,18,98,998,1998,4998,9998,196,197,'OUAAAA','JFFAAA','VVVVxx'
+6268,3520,0,0,8,8,68,268,268,1268,6268,136,137,'CHAAAA','KFFAAA','AAAAxx'
+9647,3521,1,3,7,7,47,647,1647,4647,9647,94,95,'BHAAAA','LFFAAA','HHHHxx'
+4877,3522,1,1,7,17,77,877,877,4877,4877,154,155,'PFAAAA','MFFAAA','OOOOxx'
+2652,3523,0,0,2,12,52,652,652,2652,2652,104,105,'AYAAAA','NFFAAA','VVVVxx'
+1247,3524,1,3,7,7,47,247,1247,1247,1247,94,95,'ZVAAAA','OFFAAA','AAAAxx'
+2721,3525,1,1,1,1,21,721,721,2721,2721,42,43,'RAAAAA','PFFAAA','HHHHxx'
+5968,3526,0,0,8,8,68,968,1968,968,5968,136,137,'OVAAAA','QFFAAA','OOOOxx'
+9570,3527,0,2,0,10,70,570,1570,4570,9570,140,141,'CEAAAA','RFFAAA','VVVVxx'
+6425,3528,1,1,5,5,25,425,425,1425,6425,50,51,'DNAAAA','SFFAAA','AAAAxx'
+5451,3529,1,3,1,11,51,451,1451,451,5451,102,103,'RBAAAA','TFFAAA','HHHHxx'
+5668,3530,0,0,8,8,68,668,1668,668,5668,136,137,'AKAAAA','UFFAAA','OOOOxx'
+9493,3531,1,1,3,13,93,493,1493,4493,9493,186,187,'DBAAAA','VFFAAA','VVVVxx'
+7973,3532,1,1,3,13,73,973,1973,2973,7973,146,147,'RUAAAA','WFFAAA','AAAAxx'
+8250,3533,0,2,0,10,50,250,250,3250,8250,100,101,'IFAAAA','XFFAAA','HHHHxx'
+82,3534,0,2,2,2,82,82,82,82,82,164,165,'EDAAAA','YFFAAA','OOOOxx'
+6258,3535,0,2,8,18,58,258,258,1258,6258,116,117,'SGAAAA','ZFFAAA','VVVVxx'
+9978,3536,0,2,8,18,78,978,1978,4978,9978,156,157,'UTAAAA','AGFAAA','AAAAxx'
+6930,3537,0,2,0,10,30,930,930,1930,6930,60,61,'OGAAAA','BGFAAA','HHHHxx'
+3746,3538,0,2,6,6,46,746,1746,3746,3746,92,93,'COAAAA','CGFAAA','OOOOxx'
+7065,3539,1,1,5,5,65,65,1065,2065,7065,130,131,'TLAAAA','DGFAAA','VVVVxx'
+4281,3540,1,1,1,1,81,281,281,4281,4281,162,163,'RIAAAA','EGFAAA','AAAAxx'
+4367,3541,1,3,7,7,67,367,367,4367,4367,134,135,'ZLAAAA','FGFAAA','HHHHxx'
+9526,3542,0,2,6,6,26,526,1526,4526,9526,52,53,'KCAAAA','GGFAAA','OOOOxx'
+5880,3543,0,0,0,0,80,880,1880,880,5880,160,161,'ESAAAA','HGFAAA','VVVVxx'
+8480,3544,0,0,0,0,80,480,480,3480,8480,160,161,'EOAAAA','IGFAAA','AAAAxx'
+2476,3545,0,0,6,16,76,476,476,2476,2476,152,153,'GRAAAA','JGFAAA','HHHHxx'
+9074,3546,0,2,4,14,74,74,1074,4074,9074,148,149,'ALAAAA','KGFAAA','OOOOxx'
+4830,3547,0,2,0,10,30,830,830,4830,4830,60,61,'UDAAAA','LGFAAA','VVVVxx'
+3207,3548,1,3,7,7,7,207,1207,3207,3207,14,15,'JTAAAA','MGFAAA','AAAAxx'
+7894,3549,0,2,4,14,94,894,1894,2894,7894,188,189,'QRAAAA','NGFAAA','HHHHxx'
+3860,3550,0,0,0,0,60,860,1860,3860,3860,120,121,'MSAAAA','OGFAAA','OOOOxx'
+5293,3551,1,1,3,13,93,293,1293,293,5293,186,187,'PVAAAA','PGFAAA','VVVVxx'
+6895,3552,1,3,5,15,95,895,895,1895,6895,190,191,'FFAAAA','QGFAAA','AAAAxx'
+9908,3553,0,0,8,8,8,908,1908,4908,9908,16,17,'CRAAAA','RGFAAA','HHHHxx'
+9247,3554,1,3,7,7,47,247,1247,4247,9247,94,95,'RRAAAA','SGFAAA','OOOOxx'
+8110,3555,0,2,0,10,10,110,110,3110,8110,20,21,'YZAAAA','TGFAAA','VVVVxx'
+4716,3556,0,0,6,16,16,716,716,4716,4716,32,33,'KZAAAA','UGFAAA','AAAAxx'
+4979,3557,1,3,9,19,79,979,979,4979,4979,158,159,'NJAAAA','VGFAAA','HHHHxx'
+5280,3558,0,0,0,0,80,280,1280,280,5280,160,161,'CVAAAA','WGFAAA','OOOOxx'
+8326,3559,0,2,6,6,26,326,326,3326,8326,52,53,'GIAAAA','XGFAAA','VVVVxx'
+5572,3560,0,0,2,12,72,572,1572,572,5572,144,145,'IGAAAA','YGFAAA','AAAAxx'
+4665,3561,1,1,5,5,65,665,665,4665,4665,130,131,'LXAAAA','ZGFAAA','HHHHxx'
+3665,3562,1,1,5,5,65,665,1665,3665,3665,130,131,'ZKAAAA','AHFAAA','OOOOxx'
+6744,3563,0,0,4,4,44,744,744,1744,6744,88,89,'KZAAAA','BHFAAA','VVVVxx'
+1897,3564,1,1,7,17,97,897,1897,1897,1897,194,195,'ZUAAAA','CHFAAA','AAAAxx'
+1220,3565,0,0,0,0,20,220,1220,1220,1220,40,41,'YUAAAA','DHFAAA','HHHHxx'
+2614,3566,0,2,4,14,14,614,614,2614,2614,28,29,'OWAAAA','EHFAAA','OOOOxx'
+8509,3567,1,1,9,9,9,509,509,3509,8509,18,19,'HPAAAA','FHFAAA','VVVVxx'
+8521,3568,1,1,1,1,21,521,521,3521,8521,42,43,'TPAAAA','GHFAAA','AAAAxx'
+4121,3569,1,1,1,1,21,121,121,4121,4121,42,43,'NCAAAA','HHFAAA','HHHHxx'
+9663,3570,1,3,3,3,63,663,1663,4663,9663,126,127,'RHAAAA','IHFAAA','OOOOxx'
+2346,3571,0,2,6,6,46,346,346,2346,2346,92,93,'GMAAAA','JHFAAA','VVVVxx'
+3370,3572,0,2,0,10,70,370,1370,3370,3370,140,141,'QZAAAA','KHFAAA','AAAAxx'
+1498,3573,0,2,8,18,98,498,1498,1498,1498,196,197,'QFAAAA','LHFAAA','HHHHxx'
+7422,3574,0,2,2,2,22,422,1422,2422,7422,44,45,'MZAAAA','MHFAAA','OOOOxx'
+3472,3575,0,0,2,12,72,472,1472,3472,3472,144,145,'ODAAAA','NHFAAA','VVVVxx'
+4126,3576,0,2,6,6,26,126,126,4126,4126,52,53,'SCAAAA','OHFAAA','AAAAxx'
+4494,3577,0,2,4,14,94,494,494,4494,4494,188,189,'WQAAAA','PHFAAA','HHHHxx'
+6323,3578,1,3,3,3,23,323,323,1323,6323,46,47,'FJAAAA','QHFAAA','OOOOxx'
+2823,3579,1,3,3,3,23,823,823,2823,2823,46,47,'PEAAAA','RHFAAA','VVVVxx'
+8596,3580,0,0,6,16,96,596,596,3596,8596,192,193,'QSAAAA','SHFAAA','AAAAxx'
+6642,3581,0,2,2,2,42,642,642,1642,6642,84,85,'MVAAAA','THFAAA','HHHHxx'
+9276,3582,0,0,6,16,76,276,1276,4276,9276,152,153,'USAAAA','UHFAAA','OOOOxx'
+4148,3583,0,0,8,8,48,148,148,4148,4148,96,97,'ODAAAA','VHFAAA','VVVVxx'
+9770,3584,0,2,0,10,70,770,1770,4770,9770,140,141,'ULAAAA','WHFAAA','AAAAxx'
+9812,3585,0,0,2,12,12,812,1812,4812,9812,24,25,'KNAAAA','XHFAAA','HHHHxx'
+4419,3586,1,3,9,19,19,419,419,4419,4419,38,39,'ZNAAAA','YHFAAA','OOOOxx'
+3802,3587,0,2,2,2,2,802,1802,3802,3802,4,5,'GQAAAA','ZHFAAA','VVVVxx'
+3210,3588,0,2,0,10,10,210,1210,3210,3210,20,21,'MTAAAA','AIFAAA','AAAAxx'
+6794,3589,0,2,4,14,94,794,794,1794,6794,188,189,'IBAAAA','BIFAAA','HHHHxx'
+242,3590,0,2,2,2,42,242,242,242,242,84,85,'IJAAAA','CIFAAA','OOOOxx'
+962,3591,0,2,2,2,62,962,962,962,962,124,125,'ALAAAA','DIFAAA','VVVVxx'
+7151,3592,1,3,1,11,51,151,1151,2151,7151,102,103,'BPAAAA','EIFAAA','AAAAxx'
+9440,3593,0,0,0,0,40,440,1440,4440,9440,80,81,'CZAAAA','FIFAAA','HHHHxx'
+721,3594,1,1,1,1,21,721,721,721,721,42,43,'TBAAAA','GIFAAA','OOOOxx'
+2119,3595,1,3,9,19,19,119,119,2119,2119,38,39,'NDAAAA','HIFAAA','VVVVxx'
+9883,3596,1,3,3,3,83,883,1883,4883,9883,166,167,'DQAAAA','IIFAAA','AAAAxx'
+5071,3597,1,3,1,11,71,71,1071,71,5071,142,143,'BNAAAA','JIFAAA','HHHHxx'
+8239,3598,1,3,9,19,39,239,239,3239,8239,78,79,'XEAAAA','KIFAAA','OOOOxx'
+7451,3599,1,3,1,11,51,451,1451,2451,7451,102,103,'PAAAAA','LIFAAA','VVVVxx'
+9517,3600,1,1,7,17,17,517,1517,4517,9517,34,35,'BCAAAA','MIFAAA','AAAAxx'
+9180,3601,0,0,0,0,80,180,1180,4180,9180,160,161,'CPAAAA','NIFAAA','HHHHxx'
+9327,3602,1,3,7,7,27,327,1327,4327,9327,54,55,'TUAAAA','OIFAAA','OOOOxx'
+5462,3603,0,2,2,2,62,462,1462,462,5462,124,125,'CCAAAA','PIFAAA','VVVVxx'
+8306,3604,0,2,6,6,6,306,306,3306,8306,12,13,'MHAAAA','QIFAAA','AAAAxx'
+6234,3605,0,2,4,14,34,234,234,1234,6234,68,69,'UFAAAA','RIFAAA','HHHHxx'
+8771,3606,1,3,1,11,71,771,771,3771,8771,142,143,'JZAAAA','SIFAAA','OOOOxx'
+5853,3607,1,1,3,13,53,853,1853,853,5853,106,107,'DRAAAA','TIFAAA','VVVVxx'
+8373,3608,1,1,3,13,73,373,373,3373,8373,146,147,'BKAAAA','UIFAAA','AAAAxx'
+5017,3609,1,1,7,17,17,17,1017,17,5017,34,35,'ZKAAAA','VIFAAA','HHHHxx'
+8025,3610,1,1,5,5,25,25,25,3025,8025,50,51,'RWAAAA','WIFAAA','OOOOxx'
+2526,3611,0,2,6,6,26,526,526,2526,2526,52,53,'ETAAAA','XIFAAA','VVVVxx'
+7419,3612,1,3,9,19,19,419,1419,2419,7419,38,39,'JZAAAA','YIFAAA','AAAAxx'
+4572,3613,0,0,2,12,72,572,572,4572,4572,144,145,'WTAAAA','ZIFAAA','HHHHxx'
+7744,3614,0,0,4,4,44,744,1744,2744,7744,88,89,'WLAAAA','AJFAAA','OOOOxx'
+8825,3615,1,1,5,5,25,825,825,3825,8825,50,51,'LBAAAA','BJFAAA','VVVVxx'
+6067,3616,1,3,7,7,67,67,67,1067,6067,134,135,'JZAAAA','CJFAAA','AAAAxx'
+3291,3617,1,3,1,11,91,291,1291,3291,3291,182,183,'PWAAAA','DJFAAA','HHHHxx'
+7115,3618,1,3,5,15,15,115,1115,2115,7115,30,31,'RNAAAA','EJFAAA','OOOOxx'
+2626,3619,0,2,6,6,26,626,626,2626,2626,52,53,'AXAAAA','FJFAAA','VVVVxx'
+4109,3620,1,1,9,9,9,109,109,4109,4109,18,19,'BCAAAA','GJFAAA','AAAAxx'
+4056,3621,0,0,6,16,56,56,56,4056,4056,112,113,'AAAAAA','HJFAAA','HHHHxx'
+6811,3622,1,3,1,11,11,811,811,1811,6811,22,23,'ZBAAAA','IJFAAA','OOOOxx'
+680,3623,0,0,0,0,80,680,680,680,680,160,161,'EAAAAA','JJFAAA','VVVVxx'
+474,3624,0,2,4,14,74,474,474,474,474,148,149,'GSAAAA','KJFAAA','AAAAxx'
+9294,3625,0,2,4,14,94,294,1294,4294,9294,188,189,'MTAAAA','LJFAAA','HHHHxx'
+7555,3626,1,3,5,15,55,555,1555,2555,7555,110,111,'PEAAAA','MJFAAA','OOOOxx'
+8076,3627,0,0,6,16,76,76,76,3076,8076,152,153,'QYAAAA','NJFAAA','VVVVxx'
+3840,3628,0,0,0,0,40,840,1840,3840,3840,80,81,'SRAAAA','OJFAAA','AAAAxx'
+5955,3629,1,3,5,15,55,955,1955,955,5955,110,111,'BVAAAA','PJFAAA','HHHHxx'
+994,3630,0,2,4,14,94,994,994,994,994,188,189,'GMAAAA','QJFAAA','OOOOxx'
+2089,3631,1,1,9,9,89,89,89,2089,2089,178,179,'JCAAAA','RJFAAA','VVVVxx'
+869,3632,1,1,9,9,69,869,869,869,869,138,139,'LHAAAA','SJFAAA','AAAAxx'
+1223,3633,1,3,3,3,23,223,1223,1223,1223,46,47,'BVAAAA','TJFAAA','HHHHxx'
+1514,3634,0,2,4,14,14,514,1514,1514,1514,28,29,'GGAAAA','UJFAAA','OOOOxx'
+4891,3635,1,3,1,11,91,891,891,4891,4891,182,183,'DGAAAA','VJFAAA','VVVVxx'
+4190,3636,0,2,0,10,90,190,190,4190,4190,180,181,'EFAAAA','WJFAAA','AAAAxx'
+4377,3637,1,1,7,17,77,377,377,4377,4377,154,155,'JMAAAA','XJFAAA','HHHHxx'
+9195,3638,1,3,5,15,95,195,1195,4195,9195,190,191,'RPAAAA','YJFAAA','OOOOxx'
+3827,3639,1,3,7,7,27,827,1827,3827,3827,54,55,'FRAAAA','ZJFAAA','VVVVxx'
+7386,3640,0,2,6,6,86,386,1386,2386,7386,172,173,'CYAAAA','AKFAAA','AAAAxx'
+6665,3641,1,1,5,5,65,665,665,1665,6665,130,131,'JWAAAA','BKFAAA','HHHHxx'
+7514,3642,0,2,4,14,14,514,1514,2514,7514,28,29,'ADAAAA','CKFAAA','OOOOxx'
+6431,3643,1,3,1,11,31,431,431,1431,6431,62,63,'JNAAAA','DKFAAA','VVVVxx'
+3251,3644,1,3,1,11,51,251,1251,3251,3251,102,103,'BVAAAA','EKFAAA','AAAAxx'
+8439,3645,1,3,9,19,39,439,439,3439,8439,78,79,'PMAAAA','FKFAAA','HHHHxx'
+831,3646,1,3,1,11,31,831,831,831,831,62,63,'ZFAAAA','GKFAAA','OOOOxx'
+8485,3647,1,1,5,5,85,485,485,3485,8485,170,171,'JOAAAA','HKFAAA','VVVVxx'
+7314,3648,0,2,4,14,14,314,1314,2314,7314,28,29,'IVAAAA','IKFAAA','AAAAxx'
+3044,3649,0,0,4,4,44,44,1044,3044,3044,88,89,'CNAAAA','JKFAAA','HHHHxx'
+4283,3650,1,3,3,3,83,283,283,4283,4283,166,167,'TIAAAA','KKFAAA','OOOOxx'
+298,3651,0,2,8,18,98,298,298,298,298,196,197,'MLAAAA','LKFAAA','VVVVxx'
+7114,3652,0,2,4,14,14,114,1114,2114,7114,28,29,'QNAAAA','MKFAAA','AAAAxx'
+9664,3653,0,0,4,4,64,664,1664,4664,9664,128,129,'SHAAAA','NKFAAA','HHHHxx'
+5315,3654,1,3,5,15,15,315,1315,315,5315,30,31,'LWAAAA','OKFAAA','OOOOxx'
+2164,3655,0,0,4,4,64,164,164,2164,2164,128,129,'GFAAAA','PKFAAA','VVVVxx'
+3390,3656,0,2,0,10,90,390,1390,3390,3390,180,181,'KAAAAA','QKFAAA','AAAAxx'
+836,3657,0,0,6,16,36,836,836,836,836,72,73,'EGAAAA','RKFAAA','HHHHxx'
+3316,3658,0,0,6,16,16,316,1316,3316,3316,32,33,'OXAAAA','SKFAAA','OOOOxx'
+1284,3659,0,0,4,4,84,284,1284,1284,1284,168,169,'KXAAAA','TKFAAA','VVVVxx'
+2497,3660,1,1,7,17,97,497,497,2497,2497,194,195,'BSAAAA','UKFAAA','AAAAxx'
+1374,3661,0,2,4,14,74,374,1374,1374,1374,148,149,'WAAAAA','VKFAAA','HHHHxx'
+9525,3662,1,1,5,5,25,525,1525,4525,9525,50,51,'JCAAAA','WKFAAA','OOOOxx'
+2911,3663,1,3,1,11,11,911,911,2911,2911,22,23,'ZHAAAA','XKFAAA','VVVVxx'
+9686,3664,0,2,6,6,86,686,1686,4686,9686,172,173,'OIAAAA','YKFAAA','AAAAxx'
+584,3665,0,0,4,4,84,584,584,584,584,168,169,'MWAAAA','ZKFAAA','HHHHxx'
+5653,3666,1,1,3,13,53,653,1653,653,5653,106,107,'LJAAAA','ALFAAA','OOOOxx'
+4986,3667,0,2,6,6,86,986,986,4986,4986,172,173,'UJAAAA','BLFAAA','VVVVxx'
+6049,3668,1,1,9,9,49,49,49,1049,6049,98,99,'RYAAAA','CLFAAA','AAAAxx'
+9891,3669,1,3,1,11,91,891,1891,4891,9891,182,183,'LQAAAA','DLFAAA','HHHHxx'
+8809,3670,1,1,9,9,9,809,809,3809,8809,18,19,'VAAAAA','ELFAAA','OOOOxx'
+8598,3671,0,2,8,18,98,598,598,3598,8598,196,197,'SSAAAA','FLFAAA','VVVVxx'
+2573,3672,1,1,3,13,73,573,573,2573,2573,146,147,'ZUAAAA','GLFAAA','AAAAxx'
+6864,3673,0,0,4,4,64,864,864,1864,6864,128,129,'AEAAAA','HLFAAA','HHHHxx'
+7932,3674,0,0,2,12,32,932,1932,2932,7932,64,65,'CTAAAA','ILFAAA','OOOOxx'
+6605,3675,1,1,5,5,5,605,605,1605,6605,10,11,'BUAAAA','JLFAAA','VVVVxx'
+9500,3676,0,0,0,0,0,500,1500,4500,9500,0,1,'KBAAAA','KLFAAA','AAAAxx'
+8742,3677,0,2,2,2,42,742,742,3742,8742,84,85,'GYAAAA','LLFAAA','HHHHxx'
+9815,3678,1,3,5,15,15,815,1815,4815,9815,30,31,'NNAAAA','MLFAAA','OOOOxx'
+3319,3679,1,3,9,19,19,319,1319,3319,3319,38,39,'RXAAAA','NLFAAA','VVVVxx'
+184,3680,0,0,4,4,84,184,184,184,184,168,169,'CHAAAA','OLFAAA','AAAAxx'
+8886,3681,0,2,6,6,86,886,886,3886,8886,172,173,'UDAAAA','PLFAAA','HHHHxx'
+7050,3682,0,2,0,10,50,50,1050,2050,7050,100,101,'ELAAAA','QLFAAA','OOOOxx'
+9781,3683,1,1,1,1,81,781,1781,4781,9781,162,163,'FMAAAA','RLFAAA','VVVVxx'
+2443,3684,1,3,3,3,43,443,443,2443,2443,86,87,'ZPAAAA','SLFAAA','AAAAxx'
+1160,3685,0,0,0,0,60,160,1160,1160,1160,120,121,'QSAAAA','TLFAAA','HHHHxx'
+4600,3686,0,0,0,0,0,600,600,4600,4600,0,1,'YUAAAA','ULFAAA','OOOOxx'
+813,3687,1,1,3,13,13,813,813,813,813,26,27,'HFAAAA','VLFAAA','VVVVxx'
+5078,3688,0,2,8,18,78,78,1078,78,5078,156,157,'INAAAA','WLFAAA','AAAAxx'
+9008,3689,0,0,8,8,8,8,1008,4008,9008,16,17,'MIAAAA','XLFAAA','HHHHxx'
+9016,3690,0,0,6,16,16,16,1016,4016,9016,32,33,'UIAAAA','YLFAAA','OOOOxx'
+2747,3691,1,3,7,7,47,747,747,2747,2747,94,95,'RBAAAA','ZLFAAA','VVVVxx'
+3106,3692,0,2,6,6,6,106,1106,3106,3106,12,13,'MPAAAA','AMFAAA','AAAAxx'
+8235,3693,1,3,5,15,35,235,235,3235,8235,70,71,'TEAAAA','BMFAAA','HHHHxx'
+5582,3694,0,2,2,2,82,582,1582,582,5582,164,165,'SGAAAA','CMFAAA','OOOOxx'
+4334,3695,0,2,4,14,34,334,334,4334,4334,68,69,'SKAAAA','DMFAAA','VVVVxx'
+1612,3696,0,0,2,12,12,612,1612,1612,1612,24,25,'AKAAAA','EMFAAA','AAAAxx'
+5650,3697,0,2,0,10,50,650,1650,650,5650,100,101,'IJAAAA','FMFAAA','HHHHxx'
+6086,3698,0,2,6,6,86,86,86,1086,6086,172,173,'CAAAAA','GMFAAA','OOOOxx'
+9667,3699,1,3,7,7,67,667,1667,4667,9667,134,135,'VHAAAA','HMFAAA','VVVVxx'
+4215,3700,1,3,5,15,15,215,215,4215,4215,30,31,'DGAAAA','IMFAAA','AAAAxx'
+8553,3701,1,1,3,13,53,553,553,3553,8553,106,107,'ZQAAAA','JMFAAA','HHHHxx'
+9066,3702,0,2,6,6,66,66,1066,4066,9066,132,133,'SKAAAA','KMFAAA','OOOOxx'
+1092,3703,0,0,2,12,92,92,1092,1092,1092,184,185,'AQAAAA','LMFAAA','VVVVxx'
+2848,3704,0,0,8,8,48,848,848,2848,2848,96,97,'OFAAAA','MMFAAA','AAAAxx'
+2765,3705,1,1,5,5,65,765,765,2765,2765,130,131,'JCAAAA','NMFAAA','HHHHxx'
+6513,3706,1,1,3,13,13,513,513,1513,6513,26,27,'NQAAAA','OMFAAA','OOOOxx'
+6541,3707,1,1,1,1,41,541,541,1541,6541,82,83,'PRAAAA','PMFAAA','VVVVxx'
+9617,3708,1,1,7,17,17,617,1617,4617,9617,34,35,'XFAAAA','QMFAAA','AAAAxx'
+5870,3709,0,2,0,10,70,870,1870,870,5870,140,141,'URAAAA','RMFAAA','HHHHxx'
+8811,3710,1,3,1,11,11,811,811,3811,8811,22,23,'XAAAAA','SMFAAA','OOOOxx'
+4529,3711,1,1,9,9,29,529,529,4529,4529,58,59,'FSAAAA','TMFAAA','VVVVxx'
+161,3712,1,1,1,1,61,161,161,161,161,122,123,'FGAAAA','UMFAAA','AAAAxx'
+641,3713,1,1,1,1,41,641,641,641,641,82,83,'RYAAAA','VMFAAA','HHHHxx'
+4767,3714,1,3,7,7,67,767,767,4767,4767,134,135,'JBAAAA','WMFAAA','OOOOxx'
+6293,3715,1,1,3,13,93,293,293,1293,6293,186,187,'BIAAAA','XMFAAA','VVVVxx'
+3816,3716,0,0,6,16,16,816,1816,3816,3816,32,33,'UQAAAA','YMFAAA','AAAAxx'
+4748,3717,0,0,8,8,48,748,748,4748,4748,96,97,'QAAAAA','ZMFAAA','HHHHxx'
+9924,3718,0,0,4,4,24,924,1924,4924,9924,48,49,'SRAAAA','ANFAAA','OOOOxx'
+6716,3719,0,0,6,16,16,716,716,1716,6716,32,33,'IYAAAA','BNFAAA','VVVVxx'
+8828,3720,0,0,8,8,28,828,828,3828,8828,56,57,'OBAAAA','CNFAAA','AAAAxx'
+4967,3721,1,3,7,7,67,967,967,4967,4967,134,135,'BJAAAA','DNFAAA','HHHHxx'
+9680,3722,0,0,0,0,80,680,1680,4680,9680,160,161,'IIAAAA','ENFAAA','OOOOxx'
+2784,3723,0,0,4,4,84,784,784,2784,2784,168,169,'CDAAAA','FNFAAA','VVVVxx'
+2882,3724,0,2,2,2,82,882,882,2882,2882,164,165,'WGAAAA','GNFAAA','AAAAxx'
+3641,3725,1,1,1,1,41,641,1641,3641,3641,82,83,'BKAAAA','HNFAAA','HHHHxx'
+5537,3726,1,1,7,17,37,537,1537,537,5537,74,75,'ZEAAAA','INFAAA','OOOOxx'
+820,3727,0,0,0,0,20,820,820,820,820,40,41,'OFAAAA','JNFAAA','VVVVxx'
+5847,3728,1,3,7,7,47,847,1847,847,5847,94,95,'XQAAAA','KNFAAA','AAAAxx'
+566,3729,0,2,6,6,66,566,566,566,566,132,133,'UVAAAA','LNFAAA','HHHHxx'
+2246,3730,0,2,6,6,46,246,246,2246,2246,92,93,'KIAAAA','MNFAAA','OOOOxx'
+6680,3731,0,0,0,0,80,680,680,1680,6680,160,161,'YWAAAA','NNFAAA','VVVVxx'
+2014,3732,0,2,4,14,14,14,14,2014,2014,28,29,'MZAAAA','ONFAAA','AAAAxx'
+8355,3733,1,3,5,15,55,355,355,3355,8355,110,111,'JJAAAA','PNFAAA','HHHHxx'
+1610,3734,0,2,0,10,10,610,1610,1610,1610,20,21,'YJAAAA','QNFAAA','OOOOxx'
+9719,3735,1,3,9,19,19,719,1719,4719,9719,38,39,'VJAAAA','RNFAAA','VVVVxx'
+8498,3736,0,2,8,18,98,498,498,3498,8498,196,197,'WOAAAA','SNFAAA','AAAAxx'
+5883,3737,1,3,3,3,83,883,1883,883,5883,166,167,'HSAAAA','TNFAAA','HHHHxx'
+7380,3738,0,0,0,0,80,380,1380,2380,7380,160,161,'WXAAAA','UNFAAA','OOOOxx'
+8865,3739,1,1,5,5,65,865,865,3865,8865,130,131,'ZCAAAA','VNFAAA','VVVVxx'
+4743,3740,1,3,3,3,43,743,743,4743,4743,86,87,'LAAAAA','WNFAAA','AAAAxx'
+5086,3741,0,2,6,6,86,86,1086,86,5086,172,173,'QNAAAA','XNFAAA','HHHHxx'
+2739,3742,1,3,9,19,39,739,739,2739,2739,78,79,'JBAAAA','YNFAAA','OOOOxx'
+9375,3743,1,3,5,15,75,375,1375,4375,9375,150,151,'PWAAAA','ZNFAAA','VVVVxx'
+7876,3744,0,0,6,16,76,876,1876,2876,7876,152,153,'YQAAAA','AOFAAA','AAAAxx'
+453,3745,1,1,3,13,53,453,453,453,453,106,107,'LRAAAA','BOFAAA','HHHHxx'
+6987,3746,1,3,7,7,87,987,987,1987,6987,174,175,'TIAAAA','COFAAA','OOOOxx'
+2860,3747,0,0,0,0,60,860,860,2860,2860,120,121,'AGAAAA','DOFAAA','VVVVxx'
+8372,3748,0,0,2,12,72,372,372,3372,8372,144,145,'AKAAAA','EOFAAA','AAAAxx'
+2048,3749,0,0,8,8,48,48,48,2048,2048,96,97,'UAAAAA','FOFAAA','HHHHxx'
+9231,3750,1,3,1,11,31,231,1231,4231,9231,62,63,'BRAAAA','GOFAAA','OOOOxx'
+634,3751,0,2,4,14,34,634,634,634,634,68,69,'KYAAAA','HOFAAA','VVVVxx'
+3998,3752,0,2,8,18,98,998,1998,3998,3998,196,197,'UXAAAA','IOFAAA','AAAAxx'
+4728,3753,0,0,8,8,28,728,728,4728,4728,56,57,'WZAAAA','JOFAAA','HHHHxx'
+579,3754,1,3,9,19,79,579,579,579,579,158,159,'HWAAAA','KOFAAA','OOOOxx'
+815,3755,1,3,5,15,15,815,815,815,815,30,31,'JFAAAA','LOFAAA','VVVVxx'
+1009,3756,1,1,9,9,9,9,1009,1009,1009,18,19,'VMAAAA','MOFAAA','AAAAxx'
+6596,3757,0,0,6,16,96,596,596,1596,6596,192,193,'STAAAA','NOFAAA','HHHHxx'
+2793,3758,1,1,3,13,93,793,793,2793,2793,186,187,'LDAAAA','OOFAAA','OOOOxx'
+9589,3759,1,1,9,9,89,589,1589,4589,9589,178,179,'VEAAAA','POFAAA','VVVVxx'
+2794,3760,0,2,4,14,94,794,794,2794,2794,188,189,'MDAAAA','QOFAAA','AAAAxx'
+2551,3761,1,3,1,11,51,551,551,2551,2551,102,103,'DUAAAA','ROFAAA','HHHHxx'
+1588,3762,0,0,8,8,88,588,1588,1588,1588,176,177,'CJAAAA','SOFAAA','OOOOxx'
+4443,3763,1,3,3,3,43,443,443,4443,4443,86,87,'XOAAAA','TOFAAA','VVVVxx'
+5009,3764,1,1,9,9,9,9,1009,9,5009,18,19,'RKAAAA','UOFAAA','AAAAxx'
+4287,3765,1,3,7,7,87,287,287,4287,4287,174,175,'XIAAAA','VOFAAA','HHHHxx'
+2167,3766,1,3,7,7,67,167,167,2167,2167,134,135,'JFAAAA','WOFAAA','OOOOxx'
+2290,3767,0,2,0,10,90,290,290,2290,2290,180,181,'CKAAAA','XOFAAA','VVVVxx'
+7225,3768,1,1,5,5,25,225,1225,2225,7225,50,51,'XRAAAA','YOFAAA','AAAAxx'
+8992,3769,0,0,2,12,92,992,992,3992,8992,184,185,'WHAAAA','ZOFAAA','HHHHxx'
+1540,3770,0,0,0,0,40,540,1540,1540,1540,80,81,'GHAAAA','APFAAA','OOOOxx'
+2029,3771,1,1,9,9,29,29,29,2029,2029,58,59,'BAAAAA','BPFAAA','VVVVxx'
+2855,3772,1,3,5,15,55,855,855,2855,2855,110,111,'VFAAAA','CPFAAA','AAAAxx'
+3534,3773,0,2,4,14,34,534,1534,3534,3534,68,69,'YFAAAA','DPFAAA','HHHHxx'
+8078,3774,0,2,8,18,78,78,78,3078,8078,156,157,'SYAAAA','EPFAAA','OOOOxx'
+9778,3775,0,2,8,18,78,778,1778,4778,9778,156,157,'CMAAAA','FPFAAA','VVVVxx'
+3543,3776,1,3,3,3,43,543,1543,3543,3543,86,87,'HGAAAA','GPFAAA','AAAAxx'
+4778,3777,0,2,8,18,78,778,778,4778,4778,156,157,'UBAAAA','HPFAAA','HHHHxx'
+8931,3778,1,3,1,11,31,931,931,3931,8931,62,63,'NFAAAA','IPFAAA','OOOOxx'
+557,3779,1,1,7,17,57,557,557,557,557,114,115,'LVAAAA','JPFAAA','VVVVxx'
+5546,3780,0,2,6,6,46,546,1546,546,5546,92,93,'IFAAAA','KPFAAA','AAAAxx'
+7527,3781,1,3,7,7,27,527,1527,2527,7527,54,55,'NDAAAA','LPFAAA','HHHHxx'
+5000,3782,0,0,0,0,0,0,1000,0,5000,0,1,'IKAAAA','MPFAAA','OOOOxx'
+7587,3783,1,3,7,7,87,587,1587,2587,7587,174,175,'VFAAAA','NPFAAA','VVVVxx'
+3014,3784,0,2,4,14,14,14,1014,3014,3014,28,29,'YLAAAA','OPFAAA','AAAAxx'
+5276,3785,0,0,6,16,76,276,1276,276,5276,152,153,'YUAAAA','PPFAAA','HHHHxx'
+6457,3786,1,1,7,17,57,457,457,1457,6457,114,115,'JOAAAA','QPFAAA','OOOOxx'
+389,3787,1,1,9,9,89,389,389,389,389,178,179,'ZOAAAA','RPFAAA','VVVVxx'
+7104,3788,0,0,4,4,4,104,1104,2104,7104,8,9,'GNAAAA','SPFAAA','AAAAxx'
+9995,3789,1,3,5,15,95,995,1995,4995,9995,190,191,'LUAAAA','TPFAAA','HHHHxx'
+7368,3790,0,0,8,8,68,368,1368,2368,7368,136,137,'KXAAAA','UPFAAA','OOOOxx'
+3258,3791,0,2,8,18,58,258,1258,3258,3258,116,117,'IVAAAA','VPFAAA','VVVVxx'
+9208,3792,0,0,8,8,8,208,1208,4208,9208,16,17,'EQAAAA','WPFAAA','AAAAxx'
+2396,3793,0,0,6,16,96,396,396,2396,2396,192,193,'EOAAAA','XPFAAA','HHHHxx'
+1715,3794,1,3,5,15,15,715,1715,1715,1715,30,31,'ZNAAAA','YPFAAA','OOOOxx'
+1240,3795,0,0,0,0,40,240,1240,1240,1240,80,81,'SVAAAA','ZPFAAA','VVVVxx'
+1952,3796,0,0,2,12,52,952,1952,1952,1952,104,105,'CXAAAA','AQFAAA','AAAAxx'
+4403,3797,1,3,3,3,3,403,403,4403,4403,6,7,'JNAAAA','BQFAAA','HHHHxx'
+6333,3798,1,1,3,13,33,333,333,1333,6333,66,67,'PJAAAA','CQFAAA','OOOOxx'
+2492,3799,0,0,2,12,92,492,492,2492,2492,184,185,'WRAAAA','DQFAAA','VVVVxx'
+6543,3800,1,3,3,3,43,543,543,1543,6543,86,87,'RRAAAA','EQFAAA','AAAAxx'
+5548,3801,0,0,8,8,48,548,1548,548,5548,96,97,'KFAAAA','FQFAAA','HHHHxx'
+3458,3802,0,2,8,18,58,458,1458,3458,3458,116,117,'ADAAAA','GQFAAA','OOOOxx'
+2588,3803,0,0,8,8,88,588,588,2588,2588,176,177,'OVAAAA','HQFAAA','VVVVxx'
+1364,3804,0,0,4,4,64,364,1364,1364,1364,128,129,'MAAAAA','IQFAAA','AAAAxx'
+9856,3805,0,0,6,16,56,856,1856,4856,9856,112,113,'CPAAAA','JQFAAA','HHHHxx'
+4964,3806,0,0,4,4,64,964,964,4964,4964,128,129,'YIAAAA','KQFAAA','OOOOxx'
+773,3807,1,1,3,13,73,773,773,773,773,146,147,'TDAAAA','LQFAAA','VVVVxx'
+6402,3808,0,2,2,2,2,402,402,1402,6402,4,5,'GMAAAA','MQFAAA','AAAAxx'
+7213,3809,1,1,3,13,13,213,1213,2213,7213,26,27,'LRAAAA','NQFAAA','HHHHxx'
+3385,3810,1,1,5,5,85,385,1385,3385,3385,170,171,'FAAAAA','OQFAAA','OOOOxx'
+6005,3811,1,1,5,5,5,5,5,1005,6005,10,11,'ZWAAAA','PQFAAA','VVVVxx'
+9346,3812,0,2,6,6,46,346,1346,4346,9346,92,93,'MVAAAA','QQFAAA','AAAAxx'
+1831,3813,1,3,1,11,31,831,1831,1831,1831,62,63,'LSAAAA','RQFAAA','HHHHxx'
+5406,3814,0,2,6,6,6,406,1406,406,5406,12,13,'YZAAAA','SQFAAA','OOOOxx'
+2154,3815,0,2,4,14,54,154,154,2154,2154,108,109,'WEAAAA','TQFAAA','VVVVxx'
+3721,3816,1,1,1,1,21,721,1721,3721,3721,42,43,'DNAAAA','UQFAAA','AAAAxx'
+2889,3817,1,1,9,9,89,889,889,2889,2889,178,179,'DHAAAA','VQFAAA','HHHHxx'
+4410,3818,0,2,0,10,10,410,410,4410,4410,20,21,'QNAAAA','WQFAAA','OOOOxx'
+7102,3819,0,2,2,2,2,102,1102,2102,7102,4,5,'ENAAAA','XQFAAA','VVVVxx'
+4057,3820,1,1,7,17,57,57,57,4057,4057,114,115,'BAAAAA','YQFAAA','AAAAxx'
+9780,3821,0,0,0,0,80,780,1780,4780,9780,160,161,'EMAAAA','ZQFAAA','HHHHxx'
+9481,3822,1,1,1,1,81,481,1481,4481,9481,162,163,'RAAAAA','ARFAAA','OOOOxx'
+2366,3823,0,2,6,6,66,366,366,2366,2366,132,133,'ANAAAA','BRFAAA','VVVVxx'
+2708,3824,0,0,8,8,8,708,708,2708,2708,16,17,'EAAAAA','CRFAAA','AAAAxx'
+7399,3825,1,3,9,19,99,399,1399,2399,7399,198,199,'PYAAAA','DRFAAA','HHHHxx'
+5234,3826,0,2,4,14,34,234,1234,234,5234,68,69,'ITAAAA','ERFAAA','OOOOxx'
+1843,3827,1,3,3,3,43,843,1843,1843,1843,86,87,'XSAAAA','FRFAAA','VVVVxx'
+1006,3828,0,2,6,6,6,6,1006,1006,1006,12,13,'SMAAAA','GRFAAA','AAAAxx'
+7696,3829,0,0,6,16,96,696,1696,2696,7696,192,193,'AKAAAA','HRFAAA','HHHHxx'
+6411,3830,1,3,1,11,11,411,411,1411,6411,22,23,'PMAAAA','IRFAAA','OOOOxx'
+3913,3831,1,1,3,13,13,913,1913,3913,3913,26,27,'NUAAAA','JRFAAA','VVVVxx'
+2538,3832,0,2,8,18,38,538,538,2538,2538,76,77,'QTAAAA','KRFAAA','AAAAxx'
+3019,3833,1,3,9,19,19,19,1019,3019,3019,38,39,'DMAAAA','LRFAAA','HHHHxx'
+107,3834,1,3,7,7,7,107,107,107,107,14,15,'DEAAAA','MRFAAA','OOOOxx'
+427,3835,1,3,7,7,27,427,427,427,427,54,55,'LQAAAA','NRFAAA','VVVVxx'
+9849,3836,1,1,9,9,49,849,1849,4849,9849,98,99,'VOAAAA','ORFAAA','AAAAxx'
+4195,3837,1,3,5,15,95,195,195,4195,4195,190,191,'JFAAAA','PRFAAA','HHHHxx'
+9215,3838,1,3,5,15,15,215,1215,4215,9215,30,31,'LQAAAA','QRFAAA','OOOOxx'
+3165,3839,1,1,5,5,65,165,1165,3165,3165,130,131,'TRAAAA','RRFAAA','VVVVxx'
+3280,3840,0,0,0,0,80,280,1280,3280,3280,160,161,'EWAAAA','SRFAAA','AAAAxx'
+4477,3841,1,1,7,17,77,477,477,4477,4477,154,155,'FQAAAA','TRFAAA','HHHHxx'
+5885,3842,1,1,5,5,85,885,1885,885,5885,170,171,'JSAAAA','URFAAA','OOOOxx'
+3311,3843,1,3,1,11,11,311,1311,3311,3311,22,23,'JXAAAA','VRFAAA','VVVVxx'
+6453,3844,1,1,3,13,53,453,453,1453,6453,106,107,'FOAAAA','WRFAAA','AAAAxx'
+8527,3845,1,3,7,7,27,527,527,3527,8527,54,55,'ZPAAAA','XRFAAA','HHHHxx'
+1921,3846,1,1,1,1,21,921,1921,1921,1921,42,43,'XVAAAA','YRFAAA','OOOOxx'
+2427,3847,1,3,7,7,27,427,427,2427,2427,54,55,'JPAAAA','ZRFAAA','VVVVxx'
+3691,3848,1,3,1,11,91,691,1691,3691,3691,182,183,'ZLAAAA','ASFAAA','AAAAxx'
+3882,3849,0,2,2,2,82,882,1882,3882,3882,164,165,'ITAAAA','BSFAAA','HHHHxx'
+562,3850,0,2,2,2,62,562,562,562,562,124,125,'QVAAAA','CSFAAA','OOOOxx'
+377,3851,1,1,7,17,77,377,377,377,377,154,155,'NOAAAA','DSFAAA','VVVVxx'
+1497,3852,1,1,7,17,97,497,1497,1497,1497,194,195,'PFAAAA','ESFAAA','AAAAxx'
+4453,3853,1,1,3,13,53,453,453,4453,4453,106,107,'HPAAAA','FSFAAA','HHHHxx'
+4678,3854,0,2,8,18,78,678,678,4678,4678,156,157,'YXAAAA','GSFAAA','OOOOxx'
+2234,3855,0,2,4,14,34,234,234,2234,2234,68,69,'YHAAAA','HSFAAA','VVVVxx'
+1073,3856,1,1,3,13,73,73,1073,1073,1073,146,147,'HPAAAA','ISFAAA','AAAAxx'
+6479,3857,1,3,9,19,79,479,479,1479,6479,158,159,'FPAAAA','JSFAAA','HHHHxx'
+5665,3858,1,1,5,5,65,665,1665,665,5665,130,131,'XJAAAA','KSFAAA','OOOOxx'
+586,3859,0,2,6,6,86,586,586,586,586,172,173,'OWAAAA','LSFAAA','VVVVxx'
+1584,3860,0,0,4,4,84,584,1584,1584,1584,168,169,'YIAAAA','MSFAAA','AAAAxx'
+2574,3861,0,2,4,14,74,574,574,2574,2574,148,149,'AVAAAA','NSFAAA','HHHHxx'
+9833,3862,1,1,3,13,33,833,1833,4833,9833,66,67,'FOAAAA','OSFAAA','OOOOxx'
+6726,3863,0,2,6,6,26,726,726,1726,6726,52,53,'SYAAAA','PSFAAA','VVVVxx'
+8497,3864,1,1,7,17,97,497,497,3497,8497,194,195,'VOAAAA','QSFAAA','AAAAxx'
+2914,3865,0,2,4,14,14,914,914,2914,2914,28,29,'CIAAAA','RSFAAA','HHHHxx'
+8586,3866,0,2,6,6,86,586,586,3586,8586,172,173,'GSAAAA','SSFAAA','OOOOxx'
+6973,3867,1,1,3,13,73,973,973,1973,6973,146,147,'FIAAAA','TSFAAA','VVVVxx'
+1322,3868,0,2,2,2,22,322,1322,1322,1322,44,45,'WYAAAA','USFAAA','AAAAxx'
+5242,3869,0,2,2,2,42,242,1242,242,5242,84,85,'QTAAAA','VSFAAA','HHHHxx'
+5581,3870,1,1,1,1,81,581,1581,581,5581,162,163,'RGAAAA','WSFAAA','OOOOxx'
+1365,3871,1,1,5,5,65,365,1365,1365,1365,130,131,'NAAAAA','XSFAAA','VVVVxx'
+2818,3872,0,2,8,18,18,818,818,2818,2818,36,37,'KEAAAA','YSFAAA','AAAAxx'
+3758,3873,0,2,8,18,58,758,1758,3758,3758,116,117,'OOAAAA','ZSFAAA','HHHHxx'
+2665,3874,1,1,5,5,65,665,665,2665,2665,130,131,'NYAAAA','ATFAAA','OOOOxx'
+9823,3875,1,3,3,3,23,823,1823,4823,9823,46,47,'VNAAAA','BTFAAA','VVVVxx'
+7057,3876,1,1,7,17,57,57,1057,2057,7057,114,115,'LLAAAA','CTFAAA','AAAAxx'
+543,3877,1,3,3,3,43,543,543,543,543,86,87,'XUAAAA','DTFAAA','HHHHxx'
+4008,3878,0,0,8,8,8,8,8,4008,4008,16,17,'EYAAAA','ETFAAA','OOOOxx'
+4397,3879,1,1,7,17,97,397,397,4397,4397,194,195,'DNAAAA','FTFAAA','VVVVxx'
+8533,3880,1,1,3,13,33,533,533,3533,8533,66,67,'FQAAAA','GTFAAA','AAAAxx'
+9728,3881,0,0,8,8,28,728,1728,4728,9728,56,57,'EKAAAA','HTFAAA','HHHHxx'
+5198,3882,0,2,8,18,98,198,1198,198,5198,196,197,'YRAAAA','ITFAAA','OOOOxx'
+5036,3883,0,0,6,16,36,36,1036,36,5036,72,73,'SLAAAA','JTFAAA','VVVVxx'
+4394,3884,0,2,4,14,94,394,394,4394,4394,188,189,'ANAAAA','KTFAAA','AAAAxx'
+9633,3885,1,1,3,13,33,633,1633,4633,9633,66,67,'NGAAAA','LTFAAA','HHHHxx'
+3339,3886,1,3,9,19,39,339,1339,3339,3339,78,79,'LYAAAA','MTFAAA','OOOOxx'
+9529,3887,1,1,9,9,29,529,1529,4529,9529,58,59,'NCAAAA','NTFAAA','VVVVxx'
+4780,3888,0,0,0,0,80,780,780,4780,4780,160,161,'WBAAAA','OTFAAA','AAAAxx'
+4862,3889,0,2,2,2,62,862,862,4862,4862,124,125,'AFAAAA','PTFAAA','HHHHxx'
+8152,3890,0,0,2,12,52,152,152,3152,8152,104,105,'OBAAAA','QTFAAA','OOOOxx'
+9330,3891,0,2,0,10,30,330,1330,4330,9330,60,61,'WUAAAA','RTFAAA','VVVVxx'
+4362,3892,0,2,2,2,62,362,362,4362,4362,124,125,'ULAAAA','STFAAA','AAAAxx'
+4688,3893,0,0,8,8,88,688,688,4688,4688,176,177,'IYAAAA','TTFAAA','HHHHxx'
+1903,3894,1,3,3,3,3,903,1903,1903,1903,6,7,'FVAAAA','UTFAAA','OOOOxx'
+9027,3895,1,3,7,7,27,27,1027,4027,9027,54,55,'FJAAAA','VTFAAA','VVVVxx'
+5385,3896,1,1,5,5,85,385,1385,385,5385,170,171,'DZAAAA','WTFAAA','AAAAxx'
+9854,3897,0,2,4,14,54,854,1854,4854,9854,108,109,'APAAAA','XTFAAA','HHHHxx'
+9033,3898,1,1,3,13,33,33,1033,4033,9033,66,67,'LJAAAA','YTFAAA','OOOOxx'
+3185,3899,1,1,5,5,85,185,1185,3185,3185,170,171,'NSAAAA','ZTFAAA','VVVVxx'
+2618,3900,0,2,8,18,18,618,618,2618,2618,36,37,'SWAAAA','AUFAAA','AAAAxx'
+371,3901,1,3,1,11,71,371,371,371,371,142,143,'HOAAAA','BUFAAA','HHHHxx'
+3697,3902,1,1,7,17,97,697,1697,3697,3697,194,195,'FMAAAA','CUFAAA','OOOOxx'
+1682,3903,0,2,2,2,82,682,1682,1682,1682,164,165,'SMAAAA','DUFAAA','VVVVxx'
+3333,3904,1,1,3,13,33,333,1333,3333,3333,66,67,'FYAAAA','EUFAAA','AAAAxx'
+1722,3905,0,2,2,2,22,722,1722,1722,1722,44,45,'GOAAAA','FUFAAA','HHHHxx'
+2009,3906,1,1,9,9,9,9,9,2009,2009,18,19,'HZAAAA','GUFAAA','OOOOxx'
+3517,3907,1,1,7,17,17,517,1517,3517,3517,34,35,'HFAAAA','HUFAAA','VVVVxx'
+7640,3908,0,0,0,0,40,640,1640,2640,7640,80,81,'WHAAAA','IUFAAA','AAAAxx'
+259,3909,1,3,9,19,59,259,259,259,259,118,119,'ZJAAAA','JUFAAA','HHHHxx'
+1400,3910,0,0,0,0,0,400,1400,1400,1400,0,1,'WBAAAA','KUFAAA','OOOOxx'
+6663,3911,1,3,3,3,63,663,663,1663,6663,126,127,'HWAAAA','LUFAAA','VVVVxx'
+1576,3912,0,0,6,16,76,576,1576,1576,1576,152,153,'QIAAAA','MUFAAA','AAAAxx'
+8843,3913,1,3,3,3,43,843,843,3843,8843,86,87,'DCAAAA','NUFAAA','HHHHxx'
+9474,3914,0,2,4,14,74,474,1474,4474,9474,148,149,'KAAAAA','OUFAAA','OOOOxx'
+1597,3915,1,1,7,17,97,597,1597,1597,1597,194,195,'LJAAAA','PUFAAA','VVVVxx'
+1143,3916,1,3,3,3,43,143,1143,1143,1143,86,87,'ZRAAAA','QUFAAA','AAAAxx'
+4162,3917,0,2,2,2,62,162,162,4162,4162,124,125,'CEAAAA','RUFAAA','HHHHxx'
+1301,3918,1,1,1,1,1,301,1301,1301,1301,2,3,'BYAAAA','SUFAAA','OOOOxx'
+2935,3919,1,3,5,15,35,935,935,2935,2935,70,71,'XIAAAA','TUFAAA','VVVVxx'
+886,3920,0,2,6,6,86,886,886,886,886,172,173,'CIAAAA','UUFAAA','AAAAxx'
+1661,3921,1,1,1,1,61,661,1661,1661,1661,122,123,'XLAAAA','VUFAAA','HHHHxx'
+1026,3922,0,2,6,6,26,26,1026,1026,1026,52,53,'MNAAAA','WUFAAA','OOOOxx'
+7034,3923,0,2,4,14,34,34,1034,2034,7034,68,69,'OKAAAA','XUFAAA','VVVVxx'
+2305,3924,1,1,5,5,5,305,305,2305,2305,10,11,'RKAAAA','YUFAAA','AAAAxx'
+1725,3925,1,1,5,5,25,725,1725,1725,1725,50,51,'JOAAAA','ZUFAAA','HHHHxx'
+909,3926,1,1,9,9,9,909,909,909,909,18,19,'ZIAAAA','AVFAAA','OOOOxx'
+9906,3927,0,2,6,6,6,906,1906,4906,9906,12,13,'ARAAAA','BVFAAA','VVVVxx'
+3309,3928,1,1,9,9,9,309,1309,3309,3309,18,19,'HXAAAA','CVFAAA','AAAAxx'
+515,3929,1,3,5,15,15,515,515,515,515,30,31,'VTAAAA','DVFAAA','HHHHxx'
+932,3930,0,0,2,12,32,932,932,932,932,64,65,'WJAAAA','EVFAAA','OOOOxx'
+8144,3931,0,0,4,4,44,144,144,3144,8144,88,89,'GBAAAA','FVFAAA','VVVVxx'
+5592,3932,0,0,2,12,92,592,1592,592,5592,184,185,'CHAAAA','GVFAAA','AAAAxx'
+4003,3933,1,3,3,3,3,3,3,4003,4003,6,7,'ZXAAAA','HVFAAA','HHHHxx'
+9566,3934,0,2,6,6,66,566,1566,4566,9566,132,133,'YDAAAA','IVFAAA','OOOOxx'
+4556,3935,0,0,6,16,56,556,556,4556,4556,112,113,'GTAAAA','JVFAAA','VVVVxx'
+268,3936,0,0,8,8,68,268,268,268,268,136,137,'IKAAAA','KVFAAA','AAAAxx'
+8107,3937,1,3,7,7,7,107,107,3107,8107,14,15,'VZAAAA','LVFAAA','HHHHxx'
+5816,3938,0,0,6,16,16,816,1816,816,5816,32,33,'SPAAAA','MVFAAA','OOOOxx'
+8597,3939,1,1,7,17,97,597,597,3597,8597,194,195,'RSAAAA','NVFAAA','VVVVxx'
+9611,3940,1,3,1,11,11,611,1611,4611,9611,22,23,'RFAAAA','OVFAAA','AAAAxx'
+8070,3941,0,2,0,10,70,70,70,3070,8070,140,141,'KYAAAA','PVFAAA','HHHHxx'
+6040,3942,0,0,0,0,40,40,40,1040,6040,80,81,'IYAAAA','QVFAAA','OOOOxx'
+3184,3943,0,0,4,4,84,184,1184,3184,3184,168,169,'MSAAAA','RVFAAA','VVVVxx'
+9656,3944,0,0,6,16,56,656,1656,4656,9656,112,113,'KHAAAA','SVFAAA','AAAAxx'
+1577,3945,1,1,7,17,77,577,1577,1577,1577,154,155,'RIAAAA','TVFAAA','HHHHxx'
+1805,3946,1,1,5,5,5,805,1805,1805,1805,10,11,'LRAAAA','UVFAAA','OOOOxx'
+8268,3947,0,0,8,8,68,268,268,3268,8268,136,137,'AGAAAA','VVFAAA','VVVVxx'
+3489,3948,1,1,9,9,89,489,1489,3489,3489,178,179,'FEAAAA','WVFAAA','AAAAxx'
+4564,3949,0,0,4,4,64,564,564,4564,4564,128,129,'OTAAAA','XVFAAA','HHHHxx'
+4006,3950,0,2,6,6,6,6,6,4006,4006,12,13,'CYAAAA','YVFAAA','OOOOxx'
+8466,3951,0,2,6,6,66,466,466,3466,8466,132,133,'QNAAAA','ZVFAAA','VVVVxx'
+938,3952,0,2,8,18,38,938,938,938,938,76,77,'CKAAAA','AWFAAA','AAAAxx'
+5944,3953,0,0,4,4,44,944,1944,944,5944,88,89,'QUAAAA','BWFAAA','HHHHxx'
+8363,3954,1,3,3,3,63,363,363,3363,8363,126,127,'RJAAAA','CWFAAA','OOOOxx'
+5348,3955,0,0,8,8,48,348,1348,348,5348,96,97,'SXAAAA','DWFAAA','VVVVxx'
+71,3956,1,3,1,11,71,71,71,71,71,142,143,'TCAAAA','EWFAAA','AAAAxx'
+3620,3957,0,0,0,0,20,620,1620,3620,3620,40,41,'GJAAAA','FWFAAA','HHHHxx'
+3230,3958,0,2,0,10,30,230,1230,3230,3230,60,61,'GUAAAA','GWFAAA','OOOOxx'
+6132,3959,0,0,2,12,32,132,132,1132,6132,64,65,'WBAAAA','HWFAAA','VVVVxx'
+6143,3960,1,3,3,3,43,143,143,1143,6143,86,87,'HCAAAA','IWFAAA','AAAAxx'
+8781,3961,1,1,1,1,81,781,781,3781,8781,162,163,'TZAAAA','JWFAAA','HHHHxx'
+5522,3962,0,2,2,2,22,522,1522,522,5522,44,45,'KEAAAA','KWFAAA','OOOOxx'
+6320,3963,0,0,0,0,20,320,320,1320,6320,40,41,'CJAAAA','LWFAAA','VVVVxx'
+3923,3964,1,3,3,3,23,923,1923,3923,3923,46,47,'XUAAAA','MWFAAA','AAAAxx'
+2207,3965,1,3,7,7,7,207,207,2207,2207,14,15,'XGAAAA','NWFAAA','HHHHxx'
+966,3966,0,2,6,6,66,966,966,966,966,132,133,'ELAAAA','OWFAAA','OOOOxx'
+9020,3967,0,0,0,0,20,20,1020,4020,9020,40,41,'YIAAAA','PWFAAA','VVVVxx'
+4616,3968,0,0,6,16,16,616,616,4616,4616,32,33,'OVAAAA','QWFAAA','AAAAxx'
+8289,3969,1,1,9,9,89,289,289,3289,8289,178,179,'VGAAAA','RWFAAA','HHHHxx'
+5796,3970,0,0,6,16,96,796,1796,796,5796,192,193,'YOAAAA','SWFAAA','OOOOxx'
+9259,3971,1,3,9,19,59,259,1259,4259,9259,118,119,'DSAAAA','TWFAAA','VVVVxx'
+3710,3972,0,2,0,10,10,710,1710,3710,3710,20,21,'SMAAAA','UWFAAA','AAAAxx'
+251,3973,1,3,1,11,51,251,251,251,251,102,103,'RJAAAA','VWFAAA','HHHHxx'
+7669,3974,1,1,9,9,69,669,1669,2669,7669,138,139,'ZIAAAA','WWFAAA','OOOOxx'
+6304,3975,0,0,4,4,4,304,304,1304,6304,8,9,'MIAAAA','XWFAAA','VVVVxx'
+6454,3976,0,2,4,14,54,454,454,1454,6454,108,109,'GOAAAA','YWFAAA','AAAAxx'
+1489,3977,1,1,9,9,89,489,1489,1489,1489,178,179,'HFAAAA','ZWFAAA','HHHHxx'
+715,3978,1,3,5,15,15,715,715,715,715,30,31,'NBAAAA','AXFAAA','OOOOxx'
+4319,3979,1,3,9,19,19,319,319,4319,4319,38,39,'DKAAAA','BXFAAA','VVVVxx'
+7112,3980,0,0,2,12,12,112,1112,2112,7112,24,25,'ONAAAA','CXFAAA','AAAAxx'
+3726,3981,0,2,6,6,26,726,1726,3726,3726,52,53,'INAAAA','DXFAAA','HHHHxx'
+7727,3982,1,3,7,7,27,727,1727,2727,7727,54,55,'FLAAAA','EXFAAA','OOOOxx'
+8387,3983,1,3,7,7,87,387,387,3387,8387,174,175,'PKAAAA','FXFAAA','VVVVxx'
+6555,3984,1,3,5,15,55,555,555,1555,6555,110,111,'DSAAAA','GXFAAA','AAAAxx'
+1148,3985,0,0,8,8,48,148,1148,1148,1148,96,97,'ESAAAA','HXFAAA','HHHHxx'
+9000,3986,0,0,0,0,0,0,1000,4000,9000,0,1,'EIAAAA','IXFAAA','OOOOxx'
+5278,3987,0,2,8,18,78,278,1278,278,5278,156,157,'AVAAAA','JXFAAA','VVVVxx'
+2388,3988,0,0,8,8,88,388,388,2388,2388,176,177,'WNAAAA','KXFAAA','AAAAxx'
+7984,3989,0,0,4,4,84,984,1984,2984,7984,168,169,'CVAAAA','LXFAAA','HHHHxx'
+881,3990,1,1,1,1,81,881,881,881,881,162,163,'XHAAAA','MXFAAA','OOOOxx'
+6830,3991,0,2,0,10,30,830,830,1830,6830,60,61,'SCAAAA','NXFAAA','VVVVxx'
+7056,3992,0,0,6,16,56,56,1056,2056,7056,112,113,'KLAAAA','OXFAAA','AAAAxx'
+7581,3993,1,1,1,1,81,581,1581,2581,7581,162,163,'PFAAAA','PXFAAA','HHHHxx'
+5214,3994,0,2,4,14,14,214,1214,214,5214,28,29,'OSAAAA','QXFAAA','OOOOxx'
+2505,3995,1,1,5,5,5,505,505,2505,2505,10,11,'JSAAAA','RXFAAA','VVVVxx'
+5112,3996,0,0,2,12,12,112,1112,112,5112,24,25,'QOAAAA','SXFAAA','AAAAxx'
+9884,3997,0,0,4,4,84,884,1884,4884,9884,168,169,'EQAAAA','TXFAAA','HHHHxx'
+8040,3998,0,0,0,0,40,40,40,3040,8040,80,81,'GXAAAA','UXFAAA','OOOOxx'
+7033,3999,1,1,3,13,33,33,1033,2033,7033,66,67,'NKAAAA','VXFAAA','VVVVxx'
+9343,4000,1,3,3,3,43,343,1343,4343,9343,86,87,'JVAAAA','WXFAAA','AAAAxx'
+2931,4001,1,3,1,11,31,931,931,2931,2931,62,63,'TIAAAA','XXFAAA','HHHHxx'
+9024,4002,0,0,4,4,24,24,1024,4024,9024,48,49,'CJAAAA','YXFAAA','OOOOxx'
+6485,4003,1,1,5,5,85,485,485,1485,6485,170,171,'LPAAAA','ZXFAAA','VVVVxx'
+3465,4004,1,1,5,5,65,465,1465,3465,3465,130,131,'HDAAAA','AYFAAA','AAAAxx'
+3357,4005,1,1,7,17,57,357,1357,3357,3357,114,115,'DZAAAA','BYFAAA','HHHHxx'
+2929,4006,1,1,9,9,29,929,929,2929,2929,58,59,'RIAAAA','CYFAAA','OOOOxx'
+3086,4007,0,2,6,6,86,86,1086,3086,3086,172,173,'SOAAAA','DYFAAA','VVVVxx'
+8897,4008,1,1,7,17,97,897,897,3897,8897,194,195,'FEAAAA','EYFAAA','AAAAxx'
+9688,4009,0,0,8,8,88,688,1688,4688,9688,176,177,'QIAAAA','FYFAAA','HHHHxx'
+6522,4010,0,2,2,2,22,522,522,1522,6522,44,45,'WQAAAA','GYFAAA','OOOOxx'
+3241,4011,1,1,1,1,41,241,1241,3241,3241,82,83,'RUAAAA','HYFAAA','VVVVxx'
+8770,4012,0,2,0,10,70,770,770,3770,8770,140,141,'IZAAAA','IYFAAA','AAAAxx'
+2884,4013,0,0,4,4,84,884,884,2884,2884,168,169,'YGAAAA','JYFAAA','HHHHxx'
+9579,4014,1,3,9,19,79,579,1579,4579,9579,158,159,'LEAAAA','KYFAAA','OOOOxx'
+3125,4015,1,1,5,5,25,125,1125,3125,3125,50,51,'FQAAAA','LYFAAA','VVVVxx'
+4604,4016,0,0,4,4,4,604,604,4604,4604,8,9,'CVAAAA','MYFAAA','AAAAxx'
+2682,4017,0,2,2,2,82,682,682,2682,2682,164,165,'EZAAAA','NYFAAA','HHHHxx'
+254,4018,0,2,4,14,54,254,254,254,254,108,109,'UJAAAA','OYFAAA','OOOOxx'
+6569,4019,1,1,9,9,69,569,569,1569,6569,138,139,'RSAAAA','PYFAAA','VVVVxx'
+2686,4020,0,2,6,6,86,686,686,2686,2686,172,173,'IZAAAA','QYFAAA','AAAAxx'
+2123,4021,1,3,3,3,23,123,123,2123,2123,46,47,'RDAAAA','RYFAAA','HHHHxx'
+1745,4022,1,1,5,5,45,745,1745,1745,1745,90,91,'DPAAAA','SYFAAA','OOOOxx'
+247,4023,1,3,7,7,47,247,247,247,247,94,95,'NJAAAA','TYFAAA','VVVVxx'
+5800,4024,0,0,0,0,0,800,1800,800,5800,0,1,'CPAAAA','UYFAAA','AAAAxx'
+1121,4025,1,1,1,1,21,121,1121,1121,1121,42,43,'DRAAAA','VYFAAA','HHHHxx'
+8893,4026,1,1,3,13,93,893,893,3893,8893,186,187,'BEAAAA','WYFAAA','OOOOxx'
+7819,4027,1,3,9,19,19,819,1819,2819,7819,38,39,'TOAAAA','XYFAAA','VVVVxx'
+1339,4028,1,3,9,19,39,339,1339,1339,1339,78,79,'NZAAAA','YYFAAA','AAAAxx'
+5680,4029,0,0,0,0,80,680,1680,680,5680,160,161,'MKAAAA','ZYFAAA','HHHHxx'
+5093,4030,1,1,3,13,93,93,1093,93,5093,186,187,'XNAAAA','AZFAAA','OOOOxx'
+3508,4031,0,0,8,8,8,508,1508,3508,3508,16,17,'YEAAAA','BZFAAA','VVVVxx'
+933,4032,1,1,3,13,33,933,933,933,933,66,67,'XJAAAA','CZFAAA','AAAAxx'
+1106,4033,0,2,6,6,6,106,1106,1106,1106,12,13,'OQAAAA','DZFAAA','HHHHxx'
+4386,4034,0,2,6,6,86,386,386,4386,4386,172,173,'SMAAAA','EZFAAA','OOOOxx'
+5895,4035,1,3,5,15,95,895,1895,895,5895,190,191,'TSAAAA','FZFAAA','VVVVxx'
+2980,4036,0,0,0,0,80,980,980,2980,2980,160,161,'QKAAAA','GZFAAA','AAAAxx'
+4400,4037,0,0,0,0,0,400,400,4400,4400,0,1,'GNAAAA','HZFAAA','HHHHxx'
+7433,4038,1,1,3,13,33,433,1433,2433,7433,66,67,'XZAAAA','IZFAAA','OOOOxx'
+6110,4039,0,2,0,10,10,110,110,1110,6110,20,21,'ABAAAA','JZFAAA','VVVVxx'
+867,4040,1,3,7,7,67,867,867,867,867,134,135,'JHAAAA','KZFAAA','AAAAxx'
+5292,4041,0,0,2,12,92,292,1292,292,5292,184,185,'OVAAAA','LZFAAA','HHHHxx'
+3926,4042,0,2,6,6,26,926,1926,3926,3926,52,53,'AVAAAA','MZFAAA','OOOOxx'
+1107,4043,1,3,7,7,7,107,1107,1107,1107,14,15,'PQAAAA','NZFAAA','VVVVxx'
+7355,4044,1,3,5,15,55,355,1355,2355,7355,110,111,'XWAAAA','OZFAAA','AAAAxx'
+4689,4045,1,1,9,9,89,689,689,4689,4689,178,179,'JYAAAA','PZFAAA','HHHHxx'
+4872,4046,0,0,2,12,72,872,872,4872,4872,144,145,'KFAAAA','QZFAAA','OOOOxx'
+7821,4047,1,1,1,1,21,821,1821,2821,7821,42,43,'VOAAAA','RZFAAA','VVVVxx'
+7277,4048,1,1,7,17,77,277,1277,2277,7277,154,155,'XTAAAA','SZFAAA','AAAAxx'
+3268,4049,0,0,8,8,68,268,1268,3268,3268,136,137,'SVAAAA','TZFAAA','HHHHxx'
+8877,4050,1,1,7,17,77,877,877,3877,8877,154,155,'LDAAAA','UZFAAA','OOOOxx'
+343,4051,1,3,3,3,43,343,343,343,343,86,87,'FNAAAA','VZFAAA','VVVVxx'
+621,4052,1,1,1,1,21,621,621,621,621,42,43,'XXAAAA','WZFAAA','AAAAxx'
+5429,4053,1,1,9,9,29,429,1429,429,5429,58,59,'VAAAAA','XZFAAA','HHHHxx'
+392,4054,0,0,2,12,92,392,392,392,392,184,185,'CPAAAA','YZFAAA','OOOOxx'
+6004,4055,0,0,4,4,4,4,4,1004,6004,8,9,'YWAAAA','ZZFAAA','VVVVxx'
+6377,4056,1,1,7,17,77,377,377,1377,6377,154,155,'HLAAAA','AAGAAA','AAAAxx'
+3037,4057,1,1,7,17,37,37,1037,3037,3037,74,75,'VMAAAA','BAGAAA','HHHHxx'
+3514,4058,0,2,4,14,14,514,1514,3514,3514,28,29,'EFAAAA','CAGAAA','OOOOxx'
+8740,4059,0,0,0,0,40,740,740,3740,8740,80,81,'EYAAAA','DAGAAA','VVVVxx'
+3877,4060,1,1,7,17,77,877,1877,3877,3877,154,155,'DTAAAA','EAGAAA','AAAAxx'
+5731,4061,1,3,1,11,31,731,1731,731,5731,62,63,'LMAAAA','FAGAAA','HHHHxx'
+6407,4062,1,3,7,7,7,407,407,1407,6407,14,15,'LMAAAA','GAGAAA','OOOOxx'
+2044,4063,0,0,4,4,44,44,44,2044,2044,88,89,'QAAAAA','HAGAAA','VVVVxx'
+7362,4064,0,2,2,2,62,362,1362,2362,7362,124,125,'EXAAAA','IAGAAA','AAAAxx'
+5458,4065,0,2,8,18,58,458,1458,458,5458,116,117,'YBAAAA','JAGAAA','HHHHxx'
+6437,4066,1,1,7,17,37,437,437,1437,6437,74,75,'PNAAAA','KAGAAA','OOOOxx'
+1051,4067,1,3,1,11,51,51,1051,1051,1051,102,103,'LOAAAA','LAGAAA','VVVVxx'
+1203,4068,1,3,3,3,3,203,1203,1203,1203,6,7,'HUAAAA','MAGAAA','AAAAxx'
+2176,4069,0,0,6,16,76,176,176,2176,2176,152,153,'SFAAAA','NAGAAA','HHHHxx'
+8997,4070,1,1,7,17,97,997,997,3997,8997,194,195,'BIAAAA','OAGAAA','OOOOxx'
+6378,4071,0,2,8,18,78,378,378,1378,6378,156,157,'ILAAAA','PAGAAA','VVVVxx'
+6006,4072,0,2,6,6,6,6,6,1006,6006,12,13,'AXAAAA','QAGAAA','AAAAxx'
+2308,4073,0,0,8,8,8,308,308,2308,2308,16,17,'UKAAAA','RAGAAA','HHHHxx'
+625,4074,1,1,5,5,25,625,625,625,625,50,51,'BYAAAA','SAGAAA','OOOOxx'
+7298,4075,0,2,8,18,98,298,1298,2298,7298,196,197,'SUAAAA','TAGAAA','VVVVxx'
+5575,4076,1,3,5,15,75,575,1575,575,5575,150,151,'LGAAAA','UAGAAA','AAAAxx'
+3565,4077,1,1,5,5,65,565,1565,3565,3565,130,131,'DHAAAA','VAGAAA','HHHHxx'
+47,4078,1,3,7,7,47,47,47,47,47,94,95,'VBAAAA','WAGAAA','OOOOxx'
+2413,4079,1,1,3,13,13,413,413,2413,2413,26,27,'VOAAAA','XAGAAA','VVVVxx'
+2153,4080,1,1,3,13,53,153,153,2153,2153,106,107,'VEAAAA','YAGAAA','AAAAxx'
+752,4081,0,0,2,12,52,752,752,752,752,104,105,'YCAAAA','ZAGAAA','HHHHxx'
+4095,4082,1,3,5,15,95,95,95,4095,4095,190,191,'NBAAAA','ABGAAA','OOOOxx'
+2518,4083,0,2,8,18,18,518,518,2518,2518,36,37,'WSAAAA','BBGAAA','VVVVxx'
+3681,4084,1,1,1,1,81,681,1681,3681,3681,162,163,'PLAAAA','CBGAAA','AAAAxx'
+4213,4085,1,1,3,13,13,213,213,4213,4213,26,27,'BGAAAA','DBGAAA','HHHHxx'
+2615,4086,1,3,5,15,15,615,615,2615,2615,30,31,'PWAAAA','EBGAAA','OOOOxx'
+1471,4087,1,3,1,11,71,471,1471,1471,1471,142,143,'PEAAAA','FBGAAA','VVVVxx'
+7315,4088,1,3,5,15,15,315,1315,2315,7315,30,31,'JVAAAA','GBGAAA','AAAAxx'
+6013,4089,1,1,3,13,13,13,13,1013,6013,26,27,'HXAAAA','HBGAAA','HHHHxx'
+3077,4090,1,1,7,17,77,77,1077,3077,3077,154,155,'JOAAAA','IBGAAA','OOOOxx'
+2190,4091,0,2,0,10,90,190,190,2190,2190,180,181,'GGAAAA','JBGAAA','VVVVxx'
+528,4092,0,0,8,8,28,528,528,528,528,56,57,'IUAAAA','KBGAAA','AAAAxx'
+9508,4093,0,0,8,8,8,508,1508,4508,9508,16,17,'SBAAAA','LBGAAA','HHHHxx'
+2473,4094,1,1,3,13,73,473,473,2473,2473,146,147,'DRAAAA','MBGAAA','OOOOxx'
+167,4095,1,3,7,7,67,167,167,167,167,134,135,'LGAAAA','NBGAAA','VVVVxx'
+8448,4096,0,0,8,8,48,448,448,3448,8448,96,97,'YMAAAA','OBGAAA','AAAAxx'
+7538,4097,0,2,8,18,38,538,1538,2538,7538,76,77,'YDAAAA','PBGAAA','HHHHxx'
+7638,4098,0,2,8,18,38,638,1638,2638,7638,76,77,'UHAAAA','QBGAAA','OOOOxx'
+4328,4099,0,0,8,8,28,328,328,4328,4328,56,57,'MKAAAA','RBGAAA','VVVVxx'
+3812,4100,0,0,2,12,12,812,1812,3812,3812,24,25,'QQAAAA','SBGAAA','AAAAxx'
+2879,4101,1,3,9,19,79,879,879,2879,2879,158,159,'TGAAAA','TBGAAA','HHHHxx'
+4741,4102,1,1,1,1,41,741,741,4741,4741,82,83,'JAAAAA','UBGAAA','OOOOxx'
+9155,4103,1,3,5,15,55,155,1155,4155,9155,110,111,'DOAAAA','VBGAAA','VVVVxx'
+5151,4104,1,3,1,11,51,151,1151,151,5151,102,103,'DQAAAA','WBGAAA','AAAAxx'
+5591,4105,1,3,1,11,91,591,1591,591,5591,182,183,'BHAAAA','XBGAAA','HHHHxx'
+1034,4106,0,2,4,14,34,34,1034,1034,1034,68,69,'UNAAAA','YBGAAA','OOOOxx'
+765,4107,1,1,5,5,65,765,765,765,765,130,131,'LDAAAA','ZBGAAA','VVVVxx'
+2664,4108,0,0,4,4,64,664,664,2664,2664,128,129,'MYAAAA','ACGAAA','AAAAxx'
+6854,4109,0,2,4,14,54,854,854,1854,6854,108,109,'QDAAAA','BCGAAA','HHHHxx'
+8263,4110,1,3,3,3,63,263,263,3263,8263,126,127,'VFAAAA','CCGAAA','OOOOxx'
+8658,4111,0,2,8,18,58,658,658,3658,8658,116,117,'AVAAAA','DCGAAA','VVVVxx'
+587,4112,1,3,7,7,87,587,587,587,587,174,175,'PWAAAA','ECGAAA','AAAAxx'
+4553,4113,1,1,3,13,53,553,553,4553,4553,106,107,'DTAAAA','FCGAAA','HHHHxx'
+1368,4114,0,0,8,8,68,368,1368,1368,1368,136,137,'QAAAAA','GCGAAA','OOOOxx'
+1718,4115,0,2,8,18,18,718,1718,1718,1718,36,37,'COAAAA','HCGAAA','VVVVxx'
+140,4116,0,0,0,0,40,140,140,140,140,80,81,'KFAAAA','ICGAAA','AAAAxx'
+8341,4117,1,1,1,1,41,341,341,3341,8341,82,83,'VIAAAA','JCGAAA','HHHHxx'
+72,4118,0,0,2,12,72,72,72,72,72,144,145,'UCAAAA','KCGAAA','OOOOxx'
+6589,4119,1,1,9,9,89,589,589,1589,6589,178,179,'LTAAAA','LCGAAA','VVVVxx'
+2024,4120,0,0,4,4,24,24,24,2024,2024,48,49,'WZAAAA','MCGAAA','AAAAxx'
+8024,4121,0,0,4,4,24,24,24,3024,8024,48,49,'QWAAAA','NCGAAA','HHHHxx'
+9564,4122,0,0,4,4,64,564,1564,4564,9564,128,129,'WDAAAA','OCGAAA','OOOOxx'
+8625,4123,1,1,5,5,25,625,625,3625,8625,50,51,'TTAAAA','PCGAAA','VVVVxx'
+2680,4124,0,0,0,0,80,680,680,2680,2680,160,161,'CZAAAA','QCGAAA','AAAAxx'
+4323,4125,1,3,3,3,23,323,323,4323,4323,46,47,'HKAAAA','RCGAAA','HHHHxx'
+8981,4126,1,1,1,1,81,981,981,3981,8981,162,163,'LHAAAA','SCGAAA','OOOOxx'
+8909,4127,1,1,9,9,9,909,909,3909,8909,18,19,'REAAAA','TCGAAA','VVVVxx'
+5288,4128,0,0,8,8,88,288,1288,288,5288,176,177,'KVAAAA','UCGAAA','AAAAxx'
+2057,4129,1,1,7,17,57,57,57,2057,2057,114,115,'DBAAAA','VCGAAA','HHHHxx'
+5931,4130,1,3,1,11,31,931,1931,931,5931,62,63,'DUAAAA','WCGAAA','OOOOxx'
+9794,4131,0,2,4,14,94,794,1794,4794,9794,188,189,'SMAAAA','XCGAAA','VVVVxx'
+1012,4132,0,0,2,12,12,12,1012,1012,1012,24,25,'YMAAAA','YCGAAA','AAAAxx'
+5496,4133,0,0,6,16,96,496,1496,496,5496,192,193,'KDAAAA','ZCGAAA','HHHHxx'
+9182,4134,0,2,2,2,82,182,1182,4182,9182,164,165,'EPAAAA','ADGAAA','OOOOxx'
+5258,4135,0,2,8,18,58,258,1258,258,5258,116,117,'GUAAAA','BDGAAA','VVVVxx'
+3050,4136,0,2,0,10,50,50,1050,3050,3050,100,101,'INAAAA','CDGAAA','AAAAxx'
+2083,4137,1,3,3,3,83,83,83,2083,2083,166,167,'DCAAAA','DDGAAA','HHHHxx'
+3069,4138,1,1,9,9,69,69,1069,3069,3069,138,139,'BOAAAA','EDGAAA','OOOOxx'
+8459,4139,1,3,9,19,59,459,459,3459,8459,118,119,'JNAAAA','FDGAAA','VVVVxx'
+169,4140,1,1,9,9,69,169,169,169,169,138,139,'NGAAAA','GDGAAA','AAAAxx'
+4379,4141,1,3,9,19,79,379,379,4379,4379,158,159,'LMAAAA','HDGAAA','HHHHxx'
+5126,4142,0,2,6,6,26,126,1126,126,5126,52,53,'EPAAAA','IDGAAA','OOOOxx'
+1415,4143,1,3,5,15,15,415,1415,1415,1415,30,31,'LCAAAA','JDGAAA','VVVVxx'
+1163,4144,1,3,3,3,63,163,1163,1163,1163,126,127,'TSAAAA','KDGAAA','AAAAxx'
+3500,4145,0,0,0,0,0,500,1500,3500,3500,0,1,'QEAAAA','LDGAAA','HHHHxx'
+7202,4146,0,2,2,2,2,202,1202,2202,7202,4,5,'ARAAAA','MDGAAA','OOOOxx'
+747,4147,1,3,7,7,47,747,747,747,747,94,95,'TCAAAA','NDGAAA','VVVVxx'
+9264,4148,0,0,4,4,64,264,1264,4264,9264,128,129,'ISAAAA','ODGAAA','AAAAxx'
+8548,4149,0,0,8,8,48,548,548,3548,8548,96,97,'UQAAAA','PDGAAA','HHHHxx'
+4228,4150,0,0,8,8,28,228,228,4228,4228,56,57,'QGAAAA','QDGAAA','OOOOxx'
+7122,4151,0,2,2,2,22,122,1122,2122,7122,44,45,'YNAAAA','RDGAAA','VVVVxx'
+3395,4152,1,3,5,15,95,395,1395,3395,3395,190,191,'PAAAAA','SDGAAA','AAAAxx'
+5674,4153,0,2,4,14,74,674,1674,674,5674,148,149,'GKAAAA','TDGAAA','HHHHxx'
+7293,4154,1,1,3,13,93,293,1293,2293,7293,186,187,'NUAAAA','UDGAAA','OOOOxx'
+737,4155,1,1,7,17,37,737,737,737,737,74,75,'JCAAAA','VDGAAA','VVVVxx'
+9595,4156,1,3,5,15,95,595,1595,4595,9595,190,191,'BFAAAA','WDGAAA','AAAAxx'
+594,4157,0,2,4,14,94,594,594,594,594,188,189,'WWAAAA','XDGAAA','HHHHxx'
+5322,4158,0,2,2,2,22,322,1322,322,5322,44,45,'SWAAAA','YDGAAA','OOOOxx'
+2933,4159,1,1,3,13,33,933,933,2933,2933,66,67,'VIAAAA','ZDGAAA','VVVVxx'
+4955,4160,1,3,5,15,55,955,955,4955,4955,110,111,'PIAAAA','AEGAAA','AAAAxx'
+4073,4161,1,1,3,13,73,73,73,4073,4073,146,147,'RAAAAA','BEGAAA','HHHHxx'
+7249,4162,1,1,9,9,49,249,1249,2249,7249,98,99,'VSAAAA','CEGAAA','OOOOxx'
+192,4163,0,0,2,12,92,192,192,192,192,184,185,'KHAAAA','DEGAAA','VVVVxx'
+2617,4164,1,1,7,17,17,617,617,2617,2617,34,35,'RWAAAA','EEGAAA','AAAAxx'
+7409,4165,1,1,9,9,9,409,1409,2409,7409,18,19,'ZYAAAA','FEGAAA','HHHHxx'
+4903,4166,1,3,3,3,3,903,903,4903,4903,6,7,'PGAAAA','GEGAAA','OOOOxx'
+9797,4167,1,1,7,17,97,797,1797,4797,9797,194,195,'VMAAAA','HEGAAA','VVVVxx'
+9919,4168,1,3,9,19,19,919,1919,4919,9919,38,39,'NRAAAA','IEGAAA','AAAAxx'
+1878,4169,0,2,8,18,78,878,1878,1878,1878,156,157,'GUAAAA','JEGAAA','HHHHxx'
+4851,4170,1,3,1,11,51,851,851,4851,4851,102,103,'PEAAAA','KEGAAA','OOOOxx'
+5514,4171,0,2,4,14,14,514,1514,514,5514,28,29,'CEAAAA','LEGAAA','VVVVxx'
+2582,4172,0,2,2,2,82,582,582,2582,2582,164,165,'IVAAAA','MEGAAA','AAAAxx'
+3564,4173,0,0,4,4,64,564,1564,3564,3564,128,129,'CHAAAA','NEGAAA','HHHHxx'
+7085,4174,1,1,5,5,85,85,1085,2085,7085,170,171,'NMAAAA','OEGAAA','OOOOxx'
+3619,4175,1,3,9,19,19,619,1619,3619,3619,38,39,'FJAAAA','PEGAAA','VVVVxx'
+261,4176,1,1,1,1,61,261,261,261,261,122,123,'BKAAAA','QEGAAA','AAAAxx'
+7338,4177,0,2,8,18,38,338,1338,2338,7338,76,77,'GWAAAA','REGAAA','HHHHxx'
+4251,4178,1,3,1,11,51,251,251,4251,4251,102,103,'NHAAAA','SEGAAA','OOOOxx'
+5360,4179,0,0,0,0,60,360,1360,360,5360,120,121,'EYAAAA','TEGAAA','VVVVxx'
+5678,4180,0,2,8,18,78,678,1678,678,5678,156,157,'KKAAAA','UEGAAA','AAAAxx'
+9162,4181,0,2,2,2,62,162,1162,4162,9162,124,125,'KOAAAA','VEGAAA','HHHHxx'
+5920,4182,0,0,0,0,20,920,1920,920,5920,40,41,'STAAAA','WEGAAA','OOOOxx'
+7156,4183,0,0,6,16,56,156,1156,2156,7156,112,113,'GPAAAA','XEGAAA','VVVVxx'
+4271,4184,1,3,1,11,71,271,271,4271,4271,142,143,'HIAAAA','YEGAAA','AAAAxx'
+4698,4185,0,2,8,18,98,698,698,4698,4698,196,197,'SYAAAA','ZEGAAA','HHHHxx'
+1572,4186,0,0,2,12,72,572,1572,1572,1572,144,145,'MIAAAA','AFGAAA','OOOOxx'
+6974,4187,0,2,4,14,74,974,974,1974,6974,148,149,'GIAAAA','BFGAAA','VVVVxx'
+4291,4188,1,3,1,11,91,291,291,4291,4291,182,183,'BJAAAA','CFGAAA','AAAAxx'
+4036,4189,0,0,6,16,36,36,36,4036,4036,72,73,'GZAAAA','DFGAAA','HHHHxx'
+7473,4190,1,1,3,13,73,473,1473,2473,7473,146,147,'LBAAAA','EFGAAA','OOOOxx'
+4786,4191,0,2,6,6,86,786,786,4786,4786,172,173,'CCAAAA','FFGAAA','VVVVxx'
+2662,4192,0,2,2,2,62,662,662,2662,2662,124,125,'KYAAAA','GFGAAA','AAAAxx'
+916,4193,0,0,6,16,16,916,916,916,916,32,33,'GJAAAA','HFGAAA','HHHHxx'
+668,4194,0,0,8,8,68,668,668,668,668,136,137,'SZAAAA','IFGAAA','OOOOxx'
+4874,4195,0,2,4,14,74,874,874,4874,4874,148,149,'MFAAAA','JFGAAA','VVVVxx'
+3752,4196,0,0,2,12,52,752,1752,3752,3752,104,105,'IOAAAA','KFGAAA','AAAAxx'
+4865,4197,1,1,5,5,65,865,865,4865,4865,130,131,'DFAAAA','LFGAAA','HHHHxx'
+7052,4198,0,0,2,12,52,52,1052,2052,7052,104,105,'GLAAAA','MFGAAA','OOOOxx'
+5712,4199,0,0,2,12,12,712,1712,712,5712,24,25,'SLAAAA','NFGAAA','VVVVxx'
+31,4200,1,3,1,11,31,31,31,31,31,62,63,'FBAAAA','OFGAAA','AAAAxx'
+4944,4201,0,0,4,4,44,944,944,4944,4944,88,89,'EIAAAA','PFGAAA','HHHHxx'
+1435,4202,1,3,5,15,35,435,1435,1435,1435,70,71,'FDAAAA','QFGAAA','OOOOxx'
+501,4203,1,1,1,1,1,501,501,501,501,2,3,'HTAAAA','RFGAAA','VVVVxx'
+9401,4204,1,1,1,1,1,401,1401,4401,9401,2,3,'PXAAAA','SFGAAA','AAAAxx'
+5014,4205,0,2,4,14,14,14,1014,14,5014,28,29,'WKAAAA','TFGAAA','HHHHxx'
+9125,4206,1,1,5,5,25,125,1125,4125,9125,50,51,'ZMAAAA','UFGAAA','OOOOxx'
+6144,4207,0,0,4,4,44,144,144,1144,6144,88,89,'ICAAAA','VFGAAA','VVVVxx'
+1743,4208,1,3,3,3,43,743,1743,1743,1743,86,87,'BPAAAA','WFGAAA','AAAAxx'
+4316,4209,0,0,6,16,16,316,316,4316,4316,32,33,'AKAAAA','XFGAAA','HHHHxx'
+8212,4210,0,0,2,12,12,212,212,3212,8212,24,25,'WDAAAA','YFGAAA','OOOOxx'
+7344,4211,0,0,4,4,44,344,1344,2344,7344,88,89,'MWAAAA','ZFGAAA','VVVVxx'
+2051,4212,1,3,1,11,51,51,51,2051,2051,102,103,'XAAAAA','AGGAAA','AAAAxx'
+8131,4213,1,3,1,11,31,131,131,3131,8131,62,63,'TAAAAA','BGGAAA','HHHHxx'
+7023,4214,1,3,3,3,23,23,1023,2023,7023,46,47,'DKAAAA','CGGAAA','OOOOxx'
+9674,4215,0,2,4,14,74,674,1674,4674,9674,148,149,'CIAAAA','DGGAAA','VVVVxx'
+4984,4216,0,0,4,4,84,984,984,4984,4984,168,169,'SJAAAA','EGGAAA','AAAAxx'
+111,4217,1,3,1,11,11,111,111,111,111,22,23,'HEAAAA','FGGAAA','HHHHxx'
+2296,4218,0,0,6,16,96,296,296,2296,2296,192,193,'IKAAAA','GGGAAA','OOOOxx'
+5025,4219,1,1,5,5,25,25,1025,25,5025,50,51,'HLAAAA','HGGAAA','VVVVxx'
+1756,4220,0,0,6,16,56,756,1756,1756,1756,112,113,'OPAAAA','IGGAAA','AAAAxx'
+2885,4221,1,1,5,5,85,885,885,2885,2885,170,171,'ZGAAAA','JGGAAA','HHHHxx'
+2541,4222,1,1,1,1,41,541,541,2541,2541,82,83,'TTAAAA','KGGAAA','OOOOxx'
+1919,4223,1,3,9,19,19,919,1919,1919,1919,38,39,'VVAAAA','LGGAAA','VVVVxx'
+6496,4224,0,0,6,16,96,496,496,1496,6496,192,193,'WPAAAA','MGGAAA','AAAAxx'
+6103,4225,1,3,3,3,3,103,103,1103,6103,6,7,'TAAAAA','NGGAAA','HHHHxx'
+98,4226,0,2,8,18,98,98,98,98,98,196,197,'UDAAAA','OGGAAA','OOOOxx'
+3727,4227,1,3,7,7,27,727,1727,3727,3727,54,55,'JNAAAA','PGGAAA','VVVVxx'
+689,4228,1,1,9,9,89,689,689,689,689,178,179,'NAAAAA','QGGAAA','AAAAxx'
+7181,4229,1,1,1,1,81,181,1181,2181,7181,162,163,'FQAAAA','RGGAAA','HHHHxx'
+8447,4230,1,3,7,7,47,447,447,3447,8447,94,95,'XMAAAA','SGGAAA','OOOOxx'
+4569,4231,1,1,9,9,69,569,569,4569,4569,138,139,'TTAAAA','TGGAAA','VVVVxx'
+8844,4232,0,0,4,4,44,844,844,3844,8844,88,89,'ECAAAA','UGGAAA','AAAAxx'
+2436,4233,0,0,6,16,36,436,436,2436,2436,72,73,'SPAAAA','VGGAAA','HHHHxx'
+391,4234,1,3,1,11,91,391,391,391,391,182,183,'BPAAAA','WGGAAA','OOOOxx'
+3035,4235,1,3,5,15,35,35,1035,3035,3035,70,71,'TMAAAA','XGGAAA','VVVVxx'
+7583,4236,1,3,3,3,83,583,1583,2583,7583,166,167,'RFAAAA','YGGAAA','AAAAxx'
+1145,4237,1,1,5,5,45,145,1145,1145,1145,90,91,'BSAAAA','ZGGAAA','HHHHxx'
+93,4238,1,1,3,13,93,93,93,93,93,186,187,'PDAAAA','AHGAAA','OOOOxx'
+8896,4239,0,0,6,16,96,896,896,3896,8896,192,193,'EEAAAA','BHGAAA','VVVVxx'
+6719,4240,1,3,9,19,19,719,719,1719,6719,38,39,'LYAAAA','CHGAAA','AAAAxx'
+7728,4241,0,0,8,8,28,728,1728,2728,7728,56,57,'GLAAAA','DHGAAA','HHHHxx'
+1349,4242,1,1,9,9,49,349,1349,1349,1349,98,99,'XZAAAA','EHGAAA','OOOOxx'
+5349,4243,1,1,9,9,49,349,1349,349,5349,98,99,'TXAAAA','FHGAAA','VVVVxx'
+3040,4244,0,0,0,0,40,40,1040,3040,3040,80,81,'YMAAAA','GHGAAA','AAAAxx'
+2414,4245,0,2,4,14,14,414,414,2414,2414,28,29,'WOAAAA','HHGAAA','HHHHxx'
+5122,4246,0,2,2,2,22,122,1122,122,5122,44,45,'APAAAA','IHGAAA','OOOOxx'
+9553,4247,1,1,3,13,53,553,1553,4553,9553,106,107,'LDAAAA','JHGAAA','VVVVxx'
+5987,4248,1,3,7,7,87,987,1987,987,5987,174,175,'HWAAAA','KHGAAA','AAAAxx'
+5939,4249,1,3,9,19,39,939,1939,939,5939,78,79,'LUAAAA','LHGAAA','HHHHxx'
+3525,4250,1,1,5,5,25,525,1525,3525,3525,50,51,'PFAAAA','MHGAAA','OOOOxx'
+1371,4251,1,3,1,11,71,371,1371,1371,1371,142,143,'TAAAAA','NHGAAA','VVVVxx'
+618,4252,0,2,8,18,18,618,618,618,618,36,37,'UXAAAA','OHGAAA','AAAAxx'
+6529,4253,1,1,9,9,29,529,529,1529,6529,58,59,'DRAAAA','PHGAAA','HHHHxx'
+4010,4254,0,2,0,10,10,10,10,4010,4010,20,21,'GYAAAA','QHGAAA','OOOOxx'
+328,4255,0,0,8,8,28,328,328,328,328,56,57,'QMAAAA','RHGAAA','VVVVxx'
+6121,4256,1,1,1,1,21,121,121,1121,6121,42,43,'LBAAAA','SHGAAA','AAAAxx'
+3505,4257,1,1,5,5,5,505,1505,3505,3505,10,11,'VEAAAA','THGAAA','HHHHxx'
+2033,4258,1,1,3,13,33,33,33,2033,2033,66,67,'FAAAAA','UHGAAA','OOOOxx'
+4724,4259,0,0,4,4,24,724,724,4724,4724,48,49,'SZAAAA','VHGAAA','VVVVxx'
+8717,4260,1,1,7,17,17,717,717,3717,8717,34,35,'HXAAAA','WHGAAA','AAAAxx'
+5639,4261,1,3,9,19,39,639,1639,639,5639,78,79,'XIAAAA','XHGAAA','HHHHxx'
+3448,4262,0,0,8,8,48,448,1448,3448,3448,96,97,'QCAAAA','YHGAAA','OOOOxx'
+2919,4263,1,3,9,19,19,919,919,2919,2919,38,39,'HIAAAA','ZHGAAA','VVVVxx'
+3417,4264,1,1,7,17,17,417,1417,3417,3417,34,35,'LBAAAA','AIGAAA','AAAAxx'
+943,4265,1,3,3,3,43,943,943,943,943,86,87,'HKAAAA','BIGAAA','HHHHxx'
+775,4266,1,3,5,15,75,775,775,775,775,150,151,'VDAAAA','CIGAAA','OOOOxx'
+2333,4267,1,1,3,13,33,333,333,2333,2333,66,67,'TLAAAA','DIGAAA','VVVVxx'
+4801,4268,1,1,1,1,1,801,801,4801,4801,2,3,'RCAAAA','EIGAAA','AAAAxx'
+7169,4269,1,1,9,9,69,169,1169,2169,7169,138,139,'TPAAAA','FIGAAA','HHHHxx'
+2840,4270,0,0,0,0,40,840,840,2840,2840,80,81,'GFAAAA','GIGAAA','OOOOxx'
+9034,4271,0,2,4,14,34,34,1034,4034,9034,68,69,'MJAAAA','HIGAAA','VVVVxx'
+6154,4272,0,2,4,14,54,154,154,1154,6154,108,109,'SCAAAA','IIGAAA','AAAAxx'
+1412,4273,0,0,2,12,12,412,1412,1412,1412,24,25,'ICAAAA','JIGAAA','HHHHxx'
+2263,4274,1,3,3,3,63,263,263,2263,2263,126,127,'BJAAAA','KIGAAA','OOOOxx'
+7118,4275,0,2,8,18,18,118,1118,2118,7118,36,37,'UNAAAA','LIGAAA','VVVVxx'
+1526,4276,0,2,6,6,26,526,1526,1526,1526,52,53,'SGAAAA','MIGAAA','AAAAxx'
+491,4277,1,3,1,11,91,491,491,491,491,182,183,'XSAAAA','NIGAAA','HHHHxx'
+9732,4278,0,0,2,12,32,732,1732,4732,9732,64,65,'IKAAAA','OIGAAA','OOOOxx'
+7067,4279,1,3,7,7,67,67,1067,2067,7067,134,135,'VLAAAA','PIGAAA','VVVVxx'
+212,4280,0,0,2,12,12,212,212,212,212,24,25,'EIAAAA','QIGAAA','AAAAxx'
+1955,4281,1,3,5,15,55,955,1955,1955,1955,110,111,'FXAAAA','RIGAAA','HHHHxx'
+3303,4282,1,3,3,3,3,303,1303,3303,3303,6,7,'BXAAAA','SIGAAA','OOOOxx'
+2715,4283,1,3,5,15,15,715,715,2715,2715,30,31,'LAAAAA','TIGAAA','VVVVxx'
+8168,4284,0,0,8,8,68,168,168,3168,8168,136,137,'ECAAAA','UIGAAA','AAAAxx'
+6799,4285,1,3,9,19,99,799,799,1799,6799,198,199,'NBAAAA','VIGAAA','HHHHxx'
+5080,4286,0,0,0,0,80,80,1080,80,5080,160,161,'KNAAAA','WIGAAA','OOOOxx'
+4939,4287,1,3,9,19,39,939,939,4939,4939,78,79,'ZHAAAA','XIGAAA','VVVVxx'
+6604,4288,0,0,4,4,4,604,604,1604,6604,8,9,'AUAAAA','YIGAAA','AAAAxx'
+6531,4289,1,3,1,11,31,531,531,1531,6531,62,63,'FRAAAA','ZIGAAA','HHHHxx'
+9948,4290,0,0,8,8,48,948,1948,4948,9948,96,97,'QSAAAA','AJGAAA','OOOOxx'
+7923,4291,1,3,3,3,23,923,1923,2923,7923,46,47,'TSAAAA','BJGAAA','VVVVxx'
+9905,4292,1,1,5,5,5,905,1905,4905,9905,10,11,'ZQAAAA','CJGAAA','AAAAxx'
+340,4293,0,0,0,0,40,340,340,340,340,80,81,'CNAAAA','DJGAAA','HHHHxx'
+1721,4294,1,1,1,1,21,721,1721,1721,1721,42,43,'FOAAAA','EJGAAA','OOOOxx'
+9047,4295,1,3,7,7,47,47,1047,4047,9047,94,95,'ZJAAAA','FJGAAA','VVVVxx'
+4723,4296,1,3,3,3,23,723,723,4723,4723,46,47,'RZAAAA','GJGAAA','AAAAxx'
+5748,4297,0,0,8,8,48,748,1748,748,5748,96,97,'CNAAAA','HJGAAA','HHHHxx'
+6845,4298,1,1,5,5,45,845,845,1845,6845,90,91,'HDAAAA','IJGAAA','OOOOxx'
+1556,4299,0,0,6,16,56,556,1556,1556,1556,112,113,'WHAAAA','JJGAAA','VVVVxx'
+9505,4300,1,1,5,5,5,505,1505,4505,9505,10,11,'PBAAAA','KJGAAA','AAAAxx'
+3573,4301,1,1,3,13,73,573,1573,3573,3573,146,147,'LHAAAA','LJGAAA','HHHHxx'
+3785,4302,1,1,5,5,85,785,1785,3785,3785,170,171,'PPAAAA','MJGAAA','OOOOxx'
+2772,4303,0,0,2,12,72,772,772,2772,2772,144,145,'QCAAAA','NJGAAA','VVVVxx'
+7282,4304,0,2,2,2,82,282,1282,2282,7282,164,165,'CUAAAA','OJGAAA','AAAAxx'
+8106,4305,0,2,6,6,6,106,106,3106,8106,12,13,'UZAAAA','PJGAAA','HHHHxx'
+2847,4306,1,3,7,7,47,847,847,2847,2847,94,95,'NFAAAA','QJGAAA','OOOOxx'
+9803,4307,1,3,3,3,3,803,1803,4803,9803,6,7,'BNAAAA','RJGAAA','VVVVxx'
+7719,4308,1,3,9,19,19,719,1719,2719,7719,38,39,'XKAAAA','SJGAAA','AAAAxx'
+4649,4309,1,1,9,9,49,649,649,4649,4649,98,99,'VWAAAA','TJGAAA','HHHHxx'
+6196,4310,0,0,6,16,96,196,196,1196,6196,192,193,'IEAAAA','UJGAAA','OOOOxx'
+6026,4311,0,2,6,6,26,26,26,1026,6026,52,53,'UXAAAA','VJGAAA','VVVVxx'
+1646,4312,0,2,6,6,46,646,1646,1646,1646,92,93,'ILAAAA','WJGAAA','AAAAxx'
+6526,4313,0,2,6,6,26,526,526,1526,6526,52,53,'ARAAAA','XJGAAA','HHHHxx'
+5110,4314,0,2,0,10,10,110,1110,110,5110,20,21,'OOAAAA','YJGAAA','OOOOxx'
+3946,4315,0,2,6,6,46,946,1946,3946,3946,92,93,'UVAAAA','ZJGAAA','VVVVxx'
+445,4316,1,1,5,5,45,445,445,445,445,90,91,'DRAAAA','AKGAAA','AAAAxx'
+3249,4317,1,1,9,9,49,249,1249,3249,3249,98,99,'ZUAAAA','BKGAAA','HHHHxx'
+2501,4318,1,1,1,1,1,501,501,2501,2501,2,3,'FSAAAA','CKGAAA','OOOOxx'
+3243,4319,1,3,3,3,43,243,1243,3243,3243,86,87,'TUAAAA','DKGAAA','VVVVxx'
+4701,4320,1,1,1,1,1,701,701,4701,4701,2,3,'VYAAAA','EKGAAA','AAAAxx'
+472,4321,0,0,2,12,72,472,472,472,472,144,145,'ESAAAA','FKGAAA','HHHHxx'
+3356,4322,0,0,6,16,56,356,1356,3356,3356,112,113,'CZAAAA','GKGAAA','OOOOxx'
+9967,4323,1,3,7,7,67,967,1967,4967,9967,134,135,'JTAAAA','HKGAAA','VVVVxx'
+4292,4324,0,0,2,12,92,292,292,4292,4292,184,185,'CJAAAA','IKGAAA','AAAAxx'
+7005,4325,1,1,5,5,5,5,1005,2005,7005,10,11,'LJAAAA','JKGAAA','HHHHxx'
+6267,4326,1,3,7,7,67,267,267,1267,6267,134,135,'BHAAAA','KKGAAA','OOOOxx'
+6678,4327,0,2,8,18,78,678,678,1678,6678,156,157,'WWAAAA','LKGAAA','VVVVxx'
+6083,4328,1,3,3,3,83,83,83,1083,6083,166,167,'ZZAAAA','MKGAAA','AAAAxx'
+760,4329,0,0,0,0,60,760,760,760,760,120,121,'GDAAAA','NKGAAA','HHHHxx'
+7833,4330,1,1,3,13,33,833,1833,2833,7833,66,67,'HPAAAA','OKGAAA','OOOOxx'
+2877,4331,1,1,7,17,77,877,877,2877,2877,154,155,'RGAAAA','PKGAAA','VVVVxx'
+8810,4332,0,2,0,10,10,810,810,3810,8810,20,21,'WAAAAA','QKGAAA','AAAAxx'
+1560,4333,0,0,0,0,60,560,1560,1560,1560,120,121,'AIAAAA','RKGAAA','HHHHxx'
+1367,4334,1,3,7,7,67,367,1367,1367,1367,134,135,'PAAAAA','SKGAAA','OOOOxx'
+8756,4335,0,0,6,16,56,756,756,3756,8756,112,113,'UYAAAA','TKGAAA','VVVVxx'
+1346,4336,0,2,6,6,46,346,1346,1346,1346,92,93,'UZAAAA','UKGAAA','AAAAxx'
+6449,4337,1,1,9,9,49,449,449,1449,6449,98,99,'BOAAAA','VKGAAA','HHHHxx'
+6658,4338,0,2,8,18,58,658,658,1658,6658,116,117,'CWAAAA','WKGAAA','OOOOxx'
+6745,4339,1,1,5,5,45,745,745,1745,6745,90,91,'LZAAAA','XKGAAA','VVVVxx'
+4866,4340,0,2,6,6,66,866,866,4866,4866,132,133,'EFAAAA','YKGAAA','AAAAxx'
+14,4341,0,2,4,14,14,14,14,14,14,28,29,'OAAAAA','ZKGAAA','HHHHxx'
+4506,4342,0,2,6,6,6,506,506,4506,4506,12,13,'IRAAAA','ALGAAA','OOOOxx'
+1923,4343,1,3,3,3,23,923,1923,1923,1923,46,47,'ZVAAAA','BLGAAA','VVVVxx'
+8365,4344,1,1,5,5,65,365,365,3365,8365,130,131,'TJAAAA','CLGAAA','AAAAxx'
+1279,4345,1,3,9,19,79,279,1279,1279,1279,158,159,'FXAAAA','DLGAAA','HHHHxx'
+7666,4346,0,2,6,6,66,666,1666,2666,7666,132,133,'WIAAAA','ELGAAA','OOOOxx'
+7404,4347,0,0,4,4,4,404,1404,2404,7404,8,9,'UYAAAA','FLGAAA','VVVVxx'
+65,4348,1,1,5,5,65,65,65,65,65,130,131,'NCAAAA','GLGAAA','AAAAxx'
+5820,4349,0,0,0,0,20,820,1820,820,5820,40,41,'WPAAAA','HLGAAA','HHHHxx'
+459,4350,1,3,9,19,59,459,459,459,459,118,119,'RRAAAA','ILGAAA','OOOOxx'
+4787,4351,1,3,7,7,87,787,787,4787,4787,174,175,'DCAAAA','JLGAAA','VVVVxx'
+5631,4352,1,3,1,11,31,631,1631,631,5631,62,63,'PIAAAA','KLGAAA','AAAAxx'
+9717,4353,1,1,7,17,17,717,1717,4717,9717,34,35,'TJAAAA','LLGAAA','HHHHxx'
+2560,4354,0,0,0,0,60,560,560,2560,2560,120,121,'MUAAAA','MLGAAA','OOOOxx'
+8295,4355,1,3,5,15,95,295,295,3295,8295,190,191,'BHAAAA','NLGAAA','VVVVxx'
+3596,4356,0,0,6,16,96,596,1596,3596,3596,192,193,'IIAAAA','OLGAAA','AAAAxx'
+2023,4357,1,3,3,3,23,23,23,2023,2023,46,47,'VZAAAA','PLGAAA','HHHHxx'
+5055,4358,1,3,5,15,55,55,1055,55,5055,110,111,'LMAAAA','QLGAAA','OOOOxx'
+763,4359,1,3,3,3,63,763,763,763,763,126,127,'JDAAAA','RLGAAA','VVVVxx'
+6733,4360,1,1,3,13,33,733,733,1733,6733,66,67,'ZYAAAA','SLGAAA','AAAAxx'
+9266,4361,0,2,6,6,66,266,1266,4266,9266,132,133,'KSAAAA','TLGAAA','HHHHxx'
+4479,4362,1,3,9,19,79,479,479,4479,4479,158,159,'HQAAAA','ULGAAA','OOOOxx'
+1816,4363,0,0,6,16,16,816,1816,1816,1816,32,33,'WRAAAA','VLGAAA','VVVVxx'
+899,4364,1,3,9,19,99,899,899,899,899,198,199,'PIAAAA','WLGAAA','AAAAxx'
+230,4365,0,2,0,10,30,230,230,230,230,60,61,'WIAAAA','XLGAAA','HHHHxx'
+5362,4366,0,2,2,2,62,362,1362,362,5362,124,125,'GYAAAA','YLGAAA','OOOOxx'
+1609,4367,1,1,9,9,9,609,1609,1609,1609,18,19,'XJAAAA','ZLGAAA','VVVVxx'
+6750,4368,0,2,0,10,50,750,750,1750,6750,100,101,'QZAAAA','AMGAAA','AAAAxx'
+9704,4369,0,0,4,4,4,704,1704,4704,9704,8,9,'GJAAAA','BMGAAA','HHHHxx'
+3991,4370,1,3,1,11,91,991,1991,3991,3991,182,183,'NXAAAA','CMGAAA','OOOOxx'
+3959,4371,1,3,9,19,59,959,1959,3959,3959,118,119,'HWAAAA','DMGAAA','VVVVxx'
+9021,4372,1,1,1,1,21,21,1021,4021,9021,42,43,'ZIAAAA','EMGAAA','AAAAxx'
+7585,4373,1,1,5,5,85,585,1585,2585,7585,170,171,'TFAAAA','FMGAAA','HHHHxx'
+7083,4374,1,3,3,3,83,83,1083,2083,7083,166,167,'LMAAAA','GMGAAA','OOOOxx'
+7688,4375,0,0,8,8,88,688,1688,2688,7688,176,177,'SJAAAA','HMGAAA','VVVVxx'
+2673,4376,1,1,3,13,73,673,673,2673,2673,146,147,'VYAAAA','IMGAAA','AAAAxx'
+3554,4377,0,2,4,14,54,554,1554,3554,3554,108,109,'SGAAAA','JMGAAA','HHHHxx'
+7416,4378,0,0,6,16,16,416,1416,2416,7416,32,33,'GZAAAA','KMGAAA','OOOOxx'
+5672,4379,0,0,2,12,72,672,1672,672,5672,144,145,'EKAAAA','LMGAAA','VVVVxx'
+1355,4380,1,3,5,15,55,355,1355,1355,1355,110,111,'DAAAAA','MMGAAA','AAAAxx'
+3149,4381,1,1,9,9,49,149,1149,3149,3149,98,99,'DRAAAA','NMGAAA','HHHHxx'
+5811,4382,1,3,1,11,11,811,1811,811,5811,22,23,'NPAAAA','OMGAAA','OOOOxx'
+3759,4383,1,3,9,19,59,759,1759,3759,3759,118,119,'POAAAA','PMGAAA','VVVVxx'
+5634,4384,0,2,4,14,34,634,1634,634,5634,68,69,'SIAAAA','QMGAAA','AAAAxx'
+8617,4385,1,1,7,17,17,617,617,3617,8617,34,35,'LTAAAA','RMGAAA','HHHHxx'
+8949,4386,1,1,9,9,49,949,949,3949,8949,98,99,'FGAAAA','SMGAAA','OOOOxx'
+3964,4387,0,0,4,4,64,964,1964,3964,3964,128,129,'MWAAAA','TMGAAA','VVVVxx'
+3852,4388,0,0,2,12,52,852,1852,3852,3852,104,105,'ESAAAA','UMGAAA','AAAAxx'
+1555,4389,1,3,5,15,55,555,1555,1555,1555,110,111,'VHAAAA','VMGAAA','HHHHxx'
+6536,4390,0,0,6,16,36,536,536,1536,6536,72,73,'KRAAAA','WMGAAA','OOOOxx'
+4779,4391,1,3,9,19,79,779,779,4779,4779,158,159,'VBAAAA','XMGAAA','VVVVxx'
+1893,4392,1,1,3,13,93,893,1893,1893,1893,186,187,'VUAAAA','YMGAAA','AAAAxx'
+9358,4393,0,2,8,18,58,358,1358,4358,9358,116,117,'YVAAAA','ZMGAAA','HHHHxx'
+7438,4394,0,2,8,18,38,438,1438,2438,7438,76,77,'CAAAAA','ANGAAA','OOOOxx'
+941,4395,1,1,1,1,41,941,941,941,941,82,83,'FKAAAA','BNGAAA','VVVVxx'
+4844,4396,0,0,4,4,44,844,844,4844,4844,88,89,'IEAAAA','CNGAAA','AAAAxx'
+4745,4397,1,1,5,5,45,745,745,4745,4745,90,91,'NAAAAA','DNGAAA','HHHHxx'
+1017,4398,1,1,7,17,17,17,1017,1017,1017,34,35,'DNAAAA','ENGAAA','OOOOxx'
+327,4399,1,3,7,7,27,327,327,327,327,54,55,'PMAAAA','FNGAAA','VVVVxx'
+3152,4400,0,0,2,12,52,152,1152,3152,3152,104,105,'GRAAAA','GNGAAA','AAAAxx'
+4711,4401,1,3,1,11,11,711,711,4711,4711,22,23,'FZAAAA','HNGAAA','HHHHxx'
+141,4402,1,1,1,1,41,141,141,141,141,82,83,'LFAAAA','INGAAA','OOOOxx'
+1303,4403,1,3,3,3,3,303,1303,1303,1303,6,7,'DYAAAA','JNGAAA','VVVVxx'
+8873,4404,1,1,3,13,73,873,873,3873,8873,146,147,'HDAAAA','KNGAAA','AAAAxx'
+8481,4405,1,1,1,1,81,481,481,3481,8481,162,163,'FOAAAA','LNGAAA','HHHHxx'
+5445,4406,1,1,5,5,45,445,1445,445,5445,90,91,'LBAAAA','MNGAAA','OOOOxx'
+7868,4407,0,0,8,8,68,868,1868,2868,7868,136,137,'QQAAAA','NNGAAA','VVVVxx'
+6722,4408,0,2,2,2,22,722,722,1722,6722,44,45,'OYAAAA','ONGAAA','AAAAxx'
+6628,4409,0,0,8,8,28,628,628,1628,6628,56,57,'YUAAAA','PNGAAA','HHHHxx'
+7738,4410,0,2,8,18,38,738,1738,2738,7738,76,77,'QLAAAA','QNGAAA','OOOOxx'
+1018,4411,0,2,8,18,18,18,1018,1018,1018,36,37,'ENAAAA','RNGAAA','VVVVxx'
+3296,4412,0,0,6,16,96,296,1296,3296,3296,192,193,'UWAAAA','SNGAAA','AAAAxx'
+1946,4413,0,2,6,6,46,946,1946,1946,1946,92,93,'WWAAAA','TNGAAA','HHHHxx'
+6603,4414,1,3,3,3,3,603,603,1603,6603,6,7,'ZTAAAA','UNGAAA','OOOOxx'
+3562,4415,0,2,2,2,62,562,1562,3562,3562,124,125,'AHAAAA','VNGAAA','VVVVxx'
+1147,4416,1,3,7,7,47,147,1147,1147,1147,94,95,'DSAAAA','WNGAAA','AAAAxx'
+6031,4417,1,3,1,11,31,31,31,1031,6031,62,63,'ZXAAAA','XNGAAA','HHHHxx'
+6484,4418,0,0,4,4,84,484,484,1484,6484,168,169,'KPAAAA','YNGAAA','OOOOxx'
+496,4419,0,0,6,16,96,496,496,496,496,192,193,'CTAAAA','ZNGAAA','VVVVxx'
+4563,4420,1,3,3,3,63,563,563,4563,4563,126,127,'NTAAAA','AOGAAA','AAAAxx'
+1037,4421,1,1,7,17,37,37,1037,1037,1037,74,75,'XNAAAA','BOGAAA','HHHHxx'
+9672,4422,0,0,2,12,72,672,1672,4672,9672,144,145,'AIAAAA','COGAAA','OOOOxx'
+9053,4423,1,1,3,13,53,53,1053,4053,9053,106,107,'FKAAAA','DOGAAA','VVVVxx'
+2523,4424,1,3,3,3,23,523,523,2523,2523,46,47,'BTAAAA','EOGAAA','AAAAxx'
+8519,4425,1,3,9,19,19,519,519,3519,8519,38,39,'RPAAAA','FOGAAA','HHHHxx'
+8190,4426,0,2,0,10,90,190,190,3190,8190,180,181,'ADAAAA','GOGAAA','OOOOxx'
+2068,4427,0,0,8,8,68,68,68,2068,2068,136,137,'OBAAAA','HOGAAA','VVVVxx'
+8569,4428,1,1,9,9,69,569,569,3569,8569,138,139,'PRAAAA','IOGAAA','AAAAxx'
+6535,4429,1,3,5,15,35,535,535,1535,6535,70,71,'JRAAAA','JOGAAA','HHHHxx'
+1810,4430,0,2,0,10,10,810,1810,1810,1810,20,21,'QRAAAA','KOGAAA','OOOOxx'
+3099,4431,1,3,9,19,99,99,1099,3099,3099,198,199,'FPAAAA','LOGAAA','VVVVxx'
+7466,4432,0,2,6,6,66,466,1466,2466,7466,132,133,'EBAAAA','MOGAAA','AAAAxx'
+4017,4433,1,1,7,17,17,17,17,4017,4017,34,35,'NYAAAA','NOGAAA','HHHHxx'
+1097,4434,1,1,7,17,97,97,1097,1097,1097,194,195,'FQAAAA','OOGAAA','OOOOxx'
+7686,4435,0,2,6,6,86,686,1686,2686,7686,172,173,'QJAAAA','POGAAA','VVVVxx'
+6742,4436,0,2,2,2,42,742,742,1742,6742,84,85,'IZAAAA','QOGAAA','AAAAxx'
+5966,4437,0,2,6,6,66,966,1966,966,5966,132,133,'MVAAAA','ROGAAA','HHHHxx'
+3632,4438,0,0,2,12,32,632,1632,3632,3632,64,65,'SJAAAA','SOGAAA','OOOOxx'
+8837,4439,1,1,7,17,37,837,837,3837,8837,74,75,'XBAAAA','TOGAAA','VVVVxx'
+1667,4440,1,3,7,7,67,667,1667,1667,1667,134,135,'DMAAAA','UOGAAA','AAAAxx'
+8833,4441,1,1,3,13,33,833,833,3833,8833,66,67,'TBAAAA','VOGAAA','HHHHxx'
+9805,4442,1,1,5,5,5,805,1805,4805,9805,10,11,'DNAAAA','WOGAAA','OOOOxx'
+3650,4443,0,2,0,10,50,650,1650,3650,3650,100,101,'KKAAAA','XOGAAA','VVVVxx'
+2237,4444,1,1,7,17,37,237,237,2237,2237,74,75,'BIAAAA','YOGAAA','AAAAxx'
+9980,4445,0,0,0,0,80,980,1980,4980,9980,160,161,'WTAAAA','ZOGAAA','HHHHxx'
+2861,4446,1,1,1,1,61,861,861,2861,2861,122,123,'BGAAAA','APGAAA','OOOOxx'
+1334,4447,0,2,4,14,34,334,1334,1334,1334,68,69,'IZAAAA','BPGAAA','VVVVxx'
+842,4448,0,2,2,2,42,842,842,842,842,84,85,'KGAAAA','CPGAAA','AAAAxx'
+1116,4449,0,0,6,16,16,116,1116,1116,1116,32,33,'YQAAAA','DPGAAA','HHHHxx'
+4055,4450,1,3,5,15,55,55,55,4055,4055,110,111,'ZZAAAA','EPGAAA','OOOOxx'
+3842,4451,0,2,2,2,42,842,1842,3842,3842,84,85,'URAAAA','FPGAAA','VVVVxx'
+1886,4452,0,2,6,6,86,886,1886,1886,1886,172,173,'OUAAAA','GPGAAA','AAAAxx'
+8589,4453,1,1,9,9,89,589,589,3589,8589,178,179,'JSAAAA','HPGAAA','HHHHxx'
+5873,4454,1,1,3,13,73,873,1873,873,5873,146,147,'XRAAAA','IPGAAA','OOOOxx'
+7711,4455,1,3,1,11,11,711,1711,2711,7711,22,23,'PKAAAA','JPGAAA','VVVVxx'
+911,4456,1,3,1,11,11,911,911,911,911,22,23,'BJAAAA','KPGAAA','AAAAxx'
+5837,4457,1,1,7,17,37,837,1837,837,5837,74,75,'NQAAAA','LPGAAA','HHHHxx'
+897,4458,1,1,7,17,97,897,897,897,897,194,195,'NIAAAA','MPGAAA','OOOOxx'
+4299,4459,1,3,9,19,99,299,299,4299,4299,198,199,'JJAAAA','NPGAAA','VVVVxx'
+7774,4460,0,2,4,14,74,774,1774,2774,7774,148,149,'ANAAAA','OPGAAA','AAAAxx'
+7832,4461,0,0,2,12,32,832,1832,2832,7832,64,65,'GPAAAA','PPGAAA','HHHHxx'
+9915,4462,1,3,5,15,15,915,1915,4915,9915,30,31,'JRAAAA','QPGAAA','OOOOxx'
+9,4463,1,1,9,9,9,9,9,9,9,18,19,'JAAAAA','RPGAAA','VVVVxx'
+9675,4464,1,3,5,15,75,675,1675,4675,9675,150,151,'DIAAAA','SPGAAA','AAAAxx'
+7953,4465,1,1,3,13,53,953,1953,2953,7953,106,107,'XTAAAA','TPGAAA','HHHHxx'
+8912,4466,0,0,2,12,12,912,912,3912,8912,24,25,'UEAAAA','UPGAAA','OOOOxx'
+4188,4467,0,0,8,8,88,188,188,4188,4188,176,177,'CFAAAA','VPGAAA','VVVVxx'
+8446,4468,0,2,6,6,46,446,446,3446,8446,92,93,'WMAAAA','WPGAAA','AAAAxx'
+1600,4469,0,0,0,0,0,600,1600,1600,1600,0,1,'OJAAAA','XPGAAA','HHHHxx'
+43,4470,1,3,3,3,43,43,43,43,43,86,87,'RBAAAA','YPGAAA','OOOOxx'
+544,4471,0,0,4,4,44,544,544,544,544,88,89,'YUAAAA','ZPGAAA','VVVVxx'
+6977,4472,1,1,7,17,77,977,977,1977,6977,154,155,'JIAAAA','AQGAAA','AAAAxx'
+3191,4473,1,3,1,11,91,191,1191,3191,3191,182,183,'TSAAAA','BQGAAA','HHHHxx'
+418,4474,0,2,8,18,18,418,418,418,418,36,37,'CQAAAA','CQGAAA','OOOOxx'
+3142,4475,0,2,2,2,42,142,1142,3142,3142,84,85,'WQAAAA','DQGAAA','VVVVxx'
+5042,4476,0,2,2,2,42,42,1042,42,5042,84,85,'YLAAAA','EQGAAA','AAAAxx'
+2194,4477,0,2,4,14,94,194,194,2194,2194,188,189,'KGAAAA','FQGAAA','HHHHxx'
+2397,4478,1,1,7,17,97,397,397,2397,2397,194,195,'FOAAAA','GQGAAA','OOOOxx'
+4684,4479,0,0,4,4,84,684,684,4684,4684,168,169,'EYAAAA','HQGAAA','VVVVxx'
+34,4480,0,2,4,14,34,34,34,34,34,68,69,'IBAAAA','IQGAAA','AAAAxx'
+3844,4481,0,0,4,4,44,844,1844,3844,3844,88,89,'WRAAAA','JQGAAA','HHHHxx'
+7824,4482,0,0,4,4,24,824,1824,2824,7824,48,49,'YOAAAA','KQGAAA','OOOOxx'
+6177,4483,1,1,7,17,77,177,177,1177,6177,154,155,'PDAAAA','LQGAAA','VVVVxx'
+9657,4484,1,1,7,17,57,657,1657,4657,9657,114,115,'LHAAAA','MQGAAA','AAAAxx'
+4546,4485,0,2,6,6,46,546,546,4546,4546,92,93,'WSAAAA','NQGAAA','HHHHxx'
+599,4486,1,3,9,19,99,599,599,599,599,198,199,'BXAAAA','OQGAAA','OOOOxx'
+153,4487,1,1,3,13,53,153,153,153,153,106,107,'XFAAAA','PQGAAA','VVVVxx'
+6910,4488,0,2,0,10,10,910,910,1910,6910,20,21,'UFAAAA','QQGAAA','AAAAxx'
+4408,4489,0,0,8,8,8,408,408,4408,4408,16,17,'ONAAAA','RQGAAA','HHHHxx'
+1164,4490,0,0,4,4,64,164,1164,1164,1164,128,129,'USAAAA','SQGAAA','OOOOxx'
+6469,4491,1,1,9,9,69,469,469,1469,6469,138,139,'VOAAAA','TQGAAA','VVVVxx'
+5996,4492,0,0,6,16,96,996,1996,996,5996,192,193,'QWAAAA','UQGAAA','AAAAxx'
+2639,4493,1,3,9,19,39,639,639,2639,2639,78,79,'NXAAAA','VQGAAA','HHHHxx'
+2678,4494,0,2,8,18,78,678,678,2678,2678,156,157,'AZAAAA','WQGAAA','OOOOxx'
+8392,4495,0,0,2,12,92,392,392,3392,8392,184,185,'UKAAAA','XQGAAA','VVVVxx'
+1386,4496,0,2,6,6,86,386,1386,1386,1386,172,173,'IBAAAA','YQGAAA','AAAAxx'
+5125,4497,1,1,5,5,25,125,1125,125,5125,50,51,'DPAAAA','ZQGAAA','HHHHxx'
+8453,4498,1,1,3,13,53,453,453,3453,8453,106,107,'DNAAAA','ARGAAA','OOOOxx'
+2369,4499,1,1,9,9,69,369,369,2369,2369,138,139,'DNAAAA','BRGAAA','VVVVxx'
+1608,4500,0,0,8,8,8,608,1608,1608,1608,16,17,'WJAAAA','CRGAAA','AAAAxx'
+3781,4501,1,1,1,1,81,781,1781,3781,3781,162,163,'LPAAAA','DRGAAA','HHHHxx'
+903,4502,1,3,3,3,3,903,903,903,903,6,7,'TIAAAA','ERGAAA','OOOOxx'
+2099,4503,1,3,9,19,99,99,99,2099,2099,198,199,'TCAAAA','FRGAAA','VVVVxx'
+538,4504,0,2,8,18,38,538,538,538,538,76,77,'SUAAAA','GRGAAA','AAAAxx'
+9177,4505,1,1,7,17,77,177,1177,4177,9177,154,155,'ZOAAAA','HRGAAA','HHHHxx'
+420,4506,0,0,0,0,20,420,420,420,420,40,41,'EQAAAA','IRGAAA','OOOOxx'
+9080,4507,0,0,0,0,80,80,1080,4080,9080,160,161,'GLAAAA','JRGAAA','VVVVxx'
+2630,4508,0,2,0,10,30,630,630,2630,2630,60,61,'EXAAAA','KRGAAA','AAAAxx'
+5978,4509,0,2,8,18,78,978,1978,978,5978,156,157,'YVAAAA','LRGAAA','HHHHxx'
+9239,4510,1,3,9,19,39,239,1239,4239,9239,78,79,'JRAAAA','MRGAAA','OOOOxx'
+4372,4511,0,0,2,12,72,372,372,4372,4372,144,145,'EMAAAA','NRGAAA','VVVVxx'
+4357,4512,1,1,7,17,57,357,357,4357,4357,114,115,'PLAAAA','ORGAAA','AAAAxx'
+9857,4513,1,1,7,17,57,857,1857,4857,9857,114,115,'DPAAAA','PRGAAA','HHHHxx'
+7933,4514,1,1,3,13,33,933,1933,2933,7933,66,67,'DTAAAA','QRGAAA','OOOOxx'
+9574,4515,0,2,4,14,74,574,1574,4574,9574,148,149,'GEAAAA','RRGAAA','VVVVxx'
+8294,4516,0,2,4,14,94,294,294,3294,8294,188,189,'AHAAAA','SRGAAA','AAAAxx'
+627,4517,1,3,7,7,27,627,627,627,627,54,55,'DYAAAA','TRGAAA','HHHHxx'
+3229,4518,1,1,9,9,29,229,1229,3229,3229,58,59,'FUAAAA','URGAAA','OOOOxx'
+3163,4519,1,3,3,3,63,163,1163,3163,3163,126,127,'RRAAAA','VRGAAA','VVVVxx'
+7349,4520,1,1,9,9,49,349,1349,2349,7349,98,99,'RWAAAA','WRGAAA','AAAAxx'
+6889,4521,1,1,9,9,89,889,889,1889,6889,178,179,'ZEAAAA','XRGAAA','HHHHxx'
+2101,4522,1,1,1,1,1,101,101,2101,2101,2,3,'VCAAAA','YRGAAA','OOOOxx'
+6476,4523,0,0,6,16,76,476,476,1476,6476,152,153,'CPAAAA','ZRGAAA','VVVVxx'
+6765,4524,1,1,5,5,65,765,765,1765,6765,130,131,'FAAAAA','ASGAAA','AAAAxx'
+4204,4525,0,0,4,4,4,204,204,4204,4204,8,9,'SFAAAA','BSGAAA','HHHHxx'
+5915,4526,1,3,5,15,15,915,1915,915,5915,30,31,'NTAAAA','CSGAAA','OOOOxx'
+2318,4527,0,2,8,18,18,318,318,2318,2318,36,37,'ELAAAA','DSGAAA','VVVVxx'
+294,4528,0,2,4,14,94,294,294,294,294,188,189,'ILAAAA','ESGAAA','AAAAxx'
+5245,4529,1,1,5,5,45,245,1245,245,5245,90,91,'TTAAAA','FSGAAA','HHHHxx'
+4481,4530,1,1,1,1,81,481,481,4481,4481,162,163,'JQAAAA','GSGAAA','OOOOxx'
+7754,4531,0,2,4,14,54,754,1754,2754,7754,108,109,'GMAAAA','HSGAAA','VVVVxx'
+8494,4532,0,2,4,14,94,494,494,3494,8494,188,189,'SOAAAA','ISGAAA','AAAAxx'
+4014,4533,0,2,4,14,14,14,14,4014,4014,28,29,'KYAAAA','JSGAAA','HHHHxx'
+2197,4534,1,1,7,17,97,197,197,2197,2197,194,195,'NGAAAA','KSGAAA','OOOOxx'
+1297,4535,1,1,7,17,97,297,1297,1297,1297,194,195,'XXAAAA','LSGAAA','VVVVxx'
+1066,4536,0,2,6,6,66,66,1066,1066,1066,132,133,'APAAAA','MSGAAA','AAAAxx'
+5710,4537,0,2,0,10,10,710,1710,710,5710,20,21,'QLAAAA','NSGAAA','HHHHxx'
+4100,4538,0,0,0,0,0,100,100,4100,4100,0,1,'SBAAAA','OSGAAA','OOOOxx'
+7356,4539,0,0,6,16,56,356,1356,2356,7356,112,113,'YWAAAA','PSGAAA','VVVVxx'
+7658,4540,0,2,8,18,58,658,1658,2658,7658,116,117,'OIAAAA','QSGAAA','AAAAxx'
+3666,4541,0,2,6,6,66,666,1666,3666,3666,132,133,'ALAAAA','RSGAAA','HHHHxx'
+9713,4542,1,1,3,13,13,713,1713,4713,9713,26,27,'PJAAAA','SSGAAA','OOOOxx'
+691,4543,1,3,1,11,91,691,691,691,691,182,183,'PAAAAA','TSGAAA','VVVVxx'
+3112,4544,0,0,2,12,12,112,1112,3112,3112,24,25,'SPAAAA','USGAAA','AAAAxx'
+6035,4545,1,3,5,15,35,35,35,1035,6035,70,71,'DYAAAA','VSGAAA','HHHHxx'
+8353,4546,1,1,3,13,53,353,353,3353,8353,106,107,'HJAAAA','WSGAAA','OOOOxx'
+5679,4547,1,3,9,19,79,679,1679,679,5679,158,159,'LKAAAA','XSGAAA','VVVVxx'
+2124,4548,0,0,4,4,24,124,124,2124,2124,48,49,'SDAAAA','YSGAAA','AAAAxx'
+4714,4549,0,2,4,14,14,714,714,4714,4714,28,29,'IZAAAA','ZSGAAA','HHHHxx'
+9048,4550,0,0,8,8,48,48,1048,4048,9048,96,97,'AKAAAA','ATGAAA','OOOOxx'
+7692,4551,0,0,2,12,92,692,1692,2692,7692,184,185,'WJAAAA','BTGAAA','VVVVxx'
+4542,4552,0,2,2,2,42,542,542,4542,4542,84,85,'SSAAAA','CTGAAA','AAAAxx'
+8737,4553,1,1,7,17,37,737,737,3737,8737,74,75,'BYAAAA','DTGAAA','HHHHxx'
+4977,4554,1,1,7,17,77,977,977,4977,4977,154,155,'LJAAAA','ETGAAA','OOOOxx'
+9349,4555,1,1,9,9,49,349,1349,4349,9349,98,99,'PVAAAA','FTGAAA','VVVVxx'
+731,4556,1,3,1,11,31,731,731,731,731,62,63,'DCAAAA','GTGAAA','AAAAxx'
+1788,4557,0,0,8,8,88,788,1788,1788,1788,176,177,'UQAAAA','HTGAAA','HHHHxx'
+7830,4558,0,2,0,10,30,830,1830,2830,7830,60,61,'EPAAAA','ITGAAA','OOOOxx'
+3977,4559,1,1,7,17,77,977,1977,3977,3977,154,155,'ZWAAAA','JTGAAA','VVVVxx'
+2421,4560,1,1,1,1,21,421,421,2421,2421,42,43,'DPAAAA','KTGAAA','AAAAxx'
+5891,4561,1,3,1,11,91,891,1891,891,5891,182,183,'PSAAAA','LTGAAA','HHHHxx'
+1111,4562,1,3,1,11,11,111,1111,1111,1111,22,23,'TQAAAA','MTGAAA','OOOOxx'
+9224,4563,0,0,4,4,24,224,1224,4224,9224,48,49,'UQAAAA','NTGAAA','VVVVxx'
+9872,4564,0,0,2,12,72,872,1872,4872,9872,144,145,'SPAAAA','OTGAAA','AAAAxx'
+2433,4565,1,1,3,13,33,433,433,2433,2433,66,67,'PPAAAA','PTGAAA','HHHHxx'
+1491,4566,1,3,1,11,91,491,1491,1491,1491,182,183,'JFAAAA','QTGAAA','OOOOxx'
+6653,4567,1,1,3,13,53,653,653,1653,6653,106,107,'XVAAAA','RTGAAA','VVVVxx'
+1907,4568,1,3,7,7,7,907,1907,1907,1907,14,15,'JVAAAA','STGAAA','AAAAxx'
+889,4569,1,1,9,9,89,889,889,889,889,178,179,'FIAAAA','TTGAAA','HHHHxx'
+561,4570,1,1,1,1,61,561,561,561,561,122,123,'PVAAAA','UTGAAA','OOOOxx'
+7415,4571,1,3,5,15,15,415,1415,2415,7415,30,31,'FZAAAA','VTGAAA','VVVVxx'
+2703,4572,1,3,3,3,3,703,703,2703,2703,6,7,'ZZAAAA','WTGAAA','AAAAxx'
+2561,4573,1,1,1,1,61,561,561,2561,2561,122,123,'NUAAAA','XTGAAA','HHHHxx'
+1257,4574,1,1,7,17,57,257,1257,1257,1257,114,115,'JWAAAA','YTGAAA','OOOOxx'
+2390,4575,0,2,0,10,90,390,390,2390,2390,180,181,'YNAAAA','ZTGAAA','VVVVxx'
+3915,4576,1,3,5,15,15,915,1915,3915,3915,30,31,'PUAAAA','AUGAAA','AAAAxx'
+8476,4577,0,0,6,16,76,476,476,3476,8476,152,153,'AOAAAA','BUGAAA','HHHHxx'
+607,4578,1,3,7,7,7,607,607,607,607,14,15,'JXAAAA','CUGAAA','OOOOxx'
+3891,4579,1,3,1,11,91,891,1891,3891,3891,182,183,'RTAAAA','DUGAAA','VVVVxx'
+7269,4580,1,1,9,9,69,269,1269,2269,7269,138,139,'PTAAAA','EUGAAA','AAAAxx'
+9537,4581,1,1,7,17,37,537,1537,4537,9537,74,75,'VCAAAA','FUGAAA','HHHHxx'
+8518,4582,0,2,8,18,18,518,518,3518,8518,36,37,'QPAAAA','GUGAAA','OOOOxx'
+5221,4583,1,1,1,1,21,221,1221,221,5221,42,43,'VSAAAA','HUGAAA','VVVVxx'
+3274,4584,0,2,4,14,74,274,1274,3274,3274,148,149,'YVAAAA','IUGAAA','AAAAxx'
+6677,4585,1,1,7,17,77,677,677,1677,6677,154,155,'VWAAAA','JUGAAA','HHHHxx'
+3114,4586,0,2,4,14,14,114,1114,3114,3114,28,29,'UPAAAA','KUGAAA','OOOOxx'
+1966,4587,0,2,6,6,66,966,1966,1966,1966,132,133,'QXAAAA','LUGAAA','VVVVxx'
+5941,4588,1,1,1,1,41,941,1941,941,5941,82,83,'NUAAAA','MUGAAA','AAAAxx'
+9463,4589,1,3,3,3,63,463,1463,4463,9463,126,127,'ZZAAAA','NUGAAA','HHHHxx'
+8966,4590,0,2,6,6,66,966,966,3966,8966,132,133,'WGAAAA','OUGAAA','OOOOxx'
+4402,4591,0,2,2,2,2,402,402,4402,4402,4,5,'INAAAA','PUGAAA','VVVVxx'
+3364,4592,0,0,4,4,64,364,1364,3364,3364,128,129,'KZAAAA','QUGAAA','AAAAxx'
+3698,4593,0,2,8,18,98,698,1698,3698,3698,196,197,'GMAAAA','RUGAAA','HHHHxx'
+4651,4594,1,3,1,11,51,651,651,4651,4651,102,103,'XWAAAA','SUGAAA','OOOOxx'
+2127,4595,1,3,7,7,27,127,127,2127,2127,54,55,'VDAAAA','TUGAAA','VVVVxx'
+3614,4596,0,2,4,14,14,614,1614,3614,3614,28,29,'AJAAAA','UUGAAA','AAAAxx'
+5430,4597,0,2,0,10,30,430,1430,430,5430,60,61,'WAAAAA','VUGAAA','HHHHxx'
+3361,4598,1,1,1,1,61,361,1361,3361,3361,122,123,'HZAAAA','WUGAAA','OOOOxx'
+4798,4599,0,2,8,18,98,798,798,4798,4798,196,197,'OCAAAA','XUGAAA','VVVVxx'
+8269,4600,1,1,9,9,69,269,269,3269,8269,138,139,'BGAAAA','YUGAAA','AAAAxx'
+6458,4601,0,2,8,18,58,458,458,1458,6458,116,117,'KOAAAA','ZUGAAA','HHHHxx'
+3358,4602,0,2,8,18,58,358,1358,3358,3358,116,117,'EZAAAA','AVGAAA','OOOOxx'
+5898,4603,0,2,8,18,98,898,1898,898,5898,196,197,'WSAAAA','BVGAAA','VVVVxx'
+1880,4604,0,0,0,0,80,880,1880,1880,1880,160,161,'IUAAAA','CVGAAA','AAAAxx'
+782,4605,0,2,2,2,82,782,782,782,782,164,165,'CEAAAA','DVGAAA','HHHHxx'
+3102,4606,0,2,2,2,2,102,1102,3102,3102,4,5,'IPAAAA','EVGAAA','OOOOxx'
+6366,4607,0,2,6,6,66,366,366,1366,6366,132,133,'WKAAAA','FVGAAA','VVVVxx'
+399,4608,1,3,9,19,99,399,399,399,399,198,199,'JPAAAA','GVGAAA','AAAAxx'
+6773,4609,1,1,3,13,73,773,773,1773,6773,146,147,'NAAAAA','HVGAAA','HHHHxx'
+7942,4610,0,2,2,2,42,942,1942,2942,7942,84,85,'MTAAAA','IVGAAA','OOOOxx'
+6274,4611,0,2,4,14,74,274,274,1274,6274,148,149,'IHAAAA','JVGAAA','VVVVxx'
+7447,4612,1,3,7,7,47,447,1447,2447,7447,94,95,'LAAAAA','KVGAAA','AAAAxx'
+7648,4613,0,0,8,8,48,648,1648,2648,7648,96,97,'EIAAAA','LVGAAA','HHHHxx'
+3997,4614,1,1,7,17,97,997,1997,3997,3997,194,195,'TXAAAA','MVGAAA','OOOOxx'
+1759,4615,1,3,9,19,59,759,1759,1759,1759,118,119,'RPAAAA','NVGAAA','VVVVxx'
+1785,4616,1,1,5,5,85,785,1785,1785,1785,170,171,'RQAAAA','OVGAAA','AAAAxx'
+8930,4617,0,2,0,10,30,930,930,3930,8930,60,61,'MFAAAA','PVGAAA','HHHHxx'
+7595,4618,1,3,5,15,95,595,1595,2595,7595,190,191,'DGAAAA','QVGAAA','OOOOxx'
+6752,4619,0,0,2,12,52,752,752,1752,6752,104,105,'SZAAAA','RVGAAA','VVVVxx'
+5635,4620,1,3,5,15,35,635,1635,635,5635,70,71,'TIAAAA','SVGAAA','AAAAxx'
+1579,4621,1,3,9,19,79,579,1579,1579,1579,158,159,'TIAAAA','TVGAAA','HHHHxx'
+7743,4622,1,3,3,3,43,743,1743,2743,7743,86,87,'VLAAAA','UVGAAA','OOOOxx'
+5856,4623,0,0,6,16,56,856,1856,856,5856,112,113,'GRAAAA','VVGAAA','VVVVxx'
+7273,4624,1,1,3,13,73,273,1273,2273,7273,146,147,'TTAAAA','WVGAAA','AAAAxx'
+1399,4625,1,3,9,19,99,399,1399,1399,1399,198,199,'VBAAAA','XVGAAA','HHHHxx'
+3694,4626,0,2,4,14,94,694,1694,3694,3694,188,189,'CMAAAA','YVGAAA','OOOOxx'
+2782,4627,0,2,2,2,82,782,782,2782,2782,164,165,'ADAAAA','ZVGAAA','VVVVxx'
+6951,4628,1,3,1,11,51,951,951,1951,6951,102,103,'JHAAAA','AWGAAA','AAAAxx'
+6053,4629,1,1,3,13,53,53,53,1053,6053,106,107,'VYAAAA','BWGAAA','HHHHxx'
+1753,4630,1,1,3,13,53,753,1753,1753,1753,106,107,'LPAAAA','CWGAAA','OOOOxx'
+3985,4631,1,1,5,5,85,985,1985,3985,3985,170,171,'HXAAAA','DWGAAA','VVVVxx'
+6159,4632,1,3,9,19,59,159,159,1159,6159,118,119,'XCAAAA','EWGAAA','AAAAxx'
+6250,4633,0,2,0,10,50,250,250,1250,6250,100,101,'KGAAAA','FWGAAA','HHHHxx'
+6240,4634,0,0,0,0,40,240,240,1240,6240,80,81,'AGAAAA','GWGAAA','OOOOxx'
+6571,4635,1,3,1,11,71,571,571,1571,6571,142,143,'TSAAAA','HWGAAA','VVVVxx'
+8624,4636,0,0,4,4,24,624,624,3624,8624,48,49,'STAAAA','IWGAAA','AAAAxx'
+9718,4637,0,2,8,18,18,718,1718,4718,9718,36,37,'UJAAAA','JWGAAA','HHHHxx'
+5529,4638,1,1,9,9,29,529,1529,529,5529,58,59,'REAAAA','KWGAAA','OOOOxx'
+7089,4639,1,1,9,9,89,89,1089,2089,7089,178,179,'RMAAAA','LWGAAA','VVVVxx'
+5488,4640,0,0,8,8,88,488,1488,488,5488,176,177,'CDAAAA','MWGAAA','AAAAxx'
+5444,4641,0,0,4,4,44,444,1444,444,5444,88,89,'KBAAAA','NWGAAA','HHHHxx'
+4899,4642,1,3,9,19,99,899,899,4899,4899,198,199,'LGAAAA','OWGAAA','OOOOxx'
+7928,4643,0,0,8,8,28,928,1928,2928,7928,56,57,'YSAAAA','PWGAAA','VVVVxx'
+4736,4644,0,0,6,16,36,736,736,4736,4736,72,73,'EAAAAA','QWGAAA','AAAAxx'
+4317,4645,1,1,7,17,17,317,317,4317,4317,34,35,'BKAAAA','RWGAAA','HHHHxx'
+1174,4646,0,2,4,14,74,174,1174,1174,1174,148,149,'ETAAAA','SWGAAA','OOOOxx'
+6138,4647,0,2,8,18,38,138,138,1138,6138,76,77,'CCAAAA','TWGAAA','VVVVxx'
+3943,4648,1,3,3,3,43,943,1943,3943,3943,86,87,'RVAAAA','UWGAAA','AAAAxx'
+1545,4649,1,1,5,5,45,545,1545,1545,1545,90,91,'LHAAAA','VWGAAA','HHHHxx'
+6867,4650,1,3,7,7,67,867,867,1867,6867,134,135,'DEAAAA','WWGAAA','OOOOxx'
+6832,4651,0,0,2,12,32,832,832,1832,6832,64,65,'UCAAAA','XWGAAA','VVVVxx'
+2987,4652,1,3,7,7,87,987,987,2987,2987,174,175,'XKAAAA','YWGAAA','AAAAxx'
+5169,4653,1,1,9,9,69,169,1169,169,5169,138,139,'VQAAAA','ZWGAAA','HHHHxx'
+8998,4654,0,2,8,18,98,998,998,3998,8998,196,197,'CIAAAA','AXGAAA','OOOOxx'
+9347,4655,1,3,7,7,47,347,1347,4347,9347,94,95,'NVAAAA','BXGAAA','VVVVxx'
+4800,4656,0,0,0,0,0,800,800,4800,4800,0,1,'QCAAAA','CXGAAA','AAAAxx'
+4200,4657,0,0,0,0,0,200,200,4200,4200,0,1,'OFAAAA','DXGAAA','HHHHxx'
+4046,4658,0,2,6,6,46,46,46,4046,4046,92,93,'QZAAAA','EXGAAA','OOOOxx'
+7142,4659,0,2,2,2,42,142,1142,2142,7142,84,85,'SOAAAA','FXGAAA','VVVVxx'
+2733,4660,1,1,3,13,33,733,733,2733,2733,66,67,'DBAAAA','GXGAAA','AAAAxx'
+1568,4661,0,0,8,8,68,568,1568,1568,1568,136,137,'IIAAAA','HXGAAA','HHHHxx'
+5105,4662,1,1,5,5,5,105,1105,105,5105,10,11,'JOAAAA','IXGAAA','OOOOxx'
+9115,4663,1,3,5,15,15,115,1115,4115,9115,30,31,'PMAAAA','JXGAAA','VVVVxx'
+6475,4664,1,3,5,15,75,475,475,1475,6475,150,151,'BPAAAA','KXGAAA','AAAAxx'
+3796,4665,0,0,6,16,96,796,1796,3796,3796,192,193,'AQAAAA','LXGAAA','HHHHxx'
+5410,4666,0,2,0,10,10,410,1410,410,5410,20,21,'CAAAAA','MXGAAA','OOOOxx'
+4023,4667,1,3,3,3,23,23,23,4023,4023,46,47,'TYAAAA','NXGAAA','VVVVxx'
+8904,4668,0,0,4,4,4,904,904,3904,8904,8,9,'MEAAAA','OXGAAA','AAAAxx'
+450,4669,0,2,0,10,50,450,450,450,450,100,101,'IRAAAA','PXGAAA','HHHHxx'
+8087,4670,1,3,7,7,87,87,87,3087,8087,174,175,'BZAAAA','QXGAAA','OOOOxx'
+6478,4671,0,2,8,18,78,478,478,1478,6478,156,157,'EPAAAA','RXGAAA','VVVVxx'
+2696,4672,0,0,6,16,96,696,696,2696,2696,192,193,'SZAAAA','SXGAAA','AAAAxx'
+1792,4673,0,0,2,12,92,792,1792,1792,1792,184,185,'YQAAAA','TXGAAA','HHHHxx'
+9699,4674,1,3,9,19,99,699,1699,4699,9699,198,199,'BJAAAA','UXGAAA','OOOOxx'
+9160,4675,0,0,0,0,60,160,1160,4160,9160,120,121,'IOAAAA','VXGAAA','VVVVxx'
+9989,4676,1,1,9,9,89,989,1989,4989,9989,178,179,'FUAAAA','WXGAAA','AAAAxx'
+9568,4677,0,0,8,8,68,568,1568,4568,9568,136,137,'AEAAAA','XXGAAA','HHHHxx'
+487,4678,1,3,7,7,87,487,487,487,487,174,175,'TSAAAA','YXGAAA','OOOOxx'
+7863,4679,1,3,3,3,63,863,1863,2863,7863,126,127,'LQAAAA','ZXGAAA','VVVVxx'
+1884,4680,0,0,4,4,84,884,1884,1884,1884,168,169,'MUAAAA','AYGAAA','AAAAxx'
+2651,4681,1,3,1,11,51,651,651,2651,2651,102,103,'ZXAAAA','BYGAAA','HHHHxx'
+8285,4682,1,1,5,5,85,285,285,3285,8285,170,171,'RGAAAA','CYGAAA','OOOOxx'
+3927,4683,1,3,7,7,27,927,1927,3927,3927,54,55,'BVAAAA','DYGAAA','VVVVxx'
+4076,4684,0,0,6,16,76,76,76,4076,4076,152,153,'UAAAAA','EYGAAA','AAAAxx'
+6149,4685,1,1,9,9,49,149,149,1149,6149,98,99,'NCAAAA','FYGAAA','HHHHxx'
+6581,4686,1,1,1,1,81,581,581,1581,6581,162,163,'DTAAAA','GYGAAA','OOOOxx'
+8293,4687,1,1,3,13,93,293,293,3293,8293,186,187,'ZGAAAA','HYGAAA','VVVVxx'
+7665,4688,1,1,5,5,65,665,1665,2665,7665,130,131,'VIAAAA','IYGAAA','AAAAxx'
+4435,4689,1,3,5,15,35,435,435,4435,4435,70,71,'POAAAA','JYGAAA','HHHHxx'
+1271,4690,1,3,1,11,71,271,1271,1271,1271,142,143,'XWAAAA','KYGAAA','OOOOxx'
+3928,4691,0,0,8,8,28,928,1928,3928,3928,56,57,'CVAAAA','LYGAAA','VVVVxx'
+7045,4692,1,1,5,5,45,45,1045,2045,7045,90,91,'ZKAAAA','MYGAAA','AAAAxx'
+4943,4693,1,3,3,3,43,943,943,4943,4943,86,87,'DIAAAA','NYGAAA','HHHHxx'
+8473,4694,1,1,3,13,73,473,473,3473,8473,146,147,'XNAAAA','OYGAAA','OOOOxx'
+1707,4695,1,3,7,7,7,707,1707,1707,1707,14,15,'RNAAAA','PYGAAA','VVVVxx'
+7509,4696,1,1,9,9,9,509,1509,2509,7509,18,19,'VCAAAA','QYGAAA','AAAAxx'
+1593,4697,1,1,3,13,93,593,1593,1593,1593,186,187,'HJAAAA','RYGAAA','HHHHxx'
+9281,4698,1,1,1,1,81,281,1281,4281,9281,162,163,'ZSAAAA','SYGAAA','OOOOxx'
+8986,4699,0,2,6,6,86,986,986,3986,8986,172,173,'QHAAAA','TYGAAA','VVVVxx'
+3740,4700,0,0,0,0,40,740,1740,3740,3740,80,81,'WNAAAA','UYGAAA','AAAAxx'
+9265,4701,1,1,5,5,65,265,1265,4265,9265,130,131,'JSAAAA','VYGAAA','HHHHxx'
+1510,4702,0,2,0,10,10,510,1510,1510,1510,20,21,'CGAAAA','WYGAAA','OOOOxx'
+3022,4703,0,2,2,2,22,22,1022,3022,3022,44,45,'GMAAAA','XYGAAA','VVVVxx'
+9014,4704,0,2,4,14,14,14,1014,4014,9014,28,29,'SIAAAA','YYGAAA','AAAAxx'
+6816,4705,0,0,6,16,16,816,816,1816,6816,32,33,'ECAAAA','ZYGAAA','HHHHxx'
+5518,4706,0,2,8,18,18,518,1518,518,5518,36,37,'GEAAAA','AZGAAA','OOOOxx'
+4451,4707,1,3,1,11,51,451,451,4451,4451,102,103,'FPAAAA','BZGAAA','VVVVxx'
+8747,4708,1,3,7,7,47,747,747,3747,8747,94,95,'LYAAAA','CZGAAA','AAAAxx'
+4646,4709,0,2,6,6,46,646,646,4646,4646,92,93,'SWAAAA','DZGAAA','HHHHxx'
+7296,4710,0,0,6,16,96,296,1296,2296,7296,192,193,'QUAAAA','EZGAAA','OOOOxx'
+9644,4711,0,0,4,4,44,644,1644,4644,9644,88,89,'YGAAAA','FZGAAA','VVVVxx'
+5977,4712,1,1,7,17,77,977,1977,977,5977,154,155,'XVAAAA','GZGAAA','AAAAxx'
+6270,4713,0,2,0,10,70,270,270,1270,6270,140,141,'EHAAAA','HZGAAA','HHHHxx'
+5578,4714,0,2,8,18,78,578,1578,578,5578,156,157,'OGAAAA','IZGAAA','OOOOxx'
+2465,4715,1,1,5,5,65,465,465,2465,2465,130,131,'VQAAAA','JZGAAA','VVVVxx'
+6436,4716,0,0,6,16,36,436,436,1436,6436,72,73,'ONAAAA','KZGAAA','AAAAxx'
+8089,4717,1,1,9,9,89,89,89,3089,8089,178,179,'DZAAAA','LZGAAA','HHHHxx'
+2409,4718,1,1,9,9,9,409,409,2409,2409,18,19,'ROAAAA','MZGAAA','OOOOxx'
+284,4719,0,0,4,4,84,284,284,284,284,168,169,'YKAAAA','NZGAAA','VVVVxx'
+5576,4720,0,0,6,16,76,576,1576,576,5576,152,153,'MGAAAA','OZGAAA','AAAAxx'
+6534,4721,0,2,4,14,34,534,534,1534,6534,68,69,'IRAAAA','PZGAAA','HHHHxx'
+8848,4722,0,0,8,8,48,848,848,3848,8848,96,97,'ICAAAA','QZGAAA','OOOOxx'
+4305,4723,1,1,5,5,5,305,305,4305,4305,10,11,'PJAAAA','RZGAAA','VVVVxx'
+5574,4724,0,2,4,14,74,574,1574,574,5574,148,149,'KGAAAA','SZGAAA','AAAAxx'
+596,4725,0,0,6,16,96,596,596,596,596,192,193,'YWAAAA','TZGAAA','HHHHxx'
+1253,4726,1,1,3,13,53,253,1253,1253,1253,106,107,'FWAAAA','UZGAAA','OOOOxx'
+521,4727,1,1,1,1,21,521,521,521,521,42,43,'BUAAAA','VZGAAA','VVVVxx'
+8739,4728,1,3,9,19,39,739,739,3739,8739,78,79,'DYAAAA','WZGAAA','AAAAxx'
+908,4729,0,0,8,8,8,908,908,908,908,16,17,'YIAAAA','XZGAAA','HHHHxx'
+6937,4730,1,1,7,17,37,937,937,1937,6937,74,75,'VGAAAA','YZGAAA','OOOOxx'
+4515,4731,1,3,5,15,15,515,515,4515,4515,30,31,'RRAAAA','ZZGAAA','VVVVxx'
+8630,4732,0,2,0,10,30,630,630,3630,8630,60,61,'YTAAAA','AAHAAA','AAAAxx'
+7518,4733,0,2,8,18,18,518,1518,2518,7518,36,37,'EDAAAA','BAHAAA','HHHHxx'
+8300,4734,0,0,0,0,0,300,300,3300,8300,0,1,'GHAAAA','CAHAAA','OOOOxx'
+8434,4735,0,2,4,14,34,434,434,3434,8434,68,69,'KMAAAA','DAHAAA','VVVVxx'
+6000,4736,0,0,0,0,0,0,0,1000,6000,0,1,'UWAAAA','EAHAAA','AAAAxx'
+4508,4737,0,0,8,8,8,508,508,4508,4508,16,17,'KRAAAA','FAHAAA','HHHHxx'
+7861,4738,1,1,1,1,61,861,1861,2861,7861,122,123,'JQAAAA','GAHAAA','OOOOxx'
+5953,4739,1,1,3,13,53,953,1953,953,5953,106,107,'ZUAAAA','HAHAAA','VVVVxx'
+5063,4740,1,3,3,3,63,63,1063,63,5063,126,127,'TMAAAA','IAHAAA','AAAAxx'
+4501,4741,1,1,1,1,1,501,501,4501,4501,2,3,'DRAAAA','JAHAAA','HHHHxx'
+7092,4742,0,0,2,12,92,92,1092,2092,7092,184,185,'UMAAAA','KAHAAA','OOOOxx'
+4388,4743,0,0,8,8,88,388,388,4388,4388,176,177,'UMAAAA','LAHAAA','VVVVxx'
+1826,4744,0,2,6,6,26,826,1826,1826,1826,52,53,'GSAAAA','MAHAAA','AAAAxx'
+568,4745,0,0,8,8,68,568,568,568,568,136,137,'WVAAAA','NAHAAA','HHHHxx'
+8184,4746,0,0,4,4,84,184,184,3184,8184,168,169,'UCAAAA','OAHAAA','OOOOxx'
+4268,4747,0,0,8,8,68,268,268,4268,4268,136,137,'EIAAAA','PAHAAA','VVVVxx'
+5798,4748,0,2,8,18,98,798,1798,798,5798,196,197,'APAAAA','QAHAAA','AAAAxx'
+5190,4749,0,2,0,10,90,190,1190,190,5190,180,181,'QRAAAA','RAHAAA','HHHHxx'
+1298,4750,0,2,8,18,98,298,1298,1298,1298,196,197,'YXAAAA','SAHAAA','OOOOxx'
+4035,4751,1,3,5,15,35,35,35,4035,4035,70,71,'FZAAAA','TAHAAA','VVVVxx'
+4504,4752,0,0,4,4,4,504,504,4504,4504,8,9,'GRAAAA','UAHAAA','AAAAxx'
+5992,4753,0,0,2,12,92,992,1992,992,5992,184,185,'MWAAAA','VAHAAA','HHHHxx'
+770,4754,0,2,0,10,70,770,770,770,770,140,141,'QDAAAA','WAHAAA','OOOOxx'
+7502,4755,0,2,2,2,2,502,1502,2502,7502,4,5,'OCAAAA','XAHAAA','VVVVxx'
+824,4756,0,0,4,4,24,824,824,824,824,48,49,'SFAAAA','YAHAAA','AAAAxx'
+7716,4757,0,0,6,16,16,716,1716,2716,7716,32,33,'UKAAAA','ZAHAAA','HHHHxx'
+5749,4758,1,1,9,9,49,749,1749,749,5749,98,99,'DNAAAA','ABHAAA','OOOOxx'
+9814,4759,0,2,4,14,14,814,1814,4814,9814,28,29,'MNAAAA','BBHAAA','VVVVxx'
+350,4760,0,2,0,10,50,350,350,350,350,100,101,'MNAAAA','CBHAAA','AAAAxx'
+1390,4761,0,2,0,10,90,390,1390,1390,1390,180,181,'MBAAAA','DBHAAA','HHHHxx'
+6994,4762,0,2,4,14,94,994,994,1994,6994,188,189,'AJAAAA','EBHAAA','OOOOxx'
+3629,4763,1,1,9,9,29,629,1629,3629,3629,58,59,'PJAAAA','FBHAAA','VVVVxx'
+9937,4764,1,1,7,17,37,937,1937,4937,9937,74,75,'FSAAAA','GBHAAA','AAAAxx'
+5285,4765,1,1,5,5,85,285,1285,285,5285,170,171,'HVAAAA','HBHAAA','HHHHxx'
+3157,4766,1,1,7,17,57,157,1157,3157,3157,114,115,'LRAAAA','IBHAAA','OOOOxx'
+9549,4767,1,1,9,9,49,549,1549,4549,9549,98,99,'HDAAAA','JBHAAA','VVVVxx'
+4118,4768,0,2,8,18,18,118,118,4118,4118,36,37,'KCAAAA','KBHAAA','AAAAxx'
+756,4769,0,0,6,16,56,756,756,756,756,112,113,'CDAAAA','LBHAAA','HHHHxx'
+5964,4770,0,0,4,4,64,964,1964,964,5964,128,129,'KVAAAA','MBHAAA','OOOOxx'
+7701,4771,1,1,1,1,1,701,1701,2701,7701,2,3,'FKAAAA','NBHAAA','VVVVxx'
+1242,4772,0,2,2,2,42,242,1242,1242,1242,84,85,'UVAAAA','OBHAAA','AAAAxx'
+7890,4773,0,2,0,10,90,890,1890,2890,7890,180,181,'MRAAAA','PBHAAA','HHHHxx'
+1991,4774,1,3,1,11,91,991,1991,1991,1991,182,183,'PYAAAA','QBHAAA','OOOOxx'
+110,4775,0,2,0,10,10,110,110,110,110,20,21,'GEAAAA','RBHAAA','VVVVxx'
+9334,4776,0,2,4,14,34,334,1334,4334,9334,68,69,'AVAAAA','SBHAAA','AAAAxx'
+6231,4777,1,3,1,11,31,231,231,1231,6231,62,63,'RFAAAA','TBHAAA','HHHHxx'
+9871,4778,1,3,1,11,71,871,1871,4871,9871,142,143,'RPAAAA','UBHAAA','OOOOxx'
+9471,4779,1,3,1,11,71,471,1471,4471,9471,142,143,'HAAAAA','VBHAAA','VVVVxx'
+2697,4780,1,1,7,17,97,697,697,2697,2697,194,195,'TZAAAA','WBHAAA','AAAAxx'
+4761,4781,1,1,1,1,61,761,761,4761,4761,122,123,'DBAAAA','XBHAAA','HHHHxx'
+8493,4782,1,1,3,13,93,493,493,3493,8493,186,187,'ROAAAA','YBHAAA','OOOOxx'
+1045,4783,1,1,5,5,45,45,1045,1045,1045,90,91,'FOAAAA','ZBHAAA','VVVVxx'
+3403,4784,1,3,3,3,3,403,1403,3403,3403,6,7,'XAAAAA','ACHAAA','AAAAxx'
+9412,4785,0,0,2,12,12,412,1412,4412,9412,24,25,'AYAAAA','BCHAAA','HHHHxx'
+7652,4786,0,0,2,12,52,652,1652,2652,7652,104,105,'IIAAAA','CCHAAA','OOOOxx'
+5866,4787,0,2,6,6,66,866,1866,866,5866,132,133,'QRAAAA','DCHAAA','VVVVxx'
+6942,4788,0,2,2,2,42,942,942,1942,6942,84,85,'AHAAAA','ECHAAA','AAAAxx'
+9353,4789,1,1,3,13,53,353,1353,4353,9353,106,107,'TVAAAA','FCHAAA','HHHHxx'
+2600,4790,0,0,0,0,0,600,600,2600,2600,0,1,'AWAAAA','GCHAAA','OOOOxx'
+6971,4791,1,3,1,11,71,971,971,1971,6971,142,143,'DIAAAA','HCHAAA','VVVVxx'
+5391,4792,1,3,1,11,91,391,1391,391,5391,182,183,'JZAAAA','ICHAAA','AAAAxx'
+7654,4793,0,2,4,14,54,654,1654,2654,7654,108,109,'KIAAAA','JCHAAA','HHHHxx'
+1797,4794,1,1,7,17,97,797,1797,1797,1797,194,195,'DRAAAA','KCHAAA','OOOOxx'
+4530,4795,0,2,0,10,30,530,530,4530,4530,60,61,'GSAAAA','LCHAAA','VVVVxx'
+3130,4796,0,2,0,10,30,130,1130,3130,3130,60,61,'KQAAAA','MCHAAA','AAAAxx'
+9442,4797,0,2,2,2,42,442,1442,4442,9442,84,85,'EZAAAA','NCHAAA','HHHHxx'
+6659,4798,1,3,9,19,59,659,659,1659,6659,118,119,'DWAAAA','OCHAAA','OOOOxx'
+9714,4799,0,2,4,14,14,714,1714,4714,9714,28,29,'QJAAAA','PCHAAA','VVVVxx'
+3660,4800,0,0,0,0,60,660,1660,3660,3660,120,121,'UKAAAA','QCHAAA','AAAAxx'
+1906,4801,0,2,6,6,6,906,1906,1906,1906,12,13,'IVAAAA','RCHAAA','HHHHxx'
+7927,4802,1,3,7,7,27,927,1927,2927,7927,54,55,'XSAAAA','SCHAAA','OOOOxx'
+1767,4803,1,3,7,7,67,767,1767,1767,1767,134,135,'ZPAAAA','TCHAAA','VVVVxx'
+5523,4804,1,3,3,3,23,523,1523,523,5523,46,47,'LEAAAA','UCHAAA','AAAAxx'
+9289,4805,1,1,9,9,89,289,1289,4289,9289,178,179,'HTAAAA','VCHAAA','HHHHxx'
+2717,4806,1,1,7,17,17,717,717,2717,2717,34,35,'NAAAAA','WCHAAA','OOOOxx'
+4099,4807,1,3,9,19,99,99,99,4099,4099,198,199,'RBAAAA','XCHAAA','VVVVxx'
+4387,4808,1,3,7,7,87,387,387,4387,4387,174,175,'TMAAAA','YCHAAA','AAAAxx'
+8864,4809,0,0,4,4,64,864,864,3864,8864,128,129,'YCAAAA','ZCHAAA','HHHHxx'
+1774,4810,0,2,4,14,74,774,1774,1774,1774,148,149,'GQAAAA','ADHAAA','OOOOxx'
+6292,4811,0,0,2,12,92,292,292,1292,6292,184,185,'AIAAAA','BDHAAA','VVVVxx'
+847,4812,1,3,7,7,47,847,847,847,847,94,95,'PGAAAA','CDHAAA','AAAAxx'
+5954,4813,0,2,4,14,54,954,1954,954,5954,108,109,'AVAAAA','DDHAAA','HHHHxx'
+8032,4814,0,0,2,12,32,32,32,3032,8032,64,65,'YWAAAA','EDHAAA','OOOOxx'
+3295,4815,1,3,5,15,95,295,1295,3295,3295,190,191,'TWAAAA','FDHAAA','VVVVxx'
+8984,4816,0,0,4,4,84,984,984,3984,8984,168,169,'OHAAAA','GDHAAA','AAAAxx'
+7809,4817,1,1,9,9,9,809,1809,2809,7809,18,19,'JOAAAA','HDHAAA','HHHHxx'
+1670,4818,0,2,0,10,70,670,1670,1670,1670,140,141,'GMAAAA','IDHAAA','OOOOxx'
+7733,4819,1,1,3,13,33,733,1733,2733,7733,66,67,'LLAAAA','JDHAAA','VVVVxx'
+6187,4820,1,3,7,7,87,187,187,1187,6187,174,175,'ZDAAAA','KDHAAA','AAAAxx'
+9326,4821,0,2,6,6,26,326,1326,4326,9326,52,53,'SUAAAA','LDHAAA','HHHHxx'
+2493,4822,1,1,3,13,93,493,493,2493,2493,186,187,'XRAAAA','MDHAAA','OOOOxx'
+9512,4823,0,0,2,12,12,512,1512,4512,9512,24,25,'WBAAAA','NDHAAA','VVVVxx'
+4342,4824,0,2,2,2,42,342,342,4342,4342,84,85,'ALAAAA','ODHAAA','AAAAxx'
+5350,4825,0,2,0,10,50,350,1350,350,5350,100,101,'UXAAAA','PDHAAA','HHHHxx'
+6009,4826,1,1,9,9,9,9,9,1009,6009,18,19,'DXAAAA','QDHAAA','OOOOxx'
+1208,4827,0,0,8,8,8,208,1208,1208,1208,16,17,'MUAAAA','RDHAAA','VVVVxx'
+7014,4828,0,2,4,14,14,14,1014,2014,7014,28,29,'UJAAAA','SDHAAA','AAAAxx'
+2967,4829,1,3,7,7,67,967,967,2967,2967,134,135,'DKAAAA','TDHAAA','HHHHxx'
+5831,4830,1,3,1,11,31,831,1831,831,5831,62,63,'HQAAAA','UDHAAA','OOOOxx'
+3097,4831,1,1,7,17,97,97,1097,3097,3097,194,195,'DPAAAA','VDHAAA','VVVVxx'
+1528,4832,0,0,8,8,28,528,1528,1528,1528,56,57,'UGAAAA','WDHAAA','AAAAxx'
+6429,4833,1,1,9,9,29,429,429,1429,6429,58,59,'HNAAAA','XDHAAA','HHHHxx'
+7320,4834,0,0,0,0,20,320,1320,2320,7320,40,41,'OVAAAA','YDHAAA','OOOOxx'
+844,4835,0,0,4,4,44,844,844,844,844,88,89,'MGAAAA','ZDHAAA','VVVVxx'
+7054,4836,0,2,4,14,54,54,1054,2054,7054,108,109,'ILAAAA','AEHAAA','AAAAxx'
+1643,4837,1,3,3,3,43,643,1643,1643,1643,86,87,'FLAAAA','BEHAAA','HHHHxx'
+7626,4838,0,2,6,6,26,626,1626,2626,7626,52,53,'IHAAAA','CEHAAA','OOOOxx'
+8728,4839,0,0,8,8,28,728,728,3728,8728,56,57,'SXAAAA','DEHAAA','VVVVxx'
+8277,4840,1,1,7,17,77,277,277,3277,8277,154,155,'JGAAAA','EEHAAA','AAAAxx'
+189,4841,1,1,9,9,89,189,189,189,189,178,179,'HHAAAA','FEHAAA','HHHHxx'
+3717,4842,1,1,7,17,17,717,1717,3717,3717,34,35,'ZMAAAA','GEHAAA','OOOOxx'
+1020,4843,0,0,0,0,20,20,1020,1020,1020,40,41,'GNAAAA','HEHAAA','VVVVxx'
+9234,4844,0,2,4,14,34,234,1234,4234,9234,68,69,'ERAAAA','IEHAAA','AAAAxx'
+9541,4845,1,1,1,1,41,541,1541,4541,9541,82,83,'ZCAAAA','JEHAAA','HHHHxx'
+380,4846,0,0,0,0,80,380,380,380,380,160,161,'QOAAAA','KEHAAA','OOOOxx'
+397,4847,1,1,7,17,97,397,397,397,397,194,195,'HPAAAA','LEHAAA','VVVVxx'
+835,4848,1,3,5,15,35,835,835,835,835,70,71,'DGAAAA','MEHAAA','AAAAxx'
+347,4849,1,3,7,7,47,347,347,347,347,94,95,'JNAAAA','NEHAAA','HHHHxx'
+2490,4850,0,2,0,10,90,490,490,2490,2490,180,181,'URAAAA','OEHAAA','OOOOxx'
+605,4851,1,1,5,5,5,605,605,605,605,10,11,'HXAAAA','PEHAAA','VVVVxx'
+7960,4852,0,0,0,0,60,960,1960,2960,7960,120,121,'EUAAAA','QEHAAA','AAAAxx'
+9681,4853,1,1,1,1,81,681,1681,4681,9681,162,163,'JIAAAA','REHAAA','HHHHxx'
+5753,4854,1,1,3,13,53,753,1753,753,5753,106,107,'HNAAAA','SEHAAA','OOOOxx'
+1676,4855,0,0,6,16,76,676,1676,1676,1676,152,153,'MMAAAA','TEHAAA','VVVVxx'
+5533,4856,1,1,3,13,33,533,1533,533,5533,66,67,'VEAAAA','UEHAAA','AAAAxx'
+8958,4857,0,2,8,18,58,958,958,3958,8958,116,117,'OGAAAA','VEHAAA','HHHHxx'
+664,4858,0,0,4,4,64,664,664,664,664,128,129,'OZAAAA','WEHAAA','OOOOxx'
+3005,4859,1,1,5,5,5,5,1005,3005,3005,10,11,'PLAAAA','XEHAAA','VVVVxx'
+8576,4860,0,0,6,16,76,576,576,3576,8576,152,153,'WRAAAA','YEHAAA','AAAAxx'
+7304,4861,0,0,4,4,4,304,1304,2304,7304,8,9,'YUAAAA','ZEHAAA','HHHHxx'
+3375,4862,1,3,5,15,75,375,1375,3375,3375,150,151,'VZAAAA','AFHAAA','OOOOxx'
+6336,4863,0,0,6,16,36,336,336,1336,6336,72,73,'SJAAAA','BFHAAA','VVVVxx'
+1392,4864,0,0,2,12,92,392,1392,1392,1392,184,185,'OBAAAA','CFHAAA','AAAAxx'
+2925,4865,1,1,5,5,25,925,925,2925,2925,50,51,'NIAAAA','DFHAAA','HHHHxx'
+1217,4866,1,1,7,17,17,217,1217,1217,1217,34,35,'VUAAAA','EFHAAA','OOOOxx'
+3714,4867,0,2,4,14,14,714,1714,3714,3714,28,29,'WMAAAA','FFHAAA','VVVVxx'
+2120,4868,0,0,0,0,20,120,120,2120,2120,40,41,'ODAAAA','GFHAAA','AAAAxx'
+2845,4869,1,1,5,5,45,845,845,2845,2845,90,91,'LFAAAA','HFHAAA','HHHHxx'
+3865,4870,1,1,5,5,65,865,1865,3865,3865,130,131,'RSAAAA','IFHAAA','OOOOxx'
+124,4871,0,0,4,4,24,124,124,124,124,48,49,'UEAAAA','JFHAAA','VVVVxx'
+865,4872,1,1,5,5,65,865,865,865,865,130,131,'HHAAAA','KFHAAA','AAAAxx'
+9361,4873,1,1,1,1,61,361,1361,4361,9361,122,123,'BWAAAA','LFHAAA','HHHHxx'
+6338,4874,0,2,8,18,38,338,338,1338,6338,76,77,'UJAAAA','MFHAAA','OOOOxx'
+7330,4875,0,2,0,10,30,330,1330,2330,7330,60,61,'YVAAAA','NFHAAA','VVVVxx'
+513,4876,1,1,3,13,13,513,513,513,513,26,27,'TTAAAA','OFHAAA','AAAAxx'
+5001,4877,1,1,1,1,1,1,1001,1,5001,2,3,'JKAAAA','PFHAAA','HHHHxx'
+549,4878,1,1,9,9,49,549,549,549,549,98,99,'DVAAAA','QFHAAA','OOOOxx'
+1808,4879,0,0,8,8,8,808,1808,1808,1808,16,17,'ORAAAA','RFHAAA','VVVVxx'
+7168,4880,0,0,8,8,68,168,1168,2168,7168,136,137,'SPAAAA','SFHAAA','AAAAxx'
+9878,4881,0,2,8,18,78,878,1878,4878,9878,156,157,'YPAAAA','TFHAAA','HHHHxx'
+233,4882,1,1,3,13,33,233,233,233,233,66,67,'ZIAAAA','UFHAAA','OOOOxx'
+4262,4883,0,2,2,2,62,262,262,4262,4262,124,125,'YHAAAA','VFHAAA','VVVVxx'
+7998,4884,0,2,8,18,98,998,1998,2998,7998,196,197,'QVAAAA','WFHAAA','AAAAxx'
+2419,4885,1,3,9,19,19,419,419,2419,2419,38,39,'BPAAAA','XFHAAA','HHHHxx'
+9960,4886,0,0,0,0,60,960,1960,4960,9960,120,121,'CTAAAA','YFHAAA','OOOOxx'
+3523,4887,1,3,3,3,23,523,1523,3523,3523,46,47,'NFAAAA','ZFHAAA','VVVVxx'
+5440,4888,0,0,0,0,40,440,1440,440,5440,80,81,'GBAAAA','AGHAAA','AAAAxx'
+3030,4889,0,2,0,10,30,30,1030,3030,3030,60,61,'OMAAAA','BGHAAA','HHHHxx'
+2745,4890,1,1,5,5,45,745,745,2745,2745,90,91,'PBAAAA','CGHAAA','OOOOxx'
+7175,4891,1,3,5,15,75,175,1175,2175,7175,150,151,'ZPAAAA','DGHAAA','VVVVxx'
+640,4892,0,0,0,0,40,640,640,640,640,80,81,'QYAAAA','EGHAAA','AAAAxx'
+1798,4893,0,2,8,18,98,798,1798,1798,1798,196,197,'ERAAAA','FGHAAA','HHHHxx'
+7499,4894,1,3,9,19,99,499,1499,2499,7499,198,199,'LCAAAA','GGHAAA','OOOOxx'
+1924,4895,0,0,4,4,24,924,1924,1924,1924,48,49,'AWAAAA','HGHAAA','VVVVxx'
+1327,4896,1,3,7,7,27,327,1327,1327,1327,54,55,'BZAAAA','IGHAAA','AAAAxx'
+73,4897,1,1,3,13,73,73,73,73,73,146,147,'VCAAAA','JGHAAA','HHHHxx'
+9558,4898,0,2,8,18,58,558,1558,4558,9558,116,117,'QDAAAA','KGHAAA','OOOOxx'
+818,4899,0,2,8,18,18,818,818,818,818,36,37,'MFAAAA','LGHAAA','VVVVxx'
+9916,4900,0,0,6,16,16,916,1916,4916,9916,32,33,'KRAAAA','MGHAAA','AAAAxx'
+2978,4901,0,2,8,18,78,978,978,2978,2978,156,157,'OKAAAA','NGHAAA','HHHHxx'
+8469,4902,1,1,9,9,69,469,469,3469,8469,138,139,'TNAAAA','OGHAAA','OOOOxx'
+9845,4903,1,1,5,5,45,845,1845,4845,9845,90,91,'ROAAAA','PGHAAA','VVVVxx'
+2326,4904,0,2,6,6,26,326,326,2326,2326,52,53,'MLAAAA','QGHAAA','AAAAxx'
+4032,4905,0,0,2,12,32,32,32,4032,4032,64,65,'CZAAAA','RGHAAA','HHHHxx'
+5604,4906,0,0,4,4,4,604,1604,604,5604,8,9,'OHAAAA','SGHAAA','OOOOxx'
+9610,4907,0,2,0,10,10,610,1610,4610,9610,20,21,'QFAAAA','TGHAAA','VVVVxx'
+5101,4908,1,1,1,1,1,101,1101,101,5101,2,3,'FOAAAA','UGHAAA','AAAAxx'
+7246,4909,0,2,6,6,46,246,1246,2246,7246,92,93,'SSAAAA','VGHAAA','HHHHxx'
+1292,4910,0,0,2,12,92,292,1292,1292,1292,184,185,'SXAAAA','WGHAAA','OOOOxx'
+6235,4911,1,3,5,15,35,235,235,1235,6235,70,71,'VFAAAA','XGHAAA','VVVVxx'
+1733,4912,1,1,3,13,33,733,1733,1733,1733,66,67,'ROAAAA','YGHAAA','AAAAxx'
+4647,4913,1,3,7,7,47,647,647,4647,4647,94,95,'TWAAAA','ZGHAAA','HHHHxx'
+258,4914,0,2,8,18,58,258,258,258,258,116,117,'YJAAAA','AHHAAA','OOOOxx'
+8438,4915,0,2,8,18,38,438,438,3438,8438,76,77,'OMAAAA','BHHAAA','VVVVxx'
+7869,4916,1,1,9,9,69,869,1869,2869,7869,138,139,'RQAAAA','CHHAAA','AAAAxx'
+9691,4917,1,3,1,11,91,691,1691,4691,9691,182,183,'TIAAAA','DHHAAA','HHHHxx'
+5422,4918,0,2,2,2,22,422,1422,422,5422,44,45,'OAAAAA','EHHAAA','OOOOxx'
+9630,4919,0,2,0,10,30,630,1630,4630,9630,60,61,'KGAAAA','FHHAAA','VVVVxx'
+4439,4920,1,3,9,19,39,439,439,4439,4439,78,79,'TOAAAA','GHHAAA','AAAAxx'
+3140,4921,0,0,0,0,40,140,1140,3140,3140,80,81,'UQAAAA','HHHAAA','HHHHxx'
+9111,4922,1,3,1,11,11,111,1111,4111,9111,22,23,'LMAAAA','IHHAAA','OOOOxx'
+4606,4923,0,2,6,6,6,606,606,4606,4606,12,13,'EVAAAA','JHHAAA','VVVVxx'
+8620,4924,0,0,0,0,20,620,620,3620,8620,40,41,'OTAAAA','KHHAAA','AAAAxx'
+7849,4925,1,1,9,9,49,849,1849,2849,7849,98,99,'XPAAAA','LHHAAA','HHHHxx'
+346,4926,0,2,6,6,46,346,346,346,346,92,93,'INAAAA','MHHAAA','OOOOxx'
+9528,4927,0,0,8,8,28,528,1528,4528,9528,56,57,'MCAAAA','NHHAAA','VVVVxx'
+1811,4928,1,3,1,11,11,811,1811,1811,1811,22,23,'RRAAAA','OHHAAA','AAAAxx'
+6068,4929,0,0,8,8,68,68,68,1068,6068,136,137,'KZAAAA','PHHAAA','HHHHxx'
+6260,4930,0,0,0,0,60,260,260,1260,6260,120,121,'UGAAAA','QHHAAA','OOOOxx'
+5909,4931,1,1,9,9,9,909,1909,909,5909,18,19,'HTAAAA','RHHAAA','VVVVxx'
+4518,4932,0,2,8,18,18,518,518,4518,4518,36,37,'URAAAA','SHHAAA','AAAAxx'
+7530,4933,0,2,0,10,30,530,1530,2530,7530,60,61,'QDAAAA','THHAAA','HHHHxx'
+3900,4934,0,0,0,0,0,900,1900,3900,3900,0,1,'AUAAAA','UHHAAA','OOOOxx'
+3969,4935,1,1,9,9,69,969,1969,3969,3969,138,139,'RWAAAA','VHHAAA','VVVVxx'
+8690,4936,0,2,0,10,90,690,690,3690,8690,180,181,'GWAAAA','WHHAAA','AAAAxx'
+5532,4937,0,0,2,12,32,532,1532,532,5532,64,65,'UEAAAA','XHHAAA','HHHHxx'
+5989,4938,1,1,9,9,89,989,1989,989,5989,178,179,'JWAAAA','YHHAAA','OOOOxx'
+1870,4939,0,2,0,10,70,870,1870,1870,1870,140,141,'YTAAAA','ZHHAAA','VVVVxx'
+1113,4940,1,1,3,13,13,113,1113,1113,1113,26,27,'VQAAAA','AIHAAA','AAAAxx'
+5155,4941,1,3,5,15,55,155,1155,155,5155,110,111,'HQAAAA','BIHAAA','HHHHxx'
+7460,4942,0,0,0,0,60,460,1460,2460,7460,120,121,'YAAAAA','CIHAAA','OOOOxx'
+6217,4943,1,1,7,17,17,217,217,1217,6217,34,35,'DFAAAA','DIHAAA','VVVVxx'
+8333,4944,1,1,3,13,33,333,333,3333,8333,66,67,'NIAAAA','EIHAAA','AAAAxx'
+6341,4945,1,1,1,1,41,341,341,1341,6341,82,83,'XJAAAA','FIHAAA','HHHHxx'
+6230,4946,0,2,0,10,30,230,230,1230,6230,60,61,'QFAAAA','GIHAAA','OOOOxx'
+6902,4947,0,2,2,2,2,902,902,1902,6902,4,5,'MFAAAA','HIHAAA','VVVVxx'
+670,4948,0,2,0,10,70,670,670,670,670,140,141,'UZAAAA','IIHAAA','AAAAxx'
+805,4949,1,1,5,5,5,805,805,805,805,10,11,'ZEAAAA','JIHAAA','HHHHxx'
+1340,4950,0,0,0,0,40,340,1340,1340,1340,80,81,'OZAAAA','KIHAAA','OOOOxx'
+8649,4951,1,1,9,9,49,649,649,3649,8649,98,99,'RUAAAA','LIHAAA','VVVVxx'
+3887,4952,1,3,7,7,87,887,1887,3887,3887,174,175,'NTAAAA','MIHAAA','AAAAxx'
+5400,4953,0,0,0,0,0,400,1400,400,5400,0,1,'SZAAAA','NIHAAA','HHHHxx'
+4354,4954,0,2,4,14,54,354,354,4354,4354,108,109,'MLAAAA','OIHAAA','OOOOxx'
+950,4955,0,2,0,10,50,950,950,950,950,100,101,'OKAAAA','PIHAAA','VVVVxx'
+1544,4956,0,0,4,4,44,544,1544,1544,1544,88,89,'KHAAAA','QIHAAA','AAAAxx'
+3898,4957,0,2,8,18,98,898,1898,3898,3898,196,197,'YTAAAA','RIHAAA','HHHHxx'
+8038,4958,0,2,8,18,38,38,38,3038,8038,76,77,'EXAAAA','SIHAAA','OOOOxx'
+1095,4959,1,3,5,15,95,95,1095,1095,1095,190,191,'DQAAAA','TIHAAA','VVVVxx'
+1748,4960,0,0,8,8,48,748,1748,1748,1748,96,97,'GPAAAA','UIHAAA','AAAAxx'
+9154,4961,0,2,4,14,54,154,1154,4154,9154,108,109,'COAAAA','VIHAAA','HHHHxx'
+2182,4962,0,2,2,2,82,182,182,2182,2182,164,165,'YFAAAA','WIHAAA','OOOOxx'
+6797,4963,1,1,7,17,97,797,797,1797,6797,194,195,'LBAAAA','XIHAAA','VVVVxx'
+9149,4964,1,1,9,9,49,149,1149,4149,9149,98,99,'XNAAAA','YIHAAA','AAAAxx'
+7351,4965,1,3,1,11,51,351,1351,2351,7351,102,103,'TWAAAA','ZIHAAA','HHHHxx'
+2820,4966,0,0,0,0,20,820,820,2820,2820,40,41,'MEAAAA','AJHAAA','OOOOxx'
+9696,4967,0,0,6,16,96,696,1696,4696,9696,192,193,'YIAAAA','BJHAAA','VVVVxx'
+253,4968,1,1,3,13,53,253,253,253,253,106,107,'TJAAAA','CJHAAA','AAAAxx'
+3600,4969,0,0,0,0,0,600,1600,3600,3600,0,1,'MIAAAA','DJHAAA','HHHHxx'
+3892,4970,0,0,2,12,92,892,1892,3892,3892,184,185,'STAAAA','EJHAAA','OOOOxx'
+231,4971,1,3,1,11,31,231,231,231,231,62,63,'XIAAAA','FJHAAA','VVVVxx'
+8331,4972,1,3,1,11,31,331,331,3331,8331,62,63,'LIAAAA','GJHAAA','AAAAxx'
+403,4973,1,3,3,3,3,403,403,403,403,6,7,'NPAAAA','HJHAAA','HHHHxx'
+8642,4974,0,2,2,2,42,642,642,3642,8642,84,85,'KUAAAA','IJHAAA','OOOOxx'
+3118,4975,0,2,8,18,18,118,1118,3118,3118,36,37,'YPAAAA','JJHAAA','VVVVxx'
+3835,4976,1,3,5,15,35,835,1835,3835,3835,70,71,'NRAAAA','KJHAAA','AAAAxx'
+1117,4977,1,1,7,17,17,117,1117,1117,1117,34,35,'ZQAAAA','LJHAAA','HHHHxx'
+7024,4978,0,0,4,4,24,24,1024,2024,7024,48,49,'EKAAAA','MJHAAA','OOOOxx'
+2636,4979,0,0,6,16,36,636,636,2636,2636,72,73,'KXAAAA','NJHAAA','VVVVxx'
+3778,4980,0,2,8,18,78,778,1778,3778,3778,156,157,'IPAAAA','OJHAAA','AAAAxx'
+2003,4981,1,3,3,3,3,3,3,2003,2003,6,7,'BZAAAA','PJHAAA','HHHHxx'
+5717,4982,1,1,7,17,17,717,1717,717,5717,34,35,'XLAAAA','QJHAAA','OOOOxx'
+4869,4983,1,1,9,9,69,869,869,4869,4869,138,139,'HFAAAA','RJHAAA','VVVVxx'
+8921,4984,1,1,1,1,21,921,921,3921,8921,42,43,'DFAAAA','SJHAAA','AAAAxx'
+888,4985,0,0,8,8,88,888,888,888,888,176,177,'EIAAAA','TJHAAA','HHHHxx'
+7599,4986,1,3,9,19,99,599,1599,2599,7599,198,199,'HGAAAA','UJHAAA','OOOOxx'
+8621,4987,1,1,1,1,21,621,621,3621,8621,42,43,'PTAAAA','VJHAAA','VVVVxx'
+811,4988,1,3,1,11,11,811,811,811,811,22,23,'FFAAAA','WJHAAA','AAAAxx'
+9147,4989,1,3,7,7,47,147,1147,4147,9147,94,95,'VNAAAA','XJHAAA','HHHHxx'
+1413,4990,1,1,3,13,13,413,1413,1413,1413,26,27,'JCAAAA','YJHAAA','OOOOxx'
+5232,4991,0,0,2,12,32,232,1232,232,5232,64,65,'GTAAAA','ZJHAAA','VVVVxx'
+5912,4992,0,0,2,12,12,912,1912,912,5912,24,25,'KTAAAA','AKHAAA','AAAAxx'
+3418,4993,0,2,8,18,18,418,1418,3418,3418,36,37,'MBAAAA','BKHAAA','HHHHxx'
+3912,4994,0,0,2,12,12,912,1912,3912,3912,24,25,'MUAAAA','CKHAAA','OOOOxx'
+9576,4995,0,0,6,16,76,576,1576,4576,9576,152,153,'IEAAAA','DKHAAA','VVVVxx'
+4225,4996,1,1,5,5,25,225,225,4225,4225,50,51,'NGAAAA','EKHAAA','AAAAxx'
+8222,4997,0,2,2,2,22,222,222,3222,8222,44,45,'GEAAAA','FKHAAA','HHHHxx'
+7013,4998,1,1,3,13,13,13,1013,2013,7013,26,27,'TJAAAA','GKHAAA','OOOOxx'
+7037,4999,1,1,7,17,37,37,1037,2037,7037,74,75,'RKAAAA','HKHAAA','VVVVxx'
+1205,5000,1,1,5,5,5,205,1205,1205,1205,10,11,'JUAAAA','IKHAAA','AAAAxx'
+8114,5001,0,2,4,14,14,114,114,3114,8114,28,29,'CAAAAA','JKHAAA','HHHHxx'
+6585,5002,1,1,5,5,85,585,585,1585,6585,170,171,'HTAAAA','KKHAAA','OOOOxx'
+155,5003,1,3,5,15,55,155,155,155,155,110,111,'ZFAAAA','LKHAAA','VVVVxx'
+2841,5004,1,1,1,1,41,841,841,2841,2841,82,83,'HFAAAA','MKHAAA','AAAAxx'
+1996,5005,0,0,6,16,96,996,1996,1996,1996,192,193,'UYAAAA','NKHAAA','HHHHxx'
+4948,5006,0,0,8,8,48,948,948,4948,4948,96,97,'IIAAAA','OKHAAA','OOOOxx'
+3304,5007,0,0,4,4,4,304,1304,3304,3304,8,9,'CXAAAA','PKHAAA','VVVVxx'
+5684,5008,0,0,4,4,84,684,1684,684,5684,168,169,'QKAAAA','QKHAAA','AAAAxx'
+6962,5009,0,2,2,2,62,962,962,1962,6962,124,125,'UHAAAA','RKHAAA','HHHHxx'
+8691,5010,1,3,1,11,91,691,691,3691,8691,182,183,'HWAAAA','SKHAAA','OOOOxx'
+8501,5011,1,1,1,1,1,501,501,3501,8501,2,3,'ZOAAAA','TKHAAA','VVVVxx'
+4783,5012,1,3,3,3,83,783,783,4783,4783,166,167,'ZBAAAA','UKHAAA','AAAAxx'
+3762,5013,0,2,2,2,62,762,1762,3762,3762,124,125,'SOAAAA','VKHAAA','HHHHxx'
+4534,5014,0,2,4,14,34,534,534,4534,4534,68,69,'KSAAAA','WKHAAA','OOOOxx'
+4999,5015,1,3,9,19,99,999,999,4999,4999,198,199,'HKAAAA','XKHAAA','VVVVxx'
+4618,5016,0,2,8,18,18,618,618,4618,4618,36,37,'QVAAAA','YKHAAA','AAAAxx'
+4220,5017,0,0,0,0,20,220,220,4220,4220,40,41,'IGAAAA','ZKHAAA','HHHHxx'
+3384,5018,0,0,4,4,84,384,1384,3384,3384,168,169,'EAAAAA','ALHAAA','OOOOxx'
+3036,5019,0,0,6,16,36,36,1036,3036,3036,72,73,'UMAAAA','BLHAAA','VVVVxx'
+545,5020,1,1,5,5,45,545,545,545,545,90,91,'ZUAAAA','CLHAAA','AAAAxx'
+9946,5021,0,2,6,6,46,946,1946,4946,9946,92,93,'OSAAAA','DLHAAA','HHHHxx'
+1985,5022,1,1,5,5,85,985,1985,1985,1985,170,171,'JYAAAA','ELHAAA','OOOOxx'
+2310,5023,0,2,0,10,10,310,310,2310,2310,20,21,'WKAAAA','FLHAAA','VVVVxx'
+6563,5024,1,3,3,3,63,563,563,1563,6563,126,127,'LSAAAA','GLHAAA','AAAAxx'
+4886,5025,0,2,6,6,86,886,886,4886,4886,172,173,'YFAAAA','HLHAAA','HHHHxx'
+9359,5026,1,3,9,19,59,359,1359,4359,9359,118,119,'ZVAAAA','ILHAAA','OOOOxx'
+400,5027,0,0,0,0,0,400,400,400,400,0,1,'KPAAAA','JLHAAA','VVVVxx'
+9742,5028,0,2,2,2,42,742,1742,4742,9742,84,85,'SKAAAA','KLHAAA','AAAAxx'
+6736,5029,0,0,6,16,36,736,736,1736,6736,72,73,'CZAAAA','LLHAAA','HHHHxx'
+8166,5030,0,2,6,6,66,166,166,3166,8166,132,133,'CCAAAA','MLHAAA','OOOOxx'
+861,5031,1,1,1,1,61,861,861,861,861,122,123,'DHAAAA','NLHAAA','VVVVxx'
+7492,5032,0,0,2,12,92,492,1492,2492,7492,184,185,'ECAAAA','OLHAAA','AAAAxx'
+1155,5033,1,3,5,15,55,155,1155,1155,1155,110,111,'LSAAAA','PLHAAA','HHHHxx'
+9769,5034,1,1,9,9,69,769,1769,4769,9769,138,139,'TLAAAA','QLHAAA','OOOOxx'
+6843,5035,1,3,3,3,43,843,843,1843,6843,86,87,'FDAAAA','RLHAAA','VVVVxx'
+5625,5036,1,1,5,5,25,625,1625,625,5625,50,51,'JIAAAA','SLHAAA','AAAAxx'
+1910,5037,0,2,0,10,10,910,1910,1910,1910,20,21,'MVAAAA','TLHAAA','HHHHxx'
+9796,5038,0,0,6,16,96,796,1796,4796,9796,192,193,'UMAAAA','ULHAAA','OOOOxx'
+6950,5039,0,2,0,10,50,950,950,1950,6950,100,101,'IHAAAA','VLHAAA','VVVVxx'
+3084,5040,0,0,4,4,84,84,1084,3084,3084,168,169,'QOAAAA','WLHAAA','AAAAxx'
+2959,5041,1,3,9,19,59,959,959,2959,2959,118,119,'VJAAAA','XLHAAA','HHHHxx'
+2093,5042,1,1,3,13,93,93,93,2093,2093,186,187,'NCAAAA','YLHAAA','OOOOxx'
+2738,5043,0,2,8,18,38,738,738,2738,2738,76,77,'IBAAAA','ZLHAAA','VVVVxx'
+6406,5044,0,2,6,6,6,406,406,1406,6406,12,13,'KMAAAA','AMHAAA','AAAAxx'
+9082,5045,0,2,2,2,82,82,1082,4082,9082,164,165,'ILAAAA','BMHAAA','HHHHxx'
+8568,5046,0,0,8,8,68,568,568,3568,8568,136,137,'ORAAAA','CMHAAA','OOOOxx'
+3566,5047,0,2,6,6,66,566,1566,3566,3566,132,133,'EHAAAA','DMHAAA','VVVVxx'
+3016,5048,0,0,6,16,16,16,1016,3016,3016,32,33,'AMAAAA','EMHAAA','AAAAxx'
+1207,5049,1,3,7,7,7,207,1207,1207,1207,14,15,'LUAAAA','FMHAAA','HHHHxx'
+4045,5050,1,1,5,5,45,45,45,4045,4045,90,91,'PZAAAA','GMHAAA','OOOOxx'
+4173,5051,1,1,3,13,73,173,173,4173,4173,146,147,'NEAAAA','HMHAAA','VVVVxx'
+3939,5052,1,3,9,19,39,939,1939,3939,3939,78,79,'NVAAAA','IMHAAA','AAAAxx'
+9683,5053,1,3,3,3,83,683,1683,4683,9683,166,167,'LIAAAA','JMHAAA','HHHHxx'
+1684,5054,0,0,4,4,84,684,1684,1684,1684,168,169,'UMAAAA','KMHAAA','OOOOxx'
+9271,5055,1,3,1,11,71,271,1271,4271,9271,142,143,'PSAAAA','LMHAAA','VVVVxx'
+9317,5056,1,1,7,17,17,317,1317,4317,9317,34,35,'JUAAAA','MMHAAA','AAAAxx'
+5793,5057,1,1,3,13,93,793,1793,793,5793,186,187,'VOAAAA','NMHAAA','HHHHxx'
+352,5058,0,0,2,12,52,352,352,352,352,104,105,'ONAAAA','OMHAAA','OOOOxx'
+7328,5059,0,0,8,8,28,328,1328,2328,7328,56,57,'WVAAAA','PMHAAA','VVVVxx'
+4582,5060,0,2,2,2,82,582,582,4582,4582,164,165,'GUAAAA','QMHAAA','AAAAxx'
+7413,5061,1,1,3,13,13,413,1413,2413,7413,26,27,'DZAAAA','RMHAAA','HHHHxx'
+6772,5062,0,0,2,12,72,772,772,1772,6772,144,145,'MAAAAA','SMHAAA','OOOOxx'
+4973,5063,1,1,3,13,73,973,973,4973,4973,146,147,'HJAAAA','TMHAAA','VVVVxx'
+7480,5064,0,0,0,0,80,480,1480,2480,7480,160,161,'SBAAAA','UMHAAA','AAAAxx'
+5555,5065,1,3,5,15,55,555,1555,555,5555,110,111,'RFAAAA','VMHAAA','HHHHxx'
+4227,5066,1,3,7,7,27,227,227,4227,4227,54,55,'PGAAAA','WMHAAA','OOOOxx'
+4153,5067,1,1,3,13,53,153,153,4153,4153,106,107,'TDAAAA','XMHAAA','VVVVxx'
+4601,5068,1,1,1,1,1,601,601,4601,4601,2,3,'ZUAAAA','YMHAAA','AAAAxx'
+3782,5069,0,2,2,2,82,782,1782,3782,3782,164,165,'MPAAAA','ZMHAAA','HHHHxx'
+3872,5070,0,0,2,12,72,872,1872,3872,3872,144,145,'YSAAAA','ANHAAA','OOOOxx'
+893,5071,1,1,3,13,93,893,893,893,893,186,187,'JIAAAA','BNHAAA','VVVVxx'
+2430,5072,0,2,0,10,30,430,430,2430,2430,60,61,'MPAAAA','CNHAAA','AAAAxx'
+2591,5073,1,3,1,11,91,591,591,2591,2591,182,183,'RVAAAA','DNHAAA','HHHHxx'
+264,5074,0,0,4,4,64,264,264,264,264,128,129,'EKAAAA','ENHAAA','OOOOxx'
+6238,5075,0,2,8,18,38,238,238,1238,6238,76,77,'YFAAAA','FNHAAA','VVVVxx'
+633,5076,1,1,3,13,33,633,633,633,633,66,67,'JYAAAA','GNHAAA','AAAAxx'
+1029,5077,1,1,9,9,29,29,1029,1029,1029,58,59,'PNAAAA','HNHAAA','HHHHxx'
+5934,5078,0,2,4,14,34,934,1934,934,5934,68,69,'GUAAAA','INHAAA','OOOOxx'
+8694,5079,0,2,4,14,94,694,694,3694,8694,188,189,'KWAAAA','JNHAAA','VVVVxx'
+7401,5080,1,1,1,1,1,401,1401,2401,7401,2,3,'RYAAAA','KNHAAA','AAAAxx'
+1165,5081,1,1,5,5,65,165,1165,1165,1165,130,131,'VSAAAA','LNHAAA','HHHHxx'
+9438,5082,0,2,8,18,38,438,1438,4438,9438,76,77,'AZAAAA','MNHAAA','OOOOxx'
+4790,5083,0,2,0,10,90,790,790,4790,4790,180,181,'GCAAAA','NNHAAA','VVVVxx'
+4531,5084,1,3,1,11,31,531,531,4531,4531,62,63,'HSAAAA','ONHAAA','AAAAxx'
+6099,5085,1,3,9,19,99,99,99,1099,6099,198,199,'PAAAAA','PNHAAA','HHHHxx'
+8236,5086,0,0,6,16,36,236,236,3236,8236,72,73,'UEAAAA','QNHAAA','OOOOxx'
+8551,5087,1,3,1,11,51,551,551,3551,8551,102,103,'XQAAAA','RNHAAA','VVVVxx'
+3128,5088,0,0,8,8,28,128,1128,3128,3128,56,57,'IQAAAA','SNHAAA','AAAAxx'
+3504,5089,0,0,4,4,4,504,1504,3504,3504,8,9,'UEAAAA','TNHAAA','HHHHxx'
+9071,5090,1,3,1,11,71,71,1071,4071,9071,142,143,'XKAAAA','UNHAAA','OOOOxx'
+5930,5091,0,2,0,10,30,930,1930,930,5930,60,61,'CUAAAA','VNHAAA','VVVVxx'
+6825,5092,1,1,5,5,25,825,825,1825,6825,50,51,'NCAAAA','WNHAAA','AAAAxx'
+2218,5093,0,2,8,18,18,218,218,2218,2218,36,37,'IHAAAA','XNHAAA','HHHHxx'
+3604,5094,0,0,4,4,4,604,1604,3604,3604,8,9,'QIAAAA','YNHAAA','OOOOxx'
+5761,5095,1,1,1,1,61,761,1761,761,5761,122,123,'PNAAAA','ZNHAAA','VVVVxx'
+5414,5096,0,2,4,14,14,414,1414,414,5414,28,29,'GAAAAA','AOHAAA','AAAAxx'
+5892,5097,0,0,2,12,92,892,1892,892,5892,184,185,'QSAAAA','BOHAAA','HHHHxx'
+4080,5098,0,0,0,0,80,80,80,4080,4080,160,161,'YAAAAA','COHAAA','OOOOxx'
+8018,5099,0,2,8,18,18,18,18,3018,8018,36,37,'KWAAAA','DOHAAA','VVVVxx'
+1757,5100,1,1,7,17,57,757,1757,1757,1757,114,115,'PPAAAA','EOHAAA','AAAAxx'
+5854,5101,0,2,4,14,54,854,1854,854,5854,108,109,'ERAAAA','FOHAAA','HHHHxx'
+1335,5102,1,3,5,15,35,335,1335,1335,1335,70,71,'JZAAAA','GOHAAA','OOOOxx'
+3811,5103,1,3,1,11,11,811,1811,3811,3811,22,23,'PQAAAA','HOHAAA','VVVVxx'
+9917,5104,1,1,7,17,17,917,1917,4917,9917,34,35,'LRAAAA','IOHAAA','AAAAxx'
+5947,5105,1,3,7,7,47,947,1947,947,5947,94,95,'TUAAAA','JOHAAA','HHHHxx'
+7263,5106,1,3,3,3,63,263,1263,2263,7263,126,127,'JTAAAA','KOHAAA','OOOOxx'
+1730,5107,0,2,0,10,30,730,1730,1730,1730,60,61,'OOAAAA','LOHAAA','VVVVxx'
+5747,5108,1,3,7,7,47,747,1747,747,5747,94,95,'BNAAAA','MOHAAA','AAAAxx'
+3876,5109,0,0,6,16,76,876,1876,3876,3876,152,153,'CTAAAA','NOHAAA','HHHHxx'
+2762,5110,0,2,2,2,62,762,762,2762,2762,124,125,'GCAAAA','OOHAAA','OOOOxx'
+7613,5111,1,1,3,13,13,613,1613,2613,7613,26,27,'VGAAAA','POHAAA','VVVVxx'
+152,5112,0,0,2,12,52,152,152,152,152,104,105,'WFAAAA','QOHAAA','AAAAxx'
+3941,5113,1,1,1,1,41,941,1941,3941,3941,82,83,'PVAAAA','ROHAAA','HHHHxx'
+5614,5114,0,2,4,14,14,614,1614,614,5614,28,29,'YHAAAA','SOHAAA','OOOOxx'
+9279,5115,1,3,9,19,79,279,1279,4279,9279,158,159,'XSAAAA','TOHAAA','VVVVxx'
+3048,5116,0,0,8,8,48,48,1048,3048,3048,96,97,'GNAAAA','UOHAAA','AAAAxx'
+6152,5117,0,0,2,12,52,152,152,1152,6152,104,105,'QCAAAA','VOHAAA','HHHHxx'
+5481,5118,1,1,1,1,81,481,1481,481,5481,162,163,'VCAAAA','WOHAAA','OOOOxx'
+4675,5119,1,3,5,15,75,675,675,4675,4675,150,151,'VXAAAA','XOHAAA','VVVVxx'
+3334,5120,0,2,4,14,34,334,1334,3334,3334,68,69,'GYAAAA','YOHAAA','AAAAxx'
+4691,5121,1,3,1,11,91,691,691,4691,4691,182,183,'LYAAAA','ZOHAAA','HHHHxx'
+803,5122,1,3,3,3,3,803,803,803,803,6,7,'XEAAAA','APHAAA','OOOOxx'
+5409,5123,1,1,9,9,9,409,1409,409,5409,18,19,'BAAAAA','BPHAAA','VVVVxx'
+1054,5124,0,2,4,14,54,54,1054,1054,1054,108,109,'OOAAAA','CPHAAA','AAAAxx'
+103,5125,1,3,3,3,3,103,103,103,103,6,7,'ZDAAAA','DPHAAA','HHHHxx'
+8565,5126,1,1,5,5,65,565,565,3565,8565,130,131,'LRAAAA','EPHAAA','OOOOxx'
+4666,5127,0,2,6,6,66,666,666,4666,4666,132,133,'MXAAAA','FPHAAA','VVVVxx'
+6634,5128,0,2,4,14,34,634,634,1634,6634,68,69,'EVAAAA','GPHAAA','AAAAxx'
+5538,5129,0,2,8,18,38,538,1538,538,5538,76,77,'AFAAAA','HPHAAA','HHHHxx'
+3789,5130,1,1,9,9,89,789,1789,3789,3789,178,179,'TPAAAA','IPHAAA','OOOOxx'
+4641,5131,1,1,1,1,41,641,641,4641,4641,82,83,'NWAAAA','JPHAAA','VVVVxx'
+2458,5132,0,2,8,18,58,458,458,2458,2458,116,117,'OQAAAA','KPHAAA','AAAAxx'
+5667,5133,1,3,7,7,67,667,1667,667,5667,134,135,'ZJAAAA','LPHAAA','HHHHxx'
+6524,5134,0,0,4,4,24,524,524,1524,6524,48,49,'YQAAAA','MPHAAA','OOOOxx'
+9179,5135,1,3,9,19,79,179,1179,4179,9179,158,159,'BPAAAA','NPHAAA','VVVVxx'
+6358,5136,0,2,8,18,58,358,358,1358,6358,116,117,'OKAAAA','OPHAAA','AAAAxx'
+6668,5137,0,0,8,8,68,668,668,1668,6668,136,137,'MWAAAA','PPHAAA','HHHHxx'
+6414,5138,0,2,4,14,14,414,414,1414,6414,28,29,'SMAAAA','QPHAAA','OOOOxx'
+2813,5139,1,1,3,13,13,813,813,2813,2813,26,27,'FEAAAA','RPHAAA','VVVVxx'
+8927,5140,1,3,7,7,27,927,927,3927,8927,54,55,'JFAAAA','SPHAAA','AAAAxx'
+8695,5141,1,3,5,15,95,695,695,3695,8695,190,191,'LWAAAA','TPHAAA','HHHHxx'
+363,5142,1,3,3,3,63,363,363,363,363,126,127,'ZNAAAA','UPHAAA','OOOOxx'
+9966,5143,0,2,6,6,66,966,1966,4966,9966,132,133,'ITAAAA','VPHAAA','VVVVxx'
+1323,5144,1,3,3,3,23,323,1323,1323,1323,46,47,'XYAAAA','WPHAAA','AAAAxx'
+8211,5145,1,3,1,11,11,211,211,3211,8211,22,23,'VDAAAA','XPHAAA','HHHHxx'
+4375,5146,1,3,5,15,75,375,375,4375,4375,150,151,'HMAAAA','YPHAAA','OOOOxx'
+3257,5147,1,1,7,17,57,257,1257,3257,3257,114,115,'HVAAAA','ZPHAAA','VVVVxx'
+6239,5148,1,3,9,19,39,239,239,1239,6239,78,79,'ZFAAAA','AQHAAA','AAAAxx'
+3602,5149,0,2,2,2,2,602,1602,3602,3602,4,5,'OIAAAA','BQHAAA','HHHHxx'
+9830,5150,0,2,0,10,30,830,1830,4830,9830,60,61,'COAAAA','CQHAAA','OOOOxx'
+7826,5151,0,2,6,6,26,826,1826,2826,7826,52,53,'APAAAA','DQHAAA','VVVVxx'
+2108,5152,0,0,8,8,8,108,108,2108,2108,16,17,'CDAAAA','EQHAAA','AAAAxx'
+7245,5153,1,1,5,5,45,245,1245,2245,7245,90,91,'RSAAAA','FQHAAA','HHHHxx'
+8330,5154,0,2,0,10,30,330,330,3330,8330,60,61,'KIAAAA','GQHAAA','OOOOxx'
+7441,5155,1,1,1,1,41,441,1441,2441,7441,82,83,'FAAAAA','HQHAAA','VVVVxx'
+9848,5156,0,0,8,8,48,848,1848,4848,9848,96,97,'UOAAAA','IQHAAA','AAAAxx'
+1226,5157,0,2,6,6,26,226,1226,1226,1226,52,53,'EVAAAA','JQHAAA','HHHHxx'
+414,5158,0,2,4,14,14,414,414,414,414,28,29,'YPAAAA','KQHAAA','OOOOxx'
+1273,5159,1,1,3,13,73,273,1273,1273,1273,146,147,'ZWAAAA','LQHAAA','VVVVxx'
+9866,5160,0,2,6,6,66,866,1866,4866,9866,132,133,'MPAAAA','MQHAAA','AAAAxx'
+4633,5161,1,1,3,13,33,633,633,4633,4633,66,67,'FWAAAA','NQHAAA','HHHHxx'
+8727,5162,1,3,7,7,27,727,727,3727,8727,54,55,'RXAAAA','OQHAAA','OOOOxx'
+5308,5163,0,0,8,8,8,308,1308,308,5308,16,17,'EWAAAA','PQHAAA','VVVVxx'
+1395,5164,1,3,5,15,95,395,1395,1395,1395,190,191,'RBAAAA','QQHAAA','AAAAxx'
+1825,5165,1,1,5,5,25,825,1825,1825,1825,50,51,'FSAAAA','RQHAAA','HHHHxx'
+7606,5166,0,2,6,6,6,606,1606,2606,7606,12,13,'OGAAAA','SQHAAA','OOOOxx'
+9390,5167,0,2,0,10,90,390,1390,4390,9390,180,181,'EXAAAA','TQHAAA','VVVVxx'
+2376,5168,0,0,6,16,76,376,376,2376,2376,152,153,'KNAAAA','UQHAAA','AAAAxx'
+2377,5169,1,1,7,17,77,377,377,2377,2377,154,155,'LNAAAA','VQHAAA','HHHHxx'
+5346,5170,0,2,6,6,46,346,1346,346,5346,92,93,'QXAAAA','WQHAAA','OOOOxx'
+4140,5171,0,0,0,0,40,140,140,4140,4140,80,81,'GDAAAA','XQHAAA','VVVVxx'
+6032,5172,0,0,2,12,32,32,32,1032,6032,64,65,'AYAAAA','YQHAAA','AAAAxx'
+9453,5173,1,1,3,13,53,453,1453,4453,9453,106,107,'PZAAAA','ZQHAAA','HHHHxx'
+9297,5174,1,1,7,17,97,297,1297,4297,9297,194,195,'PTAAAA','ARHAAA','OOOOxx'
+6455,5175,1,3,5,15,55,455,455,1455,6455,110,111,'HOAAAA','BRHAAA','VVVVxx'
+4458,5176,0,2,8,18,58,458,458,4458,4458,116,117,'MPAAAA','CRHAAA','AAAAxx'
+9516,5177,0,0,6,16,16,516,1516,4516,9516,32,33,'ACAAAA','DRHAAA','HHHHxx'
+6211,5178,1,3,1,11,11,211,211,1211,6211,22,23,'XEAAAA','ERHAAA','OOOOxx'
+526,5179,0,2,6,6,26,526,526,526,526,52,53,'GUAAAA','FRHAAA','VVVVxx'
+3570,5180,0,2,0,10,70,570,1570,3570,3570,140,141,'IHAAAA','GRHAAA','AAAAxx'
+4885,5181,1,1,5,5,85,885,885,4885,4885,170,171,'XFAAAA','HRHAAA','HHHHxx'
+6390,5182,0,2,0,10,90,390,390,1390,6390,180,181,'ULAAAA','IRHAAA','OOOOxx'
+1606,5183,0,2,6,6,6,606,1606,1606,1606,12,13,'UJAAAA','JRHAAA','VVVVxx'
+7850,5184,0,2,0,10,50,850,1850,2850,7850,100,101,'YPAAAA','KRHAAA','AAAAxx'
+3315,5185,1,3,5,15,15,315,1315,3315,3315,30,31,'NXAAAA','LRHAAA','HHHHxx'
+8322,5186,0,2,2,2,22,322,322,3322,8322,44,45,'CIAAAA','MRHAAA','OOOOxx'
+3703,5187,1,3,3,3,3,703,1703,3703,3703,6,7,'LMAAAA','NRHAAA','VVVVxx'
+9489,5188,1,1,9,9,89,489,1489,4489,9489,178,179,'ZAAAAA','ORHAAA','AAAAxx'
+6104,5189,0,0,4,4,4,104,104,1104,6104,8,9,'UAAAAA','PRHAAA','HHHHxx'
+3067,5190,1,3,7,7,67,67,1067,3067,3067,134,135,'ZNAAAA','QRHAAA','OOOOxx'
+2521,5191,1,1,1,1,21,521,521,2521,2521,42,43,'ZSAAAA','RRHAAA','VVVVxx'
+2581,5192,1,1,1,1,81,581,581,2581,2581,162,163,'HVAAAA','SRHAAA','AAAAxx'
+595,5193,1,3,5,15,95,595,595,595,595,190,191,'XWAAAA','TRHAAA','HHHHxx'
+8291,5194,1,3,1,11,91,291,291,3291,8291,182,183,'XGAAAA','URHAAA','OOOOxx'
+1727,5195,1,3,7,7,27,727,1727,1727,1727,54,55,'LOAAAA','VRHAAA','VVVVxx'
+6847,5196,1,3,7,7,47,847,847,1847,6847,94,95,'JDAAAA','WRHAAA','AAAAxx'
+7494,5197,0,2,4,14,94,494,1494,2494,7494,188,189,'GCAAAA','XRHAAA','HHHHxx'
+7093,5198,1,1,3,13,93,93,1093,2093,7093,186,187,'VMAAAA','YRHAAA','OOOOxx'
+7357,5199,1,1,7,17,57,357,1357,2357,7357,114,115,'ZWAAAA','ZRHAAA','VVVVxx'
+620,5200,0,0,0,0,20,620,620,620,620,40,41,'WXAAAA','ASHAAA','AAAAxx'
+2460,5201,0,0,0,0,60,460,460,2460,2460,120,121,'QQAAAA','BSHAAA','HHHHxx'
+1598,5202,0,2,8,18,98,598,1598,1598,1598,196,197,'MJAAAA','CSHAAA','OOOOxx'
+4112,5203,0,0,2,12,12,112,112,4112,4112,24,25,'ECAAAA','DSHAAA','VVVVxx'
+2956,5204,0,0,6,16,56,956,956,2956,2956,112,113,'SJAAAA','ESHAAA','AAAAxx'
+3193,5205,1,1,3,13,93,193,1193,3193,3193,186,187,'VSAAAA','FSHAAA','HHHHxx'
+6356,5206,0,0,6,16,56,356,356,1356,6356,112,113,'MKAAAA','GSHAAA','OOOOxx'
+730,5207,0,2,0,10,30,730,730,730,730,60,61,'CCAAAA','HSHAAA','VVVVxx'
+8826,5208,0,2,6,6,26,826,826,3826,8826,52,53,'MBAAAA','ISHAAA','AAAAxx'
+9036,5209,0,0,6,16,36,36,1036,4036,9036,72,73,'OJAAAA','JSHAAA','HHHHxx'
+2085,5210,1,1,5,5,85,85,85,2085,2085,170,171,'FCAAAA','KSHAAA','OOOOxx'
+9007,5211,1,3,7,7,7,7,1007,4007,9007,14,15,'LIAAAA','LSHAAA','VVVVxx'
+6047,5212,1,3,7,7,47,47,47,1047,6047,94,95,'PYAAAA','MSHAAA','AAAAxx'
+3953,5213,1,1,3,13,53,953,1953,3953,3953,106,107,'BWAAAA','NSHAAA','HHHHxx'
+1214,5214,0,2,4,14,14,214,1214,1214,1214,28,29,'SUAAAA','OSHAAA','OOOOxx'
+4814,5215,0,2,4,14,14,814,814,4814,4814,28,29,'EDAAAA','PSHAAA','VVVVxx'
+5738,5216,0,2,8,18,38,738,1738,738,5738,76,77,'SMAAAA','QSHAAA','AAAAxx'
+7176,5217,0,0,6,16,76,176,1176,2176,7176,152,153,'AQAAAA','RSHAAA','HHHHxx'
+3609,5218,1,1,9,9,9,609,1609,3609,3609,18,19,'VIAAAA','SSHAAA','OOOOxx'
+592,5219,0,0,2,12,92,592,592,592,592,184,185,'UWAAAA','TSHAAA','VVVVxx'
+9391,5220,1,3,1,11,91,391,1391,4391,9391,182,183,'FXAAAA','USHAAA','AAAAxx'
+5345,5221,1,1,5,5,45,345,1345,345,5345,90,91,'PXAAAA','VSHAAA','HHHHxx'
+1171,5222,1,3,1,11,71,171,1171,1171,1171,142,143,'BTAAAA','WSHAAA','OOOOxx'
+7238,5223,0,2,8,18,38,238,1238,2238,7238,76,77,'KSAAAA','XSHAAA','VVVVxx'
+7561,5224,1,1,1,1,61,561,1561,2561,7561,122,123,'VEAAAA','YSHAAA','AAAAxx'
+5876,5225,0,0,6,16,76,876,1876,876,5876,152,153,'ASAAAA','ZSHAAA','HHHHxx'
+6611,5226,1,3,1,11,11,611,611,1611,6611,22,23,'HUAAAA','ATHAAA','OOOOxx'
+7300,5227,0,0,0,0,0,300,1300,2300,7300,0,1,'UUAAAA','BTHAAA','VVVVxx'
+1506,5228,0,2,6,6,6,506,1506,1506,1506,12,13,'YFAAAA','CTHAAA','AAAAxx'
+1153,5229,1,1,3,13,53,153,1153,1153,1153,106,107,'JSAAAA','DTHAAA','HHHHxx'
+3831,5230,1,3,1,11,31,831,1831,3831,3831,62,63,'JRAAAA','ETHAAA','OOOOxx'
+9255,5231,1,3,5,15,55,255,1255,4255,9255,110,111,'ZRAAAA','FTHAAA','VVVVxx'
+1841,5232,1,1,1,1,41,841,1841,1841,1841,82,83,'VSAAAA','GTHAAA','AAAAxx'
+5075,5233,1,3,5,15,75,75,1075,75,5075,150,151,'FNAAAA','HTHAAA','HHHHxx'
+101,5234,1,1,1,1,1,101,101,101,101,2,3,'XDAAAA','ITHAAA','OOOOxx'
+2627,5235,1,3,7,7,27,627,627,2627,2627,54,55,'BXAAAA','JTHAAA','VVVVxx'
+7078,5236,0,2,8,18,78,78,1078,2078,7078,156,157,'GMAAAA','KTHAAA','AAAAxx'
+2850,5237,0,2,0,10,50,850,850,2850,2850,100,101,'QFAAAA','LTHAAA','HHHHxx'
+8703,5238,1,3,3,3,3,703,703,3703,8703,6,7,'TWAAAA','MTHAAA','OOOOxx'
+4101,5239,1,1,1,1,1,101,101,4101,4101,2,3,'TBAAAA','NTHAAA','VVVVxx'
+318,5240,0,2,8,18,18,318,318,318,318,36,37,'GMAAAA','OTHAAA','AAAAxx'
+6452,5241,0,0,2,12,52,452,452,1452,6452,104,105,'EOAAAA','PTHAAA','HHHHxx'
+5558,5242,0,2,8,18,58,558,1558,558,5558,116,117,'UFAAAA','QTHAAA','OOOOxx'
+3127,5243,1,3,7,7,27,127,1127,3127,3127,54,55,'HQAAAA','RTHAAA','VVVVxx'
+535,5244,1,3,5,15,35,535,535,535,535,70,71,'PUAAAA','STHAAA','AAAAxx'
+270,5245,0,2,0,10,70,270,270,270,270,140,141,'KKAAAA','TTHAAA','HHHHxx'
+4038,5246,0,2,8,18,38,38,38,4038,4038,76,77,'IZAAAA','UTHAAA','OOOOxx'
+3404,5247,0,0,4,4,4,404,1404,3404,3404,8,9,'YAAAAA','VTHAAA','VVVVxx'
+2374,5248,0,2,4,14,74,374,374,2374,2374,148,149,'INAAAA','WTHAAA','AAAAxx'
+6446,5249,0,2,6,6,46,446,446,1446,6446,92,93,'YNAAAA','XTHAAA','HHHHxx'
+7758,5250,0,2,8,18,58,758,1758,2758,7758,116,117,'KMAAAA','YTHAAA','OOOOxx'
+356,5251,0,0,6,16,56,356,356,356,356,112,113,'SNAAAA','ZTHAAA','VVVVxx'
+9197,5252,1,1,7,17,97,197,1197,4197,9197,194,195,'TPAAAA','AUHAAA','AAAAxx'
+9765,5253,1,1,5,5,65,765,1765,4765,9765,130,131,'PLAAAA','BUHAAA','HHHHxx'
+4974,5254,0,2,4,14,74,974,974,4974,4974,148,149,'IJAAAA','CUHAAA','OOOOxx'
+442,5255,0,2,2,2,42,442,442,442,442,84,85,'ARAAAA','DUHAAA','VVVVxx'
+4349,5256,1,1,9,9,49,349,349,4349,4349,98,99,'HLAAAA','EUHAAA','AAAAxx'
+6119,5257,1,3,9,19,19,119,119,1119,6119,38,39,'JBAAAA','FUHAAA','HHHHxx'
+7574,5258,0,2,4,14,74,574,1574,2574,7574,148,149,'IFAAAA','GUHAAA','OOOOxx'
+4445,5259,1,1,5,5,45,445,445,4445,4445,90,91,'ZOAAAA','HUHAAA','VVVVxx'
+940,5260,0,0,0,0,40,940,940,940,940,80,81,'EKAAAA','IUHAAA','AAAAxx'
+1875,5261,1,3,5,15,75,875,1875,1875,1875,150,151,'DUAAAA','JUHAAA','HHHHxx'
+5951,5262,1,3,1,11,51,951,1951,951,5951,102,103,'XUAAAA','KUHAAA','OOOOxx'
+9132,5263,0,0,2,12,32,132,1132,4132,9132,64,65,'GNAAAA','LUHAAA','VVVVxx'
+6913,5264,1,1,3,13,13,913,913,1913,6913,26,27,'XFAAAA','MUHAAA','AAAAxx'
+3308,5265,0,0,8,8,8,308,1308,3308,3308,16,17,'GXAAAA','NUHAAA','HHHHxx'
+7553,5266,1,1,3,13,53,553,1553,2553,7553,106,107,'NEAAAA','OUHAAA','OOOOxx'
+2138,5267,0,2,8,18,38,138,138,2138,2138,76,77,'GEAAAA','PUHAAA','VVVVxx'
+6252,5268,0,0,2,12,52,252,252,1252,6252,104,105,'MGAAAA','QUHAAA','AAAAxx'
+2171,5269,1,3,1,11,71,171,171,2171,2171,142,143,'NFAAAA','RUHAAA','HHHHxx'
+4159,5270,1,3,9,19,59,159,159,4159,4159,118,119,'ZDAAAA','SUHAAA','OOOOxx'
+2401,5271,1,1,1,1,1,401,401,2401,2401,2,3,'JOAAAA','TUHAAA','VVVVxx'
+6553,5272,1,1,3,13,53,553,553,1553,6553,106,107,'BSAAAA','UUHAAA','AAAAxx'
+5217,5273,1,1,7,17,17,217,1217,217,5217,34,35,'RSAAAA','VUHAAA','HHHHxx'
+1405,5274,1,1,5,5,5,405,1405,1405,1405,10,11,'BCAAAA','WUHAAA','OOOOxx'
+1494,5275,0,2,4,14,94,494,1494,1494,1494,188,189,'MFAAAA','XUHAAA','VVVVxx'
+5553,5276,1,1,3,13,53,553,1553,553,5553,106,107,'PFAAAA','YUHAAA','AAAAxx'
+8296,5277,0,0,6,16,96,296,296,3296,8296,192,193,'CHAAAA','ZUHAAA','HHHHxx'
+6565,5278,1,1,5,5,65,565,565,1565,6565,130,131,'NSAAAA','AVHAAA','OOOOxx'
+817,5279,1,1,7,17,17,817,817,817,817,34,35,'LFAAAA','BVHAAA','VVVVxx'
+6947,5280,1,3,7,7,47,947,947,1947,6947,94,95,'FHAAAA','CVHAAA','AAAAxx'
+4184,5281,0,0,4,4,84,184,184,4184,4184,168,169,'YEAAAA','DVHAAA','HHHHxx'
+6577,5282,1,1,7,17,77,577,577,1577,6577,154,155,'ZSAAAA','EVHAAA','OOOOxx'
+6424,5283,0,0,4,4,24,424,424,1424,6424,48,49,'CNAAAA','FVHAAA','VVVVxx'
+2482,5284,0,2,2,2,82,482,482,2482,2482,164,165,'MRAAAA','GVHAAA','AAAAxx'
+6874,5285,0,2,4,14,74,874,874,1874,6874,148,149,'KEAAAA','HVHAAA','HHHHxx'
+7601,5286,1,1,1,1,1,601,1601,2601,7601,2,3,'JGAAAA','IVHAAA','OOOOxx'
+4552,5287,0,0,2,12,52,552,552,4552,4552,104,105,'CTAAAA','JVHAAA','VVVVxx'
+8406,5288,0,2,6,6,6,406,406,3406,8406,12,13,'ILAAAA','KVHAAA','AAAAxx'
+2924,5289,0,0,4,4,24,924,924,2924,2924,48,49,'MIAAAA','LVHAAA','HHHHxx'
+8255,5290,1,3,5,15,55,255,255,3255,8255,110,111,'NFAAAA','MVHAAA','OOOOxx'
+4920,5291,0,0,0,0,20,920,920,4920,4920,40,41,'GHAAAA','NVHAAA','VVVVxx'
+228,5292,0,0,8,8,28,228,228,228,228,56,57,'UIAAAA','OVHAAA','AAAAxx'
+9431,5293,1,3,1,11,31,431,1431,4431,9431,62,63,'TYAAAA','PVHAAA','HHHHxx'
+4021,5294,1,1,1,1,21,21,21,4021,4021,42,43,'RYAAAA','QVHAAA','OOOOxx'
+2966,5295,0,2,6,6,66,966,966,2966,2966,132,133,'CKAAAA','RVHAAA','VVVVxx'
+2862,5296,0,2,2,2,62,862,862,2862,2862,124,125,'CGAAAA','SVHAAA','AAAAxx'
+4303,5297,1,3,3,3,3,303,303,4303,4303,6,7,'NJAAAA','TVHAAA','HHHHxx'
+9643,5298,1,3,3,3,43,643,1643,4643,9643,86,87,'XGAAAA','UVHAAA','OOOOxx'
+3008,5299,0,0,8,8,8,8,1008,3008,3008,16,17,'SLAAAA','VVHAAA','VVVVxx'
+7476,5300,0,0,6,16,76,476,1476,2476,7476,152,153,'OBAAAA','WVHAAA','AAAAxx'
+3686,5301,0,2,6,6,86,686,1686,3686,3686,172,173,'ULAAAA','XVHAAA','HHHHxx'
+9051,5302,1,3,1,11,51,51,1051,4051,9051,102,103,'DKAAAA','YVHAAA','OOOOxx'
+6592,5303,0,0,2,12,92,592,592,1592,6592,184,185,'OTAAAA','ZVHAAA','VVVVxx'
+924,5304,0,0,4,4,24,924,924,924,924,48,49,'OJAAAA','AWHAAA','AAAAxx'
+4406,5305,0,2,6,6,6,406,406,4406,4406,12,13,'MNAAAA','BWHAAA','HHHHxx'
+5233,5306,1,1,3,13,33,233,1233,233,5233,66,67,'HTAAAA','CWHAAA','OOOOxx'
+8881,5307,1,1,1,1,81,881,881,3881,8881,162,163,'PDAAAA','DWHAAA','VVVVxx'
+2212,5308,0,0,2,12,12,212,212,2212,2212,24,25,'CHAAAA','EWHAAA','AAAAxx'
+5804,5309,0,0,4,4,4,804,1804,804,5804,8,9,'GPAAAA','FWHAAA','HHHHxx'
+2990,5310,0,2,0,10,90,990,990,2990,2990,180,181,'ALAAAA','GWHAAA','OOOOxx'
+4069,5311,1,1,9,9,69,69,69,4069,4069,138,139,'NAAAAA','HWHAAA','VVVVxx'
+5380,5312,0,0,0,0,80,380,1380,380,5380,160,161,'YYAAAA','IWHAAA','AAAAxx'
+5016,5313,0,0,6,16,16,16,1016,16,5016,32,33,'YKAAAA','JWHAAA','HHHHxx'
+5056,5314,0,0,6,16,56,56,1056,56,5056,112,113,'MMAAAA','KWHAAA','OOOOxx'
+3732,5315,0,0,2,12,32,732,1732,3732,3732,64,65,'ONAAAA','LWHAAA','VVVVxx'
+5527,5316,1,3,7,7,27,527,1527,527,5527,54,55,'PEAAAA','MWHAAA','AAAAxx'
+1151,5317,1,3,1,11,51,151,1151,1151,1151,102,103,'HSAAAA','NWHAAA','HHHHxx'
+7900,5318,0,0,0,0,0,900,1900,2900,7900,0,1,'WRAAAA','OWHAAA','OOOOxx'
+1660,5319,0,0,0,0,60,660,1660,1660,1660,120,121,'WLAAAA','PWHAAA','VVVVxx'
+8064,5320,0,0,4,4,64,64,64,3064,8064,128,129,'EYAAAA','QWHAAA','AAAAxx'
+8240,5321,0,0,0,0,40,240,240,3240,8240,80,81,'YEAAAA','RWHAAA','HHHHxx'
+413,5322,1,1,3,13,13,413,413,413,413,26,27,'XPAAAA','SWHAAA','OOOOxx'
+8311,5323,1,3,1,11,11,311,311,3311,8311,22,23,'RHAAAA','TWHAAA','VVVVxx'
+1065,5324,1,1,5,5,65,65,1065,1065,1065,130,131,'ZOAAAA','UWHAAA','AAAAxx'
+2741,5325,1,1,1,1,41,741,741,2741,2741,82,83,'LBAAAA','VWHAAA','HHHHxx'
+5306,5326,0,2,6,6,6,306,1306,306,5306,12,13,'CWAAAA','WWHAAA','OOOOxx'
+5464,5327,0,0,4,4,64,464,1464,464,5464,128,129,'ECAAAA','XWHAAA','VVVVxx'
+4237,5328,1,1,7,17,37,237,237,4237,4237,74,75,'ZGAAAA','YWHAAA','AAAAxx'
+3822,5329,0,2,2,2,22,822,1822,3822,3822,44,45,'ARAAAA','ZWHAAA','HHHHxx'
+2548,5330,0,0,8,8,48,548,548,2548,2548,96,97,'AUAAAA','AXHAAA','OOOOxx'
+2688,5331,0,0,8,8,88,688,688,2688,2688,176,177,'KZAAAA','BXHAAA','VVVVxx'
+8061,5332,1,1,1,1,61,61,61,3061,8061,122,123,'BYAAAA','CXHAAA','AAAAxx'
+9340,5333,0,0,0,0,40,340,1340,4340,9340,80,81,'GVAAAA','DXHAAA','HHHHxx'
+4031,5334,1,3,1,11,31,31,31,4031,4031,62,63,'BZAAAA','EXHAAA','OOOOxx'
+2635,5335,1,3,5,15,35,635,635,2635,2635,70,71,'JXAAAA','FXHAAA','VVVVxx'
+809,5336,1,1,9,9,9,809,809,809,809,18,19,'DFAAAA','GXHAAA','AAAAxx'
+3209,5337,1,1,9,9,9,209,1209,3209,3209,18,19,'LTAAAA','HXHAAA','HHHHxx'
+3825,5338,1,1,5,5,25,825,1825,3825,3825,50,51,'DRAAAA','IXHAAA','OOOOxx'
+1448,5339,0,0,8,8,48,448,1448,1448,1448,96,97,'SDAAAA','JXHAAA','VVVVxx'
+9077,5340,1,1,7,17,77,77,1077,4077,9077,154,155,'DLAAAA','KXHAAA','AAAAxx'
+3730,5341,0,2,0,10,30,730,1730,3730,3730,60,61,'MNAAAA','LXHAAA','HHHHxx'
+9596,5342,0,0,6,16,96,596,1596,4596,9596,192,193,'CFAAAA','MXHAAA','OOOOxx'
+3563,5343,1,3,3,3,63,563,1563,3563,3563,126,127,'BHAAAA','NXHAAA','VVVVxx'
+4116,5344,0,0,6,16,16,116,116,4116,4116,32,33,'ICAAAA','OXHAAA','AAAAxx'
+4825,5345,1,1,5,5,25,825,825,4825,4825,50,51,'PDAAAA','PXHAAA','HHHHxx'
+8376,5346,0,0,6,16,76,376,376,3376,8376,152,153,'EKAAAA','QXHAAA','OOOOxx'
+3917,5347,1,1,7,17,17,917,1917,3917,3917,34,35,'RUAAAA','RXHAAA','VVVVxx'
+4407,5348,1,3,7,7,7,407,407,4407,4407,14,15,'NNAAAA','SXHAAA','AAAAxx'
+8202,5349,0,2,2,2,2,202,202,3202,8202,4,5,'MDAAAA','TXHAAA','HHHHxx'
+7675,5350,1,3,5,15,75,675,1675,2675,7675,150,151,'FJAAAA','UXHAAA','OOOOxx'
+4104,5351,0,0,4,4,4,104,104,4104,4104,8,9,'WBAAAA','VXHAAA','VVVVxx'
+9225,5352,1,1,5,5,25,225,1225,4225,9225,50,51,'VQAAAA','WXHAAA','AAAAxx'
+2834,5353,0,2,4,14,34,834,834,2834,2834,68,69,'AFAAAA','XXHAAA','HHHHxx'
+1227,5354,1,3,7,7,27,227,1227,1227,1227,54,55,'FVAAAA','YXHAAA','OOOOxx'
+3383,5355,1,3,3,3,83,383,1383,3383,3383,166,167,'DAAAAA','ZXHAAA','VVVVxx'
+67,5356,1,3,7,7,67,67,67,67,67,134,135,'PCAAAA','AYHAAA','AAAAxx'
+1751,5357,1,3,1,11,51,751,1751,1751,1751,102,103,'JPAAAA','BYHAAA','HHHHxx'
+8054,5358,0,2,4,14,54,54,54,3054,8054,108,109,'UXAAAA','CYHAAA','OOOOxx'
+8571,5359,1,3,1,11,71,571,571,3571,8571,142,143,'RRAAAA','DYHAAA','VVVVxx'
+2466,5360,0,2,6,6,66,466,466,2466,2466,132,133,'WQAAAA','EYHAAA','AAAAxx'
+9405,5361,1,1,5,5,5,405,1405,4405,9405,10,11,'TXAAAA','FYHAAA','HHHHxx'
+6883,5362,1,3,3,3,83,883,883,1883,6883,166,167,'TEAAAA','GYHAAA','OOOOxx'
+4301,5363,1,1,1,1,1,301,301,4301,4301,2,3,'LJAAAA','HYHAAA','VVVVxx'
+3705,5364,1,1,5,5,5,705,1705,3705,3705,10,11,'NMAAAA','IYHAAA','AAAAxx'
+5420,5365,0,0,0,0,20,420,1420,420,5420,40,41,'MAAAAA','JYHAAA','HHHHxx'
+3692,5366,0,0,2,12,92,692,1692,3692,3692,184,185,'AMAAAA','KYHAAA','OOOOxx'
+6851,5367,1,3,1,11,51,851,851,1851,6851,102,103,'NDAAAA','LYHAAA','VVVVxx'
+9363,5368,1,3,3,3,63,363,1363,4363,9363,126,127,'DWAAAA','MYHAAA','AAAAxx'
+2269,5369,1,1,9,9,69,269,269,2269,2269,138,139,'HJAAAA','NYHAAA','HHHHxx'
+4918,5370,0,2,8,18,18,918,918,4918,4918,36,37,'EHAAAA','OYHAAA','OOOOxx'
+4297,5371,1,1,7,17,97,297,297,4297,4297,194,195,'HJAAAA','PYHAAA','VVVVxx'
+1836,5372,0,0,6,16,36,836,1836,1836,1836,72,73,'QSAAAA','QYHAAA','AAAAxx'
+237,5373,1,1,7,17,37,237,237,237,237,74,75,'DJAAAA','RYHAAA','HHHHxx'
+6131,5374,1,3,1,11,31,131,131,1131,6131,62,63,'VBAAAA','SYHAAA','OOOOxx'
+3174,5375,0,2,4,14,74,174,1174,3174,3174,148,149,'CSAAAA','TYHAAA','VVVVxx'
+9987,5376,1,3,7,7,87,987,1987,4987,9987,174,175,'DUAAAA','UYHAAA','AAAAxx'
+3630,5377,0,2,0,10,30,630,1630,3630,3630,60,61,'QJAAAA','VYHAAA','HHHHxx'
+2899,5378,1,3,9,19,99,899,899,2899,2899,198,199,'NHAAAA','WYHAAA','OOOOxx'
+4079,5379,1,3,9,19,79,79,79,4079,4079,158,159,'XAAAAA','XYHAAA','VVVVxx'
+5049,5380,1,1,9,9,49,49,1049,49,5049,98,99,'FMAAAA','YYHAAA','AAAAxx'
+2963,5381,1,3,3,3,63,963,963,2963,2963,126,127,'ZJAAAA','ZYHAAA','HHHHxx'
+3962,5382,0,2,2,2,62,962,1962,3962,3962,124,125,'KWAAAA','AZHAAA','OOOOxx'
+7921,5383,1,1,1,1,21,921,1921,2921,7921,42,43,'RSAAAA','BZHAAA','VVVVxx'
+3967,5384,1,3,7,7,67,967,1967,3967,3967,134,135,'PWAAAA','CZHAAA','AAAAxx'
+2752,5385,0,0,2,12,52,752,752,2752,2752,104,105,'WBAAAA','DZHAAA','HHHHxx'
+7944,5386,0,0,4,4,44,944,1944,2944,7944,88,89,'OTAAAA','EZHAAA','OOOOxx'
+2205,5387,1,1,5,5,5,205,205,2205,2205,10,11,'VGAAAA','FZHAAA','VVVVxx'
+5035,5388,1,3,5,15,35,35,1035,35,5035,70,71,'RLAAAA','GZHAAA','AAAAxx'
+1425,5389,1,1,5,5,25,425,1425,1425,1425,50,51,'VCAAAA','HZHAAA','HHHHxx'
+832,5390,0,0,2,12,32,832,832,832,832,64,65,'AGAAAA','IZHAAA','OOOOxx'
+1447,5391,1,3,7,7,47,447,1447,1447,1447,94,95,'RDAAAA','JZHAAA','VVVVxx'
+6108,5392,0,0,8,8,8,108,108,1108,6108,16,17,'YAAAAA','KZHAAA','AAAAxx'
+4936,5393,0,0,6,16,36,936,936,4936,4936,72,73,'WHAAAA','LZHAAA','HHHHxx'
+7704,5394,0,0,4,4,4,704,1704,2704,7704,8,9,'IKAAAA','MZHAAA','OOOOxx'
+142,5395,0,2,2,2,42,142,142,142,142,84,85,'MFAAAA','NZHAAA','VVVVxx'
+4272,5396,0,0,2,12,72,272,272,4272,4272,144,145,'IIAAAA','OZHAAA','AAAAxx'
+7667,5397,1,3,7,7,67,667,1667,2667,7667,134,135,'XIAAAA','PZHAAA','HHHHxx'
+366,5398,0,2,6,6,66,366,366,366,366,132,133,'COAAAA','QZHAAA','OOOOxx'
+8866,5399,0,2,6,6,66,866,866,3866,8866,132,133,'ADAAAA','RZHAAA','VVVVxx'
+7712,5400,0,0,2,12,12,712,1712,2712,7712,24,25,'QKAAAA','SZHAAA','AAAAxx'
+3880,5401,0,0,0,0,80,880,1880,3880,3880,160,161,'GTAAAA','TZHAAA','HHHHxx'
+4631,5402,1,3,1,11,31,631,631,4631,4631,62,63,'DWAAAA','UZHAAA','OOOOxx'
+2789,5403,1,1,9,9,89,789,789,2789,2789,178,179,'HDAAAA','VZHAAA','VVVVxx'
+7720,5404,0,0,0,0,20,720,1720,2720,7720,40,41,'YKAAAA','WZHAAA','AAAAxx'
+7618,5405,0,2,8,18,18,618,1618,2618,7618,36,37,'AHAAAA','XZHAAA','HHHHxx'
+4990,5406,0,2,0,10,90,990,990,4990,4990,180,181,'YJAAAA','YZHAAA','OOOOxx'
+7918,5407,0,2,8,18,18,918,1918,2918,7918,36,37,'OSAAAA','ZZHAAA','VVVVxx'
+5067,5408,1,3,7,7,67,67,1067,67,5067,134,135,'XMAAAA','AAIAAA','AAAAxx'
+6370,5409,0,2,0,10,70,370,370,1370,6370,140,141,'ALAAAA','BAIAAA','HHHHxx'
+2268,5410,0,0,8,8,68,268,268,2268,2268,136,137,'GJAAAA','CAIAAA','OOOOxx'
+1949,5411,1,1,9,9,49,949,1949,1949,1949,98,99,'ZWAAAA','DAIAAA','VVVVxx'
+5503,5412,1,3,3,3,3,503,1503,503,5503,6,7,'RDAAAA','EAIAAA','AAAAxx'
+9951,5413,1,3,1,11,51,951,1951,4951,9951,102,103,'TSAAAA','FAIAAA','HHHHxx'
+6823,5414,1,3,3,3,23,823,823,1823,6823,46,47,'LCAAAA','GAIAAA','OOOOxx'
+6287,5415,1,3,7,7,87,287,287,1287,6287,174,175,'VHAAAA','HAIAAA','VVVVxx'
+6016,5416,0,0,6,16,16,16,16,1016,6016,32,33,'KXAAAA','IAIAAA','AAAAxx'
+1977,5417,1,1,7,17,77,977,1977,1977,1977,154,155,'BYAAAA','JAIAAA','HHHHxx'
+8579,5418,1,3,9,19,79,579,579,3579,8579,158,159,'ZRAAAA','KAIAAA','OOOOxx'
+6204,5419,0,0,4,4,4,204,204,1204,6204,8,9,'QEAAAA','LAIAAA','VVVVxx'
+9764,5420,0,0,4,4,64,764,1764,4764,9764,128,129,'OLAAAA','MAIAAA','AAAAxx'
+2005,5421,1,1,5,5,5,5,5,2005,2005,10,11,'DZAAAA','NAIAAA','HHHHxx'
+1648,5422,0,0,8,8,48,648,1648,1648,1648,96,97,'KLAAAA','OAIAAA','OOOOxx'
+2457,5423,1,1,7,17,57,457,457,2457,2457,114,115,'NQAAAA','PAIAAA','VVVVxx'
+2698,5424,0,2,8,18,98,698,698,2698,2698,196,197,'UZAAAA','QAIAAA','AAAAxx'
+7730,5425,0,2,0,10,30,730,1730,2730,7730,60,61,'ILAAAA','RAIAAA','HHHHxx'
+7287,5426,1,3,7,7,87,287,1287,2287,7287,174,175,'HUAAAA','SAIAAA','OOOOxx'
+2937,5427,1,1,7,17,37,937,937,2937,2937,74,75,'ZIAAAA','TAIAAA','VVVVxx'
+6824,5428,0,0,4,4,24,824,824,1824,6824,48,49,'MCAAAA','UAIAAA','AAAAxx'
+9256,5429,0,0,6,16,56,256,1256,4256,9256,112,113,'ASAAAA','VAIAAA','HHHHxx'
+4810,5430,0,2,0,10,10,810,810,4810,4810,20,21,'ADAAAA','WAIAAA','OOOOxx'
+3869,5431,1,1,9,9,69,869,1869,3869,3869,138,139,'VSAAAA','XAIAAA','VVVVxx'
+1993,5432,1,1,3,13,93,993,1993,1993,1993,186,187,'RYAAAA','YAIAAA','AAAAxx'
+6048,5433,0,0,8,8,48,48,48,1048,6048,96,97,'QYAAAA','ZAIAAA','HHHHxx'
+6922,5434,0,2,2,2,22,922,922,1922,6922,44,45,'GGAAAA','ABIAAA','OOOOxx'
+8,5435,0,0,8,8,8,8,8,8,8,16,17,'IAAAAA','BBIAAA','VVVVxx'
+6706,5436,0,2,6,6,6,706,706,1706,6706,12,13,'YXAAAA','CBIAAA','AAAAxx'
+9159,5437,1,3,9,19,59,159,1159,4159,9159,118,119,'HOAAAA','DBIAAA','HHHHxx'
+7020,5438,0,0,0,0,20,20,1020,2020,7020,40,41,'AKAAAA','EBIAAA','OOOOxx'
+767,5439,1,3,7,7,67,767,767,767,767,134,135,'NDAAAA','FBIAAA','VVVVxx'
+8602,5440,0,2,2,2,2,602,602,3602,8602,4,5,'WSAAAA','GBIAAA','AAAAxx'
+4442,5441,0,2,2,2,42,442,442,4442,4442,84,85,'WOAAAA','HBIAAA','HHHHxx'
+2040,5442,0,0,0,0,40,40,40,2040,2040,80,81,'MAAAAA','IBIAAA','OOOOxx'
+5493,5443,1,1,3,13,93,493,1493,493,5493,186,187,'HDAAAA','JBIAAA','VVVVxx'
+275,5444,1,3,5,15,75,275,275,275,275,150,151,'PKAAAA','KBIAAA','AAAAxx'
+8876,5445,0,0,6,16,76,876,876,3876,8876,152,153,'KDAAAA','LBIAAA','HHHHxx'
+7381,5446,1,1,1,1,81,381,1381,2381,7381,162,163,'XXAAAA','MBIAAA','OOOOxx'
+1827,5447,1,3,7,7,27,827,1827,1827,1827,54,55,'HSAAAA','NBIAAA','VVVVxx'
+3537,5448,1,1,7,17,37,537,1537,3537,3537,74,75,'BGAAAA','OBIAAA','AAAAxx'
+6978,5449,0,2,8,18,78,978,978,1978,6978,156,157,'KIAAAA','PBIAAA','HHHHxx'
+6160,5450,0,0,0,0,60,160,160,1160,6160,120,121,'YCAAAA','QBIAAA','OOOOxx'
+9219,5451,1,3,9,19,19,219,1219,4219,9219,38,39,'PQAAAA','RBIAAA','VVVVxx'
+5034,5452,0,2,4,14,34,34,1034,34,5034,68,69,'QLAAAA','SBIAAA','AAAAxx'
+8463,5453,1,3,3,3,63,463,463,3463,8463,126,127,'NNAAAA','TBIAAA','HHHHxx'
+2038,5454,0,2,8,18,38,38,38,2038,2038,76,77,'KAAAAA','UBIAAA','OOOOxx'
+9562,5455,0,2,2,2,62,562,1562,4562,9562,124,125,'UDAAAA','VBIAAA','VVVVxx'
+2687,5456,1,3,7,7,87,687,687,2687,2687,174,175,'JZAAAA','WBIAAA','AAAAxx'
+5092,5457,0,0,2,12,92,92,1092,92,5092,184,185,'WNAAAA','XBIAAA','HHHHxx'
+539,5458,1,3,9,19,39,539,539,539,539,78,79,'TUAAAA','YBIAAA','OOOOxx'
+2139,5459,1,3,9,19,39,139,139,2139,2139,78,79,'HEAAAA','ZBIAAA','VVVVxx'
+9221,5460,1,1,1,1,21,221,1221,4221,9221,42,43,'RQAAAA','ACIAAA','AAAAxx'
+965,5461,1,1,5,5,65,965,965,965,965,130,131,'DLAAAA','BCIAAA','HHHHxx'
+6051,5462,1,3,1,11,51,51,51,1051,6051,102,103,'TYAAAA','CCIAAA','OOOOxx'
+5822,5463,0,2,2,2,22,822,1822,822,5822,44,45,'YPAAAA','DCIAAA','VVVVxx'
+6397,5464,1,1,7,17,97,397,397,1397,6397,194,195,'BMAAAA','ECIAAA','AAAAxx'
+2375,5465,1,3,5,15,75,375,375,2375,2375,150,151,'JNAAAA','FCIAAA','HHHHxx'
+9415,5466,1,3,5,15,15,415,1415,4415,9415,30,31,'DYAAAA','GCIAAA','OOOOxx'
+6552,5467,0,0,2,12,52,552,552,1552,6552,104,105,'ASAAAA','HCIAAA','VVVVxx'
+2248,5468,0,0,8,8,48,248,248,2248,2248,96,97,'MIAAAA','ICIAAA','AAAAxx'
+2611,5469,1,3,1,11,11,611,611,2611,2611,22,23,'LWAAAA','JCIAAA','HHHHxx'
+9609,5470,1,1,9,9,9,609,1609,4609,9609,18,19,'PFAAAA','KCIAAA','OOOOxx'
+2132,5471,0,0,2,12,32,132,132,2132,2132,64,65,'AEAAAA','LCIAAA','VVVVxx'
+8452,5472,0,0,2,12,52,452,452,3452,8452,104,105,'CNAAAA','MCIAAA','AAAAxx'
+9407,5473,1,3,7,7,7,407,1407,4407,9407,14,15,'VXAAAA','NCIAAA','HHHHxx'
+2814,5474,0,2,4,14,14,814,814,2814,2814,28,29,'GEAAAA','OCIAAA','OOOOxx'
+1889,5475,1,1,9,9,89,889,1889,1889,1889,178,179,'RUAAAA','PCIAAA','VVVVxx'
+7489,5476,1,1,9,9,89,489,1489,2489,7489,178,179,'BCAAAA','QCIAAA','AAAAxx'
+2255,5477,1,3,5,15,55,255,255,2255,2255,110,111,'TIAAAA','RCIAAA','HHHHxx'
+3380,5478,0,0,0,0,80,380,1380,3380,3380,160,161,'AAAAAA','SCIAAA','OOOOxx'
+1167,5479,1,3,7,7,67,167,1167,1167,1167,134,135,'XSAAAA','TCIAAA','VVVVxx'
+5369,5480,1,1,9,9,69,369,1369,369,5369,138,139,'NYAAAA','UCIAAA','AAAAxx'
+2378,5481,0,2,8,18,78,378,378,2378,2378,156,157,'MNAAAA','VCIAAA','HHHHxx'
+8315,5482,1,3,5,15,15,315,315,3315,8315,30,31,'VHAAAA','WCIAAA','OOOOxx'
+2934,5483,0,2,4,14,34,934,934,2934,2934,68,69,'WIAAAA','XCIAAA','VVVVxx'
+7924,5484,0,0,4,4,24,924,1924,2924,7924,48,49,'USAAAA','YCIAAA','AAAAxx'
+2867,5485,1,3,7,7,67,867,867,2867,2867,134,135,'HGAAAA','ZCIAAA','HHHHxx'
+9141,5486,1,1,1,1,41,141,1141,4141,9141,82,83,'PNAAAA','ADIAAA','OOOOxx'
+3613,5487,1,1,3,13,13,613,1613,3613,3613,26,27,'ZIAAAA','BDIAAA','VVVVxx'
+2461,5488,1,1,1,1,61,461,461,2461,2461,122,123,'RQAAAA','CDIAAA','AAAAxx'
+4567,5489,1,3,7,7,67,567,567,4567,4567,134,135,'RTAAAA','DDIAAA','HHHHxx'
+2906,5490,0,2,6,6,6,906,906,2906,2906,12,13,'UHAAAA','EDIAAA','OOOOxx'
+4848,5491,0,0,8,8,48,848,848,4848,4848,96,97,'MEAAAA','FDIAAA','VVVVxx'
+6614,5492,0,2,4,14,14,614,614,1614,6614,28,29,'KUAAAA','GDIAAA','AAAAxx'
+6200,5493,0,0,0,0,0,200,200,1200,6200,0,1,'MEAAAA','HDIAAA','HHHHxx'
+7895,5494,1,3,5,15,95,895,1895,2895,7895,190,191,'RRAAAA','IDIAAA','OOOOxx'
+6829,5495,1,1,9,9,29,829,829,1829,6829,58,59,'RCAAAA','JDIAAA','VVVVxx'
+4087,5496,1,3,7,7,87,87,87,4087,4087,174,175,'FBAAAA','KDIAAA','AAAAxx'
+8787,5497,1,3,7,7,87,787,787,3787,8787,174,175,'ZZAAAA','LDIAAA','HHHHxx'
+3322,5498,0,2,2,2,22,322,1322,3322,3322,44,45,'UXAAAA','MDIAAA','OOOOxx'
+9091,5499,1,3,1,11,91,91,1091,4091,9091,182,183,'RLAAAA','NDIAAA','VVVVxx'
+5268,5500,0,0,8,8,68,268,1268,268,5268,136,137,'QUAAAA','ODIAAA','AAAAxx'
+2719,5501,1,3,9,19,19,719,719,2719,2719,38,39,'PAAAAA','PDIAAA','HHHHxx'
+30,5502,0,2,0,10,30,30,30,30,30,60,61,'EBAAAA','QDIAAA','OOOOxx'
+1975,5503,1,3,5,15,75,975,1975,1975,1975,150,151,'ZXAAAA','RDIAAA','VVVVxx'
+2641,5504,1,1,1,1,41,641,641,2641,2641,82,83,'PXAAAA','SDIAAA','AAAAxx'
+8616,5505,0,0,6,16,16,616,616,3616,8616,32,33,'KTAAAA','TDIAAA','HHHHxx'
+5980,5506,0,0,0,0,80,980,1980,980,5980,160,161,'AWAAAA','UDIAAA','OOOOxx'
+5170,5507,0,2,0,10,70,170,1170,170,5170,140,141,'WQAAAA','VDIAAA','VVVVxx'
+1960,5508,0,0,0,0,60,960,1960,1960,1960,120,121,'KXAAAA','WDIAAA','AAAAxx'
+8141,5509,1,1,1,1,41,141,141,3141,8141,82,83,'DBAAAA','XDIAAA','HHHHxx'
+6692,5510,0,0,2,12,92,692,692,1692,6692,184,185,'KXAAAA','YDIAAA','OOOOxx'
+7621,5511,1,1,1,1,21,621,1621,2621,7621,42,43,'DHAAAA','ZDIAAA','VVVVxx'
+3890,5512,0,2,0,10,90,890,1890,3890,3890,180,181,'QTAAAA','AEIAAA','AAAAxx'
+4300,5513,0,0,0,0,0,300,300,4300,4300,0,1,'KJAAAA','BEIAAA','HHHHxx'
+736,5514,0,0,6,16,36,736,736,736,736,72,73,'ICAAAA','CEIAAA','OOOOxx'
+6626,5515,0,2,6,6,26,626,626,1626,6626,52,53,'WUAAAA','DEIAAA','VVVVxx'
+1800,5516,0,0,0,0,0,800,1800,1800,1800,0,1,'GRAAAA','EEIAAA','AAAAxx'
+3430,5517,0,2,0,10,30,430,1430,3430,3430,60,61,'YBAAAA','FEIAAA','HHHHxx'
+9519,5518,1,3,9,19,19,519,1519,4519,9519,38,39,'DCAAAA','GEIAAA','OOOOxx'
+5111,5519,1,3,1,11,11,111,1111,111,5111,22,23,'POAAAA','HEIAAA','VVVVxx'
+6915,5520,1,3,5,15,15,915,915,1915,6915,30,31,'ZFAAAA','IEIAAA','AAAAxx'
+9246,5521,0,2,6,6,46,246,1246,4246,9246,92,93,'QRAAAA','JEIAAA','HHHHxx'
+5141,5522,1,1,1,1,41,141,1141,141,5141,82,83,'TPAAAA','KEIAAA','OOOOxx'
+5922,5523,0,2,2,2,22,922,1922,922,5922,44,45,'UTAAAA','LEIAAA','VVVVxx'
+3087,5524,1,3,7,7,87,87,1087,3087,3087,174,175,'TOAAAA','MEIAAA','AAAAxx'
+1859,5525,1,3,9,19,59,859,1859,1859,1859,118,119,'NTAAAA','NEIAAA','HHHHxx'
+8482,5526,0,2,2,2,82,482,482,3482,8482,164,165,'GOAAAA','OEIAAA','OOOOxx'
+8414,5527,0,2,4,14,14,414,414,3414,8414,28,29,'QLAAAA','PEIAAA','VVVVxx'
+6662,5528,0,2,2,2,62,662,662,1662,6662,124,125,'GWAAAA','QEIAAA','AAAAxx'
+8614,5529,0,2,4,14,14,614,614,3614,8614,28,29,'ITAAAA','REIAAA','HHHHxx'
+42,5530,0,2,2,2,42,42,42,42,42,84,85,'QBAAAA','SEIAAA','OOOOxx'
+7582,5531,0,2,2,2,82,582,1582,2582,7582,164,165,'QFAAAA','TEIAAA','VVVVxx'
+8183,5532,1,3,3,3,83,183,183,3183,8183,166,167,'TCAAAA','UEIAAA','AAAAxx'
+1299,5533,1,3,9,19,99,299,1299,1299,1299,198,199,'ZXAAAA','VEIAAA','HHHHxx'
+7004,5534,0,0,4,4,4,4,1004,2004,7004,8,9,'KJAAAA','WEIAAA','OOOOxx'
+3298,5535,0,2,8,18,98,298,1298,3298,3298,196,197,'WWAAAA','XEIAAA','VVVVxx'
+7884,5536,0,0,4,4,84,884,1884,2884,7884,168,169,'GRAAAA','YEIAAA','AAAAxx'
+4191,5537,1,3,1,11,91,191,191,4191,4191,182,183,'FFAAAA','ZEIAAA','HHHHxx'
+7346,5538,0,2,6,6,46,346,1346,2346,7346,92,93,'OWAAAA','AFIAAA','OOOOxx'
+7989,5539,1,1,9,9,89,989,1989,2989,7989,178,179,'HVAAAA','BFIAAA','VVVVxx'
+5719,5540,1,3,9,19,19,719,1719,719,5719,38,39,'ZLAAAA','CFIAAA','AAAAxx'
+800,5541,0,0,0,0,0,800,800,800,800,0,1,'UEAAAA','DFIAAA','HHHHxx'
+6509,5542,1,1,9,9,9,509,509,1509,6509,18,19,'JQAAAA','EFIAAA','OOOOxx'
+4672,5543,0,0,2,12,72,672,672,4672,4672,144,145,'SXAAAA','FFIAAA','VVVVxx'
+4434,5544,0,2,4,14,34,434,434,4434,4434,68,69,'OOAAAA','GFIAAA','AAAAxx'
+8309,5545,1,1,9,9,9,309,309,3309,8309,18,19,'PHAAAA','HFIAAA','HHHHxx'
+5134,5546,0,2,4,14,34,134,1134,134,5134,68,69,'MPAAAA','IFIAAA','OOOOxx'
+5153,5547,1,1,3,13,53,153,1153,153,5153,106,107,'FQAAAA','JFIAAA','VVVVxx'
+1522,5548,0,2,2,2,22,522,1522,1522,1522,44,45,'OGAAAA','KFIAAA','AAAAxx'
+8629,5549,1,1,9,9,29,629,629,3629,8629,58,59,'XTAAAA','LFIAAA','HHHHxx'
+4549,5550,1,1,9,9,49,549,549,4549,4549,98,99,'ZSAAAA','MFIAAA','OOOOxx'
+9506,5551,0,2,6,6,6,506,1506,4506,9506,12,13,'QBAAAA','NFIAAA','VVVVxx'
+6542,5552,0,2,2,2,42,542,542,1542,6542,84,85,'QRAAAA','OFIAAA','AAAAxx'
+2579,5553,1,3,9,19,79,579,579,2579,2579,158,159,'FVAAAA','PFIAAA','HHHHxx'
+4664,5554,0,0,4,4,64,664,664,4664,4664,128,129,'KXAAAA','QFIAAA','OOOOxx'
+696,5555,0,0,6,16,96,696,696,696,696,192,193,'UAAAAA','RFIAAA','VVVVxx'
+7950,5556,0,2,0,10,50,950,1950,2950,7950,100,101,'UTAAAA','SFIAAA','AAAAxx'
+5,5557,1,1,5,5,5,5,5,5,5,10,11,'FAAAAA','TFIAAA','HHHHxx'
+7806,5558,0,2,6,6,6,806,1806,2806,7806,12,13,'GOAAAA','UFIAAA','OOOOxx'
+2770,5559,0,2,0,10,70,770,770,2770,2770,140,141,'OCAAAA','VFIAAA','VVVVxx'
+1344,5560,0,0,4,4,44,344,1344,1344,1344,88,89,'SZAAAA','WFIAAA','AAAAxx'
+511,5561,1,3,1,11,11,511,511,511,511,22,23,'RTAAAA','XFIAAA','HHHHxx'
+9070,5562,0,2,0,10,70,70,1070,4070,9070,140,141,'WKAAAA','YFIAAA','OOOOxx'
+2961,5563,1,1,1,1,61,961,961,2961,2961,122,123,'XJAAAA','ZFIAAA','VVVVxx'
+8031,5564,1,3,1,11,31,31,31,3031,8031,62,63,'XWAAAA','AGIAAA','AAAAxx'
+326,5565,0,2,6,6,26,326,326,326,326,52,53,'OMAAAA','BGIAAA','HHHHxx'
+183,5566,1,3,3,3,83,183,183,183,183,166,167,'BHAAAA','CGIAAA','OOOOxx'
+5917,5567,1,1,7,17,17,917,1917,917,5917,34,35,'PTAAAA','DGIAAA','VVVVxx'
+8256,5568,0,0,6,16,56,256,256,3256,8256,112,113,'OFAAAA','EGIAAA','AAAAxx'
+7889,5569,1,1,9,9,89,889,1889,2889,7889,178,179,'LRAAAA','FGIAAA','HHHHxx'
+9029,5570,1,1,9,9,29,29,1029,4029,9029,58,59,'HJAAAA','GGIAAA','OOOOxx'
+1316,5571,0,0,6,16,16,316,1316,1316,1316,32,33,'QYAAAA','HGIAAA','VVVVxx'
+7442,5572,0,2,2,2,42,442,1442,2442,7442,84,85,'GAAAAA','IGIAAA','AAAAxx'
+2810,5573,0,2,0,10,10,810,810,2810,2810,20,21,'CEAAAA','JGIAAA','HHHHxx'
+20,5574,0,0,0,0,20,20,20,20,20,40,41,'UAAAAA','KGIAAA','OOOOxx'
+2306,5575,0,2,6,6,6,306,306,2306,2306,12,13,'SKAAAA','LGIAAA','VVVVxx'
+4694,5576,0,2,4,14,94,694,694,4694,4694,188,189,'OYAAAA','MGIAAA','AAAAxx'
+9710,5577,0,2,0,10,10,710,1710,4710,9710,20,21,'MJAAAA','NGIAAA','HHHHxx'
+1791,5578,1,3,1,11,91,791,1791,1791,1791,182,183,'XQAAAA','OGIAAA','OOOOxx'
+6730,5579,0,2,0,10,30,730,730,1730,6730,60,61,'WYAAAA','PGIAAA','VVVVxx'
+359,5580,1,3,9,19,59,359,359,359,359,118,119,'VNAAAA','QGIAAA','AAAAxx'
+8097,5581,1,1,7,17,97,97,97,3097,8097,194,195,'LZAAAA','RGIAAA','HHHHxx'
+6147,5582,1,3,7,7,47,147,147,1147,6147,94,95,'LCAAAA','SGIAAA','OOOOxx'
+643,5583,1,3,3,3,43,643,643,643,643,86,87,'TYAAAA','TGIAAA','VVVVxx'
+698,5584,0,2,8,18,98,698,698,698,698,196,197,'WAAAAA','UGIAAA','AAAAxx'
+3881,5585,1,1,1,1,81,881,1881,3881,3881,162,163,'HTAAAA','VGIAAA','HHHHxx'
+7600,5586,0,0,0,0,0,600,1600,2600,7600,0,1,'IGAAAA','WGIAAA','OOOOxx'
+1583,5587,1,3,3,3,83,583,1583,1583,1583,166,167,'XIAAAA','XGIAAA','VVVVxx'
+9612,5588,0,0,2,12,12,612,1612,4612,9612,24,25,'SFAAAA','YGIAAA','AAAAxx'
+1032,5589,0,0,2,12,32,32,1032,1032,1032,64,65,'SNAAAA','ZGIAAA','HHHHxx'
+4834,5590,0,2,4,14,34,834,834,4834,4834,68,69,'YDAAAA','AHIAAA','OOOOxx'
+5076,5591,0,0,6,16,76,76,1076,76,5076,152,153,'GNAAAA','BHIAAA','VVVVxx'
+3070,5592,0,2,0,10,70,70,1070,3070,3070,140,141,'COAAAA','CHIAAA','AAAAxx'
+1421,5593,1,1,1,1,21,421,1421,1421,1421,42,43,'RCAAAA','DHIAAA','HHHHxx'
+8970,5594,0,2,0,10,70,970,970,3970,8970,140,141,'AHAAAA','EHIAAA','OOOOxx'
+6271,5595,1,3,1,11,71,271,271,1271,6271,142,143,'FHAAAA','FHIAAA','VVVVxx'
+8547,5596,1,3,7,7,47,547,547,3547,8547,94,95,'TQAAAA','GHIAAA','AAAAxx'
+1259,5597,1,3,9,19,59,259,1259,1259,1259,118,119,'LWAAAA','HHIAAA','HHHHxx'
+8328,5598,0,0,8,8,28,328,328,3328,8328,56,57,'IIAAAA','IHIAAA','OOOOxx'
+1503,5599,1,3,3,3,3,503,1503,1503,1503,6,7,'VFAAAA','JHIAAA','VVVVxx'
+2253,5600,1,1,3,13,53,253,253,2253,2253,106,107,'RIAAAA','KHIAAA','AAAAxx'
+7449,5601,1,1,9,9,49,449,1449,2449,7449,98,99,'NAAAAA','LHIAAA','HHHHxx'
+3579,5602,1,3,9,19,79,579,1579,3579,3579,158,159,'RHAAAA','MHIAAA','OOOOxx'
+1585,5603,1,1,5,5,85,585,1585,1585,1585,170,171,'ZIAAAA','NHIAAA','VVVVxx'
+5543,5604,1,3,3,3,43,543,1543,543,5543,86,87,'FFAAAA','OHIAAA','AAAAxx'
+8627,5605,1,3,7,7,27,627,627,3627,8627,54,55,'VTAAAA','PHIAAA','HHHHxx'
+8618,5606,0,2,8,18,18,618,618,3618,8618,36,37,'MTAAAA','QHIAAA','OOOOxx'
+1911,5607,1,3,1,11,11,911,1911,1911,1911,22,23,'NVAAAA','RHIAAA','VVVVxx'
+2758,5608,0,2,8,18,58,758,758,2758,2758,116,117,'CCAAAA','SHIAAA','AAAAxx'
+5744,5609,0,0,4,4,44,744,1744,744,5744,88,89,'YMAAAA','THIAAA','HHHHxx'
+4976,5610,0,0,6,16,76,976,976,4976,4976,152,153,'KJAAAA','UHIAAA','OOOOxx'
+6380,5611,0,0,0,0,80,380,380,1380,6380,160,161,'KLAAAA','VHIAAA','VVVVxx'
+1937,5612,1,1,7,17,37,937,1937,1937,1937,74,75,'NWAAAA','WHIAAA','AAAAxx'
+9903,5613,1,3,3,3,3,903,1903,4903,9903,6,7,'XQAAAA','XHIAAA','HHHHxx'
+4409,5614,1,1,9,9,9,409,409,4409,4409,18,19,'PNAAAA','YHIAAA','OOOOxx'
+4133,5615,1,1,3,13,33,133,133,4133,4133,66,67,'ZCAAAA','ZHIAAA','VVVVxx'
+5263,5616,1,3,3,3,63,263,1263,263,5263,126,127,'LUAAAA','AIIAAA','AAAAxx'
+7888,5617,0,0,8,8,88,888,1888,2888,7888,176,177,'KRAAAA','BIIAAA','HHHHxx'
+6060,5618,0,0,0,0,60,60,60,1060,6060,120,121,'CZAAAA','CIIAAA','OOOOxx'
+2522,5619,0,2,2,2,22,522,522,2522,2522,44,45,'ATAAAA','DIIAAA','VVVVxx'
+5550,5620,0,2,0,10,50,550,1550,550,5550,100,101,'MFAAAA','EIIAAA','AAAAxx'
+9396,5621,0,0,6,16,96,396,1396,4396,9396,192,193,'KXAAAA','FIIAAA','HHHHxx'
+176,5622,0,0,6,16,76,176,176,176,176,152,153,'UGAAAA','GIIAAA','OOOOxx'
+5148,5623,0,0,8,8,48,148,1148,148,5148,96,97,'AQAAAA','HIIAAA','VVVVxx'
+6691,5624,1,3,1,11,91,691,691,1691,6691,182,183,'JXAAAA','IIIAAA','AAAAxx'
+4652,5625,0,0,2,12,52,652,652,4652,4652,104,105,'YWAAAA','JIIAAA','HHHHxx'
+5096,5626,0,0,6,16,96,96,1096,96,5096,192,193,'AOAAAA','KIIAAA','OOOOxx'
+2408,5627,0,0,8,8,8,408,408,2408,2408,16,17,'QOAAAA','LIIAAA','VVVVxx'
+7322,5628,0,2,2,2,22,322,1322,2322,7322,44,45,'QVAAAA','MIIAAA','AAAAxx'
+6782,5629,0,2,2,2,82,782,782,1782,6782,164,165,'WAAAAA','NIIAAA','HHHHxx'
+4642,5630,0,2,2,2,42,642,642,4642,4642,84,85,'OWAAAA','OIIAAA','OOOOxx'
+5427,5631,1,3,7,7,27,427,1427,427,5427,54,55,'TAAAAA','PIIAAA','VVVVxx'
+4461,5632,1,1,1,1,61,461,461,4461,4461,122,123,'PPAAAA','QIIAAA','AAAAxx'
+8416,5633,0,0,6,16,16,416,416,3416,8416,32,33,'SLAAAA','RIIAAA','HHHHxx'
+2593,5634,1,1,3,13,93,593,593,2593,2593,186,187,'TVAAAA','SIIAAA','OOOOxx'
+6202,5635,0,2,2,2,2,202,202,1202,6202,4,5,'OEAAAA','TIIAAA','VVVVxx'
+3826,5636,0,2,6,6,26,826,1826,3826,3826,52,53,'ERAAAA','UIIAAA','AAAAxx'
+4417,5637,1,1,7,17,17,417,417,4417,4417,34,35,'XNAAAA','VIIAAA','HHHHxx'
+7871,5638,1,3,1,11,71,871,1871,2871,7871,142,143,'TQAAAA','WIIAAA','OOOOxx'
+5622,5639,0,2,2,2,22,622,1622,622,5622,44,45,'GIAAAA','XIIAAA','VVVVxx'
+3010,5640,0,2,0,10,10,10,1010,3010,3010,20,21,'ULAAAA','YIIAAA','AAAAxx'
+3407,5641,1,3,7,7,7,407,1407,3407,3407,14,15,'BBAAAA','ZIIAAA','HHHHxx'
+1274,5642,0,2,4,14,74,274,1274,1274,1274,148,149,'AXAAAA','AJIAAA','OOOOxx'
+2828,5643,0,0,8,8,28,828,828,2828,2828,56,57,'UEAAAA','BJIAAA','VVVVxx'
+3427,5644,1,3,7,7,27,427,1427,3427,3427,54,55,'VBAAAA','CJIAAA','AAAAxx'
+612,5645,0,0,2,12,12,612,612,612,612,24,25,'OXAAAA','DJIAAA','HHHHxx'
+8729,5646,1,1,9,9,29,729,729,3729,8729,58,59,'TXAAAA','EJIAAA','OOOOxx'
+1239,5647,1,3,9,19,39,239,1239,1239,1239,78,79,'RVAAAA','FJIAAA','VVVVxx'
+8990,5648,0,2,0,10,90,990,990,3990,8990,180,181,'UHAAAA','GJIAAA','AAAAxx'
+5609,5649,1,1,9,9,9,609,1609,609,5609,18,19,'THAAAA','HJIAAA','HHHHxx'
+4441,5650,1,1,1,1,41,441,441,4441,4441,82,83,'VOAAAA','IJIAAA','OOOOxx'
+9078,5651,0,2,8,18,78,78,1078,4078,9078,156,157,'ELAAAA','JJIAAA','VVVVxx'
+6699,5652,1,3,9,19,99,699,699,1699,6699,198,199,'RXAAAA','KJIAAA','AAAAxx'
+8390,5653,0,2,0,10,90,390,390,3390,8390,180,181,'SKAAAA','LJIAAA','HHHHxx'
+5455,5654,1,3,5,15,55,455,1455,455,5455,110,111,'VBAAAA','MJIAAA','OOOOxx'
+7537,5655,1,1,7,17,37,537,1537,2537,7537,74,75,'XDAAAA','NJIAAA','VVVVxx'
+4669,5656,1,1,9,9,69,669,669,4669,4669,138,139,'PXAAAA','OJIAAA','AAAAxx'
+5534,5657,0,2,4,14,34,534,1534,534,5534,68,69,'WEAAAA','PJIAAA','HHHHxx'
+1920,5658,0,0,0,0,20,920,1920,1920,1920,40,41,'WVAAAA','QJIAAA','OOOOxx'
+9465,5659,1,1,5,5,65,465,1465,4465,9465,130,131,'BAAAAA','RJIAAA','VVVVxx'
+4897,5660,1,1,7,17,97,897,897,4897,4897,194,195,'JGAAAA','SJIAAA','AAAAxx'
+1990,5661,0,2,0,10,90,990,1990,1990,1990,180,181,'OYAAAA','TJIAAA','HHHHxx'
+7148,5662,0,0,8,8,48,148,1148,2148,7148,96,97,'YOAAAA','UJIAAA','OOOOxx'
+533,5663,1,1,3,13,33,533,533,533,533,66,67,'NUAAAA','VJIAAA','VVVVxx'
+4339,5664,1,3,9,19,39,339,339,4339,4339,78,79,'XKAAAA','WJIAAA','AAAAxx'
+6450,5665,0,2,0,10,50,450,450,1450,6450,100,101,'COAAAA','XJIAAA','HHHHxx'
+9627,5666,1,3,7,7,27,627,1627,4627,9627,54,55,'HGAAAA','YJIAAA','OOOOxx'
+5539,5667,1,3,9,19,39,539,1539,539,5539,78,79,'BFAAAA','ZJIAAA','VVVVxx'
+6758,5668,0,2,8,18,58,758,758,1758,6758,116,117,'YZAAAA','AKIAAA','AAAAxx'
+3435,5669,1,3,5,15,35,435,1435,3435,3435,70,71,'DCAAAA','BKIAAA','HHHHxx'
+4350,5670,0,2,0,10,50,350,350,4350,4350,100,101,'ILAAAA','CKIAAA','OOOOxx'
+9088,5671,0,0,8,8,88,88,1088,4088,9088,176,177,'OLAAAA','DKIAAA','VVVVxx'
+6368,5672,0,0,8,8,68,368,368,1368,6368,136,137,'YKAAAA','EKIAAA','AAAAxx'
+6337,5673,1,1,7,17,37,337,337,1337,6337,74,75,'TJAAAA','FKIAAA','HHHHxx'
+4361,5674,1,1,1,1,61,361,361,4361,4361,122,123,'TLAAAA','GKIAAA','OOOOxx'
+1719,5675,1,3,9,19,19,719,1719,1719,1719,38,39,'DOAAAA','HKIAAA','VVVVxx'
+3109,5676,1,1,9,9,9,109,1109,3109,3109,18,19,'PPAAAA','IKIAAA','AAAAxx'
+7135,5677,1,3,5,15,35,135,1135,2135,7135,70,71,'LOAAAA','JKIAAA','HHHHxx'
+1964,5678,0,0,4,4,64,964,1964,1964,1964,128,129,'OXAAAA','KKIAAA','OOOOxx'
+3,5679,1,3,3,3,3,3,3,3,3,6,7,'DAAAAA','LKIAAA','VVVVxx'
+1868,5680,0,0,8,8,68,868,1868,1868,1868,136,137,'WTAAAA','MKIAAA','AAAAxx'
+5182,5681,0,2,2,2,82,182,1182,182,5182,164,165,'IRAAAA','NKIAAA','HHHHxx'
+7567,5682,1,3,7,7,67,567,1567,2567,7567,134,135,'BFAAAA','OKIAAA','OOOOxx'
+3676,5683,0,0,6,16,76,676,1676,3676,3676,152,153,'KLAAAA','PKIAAA','VVVVxx'
+9382,5684,0,2,2,2,82,382,1382,4382,9382,164,165,'WWAAAA','QKIAAA','AAAAxx'
+8645,5685,1,1,5,5,45,645,645,3645,8645,90,91,'NUAAAA','RKIAAA','HHHHxx'
+2018,5686,0,2,8,18,18,18,18,2018,2018,36,37,'QZAAAA','SKIAAA','OOOOxx'
+217,5687,1,1,7,17,17,217,217,217,217,34,35,'JIAAAA','TKIAAA','VVVVxx'
+6793,5688,1,1,3,13,93,793,793,1793,6793,186,187,'HBAAAA','UKIAAA','AAAAxx'
+7280,5689,0,0,0,0,80,280,1280,2280,7280,160,161,'AUAAAA','VKIAAA','HHHHxx'
+2168,5690,0,0,8,8,68,168,168,2168,2168,136,137,'KFAAAA','WKIAAA','OOOOxx'
+5259,5691,1,3,9,19,59,259,1259,259,5259,118,119,'HUAAAA','XKIAAA','VVVVxx'
+6019,5692,1,3,9,19,19,19,19,1019,6019,38,39,'NXAAAA','YKIAAA','AAAAxx'
+877,5693,1,1,7,17,77,877,877,877,877,154,155,'THAAAA','ZKIAAA','HHHHxx'
+4961,5694,1,1,1,1,61,961,961,4961,4961,122,123,'VIAAAA','ALIAAA','OOOOxx'
+1873,5695,1,1,3,13,73,873,1873,1873,1873,146,147,'BUAAAA','BLIAAA','VVVVxx'
+13,5696,1,1,3,13,13,13,13,13,13,26,27,'NAAAAA','CLIAAA','AAAAxx'
+1537,5697,1,1,7,17,37,537,1537,1537,1537,74,75,'DHAAAA','DLIAAA','HHHHxx'
+3129,5698,1,1,9,9,29,129,1129,3129,3129,58,59,'JQAAAA','ELIAAA','OOOOxx'
+6473,5699,1,1,3,13,73,473,473,1473,6473,146,147,'ZOAAAA','FLIAAA','VVVVxx'
+7865,5700,1,1,5,5,65,865,1865,2865,7865,130,131,'NQAAAA','GLIAAA','AAAAxx'
+7822,5701,0,2,2,2,22,822,1822,2822,7822,44,45,'WOAAAA','HLIAAA','HHHHxx'
+239,5702,1,3,9,19,39,239,239,239,239,78,79,'FJAAAA','ILIAAA','OOOOxx'
+2062,5703,0,2,2,2,62,62,62,2062,2062,124,125,'IBAAAA','JLIAAA','VVVVxx'
+762,5704,0,2,2,2,62,762,762,762,762,124,125,'IDAAAA','KLIAAA','AAAAxx'
+3764,5705,0,0,4,4,64,764,1764,3764,3764,128,129,'UOAAAA','LLIAAA','HHHHxx'
+465,5706,1,1,5,5,65,465,465,465,465,130,131,'XRAAAA','MLIAAA','OOOOxx'
+2587,5707,1,3,7,7,87,587,587,2587,2587,174,175,'NVAAAA','NLIAAA','VVVVxx'
+8402,5708,0,2,2,2,2,402,402,3402,8402,4,5,'ELAAAA','OLIAAA','AAAAxx'
+1055,5709,1,3,5,15,55,55,1055,1055,1055,110,111,'POAAAA','PLIAAA','HHHHxx'
+3072,5710,0,0,2,12,72,72,1072,3072,3072,144,145,'EOAAAA','QLIAAA','OOOOxx'
+7359,5711,1,3,9,19,59,359,1359,2359,7359,118,119,'BXAAAA','RLIAAA','VVVVxx'
+6558,5712,0,2,8,18,58,558,558,1558,6558,116,117,'GSAAAA','SLIAAA','AAAAxx'
+48,5713,0,0,8,8,48,48,48,48,48,96,97,'WBAAAA','TLIAAA','HHHHxx'
+5382,5714,0,2,2,2,82,382,1382,382,5382,164,165,'AZAAAA','ULIAAA','OOOOxx'
+947,5715,1,3,7,7,47,947,947,947,947,94,95,'LKAAAA','VLIAAA','VVVVxx'
+2644,5716,0,0,4,4,44,644,644,2644,2644,88,89,'SXAAAA','WLIAAA','AAAAxx'
+7516,5717,0,0,6,16,16,516,1516,2516,7516,32,33,'CDAAAA','XLIAAA','HHHHxx'
+2362,5718,0,2,2,2,62,362,362,2362,2362,124,125,'WMAAAA','YLIAAA','OOOOxx'
+839,5719,1,3,9,19,39,839,839,839,839,78,79,'HGAAAA','ZLIAAA','VVVVxx'
+2216,5720,0,0,6,16,16,216,216,2216,2216,32,33,'GHAAAA','AMIAAA','AAAAxx'
+7673,5721,1,1,3,13,73,673,1673,2673,7673,146,147,'DJAAAA','BMIAAA','HHHHxx'
+8173,5722,1,1,3,13,73,173,173,3173,8173,146,147,'JCAAAA','CMIAAA','OOOOxx'
+1630,5723,0,2,0,10,30,630,1630,1630,1630,60,61,'SKAAAA','DMIAAA','VVVVxx'
+9057,5724,1,1,7,17,57,57,1057,4057,9057,114,115,'JKAAAA','EMIAAA','AAAAxx'
+4392,5725,0,0,2,12,92,392,392,4392,4392,184,185,'YMAAAA','FMIAAA','HHHHxx'
+3695,5726,1,3,5,15,95,695,1695,3695,3695,190,191,'DMAAAA','GMIAAA','OOOOxx'
+5751,5727,1,3,1,11,51,751,1751,751,5751,102,103,'FNAAAA','HMIAAA','VVVVxx'
+5745,5728,1,1,5,5,45,745,1745,745,5745,90,91,'ZMAAAA','IMIAAA','AAAAxx'
+7945,5729,1,1,5,5,45,945,1945,2945,7945,90,91,'PTAAAA','JMIAAA','HHHHxx'
+5174,5730,0,2,4,14,74,174,1174,174,5174,148,149,'ARAAAA','KMIAAA','OOOOxx'
+3829,5731,1,1,9,9,29,829,1829,3829,3829,58,59,'HRAAAA','LMIAAA','VVVVxx'
+3317,5732,1,1,7,17,17,317,1317,3317,3317,34,35,'PXAAAA','MMIAAA','AAAAxx'
+4253,5733,1,1,3,13,53,253,253,4253,4253,106,107,'PHAAAA','NMIAAA','HHHHxx'
+1291,5734,1,3,1,11,91,291,1291,1291,1291,182,183,'RXAAAA','OMIAAA','OOOOxx'
+3266,5735,0,2,6,6,66,266,1266,3266,3266,132,133,'QVAAAA','PMIAAA','VVVVxx'
+2939,5736,1,3,9,19,39,939,939,2939,2939,78,79,'BJAAAA','QMIAAA','AAAAxx'
+2755,5737,1,3,5,15,55,755,755,2755,2755,110,111,'ZBAAAA','RMIAAA','HHHHxx'
+6844,5738,0,0,4,4,44,844,844,1844,6844,88,89,'GDAAAA','SMIAAA','OOOOxx'
+8594,5739,0,2,4,14,94,594,594,3594,8594,188,189,'OSAAAA','TMIAAA','VVVVxx'
+704,5740,0,0,4,4,4,704,704,704,704,8,9,'CBAAAA','UMIAAA','AAAAxx'
+1681,5741,1,1,1,1,81,681,1681,1681,1681,162,163,'RMAAAA','VMIAAA','HHHHxx'
+364,5742,0,0,4,4,64,364,364,364,364,128,129,'AOAAAA','WMIAAA','OOOOxx'
+2928,5743,0,0,8,8,28,928,928,2928,2928,56,57,'QIAAAA','XMIAAA','VVVVxx'
+117,5744,1,1,7,17,17,117,117,117,117,34,35,'NEAAAA','YMIAAA','AAAAxx'
+96,5745,0,0,6,16,96,96,96,96,96,192,193,'SDAAAA','ZMIAAA','HHHHxx'
+7796,5746,0,0,6,16,96,796,1796,2796,7796,192,193,'WNAAAA','ANIAAA','OOOOxx'
+3101,5747,1,1,1,1,1,101,1101,3101,3101,2,3,'HPAAAA','BNIAAA','VVVVxx'
+3397,5748,1,1,7,17,97,397,1397,3397,3397,194,195,'RAAAAA','CNIAAA','AAAAxx'
+1605,5749,1,1,5,5,5,605,1605,1605,1605,10,11,'TJAAAA','DNIAAA','HHHHxx'
+4881,5750,1,1,1,1,81,881,881,4881,4881,162,163,'TFAAAA','ENIAAA','OOOOxx'
+4521,5751,1,1,1,1,21,521,521,4521,4521,42,43,'XRAAAA','FNIAAA','VVVVxx'
+6430,5752,0,2,0,10,30,430,430,1430,6430,60,61,'INAAAA','GNIAAA','AAAAxx'
+282,5753,0,2,2,2,82,282,282,282,282,164,165,'WKAAAA','HNIAAA','HHHHxx'
+9645,5754,1,1,5,5,45,645,1645,4645,9645,90,91,'ZGAAAA','INIAAA','OOOOxx'
+8946,5755,0,2,6,6,46,946,946,3946,8946,92,93,'CGAAAA','JNIAAA','VVVVxx'
+5064,5756,0,0,4,4,64,64,1064,64,5064,128,129,'UMAAAA','KNIAAA','AAAAxx'
+7470,5757,0,2,0,10,70,470,1470,2470,7470,140,141,'IBAAAA','LNIAAA','HHHHxx'
+5886,5758,0,2,6,6,86,886,1886,886,5886,172,173,'KSAAAA','MNIAAA','OOOOxx'
+6280,5759,0,0,0,0,80,280,280,1280,6280,160,161,'OHAAAA','NNIAAA','VVVVxx'
+5247,5760,1,3,7,7,47,247,1247,247,5247,94,95,'VTAAAA','ONIAAA','AAAAxx'
+412,5761,0,0,2,12,12,412,412,412,412,24,25,'WPAAAA','PNIAAA','HHHHxx'
+5342,5762,0,2,2,2,42,342,1342,342,5342,84,85,'MXAAAA','QNIAAA','OOOOxx'
+2271,5763,1,3,1,11,71,271,271,2271,2271,142,143,'JJAAAA','RNIAAA','VVVVxx'
+849,5764,1,1,9,9,49,849,849,849,849,98,99,'RGAAAA','SNIAAA','AAAAxx'
+1885,5765,1,1,5,5,85,885,1885,1885,1885,170,171,'NUAAAA','TNIAAA','HHHHxx'
+5620,5766,0,0,0,0,20,620,1620,620,5620,40,41,'EIAAAA','UNIAAA','OOOOxx'
+7079,5767,1,3,9,19,79,79,1079,2079,7079,158,159,'HMAAAA','VNIAAA','VVVVxx'
+5819,5768,1,3,9,19,19,819,1819,819,5819,38,39,'VPAAAA','WNIAAA','AAAAxx'
+7497,5769,1,1,7,17,97,497,1497,2497,7497,194,195,'JCAAAA','XNIAAA','HHHHxx'
+5993,5770,1,1,3,13,93,993,1993,993,5993,186,187,'NWAAAA','YNIAAA','OOOOxx'
+3739,5771,1,3,9,19,39,739,1739,3739,3739,78,79,'VNAAAA','ZNIAAA','VVVVxx'
+6296,5772,0,0,6,16,96,296,296,1296,6296,192,193,'EIAAAA','AOIAAA','AAAAxx'
+2716,5773,0,0,6,16,16,716,716,2716,2716,32,33,'MAAAAA','BOIAAA','HHHHxx'
+1130,5774,0,2,0,10,30,130,1130,1130,1130,60,61,'MRAAAA','COIAAA','OOOOxx'
+5593,5775,1,1,3,13,93,593,1593,593,5593,186,187,'DHAAAA','DOIAAA','VVVVxx'
+6972,5776,0,0,2,12,72,972,972,1972,6972,144,145,'EIAAAA','EOIAAA','AAAAxx'
+8360,5777,0,0,0,0,60,360,360,3360,8360,120,121,'OJAAAA','FOIAAA','HHHHxx'
+6448,5778,0,0,8,8,48,448,448,1448,6448,96,97,'AOAAAA','GOIAAA','OOOOxx'
+3689,5779,1,1,9,9,89,689,1689,3689,3689,178,179,'XLAAAA','HOIAAA','VVVVxx'
+7951,5780,1,3,1,11,51,951,1951,2951,7951,102,103,'VTAAAA','IOIAAA','AAAAxx'
+2974,5781,0,2,4,14,74,974,974,2974,2974,148,149,'KKAAAA','JOIAAA','HHHHxx'
+6600,5782,0,0,0,0,0,600,600,1600,6600,0,1,'WTAAAA','KOIAAA','OOOOxx'
+4662,5783,0,2,2,2,62,662,662,4662,4662,124,125,'IXAAAA','LOIAAA','VVVVxx'
+4765,5784,1,1,5,5,65,765,765,4765,4765,130,131,'HBAAAA','MOIAAA','AAAAxx'
+355,5785,1,3,5,15,55,355,355,355,355,110,111,'RNAAAA','NOIAAA','HHHHxx'
+6228,5786,0,0,8,8,28,228,228,1228,6228,56,57,'OFAAAA','OOIAAA','OOOOxx'
+964,5787,0,0,4,4,64,964,964,964,964,128,129,'CLAAAA','POIAAA','VVVVxx'
+3082,5788,0,2,2,2,82,82,1082,3082,3082,164,165,'OOAAAA','QOIAAA','AAAAxx'
+7028,5789,0,0,8,8,28,28,1028,2028,7028,56,57,'IKAAAA','ROIAAA','HHHHxx'
+4505,5790,1,1,5,5,5,505,505,4505,4505,10,11,'HRAAAA','SOIAAA','OOOOxx'
+8961,5791,1,1,1,1,61,961,961,3961,8961,122,123,'RGAAAA','TOIAAA','VVVVxx'
+9571,5792,1,3,1,11,71,571,1571,4571,9571,142,143,'DEAAAA','UOIAAA','AAAAxx'
+9394,5793,0,2,4,14,94,394,1394,4394,9394,188,189,'IXAAAA','VOIAAA','HHHHxx'
+4245,5794,1,1,5,5,45,245,245,4245,4245,90,91,'HHAAAA','WOIAAA','OOOOxx'
+7560,5795,0,0,0,0,60,560,1560,2560,7560,120,121,'UEAAAA','XOIAAA','VVVVxx'
+2907,5796,1,3,7,7,7,907,907,2907,2907,14,15,'VHAAAA','YOIAAA','AAAAxx'
+7817,5797,1,1,7,17,17,817,1817,2817,7817,34,35,'ROAAAA','ZOIAAA','HHHHxx'
+5408,5798,0,0,8,8,8,408,1408,408,5408,16,17,'AAAAAA','APIAAA','OOOOxx'
+8092,5799,0,0,2,12,92,92,92,3092,8092,184,185,'GZAAAA','BPIAAA','VVVVxx'
+1309,5800,1,1,9,9,9,309,1309,1309,1309,18,19,'JYAAAA','CPIAAA','AAAAxx'
+6673,5801,1,1,3,13,73,673,673,1673,6673,146,147,'RWAAAA','DPIAAA','HHHHxx'
+1245,5802,1,1,5,5,45,245,1245,1245,1245,90,91,'XVAAAA','EPIAAA','OOOOxx'
+6790,5803,0,2,0,10,90,790,790,1790,6790,180,181,'EBAAAA','FPIAAA','VVVVxx'
+8380,5804,0,0,0,0,80,380,380,3380,8380,160,161,'IKAAAA','GPIAAA','AAAAxx'
+5786,5805,0,2,6,6,86,786,1786,786,5786,172,173,'OOAAAA','HPIAAA','HHHHxx'
+9590,5806,0,2,0,10,90,590,1590,4590,9590,180,181,'WEAAAA','IPIAAA','OOOOxx'
+5763,5807,1,3,3,3,63,763,1763,763,5763,126,127,'RNAAAA','JPIAAA','VVVVxx'
+1345,5808,1,1,5,5,45,345,1345,1345,1345,90,91,'TZAAAA','KPIAAA','AAAAxx'
+3480,5809,0,0,0,0,80,480,1480,3480,3480,160,161,'WDAAAA','LPIAAA','HHHHxx'
+7864,5810,0,0,4,4,64,864,1864,2864,7864,128,129,'MQAAAA','MPIAAA','OOOOxx'
+4853,5811,1,1,3,13,53,853,853,4853,4853,106,107,'REAAAA','NPIAAA','VVVVxx'
+1445,5812,1,1,5,5,45,445,1445,1445,1445,90,91,'PDAAAA','OPIAAA','AAAAxx'
+170,5813,0,2,0,10,70,170,170,170,170,140,141,'OGAAAA','PPIAAA','HHHHxx'
+7348,5814,0,0,8,8,48,348,1348,2348,7348,96,97,'QWAAAA','QPIAAA','OOOOxx'
+3920,5815,0,0,0,0,20,920,1920,3920,3920,40,41,'UUAAAA','RPIAAA','VVVVxx'
+3307,5816,1,3,7,7,7,307,1307,3307,3307,14,15,'FXAAAA','SPIAAA','AAAAxx'
+4584,5817,0,0,4,4,84,584,584,4584,4584,168,169,'IUAAAA','TPIAAA','HHHHxx'
+3344,5818,0,0,4,4,44,344,1344,3344,3344,88,89,'QYAAAA','UPIAAA','OOOOxx'
+4360,5819,0,0,0,0,60,360,360,4360,4360,120,121,'SLAAAA','VPIAAA','VVVVxx'
+8757,5820,1,1,7,17,57,757,757,3757,8757,114,115,'VYAAAA','WPIAAA','AAAAxx'
+4315,5821,1,3,5,15,15,315,315,4315,4315,30,31,'ZJAAAA','XPIAAA','HHHHxx'
+5243,5822,1,3,3,3,43,243,1243,243,5243,86,87,'RTAAAA','YPIAAA','OOOOxx'
+8550,5823,0,2,0,10,50,550,550,3550,8550,100,101,'WQAAAA','ZPIAAA','VVVVxx'
+159,5824,1,3,9,19,59,159,159,159,159,118,119,'DGAAAA','AQIAAA','AAAAxx'
+4710,5825,0,2,0,10,10,710,710,4710,4710,20,21,'EZAAAA','BQIAAA','HHHHxx'
+7179,5826,1,3,9,19,79,179,1179,2179,7179,158,159,'DQAAAA','CQIAAA','OOOOxx'
+2509,5827,1,1,9,9,9,509,509,2509,2509,18,19,'NSAAAA','DQIAAA','VVVVxx'
+6981,5828,1,1,1,1,81,981,981,1981,6981,162,163,'NIAAAA','EQIAAA','AAAAxx'
+5060,5829,0,0,0,0,60,60,1060,60,5060,120,121,'QMAAAA','FQIAAA','HHHHxx'
+5601,5830,1,1,1,1,1,601,1601,601,5601,2,3,'LHAAAA','GQIAAA','OOOOxx'
+703,5831,1,3,3,3,3,703,703,703,703,6,7,'BBAAAA','HQIAAA','VVVVxx'
+8719,5832,1,3,9,19,19,719,719,3719,8719,38,39,'JXAAAA','IQIAAA','AAAAxx'
+1570,5833,0,2,0,10,70,570,1570,1570,1570,140,141,'KIAAAA','JQIAAA','HHHHxx'
+1036,5834,0,0,6,16,36,36,1036,1036,1036,72,73,'WNAAAA','KQIAAA','OOOOxx'
+6703,5835,1,3,3,3,3,703,703,1703,6703,6,7,'VXAAAA','LQIAAA','VVVVxx'
+252,5836,0,0,2,12,52,252,252,252,252,104,105,'SJAAAA','MQIAAA','AAAAxx'
+631,5837,1,3,1,11,31,631,631,631,631,62,63,'HYAAAA','NQIAAA','HHHHxx'
+5098,5838,0,2,8,18,98,98,1098,98,5098,196,197,'COAAAA','OQIAAA','OOOOxx'
+8346,5839,0,2,6,6,46,346,346,3346,8346,92,93,'AJAAAA','PQIAAA','VVVVxx'
+4910,5840,0,2,0,10,10,910,910,4910,4910,20,21,'WGAAAA','QQIAAA','AAAAxx'
+559,5841,1,3,9,19,59,559,559,559,559,118,119,'NVAAAA','RQIAAA','HHHHxx'
+1477,5842,1,1,7,17,77,477,1477,1477,1477,154,155,'VEAAAA','SQIAAA','OOOOxx'
+5115,5843,1,3,5,15,15,115,1115,115,5115,30,31,'TOAAAA','TQIAAA','VVVVxx'
+8784,5844,0,0,4,4,84,784,784,3784,8784,168,169,'WZAAAA','UQIAAA','AAAAxx'
+4422,5845,0,2,2,2,22,422,422,4422,4422,44,45,'COAAAA','VQIAAA','HHHHxx'
+2702,5846,0,2,2,2,2,702,702,2702,2702,4,5,'YZAAAA','WQIAAA','OOOOxx'
+9599,5847,1,3,9,19,99,599,1599,4599,9599,198,199,'FFAAAA','XQIAAA','VVVVxx'
+2463,5848,1,3,3,3,63,463,463,2463,2463,126,127,'TQAAAA','YQIAAA','AAAAxx'
+498,5849,0,2,8,18,98,498,498,498,498,196,197,'ETAAAA','ZQIAAA','HHHHxx'
+494,5850,0,2,4,14,94,494,494,494,494,188,189,'ATAAAA','ARIAAA','OOOOxx'
+8632,5851,0,0,2,12,32,632,632,3632,8632,64,65,'AUAAAA','BRIAAA','VVVVxx'
+3449,5852,1,1,9,9,49,449,1449,3449,3449,98,99,'RCAAAA','CRIAAA','AAAAxx'
+5888,5853,0,0,8,8,88,888,1888,888,5888,176,177,'MSAAAA','DRIAAA','HHHHxx'
+2211,5854,1,3,1,11,11,211,211,2211,2211,22,23,'BHAAAA','ERIAAA','OOOOxx'
+2835,5855,1,3,5,15,35,835,835,2835,2835,70,71,'BFAAAA','FRIAAA','VVVVxx'
+4196,5856,0,0,6,16,96,196,196,4196,4196,192,193,'KFAAAA','GRIAAA','AAAAxx'
+2177,5857,1,1,7,17,77,177,177,2177,2177,154,155,'TFAAAA','HRIAAA','HHHHxx'
+1959,5858,1,3,9,19,59,959,1959,1959,1959,118,119,'JXAAAA','IRIAAA','OOOOxx'
+5172,5859,0,0,2,12,72,172,1172,172,5172,144,145,'YQAAAA','JRIAAA','VVVVxx'
+7898,5860,0,2,8,18,98,898,1898,2898,7898,196,197,'URAAAA','KRIAAA','AAAAxx'
+5729,5861,1,1,9,9,29,729,1729,729,5729,58,59,'JMAAAA','LRIAAA','HHHHxx'
+469,5862,1,1,9,9,69,469,469,469,469,138,139,'BSAAAA','MRIAAA','OOOOxx'
+4456,5863,0,0,6,16,56,456,456,4456,4456,112,113,'KPAAAA','NRIAAA','VVVVxx'
+3578,5864,0,2,8,18,78,578,1578,3578,3578,156,157,'QHAAAA','ORIAAA','AAAAxx'
+8623,5865,1,3,3,3,23,623,623,3623,8623,46,47,'RTAAAA','PRIAAA','HHHHxx'
+6749,5866,1,1,9,9,49,749,749,1749,6749,98,99,'PZAAAA','QRIAAA','OOOOxx'
+6735,5867,1,3,5,15,35,735,735,1735,6735,70,71,'BZAAAA','RRIAAA','VVVVxx'
+5197,5868,1,1,7,17,97,197,1197,197,5197,194,195,'XRAAAA','SRIAAA','AAAAxx'
+2067,5869,1,3,7,7,67,67,67,2067,2067,134,135,'NBAAAA','TRIAAA','HHHHxx'
+5600,5870,0,0,0,0,0,600,1600,600,5600,0,1,'KHAAAA','URIAAA','OOOOxx'
+7741,5871,1,1,1,1,41,741,1741,2741,7741,82,83,'TLAAAA','VRIAAA','VVVVxx'
+9925,5872,1,1,5,5,25,925,1925,4925,9925,50,51,'TRAAAA','WRIAAA','AAAAxx'
+9685,5873,1,1,5,5,85,685,1685,4685,9685,170,171,'NIAAAA','XRIAAA','HHHHxx'
+7622,5874,0,2,2,2,22,622,1622,2622,7622,44,45,'EHAAAA','YRIAAA','OOOOxx'
+6859,5875,1,3,9,19,59,859,859,1859,6859,118,119,'VDAAAA','ZRIAAA','VVVVxx'
+3094,5876,0,2,4,14,94,94,1094,3094,3094,188,189,'APAAAA','ASIAAA','AAAAxx'
+2628,5877,0,0,8,8,28,628,628,2628,2628,56,57,'CXAAAA','BSIAAA','HHHHxx'
+40,5878,0,0,0,0,40,40,40,40,40,80,81,'OBAAAA','CSIAAA','OOOOxx'
+1644,5879,0,0,4,4,44,644,1644,1644,1644,88,89,'GLAAAA','DSIAAA','VVVVxx'
+588,5880,0,0,8,8,88,588,588,588,588,176,177,'QWAAAA','ESIAAA','AAAAxx'
+7522,5881,0,2,2,2,22,522,1522,2522,7522,44,45,'IDAAAA','FSIAAA','HHHHxx'
+162,5882,0,2,2,2,62,162,162,162,162,124,125,'GGAAAA','GSIAAA','OOOOxx'
+3610,5883,0,2,0,10,10,610,1610,3610,3610,20,21,'WIAAAA','HSIAAA','VVVVxx'
+3561,5884,1,1,1,1,61,561,1561,3561,3561,122,123,'ZGAAAA','ISIAAA','AAAAxx'
+8185,5885,1,1,5,5,85,185,185,3185,8185,170,171,'VCAAAA','JSIAAA','HHHHxx'
+7237,5886,1,1,7,17,37,237,1237,2237,7237,74,75,'JSAAAA','KSIAAA','OOOOxx'
+4592,5887,0,0,2,12,92,592,592,4592,4592,184,185,'QUAAAA','LSIAAA','VVVVxx'
+7082,5888,0,2,2,2,82,82,1082,2082,7082,164,165,'KMAAAA','MSIAAA','AAAAxx'
+4719,5889,1,3,9,19,19,719,719,4719,4719,38,39,'NZAAAA','NSIAAA','HHHHxx'
+3879,5890,1,3,9,19,79,879,1879,3879,3879,158,159,'FTAAAA','OSIAAA','OOOOxx'
+1662,5891,0,2,2,2,62,662,1662,1662,1662,124,125,'YLAAAA','PSIAAA','VVVVxx'
+3995,5892,1,3,5,15,95,995,1995,3995,3995,190,191,'RXAAAA','QSIAAA','AAAAxx'
+5828,5893,0,0,8,8,28,828,1828,828,5828,56,57,'EQAAAA','RSIAAA','HHHHxx'
+4197,5894,1,1,7,17,97,197,197,4197,4197,194,195,'LFAAAA','SSIAAA','OOOOxx'
+5146,5895,0,2,6,6,46,146,1146,146,5146,92,93,'YPAAAA','TSIAAA','VVVVxx'
+753,5896,1,1,3,13,53,753,753,753,753,106,107,'ZCAAAA','USIAAA','AAAAxx'
+7064,5897,0,0,4,4,64,64,1064,2064,7064,128,129,'SLAAAA','VSIAAA','HHHHxx'
+1312,5898,0,0,2,12,12,312,1312,1312,1312,24,25,'MYAAAA','WSIAAA','OOOOxx'
+5573,5899,1,1,3,13,73,573,1573,573,5573,146,147,'JGAAAA','XSIAAA','VVVVxx'
+7634,5900,0,2,4,14,34,634,1634,2634,7634,68,69,'QHAAAA','YSIAAA','AAAAxx'
+2459,5901,1,3,9,19,59,459,459,2459,2459,118,119,'PQAAAA','ZSIAAA','HHHHxx'
+8636,5902,0,0,6,16,36,636,636,3636,8636,72,73,'EUAAAA','ATIAAA','OOOOxx'
+5318,5903,0,2,8,18,18,318,1318,318,5318,36,37,'OWAAAA','BTIAAA','VVVVxx'
+1064,5904,0,0,4,4,64,64,1064,1064,1064,128,129,'YOAAAA','CTIAAA','AAAAxx'
+9779,5905,1,3,9,19,79,779,1779,4779,9779,158,159,'DMAAAA','DTIAAA','HHHHxx'
+6512,5906,0,0,2,12,12,512,512,1512,6512,24,25,'MQAAAA','ETIAAA','OOOOxx'
+3572,5907,0,0,2,12,72,572,1572,3572,3572,144,145,'KHAAAA','FTIAAA','VVVVxx'
+816,5908,0,0,6,16,16,816,816,816,816,32,33,'KFAAAA','GTIAAA','AAAAxx'
+3978,5909,0,2,8,18,78,978,1978,3978,3978,156,157,'AXAAAA','HTIAAA','HHHHxx'
+5390,5910,0,2,0,10,90,390,1390,390,5390,180,181,'IZAAAA','ITIAAA','OOOOxx'
+4685,5911,1,1,5,5,85,685,685,4685,4685,170,171,'FYAAAA','JTIAAA','VVVVxx'
+3003,5912,1,3,3,3,3,3,1003,3003,3003,6,7,'NLAAAA','KTIAAA','AAAAxx'
+2638,5913,0,2,8,18,38,638,638,2638,2638,76,77,'MXAAAA','LTIAAA','HHHHxx'
+9716,5914,0,0,6,16,16,716,1716,4716,9716,32,33,'SJAAAA','MTIAAA','OOOOxx'
+9598,5915,0,2,8,18,98,598,1598,4598,9598,196,197,'EFAAAA','NTIAAA','VVVVxx'
+9501,5916,1,1,1,1,1,501,1501,4501,9501,2,3,'LBAAAA','OTIAAA','AAAAxx'
+1704,5917,0,0,4,4,4,704,1704,1704,1704,8,9,'ONAAAA','PTIAAA','HHHHxx'
+8609,5918,1,1,9,9,9,609,609,3609,8609,18,19,'DTAAAA','QTIAAA','OOOOxx'
+5211,5919,1,3,1,11,11,211,1211,211,5211,22,23,'LSAAAA','RTIAAA','VVVVxx'
+3605,5920,1,1,5,5,5,605,1605,3605,3605,10,11,'RIAAAA','STIAAA','AAAAxx'
+8730,5921,0,2,0,10,30,730,730,3730,8730,60,61,'UXAAAA','TTIAAA','HHHHxx'
+4208,5922,0,0,8,8,8,208,208,4208,4208,16,17,'WFAAAA','UTIAAA','OOOOxx'
+7784,5923,0,0,4,4,84,784,1784,2784,7784,168,169,'KNAAAA','VTIAAA','VVVVxx'
+7501,5924,1,1,1,1,1,501,1501,2501,7501,2,3,'NCAAAA','WTIAAA','AAAAxx'
+7862,5925,0,2,2,2,62,862,1862,2862,7862,124,125,'KQAAAA','XTIAAA','HHHHxx'
+8922,5926,0,2,2,2,22,922,922,3922,8922,44,45,'EFAAAA','YTIAAA','OOOOxx'
+3857,5927,1,1,7,17,57,857,1857,3857,3857,114,115,'JSAAAA','ZTIAAA','VVVVxx'
+6393,5928,1,1,3,13,93,393,393,1393,6393,186,187,'XLAAAA','AUIAAA','AAAAxx'
+506,5929,0,2,6,6,6,506,506,506,506,12,13,'MTAAAA','BUIAAA','HHHHxx'
+4232,5930,0,0,2,12,32,232,232,4232,4232,64,65,'UGAAAA','CUIAAA','OOOOxx'
+8991,5931,1,3,1,11,91,991,991,3991,8991,182,183,'VHAAAA','DUIAAA','VVVVxx'
+8578,5932,0,2,8,18,78,578,578,3578,8578,156,157,'YRAAAA','EUIAAA','AAAAxx'
+3235,5933,1,3,5,15,35,235,1235,3235,3235,70,71,'LUAAAA','FUIAAA','HHHHxx'
+963,5934,1,3,3,3,63,963,963,963,963,126,127,'BLAAAA','GUIAAA','OOOOxx'
+113,5935,1,1,3,13,13,113,113,113,113,26,27,'JEAAAA','HUIAAA','VVVVxx'
+8234,5936,0,2,4,14,34,234,234,3234,8234,68,69,'SEAAAA','IUIAAA','AAAAxx'
+2613,5937,1,1,3,13,13,613,613,2613,2613,26,27,'NWAAAA','JUIAAA','HHHHxx'
+5540,5938,0,0,0,0,40,540,1540,540,5540,80,81,'CFAAAA','KUIAAA','OOOOxx'
+9727,5939,1,3,7,7,27,727,1727,4727,9727,54,55,'DKAAAA','LUIAAA','VVVVxx'
+2229,5940,1,1,9,9,29,229,229,2229,2229,58,59,'THAAAA','MUIAAA','AAAAxx'
+6242,5941,0,2,2,2,42,242,242,1242,6242,84,85,'CGAAAA','NUIAAA','HHHHxx'
+2502,5942,0,2,2,2,2,502,502,2502,2502,4,5,'GSAAAA','OUIAAA','OOOOxx'
+6212,5943,0,0,2,12,12,212,212,1212,6212,24,25,'YEAAAA','PUIAAA','VVVVxx'
+3495,5944,1,3,5,15,95,495,1495,3495,3495,190,191,'LEAAAA','QUIAAA','AAAAxx'
+2364,5945,0,0,4,4,64,364,364,2364,2364,128,129,'YMAAAA','RUIAAA','HHHHxx'
+6777,5946,1,1,7,17,77,777,777,1777,6777,154,155,'RAAAAA','SUIAAA','OOOOxx'
+9811,5947,1,3,1,11,11,811,1811,4811,9811,22,23,'JNAAAA','TUIAAA','VVVVxx'
+1450,5948,0,2,0,10,50,450,1450,1450,1450,100,101,'UDAAAA','UUIAAA','AAAAxx'
+5008,5949,0,0,8,8,8,8,1008,8,5008,16,17,'QKAAAA','VUIAAA','HHHHxx'
+1318,5950,0,2,8,18,18,318,1318,1318,1318,36,37,'SYAAAA','WUIAAA','OOOOxx'
+3373,5951,1,1,3,13,73,373,1373,3373,3373,146,147,'TZAAAA','XUIAAA','VVVVxx'
+398,5952,0,2,8,18,98,398,398,398,398,196,197,'IPAAAA','YUIAAA','AAAAxx'
+3804,5953,0,0,4,4,4,804,1804,3804,3804,8,9,'IQAAAA','ZUIAAA','HHHHxx'
+9148,5954,0,0,8,8,48,148,1148,4148,9148,96,97,'WNAAAA','AVIAAA','OOOOxx'
+4382,5955,0,2,2,2,82,382,382,4382,4382,164,165,'OMAAAA','BVIAAA','VVVVxx'
+4026,5956,0,2,6,6,26,26,26,4026,4026,52,53,'WYAAAA','CVIAAA','AAAAxx'
+7804,5957,0,0,4,4,4,804,1804,2804,7804,8,9,'EOAAAA','DVIAAA','HHHHxx'
+6839,5958,1,3,9,19,39,839,839,1839,6839,78,79,'BDAAAA','EVIAAA','OOOOxx'
+3756,5959,0,0,6,16,56,756,1756,3756,3756,112,113,'MOAAAA','FVIAAA','VVVVxx'
+6734,5960,0,2,4,14,34,734,734,1734,6734,68,69,'AZAAAA','GVIAAA','AAAAxx'
+2228,5961,0,0,8,8,28,228,228,2228,2228,56,57,'SHAAAA','HVIAAA','HHHHxx'
+3273,5962,1,1,3,13,73,273,1273,3273,3273,146,147,'XVAAAA','IVIAAA','OOOOxx'
+3708,5963,0,0,8,8,8,708,1708,3708,3708,16,17,'QMAAAA','JVIAAA','VVVVxx'
+4320,5964,0,0,0,0,20,320,320,4320,4320,40,41,'EKAAAA','KVIAAA','AAAAxx'
+74,5965,0,2,4,14,74,74,74,74,74,148,149,'WCAAAA','LVIAAA','HHHHxx'
+2520,5966,0,0,0,0,20,520,520,2520,2520,40,41,'YSAAAA','MVIAAA','OOOOxx'
+9619,5967,1,3,9,19,19,619,1619,4619,9619,38,39,'ZFAAAA','NVIAAA','VVVVxx'
+1801,5968,1,1,1,1,1,801,1801,1801,1801,2,3,'HRAAAA','OVIAAA','AAAAxx'
+6399,5969,1,3,9,19,99,399,399,1399,6399,198,199,'DMAAAA','PVIAAA','HHHHxx'
+8313,5970,1,1,3,13,13,313,313,3313,8313,26,27,'THAAAA','QVIAAA','OOOOxx'
+7003,5971,1,3,3,3,3,3,1003,2003,7003,6,7,'JJAAAA','RVIAAA','VVVVxx'
+329,5972,1,1,9,9,29,329,329,329,329,58,59,'RMAAAA','SVIAAA','AAAAxx'
+9090,5973,0,2,0,10,90,90,1090,4090,9090,180,181,'QLAAAA','TVIAAA','HHHHxx'
+2299,5974,1,3,9,19,99,299,299,2299,2299,198,199,'LKAAAA','UVIAAA','OOOOxx'
+3925,5975,1,1,5,5,25,925,1925,3925,3925,50,51,'ZUAAAA','VVIAAA','VVVVxx'
+8145,5976,1,1,5,5,45,145,145,3145,8145,90,91,'HBAAAA','WVIAAA','AAAAxx'
+8561,5977,1,1,1,1,61,561,561,3561,8561,122,123,'HRAAAA','XVIAAA','HHHHxx'
+2797,5978,1,1,7,17,97,797,797,2797,2797,194,195,'PDAAAA','YVIAAA','OOOOxx'
+1451,5979,1,3,1,11,51,451,1451,1451,1451,102,103,'VDAAAA','ZVIAAA','VVVVxx'
+7977,5980,1,1,7,17,77,977,1977,2977,7977,154,155,'VUAAAA','AWIAAA','AAAAxx'
+112,5981,0,0,2,12,12,112,112,112,112,24,25,'IEAAAA','BWIAAA','HHHHxx'
+5265,5982,1,1,5,5,65,265,1265,265,5265,130,131,'NUAAAA','CWIAAA','OOOOxx'
+3819,5983,1,3,9,19,19,819,1819,3819,3819,38,39,'XQAAAA','DWIAAA','VVVVxx'
+3648,5984,0,0,8,8,48,648,1648,3648,3648,96,97,'IKAAAA','EWIAAA','AAAAxx'
+6306,5985,0,2,6,6,6,306,306,1306,6306,12,13,'OIAAAA','FWIAAA','HHHHxx'
+2385,5986,1,1,5,5,85,385,385,2385,2385,170,171,'TNAAAA','GWIAAA','OOOOxx'
+9084,5987,0,0,4,4,84,84,1084,4084,9084,168,169,'KLAAAA','HWIAAA','VVVVxx'
+4499,5988,1,3,9,19,99,499,499,4499,4499,198,199,'BRAAAA','IWIAAA','AAAAxx'
+1154,5989,0,2,4,14,54,154,1154,1154,1154,108,109,'KSAAAA','JWIAAA','HHHHxx'
+6800,5990,0,0,0,0,0,800,800,1800,6800,0,1,'OBAAAA','KWIAAA','OOOOxx'
+8049,5991,1,1,9,9,49,49,49,3049,8049,98,99,'PXAAAA','LWIAAA','VVVVxx'
+3733,5992,1,1,3,13,33,733,1733,3733,3733,66,67,'PNAAAA','MWIAAA','AAAAxx'
+8496,5993,0,0,6,16,96,496,496,3496,8496,192,193,'UOAAAA','NWIAAA','HHHHxx'
+9952,5994,0,0,2,12,52,952,1952,4952,9952,104,105,'USAAAA','OWIAAA','OOOOxx'
+9792,5995,0,0,2,12,92,792,1792,4792,9792,184,185,'QMAAAA','PWIAAA','VVVVxx'
+5081,5996,1,1,1,1,81,81,1081,81,5081,162,163,'LNAAAA','QWIAAA','AAAAxx'
+7908,5997,0,0,8,8,8,908,1908,2908,7908,16,17,'ESAAAA','RWIAAA','HHHHxx'
+5398,5998,0,2,8,18,98,398,1398,398,5398,196,197,'QZAAAA','SWIAAA','OOOOxx'
+8423,5999,1,3,3,3,23,423,423,3423,8423,46,47,'ZLAAAA','TWIAAA','VVVVxx'
+3362,6000,0,2,2,2,62,362,1362,3362,3362,124,125,'IZAAAA','UWIAAA','AAAAxx'
+7767,6001,1,3,7,7,67,767,1767,2767,7767,134,135,'TMAAAA','VWIAAA','HHHHxx'
+7063,6002,1,3,3,3,63,63,1063,2063,7063,126,127,'RLAAAA','WWIAAA','OOOOxx'
+8350,6003,0,2,0,10,50,350,350,3350,8350,100,101,'EJAAAA','XWIAAA','VVVVxx'
+6779,6004,1,3,9,19,79,779,779,1779,6779,158,159,'TAAAAA','YWIAAA','AAAAxx'
+5742,6005,0,2,2,2,42,742,1742,742,5742,84,85,'WMAAAA','ZWIAAA','HHHHxx'
+9045,6006,1,1,5,5,45,45,1045,4045,9045,90,91,'XJAAAA','AXIAAA','OOOOxx'
+8792,6007,0,0,2,12,92,792,792,3792,8792,184,185,'EAAAAA','BXIAAA','VVVVxx'
+8160,6008,0,0,0,0,60,160,160,3160,8160,120,121,'WBAAAA','CXIAAA','AAAAxx'
+3061,6009,1,1,1,1,61,61,1061,3061,3061,122,123,'TNAAAA','DXIAAA','HHHHxx'
+4721,6010,1,1,1,1,21,721,721,4721,4721,42,43,'PZAAAA','EXIAAA','OOOOxx'
+9817,6011,1,1,7,17,17,817,1817,4817,9817,34,35,'PNAAAA','FXIAAA','VVVVxx'
+9257,6012,1,1,7,17,57,257,1257,4257,9257,114,115,'BSAAAA','GXIAAA','AAAAxx'
+7779,6013,1,3,9,19,79,779,1779,2779,7779,158,159,'FNAAAA','HXIAAA','HHHHxx'
+2663,6014,1,3,3,3,63,663,663,2663,2663,126,127,'LYAAAA','IXIAAA','OOOOxx'
+3885,6015,1,1,5,5,85,885,1885,3885,3885,170,171,'LTAAAA','JXIAAA','VVVVxx'
+9469,6016,1,1,9,9,69,469,1469,4469,9469,138,139,'FAAAAA','KXIAAA','AAAAxx'
+6766,6017,0,2,6,6,66,766,766,1766,6766,132,133,'GAAAAA','LXIAAA','HHHHxx'
+7173,6018,1,1,3,13,73,173,1173,2173,7173,146,147,'XPAAAA','MXIAAA','OOOOxx'
+4709,6019,1,1,9,9,9,709,709,4709,4709,18,19,'DZAAAA','NXIAAA','VVVVxx'
+4210,6020,0,2,0,10,10,210,210,4210,4210,20,21,'YFAAAA','OXIAAA','AAAAxx'
+3715,6021,1,3,5,15,15,715,1715,3715,3715,30,31,'XMAAAA','PXIAAA','HHHHxx'
+5089,6022,1,1,9,9,89,89,1089,89,5089,178,179,'TNAAAA','QXIAAA','OOOOxx'
+1639,6023,1,3,9,19,39,639,1639,1639,1639,78,79,'BLAAAA','RXIAAA','VVVVxx'
+5757,6024,1,1,7,17,57,757,1757,757,5757,114,115,'LNAAAA','SXIAAA','AAAAxx'
+3545,6025,1,1,5,5,45,545,1545,3545,3545,90,91,'JGAAAA','TXIAAA','HHHHxx'
+709,6026,1,1,9,9,9,709,709,709,709,18,19,'HBAAAA','UXIAAA','OOOOxx'
+6519,6027,1,3,9,19,19,519,519,1519,6519,38,39,'TQAAAA','VXIAAA','VVVVxx'
+4341,6028,1,1,1,1,41,341,341,4341,4341,82,83,'ZKAAAA','WXIAAA','AAAAxx'
+2381,6029,1,1,1,1,81,381,381,2381,2381,162,163,'PNAAAA','XXIAAA','HHHHxx'
+7215,6030,1,3,5,15,15,215,1215,2215,7215,30,31,'NRAAAA','YXIAAA','OOOOxx'
+9323,6031,1,3,3,3,23,323,1323,4323,9323,46,47,'PUAAAA','ZXIAAA','VVVVxx'
+3593,6032,1,1,3,13,93,593,1593,3593,3593,186,187,'FIAAAA','AYIAAA','AAAAxx'
+3123,6033,1,3,3,3,23,123,1123,3123,3123,46,47,'DQAAAA','BYIAAA','HHHHxx'
+8673,6034,1,1,3,13,73,673,673,3673,8673,146,147,'PVAAAA','CYIAAA','OOOOxx'
+5094,6035,0,2,4,14,94,94,1094,94,5094,188,189,'YNAAAA','DYIAAA','VVVVxx'
+6477,6036,1,1,7,17,77,477,477,1477,6477,154,155,'DPAAAA','EYIAAA','AAAAxx'
+9734,6037,0,2,4,14,34,734,1734,4734,9734,68,69,'KKAAAA','FYIAAA','HHHHxx'
+2998,6038,0,2,8,18,98,998,998,2998,2998,196,197,'ILAAAA','GYIAAA','OOOOxx'
+7807,6039,1,3,7,7,7,807,1807,2807,7807,14,15,'HOAAAA','HYIAAA','VVVVxx'
+5739,6040,1,3,9,19,39,739,1739,739,5739,78,79,'TMAAAA','IYIAAA','AAAAxx'
+138,6041,0,2,8,18,38,138,138,138,138,76,77,'IFAAAA','JYIAAA','HHHHxx'
+2403,6042,1,3,3,3,3,403,403,2403,2403,6,7,'LOAAAA','KYIAAA','OOOOxx'
+2484,6043,0,0,4,4,84,484,484,2484,2484,168,169,'ORAAAA','LYIAAA','VVVVxx'
+2805,6044,1,1,5,5,5,805,805,2805,2805,10,11,'XDAAAA','MYIAAA','AAAAxx'
+5189,6045,1,1,9,9,89,189,1189,189,5189,178,179,'PRAAAA','NYIAAA','HHHHxx'
+8336,6046,0,0,6,16,36,336,336,3336,8336,72,73,'QIAAAA','OYIAAA','OOOOxx'
+5241,6047,1,1,1,1,41,241,1241,241,5241,82,83,'PTAAAA','PYIAAA','VVVVxx'
+2612,6048,0,0,2,12,12,612,612,2612,2612,24,25,'MWAAAA','QYIAAA','AAAAxx'
+2571,6049,1,3,1,11,71,571,571,2571,2571,142,143,'XUAAAA','RYIAAA','HHHHxx'
+926,6050,0,2,6,6,26,926,926,926,926,52,53,'QJAAAA','SYIAAA','OOOOxx'
+337,6051,1,1,7,17,37,337,337,337,337,74,75,'ZMAAAA','TYIAAA','VVVVxx'
+2821,6052,1,1,1,1,21,821,821,2821,2821,42,43,'NEAAAA','UYIAAA','AAAAxx'
+2658,6053,0,2,8,18,58,658,658,2658,2658,116,117,'GYAAAA','VYIAAA','HHHHxx'
+9054,6054,0,2,4,14,54,54,1054,4054,9054,108,109,'GKAAAA','WYIAAA','OOOOxx'
+5492,6055,0,0,2,12,92,492,1492,492,5492,184,185,'GDAAAA','XYIAAA','VVVVxx'
+7313,6056,1,1,3,13,13,313,1313,2313,7313,26,27,'HVAAAA','YYIAAA','AAAAxx'
+75,6057,1,3,5,15,75,75,75,75,75,150,151,'XCAAAA','ZYIAAA','HHHHxx'
+5489,6058,1,1,9,9,89,489,1489,489,5489,178,179,'DDAAAA','AZIAAA','OOOOxx'
+8413,6059,1,1,3,13,13,413,413,3413,8413,26,27,'PLAAAA','BZIAAA','VVVVxx'
+3693,6060,1,1,3,13,93,693,1693,3693,3693,186,187,'BMAAAA','CZIAAA','AAAAxx'
+9820,6061,0,0,0,0,20,820,1820,4820,9820,40,41,'SNAAAA','DZIAAA','HHHHxx'
+8157,6062,1,1,7,17,57,157,157,3157,8157,114,115,'TBAAAA','EZIAAA','OOOOxx'
+4161,6063,1,1,1,1,61,161,161,4161,4161,122,123,'BEAAAA','FZIAAA','VVVVxx'
+8339,6064,1,3,9,19,39,339,339,3339,8339,78,79,'TIAAAA','GZIAAA','AAAAxx'
+4141,6065,1,1,1,1,41,141,141,4141,4141,82,83,'HDAAAA','HZIAAA','HHHHxx'
+9001,6066,1,1,1,1,1,1,1001,4001,9001,2,3,'FIAAAA','IZIAAA','OOOOxx'
+8247,6067,1,3,7,7,47,247,247,3247,8247,94,95,'FFAAAA','JZIAAA','VVVVxx'
+1182,6068,0,2,2,2,82,182,1182,1182,1182,164,165,'MTAAAA','KZIAAA','AAAAxx'
+9876,6069,0,0,6,16,76,876,1876,4876,9876,152,153,'WPAAAA','LZIAAA','HHHHxx'
+4302,6070,0,2,2,2,2,302,302,4302,4302,4,5,'MJAAAA','MZIAAA','OOOOxx'
+6674,6071,0,2,4,14,74,674,674,1674,6674,148,149,'SWAAAA','NZIAAA','VVVVxx'
+4214,6072,0,2,4,14,14,214,214,4214,4214,28,29,'CGAAAA','OZIAAA','AAAAxx'
+5584,6073,0,0,4,4,84,584,1584,584,5584,168,169,'UGAAAA','PZIAAA','HHHHxx'
+265,6074,1,1,5,5,65,265,265,265,265,130,131,'FKAAAA','QZIAAA','OOOOxx'
+9207,6075,1,3,7,7,7,207,1207,4207,9207,14,15,'DQAAAA','RZIAAA','VVVVxx'
+9434,6076,0,2,4,14,34,434,1434,4434,9434,68,69,'WYAAAA','SZIAAA','AAAAxx'
+2921,6077,1,1,1,1,21,921,921,2921,2921,42,43,'JIAAAA','TZIAAA','HHHHxx'
+9355,6078,1,3,5,15,55,355,1355,4355,9355,110,111,'VVAAAA','UZIAAA','OOOOxx'
+8538,6079,0,2,8,18,38,538,538,3538,8538,76,77,'KQAAAA','VZIAAA','VVVVxx'
+4559,6080,1,3,9,19,59,559,559,4559,4559,118,119,'JTAAAA','WZIAAA','AAAAxx'
+9175,6081,1,3,5,15,75,175,1175,4175,9175,150,151,'XOAAAA','XZIAAA','HHHHxx'
+4489,6082,1,1,9,9,89,489,489,4489,4489,178,179,'RQAAAA','YZIAAA','OOOOxx'
+1485,6083,1,1,5,5,85,485,1485,1485,1485,170,171,'DFAAAA','ZZIAAA','VVVVxx'
+8853,6084,1,1,3,13,53,853,853,3853,8853,106,107,'NCAAAA','AAJAAA','AAAAxx'
+9143,6085,1,3,3,3,43,143,1143,4143,9143,86,87,'RNAAAA','BAJAAA','HHHHxx'
+9551,6086,1,3,1,11,51,551,1551,4551,9551,102,103,'JDAAAA','CAJAAA','OOOOxx'
+49,6087,1,1,9,9,49,49,49,49,49,98,99,'XBAAAA','DAJAAA','VVVVxx'
+8351,6088,1,3,1,11,51,351,351,3351,8351,102,103,'FJAAAA','EAJAAA','AAAAxx'
+9748,6089,0,0,8,8,48,748,1748,4748,9748,96,97,'YKAAAA','FAJAAA','HHHHxx'
+4536,6090,0,0,6,16,36,536,536,4536,4536,72,73,'MSAAAA','GAJAAA','OOOOxx'
+930,6091,0,2,0,10,30,930,930,930,930,60,61,'UJAAAA','HAJAAA','VVVVxx'
+2206,6092,0,2,6,6,6,206,206,2206,2206,12,13,'WGAAAA','IAJAAA','AAAAxx'
+8004,6093,0,0,4,4,4,4,4,3004,8004,8,9,'WVAAAA','JAJAAA','HHHHxx'
+219,6094,1,3,9,19,19,219,219,219,219,38,39,'LIAAAA','KAJAAA','OOOOxx'
+2724,6095,0,0,4,4,24,724,724,2724,2724,48,49,'UAAAAA','LAJAAA','VVVVxx'
+4868,6096,0,0,8,8,68,868,868,4868,4868,136,137,'GFAAAA','MAJAAA','AAAAxx'
+5952,6097,0,0,2,12,52,952,1952,952,5952,104,105,'YUAAAA','NAJAAA','HHHHxx'
+2094,6098,0,2,4,14,94,94,94,2094,2094,188,189,'OCAAAA','OAJAAA','OOOOxx'
+5707,6099,1,3,7,7,7,707,1707,707,5707,14,15,'NLAAAA','PAJAAA','VVVVxx'
+5200,6100,0,0,0,0,0,200,1200,200,5200,0,1,'ASAAAA','QAJAAA','AAAAxx'
+967,6101,1,3,7,7,67,967,967,967,967,134,135,'FLAAAA','RAJAAA','HHHHxx'
+1982,6102,0,2,2,2,82,982,1982,1982,1982,164,165,'GYAAAA','SAJAAA','OOOOxx'
+3410,6103,0,2,0,10,10,410,1410,3410,3410,20,21,'EBAAAA','TAJAAA','VVVVxx'
+174,6104,0,2,4,14,74,174,174,174,174,148,149,'SGAAAA','UAJAAA','AAAAxx'
+9217,6105,1,1,7,17,17,217,1217,4217,9217,34,35,'NQAAAA','VAJAAA','HHHHxx'
+9103,6106,1,3,3,3,3,103,1103,4103,9103,6,7,'DMAAAA','WAJAAA','OOOOxx'
+868,6107,0,0,8,8,68,868,868,868,868,136,137,'KHAAAA','XAJAAA','VVVVxx'
+8261,6108,1,1,1,1,61,261,261,3261,8261,122,123,'TFAAAA','YAJAAA','AAAAxx'
+2720,6109,0,0,0,0,20,720,720,2720,2720,40,41,'QAAAAA','ZAJAAA','HHHHxx'
+2999,6110,1,3,9,19,99,999,999,2999,2999,198,199,'JLAAAA','ABJAAA','OOOOxx'
+769,6111,1,1,9,9,69,769,769,769,769,138,139,'PDAAAA','BBJAAA','VVVVxx'
+4533,6112,1,1,3,13,33,533,533,4533,4533,66,67,'JSAAAA','CBJAAA','AAAAxx'
+2030,6113,0,2,0,10,30,30,30,2030,2030,60,61,'CAAAAA','DBJAAA','HHHHxx'
+5824,6114,0,0,4,4,24,824,1824,824,5824,48,49,'AQAAAA','EBJAAA','OOOOxx'
+2328,6115,0,0,8,8,28,328,328,2328,2328,56,57,'OLAAAA','FBJAAA','VVVVxx'
+9970,6116,0,2,0,10,70,970,1970,4970,9970,140,141,'MTAAAA','GBJAAA','AAAAxx'
+3192,6117,0,0,2,12,92,192,1192,3192,3192,184,185,'USAAAA','HBJAAA','HHHHxx'
+3387,6118,1,3,7,7,87,387,1387,3387,3387,174,175,'HAAAAA','IBJAAA','OOOOxx'
+1936,6119,0,0,6,16,36,936,1936,1936,1936,72,73,'MWAAAA','JBJAAA','VVVVxx'
+6934,6120,0,2,4,14,34,934,934,1934,6934,68,69,'SGAAAA','KBJAAA','AAAAxx'
+5615,6121,1,3,5,15,15,615,1615,615,5615,30,31,'ZHAAAA','LBJAAA','HHHHxx'
+2241,6122,1,1,1,1,41,241,241,2241,2241,82,83,'FIAAAA','MBJAAA','OOOOxx'
+1842,6123,0,2,2,2,42,842,1842,1842,1842,84,85,'WSAAAA','NBJAAA','VVVVxx'
+8044,6124,0,0,4,4,44,44,44,3044,8044,88,89,'KXAAAA','OBJAAA','AAAAxx'
+8902,6125,0,2,2,2,2,902,902,3902,8902,4,5,'KEAAAA','PBJAAA','HHHHxx'
+4519,6126,1,3,9,19,19,519,519,4519,4519,38,39,'VRAAAA','QBJAAA','OOOOxx'
+492,6127,0,0,2,12,92,492,492,492,492,184,185,'YSAAAA','RBJAAA','VVVVxx'
+2694,6128,0,2,4,14,94,694,694,2694,2694,188,189,'QZAAAA','SBJAAA','AAAAxx'
+5861,6129,1,1,1,1,61,861,1861,861,5861,122,123,'LRAAAA','TBJAAA','HHHHxx'
+2104,6130,0,0,4,4,4,104,104,2104,2104,8,9,'YCAAAA','UBJAAA','OOOOxx'
+5376,6131,0,0,6,16,76,376,1376,376,5376,152,153,'UYAAAA','VBJAAA','VVVVxx'
+3147,6132,1,3,7,7,47,147,1147,3147,3147,94,95,'BRAAAA','WBJAAA','AAAAxx'
+9880,6133,0,0,0,0,80,880,1880,4880,9880,160,161,'AQAAAA','XBJAAA','HHHHxx'
+6171,6134,1,3,1,11,71,171,171,1171,6171,142,143,'JDAAAA','YBJAAA','OOOOxx'
+1850,6135,0,2,0,10,50,850,1850,1850,1850,100,101,'ETAAAA','ZBJAAA','VVVVxx'
+1775,6136,1,3,5,15,75,775,1775,1775,1775,150,151,'HQAAAA','ACJAAA','AAAAxx'
+9261,6137,1,1,1,1,61,261,1261,4261,9261,122,123,'FSAAAA','BCJAAA','HHHHxx'
+9648,6138,0,0,8,8,48,648,1648,4648,9648,96,97,'CHAAAA','CCJAAA','OOOOxx'
+7846,6139,0,2,6,6,46,846,1846,2846,7846,92,93,'UPAAAA','DCJAAA','VVVVxx'
+1446,6140,0,2,6,6,46,446,1446,1446,1446,92,93,'QDAAAA','ECJAAA','AAAAxx'
+3139,6141,1,3,9,19,39,139,1139,3139,3139,78,79,'TQAAAA','FCJAAA','HHHHxx'
+6142,6142,0,2,2,2,42,142,142,1142,6142,84,85,'GCAAAA','GCJAAA','OOOOxx'
+5812,6143,0,0,2,12,12,812,1812,812,5812,24,25,'OPAAAA','HCJAAA','VVVVxx'
+6728,6144,0,0,8,8,28,728,728,1728,6728,56,57,'UYAAAA','ICJAAA','AAAAxx'
+4428,6145,0,0,8,8,28,428,428,4428,4428,56,57,'IOAAAA','JCJAAA','HHHHxx'
+502,6146,0,2,2,2,2,502,502,502,502,4,5,'ITAAAA','KCJAAA','OOOOxx'
+2363,6147,1,3,3,3,63,363,363,2363,2363,126,127,'XMAAAA','LCJAAA','VVVVxx'
+3808,6148,0,0,8,8,8,808,1808,3808,3808,16,17,'MQAAAA','MCJAAA','AAAAxx'
+1010,6149,0,2,0,10,10,10,1010,1010,1010,20,21,'WMAAAA','NCJAAA','HHHHxx'
+9565,6150,1,1,5,5,65,565,1565,4565,9565,130,131,'XDAAAA','OCJAAA','OOOOxx'
+1587,6151,1,3,7,7,87,587,1587,1587,1587,174,175,'BJAAAA','PCJAAA','VVVVxx'
+1474,6152,0,2,4,14,74,474,1474,1474,1474,148,149,'SEAAAA','QCJAAA','AAAAxx'
+6215,6153,1,3,5,15,15,215,215,1215,6215,30,31,'BFAAAA','RCJAAA','HHHHxx'
+2395,6154,1,3,5,15,95,395,395,2395,2395,190,191,'DOAAAA','SCJAAA','OOOOxx'
+8753,6155,1,1,3,13,53,753,753,3753,8753,106,107,'RYAAAA','TCJAAA','VVVVxx'
+2446,6156,0,2,6,6,46,446,446,2446,2446,92,93,'CQAAAA','UCJAAA','AAAAxx'
+60,6157,0,0,0,0,60,60,60,60,60,120,121,'ICAAAA','VCJAAA','HHHHxx'
+982,6158,0,2,2,2,82,982,982,982,982,164,165,'ULAAAA','WCJAAA','OOOOxx'
+6489,6159,1,1,9,9,89,489,489,1489,6489,178,179,'PPAAAA','XCJAAA','VVVVxx'
+5334,6160,0,2,4,14,34,334,1334,334,5334,68,69,'EXAAAA','YCJAAA','AAAAxx'
+8540,6161,0,0,0,0,40,540,540,3540,8540,80,81,'MQAAAA','ZCJAAA','HHHHxx'
+490,6162,0,2,0,10,90,490,490,490,490,180,181,'WSAAAA','ADJAAA','OOOOxx'
+6763,6163,1,3,3,3,63,763,763,1763,6763,126,127,'DAAAAA','BDJAAA','VVVVxx'
+8273,6164,1,1,3,13,73,273,273,3273,8273,146,147,'FGAAAA','CDJAAA','AAAAxx'
+8327,6165,1,3,7,7,27,327,327,3327,8327,54,55,'HIAAAA','DDJAAA','HHHHxx'
+8541,6166,1,1,1,1,41,541,541,3541,8541,82,83,'NQAAAA','EDJAAA','OOOOxx'
+3459,6167,1,3,9,19,59,459,1459,3459,3459,118,119,'BDAAAA','FDJAAA','VVVVxx'
+5557,6168,1,1,7,17,57,557,1557,557,5557,114,115,'TFAAAA','GDJAAA','AAAAxx'
+158,6169,0,2,8,18,58,158,158,158,158,116,117,'CGAAAA','HDJAAA','HHHHxx'
+1741,6170,1,1,1,1,41,741,1741,1741,1741,82,83,'ZOAAAA','IDJAAA','OOOOxx'
+8385,6171,1,1,5,5,85,385,385,3385,8385,170,171,'NKAAAA','JDJAAA','VVVVxx'
+617,6172,1,1,7,17,17,617,617,617,617,34,35,'TXAAAA','KDJAAA','AAAAxx'
+3560,6173,0,0,0,0,60,560,1560,3560,3560,120,121,'YGAAAA','LDJAAA','HHHHxx'
+5216,6174,0,0,6,16,16,216,1216,216,5216,32,33,'QSAAAA','MDJAAA','OOOOxx'
+8443,6175,1,3,3,3,43,443,443,3443,8443,86,87,'TMAAAA','NDJAAA','VVVVxx'
+2700,6176,0,0,0,0,0,700,700,2700,2700,0,1,'WZAAAA','ODJAAA','AAAAxx'
+3661,6177,1,1,1,1,61,661,1661,3661,3661,122,123,'VKAAAA','PDJAAA','HHHHxx'
+4875,6178,1,3,5,15,75,875,875,4875,4875,150,151,'NFAAAA','QDJAAA','OOOOxx'
+6721,6179,1,1,1,1,21,721,721,1721,6721,42,43,'NYAAAA','RDJAAA','VVVVxx'
+3659,6180,1,3,9,19,59,659,1659,3659,3659,118,119,'TKAAAA','SDJAAA','AAAAxx'
+8944,6181,0,0,4,4,44,944,944,3944,8944,88,89,'AGAAAA','TDJAAA','HHHHxx'
+9133,6182,1,1,3,13,33,133,1133,4133,9133,66,67,'HNAAAA','UDJAAA','OOOOxx'
+9882,6183,0,2,2,2,82,882,1882,4882,9882,164,165,'CQAAAA','VDJAAA','VVVVxx'
+2102,6184,0,2,2,2,2,102,102,2102,2102,4,5,'WCAAAA','WDJAAA','AAAAxx'
+9445,6185,1,1,5,5,45,445,1445,4445,9445,90,91,'HZAAAA','XDJAAA','HHHHxx'
+5559,6186,1,3,9,19,59,559,1559,559,5559,118,119,'VFAAAA','YDJAAA','OOOOxx'
+6096,6187,0,0,6,16,96,96,96,1096,6096,192,193,'MAAAAA','ZDJAAA','VVVVxx'
+9336,6188,0,0,6,16,36,336,1336,4336,9336,72,73,'CVAAAA','AEJAAA','AAAAxx'
+2162,6189,0,2,2,2,62,162,162,2162,2162,124,125,'EFAAAA','BEJAAA','HHHHxx'
+7459,6190,1,3,9,19,59,459,1459,2459,7459,118,119,'XAAAAA','CEJAAA','OOOOxx'
+3248,6191,0,0,8,8,48,248,1248,3248,3248,96,97,'YUAAAA','DEJAAA','VVVVxx'
+9539,6192,1,3,9,19,39,539,1539,4539,9539,78,79,'XCAAAA','EEJAAA','AAAAxx'
+4449,6193,1,1,9,9,49,449,449,4449,4449,98,99,'DPAAAA','FEJAAA','HHHHxx'
+2809,6194,1,1,9,9,9,809,809,2809,2809,18,19,'BEAAAA','GEJAAA','OOOOxx'
+7058,6195,0,2,8,18,58,58,1058,2058,7058,116,117,'MLAAAA','HEJAAA','VVVVxx'
+3512,6196,0,0,2,12,12,512,1512,3512,3512,24,25,'CFAAAA','IEJAAA','AAAAxx'
+2802,6197,0,2,2,2,2,802,802,2802,2802,4,5,'UDAAAA','JEJAAA','HHHHxx'
+6289,6198,1,1,9,9,89,289,289,1289,6289,178,179,'XHAAAA','KEJAAA','OOOOxx'
+1947,6199,1,3,7,7,47,947,1947,1947,1947,94,95,'XWAAAA','LEJAAA','VVVVxx'
+9572,6200,0,0,2,12,72,572,1572,4572,9572,144,145,'EEAAAA','MEJAAA','AAAAxx'
+2356,6201,0,0,6,16,56,356,356,2356,2356,112,113,'QMAAAA','NEJAAA','HHHHxx'
+3039,6202,1,3,9,19,39,39,1039,3039,3039,78,79,'XMAAAA','OEJAAA','OOOOxx'
+9452,6203,0,0,2,12,52,452,1452,4452,9452,104,105,'OZAAAA','PEJAAA','VVVVxx'
+6328,6204,0,0,8,8,28,328,328,1328,6328,56,57,'KJAAAA','QEJAAA','AAAAxx'
+7661,6205,1,1,1,1,61,661,1661,2661,7661,122,123,'RIAAAA','REJAAA','HHHHxx'
+2566,6206,0,2,6,6,66,566,566,2566,2566,132,133,'SUAAAA','SEJAAA','OOOOxx'
+6095,6207,1,3,5,15,95,95,95,1095,6095,190,191,'LAAAAA','TEJAAA','VVVVxx'
+6367,6208,1,3,7,7,67,367,367,1367,6367,134,135,'XKAAAA','UEJAAA','AAAAxx'
+3368,6209,0,0,8,8,68,368,1368,3368,3368,136,137,'OZAAAA','VEJAAA','HHHHxx'
+5567,6210,1,3,7,7,67,567,1567,567,5567,134,135,'DGAAAA','WEJAAA','OOOOxx'
+9834,6211,0,2,4,14,34,834,1834,4834,9834,68,69,'GOAAAA','XEJAAA','VVVVxx'
+9695,6212,1,3,5,15,95,695,1695,4695,9695,190,191,'XIAAAA','YEJAAA','AAAAxx'
+7291,6213,1,3,1,11,91,291,1291,2291,7291,182,183,'LUAAAA','ZEJAAA','HHHHxx'
+4806,6214,0,2,6,6,6,806,806,4806,4806,12,13,'WCAAAA','AFJAAA','OOOOxx'
+2000,6215,0,0,0,0,0,0,0,2000,2000,0,1,'YYAAAA','BFJAAA','VVVVxx'
+6817,6216,1,1,7,17,17,817,817,1817,6817,34,35,'FCAAAA','CFJAAA','AAAAxx'
+8487,6217,1,3,7,7,87,487,487,3487,8487,174,175,'LOAAAA','DFJAAA','HHHHxx'
+3245,6218,1,1,5,5,45,245,1245,3245,3245,90,91,'VUAAAA','EFJAAA','OOOOxx'
+632,6219,0,0,2,12,32,632,632,632,632,64,65,'IYAAAA','FFJAAA','VVVVxx'
+8067,6220,1,3,7,7,67,67,67,3067,8067,134,135,'HYAAAA','GFJAAA','AAAAxx'
+7140,6221,0,0,0,0,40,140,1140,2140,7140,80,81,'QOAAAA','HFJAAA','HHHHxx'
+6802,6222,0,2,2,2,2,802,802,1802,6802,4,5,'QBAAAA','IFJAAA','OOOOxx'
+3980,6223,0,0,0,0,80,980,1980,3980,3980,160,161,'CXAAAA','JFJAAA','VVVVxx'
+1321,6224,1,1,1,1,21,321,1321,1321,1321,42,43,'VYAAAA','KFJAAA','AAAAxx'
+2273,6225,1,1,3,13,73,273,273,2273,2273,146,147,'LJAAAA','LFJAAA','HHHHxx'
+6787,6226,1,3,7,7,87,787,787,1787,6787,174,175,'BBAAAA','MFJAAA','OOOOxx'
+9480,6227,0,0,0,0,80,480,1480,4480,9480,160,161,'QAAAAA','NFJAAA','VVVVxx'
+9404,6228,0,0,4,4,4,404,1404,4404,9404,8,9,'SXAAAA','OFJAAA','AAAAxx'
+3914,6229,0,2,4,14,14,914,1914,3914,3914,28,29,'OUAAAA','PFJAAA','HHHHxx'
+5507,6230,1,3,7,7,7,507,1507,507,5507,14,15,'VDAAAA','QFJAAA','OOOOxx'
+1813,6231,1,1,3,13,13,813,1813,1813,1813,26,27,'TRAAAA','RFJAAA','VVVVxx'
+1999,6232,1,3,9,19,99,999,1999,1999,1999,198,199,'XYAAAA','SFJAAA','AAAAxx'
+3848,6233,0,0,8,8,48,848,1848,3848,3848,96,97,'ASAAAA','TFJAAA','HHHHxx'
+9693,6234,1,1,3,13,93,693,1693,4693,9693,186,187,'VIAAAA','UFJAAA','OOOOxx'
+1353,6235,1,1,3,13,53,353,1353,1353,1353,106,107,'BAAAAA','VFJAAA','VVVVxx'
+7218,6236,0,2,8,18,18,218,1218,2218,7218,36,37,'QRAAAA','WFJAAA','AAAAxx'
+8223,6237,1,3,3,3,23,223,223,3223,8223,46,47,'HEAAAA','XFJAAA','HHHHxx'
+9982,6238,0,2,2,2,82,982,1982,4982,9982,164,165,'YTAAAA','YFJAAA','OOOOxx'
+8799,6239,1,3,9,19,99,799,799,3799,8799,198,199,'LAAAAA','ZFJAAA','VVVVxx'
+8929,6240,1,1,9,9,29,929,929,3929,8929,58,59,'LFAAAA','AGJAAA','AAAAxx'
+4626,6241,0,2,6,6,26,626,626,4626,4626,52,53,'YVAAAA','BGJAAA','HHHHxx'
+7958,6242,0,2,8,18,58,958,1958,2958,7958,116,117,'CUAAAA','CGJAAA','OOOOxx'
+3743,6243,1,3,3,3,43,743,1743,3743,3743,86,87,'ZNAAAA','DGJAAA','VVVVxx'
+8165,6244,1,1,5,5,65,165,165,3165,8165,130,131,'BCAAAA','EGJAAA','AAAAxx'
+7899,6245,1,3,9,19,99,899,1899,2899,7899,198,199,'VRAAAA','FGJAAA','HHHHxx'
+8698,6246,0,2,8,18,98,698,698,3698,8698,196,197,'OWAAAA','GGJAAA','OOOOxx'
+9270,6247,0,2,0,10,70,270,1270,4270,9270,140,141,'OSAAAA','HGJAAA','VVVVxx'
+6348,6248,0,0,8,8,48,348,348,1348,6348,96,97,'EKAAAA','IGJAAA','AAAAxx'
+6999,6249,1,3,9,19,99,999,999,1999,6999,198,199,'FJAAAA','JGJAAA','HHHHxx'
+8467,6250,1,3,7,7,67,467,467,3467,8467,134,135,'RNAAAA','KGJAAA','OOOOxx'
+3907,6251,1,3,7,7,7,907,1907,3907,3907,14,15,'HUAAAA','LGJAAA','VVVVxx'
+4738,6252,0,2,8,18,38,738,738,4738,4738,76,77,'GAAAAA','MGJAAA','AAAAxx'
+248,6253,0,0,8,8,48,248,248,248,248,96,97,'OJAAAA','NGJAAA','HHHHxx'
+8769,6254,1,1,9,9,69,769,769,3769,8769,138,139,'HZAAAA','OGJAAA','OOOOxx'
+9922,6255,0,2,2,2,22,922,1922,4922,9922,44,45,'QRAAAA','PGJAAA','VVVVxx'
+778,6256,0,2,8,18,78,778,778,778,778,156,157,'YDAAAA','QGJAAA','AAAAxx'
+1233,6257,1,1,3,13,33,233,1233,1233,1233,66,67,'LVAAAA','RGJAAA','HHHHxx'
+1183,6258,1,3,3,3,83,183,1183,1183,1183,166,167,'NTAAAA','SGJAAA','OOOOxx'
+2838,6259,0,2,8,18,38,838,838,2838,2838,76,77,'EFAAAA','TGJAAA','VVVVxx'
+3096,6260,0,0,6,16,96,96,1096,3096,3096,192,193,'CPAAAA','UGJAAA','AAAAxx'
+8566,6261,0,2,6,6,66,566,566,3566,8566,132,133,'MRAAAA','VGJAAA','HHHHxx'
+7635,6262,1,3,5,15,35,635,1635,2635,7635,70,71,'RHAAAA','WGJAAA','OOOOxx'
+5428,6263,0,0,8,8,28,428,1428,428,5428,56,57,'UAAAAA','XGJAAA','VVVVxx'
+7430,6264,0,2,0,10,30,430,1430,2430,7430,60,61,'UZAAAA','YGJAAA','AAAAxx'
+7210,6265,0,2,0,10,10,210,1210,2210,7210,20,21,'IRAAAA','ZGJAAA','HHHHxx'
+4485,6266,1,1,5,5,85,485,485,4485,4485,170,171,'NQAAAA','AHJAAA','OOOOxx'
+9623,6267,1,3,3,3,23,623,1623,4623,9623,46,47,'DGAAAA','BHJAAA','VVVVxx'
+3670,6268,0,2,0,10,70,670,1670,3670,3670,140,141,'ELAAAA','CHJAAA','AAAAxx'
+1575,6269,1,3,5,15,75,575,1575,1575,1575,150,151,'PIAAAA','DHJAAA','HHHHxx'
+5874,6270,0,2,4,14,74,874,1874,874,5874,148,149,'YRAAAA','EHJAAA','OOOOxx'
+673,6271,1,1,3,13,73,673,673,673,673,146,147,'XZAAAA','FHJAAA','VVVVxx'
+9712,6272,0,0,2,12,12,712,1712,4712,9712,24,25,'OJAAAA','GHJAAA','AAAAxx'
+7729,6273,1,1,9,9,29,729,1729,2729,7729,58,59,'HLAAAA','HHJAAA','HHHHxx'
+4318,6274,0,2,8,18,18,318,318,4318,4318,36,37,'CKAAAA','IHJAAA','OOOOxx'
+4143,6275,1,3,3,3,43,143,143,4143,4143,86,87,'JDAAAA','JHJAAA','VVVVxx'
+4932,6276,0,0,2,12,32,932,932,4932,4932,64,65,'SHAAAA','KHJAAA','AAAAxx'
+5835,6277,1,3,5,15,35,835,1835,835,5835,70,71,'LQAAAA','LHJAAA','HHHHxx'
+4966,6278,0,2,6,6,66,966,966,4966,4966,132,133,'AJAAAA','MHJAAA','OOOOxx'
+6711,6279,1,3,1,11,11,711,711,1711,6711,22,23,'DYAAAA','NHJAAA','VVVVxx'
+3990,6280,0,2,0,10,90,990,1990,3990,3990,180,181,'MXAAAA','OHJAAA','AAAAxx'
+990,6281,0,2,0,10,90,990,990,990,990,180,181,'CMAAAA','PHJAAA','HHHHxx'
+220,6282,0,0,0,0,20,220,220,220,220,40,41,'MIAAAA','QHJAAA','OOOOxx'
+5693,6283,1,1,3,13,93,693,1693,693,5693,186,187,'ZKAAAA','RHJAAA','VVVVxx'
+3662,6284,0,2,2,2,62,662,1662,3662,3662,124,125,'WKAAAA','SHJAAA','AAAAxx'
+7844,6285,0,0,4,4,44,844,1844,2844,7844,88,89,'SPAAAA','THJAAA','HHHHxx'
+5515,6286,1,3,5,15,15,515,1515,515,5515,30,31,'DEAAAA','UHJAAA','OOOOxx'
+5551,6287,1,3,1,11,51,551,1551,551,5551,102,103,'NFAAAA','VHJAAA','VVVVxx'
+2358,6288,0,2,8,18,58,358,358,2358,2358,116,117,'SMAAAA','WHJAAA','AAAAxx'
+8977,6289,1,1,7,17,77,977,977,3977,8977,154,155,'HHAAAA','XHJAAA','HHHHxx'
+7040,6290,0,0,0,0,40,40,1040,2040,7040,80,81,'UKAAAA','YHJAAA','OOOOxx'
+105,6291,1,1,5,5,5,105,105,105,105,10,11,'BEAAAA','ZHJAAA','VVVVxx'
+4496,6292,0,0,6,16,96,496,496,4496,4496,192,193,'YQAAAA','AIJAAA','AAAAxx'
+2254,6293,0,2,4,14,54,254,254,2254,2254,108,109,'SIAAAA','BIJAAA','HHHHxx'
+411,6294,1,3,1,11,11,411,411,411,411,22,23,'VPAAAA','CIJAAA','OOOOxx'
+2373,6295,1,1,3,13,73,373,373,2373,2373,146,147,'HNAAAA','DIJAAA','VVVVxx'
+3477,6296,1,1,7,17,77,477,1477,3477,3477,154,155,'TDAAAA','EIJAAA','AAAAxx'
+8964,6297,0,0,4,4,64,964,964,3964,8964,128,129,'UGAAAA','FIJAAA','HHHHxx'
+8471,6298,1,3,1,11,71,471,471,3471,8471,142,143,'VNAAAA','GIJAAA','OOOOxx'
+5776,6299,0,0,6,16,76,776,1776,776,5776,152,153,'EOAAAA','HIJAAA','VVVVxx'
+9921,6300,1,1,1,1,21,921,1921,4921,9921,42,43,'PRAAAA','IIJAAA','AAAAxx'
+7816,6301,0,0,6,16,16,816,1816,2816,7816,32,33,'QOAAAA','JIJAAA','HHHHxx'
+2439,6302,1,3,9,19,39,439,439,2439,2439,78,79,'VPAAAA','KIJAAA','OOOOxx'
+9298,6303,0,2,8,18,98,298,1298,4298,9298,196,197,'QTAAAA','LIJAAA','VVVVxx'
+9424,6304,0,0,4,4,24,424,1424,4424,9424,48,49,'MYAAAA','MIJAAA','AAAAxx'
+3252,6305,0,0,2,12,52,252,1252,3252,3252,104,105,'CVAAAA','NIJAAA','HHHHxx'
+1401,6306,1,1,1,1,1,401,1401,1401,1401,2,3,'XBAAAA','OIJAAA','OOOOxx'
+9632,6307,0,0,2,12,32,632,1632,4632,9632,64,65,'MGAAAA','PIJAAA','VVVVxx'
+370,6308,0,2,0,10,70,370,370,370,370,140,141,'GOAAAA','QIJAAA','AAAAxx'
+728,6309,0,0,8,8,28,728,728,728,728,56,57,'ACAAAA','RIJAAA','HHHHxx'
+2888,6310,0,0,8,8,88,888,888,2888,2888,176,177,'CHAAAA','SIJAAA','OOOOxx'
+1441,6311,1,1,1,1,41,441,1441,1441,1441,82,83,'LDAAAA','TIJAAA','VVVVxx'
+8308,6312,0,0,8,8,8,308,308,3308,8308,16,17,'OHAAAA','UIJAAA','AAAAxx'
+2165,6313,1,1,5,5,65,165,165,2165,2165,130,131,'HFAAAA','VIJAAA','HHHHxx'
+6359,6314,1,3,9,19,59,359,359,1359,6359,118,119,'PKAAAA','WIJAAA','OOOOxx'
+9637,6315,1,1,7,17,37,637,1637,4637,9637,74,75,'RGAAAA','XIJAAA','VVVVxx'
+5208,6316,0,0,8,8,8,208,1208,208,5208,16,17,'ISAAAA','YIJAAA','AAAAxx'
+4705,6317,1,1,5,5,5,705,705,4705,4705,10,11,'ZYAAAA','ZIJAAA','HHHHxx'
+2341,6318,1,1,1,1,41,341,341,2341,2341,82,83,'BMAAAA','AJJAAA','OOOOxx'
+8539,6319,1,3,9,19,39,539,539,3539,8539,78,79,'LQAAAA','BJJAAA','VVVVxx'
+7528,6320,0,0,8,8,28,528,1528,2528,7528,56,57,'ODAAAA','CJJAAA','AAAAxx'
+7969,6321,1,1,9,9,69,969,1969,2969,7969,138,139,'NUAAAA','DJJAAA','HHHHxx'
+6381,6322,1,1,1,1,81,381,381,1381,6381,162,163,'LLAAAA','EJJAAA','OOOOxx'
+4906,6323,0,2,6,6,6,906,906,4906,4906,12,13,'SGAAAA','FJJAAA','VVVVxx'
+8697,6324,1,1,7,17,97,697,697,3697,8697,194,195,'NWAAAA','GJJAAA','AAAAxx'
+6301,6325,1,1,1,1,1,301,301,1301,6301,2,3,'JIAAAA','HJJAAA','HHHHxx'
+7554,6326,0,2,4,14,54,554,1554,2554,7554,108,109,'OEAAAA','IJJAAA','OOOOxx'
+5107,6327,1,3,7,7,7,107,1107,107,5107,14,15,'LOAAAA','JJJAAA','VVVVxx'
+5046,6328,0,2,6,6,46,46,1046,46,5046,92,93,'CMAAAA','KJJAAA','AAAAxx'
+4063,6329,1,3,3,3,63,63,63,4063,4063,126,127,'HAAAAA','LJJAAA','HHHHxx'
+7580,6330,0,0,0,0,80,580,1580,2580,7580,160,161,'OFAAAA','MJJAAA','OOOOxx'
+2245,6331,1,1,5,5,45,245,245,2245,2245,90,91,'JIAAAA','NJJAAA','VVVVxx'
+3711,6332,1,3,1,11,11,711,1711,3711,3711,22,23,'TMAAAA','OJJAAA','AAAAxx'
+3220,6333,0,0,0,0,20,220,1220,3220,3220,40,41,'WTAAAA','PJJAAA','HHHHxx'
+6463,6334,1,3,3,3,63,463,463,1463,6463,126,127,'POAAAA','QJJAAA','OOOOxx'
+8196,6335,0,0,6,16,96,196,196,3196,8196,192,193,'GDAAAA','RJJAAA','VVVVxx'
+9875,6336,1,3,5,15,75,875,1875,4875,9875,150,151,'VPAAAA','SJJAAA','AAAAxx'
+1333,6337,1,1,3,13,33,333,1333,1333,1333,66,67,'HZAAAA','TJJAAA','HHHHxx'
+7880,6338,0,0,0,0,80,880,1880,2880,7880,160,161,'CRAAAA','UJJAAA','OOOOxx'
+2322,6339,0,2,2,2,22,322,322,2322,2322,44,45,'ILAAAA','VJJAAA','VVVVxx'
+2163,6340,1,3,3,3,63,163,163,2163,2163,126,127,'FFAAAA','WJJAAA','AAAAxx'
+421,6341,1,1,1,1,21,421,421,421,421,42,43,'FQAAAA','XJJAAA','HHHHxx'
+2042,6342,0,2,2,2,42,42,42,2042,2042,84,85,'OAAAAA','YJJAAA','OOOOxx'
+1424,6343,0,0,4,4,24,424,1424,1424,1424,48,49,'UCAAAA','ZJJAAA','VVVVxx'
+7870,6344,0,2,0,10,70,870,1870,2870,7870,140,141,'SQAAAA','AKJAAA','AAAAxx'
+2653,6345,1,1,3,13,53,653,653,2653,2653,106,107,'BYAAAA','BKJAAA','HHHHxx'
+4216,6346,0,0,6,16,16,216,216,4216,4216,32,33,'EGAAAA','CKJAAA','OOOOxx'
+1515,6347,1,3,5,15,15,515,1515,1515,1515,30,31,'HGAAAA','DKJAAA','VVVVxx'
+7860,6348,0,0,0,0,60,860,1860,2860,7860,120,121,'IQAAAA','EKJAAA','AAAAxx'
+2984,6349,0,0,4,4,84,984,984,2984,2984,168,169,'UKAAAA','FKJAAA','HHHHxx'
+6269,6350,1,1,9,9,69,269,269,1269,6269,138,139,'DHAAAA','GKJAAA','OOOOxx'
+2609,6351,1,1,9,9,9,609,609,2609,2609,18,19,'JWAAAA','HKJAAA','VVVVxx'
+3671,6352,1,3,1,11,71,671,1671,3671,3671,142,143,'FLAAAA','IKJAAA','AAAAxx'
+4544,6353,0,0,4,4,44,544,544,4544,4544,88,89,'USAAAA','JKJAAA','HHHHxx'
+4668,6354,0,0,8,8,68,668,668,4668,4668,136,137,'OXAAAA','KKJAAA','OOOOxx'
+2565,6355,1,1,5,5,65,565,565,2565,2565,130,131,'RUAAAA','LKJAAA','VVVVxx'
+3126,6356,0,2,6,6,26,126,1126,3126,3126,52,53,'GQAAAA','MKJAAA','AAAAxx'
+7573,6357,1,1,3,13,73,573,1573,2573,7573,146,147,'HFAAAA','NKJAAA','HHHHxx'
+1476,6358,0,0,6,16,76,476,1476,1476,1476,152,153,'UEAAAA','OKJAAA','OOOOxx'
+2146,6359,0,2,6,6,46,146,146,2146,2146,92,93,'OEAAAA','PKJAAA','VVVVxx'
+9990,6360,0,2,0,10,90,990,1990,4990,9990,180,181,'GUAAAA','QKJAAA','AAAAxx'
+2530,6361,0,2,0,10,30,530,530,2530,2530,60,61,'ITAAAA','RKJAAA','HHHHxx'
+9288,6362,0,0,8,8,88,288,1288,4288,9288,176,177,'GTAAAA','SKJAAA','OOOOxx'
+9755,6363,1,3,5,15,55,755,1755,4755,9755,110,111,'FLAAAA','TKJAAA','VVVVxx'
+5305,6364,1,1,5,5,5,305,1305,305,5305,10,11,'BWAAAA','UKJAAA','AAAAxx'
+2495,6365,1,3,5,15,95,495,495,2495,2495,190,191,'ZRAAAA','VKJAAA','HHHHxx'
+5443,6366,1,3,3,3,43,443,1443,443,5443,86,87,'JBAAAA','WKJAAA','OOOOxx'
+1930,6367,0,2,0,10,30,930,1930,1930,1930,60,61,'GWAAAA','XKJAAA','VVVVxx'
+9134,6368,0,2,4,14,34,134,1134,4134,9134,68,69,'INAAAA','YKJAAA','AAAAxx'
+2844,6369,0,0,4,4,44,844,844,2844,2844,88,89,'KFAAAA','ZKJAAA','HHHHxx'
+896,6370,0,0,6,16,96,896,896,896,896,192,193,'MIAAAA','ALJAAA','OOOOxx'
+1330,6371,0,2,0,10,30,330,1330,1330,1330,60,61,'EZAAAA','BLJAAA','VVVVxx'
+8980,6372,0,0,0,0,80,980,980,3980,8980,160,161,'KHAAAA','CLJAAA','AAAAxx'
+5940,6373,0,0,0,0,40,940,1940,940,5940,80,81,'MUAAAA','DLJAAA','HHHHxx'
+6494,6374,0,2,4,14,94,494,494,1494,6494,188,189,'UPAAAA','ELJAAA','OOOOxx'
+165,6375,1,1,5,5,65,165,165,165,165,130,131,'JGAAAA','FLJAAA','VVVVxx'
+2510,6376,0,2,0,10,10,510,510,2510,2510,20,21,'OSAAAA','GLJAAA','AAAAxx'
+9950,6377,0,2,0,10,50,950,1950,4950,9950,100,101,'SSAAAA','HLJAAA','HHHHxx'
+3854,6378,0,2,4,14,54,854,1854,3854,3854,108,109,'GSAAAA','ILJAAA','OOOOxx'
+7493,6379,1,1,3,13,93,493,1493,2493,7493,186,187,'FCAAAA','JLJAAA','VVVVxx'
+4124,6380,0,0,4,4,24,124,124,4124,4124,48,49,'QCAAAA','KLJAAA','AAAAxx'
+8563,6381,1,3,3,3,63,563,563,3563,8563,126,127,'JRAAAA','LLJAAA','HHHHxx'
+8735,6382,1,3,5,15,35,735,735,3735,8735,70,71,'ZXAAAA','MLJAAA','OOOOxx'
+9046,6383,0,2,6,6,46,46,1046,4046,9046,92,93,'YJAAAA','NLJAAA','VVVVxx'
+1754,6384,0,2,4,14,54,754,1754,1754,1754,108,109,'MPAAAA','OLJAAA','AAAAxx'
+6954,6385,0,2,4,14,54,954,954,1954,6954,108,109,'MHAAAA','PLJAAA','HHHHxx'
+4953,6386,1,1,3,13,53,953,953,4953,4953,106,107,'NIAAAA','QLJAAA','OOOOxx'
+8142,6387,0,2,2,2,42,142,142,3142,8142,84,85,'EBAAAA','RLJAAA','VVVVxx'
+9661,6388,1,1,1,1,61,661,1661,4661,9661,122,123,'PHAAAA','SLJAAA','AAAAxx'
+6415,6389,1,3,5,15,15,415,415,1415,6415,30,31,'TMAAAA','TLJAAA','HHHHxx'
+5782,6390,0,2,2,2,82,782,1782,782,5782,164,165,'KOAAAA','ULJAAA','OOOOxx'
+7721,6391,1,1,1,1,21,721,1721,2721,7721,42,43,'ZKAAAA','VLJAAA','VVVVxx'
+580,6392,0,0,0,0,80,580,580,580,580,160,161,'IWAAAA','WLJAAA','AAAAxx'
+3784,6393,0,0,4,4,84,784,1784,3784,3784,168,169,'OPAAAA','XLJAAA','HHHHxx'
+9810,6394,0,2,0,10,10,810,1810,4810,9810,20,21,'INAAAA','YLJAAA','OOOOxx'
+8488,6395,0,0,8,8,88,488,488,3488,8488,176,177,'MOAAAA','ZLJAAA','VVVVxx'
+6214,6396,0,2,4,14,14,214,214,1214,6214,28,29,'AFAAAA','AMJAAA','AAAAxx'
+9433,6397,1,1,3,13,33,433,1433,4433,9433,66,67,'VYAAAA','BMJAAA','HHHHxx'
+9959,6398,1,3,9,19,59,959,1959,4959,9959,118,119,'BTAAAA','CMJAAA','OOOOxx'
+554,6399,0,2,4,14,54,554,554,554,554,108,109,'IVAAAA','DMJAAA','VVVVxx'
+6646,6400,0,2,6,6,46,646,646,1646,6646,92,93,'QVAAAA','EMJAAA','AAAAxx'
+1138,6401,0,2,8,18,38,138,1138,1138,1138,76,77,'URAAAA','FMJAAA','HHHHxx'
+9331,6402,1,3,1,11,31,331,1331,4331,9331,62,63,'XUAAAA','GMJAAA','OOOOxx'
+7331,6403,1,3,1,11,31,331,1331,2331,7331,62,63,'ZVAAAA','HMJAAA','VVVVxx'
+3482,6404,0,2,2,2,82,482,1482,3482,3482,164,165,'YDAAAA','IMJAAA','AAAAxx'
+3795,6405,1,3,5,15,95,795,1795,3795,3795,190,191,'ZPAAAA','JMJAAA','HHHHxx'
+2441,6406,1,1,1,1,41,441,441,2441,2441,82,83,'XPAAAA','KMJAAA','OOOOxx'
+5229,6407,1,1,9,9,29,229,1229,229,5229,58,59,'DTAAAA','LMJAAA','VVVVxx'
+7012,6408,0,0,2,12,12,12,1012,2012,7012,24,25,'SJAAAA','MMJAAA','AAAAxx'
+7036,6409,0,0,6,16,36,36,1036,2036,7036,72,73,'QKAAAA','NMJAAA','HHHHxx'
+8243,6410,1,3,3,3,43,243,243,3243,8243,86,87,'BFAAAA','OMJAAA','OOOOxx'
+9320,6411,0,0,0,0,20,320,1320,4320,9320,40,41,'MUAAAA','PMJAAA','VVVVxx'
+4693,6412,1,1,3,13,93,693,693,4693,4693,186,187,'NYAAAA','QMJAAA','AAAAxx'
+6741,6413,1,1,1,1,41,741,741,1741,6741,82,83,'HZAAAA','RMJAAA','HHHHxx'
+2997,6414,1,1,7,17,97,997,997,2997,2997,194,195,'HLAAAA','SMJAAA','OOOOxx'
+4838,6415,0,2,8,18,38,838,838,4838,4838,76,77,'CEAAAA','TMJAAA','VVVVxx'
+6945,6416,1,1,5,5,45,945,945,1945,6945,90,91,'DHAAAA','UMJAAA','AAAAxx'
+8253,6417,1,1,3,13,53,253,253,3253,8253,106,107,'LFAAAA','VMJAAA','HHHHxx'
+8989,6418,1,1,9,9,89,989,989,3989,8989,178,179,'THAAAA','WMJAAA','OOOOxx'
+2640,6419,0,0,0,0,40,640,640,2640,2640,80,81,'OXAAAA','XMJAAA','VVVVxx'
+5647,6420,1,3,7,7,47,647,1647,647,5647,94,95,'FJAAAA','YMJAAA','AAAAxx'
+7186,6421,0,2,6,6,86,186,1186,2186,7186,172,173,'KQAAAA','ZMJAAA','HHHHxx'
+3278,6422,0,2,8,18,78,278,1278,3278,3278,156,157,'CWAAAA','ANJAAA','OOOOxx'
+8546,6423,0,2,6,6,46,546,546,3546,8546,92,93,'SQAAAA','BNJAAA','VVVVxx'
+8297,6424,1,1,7,17,97,297,297,3297,8297,194,195,'DHAAAA','CNJAAA','AAAAxx'
+9534,6425,0,2,4,14,34,534,1534,4534,9534,68,69,'SCAAAA','DNJAAA','HHHHxx'
+9618,6426,0,2,8,18,18,618,1618,4618,9618,36,37,'YFAAAA','ENJAAA','OOOOxx'
+8839,6427,1,3,9,19,39,839,839,3839,8839,78,79,'ZBAAAA','FNJAAA','VVVVxx'
+7605,6428,1,1,5,5,5,605,1605,2605,7605,10,11,'NGAAAA','GNJAAA','AAAAxx'
+6421,6429,1,1,1,1,21,421,421,1421,6421,42,43,'ZMAAAA','HNJAAA','HHHHxx'
+3582,6430,0,2,2,2,82,582,1582,3582,3582,164,165,'UHAAAA','INJAAA','OOOOxx'
+485,6431,1,1,5,5,85,485,485,485,485,170,171,'RSAAAA','JNJAAA','VVVVxx'
+1925,6432,1,1,5,5,25,925,1925,1925,1925,50,51,'BWAAAA','KNJAAA','AAAAxx'
+4296,6433,0,0,6,16,96,296,296,4296,4296,192,193,'GJAAAA','LNJAAA','HHHHxx'
+8874,6434,0,2,4,14,74,874,874,3874,8874,148,149,'IDAAAA','MNJAAA','OOOOxx'
+1443,6435,1,3,3,3,43,443,1443,1443,1443,86,87,'NDAAAA','NNJAAA','VVVVxx'
+4239,6436,1,3,9,19,39,239,239,4239,4239,78,79,'BHAAAA','ONJAAA','AAAAxx'
+9760,6437,0,0,0,0,60,760,1760,4760,9760,120,121,'KLAAAA','PNJAAA','HHHHxx'
+136,6438,0,0,6,16,36,136,136,136,136,72,73,'GFAAAA','QNJAAA','OOOOxx'
+6472,6439,0,0,2,12,72,472,472,1472,6472,144,145,'YOAAAA','RNJAAA','VVVVxx'
+4896,6440,0,0,6,16,96,896,896,4896,4896,192,193,'IGAAAA','SNJAAA','AAAAxx'
+9028,6441,0,0,8,8,28,28,1028,4028,9028,56,57,'GJAAAA','TNJAAA','HHHHxx'
+8354,6442,0,2,4,14,54,354,354,3354,8354,108,109,'IJAAAA','UNJAAA','OOOOxx'
+8648,6443,0,0,8,8,48,648,648,3648,8648,96,97,'QUAAAA','VNJAAA','VVVVxx'
+918,6444,0,2,8,18,18,918,918,918,918,36,37,'IJAAAA','WNJAAA','AAAAxx'
+6606,6445,0,2,6,6,6,606,606,1606,6606,12,13,'CUAAAA','XNJAAA','HHHHxx'
+2462,6446,0,2,2,2,62,462,462,2462,2462,124,125,'SQAAAA','YNJAAA','OOOOxx'
+7536,6447,0,0,6,16,36,536,1536,2536,7536,72,73,'WDAAAA','ZNJAAA','VVVVxx'
+1700,6448,0,0,0,0,0,700,1700,1700,1700,0,1,'KNAAAA','AOJAAA','AAAAxx'
+6740,6449,0,0,0,0,40,740,740,1740,6740,80,81,'GZAAAA','BOJAAA','HHHHxx'
+28,6450,0,0,8,8,28,28,28,28,28,56,57,'CBAAAA','COJAAA','OOOOxx'
+6044,6451,0,0,4,4,44,44,44,1044,6044,88,89,'MYAAAA','DOJAAA','VVVVxx'
+5053,6452,1,1,3,13,53,53,1053,53,5053,106,107,'JMAAAA','EOJAAA','AAAAxx'
+4832,6453,0,0,2,12,32,832,832,4832,4832,64,65,'WDAAAA','FOJAAA','HHHHxx'
+9145,6454,1,1,5,5,45,145,1145,4145,9145,90,91,'TNAAAA','GOJAAA','OOOOxx'
+5482,6455,0,2,2,2,82,482,1482,482,5482,164,165,'WCAAAA','HOJAAA','VVVVxx'
+7644,6456,0,0,4,4,44,644,1644,2644,7644,88,89,'AIAAAA','IOJAAA','AAAAxx'
+2128,6457,0,0,8,8,28,128,128,2128,2128,56,57,'WDAAAA','JOJAAA','HHHHxx'
+6583,6458,1,3,3,3,83,583,583,1583,6583,166,167,'FTAAAA','KOJAAA','OOOOxx'
+4224,6459,0,0,4,4,24,224,224,4224,4224,48,49,'MGAAAA','LOJAAA','VVVVxx'
+5253,6460,1,1,3,13,53,253,1253,253,5253,106,107,'BUAAAA','MOJAAA','AAAAxx'
+8219,6461,1,3,9,19,19,219,219,3219,8219,38,39,'DEAAAA','NOJAAA','HHHHxx'
+8113,6462,1,1,3,13,13,113,113,3113,8113,26,27,'BAAAAA','OOJAAA','OOOOxx'
+3616,6463,0,0,6,16,16,616,1616,3616,3616,32,33,'CJAAAA','POJAAA','VVVVxx'
+1361,6464,1,1,1,1,61,361,1361,1361,1361,122,123,'JAAAAA','QOJAAA','AAAAxx'
+949,6465,1,1,9,9,49,949,949,949,949,98,99,'NKAAAA','ROJAAA','HHHHxx'
+8582,6466,0,2,2,2,82,582,582,3582,8582,164,165,'CSAAAA','SOJAAA','OOOOxx'
+5104,6467,0,0,4,4,4,104,1104,104,5104,8,9,'IOAAAA','TOJAAA','VVVVxx'
+6146,6468,0,2,6,6,46,146,146,1146,6146,92,93,'KCAAAA','UOJAAA','AAAAxx'
+7681,6469,1,1,1,1,81,681,1681,2681,7681,162,163,'LJAAAA','VOJAAA','HHHHxx'
+1904,6470,0,0,4,4,4,904,1904,1904,1904,8,9,'GVAAAA','WOJAAA','OOOOxx'
+1989,6471,1,1,9,9,89,989,1989,1989,1989,178,179,'NYAAAA','XOJAAA','VVVVxx'
+4179,6472,1,3,9,19,79,179,179,4179,4179,158,159,'TEAAAA','YOJAAA','AAAAxx'
+1739,6473,1,3,9,19,39,739,1739,1739,1739,78,79,'XOAAAA','ZOJAAA','HHHHxx'
+2447,6474,1,3,7,7,47,447,447,2447,2447,94,95,'DQAAAA','APJAAA','OOOOxx'
+3029,6475,1,1,9,9,29,29,1029,3029,3029,58,59,'NMAAAA','BPJAAA','VVVVxx'
+9783,6476,1,3,3,3,83,783,1783,4783,9783,166,167,'HMAAAA','CPJAAA','AAAAxx'
+8381,6477,1,1,1,1,81,381,381,3381,8381,162,163,'JKAAAA','DPJAAA','HHHHxx'
+8755,6478,1,3,5,15,55,755,755,3755,8755,110,111,'TYAAAA','EPJAAA','OOOOxx'
+8384,6479,0,0,4,4,84,384,384,3384,8384,168,169,'MKAAAA','FPJAAA','VVVVxx'
+7655,6480,1,3,5,15,55,655,1655,2655,7655,110,111,'LIAAAA','GPJAAA','AAAAxx'
+4766,6481,0,2,6,6,66,766,766,4766,4766,132,133,'IBAAAA','HPJAAA','HHHHxx'
+3324,6482,0,0,4,4,24,324,1324,3324,3324,48,49,'WXAAAA','IPJAAA','OOOOxx'
+5022,6483,0,2,2,2,22,22,1022,22,5022,44,45,'ELAAAA','JPJAAA','VVVVxx'
+2856,6484,0,0,6,16,56,856,856,2856,2856,112,113,'WFAAAA','KPJAAA','AAAAxx'
+6503,6485,1,3,3,3,3,503,503,1503,6503,6,7,'DQAAAA','LPJAAA','HHHHxx'
+6872,6486,0,0,2,12,72,872,872,1872,6872,144,145,'IEAAAA','MPJAAA','OOOOxx'
+1663,6487,1,3,3,3,63,663,1663,1663,1663,126,127,'ZLAAAA','NPJAAA','VVVVxx'
+6964,6488,0,0,4,4,64,964,964,1964,6964,128,129,'WHAAAA','OPJAAA','AAAAxx'
+4622,6489,0,2,2,2,22,622,622,4622,4622,44,45,'UVAAAA','PPJAAA','HHHHxx'
+6089,6490,1,1,9,9,89,89,89,1089,6089,178,179,'FAAAAA','QPJAAA','OOOOxx'
+8567,6491,1,3,7,7,67,567,567,3567,8567,134,135,'NRAAAA','RPJAAA','VVVVxx'
+597,6492,1,1,7,17,97,597,597,597,597,194,195,'ZWAAAA','SPJAAA','AAAAxx'
+4222,6493,0,2,2,2,22,222,222,4222,4222,44,45,'KGAAAA','TPJAAA','HHHHxx'
+9322,6494,0,2,2,2,22,322,1322,4322,9322,44,45,'OUAAAA','UPJAAA','OOOOxx'
+624,6495,0,0,4,4,24,624,624,624,624,48,49,'AYAAAA','VPJAAA','VVVVxx'
+4329,6496,1,1,9,9,29,329,329,4329,4329,58,59,'NKAAAA','WPJAAA','AAAAxx'
+6781,6497,1,1,1,1,81,781,781,1781,6781,162,163,'VAAAAA','XPJAAA','HHHHxx'
+1673,6498,1,1,3,13,73,673,1673,1673,1673,146,147,'JMAAAA','YPJAAA','OOOOxx'
+6633,6499,1,1,3,13,33,633,633,1633,6633,66,67,'DVAAAA','ZPJAAA','VVVVxx'
+2569,6500,1,1,9,9,69,569,569,2569,2569,138,139,'VUAAAA','AQJAAA','AAAAxx'
+4995,6501,1,3,5,15,95,995,995,4995,4995,190,191,'DKAAAA','BQJAAA','HHHHxx'
+2749,6502,1,1,9,9,49,749,749,2749,2749,98,99,'TBAAAA','CQJAAA','OOOOxx'
+9044,6503,0,0,4,4,44,44,1044,4044,9044,88,89,'WJAAAA','DQJAAA','VVVVxx'
+5823,6504,1,3,3,3,23,823,1823,823,5823,46,47,'ZPAAAA','EQJAAA','AAAAxx'
+9366,6505,0,2,6,6,66,366,1366,4366,9366,132,133,'GWAAAA','FQJAAA','HHHHxx'
+1169,6506,1,1,9,9,69,169,1169,1169,1169,138,139,'ZSAAAA','GQJAAA','OOOOxx'
+1300,6507,0,0,0,0,0,300,1300,1300,1300,0,1,'AYAAAA','HQJAAA','VVVVxx'
+9973,6508,1,1,3,13,73,973,1973,4973,9973,146,147,'PTAAAA','IQJAAA','AAAAxx'
+2092,6509,0,0,2,12,92,92,92,2092,2092,184,185,'MCAAAA','JQJAAA','HHHHxx'
+9776,6510,0,0,6,16,76,776,1776,4776,9776,152,153,'AMAAAA','KQJAAA','OOOOxx'
+7612,6511,0,0,2,12,12,612,1612,2612,7612,24,25,'UGAAAA','LQJAAA','VVVVxx'
+7190,6512,0,2,0,10,90,190,1190,2190,7190,180,181,'OQAAAA','MQJAAA','AAAAxx'
+5147,6513,1,3,7,7,47,147,1147,147,5147,94,95,'ZPAAAA','NQJAAA','HHHHxx'
+3722,6514,0,2,2,2,22,722,1722,3722,3722,44,45,'ENAAAA','OQJAAA','OOOOxx'
+5858,6515,0,2,8,18,58,858,1858,858,5858,116,117,'IRAAAA','PQJAAA','VVVVxx'
+3204,6516,0,0,4,4,4,204,1204,3204,3204,8,9,'GTAAAA','QQJAAA','AAAAxx'
+8994,6517,0,2,4,14,94,994,994,3994,8994,188,189,'YHAAAA','RQJAAA','HHHHxx'
+7478,6518,0,2,8,18,78,478,1478,2478,7478,156,157,'QBAAAA','SQJAAA','OOOOxx'
+9624,6519,0,0,4,4,24,624,1624,4624,9624,48,49,'EGAAAA','TQJAAA','VVVVxx'
+6639,6520,1,3,9,19,39,639,639,1639,6639,78,79,'JVAAAA','UQJAAA','AAAAxx'
+369,6521,1,1,9,9,69,369,369,369,369,138,139,'FOAAAA','VQJAAA','HHHHxx'
+7766,6522,0,2,6,6,66,766,1766,2766,7766,132,133,'SMAAAA','WQJAAA','OOOOxx'
+4094,6523,0,2,4,14,94,94,94,4094,4094,188,189,'MBAAAA','XQJAAA','VVVVxx'
+9556,6524,0,0,6,16,56,556,1556,4556,9556,112,113,'ODAAAA','YQJAAA','AAAAxx'
+4887,6525,1,3,7,7,87,887,887,4887,4887,174,175,'ZFAAAA','ZQJAAA','HHHHxx'
+2321,6526,1,1,1,1,21,321,321,2321,2321,42,43,'HLAAAA','ARJAAA','OOOOxx'
+9201,6527,1,1,1,1,1,201,1201,4201,9201,2,3,'XPAAAA','BRJAAA','VVVVxx'
+1627,6528,1,3,7,7,27,627,1627,1627,1627,54,55,'PKAAAA','CRJAAA','AAAAxx'
+150,6529,0,2,0,10,50,150,150,150,150,100,101,'UFAAAA','DRJAAA','HHHHxx'
+8010,6530,0,2,0,10,10,10,10,3010,8010,20,21,'CWAAAA','ERJAAA','OOOOxx'
+8026,6531,0,2,6,6,26,26,26,3026,8026,52,53,'SWAAAA','FRJAAA','VVVVxx'
+5495,6532,1,3,5,15,95,495,1495,495,5495,190,191,'JDAAAA','GRJAAA','AAAAxx'
+6213,6533,1,1,3,13,13,213,213,1213,6213,26,27,'ZEAAAA','HRJAAA','HHHHxx'
+6464,6534,0,0,4,4,64,464,464,1464,6464,128,129,'QOAAAA','IRJAAA','OOOOxx'
+1158,6535,0,2,8,18,58,158,1158,1158,1158,116,117,'OSAAAA','JRJAAA','VVVVxx'
+8669,6536,1,1,9,9,69,669,669,3669,8669,138,139,'LVAAAA','KRJAAA','AAAAxx'
+3225,6537,1,1,5,5,25,225,1225,3225,3225,50,51,'BUAAAA','LRJAAA','HHHHxx'
+1294,6538,0,2,4,14,94,294,1294,1294,1294,188,189,'UXAAAA','MRJAAA','OOOOxx'
+2166,6539,0,2,6,6,66,166,166,2166,2166,132,133,'IFAAAA','NRJAAA','VVVVxx'
+9328,6540,0,0,8,8,28,328,1328,4328,9328,56,57,'UUAAAA','ORJAAA','AAAAxx'
+8431,6541,1,3,1,11,31,431,431,3431,8431,62,63,'HMAAAA','PRJAAA','HHHHxx'
+7100,6542,0,0,0,0,0,100,1100,2100,7100,0,1,'CNAAAA','QRJAAA','OOOOxx'
+8126,6543,0,2,6,6,26,126,126,3126,8126,52,53,'OAAAAA','RRJAAA','VVVVxx'
+2185,6544,1,1,5,5,85,185,185,2185,2185,170,171,'BGAAAA','SRJAAA','AAAAxx'
+5697,6545,1,1,7,17,97,697,1697,697,5697,194,195,'DLAAAA','TRJAAA','HHHHxx'
+5531,6546,1,3,1,11,31,531,1531,531,5531,62,63,'TEAAAA','URJAAA','OOOOxx'
+3020,6547,0,0,0,0,20,20,1020,3020,3020,40,41,'EMAAAA','VRJAAA','VVVVxx'
+3076,6548,0,0,6,16,76,76,1076,3076,3076,152,153,'IOAAAA','WRJAAA','AAAAxx'
+9228,6549,0,0,8,8,28,228,1228,4228,9228,56,57,'YQAAAA','XRJAAA','HHHHxx'
+1734,6550,0,2,4,14,34,734,1734,1734,1734,68,69,'SOAAAA','YRJAAA','OOOOxx'
+7616,6551,0,0,6,16,16,616,1616,2616,7616,32,33,'YGAAAA','ZRJAAA','VVVVxx'
+9059,6552,1,3,9,19,59,59,1059,4059,9059,118,119,'LKAAAA','ASJAAA','AAAAxx'
+323,6553,1,3,3,3,23,323,323,323,323,46,47,'LMAAAA','BSJAAA','HHHHxx'
+1283,6554,1,3,3,3,83,283,1283,1283,1283,166,167,'JXAAAA','CSJAAA','OOOOxx'
+9535,6555,1,3,5,15,35,535,1535,4535,9535,70,71,'TCAAAA','DSJAAA','VVVVxx'
+2580,6556,0,0,0,0,80,580,580,2580,2580,160,161,'GVAAAA','ESJAAA','AAAAxx'
+7633,6557,1,1,3,13,33,633,1633,2633,7633,66,67,'PHAAAA','FSJAAA','HHHHxx'
+9497,6558,1,1,7,17,97,497,1497,4497,9497,194,195,'HBAAAA','GSJAAA','OOOOxx'
+9842,6559,0,2,2,2,42,842,1842,4842,9842,84,85,'OOAAAA','HSJAAA','VVVVxx'
+3426,6560,0,2,6,6,26,426,1426,3426,3426,52,53,'UBAAAA','ISJAAA','AAAAxx'
+7650,6561,0,2,0,10,50,650,1650,2650,7650,100,101,'GIAAAA','JSJAAA','HHHHxx'
+9935,6562,1,3,5,15,35,935,1935,4935,9935,70,71,'DSAAAA','KSJAAA','OOOOxx'
+9354,6563,0,2,4,14,54,354,1354,4354,9354,108,109,'UVAAAA','LSJAAA','VVVVxx'
+5569,6564,1,1,9,9,69,569,1569,569,5569,138,139,'FGAAAA','MSJAAA','AAAAxx'
+5765,6565,1,1,5,5,65,765,1765,765,5765,130,131,'TNAAAA','NSJAAA','HHHHxx'
+7283,6566,1,3,3,3,83,283,1283,2283,7283,166,167,'DUAAAA','OSJAAA','OOOOxx'
+1068,6567,0,0,8,8,68,68,1068,1068,1068,136,137,'CPAAAA','PSJAAA','VVVVxx'
+1641,6568,1,1,1,1,41,641,1641,1641,1641,82,83,'DLAAAA','QSJAAA','AAAAxx'
+1688,6569,0,0,8,8,88,688,1688,1688,1688,176,177,'YMAAAA','RSJAAA','HHHHxx'
+1133,6570,1,1,3,13,33,133,1133,1133,1133,66,67,'PRAAAA','SSJAAA','OOOOxx'
+4493,6571,1,1,3,13,93,493,493,4493,4493,186,187,'VQAAAA','TSJAAA','VVVVxx'
+3354,6572,0,2,4,14,54,354,1354,3354,3354,108,109,'AZAAAA','USJAAA','AAAAxx'
+4029,6573,1,1,9,9,29,29,29,4029,4029,58,59,'ZYAAAA','VSJAAA','HHHHxx'
+6704,6574,0,0,4,4,4,704,704,1704,6704,8,9,'WXAAAA','WSJAAA','OOOOxx'
+3221,6575,1,1,1,1,21,221,1221,3221,3221,42,43,'XTAAAA','XSJAAA','VVVVxx'
+9432,6576,0,0,2,12,32,432,1432,4432,9432,64,65,'UYAAAA','YSJAAA','AAAAxx'
+6990,6577,0,2,0,10,90,990,990,1990,6990,180,181,'WIAAAA','ZSJAAA','HHHHxx'
+1760,6578,0,0,0,0,60,760,1760,1760,1760,120,121,'SPAAAA','ATJAAA','OOOOxx'
+4754,6579,0,2,4,14,54,754,754,4754,4754,108,109,'WAAAAA','BTJAAA','VVVVxx'
+7724,6580,0,0,4,4,24,724,1724,2724,7724,48,49,'CLAAAA','CTJAAA','AAAAxx'
+9487,6581,1,3,7,7,87,487,1487,4487,9487,174,175,'XAAAAA','DTJAAA','HHHHxx'
+166,6582,0,2,6,6,66,166,166,166,166,132,133,'KGAAAA','ETJAAA','OOOOxx'
+5479,6583,1,3,9,19,79,479,1479,479,5479,158,159,'TCAAAA','FTJAAA','VVVVxx'
+8744,6584,0,0,4,4,44,744,744,3744,8744,88,89,'IYAAAA','GTJAAA','AAAAxx'
+5746,6585,0,2,6,6,46,746,1746,746,5746,92,93,'ANAAAA','HTJAAA','HHHHxx'
+907,6586,1,3,7,7,7,907,907,907,907,14,15,'XIAAAA','ITJAAA','OOOOxx'
+3968,6587,0,0,8,8,68,968,1968,3968,3968,136,137,'QWAAAA','JTJAAA','VVVVxx'
+5721,6588,1,1,1,1,21,721,1721,721,5721,42,43,'BMAAAA','KTJAAA','AAAAxx'
+6738,6589,0,2,8,18,38,738,738,1738,6738,76,77,'EZAAAA','LTJAAA','HHHHxx'
+4097,6590,1,1,7,17,97,97,97,4097,4097,194,195,'PBAAAA','MTJAAA','OOOOxx'
+8456,6591,0,0,6,16,56,456,456,3456,8456,112,113,'GNAAAA','NTJAAA','VVVVxx'
+1269,6592,1,1,9,9,69,269,1269,1269,1269,138,139,'VWAAAA','OTJAAA','AAAAxx'
+7997,6593,1,1,7,17,97,997,1997,2997,7997,194,195,'PVAAAA','PTJAAA','HHHHxx'
+9457,6594,1,1,7,17,57,457,1457,4457,9457,114,115,'TZAAAA','QTJAAA','OOOOxx'
+1159,6595,1,3,9,19,59,159,1159,1159,1159,118,119,'PSAAAA','RTJAAA','VVVVxx'
+1631,6596,1,3,1,11,31,631,1631,1631,1631,62,63,'TKAAAA','STJAAA','AAAAxx'
+2019,6597,1,3,9,19,19,19,19,2019,2019,38,39,'RZAAAA','TTJAAA','HHHHxx'
+3186,6598,0,2,6,6,86,186,1186,3186,3186,172,173,'OSAAAA','UTJAAA','OOOOxx'
+5587,6599,1,3,7,7,87,587,1587,587,5587,174,175,'XGAAAA','VTJAAA','VVVVxx'
+9172,6600,0,0,2,12,72,172,1172,4172,9172,144,145,'UOAAAA','WTJAAA','AAAAxx'
+5589,6601,1,1,9,9,89,589,1589,589,5589,178,179,'ZGAAAA','XTJAAA','HHHHxx'
+5103,6602,1,3,3,3,3,103,1103,103,5103,6,7,'HOAAAA','YTJAAA','OOOOxx'
+3177,6603,1,1,7,17,77,177,1177,3177,3177,154,155,'FSAAAA','ZTJAAA','VVVVxx'
+8887,6604,1,3,7,7,87,887,887,3887,8887,174,175,'VDAAAA','AUJAAA','AAAAxx'
+12,6605,0,0,2,12,12,12,12,12,12,24,25,'MAAAAA','BUJAAA','HHHHxx'
+8575,6606,1,3,5,15,75,575,575,3575,8575,150,151,'VRAAAA','CUJAAA','OOOOxx'
+4335,6607,1,3,5,15,35,335,335,4335,4335,70,71,'TKAAAA','DUJAAA','VVVVxx'
+4581,6608,1,1,1,1,81,581,581,4581,4581,162,163,'FUAAAA','EUJAAA','AAAAxx'
+4444,6609,0,0,4,4,44,444,444,4444,4444,88,89,'YOAAAA','FUJAAA','HHHHxx'
+7978,6610,0,2,8,18,78,978,1978,2978,7978,156,157,'WUAAAA','GUJAAA','OOOOxx'
+3081,6611,1,1,1,1,81,81,1081,3081,3081,162,163,'NOAAAA','HUJAAA','VVVVxx'
+4059,6612,1,3,9,19,59,59,59,4059,4059,118,119,'DAAAAA','IUJAAA','AAAAxx'
+5711,6613,1,3,1,11,11,711,1711,711,5711,22,23,'RLAAAA','JUJAAA','HHHHxx'
+7069,6614,1,1,9,9,69,69,1069,2069,7069,138,139,'XLAAAA','KUJAAA','OOOOxx'
+6150,6615,0,2,0,10,50,150,150,1150,6150,100,101,'OCAAAA','LUJAAA','VVVVxx'
+9550,6616,0,2,0,10,50,550,1550,4550,9550,100,101,'IDAAAA','MUJAAA','AAAAxx'
+7087,6617,1,3,7,7,87,87,1087,2087,7087,174,175,'PMAAAA','NUJAAA','HHHHxx'
+9557,6618,1,1,7,17,57,557,1557,4557,9557,114,115,'PDAAAA','OUJAAA','OOOOxx'
+7856,6619,0,0,6,16,56,856,1856,2856,7856,112,113,'EQAAAA','PUJAAA','VVVVxx'
+1115,6620,1,3,5,15,15,115,1115,1115,1115,30,31,'XQAAAA','QUJAAA','AAAAxx'
+1086,6621,0,2,6,6,86,86,1086,1086,1086,172,173,'UPAAAA','RUJAAA','HHHHxx'
+5048,6622,0,0,8,8,48,48,1048,48,5048,96,97,'EMAAAA','SUJAAA','OOOOxx'
+5168,6623,0,0,8,8,68,168,1168,168,5168,136,137,'UQAAAA','TUJAAA','VVVVxx'
+6029,6624,1,1,9,9,29,29,29,1029,6029,58,59,'XXAAAA','UUJAAA','AAAAxx'
+546,6625,0,2,6,6,46,546,546,546,546,92,93,'AVAAAA','VUJAAA','HHHHxx'
+2908,6626,0,0,8,8,8,908,908,2908,2908,16,17,'WHAAAA','WUJAAA','OOOOxx'
+779,6627,1,3,9,19,79,779,779,779,779,158,159,'ZDAAAA','XUJAAA','VVVVxx'
+4202,6628,0,2,2,2,2,202,202,4202,4202,4,5,'QFAAAA','YUJAAA','AAAAxx'
+9984,6629,0,0,4,4,84,984,1984,4984,9984,168,169,'AUAAAA','ZUJAAA','HHHHxx'
+4730,6630,0,2,0,10,30,730,730,4730,4730,60,61,'YZAAAA','AVJAAA','OOOOxx'
+6517,6631,1,1,7,17,17,517,517,1517,6517,34,35,'RQAAAA','BVJAAA','VVVVxx'
+8410,6632,0,2,0,10,10,410,410,3410,8410,20,21,'MLAAAA','CVJAAA','AAAAxx'
+4793,6633,1,1,3,13,93,793,793,4793,4793,186,187,'JCAAAA','DVJAAA','HHHHxx'
+3431,6634,1,3,1,11,31,431,1431,3431,3431,62,63,'ZBAAAA','EVJAAA','OOOOxx'
+2481,6635,1,1,1,1,81,481,481,2481,2481,162,163,'LRAAAA','FVJAAA','VVVVxx'
+3905,6636,1,1,5,5,5,905,1905,3905,3905,10,11,'FUAAAA','GVJAAA','AAAAxx'
+8807,6637,1,3,7,7,7,807,807,3807,8807,14,15,'TAAAAA','HVJAAA','HHHHxx'
+2660,6638,0,0,0,0,60,660,660,2660,2660,120,121,'IYAAAA','IVJAAA','OOOOxx'
+4985,6639,1,1,5,5,85,985,985,4985,4985,170,171,'TJAAAA','JVJAAA','VVVVxx'
+3080,6640,0,0,0,0,80,80,1080,3080,3080,160,161,'MOAAAA','KVJAAA','AAAAxx'
+1090,6641,0,2,0,10,90,90,1090,1090,1090,180,181,'YPAAAA','LVJAAA','HHHHxx'
+6917,6642,1,1,7,17,17,917,917,1917,6917,34,35,'BGAAAA','MVJAAA','OOOOxx'
+5177,6643,1,1,7,17,77,177,1177,177,5177,154,155,'DRAAAA','NVJAAA','VVVVxx'
+2729,6644,1,1,9,9,29,729,729,2729,2729,58,59,'ZAAAAA','OVJAAA','AAAAxx'
+9706,6645,0,2,6,6,6,706,1706,4706,9706,12,13,'IJAAAA','PVJAAA','HHHHxx'
+9929,6646,1,1,9,9,29,929,1929,4929,9929,58,59,'XRAAAA','QVJAAA','OOOOxx'
+1547,6647,1,3,7,7,47,547,1547,1547,1547,94,95,'NHAAAA','RVJAAA','VVVVxx'
+2798,6648,0,2,8,18,98,798,798,2798,2798,196,197,'QDAAAA','SVJAAA','AAAAxx'
+4420,6649,0,0,0,0,20,420,420,4420,4420,40,41,'AOAAAA','TVJAAA','HHHHxx'
+6771,6650,1,3,1,11,71,771,771,1771,6771,142,143,'LAAAAA','UVJAAA','OOOOxx'
+2004,6651,0,0,4,4,4,4,4,2004,2004,8,9,'CZAAAA','VVJAAA','VVVVxx'
+8686,6652,0,2,6,6,86,686,686,3686,8686,172,173,'CWAAAA','WVJAAA','AAAAxx'
+3663,6653,1,3,3,3,63,663,1663,3663,3663,126,127,'XKAAAA','XVJAAA','HHHHxx'
+806,6654,0,2,6,6,6,806,806,806,806,12,13,'AFAAAA','YVJAAA','OOOOxx'
+4309,6655,1,1,9,9,9,309,309,4309,4309,18,19,'TJAAAA','ZVJAAA','VVVVxx'
+7443,6656,1,3,3,3,43,443,1443,2443,7443,86,87,'HAAAAA','AWJAAA','AAAAxx'
+5779,6657,1,3,9,19,79,779,1779,779,5779,158,159,'HOAAAA','BWJAAA','HHHHxx'
+8821,6658,1,1,1,1,21,821,821,3821,8821,42,43,'HBAAAA','CWJAAA','OOOOxx'
+4198,6659,0,2,8,18,98,198,198,4198,4198,196,197,'MFAAAA','DWJAAA','VVVVxx'
+8115,6660,1,3,5,15,15,115,115,3115,8115,30,31,'DAAAAA','EWJAAA','AAAAxx'
+9554,6661,0,2,4,14,54,554,1554,4554,9554,108,109,'MDAAAA','FWJAAA','HHHHxx'
+8956,6662,0,0,6,16,56,956,956,3956,8956,112,113,'MGAAAA','GWJAAA','OOOOxx'
+4733,6663,1,1,3,13,33,733,733,4733,4733,66,67,'BAAAAA','HWJAAA','VVVVxx'
+5417,6664,1,1,7,17,17,417,1417,417,5417,34,35,'JAAAAA','IWJAAA','AAAAxx'
+4792,6665,0,0,2,12,92,792,792,4792,4792,184,185,'ICAAAA','JWJAAA','HHHHxx'
+462,6666,0,2,2,2,62,462,462,462,462,124,125,'URAAAA','KWJAAA','OOOOxx'
+3687,6667,1,3,7,7,87,687,1687,3687,3687,174,175,'VLAAAA','LWJAAA','VVVVxx'
+2013,6668,1,1,3,13,13,13,13,2013,2013,26,27,'LZAAAA','MWJAAA','AAAAxx'
+5386,6669,0,2,6,6,86,386,1386,386,5386,172,173,'EZAAAA','NWJAAA','HHHHxx'
+2816,6670,0,0,6,16,16,816,816,2816,2816,32,33,'IEAAAA','OWJAAA','OOOOxx'
+7827,6671,1,3,7,7,27,827,1827,2827,7827,54,55,'BPAAAA','PWJAAA','VVVVxx'
+5077,6672,1,1,7,17,77,77,1077,77,5077,154,155,'HNAAAA','QWJAAA','AAAAxx'
+6039,6673,1,3,9,19,39,39,39,1039,6039,78,79,'HYAAAA','RWJAAA','HHHHxx'
+215,6674,1,3,5,15,15,215,215,215,215,30,31,'HIAAAA','SWJAAA','OOOOxx'
+855,6675,1,3,5,15,55,855,855,855,855,110,111,'XGAAAA','TWJAAA','VVVVxx'
+9692,6676,0,0,2,12,92,692,1692,4692,9692,184,185,'UIAAAA','UWJAAA','AAAAxx'
+8391,6677,1,3,1,11,91,391,391,3391,8391,182,183,'TKAAAA','VWJAAA','HHHHxx'
+8424,6678,0,0,4,4,24,424,424,3424,8424,48,49,'AMAAAA','WWJAAA','OOOOxx'
+6331,6679,1,3,1,11,31,331,331,1331,6331,62,63,'NJAAAA','XWJAAA','VVVVxx'
+6561,6680,1,1,1,1,61,561,561,1561,6561,122,123,'JSAAAA','YWJAAA','AAAAxx'
+8955,6681,1,3,5,15,55,955,955,3955,8955,110,111,'LGAAAA','ZWJAAA','HHHHxx'
+1764,6682,0,0,4,4,64,764,1764,1764,1764,128,129,'WPAAAA','AXJAAA','OOOOxx'
+6623,6683,1,3,3,3,23,623,623,1623,6623,46,47,'TUAAAA','BXJAAA','VVVVxx'
+2900,6684,0,0,0,0,0,900,900,2900,2900,0,1,'OHAAAA','CXJAAA','AAAAxx'
+7048,6685,0,0,8,8,48,48,1048,2048,7048,96,97,'CLAAAA','DXJAAA','HHHHxx'
+3843,6686,1,3,3,3,43,843,1843,3843,3843,86,87,'VRAAAA','EXJAAA','OOOOxx'
+4855,6687,1,3,5,15,55,855,855,4855,4855,110,111,'TEAAAA','FXJAAA','VVVVxx'
+7383,6688,1,3,3,3,83,383,1383,2383,7383,166,167,'ZXAAAA','GXJAAA','AAAAxx'
+7765,6689,1,1,5,5,65,765,1765,2765,7765,130,131,'RMAAAA','HXJAAA','HHHHxx'
+1125,6690,1,1,5,5,25,125,1125,1125,1125,50,51,'HRAAAA','IXJAAA','OOOOxx'
+755,6691,1,3,5,15,55,755,755,755,755,110,111,'BDAAAA','JXJAAA','VVVVxx'
+2995,6692,1,3,5,15,95,995,995,2995,2995,190,191,'FLAAAA','KXJAAA','AAAAxx'
+8907,6693,1,3,7,7,7,907,907,3907,8907,14,15,'PEAAAA','LXJAAA','HHHHxx'
+9357,6694,1,1,7,17,57,357,1357,4357,9357,114,115,'XVAAAA','MXJAAA','OOOOxx'
+4469,6695,1,1,9,9,69,469,469,4469,4469,138,139,'XPAAAA','NXJAAA','VVVVxx'
+2147,6696,1,3,7,7,47,147,147,2147,2147,94,95,'PEAAAA','OXJAAA','AAAAxx'
+2952,6697,0,0,2,12,52,952,952,2952,2952,104,105,'OJAAAA','PXJAAA','HHHHxx'
+1324,6698,0,0,4,4,24,324,1324,1324,1324,48,49,'YYAAAA','QXJAAA','OOOOxx'
+1173,6699,1,1,3,13,73,173,1173,1173,1173,146,147,'DTAAAA','RXJAAA','VVVVxx'
+3169,6700,1,1,9,9,69,169,1169,3169,3169,138,139,'XRAAAA','SXJAAA','AAAAxx'
+5149,6701,1,1,9,9,49,149,1149,149,5149,98,99,'BQAAAA','TXJAAA','HHHHxx'
+9660,6702,0,0,0,0,60,660,1660,4660,9660,120,121,'OHAAAA','UXJAAA','OOOOxx'
+3446,6703,0,2,6,6,46,446,1446,3446,3446,92,93,'OCAAAA','VXJAAA','VVVVxx'
+6988,6704,0,0,8,8,88,988,988,1988,6988,176,177,'UIAAAA','WXJAAA','AAAAxx'
+5829,6705,1,1,9,9,29,829,1829,829,5829,58,59,'FQAAAA','XXJAAA','HHHHxx'
+7166,6706,0,2,6,6,66,166,1166,2166,7166,132,133,'QPAAAA','YXJAAA','OOOOxx'
+3940,6707,0,0,0,0,40,940,1940,3940,3940,80,81,'OVAAAA','ZXJAAA','VVVVxx'
+2645,6708,1,1,5,5,45,645,645,2645,2645,90,91,'TXAAAA','AYJAAA','AAAAxx'
+478,6709,0,2,8,18,78,478,478,478,478,156,157,'KSAAAA','BYJAAA','HHHHxx'
+1156,6710,0,0,6,16,56,156,1156,1156,1156,112,113,'MSAAAA','CYJAAA','OOOOxx'
+2731,6711,1,3,1,11,31,731,731,2731,2731,62,63,'BBAAAA','DYJAAA','VVVVxx'
+5637,6712,1,1,7,17,37,637,1637,637,5637,74,75,'VIAAAA','EYJAAA','AAAAxx'
+7517,6713,1,1,7,17,17,517,1517,2517,7517,34,35,'DDAAAA','FYJAAA','HHHHxx'
+5331,6714,1,3,1,11,31,331,1331,331,5331,62,63,'BXAAAA','GYJAAA','OOOOxx'
+9640,6715,0,0,0,0,40,640,1640,4640,9640,80,81,'UGAAAA','HYJAAA','VVVVxx'
+4108,6716,0,0,8,8,8,108,108,4108,4108,16,17,'ACAAAA','IYJAAA','AAAAxx'
+1087,6717,1,3,7,7,87,87,1087,1087,1087,174,175,'VPAAAA','JYJAAA','HHHHxx'
+8017,6718,1,1,7,17,17,17,17,3017,8017,34,35,'JWAAAA','KYJAAA','OOOOxx'
+8795,6719,1,3,5,15,95,795,795,3795,8795,190,191,'HAAAAA','LYJAAA','VVVVxx'
+7060,6720,0,0,0,0,60,60,1060,2060,7060,120,121,'OLAAAA','MYJAAA','AAAAxx'
+9450,6721,0,2,0,10,50,450,1450,4450,9450,100,101,'MZAAAA','NYJAAA','HHHHxx'
+390,6722,0,2,0,10,90,390,390,390,390,180,181,'APAAAA','OYJAAA','OOOOxx'
+66,6723,0,2,6,6,66,66,66,66,66,132,133,'OCAAAA','PYJAAA','VVVVxx'
+8789,6724,1,1,9,9,89,789,789,3789,8789,178,179,'BAAAAA','QYJAAA','AAAAxx'
+9260,6725,0,0,0,0,60,260,1260,4260,9260,120,121,'ESAAAA','RYJAAA','HHHHxx'
+6679,6726,1,3,9,19,79,679,679,1679,6679,158,159,'XWAAAA','SYJAAA','OOOOxx'
+9052,6727,0,0,2,12,52,52,1052,4052,9052,104,105,'EKAAAA','TYJAAA','VVVVxx'
+9561,6728,1,1,1,1,61,561,1561,4561,9561,122,123,'TDAAAA','UYJAAA','AAAAxx'
+9725,6729,1,1,5,5,25,725,1725,4725,9725,50,51,'BKAAAA','VYJAAA','HHHHxx'
+6298,6730,0,2,8,18,98,298,298,1298,6298,196,197,'GIAAAA','WYJAAA','OOOOxx'
+8654,6731,0,2,4,14,54,654,654,3654,8654,108,109,'WUAAAA','XYJAAA','VVVVxx'
+8725,6732,1,1,5,5,25,725,725,3725,8725,50,51,'PXAAAA','YYJAAA','AAAAxx'
+9377,6733,1,1,7,17,77,377,1377,4377,9377,154,155,'RWAAAA','ZYJAAA','HHHHxx'
+3807,6734,1,3,7,7,7,807,1807,3807,3807,14,15,'LQAAAA','AZJAAA','OOOOxx'
+8048,6735,0,0,8,8,48,48,48,3048,8048,96,97,'OXAAAA','BZJAAA','VVVVxx'
+764,6736,0,0,4,4,64,764,764,764,764,128,129,'KDAAAA','CZJAAA','AAAAxx'
+9702,6737,0,2,2,2,2,702,1702,4702,9702,4,5,'EJAAAA','DZJAAA','HHHHxx'
+8060,6738,0,0,0,0,60,60,60,3060,8060,120,121,'AYAAAA','EZJAAA','OOOOxx'
+6371,6739,1,3,1,11,71,371,371,1371,6371,142,143,'BLAAAA','FZJAAA','VVVVxx'
+5237,6740,1,1,7,17,37,237,1237,237,5237,74,75,'LTAAAA','GZJAAA','AAAAxx'
+743,6741,1,3,3,3,43,743,743,743,743,86,87,'PCAAAA','HZJAAA','HHHHxx'
+7395,6742,1,3,5,15,95,395,1395,2395,7395,190,191,'LYAAAA','IZJAAA','OOOOxx'
+3365,6743,1,1,5,5,65,365,1365,3365,3365,130,131,'LZAAAA','JZJAAA','VVVVxx'
+6667,6744,1,3,7,7,67,667,667,1667,6667,134,135,'LWAAAA','KZJAAA','AAAAxx'
+3445,6745,1,1,5,5,45,445,1445,3445,3445,90,91,'NCAAAA','LZJAAA','HHHHxx'
+4019,6746,1,3,9,19,19,19,19,4019,4019,38,39,'PYAAAA','MZJAAA','OOOOxx'
+7035,6747,1,3,5,15,35,35,1035,2035,7035,70,71,'PKAAAA','NZJAAA','VVVVxx'
+5274,6748,0,2,4,14,74,274,1274,274,5274,148,149,'WUAAAA','OZJAAA','AAAAxx'
+519,6749,1,3,9,19,19,519,519,519,519,38,39,'ZTAAAA','PZJAAA','HHHHxx'
+2801,6750,1,1,1,1,1,801,801,2801,2801,2,3,'TDAAAA','QZJAAA','OOOOxx'
+3320,6751,0,0,0,0,20,320,1320,3320,3320,40,41,'SXAAAA','RZJAAA','VVVVxx'
+3153,6752,1,1,3,13,53,153,1153,3153,3153,106,107,'HRAAAA','SZJAAA','AAAAxx'
+7680,6753,0,0,0,0,80,680,1680,2680,7680,160,161,'KJAAAA','TZJAAA','HHHHxx'
+8942,6754,0,2,2,2,42,942,942,3942,8942,84,85,'YFAAAA','UZJAAA','OOOOxx'
+3195,6755,1,3,5,15,95,195,1195,3195,3195,190,191,'XSAAAA','VZJAAA','VVVVxx'
+2287,6756,1,3,7,7,87,287,287,2287,2287,174,175,'ZJAAAA','WZJAAA','AAAAxx'
+8325,6757,1,1,5,5,25,325,325,3325,8325,50,51,'FIAAAA','XZJAAA','HHHHxx'
+2603,6758,1,3,3,3,3,603,603,2603,2603,6,7,'DWAAAA','YZJAAA','OOOOxx'
+5871,6759,1,3,1,11,71,871,1871,871,5871,142,143,'VRAAAA','ZZJAAA','VVVVxx'
+1773,6760,1,1,3,13,73,773,1773,1773,1773,146,147,'FQAAAA','AAKAAA','AAAAxx'
+3323,6761,1,3,3,3,23,323,1323,3323,3323,46,47,'VXAAAA','BAKAAA','HHHHxx'
+2053,6762,1,1,3,13,53,53,53,2053,2053,106,107,'ZAAAAA','CAKAAA','OOOOxx'
+4062,6763,0,2,2,2,62,62,62,4062,4062,124,125,'GAAAAA','DAKAAA','VVVVxx'
+4611,6764,1,3,1,11,11,611,611,4611,4611,22,23,'JVAAAA','EAKAAA','AAAAxx'
+3451,6765,1,3,1,11,51,451,1451,3451,3451,102,103,'TCAAAA','FAKAAA','HHHHxx'
+1819,6766,1,3,9,19,19,819,1819,1819,1819,38,39,'ZRAAAA','GAKAAA','OOOOxx'
+9806,6767,0,2,6,6,6,806,1806,4806,9806,12,13,'ENAAAA','HAKAAA','VVVVxx'
+6619,6768,1,3,9,19,19,619,619,1619,6619,38,39,'PUAAAA','IAKAAA','AAAAxx'
+1031,6769,1,3,1,11,31,31,1031,1031,1031,62,63,'RNAAAA','JAKAAA','HHHHxx'
+1865,6770,1,1,5,5,65,865,1865,1865,1865,130,131,'TTAAAA','KAKAAA','OOOOxx'
+6282,6771,0,2,2,2,82,282,282,1282,6282,164,165,'QHAAAA','LAKAAA','VVVVxx'
+1178,6772,0,2,8,18,78,178,1178,1178,1178,156,157,'ITAAAA','MAKAAA','AAAAxx'
+8007,6773,1,3,7,7,7,7,7,3007,8007,14,15,'ZVAAAA','NAKAAA','HHHHxx'
+9126,6774,0,2,6,6,26,126,1126,4126,9126,52,53,'ANAAAA','OAKAAA','OOOOxx'
+9113,6775,1,1,3,13,13,113,1113,4113,9113,26,27,'NMAAAA','PAKAAA','VVVVxx'
+537,6776,1,1,7,17,37,537,537,537,537,74,75,'RUAAAA','QAKAAA','AAAAxx'
+6208,6777,0,0,8,8,8,208,208,1208,6208,16,17,'UEAAAA','RAKAAA','HHHHxx'
+1626,6778,0,2,6,6,26,626,1626,1626,1626,52,53,'OKAAAA','SAKAAA','OOOOxx'
+7188,6779,0,0,8,8,88,188,1188,2188,7188,176,177,'MQAAAA','TAKAAA','VVVVxx'
+9216,6780,0,0,6,16,16,216,1216,4216,9216,32,33,'MQAAAA','UAKAAA','AAAAxx'
+6134,6781,0,2,4,14,34,134,134,1134,6134,68,69,'YBAAAA','VAKAAA','HHHHxx'
+2074,6782,0,2,4,14,74,74,74,2074,2074,148,149,'UBAAAA','WAKAAA','OOOOxx'
+6369,6783,1,1,9,9,69,369,369,1369,6369,138,139,'ZKAAAA','XAKAAA','VVVVxx'
+9306,6784,0,2,6,6,6,306,1306,4306,9306,12,13,'YTAAAA','YAKAAA','AAAAxx'
+3155,6785,1,3,5,15,55,155,1155,3155,3155,110,111,'JRAAAA','ZAKAAA','HHHHxx'
+3611,6786,1,3,1,11,11,611,1611,3611,3611,22,23,'XIAAAA','ABKAAA','OOOOxx'
+6530,6787,0,2,0,10,30,530,530,1530,6530,60,61,'ERAAAA','BBKAAA','VVVVxx'
+6979,6788,1,3,9,19,79,979,979,1979,6979,158,159,'LIAAAA','CBKAAA','AAAAxx'
+9129,6789,1,1,9,9,29,129,1129,4129,9129,58,59,'DNAAAA','DBKAAA','HHHHxx'
+8013,6790,1,1,3,13,13,13,13,3013,8013,26,27,'FWAAAA','EBKAAA','OOOOxx'
+6926,6791,0,2,6,6,26,926,926,1926,6926,52,53,'KGAAAA','FBKAAA','VVVVxx'
+1877,6792,1,1,7,17,77,877,1877,1877,1877,154,155,'FUAAAA','GBKAAA','AAAAxx'
+1882,6793,0,2,2,2,82,882,1882,1882,1882,164,165,'KUAAAA','HBKAAA','HHHHxx'
+6720,6794,0,0,0,0,20,720,720,1720,6720,40,41,'MYAAAA','IBKAAA','OOOOxx'
+690,6795,0,2,0,10,90,690,690,690,690,180,181,'OAAAAA','JBKAAA','VVVVxx'
+143,6796,1,3,3,3,43,143,143,143,143,86,87,'NFAAAA','KBKAAA','AAAAxx'
+7241,6797,1,1,1,1,41,241,1241,2241,7241,82,83,'NSAAAA','LBKAAA','HHHHxx'
+6461,6798,1,1,1,1,61,461,461,1461,6461,122,123,'NOAAAA','MBKAAA','OOOOxx'
+2258,6799,0,2,8,18,58,258,258,2258,2258,116,117,'WIAAAA','NBKAAA','VVVVxx'
+2280,6800,0,0,0,0,80,280,280,2280,2280,160,161,'SJAAAA','OBKAAA','AAAAxx'
+7556,6801,0,0,6,16,56,556,1556,2556,7556,112,113,'QEAAAA','PBKAAA','HHHHxx'
+1038,6802,0,2,8,18,38,38,1038,1038,1038,76,77,'YNAAAA','QBKAAA','OOOOxx'
+2634,6803,0,2,4,14,34,634,634,2634,2634,68,69,'IXAAAA','RBKAAA','VVVVxx'
+7847,6804,1,3,7,7,47,847,1847,2847,7847,94,95,'VPAAAA','SBKAAA','AAAAxx'
+4415,6805,1,3,5,15,15,415,415,4415,4415,30,31,'VNAAAA','TBKAAA','HHHHxx'
+1933,6806,1,1,3,13,33,933,1933,1933,1933,66,67,'JWAAAA','UBKAAA','OOOOxx'
+8034,6807,0,2,4,14,34,34,34,3034,8034,68,69,'AXAAAA','VBKAAA','VVVVxx'
+9233,6808,1,1,3,13,33,233,1233,4233,9233,66,67,'DRAAAA','WBKAAA','AAAAxx'
+6572,6809,0,0,2,12,72,572,572,1572,6572,144,145,'USAAAA','XBKAAA','HHHHxx'
+1586,6810,0,2,6,6,86,586,1586,1586,1586,172,173,'AJAAAA','YBKAAA','OOOOxx'
+8512,6811,0,0,2,12,12,512,512,3512,8512,24,25,'KPAAAA','ZBKAAA','VVVVxx'
+7421,6812,1,1,1,1,21,421,1421,2421,7421,42,43,'LZAAAA','ACKAAA','AAAAxx'
+503,6813,1,3,3,3,3,503,503,503,503,6,7,'JTAAAA','BCKAAA','HHHHxx'
+5332,6814,0,0,2,12,32,332,1332,332,5332,64,65,'CXAAAA','CCKAAA','OOOOxx'
+2602,6815,0,2,2,2,2,602,602,2602,2602,4,5,'CWAAAA','DCKAAA','VVVVxx'
+2902,6816,0,2,2,2,2,902,902,2902,2902,4,5,'QHAAAA','ECKAAA','AAAAxx'
+2979,6817,1,3,9,19,79,979,979,2979,2979,158,159,'PKAAAA','FCKAAA','HHHHxx'
+1431,6818,1,3,1,11,31,431,1431,1431,1431,62,63,'BDAAAA','GCKAAA','OOOOxx'
+8639,6819,1,3,9,19,39,639,639,3639,8639,78,79,'HUAAAA','HCKAAA','VVVVxx'
+4218,6820,0,2,8,18,18,218,218,4218,4218,36,37,'GGAAAA','ICKAAA','AAAAxx'
+7453,6821,1,1,3,13,53,453,1453,2453,7453,106,107,'RAAAAA','JCKAAA','HHHHxx'
+5448,6822,0,0,8,8,48,448,1448,448,5448,96,97,'OBAAAA','KCKAAA','OOOOxx'
+6768,6823,0,0,8,8,68,768,768,1768,6768,136,137,'IAAAAA','LCKAAA','VVVVxx'
+3104,6824,0,0,4,4,4,104,1104,3104,3104,8,9,'KPAAAA','MCKAAA','AAAAxx'
+2297,6825,1,1,7,17,97,297,297,2297,2297,194,195,'JKAAAA','NCKAAA','HHHHxx'
+7994,6826,0,2,4,14,94,994,1994,2994,7994,188,189,'MVAAAA','OCKAAA','OOOOxx'
+550,6827,0,2,0,10,50,550,550,550,550,100,101,'EVAAAA','PCKAAA','VVVVxx'
+4777,6828,1,1,7,17,77,777,777,4777,4777,154,155,'TBAAAA','QCKAAA','AAAAxx'
+5962,6829,0,2,2,2,62,962,1962,962,5962,124,125,'IVAAAA','RCKAAA','HHHHxx'
+1763,6830,1,3,3,3,63,763,1763,1763,1763,126,127,'VPAAAA','SCKAAA','OOOOxx'
+3654,6831,0,2,4,14,54,654,1654,3654,3654,108,109,'OKAAAA','TCKAAA','VVVVxx'
+4106,6832,0,2,6,6,6,106,106,4106,4106,12,13,'YBAAAA','UCKAAA','AAAAxx'
+5156,6833,0,0,6,16,56,156,1156,156,5156,112,113,'IQAAAA','VCKAAA','HHHHxx'
+422,6834,0,2,2,2,22,422,422,422,422,44,45,'GQAAAA','WCKAAA','OOOOxx'
+5011,6835,1,3,1,11,11,11,1011,11,5011,22,23,'TKAAAA','XCKAAA','VVVVxx'
+218,6836,0,2,8,18,18,218,218,218,218,36,37,'KIAAAA','YCKAAA','AAAAxx'
+9762,6837,0,2,2,2,62,762,1762,4762,9762,124,125,'MLAAAA','ZCKAAA','HHHHxx'
+6074,6838,0,2,4,14,74,74,74,1074,6074,148,149,'QZAAAA','ADKAAA','OOOOxx'
+4060,6839,0,0,0,0,60,60,60,4060,4060,120,121,'EAAAAA','BDKAAA','VVVVxx'
+8680,6840,0,0,0,0,80,680,680,3680,8680,160,161,'WVAAAA','CDKAAA','AAAAxx'
+5863,6841,1,3,3,3,63,863,1863,863,5863,126,127,'NRAAAA','DDKAAA','HHHHxx'
+8042,6842,0,2,2,2,42,42,42,3042,8042,84,85,'IXAAAA','EDKAAA','OOOOxx'
+2964,6843,0,0,4,4,64,964,964,2964,2964,128,129,'AKAAAA','FDKAAA','VVVVxx'
+6931,6844,1,3,1,11,31,931,931,1931,6931,62,63,'PGAAAA','GDKAAA','AAAAxx'
+6715,6845,1,3,5,15,15,715,715,1715,6715,30,31,'HYAAAA','HDKAAA','HHHHxx'
+5859,6846,1,3,9,19,59,859,1859,859,5859,118,119,'JRAAAA','IDKAAA','OOOOxx'
+6173,6847,1,1,3,13,73,173,173,1173,6173,146,147,'LDAAAA','JDKAAA','VVVVxx'
+7788,6848,0,0,8,8,88,788,1788,2788,7788,176,177,'ONAAAA','KDKAAA','AAAAxx'
+9370,6849,0,2,0,10,70,370,1370,4370,9370,140,141,'KWAAAA','LDKAAA','HHHHxx'
+3038,6850,0,2,8,18,38,38,1038,3038,3038,76,77,'WMAAAA','MDKAAA','OOOOxx'
+6483,6851,1,3,3,3,83,483,483,1483,6483,166,167,'JPAAAA','NDKAAA','VVVVxx'
+7534,6852,0,2,4,14,34,534,1534,2534,7534,68,69,'UDAAAA','ODKAAA','AAAAxx'
+5769,6853,1,1,9,9,69,769,1769,769,5769,138,139,'XNAAAA','PDKAAA','HHHHxx'
+9152,6854,0,0,2,12,52,152,1152,4152,9152,104,105,'AOAAAA','QDKAAA','OOOOxx'
+6251,6855,1,3,1,11,51,251,251,1251,6251,102,103,'LGAAAA','RDKAAA','VVVVxx'
+9209,6856,1,1,9,9,9,209,1209,4209,9209,18,19,'FQAAAA','SDKAAA','AAAAxx'
+5365,6857,1,1,5,5,65,365,1365,365,5365,130,131,'JYAAAA','TDKAAA','HHHHxx'
+509,6858,1,1,9,9,9,509,509,509,509,18,19,'PTAAAA','UDKAAA','OOOOxx'
+3132,6859,0,0,2,12,32,132,1132,3132,3132,64,65,'MQAAAA','VDKAAA','VVVVxx'
+5373,6860,1,1,3,13,73,373,1373,373,5373,146,147,'RYAAAA','WDKAAA','AAAAxx'
+4247,6861,1,3,7,7,47,247,247,4247,4247,94,95,'JHAAAA','XDKAAA','HHHHxx'
+3491,6862,1,3,1,11,91,491,1491,3491,3491,182,183,'HEAAAA','YDKAAA','OOOOxx'
+495,6863,1,3,5,15,95,495,495,495,495,190,191,'BTAAAA','ZDKAAA','VVVVxx'
+1594,6864,0,2,4,14,94,594,1594,1594,1594,188,189,'IJAAAA','AEKAAA','AAAAxx'
+2243,6865,1,3,3,3,43,243,243,2243,2243,86,87,'HIAAAA','BEKAAA','HHHHxx'
+7780,6866,0,0,0,0,80,780,1780,2780,7780,160,161,'GNAAAA','CEKAAA','OOOOxx'
+5632,6867,0,0,2,12,32,632,1632,632,5632,64,65,'QIAAAA','DEKAAA','VVVVxx'
+2679,6868,1,3,9,19,79,679,679,2679,2679,158,159,'BZAAAA','EEKAAA','AAAAxx'
+1354,6869,0,2,4,14,54,354,1354,1354,1354,108,109,'CAAAAA','FEKAAA','HHHHxx'
+180,6870,0,0,0,0,80,180,180,180,180,160,161,'YGAAAA','GEKAAA','OOOOxx'
+7017,6871,1,1,7,17,17,17,1017,2017,7017,34,35,'XJAAAA','HEKAAA','VVVVxx'
+1867,6872,1,3,7,7,67,867,1867,1867,1867,134,135,'VTAAAA','IEKAAA','AAAAxx'
+2213,6873,1,1,3,13,13,213,213,2213,2213,26,27,'DHAAAA','JEKAAA','HHHHxx'
+8773,6874,1,1,3,13,73,773,773,3773,8773,146,147,'LZAAAA','KEKAAA','OOOOxx'
+1784,6875,0,0,4,4,84,784,1784,1784,1784,168,169,'QQAAAA','LEKAAA','VVVVxx'
+5961,6876,1,1,1,1,61,961,1961,961,5961,122,123,'HVAAAA','MEKAAA','AAAAxx'
+8801,6877,1,1,1,1,1,801,801,3801,8801,2,3,'NAAAAA','NEKAAA','HHHHxx'
+4860,6878,0,0,0,0,60,860,860,4860,4860,120,121,'YEAAAA','OEKAAA','OOOOxx'
+2214,6879,0,2,4,14,14,214,214,2214,2214,28,29,'EHAAAA','PEKAAA','VVVVxx'
+1735,6880,1,3,5,15,35,735,1735,1735,1735,70,71,'TOAAAA','QEKAAA','AAAAxx'
+578,6881,0,2,8,18,78,578,578,578,578,156,157,'GWAAAA','REKAAA','HHHHxx'
+7853,6882,1,1,3,13,53,853,1853,2853,7853,106,107,'BQAAAA','SEKAAA','OOOOxx'
+2215,6883,1,3,5,15,15,215,215,2215,2215,30,31,'FHAAAA','TEKAAA','VVVVxx'
+4704,6884,0,0,4,4,4,704,704,4704,4704,8,9,'YYAAAA','UEKAAA','AAAAxx'
+9379,6885,1,3,9,19,79,379,1379,4379,9379,158,159,'TWAAAA','VEKAAA','HHHHxx'
+9745,6886,1,1,5,5,45,745,1745,4745,9745,90,91,'VKAAAA','WEKAAA','OOOOxx'
+5636,6887,0,0,6,16,36,636,1636,636,5636,72,73,'UIAAAA','XEKAAA','VVVVxx'
+4548,6888,0,0,8,8,48,548,548,4548,4548,96,97,'YSAAAA','YEKAAA','AAAAxx'
+6537,6889,1,1,7,17,37,537,537,1537,6537,74,75,'LRAAAA','ZEKAAA','HHHHxx'
+7748,6890,0,0,8,8,48,748,1748,2748,7748,96,97,'AMAAAA','AFKAAA','OOOOxx'
+687,6891,1,3,7,7,87,687,687,687,687,174,175,'LAAAAA','BFKAAA','VVVVxx'
+1243,6892,1,3,3,3,43,243,1243,1243,1243,86,87,'VVAAAA','CFKAAA','AAAAxx'
+852,6893,0,0,2,12,52,852,852,852,852,104,105,'UGAAAA','DFKAAA','HHHHxx'
+785,6894,1,1,5,5,85,785,785,785,785,170,171,'FEAAAA','EFKAAA','OOOOxx'
+2002,6895,0,2,2,2,2,2,2,2002,2002,4,5,'AZAAAA','FFKAAA','VVVVxx'
+2748,6896,0,0,8,8,48,748,748,2748,2748,96,97,'SBAAAA','GFKAAA','AAAAxx'
+6075,6897,1,3,5,15,75,75,75,1075,6075,150,151,'RZAAAA','HFKAAA','HHHHxx'
+7029,6898,1,1,9,9,29,29,1029,2029,7029,58,59,'JKAAAA','IFKAAA','OOOOxx'
+7474,6899,0,2,4,14,74,474,1474,2474,7474,148,149,'MBAAAA','JFKAAA','VVVVxx'
+7755,6900,1,3,5,15,55,755,1755,2755,7755,110,111,'HMAAAA','KFKAAA','AAAAxx'
+1456,6901,0,0,6,16,56,456,1456,1456,1456,112,113,'AEAAAA','LFKAAA','HHHHxx'
+2808,6902,0,0,8,8,8,808,808,2808,2808,16,17,'AEAAAA','MFKAAA','OOOOxx'
+4089,6903,1,1,9,9,89,89,89,4089,4089,178,179,'HBAAAA','NFKAAA','VVVVxx'
+4718,6904,0,2,8,18,18,718,718,4718,4718,36,37,'MZAAAA','OFKAAA','AAAAxx'
+910,6905,0,2,0,10,10,910,910,910,910,20,21,'AJAAAA','PFKAAA','HHHHxx'
+2868,6906,0,0,8,8,68,868,868,2868,2868,136,137,'IGAAAA','QFKAAA','OOOOxx'
+2103,6907,1,3,3,3,3,103,103,2103,2103,6,7,'XCAAAA','RFKAAA','VVVVxx'
+2407,6908,1,3,7,7,7,407,407,2407,2407,14,15,'POAAAA','SFKAAA','AAAAxx'
+4353,6909,1,1,3,13,53,353,353,4353,4353,106,107,'LLAAAA','TFKAAA','HHHHxx'
+7988,6910,0,0,8,8,88,988,1988,2988,7988,176,177,'GVAAAA','UFKAAA','OOOOxx'
+2750,6911,0,2,0,10,50,750,750,2750,2750,100,101,'UBAAAA','VFKAAA','VVVVxx'
+2006,6912,0,2,6,6,6,6,6,2006,2006,12,13,'EZAAAA','WFKAAA','AAAAxx'
+4617,6913,1,1,7,17,17,617,617,4617,4617,34,35,'PVAAAA','XFKAAA','HHHHxx'
+1251,6914,1,3,1,11,51,251,1251,1251,1251,102,103,'DWAAAA','YFKAAA','OOOOxx'
+4590,6915,0,2,0,10,90,590,590,4590,4590,180,181,'OUAAAA','ZFKAAA','VVVVxx'
+1144,6916,0,0,4,4,44,144,1144,1144,1144,88,89,'ASAAAA','AGKAAA','AAAAxx'
+7131,6917,1,3,1,11,31,131,1131,2131,7131,62,63,'HOAAAA','BGKAAA','HHHHxx'
+95,6918,1,3,5,15,95,95,95,95,95,190,191,'RDAAAA','CGKAAA','OOOOxx'
+4827,6919,1,3,7,7,27,827,827,4827,4827,54,55,'RDAAAA','DGKAAA','VVVVxx'
+4307,6920,1,3,7,7,7,307,307,4307,4307,14,15,'RJAAAA','EGKAAA','AAAAxx'
+1505,6921,1,1,5,5,5,505,1505,1505,1505,10,11,'XFAAAA','FGKAAA','HHHHxx'
+8191,6922,1,3,1,11,91,191,191,3191,8191,182,183,'BDAAAA','GGKAAA','OOOOxx'
+5037,6923,1,1,7,17,37,37,1037,37,5037,74,75,'TLAAAA','HGKAAA','VVVVxx'
+7363,6924,1,3,3,3,63,363,1363,2363,7363,126,127,'FXAAAA','IGKAAA','AAAAxx'
+8427,6925,1,3,7,7,27,427,427,3427,8427,54,55,'DMAAAA','JGKAAA','HHHHxx'
+5231,6926,1,3,1,11,31,231,1231,231,5231,62,63,'FTAAAA','KGKAAA','OOOOxx'
+2943,6927,1,3,3,3,43,943,943,2943,2943,86,87,'FJAAAA','LGKAAA','VVVVxx'
+4624,6928,0,0,4,4,24,624,624,4624,4624,48,49,'WVAAAA','MGKAAA','AAAAxx'
+2020,6929,0,0,0,0,20,20,20,2020,2020,40,41,'SZAAAA','NGKAAA','HHHHxx'
+6155,6930,1,3,5,15,55,155,155,1155,6155,110,111,'TCAAAA','OGKAAA','OOOOxx'
+4381,6931,1,1,1,1,81,381,381,4381,4381,162,163,'NMAAAA','PGKAAA','VVVVxx'
+1057,6932,1,1,7,17,57,57,1057,1057,1057,114,115,'ROAAAA','QGKAAA','AAAAxx'
+9010,6933,0,2,0,10,10,10,1010,4010,9010,20,21,'OIAAAA','RGKAAA','HHHHxx'
+4947,6934,1,3,7,7,47,947,947,4947,4947,94,95,'HIAAAA','SGKAAA','OOOOxx'
+335,6935,1,3,5,15,35,335,335,335,335,70,71,'XMAAAA','TGKAAA','VVVVxx'
+6890,6936,0,2,0,10,90,890,890,1890,6890,180,181,'AFAAAA','UGKAAA','AAAAxx'
+5070,6937,0,2,0,10,70,70,1070,70,5070,140,141,'ANAAAA','VGKAAA','HHHHxx'
+5270,6938,0,2,0,10,70,270,1270,270,5270,140,141,'SUAAAA','WGKAAA','OOOOxx'
+8657,6939,1,1,7,17,57,657,657,3657,8657,114,115,'ZUAAAA','XGKAAA','VVVVxx'
+7625,6940,1,1,5,5,25,625,1625,2625,7625,50,51,'HHAAAA','YGKAAA','AAAAxx'
+5759,6941,1,3,9,19,59,759,1759,759,5759,118,119,'NNAAAA','ZGKAAA','HHHHxx'
+9483,6942,1,3,3,3,83,483,1483,4483,9483,166,167,'TAAAAA','AHKAAA','OOOOxx'
+8304,6943,0,0,4,4,4,304,304,3304,8304,8,9,'KHAAAA','BHKAAA','VVVVxx'
+296,6944,0,0,6,16,96,296,296,296,296,192,193,'KLAAAA','CHKAAA','AAAAxx'
+1176,6945,0,0,6,16,76,176,1176,1176,1176,152,153,'GTAAAA','DHKAAA','HHHHxx'
+2069,6946,1,1,9,9,69,69,69,2069,2069,138,139,'PBAAAA','EHKAAA','OOOOxx'
+1531,6947,1,3,1,11,31,531,1531,1531,1531,62,63,'XGAAAA','FHKAAA','VVVVxx'
+5329,6948,1,1,9,9,29,329,1329,329,5329,58,59,'ZWAAAA','GHKAAA','AAAAxx'
+3702,6949,0,2,2,2,2,702,1702,3702,3702,4,5,'KMAAAA','HHKAAA','HHHHxx'
+6520,6950,0,0,0,0,20,520,520,1520,6520,40,41,'UQAAAA','IHKAAA','OOOOxx'
+7310,6951,0,2,0,10,10,310,1310,2310,7310,20,21,'EVAAAA','JHKAAA','VVVVxx'
+1175,6952,1,3,5,15,75,175,1175,1175,1175,150,151,'FTAAAA','KHKAAA','AAAAxx'
+9107,6953,1,3,7,7,7,107,1107,4107,9107,14,15,'HMAAAA','LHKAAA','HHHHxx'
+2737,6954,1,1,7,17,37,737,737,2737,2737,74,75,'HBAAAA','MHKAAA','OOOOxx'
+3437,6955,1,1,7,17,37,437,1437,3437,3437,74,75,'FCAAAA','NHKAAA','VVVVxx'
+281,6956,1,1,1,1,81,281,281,281,281,162,163,'VKAAAA','OHKAAA','AAAAxx'
+6676,6957,0,0,6,16,76,676,676,1676,6676,152,153,'UWAAAA','PHKAAA','HHHHxx'
+145,6958,1,1,5,5,45,145,145,145,145,90,91,'PFAAAA','QHKAAA','OOOOxx'
+3172,6959,0,0,2,12,72,172,1172,3172,3172,144,145,'ASAAAA','RHKAAA','VVVVxx'
+4049,6960,1,1,9,9,49,49,49,4049,4049,98,99,'TZAAAA','SHKAAA','AAAAxx'
+6042,6961,0,2,2,2,42,42,42,1042,6042,84,85,'KYAAAA','THKAAA','HHHHxx'
+9122,6962,0,2,2,2,22,122,1122,4122,9122,44,45,'WMAAAA','UHKAAA','OOOOxx'
+7244,6963,0,0,4,4,44,244,1244,2244,7244,88,89,'QSAAAA','VHKAAA','VVVVxx'
+5361,6964,1,1,1,1,61,361,1361,361,5361,122,123,'FYAAAA','WHKAAA','AAAAxx'
+8647,6965,1,3,7,7,47,647,647,3647,8647,94,95,'PUAAAA','XHKAAA','HHHHxx'
+7956,6966,0,0,6,16,56,956,1956,2956,7956,112,113,'AUAAAA','YHKAAA','OOOOxx'
+7812,6967,0,0,2,12,12,812,1812,2812,7812,24,25,'MOAAAA','ZHKAAA','VVVVxx'
+570,6968,0,2,0,10,70,570,570,570,570,140,141,'YVAAAA','AIKAAA','AAAAxx'
+4115,6969,1,3,5,15,15,115,115,4115,4115,30,31,'HCAAAA','BIKAAA','HHHHxx'
+1856,6970,0,0,6,16,56,856,1856,1856,1856,112,113,'KTAAAA','CIKAAA','OOOOxx'
+9582,6971,0,2,2,2,82,582,1582,4582,9582,164,165,'OEAAAA','DIKAAA','VVVVxx'
+2025,6972,1,1,5,5,25,25,25,2025,2025,50,51,'XZAAAA','EIKAAA','AAAAxx'
+986,6973,0,2,6,6,86,986,986,986,986,172,173,'YLAAAA','FIKAAA','HHHHxx'
+8358,6974,0,2,8,18,58,358,358,3358,8358,116,117,'MJAAAA','GIKAAA','OOOOxx'
+510,6975,0,2,0,10,10,510,510,510,510,20,21,'QTAAAA','HIKAAA','VVVVxx'
+6101,6976,1,1,1,1,1,101,101,1101,6101,2,3,'RAAAAA','IIKAAA','AAAAxx'
+4167,6977,1,3,7,7,67,167,167,4167,4167,134,135,'HEAAAA','JIKAAA','HHHHxx'
+6139,6978,1,3,9,19,39,139,139,1139,6139,78,79,'DCAAAA','KIKAAA','OOOOxx'
+6912,6979,0,0,2,12,12,912,912,1912,6912,24,25,'WFAAAA','LIKAAA','VVVVxx'
+339,6980,1,3,9,19,39,339,339,339,339,78,79,'BNAAAA','MIKAAA','AAAAxx'
+8759,6981,1,3,9,19,59,759,759,3759,8759,118,119,'XYAAAA','NIKAAA','HHHHxx'
+246,6982,0,2,6,6,46,246,246,246,246,92,93,'MJAAAA','OIKAAA','OOOOxx'
+2831,6983,1,3,1,11,31,831,831,2831,2831,62,63,'XEAAAA','PIKAAA','VVVVxx'
+2327,6984,1,3,7,7,27,327,327,2327,2327,54,55,'NLAAAA','QIKAAA','AAAAxx'
+7001,6985,1,1,1,1,1,1,1001,2001,7001,2,3,'HJAAAA','RIKAAA','HHHHxx'
+4398,6986,0,2,8,18,98,398,398,4398,4398,196,197,'ENAAAA','SIKAAA','OOOOxx'
+1495,6987,1,3,5,15,95,495,1495,1495,1495,190,191,'NFAAAA','TIKAAA','VVVVxx'
+8522,6988,0,2,2,2,22,522,522,3522,8522,44,45,'UPAAAA','UIKAAA','AAAAxx'
+7090,6989,0,2,0,10,90,90,1090,2090,7090,180,181,'SMAAAA','VIKAAA','HHHHxx'
+8457,6990,1,1,7,17,57,457,457,3457,8457,114,115,'HNAAAA','WIKAAA','OOOOxx'
+4238,6991,0,2,8,18,38,238,238,4238,4238,76,77,'AHAAAA','XIKAAA','VVVVxx'
+6791,6992,1,3,1,11,91,791,791,1791,6791,182,183,'FBAAAA','YIKAAA','AAAAxx'
+1342,6993,0,2,2,2,42,342,1342,1342,1342,84,85,'QZAAAA','ZIKAAA','HHHHxx'
+4580,6994,0,0,0,0,80,580,580,4580,4580,160,161,'EUAAAA','AJKAAA','OOOOxx'
+1475,6995,1,3,5,15,75,475,1475,1475,1475,150,151,'TEAAAA','BJKAAA','VVVVxx'
+9184,6996,0,0,4,4,84,184,1184,4184,9184,168,169,'GPAAAA','CJKAAA','AAAAxx'
+1189,6997,1,1,9,9,89,189,1189,1189,1189,178,179,'TTAAAA','DJKAAA','HHHHxx'
+638,6998,0,2,8,18,38,638,638,638,638,76,77,'OYAAAA','EJKAAA','OOOOxx'
+5867,6999,1,3,7,7,67,867,1867,867,5867,134,135,'RRAAAA','FJKAAA','VVVVxx'
+9911,7000,1,3,1,11,11,911,1911,4911,9911,22,23,'FRAAAA','GJKAAA','AAAAxx'
+8147,7001,1,3,7,7,47,147,147,3147,8147,94,95,'JBAAAA','HJKAAA','HHHHxx'
+4492,7002,0,0,2,12,92,492,492,4492,4492,184,185,'UQAAAA','IJKAAA','OOOOxx'
+385,7003,1,1,5,5,85,385,385,385,385,170,171,'VOAAAA','JJKAAA','VVVVxx'
+5235,7004,1,3,5,15,35,235,1235,235,5235,70,71,'JTAAAA','KJKAAA','AAAAxx'
+4812,7005,0,0,2,12,12,812,812,4812,4812,24,25,'CDAAAA','LJKAAA','HHHHxx'
+9807,7006,1,3,7,7,7,807,1807,4807,9807,14,15,'FNAAAA','MJKAAA','OOOOxx'
+9588,7007,0,0,8,8,88,588,1588,4588,9588,176,177,'UEAAAA','NJKAAA','VVVVxx'
+9832,7008,0,0,2,12,32,832,1832,4832,9832,64,65,'EOAAAA','OJKAAA','AAAAxx'
+3757,7009,1,1,7,17,57,757,1757,3757,3757,114,115,'NOAAAA','PJKAAA','HHHHxx'
+9703,7010,1,3,3,3,3,703,1703,4703,9703,6,7,'FJAAAA','QJKAAA','OOOOxx'
+1022,7011,0,2,2,2,22,22,1022,1022,1022,44,45,'INAAAA','RJKAAA','VVVVxx'
+5165,7012,1,1,5,5,65,165,1165,165,5165,130,131,'RQAAAA','SJKAAA','AAAAxx'
+7129,7013,1,1,9,9,29,129,1129,2129,7129,58,59,'FOAAAA','TJKAAA','HHHHxx'
+4164,7014,0,0,4,4,64,164,164,4164,4164,128,129,'EEAAAA','UJKAAA','OOOOxx'
+7239,7015,1,3,9,19,39,239,1239,2239,7239,78,79,'LSAAAA','VJKAAA','VVVVxx'
+523,7016,1,3,3,3,23,523,523,523,523,46,47,'DUAAAA','WJKAAA','AAAAxx'
+4670,7017,0,2,0,10,70,670,670,4670,4670,140,141,'QXAAAA','XJKAAA','HHHHxx'
+8503,7018,1,3,3,3,3,503,503,3503,8503,6,7,'BPAAAA','YJKAAA','OOOOxx'
+714,7019,0,2,4,14,14,714,714,714,714,28,29,'MBAAAA','ZJKAAA','VVVVxx'
+1350,7020,0,2,0,10,50,350,1350,1350,1350,100,101,'YZAAAA','AKKAAA','AAAAxx'
+8318,7021,0,2,8,18,18,318,318,3318,8318,36,37,'YHAAAA','BKKAAA','HHHHxx'
+1834,7022,0,2,4,14,34,834,1834,1834,1834,68,69,'OSAAAA','CKKAAA','OOOOxx'
+4306,7023,0,2,6,6,6,306,306,4306,4306,12,13,'QJAAAA','DKKAAA','VVVVxx'
+8543,7024,1,3,3,3,43,543,543,3543,8543,86,87,'PQAAAA','EKKAAA','AAAAxx'
+9397,7025,1,1,7,17,97,397,1397,4397,9397,194,195,'LXAAAA','FKKAAA','HHHHxx'
+3145,7026,1,1,5,5,45,145,1145,3145,3145,90,91,'ZQAAAA','GKKAAA','OOOOxx'
+3942,7027,0,2,2,2,42,942,1942,3942,3942,84,85,'QVAAAA','HKKAAA','VVVVxx'
+8583,7028,1,3,3,3,83,583,583,3583,8583,166,167,'DSAAAA','IKKAAA','AAAAxx'
+8073,7029,1,1,3,13,73,73,73,3073,8073,146,147,'NYAAAA','JKKAAA','HHHHxx'
+4940,7030,0,0,0,0,40,940,940,4940,4940,80,81,'AIAAAA','KKKAAA','OOOOxx'
+9573,7031,1,1,3,13,73,573,1573,4573,9573,146,147,'FEAAAA','LKKAAA','VVVVxx'
+5325,7032,1,1,5,5,25,325,1325,325,5325,50,51,'VWAAAA','MKKAAA','AAAAxx'
+1833,7033,1,1,3,13,33,833,1833,1833,1833,66,67,'NSAAAA','NKKAAA','HHHHxx'
+1337,7034,1,1,7,17,37,337,1337,1337,1337,74,75,'LZAAAA','OKKAAA','OOOOxx'
+9749,7035,1,1,9,9,49,749,1749,4749,9749,98,99,'ZKAAAA','PKKAAA','VVVVxx'
+7505,7036,1,1,5,5,5,505,1505,2505,7505,10,11,'RCAAAA','QKKAAA','AAAAxx'
+9731,7037,1,3,1,11,31,731,1731,4731,9731,62,63,'HKAAAA','RKKAAA','HHHHxx'
+4098,7038,0,2,8,18,98,98,98,4098,4098,196,197,'QBAAAA','SKKAAA','OOOOxx'
+1418,7039,0,2,8,18,18,418,1418,1418,1418,36,37,'OCAAAA','TKKAAA','VVVVxx'
+63,7040,1,3,3,3,63,63,63,63,63,126,127,'LCAAAA','UKKAAA','AAAAxx'
+9889,7041,1,1,9,9,89,889,1889,4889,9889,178,179,'JQAAAA','VKKAAA','HHHHxx'
+2871,7042,1,3,1,11,71,871,871,2871,2871,142,143,'LGAAAA','WKKAAA','OOOOxx'
+1003,7043,1,3,3,3,3,3,1003,1003,1003,6,7,'PMAAAA','XKKAAA','VVVVxx'
+8796,7044,0,0,6,16,96,796,796,3796,8796,192,193,'IAAAAA','YKKAAA','AAAAxx'
+22,7045,0,2,2,2,22,22,22,22,22,44,45,'WAAAAA','ZKKAAA','HHHHxx'
+8244,7046,0,0,4,4,44,244,244,3244,8244,88,89,'CFAAAA','ALKAAA','OOOOxx'
+2282,7047,0,2,2,2,82,282,282,2282,2282,164,165,'UJAAAA','BLKAAA','VVVVxx'
+3487,7048,1,3,7,7,87,487,1487,3487,3487,174,175,'DEAAAA','CLKAAA','AAAAxx'
+8633,7049,1,1,3,13,33,633,633,3633,8633,66,67,'BUAAAA','DLKAAA','HHHHxx'
+6418,7050,0,2,8,18,18,418,418,1418,6418,36,37,'WMAAAA','ELKAAA','OOOOxx'
+4682,7051,0,2,2,2,82,682,682,4682,4682,164,165,'CYAAAA','FLKAAA','VVVVxx'
+4103,7052,1,3,3,3,3,103,103,4103,4103,6,7,'VBAAAA','GLKAAA','AAAAxx'
+6256,7053,0,0,6,16,56,256,256,1256,6256,112,113,'QGAAAA','HLKAAA','HHHHxx'
+4040,7054,0,0,0,0,40,40,40,4040,4040,80,81,'KZAAAA','ILKAAA','OOOOxx'
+9342,7055,0,2,2,2,42,342,1342,4342,9342,84,85,'IVAAAA','JLKAAA','VVVVxx'
+9969,7056,1,1,9,9,69,969,1969,4969,9969,138,139,'LTAAAA','KLKAAA','AAAAxx'
+223,7057,1,3,3,3,23,223,223,223,223,46,47,'PIAAAA','LLKAAA','HHHHxx'
+4593,7058,1,1,3,13,93,593,593,4593,4593,186,187,'RUAAAA','MLKAAA','OOOOxx'
+44,7059,0,0,4,4,44,44,44,44,44,88,89,'SBAAAA','NLKAAA','VVVVxx'
+3513,7060,1,1,3,13,13,513,1513,3513,3513,26,27,'DFAAAA','OLKAAA','AAAAxx'
+5771,7061,1,3,1,11,71,771,1771,771,5771,142,143,'ZNAAAA','PLKAAA','HHHHxx'
+5083,7062,1,3,3,3,83,83,1083,83,5083,166,167,'NNAAAA','QLKAAA','OOOOxx'
+3839,7063,1,3,9,19,39,839,1839,3839,3839,78,79,'RRAAAA','RLKAAA','VVVVxx'
+2986,7064,0,2,6,6,86,986,986,2986,2986,172,173,'WKAAAA','SLKAAA','AAAAxx'
+2200,7065,0,0,0,0,0,200,200,2200,2200,0,1,'QGAAAA','TLKAAA','HHHHxx'
+197,7066,1,1,7,17,97,197,197,197,197,194,195,'PHAAAA','ULKAAA','OOOOxx'
+7455,7067,1,3,5,15,55,455,1455,2455,7455,110,111,'TAAAAA','VLKAAA','VVVVxx'
+1379,7068,1,3,9,19,79,379,1379,1379,1379,158,159,'BBAAAA','WLKAAA','AAAAxx'
+4356,7069,0,0,6,16,56,356,356,4356,4356,112,113,'OLAAAA','XLKAAA','HHHHxx'
+6888,7070,0,0,8,8,88,888,888,1888,6888,176,177,'YEAAAA','YLKAAA','OOOOxx'
+9139,7071,1,3,9,19,39,139,1139,4139,9139,78,79,'NNAAAA','ZLKAAA','VVVVxx'
+7682,7072,0,2,2,2,82,682,1682,2682,7682,164,165,'MJAAAA','AMKAAA','AAAAxx'
+4873,7073,1,1,3,13,73,873,873,4873,4873,146,147,'LFAAAA','BMKAAA','HHHHxx'
+783,7074,1,3,3,3,83,783,783,783,783,166,167,'DEAAAA','CMKAAA','OOOOxx'
+6071,7075,1,3,1,11,71,71,71,1071,6071,142,143,'NZAAAA','DMKAAA','VVVVxx'
+5160,7076,0,0,0,0,60,160,1160,160,5160,120,121,'MQAAAA','EMKAAA','AAAAxx'
+2291,7077,1,3,1,11,91,291,291,2291,2291,182,183,'DKAAAA','FMKAAA','HHHHxx'
+187,7078,1,3,7,7,87,187,187,187,187,174,175,'FHAAAA','GMKAAA','OOOOxx'
+7786,7079,0,2,6,6,86,786,1786,2786,7786,172,173,'MNAAAA','HMKAAA','VVVVxx'
+3432,7080,0,0,2,12,32,432,1432,3432,3432,64,65,'ACAAAA','IMKAAA','AAAAxx'
+5450,7081,0,2,0,10,50,450,1450,450,5450,100,101,'QBAAAA','JMKAAA','HHHHxx'
+2699,7082,1,3,9,19,99,699,699,2699,2699,198,199,'VZAAAA','KMKAAA','OOOOxx'
+692,7083,0,0,2,12,92,692,692,692,692,184,185,'QAAAAA','LMKAAA','VVVVxx'
+6081,7084,1,1,1,1,81,81,81,1081,6081,162,163,'XZAAAA','MMKAAA','AAAAxx'
+4829,7085,1,1,9,9,29,829,829,4829,4829,58,59,'TDAAAA','NMKAAA','HHHHxx'
+238,7086,0,2,8,18,38,238,238,238,238,76,77,'EJAAAA','OMKAAA','OOOOxx'
+9100,7087,0,0,0,0,0,100,1100,4100,9100,0,1,'AMAAAA','PMKAAA','VVVVxx'
+1968,7088,0,0,8,8,68,968,1968,1968,1968,136,137,'SXAAAA','QMKAAA','AAAAxx'
+1872,7089,0,0,2,12,72,872,1872,1872,1872,144,145,'AUAAAA','RMKAAA','HHHHxx'
+7051,7090,1,3,1,11,51,51,1051,2051,7051,102,103,'FLAAAA','SMKAAA','OOOOxx'
+2743,7091,1,3,3,3,43,743,743,2743,2743,86,87,'NBAAAA','TMKAAA','VVVVxx'
+1237,7092,1,1,7,17,37,237,1237,1237,1237,74,75,'PVAAAA','UMKAAA','AAAAxx'
+3052,7093,0,0,2,12,52,52,1052,3052,3052,104,105,'KNAAAA','VMKAAA','HHHHxx'
+8021,7094,1,1,1,1,21,21,21,3021,8021,42,43,'NWAAAA','WMKAAA','OOOOxx'
+657,7095,1,1,7,17,57,657,657,657,657,114,115,'HZAAAA','XMKAAA','VVVVxx'
+2236,7096,0,0,6,16,36,236,236,2236,2236,72,73,'AIAAAA','YMKAAA','AAAAxx'
+7011,7097,1,3,1,11,11,11,1011,2011,7011,22,23,'RJAAAA','ZMKAAA','HHHHxx'
+4067,7098,1,3,7,7,67,67,67,4067,4067,134,135,'LAAAAA','ANKAAA','OOOOxx'
+9449,7099,1,1,9,9,49,449,1449,4449,9449,98,99,'LZAAAA','BNKAAA','VVVVxx'
+7428,7100,0,0,8,8,28,428,1428,2428,7428,56,57,'SZAAAA','CNKAAA','AAAAxx'
+1272,7101,0,0,2,12,72,272,1272,1272,1272,144,145,'YWAAAA','DNKAAA','HHHHxx'
+6897,7102,1,1,7,17,97,897,897,1897,6897,194,195,'HFAAAA','ENKAAA','OOOOxx'
+5839,7103,1,3,9,19,39,839,1839,839,5839,78,79,'PQAAAA','FNKAAA','VVVVxx'
+6835,7104,1,3,5,15,35,835,835,1835,6835,70,71,'XCAAAA','GNKAAA','AAAAxx'
+1887,7105,1,3,7,7,87,887,1887,1887,1887,174,175,'PUAAAA','HNKAAA','HHHHxx'
+1551,7106,1,3,1,11,51,551,1551,1551,1551,102,103,'RHAAAA','INKAAA','OOOOxx'
+4667,7107,1,3,7,7,67,667,667,4667,4667,134,135,'NXAAAA','JNKAAA','VVVVxx'
+9603,7108,1,3,3,3,3,603,1603,4603,9603,6,7,'JFAAAA','KNKAAA','AAAAxx'
+4332,7109,0,0,2,12,32,332,332,4332,4332,64,65,'QKAAAA','LNKAAA','HHHHxx'
+5681,7110,1,1,1,1,81,681,1681,681,5681,162,163,'NKAAAA','MNKAAA','OOOOxx'
+8062,7111,0,2,2,2,62,62,62,3062,8062,124,125,'CYAAAA','NNKAAA','VVVVxx'
+2302,7112,0,2,2,2,2,302,302,2302,2302,4,5,'OKAAAA','ONKAAA','AAAAxx'
+2825,7113,1,1,5,5,25,825,825,2825,2825,50,51,'REAAAA','PNKAAA','HHHHxx'
+4527,7114,1,3,7,7,27,527,527,4527,4527,54,55,'DSAAAA','QNKAAA','OOOOxx'
+4230,7115,0,2,0,10,30,230,230,4230,4230,60,61,'SGAAAA','RNKAAA','VVVVxx'
+3053,7116,1,1,3,13,53,53,1053,3053,3053,106,107,'LNAAAA','SNKAAA','AAAAxx'
+983,7117,1,3,3,3,83,983,983,983,983,166,167,'VLAAAA','TNKAAA','HHHHxx'
+9458,7118,0,2,8,18,58,458,1458,4458,9458,116,117,'UZAAAA','UNKAAA','OOOOxx'
+4128,7119,0,0,8,8,28,128,128,4128,4128,56,57,'UCAAAA','VNKAAA','VVVVxx'
+425,7120,1,1,5,5,25,425,425,425,425,50,51,'JQAAAA','WNKAAA','AAAAxx'
+3911,7121,1,3,1,11,11,911,1911,3911,3911,22,23,'LUAAAA','XNKAAA','HHHHxx'
+6607,7122,1,3,7,7,7,607,607,1607,6607,14,15,'DUAAAA','YNKAAA','OOOOxx'
+5431,7123,1,3,1,11,31,431,1431,431,5431,62,63,'XAAAAA','ZNKAAA','VVVVxx'
+6330,7124,0,2,0,10,30,330,330,1330,6330,60,61,'MJAAAA','AOKAAA','AAAAxx'
+3592,7125,0,0,2,12,92,592,1592,3592,3592,184,185,'EIAAAA','BOKAAA','HHHHxx'
+154,7126,0,2,4,14,54,154,154,154,154,108,109,'YFAAAA','COKAAA','OOOOxx'
+9879,7127,1,3,9,19,79,879,1879,4879,9879,158,159,'ZPAAAA','DOKAAA','VVVVxx'
+3202,7128,0,2,2,2,2,202,1202,3202,3202,4,5,'ETAAAA','EOKAAA','AAAAxx'
+3056,7129,0,0,6,16,56,56,1056,3056,3056,112,113,'ONAAAA','FOKAAA','HHHHxx'
+9890,7130,0,2,0,10,90,890,1890,4890,9890,180,181,'KQAAAA','GOKAAA','OOOOxx'
+5840,7131,0,0,0,0,40,840,1840,840,5840,80,81,'QQAAAA','HOKAAA','VVVVxx'
+9804,7132,0,0,4,4,4,804,1804,4804,9804,8,9,'CNAAAA','IOKAAA','AAAAxx'
+681,7133,1,1,1,1,81,681,681,681,681,162,163,'FAAAAA','JOKAAA','HHHHxx'
+3443,7134,1,3,3,3,43,443,1443,3443,3443,86,87,'LCAAAA','KOKAAA','OOOOxx'
+8088,7135,0,0,8,8,88,88,88,3088,8088,176,177,'CZAAAA','LOKAAA','VVVVxx'
+9447,7136,1,3,7,7,47,447,1447,4447,9447,94,95,'JZAAAA','MOKAAA','AAAAxx'
+1490,7137,0,2,0,10,90,490,1490,1490,1490,180,181,'IFAAAA','NOKAAA','HHHHxx'
+3684,7138,0,0,4,4,84,684,1684,3684,3684,168,169,'SLAAAA','OOKAAA','OOOOxx'
+3113,7139,1,1,3,13,13,113,1113,3113,3113,26,27,'TPAAAA','POKAAA','VVVVxx'
+9004,7140,0,0,4,4,4,4,1004,4004,9004,8,9,'IIAAAA','QOKAAA','AAAAxx'
+7147,7141,1,3,7,7,47,147,1147,2147,7147,94,95,'XOAAAA','ROKAAA','HHHHxx'
+7571,7142,1,3,1,11,71,571,1571,2571,7571,142,143,'FFAAAA','SOKAAA','OOOOxx'
+5545,7143,1,1,5,5,45,545,1545,545,5545,90,91,'HFAAAA','TOKAAA','VVVVxx'
+4558,7144,0,2,8,18,58,558,558,4558,4558,116,117,'ITAAAA','UOKAAA','AAAAxx'
+6206,7145,0,2,6,6,6,206,206,1206,6206,12,13,'SEAAAA','VOKAAA','HHHHxx'
+5695,7146,1,3,5,15,95,695,1695,695,5695,190,191,'BLAAAA','WOKAAA','OOOOxx'
+9600,7147,0,0,0,0,0,600,1600,4600,9600,0,1,'GFAAAA','XOKAAA','VVVVxx'
+5432,7148,0,0,2,12,32,432,1432,432,5432,64,65,'YAAAAA','YOKAAA','AAAAxx'
+9299,7149,1,3,9,19,99,299,1299,4299,9299,198,199,'RTAAAA','ZOKAAA','HHHHxx'
+2386,7150,0,2,6,6,86,386,386,2386,2386,172,173,'UNAAAA','APKAAA','OOOOxx'
+2046,7151,0,2,6,6,46,46,46,2046,2046,92,93,'SAAAAA','BPKAAA','VVVVxx'
+3293,7152,1,1,3,13,93,293,1293,3293,3293,186,187,'RWAAAA','CPKAAA','AAAAxx'
+3046,7153,0,2,6,6,46,46,1046,3046,3046,92,93,'ENAAAA','DPKAAA','HHHHxx'
+214,7154,0,2,4,14,14,214,214,214,214,28,29,'GIAAAA','EPKAAA','OOOOxx'
+7893,7155,1,1,3,13,93,893,1893,2893,7893,186,187,'PRAAAA','FPKAAA','VVVVxx'
+891,7156,1,3,1,11,91,891,891,891,891,182,183,'HIAAAA','GPKAAA','AAAAxx'
+6499,7157,1,3,9,19,99,499,499,1499,6499,198,199,'ZPAAAA','HPKAAA','HHHHxx'
+5003,7158,1,3,3,3,3,3,1003,3,5003,6,7,'LKAAAA','IPKAAA','OOOOxx'
+6487,7159,1,3,7,7,87,487,487,1487,6487,174,175,'NPAAAA','JPKAAA','VVVVxx'
+9403,7160,1,3,3,3,3,403,1403,4403,9403,6,7,'RXAAAA','KPKAAA','AAAAxx'
+945,7161,1,1,5,5,45,945,945,945,945,90,91,'JKAAAA','LPKAAA','HHHHxx'
+6713,7162,1,1,3,13,13,713,713,1713,6713,26,27,'FYAAAA','MPKAAA','OOOOxx'
+9928,7163,0,0,8,8,28,928,1928,4928,9928,56,57,'WRAAAA','NPKAAA','VVVVxx'
+8585,7164,1,1,5,5,85,585,585,3585,8585,170,171,'FSAAAA','OPKAAA','AAAAxx'
+4004,7165,0,0,4,4,4,4,4,4004,4004,8,9,'AYAAAA','PPKAAA','HHHHxx'
+2528,7166,0,0,8,8,28,528,528,2528,2528,56,57,'GTAAAA','QPKAAA','OOOOxx'
+3350,7167,0,2,0,10,50,350,1350,3350,3350,100,101,'WYAAAA','RPKAAA','VVVVxx'
+2160,7168,0,0,0,0,60,160,160,2160,2160,120,121,'CFAAAA','SPKAAA','AAAAxx'
+1521,7169,1,1,1,1,21,521,1521,1521,1521,42,43,'NGAAAA','TPKAAA','HHHHxx'
+5660,7170,0,0,0,0,60,660,1660,660,5660,120,121,'SJAAAA','UPKAAA','OOOOxx'
+5755,7171,1,3,5,15,55,755,1755,755,5755,110,111,'JNAAAA','VPKAAA','VVVVxx'
+7614,7172,0,2,4,14,14,614,1614,2614,7614,28,29,'WGAAAA','WPKAAA','AAAAxx'
+3121,7173,1,1,1,1,21,121,1121,3121,3121,42,43,'BQAAAA','XPKAAA','HHHHxx'
+2735,7174,1,3,5,15,35,735,735,2735,2735,70,71,'FBAAAA','YPKAAA','OOOOxx'
+7506,7175,0,2,6,6,6,506,1506,2506,7506,12,13,'SCAAAA','ZPKAAA','VVVVxx'
+2693,7176,1,1,3,13,93,693,693,2693,2693,186,187,'PZAAAA','AQKAAA','AAAAxx'
+2892,7177,0,0,2,12,92,892,892,2892,2892,184,185,'GHAAAA','BQKAAA','HHHHxx'
+3310,7178,0,2,0,10,10,310,1310,3310,3310,20,21,'IXAAAA','CQKAAA','OOOOxx'
+3484,7179,0,0,4,4,84,484,1484,3484,3484,168,169,'AEAAAA','DQKAAA','VVVVxx'
+9733,7180,1,1,3,13,33,733,1733,4733,9733,66,67,'JKAAAA','EQKAAA','AAAAxx'
+29,7181,1,1,9,9,29,29,29,29,29,58,59,'DBAAAA','FQKAAA','HHHHxx'
+9013,7182,1,1,3,13,13,13,1013,4013,9013,26,27,'RIAAAA','GQKAAA','OOOOxx'
+3847,7183,1,3,7,7,47,847,1847,3847,3847,94,95,'ZRAAAA','HQKAAA','VVVVxx'
+6724,7184,0,0,4,4,24,724,724,1724,6724,48,49,'QYAAAA','IQKAAA','AAAAxx'
+2559,7185,1,3,9,19,59,559,559,2559,2559,118,119,'LUAAAA','JQKAAA','HHHHxx'
+5326,7186,0,2,6,6,26,326,1326,326,5326,52,53,'WWAAAA','KQKAAA','OOOOxx'
+4802,7187,0,2,2,2,2,802,802,4802,4802,4,5,'SCAAAA','LQKAAA','VVVVxx'
+131,7188,1,3,1,11,31,131,131,131,131,62,63,'BFAAAA','MQKAAA','AAAAxx'
+1634,7189,0,2,4,14,34,634,1634,1634,1634,68,69,'WKAAAA','NQKAAA','HHHHxx'
+919,7190,1,3,9,19,19,919,919,919,919,38,39,'JJAAAA','OQKAAA','OOOOxx'
+9575,7191,1,3,5,15,75,575,1575,4575,9575,150,151,'HEAAAA','PQKAAA','VVVVxx'
+1256,7192,0,0,6,16,56,256,1256,1256,1256,112,113,'IWAAAA','QQKAAA','AAAAxx'
+9428,7193,0,0,8,8,28,428,1428,4428,9428,56,57,'QYAAAA','RQKAAA','HHHHxx'
+5121,7194,1,1,1,1,21,121,1121,121,5121,42,43,'ZOAAAA','SQKAAA','OOOOxx'
+6584,7195,0,0,4,4,84,584,584,1584,6584,168,169,'GTAAAA','TQKAAA','VVVVxx'
+7193,7196,1,1,3,13,93,193,1193,2193,7193,186,187,'RQAAAA','UQKAAA','AAAAxx'
+4047,7197,1,3,7,7,47,47,47,4047,4047,94,95,'RZAAAA','VQKAAA','HHHHxx'
+104,7198,0,0,4,4,4,104,104,104,104,8,9,'AEAAAA','WQKAAA','OOOOxx'
+1527,7199,1,3,7,7,27,527,1527,1527,1527,54,55,'TGAAAA','XQKAAA','VVVVxx'
+3460,7200,0,0,0,0,60,460,1460,3460,3460,120,121,'CDAAAA','YQKAAA','AAAAxx'
+8526,7201,0,2,6,6,26,526,526,3526,8526,52,53,'YPAAAA','ZQKAAA','HHHHxx'
+8959,7202,1,3,9,19,59,959,959,3959,8959,118,119,'PGAAAA','ARKAAA','OOOOxx'
+3633,7203,1,1,3,13,33,633,1633,3633,3633,66,67,'TJAAAA','BRKAAA','VVVVxx'
+1799,7204,1,3,9,19,99,799,1799,1799,1799,198,199,'FRAAAA','CRKAAA','AAAAxx'
+461,7205,1,1,1,1,61,461,461,461,461,122,123,'TRAAAA','DRKAAA','HHHHxx'
+718,7206,0,2,8,18,18,718,718,718,718,36,37,'QBAAAA','ERKAAA','OOOOxx'
+3219,7207,1,3,9,19,19,219,1219,3219,3219,38,39,'VTAAAA','FRKAAA','VVVVxx'
+3494,7208,0,2,4,14,94,494,1494,3494,3494,188,189,'KEAAAA','GRKAAA','AAAAxx'
+9402,7209,0,2,2,2,2,402,1402,4402,9402,4,5,'QXAAAA','HRKAAA','HHHHxx'
+7983,7210,1,3,3,3,83,983,1983,2983,7983,166,167,'BVAAAA','IRKAAA','OOOOxx'
+7919,7211,1,3,9,19,19,919,1919,2919,7919,38,39,'PSAAAA','JRKAAA','VVVVxx'
+8036,7212,0,0,6,16,36,36,36,3036,8036,72,73,'CXAAAA','KRKAAA','AAAAxx'
+5164,7213,0,0,4,4,64,164,1164,164,5164,128,129,'QQAAAA','LRKAAA','HHHHxx'
+4160,7214,0,0,0,0,60,160,160,4160,4160,120,121,'AEAAAA','MRKAAA','OOOOxx'
+5370,7215,0,2,0,10,70,370,1370,370,5370,140,141,'OYAAAA','NRKAAA','VVVVxx'
+5347,7216,1,3,7,7,47,347,1347,347,5347,94,95,'RXAAAA','ORKAAA','AAAAxx'
+7109,7217,1,1,9,9,9,109,1109,2109,7109,18,19,'LNAAAA','PRKAAA','HHHHxx'
+4826,7218,0,2,6,6,26,826,826,4826,4826,52,53,'QDAAAA','QRKAAA','OOOOxx'
+1338,7219,0,2,8,18,38,338,1338,1338,1338,76,77,'MZAAAA','RRKAAA','VVVVxx'
+2711,7220,1,3,1,11,11,711,711,2711,2711,22,23,'HAAAAA','SRKAAA','AAAAxx'
+6299,7221,1,3,9,19,99,299,299,1299,6299,198,199,'HIAAAA','TRKAAA','HHHHxx'
+1616,7222,0,0,6,16,16,616,1616,1616,1616,32,33,'EKAAAA','URKAAA','OOOOxx'
+7519,7223,1,3,9,19,19,519,1519,2519,7519,38,39,'FDAAAA','VRKAAA','VVVVxx'
+1262,7224,0,2,2,2,62,262,1262,1262,1262,124,125,'OWAAAA','WRKAAA','AAAAxx'
+7228,7225,0,0,8,8,28,228,1228,2228,7228,56,57,'ASAAAA','XRKAAA','HHHHxx'
+7892,7226,0,0,2,12,92,892,1892,2892,7892,184,185,'ORAAAA','YRKAAA','OOOOxx'
+7929,7227,1,1,9,9,29,929,1929,2929,7929,58,59,'ZSAAAA','ZRKAAA','VVVVxx'
+7705,7228,1,1,5,5,5,705,1705,2705,7705,10,11,'JKAAAA','ASKAAA','AAAAxx'
+3111,7229,1,3,1,11,11,111,1111,3111,3111,22,23,'RPAAAA','BSKAAA','HHHHxx'
+3066,7230,0,2,6,6,66,66,1066,3066,3066,132,133,'YNAAAA','CSKAAA','OOOOxx'
+9559,7231,1,3,9,19,59,559,1559,4559,9559,118,119,'RDAAAA','DSKAAA','VVVVxx'
+3787,7232,1,3,7,7,87,787,1787,3787,3787,174,175,'RPAAAA','ESKAAA','AAAAxx'
+8710,7233,0,2,0,10,10,710,710,3710,8710,20,21,'AXAAAA','FSKAAA','HHHHxx'
+4870,7234,0,2,0,10,70,870,870,4870,4870,140,141,'IFAAAA','GSKAAA','OOOOxx'
+1883,7235,1,3,3,3,83,883,1883,1883,1883,166,167,'LUAAAA','HSKAAA','VVVVxx'
+9689,7236,1,1,9,9,89,689,1689,4689,9689,178,179,'RIAAAA','ISKAAA','AAAAxx'
+9491,7237,1,3,1,11,91,491,1491,4491,9491,182,183,'BBAAAA','JSKAAA','HHHHxx'
+2035,7238,1,3,5,15,35,35,35,2035,2035,70,71,'HAAAAA','KSKAAA','OOOOxx'
+655,7239,1,3,5,15,55,655,655,655,655,110,111,'FZAAAA','LSKAAA','VVVVxx'
+6305,7240,1,1,5,5,5,305,305,1305,6305,10,11,'NIAAAA','MSKAAA','AAAAxx'
+9423,7241,1,3,3,3,23,423,1423,4423,9423,46,47,'LYAAAA','NSKAAA','HHHHxx'
+283,7242,1,3,3,3,83,283,283,283,283,166,167,'XKAAAA','OSKAAA','OOOOxx'
+2607,7243,1,3,7,7,7,607,607,2607,2607,14,15,'HWAAAA','PSKAAA','VVVVxx'
+7740,7244,0,0,0,0,40,740,1740,2740,7740,80,81,'SLAAAA','QSKAAA','AAAAxx'
+6956,7245,0,0,6,16,56,956,956,1956,6956,112,113,'OHAAAA','RSKAAA','HHHHxx'
+884,7246,0,0,4,4,84,884,884,884,884,168,169,'AIAAAA','SSKAAA','OOOOxx'
+5730,7247,0,2,0,10,30,730,1730,730,5730,60,61,'KMAAAA','TSKAAA','VVVVxx'
+3438,7248,0,2,8,18,38,438,1438,3438,3438,76,77,'GCAAAA','USKAAA','AAAAxx'
+3250,7249,0,2,0,10,50,250,1250,3250,3250,100,101,'AVAAAA','VSKAAA','HHHHxx'
+5470,7250,0,2,0,10,70,470,1470,470,5470,140,141,'KCAAAA','WSKAAA','OOOOxx'
+2037,7251,1,1,7,17,37,37,37,2037,2037,74,75,'JAAAAA','XSKAAA','VVVVxx'
+6593,7252,1,1,3,13,93,593,593,1593,6593,186,187,'PTAAAA','YSKAAA','AAAAxx'
+3893,7253,1,1,3,13,93,893,1893,3893,3893,186,187,'TTAAAA','ZSKAAA','HHHHxx'
+3200,7254,0,0,0,0,0,200,1200,3200,3200,0,1,'CTAAAA','ATKAAA','OOOOxx'
+7125,7255,1,1,5,5,25,125,1125,2125,7125,50,51,'BOAAAA','BTKAAA','VVVVxx'
+2295,7256,1,3,5,15,95,295,295,2295,2295,190,191,'HKAAAA','CTKAAA','AAAAxx'
+2056,7257,0,0,6,16,56,56,56,2056,2056,112,113,'CBAAAA','DTKAAA','HHHHxx'
+2962,7258,0,2,2,2,62,962,962,2962,2962,124,125,'YJAAAA','ETKAAA','OOOOxx'
+993,7259,1,1,3,13,93,993,993,993,993,186,187,'FMAAAA','FTKAAA','VVVVxx'
+9127,7260,1,3,7,7,27,127,1127,4127,9127,54,55,'BNAAAA','GTKAAA','AAAAxx'
+2075,7261,1,3,5,15,75,75,75,2075,2075,150,151,'VBAAAA','HTKAAA','HHHHxx'
+9338,7262,0,2,8,18,38,338,1338,4338,9338,76,77,'EVAAAA','ITKAAA','OOOOxx'
+8100,7263,0,0,0,0,0,100,100,3100,8100,0,1,'OZAAAA','JTKAAA','VVVVxx'
+5047,7264,1,3,7,7,47,47,1047,47,5047,94,95,'DMAAAA','KTKAAA','AAAAxx'
+7032,7265,0,0,2,12,32,32,1032,2032,7032,64,65,'MKAAAA','LTKAAA','HHHHxx'
+6374,7266,0,2,4,14,74,374,374,1374,6374,148,149,'ELAAAA','MTKAAA','OOOOxx'
+4137,7267,1,1,7,17,37,137,137,4137,4137,74,75,'DDAAAA','NTKAAA','VVVVxx'
+7132,7268,0,0,2,12,32,132,1132,2132,7132,64,65,'IOAAAA','OTKAAA','AAAAxx'
+3064,7269,0,0,4,4,64,64,1064,3064,3064,128,129,'WNAAAA','PTKAAA','HHHHxx'
+3621,7270,1,1,1,1,21,621,1621,3621,3621,42,43,'HJAAAA','QTKAAA','OOOOxx'
+6199,7271,1,3,9,19,99,199,199,1199,6199,198,199,'LEAAAA','RTKAAA','VVVVxx'
+4926,7272,0,2,6,6,26,926,926,4926,4926,52,53,'MHAAAA','STKAAA','AAAAxx'
+8035,7273,1,3,5,15,35,35,35,3035,8035,70,71,'BXAAAA','TTKAAA','HHHHxx'
+2195,7274,1,3,5,15,95,195,195,2195,2195,190,191,'LGAAAA','UTKAAA','OOOOxx'
+5366,7275,0,2,6,6,66,366,1366,366,5366,132,133,'KYAAAA','VTKAAA','VVVVxx'
+3478,7276,0,2,8,18,78,478,1478,3478,3478,156,157,'UDAAAA','WTKAAA','AAAAxx'
+1926,7277,0,2,6,6,26,926,1926,1926,1926,52,53,'CWAAAA','XTKAAA','HHHHxx'
+7265,7278,1,1,5,5,65,265,1265,2265,7265,130,131,'LTAAAA','YTKAAA','OOOOxx'
+7668,7279,0,0,8,8,68,668,1668,2668,7668,136,137,'YIAAAA','ZTKAAA','VVVVxx'
+3335,7280,1,3,5,15,35,335,1335,3335,3335,70,71,'HYAAAA','AUKAAA','AAAAxx'
+7660,7281,0,0,0,0,60,660,1660,2660,7660,120,121,'QIAAAA','BUKAAA','HHHHxx'
+9604,7282,0,0,4,4,4,604,1604,4604,9604,8,9,'KFAAAA','CUKAAA','OOOOxx'
+7301,7283,1,1,1,1,1,301,1301,2301,7301,2,3,'VUAAAA','DUKAAA','VVVVxx'
+4475,7284,1,3,5,15,75,475,475,4475,4475,150,151,'DQAAAA','EUKAAA','AAAAxx'
+9954,7285,0,2,4,14,54,954,1954,4954,9954,108,109,'WSAAAA','FUKAAA','HHHHxx'
+5723,7286,1,3,3,3,23,723,1723,723,5723,46,47,'DMAAAA','GUKAAA','OOOOxx'
+2669,7287,1,1,9,9,69,669,669,2669,2669,138,139,'RYAAAA','HUKAAA','VVVVxx'
+1685,7288,1,1,5,5,85,685,1685,1685,1685,170,171,'VMAAAA','IUKAAA','AAAAxx'
+2233,7289,1,1,3,13,33,233,233,2233,2233,66,67,'XHAAAA','JUKAAA','HHHHxx'
+8111,7290,1,3,1,11,11,111,111,3111,8111,22,23,'ZZAAAA','KUKAAA','OOOOxx'
+7685,7291,1,1,5,5,85,685,1685,2685,7685,170,171,'PJAAAA','LUKAAA','VVVVxx'
+3773,7292,1,1,3,13,73,773,1773,3773,3773,146,147,'DPAAAA','MUKAAA','AAAAxx'
+7172,7293,0,0,2,12,72,172,1172,2172,7172,144,145,'WPAAAA','NUKAAA','HHHHxx'
+1740,7294,0,0,0,0,40,740,1740,1740,1740,80,81,'YOAAAA','OUKAAA','OOOOxx'
+5416,7295,0,0,6,16,16,416,1416,416,5416,32,33,'IAAAAA','PUKAAA','VVVVxx'
+1823,7296,1,3,3,3,23,823,1823,1823,1823,46,47,'DSAAAA','QUKAAA','AAAAxx'
+1668,7297,0,0,8,8,68,668,1668,1668,1668,136,137,'EMAAAA','RUKAAA','HHHHxx'
+1795,7298,1,3,5,15,95,795,1795,1795,1795,190,191,'BRAAAA','SUKAAA','OOOOxx'
+8599,7299,1,3,9,19,99,599,599,3599,8599,198,199,'TSAAAA','TUKAAA','VVVVxx'
+5542,7300,0,2,2,2,42,542,1542,542,5542,84,85,'EFAAAA','UUKAAA','AAAAxx'
+5658,7301,0,2,8,18,58,658,1658,658,5658,116,117,'QJAAAA','VUKAAA','HHHHxx'
+9824,7302,0,0,4,4,24,824,1824,4824,9824,48,49,'WNAAAA','WUKAAA','OOOOxx'
+19,7303,1,3,9,19,19,19,19,19,19,38,39,'TAAAAA','XUKAAA','VVVVxx'
+9344,7304,0,0,4,4,44,344,1344,4344,9344,88,89,'KVAAAA','YUKAAA','AAAAxx'
+5900,7305,0,0,0,0,0,900,1900,900,5900,0,1,'YSAAAA','ZUKAAA','HHHHxx'
+7818,7306,0,2,8,18,18,818,1818,2818,7818,36,37,'SOAAAA','AVKAAA','OOOOxx'
+8377,7307,1,1,7,17,77,377,377,3377,8377,154,155,'FKAAAA','BVKAAA','VVVVxx'
+6886,7308,0,2,6,6,86,886,886,1886,6886,172,173,'WEAAAA','CVKAAA','AAAAxx'
+3201,7309,1,1,1,1,1,201,1201,3201,3201,2,3,'DTAAAA','DVKAAA','HHHHxx'
+87,7310,1,3,7,7,87,87,87,87,87,174,175,'JDAAAA','EVKAAA','OOOOxx'
+1089,7311,1,1,9,9,89,89,1089,1089,1089,178,179,'XPAAAA','FVKAAA','VVVVxx'
+3948,7312,0,0,8,8,48,948,1948,3948,3948,96,97,'WVAAAA','GVKAAA','AAAAxx'
+6383,7313,1,3,3,3,83,383,383,1383,6383,166,167,'NLAAAA','HVKAAA','HHHHxx'
+837,7314,1,1,7,17,37,837,837,837,837,74,75,'FGAAAA','IVKAAA','OOOOxx'
+6285,7315,1,1,5,5,85,285,285,1285,6285,170,171,'THAAAA','JVKAAA','VVVVxx'
+78,7316,0,2,8,18,78,78,78,78,78,156,157,'ADAAAA','KVKAAA','AAAAxx'
+4389,7317,1,1,9,9,89,389,389,4389,4389,178,179,'VMAAAA','LVKAAA','HHHHxx'
+4795,7318,1,3,5,15,95,795,795,4795,4795,190,191,'LCAAAA','MVKAAA','OOOOxx'
+9369,7319,1,1,9,9,69,369,1369,4369,9369,138,139,'JWAAAA','NVKAAA','VVVVxx'
+69,7320,1,1,9,9,69,69,69,69,69,138,139,'RCAAAA','OVKAAA','AAAAxx'
+7689,7321,1,1,9,9,89,689,1689,2689,7689,178,179,'TJAAAA','PVKAAA','HHHHxx'
+5642,7322,0,2,2,2,42,642,1642,642,5642,84,85,'AJAAAA','QVKAAA','OOOOxx'
+2348,7323,0,0,8,8,48,348,348,2348,2348,96,97,'IMAAAA','RVKAAA','VVVVxx'
+9308,7324,0,0,8,8,8,308,1308,4308,9308,16,17,'AUAAAA','SVKAAA','AAAAxx'
+9093,7325,1,1,3,13,93,93,1093,4093,9093,186,187,'TLAAAA','TVKAAA','HHHHxx'
+1199,7326,1,3,9,19,99,199,1199,1199,1199,198,199,'DUAAAA','UVKAAA','OOOOxx'
+307,7327,1,3,7,7,7,307,307,307,307,14,15,'VLAAAA','VVKAAA','VVVVxx'
+3814,7328,0,2,4,14,14,814,1814,3814,3814,28,29,'SQAAAA','WVKAAA','AAAAxx'
+8817,7329,1,1,7,17,17,817,817,3817,8817,34,35,'DBAAAA','XVKAAA','HHHHxx'
+2329,7330,1,1,9,9,29,329,329,2329,2329,58,59,'PLAAAA','YVKAAA','OOOOxx'
+2932,7331,0,0,2,12,32,932,932,2932,2932,64,65,'UIAAAA','ZVKAAA','VVVVxx'
+1986,7332,0,2,6,6,86,986,1986,1986,1986,172,173,'KYAAAA','AWKAAA','AAAAxx'
+5279,7333,1,3,9,19,79,279,1279,279,5279,158,159,'BVAAAA','BWKAAA','HHHHxx'
+5357,7334,1,1,7,17,57,357,1357,357,5357,114,115,'BYAAAA','CWKAAA','OOOOxx'
+6778,7335,0,2,8,18,78,778,778,1778,6778,156,157,'SAAAAA','DWKAAA','VVVVxx'
+2773,7336,1,1,3,13,73,773,773,2773,2773,146,147,'RCAAAA','EWKAAA','AAAAxx'
+244,7337,0,0,4,4,44,244,244,244,244,88,89,'KJAAAA','FWKAAA','HHHHxx'
+6900,7338,0,0,0,0,0,900,900,1900,6900,0,1,'KFAAAA','GWKAAA','OOOOxx'
+4739,7339,1,3,9,19,39,739,739,4739,4739,78,79,'HAAAAA','HWKAAA','VVVVxx'
+3217,7340,1,1,7,17,17,217,1217,3217,3217,34,35,'TTAAAA','IWKAAA','AAAAxx'
+7563,7341,1,3,3,3,63,563,1563,2563,7563,126,127,'XEAAAA','JWKAAA','HHHHxx'
+1807,7342,1,3,7,7,7,807,1807,1807,1807,14,15,'NRAAAA','KWKAAA','OOOOxx'
+4199,7343,1,3,9,19,99,199,199,4199,4199,198,199,'NFAAAA','LWKAAA','VVVVxx'
+1077,7344,1,1,7,17,77,77,1077,1077,1077,154,155,'LPAAAA','MWKAAA','AAAAxx'
+8348,7345,0,0,8,8,48,348,348,3348,8348,96,97,'CJAAAA','NWKAAA','HHHHxx'
+841,7346,1,1,1,1,41,841,841,841,841,82,83,'JGAAAA','OWKAAA','OOOOxx'
+8154,7347,0,2,4,14,54,154,154,3154,8154,108,109,'QBAAAA','PWKAAA','VVVVxx'
+5261,7348,1,1,1,1,61,261,1261,261,5261,122,123,'JUAAAA','QWKAAA','AAAAxx'
+1950,7349,0,2,0,10,50,950,1950,1950,1950,100,101,'AXAAAA','RWKAAA','HHHHxx'
+8472,7350,0,0,2,12,72,472,472,3472,8472,144,145,'WNAAAA','SWKAAA','OOOOxx'
+8745,7351,1,1,5,5,45,745,745,3745,8745,90,91,'JYAAAA','TWKAAA','VVVVxx'
+8715,7352,1,3,5,15,15,715,715,3715,8715,30,31,'FXAAAA','UWKAAA','AAAAxx'
+9708,7353,0,0,8,8,8,708,1708,4708,9708,16,17,'KJAAAA','VWKAAA','HHHHxx'
+5860,7354,0,0,0,0,60,860,1860,860,5860,120,121,'KRAAAA','WWKAAA','OOOOxx'
+9142,7355,0,2,2,2,42,142,1142,4142,9142,84,85,'QNAAAA','XWKAAA','VVVVxx'
+6582,7356,0,2,2,2,82,582,582,1582,6582,164,165,'ETAAAA','YWKAAA','AAAAxx'
+1255,7357,1,3,5,15,55,255,1255,1255,1255,110,111,'HWAAAA','ZWKAAA','HHHHxx'
+6459,7358,1,3,9,19,59,459,459,1459,6459,118,119,'LOAAAA','AXKAAA','OOOOxx'
+6327,7359,1,3,7,7,27,327,327,1327,6327,54,55,'JJAAAA','BXKAAA','VVVVxx'
+4692,7360,0,0,2,12,92,692,692,4692,4692,184,185,'MYAAAA','CXKAAA','AAAAxx'
+3772,7361,0,0,2,12,72,772,1772,3772,3772,144,145,'CPAAAA','DXKAAA','HHHHxx'
+4203,7362,1,3,3,3,3,203,203,4203,4203,6,7,'RFAAAA','EXKAAA','OOOOxx'
+2946,7363,0,2,6,6,46,946,946,2946,2946,92,93,'IJAAAA','FXKAAA','VVVVxx'
+3524,7364,0,0,4,4,24,524,1524,3524,3524,48,49,'OFAAAA','GXKAAA','AAAAxx'
+8409,7365,1,1,9,9,9,409,409,3409,8409,18,19,'LLAAAA','HXKAAA','HHHHxx'
+1824,7366,0,0,4,4,24,824,1824,1824,1824,48,49,'ESAAAA','IXKAAA','OOOOxx'
+4637,7367,1,1,7,17,37,637,637,4637,4637,74,75,'JWAAAA','JXKAAA','VVVVxx'
+589,7368,1,1,9,9,89,589,589,589,589,178,179,'RWAAAA','KXKAAA','AAAAxx'
+484,7369,0,0,4,4,84,484,484,484,484,168,169,'QSAAAA','LXKAAA','HHHHxx'
+8963,7370,1,3,3,3,63,963,963,3963,8963,126,127,'TGAAAA','MXKAAA','OOOOxx'
+5502,7371,0,2,2,2,2,502,1502,502,5502,4,5,'QDAAAA','NXKAAA','VVVVxx'
+6982,7372,0,2,2,2,82,982,982,1982,6982,164,165,'OIAAAA','OXKAAA','AAAAxx'
+8029,7373,1,1,9,9,29,29,29,3029,8029,58,59,'VWAAAA','PXKAAA','HHHHxx'
+4395,7374,1,3,5,15,95,395,395,4395,4395,190,191,'BNAAAA','QXKAAA','OOOOxx'
+2595,7375,1,3,5,15,95,595,595,2595,2595,190,191,'VVAAAA','RXKAAA','VVVVxx'
+2133,7376,1,1,3,13,33,133,133,2133,2133,66,67,'BEAAAA','SXKAAA','AAAAxx'
+1414,7377,0,2,4,14,14,414,1414,1414,1414,28,29,'KCAAAA','TXKAAA','HHHHxx'
+8201,7378,1,1,1,1,1,201,201,3201,8201,2,3,'LDAAAA','UXKAAA','OOOOxx'
+4706,7379,0,2,6,6,6,706,706,4706,4706,12,13,'AZAAAA','VXKAAA','VVVVxx'
+5310,7380,0,2,0,10,10,310,1310,310,5310,20,21,'GWAAAA','WXKAAA','AAAAxx'
+7333,7381,1,1,3,13,33,333,1333,2333,7333,66,67,'BWAAAA','XXKAAA','HHHHxx'
+9420,7382,0,0,0,0,20,420,1420,4420,9420,40,41,'IYAAAA','YXKAAA','OOOOxx'
+1383,7383,1,3,3,3,83,383,1383,1383,1383,166,167,'FBAAAA','ZXKAAA','VVVVxx'
+6225,7384,1,1,5,5,25,225,225,1225,6225,50,51,'LFAAAA','AYKAAA','AAAAxx'
+2064,7385,0,0,4,4,64,64,64,2064,2064,128,129,'KBAAAA','BYKAAA','HHHHxx'
+6700,7386,0,0,0,0,0,700,700,1700,6700,0,1,'SXAAAA','CYKAAA','OOOOxx'
+1352,7387,0,0,2,12,52,352,1352,1352,1352,104,105,'AAAAAA','DYKAAA','VVVVxx'
+4249,7388,1,1,9,9,49,249,249,4249,4249,98,99,'LHAAAA','EYKAAA','AAAAxx'
+9429,7389,1,1,9,9,29,429,1429,4429,9429,58,59,'RYAAAA','FYKAAA','HHHHxx'
+8090,7390,0,2,0,10,90,90,90,3090,8090,180,181,'EZAAAA','GYKAAA','OOOOxx'
+5378,7391,0,2,8,18,78,378,1378,378,5378,156,157,'WYAAAA','HYKAAA','VVVVxx'
+9085,7392,1,1,5,5,85,85,1085,4085,9085,170,171,'LLAAAA','IYKAAA','AAAAxx'
+7468,7393,0,0,8,8,68,468,1468,2468,7468,136,137,'GBAAAA','JYKAAA','HHHHxx'
+9955,7394,1,3,5,15,55,955,1955,4955,9955,110,111,'XSAAAA','KYKAAA','OOOOxx'
+8692,7395,0,0,2,12,92,692,692,3692,8692,184,185,'IWAAAA','LYKAAA','VVVVxx'
+1463,7396,1,3,3,3,63,463,1463,1463,1463,126,127,'HEAAAA','MYKAAA','AAAAxx'
+3577,7397,1,1,7,17,77,577,1577,3577,3577,154,155,'PHAAAA','NYKAAA','HHHHxx'
+5654,7398,0,2,4,14,54,654,1654,654,5654,108,109,'MJAAAA','OYKAAA','OOOOxx'
+7955,7399,1,3,5,15,55,955,1955,2955,7955,110,111,'ZTAAAA','PYKAAA','VVVVxx'
+4843,7400,1,3,3,3,43,843,843,4843,4843,86,87,'HEAAAA','QYKAAA','AAAAxx'
+1776,7401,0,0,6,16,76,776,1776,1776,1776,152,153,'IQAAAA','RYKAAA','HHHHxx'
+2223,7402,1,3,3,3,23,223,223,2223,2223,46,47,'NHAAAA','SYKAAA','OOOOxx'
+8442,7403,0,2,2,2,42,442,442,3442,8442,84,85,'SMAAAA','TYKAAA','VVVVxx'
+9738,7404,0,2,8,18,38,738,1738,4738,9738,76,77,'OKAAAA','UYKAAA','AAAAxx'
+4867,7405,1,3,7,7,67,867,867,4867,4867,134,135,'FFAAAA','VYKAAA','HHHHxx'
+2983,7406,1,3,3,3,83,983,983,2983,2983,166,167,'TKAAAA','WYKAAA','OOOOxx'
+3300,7407,0,0,0,0,0,300,1300,3300,3300,0,1,'YWAAAA','XYKAAA','VVVVxx'
+3815,7408,1,3,5,15,15,815,1815,3815,3815,30,31,'TQAAAA','YYKAAA','AAAAxx'
+1779,7409,1,3,9,19,79,779,1779,1779,1779,158,159,'LQAAAA','ZYKAAA','HHHHxx'
+1123,7410,1,3,3,3,23,123,1123,1123,1123,46,47,'FRAAAA','AZKAAA','OOOOxx'
+4824,7411,0,0,4,4,24,824,824,4824,4824,48,49,'ODAAAA','BZKAAA','VVVVxx'
+5407,7412,1,3,7,7,7,407,1407,407,5407,14,15,'ZZAAAA','CZKAAA','AAAAxx'
+5123,7413,1,3,3,3,23,123,1123,123,5123,46,47,'BPAAAA','DZKAAA','HHHHxx'
+2515,7414,1,3,5,15,15,515,515,2515,2515,30,31,'TSAAAA','EZKAAA','OOOOxx'
+4781,7415,1,1,1,1,81,781,781,4781,4781,162,163,'XBAAAA','FZKAAA','VVVVxx'
+7831,7416,1,3,1,11,31,831,1831,2831,7831,62,63,'FPAAAA','GZKAAA','AAAAxx'
+6946,7417,0,2,6,6,46,946,946,1946,6946,92,93,'EHAAAA','HZKAAA','HHHHxx'
+1215,7418,1,3,5,15,15,215,1215,1215,1215,30,31,'TUAAAA','IZKAAA','OOOOxx'
+7783,7419,1,3,3,3,83,783,1783,2783,7783,166,167,'JNAAAA','JZKAAA','VVVVxx'
+4532,7420,0,0,2,12,32,532,532,4532,4532,64,65,'ISAAAA','KZKAAA','AAAAxx'
+9068,7421,0,0,8,8,68,68,1068,4068,9068,136,137,'UKAAAA','LZKAAA','HHHHxx'
+7030,7422,0,2,0,10,30,30,1030,2030,7030,60,61,'KKAAAA','MZKAAA','OOOOxx'
+436,7423,0,0,6,16,36,436,436,436,436,72,73,'UQAAAA','NZKAAA','VVVVxx'
+6549,7424,1,1,9,9,49,549,549,1549,6549,98,99,'XRAAAA','OZKAAA','AAAAxx'
+3348,7425,0,0,8,8,48,348,1348,3348,3348,96,97,'UYAAAA','PZKAAA','HHHHxx'
+6229,7426,1,1,9,9,29,229,229,1229,6229,58,59,'PFAAAA','QZKAAA','OOOOxx'
+3933,7427,1,1,3,13,33,933,1933,3933,3933,66,67,'HVAAAA','RZKAAA','VVVVxx'
+1876,7428,0,0,6,16,76,876,1876,1876,1876,152,153,'EUAAAA','SZKAAA','AAAAxx'
+8920,7429,0,0,0,0,20,920,920,3920,8920,40,41,'CFAAAA','TZKAAA','HHHHxx'
+7926,7430,0,2,6,6,26,926,1926,2926,7926,52,53,'WSAAAA','UZKAAA','OOOOxx'
+8805,7431,1,1,5,5,5,805,805,3805,8805,10,11,'RAAAAA','VZKAAA','VVVVxx'
+6729,7432,1,1,9,9,29,729,729,1729,6729,58,59,'VYAAAA','WZKAAA','AAAAxx'
+7397,7433,1,1,7,17,97,397,1397,2397,7397,194,195,'NYAAAA','XZKAAA','HHHHxx'
+9303,7434,1,3,3,3,3,303,1303,4303,9303,6,7,'VTAAAA','YZKAAA','OOOOxx'
+4255,7435,1,3,5,15,55,255,255,4255,4255,110,111,'RHAAAA','ZZKAAA','VVVVxx'
+7229,7436,1,1,9,9,29,229,1229,2229,7229,58,59,'BSAAAA','AALAAA','AAAAxx'
+854,7437,0,2,4,14,54,854,854,854,854,108,109,'WGAAAA','BALAAA','HHHHxx'
+6723,7438,1,3,3,3,23,723,723,1723,6723,46,47,'PYAAAA','CALAAA','OOOOxx'
+9597,7439,1,1,7,17,97,597,1597,4597,9597,194,195,'DFAAAA','DALAAA','VVVVxx'
+6532,7440,0,0,2,12,32,532,532,1532,6532,64,65,'GRAAAA','EALAAA','AAAAxx'
+2910,7441,0,2,0,10,10,910,910,2910,2910,20,21,'YHAAAA','FALAAA','HHHHxx'
+6717,7442,1,1,7,17,17,717,717,1717,6717,34,35,'JYAAAA','GALAAA','OOOOxx'
+1790,7443,0,2,0,10,90,790,1790,1790,1790,180,181,'WQAAAA','HALAAA','VVVVxx'
+3761,7444,1,1,1,1,61,761,1761,3761,3761,122,123,'ROAAAA','IALAAA','AAAAxx'
+1565,7445,1,1,5,5,65,565,1565,1565,1565,130,131,'FIAAAA','JALAAA','HHHHxx'
+6205,7446,1,1,5,5,5,205,205,1205,6205,10,11,'REAAAA','KALAAA','OOOOxx'
+2726,7447,0,2,6,6,26,726,726,2726,2726,52,53,'WAAAAA','LALAAA','VVVVxx'
+799,7448,1,3,9,19,99,799,799,799,799,198,199,'TEAAAA','MALAAA','AAAAxx'
+3540,7449,0,0,0,0,40,540,1540,3540,3540,80,81,'EGAAAA','NALAAA','HHHHxx'
+5878,7450,0,2,8,18,78,878,1878,878,5878,156,157,'CSAAAA','OALAAA','OOOOxx'
+2542,7451,0,2,2,2,42,542,542,2542,2542,84,85,'UTAAAA','PALAAA','VVVVxx'
+4888,7452,0,0,8,8,88,888,888,4888,4888,176,177,'AGAAAA','QALAAA','AAAAxx'
+5290,7453,0,2,0,10,90,290,1290,290,5290,180,181,'MVAAAA','RALAAA','HHHHxx'
+7995,7454,1,3,5,15,95,995,1995,2995,7995,190,191,'NVAAAA','SALAAA','OOOOxx'
+3519,7455,1,3,9,19,19,519,1519,3519,3519,38,39,'JFAAAA','TALAAA','VVVVxx'
+3571,7456,1,3,1,11,71,571,1571,3571,3571,142,143,'JHAAAA','UALAAA','AAAAxx'
+7854,7457,0,2,4,14,54,854,1854,2854,7854,108,109,'CQAAAA','VALAAA','HHHHxx'
+5184,7458,0,0,4,4,84,184,1184,184,5184,168,169,'KRAAAA','WALAAA','OOOOxx'
+3498,7459,0,2,8,18,98,498,1498,3498,3498,196,197,'OEAAAA','XALAAA','VVVVxx'
+1264,7460,0,0,4,4,64,264,1264,1264,1264,128,129,'QWAAAA','YALAAA','AAAAxx'
+3159,7461,1,3,9,19,59,159,1159,3159,3159,118,119,'NRAAAA','ZALAAA','HHHHxx'
+5480,7462,0,0,0,0,80,480,1480,480,5480,160,161,'UCAAAA','ABLAAA','OOOOxx'
+1706,7463,0,2,6,6,6,706,1706,1706,1706,12,13,'QNAAAA','BBLAAA','VVVVxx'
+4540,7464,0,0,0,0,40,540,540,4540,4540,80,81,'QSAAAA','CBLAAA','AAAAxx'
+2799,7465,1,3,9,19,99,799,799,2799,2799,198,199,'RDAAAA','DBLAAA','HHHHxx'
+7389,7466,1,1,9,9,89,389,1389,2389,7389,178,179,'FYAAAA','EBLAAA','OOOOxx'
+5565,7467,1,1,5,5,65,565,1565,565,5565,130,131,'BGAAAA','FBLAAA','VVVVxx'
+3896,7468,0,0,6,16,96,896,1896,3896,3896,192,193,'WTAAAA','GBLAAA','AAAAxx'
+2100,7469,0,0,0,0,0,100,100,2100,2100,0,1,'UCAAAA','HBLAAA','HHHHxx'
+3507,7470,1,3,7,7,7,507,1507,3507,3507,14,15,'XEAAAA','IBLAAA','OOOOxx'
+7971,7471,1,3,1,11,71,971,1971,2971,7971,142,143,'PUAAAA','JBLAAA','VVVVxx'
+2312,7472,0,0,2,12,12,312,312,2312,2312,24,25,'YKAAAA','KBLAAA','AAAAxx'
+2494,7473,0,2,4,14,94,494,494,2494,2494,188,189,'YRAAAA','LBLAAA','HHHHxx'
+2474,7474,0,2,4,14,74,474,474,2474,2474,148,149,'ERAAAA','MBLAAA','OOOOxx'
+3136,7475,0,0,6,16,36,136,1136,3136,3136,72,73,'QQAAAA','NBLAAA','VVVVxx'
+7242,7476,0,2,2,2,42,242,1242,2242,7242,84,85,'OSAAAA','OBLAAA','AAAAxx'
+9430,7477,0,2,0,10,30,430,1430,4430,9430,60,61,'SYAAAA','PBLAAA','HHHHxx'
+1052,7478,0,0,2,12,52,52,1052,1052,1052,104,105,'MOAAAA','QBLAAA','OOOOxx'
+4172,7479,0,0,2,12,72,172,172,4172,4172,144,145,'MEAAAA','RBLAAA','VVVVxx'
+970,7480,0,2,0,10,70,970,970,970,970,140,141,'ILAAAA','SBLAAA','AAAAxx'
+882,7481,0,2,2,2,82,882,882,882,882,164,165,'YHAAAA','TBLAAA','HHHHxx'
+9799,7482,1,3,9,19,99,799,1799,4799,9799,198,199,'XMAAAA','UBLAAA','OOOOxx'
+5850,7483,0,2,0,10,50,850,1850,850,5850,100,101,'ARAAAA','VBLAAA','VVVVxx'
+9473,7484,1,1,3,13,73,473,1473,4473,9473,146,147,'JAAAAA','WBLAAA','AAAAxx'
+8635,7485,1,3,5,15,35,635,635,3635,8635,70,71,'DUAAAA','XBLAAA','HHHHxx'
+2349,7486,1,1,9,9,49,349,349,2349,2349,98,99,'JMAAAA','YBLAAA','OOOOxx'
+2270,7487,0,2,0,10,70,270,270,2270,2270,140,141,'IJAAAA','ZBLAAA','VVVVxx'
+7887,7488,1,3,7,7,87,887,1887,2887,7887,174,175,'JRAAAA','ACLAAA','AAAAxx'
+3091,7489,1,3,1,11,91,91,1091,3091,3091,182,183,'XOAAAA','BCLAAA','HHHHxx'
+3728,7490,0,0,8,8,28,728,1728,3728,3728,56,57,'KNAAAA','CCLAAA','OOOOxx'
+3658,7491,0,2,8,18,58,658,1658,3658,3658,116,117,'SKAAAA','DCLAAA','VVVVxx'
+5975,7492,1,3,5,15,75,975,1975,975,5975,150,151,'VVAAAA','ECLAAA','AAAAxx'
+332,7493,0,0,2,12,32,332,332,332,332,64,65,'UMAAAA','FCLAAA','HHHHxx'
+7990,7494,0,2,0,10,90,990,1990,2990,7990,180,181,'IVAAAA','GCLAAA','OOOOxx'
+8688,7495,0,0,8,8,88,688,688,3688,8688,176,177,'EWAAAA','HCLAAA','VVVVxx'
+9601,7496,1,1,1,1,1,601,1601,4601,9601,2,3,'HFAAAA','ICLAAA','AAAAxx'
+8401,7497,1,1,1,1,1,401,401,3401,8401,2,3,'DLAAAA','JCLAAA','HHHHxx'
+8093,7498,1,1,3,13,93,93,93,3093,8093,186,187,'HZAAAA','KCLAAA','OOOOxx'
+4278,7499,0,2,8,18,78,278,278,4278,4278,156,157,'OIAAAA','LCLAAA','VVVVxx'
+5467,7500,1,3,7,7,67,467,1467,467,5467,134,135,'HCAAAA','MCLAAA','AAAAxx'
+3137,7501,1,1,7,17,37,137,1137,3137,3137,74,75,'RQAAAA','NCLAAA','HHHHxx'
+204,7502,0,0,4,4,4,204,204,204,204,8,9,'WHAAAA','OCLAAA','OOOOxx'
+8224,7503,0,0,4,4,24,224,224,3224,8224,48,49,'IEAAAA','PCLAAA','VVVVxx'
+2944,7504,0,0,4,4,44,944,944,2944,2944,88,89,'GJAAAA','QCLAAA','AAAAxx'
+7593,7505,1,1,3,13,93,593,1593,2593,7593,186,187,'BGAAAA','RCLAAA','HHHHxx'
+814,7506,0,2,4,14,14,814,814,814,814,28,29,'IFAAAA','SCLAAA','OOOOxx'
+8047,7507,1,3,7,7,47,47,47,3047,8047,94,95,'NXAAAA','TCLAAA','VVVVxx'
+7802,7508,0,2,2,2,2,802,1802,2802,7802,4,5,'COAAAA','UCLAAA','AAAAxx'
+901,7509,1,1,1,1,1,901,901,901,901,2,3,'RIAAAA','VCLAAA','HHHHxx'
+6168,7510,0,0,8,8,68,168,168,1168,6168,136,137,'GDAAAA','WCLAAA','OOOOxx'
+2950,7511,0,2,0,10,50,950,950,2950,2950,100,101,'MJAAAA','XCLAAA','VVVVxx'
+5393,7512,1,1,3,13,93,393,1393,393,5393,186,187,'LZAAAA','YCLAAA','AAAAxx'
+3585,7513,1,1,5,5,85,585,1585,3585,3585,170,171,'XHAAAA','ZCLAAA','HHHHxx'
+9392,7514,0,0,2,12,92,392,1392,4392,9392,184,185,'GXAAAA','ADLAAA','OOOOxx'
+8314,7515,0,2,4,14,14,314,314,3314,8314,28,29,'UHAAAA','BDLAAA','VVVVxx'
+9972,7516,0,0,2,12,72,972,1972,4972,9972,144,145,'OTAAAA','CDLAAA','AAAAxx'
+9130,7517,0,2,0,10,30,130,1130,4130,9130,60,61,'ENAAAA','DDLAAA','HHHHxx'
+975,7518,1,3,5,15,75,975,975,975,975,150,151,'NLAAAA','EDLAAA','OOOOxx'
+5720,7519,0,0,0,0,20,720,1720,720,5720,40,41,'AMAAAA','FDLAAA','VVVVxx'
+3769,7520,1,1,9,9,69,769,1769,3769,3769,138,139,'ZOAAAA','GDLAAA','AAAAxx'
+5303,7521,1,3,3,3,3,303,1303,303,5303,6,7,'ZVAAAA','HDLAAA','HHHHxx'
+6564,7522,0,0,4,4,64,564,564,1564,6564,128,129,'MSAAAA','IDLAAA','OOOOxx'
+7855,7523,1,3,5,15,55,855,1855,2855,7855,110,111,'DQAAAA','JDLAAA','VVVVxx'
+8153,7524,1,1,3,13,53,153,153,3153,8153,106,107,'PBAAAA','KDLAAA','AAAAxx'
+2292,7525,0,0,2,12,92,292,292,2292,2292,184,185,'EKAAAA','LDLAAA','HHHHxx'
+3156,7526,0,0,6,16,56,156,1156,3156,3156,112,113,'KRAAAA','MDLAAA','OOOOxx'
+6580,7527,0,0,0,0,80,580,580,1580,6580,160,161,'CTAAAA','NDLAAA','VVVVxx'
+5324,7528,0,0,4,4,24,324,1324,324,5324,48,49,'UWAAAA','ODLAAA','AAAAxx'
+8871,7529,1,3,1,11,71,871,871,3871,8871,142,143,'FDAAAA','PDLAAA','HHHHxx'
+2543,7530,1,3,3,3,43,543,543,2543,2543,86,87,'VTAAAA','QDLAAA','OOOOxx'
+7857,7531,1,1,7,17,57,857,1857,2857,7857,114,115,'FQAAAA','RDLAAA','VVVVxx'
+4084,7532,0,0,4,4,84,84,84,4084,4084,168,169,'CBAAAA','SDLAAA','AAAAxx'
+9887,7533,1,3,7,7,87,887,1887,4887,9887,174,175,'HQAAAA','TDLAAA','HHHHxx'
+6940,7534,0,0,0,0,40,940,940,1940,6940,80,81,'YGAAAA','UDLAAA','OOOOxx'
+3415,7535,1,3,5,15,15,415,1415,3415,3415,30,31,'JBAAAA','VDLAAA','VVVVxx'
+5012,7536,0,0,2,12,12,12,1012,12,5012,24,25,'UKAAAA','WDLAAA','AAAAxx'
+3187,7537,1,3,7,7,87,187,1187,3187,3187,174,175,'PSAAAA','XDLAAA','HHHHxx'
+8556,7538,0,0,6,16,56,556,556,3556,8556,112,113,'CRAAAA','YDLAAA','OOOOxx'
+7966,7539,0,2,6,6,66,966,1966,2966,7966,132,133,'KUAAAA','ZDLAAA','VVVVxx'
+7481,7540,1,1,1,1,81,481,1481,2481,7481,162,163,'TBAAAA','AELAAA','AAAAxx'
+8524,7541,0,0,4,4,24,524,524,3524,8524,48,49,'WPAAAA','BELAAA','HHHHxx'
+3021,7542,1,1,1,1,21,21,1021,3021,3021,42,43,'FMAAAA','CELAAA','OOOOxx'
+6045,7543,1,1,5,5,45,45,45,1045,6045,90,91,'NYAAAA','DELAAA','VVVVxx'
+8022,7544,0,2,2,2,22,22,22,3022,8022,44,45,'OWAAAA','EELAAA','AAAAxx'
+3626,7545,0,2,6,6,26,626,1626,3626,3626,52,53,'MJAAAA','FELAAA','HHHHxx'
+1030,7546,0,2,0,10,30,30,1030,1030,1030,60,61,'QNAAAA','GELAAA','OOOOxx'
+8903,7547,1,3,3,3,3,903,903,3903,8903,6,7,'LEAAAA','HELAAA','VVVVxx'
+7488,7548,0,0,8,8,88,488,1488,2488,7488,176,177,'ACAAAA','IELAAA','AAAAxx'
+9293,7549,1,1,3,13,93,293,1293,4293,9293,186,187,'LTAAAA','JELAAA','HHHHxx'
+4586,7550,0,2,6,6,86,586,586,4586,4586,172,173,'KUAAAA','KELAAA','OOOOxx'
+9282,7551,0,2,2,2,82,282,1282,4282,9282,164,165,'ATAAAA','LELAAA','VVVVxx'
+1948,7552,0,0,8,8,48,948,1948,1948,1948,96,97,'YWAAAA','MELAAA','AAAAxx'
+2534,7553,0,2,4,14,34,534,534,2534,2534,68,69,'MTAAAA','NELAAA','HHHHxx'
+1150,7554,0,2,0,10,50,150,1150,1150,1150,100,101,'GSAAAA','OELAAA','OOOOxx'
+4931,7555,1,3,1,11,31,931,931,4931,4931,62,63,'RHAAAA','PELAAA','VVVVxx'
+2866,7556,0,2,6,6,66,866,866,2866,2866,132,133,'GGAAAA','QELAAA','AAAAxx'
+6172,7557,0,0,2,12,72,172,172,1172,6172,144,145,'KDAAAA','RELAAA','HHHHxx'
+4819,7558,1,3,9,19,19,819,819,4819,4819,38,39,'JDAAAA','SELAAA','OOOOxx'
+569,7559,1,1,9,9,69,569,569,569,569,138,139,'XVAAAA','TELAAA','VVVVxx'
+1146,7560,0,2,6,6,46,146,1146,1146,1146,92,93,'CSAAAA','UELAAA','AAAAxx'
+3062,7561,0,2,2,2,62,62,1062,3062,3062,124,125,'UNAAAA','VELAAA','HHHHxx'
+7690,7562,0,2,0,10,90,690,1690,2690,7690,180,181,'UJAAAA','WELAAA','OOOOxx'
+8611,7563,1,3,1,11,11,611,611,3611,8611,22,23,'FTAAAA','XELAAA','VVVVxx'
+1142,7564,0,2,2,2,42,142,1142,1142,1142,84,85,'YRAAAA','YELAAA','AAAAxx'
+1193,7565,1,1,3,13,93,193,1193,1193,1193,186,187,'XTAAAA','ZELAAA','HHHHxx'
+2507,7566,1,3,7,7,7,507,507,2507,2507,14,15,'LSAAAA','AFLAAA','OOOOxx'
+1043,7567,1,3,3,3,43,43,1043,1043,1043,86,87,'DOAAAA','BFLAAA','VVVVxx'
+7472,7568,0,0,2,12,72,472,1472,2472,7472,144,145,'KBAAAA','CFLAAA','AAAAxx'
+1817,7569,1,1,7,17,17,817,1817,1817,1817,34,35,'XRAAAA','DFLAAA','HHHHxx'
+3868,7570,0,0,8,8,68,868,1868,3868,3868,136,137,'USAAAA','EFLAAA','OOOOxx'
+9031,7571,1,3,1,11,31,31,1031,4031,9031,62,63,'JJAAAA','FFLAAA','VVVVxx'
+7254,7572,0,2,4,14,54,254,1254,2254,7254,108,109,'ATAAAA','GFLAAA','AAAAxx'
+5030,7573,0,2,0,10,30,30,1030,30,5030,60,61,'MLAAAA','HFLAAA','HHHHxx'
+6594,7574,0,2,4,14,94,594,594,1594,6594,188,189,'QTAAAA','IFLAAA','OOOOxx'
+6862,7575,0,2,2,2,62,862,862,1862,6862,124,125,'YDAAAA','JFLAAA','VVVVxx'
+1994,7576,0,2,4,14,94,994,1994,1994,1994,188,189,'SYAAAA','KFLAAA','AAAAxx'
+9017,7577,1,1,7,17,17,17,1017,4017,9017,34,35,'VIAAAA','LFLAAA','HHHHxx'
+5716,7578,0,0,6,16,16,716,1716,716,5716,32,33,'WLAAAA','MFLAAA','OOOOxx'
+1900,7579,0,0,0,0,0,900,1900,1900,1900,0,1,'CVAAAA','NFLAAA','VVVVxx'
+120,7580,0,0,0,0,20,120,120,120,120,40,41,'QEAAAA','OFLAAA','AAAAxx'
+9003,7581,1,3,3,3,3,3,1003,4003,9003,6,7,'HIAAAA','PFLAAA','HHHHxx'
+4178,7582,0,2,8,18,78,178,178,4178,4178,156,157,'SEAAAA','QFLAAA','OOOOxx'
+8777,7583,1,1,7,17,77,777,777,3777,8777,154,155,'PZAAAA','RFLAAA','VVVVxx'
+3653,7584,1,1,3,13,53,653,1653,3653,3653,106,107,'NKAAAA','SFLAAA','AAAAxx'
+1137,7585,1,1,7,17,37,137,1137,1137,1137,74,75,'TRAAAA','TFLAAA','HHHHxx'
+6362,7586,0,2,2,2,62,362,362,1362,6362,124,125,'SKAAAA','UFLAAA','OOOOxx'
+8537,7587,1,1,7,17,37,537,537,3537,8537,74,75,'JQAAAA','VFLAAA','VVVVxx'
+1590,7588,0,2,0,10,90,590,1590,1590,1590,180,181,'EJAAAA','WFLAAA','AAAAxx'
+374,7589,0,2,4,14,74,374,374,374,374,148,149,'KOAAAA','XFLAAA','HHHHxx'
+2597,7590,1,1,7,17,97,597,597,2597,2597,194,195,'XVAAAA','YFLAAA','OOOOxx'
+8071,7591,1,3,1,11,71,71,71,3071,8071,142,143,'LYAAAA','ZFLAAA','VVVVxx'
+9009,7592,1,1,9,9,9,9,1009,4009,9009,18,19,'NIAAAA','AGLAAA','AAAAxx'
+1978,7593,0,2,8,18,78,978,1978,1978,1978,156,157,'CYAAAA','BGLAAA','HHHHxx'
+1541,7594,1,1,1,1,41,541,1541,1541,1541,82,83,'HHAAAA','CGLAAA','OOOOxx'
+4998,7595,0,2,8,18,98,998,998,4998,4998,196,197,'GKAAAA','DGLAAA','VVVVxx'
+1649,7596,1,1,9,9,49,649,1649,1649,1649,98,99,'LLAAAA','EGLAAA','AAAAxx'
+5426,7597,0,2,6,6,26,426,1426,426,5426,52,53,'SAAAAA','FGLAAA','HHHHxx'
+1492,7598,0,0,2,12,92,492,1492,1492,1492,184,185,'KFAAAA','GGLAAA','OOOOxx'
+9622,7599,0,2,2,2,22,622,1622,4622,9622,44,45,'CGAAAA','HGLAAA','VVVVxx'
+701,7600,1,1,1,1,1,701,701,701,701,2,3,'ZAAAAA','IGLAAA','AAAAxx'
+2781,7601,1,1,1,1,81,781,781,2781,2781,162,163,'ZCAAAA','JGLAAA','HHHHxx'
+3982,7602,0,2,2,2,82,982,1982,3982,3982,164,165,'EXAAAA','KGLAAA','OOOOxx'
+7259,7603,1,3,9,19,59,259,1259,2259,7259,118,119,'FTAAAA','LGLAAA','VVVVxx'
+9868,7604,0,0,8,8,68,868,1868,4868,9868,136,137,'OPAAAA','MGLAAA','AAAAxx'
+564,7605,0,0,4,4,64,564,564,564,564,128,129,'SVAAAA','NGLAAA','HHHHxx'
+6315,7606,1,3,5,15,15,315,315,1315,6315,30,31,'XIAAAA','OGLAAA','OOOOxx'
+9092,7607,0,0,2,12,92,92,1092,4092,9092,184,185,'SLAAAA','PGLAAA','VVVVxx'
+8237,7608,1,1,7,17,37,237,237,3237,8237,74,75,'VEAAAA','QGLAAA','AAAAxx'
+1513,7609,1,1,3,13,13,513,1513,1513,1513,26,27,'FGAAAA','RGLAAA','HHHHxx'
+1922,7610,0,2,2,2,22,922,1922,1922,1922,44,45,'YVAAAA','SGLAAA','OOOOxx'
+5396,7611,0,0,6,16,96,396,1396,396,5396,192,193,'OZAAAA','TGLAAA','VVVVxx'
+2485,7612,1,1,5,5,85,485,485,2485,2485,170,171,'PRAAAA','UGLAAA','AAAAxx'
+5774,7613,0,2,4,14,74,774,1774,774,5774,148,149,'COAAAA','VGLAAA','HHHHxx'
+3983,7614,1,3,3,3,83,983,1983,3983,3983,166,167,'FXAAAA','WGLAAA','OOOOxx'
+221,7615,1,1,1,1,21,221,221,221,221,42,43,'NIAAAA','XGLAAA','VVVVxx'
+8662,7616,0,2,2,2,62,662,662,3662,8662,124,125,'EVAAAA','YGLAAA','AAAAxx'
+2456,7617,0,0,6,16,56,456,456,2456,2456,112,113,'MQAAAA','ZGLAAA','HHHHxx'
+9736,7618,0,0,6,16,36,736,1736,4736,9736,72,73,'MKAAAA','AHLAAA','OOOOxx'
+8936,7619,0,0,6,16,36,936,936,3936,8936,72,73,'SFAAAA','BHLAAA','VVVVxx'
+5395,7620,1,3,5,15,95,395,1395,395,5395,190,191,'NZAAAA','CHLAAA','AAAAxx'
+9523,7621,1,3,3,3,23,523,1523,4523,9523,46,47,'HCAAAA','DHLAAA','HHHHxx'
+6980,7622,0,0,0,0,80,980,980,1980,6980,160,161,'MIAAAA','EHLAAA','OOOOxx'
+2091,7623,1,3,1,11,91,91,91,2091,2091,182,183,'LCAAAA','FHLAAA','VVVVxx'
+6807,7624,1,3,7,7,7,807,807,1807,6807,14,15,'VBAAAA','GHLAAA','AAAAxx'
+8818,7625,0,2,8,18,18,818,818,3818,8818,36,37,'EBAAAA','HHLAAA','HHHHxx'
+5298,7626,0,2,8,18,98,298,1298,298,5298,196,197,'UVAAAA','IHLAAA','OOOOxx'
+1726,7627,0,2,6,6,26,726,1726,1726,1726,52,53,'KOAAAA','JHLAAA','VVVVxx'
+3878,7628,0,2,8,18,78,878,1878,3878,3878,156,157,'ETAAAA','KHLAAA','AAAAxx'
+8700,7629,0,0,0,0,0,700,700,3700,8700,0,1,'QWAAAA','LHLAAA','HHHHxx'
+5201,7630,1,1,1,1,1,201,1201,201,5201,2,3,'BSAAAA','MHLAAA','OOOOxx'
+3936,7631,0,0,6,16,36,936,1936,3936,3936,72,73,'KVAAAA','NHLAAA','VVVVxx'
+776,7632,0,0,6,16,76,776,776,776,776,152,153,'WDAAAA','OHLAAA','AAAAxx'
+5302,7633,0,2,2,2,2,302,1302,302,5302,4,5,'YVAAAA','PHLAAA','HHHHxx'
+3595,7634,1,3,5,15,95,595,1595,3595,3595,190,191,'HIAAAA','QHLAAA','OOOOxx'
+9061,7635,1,1,1,1,61,61,1061,4061,9061,122,123,'NKAAAA','RHLAAA','VVVVxx'
+6261,7636,1,1,1,1,61,261,261,1261,6261,122,123,'VGAAAA','SHLAAA','AAAAxx'
+8878,7637,0,2,8,18,78,878,878,3878,8878,156,157,'MDAAAA','THLAAA','HHHHxx'
+3312,7638,0,0,2,12,12,312,1312,3312,3312,24,25,'KXAAAA','UHLAAA','OOOOxx'
+9422,7639,0,2,2,2,22,422,1422,4422,9422,44,45,'KYAAAA','VHLAAA','VVVVxx'
+7321,7640,1,1,1,1,21,321,1321,2321,7321,42,43,'PVAAAA','WHLAAA','AAAAxx'
+3813,7641,1,1,3,13,13,813,1813,3813,3813,26,27,'RQAAAA','XHLAAA','HHHHxx'
+5848,7642,0,0,8,8,48,848,1848,848,5848,96,97,'YQAAAA','YHLAAA','OOOOxx'
+3535,7643,1,3,5,15,35,535,1535,3535,3535,70,71,'ZFAAAA','ZHLAAA','VVVVxx'
+1040,7644,0,0,0,0,40,40,1040,1040,1040,80,81,'AOAAAA','AILAAA','AAAAxx'
+8572,7645,0,0,2,12,72,572,572,3572,8572,144,145,'SRAAAA','BILAAA','HHHHxx'
+5435,7646,1,3,5,15,35,435,1435,435,5435,70,71,'BBAAAA','CILAAA','OOOOxx'
+8199,7647,1,3,9,19,99,199,199,3199,8199,198,199,'JDAAAA','DILAAA','VVVVxx'
+8775,7648,1,3,5,15,75,775,775,3775,8775,150,151,'NZAAAA','EILAAA','AAAAxx'
+7722,7649,0,2,2,2,22,722,1722,2722,7722,44,45,'ALAAAA','FILAAA','HHHHxx'
+3549,7650,1,1,9,9,49,549,1549,3549,3549,98,99,'NGAAAA','GILAAA','OOOOxx'
+2578,7651,0,2,8,18,78,578,578,2578,2578,156,157,'EVAAAA','HILAAA','VVVVxx'
+1695,7652,1,3,5,15,95,695,1695,1695,1695,190,191,'FNAAAA','IILAAA','AAAAxx'
+1902,7653,0,2,2,2,2,902,1902,1902,1902,4,5,'EVAAAA','JILAAA','HHHHxx'
+6058,7654,0,2,8,18,58,58,58,1058,6058,116,117,'AZAAAA','KILAAA','OOOOxx'
+6591,7655,1,3,1,11,91,591,591,1591,6591,182,183,'NTAAAA','LILAAA','VVVVxx'
+7962,7656,0,2,2,2,62,962,1962,2962,7962,124,125,'GUAAAA','MILAAA','AAAAxx'
+5612,7657,0,0,2,12,12,612,1612,612,5612,24,25,'WHAAAA','NILAAA','HHHHxx'
+3341,7658,1,1,1,1,41,341,1341,3341,3341,82,83,'NYAAAA','OILAAA','OOOOxx'
+5460,7659,0,0,0,0,60,460,1460,460,5460,120,121,'ACAAAA','PILAAA','VVVVxx'
+2368,7660,0,0,8,8,68,368,368,2368,2368,136,137,'CNAAAA','QILAAA','AAAAxx'
+8646,7661,0,2,6,6,46,646,646,3646,8646,92,93,'OUAAAA','RILAAA','HHHHxx'
+4987,7662,1,3,7,7,87,987,987,4987,4987,174,175,'VJAAAA','SILAAA','OOOOxx'
+9018,7663,0,2,8,18,18,18,1018,4018,9018,36,37,'WIAAAA','TILAAA','VVVVxx'
+8685,7664,1,1,5,5,85,685,685,3685,8685,170,171,'BWAAAA','UILAAA','AAAAxx'
+694,7665,0,2,4,14,94,694,694,694,694,188,189,'SAAAAA','VILAAA','HHHHxx'
+2012,7666,0,0,2,12,12,12,12,2012,2012,24,25,'KZAAAA','WILAAA','OOOOxx'
+2417,7667,1,1,7,17,17,417,417,2417,2417,34,35,'ZOAAAA','XILAAA','VVVVxx'
+4022,7668,0,2,2,2,22,22,22,4022,4022,44,45,'SYAAAA','YILAAA','AAAAxx'
+5935,7669,1,3,5,15,35,935,1935,935,5935,70,71,'HUAAAA','ZILAAA','HHHHxx'
+1656,7670,0,0,6,16,56,656,1656,1656,1656,112,113,'SLAAAA','AJLAAA','OOOOxx'
+6195,7671,1,3,5,15,95,195,195,1195,6195,190,191,'HEAAAA','BJLAAA','VVVVxx'
+3057,7672,1,1,7,17,57,57,1057,3057,3057,114,115,'PNAAAA','CJLAAA','AAAAxx'
+2852,7673,0,0,2,12,52,852,852,2852,2852,104,105,'SFAAAA','DJLAAA','HHHHxx'
+4634,7674,0,2,4,14,34,634,634,4634,4634,68,69,'GWAAAA','EJLAAA','OOOOxx'
+1689,7675,1,1,9,9,89,689,1689,1689,1689,178,179,'ZMAAAA','FJLAAA','VVVVxx'
+4102,7676,0,2,2,2,2,102,102,4102,4102,4,5,'UBAAAA','GJLAAA','AAAAxx'
+3287,7677,1,3,7,7,87,287,1287,3287,3287,174,175,'LWAAAA','HJLAAA','HHHHxx'
+5246,7678,0,2,6,6,46,246,1246,246,5246,92,93,'UTAAAA','IJLAAA','OOOOxx'
+7450,7679,0,2,0,10,50,450,1450,2450,7450,100,101,'OAAAAA','JJLAAA','VVVVxx'
+6548,7680,0,0,8,8,48,548,548,1548,6548,96,97,'WRAAAA','KJLAAA','AAAAxx'
+379,7681,1,3,9,19,79,379,379,379,379,158,159,'POAAAA','LJLAAA','HHHHxx'
+7435,7682,1,3,5,15,35,435,1435,2435,7435,70,71,'ZZAAAA','MJLAAA','OOOOxx'
+2041,7683,1,1,1,1,41,41,41,2041,2041,82,83,'NAAAAA','NJLAAA','VVVVxx'
+8462,7684,0,2,2,2,62,462,462,3462,8462,124,125,'MNAAAA','OJLAAA','AAAAxx'
+9076,7685,0,0,6,16,76,76,1076,4076,9076,152,153,'CLAAAA','PJLAAA','HHHHxx'
+761,7686,1,1,1,1,61,761,761,761,761,122,123,'HDAAAA','QJLAAA','OOOOxx'
+795,7687,1,3,5,15,95,795,795,795,795,190,191,'PEAAAA','RJLAAA','VVVVxx'
+1671,7688,1,3,1,11,71,671,1671,1671,1671,142,143,'HMAAAA','SJLAAA','AAAAxx'
+695,7689,1,3,5,15,95,695,695,695,695,190,191,'TAAAAA','TJLAAA','HHHHxx'
+4981,7690,1,1,1,1,81,981,981,4981,4981,162,163,'PJAAAA','UJLAAA','OOOOxx'
+1211,7691,1,3,1,11,11,211,1211,1211,1211,22,23,'PUAAAA','VJLAAA','VVVVxx'
+5914,7692,0,2,4,14,14,914,1914,914,5914,28,29,'MTAAAA','WJLAAA','AAAAxx'
+9356,7693,0,0,6,16,56,356,1356,4356,9356,112,113,'WVAAAA','XJLAAA','HHHHxx'
+1500,7694,0,0,0,0,0,500,1500,1500,1500,0,1,'SFAAAA','YJLAAA','OOOOxx'
+3353,7695,1,1,3,13,53,353,1353,3353,3353,106,107,'ZYAAAA','ZJLAAA','VVVVxx'
+1060,7696,0,0,0,0,60,60,1060,1060,1060,120,121,'UOAAAA','AKLAAA','AAAAxx'
+7910,7697,0,2,0,10,10,910,1910,2910,7910,20,21,'GSAAAA','BKLAAA','HHHHxx'
+1329,7698,1,1,9,9,29,329,1329,1329,1329,58,59,'DZAAAA','CKLAAA','OOOOxx'
+6011,7699,1,3,1,11,11,11,11,1011,6011,22,23,'FXAAAA','DKLAAA','VVVVxx'
+7146,7700,0,2,6,6,46,146,1146,2146,7146,92,93,'WOAAAA','EKLAAA','AAAAxx'
+4602,7701,0,2,2,2,2,602,602,4602,4602,4,5,'AVAAAA','FKLAAA','HHHHxx'
+6751,7702,1,3,1,11,51,751,751,1751,6751,102,103,'RZAAAA','GKLAAA','OOOOxx'
+2666,7703,0,2,6,6,66,666,666,2666,2666,132,133,'OYAAAA','HKLAAA','VVVVxx'
+2785,7704,1,1,5,5,85,785,785,2785,2785,170,171,'DDAAAA','IKLAAA','AAAAxx'
+5851,7705,1,3,1,11,51,851,1851,851,5851,102,103,'BRAAAA','JKLAAA','HHHHxx'
+2435,7706,1,3,5,15,35,435,435,2435,2435,70,71,'RPAAAA','KKLAAA','OOOOxx'
+7429,7707,1,1,9,9,29,429,1429,2429,7429,58,59,'TZAAAA','LKLAAA','VVVVxx'
+4241,7708,1,1,1,1,41,241,241,4241,4241,82,83,'DHAAAA','MKLAAA','AAAAxx'
+5691,7709,1,3,1,11,91,691,1691,691,5691,182,183,'XKAAAA','NKLAAA','HHHHxx'
+7731,7710,1,3,1,11,31,731,1731,2731,7731,62,63,'JLAAAA','OKLAAA','OOOOxx'
+249,7711,1,1,9,9,49,249,249,249,249,98,99,'PJAAAA','PKLAAA','VVVVxx'
+1731,7712,1,3,1,11,31,731,1731,1731,1731,62,63,'POAAAA','QKLAAA','AAAAxx'
+8716,7713,0,0,6,16,16,716,716,3716,8716,32,33,'GXAAAA','RKLAAA','HHHHxx'
+2670,7714,0,2,0,10,70,670,670,2670,2670,140,141,'SYAAAA','SKLAAA','OOOOxx'
+4654,7715,0,2,4,14,54,654,654,4654,4654,108,109,'AXAAAA','TKLAAA','VVVVxx'
+1027,7716,1,3,7,7,27,27,1027,1027,1027,54,55,'NNAAAA','UKLAAA','AAAAxx'
+1099,7717,1,3,9,19,99,99,1099,1099,1099,198,199,'HQAAAA','VKLAAA','HHHHxx'
+3617,7718,1,1,7,17,17,617,1617,3617,3617,34,35,'DJAAAA','WKLAAA','OOOOxx'
+4330,7719,0,2,0,10,30,330,330,4330,4330,60,61,'OKAAAA','XKLAAA','VVVVxx'
+9750,7720,0,2,0,10,50,750,1750,4750,9750,100,101,'ALAAAA','YKLAAA','AAAAxx'
+467,7721,1,3,7,7,67,467,467,467,467,134,135,'ZRAAAA','ZKLAAA','HHHHxx'
+8525,7722,1,1,5,5,25,525,525,3525,8525,50,51,'XPAAAA','ALLAAA','OOOOxx'
+5990,7723,0,2,0,10,90,990,1990,990,5990,180,181,'KWAAAA','BLLAAA','VVVVxx'
+4839,7724,1,3,9,19,39,839,839,4839,4839,78,79,'DEAAAA','CLLAAA','AAAAxx'
+9914,7725,0,2,4,14,14,914,1914,4914,9914,28,29,'IRAAAA','DLLAAA','HHHHxx'
+7047,7726,1,3,7,7,47,47,1047,2047,7047,94,95,'BLAAAA','ELLAAA','OOOOxx'
+874,7727,0,2,4,14,74,874,874,874,874,148,149,'QHAAAA','FLLAAA','VVVVxx'
+6061,7728,1,1,1,1,61,61,61,1061,6061,122,123,'DZAAAA','GLLAAA','AAAAxx'
+5491,7729,1,3,1,11,91,491,1491,491,5491,182,183,'FDAAAA','HLLAAA','HHHHxx'
+4344,7730,0,0,4,4,44,344,344,4344,4344,88,89,'CLAAAA','ILLAAA','OOOOxx'
+1281,7731,1,1,1,1,81,281,1281,1281,1281,162,163,'HXAAAA','JLLAAA','VVVVxx'
+3597,7732,1,1,7,17,97,597,1597,3597,3597,194,195,'JIAAAA','KLLAAA','AAAAxx'
+4992,7733,0,0,2,12,92,992,992,4992,4992,184,185,'AKAAAA','LLLAAA','HHHHxx'
+3849,7734,1,1,9,9,49,849,1849,3849,3849,98,99,'BSAAAA','MLLAAA','OOOOxx'
+2655,7735,1,3,5,15,55,655,655,2655,2655,110,111,'DYAAAA','NLLAAA','VVVVxx'
+147,7736,1,3,7,7,47,147,147,147,147,94,95,'RFAAAA','OLLAAA','AAAAxx'
+9110,7737,0,2,0,10,10,110,1110,4110,9110,20,21,'KMAAAA','PLLAAA','HHHHxx'
+1637,7738,1,1,7,17,37,637,1637,1637,1637,74,75,'ZKAAAA','QLLAAA','OOOOxx'
+9826,7739,0,2,6,6,26,826,1826,4826,9826,52,53,'YNAAAA','RLLAAA','VVVVxx'
+5957,7740,1,1,7,17,57,957,1957,957,5957,114,115,'DVAAAA','SLLAAA','AAAAxx'
+6932,7741,0,0,2,12,32,932,932,1932,6932,64,65,'QGAAAA','TLLAAA','HHHHxx'
+9684,7742,0,0,4,4,84,684,1684,4684,9684,168,169,'MIAAAA','ULLAAA','OOOOxx'
+4653,7743,1,1,3,13,53,653,653,4653,4653,106,107,'ZWAAAA','VLLAAA','VVVVxx'
+8065,7744,1,1,5,5,65,65,65,3065,8065,130,131,'FYAAAA','WLLAAA','AAAAxx'
+1202,7745,0,2,2,2,2,202,1202,1202,1202,4,5,'GUAAAA','XLLAAA','HHHHxx'
+9214,7746,0,2,4,14,14,214,1214,4214,9214,28,29,'KQAAAA','YLLAAA','OOOOxx'
+196,7747,0,0,6,16,96,196,196,196,196,192,193,'OHAAAA','ZLLAAA','VVVVxx'
+4486,7748,0,2,6,6,86,486,486,4486,4486,172,173,'OQAAAA','AMLAAA','AAAAxx'
+2585,7749,1,1,5,5,85,585,585,2585,2585,170,171,'LVAAAA','BMLAAA','HHHHxx'
+2464,7750,0,0,4,4,64,464,464,2464,2464,128,129,'UQAAAA','CMLAAA','OOOOxx'
+3467,7751,1,3,7,7,67,467,1467,3467,3467,134,135,'JDAAAA','DMLAAA','VVVVxx'
+9295,7752,1,3,5,15,95,295,1295,4295,9295,190,191,'NTAAAA','EMLAAA','AAAAxx'
+517,7753,1,1,7,17,17,517,517,517,517,34,35,'XTAAAA','FMLAAA','HHHHxx'
+6870,7754,0,2,0,10,70,870,870,1870,6870,140,141,'GEAAAA','GMLAAA','OOOOxx'
+5732,7755,0,0,2,12,32,732,1732,732,5732,64,65,'MMAAAA','HMLAAA','VVVVxx'
+9376,7756,0,0,6,16,76,376,1376,4376,9376,152,153,'QWAAAA','IMLAAA','AAAAxx'
+838,7757,0,2,8,18,38,838,838,838,838,76,77,'GGAAAA','JMLAAA','HHHHxx'
+9254,7758,0,2,4,14,54,254,1254,4254,9254,108,109,'YRAAAA','KMLAAA','OOOOxx'
+8879,7759,1,3,9,19,79,879,879,3879,8879,158,159,'NDAAAA','LMLAAA','VVVVxx'
+6281,7760,1,1,1,1,81,281,281,1281,6281,162,163,'PHAAAA','MMLAAA','AAAAxx'
+8216,7761,0,0,6,16,16,216,216,3216,8216,32,33,'AEAAAA','NMLAAA','HHHHxx'
+9213,7762,1,1,3,13,13,213,1213,4213,9213,26,27,'JQAAAA','OMLAAA','OOOOxx'
+7234,7763,0,2,4,14,34,234,1234,2234,7234,68,69,'GSAAAA','PMLAAA','VVVVxx'
+5692,7764,0,0,2,12,92,692,1692,692,5692,184,185,'YKAAAA','QMLAAA','AAAAxx'
+693,7765,1,1,3,13,93,693,693,693,693,186,187,'RAAAAA','RMLAAA','HHHHxx'
+9050,7766,0,2,0,10,50,50,1050,4050,9050,100,101,'CKAAAA','SMLAAA','OOOOxx'
+3623,7767,1,3,3,3,23,623,1623,3623,3623,46,47,'JJAAAA','TMLAAA','VVVVxx'
+2130,7768,0,2,0,10,30,130,130,2130,2130,60,61,'YDAAAA','UMLAAA','AAAAxx'
+2514,7769,0,2,4,14,14,514,514,2514,2514,28,29,'SSAAAA','VMLAAA','HHHHxx'
+1812,7770,0,0,2,12,12,812,1812,1812,1812,24,25,'SRAAAA','WMLAAA','OOOOxx'
+9037,7771,1,1,7,17,37,37,1037,4037,9037,74,75,'PJAAAA','XMLAAA','VVVVxx'
+5054,7772,0,2,4,14,54,54,1054,54,5054,108,109,'KMAAAA','YMLAAA','AAAAxx'
+7801,7773,1,1,1,1,1,801,1801,2801,7801,2,3,'BOAAAA','ZMLAAA','HHHHxx'
+7939,7774,1,3,9,19,39,939,1939,2939,7939,78,79,'JTAAAA','ANLAAA','OOOOxx'
+7374,7775,0,2,4,14,74,374,1374,2374,7374,148,149,'QXAAAA','BNLAAA','VVVVxx'
+1058,7776,0,2,8,18,58,58,1058,1058,1058,116,117,'SOAAAA','CNLAAA','AAAAxx'
+1972,7777,0,0,2,12,72,972,1972,1972,1972,144,145,'WXAAAA','DNLAAA','HHHHxx'
+3741,7778,1,1,1,1,41,741,1741,3741,3741,82,83,'XNAAAA','ENLAAA','OOOOxx'
+2227,7779,1,3,7,7,27,227,227,2227,2227,54,55,'RHAAAA','FNLAAA','VVVVxx'
+304,7780,0,0,4,4,4,304,304,304,304,8,9,'SLAAAA','GNLAAA','AAAAxx'
+4914,7781,0,2,4,14,14,914,914,4914,4914,28,29,'AHAAAA','HNLAAA','HHHHxx'
+2428,7782,0,0,8,8,28,428,428,2428,2428,56,57,'KPAAAA','INLAAA','OOOOxx'
+6660,7783,0,0,0,0,60,660,660,1660,6660,120,121,'EWAAAA','JNLAAA','VVVVxx'
+2676,7784,0,0,6,16,76,676,676,2676,2676,152,153,'YYAAAA','KNLAAA','AAAAxx'
+2454,7785,0,2,4,14,54,454,454,2454,2454,108,109,'KQAAAA','LNLAAA','HHHHxx'
+3798,7786,0,2,8,18,98,798,1798,3798,3798,196,197,'CQAAAA','MNLAAA','OOOOxx'
+1341,7787,1,1,1,1,41,341,1341,1341,1341,82,83,'PZAAAA','NNLAAA','VVVVxx'
+1611,7788,1,3,1,11,11,611,1611,1611,1611,22,23,'ZJAAAA','ONLAAA','AAAAxx'
+2681,7789,1,1,1,1,81,681,681,2681,2681,162,163,'DZAAAA','PNLAAA','HHHHxx'
+7292,7790,0,0,2,12,92,292,1292,2292,7292,184,185,'MUAAAA','QNLAAA','OOOOxx'
+7775,7791,1,3,5,15,75,775,1775,2775,7775,150,151,'BNAAAA','RNLAAA','VVVVxx'
+794,7792,0,2,4,14,94,794,794,794,794,188,189,'OEAAAA','SNLAAA','AAAAxx'
+8709,7793,1,1,9,9,9,709,709,3709,8709,18,19,'ZWAAAA','TNLAAA','HHHHxx'
+1901,7794,1,1,1,1,1,901,1901,1901,1901,2,3,'DVAAAA','UNLAAA','OOOOxx'
+3089,7795,1,1,9,9,89,89,1089,3089,3089,178,179,'VOAAAA','VNLAAA','VVVVxx'
+7797,7796,1,1,7,17,97,797,1797,2797,7797,194,195,'XNAAAA','WNLAAA','AAAAxx'
+6070,7797,0,2,0,10,70,70,70,1070,6070,140,141,'MZAAAA','XNLAAA','HHHHxx'
+2191,7798,1,3,1,11,91,191,191,2191,2191,182,183,'HGAAAA','YNLAAA','OOOOxx'
+3497,7799,1,1,7,17,97,497,1497,3497,3497,194,195,'NEAAAA','ZNLAAA','VVVVxx'
+8302,7800,0,2,2,2,2,302,302,3302,8302,4,5,'IHAAAA','AOLAAA','AAAAxx'
+4365,7801,1,1,5,5,65,365,365,4365,4365,130,131,'XLAAAA','BOLAAA','HHHHxx'
+3588,7802,0,0,8,8,88,588,1588,3588,3588,176,177,'AIAAAA','COLAAA','OOOOxx'
+8292,7803,0,0,2,12,92,292,292,3292,8292,184,185,'YGAAAA','DOLAAA','VVVVxx'
+4696,7804,0,0,6,16,96,696,696,4696,4696,192,193,'QYAAAA','EOLAAA','AAAAxx'
+5641,7805,1,1,1,1,41,641,1641,641,5641,82,83,'ZIAAAA','FOLAAA','HHHHxx'
+9386,7806,0,2,6,6,86,386,1386,4386,9386,172,173,'AXAAAA','GOLAAA','OOOOxx'
+507,7807,1,3,7,7,7,507,507,507,507,14,15,'NTAAAA','HOLAAA','VVVVxx'
+7201,7808,1,1,1,1,1,201,1201,2201,7201,2,3,'ZQAAAA','IOLAAA','AAAAxx'
+7785,7809,1,1,5,5,85,785,1785,2785,7785,170,171,'LNAAAA','JOLAAA','HHHHxx'
+463,7810,1,3,3,3,63,463,463,463,463,126,127,'VRAAAA','KOLAAA','OOOOxx'
+6656,7811,0,0,6,16,56,656,656,1656,6656,112,113,'AWAAAA','LOLAAA','VVVVxx'
+807,7812,1,3,7,7,7,807,807,807,807,14,15,'BFAAAA','MOLAAA','AAAAxx'
+7278,7813,0,2,8,18,78,278,1278,2278,7278,156,157,'YTAAAA','NOLAAA','HHHHxx'
+6237,7814,1,1,7,17,37,237,237,1237,6237,74,75,'XFAAAA','OOLAAA','OOOOxx'
+7671,7815,1,3,1,11,71,671,1671,2671,7671,142,143,'BJAAAA','POLAAA','VVVVxx'
+2235,7816,1,3,5,15,35,235,235,2235,2235,70,71,'ZHAAAA','QOLAAA','AAAAxx'
+4042,7817,0,2,2,2,42,42,42,4042,4042,84,85,'MZAAAA','ROLAAA','HHHHxx'
+5273,7818,1,1,3,13,73,273,1273,273,5273,146,147,'VUAAAA','SOLAAA','OOOOxx'
+7557,7819,1,1,7,17,57,557,1557,2557,7557,114,115,'REAAAA','TOLAAA','VVVVxx'
+4007,7820,1,3,7,7,7,7,7,4007,4007,14,15,'DYAAAA','UOLAAA','AAAAxx'
+1428,7821,0,0,8,8,28,428,1428,1428,1428,56,57,'YCAAAA','VOLAAA','HHHHxx'
+9739,7822,1,3,9,19,39,739,1739,4739,9739,78,79,'PKAAAA','WOLAAA','OOOOxx'
+7836,7823,0,0,6,16,36,836,1836,2836,7836,72,73,'KPAAAA','XOLAAA','VVVVxx'
+1777,7824,1,1,7,17,77,777,1777,1777,1777,154,155,'JQAAAA','YOLAAA','AAAAxx'
+5192,7825,0,0,2,12,92,192,1192,192,5192,184,185,'SRAAAA','ZOLAAA','HHHHxx'
+7236,7826,0,0,6,16,36,236,1236,2236,7236,72,73,'ISAAAA','APLAAA','OOOOxx'
+1623,7827,1,3,3,3,23,623,1623,1623,1623,46,47,'LKAAAA','BPLAAA','VVVVxx'
+8288,7828,0,0,8,8,88,288,288,3288,8288,176,177,'UGAAAA','CPLAAA','AAAAxx'
+2827,7829,1,3,7,7,27,827,827,2827,2827,54,55,'TEAAAA','DPLAAA','HHHHxx'
+458,7830,0,2,8,18,58,458,458,458,458,116,117,'QRAAAA','EPLAAA','OOOOxx'
+1818,7831,0,2,8,18,18,818,1818,1818,1818,36,37,'YRAAAA','FPLAAA','VVVVxx'
+6837,7832,1,1,7,17,37,837,837,1837,6837,74,75,'ZCAAAA','GPLAAA','AAAAxx'
+7825,7833,1,1,5,5,25,825,1825,2825,7825,50,51,'ZOAAAA','HPLAAA','HHHHxx'
+9146,7834,0,2,6,6,46,146,1146,4146,9146,92,93,'UNAAAA','IPLAAA','OOOOxx'
+8451,7835,1,3,1,11,51,451,451,3451,8451,102,103,'BNAAAA','JPLAAA','VVVVxx'
+6438,7836,0,2,8,18,38,438,438,1438,6438,76,77,'QNAAAA','KPLAAA','AAAAxx'
+4020,7837,0,0,0,0,20,20,20,4020,4020,40,41,'QYAAAA','LPLAAA','HHHHxx'
+4068,7838,0,0,8,8,68,68,68,4068,4068,136,137,'MAAAAA','MPLAAA','OOOOxx'
+2411,7839,1,3,1,11,11,411,411,2411,2411,22,23,'TOAAAA','NPLAAA','VVVVxx'
+6222,7840,0,2,2,2,22,222,222,1222,6222,44,45,'IFAAAA','OPLAAA','AAAAxx'
+3164,7841,0,0,4,4,64,164,1164,3164,3164,128,129,'SRAAAA','PPLAAA','HHHHxx'
+311,7842,1,3,1,11,11,311,311,311,311,22,23,'ZLAAAA','QPLAAA','OOOOxx'
+5683,7843,1,3,3,3,83,683,1683,683,5683,166,167,'PKAAAA','RPLAAA','VVVVxx'
+3993,7844,1,1,3,13,93,993,1993,3993,3993,186,187,'PXAAAA','SPLAAA','AAAAxx'
+9897,7845,1,1,7,17,97,897,1897,4897,9897,194,195,'RQAAAA','TPLAAA','HHHHxx'
+6609,7846,1,1,9,9,9,609,609,1609,6609,18,19,'FUAAAA','UPLAAA','OOOOxx'
+1362,7847,0,2,2,2,62,362,1362,1362,1362,124,125,'KAAAAA','VPLAAA','VVVVxx'
+3918,7848,0,2,8,18,18,918,1918,3918,3918,36,37,'SUAAAA','WPLAAA','AAAAxx'
+7376,7849,0,0,6,16,76,376,1376,2376,7376,152,153,'SXAAAA','XPLAAA','HHHHxx'
+6996,7850,0,0,6,16,96,996,996,1996,6996,192,193,'CJAAAA','YPLAAA','OOOOxx'
+9567,7851,1,3,7,7,67,567,1567,4567,9567,134,135,'ZDAAAA','ZPLAAA','VVVVxx'
+7525,7852,1,1,5,5,25,525,1525,2525,7525,50,51,'LDAAAA','AQLAAA','AAAAxx'
+9069,7853,1,1,9,9,69,69,1069,4069,9069,138,139,'VKAAAA','BQLAAA','HHHHxx'
+9999,7854,1,3,9,19,99,999,1999,4999,9999,198,199,'PUAAAA','CQLAAA','OOOOxx'
+9237,7855,1,1,7,17,37,237,1237,4237,9237,74,75,'HRAAAA','DQLAAA','VVVVxx'
+8441,7856,1,1,1,1,41,441,441,3441,8441,82,83,'RMAAAA','EQLAAA','AAAAxx'
+6769,7857,1,1,9,9,69,769,769,1769,6769,138,139,'JAAAAA','FQLAAA','HHHHxx'
+6073,7858,1,1,3,13,73,73,73,1073,6073,146,147,'PZAAAA','GQLAAA','OOOOxx'
+1091,7859,1,3,1,11,91,91,1091,1091,1091,182,183,'ZPAAAA','HQLAAA','VVVVxx'
+9886,7860,0,2,6,6,86,886,1886,4886,9886,172,173,'GQAAAA','IQLAAA','AAAAxx'
+3971,7861,1,3,1,11,71,971,1971,3971,3971,142,143,'TWAAAA','JQLAAA','HHHHxx'
+4621,7862,1,1,1,1,21,621,621,4621,4621,42,43,'TVAAAA','KQLAAA','OOOOxx'
+3120,7863,0,0,0,0,20,120,1120,3120,3120,40,41,'AQAAAA','LQLAAA','VVVVxx'
+9773,7864,1,1,3,13,73,773,1773,4773,9773,146,147,'XLAAAA','MQLAAA','AAAAxx'
+8712,7865,0,0,2,12,12,712,712,3712,8712,24,25,'CXAAAA','NQLAAA','HHHHxx'
+801,7866,1,1,1,1,1,801,801,801,801,2,3,'VEAAAA','OQLAAA','OOOOxx'
+9478,7867,0,2,8,18,78,478,1478,4478,9478,156,157,'OAAAAA','PQLAAA','VVVVxx'
+3466,7868,0,2,6,6,66,466,1466,3466,3466,132,133,'IDAAAA','QQLAAA','AAAAxx'
+6326,7869,0,2,6,6,26,326,326,1326,6326,52,53,'IJAAAA','RQLAAA','HHHHxx'
+1723,7870,1,3,3,3,23,723,1723,1723,1723,46,47,'HOAAAA','SQLAAA','OOOOxx'
+4978,7871,0,2,8,18,78,978,978,4978,4978,156,157,'MJAAAA','TQLAAA','VVVVxx'
+2311,7872,1,3,1,11,11,311,311,2311,2311,22,23,'XKAAAA','UQLAAA','AAAAxx'
+9532,7873,0,0,2,12,32,532,1532,4532,9532,64,65,'QCAAAA','VQLAAA','HHHHxx'
+3680,7874,0,0,0,0,80,680,1680,3680,3680,160,161,'OLAAAA','WQLAAA','OOOOxx'
+1244,7875,0,0,4,4,44,244,1244,1244,1244,88,89,'WVAAAA','XQLAAA','VVVVxx'
+3821,7876,1,1,1,1,21,821,1821,3821,3821,42,43,'ZQAAAA','YQLAAA','AAAAxx'
+9586,7877,0,2,6,6,86,586,1586,4586,9586,172,173,'SEAAAA','ZQLAAA','HHHHxx'
+3894,7878,0,2,4,14,94,894,1894,3894,3894,188,189,'UTAAAA','ARLAAA','OOOOxx'
+6169,7879,1,1,9,9,69,169,169,1169,6169,138,139,'HDAAAA','BRLAAA','VVVVxx'
+5919,7880,1,3,9,19,19,919,1919,919,5919,38,39,'RTAAAA','CRLAAA','AAAAxx'
+4187,7881,1,3,7,7,87,187,187,4187,4187,174,175,'BFAAAA','DRLAAA','HHHHxx'
+5477,7882,1,1,7,17,77,477,1477,477,5477,154,155,'RCAAAA','ERLAAA','OOOOxx'
+2806,7883,0,2,6,6,6,806,806,2806,2806,12,13,'YDAAAA','FRLAAA','VVVVxx'
+8158,7884,0,2,8,18,58,158,158,3158,8158,116,117,'UBAAAA','GRLAAA','AAAAxx'
+7130,7885,0,2,0,10,30,130,1130,2130,7130,60,61,'GOAAAA','HRLAAA','HHHHxx'
+7133,7886,1,1,3,13,33,133,1133,2133,7133,66,67,'JOAAAA','IRLAAA','OOOOxx'
+6033,7887,1,1,3,13,33,33,33,1033,6033,66,67,'BYAAAA','JRLAAA','VVVVxx'
+2415,7888,1,3,5,15,15,415,415,2415,2415,30,31,'XOAAAA','KRLAAA','AAAAxx'
+8091,7889,1,3,1,11,91,91,91,3091,8091,182,183,'FZAAAA','LRLAAA','HHHHxx'
+8347,7890,1,3,7,7,47,347,347,3347,8347,94,95,'BJAAAA','MRLAAA','OOOOxx'
+7879,7891,1,3,9,19,79,879,1879,2879,7879,158,159,'BRAAAA','NRLAAA','VVVVxx'
+9360,7892,0,0,0,0,60,360,1360,4360,9360,120,121,'AWAAAA','ORLAAA','AAAAxx'
+3369,7893,1,1,9,9,69,369,1369,3369,3369,138,139,'PZAAAA','PRLAAA','HHHHxx'
+8536,7894,0,0,6,16,36,536,536,3536,8536,72,73,'IQAAAA','QRLAAA','OOOOxx'
+8628,7895,0,0,8,8,28,628,628,3628,8628,56,57,'WTAAAA','RRLAAA','VVVVxx'
+1580,7896,0,0,0,0,80,580,1580,1580,1580,160,161,'UIAAAA','SRLAAA','AAAAxx'
+705,7897,1,1,5,5,5,705,705,705,705,10,11,'DBAAAA','TRLAAA','HHHHxx'
+4650,7898,0,2,0,10,50,650,650,4650,4650,100,101,'WWAAAA','URLAAA','OOOOxx'
+9165,7899,1,1,5,5,65,165,1165,4165,9165,130,131,'NOAAAA','VRLAAA','VVVVxx'
+4820,7900,0,0,0,0,20,820,820,4820,4820,40,41,'KDAAAA','WRLAAA','AAAAxx'
+3538,7901,0,2,8,18,38,538,1538,3538,3538,76,77,'CGAAAA','XRLAAA','HHHHxx'
+9947,7902,1,3,7,7,47,947,1947,4947,9947,94,95,'PSAAAA','YRLAAA','OOOOxx'
+4954,7903,0,2,4,14,54,954,954,4954,4954,108,109,'OIAAAA','ZRLAAA','VVVVxx'
+1104,7904,0,0,4,4,4,104,1104,1104,1104,8,9,'MQAAAA','ASLAAA','AAAAxx'
+8455,7905,1,3,5,15,55,455,455,3455,8455,110,111,'FNAAAA','BSLAAA','HHHHxx'
+8307,7906,1,3,7,7,7,307,307,3307,8307,14,15,'NHAAAA','CSLAAA','OOOOxx'
+9203,7907,1,3,3,3,3,203,1203,4203,9203,6,7,'ZPAAAA','DSLAAA','VVVVxx'
+7565,7908,1,1,5,5,65,565,1565,2565,7565,130,131,'ZEAAAA','ESLAAA','AAAAxx'
+7745,7909,1,1,5,5,45,745,1745,2745,7745,90,91,'XLAAAA','FSLAAA','HHHHxx'
+1787,7910,1,3,7,7,87,787,1787,1787,1787,174,175,'TQAAAA','GSLAAA','OOOOxx'
+4861,7911,1,1,1,1,61,861,861,4861,4861,122,123,'ZEAAAA','HSLAAA','VVVVxx'
+5183,7912,1,3,3,3,83,183,1183,183,5183,166,167,'JRAAAA','ISLAAA','AAAAxx'
+529,7913,1,1,9,9,29,529,529,529,529,58,59,'JUAAAA','JSLAAA','HHHHxx'
+2470,7914,0,2,0,10,70,470,470,2470,2470,140,141,'ARAAAA','KSLAAA','OOOOxx'
+1267,7915,1,3,7,7,67,267,1267,1267,1267,134,135,'TWAAAA','LSLAAA','VVVVxx'
+2059,7916,1,3,9,19,59,59,59,2059,2059,118,119,'FBAAAA','MSLAAA','AAAAxx'
+1862,7917,0,2,2,2,62,862,1862,1862,1862,124,125,'QTAAAA','NSLAAA','HHHHxx'
+7382,7918,0,2,2,2,82,382,1382,2382,7382,164,165,'YXAAAA','OSLAAA','OOOOxx'
+4796,7919,0,0,6,16,96,796,796,4796,4796,192,193,'MCAAAA','PSLAAA','VVVVxx'
+2331,7920,1,3,1,11,31,331,331,2331,2331,62,63,'RLAAAA','QSLAAA','AAAAxx'
+8870,7921,0,2,0,10,70,870,870,3870,8870,140,141,'EDAAAA','RSLAAA','HHHHxx'
+9581,7922,1,1,1,1,81,581,1581,4581,9581,162,163,'NEAAAA','SSLAAA','OOOOxx'
+9063,7923,1,3,3,3,63,63,1063,4063,9063,126,127,'PKAAAA','TSLAAA','VVVVxx'
+2192,7924,0,0,2,12,92,192,192,2192,2192,184,185,'IGAAAA','USLAAA','AAAAxx'
+6466,7925,0,2,6,6,66,466,466,1466,6466,132,133,'SOAAAA','VSLAAA','HHHHxx'
+7096,7926,0,0,6,16,96,96,1096,2096,7096,192,193,'YMAAAA','WSLAAA','OOOOxx'
+6257,7927,1,1,7,17,57,257,257,1257,6257,114,115,'RGAAAA','XSLAAA','VVVVxx'
+7009,7928,1,1,9,9,9,9,1009,2009,7009,18,19,'PJAAAA','YSLAAA','AAAAxx'
+8136,7929,0,0,6,16,36,136,136,3136,8136,72,73,'YAAAAA','ZSLAAA','HHHHxx'
+1854,7930,0,2,4,14,54,854,1854,1854,1854,108,109,'ITAAAA','ATLAAA','OOOOxx'
+3644,7931,0,0,4,4,44,644,1644,3644,3644,88,89,'EKAAAA','BTLAAA','VVVVxx'
+4437,7932,1,1,7,17,37,437,437,4437,4437,74,75,'ROAAAA','CTLAAA','AAAAxx'
+7209,7933,1,1,9,9,9,209,1209,2209,7209,18,19,'HRAAAA','DTLAAA','HHHHxx'
+1516,7934,0,0,6,16,16,516,1516,1516,1516,32,33,'IGAAAA','ETLAAA','OOOOxx'
+822,7935,0,2,2,2,22,822,822,822,822,44,45,'QFAAAA','FTLAAA','VVVVxx'
+1778,7936,0,2,8,18,78,778,1778,1778,1778,156,157,'KQAAAA','GTLAAA','AAAAxx'
+8161,7937,1,1,1,1,61,161,161,3161,8161,122,123,'XBAAAA','HTLAAA','HHHHxx'
+6030,7938,0,2,0,10,30,30,30,1030,6030,60,61,'YXAAAA','ITLAAA','OOOOxx'
+3515,7939,1,3,5,15,15,515,1515,3515,3515,30,31,'FFAAAA','JTLAAA','VVVVxx'
+1702,7940,0,2,2,2,2,702,1702,1702,1702,4,5,'MNAAAA','KTLAAA','AAAAxx'
+2671,7941,1,3,1,11,71,671,671,2671,2671,142,143,'TYAAAA','LTLAAA','HHHHxx'
+7623,7942,1,3,3,3,23,623,1623,2623,7623,46,47,'FHAAAA','MTLAAA','OOOOxx'
+9828,7943,0,0,8,8,28,828,1828,4828,9828,56,57,'AOAAAA','NTLAAA','VVVVxx'
+1888,7944,0,0,8,8,88,888,1888,1888,1888,176,177,'QUAAAA','OTLAAA','AAAAxx'
+4520,7945,0,0,0,0,20,520,520,4520,4520,40,41,'WRAAAA','PTLAAA','HHHHxx'
+3461,7946,1,1,1,1,61,461,1461,3461,3461,122,123,'DDAAAA','QTLAAA','OOOOxx'
+1488,7947,0,0,8,8,88,488,1488,1488,1488,176,177,'GFAAAA','RTLAAA','VVVVxx'
+7753,7948,1,1,3,13,53,753,1753,2753,7753,106,107,'FMAAAA','STLAAA','AAAAxx'
+5525,7949,1,1,5,5,25,525,1525,525,5525,50,51,'NEAAAA','TTLAAA','HHHHxx'
+5220,7950,0,0,0,0,20,220,1220,220,5220,40,41,'USAAAA','UTLAAA','OOOOxx'
+305,7951,1,1,5,5,5,305,305,305,305,10,11,'TLAAAA','VTLAAA','VVVVxx'
+7883,7952,1,3,3,3,83,883,1883,2883,7883,166,167,'FRAAAA','WTLAAA','AAAAxx'
+1222,7953,0,2,2,2,22,222,1222,1222,1222,44,45,'AVAAAA','XTLAAA','HHHHxx'
+8552,7954,0,0,2,12,52,552,552,3552,8552,104,105,'YQAAAA','YTLAAA','OOOOxx'
+6097,7955,1,1,7,17,97,97,97,1097,6097,194,195,'NAAAAA','ZTLAAA','VVVVxx'
+2298,7956,0,2,8,18,98,298,298,2298,2298,196,197,'KKAAAA','AULAAA','AAAAxx'
+956,7957,0,0,6,16,56,956,956,956,956,112,113,'UKAAAA','BULAAA','HHHHxx'
+9351,7958,1,3,1,11,51,351,1351,4351,9351,102,103,'RVAAAA','CULAAA','OOOOxx'
+6669,7959,1,1,9,9,69,669,669,1669,6669,138,139,'NWAAAA','DULAAA','VVVVxx'
+9383,7960,1,3,3,3,83,383,1383,4383,9383,166,167,'XWAAAA','EULAAA','AAAAxx'
+1607,7961,1,3,7,7,7,607,1607,1607,1607,14,15,'VJAAAA','FULAAA','HHHHxx'
+812,7962,0,0,2,12,12,812,812,812,812,24,25,'GFAAAA','GULAAA','OOOOxx'
+2109,7963,1,1,9,9,9,109,109,2109,2109,18,19,'DDAAAA','HULAAA','VVVVxx'
+207,7964,1,3,7,7,7,207,207,207,207,14,15,'ZHAAAA','IULAAA','AAAAxx'
+7124,7965,0,0,4,4,24,124,1124,2124,7124,48,49,'AOAAAA','JULAAA','HHHHxx'
+9333,7966,1,1,3,13,33,333,1333,4333,9333,66,67,'ZUAAAA','KULAAA','OOOOxx'
+3262,7967,0,2,2,2,62,262,1262,3262,3262,124,125,'MVAAAA','LULAAA','VVVVxx'
+1070,7968,0,2,0,10,70,70,1070,1070,1070,140,141,'EPAAAA','MULAAA','AAAAxx'
+7579,7969,1,3,9,19,79,579,1579,2579,7579,158,159,'NFAAAA','NULAAA','HHHHxx'
+9283,7970,1,3,3,3,83,283,1283,4283,9283,166,167,'BTAAAA','OULAAA','OOOOxx'
+4917,7971,1,1,7,17,17,917,917,4917,4917,34,35,'DHAAAA','PULAAA','VVVVxx'
+1328,7972,0,0,8,8,28,328,1328,1328,1328,56,57,'CZAAAA','QULAAA','AAAAxx'
+3042,7973,0,2,2,2,42,42,1042,3042,3042,84,85,'ANAAAA','RULAAA','HHHHxx'
+8352,7974,0,0,2,12,52,352,352,3352,8352,104,105,'GJAAAA','SULAAA','OOOOxx'
+2710,7975,0,2,0,10,10,710,710,2710,2710,20,21,'GAAAAA','TULAAA','VVVVxx'
+3330,7976,0,2,0,10,30,330,1330,3330,3330,60,61,'CYAAAA','UULAAA','AAAAxx'
+2822,7977,0,2,2,2,22,822,822,2822,2822,44,45,'OEAAAA','VULAAA','HHHHxx'
+5627,7978,1,3,7,7,27,627,1627,627,5627,54,55,'LIAAAA','WULAAA','OOOOxx'
+7848,7979,0,0,8,8,48,848,1848,2848,7848,96,97,'WPAAAA','XULAAA','VVVVxx'
+7384,7980,0,0,4,4,84,384,1384,2384,7384,168,169,'AYAAAA','YULAAA','AAAAxx'
+727,7981,1,3,7,7,27,727,727,727,727,54,55,'ZBAAAA','ZULAAA','HHHHxx'
+9926,7982,0,2,6,6,26,926,1926,4926,9926,52,53,'URAAAA','AVLAAA','OOOOxx'
+2647,7983,1,3,7,7,47,647,647,2647,2647,94,95,'VXAAAA','BVLAAA','VVVVxx'
+6416,7984,0,0,6,16,16,416,416,1416,6416,32,33,'UMAAAA','CVLAAA','AAAAxx'
+8751,7985,1,3,1,11,51,751,751,3751,8751,102,103,'PYAAAA','DVLAAA','HHHHxx'
+6515,7986,1,3,5,15,15,515,515,1515,6515,30,31,'PQAAAA','EVLAAA','OOOOxx'
+2472,7987,0,0,2,12,72,472,472,2472,2472,144,145,'CRAAAA','FVLAAA','VVVVxx'
+7205,7988,1,1,5,5,5,205,1205,2205,7205,10,11,'DRAAAA','GVLAAA','AAAAxx'
+9654,7989,0,2,4,14,54,654,1654,4654,9654,108,109,'IHAAAA','HVLAAA','HHHHxx'
+5646,7990,0,2,6,6,46,646,1646,646,5646,92,93,'EJAAAA','IVLAAA','OOOOxx'
+4217,7991,1,1,7,17,17,217,217,4217,4217,34,35,'FGAAAA','JVLAAA','VVVVxx'
+4484,7992,0,0,4,4,84,484,484,4484,4484,168,169,'MQAAAA','KVLAAA','AAAAxx'
+6654,7993,0,2,4,14,54,654,654,1654,6654,108,109,'YVAAAA','LVLAAA','HHHHxx'
+4876,7994,0,0,6,16,76,876,876,4876,4876,152,153,'OFAAAA','MVLAAA','OOOOxx'
+9690,7995,0,2,0,10,90,690,1690,4690,9690,180,181,'SIAAAA','NVLAAA','VVVVxx'
+2453,7996,1,1,3,13,53,453,453,2453,2453,106,107,'JQAAAA','OVLAAA','AAAAxx'
+829,7997,1,1,9,9,29,829,829,829,829,58,59,'XFAAAA','PVLAAA','HHHHxx'
+2547,7998,1,3,7,7,47,547,547,2547,2547,94,95,'ZTAAAA','QVLAAA','OOOOxx'
+9726,7999,0,2,6,6,26,726,1726,4726,9726,52,53,'CKAAAA','RVLAAA','VVVVxx'
+9267,8000,1,3,7,7,67,267,1267,4267,9267,134,135,'LSAAAA','SVLAAA','AAAAxx'
+7448,8001,0,0,8,8,48,448,1448,2448,7448,96,97,'MAAAAA','TVLAAA','HHHHxx'
+610,8002,0,2,0,10,10,610,610,610,610,20,21,'MXAAAA','UVLAAA','OOOOxx'
+2791,8003,1,3,1,11,91,791,791,2791,2791,182,183,'JDAAAA','VVLAAA','VVVVxx'
+3651,8004,1,3,1,11,51,651,1651,3651,3651,102,103,'LKAAAA','WVLAAA','AAAAxx'
+5206,8005,0,2,6,6,6,206,1206,206,5206,12,13,'GSAAAA','XVLAAA','HHHHxx'
+8774,8006,0,2,4,14,74,774,774,3774,8774,148,149,'MZAAAA','YVLAAA','OOOOxx'
+4753,8007,1,1,3,13,53,753,753,4753,4753,106,107,'VAAAAA','ZVLAAA','VVVVxx'
+4755,8008,1,3,5,15,55,755,755,4755,4755,110,111,'XAAAAA','AWLAAA','AAAAxx'
+686,8009,0,2,6,6,86,686,686,686,686,172,173,'KAAAAA','BWLAAA','HHHHxx'
+8281,8010,1,1,1,1,81,281,281,3281,8281,162,163,'NGAAAA','CWLAAA','OOOOxx'
+2058,8011,0,2,8,18,58,58,58,2058,2058,116,117,'EBAAAA','DWLAAA','VVVVxx'
+8900,8012,0,0,0,0,0,900,900,3900,8900,0,1,'IEAAAA','EWLAAA','AAAAxx'
+8588,8013,0,0,8,8,88,588,588,3588,8588,176,177,'ISAAAA','FWLAAA','HHHHxx'
+2904,8014,0,0,4,4,4,904,904,2904,2904,8,9,'SHAAAA','GWLAAA','OOOOxx'
+8917,8015,1,1,7,17,17,917,917,3917,8917,34,35,'ZEAAAA','HWLAAA','VVVVxx'
+9026,8016,0,2,6,6,26,26,1026,4026,9026,52,53,'EJAAAA','IWLAAA','AAAAxx'
+2416,8017,0,0,6,16,16,416,416,2416,2416,32,33,'YOAAAA','JWLAAA','HHHHxx'
+1053,8018,1,1,3,13,53,53,1053,1053,1053,106,107,'NOAAAA','KWLAAA','OOOOxx'
+7141,8019,1,1,1,1,41,141,1141,2141,7141,82,83,'ROAAAA','LWLAAA','VVVVxx'
+9771,8020,1,3,1,11,71,771,1771,4771,9771,142,143,'VLAAAA','MWLAAA','AAAAxx'
+2774,8021,0,2,4,14,74,774,774,2774,2774,148,149,'SCAAAA','NWLAAA','HHHHxx'
+3213,8022,1,1,3,13,13,213,1213,3213,3213,26,27,'PTAAAA','OWLAAA','OOOOxx'
+5694,8023,0,2,4,14,94,694,1694,694,5694,188,189,'ALAAAA','PWLAAA','VVVVxx'
+6631,8024,1,3,1,11,31,631,631,1631,6631,62,63,'BVAAAA','QWLAAA','AAAAxx'
+6638,8025,0,2,8,18,38,638,638,1638,6638,76,77,'IVAAAA','RWLAAA','HHHHxx'
+7407,8026,1,3,7,7,7,407,1407,2407,7407,14,15,'XYAAAA','SWLAAA','OOOOxx'
+8972,8027,0,0,2,12,72,972,972,3972,8972,144,145,'CHAAAA','TWLAAA','VVVVxx'
+2202,8028,0,2,2,2,2,202,202,2202,2202,4,5,'SGAAAA','UWLAAA','AAAAxx'
+6135,8029,1,3,5,15,35,135,135,1135,6135,70,71,'ZBAAAA','VWLAAA','HHHHxx'
+5043,8030,1,3,3,3,43,43,1043,43,5043,86,87,'ZLAAAA','WWLAAA','OOOOxx'
+5163,8031,1,3,3,3,63,163,1163,163,5163,126,127,'PQAAAA','XWLAAA','VVVVxx'
+1191,8032,1,3,1,11,91,191,1191,1191,1191,182,183,'VTAAAA','YWLAAA','AAAAxx'
+6576,8033,0,0,6,16,76,576,576,1576,6576,152,153,'YSAAAA','ZWLAAA','HHHHxx'
+3455,8034,1,3,5,15,55,455,1455,3455,3455,110,111,'XCAAAA','AXLAAA','OOOOxx'
+3688,8035,0,0,8,8,88,688,1688,3688,3688,176,177,'WLAAAA','BXLAAA','VVVVxx'
+4982,8036,0,2,2,2,82,982,982,4982,4982,164,165,'QJAAAA','CXLAAA','AAAAxx'
+4180,8037,0,0,0,0,80,180,180,4180,4180,160,161,'UEAAAA','DXLAAA','HHHHxx'
+4708,8038,0,0,8,8,8,708,708,4708,4708,16,17,'CZAAAA','EXLAAA','OOOOxx'
+1241,8039,1,1,1,1,41,241,1241,1241,1241,82,83,'TVAAAA','FXLAAA','VVVVxx'
+4921,8040,1,1,1,1,21,921,921,4921,4921,42,43,'HHAAAA','GXLAAA','AAAAxx'
+3197,8041,1,1,7,17,97,197,1197,3197,3197,194,195,'ZSAAAA','HXLAAA','HHHHxx'
+8225,8042,1,1,5,5,25,225,225,3225,8225,50,51,'JEAAAA','IXLAAA','OOOOxx'
+5913,8043,1,1,3,13,13,913,1913,913,5913,26,27,'LTAAAA','JXLAAA','VVVVxx'
+6387,8044,1,3,7,7,87,387,387,1387,6387,174,175,'RLAAAA','KXLAAA','AAAAxx'
+2706,8045,0,2,6,6,6,706,706,2706,2706,12,13,'CAAAAA','LXLAAA','HHHHxx'
+1461,8046,1,1,1,1,61,461,1461,1461,1461,122,123,'FEAAAA','MXLAAA','OOOOxx'
+7646,8047,0,2,6,6,46,646,1646,2646,7646,92,93,'CIAAAA','NXLAAA','VVVVxx'
+8066,8048,0,2,6,6,66,66,66,3066,8066,132,133,'GYAAAA','OXLAAA','AAAAxx'
+4171,8049,1,3,1,11,71,171,171,4171,4171,142,143,'LEAAAA','PXLAAA','HHHHxx'
+8008,8050,0,0,8,8,8,8,8,3008,8008,16,17,'AWAAAA','QXLAAA','OOOOxx'
+2088,8051,0,0,8,8,88,88,88,2088,2088,176,177,'ICAAAA','RXLAAA','VVVVxx'
+7907,8052,1,3,7,7,7,907,1907,2907,7907,14,15,'DSAAAA','SXLAAA','AAAAxx'
+2429,8053,1,1,9,9,29,429,429,2429,2429,58,59,'LPAAAA','TXLAAA','HHHHxx'
+9629,8054,1,1,9,9,29,629,1629,4629,9629,58,59,'JGAAAA','UXLAAA','OOOOxx'
+1470,8055,0,2,0,10,70,470,1470,1470,1470,140,141,'OEAAAA','VXLAAA','VVVVxx'
+4346,8056,0,2,6,6,46,346,346,4346,4346,92,93,'ELAAAA','WXLAAA','AAAAxx'
+7219,8057,1,3,9,19,19,219,1219,2219,7219,38,39,'RRAAAA','XXLAAA','HHHHxx'
+1185,8058,1,1,5,5,85,185,1185,1185,1185,170,171,'PTAAAA','YXLAAA','OOOOxx'
+8776,8059,0,0,6,16,76,776,776,3776,8776,152,153,'OZAAAA','ZXLAAA','VVVVxx'
+684,8060,0,0,4,4,84,684,684,684,684,168,169,'IAAAAA','AYLAAA','AAAAxx'
+2343,8061,1,3,3,3,43,343,343,2343,2343,86,87,'DMAAAA','BYLAAA','HHHHxx'
+4470,8062,0,2,0,10,70,470,470,4470,4470,140,141,'YPAAAA','CYLAAA','OOOOxx'
+5116,8063,0,0,6,16,16,116,1116,116,5116,32,33,'UOAAAA','DYLAAA','VVVVxx'
+1746,8064,0,2,6,6,46,746,1746,1746,1746,92,93,'EPAAAA','EYLAAA','AAAAxx'
+3216,8065,0,0,6,16,16,216,1216,3216,3216,32,33,'STAAAA','FYLAAA','HHHHxx'
+4594,8066,0,2,4,14,94,594,594,4594,4594,188,189,'SUAAAA','GYLAAA','OOOOxx'
+3013,8067,1,1,3,13,13,13,1013,3013,3013,26,27,'XLAAAA','HYLAAA','VVVVxx'
+2307,8068,1,3,7,7,7,307,307,2307,2307,14,15,'TKAAAA','IYLAAA','AAAAxx'
+7663,8069,1,3,3,3,63,663,1663,2663,7663,126,127,'TIAAAA','JYLAAA','HHHHxx'
+8504,8070,0,0,4,4,4,504,504,3504,8504,8,9,'CPAAAA','KYLAAA','OOOOxx'
+3683,8071,1,3,3,3,83,683,1683,3683,3683,166,167,'RLAAAA','LYLAAA','VVVVxx'
+144,8072,0,0,4,4,44,144,144,144,144,88,89,'OFAAAA','MYLAAA','AAAAxx'
+203,8073,1,3,3,3,3,203,203,203,203,6,7,'VHAAAA','NYLAAA','HHHHxx'
+5255,8074,1,3,5,15,55,255,1255,255,5255,110,111,'DUAAAA','OYLAAA','OOOOxx'
+4150,8075,0,2,0,10,50,150,150,4150,4150,100,101,'QDAAAA','PYLAAA','VVVVxx'
+5701,8076,1,1,1,1,1,701,1701,701,5701,2,3,'HLAAAA','QYLAAA','AAAAxx'
+7400,8077,0,0,0,0,0,400,1400,2400,7400,0,1,'QYAAAA','RYLAAA','HHHHxx'
+8203,8078,1,3,3,3,3,203,203,3203,8203,6,7,'NDAAAA','SYLAAA','OOOOxx'
+637,8079,1,1,7,17,37,637,637,637,637,74,75,'NYAAAA','TYLAAA','VVVVxx'
+2898,8080,0,2,8,18,98,898,898,2898,2898,196,197,'MHAAAA','UYLAAA','AAAAxx'
+1110,8081,0,2,0,10,10,110,1110,1110,1110,20,21,'SQAAAA','VYLAAA','HHHHxx'
+6255,8082,1,3,5,15,55,255,255,1255,6255,110,111,'PGAAAA','WYLAAA','OOOOxx'
+1071,8083,1,3,1,11,71,71,1071,1071,1071,142,143,'FPAAAA','XYLAAA','VVVVxx'
+541,8084,1,1,1,1,41,541,541,541,541,82,83,'VUAAAA','YYLAAA','AAAAxx'
+8077,8085,1,1,7,17,77,77,77,3077,8077,154,155,'RYAAAA','ZYLAAA','HHHHxx'
+6809,8086,1,1,9,9,9,809,809,1809,6809,18,19,'XBAAAA','AZLAAA','OOOOxx'
+4749,8087,1,1,9,9,49,749,749,4749,4749,98,99,'RAAAAA','BZLAAA','VVVVxx'
+2886,8088,0,2,6,6,86,886,886,2886,2886,172,173,'AHAAAA','CZLAAA','AAAAxx'
+5510,8089,0,2,0,10,10,510,1510,510,5510,20,21,'YDAAAA','DZLAAA','HHHHxx'
+713,8090,1,1,3,13,13,713,713,713,713,26,27,'LBAAAA','EZLAAA','OOOOxx'
+8388,8091,0,0,8,8,88,388,388,3388,8388,176,177,'QKAAAA','FZLAAA','VVVVxx'
+9524,8092,0,0,4,4,24,524,1524,4524,9524,48,49,'ICAAAA','GZLAAA','AAAAxx'
+9949,8093,1,1,9,9,49,949,1949,4949,9949,98,99,'RSAAAA','HZLAAA','HHHHxx'
+885,8094,1,1,5,5,85,885,885,885,885,170,171,'BIAAAA','IZLAAA','OOOOxx'
+8699,8095,1,3,9,19,99,699,699,3699,8699,198,199,'PWAAAA','JZLAAA','VVVVxx'
+2232,8096,0,0,2,12,32,232,232,2232,2232,64,65,'WHAAAA','KZLAAA','AAAAxx'
+5142,8097,0,2,2,2,42,142,1142,142,5142,84,85,'UPAAAA','LZLAAA','HHHHxx'
+8891,8098,1,3,1,11,91,891,891,3891,8891,182,183,'ZDAAAA','MZLAAA','OOOOxx'
+1881,8099,1,1,1,1,81,881,1881,1881,1881,162,163,'JUAAAA','NZLAAA','VVVVxx'
+3751,8100,1,3,1,11,51,751,1751,3751,3751,102,103,'HOAAAA','OZLAAA','AAAAxx'
+1896,8101,0,0,6,16,96,896,1896,1896,1896,192,193,'YUAAAA','PZLAAA','HHHHxx'
+8258,8102,0,2,8,18,58,258,258,3258,8258,116,117,'QFAAAA','QZLAAA','OOOOxx'
+3820,8103,0,0,0,0,20,820,1820,3820,3820,40,41,'YQAAAA','RZLAAA','VVVVxx'
+6617,8104,1,1,7,17,17,617,617,1617,6617,34,35,'NUAAAA','SZLAAA','AAAAxx'
+5100,8105,0,0,0,0,0,100,1100,100,5100,0,1,'EOAAAA','TZLAAA','HHHHxx'
+4277,8106,1,1,7,17,77,277,277,4277,4277,154,155,'NIAAAA','UZLAAA','OOOOxx'
+2498,8107,0,2,8,18,98,498,498,2498,2498,196,197,'CSAAAA','VZLAAA','VVVVxx'
+4343,8108,1,3,3,3,43,343,343,4343,4343,86,87,'BLAAAA','WZLAAA','AAAAxx'
+8319,8109,1,3,9,19,19,319,319,3319,8319,38,39,'ZHAAAA','XZLAAA','HHHHxx'
+4803,8110,1,3,3,3,3,803,803,4803,4803,6,7,'TCAAAA','YZLAAA','OOOOxx'
+3100,8111,0,0,0,0,0,100,1100,3100,3100,0,1,'GPAAAA','ZZLAAA','VVVVxx'
+428,8112,0,0,8,8,28,428,428,428,428,56,57,'MQAAAA','AAMAAA','AAAAxx'
+2811,8113,1,3,1,11,11,811,811,2811,2811,22,23,'DEAAAA','BAMAAA','HHHHxx'
+2989,8114,1,1,9,9,89,989,989,2989,2989,178,179,'ZKAAAA','CAMAAA','OOOOxx'
+1100,8115,0,0,0,0,0,100,1100,1100,1100,0,1,'IQAAAA','DAMAAA','VVVVxx'
+6586,8116,0,2,6,6,86,586,586,1586,6586,172,173,'ITAAAA','EAMAAA','AAAAxx'
+3124,8117,0,0,4,4,24,124,1124,3124,3124,48,49,'EQAAAA','FAMAAA','HHHHxx'
+1635,8118,1,3,5,15,35,635,1635,1635,1635,70,71,'XKAAAA','GAMAAA','OOOOxx'
+3888,8119,0,0,8,8,88,888,1888,3888,3888,176,177,'OTAAAA','HAMAAA','VVVVxx'
+8369,8120,1,1,9,9,69,369,369,3369,8369,138,139,'XJAAAA','IAMAAA','AAAAxx'
+3148,8121,0,0,8,8,48,148,1148,3148,3148,96,97,'CRAAAA','JAMAAA','HHHHxx'
+2842,8122,0,2,2,2,42,842,842,2842,2842,84,85,'IFAAAA','KAMAAA','OOOOxx'
+4965,8123,1,1,5,5,65,965,965,4965,4965,130,131,'ZIAAAA','LAMAAA','VVVVxx'
+3742,8124,0,2,2,2,42,742,1742,3742,3742,84,85,'YNAAAA','MAMAAA','AAAAxx'
+5196,8125,0,0,6,16,96,196,1196,196,5196,192,193,'WRAAAA','NAMAAA','HHHHxx'
+9105,8126,1,1,5,5,5,105,1105,4105,9105,10,11,'FMAAAA','OAMAAA','OOOOxx'
+6806,8127,0,2,6,6,6,806,806,1806,6806,12,13,'UBAAAA','PAMAAA','VVVVxx'
+5849,8128,1,1,9,9,49,849,1849,849,5849,98,99,'ZQAAAA','QAMAAA','AAAAxx'
+6504,8129,0,0,4,4,4,504,504,1504,6504,8,9,'EQAAAA','RAMAAA','HHHHxx'
+9841,8130,1,1,1,1,41,841,1841,4841,9841,82,83,'NOAAAA','SAMAAA','OOOOxx'
+457,8131,1,1,7,17,57,457,457,457,457,114,115,'PRAAAA','TAMAAA','VVVVxx'
+8856,8132,0,0,6,16,56,856,856,3856,8856,112,113,'QCAAAA','UAMAAA','AAAAxx'
+8043,8133,1,3,3,3,43,43,43,3043,8043,86,87,'JXAAAA','VAMAAA','HHHHxx'
+5933,8134,1,1,3,13,33,933,1933,933,5933,66,67,'FUAAAA','WAMAAA','OOOOxx'
+5725,8135,1,1,5,5,25,725,1725,725,5725,50,51,'FMAAAA','XAMAAA','VVVVxx'
+8607,8136,1,3,7,7,7,607,607,3607,8607,14,15,'BTAAAA','YAMAAA','AAAAxx'
+9280,8137,0,0,0,0,80,280,1280,4280,9280,160,161,'YSAAAA','ZAMAAA','HHHHxx'
+6017,8138,1,1,7,17,17,17,17,1017,6017,34,35,'LXAAAA','ABMAAA','OOOOxx'
+4946,8139,0,2,6,6,46,946,946,4946,4946,92,93,'GIAAAA','BBMAAA','VVVVxx'
+7373,8140,1,1,3,13,73,373,1373,2373,7373,146,147,'PXAAAA','CBMAAA','AAAAxx'
+8096,8141,0,0,6,16,96,96,96,3096,8096,192,193,'KZAAAA','DBMAAA','HHHHxx'
+3178,8142,0,2,8,18,78,178,1178,3178,3178,156,157,'GSAAAA','EBMAAA','OOOOxx'
+1849,8143,1,1,9,9,49,849,1849,1849,1849,98,99,'DTAAAA','FBMAAA','VVVVxx'
+8813,8144,1,1,3,13,13,813,813,3813,8813,26,27,'ZAAAAA','GBMAAA','AAAAxx'
+460,8145,0,0,0,0,60,460,460,460,460,120,121,'SRAAAA','HBMAAA','HHHHxx'
+7756,8146,0,0,6,16,56,756,1756,2756,7756,112,113,'IMAAAA','IBMAAA','OOOOxx'
+4425,8147,1,1,5,5,25,425,425,4425,4425,50,51,'FOAAAA','JBMAAA','VVVVxx'
+1602,8148,0,2,2,2,2,602,1602,1602,1602,4,5,'QJAAAA','KBMAAA','AAAAxx'
+5981,8149,1,1,1,1,81,981,1981,981,5981,162,163,'BWAAAA','LBMAAA','HHHHxx'
+8139,8150,1,3,9,19,39,139,139,3139,8139,78,79,'BBAAAA','MBMAAA','OOOOxx'
+754,8151,0,2,4,14,54,754,754,754,754,108,109,'ADAAAA','NBMAAA','VVVVxx'
+26,8152,0,2,6,6,26,26,26,26,26,52,53,'ABAAAA','OBMAAA','AAAAxx'
+106,8153,0,2,6,6,6,106,106,106,106,12,13,'CEAAAA','PBMAAA','HHHHxx'
+7465,8154,1,1,5,5,65,465,1465,2465,7465,130,131,'DBAAAA','QBMAAA','OOOOxx'
+1048,8155,0,0,8,8,48,48,1048,1048,1048,96,97,'IOAAAA','RBMAAA','VVVVxx'
+2303,8156,1,3,3,3,3,303,303,2303,2303,6,7,'PKAAAA','SBMAAA','AAAAxx'
+5794,8157,0,2,4,14,94,794,1794,794,5794,188,189,'WOAAAA','TBMAAA','HHHHxx'
+3321,8158,1,1,1,1,21,321,1321,3321,3321,42,43,'TXAAAA','UBMAAA','OOOOxx'
+6122,8159,0,2,2,2,22,122,122,1122,6122,44,45,'MBAAAA','VBMAAA','VVVVxx'
+6474,8160,0,2,4,14,74,474,474,1474,6474,148,149,'APAAAA','WBMAAA','AAAAxx'
+827,8161,1,3,7,7,27,827,827,827,827,54,55,'VFAAAA','XBMAAA','HHHHxx'
+6616,8162,0,0,6,16,16,616,616,1616,6616,32,33,'MUAAAA','YBMAAA','OOOOxx'
+2131,8163,1,3,1,11,31,131,131,2131,2131,62,63,'ZDAAAA','ZBMAAA','VVVVxx'
+5483,8164,1,3,3,3,83,483,1483,483,5483,166,167,'XCAAAA','ACMAAA','AAAAxx'
+606,8165,0,2,6,6,6,606,606,606,606,12,13,'IXAAAA','BCMAAA','HHHHxx'
+922,8166,0,2,2,2,22,922,922,922,922,44,45,'MJAAAA','CCMAAA','OOOOxx'
+8475,8167,1,3,5,15,75,475,475,3475,8475,150,151,'ZNAAAA','DCMAAA','VVVVxx'
+7645,8168,1,1,5,5,45,645,1645,2645,7645,90,91,'BIAAAA','ECMAAA','AAAAxx'
+5097,8169,1,1,7,17,97,97,1097,97,5097,194,195,'BOAAAA','FCMAAA','HHHHxx'
+5377,8170,1,1,7,17,77,377,1377,377,5377,154,155,'VYAAAA','GCMAAA','OOOOxx'
+6116,8171,0,0,6,16,16,116,116,1116,6116,32,33,'GBAAAA','HCMAAA','VVVVxx'
+8674,8172,0,2,4,14,74,674,674,3674,8674,148,149,'QVAAAA','ICMAAA','AAAAxx'
+8063,8173,1,3,3,3,63,63,63,3063,8063,126,127,'DYAAAA','JCMAAA','HHHHxx'
+5271,8174,1,3,1,11,71,271,1271,271,5271,142,143,'TUAAAA','KCMAAA','OOOOxx'
+1619,8175,1,3,9,19,19,619,1619,1619,1619,38,39,'HKAAAA','LCMAAA','VVVVxx'
+6419,8176,1,3,9,19,19,419,419,1419,6419,38,39,'XMAAAA','MCMAAA','AAAAxx'
+7651,8177,1,3,1,11,51,651,1651,2651,7651,102,103,'HIAAAA','NCMAAA','HHHHxx'
+2897,8178,1,1,7,17,97,897,897,2897,2897,194,195,'LHAAAA','OCMAAA','OOOOxx'
+8148,8179,0,0,8,8,48,148,148,3148,8148,96,97,'KBAAAA','PCMAAA','VVVVxx'
+7461,8180,1,1,1,1,61,461,1461,2461,7461,122,123,'ZAAAAA','QCMAAA','AAAAxx'
+9186,8181,0,2,6,6,86,186,1186,4186,9186,172,173,'IPAAAA','RCMAAA','HHHHxx'
+7127,8182,1,3,7,7,27,127,1127,2127,7127,54,55,'DOAAAA','SCMAAA','OOOOxx'
+8233,8183,1,1,3,13,33,233,233,3233,8233,66,67,'REAAAA','TCMAAA','VVVVxx'
+9651,8184,1,3,1,11,51,651,1651,4651,9651,102,103,'FHAAAA','UCMAAA','AAAAxx'
+6746,8185,0,2,6,6,46,746,746,1746,6746,92,93,'MZAAAA','VCMAAA','HHHHxx'
+7835,8186,1,3,5,15,35,835,1835,2835,7835,70,71,'JPAAAA','WCMAAA','OOOOxx'
+8815,8187,1,3,5,15,15,815,815,3815,8815,30,31,'BBAAAA','XCMAAA','VVVVxx'
+6398,8188,0,2,8,18,98,398,398,1398,6398,196,197,'CMAAAA','YCMAAA','AAAAxx'
+5344,8189,0,0,4,4,44,344,1344,344,5344,88,89,'OXAAAA','ZCMAAA','HHHHxx'
+8209,8190,1,1,9,9,9,209,209,3209,8209,18,19,'TDAAAA','ADMAAA','OOOOxx'
+8444,8191,0,0,4,4,44,444,444,3444,8444,88,89,'UMAAAA','BDMAAA','VVVVxx'
+5669,8192,1,1,9,9,69,669,1669,669,5669,138,139,'BKAAAA','CDMAAA','AAAAxx'
+2455,8193,1,3,5,15,55,455,455,2455,2455,110,111,'LQAAAA','DDMAAA','HHHHxx'
+6767,8194,1,3,7,7,67,767,767,1767,6767,134,135,'HAAAAA','EDMAAA','OOOOxx'
+135,8195,1,3,5,15,35,135,135,135,135,70,71,'FFAAAA','FDMAAA','VVVVxx'
+3503,8196,1,3,3,3,3,503,1503,3503,3503,6,7,'TEAAAA','GDMAAA','AAAAxx'
+6102,8197,0,2,2,2,2,102,102,1102,6102,4,5,'SAAAAA','HDMAAA','HHHHxx'
+7136,8198,0,0,6,16,36,136,1136,2136,7136,72,73,'MOAAAA','IDMAAA','OOOOxx'
+4933,8199,1,1,3,13,33,933,933,4933,4933,66,67,'THAAAA','JDMAAA','VVVVxx'
+8804,8200,0,0,4,4,4,804,804,3804,8804,8,9,'QAAAAA','KDMAAA','AAAAxx'
+3760,8201,0,0,0,0,60,760,1760,3760,3760,120,121,'QOAAAA','LDMAAA','HHHHxx'
+8603,8202,1,3,3,3,3,603,603,3603,8603,6,7,'XSAAAA','MDMAAA','OOOOxx'
+7411,8203,1,3,1,11,11,411,1411,2411,7411,22,23,'BZAAAA','NDMAAA','VVVVxx'
+834,8204,0,2,4,14,34,834,834,834,834,68,69,'CGAAAA','ODMAAA','AAAAxx'
+7385,8205,1,1,5,5,85,385,1385,2385,7385,170,171,'BYAAAA','PDMAAA','HHHHxx'
+3696,8206,0,0,6,16,96,696,1696,3696,3696,192,193,'EMAAAA','QDMAAA','OOOOxx'
+8720,8207,0,0,0,0,20,720,720,3720,8720,40,41,'KXAAAA','RDMAAA','VVVVxx'
+4539,8208,1,3,9,19,39,539,539,4539,4539,78,79,'PSAAAA','SDMAAA','AAAAxx'
+9837,8209,1,1,7,17,37,837,1837,4837,9837,74,75,'JOAAAA','TDMAAA','HHHHxx'
+8595,8210,1,3,5,15,95,595,595,3595,8595,190,191,'PSAAAA','UDMAAA','OOOOxx'
+3673,8211,1,1,3,13,73,673,1673,3673,3673,146,147,'HLAAAA','VDMAAA','VVVVxx'
+475,8212,1,3,5,15,75,475,475,475,475,150,151,'HSAAAA','WDMAAA','AAAAxx'
+2256,8213,0,0,6,16,56,256,256,2256,2256,112,113,'UIAAAA','XDMAAA','HHHHxx'
+6349,8214,1,1,9,9,49,349,349,1349,6349,98,99,'FKAAAA','YDMAAA','OOOOxx'
+9968,8215,0,0,8,8,68,968,1968,4968,9968,136,137,'KTAAAA','ZDMAAA','VVVVxx'
+7261,8216,1,1,1,1,61,261,1261,2261,7261,122,123,'HTAAAA','AEMAAA','AAAAxx'
+5799,8217,1,3,9,19,99,799,1799,799,5799,198,199,'BPAAAA','BEMAAA','HHHHxx'
+8159,8218,1,3,9,19,59,159,159,3159,8159,118,119,'VBAAAA','CEMAAA','OOOOxx'
+92,8219,0,0,2,12,92,92,92,92,92,184,185,'ODAAAA','DEMAAA','VVVVxx'
+5927,8220,1,3,7,7,27,927,1927,927,5927,54,55,'ZTAAAA','EEMAAA','AAAAxx'
+7925,8221,1,1,5,5,25,925,1925,2925,7925,50,51,'VSAAAA','FEMAAA','HHHHxx'
+5836,8222,0,0,6,16,36,836,1836,836,5836,72,73,'MQAAAA','GEMAAA','OOOOxx'
+7935,8223,1,3,5,15,35,935,1935,2935,7935,70,71,'FTAAAA','HEMAAA','VVVVxx'
+5505,8224,1,1,5,5,5,505,1505,505,5505,10,11,'TDAAAA','IEMAAA','AAAAxx'
+5882,8225,0,2,2,2,82,882,1882,882,5882,164,165,'GSAAAA','JEMAAA','HHHHxx'
+4411,8226,1,3,1,11,11,411,411,4411,4411,22,23,'RNAAAA','KEMAAA','OOOOxx'
+64,8227,0,0,4,4,64,64,64,64,64,128,129,'MCAAAA','LEMAAA','VVVVxx'
+2851,8228,1,3,1,11,51,851,851,2851,2851,102,103,'RFAAAA','MEMAAA','AAAAxx'
+1665,8229,1,1,5,5,65,665,1665,1665,1665,130,131,'BMAAAA','NEMAAA','HHHHxx'
+2895,8230,1,3,5,15,95,895,895,2895,2895,190,191,'JHAAAA','OEMAAA','OOOOxx'
+2210,8231,0,2,0,10,10,210,210,2210,2210,20,21,'AHAAAA','PEMAAA','VVVVxx'
+9873,8232,1,1,3,13,73,873,1873,4873,9873,146,147,'TPAAAA','QEMAAA','AAAAxx'
+5402,8233,0,2,2,2,2,402,1402,402,5402,4,5,'UZAAAA','REMAAA','HHHHxx'
+285,8234,1,1,5,5,85,285,285,285,285,170,171,'ZKAAAA','SEMAAA','OOOOxx'
+8545,8235,1,1,5,5,45,545,545,3545,8545,90,91,'RQAAAA','TEMAAA','VVVVxx'
+5328,8236,0,0,8,8,28,328,1328,328,5328,56,57,'YWAAAA','UEMAAA','AAAAxx'
+733,8237,1,1,3,13,33,733,733,733,733,66,67,'FCAAAA','VEMAAA','HHHHxx'
+7726,8238,0,2,6,6,26,726,1726,2726,7726,52,53,'ELAAAA','WEMAAA','OOOOxx'
+5418,8239,0,2,8,18,18,418,1418,418,5418,36,37,'KAAAAA','XEMAAA','VVVVxx'
+7761,8240,1,1,1,1,61,761,1761,2761,7761,122,123,'NMAAAA','YEMAAA','AAAAxx'
+9263,8241,1,3,3,3,63,263,1263,4263,9263,126,127,'HSAAAA','ZEMAAA','HHHHxx'
+5579,8242,1,3,9,19,79,579,1579,579,5579,158,159,'PGAAAA','AFMAAA','OOOOxx'
+5434,8243,0,2,4,14,34,434,1434,434,5434,68,69,'ABAAAA','BFMAAA','VVVVxx'
+5230,8244,0,2,0,10,30,230,1230,230,5230,60,61,'ETAAAA','CFMAAA','AAAAxx'
+9981,8245,1,1,1,1,81,981,1981,4981,9981,162,163,'XTAAAA','DFMAAA','HHHHxx'
+5830,8246,0,2,0,10,30,830,1830,830,5830,60,61,'GQAAAA','EFMAAA','OOOOxx'
+128,8247,0,0,8,8,28,128,128,128,128,56,57,'YEAAAA','FFMAAA','VVVVxx'
+2734,8248,0,2,4,14,34,734,734,2734,2734,68,69,'EBAAAA','GFMAAA','AAAAxx'
+4537,8249,1,1,7,17,37,537,537,4537,4537,74,75,'NSAAAA','HFMAAA','HHHHxx'
+3899,8250,1,3,9,19,99,899,1899,3899,3899,198,199,'ZTAAAA','IFMAAA','OOOOxx'
+1000,8251,0,0,0,0,0,0,1000,1000,1000,0,1,'MMAAAA','JFMAAA','VVVVxx'
+9896,8252,0,0,6,16,96,896,1896,4896,9896,192,193,'QQAAAA','KFMAAA','AAAAxx'
+3640,8253,0,0,0,0,40,640,1640,3640,3640,80,81,'AKAAAA','LFMAAA','HHHHxx'
+2568,8254,0,0,8,8,68,568,568,2568,2568,136,137,'UUAAAA','MFMAAA','OOOOxx'
+2026,8255,0,2,6,6,26,26,26,2026,2026,52,53,'YZAAAA','NFMAAA','VVVVxx'
+3955,8256,1,3,5,15,55,955,1955,3955,3955,110,111,'DWAAAA','OFMAAA','AAAAxx'
+7152,8257,0,0,2,12,52,152,1152,2152,7152,104,105,'CPAAAA','PFMAAA','HHHHxx'
+2402,8258,0,2,2,2,2,402,402,2402,2402,4,5,'KOAAAA','QFMAAA','OOOOxx'
+9522,8259,0,2,2,2,22,522,1522,4522,9522,44,45,'GCAAAA','RFMAAA','VVVVxx'
+4011,8260,1,3,1,11,11,11,11,4011,4011,22,23,'HYAAAA','SFMAAA','AAAAxx'
+3297,8261,1,1,7,17,97,297,1297,3297,3297,194,195,'VWAAAA','TFMAAA','HHHHxx'
+4915,8262,1,3,5,15,15,915,915,4915,4915,30,31,'BHAAAA','UFMAAA','OOOOxx'
+5397,8263,1,1,7,17,97,397,1397,397,5397,194,195,'PZAAAA','VFMAAA','VVVVxx'
+5454,8264,0,2,4,14,54,454,1454,454,5454,108,109,'UBAAAA','WFMAAA','AAAAxx'
+4568,8265,0,0,8,8,68,568,568,4568,4568,136,137,'STAAAA','XFMAAA','HHHHxx'
+5875,8266,1,3,5,15,75,875,1875,875,5875,150,151,'ZRAAAA','YFMAAA','OOOOxx'
+3642,8267,0,2,2,2,42,642,1642,3642,3642,84,85,'CKAAAA','ZFMAAA','VVVVxx'
+8506,8268,0,2,6,6,6,506,506,3506,8506,12,13,'EPAAAA','AGMAAA','AAAAxx'
+9621,8269,1,1,1,1,21,621,1621,4621,9621,42,43,'BGAAAA','BGMAAA','HHHHxx'
+7739,8270,1,3,9,19,39,739,1739,2739,7739,78,79,'RLAAAA','CGMAAA','OOOOxx'
+3987,8271,1,3,7,7,87,987,1987,3987,3987,174,175,'JXAAAA','DGMAAA','VVVVxx'
+2090,8272,0,2,0,10,90,90,90,2090,2090,180,181,'KCAAAA','EGMAAA','AAAAxx'
+3838,8273,0,2,8,18,38,838,1838,3838,3838,76,77,'QRAAAA','FGMAAA','HHHHxx'
+17,8274,1,1,7,17,17,17,17,17,17,34,35,'RAAAAA','GGMAAA','OOOOxx'
+3406,8275,0,2,6,6,6,406,1406,3406,3406,12,13,'ABAAAA','HGMAAA','VVVVxx'
+8312,8276,0,0,2,12,12,312,312,3312,8312,24,25,'SHAAAA','IGMAAA','AAAAxx'
+4034,8277,0,2,4,14,34,34,34,4034,4034,68,69,'EZAAAA','JGMAAA','HHHHxx'
+1535,8278,1,3,5,15,35,535,1535,1535,1535,70,71,'BHAAAA','KGMAAA','OOOOxx'
+7198,8279,0,2,8,18,98,198,1198,2198,7198,196,197,'WQAAAA','LGMAAA','VVVVxx'
+8885,8280,1,1,5,5,85,885,885,3885,8885,170,171,'TDAAAA','MGMAAA','AAAAxx'
+4081,8281,1,1,1,1,81,81,81,4081,4081,162,163,'ZAAAAA','NGMAAA','HHHHxx'
+980,8282,0,0,0,0,80,980,980,980,980,160,161,'SLAAAA','OGMAAA','OOOOxx'
+551,8283,1,3,1,11,51,551,551,551,551,102,103,'FVAAAA','PGMAAA','VVVVxx'
+7746,8284,0,2,6,6,46,746,1746,2746,7746,92,93,'YLAAAA','QGMAAA','AAAAxx'
+4756,8285,0,0,6,16,56,756,756,4756,4756,112,113,'YAAAAA','RGMAAA','HHHHxx'
+3655,8286,1,3,5,15,55,655,1655,3655,3655,110,111,'PKAAAA','SGMAAA','OOOOxx'
+7075,8287,1,3,5,15,75,75,1075,2075,7075,150,151,'DMAAAA','TGMAAA','VVVVxx'
+3950,8288,0,2,0,10,50,950,1950,3950,3950,100,101,'YVAAAA','UGMAAA','AAAAxx'
+2314,8289,0,2,4,14,14,314,314,2314,2314,28,29,'ALAAAA','VGMAAA','HHHHxx'
+8432,8290,0,0,2,12,32,432,432,3432,8432,64,65,'IMAAAA','WGMAAA','OOOOxx'
+62,8291,0,2,2,2,62,62,62,62,62,124,125,'KCAAAA','XGMAAA','VVVVxx'
+6920,8292,0,0,0,0,20,920,920,1920,6920,40,41,'EGAAAA','YGMAAA','AAAAxx'
+4077,8293,1,1,7,17,77,77,77,4077,4077,154,155,'VAAAAA','ZGMAAA','HHHHxx'
+9118,8294,0,2,8,18,18,118,1118,4118,9118,36,37,'SMAAAA','AHMAAA','OOOOxx'
+5375,8295,1,3,5,15,75,375,1375,375,5375,150,151,'TYAAAA','BHMAAA','VVVVxx'
+178,8296,0,2,8,18,78,178,178,178,178,156,157,'WGAAAA','CHMAAA','AAAAxx'
+1079,8297,1,3,9,19,79,79,1079,1079,1079,158,159,'NPAAAA','DHMAAA','HHHHxx'
+4279,8298,1,3,9,19,79,279,279,4279,4279,158,159,'PIAAAA','EHMAAA','OOOOxx'
+8436,8299,0,0,6,16,36,436,436,3436,8436,72,73,'MMAAAA','FHMAAA','VVVVxx'
+1931,8300,1,3,1,11,31,931,1931,1931,1931,62,63,'HWAAAA','GHMAAA','AAAAxx'
+2096,8301,0,0,6,16,96,96,96,2096,2096,192,193,'QCAAAA','HHMAAA','HHHHxx'
+1638,8302,0,2,8,18,38,638,1638,1638,1638,76,77,'ALAAAA','IHMAAA','OOOOxx'
+2788,8303,0,0,8,8,88,788,788,2788,2788,176,177,'GDAAAA','JHMAAA','VVVVxx'
+4751,8304,1,3,1,11,51,751,751,4751,4751,102,103,'TAAAAA','KHMAAA','AAAAxx'
+8824,8305,0,0,4,4,24,824,824,3824,8824,48,49,'KBAAAA','LHMAAA','HHHHxx'
+3098,8306,0,2,8,18,98,98,1098,3098,3098,196,197,'EPAAAA','MHMAAA','OOOOxx'
+4497,8307,1,1,7,17,97,497,497,4497,4497,194,195,'ZQAAAA','NHMAAA','VVVVxx'
+5223,8308,1,3,3,3,23,223,1223,223,5223,46,47,'XSAAAA','OHMAAA','AAAAxx'
+9212,8309,0,0,2,12,12,212,1212,4212,9212,24,25,'IQAAAA','PHMAAA','HHHHxx'
+4265,8310,1,1,5,5,65,265,265,4265,4265,130,131,'BIAAAA','QHMAAA','OOOOxx'
+6898,8311,0,2,8,18,98,898,898,1898,6898,196,197,'IFAAAA','RHMAAA','VVVVxx'
+8808,8312,0,0,8,8,8,808,808,3808,8808,16,17,'UAAAAA','SHMAAA','AAAAxx'
+5629,8313,1,1,9,9,29,629,1629,629,5629,58,59,'NIAAAA','THMAAA','HHHHxx'
+3779,8314,1,3,9,19,79,779,1779,3779,3779,158,159,'JPAAAA','UHMAAA','OOOOxx'
+4972,8315,0,0,2,12,72,972,972,4972,4972,144,145,'GJAAAA','VHMAAA','VVVVxx'
+4511,8316,1,3,1,11,11,511,511,4511,4511,22,23,'NRAAAA','WHMAAA','AAAAxx'
+6761,8317,1,1,1,1,61,761,761,1761,6761,122,123,'BAAAAA','XHMAAA','HHHHxx'
+2335,8318,1,3,5,15,35,335,335,2335,2335,70,71,'VLAAAA','YHMAAA','OOOOxx'
+732,8319,0,0,2,12,32,732,732,732,732,64,65,'ECAAAA','ZHMAAA','VVVVxx'
+4757,8320,1,1,7,17,57,757,757,4757,4757,114,115,'ZAAAAA','AIMAAA','AAAAxx'
+6624,8321,0,0,4,4,24,624,624,1624,6624,48,49,'UUAAAA','BIMAAA','HHHHxx'
+5869,8322,1,1,9,9,69,869,1869,869,5869,138,139,'TRAAAA','CIMAAA','OOOOxx'
+5842,8323,0,2,2,2,42,842,1842,842,5842,84,85,'SQAAAA','DIMAAA','VVVVxx'
+5735,8324,1,3,5,15,35,735,1735,735,5735,70,71,'PMAAAA','EIMAAA','AAAAxx'
+8276,8325,0,0,6,16,76,276,276,3276,8276,152,153,'IGAAAA','FIMAAA','HHHHxx'
+7227,8326,1,3,7,7,27,227,1227,2227,7227,54,55,'ZRAAAA','GIMAAA','OOOOxx'
+4923,8327,1,3,3,3,23,923,923,4923,4923,46,47,'JHAAAA','HIMAAA','VVVVxx'
+9135,8328,1,3,5,15,35,135,1135,4135,9135,70,71,'JNAAAA','IIMAAA','AAAAxx'
+5813,8329,1,1,3,13,13,813,1813,813,5813,26,27,'PPAAAA','JIMAAA','HHHHxx'
+9697,8330,1,1,7,17,97,697,1697,4697,9697,194,195,'ZIAAAA','KIMAAA','OOOOxx'
+3222,8331,0,2,2,2,22,222,1222,3222,3222,44,45,'YTAAAA','LIMAAA','VVVVxx'
+2394,8332,0,2,4,14,94,394,394,2394,2394,188,189,'COAAAA','MIMAAA','AAAAxx'
+5784,8333,0,0,4,4,84,784,1784,784,5784,168,169,'MOAAAA','NIMAAA','HHHHxx'
+3652,8334,0,0,2,12,52,652,1652,3652,3652,104,105,'MKAAAA','OIMAAA','OOOOxx'
+8175,8335,1,3,5,15,75,175,175,3175,8175,150,151,'LCAAAA','PIMAAA','VVVVxx'
+7568,8336,0,0,8,8,68,568,1568,2568,7568,136,137,'CFAAAA','QIMAAA','AAAAxx'
+6645,8337,1,1,5,5,45,645,645,1645,6645,90,91,'PVAAAA','RIMAAA','HHHHxx'
+8176,8338,0,0,6,16,76,176,176,3176,8176,152,153,'MCAAAA','SIMAAA','OOOOxx'
+530,8339,0,2,0,10,30,530,530,530,530,60,61,'KUAAAA','TIMAAA','VVVVxx'
+5439,8340,1,3,9,19,39,439,1439,439,5439,78,79,'FBAAAA','UIMAAA','AAAAxx'
+61,8341,1,1,1,1,61,61,61,61,61,122,123,'JCAAAA','VIMAAA','HHHHxx'
+3951,8342,1,3,1,11,51,951,1951,3951,3951,102,103,'ZVAAAA','WIMAAA','OOOOxx'
+5283,8343,1,3,3,3,83,283,1283,283,5283,166,167,'FVAAAA','XIMAAA','VVVVxx'
+7226,8344,0,2,6,6,26,226,1226,2226,7226,52,53,'YRAAAA','YIMAAA','AAAAxx'
+1954,8345,0,2,4,14,54,954,1954,1954,1954,108,109,'EXAAAA','ZIMAAA','HHHHxx'
+334,8346,0,2,4,14,34,334,334,334,334,68,69,'WMAAAA','AJMAAA','OOOOxx'
+3921,8347,1,1,1,1,21,921,1921,3921,3921,42,43,'VUAAAA','BJMAAA','VVVVxx'
+6276,8348,0,0,6,16,76,276,276,1276,6276,152,153,'KHAAAA','CJMAAA','AAAAxx'
+3378,8349,0,2,8,18,78,378,1378,3378,3378,156,157,'YZAAAA','DJMAAA','HHHHxx'
+5236,8350,0,0,6,16,36,236,1236,236,5236,72,73,'KTAAAA','EJMAAA','OOOOxx'
+7781,8351,1,1,1,1,81,781,1781,2781,7781,162,163,'HNAAAA','FJMAAA','VVVVxx'
+8601,8352,1,1,1,1,1,601,601,3601,8601,2,3,'VSAAAA','GJMAAA','AAAAxx'
+1473,8353,1,1,3,13,73,473,1473,1473,1473,146,147,'REAAAA','HJMAAA','HHHHxx'
+3246,8354,0,2,6,6,46,246,1246,3246,3246,92,93,'WUAAAA','IJMAAA','OOOOxx'
+3601,8355,1,1,1,1,1,601,1601,3601,3601,2,3,'NIAAAA','JJMAAA','VVVVxx'
+6861,8356,1,1,1,1,61,861,861,1861,6861,122,123,'XDAAAA','KJMAAA','AAAAxx'
+9032,8357,0,0,2,12,32,32,1032,4032,9032,64,65,'KJAAAA','LJMAAA','HHHHxx'
+216,8358,0,0,6,16,16,216,216,216,216,32,33,'IIAAAA','MJMAAA','OOOOxx'
+3824,8359,0,0,4,4,24,824,1824,3824,3824,48,49,'CRAAAA','NJMAAA','VVVVxx'
+8486,8360,0,2,6,6,86,486,486,3486,8486,172,173,'KOAAAA','OJMAAA','AAAAxx'
+276,8361,0,0,6,16,76,276,276,276,276,152,153,'QKAAAA','PJMAAA','HHHHxx'
+1838,8362,0,2,8,18,38,838,1838,1838,1838,76,77,'SSAAAA','QJMAAA','OOOOxx'
+6175,8363,1,3,5,15,75,175,175,1175,6175,150,151,'NDAAAA','RJMAAA','VVVVxx'
+3719,8364,1,3,9,19,19,719,1719,3719,3719,38,39,'BNAAAA','SJMAAA','AAAAxx'
+6958,8365,0,2,8,18,58,958,958,1958,6958,116,117,'QHAAAA','TJMAAA','HHHHxx'
+6822,8366,0,2,2,2,22,822,822,1822,6822,44,45,'KCAAAA','UJMAAA','OOOOxx'
+3318,8367,0,2,8,18,18,318,1318,3318,3318,36,37,'QXAAAA','VJMAAA','VVVVxx'
+7222,8368,0,2,2,2,22,222,1222,2222,7222,44,45,'URAAAA','WJMAAA','AAAAxx'
+85,8369,1,1,5,5,85,85,85,85,85,170,171,'HDAAAA','XJMAAA','HHHHxx'
+5158,8370,0,2,8,18,58,158,1158,158,5158,116,117,'KQAAAA','YJMAAA','OOOOxx'
+6360,8371,0,0,0,0,60,360,360,1360,6360,120,121,'QKAAAA','ZJMAAA','VVVVxx'
+2599,8372,1,3,9,19,99,599,599,2599,2599,198,199,'ZVAAAA','AKMAAA','AAAAxx'
+4002,8373,0,2,2,2,2,2,2,4002,4002,4,5,'YXAAAA','BKMAAA','HHHHxx'
+6597,8374,1,1,7,17,97,597,597,1597,6597,194,195,'TTAAAA','CKMAAA','OOOOxx'
+5762,8375,0,2,2,2,62,762,1762,762,5762,124,125,'QNAAAA','DKMAAA','VVVVxx'
+8383,8376,1,3,3,3,83,383,383,3383,8383,166,167,'LKAAAA','EKMAAA','AAAAxx'
+4686,8377,0,2,6,6,86,686,686,4686,4686,172,173,'GYAAAA','FKMAAA','HHHHxx'
+5972,8378,0,0,2,12,72,972,1972,972,5972,144,145,'SVAAAA','GKMAAA','OOOOxx'
+1432,8379,0,0,2,12,32,432,1432,1432,1432,64,65,'CDAAAA','HKMAAA','VVVVxx'
+1601,8380,1,1,1,1,1,601,1601,1601,1601,2,3,'PJAAAA','IKMAAA','AAAAxx'
+3012,8381,0,0,2,12,12,12,1012,3012,3012,24,25,'WLAAAA','JKMAAA','HHHHxx'
+9345,8382,1,1,5,5,45,345,1345,4345,9345,90,91,'LVAAAA','KKMAAA','OOOOxx'
+8869,8383,1,1,9,9,69,869,869,3869,8869,138,139,'DDAAAA','LKMAAA','VVVVxx'
+6612,8384,0,0,2,12,12,612,612,1612,6612,24,25,'IUAAAA','MKMAAA','AAAAxx'
+262,8385,0,2,2,2,62,262,262,262,262,124,125,'CKAAAA','NKMAAA','HHHHxx'
+300,8386,0,0,0,0,0,300,300,300,300,0,1,'OLAAAA','OKMAAA','OOOOxx'
+3045,8387,1,1,5,5,45,45,1045,3045,3045,90,91,'DNAAAA','PKMAAA','VVVVxx'
+7252,8388,0,0,2,12,52,252,1252,2252,7252,104,105,'YSAAAA','QKMAAA','AAAAxx'
+9099,8389,1,3,9,19,99,99,1099,4099,9099,198,199,'ZLAAAA','RKMAAA','HHHHxx'
+9006,8390,0,2,6,6,6,6,1006,4006,9006,12,13,'KIAAAA','SKMAAA','OOOOxx'
+3078,8391,0,2,8,18,78,78,1078,3078,3078,156,157,'KOAAAA','TKMAAA','VVVVxx'
+5159,8392,1,3,9,19,59,159,1159,159,5159,118,119,'LQAAAA','UKMAAA','AAAAxx'
+9329,8393,1,1,9,9,29,329,1329,4329,9329,58,59,'VUAAAA','VKMAAA','HHHHxx'
+1393,8394,1,1,3,13,93,393,1393,1393,1393,186,187,'PBAAAA','WKMAAA','OOOOxx'
+5894,8395,0,2,4,14,94,894,1894,894,5894,188,189,'SSAAAA','XKMAAA','VVVVxx'
+11,8396,1,3,1,11,11,11,11,11,11,22,23,'LAAAAA','YKMAAA','AAAAxx'
+5606,8397,0,2,6,6,6,606,1606,606,5606,12,13,'QHAAAA','ZKMAAA','HHHHxx'
+5541,8398,1,1,1,1,41,541,1541,541,5541,82,83,'DFAAAA','ALMAAA','OOOOxx'
+2689,8399,1,1,9,9,89,689,689,2689,2689,178,179,'LZAAAA','BLMAAA','VVVVxx'
+1023,8400,1,3,3,3,23,23,1023,1023,1023,46,47,'JNAAAA','CLMAAA','AAAAxx'
+8134,8401,0,2,4,14,34,134,134,3134,8134,68,69,'WAAAAA','DLMAAA','HHHHxx'
+5923,8402,1,3,3,3,23,923,1923,923,5923,46,47,'VTAAAA','ELMAAA','OOOOxx'
+6056,8403,0,0,6,16,56,56,56,1056,6056,112,113,'YYAAAA','FLMAAA','VVVVxx'
+653,8404,1,1,3,13,53,653,653,653,653,106,107,'DZAAAA','GLMAAA','AAAAxx'
+367,8405,1,3,7,7,67,367,367,367,367,134,135,'DOAAAA','HLMAAA','HHHHxx'
+1828,8406,0,0,8,8,28,828,1828,1828,1828,56,57,'ISAAAA','ILMAAA','OOOOxx'
+6506,8407,0,2,6,6,6,506,506,1506,6506,12,13,'GQAAAA','JLMAAA','VVVVxx'
+5772,8408,0,0,2,12,72,772,1772,772,5772,144,145,'AOAAAA','KLMAAA','AAAAxx'
+8052,8409,0,0,2,12,52,52,52,3052,8052,104,105,'SXAAAA','LLMAAA','HHHHxx'
+2633,8410,1,1,3,13,33,633,633,2633,2633,66,67,'HXAAAA','MLMAAA','OOOOxx'
+4878,8411,0,2,8,18,78,878,878,4878,4878,156,157,'QFAAAA','NLMAAA','VVVVxx'
+5621,8412,1,1,1,1,21,621,1621,621,5621,42,43,'FIAAAA','OLMAAA','AAAAxx'
+41,8413,1,1,1,1,41,41,41,41,41,82,83,'PBAAAA','PLMAAA','HHHHxx'
+4613,8414,1,1,3,13,13,613,613,4613,4613,26,27,'LVAAAA','QLMAAA','OOOOxx'
+9389,8415,1,1,9,9,89,389,1389,4389,9389,178,179,'DXAAAA','RLMAAA','VVVVxx'
+9414,8416,0,2,4,14,14,414,1414,4414,9414,28,29,'CYAAAA','SLMAAA','AAAAxx'
+3583,8417,1,3,3,3,83,583,1583,3583,3583,166,167,'VHAAAA','TLMAAA','HHHHxx'
+3454,8418,0,2,4,14,54,454,1454,3454,3454,108,109,'WCAAAA','ULMAAA','OOOOxx'
+719,8419,1,3,9,19,19,719,719,719,719,38,39,'RBAAAA','VLMAAA','VVVVxx'
+6188,8420,0,0,8,8,88,188,188,1188,6188,176,177,'AEAAAA','WLMAAA','AAAAxx'
+2288,8421,0,0,8,8,88,288,288,2288,2288,176,177,'AKAAAA','XLMAAA','HHHHxx'
+1287,8422,1,3,7,7,87,287,1287,1287,1287,174,175,'NXAAAA','YLMAAA','OOOOxx'
+1397,8423,1,1,7,17,97,397,1397,1397,1397,194,195,'TBAAAA','ZLMAAA','VVVVxx'
+7763,8424,1,3,3,3,63,763,1763,2763,7763,126,127,'PMAAAA','AMMAAA','AAAAxx'
+5194,8425,0,2,4,14,94,194,1194,194,5194,188,189,'URAAAA','BMMAAA','HHHHxx'
+3167,8426,1,3,7,7,67,167,1167,3167,3167,134,135,'VRAAAA','CMMAAA','OOOOxx'
+9218,8427,0,2,8,18,18,218,1218,4218,9218,36,37,'OQAAAA','DMMAAA','VVVVxx'
+2065,8428,1,1,5,5,65,65,65,2065,2065,130,131,'LBAAAA','EMMAAA','AAAAxx'
+9669,8429,1,1,9,9,69,669,1669,4669,9669,138,139,'XHAAAA','FMMAAA','HHHHxx'
+146,8430,0,2,6,6,46,146,146,146,146,92,93,'QFAAAA','GMMAAA','OOOOxx'
+6141,8431,1,1,1,1,41,141,141,1141,6141,82,83,'FCAAAA','HMMAAA','VVVVxx'
+2843,8432,1,3,3,3,43,843,843,2843,2843,86,87,'JFAAAA','IMMAAA','AAAAxx'
+7934,8433,0,2,4,14,34,934,1934,2934,7934,68,69,'ETAAAA','JMMAAA','HHHHxx'
+2536,8434,0,0,6,16,36,536,536,2536,2536,72,73,'OTAAAA','KMMAAA','OOOOxx'
+7088,8435,0,0,8,8,88,88,1088,2088,7088,176,177,'QMAAAA','LMMAAA','VVVVxx'
+2519,8436,1,3,9,19,19,519,519,2519,2519,38,39,'XSAAAA','MMMAAA','AAAAxx'
+6650,8437,0,2,0,10,50,650,650,1650,6650,100,101,'UVAAAA','NMMAAA','HHHHxx'
+3007,8438,1,3,7,7,7,7,1007,3007,3007,14,15,'RLAAAA','OMMAAA','OOOOxx'
+4507,8439,1,3,7,7,7,507,507,4507,4507,14,15,'JRAAAA','PMMAAA','VVVVxx'
+4892,8440,0,0,2,12,92,892,892,4892,4892,184,185,'EGAAAA','QMMAAA','AAAAxx'
+7159,8441,1,3,9,19,59,159,1159,2159,7159,118,119,'JPAAAA','RMMAAA','HHHHxx'
+3171,8442,1,3,1,11,71,171,1171,3171,3171,142,143,'ZRAAAA','SMMAAA','OOOOxx'
+1080,8443,0,0,0,0,80,80,1080,1080,1080,160,161,'OPAAAA','TMMAAA','VVVVxx'
+7248,8444,0,0,8,8,48,248,1248,2248,7248,96,97,'USAAAA','UMMAAA','AAAAxx'
+7230,8445,0,2,0,10,30,230,1230,2230,7230,60,61,'CSAAAA','VMMAAA','HHHHxx'
+3823,8446,1,3,3,3,23,823,1823,3823,3823,46,47,'BRAAAA','WMMAAA','OOOOxx'
+5517,8447,1,1,7,17,17,517,1517,517,5517,34,35,'FEAAAA','XMMAAA','VVVVxx'
+1482,8448,0,2,2,2,82,482,1482,1482,1482,164,165,'AFAAAA','YMMAAA','AAAAxx'
+9953,8449,1,1,3,13,53,953,1953,4953,9953,106,107,'VSAAAA','ZMMAAA','HHHHxx'
+2754,8450,0,2,4,14,54,754,754,2754,2754,108,109,'YBAAAA','ANMAAA','OOOOxx'
+3875,8451,1,3,5,15,75,875,1875,3875,3875,150,151,'BTAAAA','BNMAAA','VVVVxx'
+9800,8452,0,0,0,0,0,800,1800,4800,9800,0,1,'YMAAAA','CNMAAA','AAAAxx'
+8819,8453,1,3,9,19,19,819,819,3819,8819,38,39,'FBAAAA','DNMAAA','HHHHxx'
+8267,8454,1,3,7,7,67,267,267,3267,8267,134,135,'ZFAAAA','ENMAAA','OOOOxx'
+520,8455,0,0,0,0,20,520,520,520,520,40,41,'AUAAAA','FNMAAA','VVVVxx'
+5770,8456,0,2,0,10,70,770,1770,770,5770,140,141,'YNAAAA','GNMAAA','AAAAxx'
+2114,8457,0,2,4,14,14,114,114,2114,2114,28,29,'IDAAAA','HNMAAA','HHHHxx'
+5045,8458,1,1,5,5,45,45,1045,45,5045,90,91,'BMAAAA','INMAAA','OOOOxx'
+1094,8459,0,2,4,14,94,94,1094,1094,1094,188,189,'CQAAAA','JNMAAA','VVVVxx'
+8786,8460,0,2,6,6,86,786,786,3786,8786,172,173,'YZAAAA','KNMAAA','AAAAxx'
+353,8461,1,1,3,13,53,353,353,353,353,106,107,'PNAAAA','LNMAAA','HHHHxx'
+290,8462,0,2,0,10,90,290,290,290,290,180,181,'ELAAAA','MNMAAA','OOOOxx'
+3376,8463,0,0,6,16,76,376,1376,3376,3376,152,153,'WZAAAA','NNMAAA','VVVVxx'
+9305,8464,1,1,5,5,5,305,1305,4305,9305,10,11,'XTAAAA','ONMAAA','AAAAxx'
+186,8465,0,2,6,6,86,186,186,186,186,172,173,'EHAAAA','PNMAAA','HHHHxx'
+4817,8466,1,1,7,17,17,817,817,4817,4817,34,35,'HDAAAA','QNMAAA','OOOOxx'
+4638,8467,0,2,8,18,38,638,638,4638,4638,76,77,'KWAAAA','RNMAAA','VVVVxx'
+3558,8468,0,2,8,18,58,558,1558,3558,3558,116,117,'WGAAAA','SNMAAA','AAAAxx'
+9285,8469,1,1,5,5,85,285,1285,4285,9285,170,171,'DTAAAA','TNMAAA','HHHHxx'
+848,8470,0,0,8,8,48,848,848,848,848,96,97,'QGAAAA','UNMAAA','OOOOxx'
+8923,8471,1,3,3,3,23,923,923,3923,8923,46,47,'FFAAAA','VNMAAA','VVVVxx'
+6826,8472,0,2,6,6,26,826,826,1826,6826,52,53,'OCAAAA','WNMAAA','AAAAxx'
+5187,8473,1,3,7,7,87,187,1187,187,5187,174,175,'NRAAAA','XNMAAA','HHHHxx'
+2398,8474,0,2,8,18,98,398,398,2398,2398,196,197,'GOAAAA','YNMAAA','OOOOxx'
+7653,8475,1,1,3,13,53,653,1653,2653,7653,106,107,'JIAAAA','ZNMAAA','VVVVxx'
+8835,8476,1,3,5,15,35,835,835,3835,8835,70,71,'VBAAAA','AOMAAA','AAAAxx'
+5736,8477,0,0,6,16,36,736,1736,736,5736,72,73,'QMAAAA','BOMAAA','HHHHxx'
+1238,8478,0,2,8,18,38,238,1238,1238,1238,76,77,'QVAAAA','COMAAA','OOOOxx'
+6021,8479,1,1,1,1,21,21,21,1021,6021,42,43,'PXAAAA','DOMAAA','VVVVxx'
+6815,8480,1,3,5,15,15,815,815,1815,6815,30,31,'DCAAAA','EOMAAA','AAAAxx'
+2549,8481,1,1,9,9,49,549,549,2549,2549,98,99,'BUAAAA','FOMAAA','HHHHxx'
+5657,8482,1,1,7,17,57,657,1657,657,5657,114,115,'PJAAAA','GOMAAA','OOOOxx'
+6855,8483,1,3,5,15,55,855,855,1855,6855,110,111,'RDAAAA','HOMAAA','VVVVxx'
+1225,8484,1,1,5,5,25,225,1225,1225,1225,50,51,'DVAAAA','IOMAAA','AAAAxx'
+7452,8485,0,0,2,12,52,452,1452,2452,7452,104,105,'QAAAAA','JOMAAA','HHHHxx'
+2479,8486,1,3,9,19,79,479,479,2479,2479,158,159,'JRAAAA','KOMAAA','OOOOxx'
+7974,8487,0,2,4,14,74,974,1974,2974,7974,148,149,'SUAAAA','LOMAAA','VVVVxx'
+1212,8488,0,0,2,12,12,212,1212,1212,1212,24,25,'QUAAAA','MOMAAA','AAAAxx'
+8883,8489,1,3,3,3,83,883,883,3883,8883,166,167,'RDAAAA','NOMAAA','HHHHxx'
+8150,8490,0,2,0,10,50,150,150,3150,8150,100,101,'MBAAAA','OOMAAA','OOOOxx'
+3392,8491,0,0,2,12,92,392,1392,3392,3392,184,185,'MAAAAA','POMAAA','VVVVxx'
+6774,8492,0,2,4,14,74,774,774,1774,6774,148,149,'OAAAAA','QOMAAA','AAAAxx'
+904,8493,0,0,4,4,4,904,904,904,904,8,9,'UIAAAA','ROMAAA','HHHHxx'
+5068,8494,0,0,8,8,68,68,1068,68,5068,136,137,'YMAAAA','SOMAAA','OOOOxx'
+9339,8495,1,3,9,19,39,339,1339,4339,9339,78,79,'FVAAAA','TOMAAA','VVVVxx'
+1062,8496,0,2,2,2,62,62,1062,1062,1062,124,125,'WOAAAA','UOMAAA','AAAAxx'
+3841,8497,1,1,1,1,41,841,1841,3841,3841,82,83,'TRAAAA','VOMAAA','HHHHxx'
+8924,8498,0,0,4,4,24,924,924,3924,8924,48,49,'GFAAAA','WOMAAA','OOOOxx'
+9795,8499,1,3,5,15,95,795,1795,4795,9795,190,191,'TMAAAA','XOMAAA','VVVVxx'
+3981,8500,1,1,1,1,81,981,1981,3981,3981,162,163,'DXAAAA','YOMAAA','AAAAxx'
+4290,8501,0,2,0,10,90,290,290,4290,4290,180,181,'AJAAAA','ZOMAAA','HHHHxx'
+1067,8502,1,3,7,7,67,67,1067,1067,1067,134,135,'BPAAAA','APMAAA','OOOOxx'
+8679,8503,1,3,9,19,79,679,679,3679,8679,158,159,'VVAAAA','BPMAAA','VVVVxx'
+2894,8504,0,2,4,14,94,894,894,2894,2894,188,189,'IHAAAA','CPMAAA','AAAAxx'
+9248,8505,0,0,8,8,48,248,1248,4248,9248,96,97,'SRAAAA','DPMAAA','HHHHxx'
+1072,8506,0,0,2,12,72,72,1072,1072,1072,144,145,'GPAAAA','EPMAAA','OOOOxx'
+3510,8507,0,2,0,10,10,510,1510,3510,3510,20,21,'AFAAAA','FPMAAA','VVVVxx'
+6871,8508,1,3,1,11,71,871,871,1871,6871,142,143,'HEAAAA','GPMAAA','AAAAxx'
+8701,8509,1,1,1,1,1,701,701,3701,8701,2,3,'RWAAAA','HPMAAA','HHHHxx'
+8170,8510,0,2,0,10,70,170,170,3170,8170,140,141,'GCAAAA','IPMAAA','OOOOxx'
+2730,8511,0,2,0,10,30,730,730,2730,2730,60,61,'ABAAAA','JPMAAA','VVVVxx'
+2668,8512,0,0,8,8,68,668,668,2668,2668,136,137,'QYAAAA','KPMAAA','AAAAxx'
+8723,8513,1,3,3,3,23,723,723,3723,8723,46,47,'NXAAAA','LPMAAA','HHHHxx'
+3439,8514,1,3,9,19,39,439,1439,3439,3439,78,79,'HCAAAA','MPMAAA','OOOOxx'
+6219,8515,1,3,9,19,19,219,219,1219,6219,38,39,'FFAAAA','NPMAAA','VVVVxx'
+4264,8516,0,0,4,4,64,264,264,4264,4264,128,129,'AIAAAA','OPMAAA','AAAAxx'
+3929,8517,1,1,9,9,29,929,1929,3929,3929,58,59,'DVAAAA','PPMAAA','HHHHxx'
+7,8518,1,3,7,7,7,7,7,7,7,14,15,'HAAAAA','QPMAAA','OOOOxx'
+3737,8519,1,1,7,17,37,737,1737,3737,3737,74,75,'TNAAAA','RPMAAA','VVVVxx'
+358,8520,0,2,8,18,58,358,358,358,358,116,117,'UNAAAA','SPMAAA','AAAAxx'
+5128,8521,0,0,8,8,28,128,1128,128,5128,56,57,'GPAAAA','TPMAAA','HHHHxx'
+7353,8522,1,1,3,13,53,353,1353,2353,7353,106,107,'VWAAAA','UPMAAA','OOOOxx'
+8758,8523,0,2,8,18,58,758,758,3758,8758,116,117,'WYAAAA','VPMAAA','VVVVxx'
+7284,8524,0,0,4,4,84,284,1284,2284,7284,168,169,'EUAAAA','WPMAAA','AAAAxx'
+4037,8525,1,1,7,17,37,37,37,4037,4037,74,75,'HZAAAA','XPMAAA','HHHHxx'
+435,8526,1,3,5,15,35,435,435,435,435,70,71,'TQAAAA','YPMAAA','OOOOxx'
+3580,8527,0,0,0,0,80,580,1580,3580,3580,160,161,'SHAAAA','ZPMAAA','VVVVxx'
+4554,8528,0,2,4,14,54,554,554,4554,4554,108,109,'ETAAAA','AQMAAA','AAAAxx'
+4337,8529,1,1,7,17,37,337,337,4337,4337,74,75,'VKAAAA','BQMAAA','HHHHxx'
+512,8530,0,0,2,12,12,512,512,512,512,24,25,'STAAAA','CQMAAA','OOOOxx'
+2032,8531,0,0,2,12,32,32,32,2032,2032,64,65,'EAAAAA','DQMAAA','VVVVxx'
+1755,8532,1,3,5,15,55,755,1755,1755,1755,110,111,'NPAAAA','EQMAAA','AAAAxx'
+9923,8533,1,3,3,3,23,923,1923,4923,9923,46,47,'RRAAAA','FQMAAA','HHHHxx'
+3747,8534,1,3,7,7,47,747,1747,3747,3747,94,95,'DOAAAA','GQMAAA','OOOOxx'
+27,8535,1,3,7,7,27,27,27,27,27,54,55,'BBAAAA','HQMAAA','VVVVxx'
+3075,8536,1,3,5,15,75,75,1075,3075,3075,150,151,'HOAAAA','IQMAAA','AAAAxx'
+6259,8537,1,3,9,19,59,259,259,1259,6259,118,119,'TGAAAA','JQMAAA','HHHHxx'
+2940,8538,0,0,0,0,40,940,940,2940,2940,80,81,'CJAAAA','KQMAAA','OOOOxx'
+5724,8539,0,0,4,4,24,724,1724,724,5724,48,49,'EMAAAA','LQMAAA','VVVVxx'
+5638,8540,0,2,8,18,38,638,1638,638,5638,76,77,'WIAAAA','MQMAAA','AAAAxx'
+479,8541,1,3,9,19,79,479,479,479,479,158,159,'LSAAAA','NQMAAA','HHHHxx'
+4125,8542,1,1,5,5,25,125,125,4125,4125,50,51,'RCAAAA','OQMAAA','OOOOxx'
+1525,8543,1,1,5,5,25,525,1525,1525,1525,50,51,'RGAAAA','PQMAAA','VVVVxx'
+7529,8544,1,1,9,9,29,529,1529,2529,7529,58,59,'PDAAAA','QQMAAA','AAAAxx'
+931,8545,1,3,1,11,31,931,931,931,931,62,63,'VJAAAA','RQMAAA','HHHHxx'
+5175,8546,1,3,5,15,75,175,1175,175,5175,150,151,'BRAAAA','SQMAAA','OOOOxx'
+6798,8547,0,2,8,18,98,798,798,1798,6798,196,197,'MBAAAA','TQMAAA','VVVVxx'
+2111,8548,1,3,1,11,11,111,111,2111,2111,22,23,'FDAAAA','UQMAAA','AAAAxx'
+6145,8549,1,1,5,5,45,145,145,1145,6145,90,91,'JCAAAA','VQMAAA','HHHHxx'
+4712,8550,0,0,2,12,12,712,712,4712,4712,24,25,'GZAAAA','WQMAAA','OOOOxx'
+3110,8551,0,2,0,10,10,110,1110,3110,3110,20,21,'QPAAAA','XQMAAA','VVVVxx'
+97,8552,1,1,7,17,97,97,97,97,97,194,195,'TDAAAA','YQMAAA','AAAAxx'
+758,8553,0,2,8,18,58,758,758,758,758,116,117,'EDAAAA','ZQMAAA','HHHHxx'
+1895,8554,1,3,5,15,95,895,1895,1895,1895,190,191,'XUAAAA','ARMAAA','OOOOxx'
+5289,8555,1,1,9,9,89,289,1289,289,5289,178,179,'LVAAAA','BRMAAA','VVVVxx'
+5026,8556,0,2,6,6,26,26,1026,26,5026,52,53,'ILAAAA','CRMAAA','AAAAxx'
+4725,8557,1,1,5,5,25,725,725,4725,4725,50,51,'TZAAAA','DRMAAA','HHHHxx'
+1679,8558,1,3,9,19,79,679,1679,1679,1679,158,159,'PMAAAA','ERMAAA','OOOOxx'
+4433,8559,1,1,3,13,33,433,433,4433,4433,66,67,'NOAAAA','FRMAAA','VVVVxx'
+5340,8560,0,0,0,0,40,340,1340,340,5340,80,81,'KXAAAA','GRMAAA','AAAAxx'
+6340,8561,0,0,0,0,40,340,340,1340,6340,80,81,'WJAAAA','HRMAAA','HHHHxx'
+3261,8562,1,1,1,1,61,261,1261,3261,3261,122,123,'LVAAAA','IRMAAA','OOOOxx'
+8108,8563,0,0,8,8,8,108,108,3108,8108,16,17,'WZAAAA','JRMAAA','VVVVxx'
+8785,8564,1,1,5,5,85,785,785,3785,8785,170,171,'XZAAAA','KRMAAA','AAAAxx'
+7391,8565,1,3,1,11,91,391,1391,2391,7391,182,183,'HYAAAA','LRMAAA','HHHHxx'
+1496,8566,0,0,6,16,96,496,1496,1496,1496,192,193,'OFAAAA','MRMAAA','OOOOxx'
+1484,8567,0,0,4,4,84,484,1484,1484,1484,168,169,'CFAAAA','NRMAAA','VVVVxx'
+5884,8568,0,0,4,4,84,884,1884,884,5884,168,169,'ISAAAA','ORMAAA','AAAAxx'
+342,8569,0,2,2,2,42,342,342,342,342,84,85,'ENAAAA','PRMAAA','HHHHxx'
+7659,8570,1,3,9,19,59,659,1659,2659,7659,118,119,'PIAAAA','QRMAAA','OOOOxx'
+6635,8571,1,3,5,15,35,635,635,1635,6635,70,71,'FVAAAA','RRMAAA','VVVVxx'
+8507,8572,1,3,7,7,7,507,507,3507,8507,14,15,'FPAAAA','SRMAAA','AAAAxx'
+2583,8573,1,3,3,3,83,583,583,2583,2583,166,167,'JVAAAA','TRMAAA','HHHHxx'
+6533,8574,1,1,3,13,33,533,533,1533,6533,66,67,'HRAAAA','URMAAA','OOOOxx'
+5879,8575,1,3,9,19,79,879,1879,879,5879,158,159,'DSAAAA','VRMAAA','VVVVxx'
+5511,8576,1,3,1,11,11,511,1511,511,5511,22,23,'ZDAAAA','WRMAAA','AAAAxx'
+3682,8577,0,2,2,2,82,682,1682,3682,3682,164,165,'QLAAAA','XRMAAA','HHHHxx'
+7182,8578,0,2,2,2,82,182,1182,2182,7182,164,165,'GQAAAA','YRMAAA','OOOOxx'
+1409,8579,1,1,9,9,9,409,1409,1409,1409,18,19,'FCAAAA','ZRMAAA','VVVVxx'
+3363,8580,1,3,3,3,63,363,1363,3363,3363,126,127,'JZAAAA','ASMAAA','AAAAxx'
+729,8581,1,1,9,9,29,729,729,729,729,58,59,'BCAAAA','BSMAAA','HHHHxx'
+5857,8582,1,1,7,17,57,857,1857,857,5857,114,115,'HRAAAA','CSMAAA','OOOOxx'
+235,8583,1,3,5,15,35,235,235,235,235,70,71,'BJAAAA','DSMAAA','VVVVxx'
+193,8584,1,1,3,13,93,193,193,193,193,186,187,'LHAAAA','ESMAAA','AAAAxx'
+5586,8585,0,2,6,6,86,586,1586,586,5586,172,173,'WGAAAA','FSMAAA','HHHHxx'
+6203,8586,1,3,3,3,3,203,203,1203,6203,6,7,'PEAAAA','GSMAAA','OOOOxx'
+6795,8587,1,3,5,15,95,795,795,1795,6795,190,191,'JBAAAA','HSMAAA','VVVVxx'
+3211,8588,1,3,1,11,11,211,1211,3211,3211,22,23,'NTAAAA','ISMAAA','AAAAxx'
+9763,8589,1,3,3,3,63,763,1763,4763,9763,126,127,'NLAAAA','JSMAAA','HHHHxx'
+9043,8590,1,3,3,3,43,43,1043,4043,9043,86,87,'VJAAAA','KSMAAA','OOOOxx'
+2854,8591,0,2,4,14,54,854,854,2854,2854,108,109,'UFAAAA','LSMAAA','VVVVxx'
+565,8592,1,1,5,5,65,565,565,565,565,130,131,'TVAAAA','MSMAAA','AAAAxx'
+9284,8593,0,0,4,4,84,284,1284,4284,9284,168,169,'CTAAAA','NSMAAA','HHHHxx'
+7886,8594,0,2,6,6,86,886,1886,2886,7886,172,173,'IRAAAA','OSMAAA','OOOOxx'
+122,8595,0,2,2,2,22,122,122,122,122,44,45,'SEAAAA','PSMAAA','VVVVxx'
+4934,8596,0,2,4,14,34,934,934,4934,4934,68,69,'UHAAAA','QSMAAA','AAAAxx'
+1766,8597,0,2,6,6,66,766,1766,1766,1766,132,133,'YPAAAA','RSMAAA','HHHHxx'
+2554,8598,0,2,4,14,54,554,554,2554,2554,108,109,'GUAAAA','SSMAAA','OOOOxx'
+488,8599,0,0,8,8,88,488,488,488,488,176,177,'USAAAA','TSMAAA','VVVVxx'
+825,8600,1,1,5,5,25,825,825,825,825,50,51,'TFAAAA','USMAAA','AAAAxx'
+678,8601,0,2,8,18,78,678,678,678,678,156,157,'CAAAAA','VSMAAA','HHHHxx'
+4543,8602,1,3,3,3,43,543,543,4543,4543,86,87,'TSAAAA','WSMAAA','OOOOxx'
+1699,8603,1,3,9,19,99,699,1699,1699,1699,198,199,'JNAAAA','XSMAAA','VVVVxx'
+3771,8604,1,3,1,11,71,771,1771,3771,3771,142,143,'BPAAAA','YSMAAA','AAAAxx'
+1234,8605,0,2,4,14,34,234,1234,1234,1234,68,69,'MVAAAA','ZSMAAA','HHHHxx'
+4152,8606,0,0,2,12,52,152,152,4152,4152,104,105,'SDAAAA','ATMAAA','OOOOxx'
+1632,8607,0,0,2,12,32,632,1632,1632,1632,64,65,'UKAAAA','BTMAAA','VVVVxx'
+4988,8608,0,0,8,8,88,988,988,4988,4988,176,177,'WJAAAA','CTMAAA','AAAAxx'
+1980,8609,0,0,0,0,80,980,1980,1980,1980,160,161,'EYAAAA','DTMAAA','HHHHxx'
+7479,8610,1,3,9,19,79,479,1479,2479,7479,158,159,'RBAAAA','ETMAAA','OOOOxx'
+2586,8611,0,2,6,6,86,586,586,2586,2586,172,173,'MVAAAA','FTMAAA','VVVVxx'
+5433,8612,1,1,3,13,33,433,1433,433,5433,66,67,'ZAAAAA','GTMAAA','AAAAxx'
+2261,8613,1,1,1,1,61,261,261,2261,2261,122,123,'ZIAAAA','HTMAAA','HHHHxx'
+1180,8614,0,0,0,0,80,180,1180,1180,1180,160,161,'KTAAAA','ITMAAA','OOOOxx'
+3938,8615,0,2,8,18,38,938,1938,3938,3938,76,77,'MVAAAA','JTMAAA','VVVVxx'
+6714,8616,0,2,4,14,14,714,714,1714,6714,28,29,'GYAAAA','KTMAAA','AAAAxx'
+2890,8617,0,2,0,10,90,890,890,2890,2890,180,181,'EHAAAA','LTMAAA','HHHHxx'
+7379,8618,1,3,9,19,79,379,1379,2379,7379,158,159,'VXAAAA','MTMAAA','OOOOxx'
+5896,8619,0,0,6,16,96,896,1896,896,5896,192,193,'USAAAA','NTMAAA','VVVVxx'
+5949,8620,1,1,9,9,49,949,1949,949,5949,98,99,'VUAAAA','OTMAAA','AAAAxx'
+3194,8621,0,2,4,14,94,194,1194,3194,3194,188,189,'WSAAAA','PTMAAA','HHHHxx'
+9325,8622,1,1,5,5,25,325,1325,4325,9325,50,51,'RUAAAA','QTMAAA','OOOOxx'
+9531,8623,1,3,1,11,31,531,1531,4531,9531,62,63,'PCAAAA','RTMAAA','VVVVxx'
+711,8624,1,3,1,11,11,711,711,711,711,22,23,'JBAAAA','STMAAA','AAAAxx'
+2450,8625,0,2,0,10,50,450,450,2450,2450,100,101,'GQAAAA','TTMAAA','HHHHxx'
+1929,8626,1,1,9,9,29,929,1929,1929,1929,58,59,'FWAAAA','UTMAAA','OOOOxx'
+6165,8627,1,1,5,5,65,165,165,1165,6165,130,131,'DDAAAA','VTMAAA','VVVVxx'
+4050,8628,0,2,0,10,50,50,50,4050,4050,100,101,'UZAAAA','WTMAAA','AAAAxx'
+9011,8629,1,3,1,11,11,11,1011,4011,9011,22,23,'PIAAAA','XTMAAA','HHHHxx'
+7916,8630,0,0,6,16,16,916,1916,2916,7916,32,33,'MSAAAA','YTMAAA','OOOOxx'
+9136,8631,0,0,6,16,36,136,1136,4136,9136,72,73,'KNAAAA','ZTMAAA','VVVVxx'
+8782,8632,0,2,2,2,82,782,782,3782,8782,164,165,'UZAAAA','AUMAAA','AAAAxx'
+8491,8633,1,3,1,11,91,491,491,3491,8491,182,183,'POAAAA','BUMAAA','HHHHxx'
+5114,8634,0,2,4,14,14,114,1114,114,5114,28,29,'SOAAAA','CUMAAA','OOOOxx'
+5815,8635,1,3,5,15,15,815,1815,815,5815,30,31,'RPAAAA','DUMAAA','VVVVxx'
+5628,8636,0,0,8,8,28,628,1628,628,5628,56,57,'MIAAAA','EUMAAA','AAAAxx'
+810,8637,0,2,0,10,10,810,810,810,810,20,21,'EFAAAA','FUMAAA','HHHHxx'
+6178,8638,0,2,8,18,78,178,178,1178,6178,156,157,'QDAAAA','GUMAAA','OOOOxx'
+2619,8639,1,3,9,19,19,619,619,2619,2619,38,39,'TWAAAA','HUMAAA','VVVVxx'
+3340,8640,0,0,0,0,40,340,1340,3340,3340,80,81,'MYAAAA','IUMAAA','AAAAxx'
+2491,8641,1,3,1,11,91,491,491,2491,2491,182,183,'VRAAAA','JUMAAA','HHHHxx'
+3574,8642,0,2,4,14,74,574,1574,3574,3574,148,149,'MHAAAA','KUMAAA','OOOOxx'
+6754,8643,0,2,4,14,54,754,754,1754,6754,108,109,'UZAAAA','LUMAAA','VVVVxx'
+1566,8644,0,2,6,6,66,566,1566,1566,1566,132,133,'GIAAAA','MUMAAA','AAAAxx'
+9174,8645,0,2,4,14,74,174,1174,4174,9174,148,149,'WOAAAA','NUMAAA','HHHHxx'
+1520,8646,0,0,0,0,20,520,1520,1520,1520,40,41,'MGAAAA','OUMAAA','OOOOxx'
+2691,8647,1,3,1,11,91,691,691,2691,2691,182,183,'NZAAAA','PUMAAA','VVVVxx'
+6961,8648,1,1,1,1,61,961,961,1961,6961,122,123,'THAAAA','QUMAAA','AAAAxx'
+5722,8649,0,2,2,2,22,722,1722,722,5722,44,45,'CMAAAA','RUMAAA','HHHHxx'
+9707,8650,1,3,7,7,7,707,1707,4707,9707,14,15,'JJAAAA','SUMAAA','OOOOxx'
+2891,8651,1,3,1,11,91,891,891,2891,2891,182,183,'FHAAAA','TUMAAA','VVVVxx'
+341,8652,1,1,1,1,41,341,341,341,341,82,83,'DNAAAA','UUMAAA','AAAAxx'
+4690,8653,0,2,0,10,90,690,690,4690,4690,180,181,'KYAAAA','VUMAAA','HHHHxx'
+7841,8654,1,1,1,1,41,841,1841,2841,7841,82,83,'PPAAAA','WUMAAA','OOOOxx'
+6615,8655,1,3,5,15,15,615,615,1615,6615,30,31,'LUAAAA','XUMAAA','VVVVxx'
+9169,8656,1,1,9,9,69,169,1169,4169,9169,138,139,'ROAAAA','YUMAAA','AAAAxx'
+6689,8657,1,1,9,9,89,689,689,1689,6689,178,179,'HXAAAA','ZUMAAA','HHHHxx'
+8721,8658,1,1,1,1,21,721,721,3721,8721,42,43,'LXAAAA','AVMAAA','OOOOxx'
+7508,8659,0,0,8,8,8,508,1508,2508,7508,16,17,'UCAAAA','BVMAAA','VVVVxx'
+8631,8660,1,3,1,11,31,631,631,3631,8631,62,63,'ZTAAAA','CVMAAA','AAAAxx'
+480,8661,0,0,0,0,80,480,480,480,480,160,161,'MSAAAA','DVMAAA','HHHHxx'
+7094,8662,0,2,4,14,94,94,1094,2094,7094,188,189,'WMAAAA','EVMAAA','OOOOxx'
+319,8663,1,3,9,19,19,319,319,319,319,38,39,'HMAAAA','FVMAAA','VVVVxx'
+9421,8664,1,1,1,1,21,421,1421,4421,9421,42,43,'JYAAAA','GVMAAA','AAAAxx'
+4352,8665,0,0,2,12,52,352,352,4352,4352,104,105,'KLAAAA','HVMAAA','HHHHxx'
+5019,8666,1,3,9,19,19,19,1019,19,5019,38,39,'BLAAAA','IVMAAA','OOOOxx'
+3956,8667,0,0,6,16,56,956,1956,3956,3956,112,113,'EWAAAA','JVMAAA','VVVVxx'
+114,8668,0,2,4,14,14,114,114,114,114,28,29,'KEAAAA','KVMAAA','AAAAxx'
+1196,8669,0,0,6,16,96,196,1196,1196,1196,192,193,'AUAAAA','LVMAAA','HHHHxx'
+1407,8670,1,3,7,7,7,407,1407,1407,1407,14,15,'DCAAAA','MVMAAA','OOOOxx'
+7432,8671,0,0,2,12,32,432,1432,2432,7432,64,65,'WZAAAA','NVMAAA','VVVVxx'
+3141,8672,1,1,1,1,41,141,1141,3141,3141,82,83,'VQAAAA','OVMAAA','AAAAxx'
+2073,8673,1,1,3,13,73,73,73,2073,2073,146,147,'TBAAAA','PVMAAA','HHHHxx'
+3400,8674,0,0,0,0,0,400,1400,3400,3400,0,1,'UAAAAA','QVMAAA','OOOOxx'
+505,8675,1,1,5,5,5,505,505,505,505,10,11,'LTAAAA','RVMAAA','VVVVxx'
+1263,8676,1,3,3,3,63,263,1263,1263,1263,126,127,'PWAAAA','SVMAAA','AAAAxx'
+190,8677,0,2,0,10,90,190,190,190,190,180,181,'IHAAAA','TVMAAA','HHHHxx'
+6686,8678,0,2,6,6,86,686,686,1686,6686,172,173,'EXAAAA','UVMAAA','OOOOxx'
+9821,8679,1,1,1,1,21,821,1821,4821,9821,42,43,'TNAAAA','VVMAAA','VVVVxx'
+1119,8680,1,3,9,19,19,119,1119,1119,1119,38,39,'BRAAAA','WVMAAA','AAAAxx'
+2955,8681,1,3,5,15,55,955,955,2955,2955,110,111,'RJAAAA','XVMAAA','HHHHxx'
+224,8682,0,0,4,4,24,224,224,224,224,48,49,'QIAAAA','YVMAAA','OOOOxx'
+7562,8683,0,2,2,2,62,562,1562,2562,7562,124,125,'WEAAAA','ZVMAAA','VVVVxx'
+8845,8684,1,1,5,5,45,845,845,3845,8845,90,91,'FCAAAA','AWMAAA','AAAAxx'
+5405,8685,1,1,5,5,5,405,1405,405,5405,10,11,'XZAAAA','BWMAAA','HHHHxx'
+9192,8686,0,0,2,12,92,192,1192,4192,9192,184,185,'OPAAAA','CWMAAA','OOOOxx'
+4927,8687,1,3,7,7,27,927,927,4927,4927,54,55,'NHAAAA','DWMAAA','VVVVxx'
+997,8688,1,1,7,17,97,997,997,997,997,194,195,'JMAAAA','EWMAAA','AAAAxx'
+989,8689,1,1,9,9,89,989,989,989,989,178,179,'BMAAAA','FWMAAA','HHHHxx'
+7258,8690,0,2,8,18,58,258,1258,2258,7258,116,117,'ETAAAA','GWMAAA','OOOOxx'
+6899,8691,1,3,9,19,99,899,899,1899,6899,198,199,'JFAAAA','HWMAAA','VVVVxx'
+1770,8692,0,2,0,10,70,770,1770,1770,1770,140,141,'CQAAAA','IWMAAA','AAAAxx'
+4423,8693,1,3,3,3,23,423,423,4423,4423,46,47,'DOAAAA','JWMAAA','HHHHxx'
+5671,8694,1,3,1,11,71,671,1671,671,5671,142,143,'DKAAAA','KWMAAA','OOOOxx'
+8393,8695,1,1,3,13,93,393,393,3393,8393,186,187,'VKAAAA','LWMAAA','VVVVxx'
+4355,8696,1,3,5,15,55,355,355,4355,4355,110,111,'NLAAAA','MWMAAA','AAAAxx'
+3919,8697,1,3,9,19,19,919,1919,3919,3919,38,39,'TUAAAA','NWMAAA','HHHHxx'
+338,8698,0,2,8,18,38,338,338,338,338,76,77,'ANAAAA','OWMAAA','OOOOxx'
+5790,8699,0,2,0,10,90,790,1790,790,5790,180,181,'SOAAAA','PWMAAA','VVVVxx'
+1452,8700,0,0,2,12,52,452,1452,1452,1452,104,105,'WDAAAA','QWMAAA','AAAAxx'
+939,8701,1,3,9,19,39,939,939,939,939,78,79,'DKAAAA','RWMAAA','HHHHxx'
+8913,8702,1,1,3,13,13,913,913,3913,8913,26,27,'VEAAAA','SWMAAA','OOOOxx'
+7157,8703,1,1,7,17,57,157,1157,2157,7157,114,115,'HPAAAA','TWMAAA','VVVVxx'
+7240,8704,0,0,0,0,40,240,1240,2240,7240,80,81,'MSAAAA','UWMAAA','AAAAxx'
+3492,8705,0,0,2,12,92,492,1492,3492,3492,184,185,'IEAAAA','VWMAAA','HHHHxx'
+3464,8706,0,0,4,4,64,464,1464,3464,3464,128,129,'GDAAAA','WWMAAA','OOOOxx'
+388,8707,0,0,8,8,88,388,388,388,388,176,177,'YOAAAA','XWMAAA','VVVVxx'
+4135,8708,1,3,5,15,35,135,135,4135,4135,70,71,'BDAAAA','YWMAAA','AAAAxx'
+1194,8709,0,2,4,14,94,194,1194,1194,1194,188,189,'YTAAAA','ZWMAAA','HHHHxx'
+5476,8710,0,0,6,16,76,476,1476,476,5476,152,153,'QCAAAA','AXMAAA','OOOOxx'
+9844,8711,0,0,4,4,44,844,1844,4844,9844,88,89,'QOAAAA','BXMAAA','VVVVxx'
+9364,8712,0,0,4,4,64,364,1364,4364,9364,128,129,'EWAAAA','CXMAAA','AAAAxx'
+5238,8713,0,2,8,18,38,238,1238,238,5238,76,77,'MTAAAA','DXMAAA','HHHHxx'
+3712,8714,0,0,2,12,12,712,1712,3712,3712,24,25,'UMAAAA','EXMAAA','OOOOxx'
+6189,8715,1,1,9,9,89,189,189,1189,6189,178,179,'BEAAAA','FXMAAA','VVVVxx'
+5257,8716,1,1,7,17,57,257,1257,257,5257,114,115,'FUAAAA','GXMAAA','AAAAxx'
+81,8717,1,1,1,1,81,81,81,81,81,162,163,'DDAAAA','HXMAAA','HHHHxx'
+3289,8718,1,1,9,9,89,289,1289,3289,3289,178,179,'NWAAAA','IXMAAA','OOOOxx'
+1177,8719,1,1,7,17,77,177,1177,1177,1177,154,155,'HTAAAA','JXMAAA','VVVVxx'
+5038,8720,0,2,8,18,38,38,1038,38,5038,76,77,'ULAAAA','KXMAAA','AAAAxx'
+325,8721,1,1,5,5,25,325,325,325,325,50,51,'NMAAAA','LXMAAA','HHHHxx'
+7221,8722,1,1,1,1,21,221,1221,2221,7221,42,43,'TRAAAA','MXMAAA','OOOOxx'
+7123,8723,1,3,3,3,23,123,1123,2123,7123,46,47,'ZNAAAA','NXMAAA','VVVVxx'
+6364,8724,0,0,4,4,64,364,364,1364,6364,128,129,'UKAAAA','OXMAAA','AAAAxx'
+4468,8725,0,0,8,8,68,468,468,4468,4468,136,137,'WPAAAA','PXMAAA','HHHHxx'
+9185,8726,1,1,5,5,85,185,1185,4185,9185,170,171,'HPAAAA','QXMAAA','OOOOxx'
+4158,8727,0,2,8,18,58,158,158,4158,4158,116,117,'YDAAAA','RXMAAA','VVVVxx'
+9439,8728,1,3,9,19,39,439,1439,4439,9439,78,79,'BZAAAA','SXMAAA','AAAAxx'
+7759,8729,1,3,9,19,59,759,1759,2759,7759,118,119,'LMAAAA','TXMAAA','HHHHxx'
+3325,8730,1,1,5,5,25,325,1325,3325,3325,50,51,'XXAAAA','UXMAAA','OOOOxx'
+7991,8731,1,3,1,11,91,991,1991,2991,7991,182,183,'JVAAAA','VXMAAA','VVVVxx'
+1650,8732,0,2,0,10,50,650,1650,1650,1650,100,101,'MLAAAA','WXMAAA','AAAAxx'
+8395,8733,1,3,5,15,95,395,395,3395,8395,190,191,'XKAAAA','XXMAAA','HHHHxx'
+286,8734,0,2,6,6,86,286,286,286,286,172,173,'ALAAAA','YXMAAA','OOOOxx'
+1507,8735,1,3,7,7,7,507,1507,1507,1507,14,15,'ZFAAAA','ZXMAAA','VVVVxx'
+4122,8736,0,2,2,2,22,122,122,4122,4122,44,45,'OCAAAA','AYMAAA','AAAAxx'
+2625,8737,1,1,5,5,25,625,625,2625,2625,50,51,'ZWAAAA','BYMAAA','HHHHxx'
+1140,8738,0,0,0,0,40,140,1140,1140,1140,80,81,'WRAAAA','CYMAAA','OOOOxx'
+5262,8739,0,2,2,2,62,262,1262,262,5262,124,125,'KUAAAA','DYMAAA','VVVVxx'
+4919,8740,1,3,9,19,19,919,919,4919,4919,38,39,'FHAAAA','EYMAAA','AAAAxx'
+7266,8741,0,2,6,6,66,266,1266,2266,7266,132,133,'MTAAAA','FYMAAA','HHHHxx'
+630,8742,0,2,0,10,30,630,630,630,630,60,61,'GYAAAA','GYMAAA','OOOOxx'
+2129,8743,1,1,9,9,29,129,129,2129,2129,58,59,'XDAAAA','HYMAAA','VVVVxx'
+9552,8744,0,0,2,12,52,552,1552,4552,9552,104,105,'KDAAAA','IYMAAA','AAAAxx'
+3018,8745,0,2,8,18,18,18,1018,3018,3018,36,37,'CMAAAA','JYMAAA','HHHHxx'
+7145,8746,1,1,5,5,45,145,1145,2145,7145,90,91,'VOAAAA','KYMAAA','OOOOxx'
+1633,8747,1,1,3,13,33,633,1633,1633,1633,66,67,'VKAAAA','LYMAAA','VVVVxx'
+7957,8748,1,1,7,17,57,957,1957,2957,7957,114,115,'BUAAAA','MYMAAA','AAAAxx'
+774,8749,0,2,4,14,74,774,774,774,774,148,149,'UDAAAA','NYMAAA','HHHHxx'
+9371,8750,1,3,1,11,71,371,1371,4371,9371,142,143,'LWAAAA','OYMAAA','OOOOxx'
+6007,8751,1,3,7,7,7,7,7,1007,6007,14,15,'BXAAAA','PYMAAA','VVVVxx'
+5277,8752,1,1,7,17,77,277,1277,277,5277,154,155,'ZUAAAA','QYMAAA','AAAAxx'
+9426,8753,0,2,6,6,26,426,1426,4426,9426,52,53,'OYAAAA','RYMAAA','HHHHxx'
+9190,8754,0,2,0,10,90,190,1190,4190,9190,180,181,'MPAAAA','SYMAAA','OOOOxx'
+8996,8755,0,0,6,16,96,996,996,3996,8996,192,193,'AIAAAA','TYMAAA','VVVVxx'
+3409,8756,1,1,9,9,9,409,1409,3409,3409,18,19,'DBAAAA','UYMAAA','AAAAxx'
+7212,8757,0,0,2,12,12,212,1212,2212,7212,24,25,'KRAAAA','VYMAAA','HHHHxx'
+416,8758,0,0,6,16,16,416,416,416,416,32,33,'AQAAAA','WYMAAA','OOOOxx'
+7211,8759,1,3,1,11,11,211,1211,2211,7211,22,23,'JRAAAA','XYMAAA','VVVVxx'
+7454,8760,0,2,4,14,54,454,1454,2454,7454,108,109,'SAAAAA','YYMAAA','AAAAxx'
+8417,8761,1,1,7,17,17,417,417,3417,8417,34,35,'TLAAAA','ZYMAAA','HHHHxx'
+5562,8762,0,2,2,2,62,562,1562,562,5562,124,125,'YFAAAA','AZMAAA','OOOOxx'
+4996,8763,0,0,6,16,96,996,996,4996,4996,192,193,'EKAAAA','BZMAAA','VVVVxx'
+5718,8764,0,2,8,18,18,718,1718,718,5718,36,37,'YLAAAA','CZMAAA','AAAAxx'
+7838,8765,0,2,8,18,38,838,1838,2838,7838,76,77,'MPAAAA','DZMAAA','HHHHxx'
+7715,8766,1,3,5,15,15,715,1715,2715,7715,30,31,'TKAAAA','EZMAAA','OOOOxx'
+2780,8767,0,0,0,0,80,780,780,2780,2780,160,161,'YCAAAA','FZMAAA','VVVVxx'
+1013,8768,1,1,3,13,13,13,1013,1013,1013,26,27,'ZMAAAA','GZMAAA','AAAAxx'
+8465,8769,1,1,5,5,65,465,465,3465,8465,130,131,'PNAAAA','HZMAAA','HHHHxx'
+7976,8770,0,0,6,16,76,976,1976,2976,7976,152,153,'UUAAAA','IZMAAA','OOOOxx'
+7150,8771,0,2,0,10,50,150,1150,2150,7150,100,101,'APAAAA','JZMAAA','VVVVxx'
+6471,8772,1,3,1,11,71,471,471,1471,6471,142,143,'XOAAAA','KZMAAA','AAAAxx'
+1927,8773,1,3,7,7,27,927,1927,1927,1927,54,55,'DWAAAA','LZMAAA','HHHHxx'
+227,8774,1,3,7,7,27,227,227,227,227,54,55,'TIAAAA','MZMAAA','OOOOxx'
+6462,8775,0,2,2,2,62,462,462,1462,6462,124,125,'OOAAAA','NZMAAA','VVVVxx'
+5227,8776,1,3,7,7,27,227,1227,227,5227,54,55,'BTAAAA','OZMAAA','AAAAxx'
+1074,8777,0,2,4,14,74,74,1074,1074,1074,148,149,'IPAAAA','PZMAAA','HHHHxx'
+9448,8778,0,0,8,8,48,448,1448,4448,9448,96,97,'KZAAAA','QZMAAA','OOOOxx'
+4459,8779,1,3,9,19,59,459,459,4459,4459,118,119,'NPAAAA','RZMAAA','VVVVxx'
+2478,8780,0,2,8,18,78,478,478,2478,2478,156,157,'IRAAAA','SZMAAA','AAAAxx'
+5005,8781,1,1,5,5,5,5,1005,5,5005,10,11,'NKAAAA','TZMAAA','HHHHxx'
+2418,8782,0,2,8,18,18,418,418,2418,2418,36,37,'APAAAA','UZMAAA','OOOOxx'
+6991,8783,1,3,1,11,91,991,991,1991,6991,182,183,'XIAAAA','VZMAAA','VVVVxx'
+4729,8784,1,1,9,9,29,729,729,4729,4729,58,59,'XZAAAA','WZMAAA','AAAAxx'
+3548,8785,0,0,8,8,48,548,1548,3548,3548,96,97,'MGAAAA','XZMAAA','HHHHxx'
+9616,8786,0,0,6,16,16,616,1616,4616,9616,32,33,'WFAAAA','YZMAAA','OOOOxx'
+2901,8787,1,1,1,1,1,901,901,2901,2901,2,3,'PHAAAA','ZZMAAA','VVVVxx'
+10,8788,0,2,0,10,10,10,10,10,10,20,21,'KAAAAA','AANAAA','AAAAxx'
+2637,8789,1,1,7,17,37,637,637,2637,2637,74,75,'LXAAAA','BANAAA','HHHHxx'
+6747,8790,1,3,7,7,47,747,747,1747,6747,94,95,'NZAAAA','CANAAA','OOOOxx'
+797,8791,1,1,7,17,97,797,797,797,797,194,195,'REAAAA','DANAAA','VVVVxx'
+7609,8792,1,1,9,9,9,609,1609,2609,7609,18,19,'RGAAAA','EANAAA','AAAAxx'
+8290,8793,0,2,0,10,90,290,290,3290,8290,180,181,'WGAAAA','FANAAA','HHHHxx'
+8765,8794,1,1,5,5,65,765,765,3765,8765,130,131,'DZAAAA','GANAAA','OOOOxx'
+8053,8795,1,1,3,13,53,53,53,3053,8053,106,107,'TXAAAA','HANAAA','VVVVxx'
+5602,8796,0,2,2,2,2,602,1602,602,5602,4,5,'MHAAAA','IANAAA','AAAAxx'
+3672,8797,0,0,2,12,72,672,1672,3672,3672,144,145,'GLAAAA','JANAAA','HHHHxx'
+7513,8798,1,1,3,13,13,513,1513,2513,7513,26,27,'ZCAAAA','KANAAA','OOOOxx'
+3462,8799,0,2,2,2,62,462,1462,3462,3462,124,125,'EDAAAA','LANAAA','VVVVxx'
+4457,8800,1,1,7,17,57,457,457,4457,4457,114,115,'LPAAAA','MANAAA','AAAAxx'
+6547,8801,1,3,7,7,47,547,547,1547,6547,94,95,'VRAAAA','NANAAA','HHHHxx'
+7417,8802,1,1,7,17,17,417,1417,2417,7417,34,35,'HZAAAA','OANAAA','OOOOxx'
+8641,8803,1,1,1,1,41,641,641,3641,8641,82,83,'JUAAAA','PANAAA','VVVVxx'
+149,8804,1,1,9,9,49,149,149,149,149,98,99,'TFAAAA','QANAAA','AAAAxx'
+5041,8805,1,1,1,1,41,41,1041,41,5041,82,83,'XLAAAA','RANAAA','HHHHxx'
+9232,8806,0,0,2,12,32,232,1232,4232,9232,64,65,'CRAAAA','SANAAA','OOOOxx'
+3603,8807,1,3,3,3,3,603,1603,3603,3603,6,7,'PIAAAA','TANAAA','VVVVxx'
+2792,8808,0,0,2,12,92,792,792,2792,2792,184,185,'KDAAAA','UANAAA','AAAAxx'
+6620,8809,0,0,0,0,20,620,620,1620,6620,40,41,'QUAAAA','VANAAA','HHHHxx'
+4000,8810,0,0,0,0,0,0,0,4000,4000,0,1,'WXAAAA','WANAAA','OOOOxx'
+659,8811,1,3,9,19,59,659,659,659,659,118,119,'JZAAAA','XANAAA','VVVVxx'
+8174,8812,0,2,4,14,74,174,174,3174,8174,148,149,'KCAAAA','YANAAA','AAAAxx'
+4599,8813,1,3,9,19,99,599,599,4599,4599,198,199,'XUAAAA','ZANAAA','HHHHxx'
+7851,8814,1,3,1,11,51,851,1851,2851,7851,102,103,'ZPAAAA','ABNAAA','OOOOxx'
+6284,8815,0,0,4,4,84,284,284,1284,6284,168,169,'SHAAAA','BBNAAA','VVVVxx'
+7116,8816,0,0,6,16,16,116,1116,2116,7116,32,33,'SNAAAA','CBNAAA','AAAAxx'
+5595,8817,1,3,5,15,95,595,1595,595,5595,190,191,'FHAAAA','DBNAAA','HHHHxx'
+2903,8818,1,3,3,3,3,903,903,2903,2903,6,7,'RHAAAA','EBNAAA','OOOOxx'
+5948,8819,0,0,8,8,48,948,1948,948,5948,96,97,'UUAAAA','FBNAAA','VVVVxx'
+225,8820,1,1,5,5,25,225,225,225,225,50,51,'RIAAAA','GBNAAA','AAAAxx'
+524,8821,0,0,4,4,24,524,524,524,524,48,49,'EUAAAA','HBNAAA','HHHHxx'
+7639,8822,1,3,9,19,39,639,1639,2639,7639,78,79,'VHAAAA','IBNAAA','OOOOxx'
+7297,8823,1,1,7,17,97,297,1297,2297,7297,194,195,'RUAAAA','JBNAAA','VVVVxx'
+2606,8824,0,2,6,6,6,606,606,2606,2606,12,13,'GWAAAA','KBNAAA','AAAAxx'
+4771,8825,1,3,1,11,71,771,771,4771,4771,142,143,'NBAAAA','LBNAAA','HHHHxx'
+8162,8826,0,2,2,2,62,162,162,3162,8162,124,125,'YBAAAA','MBNAAA','OOOOxx'
+8999,8827,1,3,9,19,99,999,999,3999,8999,198,199,'DIAAAA','NBNAAA','VVVVxx'
+2309,8828,1,1,9,9,9,309,309,2309,2309,18,19,'VKAAAA','OBNAAA','AAAAxx'
+3594,8829,0,2,4,14,94,594,1594,3594,3594,188,189,'GIAAAA','PBNAAA','HHHHxx'
+6092,8830,0,0,2,12,92,92,92,1092,6092,184,185,'IAAAAA','QBNAAA','OOOOxx'
+7467,8831,1,3,7,7,67,467,1467,2467,7467,134,135,'FBAAAA','RBNAAA','VVVVxx'
+6986,8832,0,2,6,6,86,986,986,1986,6986,172,173,'SIAAAA','SBNAAA','AAAAxx'
+9898,8833,0,2,8,18,98,898,1898,4898,9898,196,197,'SQAAAA','TBNAAA','HHHHxx'
+9578,8834,0,2,8,18,78,578,1578,4578,9578,156,157,'KEAAAA','UBNAAA','OOOOxx'
+156,8835,0,0,6,16,56,156,156,156,156,112,113,'AGAAAA','VBNAAA','VVVVxx'
+5810,8836,0,2,0,10,10,810,1810,810,5810,20,21,'MPAAAA','WBNAAA','AAAAxx'
+790,8837,0,2,0,10,90,790,790,790,790,180,181,'KEAAAA','XBNAAA','HHHHxx'
+6840,8838,0,0,0,0,40,840,840,1840,6840,80,81,'CDAAAA','YBNAAA','OOOOxx'
+6725,8839,1,1,5,5,25,725,725,1725,6725,50,51,'RYAAAA','ZBNAAA','VVVVxx'
+5528,8840,0,0,8,8,28,528,1528,528,5528,56,57,'QEAAAA','ACNAAA','AAAAxx'
+4120,8841,0,0,0,0,20,120,120,4120,4120,40,41,'MCAAAA','BCNAAA','HHHHxx'
+6694,8842,0,2,4,14,94,694,694,1694,6694,188,189,'MXAAAA','CCNAAA','OOOOxx'
+3552,8843,0,0,2,12,52,552,1552,3552,3552,104,105,'QGAAAA','DCNAAA','VVVVxx'
+1478,8844,0,2,8,18,78,478,1478,1478,1478,156,157,'WEAAAA','ECNAAA','AAAAxx'
+8084,8845,0,0,4,4,84,84,84,3084,8084,168,169,'YYAAAA','FCNAAA','HHHHxx'
+7578,8846,0,2,8,18,78,578,1578,2578,7578,156,157,'MFAAAA','GCNAAA','OOOOxx'
+6314,8847,0,2,4,14,14,314,314,1314,6314,28,29,'WIAAAA','HCNAAA','VVVVxx'
+6123,8848,1,3,3,3,23,123,123,1123,6123,46,47,'NBAAAA','ICNAAA','AAAAxx'
+9443,8849,1,3,3,3,43,443,1443,4443,9443,86,87,'FZAAAA','JCNAAA','HHHHxx'
+9628,8850,0,0,8,8,28,628,1628,4628,9628,56,57,'IGAAAA','KCNAAA','OOOOxx'
+8508,8851,0,0,8,8,8,508,508,3508,8508,16,17,'GPAAAA','LCNAAA','VVVVxx'
+5552,8852,0,0,2,12,52,552,1552,552,5552,104,105,'OFAAAA','MCNAAA','AAAAxx'
+5327,8853,1,3,7,7,27,327,1327,327,5327,54,55,'XWAAAA','NCNAAA','HHHHxx'
+7771,8854,1,3,1,11,71,771,1771,2771,7771,142,143,'XMAAAA','OCNAAA','OOOOxx'
+8932,8855,0,0,2,12,32,932,932,3932,8932,64,65,'OFAAAA','PCNAAA','VVVVxx'
+3526,8856,0,2,6,6,26,526,1526,3526,3526,52,53,'QFAAAA','QCNAAA','AAAAxx'
+4340,8857,0,0,0,0,40,340,340,4340,4340,80,81,'YKAAAA','RCNAAA','HHHHxx'
+9419,8858,1,3,9,19,19,419,1419,4419,9419,38,39,'HYAAAA','SCNAAA','OOOOxx'
+8421,8859,1,1,1,1,21,421,421,3421,8421,42,43,'XLAAAA','TCNAAA','VVVVxx'
+7431,8860,1,3,1,11,31,431,1431,2431,7431,62,63,'VZAAAA','UCNAAA','AAAAxx'
+172,8861,0,0,2,12,72,172,172,172,172,144,145,'QGAAAA','VCNAAA','HHHHxx'
+3279,8862,1,3,9,19,79,279,1279,3279,3279,158,159,'DWAAAA','WCNAAA','OOOOxx'
+1508,8863,0,0,8,8,8,508,1508,1508,1508,16,17,'AGAAAA','XCNAAA','VVVVxx'
+7091,8864,1,3,1,11,91,91,1091,2091,7091,182,183,'TMAAAA','YCNAAA','AAAAxx'
+1419,8865,1,3,9,19,19,419,1419,1419,1419,38,39,'PCAAAA','ZCNAAA','HHHHxx'
+3032,8866,0,0,2,12,32,32,1032,3032,3032,64,65,'QMAAAA','ADNAAA','OOOOxx'
+8683,8867,1,3,3,3,83,683,683,3683,8683,166,167,'ZVAAAA','BDNAAA','VVVVxx'
+4763,8868,1,3,3,3,63,763,763,4763,4763,126,127,'FBAAAA','CDNAAA','AAAAxx'
+4424,8869,0,0,4,4,24,424,424,4424,4424,48,49,'EOAAAA','DDNAAA','HHHHxx'
+8640,8870,0,0,0,0,40,640,640,3640,8640,80,81,'IUAAAA','EDNAAA','OOOOxx'
+7187,8871,1,3,7,7,87,187,1187,2187,7187,174,175,'LQAAAA','FDNAAA','VVVVxx'
+6247,8872,1,3,7,7,47,247,247,1247,6247,94,95,'HGAAAA','GDNAAA','AAAAxx'
+7340,8873,0,0,0,0,40,340,1340,2340,7340,80,81,'IWAAAA','HDNAAA','HHHHxx'
+182,8874,0,2,2,2,82,182,182,182,182,164,165,'AHAAAA','IDNAAA','OOOOxx'
+2948,8875,0,0,8,8,48,948,948,2948,2948,96,97,'KJAAAA','JDNAAA','VVVVxx'
+9462,8876,0,2,2,2,62,462,1462,4462,9462,124,125,'YZAAAA','KDNAAA','AAAAxx'
+5997,8877,1,1,7,17,97,997,1997,997,5997,194,195,'RWAAAA','LDNAAA','HHHHxx'
+5608,8878,0,0,8,8,8,608,1608,608,5608,16,17,'SHAAAA','MDNAAA','OOOOxx'
+1472,8879,0,0,2,12,72,472,1472,1472,1472,144,145,'QEAAAA','NDNAAA','VVVVxx'
+277,8880,1,1,7,17,77,277,277,277,277,154,155,'RKAAAA','ODNAAA','AAAAxx'
+4807,8881,1,3,7,7,7,807,807,4807,4807,14,15,'XCAAAA','PDNAAA','HHHHxx'
+4969,8882,1,1,9,9,69,969,969,4969,4969,138,139,'DJAAAA','QDNAAA','OOOOxx'
+5611,8883,1,3,1,11,11,611,1611,611,5611,22,23,'VHAAAA','RDNAAA','VVVVxx'
+372,8884,0,0,2,12,72,372,372,372,372,144,145,'IOAAAA','SDNAAA','AAAAxx'
+6666,8885,0,2,6,6,66,666,666,1666,6666,132,133,'KWAAAA','TDNAAA','HHHHxx'
+476,8886,0,0,6,16,76,476,476,476,476,152,153,'ISAAAA','UDNAAA','OOOOxx'
+5225,8887,1,1,5,5,25,225,1225,225,5225,50,51,'ZSAAAA','VDNAAA','VVVVxx'
+5143,8888,1,3,3,3,43,143,1143,143,5143,86,87,'VPAAAA','WDNAAA','AAAAxx'
+1853,8889,1,1,3,13,53,853,1853,1853,1853,106,107,'HTAAAA','XDNAAA','HHHHxx'
+675,8890,1,3,5,15,75,675,675,675,675,150,151,'ZZAAAA','YDNAAA','OOOOxx'
+5643,8891,1,3,3,3,43,643,1643,643,5643,86,87,'BJAAAA','ZDNAAA','VVVVxx'
+5317,8892,1,1,7,17,17,317,1317,317,5317,34,35,'NWAAAA','AENAAA','AAAAxx'
+8102,8893,0,2,2,2,2,102,102,3102,8102,4,5,'QZAAAA','BENAAA','HHHHxx'
+978,8894,0,2,8,18,78,978,978,978,978,156,157,'QLAAAA','CENAAA','OOOOxx'
+4620,8895,0,0,0,0,20,620,620,4620,4620,40,41,'SVAAAA','DENAAA','VVVVxx'
+151,8896,1,3,1,11,51,151,151,151,151,102,103,'VFAAAA','EENAAA','AAAAxx'
+972,8897,0,0,2,12,72,972,972,972,972,144,145,'KLAAAA','FENAAA','HHHHxx'
+6820,8898,0,0,0,0,20,820,820,1820,6820,40,41,'ICAAAA','GENAAA','OOOOxx'
+7387,8899,1,3,7,7,87,387,1387,2387,7387,174,175,'DYAAAA','HENAAA','VVVVxx'
+9634,8900,0,2,4,14,34,634,1634,4634,9634,68,69,'OGAAAA','IENAAA','AAAAxx'
+6308,8901,0,0,8,8,8,308,308,1308,6308,16,17,'QIAAAA','JENAAA','HHHHxx'
+8323,8902,1,3,3,3,23,323,323,3323,8323,46,47,'DIAAAA','KENAAA','OOOOxx'
+6672,8903,0,0,2,12,72,672,672,1672,6672,144,145,'QWAAAA','LENAAA','VVVVxx'
+8283,8904,1,3,3,3,83,283,283,3283,8283,166,167,'PGAAAA','MENAAA','AAAAxx'
+7996,8905,0,0,6,16,96,996,1996,2996,7996,192,193,'OVAAAA','NENAAA','HHHHxx'
+6488,8906,0,0,8,8,88,488,488,1488,6488,176,177,'OPAAAA','OENAAA','OOOOxx'
+2365,8907,1,1,5,5,65,365,365,2365,2365,130,131,'ZMAAAA','PENAAA','VVVVxx'
+9746,8908,0,2,6,6,46,746,1746,4746,9746,92,93,'WKAAAA','QENAAA','AAAAxx'
+8605,8909,1,1,5,5,5,605,605,3605,8605,10,11,'ZSAAAA','RENAAA','HHHHxx'
+3342,8910,0,2,2,2,42,342,1342,3342,3342,84,85,'OYAAAA','SENAAA','OOOOxx'
+8429,8911,1,1,9,9,29,429,429,3429,8429,58,59,'FMAAAA','TENAAA','VVVVxx'
+1162,8912,0,2,2,2,62,162,1162,1162,1162,124,125,'SSAAAA','UENAAA','AAAAxx'
+531,8913,1,3,1,11,31,531,531,531,531,62,63,'LUAAAA','VENAAA','HHHHxx'
+8408,8914,0,0,8,8,8,408,408,3408,8408,16,17,'KLAAAA','WENAAA','OOOOxx'
+8862,8915,0,2,2,2,62,862,862,3862,8862,124,125,'WCAAAA','XENAAA','VVVVxx'
+5843,8916,1,3,3,3,43,843,1843,843,5843,86,87,'TQAAAA','YENAAA','AAAAxx'
+8704,8917,0,0,4,4,4,704,704,3704,8704,8,9,'UWAAAA','ZENAAA','HHHHxx'
+7070,8918,0,2,0,10,70,70,1070,2070,7070,140,141,'YLAAAA','AFNAAA','OOOOxx'
+9119,8919,1,3,9,19,19,119,1119,4119,9119,38,39,'TMAAAA','BFNAAA','VVVVxx'
+8344,8920,0,0,4,4,44,344,344,3344,8344,88,89,'YIAAAA','CFNAAA','AAAAxx'
+8979,8921,1,3,9,19,79,979,979,3979,8979,158,159,'JHAAAA','DFNAAA','HHHHxx'
+2971,8922,1,3,1,11,71,971,971,2971,2971,142,143,'HKAAAA','EFNAAA','OOOOxx'
+7700,8923,0,0,0,0,0,700,1700,2700,7700,0,1,'EKAAAA','FFNAAA','VVVVxx'
+8280,8924,0,0,0,0,80,280,280,3280,8280,160,161,'MGAAAA','GFNAAA','AAAAxx'
+9096,8925,0,0,6,16,96,96,1096,4096,9096,192,193,'WLAAAA','HFNAAA','HHHHxx'
+99,8926,1,3,9,19,99,99,99,99,99,198,199,'VDAAAA','IFNAAA','OOOOxx'
+6696,8927,0,0,6,16,96,696,696,1696,6696,192,193,'OXAAAA','JFNAAA','VVVVxx'
+9490,8928,0,2,0,10,90,490,1490,4490,9490,180,181,'ABAAAA','KFNAAA','AAAAxx'
+9073,8929,1,1,3,13,73,73,1073,4073,9073,146,147,'ZKAAAA','LFNAAA','HHHHxx'
+1861,8930,1,1,1,1,61,861,1861,1861,1861,122,123,'PTAAAA','MFNAAA','OOOOxx'
+4413,8931,1,1,3,13,13,413,413,4413,4413,26,27,'TNAAAA','NFNAAA','VVVVxx'
+6002,8932,0,2,2,2,2,2,2,1002,6002,4,5,'WWAAAA','OFNAAA','AAAAxx'
+439,8933,1,3,9,19,39,439,439,439,439,78,79,'XQAAAA','PFNAAA','HHHHxx'
+5449,8934,1,1,9,9,49,449,1449,449,5449,98,99,'PBAAAA','QFNAAA','OOOOxx'
+9737,8935,1,1,7,17,37,737,1737,4737,9737,74,75,'NKAAAA','RFNAAA','VVVVxx'
+1898,8936,0,2,8,18,98,898,1898,1898,1898,196,197,'AVAAAA','SFNAAA','AAAAxx'
+4189,8937,1,1,9,9,89,189,189,4189,4189,178,179,'DFAAAA','TFNAAA','HHHHxx'
+1408,8938,0,0,8,8,8,408,1408,1408,1408,16,17,'ECAAAA','UFNAAA','OOOOxx'
+394,8939,0,2,4,14,94,394,394,394,394,188,189,'EPAAAA','VFNAAA','VVVVxx'
+1935,8940,1,3,5,15,35,935,1935,1935,1935,70,71,'LWAAAA','WFNAAA','AAAAxx'
+3965,8941,1,1,5,5,65,965,1965,3965,3965,130,131,'NWAAAA','XFNAAA','HHHHxx'
+6821,8942,1,1,1,1,21,821,821,1821,6821,42,43,'JCAAAA','YFNAAA','OOOOxx'
+349,8943,1,1,9,9,49,349,349,349,349,98,99,'LNAAAA','ZFNAAA','VVVVxx'
+8428,8944,0,0,8,8,28,428,428,3428,8428,56,57,'EMAAAA','AGNAAA','AAAAxx'
+8200,8945,0,0,0,0,0,200,200,3200,8200,0,1,'KDAAAA','BGNAAA','HHHHxx'
+1737,8946,1,1,7,17,37,737,1737,1737,1737,74,75,'VOAAAA','CGNAAA','OOOOxx'
+6516,8947,0,0,6,16,16,516,516,1516,6516,32,33,'QQAAAA','DGNAAA','VVVVxx'
+5441,8948,1,1,1,1,41,441,1441,441,5441,82,83,'HBAAAA','EGNAAA','AAAAxx'
+5999,8949,1,3,9,19,99,999,1999,999,5999,198,199,'TWAAAA','FGNAAA','HHHHxx'
+1539,8950,1,3,9,19,39,539,1539,1539,1539,78,79,'FHAAAA','GGNAAA','OOOOxx'
+9067,8951,1,3,7,7,67,67,1067,4067,9067,134,135,'TKAAAA','HGNAAA','VVVVxx'
+4061,8952,1,1,1,1,61,61,61,4061,4061,122,123,'FAAAAA','IGNAAA','AAAAxx'
+1642,8953,0,2,2,2,42,642,1642,1642,1642,84,85,'ELAAAA','JGNAAA','HHHHxx'
+4657,8954,1,1,7,17,57,657,657,4657,4657,114,115,'DXAAAA','KGNAAA','OOOOxx'
+9934,8955,0,2,4,14,34,934,1934,4934,9934,68,69,'CSAAAA','LGNAAA','VVVVxx'
+6385,8956,1,1,5,5,85,385,385,1385,6385,170,171,'PLAAAA','MGNAAA','AAAAxx'
+6775,8957,1,3,5,15,75,775,775,1775,6775,150,151,'PAAAAA','NGNAAA','HHHHxx'
+3873,8958,1,1,3,13,73,873,1873,3873,3873,146,147,'ZSAAAA','OGNAAA','OOOOxx'
+3862,8959,0,2,2,2,62,862,1862,3862,3862,124,125,'OSAAAA','PGNAAA','VVVVxx'
+1224,8960,0,0,4,4,24,224,1224,1224,1224,48,49,'CVAAAA','QGNAAA','AAAAxx'
+4483,8961,1,3,3,3,83,483,483,4483,4483,166,167,'LQAAAA','RGNAAA','HHHHxx'
+3685,8962,1,1,5,5,85,685,1685,3685,3685,170,171,'TLAAAA','SGNAAA','OOOOxx'
+6082,8963,0,2,2,2,82,82,82,1082,6082,164,165,'YZAAAA','TGNAAA','VVVVxx'
+7798,8964,0,2,8,18,98,798,1798,2798,7798,196,197,'YNAAAA','UGNAAA','AAAAxx'
+9039,8965,1,3,9,19,39,39,1039,4039,9039,78,79,'RJAAAA','VGNAAA','HHHHxx'
+985,8966,1,1,5,5,85,985,985,985,985,170,171,'XLAAAA','WGNAAA','OOOOxx'
+5389,8967,1,1,9,9,89,389,1389,389,5389,178,179,'HZAAAA','XGNAAA','VVVVxx'
+1716,8968,0,0,6,16,16,716,1716,1716,1716,32,33,'AOAAAA','YGNAAA','AAAAxx'
+4209,8969,1,1,9,9,9,209,209,4209,4209,18,19,'XFAAAA','ZGNAAA','HHHHxx'
+746,8970,0,2,6,6,46,746,746,746,746,92,93,'SCAAAA','AHNAAA','OOOOxx'
+6295,8971,1,3,5,15,95,295,295,1295,6295,190,191,'DIAAAA','BHNAAA','VVVVxx'
+9754,8972,0,2,4,14,54,754,1754,4754,9754,108,109,'ELAAAA','CHNAAA','AAAAxx'
+2336,8973,0,0,6,16,36,336,336,2336,2336,72,73,'WLAAAA','DHNAAA','HHHHxx'
+3701,8974,1,1,1,1,1,701,1701,3701,3701,2,3,'JMAAAA','EHNAAA','OOOOxx'
+3551,8975,1,3,1,11,51,551,1551,3551,3551,102,103,'PGAAAA','FHNAAA','VVVVxx'
+8516,8976,0,0,6,16,16,516,516,3516,8516,32,33,'OPAAAA','GHNAAA','AAAAxx'
+9290,8977,0,2,0,10,90,290,1290,4290,9290,180,181,'ITAAAA','HHNAAA','HHHHxx'
+5686,8978,0,2,6,6,86,686,1686,686,5686,172,173,'SKAAAA','IHNAAA','OOOOxx'
+2893,8979,1,1,3,13,93,893,893,2893,2893,186,187,'HHAAAA','JHNAAA','VVVVxx'
+6279,8980,1,3,9,19,79,279,279,1279,6279,158,159,'NHAAAA','KHNAAA','AAAAxx'
+2278,8981,0,2,8,18,78,278,278,2278,2278,156,157,'QJAAAA','LHNAAA','HHHHxx'
+1618,8982,0,2,8,18,18,618,1618,1618,1618,36,37,'GKAAAA','MHNAAA','OOOOxx'
+3450,8983,0,2,0,10,50,450,1450,3450,3450,100,101,'SCAAAA','NHNAAA','VVVVxx'
+8857,8984,1,1,7,17,57,857,857,3857,8857,114,115,'RCAAAA','OHNAAA','AAAAxx'
+1005,8985,1,1,5,5,5,5,1005,1005,1005,10,11,'RMAAAA','PHNAAA','HHHHxx'
+4727,8986,1,3,7,7,27,727,727,4727,4727,54,55,'VZAAAA','QHNAAA','OOOOxx'
+7617,8987,1,1,7,17,17,617,1617,2617,7617,34,35,'ZGAAAA','RHNAAA','VVVVxx'
+2021,8988,1,1,1,1,21,21,21,2021,2021,42,43,'TZAAAA','SHNAAA','AAAAxx'
+9124,8989,0,0,4,4,24,124,1124,4124,9124,48,49,'YMAAAA','THNAAA','HHHHxx'
+3175,8990,1,3,5,15,75,175,1175,3175,3175,150,151,'DSAAAA','UHNAAA','OOOOxx'
+2949,8991,1,1,9,9,49,949,949,2949,2949,98,99,'LJAAAA','VHNAAA','VVVVxx'
+2424,8992,0,0,4,4,24,424,424,2424,2424,48,49,'GPAAAA','WHNAAA','AAAAxx'
+4791,8993,1,3,1,11,91,791,791,4791,4791,182,183,'HCAAAA','XHNAAA','HHHHxx'
+7500,8994,0,0,0,0,0,500,1500,2500,7500,0,1,'MCAAAA','YHNAAA','OOOOxx'
+4893,8995,1,1,3,13,93,893,893,4893,4893,186,187,'FGAAAA','ZHNAAA','VVVVxx'
+121,8996,1,1,1,1,21,121,121,121,121,42,43,'REAAAA','AINAAA','AAAAxx'
+1965,8997,1,1,5,5,65,965,1965,1965,1965,130,131,'PXAAAA','BINAAA','HHHHxx'
+2972,8998,0,0,2,12,72,972,972,2972,2972,144,145,'IKAAAA','CINAAA','OOOOxx'
+662,8999,0,2,2,2,62,662,662,662,662,124,125,'MZAAAA','DINAAA','VVVVxx'
+7074,9000,0,2,4,14,74,74,1074,2074,7074,148,149,'CMAAAA','EINAAA','AAAAxx'
+981,9001,1,1,1,1,81,981,981,981,981,162,163,'TLAAAA','FINAAA','HHHHxx'
+3520,9002,0,0,0,0,20,520,1520,3520,3520,40,41,'KFAAAA','GINAAA','OOOOxx'
+6540,9003,0,0,0,0,40,540,540,1540,6540,80,81,'ORAAAA','HINAAA','VVVVxx'
+6648,9004,0,0,8,8,48,648,648,1648,6648,96,97,'SVAAAA','IINAAA','AAAAxx'
+7076,9005,0,0,6,16,76,76,1076,2076,7076,152,153,'EMAAAA','JINAAA','HHHHxx'
+6919,9006,1,3,9,19,19,919,919,1919,6919,38,39,'DGAAAA','KINAAA','OOOOxx'
+1108,9007,0,0,8,8,8,108,1108,1108,1108,16,17,'QQAAAA','LINAAA','VVVVxx'
+317,9008,1,1,7,17,17,317,317,317,317,34,35,'FMAAAA','MINAAA','AAAAxx'
+3483,9009,1,3,3,3,83,483,1483,3483,3483,166,167,'ZDAAAA','NINAAA','HHHHxx'
+6764,9010,0,0,4,4,64,764,764,1764,6764,128,129,'EAAAAA','OINAAA','OOOOxx'
+1235,9011,1,3,5,15,35,235,1235,1235,1235,70,71,'NVAAAA','PINAAA','VVVVxx'
+7121,9012,1,1,1,1,21,121,1121,2121,7121,42,43,'XNAAAA','QINAAA','AAAAxx'
+426,9013,0,2,6,6,26,426,426,426,426,52,53,'KQAAAA','RINAAA','HHHHxx'
+6880,9014,0,0,0,0,80,880,880,1880,6880,160,161,'QEAAAA','SINAAA','OOOOxx'
+5401,9015,1,1,1,1,1,401,1401,401,5401,2,3,'TZAAAA','TINAAA','VVVVxx'
+7323,9016,1,3,3,3,23,323,1323,2323,7323,46,47,'RVAAAA','UINAAA','AAAAxx'
+9751,9017,1,3,1,11,51,751,1751,4751,9751,102,103,'BLAAAA','VINAAA','HHHHxx'
+3436,9018,0,0,6,16,36,436,1436,3436,3436,72,73,'ECAAAA','WINAAA','OOOOxx'
+7319,9019,1,3,9,19,19,319,1319,2319,7319,38,39,'NVAAAA','XINAAA','VVVVxx'
+7882,9020,0,2,2,2,82,882,1882,2882,7882,164,165,'ERAAAA','YINAAA','AAAAxx'
+8260,9021,0,0,0,0,60,260,260,3260,8260,120,121,'SFAAAA','ZINAAA','HHHHxx'
+9758,9022,0,2,8,18,58,758,1758,4758,9758,116,117,'ILAAAA','AJNAAA','OOOOxx'
+4205,9023,1,1,5,5,5,205,205,4205,4205,10,11,'TFAAAA','BJNAAA','VVVVxx'
+8884,9024,0,0,4,4,84,884,884,3884,8884,168,169,'SDAAAA','CJNAAA','AAAAxx'
+1112,9025,0,0,2,12,12,112,1112,1112,1112,24,25,'UQAAAA','DJNAAA','HHHHxx'
+2186,9026,0,2,6,6,86,186,186,2186,2186,172,173,'CGAAAA','EJNAAA','OOOOxx'
+8666,9027,0,2,6,6,66,666,666,3666,8666,132,133,'IVAAAA','FJNAAA','VVVVxx'
+4325,9028,1,1,5,5,25,325,325,4325,4325,50,51,'JKAAAA','GJNAAA','AAAAxx'
+4912,9029,0,0,2,12,12,912,912,4912,4912,24,25,'YGAAAA','HJNAAA','HHHHxx'
+6497,9030,1,1,7,17,97,497,497,1497,6497,194,195,'XPAAAA','IJNAAA','OOOOxx'
+9072,9031,0,0,2,12,72,72,1072,4072,9072,144,145,'YKAAAA','JJNAAA','VVVVxx'
+8899,9032,1,3,9,19,99,899,899,3899,8899,198,199,'HEAAAA','KJNAAA','AAAAxx'
+5619,9033,1,3,9,19,19,619,1619,619,5619,38,39,'DIAAAA','LJNAAA','HHHHxx'
+4110,9034,0,2,0,10,10,110,110,4110,4110,20,21,'CCAAAA','MJNAAA','OOOOxx'
+7025,9035,1,1,5,5,25,25,1025,2025,7025,50,51,'FKAAAA','NJNAAA','VVVVxx'
+5605,9036,1,1,5,5,5,605,1605,605,5605,10,11,'PHAAAA','OJNAAA','AAAAxx'
+2572,9037,0,0,2,12,72,572,572,2572,2572,144,145,'YUAAAA','PJNAAA','HHHHxx'
+3895,9038,1,3,5,15,95,895,1895,3895,3895,190,191,'VTAAAA','QJNAAA','OOOOxx'
+9138,9039,0,2,8,18,38,138,1138,4138,9138,76,77,'MNAAAA','RJNAAA','VVVVxx'
+4713,9040,1,1,3,13,13,713,713,4713,4713,26,27,'HZAAAA','SJNAAA','AAAAxx'
+6079,9041,1,3,9,19,79,79,79,1079,6079,158,159,'VZAAAA','TJNAAA','HHHHxx'
+8898,9042,0,2,8,18,98,898,898,3898,8898,196,197,'GEAAAA','UJNAAA','OOOOxx'
+2650,9043,0,2,0,10,50,650,650,2650,2650,100,101,'YXAAAA','VJNAAA','VVVVxx'
+5316,9044,0,0,6,16,16,316,1316,316,5316,32,33,'MWAAAA','WJNAAA','AAAAxx'
+5133,9045,1,1,3,13,33,133,1133,133,5133,66,67,'LPAAAA','XJNAAA','HHHHxx'
+2184,9046,0,0,4,4,84,184,184,2184,2184,168,169,'AGAAAA','YJNAAA','OOOOxx'
+2728,9047,0,0,8,8,28,728,728,2728,2728,56,57,'YAAAAA','ZJNAAA','VVVVxx'
+6737,9048,1,1,7,17,37,737,737,1737,6737,74,75,'DZAAAA','AKNAAA','AAAAxx'
+1128,9049,0,0,8,8,28,128,1128,1128,1128,56,57,'KRAAAA','BKNAAA','HHHHxx'
+9662,9050,0,2,2,2,62,662,1662,4662,9662,124,125,'QHAAAA','CKNAAA','OOOOxx'
+9384,9051,0,0,4,4,84,384,1384,4384,9384,168,169,'YWAAAA','DKNAAA','VVVVxx'
+4576,9052,0,0,6,16,76,576,576,4576,4576,152,153,'AUAAAA','EKNAAA','AAAAxx'
+9613,9053,1,1,3,13,13,613,1613,4613,9613,26,27,'TFAAAA','FKNAAA','HHHHxx'
+4001,9054,1,1,1,1,1,1,1,4001,4001,2,3,'XXAAAA','GKNAAA','OOOOxx'
+3628,9055,0,0,8,8,28,628,1628,3628,3628,56,57,'OJAAAA','HKNAAA','VVVVxx'
+6968,9056,0,0,8,8,68,968,968,1968,6968,136,137,'AIAAAA','IKNAAA','AAAAxx'
+6491,9057,1,3,1,11,91,491,491,1491,6491,182,183,'RPAAAA','JKNAAA','HHHHxx'
+1265,9058,1,1,5,5,65,265,1265,1265,1265,130,131,'RWAAAA','KKNAAA','OOOOxx'
+6128,9059,0,0,8,8,28,128,128,1128,6128,56,57,'SBAAAA','LKNAAA','VVVVxx'
+4274,9060,0,2,4,14,74,274,274,4274,4274,148,149,'KIAAAA','MKNAAA','AAAAxx'
+3598,9061,0,2,8,18,98,598,1598,3598,3598,196,197,'KIAAAA','NKNAAA','HHHHxx'
+7961,9062,1,1,1,1,61,961,1961,2961,7961,122,123,'FUAAAA','OKNAAA','OOOOxx'
+2643,9063,1,3,3,3,43,643,643,2643,2643,86,87,'RXAAAA','PKNAAA','VVVVxx'
+4547,9064,1,3,7,7,47,547,547,4547,4547,94,95,'XSAAAA','QKNAAA','AAAAxx'
+3568,9065,0,0,8,8,68,568,1568,3568,3568,136,137,'GHAAAA','RKNAAA','HHHHxx'
+8954,9066,0,2,4,14,54,954,954,3954,8954,108,109,'KGAAAA','SKNAAA','OOOOxx'
+8802,9067,0,2,2,2,2,802,802,3802,8802,4,5,'OAAAAA','TKNAAA','VVVVxx'
+7829,9068,1,1,9,9,29,829,1829,2829,7829,58,59,'DPAAAA','UKNAAA','AAAAxx'
+1008,9069,0,0,8,8,8,8,1008,1008,1008,16,17,'UMAAAA','VKNAAA','HHHHxx'
+3627,9070,1,3,7,7,27,627,1627,3627,3627,54,55,'NJAAAA','WKNAAA','OOOOxx'
+3999,9071,1,3,9,19,99,999,1999,3999,3999,198,199,'VXAAAA','XKNAAA','VVVVxx'
+7697,9072,1,1,7,17,97,697,1697,2697,7697,194,195,'BKAAAA','YKNAAA','AAAAxx'
+9380,9073,0,0,0,0,80,380,1380,4380,9380,160,161,'UWAAAA','ZKNAAA','HHHHxx'
+2707,9074,1,3,7,7,7,707,707,2707,2707,14,15,'DAAAAA','ALNAAA','OOOOxx'
+4430,9075,0,2,0,10,30,430,430,4430,4430,60,61,'KOAAAA','BLNAAA','VVVVxx'
+6440,9076,0,0,0,0,40,440,440,1440,6440,80,81,'SNAAAA','CLNAAA','AAAAxx'
+9958,9077,0,2,8,18,58,958,1958,4958,9958,116,117,'ATAAAA','DLNAAA','HHHHxx'
+7592,9078,0,0,2,12,92,592,1592,2592,7592,184,185,'AGAAAA','ELNAAA','OOOOxx'
+7852,9079,0,0,2,12,52,852,1852,2852,7852,104,105,'AQAAAA','FLNAAA','VVVVxx'
+9253,9080,1,1,3,13,53,253,1253,4253,9253,106,107,'XRAAAA','GLNAAA','AAAAxx'
+5910,9081,0,2,0,10,10,910,1910,910,5910,20,21,'ITAAAA','HLNAAA','HHHHxx'
+7487,9082,1,3,7,7,87,487,1487,2487,7487,174,175,'ZBAAAA','ILNAAA','OOOOxx'
+6324,9083,0,0,4,4,24,324,324,1324,6324,48,49,'GJAAAA','JLNAAA','VVVVxx'
+5792,9084,0,0,2,12,92,792,1792,792,5792,184,185,'UOAAAA','KLNAAA','AAAAxx'
+7390,9085,0,2,0,10,90,390,1390,2390,7390,180,181,'GYAAAA','LLNAAA','HHHHxx'
+8534,9086,0,2,4,14,34,534,534,3534,8534,68,69,'GQAAAA','MLNAAA','OOOOxx'
+2690,9087,0,2,0,10,90,690,690,2690,2690,180,181,'MZAAAA','NLNAAA','VVVVxx'
+3992,9088,0,0,2,12,92,992,1992,3992,3992,184,185,'OXAAAA','OLNAAA','AAAAxx'
+6928,9089,0,0,8,8,28,928,928,1928,6928,56,57,'MGAAAA','PLNAAA','HHHHxx'
+7815,9090,1,3,5,15,15,815,1815,2815,7815,30,31,'POAAAA','QLNAAA','OOOOxx'
+9477,9091,1,1,7,17,77,477,1477,4477,9477,154,155,'NAAAAA','RLNAAA','VVVVxx'
+497,9092,1,1,7,17,97,497,497,497,497,194,195,'DTAAAA','SLNAAA','AAAAxx'
+7532,9093,0,0,2,12,32,532,1532,2532,7532,64,65,'SDAAAA','TLNAAA','HHHHxx'
+9838,9094,0,2,8,18,38,838,1838,4838,9838,76,77,'KOAAAA','ULNAAA','OOOOxx'
+1557,9095,1,1,7,17,57,557,1557,1557,1557,114,115,'XHAAAA','VLNAAA','VVVVxx'
+2467,9096,1,3,7,7,67,467,467,2467,2467,134,135,'XQAAAA','WLNAAA','AAAAxx'
+2367,9097,1,3,7,7,67,367,367,2367,2367,134,135,'BNAAAA','XLNAAA','HHHHxx'
+5677,9098,1,1,7,17,77,677,1677,677,5677,154,155,'JKAAAA','YLNAAA','OOOOxx'
+6193,9099,1,1,3,13,93,193,193,1193,6193,186,187,'FEAAAA','ZLNAAA','VVVVxx'
+7126,9100,0,2,6,6,26,126,1126,2126,7126,52,53,'COAAAA','AMNAAA','AAAAxx'
+5264,9101,0,0,4,4,64,264,1264,264,5264,128,129,'MUAAAA','BMNAAA','HHHHxx'
+850,9102,0,2,0,10,50,850,850,850,850,100,101,'SGAAAA','CMNAAA','OOOOxx'
+4854,9103,0,2,4,14,54,854,854,4854,4854,108,109,'SEAAAA','DMNAAA','VVVVxx'
+4414,9104,0,2,4,14,14,414,414,4414,4414,28,29,'UNAAAA','EMNAAA','AAAAxx'
+8971,9105,1,3,1,11,71,971,971,3971,8971,142,143,'BHAAAA','FMNAAA','HHHHxx'
+9240,9106,0,0,0,0,40,240,1240,4240,9240,80,81,'KRAAAA','GMNAAA','OOOOxx'
+7341,9107,1,1,1,1,41,341,1341,2341,7341,82,83,'JWAAAA','HMNAAA','VVVVxx'
+3151,9108,1,3,1,11,51,151,1151,3151,3151,102,103,'FRAAAA','IMNAAA','AAAAxx'
+1742,9109,0,2,2,2,42,742,1742,1742,1742,84,85,'APAAAA','JMNAAA','HHHHxx'
+1347,9110,1,3,7,7,47,347,1347,1347,1347,94,95,'VZAAAA','KMNAAA','OOOOxx'
+9418,9111,0,2,8,18,18,418,1418,4418,9418,36,37,'GYAAAA','LMNAAA','VVVVxx'
+5452,9112,0,0,2,12,52,452,1452,452,5452,104,105,'SBAAAA','MMNAAA','AAAAxx'
+8637,9113,1,1,7,17,37,637,637,3637,8637,74,75,'FUAAAA','NMNAAA','HHHHxx'
+8287,9114,1,3,7,7,87,287,287,3287,8287,174,175,'TGAAAA','OMNAAA','OOOOxx'
+9865,9115,1,1,5,5,65,865,1865,4865,9865,130,131,'LPAAAA','PMNAAA','VVVVxx'
+1664,9116,0,0,4,4,64,664,1664,1664,1664,128,129,'AMAAAA','QMNAAA','AAAAxx'
+9933,9117,1,1,3,13,33,933,1933,4933,9933,66,67,'BSAAAA','RMNAAA','HHHHxx'
+3416,9118,0,0,6,16,16,416,1416,3416,3416,32,33,'KBAAAA','SMNAAA','OOOOxx'
+7981,9119,1,1,1,1,81,981,1981,2981,7981,162,163,'ZUAAAA','TMNAAA','VVVVxx'
+1981,9120,1,1,1,1,81,981,1981,1981,1981,162,163,'FYAAAA','UMNAAA','AAAAxx'
+441,9121,1,1,1,1,41,441,441,441,441,82,83,'ZQAAAA','VMNAAA','HHHHxx'
+1380,9122,0,0,0,0,80,380,1380,1380,1380,160,161,'CBAAAA','WMNAAA','OOOOxx'
+7325,9123,1,1,5,5,25,325,1325,2325,7325,50,51,'TVAAAA','XMNAAA','VVVVxx'
+5682,9124,0,2,2,2,82,682,1682,682,5682,164,165,'OKAAAA','YMNAAA','AAAAxx'
+1024,9125,0,0,4,4,24,24,1024,1024,1024,48,49,'KNAAAA','ZMNAAA','HHHHxx'
+1096,9126,0,0,6,16,96,96,1096,1096,1096,192,193,'EQAAAA','ANNAAA','OOOOxx'
+4717,9127,1,1,7,17,17,717,717,4717,4717,34,35,'LZAAAA','BNNAAA','VVVVxx'
+7948,9128,0,0,8,8,48,948,1948,2948,7948,96,97,'STAAAA','CNNAAA','AAAAxx'
+4074,9129,0,2,4,14,74,74,74,4074,4074,148,149,'SAAAAA','DNNAAA','HHHHxx'
+211,9130,1,3,1,11,11,211,211,211,211,22,23,'DIAAAA','ENNAAA','OOOOxx'
+8993,9131,1,1,3,13,93,993,993,3993,8993,186,187,'XHAAAA','FNNAAA','VVVVxx'
+4509,9132,1,1,9,9,9,509,509,4509,4509,18,19,'LRAAAA','GNNAAA','AAAAxx'
+823,9133,1,3,3,3,23,823,823,823,823,46,47,'RFAAAA','HNNAAA','HHHHxx'
+4747,9134,1,3,7,7,47,747,747,4747,4747,94,95,'PAAAAA','INNAAA','OOOOxx'
+6955,9135,1,3,5,15,55,955,955,1955,6955,110,111,'NHAAAA','JNNAAA','VVVVxx'
+7922,9136,0,2,2,2,22,922,1922,2922,7922,44,45,'SSAAAA','KNNAAA','AAAAxx'
+6936,9137,0,0,6,16,36,936,936,1936,6936,72,73,'UGAAAA','LNNAAA','HHHHxx'
+1546,9138,0,2,6,6,46,546,1546,1546,1546,92,93,'MHAAAA','MNNAAA','OOOOxx'
+9836,9139,0,0,6,16,36,836,1836,4836,9836,72,73,'IOAAAA','NNNAAA','VVVVxx'
+5626,9140,0,2,6,6,26,626,1626,626,5626,52,53,'KIAAAA','ONNAAA','AAAAxx'
+4879,9141,1,3,9,19,79,879,879,4879,4879,158,159,'RFAAAA','PNNAAA','HHHHxx'
+8590,9142,0,2,0,10,90,590,590,3590,8590,180,181,'KSAAAA','QNNAAA','OOOOxx'
+8842,9143,0,2,2,2,42,842,842,3842,8842,84,85,'CCAAAA','RNNAAA','VVVVxx'
+6505,9144,1,1,5,5,5,505,505,1505,6505,10,11,'FQAAAA','SNNAAA','AAAAxx'
+2803,9145,1,3,3,3,3,803,803,2803,2803,6,7,'VDAAAA','TNNAAA','HHHHxx'
+9258,9146,0,2,8,18,58,258,1258,4258,9258,116,117,'CSAAAA','UNNAAA','OOOOxx'
+741,9147,1,1,1,1,41,741,741,741,741,82,83,'NCAAAA','VNNAAA','VVVVxx'
+1457,9148,1,1,7,17,57,457,1457,1457,1457,114,115,'BEAAAA','WNNAAA','AAAAxx'
+5777,9149,1,1,7,17,77,777,1777,777,5777,154,155,'FOAAAA','XNNAAA','HHHHxx'
+2883,9150,1,3,3,3,83,883,883,2883,2883,166,167,'XGAAAA','YNNAAA','OOOOxx'
+6610,9151,0,2,0,10,10,610,610,1610,6610,20,21,'GUAAAA','ZNNAAA','VVVVxx'
+4331,9152,1,3,1,11,31,331,331,4331,4331,62,63,'PKAAAA','AONAAA','AAAAxx'
+2712,9153,0,0,2,12,12,712,712,2712,2712,24,25,'IAAAAA','BONAAA','HHHHxx'
+9268,9154,0,0,8,8,68,268,1268,4268,9268,136,137,'MSAAAA','CONAAA','OOOOxx'
+410,9155,0,2,0,10,10,410,410,410,410,20,21,'UPAAAA','DONAAA','VVVVxx'
+9411,9156,1,3,1,11,11,411,1411,4411,9411,22,23,'ZXAAAA','EONAAA','AAAAxx'
+4683,9157,1,3,3,3,83,683,683,4683,4683,166,167,'DYAAAA','FONAAA','HHHHxx'
+7072,9158,0,0,2,12,72,72,1072,2072,7072,144,145,'AMAAAA','GONAAA','OOOOxx'
+5050,9159,0,2,0,10,50,50,1050,50,5050,100,101,'GMAAAA','HONAAA','VVVVxx'
+5932,9160,0,0,2,12,32,932,1932,932,5932,64,65,'EUAAAA','IONAAA','AAAAxx'
+2756,9161,0,0,6,16,56,756,756,2756,2756,112,113,'ACAAAA','JONAAA','HHHHxx'
+9813,9162,1,1,3,13,13,813,1813,4813,9813,26,27,'LNAAAA','KONAAA','OOOOxx'
+7388,9163,0,0,8,8,88,388,1388,2388,7388,176,177,'EYAAAA','LONAAA','VVVVxx'
+2596,9164,0,0,6,16,96,596,596,2596,2596,192,193,'WVAAAA','MONAAA','AAAAxx'
+5102,9165,0,2,2,2,2,102,1102,102,5102,4,5,'GOAAAA','NONAAA','HHHHxx'
+208,9166,0,0,8,8,8,208,208,208,208,16,17,'AIAAAA','OONAAA','OOOOxx'
+86,9167,0,2,6,6,86,86,86,86,86,172,173,'IDAAAA','PONAAA','VVVVxx'
+8127,9168,1,3,7,7,27,127,127,3127,8127,54,55,'PAAAAA','QONAAA','AAAAxx'
+5154,9169,0,2,4,14,54,154,1154,154,5154,108,109,'GQAAAA','RONAAA','HHHHxx'
+4491,9170,1,3,1,11,91,491,491,4491,4491,182,183,'TQAAAA','SONAAA','OOOOxx'
+7423,9171,1,3,3,3,23,423,1423,2423,7423,46,47,'NZAAAA','TONAAA','VVVVxx'
+6441,9172,1,1,1,1,41,441,441,1441,6441,82,83,'TNAAAA','UONAAA','AAAAxx'
+2920,9173,0,0,0,0,20,920,920,2920,2920,40,41,'IIAAAA','VONAAA','HHHHxx'
+6386,9174,0,2,6,6,86,386,386,1386,6386,172,173,'QLAAAA','WONAAA','OOOOxx'
+9744,9175,0,0,4,4,44,744,1744,4744,9744,88,89,'UKAAAA','XONAAA','VVVVxx'
+2667,9176,1,3,7,7,67,667,667,2667,2667,134,135,'PYAAAA','YONAAA','AAAAxx'
+5754,9177,0,2,4,14,54,754,1754,754,5754,108,109,'INAAAA','ZONAAA','HHHHxx'
+4645,9178,1,1,5,5,45,645,645,4645,4645,90,91,'RWAAAA','APNAAA','OOOOxx'
+4327,9179,1,3,7,7,27,327,327,4327,4327,54,55,'LKAAAA','BPNAAA','VVVVxx'
+843,9180,1,3,3,3,43,843,843,843,843,86,87,'LGAAAA','CPNAAA','AAAAxx'
+4085,9181,1,1,5,5,85,85,85,4085,4085,170,171,'DBAAAA','DPNAAA','HHHHxx'
+2849,9182,1,1,9,9,49,849,849,2849,2849,98,99,'PFAAAA','EPNAAA','OOOOxx'
+5734,9183,0,2,4,14,34,734,1734,734,5734,68,69,'OMAAAA','FPNAAA','VVVVxx'
+5307,9184,1,3,7,7,7,307,1307,307,5307,14,15,'DWAAAA','GPNAAA','AAAAxx'
+8433,9185,1,1,3,13,33,433,433,3433,8433,66,67,'JMAAAA','HPNAAA','HHHHxx'
+3031,9186,1,3,1,11,31,31,1031,3031,3031,62,63,'PMAAAA','IPNAAA','OOOOxx'
+5714,9187,0,2,4,14,14,714,1714,714,5714,28,29,'ULAAAA','JPNAAA','VVVVxx'
+5969,9188,1,1,9,9,69,969,1969,969,5969,138,139,'PVAAAA','KPNAAA','AAAAxx'
+2532,9189,0,0,2,12,32,532,532,2532,2532,64,65,'KTAAAA','LPNAAA','HHHHxx'
+5219,9190,1,3,9,19,19,219,1219,219,5219,38,39,'TSAAAA','MPNAAA','OOOOxx'
+7343,9191,1,3,3,3,43,343,1343,2343,7343,86,87,'LWAAAA','NPNAAA','VVVVxx'
+9089,9192,1,1,9,9,89,89,1089,4089,9089,178,179,'PLAAAA','OPNAAA','AAAAxx'
+9337,9193,1,1,7,17,37,337,1337,4337,9337,74,75,'DVAAAA','PPNAAA','HHHHxx'
+5131,9194,1,3,1,11,31,131,1131,131,5131,62,63,'JPAAAA','QPNAAA','OOOOxx'
+6253,9195,1,1,3,13,53,253,253,1253,6253,106,107,'NGAAAA','RPNAAA','VVVVxx'
+5140,9196,0,0,0,0,40,140,1140,140,5140,80,81,'SPAAAA','SPNAAA','AAAAxx'
+2953,9197,1,1,3,13,53,953,953,2953,2953,106,107,'PJAAAA','TPNAAA','HHHHxx'
+4293,9198,1,1,3,13,93,293,293,4293,4293,186,187,'DJAAAA','UPNAAA','OOOOxx'
+9974,9199,0,2,4,14,74,974,1974,4974,9974,148,149,'QTAAAA','VPNAAA','VVVVxx'
+5061,9200,1,1,1,1,61,61,1061,61,5061,122,123,'RMAAAA','WPNAAA','AAAAxx'
+8570,9201,0,2,0,10,70,570,570,3570,8570,140,141,'QRAAAA','XPNAAA','HHHHxx'
+9504,9202,0,0,4,4,4,504,1504,4504,9504,8,9,'OBAAAA','YPNAAA','OOOOxx'
+604,9203,0,0,4,4,4,604,604,604,604,8,9,'GXAAAA','ZPNAAA','VVVVxx'
+4991,9204,1,3,1,11,91,991,991,4991,4991,182,183,'ZJAAAA','AQNAAA','AAAAxx'
+880,9205,0,0,0,0,80,880,880,880,880,160,161,'WHAAAA','BQNAAA','HHHHxx'
+3861,9206,1,1,1,1,61,861,1861,3861,3861,122,123,'NSAAAA','CQNAAA','OOOOxx'
+8262,9207,0,2,2,2,62,262,262,3262,8262,124,125,'UFAAAA','DQNAAA','VVVVxx'
+5689,9208,1,1,9,9,89,689,1689,689,5689,178,179,'VKAAAA','EQNAAA','AAAAxx'
+1793,9209,1,1,3,13,93,793,1793,1793,1793,186,187,'ZQAAAA','FQNAAA','HHHHxx'
+2661,9210,1,1,1,1,61,661,661,2661,2661,122,123,'JYAAAA','GQNAAA','OOOOxx'
+7954,9211,0,2,4,14,54,954,1954,2954,7954,108,109,'YTAAAA','HQNAAA','VVVVxx'
+1874,9212,0,2,4,14,74,874,1874,1874,1874,148,149,'CUAAAA','IQNAAA','AAAAxx'
+2982,9213,0,2,2,2,82,982,982,2982,2982,164,165,'SKAAAA','JQNAAA','HHHHxx'
+331,9214,1,3,1,11,31,331,331,331,331,62,63,'TMAAAA','KQNAAA','OOOOxx'
+5021,9215,1,1,1,1,21,21,1021,21,5021,42,43,'DLAAAA','LQNAAA','VVVVxx'
+9894,9216,0,2,4,14,94,894,1894,4894,9894,188,189,'OQAAAA','MQNAAA','AAAAxx'
+7709,9217,1,1,9,9,9,709,1709,2709,7709,18,19,'NKAAAA','NQNAAA','HHHHxx'
+4980,9218,0,0,0,0,80,980,980,4980,4980,160,161,'OJAAAA','OQNAAA','OOOOxx'
+8249,9219,1,1,9,9,49,249,249,3249,8249,98,99,'HFAAAA','PQNAAA','VVVVxx'
+7120,9220,0,0,0,0,20,120,1120,2120,7120,40,41,'WNAAAA','QQNAAA','AAAAxx'
+7464,9221,0,0,4,4,64,464,1464,2464,7464,128,129,'CBAAAA','RQNAAA','HHHHxx'
+8086,9222,0,2,6,6,86,86,86,3086,8086,172,173,'AZAAAA','SQNAAA','OOOOxx'
+3509,9223,1,1,9,9,9,509,1509,3509,3509,18,19,'ZEAAAA','TQNAAA','VVVVxx'
+3902,9224,0,2,2,2,2,902,1902,3902,3902,4,5,'CUAAAA','UQNAAA','AAAAxx'
+9907,9225,1,3,7,7,7,907,1907,4907,9907,14,15,'BRAAAA','VQNAAA','HHHHxx'
+6278,9226,0,2,8,18,78,278,278,1278,6278,156,157,'MHAAAA','WQNAAA','OOOOxx'
+9316,9227,0,0,6,16,16,316,1316,4316,9316,32,33,'IUAAAA','XQNAAA','VVVVxx'
+2824,9228,0,0,4,4,24,824,824,2824,2824,48,49,'QEAAAA','YQNAAA','AAAAxx'
+1558,9229,0,2,8,18,58,558,1558,1558,1558,116,117,'YHAAAA','ZQNAAA','HHHHxx'
+5436,9230,0,0,6,16,36,436,1436,436,5436,72,73,'CBAAAA','ARNAAA','OOOOxx'
+1161,9231,1,1,1,1,61,161,1161,1161,1161,122,123,'RSAAAA','BRNAAA','VVVVxx'
+7569,9232,1,1,9,9,69,569,1569,2569,7569,138,139,'DFAAAA','CRNAAA','AAAAxx'
+9614,9233,0,2,4,14,14,614,1614,4614,9614,28,29,'UFAAAA','DRNAAA','HHHHxx'
+6970,9234,0,2,0,10,70,970,970,1970,6970,140,141,'CIAAAA','ERNAAA','OOOOxx'
+2422,9235,0,2,2,2,22,422,422,2422,2422,44,45,'EPAAAA','FRNAAA','VVVVxx'
+8860,9236,0,0,0,0,60,860,860,3860,8860,120,121,'UCAAAA','GRNAAA','AAAAxx'
+9912,9237,0,0,2,12,12,912,1912,4912,9912,24,25,'GRAAAA','HRNAAA','HHHHxx'
+1109,9238,1,1,9,9,9,109,1109,1109,1109,18,19,'RQAAAA','IRNAAA','OOOOxx'
+3286,9239,0,2,6,6,86,286,1286,3286,3286,172,173,'KWAAAA','JRNAAA','VVVVxx'
+2277,9240,1,1,7,17,77,277,277,2277,2277,154,155,'PJAAAA','KRNAAA','AAAAxx'
+8656,9241,0,0,6,16,56,656,656,3656,8656,112,113,'YUAAAA','LRNAAA','HHHHxx'
+4656,9242,0,0,6,16,56,656,656,4656,4656,112,113,'CXAAAA','MRNAAA','OOOOxx'
+6965,9243,1,1,5,5,65,965,965,1965,6965,130,131,'XHAAAA','NRNAAA','VVVVxx'
+7591,9244,1,3,1,11,91,591,1591,2591,7591,182,183,'ZFAAAA','ORNAAA','AAAAxx'
+4883,9245,1,3,3,3,83,883,883,4883,4883,166,167,'VFAAAA','PRNAAA','HHHHxx'
+452,9246,0,0,2,12,52,452,452,452,452,104,105,'KRAAAA','QRNAAA','OOOOxx'
+4018,9247,0,2,8,18,18,18,18,4018,4018,36,37,'OYAAAA','RRNAAA','VVVVxx'
+4066,9248,0,2,6,6,66,66,66,4066,4066,132,133,'KAAAAA','SRNAAA','AAAAxx'
+6480,9249,0,0,0,0,80,480,480,1480,6480,160,161,'GPAAAA','TRNAAA','HHHHxx'
+8634,9250,0,2,4,14,34,634,634,3634,8634,68,69,'CUAAAA','URNAAA','OOOOxx'
+9387,9251,1,3,7,7,87,387,1387,4387,9387,174,175,'BXAAAA','VRNAAA','VVVVxx'
+3476,9252,0,0,6,16,76,476,1476,3476,3476,152,153,'SDAAAA','WRNAAA','AAAAxx'
+5995,9253,1,3,5,15,95,995,1995,995,5995,190,191,'PWAAAA','XRNAAA','HHHHxx'
+9677,9254,1,1,7,17,77,677,1677,4677,9677,154,155,'FIAAAA','YRNAAA','OOOOxx'
+3884,9255,0,0,4,4,84,884,1884,3884,3884,168,169,'KTAAAA','ZRNAAA','VVVVxx'
+6500,9256,0,0,0,0,0,500,500,1500,6500,0,1,'AQAAAA','ASNAAA','AAAAxx'
+7972,9257,0,0,2,12,72,972,1972,2972,7972,144,145,'QUAAAA','BSNAAA','HHHHxx'
+5281,9258,1,1,1,1,81,281,1281,281,5281,162,163,'DVAAAA','CSNAAA','OOOOxx'
+1288,9259,0,0,8,8,88,288,1288,1288,1288,176,177,'OXAAAA','DSNAAA','VVVVxx'
+4366,9260,0,2,6,6,66,366,366,4366,4366,132,133,'YLAAAA','ESNAAA','AAAAxx'
+6557,9261,1,1,7,17,57,557,557,1557,6557,114,115,'FSAAAA','FSNAAA','HHHHxx'
+7086,9262,0,2,6,6,86,86,1086,2086,7086,172,173,'OMAAAA','GSNAAA','OOOOxx'
+6588,9263,0,0,8,8,88,588,588,1588,6588,176,177,'KTAAAA','HSNAAA','VVVVxx'
+9062,9264,0,2,2,2,62,62,1062,4062,9062,124,125,'OKAAAA','ISNAAA','AAAAxx'
+9230,9265,0,2,0,10,30,230,1230,4230,9230,60,61,'ARAAAA','JSNAAA','HHHHxx'
+7672,9266,0,0,2,12,72,672,1672,2672,7672,144,145,'CJAAAA','KSNAAA','OOOOxx'
+5204,9267,0,0,4,4,4,204,1204,204,5204,8,9,'ESAAAA','LSNAAA','VVVVxx'
+2836,9268,0,0,6,16,36,836,836,2836,2836,72,73,'CFAAAA','MSNAAA','AAAAxx'
+7165,9269,1,1,5,5,65,165,1165,2165,7165,130,131,'PPAAAA','NSNAAA','HHHHxx'
+971,9270,1,3,1,11,71,971,971,971,971,142,143,'JLAAAA','OSNAAA','OOOOxx'
+3851,9271,1,3,1,11,51,851,1851,3851,3851,102,103,'DSAAAA','PSNAAA','VVVVxx'
+8593,9272,1,1,3,13,93,593,593,3593,8593,186,187,'NSAAAA','QSNAAA','AAAAxx'
+7742,9273,0,2,2,2,42,742,1742,2742,7742,84,85,'ULAAAA','RSNAAA','HHHHxx'
+2887,9274,1,3,7,7,87,887,887,2887,2887,174,175,'BHAAAA','SSNAAA','OOOOxx'
+8479,9275,1,3,9,19,79,479,479,3479,8479,158,159,'DOAAAA','TSNAAA','VVVVxx'
+9514,9276,0,2,4,14,14,514,1514,4514,9514,28,29,'YBAAAA','USNAAA','AAAAxx'
+273,9277,1,1,3,13,73,273,273,273,273,146,147,'NKAAAA','VSNAAA','HHHHxx'
+2938,9278,0,2,8,18,38,938,938,2938,2938,76,77,'AJAAAA','WSNAAA','OOOOxx'
+9793,9279,1,1,3,13,93,793,1793,4793,9793,186,187,'RMAAAA','XSNAAA','VVVVxx'
+8050,9280,0,2,0,10,50,50,50,3050,8050,100,101,'QXAAAA','YSNAAA','AAAAxx'
+6702,9281,0,2,2,2,2,702,702,1702,6702,4,5,'UXAAAA','ZSNAAA','HHHHxx'
+7290,9282,0,2,0,10,90,290,1290,2290,7290,180,181,'KUAAAA','ATNAAA','OOOOxx'
+1837,9283,1,1,7,17,37,837,1837,1837,1837,74,75,'RSAAAA','BTNAAA','VVVVxx'
+3206,9284,0,2,6,6,6,206,1206,3206,3206,12,13,'ITAAAA','CTNAAA','AAAAxx'
+4925,9285,1,1,5,5,25,925,925,4925,4925,50,51,'LHAAAA','DTNAAA','HHHHxx'
+5066,9286,0,2,6,6,66,66,1066,66,5066,132,133,'WMAAAA','ETNAAA','OOOOxx'
+3401,9287,1,1,1,1,1,401,1401,3401,3401,2,3,'VAAAAA','FTNAAA','VVVVxx'
+3474,9288,0,2,4,14,74,474,1474,3474,3474,148,149,'QDAAAA','GTNAAA','AAAAxx'
+57,9289,1,1,7,17,57,57,57,57,57,114,115,'FCAAAA','HTNAAA','HHHHxx'
+2082,9290,0,2,2,2,82,82,82,2082,2082,164,165,'CCAAAA','ITNAAA','OOOOxx'
+100,9291,0,0,0,0,0,100,100,100,100,0,1,'WDAAAA','JTNAAA','VVVVxx'
+9665,9292,1,1,5,5,65,665,1665,4665,9665,130,131,'THAAAA','KTNAAA','AAAAxx'
+8284,9293,0,0,4,4,84,284,284,3284,8284,168,169,'QGAAAA','LTNAAA','HHHHxx'
+958,9294,0,2,8,18,58,958,958,958,958,116,117,'WKAAAA','MTNAAA','OOOOxx'
+5282,9295,0,2,2,2,82,282,1282,282,5282,164,165,'EVAAAA','NTNAAA','VVVVxx'
+4257,9296,1,1,7,17,57,257,257,4257,4257,114,115,'THAAAA','OTNAAA','AAAAxx'
+3160,9297,0,0,0,0,60,160,1160,3160,3160,120,121,'ORAAAA','PTNAAA','HHHHxx'
+8449,9298,1,1,9,9,49,449,449,3449,8449,98,99,'ZMAAAA','QTNAAA','OOOOxx'
+500,9299,0,0,0,0,0,500,500,500,500,0,1,'GTAAAA','RTNAAA','VVVVxx'
+6432,9300,0,0,2,12,32,432,432,1432,6432,64,65,'KNAAAA','STNAAA','AAAAxx'
+6220,9301,0,0,0,0,20,220,220,1220,6220,40,41,'GFAAAA','TTNAAA','HHHHxx'
+7233,9302,1,1,3,13,33,233,1233,2233,7233,66,67,'FSAAAA','UTNAAA','OOOOxx'
+2723,9303,1,3,3,3,23,723,723,2723,2723,46,47,'TAAAAA','VTNAAA','VVVVxx'
+1899,9304,1,3,9,19,99,899,1899,1899,1899,198,199,'BVAAAA','WTNAAA','AAAAxx'
+7158,9305,0,2,8,18,58,158,1158,2158,7158,116,117,'IPAAAA','XTNAAA','HHHHxx'
+202,9306,0,2,2,2,2,202,202,202,202,4,5,'UHAAAA','YTNAAA','OOOOxx'
+2286,9307,0,2,6,6,86,286,286,2286,2286,172,173,'YJAAAA','ZTNAAA','VVVVxx'
+5356,9308,0,0,6,16,56,356,1356,356,5356,112,113,'AYAAAA','AUNAAA','AAAAxx'
+3809,9309,1,1,9,9,9,809,1809,3809,3809,18,19,'NQAAAA','BUNAAA','HHHHxx'
+3979,9310,1,3,9,19,79,979,1979,3979,3979,158,159,'BXAAAA','CUNAAA','OOOOxx'
+8359,9311,1,3,9,19,59,359,359,3359,8359,118,119,'NJAAAA','DUNAAA','VVVVxx'
+3479,9312,1,3,9,19,79,479,1479,3479,3479,158,159,'VDAAAA','EUNAAA','AAAAxx'
+4895,9313,1,3,5,15,95,895,895,4895,4895,190,191,'HGAAAA','FUNAAA','HHHHxx'
+6059,9314,1,3,9,19,59,59,59,1059,6059,118,119,'BZAAAA','GUNAAA','OOOOxx'
+9560,9315,0,0,0,0,60,560,1560,4560,9560,120,121,'SDAAAA','HUNAAA','VVVVxx'
+6756,9316,0,0,6,16,56,756,756,1756,6756,112,113,'WZAAAA','IUNAAA','AAAAxx'
+7504,9317,0,0,4,4,4,504,1504,2504,7504,8,9,'QCAAAA','JUNAAA','HHHHxx'
+6762,9318,0,2,2,2,62,762,762,1762,6762,124,125,'CAAAAA','KUNAAA','OOOOxx'
+5304,9319,0,0,4,4,4,304,1304,304,5304,8,9,'AWAAAA','LUNAAA','VVVVxx'
+9533,9320,1,1,3,13,33,533,1533,4533,9533,66,67,'RCAAAA','MUNAAA','AAAAxx'
+6649,9321,1,1,9,9,49,649,649,1649,6649,98,99,'TVAAAA','NUNAAA','HHHHxx'
+38,9322,0,2,8,18,38,38,38,38,38,76,77,'MBAAAA','OUNAAA','OOOOxx'
+5713,9323,1,1,3,13,13,713,1713,713,5713,26,27,'TLAAAA','PUNAAA','VVVVxx'
+3000,9324,0,0,0,0,0,0,1000,3000,3000,0,1,'KLAAAA','QUNAAA','AAAAxx'
+3738,9325,0,2,8,18,38,738,1738,3738,3738,76,77,'UNAAAA','RUNAAA','HHHHxx'
+3327,9326,1,3,7,7,27,327,1327,3327,3327,54,55,'ZXAAAA','SUNAAA','OOOOxx'
+3922,9327,0,2,2,2,22,922,1922,3922,3922,44,45,'WUAAAA','TUNAAA','VVVVxx'
+9245,9328,1,1,5,5,45,245,1245,4245,9245,90,91,'PRAAAA','UUNAAA','AAAAxx'
+2172,9329,0,0,2,12,72,172,172,2172,2172,144,145,'OFAAAA','VUNAAA','HHHHxx'
+7128,9330,0,0,8,8,28,128,1128,2128,7128,56,57,'EOAAAA','WUNAAA','OOOOxx'
+1195,9331,1,3,5,15,95,195,1195,1195,1195,190,191,'ZTAAAA','XUNAAA','VVVVxx'
+8445,9332,1,1,5,5,45,445,445,3445,8445,90,91,'VMAAAA','YUNAAA','AAAAxx'
+8638,9333,0,2,8,18,38,638,638,3638,8638,76,77,'GUAAAA','ZUNAAA','HHHHxx'
+1249,9334,1,1,9,9,49,249,1249,1249,1249,98,99,'BWAAAA','AVNAAA','OOOOxx'
+8659,9335,1,3,9,19,59,659,659,3659,8659,118,119,'BVAAAA','BVNAAA','VVVVxx'
+3556,9336,0,0,6,16,56,556,1556,3556,3556,112,113,'UGAAAA','CVNAAA','AAAAxx'
+3347,9337,1,3,7,7,47,347,1347,3347,3347,94,95,'TYAAAA','DVNAAA','HHHHxx'
+3260,9338,0,0,0,0,60,260,1260,3260,3260,120,121,'KVAAAA','EVNAAA','OOOOxx'
+5139,9339,1,3,9,19,39,139,1139,139,5139,78,79,'RPAAAA','FVNAAA','VVVVxx'
+9991,9340,1,3,1,11,91,991,1991,4991,9991,182,183,'HUAAAA','GVNAAA','AAAAxx'
+5499,9341,1,3,9,19,99,499,1499,499,5499,198,199,'NDAAAA','HVNAAA','HHHHxx'
+8082,9342,0,2,2,2,82,82,82,3082,8082,164,165,'WYAAAA','IVNAAA','OOOOxx'
+1640,9343,0,0,0,0,40,640,1640,1640,1640,80,81,'CLAAAA','JVNAAA','VVVVxx'
+8726,9344,0,2,6,6,26,726,726,3726,8726,52,53,'QXAAAA','KVNAAA','AAAAxx'
+2339,9345,1,3,9,19,39,339,339,2339,2339,78,79,'ZLAAAA','LVNAAA','HHHHxx'
+2601,9346,1,1,1,1,1,601,601,2601,2601,2,3,'BWAAAA','MVNAAA','OOOOxx'
+9940,9347,0,0,0,0,40,940,1940,4940,9940,80,81,'ISAAAA','NVNAAA','VVVVxx'
+4185,9348,1,1,5,5,85,185,185,4185,4185,170,171,'ZEAAAA','OVNAAA','AAAAxx'
+9546,9349,0,2,6,6,46,546,1546,4546,9546,92,93,'EDAAAA','PVNAAA','HHHHxx'
+5218,9350,0,2,8,18,18,218,1218,218,5218,36,37,'SSAAAA','QVNAAA','OOOOxx'
+4374,9351,0,2,4,14,74,374,374,4374,4374,148,149,'GMAAAA','RVNAAA','VVVVxx'
+288,9352,0,0,8,8,88,288,288,288,288,176,177,'CLAAAA','SVNAAA','AAAAxx'
+7445,9353,1,1,5,5,45,445,1445,2445,7445,90,91,'JAAAAA','TVNAAA','HHHHxx'
+1710,9354,0,2,0,10,10,710,1710,1710,1710,20,21,'UNAAAA','UVNAAA','OOOOxx'
+6409,9355,1,1,9,9,9,409,409,1409,6409,18,19,'NMAAAA','VVNAAA','VVVVxx'
+7982,9356,0,2,2,2,82,982,1982,2982,7982,164,165,'AVAAAA','WVNAAA','AAAAxx'
+4950,9357,0,2,0,10,50,950,950,4950,4950,100,101,'KIAAAA','XVNAAA','HHHHxx'
+9242,9358,0,2,2,2,42,242,1242,4242,9242,84,85,'MRAAAA','YVNAAA','OOOOxx'
+3272,9359,0,0,2,12,72,272,1272,3272,3272,144,145,'WVAAAA','ZVNAAA','VVVVxx'
+739,9360,1,3,9,19,39,739,739,739,739,78,79,'LCAAAA','AWNAAA','AAAAxx'
+5526,9361,0,2,6,6,26,526,1526,526,5526,52,53,'OEAAAA','BWNAAA','HHHHxx'
+8189,9362,1,1,9,9,89,189,189,3189,8189,178,179,'ZCAAAA','CWNAAA','OOOOxx'
+9106,9363,0,2,6,6,6,106,1106,4106,9106,12,13,'GMAAAA','DWNAAA','VVVVxx'
+9775,9364,1,3,5,15,75,775,1775,4775,9775,150,151,'ZLAAAA','EWNAAA','AAAAxx'
+4643,9365,1,3,3,3,43,643,643,4643,4643,86,87,'PWAAAA','FWNAAA','HHHHxx'
+8396,9366,0,0,6,16,96,396,396,3396,8396,192,193,'YKAAAA','GWNAAA','OOOOxx'
+3255,9367,1,3,5,15,55,255,1255,3255,3255,110,111,'FVAAAA','HWNAAA','VVVVxx'
+301,9368,1,1,1,1,1,301,301,301,301,2,3,'PLAAAA','IWNAAA','AAAAxx'
+6014,9369,0,2,4,14,14,14,14,1014,6014,28,29,'IXAAAA','JWNAAA','HHHHxx'
+6046,9370,0,2,6,6,46,46,46,1046,6046,92,93,'OYAAAA','KWNAAA','OOOOxx'
+984,9371,0,0,4,4,84,984,984,984,984,168,169,'WLAAAA','LWNAAA','VVVVxx'
+2420,9372,0,0,0,0,20,420,420,2420,2420,40,41,'CPAAAA','MWNAAA','AAAAxx'
+2922,9373,0,2,2,2,22,922,922,2922,2922,44,45,'KIAAAA','NWNAAA','HHHHxx'
+2317,9374,1,1,7,17,17,317,317,2317,2317,34,35,'DLAAAA','OWNAAA','OOOOxx'
+7332,9375,0,0,2,12,32,332,1332,2332,7332,64,65,'AWAAAA','PWNAAA','VVVVxx'
+6451,9376,1,3,1,11,51,451,451,1451,6451,102,103,'DOAAAA','QWNAAA','AAAAxx'
+2589,9377,1,1,9,9,89,589,589,2589,2589,178,179,'PVAAAA','RWNAAA','HHHHxx'
+4333,9378,1,1,3,13,33,333,333,4333,4333,66,67,'RKAAAA','SWNAAA','OOOOxx'
+8650,9379,0,2,0,10,50,650,650,3650,8650,100,101,'SUAAAA','TWNAAA','VVVVxx'
+6856,9380,0,0,6,16,56,856,856,1856,6856,112,113,'SDAAAA','UWNAAA','AAAAxx'
+4194,9381,0,2,4,14,94,194,194,4194,4194,188,189,'IFAAAA','VWNAAA','HHHHxx'
+6246,9382,0,2,6,6,46,246,246,1246,6246,92,93,'GGAAAA','WWNAAA','OOOOxx'
+4371,9383,1,3,1,11,71,371,371,4371,4371,142,143,'DMAAAA','XWNAAA','VVVVxx'
+1388,9384,0,0,8,8,88,388,1388,1388,1388,176,177,'KBAAAA','YWNAAA','AAAAxx'
+1056,9385,0,0,6,16,56,56,1056,1056,1056,112,113,'QOAAAA','ZWNAAA','HHHHxx'
+6041,9386,1,1,1,1,41,41,41,1041,6041,82,83,'JYAAAA','AXNAAA','OOOOxx'
+6153,9387,1,1,3,13,53,153,153,1153,6153,106,107,'RCAAAA','BXNAAA','VVVVxx'
+8450,9388,0,2,0,10,50,450,450,3450,8450,100,101,'ANAAAA','CXNAAA','AAAAxx'
+3469,9389,1,1,9,9,69,469,1469,3469,3469,138,139,'LDAAAA','DXNAAA','HHHHxx'
+5226,9390,0,2,6,6,26,226,1226,226,5226,52,53,'ATAAAA','EXNAAA','OOOOxx'
+8112,9391,0,0,2,12,12,112,112,3112,8112,24,25,'AAAAAA','FXNAAA','VVVVxx'
+647,9392,1,3,7,7,47,647,647,647,647,94,95,'XYAAAA','GXNAAA','AAAAxx'
+2567,9393,1,3,7,7,67,567,567,2567,2567,134,135,'TUAAAA','HXNAAA','HHHHxx'
+9064,9394,0,0,4,4,64,64,1064,4064,9064,128,129,'QKAAAA','IXNAAA','OOOOxx'
+5161,9395,1,1,1,1,61,161,1161,161,5161,122,123,'NQAAAA','JXNAAA','VVVVxx'
+5260,9396,0,0,0,0,60,260,1260,260,5260,120,121,'IUAAAA','KXNAAA','AAAAxx'
+8988,9397,0,0,8,8,88,988,988,3988,8988,176,177,'SHAAAA','LXNAAA','HHHHxx'
+9678,9398,0,2,8,18,78,678,1678,4678,9678,156,157,'GIAAAA','MXNAAA','OOOOxx'
+6853,9399,1,1,3,13,53,853,853,1853,6853,106,107,'PDAAAA','NXNAAA','VVVVxx'
+5294,9400,0,2,4,14,94,294,1294,294,5294,188,189,'QVAAAA','OXNAAA','AAAAxx'
+9864,9401,0,0,4,4,64,864,1864,4864,9864,128,129,'KPAAAA','PXNAAA','HHHHxx'
+8702,9402,0,2,2,2,2,702,702,3702,8702,4,5,'SWAAAA','QXNAAA','OOOOxx'
+1132,9403,0,0,2,12,32,132,1132,1132,1132,64,65,'ORAAAA','RXNAAA','VVVVxx'
+1524,9404,0,0,4,4,24,524,1524,1524,1524,48,49,'QGAAAA','SXNAAA','AAAAxx'
+4560,9405,0,0,0,0,60,560,560,4560,4560,120,121,'KTAAAA','TXNAAA','HHHHxx'
+2137,9406,1,1,7,17,37,137,137,2137,2137,74,75,'FEAAAA','UXNAAA','OOOOxx'
+3283,9407,1,3,3,3,83,283,1283,3283,3283,166,167,'HWAAAA','VXNAAA','VVVVxx'
+3377,9408,1,1,7,17,77,377,1377,3377,3377,154,155,'XZAAAA','WXNAAA','AAAAxx'
+2267,9409,1,3,7,7,67,267,267,2267,2267,134,135,'FJAAAA','XXNAAA','HHHHxx'
+8987,9410,1,3,7,7,87,987,987,3987,8987,174,175,'RHAAAA','YXNAAA','OOOOxx'
+6709,9411,1,1,9,9,9,709,709,1709,6709,18,19,'BYAAAA','ZXNAAA','VVVVxx'
+8059,9412,1,3,9,19,59,59,59,3059,8059,118,119,'ZXAAAA','AYNAAA','AAAAxx'
+3402,9413,0,2,2,2,2,402,1402,3402,3402,4,5,'WAAAAA','BYNAAA','HHHHxx'
+6443,9414,1,3,3,3,43,443,443,1443,6443,86,87,'VNAAAA','CYNAAA','OOOOxx'
+8858,9415,0,2,8,18,58,858,858,3858,8858,116,117,'SCAAAA','DYNAAA','VVVVxx'
+3974,9416,0,2,4,14,74,974,1974,3974,3974,148,149,'WWAAAA','EYNAAA','AAAAxx'
+3521,9417,1,1,1,1,21,521,1521,3521,3521,42,43,'LFAAAA','FYNAAA','HHHHxx'
+9509,9418,1,1,9,9,9,509,1509,4509,9509,18,19,'TBAAAA','GYNAAA','OOOOxx'
+5442,9419,0,2,2,2,42,442,1442,442,5442,84,85,'IBAAAA','HYNAAA','VVVVxx'
+8968,9420,0,0,8,8,68,968,968,3968,8968,136,137,'YGAAAA','IYNAAA','AAAAxx'
+333,9421,1,1,3,13,33,333,333,333,333,66,67,'VMAAAA','JYNAAA','HHHHxx'
+952,9422,0,0,2,12,52,952,952,952,952,104,105,'QKAAAA','KYNAAA','OOOOxx'
+7482,9423,0,2,2,2,82,482,1482,2482,7482,164,165,'UBAAAA','LYNAAA','VVVVxx'
+1486,9424,0,2,6,6,86,486,1486,1486,1486,172,173,'EFAAAA','MYNAAA','AAAAxx'
+1815,9425,1,3,5,15,15,815,1815,1815,1815,30,31,'VRAAAA','NYNAAA','HHHHxx'
+7937,9426,1,1,7,17,37,937,1937,2937,7937,74,75,'HTAAAA','OYNAAA','OOOOxx'
+1436,9427,0,0,6,16,36,436,1436,1436,1436,72,73,'GDAAAA','PYNAAA','VVVVxx'
+3470,9428,0,2,0,10,70,470,1470,3470,3470,140,141,'MDAAAA','QYNAAA','AAAAxx'
+8195,9429,1,3,5,15,95,195,195,3195,8195,190,191,'FDAAAA','RYNAAA','HHHHxx'
+6906,9430,0,2,6,6,6,906,906,1906,6906,12,13,'QFAAAA','SYNAAA','OOOOxx'
+2539,9431,1,3,9,19,39,539,539,2539,2539,78,79,'RTAAAA','TYNAAA','VVVVxx'
+5988,9432,0,0,8,8,88,988,1988,988,5988,176,177,'IWAAAA','UYNAAA','AAAAxx'
+8908,9433,0,0,8,8,8,908,908,3908,8908,16,17,'QEAAAA','VYNAAA','HHHHxx'
+2319,9434,1,3,9,19,19,319,319,2319,2319,38,39,'FLAAAA','WYNAAA','OOOOxx'
+3263,9435,1,3,3,3,63,263,1263,3263,3263,126,127,'NVAAAA','XYNAAA','VVVVxx'
+4039,9436,1,3,9,19,39,39,39,4039,4039,78,79,'JZAAAA','YYNAAA','AAAAxx'
+6373,9437,1,1,3,13,73,373,373,1373,6373,146,147,'DLAAAA','ZYNAAA','HHHHxx'
+1168,9438,0,0,8,8,68,168,1168,1168,1168,136,137,'YSAAAA','AZNAAA','OOOOxx'
+8338,9439,0,2,8,18,38,338,338,3338,8338,76,77,'SIAAAA','BZNAAA','VVVVxx'
+1172,9440,0,0,2,12,72,172,1172,1172,1172,144,145,'CTAAAA','CZNAAA','AAAAxx'
+200,9441,0,0,0,0,0,200,200,200,200,0,1,'SHAAAA','DZNAAA','HHHHxx'
+6355,9442,1,3,5,15,55,355,355,1355,6355,110,111,'LKAAAA','EZNAAA','OOOOxx'
+7768,9443,0,0,8,8,68,768,1768,2768,7768,136,137,'UMAAAA','FZNAAA','VVVVxx'
+25,9444,1,1,5,5,25,25,25,25,25,50,51,'ZAAAAA','GZNAAA','AAAAxx'
+7144,9445,0,0,4,4,44,144,1144,2144,7144,88,89,'UOAAAA','HZNAAA','HHHHxx'
+8671,9446,1,3,1,11,71,671,671,3671,8671,142,143,'NVAAAA','IZNAAA','OOOOxx'
+9163,9447,1,3,3,3,63,163,1163,4163,9163,126,127,'LOAAAA','JZNAAA','VVVVxx'
+8889,9448,1,1,9,9,89,889,889,3889,8889,178,179,'XDAAAA','KZNAAA','AAAAxx'
+5950,9449,0,2,0,10,50,950,1950,950,5950,100,101,'WUAAAA','LZNAAA','HHHHxx'
+6163,9450,1,3,3,3,63,163,163,1163,6163,126,127,'BDAAAA','MZNAAA','OOOOxx'
+8119,9451,1,3,9,19,19,119,119,3119,8119,38,39,'HAAAAA','NZNAAA','VVVVxx'
+1416,9452,0,0,6,16,16,416,1416,1416,1416,32,33,'MCAAAA','OZNAAA','AAAAxx'
+4132,9453,0,0,2,12,32,132,132,4132,4132,64,65,'YCAAAA','PZNAAA','HHHHxx'
+2294,9454,0,2,4,14,94,294,294,2294,2294,188,189,'GKAAAA','QZNAAA','OOOOxx'
+9094,9455,0,2,4,14,94,94,1094,4094,9094,188,189,'ULAAAA','RZNAAA','VVVVxx'
+4168,9456,0,0,8,8,68,168,168,4168,4168,136,137,'IEAAAA','SZNAAA','AAAAxx'
+9108,9457,0,0,8,8,8,108,1108,4108,9108,16,17,'IMAAAA','TZNAAA','HHHHxx'
+5706,9458,0,2,6,6,6,706,1706,706,5706,12,13,'MLAAAA','UZNAAA','OOOOxx'
+2231,9459,1,3,1,11,31,231,231,2231,2231,62,63,'VHAAAA','VZNAAA','VVVVxx'
+2173,9460,1,1,3,13,73,173,173,2173,2173,146,147,'PFAAAA','WZNAAA','AAAAxx'
+90,9461,0,2,0,10,90,90,90,90,90,180,181,'MDAAAA','XZNAAA','HHHHxx'
+9996,9462,0,0,6,16,96,996,1996,4996,9996,192,193,'MUAAAA','YZNAAA','OOOOxx'
+330,9463,0,2,0,10,30,330,330,330,330,60,61,'SMAAAA','ZZNAAA','VVVVxx'
+2052,9464,0,0,2,12,52,52,52,2052,2052,104,105,'YAAAAA','AAOAAA','AAAAxx'
+1093,9465,1,1,3,13,93,93,1093,1093,1093,186,187,'BQAAAA','BAOAAA','HHHHxx'
+5817,9466,1,1,7,17,17,817,1817,817,5817,34,35,'TPAAAA','CAOAAA','OOOOxx'
+1559,9467,1,3,9,19,59,559,1559,1559,1559,118,119,'ZHAAAA','DAOAAA','VVVVxx'
+8405,9468,1,1,5,5,5,405,405,3405,8405,10,11,'HLAAAA','EAOAAA','AAAAxx'
+9962,9469,0,2,2,2,62,962,1962,4962,9962,124,125,'ETAAAA','FAOAAA','HHHHxx'
+9461,9470,1,1,1,1,61,461,1461,4461,9461,122,123,'XZAAAA','GAOAAA','OOOOxx'
+3028,9471,0,0,8,8,28,28,1028,3028,3028,56,57,'MMAAAA','HAOAAA','VVVVxx'
+6814,9472,0,2,4,14,14,814,814,1814,6814,28,29,'CCAAAA','IAOAAA','AAAAxx'
+9587,9473,1,3,7,7,87,587,1587,4587,9587,174,175,'TEAAAA','JAOAAA','HHHHxx'
+6863,9474,1,3,3,3,63,863,863,1863,6863,126,127,'ZDAAAA','KAOAAA','OOOOxx'
+4963,9475,1,3,3,3,63,963,963,4963,4963,126,127,'XIAAAA','LAOAAA','VVVVxx'
+7811,9476,1,3,1,11,11,811,1811,2811,7811,22,23,'LOAAAA','MAOAAA','AAAAxx'
+7608,9477,0,0,8,8,8,608,1608,2608,7608,16,17,'QGAAAA','NAOAAA','HHHHxx'
+5321,9478,1,1,1,1,21,321,1321,321,5321,42,43,'RWAAAA','OAOAAA','OOOOxx'
+9971,9479,1,3,1,11,71,971,1971,4971,9971,142,143,'NTAAAA','PAOAAA','VVVVxx'
+6161,9480,1,1,1,1,61,161,161,1161,6161,122,123,'ZCAAAA','QAOAAA','AAAAxx'
+2181,9481,1,1,1,1,81,181,181,2181,2181,162,163,'XFAAAA','RAOAAA','HHHHxx'
+3828,9482,0,0,8,8,28,828,1828,3828,3828,56,57,'GRAAAA','SAOAAA','OOOOxx'
+348,9483,0,0,8,8,48,348,348,348,348,96,97,'KNAAAA','TAOAAA','VVVVxx'
+5459,9484,1,3,9,19,59,459,1459,459,5459,118,119,'ZBAAAA','UAOAAA','AAAAxx'
+9406,9485,0,2,6,6,6,406,1406,4406,9406,12,13,'UXAAAA','VAOAAA','HHHHxx'
+9852,9486,0,0,2,12,52,852,1852,4852,9852,104,105,'YOAAAA','WAOAAA','OOOOxx'
+3095,9487,1,3,5,15,95,95,1095,3095,3095,190,191,'BPAAAA','XAOAAA','VVVVxx'
+5597,9488,1,1,7,17,97,597,1597,597,5597,194,195,'HHAAAA','YAOAAA','AAAAxx'
+8841,9489,1,1,1,1,41,841,841,3841,8841,82,83,'BCAAAA','ZAOAAA','HHHHxx'
+3536,9490,0,0,6,16,36,536,1536,3536,3536,72,73,'AGAAAA','ABOAAA','OOOOxx'
+4009,9491,1,1,9,9,9,9,9,4009,4009,18,19,'FYAAAA','BBOAAA','VVVVxx'
+7366,9492,0,2,6,6,66,366,1366,2366,7366,132,133,'IXAAAA','CBOAAA','AAAAxx'
+7327,9493,1,3,7,7,27,327,1327,2327,7327,54,55,'VVAAAA','DBOAAA','HHHHxx'
+1613,9494,1,1,3,13,13,613,1613,1613,1613,26,27,'BKAAAA','EBOAAA','OOOOxx'
+8619,9495,1,3,9,19,19,619,619,3619,8619,38,39,'NTAAAA','FBOAAA','VVVVxx'
+4880,9496,0,0,0,0,80,880,880,4880,4880,160,161,'SFAAAA','GBOAAA','AAAAxx'
+1552,9497,0,0,2,12,52,552,1552,1552,1552,104,105,'SHAAAA','HBOAAA','HHHHxx'
+7636,9498,0,0,6,16,36,636,1636,2636,7636,72,73,'SHAAAA','IBOAAA','OOOOxx'
+8397,9499,1,1,7,17,97,397,397,3397,8397,194,195,'ZKAAAA','JBOAAA','VVVVxx'
+6224,9500,0,0,4,4,24,224,224,1224,6224,48,49,'KFAAAA','KBOAAA','AAAAxx'
+9102,9501,0,2,2,2,2,102,1102,4102,9102,4,5,'CMAAAA','LBOAAA','HHHHxx'
+7906,9502,0,2,6,6,6,906,1906,2906,7906,12,13,'CSAAAA','MBOAAA','OOOOxx'
+9467,9503,1,3,7,7,67,467,1467,4467,9467,134,135,'DAAAAA','NBOAAA','VVVVxx'
+828,9504,0,0,8,8,28,828,828,828,828,56,57,'WFAAAA','OBOAAA','AAAAxx'
+9585,9505,1,1,5,5,85,585,1585,4585,9585,170,171,'REAAAA','PBOAAA','HHHHxx'
+925,9506,1,1,5,5,25,925,925,925,925,50,51,'PJAAAA','QBOAAA','OOOOxx'
+7375,9507,1,3,5,15,75,375,1375,2375,7375,150,151,'RXAAAA','RBOAAA','VVVVxx'
+4027,9508,1,3,7,7,27,27,27,4027,4027,54,55,'XYAAAA','SBOAAA','AAAAxx'
+766,9509,0,2,6,6,66,766,766,766,766,132,133,'MDAAAA','TBOAAA','HHHHxx'
+5633,9510,1,1,3,13,33,633,1633,633,5633,66,67,'RIAAAA','UBOAAA','OOOOxx'
+5648,9511,0,0,8,8,48,648,1648,648,5648,96,97,'GJAAAA','VBOAAA','VVVVxx'
+148,9512,0,0,8,8,48,148,148,148,148,96,97,'SFAAAA','WBOAAA','AAAAxx'
+2072,9513,0,0,2,12,72,72,72,2072,2072,144,145,'SBAAAA','XBOAAA','HHHHxx'
+431,9514,1,3,1,11,31,431,431,431,431,62,63,'PQAAAA','YBOAAA','OOOOxx'
+1711,9515,1,3,1,11,11,711,1711,1711,1711,22,23,'VNAAAA','ZBOAAA','VVVVxx'
+9378,9516,0,2,8,18,78,378,1378,4378,9378,156,157,'SWAAAA','ACOAAA','AAAAxx'
+6776,9517,0,0,6,16,76,776,776,1776,6776,152,153,'QAAAAA','BCOAAA','HHHHxx'
+6842,9518,0,2,2,2,42,842,842,1842,6842,84,85,'EDAAAA','CCOAAA','OOOOxx'
+2656,9519,0,0,6,16,56,656,656,2656,2656,112,113,'EYAAAA','DCOAAA','VVVVxx'
+3116,9520,0,0,6,16,16,116,1116,3116,3116,32,33,'WPAAAA','ECOAAA','AAAAxx'
+7904,9521,0,0,4,4,4,904,1904,2904,7904,8,9,'ASAAAA','FCOAAA','HHHHxx'
+3529,9522,1,1,9,9,29,529,1529,3529,3529,58,59,'TFAAAA','GCOAAA','OOOOxx'
+3240,9523,0,0,0,0,40,240,1240,3240,3240,80,81,'QUAAAA','HCOAAA','VVVVxx'
+5801,9524,1,1,1,1,1,801,1801,801,5801,2,3,'DPAAAA','ICOAAA','AAAAxx'
+4090,9525,0,2,0,10,90,90,90,4090,4090,180,181,'IBAAAA','JCOAAA','HHHHxx'
+7687,9526,1,3,7,7,87,687,1687,2687,7687,174,175,'RJAAAA','KCOAAA','OOOOxx'
+9711,9527,1,3,1,11,11,711,1711,4711,9711,22,23,'NJAAAA','LCOAAA','VVVVxx'
+4760,9528,0,0,0,0,60,760,760,4760,4760,120,121,'CBAAAA','MCOAAA','AAAAxx'
+5524,9529,0,0,4,4,24,524,1524,524,5524,48,49,'MEAAAA','NCOAAA','HHHHxx'
+2251,9530,1,3,1,11,51,251,251,2251,2251,102,103,'PIAAAA','OCOAAA','OOOOxx'
+1511,9531,1,3,1,11,11,511,1511,1511,1511,22,23,'DGAAAA','PCOAAA','VVVVxx'
+5991,9532,1,3,1,11,91,991,1991,991,5991,182,183,'LWAAAA','QCOAAA','AAAAxx'
+7808,9533,0,0,8,8,8,808,1808,2808,7808,16,17,'IOAAAA','RCOAAA','HHHHxx'
+8708,9534,0,0,8,8,8,708,708,3708,8708,16,17,'YWAAAA','SCOAAA','OOOOxx'
+8939,9535,1,3,9,19,39,939,939,3939,8939,78,79,'VFAAAA','TCOAAA','VVVVxx'
+4295,9536,1,3,5,15,95,295,295,4295,4295,190,191,'FJAAAA','UCOAAA','AAAAxx'
+5905,9537,1,1,5,5,5,905,1905,905,5905,10,11,'DTAAAA','VCOAAA','HHHHxx'
+2649,9538,1,1,9,9,49,649,649,2649,2649,98,99,'XXAAAA','WCOAAA','OOOOxx'
+2347,9539,1,3,7,7,47,347,347,2347,2347,94,95,'HMAAAA','XCOAAA','VVVVxx'
+6339,9540,1,3,9,19,39,339,339,1339,6339,78,79,'VJAAAA','YCOAAA','AAAAxx'
+292,9541,0,0,2,12,92,292,292,292,292,184,185,'GLAAAA','ZCOAAA','HHHHxx'
+9314,9542,0,2,4,14,14,314,1314,4314,9314,28,29,'GUAAAA','ADOAAA','OOOOxx'
+6893,9543,1,1,3,13,93,893,893,1893,6893,186,187,'DFAAAA','BDOAAA','VVVVxx'
+3970,9544,0,2,0,10,70,970,1970,3970,3970,140,141,'SWAAAA','CDOAAA','AAAAxx'
+1652,9545,0,0,2,12,52,652,1652,1652,1652,104,105,'OLAAAA','DDOAAA','HHHHxx'
+4326,9546,0,2,6,6,26,326,326,4326,4326,52,53,'KKAAAA','EDOAAA','OOOOxx'
+7881,9547,1,1,1,1,81,881,1881,2881,7881,162,163,'DRAAAA','FDOAAA','VVVVxx'
+5291,9548,1,3,1,11,91,291,1291,291,5291,182,183,'NVAAAA','GDOAAA','AAAAxx'
+957,9549,1,1,7,17,57,957,957,957,957,114,115,'VKAAAA','HDOAAA','HHHHxx'
+2313,9550,1,1,3,13,13,313,313,2313,2313,26,27,'ZKAAAA','IDOAAA','OOOOxx'
+5463,9551,1,3,3,3,63,463,1463,463,5463,126,127,'DCAAAA','JDOAAA','VVVVxx'
+1268,9552,0,0,8,8,68,268,1268,1268,1268,136,137,'UWAAAA','KDOAAA','AAAAxx'
+5028,9553,0,0,8,8,28,28,1028,28,5028,56,57,'KLAAAA','LDOAAA','HHHHxx'
+656,9554,0,0,6,16,56,656,656,656,656,112,113,'GZAAAA','MDOAAA','OOOOxx'
+9274,9555,0,2,4,14,74,274,1274,4274,9274,148,149,'SSAAAA','NDOAAA','VVVVxx'
+8217,9556,1,1,7,17,17,217,217,3217,8217,34,35,'BEAAAA','ODOAAA','AAAAxx'
+2175,9557,1,3,5,15,75,175,175,2175,2175,150,151,'RFAAAA','PDOAAA','HHHHxx'
+6028,9558,0,0,8,8,28,28,28,1028,6028,56,57,'WXAAAA','QDOAAA','OOOOxx'
+7584,9559,0,0,4,4,84,584,1584,2584,7584,168,169,'SFAAAA','RDOAAA','VVVVxx'
+4114,9560,0,2,4,14,14,114,114,4114,4114,28,29,'GCAAAA','SDOAAA','AAAAxx'
+8894,9561,0,2,4,14,94,894,894,3894,8894,188,189,'CEAAAA','TDOAAA','HHHHxx'
+781,9562,1,1,1,1,81,781,781,781,781,162,163,'BEAAAA','UDOAAA','OOOOxx'
+133,9563,1,1,3,13,33,133,133,133,133,66,67,'DFAAAA','VDOAAA','VVVVxx'
+7572,9564,0,0,2,12,72,572,1572,2572,7572,144,145,'GFAAAA','WDOAAA','AAAAxx'
+8514,9565,0,2,4,14,14,514,514,3514,8514,28,29,'MPAAAA','XDOAAA','HHHHxx'
+3352,9566,0,0,2,12,52,352,1352,3352,3352,104,105,'YYAAAA','YDOAAA','OOOOxx'
+8098,9567,0,2,8,18,98,98,98,3098,8098,196,197,'MZAAAA','ZDOAAA','VVVVxx'
+9116,9568,0,0,6,16,16,116,1116,4116,9116,32,33,'QMAAAA','AEOAAA','AAAAxx'
+9444,9569,0,0,4,4,44,444,1444,4444,9444,88,89,'GZAAAA','BEOAAA','HHHHxx'
+2590,9570,0,2,0,10,90,590,590,2590,2590,180,181,'QVAAAA','CEOAAA','OOOOxx'
+7302,9571,0,2,2,2,2,302,1302,2302,7302,4,5,'WUAAAA','DEOAAA','VVVVxx'
+7444,9572,0,0,4,4,44,444,1444,2444,7444,88,89,'IAAAAA','EEOAAA','AAAAxx'
+8748,9573,0,0,8,8,48,748,748,3748,8748,96,97,'MYAAAA','FEOAAA','HHHHxx'
+7615,9574,1,3,5,15,15,615,1615,2615,7615,30,31,'XGAAAA','GEOAAA','OOOOxx'
+6090,9575,0,2,0,10,90,90,90,1090,6090,180,181,'GAAAAA','HEOAAA','VVVVxx'
+1529,9576,1,1,9,9,29,529,1529,1529,1529,58,59,'VGAAAA','IEOAAA','AAAAxx'
+9398,9577,0,2,8,18,98,398,1398,4398,9398,196,197,'MXAAAA','JEOAAA','HHHHxx'
+6114,9578,0,2,4,14,14,114,114,1114,6114,28,29,'EBAAAA','KEOAAA','OOOOxx'
+2736,9579,0,0,6,16,36,736,736,2736,2736,72,73,'GBAAAA','LEOAAA','VVVVxx'
+468,9580,0,0,8,8,68,468,468,468,468,136,137,'ASAAAA','MEOAAA','AAAAxx'
+1487,9581,1,3,7,7,87,487,1487,1487,1487,174,175,'FFAAAA','NEOAAA','HHHHxx'
+4784,9582,0,0,4,4,84,784,784,4784,4784,168,169,'ACAAAA','OEOAAA','OOOOxx'
+6731,9583,1,3,1,11,31,731,731,1731,6731,62,63,'XYAAAA','PEOAAA','VVVVxx'
+3328,9584,0,0,8,8,28,328,1328,3328,3328,56,57,'AYAAAA','QEOAAA','AAAAxx'
+6891,9585,1,3,1,11,91,891,891,1891,6891,182,183,'BFAAAA','REOAAA','HHHHxx'
+8039,9586,1,3,9,19,39,39,39,3039,8039,78,79,'FXAAAA','SEOAAA','OOOOxx'
+4064,9587,0,0,4,4,64,64,64,4064,4064,128,129,'IAAAAA','TEOAAA','VVVVxx'
+542,9588,0,2,2,2,42,542,542,542,542,84,85,'WUAAAA','UEOAAA','AAAAxx'
+1039,9589,1,3,9,19,39,39,1039,1039,1039,78,79,'ZNAAAA','VEOAAA','HHHHxx'
+5603,9590,1,3,3,3,3,603,1603,603,5603,6,7,'NHAAAA','WEOAAA','OOOOxx'
+6641,9591,1,1,1,1,41,641,641,1641,6641,82,83,'LVAAAA','XEOAAA','VVVVxx'
+6307,9592,1,3,7,7,7,307,307,1307,6307,14,15,'PIAAAA','YEOAAA','AAAAxx'
+5354,9593,0,2,4,14,54,354,1354,354,5354,108,109,'YXAAAA','ZEOAAA','HHHHxx'
+7878,9594,0,2,8,18,78,878,1878,2878,7878,156,157,'ARAAAA','AFOAAA','OOOOxx'
+6391,9595,1,3,1,11,91,391,391,1391,6391,182,183,'VLAAAA','BFOAAA','VVVVxx'
+4575,9596,1,3,5,15,75,575,575,4575,4575,150,151,'ZTAAAA','CFOAAA','AAAAxx'
+6644,9597,0,0,4,4,44,644,644,1644,6644,88,89,'OVAAAA','DFOAAA','HHHHxx'
+5207,9598,1,3,7,7,7,207,1207,207,5207,14,15,'HSAAAA','EFOAAA','OOOOxx'
+1736,9599,0,0,6,16,36,736,1736,1736,1736,72,73,'UOAAAA','FFOAAA','VVVVxx'
+3547,9600,1,3,7,7,47,547,1547,3547,3547,94,95,'LGAAAA','GFOAAA','AAAAxx'
+6647,9601,1,3,7,7,47,647,647,1647,6647,94,95,'RVAAAA','HFOAAA','HHHHxx'
+4107,9602,1,3,7,7,7,107,107,4107,4107,14,15,'ZBAAAA','IFOAAA','OOOOxx'
+8125,9603,1,1,5,5,25,125,125,3125,8125,50,51,'NAAAAA','JFOAAA','VVVVxx'
+9223,9604,1,3,3,3,23,223,1223,4223,9223,46,47,'TQAAAA','KFOAAA','AAAAxx'
+6903,9605,1,3,3,3,3,903,903,1903,6903,6,7,'NFAAAA','LFOAAA','HHHHxx'
+3639,9606,1,3,9,19,39,639,1639,3639,3639,78,79,'ZJAAAA','MFOAAA','OOOOxx'
+9606,9607,0,2,6,6,6,606,1606,4606,9606,12,13,'MFAAAA','NFOAAA','VVVVxx'
+3232,9608,0,0,2,12,32,232,1232,3232,3232,64,65,'IUAAAA','OFOAAA','AAAAxx'
+2063,9609,1,3,3,3,63,63,63,2063,2063,126,127,'JBAAAA','PFOAAA','HHHHxx'
+3731,9610,1,3,1,11,31,731,1731,3731,3731,62,63,'NNAAAA','QFOAAA','OOOOxx'
+2558,9611,0,2,8,18,58,558,558,2558,2558,116,117,'KUAAAA','RFOAAA','VVVVxx'
+2357,9612,1,1,7,17,57,357,357,2357,2357,114,115,'RMAAAA','SFOAAA','AAAAxx'
+6008,9613,0,0,8,8,8,8,8,1008,6008,16,17,'CXAAAA','TFOAAA','HHHHxx'
+8246,9614,0,2,6,6,46,246,246,3246,8246,92,93,'EFAAAA','UFOAAA','OOOOxx'
+8220,9615,0,0,0,0,20,220,220,3220,8220,40,41,'EEAAAA','VFOAAA','VVVVxx'
+1075,9616,1,3,5,15,75,75,1075,1075,1075,150,151,'JPAAAA','WFOAAA','AAAAxx'
+2410,9617,0,2,0,10,10,410,410,2410,2410,20,21,'SOAAAA','XFOAAA','HHHHxx'
+3253,9618,1,1,3,13,53,253,1253,3253,3253,106,107,'DVAAAA','YFOAAA','OOOOxx'
+4370,9619,0,2,0,10,70,370,370,4370,4370,140,141,'CMAAAA','ZFOAAA','VVVVxx'
+8426,9620,0,2,6,6,26,426,426,3426,8426,52,53,'CMAAAA','AGOAAA','AAAAxx'
+2262,9621,0,2,2,2,62,262,262,2262,2262,124,125,'AJAAAA','BGOAAA','HHHHxx'
+4149,9622,1,1,9,9,49,149,149,4149,4149,98,99,'PDAAAA','CGOAAA','OOOOxx'
+2732,9623,0,0,2,12,32,732,732,2732,2732,64,65,'CBAAAA','DGOAAA','VVVVxx'
+8606,9624,0,2,6,6,6,606,606,3606,8606,12,13,'ATAAAA','EGOAAA','AAAAxx'
+6311,9625,1,3,1,11,11,311,311,1311,6311,22,23,'TIAAAA','FGOAAA','HHHHxx'
+7223,9626,1,3,3,3,23,223,1223,2223,7223,46,47,'VRAAAA','GGOAAA','OOOOxx'
+3054,9627,0,2,4,14,54,54,1054,3054,3054,108,109,'MNAAAA','HGOAAA','VVVVxx'
+3952,9628,0,0,2,12,52,952,1952,3952,3952,104,105,'AWAAAA','IGOAAA','AAAAxx'
+8252,9629,0,0,2,12,52,252,252,3252,8252,104,105,'KFAAAA','JGOAAA','HHHHxx'
+6020,9630,0,0,0,0,20,20,20,1020,6020,40,41,'OXAAAA','KGOAAA','OOOOxx'
+3846,9631,0,2,6,6,46,846,1846,3846,3846,92,93,'YRAAAA','LGOAAA','VVVVxx'
+3755,9632,1,3,5,15,55,755,1755,3755,3755,110,111,'LOAAAA','MGOAAA','AAAAxx'
+3765,9633,1,1,5,5,65,765,1765,3765,3765,130,131,'VOAAAA','NGOAAA','HHHHxx'
+3434,9634,0,2,4,14,34,434,1434,3434,3434,68,69,'CCAAAA','OGOAAA','OOOOxx'
+1381,9635,1,1,1,1,81,381,1381,1381,1381,162,163,'DBAAAA','PGOAAA','VVVVxx'
+287,9636,1,3,7,7,87,287,287,287,287,174,175,'BLAAAA','QGOAAA','AAAAxx'
+4476,9637,0,0,6,16,76,476,476,4476,4476,152,153,'EQAAAA','RGOAAA','HHHHxx'
+2916,9638,0,0,6,16,16,916,916,2916,2916,32,33,'EIAAAA','SGOAAA','OOOOxx'
+4517,9639,1,1,7,17,17,517,517,4517,4517,34,35,'TRAAAA','TGOAAA','VVVVxx'
+4561,9640,1,1,1,1,61,561,561,4561,4561,122,123,'LTAAAA','UGOAAA','AAAAxx'
+5106,9641,0,2,6,6,6,106,1106,106,5106,12,13,'KOAAAA','VGOAAA','HHHHxx'
+2077,9642,1,1,7,17,77,77,77,2077,2077,154,155,'XBAAAA','WGOAAA','OOOOxx'
+5269,9643,1,1,9,9,69,269,1269,269,5269,138,139,'RUAAAA','XGOAAA','VVVVxx'
+5688,9644,0,0,8,8,88,688,1688,688,5688,176,177,'UKAAAA','YGOAAA','AAAAxx'
+8831,9645,1,3,1,11,31,831,831,3831,8831,62,63,'RBAAAA','ZGOAAA','HHHHxx'
+3867,9646,1,3,7,7,67,867,1867,3867,3867,134,135,'TSAAAA','AHOAAA','OOOOxx'
+6062,9647,0,2,2,2,62,62,62,1062,6062,124,125,'EZAAAA','BHOAAA','VVVVxx'
+8460,9648,0,0,0,0,60,460,460,3460,8460,120,121,'KNAAAA','CHOAAA','AAAAxx'
+3138,9649,0,2,8,18,38,138,1138,3138,3138,76,77,'SQAAAA','DHOAAA','HHHHxx'
+3173,9650,1,1,3,13,73,173,1173,3173,3173,146,147,'BSAAAA','EHOAAA','OOOOxx'
+7018,9651,0,2,8,18,18,18,1018,2018,7018,36,37,'YJAAAA','FHOAAA','VVVVxx'
+4836,9652,0,0,6,16,36,836,836,4836,4836,72,73,'AEAAAA','GHOAAA','AAAAxx'
+1007,9653,1,3,7,7,7,7,1007,1007,1007,14,15,'TMAAAA','HHOAAA','HHHHxx'
+658,9654,0,2,8,18,58,658,658,658,658,116,117,'IZAAAA','IHOAAA','OOOOxx'
+5205,9655,1,1,5,5,5,205,1205,205,5205,10,11,'FSAAAA','JHOAAA','VVVVxx'
+5805,9656,1,1,5,5,5,805,1805,805,5805,10,11,'HPAAAA','KHOAAA','AAAAxx'
+5959,9657,1,3,9,19,59,959,1959,959,5959,118,119,'FVAAAA','LHOAAA','HHHHxx'
+2863,9658,1,3,3,3,63,863,863,2863,2863,126,127,'DGAAAA','MHOAAA','OOOOxx'
+7272,9659,0,0,2,12,72,272,1272,2272,7272,144,145,'STAAAA','NHOAAA','VVVVxx'
+8437,9660,1,1,7,17,37,437,437,3437,8437,74,75,'NMAAAA','OHOAAA','AAAAxx'
+4900,9661,0,0,0,0,0,900,900,4900,4900,0,1,'MGAAAA','PHOAAA','HHHHxx'
+890,9662,0,2,0,10,90,890,890,890,890,180,181,'GIAAAA','QHOAAA','OOOOxx'
+3530,9663,0,2,0,10,30,530,1530,3530,3530,60,61,'UFAAAA','RHOAAA','VVVVxx'
+6209,9664,1,1,9,9,9,209,209,1209,6209,18,19,'VEAAAA','SHOAAA','AAAAxx'
+4595,9665,1,3,5,15,95,595,595,4595,4595,190,191,'TUAAAA','THOAAA','HHHHxx'
+5982,9666,0,2,2,2,82,982,1982,982,5982,164,165,'CWAAAA','UHOAAA','OOOOxx'
+1101,9667,1,1,1,1,1,101,1101,1101,1101,2,3,'JQAAAA','VHOAAA','VVVVxx'
+9555,9668,1,3,5,15,55,555,1555,4555,9555,110,111,'NDAAAA','WHOAAA','AAAAxx'
+1918,9669,0,2,8,18,18,918,1918,1918,1918,36,37,'UVAAAA','XHOAAA','HHHHxx'
+3527,9670,1,3,7,7,27,527,1527,3527,3527,54,55,'RFAAAA','YHOAAA','OOOOxx'
+7309,9671,1,1,9,9,9,309,1309,2309,7309,18,19,'DVAAAA','ZHOAAA','VVVVxx'
+8213,9672,1,1,3,13,13,213,213,3213,8213,26,27,'XDAAAA','AIOAAA','AAAAxx'
+306,9673,0,2,6,6,6,306,306,306,306,12,13,'ULAAAA','BIOAAA','HHHHxx'
+845,9674,1,1,5,5,45,845,845,845,845,90,91,'NGAAAA','CIOAAA','OOOOxx'
+16,9675,0,0,6,16,16,16,16,16,16,32,33,'QAAAAA','DIOAAA','VVVVxx'
+437,9676,1,1,7,17,37,437,437,437,437,74,75,'VQAAAA','EIOAAA','AAAAxx'
+9518,9677,0,2,8,18,18,518,1518,4518,9518,36,37,'CCAAAA','FIOAAA','HHHHxx'
+2142,9678,0,2,2,2,42,142,142,2142,2142,84,85,'KEAAAA','GIOAAA','OOOOxx'
+8121,9679,1,1,1,1,21,121,121,3121,8121,42,43,'JAAAAA','HIOAAA','VVVVxx'
+7354,9680,0,2,4,14,54,354,1354,2354,7354,108,109,'WWAAAA','IIOAAA','AAAAxx'
+1720,9681,0,0,0,0,20,720,1720,1720,1720,40,41,'EOAAAA','JIOAAA','HHHHxx'
+6078,9682,0,2,8,18,78,78,78,1078,6078,156,157,'UZAAAA','KIOAAA','OOOOxx'
+5929,9683,1,1,9,9,29,929,1929,929,5929,58,59,'BUAAAA','LIOAAA','VVVVxx'
+3856,9684,0,0,6,16,56,856,1856,3856,3856,112,113,'ISAAAA','MIOAAA','AAAAxx'
+3424,9685,0,0,4,4,24,424,1424,3424,3424,48,49,'SBAAAA','NIOAAA','HHHHxx'
+1712,9686,0,0,2,12,12,712,1712,1712,1712,24,25,'WNAAAA','OIOAAA','OOOOxx'
+2340,9687,0,0,0,0,40,340,340,2340,2340,80,81,'AMAAAA','PIOAAA','VVVVxx'
+5570,9688,0,2,0,10,70,570,1570,570,5570,140,141,'GGAAAA','QIOAAA','AAAAxx'
+8734,9689,0,2,4,14,34,734,734,3734,8734,68,69,'YXAAAA','RIOAAA','HHHHxx'
+6077,9690,1,1,7,17,77,77,77,1077,6077,154,155,'TZAAAA','SIOAAA','OOOOxx'
+2960,9691,0,0,0,0,60,960,960,2960,2960,120,121,'WJAAAA','TIOAAA','VVVVxx'
+5062,9692,0,2,2,2,62,62,1062,62,5062,124,125,'SMAAAA','UIOAAA','AAAAxx'
+1532,9693,0,0,2,12,32,532,1532,1532,1532,64,65,'YGAAAA','VIOAAA','HHHHxx'
+8298,9694,0,2,8,18,98,298,298,3298,8298,196,197,'EHAAAA','WIOAAA','OOOOxx'
+2496,9695,0,0,6,16,96,496,496,2496,2496,192,193,'ASAAAA','XIOAAA','VVVVxx'
+8412,9696,0,0,2,12,12,412,412,3412,8412,24,25,'OLAAAA','YIOAAA','AAAAxx'
+724,9697,0,0,4,4,24,724,724,724,724,48,49,'WBAAAA','ZIOAAA','HHHHxx'
+1019,9698,1,3,9,19,19,19,1019,1019,1019,38,39,'FNAAAA','AJOAAA','OOOOxx'
+6265,9699,1,1,5,5,65,265,265,1265,6265,130,131,'ZGAAAA','BJOAAA','VVVVxx'
+740,9700,0,0,0,0,40,740,740,740,740,80,81,'MCAAAA','CJOAAA','AAAAxx'
+8495,9701,1,3,5,15,95,495,495,3495,8495,190,191,'TOAAAA','DJOAAA','HHHHxx'
+6983,9702,1,3,3,3,83,983,983,1983,6983,166,167,'PIAAAA','EJOAAA','OOOOxx'
+991,9703,1,3,1,11,91,991,991,991,991,182,183,'DMAAAA','FJOAAA','VVVVxx'
+3189,9704,1,1,9,9,89,189,1189,3189,3189,178,179,'RSAAAA','GJOAAA','AAAAxx'
+4487,9705,1,3,7,7,87,487,487,4487,4487,174,175,'PQAAAA','HJOAAA','HHHHxx'
+5554,9706,0,2,4,14,54,554,1554,554,5554,108,109,'QFAAAA','IJOAAA','OOOOxx'
+1258,9707,0,2,8,18,58,258,1258,1258,1258,116,117,'KWAAAA','JJOAAA','VVVVxx'
+5359,9708,1,3,9,19,59,359,1359,359,5359,118,119,'DYAAAA','KJOAAA','AAAAxx'
+2709,9709,1,1,9,9,9,709,709,2709,2709,18,19,'FAAAAA','LJOAAA','HHHHxx'
+361,9710,1,1,1,1,61,361,361,361,361,122,123,'XNAAAA','MJOAAA','OOOOxx'
+4028,9711,0,0,8,8,28,28,28,4028,4028,56,57,'YYAAAA','NJOAAA','VVVVxx'
+3735,9712,1,3,5,15,35,735,1735,3735,3735,70,71,'RNAAAA','OJOAAA','AAAAxx'
+4427,9713,1,3,7,7,27,427,427,4427,4427,54,55,'HOAAAA','PJOAAA','HHHHxx'
+7540,9714,0,0,0,0,40,540,1540,2540,7540,80,81,'AEAAAA','QJOAAA','OOOOxx'
+3569,9715,1,1,9,9,69,569,1569,3569,3569,138,139,'HHAAAA','RJOAAA','VVVVxx'
+1916,9716,0,0,6,16,16,916,1916,1916,1916,32,33,'SVAAAA','SJOAAA','AAAAxx'
+7596,9717,0,0,6,16,96,596,1596,2596,7596,192,193,'EGAAAA','TJOAAA','HHHHxx'
+9721,9718,1,1,1,1,21,721,1721,4721,9721,42,43,'XJAAAA','UJOAAA','OOOOxx'
+4429,9719,1,1,9,9,29,429,429,4429,4429,58,59,'JOAAAA','VJOAAA','VVVVxx'
+3471,9720,1,3,1,11,71,471,1471,3471,3471,142,143,'NDAAAA','WJOAAA','AAAAxx'
+1157,9721,1,1,7,17,57,157,1157,1157,1157,114,115,'NSAAAA','XJOAAA','HHHHxx'
+5700,9722,0,0,0,0,0,700,1700,700,5700,0,1,'GLAAAA','YJOAAA','OOOOxx'
+4431,9723,1,3,1,11,31,431,431,4431,4431,62,63,'LOAAAA','ZJOAAA','VVVVxx'
+9409,9724,1,1,9,9,9,409,1409,4409,9409,18,19,'XXAAAA','AKOAAA','AAAAxx'
+8752,9725,0,0,2,12,52,752,752,3752,8752,104,105,'QYAAAA','BKOAAA','HHHHxx'
+9484,9726,0,0,4,4,84,484,1484,4484,9484,168,169,'UAAAAA','CKOAAA','OOOOxx'
+1266,9727,0,2,6,6,66,266,1266,1266,1266,132,133,'SWAAAA','DKOAAA','VVVVxx'
+9097,9728,1,1,7,17,97,97,1097,4097,9097,194,195,'XLAAAA','EKOAAA','AAAAxx'
+3068,9729,0,0,8,8,68,68,1068,3068,3068,136,137,'AOAAAA','FKOAAA','HHHHxx'
+5490,9730,0,2,0,10,90,490,1490,490,5490,180,181,'EDAAAA','GKOAAA','OOOOxx'
+1375,9731,1,3,5,15,75,375,1375,1375,1375,150,151,'XAAAAA','HKOAAA','VVVVxx'
+2487,9732,1,3,7,7,87,487,487,2487,2487,174,175,'RRAAAA','IKOAAA','AAAAxx'
+1705,9733,1,1,5,5,5,705,1705,1705,1705,10,11,'PNAAAA','JKOAAA','HHHHxx'
+1571,9734,1,3,1,11,71,571,1571,1571,1571,142,143,'LIAAAA','KKOAAA','OOOOxx'
+4005,9735,1,1,5,5,5,5,5,4005,4005,10,11,'BYAAAA','LKOAAA','VVVVxx'
+5497,9736,1,1,7,17,97,497,1497,497,5497,194,195,'LDAAAA','MKOAAA','AAAAxx'
+2144,9737,0,0,4,4,44,144,144,2144,2144,88,89,'MEAAAA','NKOAAA','HHHHxx'
+4052,9738,0,0,2,12,52,52,52,4052,4052,104,105,'WZAAAA','OKOAAA','OOOOxx'
+4942,9739,0,2,2,2,42,942,942,4942,4942,84,85,'CIAAAA','PKOAAA','VVVVxx'
+5504,9740,0,0,4,4,4,504,1504,504,5504,8,9,'SDAAAA','QKOAAA','AAAAxx'
+2913,9741,1,1,3,13,13,913,913,2913,2913,26,27,'BIAAAA','RKOAAA','HHHHxx'
+5617,9742,1,1,7,17,17,617,1617,617,5617,34,35,'BIAAAA','SKOAAA','OOOOxx'
+8179,9743,1,3,9,19,79,179,179,3179,8179,158,159,'PCAAAA','TKOAAA','VVVVxx'
+9437,9744,1,1,7,17,37,437,1437,4437,9437,74,75,'ZYAAAA','UKOAAA','AAAAxx'
+1821,9745,1,1,1,1,21,821,1821,1821,1821,42,43,'BSAAAA','VKOAAA','HHHHxx'
+5737,9746,1,1,7,17,37,737,1737,737,5737,74,75,'RMAAAA','WKOAAA','OOOOxx'
+4207,9747,1,3,7,7,7,207,207,4207,4207,14,15,'VFAAAA','XKOAAA','VVVVxx'
+4815,9748,1,3,5,15,15,815,815,4815,4815,30,31,'FDAAAA','YKOAAA','AAAAxx'
+8707,9749,1,3,7,7,7,707,707,3707,8707,14,15,'XWAAAA','ZKOAAA','HHHHxx'
+5970,9750,0,2,0,10,70,970,1970,970,5970,140,141,'QVAAAA','ALOAAA','OOOOxx'
+5501,9751,1,1,1,1,1,501,1501,501,5501,2,3,'PDAAAA','BLOAAA','VVVVxx'
+4013,9752,1,1,3,13,13,13,13,4013,4013,26,27,'JYAAAA','CLOAAA','AAAAxx'
+9235,9753,1,3,5,15,35,235,1235,4235,9235,70,71,'FRAAAA','DLOAAA','HHHHxx'
+2503,9754,1,3,3,3,3,503,503,2503,2503,6,7,'HSAAAA','ELOAAA','OOOOxx'
+9181,9755,1,1,1,1,81,181,1181,4181,9181,162,163,'DPAAAA','FLOAAA','VVVVxx'
+2289,9756,1,1,9,9,89,289,289,2289,2289,178,179,'BKAAAA','GLOAAA','AAAAxx'
+4256,9757,0,0,6,16,56,256,256,4256,4256,112,113,'SHAAAA','HLOAAA','HHHHxx'
+191,9758,1,3,1,11,91,191,191,191,191,182,183,'JHAAAA','ILOAAA','OOOOxx'
+9655,9759,1,3,5,15,55,655,1655,4655,9655,110,111,'JHAAAA','JLOAAA','VVVVxx'
+8615,9760,1,3,5,15,15,615,615,3615,8615,30,31,'JTAAAA','KLOAAA','AAAAxx'
+3011,9761,1,3,1,11,11,11,1011,3011,3011,22,23,'VLAAAA','LLOAAA','HHHHxx'
+6376,9762,0,0,6,16,76,376,376,1376,6376,152,153,'GLAAAA','MLOAAA','OOOOxx'
+68,9763,0,0,8,8,68,68,68,68,68,136,137,'QCAAAA','NLOAAA','VVVVxx'
+4720,9764,0,0,0,0,20,720,720,4720,4720,40,41,'OZAAAA','OLOAAA','AAAAxx'
+6848,9765,0,0,8,8,48,848,848,1848,6848,96,97,'KDAAAA','PLOAAA','HHHHxx'
+456,9766,0,0,6,16,56,456,456,456,456,112,113,'ORAAAA','QLOAAA','OOOOxx'
+5887,9767,1,3,7,7,87,887,1887,887,5887,174,175,'LSAAAA','RLOAAA','VVVVxx'
+9249,9768,1,1,9,9,49,249,1249,4249,9249,98,99,'TRAAAA','SLOAAA','AAAAxx'
+4041,9769,1,1,1,1,41,41,41,4041,4041,82,83,'LZAAAA','TLOAAA','HHHHxx'
+2304,9770,0,0,4,4,4,304,304,2304,2304,8,9,'QKAAAA','ULOAAA','OOOOxx'
+8763,9771,1,3,3,3,63,763,763,3763,8763,126,127,'BZAAAA','VLOAAA','VVVVxx'
+2115,9772,1,3,5,15,15,115,115,2115,2115,30,31,'JDAAAA','WLOAAA','AAAAxx'
+8014,9773,0,2,4,14,14,14,14,3014,8014,28,29,'GWAAAA','XLOAAA','HHHHxx'
+9895,9774,1,3,5,15,95,895,1895,4895,9895,190,191,'PQAAAA','YLOAAA','OOOOxx'
+671,9775,1,3,1,11,71,671,671,671,671,142,143,'VZAAAA','ZLOAAA','VVVVxx'
+3774,9776,0,2,4,14,74,774,1774,3774,3774,148,149,'EPAAAA','AMOAAA','AAAAxx'
+134,9777,0,2,4,14,34,134,134,134,134,68,69,'EFAAAA','BMOAAA','HHHHxx'
+534,9778,0,2,4,14,34,534,534,534,534,68,69,'OUAAAA','CMOAAA','OOOOxx'
+7308,9779,0,0,8,8,8,308,1308,2308,7308,16,17,'CVAAAA','DMOAAA','VVVVxx'
+5244,9780,0,0,4,4,44,244,1244,244,5244,88,89,'STAAAA','EMOAAA','AAAAxx'
+1512,9781,0,0,2,12,12,512,1512,1512,1512,24,25,'EGAAAA','FMOAAA','HHHHxx'
+8960,9782,0,0,0,0,60,960,960,3960,8960,120,121,'QGAAAA','GMOAAA','OOOOxx'
+6602,9783,0,2,2,2,2,602,602,1602,6602,4,5,'YTAAAA','HMOAAA','VVVVxx'
+593,9784,1,1,3,13,93,593,593,593,593,186,187,'VWAAAA','IMOAAA','AAAAxx'
+2353,9785,1,1,3,13,53,353,353,2353,2353,106,107,'NMAAAA','JMOAAA','HHHHxx'
+4139,9786,1,3,9,19,39,139,139,4139,4139,78,79,'FDAAAA','KMOAAA','OOOOxx'
+3063,9787,1,3,3,3,63,63,1063,3063,3063,126,127,'VNAAAA','LMOAAA','VVVVxx'
+652,9788,0,0,2,12,52,652,652,652,652,104,105,'CZAAAA','MMOAAA','AAAAxx'
+7405,9789,1,1,5,5,5,405,1405,2405,7405,10,11,'VYAAAA','NMOAAA','HHHHxx'
+3034,9790,0,2,4,14,34,34,1034,3034,3034,68,69,'SMAAAA','OMOAAA','OOOOxx'
+4614,9791,0,2,4,14,14,614,614,4614,4614,28,29,'MVAAAA','PMOAAA','VVVVxx'
+2351,9792,1,3,1,11,51,351,351,2351,2351,102,103,'LMAAAA','QMOAAA','AAAAxx'
+8208,9793,0,0,8,8,8,208,208,3208,8208,16,17,'SDAAAA','RMOAAA','HHHHxx'
+5475,9794,1,3,5,15,75,475,1475,475,5475,150,151,'PCAAAA','SMOAAA','OOOOxx'
+6875,9795,1,3,5,15,75,875,875,1875,6875,150,151,'LEAAAA','TMOAAA','VVVVxx'
+563,9796,1,3,3,3,63,563,563,563,563,126,127,'RVAAAA','UMOAAA','AAAAxx'
+3346,9797,0,2,6,6,46,346,1346,3346,3346,92,93,'SYAAAA','VMOAAA','HHHHxx'
+291,9798,1,3,1,11,91,291,291,291,291,182,183,'FLAAAA','WMOAAA','OOOOxx'
+6345,9799,1,1,5,5,45,345,345,1345,6345,90,91,'BKAAAA','XMOAAA','VVVVxx'
+8099,9800,1,3,9,19,99,99,99,3099,8099,198,199,'NZAAAA','YMOAAA','AAAAxx'
+2078,9801,0,2,8,18,78,78,78,2078,2078,156,157,'YBAAAA','ZMOAAA','HHHHxx'
+8238,9802,0,2,8,18,38,238,238,3238,8238,76,77,'WEAAAA','ANOAAA','OOOOxx'
+4482,9803,0,2,2,2,82,482,482,4482,4482,164,165,'KQAAAA','BNOAAA','VVVVxx'
+716,9804,0,0,6,16,16,716,716,716,716,32,33,'OBAAAA','CNOAAA','AAAAxx'
+7288,9805,0,0,8,8,88,288,1288,2288,7288,176,177,'IUAAAA','DNOAAA','HHHHxx'
+5906,9806,0,2,6,6,6,906,1906,906,5906,12,13,'ETAAAA','ENOAAA','OOOOxx'
+5618,9807,0,2,8,18,18,618,1618,618,5618,36,37,'CIAAAA','FNOAAA','VVVVxx'
+1141,9808,1,1,1,1,41,141,1141,1141,1141,82,83,'XRAAAA','GNOAAA','AAAAxx'
+8231,9809,1,3,1,11,31,231,231,3231,8231,62,63,'PEAAAA','HNOAAA','HHHHxx'
+3713,9810,1,1,3,13,13,713,1713,3713,3713,26,27,'VMAAAA','INOAAA','OOOOxx'
+9158,9811,0,2,8,18,58,158,1158,4158,9158,116,117,'GOAAAA','JNOAAA','VVVVxx'
+4051,9812,1,3,1,11,51,51,51,4051,4051,102,103,'VZAAAA','KNOAAA','AAAAxx'
+1973,9813,1,1,3,13,73,973,1973,1973,1973,146,147,'XXAAAA','LNOAAA','HHHHxx'
+6710,9814,0,2,0,10,10,710,710,1710,6710,20,21,'CYAAAA','MNOAAA','OOOOxx'
+1021,9815,1,1,1,1,21,21,1021,1021,1021,42,43,'HNAAAA','NNOAAA','VVVVxx'
+2196,9816,0,0,6,16,96,196,196,2196,2196,192,193,'MGAAAA','ONOAAA','AAAAxx'
+8335,9817,1,3,5,15,35,335,335,3335,8335,70,71,'PIAAAA','PNOAAA','HHHHxx'
+2272,9818,0,0,2,12,72,272,272,2272,2272,144,145,'KJAAAA','QNOAAA','OOOOxx'
+3818,9819,0,2,8,18,18,818,1818,3818,3818,36,37,'WQAAAA','RNOAAA','VVVVxx'
+679,9820,1,3,9,19,79,679,679,679,679,158,159,'DAAAAA','SNOAAA','AAAAxx'
+7512,9821,0,0,2,12,12,512,1512,2512,7512,24,25,'YCAAAA','TNOAAA','HHHHxx'
+493,9822,1,1,3,13,93,493,493,493,493,186,187,'ZSAAAA','UNOAAA','OOOOxx'
+5663,9823,1,3,3,3,63,663,1663,663,5663,126,127,'VJAAAA','VNOAAA','VVVVxx'
+4655,9824,1,3,5,15,55,655,655,4655,4655,110,111,'BXAAAA','WNOAAA','AAAAxx'
+3996,9825,0,0,6,16,96,996,1996,3996,3996,192,193,'SXAAAA','XNOAAA','HHHHxx'
+8797,9826,1,1,7,17,97,797,797,3797,8797,194,195,'JAAAAA','YNOAAA','OOOOxx'
+2991,9827,1,3,1,11,91,991,991,2991,2991,182,183,'BLAAAA','ZNOAAA','VVVVxx'
+7038,9828,0,2,8,18,38,38,1038,2038,7038,76,77,'SKAAAA','AOOAAA','AAAAxx'
+4174,9829,0,2,4,14,74,174,174,4174,4174,148,149,'OEAAAA','BOOAAA','HHHHxx'
+6908,9830,0,0,8,8,8,908,908,1908,6908,16,17,'SFAAAA','COOAAA','OOOOxx'
+8477,9831,1,1,7,17,77,477,477,3477,8477,154,155,'BOAAAA','DOOAAA','VVVVxx'
+3576,9832,0,0,6,16,76,576,1576,3576,3576,152,153,'OHAAAA','EOOAAA','AAAAxx'
+2685,9833,1,1,5,5,85,685,685,2685,2685,170,171,'HZAAAA','FOOAAA','HHHHxx'
+9161,9834,1,1,1,1,61,161,1161,4161,9161,122,123,'JOAAAA','GOOAAA','OOOOxx'
+2951,9835,1,3,1,11,51,951,951,2951,2951,102,103,'NJAAAA','HOOAAA','VVVVxx'
+8362,9836,0,2,2,2,62,362,362,3362,8362,124,125,'QJAAAA','IOOAAA','AAAAxx'
+2379,9837,1,3,9,19,79,379,379,2379,2379,158,159,'NNAAAA','JOOAAA','HHHHxx'
+1277,9838,1,1,7,17,77,277,1277,1277,1277,154,155,'DXAAAA','KOOAAA','OOOOxx'
+1728,9839,0,0,8,8,28,728,1728,1728,1728,56,57,'MOAAAA','LOOAAA','VVVVxx'
+9816,9840,0,0,6,16,16,816,1816,4816,9816,32,33,'ONAAAA','MOOAAA','AAAAxx'
+6288,9841,0,0,8,8,88,288,288,1288,6288,176,177,'WHAAAA','NOOAAA','HHHHxx'
+8985,9842,1,1,5,5,85,985,985,3985,8985,170,171,'PHAAAA','OOOAAA','OOOOxx'
+771,9843,1,3,1,11,71,771,771,771,771,142,143,'RDAAAA','POOAAA','VVVVxx'
+464,9844,0,0,4,4,64,464,464,464,464,128,129,'WRAAAA','QOOAAA','AAAAxx'
+9625,9845,1,1,5,5,25,625,1625,4625,9625,50,51,'FGAAAA','ROOAAA','HHHHxx'
+9608,9846,0,0,8,8,8,608,1608,4608,9608,16,17,'OFAAAA','SOOAAA','OOOOxx'
+9170,9847,0,2,0,10,70,170,1170,4170,9170,140,141,'SOAAAA','TOOAAA','VVVVxx'
+9658,9848,0,2,8,18,58,658,1658,4658,9658,116,117,'MHAAAA','UOOAAA','AAAAxx'
+7515,9849,1,3,5,15,15,515,1515,2515,7515,30,31,'BDAAAA','VOOAAA','HHHHxx'
+9400,9850,0,0,0,0,0,400,1400,4400,9400,0,1,'OXAAAA','WOOAAA','OOOOxx'
+2045,9851,1,1,5,5,45,45,45,2045,2045,90,91,'RAAAAA','XOOAAA','VVVVxx'
+324,9852,0,0,4,4,24,324,324,324,324,48,49,'MMAAAA','YOOAAA','AAAAxx'
+4252,9853,0,0,2,12,52,252,252,4252,4252,104,105,'OHAAAA','ZOOAAA','HHHHxx'
+8329,9854,1,1,9,9,29,329,329,3329,8329,58,59,'JIAAAA','APOAAA','OOOOxx'
+4472,9855,0,0,2,12,72,472,472,4472,4472,144,145,'AQAAAA','BPOAAA','VVVVxx'
+1047,9856,1,3,7,7,47,47,1047,1047,1047,94,95,'HOAAAA','CPOAAA','AAAAxx'
+9341,9857,1,1,1,1,41,341,1341,4341,9341,82,83,'HVAAAA','DPOAAA','HHHHxx'
+7000,9858,0,0,0,0,0,0,1000,2000,7000,0,1,'GJAAAA','EPOAAA','OOOOxx'
+1429,9859,1,1,9,9,29,429,1429,1429,1429,58,59,'ZCAAAA','FPOAAA','VVVVxx'
+2701,9860,1,1,1,1,1,701,701,2701,2701,2,3,'XZAAAA','GPOAAA','AAAAxx'
+6630,9861,0,2,0,10,30,630,630,1630,6630,60,61,'AVAAAA','HPOAAA','HHHHxx'
+3669,9862,1,1,9,9,69,669,1669,3669,3669,138,139,'DLAAAA','IPOAAA','OOOOxx'
+8613,9863,1,1,3,13,13,613,613,3613,8613,26,27,'HTAAAA','JPOAAA','VVVVxx'
+7080,9864,0,0,0,0,80,80,1080,2080,7080,160,161,'IMAAAA','KPOAAA','AAAAxx'
+8788,9865,0,0,8,8,88,788,788,3788,8788,176,177,'AAAAAA','LPOAAA','HHHHxx'
+6291,9866,1,3,1,11,91,291,291,1291,6291,182,183,'ZHAAAA','MPOAAA','OOOOxx'
+7885,9867,1,1,5,5,85,885,1885,2885,7885,170,171,'HRAAAA','NPOAAA','VVVVxx'
+7160,9868,0,0,0,0,60,160,1160,2160,7160,120,121,'KPAAAA','OPOAAA','AAAAxx'
+6140,9869,0,0,0,0,40,140,140,1140,6140,80,81,'ECAAAA','PPOAAA','HHHHxx'
+9881,9870,1,1,1,1,81,881,1881,4881,9881,162,163,'BQAAAA','QPOAAA','OOOOxx'
+9140,9871,0,0,0,0,40,140,1140,4140,9140,80,81,'ONAAAA','RPOAAA','VVVVxx'
+644,9872,0,0,4,4,44,644,644,644,644,88,89,'UYAAAA','SPOAAA','AAAAxx'
+3667,9873,1,3,7,7,67,667,1667,3667,3667,134,135,'BLAAAA','TPOAAA','HHHHxx'
+2675,9874,1,3,5,15,75,675,675,2675,2675,150,151,'XYAAAA','UPOAAA','OOOOxx'
+9492,9875,0,0,2,12,92,492,1492,4492,9492,184,185,'CBAAAA','VPOAAA','VVVVxx'
+5004,9876,0,0,4,4,4,4,1004,4,5004,8,9,'MKAAAA','WPOAAA','AAAAxx'
+9456,9877,0,0,6,16,56,456,1456,4456,9456,112,113,'SZAAAA','XPOAAA','HHHHxx'
+8197,9878,1,1,7,17,97,197,197,3197,8197,194,195,'HDAAAA','YPOAAA','OOOOxx'
+2837,9879,1,1,7,17,37,837,837,2837,2837,74,75,'DFAAAA','ZPOAAA','VVVVxx'
+127,9880,1,3,7,7,27,127,127,127,127,54,55,'XEAAAA','AQOAAA','AAAAxx'
+9772,9881,0,0,2,12,72,772,1772,4772,9772,144,145,'WLAAAA','BQOAAA','HHHHxx'
+5743,9882,1,3,3,3,43,743,1743,743,5743,86,87,'XMAAAA','CQOAAA','OOOOxx'
+2007,9883,1,3,7,7,7,7,7,2007,2007,14,15,'FZAAAA','DQOAAA','VVVVxx'
+7586,9884,0,2,6,6,86,586,1586,2586,7586,172,173,'UFAAAA','EQOAAA','AAAAxx'
+45,9885,1,1,5,5,45,45,45,45,45,90,91,'TBAAAA','FQOAAA','HHHHxx'
+6482,9886,0,2,2,2,82,482,482,1482,6482,164,165,'IPAAAA','GQOAAA','OOOOxx'
+4565,9887,1,1,5,5,65,565,565,4565,4565,130,131,'PTAAAA','HQOAAA','VVVVxx'
+6975,9888,1,3,5,15,75,975,975,1975,6975,150,151,'HIAAAA','IQOAAA','AAAAxx'
+7260,9889,0,0,0,0,60,260,1260,2260,7260,120,121,'GTAAAA','JQOAAA','HHHHxx'
+2830,9890,0,2,0,10,30,830,830,2830,2830,60,61,'WEAAAA','KQOAAA','OOOOxx'
+9365,9891,1,1,5,5,65,365,1365,4365,9365,130,131,'FWAAAA','LQOAAA','VVVVxx'
+8207,9892,1,3,7,7,7,207,207,3207,8207,14,15,'RDAAAA','MQOAAA','AAAAxx'
+2506,9893,0,2,6,6,6,506,506,2506,2506,12,13,'KSAAAA','NQOAAA','HHHHxx'
+8081,9894,1,1,1,1,81,81,81,3081,8081,162,163,'VYAAAA','OQOAAA','OOOOxx'
+8678,9895,0,2,8,18,78,678,678,3678,8678,156,157,'UVAAAA','PQOAAA','VVVVxx'
+9932,9896,0,0,2,12,32,932,1932,4932,9932,64,65,'ASAAAA','QQOAAA','AAAAxx'
+447,9897,1,3,7,7,47,447,447,447,447,94,95,'FRAAAA','RQOAAA','HHHHxx'
+9187,9898,1,3,7,7,87,187,1187,4187,9187,174,175,'JPAAAA','SQOAAA','OOOOxx'
+89,9899,1,1,9,9,89,89,89,89,89,178,179,'LDAAAA','TQOAAA','VVVVxx'
+7027,9900,1,3,7,7,27,27,1027,2027,7027,54,55,'HKAAAA','UQOAAA','AAAAxx'
+1536,9901,0,0,6,16,36,536,1536,1536,1536,72,73,'CHAAAA','VQOAAA','HHHHxx'
+160,9902,0,0,0,0,60,160,160,160,160,120,121,'EGAAAA','WQOAAA','OOOOxx'
+7679,9903,1,3,9,19,79,679,1679,2679,7679,158,159,'JJAAAA','XQOAAA','VVVVxx'
+5973,9904,1,1,3,13,73,973,1973,973,5973,146,147,'TVAAAA','YQOAAA','AAAAxx'
+4401,9905,1,1,1,1,1,401,401,4401,4401,2,3,'HNAAAA','ZQOAAA','HHHHxx'
+395,9906,1,3,5,15,95,395,395,395,395,190,191,'FPAAAA','AROAAA','OOOOxx'
+4904,9907,0,0,4,4,4,904,904,4904,4904,8,9,'QGAAAA','BROAAA','VVVVxx'
+2759,9908,1,3,9,19,59,759,759,2759,2759,118,119,'DCAAAA','CROAAA','AAAAxx'
+8713,9909,1,1,3,13,13,713,713,3713,8713,26,27,'DXAAAA','DROAAA','HHHHxx'
+3770,9910,0,2,0,10,70,770,1770,3770,3770,140,141,'APAAAA','EROAAA','OOOOxx'
+8272,9911,0,0,2,12,72,272,272,3272,8272,144,145,'EGAAAA','FROAAA','VVVVxx'
+5358,9912,0,2,8,18,58,358,1358,358,5358,116,117,'CYAAAA','GROAAA','AAAAxx'
+9747,9913,1,3,7,7,47,747,1747,4747,9747,94,95,'XKAAAA','HROAAA','HHHHxx'
+1567,9914,1,3,7,7,67,567,1567,1567,1567,134,135,'HIAAAA','IROAAA','OOOOxx'
+2136,9915,0,0,6,16,36,136,136,2136,2136,72,73,'EEAAAA','JROAAA','VVVVxx'
+314,9916,0,2,4,14,14,314,314,314,314,28,29,'CMAAAA','KROAAA','AAAAxx'
+4583,9917,1,3,3,3,83,583,583,4583,4583,166,167,'HUAAAA','LROAAA','HHHHxx'
+375,9918,1,3,5,15,75,375,375,375,375,150,151,'LOAAAA','MROAAA','OOOOxx'
+5566,9919,0,2,6,6,66,566,1566,566,5566,132,133,'CGAAAA','NROAAA','VVVVxx'
+6865,9920,1,1,5,5,65,865,865,1865,6865,130,131,'BEAAAA','OROAAA','AAAAxx'
+894,9921,0,2,4,14,94,894,894,894,894,188,189,'KIAAAA','PROAAA','HHHHxx'
+5399,9922,1,3,9,19,99,399,1399,399,5399,198,199,'RZAAAA','QROAAA','OOOOxx'
+1385,9923,1,1,5,5,85,385,1385,1385,1385,170,171,'HBAAAA','RROAAA','VVVVxx'
+2156,9924,0,0,6,16,56,156,156,2156,2156,112,113,'YEAAAA','SROAAA','AAAAxx'
+9659,9925,1,3,9,19,59,659,1659,4659,9659,118,119,'NHAAAA','TROAAA','HHHHxx'
+477,9926,1,1,7,17,77,477,477,477,477,154,155,'JSAAAA','UROAAA','OOOOxx'
+8194,9927,0,2,4,14,94,194,194,3194,8194,188,189,'EDAAAA','VROAAA','VVVVxx'
+3937,9928,1,1,7,17,37,937,1937,3937,3937,74,75,'LVAAAA','WROAAA','AAAAxx'
+3745,9929,1,1,5,5,45,745,1745,3745,3745,90,91,'BOAAAA','XROAAA','HHHHxx'
+4096,9930,0,0,6,16,96,96,96,4096,4096,192,193,'OBAAAA','YROAAA','OOOOxx'
+5487,9931,1,3,7,7,87,487,1487,487,5487,174,175,'BDAAAA','ZROAAA','VVVVxx'
+2475,9932,1,3,5,15,75,475,475,2475,2475,150,151,'FRAAAA','ASOAAA','AAAAxx'
+6105,9933,1,1,5,5,5,105,105,1105,6105,10,11,'VAAAAA','BSOAAA','HHHHxx'
+6036,9934,0,0,6,16,36,36,36,1036,6036,72,73,'EYAAAA','CSOAAA','OOOOxx'
+1315,9935,1,3,5,15,15,315,1315,1315,1315,30,31,'PYAAAA','DSOAAA','VVVVxx'
+4473,9936,1,1,3,13,73,473,473,4473,4473,146,147,'BQAAAA','ESOAAA','AAAAxx'
+4016,9937,0,0,6,16,16,16,16,4016,4016,32,33,'MYAAAA','FSOAAA','HHHHxx'
+8135,9938,1,3,5,15,35,135,135,3135,8135,70,71,'XAAAAA','GSOAAA','OOOOxx'
+8892,9939,0,0,2,12,92,892,892,3892,8892,184,185,'AEAAAA','HSOAAA','VVVVxx'
+4850,9940,0,2,0,10,50,850,850,4850,4850,100,101,'OEAAAA','ISOAAA','AAAAxx'
+2545,9941,1,1,5,5,45,545,545,2545,2545,90,91,'XTAAAA','JSOAAA','HHHHxx'
+3788,9942,0,0,8,8,88,788,1788,3788,3788,176,177,'SPAAAA','KSOAAA','OOOOxx'
+1672,9943,0,0,2,12,72,672,1672,1672,1672,144,145,'IMAAAA','LSOAAA','VVVVxx'
+3664,9944,0,0,4,4,64,664,1664,3664,3664,128,129,'YKAAAA','MSOAAA','AAAAxx'
+3775,9945,1,3,5,15,75,775,1775,3775,3775,150,151,'FPAAAA','NSOAAA','HHHHxx'
+3103,9946,1,3,3,3,3,103,1103,3103,3103,6,7,'JPAAAA','OSOAAA','OOOOxx'
+9335,9947,1,3,5,15,35,335,1335,4335,9335,70,71,'BVAAAA','PSOAAA','VVVVxx'
+9200,9948,0,0,0,0,0,200,1200,4200,9200,0,1,'WPAAAA','QSOAAA','AAAAxx'
+8665,9949,1,1,5,5,65,665,665,3665,8665,130,131,'HVAAAA','RSOAAA','HHHHxx'
+1356,9950,0,0,6,16,56,356,1356,1356,1356,112,113,'EAAAAA','SSOAAA','OOOOxx'
+6118,9951,0,2,8,18,18,118,118,1118,6118,36,37,'IBAAAA','TSOAAA','VVVVxx'
+4605,9952,1,1,5,5,5,605,605,4605,4605,10,11,'DVAAAA','USOAAA','AAAAxx'
+5651,9953,1,3,1,11,51,651,1651,651,5651,102,103,'JJAAAA','VSOAAA','HHHHxx'
+9055,9954,1,3,5,15,55,55,1055,4055,9055,110,111,'HKAAAA','WSOAAA','OOOOxx'
+8461,9955,1,1,1,1,61,461,461,3461,8461,122,123,'LNAAAA','XSOAAA','VVVVxx'
+6107,9956,1,3,7,7,7,107,107,1107,6107,14,15,'XAAAAA','YSOAAA','AAAAxx'
+1967,9957,1,3,7,7,67,967,1967,1967,1967,134,135,'RXAAAA','ZSOAAA','HHHHxx'
+8910,9958,0,2,0,10,10,910,910,3910,8910,20,21,'SEAAAA','ATOAAA','OOOOxx'
+8257,9959,1,1,7,17,57,257,257,3257,8257,114,115,'PFAAAA','BTOAAA','VVVVxx'
+851,9960,1,3,1,11,51,851,851,851,851,102,103,'TGAAAA','CTOAAA','AAAAxx'
+7823,9961,1,3,3,3,23,823,1823,2823,7823,46,47,'XOAAAA','DTOAAA','HHHHxx'
+3208,9962,0,0,8,8,8,208,1208,3208,3208,16,17,'KTAAAA','ETOAAA','OOOOxx'
+856,9963,0,0,6,16,56,856,856,856,856,112,113,'YGAAAA','FTOAAA','VVVVxx'
+2654,9964,0,2,4,14,54,654,654,2654,2654,108,109,'CYAAAA','GTOAAA','AAAAxx'
+7185,9965,1,1,5,5,85,185,1185,2185,7185,170,171,'JQAAAA','HTOAAA','HHHHxx'
+309,9966,1,1,9,9,9,309,309,309,309,18,19,'XLAAAA','ITOAAA','OOOOxx'
+9752,9967,0,0,2,12,52,752,1752,4752,9752,104,105,'CLAAAA','JTOAAA','VVVVxx'
+6405,9968,1,1,5,5,5,405,405,1405,6405,10,11,'JMAAAA','KTOAAA','AAAAxx'
+6113,9969,1,1,3,13,13,113,113,1113,6113,26,27,'DBAAAA','LTOAAA','HHHHxx'
+9774,9970,0,2,4,14,74,774,1774,4774,9774,148,149,'YLAAAA','MTOAAA','OOOOxx'
+1674,9971,0,2,4,14,74,674,1674,1674,1674,148,149,'KMAAAA','NTOAAA','VVVVxx'
+9602,9972,0,2,2,2,2,602,1602,4602,9602,4,5,'IFAAAA','OTOAAA','AAAAxx'
+1363,9973,1,3,3,3,63,363,1363,1363,1363,126,127,'LAAAAA','PTOAAA','HHHHxx'
+6887,9974,1,3,7,7,87,887,887,1887,6887,174,175,'XEAAAA','QTOAAA','OOOOxx'
+6170,9975,0,2,0,10,70,170,170,1170,6170,140,141,'IDAAAA','RTOAAA','VVVVxx'
+8888,9976,0,0,8,8,88,888,888,3888,8888,176,177,'WDAAAA','STOAAA','AAAAxx'
+2981,9977,1,1,1,1,81,981,981,2981,2981,162,163,'RKAAAA','TTOAAA','HHHHxx'
+7369,9978,1,1,9,9,69,369,1369,2369,7369,138,139,'LXAAAA','UTOAAA','OOOOxx'
+6227,9979,1,3,7,7,27,227,227,1227,6227,54,55,'NFAAAA','VTOAAA','VVVVxx'
+8002,9980,0,2,2,2,2,2,2,3002,8002,4,5,'UVAAAA','WTOAAA','AAAAxx'
+4288,9981,0,0,8,8,88,288,288,4288,4288,176,177,'YIAAAA','XTOAAA','HHHHxx'
+5136,9982,0,0,6,16,36,136,1136,136,5136,72,73,'OPAAAA','YTOAAA','OOOOxx'
+1084,9983,0,0,4,4,84,84,1084,1084,1084,168,169,'SPAAAA','ZTOAAA','VVVVxx'
+9117,9984,1,1,7,17,17,117,1117,4117,9117,34,35,'RMAAAA','AUOAAA','AAAAxx'
+2406,9985,0,2,6,6,6,406,406,2406,2406,12,13,'OOAAAA','BUOAAA','HHHHxx'
+1384,9986,0,0,4,4,84,384,1384,1384,1384,168,169,'GBAAAA','CUOAAA','OOOOxx'
+9194,9987,0,2,4,14,94,194,1194,4194,9194,188,189,'QPAAAA','DUOAAA','VVVVxx'
+858,9988,0,2,8,18,58,858,858,858,858,116,117,'AHAAAA','EUOAAA','AAAAxx'
+8592,9989,0,0,2,12,92,592,592,3592,8592,184,185,'MSAAAA','FUOAAA','HHHHxx'
+4773,9990,1,1,3,13,73,773,773,4773,4773,146,147,'PBAAAA','GUOAAA','OOOOxx'
+4093,9991,1,1,3,13,93,93,93,4093,4093,186,187,'LBAAAA','HUOAAA','VVVVxx'
+6587,9992,1,3,7,7,87,587,587,1587,6587,174,175,'JTAAAA','IUOAAA','AAAAxx'
+6093,9993,1,1,3,13,93,93,93,1093,6093,186,187,'JAAAAA','JUOAAA','HHHHxx'
+429,9994,1,1,9,9,29,429,429,429,429,58,59,'NQAAAA','KUOAAA','OOOOxx'
+5780,9995,0,0,0,0,80,780,1780,780,5780,160,161,'IOAAAA','LUOAAA','VVVVxx'
+1783,9996,1,3,3,3,83,783,1783,1783,1783,166,167,'PQAAAA','MUOAAA','AAAAxx'
+2992,9997,0,0,2,12,92,992,992,2992,2992,184,185,'CLAAAA','NUOAAA','HHHHxx'
+0,9998,0,0,0,0,0,0,0,0,0,0,1,'AAAAAA','OUOAAA','OOOOxx'
+2968,9999,0,0,8,8,68,968,968,2968,2968,136,137,'EKAAAA','PUOAAA','VVVVxx'
diff --git a/sql-bench/README b/sql-bench/README
new file mode 100644
index 00000000..431659a8
--- /dev/null
+++ b/sql-bench/README
@@ -0,0 +1,93 @@
+The MySQL Benchmarks
+
+These tests require a MySQL version of at least 3.20.28 or 3.21.10.
+
+Currently the following servers are supported:
+MySQL 3.20 and 3.21, PostgreSQL 6.#, mSQL 2.# and Solid Server 2.2
+
+The benchmark directory contains the query files and raw data files used to
+populate the MySQL benchmark tables. In order to run the benchmarks, you
+should normally execute a command such as the following:
+
+run-all-tests --server=mysql --cmp=mysql,pg,solid --user=test --password=test --log
+
+This means that you want to run the benchmarks with MySQL. The
+limits should be taken from all of MySQL, PostgreSQL, and Solid.
+The login name and password for connecting to the server both are
+``test''. The result should be saved as a RUN file in the output
+directory.
+
+When run-all-tests has finished, will have the individual results and the
+the total RUN- file in the output directory.
+
+If you want to look at some old results, use the compare-results script.
+For example:
+
+compare-results --dir=Results --cmp=mysql,pg,solid
+compare-results --dir=Results --cmp=mysql,pg,solid --relative
+
+compare-results --dir=Results --cmp=msql,mysql,pg,solid
+compare-results --dir=Results --cmp=msql,mysql,pg,solid --relative
+
+compare-results --dir=Results --server=mysql --same-server --cmp=mysql,pg,solid
+
+Some of the files in the benchmark directory are:
+
+File Description
+
+Data/ATIS Contains data for 29 related tables used in the ATIS tests.
+Data/Wisconsin Contains data for the Wisconsin benchmark.
+Results Contains old benchmark results.
+Makefile.am Automake Makefile
+README This file.
+test-ATIS.sh Creation of 29 tables and a lot of selects on them.
+test-connect.sh Test how fast a connection to the server is.
+test-create.sh Test how fast a table is created.
+test-insert.sh Test create and fill of a table.
+test-wisconsin.sh A port of the PostgreSQL version of this benchmark.
+run-all-tests Use this to run all tests. When all tests are run,
+ use the --log and --use-old options to get a RUN-file.
+compare-results Generates a comparison table from different RUN files.
+server-cfg Contains the limits and functions for all supported
+ SQL servers. If you want to add a new server, this
+ should be the only file that neads to be changed.
+
+
+Most of the tests should use portable SQL to make it possible to
+compare different databases. Sometimes SQL extensions can make things
+a lot faster. In this case the test may use the extensions if the --fast
+option is used.
+
+Useful options to all test-scripts (and run-all-tests):
+
+--host=# Hostname for MySQL server (default: localhost)
+--db=# Database to use (default: test)
+--fast Allow use of any non-standard SQL extension to
+ get things done faster.
+--lock-tables Use table locking to get more speed.
+
+From a text at http://www.mgt.ncu.edu.tw/CSIM/Paper/sixth/11.html:
+
+The Wisconsin Benchmark
+
+The Wisconsin Benchmark described in [Bitton, DeWitt, and Turbyfill
+1983] [Boral and DeWitt 1984] [Bitton and Turbyfill 1985] [Bitton and
+Turbyfill 1988], and [DeWitt 1993] is the first effort to
+systematically measure and compare the performance of relational
+database systems with database machines. The benchmark is a
+single-user and single-factor experiment using a synthetic database
+and a controlled workload. It measures the query optimization
+performance of database systems with 32 query types to exercise the
+components of the proposed systems. The query suites include
+selection, join, projection, aggregate, and simple update queries.
+
+The test database consists of four generic relations. The tenk
+relation is the key table and most used. Two data types of small
+integer numbers and character strings are utilized. Data values are
+uniformly distributed. The primary metric is the query elapsed
+time. The main criticisms of the benchmark include the nature of
+single-user workload, the simplistic database structure, and the
+unrealistic query tests. A number of efforts have been made to extend
+the benchmark to incorporate the multi-user test. However, they do
+not receive the same acceptance as the original Wisconsin benchmark
+except an extension work called the AS3AP benchmark.
diff --git a/sql-bench/as3ap.sh b/sql-bench/as3ap.sh
new file mode 100644
index 00000000..8e4b3167
--- /dev/null
+++ b/sql-bench/as3ap.sh
@@ -0,0 +1,638 @@
+#!/usr/bin/env perl
+# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# AS3AP single-user benchmark.
+#
+
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+$opt_loop_count=1;
+
+#Create tables
+
+$dbh = $server->connect();
+
+#Create Table
+$sth = $dbh->do("drop table uniques");
+$sth = $dbh->do("drop table updates");
+$sth = $dbh->do("drop table hundred");
+$sth = $dbh->do("drop table tenpct");
+$sth = $dbh->do("drop table tiny");
+
+#Temporary table
+$sth = $dbh->do("drop table saveupdates");
+
+@fields=("col_key int not null",
+ "col_int int not null",
+ "col_signed int not null",
+ "col_float float not null",
+ "col_double float not null",
+ "col_decim numeric(18,2) not null",
+ "col_date char(20) not null",
+ "col_code char(10) not null",
+ "col_name char(20) not null",
+ "col_address varchar(80) not null");
+
+do_many($dbh,$server->create("uniques",\@fields,[]));
+do_many($dbh,$server->create("updates",\@fields,[]));
+do_many($dbh,$server->create("hundred",\@fields,[]));
+do_many($dbh,$server->create("tenpct",\@fields,[]));
+do_many($dbh,$server->create("tiny",["col_key int not null"],[]));
+
+print "Start AS3AP benchmark\n\n";
+
+$start_time=new Benchmark;
+
+print "Load DATA\n";
+#Load DATA
+
+@table_names=("uniques","updates","hundred","tenpct","tiny");
+
+$loop_time=new Benchmark;
+
+if ($opt_fast && $server->{'limits'}->{'load_data_infile'})
+{
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ my $file = "$pwd/Data/AS3AP/${table_name}\.new";
+ print "$table_name - $file\n" if ($opt_debug);
+ $row_count += $server->insert_file($table_name,$file,$dbh);
+ }
+}
+else
+{
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ print "$table_name - $file\n" if ($opt_debug);
+ my $insert_start = "insert into $table_name values (";
+ open(DATA, "$pwd/Data/AS3AP/${table_name}\.new") || die "Can't open text file: $pwd/Data/AS3AP/${table_name}\.new\n";
+ while(<DATA>)
+ {
+ chomp;
+ next unless ( $_ =~ /\w/ ); # skip blank lines
+ $command = $insert_start."$_".")";
+ $command =~ $server->fix_to_insert($command);
+ print "$command\n" if ($opt_debug);
+ $sth = $dbh->do($command) or die "Got error: $DBI::errstr when executing '$command'\n";
+ $row_count++;
+ }
+ close(DATA);
+ }
+}
+
+$end_time=new Benchmark;
+print "Time for Load Data - " . "($row_count): " .
+timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+
+print "Create Index\n";
+
+test_command("create_idx_uniques_key_bt",
+ "time for create_idx_uniques_key_bt",
+ "create unique index uniques_key_bt on uniques (col_key)",$dbh,$opt_loop_count);
+
+test_command("create_idx_updates_key_bt",
+ "time for create_idx_updates_key_bt",
+ "create unique index updates_key_bt on updates (col_key)",$dbh,$opt_loop_count);
+
+test_command("create_idx_hundred_key_bt",
+ "time for create_idx_hundred_key_bt",
+ "create unique index hundred_key_bt on hundred (col_key)",
+ $dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_key_bt",
+ "time for create_idx_tenpct_key_bt",
+ "create unique index tenpct_key_bt on tenpct (col_key)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_key_code_bt",
+ "time for create_idx_tenpct_key_code_bt",
+ "create index tenpct_key_code_bt on tenpct (col_key,col_code)",
+ $dbh,$opt_loop_count);
+
+test_command("create_idx_tiny_key_bt",
+ "time for create_idx_tiny_key_bt",
+ "create index tiny_key_bt on tiny (col_key)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_int_bt",
+ "time for create_idx_tenpct_int_bt",
+ "create index tenpct_int_bt on tenpct (col_int)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_signed_bt",
+ "time for create_idx_tenpct_signed_bt",
+ "create index tenpct_signed_bt on tenpct (col_signed)",$dbh,$opt_loop_count);
+
+test_command("create_idx_uniques_code_h",
+ "time for create_idx_uniques_code_h",
+ "create index uniques_code_h on uniques (col_code)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_double_bt",
+ "time for create_idx_tenpct_double_bt",
+ "create index tenpct_double_bt on tenpct (col_double)",$dbh,$opt_loop_count);
+
+
+test_command("create_idx_updates_decim_bt",
+ "time for create_idx_updates_decim_bt",
+ "create index updates_decim_bt on updates (col_decim)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_float_bt",
+ "time for create_idx_tenpct_float_bt",
+ "create index tenpct_float_bt on tenpct (col_float)",$dbh,$opt_loop_count);
+
+test_command("create_idx_updates_int_bt",
+ "time for create_idx_updates_int_bt",
+ "create index updates_int_bt on updates (col_int)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_decim_bt",
+ "time for create_idx_tenpct_decim_bt",
+ "create index tenpct_decim_bt on tenpct (col_decim)",$dbh,$opt_loop_count);
+
+test_command("create_idx_hundred_code_h",
+ "time for create_idx_hundred_code_h",
+ "create index hundred_code_h on hundred (col_code)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_name_h",
+ "time for create_idx_tenpct_name_h",
+ "create index tenpct_name_h on tenpct (col_name)",$dbh,$opt_loop_count);
+
+test_command("create_idx_updates_code_h",
+ "time for create_idx_updates_code_h",
+ "create index updates_code_h on updates (col_code)",$dbh,$opt_loop_count);
+
+test_command("create_idx_tenpct_code_h",
+ "time for create_idx_tenpct_code_h",
+ "create index tenpct_code_h on tenpct (col_code)",$dbh,$opt_loop_count);
+
+test_command("create_idx_updates_double_bt",
+ "time for create_idx_updates_double_bt",
+ "create index updates_double_bt on updates (col_double)",$dbh,$opt_loop_count);
+
+test_command("create_idx_hundred_foreign",
+ "time for create_idx_hundred_foreign",
+ "alter table hundred add constraint fk_hundred_updates foreign key (col_signed)
+ references updates (col_key)",$dbh,$opt_loop_count);
+
+test_query("sel_1_cl",
+ "Time to sel_1_cl",
+ "select col_key, col_int, col_signed, col_code, col_double, col_name
+ from updates where col_key = 1000",$dbh,$opt_loop_count);
+
+test_query("join_3_cl",
+ "Time to join_3_cl",
+ "select uniques.col_signed, uniques.col_date,
+ hundred.col_signed, hundred.col_date,
+ tenpct.col_signed, tenpct.col_date
+ from uniques, hundred, tenpct
+ where uniques.col_key = hundred.col_key
+ and uniques.col_key = tenpct.col_key
+ and uniques.col_key = 1000",$dbh,$opt_loop_count);
+
+test_query("sel_100_ncl",
+ "Time to sel_100_ncl",
+ "select col_key, col_int, col_signed, col_code,col_double, col_name
+ from updates where col_int <= 100",$dbh,$opt_loop_count);
+
+test_query("table_scan",
+ "Time to table_scan",
+ "select * from uniques where col_int = 1",$dbh,$opt_loop_count);
+
+test_query("agg_func",
+ "Time for agg_func",
+ "select min(col_key) from hundred group by col_name",$dbh,$opt_loop_count);
+
+test_query("agg_scal",
+ "Time for agg_scal",
+ "select min(col_key) from uniques",$dbh,$opt_loop_count);
+
+test_query("sel_100_cl",
+ "Time for sel_100_cl",
+ "select col_key, col_int, col_signed, col_code,
+ col_double, col_name
+ from updates where col_key <= 100",$dbh,$opt_loop_count);
+
+test_query("join_3_ncl",
+ "Time for join_3_ncl",
+ "select uniques.col_signed, uniques.col_date,
+ hundred.col_signed, hundred.col_date,
+ tenpct.col_signed, tenpct.col_date
+ from uniques, hundred, tenpct
+ where uniques.col_code = hundred.col_code
+ and uniques.col_code = tenpct.col_code
+ and uniques.col_code = 'BENCHMARKS'",$dbh,$opt_loop_count);
+
+test_query("sel_10pct_ncl",
+ "Time for sel_10pct_ncl",
+ "select col_key, col_int, col_signed, col_code,
+ col_double, col_name
+ from tenpct
+ where col_name = 'THE+ASAP+BENCHMARKS+'",$dbh,$opt_loop_count);
+
+if ($limits->{'subqueries'}){
+ test_query("agg_simple_report",
+ "Time for agg_simple_report",
+ "select avg(updates.col_decim)
+ from updates
+ where updates.col_key in
+ (select updates.col_key
+ from updates, hundred
+ where hundred.col_key = updates.col_key
+ and updates.col_decim > 980000000)",$dbh,$opt_loop_count);
+}else{
+ print "agg_simple_report - Failed\n\n";
+}
+
+test_query("agg_info_retrieval",
+ "Time for agg_info_retrieval",
+ "select count(col_key)
+ from tenpct
+ where col_name = 'THE+ASAP+BENCHMARKS'
+ and col_int <= 100000000
+ and col_signed between 1 and 99999999
+ and not (col_float between -450000000 and 450000000)
+ and col_double > 600000000
+ and col_decim < -600000000",$dbh,$opt_loop_count);
+
+if ($limits->{'views'}){
+ test_query("agg_create_view",
+ "Time for agg_create_view",
+ "create view
+ reportview(col_key,col_signed,col_date,col_decim,
+ col_name,col_code,col_int) as
+ select updates.col_key, updates.col_signed,
+ updates.col_date, updates.col_decim,
+ hundred.col_name, hundred.col_code,
+ hundred.col_int
+ from updates, hundred
+ where updates.col_key = hundred.col_key",$dbh,$opt_loop_count);
+
+ test_query("agg_subtotal_report",
+ "Time for agg_subtotal_report",
+ "select avg(col_signed), min(col_signed), max(col_signed),
+ max(col_date), min(col_date),
+ count(distinct col_name), count(col_name),
+ col_code, col_int
+ from reportview
+ where col_decim >980000000
+ group by col_code, col_int",$dbh,$opt_loop_count);
+
+
+ test_query("agg_total_report",
+ "Time for agg_total_report",
+ "select avg(col_signed), min(col_signed), max(col_signed),
+ max(col_date), min(col_date),
+ count(distinct col_name), count(col_name),
+ count(col_code), count(col_int)
+ from reportview
+ where col_decim >980000000",$dbh,$opt_loop_count);
+}else{
+ print "agg_create_view - Failed\n\n";
+ print "agg_subtotal_report - Failed\n\n";
+ print "agg_total_report - Failed\n\n";
+}
+
+#fix from here
+test_query("join_2_cl",
+ "Time for join_2_cl",
+ "select uniques.col_signed, uniques.col_name,
+ hundred.col_signed, hundred.col_name
+ from uniques, hundred
+ where uniques.col_key = hundred.col_key
+ and uniques.col_key =1000"
+ ,$dbh,$opt_loop_count);
+
+test_query("join_2",
+ "Time for join_2",
+ "select uniques.col_signed, uniques.col_name,
+ hundred.col_signed, hundred.col_name
+ from uniques, hundred
+ where uniques.col_address = hundred.col_address
+ and uniques.col_address = 'SILICON VALLEY'"
+ ,$dbh,$opt_loop_count);
+
+test_query("sel_variable_select_low",
+ "Time for sel_variable_select_low",
+ "select col_key, col_int, col_signed, col_code,
+ col_double, col_name
+ from tenpct
+ where col_signed < -500000000"
+ ,$dbh,$opt_loop_count);
+
+test_query("sel_variable_select_high",
+ "Time for sel_variable_select_high",
+ "select col_key, col_int, col_signed, col_code,
+ col_double, col_name
+ from tenpct
+ where col_signed < -250000000"
+ ,$dbh,$opt_loop_count);
+
+test_query("join_4_cl",
+ "Time for join_4_cl",
+ "select uniques.col_date, hundred.col_date,
+ tenpct.col_date, updates.col_date
+ from uniques, hundred, tenpct, updates
+ where uniques.col_key = hundred.col_key
+ and uniques.col_key = tenpct.col_key
+ and uniques.col_key = updates.col_key
+ and uniques.col_key = 1000"
+ ,$dbh,$opt_loop_count);
+
+test_query("proj_100",
+ "Time for proj_100",
+ "select distinct col_address, col_signed from hundred"
+ ,$dbh,$opt_loop_count);
+
+test_query("join_4_ncl",
+ "Time for join_4_ncl",
+ "select uniques.col_date, hundred.col_date,
+ tenpct.col_date, updates.col_date
+ from uniques, hundred, tenpct, updates
+ where uniques.col_code = hundred.col_code
+ and uniques.col_code = tenpct.col_code
+ and uniques.col_code = updates.col_code
+ and uniques.col_code = 'BENCHMARKS'"
+ ,$dbh,$opt_loop_count);
+
+test_query("proj_10pct",
+ "Time for proj_10pct",
+ "select distinct col_signed from tenpct"
+ ,$dbh,$opt_loop_count);
+
+test_query("sel_1_ncl",
+ "Time for sel_1_ncl",
+ "select col_key, col_int, col_signed, col_code,
+ col_double, col_name
+ from updates where col_code = 'BENCHMARKS'"
+ ,$dbh,$opt_loop_count);
+
+test_query("join_2_ncl",
+ "Time for join_2_ncl",
+ "select uniques.col_signed, uniques.col_name,
+ hundred.col_signed, hundred.col_name
+ from uniques, hundred
+ where uniques.col_code = hundred.col_code
+ and uniques.col_code = 'BENCHMARKS'"
+ ,$dbh,$opt_loop_count);
+
+if ($limits->{'foreign_key'}){
+ do_many($dbh,$server->create("integrity_temp",\@fields,[]));
+
+ test_query("integrity_test_1",
+ "Time for integrity_test",
+ "insert into integrity_temp select *
+ from hundred where col_int=0",$dbh,$opt_loop_count);
+
+ test_query("integrity_test_2",
+ "Time for integrity_test",
+ "update hundred set col_signed = '-500000000'
+ where col_int = 0",$dbh,$opt_loop_count);
+
+ test_query("integrity_test_3",
+ "Time for integrity_test",
+ "update hundred set col_signed = '-500000000'
+ where col_int = 0",$dbh,$opt_loop_count);
+
+
+}else{
+ print "integrity_test - Failed\n\n";
+}
+
+push @drop_seq_command,$server->drop_index("updates","updates_int_bt");
+push @drop_seq_command,$server->drop_index("updates","updates_double_bt");
+push @drop_seq_command,$server->drop_index("updates","updates_decim_bt");
+push @drop_seq_command,$server->drop_index("updates","updates_code_h");
+
+test_many_command("Drop updates keys",
+ "Time for drop_updates_keys",
+ \@drop_seq_command,$dbh,$opt_loop_count);
+
+do_many($dbh,$server->create("saveupdates",\@fields,[]));
+
+test_command("bulk_save",
+ "Time for bulk_save",
+ "insert into saveupdates select *
+ from updates where col_key between 5000 and 5999"
+ ,$dbh,$opt_loop_count);
+
+test_command("bulk_modify",
+ "Time for bulk_modify",
+ "update updates
+ set col_key = col_key - 100000
+ where col_key between 5000 and 5999"
+ ,$dbh,$opt_loop_count);
+
+safe_command("upd_append_duplicate",
+ "Time for upd_append_duplicate",
+ "insert into updates
+ values (6000, 0, 60000, 39997.90,
+ 50005.00, 50005.00,
+ '11/10/1985', 'CONTROLLER',
+ 'ALICE IN WONDERLAND',
+ 'UNIVERSITY OF ILLINOIS AT CHICAGO')"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_remove_duplicate",
+ "Time for upd_remove_duplicate",
+ "delete from updates where col_key = 6000 and col_int = 0"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_app_t_mid",
+ "Time for upd_app_t_mid",
+ "insert into updates
+ values (5005, 5005, 50005, 50005.00, 50005.00,
+ 50005.00, '1/1/1988', 'CONTROLLER',
+ 'ALICE IN WONDERLAND',
+ 'UNIVERSITY OF ILLINOIS AT CHICAGO')"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_mod_t_mid",
+ "Time for upd_mod_t_mid",
+ "update updates set col_key = '-5000'
+ where col_key = 5005"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_del_t_mid",
+ "Time for upd_del_t_mid",
+ "delete from updates
+ where (col_key='5005') or (col_key='-5000')"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_app_t_end",
+ "Time for upd_app_t_end",
+ "delete from updates
+ where (col_key='5005') or (col_key='-5000')"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_mod_t_end",
+ "Time for upd_mod_t_end",
+ "update updates
+ set col_key = -1000
+ where col_key = 1000000001"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_del_t_end",
+ "Time for upd_del_t_end",
+ "delete from updates where col_key = -1000"
+ ,$dbh,$opt_loop_count);
+
+test_command("create_idx_updates_code_h",
+ "time for create_idx_updates_code_h",
+ "create index updates_code_h on updates (col_code)",
+ $dbh,$opt_loop_count);
+
+test_command("upd_app_t_mid",
+ "Time for upd_app_t_mid",
+ "insert into updates
+ values (5005, 5005, 50005, 50005.00, 50005.00,
+ 50005.00, '1/1/1988', 'CONTROLLER',
+ 'ALICE IN WONDERLAND',
+ 'UNIVERSITY OF ILLINOIS AT CHICAGO')"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_mod_t_cod",
+ "Time for upd_mod_t_cod",
+ "update updates
+ set col_code = 'SQL+GROUPS'
+ where col_key = 5005"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_del_t_mid",
+ "Time for upd_del_t_mid",
+ "delete from updates
+ where (col_key='5005') or (col_key='-5000')"
+ ,$dbh,$opt_loop_count);
+
+test_command("create_idx_updates_int_bt",
+ "time for create_idx_updates_int_bt",
+ "create index updates_int_bt on updates (col_int)",
+ $dbh,$opt_loop_count);
+
+test_command("upd_app_t_mid",
+ "Time for upd_app_t_mid",
+ "insert into updates
+ values (5005, 5005, 50005, 50005.00, 50005.00,
+ 50005.00, '1/1/1988', 'CONTROLLER',
+ 'ALICE IN WONDERLAND',
+ 'UNIVERSITY OF ILLINOIS AT CHICAGO')"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_mod_t_int",
+ "Time for upd_mod_t_int",
+ "update updates set col_int = 50015 where col_key = 5005"
+ ,$dbh,$opt_loop_count);
+
+test_command("upd_del_t_mid",
+ "Time for upd_del_t_mid",
+ "delete from updates
+ where (col_key='5005') or (col_key='-5000')"
+ ,$dbh,$opt_loop_count);
+
+test_command("bulk_append",
+ "Time for bulk_append",
+ "insert into updates select * from saveupdates"
+ ,$dbh,$opt_loop_count);
+
+test_command("bulk_delete",
+ "Time for bulk_delete",
+ "delete from updates where col_key < 0"
+ ,$dbh,$opt_loop_count);
+
+################################ END ###################################
+####
+#### End of the test...Finally print time used to execute the
+#### whole test.
+
+$dbh->disconnect;
+
+end_benchmark($start_time);
+
+############################ HELP FUNCTIONS ##############################
+
+sub test_query
+{
+ my($test_text,$result_text,$query,$dbh,$count)=@_;
+ my($i,$loop_time,$end_time);
+
+ print $test_text . "\n";
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $count ; $i++)
+ {
+ defined(fetch_all_rows($dbh,$query)) or warn $DBI::errstr;
+ }
+ $end_time=new Benchmark;
+ print $result_text . "($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+
+sub test_command
+{
+ my($test_text,$result_text,$query,$dbh,$count)=@_;
+ my($i,$loop_time,$end_time);
+
+ print $test_text . "\n";
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $count ; $i++)
+ {
+ $dbh->do($query) or die $DBI::errstr;
+ }
+ $end_time=new Benchmark;
+ print $result_text . "($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+sub safe_command
+{
+ my($test_text,$result_text,$query,$dbh,$count)=@_;
+ my($i,$loop_time,$end_time);
+
+ print $test_text . "\n";
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $count ; $i++)
+ {
+ safe_do_many($dbh,$query);
+ }
+ $end_time=new Benchmark;
+ print $result_text . "($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+sub test_many_command
+{
+ my($test_text,$result_text,$query,$dbh,$count)=@_;
+ my($i,$loop_time,$end_time);
+
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $count ; $i++)
+ {
+ safe_do_many($dbh, @$query);
+ }
+ $end_time=new Benchmark;
+ print $result_text . "($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+
diff --git a/sql-bench/bench-count-distinct.sh b/sql-bench/bench-count-distinct.sh
new file mode 100644
index 00000000..b6465d06
--- /dev/null
+++ b/sql-bench/bench-count-distinct.sh
@@ -0,0 +1,260 @@
+#!/usr/bin/env perl
+# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# Test of selecting on keys that consist of many parts
+#
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Getopt::Long;
+use Benchmark;
+
+$opt_loop_count=10000;
+$opt_medium_loop_count=200;
+$opt_small_loop_count=10;
+$opt_regions=6;
+$opt_groups=100;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+$columns=min($limits->{'max_columns'},500,($limits->{'query_size'}-50)/24,
+ $limits->{'max_conditions'}/2-3);
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=10;
+ $opt_medium_loop_count/=10;
+ $opt_small_loop_count/=10;
+ $opt_groups/=10;
+}
+
+print "Testing the speed of selecting on keys that consist of many parts\n";
+print "The test-table has $opt_loop_count rows and the test is done with $columns ranges.\n\n";
+
+####
+#### Connect and start timeing
+####
+
+$dbh = $server->connect();
+$start_time=new Benchmark;
+
+####
+#### Create needed tables
+####
+
+goto select_test if ($opt_skip_create);
+
+print "Creating table\n";
+$dbh->do("drop table bench1" . $server->{'drop_attr'});
+
+do_many($dbh,$server->create("bench1",
+ ["region char(1) NOT NULL",
+ "idn integer(6) NOT NULL",
+ "rev_idn integer(6) NOT NULL",
+ "grp integer(6) NOT NULL"],
+ ["primary key (region,idn)",
+ "unique (region,rev_idn)",
+ "unique (region,grp,idn)"]));
+if ($opt_lock_tables)
+{
+ do_query($dbh,"LOCK TABLES bench1 WRITE");
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+####
+#### Insert $opt_loop_count records with
+#### region: "A" -> "E"
+#### idn: 0 -> count
+#### rev_idn: count -> 0,
+#### grp: distributed values 0 - > count/100
+####
+
+print "Inserting $opt_loop_count rows\n";
+
+$loop_time=new Benchmark;
+$query="insert into bench1 values (";
+$half_done=$opt_loop_count/2;
+for ($id=0,$rev_id=$opt_loop_count-1 ; $id < $opt_loop_count ; $id++,$rev_id--)
+{
+ $grp=$id*3 % $opt_groups;
+ $region=chr(65+$id%$opt_regions);
+ do_query($dbh,"$query'$region',$id,$rev_id,$grp)");
+ if ($id == $half_done)
+ { # Test with different insert
+ $query="insert into bench1 (region,idn,rev_idn,grp) values (";
+ }
+}
+
+$end_time=new Benchmark;
+print "Time to insert ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"UNLOCK TABLES");
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh,"bench1");
+}
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"LOCK TABLES bench1 WRITE");
+}
+
+####
+#### Do some selects on the table
+####
+
+select_test:
+
+
+
+if ($limits->{'group_distinct_functions'})
+{
+ print "Testing count(distinct) on the table\n";
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select count(distinct region) from bench1");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_key_prefix ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select count(distinct grp) from bench1");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select count(distinct grp),count(distinct rev_idn) from bench1");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_2 ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select region,count(distinct idn) from bench1 group by region");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_group_on_key ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select grp,count(distinct idn) from bench1 group by grp");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_group_on_key_parts ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select grp,count(distinct rev_idn) from bench1 group by grp");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_group ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ $test_count=$opt_medium_loop_count/10;
+ for ($i=0 ; $i < $test_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select idn,count(distinct region) from bench1 group by idn");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $test_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_big ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+}
+
+####
+#### End of benchmark
+####
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"UNLOCK TABLES");
+}
+if (!$opt_skip_delete)
+{
+ do_query($dbh,"drop table bench1" . $server->{'drop_attr'});
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+$dbh->disconnect; # close connection
+
+end_benchmark($start_time);
diff --git a/sql-bench/bench-init.pl.sh b/sql-bench/bench-init.pl.sh
new file mode 100644
index 00000000..f23ef6f5
--- /dev/null
+++ b/sql-bench/bench-init.pl.sh
@@ -0,0 +1,615 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000-2003, 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+##########################################################
+# this is the base file every test is using ....
+# this is made for not changing every file if we want to
+# add an option or just want to change something in
+# code what is the same in every file ...
+##########################################################
+
+#
+# The exported values are:
+
+# $opt_... Various options
+# $date Current date in ISO format
+# $server Object for current server
+# $limits Hash reference to limits for benchmark
+
+$benchmark_version="2.15";
+use Getopt::Long;
+use POSIX;
+
+require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
+
+$|=1; # Output data immediately
+
+$opt_skip_test=$opt_skip_create=$opt_skip_delete=$opt_verbose=$opt_fast_insert=$opt_lock_tables=$opt_debug=$opt_skip_delete=$opt_fast=$opt_force=$opt_log=$opt_use_old_results=$opt_help=$opt_odbc=$opt_small_test=$opt_small_tables=$opt_samll_key_tables=$opt_stage=$opt_old_headers=$opt_die_on_errors=$opt_tcpip=$opt_random=$opt_only_missing_tests=$opt_temporary_tables=0;
+$opt_cmp=$opt_user=$opt_password=$opt_connect_options=$opt_connect_command= "";
+$opt_server="mysql"; $opt_dir="output";
+$opt_host="localhost";$opt_database="test";
+$opt_machine=""; $opt_suffix="";
+$opt_create_options=undef;
+$opt_optimization="None";
+$opt_hw="";
+$opt_threads=-1;
+
+if (!defined($opt_time_limit))
+{
+ $opt_time_limit=10*60; # Don't wait more than 10 min for some tests
+}
+
+$log_prog_args=join(" ", skip_arguments(\@ARGV,"comments","cmp","server",
+ "user", "host", "database", "password",
+ "use-old-results","skip-test",
+ "optimization","hw",
+ "machine", "dir", "suffix", "log"));
+GetOptions("skip-test=s","comments=s","cmp=s","server=s","user=s","host=s","database=s","password=s","loop-count=i","row-count=i","skip-create","skip-delete","verbose","fast-insert","lock-tables","debug","fast","force","field-count=i","regions=i","groups=i","time-limit=i","log","use-old-results","machine=s","dir=s","suffix=s","help","odbc","small-test","small-tables","small-key-tables","stage=i","threads=i","random","old-headers","die-on-errors","create-options=s","hires","tcpip","silent","optimization=s","hw=s","socket=s","connect-options=s","connect-command=s","only-missing-tests","temporary-tables") || usage();
+
+usage() if ($opt_help);
+$server=get_server($opt_server,$opt_host,$opt_database,$opt_odbc,
+ machine_part(), $opt_socket, $opt_connect_options);
+$limits=merge_limits($server,$opt_cmp);
+$date=date();
+@estimated=(0.0,0.0,0.0); # For estimated time support
+
+if ($opt_threads != -1)
+{
+ print "WARNING: Option --threads is deprecated and has no effect\n"
+}
+
+if ($opt_hires)
+{
+ eval "use Time::HiRes;";
+}
+
+{
+ my $tmp= $opt_server;
+ $tmp =~ s/_odbc$//;
+ if (length($opt_cmp) && index($opt_cmp,$tmp) < 0)
+ {
+ $opt_cmp.=",$tmp";
+ }
+}
+$opt_cmp=lc(join(",",sort(split(',',$opt_cmp))));
+
+#
+# set opt_lock_tables if one uses --fast and drivers supports it
+#
+
+if (($opt_lock_tables || $opt_fast) && $server->{'limits'}->{'lock_tables'})
+{
+ $opt_lock_tables=1;
+}
+else
+{
+ $opt_lock_tables=0;
+}
+if ($opt_fast)
+{
+ $opt_fast_insert=1;
+ $opt_suffix="_fast" if (!length($opt_suffix));
+}
+
+if ($opt_odbc)
+{
+ $opt_suffix="_odbc" if (!length($opt_suffix));
+}
+
+if (!$opt_silent)
+{
+ print "Testing server '" . $server->version() . "' at $date\n\n";
+}
+
+if ($opt_debug)
+{
+ print "\nCurrent limits: \n";
+ foreach $key (sort keys %$limits)
+ {
+ print $key . " " x (30-length($key)) . $limits->{$key} . "\n";
+ }
+ print "\n";
+}
+
+#
+# Some help functions
+#
+
+sub skip_arguments
+{
+ my($argv,@skip_args)=@_;
+ my($skip,$arg,$name,@res);
+
+ foreach $arg (@$argv)
+ {
+ if ($arg =~ /^\-+([^=]*)/)
+ {
+ $name=$1;
+ foreach $skip (@skip_args)
+ {
+ if (index($skip,$name) == 0)
+ {
+ $name=""; # Don't use this parameters
+ last;
+ }
+ }
+ push (@res,$arg) if (length($name));
+ }
+ }
+ return @res;
+}
+
+
+sub merge_limits
+{
+ my ($server,$cmp)= @_;
+ my ($name,$tmp_server,$limits,$res_limits,$limit,$tmp_limits);
+
+ $res_limits=$server->{'limits'};
+ if ($cmp)
+ {
+ foreach $name (split(",",$cmp))
+ {
+ $tmp_server= (get_server($name,$opt_host, $opt_database,
+ $opt_odbc,machine_part())
+ || die "Unknown SQL server: $name\n");
+ $limits=$tmp_server->{'limits'};
+ %new_limits=();
+ foreach $limit (keys(%$limits))
+ {
+ if (defined($res_limits->{$limit}) && defined($limits->{$limit}))
+ {
+ $new_limits{$limit}=min($res_limits->{$limit},$limits->{$limit});
+ }
+ }
+ %tmp_limits=%new_limits;
+ $res_limits=\%tmp_limits;
+ }
+ }
+ return $res_limits;
+}
+
+sub date
+{
+ my ($sec, $min, $hour, $mday, $mon, $year) = localtime(time());
+ sprintf("%04d-%02d-%02d %2d:%02d:%02d",
+ 1900+$year,$mon+1,$mday,$hour,$min,$sec);
+}
+
+sub min
+{
+ my($min)=$_[0];
+ my($i);
+ for ($i=1 ; $i <= $#_; $i++)
+ {
+ $min=$_[$i] if ($min > $_[$i]);
+ }
+ return $min;
+}
+
+sub max
+{
+ my($max)=$_[0];
+ my($i);
+ for ($i=1 ; $i <= $#_; $i++)
+ {
+ $max=$_[$i] if ($max < $_[$i]);
+ }
+ return $max;
+}
+
+
+#
+# Execute many statements in a row
+#
+
+sub do_many
+{
+ my ($dbh,@statements)=@_;
+ my ($statement,$sth);
+
+ foreach $statement (@statements)
+ {
+ if (!($sth=$dbh->do($statement)))
+ {
+ die "Can't execute command '$statement'\nError: $DBI::errstr\n";
+ }
+ }
+}
+
+sub safe_do_many
+{
+ my ($dbh,@statements)=@_;
+ my ($statement,$sth);
+
+ foreach $statement (@statements)
+ {
+ if (!($sth=$dbh->do($statement)))
+ {
+ print STDERR "Can't execute command '$statement'\nError: $DBI::errstr\n";
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+
+#
+# Do a query and fetch all rows from a statement and return the number of rows
+#
+
+sub fetch_all_rows
+{
+ my ($dbh,$query,$must_get_result)=@_;
+ my ($count,$sth);
+ $count=0;
+
+ print "$query: " if ($opt_debug);
+ if (!($sth= $dbh->prepare($query)))
+ {
+ print "\n" if ($opt_debug);
+ die "Error occurred with prepare($query)\n -> $DBI::errstr\n";
+ return undef;
+ }
+ if (!$sth->execute)
+ {
+ print "\n" if ($opt_debug);
+ if (defined($server->{'error_on_execute_means_zero_rows'}) &&
+ !$server->abort_if_fatal_error())
+ {
+ if (defined($must_get_result) && $must_get_result)
+ {
+ die "Error: Query $query didn't return any rows\n";
+ }
+ $sth->finish;
+ print "0\n" if ($opt_debug);
+ return 0;
+ }
+ die "Error occurred with execute($query)\n -> $DBI::errstr\n";
+ $sth->finish;
+ return undef;
+ }
+ while ($sth->fetchrow_arrayref)
+ {
+ $count++;
+ }
+ print "$count\n" if ($opt_debug);
+ if (defined($must_get_result) && $must_get_result && !$count)
+ {
+ die "Error: Query $query didn't return any rows\n";
+ }
+ $sth->finish;
+ undef($sth);
+ return $count;
+}
+
+sub do_query
+{
+ my($dbh,$query)=@_;
+ print "$query\n" if ($opt_debug);
+ $dbh->do($query) or
+ die "\nError executing '$query':\n$DBI::errstr\n";
+}
+
+#
+# Run a query X times
+#
+
+sub time_fetch_all_rows
+{
+ my($test_text,$result_text,$query,$dbh,$test_count)=@_;
+ my($i,$loop_time,$end_time,$count,$rows,$estimated);
+
+ print $test_text . "\n" if (defined($test_text));
+ $count=$rows=0;
+ $loop_time=new Benchmark;
+ for ($i=1 ; $i <= $test_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,$query) or die $DBI::errstr;
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i,
+ $test_count));
+ }
+ $end_time=new Benchmark;
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for $result_text ($count:$rows) " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+
+#
+# Handle estimated time of the server is too slow
+# Returns 0 if one should continue as normal
+#
+
+sub predict_query_time
+{
+ my ($loop_time,$end_time,$count_ref,$loop,$loop_count)= @_;
+ my ($k,$tmp);
+
+ if (($end_time->[0] - $loop_time->[0]) > $opt_time_limit)
+ {
+ # We can't wait until the SUN dies. Try to predict the end time
+ if ($loop != $loop_count)
+ {
+ $tmp=($end_time->[0] - $loop_time->[0]);
+ print "Note: Query took longer then time-limit: $opt_time_limit\nEstimating end time based on:\n";
+ print "$$count_ref queries in $loop loops of $loop_count loops took $tmp seconds\n";
+ for ($k=0; $k < 3; $k++)
+ {
+ $tmp=$loop_time->[$k]+($end_time->[$k]-$loop_time->[$k])/$loop*
+ $loop_count;
+ $estimated[$k]+=($tmp-$end_time->[$k]);
+ $end_time->[$k]=$tmp;
+ }
+ $$count_ref= int($$count_ref/$loop*$loop_count);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#
+# standard end of benchmark
+#
+
+sub end_benchmark
+{
+ my ($start_time)=@_;
+
+ $end_time=new Benchmark;
+ if ($estimated[0])
+ {
+ print "Estimated total time: ";
+ $end_time->[0]+=$estimated[0];
+ $end_time->[1]+=$estimated[1];
+ $end_time->[2]+=$estimated[2];
+ }
+ else
+ {
+ print "Total time: "
+ }
+ print timestr(timediff($end_time, $start_time),"all") . "\n";
+ exit 0;
+}
+
+sub print_time
+{
+ my ($estimated)=@_;
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+}
+
+#
+# Create a filename part for the machine that can be used for log file.
+#
+
+sub machine_part
+{
+ my ($name,$orig);
+ return $opt_machine if (length($opt_machine)); # Specified by user
+# Specified by user
+ $orig=$name=machine();
+ $name="win9$1" if ($orig =~ /win.*9(\d)/i);
+ $name="NT_$1" if ($orig =~ /Windows NT.*(\d+\.\d+)/i);
+ $name="win2k" if ($orig =~ /Windows 2000/i);
+ $name =~ s/\s+/_/g; # Make the filenames easier to parse
+ $name =~ s/-/_/g;
+ $name =~ s/\//_/g;
+ return $name;
+}
+
+sub machine
+{
+ my @name = POSIX::uname();
+ my $name= $name[0] . " " . $name[2] . " " . $name[4];
+ return $name;
+}
+
+#
+# Usage
+#
+
+sub usage
+{
+ print <<EOF;
+The MySQL benchmarks Ver $benchmark_version
+
+All benchmarks takes the following options:
+
+--comments
+ Add a comment to the benchmark output. Comments should contain
+ extra information that 'uname -a' doesn\'t give and if the database was
+ stared with some specific, non default, options.
+
+--cmp=server[,server...]
+ Run the test with limits from the given servers. If you run all servers
+ with the same --cmp, you will get a test that is comparable between
+ the different sql servers.
+
+--create-options=#
+ Extra argument to all create statements. If you for example want to
+ create all MySQL tables as InnoDB tables use:
+ --create-options=ENGINE=InnoDB
+
+--temporary-tables
+ Use temporary tables for all tests.
+
+--database (Default $opt_database)
+ In which database the test tables are created.
+
+--debug
+ This is a test specific option that is only used when debugging a test.
+ Print out debugging information.
+
+--dir (Default $opt_dir)
+ Option to 'run-all-tests' to where the test results should be stored.
+
+--fast
+ Allow the database to use non standard ANSI SQL commands to make the
+ test go faster.
+
+--fast-insert
+ Use "insert into table_name values(...)" instead of
+ "insert into table_name (....) values(...)"
+ If the database supports it, some tests uses multiple value lists.
+
+--field-count
+ This is a test specific option that is only used when debugging a test.
+ This usually means how many fields there should be in the test table.
+
+--force
+ This is a test specific option that is only used when debugging a test.
+ Continue the test even if there is some error.
+ Delete tables before creating new ones.
+
+--groups (Default $opt_groups)
+ This is a test specific option that is only used when debugging a test.
+ This usually means how many different groups there should be in the test.
+
+--lock-tables
+ Allow the database to use table locking to get more speed.
+
+--log
+ Option to 'run-all-tests' to save the result to the '--dir' directory.
+
+--loop-count (Default $opt_loop_count)
+ This is a test specific option that is only used when debugging a test.
+ This usually means how many times times each test loop is executed.
+
+--help
+ Shows this help
+
+--host='host name' (Default $opt_host)
+ Host name where the database server is located.
+
+--machine="machine or os_name"
+ The machine/os name that is added to the benchmark output filename.
+ The default is the OS name + version.
+
+--odbc
+ Use the ODBC DBI driver to connect to the database.
+
+--only-missing-tests
+ Only run test that don\'t have an old test result.
+ This is useful when you want to do a re-run of tests that failed in last run.
+
+--optimization='some comments'
+ Add coments about optimization of DBMS, which was done before the test.
+
+--password='password'
+ Password for the current user.
+
+--socket='socket'
+ If the database supports connecting through a Unix socket,
+ then use this socket to connect
+
+--regions
+ This is a test specific option that is only used when debugging a test.
+ This usually means how AND levels should be tested.
+
+--old-headers
+ Get the old benchmark headers from the old RUN- file.
+
+--server='server name' (Default $opt_server)
+ Run the test on the given SQL server.
+ Known servers names are: Access, Adabas, AdabasD, Empress, Oracle,
+ Informix, DB2, mSQL, MS-SQL, MySQL, Pg, Solid and Sybase
+
+--silent
+ Don't print info about the server when starting test.
+
+--skip-delete
+ This is a test specific option that is only used when debugging a test.
+ This will keep the test tables after the test is run.
+
+--skip-test=test1[,test2,...]
+ For run-all-programs; Don\'t execute the named tests.
+
+--small-test
+ This runs some tests with smaller limits to get a faster test.
+ Can be used if you just want to verify that the database works, but
+ don't have time to run a full test.
+
+--small-tables
+ This runs some tests that generate big tables with fewer rows.
+ This can be used with databases that can\'t handle that many rows
+ because of pre-sized partitions.
+
+--suffix (Default $opt_suffix)
+ The suffix that is added to the database name in the benchmark output
+ filename. This can be used to run the benchmark multiple times with
+ different server options without overwritten old files.
+ When using --fast the suffix is automaticly set to '_fast'.
+
+--random
+ Inform test suite that we are generate random initial values for sequence of
+ test executions. It should be used for imitation of real conditions.
+
+--threads=# **DEPRECATED**
+ This option has no effect, and will be removed in a future version.
+
+--tcpip
+ Inform test suite that we are using TCP/IP to connect to the server. In
+ this case we can\t do many new connections in a row as we in this case may
+ fill the TCP/IP stack
+
+--time-limit (Default $opt_time_limit)
+ How long a test loop is allowed to take, in seconds, before the end result
+ is 'estimated'.
+
+--use-old-results
+ Option to 'run-all-tests' to use the old results from the '--dir' directory
+ instead of running the tests.
+
+--user='user_name'
+ User name to log into the SQL server.
+
+--verbose
+ This is a test specific option that is only used when debugging a test.
+ Print more information about what is going on.
+
+--hw='some comments'
+ Add coments about hardware used for this test.
+
+--connect-options='some connect options'
+ Add options, which uses at DBI connect.
+ For example --connect-options=mysql_read_default_file=/etc/my.cnf.
+
+--connect-command='SQL command'
+ Initialization command to execute when logged in. Useful for setting
+ up the environment.
+
+EOF
+ exit(0);
+}
+
+
+
+####
+#### The end of the base file ...
+####
+1;
diff --git a/sql-bench/compare-results.sh b/sql-bench/compare-results.sh
new file mode 100644
index 00000000..06e247ba
--- /dev/null
+++ b/sql-bench/compare-results.sh
@@ -0,0 +1,620 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# a little program to generate a table of results
+# just read all the RUN-*.log files and format them nicely
+# Made by Luuk de Boer
+# Patched by Monty
+
+use Getopt::Long;
+
+$opt_server="mysql";
+$opt_dir="output";
+$opt_machine=$opt_cmp="";
+$opt_relative=$opt_same_server=$opt_help=$opt_Information=$opt_skip_count=$opt_no_bars=$opt_verbose=0;
+
+GetOptions("Information","help","server=s","cmp=s","machine=s","relative","same-server","dir=s","skip-count","no-bars","html","verbose") || usage();
+
+usage() if ($opt_help || $opt_Information);
+
+$opt_cmp=lc(join(",",sort(split(',',$opt_cmp))));
+
+if ($opt_same_server)
+{
+ $files="$opt_dir/RUN-$opt_server*$opt_machine";
+}
+else
+{
+ $files="$opt_dir/RUN-*$opt_machine";
+}
+$files.= "-cmp-$opt_cmp" if (length($opt_cmp));
+
+#
+# Go trough all RUN files and gather statistics.
+#
+
+if ($#ARGV == -1)
+{
+ @ARGV=glob($files);
+ $automatic_files=1;
+}
+
+foreach (@ARGV)
+{
+ next if (!$opt_cmp && /-cmp-/ && $automatic_files || defined($found{$_}));
+ $prog=$filename = $_;
+ $found{$_}=1; # Remove dupplicates
+ /RUN-(.*)$/;
+ $tot{$prog}{'version'}=$1;
+ push(@key_order,$prog);
+ $next = 0;
+ open(TMP, "<$filename") || die "Can't open $filename: $!\n";
+ while (<TMP>)
+ {
+ chomp;
+ if ($next == 0) {
+ if (/Server version:\s+(\S+.*)/i)
+ {
+ $tot{$prog}{'server'} = $1;
+ }
+ elsif (/Arguments:\s+(.+)/i)
+ {
+ $arguments= $1;
+ # Remove some standard, not informative arguments
+ $arguments =~ s/--force|--log|--use-old\S*|--server=\S+|--cmp=\S+|--user=\S+|--pass=\S+|--machine=\S+|--dir=\S+//g;
+ if (($tmp=index($arguments,"--comment")) >= 0)
+ {
+ if (($end=index($arguments,$tmp+2,"--")) >= 0)
+ {
+ substr($arguments,$tmp,($end-$tmp))="";
+ }
+ else
+ {
+ $arguments=substr($arguments,0,$tmp);
+ }
+ }
+ $arguments =~ s/\s+/ /g;
+ $tot{$prog}{'arguments'}=$arguments;
+ }
+ elsif (/Comments:\s+(.+)/i) {
+ $tot{$prog}{'comments'} = $1;
+ } elsif (/^(\S+):.*(estimated\s|)total\stime:\s+([\d.]+)\s+(wallclock\s|)secs/i)
+ {
+ $tmp = $1; $tmp =~ s/://;
+ $tot{$prog}{$tmp} = [ $3, (length($2) ? "+" : "")];
+ $op1{$tmp} = $tmp;
+ } elsif (/Totals per operation:/i) {
+ $next = 1;
+ next;
+ }
+ }
+ elsif ($next == 1)
+ {
+ if (/^(\S+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s*([+|?])*/)
+ {
+ $tot1{$prog}{$1} = [$2,$6,$7];
+ $op{$1} = $1;
+ }
+ }
+ }
+}
+
+if (!%op)
+{
+ print "Didn't find any files matching: '$files'\n";
+ print "Use the --cmp=server,server option to compare benchmarks\n";
+ exit 1;
+}
+
+
+# everything is loaded ...
+# now we have to create a fancy output :-)
+
+# I prefer to redirect scripts instead to force it to file ; Monty
+#
+# open(RES, ">$resultfile") || die "Can't write to $resultfile: $!\n";
+# select(RES)
+#
+
+if ($opt_html) {
+ html_output();
+} else {
+ ascii_output();
+}
+exit 0;
+
+#
+# some output + format functions;
+#
+
+sub ascii_output {
+ print <<EOF;
+This is the result file of the different benchmark tests.
+
+The number in () after each tests shows how many SQL commands the particular
+test did. As one test may have many different parameters this gives only
+a rough picture of what was done. Check the source for more information :)
+
+Keep in mind that one can\'t compare benchmarks run with different --cmp
+options. The --cmp options sets the all limits according to the worst
+limit for all server in the benchmark.
+
+Numbers marked with '+' are estimated according to previous runs because
+the query took longer than a given time-limit to finish. The estimation
+shouldn\'t be far from the real result thought.
+
+Numbers marked with '?' contains results that gave wrong result. This can only
+be used as an indication of how long it took for the server to produce a wrong
+result :)
+
+Numbers marked with '*' are tests that was run a different number times
+than the test in the first column. The reason for this is normally that the
+marked test was run with different options that affects the number of tests
+or that the test was from another version of the MySQL benchmarks.
+
+Hope this will give you some idea how each db is performing at what thing ....
+Hope you like it .... Luuk & Monty (1997)
+
+EOF
+
+ if ($opt_relative)
+ {
+ print "Column 1 is in seconds. All other columns are presented relative\n";
+ print "to this. 1.00 is the same, bigger numbers indicates slower\n\n";
+ }
+
+ if ($opt_verbose)
+ {
+ print "The test values is printed in the format 'time:number of tests'\n";
+ }
+
+ if (length($opt_cmp))
+ {
+ print "The test was run with limits from: $opt_cmp\n\n";
+ }
+ print "The result logs which where found and the options:\n";
+ $bar= $opt_no_bars ? " " : "|";
+
+ # Move $opt_server first in array if not filename on command line
+ if ($automatic_files)
+ {
+ @key_order=sort {$a cmp $b} keys %tot;
+ for ($i=0; $i <= $#key_order; $i++)
+ {
+ if ($tot{$key_order[$i]}{'version'} =~ /^$opt_server-/)
+ {
+ unshift(@key_order,$key_order[$i]);
+ splice(@key_order,$i+1,1);
+ last;
+ }
+ }
+ }
+ # Print header
+
+ $column_count=0;
+ foreach $key (@key_order)
+ {
+ $tmp=$tmp=$tot{$key}{'version'};
+ $tmp =~ s/-cmp-$opt_cmp// if (length($opt_cmp));
+ $column_count++;
+ printf "%2d %-40.40s: %s %s\n", $column_count, $tmp,
+ $tot{$key}{'server'}, $tot{$key}{'arguments'};
+ print " $tot{$key}{'comments'}\n"
+ if ($tot{$key}{'comments'} =~ /\w+/);
+ }
+
+ print "\n";
+
+ $namewidth=($opt_skip_count && !$opt_verbose) ? 29 : 36;
+ $colwidth= $opt_relative ? 10 : 7;
+ $count_width=7;
+ $colwidth+=$count_width if ($opt_verbose);
+
+ print_sep("=");
+ printf "%-$namewidth.${namewidth}s${bar}", "Operation";
+ $count = 1;
+ foreach $key (@key_order)
+ {
+ printf "%${colwidth}d${bar}", $count;
+ $count++;
+ }
+ printf "\n%-$namewidth.${namewidth}s${bar}", "";
+ foreach $key (@key_order)
+ {
+ $ver=$tot{$key}{'version'};
+ $ver =~ s/-[a-zA-Z0-9_\.]+-cmp-$opt-cmp$//;
+ printf "%${colwidth}.${colwidth}s${bar}", $ver;
+ }
+ print "\n";
+ print_sep("-");
+ print_string($opt_relative ? "Relative results per test (First column is in seconds):" : "Results per test in seconds:");
+ print_sep("-");
+
+ foreach $key (sort {$a cmp $b} keys %op1)
+ {
+ printf "%-$namewidth.${namewidth}s${bar}", $key;
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ print_value($first,$tot{$server}{$key}->[0],undef(),$tot{$server}{$key}->[1]);
+ $first=$tot{$server}{$key}->[0] if (!defined($first));
+ }
+ print "\n";
+ }
+
+ print_sep("-");
+ print_string("The results per operation:");
+ print_sep("-");
+
+ foreach $key (sort {$a cmp $b} keys %op)
+ {
+ next if ($key =~ /TOTALS/i);
+ $tmp=$key;
+ $count=$tot1{$key_order[0]}{$key}->[1];
+ $tmp.= " (" . $count . ")" if (!$skip_count);
+ printf "%-$namewidth.${namewidth}s${bar}", $tmp;
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ $tmp= $count != $tot1{$server}{$key}->[1] ? "*" : "";
+ print_value($first,$tot1{$server}{$key}->[0],$tot1{$server}{$key}->[1],
+ $tot1{$server}{$key}->[2] . $tmp);
+ $first=$tot1{$server}{$key}->[0] if (!defined($first));
+ }
+ print "\n";
+ }
+
+ print_sep("-");
+ $key="TOTALS";
+ printf "%-$namewidth.${namewidth}s${bar}", $key;
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ print_value($first,$tot1{$server}{$key}->[0],undef(),
+ $tot1{$server}{$key}->[2]);
+ $first=$tot1{$server}{$key}->[0] if (!defined($first));
+ }
+ print "\n";
+ print_sep("=");
+}
+
+
+sub html_output
+{
+ my $template="template.html";
+ my $title="MySQL | | Information | Benchmarks | Compare with $opt_cmp";
+ my $image="info.gif";
+ $bar="";
+
+ open(TEMPLATE, $template) || die;
+ while (<TEMPLATE>)
+ {
+ if (/<center>/)
+ {
+ print $_;
+ print "<!---- This is AUTOMATICALLY Generated. Do not edit here! ---->\n";
+ }
+ elsif (/TITLE:SUBTITLE/)
+ {
+ s|TITLE:SUBTITLE|$title|;
+ print $_;
+ }
+ elsif (/TITLE:COMPARE/)
+ {
+ s|TITLE:COMPARE|$opt_cmp|;
+ print $_;
+ }
+ elsif (/ subchapter name /)
+ {
+ # Nothing here for now
+ print $_;
+ }
+ elsif (/ text of chapter /)
+ {
+ print $_;
+ print_html_body();
+ }
+ else
+ {
+ print $_;
+ }
+ }
+ close(TEMPLATE);
+}
+
+
+sub print_html_body
+{
+ my ($title,$count,$key);
+ print <<EOF;
+<center>
+<font size=+4><b>MySQL Benchmark Results</b></font><br>
+<font size=+1><b>Compare with $opt_cmp</b></font><p><p>
+</center>
+This is the result file of the different benchmark tests.
+<p>
+
+The number in () after each tests shows how many SQL commands the particular
+test did. As one test may have many different parameters this gives only
+a rough picture of what was done. Check the source for more information.
+<p>
+Keep in mind that one can\'t compare benchmarks run with different --cmp
+options. The --cmp options sets the all limits according to the worst
+limit for all server in the benchmark.
+<p>
+Numbers marked with '+' are estimated according to previous runs because
+the query took longer than a given time-limit to finish. The estimation
+shouldn\'t be far from the real result thought.
+<p>
+Numbers marked with '?' contains results that gave wrong result. This can only
+be used as an indication of how long it took for the server to produce a wrong
+result :)
+<p>
+Hope this will give you some idea how each db is performing at what thing ....
+<br>
+Hope you like it .... Luuk & Monty (1997)
+<p><p>
+EOF
+
+ if ($opt_relative)
+ {
+ print "Column 1 is in seconds. All other columns are presented relative<br>\n";
+ print "to this. 1.00 is the same, bigger numbers indicates slower<p>\n\n";
+ }
+
+ if (length($opt_cmp))
+ {
+ print "The test was run with limits from: $opt_cmp\n\n";
+ }
+ print "The result logs which where found and the options:<br>\n";
+
+ # Move $opt_server first in array
+ if ($automatic_files)
+ {
+ @key_order=sort {$a cmp $b} keys %tot;
+ for ($i=0; $i <= $#key_order; $i++)
+ {
+ if ($tot{$key_order[$i]}{'version'} =~ /^$opt_server-/)
+ {
+ unshift(@key_order,$key_order[$i]);
+ splice(@key_order,$i+1,1);
+ last;
+ }
+ }
+ }
+ # Print header
+ print "<p><center><table border=1 width=100%>\n";
+ $column_count=0;
+ foreach $key (@key_order)
+ {
+ $tmp=$tot{$key}{'version'};
+ $tmp =~ s/-cmp-$opt_cmp// if (length($opt_cmp));
+ $column_count++;
+# printf "<tr><td>%2d<td>%-36.36s<td>%s %s</tr>\n", $column_count, $tmp,
+ printf "<tr><td>%2d</td><td>%s</td><td>%s %s</td></tr>\n",
+ $column_count, $tmp, $tot{$key}{'server'}, $tot{$key}{'arguments'};
+ print "<tr><td colspan=3>$tot{$key}{'comments'}</td></tr>\n"
+ if ($tot{$key}{'comments'} =~ /\w+/);
+ }
+
+ print "</table></center><p><center><table border=1 width=100%>\n";
+
+ $namewidth=$opt_skip_count ? 22 :29;
+ $colwidth= $opt_relative ? 10 : 7;
+ $count_width=7;
+
+ printf "<tr><td><b>%s</b></td>\n", "Operation";
+ $count = 1;
+ foreach $key (@key_order)
+ {
+ $ver=$tot{$key}{'version'};
+ printf "<td align=center><b>%d", $count;
+ printf "<br>%${colwidth}.${colwidth}s</b></td>\n", substr($ver,0,index($ver,"-"));
+ $count++;
+ }
+ print "</tr>\n";
+ $title = $opt_relative ? "Relative results per test (First column is in seconds):" : "Results per test in seconds:";
+ printf "<tr><td colspan=%d><b>%s</b></td></tr>\n", $count, $title;
+
+ foreach $key (sort {$a cmp $b} keys %op1)
+ {
+ if (!$opt_html)
+ {
+ printf "<tr><td>%-$namewidth.${namewidth}s</td>", $key;
+ }
+ else
+ {
+ print "<tr><td>$key</td>";
+ }
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ print_value($first,$tot{$server}{$key}->[0],undef(),
+ $tot{$server}{$key}->[1]);
+ $first=$tot{$server}{$key}->[0] if (!defined($first));
+ }
+ print "</tr>\n";
+ }
+
+ $title = "The results per operation:";
+ printf "<tr><td colspan=%d><b>%s</b></td></tr>\n", $count, $title;
+
+ foreach $key (sort {$a cmp $b} keys %op)
+ {
+ next if ($key =~ /TOTALS/i);
+ $tmp=$key;
+ $tmp.= " (" . $tot1{$key_order[0]}{$key}->[1] . ")" if (!$skip_count);
+ if (!$opt_html)
+ {
+ printf "<tr><td>%-$namewidth.${namewidth}s</td>", $tmp;
+ }
+ else
+ {
+ print "<tr><td>$tmp</td>";
+ }
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ print_value($first,$tot1{$server}{$key}->[0],
+ $tot1{$server}{$key}->[1],
+ $tot1{$server}{$key}->[2]);
+ $first=$tot1{$server}{$key}->[0] if (!defined($first));
+ }
+ print "</tr>\n";
+ }
+
+ $key="TOTALS";
+ printf "<tr><td><b>%-$namewidth.${namewidth}s</b></td>", $key;
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ print_value($first,$tot1{$server}{$key}->[0],undef(),
+ $tot1{$server}{$key}->[2]);
+ $first=$tot1{$server}{$key}->[0] if (!defined($first));
+ }
+ print "</tr>\n</table>\n";
+}
+
+
+sub print_sep
+{
+ my ($sep)=@_;
+ print $sep x ($namewidth + (($colwidth+1) * $column_count)+1),"\n";
+}
+
+
+sub print_value
+{
+ my ($first,$value,$count,$flags)=@_;
+ my ($tmp,$width);
+
+ if (defined($value))
+ {
+ if (!defined($first) || !$opt_relative)
+ {
+ $tmp=sprintf("%.2f",$value);
+ }
+ else
+ {
+ $first=1 if ($first == 0); # Assume that it took one second instead of 0
+ $tmp= sprintf("%.3f",$value/$first);
+ }
+ if (defined($flags))
+ {
+ $tmp="+".$tmp if ($flags =~ /\+/);
+ $tmp="?".$tmp if ($flags =~ /\?/);
+ $tmp="*".$tmp if ($flags =~ /\*/);
+ }
+ }
+ else
+ {
+ $tmp="";
+ }
+ $width= ($opt_verbose ? $colwidth - $count_width : $colwidth);
+ if (!$opt_html)
+ {
+ $tmp= " " x ($width-length($tmp)) . $tmp if (length($tmp) < $width);
+ }
+ if ($opt_verbose)
+ {
+ if ($count)
+ {
+ $tmp.= ":" . " " x ($count_width-1-length($count)) . $count;
+ }
+ else
+ {
+ $tmp.= " " x ($count_width);
+ }
+ }
+
+ if (!$opt_html) {
+ print $tmp . "${bar}";
+ } else {
+ print "<td align=right>$tmp</td>";
+ }
+}
+
+
+sub print_string
+{
+ my ($str)=@_;
+ if (!$opt_html)
+ {
+ my ($width);
+ $width=$namewidth + ($colwidth+1)*$column_count;
+ $str=substr($str,1,$width) if (length($str) > $width);
+ print($str," " x ($width - length($str)),"${bar}\n");
+ }
+ else
+ {
+ print $str,"\n";
+ }
+}
+
+
+sub usage
+{
+ print <<EOF;
+$0 Ver 1.2
+
+This program parses all RUN files from old 'run-all-tests --log' scripts
+and makes a nice comparable table.
+
+$0 takes currently the following options:
+
+--help or --Information
+ Shows this help
+
+--cmp=server,server,server (Default $opt_cmp)
+Compares all runs that are done with the same --cmp options to run-all-tests.
+The most normal options are '--cmp=mysql,pg,solid' and '--cmp ""'
+
+--dir=... (Default $opt_dir)
+From which directory one should get the runs. All runs made by
+run-all-tests --log is saved in the 'output' directory.
+In the 'results' directory you may have some example runs from different
+databases.
+
+--html
+ Print the table in html format.
+
+--machine='full-machine-name' (Default $opt_machine)
+Use only runs that match this machine.
+
+--relative
+Show all numbers in times of the first server where the time for the
+first server is 1.0
+
+--same-server
+Compare all runs for --server=.... The --machine is not used in this case
+This is nice to compare how the same server runs on different machines.
+
+--server='server name' (Default $opt_server)
+Put this server in the first result column.
+
+--skip-count
+Do not write the number of tests after the test-name.
+
+--verbose
+Write the number of tests in each column. This is useful when some column
+is marked with '*'.
+EOF
+
+ exit(0);
+}
diff --git a/sql-bench/copy-db.sh b/sql-bench/copy-db.sh
new file mode 100644
index 00000000..d70472fe
--- /dev/null
+++ b/sql-bench/copy-db.sh
@@ -0,0 +1,373 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# start initialition
+#
+
+$VER = "1.0";
+
+use Getopt::Long;
+use Cwd;
+use DBI;
+
+$max_row_length=500000; # Don't create bigger SQL rows that this
+$opt_lock=1; # lock tables
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+
+require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
+
+$|=1;
+
+$opt_from_server= $opt_to_server= "mysql";
+$opt_from_host= $opt_to_host= "localhost";
+$opt_from_db= $opt_to_db= "test";
+$opt_from_user=$opt_from_password=$opt_to_user=$opt_to_password="";
+$opt_help=$opt_verbose=$opt_debug=0;
+
+
+GetOptions("from-server=s","to-server=s","from-host=s","to-host=s","from-db=s",
+ "to-db=s", "help", "verbose","debug") || usage();
+
+usage() if ($opt_help ||
+ ($opt_from_server eq $opt_to_server &&
+ $opt_from_db eq $opt_to_db &&
+ $opt_from_host eq $opt_to_host));
+
+####
+#### Usage
+####
+
+
+sub usage
+{
+ print <<EOF;
+
+$0 version $VER by Monty
+
+ Copies tables between two database servers. If the destination table doesn\'t
+ exist it\'s autoamticly created. If the destination table exists, it
+ should be compatible with the source table.
+
+ Because DBI doesn\'t provide full information about the columns in a table,
+ some columns may not have optimal types in a create tables. Any created
+ tables will also not have any keys!
+
+ Usage: $0 [options] tables...
+
+ Options:
+ --help Show this help and exit
+ --from-server Source server (Default: $opt_from_server)
+ --from-host Source hostname (Default: $opt_from_host)
+ --from-db Source database name (Default: $opt_from_db)
+ --from-user Source user (Default: $opt_from_password)
+ --from-password Source password (Default: $opt_from_password)
+ --to-server Destination server (Default: $opt_to_server)
+ --to-host Destination hostname (Default: $opt_to_host)
+ --to-db Destination database name (Default: $opt_to_db)
+ --to-user Destination user (Default: $opt_to_user)
+ --to-password Destination password (Default: $opt_to_password)
+ --verbose Be more verbose
+
+ If you the server names ends with _ODBC, then this program will connect
+ through ODBC instead of using a native driver.
+EOF
+ exit(0);
+}
+
+####
+#### Connect
+####
+
+$from_server=get_server($opt_from_server,$opt_from_host,$opt_from_db);
+$to_server=get_server($opt_to_server,$opt_to_host,$opt_to_db);
+
+$opt_user=$opt_from_user; $opt_password=$opt_from_password;
+print "- connecting to SQL servers\n" if ($opt_verbose);
+$from_dbh=$from_server->connect() || die "Can't connect to source server $opt_from_server on host $opt_from_host using db $opt_from_db";
+$opt_user=$opt_to_user; $opt_password=$opt_to_password;
+$to_dbh=$to_server->connect() || die "Can't connect to source server $opt_to_server on host $opt_to_host using db $opt_to_db";
+
+####
+#### Copy data
+####
+
+foreach $table (@ARGV)
+{
+
+ print "- querying $table\n" if ($opt_verbose);
+ $sth=$from_dbh->prepare("select * from $table") || die "Can't prepare query to get $table; $DBI::errstr";
+ $sth->execute || die "Can't execute query to get data from $table; $DBI::errstr";
+
+ if (!table_exists($to_server,$to_dbh,$table))
+ {
+ print "- creating $table\n" if ($opt_verbose);
+ $table_def=get_table_definition($from_server,$from_dbh,$sth);
+ do_many($to_dbh,$to_server->create($table,$table_def,[]));
+ }
+ if ($opt_lock && $to_server->{'lock_tables'})
+ {
+ print "- locking $table\n" if ($opt_verbose);
+ $to_dbh->do("lock tables $table WRITE");
+ }
+
+ $columns=$sth->{NUM_OF_FIELDS};
+ $columns_to_quote=get_columns_to_quote($sth);
+ $insert_multi_value=$sth->{'insert_multi_value'};
+ $query="insert into $table values"; $result="";
+
+ print "- copying $table\n" if ($opt_verbose);
+ while (($row = $sth->fetchrow_arrayref))
+ {
+ $tmp="(";
+ for ($i=0 ; $i < $columns ; $i++)
+ {
+ if ($columns_to_quote->[$i])
+ {
+ $tmp.= $to_dbh->quote($row->[$i]) . ",";
+ }
+ else
+ {
+ $tmp.= $row->[$i] . ",";
+ }
+ }
+ substr($tmp,-1)=")"; # Remove last ','
+ if ($insert_multi_value)
+ {
+ $to_dbh->do($query . $tmp) || die "Can't insert row: $DBI::errstr";
+ }
+ elsif (length($result)+length($tmp) >= $max_row_length && $result)
+ {
+ $to_dbh->do($query . $result) || die "Can't insert row: $DBI::errstr";
+ $result="";
+ }
+ elsif (length($result))
+ {
+ $result.= ",$tmp";
+ }
+ else
+ {
+ $result=$tmp;
+ }
+ }
+ if (length($result))
+ {
+ $to_dbh->do($query . $result) || die "Can't insert row: $DBI::errstr";
+ }
+ if ($opt_lock && $to_server->{'lock_tables'})
+ {
+ $to_dbh->do("unlock tables");
+ }
+}
+
+
+sub get_table_definition
+{
+ my ($server,$dbh,$sth)=@_;
+ my ($i,$names,$types,$scale,$precision,$nullable,@res);
+
+ $names=$sth->{NAME};
+ $types=$sth->{TYPE};
+ $nullable=$sth->{NULLABLE};
+ if (0)
+ {
+ # The following doesn't yet work
+ $scale=$sth->{SCALE};
+ $precision=$sth->{PRECISION};
+ }
+ else
+ {
+ my (@tmp);
+ @tmp= (undef()) x $sth->{NUM_OF_FIELDS};
+ $precision= $scale= \@tmp;
+ }
+ for ($i = 0; $i < $sth->{NUM_OF_FIELDS} ; $i++)
+ {
+ push(@res,$names->[$i] . " " .
+ odbc_to_sql($server,$types->[$i],$precision->[$i],$scale->[$i]) .
+ ($nullable->[$i] ? "" : " NOT NULL"));
+ }
+ return \@res;
+}
+
+
+sub odbc_to_sql
+{
+ my ($server,$type,$precision,$scale)=@_;
+
+ if ($type == DBI::SQL_CHAR())
+ {
+ return defined($precision) ? "char($precision)" : "varchar(255)";
+ }
+
+ if ($type == DBI::SQL_NUMERIC())
+ {
+ $precision=15 if (!defined($precision));
+ $scale=6 if (!defined($scale));
+ return "numeric($precision,$scale)";
+ }
+ if ($type == DBI::SQL_DECIMAL())
+ {
+ $precision=15 if (!defined($precision));
+ $scale=6 if (!defined($scale));
+ return "decimal($precision,$scale)";
+ }
+ if ($type == DBI::SQL_INTEGER())
+ {
+ return "integer" if (!defined($precision));
+ return "integer($precision)";
+ }
+ if ($type == DBI::SQL_SMALLINT())
+ {
+ return "smallint" if (!defined($precision));
+ return "smallint($precision)";
+ }
+ if ($type == DBI::SQL_FLOAT())
+ {
+ $precision=12 if (!defined($precision));
+ $scale=2 if (!defined($scale));
+ return "float($precision,$scale)";
+ }
+ if ($type == DBI::SQL_REAL())
+ {
+ $precision=12 if (!defined($precision));
+ $scale=2 if (!defined($scale));
+ return "float($precision,$scale)";
+ }
+ if ($type == DBI::SQL_DOUBLE())
+ {
+ $precision=22 if (!defined($precision));
+ $scale=2 if (!defined($scale));
+ return "double($precision,$scale)";
+ }
+ if ($type == DBI::SQL_VARCHAR())
+ {
+ $precision=255 if (!defined($precision));
+ return "varchar($precision)";
+ }
+ return "date" if ($type == DBI::SQL_DATE());
+ return "time" if ($type == DBI::SQL_TIME());
+ return "timestamp" if ($type == DBI::SQL_TIMESTAMP());
+ return $server->{'text'} if ($type == DBI::SQL_LONGVARCHAR());
+ return $server->{'blob'} if ($type == DBI::SQL_LONGVARBINARY());
+ if ($type == DBI::SQL_BIGINT())
+ {
+ return "bigint" if (!defined($precision));
+ return "bigint($precision)";
+ }
+ if ($type == DBI::SQL_TINYINT())
+ {
+ return "tinyint" if (!defined($precision));
+ return "tinyint($precision)";
+ }
+ die "Can't covert type '$type' to a ODBC type\n";
+}
+
+#
+# return an array with 1 for all coumns that we have to quote
+#
+
+sub get_columns_to_quote($sth)
+{
+ my ($sth)=@_;
+ my ($i,@res,$type,$tmp);
+
+ @res=();
+ for ($i = 0; $i < $sth->{NUM_OF_FIELDS} ; $i++)
+ {
+ $type=$sth->{TYPE}->[$i];
+ $tmp=1; # String by default
+ if ($type == DBI::SQL_NUMERIC() || $type == DBI::SQL_DECIMAL() ||
+ $type == DBI::SQL_INTEGER() || $type == DBI::SQL_SMALLINT() ||
+ $type == DBI::SQL_SMALLINT() || $type == DBI::SQL_FLOAT() ||
+ $type == DBI::SQL_REAL() || $type == DBI::SQL_DOUBLE() ||
+ $type == DBI::SQL_BIGINT() || $type == DBI::SQL_TINYINT())
+ {
+ $tmp=0;
+ }
+ push (@res,$tmp);
+ }
+ return \@res;
+}
+
+#
+# Check if table exists; Return 1 if table exists
+#
+
+sub table_exists
+{
+ my ($server,$dbh,$table)=@_;
+ if ($server->{'limits'}->{'group_functions'})
+ {
+ return !safe_query($dbh,"select count(*) from $table");
+ }
+ if ($server->{'limits'}->{'limit'})
+ {
+ return !safe_query($dbh,"select * from $table limit 1");
+ }
+ die "Don't know how to check if table '$table' exists in destination server\n";
+}
+
+
+#
+# execute query; return 0 if query is ok
+#
+
+sub safe_query
+{
+ my ($dbh,$query)=@_;
+ my ($sth);
+
+ print "query: $query\n" if ($opt_debug);
+ if (!($sth= $dbh->prepare($query)))
+ {
+ print "error: $DBI::errstr\n" if ($opt_debug);
+ return 1;
+ }
+ if (!$sth->execute)
+ {
+ print "error: $DBI::errstr\n" if ($opt_debug);
+ return 1
+ }
+ while ($sth->fetchrow_arrayref)
+ {
+ }
+ $sth->finish;
+ undef($sth);
+ return 0;
+}
+
+#
+# execute an array of queries
+#
+
+sub do_many
+{
+ my ($dbh,@statements)=@_;
+ my ($statement,$sth);
+
+ foreach $statement (@statements)
+ {
+ print "query: $statement\n" if ($opt_debug);
+ if (!($sth=$dbh->do($statement)))
+ {
+ die "Can't execute command '$statement'\nError: $DBI::errstr\n";
+ }
+ }
+}
diff --git a/sql-bench/crash-me.sh b/sql-bench/crash-me.sh
new file mode 100644
index 00000000..26f66f94
--- /dev/null
+++ b/sql-bench/crash-me.sh
@@ -0,0 +1,5036 @@
+#!/usr/bin/env perl
+# -*- perl -*-
+# Copyright (c) 2000-2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+
+# Written by Monty for the TCX/Monty Program/Detron benchmark suite.
+# Empress and PostgreSQL patches by Luuk de Boer
+# Extensions for ANSI SQL and Mimer by Bengt Gunne
+# Some additions and corrections by Matthias Urlich
+#
+# This programs tries to find all limits for a sql server
+# It gets the name from what it does to most servers :)
+#
+# Be sure to use --help before running this!
+#
+# If you want to add support for another server, add a new package for the
+# server in server-cfg. You only have to support the 'new' and 'version'
+# functions. new doesn't need to have any limits if one doesn't want to
+# use the benchmarks.
+#
+
+# TODO:
+# CMT includes types and functions which are synonyms for other types
+# and functions, including those in SQL9x. It should label those synonyms
+# as such, and clarify ones such as "mediumint" with comments such as
+# "3-byte int" or "same as xxx".
+
+$version="1.62";
+
+use Cwd;
+use DBI;
+use Getopt::Long;
+use POSIX;
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
+
+$opt_server="mysql"; $opt_host="localhost"; $opt_database="test";
+$opt_dir="limits";
+$opt_user=$opt_password="";$opt_verbose=1;
+$opt_debug=$opt_help=$opt_Information=$opt_restart=$opt_force=$opt_quick=0;
+$opt_log_all_queries=$opt_fix_limit_file=$opt_batch_mode=$opt_version=0;
+$opt_db_start_cmd=""; # the db server start command
+$opt_check_server=0; # Check if server is alive before each query
+$opt_sleep=10; # time to sleep while starting the db server
+$limit_changed=0; # For configure file
+$reconnect_count=0;
+$opt_suffix="";
+$opt_comment=$opt_config_file=$opt_log_queries_to_file="";
+$limits{'crash_me_safe'}='yes';
+$prompts{'crash_me_safe'}='crash me safe';
+$limits{'operating_system'}= machine();
+$prompts{'operating_system'}='crash-me tested on';
+$retry_limit=3;
+
+GetOptions("Information","help","server=s","debug","user=s","password=s",
+"database=s","restart","force","quick","log-all-queries","comment=s",
+"host=s","fix-limit-file","dir=s","db-start-cmd=s","sleep=s","suffix=s",
+"batch-mode","config-file=s","log-queries-to-file=s","check-server",
+"version",
+"verbose!" => \$opt_verbose) || usage();
+usage() if ($opt_help || $opt_Information);
+version() && exit(0) if ($opt_version);
+
+$opt_suffix = '-'.$opt_suffix if (length($opt_suffix) != 0);
+$opt_config_file = "$pwd/$opt_dir/$opt_server$opt_suffix.cfg"
+ if (length($opt_config_file) == 0);
+$log_prefix=' ###'; # prefix for log lines in result file
+$safe_query_log='';
+$safe_query_result_log='';
+$log{"crash-me"}="";
+
+#!!!
+
+if ($opt_fix_limit_file)
+{
+ print "Fixing limit file for $opt_server\n";
+ read_config_data();
+ $limit_changed=1;
+ save_all_config_data();
+ exit 0;
+}
+
+$server=get_server($opt_server,$opt_host,$opt_database);
+$opt_server=$server->{'cmp_name'};
+
+$|=1; # For debugging
+
+print "Running $0 $version on '",($server_version=$server->version()),"'\n\n";
+print "I hope you didn't have anything important running on this server....\n";
+read_config_data();
+if ($limit_changed) # Must have been restarted
+{
+ save_config_data('crash_me_safe','no',"crash me safe");
+}
+
+if (!$opt_force && !$opt_batch_mode)
+{
+ server_info();
+}
+else
+{
+ print "Using --force. I assume you know what you are doing...\n";
+}
+print "\n";
+
+save_config_data('crash_me_version',$version,"crash me version");
+if ($server_version)
+{
+ save_config_data('server_version',$server_version,"server version");
+}
+if (length($opt_comment))
+{
+ save_config_data('user_comment',$opt_comment,"comment");
+}
+
+$opt_log=0;
+if (length($opt_log_queries_to_file))
+{
+ open(LOG,">$opt_log_queries_to_file") ||
+ die "Can't open file $opt_log_queries_to_file\n";
+ $opt_log=1;
+}
+
+#
+# Set up some limits that's regared as unlimited
+# We don't want to take up all resources from the server...
+#
+
+$max_connections="+1000"; # Number of simultaneous connections
+$max_buffer_size="+16000000"; # size of communication buffer.
+$max_string_size="+8000000"; # Enough for this test
+$max_name_length="+512"; # Actually 256, but ...
+$max_keys="+64"; # Probably too big.
+$max_join_tables="+64"; # Probably too big.
+$max_columns="+8192"; # Probably too big.
+$max_row_length=$max_string_size;
+$max_key_length="+8192"; # Big enough
+$max_order_by="+64"; # Big enough
+$max_expressions="+10000";
+$max_big_expressions="+100";
+$max_stacked_expressions="+2000";
+$query_size=$max_buffer_size;
+$longreadlen=16000000; # For retrieval buffer
+
+
+#
+# First do some checks that needed for the rest of the benchmark
+#
+use sigtrap; # Must be removed with perl5.005_2 on Win98
+$SIG{PIPE} = 'IGNORE';
+$problem_counter=0;
+$SIG{SEGV} = sub {
+ $problem_counter +=1;
+ if ($problem_counter >= 100) {
+ die("Too many problems, try to restart");
+ } else {
+ warn('SEGFAULT');
+ };
+};
+$dbh=safe_connect();
+
+#
+# Test if the database require RESTRICT/CASCADE after DROP TABLE
+#
+
+# Really remove the crash_me table
+$prompt="drop table require cascade/restrict";
+$drop_attr="";
+$dbh->do("drop table crash_me");
+$dbh->do("drop table crash_me cascade");
+if (!safe_query_l('drop_requires_cascade',
+ ["create table crash_me (a integer not null)",
+ "drop table crash_me"]))
+{
+ $dbh->do("drop table crash_me cascade");
+ if (safe_query_l('drop_requires_cascade',
+ ["create table crash_me (a integer not null)",
+ "drop table crash_me cascade"]))
+ {
+ save_config_data('drop_requires_cascade',"yes","$prompt");
+ $drop_attr="cascade";
+ }
+ else
+ {
+ die "Can't create and drop table 'crash_me'\n";
+ }
+}
+else
+{
+ save_config_data('drop_requires_cascade',"no","$prompt");
+ $drop_attr="";
+}
+
+# Remove tables from old runs
+$dbh->do("drop table crash_me $drop_attr");
+$dbh->do("drop table crash_me2 $drop_attr");
+$dbh->do("drop table crash_me3 $drop_attr");
+$dbh->do("drop table crash_q $drop_attr");
+$dbh->do("drop table crash_q1 $drop_attr");
+
+$prompt="Tables without primary key";
+if (!safe_query_l('no_primary_key',
+ ["create table crash_me (a integer not null,b char(10) not null)",
+ "insert into crash_me (a,b) values (1,'a')"]))
+{
+ if (!safe_query_l('no_primary_key',
+ ["create table crash_me (a integer not null,b char(10) not null".
+ ", primary key (a))",
+ "insert into crash_me (a,b) values (1,'a')"]))
+ {
+ die "Can't create table 'crash_me' with one record: $DBI::errstr\n";
+ }
+ save_config_data('no_primary_key',"no",$prompt);
+}
+else
+{
+ save_config_data('no_primary_key',"yes",$prompt);
+}
+
+#
+# Define strings for character NULL and numeric NULL used in expressions
+#
+$char_null=$server->{'char_null'};
+$numeric_null=$server->{'numeric_null'};
+if ($char_null eq '')
+{
+ $char_null="NULL";
+}
+if ($numeric_null eq '')
+{
+ $numeric_null="NULL";
+}
+
+print "$prompt: $limits{'no_primary_key'}\n";
+
+report("SELECT without FROM",'select_without_from',"select 1");
+if ($limits{'select_without_from'} ne "yes")
+{
+ $end_query=" from crash_me";
+ $check_connect="select a from crash_me";
+}
+else
+{
+ $end_query="";
+ $check_connect="select 1";
+}
+
+assert($check_connect);
+assert("select a from crash_me where b<'b'");
+
+report("Select constants",'select_constants',"select 1 $end_query");
+report("Select table_name.*",'table_wildcard',
+ "select crash_me.* from crash_me");
+report("Allows \' and \" as string markers",'quote_with_"',
+ 'select a from crash_me where b<"c"');
+check_and_report("Double '' as ' in strings",'double_quotes',[],
+ "select 'Walker''s' $end_query",[],"Walker's",1);
+check_and_report("Multiple line strings","multi_strings",[],
+ "select a from crash_me where b < 'a'\n'b'",[],"1",0);
+check_and_report("\" as identifier quote (ANSI SQL)",'quote_ident_with_"',[],
+ 'select "A" from crash_me',[],"1",0);
+check_and_report("\` as identifier quote",'quote_ident_with_`',[],
+ 'select `A` from crash_me',[],"1",0);
+check_and_report("[] as identifier quote",'quote_ident_with_[',[],
+ 'select [A] from crash_me',[],"1",0);
+report('Double "" in identifiers as "','quote_ident_with_dbl_"',
+ 'create table crash_me1 ("abc""d" integer)',
+ 'drop table crash_me1');
+
+report("Column alias","column_alias","select a as ab from crash_me");
+report("Table alias","table_alias","select b.a from crash_me as b");
+report("Functions",'functions',"select 1+1 $end_query");
+report("Group functions",'group_functions',"select count(*) from crash_me");
+report("Group functions with distinct",'group_distinct_functions',
+ "select count(distinct a) from crash_me");
+report("Group functions with several distinct",'group_many_distinct_functions',
+ "select count(distinct a), count(distinct b) from crash_me");
+report("Group by",'group_by',"select a from crash_me group by a");
+report("Group by position",'group_by_position',
+ "select a from crash_me group by 1");
+report("Group by alias",'group_by_alias',
+ "select a as ab from crash_me group by ab");
+report("Group on unused column",'group_on_unused',
+ "select count(*) from crash_me group by a");
+
+report("Order by",'order_by',"select a from crash_me order by a");
+report("Order by position",'order_by_position',
+ "select a from crash_me order by 1");
+report("Order by function","order_by_function",
+ "select a from crash_me order by a+1");
+report("Order by on unused column",'order_on_unused',
+ "select b from crash_me order by a");
+# little bit deprecated
+#check_and_report("Order by DESC is remembered",'order_by_remember_desc',
+# ["create table crash_q (s int,s1 int)",
+# "insert into crash_q values(1,1)",
+# "insert into crash_q values(3,1)",
+# "insert into crash_q values(2,1)"],
+# "select s,s1 from crash_q order by s1 DESC,s",
+# ["drop table crash_q $drop_attr"],[3,2,1],7,undef(),3);
+report("Compute",'compute',
+ "select a from crash_me order by a compute sum(a) by a");
+report("INSERT with Value lists",'insert_multi_value',
+ "create table crash_q (s char(10))",
+ "insert into crash_q values ('a'),('b')",
+ "drop table crash_q $drop_attr");
+report("INSERT with set syntax",'insert_with_set',
+ "create table crash_q (a integer)",
+ "insert into crash_q SET a=1",
+ "drop table crash_q $drop_attr");
+report("INSERT with DEFAULT","insert_with_default",
+ "create table crash_me_q (a int)",
+ "insert into crash_me_q (a) values (DEFAULT)",
+ "drop table crash_me_q $drop_attr");
+
+report("INSERT with empty value list","insert_with_empty_value_list",
+ "create table crash_me_q (a int)",
+ "insert into crash_me_q (a) values ()",
+ "drop table crash_me_q $drop_attr");
+
+report("INSERT DEFAULT VALUES","insert_default_values",
+ "create table crash_me_q (a int)",
+ "insert into crash_me_q DEFAULT VALUES",
+ "drop table crash_me_q $drop_attr");
+
+report("allows end ';'","end_colon", "select * from crash_me;");
+try_and_report("LIMIT number of rows","select_limit",
+ ["with LIMIT",
+ "select * from crash_me limit 1"],
+ ["with TOP",
+ "select TOP 1 * from crash_me"]);
+report("SELECT with LIMIT #,#","select_limit2",
+ "select * from crash_me limit 1,1");
+report("SELECT with LIMIT # OFFSET #",
+ "select_limit3", "select * from crash_me limit 1 offset 1");
+
+# The following alter table commands MUST be kept together!
+if ($dbh->do("create table crash_q (a integer, b integer,c1 CHAR(10))"))
+{
+ report("Alter table add column",'alter_add_col',
+ "alter table crash_q add d integer");
+ report_one("Alter table add many columns",'alter_add_multi_col',
+ [["alter table crash_q add (f integer,g integer)","yes"],
+ ["alter table crash_q add f integer, add g integer","with add"],
+ ["alter table crash_q add f integer,g integer","without add"]] );
+ report("Alter table change column",'alter_change_col',
+ "alter table crash_q change a e char(50)");
+
+ # informix can only change data type with modify
+ report_one("Alter table modify column",'alter_modify_col',
+ [["alter table crash_q modify c1 CHAR(20)","yes"],
+ ["alter table crash_q alter c1 CHAR(20)","with alter"]]);
+ report("Alter table alter column default",'alter_alter_col',
+ "alter table crash_q alter b set default 10");
+ report_one("Alter table drop column",'alter_drop_col',
+ [["alter table crash_q drop column b","yes"],
+ ["alter table crash_q drop column b restrict",
+ "with restrict/cascade"]]);
+ report("Alter table rename table",'alter_rename_table',
+ "alter table crash_q rename to crash_q1");
+}
+# Make sure both tables will be dropped, even if rename fails.
+$dbh->do("drop table crash_q1 $drop_attr");
+$dbh->do("drop table crash_q $drop_attr");
+
+report("rename table","rename_table",
+ "create table crash_q (a integer, b integer,c1 CHAR(10))",
+ "rename table crash_q to crash_q1",
+ "drop table crash_q1 $drop_attr");
+# Make sure both tables will be dropped, even if rename fails.
+$dbh->do("drop table crash_q1 $drop_attr");
+$dbh->do("drop table crash_q $drop_attr");
+
+report("truncate","truncate_table",
+ "create table crash_q (a integer, b integer,c1 CHAR(10))",
+ "truncate table crash_q",
+ "drop table crash_q $drop_attr");
+
+if ($dbh->do("create table crash_q (a integer, b integer,c1 CHAR(10))") &&
+ $dbh->do("create table crash_q1 (a integer, b integer,c1 CHAR(10) not null)"))
+{
+ report("Alter table add constraint",'alter_add_constraint',
+ "alter table crash_q add constraint c2 check(a > b)");
+ report_one("Alter table drop constraint",'alter_drop_constraint',
+ [["alter table crash_q drop constraint c2","yes"],
+ ["alter table crash_q drop constraint c2 restrict",
+ "with restrict/cascade"]]);
+ report("Alter table add unique",'alter_add_unique',
+ "alter table crash_q add constraint u1 unique(c1)");
+ try_and_report("Alter table drop unique",'alter_drop_unique',
+ ["with constraint",
+ "alter table crash_q drop constraint u1"],
+ ["with constraint and restrict/cascade",
+ "alter table crash_q drop constraint u1 restrict"],
+ ["with drop key",
+ "alter table crash_q drop key u1"]);
+ try_and_report("Alter table add primary key",'alter_add_primary_key',
+ ["with constraint",
+ "alter table crash_q1 add constraint p1 primary key(c1)"],
+ ["with add primary key",
+ "alter table crash_q1 add primary key(c1)"]);
+ report("Alter table add foreign key",'alter_add_foreign_key',
+ "alter table crash_q add constraint f1 foreign key(c1) references crash_q1(c1)");
+ try_and_report("Alter table drop foreign key",'alter_drop_foreign_key',
+ ["with drop constraint",
+ "alter table crash_q drop constraint f1"],
+ ["with drop constraint and restrict/cascade",
+ "alter table crash_q drop constraint f1 restrict"],
+ ["with drop foreign key",
+ "alter table crash_q drop foreign key f1"]);
+ try_and_report("Alter table drop primary key",'alter_drop_primary_key',
+ ["drop constraint",
+ "alter table crash_q1 drop constraint p1 restrict"],
+ ["drop primary key",
+ "alter table crash_q1 drop primary key"]);
+}
+$dbh->do("drop table crash_q $drop_attr");
+$dbh->do("drop table crash_q1 $drop_attr");
+
+check_and_report("Case insensitive compare","case_insensitive_strings",
+ [],"select b from crash_me where b = 'A'",[],'a',1);
+check_and_report("Ignore end space in compare","ignore_end_space",
+ [],"select b from crash_me where b = 'a '",[],'a',1);
+check_and_report("Group on column with null values",'group_by_null',
+ ["create table crash_q (s char(10))",
+ "insert into crash_q values(null)",
+ "insert into crash_q values(null)"],
+ "select count(*),s from crash_q group by s",
+ ["drop table crash_q $drop_attr"],2,0);
+
+$prompt="Having";
+if (!defined($limits{'having'}))
+{ # Complicated because of postgreSQL
+ if (!safe_query_result_l("having",
+ "select a from crash_me group by a having a > 0",1,0))
+ {
+ if (!safe_query_result_l("having",
+ "select a from crash_me group by a having a < 0",
+ 1,0))
+ { save_config_data("having","error",$prompt); }
+ else
+ { save_config_data("having","yes",$prompt); }
+ }
+ else
+ { save_config_data("having","no",$prompt); }
+}
+print "$prompt: $limits{'having'}\n";
+
+if ($limits{'having'} eq 'yes')
+{
+ report("Having with group function","having_with_group",
+ "select a from crash_me group by a having count(*) = 1");
+}
+
+if ($limits{'column_alias'} eq 'yes')
+{
+ report("Order by alias",'order_by_alias',
+ "select a as ab from crash_me order by ab");
+ if ($limits{'having'} eq 'yes')
+ {
+ report("Having on alias","having_with_alias",
+ "select a as ab from crash_me group by a having ab > 0");
+ }
+}
+report("binary numbers (0b1001)","binary_numbers","select 0b1001 $end_query");
+report("hex numbers (0x41)","hex_numbers","select 0x41 $end_query");
+report("binary strings (b'0110')","binary_strings","select b'0110' $end_query");
+report("hex strings (x'1ace')","hex_strings","select x'1ace' $end_query");
+
+report_result("Value of logical operation (1=1)","logical_value",
+ "select (1=1) $end_query");
+
+report_result("Value of TRUE","value_of_true","select TRUE $end_query");
+report_result("Value of FALSE","value_of_false","select FALSE $end_query");
+
+$logical_value= $limits{'logical_value'};
+
+$false=0;
+$result="no";
+if ($res=safe_query_l('has_true_false',"select (1=1)=true $end_query")) {
+ $false="false";
+ $result="yes";
+}
+save_config_data('has_true_false',$result,"TRUE and FALSE");
+
+#
+# Check how many connections the server can handle:
+# We can't test unlimited connections, because this may take down the
+# server...
+#
+
+$prompt="Simultaneous connections (installation default)";
+print "$prompt: ";
+if (defined($limits{'connections'}))
+{
+ print "$limits{'connections'}\n";
+}
+else
+{
+ @connect=($dbh);
+
+ for ($i=1; $i < $max_connections ; $i++)
+ {
+ if (!($dbh=DBI->connect($server->{'data_source'},$opt_user,$opt_password,
+ { PrintError => 0})))
+ {
+ print "Last connect error: $DBI::errstr\n" if ($opt_debug);
+ last;
+ }
+ $dbh->{LongReadLen}= $longreadlen; # Set retrieval buffer
+ print "." if ($opt_debug);
+ push(@connect,$dbh);
+ }
+ print "$i\n";
+ save_config_data('connections',$i,$prompt);
+ foreach $dbh (@connect)
+ {
+ print "#" if ($opt_debug);
+ $dbh->disconnect || warn $dbh->errstr; # close connection
+ }
+
+ $#connect=-1; # Free connections
+
+ if ($i == 0)
+ {
+ print "Can't connect to server: $DBI::errstr.".
+ " Please start it and try again\n";
+ exit 1;
+ }
+ $dbh=retry_connect();
+}
+
+
+#
+# Check size of communication buffer, strings...
+#
+
+$prompt="query size";
+print "$prompt: ";
+if (!defined($limits{'query_size'}))
+{
+ $query="select ";
+ $first=64;
+ $end=$max_buffer_size;
+ $select= $limits{'select_without_from'} eq 'yes' ? 1 : 'a';
+
+ assert($query . "$select$end_query");
+
+ $first=$limits{'restart'}{'low'} if ($limits{'restart'}{'low'});
+
+ if ($limits{'restart'}{'tohigh'})
+ {
+ $end = $limits{'restart'}{'tohigh'} - 1;
+ print "\nRestarting this with low limit: $first and high limit: $end\n";
+ delete $limits{'restart'};
+ $first=$first+int(($end-$first+4)/5); # Prefere lower on errors
+ }
+ for ($i=$first ; $i < $end ; $i*=2)
+ {
+ last if (!safe_query($query .
+ (" " x ($i - length($query)-length($end_query) -1))
+ . "$select$end_query"));
+ $first=$i;
+ save_config_data("restart",$i,"") if ($opt_restart);
+ }
+ $end=$i;
+
+ if ($i < $max_buffer_size)
+ {
+ while ($first != $end)
+ {
+ $i=int(($first+$end+1)/2);
+ if (safe_query($query .
+ (" " x ($i - length($query)-length($end_query) -1)) .
+ "$select$end_query"))
+ {
+ $first=$i;
+ }
+ else
+ {
+ $end=$i-1;
+ }
+ }
+ }
+ save_config_data('query_size',$end,$prompt);
+}
+$query_size=$limits{'query_size'};
+
+print "$limits{'query_size'}\n";
+
+#
+# Check for reserved words
+#
+
+check_reserved_words($dbh);
+
+#
+# Test database types
+#
+
+@sql_types=("character(1)","char(1)","char varying(1)", "character varying(1)",
+ "boolean",
+ "varchar(1)",
+ "integer","int","smallint",
+ "numeric(9,2)","decimal(6,2)","dec(6,2)",
+ "bit", "bit(2)","bit varying(2)","float","float(8)","real",
+ "double precision", "date","time","timestamp",
+ "time(6)", "timestamp(6)",
+ "datetime", "datetime(6)",
+ "interval year", "interval year to month",
+ "interval month",
+ "interval day", "interval day to hour", "interval day to minute",
+ "interval day to second",
+ "interval hour", "interval hour to minute",
+ "interval hour to second",
+ "interval minute", "interval minute to second",
+ "interval second",
+ "national character varying(20)",
+ "national character(20)","nchar(1)",
+ "national char varying(20)","nchar varying(20)",
+ "national character varying(20)",
+ "timestamp with time zone");
+@odbc_types=("binary(1)","varbinary(1)","tinyint","bigint");
+@extra_types=("blob","byte","long varbinary","image","text","text(10)",
+ "mediumtext",
+ "long varchar(1)", "varchar2(257)",
+ "mediumint","middleint","int unsigned",
+ "int1","int2","int3","int4","int8","uint",
+ "money","smallmoney","float4","float8","smallfloat",
+ "float(6,2)","double",
+ "enum('red')","set('red')", "int(5) zerofill", "serial",
+ "char(10) binary","int not null auto_increment,unique(q)",
+ "abstime","year","datetime","smalldatetime","timespan","reltime",
+ # Sybase types
+ "int not null identity,unique(q)",
+ # postgres types
+ "box","bool","circle","polygon","point","line","lseg","path",
+ "interval", "inet", "cidr", "macaddr",
+
+ # oracle types
+ "varchar2(16)","nvarchar2(16)","number(9,2)","number(9)",
+ "number", "long","raw(16)","long raw","rowid","mlslabel","clob",
+ "nclob","bfile"
+ );
+
+@types=(["sql",\@sql_types],
+ ["odbc",\@odbc_types],
+ ["extra",\@extra_types]);
+
+foreach $types (@types)
+{
+ print "\nSupported $types->[0] types\n";
+ $tmp= $types->[1];
+ foreach $use_type (@$tmp)
+ {
+ $type=$use_type;
+ $type =~ s/\(.*\)/(1 arg)/;
+ if (index($use_type,",")>= 0)
+ {
+ $type =~ s/\(1 arg\)/(2 arg)/;
+ }
+ if (($tmp2=index($type,",unique")) >= 0)
+ {
+ $type=substr($type,0,$tmp2);
+ }
+ $tmp2=$type;
+ $tmp2 =~ s/ /_/g;
+ $tmp2 =~ s/_not_null//g;
+ report("Type $type","type_$types->[0]_$tmp2",
+ "create table crash_q (q $use_type)",
+ "drop table crash_q $drop_attr");
+ }
+}
+
+#
+# Test some type limits
+#
+
+
+check_and_report("Remembers end space in char()","remember_end_space",
+ ["create table crash_q (a char(10))",
+ "insert into crash_q values('hello ')"],
+ "select a from crash_q where a = 'hello '",
+ ["drop table crash_q $drop_attr"],
+ 'hello ',6);
+
+check_and_report("Remembers end space in varchar()",
+ "remember_end_space_varchar",
+ ["create table crash_q (a varchar(10))",
+ "insert into crash_q values('hello ')"],
+ "select a from crash_q where a = 'hello '",
+ ["drop table crash_q $drop_attr"],
+ 'hello ',6);
+
+if (($limits{'type_extra_float(2_arg)'} eq "yes" ||
+ $limits{'type_sql_decimal(2_arg)'} eq "yes") &&
+ (!defined($limits{'storage_of_float'})))
+{
+ my $type=$limits{'type_extra_float(2_arg)'} eq "yes" ? "float(4,1)" :
+ "decimal(4,1)";
+ my $result="undefined";
+ if (execute_and_check("storage_of_float",["create table crash_q (q1 $type)",
+ "insert into crash_q values(1.14)"],
+ "select q1 from crash_q",
+ ["drop table crash_q $drop_attr"],1.1,0) &&
+ execute_and_check("storage_of_float",["create table crash_q (q1 $type)",
+ "insert into crash_q values(1.16)"],
+ "select q1 from crash_q",
+ ["drop table crash_q $drop_attr"],1.1,0))
+ {
+ $result="truncate";
+ }
+ elsif (execute_and_check("storage_of_float",["create table crash_q (q1 $type)",
+ "insert into crash_q values(1.14)"],
+ "select q1 from crash_q",
+ ["drop table crash_q $drop_attr"],1.1,0) &&
+ execute_and_check("storage_of_float",["create table crash_q (q1 $type)",
+ "insert into crash_q values(1.16)"],
+ "select q1 from crash_q",
+ ["drop table crash_q $drop_attr"],1.2,0))
+ {
+ $result="round";
+ }
+ elsif (execute_and_check("storage_of_float",["create table crash_q (q1 $type)",
+ "insert into crash_q values(1.14)"],
+ "select q1 from crash_q",
+ ["drop table crash_q $drop_attr"],1.14,0) &&
+ execute_and_check("storage_of_float",["create table crash_q (q1 $type)",
+ "insert into crash_q values(1.16)"],
+ "select q1 from crash_q",
+ ["drop table crash_q $drop_attr"],1.16,0))
+ {
+ $result="exact";
+ }
+ $prompt="Storage of float values";
+ save_config_data("storage_of_float", $result, $prompt);
+}
+
+if (defined($limits{'storage_of_float'}))
+{
+ print "Storage of float values: $limits{'storage_of_float'}\n";
+}
+
+try_and_report("Type for row id", "rowid",
+ ["rowid",
+ "create table crash_q (a rowid)",
+ "drop table crash_q $drop_attr"],
+ ["auto_increment",
+ "create table crash_q (a int not null auto_increment".
+ ", primary key(a))","drop table crash_q $drop_attr"],
+ ["oid",
+ "create table crash_q (a oid, primary key(a))",
+ "drop table crash_q $drop_attr"],
+ ["serial",
+ "create table crash_q (a serial, primary key(a))",
+ "drop table crash_q $drop_attr"]);
+
+try_and_report("Automatic row id", "automatic_rowid",
+ ["_rowid",
+ "create table crash_q (a int not null, primary key(a))",
+ "insert into crash_q values (1)",
+ "select _rowid from crash_q",
+ "drop table crash_q $drop_attr"]);
+
+#
+# Test functions
+#
+
+@sql_functions=
+ (["+, -, * and /","+","5*3-4/2+1",14,0],
+ ["ANSI SQL SUBSTRING","substring","substring('abcd' from 2 for 2)","bc",1],
+ ["BIT_LENGTH","bit_length","bit_length('abc')",24,0],
+ ["searched CASE","searched_case",
+ "case when 1 > 2 then 'false' when 2 > 1 then 'true' end", "true",1],
+ ["simple CASE","simple_case",
+ "case 2 when 1 then 'false' when 2 then 'true' end", "true",1],
+ ["CAST","cast","CAST(1 as CHAR)","1",1],
+ ["CHARACTER_LENGTH","character_length","character_length('abcd')","4",0],
+ ["CHAR_LENGTH","char_length","char_length(b)","10",0],
+ ["CHAR_LENGTH(constant)","char_length(constant)",
+ "char_length('abcd')","4",0],
+ ["COALESCE","coalesce","coalesce($char_null,'bcd','qwe')","bcd",1],
+ ["CURRENT_DATE","current_date","current_date",0,2],
+ ["CURRENT_TIME","current_time","current_time",0,2],
+ ["CURRENT_TIMESTAMP","current_timestamp","current_timestamp",0,2],
+ ["EXTRACT","extract_sql",
+ "extract(minute from timestamp '2000-02-23 18:43:12.987')",43,0],
+ ["LOCALTIME","localtime","localtime",0,2],
+ ["LOCALTIMESTAMP","localtimestamp","localtimestamp",0,2],
+ ["LOWER","lower","LOWER('ABC')","abc",1],
+ ["NULLIF with strings","nullif_string",
+ "NULLIF(NULLIF('first','second'),'first')",undef(),4],
+ ["NULLIF with numbers","nullif_num","NULLIF(NULLIF(1,2),1)",undef(),4],
+ ["OCTET_LENGTH","octet_length","octet_length('abc')",3,0],
+ ["POSITION","position","position('ll' in 'hello')",3,0],
+ ["TRIM","trim","trim(trailing from trim(LEADING FROM ' abc '))","abc",3],
+ ["UPPER","upper","UPPER('abc')","ABC",1],
+ ["concatenation with ||","concat_as_||","'abc' || 'def'","abcdef",1],
+ );
+
+@odbc_functions=
+ (["ASCII", "ascii", "ASCII('A')","65",0],
+ ["CHAR", "char", "CHAR(65)" ,"A",1],
+ ["CONCAT(2 arg)","concat", "concat('a','b')","ab",1],
+ ["DIFFERENCE()","difference","difference('abc','abe')",3,0],
+ ["INSERT","insert","insert('abcd',2,2,'ef')","aefd",1],
+ ["LEFT","left","left('abcd',2)","ab",1],
+ ["LTRIM","ltrim","ltrim(' abcd')","abcd",1],
+ ["REAL LENGTH","length","length('abcd ')","5",0],
+ ["ODBC LENGTH","length_without_space","length('abcd ')","4",0],
+ ["LOCATE(2 arg)","locate_2","locate('bcd','abcd')","2",0],
+ ["LOCATE(3 arg)","locate_3","locate('bcd','abcd',3)","0",0],
+ ["LCASE","lcase","lcase('ABC')","abc",1],
+ ["REPEAT","repeat","repeat('ab',3)","ababab",1],
+ ["REPLACE","replace","replace('abbaab','ab','ba')","bababa",1],
+ ["RIGHT","right","right('abcd',2)","cd",1],
+ ["RTRIM","rtrim","rtrim(' abcd ')"," abcd",1],
+ ["SPACE","space","space(5)"," ",3],
+ ["SOUNDEX","soundex","soundex('hello')",0,2],
+ ["ODBC SUBSTRING","substring","substring('abcd',3,2)","cd",1],
+ ["UCASE","ucase","ucase('abc')","ABC",1],
+
+ ["ABS","abs","abs(-5)",5,0],
+ ["ACOS","acos","acos(0)","1.570796",0],
+ ["ASIN","asin","asin(1)","1.570796",0],
+ ["ATAN","atan","atan(1)","0.785398",0],
+ ["ATAN2","atan2","atan2(1,0)","1.570796",0],
+ ["CEILING","ceiling","ceiling(-4.5)",-4,0],
+ ["COS","cos","cos(0)","1.00000",0],
+ ["COT","cot","cot(1)","0.64209262",0],
+ ["DEGREES","degrees","degrees(6.283185)","360",0],
+ ["EXP","exp","exp(1.0)","2.718282",0],
+ ["FLOOR","floor","floor(2.5)","2",0],
+ ["LOG","log","log(2)","0.693147",0],
+ ["LOG10","log10","log10(10)","1",0],
+ ["MOD","mod","mod(11,7)","4",0],
+ ["PI","pi","pi()","3.141593",0],
+ ["POWER","power","power(2,4)","16",0],
+ ["RAND","rand","rand(1)",0,2], # Any value is acceptable
+ ["RADIANS","radians","radians(360)","6.283185",0],
+ ["ROUND(2 arg)","round","round(5.63,2)","5.6",0],
+ ["SIGN","sign","sign(-5)",-1,0],
+ ["SIN","sin","sin(1)","0.841471",0],
+ ["SQRT","sqrt","sqrt(4)",2,0],
+ ["TAN","tan","tan(1)","1.557408",0],
+ ["TRUNCATE","truncate","truncate(18.18,-1)",10,0],
+ ["NOW","now","now()",0,2], # Any value is acceptable
+ ["CURDATE","curdate","curdate()",0,2],
+ ["CURTIME","curtime","curtime()",0,2],
+ ["TIMESTAMPADD","timestampadd",
+ "timestampadd(SQL_TSI_SECOND,1,'1997-01-01 00:00:00')",
+ "1997-01-01 00:00:01",1],
+ ["TIMESTAMPDIFF","timestampdiff",
+ "timestampdiff(SQL_TSI_SECOND,'1997-01-01 00:00:02',".
+ " '1997-01-01 00:00:01')","1",0],
+ ["USER()","user()","user()",0,2],
+ ["DATABASE","database","database()",0,2],
+ ["IFNULL","ifnull","ifnull(2,3)",2,0],
+ ["ODBC syntax LEFT & RIGHT", "fn_left",
+ "{ fn LEFT( { fn RIGHT('abcd',2) },1) }","c",1],
+ );
+
+@extra_functions=
+ (
+ ["& (bitwise and)",'&',"5 & 3",1,0],
+ ["| (bitwise or)",'|',"1 | 2",3,0],
+ ["<< and >> (bitwise shifts)",'binary_shifts',"(1 << 4) >> 2",4,0],
+ ["<> in SELECT","<>","1<>1","0",0],
+ ["=","=","(1=1)",1,$logical_value],
+ ["~* (case insensitive compare)","~*","'hi' ~* 'HI'",1,$logical_value],
+ ["AND and OR in SELECT","and_or","1=1 AND 2=2",$logical_value,0],
+ ["AND as '&&'",'&&',"1=1 && 2=2",$logical_value,0],
+ ["ASCII_CHAR", "ascii_char", "ASCII_CHAR(65)","A",1],
+ ["ASCII_CODE", "ascii_code", "ASCII_CODE('A')","65",0],
+ ["ATN2","atn2","atn2(1,0)","1.570796",0],
+ ["BETWEEN in SELECT","between","5 between 4 and 6",$logical_value,0],
+ ["BIT_COUNT","bit_count","bit_count(5)",2,0],
+ ["CEIL","ceil","ceil(-4.5)",-4,0], # oracle
+ ["CHARINDEX","charindex","charindex('a','crash')",3,0],
+ ["CHR", "chr", "CHR(65)" ,"A",1], # oracle
+ ["CONCAT(list)","concat_list", "concat('a','b','c','d')","abcd",1],
+ ["CONVERT","convert","convert(CHAR,5)","5",1],
+ ["COSH","cosh","cosh(0)","1",0], # oracle hyperbolic cosine of n.
+ ["ELT","elt","elt(2,'ONE','TWO','THREE')","TWO",1],
+ ["ENCRYPT","encrypt","encrypt('hello')",0,2],
+ ["FIELD","field","field('IBM','NCA','ICL','SUN','IBM','DIGITAL')",4,0],
+ ["FORMAT","format","format(1234.5555,2)","1,234.56",1],
+ ["GETDATE","getdate","getdate()",0,2],
+ ["GREATEST","greatest","greatest('HARRY','HARRIOT','HAROLD')","HARRY",1],
+ ["IF","if", "if(5,6,7)",6,0],
+ ["IN on numbers in SELECT","in_num","2 in (3,2,5,9,5,1)",$logical_value,0],
+ ["IN on strings in SELECT","in_str","'monty' in ('david','monty','allan')", $logical_value,0],
+ ["INITCAP","initcap","initcap('the soap')","The Soap",1],
+ # oracle Returns char, with the first letter of each word in uppercase
+ ["INSTR (Oracle syntax)", "instr_oracle", "INSTR('CORPORATE FLOOR','OR',3,2)" ,"14",0], # oracle instring
+ ["INSTRB", "instrb", "INSTRB('CORPORATE FLOOR','OR',5,2)" ,"27",0],
+ # oracle instring in bytes
+ ["INTERVAL","interval","interval(55,10,20,30,40,50,60,70,80,90,100)",5,0],
+ ["LAST_INSERT_ID","last_insert_id","last_insert_id()",0,2],
+ ["LEAST","least","least('HARRY','HARRIOT','HAROLD')","HAROLD",1],
+ # oracle
+ ["LENGTHB","lengthb","lengthb('CANDIDE')","14",0],
+ # oracle length in bytes
+ ["LIKE ESCAPE in SELECT","like_escape",
+ "'%' like 'a%' escape 'a'",$logical_value,0],
+ ["LIKE in SELECT","like","'a' like 'a%'",$logical_value,0],
+ ["LN","ln","ln(95)","4.55387689",0],
+ # oracle natural logarithm of n
+ ["LOCATE as INSTR","instr","instr('hello','ll')",3,0],
+ ["LOG(m,n)","log(m_n)","log(10,100)","2",0],
+ # oracle logarithm, base m, of n
+ ["LOGN","logn","logn(2)","0.693147",0],
+ # informix
+ ["LPAD","lpad","lpad('hi',4,'??')",'??hi',3],
+ ["MOD as %","%","10%7","3",0],
+ ["NOT BETWEEN in SELECT","not_between","5 not between 4 and 6",0,0],
+ ["NOT LIKE in SELECT","not_like","'a' not like 'a%'",0,0],
+ ["NOT as '!' in SELECT","!","! 1",0,0],
+ ["NOT in SELECT","not","not $false",$logical_value,0],
+ ["ODBC CONVERT","odbc_convert","convert(5,SQL_CHAR)","5",1],
+ ["OR as '||'",'||',"1=0 || 1=1",$logical_value,0],
+ ["PASSWORD","password","password('hello')",0,2],
+ ["PASTE", "paste", "paste('ABCDEFG',3,2,'1234')","AB1234EFG",1],
+ ["PATINDEX","patindex","patindex('%a%','crash')",3,0],
+ ["POW","pow","pow(3,2)",9,0],
+ ["RANGE","range","range(a)","0.0",0],
+ # informix range(a) = max(a) - min(a)
+ ["REGEXP in SELECT","regexp","'a' regexp '^(a|b)*\$'",$logical_value,0],
+ ["REPLICATE","replicate","replicate('a',5)","aaaaa",1],
+ ["REVERSE","reverse","reverse('abcd')","dcba",1],
+ ["ROOT","root","root(4)",2,0], # informix
+ ["ROUND(1 arg)","round1","round(5.63)","6",0],
+ ["RPAD","rpad","rpad('hi',4,'??')",'hi??',3],
+ ["SINH","sinh","sinh(1)","1.17520119",0], # oracle hyperbolic sine of n
+ ["STR","str","str(123.45,5,1)",123.5,3],
+ ["STRCMP","strcmp","strcmp('abc','adc')",-1,0],
+ ["STUFF","stuff","stuff('abc',2,3,'xyz')",'axyz',3],
+ ["SUBSTRB", "substrb", "SUBSTRB('ABCDEFG',5,4.2)" ,"CD",1],
+ # oracle substring with bytes
+ ["SUBSTRING as MID","mid","mid('hello',3,2)","ll",1],
+ ["SUBSTRING_INDEX","substring_index",
+ "substring_index('www.tcx.se','.',-2)", "tcx.se",1],
+ ["SYSDATE","sysdate","sysdate()",0,2],
+ ["TAIL","tail","tail('ABCDEFG',3)","EFG",0],
+ ["TANH","tanh","tanh(1)","0.462117157",0],
+ # oracle hyperbolic tangent of n
+ ["TRANSLATE","translate","translate('abc','bc','de')",'ade',3],
+ ["TRIM; Many char extension",
+ "trim_many_char","trim(':!' FROM ':abc!')","abc",3],
+ ["TRIM; Substring extension",
+ "trim_substring","trim('cb' FROM 'abccb')","abc",3],
+ ["TRUNC","trunc","trunc(18.18,-1)",10,0], # oracle
+ ["UID","uid","uid",0,2], # oracle uid from user
+ ["UNIX_TIMESTAMP","unix_timestamp","unix_timestamp()",0,2],
+ ["USERENV","userenv","userenv",0,2], # oracle user enviroment
+ ["VERSION","version","version()",0,2],
+ ["automatic num->string convert","auto_num2string","concat('a',2)","a2",1],
+ ["automatic string->num convert","auto_string2num","'1'+2",3,0],
+ ["concatenation with +","concat_as_+","'abc' + 'def'","abcdef",1],
+ ["SUBSTR (2 arg)",'substr2arg',"substr('abcd',2)",'bcd',1], #sapdb func
+ ["SUBSTR (3 arg)",'substr3arg',"substr('abcd',2,2)",'bc',1],
+ ["LFILL (3 arg)",'lfill3arg',"lfill('abcd','.',6)",'..abcd',1],
+ ["RFILL (3 arg)",'rfill3arg',"rfill('abcd','.',6)",'abcd..',1],
+ ["RPAD (4 arg)",'rpad4arg',"rpad('abcd',2,'+-',8)",'abcd+-+-',1],
+ ["LPAD (4 arg)",'rpad4arg',"lpad('abcd',2,'+-',8)",'+-+-abcd',1],
+ ["TRIM (1 arg)",'trim1arg',"trim(' abcd ')",'abcd',1],
+ ["TRIM (2 arg)",'trim2arg',"trim('..abcd..','.')",'abcd',1],
+ ["LTRIM (2 arg)",'ltrim2arg',"ltrim('..abcd..','.')",'abcd..',1],
+ ["RTRIM (2 arg)",'rtrim2arg',"rtrim('..abcd..','.')",'..abcd',1],
+ ["EXPAND",'expand2arg',"expand('abcd',6)",'abcd ',0],
+ ["REPLACE (2 arg) ",'replace2arg',"replace('AbCd','bC')",'Ad',1],
+ ["MAPCHAR",'mapchar',"mapchar('Aâ')",'Aa',1],
+ ["ALPHA",'alpha',"alpha('Aâ',2)",'AA',1],
+ ["ASCII in string cast",'ascii_string',"ascii('a')",'a',1],
+ ["EBCDIC in string cast",'ebcdic_string',"ebcdic('a')",'a',1],
+ ["TRUNC (1 arg)",'trunc1arg',"trunc(222.6)",222,0],
+ ["FIXED",'fixed',"fixed(222.6666,10,2)",'222.67',0],
+ ["FLOAT",'float',"float(6666.66,4)",6667,0],
+ ["LENGTH",'length',"length(1)",2,0],
+ ["INDEX",'index',"index('abcdefg','cd',1,1)",3,0],
+ ["MICROSECOND",'microsecond',
+ "MICROSECOND('19630816200212111111')",'111111',0],
+ ["TIMESTAMP",'timestamp',
+ "timestamp('19630816','00200212')",'19630816200212000000',0],
+ ["VALUE",'value',"value(NULL,'WALRUS')",'WALRUS',0],
+ ["DECODE",'decode',"DECODE('S-103','T72',1,'S-103',2,'Leopard',3)",2,0],
+ ["NUM",'num',"NUM('2123')",2123,0],
+ ["CHR (any type to string)",'chr_str',"CHR(67)",'67',0],
+ ["HEX",'hex',"HEX('A')",41,0],
+ );
+
+
+@sql_group_functions=
+ (
+ ["AVG","avg","avg(a)",1,0],
+ ["COUNT (*)","count_*","count(*)",1,0],
+ ["COUNT column name","count_column","count(a)",1,0],
+ ["COUNT(DISTINCT expr)","count_distinct","count(distinct a)",1,0],
+ ["MAX on numbers","max","max(a)",1,0],
+ ["MAX on strings","max_str","max(b)","a",1],
+ ["MIN on numbers","min","min(a)",1,0],
+ ["MIN on strings","min_str","min(b)","a",1],
+ ["SUM","sum","sum(a)",1,0],
+ ["ANY","any","any(a)",$logical_value,0],
+ ["EVERY","every","every(a)",$logical_value,0],
+ ["SOME","some","some(a)",$logical_value,0],
+ );
+
+@extra_group_functions=
+ (
+ ["BIT_AND",'bit_and',"bit_and(a)",1,0],
+ ["BIT_OR", 'bit_or', "bit_or(a)",1,0],
+ ["COUNT(DISTINCT expr,expr,...)",
+ "count_distinct_list","count(distinct a,b)",1,0],
+ ["STD","std","std(a)",0,0],
+ ["STDDEV","stddev","stddev(a)",0,0],
+ ["VARIANCE","variance","variance(a)",0,0],
+ );
+
+@where_functions=
+(
+ ["= ALL","eq_all","b =all (select b from crash_me)",1,0],
+ ["= ANY","eq_any","b =any (select b from crash_me)",1,0],
+ ["= SOME","eq_some","b =some (select b from crash_me)",1,0],
+ ["BETWEEN","between","5 between 4 and 6",1,0],
+ ["EXISTS","exists","exists (select * from crash_me)",1,0],
+ ["IN on numbers","in_num","2 in (3,2,5,9,5,1)",1,0],
+ ["LIKE ESCAPE","like_escape","b like '%' escape 'a'",1,0],
+ ["LIKE","like","b like 'a%'",1,0],
+ ["MATCH UNIQUE","match_unique",
+ "1 match unique (select a from crash_me)",1,0],
+ ["MATCH","match","1 match (select a from crash_me)",1,0],
+ ["MATCHES","matches","b matches 'a*'",1,0],
+ ["NOT BETWEEN","not_between","7 not between 4 and 6",1,0],
+ ["NOT EXISTS","not_exists",
+ "not exists (select * from crash_me where a = 2)",1,0],
+ ["NOT LIKE","not_like","b not like 'b%'",1,0],
+ ["NOT UNIQUE","not_unique",
+ "not unique (select * from crash_me where a = 2)",1,0],
+ ["UNIQUE","unique","unique (select * from crash_me)",1,0],
+ );
+
+@types=(["sql",\@sql_functions,0],
+ ["odbc",\@odbc_functions,0],
+ ["extra",\@extra_functions,0],
+ ["where",\@where_functions,0]);
+
+@group_types=(["sql",\@sql_group_functions,0],
+ ["extra",\@extra_group_functions,0]);
+
+
+foreach $types (@types)
+{
+ print "\nSupported $types->[0] functions\n";
+ $tmp= $types->[1];
+ foreach $type (@$tmp)
+ {
+ if (defined($limits{"func_$types->[0]_$type->[1]"}))
+ {
+ next;
+ }
+ if ($types->[0] eq "where")
+ {
+ check_and_report("Function $type->[0]","func_$types->[0]_$type->[1]",
+ [],"select a from crash_me where $type->[2]",[],
+ $type->[3],$type->[4]);
+ }
+ elsif ($limits{'functions'} eq 'yes')
+ {
+ if (($type->[2] =~ /char_length\(b\)/) && (!$end_query))
+ {
+ my $tmp= $type->[2];
+ $tmp .= " from crash_me ";
+ undef($limits{"func_$types->[0]_$type->[1]"});
+ check_and_report("Function $type->[0]",
+ "func_$types->[0]_$type->[1]",
+ [],"select $tmp ",[],
+ $type->[3],$type->[4]);
+ }
+ else
+ {
+ undef($limits{"func_$types->[0]_$type->[1]"});
+ $result = check_and_report("Function $type->[0]",
+ "func_$types->[0]_$type->[1]",
+ [],"select $type->[2] $end_query",[],
+ $type->[3],$type->[4]);
+ if (!$result)
+ {
+ # check without type specifyer
+ if ($type->[2] =~ /DATE /)
+ {
+ my $tmp= $type->[2];
+ $tmp =~ s/DATE //;
+ undef($limits{"func_$types->[0]_$type->[1]"});
+ $result = check_and_report("Function $type->[0]",
+ "func_$types->[0]_$type->[1]",
+ [],"select $tmp $end_query",[],
+ $type->[3],$type->[4]);
+ }
+ if (!$result)
+ {
+ if ($types->[0] eq "odbc" && ! ($type->[2] =~ /\{fn/))
+ {
+ my $tmp= $type->[2];
+ # Check by converting to ODBC format
+ undef($limits{"func_$types->[0]_$type->[1]"});
+ $tmp= "{fn $tmp }";
+ $tmp =~ s/('1997-\d\d-\d\d \d\d:\d\d:\d\d')/{ts $1}/g;
+ $tmp =~ s/(DATE '1997-\d\d-\d\d')/{d $1}/g;
+ $tmp =~ s/(TIME '12:13:14')/{t $1}/g;
+ $tmp =~ s/DATE //;
+ $tmp =~ s/TIME //;
+ check_and_report("Function $type->[0]",
+ "func_$types->[0]_$type->[1]",
+ [],"select $tmp $end_query",[],
+ $type->[3],$type->[4]);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+if ($limits{'functions'} eq 'yes')
+{
+ foreach $types (@group_types)
+ {
+ print "\nSupported $types->[0] group functions\n";
+ $tmp= $types->[1];
+ foreach $type (@$tmp)
+ {
+ check_and_report("Group function $type->[0]",
+ "group_func_$types->[0]_$type->[1]",
+ [],"select $type->[2],a from crash_me group by a",[],
+ $type->[3],$type->[4]);
+ }
+ }
+ print "\n";
+ report("mixing of integer and float in expression","float_int_expr",
+ "select 1+1.0 $end_query");
+ if ($limits{'func_odbc_exp'} eq 'yes')
+ {
+ report("No need to cast from integer to float",
+ "dont_require_cast_to_float", "select exp(1) $end_query");
+ }
+ check_and_report("Is 1+NULL = NULL","null_num_expr",
+ [],"select 1+$numeric_null $end_query",[],undef(),4);
+ $tmp=sql_concat("'a'",$char_null);
+ if (defined($tmp))
+ {
+ check_and_report("Is $tmp = NULL", "null_concat_expr", [],
+ "select $tmp $end_query",[], undef(),4);
+ }
+ $prompt="Need to cast NULL for arithmetic";
+ add_log("Need_cast_for_null",
+ " Check if numeric_null ($numeric_null) is 'NULL'");
+ save_config_data("Need_cast_for_null",
+ ($numeric_null eq "NULL") ? "no" : "yes",
+ $prompt);
+}
+else
+{
+ print "\n";
+}
+
+
+# Test: NOROUND
+{
+ my $result = 'undefined';
+ my $error;
+ print "NOROUND: ";
+ save_incomplete('func_extra_noround','Function NOROUND');
+
+# 1) check if noround() function is supported
+ $error = safe_query_l('func_extra_noround',"select noround(22.6) $end_query");
+ if ($error ne 1) # syntax error -- noround is not supported
+ {
+ $result = 'no'
+ }
+ else # Ok, now check if it really works
+ {
+ $error=safe_query_l('func_extra_noround',
+ ["create table crash_me_nr (a int)",
+ "insert into crash_me_nr values(noround(10.2))",
+ "drop table crash_me_nr $drop_attr"]);
+ if ($error == 1)
+ {
+ $result= "syntax only";
+ }
+ else
+ {
+ $result= 'yes';
+ }
+ }
+ print "$result\n";
+ save_config_data('func_extra_noround',$result,"Function NOROUND");
+}
+
+check_parenthesis("func_sql_","CURRENT_USER");
+check_parenthesis("func_sql_","SESSION_USER");
+check_parenthesis("func_sql_","SYSTEM_USER");
+check_parenthesis("func_sql_","USER");
+
+
+if ($limits{'type_sql_date'} eq 'yes')
+{ #
+ # Checking the format of date in result.
+
+ safe_query("drop table crash_me_d $drop_attr");
+ assert("create table crash_me_d (a date)");
+ # find the example of date
+ my $dateexample;
+ if ($limits{'func_extra_sysdate'} eq 'yes') {
+ $dateexample=' sysdate() ';
+ }
+ elsif ($limits{'func_sql_current_date'} eq 'yes') {
+ $dateexample='CURRENT_DATE';
+ }
+ elsif ($limits{'func_odbc_curdate'} eq 'yes') {
+ $dateexample='curdate()';
+ }
+ elsif ($limits{'func_extra_getdate'} eq 'yes') {
+ $dateexample='getdate()';
+ }
+ elsif ($limits{'func_odbc_now'} eq 'yes') {
+ $dateexample='now()';
+ } else {
+ #try to guess
+ $dateexample="DATE '1963-08-16'";
+ } ;
+
+ my $key = 'date_format_inresult';
+ my $prompt = "Date format in result";
+ if (! safe_query_l('date_format_inresult',
+ "insert into crash_me_d values($dateexample) "))
+ {
+ die "Cannot insert date ($dateexample):".$last_error;
+ };
+ my $sth= $dbh->prepare("select a from crash_me_d");
+ add_log('date_format_inresult',"< select a from crash_me_d");
+ $sth->execute;
+ $_= $sth->fetchrow_array;
+ add_log('date_format_inresult',"> $_");
+ safe_query_l($key,"delete from crash_me_d");
+ if (/\d{4}-\d{2}-\d{2}/){ save_config_data($key,"iso",$prompt);}
+ elsif (/\d{2}-\d{2}-\d{2}/){ save_config_data($key,"short iso",$prompt);}
+ elsif (/\d{2}\.\d{2}\.\d{4}/){ save_config_data($key,"euro",$prompt);}
+ elsif (/\d{2}\.\d{2}\.\d{2}/){ save_config_data($key,"short euro",$prompt);}
+ elsif (/\d{2}\/\d{2}\/\d{4}/){ save_config_data($key,"usa",$prompt);}
+ elsif (/\d{2}\/\d{2}\/\d{2}/){ save_config_data($key,"short usa",$prompt);}
+ elsif (/\d*/){ save_config_data($key,"YYYYMMDD",$prompt);}
+ else { save_config_data($key,"unknown",$prompt);};
+ $sth->finish;
+
+ check_and_report("Supports YYYY-MM-DD (ISO) format","date_format_ISO",
+ [ "insert into crash_me_d(a) values ('1963-08-16')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+
+ check_and_report("Supports DATE 'YYYY-MM-DD' (ISO) format",
+ "date_format_ISO_with_date",
+ [ "insert into crash_me_d(a) values (DATE '1963-08-16')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+
+ check_and_report("Supports DD.MM.YYYY (EUR) format","date_format_EUR",
+ [ "insert into crash_me_d(a) values ('16.08.1963')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+ check_and_report("Supports DATE 'DD.MM.YYYY' (EUR) format",
+ "date_format_EUR_with_date",
+ [ "insert into crash_me_d(a) values (DATE '16.08.1963')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+
+ check_and_report("Supports YYYYMMDD format",
+ "date_format_YYYYMMDD",
+ [ "insert into crash_me_d(a) values ('19630816')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+ check_and_report("Supports DATE 'YYYYMMDD' format",
+ "date_format_YYYYMMDD_with_date",
+ [ "insert into crash_me_d(a) values (DATE '19630816')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+
+ check_and_report("Supports MM/DD/YYYY format",
+ "date_format_USA",
+ [ "insert into crash_me_d(a) values ('08/16/1963')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+ check_and_report("Supports DATE 'MM/DD/YYYY' format",
+ "date_format_USA_with_date",
+ [ "insert into crash_me_d(a) values (DATE '08/16/1963')"],
+ "select a from crash_me_d",
+ ["delete from crash_me_d"],
+ make_date_r(1963,8,16),1);
+
+
+
+
+ check_and_report("Supports 0000-00-00 dates","date_zero",
+ ["create table crash_me2 (a date not null)",
+ "insert into crash_me2 values (".make_date(0,0,0).")"],
+ "select a from crash_me2",
+ ["drop table crash_me2 $drop_attr"],
+ make_date_r(0,0,0),1);
+
+ check_and_report("Supports 0001-01-01 dates","date_one",
+ ["create table crash_me2 (a date not null)",
+ "insert into crash_me2 values (".make_date(1,1,1).")"],
+ "select a from crash_me2",
+ ["drop table crash_me2 $drop_attr"],
+ make_date_r(1,1,1),1);
+
+ check_and_report("Supports 9999-12-31 dates","date_last",
+ ["create table crash_me2 (a date not null)",
+ "insert into crash_me2 values (".make_date(9999,12,31).")"],
+ "select a from crash_me2",
+ ["drop table crash_me2 $drop_attr"],
+ make_date_r(9999,12,31),1);
+
+ check_and_report("Supports 'infinity dates","date_infinity",
+ ["create table crash_me2 (a date not null)",
+ "insert into crash_me2 values ('infinity')"],
+ "select a from crash_me2",
+ ["drop table crash_me2 $drop_attr"],
+ "infinity",1);
+
+ if (!defined($limits{'date_with_YY'}))
+ {
+ check_and_report("Supports YY-MM-DD dates","date_with_YY",
+ ["create table crash_me2 (a date not null)",
+ "insert into crash_me2 values ('98-03-03')"],
+ "select a from crash_me2",
+ ["drop table crash_me2 $drop_attr"],
+ make_date_r(1998,3,3),5);
+ if ($limits{'date_with_YY'} eq "yes")
+ {
+ undef($limits{'date_with_YY'});
+ check_and_report("Supports YY-MM-DD 2000 compilant dates",
+ "date_with_YY",
+ ["create table crash_me2 (a date not null)",
+ "insert into crash_me2 values ('10-03-03')"],
+ "select a from crash_me2",
+ ["drop table crash_me2 $drop_attr"],
+ make_date_r(2010,3,3),5);
+ }
+ }
+
+# Test: WEEK()
+ {
+ my $result="no";
+ my $error;
+ print "WEEK:";
+ save_incomplete('func_odbc_week','WEEK');
+ $error = safe_query_result_l('func_odbc_week',
+ "select week(".make_date(1997,2,1).") $end_query",5,0);
+ # actually this query must return 4 or 5 in the $last_result,
+ # $error can be 1 (not supported at all) , -1 ( probably USA weeks)
+ # and 0 - EURO weeks
+ if ($error == -1) {
+ if ($last_result == 4) {
+ $result = 'USA';
+ } else {
+ $result='error';
+ add_log('func_odbc_week',
+ " must return 4 or 5, but $last_result");
+ }
+ } elsif ($error == 0) {
+ $result = 'EURO';
+ }
+ print " $result\n";
+ save_config_data('func_odbc_week',$result,"WEEK");
+ }
+
+ my $insert_query ='insert into crash_me_d values('.
+ make_date(1997,2,1).')';
+ safe_query($insert_query);
+
+ foreach $fn ( (
+ ["DAYNAME","dayname","dayname(a)","",2],
+ ["MONTH","month","month(a)","",2],
+ ["MONTHNAME","monthname","monthname(a)","",2],
+ ["DAYOFMONTH","dayofmonth","dayofmonth(a)",1,0],
+ ["DAYOFWEEK","dayofweek","dayofweek(a)",7,0],
+ ["DAYOFYEAR","dayofyear","dayofyear(a)",32,0],
+ ["QUARTER","quarter","quarter(a)",1,0],
+ ["YEAR","year","year(a)",1997,0]))
+ {
+ $prompt='Function '.$fn->[0];
+ $key='func_odbc_'.$fn->[1];
+ add_log($key,"< ".$insert_query);
+ check_and_report($prompt,$key,
+ [],"select ".$fn->[2]." from crash_me_d",[],
+ $fn->[3],$fn->[4]
+ );
+
+ };
+ safe_query(['delete from crash_me_d',
+ 'insert into crash_me_d values('.make_date(1963,8,16).')']);
+ foreach $fn ((
+ ["DATEADD","dateadd","dateadd(day,3,make_date(1997,11,30))",0,2],
+ ["MDY","mdy","mdy(7,1,1998)","make_date_r(1998,07,01)",0], # informix
+ ["DATEDIFF","datediff",
+ "datediff(month,'Oct 21 1997','Nov 30 1997')",0,2],
+ ["DATENAME","datename","datename(month,'Nov 30 1997')",0,2],
+ ["DATEPART","datepart","datepart(month,'July 20 1997')",0,2],
+ ["DATE_FORMAT","date_format",
+ "date_format('1997-01-02 03:04:05','M W D Y y m d h i s w')", 0,2],
+ ["FROM_DAYS","from_days",
+ "from_days(729024)","make_date_r(1996,1,1)",1],
+ ["FROM_UNIXTIME","from_unixtime","from_unixtime(0)",0,2],
+ ["MONTHS_BETWEEN","months_between",
+ "months_between(make_date(1997,2,2),make_date(1997,1,1))",
+ "1.03225806",0], # oracle number of months between 2 dates
+ ["PERIOD_ADD","period_add","period_add(9602,-12)",199502,0],
+ ["PERIOD_DIFF","period_diff","period_diff(199505,199404)",13,0],
+ ["WEEKDAY","weekday","weekday(make_date(1997,11,29))",5,0],
+ ["ADDDATE",'adddate',
+ "ADDDATE(make_date(2002,12,01),3)",'make_date_r(2002,12,04)',0],
+ ["SUBDATE",'subdate',
+ "SUBDATE(make_date(2002,12,04),3)",'make_date_r(2002,12,01)',0],
+ ["DATEDIFF (2 arg)",'datediff2arg',
+ "DATEDIFF(make_date(2002,12,04),make_date(2002,12,01))",'3',0],
+ ["WEEKOFYEAR",'weekofyear',
+ "WEEKOFYEAR(make_date(1963,08,16))",'33',0],
+# table crash_me_d must contain record with 1963-08-16 (for CHAR)
+ ["CHAR (conversation date)",'char_date',
+ "CHAR(a,EUR)",'16.08.1963',0],
+ ["MAKEDATE",'makedate',"MAKEDATE(1963,228)"
+ ,'make_date_r(1963,08,16)',0],
+ ["TO_DAYS","to_days",
+ "to_days(make_date(1996,01,01))",729024,0],
+ ["ADD_MONTHS","add_months",
+ "add_months(make_date(1997,01,01),1)","make_date_r(1997,02,01)",0],
+ # oracle the date plus n months
+ ["LAST_DAY","last_day",
+ "last_day(make_date(1997,04,01))","make_date_r(1997,04,30)",0],
+ # oracle last day of month of date
+ ["DATE",'date',"date(make_date(1963,8,16))",
+ 'make_date_r(1963,8,16)',0],
+ ["DAY",'day',"DAY(make_date(2002,12,01))",1,0]))
+ {
+ $prompt='Function '.$fn->[0];
+ $key='func_extra_'.$fn->[1];
+ my $qry="select ".$fn->[2]." from crash_me_d";
+ while( $qry =~ /^(.*)make_date\((\d+),(\d+),(\d+)\)(.*)$/)
+ {
+ my $dt= &make_date($2,$3,$4);
+ $qry=$1.$dt.$5;
+ };
+ my $result=$fn->[3];
+ while( $result =~ /^(.*)make_date_r\((\d+),(\d+),(\d+)\)(.*)$/)
+ {
+ my $dt= &make_date_r($2,$3,$4);
+ $result=$1.$dt.$5;
+ };
+ check_and_report($prompt,$key,
+ [],$qry,[],
+ $result,$fn->[4]
+ );
+
+ }
+
+ safe_query("drop table crash_me_d $drop_attr");
+
+}
+
+if ($limits{'type_sql_time'} eq 'yes')
+{ #
+ # Checking the format of date in result.
+
+ safe_query("drop table crash_me_t $drop_attr");
+ assert("create table crash_me_t (a time)");
+ # find the example of time
+ my $timeexample;
+ if ($limits{'func_sql_current_time'} eq 'yes') {
+ $timeexample='CURRENT_TIME';
+ }
+ elsif ($limits{'func_odbc_curtime'} eq 'yes') {
+ $timeexample='curtime()';
+ }
+ elsif ($limits{'func_sql_localtime'} eq 'yes') {
+ $timeexample='localtime';
+ }
+ elsif ($limits{'func_odbc_now'} eq 'yes') {
+ $timeexample='now()';
+ } else {
+ #try to guess
+ $timeexample="'02:55:12'";
+ } ;
+
+ my $key = 'time_format_inresult';
+ my $prompt = "Time format in result";
+ if (! safe_query_l('time_format_inresult',
+ "insert into crash_me_t values($timeexample) "))
+ {
+ die "Cannot insert time ($timeexample):".$last_error;
+ };
+ my $sth= $dbh->prepare("select a from crash_me_t");
+ add_log('time_format_inresult',"< select a from crash_me_t");
+ $sth->execute;
+ $_= $sth->fetchrow_array;
+ add_log('time_format_inresult',"> $_");
+ safe_query_l($key,"delete from crash_me_t");
+ if (/\d{2}:\d{2}:\d{2}/){ save_config_data($key,"iso",$prompt);}
+ elsif (/\d{2}\.\d{2}\.\d{2}/){ save_config_data($key,"euro",$prompt);}
+ elsif (/\d{2}:\d{2}\s+(AM|PM)/i){ save_config_data($key,"usa",$prompt);}
+ elsif (/\d{8}$/){ save_config_data($key,"HHHHMMSS",$prompt);}
+ elsif (/\d{4}$/){ save_config_data($key,"HHMMSS",$prompt);}
+ else { save_config_data($key,"unknown",$prompt);};
+ $sth->finish;
+
+ check_and_report("Supports HH:MM:SS (ISO) time format","time_format_ISO",
+ [ "insert into crash_me_t(a) values ('20:08:16')"],
+ "select a from crash_me_t",
+ ["delete from crash_me_t"],
+ make_time_r(20,8,16),1);
+
+ check_and_report("Supports HH.MM.SS (EUR) time format","time_format_EUR",
+ [ "insert into crash_me_t(a) values ('20.08.16')"],
+ "select a from crash_me_t",
+ ["delete from crash_me_t"],
+ make_time_r(20,8,16),1);
+
+ check_and_report("Supports HHHHmmSS time format",
+ "time_format_HHHHMMSS",
+ [ "insert into crash_me_t(a) values ('00200816')"],
+ "select a from crash_me_t",
+ ["delete from crash_me_t"],
+ make_time_r(20,8,16),1);
+
+ check_and_report("Supports HHmmSS time format",
+ "time_format_HHHHMMSS",
+ [ "insert into crash_me_t(a) values ('200816')"],
+ "select a from crash_me_t",
+ ["delete from crash_me_t"],
+ make_time_r(20,8,16),1);
+
+ check_and_report("Supports HH:MM:SS (AM|PM) time format",
+ "time_format_USA",
+ [ "insert into crash_me_t(a) values ('08:08:16 PM')"],
+ "select a from crash_me_t",
+ ["delete from crash_me_t"],
+ make_time_r(20,8,16),1);
+
+ my $insert_query ='insert into crash_me_t values('.
+ make_time(20,8,16).')';
+ safe_query($insert_query);
+
+ foreach $fn ( (
+ ["HOUR","hour","hour('".make_time(12,13,14)."')",12,0],
+ ["ANSI HOUR","hour_time","hour(TIME '".make_time(12,13,14)."')",12,0],
+ ["MINUTE","minute","minute('".make_time(12,13,14)."')",13,0],
+ ["SECOND","second","second('".make_time(12,13,14)."')",14,0]
+
+ ))
+ {
+ $prompt='Function '.$fn->[0];
+ $key='func_odbc_'.$fn->[1];
+ add_log($key,"< ".$insert_query);
+ check_and_report($prompt,$key,
+ [],"select ".$fn->[2]." $end_query",[],
+ $fn->[3],$fn->[4]
+ );
+
+ };
+# safe_query(['delete from crash_me_t',
+# 'insert into crash_me_t values('.make_time(20,8,16).')']);
+ foreach $fn ((
+ ["TIME_TO_SEC","time_to_sec","time_to_sec('".
+ make_time(1,23,21)."')","5001",0],
+ ["SEC_TO_TIME","sec_to_time","sec_to_time(5001)",
+ make_time_r(01,23,21),1],
+ ["ADDTIME",'addtime',"ADDTIME('".make_time(20,2,12).
+ "','".make_time(0,0,3)."')",make_time_r(20,2,15),0],
+ ["SUBTIME",'subtime',"SUBTIME('".make_time(20,2,15)
+ ."','".make_time(0,0,3)."')",make_time_r(20,2,12),0],
+ ["TIMEDIFF",'timediff',"TIMEDIFF('".make_time(20,2,15)."','".
+ make_time(20,2,12)."')",make_time_r(0,0,3),0],
+ ["MAKETIME",'maketime',"MAKETIME(20,02,12)",make_time_r(20,2,12),0],
+ ["TIME",'time',"time('".make_time(20,2,12)."')",make_time_r(20,2,12),0]
+ ))
+ {
+ $prompt='Function '.$fn->[0];
+ $key='func_extra_'.$fn->[1];
+ my $qry="select ".$fn->[2]." $end_query";
+ my $result=$fn->[3];
+ check_and_report($prompt,$key,
+ [],$qry,[],
+ $result,$fn->[4]
+ );
+
+ }
+
+ safe_query("drop table crash_me_t $drop_attr");
+
+}
+
+
+# NOT id BETWEEN a and b
+if ($limits{'func_where_not_between'} eq 'yes')
+{
+ my $result = 'error';
+ my $err;
+ my $key='not_id_between';
+ my $prompt='NOT ID BETWEEN interprets as ID NOT BETWEEN';
+ print "$prompt:";
+ save_incomplete($key,$prompt);
+ safe_query_l($key,["create table crash_me_b (i int)",
+ "insert into crash_me_b values(2)",
+ "insert into crash_me_b values(5)"]);
+ $err =safe_query_result_l($key,
+ "select i from crash_me_b where not i between 1 and 3",
+ 5,0);
+ if ($err eq 1) {
+ if (not defined($last_result)) {
+ $result='no';
+ };
+ };
+ if ( $err eq 0) {
+ $result = 'yes';
+ };
+ safe_query_l($key,["drop table crash_me_b"]);
+ save_config_data($key,$result,$prompt);
+ print "$result\n";
+};
+
+
+
+
+report("LIKE on numbers","like_with_number",
+ "create table crash_q (a int,b int)",
+ "insert into crash_q values(10,10)",
+ "select * from crash_q where a like '10'",
+ "drop table crash_q $drop_attr");
+
+report("column LIKE column","like_with_column",
+ "create table crash_q (a char(10),b char(10))",
+ "insert into crash_q values('abc','abc')",
+ "select * from crash_q where a like b",
+ "drop table crash_q $drop_attr");
+
+report("update of column= -column","NEG",
+ "create table crash_q (a integer)",
+ "insert into crash_q values(10)",
+ "update crash_q set a=-a",
+ "drop table crash_q $drop_attr");
+
+if ($limits{'func_odbc_left'} eq 'yes' ||
+ $limits{'func_odbc_substring'} eq 'yes')
+{
+ my $type= ($limits{'func_odbc_left'} eq 'yes' ?
+ "left(a,4)" : "substring(a for 4)");
+
+ check_and_report("String functions on date columns","date_as_string",
+ ["create table crash_me2 (a date not null)",
+ "insert into crash_me2 values ('1998-03-03')"],
+ "select $type from crash_me2",
+ ["drop table crash_me2 $drop_attr"],
+ "1998",1);
+}
+
+
+$tmp=sql_concat("b","b");
+if (defined($tmp))
+{
+ check_and_report("char are space filled","char_is_space_filled",
+ [],"select $tmp from crash_me where b = 'a '",[],
+ 'a a ',6);
+}
+
+if (!defined($limits{'multi_table_update'}))
+{
+ if (check_and_report("Update with many tables","multi_table_update",
+ ["create table crash_q (a integer,b char(10))",
+ "insert into crash_q values(1,'c')",
+ "update crash_q left join crash_me on crash_q.a=crash_me.a set crash_q.b=crash_me.b"],
+ "select b from crash_q",
+ ["drop table crash_q $drop_attr"],
+ "a",1,undef(),2))
+ {
+ check_and_report("Update with many tables","multi_table_update",
+ ["create table crash_q (a integer,b char(10))",
+ "insert into crash_q values(1,'c')",
+ "update crash_q,crash_me set crash_q.b=crash_me.b ".
+ "where crash_q.a=crash_me.a"],
+ "select b from crash_q",
+ ["drop table crash_q $drop_attr"],
+ "a",1,
+ 1);
+ }
+}
+
+report("DELETE FROM table1,table2...","multi_table_delete",
+ "create table crash_q (a integer,b char(10))",
+ "insert into crash_q values(1,'c')",
+ "delete crash_q.* from crash_q,crash_me where crash_q.a=crash_me.a",
+ "drop table crash_q $drop_attr");
+
+check_and_report("Update with sub select","select_table_update",
+ ["create table crash_q (a integer,b char(10))",
+ "insert into crash_q values(1,'c')",
+ "update crash_q set b= ".
+ "(select b from crash_me where crash_q.a = crash_me.a)"],
+ "select b from crash_q",
+ ["drop table crash_q $drop_attr"],
+ "a",1);
+
+check_and_report("Calculate 1--1","minus_neg",[],
+ "select a--1 from crash_me",[],0,2);
+
+report("ANSI SQL simple joins","simple_joins",
+ "select crash_me.a from crash_me, crash_me t0");
+
+#
+# Check max string size, and expression limits
+#
+$found=undef;
+foreach $type (('mediumtext','text','text()','blob','long'))
+{
+ if ($limits{"type_extra_$type"} eq 'yes')
+ {
+ $found=$type;
+ last;
+ }
+}
+if (defined($found))
+{
+ $found =~ s/\(\)/\(%d\)/;
+ find_limit("max text or blob size","max_text_size",
+ new query_many(["create table crash_q (q $found)",
+ "insert into crash_q values ('%s')"],
+ "select * from crash_q","%s",
+ ["drop table crash_q $drop_attr"],
+ min($max_string_size,$limits{'query_size'}-30)));
+
+}
+
+# It doesn't make lots of sense to check for string lengths much bigger than
+# what can be stored...
+
+find_limit(($prompt="constant string size in where"),"where_string_size",
+ new query_repeat([],"select a from crash_me where b >='",
+ "","","1","","'"));
+if ($limits{'where_string_size'} == 10)
+{
+ save_config_data('where_string_size','nonstandard',$prompt);
+}
+
+if ($limits{'select_constants'} eq 'yes')
+{
+ find_limit("constant string size in SELECT","select_string_size",
+ new query_repeat([],"select '","","","a","","'$end_query"));
+}
+
+goto no_functions if ($limits{'functions'} ne "yes");
+
+if ($limits{'func_odbc_repeat'} eq 'yes')
+{
+ find_limit("return string size from function","repeat_string_size",
+ new query_many([],
+ "select repeat('a',%d) $end_query","%s",
+ [],
+ $max_string_size,0));
+}
+
+$tmp=find_limit("simple expressions","max_expressions",
+ new query_repeat([],"select 1","","","+1","",$end_query,
+ undef(),$max_expressions));
+
+if ($tmp > 10)
+{
+ $tmp= "(1" . ( '+1' x ($tmp-10) ) . ")";
+ find_limit("big expressions", "max_big_expressions",
+ new query_repeat([],"select 0","","","+$tmp","",$end_query,
+ undef(),$max_big_expressions));
+}
+
+find_limit("stacked expressions", "max_stack_expression",
+ new query_repeat([],"select 1","","","+(1",")",$end_query,
+ undef(),$max_stacked_expressions));
+
+no_functions:
+
+if (!defined($limits{'max_conditions'}))
+{
+ find_limit("OR and AND in WHERE","max_conditions",
+ new query_repeat([],
+ "select a from crash_me where a=1 and b='a'","",
+ "", " or a=%d and b='%d'","","","",
+ [],($query_size-42)/29,undef,2));
+ $limits{'max_conditions'}*=2;
+}
+# The 42 is the length of the constant part.
+# The 29 is the length of the variable part, plus two seven-digit numbers.
+
+find_limit("tables in join", "join_tables",
+ new query_repeat([],
+ "select crash_me.a",",t%d.a","from crash_me",
+ ",crash_me t%d","","",[],$max_join_tables,undef,
+ 1));
+
+# Different CREATE TABLE options
+
+report("primary key in create table",'primary_key_in_create',
+ "create table crash_q (q integer not null,primary key (q))",
+ "drop table crash_q $drop_attr");
+
+report("unique in create table",'unique_in_create',
+ "create table crash_q (q integer not null,unique (q))",
+ "drop table crash_q $drop_attr");
+
+if ($limits{'unique_in_create'} eq 'yes')
+{
+ report("unique null in create",'unique_null_in_create',
+ "create table crash_q (q integer,unique (q))",
+ "insert into crash_q (q) values (NULL)",
+ "insert into crash_q (q) values (NULL)",
+ "insert into crash_q (q) values (1)",
+ "drop table crash_q $drop_attr");
+}
+
+report("default value for column",'create_default',
+ "create table crash_q (q integer default 10 not null)",
+ "drop table crash_q $drop_attr");
+
+report("default value function for column",'create_default_func',
+ "create table crash_q (q integer not null,q1 integer default (1+1))",
+ "drop table crash_q $drop_attr");
+
+report("temporary tables",'temporary_table',
+ "create temporary table crash_q (q integer not null)",
+ "drop table crash_q $drop_attr");
+
+report_one("create table from select",'create_table_select',
+ [["create table crash_q SELECT * from crash_me","yes"],
+ ["create table crash_q AS SELECT * from crash_me","with AS"]]);
+$dbh->do("drop table crash_q $drop_attr");
+
+report("index in create table",'index_in_create',
+ "create table crash_q (q integer not null,index (q))",
+ "drop table crash_q $drop_attr");
+
+# The following must be executed as we need the value of end_drop_keyword
+# later
+if (!(defined($limits{'create_index'}) && defined($limits{'drop_index'})))
+{
+ if ($res=safe_query_l('create_index',"create index crash_q on crash_me (a)"))
+ {
+ $res="yes";
+ $drop_res="yes";
+ $end_drop_keyword="";
+ if (!safe_query_l('drop_index',"drop index crash_q"))
+ {
+ # Can't drop the standard way; Check if mSQL
+ if (safe_query_l('drop_index',"drop index crash_q from crash_me"))
+ {
+ $drop_res="with 'FROM'"; # Drop is not ANSI SQL
+ $end_drop_keyword="drop index %i from %t";
+ }
+ # else check if Access or MySQL
+ elsif (safe_query_l('drop_index',"drop index crash_q on crash_me"))
+ {
+ $drop_res="with 'ON'"; # Drop is not ANSI SQL
+ $end_drop_keyword="drop index %i on %t";
+ }
+ # else check if MS-SQL
+ elsif (safe_query_l('drop_index',"drop index crash_me.crash_q"))
+ {
+ $drop_res="with 'table.index'"; # Drop is not ANSI SQL
+ $end_drop_keyword="drop index %t.%i";
+ }
+ }
+ else
+ {
+ # Old MySQL 3.21 supports only the create index syntax
+ # This means that the second create doesn't give an error.
+ $res=safe_query_l('create_index',["create index crash_q on crash_me (a)",
+ "create index crash_q on crash_me (a)",
+ "drop index crash_q"]);
+ $res= $res ? 'ignored' : 'yes';
+ }
+ }
+ else
+ {
+ $drop_res=$res='no';
+ }
+ save_config_data('create_index',$res,"create index");
+ save_config_data('drop_index',$drop_res,"drop index");
+
+ print "create index: $limits{'create_index'}\n";
+ print "drop index: $limits{'drop_index'}\n";
+}
+
+# check if we can have 'NULL' as a key
+check_and_report("null in index","null_in_index",
+ [create_table("crash_q",["a char(10)"],["(a)"]),
+ "insert into crash_q values (NULL)"],
+ "select * from crash_q",
+ ["drop table crash_q $drop_attr"],
+ undef(),4);
+
+if ($limits{'unique_in_create'} eq 'yes')
+{
+ report("null in unique index",'null_in_unique',
+ create_table("crash_q",["q integer"],["unique(q)"]),
+ "insert into crash_q (q) values(NULL)",
+ "insert into crash_q (q) values(NULL)",
+ "drop table crash_q $drop_attr");
+ report("null combination in unique index",'nulls_in_unique',
+ create_table("crash_q",["q integer,q1 integer"],["unique(q,q1)"]),
+ "insert into crash_q (q,q1) values(1,NULL)",
+ "insert into crash_q (q,q1) values(1,NULL)",
+ "drop table crash_q $drop_attr");
+}
+
+if ($limits{'null_in_unique'} eq 'yes')
+{
+ report("null in unique index",'multi_null_in_unique',
+ create_table("crash_q",["q integer, x integer"],["unique(q)"]),
+ "insert into crash_q(x) values(1)",
+ "insert into crash_q(x) values(2)",
+ "drop table crash_q $drop_attr");
+}
+
+if ($limits{'create_index'} ne 'no')
+{
+ $end_drop=$end_drop_keyword;
+ $end_drop =~ s/%i/crash_q/;
+ $end_drop =~ s/%t/crash_me/;
+ report("index on column part (extension)","index_parts",,
+ "create index crash_q on crash_me (b(5))",
+ $end_drop);
+ $end_drop=$end_drop_keyword;
+ $end_drop =~ s/%i/crash_me/;
+ $end_drop =~ s/%t/crash_me/;
+ report("different namespace for index",
+ "index_namespace",
+ "create index crash_me on crash_me (b)",
+ $end_drop);
+}
+
+if (!report("case independent table names","table_name_case",
+ "create table crash_q (q integer)",
+ "drop table CRASH_Q $drop_attr"))
+{
+ safe_query("drop table crash_q $drop_attr");
+}
+
+if (!report("case independent field names","field_name_case",
+ "create table crash_q (q integer)",
+ "insert into crash_q(Q) values (1)",
+ "drop table crash_q $drop_attr"))
+{
+ safe_query("drop table crash_q $drop_attr");
+}
+
+if (!report("drop table if exists","drop_if_exists",
+ "create table crash_q (q integer)",
+ "drop table if exists crash_q $drop_attr"))
+{
+ safe_query("drop table crash_q $drop_attr");
+}
+
+report("create table if not exists","create_if_not_exists",
+ "create table crash_q (q integer)",
+ "create table if not exists crash_q (q integer)");
+safe_query("drop table crash_q $drop_attr");
+
+#
+# test of different join types
+#
+
+assert("create table crash_me2 (a integer not null,b char(10) not null,".
+ " c1 integer)");
+assert("insert into crash_me2 (a,b,c1) values (1,'b',1)");
+assert("create table crash_me3 (a integer not null,b char(10) not null)");
+assert("insert into crash_me3 (a,b) values (1,'b')");
+
+report("inner join","inner_join",
+ "select crash_me.a from crash_me inner join crash_me2 ON ".
+ "crash_me.a=crash_me2.a");
+report("left outer join","left_outer_join",
+ "select crash_me.a from crash_me left join crash_me2 ON ".
+ "crash_me.a=crash_me2.a");
+report("natural left outer join","natural_left_outer_join",
+ "select c1 from crash_me natural left join crash_me2");
+report("left outer join using","left_outer_join_using",
+ "select c1 from crash_me left join crash_me2 using (a)");
+report("left outer join odbc style","odbc_left_outer_join",
+ "select crash_me.a from { oj crash_me left outer join crash_me2 ON".
+ " crash_me.a=crash_me2.a }");
+report("right outer join","right_outer_join",
+ "select crash_me.a from crash_me right join crash_me2 ON ".
+ "crash_me.a=crash_me2.a");
+report("full outer join","full_outer_join",
+ "select crash_me.a from crash_me full join crash_me2 ON "."
+ crash_me.a=crash_me2.a");
+report("cross join (same as from a,b)","cross_join",
+ "select crash_me.a from crash_me cross join crash_me3");
+report("natural join","natural_join",
+ "select * from crash_me natural join crash_me3");
+report("union","union",
+ "select * from crash_me union select a,b from crash_me3");
+report("union all","union_all",
+ "select * from crash_me union all select a,b from crash_me3");
+report("intersect","intersect",
+ "select * from crash_me intersect select * from crash_me3");
+report("intersect all","intersect_all",
+ "select * from crash_me intersect all select * from crash_me3");
+report("except","except",
+ "select * from crash_me except select * from crash_me3");
+report("except all","except_all",
+ "select * from crash_me except all select * from crash_me3");
+report("except","except",
+ "select * from crash_me except select * from crash_me3");
+report("except all","except_all",
+ "select * from crash_me except all select * from crash_me3");
+report("minus","minus",
+ "select * from crash_me minus select * from crash_me3"); # oracle ...
+
+report("natural join (incompatible lists)","natural_join_incompat",
+ "select c1 from crash_me natural join crash_me2");
+report("union (incompatible lists)","union_incompat",
+ "select * from crash_me union select a,b from crash_me2");
+report("union all (incompatible lists)","union_all_incompat",
+ "select * from crash_me union all select a,b from crash_me2");
+report("intersect (incompatible lists)","intersect_incompat",
+ "select * from crash_me intersect select * from crash_me2");
+report("intersect all (incompatible lists)","intersect_all_incompat",
+ "select * from crash_me intersect all select * from crash_me2");
+report("except (incompatible lists)","except_incompat",
+ "select * from crash_me except select * from crash_me2");
+report("except all (incompatible lists)","except_all_incompat",
+ "select * from crash_me except all select * from crash_me2");
+report("except (incompatible lists)","except_incompat",
+ "select * from crash_me except select * from crash_me2");
+report("except all (incompatible lists)","except_all_incompat",
+ "select * from crash_me except all select * from crash_me2");
+report("minus (incompatible lists)","minus_incompat",
+ "select * from crash_me minus select * from crash_me2"); # oracle ...
+
+assert("drop table crash_me2 $drop_attr");
+assert("drop table crash_me3 $drop_attr");
+
+# somethings to be added here ....
+# FOR UNION - INTERSECT - EXCEPT -> CORRESPONDING [ BY ]
+# after subqueries:
+# >ALL | ANY | SOME - EXISTS - UNIQUE
+
+if (report("subqueries","subqueries",
+ "select a from crash_me where crash_me.a in ".
+ "(select max(a) from crash_me)"))
+{
+ $tmp=new query_repeat([],"select a from crash_me","","",
+ " where a in (select a from crash_me",")",
+ "",[],$max_join_tables);
+ find_limit("recursive subqueries", "recursive_subqueries",$tmp);
+}
+
+report("insert INTO ... SELECT ...","insert_select",
+ "create table crash_q (a int)",
+ "insert into crash_q (a) SELECT crash_me.a from crash_me",
+ "drop table crash_q $drop_attr");
+
+if (!defined($limits{"transactions"}))
+{
+ my ($limit,$type);
+ $limit="transactions";
+ $limit_r="rollback_metadata";
+ print "$limit: ";
+ foreach $type (('', 'type=bdb', 'type=innodb', 'type=gemini'))
+ {
+ undef($limits{$limit});
+ if (!report_trans($limit,
+ [create_table("crash_q",["a integer not null"],[],
+ $type),
+ "insert into crash_q values (1)"],
+ "select * from crash_q",
+ "drop table crash_q $drop_attr"
+ ))
+ {
+ report_rollback($limit_r,
+ [create_table("crash_q",["a integer not null"],[],
+ $type)],
+ "insert into crash_q values (1)",
+ "drop table crash_q $drop_attr" );
+ last;
+ };
+ }
+ print "$limits{$limit}\n";
+ print "$limit_r: $limits{$limit_r}\n";
+}
+
+report("atomic updates","atomic_updates",
+ create_table("crash_q",["a integer not null"],["primary key (a)"]),
+ "insert into crash_q values (2)",
+ "insert into crash_q values (3)",
+ "insert into crash_q values (1)",
+ "update crash_q set a=a+1",
+ "drop table crash_q $drop_attr");
+
+if ($limits{'atomic_updates'} eq 'yes')
+{
+ report_fail("atomic_updates_with_rollback","atomic_updates_with_rollback",
+ create_table("crash_q",["a integer not null"],
+ ["primary key (a)"]),
+ "insert into crash_q values (2)",
+ "insert into crash_q values (3)",
+ "insert into crash_q values (1)",
+ "update crash_q set a=a+1 where a < 3",
+ "drop table crash_q $drop_attr");
+}
+
+# To add with the views:
+# DROP VIEW - CREAT VIEW *** [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
+report("views","views",
+ "create view crash_q as select a from crash_me",
+ "drop view crash_q $drop_attr");
+
+# Test: foreign key
+{
+ my $result = 'undefined';
+ my $error;
+ print "foreign keys: ";
+ save_incomplete('foreign_key','foreign keys');
+
+# 1) check if foreign keys are supported
+ safe_query_l('foreign_key',
+ create_table("crash_me_qf",
+ ["a integer not null"],
+ ["primary key (a)"]));
+ $error= safe_query_l('foreign_key',
+ create_table("crash_me_qf2",
+ ["a integer not null",
+ "foreign key (a) references crash_me_qf (a)"],
+ []));
+
+ if ($error == 1) # OK -- syntax is supported
+ {
+ $result = 'error';
+ # now check if foreign key really works
+ safe_query_l('foreign_key', "insert into crash_me_qf values (1)");
+ if (safe_query_l('foreign_key', "insert into crash_me_qf2 values (2)") eq 1)
+ {
+ $result = 'syntax only';
+ }
+ else
+ {
+ $result = 'yes';
+ }
+ }
+ else
+ {
+ $result = "no";
+ }
+ safe_query_l('foreign_key', "drop table crash_me_qf2 $drop_attr");
+ safe_query_l('foreign_key', "drop table crash_me_qf $drop_attr");
+ print "$result\n";
+ save_config_data('foreign_key',$result,"foreign keys");
+}
+
+if ($limits{'foreign_key'} eq 'yes')
+{
+ report("allows to update of foreign key values",'foreign_update',
+ "create table crash_me1 (a int not null primary key)",
+ "create table crash_me2 (a int not null," .
+ " foreign key (a) references crash_me1 (a))",
+ "insert into crash_me1 values (1)",
+ "insert into crash_me2 values (1)",
+ "update crash_me1 set a = 2", ## <- must fail
+ "drop table crash_me2 $drop_attr",
+ "drop table crash_me1 $drop_attr"
+ );
+}
+
+report("Create SCHEMA","create_schema",
+ "create schema crash_schema create table crash_q (a int) ".
+ "create table crash_q2(b int)",
+ "drop schema crash_schema cascade");
+
+if ($limits{'foreign_key'} eq 'yes')
+{
+ if ($limits{'create_schema'} eq 'yes')
+ {
+ report("Circular foreign keys","foreign_key_circular",
+ "create schema crash_schema create table crash_q ".
+ "(a int primary key, b int, foreign key (b) references ".
+ "crash_q2(a)) create table crash_q2(a int, b int, ".
+ "primary key(a), foreign key (b) references crash_q(a))",
+ "drop schema crash_schema cascade");
+ }
+}
+
+if ($limits{'func_sql_character_length'} eq 'yes')
+{
+ my $result = 'error';
+ my ($resultset);
+ my $key = 'length_of_varchar_field';
+ my $prompt='CHARACTER_LENGTH(varchar_field)';
+ print $prompt," = ";
+ if (!defined($limits{$key})) {
+ save_incomplete($key,$prompt);
+ safe_query_l($key,[
+ "CREATE TABLE crash_me1 (S1 VARCHAR(100))",
+ "INSERT INTO crash_me1 VALUES ('X')"
+ ]);
+ my $recset = get_recordset($key,
+ "SELECT CHARACTER_LENGTH(S1) FROM crash_me1");
+ print_recordset($key,$recset);
+ if (defined($recset)){
+ if ( $recset->[0][0] eq 1 ) {
+ $result = 'actual length';
+ } elsif( $recset->[0][0] eq 100 ) {
+ $result = 'defined length';
+ };
+ } else {
+ add_log($key,$DBI::errstr);
+ }
+ safe_query_l($key, "drop table crash_me1 $drop_attr");
+ save_config_data($key,$result,$prompt);
+ } else {
+ $result = $limits{$key};
+ };
+ print "$result\n";
+}
+
+
+check_constraint("Column constraints","constraint_check",
+ "create table crash_q (a int check (a>0))",
+ "insert into crash_q values(0)",
+ "drop table crash_q $drop_attr");
+
+
+check_constraint("Table constraints","constraint_check_table",
+ "create table crash_q (a int ,b int, check (a>b))",
+ "insert into crash_q values(0,0)",
+ "drop table crash_q $drop_attr");
+
+check_constraint("Named constraints","constraint_check_named",
+ "create table crash_q (a int ,b int, constraint abc check (a>b))",
+ "insert into crash_q values(0,0)",
+ "drop table crash_q $drop_attr");
+
+
+report("NULL constraint (SyBase style)","constraint_null",
+ "create table crash_q (a int null)",
+ "drop table crash_q $drop_attr");
+
+report("Triggers (ANSI SQL)","psm_trigger",
+ "create table crash_q (a int ,b int)",
+ "create trigger crash_trigger after insert on crash_q referencing ".
+ "new table as new_a when (localtime > time '18:00:00') ".
+ "begin atomic end",
+ "insert into crash_q values(1,2)",
+ "drop trigger crash_trigger",
+ "drop table crash_q $drop_attr");
+
+report("PSM procedures (ANSI SQL)","psm_procedures",
+ "create table crash_q (a int,b int)",
+ "create procedure crash_proc(in a1 int, in b1 int) language ".
+ "sql modifies sql data begin declare c1 int; set c1 = a1 + b1;".
+ " insert into crash_q(a,b) values (a1,c1); end",
+ "call crash_proc(1,10)",
+ "drop procedure crash_proc",
+ "drop table crash_q $drop_attr");
+
+report("PSM modules (ANSI SQL)","psm_modules",
+ "create table crash_q (a int,b int)",
+ "create module crash_m declare procedure ".
+ "crash_proc(in a1 int, in b1 int) language sql modifies sql ".
+ "data begin declare c1 int; set c1 = a1 + b1; ".
+ "insert into crash_q(a,b) values (a1,c1); end; ".
+ "declare procedure crash_proc2(INOUT a int, in b int) ".
+ "contains sql set a = b + 10; end module",
+ "call crash_proc(1,10)",
+ "drop module crash_m cascade",
+ "drop table crash_q cascade $drop_attr");
+
+report("PSM functions (ANSI SQL)","psm_functions",
+ "create table crash_q (a int)",
+ "create function crash_func(in a1 int, in b1 int) returns int".
+ " language sql deterministic contains sql ".
+ " begin return a1 * b1; end",
+ "insert into crash_q values(crash_func(2,4))",
+ "select a,crash_func(a,2) from crash_q",
+ "drop function crash_func cascade",
+ "drop table crash_q $drop_attr");
+
+report("Domains (ANSI SQL)","domains",
+ "create domain crash_d as varchar(10) default 'Empty' ".
+ "check (value <> 'abcd')",
+ "create table crash_q(a crash_d, b int)",
+ "insert into crash_q(a,b) values('xyz',10)",
+ "insert into crash_q(b) values(10)",
+ "drop table crash_q $drop_attr",
+ "drop domain crash_d");
+
+
+if (!defined($limits{'lock_tables'}))
+{
+ report("lock table","lock_tables",
+ "lock table crash_me READ",
+ "unlock tables");
+ if ($limits{'lock_tables'} eq 'no')
+ {
+ delete $limits{'lock_tables'};
+ report("lock table","lock_tables",
+ "lock table crash_me IN SHARE MODE");
+ }
+}
+
+if (!report("many tables to drop table","multi_drop",
+ "create table crash_q (a int)",
+ "create table crash_q2 (a int)",
+ "drop table crash_q,crash_q2 $drop_attr"))
+{
+ $dbh->do("drop table crash_q $drop_attr");
+ $dbh->do("drop table crash_q2 $drop_attr");
+}
+
+if (!report("drop table with cascade/restrict","drop_restrict",
+ "create table crash_q (a int)",
+ "drop table crash_q restrict"))
+{
+ $dbh->do("drop table crash_q $drop_attr");
+}
+
+
+report("-- as comment (ANSI)","comment_--",
+ "select * from crash_me -- Testing of comments");
+report("// as comment","comment_//",
+ "select * from crash_me // Testing of comments");
+report("# as comment","comment_#",
+ "select * from crash_me # Testing of comments");
+report("/* */ as comment","comment_/**/",
+ "select * from crash_me /* Testing of comments */");
+
+#
+# Check things that fails one some servers
+#
+
+# Empress can't insert empty strings in a char() field
+report("insert empty string","insert_empty_string",
+ create_table("crash_q",["a char(10) not null,b char(10)"],[]),
+ "insert into crash_q values ('','')",
+ "drop table crash_q $drop_attr");
+
+report("Having with alias","having_with_alias",
+ create_table("crash_q",["a integer"],[]),
+ "insert into crash_q values (10)",
+ "select sum(a) as b from crash_q group by a having b > 0",
+ "drop table crash_q $drop_attr");
+
+#
+# test name limits
+#
+
+find_limit("table name length","max_table_name",
+ new query_many(["create table crash_q%s (q integer)",
+ "insert into crash_q%s values(1)"],
+ "select * from crash_q%s",1,
+ ["drop table crash_q%s $drop_attr"],
+ $max_name_length,7,1));
+
+find_limit("column name length","max_column_name",
+ new query_many(["create table crash_q (q%s integer)",
+ "insert into crash_q (q%s) values(1)"],
+ "select q%s from crash_q",1,
+ ["drop table crash_q $drop_attr"],
+ $max_name_length,1));
+
+if ($limits{'column_alias'} eq 'yes')
+{
+ find_limit("select alias name length","max_select_alias_name",
+ new query_many(undef,
+ "select b as %s from crash_me",undef,
+ undef, $max_name_length));
+}
+
+find_limit("table alias name length","max_table_alias_name",
+ new query_many(undef,
+ "select %s.b from crash_me %s",
+ undef,
+ undef, $max_name_length));
+
+$end_drop_keyword = "drop index %i" if (!$end_drop_keyword);
+$end_drop=$end_drop_keyword;
+$end_drop =~ s/%i/crash_q%s/;
+$end_drop =~ s/%t/crash_me/;
+
+if ($limits{'create_index'} ne 'no')
+{
+ find_limit("index name length","max_index_name",
+ new query_many(["create index crash_q%s on crash_me (a)"],
+ undef,undef,
+ [$end_drop],
+ $max_name_length,7));
+}
+
+find_limit("max char() size","max_char_size",
+ new query_many(["create table crash_q (q char(%d))",
+ "insert into crash_q values ('%s')"],
+ "select * from crash_q","%s",
+ ["drop table crash_q $drop_attr"],
+ min($max_string_size,$limits{'query_size'})));
+
+if ($limits{'type_sql_varchar(1_arg)'} eq 'yes')
+{
+ find_limit("max varchar() size","max_varchar_size",
+ new query_many(["create table crash_q (q varchar(%d))",
+ "insert into crash_q values ('%s')"],
+ "select * from crash_q","%s",
+ ["drop table crash_q $drop_attr"],
+ min($max_string_size,$limits{'query_size'})));
+}
+
+$found=undef;
+foreach $type (('mediumtext','text','text()','blob','long'))
+{
+ if ($limits{"type_extra_$type"} eq 'yes')
+ {
+ $found=$type;
+ last;
+ }
+}
+if (defined($found))
+{
+ $found =~ s/\(\)/\(%d\)/;
+ find_limit("max text or blob size","max_text_size",
+ new query_many(["create table crash_q (q $found)",
+ "insert into crash_q values ('%s')"],
+ "select * from crash_q","%s",
+ ["drop table crash_q $drop_attr"],
+ min($max_string_size,$limits{'query_size'}-30)));
+
+}
+
+$tmp=new query_repeat([],"create table crash_q (a integer","","",
+ ",a%d integer","",")",["drop table crash_q $drop_attr"],
+ $max_columns);
+$tmp->{'offset'}=1;
+find_limit("Columns in table","max_columns",$tmp);
+
+# Make a field definition to be used when testing keys
+
+$key_definitions="q0 integer not null";
+$key_fields="q0";
+for ($i=1; $i < min($limits{'max_columns'},$max_keys) ; $i++)
+{
+ $key_definitions.=",q$i integer not null";
+ $key_fields.=",q$i";
+}
+$key_values="1," x $i;
+chop($key_values);
+
+if ($limits{'unique_in_create'} eq 'yes')
+{
+ find_limit("unique indexes","max_unique_index",
+ new query_table("create table crash_q (q integer",
+ ",q%d integer not null,unique (q%d)",")",
+ ["insert into crash_q (q,%f) values (1,%v)"],
+ "select q from crash_q",1,
+ "drop table crash_q $drop_attr",
+ $max_keys,0));
+
+ find_limit("index parts","max_index_parts",
+ new query_table("create table crash_q ".
+ "($key_definitions,unique (q0",
+ ",q%d","))",
+ ["insert into crash_q ($key_fields) values ($key_values)"],
+ "select q0 from crash_q",1,
+ "drop table crash_q $drop_attr",
+ $max_keys,1));
+
+ find_limit("max index part length","max_index_part_length",
+ new query_many(["create table crash_q (q char(%d) not null,".
+ "unique(q))",
+ "insert into crash_q (q) values ('%s')"],
+ "select q from crash_q","%s",
+ ["drop table crash_q $drop_attr"],
+ $limits{'max_char_size'},0));
+
+ if ($limits{'type_sql_varchar(1_arg)'} eq 'yes')
+ {
+ find_limit("index varchar part length","max_index_varchar_part_length",
+ new query_many(["create table crash_q (q varchar(%d) not null,".
+ "unique(q))",
+ "insert into crash_q (q) values ('%s')"],
+ "select q from crash_q","%s",
+ ["drop table crash_q $drop_attr"],
+ $limits{'max_varchar_size'},0));
+ }
+}
+
+
+if ($limits{'create_index'} ne 'no')
+{
+ if ($limits{'create_index'} eq 'ignored' ||
+ $limits{'unique_in_create'} eq 'yes')
+ { # This should be true
+ add_log('max_index',
+ " max_unique_index=$limits{'max_unique_index'} ,".
+ "so max_index must be same");
+ save_config_data('max_index',$limits{'max_unique_index'},"max index");
+ print "indexes: $limits{'max_index'}\n";
+ }
+ else
+ {
+ if (!defined($limits{'max_index'}))
+ {
+ safe_query_l('max_index',"create table crash_q ($key_definitions)");
+ for ($i=1; $i <= min($limits{'max_columns'},$max_keys) ; $i++)
+ {
+ last if (!safe_query_l('max_index',
+ "create index crash_q$i on crash_q (q$i)"));
+ }
+ save_config_data('max_index',$i == $max_keys ? $max_keys : $i,
+ "max index");
+ while ( --$i > 0)
+ {
+ $end_drop=$end_drop_keyword;
+ $end_drop =~ s/%i/crash_q$i/;
+ $end_drop =~ s/%t/crash_q/;
+ assert($end_drop);
+ }
+ assert("drop table crash_q $drop_attr");
+ }
+ print "indexs: $limits{'max_index'}\n";
+ if (!defined($limits{'max_unique_index'}))
+ {
+ safe_query_l('max_unique_index',
+ "create table crash_q ($key_definitions)");
+ for ($i=0; $i < min($limits{'max_columns'},$max_keys) ; $i++)
+ {
+ last if (!safe_query_l('max_unique_index',
+ "create unique index crash_q$i on crash_q (q$i)"));
+ }
+ save_config_data('max_unique_index',$i == $max_keys ? $max_keys : $i,
+ "max unique index");
+ while ( --$i >= 0)
+ {
+ $end_drop=$end_drop_keyword;
+ $end_drop =~ s/%i/crash_q$i/;
+ $end_drop =~ s/%t/crash_q/;
+ assert($end_drop);
+ }
+ assert("drop table crash_q $drop_attr");
+ }
+ print "unique indexes: $limits{'max_unique_index'}\n";
+ if (!defined($limits{'max_index_parts'}))
+ {
+ safe_query_l('max_index_parts',
+ "create table crash_q ($key_definitions)");
+ $end_drop=$end_drop_keyword;
+ $end_drop =~ s/%i/crash_q1%d/;
+ $end_drop =~ s/%t/crash_q/;
+ find_limit("index parts","max_index_parts",
+ new query_table("create index crash_q1%d on crash_q (q0",
+ ",q%d",")",
+ [],
+ undef,undef,
+ $end_drop,
+ $max_keys,1));
+ assert("drop table crash_q $drop_attr");
+ }
+ else
+ {
+ print "index parts: $limits{'max_index_parts'}\n";
+ }
+ $end_drop=$end_drop_keyword;
+ $end_drop =~ s/%i/crash_q2%d/;
+ $end_drop =~ s/%t/crash_me/;
+
+ find_limit("index part length","max_index_part_length",
+ new query_many(["create table crash_q (q char(%d))",
+ "create index crash_q2%d on crash_q (q)",
+ "insert into crash_q values('%s')"],
+ "select q from crash_q",
+ "%s",
+ [ $end_drop,
+ "drop table crash_q $drop_attr"],
+ min($limits{'max_char_size'},"+8192")));
+ }
+}
+
+find_limit("index length","max_index_length",
+ new query_index_length("create table crash_q ",
+ "drop table crash_q $drop_attr",
+ $max_key_length));
+
+find_limit("max table row length (without blobs)","max_row_length",
+ new query_row_length("crash_q ",
+ "not null",
+ "drop table crash_q $drop_attr",
+ min($max_row_length,
+ $limits{'max_columns'}*
+ min($limits{'max_char_size'},255))));
+
+find_limit("table row length with nulls (without blobs)",
+ "max_row_length_with_null",
+ new query_row_length("crash_q ",
+ "",
+ "drop table crash_q $drop_attr",
+ $limits{'max_row_length'}*2));
+
+find_limit("number of columns in order by","columns_in_order_by",
+ new query_many(["create table crash_q (%F)",
+ "insert into crash_q values(%v)",
+ "insert into crash_q values(%v)"],
+ "select * from crash_q order by %f",
+ undef(),
+ ["drop table crash_q $drop_attr"],
+ $max_order_by));
+
+find_limit("number of columns in group by","columns_in_group_by",
+ new query_many(["create table crash_q (%F)",
+ "insert into crash_q values(%v)",
+ "insert into crash_q values(%v)"],
+ "select %f from crash_q group by %f",
+ undef(),
+ ["drop table crash_q $drop_attr"],
+ $max_order_by));
+
+
+
+# Safe arithmetic test
+
+$prompt="safe decimal arithmetic";
+$key="safe_decimal_arithmetic";
+if (!defined($limits{$key}))
+{
+ print "$prompt=";
+ save_incomplete($key,$prompt);
+ if (!safe_query_l($key,$server->create("crash_me_a",
+ ["a decimal(10,2)","b decimal(10,2)"])))
+ {
+ print DBI->errstr();
+ die "Can't create table 'crash_me_a' $DBI::errstr\n";
+ };
+
+ if (!safe_query_l($key,
+ ["insert into crash_me_a (a,b) values (11.4,18.9)"]))
+ {
+ die "Can't insert into table 'crash_me_a' a record: $DBI::errstr\n";
+ };
+
+ $arithmetic_safe = 'no';
+ $arithmetic_safe = 'yes'
+ if ( (safe_query_result_l($key,
+ 'select count(*) from crash_me_a where a+b=30.3',1,0) == 0)
+ and (safe_query_result_l($key,
+ 'select count(*) from crash_me_a where a+b-30.3 = 0',1,0) == 0)
+ and (safe_query_result_l($key,
+ 'select count(*) from crash_me_a where a+b-30.3 < 0',0,0) == 0)
+ and (safe_query_result_l($key,
+ 'select count(*) from crash_me_a where a+b-30.3 > 0',0,0) == 0));
+ save_config_data($key,$arithmetic_safe,$prompt);
+ print "$arithmetic_safe\n";
+ assert("drop table crash_me_a $drop_attr");
+}
+ else
+{
+ print "$prompt=$limits{$key} (cached)\n";
+}
+
+# Check where is null values in sorted recordset
+if (!safe_query($server->create("crash_me_n",["i integer","r integer"])))
+ {
+ print DBI->errstr();
+ die "Can't create table 'crash_me_n' $DBI::errstr\n";
+ };
+
+safe_query_l("position_of_null",["insert into crash_me_n (i) values(1)",
+"insert into crash_me_n values(2,2)",
+"insert into crash_me_n values(3,3)",
+"insert into crash_me_n values(4,4)",
+"insert into crash_me_n (i) values(5)"]);
+
+$key = "position_of_null";
+$prompt ="Where is null values in sorted recordset";
+if (!defined($limits{$key}))
+{
+ save_incomplete($key,$prompt);
+ print "$prompt=";
+ $sth=$dbh->prepare("select r from crash_me_n order by r ");
+ $sth->execute;
+ add_log($key,"< select r from crash_me_n order by r ");
+ $limit= detect_null_position($key,$sth);
+ $sth->finish;
+ print "$limit\n";
+ save_config_data($key,$limit,$prompt);
+} else {
+ print "$prompt=$limits{$key} (cache)\n";
+}
+
+$key = "position_of_null_desc";
+$prompt ="Where is null values in sorted recordset (DESC)";
+if (!defined($limits{$key}))
+{
+ save_incomplete($key,$prompt);
+ print "$prompt=";
+ $sth=$dbh->prepare("select r from crash_me_n order by r desc");
+ $sth->execute;
+ add_log($key,"< select r from crash_me_n order by r desc");
+ $limit= detect_null_position($key,$sth);
+ $sth->finish;
+ print "$limit\n";
+ save_config_data($key,$limit,$prompt);
+} else {
+ print "$prompt=$limits{$key} (cache)\n";
+}
+
+
+assert("drop table crash_me_n $drop_attr");
+
+
+
+$key = 'sorted_group_by';
+$prompt = 'Group by always sorted';
+if (!defined($limits{$key}))
+{
+ save_incomplete($key,$prompt);
+ print "$prompt=";
+ safe_query_l($key,[
+ "create table crash_me_t1 (a int not null, b int not null)",
+ "insert into crash_me_t1 values (1,1)",
+ "insert into crash_me_t1 values (1,2)",
+ "insert into crash_me_t1 values (3,1)",
+ "insert into crash_me_t1 values (3,2)",
+ "insert into crash_me_t1 values (2,2)",
+ "insert into crash_me_t1 values (2,1)",
+ "create table crash_me_t2 (a int not null, b int not null)",
+ "create index crash_me_t2_ind on crash_me_t2 (a)",
+ "insert into crash_me_t2 values (1,3)",
+ "insert into crash_me_t2 values (3,1)",
+ "insert into crash_me_t2 values (2,2)",
+ "insert into crash_me_t2 values (1,1)"]);
+
+ my $bigqry = "select crash_me_t1.a,crash_me_t2.b from ".
+ "crash_me_t1,crash_me_t2 where crash_me_t1.a=crash_me_t2.a ".
+ "group by crash_me_t1.a,crash_me_t2.b";
+
+ my $limit='no';
+ my $rs = get_recordset($key,$bigqry);
+ print_recordset($key,$rs);
+ if ( defined ($rs)) {
+ if (compare_recordset($key,$rs,[[1,1],[1,3],[2,2],[3,1]]) eq 0)
+ {
+ $limit='yes'
+ }
+ } else {
+ add_log($key,"error: ".$DBI::errstr);
+ }
+
+ print "$limit\n";
+ safe_query_l($key,["drop table crash_me_t1",
+ "drop table crash_me_t2"]);
+ save_config_data($key,$limit,$prompt);
+
+} else {
+ print "$prompt=$limits{$key} (cashed)\n";
+}
+
+
+#
+# End of test
+#
+
+$dbh->do("drop table crash_me $drop_attr"); # Remove temporary table
+
+print "crash-me safe: $limits{'crash_me_safe'}\n";
+print "reconnected $reconnect_count times\n";
+
+$dbh->disconnect || warn $dbh->errstr;
+save_all_config_data();
+exit 0;
+
+# End of test
+#
+
+$dbh->do("drop table crash_me $drop_attr"); # Remove temporary table
+
+print "crash-me safe: $limits{'crash_me_safe'}\n";
+print "reconnected $reconnect_count times\n";
+
+$dbh->disconnect || warn $dbh->errstr;
+save_all_config_data();
+exit 0;
+
+# Check where is nulls in the sorted result (for)
+# it expects exactly 5 rows in the result
+
+sub detect_null_position
+{
+ my $key = shift;
+ my $sth = shift;
+ my ($z,$r1,$r2,$r3,$r4,$r5);
+ $r1 = $sth->fetchrow_array; add_log($key,"> $r1");
+ $r2 = $sth->fetchrow_array; add_log($key,"> $r2");
+ $r3 = $sth->fetchrow_array; add_log($key,"> $r3");
+ $r4 = $sth->fetchrow_array; add_log($key,"> $r4");
+ $r5 = $sth->fetchrow_array; add_log($key,"> $r5");
+ return "first" if ( !defined($r1) && !defined($r2) && defined($r3));
+ return "last" if ( !defined($r5) && !defined($r4) && defined($r3));
+ return "random";
+}
+
+sub check_parenthesis {
+ my $prefix=shift;
+ my $fn=shift;
+ my $result='no';
+ my $param_name=$prefix.lc($fn);
+ my $r;
+
+ save_incomplete($param_name,$fn);
+ $r = safe_query("select $fn $end_query");
+ add_log($param_name,$safe_query_log);
+ if ($r == 1)
+ {
+ $result="yes";
+ }
+ else{
+ $r = safe_query("select $fn() $end_query");
+ add_log($param_name,$safe_query_log);
+ if ( $r == 1)
+ {
+ $result="with_parenthesis";
+ }
+ }
+
+ save_config_data($param_name,$result,$fn);
+}
+
+sub check_constraint {
+ my $prompt = shift;
+ my $key = shift;
+ my $create = shift;
+ my $check = shift;
+ my $drop = shift;
+ save_incomplete($key,$prompt);
+ print "$prompt=";
+ my $res = 'no';
+ my $t;
+ $t=safe_query($create);
+ add_log($key,$safe_query_log);
+ if ( $t == 1)
+ {
+ $res='yes';
+ $t= safe_query($check);
+ add_log($key,$safe_query_log);
+ if ($t == 1)
+ {
+ $res='syntax only';
+ }
+ }
+ safe_query($drop);
+ add_log($key,$safe_query_log);
+
+ save_config_data($key,$res,$prompt);
+ print "$res\n";
+}
+
+sub make_time_r {
+ my $hour=shift;
+ my $minute=shift;
+ my $second=shift;
+ $_ = $limits{'time_format_inresult'};
+ return sprintf "%02d:%02d:%02d", ($hour%24),$minute,$second if (/^iso$/);
+ return sprintf "%02d.%02d.%02d", ($hour%24),$minute,$second if (/^euro/);
+ return sprintf "%02d:%02d %s",
+ ($hour >= 13? ($hour-12) : $hour),$minute,($hour >=13 ? 'PM':'AM')
+ if (/^usa/);
+ return sprintf "%02d%02d%02d", ($hour%24),$minute,$second if (/^HHMMSS/);
+ return sprintf "%04d%02d%02d", ($hour%24),$minute,$second if (/^HHHHMMSS/);
+ return "UNKNOWN FORMAT";
+}
+
+sub make_time {
+ my $hour=shift;
+ my $minute=shift;
+ my $second=shift;
+ return sprintf "%02d:%02d:%02d", ($hour%24),$minute,$second
+ if ($limits{'time_format_ISO'} eq "yes");
+ return sprintf "%02d.%02d.%02d", ($hour%24),$minute,$second
+ if ($limits{'time_format_EUR'} eq "yes");
+ return sprintf "%02d:%02d %s",
+ ($hour >= 13? ($hour-12) : $hour),$minute,($hour >=13 ? 'PM':'AM')
+ if ($limits{'time_format_USA'} eq "yes");
+ return sprintf "%02d%02d%02d", ($hour%24),$minute,$second
+ if ($limits{'time_format_HHMMSS'} eq "yes");
+ return sprintf "%04d%02d%02d", ($hour%24),$minute,$second
+ if ($limits{'time_format_HHHHMMSS'} eq "yes");
+ return "UNKNOWN FORMAT";
+}
+
+sub make_date_r {
+ my $year=shift;
+ my $month=shift;
+ my $day=shift;
+ $_ = $limits{'date_format_inresult'};
+ return sprintf "%02d-%02d-%02d", ($year%100),$month,$day if (/^short iso$/);
+ return sprintf "%04d-%02d-%02d", $year,$month,$day if (/^iso/);
+ return sprintf "%02d.%02d.%02d", $day,$month,($year%100) if (/^short euro/);
+ return sprintf "%02d.%02d.%04d", $day,$month,$year if (/^euro/);
+ return sprintf "%02d/%02d/%02d", $month,$day,($year%100) if (/^short usa/);
+ return sprintf "%02d/%02d/%04d", $month,$day,$year if (/^usa/);
+ return sprintf "%04d%02d%02d", $year,$month,$day if (/^YYYYMMDD/);
+ return "UNKNOWN FORMAT";
+}
+
+
+sub make_date {
+ my $year=shift;
+ my $month=shift;
+ my $day=shift;
+ return sprintf "'%04d-%02d-%02d'", $year,$month,$day
+ if ($limits{'date_format_ISO'} eq yes);
+ return sprintf "DATE '%04d-%02d-%02d'", $year,$month,$day
+ if ($limits{'date_format_ISO_with_date'} eq yes);
+ return sprintf "'%02d.%02d.%04d'", $day,$month,$year
+ if ($limits{'date_format_EUR'} eq 'yes');
+ return sprintf "DATE '%02d.%02d.%04d'", $day,$month,$year
+ if ($limits{'date_format_EUR_with_date'} eq 'yes');
+ return sprintf "'%02d/%02d/%04d'", $month,$day,$year
+ if ($limits{'date_format_USA'} eq 'yes');
+ return sprintf "DATE '%02d/%02d/%04d'", $month,$day,$year
+ if ($limits{'date_format_USA_with_date'} eq 'yes');
+ return sprintf "'%04d%02d%02d'", $year,$month,$day
+ if ($limits{'date_format_YYYYMMDD'} eq 'yes');
+ return sprintf "DATE '%04d%02d%02d'", $year,$month,$day
+ if ($limits{'date_format_YYYYMMDD_with_date'} eq 'yes');
+ return "UNKNOWN FORMAT";
+}
+
+
+sub print_recordset{
+ my ($key,$recset) = @_;
+ my $rec;
+ foreach $rec (@$recset)
+ {
+ add_log($key, " > ".join(',', map(repr($_), @$rec)));
+ }
+}
+
+#
+# read result recordset from sql server.
+# returns arrayref to (arrayref to) values
+# or undef (in case of sql errors)
+#
+sub get_recordset{
+ my ($key,$query) = @_;
+ add_log($key, "< $query");
+ return $dbh->selectall_arrayref($query);
+}
+
+# function for comparing recordset (that was returned by get_recordset)
+# and arrayref of (arrayref of) values.
+#
+# returns : zero if recordset equal that array, 1 if it doesn't equal
+#
+# parameters:
+# $key - current operation (for logging)
+# $recset - recordset
+# $mustbe - array of values that we expect
+#
+# example: $a=get_recordset('some_parameter','select a,b from c');
+# if (compare_recordset('some_parameter',$a,[[1,1],[1,2],[1,3]]) neq 0)
+# {
+# print "unexpected result\n";
+# } ;
+#
+sub compare_recordset {
+ my ($key,$recset,$mustbe) = @_;
+ my $rec,$recno,$fld,$fldno,$fcount;
+ add_log($key,"\n Check recordset:");
+ $recno=0;
+ foreach $rec (@$recset)
+ {
+ add_log($key," " . join(',', map(repr($_),@$rec)) . " expected: " .
+ join(',', map(repr($_), @{$mustbe->[$recno]} ) ));
+ $fcount = @$rec;
+ $fcount--;
+ foreach $fldno (0 .. $fcount )
+ {
+ if ($mustbe->[$recno][$fldno] ne $rec->[$fldno])
+ {
+ add_log($key," Recordset doesn't correspond with template");
+ return 1;
+ };
+ }
+ $recno++;
+ }
+ add_log($key," Recordset corresponds with template");
+ return 0;
+}
+
+#
+# converts inner perl value to printable representation
+# for example: undef maps to 'NULL',
+# string -> 'string'
+# int -> int
+#
+sub repr {
+ my $s = shift;
+ return "'$s'"if ($s =~ /\D/);
+ return 'NULL'if ( not defined($s));
+ return $s;
+}
+
+
+sub version
+{
+ print "$0 Ver $version\n";
+}
+
+
+sub usage
+{
+ version();
+ print <<EOF;
+
+This program tries to find all limits and capabilities for a SQL
+server. As it will use the server in some 'unexpected' ways, one
+shouldn\'t have anything important running on it at the same time this
+program runs! There is a slight chance that something unexpected may
+happen....
+
+As all used queries are legal according to some SQL standard. any
+reasonable SQL server should be able to run this test without any
+problems.
+
+All questions is cached in $opt_dir/'server_name'[-suffix].cfg that
+future runs will use limits found in previous runs. Remove this file
+if you want to find the current limits for your version of the
+database server.
+
+This program uses some table names while testing things. If you have any
+tables with the name of 'crash_me' or 'crash_qxxxx' where 'x' is a number,
+they will be deleted by this test!
+
+$0 takes the following options:
+
+--help or --Information
+ Shows this help
+
+--batch-mode
+ Don\'t ask any questions, quit on errors.
+
+--config-file='filename'
+ Read limit results from specific file
+
+--comment='some comment'
+ Add this comment to the crash-me limit file
+
+--check-server
+ Do a new connection to the server every time crash-me checks if the server
+ is alive. This can help in cases where the server starts returning wrong
+ data because of an earlier select.
+
+--database='database' (Default $opt_database)
+ Create test tables in this database.
+
+--dir='limits'
+ Save crash-me output in this directory
+
+--debug
+ Lots of printing to help debugging if something goes wrong.
+
+--fix-limit-file
+ Reformat the crash-me limit file. crash-me is not run!
+
+--force
+ Start test at once, without a warning screen and without questions.
+ This is a option for the very brave.
+ Use this in your cron scripts to test your database every night.
+
+--log-all-queries
+ Prints all queries that are executed. Mostly used for debugging crash-me.
+
+--log-queries-to-file='filename'
+ Log full queries to file.
+
+--host='hostname' (Default $opt_host)
+ Run tests on this host.
+
+--password='password'
+ Password for the current user.
+
+--restart
+ Save states during each limit tests. This will make it possible to continue
+ by restarting with the same options if there is some bug in the DBI or
+ DBD driver that caused $0 to die!
+
+--server='server name' (Default $opt_server)
+ Run the test on the given server.
+ Known servers names are: Access, Adabas, AdabasD, Empress, Oracle,
+ Informix, DB2, Mimer, mSQL, MS-SQL, MySQL, Pg, Solid or Sybase.
+ For others $0 can\'t report the server version.
+
+--suffix='suffix' (Default '')
+ Add suffix to the output filename. For instance if you run crash-me like
+ "crash-me --suffix="myisam",
+ then output filename will look "mysql-myisam.cfg".
+
+--user='user_name'
+ User name to log into the SQL server.
+
+--db-start-cmd='command to restart server'
+ Automaticly restarts server with this command if the database server dies.
+
+--sleep='time in seconds' (Default $opt_sleep)
+ Wait this long before restarting server.
+
+--verbose
+ Log into the result file queries performed for determination parameter value
+ This causes rows starting with ' ###' to be logged into the .cnf file
+
+--noverbose
+ Don't log '###' quries to the .cnf file.
+
+EOF
+ exit(0);
+}
+
+
+sub server_info
+{
+ my ($ok,$tmp);
+ $ok=0;
+ print "\nNOTE: You should be familiar with '$0 --help' before continuing!\n\n";
+ if (lc($opt_server) eq "mysql")
+ {
+ $ok=1;
+ print <<EOF;
+This test should not crash MySQL if it was distributed together with the
+running MySQL version.
+If this is the case you can probably continue without having to worry about
+destroying something.
+EOF
+ }
+ elsif (lc($opt_server) eq "msql")
+ {
+ print <<EOF;
+This test will take down mSQL repeatedly while finding limits.
+To make this test easier, start mSQL in another terminal with something like:
+
+while (true); do /usr/local/mSQL/bin/msql2d ; done
+
+You should be sure that no one is doing anything important with mSQL and that
+you have privileges to restart it!
+It may take awhile to determinate the number of joinable tables, so prepare to
+wait!
+EOF
+ }
+ elsif (lc($opt_server) eq "solid")
+ {
+ print <<EOF;
+This test will take down Solid server repeatedly while finding limits.
+You should be sure that no one is doing anything important with Solid
+and that you have privileges to restart it!
+
+If you are running Solid without logging and/or backup YOU WILL LOSE!
+Solid does not write data from the cache often enough. So if you continue
+you may lose tables and data that you entered hours ago!
+
+Solid will also take a lot of memory running this test. You will nead
+at least 234M free!
+
+When doing the connect test Solid server or the perl api will hang when
+freeing connections. Kill this program and restart it to continue with the
+test. You don\'t have to use --restart for this case.
+EOF
+ if (!$opt_restart)
+ {
+ print "\nWhen DBI/Solid dies you should run this program repeatedly\n";
+ print "with --restart until all tests have completed\n";
+ }
+ }
+ elsif (lc($opt_server) eq "pg")
+ {
+ print <<EOF;
+This test will crash postgreSQL when calculating the number of joinable tables!
+You should be sure that no one is doing anything important with postgreSQL
+and that you have privileges to restart it!
+EOF
+ }
+ else
+ {
+ print <<EOF;
+This test may crash $opt_server repeatedly while finding limits!
+You should be sure that no one is doing anything important with $opt_server
+and that you have privileges to restart it!
+EOF
+ }
+ print <<EOF;
+
+Some of the tests you are about to execute may require a lot of
+memory. Your tests WILL adversely affect system performance. It\'s
+not uncommon that either this crash-me test program, or the actual
+database back-end, will DIE with an out-of-memory error. So might
+any other program on your system if it requests more memory at the
+wrong time.
+
+Note also that while crash-me tries to find limits for the database server
+it will make a lot of queries that can\'t be categorized as \'normal\'. It\'s
+not unlikely that crash-me finds some limit bug in your server so if you
+run this test you have to be prepared that your server may die during it!
+
+We, the creators of this utility, are not responsible in any way if your
+database server unexpectedly crashes while this program tries to find the
+limitations of your server. By accepting the following question with \'yes\',
+you agree to the above!
+
+You have been warned!
+
+EOF
+
+ #
+ # No default reply here so no one can blame us for starting the test
+ # automaticly.
+ #
+ for (;;)
+ {
+ print "Start test (yes/no) ? ";
+ $tmp=<STDIN>; chomp($tmp); $tmp=lc($tmp);
+ last if ($tmp =~ /^yes$/i);
+ exit 1 if ($tmp =~ /^n/i);
+ print "\n";
+ }
+}
+
+sub machine
+{
+ my @name = POSIX::uname();
+ my $name= $name[0] . " " . $name[2] . " " . $name[4];
+ return $name;
+}
+
+
+#
+# Help functions that we need
+#
+
+sub safe_connect
+{
+ my ($object)=@_;
+ my ($dbh,$tmp);
+
+ for (;;)
+ {
+ if (($dbh=DBI->connect($server->{'data_source'},$opt_user,$opt_password,
+ { PrintError => 0, AutoCommit => 1})))
+ {
+ $dbh->{LongReadLen}= 16000000; # Set max retrieval buffer
+ return $dbh;
+ }
+ print "Error: $DBI::errstr; $server->{'data_source'} ".
+ " - '$opt_user' - '$opt_password'\n";
+ print "I got the above error when connecting to $opt_server\n";
+ if (defined($object) && defined($object->{'limit'}))
+ {
+ print "This check was done with limit: $object->{'limit'}.".
+ "\nNext check will be done with a smaller limit!\n";
+ $object=undef();
+ }
+ save_config_data('crash_me_safe','no',"crash me safe");
+ if ($opt_db_start_cmd)
+ {
+ print "Restarting the db server with:\n'$opt_db_start_cmd'\n";
+ system("$opt_db_start_cmd");
+ print "Waiting $opt_sleep seconds so the server can initialize\n";
+ sleep $opt_sleep;
+ }
+ else
+ {
+ exit(1) if ($opt_batch_mode);
+ print "Can you check/restart it so I can continue testing?\n";
+ for (;;)
+ {
+ print "Continue test (yes/no) ? [yes] ";
+ $tmp=<STDIN>; chomp($tmp); $tmp=lc($tmp);
+ $tmp = "yes" if ($tmp eq "");
+ last if (index("yes",$tmp) >= 0);
+ exit 1 if (index("no",$tmp) >= 0);
+ print "\n";
+ }
+ }
+ }
+}
+
+#
+# Test connecting a couple of times before giving an error
+# This is needed to get the server time to free old connections
+# after the connect test
+#
+
+sub retry_connect
+{
+ my ($dbh, $i);
+ for ($i=0 ; $i < 10 ; $i++)
+ {
+ if (($dbh=DBI->connect($server->{'data_source'},$opt_user,$opt_password,
+ { PrintError => 0, AutoCommit => 1})))
+ {
+ $dbh->{LongReadLen}= 16000000; # Set max retrieval buffer
+ return $dbh;
+ }
+ sleep(1);
+ }
+ return safe_connect();
+}
+
+#
+# Check if the server is up and running. If not, ask the user to restart it
+#
+
+sub check_connect
+{
+ my ($object)=@_;
+ my ($sth);
+ print "Checking connection\n" if ($opt_log_all_queries);
+ # The following line will not work properly with interbase
+ if ($opt_check_server && defined($check_connect) && $dbh->{AutoCommit} != 0)
+ {
+
+ $dbh->disconnect;
+ $dbh=safe_connect($object);
+ return;
+ }
+ return if (defined($check_connect) && defined($dbh->do($check_connect)));
+ $dbh->disconnect || warn $dbh->errstr;
+ print "\nreconnecting\n" if ($opt_debug);
+ $reconnect_count++;
+ undef($dbh);
+ $dbh=safe_connect($object);
+}
+
+#
+# print query if debugging
+#
+sub repr_query {
+ my $query=shift;
+ if (length($query) > 130)
+ {
+ $query=substr($query,0,120) . "...(" . (length($query)-120) . ")";
+ }
+ return $query;
+}
+
+sub print_query
+{
+ my ($query)=@_;
+ $last_error=$DBI::errstr;
+ if ($opt_debug)
+ {
+ if (length($query) > 130)
+ {
+ $query=substr($query,0,120) . "...(" . (length($query)-120) . ")";
+ }
+ printf "\nGot error from query: '%s'\n%s\n",$query,$DBI::errstr;
+ }
+}
+
+#
+# Do one or many queries. Return 1 if all was ok
+# Note that all rows are executed
+# (to ensure that we execute drop table commands)
+#
+
+sub safe_query_l {
+ my $key = shift;
+ my $q = shift;
+ my $r = safe_query($q);
+ add_log($key,$safe_query_log);
+ return $r;
+}
+
+sub safe_query
+{
+ my($queries)=@_;
+ my($query,$ok,$retry_ok,$retry,@tmp,$sth);
+ $safe_query_log="";
+ $ok=1;
+ if (ref($queries) ne "ARRAY")
+ {
+ push(@tmp,$queries);
+ $queries= \@tmp;
+ }
+ foreach $query (@$queries)
+ {
+ printf "query1: %-80.80s ...(%d - %d)\n",$query,
+ length($query),$retry_limit if ($opt_log_all_queries);
+ print LOG "$query;\n" if ($opt_log);
+ $safe_query_log .= "< $query\n";
+ if (length($query) > $query_size)
+ {
+ $ok=0;
+ $safe_query_log .= "Query is too long\n";
+ next;
+ }
+
+ $retry_ok=0;
+ for ($retry=0; $retry < $retry_limit ; $retry++)
+ {
+ if (! ($sth=$dbh->prepare($query)))
+ {
+ print_query($query);
+ $safe_query_log .= "> couldn't prepare:". $dbh->errstr. "\n";
+ $retry=100 if (!$server->abort_if_fatal_error());
+ # Force a reconnect because of Access drop table bug!
+ if ($retry == $retry_limit-2)
+ {
+ print "Forcing disconnect to retry query\n" if ($opt_debug);
+ $dbh->disconnect || warn $dbh->errstr;
+ }
+ check_connect(); # Check that server is still up
+ }
+ else
+ {
+ if (!$sth->execute())
+ {
+ print_query($query);
+ $safe_query_log .= "> execute error:". $dbh->errstr. "\n";
+ $retry=100 if (!$server->abort_if_fatal_error());
+ # Force a reconnect because of Access drop table bug!
+ if ($retry == $retry_limit-2)
+ {
+ print "Forcing disconnect to retry query\n" if ($opt_debug);
+ $dbh->disconnect || warn $dbh->errstr;
+ }
+ check_connect(); # Check that server is still up
+ }
+ else
+ {
+ $retry = $retry_limit;
+ $retry_ok = 1;
+ $safe_query_log .= "> OK\n";
+ }
+ $sth->finish;
+ }
+ }
+ $ok=0 if (!$retry_ok);
+ if ($query =~ /create/i && $server->reconnect_on_errors())
+ {
+ print "Forcing disconnect to retry query\n" if ($opt_debug);
+ $dbh->disconnect || warn $dbh->errstr;
+ $dbh=safe_connect();
+ }
+ }
+ return $ok;
+}
+
+sub check_reserved_words
+{
+ my ($dbh)= @_;
+
+ my $answer, $prompt, $config, $keyword_type;
+
+ my @keywords_ext = ( "ansi-92/99", "ansi92", "ansi99", "extra");
+
+ my %reserved_words = (
+ 'ABSOLUTE' => 0, 'ACTION' => 0, 'ADD' => 0,
+ 'AFTER' => 0, 'ALIAS' => 0, 'ALL' => 0,
+ 'ALLOCATE' => 0, 'ALTER' => 0, 'AND' => 0,
+ 'ANY' => 0, 'ARE' => 0, 'AS' => 0,
+ 'ASC' => 0, 'ASSERTION' => 0, 'AT' => 0,
+ 'AUTHORIZATION' => 0, 'BEFORE' => 0, 'BEGIN' => 0,
+ 'BIT' => 0, 'BOOLEAN' => 0, 'BOTH' => 0,
+ 'BREADTH' => 0, 'BY' => 0, 'CALL' => 0,
+ 'CASCADE' => 0, 'CASCADED' => 0, 'CASE' => 0,
+ 'CAST' => 0, 'CATALOG' => 0, 'CHAR' => 0,
+ 'CHARACTER' => 0, 'CHECK' => 0, 'CLOSE' => 0,
+ 'COLLATE' => 0, 'COLLATION' => 0, 'COLUMN' => 0,
+ 'COMMIT' => 0, 'COMPLETION' => 0, 'CONNECT' => 0,
+ 'CONNECTION' => 0, 'CONSTRAINT' => 0, 'CONSTRAINTS' => 0,
+ 'CONTINUE' => 0, 'CORRESPONDING' => 0, 'CREATE' => 0,
+ 'CROSS' => 0, 'CURRENT' => 0, 'CURRENT_DATE' => 0,
+ 'CURRENT_TIME' => 0,'CURRENT_TIMESTAMP' => 0, 'CURRENT_USER' => 0,
+ 'CURSOR' => 0, 'CYCLE' => 0, 'DATA' => 0,
+ 'DATE' => 0, 'DAY' => 0, 'DEALLOCATE' => 0,
+ 'DEC' => 0, 'DECIMAL' => 0, 'DECLARE' => 0,
+ 'DEFAULT' => 0, 'DEFERRABLE' => 0, 'DEFERRED' => 0,
+ 'DELETE' => 0, 'DEPTH' => 0, 'DESC' => 0,
+ 'DESCRIBE' => 0, 'DESCRIPTOR' => 0, 'DIAGNOSTICS' => 0,
+ 'DICTIONARY' => 0, 'DISCONNECT' => 0, 'DISTINCT' => 0,
+ 'DOMAIN' => 0, 'DOUBLE' => 0, 'DROP' => 0,
+ 'EACH' => 0, 'ELSE' => 0, 'ELSEIF' => 0,
+ 'END' => 0, 'END-EXEC' => 0, 'EQUALS' => 0,
+ 'ESCAPE' => 0, 'EXCEPT' => 0, 'EXCEPTION' => 0,
+ 'EXEC' => 0, 'EXECUTE' => 0, 'EXTERNAL' => 0,
+ 'FALSE' => 0, 'FETCH' => 0, 'FIRST' => 0,
+ 'FLOAT' => 0, 'FOR' => 0, 'FOREIGN' => 0,
+ 'FOUND' => 0, 'FROM' => 0, 'FULL' => 0,
+ 'GENERAL' => 0, 'GET' => 0, 'GLOBAL' => 0,
+ 'GO' => 0, 'GOTO' => 0, 'GRANT' => 0,
+ 'GROUP' => 0, 'HAVING' => 0, 'HOUR' => 0,
+ 'IDENTITY' => 0, 'IF' => 0, 'IGNORE' => 0,
+ 'IMMEDIATE' => 0, 'IN' => 0, 'INDICATOR' => 0,
+ 'INITIALLY' => 0, 'INNER' => 0, 'INPUT' => 0,
+ 'INSERT' => 0, 'INT' => 0, 'INTEGER' => 0,
+ 'INTERSECT' => 0, 'INTERVAL' => 0, 'INTO' => 0,
+ 'IS' => 0, 'ISOLATION' => 0, 'JOIN' => 0,
+ 'KEY' => 0, 'LANGUAGE' => 0, 'LAST' => 0,
+ 'LEADING' => 0, 'LEAVE' => 0, 'LEFT' => 0,
+ 'LESS' => 0, 'LEVEL' => 0, 'LIKE' => 0,
+ 'LIMIT' => 0, 'LOCAL' => 0, 'LOOP' => 0,
+ 'MATCH' => 0, 'MINUTE' => 0, 'MODIFY' => 0,
+ 'MODULE' => 0, 'MONTH' => 0, 'NAMES' => 0,
+ 'NATIONAL' => 0, 'NATURAL' => 0, 'NCHAR' => 0,
+ 'NEW' => 0, 'NEXT' => 0, 'NO' => 0,
+ 'NONE' => 0, 'NOT' => 0, 'NULL' => 0,
+ 'NUMERIC' => 0, 'OBJECT' => 0, 'OF' => 0,
+ 'OFF' => 0, 'OLD' => 0, 'ON' => 0,
+ 'ONLY' => 0, 'OPEN' => 0, 'OPERATION' => 0,
+ 'OPTION' => 0, 'OR' => 0, 'ORDER' => 0,
+ 'OUTER' => 0, 'OUTPUT' => 0, 'PAD' => 0,
+ 'PARAMETERS' => 0, 'PARTIAL' => 0, 'PRECISION' => 0,
+ 'PREORDER' => 0, 'PREPARE' => 0, 'PRESERVE' => 0,
+ 'PRIMARY' => 0, 'PRIOR' => 0, 'PRIVILEGES' => 0,
+ 'PROCEDURE' => 0, 'PUBLIC' => 0, 'READ' => 0,
+ 'REAL' => 0, 'RECURSIVE' => 0, 'REF' => 0,
+ 'REFERENCES' => 0, 'REFERENCING' => 0, 'RELATIVE' => 0,
+ 'RESIGNAL' => 0, 'RESTRICT' => 0, 'RETURN' => 0,
+ 'RETURNS' => 0, 'REVOKE' => 0, 'RIGHT' => 0,
+ 'ROLE' => 0, 'ROLLBACK' => 0, 'ROUTINE' => 0,
+ 'ROW' => 0, 'ROWS' => 0, 'SAVEPOINT' => 0,
+ 'SCHEMA' => 0, 'SCROLL' => 0, 'SEARCH' => 0,
+ 'SECOND' => 0, 'SECTION' => 0, 'SELECT' => 0,
+ 'SEQUENCE' => 0, 'SESSION' => 0, 'SESSION_USER' => 0,
+ 'SET' => 0, 'SIGNAL' => 0, 'SIZE' => 0,
+ 'SMALLINT' => 0, 'SOME' => 0, 'SPACE' => 0,
+ 'SQL' => 0, 'SQLEXCEPTION' => 0, 'SQLSTATE' => 0,
+ 'SQLWARNING' => 0, 'STRUCTURE' => 0, 'SYSTEM_USER' => 0,
+ 'TABLE' => 0, 'TEMPORARY' => 0, 'THEN' => 0,
+ 'TIME' => 0, 'TIMESTAMP' => 0, 'TIMEZONE_HOUR' => 0,
+ 'TIMEZONE_MINUTE' => 0, 'TO' => 0, 'TRAILING' => 0,
+ 'TRANSACTION' => 0, 'TRANSLATION' => 0, 'TRIGGER' => 0,
+ 'TRUE' => 0, 'UNDER' => 0, 'UNION' => 0,
+ 'UNIQUE' => 0, 'UNKNOWN' => 0, 'UPDATE' => 0,
+ 'USAGE' => 0, 'USER' => 0, 'USING' => 0,
+ 'VALUE' => 0, 'VALUES' => 0, 'VARCHAR' => 0,
+ 'VARIABLE' => 0, 'VARYING' => 0, 'VIEW' => 0,
+ 'WHEN' => 0, 'WHENEVER' => 0, 'WHERE' => 0,
+ 'WHILE' => 0, 'WITH' => 0, 'WITHOUT' => 0,
+ 'WORK' => 0, 'WRITE' => 0, 'YEAR' => 0,
+ 'ZONE' => 0,
+
+ 'ASYNC' => 1, 'AVG' => 1, 'BETWEEN' => 1,
+ 'BIT_LENGTH' => 1,'CHARACTER_LENGTH' => 1, 'CHAR_LENGTH' => 1,
+ 'COALESCE' => 1, 'CONVERT' => 1, 'COUNT' => 1,
+ 'EXISTS' => 1, 'EXTRACT' => 1, 'INSENSITIVE' => 1,
+ 'LOWER' => 1, 'MAX' => 1, 'MIN' => 1,
+ 'NULLIF' => 1, 'OCTET_LENGTH' => 1, 'OID' => 1,
+ 'OPERATORS' => 1, 'OTHERS' => 1, 'OVERLAPS' => 1,
+ 'PENDANT' => 1, 'POSITION' => 1, 'PRIVATE' => 1,
+ 'PROTECTED' => 1, 'REPLACE' => 1, 'SENSITIVE' => 1,
+ 'SIMILAR' => 1, 'SQLCODE' => 1, 'SQLERROR' => 1,
+ 'SUBSTRING' => 1, 'SUM' => 1, 'TEST' => 1,
+ 'THERE' => 1, 'TRANSLATE' => 1, 'TRIM' => 1,
+ 'TYPE' => 1, 'UPPER' => 1, 'VIRTUAL' => 1,
+ 'VISIBLE' => 1, 'WAIT' => 1,
+
+ 'ADMIN' => 2, 'AGGREGATE' => 2, 'ARRAY' => 2,
+ 'BINARY' => 2, 'BLOB' => 2, 'CLASS' => 2,
+ 'CLOB' => 2, 'CONDITION' => 2, 'CONSTRUCTOR' => 2,
+ 'CONTAINS' => 2, 'CUBE' => 2, 'CURRENT_PATH' => 2,
+ 'CURRENT_ROLE' => 2, 'DATALINK' => 2, 'DEREF' => 2,
+ 'DESTROY' => 2, 'DESTRUCTOR' => 2, 'DETERMINISTIC' => 2,
+ 'DO' => 2, 'DYNAMIC' => 2, 'EVERY' => 2,
+ 'EXIT' => 2, 'EXPAND' => 2, 'EXPANDING' => 2,
+ 'FREE' => 2, 'FUNCTION' => 2, 'GROUPING' => 2,
+ 'HANDLER' => 2, 'HAST' => 2, 'HOST' => 2,
+ 'INITIALIZE' => 2, 'INOUT' => 2, 'ITERATE' => 2,
+ 'LARGE' => 2, 'LATERAL' => 2, 'LOCALTIME' => 2,
+ 'LOCALTIMESTAMP' => 2, 'LOCATOR' => 2, 'MEETS' => 2,
+ 'MODIFIES' => 2, 'NCLOB' => 2, 'NORMALIZE' => 2,
+ 'ORDINALITY' => 2, 'OUT' => 2, 'PARAMETER' => 2,
+ 'PATH' => 2, 'PERIOD' => 2, 'POSTFIX' => 2,
+ 'PRECEDES' => 2, 'PREFIX' => 2, 'READS' => 2,
+ 'REDO' => 2, 'REPEAT' => 2, 'RESULT' => 2,
+ 'ROLLUP' => 2, 'SETS' => 2, 'SPECIFIC' => 2,
+ 'SPECIFICTYPE' => 2, 'START' => 2, 'STATE' => 2,
+ 'STATIC' => 2, 'SUCCEEDS' => 2, 'TERMINATE' => 2,
+ 'THAN' => 2, 'TREAT' => 2, 'UNDO' => 2,
+ 'UNTIL' => 2,
+
+ 'ACCESS' => 3, 'ANALYZE' => 3, 'AUDIT' => 3,
+ 'AUTO_INCREMENT' => 3, 'BACKUP' => 3, 'BDB' => 3,
+ 'BERKELEYDB' => 3, 'BIGINT' => 3, 'BREAK' => 3,
+ 'BROWSE' => 3, 'BTREE' => 3, 'BULK' => 3,
+ 'CHANGE' => 3, 'CHECKPOINT' => 3, 'CLUSTER' => 3,
+ 'CLUSTERED' => 3, 'COLUMNS' => 3, 'COMMENT' => 3,
+ 'COMPRESS' => 3, 'COMPUTE' => 3, 'CONTAINSTABLE' => 3,
+ 'DATABASE' => 3, 'DATABASES' => 3, 'DAY_HOUR' => 3,
+ 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, 'DBCC' => 3,
+ 'DELAYED' => 3, 'DENY' => 3, 'DISK' => 3,
+ 'DISTINCTROW' => 3, 'DISTRIBUTED' => 3, 'DUMMY' => 3,
+ 'DUMP' => 3, 'ENCLOSED' => 3, 'ERRLVL' => 3,
+ 'ERRORS' => 3, 'ESCAPED' => 3, 'EXCLUSIVE' => 3,
+ 'EXPLAIN' => 3, 'FIELDS' => 3, 'FILE' => 3,
+ 'FILLFACTOR' => 3, 'FREETEXT' => 3, 'FREETEXTTABLE' => 3,
+ 'FULLTEXT' => 3, 'GEOMETRY' => 3, 'HASH' => 3,
+ 'HIGH_PRIORITY' => 3, 'HOLDLOCK' => 3, 'HOUR_MINUTE' => 3,
+ 'HOUR_SECOND' => 3, 'IDENTIFIED' => 3, 'IDENTITYCOL' => 3,
+ 'IDENTITY_INSERT' => 3, 'INCREMENT' => 3, 'INDEX' => 3,
+ 'INFILE' => 3, 'INITIAL' => 3, 'INNODB' => 3,
+ 'KEYS' => 3, 'KILL' => 3, 'LINENO' => 3,
+ 'LINES' => 3, 'LOAD' => 3, 'LOCK' => 3,
+ 'LONG' => 3, 'LONGBLOB' => 3, 'LONGTEXT' => 3,
+ 'LOW_PRIORITY' => 3, 'MASTER_SERVER_ID' => 3, 'MAXEXTENTS' => 3,
+ 'MEDIUMBLOB' => 3, 'MEDIUMINT' => 3, 'MEDIUMTEXT' => 3,
+ 'MIDDLEINT' => 3, 'MINUS' => 3, 'MINUTE_SECOND' => 3,
+ 'MLSLABEL' => 3, 'MODE' => 3, 'MRG_MYISAM' => 3,
+ 'NOAUDIT' => 3, 'NOCHECK' => 3, 'NOCOMPRESS' => 3,
+ 'NONCLUSTERED' => 3, 'NOWAIT' => 3, 'NUMBER' => 3,
+ 'OFFLINE' => 3, 'OFFSETS' => 3, 'ONLINE' => 3,
+ 'OPENDATASOURCE' => 3, 'OPENQUERY' => 3, 'OPENROWSET' => 3,
+ 'OPENXML' => 3, 'OPTIMIZE' => 3, 'OPTIONALLY' => 3,
+ 'OUTFILE' => 3, 'OVER' => 3, 'PCTFREE' => 3,
+ 'PERCENT' => 3, 'PLAN' => 3, 'PRINT' => 3,
+ 'PROC' => 3, 'PURGE' => 3, 'RAISERROR' => 3,
+ 'RAW' => 3, 'READTEXT' => 3, 'RECONFIGURE' => 3,
+ 'REGEXP' => 3, 'RENAME' => 3, 'REPLICATION' => 3,
+ 'REQUIRE' => 3, 'RESOURCE' => 3, 'RESTORE' => 3,
+ 'RLIKE' => 3, 'ROWCOUNT' => 3, 'ROWGUIDCOL' => 3,
+ 'ROWID' => 3, 'ROWNUM' => 3, 'RTREE' => 3,
+ 'RULE' => 3, 'SAVE' => 3, 'SETUSER' => 3,
+ 'SHARE' => 3, 'SHOW' => 3, 'SHUTDOWN' => 3,
+ 'SONAME' => 3, 'SPATIAL' => 3, 'SQL_BIG_RESULT' => 3,
+'SQL_CALC_FOUND_ROWS' => 3,'SQL_SMALL_RESULT' => 3, 'SSL' => 3,
+ 'STARTING' => 3, 'STATISTICS' => 3, 'STRAIGHT_JOIN' => 3,
+ 'STRIPED' => 3, 'SUCCESSFUL' => 3, 'SYNONYM' => 3,
+ 'SYSDATE' => 3, 'TABLES' => 3, 'TERMINATED' => 3,
+ 'TEXTSIZE' => 3, 'TINYBLOB' => 3, 'TINYINT' => 3,
+ 'TINYTEXT' => 3, 'TOP' => 3, 'TRAN' => 3,
+ 'TRUNCATE' => 3, 'TSEQUAL' => 3, 'TYPES' => 3,
+ 'UID' => 3, 'UNLOCK' => 3, 'UNSIGNED' => 3,
+ 'UPDATETEXT' => 3, 'USE' => 3, 'USER_RESOURCES' => 3,
+ 'VALIDATE' => 3, 'VARBINARY' => 3, 'VARCHAR2' => 3,
+ 'WAITFOR' => 3, 'WARNINGS' => 3, 'WRITETEXT' => 3,
+ 'XOR' => 3, 'YEAR_MONTH' => 3, 'ZEROFILL' => 3
+);
+
+
+ safe_query("drop table crash_me10 $drop_attr");
+
+ foreach my $keyword (sort {$a cmp $b} keys %reserved_words)
+ {
+ $keyword_type= $reserved_words{$keyword};
+
+ $prompt= "Keyword ".$keyword;
+ $config= "reserved_word_".$keywords_ext[$keyword_type]."_".lc($keyword);
+
+ report_fail($prompt,$config,
+ "create table crash_me10 ($keyword int not null)",
+ "drop table crash_me10 $drop_attr"
+ );
+ }
+}
+
+#
+# Do a query on a query package object.
+#
+
+sub limit_query
+{
+ my($object,$limit)=@_;
+ my ($query,$result,$retry,$sth);
+
+ $query=$object->query($limit);
+ $result=safe_query($query);
+ if (!$result)
+ {
+ $object->cleanup();
+ return 0;
+ }
+ if (defined($query=$object->check_query()))
+ {
+ for ($retry=0 ; $retry < $retry_limit ; $retry++)
+ {
+ printf "query2: %-80.80s\n",$query if ($opt_log_all_queries);
+ print LOG "$query;\n" if ($opt_log);
+ if (($sth= $dbh->prepare($query)))
+ {
+ if ($sth->execute)
+ {
+ $result= $object->check($sth);
+ $sth->finish;
+ $object->cleanup();
+ return $result;
+ }
+ print_query($query);
+ $sth->finish;
+ }
+ else
+ {
+ print_query($query);
+ }
+ $retry=100 if (!$server->abort_if_fatal_error()); # No need to continue
+ if ($retry == $retry_limit-2)
+ {
+ print "Forcing discoennect to retry query\n" if ($opt_debug);
+ $dbh->disconnect || warn $dbh->errstr;
+ }
+ check_connect($object); # Check that server is still up
+ }
+ $result=0; # Query failed
+ }
+ $object->cleanup();
+ return $result; # Server couldn't handle the query
+}
+
+
+sub report
+{
+ my ($prompt,$limit,@queries)=@_;
+ print "$prompt: ";
+ if (!defined($limits{$limit}))
+ {
+ my $queries_result = safe_query(\@queries);
+ add_log($limit, $safe_query_log);
+ my $report_result;
+ if ( $queries_result) {
+ $report_result= "yes";
+ add_log($limit,"As far as all queries returned OK, result is YES");
+ } else {
+ $report_result= "no";
+ add_log($limit,"As far as some queries didnt return OK, result is NO");
+ }
+ save_config_data($limit,$report_result,$prompt);
+ }
+ print "$limits{$limit}\n";
+ return $limits{$limit} ne "no";
+}
+
+sub report_fail
+{
+ my ($prompt,$limit,@queries)=@_;
+ print "$prompt: ";
+ if (!defined($limits{$limit}))
+ {
+ my $queries_result = safe_query(\@queries);
+ add_log($limit, $safe_query_log);
+ my $report_result;
+ if ( $queries_result) {
+ $report_result= "no";
+ add_log($limit,"As far as all queries returned OK, result is NO");
+ } else {
+ $report_result= "yes";
+ add_log($limit,"As far as some queries didnt return OK, result is YES");
+ }
+ save_config_data($limit,$report_result,$prompt);
+ }
+ print "$limits{$limit}\n";
+ return $limits{$limit} ne "no";
+}
+
+
+# Return true if one of the queries is ok
+
+sub report_one
+{
+ my ($prompt,$limit,$queries)=@_;
+ my ($query,$res,$result);
+ print "$prompt: ";
+ if (!defined($limits{$limit}))
+ {
+ save_incomplete($limit,$prompt);
+ $result="no";
+ foreach $query (@$queries)
+ {
+ if (safe_query_l($limit,$query->[0]))
+ {
+ $result= $query->[1];
+ last;
+ }
+ }
+ save_config_data($limit,$result,$prompt);
+ }
+ print "$limits{$limit}\n";
+ return $limits{$limit} ne "no";
+}
+
+
+# Execute query and save result as limit value.
+
+sub report_result
+{
+ my ($prompt,$limit,$query)=@_;
+ my($error);
+ print "$prompt: ";
+ if (!defined($limits{$limit}))
+ {
+ save_incomplete($limit,$prompt);
+ $error=safe_query_result($query,"1",2);
+ add_log($limit,$safe_query_result_log);
+ save_config_data($limit,$error ? "not supported" :$last_result,$prompt);
+ }
+ print "$limits{$limit}\n";
+ return $limits{$limit} ne "not supported";
+}
+
+sub report_trans
+{
+ my ($limit,$queries,$check,$clear)=@_;
+ if (!defined($limits{$limit}))
+ {
+ save_incomplete($limit,$prompt);
+ eval {undef($dbh->{AutoCommit})};
+ if (!$@)
+ {
+ if (safe_query(\@$queries))
+ {
+ $dbh->rollback;
+ $dbh->{AutoCommit} = 1;
+ if (safe_query_result($check,"","")) {
+ add_log($limit,$safe_query_result_log);
+ save_config_data($limit,"yes",$limit);
+ }
+ safe_query($clear);
+ } else {
+ add_log($limit,$safe_query_log);
+ save_config_data($limit,"error",$limit);
+ }
+ $dbh->{AutoCommit} = 1;
+ }
+ else
+ {
+ add_log($limit,"Couldnt undef autocommit ?? ");
+ save_config_data($limit,"no",$limit);
+ }
+ safe_query($clear);
+ }
+ return $limits{$limit} ne "yes";
+}
+
+sub report_rollback
+{
+ my ($limit,$queries,$check,$clear)=@_;
+ if (!defined($limits{$limit}))
+ {
+ save_incomplete($limit,$prompt);
+ eval {undef($dbh->{AutoCommit})};
+ if (!$@)
+ {
+ if (safe_query(\@$queries))
+ {
+ add_log($limit,$safe_query_log);
+
+ $dbh->rollback;
+ $dbh->{AutoCommit} = 1;
+ if (safe_query($check)) {
+ add_log($limit,$safe_query_log);
+ save_config_data($limit,"no",$limit);
+ } else {
+ add_log($limit,$safe_query_log);
+ save_config_data($limit,"yes",$limit);
+ };
+ safe_query($clear);
+ } else {
+ add_log($limit,$safe_query_log);
+ save_config_data($limit,"error",$limit);
+ }
+ }
+ else
+ {
+ add_log($limit,'Couldnt undef Autocommit??');
+ save_config_data($limit,"error",$limit);
+ }
+ safe_query($clear);
+ }
+ $dbh->{AutoCommit} = 1;
+ return $limits{$limit} ne "yes";
+}
+
+
+sub check_and_report
+{
+ my ($prompt,$limit,$pre,$query,$post,$answer,$string_type,$skip_prompt,
+ $function)=@_;
+ my ($tmp);
+ $function=0 if (!defined($function));
+
+ print "$prompt: " if (!defined($skip_prompt));
+ if (!defined($limits{$limit}))
+ {
+ save_incomplete($limit,$prompt);
+ $tmp=1-safe_query(\@$pre);
+ add_log($limit,$safe_query_log);
+ if (!$tmp)
+ {
+ $tmp=safe_query_result($query,$answer,$string_type) ;
+ add_log($limit,$safe_query_result_log);
+ };
+ safe_query(\@$post);
+ add_log($limit,$safe_query_log);
+ delete $limits{$limit};
+ if ($function == 3) # Report error as 'no'.
+ {
+ $function=0;
+ $tmp= -$tmp;
+ }
+ if ($function == 0 ||
+ $tmp != 0 && $function == 1 ||
+ $tmp == 0 && $function== 2)
+ {
+ save_config_data($limit, $tmp == 0 ? "yes" : $tmp == 1 ? "no" : "error",
+ $prompt);
+ print "$limits{$limit}\n";
+ return $function == 0 ? $limits{$limit} eq "yes" : 0;
+ }
+ return 1; # more things to check
+ }
+ print "$limits{$limit}\n";
+ return 0 if ($function);
+ return $limits{$limit} eq "yes";
+}
+
+
+sub try_and_report
+{
+ my ($prompt,$limit,@tests)=@_;
+ my ($tmp,$test,$type);
+
+ print "$prompt: ";
+
+ if (!defined($limits{$limit}))
+ {
+ save_incomplete($limit,$prompt);
+ $type="no"; # Not supported
+ foreach $test (@tests)
+ {
+ my $tmp_type= shift(@$test);
+ if (safe_query_l($limit,\@$test))
+ {
+ $type=$tmp_type;
+ goto outer;
+ }
+ }
+ outer:
+ save_config_data($limit, $type, $prompt);
+ }
+ print "$limits{$limit}\n";
+ return $limits{$limit} ne "no";
+}
+
+#
+# Just execute the query and check values; Returns 1 if ok
+#
+
+sub execute_and_check
+{
+ my ($key,$pre,$query,$post,$answer,$string_type)=@_;
+ my ($tmp);
+
+ $tmp=safe_query_l($key,\@$pre);
+
+ $tmp=safe_query_result_l($key,$query,$answer,$string_type) == 0 if ($tmp);
+ safe_query_l($key,\@$post);
+ return $tmp;
+}
+
+
+# returns 0 if ok, 1 if error, -1 if wrong answer
+# Sets $last_result to value of query
+sub safe_query_result_l{
+ my ($key,$query,$answer,$result_type)=@_;
+ my $r = safe_query_result($query,$answer,$result_type);
+ add_log($key,$safe_query_result_log);
+ return $r;
+}
+
+sub safe_query_result
+{
+# result type can be
+# 8 (must be empty), 2 (Any value), 0 (number)
+# 1 (char, endspaces can differ), 3 (exact char), 4 (NULL)
+# 5 (char with prefix), 6 (exact, errors are ignored)
+# 7 (array of numbers)
+ my ($query,$answer,$result_type)=@_;
+ my ($sth,$row,$result,$retry);
+ undef($last_result);
+ $safe_query_result_log="";
+
+ printf "\nquery3: %-80.80s\n",$query if ($opt_log_all_queries);
+ print LOG "$query;\n" if ($opt_log);
+ $safe_query_result_log="<".$query."\n";
+
+ for ($retry=0; $retry < $retry_limit ; $retry++)
+ {
+ if (!($sth=$dbh->prepare($query)))
+ {
+ print_query($query);
+ $safe_query_result_log .= "> prepare failed:".$dbh->errstr."\n";
+
+ if ($server->abort_if_fatal_error())
+ {
+ check_connect(); # Check that server is still up
+ next; # Retry again
+ }
+ check_connect(); # Check that server is still up
+ return 1;
+ }
+ if (!$sth->execute)
+ {
+ print_query($query);
+ $safe_query_result_log .= "> execute failed:".$dbh->errstr."\n";
+ if ($server->abort_if_fatal_error())
+ {
+ check_connect(); # Check that server is still up
+ next; # Retry again
+ }
+ check_connect(); # Check that server is still up
+ return 1;
+ }
+ else
+ {
+ last;
+ }
+ }
+ if (!($row=$sth->fetchrow_arrayref))
+ {
+ print "\nquery: $query didn't return any result\n" if ($opt_debug);
+ $safe_query_result_log .= "> didn't return any result:".$dbh->errstr."\n";
+ $sth->finish;
+ return ($result_type == 8) ? 0 : 1;
+ }
+ if ($result_type == 8)
+ {
+ $sth->finish;
+ return 1;
+ }
+ $result=0; # Ok
+ $last_result= $row->[0]; # Save for report_result;
+ $safe_query_result_log .= ">".$last_result."\n";
+ # Note:
+ # if ($result_type == 2) We accept any return value as answer
+
+ if ($result_type == 0) # Compare numbers
+ {
+ $row->[0] =~ s/,/./; # Fix if ',' is used instead of '.'
+ if ($row->[0] != $answer && (abs($row->[0]- $answer)/
+ (abs($row->[0]) + abs($answer))) > 0.01)
+ {
+ $result=-1;
+ $safe_query_result_log .=
+ "We expected '$answer' but got '$last_result' \n";
+ }
+ }
+ elsif ($result_type == 1) # Compare where end space may differ
+ {
+ $row->[0] =~ s/\s+$//;
+ if ($row->[0] ne $answer)
+ {
+ $result=-1;
+ $safe_query_result_log .=
+ "We expected '$answer' but got '$last_result' \n";
+ } ;
+ }
+ elsif ($result_type == 3) # This should be a exact match
+ {
+ if ($row->[0] ne $answer)
+ {
+ $result= -1;
+ $safe_query_result_log .=
+ "We expected '$answer' but got '$last_result' \n";
+ };
+ }
+ elsif ($result_type == 4) # If results should be NULL
+ {
+ if (defined($row->[0]))
+ {
+ $result= -1;
+ $safe_query_result_log .=
+ "We expected NULL but got '$last_result' \n";
+ };
+ }
+ elsif ($result_type == 5) # Result should have given prefix
+ {
+ if (length($row->[0]) < length($answer) &&
+ substr($row->[0],1,length($answer)) ne $answer)
+ {
+ $result= -1 ;
+ $safe_query_result_log .=
+ "Result must have prefix '$answer', but '$last_result' \n";
+ };
+ }
+ elsif ($result_type == 6) # Exact match but ignore errors
+ {
+ if ($row->[0] ne $answer)
+ { $result= 1;
+ $safe_query_result_log .=
+ "We expected '$answer' but got '$last_result' \n";
+ } ;
+ }
+ elsif ($result_type == 7) # Compare against array of numbers
+ {
+ if ($row->[0] != $answer->[0])
+ {
+ $safe_query_result_log .= "must be '$answer->[0]' \n";
+ $result= -1;
+ }
+ else
+ {
+ my ($value);
+ shift @$answer;
+ while (($row=$sth->fetchrow_arrayref))
+ {
+ $safe_query_result_log .= ">$row\n";
+
+ $value=shift(@$answer);
+ if (!defined($value))
+ {
+ print "\nquery: $query returned to many results\n"
+ if ($opt_debug);
+ $safe_query_result_log .= "It returned to many results \n";
+ $result= 1;
+ last;
+ }
+ if ($row->[0] != $value)
+ {
+ $safe_query_result_log .= "Must return $value here \n";
+ $result= -1;
+ last;
+ }
+ }
+ if ($#$answer != -1)
+ {
+ print "\nquery: $query returned too few results\n"
+ if ($opt_debug);
+ $safe_query_result_log .= "It returned too few results \n";
+ $result= 1;
+ }
+ }
+ }
+ $sth->finish;
+ print "\nquery: '$query' returned '$row->[0]' instead of '$answer'\n"
+ if ($opt_debug && $result && $result_type != 7);
+ return $result;
+}
+
+#
+# Find limit using binary search. This is a weighed binary search that
+# will prefere lower limits to get the server to crash as
+# few times as possible
+
+
+sub find_limit()
+{
+ my ($prompt,$limit,$query)=@_;
+ my ($first,$end,$i,$tmp,@tmp_array, $queries);
+ print "$prompt: ";
+ if (defined($end=$limits{$limit}))
+ {
+ print "$end (cache)\n";
+ return $end;
+ }
+ save_incomplete($limit,$prompt);
+ add_log($limit,"We are trying (example with N=5):");
+ $queries = $query->query(5);
+ if (ref($queries) ne "ARRAY")
+ {
+ push(@tmp_array,$queries);
+ $queries= \@tmp_array;
+ }
+ foreach $tmp (@$queries)
+ { add_log($limit,repr_query($tmp)); }
+
+ if (defined($queries = $query->check_query()))
+ {
+ if (ref($queries) ne "ARRAY")
+ {
+ @tmp_array=();
+ push(@tmp_array,$queries);
+ $queries= \@tmp_array;
+ }
+ foreach $tmp (@$queries)
+ { add_log($limit,repr_query($tmp)); }
+ }
+ if (defined($query->{'init'}) && !defined($end=$limits{'restart'}{'tohigh'}))
+ {
+ if (!safe_query_l($limit,$query->{'init'}))
+ {
+ $query->cleanup();
+ return "error";
+ }
+ }
+
+ if (!limit_query($query,1)) # This must work
+ {
+ print "\nMaybe fatal error: Can't check '$prompt' for limit=1\n".
+ "error: $last_error\n";
+ return "error";
+ }
+
+ $first=0;
+ $first=$limits{'restart'}{'low'} if ($limits{'restart'}{'low'});
+
+ if (defined($end=$limits{'restart'}{'tohigh'}))
+ {
+ $end--;
+ print "\nRestarting this with low limit: $first and high limit: $end\n";
+ delete $limits{'restart'};
+ $i=$first+int(($end-$first+4)/5); # Prefere lower on errors
+ }
+ else
+ {
+ $end= $query->max_limit();
+ $i=int(($end+$first)/2);
+ }
+ my $log_str = "";
+ unless(limit_query($query,0+$end)) {
+ while ($first < $end)
+ {
+ print "." if ($opt_debug);
+ save_config_data("restart",$i,"") if ($opt_restart);
+ if (limit_query($query,$i))
+ {
+ $first=$i;
+ $log_str .= " $i:OK";
+ $i=$first+int(($end-$first+1)/2); # to be a bit faster to go up
+ }
+ else
+ {
+ $end=$i-1;
+ $log_str .= " $i:FAIL";
+ $i=$first+int(($end-$first+4)/5); # Prefere lower on errors
+ }
+ }
+ }
+ $end+=$query->{'offset'} if ($end && defined($query->{'offset'}));
+ if ($end >= $query->{'max_limit'} &&
+ substr($query->{'max_limit'},0,1) eq '+')
+ {
+ $end= $query->{'max_limit'};
+ }
+ print "$end\n";
+ add_log($limit,$log_str);
+ save_config_data($limit,$end,$prompt);
+ delete $limits{'restart'};
+ return $end;
+}
+
+#
+# Check that the query works!
+#
+
+sub assert
+{
+ my($query)=@_;
+
+ if (!safe_query($query))
+ {
+ $query=join("; ",@$query) if (ref($query) eq "ARRAY");
+ print "\nFatal error:\nquery: '$query'\nerror: $DBI::errstr\n";
+ exit 1;
+ }
+}
+
+
+sub read_config_data
+{
+ my ($key,$limit,$prompt);
+ if (-e $opt_config_file)
+ {
+ open(CONFIG_FILE,"+<$opt_config_file") ||
+ die "Can't open configure file $opt_config_file\n";
+ print "Reading old values from cache: $opt_config_file\n";
+ }
+ else
+ {
+ open(CONFIG_FILE,"+>>$opt_config_file") ||
+ die "Can't create configure file $opt_config_file: $!\n";
+ }
+ select CONFIG_FILE;
+ $|=1;
+ select STDOUT;
+ while (<CONFIG_FILE>)
+ {
+ chomp;
+ if (/^(\S+)=([^\#]*[^\#\s])\s*(\# .*)*$/)
+ {
+ $key=$1; $limit=$2 ; $prompt=$3;
+ if (!$opt_quick || $limit =~ /\d/ || $key =~ /crash_me/)
+ {
+ if ($key !~ /restart/i)
+ {
+ $limits{$key}=$limit eq "null"? undef : $limit;
+ $prompts{$key}=length($prompt) ? substr($prompt,2) : "";
+ $last_read=$key;
+ delete $limits{'restart'};
+ }
+ else
+ {
+ $limit_changed=1;
+ if ($limit > $limits{'restart'}{'tohigh'})
+ {
+ $limits{'restart'}{'low'} = $limits{'restart'}{'tohigh'};
+ }
+ $limits{'restart'}{'tohigh'} = $limit;
+ }
+ }
+ }
+ elsif (/\s*###(.*)$/) # log line
+ {
+ # add log line for previously read key
+ $log{$last_read} .= "$1\n";
+ }
+ elsif (!/^\s*$/ && !/^\#/)
+ {
+ die "Wrong config row: $_\n";
+ }
+ }
+}
+
+
+sub save_config_data
+{
+ my ($key,$limit,$prompt)=@_;
+ $prompts{$key}=$prompt;
+ return if (defined($limits{$key}) && $limits{$key} eq $limit);
+ if (!defined($limit) || $limit eq "")
+ {
+# die "Undefined limit for $key\n";
+ $limit = 'null';
+ }
+ print CONFIG_FILE "$key=$limit\t# $prompt\n";
+ $limits{$key}=$limit;
+ $limit_changed=1;
+# now write log lines (immediatelly after limits)
+ my $line;
+ my $last_line_was_empty=0;
+ foreach $line (split /\n/, $log{$key})
+ {
+ print CONFIG_FILE "$log_prefix$line\n"
+ unless ( ($last_line_was_empty eq 1)
+ && ($line =~ /^\s+$/) );
+ $last_line_was_empty= ($line =~ /^\s+$/)?1:0;
+ };
+
+ if (($opt_restart && $limits{'operating_system'} =~ /windows/i) ||
+ ($limits{'operating_system'} =~ /NT/))
+ {
+ # If perl crashes in windows, everything is lost (Wonder why? :)
+ close CONFIG_FILE;
+ open(CONFIG_FILE,"+>>$opt_config_file") ||
+ die "Can't reopen configure file $opt_config_file: $!\n";
+ }
+}
+
+sub add_log
+{
+ my $key = shift;
+ my $line = shift;
+ $log{$key} .= $line . "\n" if ($opt_verbose);
+}
+
+sub save_all_config_data
+{
+ my ($key,$tmp);
+ close CONFIG_FILE;
+ return if (!$limit_changed);
+ open(CONFIG_FILE,">$opt_config_file") ||
+ die "Can't create configure file $opt_config_file: $!\n";
+ select CONFIG_FILE;
+ $|=1;
+ select STDOUT;
+ delete $limits{'restart'};
+
+ print CONFIG_FILE
+ "#This file is automaticly generated by crash-me $version\n\n";
+ foreach $key (sort keys %limits)
+ {
+ $tmp="$key=$limits{$key}";
+ print CONFIG_FILE $tmp . ("\t" x (int((32-min(length($tmp),32)+7)/8)+1)) .
+ "# $prompts{$key}\n";
+ if ($opt_verbose)
+ {
+ my $line;
+ my $last_line_was_empty=0;
+ foreach $line (split /\n/, $log{$key})
+ {
+ print CONFIG_FILE "$log_prefix$line\n" unless
+ ( ($last_line_was_empty eq 1) && ($line =~ /^\s*$/));
+ $last_line_was_empty= ($line =~ /^\s*$/)?1:0;
+ }
+ }
+ }
+ close CONFIG_FILE;
+}
+
+#
+# Save 'incomplete' in the limits file to be able to continue if
+# crash-me dies because of a bug in perl/DBI
+
+sub save_incomplete
+{
+ my ($limit,$prompt)= @_;
+ save_config_data($limit,"incompleted",$prompt) if ($opt_restart);
+}
+
+
+sub check_repeat
+{
+ my ($sth,$limit)=@_;
+ my ($row);
+
+ return 0 if (!($row=$sth->fetchrow_arrayref));
+ return (defined($row->[0]) && ('a' x $limit) eq $row->[0]) ? 1 : 0;
+}
+
+
+sub min
+{
+ my($min)=$_[0];
+ my($i);
+ for ($i=1 ; $i <= $#_; $i++)
+ {
+ $min=$_[$i] if ($min > $_[$i]);
+ }
+ return $min;
+}
+
+sub sql_concat
+{
+ my ($a,$b)= @_;
+ return "$a || $b" if ($limits{'func_sql_concat_as_||'} eq 'yes');
+ return "concat($a,$b)" if ($limits{'func_odbc_concat'} eq 'yes');
+ return "$a + $b" if ($limits{'func_extra_concat_as_+'} eq 'yes');
+ return undef;
+}
+
+#
+# Returns a list of statements to create a table in a portable manner
+# but still utilizing features in the databases.
+#
+
+sub create_table
+{
+ my($table_name,$fields,$index,$extra) = @_;
+ my($query,$nr,$parts,@queries,@index);
+
+ $extra="" if (!defined($extra));
+
+ $query="create table $table_name (";
+ $nr=0;
+ foreach $field (@$fields)
+ {
+ $query.= $field . ',';
+ }
+ foreach $index (@$index)
+ {
+ $index =~ /\(([^\(]*)\)$/i;
+ $parts=$1;
+ if ($index =~ /^primary key/)
+ {
+ if ($limits{'primary_key_in_create'} eq 'yes')
+ {
+ $query.= $index . ',';
+ }
+ else
+ {
+ push(@queries,
+ "create unique index ${table_name}_prim on $table_name ($parts)");
+ }
+ }
+ elsif ($index =~ /^unique/)
+ {
+ if ($limits{'unique_in_create'} eq 'yes')
+ {
+ $query.= "unique ($parts),";
+ }
+ else
+ {
+ $nr++;
+ push(@queries,
+ "create unique index ${table_name}_$nr on $table_name ($parts)");
+
+ }
+ }
+ else
+ {
+ if ($limits{'index_in_create'} eq 'yes')
+ {
+ $query.= "index ($parts),";
+ }
+ else
+ {
+ $nr++;
+ push(@queries,
+ "create index ${table_name}_$nr on $table_name ($1)");
+ }
+ }
+ }
+ chop($query);
+ $query.= ") $extra";
+ unshift(@queries,$query);
+ return @queries;
+}
+
+
+#
+# This is used by some query packages to change:
+# %d -> limit
+# %s -> 'a' x limit
+# %v -> "1,1,1,1,1" where there are 'limit' number of ones
+# %f -> q1,q2,q3....
+# %F -> q1 integer,q2 integer,q3 integer....
+
+sub fix_query
+{
+ my ($query,$limit)=@_;
+ my ($repeat,$i);
+
+ return $query if !(defined($query));
+ $query =~ s/%d/$limit/g;
+ if ($query =~ /%s/)
+ {
+ $repeat= 'a' x $limit;
+ $query =~ s/%s/$repeat/g;
+ }
+ if ($query =~ /%v/)
+ {
+ $repeat= '1,' x $limit;
+ chop($repeat);
+ $query =~ s/%v/$repeat/g;
+ }
+ if ($query =~ /%f/)
+ {
+ $repeat="";
+ for ($i=1 ; $i <= $limit ; $i++)
+ {
+ $repeat.="q$i,";
+ }
+ chop($repeat);
+ $query =~ s/%f/$repeat/g;
+ }
+ if ($query =~ /%F/)
+ {
+ $repeat="";
+ for ($i=1 ; $i <= $limit ; $i++)
+ {
+ $repeat.="q$i integer,";
+ }
+ chop($repeat);
+ $query =~ s/%F/$repeat/g;
+ }
+ return $query;
+}
+
+
+#
+# Different query packages
+#
+
+package query_repeat;
+
+sub new
+{
+ my ($type,$init,$query,$add1,$add_mid,$add,$add_end,$end_query,$cleanup,
+ $max_limit, $check, $offset)=@_;
+ my $self={};
+ if (defined($init) && $#$init != -1)
+ {
+ $self->{'init'}=$init;
+ }
+ $self->{'query'}=$query;
+ $self->{'add1'}=$add1;
+ $self->{'add_mid'}=$add_mid;
+ $self->{'add'}=$add;
+ $self->{'add_end'}=$add_end;
+ $self->{'end_query'}=$end_query;
+ $self->{'cleanup'}=$cleanup;
+ $self->{'max_limit'}=(defined($max_limit) ? $max_limit : $main::query_size);
+ $self->{'check'}=$check;
+ $self->{'offset'}=$offset;
+ $self->{'printf'}= ($add =~ /%d/);
+ bless $self;
+}
+
+sub query
+{
+ my ($self,$limit)=@_;
+ if (!$self->{'printf'})
+ {
+ return $self->{'query'} . ($self->{'add'} x $limit) .
+ ($self->{'add_end'} x $limit) . $self->{'end_query'};
+ }
+ my ($tmp,$tmp2,$tmp3,$i);
+ $tmp=$self->{'query'};
+ if ($self->{'add1'})
+ {
+ for ($i=0; $i < $limit ; $i++)
+ {
+ $tmp3 = $self->{'add1'};
+ $tmp3 =~ s/%d/$i/g;
+ $tmp .= $tmp3;
+ }
+ }
+ $tmp .= " ".$self->{'add_mid'};
+ if ($self->{'add'})
+ {
+ for ($i=0; $i < $limit ; $i++)
+ {
+ $tmp2 = $self->{'add'};
+ $tmp2 =~ s/%d/$i/g;
+ $tmp .= $tmp2;
+ }
+ }
+ return ($tmp .
+ ($self->{'add_end'} x $limit) . $self->{'end_query'});
+}
+
+sub max_limit
+{
+ my ($self)=@_;
+ my $tmp;
+ $tmp=int(($main::limits{"query_size"}-length($self->{'query'})
+ -length($self->{'add_mid'})-length($self->{'end_query'}))/
+ (length($self->{'add1'})+
+ length($self->{'add'})+length($self->{'add_end'})));
+ return main::min($self->{'max_limit'},$tmp);
+}
+
+
+sub cleanup
+{
+ my ($self)=@_;
+ my($tmp,$statement);
+ $tmp=$self->{'cleanup'};
+ foreach $statement (@$tmp)
+ {
+ main::safe_query($statement) if (defined($statement) && length($statement));
+ }
+}
+
+sub check
+{
+ my ($self,$sth)=@_;
+ my $check=$self->{'check'};
+ return &$check($sth,$self->{'limit'}) if (defined($check));
+ return 1;
+}
+
+sub check_query
+{
+ return undef;
+}
+
+
+package query_num;
+
+sub new
+{
+ my ($type,$query,$end_query,$cleanup,$max_limit,$check)=@_;
+ my $self={};
+ $self->{'query'}=$query;
+ $self->{'end_query'}=$end_query;
+ $self->{'cleanup'}=$cleanup;
+ $self->{'max_limit'}=$max_limit;
+ $self->{'check'}=$check;
+ bless $self;
+}
+
+sub query
+{
+ my ($self,$i)=@_;
+ $self->{'limit'}=$i;
+ return "$self->{'query'}$i$self->{'end_query'}";
+}
+
+sub max_limit
+{
+ my ($self)=@_;
+ return $self->{'max_limit'};
+}
+
+sub cleanup
+{
+ my ($self)=@_;
+ my($statement);
+ foreach $statement ($self->{'$cleanup'})
+ {
+ main::safe_query($statement) if (defined($statement) && length($statement));
+ }
+}
+
+
+sub check
+{
+ my ($self,$sth)=@_;
+ my $check=$self->{'check'};
+ return &$check($sth,$self->{'limit'}) if (defined($check));
+ return 1;
+}
+
+sub check_query
+{
+ return undef;
+}
+
+#
+# This package is used when testing CREATE TABLE!
+#
+
+package query_table;
+
+sub new
+{
+ my ($type,$query, $add, $end_query, $extra_init, $safe_query, $check,
+ $cleanup, $max_limit, $offset)=@_;
+ my $self={};
+ $self->{'query'}=$query;
+ $self->{'add'}=$add;
+ $self->{'end_query'}=$end_query;
+ $self->{'extra_init'}=$extra_init;
+ $self->{'safe_query'}=$safe_query;
+ $self->{'check'}=$check;
+ $self->{'cleanup'}=$cleanup;
+ $self->{'max_limit'}=$max_limit;
+ $self->{'offset'}=$offset;
+ bless $self;
+}
+
+
+sub query
+{
+ my ($self,$limit)=@_;
+ $self->{'limit'}=$limit;
+ $self->cleanup(); # Drop table before create
+
+ my ($tmp,$tmp2,$i,$query,@res);
+ $tmp =$self->{'query'};
+ $tmp =~ s/%d/$limit/g;
+ for ($i=1; $i <= $limit ; $i++)
+ {
+ $tmp2 = $self->{'add'};
+ $tmp2 =~ s/%d/$i/g;
+ $tmp .= $tmp2;
+ }
+ push(@res,$tmp . $self->{'end_query'});
+ $tmp=$self->{'extra_init'};
+ foreach $query (@$tmp)
+ {
+ push(@res,main::fix_query($query,$limit));
+ }
+ return \@res;
+}
+
+
+sub max_limit
+{
+ my ($self)=@_;
+ return $self->{'max_limit'};
+}
+
+
+sub check_query
+{
+ my ($self)=@_;
+ return main::fix_query($self->{'safe_query'},$self->{'limit'});
+}
+
+sub check
+{
+ my ($self,$sth)=@_;
+ my $check=$self->{'check'};
+ return 0 if (!($row=$sth->fetchrow_arrayref));
+ if (defined($check))
+ {
+ return (defined($row->[0]) &&
+ $row->[0] eq main::fix_query($check,$self->{'limit'})) ? 1 : 0;
+ }
+ return 1;
+}
+
+
+# Remove table before and after create table query
+
+sub cleanup()
+{
+ my ($self)=@_;
+ main::safe_query(main::fix_query($self->{'cleanup'},$self->{'limit'}));
+}
+
+#
+# Package to do many queries with %d, and %s substitution
+#
+
+package query_many;
+
+sub new
+{
+ my ($type,$query,$safe_query,$check_result,$cleanup,$max_limit,$offset,
+ $safe_cleanup)=@_;
+ my $self={};
+ $self->{'query'}=$query;
+ $self->{'safe_query'}=$safe_query;
+ $self->{'check'}=$check_result;
+ $self->{'cleanup'}=$cleanup;
+ $self->{'max_limit'}=$max_limit;
+ $self->{'offset'}=$offset;
+ $self->{'safe_cleanup'}=$safe_cleanup;
+ bless $self;
+}
+
+
+sub query
+{
+ my ($self,$limit)=@_;
+ my ($queries,$query,@res);
+ $self->{'limit'}=$limit;
+ $self->cleanup() if (defined($self->{'safe_cleanup'}));
+ $queries=$self->{'query'};
+ foreach $query (@$queries)
+ {
+ push(@res,main::fix_query($query,$limit));
+ }
+ return \@res;
+}
+
+sub check_query
+{
+ my ($self)=@_;
+ return main::fix_query($self->{'safe_query'},$self->{'limit'});
+}
+
+sub cleanup
+{
+ my ($self)=@_;
+ my($tmp,$statement);
+ return if (!defined($self->{'cleanup'}));
+ $tmp=$self->{'cleanup'};
+ foreach $statement (@$tmp)
+ {
+ if (defined($statement) && length($statement))
+ {
+ main::safe_query(main::fix_query($statement,$self->{'limit'}));
+ }
+ }
+}
+
+
+sub check
+{
+ my ($self,$sth)=@_;
+ my ($check,$row);
+ return 0 if (!($row=$sth->fetchrow_arrayref));
+ $check=$self->{'check'};
+ if (defined($check))
+ {
+ return (defined($row->[0]) &&
+ $row->[0] eq main::fix_query($check,$self->{'limit'})) ? 1 : 0;
+ }
+ return 1;
+}
+
+sub max_limit
+{
+ my ($self)=@_;
+ return $self->{'max_limit'};
+}
+
+#
+# Used to find max supported row length
+#
+
+package query_row_length;
+
+sub new
+{
+ my ($type,$create,$null,$drop,$max_limit)=@_;
+ my $self={};
+ $self->{'table_name'}=$create;
+ $self->{'null'}=$null;
+ $self->{'cleanup'}=$drop;
+ $self->{'max_limit'}=$max_limit;
+ bless $self;
+}
+
+
+sub query
+{
+ my ($self,$limit)=@_;
+ my ($res,$values,$size,$length,$i);
+ $self->{'limit'}=$limit;
+
+ $res="";
+ $size=main::min($main::limits{'max_char_size'},255);
+ $size = 255 if (!$size); # Safety
+ for ($length=$i=0; $length + $size <= $limit ; $length+=$size, $i++)
+ {
+ $res.= "q$i char($size) $self->{'null'},";
+ $values.="'" . ('a' x $size) . "',";
+ }
+ if ($length < $limit)
+ {
+ $size=$limit-$length;
+ $res.= "q$i char($size) $self->{'null'},";
+ $values.="'" . ('a' x $size) . "',";
+ }
+ chop($res);
+ chop($values);
+ return ["create table " . $self->{'table_name'} . " ($res)",
+ "insert into " . $self->{'table_name'} . " values ($values)"];
+}
+
+sub max_limit
+{
+ my ($self)=@_;
+ return $self->{'max_limit'};
+}
+
+sub cleanup
+{
+ my ($self)=@_;
+ main::safe_query($self->{'cleanup'});
+}
+
+
+sub check
+{
+ return 1;
+}
+
+sub check_query
+{
+ return undef;
+}
+
+#
+# Used to find max supported index length
+#
+
+package query_index_length;
+
+sub new
+{
+ my ($type,$create,$drop,$max_limit)=@_;
+ my $self={};
+ $self->{'create'}=$create;
+ $self->{'cleanup'}=$drop;
+ $self->{'max_limit'}=$max_limit;
+ bless $self;
+}
+
+
+sub query
+{
+ my ($self,$limit)=@_;
+ my ($res,$size,$length,$i,$parts,$values);
+ $self->{'limit'}=$limit;
+
+ $res=$parts=$values="";
+ $size=main::min($main::limits{'max_index_part_length'},
+ $main::limits{'max_char_size'});
+ $size=1 if ($size == 0); # Avoid infinite loop errors
+ for ($length=$i=0; $length + $size <= $limit ; $length+=$size, $i++)
+ {
+ $res.= "q$i char($size) not null,";
+ $parts.= "q$i,";
+ $values.= "'" . ('a' x $size) . "',";
+ }
+ if ($length < $limit)
+ {
+ $size=$limit-$length;
+ $res.= "q$i char($size) not null,";
+ $parts.="q$i,";
+ $values.= "'" . ('a' x $size) . "',";
+ }
+ chop($parts);
+ chop($res);
+ chop($values);
+ if ($main::limits{'unique_in_create'} eq 'yes')
+ {
+ return [$self->{'create'} . "($res,unique ($parts))",
+ "insert into crash_q values($values)"];
+ }
+ return [$self->{'create'} . "($res)",
+ "create index crash_q_index on crash_q ($parts)",
+ "insert into crash_q values($values)"];
+}
+
+sub max_limit
+{
+ my ($self)=@_;
+ return $self->{'max_limit'};
+}
+
+sub cleanup
+{
+ my ($self)=@_;
+ main::safe_query($self->{'cleanup'});
+}
+
+
+sub check
+{
+ return 1;
+}
+
+sub check_query
+{
+ return undef;
+}
+
+
+
+### TODO:
+# OID test instead of / in addition to _rowid
diff --git a/sql-bench/example b/sql-bench/example
new file mode 100644
index 00000000..db945d8b
--- /dev/null
+++ b/sql-bench/example
@@ -0,0 +1,19 @@
+#/bin/sh
+
+hw="2xPentium(R) 3.2 GHz, 1M cache, 4G memory"
+optimization="gcc 4.1.2 -m64 -O3 --static"
+machine="Linux-x64"
+
+# InnoDB tests
+
+./run-all-tests --suffix=-innodb --comments="Engine=InnoDB --innodb_buffer_pool_size=256M --innodb_log_file_size=2000M --innodb_log_buffer_size=16M --innodb_lock_wait_timeout=50 --innodb_flush_log_at_trx_commit=1 --create-options="ENGINE=InnoDB" --hw="$hw" --optimization="$optimization" --machine="$machine" --log
+
+./run-all-tests --suffix=_fast-innodb --comments="Engine=InnoDB --innodb_buffer_pool_size=256M --innodb_log_file_size=2000M --innodb_log_buffer_size=16M --innodb_lock_wait_timeout=50 --innodb_flush_log_at_trx_commit=1 --create-options="ENGINE=InnoDB" --hw="$hw" --optimization="$optimization" --machine="$machine" --fast --log
+
+# MyISAM tests
+
+./run-all-tests --suffix=-myisam --comments="Engine=MyISAM key_buffer_size=256M" --create-options="ENGINE=myisam" --hw="$hw" --optimization="$optimization" --machine="$machine" --log
+
+./run-all-tests --suffix=_fast-myisam --comments="Engine=MyISAM key_buffer_size=256M" --create-options="ENGINE=myisam" --hw="$hw" --optimization="$optimization" --machine="$machine" --fast --log
+
+compare-results --relative output/RUN-mysql-myisam-* output/RUN-mysql_fast-myisam* output/RUN-mysql*
diff --git a/sql-bench/example.bat b/sql-bench/example.bat
new file mode 100755
index 00000000..5bc1b458
--- /dev/null
+++ b/sql-bench/example.bat
@@ -0,0 +1,7 @@
+REM
+REM Example use to run test on PC
+REM One need only to run 'comapre-results' to view results from old runs
+
+perl run-all-tests --server mysql --cmp "access,mysql"
+perl run-all-tests --server mysql --cmp "access,mysql" --log --use-old-results
+perl compare-results --cmp "access,mysql" -rel
diff --git a/sql-bench/graph-compare-results.sh b/sql-bench/graph-compare-results.sh
new file mode 100755
index 00000000..d43f722c
--- /dev/null
+++ b/sql-bench/graph-compare-results.sh
@@ -0,0 +1,661 @@
+#!/usr/bin/env perl
+####
+#### Hello ... this is a heavily hacked script by Luuk
+#### instead of printing the result it makes a nice gif
+#### when you want to look at the code ... beware of the
+#### ugliest code ever seen .... but it works ...
+#### and that's sometimes the only thing you want ... isn't it ...
+#### as the original script ... Hope you like it
+####
+#### Greetz..... Luuk de Boer 1997.
+####
+
+## if you want the seconds behind the bar printed or not ...
+## or only the one where the bar is too big for the graph ...
+## look at line 535 of this program and below ...
+## look in sub calculate for allmost all hard/soft settings :-)
+
+# a little program to generate a table of results
+# just read all the RUN-*.log files and format them nicely
+# Made by Luuk de Boer
+# Patched by Monty
+
+use Getopt::Long;
+use GD;
+
+$opt_server="mysql";
+$opt_cmp="mysql,pg,solid";
+$opt_cmp="msql,mysql,pg,solid";
+$opt_cmp="empress,mysql,pg,solid";
+$opt_dir="output";
+$opt_machine="";
+$opt_relative=$opt_same_server=$opt_help=$opt_Information=$opt_skip_count=0;
+
+GetOptions("Information","help","server=s","cmp=s","machine=s","relative","same-server","dir=s","skip-count") || usage();
+
+usage() if ($opt_help || $opt_Information);
+
+if ($opt_same_server)
+{
+ $files="$opt_dir/RUN-$opt_server-*$opt_machine";
+}
+else
+{
+ $files="$opt_dir/RUN-*$opt_machine";
+}
+$files.= "-cmp-$opt_cmp" if (length($opt_cmp));
+
+$automatic_files=0;
+if ($#ARGV == -1)
+{
+ @ARGV=glob($files);
+ $automatic_files=1;
+}
+
+
+#
+# Go trough all RUN files and gather statistics.
+#
+
+foreach (@ARGV)
+{
+ $filename = $_;
+ next if (defined($found{$_})); # remove duplicates
+ $found{$_}=1;
+ /RUN-(.*)$/;
+ $prog = $1;
+ push(@key_order,$prog);
+ $next = 0;
+ open(TMP, "<$filename") || die "Can't open $filename: $!\n";
+ while (<TMP>)
+ {
+ chomp;
+ if ($next == 0) {
+ if (/Server version:\s+(\S+.*)/i)
+ {
+ $tot{$prog}{'server'} = $1;
+ }
+ elsif (/Arguments:\s+(.+)/i)
+ {
+ $tot{$prog}{'arguments'} = $1;
+ # Remove some standard, not informative arguments
+ $tot{$prog}{'arguments'} =~ s/--log|--use-old-results|--server=\S+|--cmp=\S+|--user=\S+|--pass=\S+|--machine=\S+//g;
+ $tot{$prog}{'arguments'} =~ s/\s+/ /g;
+ }
+ elsif (/Comments:\s+(.+)/i) {
+ $tot{$prog}{'comments'} = $1;
+ } elsif (/^(\S+):\s*(estimated\s|)total\stime:\s+(\d+)\s+secs/i)
+ {
+ $tmp = $1; $tmp =~ s/://;
+ $tot{$prog}{$tmp} = [ $3, (length($2) ? "+" : "")];
+ $op1{$tmp} = $tmp;
+ } elsif (/Totals per operation:/i) {
+ $next = 1;
+ next;
+ }
+ }
+ elsif ($next == 1)
+ {
+ if (/^(\S+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)\s*([+|?])*/)
+ {
+ $tot1{$prog}{$1} = [$2,$6,$7];
+ $op{$1} = $1;
+#print "TEST - $_ \n * $prog - $1 - $2 - $6 - $7 ****\n";
+# $prog - filename
+# $1 - operation
+# $2 - time in secs
+# $6 - number of loops
+# $7 - nothing / + / ? / * => estimated time ...
+ # get the highest value ....
+ $highest = ($2/$6) if (($highest < ($2/$6)) && ($1 !~/TOTALS/i));
+ $gifcount++;
+ $giftotal += ($2/$6);
+ }
+ }
+ }
+}
+
+if (!%op)
+{
+ print "Didn't find any files matching: '$files'\n";
+ print "Use the --cmp=server,server option to compare benchmarks\n";
+ exit 1;
+}
+
+
+# everything is loaded ...
+# now we have to create a fancy output :-)
+
+# I prefer to redirect scripts instead to force it to file ; Monty
+#
+# open(RES, ">$resultfile") || die "Can't write to $resultfile: $!\n";
+# select(RES)
+#
+
+#print <<EOF;
+#<cut for this moment>
+#
+#EOF
+
+if ($opt_relative)
+{
+# print "Column 1 is in seconds. All other columns are presented relative\n";
+# print "to this. 1.00 is the same, bigger numbers indicates slower\n\n";
+}
+
+#print "The result logs which where found and the options:\n";
+
+if ($automatic_files)
+{
+ if ($key_order[$i] =~ /^$opt_server/)
+ {
+ if ($key_order[$i] =~ /^$opt_server/)
+ {
+ unshift(@key_order,$key_order[$i]);
+ splice(@key_order,$i+1,1);
+ }
+ }
+}
+# extra for mysql and mysql_pgcc
+#$number1 = shift(@key_order);
+#$number2 = shift(@key_order);
+#unshift(@key_order,$number1);
+#unshift(@key_order,$number2);
+
+# Print header
+
+$column_count=0;
+foreach $key (@key_order)
+{
+ $column_count++;
+# printf "%2d %-40.40s: %s %s\n", $column_count, $key,
+# $tot{$key}{'server'}, $tot{$key}{'arguments'};
+# print "Comments: $tot{$key}{'comments'}\n"
+# if ($tot{$key}{'comments'} =~ /\w+/);
+}
+
+#print "\n";
+
+$namewidth=$opt_skip_count ? 20 :25;
+$colwidth= $opt_relative ? 9 : 6;
+
+print_sep("=");
+#printf "%-$namewidth.${namewidth}s|", "Operation";
+$count = 1;
+foreach $key (@key_order)
+{
+# printf "%${colwidth}d|", $count;
+ $count++;
+}
+#print "\n";
+#print_sep("-");
+#print_string("Results per test:");
+#print_sep("-");
+
+foreach $key (sort {$a cmp $b} keys %op1)
+{
+# printf "%-$namewidth.${namewidth}s|", $key;
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ print_value($first,$tot{$server}{$key}->[0],$tot{$server}{$key}->[1]);
+ $first=$tot{$server}{$key}->[0] if (!defined($first));
+ }
+# print "\n";
+}
+
+print_sep("-");
+print_string("The results per operation:");
+print_sep("-");
+$luukcounter = 1;
+foreach $key (sort {$a cmp $b} keys %op)
+{
+ next if ($key =~ /TOTALS/i);
+ $tmp=$key;
+ $tmp.= " (" . $tot1{$key_order[0]}{$key}->[1] . ")" if (!$skip_count);
+# printf "%-$namewidth.${namewidth}s|", $tmp;
+ $first=undef();
+ foreach $server (@key_order)
+ {
+ print_value($first,$tot1{$server}{$key}->[0],$tot1{$server}{$key}->[2]);
+ $first=$tot1{$server}{$key}->[0] if (!defined($first));
+ }
+# print "\n";
+ $luukcounter++;
+}
+
+#print_sep("-");
+$key="TOTALS";
+#printf "%-$namewidth.${namewidth}s|", $key;
+$first=undef();
+foreach $server (@key_order)
+{
+# print_value($first,$tot1{$server}{$key}->[0],$tot1{$server}{$key}->[2]);
+ $first=$tot1{$server}{$key}->[0] if (!defined($first));
+}
+#print "\n";
+#print_sep("=");
+&make_gif;
+
+exit 0;
+
+#
+# some format functions;
+#
+
+sub print_sep
+{
+ my ($sep)=@_;
+# print $sep x ($namewidth + (($colwidth+1) * $column_count)+1),"\n";
+}
+
+
+sub print_value
+{
+ my ($first,$value,$flags)=@_;
+ my ($tmp);
+
+ if (defined($value))
+ {
+ if (!defined($first) || !$opt_relative)
+ {
+ $tmp=sprintf("%d",$value);
+ }
+ else
+ {
+ $first=1 if (!$first); # Assume that it took one second instead of 0
+ $tmp= sprintf("%.2f",$value/$first);
+ }
+ if (defined($flags))
+ {
+ $tmp="+".$tmp if ($flags =~ /\+/);
+ $tmp="?".$tmp if ($flags =~ /\?/);
+ }
+ }
+ else
+ {
+ $tmp="";
+ }
+ $tmp= " " x ($colwidth-length($tmp)) . $tmp if (length($tmp) < $colwidth);
+# print $tmp . "|";
+}
+
+
+sub print_string
+{
+ my ($str)=@_;
+ my ($width);
+ $width=$namewidth + ($colwidth+1)*$column_count;
+
+ $str=substr($str,1,$width) if (length($str) > $width);
+# print($str," " x ($width - length($str)),"|\n");
+}
+
+sub usage
+{
+ exit(0);
+}
+
+
+
+###########################################
+###########################################
+###########################################
+# making here a gif of the results ... (lets try it :-))
+# luuk .... 1997
+###########################################
+## take care that $highest / $giftotal / $gifcount / $luukcounter
+## are getting there value above ... so don't forget them while
+## copying the code to some other program ....
+
+sub make_gif {
+ &gd; # some base things ....
+ &legend; # make the nice legend
+ &lines; # yep sometimes you have to print some lines
+ &gif("gif/benchmark2-".$opt_cmp); # and finally we can print all to a gif file ...
+}
+##### mmm we are finished now ...
+
+
+# first we have to calculate some limits and some other stuff
+sub calculate {
+# here is the list which I have to know to make everything .....
+# the small border width ... $sm_border =
+# the border default $border =
+# the step default ... if it must be calculated then no value $step =
+# the highest number $highest =
+# the max length of the text of the x borders $max_len_lb=
+# the max length of a legend entry $max_len_le=
+# number of entries in the legend $num_legen =
+# the length of the color blocks for the legend $legend_block=
+# the width of the gif ...if it must be calculated - no value $width =
+# the height of the gif .. if it must be calculated - no value $height =
+# the width of the grey field ' ' ' ' $width_grey=
+# the height of the grey field ' ' ' ' $height_grey=
+# number of dashed lines $lines=
+# if bars must overlap how much they must be overlapped $overlap=
+# titlebar title of graph in two colors big $titlebar=
+# titlebar1 sub title of graph in small font in black $titlebar1=
+# xlabel $xlabel=
+# ylabel $ylabel=
+# the name of the gif ... $name=
+# then the following things must be knows .....
+# xlabel below or on the left side ?
+# legend yes/no?
+# where must the legend be placed?
+# must the xlabel be printed horizontal or vertical?
+# must the ylabel be printed horizontal or vertical?
+# must the graph be a line or a bar graph?
+# is a xlabel several different entries or some sub entries of one?
+# so xlabel 1 => test1=10, test2=15, test3=7 etc
+# or xlabel 1 => test1a=12, test1b=10, test1c=7 etc
+# must the bars overlap (only with the second example I think)
+# must the number be printed above or next to the bar?
+# when must the number be printed .... only when it extends the graph ...???
+# the space between the bars .... are that the same width of the bars ...
+# or is it a separate space ... defined ???
+# must the date printed below or some where else ....
+
+#calculate all space for text and other things ....
+ $sm_border = 8; # the grey border around ...
+ $border = 40; #default ...
+ $left_border = 2.75 * $border; #default ...
+ $right_border = $border; #default ...
+ $up_border = $border; #default ...
+ $down_border = $border; # default ...
+ $step = ($height - $up_border - $down_border)/ ($luukcounter + (($#key_order + 1) * $luukcounter));
+ # can set $step to get nice graphs ... and change the format ...
+ $step = 8; # set hard the step value
+
+ $gifavg = ($giftotal/$gifcount);
+ $highest = 2 * $gifavg;
+ $highest = 1; # set hard the highest value ...
+ $xhigh = int($highest + .5 * $highest);
+
+ # here to get the max lenght of the test entries ...
+ # so we can calculate the with of the left border
+ foreach $oper (sort keys (%op)) {
+ $max_len_lb = length($oper) if (length($oper) > $max_len_lb);
+# print "oper = $oper - $max_len_lb\n";
+ }
+ $max_len_lb = $max_len_lb * gdSmallFont->width;
+ $left_border = (3*$sm_border) + $max_len_lb;
+ $down_border = (4*$sm_border) + (gdSmallFont->width*(length($xhigh)+3)) + (gdSmallFont->height *2);
+ $right_border = (3*$sm_border) + 3 + (gdSmallFont->width*(length($highest)+5));
+
+ # calculate the space for the legend .....
+ foreach $key (@key_order) {
+ $tmp = $key;
+ $tmp =~ s/-cmp-$opt_cmp//i;
+ $giflegend = sprintf "%-24.24s: %-40.40s",$tmp,$tot{$key}{'server'};
+ $max_len_le = length($giflegend) if (length($giflegend) > $max_len_le);
+ }
+ $max_len_le = $max_len_le * gdSmallFont->width;
+ $legend_block = 10; # the length of the block in the legend
+ $max_high_le = (($#key_order + 1)*(gdSmallFont->height+2)) + (2*$legend_block);
+ $down_border += $max_high_le;
+ $up_border = (5 * $sm_border) + gdSmallFont->height + gdLargeFont->height;
+
+ print "Here some things we already know ....\n";
+# print "luukcounter = $luukcounter (number of tests)\n";
+# print "gifcount = $gifcount (number of total entries)\n";
+# print "giftotal = $giftotal (total secs)\n";
+# print "gifavg = $gifavg\n";
+# print "highest = $highest\n";
+# print "xhigh = $xhigh\n";
+# print "step = $step -- $#key_order\n";
+# print "max_len_lb = $max_len_lb\n";
+# printf "Small- width %d - height %s\n",gdSmallFont->width,gdSmallFont->height;
+# printf "Tiny- width %d - height %s\n",gdTinyFont->width,gdTinyFont->height;
+}
+
+sub gd {
+ &calculate;
+ $width = 600; # the width ....
+ $height = 500; # the height ...
+ $width_greyfield = 430;
+ # when $step is set ... count the height ....????
+ $width = $width_greyfield + $left_border + $right_border;
+ $height = ($step * ($luukcounter + ($luukcounter * ($#key_order + 1)))) + $down_border + $up_border;
+ $b_width = $width - ($left_border + $right_border); # width within the grey field
+ $overlap = 0; # how far each colum can fall over each other ...nice :-)
+
+ # make the gif image ....
+ $im = new GD::Image($width,$height);
+
+ # allocate the colors to use ...
+ $white = $im->colorAllocate(255,255,255);
+ $black = $im->colorAllocate(0,0,0);
+ $paper_white = $im->colorAllocate(220, 220, 220);
+ $grey1 = $im->colorAllocate(240, 240, 240);
+ $grey4 = $im->colorAllocate(229, 229, 229);
+ $grey2 = $im->colorAllocate(102, 102, 102);
+ $grey3 = $im->colorAllocate(153, 153, 153);
+
+ $red = $im->colorAllocate(205,0,0); # msql
+ $lred = $im->colorAllocate(255,0,0);
+ $blue = $im->colorAllocate(0,0,205); # mysql
+ $lblue = $im->colorAllocate(0,0,255); # mysql_pgcc
+ $green = $im->colorAllocate(0, 205, 0); # postgres
+ $lgreen = $im->colorAllocate(0, 255, 0); # pg_fast
+ $orange = $im->colorAllocate(205,133, 0); # solid
+ $lorange = $im->colorAllocate(255, 165, 0); # Adabas
+ $yellow = $im->colorAllocate(205,205,0); # empress
+ $lyellow = $im->colorAllocate(255,255,0);
+ $magenta = $im->colorAllocate(255,0,255); # oracle
+ $lmagenta = $im->colorAllocate(255,200,255);
+ $cyan = $im->colorAllocate(0,205,205); # sybase
+ $lcyan = $im->colorAllocate(0,255,255);
+ $sienna = $im->colorAllocate(139,71,38); # db2
+ $lsienna = $im->colorAllocate(160,82,45);
+ $coral = $im->colorAllocate(205,91,69); # Informix
+ $lcoral = $im->colorAllocate(255,114,86);
+ $peach = $im->colorAllocate(205,175,149);
+ $lpeach = $im->colorAllocate(255,218,185);
+
+ @colors = ($red, $blue, $green, $orange, $yellow, $magenta, $cyan, $sienna, $coral, $peach);
+ @lcolors = ($lred, $lblue, $lgreen, $lorange, $lyellow, $lmagenta, $lcyan, $lsienna, $lcoral, $lpeach);
+
+ # set a color per server so in every result it has the same color ....
+ foreach $key (@key_order) {
+ if ($tot{$key}{'server'} =~ /mysql/i) {
+ if ($key =~ /mysql_pgcc/i || $key =~ /mysql_odbc/i || $key =~ /mysql_fast/i) {
+ $tot{$key}{'color'} = $lblue;
+ } else {
+ $tot{$key}{'color'} = $blue;
+ }
+ } elsif ($tot{$key}{'server'} =~ /msql/i) {
+ $tot{$key}{'color'} = $lred;
+ } elsif ($tot{$key}{'server'} =~ /postgres/i) {
+ if ($key =~ /pg_fast/i) {
+ $tot{$key}{'color'} = $lgreen;
+ } else {
+ $tot{$key}{'color'} = $green;
+ }
+ } elsif ($tot{$key}{'server'} =~ /solid/i) {
+ $tot{$key}{'color'} = $lorange;
+ } elsif ($tot{$key}{'server'} =~ /empress/i) {
+ $tot{$key}{'color'} = $lyellow;
+ } elsif ($tot{$key}{'server'} =~ /oracle/i) {
+ $tot{$key}{'color'} = $magenta;
+ } elsif ($tot{$key}{'server'} =~ /sybase/i) {
+ $tot{$key}{'color'} = $cyan;
+ } elsif ($tot{$key}{'server'} =~ /db2/i) {
+ $tot{$key}{'color'} = $sienna;
+ } elsif ($tot{$key}{'server'} =~ /informix/i) {
+ $tot{$key}{'color'} = $coral;
+ } elsif ($tot{$key}{'server'} =~ /microsoft/i) {
+ $tot{$key}{'color'} = $peach;
+ } elsif ($tot{$key}{'server'} =~ /access/i) {
+ $tot{$key}{'color'} = $lpeach;
+ } elsif ($tot{$key}{'server'} =~ /adabas/i) {
+ $tot{$key}{'color'} = $lorange;
+ }
+ }
+
+ # make the nice little borders
+ # left bar
+ $poly0 = new GD::Polygon;
+ $poly0->addPt(0,0);
+ $poly0->addPt($sm_border,$sm_border);
+ $poly0->addPt($sm_border,($height - $sm_border));
+ $poly0->addPt(0,$height);
+ $im->filledPolygon($poly0,$grey1);
+ $im->polygon($poly0, $grey4);
+ # upper bar
+ $poly3 = new GD::Polygon;
+ $poly3->addPt(0,0);
+ $poly3->addPt($sm_border,$sm_border);
+ $poly3->addPt(($width - $sm_border),$sm_border);
+ $poly3->addPt($width,0);
+ $im->polygon($poly3, $grey4);
+ $tmptime = localtime(time);
+ $im->string(gdSmallFont,($width - $sm_border - (gdSmallFont->width * length($tmptime))),($height - ($sm_border) - gdSmallFont->height), $tmptime, $grey3);
+
+ # right bar
+ $poly1 = new GD::Polygon;
+ $poly1->addPt($width,0);
+ $poly1->addPt(($width - $sm_border),$sm_border);
+ $poly1->addPt(($width - $sm_border),($height - $sm_border));
+ $poly1->addPt($width,$height);
+ $im->filledPolygon($poly1, $grey3);
+ $im->stringUp(gdSmallFont,($width - 10),($height - (2 * $sm_border)), "Made by Luuk de Boer - 1997 (c)", $blue);
+ #below bar
+ $poly2 = new GD::Polygon;
+ $poly2->addPt(0,$height);
+ $poly2->addPt($sm_border,($height - $sm_border));
+ $poly2->addPt(($width - $sm_border),($height - $sm_border));
+ $poly2->addPt($width,$height);
+ $im->filledPolygon($poly2, $grey2);
+
+ # do the black line around where in you will print ... (must be done at last
+ # but is hard to develop with ... but the filled grey must be done first :-)
+ $im->filledRectangle($left_border,$up_border,($width - ($right_border)),($height-$down_border),$grey4);
+
+
+ # print the nice title ...
+ $titlebar = "MySQL Benchmark results"; # head title ...
+ $titlebar1 = "Compare $opt_cmp "; # sub title
+ $header2 = "seconds/test"; # header value
+ $center = ($width / 2) - ((gdLargeFont->width * length($titlebar)) / 2);
+ $center1 = ($width / 2) - ((gdSmallFont->width * length($titlebar1)) / 2);
+ $center2 = ($width_greyfield/2) - ((gdSmallFont->width*length($header2))/2);
+ $bovenkant = $sm_border * 3;
+ $bovenkant1 = $bovenkant + gdLargeFont->height + (.5*$sm_border);
+ $bovenkant2 = $height - $down_border + (1*$sm_border) + (gdSmallFont->width*(length($xhigh)+3));
+ $im->string(gdLargeFont,($center),($bovenkant + 1), $titlebar, $grey3);
+ $im->string(gdLargeFont,($center),($bovenkant), $titlebar, $red);
+ $im->string(gdSmallFont,($center1),($bovenkant1), $titlebar1, $black);
+ $im->string(gdSmallFont,($left_border + $center2),($bovenkant2), $header2, $black);
+
+ $xlength = $width - $left_border - $right_border;
+ $lines = 10; # hard coded number of dashed lines
+ $xverh = $xlength / $xhigh;
+# print " de verhouding ===> $xverh --- $xlength -- $xhigh \n";
+
+ $xstep = ($xhigh / $lines) * $xverh;
+ $teller = 0;
+ # make the nice dashed lines and print the values ...
+ for ($i = 0; $i <= $lines; $i++) {
+ $st2 = ($left_border) + ($i * $xstep);
+ $im->dashedLine($st2,($height-$down_border),$st2,($up_border), $grey3);
+ if (($i != 0) && ($teller == 2)) {
+ $st3 = sprintf("%.2f", $i*($xhigh/$lines));
+ $im->stringUp(gdTinyFont,($st2 - (gdSmallFont->height/2)),($height - $down_border +(.5*$sm_border) + (gdSmallFont->width*(length($xhigh)+3))), $st3, $black);
+ $teller = 0;
+ }
+ $teller++;
+ }
+ $im->rectangle($left_border,$up_border,($width - ($right_border)),($height-$down_border),$black);
+}
+
+sub legend {
+ # make the legend ...
+ $legxbegin = $left_border;
+
+ $legybegin = $height - $down_border + (2*$sm_border) + (gdSmallFont->width * (length($xhigh) + 3)) + gdSmallFont->height;
+ $legxend = $legxbegin + $max_len_le + (4*$legend_block);
+ $legxend = $legxbegin + $width_greyfield;
+ $legyend = $legybegin + $max_high_le;
+ $im->filledRectangle($legxbegin,$legybegin,$legxend,$legyend,$grey4);
+ $im->rectangle($legxbegin,$legybegin,$legxend,$legyend,$black);
+ # calculate the space for the legend .....
+ $c = 0; $i = 1;
+ $legybegin += $legend_block;
+ foreach $key (@key_order) {
+ $xtmp = $legxbegin + $legend_block;
+ $ytmp = $legybegin + ($c * (gdSmallFont->height +2));
+ $xtmp1 = $xtmp + $legend_block;
+ $ytmp1 = $ytmp + gdSmallFont->height;
+ $im->filledRectangle($xtmp,$ytmp,$xtmp1,$ytmp1,$tot{$key}{'color'});
+ $im->rectangle($xtmp,$ytmp,$xtmp1,$ytmp1,$black);
+ $tmp = $key;
+ $tmp =~ s/-cmp-$opt_cmp//i;
+ $giflegend = sprintf "%-24.24s: %-40.40s",$tmp,$tot{$key}{'server'};
+ $xtmp2 = $xtmp1 + $legend_block;
+ $im->string(gdSmallFont,$xtmp2,$ytmp,"$giflegend",$black);
+ $c++;
+ $i++;
+# print "$c $i -> $giflegend\n";
+ }
+
+}
+
+sub lines {
+
+ $g = 0;
+ $i = 0;
+ $ybegin = $up_border + ((($#key_order + 2)/2)*$step);
+ $xbegin = $left_border;
+ foreach $key (sort {$a cmp $b} keys %op) {
+ next if ($key =~ /TOTALS/i);
+ $c = 0;
+# print "key - $key\n";
+ foreach $server (@key_order) {
+ $tot1{$server}{$key}->[1] = 1 if ($tot1{$server}{$key}->[1] == 0);
+ $entry = $tot1{$server}{$key}->[0]/$tot1{$server}{$key}->[1];
+ $ytmp = $ybegin + ($i * $step) ;
+ $xtmp = $xbegin + ($entry * $xverh) ;
+ $ytmp1 = $ytmp + $step;
+# print "$server -- $entry --x $xtmp -- y $ytmp - $c\n";
+ $entry1 = sprintf("%.2f", $entry);
+ if ($entry < $xhigh) {
+ $im->filledRectangle($xbegin, $ytmp, $xtmp, $ytmp1, $tot{$server}{'color'});
+ $im->rectangle($xbegin, $ytmp, $xtmp, $ytmp1, $black);
+# print the seconds behind the bar (look below for another entry)
+# this entry is for the bars that are not greater then the max width
+# of the grey field ...
+# $im->string(gdTinyFont,(($xtmp+3),($ytmp),"$entry1",$black));
+# if you want the seconds in the color of the bar just uncomment it (below)
+# $im->string(gdTinyFont,(($xtmp+3),($ytmp),"$entry1",$tot{$server}{'color'}));
+ } else {
+ $im->filledRectangle($xbegin, $ytmp, ($xbegin + ($xhigh*$xverh)), $ytmp1, $tot{$server}{'color'});
+ $im->rectangle($xbegin, $ytmp, ($xbegin + ($xhigh*$xverh)), $ytmp1, $black);
+
+# print the seconds behind the bar (look below for another entry)
+# here is the seconds printed behind the bar is the bar is too big for
+# the graph ... (seconds is greater then xhigh ...)
+ $im->string(gdTinyFont, ($xbegin + ($xhigh*$xverh)+3),($ytmp),"$entry1",$black);
+# if you want the seconds in the color of the bar just uncomment it (below)
+# $im->string(gdTinyFont, ($xbegin + ($xhigh*$xverh)+3),($ytmp),"$entry1",$colors[$c]);
+ }
+ $c++;
+ $i++;
+ }
+ # see if we can center the text between the bars ...
+ $ytmp2 = $ytmp1 - (((($c)*$step) + gdSmallFont->height)/2);
+ $im->string(gdSmallFont,($sm_border*2),$ytmp2,$key, $black);
+ $i++;
+ }
+}
+
+
+sub gif {
+ my ($name) = @_;
+ $name_gif = $name . ".gif";
+ print "name --> $name_gif\n";
+ open (GIF, "> $name_gif") || die "Can't open $name_gif: $!\n";
+ print GIF $im->gif;
+ close (GIF);
+}
+
diff --git a/sql-bench/innotest1.sh b/sql-bench/innotest1.sh
new file mode 100644
index 00000000..1b99f601
--- /dev/null
+++ b/sql-bench/innotest1.sh
@@ -0,0 +1,142 @@
+#!/usr/bin/env perl
+############################################################################
+# Stress test for MySQL/InnoDB combined database
+# (c) 2002 Innobase Oy & MySQL AB
+#
+############################################################################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count = 100000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+print "Innotest1: MySQL/InnoDB stress test in Perl\n";
+print "-------------------------------------------\n";
+print "This is a randomized stress test for concurrent inserts,\n";
+print "updates, deletes, commits and rollbacks. The test will generate\n";
+print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
+print "\n";
+print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
+print "The thing to watch is that the server does not crash or does not\n";
+print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
+print "warnings about MySQL lock reservations can appear in the .err log.\n";
+print "The test will run very long, even several hours. You can kill\n";
+print "the perl processes running this test at any time and do CHECK\n";
+print "TABLE on table innotest1 in the 'test' database.\n";
+print "\n";
+print "Some of these stress tests will print a lot of SQL errors\n";
+print "to the standard output. That is not to be worried about.\n";
+print "You can direct the output to a file like this:\n";
+print "perl innotest1 > out1\n\n";
+
+print "Generating random keys\n";
+$random[$opt_loop_count] = 0;
+$rnd_str[$opt_loop_count] = "a";
+
+for ($i = 0; $i < $opt_loop_count; $i++) {
+
+ $random[$i] = ($i * 63857) % $opt_loop_count;
+
+ if (0 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
+ } else { if (1 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khd";
+ } else { if (2 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kh";
+ }}}
+
+ for ($j = 0; $j < (($i * 764877) % 20); $j++) {
+ $rnd_str[$i] = $rnd_str[$i]."k";
+ }
+}
+
+####
+#### Connect
+####
+
+$dbh = $server->connect()
+|| die $dbh->errstr;
+
+$dbh->do("set autocommit = 0");
+
+$n = 0;
+
+for ($i = 0; $i < 1; $i++) {
+
+ print "Dropping table innotest1\n";
+
+ $dbh->do("drop table innotest1");
+
+ print "Creating table innotest1\n";
+
+ $dbh->do(
+ "create table innotest1 (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), E TIMESTAMP, F TIMESTAMP, G DATETIME, PRIMARY KEY (A, D), INDEX
+(B, C), INDEX (C), INDEX (D), INDEX(E), INDEX(G)) TYPE = INNODB")
+ || die $dbh->errstr;
+
+ for ($j = 2; $j < $opt_loop_count - 10; $j = $j + 2) {
+
+ if ($j % 10 == 0) {
+ $dbh->do(
+ "insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NULL, NULL)");
+ } else {
+ $dbh->do(
+ "insert into innotest1 (D, B, C, F, G) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."', NOW(), NOW())");
+ }
+
+ $dbh->do("update innotest1 set B = '".$rnd_str[$j + 7]."' where A = ".$random[$j + 5]);
+
+ $dbh->do("update innotest1 SET D = D + 1 where A =".($j / 2 - 500));
+
+ $dbh->do("update innotest1 set B = '".$rnd_str[$j + 1]."' where A =".($j / 2 - 505));
+
+ $dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
+
+ fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
+
+ if (0 == ($j % 10)) {
+ $dbh->do("commit");
+ }
+
+ if (0 == ($j % 97)) {
+ fetch_all_rows($dbh, "select c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ fetch_all_rows($dbh, "select b, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
+ fetch_all_rows($dbh, "select b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ fetch_all_rows($dbh, "select b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
+ fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ fetch_all_rows($dbh, "select a, b, c, e, f, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
+ fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ fetch_all_rows($dbh, "select d, b, c, g from innotest1 where b = '".$rnd_str[$j - 677]."'");
+
+ $dbh->do("rollback");
+ }
+
+ for ($k = 1; $k < 10; $k++) {
+
+ $n += fetch_all_rows($dbh,
+"SELECT a, d from innotest1 where a = ".(($k * 1764767) % $j));
+
+ $n += fetch_all_rows($dbh,
+"SELECT * from innotest1 where a = ".(($k * 187567) % $j));
+
+ }
+
+ if (0 == ($j % 1000)) {
+ print "round $j, $n rows fetched\n";
+ }
+
+ if (0 == ($j % 20000)) {
+ print "Checking table innotest1...\n";
+ $dbh->do("check table innotest1");
+ print "Table checked.\n";
+ }
+ }
+
+ $dbh->do("commit");
+}
+
+$dbh->disconnect; # close connection
diff --git a/sql-bench/innotest1a.sh b/sql-bench/innotest1a.sh
new file mode 100644
index 00000000..7183c901
--- /dev/null
+++ b/sql-bench/innotest1a.sh
@@ -0,0 +1,108 @@
+#!/usr/bin/env perl
+############################################################################
+# Stress test for MySQL/InnoDB combined database
+# (c) 2002 Innobase Oy & MySQL AB
+#
+############################################################################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count = 200000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+print "Innotest1a: MySQL/InnoDB stress test in Perl\n";
+print "-------------------------------------------\n";
+print "This is a randomized stress test for concurrent inserts,\n";
+print "updates, deletes, commits and rollbacks. The test will generate\n";
+print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
+print "\n";
+print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
+print "The thing to watch is that the server does not crash or does not\n";
+print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
+print "warnings about MySQL lock reservations can appear in the .err log.\n";
+print "The test will run very long, even several hours. You can kill\n";
+print "the perl processes running this test at any time and do CHECK\n";
+print "TABLE on table innotest1 in the 'test' database.\n";
+print "\n";
+print "Some of these stress tests will print a lot of SQL errors\n";
+print "to the standard output. That is not to be worried about.\n";
+print "You can direct the output to a file like this:\n";
+print "perl innotest1 > out1\n\n";
+
+print "Generating random keys\n";
+$random[$opt_loop_count] = 0;
+$rnd_str[$opt_loop_count] = "a";
+
+for ($i = 0; $i < $opt_loop_count; $i++) {
+
+ $random[$i] = ($i * 63857) % $opt_loop_count;
+
+ if (0 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
+ } else { if (1 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khd";
+ } else { if (2 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kh";
+ }}}
+
+ for ($j = 0; $j < (($i * 764877) % 20); $j++) {
+ $rnd_str[$i] = $rnd_str[$i]."k";
+ }
+}
+
+####
+#### Connect
+####
+
+$dbh = $server->connect()
+|| die $dbh->errstr;
+
+
+$dbh->do("set autocommit = 0");
+
+for ($i = 0; $i < 1; $i++) {
+ print "loop $i\n";
+
+ for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
+ $dbh->do(
+ "insert into innotest1 (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')");
+ $dbh->do("update innotest1 set B = '".$rnd_str[$j + 2]."' where A = ".$random[$j + 5]);
+ $dbh->do("update innotest1 SET D = D + 1 where A =".(($j - 1) / 2 - 777));
+ $dbh->do("update innotest1 set B = '".$rnd_str[$j + 8]."' where A =".(($j - 1) / 2 - 770));
+ $dbh->do("delete from innotest1 where A = ".$random[$random[$j]]);
+
+ fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
+
+ if (0 == ($j % 37)) {
+ $dbh->do("commit");
+ }
+
+ if (0 == ($j % 533)) {
+ $dbh->do("rollback");
+ }
+
+ if (0 == ($j % 537)) {
+ print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
+ print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
+ print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
+ print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
+ print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
+ print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
+ print "\n";
+ }
+
+ if (0 == (($j - 1) % 1000)) {
+ print "round $j\n";
+ }
+ }
+
+ $dbh->do("commit");
+}
+
+$dbh->disconnect; # close connection
diff --git a/sql-bench/innotest1b.sh b/sql-bench/innotest1b.sh
new file mode 100644
index 00000000..0a909d1a
--- /dev/null
+++ b/sql-bench/innotest1b.sh
@@ -0,0 +1,101 @@
+#!/usr/bin/env perl
+############################################################################
+# Stress test for MySQL/InnoDB combined database
+# (c) 2002 Innobase Oy & MySQL AB
+#
+############################################################################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count = 200000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+print "Innotest1b: MySQL/InnoDB stress test in Perl\n";
+print "-------------------------------------------\n";
+print "This is a randomized stress test for concurrent inserts,\n";
+print "updates, deletes, commits and rollbacks. The test will generate\n";
+print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
+print "\n";
+print "You should run innotest1, innotest1a, and innotest1b concurrently.\n";
+print "The thing to watch is that the server does not crash or does not\n";
+print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
+print "warnings about MySQL lock reservations can appear in the .err log.\n";
+print "The test will run very long, even several hours. You can kill\n";
+print "the perl processes running this test at any time and do CHECK\n";
+print "TABLE on table innotest1 in the 'test' database.\n";
+print "\n";
+print "Some of these stress tests will print a lot of SQL errors\n";
+print "to the standard output. That is not to be worried about.\n";
+print "You can direct the output to a file like this:\n";
+print "perl innotest1 > out1\n\n";
+
+print "Generating random keys\n";
+$random[$opt_loop_count] = 0;
+$rnd_str[$opt_loop_count] = "a";
+
+for ($i = 0; $i < $opt_loop_count; $i++) {
+
+ $random[$i] = ($i * 63857) % $opt_loop_count;
+
+ if (0 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kjgclgrtfuylfluyfyufyulfulfyyulofuyolfyufyufuyfyufyufyufyufyyufujhfghd";
+ } else { if (1 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khd";
+ } else { if (2 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kh";
+ }}}
+
+ for ($j = 0; $j < (($i * 764877) % 20); $j++) {
+ $rnd_str[$i] = $rnd_str[$i]."k";
+ }
+}
+
+####
+#### Connect
+####
+
+$dbh = $server->connect()
+|| die $dbh->errstr;
+
+$dbh->do("set autocommit = 0");
+
+for ($i = 0; $i < 5; $i++) {
+ print "loop $i\n";
+
+ for ($j = 1; $j < $opt_loop_count - 10; $j = $j + 2) {
+
+ fetch_all_rows($dbh, "select b, c from innotest1 where a > ".$random[$j]." and a < ".($random[$j] + 7));
+
+ if (0 == ($j % 37)) {
+ $dbh->do("commit");
+ }
+
+ if (0 == ($j % 533)) {
+ $dbh->do("rollback");
+ }
+
+ if (0 == ($j % 537)) {
+ print fetch_all_rows($dbh, "select c from innotest1 where c = '".$rnd_str[$j - 67]."'");
+ print fetch_all_rows($dbh, "select b from innotest1 where b = '".$rnd_str[$j - 688]."'");
+ print fetch_all_rows($dbh, "select b, c from innotest1 where c = '".$rnd_str[$j - 67]."'");
+ print fetch_all_rows($dbh, "select b, c from innotest1 where b = '".$rnd_str[$j - 622]."'");
+ print fetch_all_rows($dbh, "select a, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ print fetch_all_rows($dbh, "select a, b, c from innotest1 where b = '".$rnd_str[$j - 644]."'");
+ print fetch_all_rows($dbh, "select d, b, c from innotest1 where c = '".$rnd_str[$j - 68]."'");
+ print fetch_all_rows($dbh, "select d, b, c from innotest1 where b = '".$rnd_str[$j - 677]."'");
+ print "\n";
+ }
+
+ if (0 == (($j - 1) % 1000)) {
+ print "round $j\n";
+ }
+ }
+
+ $dbh->do("commit");
+}
+
+$dbh->disconnect; # close connection
diff --git a/sql-bench/innotest2.sh b/sql-bench/innotest2.sh
new file mode 100644
index 00000000..941b0ac8
--- /dev/null
+++ b/sql-bench/innotest2.sh
@@ -0,0 +1,150 @@
+#!/usr/bin/env perl
+############################################################################
+# Stress test for MySQL/InnoDB combined database
+# (c) 2002 Innobase Oy & MySQL AB
+#
+############################################################################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count = 100000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+print "Innotest2: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
+print "------------------------------------------------------------\n";
+print "This is a randomized stress test for concurrent inserts,\n";
+print "updates, deletes, commits and rollbacks with foreign keys with\n";
+print "the ON DELETE ... clause. The test will generate\n";
+print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
+print "\n";
+print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
+print "The thing to watch is that the server does not crash or does not\n";
+print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
+print "warnings about MySQL lock reservations can appear in the .err log.\n";
+print "The test will run very long, even several hours. You can kill\n";
+print "the perl processes running this test at any time and do CHECK\n";
+print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
+print "\n";
+print "Some of these stress tests will print a lot of SQL errors\n";
+print "to the standard output. That is not to be worried about.\n";
+print "You can direct the output to a file like this:\n";
+print "perl innotest2 > out2\n\n";
+
+print "Generating random keys\n";
+$random[$opt_loop_count] = 0;
+$rnd_str[$opt_loop_count] = "a";
+
+for ($i = 0; $i < $opt_loop_count; $i++) {
+
+ $random[$i] = ($i * 63857) % $opt_loop_count;
+
+ if (0 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khD";
+ } else { if (1 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khd";
+ } else { if (2 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kHd";
+ }}}
+
+ for ($j = 0; $j < (($i * 764877) % 10); $j++) {
+ $rnd_str[$i] = $rnd_str[$i]."k";
+ }
+}
+
+####
+#### Connect
+####
+
+$dbh = $server->connect()
+|| die $dbh->errstr;
+
+$dbh->do("set autocommit = 0");
+
+for ($i = 0; $i < 1; $i++) {
+ print "loop $i\n";
+
+ print "dropping table innotest2a\n";
+ $dbh->do("drop table innotest2a");
+
+ print "dropping table innotest2b\n";
+ $dbh->do("drop table innotest2b");
+
+ print "dropping table innotest2c\n";
+ $dbh->do("drop table innotest2c");
+
+ print "dropping table innotest2d\n";
+ $dbh->do("drop table innotest2d");
+
+ print "creating table innotest2b\n";
+ $dbh->do(
+ "create table innotest2b (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C)) TYPE = INNODB")
+ || die $dbh->errstr;
+
+ print "creating table innotest2a\n";
+
+ $dbh->do(
+ "create table innotest2a (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2b (A, D) ON DELETE CASCADE) TYPE = INNODB")
+ || die $dbh->errstr;
+
+ print "creating table innotest2c\n";
+
+ $dbh->do(
+ "create table innotest2c (A INT NOT NULL AUTO_INCREMENT, D INT NOT NULL, B VARCHAR(200) NOT NULL, C VARCHAR(175), PRIMARY KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (A, D) REFERENCES innotest2a (A, D) ON DELETE CASCADE, FOREIGN KEY (B, C) REFERENCES innotest2a (B, C) ON DELETE CASCADE) TYPE = INNODB")
+ || die $dbh->errstr;
+
+ print "creating table innotest2d\n";
+
+ $dbh->do(
+ "create table innotest2d (A INT AUTO_INCREMENT, D INT, B VARCHAR(200), C VARCHAR(175), UNIQUE KEY (A, D, B), INDEX (B, C), INDEX (C), FOREIGN KEY (C) REFERENCES innotest2c (C) ON DELETE SET NULL, FOREIGN KEY (B, C) REFERENCES innotest2c (B, C) ON DELETE SET NULL) TYPE = INNODB")
+ || die $dbh->errstr;
+ print "created\n";
+
+ for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
+ $dbh->do(
+ "insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
+ || print $dbh->errstr;
+
+ $dbh->do(
+ "insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
+ || print $dbh->errstr;
+
+ $dbh->do(
+ "insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
+ || print $dbh->errstr;
+
+ $dbh->do(
+ "insert into innotest2d (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
+ || print $dbh->errstr;
+
+ $dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
+ || print $dbh->errstr;
+
+ if (0 == ($j % 10)) {
+ $dbh->do("commit");
+ }
+
+ if (0 == ($j % 39)) {
+ $dbh->do("rollback");
+ }
+
+ if (0 == ($j % 1000)) {
+ print "round $j\n";
+ }
+ if (0 == ($j % 20000)) {
+ print "Checking tables...\n";
+ $dbh->do("check table innotest2a");
+ $dbh->do("check table innotest2b");
+ $dbh->do("check table innotest2c");
+ $dbh->do("check table innotest2d");
+ print "Tables checked.\n";
+ }
+ }
+
+ $dbh->do("commit");
+}
+
+$dbh->disconnect; # close connection
diff --git a/sql-bench/innotest2a.sh b/sql-bench/innotest2a.sh
new file mode 100644
index 00000000..e873d2b4
--- /dev/null
+++ b/sql-bench/innotest2a.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/env perl
+############################################################################
+# Stress test for MySQL/Innobase combined database
+# (c) 2000 Innobase Oy & MySQL AB
+#
+############################################################################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count = 100000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+print "Innotest2a: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
+print "------------------------------------------------------------\n";
+print "This is a randomized stress test for concurrent inserts,\n";
+print "updates, deletes, commits and rollbacks with foreign keys with\n";
+print "the ON DELETE ... clause. The test will generate\n";
+print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
+print "\n";
+print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
+print "The thing to watch is that the server does not crash or does not\n";
+print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
+print "warnings about MySQL lock reservations can appear in the .err log.\n";
+print "The test will run very long, even several hours. You can kill\n";
+print "the perl processes running this test at any time and do CHECK\n";
+print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
+print "\n";
+print "Some of these stress tests will print a lot of SQL errors\n";
+print "to the standard output. That is not to be worried about.\n";
+print "You can direct the output to a file like this:\n";
+print "perl innotest2 > out2\n\n";
+
+print "Generating random keys\n";
+$random[$opt_loop_count] = 0;
+$rnd_str[$opt_loop_count] = "a";
+
+for ($i = 0; $i < $opt_loop_count; $i++) {
+
+ $random[$i] = ($i * 63857) % $opt_loop_count;
+
+ if (0 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khD";
+ } else { if (1 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kHd";
+ } else { if (2 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khd";
+ }}}
+
+ for ($j = 0; $j < (($i * 764877) % 20); $j++) {
+ $rnd_str[$i] = $rnd_str[$i]."k";
+ }
+}
+
+####
+#### Connect
+####
+
+$dbh = $server->connect()
+|| die $dbh->errstr;
+
+$dbh->do("set autocommit = 0");
+
+for ($i = 0; $i < 5; $i++) {
+ print "loop $i\n";
+
+ for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 1) {
+
+ $dbh->do("update innotest2a set B = '".$rnd_str[$j + 1]."' where A = ".$random[$j + 5])
+ || print $dbh->errstr;
+
+ $dbh->do("delete from innotest2a where A = ".$random[$random[$j]])
+ || print $dbh->errstr;
+
+ if (0 == ($j % 10)) {
+ $dbh->do("commit");
+ }
+
+ if (0 == ($j % 39)) {
+ $dbh->do("rollback");
+ }
+
+ if (0 == ($j % 1000)) {
+ print "round $j\n";
+ }
+ }
+
+ $dbh->do("commit");
+}
+
+$dbh->disconnect; # close connection
diff --git a/sql-bench/innotest2b.sh b/sql-bench/innotest2b.sh
new file mode 100644
index 00000000..56b44eda
--- /dev/null
+++ b/sql-bench/innotest2b.sh
@@ -0,0 +1,104 @@
+#!/usr/bin/env perl
+############################################################################
+# Stress test for MySQL/Innobase combined database
+# (c) 2000 Innobase Oy & MySQL AB
+#
+############################################################################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count = 100000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+print "Innotest2b: MySQL/InnoDB stress test in Perl for FOREIGN keys\n";
+print "------------------------------------------------------------\n";
+print "This is a randomized stress test for concurrent inserts,\n";
+print "updates, deletes, commits and rollbacks with foreign keys with\n";
+print "the ON DELETE ... clause. The test will generate\n";
+print "also a lot of deadlocks, duplicate key errors, and other SQL errors.\n";
+print "\n";
+print "You should run innotest2, innotest2a, and innotest2b concurrently.\n";
+print "The thing to watch is that the server does not crash or does not\n";
+print "print to the .err log anything. Currently, due to a buglet in MySQL,\n";
+print "warnings about MySQL lock reservations can appear in the .err log.\n";
+print "The test will run very long, even several hours. You can kill\n";
+print "the perl processes running this test at any time and do CHECK\n";
+print "TABLE on tables innotest2a, b, c, d in the 'test' database.\n";
+print "\n";
+print "Some of these stress tests will print a lot of SQL errors\n";
+print "to the standard output. That is not to be worried about.\n";
+print "You can direct the output to a file like this:\n";
+print "perl innotest2 > out2\n\n";
+
+print "Generating random keys\n";
+$random[$opt_loop_count] = 0;
+$rnd_str[$opt_loop_count] = "a";
+
+for ($i = 0; $i < $opt_loop_count; $i++) {
+
+ $random[$i] = ($i * 98641) % $opt_loop_count;
+
+ if (0 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khD";
+ } else { if (1 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "khd";
+ } else { if (2 == ($random[$i] % 3)) {
+ $rnd_str[$i] = "kHd";
+ }}}
+
+ for ($j = 0; $j < (($i * 764877) % 10); $j++) {
+ $rnd_str[$i] = $rnd_str[$i]."k";
+ }
+}
+
+####
+#### Connect
+####
+
+$dbh = $server->connect();
+
+$dbh->do("set autocommit = 0");
+
+for ($i = 0; $i < 1; $i++) {
+ print "loop $i\n";
+
+ for ($j = 0; $j < $opt_loop_count - 10; $j = $j + 2) {
+ $dbh->do(
+ "insert into innotest2b (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
+ || print $dbh->errstr;
+
+ $dbh->do(
+ "insert into innotest2a (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
+ || print $dbh->errstr;
+
+ $dbh->do(
+ "insert into innotest2c (D, B, C) values (5, '".$rnd_str[$j]."' ,'".$rnd_str[$j]."')")
+ || print $dbh->errstr;
+
+ $dbh->do("delete from innotest2b where A = ".$random[$random[$j]])
+ || print $dbh->errstr;
+
+ $dbh->do("update innotest2b set A = A + 1 where A = ".$random[$j])
+ || print $dbh->errstr;
+
+ if (0 == ($j % 10)) {
+ $dbh->do("commit");
+ }
+
+ if (0 == ($j % 39)) {
+ $dbh->do("rollback");
+ }
+
+ if (0 == ($j % 1000)) {
+ print "round $j\n";
+ }
+ }
+
+ $dbh->do("commit");
+}
+
+$dbh->disconnect; # close connection
diff --git a/sql-bench/limits/Adabas.cfg b/sql-bench/limits/Adabas.cfg
new file mode 100644
index 00000000..99aaa36a
--- /dev/null
+++ b/sql-bench/limits/Adabas.cfg
@@ -0,0 +1,429 @@
+#This file is automaticly generated by crash-me 1.20b
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_add_multi_col=without add # Alter table add many columns
+alter_alter_col=no # Alter table alter column
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_modify_col=yes # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=16 # number of columns in group by
+columns_in_order_by=16 # number of columns in order by
+comment_#=no # # as comment
+comment_--=no # -- as comment
+comment_/**/=no # /* */ as comment
+compute=no # Compute
+connections=1 # Simultaneous connections
+crash_me_safe=no # crash me safe
+crash_me_version=1.20b # crash me version
+create_default=yes # default value for column
+create_index=yes # create index
+cross_join=no # cross join (same as from a,b)
+date_as_string=yes # String functions on date columns
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_index=yes # drop index
+end_colon=no # allows end ';'
+except=yes # except
+except_all=yes # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=yes # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=error # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=yes # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=yes # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=yes # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=yes # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=yes # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_max_num=no # Function MAX on numbers
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_min_num=no # Function MIN on numbers
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=yes # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_tanh=error # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=yes # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=yes # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=error # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=error # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=error # Function REAL LENGTH
+func_odbc_length_without_space=yes # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user=yes # Function USER
+func_odbc_user()=yes # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_case=no # Function CASE
+func_sql_cast=no # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_date()=no # Function CURRENT_DATE()
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_time()=no # Function CURRENT_TIME()
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP()
+func_sql_lower=yes # Function LOWER
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_extra_sysdate=no # Function SYSDATE
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # null values in group by
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=yes # Group function STDDEV
+group_func_extra_variance=yes # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=yes # INSERT with set syntax
+intersect=yes # intersect
+intersect_all=yes # intersect all
+join_tables=16 # tables in join
+left_outer_join=no # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=4000 # max char() size
+max_column_name=+512 # column name length
+max_columns=254 # Columns in table
+max_conditions=252 # OR and AND in WHERE
+max_expressions=1723 # simple expressions
+max_index=+64 # max index
+max_index_length=254 # index length
+max_index_name=+512 # index name length
+max_index_part_length=254 # max index part length
+max_index_parts=15 # index parts
+max_index_varchar_part_length=254 # index varchar part length
+max_row_length=3991 # max table row length (without blobs)
+max_row_length_with_null=3991 # table row length with nulls (without blobs)
+max_select_alias_name=+512 # select alias name length
+max_stack_expression=1022 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=+512 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=4000 # max varchar() size
+minus=no # minus
+minus_neg=yes # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+insert_multi_value=no # Value lists in INSERT
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=yes # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Linux 2.0.35 i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_position=yes # Order by position
+primary_key_in_create=yes # primary key in create table
+query_size=8202 # query size
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=223 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=no # Remembers end space in varchar()
+right_outer_join=no # right outer join
+round_on_store=yes # Correct rounding when storing float values
+select_constants=yes # Select constants
+select_string_size=4023 # constant string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=Adabas 10.01.00 # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_name_case=no # case independent table names
+table_wildcard=yes # Select table_name.*
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_char16=no # Type char16
+type_extra_char2=no # Type char2
+type_extra_char4=no # Type char4
+type_extra_char8=no # Type char8
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_line=no # Type line
+type_extra_long=yes # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_nvarchar(2_arg)=no # Type nvarchar(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_sql_smallint=yes # Type smallint
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_extra_double=no # Type double
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_extra_float(2_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_year=no # Type interval year
+type_sql_numeric(2_arg)=no # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+views=yes # views
+where_string_size=4023 # constant string size in where
diff --git a/sql-bench/limits/Informix.cfg b/sql-bench/limits/Informix.cfg
new file mode 100644
index 00000000..85e79b53
--- /dev/null
+++ b/sql-bench/limits/Informix.cfg
@@ -0,0 +1,420 @@
+#This file is automaticly generated by crash-me 1.19a
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_modify_col=yes # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=yes # /* */ as comment
+compute=no # Compute
+connections=269 # Simultaneous connections
+crash_me_safe=no # crash me safe
+crash_me_version=1.19a # crash me version
+create_default=no # default value for column
+create_index=yes # create index
+cross_join=no # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+double_quotes=no # Double '' as ' in strings
+drop_index=yes # drop index
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=yes # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=yes # Function LOGN
+func_extra_lpad=yes # Function LPAD
+func_extra_max_num=no # Function MAX on numbers
+func_extra_mdy=yes # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_min_num=no # Function MIN on numbers
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=yes # Function POW
+func_extra_range=yes # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=yes # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=yes # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=yes # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=no # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=error # Function REAL LENGTH
+func_odbc_length_without_space=yes # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=no # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=no # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=no # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=no # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user=yes # Function USER
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_case=yes # Function CASE
+func_sql_cast=no # Function CAST
+func_sql_char_length=yes # Function CHAR_LENGTH
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_date()=no # Function CURRENT_DATE()
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_time()=no # Function CURRENT_TIME()
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP()
+func_sql_lower=yes # Function LOWER
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_extra_sysdate=no # Function SYSDATE
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Test nulls in group by
+group_by_position=yes # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=+64 # tables in join
+left_outer_join=no # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=256 # max char() size
+max_column_name=18 # column name length
+max_columns=994 # Columns in table
+max_conditions=1204 # OR and AND in WHERE
+max_expressions=16372 # simple expressions
+max_index=+64 # max index
+max_index_length=255 # index length
+max_index_name=18 # index name length
+max_index_part_length=255 # max index part length
+max_index_parts=15 # index parts
+max_index_varchar_part_length=254 # index varchar part length
+max_row_length=32356 # max table row length (without blobs)
+max_row_length_with_null=32356 # table row length with nulls (without blobs)
+max_select_alias_name=18 # select alias name length
+max_stack_expression=47 # stacked expressions
+max_table_alias_name=18 # table alias name length
+max_table_name=18 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=255 # max varchar() size
+minus=no # minus
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique
+null_num_expr=no # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Windows NT Version 4.0 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_position=yes # Order by position
+primary_key_in_create=yes # primary key in create table
+query_size=32766 # query size
+quote_with_"=yes # Allows ' and " as string markers
+recursive_subqueries=10 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=no # Remembers end space in varchar()
+right_outer_join=no # right outer join
+select_constants=yes # Select constants
+select_string_size=256 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=Informix 7.30C1 # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_wildcard=yes # Select table_name.*
+transactions=error # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=yes # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_char16=no # Type char16
+type_extra_char2=no # Type char2
+type_extra_char4=no # Type char4
+type_extra_char8=no # Type char8
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_nvarchar(2_arg)=yes # Type nvarchar(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=yes # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=yes # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_sql_smallint=yes # Type smallint
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_extra_double=no # Type double
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_extra_float(2_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_year=no # Type interval year
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_time=no # Type time
+type_sql_timestamp=no # Type timestamp
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=32452 # constant string size in where
diff --git a/sql-bench/limits/access.cfg b/sql-bench/limits/access.cfg
new file mode 100644
index 00000000..86d43bde
--- /dev/null
+++ b/sql-bench/limits/access.cfg
@@ -0,0 +1,501 @@
+#This file is automaticly generated by crash-me 1.45
+
+NEG=no # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=no # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=without add # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=yes # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_drop_constraint=no # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint # Alter table drop foreign key
+alter_drop_primary_key=drop constraint # Alter table drop primary key
+alter_drop_unique=with constraint # Alter table drop unique
+alter_modify_col=with alter # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=no # Automatic rowid
+binary_numbers=no # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=yes # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=37 # number of columns in group by
+columns_in_order_by=37 # number of columns in order by
+comment_#=no # # as comment
+comment_--=no # -- as comment
+comment_/**/=no # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=64 # Simultaneous connections (installation default)
+constraint_check=no # Column constraints
+constraint_check_table=no # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=no # crash me safe
+crash_me_version=1.45 # crash me version
+create_default=no # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_as_string=error # String functions on date columns
+date_last=no # Supports 9999-12-31 dates
+date_one=no # Supports 0001-01-01 dates
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=with 'ON' # drop index
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=error # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=yes # Function <> in SELECT
+func_extra_==yes # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=yes # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=yes # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=yes # Function CHR
+func_extra_concat_as_+=yes # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=error # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=yes # Function IN on numbers in SELECT
+func_extra_in_str=yes # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=yes # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=yes # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=yes # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=yes # Function NOT in SELECT
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=error # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=no # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=no # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=error # Function REAL LENGTH
+func_odbc_length_without_space=yes # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=no # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=no # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=no # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=no # Function LOWER
+func_sql_nullif=no # Function NULLIF
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=no # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=no # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=no # Function UPPER
+func_sql_user=no # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=no # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=no # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr)
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+has_true_false=yes # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=no # hex strings (x'1ace')
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=yes # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=no # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=32 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=no # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=-1 # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=85 # max char() size
+max_column_name=59 # column name length
+max_columns=255 # Columns in table
+max_conditions=97 # OR and AND in WHERE
+max_expressions=+10000 # simple expressions
+max_index=32 # max index
+max_index_length=10 # index length
+max_index_name=64 # index name length
+max_index_part_length=50 # max index part length
+max_index_parts=10 # index parts
+max_index_varchar_part_length=50 # index varchar part length
+max_row_length=2025 # max table row length (without blobs)
+max_row_length_with_null=2025 # table row length with nulls (without blobs)
+max_select_alias_name=64 # select alias name length
+max_stack_expression=14 # stacked expressions
+max_table_alias_name=253 # table alias name length
+max_table_name=64 # table name length
+max_text_size=17 # max text or blob size
+max_unique_index=32 # unique indexes
+max_varchar_size=85 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=yes # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_null_in_unique=yes # null in unique index
+multi_strings=no # Multiple line strings
+multi_table_delete=yes # DELETE FROM table1,table2...
+multi_table_update=yes # Update with many tables
+insert_multi_value=no # Value lists in INSERT
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is concat('a',NULL) = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique index
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Microsoft Windows 2000 [Version 5.00.2195] # crash-me tested on
+order_by=yes # Order by
+order_by_alias=no # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=yes # [] as identifier quote
+quote_ident_with_`=yes # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=49 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=with TOP # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=516076 # constant string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=Access 2000 # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+tempoary_table=no # temporary tables
+transactions=error # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=yes # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_double=yes # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=yes # Type float4
+type_extra_float8=yes # Type float8
+type_extra_image=yes # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=yes # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=yes # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=yes # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
+type_sql_character(1_arg)=no # Type character(1 arg)
+type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=no # Type dec(2 arg)
+type_sql_decimal(2_arg)=no # Type decimal(2 arg)
+type_sql_double_precision=no # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=no # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=no # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+views=no # views
+where_string_size=258035 # constant string size in where
diff --git a/sql-bench/limits/access_odbc.cfg b/sql-bench/limits/access_odbc.cfg
new file mode 100644
index 00000000..8fd07fc7
--- /dev/null
+++ b/sql-bench/limits/access_odbc.cfg
@@ -0,0 +1,448 @@
+#This file is automaticly generated by crash-me 1.37
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_add_multi_col=without add # Alter table add many columns
+alter_alter_col=no # Alter table alter column
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=yes # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=11 # number of columns in group by
+columns_in_order_by=11 # number of columns in order by
+comment_#=no # # as comment
+comment_--=no # -- as comment
+comment_/**/=no # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=64 # Simultaneous connections
+constraint_check=no # CHECK constraint
+constraint_null=yes # NULL constraint (SyBase style)
+crash_me_safe=no # crash me safe
+crash_me_version=1.37 # crash me version
+create_default=no # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_as_string=error # String functions on date columns
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=no # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=with 'ON' # drop index
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=error # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=yes # Function <> in SELECT
+func_extra_==yes # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=yes # Function AND and OR in SELECT
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=yes # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=yes # Function CHR
+func_extra_coalesce=no # Function COALESCE
+func_extra_concat_as_+=yes # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=error # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=yes # Function IN on numbers in SELECT
+func_extra_in_str=yes # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=yes # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=yes # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=yes # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=yes # Function NOT in SELECT
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=error # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=no # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=no # Function ASIN
+func_odbc_atan=no # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=no # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=no # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=no # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_case=no # Function CASE
+func_sql_cast=no # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_concat_as_||=no # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_lower=no # Function LOWER
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=no # Function UPPER
+func_sql_user=no # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=no # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=no # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr)
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=yes # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=no # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=32 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=no # lock table
+logical_value=-1 # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=255 # max char() size
+max_column_name=59 # column name length
+max_columns=255 # Columns in table
+max_conditions=97 # OR and AND in WHERE
+max_expressions=+10000 # simple expressions
+max_index=32 # max index
+max_index_length=2026 # index length
+max_index_name=64 # index name length
+max_index_part_length=255 # max index part length
+max_index_parts=10 # index parts
+max_index_varchar_part_length=85 # index varchar part length
+max_row_length=2025 # max table row length (without blobs)
+max_row_length_with_null=2025 # table row length with nulls (without blobs)
+max_select_alias_name=64 # select alias name length
+max_stack_expression=14 # stacked expressions
+max_table_alias_name=253 # table alias name length
+max_table_name=64 # table name length
+max_text_size=17 # max text or blob size
+max_unique_index=32 # unique indexes
+max_varchar_size=85 # max varchar() size
+minus=no # minus
+minus_neg=yes # Calculate 1--1
+multi_drop=yes # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=yes # DELETE FROM table1,table2...
+multi_table_update=yes # Update with many tables
+insert_multi_value=no # Value lists in INSERT
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Windows 98 [Version 4.10.1998] # crash-me tested on
+order_by=yes # Order by
+order_by_alias=no # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+primary_key_in_create=yes # primary key in create table
+query_size=16777216 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=yes # [] as identifier quote
+quote_ident_with_`=yes # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=49 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # SELECT with LIMIT
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=516076 # constant string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=Access 2000 # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+tempoary_table=no # temporary tables
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=yes # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_double=yes # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=yes # Type float4
+type_extra_float8=yes # Type float8
+type_extra_image=yes # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=yes # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=yes # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=yes # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
+type_sql_character(1_arg)=no # Type character(1 arg)
+type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=no # Type dec(2 arg)
+type_sql_decimal(2_arg)=no # Type decimal(2 arg)
+type_sql_double_precision=no # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=no # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=no # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+views=no # views
+where_string_size=258035 # constant string size in where
diff --git a/sql-bench/limits/db2.cfg b/sql-bench/limits/db2.cfg
new file mode 100644
index 00000000..5b2c0e17
--- /dev/null
+++ b/sql-bench/limits/db2.cfg
@@ -0,0 +1,522 @@
+#This file is automaticly generated by crash-me 1.57
+
+NEG=yes # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=no # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=no # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=no # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint # Alter table drop foreign key
+alter_drop_primary_key=drop primary key # Alter table drop primary key
+alter_drop_unique=no # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+automatic_rowid=no # Automatic row id
+binary_numbers=no # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=no # Case insensitive compare
+char_is_space_filled=yes # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=no # # as comment
+comment_--=yes # -- as comment (ANSI)
+comment_/**/=no # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=40 # Simultaneous connections (installation default)
+constraint_check=yes # Column constraints
+constraint_check_table=yes # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=no # crash me safe
+crash_me_version=1.57 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_infinity=no # Supports 'infinity dates
+date_last=no # Supports 9999-12-31 dates
+date_one=no # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+dont_require_cast_to_float=yes # No need to cast from integer to float
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=no # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=yes # except
+except_all=yes # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=yes # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=yes # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=yes # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=error # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=yes # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=error # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=yes # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=yes # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=yes # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=yes # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=no # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif_num=yes # Function NULLIF with numbers
+func_sql_nullif_string=yes # Function NULLIF with strings
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=yes # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=yes # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=yes # Group function STDDEV
+group_func_extra_variance=yes # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=yes # Group on unused column
+has_true_false=no # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=no # hex numbers (0x41)
+hex_strings=yes # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=yes # insert empty string
+insert_multi_value=yes # INSERT with Value lists
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=yes # intersect
+intersect_all=yes # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=10 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=no # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=254 # max char() size
+max_column_name=30 # column name length
+max_columns=500 # Columns in table
+max_conditions=2082 # OR and AND in WHERE
+max_expressions=9543 # simple expressions
+max_index=+64 # max index
+max_index_length=1024 # index length
+max_index_name=18 # index name length
+max_index_part_length=254 # max index part length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=255 # index varchar part length
+max_row_length=4005 # max table row length (without blobs)
+max_row_length_with_null=3989 # table row length with nulls (without blobs)
+max_select_alias_name=30 # select alias name length
+max_stack_expression=1363 # stacked expressions
+max_table_alias_name=128 # table alias name length
+max_table_name=128 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=4000 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique index
+null_num_expr=no # Is 1+NULL = NULL
+nulls_in_unique=no # null combination in unique index
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Linux 2.4.4-64GB-SMP i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=yes # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=65535 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=8 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=yes # rename table
+repeat_string_size=4000 # return string size from function
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=32672 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=IBM DB2 7.2 # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=truncate # Storage of float values
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=no # temporary tables
+transactions=yes # constant string size in where
+truncate_table=no # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=yes # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_boolean=no # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=no # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=32672 # constant string size in where
diff --git a/sql-bench/limits/empress.cfg b/sql-bench/limits/empress.cfg
new file mode 100644
index 00000000..67256adb
--- /dev/null
+++ b/sql-bench/limits/empress.cfg
@@ -0,0 +1,364 @@
+#This file is automaticly generated by crash-me 1.18a
+
+NEG=yes # update of column= -column
+atomic_updates=no # atomic updates
+binary_items=no # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+column_alias=no # Column alias
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=yes # /* */ as comment
+compute=no # Compute
+connections=10 # Simultaneous connections
+crash_me_safe=no # crash me safe
+crash_me_version=1.18a # crash me version
+create_default=no # default value for column
+create_index=yes # create index
+cross_join=no # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_index=yes # drop index
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_charindex=no # Function CHARINDEX
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_interval=no # Function INTERVAL
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_lpad=no # Function LPAD
+func_extra_max_num=no # Function MAX on numbers
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_min_num=no # Function MIN on numbers
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=yes # Function POW
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=error # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user=no # Function USER
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_case=no # Function CASE
+func_sql_cast=no # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_concat_as_||=no # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_date()=no # Function CURRENT_DATE()
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_time()=no # Function CURRENT_TIME()
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP()
+func_sql_lower=no # Function LOWER
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_extra_sysdate=no # Function SYSDATE
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=no # Function UPPER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=yes # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=no # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having with alias
+having_with_group=yes # Having with group function
+index_in_create=no # index in create table
+index_namespace=yes # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=no # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=63 # tables in join
+left_outer_join=no # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=7930634 # max char() size
+max_column_name=31 # column name length
+max_columns=2419 # Columns in table
+max_conditions=628 # OR and AND in WHERE
+max_expressions=4092 # simple expressions
+max_index=+64 # max index
+max_index_length=2710 # index length
+max_index_name=32 # index name length
+max_index_part_length=2710 # index part length
+max_index_parts=+64 # index parts
+max_row_length=62696 # max table row length (without blobs)
+max_row_length_with_null=62702 # table row length with nulls (without blobs)
+max_stack_expression=131 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=32 # table name length
+max_text_size=4095 # max text or blob size
+max_unique_index=+64 # max unique index
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is concat('a',NULL) = NULL
+null_in_index=no # null in index
+null_num_expr=no # Is 1+NULL = NULL
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.0.33 i586 # crash-me tested on
+order_by=yes # Order by
+order_by_position=yes # Order by position
+primary_key_in_create=no # primary key in create table
+query_size=16777216 # query size
+quote_with_"=yes # Allows ' and " as string markers
+recursive_subqueries=49 # recursive subqueries
+remember_end_space=error # Remembers end space in char()
+right_outer_join=no # right outer join
+select_constants=yes # Select constants
+select_string_size=32753 # constant string string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=EMPRESS Version 6.10 # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_wildcard=no # Select table_name.*
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_char16=no # Type char16
+type_extra_char2=no # Type char2
+type_extra_char4=no # Type char4
+type_extra_char8=no # Type char8
+type_extra_circle=no # Type circle
+type_extra_datetime=no # Type datetime
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_line=no # Type line
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_money=no # Type money
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_extra_nvarchar(2_arg)=no # Type nvarchar(2 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_reltime=no # Type reltime
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=yes # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_sql_smallint=yes # Type smallint
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_extra_double=no # Type double
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_extra_float(2_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_year=no # Type interval year
+type_sql_numeric(2_arg)=no # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_time=yes # Type time
+type_sql_timestamp=no # Type timestamp
+type_sql_varchar(1_arg)=no # Type varchar(1 arg)
+union=no # union
+union_all=no # union all
+unique_in_create=no # unique in create table
+views=yes # views
+where_string_size=nonstandard # constant string size in where
diff --git a/sql-bench/limits/frontbase.cfg b/sql-bench/limits/frontbase.cfg
new file mode 100644
index 00000000..f8aad442
--- /dev/null
+++ b/sql-bench/limits/frontbase.cfg
@@ -0,0 +1,516 @@
+#This file is automaticly generated by crash-me 1.52
+
+NEG=yes # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=no # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=yes # Alter table add unique
+alter_alter_col=yes # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=with restrict/cascade # Alter table drop column
+alter_drop_constraint=with restrict/cascade # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint and restrict/cascade # Alter table drop foreign key
+alter_drop_primary_key=drop constraint # Alter table drop primary key
+alter_drop_unique=with constraint and restrict/cascade # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=no # Automatic rowid
+binary_numbers=yes # binary numbers (0b1001)
+binary_strings=yes # binary strings (b'0110')
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=no # # as comment
+comment_--=no # -- as comment (ANSI)
+comment_/**/=no # /* */ as comment
+comment_//=no # // as comment (ANSI)
+compute=no # Compute
+connections=47 # Simultaneous connections (installation default)
+constraint_check=yes # Column constraints
+constraint_check_table=yes # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=no # crash me safe
+crash_me_version=1.52 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=yes # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=yes # cross join (same as from a,b)
+date_infinity=no # Supports 'infinity dates
+date_last=yes # Supports 9999-12-31 dates
+date_one=yes # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+drop_requires_cascade=yes # drop table require cascade/restrict
+drop_restrict=yes # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=yes # except
+except_all=yes # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_circular=yes # Circular foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=no # Function ABS
+func_odbc_acos=no # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=no # Function ASIN
+func_odbc_atan=no # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=no # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=no # Function EXP
+func_odbc_floor=no # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=no # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=no # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=no # Function ROUND(2 arg)
+func_odbc_rtrim=no # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=no # Function SIGN
+func_odbc_sin=no # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=no # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=no # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=yes # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=error # Function CHAR_LENGTH
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=yes # Function CURRENT_USER
+func_sql_extract_sql=no # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif_num=yes # Function NULLIF with numbers
+func_sql_nullif_string=yes # Function NULLIF with strings
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_searched_case=no # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=no # Function simple CASE
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+func_sql_system_user=yes # Function SYSTEM_USER
+func_sql_trim=yes # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=yes # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=no # Group on unused column
+has_true_false=no # TRUE and FALSE
+having=no # Having
+having_with_alias=no # Having with alias
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=yes # hex strings (x'1ace')
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=yes # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=yes # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=+8000000 # max char() size
+max_column_name=128 # column name length
+max_columns=+8192 # Columns in table
+max_conditions=5427 # OR and AND in WHERE
+max_expressions=4075 # simple expressions
+max_index=38 # max index
+max_index_length=+8192 # index length
+max_index_name=128 # index name length
+max_index_part_length=+8000000 # max index part length
+max_index_parts=20 # index parts
+max_index_varchar_part_length=+8000000 # index varchar part length
+max_row_length=377681 # max table row length (without blobs)
+max_row_length_with_null=0 # table row length with nulls (without blobs)
+max_select_alias_name=128 # select alias name length
+max_table_alias_name=128 # table alias name length
+max_table_name=128 # table name length
+max_unique_index=38 # unique indexes
+max_varchar_size=+8000000 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=yes # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+insert_multi_value=yes # Value lists in INSERT
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=yes # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique index
+null_num_expr=no # Is 1+NULL = NULL
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.2.14-my-SMP i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=no # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=no # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=+64 # recursive subqueries
+remember_end_space=yes # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=no # rename table
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=4199664 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=FrontBase 2.1 # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=round # Storage of float values
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=no # temporary tables
+transactions=error # transactions
+truncate_table=no # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=yes # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=yes # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=yes # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=yes # Type bit varying(1 arg)
+type_sql_boolean=yes # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=yes # Type interval day
+type_sql_interval_day_to_hour=yes # Type interval day to hour
+type_sql_interval_day_to_minute=yes # Type interval day to minute
+type_sql_interval_day_to_second=yes # Type interval day to second
+type_sql_interval_hour=yes # Type interval hour
+type_sql_interval_hour_to_minute=yes # Type interval hour to minute
+type_sql_interval_hour_to_second=yes # Type interval hour to second
+type_sql_interval_minute=yes # Type interval minute
+type_sql_interval_minute_to_second=yes # Type interval minute to second
+type_sql_interval_month=yes # Type interval month
+type_sql_interval_second=yes # Type interval second
+type_sql_interval_year=yes # Type interval year
+type_sql_interval_year_to_month=yes # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=yes # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=7999965 # constant string size in where
diff --git a/sql-bench/limits/interbase-dialect1.cfg b/sql-bench/limits/interbase-dialect1.cfg
new file mode 100644
index 00000000..046627be
--- /dev/null
+++ b/sql-bench/limits/interbase-dialect1.cfg
@@ -0,0 +1,514 @@
+#This file is automaticly generated by crash-me 1.57
+
+NEG=no # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=with add # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=no # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=no # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint # Alter table drop foreign key
+alter_drop_primary_key=no # Alter table drop primary key
+alter_drop_unique=no # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=no # Automatic row id
+binary_numbers=yes # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=no # Case insensitive compare
+char_is_space_filled=yes # char are space filled
+column_alias=yes # Column alias
+columns_in_order_by=37 # number of columns in order by
+comment_#=no # # as comment
+comment_--=no # -- as comment (ANSI)
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=1000 # Simultaneous connections (installation default)
+constraint_check=no # Column constraints
+constraint_check_table=no # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.57 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_infinity=no # Supports 'infinity dates
+date_last=no # Supports 9999-12-31 dates
+date_one=no # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=no # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=no # Function ABS
+func_odbc_acos=no # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=no # Function ASIN
+func_odbc_atan=no # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=no # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=no # Function EXP
+func_odbc_floor=no # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=no # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=no # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=no # Function ROUND(2 arg)
+func_odbc_rtrim=no # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=no # Function SIGN
+func_odbc_sin=no # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=no # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=no # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=no # Function LOWER
+func_sql_nullif_num=no # Function NULLIF with numbers
+func_sql_nullif_string=no # Function NULLIF with strings
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=no # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=no # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=yes # Group on unused column
+has_true_false=no # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=no # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=no # insert empty string
+insert_multi_value=no # INSERT with Value lists
+insert_select=no # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=no # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=32767 # max char() size
+max_column_name=18 # column name length
+max_columns=4759 # Columns in table
+max_conditions=2944 # OR and AND in WHERE
+max_expressions=+10000 # simple expressions
+max_index=+64 # max index
+max_index_name=31 # index name length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=249 # index varchar part length
+max_row_length=64744 # max table row length (without blobs)
+max_row_length_with_null=64744 # table row length with nulls (without blobs)
+max_select_alias_name=132 # select alias name length
+max_stack_expression=165 # stacked expressions
+max_table_alias_name=255 # table alias name length
+max_table_name=31 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=10923 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=yes # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique index
+null_num_expr=no # Is 1+NULL = NULL
+nulls_in_unique=no # null combination in unique index
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.4.4-64GB-SMP i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=no # Order by alias
+order_by_function=no # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=yes # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=65535 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=61 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=no # rename table
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=32767 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=6.0.1 # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=round # Storage of float values
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=no # temporary tables
+transactions=error # constant string size in where
+truncate_table=no # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_boolean=no # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=no # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=no # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=no # views
+where_string_size=32767 # constant string size in where
diff --git a/sql-bench/limits/interbase-dialect3.cfg b/sql-bench/limits/interbase-dialect3.cfg
new file mode 100644
index 00000000..fdc93098
--- /dev/null
+++ b/sql-bench/limits/interbase-dialect3.cfg
@@ -0,0 +1,514 @@
+#This file is automaticly generated by crash-me 1.57
+
+NEG=no # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=with add # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=no # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=no # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint # Alter table drop foreign key
+alter_drop_primary_key=no # Alter table drop primary key
+alter_drop_unique=no # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=no # Automatic row id
+binary_numbers=yes # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=no # Case insensitive compare
+char_is_space_filled=yes # char are space filled
+column_alias=yes # Column alias
+columns_in_order_by=37 # number of columns in order by
+comment_#=no # # as comment
+comment_--=no # -- as comment (ANSI)
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=1000 # Simultaneous connections (installation default)
+constraint_check=no # Column constraints
+constraint_check_table=no # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.57 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_infinity=no # Supports 'infinity dates
+date_last=error # Supports 9999-12-31 dates
+date_one=error # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=no # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=no # Function ABS
+func_odbc_acos=no # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=no # Function ASIN
+func_odbc_atan=no # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=no # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=no # Function EXP
+func_odbc_floor=no # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=no # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=no # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=no # Function ROUND(2 arg)
+func_odbc_rtrim=no # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=no # Function SIGN
+func_odbc_sin=no # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=no # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=no # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=no # Function LOWER
+func_sql_nullif_num=no # Function NULLIF with numbers
+func_sql_nullif_string=no # Function NULLIF with strings
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=no # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=no # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=yes # Group on unused column
+has_true_false=no # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=no # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=no # insert empty string
+insert_multi_value=no # INSERT with Value lists
+insert_select=no # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=no # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=32767 # max char() size
+max_columns=4759 # Columns in table
+max_conditions=5888 # OR and AND in WHERE
+max_expressions=+10000 # simple expressions
+max_index=+64 # max index
+max_index_name=31 # index name length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=249 # index varchar part length
+max_row_length=64744 # max table row length (without blobs)
+max_row_length_with_null=64744 # table row length with nulls (without blobs)
+max_select_alias_name=132 # select alias name length
+max_stack_expression=165 # stacked expressions
+max_table_alias_name=255 # table alias name length
+max_table_name=31 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=10923 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=yes # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique index
+null_num_expr=no # Is 1+NULL = NULL
+nulls_in_unique=no # null combination in unique index
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.4.4-64GB-SMP i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=no # Order by alias
+order_by_function=no # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=yes # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=65535 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=61 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=no # rename table
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=32767 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=6.0.1 # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=round # Storage of float values
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=no # temporary tables
+transactions=error # constant string size in where
+truncate_table=no # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_=no # Type
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_boolean=no # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=no # views
+where_string_size=32767 # constant string size in where
diff --git a/sql-bench/limits/interbase-superserver.cfg b/sql-bench/limits/interbase-superserver.cfg
new file mode 100644
index 00000000..87da0d06
--- /dev/null
+++ b/sql-bench/limits/interbase-superserver.cfg
@@ -0,0 +1,514 @@
+#This file is automaticly generated by crash-me 1.57
+
+NEG=no # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=with add # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=no # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=no # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint # Alter table drop foreign key
+alter_drop_primary_key=no # Alter table drop primary key
+alter_drop_unique=no # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=no # Automatic row id
+binary_numbers=yes # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=no # Case insensitive compare
+char_is_space_filled=yes # char are space filled
+column_alias=yes # Column alias
+columns_in_order_by=37 # number of columns in order by
+comment_#=no # # as comment
+comment_--=no # -- as comment (ANSI)
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=395 # Simultaneous connections (installation default)
+constraint_check=no # Column constraints
+constraint_check_table=no # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=no # crash me safe
+crash_me_version=1.57 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_infinity=no # Supports 'infinity dates
+date_last=error # Supports 9999-12-31 dates
+date_one=error # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=no # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=no # Function ABS
+func_odbc_acos=no # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=no # Function ASIN
+func_odbc_atan=no # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=no # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=no # Function EXP
+func_odbc_floor=no # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=no # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=no # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=no # Function ROUND(2 arg)
+func_odbc_rtrim=no # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=no # Function SIGN
+func_odbc_sin=no # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=no # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=no # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=no # Function LOWER
+func_sql_nullif_num=no # Function NULLIF with numbers
+func_sql_nullif_string=no # Function NULLIF with strings
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=no # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=no # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=yes # Group on unused column
+has_true_false=no # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=no # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=no # insert empty string
+insert_multi_value=no # INSERT with Value lists
+insert_select=no # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=no # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=32745 # max char() size
+max_column_name=18 # column name length
+max_columns=4759 # Columns in table
+max_conditions=441504 # OR and AND in WHERE
+max_expressions=5486 # simple expressions
+max_index=+64 # max index
+max_index_name=31 # index name length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=218 # index varchar part length
+max_row_length=64744 # max table row length (without blobs)
+max_row_length_with_null=64744 # table row length with nulls (without blobs)
+max_select_alias_name=132 # select alias name length
+max_stack_expression=165 # stacked expressions
+max_table_alias_name=255 # table alias name length
+max_table_name=31 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=32745 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=yes # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique index
+null_num_expr=no # Is 1+NULL = NULL
+nulls_in_unique=no # null combination in unique index
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.4.4-64GB-SMP i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=no # Order by alias
+order_by_function=no # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=yes # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=61 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=no # rename table
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=32767 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=6.0.1 # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=round # Storage of float values
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=no # temporary tables
+transactions=error # constant string size in where
+truncate_table=no # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_boolean=no # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=no # views
+where_string_size=32767 # constant string size in where
diff --git a/sql-bench/limits/interbase.cfg b/sql-bench/limits/interbase.cfg
new file mode 100644
index 00000000..994799e5
--- /dev/null
+++ b/sql-bench/limits/interbase.cfg
@@ -0,0 +1,472 @@
+#This file is automaticly generated by crash-me 1.40
+
+NEG=no # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=no # Alter table add foreign key
+alter_add_multi_col=with add # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=no # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=no # Alter table drop foreign key
+alter_drop_primary_key=no # Alter table drop primary key
+alter_drop_unique=no # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=no # Automatic rowid
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+comment_#=no # # as comment
+comment_--=no # -- as comment
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=10 # Simultaneous connections
+constraint_check=no # Column constraints
+constraint_check_table=no # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=no # crash me safe
+crash_me_version=1.40 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=ignored # create index
+create_schema=no # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_last=no # Supports 9999-12-31 dates
+date_one=no # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=no # Function ABS
+func_odbc_acos=no # Function ACOS
+func_odbc_ascii=no # Function ASCII
+func_odbc_asin=no # Function ASIN
+func_odbc_atan=no # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=no # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=no # Function EXP
+func_odbc_floor=no # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=no # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=no # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=no # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=no # Function ROUND(2 arg)
+func_odbc_rtrim=no # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=no # Function SIGN
+func_odbc_sin=no # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=no # Function SQRT
+func_odbc_substring=no # Function ODBC SUBSTRING
+func_odbc_tan=no # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=no # Function LOWER
+func_sql_nullif=no # Function NULLIF
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=no # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=no # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=no # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=+100 # big expressions
+max_columns=4743 # Columns in table
+max_conditions=441504 # OR and AND in WHERE
+max_expressions=+100 # simple expressions
+max_index_name=31 # index name length
+max_select_alias_name=255 # select alias name length
+max_stack_expression=100 # stacked expressions
+max_table_alias_name=255 # table alias name length
+max_table_name=32 # table name length
+minus=no # minus
+minus_neg=yes # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+insert_multi_value=no # Value lists in INSERT
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is 'a' || NULL = NULL
+null_in_index=no # null in index
+null_in_unique=no # null in unique
+null_num_expr=no # Is 1+NULL = NULL
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.2.14-5.0 i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=no # Order by alias
+order_by_function=no # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=error # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=yes # Allows ' and " as string markers
+recursive_subqueries=+64 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=32767 # constant string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=6.0Beta # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=truncate # Storage of float values
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+tempoary_table=no # temporary tables
+transactions=error # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=no # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=no # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=no # views
+where_string_size=32767 # constant string size in where
diff --git a/sql-bench/limits/mimer.cfg b/sql-bench/limits/mimer.cfg
new file mode 100644
index 00000000..b3369f9a
--- /dev/null
+++ b/sql-bench/limits/mimer.cfg
@@ -0,0 +1,491 @@
+#This file is automaticly generated by crash-me 1.38
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=yes # Alter table add many columns
+alter_add_primary_key=yes # Alter table add primary key
+alter_add_unique=yes # Alter table add unique
+alter_alter_col=yes # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=yes # Alter table drop foreign key
+alter_drop_primary_key=yes # Alter table drop primary key
+alter_drop_unique=yes # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+automatic_rowid=no # Automatic rowid
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=yes # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=no # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=50 # Simultaneous connections
+constraint_check=yes # Column constraints
+constraint_check_table=yes # Table constraints
+constraint_null=no # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.38 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=yes # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_last=yes # Supports 9999-12-31 dates
+date_one=yes # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=yes # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_circular=yes # Circular foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=yes # Function ASCII_CHAR
+func_extra_ascii_code=yes # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=yes # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=yes # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=yes # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=yes # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=yes # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=error # Function REAL LENGTH
+func_odbc_length_without_space=yes # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=yes # Function TIMESTAMPADD
+func_odbc_timestampdiff=yes # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=yes # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=yes # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=yes # Function CHAR_LENGTH
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_coalesce=yes # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=yes # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=yes # Function LOCALTIME
+func_sql_localtimestamp=yes # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif=yes # Function NULLIF
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_searched_case=yes # Function searched CASE
+func_sql_session_user=yes # Function SESSION_USER
+func_sql_simple_case=yes # Function simple CASE
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+func_sql_system_user=yes # Function SYSTEM_USER
+func_sql_trim=yes # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=yes # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=15000 # max char() size
+max_column_name=128 # column name length
+max_columns=252 # Columns in table
+max_conditions=1020 # OR and AND in WHERE
+max_expressions=1019 # simple expressions
+max_index=+64 # max index
+max_index_length=+8192 # index length
+max_index_name=128 # index name length
+max_index_part_length=15000 # max index part length
+max_index_parts=32 # index parts
+max_index_varchar_part_length=15000 # index varchar part length
+max_row_length=15925 # max table row length (without blobs)
+max_row_length_with_null=15925 # table row length with nulls (without blobs)
+max_select_alias_name=128 # select alias name length
+max_stack_expression=62 # stacked expressions
+max_table_alias_name=128 # table alias name length
+max_table_name=128 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=15000 # max varchar() size
+minus=no # minus
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=yes # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+insert_multi_value=no # Value lists in INSERT
+natural_join=yes # natural join
+natural_left_outer_join=yes # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=yes # Is 'a' || cast(NULL as char(1)) = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Windows NT 4.0 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=no # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+primary_key_in_create=yes # primary key in create table
+psm_functions=yes # PSM functions (ANSI SQL)
+psm_modules=yes # PSM modules (ANSI SQL)
+psm_procedures=yes # PSM procedures (ANSI SQL)
+psm_trigger=yes # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=15 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+repeat_string_size=15000 # return string size from function
+right_outer_join=yes # right outer join
+round_on_store=error # Correct rounding when storing float values
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=no # SELECT with LIMIT
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=15000 # constant string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=MIMER 8.2.0C # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+tempoary_table=no # temporary tables
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=yes # Type interval day
+type_sql_interval_day_to_hour=yes # Type interval day to hour
+type_sql_interval_day_to_minute=yes # Type interval day to minute
+type_sql_interval_day_to_second=yes # Type interval day to second
+type_sql_interval_hour=yes # Type interval hour
+type_sql_interval_hour_to_minute=yes # Type interval hour to minute
+type_sql_interval_hour_to_second=yes # Type interval hour to second
+type_sql_interval_minute=yes # Type interval minute
+type_sql_interval_minute_to_second=yes # Type interval minute to second
+type_sql_interval_month=yes # Type interval month
+type_sql_interval_second=yes # Type interval second
+type_sql_interval_year=yes # Type interval year
+type_sql_interval_year_to_month=yes # Type interval year to month
+type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=no # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+views=yes # views
+where_string_size=15000 # constant string size in where
diff --git a/sql-bench/limits/ms-sql.cfg b/sql-bench/limits/ms-sql.cfg
new file mode 100644
index 00000000..aad17231
--- /dev/null
+++ b/sql-bench/limits/ms-sql.cfg
@@ -0,0 +1,523 @@
+#This file is automaticly generated by crash-me 1.54
+
+NEG=yes # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=without add # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=yes # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint # Alter table drop foreign key
+alter_drop_primary_key=no # Alter table drop primary key
+alter_drop_unique=with constraint # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+automatic_rowid=no # Automatic row id
+binary_numbers=yes # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=yes # Case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=no # # as comment
+comment_--=yes # -- as comment (ANSI)
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment (ANSI)
+compute=yes # Compute
+connections=1000 # Simultaneous connections (installation default)
+constraint_check=no # Column constraints
+constraint_check_table=yes # Table constraints
+constraint_null=yes # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.54 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=yes # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=yes # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_infinity=no # Supports 'infinity dates
+date_last=no # Supports 9999-12-31 dates
+date_one=no # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+dont_require_cast_to_float=yes # No need to cast from integer to float
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=with 'table.index' # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=no # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_circular=no # Circular foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=yes # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=yes # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=yes # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=yes # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=yes # Function DATEADD
+func_extra_datediff=yes # Function DATEDIFF
+func_extra_datename=yes # Function DATENAME
+func_extra_datepart=yes # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=yes # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=yes # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=yes # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=yes # Function REPLICATE
+func_extra_reverse=yes # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=yes # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=yes # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=yes # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=yes # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=yes # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=error # Function REAL LENGTH
+func_odbc_length_without_space=yes # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=error # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=error # Function TIMESTAMPADD
+func_odbc_timestampdiff=error # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=yes # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=yes # Function COALESCE
+func_sql_concat_as_||=no # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=yes # Function CURRENT_USER
+func_sql_extract_sql=no # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif_num=yes # Function NULLIF with numbers
+func_sql_nullif_string=yes # Function NULLIF with strings
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=yes # Function searched CASE
+func_sql_session_user=yes # Function SESSION_USER
+func_sql_simple_case=yes # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=yes # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=yes # Group on unused column
+has_true_false=no # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=no # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=yes # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=yes # insert empty string
+insert_multi_value=no # INSERT with Value lists
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=8000 # max char() size
+max_column_name=128 # column name length
+max_columns=1024 # Columns in table
+max_conditions=13104 # OR and AND in WHERE
+max_expressions=656 # simple expressions
+max_index=+64 # max index
+max_index_length=900 # index length
+max_index_name=128 # index name length
+max_index_part_length=900 # max index part length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=900 # index varchar part length
+max_row_length=8036 # max table row length (without blobs)
+max_row_length_with_null=8036 # table row length with nulls (without blobs)
+max_select_alias_name=128 # select alias name length
+max_stack_expression=164 # stacked expressions
+max_table_alias_name=128 # table alias name length
+max_table_name=128 # table name length
+max_text_size=+8000000 # max text or blob size
+max_unique_index=+64 # unique indexes
+max_varchar_size=8000 # max varchar() size
+minus=yes # minus
+minus_incompat=yes # minus (incompatible lists)
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=no # Is concat('a',NULL) = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique index
+null_num_expr=yes # Is 1+NULL = NULL
+nulls_in_unique=no # null combination in unique index
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Microsoft Windows 2000 [Version 5.00.2195] # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=yes # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=yes # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=40 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=no # rename table
+right_outer_join=yes # right outer join
+rowid=no # Type for row id
+select_constants=yes # Select constants
+select_limit=with TOP # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=16777207 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=Microsoft SQL Server 2000 - 8.00.194 (Intel X86) # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=round # Storage of float values
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=no # temporary tables
+transactions=yes # transactions
+truncate_table=no # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=yes # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=yes # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=yes # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=yes # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_boolean=no # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=no # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=no # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=8000 # constant string size in where
diff --git a/sql-bench/limits/ms-sql65.cfg b/sql-bench/limits/ms-sql65.cfg
new file mode 100644
index 00000000..488ce14d
--- /dev/null
+++ b/sql-bench/limits/ms-sql65.cfg
@@ -0,0 +1,418 @@
+#This file is automaticly generated by crash-me 1.19a
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_change_col=no # Alter table change column
+alter_drop_col=no # Alter table drop column
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=yes # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=yes # /* */ as comment
+compute=yes # Compute
+connections=14 # Simultaneous connections
+crash_me_safe=no # crash me safe
+crash_me_version=1.19a # crash me version
+create_default=yes # default value for column
+create_index=no # create index
+cross_join=yes # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_index=no # drop index
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_atn2=yes # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=yes # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=yes # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=yes # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=yes # Function DATEADD
+func_extra_datediff=yes # Function DATEDIFF
+func_extra_datename=yes # Function DATENAME
+func_extra_datepart=yes # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=yes # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=yes # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_max_num=no # Function MAX on numbers
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_min_num=no # Function MIN on numbers
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=yes # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=yes # Function REPLICATE
+func_extra_reverse=yes # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=yes # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=yes # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=yes # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=yes # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=error # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user=yes # Function USER
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_case=yes # Function CASE
+func_sql_cast=no # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_concat_as_||=no # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_date()=no # Function CURRENT_DATE()
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_time()=no # Function CURRENT_TIME()
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP()
+func_sql_lower=yes # Function LOWER
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_extra_sysdate=no # Function SYSDATE
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Test nulls in group by
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=16 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=4 # big expressions
+max_char_size=255 # max char() size
+max_column_name=30 # column name length
+max_columns=250 # Columns in table
+max_conditions=3144 # OR and AND in WHERE
+max_expressions=6972 # simple expressions
+max_index_length=900 # index length
+max_index_part_length=255 # max index part length
+max_index_parts=15 # index parts
+max_index_varchar_part_length=255 # index varchar part length
+max_row_length=1960 # max table row length (without blobs)
+max_row_length_with_null=1942 # table row length with nulls (without blobs)
+max_select_alias_name=30 # select alias name length
+max_stack_expression=97 # stacked expressions
+max_table_alias_name=30 # table alias name length
+max_table_name=30 # table name length
+max_text_size=65505 # max text or blob size
+max_unique_index=+64 # unique indexes
+max_varchar_size=255 # max varchar() size
+minus=yes # minus
+minus_neg=no # Calculate 1--1
+multi_drop=yes # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=error # Is 'a' + NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Windows NT Version 4.0 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_position=yes # Order by position
+primary_key_in_create=yes # primary key in create table
+query_size=16777216 # query size
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=15 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=no # Remembers end space in varchar()
+right_outer_join=yes # right outer join
+select_constants=yes # Select constants
+select_string_size=65527 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=Microsoft SQL server 6.5 # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_wildcard=yes # Select table_name.*
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_char16=no # Type char16
+type_extra_char2=no # Type char2
+type_extra_char4=no # Type char4
+type_extra_char8=no # Type char8
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=yes # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_nvarchar(2_arg)=no # Type nvarchar(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=yes # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=yes # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_sql_smallint=yes # Type smallint
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=no # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_extra_double=no # Type double
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_extra_float(2_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_year=no # Type interval year
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_time=no # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=255 # constant string size in where
diff --git a/sql-bench/limits/msql.cfg b/sql-bench/limits/msql.cfg
new file mode 100644
index 00000000..382f3e2a
--- /dev/null
+++ b/sql-bench/limits/msql.cfg
@@ -0,0 +1,227 @@
+#This file is automaticly generated by crash-me 1.32
+
+NEG=no # update of column= -column
+alter_add_col=no # Alter table add column
+alter_add_multi_col=no # Alter table add many columns
+alter_alter_col=no # Alter table alter column
+alter_change_col=no # Alter table change column
+alter_drop_col=no # Alter table drop column
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=no # atomic updates
+binary_items=no # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+column_alias=no # Column alias
+columns_in_order_by=+64 # number of columns in order by
+comment_#=yes # # as comment
+comment_--=no # -- as comment
+comment_/**/=no # /* */ as comment
+compute=no # Compute
+connections=200 # Simultaneous connections
+crash_me_safe=yes # crash me safe
+crash_me_version=1.32 # crash me version
+create_default=no # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+double_quotes=no # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=with 'FROM' # drop index
+end_colon=no # allows end ';'
+except=no # except
+except_all=no # except all
+foreign_key_syntax=no # foreign key syntax
+full_outer_join=no # full outer join
+func_where_between=no # Function BETWEEN
+func_where_eq_all=no # Function = ALL
+func_where_eq_any=no # Function = ANY
+func_where_eq_some=no # Function = SOME
+func_where_exists=no # Function EXISTS
+func_where_in_num=no # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=no # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=no # Function NOT BETWEEN
+func_where_not_exists=no # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=no # Functions
+group_by=no # Group by
+group_by_alias=no # Group by alias
+group_by_null=no # group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=no # Group functions with distinct
+group_functions=no # Group functions
+having=no # Having
+having_with_alias=no # Having with alias
+having_with_group=no # Having with group function
+ignore_end_space=no # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=yes # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=no # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=+64 # tables in join
+left_outer_join=no # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_char_size=131038 # max char() size
+max_columns=75 # Columns in table
+max_conditions=72 # OR and AND in WHERE
+max_index=+64 # max index
+max_index_length=+8192 # index length
+max_index_name=35 # index name length
+max_index_part_length=+8192 # index part length
+max_index_parts=9 # index parts
+max_row_length=19125 # max table row length (without blobs)
+max_row_length_with_null=19125 # table row length with nulls (without blobs)
+max_table_alias_name=34 # table alias name length
+max_table_name=35 # table name length
+max_unique_index=+64 # max unique index
+minus=no # minus
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+insert_multi_value=no # Value lists in INSERT
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_in_index=no # null in index
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.2.10 i686 # crash-me tested on
+order_by=yes # Order by
+order_by_function=no # Order by function
+order_by_position=no # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+primary_key_in_create=no # primary key in create table
+query_size=131069 # query size
+quote_with_"=no # Allows ' and " as string markers
+remember_end_space=yes # Remembers end space in char()
+remember_end_space_varchar=no # Remembers end space in varchar()
+right_outer_join=no # right outer join
+rowid=no # Type for row id
+select_constants=no # Select constants
+select_limit=yes # SELECT with LIMIT
+select_limit2=no # SELECT with LIMIT #,#
+select_table_update=no # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=mSQL server version 2.0.11 # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=no # subqueries
+table_alias=yes # Table alias
+table_name_case=no # case independent table names
+table_wildcard=no # Select table_name.*
+tempoary_table=no # temporary tables
+transactions=no # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=yes # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=yes # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=yes # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=no # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=no # Type dec(2 arg)
+type_sql_decimal(2_arg)=no # Type decimal(2 arg)
+type_sql_double_precision=no # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=no # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_sql_numeric(2_arg)=no # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=no # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=no # Type varchar(1 arg)
+union=no # union
+union_all=no # union all
+unique_in_create=no # unique in create table
+views=no # views
+where_string_size=131035 # constant string size in where
diff --git a/sql-bench/limits/mysql-3.22.cfg b/sql-bench/limits/mysql-3.22.cfg
new file mode 100644
index 00000000..395673ee
--- /dev/null
+++ b/sql-bench/limits/mysql-3.22.cfg
@@ -0,0 +1,452 @@
+#This file is automaticly generated by crash-me 1.36
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_add_multi_col=yes # Alter table add many columns
+alter_alter_col=yes # Alter table alter column
+alter_change_col=yes # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_modify_col=yes # Alter table modify column
+alter_rename_table=yes # Alter table rename table
+atomic_updates=no # atomic updates
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=yes # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=yes # # as comment
+comment_--=no # -- as comment
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=101 # Simultaneous connections
+constraint_check=no # CHECK constraint
+constraint_null=yes # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.36 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_table_select=no # create table from select
+cross_join=yes # cross join (same as from a,b)
+date_as_string=yes # String functions on date columns
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=yes # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=yes # drop table if exists
+drop_index=with 'ON' # drop index
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=no # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=yes # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=yes # Function AND as '&&'
+func_extra_<>=yes # Function <> in SELECT
+func_extra_==yes # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=yes # Function AND and OR in SELECT
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=yes # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=yes # Function BETWEEN in SELECT
+func_extra_binary_shifts=yes # Function << and >> (bitwise shifts)
+func_extra_bit_count=yes # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_coalesce=no # Function COALESCE
+func_extra_concat_as_+=error # Function concatenation with +
+func_extra_concat_list=yes # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=yes # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=yes # Function ELT
+func_extra_encrypt=yes # Function ENCRYPT
+func_extra_field=yes # Function FIELD
+func_extra_format=yes # Function FORMAT
+func_extra_from_days=yes # Function FROM_DAYS
+func_extra_from_unixtime=yes # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=yes # Function GREATEST
+func_extra_if=yes # Function IF
+func_extra_in_num=yes # Function IN on numbers in SELECT
+func_extra_in_str=yes # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=yes # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=yes # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=yes # Function LAST_INSERT_ID
+func_extra_least=yes # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=yes # Function LIKE in SELECT
+func_extra_like_escape=yes # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=yes # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=yes # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=yes # Function NOT in SELECT
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=yes # Function PASSWORD
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=yes # Function PERIOD_ADD
+func_extra_period_diff=yes # Function PERIOD_DIFF
+func_extra_pow=yes # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=yes # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=yes # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=yes # Function RPAD
+func_extra_sec_to_time=yes # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=yes # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=yes # Function SUBSTRING_INDEX
+func_extra_sysdate=yes # Function SYSDATE
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=yes # Function TIME_TO_SEC
+func_extra_to_days=yes # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=error # Function TRIM; Many char extension
+func_extra_trim_substring=yes # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=yes # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=yes # Function VERSION
+func_extra_weekday=yes # Function WEEKDAY
+func_extra_|=yes # Function | (bitwise or)
+func_extra_||=yes # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=yes # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=error # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=yes # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_case=no # Function CASE
+func_sql_cast=no # Function CAST
+func_sql_char_length=yes # Function CHAR_LENGTH
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_concat_as_||=error # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_lower=yes # Function LOWER
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=yes # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=no # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=no # Function = ALL
+func_where_eq_any=no # Function = ANY
+func_where_eq_some=no # Function = SOME
+func_where_exists=no # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=no # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=yes # Group by alias
+group_by_null=yes # group on column with null values
+group_by_position=yes # Group by position
+group_distinct_functions=no # Group functions with distinct
+group_func_extra_bit_and=yes # Group function BIT_AND
+group_func_extra_bit_or=yes # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=yes # Group function STD
+group_func_extra_stddev=yes # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=no # Group function COUNT(DISTINCT expr)
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=yes # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=yes # index in create table
+index_namespace=yes # different namespace for index
+index_parts=yes # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=yes # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=32 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=yes # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=1 # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=255 # max char() size
+max_column_name=64 # column name length
+max_columns=2364 # Columns in table
+max_conditions=85660 # OR and AND in WHERE
+max_expressions=1392 # simple expressions
+max_index=16 # max index
+max_index_length=256 # index length
+max_index_name=64 # index name length
+max_index_part_length=255 # max index part length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=255 # index varchar part length
+max_row_length=65534 # max table row length (without blobs)
+max_row_length_with_null=65501 # table row length with nulls (without blobs)
+max_select_alias_name=+512 # select alias name length
+max_stack_expression=1392 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=64 # table name length
+max_text_size=1048543 # max text or blob size
+max_unique_index=16 # unique indexes
+max_varchar_size=255 # max varchar() size
+minus=no # minus
+minus_neg=yes # Calculate 1--1
+multi_drop=yes # many tables to drop table
+multi_strings=yes # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+insert_multi_value=yes # Value lists in INSERT
+natural_join=no # natural join
+natural_left_outer_join=yes # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=yes # Is concat('a',NULL) = NULL
+null_in_index=no # null in index
+null_in_unique=no # null in unique
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Linux 2.2.13-my-SMP i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=no # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+primary_key_in_create=yes # primary key in create table
+query_size=1048574 # query size
+quote_ident_with_"=error # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=yes # Allows ' and " as string markers
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=no # Remembers end space in varchar()
+repeat_string_size=1048576 # return string size from function
+right_outer_join=no # right outer join
+round_on_store=yes # Correct rounding when storing float values
+rowid=auto_increment # Type for row id
+select_constants=yes # Select constants
+select_limit=yes # SELECT with LIMIT
+select_limit2=yes # SELECT with LIMIT #,#
+select_string_size=1048565 # constant string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=MySQL 3.22.29 debug # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=no # subqueries
+table_alias=yes # Table alias
+table_name_case=no # case independent table names
+table_wildcard=yes # Select table_name.*
+tempoary_table=no # temporary tables
+transactions=no # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=yes # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=yes # Type char(1 arg) binary
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_double=yes # Type double
+type_extra_enum(1_arg)=yes # Type enum(1 arg)
+type_extra_float(2_arg)=yes # Type float(2 arg)
+type_extra_float4=yes # Type float4
+type_extra_float8=yes # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=yes # Type int(1 arg) zerofill
+type_extra_int1=yes # Type int1
+type_extra_int2=yes # Type int2
+type_extra_int3=yes # Type int3
+type_extra_int4=yes # Type int4
+type_extra_int8=yes # Type int8
+type_extra_int_auto_increment=yes # Type int not null auto_increment
+type_extra_int_unsigned=yes # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=yes # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=yes # Type mediumint
+type_extra_mediumtext=yes # Type mediumtext
+type_extra_middleint=yes # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=yes # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=yes # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=no # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=no # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=no # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=no # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=no # union
+union_all=no # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=no # views
+where_string_size=1048540 # constant string size in where
diff --git a/sql-bench/limits/mysql-3.23.cfg b/sql-bench/limits/mysql-3.23.cfg
new file mode 100644
index 00000000..a496bd7b
--- /dev/null
+++ b/sql-bench/limits/mysql-3.23.cfg
@@ -0,0 +1,523 @@
+#This file is automaticly generated by crash-me 1.57
+
+NEG=yes # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=yes # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=yes # Alter table add unique
+alter_alter_col=yes # Alter table alter column default
+alter_change_col=yes # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_drop_constraint=no # Alter table drop constraint
+alter_drop_foreign_key=with drop foreign key # Alter table drop foreign key
+alter_drop_primary_key=drop primary key # Alter table drop primary key
+alter_drop_unique=with drop key # Alter table drop unique
+alter_modify_col=yes # Alter table modify column
+alter_rename_table=yes # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=_rowid # Automatic row id
+binary_numbers=no # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=yes # Case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=yes # # as comment
+comment_--=yes # -- as comment (ANSI)
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment (ANSI)
+compute=no # Compute
+connections=101 # Simultaneous connections (installation default)
+constraint_check=no # Column constraints
+constraint_check_table=no # Table constraints
+constraint_null=yes # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.57 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=yes # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=yes # create table from select
+cross_join=yes # cross join (same as from a,b)
+date_as_string=yes # String functions on date columns
+date_infinity=error # Supports 'infinity dates
+date_last=yes # Supports 9999-12-31 dates
+date_one=yes # Supports 0001-01-01 dates
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=yes # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+dont_require_cast_to_float=yes # No need to cast from integer to float
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=yes # drop table if exists
+drop_index=with 'ON' # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=yes # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=no # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=yes # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=yes # Function AND as '&&'
+func_extra_<>=yes # Function <> in SELECT
+func_extra_==yes # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=yes # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=yes # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=yes # Function BETWEEN in SELECT
+func_extra_binary_shifts=yes # Function << and >> (bitwise shifts)
+func_extra_bit_count=yes # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=error # Function concatenation with +
+func_extra_concat_list=yes # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=yes # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=yes # Function ELT
+func_extra_encrypt=yes # Function ENCRYPT
+func_extra_field=yes # Function FIELD
+func_extra_format=yes # Function FORMAT
+func_extra_from_days=yes # Function FROM_DAYS
+func_extra_from_unixtime=yes # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=yes # Function GREATEST
+func_extra_if=yes # Function IF
+func_extra_in_num=yes # Function IN on numbers in SELECT
+func_extra_in_str=yes # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=yes # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=yes # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=yes # Function LAST_INSERT_ID
+func_extra_least=yes # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=yes # Function LIKE in SELECT
+func_extra_like_escape=yes # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=yes # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=yes # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=yes # Function NOT in SELECT
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=yes # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=yes # Function PERIOD_ADD
+func_extra_period_diff=yes # Function PERIOD_DIFF
+func_extra_pow=yes # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=yes # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=yes # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=yes # Function RPAD
+func_extra_sec_to_time=yes # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=yes # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=yes # Function SUBSTRING_INDEX
+func_extra_sysdate=yes # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=yes # Function TIME_TO_SEC
+func_extra_to_days=yes # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=error # Function TRIM; Many char extension
+func_extra_trim_substring=yes # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=yes # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=yes # Function VERSION
+func_extra_weekday=yes # Function WEEKDAY
+func_extra_|=yes # Function | (bitwise or)
+func_extra_||=yes # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=yes # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=error # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=yes # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=no # Function CAST
+func_sql_char_length=error # Function CHAR_LENGTH
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_coalesce=yes # Function COALESCE
+func_sql_concat_as_||=error # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif_num=yes # Function NULLIF with numbers
+func_sql_nullif_string=yes # Function NULLIF with strings
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_searched_case=yes # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=yes # Function simple CASE
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=yes # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=no # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=no # Function = ALL
+func_where_eq_any=no # Function = ANY
+func_where_eq_some=no # Function = SOME
+func_where_exists=no # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=no # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=yes # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=yes # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=yes # Group function BIT_AND
+group_func_extra_bit_or=yes # Group function BIT_OR
+group_func_extra_count_distinct_list=yes # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=yes # Group function STD
+group_func_extra_stddev=yes # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=yes # Group on unused column
+has_true_false=no # TRUE and FALSE
+having=yes # Having
+having_with_alias=yes # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=no # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=yes # index in create table
+index_namespace=yes # different namespace for index
+index_parts=yes # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=yes # insert empty string
+insert_multi_value=yes # INSERT with Value lists
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=yes # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=63 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=yes # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=1 # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=255 # max char() size
+max_column_name=64 # column name length
+max_columns=3398 # Columns in table
+max_conditions=85660 # OR and AND in WHERE
+max_expressions=1837 # simple expressions
+max_index=32 # max index
+max_index_length=500 # index length
+max_index_name=64 # index name length
+max_index_part_length=255 # max index part length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=255 # index varchar part length
+max_row_length=65534 # max table row length (without blobs)
+max_row_length_with_null=65502 # table row length with nulls (without blobs)
+max_select_alias_name=+512 # select alias name length
+max_stack_expression=1837 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=64 # table name length
+max_text_size=1048543 # max text or blob size
+max_unique_index=32 # unique indexes
+max_varchar_size=255 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=yes # Calculate 1--1
+multi_drop=yes # many tables to drop table
+multi_null_in_unique=yes # null in unique index
+multi_strings=yes # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=yes # natural join
+natural_join_incompat=yes # natural join (incompatible lists)
+natural_left_outer_join=yes # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=yes # Is concat('a',NULL) = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique index
+null_num_expr=yes # Is 1+NULL = NULL
+nulls_in_unique=yes # null combination in unique index
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Linux 2.2.13-SMP alpha # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=yes # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=1048574 # query size
+quote_ident_with_"=error # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=yes # ` as identifier quote
+quote_with_"=yes # Allows ' and " as string markers
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=no # Remembers end space in varchar()
+rename_table=yes # rename table
+repeat_string_size=1047552 # return string size from function
+right_outer_join=yes # right outer join
+rowid=auto_increment # Type for row id
+select_constants=yes # Select constants
+select_limit=with LIMIT # LIMIT number of rows
+select_limit2=yes # SELECT with LIMIT #,#
+select_string_size=1048565 # constant string size in SELECT
+select_table_update=no # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=MySQL 3.23.39 debug # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=round # Storage of float values
+subqueries=no # subqueries
+table_alias=yes # Table alias
+table_name_case=no # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=yes # temporary tables
+transactions=yes # constant string size in where
+truncate_table=yes # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=yes # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=yes # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_double=yes # Type double
+type_extra_enum(1_arg)=yes # Type enum(1 arg)
+type_extra_float(2_arg)=yes # Type float(2 arg)
+type_extra_float4=yes # Type float4
+type_extra_float8=yes # Type float8
+type_extra_image=no # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=yes # Type int(1 arg) zerofill
+type_extra_int1=yes # Type int1
+type_extra_int2=yes # Type int2
+type_extra_int3=yes # Type int3
+type_extra_int4=yes # Type int4
+type_extra_int8=yes # Type int8
+type_extra_int_auto_increment=yes # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=yes # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=yes # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=yes # Type mediumint
+type_extra_mediumtext=yes # Type mediumtext
+type_extra_middleint=yes # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=yes # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=yes # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=yes # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_boolean=no # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=no # union
+union_all=no # union all
+union_all_incompat=no # union all (incompatible lists)
+union_incompat=no # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+user_comment=Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; ccc + cxx # comment
+views=no # views
+where_string_size=1048539 # constant string size in where
diff --git a/sql-bench/limits/mysql-4.0.cfg b/sql-bench/limits/mysql-4.0.cfg
new file mode 100644
index 00000000..6a23be36
--- /dev/null
+++ b/sql-bench/limits/mysql-4.0.cfg
@@ -0,0 +1,7290 @@
+#This file is automaticly generated by crash-me 1.61
+
+NEG=yes # update of column= -column
+ ###< create table crash_q (a integer)
+ ###> OK
+ ###< insert into crash_q values(10)
+ ###> OK
+ ###< update crash_q set a=-a
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+ ### Check if numeric_null (NULL) is 'NULL'
+ ### Check if numeric_null (NULL) is 'NULL'
+ ### Check if numeric_null (NULL) is 'NULL'
+alter_add_col=yes # Alter table add column
+ ###< alter table crash_q add d integer
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_add_constraint=yes # Alter table add constraint
+ ###< alter table crash_q add constraint c2 check(a > b)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_add_foreign_key=no # Alter table add foreign key
+ ###< alter table crash_q add constraint f1 foreign key(c1)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
+ ###< references crash_q1(c1)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'references crash_q1(c1)' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+alter_add_multi_col=yes # Alter table add many columns
+ ###< alter table crash_q add (f integer,g integer)
+ ###> OK
+alter_add_primary_key=with constraint # Alter table add primary key
+ ###< alter table crash_q1 add constraint p1 primary key(c1)
+ ###> OK
+alter_add_unique=yes # Alter table add unique
+ ###< alter table crash_q add constraint u1 unique(c1)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_alter_col=yes # Alter table alter column default
+ ###< alter table crash_q alter b set default 10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_change_col=yes # Alter table change column
+ ###< alter table crash_q change a e char(50)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_drop_col=yes # Alter table drop column
+ ###< alter table crash_q drop column b
+ ###> OK
+alter_drop_constraint=no # Alter table drop constraint
+ ###< alter table crash_q drop constraint c2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint c2' at line 1
+ ###
+ ###< alter table crash_q drop constraint c2 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint c2 restrict' at line 1
+alter_drop_foreign_key=with drop foreign key # Alter table drop foreign key
+ ###< alter table crash_q drop constraint f1
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint f1' at line 1
+ ###
+ ###< alter table crash_q drop constraint f1 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint f1 restrict' at line 1
+ ###
+ ###< alter table crash_q drop foreign key f1
+ ###> OK
+alter_drop_primary_key=drop primary key # Alter table drop primary key
+ ###< alter table crash_q1 drop constraint p1 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint p1 restrict' at line 1
+ ###
+ ###< alter table crash_q1 drop primary key
+ ###> OK
+alter_drop_unique=with drop key # Alter table drop unique
+ ###< alter table crash_q drop constraint u1
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint u1' at line 1
+ ###
+ ###< alter table crash_q drop constraint u1 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint u1 restrict' at line 1
+ ###
+ ###< alter table crash_q drop key u1
+ ###> OK
+alter_modify_col=yes # Alter table modify column
+ ###< alter table crash_q modify c1 CHAR(20)
+ ###> OK
+alter_rename_table=yes # Alter table rename table
+ ###< alter table crash_q rename to crash_q1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+atomic_updates=no # atomic updates
+ ###< create table crash_q (a integer not null,primary key (a))
+ ###> OK
+ ###< insert into crash_q values (2)
+ ###> OK
+ ###< insert into crash_q values (3)
+ ###> OK
+ ###< insert into crash_q values (1)
+ ###> OK
+ ###< update crash_q set a=a+1
+ ###> execute error:Duplicate entry '3' for key 1
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+automatic_rowid=_rowid # Automatic row id
+ ###< create table crash_q (a int not null, primary key(a))
+ ###> OK
+ ###< insert into crash_q values (1)
+ ###> OK
+ ###< select _rowid from crash_q
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+binary_numbers=no # binary numbers (0b1001)
+ ###< select 0b1001
+ ###> execute error:Unknown column '0b1001' in 'field list'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+binary_strings=no # binary strings (b'0110')
+ ###< select b'0110'
+ ###> execute error:Unknown column 'b' in 'field list'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+case_insensitive_strings=yes # Case insensitive compare
+ ###
+ ###<select b from crash_me where b = 'A'
+ ###>a
+char_is_space_filled=no # char are space filled
+ ###
+ ###<select concat(b,b) from crash_me where b = 'a '
+ ###>aa
+ ###We expected 'a a ' but got 'aa'
+column_alias=yes # Column alias
+ ###< select a as ab from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+columns_in_group_by=+64 # number of columns in group by
+ ###We are trying (example with N=5):
+ ###create table crash_q (q1 integer,q2 integer,q3 integer,q4 integer,q5 integer)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###select q1,q2,q3,q4,q5 from crash_q group by q1,q2,q3,q4,q5
+columns_in_order_by=+64 # number of columns in order by
+ ###We are trying (example with N=5):
+ ###create table crash_q (q1 integer,q2 integer,q3 integer,q4 integer,q5 integer)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###select * from crash_q order by q1,q2,q3,q4,q5
+comment_#=yes # # as comment
+ ###< select * from crash_me # Testing of comments
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+comment_--=yes # -- as comment (ANSI)
+ ###< select * from crash_me -- Testing of comments
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+comment_/**/=yes # /* */ as comment
+ ###< select * from crash_me /* Testing of comments */
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+comment_//=no # // as comment
+ ###< select * from crash_me // Testing of comments
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '// Testing of comments' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+compute=no # Compute
+ ###< select a from crash_me order by a compute sum(a) by a
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'compute sum(a) by a' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+connections=101 # Simultaneous connections (installation default)
+constraint_check=syntax only # Column constraints
+ ###< create table crash_q (a int check (a>0))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###< create table crash_q (a int check (a>0))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###< create table crash_q (a int check (a>0))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+constraint_check_named=syntax only # Named constraints
+ ###< create table crash_q (a int ,b int, constraint abc check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###< create table crash_q (a int ,b int, constraint abc check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###< create table crash_q (a int ,b int, constraint abc check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+constraint_check_table=syntax only # Table constraints
+ ###< create table crash_q (a int ,b int, check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###< create table crash_q (a int ,b int, check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###< create table crash_q (a int ,b int, check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+constraint_null=yes # NULL constraint (SyBase style)
+ ###< create table crash_q (a int null)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+crash_me_safe=yes # crash me safe
+crash_me_version=1.61 # crash me version
+create_default=yes # default value for column
+ ###< create table crash_q (q integer default 10 not null)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+create_default_func=no # default value function for column
+ ###< create table crash_q (q integer not null,q1 integer default (1+1))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1+1))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+create_if_not_exists=yes # create table if not exists
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< create table if not exists crash_q (q integer)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+create_index=yes # create index
+ ###< create index crash_q on crash_me (a)
+ ###> OK
+create_schema=no # Create SCHEMA
+ ###< create schema crash_schema create table crash_q (a int) create table crash_q2(b int)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'schema crash_schema create table crash_q (a int) create table c
+ ###< drop schema crash_schema cascade
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'schema crash_schema cascade' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+create_table_select=yes # create table from select
+ ###< create table crash_q SELECT * from crash_me
+ ###> OK
+cross_join=yes # cross join (same as from a,b)
+ ###< select crash_me.a from crash_me cross join crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+date_as_string=yes # String functions on date columns
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('1998-03-03')
+ ###> OK
+ ###
+ ###<select left(a,4) from crash_me2
+ ###>1998
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_format_EUR=error # Supports DD.MM.YYYY (EUR) format
+ ###< insert into crash_me_d(a) values ('16.08.1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_EUR_with_date=error # Supports DATE 'DD.MM.YYYY' (EUR) format
+ ###< insert into crash_me_d(a) values (DATE '16.08.1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_ISO=yes # Supports YYYY-MM-DD (ISO) format
+ ###< insert into crash_me_d(a) values ('1963-08-16')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_ISO_with_date=yes # Supports DATE 'YYYY-MM-DD' (ISO) format
+ ###< insert into crash_me_d(a) values (DATE '1963-08-16')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_USA=error # Supports MM/DD/YYYY format
+ ###< insert into crash_me_d(a) values ('08/16/1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_USA_with_date=error # Supports DATE 'MM/DD/YYYY' format
+ ###< insert into crash_me_d(a) values (DATE '08/16/1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_YYYYMMDD=yes # Supports YYYYMMDD format
+ ###< insert into crash_me_d(a) values ('19630816')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_YYYYMMDD_with_date=yes # Supports DATE 'YYYYMMDD' format
+ ###< insert into crash_me_d(a) values (DATE '19630816')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_inresult=iso # Date format in result
+ ###< insert into crash_me_d values( sysdate() )
+ ###> OK
+ ###
+ ###< select a from crash_me_d
+ ###> 2003-12-24
+ ###< delete from crash_me_d
+ ###> OK
+ ###< insert into crash_me_d values( sysdate() )
+ ###> OK
+ ###
+ ###< select a from crash_me_d
+ ###> 2004-05-20
+ ###< delete from crash_me_d
+ ###> OK
+ ###< insert into crash_me_d values( sysdate() )
+ ###> OK
+ ###
+ ###< select a from crash_me_d
+ ###> 2004-05-20
+ ###< delete from crash_me_d
+ ###> OK
+date_infinity=error # Supports 'infinity dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('infinity')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>0000-00-00
+ ###We expected 'infinity' but got '0000-00-00'
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_last=yes # Supports 9999-12-31 dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('9999-12-31')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>9999-12-31
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_one=yes # Supports 0001-01-01 dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('0001-01-01')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>0001-01-01
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('98-03-03')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>1998-03-03
+ ###
+ ###< drop table crash_me2
+ ###> OK
+ ###
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('10-03-03')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>2010-03-03
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_zero=yes # Supports 0000-00-00 dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('0000-00-00')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>0000-00-00
+ ###
+ ###< drop table crash_me2
+ ###> OK
+domains=no # Domains (ANSI SQL)
+ ###< create domain crash_d as varchar(10) default 'Empty' check (value <> 'abcd')
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'domain crash_d as varchar(10) default 'Empty' check (value <> '
+ ###< create table crash_q(a crash_d, b int)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'crash_d, b int)' at line 1
+ ###< insert into crash_q(a,b) values('xyz',10)
+ ###> execute error:Table 'test.crash_q' doesn't exist
+ ###< insert into crash_q(b) values(10)
+ ###> execute error:Table 'test.crash_q' doesn't exist
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###< drop domain crash_d
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'domain crash_d' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+dont_require_cast_to_float=yes # No need to cast from integer to float
+ ###< select exp(1)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+double_quotes=yes # Double '' as ' in strings
+ ###
+ ###<select 'Walker''s'
+ ###>Walker's
+drop_if_exists=yes # drop table if exists
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< drop table if exists crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+drop_index=with 'ON' # drop index
+ ###< drop index crash_q
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
+ ###
+ ###< drop index crash_q from crash_me
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'from crash_me' at line 1
+ ###
+ ###< drop index crash_q on crash_me
+ ###> OK
+drop_requires_cascade=no # drop table require cascade/restrict
+ ###< create table crash_me (a integer not null)
+ ###> OK
+ ###< drop table crash_me
+ ###> OK
+ ###< create table crash_me (a integer not null)
+ ###> OK
+ ###< drop table crash_me
+ ###> OK
+ ###< create table crash_me (a integer not null)
+ ###> OK
+ ###< drop table crash_me
+ ###> OK
+drop_restrict=yes # drop table with cascade/restrict
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< drop table crash_q restrict
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+end_colon=yes # allows end ';'
+ ###< select * from crash_me;
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+except=no # except
+ ###< select * from crash_me except select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+except_all=no # except all
+ ###< select * from crash_me except all select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+except_all_incompat=no # except all (incompatible lists)
+ ###< select * from crash_me except all select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+except_incompat=no # except (incompatible lists)
+ ###< select * from crash_me except select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+field_name_case=yes # case independent field names
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< insert into crash_q(Q) values (1)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+float_int_expr=yes # mixing of integer and float in expression
+ ###< select 1+1.0
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+foreign_key=syntax only # foreign keys
+ ###< create table crash_me_qf (a integer not null,primary key (a))
+ ###> OK
+ ###
+ ###< create table crash_me_qf2 (a integer not null,foreign key (a) references crash_me_qf (a))
+ ###> OK
+ ###
+ ###< insert into crash_me_qf values (1)
+ ###> OK
+ ###
+ ###< insert into crash_me_qf2 values (2)
+ ###> OK
+ ###
+ ###< drop table crash_me_qf2
+ ###> OK
+ ###
+ ###< drop table crash_me_qf
+ ###> OK
+ ###< create table crash_me_qf (a integer not null,primary key (a))
+ ###> OK
+ ###
+ ###< create table crash_me_qf2 (a integer not null,foreign key (a) references crash_me_qf (a))
+ ###> OK
+ ###
+ ###< insert into crash_me_qf values (1)
+ ###> OK
+ ###
+ ###< insert into crash_me_qf2 values (2)
+ ###> OK
+ ###
+ ###< drop table crash_me_qf2
+ ###> OK
+ ###
+ ###< drop table crash_me_qf
+ ###> OK
+ ###< create table crash_me_qf (a integer not null,primary key (a))
+ ###> OK
+ ###
+ ###< create table crash_me_qf2 (a integer not null,foreign key (a) references crash_me_qf (a))
+ ###> OK
+ ###
+ ###< insert into crash_me_qf values (1)
+ ###> OK
+ ###
+ ###< insert into crash_me_qf2 values (2)
+ ###> OK
+ ###
+ ###< drop table crash_me_qf2
+ ###> OK
+ ###
+ ###< drop table crash_me_qf
+ ###> OK
+full_outer_join=no # full outer join
+ ###< select crash_me.a from crash_me full join crash_me2 ON
+ ### crash_me.a=crash_me2.a
+ ###> execute error:Unknown table 'crash_me' in field list
+ ###
+ ###As far as some queries didnt return OK, result is NO
+func_extra_!=yes # Function NOT as '!' in SELECT
+ ###
+ ###<select ! 1
+ ###>0
+func_extra_%=yes # Function MOD as %
+ ###
+ ###<select 10%7
+ ###>3
+func_extra_&=yes # Function & (bitwise and)
+ ###
+ ###<select 5 & 3
+ ###>1
+func_extra_&&=yes # Function AND as '&&'
+ ###
+ ###<select 1=1 && 2=2
+ ###>1
+func_extra_<>=yes # Function <> in SELECT
+ ###
+ ###<select 1<>1
+ ###>0
+func_extra_==yes # Function =
+ ###
+ ###<select (1=1)
+ ###>1
+func_extra_add_months=no # Function ADD_MONTHS
+ ###
+ ###<select add_months('1997-01-01',1) from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('1997-01-01',1) from crash_me_d' at line 1
+func_extra_adddate=yes # Function ADDDATE
+ ###
+ ###<select ADDDATE('2002-12-01',3) from crash_me_d
+ ###>2002-12-04
+func_extra_addtime=yes # Function ADDTIME
+ ###
+ ###<select ADDTIME('20:02:12','00:00:03')
+ ###>20:02:15
+func_extra_alpha=no # Function ALPHA
+ ###
+ ###<select alpha('Aâ',2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('Aâ',2)' at line 1
+func_extra_and_or=yes # Function AND and OR in SELECT
+ ###
+ ###<select 1=1 AND 2=2
+ ###>1
+func_extra_ascii_char=no # Function ASCII_CHAR
+ ###
+ ###<select ASCII_CHAR(65)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(65)' at line 1
+func_extra_ascii_code=no # Function ASCII_CODE
+ ###
+ ###<select ASCII_CODE('A')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('A')' at line 1
+func_extra_ascii_string=error # Function ASCII in string cast
+ ###
+ ###<select ascii('a')
+ ###>97
+ ###We expected 'a' but got '97'
+func_extra_atn2=no # Function ATN2
+ ###
+ ###<select atn2(1,0)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1,0)' at line 1
+func_extra_auto_num2string=yes # Function automatic num->string convert
+ ###
+ ###<select concat('a',2)
+ ###>a2
+func_extra_auto_string2num=yes # Function automatic string->num convert
+ ###
+ ###<select '1'+2
+ ###>3
+func_extra_between=yes # Function BETWEEN in SELECT
+ ###
+ ###<select 5 between 4 and 6
+ ###>1
+func_extra_binary_shifts=yes # Function << and >> (bitwise shifts)
+ ###
+ ###<select (1 << 4) >> 2
+ ###>4
+func_extra_bit_count=yes # Function BIT_COUNT
+ ###
+ ###<select bit_count(5)
+ ###>2
+func_extra_ceil=yes # Function CEIL
+ ###
+ ###<select ceil(-4.5)
+ ###>-4
+func_extra_char_date=no # Function CHAR (conversation date)
+ ###
+ ###<select CHAR(a,EUR) from crash_me_d
+ ###> execute failed:Unknown column 'EUR' in 'field list'
+func_extra_charindex=no # Function CHARINDEX
+ ###
+ ###<select charindex('a','crash')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('a','crash')' at line 1
+func_extra_chr=no # Function CHR
+ ###
+ ###<select CHR(65)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(65)' at line 1
+func_extra_chr_str=no # Function CHR (any type to string)
+ ###
+ ###<select CHR(67)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(67)' at line 1
+func_extra_concat_as_+=error # Function concatenation with +
+ ###
+ ###<select 'abc' + 'def'
+ ###>0
+ ###We expected 'abcdef' but got '0'
+func_extra_concat_list=yes # Function CONCAT(list)
+ ###
+ ###<select concat('a','b','c','d')
+ ###>abcd
+func_extra_convert=no # Function CONVERT
+ ###
+ ###<select convert(CHAR,5)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '5)' at line 1
+func_extra_cosh=no # Function COSH
+ ###
+ ###<select cosh(0)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(0)' at line 1
+func_extra_date=yes # Function DATE
+ ###
+ ###<select date('1963-08-16') from crash_me_d
+ ###>1963-08-16
+func_extra_date_format=yes # Function DATE_FORMAT
+ ###
+ ###<select date_format('1997-01-02 03:04:05','M W D Y y m d h i s w') from crash_me_d
+ ###>M W D Y y m d h i s w
+func_extra_dateadd=no # Function DATEADD
+ ###
+ ###<select dateadd(day,3,'1997-11-30') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(day,3,'1997-11-30') from crash_me_d' at line 1
+func_extra_datediff=no # Function DATEDIFF
+ ###
+ ###<select datediff(month,'Oct 21 1997','Nov 30 1997') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''Nov 30 1997') from crash_me_d' at line 1
+func_extra_datediff2arg=yes # Function DATEDIFF (2 arg)
+ ###
+ ###<select DATEDIFF('2002-12-04','2002-12-01') from crash_me_d
+ ###>3
+func_extra_datename=no # Function DATENAME
+ ###
+ ###<select datename(month,'Nov 30 1997') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(month,'Nov 30 1997') from crash_me_d' at line 1
+func_extra_datepart=no # Function DATEPART
+ ###
+ ###<select datepart(month,'July 20 1997') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(month,'July 20 1997') from crash_me_d' at line 1
+func_extra_day=yes # Function DAY
+ ###
+ ###<select DAY('2002-12-01') from crash_me_d
+ ###>1
+func_extra_decode=no # Function DECODE
+ ###
+ ###<select DECODE('S-103','T72',1,'S-103',2,'Leopard',3)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1,'S-103',2,'Leopard',3)' at line 1
+func_extra_ebcdic_string=no # Function EBCDIC in string cast
+ ###
+ ###<select ebcdic('a')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('a')' at line 1
+func_extra_elt=yes # Function ELT
+ ###
+ ###<select elt(2,'ONE','TWO','THREE')
+ ###>TWO
+func_extra_encrypt=yes # Function ENCRYPT
+ ###
+ ###<select encrypt('hello')
+ ###>1Wi1s0yzcGqMY
+func_extra_expand2arg=no # Function EXPAND
+ ###
+ ###<select expand('abcd',6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abcd',6)' at line 1
+func_extra_field=yes # Function FIELD
+ ###
+ ###<select field('IBM','NCA','ICL','SUN','IBM','DIGITAL')
+ ###>4
+func_extra_fixed=no # Function FIXED
+ ###
+ ###<select fixed(222.6666,10,2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(222.6666,10,2)' at line 1
+func_extra_float=no # Function FLOAT
+ ###
+ ###<select float(6666.66,4)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'float(6666.66,4)' at line 1
+func_extra_format=yes # Function FORMAT
+ ###
+ ###<select format(1234.5555,2)
+ ###>1,234.56
+func_extra_from_days=yes # Function FROM_DAYS
+ ###
+ ###<select from_days(729024) from crash_me_d
+ ###>1996-01-01
+func_extra_from_unixtime=yes # Function FROM_UNIXTIME
+ ###
+ ###<select from_unixtime(0) from crash_me_d
+ ###>1970-01-01 02:00:00
+func_extra_getdate=no # Function GETDATE
+ ###
+ ###<select getdate()
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '()' at line 1
+func_extra_greatest=yes # Function GREATEST
+ ###
+ ###<select greatest('HARRY','HARRIOT','HAROLD')
+ ###>HARRY
+func_extra_hex=yes # Function HEX
+ ###
+ ###<select HEX('A')
+ ###>41
+func_extra_if=yes # Function IF
+ ###
+ ###<select if(5,6,7)
+ ###>6
+func_extra_in_num=yes # Function IN on numbers in SELECT
+ ###
+ ###<select 2 in (3,2,5,9,5,1)
+ ###>1
+func_extra_in_str=yes # Function IN on strings in SELECT
+ ###
+ ###<select 'monty' in ('david','monty','allan')
+ ###>1
+func_extra_index=no # Function INDEX
+ ###
+ ###<select index('abcdefg','cd',1,1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'index('abcdefg','cd',1,1)' at line 1
+func_extra_initcap=no # Function INITCAP
+ ###
+ ###<select initcap('the soap')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('the soap')' at line 1
+func_extra_instr=yes # Function LOCATE as INSTR
+ ###
+ ###<select instr('hello','ll')
+ ###>3
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+ ###
+ ###<select INSTR('CORPORATE FLOOR','OR',3,2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '3,2)' at line 1
+func_extra_instrb=no # Function INSTRB
+ ###
+ ###<select INSTRB('CORPORATE FLOOR','OR',5,2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('CORPORATE FLOOR','OR',5,2)' at line 1
+func_extra_interval=yes # Function INTERVAL
+ ###
+ ###<select interval(55,10,20,30,40,50,60,70,80,90,100)
+ ###>5
+func_extra_last_day=yes # Function LAST_DAY
+ ###
+ ###<select last_day('1997-04-01') from crash_me_d
+ ###>1997-04-30
+func_extra_last_insert_id=yes # Function LAST_INSERT_ID
+ ###
+ ###<select last_insert_id()
+ ###>0
+func_extra_least=yes # Function LEAST
+ ###
+ ###<select least('HARRY','HARRIOT','HAROLD')
+ ###>HAROLD
+func_extra_length=error # Function LENGTH
+ ###
+ ###<select length(1)
+ ###>1
+ ###We expected '2' but got '1'
+func_extra_lengthb=no # Function LENGTHB
+ ###
+ ###<select lengthb('CANDIDE')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('CANDIDE')' at line 1
+func_extra_lfill3arg=no # Function LFILL (3 arg)
+ ###
+ ###<select lfill('abcd','.',6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abcd','.',6)' at line 1
+func_extra_like=yes # Function LIKE in SELECT
+ ###
+ ###<select 'a' like 'a%'
+ ###>1
+func_extra_like_escape=yes # Function LIKE ESCAPE in SELECT
+ ###
+ ###<select '%' like 'a%' escape 'a'
+ ###>1
+func_extra_ln=yes # Function LN
+ ###
+ ###<select ln(95)
+ ###>4.553877
+func_extra_log(m_n)=yes # Function LOG(m,n)
+ ###
+ ###<select log(10,100)
+ ###>2.000000
+func_extra_logn=no # Function LOGN
+ ###
+ ###<select logn(2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(2)' at line 1
+func_extra_lpad=yes # Function LPAD
+ ###
+ ###<select lpad('hi',4,'??')
+ ###>??hi
+func_extra_ltrim2arg=no # Function LTRIM (2 arg)
+ ###
+ ###<select ltrim('..abcd..','.')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.')' at line 1
+func_extra_makedate=yes # Function MAKEDATE
+ ###
+ ###<select MAKEDATE(1963,228) from crash_me_d
+ ###>1963-08-16
+func_extra_maketime=yes # Function MAKETIME
+ ###
+ ###<select MAKETIME(20,02,12)
+ ###>20:02:12
+func_extra_mapchar=no # Function MAPCHAR
+ ###
+ ###<select mapchar('Aâ')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('Aâ')' at line 1
+func_extra_mdy=no # Function MDY
+ ###
+ ###<select mdy(7,1,1998) from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(7,1,1998) from crash_me_d' at line 1
+func_extra_microsecond=error # Function MICROSECOND
+ ###
+ ###<select MICROSECOND('19630816200212111111')
+ ###>11
+ ###We expected '111111' but got '11'
+func_extra_mid=yes # Function SUBSTRING as MID
+ ###
+ ###<select mid('hello',3,2)
+ ###>ll
+func_extra_months_between=no # Function MONTHS_BETWEEN
+ ###
+ ###<select months_between('1997-02-02','1997-01-01') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('1997-02-02','1997-01-01') from crash_me_d' at line 1
+func_extra_noround=no # Function NOROUND
+ ###< select noround(22.6)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(22.6)' at line 1
+ ###< select noround(22.6)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(22.6)' at line 1
+ ###< select noround(22.6)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(22.6)' at line 1
+func_extra_not=yes # Function NOT in SELECT
+ ###
+ ###<select not false
+ ###>1
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+ ###
+ ###<select 5 not between 4 and 6
+ ###>0
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+ ###
+ ###<select 'a' not like 'a%'
+ ###>0
+func_extra_num=no # Function NUM
+ ###
+ ###<select NUM('2123')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('2123')' at line 1
+func_extra_odbc_convert=no # Function ODBC CONVERT
+ ###
+ ###<select convert(5,SQL_CHAR)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
+func_extra_password=yes # Function PASSWORD
+ ###
+ ###<select password('hello')
+ ###>*6B4F89A54E2D27ECD7E8DA05B4AB8FD9D1D8B119
+func_extra_paste=no # Function PASTE
+ ###
+ ###<select paste('ABCDEFG',3,2,'1234')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('ABCDEFG',3,2,'1234')' at line 1
+func_extra_patindex=no # Function PATINDEX
+ ###
+ ###<select patindex('%a%','crash')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('%a%','crash')' at line 1
+func_extra_period_add=yes # Function PERIOD_ADD
+ ###
+ ###<select period_add(9602,-12) from crash_me_d
+ ###>199502
+func_extra_period_diff=yes # Function PERIOD_DIFF
+ ###
+ ###<select period_diff(199505,199404) from crash_me_d
+ ###>13
+func_extra_pow=yes # Function POW
+ ###
+ ###<select pow(3,2)
+ ###>9.000000
+func_extra_range=no # Function RANGE
+ ###
+ ###<select range(a)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a)' at line 1
+func_extra_regexp=yes # Function REGEXP in SELECT
+ ###
+ ###<select 'a' regexp '^(a|b)*$'
+ ###>1
+func_extra_replace2arg=no # Function REPLACE (2 arg)
+ ###
+ ###<select replace('AbCd','bC')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
+func_extra_replicate=no # Function REPLICATE
+ ###
+ ###<select replicate('a',5)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('a',5)' at line 1
+func_extra_reverse=yes # Function REVERSE
+ ###
+ ###<select reverse('abcd')
+ ###>dcba
+func_extra_rfill3arg=no # Function RFILL (3 arg)
+ ###
+ ###<select rfill('abcd','.',6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abcd','.',6)' at line 1
+func_extra_root=no # Function ROOT
+ ###
+ ###<select root(4)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(4)' at line 1
+func_extra_round1=yes # Function ROUND(1 arg)
+ ###
+ ###<select round(5.63)
+ ###>6
+func_extra_rpad=yes # Function RPAD
+ ###
+ ###<select rpad('hi',4,'??')
+ ###>hi??
+func_extra_rpad4arg=no # Function RPAD (4 arg)
+ ###
+ ###<select rpad('abcd',2,'+-',8)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '8)' at line 1
+func_extra_rtrim2arg=no # Function RTRIM (2 arg)
+ ###
+ ###<select rtrim('..abcd..','.')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.')' at line 1
+func_extra_sec_to_time=yes # Function SEC_TO_TIME
+ ###
+ ###<select sec_to_time(5001)
+ ###>01:23:21
+func_extra_sinh=no # Function SINH
+ ###
+ ###<select sinh(1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1)' at line 1
+func_extra_str=no # Function STR
+ ###
+ ###<select str(123.45,5,1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(123.45,5,1)' at line 1
+func_extra_strcmp=yes # Function STRCMP
+ ###
+ ###<select strcmp('abc','adc')
+ ###>-1
+func_extra_stuff=no # Function STUFF
+ ###
+ ###<select stuff('abc',2,3,'xyz')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc',2,3,'xyz')' at line 1
+func_extra_subdate=yes # Function SUBDATE
+ ###
+ ###<select SUBDATE('2002-12-04',3) from crash_me_d
+ ###>2002-12-01
+func_extra_substr2arg=yes # Function SUBSTR (2 arg)
+ ###
+ ###<select substr('abcd',2)
+ ###>bcd
+func_extra_substr3arg=yes # Function SUBSTR (3 arg)
+ ###
+ ###<select substr('abcd',2,2)
+ ###>bc
+func_extra_substrb=no # Function SUBSTRB
+ ###
+ ###<select SUBSTRB('ABCDEFG',5,4.2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('ABCDEFG',5,4.2)' at line 1
+func_extra_substring_index=yes # Function SUBSTRING_INDEX
+ ###
+ ###<select substring_index('www.tcx.se','.',-2)
+ ###>tcx.se
+func_extra_subtime=yes # Function SUBTIME
+ ###
+ ###<select SUBTIME('20:02:15','00:00:03')
+ ###>20:02:12
+func_extra_sysdate=yes # Function SYSDATE
+ ###
+ ###<select sysdate()
+ ###>2003-12-24 09:46:11
+func_extra_tail=no # Function TAIL
+ ###
+ ###<select tail('ABCDEFG',3)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('ABCDEFG',3)' at line 1
+func_extra_tanh=no # Function TANH
+ ###
+ ###<select tanh(1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1)' at line 1
+func_extra_time=yes # Function TIME
+ ###
+ ###<select time('20:02:12')
+ ###>20:02:12
+func_extra_time_to_sec=yes # Function TIME_TO_SEC
+ ###
+ ###<select time_to_sec('01:23:21')
+ ###>5001
+func_extra_timediff=yes # Function TIMEDIFF
+ ###
+ ###<select TIMEDIFF('20:02:15','20:02:12')
+ ###>00:00:03
+func_extra_timestamp=error # Function TIMESTAMP
+ ###
+ ###<select timestamp('19630816','00200212')
+ ###>1963-08-16 20:02:12
+ ###We expected '19630816200212000000' but got '1963-08-16 20:02:12'
+func_extra_to_days=yes # Function TO_DAYS
+ ###
+ ###<select to_days('1996-01-01') from crash_me_d
+ ###>729024
+func_extra_translate=no # Function TRANSLATE
+ ###
+ ###<select translate('abc','bc','de')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc','bc','de')' at line 1
+func_extra_trim1arg=yes # Function TRIM (1 arg)
+ ###
+ ###<select trim(' abcd ')
+ ###>abcd
+func_extra_trim2arg=no # Function TRIM (2 arg)
+ ###
+ ###<select trim('..abcd..','.')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.')' at line 1
+func_extra_trim_many_char=error # Function TRIM; Many char extension
+ ###
+ ###<select trim(':!' FROM ':abc!')
+ ###>:abc!
+ ###We expected 'abc' but got ':abc!'
+func_extra_trim_substring=yes # Function TRIM; Substring extension
+ ###
+ ###<select trim('cb' FROM 'abccb')
+ ###>abc
+func_extra_trunc=no # Function TRUNC
+ ###
+ ###<select trunc(18.18,-1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(18.18,-1)' at line 1
+func_extra_trunc1arg=no # Function TRUNC (1 arg)
+ ###
+ ###<select trunc(222.6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(222.6)' at line 1
+func_extra_uid=no # Function UID
+ ###
+ ###<select uid
+ ###> execute failed:Unknown column 'uid' in 'field list'
+func_extra_unix_timestamp=yes # Function UNIX_TIMESTAMP
+ ###
+ ###<select unix_timestamp()
+ ###>1072251971
+func_extra_userenv=no # Function USERENV
+ ###
+ ###<select userenv
+ ###> execute failed:Unknown column 'userenv' in 'field list'
+func_extra_value=no # Function VALUE
+ ###
+ ###<select value(NULL,'WALRUS')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(NULL,'WALRUS')' at line 1
+func_extra_version=yes # Function VERSION
+ ###
+ ###<select version()
+ ###>5.0.0-alpha-debug-log
+func_extra_weekday=yes # Function WEEKDAY
+ ###
+ ###<select weekday('1997-11-29') from crash_me_d
+ ###>5
+func_extra_weekofyear=yes # Function WEEKOFYEAR
+ ###
+ ###<select WEEKOFYEAR('1963-08-16') from crash_me_d
+ ###>33
+func_extra_|=yes # Function | (bitwise or)
+ ###
+ ###<select 1 | 2
+ ###>3
+func_extra_||=yes # Function OR as '||'
+ ###
+ ###<select 1=0 || 1=1
+ ###>1
+func_extra_~*=no # Function ~* (case insensitive compare)
+ ###
+ ###<select 'hi' ~* 'HI'
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '~* 'HI'' at line 1
+func_odbc_abs=yes # Function ABS
+ ###
+ ###<select abs(-5)
+ ###>5
+func_odbc_acos=yes # Function ACOS
+ ###
+ ###<select acos(0)
+ ###>1.570796
+func_odbc_ascii=yes # Function ASCII
+ ###
+ ###<select ASCII('A')
+ ###>65
+func_odbc_asin=yes # Function ASIN
+ ###
+ ###<select asin(1)
+ ###>1.570796
+func_odbc_atan=yes # Function ATAN
+ ###
+ ###<select atan(1)
+ ###>0.785398
+func_odbc_atan2=yes # Function ATAN2
+ ###
+ ###<select atan2(1,0)
+ ###>1.570796
+func_odbc_ceiling=yes # Function CEILING
+ ###
+ ###<select ceiling(-4.5)
+ ###>-4
+func_odbc_char=yes # Function CHAR
+ ###
+ ###<select CHAR(65)
+ ###>A
+func_odbc_concat=yes # Function CONCAT(2 arg)
+ ###
+ ###<select concat('a','b')
+ ###>ab
+func_odbc_cos=yes # Function COS
+ ###
+ ###<select cos(0)
+ ###>1.000000
+func_odbc_cot=yes # Function COT
+ ###
+ ###<select cot(1)
+ ###>0.64209262
+func_odbc_curdate=yes # Function CURDATE
+ ###
+ ###<select curdate()
+ ###>2003-12-24
+func_odbc_curtime=yes # Function CURTIME
+ ###
+ ###<select curtime()
+ ###>09:46:11
+func_odbc_database=yes # Function DATABASE
+ ###
+ ###<select database()
+ ###>test
+func_odbc_dayname=yes # Function DAYNAME
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayname(a) from crash_me_d
+ ###>Saturday
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayofmonth(a) from crash_me_d
+ ###>1
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayofweek(a) from crash_me_d
+ ###>7
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayofyear(a) from crash_me_d
+ ###>32
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_odbc_degrees=yes # Function DEGREES
+ ###
+ ###<select degrees(6.283185)
+ ###>359.99998239991
+func_odbc_difference=no # Function DIFFERENCE()
+ ###
+ ###<select difference('abc','abe')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc','abe')' at line 1
+ ###
+ ###<select {fn difference('abc','abe') }
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc','abe') }' at line 1
+func_odbc_exp=yes # Function EXP
+ ###
+ ###<select exp(1.0)
+ ###>2.718282
+func_odbc_floor=yes # Function FLOOR
+ ###
+ ###<select floor(2.5)
+ ###>2
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+ ###
+ ###<select { fn LEFT( { fn RIGHT('abcd',2) },1) }
+ ###>c
+func_odbc_hour=yes # Function HOUR
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select hour('12:13:14')
+ ###>12
+ ###< insert into crash_me_t values(20:08:16)
+ ###< insert into crash_me_t values(20:08:16)
+func_odbc_hour_time=yes # Function ANSI HOUR
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select hour(TIME '12:13:14')
+ ###>12
+ ###< insert into crash_me_t values(20:08:16)
+ ###< insert into crash_me_t values(20:08:16)
+func_odbc_ifnull=yes # Function IFNULL
+ ###
+ ###<select ifnull(2,3)
+ ###>2
+func_odbc_insert=yes # Function INSERT
+ ###
+ ###<select insert('abcd',2,2,'ef')
+ ###>aefd
+func_odbc_lcase=yes # Function LCASE
+ ###
+ ###<select lcase('ABC')
+ ###>abc
+func_odbc_left=yes # Function LEFT
+ ###
+ ###<select left('abcd',2)
+ ###>ab
+func_odbc_length=yes # Function REAL LENGTH
+ ###
+ ###<select length('abcd ')
+ ###>5
+func_odbc_length_without_space=error # Function ODBC LENGTH
+ ###
+ ###<select length('abcd ')
+ ###>5
+ ###We expected '4' but got '5'
+ ###
+ ###<select {fn length('abcd ') }
+ ###>5
+ ###We expected '4' but got '5'
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+ ###
+ ###<select locate('bcd','abcd')
+ ###>2
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+ ###
+ ###<select locate('bcd','abcd',3)
+ ###>0
+func_odbc_log=yes # Function LOG
+ ###
+ ###<select log(2)
+ ###>0.693147
+func_odbc_log10=yes # Function LOG10
+ ###
+ ###<select log10(10)
+ ###>1.000000
+func_odbc_ltrim=yes # Function LTRIM
+ ###
+ ###<select ltrim(' abcd')
+ ###>abcd
+func_odbc_minute=yes # Function MINUTE
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select minute('12:13:14')
+ ###>13
+ ###< insert into crash_me_t values(20:08:16)
+ ###< insert into crash_me_t values(20:08:16)
+func_odbc_mod=yes # Function MOD
+ ###
+ ###<select mod(11,7)
+ ###>4
+func_odbc_month=yes # Function MONTH
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select month(a) from crash_me_d
+ ###>2
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_odbc_monthname=yes # Function MONTHNAME
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select monthname(a) from crash_me_d
+ ###>February
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_odbc_now=yes # Function NOW
+ ###
+ ###<select now()
+ ###>2003-12-24 09:46:11
+func_odbc_pi=yes # Function PI
+ ###
+ ###<select pi()
+ ###>3.141593
+func_odbc_power=yes # Function POWER
+ ###
+ ###<select power(2,4)
+ ###>16.000000
+func_odbc_quarter=yes # Function QUARTER
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select quarter(a) from crash_me_d
+ ###>1
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_odbc_radians=yes # Function RADIANS
+ ###
+ ###<select radians(360)
+ ###>6.2831853071796
+func_odbc_rand=yes # Function RAND
+ ###
+ ###<select rand(1)
+ ###>0.40540353712198
+func_odbc_repeat=yes # Function REPEAT
+ ###
+ ###<select repeat('ab',3)
+ ###>ababab
+func_odbc_replace=yes # Function REPLACE
+ ###
+ ###<select replace('abbaab','ab','ba')
+ ###>bababa
+func_odbc_right=yes # Function RIGHT
+ ###
+ ###<select right('abcd',2)
+ ###>cd
+func_odbc_round=yes # Function ROUND(2 arg)
+ ###
+ ###<select round(5.63,2)
+ ###>5.63
+func_odbc_rtrim=yes # Function RTRIM
+ ###
+ ###<select rtrim(' abcd ')
+ ###> abcd
+func_odbc_second=yes # Function SECOND
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select second('12:13:14')
+ ###>14
+ ###< insert into crash_me_t values(20:08:16)
+ ###< insert into crash_me_t values(20:08:16)
+func_odbc_sign=yes # Function SIGN
+ ###
+ ###<select sign(-5)
+ ###>-1
+func_odbc_sin=yes # Function SIN
+ ###
+ ###<select sin(1)
+ ###>0.841471
+func_odbc_soundex=yes # Function SOUNDEX
+ ###
+ ###<select soundex('hello')
+ ###>H400
+func_odbc_space=yes # Function SPACE
+ ###
+ ###<select space(5)
+ ###>
+func_odbc_sqrt=yes # Function SQRT
+ ###
+ ###<select sqrt(4)
+ ###>2.000000
+func_odbc_substring=yes # Function ODBC SUBSTRING
+ ###
+ ###<select substring('abcd',3,2)
+ ###>cd
+func_odbc_tan=yes # Function TAN
+ ###
+ ###<select tan(1)
+ ###>1.557408
+func_odbc_timestampadd=yes # Function TIMESTAMPADD
+ ###
+ ###<select timestampadd(SQL_TSI_SECOND,1,'1997-01-01 00:00:00')
+ ###>1997-01-01 00:00:01
+func_odbc_timestampdiff=error # Function TIMESTAMPDIFF
+ ###
+ ###<select timestampdiff(SQL_TSI_SECOND,'1997-01-01 00:00:02', '1997-01-01 00:00:01')
+ ###>-1
+ ###We expected '1' but got '-1'
+ ###
+ ###<select {fn timestampdiff(SQL_TSI_SECOND,{ts '1997-01-01 00:00:02'}, {ts '1997-01-01 00:00:01'}) }
+ ###>-1
+ ###We expected '1' but got '-1'
+func_odbc_truncate=yes # Function TRUNCATE
+ ###
+ ###<select truncate(18.18,-1)
+ ###>10
+func_odbc_ucase=yes # Function UCASE
+ ###
+ ###<select ucase('abc')
+ ###>ABC
+func_odbc_user()=yes # Function USER()
+ ###
+ ###<select user()
+ ###>monty@localhost
+func_odbc_week=USA # WEEK
+ ###<select week('1997-02-01')
+ ###>4
+ ###We expected '5' but got '4'
+ ###<select week('1997-02-01')
+ ###>4
+ ###We expected '5' but got '4'
+ ###<select week('1997-02-01')
+ ###>4
+ ###We expected '5' but got '4'
+func_odbc_year=yes # Function YEAR
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select year(a) from crash_me_d
+ ###>1997
+ ###< insert into crash_me_d values('1997-02-01')
+ ###< insert into crash_me_d values('1997-02-01')
+func_sql_+=yes # Function +, -, * and /
+ ###
+ ###<select 5*3-4/2+1
+ ###>14.00
+func_sql_bit_length=yes # Function BIT_LENGTH
+ ###
+ ###<select bit_length('abc')
+ ###>24
+func_sql_cast=yes # Function CAST
+ ###
+ ###<select CAST(1 as CHAR)
+ ###>1
+func_sql_char_length=error # Function CHAR_LENGTH
+ ###
+ ###<select char_length(b) from crash_me
+ ###>1
+ ###We expected '10' but got '1'
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+ ###
+ ###<select char_length('abcd')
+ ###>4
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+ ###
+ ###<select character_length('abcd')
+ ###>4
+func_sql_coalesce=yes # Function COALESCE
+ ###
+ ###<select coalesce(NULL,'bcd','qwe')
+ ###>bcd
+func_sql_concat_as_||=error # Function concatenation with ||
+ ###
+ ###<select 'abc' || 'def'
+ ###>0
+ ###We expected 'abcdef' but got '0'
+func_sql_current_date=yes # Function CURRENT_DATE
+ ###
+ ###<select current_date
+ ###>2003-12-24
+func_sql_current_time=yes # Function CURRENT_TIME
+ ###
+ ###<select current_time
+ ###>09:46:11
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+ ###
+ ###<select current_timestamp
+ ###>2003-12-24 09:46:11
+func_sql_current_user=with_parenthesis # CURRENT_USER
+ ###< select CURRENT_USER
+ ###> execute error:Unknown column 'CURRENT_USER' in 'field list'
+ ###
+ ###< select CURRENT_USER()
+ ###> OK
+ ###< select CURRENT_USER
+ ###> OK
+ ###< select CURRENT_USER
+ ###> execute error:Unknown column 'CURRENT_USER' in 'field list'
+ ###
+ ###< select CURRENT_USER()
+ ###> OK
+func_sql_extract_sql=yes # Function EXTRACT
+ ###
+ ###<select extract(minute from timestamp '2000-02-23 18:43:12.987')
+ ###>43
+func_sql_localtime=yes # Function LOCALTIME
+ ###
+ ###<select localtime
+ ###>2003-12-24 09:46:11
+func_sql_localtimestamp=yes # Function LOCALTIMESTAMP
+ ###
+ ###<select localtimestamp
+ ###>2003-12-24 09:46:11
+func_sql_lower=yes # Function LOWER
+ ###
+ ###<select LOWER('ABC')
+ ###>abc
+func_sql_nullif_num=yes # Function NULLIF with numbers
+ ###
+ ###<select NULLIF(NULLIF(1,2),1)
+ ###>
+func_sql_nullif_string=yes # Function NULLIF with strings
+ ###
+ ###<select NULLIF(NULLIF('first','second'),'first')
+ ###>
+func_sql_octet_length=yes # Function OCTET_LENGTH
+ ###
+ ###<select octet_length('abc')
+ ###>3
+func_sql_position=yes # Function POSITION
+ ###
+ ###<select position('ll' in 'hello')
+ ###>3
+func_sql_searched_case=yes # Function searched CASE
+ ###
+ ###<select case when 1 > 2 then 'false' when 2 > 1 then 'true' end
+ ###>true
+func_sql_session_user=with_parenthesis # SESSION_USER
+ ###< select SESSION_USER
+ ###> execute error:Unknown column 'SESSION_USER' in 'field list'
+ ###
+ ###< select SESSION_USER()
+ ###> OK
+ ###< select SESSION_USER
+ ###> execute error:Unknown column 'SESSION_USER' in 'field list'
+ ###
+ ###< select SESSION_USER()
+ ###> OK
+ ###< select SESSION_USER
+ ###> execute error:Unknown column 'SESSION_USER' in 'field list'
+ ###
+ ###< select SESSION_USER()
+ ###> OK
+func_sql_simple_case=yes # Function simple CASE
+ ###
+ ###<select case 2 when 1 then 'false' when 2 then 'true' end
+ ###>true
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+ ###
+ ###<select substring('abcd' from 2 for 2)
+ ###>bc
+func_sql_system_user=with_parenthesis # SYSTEM_USER
+ ###< select SYSTEM_USER
+ ###> execute error:Unknown column 'SYSTEM_USER' in 'field list'
+ ###
+ ###< select SYSTEM_USER()
+ ###> OK
+ ###< select SYSTEM_USER
+ ###> execute error:Unknown column 'SYSTEM_USER' in 'field list'
+ ###
+ ###< select SYSTEM_USER()
+ ###> OK
+ ###< select SYSTEM_USER
+ ###> execute error:Unknown column 'SYSTEM_USER' in 'field list'
+ ###
+ ###< select SYSTEM_USER()
+ ###> OK
+func_sql_trim=yes # Function TRIM
+ ###
+ ###<select trim(trailing from trim(LEADING FROM ' abc '))
+ ###>abc
+func_sql_upper=yes # Function UPPER
+ ###
+ ###<select UPPER('abc')
+ ###>ABC
+func_sql_user=with_parenthesis # USER
+ ###< select USER
+ ###> execute error:Unknown column 'USER' in 'field list'
+ ###
+ ###< select USER()
+ ###> OK
+ ###< select USER
+ ###> execute error:Unknown column 'USER' in 'field list'
+ ###
+ ###< select USER()
+ ###> OK
+ ###< select USER
+ ###> execute error:Unknown column 'USER' in 'field list'
+ ###
+ ###< select USER()
+ ###> OK
+func_where_between=yes # Function BETWEEN
+ ###
+ ###<select a from crash_me where 5 between 4 and 6
+ ###>1
+func_where_eq_all=yes # Function = ALL
+ ###
+ ###<select a from crash_me where b =all (select b from crash_me)
+ ###>1
+func_where_eq_any=yes # Function = ANY
+ ###
+ ###<select a from crash_me where b =any (select b from crash_me)
+ ###>1
+func_where_eq_some=yes # Function = SOME
+ ###
+ ###<select a from crash_me where b =some (select b from crash_me)
+ ###>1
+func_where_exists=yes # Function EXISTS
+ ###
+ ###<select a from crash_me where exists (select * from crash_me)
+ ###>1
+func_where_in_num=yes # Function IN on numbers
+ ###
+ ###<select a from crash_me where 2 in (3,2,5,9,5,1)
+ ###>1
+func_where_like=yes # Function LIKE
+ ###
+ ###<select a from crash_me where b like 'a%'
+ ###>1
+func_where_like_escape=yes # Function LIKE ESCAPE
+ ###
+ ###<select a from crash_me where b like '%' escape 'a'
+ ###>1
+func_where_match=no # Function MATCH
+ ###
+ ###<select a from crash_me where 1 match (select a from crash_me)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'match (select a from crash_me)' at line 1
+func_where_match_unique=no # Function MATCH UNIQUE
+ ###
+ ###<select a from crash_me where 1 match unique (select a from crash_me)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'match unique (select a from crash_me)' at line 1
+func_where_matches=no # Function MATCHES
+ ###
+ ###<select a from crash_me where b matcjhes 'a*'
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'matcjhes 'a*'' at line 1
+func_where_not_between=yes # Function NOT BETWEEN
+ ###
+ ###<select a from crash_me where 7 not between 4 and 6
+ ###>1
+func_where_not_exists=yes # Function NOT EXISTS
+ ###
+ ###<select a from crash_me where not exists (select * from crash_me where a = 2)
+ ###>1
+func_where_not_like=yes # Function NOT LIKE
+ ###
+ ###<select a from crash_me where b not like 'b%'
+ ###>1
+func_where_not_unique=no # Function NOT UNIQUE
+ ###
+ ###<select a from crash_me where not unique (select * from crash_me where a = 2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'unique (select * from crash_me where a = 2)' at line 1
+func_where_unique=no # Function UNIQUE
+ ###
+ ###<select a from crash_me where unique (select * from crash_me)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'unique (select * from crash_me)' at line 1
+functions=yes # Functions
+ ###< select 1+1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_by=yes # Group by
+ ###< select a from crash_me group by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_by_alias=yes # Group by alias
+ ###< select a as ab from crash_me group by ab
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_by_null=yes # Group on column with null values
+ ###< create table crash_q (s char(10))
+ ###> OK
+ ###< insert into crash_q values(null)
+ ###> OK
+ ###< insert into crash_q values(null)
+ ###> OK
+ ###
+ ###<select count(*),s from crash_q group by s
+ ###>2
+ ###
+ ###< drop table crash_q
+ ###> OK
+group_by_position=yes # Group by position
+ ###< select a from crash_me group by 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_distinct_functions=yes # Group functions with distinct
+ ###< select count(distinct a) from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_func_extra_bit_and=yes # Group function BIT_AND
+ ###
+ ###<select bit_and(a),a from crash_me group by a
+ ###>1
+group_func_extra_bit_or=yes # Group function BIT_OR
+ ###
+ ###<select bit_or(a),a from crash_me group by a
+ ###>1
+group_func_extra_count_distinct_list=yes # Group function COUNT(DISTINCT expr,expr,...)
+ ###
+ ###<select count(distinct a,b),a from crash_me group by a
+ ###>1
+group_func_extra_std=yes # Group function STD
+ ###
+ ###<select std(a),a from crash_me group by a
+ ###>0.0000
+group_func_extra_stddev=yes # Group function STDDEV
+ ###
+ ###<select stddev(a),a from crash_me group by a
+ ###>0.0000
+group_func_extra_variance=yes # Group function VARIANCE
+ ###
+ ###<select variance(a),a from crash_me group by a
+ ###>0.0000
+group_func_sql_any=no # Group function ANY
+ ###
+ ###<select any(a),a from crash_me group by a
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a),a from crash_me group by a' at line 1
+group_func_sql_avg=yes # Group function AVG
+ ###
+ ###<select avg(a),a from crash_me group by a
+ ###>1.0000
+group_func_sql_count_*=yes # Group function COUNT (*)
+ ###
+ ###<select count(*),a from crash_me group by a
+ ###>1
+group_func_sql_count_column=yes # Group function COUNT column name
+ ###
+ ###<select count(a),a from crash_me group by a
+ ###>1
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+ ###
+ ###<select count(distinct a),a from crash_me group by a
+ ###>1
+group_func_sql_every=no # Group function EVERY
+ ###
+ ###<select every(a),a from crash_me group by a
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a),a from crash_me group by a' at line 1
+group_func_sql_max=yes # Group function MAX on numbers
+ ###
+ ###<select max(a),a from crash_me group by a
+ ###>1
+group_func_sql_max_str=yes # Group function MAX on strings
+ ###
+ ###<select max(b),a from crash_me group by a
+ ###>a
+group_func_sql_min=yes # Group function MIN on numbers
+ ###
+ ###<select min(a),a from crash_me group by a
+ ###>1
+group_func_sql_min_str=yes # Group function MIN on strings
+ ###
+ ###<select min(b),a from crash_me group by a
+ ###>a
+group_func_sql_some=no # Group function SOME
+ ###
+ ###<select some(a),a from crash_me group by a
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a),a from crash_me group by a' at line 1
+group_func_sql_sum=yes # Group function SUM
+ ###
+ ###<select sum(a),a from crash_me group by a
+ ###>1
+group_functions=yes # Group functions
+ ###< select count(*) from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_many_distinct_functions=yes # Group functions with several distinct
+ ###< select count(distinct a), count(distinct b) from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_on_unused=yes # Group on unused column
+ ###< select count(*) from crash_me group by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+has_true_false=yes # TRUE and FALSE
+ ###< select (1=1)=true
+ ###> OK
+having=yes # Having
+ ###<select a from crash_me group by a having a > 0
+ ###>1
+ ###
+ ###<select a from crash_me group by a having a < 0
+ ###> didn't return any result:
+having_with_alias=yes # Having on alias
+ ###< select a as ab from crash_me group by a having ab > 0
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+having_with_group=yes # Having with group function
+ ###< select a from crash_me group by a having count(*) = 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+hex_numbers=yes # hex numbers (0x41)
+ ###< select 0x41
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+hex_strings=yes # hex strings (x'1ace')
+ ###< select x'1ace'
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+ignore_end_space=yes # Ignore end space in compare
+ ###
+ ###<select b from crash_me where b = 'a '
+ ###>a
+index_in_create=yes # index in create table
+ ###< create table crash_q (q integer not null,index (q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+index_namespace=yes # different namespace for index
+ ###< create index crash_me on crash_me (b)
+ ###> OK
+ ###< drop index crash_me on crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+index_parts=yes # index on column part (extension)
+ ###< create index crash_q on crash_me (b(5))
+ ###> OK
+ ###< drop index crash_q on crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+inner_join=yes # inner join
+ ###< select crash_me.a from crash_me inner join crash_me2 ON crash_me.a=crash_me2.a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_default_values=no # INSERT DEFAULT VALUES
+ ###< create table crash_me_q (a int)
+ ###> OK
+ ###< insert into crash_me_q DEFAULT VALUES
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT VALUES' at line 1
+ ###< drop table crash_me_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+insert_empty_string=yes # insert empty string
+ ###< create table crash_q (a char(10) not null,b char(10))
+ ###> OK
+ ###< insert into crash_q values ('','')
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_multi_value=yes # INSERT with Value lists
+ ###< create table crash_q (s char(10))
+ ###> OK
+ ###< insert into crash_q values ('a'),('b')
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_select=yes # insert INTO ... SELECT ...
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< insert into crash_q (a) SELECT crash_me.a from crash_me
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_with_default=yes # INSERT with DEFAULT
+ ###< create table crash_me_q (a int)
+ ###> OK
+ ###< insert into crash_me_q (a) values (DEFAULT)
+ ###> OK
+ ###< drop table crash_me_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_with_empty_value_list=no # INSERT with empty value list
+ ###< create table crash_me_q (a int)
+ ###> OK
+ ###< insert into crash_me_q (a) values ()
+ ###> execute error:Column count doesn't match value count at row 1
+ ###< drop table crash_me_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+insert_with_set=yes # INSERT with set syntax
+ ###< create table crash_q (a integer)
+ ###> OK
+ ###< insert into crash_q SET a=1
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+intersect=no # intersect
+ ###< select * from crash_me intersect select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+intersect_all=no # intersect all
+ ###< select * from crash_me intersect all select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+intersect_all_incompat=no # intersect all (incompatible lists)
+ ###< select * from crash_me intersect all select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+intersect_incompat=no # intersect (incompatible lists)
+ ###< select * from crash_me intersect select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+join_tables=61 # tables in join
+ ###We are trying (example with N=5):
+ ###select crash_me.a,t0.a,t1.a,t2.a,t3.a,t4.a from crash_me,crash_me t0,crash_me t1,crash_me t2,crash_me t3,crash_me t4
+ ### 32:OK 48:OK 56:OK 60:OK 62:FAIL 61:FAIL
+left_outer_join=yes # left outer join
+ ###< select crash_me.a from crash_me left join crash_me2 ON crash_me.a=crash_me2.a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+left_outer_join_using=yes # left outer join using
+ ###< select c1 from crash_me left join crash_me2 using (a)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+length_of_varchar_field=actual length # CHARACTER_LENGTH(varchar_field)
+ ###< CREATE TABLE crash_me1 (S1 VARCHAR(100))
+ ###> OK
+ ###< INSERT INTO crash_me1 VALUES ('X')
+ ###> OK
+ ###
+ ###< SELECT CHARACTER_LENGTH(S1) FROM crash_me1
+ ### > 1
+ ###< drop table crash_me1
+ ###> OK
+like_with_column=yes # column LIKE column
+ ###< create table crash_q (a char(10),b char(10))
+ ###> OK
+ ###< insert into crash_q values('abc','abc')
+ ###> OK
+ ###< select * from crash_q where a like b
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+like_with_number=yes # LIKE on numbers
+ ###< create table crash_q (a int,b int)
+ ###> OK
+ ###< insert into crash_q values(10,10)
+ ###> OK
+ ###< select * from crash_q where a like '10'
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+lock_tables=yes # lock table
+ ###< lock table crash_me READ
+ ###> OK
+ ###< unlock tables
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+logical_value=1 # Value of logical operation (1=1)
+ ###<select (1=1)
+ ###>1
+max_big_expressions=10 # big expressions
+ ###We are trying (example with N=5):
+ ###select 0+(1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+...(14328)
+ ### 50:FAIL 10:OK 30:FAIL 14:FAIL 11:FAIL
+max_char_size=1048543 # max char() size
+ ###We are trying (example with N=5):
+ ###create table crash_q (q char(5))
+ ###insert into crash_q values ('aaaaa')
+ ###select * from crash_q
+ ### 524287:OK 786431:OK 917503:OK 983039:OK 1015807:OK 1032191:OK 1040383:OK 1044479:OK 1046527:OK 1047551:OK 1048063:OK 1048319:OK 1048447:OK 1048511:OK 1048543:OK 1048559:FAIL 1048546:FAIL 1048544:FAIL
+max_column_name=64 # column name length
+ ###We are trying (example with N=5):
+ ###create table crash_q (qaaaaa integer)
+ ###insert into crash_q (qaaaaa) values(1)
+ ###select qaaaaa from crash_q
+ ### 256:FAIL 51:OK 153:FAIL 72:FAIL 55:OK 63:OK 67:FAIL 64:FAIL
+max_columns=2599 # Columns in table
+ ###We are trying (example with N=5):
+ ###create table crash_q (a integer ,a0 integer,a1 integer,a2 integer,a3 integer,a4 integer)
+ ### 4096:FAIL 819:OK 2457:OK 3276:FAIL 2621:FAIL 2490:OK 2555:OK 2588:OK 2604:FAIL 2591:OK 2597:OK 2600:FAIL 2598:OK 2599:FAIL
+max_conditions=85660 # OR and AND in WHERE
+ ###We are trying (example with N=5):
+ ###select a from crash_me where a=1 and b='a' or a=0 and b='0' or a=1 and b='1' or a=2 and b='2' or a=3 and b='3' or a=4 and b='4'
+ ### 27592:OK 41389:OK 48287:FAIL 42769:OK 45528:FAIL 43321:FAIL 42880:FAIL 42791:OK 42835:FAIL 42800:OK 42817:OK 42826:OK 42830:OK 42832:FAIL 42831:FAIL
+max_expressions=1452 # simple expressions
+ ###We are trying (example with N=5):
+ ###select 1+1+1+1+1+1
+ ### 5000:FAIL 1000:OK 3000:FAIL 1400:OK 2200:FAIL 1560:FAIL 1432:OK 1496:FAIL 1445:OK 1470:FAIL 1450:OK 1460:FAIL 1452:OK 1456:FAIL 1453:FAIL
+max_index=32 # max index
+ ### max_unique_index=32 ,so max_index must be same
+ ### max_unique_index=32 ,so max_index must be same
+ ### max_unique_index=32 ,so max_index must be same
+max_index_length=500 # index length
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 char(5) not null,unique (q0))
+ ###insert into crash_q values('aaaaa')
+ ### 4096:FAIL 819:FAIL 164:OK 491:OK 655:FAIL 524:FAIL 498:OK 511:FAIL 501:FAIL 499:OK 500:OK
+max_index_name=64 # index name length
+ ###We are trying (example with N=5):
+ ###create index crash_qaaaaa on crash_me (a)
+ ### 256:FAIL 51:OK 153:FAIL 72:FAIL 55:OK 63:FAIL 57:OK 60:FAIL 58:FAIL
+max_index_part_length=255 # max index part length
+ ###We are trying (example with N=5):
+ ###create table crash_q (q char(5) not null,unique(q))
+ ###insert into crash_q (q) values ('aaaaa')
+ ###select q from crash_q
+ ### 524271:FAIL 104854:FAIL 20971:FAIL 4194:FAIL 839:FAIL 168:OK 503:FAIL 235:OK 369:FAIL 262:FAIL 241:OK 251:OK 256:FAIL 252:OK 254:OK 255:OK
+max_index_parts=16 # index parts
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 integer not null,q1 integer not null,q2 integer not null,q3 integer not null,q4 integer not nul...(1263)
+ ###insert into crash_q (q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20,q21,q22,q23,q24,q25,q26,q...(284)
+ ###select q0 from crash_q
+ ### 32:FAIL 7:OK 19:FAIL 10:OK 14:OK 16:FAIL 15:OK
+max_index_varchar_part_length=255 # index varchar part length
+ ###We are trying (example with N=5):
+ ###create table crash_q (q varchar(5) not null,unique(q))
+ ###insert into crash_q (q) values ('aaaaa')
+ ###select q from crash_q
+ ### 524271:FAIL 104854:FAIL 20971:FAIL 4194:FAIL 839:FAIL 168:OK 503:FAIL 235:OK 369:FAIL 262:FAIL 241:OK 251:OK 256:FAIL 252:OK 254:OK 255:OK
+max_row_length=65534 # max table row length (without blobs)
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 char(5) not null)
+ ###insert into crash_q values ('aaaaa')
+ ### 331372:FAIL 66275:FAIL 13255:OK 39765:OK 53020:OK 59647:OK 62961:OK 64618:OK 65446:OK 65860:FAIL 65529:OK 65694:FAIL 65562:FAIL 65536:FAIL 65531:OK 65533:OK 65534:OK 65535:FAIL
+max_row_length_with_null=65502 # table row length with nulls (without blobs)
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 char(5) )
+ ###insert into crash_q values ('aaaaa')
+ ### 65534:FAIL 13107:OK 39320:OK 52427:OK 58980:OK 62257:OK 63895:OK 64714:OK 65124:OK 65329:OK 65431:OK 65482:OK 65508:FAIL 65487:OK 65497:OK 65502:OK 65505:FAIL 65503:FAIL
+max_select_alias_name=+512 # select alias name length
+ ###We are trying (example with N=5):
+ ###select b as aaaaa from crash_me
+max_stack_expression=1452 # stacked expressions
+ ###We are trying (example with N=5):
+ ###select 1+(1+(1+(1+(1+(1)))))
+ ### 1000:OK 1500:FAIL 1100:OK 1300:OK 1400:OK 1450:OK 1475:FAIL 1455:FAIL 1451:OK 1453:FAIL 1452:OK
+max_table_alias_name=+512 # table alias name length
+ ###We are trying (example with N=5):
+ ###select aaaaa.b from crash_me aaaaa
+max_table_name=64 # table name length
+ ###We are trying (example with N=5):
+ ###create table crash_qaaaaa (q integer)
+ ###insert into crash_qaaaaa values(1)
+ ###select * from crash_qaaaaa
+ ### 256:FAIL 51:OK 153:FAIL 72:FAIL 55:OK 63:FAIL 57:OK 60:FAIL 58:FAIL
+max_text_size=1048543 # max text or blob size
+ ###We are trying (example with N=5):
+ ###create table crash_q (q mediumtext)
+ ###insert into crash_q values ('aaaaa')
+ ###select * from crash_q
+ ### 524272:OK 786408:OK 917476:OK 983010:OK 1015777:OK 1032161:OK 1040353:OK 1044449:OK 1046497:OK 1047521:OK 1048033:OK 1048289:OK 1048417:OK 1048481:OK 1048513:OK 1048529:OK 1048537:OK 1048541:OK 1048543:OK 1048544:FAIL
+max_unique_index=32 # unique indexes
+ ###We are trying (example with N=5):
+ ###create table crash_q (q integer,q1 integer not null,unique (q1),q2 integer not null,unique (q2),q3 integer not null,uniq...(72)
+ ###insert into crash_q (q,q1,q2,q3,q4,q5) values (1,1,1,1,1,1)
+ ###select q from crash_q
+ ### 32:OK 48:FAIL 35:FAIL 33:FAIL
+max_varchar_size=1048543 # max varchar() size
+ ###We are trying (example with N=5):
+ ###create table crash_q (q varchar(5))
+ ###insert into crash_q values ('aaaaa')
+ ###select * from crash_q
+ ### 524287:OK 786431:OK 917503:OK 983039:OK 1015807:OK 1032191:OK 1040383:OK 1044479:OK 1046527:OK 1047551:OK 1048063:OK 1048319:OK 1048447:OK 1048511:OK 1048543:OK 1048559:FAIL 1048546:FAIL 1048544:FAIL
+minus=no # minus
+ ###< select * from crash_me minus select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+minus_incompat=no # minus (incompatible lists)
+ ###< select * from crash_me minus select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+minus_neg=yes # Calculate 1--1
+ ###
+ ###<select a--1 from crash_me
+ ###>2
+multi_drop=yes # many tables to drop table
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< create table crash_q2 (a int)
+ ###> OK
+ ###< drop table crash_q,crash_q2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+multi_null_in_unique=yes # null in unique index
+ ###< create table crash_q (q integer, x integer,unique (q))
+ ###> OK
+ ###< insert into crash_q(x) values(1)
+ ###> OK
+ ###< insert into crash_q(x) values(2)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+multi_strings=yes # Multiple line strings
+ ###
+ ###<select a from crash_me where b < 'a'
+ ###'b'
+ ###>1
+multi_table_delete=yes # DELETE FROM table1,table2...
+ ###< create table crash_q (a integer,b char(10))
+ ###> OK
+ ###< insert into crash_q values(1,'c')
+ ###> OK
+ ###< delete crash_q.* from crash_q,crash_me where crash_q.a=crash_me.a
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+multi_table_update=yes # Update with many tables
+ ###< create table crash_q (a integer,b char(10))
+ ###> OK
+ ###< insert into crash_q values(1,'c')
+ ###> OK
+ ###< update crash_q left join crash_me on crash_q.a=crash_me.a set crash_q.b=crash_me.b
+ ###> OK
+ ###
+ ###<select b from crash_q
+ ###>a
+ ###
+ ###< drop table crash_q
+ ###> OK
+natural_join=yes # natural join
+ ###< select * from crash_me natural join crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+natural_join_incompat=yes # natural join (incompatible lists)
+ ###< select c1 from crash_me natural join crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+natural_left_outer_join=yes # natural left outer join
+ ###< select c1 from crash_me natural left join crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+no_primary_key=yes # Tables without primary key
+ ###< create table crash_me (a integer not null,b char(10) not null)
+ ###> OK
+ ###< insert into crash_me (a,b) values (1,'a')
+ ###> OK
+ ###< create table crash_me (a integer not null,b char(10) not null)
+ ###> OK
+ ###< insert into crash_me (a,b) values (1,'a')
+ ###> OK
+ ###< create table crash_me (a integer not null,b char(10) not null)
+ ###> OK
+ ###< insert into crash_me (a,b) values (1,'a')
+ ###> OK
+not_id_between=no # NOT ID BETWEEN interprets as ID NOT BETWEEN
+ ###< create table crash_me_b (i int)
+ ###> OK
+ ###< insert into crash_me_b values(2)
+ ###> OK
+ ###< insert into crash_me_b values(5)
+ ###> OK
+ ###
+ ###<select i from crash_me_b where not i between 1 and 3
+ ###> didn't return any result:
+ ###
+ ###< drop table crash_me_b
+ ###> OK
+ ###< create table crash_me_b (i int)
+ ###> OK
+ ###< insert into crash_me_b values(2)
+ ###> OK
+ ###< insert into crash_me_b values(5)
+ ###> OK
+ ###
+ ###<select i from crash_me_b where not i between 1 and 3
+ ###> didn't return any result:
+ ###
+ ###< drop table crash_me_b
+ ###> OK
+ ###< create table crash_me_b (i int)
+ ###> OK
+ ###< insert into crash_me_b values(2)
+ ###> OK
+ ###< insert into crash_me_b values(5)
+ ###> OK
+ ###
+ ###<select i from crash_me_b where not i between 1 and 3
+ ###> didn't return any result:
+ ###
+ ###< drop table crash_me_b
+ ###> OK
+null_concat_expr=yes # Is concat('a',NULL) = NULL
+ ###
+ ###<select concat('a',NULL)
+ ###>
+null_in_index=yes # null in index
+ ###< create table crash_q (a char(10),index (a))
+ ###> OK
+ ###< insert into crash_q values (NULL)
+ ###> OK
+ ###
+ ###<select * from crash_q
+ ###>
+ ###
+ ###< drop table crash_q
+ ###> OK
+null_in_unique=yes # null in unique index
+ ###< create table crash_q (q integer,unique (q))
+ ###> OK
+ ###< insert into crash_q (q) values(NULL)
+ ###> OK
+ ###< insert into crash_q (q) values(NULL)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+null_num_expr=yes # Is 1+NULL = NULL
+ ###
+ ###<select 1+NULL
+ ###>
+nulls_in_unique=yes # null combination in unique index
+ ###< create table crash_q (q integer,q1 integer,unique (q,q1))
+ ###> OK
+ ###< insert into crash_q (q,q1) values(1,NULL)
+ ###> OK
+ ###< insert into crash_q (q,q1) values(1,NULL)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+odbc_left_outer_join=yes # left outer join odbc style
+ ###< select crash_me.a from { oj crash_me left outer join crash_me2 ON crash_me.a=crash_me2.a }
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+operating_system=Linux 2.4.20-64GB-SMP i686 # crash-me tested on
+order_by=yes # Order by
+ ###< select a from crash_me order by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_by_alias=yes # Order by alias
+ ###< select a as ab from crash_me order by ab
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_by_function=yes # Order by function
+ ###< select a from crash_me order by a+1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_by_position=yes # Order by position
+ ###< select a from crash_me order by 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_on_unused=yes # Order by on unused column
+ ###< select b from crash_me order by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+position_of_null=first # Where is null values in sorted recordset
+ ###< insert into crash_me_n (i) values(1)
+ ###> OK
+ ###< insert into crash_me_n values(2,2)
+ ###> OK
+ ###< insert into crash_me_n values(3,3)
+ ###> OK
+ ###< insert into crash_me_n values(4,4)
+ ###> OK
+ ###< insert into crash_me_n (i) values(5)
+ ###> OK
+ ###
+ ###< select r from crash_me_n order by r
+ ###>
+ ###>
+ ###> 2
+ ###> 3
+ ###> 4
+ ###< insert into crash_me_n (i) values(1)
+ ###> OK
+ ###< insert into crash_me_n values(2,2)
+ ###> OK
+ ###< insert into crash_me_n values(3,3)
+ ###> OK
+ ###< insert into crash_me_n values(4,4)
+ ###> OK
+ ###< insert into crash_me_n (i) values(5)
+ ###> OK
+ ###< insert into crash_me_n (i) values(1)
+ ###> OK
+ ###< insert into crash_me_n values(2,2)
+ ###> OK
+ ###< insert into crash_me_n values(3,3)
+ ###> OK
+ ###< insert into crash_me_n values(4,4)
+ ###> OK
+ ###< insert into crash_me_n (i) values(5)
+ ###> OK
+position_of_null_desc=last # Where is null values in sorted recordset (DESC)
+ ###< select r from crash_me_n order by r desc
+ ###> 4
+ ###> 3
+ ###> 2
+ ###>
+ ###>
+primary_key_in_create=yes # primary key in create table
+ ###< create table crash_q (q integer not null,primary key (q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+psm_functions=no # PSM functions (ANSI SQL)
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< create function crash_func(in a1 int, in b1 int) returns int language sql deterministic contains sql begin return a1 * b1; end
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'in a1 int, in b1 int) returns int language sql deterministic co
+ ###< insert into crash_q values(crash_func(2,4))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(2,4))' at line 1
+ ###< select a,crash_func(a,2) from crash_q
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a,2) from crash_q' at line 1
+ ###< drop function crash_func cascade
+ ###> execute error:Failed to DROP FUNCTION crash_func
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+psm_modules=no # PSM modules (ANSI SQL)
+ ###< create table crash_q (a int,b int)
+ ###> OK
+ ###< create module crash_m declare procedure crash_proc(in a1 int, in b1 int) language sql modifies sql data begin declare c1 int; set c1 = a1 + b1; insert into crash_q(a,b) values (a1,c1); end; declare procedure crash_proc2(INOUT a int, in b int) contains sql set a = b + 10; end module
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'module crash_m declare procedure crash_proc(in a1 int, in b1 in
+ ###< call crash_proc(1,10)
+ ###> execute error:PROCEDURE crash_proc does not exist
+ ###< drop module crash_m cascade
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'module crash_m cascade' at line 1
+ ###< drop table crash_q cascade
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+psm_procedures=no # PSM procedures (ANSI SQL)
+ ###< create table crash_q (a int,b int)
+ ###> OK
+ ###< create procedure crash_proc(in a1 int, in b1 int) language sql modifies sql data begin declare c1 int; set c1 = a1 + b1; insert into crash_q(a,b) values (a1,c1); end
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'sql data begin declare c1 int; set c1 = a1 + b1; insert into cr
+ ###< call crash_proc(1,10)
+ ###> execute error:PROCEDURE crash_proc does not exist
+ ###< drop procedure crash_proc
+ ###> execute error:Failed to DROP PROCEDURE crash_proc
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+psm_trigger=no # Triggers (ANSI SQL)
+ ###< create table crash_q (a int ,b int)
+ ###> OK
+ ###< create trigger crash_trigger after insert on crash_q referencing new table as new_a when (localtime > time '18:00:00') begin atomic end
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger crash_trigger after insert on crash_q referencing new t
+ ###< insert into crash_q values(1,2)
+ ###> OK
+ ###< drop trigger crash_trigger
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger crash_trigger' at line 1
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+query_size=1048574 # query size
+quote_ident_with_"=error # " as identifier quote (ANSI SQL)
+ ###
+ ###<select "A" from crash_me
+ ###>A
+ ###We expected '1' but got 'A'
+quote_ident_with_[=no # [] as identifier quote
+ ###
+ ###<select [A] from crash_me
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '[A] from crash_me' at line 1
+quote_ident_with_`=yes # ` as identifier quote
+ ###
+ ###<select `A` from crash_me
+ ###>1
+quote_ident_with_dbl_"=no # Double "" in identifiers as "
+ ###< create table crash_me1 ("abc""d" integer)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '"abc""d" integer)' at line 1
+ ###< drop table crash_me1
+ ###> execute error:Unknown table 'crash_me1'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+quote_with_"=yes # Allows ' and " as string markers
+ ###< select a from crash_me where b<"c"
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+recursive_subqueries=+64 # recursive subqueries
+ ###We are trying (example with N=5):
+ ###select a from crash_me where a in (select a from crash_me where a in (select a from crash_me where a in (select a from c...(82)
+remember_end_space=no # Remembers end space in char()
+ ###< create table crash_q (a char(10))
+ ###> OK
+ ###< insert into crash_q values('hello ')
+ ###> OK
+ ###
+ ###<select a from crash_q where a = 'hello '
+ ###>hello
+ ###We expected 'hello ' but got 'hello'
+ ###
+ ###< drop table crash_q
+ ###> OK
+remember_end_space_varchar=no # Remembers end space in varchar()
+ ###< create table crash_q (a varchar(10))
+ ###> OK
+ ###< insert into crash_q values('hello ')
+ ###> OK
+ ###
+ ###<select a from crash_q where a = 'hello '
+ ###>hello
+ ###We expected 'hello ' but got 'hello'
+ ###
+ ###< drop table crash_q
+ ###> OK
+rename_table=yes # rename table
+ ###< create table crash_q (a integer, b integer,c1 CHAR(10))
+ ###> OK
+ ###< rename table crash_q to crash_q1
+ ###> OK
+ ###< drop table crash_q1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+repeat_string_size=1047552 # return string size from function
+ ###We are trying (example with N=5):
+ ###select repeat('a',5)
+ ### 4000000:FAIL 800000:OK 2400000:FAIL 1120000:FAIL 864000:OK 992000:OK 1056000:FAIL 1004800:OK 1030400:OK 1043200:OK 1049600:FAIL 1044480:OK 1047040:OK 1048320:FAIL 1047296:OK 1047808:FAIL 1047399:OK 1047603:FAIL 1047440:OK 1047521:OK 1047562:FAIL 1047529:OK 1047545:OK 1047553:FAIL 1047547:OK 1047550:OK 1047551:OK 1047552:OK
+reserved_word_ansi-92/99_absolute=no # Keyword ABSOLUTE
+ ###< create table crash_me10 (ABSOLUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_action=no # Keyword ACTION
+ ###< create table crash_me10 (ACTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_add=yes # Keyword ADD
+ ###< create table crash_me10 (ADD int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ADD int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_after=no # Keyword AFTER
+ ###< create table crash_me10 (AFTER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_alias=no # Keyword ALIAS
+ ###< create table crash_me10 (ALIAS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_all=yes # Keyword ALL
+ ###< create table crash_me10 (ALL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_allocate=no # Keyword ALLOCATE
+ ###< create table crash_me10 (ALLOCATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_alter=yes # Keyword ALTER
+ ###< create table crash_me10 (ALTER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_and=yes # Keyword AND
+ ###< create table crash_me10 (AND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_any=no # Keyword ANY
+ ###< create table crash_me10 (ANY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_are=no # Keyword ARE
+ ###< create table crash_me10 (ARE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_as=yes # Keyword AS
+ ###< create table crash_me10 (AS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_asc=yes # Keyword ASC
+ ###< create table crash_me10 (ASC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_assertion=no # Keyword ASSERTION
+ ###< create table crash_me10 (ASSERTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_at=no # Keyword AT
+ ###< create table crash_me10 (AT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_authorization=no # Keyword AUTHORIZATION
+ ###< create table crash_me10 (AUTHORIZATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_before=yes # Keyword BEFORE
+ ###< create table crash_me10 (BEFORE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEFORE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_begin=no # Keyword BEGIN
+ ###< create table crash_me10 (BEGIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_bit=no # Keyword BIT
+ ###< create table crash_me10 (BIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_boolean=no # Keyword BOOLEAN
+ ###< create table crash_me10 (BOOLEAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_both=yes # Keyword BOTH
+ ###< create table crash_me10 (BOTH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BOTH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_breadth=no # Keyword BREADTH
+ ###< create table crash_me10 (BREADTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_by=yes # Keyword BY
+ ###< create table crash_me10 (BY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_call=yes # Keyword CALL
+ ###< create table crash_me10 (CALL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CALL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cascade=yes # Keyword CASCADE
+ ###< create table crash_me10 (CASCADE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASCADE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cascaded=no # Keyword CASCADED
+ ###< create table crash_me10 (CASCADED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_case=yes # Keyword CASE
+ ###< create table crash_me10 (CASE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cast=no # Keyword CAST
+ ###< create table crash_me10 (CAST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_catalog=no # Keyword CATALOG
+ ###< create table crash_me10 (CATALOG int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_char=yes # Keyword CHAR
+ ###< create table crash_me10 (CHAR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_character=yes # Keyword CHARACTER
+ ###< create table crash_me10 (CHARACTER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHARACTER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_check=yes # Keyword CHECK
+ ###< create table crash_me10 (CHECK int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_close=no # Keyword CLOSE
+ ###< create table crash_me10 (CLOSE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_collate=yes # Keyword COLLATE
+ ###< create table crash_me10 (COLLATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLLATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_collation=no # Keyword COLLATION
+ ###< create table crash_me10 (COLLATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_column=yes # Keyword COLUMN
+ ###< create table crash_me10 (COLUMN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_commit=no # Keyword COMMIT
+ ###< create table crash_me10 (COMMIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_completion=no # Keyword COMPLETION
+ ###< create table crash_me10 (COMPLETION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_connect=no # Keyword CONNECT
+ ###< create table crash_me10 (CONNECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_connection=yes # Keyword CONNECTION
+ ###< create table crash_me10 (CONNECTION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONNECTION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_constraint=yes # Keyword CONSTRAINT
+ ###< create table crash_me10 (CONSTRAINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_constraints=no # Keyword CONSTRAINTS
+ ###< create table crash_me10 (CONSTRAINTS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_continue=yes # Keyword CONTINUE
+ ###< create table crash_me10 (CONTINUE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONTINUE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_corresponding=no # Keyword CORRESPONDING
+ ###< create table crash_me10 (CORRESPONDING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_create=yes # Keyword CREATE
+ ###< create table crash_me10 (CREATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cross=yes # Keyword CROSS
+ ###< create table crash_me10 (CROSS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CROSS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current=no # Keyword CURRENT
+ ###< create table crash_me10 (CURRENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_current_date=yes # Keyword CURRENT_DATE
+ ###< create table crash_me10 (CURRENT_DATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current_time=yes # Keyword CURRENT_TIME
+ ###< create table crash_me10 (CURRENT_TIME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_TIME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current_timestamp=yes # Keyword CURRENT_TIMESTAMP
+ ###< create table crash_me10 (CURRENT_TIMESTAMP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_TIMESTAMP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current_user=no # Keyword CURRENT_USER
+ ###< create table crash_me10 (CURRENT_USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_cursor=yes # Keyword CURSOR
+ ###< create table crash_me10 (CURSOR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURSOR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cycle=no # Keyword CYCLE
+ ###< create table crash_me10 (CYCLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_data=no # Keyword DATA
+ ###< create table crash_me10 (DATA int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_date=no # Keyword DATE
+ ###< create table crash_me10 (DATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_day=no # Keyword DAY
+ ###< create table crash_me10 (DAY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_deallocate=no # Keyword DEALLOCATE
+ ###< create table crash_me10 (DEALLOCATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_dec=yes # Keyword DEC
+ ###< create table crash_me10 (DEC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_decimal=yes # Keyword DECIMAL
+ ###< create table crash_me10 (DECIMAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECIMAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_declare=yes # Keyword DECLARE
+ ###< create table crash_me10 (DECLARE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_default=yes # Keyword DEFAULT
+ ###< create table crash_me10 (DEFAULT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_deferrable=no # Keyword DEFERRABLE
+ ###< create table crash_me10 (DEFERRABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_deferred=no # Keyword DEFERRED
+ ###< create table crash_me10 (DEFERRED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_delete=yes # Keyword DELETE
+ ###< create table crash_me10 (DELETE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_depth=no # Keyword DEPTH
+ ###< create table crash_me10 (DEPTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_desc=yes # Keyword DESC
+ ###< create table crash_me10 (DESC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_describe=yes # Keyword DESCRIBE
+ ###< create table crash_me10 (DESCRIBE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESCRIBE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_descriptor=no # Keyword DESCRIPTOR
+ ###< create table crash_me10 (DESCRIPTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_diagnostics=no # Keyword DIAGNOSTICS
+ ###< create table crash_me10 (DIAGNOSTICS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_dictionary=no # Keyword DICTIONARY
+ ###< create table crash_me10 (DICTIONARY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_disconnect=no # Keyword DISCONNECT
+ ###< create table crash_me10 (DISCONNECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_distinct=yes # Keyword DISTINCT
+ ###< create table crash_me10 (DISTINCT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_domain=no # Keyword DOMAIN
+ ###< create table crash_me10 (DOMAIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_double=yes # Keyword DOUBLE
+ ###< create table crash_me10 (DOUBLE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DOUBLE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_drop=yes # Keyword DROP
+ ###< create table crash_me10 (DROP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_each=no # Keyword EACH
+ ###< create table crash_me10 (EACH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_else=yes # Keyword ELSE
+ ###< create table crash_me10 (ELSE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_elseif=yes # Keyword ELSEIF
+ ###< create table crash_me10 (ELSEIF int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSEIF int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_end=no # Keyword END
+ ###< create table crash_me10 (END int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_end-exec=yes # Keyword END-EXEC
+ ###< create table crash_me10 (END-EXEC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '-EXEC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_equals=no # Keyword EQUALS
+ ###< create table crash_me10 (EQUALS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_escape=no # Keyword ESCAPE
+ ###< create table crash_me10 (ESCAPE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_except=no # Keyword EXCEPT
+ ###< create table crash_me10 (EXCEPT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_exception=no # Keyword EXCEPTION
+ ###< create table crash_me10 (EXCEPTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_exec=no # Keyword EXEC
+ ###< create table crash_me10 (EXEC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_execute=no # Keyword EXECUTE
+ ###< create table crash_me10 (EXECUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_external=no # Keyword EXTERNAL
+ ###< create table crash_me10 (EXTERNAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_false=yes # Keyword FALSE
+ ###< create table crash_me10 (FALSE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FALSE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_fetch=yes # Keyword FETCH
+ ###< create table crash_me10 (FETCH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FETCH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_first=no # Keyword FIRST
+ ###< create table crash_me10 (FIRST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_float=yes # Keyword FLOAT
+ ###< create table crash_me10 (FLOAT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FLOAT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_for=yes # Keyword FOR
+ ###< create table crash_me10 (FOR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_foreign=yes # Keyword FOREIGN
+ ###< create table crash_me10 (FOREIGN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_found=yes # Keyword FOUND
+ ###< create table crash_me10 (FOUND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOUND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_from=yes # Keyword FROM
+ ###< create table crash_me10 (FROM int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_full=no # Keyword FULL
+ ###< create table crash_me10 (FULL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_general=no # Keyword GENERAL
+ ###< create table crash_me10 (GENERAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_get=no # Keyword GET
+ ###< create table crash_me10 (GET int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_global=no # Keyword GLOBAL
+ ###< create table crash_me10 (GLOBAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_go=no # Keyword GO
+ ###< create table crash_me10 (GO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_goto=no # Keyword GOTO
+ ###< create table crash_me10 (GOTO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_grant=yes # Keyword GRANT
+ ###< create table crash_me10 (GRANT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'GRANT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_group=yes # Keyword GROUP
+ ###< create table crash_me10 (GROUP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_having=yes # Keyword HAVING
+ ###< create table crash_me10 (HAVING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HAVING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_hour=no # Keyword HOUR
+ ###< create table crash_me10 (HOUR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_identity=no # Keyword IDENTITY
+ ###< create table crash_me10 (IDENTITY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_if=yes # Keyword IF
+ ###< create table crash_me10 (IF int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_ignore=yes # Keyword IGNORE
+ ###< create table crash_me10 (IGNORE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IGNORE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_immediate=no # Keyword IMMEDIATE
+ ###< create table crash_me10 (IMMEDIATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_in=yes # Keyword IN
+ ###< create table crash_me10 (IN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_indicator=no # Keyword INDICATOR
+ ###< create table crash_me10 (INDICATOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_initially=no # Keyword INITIALLY
+ ###< create table crash_me10 (INITIALLY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_inner=yes # Keyword INNER
+ ###< create table crash_me10 (INNER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_input=no # Keyword INPUT
+ ###< create table crash_me10 (INPUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_insert=yes # Keyword INSERT
+ ###< create table crash_me10 (INSERT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_int=yes # Keyword INT
+ ###< create table crash_me10 (INT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_integer=yes # Keyword INTEGER
+ ###< create table crash_me10 (INTEGER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTEGER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_intersect=no # Keyword INTERSECT
+ ###< create table crash_me10 (INTERSECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_interval=yes # Keyword INTERVAL
+ ###< create table crash_me10 (INTERVAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTERVAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_into=yes # Keyword INTO
+ ###< create table crash_me10 (INTO int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_is=yes # Keyword IS
+ ###< create table crash_me10 (IS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_isolation=no # Keyword ISOLATION
+ ###< create table crash_me10 (ISOLATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_join=yes # Keyword JOIN
+ ###< create table crash_me10 (JOIN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_key=yes # Keyword KEY
+ ###< create table crash_me10 (KEY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_language=no # Keyword LANGUAGE
+ ###< create table crash_me10 (LANGUAGE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_last=no # Keyword LAST
+ ###< create table crash_me10 (LAST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_leading=yes # Keyword LEADING
+ ###< create table crash_me10 (LEADING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEADING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_leave=yes # Keyword LEAVE
+ ###< create table crash_me10 (LEAVE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEAVE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_left=yes # Keyword LEFT
+ ###< create table crash_me10 (LEFT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_less=no # Keyword LESS
+ ###< create table crash_me10 (LESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_level=no # Keyword LEVEL
+ ###< create table crash_me10 (LEVEL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_like=yes # Keyword LIKE
+ ###< create table crash_me10 (LIKE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_limit=yes # Keyword LIMIT
+ ###< create table crash_me10 (LIMIT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_local=no # Keyword LOCAL
+ ###< create table crash_me10 (LOCAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_loop=yes # Keyword LOOP
+ ###< create table crash_me10 (LOOP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOOP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_match=yes # Keyword MATCH
+ ###< create table crash_me10 (MATCH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_minute=no # Keyword MINUTE
+ ###< create table crash_me10 (MINUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_modify=no # Keyword MODIFY
+ ###< create table crash_me10 (MODIFY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_module=no # Keyword MODULE
+ ###< create table crash_me10 (MODULE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_month=no # Keyword MONTH
+ ###< create table crash_me10 (MONTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_names=no # Keyword NAMES
+ ###< create table crash_me10 (NAMES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_national=no # Keyword NATIONAL
+ ###< create table crash_me10 (NATIONAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_natural=yes # Keyword NATURAL
+ ###< create table crash_me10 (NATURAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NATURAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_nchar=no # Keyword NCHAR
+ ###< create table crash_me10 (NCHAR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_new=no # Keyword NEW
+ ###< create table crash_me10 (NEW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_next=no # Keyword NEXT
+ ###< create table crash_me10 (NEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_no=no # Keyword NO
+ ###< create table crash_me10 (NO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_none=no # Keyword NONE
+ ###< create table crash_me10 (NONE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_not=yes # Keyword NOT
+ ###< create table crash_me10 (NOT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_null=yes # Keyword NULL
+ ###< create table crash_me10 (NULL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_numeric=yes # Keyword NUMERIC
+ ###< create table crash_me10 (NUMERIC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NUMERIC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_object=no # Keyword OBJECT
+ ###< create table crash_me10 (OBJECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_of=no # Keyword OF
+ ###< create table crash_me10 (OF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_off=no # Keyword OFF
+ ###< create table crash_me10 (OFF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_old=no # Keyword OLD
+ ###< create table crash_me10 (OLD int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_on=yes # Keyword ON
+ ###< create table crash_me10 (ON int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_only=no # Keyword ONLY
+ ###< create table crash_me10 (ONLY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_open=no # Keyword OPEN
+ ###< create table crash_me10 (OPEN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_operation=no # Keyword OPERATION
+ ###< create table crash_me10 (OPERATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_option=yes # Keyword OPTION
+ ###< create table crash_me10 (OPTION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_or=yes # Keyword OR
+ ###< create table crash_me10 (OR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_order=yes # Keyword ORDER
+ ###< create table crash_me10 (ORDER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_outer=yes # Keyword OUTER
+ ###< create table crash_me10 (OUTER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_output=no # Keyword OUTPUT
+ ###< create table crash_me10 (OUTPUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_pad=no # Keyword PAD
+ ###< create table crash_me10 (PAD int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_parameters=no # Keyword PARAMETERS
+ ###< create table crash_me10 (PARAMETERS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_partial=no # Keyword PARTIAL
+ ###< create table crash_me10 (PARTIAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_precision=yes # Keyword PRECISION
+ ###< create table crash_me10 (PRECISION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PRECISION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_preorder=no # Keyword PREORDER
+ ###< create table crash_me10 (PREORDER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_prepare=no # Keyword PREPARE
+ ###< create table crash_me10 (PREPARE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_preserve=no # Keyword PRESERVE
+ ###< create table crash_me10 (PRESERVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_primary=yes # Keyword PRIMARY
+ ###< create table crash_me10 (PRIMARY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_prior=no # Keyword PRIOR
+ ###< create table crash_me10 (PRIOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_privileges=yes # Keyword PRIVILEGES
+ ###< create table crash_me10 (PRIVILEGES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PRIVILEGES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_procedure=yes # Keyword PROCEDURE
+ ###< create table crash_me10 (PROCEDURE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PROCEDURE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_public=no # Keyword PUBLIC
+ ###< create table crash_me10 (PUBLIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_read=yes # Keyword READ
+ ###< create table crash_me10 (READ int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'READ int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_real=yes # Keyword REAL
+ ###< create table crash_me10 (REAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_recursive=no # Keyword RECURSIVE
+ ###< create table crash_me10 (RECURSIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_ref=no # Keyword REF
+ ###< create table crash_me10 (REF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_references=yes # Keyword REFERENCES
+ ###< create table crash_me10 (REFERENCES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_referencing=no # Keyword REFERENCING
+ ###< create table crash_me10 (REFERENCING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_relative=no # Keyword RELATIVE
+ ###< create table crash_me10 (RELATIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_resignal=no # Keyword RESIGNAL
+ ###< create table crash_me10 (RESIGNAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_restrict=yes # Keyword RESTRICT
+ ###< create table crash_me10 (RESTRICT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RESTRICT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_return=yes # Keyword RETURN
+ ###< create table crash_me10 (RETURN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_returns=no # Keyword RETURNS
+ ###< create table crash_me10 (RETURNS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_revoke=yes # Keyword REVOKE
+ ###< create table crash_me10 (REVOKE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REVOKE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_right=yes # Keyword RIGHT
+ ###< create table crash_me10 (RIGHT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RIGHT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_role=no # Keyword ROLE
+ ###< create table crash_me10 (ROLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_rollback=no # Keyword ROLLBACK
+ ###< create table crash_me10 (ROLLBACK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_routine=no # Keyword ROUTINE
+ ###< create table crash_me10 (ROUTINE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_row=no # Keyword ROW
+ ###< create table crash_me10 (ROW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_rows=no # Keyword ROWS
+ ###< create table crash_me10 (ROWS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_savepoint=no # Keyword SAVEPOINT
+ ###< create table crash_me10 (SAVEPOINT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_schema=no # Keyword SCHEMA
+ ###< create table crash_me10 (SCHEMA int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_scroll=no # Keyword SCROLL
+ ###< create table crash_me10 (SCROLL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_search=no # Keyword SEARCH
+ ###< create table crash_me10 (SEARCH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_second=no # Keyword SECOND
+ ###< create table crash_me10 (SECOND int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_section=no # Keyword SECTION
+ ###< create table crash_me10 (SECTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_select=yes # Keyword SELECT
+ ###< create table crash_me10 (SELECT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_sequence=no # Keyword SEQUENCE
+ ###< create table crash_me10 (SEQUENCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_session=no # Keyword SESSION
+ ###< create table crash_me10 (SESSION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_session_user=no # Keyword SESSION_USER
+ ###< create table crash_me10 (SESSION_USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_set=yes # Keyword SET
+ ###< create table crash_me10 (SET int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_signal=no # Keyword SIGNAL
+ ###< create table crash_me10 (SIGNAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_size=no # Keyword SIZE
+ ###< create table crash_me10 (SIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_smallint=yes # Keyword SMALLINT
+ ###< create table crash_me10 (SMALLINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SMALLINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_some=no # Keyword SOME
+ ###< create table crash_me10 (SOME int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_space=no # Keyword SPACE
+ ###< create table crash_me10 (SPACE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_sql=yes # Keyword SQL
+ ###< create table crash_me10 (SQL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_sqlexception=yes # Keyword SQLEXCEPTION
+ ###< create table crash_me10 (SQLEXCEPTION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQLEXCEPTION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_sqlstate=yes # Keyword SQLSTATE
+ ###< create table crash_me10 (SQLSTATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQLSTATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_sqlwarning=yes # Keyword SQLWARNING
+ ###< create table crash_me10 (SQLWARNING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQLWARNING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_structure=no # Keyword STRUCTURE
+ ###< create table crash_me10 (STRUCTURE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_system_user=no # Keyword SYSTEM_USER
+ ###< create table crash_me10 (SYSTEM_USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_table=yes # Keyword TABLE
+ ###< create table crash_me10 (TABLE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_temporary=no # Keyword TEMPORARY
+ ###< create table crash_me10 (TEMPORARY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_then=yes # Keyword THEN
+ ###< create table crash_me10 (THEN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'THEN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_time=no # Keyword TIME
+ ###< create table crash_me10 (TIME int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_timestamp=no # Keyword TIMESTAMP
+ ###< create table crash_me10 (TIMESTAMP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_timezone_hour=no # Keyword TIMEZONE_HOUR
+ ###< create table crash_me10 (TIMEZONE_HOUR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_timezone_minute=no # Keyword TIMEZONE_MINUTE
+ ###< create table crash_me10 (TIMEZONE_MINUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_to=yes # Keyword TO
+ ###< create table crash_me10 (TO int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TO int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_trailing=yes # Keyword TRAILING
+ ###< create table crash_me10 (TRAILING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRAILING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_transaction=no # Keyword TRANSACTION
+ ###< create table crash_me10 (TRANSACTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_translation=no # Keyword TRANSLATION
+ ###< create table crash_me10 (TRANSLATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_trigger=no # Keyword TRIGGER
+ ###< create table crash_me10 (TRIGGER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_true=yes # Keyword TRUE
+ ###< create table crash_me10 (TRUE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRUE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_under=no # Keyword UNDER
+ ###< create table crash_me10 (UNDER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_union=yes # Keyword UNION
+ ###< create table crash_me10 (UNION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_unique=yes # Keyword UNIQUE
+ ###< create table crash_me10 (UNIQUE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_unknown=no # Keyword UNKNOWN
+ ###< create table crash_me10 (UNKNOWN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_update=yes # Keyword UPDATE
+ ###< create table crash_me10 (UPDATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_usage=yes # Keyword USAGE
+ ###< create table crash_me10 (USAGE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'USAGE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_user=no # Keyword USER
+ ###< create table crash_me10 (USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_using=yes # Keyword USING
+ ###< create table crash_me10 (USING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_value=no # Keyword VALUE
+ ###< create table crash_me10 (VALUE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_values=yes # Keyword VALUES
+ ###< create table crash_me10 (VALUES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_varchar=yes # Keyword VARCHAR
+ ###< create table crash_me10 (VARCHAR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_variable=no # Keyword VARIABLE
+ ###< create table crash_me10 (VARIABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_varying=yes # Keyword VARYING
+ ###< create table crash_me10 (VARYING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARYING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_view=no # Keyword VIEW
+ ###< create table crash_me10 (VIEW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_when=yes # Keyword WHEN
+ ###< create table crash_me10 (WHEN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHEN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_whenever=no # Keyword WHENEVER
+ ###< create table crash_me10 (WHENEVER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_where=yes # Keyword WHERE
+ ###< create table crash_me10 (WHERE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_while=yes # Keyword WHILE
+ ###< create table crash_me10 (WHILE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHILE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_with=yes # Keyword WITH
+ ###< create table crash_me10 (WITH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WITH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_without=no # Keyword WITHOUT
+ ###< create table crash_me10 (WITHOUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_work=no # Keyword WORK
+ ###< create table crash_me10 (WORK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_write=yes # Keyword WRITE
+ ###< create table crash_me10 (WRITE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WRITE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_year=no # Keyword YEAR
+ ###< create table crash_me10 (YEAR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_zone=no # Keyword ZONE
+ ###< create table crash_me10 (ZONE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_async=no # Keyword ASYNC
+ ###< create table crash_me10 (ASYNC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_avg=no # Keyword AVG
+ ###< create table crash_me10 (AVG int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_between=yes # Keyword BETWEEN
+ ###< create table crash_me10 (BETWEEN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BETWEEN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_bit_length=no # Keyword BIT_LENGTH
+ ###< create table crash_me10 (BIT_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_char_length=no # Keyword CHAR_LENGTH
+ ###< create table crash_me10 (CHAR_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_character_length=no # Keyword CHARACTER_LENGTH
+ ###< create table crash_me10 (CHARACTER_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_coalesce=no # Keyword COALESCE
+ ###< create table crash_me10 (COALESCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_convert=no # Keyword CONVERT
+ ###< create table crash_me10 (CONVERT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_count=no # Keyword COUNT
+ ###< create table crash_me10 (COUNT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_exists=yes # Keyword EXISTS
+ ###< create table crash_me10 (EXISTS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_extract=no # Keyword EXTRACT
+ ###< create table crash_me10 (EXTRACT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_insensitive=yes # Keyword INSENSITIVE
+ ###< create table crash_me10 (INSENSITIVE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSENSITIVE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_lower=no # Keyword LOWER
+ ###< create table crash_me10 (LOWER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_max=no # Keyword MAX
+ ###< create table crash_me10 (MAX int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_min=no # Keyword MIN
+ ###< create table crash_me10 (MIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_nullif=no # Keyword NULLIF
+ ###< create table crash_me10 (NULLIF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_octet_length=no # Keyword OCTET_LENGTH
+ ###< create table crash_me10 (OCTET_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_oid=no # Keyword OID
+ ###< create table crash_me10 (OID int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_operators=no # Keyword OPERATORS
+ ###< create table crash_me10 (OPERATORS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_others=no # Keyword OTHERS
+ ###< create table crash_me10 (OTHERS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_overlaps=no # Keyword OVERLAPS
+ ###< create table crash_me10 (OVERLAPS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_pendant=no # Keyword PENDANT
+ ###< create table crash_me10 (PENDANT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_position=no # Keyword POSITION
+ ###< create table crash_me10 (POSITION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_private=no # Keyword PRIVATE
+ ###< create table crash_me10 (PRIVATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_protected=no # Keyword PROTECTED
+ ###< create table crash_me10 (PROTECTED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_replace=yes # Keyword REPLACE
+ ###< create table crash_me10 (REPLACE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REPLACE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_sensitive=yes # Keyword SENSITIVE
+ ###< create table crash_me10 (SENSITIVE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SENSITIVE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_similar=no # Keyword SIMILAR
+ ###< create table crash_me10 (SIMILAR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_sqlcode=no # Keyword SQLCODE
+ ###< create table crash_me10 (SQLCODE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_sqlerror=no # Keyword SQLERROR
+ ###< create table crash_me10 (SQLERROR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_substring=no # Keyword SUBSTRING
+ ###< create table crash_me10 (SUBSTRING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_sum=no # Keyword SUM
+ ###< create table crash_me10 (SUM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_test=no # Keyword TEST
+ ###< create table crash_me10 (TEST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_there=no # Keyword THERE
+ ###< create table crash_me10 (THERE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_translate=no # Keyword TRANSLATE
+ ###< create table crash_me10 (TRANSLATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_trim=no # Keyword TRIM
+ ###< create table crash_me10 (TRIM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_type=no # Keyword TYPE
+ ###< create table crash_me10 (TYPE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_upper=no # Keyword UPPER
+ ###< create table crash_me10 (UPPER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_virtual=no # Keyword VIRTUAL
+ ###< create table crash_me10 (VIRTUAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_visible=no # Keyword VISIBLE
+ ###< create table crash_me10 (VISIBLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_wait=no # Keyword WAIT
+ ###< create table crash_me10 (WAIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_admin=no # Keyword ADMIN
+ ###< create table crash_me10 (ADMIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_aggregate=no # Keyword AGGREGATE
+ ###< create table crash_me10 (AGGREGATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_array=no # Keyword ARRAY
+ ###< create table crash_me10 (ARRAY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_binary=yes # Keyword BINARY
+ ###< create table crash_me10 (BINARY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BINARY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_blob=yes # Keyword BLOB
+ ###< create table crash_me10 (BLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_class=no # Keyword CLASS
+ ###< create table crash_me10 (CLASS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_clob=no # Keyword CLOB
+ ###< create table crash_me10 (CLOB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_condition=yes # Keyword CONDITION
+ ###< create table crash_me10 (CONDITION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONDITION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_constructor=no # Keyword CONSTRUCTOR
+ ###< create table crash_me10 (CONSTRUCTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_contains=no # Keyword CONTAINS
+ ###< create table crash_me10 (CONTAINS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_cube=no # Keyword CUBE
+ ###< create table crash_me10 (CUBE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_current_path=no # Keyword CURRENT_PATH
+ ###< create table crash_me10 (CURRENT_PATH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_current_role=no # Keyword CURRENT_ROLE
+ ###< create table crash_me10 (CURRENT_ROLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_datalink=no # Keyword DATALINK
+ ###< create table crash_me10 (DATALINK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_deref=no # Keyword DEREF
+ ###< create table crash_me10 (DEREF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_destroy=no # Keyword DESTROY
+ ###< create table crash_me10 (DESTROY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_destructor=no # Keyword DESTRUCTOR
+ ###< create table crash_me10 (DESTRUCTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_deterministic=yes # Keyword DETERMINISTIC
+ ###< create table crash_me10 (DETERMINISTIC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DETERMINISTIC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_do=no # Keyword DO
+ ###< create table crash_me10 (DO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_dynamic=no # Keyword DYNAMIC
+ ###< create table crash_me10 (DYNAMIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_every=no # Keyword EVERY
+ ###< create table crash_me10 (EVERY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_exit=yes # Keyword EXIT
+ ###< create table crash_me10 (EXIT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXIT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_expand=no # Keyword EXPAND
+ ###< create table crash_me10 (EXPAND int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_expanding=no # Keyword EXPANDING
+ ###< create table crash_me10 (EXPANDING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_free=no # Keyword FREE
+ ###< create table crash_me10 (FREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_function=no # Keyword FUNCTION
+ ###< create table crash_me10 (FUNCTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_grouping=no # Keyword GROUPING
+ ###< create table crash_me10 (GROUPING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_handler=no # Keyword HANDLER
+ ###< create table crash_me10 (HANDLER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_hast=no # Keyword HAST
+ ###< create table crash_me10 (HAST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_host=no # Keyword HOST
+ ###< create table crash_me10 (HOST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_initialize=no # Keyword INITIALIZE
+ ###< create table crash_me10 (INITIALIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_inout=yes # Keyword INOUT
+ ###< create table crash_me10 (INOUT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INOUT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_iterate=yes # Keyword ITERATE
+ ###< create table crash_me10 (ITERATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ITERATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_large=no # Keyword LARGE
+ ###< create table crash_me10 (LARGE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_lateral=no # Keyword LATERAL
+ ###< create table crash_me10 (LATERAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_localtime=yes # Keyword LOCALTIME
+ ###< create table crash_me10 (LOCALTIME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOCALTIME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_localtimestamp=yes # Keyword LOCALTIMESTAMP
+ ###< create table crash_me10 (LOCALTIMESTAMP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOCALTIMESTAMP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_locator=no # Keyword LOCATOR
+ ###< create table crash_me10 (LOCATOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_meets=no # Keyword MEETS
+ ###< create table crash_me10 (MEETS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_modifies=no # Keyword MODIFIES
+ ###< create table crash_me10 (MODIFIES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_nclob=no # Keyword NCLOB
+ ###< create table crash_me10 (NCLOB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_normalize=no # Keyword NORMALIZE
+ ###< create table crash_me10 (NORMALIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_ordinality=no # Keyword ORDINALITY
+ ###< create table crash_me10 (ORDINALITY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_out=yes # Keyword OUT
+ ###< create table crash_me10 (OUT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_parameter=no # Keyword PARAMETER
+ ###< create table crash_me10 (PARAMETER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_path=no # Keyword PATH
+ ###< create table crash_me10 (PATH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_period=no # Keyword PERIOD
+ ###< create table crash_me10 (PERIOD int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_postfix=no # Keyword POSTFIX
+ ###< create table crash_me10 (POSTFIX int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_precedes=no # Keyword PRECEDES
+ ###< create table crash_me10 (PRECEDES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_prefix=no # Keyword PREFIX
+ ###< create table crash_me10 (PREFIX int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_reads=no # Keyword READS
+ ###< create table crash_me10 (READS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_redo=no # Keyword REDO
+ ###< create table crash_me10 (REDO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_repeat=yes # Keyword REPEAT
+ ###< create table crash_me10 (REPEAT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REPEAT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_result=no # Keyword RESULT
+ ###< create table crash_me10 (RESULT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_rollup=no # Keyword ROLLUP
+ ###< create table crash_me10 (ROLLUP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_sets=no # Keyword SETS
+ ###< create table crash_me10 (SETS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_specific=yes # Keyword SPECIFIC
+ ###< create table crash_me10 (SPECIFIC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SPECIFIC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_specifictype=no # Keyword SPECIFICTYPE
+ ###< create table crash_me10 (SPECIFICTYPE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_start=no # Keyword START
+ ###< create table crash_me10 (START int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_state=no # Keyword STATE
+ ###< create table crash_me10 (STATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_static=no # Keyword STATIC
+ ###< create table crash_me10 (STATIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_succeeds=no # Keyword SUCCEEDS
+ ###< create table crash_me10 (SUCCEEDS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_terminate=no # Keyword TERMINATE
+ ###< create table crash_me10 (TERMINATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_than=no # Keyword THAN
+ ###< create table crash_me10 (THAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_treat=no # Keyword TREAT
+ ###< create table crash_me10 (TREAT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_undo=yes # Keyword UNDO
+ ###< create table crash_me10 (UNDO int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNDO int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_until=no # Keyword UNTIL
+ ###< create table crash_me10 (UNTIL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_access=no # Keyword ACCESS
+ ###< create table crash_me10 (ACCESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_analyze=yes # Keyword ANALYZE
+ ###< create table crash_me10 (ANALYZE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ANALYZE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_audit=no # Keyword AUDIT
+ ###< create table crash_me10 (AUDIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_auto_increment=no # Keyword AUTO_INCREMENT
+ ###< create table crash_me10 (AUTO_INCREMENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_backup=no # Keyword BACKUP
+ ###< create table crash_me10 (BACKUP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_bdb=no # Keyword BDB
+ ###< create table crash_me10 (BDB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_berkeleydb=no # Keyword BERKELEYDB
+ ###< create table crash_me10 (BERKELEYDB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_bigint=yes # Keyword BIGINT
+ ###< create table crash_me10 (BIGINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIGINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_break=no # Keyword BREAK
+ ###< create table crash_me10 (BREAK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_browse=no # Keyword BROWSE
+ ###< create table crash_me10 (BROWSE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_btree=no # Keyword BTREE
+ ###< create table crash_me10 (BTREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_bulk=no # Keyword BULK
+ ###< create table crash_me10 (BULK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_change=yes # Keyword CHANGE
+ ###< create table crash_me10 (CHANGE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHANGE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_checkpoint=no # Keyword CHECKPOINT
+ ###< create table crash_me10 (CHECKPOINT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_cluster=no # Keyword CLUSTER
+ ###< create table crash_me10 (CLUSTER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_clustered=no # Keyword CLUSTERED
+ ###< create table crash_me10 (CLUSTERED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_columns=yes # Keyword COLUMNS
+ ###< create table crash_me10 (COLUMNS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMNS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_comment=no # Keyword COMMENT
+ ###< create table crash_me10 (COMMENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_compress=no # Keyword COMPRESS
+ ###< create table crash_me10 (COMPRESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_compute=no # Keyword COMPUTE
+ ###< create table crash_me10 (COMPUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_containstable=no # Keyword CONTAINSTABLE
+ ###< create table crash_me10 (CONTAINSTABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_database=yes # Keyword DATABASE
+ ###< create table crash_me10 (DATABASE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATABASE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_databases=yes # Keyword DATABASES
+ ###< create table crash_me10 (DATABASES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATABASES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_day_hour=yes # Keyword DAY_HOUR
+ ###< create table crash_me10 (DAY_HOUR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAY_HOUR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_day_minute=yes # Keyword DAY_MINUTE
+ ###< create table crash_me10 (DAY_MINUTE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAY_MINUTE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_day_second=yes # Keyword DAY_SECOND
+ ###< create table crash_me10 (DAY_SECOND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAY_SECOND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_dbcc=no # Keyword DBCC
+ ###< create table crash_me10 (DBCC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_delayed=yes # Keyword DELAYED
+ ###< create table crash_me10 (DELAYED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELAYED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_deny=no # Keyword DENY
+ ###< create table crash_me10 (DENY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_disk=no # Keyword DISK
+ ###< create table crash_me10 (DISK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_distinctrow=yes # Keyword DISTINCTROW
+ ###< create table crash_me10 (DISTINCTROW int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCTROW int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_distributed=no # Keyword DISTRIBUTED
+ ###< create table crash_me10 (DISTRIBUTED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_dummy=no # Keyword DUMMY
+ ###< create table crash_me10 (DUMMY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_dump=no # Keyword DUMP
+ ###< create table crash_me10 (DUMP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_enclosed=yes # Keyword ENCLOSED
+ ###< create table crash_me10 (ENCLOSED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ENCLOSED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_errlvl=no # Keyword ERRLVL
+ ###< create table crash_me10 (ERRLVL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_errors=no # Keyword ERRORS
+ ###< create table crash_me10 (ERRORS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_escaped=yes # Keyword ESCAPED
+ ###< create table crash_me10 (ESCAPED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ESCAPED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_exclusive=no # Keyword EXCLUSIVE
+ ###< create table crash_me10 (EXCLUSIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_explain=yes # Keyword EXPLAIN
+ ###< create table crash_me10 (EXPLAIN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXPLAIN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_fields=yes # Keyword FIELDS
+ ###< create table crash_me10 (FIELDS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_file=no # Keyword FILE
+ ###< create table crash_me10 (FILE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_fillfactor=no # Keyword FILLFACTOR
+ ###< create table crash_me10 (FILLFACTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_freetext=no # Keyword FREETEXT
+ ###< create table crash_me10 (FREETEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_freetexttable=no # Keyword FREETEXTTABLE
+ ###< create table crash_me10 (FREETEXTTABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_fulltext=yes # Keyword FULLTEXT
+ ###< create table crash_me10 (FULLTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_geometry=no # Keyword GEOMETRY
+ ###< create table crash_me10 (GEOMETRY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_hash=no # Keyword HASH
+ ###< create table crash_me10 (HASH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_high_priority=yes # Keyword HIGH_PRIORITY
+ ###< create table crash_me10 (HIGH_PRIORITY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HIGH_PRIORITY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_holdlock=no # Keyword HOLDLOCK
+ ###< create table crash_me10 (HOLDLOCK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_hour_minute=yes # Keyword HOUR_MINUTE
+ ###< create table crash_me10 (HOUR_MINUTE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HOUR_MINUTE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_hour_second=yes # Keyword HOUR_SECOND
+ ###< create table crash_me10 (HOUR_SECOND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HOUR_SECOND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_identified=no # Keyword IDENTIFIED
+ ###< create table crash_me10 (IDENTIFIED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_identity_insert=no # Keyword IDENTITY_INSERT
+ ###< create table crash_me10 (IDENTITY_INSERT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_identitycol=no # Keyword IDENTITYCOL
+ ###< create table crash_me10 (IDENTITYCOL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_increment=no # Keyword INCREMENT
+ ###< create table crash_me10 (INCREMENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_index=yes # Keyword INDEX
+ ###< create table crash_me10 (INDEX int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_infile=yes # Keyword INFILE
+ ###< create table crash_me10 (INFILE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INFILE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_initial=no # Keyword INITIAL
+ ###< create table crash_me10 (INITIAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_innodb=no # Keyword INNODB
+ ###< create table crash_me10 (INNODB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_keys=yes # Keyword KEYS
+ ###< create table crash_me10 (KEYS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'KEYS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_kill=yes # Keyword KILL
+ ###< create table crash_me10 (KILL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'KILL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_lineno=no # Keyword LINENO
+ ###< create table crash_me10 (LINENO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_lines=yes # Keyword LINES
+ ###< create table crash_me10 (LINES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LINES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_load=yes # Keyword LOAD
+ ###< create table crash_me10 (LOAD int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOAD int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_lock=yes # Keyword LOCK
+ ###< create table crash_me10 (LOCK int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOCK int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_long=yes # Keyword LONG
+ ###< create table crash_me10 (LONG int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LONG int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_longblob=yes # Keyword LONGBLOB
+ ###< create table crash_me10 (LONGBLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LONGBLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_longtext=yes # Keyword LONGTEXT
+ ###< create table crash_me10 (LONGTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LONGTEXT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_low_priority=yes # Keyword LOW_PRIORITY
+ ###< create table crash_me10 (LOW_PRIORITY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOW_PRIORITY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_master_server_id=yes # Keyword MASTER_SERVER_ID
+ ###< create table crash_me10 (MASTER_SERVER_ID int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MASTER_SERVER_ID int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_maxextents=no # Keyword MAXEXTENTS
+ ###< create table crash_me10 (MAXEXTENTS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_mediumblob=yes # Keyword MEDIUMBLOB
+ ###< create table crash_me10 (MEDIUMBLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MEDIUMBLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_mediumint=yes # Keyword MEDIUMINT
+ ###< create table crash_me10 (MEDIUMINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MEDIUMINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_mediumtext=yes # Keyword MEDIUMTEXT
+ ###< create table crash_me10 (MEDIUMTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MEDIUMTEXT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_middleint=yes # Keyword MIDDLEINT
+ ###< create table crash_me10 (MIDDLEINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MIDDLEINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_minus=no # Keyword MINUS
+ ###< create table crash_me10 (MINUS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_minute_second=yes # Keyword MINUTE_SECOND
+ ###< create table crash_me10 (MINUTE_SECOND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MINUTE_SECOND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_mlslabel=no # Keyword MLSLABEL
+ ###< create table crash_me10 (MLSLABEL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_mode=no # Keyword MODE
+ ###< create table crash_me10 (MODE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_mrg_myisam=no # Keyword MRG_MYISAM
+ ###< create table crash_me10 (MRG_MYISAM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_noaudit=no # Keyword NOAUDIT
+ ###< create table crash_me10 (NOAUDIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nocheck=no # Keyword NOCHECK
+ ###< create table crash_me10 (NOCHECK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nocompress=no # Keyword NOCOMPRESS
+ ###< create table crash_me10 (NOCOMPRESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nonclustered=no # Keyword NONCLUSTERED
+ ###< create table crash_me10 (NONCLUSTERED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nowait=no # Keyword NOWAIT
+ ###< create table crash_me10 (NOWAIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_number=no # Keyword NUMBER
+ ###< create table crash_me10 (NUMBER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_offline=no # Keyword OFFLINE
+ ###< create table crash_me10 (OFFLINE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_offsets=no # Keyword OFFSETS
+ ###< create table crash_me10 (OFFSETS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_online=no # Keyword ONLINE
+ ###< create table crash_me10 (ONLINE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_opendatasource=no # Keyword OPENDATASOURCE
+ ###< create table crash_me10 (OPENDATASOURCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_openquery=no # Keyword OPENQUERY
+ ###< create table crash_me10 (OPENQUERY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_openrowset=no # Keyword OPENROWSET
+ ###< create table crash_me10 (OPENROWSET int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_openxml=no # Keyword OPENXML
+ ###< create table crash_me10 (OPENXML int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_optimize=yes # Keyword OPTIMIZE
+ ###< create table crash_me10 (OPTIMIZE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTIMIZE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_optionally=yes # Keyword OPTIONALLY
+ ###< create table crash_me10 (OPTIONALLY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTIONALLY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_outfile=yes # Keyword OUTFILE
+ ###< create table crash_me10 (OUTFILE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTFILE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_over=no # Keyword OVER
+ ###< create table crash_me10 (OVER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_pctfree=no # Keyword PCTFREE
+ ###< create table crash_me10 (PCTFREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_percent=no # Keyword PERCENT
+ ###< create table crash_me10 (PERCENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_plan=no # Keyword PLAN
+ ###< create table crash_me10 (PLAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_print=no # Keyword PRINT
+ ###< create table crash_me10 (PRINT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_proc=no # Keyword PROC
+ ###< create table crash_me10 (PROC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_purge=yes # Keyword PURGE
+ ###< create table crash_me10 (PURGE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PURGE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_raiserror=no # Keyword RAISERROR
+ ###< create table crash_me10 (RAISERROR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_raw=no # Keyword RAW
+ ###< create table crash_me10 (RAW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_readtext=no # Keyword READTEXT
+ ###< create table crash_me10 (READTEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_reconfigure=no # Keyword RECONFIGURE
+ ###< create table crash_me10 (RECONFIGURE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_regexp=yes # Keyword REGEXP
+ ###< create table crash_me10 (REGEXP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REGEXP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_rename=yes # Keyword RENAME
+ ###< create table crash_me10 (RENAME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RENAME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_replication=no # Keyword REPLICATION
+ ###< create table crash_me10 (REPLICATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_require=yes # Keyword REQUIRE
+ ###< create table crash_me10 (REQUIRE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REQUIRE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_resource=no # Keyword RESOURCE
+ ###< create table crash_me10 (RESOURCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_restore=no # Keyword RESTORE
+ ###< create table crash_me10 (RESTORE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rlike=yes # Keyword RLIKE
+ ###< create table crash_me10 (RLIKE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RLIKE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_rowcount=no # Keyword ROWCOUNT
+ ###< create table crash_me10 (ROWCOUNT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rowguidcol=no # Keyword ROWGUIDCOL
+ ###< create table crash_me10 (ROWGUIDCOL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rowid=no # Keyword ROWID
+ ###< create table crash_me10 (ROWID int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rownum=no # Keyword ROWNUM
+ ###< create table crash_me10 (ROWNUM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rtree=no # Keyword RTREE
+ ###< create table crash_me10 (RTREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rule=no # Keyword RULE
+ ###< create table crash_me10 (RULE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_save=no # Keyword SAVE
+ ###< create table crash_me10 (SAVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_setuser=no # Keyword SETUSER
+ ###< create table crash_me10 (SETUSER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_share=no # Keyword SHARE
+ ###< create table crash_me10 (SHARE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_show=yes # Keyword SHOW
+ ###< create table crash_me10 (SHOW int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SHOW int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_shutdown=no # Keyword SHUTDOWN
+ ###< create table crash_me10 (SHUTDOWN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_soname=yes # Keyword SONAME
+ ###< create table crash_me10 (SONAME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SONAME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_spatial=yes # Keyword SPATIAL
+ ###< create table crash_me10 (SPATIAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_sql_big_result=yes # Keyword SQL_BIG_RESULT
+ ###< create table crash_me10 (SQL_BIG_RESULT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_BIG_RESULT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_sql_calc_found_rows=yes # Keyword SQL_CALC_FOUND_ROWS
+ ###< create table crash_me10 (SQL_CALC_FOUND_ROWS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_CALC_FOUND_ROWS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_sql_small_result=yes # Keyword SQL_SMALL_RESULT
+ ###< create table crash_me10 (SQL_SMALL_RESULT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_SMALL_RESULT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_ssl=yes # Keyword SSL
+ ###< create table crash_me10 (SSL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SSL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_starting=yes # Keyword STARTING
+ ###< create table crash_me10 (STARTING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'STARTING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_statistics=no # Keyword STATISTICS
+ ###< create table crash_me10 (STATISTICS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_straight_join=yes # Keyword STRAIGHT_JOIN
+ ###< create table crash_me10 (STRAIGHT_JOIN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'STRAIGHT_JOIN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_striped=no # Keyword STRIPED
+ ###< create table crash_me10 (STRIPED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_successful=no # Keyword SUCCESSFUL
+ ###< create table crash_me10 (SUCCESSFUL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_synonym=no # Keyword SYNONYM
+ ###< create table crash_me10 (SYNONYM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_sysdate=no # Keyword SYSDATE
+ ###< create table crash_me10 (SYSDATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tables=yes # Keyword TABLES
+ ###< create table crash_me10 (TABLES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_terminated=yes # Keyword TERMINATED
+ ###< create table crash_me10 (TERMINATED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TERMINATED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_textsize=no # Keyword TEXTSIZE
+ ###< create table crash_me10 (TEXTSIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tinyblob=yes # Keyword TINYBLOB
+ ###< create table crash_me10 (TINYBLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TINYBLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_tinyint=yes # Keyword TINYINT
+ ###< create table crash_me10 (TINYINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TINYINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_tinytext=yes # Keyword TINYTEXT
+ ###< create table crash_me10 (TINYTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TINYTEXT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_top=no # Keyword TOP
+ ###< create table crash_me10 (TOP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tran=no # Keyword TRAN
+ ###< create table crash_me10 (TRAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_truncate=no # Keyword TRUNCATE
+ ###< create table crash_me10 (TRUNCATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tsequal=no # Keyword TSEQUAL
+ ###< create table crash_me10 (TSEQUAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_types=no # Keyword TYPES
+ ###< create table crash_me10 (TYPES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_uid=no # Keyword UID
+ ###< create table crash_me10 (UID int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_unlock=yes # Keyword UNLOCK
+ ###< create table crash_me10 (UNLOCK int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNLOCK int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_unsigned=yes # Keyword UNSIGNED
+ ###< create table crash_me10 (UNSIGNED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNSIGNED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_updatetext=no # Keyword UPDATETEXT
+ ###< create table crash_me10 (UPDATETEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_use=yes # Keyword USE
+ ###< create table crash_me10 (USE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'USE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_user_resources=no # Keyword USER_RESOURCES
+ ###< create table crash_me10 (USER_RESOURCES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_validate=no # Keyword VALIDATE
+ ###< create table crash_me10 (VALIDATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_varbinary=yes # Keyword VARBINARY
+ ###< create table crash_me10 (VARBINARY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARBINARY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_varchar2=no # Keyword VARCHAR2
+ ###< create table crash_me10 (VARCHAR2 int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_waitfor=no # Keyword WAITFOR
+ ###< create table crash_me10 (WAITFOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_warnings=no # Keyword WARNINGS
+ ###< create table crash_me10 (WARNINGS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_writetext=no # Keyword WRITETEXT
+ ###< create table crash_me10 (WRITETEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_xor=yes # Keyword XOR
+ ###< create table crash_me10 (XOR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'XOR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_year_month=yes # Keyword YEAR_MONTH
+ ###< create table crash_me10 (YEAR_MONTH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'YEAR_MONTH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_zerofill=yes # Keyword ZEROFILL
+ ###< create table crash_me10 (ZEROFILL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ZEROFILL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+right_outer_join=yes # right outer join
+ ###< select crash_me.a from crash_me right join crash_me2 ON crash_me.a=crash_me2.a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+rollback_metadata=no # rollback_metadata
+ ###< create table crash_q (a integer not null)
+ ###> OK
+ ###
+ ###< insert into crash_q values (1)
+ ###> OK
+rowid=auto_increment # Type for row id
+ ###< create table crash_q (a rowid)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'rowid)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###< create table crash_q (a int not null auto_increment, primary key(a))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+safe_decimal_arithmetic=no # safe decimal arithmetic
+ ###< create table crash_me_a (a decimal(10,2),b decimal(10,2))
+ ###> OK
+ ###
+ ###< insert into crash_me_a (a,b) values (11.4,18.9)
+ ###> OK
+ ###
+ ###<select count(*) from crash_me_a where a+b=30.3
+ ###>0
+ ###We expected '1' but got '0'
+select_constants=yes # Select constants
+ ###< select 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+select_limit=with LIMIT # LIMIT number of rows
+ ###< select * from crash_me limit 1
+ ###> OK
+select_limit2=yes # SELECT with LIMIT #,#
+ ###< select * from crash_me limit 1,1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+select_limit3=yes # SELECT with LIMIT # OFFSET #
+ ###< select * from crash_me limit 1 offset 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+select_string_size=1048565 # constant string size in SELECT
+ ###We are trying (example with N=5):
+ ###select 'aaaaa'
+select_table_update=yes # Update with sub select
+ ###< create table crash_q (a integer,b char(10))
+ ###> OK
+ ###< insert into crash_q values(1,'c')
+ ###> OK
+ ###< update crash_q set b= (select b from crash_me where crash_q.a = crash_me.a)
+ ###> OK
+ ###
+ ###<select b from crash_q
+ ###>a
+ ###
+ ###< drop table crash_q
+ ###> OK
+select_without_from=yes # SELECT without FROM
+ ###< select 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+server_version=MySQL 5.0.0 alpha debug log/ # server version
+simple_joins=yes # ANSI SQL simple joins
+ ###< select crash_me.a from crash_me, crash_me t0
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+sorted_group_by=yes # Group by always sorted
+ ###< create table crash_me_t1 (a int not null, b int not null)
+ ###> OK
+ ###< insert into crash_me_t1 values (1,1)
+ ###> OK
+ ###< insert into crash_me_t1 values (1,2)
+ ###> OK
+ ###< insert into crash_me_t1 values (3,1)
+ ###> OK
+ ###< insert into crash_me_t1 values (3,2)
+ ###> OK
+ ###< insert into crash_me_t1 values (2,2)
+ ###> OK
+ ###< insert into crash_me_t1 values (2,1)
+ ###> OK
+ ###< create table crash_me_t2 (a int not null, b int not null)
+ ###> OK
+ ###< create index crash_me_t2_ind on crash_me_t2 (a)
+ ###> OK
+ ###< insert into crash_me_t2 values (1,3)
+ ###> OK
+ ###< insert into crash_me_t2 values (3,1)
+ ###> OK
+ ###< insert into crash_me_t2 values (2,2)
+ ###> OK
+ ###< insert into crash_me_t2 values (1,1)
+ ###> OK
+ ###
+ ###< select crash_me_t1.a,crash_me_t2.b from crash_me_t1,crash_me_t2 where crash_me_t1.a=crash_me_t2.a group by crash_me_t1.a,crash_me_t2.b
+ ### > 1,1
+ ### > 1,3
+ ### > 2,2
+ ### > 3,1
+ ###
+ ### Check recordset:
+ ### 1,1 expected: 1,1
+ ### 1,3 expected: 1,3
+ ### 2,2 expected: 2,2
+ ### 3,1 expected: 3,1
+ ### Recordset corresponds with template
+ ###< drop table crash_me_t1
+ ###> OK
+ ###< drop table crash_me_t2
+ ###> OK
+storage_of_float=round # Storage of float values
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.14)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.1
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.16)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.2
+ ###We expected '1.1' but got '1.2'
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.14)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.1
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.16)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.2
+ ###
+ ###< drop table crash_q
+ ###> OK
+subqueries=yes # subqueries
+ ###< select a from crash_me where crash_me.a in (select max(a) from crash_me)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+table_alias=yes # Table alias
+ ###< select b.a from crash_me as b
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+table_name_case=no # case independent table names
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< drop table CRASH_Q
+ ###> execute error:Unknown table 'CRASH_Q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+table_wildcard=yes # Select table_name.*
+ ###< select crash_me.* from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+temporary_table=yes # temporary tables
+ ###< create temporary table crash_q (q integer not null)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+time_format_EUR=error # Supports HH.MM.SS (EUR) time format
+ ###< insert into crash_me_t(a) values ('20.08.16')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>00:00:20
+ ###We expected '20:08:16' but got '00:00:20'
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_HHHHMMSS=yes # Supports HHHHmmSS time format
+ ###< insert into crash_me_t(a) values ('00200816')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>20:08:16
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_ISO=yes # Supports HH:MM:SS (ISO) time format
+ ###< insert into crash_me_t(a) values ('20:08:16')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>20:08:16
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_USA=error # Supports HH:MM:SS (AM|PM) time format
+ ###< insert into crash_me_t(a) values ('08:08:16 PM')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>08:08:16
+ ###We expected '20:08:16' but got '08:08:16'
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_inresult=iso # Time format in result
+ ###< insert into crash_me_t values(CURRENT_TIME)
+ ###> OK
+ ###
+ ###< select a from crash_me_t
+ ###> 09:46:11
+ ###< delete from crash_me_t
+ ###> OK
+transactions=yes # transactions
+ ###<select * from crash_q
+ ###>1
+ ###We expected '' but got '1'
+truncate_table=yes # truncate
+ ###< create table crash_q (a integer, b integer,c1 CHAR(10))
+ ###> OK
+ ###< truncate table crash_q
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_abstime=no # Type abstime
+ ###< create table crash_q (q abstime)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'abstime)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_bfile=no # Type bfile
+ ###< create table crash_q (q bfile)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'bfile)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_blob=yes # Type blob
+ ###< create table crash_q (q blob)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_bool=yes # Type bool
+ ###< create table crash_q (q bool)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_box=no # Type box
+ ###< create table crash_q (q box)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'box)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_byte=no # Type byte
+ ###< create table crash_q (q byte)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'byte)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_char(1_arg)_binary=yes # Type char(1 arg) binary
+ ###< create table crash_q (q char(10) binary)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_cidr=no # Type cidr
+ ###< create table crash_q (q cidr)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'cidr)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_circle=no # Type circle
+ ###< create table crash_q (q circle)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'circle)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_clob=no # Type clob
+ ###< create table crash_q (q clob)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'clob)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_datetime=yes # Type datetime
+ ###< create table crash_q (q datetime)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_double=yes # Type double
+ ###< create table crash_q (q double)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_enum(1_arg)=yes # Type enum(1 arg)
+ ###< create table crash_q (q enum('red'))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_float(2_arg)=yes # Type float(2 arg)
+ ###< create table crash_q (q float(6,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_float4=yes # Type float4
+ ###< create table crash_q (q float4)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_float8=yes # Type float8
+ ###< create table crash_q (q float8)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_image=no # Type image
+ ###< create table crash_q (q image)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'image)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_inet=no # Type inet
+ ###< create table crash_q (q inet)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'inet)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_int(1_arg)_zerofill=yes # Type int(1 arg) zerofill
+ ###< create table crash_q (q int(5) zerofill)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int1=yes # Type int1
+ ###< create table crash_q (q int1)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int2=yes # Type int2
+ ###< create table crash_q (q int2)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int3=yes # Type int3
+ ###< create table crash_q (q int3)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int4=yes # Type int4
+ ###< create table crash_q (q int4)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int8=yes # Type int8
+ ###< create table crash_q (q int8)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int_auto_increment=yes # Type int not null auto_increment
+ ###< create table crash_q (q int not null auto_increment,unique(q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int_identity=no # Type int not null identity
+ ###< create table crash_q (q int not null identity,unique(q))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'identity,unique(q))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_int_unsigned=yes # Type int unsigned
+ ###< create table crash_q (q int unsigned)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_interval=no # Type interval
+ ###< create table crash_q (q interval)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_line=no # Type line
+ ###< create table crash_q (q line)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'line)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_long=yes # Type long
+ ###< create table crash_q (q long)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_long_raw=no # Type long raw
+ ###< create table crash_q (q long raw)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'raw)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_long_varbinary=yes # Type long varbinary
+ ###< create table crash_q (q long varbinary)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+ ###< create table crash_q (q long varchar(1))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_lseg=no # Type lseg
+ ###< create table crash_q (q lseg)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'lseg)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_macaddr=no # Type macaddr
+ ###< create table crash_q (q macaddr)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'macaddr)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_mediumint=yes # Type mediumint
+ ###< create table crash_q (q mediumint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_mediumtext=yes # Type mediumtext
+ ###< create table crash_q (q mediumtext)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_middleint=yes # Type middleint
+ ###< create table crash_q (q middleint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_mlslabel=no # Type mlslabel
+ ###< create table crash_q (q mlslabel)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'mlslabel)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_money=no # Type money
+ ###< create table crash_q (q money)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'money)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_nclob=no # Type nclob
+ ###< create table crash_q (q nclob)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'nclob)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_number=no # Type number
+ ###< create table crash_q (q number)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'number)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_number(1_arg)=no # Type number(1 arg)
+ ###< create table crash_q (q number(9))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'number(9))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_number(2_arg)=no # Type number(2 arg)
+ ###< create table crash_q (q number(9,2))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'number(9,2))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+ ###< create table crash_q (q nvarchar2(16))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'nvarchar2(16))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_path=no # Type path
+ ###< create table crash_q (q path)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'path)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_point=yes # Type point
+ ###< create table crash_q (q point)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_polygon=yes # Type polygon
+ ###< create table crash_q (q polygon)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+ ###< create table crash_q (q raw(16))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'raw(16))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_reltime=no # Type reltime
+ ###< create table crash_q (q reltime)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'reltime)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_rowid=no # Type rowid
+ ###< create table crash_q (q rowid)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'rowid)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_serial=yes # Type serial
+ ###< create table crash_q (q serial)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_set(1_arg)=yes # Type set(1 arg)
+ ###< create table crash_q (q set('red'))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_smalldatetime=no # Type smalldatetime
+ ###< create table crash_q (q smalldatetime)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'smalldatetime)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_smallfloat=no # Type smallfloat
+ ###< create table crash_q (q smallfloat)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'smallfloat)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_smallmoney=no # Type smallmoney
+ ###< create table crash_q (q smallmoney)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'smallmoney)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_text=yes # Type text
+ ###< create table crash_q (q text)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_text(1_arg)=yes # Type text(1 arg)
+ ###< create table crash_q (q text(10))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_timespan=no # Type timespan
+ ###< create table crash_q (q timespan)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'timespan)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_uint=no # Type uint
+ ###< create table crash_q (q uint)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'uint)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+ ###< create table crash_q (q varchar2(257))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar2(257))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_year=yes # Type year
+ ###< create table crash_q (q year)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_bigint=yes # Type bigint
+ ###< create table crash_q (q bigint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+ ###< create table crash_q (q binary(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_datetime=yes # Type datetime
+ ###< create table crash_q (q datetime)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_tinyint=yes # Type tinyint
+ ###< create table crash_q (q tinyint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+ ###< create table crash_q (q varbinary(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_bit=yes # Type bit
+ ###< create table crash_q (q bit)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_bit(1_arg)=yes # Type bit(1 arg)
+ ###< create table crash_q (q bit(2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+ ###< create table crash_q (q bit varying(2))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'varying(2))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_boolean=yes # Type boolean
+ ###< create table crash_q (q boolean)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_char(1_arg)=yes # Type char(1 arg)
+ ###< create table crash_q (q char(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+ ###< create table crash_q (q char varying(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_character(1_arg)=yes # Type character(1 arg)
+ ###< create table crash_q (q character(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+ ###< create table crash_q (q character varying(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_date=yes # Type date
+ ###< create table crash_q (q date)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+ ###< create table crash_q (q dec(6,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+ ###< create table crash_q (q decimal(6,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_double_precision=yes # Type double precision
+ ###< create table crash_q (q double precision)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_float=yes # Type float
+ ###< create table crash_q (q float)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_float(1_arg)=yes # Type float(1 arg)
+ ###< create table crash_q (q float(8))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_int=yes # Type int
+ ###< create table crash_q (q int)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_integer=yes # Type integer
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_interval_day=no # Type interval day
+ ###< create table crash_q (q interval day)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_day_to_hour=no # Type interval day to hour
+ ###< create table crash_q (q interval day to hour)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day to hour)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_day_to_minute=no # Type interval day to minute
+ ###< create table crash_q (q interval day to minute)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day to minute)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_day_to_second=no # Type interval day to second
+ ###< create table crash_q (q interval day to second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day to second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_hour=no # Type interval hour
+ ###< create table crash_q (q interval hour)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval hour)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+ ###< create table crash_q (q interval hour to minute)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval hour to minute)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_hour_to_second=no # Type interval hour to second
+ ###< create table crash_q (q interval hour to second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval hour to second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_minute=no # Type interval minute
+ ###< create table crash_q (q interval minute)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval minute)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_minute_to_second=no # Type interval minute to second
+ ###< create table crash_q (q interval minute to second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval minute to second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_month=no # Type interval month
+ ###< create table crash_q (q interval month)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval month)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_second=no # Type interval second
+ ###< create table crash_q (q interval second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_year=no # Type interval year
+ ###< create table crash_q (q interval year)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval year)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_year_to_month=no # Type interval year to month
+ ###< create table crash_q (q interval year to month)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval year to month)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+ ###< create table crash_q (q national char varying(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+ ###< create table crash_q (q national character(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+ ###< create table crash_q (q national character varying(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+ ###< create table crash_q (q nchar(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+ ###< create table crash_q (q nchar varying(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+ ###< create table crash_q (q numeric(9,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_real=yes # Type real
+ ###< create table crash_q (q real)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_smallint=yes # Type smallint
+ ###< create table crash_q (q smallint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_time=yes # Type time
+ ###< create table crash_q (q time)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_timestamp=yes # Type timestamp
+ ###< create table crash_q (q timestamp)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+ ###< create table crash_q (q timestamp with time zone)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'with time zone)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+ ###< create table crash_q (q varchar(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union=yes # union
+ ###< select * from crash_me union select a,b from crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union_all=yes # union all
+ ###< select * from crash_me union all select a,b from crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union_all_incompat=yes # union all (incompatible lists)
+ ###< select * from crash_me union all select a,b from crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union_incompat=yes # union (incompatible lists)
+ ###< select * from crash_me union select a,b from crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+unique_in_create=yes # unique in create table
+ ###< create table crash_q (q integer not null,unique (q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+unique_null_in_create=yes # unique null in create
+ ###< create table crash_q (q integer,unique (q))
+ ###> OK
+ ###< insert into crash_q (q) values (NULL)
+ ###> OK
+ ###< insert into crash_q (q) values (NULL)
+ ###> OK
+ ###< insert into crash_q (q) values (1)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+value_of_false=0 # Value of FALSE
+ ###<select FALSE
+ ###>0
+value_of_true=1 # Value of TRUE
+ ###<select TRUE
+ ###>1
+views=no # views
+ ###< create view crash_q as select a from crash_me
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'view crash_q as select a from crash_me' at line 1
+ ###< drop view crash_q
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'view crash_q' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+where_string_size=1048539 # constant string size in where
+ ###We are trying (example with N=5):
+ ###select a from crash_me where b >='11111'
diff --git a/sql-bench/limits/mysql-4.1.cfg b/sql-bench/limits/mysql-4.1.cfg
new file mode 100644
index 00000000..64f91f07
--- /dev/null
+++ b/sql-bench/limits/mysql-4.1.cfg
@@ -0,0 +1,7056 @@
+#This file is automaticly generated by crash-me 1.61
+
+NEG=yes # update of column= -column
+ ###< create table crash_q (a integer)
+ ###> OK
+ ###< insert into crash_q values(10)
+ ###> OK
+ ###< update crash_q set a=-a
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+ ### Check if numeric_null (NULL) is 'NULL'
+alter_add_col=yes # Alter table add column
+ ###< alter table crash_q add d integer
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_add_constraint=yes # Alter table add constraint
+ ###< alter table crash_q add constraint c2 check(a > b)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_add_foreign_key=no # Alter table add foreign key
+ ###< alter table crash_q add constraint f1 foreign key(c1)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
+ ###< references crash_q1(c1)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'references crash_q1(c1)' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+alter_add_multi_col=yes # Alter table add many columns
+ ###< alter table crash_q add (f integer,g integer)
+ ###> OK
+alter_add_primary_key=with constraint # Alter table add primary key
+ ###< alter table crash_q1 add constraint p1 primary key(c1)
+ ###> OK
+alter_add_unique=yes # Alter table add unique
+ ###< alter table crash_q add constraint u1 unique(c1)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_alter_col=yes # Alter table alter column default
+ ###< alter table crash_q alter b set default 10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_change_col=yes # Alter table change column
+ ###< alter table crash_q change a e char(50)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+alter_drop_col=yes # Alter table drop column
+ ###< alter table crash_q drop column b
+ ###> OK
+alter_drop_constraint=no # Alter table drop constraint
+ ###< alter table crash_q drop constraint c2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint c2' at line 1
+ ###
+ ###< alter table crash_q drop constraint c2 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint c2 restrict' at line 1
+alter_drop_foreign_key=with drop foreign key # Alter table drop foreign key
+ ###< alter table crash_q drop constraint f1
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint f1' at line 1
+ ###
+ ###< alter table crash_q drop constraint f1 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint f1 restrict' at line 1
+ ###
+ ###< alter table crash_q drop foreign key f1
+ ###> OK
+alter_drop_primary_key=drop primary key # Alter table drop primary key
+ ###< alter table crash_q1 drop constraint p1 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint p1 restrict' at line 1
+ ###
+ ###< alter table crash_q1 drop primary key
+ ###> OK
+alter_drop_unique=with drop key # Alter table drop unique
+ ###< alter table crash_q drop constraint u1
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint u1' at line 1
+ ###
+ ###< alter table crash_q drop constraint u1 restrict
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint u1 restrict' at line 1
+ ###
+ ###< alter table crash_q drop key u1
+ ###> OK
+alter_modify_col=yes # Alter table modify column
+ ###< alter table crash_q modify c1 CHAR(20)
+ ###> OK
+alter_rename_table=yes # Alter table rename table
+ ###< alter table crash_q rename to crash_q1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+atomic_updates=no # atomic updates
+ ###< create table crash_q (a integer not null,primary key (a))
+ ###> OK
+ ###< insert into crash_q values (2)
+ ###> OK
+ ###< insert into crash_q values (3)
+ ###> OK
+ ###< insert into crash_q values (1)
+ ###> OK
+ ###< update crash_q set a=a+1
+ ###> execute error:Duplicate entry '3' for key 1
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+automatic_rowid=_rowid # Automatic row id
+ ###< create table crash_q (a int not null, primary key(a))
+ ###> OK
+ ###< insert into crash_q values (1)
+ ###> OK
+ ###< select _rowid from crash_q
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+binary_numbers=no # binary numbers (0b1001)
+ ###< select 0b1001
+ ###> execute error:Unknown column '0b1001' in 'field list'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+binary_strings=no # binary strings (b'0110')
+ ###< select b'0110'
+ ###> execute error:Unknown column 'b' in 'field list'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+case_insensitive_strings=yes # Case insensitive compare
+ ###
+ ###<select b from crash_me where b = 'A'
+ ###>a
+char_is_space_filled=no # char are space filled
+ ###
+ ###<select concat(b,b) from crash_me where b = 'a '
+ ###>aa
+ ###We expected 'a a ' but got 'aa'
+column_alias=yes # Column alias
+ ###< select a as ab from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+columns_in_group_by=+64 # number of columns in group by
+ ###We are trying (example with N=5):
+ ###create table crash_q (q1 integer,q2 integer,q3 integer,q4 integer,q5 integer)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###select q1,q2,q3,q4,q5 from crash_q group by q1,q2,q3,q4,q5
+columns_in_order_by=+64 # number of columns in order by
+ ###We are trying (example with N=5):
+ ###create table crash_q (q1 integer,q2 integer,q3 integer,q4 integer,q5 integer)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###insert into crash_q values(1,1,1,1,1)
+ ###select * from crash_q order by q1,q2,q3,q4,q5
+comment_#=yes # # as comment
+ ###< select * from crash_me # Testing of comments
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+comment_--=yes # -- as comment (ANSI)
+ ###< select * from crash_me -- Testing of comments
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+comment_/**/=yes # /* */ as comment
+ ###< select * from crash_me /* Testing of comments */
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+comment_//=no # // as comment
+ ###< select * from crash_me // Testing of comments
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '// Testing of comments' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+compute=no # Compute
+ ###< select a from crash_me order by a compute sum(a) by a
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'compute sum(a) by a' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+connections=101 # Simultaneous connections (installation default)
+constraint_check=syntax only # Column constraints
+ ###< create table crash_q (a int check (a>0))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+constraint_check_named=syntax only # Named constraints
+ ###< create table crash_q (a int ,b int, constraint abc check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+constraint_check_table=syntax only # Table constraints
+ ###< create table crash_q (a int ,b int, check (a>b))
+ ###> OK
+ ###
+ ###< insert into crash_q values(0,0)
+ ###> OK
+ ###
+ ###< drop table crash_q
+ ###> OK
+constraint_null=yes # NULL constraint (SyBase style)
+ ###< create table crash_q (a int null)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+crash_me_safe=yes # crash me safe
+crash_me_version=1.61 # crash me version
+create_default=yes # default value for column
+ ###< create table crash_q (q integer default 10 not null)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+create_default_func=no # default value function for column
+ ###< create table crash_q (q integer not null,q1 integer default (1+1))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1+1))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+create_if_not_exists=yes # create table if not exists
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< create table if not exists crash_q (q integer)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+create_index=yes # create index
+ ###< create index crash_q on crash_me (a)
+ ###> OK
+create_schema=no # Create SCHEMA
+ ###< create schema crash_schema create table crash_q (a int) create table crash_q2(b int)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'schema crash_schema create table crash_q (a int) create table c
+ ###< drop schema crash_schema cascade
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'schema crash_schema cascade' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+create_table_select=yes # create table from select
+ ###< create table crash_q SELECT * from crash_me
+ ###> OK
+cross_join=yes # cross join (same as from a,b)
+ ###< select crash_me.a from crash_me cross join crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+date_as_string=yes # String functions on date columns
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('1998-03-03')
+ ###> OK
+ ###
+ ###<select left(a,4) from crash_me2
+ ###>1998
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_format_EUR=error # Supports DD.MM.YYYY (EUR) format
+ ###< insert into crash_me_d(a) values ('16.08.1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_EUR_with_date=error # Supports DATE 'DD.MM.YYYY' (EUR) format
+ ###< insert into crash_me_d(a) values (DATE '16.08.1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_ISO=yes # Supports YYYY-MM-DD (ISO) format
+ ###< insert into crash_me_d(a) values ('1963-08-16')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_ISO_with_date=yes # Supports DATE 'YYYY-MM-DD' (ISO) format
+ ###< insert into crash_me_d(a) values (DATE '1963-08-16')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_USA=error # Supports MM/DD/YYYY format
+ ###< insert into crash_me_d(a) values ('08/16/1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_USA_with_date=error # Supports DATE 'MM/DD/YYYY' format
+ ###< insert into crash_me_d(a) values (DATE '08/16/1963')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>0000-00-00
+ ###We expected '1963-08-16' but got '0000-00-00'
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_YYYYMMDD=yes # Supports YYYYMMDD format
+ ###< insert into crash_me_d(a) values ('19630816')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_YYYYMMDD_with_date=yes # Supports DATE 'YYYYMMDD' format
+ ###< insert into crash_me_d(a) values (DATE '19630816')
+ ###> OK
+ ###
+ ###<select a from crash_me_d
+ ###>1963-08-16
+ ###
+ ###< delete from crash_me_d
+ ###> OK
+date_format_inresult=iso # Date format in result
+ ###< insert into crash_me_d values( sysdate() )
+ ###> OK
+ ###
+ ###< select a from crash_me_d
+ ###> 2004-04-06
+ ###< delete from crash_me_d
+ ###> OK
+date_infinity=error # Supports 'infinity dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('infinity')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>0000-00-00
+ ###We expected 'infinity' but got '0000-00-00'
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_last=yes # Supports 9999-12-31 dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('9999-12-31')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>9999-12-31
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_one=yes # Supports 0001-01-01 dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('0001-01-01')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>0001-01-01
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('98-03-03')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>1998-03-03
+ ###
+ ###< drop table crash_me2
+ ###> OK
+ ###
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('10-03-03')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>2010-03-03
+ ###
+ ###< drop table crash_me2
+ ###> OK
+date_zero=yes # Supports 0000-00-00 dates
+ ###< create table crash_me2 (a date not null)
+ ###> OK
+ ###< insert into crash_me2 values ('0000-00-00')
+ ###> OK
+ ###
+ ###<select a from crash_me2
+ ###>0000-00-00
+ ###
+ ###< drop table crash_me2
+ ###> OK
+domains=no # Domains (ANSI SQL)
+ ###< create domain crash_d as varchar(10) default 'Empty' check (value <> 'abcd')
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'domain crash_d as varchar(10) default 'Empty' check (value <> '
+ ###< create table crash_q(a crash_d, b int)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'crash_d, b int)' at line 1
+ ###< insert into crash_q(a,b) values('xyz',10)
+ ###> execute error:Table 'test.crash_q' doesn't exist
+ ###< insert into crash_q(b) values(10)
+ ###> execute error:Table 'test.crash_q' doesn't exist
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###< drop domain crash_d
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'domain crash_d' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+dont_require_cast_to_float=yes # No need to cast from integer to float
+ ###< select exp(1)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+double_quotes=yes # Double '' as ' in strings
+ ###
+ ###<select 'Walker''s'
+ ###>Walker's
+drop_if_exists=yes # drop table if exists
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< drop table if exists crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+drop_index=with 'ON' # drop index
+ ###< drop index crash_q
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
+ ###
+ ###< drop index crash_q from crash_me
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'from crash_me' at line 1
+ ###
+ ###< drop index crash_q on crash_me
+ ###> OK
+drop_requires_cascade=no # drop table require cascade/restrict
+ ###< create table crash_me (a integer not null)
+ ###> OK
+ ###< drop table crash_me
+ ###> OK
+drop_restrict=yes # drop table with cascade/restrict
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< drop table crash_q restrict
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+end_colon=yes # allows end ';'
+ ###< select * from crash_me;
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+except=no # except
+ ###< select * from crash_me except select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+except_all=no # except all
+ ###< select * from crash_me except all select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+except_all_incompat=no # except all (incompatible lists)
+ ###< select * from crash_me except all select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+except_incompat=no # except (incompatible lists)
+ ###< select * from crash_me except select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+field_name_case=yes # case independent field names
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< insert into crash_q(Q) values (1)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+float_int_expr=yes # mixing of integer and float in expression
+ ###< select 1+1.0
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+foreign_key=syntax only # foreign keys
+ ###< create table crash_me_qf (a integer not null,primary key (a))
+ ###> OK
+ ###
+ ###< create table crash_me_qf2 (a integer not null,foreign key (a) references crash_me_qf (a))
+ ###> OK
+ ###
+ ###< insert into crash_me_qf values (1)
+ ###> OK
+ ###
+ ###< insert into crash_me_qf2 values (2)
+ ###> OK
+ ###
+ ###< drop table crash_me_qf2
+ ###> OK
+ ###
+ ###< drop table crash_me_qf
+ ###> OK
+full_outer_join=no # full outer join
+ ###< select crash_me.a from crash_me full join crash_me2 ON
+ ### crash_me.a=crash_me2.a
+ ###> execute error:Unknown table 'crash_me' in field list
+ ###
+ ###As far as some queries didnt return OK, result is NO
+func_extra_!=yes # Function NOT as '!' in SELECT
+ ###
+ ###<select ! 1
+ ###>0
+func_extra_%=yes # Function MOD as %
+ ###
+ ###<select 10%7
+ ###>3
+func_extra_&=yes # Function & (bitwise and)
+ ###
+ ###<select 5 & 3
+ ###>1
+func_extra_&&=yes # Function AND as '&&'
+ ###
+ ###<select 1=1 && 2=2
+ ###>1
+func_extra_<>=yes # Function <> in SELECT
+ ###
+ ###<select 1<>1
+ ###>0
+func_extra_==yes # Function =
+ ###
+ ###<select (1=1)
+ ###>1
+func_extra_add_months=no # Function ADD_MONTHS
+ ###
+ ###<select add_months('1997-01-01',1) from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('1997-01-01',1) from crash_me_d' at line 1
+func_extra_adddate=yes # Function ADDDATE
+ ###
+ ###<select ADDDATE('2002-12-01',3) from crash_me_d
+ ###>2002-12-04
+func_extra_addtime=yes # Function ADDTIME
+ ###
+ ###<select ADDTIME('20:02:12','00:00:03')
+ ###>20:02:15
+func_extra_alpha=no # Function ALPHA
+ ###
+ ###<select alpha('Aâ',2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('Aâ',2)' at line 1
+func_extra_and_or=yes # Function AND and OR in SELECT
+ ###
+ ###<select 1=1 AND 2=2
+ ###>1
+func_extra_ascii_char=no # Function ASCII_CHAR
+ ###
+ ###<select ASCII_CHAR(65)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(65)' at line 1
+func_extra_ascii_code=no # Function ASCII_CODE
+ ###
+ ###<select ASCII_CODE('A')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('A')' at line 1
+func_extra_ascii_string=error # Function ASCII in string cast
+ ###
+ ###<select ascii('a')
+ ###>97
+ ###We expected 'a' but got '97'
+func_extra_atn2=no # Function ATN2
+ ###
+ ###<select atn2(1,0)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1,0)' at line 1
+func_extra_auto_num2string=yes # Function automatic num->string convert
+ ###
+ ###<select concat('a',2)
+ ###>a2
+func_extra_auto_string2num=yes # Function automatic string->num convert
+ ###
+ ###<select '1'+2
+ ###>3
+func_extra_between=yes # Function BETWEEN in SELECT
+ ###
+ ###<select 5 between 4 and 6
+ ###>1
+func_extra_binary_shifts=yes # Function << and >> (bitwise shifts)
+ ###
+ ###<select (1 << 4) >> 2
+ ###>4
+func_extra_bit_count=yes # Function BIT_COUNT
+ ###
+ ###<select bit_count(5)
+ ###>2
+func_extra_ceil=yes # Function CEIL
+ ###
+ ###<select ceil(-4.5)
+ ###>-4
+func_extra_char_date=no # Function CHAR (conversation date)
+ ###
+ ###<select CHAR(a,EUR) from crash_me_d
+ ###> execute failed:Unknown column 'EUR' in 'field list'
+func_extra_charindex=no # Function CHARINDEX
+ ###
+ ###<select charindex('a','crash')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('a','crash')' at line 1
+func_extra_chr=no # Function CHR
+ ###
+ ###<select CHR(65)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(65)' at line 1
+func_extra_chr_str=no # Function CHR (any type to string)
+ ###
+ ###<select CHR(67)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(67)' at line 1
+func_extra_concat_as_+=error # Function concatenation with +
+ ###
+ ###<select 'abc' + 'def'
+ ###>0
+ ###We expected 'abcdef' but got '0'
+func_extra_concat_list=yes # Function CONCAT(list)
+ ###
+ ###<select concat('a','b','c','d')
+ ###>abcd
+func_extra_convert=no # Function CONVERT
+ ###
+ ###<select convert(CHAR,5)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '5)' at line 1
+func_extra_cosh=no # Function COSH
+ ###
+ ###<select cosh(0)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(0)' at line 1
+func_extra_date=yes # Function DATE
+ ###
+ ###<select date('1963-08-16') from crash_me_d
+ ###>1963-08-16
+func_extra_date_format=yes # Function DATE_FORMAT
+ ###
+ ###<select date_format('1997-01-02 03:04:05','M W D Y y m d h i s w') from crash_me_d
+ ###>M W D Y y m d h i s w
+func_extra_dateadd=no # Function DATEADD
+ ###
+ ###<select dateadd(day,3,'1997-11-30') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(day,3,'1997-11-30') from crash_me_d' at line 1
+func_extra_datediff=no # Function DATEDIFF
+ ###
+ ###<select datediff(month,'Oct 21 1997','Nov 30 1997') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''Nov 30 1997') from crash_me_d' at line 1
+func_extra_datediff2arg=yes # Function DATEDIFF (2 arg)
+ ###
+ ###<select DATEDIFF('2002-12-04','2002-12-01') from crash_me_d
+ ###>3
+func_extra_datename=no # Function DATENAME
+ ###
+ ###<select datename(month,'Nov 30 1997') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(month,'Nov 30 1997') from crash_me_d' at line 1
+func_extra_datepart=no # Function DATEPART
+ ###
+ ###<select datepart(month,'July 20 1997') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(month,'July 20 1997') from crash_me_d' at line 1
+func_extra_day=yes # Function DAY
+ ###
+ ###<select DAY('2002-12-01') from crash_me_d
+ ###>1
+func_extra_decode=no # Function DECODE
+ ###
+ ###<select DECODE('S-103','T72',1,'S-103',2,'Leopard',3)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1,'S-103',2,'Leopard',3)' at line 1
+func_extra_ebcdic_string=no # Function EBCDIC in string cast
+ ###
+ ###<select ebcdic('a')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('a')' at line 1
+func_extra_elt=yes # Function ELT
+ ###
+ ###<select elt(2,'ONE','TWO','THREE')
+ ###>TWO
+func_extra_encrypt=yes # Function ENCRYPT
+ ###
+ ###<select encrypt('hello')
+ ###>VNeu3dE4DbVJY
+func_extra_expand2arg=no # Function EXPAND
+ ###
+ ###<select expand('abcd',6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abcd',6)' at line 1
+func_extra_field=yes # Function FIELD
+ ###
+ ###<select field('IBM','NCA','ICL','SUN','IBM','DIGITAL')
+ ###>4
+func_extra_fixed=no # Function FIXED
+ ###
+ ###<select fixed(222.6666,10,2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(222.6666,10,2)' at line 1
+func_extra_float=no # Function FLOAT
+ ###
+ ###<select float(6666.66,4)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'float(6666.66,4)' at line 1
+func_extra_format=yes # Function FORMAT
+ ###
+ ###<select format(1234.5555,2)
+ ###>1,234.56
+func_extra_from_days=yes # Function FROM_DAYS
+ ###
+ ###<select from_days(729024) from crash_me_d
+ ###>1996-01-01
+func_extra_from_unixtime=yes # Function FROM_UNIXTIME
+ ###
+ ###<select from_unixtime(0) from crash_me_d
+ ###>1970-01-01 02:00:00
+func_extra_getdate=no # Function GETDATE
+ ###
+ ###<select getdate()
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '()' at line 1
+func_extra_greatest=yes # Function GREATEST
+ ###
+ ###<select greatest('HARRY','HARRIOT','HAROLD')
+ ###>HARRY
+func_extra_hex=yes # Function HEX
+ ###
+ ###<select HEX('A')
+ ###>41
+func_extra_if=yes # Function IF
+ ###
+ ###<select if(5,6,7)
+ ###>6
+func_extra_in_num=yes # Function IN on numbers in SELECT
+ ###
+ ###<select 2 in (3,2,5,9,5,1)
+ ###>1
+func_extra_in_str=yes # Function IN on strings in SELECT
+ ###
+ ###<select 'monty' in ('david','monty','allan')
+ ###>1
+func_extra_index=no # Function INDEX
+ ###
+ ###<select index('abcdefg','cd',1,1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'index('abcdefg','cd',1,1)' at line 1
+func_extra_initcap=no # Function INITCAP
+ ###
+ ###<select initcap('the soap')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('the soap')' at line 1
+func_extra_instr=yes # Function LOCATE as INSTR
+ ###
+ ###<select instr('hello','ll')
+ ###>3
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+ ###
+ ###<select INSTR('CORPORATE FLOOR','OR',3,2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '3,2)' at line 1
+func_extra_instrb=no # Function INSTRB
+ ###
+ ###<select INSTRB('CORPORATE FLOOR','OR',5,2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('CORPORATE FLOOR','OR',5,2)' at line 1
+func_extra_interval=yes # Function INTERVAL
+ ###
+ ###<select interval(55,10,20,30,40,50,60,70,80,90,100)
+ ###>5
+func_extra_last_day=yes # Function LAST_DAY
+ ###
+ ###<select last_day('1997-04-01') from crash_me_d
+ ###>1997-04-30
+func_extra_last_insert_id=yes # Function LAST_INSERT_ID
+ ###
+ ###<select last_insert_id()
+ ###>0
+func_extra_least=yes # Function LEAST
+ ###
+ ###<select least('HARRY','HARRIOT','HAROLD')
+ ###>HAROLD
+func_extra_length=error # Function LENGTH
+ ###
+ ###<select length(1)
+ ###>1
+ ###We expected '2' but got '1'
+func_extra_lengthb=no # Function LENGTHB
+ ###
+ ###<select lengthb('CANDIDE')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('CANDIDE')' at line 1
+func_extra_lfill3arg=no # Function LFILL (3 arg)
+ ###
+ ###<select lfill('abcd','.',6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abcd','.',6)' at line 1
+func_extra_like=yes # Function LIKE in SELECT
+ ###
+ ###<select 'a' like 'a%'
+ ###>1
+func_extra_like_escape=yes # Function LIKE ESCAPE in SELECT
+ ###
+ ###<select '%' like 'a%' escape 'a'
+ ###>1
+func_extra_ln=yes # Function LN
+ ###
+ ###<select ln(95)
+ ###>4.553877
+func_extra_log(m_n)=yes # Function LOG(m,n)
+ ###
+ ###<select log(10,100)
+ ###>2.000000
+func_extra_logn=no # Function LOGN
+ ###
+ ###<select logn(2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(2)' at line 1
+func_extra_lpad=yes # Function LPAD
+ ###
+ ###<select lpad('hi',4,'??')
+ ###>??hi
+func_extra_ltrim2arg=no # Function LTRIM (2 arg)
+ ###
+ ###<select ltrim('..abcd..','.')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.')' at line 1
+func_extra_makedate=yes # Function MAKEDATE
+ ###
+ ###<select MAKEDATE(1963,228) from crash_me_d
+ ###>1963-08-16
+func_extra_maketime=yes # Function MAKETIME
+ ###
+ ###<select MAKETIME(20,02,12)
+ ###>20:02:12
+func_extra_mapchar=no # Function MAPCHAR
+ ###
+ ###<select mapchar('Aâ')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('Aâ')' at line 1
+func_extra_mdy=no # Function MDY
+ ###
+ ###<select mdy(7,1,1998) from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(7,1,1998) from crash_me_d' at line 1
+func_extra_microsecond=yes # Function MICROSECOND
+ ###
+ ###<select MICROSECOND('19630816200212111111')
+ ###>110000
+func_extra_mid=yes # Function SUBSTRING as MID
+ ###
+ ###<select mid('hello',3,2)
+ ###>ll
+func_extra_months_between=no # Function MONTHS_BETWEEN
+ ###
+ ###<select months_between('1997-02-02','1997-01-01') from crash_me_d
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('1997-02-02','1997-01-01') from crash_me_d' at line 1
+func_extra_noround=no # Function NOROUND
+ ###< select noround(22.6)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(22.6)' at line 1
+func_extra_not=yes # Function NOT in SELECT
+ ###
+ ###<select not false
+ ###>1
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+ ###
+ ###<select 5 not between 4 and 6
+ ###>0
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+ ###
+ ###<select 'a' not like 'a%'
+ ###>0
+func_extra_num=no # Function NUM
+ ###
+ ###<select NUM('2123')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('2123')' at line 1
+func_extra_odbc_convert=no # Function ODBC CONVERT
+ ###
+ ###<select convert(5,SQL_CHAR)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_CHAR)' at line 1
+func_extra_password=yes # Function PASSWORD
+ ###
+ ###<select password('hello')
+ ###>*6B4F89A54E2D27ECD7E8DA05B4AB8FD9D1D8B119
+func_extra_paste=no # Function PASTE
+ ###
+ ###<select paste('ABCDEFG',3,2,'1234')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('ABCDEFG',3,2,'1234')' at line 1
+func_extra_patindex=no # Function PATINDEX
+ ###
+ ###<select patindex('%a%','crash')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('%a%','crash')' at line 1
+func_extra_period_add=yes # Function PERIOD_ADD
+ ###
+ ###<select period_add(9602,-12) from crash_me_d
+ ###>199502
+func_extra_period_diff=yes # Function PERIOD_DIFF
+ ###
+ ###<select period_diff(199505,199404) from crash_me_d
+ ###>13
+func_extra_pow=yes # Function POW
+ ###
+ ###<select pow(3,2)
+ ###>9.000000
+func_extra_range=no # Function RANGE
+ ###
+ ###<select range(a)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a)' at line 1
+func_extra_regexp=yes # Function REGEXP in SELECT
+ ###
+ ###<select 'a' regexp '^(a|b)*$'
+ ###>1
+func_extra_replace2arg=no # Function REPLACE (2 arg)
+ ###
+ ###<select replace('AbCd','bC')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
+func_extra_replicate=no # Function REPLICATE
+ ###
+ ###<select replicate('a',5)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('a',5)' at line 1
+func_extra_reverse=yes # Function REVERSE
+ ###
+ ###<select reverse('abcd')
+ ###>dcba
+func_extra_rfill3arg=no # Function RFILL (3 arg)
+ ###
+ ###<select rfill('abcd','.',6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abcd','.',6)' at line 1
+func_extra_root=no # Function ROOT
+ ###
+ ###<select root(4)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(4)' at line 1
+func_extra_round1=yes # Function ROUND(1 arg)
+ ###
+ ###<select round(5.63)
+ ###>6
+func_extra_rpad=yes # Function RPAD
+ ###
+ ###<select rpad('hi',4,'??')
+ ###>hi??
+func_extra_rpad4arg=no # Function RPAD (4 arg)
+ ###
+ ###<select rpad('abcd',2,'+-',8)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '8)' at line 1
+func_extra_rtrim2arg=no # Function RTRIM (2 arg)
+ ###
+ ###<select rtrim('..abcd..','.')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.')' at line 1
+func_extra_sec_to_time=yes # Function SEC_TO_TIME
+ ###
+ ###<select sec_to_time(5001)
+ ###>01:23:21
+func_extra_sinh=no # Function SINH
+ ###
+ ###<select sinh(1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1)' at line 1
+func_extra_str=no # Function STR
+ ###
+ ###<select str(123.45,5,1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(123.45,5,1)' at line 1
+func_extra_strcmp=yes # Function STRCMP
+ ###
+ ###<select strcmp('abc','adc')
+ ###>-1
+func_extra_stuff=no # Function STUFF
+ ###
+ ###<select stuff('abc',2,3,'xyz')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc',2,3,'xyz')' at line 1
+func_extra_subdate=yes # Function SUBDATE
+ ###
+ ###<select SUBDATE('2002-12-04',3) from crash_me_d
+ ###>2002-12-01
+func_extra_substr2arg=yes # Function SUBSTR (2 arg)
+ ###
+ ###<select substr('abcd',2)
+ ###>bcd
+func_extra_substr3arg=yes # Function SUBSTR (3 arg)
+ ###
+ ###<select substr('abcd',2,2)
+ ###>bc
+func_extra_substrb=no # Function SUBSTRB
+ ###
+ ###<select SUBSTRB('ABCDEFG',5,4.2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('ABCDEFG',5,4.2)' at line 1
+func_extra_substring_index=yes # Function SUBSTRING_INDEX
+ ###
+ ###<select substring_index('www.tcx.se','.',-2)
+ ###>tcx.se
+func_extra_subtime=yes # Function SUBTIME
+ ###
+ ###<select SUBTIME('20:02:15','00:00:03')
+ ###>20:02:12
+func_extra_sysdate=yes # Function SYSDATE
+ ###
+ ###<select sysdate()
+ ###>2004-04-06 13:49:05
+func_extra_tail=no # Function TAIL
+ ###
+ ###<select tail('ABCDEFG',3)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('ABCDEFG',3)' at line 1
+func_extra_tanh=no # Function TANH
+ ###
+ ###<select tanh(1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1)' at line 1
+func_extra_time=yes # Function TIME
+ ###
+ ###<select time('20:02:12')
+ ###>20:02:12
+func_extra_time_to_sec=yes # Function TIME_TO_SEC
+ ###
+ ###<select time_to_sec('01:23:21')
+ ###>5001
+func_extra_timediff=yes # Function TIMEDIFF
+ ###
+ ###<select TIMEDIFF('20:02:15','20:02:12')
+ ###>00:00:03
+func_extra_timestamp=error # Function TIMESTAMP
+ ###
+ ###<select timestamp('19630816','00200212')
+ ###>1963-08-16 20:02:12
+ ###We expected '19630816200212000000' but got '1963-08-16 20:02:12'
+func_extra_to_days=yes # Function TO_DAYS
+ ###
+ ###<select to_days('1996-01-01') from crash_me_d
+ ###>729024
+func_extra_translate=no # Function TRANSLATE
+ ###
+ ###<select translate('abc','bc','de')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc','bc','de')' at line 1
+func_extra_trim1arg=yes # Function TRIM (1 arg)
+ ###
+ ###<select trim(' abcd ')
+ ###>abcd
+func_extra_trim2arg=no # Function TRIM (2 arg)
+ ###
+ ###<select trim('..abcd..','.')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''.')' at line 1
+func_extra_trim_many_char=error # Function TRIM; Many char extension
+ ###
+ ###<select trim(':!' FROM ':abc!')
+ ###>:abc!
+ ###We expected 'abc' but got ':abc!'
+func_extra_trim_substring=yes # Function TRIM; Substring extension
+ ###
+ ###<select trim('cb' FROM 'abccb')
+ ###>abc
+func_extra_trunc=no # Function TRUNC
+ ###
+ ###<select trunc(18.18,-1)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(18.18,-1)' at line 1
+func_extra_trunc1arg=no # Function TRUNC (1 arg)
+ ###
+ ###<select trunc(222.6)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(222.6)' at line 1
+func_extra_uid=no # Function UID
+ ###
+ ###<select uid
+ ###> execute failed:Unknown column 'uid' in 'field list'
+func_extra_unix_timestamp=yes # Function UNIX_TIMESTAMP
+ ###
+ ###<select unix_timestamp()
+ ###>1081248545
+func_extra_userenv=no # Function USERENV
+ ###
+ ###<select userenv
+ ###> execute failed:Unknown column 'userenv' in 'field list'
+func_extra_value=no # Function VALUE
+ ###
+ ###<select value(NULL,'WALRUS')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(NULL,'WALRUS')' at line 1
+func_extra_version=yes # Function VERSION
+ ###
+ ###<select version()
+ ###>4.1.2-alpha
+func_extra_weekday=yes # Function WEEKDAY
+ ###
+ ###<select weekday('1997-11-29') from crash_me_d
+ ###>5
+func_extra_weekofyear=yes # Function WEEKOFYEAR
+ ###
+ ###<select WEEKOFYEAR('1963-08-16') from crash_me_d
+ ###>33
+func_extra_|=yes # Function | (bitwise or)
+ ###
+ ###<select 1 | 2
+ ###>3
+func_extra_||=yes # Function OR as '||'
+ ###
+ ###<select 1=0 || 1=1
+ ###>1
+func_extra_~*=no # Function ~* (case insensitive compare)
+ ###
+ ###<select 'hi' ~* 'HI'
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '~* 'HI'' at line 1
+func_odbc_abs=yes # Function ABS
+ ###
+ ###<select abs(-5)
+ ###>5
+func_odbc_acos=yes # Function ACOS
+ ###
+ ###<select acos(0)
+ ###>1.570796
+func_odbc_ascii=yes # Function ASCII
+ ###
+ ###<select ASCII('A')
+ ###>65
+func_odbc_asin=yes # Function ASIN
+ ###
+ ###<select asin(1)
+ ###>1.570796
+func_odbc_atan=yes # Function ATAN
+ ###
+ ###<select atan(1)
+ ###>0.785398
+func_odbc_atan2=yes # Function ATAN2
+ ###
+ ###<select atan2(1,0)
+ ###>1.570796
+func_odbc_ceiling=yes # Function CEILING
+ ###
+ ###<select ceiling(-4.5)
+ ###>-4
+func_odbc_char=yes # Function CHAR
+ ###
+ ###<select CHAR(65)
+ ###>A
+func_odbc_concat=yes # Function CONCAT(2 arg)
+ ###
+ ###<select concat('a','b')
+ ###>ab
+func_odbc_cos=yes # Function COS
+ ###
+ ###<select cos(0)
+ ###>1.000000
+func_odbc_cot=yes # Function COT
+ ###
+ ###<select cot(1)
+ ###>0.64209262
+func_odbc_curdate=yes # Function CURDATE
+ ###
+ ###<select curdate()
+ ###>2004-04-06
+func_odbc_curtime=yes # Function CURTIME
+ ###
+ ###<select curtime()
+ ###>13:49:04
+func_odbc_database=yes # Function DATABASE
+ ###
+ ###<select database()
+ ###>test
+func_odbc_dayname=yes # Function DAYNAME
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayname(a) from crash_me_d
+ ###>Saturday
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayofmonth(a) from crash_me_d
+ ###>1
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayofweek(a) from crash_me_d
+ ###>7
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select dayofyear(a) from crash_me_d
+ ###>32
+func_odbc_degrees=yes # Function DEGREES
+ ###
+ ###<select degrees(6.283185)
+ ###>359.99998239991
+func_odbc_difference=no # Function DIFFERENCE()
+ ###
+ ###<select difference('abc','abe')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc','abe')' at line 1
+ ###
+ ###<select {fn difference('abc','abe') }
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('abc','abe') }' at line 1
+func_odbc_exp=yes # Function EXP
+ ###
+ ###<select exp(1.0)
+ ###>2.718282
+func_odbc_floor=yes # Function FLOOR
+ ###
+ ###<select floor(2.5)
+ ###>2
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+ ###
+ ###<select { fn LEFT( { fn RIGHT('abcd',2) },1) }
+ ###>c
+func_odbc_hour=yes # Function HOUR
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select hour('12:13:14')
+ ###>12
+func_odbc_hour_time=yes # Function ANSI HOUR
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select hour(TIME '12:13:14')
+ ###>12
+func_odbc_ifnull=yes # Function IFNULL
+ ###
+ ###<select ifnull(2,3)
+ ###>2
+func_odbc_insert=yes # Function INSERT
+ ###
+ ###<select insert('abcd',2,2,'ef')
+ ###>aefd
+func_odbc_lcase=yes # Function LCASE
+ ###
+ ###<select lcase('ABC')
+ ###>abc
+func_odbc_left=yes # Function LEFT
+ ###
+ ###<select left('abcd',2)
+ ###>ab
+func_odbc_length=yes # Function REAL LENGTH
+ ###
+ ###<select length('abcd ')
+ ###>5
+func_odbc_length_without_space=error # Function ODBC LENGTH
+ ###
+ ###<select length('abcd ')
+ ###>5
+ ###We expected '4' but got '5'
+ ###
+ ###<select {fn length('abcd ') }
+ ###>5
+ ###We expected '4' but got '5'
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+ ###
+ ###<select locate('bcd','abcd')
+ ###>2
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+ ###
+ ###<select locate('bcd','abcd',3)
+ ###>0
+func_odbc_log=yes # Function LOG
+ ###
+ ###<select log(2)
+ ###>0.693147
+func_odbc_log10=yes # Function LOG10
+ ###
+ ###<select log10(10)
+ ###>1.000000
+func_odbc_ltrim=yes # Function LTRIM
+ ###
+ ###<select ltrim(' abcd')
+ ###>abcd
+func_odbc_minute=yes # Function MINUTE
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select minute('12:13:14')
+ ###>13
+func_odbc_mod=yes # Function MOD
+ ###
+ ###<select mod(11,7)
+ ###>4
+func_odbc_month=yes # Function MONTH
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select month(a) from crash_me_d
+ ###>2
+func_odbc_monthname=yes # Function MONTHNAME
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select monthname(a) from crash_me_d
+ ###>February
+func_odbc_now=yes # Function NOW
+ ###
+ ###<select now()
+ ###>2004-04-06 13:49:04
+func_odbc_pi=yes # Function PI
+ ###
+ ###<select pi()
+ ###>3.141593
+func_odbc_power=yes # Function POWER
+ ###
+ ###<select power(2,4)
+ ###>16.000000
+func_odbc_quarter=yes # Function QUARTER
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select quarter(a) from crash_me_d
+ ###>1
+func_odbc_radians=yes # Function RADIANS
+ ###
+ ###<select radians(360)
+ ###>6.2831853071796
+func_odbc_rand=yes # Function RAND
+ ###
+ ###<select rand(1)
+ ###>0.40540353712198
+func_odbc_repeat=yes # Function REPEAT
+ ###
+ ###<select repeat('ab',3)
+ ###>ababab
+func_odbc_replace=yes # Function REPLACE
+ ###
+ ###<select replace('abbaab','ab','ba')
+ ###>bababa
+func_odbc_right=yes # Function RIGHT
+ ###
+ ###<select right('abcd',2)
+ ###>cd
+func_odbc_round=yes # Function ROUND(2 arg)
+ ###
+ ###<select round(5.63,2)
+ ###>5.63
+func_odbc_rtrim=yes # Function RTRIM
+ ###
+ ###<select rtrim(' abcd ')
+ ###> abcd
+func_odbc_second=yes # Function SECOND
+ ###< insert into crash_me_t values(20:08:16)
+ ###
+ ###<select second('12:13:14')
+ ###>14
+func_odbc_sign=yes # Function SIGN
+ ###
+ ###<select sign(-5)
+ ###>-1
+func_odbc_sin=yes # Function SIN
+ ###
+ ###<select sin(1)
+ ###>0.841471
+func_odbc_soundex=yes # Function SOUNDEX
+ ###
+ ###<select soundex('hello')
+ ###>H400
+func_odbc_space=yes # Function SPACE
+ ###
+ ###<select space(5)
+ ###>
+func_odbc_sqrt=yes # Function SQRT
+ ###
+ ###<select sqrt(4)
+ ###>2.000000
+func_odbc_substring=yes # Function ODBC SUBSTRING
+ ###
+ ###<select substring('abcd',3,2)
+ ###>cd
+func_odbc_tan=yes # Function TAN
+ ###
+ ###<select tan(1)
+ ###>1.557408
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+ ###
+ ###<select timestampadd(SQL_TSI_SECOND,1,'1997-01-01 00:00:00')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(SQL_TSI_SECOND,1,'1997-01-01 00:00:00')' at line 1
+ ###
+ ###<select {fn timestampadd(SQL_TSI_SECOND,1,{ts '1997-01-01 00:00:00'}) }
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(SQL_TSI_SECOND,1,{ts '1997-01-01 00:00:00'}) }' at line 1
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+ ###
+ ###<select timestampdiff(SQL_TSI_SECOND,'1997-01-01 00:00:02', '1997-01-01 00:00:01')
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(SQL_TSI_SECOND,'1997-01-01 00:00:02', '1997-01-01 00:00:01')'
+ ###
+ ###<select {fn timestampdiff(SQL_TSI_SECOND,{ts '1997-01-01 00:00:02'}, {ts '1997-01-01 00:00:01'}) }
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(SQL_TSI_SECOND,{ts '1997-01-01 00:00:02'}, {ts '1997-01-01 00:
+func_odbc_truncate=yes # Function TRUNCATE
+ ###
+ ###<select truncate(18.18,-1)
+ ###>10
+func_odbc_ucase=yes # Function UCASE
+ ###
+ ###<select ucase('abc')
+ ###>ABC
+func_odbc_user()=yes # Function USER()
+ ###
+ ###<select user()
+ ###>monty@localhost
+func_odbc_week=USA # WEEK
+ ###<select week('1997-02-01')
+ ###>4
+ ###We expected '5' but got '4'
+func_odbc_year=yes # Function YEAR
+ ###< insert into crash_me_d values('1997-02-01')
+ ###
+ ###<select year(a) from crash_me_d
+ ###>1997
+func_sql_+=yes # Function +, -, * and /
+ ###
+ ###<select 5*3-4/2+1
+ ###>14.00
+func_sql_bit_length=yes # Function BIT_LENGTH
+ ###
+ ###<select bit_length('abc')
+ ###>24
+func_sql_cast=yes # Function CAST
+ ###
+ ###<select CAST(1 as CHAR)
+ ###>1
+func_sql_char_length=error # Function CHAR_LENGTH
+ ###
+ ###<select char_length(b) from crash_me
+ ###>1
+ ###We expected '10' but got '1'
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+ ###
+ ###<select char_length('abcd')
+ ###>4
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+ ###
+ ###<select character_length('abcd')
+ ###>4
+func_sql_coalesce=yes # Function COALESCE
+ ###
+ ###<select coalesce(NULL,'bcd','qwe')
+ ###>bcd
+func_sql_concat_as_||=error # Function concatenation with ||
+ ###
+ ###<select 'abc' || 'def'
+ ###>0
+ ###We expected 'abcdef' but got '0'
+func_sql_current_date=yes # Function CURRENT_DATE
+ ###
+ ###<select current_date
+ ###>2004-04-06
+func_sql_current_time=yes # Function CURRENT_TIME
+ ###
+ ###<select current_time
+ ###>13:49:04
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+ ###
+ ###<select current_timestamp
+ ###>2004-04-06 13:49:04
+func_sql_current_user=yes # CURRENT_USER
+ ###< select CURRENT_USER
+ ###> OK
+func_sql_extract_sql=yes # Function EXTRACT
+ ###
+ ###<select extract(minute from timestamp '2000-02-23 18:43:12.987')
+ ###>43
+func_sql_localtime=yes # Function LOCALTIME
+ ###
+ ###<select localtime
+ ###>2004-04-06 13:49:04
+func_sql_localtimestamp=yes # Function LOCALTIMESTAMP
+ ###
+ ###<select localtimestamp
+ ###>2004-04-06 13:49:04
+func_sql_lower=yes # Function LOWER
+ ###
+ ###<select LOWER('ABC')
+ ###>abc
+func_sql_nullif_num=yes # Function NULLIF with numbers
+ ###
+ ###<select NULLIF(NULLIF(1,2),1)
+ ###>
+func_sql_nullif_string=yes # Function NULLIF with strings
+ ###
+ ###<select NULLIF(NULLIF('first','second'),'first')
+ ###>
+func_sql_octet_length=yes # Function OCTET_LENGTH
+ ###
+ ###<select octet_length('abc')
+ ###>3
+func_sql_position=yes # Function POSITION
+ ###
+ ###<select position('ll' in 'hello')
+ ###>3
+func_sql_searched_case=yes # Function searched CASE
+ ###
+ ###<select case when 1 > 2 then 'false' when 2 > 1 then 'true' end
+ ###>true
+func_sql_session_user=with_parenthesis # SESSION_USER
+ ###< select SESSION_USER
+ ###> execute error:Unknown column 'SESSION_USER' in 'field list'
+ ###
+ ###< select SESSION_USER()
+ ###> OK
+func_sql_simple_case=yes # Function simple CASE
+ ###
+ ###<select case 2 when 1 then 'false' when 2 then 'true' end
+ ###>true
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+ ###
+ ###<select substring('abcd' from 2 for 2)
+ ###>bc
+func_sql_system_user=with_parenthesis # SYSTEM_USER
+ ###< select SYSTEM_USER
+ ###> execute error:Unknown column 'SYSTEM_USER' in 'field list'
+ ###
+ ###< select SYSTEM_USER()
+ ###> OK
+func_sql_trim=yes # Function TRIM
+ ###
+ ###<select trim(trailing from trim(LEADING FROM ' abc '))
+ ###>abc
+func_sql_upper=yes # Function UPPER
+ ###
+ ###<select UPPER('abc')
+ ###>ABC
+func_sql_user=with_parenthesis # USER
+ ###< select USER
+ ###> execute error:Unknown column 'USER' in 'field list'
+ ###
+ ###< select USER()
+ ###> OK
+func_where_between=yes # Function BETWEEN
+ ###
+ ###<select a from crash_me where 5 between 4 and 6
+ ###>1
+func_where_eq_all=yes # Function = ALL
+ ###
+ ###<select a from crash_me where b =all (select b from crash_me)
+ ###>1
+func_where_eq_any=yes # Function = ANY
+ ###
+ ###<select a from crash_me where b =any (select b from crash_me)
+ ###>1
+func_where_eq_some=yes # Function = SOME
+ ###
+ ###<select a from crash_me where b =some (select b from crash_me)
+ ###>1
+func_where_exists=yes # Function EXISTS
+ ###
+ ###<select a from crash_me where exists (select * from crash_me)
+ ###>1
+func_where_in_num=yes # Function IN on numbers
+ ###
+ ###<select a from crash_me where 2 in (3,2,5,9,5,1)
+ ###>1
+func_where_like=yes # Function LIKE
+ ###
+ ###<select a from crash_me where b like 'a%'
+ ###>1
+func_where_like_escape=yes # Function LIKE ESCAPE
+ ###
+ ###<select a from crash_me where b like '%' escape 'a'
+ ###>1
+func_where_match=no # Function MATCH
+ ###
+ ###<select a from crash_me where 1 match (select a from crash_me)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'match (select a from crash_me)' at line 1
+func_where_match_unique=no # Function MATCH UNIQUE
+ ###
+ ###<select a from crash_me where 1 match unique (select a from crash_me)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'match unique (select a from crash_me)' at line 1
+func_where_matches=no # Function MATCHES
+ ###
+ ###<select a from crash_me where b matcjhes 'a*'
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'matcjhes 'a*'' at line 1
+func_where_not_between=yes # Function NOT BETWEEN
+ ###
+ ###<select a from crash_me where 7 not between 4 and 6
+ ###>1
+func_where_not_exists=yes # Function NOT EXISTS
+ ###
+ ###<select a from crash_me where not exists (select * from crash_me where a = 2)
+ ###>1
+func_where_not_like=yes # Function NOT LIKE
+ ###
+ ###<select a from crash_me where b not like 'b%'
+ ###>1
+func_where_not_unique=no # Function NOT UNIQUE
+ ###
+ ###<select a from crash_me where not unique (select * from crash_me where a = 2)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'unique (select * from crash_me where a = 2)' at line 1
+func_where_unique=no # Function UNIQUE
+ ###
+ ###<select a from crash_me where unique (select * from crash_me)
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'unique (select * from crash_me)' at line 1
+functions=yes # Functions
+ ###< select 1+1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_by=yes # Group by
+ ###< select a from crash_me group by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_by_alias=yes # Group by alias
+ ###< select a as ab from crash_me group by ab
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_by_null=yes # Group on column with null values
+ ###< create table crash_q (s char(10))
+ ###> OK
+ ###< insert into crash_q values(null)
+ ###> OK
+ ###< insert into crash_q values(null)
+ ###> OK
+ ###
+ ###<select count(*),s from crash_q group by s
+ ###>2
+ ###
+ ###< drop table crash_q
+ ###> OK
+group_by_position=yes # Group by position
+ ###< select a from crash_me group by 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_distinct_functions=yes # Group functions with distinct
+ ###< select count(distinct a) from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_func_extra_bit_and=yes # Group function BIT_AND
+ ###
+ ###<select bit_and(a),a from crash_me group by a
+ ###>1
+group_func_extra_bit_or=yes # Group function BIT_OR
+ ###
+ ###<select bit_or(a),a from crash_me group by a
+ ###>1
+group_func_extra_count_distinct_list=yes # Group function COUNT(DISTINCT expr,expr,...)
+ ###
+ ###<select count(distinct a,b),a from crash_me group by a
+ ###>1
+group_func_extra_std=yes # Group function STD
+ ###
+ ###<select std(a),a from crash_me group by a
+ ###>0.0000
+group_func_extra_stddev=yes # Group function STDDEV
+ ###
+ ###<select stddev(a),a from crash_me group by a
+ ###>0.0000
+group_func_extra_variance=yes # Group function VARIANCE
+ ###
+ ###<select variance(a),a from crash_me group by a
+ ###>0.0000
+group_func_sql_any=no # Group function ANY
+ ###
+ ###<select any(a),a from crash_me group by a
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a),a from crash_me group by a' at line 1
+group_func_sql_avg=yes # Group function AVG
+ ###
+ ###<select avg(a),a from crash_me group by a
+ ###>1.0000
+group_func_sql_count_*=yes # Group function COUNT (*)
+ ###
+ ###<select count(*),a from crash_me group by a
+ ###>1
+group_func_sql_count_column=yes # Group function COUNT column name
+ ###
+ ###<select count(a),a from crash_me group by a
+ ###>1
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+ ###
+ ###<select count(distinct a),a from crash_me group by a
+ ###>1
+group_func_sql_every=no # Group function EVERY
+ ###
+ ###<select every(a),a from crash_me group by a
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a),a from crash_me group by a' at line 1
+group_func_sql_max=yes # Group function MAX on numbers
+ ###
+ ###<select max(a),a from crash_me group by a
+ ###>1
+group_func_sql_max_str=yes # Group function MAX on strings
+ ###
+ ###<select max(b),a from crash_me group by a
+ ###>a
+group_func_sql_min=yes # Group function MIN on numbers
+ ###
+ ###<select min(a),a from crash_me group by a
+ ###>1
+group_func_sql_min_str=yes # Group function MIN on strings
+ ###
+ ###<select min(b),a from crash_me group by a
+ ###>a
+group_func_sql_some=no # Group function SOME
+ ###
+ ###<select some(a),a from crash_me group by a
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a),a from crash_me group by a' at line 1
+group_func_sql_sum=yes # Group function SUM
+ ###
+ ###<select sum(a),a from crash_me group by a
+ ###>1
+group_functions=yes # Group functions
+ ###< select count(*) from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_many_distinct_functions=yes # Group functions with several distinct
+ ###< select count(distinct a), count(distinct b) from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+group_on_unused=yes # Group on unused column
+ ###< select count(*) from crash_me group by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+has_true_false=yes # TRUE and FALSE
+ ###< select (1=1)=true
+ ###> OK
+having=yes # Having
+ ###<select a from crash_me group by a having a > 0
+ ###>1
+ ###
+ ###<select a from crash_me group by a having a < 0
+ ###> didn't return any result:
+having_with_alias=yes # Having on alias
+ ###< select a as ab from crash_me group by a having ab > 0
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+having_with_group=yes # Having with group function
+ ###< select a from crash_me group by a having count(*) = 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+hex_numbers=yes # hex numbers (0x41)
+ ###< select 0x41
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+hex_strings=yes # hex strings (x'1ace')
+ ###< select x'1ace'
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+ignore_end_space=yes # Ignore end space in compare
+ ###
+ ###<select b from crash_me where b = 'a '
+ ###>a
+index_in_create=yes # index in create table
+ ###< create table crash_q (q integer not null,index (q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+index_namespace=yes # different namespace for index
+ ###< create index crash_me on crash_me (b)
+ ###> OK
+ ###< drop index crash_me on crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+index_parts=yes # index on column part (extension)
+ ###< create index crash_q on crash_me (b(5))
+ ###> OK
+ ###< drop index crash_q on crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+inner_join=yes # inner join
+ ###< select crash_me.a from crash_me inner join crash_me2 ON crash_me.a=crash_me2.a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_default_values=no # INSERT DEFAULT VALUES
+ ###< create table crash_me_q (a int)
+ ###> OK
+ ###< insert into crash_me_q DEFAULT VALUES
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT VALUES' at line 1
+ ###< drop table crash_me_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+insert_empty_string=yes # insert empty string
+ ###< create table crash_q (a char(10) not null,b char(10))
+ ###> OK
+ ###< insert into crash_q values ('','')
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_multi_value=yes # INSERT with Value lists
+ ###< create table crash_q (s char(10))
+ ###> OK
+ ###< insert into crash_q values ('a'),('b')
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_select=yes # insert INTO ... SELECT ...
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< insert into crash_q (a) SELECT crash_me.a from crash_me
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_with_default=yes # INSERT with DEFAULT
+ ###< create table crash_me_q (a int)
+ ###> OK
+ ###< insert into crash_me_q (a) values (DEFAULT)
+ ###> OK
+ ###< drop table crash_me_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+insert_with_empty_value_list=no # INSERT with empty value list
+ ###< create table crash_me_q (a int)
+ ###> OK
+ ###< insert into crash_me_q (a) values ()
+ ###> execute error:Column count doesn't match value count at row 1
+ ###< drop table crash_me_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+insert_with_set=yes # INSERT with set syntax
+ ###< create table crash_q (a integer)
+ ###> OK
+ ###< insert into crash_q SET a=1
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+intersect=no # intersect
+ ###< select * from crash_me intersect select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+intersect_all=no # intersect all
+ ###< select * from crash_me intersect all select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+intersect_all_incompat=no # intersect all (incompatible lists)
+ ###< select * from crash_me intersect all select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'all select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+intersect_incompat=no # intersect (incompatible lists)
+ ###< select * from crash_me intersect select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+join_tables=61 # tables in join
+ ###We are trying (example with N=5):
+ ###select crash_me.a,t0.a,t1.a,t2.a,t3.a,t4.a from crash_me,crash_me t0,crash_me t1,crash_me t2,crash_me t3,crash_me t4
+ ### 32:OK 48:OK 56:OK 60:OK 62:FAIL 61:FAIL
+left_outer_join=yes # left outer join
+ ###< select crash_me.a from crash_me left join crash_me2 ON crash_me.a=crash_me2.a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+left_outer_join_using=yes # left outer join using
+ ###< select c1 from crash_me left join crash_me2 using (a)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+length_of_varchar_field=actual length # CHARACTER_LENGTH(varchar_field)
+ ###< CREATE TABLE crash_me1 (S1 VARCHAR(100))
+ ###> OK
+ ###< INSERT INTO crash_me1 VALUES ('X')
+ ###> OK
+ ###
+ ###< SELECT CHARACTER_LENGTH(S1) FROM crash_me1
+ ### > 1
+ ###< drop table crash_me1
+ ###> OK
+like_with_column=yes # column LIKE column
+ ###< create table crash_q (a char(10),b char(10))
+ ###> OK
+ ###< insert into crash_q values('abc','abc')
+ ###> OK
+ ###< select * from crash_q where a like b
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+like_with_number=yes # LIKE on numbers
+ ###< create table crash_q (a int,b int)
+ ###> OK
+ ###< insert into crash_q values(10,10)
+ ###> OK
+ ###< select * from crash_q where a like '10'
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+lock_tables=yes # lock table
+ ###< lock table crash_me READ
+ ###> OK
+ ###< unlock tables
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+logical_value=1 # Value of logical operation (1=1)
+ ###<select (1=1)
+ ###>1
+max_big_expressions=10 # big expressions
+ ###We are trying (example with N=5):
+ ###select 0+(1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+...(8168)
+ ### 50:FAIL 10:OK 30:FAIL 14:FAIL 11:FAIL
+max_char_size=1048543 # max char() size
+ ###We are trying (example with N=5):
+ ###create table crash_q (q char(5))
+ ###insert into crash_q values ('aaaaa')
+ ###select * from crash_q
+ ### 524287:OK 786431:OK 917503:OK 983039:OK 1015807:OK 1032191:OK 1040383:OK 1044479:OK 1046527:OK 1047551:OK 1048063:OK 1048319:OK 1048447:OK 1048511:OK 1048543:OK 1048559:FAIL 1048546:FAIL 1048544:FAIL
+max_column_name=64 # column name length
+ ###We are trying (example with N=5):
+ ###create table crash_q (qaaaaa integer)
+ ###insert into crash_q (qaaaaa) values(1)
+ ###select qaaaaa from crash_q
+ ### 256:FAIL 51:OK 153:FAIL 72:FAIL 55:OK 63:OK 67:FAIL 64:FAIL
+max_columns=2599 # Columns in table
+ ###We are trying (example with N=5):
+ ###create table crash_q (a integer ,a0 integer,a1 integer,a2 integer,a3 integer,a4 integer)
+ ### 4096:FAIL 819:OK 2457:OK 3276:FAIL 2621:FAIL 2490:OK 2555:OK 2588:OK 2604:FAIL 2591:OK 2597:OK 2600:FAIL 2598:OK 2599:FAIL
+max_conditions=85660 # OR and AND in WHERE
+ ###We are trying (example with N=5):
+ ###select a from crash_me where a=1 and b='a' or a=0 and b='0' or a=1 and b='1' or a=2 and b='2' or a=3 and b='3' or a=4 and b='4'
+ ### 27592:OK 41389:OK 48287:FAIL 42769:OK 45528:FAIL 43321:FAIL 42880:FAIL 42791:OK 42835:FAIL 42800:OK 42817:OK 42826:OK 42830:OK 42832:FAIL 42831:FAIL
+max_expressions=836 # simple expressions
+ ###We are trying (example with N=5):
+ ###select 1+1+1+1+1+1
+ ### 5000:FAIL 1000:FAIL 200:OK 600:OK 800:OK 900:FAIL 820:OK 860:FAIL 828:OK 844:FAIL 831:OK 837:FAIL 832:OK 834:OK 835:OK 836:OK
+max_index=32 # max index
+ ### max_unique_index=32 ,so max_index must be same
+max_index_length=1000 # index length
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 char(5) not null,unique (q0))
+ ###insert into crash_q values('aaaaa')
+ ### 4096:FAIL 819:OK 2457:FAIL 1147:FAIL 885:OK 1016:FAIL 911:OK 963:OK 989:OK 1002:FAIL 992:OK 997:OK 999:OK 1000:OK 1001:FAIL
+max_index_name=64 # index name length
+ ###We are trying (example with N=5):
+ ###create index crash_qaaaaa on crash_me (a)
+ ### 256:FAIL 51:OK 153:FAIL 72:FAIL 55:OK 63:FAIL 57:OK 60:FAIL 58:FAIL
+max_index_part_length=255 # max index part length
+ ###We are trying (example with N=5):
+ ###create table crash_q (q char(5) not null,unique(q))
+ ###insert into crash_q (q) values ('aaaaa')
+ ###select q from crash_q
+ ### 524271:FAIL 104854:FAIL 20971:FAIL 4194:FAIL 839:FAIL 168:OK 503:FAIL 235:OK 369:FAIL 262:FAIL 241:OK 251:OK 256:FAIL 252:OK 254:OK 255:OK
+max_index_parts=16 # index parts
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 integer not null,q1 integer not null,q2 integer not null,q3 integer not null,q4 integer not nul...(1263)
+ ###insert into crash_q (q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15,q16,q17,q18,q19,q20,q21,q22,q23,q24,q25,q26,q...(284)
+ ###select q0 from crash_q
+ ### 32:FAIL 7:OK 19:FAIL 10:OK 14:OK 16:FAIL 15:OK
+max_index_varchar_part_length=255 # index varchar part length
+ ###We are trying (example with N=5):
+ ###create table crash_q (q varchar(5) not null,unique(q))
+ ###insert into crash_q (q) values ('aaaaa')
+ ###select q from crash_q
+ ### 524271:FAIL 104854:FAIL 20971:FAIL 4194:FAIL 839:FAIL 168:OK 503:FAIL 235:OK 369:FAIL 262:FAIL 241:OK 251:OK 256:FAIL 252:OK 254:OK 255:OK
+max_row_length=65534 # max table row length (without blobs)
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 char(5) not null)
+ ###insert into crash_q values ('aaaaa')
+ ### 331372:FAIL 66275:FAIL 13255:OK 39765:OK 53020:OK 59647:OK 62961:OK 64618:OK 65446:OK 65860:FAIL 65529:OK 65694:FAIL 65562:FAIL 65536:FAIL 65531:OK 65533:OK 65534:OK 65535:FAIL
+max_row_length_with_null=65502 # table row length with nulls (without blobs)
+ ###We are trying (example with N=5):
+ ###create table crash_q (q0 char(5) )
+ ###insert into crash_q values ('aaaaa')
+ ### 65534:FAIL 13107:OK 39320:OK 52427:OK 58980:OK 62257:OK 63895:OK 64714:OK 65124:OK 65329:OK 65431:OK 65482:OK 65508:FAIL 65487:OK 65497:OK 65502:OK 65505:FAIL 65503:FAIL
+max_select_alias_name=+512 # select alias name length
+ ###We are trying (example with N=5):
+ ###select b as aaaaa from crash_me
+max_stack_expression=836 # stacked expressions
+ ###We are trying (example with N=5):
+ ###select 1+(1+(1+(1+(1+(1)))))
+ ### 1000:FAIL 200:OK 600:OK 800:OK 900:FAIL 820:OK 860:FAIL 828:OK 844:FAIL 831:OK 837:FAIL 832:OK 834:OK 835:OK 836:OK
+max_table_alias_name=+512 # table alias name length
+ ###We are trying (example with N=5):
+ ###select aaaaa.b from crash_me aaaaa
+max_table_name=64 # table name length
+ ###We are trying (example with N=5):
+ ###create table crash_qaaaaa (q integer)
+ ###insert into crash_qaaaaa values(1)
+ ###select * from crash_qaaaaa
+ ### 256:FAIL 51:OK 153:FAIL 72:FAIL 55:OK 63:FAIL 57:OK 60:FAIL 58:FAIL
+max_text_size=1048543 # max text or blob size
+ ###We are trying (example with N=5):
+ ###create table crash_q (q mediumtext)
+ ###insert into crash_q values ('aaaaa')
+ ###select * from crash_q
+ ### 524272:OK 786408:OK 917476:OK 983010:OK 1015777:OK 1032161:OK 1040353:OK 1044449:OK 1046497:OK 1047521:OK 1048033:OK 1048289:OK 1048417:OK 1048481:OK 1048513:OK 1048529:OK 1048537:OK 1048541:OK 1048543:OK 1048544:FAIL
+max_unique_index=32 # unique indexes
+ ###We are trying (example with N=5):
+ ###create table crash_q (q integer,q1 integer not null,unique (q1),q2 integer not null,unique (q2),q3 integer not null,uniq...(72)
+ ###insert into crash_q (q,q1,q2,q3,q4,q5) values (1,1,1,1,1,1)
+ ###select q from crash_q
+ ### 32:OK 48:FAIL 35:FAIL 33:FAIL
+max_varchar_size=1048543 # max varchar() size
+ ###We are trying (example with N=5):
+ ###create table crash_q (q varchar(5))
+ ###insert into crash_q values ('aaaaa')
+ ###select * from crash_q
+ ### 524287:OK 786431:OK 917503:OK 983039:OK 1015807:OK 1032191:OK 1040383:OK 1044479:OK 1046527:OK 1047551:OK 1048063:OK 1048319:OK 1048447:OK 1048511:OK 1048543:OK 1048559:FAIL 1048546:FAIL 1048544:FAIL
+minus=no # minus
+ ###< select * from crash_me minus select * from crash_me3
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me3' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+minus_incompat=no # minus (incompatible lists)
+ ###< select * from crash_me minus select * from crash_me2
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from crash_me2' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+minus_neg=yes # Calculate 1--1
+ ###
+ ###<select a--1 from crash_me
+ ###>2
+multi_drop=yes # many tables to drop table
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< create table crash_q2 (a int)
+ ###> OK
+ ###< drop table crash_q,crash_q2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+multi_null_in_unique=yes # null in unique index
+ ###< create table crash_q (q integer, x integer,unique (q))
+ ###> OK
+ ###< insert into crash_q(x) values(1)
+ ###> OK
+ ###< insert into crash_q(x) values(2)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+multi_strings=yes # Multiple line strings
+ ###
+ ###<select a from crash_me where b < 'a'
+ ###'b'
+ ###>1
+multi_table_delete=yes # DELETE FROM table1,table2...
+ ###< create table crash_q (a integer,b char(10))
+ ###> OK
+ ###< insert into crash_q values(1,'c')
+ ###> OK
+ ###< delete crash_q.* from crash_q,crash_me where crash_q.a=crash_me.a
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+multi_table_update=yes # Update with many tables
+ ###< create table crash_q (a integer,b char(10))
+ ###> OK
+ ###< insert into crash_q values(1,'c')
+ ###> OK
+ ###< update crash_q left join crash_me on crash_q.a=crash_me.a set crash_q.b=crash_me.b
+ ###> OK
+ ###
+ ###<select b from crash_q
+ ###>a
+ ###
+ ###< drop table crash_q
+ ###> OK
+natural_join=yes # natural join
+ ###< select * from crash_me natural join crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+natural_join_incompat=yes # natural join (incompatible lists)
+ ###< select c1 from crash_me natural join crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+natural_left_outer_join=yes # natural left outer join
+ ###< select c1 from crash_me natural left join crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+no_primary_key=yes # Tables without primary key
+ ###< create table crash_me (a integer not null,b char(10) not null)
+ ###> OK
+ ###< insert into crash_me (a,b) values (1,'a')
+ ###> OK
+not_id_between=no # NOT ID BETWEEN interprets as ID NOT BETWEEN
+ ###< create table crash_me_b (i int)
+ ###> OK
+ ###< insert into crash_me_b values(2)
+ ###> OK
+ ###< insert into crash_me_b values(5)
+ ###> OK
+ ###
+ ###<select i from crash_me_b where not i between 1 and 3
+ ###> didn't return any result:
+ ###
+ ###< drop table crash_me_b
+ ###> OK
+null_concat_expr=yes # Is concat('a',NULL) = NULL
+ ###
+ ###<select concat('a',NULL)
+ ###>
+null_in_index=yes # null in index
+ ###< create table crash_q (a char(10),index (a))
+ ###> OK
+ ###< insert into crash_q values (NULL)
+ ###> OK
+ ###
+ ###<select * from crash_q
+ ###>
+ ###
+ ###< drop table crash_q
+ ###> OK
+null_in_unique=yes # null in unique index
+ ###< create table crash_q (q integer,unique (q))
+ ###> OK
+ ###< insert into crash_q (q) values(NULL)
+ ###> OK
+ ###< insert into crash_q (q) values(NULL)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+null_num_expr=yes # Is 1+NULL = NULL
+ ###
+ ###<select 1+NULL
+ ###>
+nulls_in_unique=yes # null combination in unique index
+ ###< create table crash_q (q integer,q1 integer,unique (q,q1))
+ ###> OK
+ ###< insert into crash_q (q,q1) values(1,NULL)
+ ###> OK
+ ###< insert into crash_q (q,q1) values(1,NULL)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+odbc_left_outer_join=yes # left outer join odbc style
+ ###< select crash_me.a from { oj crash_me left outer join crash_me2 ON crash_me.a=crash_me2.a }
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+operating_system=Linux 2.4.21-199-smp4G i686 # crash-me tested on
+order_by=yes # Order by
+ ###< select a from crash_me order by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_by_alias=yes # Order by alias
+ ###< select a as ab from crash_me order by ab
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_by_function=yes # Order by function
+ ###< select a from crash_me order by a+1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_by_position=yes # Order by position
+ ###< select a from crash_me order by 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+order_on_unused=yes # Order by on unused column
+ ###< select b from crash_me order by a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+position_of_null=first # Where is null values in sorted recordset
+ ###< insert into crash_me_n (i) values(1)
+ ###> OK
+ ###< insert into crash_me_n values(2,2)
+ ###> OK
+ ###< insert into crash_me_n values(3,3)
+ ###> OK
+ ###< insert into crash_me_n values(4,4)
+ ###> OK
+ ###< insert into crash_me_n (i) values(5)
+ ###> OK
+ ###
+ ###< select r from crash_me_n order by r
+ ###>
+ ###>
+ ###> 2
+ ###> 3
+ ###> 4
+position_of_null_desc=last # Where is null values in sorted recordset (DESC)
+ ###< select r from crash_me_n order by r desc
+ ###> 4
+ ###> 3
+ ###> 2
+ ###>
+ ###>
+primary_key_in_create=yes # primary key in create table
+ ###< create table crash_q (q integer not null,primary key (q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+psm_functions=no # PSM functions (ANSI SQL)
+ ###< create table crash_q (a int)
+ ###> OK
+ ###< create function crash_func(in a1 int, in b1 int) returns int language sql deterministic contains sql begin return a1 * b1; end
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(in a1 int, in b1 int) returns int language sql deterministic c
+ ###< insert into crash_q values(crash_func(2,4))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(2,4))' at line 1
+ ###< select a,crash_func(a,2) from crash_q
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(a,2) from crash_q' at line 1
+ ###< drop function crash_func cascade
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'cascade' at line 1
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+psm_modules=no # PSM modules (ANSI SQL)
+ ###< create table crash_q (a int,b int)
+ ###> OK
+ ###< create module crash_m declare procedure crash_proc(in a1 int, in b1 int) language sql modifies sql data begin declare c1 int; set c1 = a1 + b1; insert into crash_q(a,b) values (a1,c1); end; declare procedure crash_proc2(INOUT a int, in b int) contains sql set a = b + 10; end module
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'module crash_m declare procedure crash_proc(in a1 int, in b1 in
+ ###< call crash_proc(1,10)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'call crash_proc(1,10)' at line 1
+ ###< drop module crash_m cascade
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'module crash_m cascade' at line 1
+ ###< drop table crash_q cascade
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+psm_procedures=no # PSM procedures (ANSI SQL)
+ ###< create table crash_q (a int,b int)
+ ###> OK
+ ###< create procedure crash_proc(in a1 int, in b1 int) language sql modifies sql data begin declare c1 int; set c1 = a1 + b1; insert into crash_q(a,b) values (a1,c1); end
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'procedure crash_proc(in a1 int, in b1 int) language sql modifie
+ ###< call crash_proc(1,10)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'call crash_proc(1,10)' at line 1
+ ###< drop procedure crash_proc
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'procedure crash_proc' at line 1
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+psm_trigger=no # Triggers (ANSI SQL)
+ ###< create table crash_q (a int ,b int)
+ ###> OK
+ ###< create trigger crash_trigger after insert on crash_q referencing new table as new_a when (localtime > time '18:00:00') begin atomic end
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger crash_trigger after insert on crash_q referencing new t
+ ###< insert into crash_q values(1,2)
+ ###> OK
+ ###< drop trigger crash_trigger
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'trigger crash_trigger' at line 1
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as some queries didnt return OK, result is NO
+query_size=1048574 # query size
+quote_ident_with_"=error # " as identifier quote (ANSI SQL)
+ ###
+ ###<select "A" from crash_me
+ ###>A
+ ###We expected '1' but got 'A'
+quote_ident_with_[=no # [] as identifier quote
+ ###
+ ###<select [A] from crash_me
+ ###> execute failed:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '[A] from crash_me' at line 1
+quote_ident_with_`=yes # ` as identifier quote
+ ###
+ ###<select `A` from crash_me
+ ###>1
+quote_ident_with_dbl_"=no # Double "" in identifiers as "
+ ###< create table crash_me1 ("abc""d" integer)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '"abc""d" integer)' at line 1
+ ###< drop table crash_me1
+ ###> execute error:Unknown table 'crash_me1'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+quote_with_"=yes # Allows ' and " as string markers
+ ###< select a from crash_me where b<"c"
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+recursive_subqueries=+64 # recursive subqueries
+ ###We are trying (example with N=5):
+ ###select a from crash_me where a in (select a from crash_me where a in (select a from crash_me where a in (select a from c...(82)
+remember_end_space=no # Remembers end space in char()
+ ###< create table crash_q (a char(10))
+ ###> OK
+ ###< insert into crash_q values('hello ')
+ ###> OK
+ ###
+ ###<select a from crash_q where a = 'hello '
+ ###>hello
+ ###We expected 'hello ' but got 'hello'
+ ###
+ ###< drop table crash_q
+ ###> OK
+remember_end_space_varchar=no # Remembers end space in varchar()
+ ###< create table crash_q (a varchar(10))
+ ###> OK
+ ###< insert into crash_q values('hello ')
+ ###> OK
+ ###
+ ###<select a from crash_q where a = 'hello '
+ ###>hello
+ ###We expected 'hello ' but got 'hello'
+ ###
+ ###< drop table crash_q
+ ###> OK
+rename_table=yes # rename table
+ ###< create table crash_q (a integer, b integer,c1 CHAR(10))
+ ###> OK
+ ###< rename table crash_q to crash_q1
+ ###> OK
+ ###< drop table crash_q1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+repeat_string_size=1048576 # return string size from function
+ ###We are trying (example with N=5):
+ ###select repeat('a',5)
+ ### 4000000:FAIL 800000:OK 2400000:FAIL 1120000:FAIL 864000:OK 992000:OK 1056000:FAIL 1004800:OK 1030400:OK 1043200:OK 1049600:FAIL 1044480:OK 1047040:OK 1048320:OK 1048960:FAIL 1048448:OK 1048704:FAIL 1048499:OK 1048601:FAIL 1048520:OK 1048560:OK 1048580:FAIL 1048564:OK 1048572:OK 1048576:OK 1048578:FAIL 1048577:FAIL
+reserved_word_ansi-92/99_absolute=no # Keyword ABSOLUTE
+ ###< create table crash_me10 (ABSOLUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_action=no # Keyword ACTION
+ ###< create table crash_me10 (ACTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_add=yes # Keyword ADD
+ ###< create table crash_me10 (ADD int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ADD int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_after=no # Keyword AFTER
+ ###< create table crash_me10 (AFTER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_alias=no # Keyword ALIAS
+ ###< create table crash_me10 (ALIAS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_all=yes # Keyword ALL
+ ###< create table crash_me10 (ALL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_allocate=no # Keyword ALLOCATE
+ ###< create table crash_me10 (ALLOCATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_alter=yes # Keyword ALTER
+ ###< create table crash_me10 (ALTER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALTER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_and=yes # Keyword AND
+ ###< create table crash_me10 (AND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_any=no # Keyword ANY
+ ###< create table crash_me10 (ANY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_are=no # Keyword ARE
+ ###< create table crash_me10 (ARE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_as=yes # Keyword AS
+ ###< create table crash_me10 (AS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_asc=yes # Keyword ASC
+ ###< create table crash_me10 (ASC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_assertion=no # Keyword ASSERTION
+ ###< create table crash_me10 (ASSERTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_at=no # Keyword AT
+ ###< create table crash_me10 (AT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_authorization=no # Keyword AUTHORIZATION
+ ###< create table crash_me10 (AUTHORIZATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_before=yes # Keyword BEFORE
+ ###< create table crash_me10 (BEFORE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BEFORE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_begin=no # Keyword BEGIN
+ ###< create table crash_me10 (BEGIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_bit=no # Keyword BIT
+ ###< create table crash_me10 (BIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_boolean=no # Keyword BOOLEAN
+ ###< create table crash_me10 (BOOLEAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_both=yes # Keyword BOTH
+ ###< create table crash_me10 (BOTH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BOTH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_breadth=no # Keyword BREADTH
+ ###< create table crash_me10 (BREADTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_by=yes # Keyword BY
+ ###< create table crash_me10 (BY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_call=no # Keyword CALL
+ ###< create table crash_me10 (CALL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_cascade=yes # Keyword CASCADE
+ ###< create table crash_me10 (CASCADE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASCADE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cascaded=no # Keyword CASCADED
+ ###< create table crash_me10 (CASCADED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_case=yes # Keyword CASE
+ ###< create table crash_me10 (CASE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cast=no # Keyword CAST
+ ###< create table crash_me10 (CAST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_catalog=no # Keyword CATALOG
+ ###< create table crash_me10 (CATALOG int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_char=yes # Keyword CHAR
+ ###< create table crash_me10 (CHAR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHAR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_character=yes # Keyword CHARACTER
+ ###< create table crash_me10 (CHARACTER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHARACTER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_check=yes # Keyword CHECK
+ ###< create table crash_me10 (CHECK int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_close=no # Keyword CLOSE
+ ###< create table crash_me10 (CLOSE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_collate=yes # Keyword COLLATE
+ ###< create table crash_me10 (COLLATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLLATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_collation=no # Keyword COLLATION
+ ###< create table crash_me10 (COLLATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_column=yes # Keyword COLUMN
+ ###< create table crash_me10 (COLUMN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_commit=no # Keyword COMMIT
+ ###< create table crash_me10 (COMMIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_completion=no # Keyword COMPLETION
+ ###< create table crash_me10 (COMPLETION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_connect=no # Keyword CONNECT
+ ###< create table crash_me10 (CONNECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_connection=no # Keyword CONNECTION
+ ###< create table crash_me10 (CONNECTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_constraint=yes # Keyword CONSTRAINT
+ ###< create table crash_me10 (CONSTRAINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_constraints=no # Keyword CONSTRAINTS
+ ###< create table crash_me10 (CONSTRAINTS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_continue=no # Keyword CONTINUE
+ ###< create table crash_me10 (CONTINUE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_corresponding=no # Keyword CORRESPONDING
+ ###< create table crash_me10 (CORRESPONDING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_create=yes # Keyword CREATE
+ ###< create table crash_me10 (CREATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_cross=yes # Keyword CROSS
+ ###< create table crash_me10 (CROSS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CROSS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current=no # Keyword CURRENT
+ ###< create table crash_me10 (CURRENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_current_date=yes # Keyword CURRENT_DATE
+ ###< create table crash_me10 (CURRENT_DATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current_time=yes # Keyword CURRENT_TIME
+ ###< create table crash_me10 (CURRENT_TIME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_TIME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current_timestamp=yes # Keyword CURRENT_TIMESTAMP
+ ###< create table crash_me10 (CURRENT_TIMESTAMP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_TIMESTAMP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_current_user=no # Keyword CURRENT_USER
+ ###< create table crash_me10 (CURRENT_USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_cursor=no # Keyword CURSOR
+ ###< create table crash_me10 (CURSOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_cycle=no # Keyword CYCLE
+ ###< create table crash_me10 (CYCLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_data=no # Keyword DATA
+ ###< create table crash_me10 (DATA int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_date=no # Keyword DATE
+ ###< create table crash_me10 (DATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_day=no # Keyword DAY
+ ###< create table crash_me10 (DAY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_deallocate=no # Keyword DEALLOCATE
+ ###< create table crash_me10 (DEALLOCATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_dec=yes # Keyword DEC
+ ###< create table crash_me10 (DEC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_decimal=yes # Keyword DECIMAL
+ ###< create table crash_me10 (DECIMAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECIMAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_declare=no # Keyword DECLARE
+ ###< create table crash_me10 (DECLARE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_default=yes # Keyword DEFAULT
+ ###< create table crash_me10 (DEFAULT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_deferrable=no # Keyword DEFERRABLE
+ ###< create table crash_me10 (DEFERRABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_deferred=no # Keyword DEFERRED
+ ###< create table crash_me10 (DEFERRED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_delete=yes # Keyword DELETE
+ ###< create table crash_me10 (DELETE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_depth=no # Keyword DEPTH
+ ###< create table crash_me10 (DEPTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_desc=yes # Keyword DESC
+ ###< create table crash_me10 (DESC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_describe=yes # Keyword DESCRIBE
+ ###< create table crash_me10 (DESCRIBE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DESCRIBE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_descriptor=no # Keyword DESCRIPTOR
+ ###< create table crash_me10 (DESCRIPTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_diagnostics=no # Keyword DIAGNOSTICS
+ ###< create table crash_me10 (DIAGNOSTICS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_dictionary=no # Keyword DICTIONARY
+ ###< create table crash_me10 (DICTIONARY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_disconnect=no # Keyword DISCONNECT
+ ###< create table crash_me10 (DISCONNECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_distinct=yes # Keyword DISTINCT
+ ###< create table crash_me10 (DISTINCT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_domain=no # Keyword DOMAIN
+ ###< create table crash_me10 (DOMAIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_double=yes # Keyword DOUBLE
+ ###< create table crash_me10 (DOUBLE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DOUBLE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_drop=yes # Keyword DROP
+ ###< create table crash_me10 (DROP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_each=no # Keyword EACH
+ ###< create table crash_me10 (EACH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_else=yes # Keyword ELSE
+ ###< create table crash_me10 (ELSE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ELSE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_elseif=no # Keyword ELSEIF
+ ###< create table crash_me10 (ELSEIF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_end=no # Keyword END
+ ###< create table crash_me10 (END int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_end-exec=yes # Keyword END-EXEC
+ ###< create table crash_me10 (END-EXEC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '-EXEC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_equals=no # Keyword EQUALS
+ ###< create table crash_me10 (EQUALS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_escape=no # Keyword ESCAPE
+ ###< create table crash_me10 (ESCAPE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_except=no # Keyword EXCEPT
+ ###< create table crash_me10 (EXCEPT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_exception=no # Keyword EXCEPTION
+ ###< create table crash_me10 (EXCEPTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_exec=no # Keyword EXEC
+ ###< create table crash_me10 (EXEC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_execute=no # Keyword EXECUTE
+ ###< create table crash_me10 (EXECUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_external=no # Keyword EXTERNAL
+ ###< create table crash_me10 (EXTERNAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_false=yes # Keyword FALSE
+ ###< create table crash_me10 (FALSE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FALSE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_fetch=no # Keyword FETCH
+ ###< create table crash_me10 (FETCH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_first=no # Keyword FIRST
+ ###< create table crash_me10 (FIRST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_float=yes # Keyword FLOAT
+ ###< create table crash_me10 (FLOAT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FLOAT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_for=yes # Keyword FOR
+ ###< create table crash_me10 (FOR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_foreign=yes # Keyword FOREIGN
+ ###< create table crash_me10 (FOREIGN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_found=no # Keyword FOUND
+ ###< create table crash_me10 (FOUND int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_from=yes # Keyword FROM
+ ###< create table crash_me10 (FROM int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_full=no # Keyword FULL
+ ###< create table crash_me10 (FULL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_general=no # Keyword GENERAL
+ ###< create table crash_me10 (GENERAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_get=no # Keyword GET
+ ###< create table crash_me10 (GET int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_global=no # Keyword GLOBAL
+ ###< create table crash_me10 (GLOBAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_go=no # Keyword GO
+ ###< create table crash_me10 (GO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_goto=no # Keyword GOTO
+ ###< create table crash_me10 (GOTO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_grant=yes # Keyword GRANT
+ ###< create table crash_me10 (GRANT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'GRANT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_group=yes # Keyword GROUP
+ ###< create table crash_me10 (GROUP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_having=yes # Keyword HAVING
+ ###< create table crash_me10 (HAVING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HAVING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_hour=no # Keyword HOUR
+ ###< create table crash_me10 (HOUR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_identity=no # Keyword IDENTITY
+ ###< create table crash_me10 (IDENTITY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_if=yes # Keyword IF
+ ###< create table crash_me10 (IF int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_ignore=yes # Keyword IGNORE
+ ###< create table crash_me10 (IGNORE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IGNORE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_immediate=no # Keyword IMMEDIATE
+ ###< create table crash_me10 (IMMEDIATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_in=yes # Keyword IN
+ ###< create table crash_me10 (IN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_indicator=no # Keyword INDICATOR
+ ###< create table crash_me10 (INDICATOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_initially=no # Keyword INITIALLY
+ ###< create table crash_me10 (INITIALLY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_inner=yes # Keyword INNER
+ ###< create table crash_me10 (INNER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_input=no # Keyword INPUT
+ ###< create table crash_me10 (INPUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_insert=yes # Keyword INSERT
+ ###< create table crash_me10 (INSERT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_int=yes # Keyword INT
+ ###< create table crash_me10 (INT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_integer=yes # Keyword INTEGER
+ ###< create table crash_me10 (INTEGER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTEGER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_intersect=no # Keyword INTERSECT
+ ###< create table crash_me10 (INTERSECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_interval=yes # Keyword INTERVAL
+ ###< create table crash_me10 (INTERVAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTERVAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_into=yes # Keyword INTO
+ ###< create table crash_me10 (INTO int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_is=yes # Keyword IS
+ ###< create table crash_me10 (IS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_isolation=no # Keyword ISOLATION
+ ###< create table crash_me10 (ISOLATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_join=yes # Keyword JOIN
+ ###< create table crash_me10 (JOIN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_key=yes # Keyword KEY
+ ###< create table crash_me10 (KEY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_language=no # Keyword LANGUAGE
+ ###< create table crash_me10 (LANGUAGE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_last=no # Keyword LAST
+ ###< create table crash_me10 (LAST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_leading=yes # Keyword LEADING
+ ###< create table crash_me10 (LEADING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEADING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_leave=no # Keyword LEAVE
+ ###< create table crash_me10 (LEAVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_left=yes # Keyword LEFT
+ ###< create table crash_me10 (LEFT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_less=no # Keyword LESS
+ ###< create table crash_me10 (LESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_level=no # Keyword LEVEL
+ ###< create table crash_me10 (LEVEL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_like=yes # Keyword LIKE
+ ###< create table crash_me10 (LIKE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_limit=yes # Keyword LIMIT
+ ###< create table crash_me10 (LIMIT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_local=no # Keyword LOCAL
+ ###< create table crash_me10 (LOCAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_loop=no # Keyword LOOP
+ ###< create table crash_me10 (LOOP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_match=yes # Keyword MATCH
+ ###< create table crash_me10 (MATCH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_minute=no # Keyword MINUTE
+ ###< create table crash_me10 (MINUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_modify=no # Keyword MODIFY
+ ###< create table crash_me10 (MODIFY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_module=no # Keyword MODULE
+ ###< create table crash_me10 (MODULE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_month=no # Keyword MONTH
+ ###< create table crash_me10 (MONTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_names=no # Keyword NAMES
+ ###< create table crash_me10 (NAMES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_national=no # Keyword NATIONAL
+ ###< create table crash_me10 (NATIONAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_natural=yes # Keyword NATURAL
+ ###< create table crash_me10 (NATURAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NATURAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_nchar=no # Keyword NCHAR
+ ###< create table crash_me10 (NCHAR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_new=no # Keyword NEW
+ ###< create table crash_me10 (NEW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_next=no # Keyword NEXT
+ ###< create table crash_me10 (NEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_no=no # Keyword NO
+ ###< create table crash_me10 (NO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_none=no # Keyword NONE
+ ###< create table crash_me10 (NONE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_not=yes # Keyword NOT
+ ###< create table crash_me10 (NOT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_null=yes # Keyword NULL
+ ###< create table crash_me10 (NULL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_numeric=yes # Keyword NUMERIC
+ ###< create table crash_me10 (NUMERIC int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'NUMERIC int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_object=no # Keyword OBJECT
+ ###< create table crash_me10 (OBJECT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_of=no # Keyword OF
+ ###< create table crash_me10 (OF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_off=no # Keyword OFF
+ ###< create table crash_me10 (OFF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_old=no # Keyword OLD
+ ###< create table crash_me10 (OLD int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_on=yes # Keyword ON
+ ###< create table crash_me10 (ON int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_only=no # Keyword ONLY
+ ###< create table crash_me10 (ONLY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_open=no # Keyword OPEN
+ ###< create table crash_me10 (OPEN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_operation=no # Keyword OPERATION
+ ###< create table crash_me10 (OPERATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_option=yes # Keyword OPTION
+ ###< create table crash_me10 (OPTION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_or=yes # Keyword OR
+ ###< create table crash_me10 (OR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_order=yes # Keyword ORDER
+ ###< create table crash_me10 (ORDER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_outer=yes # Keyword OUTER
+ ###< create table crash_me10 (OUTER int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_output=no # Keyword OUTPUT
+ ###< create table crash_me10 (OUTPUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_pad=no # Keyword PAD
+ ###< create table crash_me10 (PAD int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_parameters=no # Keyword PARAMETERS
+ ###< create table crash_me10 (PARAMETERS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_partial=no # Keyword PARTIAL
+ ###< create table crash_me10 (PARTIAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_precision=yes # Keyword PRECISION
+ ###< create table crash_me10 (PRECISION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PRECISION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_preorder=no # Keyword PREORDER
+ ###< create table crash_me10 (PREORDER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_prepare=no # Keyword PREPARE
+ ###< create table crash_me10 (PREPARE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_preserve=no # Keyword PRESERVE
+ ###< create table crash_me10 (PRESERVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_primary=yes # Keyword PRIMARY
+ ###< create table crash_me10 (PRIMARY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_prior=no # Keyword PRIOR
+ ###< create table crash_me10 (PRIOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_privileges=yes # Keyword PRIVILEGES
+ ###< create table crash_me10 (PRIVILEGES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PRIVILEGES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_procedure=yes # Keyword PROCEDURE
+ ###< create table crash_me10 (PROCEDURE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PROCEDURE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_public=no # Keyword PUBLIC
+ ###< create table crash_me10 (PUBLIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_read=yes # Keyword READ
+ ###< create table crash_me10 (READ int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'READ int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_real=yes # Keyword REAL
+ ###< create table crash_me10 (REAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REAL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_recursive=no # Keyword RECURSIVE
+ ###< create table crash_me10 (RECURSIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_ref=no # Keyword REF
+ ###< create table crash_me10 (REF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_references=yes # Keyword REFERENCES
+ ###< create table crash_me10 (REFERENCES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_referencing=no # Keyword REFERENCING
+ ###< create table crash_me10 (REFERENCING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_relative=no # Keyword RELATIVE
+ ###< create table crash_me10 (RELATIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_resignal=no # Keyword RESIGNAL
+ ###< create table crash_me10 (RESIGNAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_restrict=yes # Keyword RESTRICT
+ ###< create table crash_me10 (RESTRICT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RESTRICT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_return=no # Keyword RETURN
+ ###< create table crash_me10 (RETURN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_returns=yes # Keyword RETURNS
+ ###< create table crash_me10 (RETURNS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_revoke=yes # Keyword REVOKE
+ ###< create table crash_me10 (REVOKE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REVOKE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_right=yes # Keyword RIGHT
+ ###< create table crash_me10 (RIGHT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RIGHT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_role=no # Keyword ROLE
+ ###< create table crash_me10 (ROLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_rollback=no # Keyword ROLLBACK
+ ###< create table crash_me10 (ROLLBACK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_routine=no # Keyword ROUTINE
+ ###< create table crash_me10 (ROUTINE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_row=no # Keyword ROW
+ ###< create table crash_me10 (ROW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_rows=no # Keyword ROWS
+ ###< create table crash_me10 (ROWS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_savepoint=no # Keyword SAVEPOINT
+ ###< create table crash_me10 (SAVEPOINT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_schema=no # Keyword SCHEMA
+ ###< create table crash_me10 (SCHEMA int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_scroll=no # Keyword SCROLL
+ ###< create table crash_me10 (SCROLL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_search=no # Keyword SEARCH
+ ###< create table crash_me10 (SEARCH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_second=no # Keyword SECOND
+ ###< create table crash_me10 (SECOND int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_section=no # Keyword SECTION
+ ###< create table crash_me10 (SECTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_select=yes # Keyword SELECT
+ ###< create table crash_me10 (SELECT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_sequence=no # Keyword SEQUENCE
+ ###< create table crash_me10 (SEQUENCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_session=no # Keyword SESSION
+ ###< create table crash_me10 (SESSION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_session_user=no # Keyword SESSION_USER
+ ###< create table crash_me10 (SESSION_USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_set=yes # Keyword SET
+ ###< create table crash_me10 (SET int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_signal=no # Keyword SIGNAL
+ ###< create table crash_me10 (SIGNAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_size=no # Keyword SIZE
+ ###< create table crash_me10 (SIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_smallint=yes # Keyword SMALLINT
+ ###< create table crash_me10 (SMALLINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SMALLINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_some=no # Keyword SOME
+ ###< create table crash_me10 (SOME int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_space=no # Keyword SPACE
+ ###< create table crash_me10 (SPACE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_sql=no # Keyword SQL
+ ###< create table crash_me10 (SQL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_sqlexception=no # Keyword SQLEXCEPTION
+ ###< create table crash_me10 (SQLEXCEPTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_sqlstate=no # Keyword SQLSTATE
+ ###< create table crash_me10 (SQLSTATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_sqlwarning=no # Keyword SQLWARNING
+ ###< create table crash_me10 (SQLWARNING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_structure=no # Keyword STRUCTURE
+ ###< create table crash_me10 (STRUCTURE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_system_user=no # Keyword SYSTEM_USER
+ ###< create table crash_me10 (SYSTEM_USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_table=yes # Keyword TABLE
+ ###< create table crash_me10 (TABLE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_temporary=no # Keyword TEMPORARY
+ ###< create table crash_me10 (TEMPORARY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_then=yes # Keyword THEN
+ ###< create table crash_me10 (THEN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'THEN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_time=no # Keyword TIME
+ ###< create table crash_me10 (TIME int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_timestamp=no # Keyword TIMESTAMP
+ ###< create table crash_me10 (TIMESTAMP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_timezone_hour=no # Keyword TIMEZONE_HOUR
+ ###< create table crash_me10 (TIMEZONE_HOUR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_timezone_minute=no # Keyword TIMEZONE_MINUTE
+ ###< create table crash_me10 (TIMEZONE_MINUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_to=yes # Keyword TO
+ ###< create table crash_me10 (TO int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TO int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_trailing=yes # Keyword TRAILING
+ ###< create table crash_me10 (TRAILING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRAILING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_transaction=no # Keyword TRANSACTION
+ ###< create table crash_me10 (TRANSACTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_translation=no # Keyword TRANSLATION
+ ###< create table crash_me10 (TRANSLATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_trigger=no # Keyword TRIGGER
+ ###< create table crash_me10 (TRIGGER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_true=yes # Keyword TRUE
+ ###< create table crash_me10 (TRUE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRUE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_under=no # Keyword UNDER
+ ###< create table crash_me10 (UNDER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_union=yes # Keyword UNION
+ ###< create table crash_me10 (UNION int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_unique=yes # Keyword UNIQUE
+ ###< create table crash_me10 (UNIQUE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_unknown=no # Keyword UNKNOWN
+ ###< create table crash_me10 (UNKNOWN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_update=yes # Keyword UPDATE
+ ###< create table crash_me10 (UPDATE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_usage=yes # Keyword USAGE
+ ###< create table crash_me10 (USAGE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'USAGE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_user=no # Keyword USER
+ ###< create table crash_me10 (USER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_using=yes # Keyword USING
+ ###< create table crash_me10 (USING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_value=no # Keyword VALUE
+ ###< create table crash_me10 (VALUE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_values=yes # Keyword VALUES
+ ###< create table crash_me10 (VALUES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_varchar=yes # Keyword VARCHAR
+ ###< create table crash_me10 (VARCHAR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_variable=no # Keyword VARIABLE
+ ###< create table crash_me10 (VARIABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_varying=yes # Keyword VARYING
+ ###< create table crash_me10 (VARYING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARYING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_view=no # Keyword VIEW
+ ###< create table crash_me10 (VIEW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_when=yes # Keyword WHEN
+ ###< create table crash_me10 (WHEN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHEN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_whenever=no # Keyword WHENEVER
+ ###< create table crash_me10 (WHENEVER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_where=yes # Keyword WHERE
+ ###< create table crash_me10 (WHERE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_while=no # Keyword WHILE
+ ###< create table crash_me10 (WHILE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_with=yes # Keyword WITH
+ ###< create table crash_me10 (WITH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WITH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_without=no # Keyword WITHOUT
+ ###< create table crash_me10 (WITHOUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_work=no # Keyword WORK
+ ###< create table crash_me10 (WORK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_write=yes # Keyword WRITE
+ ###< create table crash_me10 (WRITE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WRITE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi-92/99_year=no # Keyword YEAR
+ ###< create table crash_me10 (YEAR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi-92/99_zone=no # Keyword ZONE
+ ###< create table crash_me10 (ZONE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_async=no # Keyword ASYNC
+ ###< create table crash_me10 (ASYNC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_avg=no # Keyword AVG
+ ###< create table crash_me10 (AVG int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_between=yes # Keyword BETWEEN
+ ###< create table crash_me10 (BETWEEN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BETWEEN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_bit_length=no # Keyword BIT_LENGTH
+ ###< create table crash_me10 (BIT_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_char_length=no # Keyword CHAR_LENGTH
+ ###< create table crash_me10 (CHAR_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_character_length=no # Keyword CHARACTER_LENGTH
+ ###< create table crash_me10 (CHARACTER_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_coalesce=no # Keyword COALESCE
+ ###< create table crash_me10 (COALESCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_convert=yes # Keyword CONVERT
+ ###< create table crash_me10 (CONVERT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONVERT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_count=no # Keyword COUNT
+ ###< create table crash_me10 (COUNT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_exists=yes # Keyword EXISTS
+ ###< create table crash_me10 (EXISTS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_extract=no # Keyword EXTRACT
+ ###< create table crash_me10 (EXTRACT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_insensitive=no # Keyword INSENSITIVE
+ ###< create table crash_me10 (INSENSITIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_lower=no # Keyword LOWER
+ ###< create table crash_me10 (LOWER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_max=no # Keyword MAX
+ ###< create table crash_me10 (MAX int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_min=no # Keyword MIN
+ ###< create table crash_me10 (MIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_nullif=no # Keyword NULLIF
+ ###< create table crash_me10 (NULLIF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_octet_length=no # Keyword OCTET_LENGTH
+ ###< create table crash_me10 (OCTET_LENGTH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_oid=no # Keyword OID
+ ###< create table crash_me10 (OID int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_operators=no # Keyword OPERATORS
+ ###< create table crash_me10 (OPERATORS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_others=no # Keyword OTHERS
+ ###< create table crash_me10 (OTHERS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_overlaps=no # Keyword OVERLAPS
+ ###< create table crash_me10 (OVERLAPS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_pendant=no # Keyword PENDANT
+ ###< create table crash_me10 (PENDANT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_position=no # Keyword POSITION
+ ###< create table crash_me10 (POSITION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_private=no # Keyword PRIVATE
+ ###< create table crash_me10 (PRIVATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_protected=no # Keyword PROTECTED
+ ###< create table crash_me10 (PROTECTED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_replace=yes # Keyword REPLACE
+ ###< create table crash_me10 (REPLACE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REPLACE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi92_sensitive=no # Keyword SENSITIVE
+ ###< create table crash_me10 (SENSITIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_similar=no # Keyword SIMILAR
+ ###< create table crash_me10 (SIMILAR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_sqlcode=no # Keyword SQLCODE
+ ###< create table crash_me10 (SQLCODE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_sqlerror=no # Keyword SQLERROR
+ ###< create table crash_me10 (SQLERROR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_substring=no # Keyword SUBSTRING
+ ###< create table crash_me10 (SUBSTRING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_sum=no # Keyword SUM
+ ###< create table crash_me10 (SUM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_test=no # Keyword TEST
+ ###< create table crash_me10 (TEST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_there=no # Keyword THERE
+ ###< create table crash_me10 (THERE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_translate=no # Keyword TRANSLATE
+ ###< create table crash_me10 (TRANSLATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_trim=no # Keyword TRIM
+ ###< create table crash_me10 (TRIM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_type=no # Keyword TYPE
+ ###< create table crash_me10 (TYPE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_upper=no # Keyword UPPER
+ ###< create table crash_me10 (UPPER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_virtual=no # Keyword VIRTUAL
+ ###< create table crash_me10 (VIRTUAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_visible=no # Keyword VISIBLE
+ ###< create table crash_me10 (VISIBLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi92_wait=no # Keyword WAIT
+ ###< create table crash_me10 (WAIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_admin=no # Keyword ADMIN
+ ###< create table crash_me10 (ADMIN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_aggregate=no # Keyword AGGREGATE
+ ###< create table crash_me10 (AGGREGATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_array=no # Keyword ARRAY
+ ###< create table crash_me10 (ARRAY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_binary=yes # Keyword BINARY
+ ###< create table crash_me10 (BINARY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BINARY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_blob=yes # Keyword BLOB
+ ###< create table crash_me10 (BLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_class=no # Keyword CLASS
+ ###< create table crash_me10 (CLASS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_clob=no # Keyword CLOB
+ ###< create table crash_me10 (CLOB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_condition=no # Keyword CONDITION
+ ###< create table crash_me10 (CONDITION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_constructor=no # Keyword CONSTRUCTOR
+ ###< create table crash_me10 (CONSTRUCTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_contains=no # Keyword CONTAINS
+ ###< create table crash_me10 (CONTAINS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_cube=no # Keyword CUBE
+ ###< create table crash_me10 (CUBE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_current_path=no # Keyword CURRENT_PATH
+ ###< create table crash_me10 (CURRENT_PATH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_current_role=no # Keyword CURRENT_ROLE
+ ###< create table crash_me10 (CURRENT_ROLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_datalink=no # Keyword DATALINK
+ ###< create table crash_me10 (DATALINK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_deref=no # Keyword DEREF
+ ###< create table crash_me10 (DEREF int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_destroy=no # Keyword DESTROY
+ ###< create table crash_me10 (DESTROY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_destructor=no # Keyword DESTRUCTOR
+ ###< create table crash_me10 (DESTRUCTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_deterministic=no # Keyword DETERMINISTIC
+ ###< create table crash_me10 (DETERMINISTIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_do=no # Keyword DO
+ ###< create table crash_me10 (DO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_dynamic=no # Keyword DYNAMIC
+ ###< create table crash_me10 (DYNAMIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_every=no # Keyword EVERY
+ ###< create table crash_me10 (EVERY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_exit=no # Keyword EXIT
+ ###< create table crash_me10 (EXIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_expand=no # Keyword EXPAND
+ ###< create table crash_me10 (EXPAND int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_expanding=no # Keyword EXPANDING
+ ###< create table crash_me10 (EXPANDING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_free=no # Keyword FREE
+ ###< create table crash_me10 (FREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_function=no # Keyword FUNCTION
+ ###< create table crash_me10 (FUNCTION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_grouping=no # Keyword GROUPING
+ ###< create table crash_me10 (GROUPING int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_handler=no # Keyword HANDLER
+ ###< create table crash_me10 (HANDLER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_hast=no # Keyword HAST
+ ###< create table crash_me10 (HAST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_host=no # Keyword HOST
+ ###< create table crash_me10 (HOST int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_initialize=no # Keyword INITIALIZE
+ ###< create table crash_me10 (INITIALIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_inout=no # Keyword INOUT
+ ###< create table crash_me10 (INOUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_iterate=no # Keyword ITERATE
+ ###< create table crash_me10 (ITERATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_large=no # Keyword LARGE
+ ###< create table crash_me10 (LARGE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_lateral=no # Keyword LATERAL
+ ###< create table crash_me10 (LATERAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_localtime=yes # Keyword LOCALTIME
+ ###< create table crash_me10 (LOCALTIME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOCALTIME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_localtimestamp=yes # Keyword LOCALTIMESTAMP
+ ###< create table crash_me10 (LOCALTIMESTAMP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOCALTIMESTAMP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_ansi99_locator=no # Keyword LOCATOR
+ ###< create table crash_me10 (LOCATOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_meets=no # Keyword MEETS
+ ###< create table crash_me10 (MEETS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_modifies=no # Keyword MODIFIES
+ ###< create table crash_me10 (MODIFIES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_nclob=no # Keyword NCLOB
+ ###< create table crash_me10 (NCLOB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_normalize=no # Keyword NORMALIZE
+ ###< create table crash_me10 (NORMALIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_ordinality=no # Keyword ORDINALITY
+ ###< create table crash_me10 (ORDINALITY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_out=no # Keyword OUT
+ ###< create table crash_me10 (OUT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_parameter=no # Keyword PARAMETER
+ ###< create table crash_me10 (PARAMETER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_path=no # Keyword PATH
+ ###< create table crash_me10 (PATH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_period=no # Keyword PERIOD
+ ###< create table crash_me10 (PERIOD int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_postfix=no # Keyword POSTFIX
+ ###< create table crash_me10 (POSTFIX int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_precedes=no # Keyword PRECEDES
+ ###< create table crash_me10 (PRECEDES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_prefix=no # Keyword PREFIX
+ ###< create table crash_me10 (PREFIX int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_reads=no # Keyword READS
+ ###< create table crash_me10 (READS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_redo=no # Keyword REDO
+ ###< create table crash_me10 (REDO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_repeat=no # Keyword REPEAT
+ ###< create table crash_me10 (REPEAT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_result=no # Keyword RESULT
+ ###< create table crash_me10 (RESULT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_rollup=no # Keyword ROLLUP
+ ###< create table crash_me10 (ROLLUP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_sets=no # Keyword SETS
+ ###< create table crash_me10 (SETS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_specific=no # Keyword SPECIFIC
+ ###< create table crash_me10 (SPECIFIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_specifictype=no # Keyword SPECIFICTYPE
+ ###< create table crash_me10 (SPECIFICTYPE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_start=no # Keyword START
+ ###< create table crash_me10 (START int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_state=no # Keyword STATE
+ ###< create table crash_me10 (STATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_static=no # Keyword STATIC
+ ###< create table crash_me10 (STATIC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_succeeds=no # Keyword SUCCEEDS
+ ###< create table crash_me10 (SUCCEEDS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_terminate=no # Keyword TERMINATE
+ ###< create table crash_me10 (TERMINATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_than=no # Keyword THAN
+ ###< create table crash_me10 (THAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_treat=no # Keyword TREAT
+ ###< create table crash_me10 (TREAT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_undo=no # Keyword UNDO
+ ###< create table crash_me10 (UNDO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_ansi99_until=no # Keyword UNTIL
+ ###< create table crash_me10 (UNTIL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_access=no # Keyword ACCESS
+ ###< create table crash_me10 (ACCESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_analyze=yes # Keyword ANALYZE
+ ###< create table crash_me10 (ANALYZE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ANALYZE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_audit=no # Keyword AUDIT
+ ###< create table crash_me10 (AUDIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_auto_increment=no # Keyword AUTO_INCREMENT
+ ###< create table crash_me10 (AUTO_INCREMENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_backup=no # Keyword BACKUP
+ ###< create table crash_me10 (BACKUP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_bdb=no # Keyword BDB
+ ###< create table crash_me10 (BDB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_berkeleydb=no # Keyword BERKELEYDB
+ ###< create table crash_me10 (BERKELEYDB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_bigint=yes # Keyword BIGINT
+ ###< create table crash_me10 (BIGINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'BIGINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_break=no # Keyword BREAK
+ ###< create table crash_me10 (BREAK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_browse=no # Keyword BROWSE
+ ###< create table crash_me10 (BROWSE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_btree=no # Keyword BTREE
+ ###< create table crash_me10 (BTREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_bulk=no # Keyword BULK
+ ###< create table crash_me10 (BULK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_change=yes # Keyword CHANGE
+ ###< create table crash_me10 (CHANGE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHANGE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_checkpoint=no # Keyword CHECKPOINT
+ ###< create table crash_me10 (CHECKPOINT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_cluster=no # Keyword CLUSTER
+ ###< create table crash_me10 (CLUSTER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_clustered=no # Keyword CLUSTERED
+ ###< create table crash_me10 (CLUSTERED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_columns=yes # Keyword COLUMNS
+ ###< create table crash_me10 (COLUMNS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLUMNS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_comment=no # Keyword COMMENT
+ ###< create table crash_me10 (COMMENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_compress=no # Keyword COMPRESS
+ ###< create table crash_me10 (COMPRESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_compute=no # Keyword COMPUTE
+ ###< create table crash_me10 (COMPUTE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_containstable=no # Keyword CONTAINSTABLE
+ ###< create table crash_me10 (CONTAINSTABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_database=yes # Keyword DATABASE
+ ###< create table crash_me10 (DATABASE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATABASE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_databases=yes # Keyword DATABASES
+ ###< create table crash_me10 (DATABASES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATABASES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_day_hour=yes # Keyword DAY_HOUR
+ ###< create table crash_me10 (DAY_HOUR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAY_HOUR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_day_minute=yes # Keyword DAY_MINUTE
+ ###< create table crash_me10 (DAY_MINUTE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAY_MINUTE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_day_second=yes # Keyword DAY_SECOND
+ ###< create table crash_me10 (DAY_SECOND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DAY_SECOND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_dbcc=no # Keyword DBCC
+ ###< create table crash_me10 (DBCC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_delayed=yes # Keyword DELAYED
+ ###< create table crash_me10 (DELAYED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELAYED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_deny=no # Keyword DENY
+ ###< create table crash_me10 (DENY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_disk=no # Keyword DISK
+ ###< create table crash_me10 (DISK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_distinctrow=yes # Keyword DISTINCTROW
+ ###< create table crash_me10 (DISTINCTROW int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCTROW int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_distributed=no # Keyword DISTRIBUTED
+ ###< create table crash_me10 (DISTRIBUTED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_dummy=no # Keyword DUMMY
+ ###< create table crash_me10 (DUMMY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_dump=no # Keyword DUMP
+ ###< create table crash_me10 (DUMP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_enclosed=yes # Keyword ENCLOSED
+ ###< create table crash_me10 (ENCLOSED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ENCLOSED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_errlvl=no # Keyword ERRLVL
+ ###< create table crash_me10 (ERRLVL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_errors=no # Keyword ERRORS
+ ###< create table crash_me10 (ERRORS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_escaped=yes # Keyword ESCAPED
+ ###< create table crash_me10 (ESCAPED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ESCAPED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_exclusive=no # Keyword EXCLUSIVE
+ ###< create table crash_me10 (EXCLUSIVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_explain=yes # Keyword EXPLAIN
+ ###< create table crash_me10 (EXPLAIN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXPLAIN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_fields=yes # Keyword FIELDS
+ ###< create table crash_me10 (FIELDS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIELDS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_file=no # Keyword FILE
+ ###< create table crash_me10 (FILE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_fillfactor=no # Keyword FILLFACTOR
+ ###< create table crash_me10 (FILLFACTOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_freetext=no # Keyword FREETEXT
+ ###< create table crash_me10 (FREETEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_freetexttable=no # Keyword FREETEXTTABLE
+ ###< create table crash_me10 (FREETEXTTABLE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_fulltext=yes # Keyword FULLTEXT
+ ###< create table crash_me10 (FULLTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_geometry=no # Keyword GEOMETRY
+ ###< create table crash_me10 (GEOMETRY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_hash=no # Keyword HASH
+ ###< create table crash_me10 (HASH int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_high_priority=yes # Keyword HIGH_PRIORITY
+ ###< create table crash_me10 (HIGH_PRIORITY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HIGH_PRIORITY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_holdlock=no # Keyword HOLDLOCK
+ ###< create table crash_me10 (HOLDLOCK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_hour_minute=yes # Keyword HOUR_MINUTE
+ ###< create table crash_me10 (HOUR_MINUTE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HOUR_MINUTE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_hour_second=yes # Keyword HOUR_SECOND
+ ###< create table crash_me10 (HOUR_SECOND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'HOUR_SECOND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_identified=no # Keyword IDENTIFIED
+ ###< create table crash_me10 (IDENTIFIED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_identity_insert=no # Keyword IDENTITY_INSERT
+ ###< create table crash_me10 (IDENTITY_INSERT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_identitycol=no # Keyword IDENTITYCOL
+ ###< create table crash_me10 (IDENTITYCOL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_increment=no # Keyword INCREMENT
+ ###< create table crash_me10 (INCREMENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_index=yes # Keyword INDEX
+ ###< create table crash_me10 (INDEX int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_infile=yes # Keyword INFILE
+ ###< create table crash_me10 (INFILE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INFILE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_initial=no # Keyword INITIAL
+ ###< create table crash_me10 (INITIAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_innodb=no # Keyword INNODB
+ ###< create table crash_me10 (INNODB int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_keys=yes # Keyword KEYS
+ ###< create table crash_me10 (KEYS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'KEYS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_kill=yes # Keyword KILL
+ ###< create table crash_me10 (KILL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'KILL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_lineno=no # Keyword LINENO
+ ###< create table crash_me10 (LINENO int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_lines=yes # Keyword LINES
+ ###< create table crash_me10 (LINES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LINES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_load=yes # Keyword LOAD
+ ###< create table crash_me10 (LOAD int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOAD int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_lock=yes # Keyword LOCK
+ ###< create table crash_me10 (LOCK int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOCK int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_long=yes # Keyword LONG
+ ###< create table crash_me10 (LONG int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LONG int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_longblob=yes # Keyword LONGBLOB
+ ###< create table crash_me10 (LONGBLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LONGBLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_longtext=yes # Keyword LONGTEXT
+ ###< create table crash_me10 (LONGTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LONGTEXT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_low_priority=yes # Keyword LOW_PRIORITY
+ ###< create table crash_me10 (LOW_PRIORITY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LOW_PRIORITY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_master_server_id=no # Keyword MASTER_SERVER_ID
+ ###< create table crash_me10 (MASTER_SERVER_ID int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_maxextents=no # Keyword MAXEXTENTS
+ ###< create table crash_me10 (MAXEXTENTS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_mediumblob=yes # Keyword MEDIUMBLOB
+ ###< create table crash_me10 (MEDIUMBLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MEDIUMBLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_mediumint=yes # Keyword MEDIUMINT
+ ###< create table crash_me10 (MEDIUMINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MEDIUMINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_mediumtext=yes # Keyword MEDIUMTEXT
+ ###< create table crash_me10 (MEDIUMTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MEDIUMTEXT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_middleint=yes # Keyword MIDDLEINT
+ ###< create table crash_me10 (MIDDLEINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MIDDLEINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_minus=no # Keyword MINUS
+ ###< create table crash_me10 (MINUS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_minute_second=yes # Keyword MINUTE_SECOND
+ ###< create table crash_me10 (MINUTE_SECOND int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MINUTE_SECOND int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_mlslabel=no # Keyword MLSLABEL
+ ###< create table crash_me10 (MLSLABEL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_mode=no # Keyword MODE
+ ###< create table crash_me10 (MODE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_mrg_myisam=no # Keyword MRG_MYISAM
+ ###< create table crash_me10 (MRG_MYISAM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_noaudit=no # Keyword NOAUDIT
+ ###< create table crash_me10 (NOAUDIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nocheck=no # Keyword NOCHECK
+ ###< create table crash_me10 (NOCHECK int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nocompress=no # Keyword NOCOMPRESS
+ ###< create table crash_me10 (NOCOMPRESS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nonclustered=no # Keyword NONCLUSTERED
+ ###< create table crash_me10 (NONCLUSTERED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_nowait=no # Keyword NOWAIT
+ ###< create table crash_me10 (NOWAIT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_number=no # Keyword NUMBER
+ ###< create table crash_me10 (NUMBER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_offline=no # Keyword OFFLINE
+ ###< create table crash_me10 (OFFLINE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_offsets=no # Keyword OFFSETS
+ ###< create table crash_me10 (OFFSETS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_online=no # Keyword ONLINE
+ ###< create table crash_me10 (ONLINE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_opendatasource=no # Keyword OPENDATASOURCE
+ ###< create table crash_me10 (OPENDATASOURCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_openquery=no # Keyword OPENQUERY
+ ###< create table crash_me10 (OPENQUERY int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_openrowset=no # Keyword OPENROWSET
+ ###< create table crash_me10 (OPENROWSET int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_openxml=no # Keyword OPENXML
+ ###< create table crash_me10 (OPENXML int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_optimize=yes # Keyword OPTIMIZE
+ ###< create table crash_me10 (OPTIMIZE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTIMIZE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_optionally=yes # Keyword OPTIONALLY
+ ###< create table crash_me10 (OPTIONALLY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTIONALLY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_outfile=yes # Keyword OUTFILE
+ ###< create table crash_me10 (OUTFILE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTFILE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_over=no # Keyword OVER
+ ###< create table crash_me10 (OVER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_pctfree=no # Keyword PCTFREE
+ ###< create table crash_me10 (PCTFREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_percent=no # Keyword PERCENT
+ ###< create table crash_me10 (PERCENT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_plan=no # Keyword PLAN
+ ###< create table crash_me10 (PLAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_print=no # Keyword PRINT
+ ###< create table crash_me10 (PRINT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_proc=no # Keyword PROC
+ ###< create table crash_me10 (PROC int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_purge=yes # Keyword PURGE
+ ###< create table crash_me10 (PURGE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'PURGE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_raiserror=no # Keyword RAISERROR
+ ###< create table crash_me10 (RAISERROR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_raw=no # Keyword RAW
+ ###< create table crash_me10 (RAW int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_readtext=no # Keyword READTEXT
+ ###< create table crash_me10 (READTEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_reconfigure=no # Keyword RECONFIGURE
+ ###< create table crash_me10 (RECONFIGURE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_regexp=yes # Keyword REGEXP
+ ###< create table crash_me10 (REGEXP int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REGEXP int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_rename=yes # Keyword RENAME
+ ###< create table crash_me10 (RENAME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RENAME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_replication=no # Keyword REPLICATION
+ ###< create table crash_me10 (REPLICATION int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_require=yes # Keyword REQUIRE
+ ###< create table crash_me10 (REQUIRE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'REQUIRE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_resource=no # Keyword RESOURCE
+ ###< create table crash_me10 (RESOURCE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_restore=no # Keyword RESTORE
+ ###< create table crash_me10 (RESTORE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rlike=yes # Keyword RLIKE
+ ###< create table crash_me10 (RLIKE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RLIKE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_rowcount=no # Keyword ROWCOUNT
+ ###< create table crash_me10 (ROWCOUNT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rowguidcol=no # Keyword ROWGUIDCOL
+ ###< create table crash_me10 (ROWGUIDCOL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rowid=no # Keyword ROWID
+ ###< create table crash_me10 (ROWID int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rownum=no # Keyword ROWNUM
+ ###< create table crash_me10 (ROWNUM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rtree=no # Keyword RTREE
+ ###< create table crash_me10 (RTREE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_rule=no # Keyword RULE
+ ###< create table crash_me10 (RULE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_save=no # Keyword SAVE
+ ###< create table crash_me10 (SAVE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_setuser=no # Keyword SETUSER
+ ###< create table crash_me10 (SETUSER int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_share=no # Keyword SHARE
+ ###< create table crash_me10 (SHARE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_show=yes # Keyword SHOW
+ ###< create table crash_me10 (SHOW int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SHOW int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_shutdown=no # Keyword SHUTDOWN
+ ###< create table crash_me10 (SHUTDOWN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_soname=yes # Keyword SONAME
+ ###< create table crash_me10 (SONAME int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SONAME int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_spatial=yes # Keyword SPATIAL
+ ###< create table crash_me10 (SPATIAL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_sql_big_result=yes # Keyword SQL_BIG_RESULT
+ ###< create table crash_me10 (SQL_BIG_RESULT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_BIG_RESULT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_sql_calc_found_rows=yes # Keyword SQL_CALC_FOUND_ROWS
+ ###< create table crash_me10 (SQL_CALC_FOUND_ROWS int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_CALC_FOUND_ROWS int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_sql_small_result=yes # Keyword SQL_SMALL_RESULT
+ ###< create table crash_me10 (SQL_SMALL_RESULT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL_SMALL_RESULT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_ssl=yes # Keyword SSL
+ ###< create table crash_me10 (SSL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SSL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_starting=yes # Keyword STARTING
+ ###< create table crash_me10 (STARTING int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'STARTING int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_statistics=no # Keyword STATISTICS
+ ###< create table crash_me10 (STATISTICS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_straight_join=yes # Keyword STRAIGHT_JOIN
+ ###< create table crash_me10 (STRAIGHT_JOIN int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'STRAIGHT_JOIN int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_striped=no # Keyword STRIPED
+ ###< create table crash_me10 (STRIPED int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_successful=no # Keyword SUCCESSFUL
+ ###< create table crash_me10 (SUCCESSFUL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_synonym=no # Keyword SYNONYM
+ ###< create table crash_me10 (SYNONYM int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_sysdate=no # Keyword SYSDATE
+ ###< create table crash_me10 (SYSDATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tables=yes # Keyword TABLES
+ ###< create table crash_me10 (TABLES int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TABLES int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_terminated=yes # Keyword TERMINATED
+ ###< create table crash_me10 (TERMINATED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TERMINATED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_textsize=no # Keyword TEXTSIZE
+ ###< create table crash_me10 (TEXTSIZE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tinyblob=yes # Keyword TINYBLOB
+ ###< create table crash_me10 (TINYBLOB int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TINYBLOB int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_tinyint=yes # Keyword TINYINT
+ ###< create table crash_me10 (TINYINT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TINYINT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_tinytext=yes # Keyword TINYTEXT
+ ###< create table crash_me10 (TINYTEXT int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'TINYTEXT int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_top=no # Keyword TOP
+ ###< create table crash_me10 (TOP int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tran=no # Keyword TRAN
+ ###< create table crash_me10 (TRAN int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_truncate=no # Keyword TRUNCATE
+ ###< create table crash_me10 (TRUNCATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_tsequal=no # Keyword TSEQUAL
+ ###< create table crash_me10 (TSEQUAL int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_types=no # Keyword TYPES
+ ###< create table crash_me10 (TYPES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_uid=no # Keyword UID
+ ###< create table crash_me10 (UID int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_unlock=yes # Keyword UNLOCK
+ ###< create table crash_me10 (UNLOCK int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNLOCK int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_unsigned=yes # Keyword UNSIGNED
+ ###< create table crash_me10 (UNSIGNED int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNSIGNED int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_updatetext=no # Keyword UPDATETEXT
+ ###< create table crash_me10 (UPDATETEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_use=yes # Keyword USE
+ ###< create table crash_me10 (USE int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'USE int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_user_resources=no # Keyword USER_RESOURCES
+ ###< create table crash_me10 (USER_RESOURCES int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_validate=no # Keyword VALIDATE
+ ###< create table crash_me10 (VALIDATE int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_varbinary=yes # Keyword VARBINARY
+ ###< create table crash_me10 (VARBINARY int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARBINARY int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_varchar2=no # Keyword VARCHAR2
+ ###< create table crash_me10 (VARCHAR2 int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_waitfor=no # Keyword WAITFOR
+ ###< create table crash_me10 (WAITFOR int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_warnings=no # Keyword WARNINGS
+ ###< create table crash_me10 (WARNINGS int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_writetext=no # Keyword WRITETEXT
+ ###< create table crash_me10 (WRITETEXT int not null)
+ ###> OK
+ ###< drop table crash_me10
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is NO
+reserved_word_extra_xor=yes # Keyword XOR
+ ###< create table crash_me10 (XOR int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'XOR int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_year_month=yes # Keyword YEAR_MONTH
+ ###< create table crash_me10 (YEAR_MONTH int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'YEAR_MONTH int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+reserved_word_extra_zerofill=yes # Keyword ZEROFILL
+ ###< create table crash_me10 (ZEROFILL int not null)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ZEROFILL int not null)' at line 1
+ ###< drop table crash_me10
+ ###> execute error:Unknown table 'crash_me10'
+ ###
+ ###As far as some queries didnt return OK, result is YES
+right_outer_join=yes # right outer join
+ ###< select crash_me.a from crash_me right join crash_me2 ON crash_me.a=crash_me2.a
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+rollback_metadata=no # rollback_metadata
+ ###< create table crash_q (a integer not null)
+ ###> OK
+ ###
+ ###< insert into crash_q values (1)
+ ###> OK
+rowid=auto_increment # Type for row id
+ ###< create table crash_q (a rowid)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'rowid)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###< create table crash_q (a int not null auto_increment, primary key(a))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+safe_decimal_arithmetic=no # safe decimal arithmetic
+ ###< create table crash_me_a (a decimal(10,2),b decimal(10,2))
+ ###> OK
+ ###
+ ###< insert into crash_me_a (a,b) values (11.4,18.9)
+ ###> OK
+ ###
+ ###<select count(*) from crash_me_a where a+b=30.3
+ ###>0
+ ###We expected '1' but got '0'
+select_constants=yes # Select constants
+ ###< select 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+select_limit=with LIMIT # LIMIT number of rows
+ ###< select * from crash_me limit 1
+ ###> OK
+select_limit2=yes # SELECT with LIMIT #,#
+ ###< select * from crash_me limit 1,1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+select_limit3=yes # SELECT with LIMIT # OFFSET #
+ ###< select * from crash_me limit 1 offset 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+select_string_size=1048565 # constant string size in SELECT
+ ###We are trying (example with N=5):
+ ###select 'aaaaa'
+select_table_update=yes # Update with sub select
+ ###< create table crash_q (a integer,b char(10))
+ ###> OK
+ ###< insert into crash_q values(1,'c')
+ ###> OK
+ ###< update crash_q set b= (select b from crash_me where crash_q.a = crash_me.a)
+ ###> OK
+ ###
+ ###<select b from crash_q
+ ###>a
+ ###
+ ###< drop table crash_q
+ ###> OK
+select_without_from=yes # SELECT without FROM
+ ###< select 1
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+server_version=MySQL 4.1.2 alpha # server version
+simple_joins=yes # ANSI SQL simple joins
+ ###< select crash_me.a from crash_me, crash_me t0
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+sorted_group_by=yes # Group by always sorted
+ ###< create table crash_me_t1 (a int not null, b int not null)
+ ###> OK
+ ###< insert into crash_me_t1 values (1,1)
+ ###> OK
+ ###< insert into crash_me_t1 values (1,2)
+ ###> OK
+ ###< insert into crash_me_t1 values (3,1)
+ ###> OK
+ ###< insert into crash_me_t1 values (3,2)
+ ###> OK
+ ###< insert into crash_me_t1 values (2,2)
+ ###> OK
+ ###< insert into crash_me_t1 values (2,1)
+ ###> OK
+ ###< create table crash_me_t2 (a int not null, b int not null)
+ ###> OK
+ ###< create index crash_me_t2_ind on crash_me_t2 (a)
+ ###> OK
+ ###< insert into crash_me_t2 values (1,3)
+ ###> OK
+ ###< insert into crash_me_t2 values (3,1)
+ ###> OK
+ ###< insert into crash_me_t2 values (2,2)
+ ###> OK
+ ###< insert into crash_me_t2 values (1,1)
+ ###> OK
+ ###
+ ###< select crash_me_t1.a,crash_me_t2.b from crash_me_t1,crash_me_t2 where crash_me_t1.a=crash_me_t2.a group by crash_me_t1.a,crash_me_t2.b
+ ### > 1,1
+ ### > 1,3
+ ### > 2,2
+ ### > 3,1
+ ###
+ ### Check recordset:
+ ### 1,1 expected: 1,1
+ ### 1,3 expected: 1,3
+ ### 2,2 expected: 2,2
+ ### 3,1 expected: 3,1
+ ### Recordset corresponds with template
+ ###< drop table crash_me_t1
+ ###> OK
+ ###< drop table crash_me_t2
+ ###> OK
+storage_of_float=round # Storage of float values
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.14)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.1
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.16)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.2
+ ###We expected '1.1' but got '1.2'
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.14)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.1
+ ###
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###< create table crash_q (q1 float(4,1))
+ ###> OK
+ ###< insert into crash_q values(1.16)
+ ###> OK
+ ###
+ ###<select q1 from crash_q
+ ###>1.2
+ ###
+ ###< drop table crash_q
+ ###> OK
+subqueries=yes # subqueries
+ ###< select a from crash_me where crash_me.a in (select max(a) from crash_me)
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+table_alias=yes # Table alias
+ ###< select b.a from crash_me as b
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+table_name_case=no # case independent table names
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< drop table CRASH_Q
+ ###> execute error:Unknown table 'CRASH_Q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+table_wildcard=yes # Select table_name.*
+ ###< select crash_me.* from crash_me
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+temporary_table=yes # temporary tables
+ ###< create temporary table crash_q (q integer not null)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+time_format_EUR=error # Supports HH.MM.SS (EUR) time format
+ ###< insert into crash_me_t(a) values ('20.08.16')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>00:00:20
+ ###We expected '20:08:16' but got '00:00:20'
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_HHHHMMSS=yes # Supports HHHHmmSS time format
+ ###< insert into crash_me_t(a) values ('00200816')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>20:08:16
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_ISO=yes # Supports HH:MM:SS (ISO) time format
+ ###< insert into crash_me_t(a) values ('20:08:16')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>20:08:16
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_USA=error # Supports HH:MM:SS (AM|PM) time format
+ ###< insert into crash_me_t(a) values ('08:08:16 PM')
+ ###> OK
+ ###
+ ###<select a from crash_me_t
+ ###>08:08:16
+ ###We expected '20:08:16' but got '08:08:16'
+ ###
+ ###< delete from crash_me_t
+ ###> OK
+time_format_inresult=iso # Time format in result
+ ###< insert into crash_me_t values(CURRENT_TIME)
+ ###> OK
+ ###
+ ###< select a from crash_me_t
+ ###> 13:49:05
+ ###< delete from crash_me_t
+ ###> OK
+transactions=yes # transactions
+ ###<select * from crash_q
+ ###>1
+ ###We expected '' but got '1'
+truncate_table=yes # truncate
+ ###< create table crash_q (a integer, b integer,c1 CHAR(10))
+ ###> OK
+ ###< truncate table crash_q
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_abstime=no # Type abstime
+ ###< create table crash_q (q abstime)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'abstime)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_bfile=no # Type bfile
+ ###< create table crash_q (q bfile)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'bfile)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_blob=yes # Type blob
+ ###< create table crash_q (q blob)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_bool=yes # Type bool
+ ###< create table crash_q (q bool)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_box=no # Type box
+ ###< create table crash_q (q box)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'box)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_byte=no # Type byte
+ ###< create table crash_q (q byte)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'byte)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_char(1_arg)_binary=yes # Type char(1 arg) binary
+ ###< create table crash_q (q char(10) binary)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_cidr=no # Type cidr
+ ###< create table crash_q (q cidr)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'cidr)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_circle=no # Type circle
+ ###< create table crash_q (q circle)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'circle)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_clob=no # Type clob
+ ###< create table crash_q (q clob)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'clob)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_datetime=yes # Type datetime
+ ###< create table crash_q (q datetime)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_double=yes # Type double
+ ###< create table crash_q (q double)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_enum(1_arg)=yes # Type enum(1 arg)
+ ###< create table crash_q (q enum('red'))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_float(2_arg)=yes # Type float(2 arg)
+ ###< create table crash_q (q float(6,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_float4=yes # Type float4
+ ###< create table crash_q (q float4)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_float8=yes # Type float8
+ ###< create table crash_q (q float8)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_image=no # Type image
+ ###< create table crash_q (q image)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'image)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_inet=no # Type inet
+ ###< create table crash_q (q inet)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'inet)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_int(1_arg)_zerofill=yes # Type int(1 arg) zerofill
+ ###< create table crash_q (q int(5) zerofill)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int1=yes # Type int1
+ ###< create table crash_q (q int1)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int2=yes # Type int2
+ ###< create table crash_q (q int2)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int3=yes # Type int3
+ ###< create table crash_q (q int3)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int4=yes # Type int4
+ ###< create table crash_q (q int4)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int8=yes # Type int8
+ ###< create table crash_q (q int8)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int_auto_increment=yes # Type int not null auto_increment
+ ###< create table crash_q (q int not null auto_increment,unique(q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_int_identity=no # Type int not null identity
+ ###< create table crash_q (q int not null identity,unique(q))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'identity,unique(q))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_int_unsigned=yes # Type int unsigned
+ ###< create table crash_q (q int unsigned)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_interval=no # Type interval
+ ###< create table crash_q (q interval)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_line=no # Type line
+ ###< create table crash_q (q line)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'line)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_long=yes # Type long
+ ###< create table crash_q (q long)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_long_raw=no # Type long raw
+ ###< create table crash_q (q long raw)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'raw)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_long_varbinary=yes # Type long varbinary
+ ###< create table crash_q (q long varbinary)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+ ###< create table crash_q (q long varchar(1))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(1))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_lseg=no # Type lseg
+ ###< create table crash_q (q lseg)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'lseg)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_macaddr=no # Type macaddr
+ ###< create table crash_q (q macaddr)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'macaddr)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_mediumint=yes # Type mediumint
+ ###< create table crash_q (q mediumint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_mediumtext=yes # Type mediumtext
+ ###< create table crash_q (q mediumtext)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_middleint=yes # Type middleint
+ ###< create table crash_q (q middleint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_mlslabel=no # Type mlslabel
+ ###< create table crash_q (q mlslabel)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'mlslabel)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_money=no # Type money
+ ###< create table crash_q (q money)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'money)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_nclob=no # Type nclob
+ ###< create table crash_q (q nclob)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'nclob)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_number=no # Type number
+ ###< create table crash_q (q number)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'number)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_number(1_arg)=no # Type number(1 arg)
+ ###< create table crash_q (q number(9))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'number(9))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_number(2_arg)=no # Type number(2 arg)
+ ###< create table crash_q (q number(9,2))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'number(9,2))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+ ###< create table crash_q (q nvarchar2(16))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'nvarchar2(16))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_path=no # Type path
+ ###< create table crash_q (q path)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'path)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_point=yes # Type point
+ ###< create table crash_q (q point)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_polygon=yes # Type polygon
+ ###< create table crash_q (q polygon)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+ ###< create table crash_q (q raw(16))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'raw(16))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_reltime=no # Type reltime
+ ###< create table crash_q (q reltime)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'reltime)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_rowid=no # Type rowid
+ ###< create table crash_q (q rowid)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'rowid)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_serial=yes # Type serial
+ ###< create table crash_q (q serial)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_set(1_arg)=yes # Type set(1 arg)
+ ###< create table crash_q (q set('red'))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_smalldatetime=no # Type smalldatetime
+ ###< create table crash_q (q smalldatetime)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'smalldatetime)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_smallfloat=no # Type smallfloat
+ ###< create table crash_q (q smallfloat)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'smallfloat)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_smallmoney=no # Type smallmoney
+ ###< create table crash_q (q smallmoney)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'smallmoney)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_text=yes # Type text
+ ###< create table crash_q (q text)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_text(1_arg)=yes # Type text(1 arg)
+ ###< create table crash_q (q text(10))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_extra_timespan=no # Type timespan
+ ###< create table crash_q (q timespan)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'timespan)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_uint=no # Type uint
+ ###< create table crash_q (q uint)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'uint)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+ ###< create table crash_q (q varchar2(257))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar2(257))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_extra_year=yes # Type year
+ ###< create table crash_q (q year)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_bigint=yes # Type bigint
+ ###< create table crash_q (q bigint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+ ###< create table crash_q (q binary(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_datetime=yes # Type datetime
+ ###< create table crash_q (q datetime)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_tinyint=yes # Type tinyint
+ ###< create table crash_q (q tinyint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+ ###< create table crash_q (q varbinary(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_bit=yes # Type bit
+ ###< create table crash_q (q bit)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_bit(1_arg)=yes # Type bit(1 arg)
+ ###< create table crash_q (q bit(2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+ ###< create table crash_q (q bit varying(2))
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'varying(2))' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_boolean=yes # Type boolean
+ ###< create table crash_q (q boolean)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_char(1_arg)=yes # Type char(1 arg)
+ ###< create table crash_q (q char(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+ ###< create table crash_q (q char varying(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_character(1_arg)=yes # Type character(1 arg)
+ ###< create table crash_q (q character(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+ ###< create table crash_q (q character varying(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_date=yes # Type date
+ ###< create table crash_q (q date)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+ ###< create table crash_q (q dec(6,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+ ###< create table crash_q (q decimal(6,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_double_precision=yes # Type double precision
+ ###< create table crash_q (q double precision)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_float=yes # Type float
+ ###< create table crash_q (q float)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_float(1_arg)=yes # Type float(1 arg)
+ ###< create table crash_q (q float(8))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_int=yes # Type int
+ ###< create table crash_q (q int)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_integer=yes # Type integer
+ ###< create table crash_q (q integer)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_interval_day=no # Type interval day
+ ###< create table crash_q (q interval day)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_day_to_hour=no # Type interval day to hour
+ ###< create table crash_q (q interval day to hour)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day to hour)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_day_to_minute=no # Type interval day to minute
+ ###< create table crash_q (q interval day to minute)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day to minute)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_day_to_second=no # Type interval day to second
+ ###< create table crash_q (q interval day to second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval day to second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_hour=no # Type interval hour
+ ###< create table crash_q (q interval hour)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval hour)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+ ###< create table crash_q (q interval hour to minute)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval hour to minute)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_hour_to_second=no # Type interval hour to second
+ ###< create table crash_q (q interval hour to second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval hour to second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_minute=no # Type interval minute
+ ###< create table crash_q (q interval minute)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval minute)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_minute_to_second=no # Type interval minute to second
+ ###< create table crash_q (q interval minute to second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval minute to second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_month=no # Type interval month
+ ###< create table crash_q (q interval month)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval month)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_second=no # Type interval second
+ ###< create table crash_q (q interval second)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval second)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_year=no # Type interval year
+ ###< create table crash_q (q interval year)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval year)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_interval_year_to_month=no # Type interval year to month
+ ###< create table crash_q (q interval year to month)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'interval year to month)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+ ###< create table crash_q (q national char varying(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+ ###< create table crash_q (q national character(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+ ###< create table crash_q (q national character varying(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+ ###< create table crash_q (q nchar(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+ ###< create table crash_q (q nchar varying(20))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+ ###< create table crash_q (q numeric(9,2))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_real=yes # Type real
+ ###< create table crash_q (q real)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_smallint=yes # Type smallint
+ ###< create table crash_q (q smallint)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_time=yes # Type time
+ ###< create table crash_q (q time)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_timestamp=yes # Type timestamp
+ ###< create table crash_q (q timestamp)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+ ###< create table crash_q (q timestamp with time zone)
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'with time zone)' at line 1
+ ###< drop table crash_q
+ ###> execute error:Unknown table 'crash_q'
+ ###
+ ###As far as some queries didnt return OK, result is NO
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+ ###< create table crash_q (q varchar(1))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union=yes # union
+ ###< select * from crash_me union select a,b from crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union_all=yes # union all
+ ###< select * from crash_me union all select a,b from crash_me3
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union_all_incompat=yes # union all (incompatible lists)
+ ###< select * from crash_me union all select a,b from crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+union_incompat=yes # union (incompatible lists)
+ ###< select * from crash_me union select a,b from crash_me2
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+unique_in_create=yes # unique in create table
+ ###< create table crash_q (q integer not null,unique (q))
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+unique_null_in_create=yes # unique null in create
+ ###< create table crash_q (q integer,unique (q))
+ ###> OK
+ ###< insert into crash_q (q) values (NULL)
+ ###> OK
+ ###< insert into crash_q (q) values (NULL)
+ ###> OK
+ ###< insert into crash_q (q) values (1)
+ ###> OK
+ ###< drop table crash_q
+ ###> OK
+ ###
+ ###As far as all queries returned OK, result is YES
+value_of_false=0 # Value of FALSE
+ ###<select FALSE
+ ###>0
+value_of_true=1 # Value of TRUE
+ ###<select TRUE
+ ###>1
+views=no # views
+ ###< create view crash_q as select a from crash_me
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'view crash_q as select a from crash_me' at line 1
+ ###< drop view crash_q
+ ###> execute error:You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'view crash_q' at line 1
+ ###
+ ###As far as some queries didnt return OK, result is NO
+where_string_size=1048539 # constant string size in where
+ ###We are trying (example with N=5):
+ ###select a from crash_me where b >='11111'
diff --git a/sql-bench/limits/mysql.cfg b/sql-bench/limits/mysql.cfg
new file mode 100644
index 00000000..11948984
--- /dev/null
+++ b/sql-bench/limits/mysql.cfg
@@ -0,0 +1,1122 @@
+#This file is automaticly generated by crash-me 1.62
+
+NEG=yes # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=yes # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=yes # Alter table add unique
+alter_alter_col=yes # Alter table alter column default
+alter_change_col=yes # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_drop_constraint=no # Alter table drop constraint
+alter_drop_foreign_key=with drop foreign key # Alter table drop foreign key
+alter_drop_primary_key=drop primary key # Alter table drop primary key
+alter_drop_unique=with drop key # Alter table drop unique
+alter_modify_col=yes # Alter table modify column
+alter_rename_table=yes # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=_rowid # Automatic row id
+binary_numbers=yes # binary numbers (0b1001)
+binary_strings=yes # binary strings (b'0110')
+case_insensitive_strings=yes # Case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=yes # # as comment
+comment_--=yes # -- as comment (ANSI)
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=152 # Simultaneous connections (installation default)
+constraint_check=syntax only # Column constraints
+constraint_check_named=syntax only # Named constraints
+constraint_check_table=syntax only # Table constraints
+constraint_null=yes # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.61 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=yes # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=yes # create table from select
+cross_join=yes # cross join (same as from a,b)
+date_as_string=yes # String functions on date columns
+date_format_EUR=error # Supports DD.MM.YYYY (EUR) format
+date_format_EUR_with_date=error # Supports DATE 'DD.MM.YYYY' (EUR) format
+date_format_ISO=yes # Supports YYYY-MM-DD (ISO) format
+date_format_ISO_with_date=yes # Supports DATE 'YYYY-MM-DD' (ISO) format
+date_format_USA=error # Supports MM/DD/YYYY format
+date_format_USA_with_date=error # Supports DATE 'MM/DD/YYYY' format
+date_format_YYYYMMDD=yes # Supports YYYYMMDD format
+date_format_YYYYMMDD_with_date=yes # Supports DATE 'YYYYMMDD' format
+date_format_inresult=iso # Date format in result
+date_infinity=error # Supports 'infinity dates
+date_last=yes # Supports 9999-12-31 dates
+date_one=yes # Supports 0001-01-01 dates
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=yes # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+dont_require_cast_to_float=yes # No need to cast from integer to float
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=yes # drop table if exists
+drop_index=with 'ON' # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=yes # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+field_name_case=yes # case independent field names
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=syntax only # foreign keys
+full_outer_join=no # full outer join
+func_extra_!=yes # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=yes # Function AND as '&&'
+func_extra_<>=yes # Function <> in SELECT
+func_extra_==yes # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_adddate=yes # Function ADDDATE
+func_extra_addtime=yes # Function ADDTIME
+func_extra_alpha=no # Function ALPHA
+func_extra_and_or=yes # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_ascii_string=error # Function ASCII in string cast
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=yes # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=yes # Function BETWEEN in SELECT
+func_extra_binary_shifts=yes # Function << and >> (bitwise shifts)
+func_extra_bit_count=yes # Function BIT_COUNT
+func_extra_ceil=yes # Function CEIL
+func_extra_char_date=no # Function CHAR (conversation date)
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_chr_str=no # Function CHR (any type to string)
+func_extra_concat_as_+=error # Function concatenation with +
+func_extra_concat_list=yes # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date=yes # Function DATE
+func_extra_date_format=yes # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datediff2arg=yes # Function DATEDIFF (2 arg)
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_day=yes # Function DAY
+func_extra_decode=no # Function DECODE
+func_extra_ebcdic_string=no # Function EBCDIC in string cast
+func_extra_elt=yes # Function ELT
+func_extra_encrypt=yes # Function ENCRYPT
+func_extra_expand2arg=no # Function EXPAND
+func_extra_field=yes # Function FIELD
+func_extra_fixed=no # Function FIXED
+func_extra_float=no # Function FLOAT
+func_extra_format=yes # Function FORMAT
+func_extra_from_days=yes # Function FROM_DAYS
+func_extra_from_unixtime=yes # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=yes # Function GREATEST
+func_extra_hex=yes # Function HEX
+func_extra_if=yes # Function IF
+func_extra_in_num=yes # Function IN on numbers in SELECT
+func_extra_in_str=yes # Function IN on strings in SELECT
+func_extra_index=no # Function INDEX
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=yes # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=yes # Function INTERVAL
+func_extra_last_day=yes # Function LAST_DAY
+func_extra_last_insert_id=yes # Function LAST_INSERT_ID
+func_extra_least=yes # Function LEAST
+func_extra_length=error # Function LENGTH
+func_extra_lengthb=no # Function LENGTHB
+func_extra_lfill3arg=no # Function LFILL (3 arg)
+func_extra_like=yes # Function LIKE in SELECT
+func_extra_like_escape=yes # Function LIKE ESCAPE in SELECT
+func_extra_ln=yes # Function LN
+func_extra_log(m_n)=yes # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=yes # Function LPAD
+func_extra_ltrim2arg=no # Function LTRIM (2 arg)
+func_extra_makedate=yes # Function MAKEDATE
+func_extra_maketime=yes # Function MAKETIME
+func_extra_mapchar=no # Function MAPCHAR
+func_extra_mdy=no # Function MDY
+func_extra_microsecond=yes # Function MICROSECOND
+func_extra_mid=yes # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_noround=no # Function NOROUND
+func_extra_not=yes # Function NOT in SELECT
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+func_extra_num=no # Function NUM
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=yes # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=yes # Function PERIOD_ADD
+func_extra_period_diff=yes # Function PERIOD_DIFF
+func_extra_pow=yes # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=yes # Function REGEXP in SELECT
+func_extra_replace2arg=no # Function REPLACE (2 arg)
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=yes # Function REVERSE
+func_extra_rfill3arg=no # Function RFILL (3 arg)
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=yes # Function RPAD
+func_extra_rpad4arg=no # Function RPAD (4 arg)
+func_extra_rtrim2arg=no # Function RTRIM (2 arg)
+func_extra_sec_to_time=yes # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=yes # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_subdate=yes # Function SUBDATE
+func_extra_substr2arg=yes # Function SUBSTR (2 arg)
+func_extra_substr3arg=yes # Function SUBSTR (3 arg)
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=yes # Function SUBSTRING_INDEX
+func_extra_subtime=yes # Function SUBTIME
+func_extra_sysdate=yes # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time=yes # Function TIME
+func_extra_time_to_sec=yes # Function TIME_TO_SEC
+func_extra_timediff=yes # Function TIMEDIFF
+func_extra_timestamp=error # Function TIMESTAMP
+func_extra_to_days=yes # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim1arg=yes # Function TRIM (1 arg)
+func_extra_trim2arg=no # Function TRIM (2 arg)
+func_extra_trim_many_char=error # Function TRIM; Many char extension
+func_extra_trim_substring=yes # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_trunc1arg=no # Function TRUNC (1 arg)
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=yes # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_value=no # Function VALUE
+func_extra_version=yes # Function VERSION
+func_extra_weekday=yes # Function WEEKDAY
+func_extra_weekofyear=yes # Function WEEKOFYEAR
+func_extra_|=yes # Function | (bitwise or)
+func_extra_||=yes # Function OR as '||'
+func_extra_~*=no # Function ~* (case insensitive compare)
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=yes # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=error # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=yes # Function TIMESTAMPADD
+func_odbc_timestampdiff=error # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=yes # Function USER()
+func_odbc_week=USA # WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=yes # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=error # Function CHAR_LENGTH
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_coalesce=yes # Function COALESCE
+func_sql_concat_as_||=error # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=yes # CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=yes # Function LOCALTIME
+func_sql_localtimestamp=yes # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif_num=yes # Function NULLIF with numbers
+func_sql_nullif_string=yes # Function NULLIF with strings
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_searched_case=yes # Function searched CASE
+func_sql_session_user=with_parenthesis # SESSION_USER
+func_sql_simple_case=yes # Function simple CASE
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+func_sql_system_user=with_parenthesis # SYSTEM_USER
+func_sql_trim=yes # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=with_parenthesis # USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=yes # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=yes # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=yes # Group function BIT_AND
+group_func_extra_bit_or=yes # Group function BIT_OR
+group_func_extra_count_distinct_list=yes # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=yes # Group function STD
+group_func_extra_stddev=yes # Group function STDDEV
+group_func_extra_variance=yes # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_many_distinct_functions=yes # Group functions with several distinct
+group_on_unused=yes # Group on unused column
+has_true_false=yes # TRUE and FALSE
+having=yes # Having
+having_with_alias=yes # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=yes # hex numbers (0x41)
+hex_strings=yes # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=yes # index in create table
+index_namespace=yes # different namespace for index
+index_parts=yes # index on column part (extension)
+inner_join=yes # inner join
+insert_default_values=no # INSERT DEFAULT VALUES
+insert_empty_string=yes # insert empty string
+insert_multi_value=yes # INSERT with Value lists
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_default=yes # INSERT with DEFAULT
+insert_with_empty_value_list=no # INSERT with empty value list
+insert_with_set=yes # INSERT with set syntax
+intersect=no # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=61 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=yes # left outer join using
+length_of_varchar_field=actual length # CHARACTER_LENGTH(varchar_field)
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=1 # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=255 # max char() size
+max_column_name=64 # column name length
+max_columns=2599 # Columns in table
+max_conditions=85660 # OR and AND in WHERE
+max_expressions=571 # simple expressions
+max_index=+64 # max index
+max_index_length=1000 # index length
+max_index_name=64 # index name length
+max_index_part_length=255 # max index part length
+max_index_parts=32 # index parts
+max_index_varchar_part_length=1000 # index varchar part length
+max_row_length=65534 # max table row length (without blobs)
+max_row_length_with_null=65502 # table row length with nulls (without blobs)
+max_select_alias_name=+512 # select alias name length
+max_stack_expression=571 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=64 # table name length
+max_text_size=1048543 # max text or blob size
+max_unique_index=+64 # unique indexes
+max_varchar_size=1048543 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=yes # Calculate 1--1
+multi_drop=yes # many tables to drop table
+multi_null_in_unique=yes # null in unique index
+multi_strings=yes # Multiple line strings
+multi_table_delete=yes # DELETE FROM table1,table2...
+multi_table_update=yes # Update with many tables
+natural_join=yes # natural join
+natural_join_incompat=yes # natural join (incompatible lists)
+natural_left_outer_join=yes # natural left outer join
+no_primary_key=yes # Tables without primary key
+not_id_between=yes # NOT ID BETWEEN interprets as ID NOT BETWEEN
+null_concat_expr=yes # Is concat('a',NULL) = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique index
+null_num_expr=yes # Is 1+NULL = NULL
+nulls_in_unique=yes # null combination in unique index
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Linux 2.6.37.6-0.7-desktop x86_64 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_on_unused=yes # Order by on unused column
+position_of_null=first # Where is null values in sorted recordset
+position_of_null_desc=last # Where is null values in sorted recordset (DESC)
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=yes # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=1048574 # query size
+quote_ident_with_"=error # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=yes # ` as identifier quote
+quote_ident_with_dbl_"=no # Double "" in identifiers as "
+quote_with_"=yes # Allows ' and " as string markers
+recursive_subqueries=+64 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=yes # rename table
+repeat_string_size=1048576 # return string size from function
+reserved_word_ansi-92/99_absolute=no # Keyword ABSOLUTE
+reserved_word_ansi-92/99_action=no # Keyword ACTION
+reserved_word_ansi-92/99_add=yes # Keyword ADD
+reserved_word_ansi-92/99_after=no # Keyword AFTER
+reserved_word_ansi-92/99_alias=no # Keyword ALIAS
+reserved_word_ansi-92/99_all=yes # Keyword ALL
+reserved_word_ansi-92/99_allocate=no # Keyword ALLOCATE
+reserved_word_ansi-92/99_alter=yes # Keyword ALTER
+reserved_word_ansi-92/99_and=yes # Keyword AND
+reserved_word_ansi-92/99_any=no # Keyword ANY
+reserved_word_ansi-92/99_are=no # Keyword ARE
+reserved_word_ansi-92/99_as=yes # Keyword AS
+reserved_word_ansi-92/99_asc=yes # Keyword ASC
+reserved_word_ansi-92/99_assertion=no # Keyword ASSERTION
+reserved_word_ansi-92/99_at=no # Keyword AT
+reserved_word_ansi-92/99_authorization=no # Keyword AUTHORIZATION
+reserved_word_ansi-92/99_before=yes # Keyword BEFORE
+reserved_word_ansi-92/99_begin=no # Keyword BEGIN
+reserved_word_ansi-92/99_bit=no # Keyword BIT
+reserved_word_ansi-92/99_boolean=no # Keyword BOOLEAN
+reserved_word_ansi-92/99_both=yes # Keyword BOTH
+reserved_word_ansi-92/99_breadth=no # Keyword BREADTH
+reserved_word_ansi-92/99_by=yes # Keyword BY
+reserved_word_ansi-92/99_call=yes # Keyword CALL
+reserved_word_ansi-92/99_cascade=yes # Keyword CASCADE
+reserved_word_ansi-92/99_cascaded=no # Keyword CASCADED
+reserved_word_ansi-92/99_case=yes # Keyword CASE
+reserved_word_ansi-92/99_cast=no # Keyword CAST
+reserved_word_ansi-92/99_catalog=no # Keyword CATALOG
+reserved_word_ansi-92/99_char=yes # Keyword CHAR
+reserved_word_ansi-92/99_character=yes # Keyword CHARACTER
+reserved_word_ansi-92/99_check=yes # Keyword CHECK
+reserved_word_ansi-92/99_close=no # Keyword CLOSE
+reserved_word_ansi-92/99_collate=yes # Keyword COLLATE
+reserved_word_ansi-92/99_collation=no # Keyword COLLATION
+reserved_word_ansi-92/99_column=yes # Keyword COLUMN
+reserved_word_ansi-92/99_commit=no # Keyword COMMIT
+reserved_word_ansi-92/99_completion=no # Keyword COMPLETION
+reserved_word_ansi-92/99_connect=no # Keyword CONNECT
+reserved_word_ansi-92/99_connection=no # Keyword CONNECTION
+reserved_word_ansi-92/99_constraint=yes # Keyword CONSTRAINT
+reserved_word_ansi-92/99_constraints=no # Keyword CONSTRAINTS
+reserved_word_ansi-92/99_continue=yes # Keyword CONTINUE
+reserved_word_ansi-92/99_corresponding=no # Keyword CORRESPONDING
+reserved_word_ansi-92/99_create=yes # Keyword CREATE
+reserved_word_ansi-92/99_cross=yes # Keyword CROSS
+reserved_word_ansi-92/99_current=no # Keyword CURRENT
+reserved_word_ansi-92/99_current_date=yes # Keyword CURRENT_DATE
+reserved_word_ansi-92/99_current_time=yes # Keyword CURRENT_TIME
+reserved_word_ansi-92/99_current_timestamp=yes # Keyword CURRENT_TIMESTAMP
+reserved_word_ansi-92/99_current_user=yes # Keyword CURRENT_USER
+reserved_word_ansi-92/99_cursor=yes # Keyword CURSOR
+reserved_word_ansi-92/99_cycle=no # Keyword CYCLE
+reserved_word_ansi-92/99_data=no # Keyword DATA
+reserved_word_ansi-92/99_date=no # Keyword DATE
+reserved_word_ansi-92/99_day=no # Keyword DAY
+reserved_word_ansi-92/99_deallocate=no # Keyword DEALLOCATE
+reserved_word_ansi-92/99_dec=yes # Keyword DEC
+reserved_word_ansi-92/99_decimal=yes # Keyword DECIMAL
+reserved_word_ansi-92/99_declare=yes # Keyword DECLARE
+reserved_word_ansi-92/99_default=yes # Keyword DEFAULT
+reserved_word_ansi-92/99_deferrable=no # Keyword DEFERRABLE
+reserved_word_ansi-92/99_deferred=no # Keyword DEFERRED
+reserved_word_ansi-92/99_delete=yes # Keyword DELETE
+reserved_word_ansi-92/99_depth=no # Keyword DEPTH
+reserved_word_ansi-92/99_desc=yes # Keyword DESC
+reserved_word_ansi-92/99_describe=yes # Keyword DESCRIBE
+reserved_word_ansi-92/99_descriptor=no # Keyword DESCRIPTOR
+reserved_word_ansi-92/99_diagnostics=no # Keyword DIAGNOSTICS
+reserved_word_ansi-92/99_dictionary=no # Keyword DICTIONARY
+reserved_word_ansi-92/99_disconnect=no # Keyword DISCONNECT
+reserved_word_ansi-92/99_distinct=yes # Keyword DISTINCT
+reserved_word_ansi-92/99_domain=no # Keyword DOMAIN
+reserved_word_ansi-92/99_double=yes # Keyword DOUBLE
+reserved_word_ansi-92/99_drop=yes # Keyword DROP
+reserved_word_ansi-92/99_each=yes # Keyword EACH
+reserved_word_ansi-92/99_else=yes # Keyword ELSE
+reserved_word_ansi-92/99_elseif=yes # Keyword ELSEIF
+reserved_word_ansi-92/99_end=no # Keyword END
+reserved_word_ansi-92/99_end-exec=yes # Keyword END-EXEC
+reserved_word_ansi-92/99_equals=no # Keyword EQUALS
+reserved_word_ansi-92/99_escape=no # Keyword ESCAPE
+reserved_word_ansi-92/99_except=no # Keyword EXCEPT
+reserved_word_ansi-92/99_exception=no # Keyword EXCEPTION
+reserved_word_ansi-92/99_exec=no # Keyword EXEC
+reserved_word_ansi-92/99_execute=no # Keyword EXECUTE
+reserved_word_ansi-92/99_external=no # Keyword EXTERNAL
+reserved_word_ansi-92/99_false=yes # Keyword FALSE
+reserved_word_ansi-92/99_fetch=yes # Keyword FETCH
+reserved_word_ansi-92/99_first=no # Keyword FIRST
+reserved_word_ansi-92/99_float=yes # Keyword FLOAT
+reserved_word_ansi-92/99_for=yes # Keyword FOR
+reserved_word_ansi-92/99_foreign=yes # Keyword FOREIGN
+reserved_word_ansi-92/99_found=no # Keyword FOUND
+reserved_word_ansi-92/99_from=yes # Keyword FROM
+reserved_word_ansi-92/99_full=no # Keyword FULL
+reserved_word_ansi-92/99_general=no # Keyword GENERAL
+reserved_word_ansi-92/99_get=no # Keyword GET
+reserved_word_ansi-92/99_global=no # Keyword GLOBAL
+reserved_word_ansi-92/99_go=no # Keyword GO
+reserved_word_ansi-92/99_goto=no # Keyword GOTO
+reserved_word_ansi-92/99_grant=yes # Keyword GRANT
+reserved_word_ansi-92/99_group=yes # Keyword GROUP
+reserved_word_ansi-92/99_having=yes # Keyword HAVING
+reserved_word_ansi-92/99_hour=no # Keyword HOUR
+reserved_word_ansi-92/99_identity=no # Keyword IDENTITY
+reserved_word_ansi-92/99_if=yes # Keyword IF
+reserved_word_ansi-92/99_ignore=yes # Keyword IGNORE
+reserved_word_ansi-92/99_immediate=no # Keyword IMMEDIATE
+reserved_word_ansi-92/99_in=yes # Keyword IN
+reserved_word_ansi-92/99_indicator=no # Keyword INDICATOR
+reserved_word_ansi-92/99_initially=no # Keyword INITIALLY
+reserved_word_ansi-92/99_inner=yes # Keyword INNER
+reserved_word_ansi-92/99_input=no # Keyword INPUT
+reserved_word_ansi-92/99_insert=yes # Keyword INSERT
+reserved_word_ansi-92/99_int=yes # Keyword INT
+reserved_word_ansi-92/99_integer=yes # Keyword INTEGER
+reserved_word_ansi-92/99_intersect=no # Keyword INTERSECT
+reserved_word_ansi-92/99_interval=yes # Keyword INTERVAL
+reserved_word_ansi-92/99_into=yes # Keyword INTO
+reserved_word_ansi-92/99_is=yes # Keyword IS
+reserved_word_ansi-92/99_isolation=no # Keyword ISOLATION
+reserved_word_ansi-92/99_join=yes # Keyword JOIN
+reserved_word_ansi-92/99_key=yes # Keyword KEY
+reserved_word_ansi-92/99_language=no # Keyword LANGUAGE
+reserved_word_ansi-92/99_last=no # Keyword LAST
+reserved_word_ansi-92/99_leading=yes # Keyword LEADING
+reserved_word_ansi-92/99_leave=yes # Keyword LEAVE
+reserved_word_ansi-92/99_left=yes # Keyword LEFT
+reserved_word_ansi-92/99_less=no # Keyword LESS
+reserved_word_ansi-92/99_level=no # Keyword LEVEL
+reserved_word_ansi-92/99_like=yes # Keyword LIKE
+reserved_word_ansi-92/99_limit=yes # Keyword LIMIT
+reserved_word_ansi-92/99_local=no # Keyword LOCAL
+reserved_word_ansi-92/99_loop=yes # Keyword LOOP
+reserved_word_ansi-92/99_match=yes # Keyword MATCH
+reserved_word_ansi-92/99_minute=no # Keyword MINUTE
+reserved_word_ansi-92/99_modify=no # Keyword MODIFY
+reserved_word_ansi-92/99_module=no # Keyword MODULE
+reserved_word_ansi-92/99_month=no # Keyword MONTH
+reserved_word_ansi-92/99_names=no # Keyword NAMES
+reserved_word_ansi-92/99_national=no # Keyword NATIONAL
+reserved_word_ansi-92/99_natural=yes # Keyword NATURAL
+reserved_word_ansi-92/99_nchar=no # Keyword NCHAR
+reserved_word_ansi-92/99_new=no # Keyword NEW
+reserved_word_ansi-92/99_next=no # Keyword NEXT
+reserved_word_ansi-92/99_no=no # Keyword NO
+reserved_word_ansi-92/99_none=no # Keyword NONE
+reserved_word_ansi-92/99_not=yes # Keyword NOT
+reserved_word_ansi-92/99_null=yes # Keyword NULL
+reserved_word_ansi-92/99_numeric=yes # Keyword NUMERIC
+reserved_word_ansi-92/99_object=no # Keyword OBJECT
+reserved_word_ansi-92/99_of=no # Keyword OF
+reserved_word_ansi-92/99_off=no # Keyword OFF
+reserved_word_ansi-92/99_old=no # Keyword OLD
+reserved_word_ansi-92/99_on=yes # Keyword ON
+reserved_word_ansi-92/99_only=no # Keyword ONLY
+reserved_word_ansi-92/99_open=no # Keyword OPEN
+reserved_word_ansi-92/99_operation=no # Keyword OPERATION
+reserved_word_ansi-92/99_option=yes # Keyword OPTION
+reserved_word_ansi-92/99_or=yes # Keyword OR
+reserved_word_ansi-92/99_order=yes # Keyword ORDER
+reserved_word_ansi-92/99_outer=yes # Keyword OUTER
+reserved_word_ansi-92/99_output=no # Keyword OUTPUT
+reserved_word_ansi-92/99_pad=no # Keyword PAD
+reserved_word_ansi-92/99_parameters=no # Keyword PARAMETERS
+reserved_word_ansi-92/99_partial=no # Keyword PARTIAL
+reserved_word_ansi-92/99_precision=yes # Keyword PRECISION
+reserved_word_ansi-92/99_preorder=no # Keyword PREORDER
+reserved_word_ansi-92/99_prepare=no # Keyword PREPARE
+reserved_word_ansi-92/99_preserve=no # Keyword PRESERVE
+reserved_word_ansi-92/99_primary=yes # Keyword PRIMARY
+reserved_word_ansi-92/99_prior=no # Keyword PRIOR
+reserved_word_ansi-92/99_privileges=no # Keyword PRIVILEGES
+reserved_word_ansi-92/99_procedure=yes # Keyword PROCEDURE
+reserved_word_ansi-92/99_public=no # Keyword PUBLIC
+reserved_word_ansi-92/99_read=yes # Keyword READ
+reserved_word_ansi-92/99_real=yes # Keyword REAL
+reserved_word_ansi-92/99_recursive=no # Keyword RECURSIVE
+reserved_word_ansi-92/99_ref=no # Keyword REF
+reserved_word_ansi-92/99_references=yes # Keyword REFERENCES
+reserved_word_ansi-92/99_referencing=no # Keyword REFERENCING
+reserved_word_ansi-92/99_relative=no # Keyword RELATIVE
+reserved_word_ansi-92/99_resignal=no # Keyword RESIGNAL
+reserved_word_ansi-92/99_restrict=yes # Keyword RESTRICT
+reserved_word_ansi-92/99_return=yes # Keyword RETURN
+reserved_word_ansi-92/99_returns=no # Keyword RETURNS
+reserved_word_ansi-92/99_revoke=yes # Keyword REVOKE
+reserved_word_ansi-92/99_right=yes # Keyword RIGHT
+reserved_word_ansi-92/99_role=no # Keyword ROLE
+reserved_word_ansi-92/99_rollback=no # Keyword ROLLBACK
+reserved_word_ansi-92/99_routine=no # Keyword ROUTINE
+reserved_word_ansi-92/99_row=no # Keyword ROW
+reserved_word_ansi-92/99_rows=no # Keyword ROWS
+reserved_word_ansi-92/99_savepoint=no # Keyword SAVEPOINT
+reserved_word_ansi-92/99_schema=yes # Keyword SCHEMA
+reserved_word_ansi-92/99_scroll=no # Keyword SCROLL
+reserved_word_ansi-92/99_search=no # Keyword SEARCH
+reserved_word_ansi-92/99_second=no # Keyword SECOND
+reserved_word_ansi-92/99_section=no # Keyword SECTION
+reserved_word_ansi-92/99_select=yes # Keyword SELECT
+reserved_word_ansi-92/99_sequence=no # Keyword SEQUENCE
+reserved_word_ansi-92/99_session=no # Keyword SESSION
+reserved_word_ansi-92/99_session_user=no # Keyword SESSION_USER
+reserved_word_ansi-92/99_set=yes # Keyword SET
+reserved_word_ansi-92/99_signal=no # Keyword SIGNAL
+reserved_word_ansi-92/99_size=no # Keyword SIZE
+reserved_word_ansi-92/99_smallint=yes # Keyword SMALLINT
+reserved_word_ansi-92/99_some=no # Keyword SOME
+reserved_word_ansi-92/99_space=no # Keyword SPACE
+reserved_word_ansi-92/99_sql=yes # Keyword SQL
+reserved_word_ansi-92/99_sqlexception=yes # Keyword SQLEXCEPTION
+reserved_word_ansi-92/99_sqlstate=yes # Keyword SQLSTATE
+reserved_word_ansi-92/99_sqlwarning=yes # Keyword SQLWARNING
+reserved_word_ansi-92/99_structure=no # Keyword STRUCTURE
+reserved_word_ansi-92/99_system_user=no # Keyword SYSTEM_USER
+reserved_word_ansi-92/99_table=yes # Keyword TABLE
+reserved_word_ansi-92/99_temporary=no # Keyword TEMPORARY
+reserved_word_ansi-92/99_then=yes # Keyword THEN
+reserved_word_ansi-92/99_time=no # Keyword TIME
+reserved_word_ansi-92/99_timestamp=no # Keyword TIMESTAMP
+reserved_word_ansi-92/99_timezone_hour=no # Keyword TIMEZONE_HOUR
+reserved_word_ansi-92/99_timezone_minute=no # Keyword TIMEZONE_MINUTE
+reserved_word_ansi-92/99_to=yes # Keyword TO
+reserved_word_ansi-92/99_trailing=yes # Keyword TRAILING
+reserved_word_ansi-92/99_transaction=no # Keyword TRANSACTION
+reserved_word_ansi-92/99_translation=no # Keyword TRANSLATION
+reserved_word_ansi-92/99_trigger=yes # Keyword TRIGGER
+reserved_word_ansi-92/99_true=yes # Keyword TRUE
+reserved_word_ansi-92/99_under=no # Keyword UNDER
+reserved_word_ansi-92/99_union=yes # Keyword UNION
+reserved_word_ansi-92/99_unique=yes # Keyword UNIQUE
+reserved_word_ansi-92/99_unknown=no # Keyword UNKNOWN
+reserved_word_ansi-92/99_update=yes # Keyword UPDATE
+reserved_word_ansi-92/99_usage=yes # Keyword USAGE
+reserved_word_ansi-92/99_user=no # Keyword USER
+reserved_word_ansi-92/99_using=yes # Keyword USING
+reserved_word_ansi-92/99_value=no # Keyword VALUE
+reserved_word_ansi-92/99_values=yes # Keyword VALUES
+reserved_word_ansi-92/99_varchar=yes # Keyword VARCHAR
+reserved_word_ansi-92/99_variable=no # Keyword VARIABLE
+reserved_word_ansi-92/99_varying=yes # Keyword VARYING
+reserved_word_ansi-92/99_view=no # Keyword VIEW
+reserved_word_ansi-92/99_when=yes # Keyword WHEN
+reserved_word_ansi-92/99_whenever=no # Keyword WHENEVER
+reserved_word_ansi-92/99_where=yes # Keyword WHERE
+reserved_word_ansi-92/99_while=yes # Keyword WHILE
+reserved_word_ansi-92/99_with=yes # Keyword WITH
+reserved_word_ansi-92/99_without=no # Keyword WITHOUT
+reserved_word_ansi-92/99_work=no # Keyword WORK
+reserved_word_ansi-92/99_write=yes # Keyword WRITE
+reserved_word_ansi-92/99_year=no # Keyword YEAR
+reserved_word_ansi-92/99_zone=no # Keyword ZONE
+reserved_word_ansi92_async=no # Keyword ASYNC
+reserved_word_ansi92_avg=no # Keyword AVG
+reserved_word_ansi92_between=yes # Keyword BETWEEN
+reserved_word_ansi92_bit_length=no # Keyword BIT_LENGTH
+reserved_word_ansi92_char_length=no # Keyword CHAR_LENGTH
+reserved_word_ansi92_character_length=no # Keyword CHARACTER_LENGTH
+reserved_word_ansi92_coalesce=no # Keyword COALESCE
+reserved_word_ansi92_convert=yes # Keyword CONVERT
+reserved_word_ansi92_count=no # Keyword COUNT
+reserved_word_ansi92_exists=yes # Keyword EXISTS
+reserved_word_ansi92_extract=no # Keyword EXTRACT
+reserved_word_ansi92_insensitive=yes # Keyword INSENSITIVE
+reserved_word_ansi92_lower=no # Keyword LOWER
+reserved_word_ansi92_max=no # Keyword MAX
+reserved_word_ansi92_min=no # Keyword MIN
+reserved_word_ansi92_nullif=no # Keyword NULLIF
+reserved_word_ansi92_octet_length=no # Keyword OCTET_LENGTH
+reserved_word_ansi92_oid=no # Keyword OID
+reserved_word_ansi92_operators=no # Keyword OPERATORS
+reserved_word_ansi92_others=no # Keyword OTHERS
+reserved_word_ansi92_overlaps=no # Keyword OVERLAPS
+reserved_word_ansi92_pendant=no # Keyword PENDANT
+reserved_word_ansi92_position=no # Keyword POSITION
+reserved_word_ansi92_private=no # Keyword PRIVATE
+reserved_word_ansi92_protected=no # Keyword PROTECTED
+reserved_word_ansi92_replace=yes # Keyword REPLACE
+reserved_word_ansi92_sensitive=yes # Keyword SENSITIVE
+reserved_word_ansi92_similar=no # Keyword SIMILAR
+reserved_word_ansi92_sqlcode=no # Keyword SQLCODE
+reserved_word_ansi92_sqlerror=no # Keyword SQLERROR
+reserved_word_ansi92_substring=no # Keyword SUBSTRING
+reserved_word_ansi92_sum=no # Keyword SUM
+reserved_word_ansi92_test=no # Keyword TEST
+reserved_word_ansi92_there=no # Keyword THERE
+reserved_word_ansi92_translate=no # Keyword TRANSLATE
+reserved_word_ansi92_trim=no # Keyword TRIM
+reserved_word_ansi92_type=no # Keyword TYPE
+reserved_word_ansi92_upper=no # Keyword UPPER
+reserved_word_ansi92_virtual=no # Keyword VIRTUAL
+reserved_word_ansi92_visible=no # Keyword VISIBLE
+reserved_word_ansi92_wait=no # Keyword WAIT
+reserved_word_ansi99_admin=no # Keyword ADMIN
+reserved_word_ansi99_aggregate=no # Keyword AGGREGATE
+reserved_word_ansi99_array=no # Keyword ARRAY
+reserved_word_ansi99_binary=yes # Keyword BINARY
+reserved_word_ansi99_blob=yes # Keyword BLOB
+reserved_word_ansi99_class=no # Keyword CLASS
+reserved_word_ansi99_clob=no # Keyword CLOB
+reserved_word_ansi99_condition=yes # Keyword CONDITION
+reserved_word_ansi99_constructor=no # Keyword CONSTRUCTOR
+reserved_word_ansi99_contains=no # Keyword CONTAINS
+reserved_word_ansi99_cube=no # Keyword CUBE
+reserved_word_ansi99_current_path=no # Keyword CURRENT_PATH
+reserved_word_ansi99_current_role=no # Keyword CURRENT_ROLE
+reserved_word_ansi99_datalink=no # Keyword DATALINK
+reserved_word_ansi99_deref=no # Keyword DEREF
+reserved_word_ansi99_destroy=no # Keyword DESTROY
+reserved_word_ansi99_destructor=no # Keyword DESTRUCTOR
+reserved_word_ansi99_deterministic=yes # Keyword DETERMINISTIC
+reserved_word_ansi99_do=no # Keyword DO
+reserved_word_ansi99_dynamic=no # Keyword DYNAMIC
+reserved_word_ansi99_every=no # Keyword EVERY
+reserved_word_ansi99_exit=yes # Keyword EXIT
+reserved_word_ansi99_expand=no # Keyword EXPAND
+reserved_word_ansi99_expanding=no # Keyword EXPANDING
+reserved_word_ansi99_free=no # Keyword FREE
+reserved_word_ansi99_function=no # Keyword FUNCTION
+reserved_word_ansi99_grouping=no # Keyword GROUPING
+reserved_word_ansi99_handler=no # Keyword HANDLER
+reserved_word_ansi99_hast=no # Keyword HAST
+reserved_word_ansi99_host=no # Keyword HOST
+reserved_word_ansi99_initialize=no # Keyword INITIALIZE
+reserved_word_ansi99_inout=yes # Keyword INOUT
+reserved_word_ansi99_iterate=yes # Keyword ITERATE
+reserved_word_ansi99_large=no # Keyword LARGE
+reserved_word_ansi99_lateral=no # Keyword LATERAL
+reserved_word_ansi99_localtime=yes # Keyword LOCALTIME
+reserved_word_ansi99_localtimestamp=yes # Keyword LOCALTIMESTAMP
+reserved_word_ansi99_locator=no # Keyword LOCATOR
+reserved_word_ansi99_meets=no # Keyword MEETS
+reserved_word_ansi99_modifies=yes # Keyword MODIFIES
+reserved_word_ansi99_nclob=no # Keyword NCLOB
+reserved_word_ansi99_normalize=no # Keyword NORMALIZE
+reserved_word_ansi99_ordinality=no # Keyword ORDINALITY
+reserved_word_ansi99_out=yes # Keyword OUT
+reserved_word_ansi99_parameter=no # Keyword PARAMETER
+reserved_word_ansi99_path=no # Keyword PATH
+reserved_word_ansi99_period=no # Keyword PERIOD
+reserved_word_ansi99_postfix=no # Keyword POSTFIX
+reserved_word_ansi99_precedes=no # Keyword PRECEDES
+reserved_word_ansi99_prefix=no # Keyword PREFIX
+reserved_word_ansi99_reads=yes # Keyword READS
+reserved_word_ansi99_redo=no # Keyword REDO
+reserved_word_ansi99_repeat=yes # Keyword REPEAT
+reserved_word_ansi99_result=no # Keyword RESULT
+reserved_word_ansi99_rollup=no # Keyword ROLLUP
+reserved_word_ansi99_sets=no # Keyword SETS
+reserved_word_ansi99_specific=yes # Keyword SPECIFIC
+reserved_word_ansi99_specifictype=no # Keyword SPECIFICTYPE
+reserved_word_ansi99_start=no # Keyword START
+reserved_word_ansi99_state=no # Keyword STATE
+reserved_word_ansi99_static=no # Keyword STATIC
+reserved_word_ansi99_succeeds=no # Keyword SUCCEEDS
+reserved_word_ansi99_terminate=no # Keyword TERMINATE
+reserved_word_ansi99_than=no # Keyword THAN
+reserved_word_ansi99_treat=no # Keyword TREAT
+reserved_word_ansi99_undo=yes # Keyword UNDO
+reserved_word_ansi99_until=no # Keyword UNTIL
+reserved_word_extra_access=no # Keyword ACCESS
+reserved_word_extra_analyze=yes # Keyword ANALYZE
+reserved_word_extra_audit=no # Keyword AUDIT
+reserved_word_extra_auto_increment=no # Keyword AUTO_INCREMENT
+reserved_word_extra_backup=no # Keyword BACKUP
+reserved_word_extra_bdb=no # Keyword BDB
+reserved_word_extra_berkeleydb=no # Keyword BERKELEYDB
+reserved_word_extra_bigint=yes # Keyword BIGINT
+reserved_word_extra_break=no # Keyword BREAK
+reserved_word_extra_browse=no # Keyword BROWSE
+reserved_word_extra_btree=no # Keyword BTREE
+reserved_word_extra_bulk=no # Keyword BULK
+reserved_word_extra_change=yes # Keyword CHANGE
+reserved_word_extra_checkpoint=no # Keyword CHECKPOINT
+reserved_word_extra_cluster=no # Keyword CLUSTER
+reserved_word_extra_clustered=no # Keyword CLUSTERED
+reserved_word_extra_columns=no # Keyword COLUMNS
+reserved_word_extra_comment=no # Keyword COMMENT
+reserved_word_extra_compress=no # Keyword COMPRESS
+reserved_word_extra_compute=no # Keyword COMPUTE
+reserved_word_extra_containstable=no # Keyword CONTAINSTABLE
+reserved_word_extra_database=yes # Keyword DATABASE
+reserved_word_extra_databases=yes # Keyword DATABASES
+reserved_word_extra_day_hour=yes # Keyword DAY_HOUR
+reserved_word_extra_day_minute=yes # Keyword DAY_MINUTE
+reserved_word_extra_day_second=yes # Keyword DAY_SECOND
+reserved_word_extra_dbcc=no # Keyword DBCC
+reserved_word_extra_delayed=yes # Keyword DELAYED
+reserved_word_extra_deny=no # Keyword DENY
+reserved_word_extra_disk=no # Keyword DISK
+reserved_word_extra_distinctrow=yes # Keyword DISTINCTROW
+reserved_word_extra_distributed=no # Keyword DISTRIBUTED
+reserved_word_extra_dummy=no # Keyword DUMMY
+reserved_word_extra_dump=no # Keyword DUMP
+reserved_word_extra_enclosed=yes # Keyword ENCLOSED
+reserved_word_extra_errlvl=no # Keyword ERRLVL
+reserved_word_extra_errors=no # Keyword ERRORS
+reserved_word_extra_escaped=yes # Keyword ESCAPED
+reserved_word_extra_exclusive=no # Keyword EXCLUSIVE
+reserved_word_extra_explain=yes # Keyword EXPLAIN
+reserved_word_extra_fields=no # Keyword FIELDS
+reserved_word_extra_file=no # Keyword FILE
+reserved_word_extra_fillfactor=no # Keyword FILLFACTOR
+reserved_word_extra_freetext=no # Keyword FREETEXT
+reserved_word_extra_freetexttable=no # Keyword FREETEXTTABLE
+reserved_word_extra_fulltext=yes # Keyword FULLTEXT
+reserved_word_extra_geometry=no # Keyword GEOMETRY
+reserved_word_extra_hash=no # Keyword HASH
+reserved_word_extra_high_priority=yes # Keyword HIGH_PRIORITY
+reserved_word_extra_holdlock=no # Keyword HOLDLOCK
+reserved_word_extra_hour_minute=yes # Keyword HOUR_MINUTE
+reserved_word_extra_hour_second=yes # Keyword HOUR_SECOND
+reserved_word_extra_identified=no # Keyword IDENTIFIED
+reserved_word_extra_identity_insert=no # Keyword IDENTITY_INSERT
+reserved_word_extra_identitycol=no # Keyword IDENTITYCOL
+reserved_word_extra_increment=no # Keyword INCREMENT
+reserved_word_extra_index=yes # Keyword INDEX
+reserved_word_extra_infile=yes # Keyword INFILE
+reserved_word_extra_initial=no # Keyword INITIAL
+reserved_word_extra_innodb=no # Keyword INNODB
+reserved_word_extra_keys=yes # Keyword KEYS
+reserved_word_extra_kill=yes # Keyword KILL
+reserved_word_extra_lineno=no # Keyword LINENO
+reserved_word_extra_lines=yes # Keyword LINES
+reserved_word_extra_load=yes # Keyword LOAD
+reserved_word_extra_lock=yes # Keyword LOCK
+reserved_word_extra_long=yes # Keyword LONG
+reserved_word_extra_longblob=yes # Keyword LONGBLOB
+reserved_word_extra_longtext=yes # Keyword LONGTEXT
+reserved_word_extra_low_priority=yes # Keyword LOW_PRIORITY
+reserved_word_extra_master_server_id=no # Keyword MASTER_SERVER_ID
+reserved_word_extra_maxextents=no # Keyword MAXEXTENTS
+reserved_word_extra_mediumblob=yes # Keyword MEDIUMBLOB
+reserved_word_extra_mediumint=yes # Keyword MEDIUMINT
+reserved_word_extra_mediumtext=yes # Keyword MEDIUMTEXT
+reserved_word_extra_middleint=yes # Keyword MIDDLEINT
+reserved_word_extra_minus=no # Keyword MINUS
+reserved_word_extra_minute_second=yes # Keyword MINUTE_SECOND
+reserved_word_extra_mlslabel=no # Keyword MLSLABEL
+reserved_word_extra_mode=no # Keyword MODE
+reserved_word_extra_mrg_myisam=no # Keyword MRG_MYISAM
+reserved_word_extra_noaudit=no # Keyword NOAUDIT
+reserved_word_extra_nocheck=no # Keyword NOCHECK
+reserved_word_extra_nocompress=no # Keyword NOCOMPRESS
+reserved_word_extra_nonclustered=no # Keyword NONCLUSTERED
+reserved_word_extra_nowait=no # Keyword NOWAIT
+reserved_word_extra_number=no # Keyword NUMBER
+reserved_word_extra_offline=no # Keyword OFFLINE
+reserved_word_extra_offsets=no # Keyword OFFSETS
+reserved_word_extra_online=no # Keyword ONLINE
+reserved_word_extra_opendatasource=no # Keyword OPENDATASOURCE
+reserved_word_extra_openquery=no # Keyword OPENQUERY
+reserved_word_extra_openrowset=no # Keyword OPENROWSET
+reserved_word_extra_openxml=no # Keyword OPENXML
+reserved_word_extra_optimize=yes # Keyword OPTIMIZE
+reserved_word_extra_optionally=yes # Keyword OPTIONALLY
+reserved_word_extra_outfile=yes # Keyword OUTFILE
+reserved_word_extra_over=no # Keyword OVER
+reserved_word_extra_pctfree=no # Keyword PCTFREE
+reserved_word_extra_percent=no # Keyword PERCENT
+reserved_word_extra_plan=no # Keyword PLAN
+reserved_word_extra_print=no # Keyword PRINT
+reserved_word_extra_proc=no # Keyword PROC
+reserved_word_extra_purge=yes # Keyword PURGE
+reserved_word_extra_raiserror=no # Keyword RAISERROR
+reserved_word_extra_raw=no # Keyword RAW
+reserved_word_extra_readtext=no # Keyword READTEXT
+reserved_word_extra_reconfigure=no # Keyword RECONFIGURE
+reserved_word_extra_regexp=yes # Keyword REGEXP
+reserved_word_extra_rename=yes # Keyword RENAME
+reserved_word_extra_replication=no # Keyword REPLICATION
+reserved_word_extra_require=yes # Keyword REQUIRE
+reserved_word_extra_resource=no # Keyword RESOURCE
+reserved_word_extra_restore=no # Keyword RESTORE
+reserved_word_extra_rlike=yes # Keyword RLIKE
+reserved_word_extra_rowcount=no # Keyword ROWCOUNT
+reserved_word_extra_rowguidcol=no # Keyword ROWGUIDCOL
+reserved_word_extra_rowid=no # Keyword ROWID
+reserved_word_extra_rownum=no # Keyword ROWNUM
+reserved_word_extra_rtree=no # Keyword RTREE
+reserved_word_extra_rule=no # Keyword RULE
+reserved_word_extra_save=no # Keyword SAVE
+reserved_word_extra_setuser=no # Keyword SETUSER
+reserved_word_extra_share=no # Keyword SHARE
+reserved_word_extra_show=yes # Keyword SHOW
+reserved_word_extra_shutdown=no # Keyword SHUTDOWN
+reserved_word_extra_soname=no # Keyword SONAME
+reserved_word_extra_spatial=yes # Keyword SPATIAL
+reserved_word_extra_sql_big_result=yes # Keyword SQL_BIG_RESULT
+reserved_word_extra_sql_calc_found_rows=yes # Keyword SQL_CALC_FOUND_ROWS
+reserved_word_extra_sql_small_result=yes # Keyword SQL_SMALL_RESULT
+reserved_word_extra_ssl=yes # Keyword SSL
+reserved_word_extra_starting=yes # Keyword STARTING
+reserved_word_extra_statistics=no # Keyword STATISTICS
+reserved_word_extra_straight_join=yes # Keyword STRAIGHT_JOIN
+reserved_word_extra_striped=no # Keyword STRIPED
+reserved_word_extra_successful=no # Keyword SUCCESSFUL
+reserved_word_extra_synonym=no # Keyword SYNONYM
+reserved_word_extra_sysdate=no # Keyword SYSDATE
+reserved_word_extra_tables=no # Keyword TABLES
+reserved_word_extra_terminated=yes # Keyword TERMINATED
+reserved_word_extra_textsize=no # Keyword TEXTSIZE
+reserved_word_extra_tinyblob=yes # Keyword TINYBLOB
+reserved_word_extra_tinyint=yes # Keyword TINYINT
+reserved_word_extra_tinytext=yes # Keyword TINYTEXT
+reserved_word_extra_top=no # Keyword TOP
+reserved_word_extra_tran=no # Keyword TRAN
+reserved_word_extra_truncate=no # Keyword TRUNCATE
+reserved_word_extra_tsequal=no # Keyword TSEQUAL
+reserved_word_extra_types=no # Keyword TYPES
+reserved_word_extra_uid=no # Keyword UID
+reserved_word_extra_unlock=yes # Keyword UNLOCK
+reserved_word_extra_unsigned=yes # Keyword UNSIGNED
+reserved_word_extra_updatetext=no # Keyword UPDATETEXT
+reserved_word_extra_use=yes # Keyword USE
+reserved_word_extra_user_resources=no # Keyword USER_RESOURCES
+reserved_word_extra_validate=no # Keyword VALIDATE
+reserved_word_extra_varbinary=yes # Keyword VARBINARY
+reserved_word_extra_varchar2=no # Keyword VARCHAR2
+reserved_word_extra_waitfor=no # Keyword WAITFOR
+reserved_word_extra_warnings=no # Keyword WARNINGS
+reserved_word_extra_writetext=no # Keyword WRITETEXT
+reserved_word_extra_xor=yes # Keyword XOR
+reserved_word_extra_year_month=yes # Keyword YEAR_MONTH
+reserved_word_extra_zerofill=yes # Keyword ZEROFILL
+right_outer_join=yes # right outer join
+rollback_metadata=no # rollback_metadata
+rowid=auto_increment # Type for row id
+safe_decimal_arithmetic=yes # safe decimal arithmetic
+select_constants=yes # Select constants
+select_limit=with LIMIT # LIMIT number of rows
+select_limit2=yes # SELECT with LIMIT #,#
+select_limit3=yes # SELECT with LIMIT # OFFSET #
+select_string_size=1048565 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=MySQL 5.3.1 MariaDB beta valgrind max debug # server version
+simple_joins=yes # ANSI SQL simple joins
+sorted_group_by=yes # Group by always sorted
+storage_of_float=round # Storage of float values
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=no # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=yes # temporary tables
+time_format_EUR=error # Supports HH.MM.SS (EUR) time format
+time_format_HHHHMMSS=yes # Supports HHHHmmSS time format
+time_format_ISO=yes # Supports HH:MM:SS (ISO) time format
+time_format_USA=error # Supports HH:MM:SS (AM|PM) time format
+time_format_inresult=iso # Time format in result
+transactions=yes # transactions
+truncate_table=yes # truncate
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=yes # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=yes # Type char(1 arg) binary
+type_extra_cidr=no # Type cidr
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_double=yes # Type double
+type_extra_enum(1_arg)=yes # Type enum(1 arg)
+type_extra_float(2_arg)=yes # Type float(2 arg)
+type_extra_float4=yes # Type float4
+type_extra_float8=yes # Type float8
+type_extra_image=no # Type image
+type_extra_inet=no # Type inet
+type_extra_int(1_arg)_zerofill=yes # Type int(1 arg) zerofill
+type_extra_int1=yes # Type int1
+type_extra_int2=yes # Type int2
+type_extra_int3=yes # Type int3
+type_extra_int4=yes # Type int4
+type_extra_int8=yes # Type int8
+type_extra_int_auto_increment=yes # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=yes # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=yes # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=yes # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_macaddr=no # Type macaddr
+type_extra_mediumint=yes # Type mediumint
+type_extra_mediumtext=yes # Type mediumtext
+type_extra_middleint=yes # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=yes # Type point
+type_extra_polygon=yes # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=yes # Type serial
+type_extra_set(1_arg)=yes # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=yes # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=yes # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=yes # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_boolean=yes # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_datetime=yes # Type datetime
+type_sql_datetime(1_arg)=yes # Type datetime(1 arg)
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_time(1_arg)=yes # Type time(1 arg)
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp(1_arg)=yes # Type timestamp(1 arg)
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+value_of_false=0 # Value of FALSE
+value_of_true=1 # Value of TRUE
+views=yes # views
+where_string_size=1048539 # constant string size in where
diff --git a/sql-bench/limits/oracle.cfg b/sql-bench/limits/oracle.cfg
new file mode 100644
index 00000000..ad2faf22
--- /dev/null
+++ b/sql-bench/limits/oracle.cfg
@@ -0,0 +1,505 @@
+#This file is automaticly generated by crash-me 1.44a
+
+NEG=yes # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=yes # Alter table add foreign key
+alter_add_multi_col=yes # Alter table add many columns
+alter_add_primary_key=with constraint # Alter table add primary key
+alter_add_unique=yes # Alter table add unique
+alter_alter_col=no # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_drop_constraint=yes # Alter table drop constraint
+alter_drop_foreign_key=with drop constraint # Alter table drop foreign key
+alter_drop_primary_key=drop primary key # Alter table drop primary key
+alter_drop_unique=with constraint # Alter table drop unique
+alter_modify_col=yes # Alter table modify column
+alter_rename_table=yes # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+automatic_rowid=no # Automatic rowid
+binary_numbers=no # binary numbers (0b1001)
+binary_strings=no # binary strings (b'0110')
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=yes # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=41 # Simultaneous connections (installation default)
+constraint_check=yes # Column constraints
+constraint_check_table=yes # Table constraints
+constraint_null=yes # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.45 # crash me version
+create_default=yes # default value for column
+create_default_func=no # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=no # create table from select
+cross_join=no # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_last=error # Supports 9999-12-31 dates
+date_one=error # Supports 0001-01-01 dates
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+end_colon=yes # allows end ';'
+except=no # except
+except_all=no # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=yes # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=yes # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=yes # Function CHR
+func_extra_concat_as_+=no # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=yes # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=yes # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=yes # Function INITCAP
+func_extra_instr=yes # Function LOCATE as INSTR
+func_extra_instr_oracle=yes # Function INSTR (Oracle syntax)
+func_extra_instrb=error # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=yes # Function LEAST
+func_extra_lengthb=error # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=yes # Function LN
+func_extra_log(m_n)=yes # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=yes # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=yes # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=yes # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=yes # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=error # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=error # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=yes # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=yes # Function TRUNC
+func_extra_uid=yes # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=no # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=error # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=no # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=yes # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=yes # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=error # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=no # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=no # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user()=yes # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=no # Function CHAR_LENGTH
+func_sql_char_length(constant)=no # Function CHAR_LENGTH(constant)
+func_sql_character_length=no # Function CHARACTER_LENGTH
+func_sql_coalesce=no # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_user=no # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif=no # Function NULLIF
+func_sql_octet_length=no # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_searched_case=yes # Function searched CASE
+func_sql_session_user=no # Function SESSION_USER
+func_sql_simple_case=no # Function simple CASE
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=yes # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # group on column with null values
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=yes # Group function STDDEV
+group_func_extra_variance=yes # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+has_true_false=no # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=no # hex numbers (0x41)
+hex_strings=no # hex strings (x'1ace')
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=no # inner join
+insert_empty_string=no # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=yes # intersect
+intersect_all=no # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=+64 # tables in join
+left_outer_join=no # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=8 # big expressions
+max_char_size=2000 # max char() size
+max_column_name=30 # column name length
+max_columns=1000 # Columns in table
+max_conditions=36392 # OR and AND in WHERE
+max_expressions=+10000 # simple expressions
+max_index=+64 # max index
+max_index_length=749 # index length
+max_index_name=30 # index name length
+max_index_part_length=2000 # max index part length
+max_index_parts=33 # index parts
+max_index_varchar_part_length=3209 # index varchar part length
+max_row_length=255000 # max table row length (without blobs)
+max_row_length_with_null=255000 # table row length with nulls (without blobs)
+max_select_alias_name=30 # select alias name length
+max_stack_expression=+2000 # stacked expressions
+max_table_alias_name=30 # table alias name length
+max_table_name=30 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=4000 # max varchar() size
+minus=yes # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_null_in_unique=yes # null in unique index
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+insert_multi_value=no # Value lists in INSERT
+natural_join=no # natural join
+natural_join_incompat=no # natural join (incompatible lists)
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=error # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique index
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Microsoft Windows 2000 [Version 5.00.2195] # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=yes # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=+64 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+right_outer_join=no # right outer join
+rowid=rowid # Type for row id
+select_constants=yes # Select constants
+select_limit=no # LIMIT number of rows
+select_limit2=no # SELECT with LIMIT #,#
+select_string_size=4000 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=no # SELECT without FROM
+server_version=Oracle 8.1.6.0.0 # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=undefined # Storage of float values
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+tempoary_table=no # temporary tables
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=yes # Type bfile
+type_extra_blob=yes # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_circle=no # Type circle
+type_extra_clob=yes # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=no # Type interval
+type_extra_line=no # Type line
+type_extra_long=yes # Type long
+type_extra_long_raw=yes # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=yes # Type mlslabel
+type_extra_money=no # Type money
+type_extra_nclob=yes # Type nclob
+type_extra_number=yes # Type number
+type_extra_number(1_arg)=yes # Type number(1 arg)
+type_extra_number(2_arg)=yes # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=yes # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=yes # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=yes # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=yes # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=no # Type interval day
+type_sql_interval_day_to_hour=no # Type interval day to hour
+type_sql_interval_day_to_minute=no # Type interval day to minute
+type_sql_interval_day_to_second=no # Type interval day to second
+type_sql_interval_hour=no # Type interval hour
+type_sql_interval_hour_to_minute=no # Type interval hour to minute
+type_sql_interval_hour_to_second=no # Type interval hour to second
+type_sql_interval_minute=no # Type interval minute
+type_sql_interval_minute_to_second=no # Type interval minute to second
+type_sql_interval_month=no # Type interval month
+type_sql_interval_second=no # Type interval second
+type_sql_interval_year=no # Type interval year
+type_sql_interval_year_to_month=no # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=no # Type time
+type_sql_timestamp=no # Type timestamp
+type_sql_timestamp_with_time_zone=no # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+views=yes # views
+where_string_size=4000 # constant string size in where
diff --git a/sql-bench/limits/pg.cfg b/sql-bench/limits/pg.cfg
new file mode 100644
index 00000000..9cb42f86
--- /dev/null
+++ b/sql-bench/limits/pg.cfg
@@ -0,0 +1,523 @@
+#This file is automaticly generated by crash-me 1.57
+
+NEG=yes # update of column= -column
+Need_cast_for_null=no # Need to cast NULL for arithmetic
+alter_add_col=yes # Alter table add column
+alter_add_constraint=yes # Alter table add constraint
+alter_add_foreign_key=no # Alter table add foreign key
+alter_add_multi_col=no # Alter table add many columns
+alter_add_primary_key=no # Alter table add primary key
+alter_add_unique=no # Alter table add unique
+alter_alter_col=yes # Alter table alter column default
+alter_change_col=no # Alter table change column
+alter_drop_col=no # Alter table drop column
+alter_drop_constraint=no # Alter table drop constraint
+alter_drop_foreign_key=no # Alter table drop foreign key
+alter_drop_primary_key=no # Alter table drop primary key
+alter_drop_unique=no # Alter table drop unique
+alter_modify_col=no # Alter table modify column
+alter_rename_table=yes # Alter table rename table
+atomic_updates=no # atomic updates
+automatic_rowid=no # Automatic row id
+binary_numbers=no # binary numbers (0b1001)
+binary_strings=yes # binary strings (b'0110')
+case_insensitive_strings=no # Case insensitive compare
+char_is_space_filled=yes # char are space filled
+column_alias=yes # Column alias
+columns_in_group_by=+64 # number of columns in group by
+columns_in_order_by=+64 # number of columns in order by
+comment_#=no # # as comment
+comment_--=yes # -- as comment (ANSI)
+comment_/**/=yes # /* */ as comment
+comment_//=no # // as comment
+compute=no # Compute
+connections=32 # Simultaneous connections (installation default)
+constraint_check=yes # Column constraints
+constraint_check_table=yes # Table constraints
+constraint_null=yes # NULL constraint (SyBase style)
+crash_me_safe=yes # crash me safe
+crash_me_version=1.57 # crash me version
+create_default=yes # default value for column
+create_default_func=yes # default value function for column
+create_if_not_exists=no # create table if not exists
+create_index=yes # create index
+create_schema=no # Create SCHEMA
+create_table_select=with AS # create table from select
+cross_join=yes # cross join (same as from a,b)
+date_as_string=yes # String functions on date columns
+date_infinity=no # Supports 'infinity dates
+date_last=yes # Supports 9999-12-31 dates
+date_one=yes # Supports 0001-01-01 dates
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=no # Supports 0000-00-00 dates
+domains=no # Domains (ANSI SQL)
+dont_require_cast_to_float=no # No need to cast from integer to float
+double_quotes=yes # Double '' as ' in strings
+drop_if_exists=no # drop table if exists
+drop_index=yes # drop index
+drop_requires_cascade=no # drop table require cascade/restrict
+drop_restrict=no # drop table with cascade/restrict
+end_colon=yes # allows end ';'
+except=yes # except
+except_all=yes # except all
+except_all_incompat=no # except all (incompatible lists)
+except_incompat=no # except (incompatible lists)
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=yes # Function <> in SELECT
+func_extra_==yes # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=yes # Function AND and OR in SELECT
+func_extra_ascii_char=no # Function ASCII_CHAR
+func_extra_ascii_code=no # Function ASCII_CODE
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=yes # Function automatic string->num convert
+func_extra_between=yes # Function BETWEEN in SELECT
+func_extra_binary_shifts=yes # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=yes # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=yes # Function CHR
+func_extra_concat_as_+=error # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=yes # Function IN on numbers in SELECT
+func_extra_in_str=yes # Function IN on strings in SELECT
+func_extra_initcap=yes # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instr_oracle=no # Function INSTR (Oracle syntax)
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=yes # Function LIKE in SELECT
+func_extra_like_escape=yes # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=yes # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=yes # Function LPAD
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=yes # Function NOT in SELECT
+func_extra_not_between=yes # Function NOT BETWEEN in SELECT
+func_extra_not_like=yes # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_paste=no # Function PASTE
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=yes # Function ROUND(1 arg)
+func_extra_rpad=yes # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_sysdate=no # Function SYSDATE
+func_extra_tail=no # Function TAIL
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=yes # Function TRANSLATE
+func_extra_trim_many_char=yes # Function TRIM; Many char extension
+func_extra_trim_substring=error # Function TRIM; Substring extension
+func_extra_trunc=yes # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=yes # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=yes # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_extra_~*=yes # Function ~* (case insensitive compare)
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=no # Function CEILING
+func_odbc_char=no # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=no # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=no # Function LOG
+func_odbc_log10=no # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=no # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=no # Function SPACE
+func_odbc_sqrt=no # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_cast=yes # Function CAST
+func_sql_char_length=yes # Function CHAR_LENGTH
+func_sql_char_length(constant)=yes # Function CHAR_LENGTH(constant)
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_coalesce=yes # Function COALESCE
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=yes # Function CURRENT_DATE
+func_sql_current_time=yes # Function CURRENT_TIME
+func_sql_current_timestamp=yes # Function CURRENT_TIMESTAMP
+func_sql_current_user=yes # Function CURRENT_USER
+func_sql_extract_sql=yes # Function EXTRACT
+func_sql_localtime=no # Function LOCALTIME
+func_sql_localtimestamp=no # Function LOCALTIMESTAMP
+func_sql_lower=yes # Function LOWER
+func_sql_nullif_num=yes # Function NULLIF with numbers
+func_sql_nullif_string=yes # Function NULLIF with strings
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_searched_case=yes # Function searched CASE
+func_sql_session_user=yes # Function SESSION_USER
+func_sql_simple_case=yes # Function simple CASE
+func_sql_substring=yes # Function ANSI SQL SUBSTRING
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=yes # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_sql_user=yes # Function USER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=yes # Group by alias
+group_by_null=yes # Group on column with null values
+group_by_position=yes # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_count_distinct_list=no # Group function COUNT(DISTINCT expr,expr,...)
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=yes # Group function STDDEV
+group_func_extra_variance=yes # Group function VARIANCE
+group_func_sql_any=no # Group function ANY
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT(DISTINCT expr)
+group_func_sql_every=no # Group function EVERY
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_some=no # Group function SOME
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+group_on_unused=yes # Group on unused column
+has_true_false=yes # TRUE and FALSE
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+hex_numbers=no # hex numbers (0x41)
+hex_strings=yes # hex strings (x'1ace')
+ignore_end_space=yes # Ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+inner_join=yes # inner join
+insert_empty_string=yes # insert empty string
+insert_multi_value=no # INSERT with Value lists
+insert_select=yes # insert INTO ... SELECT ...
+insert_with_set=no # INSERT with set syntax
+intersect=yes # intersect
+intersect_all=yes # intersect all
+intersect_all_incompat=no # intersect all (incompatible lists)
+intersect_incompat=no # intersect (incompatible lists)
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=yes # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=yes # LIKE on numbers
+lock_tables=yes # lock table
+logical_value=1 # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=+8000000 # max char() size
+max_column_name=+512 # column name length
+max_columns=1600 # Columns in table
+max_conditions=19994 # OR and AND in WHERE
+max_expressions=9999 # simple expressions
+max_index=+64 # max index
+max_index_length=+8192 # index length
+max_index_name=+512 # index name length
+max_index_part_length=235328 # max index part length
+max_index_parts=16 # index parts
+max_index_varchar_part_length=235328 # index varchar part length
+max_row_length=64519 # max table row length (without blobs)
+max_row_length_with_null=64519 # table row length with nulls (without blobs)
+max_select_alias_name=+512 # select alias name length
+max_stack_expression=+2000 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=+512 # table name length
+max_text_size=+8000000 # max text or blob size
+max_unique_index=+64 # unique indexes
+max_varchar_size=+8000000 # max varchar() size
+minus=no # minus
+minus_incompat=no # minus (incompatible lists)
+minus_neg=no # Calculate 1--1
+multi_drop=yes # many tables to drop table
+multi_null_in_unique=yes # null in unique index
+multi_strings=yes # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=yes # natural join
+natural_join_incompat=yes # natural join (incompatible lists)
+natural_left_outer_join=yes # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=yes # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique index
+null_num_expr=yes # Is 1+NULL = NULL
+nulls_in_unique=yes # null combination in unique index
+odbc_left_outer_join=no # left outer join odbc style
+operating_system=Linux 2.4.0-64GB-SMP i686 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_function=yes # Order by function
+order_by_position=yes # Order by position
+order_by_remember_desc=no # Order by DESC is remembered
+order_on_unused=yes # Order by on unused column
+primary_key_in_create=yes # primary key in create table
+psm_functions=no # PSM functions (ANSI SQL)
+psm_modules=no # PSM modules (ANSI SQL)
+psm_procedures=no # PSM procedures (ANSI SQL)
+psm_trigger=no # Triggers (ANSI SQL)
+query_size=16777216 # query size
+quote_ident_with_"=no # " as identifier quote (ANSI SQL)
+quote_ident_with_[=no # [] as identifier quote
+quote_ident_with_`=no # ` as identifier quote
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=+64 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+rename_table=no # rename table
+repeat_string_size=+8000000 # return string size from function
+right_outer_join=yes # right outer join
+rowid=oid # Type for row id
+select_constants=yes # Select constants
+select_limit=with LIMIT # LIMIT number of rows
+select_limit2=yes # SELECT with LIMIT #,#
+select_string_size=16777207 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=PostgreSQL version 7.1.1 # server version
+simple_joins=yes # ANSI SQL simple joins
+storage_of_float=round # Storage of float values
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_name_case=yes # case independent table names
+table_wildcard=yes # Select table_name.*
+temporary_table=yes # temporary tables
+transactions=yes # transactions
+truncate_table=yes # truncate
+type_extra_abstime=yes # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=yes # Type bool
+type_extra_box=yes # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_cidr=yes # Type cidr
+type_extra_circle=yes # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_double=no # Type double
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_extra_float(2_arg)=no # Type float(2 arg)
+type_extra_float4=yes # Type float4
+type_extra_float8=yes # Type float8
+type_extra_image=no # Type image
+type_extra_inet=yes # Type inet
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=yes # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=yes # Type int4
+type_extra_int8=yes # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_int_identity=no # Type int not null identity
+type_extra_int_unsigned=no # Type int unsigned
+type_extra_interval=yes # Type interval
+type_extra_line=yes # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=yes # Type lseg
+type_extra_macaddr=yes # Type macaddr
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_number(2_arg)=no # Type number(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=yes # Type path
+type_extra_point=yes # Type point
+type_extra_polygon=yes # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=yes # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=yes # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=yes # Type timespan
+type_extra_uint=no # Type uint
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=yes # Type bigint
+type_odbc_binary(1_arg)=no # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_odbc_tinyint=no # Type tinyint
+type_odbc_varbinary(1_arg)=no # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=yes # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=yes # Type bit varying(1 arg)
+type_sql_boolean=yes # Type boolean
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_day=yes # Type interval day
+type_sql_interval_day_to_hour=yes # Type interval day to hour
+type_sql_interval_day_to_minute=yes # Type interval day to minute
+type_sql_interval_day_to_second=yes # Type interval day to second
+type_sql_interval_hour=yes # Type interval hour
+type_sql_interval_hour_to_minute=yes # Type interval hour to minute
+type_sql_interval_hour_to_second=yes # Type interval hour to second
+type_sql_interval_minute=yes # Type interval minute
+type_sql_interval_minute_to_second=yes # Type interval minute to second
+type_sql_interval_month=yes # Type interval month
+type_sql_interval_second=yes # Type interval second
+type_sql_interval_year=yes # Type interval year
+type_sql_interval_year_to_month=yes # Type interval year to month
+type_sql_national_char_varying(1_arg)=yes # Type national char varying(1 arg)
+type_sql_national_character(1_arg)=yes # Type national character(1 arg)
+type_sql_national_character_varying(1_arg)=yes # Type national character varying(1 arg)
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_sql_nchar_varying(1_arg)=yes # Type nchar varying(1 arg)
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_smallint=yes # Type smallint
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_timestamp_with_time_zone=yes # Type timestamp with time zone
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+union_all_incompat=yes # union all (incompatible lists)
+union_incompat=yes # union (incompatible lists)
+unique_in_create=yes # unique in create table
+unique_null_in_create=yes # unique null in create
+views=yes # views
+where_string_size=16777181 # constant string size in where
diff --git a/sql-bench/limits/solid-nt4.cfg b/sql-bench/limits/solid-nt4.cfg
new file mode 100644
index 00000000..3a5c387c
--- /dev/null
+++ b/sql-bench/limits/solid-nt4.cfg
@@ -0,0 +1,422 @@
+#This file is automaticly generated by crash-me 1.19a
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=no # /* */ as comment
+compute=no # Compute
+connections=1000 # Simultaneous connections
+crash_me_safe=no # crash me safe
+crash_me_version=1.19a # crash me version
+create_default=no # default value for column
+create_index=yes # create index
+cross_join=yes # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=yes # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_index=yes # drop index
+except=yes # except
+except_all=yes # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=yes # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_max_num=no # Function MAX on numbers
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_min_num=no # Function MIN on numbers
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=yes # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=error # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user=yes # Function USER
+func_odbc_user()=no # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=yes # Function BIT_LENGTH
+func_sql_case=yes # Function CASE
+func_sql_cast=yes # Function CAST
+func_sql_char_length=yes # Function CHAR_LENGTH
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_date()=no # Function CURRENT_DATE()
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_time()=no # Function CURRENT_TIME()
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP()
+func_sql_lower=yes # Function LOWER
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_extra_sysdate=no # Function SYSDATE
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=yes # Group by alias
+group_by_null=yes # Test nulls in group by
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+intersect=yes # intersect
+intersect_all=yes # intersect all
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=65489 # max char() size
+max_column_name=254 # column name length
+max_columns=1000 # Columns in table
+max_conditions=1518 # OR and AND in WHERE
+max_expressions=3093 # simple expressions
+max_index=+64 # max index
+max_index_length=+8192 # index length
+max_index_name=254 # index name length
+max_index_part_length=65485 # max index part length
+max_index_parts=63 # index parts
+max_index_varchar_part_length=65485 # index varchar part length
+max_row_length=2634 # max table row length (without blobs)
+max_row_length_with_null=2634 # table row length with nulls (without blobs)
+max_select_alias_name=+512 # select alias name length
+max_stack_expression=48 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=254 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=65489 # max varchar() size
+minus=no # minus
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=yes # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Windows NT Version 4.0 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_position=yes # Order by position
+primary_key_in_create=yes # primary key in create table
+query_size=65520 # query size
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=14 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+repeat_string_size=254 # return string size from function
+right_outer_join=yes # right outer join
+select_constants=yes # Select constants
+select_string_size=6185 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=Solid version ??? # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_wildcard=yes # Select table_name.*
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_char16=no # Type char16
+type_extra_char2=no # Type char2
+type_extra_char4=no # Type char4
+type_extra_char8=no # Type char8
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=yes # Type long varbinary
+type_extra_long_varchar(1_arg)=yes # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_nvarchar(2_arg)=no # Type nvarchar(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_sql_smallint=yes # Type smallint
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_extra_double=no # Type double
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_extra_float(2_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_year=no # Type interval year
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=254 # constant string size in where
diff --git a/sql-bench/limits/solid.cfg b/sql-bench/limits/solid.cfg
new file mode 100644
index 00000000..88638a1a
--- /dev/null
+++ b/sql-bench/limits/solid.cfg
@@ -0,0 +1,422 @@
+#This file is automaticly generated by crash-me 1.19a
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=no # /* */ as comment
+compute=no # Compute
+connections=248 # Simultaneous connections
+crash_me_safe=yes # crash me safe
+crash_me_version=1.19a # crash me version
+create_default=no # default value for column
+create_index=yes # create index
+cross_join=yes # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates
+date_zero=yes # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_index=yes # drop index
+except=yes # except
+except_all=yes # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=yes # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=no # Function MOD as %
+func_extra_&=no # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_atn2=no # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=no # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=yes # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=no # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=no # Function DATEADD
+func_extra_datediff=no # Function DATEDIFF
+func_extra_datename=no # Function DATENAME
+func_extra_datepart=no # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=no # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_max_num=no # Function MAX on numbers
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_min_num=no # Function MIN on numbers
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=no # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=no # Function REPLICATE
+func_extra_reverse=no # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=no # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=no # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=no # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=yes # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=yes # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=yes # Function CURDATE
+func_odbc_curtime=yes # Function CURTIME
+func_odbc_database=yes # Function DATABASE
+func_odbc_dayname=yes # Function DAYNAME
+func_odbc_dayofmonth=yes # Function DAYOFMONTH
+func_odbc_dayofweek=yes # Function DAYOFWEEK
+func_odbc_dayofyear=yes # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=no # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=yes # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=yes # Function HOUR
+func_odbc_hour_time=yes # Function ANSI HOUR
+func_odbc_ifnull=yes # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=yes # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=yes # Function REAL LENGTH
+func_odbc_length_without_space=error # Function ODBC LENGTH
+func_odbc_locate_2=yes # Function LOCATE(2 arg)
+func_odbc_locate_3=yes # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=yes # Function MINUTE
+func_odbc_mod=yes # Function MOD
+func_odbc_month=yes # Function MONTH
+func_odbc_monthname=yes # Function MONTHNAME
+func_odbc_now=yes # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=yes # Function QUARTER
+func_odbc_radians=yes # Function RADIANS
+func_odbc_rand=no # Function RAND
+func_odbc_repeat=yes # Function REPEAT
+func_odbc_replace=yes # Function REPLACE
+func_odbc_right=no # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=yes # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=no # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=yes # Function TRUNCATE
+func_odbc_ucase=yes # Function UCASE
+func_odbc_user=yes # Function USER
+func_odbc_user()=no # Function USER()
+func_odbc_week=yes # Function WEEK
+func_odbc_year=yes # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=yes # Function BIT_LENGTH
+func_sql_case=yes # Function CASE
+func_sql_cast=yes # Function CAST
+func_sql_char_length=yes # Function CHAR_LENGTH
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_concat_as_||=yes # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_date()=no # Function CURRENT_DATE()
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_time()=no # Function CURRENT_TIME()
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP()
+func_sql_lower=yes # Function LOWER
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=yes # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_extra_sysdate=no # Function SYSDATE
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=yes # Group by alias
+group_by_null=yes # Test nulls in group by
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=no # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+intersect=yes # intersect
+intersect_all=yes # intersect all
+join_tables=+64 # tables in join
+left_outer_join=yes # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=1 # big expressions
+max_char_size=65489 # max char() size
+max_column_name=254 # column name length
+max_columns=1000 # Columns in table
+max_conditions=5886 # OR and AND in WHERE
+max_expressions=126 # simple expressions
+max_index=+64 # max index
+max_index_length=+8192 # index length
+max_index_name=254 # index name length
+max_index_part_length=65485 # max index part length
+max_index_parts=63 # index parts
+max_index_varchar_part_length=65485 # index varchar part length
+max_row_length=2634 # max table row length (without blobs)
+max_row_length_with_null=2634 # table row length with nulls (without blobs)
+max_select_alias_name=254 # select alias name length
+max_stack_expression=48 # stacked expressions
+max_table_alias_name=+512 # table alias name length
+max_table_name=254 # table name length
+max_unique_index=+64 # unique indexes
+max_varchar_size=65489 # max varchar() size
+minus=no # minus
+minus_neg=no # Calculate 1--1
+multi_drop=no # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=yes # Is 'a' || NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=no # null in unique
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Linux 2.0.34 i586 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_position=yes # Order by position
+primary_key_in_create=yes # primary key in create table
+query_size=65520 # query size
+quote_with_"=no # Allows ' and " as string markers
+recursive_subqueries=14 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=yes # Remembers end space in varchar()
+repeat_string_size=254 # return string size from function
+right_outer_join=yes # right outer join
+select_constants=yes # Select constants
+select_string_size=252 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=SOLID Server - v.02.30.0026 (Linux ix86) # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=yes # Table alias
+table_wildcard=yes # Select table_name.*
+transactions=yes # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_char16=no # Type char16
+type_extra_char2=no # Type char2
+type_extra_char4=no # Type char4
+type_extra_char8=no # Type char8
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=no # Type datetime
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=no # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=yes # Type long varbinary
+type_extra_long_varchar(1_arg)=yes # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=no # Type money
+type_sql_nchar(1_arg)=no # Type nchar(1 arg)
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_nvarchar(2_arg)=no # Type nvarchar(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=no # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=no # Type smallmoney
+type_extra_text=no # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=no # Type datetime
+type_sql_smallint=yes # Type smallint
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=no # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=no # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=yes # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_extra_double=no # Type double
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_extra_float(2_arg)=yes # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_year=no # Type interval year
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_time=yes # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=254 # constant string size in where
diff --git a/sql-bench/limits/sybase.cfg b/sql-bench/limits/sybase.cfg
new file mode 100644
index 00000000..910c8e9f
--- /dev/null
+++ b/sql-bench/limits/sybase.cfg
@@ -0,0 +1,422 @@
+#This file is automaticly generated by crash-me 1.19a
+
+NEG=yes # update of column= -column
+alter_add_col=yes # Alter table add column
+alter_change_col=no # Alter table change column
+alter_drop_col=yes # Alter table drop column
+alter_modify_col=no # Alter table modify column
+alter_rename_table=no # Alter table rename table
+atomic_updates=yes # atomic updates
+atomic_updates_with_rollback=yes # atomic_updates_with_rollback
+binary_items=yes # binary items (0x41)
+case_insensitive_strings=no # case insensitive compare
+char_is_space_filled=no # char are space filled
+column_alias=yes # Column alias
+comment_#=no # # as comment
+comment_--=yes # -- as comment
+comment_/**/=yes # /* */ as comment
+compute=yes # Compute
+connections=25 # Simultaneous connections
+crash_me_safe=yes # crash me safe
+crash_me_version=1.19a # crash me version
+create_default=no # default value for column
+create_index=yes # create index
+cross_join=no # cross join (same as from a,b)
+date_as_string=no # String functions on date columns
+date_with_YY=no # Supports YY-MM-DD dates
+date_zero=no # Supports 0000-00-00 dates
+double_quotes=yes # Double '' as ' in strings
+drop_index=with 'table.index' # drop index
+except=no # except
+except_all=no # except all
+float_int_expr=yes # mixing of integer and float in expression
+foreign_key=yes # foreign keys
+foreign_key_syntax=yes # foreign key syntax
+full_outer_join=no # full outer join
+func_extra_!=no # Function NOT as '!' in SELECT
+func_extra_%=yes # Function MOD as %
+func_extra_&=yes # Function & (bitwise and)
+func_extra_&&=no # Function AND as '&&'
+func_extra_<>=no # Function <> in SELECT
+func_extra_==no # Function =
+func_extra_add_months=no # Function ADD_MONTHS
+func_extra_and_or=no # Function AND and OR in SELECT
+func_extra_atn2=yes # Function ATN2
+func_extra_auto_num2string=no # Function automatic num->string convert
+func_extra_auto_string2num=no # Function automatic string->num convert
+func_extra_between=no # Function BETWEEN in SELECT
+func_extra_binary_shifts=no # Function << and >> (bitwise shifts)
+func_extra_bit_count=no # Function BIT_COUNT
+func_extra_ceil=no # Function CEIL
+func_extra_charindex=yes # Function CHARINDEX
+func_extra_chr=no # Function CHR
+func_extra_concat_as_+=yes # Function concatenation with +
+func_extra_concat_list=no # Function CONCAT(list)
+func_extra_convert=yes # Function CONVERT
+func_extra_cosh=no # Function COSH
+func_extra_date_format=no # Function DATE_FORMAT
+func_extra_dateadd=yes # Function DATEADD
+func_extra_datediff=yes # Function DATEDIFF
+func_extra_datename=yes # Function DATENAME
+func_extra_datepart=yes # Function DATEPART
+func_extra_elt=no # Function ELT
+func_extra_encrypt=no # Function ENCRYPT
+func_extra_field=no # Function FIELD
+func_extra_format=no # Function FORMAT
+func_extra_from_days=no # Function FROM_DAYS
+func_extra_from_unixtime=no # Function FROM_UNIXTIME
+func_extra_getdate=yes # Function GETDATE
+func_extra_greatest=no # Function GREATEST
+func_extra_if=no # Function IF
+func_extra_in_num=no # Function IN on numbers in SELECT
+func_extra_in_str=no # Function IN on strings in SELECT
+func_extra_initcap=no # Function INITCAP
+func_extra_instr=no # Function LOCATE as INSTR
+func_extra_instrb=no # Function INSTRB
+func_extra_interval=no # Function INTERVAL
+func_extra_last_day=no # Function LAST_DAY
+func_extra_last_insert_id=no # Function LAST_INSERT_ID
+func_extra_least=no # Function LEAST
+func_extra_lengthb=no # Function LENGTHB
+func_extra_like=no # Function LIKE in SELECT
+func_extra_like_escape=no # Function LIKE ESCAPE in SELECT
+func_extra_ln=no # Function LN
+func_extra_log(m_n)=no # Function LOG(m,n)
+func_extra_logn=no # Function LOGN
+func_extra_lpad=no # Function LPAD
+func_extra_max_num=no # Function MAX on numbers
+func_extra_mdy=no # Function MDY
+func_extra_mid=no # Function SUBSTRING as MID
+func_extra_min_num=no # Function MIN on numbers
+func_extra_months_between=no # Function MONTHS_BETWEEN
+func_extra_not=no # Function NOT in SELECT
+func_extra_not_between=no # Function NOT BETWEEN in SELECT
+func_extra_not_like=no # Function NOT LIKE in SELECT
+func_extra_odbc_convert=no # Function ODBC CONVERT
+func_extra_password=no # Function PASSWORD
+func_extra_patindex=yes # Function PATINDEX
+func_extra_period_add=no # Function PERIOD_ADD
+func_extra_period_diff=no # Function PERIOD_DIFF
+func_extra_pow=no # Function POW
+func_extra_range=no # Function RANGE
+func_extra_regexp=no # Function REGEXP in SELECT
+func_extra_replicate=yes # Function REPLICATE
+func_extra_reverse=yes # Function REVERSE
+func_extra_root=no # Function ROOT
+func_extra_round1=no # Function ROUND(1 arg)
+func_extra_rpad=no # Function RPAD
+func_extra_sec_to_time=no # Function SEC_TO_TIME
+func_extra_sinh=no # Function SINH
+func_extra_str=yes # Function STR
+func_extra_strcmp=no # Function STRCMP
+func_extra_stuff=yes # Function STUFF
+func_extra_substrb=no # Function SUBSTRB
+func_extra_substring_index=no # Function SUBSTRING_INDEX
+func_extra_tanh=no # Function TANH
+func_extra_time_to_sec=no # Function TIME_TO_SEC
+func_extra_to_days=no # Function TO_DAYS
+func_extra_translate=no # Function TRANSLATE
+func_extra_trim_many_char=no # Function TRIM; Many char extension
+func_extra_trim_substring=no # Function TRIM; Substring extension
+func_extra_trunc=no # Function TRUNC
+func_extra_uid=no # Function UID
+func_extra_unix_timestamp=no # Function UNIX_TIMESTAMP
+func_extra_userenv=no # Function USERENV
+func_extra_version=no # Function VERSION
+func_extra_weekday=no # Function WEEKDAY
+func_extra_|=yes # Function | (bitwise or)
+func_extra_||=no # Function OR as '||'
+func_odbc_abs=yes # Function ABS
+func_odbc_acos=yes # Function ACOS
+func_odbc_ascii=yes # Function ASCII
+func_odbc_asin=yes # Function ASIN
+func_odbc_atan=yes # Function ATAN
+func_odbc_atan2=no # Function ATAN2
+func_odbc_ceiling=yes # Function CEILING
+func_odbc_char=yes # Function CHAR
+func_odbc_concat=no # Function CONCAT(2 arg)
+func_odbc_cos=yes # Function COS
+func_odbc_cot=yes # Function COT
+func_odbc_curdate=no # Function CURDATE
+func_odbc_curtime=no # Function CURTIME
+func_odbc_database=no # Function DATABASE
+func_odbc_dayname=no # Function DAYNAME
+func_odbc_dayofmonth=no # Function DAYOFMONTH
+func_odbc_dayofweek=no # Function DAYOFWEEK
+func_odbc_dayofyear=no # Function DAYOFYEAR
+func_odbc_degrees=yes # Function DEGREES
+func_odbc_difference=yes # Function DIFFERENCE()
+func_odbc_exp=yes # Function EXP
+func_odbc_extract=no # Function EXTRACT
+func_odbc_floor=yes # Function FLOOR
+func_odbc_fn_left=yes # Function ODBC syntax LEFT & RIGHT
+func_odbc_hour=no # Function HOUR
+func_odbc_hour_time=no # Function ANSI HOUR
+func_odbc_ifnull=no # Function IFNULL
+func_odbc_insert=no # Function INSERT
+func_odbc_lcase=no # Function LCASE
+func_odbc_left=no # Function LEFT
+func_odbc_length=no # Function REAL LENGTH
+func_odbc_length_without_space=no # Function ODBC LENGTH
+func_odbc_locate_2=no # Function LOCATE(2 arg)
+func_odbc_locate_3=no # Function LOCATE(3 arg)
+func_odbc_log=yes # Function LOG
+func_odbc_log10=yes # Function LOG10
+func_odbc_ltrim=yes # Function LTRIM
+func_odbc_minute=no # Function MINUTE
+func_odbc_mod=no # Function MOD
+func_odbc_month=no # Function MONTH
+func_odbc_monthname=no # Function MONTHNAME
+func_odbc_now=no # Function NOW
+func_odbc_pi=yes # Function PI
+func_odbc_power=yes # Function POWER
+func_odbc_quarter=no # Function QUARTER
+func_odbc_radians=error # Function RADIANS
+func_odbc_rand=yes # Function RAND
+func_odbc_repeat=no # Function REPEAT
+func_odbc_replace=no # Function REPLACE
+func_odbc_right=yes # Function RIGHT
+func_odbc_round=yes # Function ROUND(2 arg)
+func_odbc_rtrim=yes # Function RTRIM
+func_odbc_second=no # Function SECOND
+func_odbc_sign=yes # Function SIGN
+func_odbc_sin=yes # Function SIN
+func_odbc_soundex=yes # Function SOUNDEX
+func_odbc_space=yes # Function SPACE
+func_odbc_sqrt=yes # Function SQRT
+func_odbc_substring=yes # Function ODBC SUBSTRING
+func_odbc_tan=yes # Function TAN
+func_odbc_timestampadd=no # Function TIMESTAMPADD
+func_odbc_timestampdiff=no # Function TIMESTAMPDIFF
+func_odbc_truncate=no # Function TRUNCATE
+func_odbc_ucase=no # Function UCASE
+func_odbc_user=yes # Function USER
+func_odbc_user()=no # Function USER()
+func_odbc_week=no # Function WEEK
+func_odbc_year=no # Function YEAR
+func_sql_+=yes # Function +, -, * and /
+func_sql_bit_length=no # Function BIT_LENGTH
+func_sql_case=yes # Function CASE
+func_sql_cast=no # Function CAST
+func_sql_char_length=yes # Function CHAR_LENGTH
+func_sql_character_length=yes # Function CHARACTER_LENGTH
+func_sql_concat_as_||=no # Function concatenation with ||
+func_sql_current_date=no # Function CURRENT_DATE
+func_sql_current_date()=no # Function CURRENT_DATE()
+func_sql_current_time=no # Function CURRENT_TIME
+func_sql_current_time()=no # Function CURRENT_TIME()
+func_sql_current_timestamp=no # Function CURRENT_TIMESTAMP
+func_sql_current_timestamp()=no # Function CURRENT_TIMESTAMP()
+func_sql_lower=yes # Function LOWER
+func_sql_octet_length=yes # Function OCTET_LENGTH
+func_sql_position=no # Function POSITION
+func_sql_session_user=no # Function SESSION_USER
+func_sql_substring=no # Function ANSI SQL SUBSTRING
+func_extra_sysdate=no # Function SYSDATE
+func_sql_system_user=no # Function SYSTEM_USER
+func_sql_trim=no # Function TRIM
+func_sql_upper=yes # Function UPPER
+func_where_between=yes # Function BETWEEN
+func_where_eq_all=yes # Function = ALL
+func_where_eq_any=yes # Function = ANY
+func_where_eq_some=yes # Function = SOME
+func_where_exists=yes # Function EXISTS
+func_where_in_num=yes # Function IN on numbers
+func_where_like=yes # Function LIKE
+func_where_like_escape=yes # Function LIKE ESCAPE
+func_where_match=no # Function MATCH
+func_where_match_unique=no # Function MATCH UNIQUE
+func_where_matches=no # Function MATCHES
+func_where_not_between=yes # Function NOT BETWEEN
+func_where_not_exists=yes # Function NOT EXISTS
+func_where_not_like=yes # Function NOT LIKE
+func_where_not_unique=no # Function NOT UNIQUE
+func_where_unique=no # Function UNIQUE
+functions=yes # Functions
+group_by=yes # Group by
+group_by_alias=no # Group by alias
+group_by_null=yes # Test nulls in group by
+group_by_position=no # Group by position
+group_distinct_functions=yes # Group functions with distinct
+group_func_extra_bit_and=no # Group function BIT_AND
+group_func_extra_bit_or=no # Group function BIT_OR
+group_func_extra_std=no # Group function STD
+group_func_extra_stddev=no # Group function STDDEV
+group_func_extra_variance=no # Group function VARIANCE
+group_func_sql_avg=yes # Group function AVG
+group_func_sql_count_*=yes # Group function COUNT (*)
+group_func_sql_count_column=yes # Group function COUNT column name
+group_func_sql_count_distinct=yes # Group function COUNT DISTINCT column name
+group_func_sql_max=yes # Group function MAX on numbers
+group_func_sql_max_str=yes # Group function MAX on strings
+group_func_sql_min=yes # Group function MIN on numbers
+group_func_sql_min_str=yes # Group function MIN on strings
+group_func_sql_sum=yes # Group function SUM
+group_functions=yes # Group functions
+having=yes # Having
+having_with_alias=no # Having on alias
+having_with_group=yes # Having with group function
+ignore_end_space=yes # ignore end space in compare
+index_in_create=no # index in create table
+index_namespace=yes # different namespace for index
+index_parts=no # index on column part (extension)
+insert_empty_string=yes # insert empty string
+insert_select=yes # insert INTO ... SELECT ...
+intersect=no # intersect
+intersect_all=no # intersect all
+join_tables=16 # tables in join
+left_outer_join=no # left outer join
+left_outer_join_using=no # left outer join using
+like_with_column=yes # column LIKE column
+like_with_number=no # LIKE on numbers
+lock_tables=no # lock table
+logical_value=not supported # Value of logical operation (1=1)
+max_big_expressions=10 # big expressions
+max_char_size=255 # max char() size
+max_column_name=30 # column name length
+max_columns=250 # Columns in table
+max_conditions=250 # OR and AND in WHERE
+max_expressions=1051 # simple expressions
+max_index=+64 # max index
+max_index_length=600 # index length
+max_index_name=30 # index name length
+max_index_part_length=255 # max index part length
+max_index_parts=15 # index parts
+max_index_varchar_part_length=255 # index varchar part length
+max_row_length=1960 # max table row length (without blobs)
+max_row_length_with_null=1941 # table row length with nulls (without blobs)
+max_select_alias_name=30 # select alias name length
+max_stack_expression=97 # stacked expressions
+max_table_alias_name=30 # table alias name length
+max_table_name=30 # table name length
+max_text_size=65504 # max text or blob size
+max_unique_index=+64 # unique indexes
+max_varchar_size=255 # max varchar() size
+minus=yes # minus
+minus_neg=no # Calculate 1--1
+multi_drop=yes # many tables to drop table
+multi_strings=no # Multiple line strings
+multi_table_delete=no # DELETE FROM table1,table2...
+multi_table_update=no # Update with many tables
+natural_join=no # natural join
+natural_left_outer_join=no # natural left outer join
+no_primary_key=yes # Tables without primary key
+null_concat_expr=error # Is 'a' + NULL = NULL
+null_in_index=yes # null in index
+null_in_unique=yes # null in unique
+null_num_expr=yes # Is 1+NULL = NULL
+odbc_left_outer_join=yes # left outer join odbc style
+operating_system=Windows NT Version 4.0 # crash-me tested on
+order_by=yes # Order by
+order_by_alias=yes # Order by alias
+order_by_position=yes # Order by position
+primary_key_in_create=yes # primary key in create table
+query_size=65535 # query size
+quote_with_"=yes # Allows ' and " as string markers
+recursive_subqueries=15 # recursive subqueries
+remember_end_space=no # Remembers end space in char()
+remember_end_space_varchar=no # Remembers end space in varchar()
+right_outer_join=no # right outer join
+select_constants=yes # Select constants
+select_string_size=65526 # constant string size in SELECT
+select_table_update=yes # Update with sub select
+select_without_from=yes # SELECT without FROM
+server_version=Sybase enterprise 11.5 NT # server version
+simple_joins=yes # ANSI SQL simple joins
+subqueries=yes # subqueries
+table_alias=no # Table alias
+table_wildcard=yes # Select table_name.*
+transactions=error # transactions
+type_extra_abstime=no # Type abstime
+type_extra_bfile=no # Type bfile
+type_extra_blob=no # Type blob
+type_extra_bool=no # Type bool
+type_extra_box=no # Type box
+type_extra_byte=no # Type byte
+type_extra_char(1_arg)_binary=no # Type char(1 arg) binary
+type_extra_char16=no # Type char16
+type_extra_char2=no # Type char2
+type_extra_char4=no # Type char4
+type_extra_char8=no # Type char8
+type_extra_circle=no # Type circle
+type_extra_clob=no # Type clob
+type_extra_datetime=yes # Type datetime
+type_extra_enum(1_arg)=no # Type enum(1 arg)
+type_sql_float(1_arg)=yes # Type float(1 arg)
+type_extra_float4=no # Type float4
+type_extra_float8=no # Type float8
+type_extra_image=yes # Type image
+type_extra_int(1_arg)_zerofill=no # Type int(1 arg) zerofill
+type_extra_int1=no # Type int1
+type_extra_int2=no # Type int2
+type_extra_int3=no # Type int3
+type_extra_int4=no # Type int4
+type_extra_int8=no # Type int8
+type_extra_int_auto_increment=no # Type int not null auto_increment
+type_extra_line=no # Type line
+type_extra_long=no # Type long
+type_extra_long_raw=no # Type long raw
+type_extra_long_varbinary=no # Type long varbinary
+type_extra_long_varchar(1_arg)=no # Type long varchar(1 arg)
+type_extra_lseg=no # Type lseg
+type_extra_mediumint=no # Type mediumint
+type_extra_mediumtext=no # Type mediumtext
+type_extra_middleint=no # Type middleint
+type_extra_mlslabel=no # Type mlslabel
+type_extra_money=yes # Type money
+type_sql_nchar(1_arg)=yes # Type nchar(1 arg)
+type_extra_nclob=no # Type nclob
+type_extra_number=no # Type number
+type_extra_number(1_arg)=no # Type number(1 arg)
+type_extra_nvarchar(2_arg)=no # Type nvarchar(2 arg)
+type_extra_nvarchar2(1_arg)=no # Type nvarchar2(1 arg)
+type_extra_path=no # Type path
+type_extra_point=no # Type point
+type_extra_polygon=no # Type polygon
+type_extra_raw(1_arg)=no # Type raw(1 arg)
+type_extra_reltime=no # Type reltime
+type_extra_rowid=no # Type rowid
+type_extra_serial=no # Type serial
+type_extra_set(1_arg)=no # Type set(1 arg)
+type_extra_smalldatetime=yes # Type smalldatetime
+type_extra_smallfloat=no # Type smallfloat
+type_extra_smallmoney=yes # Type smallmoney
+type_extra_text=yes # Type text
+type_extra_text(1_arg)=no # Type text(1 arg)
+type_extra_timespan=no # Type timespan
+type_extra_varchar2(1_arg)=no # Type varchar2(1 arg)
+type_extra_year=no # Type year
+type_odbc_bigint=no # Type bigint
+type_odbc_binary(1_arg)=yes # Type binary(1 arg)
+type_odbc_datetime=yes # Type datetime
+type_sql_smallint=yes # Type smallint
+type_odbc_tinyint=yes # Type tinyint
+type_odbc_varbinary(1_arg)=yes # Type varbinary(1 arg)
+type_sql_bit=yes # Type bit
+type_sql_bit(1_arg)=no # Type bit(1 arg)
+type_sql_bit_varying(1_arg)=no # Type bit varying(1 arg)
+type_sql_char(1_arg)=yes # Type char(1 arg)
+type_sql_char_varying(1_arg)=yes # Type char varying(1 arg)
+type_sql_character(1_arg)=yes # Type character(1 arg)
+type_sql_character_varying(1_arg)=yes # Type character varying(1 arg)
+type_sql_date=no # Type date
+type_sql_dec(2_arg)=yes # Type dec(2 arg)
+type_sql_decimal(2_arg)=yes # Type decimal(2 arg)
+type_extra_double=no # Type double
+type_sql_double_precision=yes # Type double precision
+type_sql_float=yes # Type float
+type_extra_float(2_arg)=no # Type float(1 arg)
+type_sql_int=yes # Type int
+type_sql_integer=yes # Type integer
+type_sql_interval_year=no # Type interval year
+type_sql_numeric(2_arg)=yes # Type numeric(2 arg)
+type_sql_real=yes # Type real
+type_sql_time=no # Type time
+type_sql_timestamp=yes # Type timestamp
+type_sql_varchar(1_arg)=yes # Type varchar(1 arg)
+union=yes # union
+union_all=yes # union all
+unique_in_create=yes # unique in create table
+unique_null_in_create=no # unique null in create
+views=yes # views
+where_string_size=255 # constant string size in where
diff --git a/sql-bench/myisam.cnf b/sql-bench/myisam.cnf
new file mode 100755
index 00000000..4229f56c
--- /dev/null
+++ b/sql-bench/myisam.cnf
@@ -0,0 +1,3 @@
+[mysqld]
+data=/data
+key_buffer_size=256M
diff --git a/sql-bench/pwd.bat b/sql-bench/pwd.bat
new file mode 100755
index 00000000..104fd349
--- /dev/null
+++ b/sql-bench/pwd.bat
@@ -0,0 +1,2 @@
+@echo off
+@cd
diff --git a/sql-bench/run-all-tests.sh b/sql-bench/run-all-tests.sh
new file mode 100644
index 00000000..d600541c
--- /dev/null
+++ b/sql-bench/run-all-tests.sh
@@ -0,0 +1,314 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2003, 2006, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# This program runs all test that starts with 'test-' and sums
+# the results that the program prints.
+# Each time result should be of the form:
+# Time for|to KEYWORD (number_of_runs) 'other info': timestr()
+#
+# All options to this script is passed to all test program.
+# useful options:
+# --fast --force --lock-tables
+# --server ==> mariadb (default) / mysql / Pg (postgres) / Oracle
+# --user ==> the user with permission to create / drop / select
+# --pass ==> password for the user
+# --cmp ==> Compare --server with one of the others (mysql/mSQL/Pg/Solid)
+# --comments ==> everything you want to say such as the extra options you
+# gave to the db server. (use --comments="xxx xxx xxx"
+# --machine ==> Give a OS/machine id for your logfiles.
+# --log ==> puts output in output/RUN-server-machine-cmp-$opt_cmp
+
+use DBI;
+use Cwd;
+
+$opt_silent=1; # Don't write header
+
+@ORG_ARGV=@ARGV;
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+$opt_silent=0;
+$perl=$^X;
+$machine=machine();
+$redirect= !($machine =~ /windows/i || $machine =~ "^NT\s") ? "2>&1" : "";
+$dir= ($pwd =~ /\\/) ? '\\' : '/'; # directory symbol for shell
+
+$prog_args="";
+foreach $arg (@ORG_ARGV)
+{
+ if ($redirect)
+ {
+ $prog_args.="'" . $arg . "' ";
+ }
+ else
+ {
+ # Windows/NT can't handle ' around arguments
+ $prog_args.=$arg . " ";
+ }
+}
+
+$prog_count=$errors=0;
+
+if ($opt_cmp) {
+ $filename = "$opt_server$opt_suffix-" . machine_part() . "-cmp-$opt_cmp";
+} else {
+ $filename = "$opt_server$opt_suffix-" . machine_part();
+}
+
+if (! -d $opt_dir)
+{
+ if (-e $opt_dir)
+ {
+ die "$opt_dir isn't a directory\n";
+ }
+ mkdir $opt_dir,0777 || die "Can't create directory: $opt_dir\n";
+}
+
+if ($opt_skip_test) {
+ (@skip_tests) = split(/,\s*/, $opt_skip_test);
+}
+
+if ($opt_old_headers)
+{
+ read_headers("$opt_dir/RUN-$filename");
+}
+else
+{
+ $server_version=$server->version();
+}
+
+if (!$opt_log)
+{
+ open(LOG,">&STDOUT");
+}
+else
+{
+ open(LOG, "> $opt_dir/RUN-$filename") ||
+ die "Can't write to $opt_dir/RUN-$filename: $!\n";
+}
+
+select(LOG);
+$|=1;
+
+print "Benchmark DBD suite: $benchmark_version\n";
+print "Date of test: $date\n";
+print "Running tests on: $machine\n";
+print "Arguments: $log_prog_args\n";
+print "Comments: $opt_comments\n";
+print "Limits from: $opt_cmp\n";
+print "Server version: $server_version\n";
+print "Optimization: $opt_optimization\n";
+print "Hardware: $opt_hw\n\n";
+
+$estimated=$warning=$got_warning=0;
+while (<test-*>)
+{
+ next if (/\.sh$/); # configure script
+ next if (/\-fork$/); # test script
+ $prog_count++;
+ /test-(.*)$/; # Remove test from name
+ $prog=$1;
+ $skip_prog = 0;
+ foreach $skip_this (@skip_tests) {
+ if ($prog =~ /$skip_this/i) {
+ $skip_prog = 1;
+ last;
+ }
+ }
+ if ($opt_only_missing_tests && -f "$opt_dir$dir$prog-$filename")
+ {
+ # Test already run, skip it
+ $skip_prog= 1;
+ }
+ print "$prog: ";
+ if ((!$opt_use_old_results) && (!$skip_prog))
+ {
+ if (system("$perl ./test-$prog $prog_args > \"$opt_dir$dir$prog-$filename\" $redirect"))
+ {
+ printf STDERR "Warning: Can't execute $prog. Check the file '$opt_dir$dir$prog-$filename'\n";
+ die "aborted" if ($opt_die_on_errors);
+ }
+ }
+ open(TEST,"$opt_dir/$prog-$filename");
+ $last_line="";
+ while(<TEST>)
+ {
+ chomp;
+ $last_line=$_ if (!(/^\s*$/)); # Search after last line
+ }
+ if ($last_line =~ /Total time:/i)
+ {
+ print $last_line . "\n";
+ open(TEST,"$opt_dir/$prog-$filename");
+ while (<TEST>)
+ {
+ if (/^(estimated |)time (to|for) ([^\s:]*)\s*\((\d*)(:\d*)*\)[^:]*:\s*([\d.]+) .*secs \(\s*([^\s]*) usr\s*\+*\s*([^\s]*) sys.*=\s+([\d.]*)\s+cpu/i)
+ {
+ $arg=$summa{$3};
+ if (!defined($arg))
+ {
+ $summa{$3}= [ $4,$6,$7,$8,$9,""];
+ }
+ else
+ {
+ $arg->[0]+=$4;
+ $arg->[1]+=$6;
+ $arg->[2]+=$7;
+ $arg->[3]+=$8;
+ $arg->[4]+=$9;
+ }
+ $prog_sum[0]+=$4;
+ $prog_sum[1]+=$6;
+ $prog_sum[2]+=$7;
+ $prog_sum[3]+=$8;
+ $prog_sum[4]+=$9;
+ if (length($1))
+ {
+ $summa{$3}->[5].="+";
+ $estimated=1;
+ }
+ if ($got_warning)
+ {
+ $summa{$3}->[5].="?";
+ $warning=1;
+ $got_warning=0;
+ }
+ }
+ elsif (/^warning/i)
+ {
+ $got_warning=1;
+ }
+ else
+ {
+ $got_warning=0;
+ }
+ }
+ if ($opt_debug)
+ {
+ print "Summary for $prog: ", join(" ",@prog_sum), "\n";
+ }
+ }
+ elsif ($last_line =~ /^Test skipped/i)
+ {
+ print "$last_line\n";
+ }
+ else
+ {
+ $errors++;
+ print "Failed ($opt_dir/$prog-$filename)\n";
+ }
+}
+
+print "\n";
+if (!$errors)
+{
+ print "All $prog_count test executed successfully\n";
+}
+else
+{
+ print "Of $prog_count tests, $errors tests didn't work\n";
+}
+if ($estimated)
+{
+ print "Tests with estimated time have a + at end of line\n"
+}
+if ($warning)
+{
+ print "Tests with didn't return the correct result have a ? at end of line\n";
+}
+
+if (%summa)
+{
+ @total=(0,0,0,0,0,"");
+ print "\nTotals per operation:\n";
+ print "Operation seconds usr sys cpu tests\n";
+ foreach $key (sort(keys %summa))
+ {
+ $arg=$summa{$key};
+ printf("%-35.35s %7.2f %7.2f %7.2f %7.2f %7d %s\n",
+ $key,$arg->[1],$arg->[2],$arg->[3],$arg->[4],$arg->[0],
+ $arg->[5]);
+
+ for ($i=0 ; $i < 5 ; $i++)
+ {
+ $total[$i]+=$arg->[$i];
+ }
+ $total[5].=$arg->[$i];
+ }
+ printf("%-35.35s %7.2f %7.2f %7.2f %7.2f %7d %s\n",
+ "TOTALS",$total[1],$total[2],$total[3],$total[4],$total[0],
+ $total[5]);
+}
+
+select(STDOUT);
+if ($opt_log)
+{
+ print "Test finished. You can find the result in:\n$opt_dir/RUN-$filename\n";
+}
+
+
+#
+# Read headers from an old benchmark run
+#
+
+sub read_headers
+{
+ my ($filename)=@_;
+
+ # Clear current values
+ $benchmark_version=$date=$machine=$server_version="";
+
+ open(TMP, "<$filename") || die "Can't open $filename\n";
+ while (<TMP>)
+ {
+ chop;
+ if (/^Benchmark DBD.*:\s+(.*)$/)
+ {
+ $benchmark_version=$1;
+ }
+ elsif (/^Date of.*:\s+(.*)/)
+ {
+ $date=$1;
+ }
+ elsif (/^Running.*:\s+(.*)$/)
+ {
+ $machine=$1;
+ }
+ elsif (/^Arguments.*:\s+(.*)$/)
+ {
+ $log_prog_args=$1;
+ }
+ elsif (/^Limits.*:\s+(.*)$/)
+ {
+ $opt_cmp=$1;
+ }
+ elsif (/^Server ver.*:\s+(.*)$/)
+ {
+ $server_version=$1;
+ }
+ elsif (/^Optimiz.*:\s+(.*)$/)
+ {
+ $opt_optimization=$1;
+ }
+ elsif (/^Hardwar.*:\s+(.*)$/)
+ {
+ $opt_hw=$1;
+ }
+ }
+ close(TMP);
+}
diff --git a/sql-bench/server-cfg.sh b/sql-bench/server-cfg.sh
new file mode 100644
index 00000000..c7a45f88
--- /dev/null
+++ b/sql-bench/server-cfg.sh
@@ -0,0 +1,3618 @@
+#!/usr/bin/env perl
+# -*- perl -*-
+# Copyright (c) 2000-2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# The configuration file for the DBI/DBD tests on different databases ....
+# You will need the DBD module for the database you are running.
+# Monty made this bench script and I (Luuk de Boer) rewrote it to DBI/DBD.
+# Monty rewrote this again to use packages.
+#
+# Each database has a different package that has 3 functions:
+# new Creates a object with some standard slot
+# version Version number of the server
+# create Generates commands to create a table
+#
+
+#
+# First some global functions that help use the packages:
+#
+
+sub get_server
+{
+ my ($name,$host,$database,$odbc,$machine,$socket,$connect_options)=@_;
+ my ($server);
+ if ($name =~ /mysql/i || $name =~ /mariadb/i)
+ { $server=new db_MySQL($host, $database, $machine, $socket,$connect_options); }
+ elsif ($name =~ /pg/i)
+ { $server= new db_Pg($host,$database); }
+ elsif ($name =~ /msql/i)
+ { $server= new db_mSQL($host,$database); }
+ elsif ($name =~ /solid/i)
+ { $server= new db_Solid($host,$database); }
+ elsif ($name =~ /Empress/i)
+ { $server= new db_Empress($host,$database); }
+ elsif ($name =~ /FrontBase/i)
+ { $server= new db_FrontBase($host,$database); }
+ elsif ($name =~ /Oracle/i)
+ { $server= new db_Oracle($host,$database); }
+ elsif ($name =~ /Access/i)
+ { $server= new db_access($host,$database); }
+ elsif ($name =~ /Informix/i)
+ { $server= new db_Informix($host,$database); }
+ elsif ($name =~ /ms-sql/i)
+ { $server= new db_ms_sql($host,$database); }
+ elsif ($name =~ /sybase/i)
+ { $server= new db_sybase($host,$database); }
+ elsif ($name =~ /Adabas/i) # Adabas has two drivers
+ {
+ $server= new db_Adabas($host,$database);
+ if ($name =~ /AdabasD/i)
+ {
+ $server->{'data_source'} =~ s/:Adabas:/:AdabasD:/;
+ }
+ }
+ elsif ($name =~ /DB2/i)
+ { $server= new db_db2($host,$database); }
+ elsif ($name =~ /Mimer/i)
+ { $server= new db_Mimer($host,$database); }
+ elsif ($name =~ /Sapdb/i)
+ { $server= new db_sapdb($host,$database); }
+ elsif ($name =~ /interBase/i)
+ { $server= new db_interbase($host,$database); }
+ else
+ {
+ die "Unknown sql server name used: $name\nUse one of: Access, Adabas, AdabasD, Empress, FrontBase, Oracle, Informix, InterBase, DB2, mSQL, MariaDB, Mimer, MS-SQL, MySQL, Pg, Solid, SAPDB or Sybase.\nIf the connection is done trough ODBC the name must end with _ODBC\n";
+ }
+ if ($name =~ /_ODBC$/i || defined($odbc) && $odbc)
+ {
+ if (! ($server->{'data_source'} =~ /^([^:]*):([^:]+):([^:]*)/ ))
+ {
+ die "Can't find databasename in data_source: '" .
+ $server->{'data_source'}. "'\n";
+ }
+ if ($3) {
+ $server->{'data_source'} = "$1:ODBC:$3";
+ } else {
+ $server->{'data_source'} = "$1:ODBC:$database";
+ }
+ }
+ return $server;
+}
+
+sub all_servers
+{
+ return ["Access", "Adabas", "DB2", "Empress", "FrontBase", "Oracle",
+ "Informix", "InterBase", "MariaDB", "Mimer", "mSQL", "MS-SQL", "MySQL",
+ "Pg","SAPDB", "Solid", "Sybase"];
+}
+
+#############################################################################
+# First the configuration for MariaDB / MySQL off course :-)
+#############################################################################
+
+package db_MySQL;
+
+sub new
+{
+ my ($type,$host,$database,$machine,$socket,$connect_options)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "mysql";
+ $self->{'data_source'} = "DBI:MariaDB:database=$database;host=$host";
+ $self->{'data_source'} .= ";mariadb_socket=$socket" if($socket);
+ $self->{'data_source'} .= ";$connect_options" if($connect_options);
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "blob";
+ $self->{'text'} = "text";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'vacuum'} = 1; # When using with --fast
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 0; # Transactions disabled by default
+
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'alter_add_multi_col'}= 1; #Have ALTER TABLE t add a int,add b int;
+ $limits{'alter_table'} = 1; # Have ALTER TABLE
+ $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
+ $limits{'alter_table_after'}= 1; # Have ALTER TABLE .. AFTER other_column
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'func_extra_%'} = 1; # Has % as alias for mod()
+ $limits{'func_extra_if'} = 1; # Have function if.
+ $limits{'func_extra_in_num'} = 1; # Has function in
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
+ $limits{'func_odbc_mod'} = 1; # Have function mod.
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_by_position'} = 1; # Can use 'GROUP BY 1'
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'group_func_extra_std'} = 1; # Have group function std().
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'having_with_alias'} = 1; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can use group functions in HAVING
+ $limits{'insert_multi_value'} = 1; # Have INSERT ... values (1,2),(3,4)
+ $limits{'insert_select'} = 1;
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'limit'} = 1; # supports the limit attribute
+ $limits{'truncate_table'} = 1;
+ $limits{'load_data_infile'} = 1; # Has load data infile
+ $limits{'lock_tables'} = 1; # Has lock tables
+ $limits{'max_column_name'} = 64; # max table and column name
+ $limits{'max_columns'} = 2000; # Max number of columns in table
+ $limits{'max_conditions'} = 9999; # (Actually not a limit)
+ $limits{'max_index'} = 16; # Max number of keys
+ $limits{'max_index_parts'} = 16; # Max segments/key
+ $limits{'max_tables'} = (($machine || '') =~ "^win") ? 5000 : 65000;
+ $limits{'max_temporary_tables'}= 400;
+ $limits{'max_text_size'} = 1000000; # Good enough for tests
+ $limits{'multi_drop'} = 1; # Drop table can take many tables
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'order_by_null'} = 1; # Can use 'ORDER BY NULL'
+ $limits{'order_by_unused'} = 1;
+ $limits{'query_size'} = 1000000; # Max size with default buffers.
+ $limits{'select_without_from'}= 1; # Can do 'select 1';
+ $limits{'subqueries'} = 0; # Doesn't support sub-queries.
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'working_all_fields'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+ # Some fixes that depends on the environment
+ if (defined($main::opt_create_options) &&
+ $main::opt_create_options =~ /engine=heap/i)
+ {
+ $limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's
+ }
+ # HEAP is deprecated in favor of MEMORY
+ if (defined($main::opt_create_options) &&
+ $main::opt_create_options =~ /engine=memory/i)
+ {
+ $limits{'working_blobs'} = 0; # MEMORY tables can't handle BLOB's
+ }
+ if (defined($main::opt_create_options) &&
+ $main::opt_create_options =~ /engine=innodb/i)
+ {
+ $self->{'transactions'} = 1; # Transactions enabled
+ }
+ if (defined($main::opt_create_options) &&
+ $main::opt_create_options =~ /engine=bdb/i)
+ {
+ $self->{'transactions'} = 1; # Transactions enabled
+ }
+ if (defined($main::opt_create_options) &&
+ $main::opt_create_options =~ /engine=gemini/i)
+ {
+ $limits{'working_blobs'} = 0; # Blobs not implemented yet
+ $limits{'max_tables'} = 500;
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+ $self->{'transactions'} = 1; # Transactions enabled
+ }
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $dbh=$self->connect();
+ $sth = $dbh->prepare("select VERSION()") or die $DBI::errstr;
+ $version="MySQL 3.20.?";
+ if ($sth->execute && (@row = $sth->fetchrow_array))
+ {
+ $row[0] =~ s/-/ /g; # To get better tables with long names
+ $version="$row[0]";
+ }
+ $sth->finish;
+
+ $sth = $dbh->prepare("show status like 'ssl_version'") or die $DBI::errstr;
+ if ($sth->execute && (@row = $sth->fetchrow_array) && $row[1])
+ {
+ $version .= "/$row[1]";
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+#
+# Connection with optional disabling of logging
+#
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+
+ $dbh->do("SET OPTION LOG_OFF=1,UPDATE_LOG=0");
+ if ($main::opt_connect_command ne "")
+ {
+ $dbh->do($main::opt_connect_command) or
+ die "Can't execute connect_command: $main::opt_connect_command error: $DBI::errstr\n";
+ }
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+# If one uses $main::opt_fast then one is allowed to use
+# non standard types to get better speed.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index,$options) = @_;
+ my($query,@queries);
+
+ if ($main::opt_temporary_tables)
+ {
+ $query="create temporary table $table_name (";
+ }
+ else
+ {
+ $query="create table $table_name (";
+ }
+ foreach $field (@$fields)
+ {
+ $field =~ s/ big_decimal/ double(10,2)/i;
+ $query.= $field . ',';
+ }
+ foreach $index (@$index)
+ {
+ $query.= $index . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ $query.=" $options" if (defined($options));
+ $query.=" $main::opt_create_options" if (defined($main::opt_create_options));
+ push(@queries,$query);
+ return @queries;
+}
+
+sub insert_file {
+ my ($self,$dbname, $file, $dbh) = @_;
+ my ($command, $sth);
+
+ $file =~ s|\\|/|g; # Change Win32 names to Unix syntax
+ $command = "load data infile '$file' into table $dbname columns optionally enclosed by '\\'' terminated by ','";
+# print "$command\n";
+ $sth = $dbh->do($command) or die $DBI::errstr;
+ return $sth; # Contains number of rows
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index {
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index ON $table";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+#
+# This should return 1 if we to do disconnect / connect when doing
+# big batches
+#
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+#
+# reconnect on errors (needed mainly be crash-me)
+#
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#
+# Optimize tables for better performance
+#
+
+sub vacuum
+{
+ my ($self,$full_vacuum,$dbh_ref,@tables)=@_;
+ my ($loop_time,$end_time,$dbh);
+ if ($#tables >= 0)
+ {
+ $dbh=$$dbh_ref;
+ $loop_time=new Benchmark;
+ $dbh->do("OPTIMIZE TABLE " . join(',',@tables)) || die "Got error: $DBI::errstr when executing 'OPTIMIZE TABLE'\n";
+ $end_time=new Benchmark;
+ print "Time for book-keeping (1): " .
+ Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
+ }
+}
+
+#############################################################################
+# Definitions for mSQL
+#############################################################################
+
+package db_mSQL;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "msql";
+ $self->{'data_source'} = "DBI:mSQL:$database:$host";
+ $self->{'limits'} = \%limits;
+ $self->{'double_quotes'} = 0;
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 0; # No transactions
+ $self->{'blob'} = "text(" . $limits{'max_text_size'} .")";
+ $self->{'text'} = "text(" . $limits{'max_text_size'} .")";
+
+ $limits{'max_conditions'} = 74;
+ $limits{'max_columns'} = 75;
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+ $limits{'max_text_size'} = 32000;
+ $limits{'query_size'} = 65535;
+ $limits{'max_index'} = 5;
+ $limits{'max_index_parts'} = 10;
+ $limits{'max_column_name'} = 35;
+
+ $limits{'join_optimizer'} = 0; # Can't optimize FROM tables
+ $limits{'load_data_infile'} = 0;
+ $limits{'lock_tables'} = 0;
+ $limits{'functions'} = 0;
+ $limits{'group_functions'} = 0;
+ $limits{'group_distinct_functions'}= 0; # Have count(distinct)
+ $limits{'multi_drop'} = 0;
+ $limits{'select_without_from'}= 0;
+ $limits{'subqueries'} = 0;
+ $limits{'left_outer_join'} = 0;
+ $limits{'table_wildcard'} = 0;
+ $limits{'having_with_alias'} = 0;
+ $limits{'having_with_group'} = 0;
+ $limits{'like_with_column'} = 1;
+ $limits{'order_by_position'} = 1;
+ $limits{'group_by_position'} = 1;
+ $limits{'alter_table'} = 0;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 0;
+ $limits{'group_func_extra_std'} = 0;
+ $limits{'limit'} = 1; # supports the limit attribute
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 0;
+
+ $limits{'func_odbc_mod'} = 0;
+ $limits{'func_extra_%'} = 0;
+ $limits{'func_odbc_floor'} = 0;
+ $limits{'func_extra_if'} = 0;
+ $limits{'column_alias'} = 0;
+ $limits{'NEG'} = 0;
+ $limits{'func_extra_in_num'} = 0;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($tmp,$dir);
+ foreach $dir ("/usr/local/Hughes", "/usr/local/mSQL","/my/local/mSQL",
+ "/usr/local")
+ {
+ if (-x "$dir/bin/msqladmin")
+ {
+ $tmp=`$dir/bin/msqladmin version | grep server`;
+ if ($tmp =~ /^\s*(.*\w)\s*$/)
+ { # Strip pre- and endspace
+ $tmp=$1;
+ $tmp =~ s/\s+/ /g; # Remove unnecessary spaces
+ $tmp .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+
+ return $tmp;
+ }
+ }
+ }
+ return "mSQL version ???";
+}
+
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Can't handle many field types, so we map everything to int and real.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$name,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/varchar/char/i; # mSQL doesn't have VARCHAR()
+ # mSQL can't handle more than the real basic int types
+ $field =~ s/tinyint|smallint|mediumint|integer/int/i;
+ # mSQL can't handle different visual lengths
+ $field =~ s/int\(\d*\)/int/i;
+ # mSQL doesn't have float, change it to real
+ $field =~ s/float(\(\d*,\d*\)){0,1}/real/i;
+ $field =~ s/double(\(\d*,\d*\)){0,1}/real/i;
+ # mSQL doesn't have blob, it has text instead
+ if ($field =~ / blob/i)
+ {
+ $name=$self->{'blob'};
+ $field =~ s/ blob/ $name/;
+ }
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=0;
+
+ # Prepend table_name to index name because the the name may clash with
+ # a field name. (Should be diffent name space, but this is mSQL...)
+
+ foreach $index (@$index)
+ {
+ # Primary key is unique index in mSQL
+ $index =~ s/primary key/unique index primary/i;
+ if ($index =~ /^unique\s*\(([^\(]*)\)$/i)
+ {
+ $nr++;
+ push(@queries,"create unique index ${table_name}_$nr on $table_name ($1)");
+ }
+ else
+ {
+ if (!($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i))
+ {
+ die "Can't parse index information in '$index'\n";
+ }
+ push(@queries,"create $1 ${table_name}_$2 on $table_name $3");
+ }
+ }
+ return @queries;
+}
+
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ print "insert an ascii file isn't supported by mSQL\n";
+ return 0;
+}
+
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index FROM $table";
+}
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Definitions for PostgreSQL #
+#############################################################################
+
+package db_Pg;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "pg";
+ $self->{'data_source'} = "DBI:Pg:dbname=$database";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "text";
+ $self->{'text'} = "text";
+ $self->{'double_quotes'} = 1;
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+ $self->{"vacuum"} = 1;
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ # load_data_infile could use function 'insert_file', but I could not get it to
+ # work because of permissions problems. Disabling for now.
+ $limits{'load_data_infile'} = 0;
+ $limits{'NEG'} = 1;
+ $limits{'alter_add_multi_col'}= 1;
+ $limits{'alter_table'} = 1;
+ $limits{'alter_table_dropcol'}= 1;
+ $limits{'alter_table_after'} = 0; # Have ALTER TABLE .. AFTER other_column
+ $limits{'column_alias'} = 1;
+ $limits{'func_extra_%'} = 1;
+ $limits{'func_extra_if'} = 0;
+ $limits{'func_extra_in_num'} = 1;
+ $limits{'func_odbc_floor'} = 1;
+ $limits{'func_odbc_mod'} = 1; # Has %
+ $limits{'functions'} = 1;
+ $limits{'group_by_position'} = 1;
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'group_func_extra_std'} = 0;
+ $limits{'group_func_sql_min_str'}= 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_functions'} = 1;
+ $limits{'having_with_alias'} = 0;
+ $limits{'having_with_group'} = 1;
+ $limits{'insert_select'} = 1;
+ $limits{'left_outer_join'} = 1;
+ $limits{'like_with_column'} = 1;
+ $limits{'lock_tables'} = 0; # in ATIS gives this a problem
+ $limits{'max_column_name'} = 128;
+ $limits{'max_columns'} = 1000; # 500 crashes pg 6.3
+ $limits{'max_conditions'} = 9999; # This makes Pg real slow
+ $limits{'max_index'} = 64; # Big enough
+ $limits{'max_index_parts'} = 16;
+ $limits{'max_tables'} = 65000;
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 65000; # Good enough for test
+ $limits{'multi_drop'} = 1;
+ $limits{'order_by_position'} = 1;
+ $limits{'order_by_unused'} = 1;
+ $limits{'query_size'} = 16777216;
+ $limits{'select_without_from'}= 1;
+ $limits{'subqueries'} = 1;
+ $limits{'table_wildcard'} = 1;
+ $limits{'truncate_table'} = 1;
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'working_all_fields'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+ $limits{'insert_multi_value'} = 1; # Have INSERT ... values (1,2),(3,4)
+ return $self;
+}
+
+# couldn't find the option to get the version number
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $dbh=$self->connect();
+ $sth = $dbh->prepare("select VERSION()") or die $DBI::errstr;
+ $version="PostgreSQL ?";
+ if ($sth->execute && (@row = $sth->fetchrow_array))
+ {
+ $row[0] =~ s/-/ /g; # To get better tables with long names
+ $version="PostgreSQL $row[0]";
+ }
+ $sth->finish;
+
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$name,$in,$indfield,$table,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ if ($main::opt_fast)
+ {
+ # Allow use of char2, char4, char8 or char16
+ $field =~ s/char(2|4|8|16)/char$1/;
+ }
+ # Pg can't handle more than the real basic int types
+ $field =~ s/tinyint|smallint|mediumint|integer/int/;
+ # Pg can't handle different visual lengths
+ $field =~ s/int\(\d*\)/int/;
+ $field =~ s/float\(\d*,\d*\)/float/;
+ $field =~ s/ double/ float/;
+ # Pg doesn't have blob, it has text instead
+ $field =~ s/ blob/ text/;
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ foreach $index (@$index)
+ {
+ if ($index =~ /primary key/ || $index =~ /PRIMARY KEY/)
+ {
+ $query= substr($query, 0, length($query)-1) . ", $index )";
+ next;
+ }
+ elsif ($index =~ /^unique.*\(([^\(]*)\)$/i)
+ {
+ $indfield=" (" .$1.")";
+ $in="unique index";
+ $table="index_$nr"; $nr++;
+ }
+ elsif ($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i)
+ {
+ # original: $indfield="using btree (" .$1.")";
+ $indfield=" " .$3;
+ $in="index";
+ $table="index_$nr"; $nr++;
+ }
+ else
+ {
+ die "Can't parse index information in '$index'\n";
+ }
+ push(@queries,"create $in ${table_name}_$table on $table_name $indfield");
+ }
+ $queries[0]=$query;
+ return @queries;
+}
+
+sub insert_file {
+ my ($self,$dbname, $file, $dbh) = @_;
+ my ($command, $sth);
+
+# Syntax:
+# copy [binary] <class_name> [with oids]
+# {to|from} {<filename>|stdin|stdout} [using delimiters <delim>]
+ $command = "copy $dbname from '$file' using delimiters ',' QUOTE ''''";
+ print "$command\n";
+ $sth = $dbh->do($command) or die $DBI::errstr;
+ return $sth;
+}
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+sub abort_if_fatal_error
+{
+ return 1 if ($DBI::errstr =~ /sent to backend, but backend closed/i);
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+sub vacuum
+{
+ my ($self,$full_vacuum,$dbh_ref,@tables)=@_;
+ my ($loop_time,$end_time,$dbh,$table);
+ if (defined($full_vacuum))
+ {
+ $$dbh_ref->disconnect; $$dbh_ref= $self->connect();
+ }
+ $dbh=$$dbh_ref;
+ $loop_time=new Benchmark;
+ if ($#tables >= 0)
+ {
+ foreach $table (@tables)
+ {
+ $dbh->do("vacuum analyze $table") || die "Got error: $DBI::errstr when executing 'vacuum analyze $table'\n";
+ $dbh->do("vacuum $table") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
+ }
+ }
+ else
+ {
+ $dbh->do("vacuum analyze") || die "Got error: $DBI::errstr when executing 'vacuum analyze'\n";
+ $dbh->do("vacuum") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
+ }
+ $end_time=new Benchmark;
+ print "Time for book-keeping (1): " .
+ Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
+ $dbh->disconnect; $$dbh_ref= $self->connect();
+}
+
+
+#############################################################################
+# Definitions for Solid
+#############################################################################
+
+package db_Solid;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "solid";
+ $self->{'data_source'} = "DBI:Solid:";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "long varchar";
+ $self->{'text'} = "long varchar";
+ $self->{'double_quotes'} = 1;
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+
+ $limits{'max_conditions'} = 9999; # Probably big enough
+ $limits{'max_columns'} = 2000; # From crash-me
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 65492; # According to tests
+ $limits{'query_size'} = 65535; # Probably a limit
+ $limits{'max_index'} = 64; # Probably big enough
+ $limits{'max_index_parts'} = 64;
+ $limits{'max_column_name'} = 80;
+
+ $limits{'join_optimizer'} = 1;
+ $limits{'load_data_infile'} = 0;
+ $limits{'lock_tables'} = 0;
+ $limits{'functions'} = 1;
+ $limits{'group_functions'} = 1;
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 0; # Can do 'select 1' ?;
+ $limits{'multi_drop'} = 0;
+ $limits{'subqueries'} = 1;
+ $limits{'left_outer_join'} = 1;
+ $limits{'table_wildcard'} = 1;
+ $limits{'having_with_alias'} = 0;
+ $limits{'having_with_group'} = 1;
+ $limits{'like_with_column'} = 1;
+ $limits{'order_by_position'} = 0; # 2.30.0018 can this
+ $limits{'group_by_position'} = 0;
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 0;
+
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 1;
+ $limits{'func_extra_%'} = 0;
+ $limits{'func_odbc_floor'} = 1;
+ $limits{'column_alias'} = 1;
+ $limits{'NEG'} = 1;
+ $limits{'func_extra_in_num'} = 1;
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($version,$dir);
+ $version="Solid version ??";
+ foreach $dir ($ENV{'SOLIDDIR'},"/usr/local/solid", "/my/local/solid")
+ {
+ if ($dir && -e "$dir/bin/solcon")
+ {
+ $version=`$dir/bin/solcon -e"ver" $main::opt_user $main::opt_password | grep Server | sed q`;
+ if ($? == 0)
+ {
+ chomp($version);
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+ }
+ }
+ }
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/mediumint/integer/i;
+ $field =~ s/ double/ float/i;
+ # Solid doesn't have blob, it has long varchar
+ $field =~ s/ blob/ long varchar/;
+# $field =~ s/ decimal/ float/i;
+# $field =~ s/ big_decimal/ float/i;
+# $field =~ s/ date/ int/i;
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=0;
+ foreach $index (@$index)
+ {
+ if ($index =~ /^primary key/i || $index =~ /^unique/i)
+ { # Add to create statement
+ substr($queries[0],-1,0)="," . $index;
+ }
+ else
+ {
+ $index =~ /^(.*)\s+(\(.*\))$/;
+ push(@queries,"create ${1}$nr on $table_name $2");
+ $nr++;
+ }
+ }
+ return @queries;
+}
+
+# there is no sql statement in solid which can do the load from
+# an ascii file in the db ... but there is the speedloader program
+# an external program which can load the ascii file in the db ...
+# the server must be down before using speedloader !!!!
+# (in the standalone version)
+# it works also with a control file ... that one must be made ....
+sub insert_file {
+ my ($self, $dbname, $file) = @_;
+ my ($speedcmd);
+ $speedcmd = '/usr/local/solid/bin/solload';
+ print "At this moment not supported - solid server must go down \n";
+ return 0;
+}
+
+# solid can't handle an alias in a having statement so
+# select test as foo from tmp group by foo having foor > 2
+# becomes
+# select test as foo from tmp group by foo having test > 2
+#
+sub query {
+ my($self,$sql) = @_;
+ my(@select,$tmp,$newhaving,$key,%change);
+
+ if ($sql =~ /having\s+/i)
+ {
+ if ($sql =~ /select (.*) from/i)
+ {
+ (@select) = split(/,\s*/, $1);
+ foreach $tmp (@select)
+ {
+ if ($tmp =~ /(.*)\s+as\s+(\w+)/)
+ {
+ $change{$2} = $1;
+ }
+ }
+ }
+ if ($sql =~ /having\s+(\w+)/i)
+ {
+ $newhaving = $1;
+ foreach $key (sort {$a cmp $b} keys %change)
+ {
+ if ($newhaving eq $key)
+ {
+ $newhaving =~ s/$key/$change{$key}/g;
+ }
+ }
+ }
+ $sql =~ s/(having)\s+(\w+)/$1 $newhaving/i;
+ }
+ return $sql;
+}
+
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+#############################################################################
+# Definitions for Empress
+#
+# at this moment DBI:Empress can only handle 200 prepare statements ...
+# so Empress can't be tested with the benchmark test :(
+#############################################################################
+
+package db_Empress;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "empress";
+ $self->{'data_source'} = "DBI:EmpressNet:SERVER=$host;Database=/usr/local/empress/rdbms/bin/$database";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "text";
+ $self->{'text'} = "text";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+
+ $limits{'max_conditions'} = 1258;
+ $limits{'max_columns'} = 226; # server is disconnecting????
+ # above this value .... but can handle 2419 columns
+ # maybe something for crash-me ... but how to check ???
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+ $limits{'max_text_size'} = 4095; # max returned ....
+ $limits{'query_size'} = 65535; # Not a limit, big enough
+ $limits{'max_index'} = 64; # Big enough
+ $limits{'max_index_parts'} = 64; # Big enough
+ $limits{'max_column_name'} = 31;
+
+ $limits{'join_optimizer'} = 1;
+ $limits{'load_data_infile'} = 0;
+ $limits{'lock_tables'} = 1;
+ $limits{'functions'} = 1;
+ $limits{'group_functions'} = 1;
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 0;
+ $limits{'multi_drop'} = 0;
+ $limits{'subqueries'} = 1;
+ $limits{'table_wildcard'} = 0;
+ $limits{'having_with_alias'} = 0; # AS isn't supported in a select
+ $limits{'having_with_group'} = 1;
+ $limits{'like_with_column'} = 1;
+ $limits{'order_by_position'} = 1;
+ $limits{'group_by_position'} = 0;
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 0;
+
+ $limits{'group_func_extra_std'}= 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 0;
+ $limits{'func_extra_%'} = 1;
+ $limits{'func_odbc_floor'} = 1;
+ $limits{'func_extra_if'} = 0;
+ $limits{'column_alias'} = 0;
+ $limits{'NEG'} = 1;
+ $limits{'func_extra_in_num'} = 0;
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self,$dbh)=@_;
+ my ($version);
+ $version="";
+ if (-x "/usr/local/empress/rdbms/bin/empvers")
+ {
+ $version=`/usr/local/empress/rdbms/bin/empvers | grep Version`;
+ }
+ if ($version)
+ {
+ chomp($version);
+ }
+ else
+ {
+ $version="Empress version ???";
+ }
+
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ my($command,$sth);
+ $command = "insert into $dbname from '$file'";
+ print "$command\n" if ($opt_debug);
+ $sth = $dbh->do($command) or die $DBI::errstr;
+
+ return $sth;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/mediumint/int/i;
+ $field =~ s/tinyint/int/i;
+ $field =~ s/smallint/int/i;
+ $field =~ s/longint/int/i;
+ $field =~ s/integer/int/i;
+ $field =~ s/ double/ longfloat/i;
+ # Solid doesn't have blob, it has long varchar
+# $field =~ s/ blob/ text(65535,65535,65535,65535)/;
+ $field =~ s/ blob/ text/;
+ $field =~ s/ varchar\((\d+)\)/ char($1,3)/;
+ $field =~ s/ char\((\d+)\)/ char($1,3)/;
+# $field =~ s/ decimal/ float/i;
+# $field =~ s/ big_decimal/ longfloat/i;
+# $field =~ s/ date/ int/i;
+ $field =~ s/ float(.*)/ float/i;
+ if ($field =~ / int\((\d+)\)/) {
+ if ($1 > 4) {
+ $field =~ s/ int\(\d+\)/ longinteger/i;
+ } else {
+ $field =~ s/ int\(\d+\)/ longinteger/i;
+ }
+ } else {
+ $field =~ s/ int/ longinteger/i;
+ }
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=1;
+ foreach $index (@$index)
+ {
+ # Primary key is unique index in Empress
+ $index =~ s/primary key/unique index/i;
+ if ($index =~ /^unique.*\(([^\(]*)\)$/i)
+ {
+ $nr++;
+ push(@queries,"create unique index ${table_name}_$nr on $table_name ($1)");
+ }
+ else
+ {
+ if (!($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i))
+ {
+ die "Can't parse index information in '$index'\n";
+ }
+ push(@queries,"create $1 ${table_name}_$2 on $table_name $3");
+ }
+ }
+ return @queries;
+}
+
+# empress can't handle an alias and but can handle the number of the
+# columname - so
+# select test as foo from tmp order by foo
+# becomes
+# select test from tmp order by 1
+#
+sub query {
+ my($self,$sql) = @_;
+ my(@select,$i,$tmp,$newselect,$neworder,@order,$key,%change);
+ my($tmp1,$otmp,$tmp2);
+
+ if ($sql =~ /\s+as\s+/i)
+ {
+ if ($sql =~ /select\s+(.*)\s+from/i) {
+ $newselect = $1;
+ (@select) = split(/,\s*/, $1);
+ $i = 1;
+ foreach $tmp (@select) {
+ if ($tmp =~ /\s+as\s+(\w+)/) {
+ $change{$1} = $i;
+ }
+ $i++;
+ }
+ }
+ $newselect =~ s/\s+as\s+(\w+)//gi;
+ $tmp2 = 0;
+ if ($sql =~ /order\s+by\s+(.*)$/i) {
+ (@order) = split(/,\s*/, $1);
+ foreach $otmp (@order) {
+ foreach $key (sort {$a cmp $b} keys %change) {
+ if ($otmp eq $key) {
+ $neworder .= "$tmp1"."$change{$key}";
+ $tmp1 = ", ";
+ $tmp2 = 1;
+ } elsif ($otmp =~ /(\w+)\s+(.+)$/) {
+ if ($key eq $1) {
+ $neworder .= "$tmp1"."$change{$key} $2";
+ $tmp2 = 1;
+ }
+ }
+ }
+ if ($tmp2 == 0) {
+ $neworder .= "$tmp1"."$otmp";
+ }
+ $tmp2 = 0;
+ $tmp1 = ", ";
+ }
+ }
+ $sql =~ s/(select)\s+(.*)\s+(from)/$1 $newselect $3/i;
+ $sql =~ s/(order\s+by)\s+(.*)$/$1 $neworder/i;
+ }
+ return $sql;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ $cmd =~ s/\'\'/\' \'/g;
+ return $cmd;
+}
+
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+# This is a because of the 200 statement problem with DBI-Empress
+
+sub abort_if_fatal_error
+{
+ if ($DBI::errstr =~ /Overflow of table of prepared statements/i)
+ {
+ print "Overflow of prepared statements ... killing the process\n";
+ exit 1;
+ }
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+#############################################################################
+# Definitions for Oracle
+#############################################################################
+
+package db_Oracle;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "Oracle";
+ $self->{'data_source'} = "DBI:Oracle:$database";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "long";
+ $self->{'text'} = "long";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+ $self->{"vacuum"} = 1;
+
+ $limits{'max_conditions'} = 9999; # (Actually not a limit)
+ $limits{'max_columns'} = 254; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 2000; # Limit for blob test-connect
+ $limits{'query_size'} = 65525; # Max size with default buffers.
+ $limits{'max_index'} = 16; # Max number of keys
+ $limits{'max_index_parts'} = 16; # Max segments/key
+ $limits{'max_column_name'} = 32; # max table and column name
+
+ $limits{'truncate_table'} = 1;
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 0;
+ $limits{'multi_drop'} = 0;
+ $limits{'subqueries'} = 1;
+ $limits{'left_outer_join'} = 0; # This may be fixed in the query module
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0;
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 0;
+
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Oracle has problem with mod()
+ $limits{'func_extra_%'} = 0; # Has % as alias for mod()
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 1; # Has function in
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $dbh=$self->connect();
+ $sth = $dbh->prepare("select VERSION from product_component_version WHERE PRODUCT like 'Oracle%'") or die $DBI::errstr;
+ $version="Oracle 7.x";
+ if ($sth->execute && (@row = $sth->fetchrow_array))
+ {
+ $version="Oracle $row[0]";
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+# If one uses $main::opt_fast then one is allowed to use
+# non standard types to get better speed.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$ind,@keys);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/ character\((\d+)\)/ char\($1\)/i;
+ $field =~ s/ character varying\((\d+)\)/ varchar\($1\)/i;
+ $field =~ s/ char varying\((\d+)\)/ varchar\($1\)/i;
+ $field =~ s/ integer/ number\(38\)/i;
+ $field =~ s/ int/ number\(38\)/i;
+ $field =~ s/ tinyint/ number\(38\)/i;
+ $field =~ s/ smallint/ number\(38\)/i;
+ $field =~ s/ mediumint/ number\(38\)/i;
+ $field =~ s/ tinynumber\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
+ $field =~ s/ smallnumber\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
+ $field =~ s/ mediumnumber\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
+ $field =~ s/ number\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
+ $field =~ s/ numeric\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
+ $field =~ s/ decimal\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
+ $field =~ s/ dec\((\d+)\)\((\d+)\)/ number\($1,$2\)/i;
+ $field =~ s/ float/ number/;
+ $field =~ s/ real/ number/;
+ $field =~ s/ double precision/ number/;
+ $field =~ s/ double/ number/;
+ $field =~ s/ blob/ long/;
+ $query.= $field . ',';
+ }
+
+ foreach $ind (@$index)
+ {
+ my @index;
+ if ( $ind =~ /\bKEY\b/i ){
+ push(@keys,"ALTER TABLE $table_name ADD $ind");
+ }else{
+ my @fields = split(' ',$index);
+ my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
+ push(@index,$query);
+ }
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query,@keys,@index);
+#print "query:$query\n";
+
+ return @queries;
+}
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ print "insert an ascii file isn't supported by Oracle (?)\n";
+ return 0;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ $cmd =~ s/\'\'/\' \'/g;
+ return $cmd;
+}
+
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 1;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+#
+# optimize the tables ....
+#
+sub vacuum
+{
+ my ($self,$full_vacuum,$dbh_ref)=@_;
+ my ($loop_time,$end_time,$sth,$dbh);
+
+ if (defined($full_vacuum))
+ {
+ $$dbh_ref->disconnect; $$dbh_ref= $self->connect();
+ }
+ $dbh=$$dbh_ref;
+ $loop_time=new Benchmark;
+ # first analyze all tables
+ $sth = $dbh->prepare("select table_name from user_tables") || die "Got error: $DBI::errstr";
+ $sth->execute || die "Got error: $DBI::errstr when select user_tables";
+ while (my @r = $sth->fetchrow_array)
+ {
+ $dbh->do("analyze table $r[0] compute statistics") || die "Got error: $DBI::errstr when executing 'analyze table'\n";
+ }
+ # now analyze all indexes ...
+ $sth = $dbh->prepare("select index_name from user_indexes") || die "Got error: $DBI::errstr";
+ $sth->execute || die "Got error: $DBI::errstr when select user_indexes";
+ while (my @r1 = $sth->fetchrow_array)
+ {
+ $dbh->do("analyze index $r1[0] compute statistics") || die "Got error: $DBI::errstr when executing 'analyze index $r1[0]'\n";
+ }
+ $end_time=new Benchmark;
+ print "Time for book-keeping (1): " .
+ Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
+ $dbh->disconnect; $$dbh_ref= $self->connect();
+}
+
+
+#############################################################################
+# Definitions for Informix
+#############################################################################
+
+package db_Informix;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "Informix";
+ $self->{'data_source'} = "DBI:Informix:$database";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "byte in table";
+ $self->{'text'} = "byte in table";
+ $self->{'double_quotes'} = 0; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+ $self->{'host'} = $host;
+
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 1;
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'func_extra_%'} = 0; # Has % as alias for mod()
+ $limits{'func_extra_if'} = 0; # Have function if.
+ $limits{'func_extra_in_num'}= 0; # Has function in
+ $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
+ $limits{'func_odbc_mod'} = 1; # Have function mod.
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_by_position'} = 1; # Can use 'GROUP BY 1'
+ $limits{'group_by_alias'} = 0; # Can use 'select a as ab from x GROUP BY ab'
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'}= 1; # Can't use group functions in HAVING
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables (always 1 only for msql)
+ $limits{'left_outer_join'} = 0; # Supports left outer joins (ANSI)
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 1; # Has lock tables
+ $limits{'max_conditions'} = 1214; # (Actually not a limit)
+ $limits{'max_column_name'} = 18; # max table and column name
+ $limits{'max_columns'} = 994; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_index'} = 64; # Max number of keys
+ $limits{'max_index_parts'} = 15; # Max segments/key
+ $limits{'max_text_size'} = 65535; # Max size with default buffers. ??
+ $limits{'multi_drop'} = 0; # Drop table can take many tables
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'query_size'} = 32766; # Max size with default buffers.
+ $limits{'select_without_from'}= 0; # Can do 'select 1';
+ $limits{'subqueries'} = 1; # Doesn't support sub-queries.
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $ENV{'INFORMIXSERVER'} = $self->{'host'};
+ $dbh=$self->connect();
+ $sth = $dbh->prepare("SELECT owner FROM systables WHERE tabname = ' VERSION'")
+ or die $DBI::errstr;
+ $version='Informix unknown';
+ if ($sth->execute && (@row = $sth->fetchrow_array))
+ {
+ $version="Informix $row[0]";
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+
+#
+# Create table
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$name,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+# $field =~ s/\btransport_description\b/transport_desc/;
+ # to overcome limit 18 chars
+ $field =~ s/tinyint/smallint/i;
+ $field =~ s/tinyint\(\d+\)/smallint/i;
+ $field =~ s/mediumint/integer/i;
+ $field =~ s/mediumint\(\d+\)/integer/i;
+ $field =~ s/smallint\(\d+\)/smallint/i;
+ $field =~ s/integer\(\d+\)/integer/i;
+ $field =~ s/int\(\d+\)/integer/i;
+# $field =~ s/\b(?:small)?int(?:eger)?\((\d+)\)/decimal($1)/i;
+# $field =~ s/float(\(\d*,\d*\)){0,1}/real/i;
+ $field =~ s/(float|double)(\(.*?\))?/float/i;
+
+ if ($field =~ / blob/i)
+ {
+ $name=$self->{'blob'};
+ $field =~ s/ blob/ $name/;
+ }
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=0;
+
+ foreach $index (@$index)
+ {
+ # Primary key is unique index in Informix
+ $index =~ s/primary key/unique index primary/i;
+ if ($index =~ /^unique\s*\(([^\(]*)\)$/i)
+ {
+ $nr++;
+ push(@queries,"create unique index ${table_name}_$nr on $table_name ($1)");
+ }
+ else
+ {
+ if (!($index =~ /^(.*index)\s+(\w*)\s+(\(.*\))$/i))
+ {
+ die "Can't parse index information in '$index'\n";
+ }
+ ### push(@queries,"create $1 ${table_name}_$2 on $table_name $3");
+ $nr++;
+ push(@queries,"create $1 ${table_name}_$nr on $table_name $3");
+ }
+ }
+ return @queries;
+}
+#
+# Some test needed this
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ $cmd =~ s/\\\'//g;
+ return $cmd;
+}
+
+
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+
+#############################################################################
+# Configuration for Access
+#############################################################################
+
+package db_access;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "access";
+ $self->{'data_source'} = "DBI:ODBC:$database";
+ if (defined($host) && $host ne "")
+ {
+ $self->{'data_source'} .= ":$host";
+ }
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "blob";
+ $self->{'text'} = "blob"; # text ?
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+
+ $limits{'max_conditions'} = 97; # We get 'Query is too complex'
+ $limits{'max_columns'} = 255; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 255; # Max size with default buffers.
+ $limits{'query_size'} = 65535; # Not a limit, big enough
+ $limits{'max_index'} = 32; # Max number of keys
+ $limits{'max_index_parts'} = 10; # Max segments/key
+ $limits{'max_column_name'} = 64; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 0; # Have count(distinct)
+ $limits{'select_without_from'}= 1; # Can do 'select 1';
+ $limits{'multi_drop'} = 0; # Drop table can take many tables
+ $limits{'subqueries'} = 1; # Supports sub-queries.
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can use group functions in HAVING
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 2; #Have ALTER TABLE t add a int, b int;
+ $limits{'alter_table_dropcol'}= 1;
+
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Have function mod.
+ $limits{'func_extra_%'} = 0; # Has % as alias for mod()
+ $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 1; # Has function in
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my $version="Access 2000";
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version; #DBI/ODBC can't return the server version
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/mediumint/integer/i;
+ $field =~ s/tinyint/smallint/i;
+ $field =~ s/float\(\d+,\d+\)/float/i;
+ $field =~ s/integer\(\d+\)/integer/i;
+ $field =~ s/smallint\(\d+\)/smallint/i;
+ $field =~ s/int\(\d+\)/integer/i;
+ $field =~ s/blob/text/i;
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=0;
+ foreach $index (@$index)
+ {
+ $ext="WITH DISALLOW NULL";
+ if (($index =~ s/primary key/unique index primary_key/i))
+ {
+ $ext="WITH PRIMARY;"
+ }
+ if ($index =~ /^unique.*\(([^\(]*)\)$/i)
+ {
+ $nr++;
+ $index="unique index ${table_name}_$nr ($1)";
+ }
+ $index =~ /^(.*)\s+(\(.*\))$/;
+ push(@queries,"create ${1} on $table_name $2");
+ }
+ return @queries;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index ON $table";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 1 if (($DBI::errstr =~ /The database engine couldn\'t lock table/i) ||
+ ($DBI::errstr =~ /niet vergrendelen. De tabel is momenteel in gebruik /i) ||
+ ($DBI::errstr =~ /Den anv.* redan av en annan/i) ||
+ ($DBI::errstr =~ /non-exclusive access/));
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 1;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Configuration for Microsoft SQL server
+#############################################################################
+
+package db_ms_sql;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "ms-sql";
+ $self->{'data_source'} = "DBI:ODBC:$database";
+ if (defined($host) && $host ne "")
+ {
+ $self->{'data_source'} .= ":$host";
+ }
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "text";
+ $self->{'text'} = "text";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+
+ $limits{'max_conditions'} = 1030; # We get 'Query is too complex'
+ $limits{'max_columns'} = 250; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 9830; # Max size with default buffers.
+ $limits{'query_size'} = 9830; # Max size with default buffers.
+ $limits{'max_index'} = 64; # Max number of keys
+ $limits{'max_index_parts'} = 15; # Max segments/key
+ $limits{'max_column_name'} = 30; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 1; # Can do 'select 1';
+ $limits{'multi_drop'} = 1; # Drop table can take many tables
+ $limits{'subqueries'} = 1; # Supports sub-queries.
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 0;
+
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Have function mod.
+ $limits{'func_extra_%'} = 1; # Has % as alias for mod()
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 0; # Has function in
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my($sth,@row, $version);
+ $version='MS SQL server ?';
+ $dbh=$self->connect();
+ $sth = $dbh->prepare("SELECT \@\@VERSION") or die $DBI::errstr;
+ $sth->execute or die $DBI::errstr;
+ @row = $sth->fetchrow_array;
+ if ($row[0]) {
+ @server = split(/\n/,$row[0]);
+ chomp(@server);
+ $version= "$server[0]";
+ }
+ $sth->finish;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/mediumint/integer/i;
+ $field =~ s/float\(\d+,\d+\)/float/i;
+ $field =~ s/double\(\d+,\d+\)/float/i;
+ $field =~ s/double/float/i;
+ $field =~ s/integer\(\d+\)/integer/i;
+ $field =~ s/int\(\d+\)/integer/i;
+ $field =~ s/smallint\(\d+\)/smallint/i;
+ $field =~ s/smallinteger/smallint/i;
+ $field =~ s/tinyint\(\d+\)/tinyint/i;
+ $field =~ s/tinyinteger/tinyint/i;
+ $field =~ s/blob/text/i;
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=0;
+ foreach $index (@$index)
+ {
+ $ext="WITH DISALLOW NULL";
+ if (($index =~ s/primary key/unique index primary_key/i))
+ {
+ $ext="WITH PRIMARY;"
+ }
+ if ($index =~ /^unique.*\(([^\(]*)\)$/i)
+ {
+ $nr++;
+ $index="unique index ${table_name}_$nr ($1)";
+ }
+ $index =~ /^(.*)\s+(\(.*\))$/;
+ push(@queries,"create ${1} on $table_name $2");
+ }
+ return @queries;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $table.$index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Configuration for Sybase
+#############################################################################
+package db_sybase;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "sybase";
+ $self->{'data_source'} = "DBI:Sybase:database=$database";
+ if (defined($host) && $host ne "")
+ {
+ $self->{'data_source'} .= ";hostname=$host";
+ }
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "text";
+ $self->{'text'} = "text";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+ $self->{"vacuum"} = 1;
+
+ $limits{'max_conditions'} = 1030; # We get 'Query is too complex'
+ $limits{'max_columns'} = 250; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 9830; # Max size with default buffers.
+ $limits{'query_size'} = 9830; # Max size with default buffers.
+ $limits{'max_index'} = 64; # Max number of keys
+ $limits{'max_index_parts'} = 15; # Max segments/key
+ $limits{'max_column_name'} = 30; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 1; # Can do 'select 1';
+ $limits{'multi_drop'} = 1; # Drop table can take many tables
+ $limits{'subqueries'} = 1; # Supports sub-queries.
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 0;
+
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Have function mod.
+ $limits{'func_extra_%'} = 1; # Has % as alias for mod()
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 0; # Has function in
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $dbh=$self->connect();
+ $sth = $dbh->prepare('SELECT @@version') or die $DBI::errstr;
+ $version="Sybase (unknown)";
+ if ($sth->execute && (@row = $sth->fetchrow_array))
+ {
+ $version=$row[0];
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0 , AutoCommit => 1}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/mediumint/integer/i;
+ $field =~ s/float\(\d+,\d+\)/float/i;
+ $field =~ s/int\(\d+\)/int/i;
+ $field =~ s/double/float/i;
+ $field =~ s/integer\(\d+\)/integer/i;
+ $field =~ s/smallint\(\d+\)/smallint/i;
+ $field =~ s/tinyint\(\d+\)/tinyint/i;
+ $field =~ s/blob/text/i;
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=0;
+ foreach $index (@$index)
+ {
+# $ext="WITH DISALLOW NULL";
+ if (($index =~ s/primary key/unique index primary_key/i))
+ {
+# $ext="WITH PRIMARY;"
+ }
+ if ($index =~ /^unique.*\(([^\(]*)\)$/i)
+ {
+ $nr++;
+ $index="unique index ${table_name}_$nr ($1)";
+ }
+ $index =~ /^(.*)\s+(\(.*\))$/;
+ push(@queries,"create ${1} on $table_name $2");
+ }
+ return @queries;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $table.$index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#
+# optimize the tables ....
+# WARNING (from walrus)! This sub will work only from DBD:sybase
+# driver. Because if we use ODBC we don't know actual database name
+# (but DSN name only)
+sub vacuum
+{
+ my ($self,$full_vacuum,$dbh_ref)=@_;
+ my ($loop_time,$end_time,$dbh);
+
+ if (defined($full_vacuum))
+ {
+ $$dbh_ref->disconnect; $$dbh_ref= $self->connect();
+ }
+ $dbh=$$dbh_ref;
+ $loop_time=new Benchmark;
+ my (@tables,$sth,$current_table,$current_base);
+ $dbh->do("dump tran $database with truncate_only");
+ $sth=$dbh->prepare("sp_tables" ) or die "prepere";
+ $sth->execute() or die "execute";
+ while (@row = $sth->fetchrow_array()) {
+ $current_table = $row[2];
+ $current_base = $row[0];
+ next if ($current_table =~ /^sys/);
+ push(@tables,$current_table) if ($database == $current_base);
+ }
+
+ $sth->finish();
+
+ foreach $table (@tables) {
+# print "$table: \n";
+ $dbh->do("update statistics $table") or print "Oops!";
+ }
+
+# $dbh->do("analyze table ?? compute statistics") || die "Got error: $DBI::errstr when executing 'vacuum'\n";
+ $end_time=new Benchmark;
+ print "Time for book-keeping (1): " .
+ Benchmark::timestr(Benchmark::timediff($end_time, $loop_time),"all") . "\n\n";
+ $dbh->disconnect; $$dbh_ref= $self->connect();
+}
+
+
+
+
+#############################################################################
+# Definitions for Adabas
+#############################################################################
+
+package db_Adabas;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "Adabas";
+ $self->{'data_source'} = "DBI:Adabas:$database";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "long";
+ $self->{'text'} = "long";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+
+ $limits{'max_conditions'} = 50; # (Actually not a limit)
+ $limits{'max_columns'} = 254; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 2000; # Limit for blob test-connect
+ $limits{'query_size'} = 65525; # Max size with default buffers.
+ $limits{'max_index'} = 16; # Max number of keys
+ $limits{'max_index_parts'} = 16; # Max segments/key
+ $limits{'max_column_name'} = 32; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 0;
+ $limits{'multi_drop'} = 0;
+ $limits{'subqueries'} = 1;
+ $limits{'left_outer_join'} = 0; # This may be fixed in the query module
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 1;
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 2; #Have ALTER TABLE t add a int, b int;
+ $limits{'alter_table_dropcol'}= 1;
+
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Oracle has problem with mod()
+ $limits{'func_extra_%'} = 0; # Has % as alias for mod()
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 1; # Has function in
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $dbh=$self->connect();
+ $sth = $dbh->prepare("SELECT KERNEL FROM VERSIONS") or die $DBI::errstr;
+ $version="Adabas (unknown)";
+ if ($sth->execute && (@row = $sth->fetchrow_array)
+ && $row[0] =~ /([\d\.]+)/)
+ {
+ $version="Adabas $1";
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+# If one uses $main::opt_fast then one is allowed to use
+# non standard types to get better speed.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$ind,@keys);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/CHARACTER\s+VARYING/VARCHAR/i;
+ $field =~ s/TINYINT/SMALLINT/i;
+ $field =~ s/MEDIUMINT/INT/i;
+ $field =~ s/SMALLINT\s*\(\d+\)/SMALLINT/i;
+ $field =~ s/INT\s*\(\d+\)/INT/i;
+ $field =~ s/BLOB/LONG/i;
+ $field =~ s/INTEGER\s*\(\d+\)/INTEGER/i;
+ $field =~ s/FLOAT\s*\((\d+),\d+\)/FLOAT\($1\)/i;
+ $field =~ s/DOUBLE/FLOAT\(38\)/i;
+ $field =~ s/DOUBLE\s+PRECISION/FLOAT\(38\)/i;
+ $query.= $field . ',';
+ }
+
+ foreach $ind (@$index)
+ {
+ my @index;
+ if ( $ind =~ /\bKEY\b/i ){
+ push(@keys,"ALTER TABLE $table_name ADD $ind");
+ }else{
+ my @fields = split(' ',$index);
+ my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
+ push(@index,$query);
+ }
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query,@keys,@index);
+#print "query:$query\n";
+
+ return @queries;
+}
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ print "insert an ascii file isn't supported by Oracle (?)\n";
+ return 0;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Configuration for IBM DB2
+#############################################################################
+
+package db_db2;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "DB2";
+ $self->{'data_source'} = "DBI:ODBC:$database";
+ if (defined($host) && $host ne "")
+ {
+ $self->{'data_source'} .= ":$host";
+ }
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "varchar(255)";
+ $self->{'text'} = "varchar(255)";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+
+ $limits{'max_conditions'} = 418; # We get 'Query is too complex'
+ $limits{'max_columns'} = 500; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+
+ $limits{'max_text_size'} = 254; # Max size with default buffers.
+ $limits{'query_size'} = 254; # Max size with default buffers.
+ $limits{'max_index'} = 48; # Max number of keys
+ $limits{'max_index_parts'} = 15; # Max segments/key
+ $limits{'max_column_name'} = 18; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'}= 1;
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 0; # Can do 'select 1';
+ $limits{'multi_drop'} = 0; # Drop table can take many tables
+ $limits{'subqueries'} = 1; # Supports sub-queries.
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can't use group functions in HAVING
+ $limits{'like_with_column'} = 0; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0; # Can use 'GROUP BY 1'
+ $limits{'alter_table'} = 1;
+ $limits{'alter_add_multi_col'}= 0;
+ $limits{'alter_table_dropcol'}= 0;
+
+ $limits{'group_func_extra_std'} = 0; # Have group function std().
+
+ $limits{'func_odbc_mod'} = 1; # Have function mod.
+ $limits{'func_extra_%'} = 0; # Has % as alias for mod()
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 0; # Has function in
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ return "IBM DB2 5"; #DBI/ODBC can't return the server version
+}
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user, $main::opt_password) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index) = @_;
+ my($query,@queries,$nr);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/mediumint/integer/i;
+ $field =~ s/float\(\d+,\d+\)/float/i;
+ $field =~ s/integer\(\d+\)/integer/i;
+ $field =~ s/int\(\d+\)/integer/i;
+ $field =~ s/tinyint\(\d+\)/smallint/i;
+ $field =~ s/tinyint/smallint/i;
+ $field =~ s/smallint\(\d+\)/smallint/i;
+ $field =~ s/smallinteger/smallint/i;
+ $field =~ s/blob/varchar(256)/i;
+ $query.= $field . ',';
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ push(@queries,$query);
+ $nr=0;
+ foreach $index (@$index)
+ {
+ $ext="WITH DISALLOW NULL";
+ if (($index =~ s/primary key/unique index primary_key/i))
+ {
+ $ext="WITH PRIMARY;"
+ }
+ if ($index =~ /^unique.*\(([^\(]*)\)$/i)
+ {
+ $nr++;
+ $index="unique index ${table_name}_$nr ($1)";
+ }
+ $index =~ /^(.*)\s+(\(.*\))$/;
+ push(@queries,"create ${1} on $table_name $2");
+ }
+ return @queries;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index
+{
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $table.$index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 1;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Configuration for MIMER
+#############################################################################
+
+package db_Mimer;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "mimer";
+ $self->{'data_source'} = "DBI:mimer:$database:$host";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "binary varying(15000)";
+ $self->{'text'} = "character varying(15000)";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+ $self->{'char_null'} = "cast(NULL as char(1))";
+ $self->{'numeric_null'} = "cast(NULL as int)";
+
+ $limits{'max_conditions'} = 9999; # (Actually not a limit)
+ $limits{'max_columns'} = 252; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+ $limits{'max_text_size'} = 15000; # Max size with default buffers.
+ $limits{'query_size'} = 1000000; # Max size with default buffers.
+ $limits{'max_index'} = 32; # Max number of keys
+ $limits{'max_index_parts'} = 16; # Max segments/key
+ $limits{'max_column_name'} = 128; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 1; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 0; # Cannot do 'select 1';
+ $limits{'multi_drop'} = 0; # Drop table cannot take many tables
+ $limits{'subqueries'} = 1; # Supports sub-queries.
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can use group functions in HAVING
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0; # Cannot use 'GROUP BY 1'
+ $limits{'alter_table'} = 1; # Have ALTER TABLE
+ $limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int;
+ $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
+ $limits{'insert_multi_value'} = 0; # Does not have INSERT ... values (1,2),(3,4)
+ $limits{'multi_distinct'} = 0; # Does not allow select count(distinct a),count(distinct b)..
+
+ $limits{'group_func_extra_std'} = 0; # Does not have group function std().
+
+ $limits{'func_odbc_mod'} = 1; # Have function mod.
+ $limits{'func_extra_%'} = 0; # Does not have % as alias for mod()
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Does not have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 1; # Has function in
+ $limits{'limit'} = 0; # Does not support the limit attribute
+ $limits{'unique_index'} = 1; # Unique index works or not
+ $limits{'insert_select'} = 1;
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 0;
+ $limits{'working_all_fields'} = 1;
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $dbh=$self->connect();
+#
+# Pick up SQLGetInfo option SQL_DBMS_VER (18)
+#
+ $version = $dbh->func(18, GetInfo);
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+#
+# Connection with optional disabling of logging
+#
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+
+ $dbh->do("SET OPTION LOG_OFF=1,UPDATE_LOG=0");
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+# If one uses $main::opt_fast then one is allowed to use
+# non standard types to get better speed.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index,$options) = @_;
+ my($query,@queries,@indexes);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+# $field =~ s/ decimal/ double(10,2)/i;
+# $field =~ s/ big_decimal/ double(10,2)/i;
+ $field =~ s/ double/ double precision/i;
+ $field =~ s/ tinyint\(.*\)/ smallint/i;
+ $field =~ s/ smallint\(.*\)/ smallint/i;
+ $field =~ s/ mediumint/ integer/i;
+ $field =~ s/ float\(.*\)/ float/i;
+# $field =~ s/ date/ int/i; # Because of tcp ?
+ $query.= $field . ',';
+ }
+ foreach $index (@$index)
+ {
+ if ( $index =~ /\bINDEX\b/i )
+ {
+ my @fields = split(' ',$index);
+ my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
+ push(@indexes,$query);
+
+ } else {
+ $query.= $index . ',';
+ }
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ $query.=" $options" if (defined($options));
+ push(@queries,$query,@indexes);
+ return @queries;
+}
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ print "insert of an ascii file isn't supported by Mimer\n";
+ return 0;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index {
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 1 if ($DBI::errstr =~ /Table locked by another cursor/);
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Configuration for InterBase
+#############################################################################
+
+package db_interbase;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "interbase";
+ $self->{'data_source'} = "DBI:InterBase:database=$database;ib_dialect=3";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "blob";
+ $self->{'text'} = "";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled
+ $self->{'char_null'} = "";
+ $self->{'numeric_null'} = "";
+
+ $limits{'max_conditions'} = 9999; # (Actually not a limit)
+ $limits{'max_columns'} = 252; # Max number of columns in table
+ $limits{'max_tables'} = 65000; # Should be big enough
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+ $limits{'max_text_size'} = 15000; # Max size with default buffers.
+ $limits{'query_size'} = 1000000; # Max size with default buffers.
+ $limits{'max_index'} = 65000; # Max number of keys
+ $limits{'max_index_parts'} = 8; # Max segments/key
+ $limits{'max_column_name'} = 128; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 0; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct)
+ $limits{'select_without_from'}= 0; # Cannot do 'select 1';
+ $limits{'multi_drop'} = 0; # Drop table cannot take many tables
+ $limits{'subqueries'} = 1; # Supports sub-queries.
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 1; # Can use group functions in HAVING
+ $limits{'like_with_column'} = 0; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0; # Cannot use 'GROUP BY 1'
+ $limits{'alter_table'} = 1; # Have ALTER TABLE
+ $limits{'alter_add_multi_col'}= 1; # Have ALTER TABLE t add a int,add b int;
+ $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column
+ $limits{'insert_multi_value'} = 0; # Does not have INSERT ... values (1,2),(3,4)
+
+ $limits{'group_func_extra_std'} = 0; # Does not have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Have function mod.
+ $limits{'func_extra_%'} = 0; # Does not have % as alias for mod()
+ $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Does not have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 0; # Supports -id
+ $limits{'func_extra_in_num'} = 0; # Has function in
+ $limits{'limit'} = 0; # Does not support the limit attribute
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works
+ $limits{'order_by_unused'} = 1;
+ $limits{'working_all_fields'} = 1;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$version);
+
+ $version='Interbase ?';
+
+ $dbh=$self->connect();
+ eval { $version = $dbh->func('version','ib_database_info')->{'version'}; };
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+#
+# Connection with optional disabling of logging
+#
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0, AutoCommit => 1}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+# If one uses $main::opt_fast then one is allowed to use
+# non standard types to get better speed.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index,$options) = @_;
+ my($query,@queries,@keys,@indexes);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+# $field =~ s/ big_decimal/ decimal/i;
+ $field =~ s/ double/ double precision/i;
+ $field =~ s/ tinyint/ smallint/i;
+ $field =~ s/ mediumint/ integer/i;
+ $field =~ s/\bint\b/integer/i;
+ $field =~ s/ float\(\d,\d\)/ float/i;
+ $field =~ s/ smallint\(\d\)/ smallint/i;
+ $field =~ s/ integer\(\d\)/ integer/i;
+ $query.= $field . ',';
+ }
+ foreach $ind (@$index)
+ {
+ if ( $ind =~ /(\bKEY\b)|(\bUNIQUE\b)/i ){
+ push(@keys,"ALTER TABLE $table_name ADD $ind");
+ }else{
+ my @fields = split(' ',$ind);
+ my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
+ push(@indexes,$query);
+ }
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ $query.=" $options" if (defined($options));
+ push(@queries,$query,@keys,@indexes);
+ return @queries;
+}
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ print "insert of an ascii file isn't supported by InterBase\n";
+ return 0;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index {
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 1 if ($DBI::errstr =~ /Table locked by another cursor/);
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 1;
+}
+
+sub reconnect_on_errors
+{
+ return 1;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Configuration for FrontBase
+#############################################################################
+
+package db_FrontBase;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "FrontBase";
+ $self->{'data_source'} = "DBI:FB:dbname=$database;host=$host";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "varchar(8000000)";
+ $self->{'text'} = "varchar(8000000)";
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = ' restrict';
+ $self->{'transactions'} = 1; # Transactions enabled
+ $self->{'error_on_execute_means_zero_rows'}=1;
+
+ $limits{'max_conditions'} = 5427; # (Actually not a limit)
+ # The following should be 8192, but is smaller because Frontbase crashes..
+ $limits{'max_columns'} = 150; # Max number of columns in table
+ $limits{'max_tables'} = 5000; # 10000 crashed FrontBase
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+ $limits{'max_text_size'} = 65000; # Max size with default buffers.
+ $limits{'query_size'} = 8000000; # Max size with default buffers.
+ $limits{'max_index'} = 38; # Max number of keys
+ $limits{'max_index_parts'} = 20; # Max segments/key
+ $limits{'max_column_name'} = 128; # max table and column name
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables
+ $limits{'load_data_infile'} = 1; # Has load data infile
+ $limits{'lock_tables'} = 0; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-)
+ $limits{'group_functions'} = 1; # Have group functions
+ $limits{'group_distinct_functions'}= 0; # Have count(distinct)
+ $limits{'select_without_from'}= 0;
+ $limits{'multi_drop'} = 0; # Drop table cannot take many tables
+ $limits{'subqueries'} = 1; # Supports sub-queries.
+ $limits{'left_outer_join'} = 1; # Supports left outer joins
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING
+ $limits{'having_with_group'} = 0; # Can use group functions in HAVING
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1'
+ $limits{'group_by_position'} = 0; # Use of 'GROUP BY 1'
+ $limits{'alter_table'} = 1; # Have ALTER TABLE
+ $limits{'alter_add_multi_col'}= 0; # Have ALTER TABLE t add a int,add b int;
+ $limits{'alter_table_dropcol'}= 0; # Have ALTER TABLE DROP column
+ $limits{'insert_multi_value'} = 1;
+
+ $limits{'group_func_extra_std'} = 0; # Does not have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Have function mod.
+ $limits{'func_extra_%'} = 0; # Does not have % as alias for mod()
+ $limits{'func_odbc_floor'} = 0; # Has func_odbc_floor function
+ $limits{'func_extra_if'} = 0; # Does not have function if.
+ $limits{'column_alias'} = 1; # Alias for fields in select statement.
+ $limits{'NEG'} = 1; # Supports -id
+ $limits{'func_extra_in_num'} = 0; # Has function in
+ $limits{'limit'} = 0; # Does not support the limit attribute
+ $limits{'insert_select'} = 0;
+ $limits{'order_by_unused'} = 0;
+
+ # We don't get an error for duplicate row in 'test-insert'
+ $limits{'unique_index'} = 0; # Unique index works or not
+ # We can't use a blob as a normal string (we got a wierd error)
+ $limits{'working_blobs'} = 0;
+ # 'select min(region),max(region) from bench1' kills the server after a while
+ $limits{'group_func_sql_min_str'} = 0;
+ # If you do select f1,f2,f3...f200 from table, Frontbase dies.
+ $limits{'working_all_fields'} = 0;
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+# $dbh=$self->connect();
+#
+# Pick up SQLGetInfo option SQL_DBMS_VER (18)
+#
+ #$version = $dbh->func(18, GetInfo);
+ $version="FrontBase 3.3";
+# $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+#
+# Connection with optional disabling of logging
+#
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'},
+ $main::opt_user,
+ $main::opt_password,
+ { PrintError => 0 ,
+ 'fb_host'=>$main::opt_host
+ }) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+ $db->{AutoCommit}=1;
+ # $dbh->do("SET OPTION LOG_OFF=1,UPDATE_LOG=0");
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+# If one uses $main::opt_fast then one is allowed to use
+# non standard types to get better speed.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index,$options) = @_;
+ my($query,@queries,@indexes,@keys);
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/ blob/ varchar(32000)/i;
+ $field =~ s/ big_decimal/ float/i;
+ $field =~ s/ double/ float/i;
+ $field =~ s/ tinyint/ smallint/i;
+ $field =~ s/ mediumint/ int/i;
+ $field =~ s/ integer/ int/i;
+ $field =~ s/ float\(\d,\d\)/ float/i;
+ $field =~ s/ smallint\(\d\)/ smallint/i;
+ $field =~ s/ int\(\d\)/ int/i;
+ $query.= $field . ',';
+ }
+ foreach $ind (@$index)
+ {
+# my @index;
+ if ( $ind =~ /(\bKEY\b)|(\bUNIQUE\b)/i ){
+ push(@keys,"ALTER TABLE $table_name ADD $ind");
+ }else{
+ my @fields = split(' ',$ind);
+ my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
+ push(@indexes,$query);
+ }
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ $query.=" $options" if (defined($options));
+ push(@queries,$query,@keys,@indexes);
+ return @queries;
+}
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ print "insert of an ascii file isn't supported by InterBase\n";
+ return 0;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index {
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0 if ($DBI::errstr =~ /No raw data handle/);
+ return 1;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 1;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+#############################################################################
+# Configuration for SAPDB
+#############################################################################
+
+package db_sapdb;
+
+sub new
+{
+ my ($type,$host,$database)= @_;
+ my $self= {};
+ my %limits;
+ bless $self;
+
+ $self->{'cmp_name'} = "sapdb";
+ $self->{'data_source'} = "DBI:SAP_DB:$database";
+ $self->{'limits'} = \%limits;
+ $self->{'blob'} = "LONG"; # *
+ $self->{'text'} = "LONG"; # *
+ $self->{'double_quotes'} = 1; # Can handle: 'Walker''s'
+ $self->{'drop_attr'} = "";
+ $self->{'transactions'} = 1; # Transactions enabled *
+ $self->{'char_null'} = "";
+ $self->{'numeric_null'} = "";
+
+ $limits{'max_conditions'} = 9999; # (Actually not a limit) *
+ $limits{'max_columns'} = 1023; # Max number of columns in table *
+ $limits{'max_tables'} = 65000; # Should be big enough * unlimited actually
+ $limits{'max_temporary_tables'}= $limits{"max_tables"};
+ $limits{'max_text_size'} = 15000; # Max size with default buffers.
+ $limits{'query_size'} = 64*1024; # Max size with default buffers. *64 kb by default. May be set by system variable
+ $limits{'max_index'} = 510; # Max number of keys *
+ $limits{'max_index_parts'} = 16; # Max segments/key *
+ $limits{'max_column_name'} = 32; # max table and column name *
+
+ $limits{'join_optimizer'} = 1; # Can optimize FROM tables *
+ $limits{'load_data_infile'} = 0; # Has load data infile *
+ $limits{'lock_tables'} = 1; # Has lock tables
+ $limits{'functions'} = 1; # Has simple functions (+/-) *
+ $limits{'group_functions'} = 1; # Have group functions *
+ $limits{'group_func_sql_min_str'} = 1; # Can execute MIN() and MAX() on strings *
+ $limits{'group_distinct_functions'}= 1; # Have count(distinct) *
+ $limits{'select_without_from'}= 0; # Cannot do 'select 1'; *
+ $limits{'multi_drop'} = 0; # Drop table cannot take many tables *
+ $limits{'subqueries'} = 1; # Supports sub-queries. *
+ $limits{'left_outer_join'} = 1; # Supports left outer joins *
+ $limits{'table_wildcard'} = 1; # Has SELECT table_name.*
+ $limits{'having_with_alias'} = 0; # Can use aliases in HAVING *
+ $limits{'having_with_group'} = 1; # Can use group functions in HAVING *
+ $limits{'like_with_column'} = 1; # Can use column1 LIKE column2 *
+ $limits{'order_by_position'} = 1; # Can use 'ORDER BY 1' *
+ $limits{'group_by_position'} = 0; # Cannot use 'GROUP BY 1' *
+ $limits{'alter_table'} = 1; # Have ALTER TABLE *
+ $limits{'alter_add_multi_col'}= 1; # Have ALTER TABLE t add a int,add b int; *
+ $limits{'alter_table_dropcol'}= 1; # Have ALTER TABLE DROP column *
+ $limits{'insert_multi_value'} = 0; # INSERT ... values (1,2),(3,4) *
+
+ $limits{'group_func_extra_std'} = 0; # Does not have group function std().
+
+ $limits{'func_odbc_mod'} = 0; # Have function mod. *
+ $limits{'func_extra_%'} = 0; # Does not have % as alias for mod() *
+ $limits{'func_odbc_floor'} = 1; # Has func_odbc_floor function *
+ $limits{'func_extra_if'} = 0; # Does not have function if. *
+ $limits{'column_alias'} = 1; # Alias for fields in select statement. *
+ $limits{'NEG'} = 1; # Supports -id *
+ $limits{'func_extra_in_num'} = 0; # Has function in *
+ $limits{'limit'} = 0; # Does not support the limit attribute *
+ $limits{'working_blobs'} = 1; # If big varchar/blobs works *
+ $limits{'order_by_unused'} = 1; #
+ $limits{'working_all_fields'} = 1; #
+ $limits{'multi_distinct'} = 1; # allows select count(distinct a),count(distinct b)..
+
+
+ return $self;
+}
+
+#
+# Get the version number of the database
+#
+
+sub version
+{
+ my ($self)=@_;
+ my ($dbh,$sth,$version,@row);
+
+ $dbh=$self->connect();
+ $sth = $dbh->prepare("SELECT KERNEL FROM VERSIONS") or die $DBI::errstr;
+ $version="SAP DB (unknown)";
+ if ($sth->execute && (@row = $sth->fetchrow_array)
+ && $row[0] =~ /([\d\.]+)/)
+ {
+ $version=$row[0];
+ $version =~ s/KERNEL/SAP DB/i;
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ $version .= "/ODBC" if ($self->{'data_source'} =~ /:ODBC:/);
+ return $version;
+}
+
+#
+# Connection with optional disabling of logging
+#
+
+sub connect
+{
+ my ($self)=@_;
+ my ($dbh);
+ $dbh=DBI->connect($self->{'data_source'}, $main::opt_user,
+ $main::opt_password,{ PrintError => 0, AutoCommit => 1}) ||
+ die "Got error: '$DBI::errstr' when connecting to " . $self->{'data_source'} ." with user: '$main::opt_user' password: '$main::opt_password'\n";
+
+ return $dbh;
+}
+
+#
+# Returns a list of statements to create a table
+# The field types are in ANSI SQL format.
+#
+
+sub create
+{
+ my($self,$table_name,$fields,$index,$options) = @_;
+ my($query,@queries,$nr);
+ my @index;
+ my @keys;
+
+ $query="create table $table_name (";
+ foreach $field (@$fields)
+ {
+ $field =~ s/\bmediumint\b/int/i;
+ $field =~ s/\btinyint\b/int/i;
+ $field =~ s/ int\(\d\)/ int/i;
+ $field =~ s/BLOB/LONG/i;
+ $field =~ s/INTEGER\s*\(\d+\)/INTEGER/i;
+ $field =~ s/SMALLINT\s*\(\d+\)/SMALLINT/i;
+ $field =~ s/FLOAT\s*\((\d+),\d+\)/FLOAT\($1\)/i;
+ $field =~ s/DOUBLE/FLOAT\(38\)/i;
+ $field =~ s/DOUBLE\s+PRECISION/FLOAT\(38\)/i;
+ $query.= $field . ',';
+ }
+ $nr=0;
+ foreach $ind (@$index)
+ {
+ if ( $ind =~ /\bKEY\b/i ){
+ push(@keys,"ALTER TABLE $table_name ADD $ind");
+ } elsif ($ind =~ /^unique.*\(([^\(]*)\)$/i) {
+ $nr++;
+ my $query="create unique index ${table_name}_$nr on $table_name ($1)";
+ push(@index,$query);
+ }else{
+ my @fields = split(' ',$ind);
+ my $query="CREATE INDEX $fields[1] ON $table_name $fields[2]";
+ push(@index,$query);
+ }
+ }
+ substr($query,-1)=")"; # Remove last ',';
+ $query.=" $options" if (defined($options));
+ push(@queries,$query);
+ push(@queries,@keys);
+ push(@queries,@index);
+ return @queries;
+}
+
+sub insert_file {
+ my($self,$dbname, $file) = @_;
+ print "insert of an ascii file isn't supported by SAPDB\n";
+ return 0;
+}
+
+#
+# Do any conversions to the ANSI SQL query so that the database can handle it
+#
+
+sub query {
+ my($self,$sql) = @_;
+ return $sql;
+}
+
+sub drop_index {
+ my ($self,$table,$index) = @_;
+ return "DROP INDEX $index";
+}
+
+#
+# Abort if the server has crashed
+# return: 0 if ok
+# 1 question should be retried
+#
+
+sub abort_if_fatal_error
+{
+ return 0;
+}
+
+sub small_rollback_segment
+{
+ return 0;
+}
+
+sub reconnect_on_errors
+{
+ return 0;
+}
+
+sub fix_for_insert
+{
+ my ($self,$cmd) = @_;
+ return $cmd;
+}
+
+1;
diff --git a/sql-bench/test-ATIS.sh b/sql-bench/test-ATIS.sh
new file mode 100644
index 00000000..2eca4bed
--- /dev/null
+++ b/sql-bench/test-ATIS.sh
@@ -0,0 +1,567 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# Test of creating the ATIS database and doing many different selects on it
+#
+# changes made for Oracle compatibility
+# - added Oracle to the '' to ' ' translation
+# - skip blank lines from the datafiles
+# - skip a couple of the tests in Q4 that Oracle doesn't understand
+################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count=5000; # Run selects this many times
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=10;
+}
+
+print "ATIS table test\n\n";
+
+####
+#### Connect and start timeing
+####
+
+$dbh = $server->connect();
+$start_time=new Benchmark;
+
+####
+#### Create needed tables
+####
+
+init_data(); # Get table definitions
+
+if (!$opt_skip_create)
+{
+ print "Creating tables\n";
+ $loop_time= new Benchmark;
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ my $array_ref = $tables[$ti];
+
+ # This may fail if we have no table so do not check answer
+ $sth = $dbh->do("drop table $table_name" . $server->{'drop_attr'});
+
+ print "Creating table $table_name\n" if ($opt_verbose);
+ do_many($dbh,@$array_ref);
+ }
+ $end_time=new Benchmark;
+ print "Time for create_table (" . ($#tables+1) ."): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+ if ($opt_fast && defined($server->{vacuum}))
+ {
+ $server->vacuum(0,\$dbh);
+ }
+
+####
+#### Insert data
+####
+
+ print "Inserting data\n";
+
+ $loop_time= new Benchmark;
+ $row_count=0;
+ $double_quotes=$server->{'double_quotes'};
+
+ if ($opt_lock_tables)
+ {
+ @tmp=@table_names; push(@tmp,@extra_names);
+ print "LOCK TABLES @tmp\n" if ($opt_debug);
+ $sth = $dbh->do("LOCK TABLES " . join(" WRITE,", @tmp) . " WRITE") ||
+ die $DBI::errstr;
+ }
+
+ if ($opt_fast && $server->{'limits'}->{'load_data_infile'})
+ {
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ my $file = "$pwd/Data/ATIS/${table_name}.txt";
+ print "$table_name - $file\n" if ($opt_debug);
+ $row_count += $server->insert_file($table_name,$file,$dbh);
+ }
+ }
+ else
+ {
+ if ($opt_fast && $server->{transactions})
+ {
+ $dbh->{AutoCommit} = 0;
+ print "Transactions enabled\n" if ($opt_debug);
+ }
+
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ my $array_ref = $tables[$ti];
+ my @table = @$array_ref;
+ my $insert_start = "insert into $table_name values (";
+
+ open(DATA, "$pwd/Data/ATIS/${table_name}.txt") || die "Can't open text file: $pwd/Data/ATIS/${table_name}.txt\n";
+ while(<DATA>)
+ {
+ chomp;
+ next unless ( $_ =~ /\w/ ); # skip blank lines
+ my $command = $insert_start . $_ . ")";
+ $command = $server->fix_for_insert($command);
+ print "$command\n" if ($opt_debug);
+ $command =~ s/\\'/\'\'/g if ($double_quotes);
+
+ $sth = $dbh->do($command) or die "Got error: $DBI::errstr when executing '$command'\n";
+ $row_count++;
+ }
+ }
+ if ($opt_fast && $server->{transactions})
+ {
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+ }
+ close(DATA);
+ }
+
+ if ($opt_lock_tables)
+ {
+ $dbh->do("UNLOCK TABLES");
+ }
+ $end_time=new Benchmark;
+ print "Time to insert ($row_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh,@table_names);
+}
+
+if ($opt_lock_tables)
+{
+ @tmp=@table_names; push(@tmp,@extra_names);
+ $sth = $dbh->do("LOCK TABLES " . join(" READ,", @tmp) . " READ") ||
+ die $DBI::errstr;
+}
+#
+# Now the fun begins. Let's do some simple queries on the result
+#
+# The query array is defined as:
+# query, number of rows in result, 0|1 where 1 means that the query is possible
+#
+
+print "Retrieving data\n";
+@Q1=("select_simple_join",
+ "select city.city_name,state.state_name,city.city_code from city,state where city.city_code='MATL' and city.state_code=state.state_code",1,1,
+ "select city.city_name,state.state_name,city.city_code from state,city where city.state_code=state.state_code",11,1,
+ "select month_name.month_name,day_name.day_name from month_name,day_name where month_name.month_number=day_name.day_code",7,1,
+ "select month_name.month_name,day_name.day_name from month_name,day_name where month_name.month_number=day_name.day_code and day_name.day_code >= 4",4,1,
+ "select flight.flight_code,aircraft.aircraft_type from flight,aircraft where flight.aircraft_code=aircraft.aircraft_code",579,1,
+ );
+
+@Q2=("select_join",
+ "select airline.airline_name,aircraft.aircraft_type from aircraft,airline,flight where flight.aircraft_code=aircraft.aircraft_code and flight.airline_code=airline.airline_code",579,1);
+
+@Q21=("select_key_prefix_join",
+ "select fare.fare_code from restrict_carrier,airline,fare where restrict_carrier.airline_code=airline.airline_code and fare.restrict_code=restrict_carrier.restrict_code",5692,1,
+ );
+
+@Q3=("select_distinct",
+ "select distinct category from aircraft",6,1,
+ "select distinct from_airport from flight",9,1,
+ "select distinct aircraft_code from flight",22,1,
+ "select distinct * from fare",534,1,
+ "select distinct flight_code from flight_fare",579,1,
+ "select distinct flight.flight_code,aircraft.aircraft_type from flight,aircraft where flight.aircraft_code=aircraft.aircraft_code",579,1,
+ "select distinct airline.airline_name,aircraft.aircraft_type from aircraft,airline,flight where flight.aircraft_code=aircraft.aircraft_code and flight.airline_code=airline.airline_code",44,$limits->{'join_optimizer'},
+ "select distinct airline.airline_name,aircraft.aircraft_type from flight,aircraft,airline where flight.aircraft_code=aircraft.aircraft_code and flight.airline_code=airline.airline_code",44,1,
+ );
+
+@Q4=("select_group",
+ "select day_name.day_name,day_name.day_code,count(*) from flight_day,day_name where day_name.day_code=flight_day.day_code group by day_name.day_name,day_name.day_code order by day_name.day_code",7,$limits->{'group_functions'},
+ "select day_name.day_name,count(*) from flight_day,day_name where day_name.day_code=flight_day.day_code group by day_name.day_name",7,$limits->{'group_functions'},
+ "select month_name,day_name from month_name,day_name where month_number=day_code and day_code>3 group by month_name,day_name",4,$limits->{'group_functions'},
+ "select day_name.day_name,flight_day.day_code,count(*) from flight_day,day_name where day_name.day_code=flight_day.day_code group by flight_day.day_code,day_name.day_name order by flight_day.day_code",7,$limits->{'group_functions'},
+ "select sum(engines) from aircraft",1,$limits->{'group_functions'},
+ "select avg(engines) from aircraft",1,$limits->{'group_functions'},
+ "select avg(engines) from aircraft where engines>0",1,$limits->{'group_functions'},
+ "select count(*),min(pay_load),max(pay_load) from aircraft where pay_load>0",1,$limits->{'group_functions'},
+ "select min(flight_code),min(flight_code) from flight",1,$limits->{'group_functions'},
+ "select min(from_airport),min(to_airport) from flight",1,$limits->{'group_functions'} && $limits->{'group_func_sql_min_str'},
+ "select count(*) from aircraft where pay_load>10000",1,$limits->{'group_functions'},
+ "select count(*) from aircraft where pay_load<>0",1,$limits->{'group_functions'},
+ "select count(*) from flight where flight_code >= 112793",1,$limits->{'group_functions'},
+ "select count(if(pay_load,1,NULL)) from aircraft",1,$limits->{'if'} && $limits->{'group_functions'},
+ "select std(engines) from aircraft",1,$limits->{'group_func_extra_std'},
+ "SELECT from_airport,to_airport,avg(time_elapsed) FROM flight WHERE from_airport='ATL' AND to_airport='BOS' group by from_airport,to_airport",1,$limits->{'group_functions'},
+ "select city_code, avg(ground_fare) from ground_service where ground_fare<>0 group by city_code",11,$limits->{'group_functions'},
+ "select count(*), ground_service.city_code from ground_service group by ground_service.city_code",12,$limits->{'group_functions'},
+ "select category,count(*) as totalnr from aircraft where engines=2 group by category having totalnr>4",3,$limits->{'group_functions'} && $limits->{'having_with_alias'},
+ "select category,count(*) from aircraft where engines=2 group by category having count(*)>4",3,$limits->{'group_functions'} && $limits->{'having_with_group'},
+ "select flight_number,range_miles,fare_class FROM aircraft,flight,flight_class WHERE flight.flight_code=flight_class.flight_code AND flight.aircraft_code=aircraft.aircraft_code AND range_miles<>0 AND (stops=1 OR stops=2) GROUP BY flight_number,range_miles,fare_class",150,$limits->{'group_functions'},
+ "select distinct from_airport.time_zone_code,to_airport.time_zone_code,(FLOOR(arrival_time/100)*60+MOD(arrival_time,100)-FLOOR(departure_time/100)*60-MOD(departure_time,100)-time_elapsed)/60 AS time_zone_diff FROM flight,airport AS from_airport,airport AS to_airport WHERE flight.from_airport=from_airport.airport_code AND flight.to_airport=to_airport.airport_code GROUP BY from_airport.time_zone_code,to_airport.time_zone_code,arrival_time,departure_time,time_elapsed",21,$limits->{'func_odbc_mod'} && $limits->{'func_odbc_floor'} && $limits->{'group_functions'},
+ "select DISTINCT from_airport.time_zone_code,to_airport.time_zone_code,MOD(CAST((FLOOR(arrival_time/100)*60+MOD(arrival_time,100)-FLOOR(departure_time/100)*60-MOD(departure_time,100)-time_elapsed)/60+36 AS INTEGER),24)-12 AS time_zone_diff FROM flight,airport AS from_airport,airport AS to_airport WHERE flight.from_airport=from_airport.airport_code AND flight.to_airport=to_airport.airport_code and MOD(CAST((FLOOR(arrival_time/100)*60+MOD(arrival_time,100)-FLOOR(departure_time/100)*60-MOD(departure_time,100)-time_elapsed)/60+36 AS INTEGER),24)-12 < 10",14,$limits->{'func_odbc_mod'} && $limits->{'func_odbc_floor'} && $limits->{'group_functions'},
+ "select from_airport,to_airport,range_miles,time_elapsed FROM aircraft,flight WHERE aircraft.aircraft_code=flight.aircraft_code AND to_airport NOT LIKE from_airport AND range_miles<>0 AND time_elapsed<>0 GROUP BY from_airport,to_airport,range_miles,time_elapsed",409,$limits->{'group_functions'} && $limits->{'like_with_column'},
+ "SELECT airport.country_name,state.state_name,city.city_name,airport_service.direction FROM airport_service,state,airport,city WHERE airport_service.city_code=city.city_code AND airport_service.airport_code=airport.airport_code AND state.state_code=airport.state_code AND state.state_code=city.state_code AND airport.state_code=city.state_code AND airport.country_name=city.country_name AND airport.country_name=state.country_name AND city.time_zone_code=airport.time_zone_code GROUP BY airport.country_name,state.state_name,city.city_name,airport_service.direction ORDER BY state_name",11,$limits->{'group_functions'},
+ "SELECT airport.country_name,state.state_name,city.city_name,airport_service.direction FROM airport_service,state,airport,city WHERE airport_service.city_code=city.city_code AND airport_service.airport_code=airport.airport_code AND state.state_code=airport.state_code AND state.state_code=city.state_code AND airport.state_code=city.state_code AND airport.country_name=city.country_name AND airport.country_name=state.country_name AND city.time_zone_code=airport.time_zone_code GROUP BY airport.country_name,state.state_name,city.city_name,airport_service.direction ORDER BY state_name DESC",11,$limits->{'group_functions'},
+ "SELECT airport.country_name,state.state_name,city.city_name,airport_service.direction FROM airport_service,state,airport,city WHERE airport_service.city_code=city.city_code AND airport_service.airport_code=airport.airport_code AND state.state_code=airport.state_code AND state.state_code=city.state_code AND airport.state_code=city.state_code AND airport.country_name=city.country_name AND airport.country_name=state.country_name AND city.time_zone_code=airport.time_zone_code GROUP BY airport.country_name,state.state_name,city.city_name,airport_service.direction ORDER BY state_name",11,$limits->{'group_functions'},
+ "SELECT from_airport,to_airport,fare.fare_class,night,one_way_cost,rnd_trip_cost,class_days FROM compound_class,fare WHERE compound_class.fare_class=fare.fare_class AND one_way_cost <= 825 AND one_way_cost >= 280 AND from_airport='SFO' AND to_airport='DFW' GROUP BY from_airport,to_airport,fare.fare_class,night,one_way_cost,rnd_trip_cost,class_days ORDER BY one_way_cost",10,$limits->{'group_functions'},
+ "select engines,category,cruising_speed,from_airport,to_airport FROM aircraft,flight WHERE category='JET' AND engines >= 1 AND aircraft.aircraft_code=flight.aircraft_code AND to_airport NOT LIKE from_airport AND stops>0 GROUP BY engines,category,cruising_speed,from_airport,to_airport ORDER BY engines DESC",29,$limits->{'group_functions'} && $limits->{'like_with_column'},
+ );
+
+@Q=(\@Q1,\@Q2,\@Q21,\@Q3,\@Q4);
+
+
+foreach $Q (@Q)
+{
+ $count=$estimated=0;
+ $loop_time= new Benchmark;
+ for ($i=1 ; $i <= $opt_loop_count; $i++)
+ {
+ for ($j=1 ; $j < $#$Q ; $j+=3)
+ {
+ if ($Q->[$j+2])
+ { # We can do it with current limits
+ $count++;
+ if ($i == 100) # Do something different
+ {
+ if (($row_count=fetch_all_rows($dbh,$server->query($Q->[$j]))) !=
+ $Q->[$j+1])
+ {
+ if ($row_count == undef())
+ {
+ die "Got error: $DBI::errstr when executing " . $Q->[$j] ."\n"."got $row_count instead of $Q->[$j+1] *** \n";
+ }
+ print "Warning: Query '" . $Q->[$j] . "' returned $row_count rows when it should have returned " . $Q->[$j+1] . " rows\n";
+ }
+ }
+ else
+ {
+ defined(fetch_all_rows($dbh,$server->query($Q->[$j])))
+ or die "ERROR: $DBI::errstr executing '$Q->[$j]'\n";
+ }
+ }
+ }
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i,
+ $opt_loop_count));
+ print "Loop $i\n" if ($opt_verbose);
+ }
+ if ($count)
+ {
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for " . $Q->[0] . " ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+ }
+}
+
+print "\n";
+
+####
+#### Delete the tables
+####
+
+if (!$opt_skip_delete) # Only used when testing
+{
+ print "Removing tables\n";
+ $loop_time= new Benchmark;
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
+ }
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ $sth = $dbh->do("drop table $table_name" . $server->{'drop_attr'});
+ }
+
+ $end_time=new Benchmark;
+ print "Time to drop_table (" .($#table_names+1) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+####
+#### End of benchmark
+####
+
+$dbh->disconnect; # close connection
+
+end_benchmark($start_time);
+
+
+sub init_data
+{
+ @aircraft=
+ $server->create("aircraft",
+ ["aircraft_code char(3) NOT NULL",
+ "aircraft_type char(64) NOT NULL",
+ "engines tinyint(1) NOT NULL",
+ "category char(10) NOT NULL",
+ "wide_body char(3) NOT NULL",
+ "wing_span float(6,2) NOT NULL",
+ "length1 float(6,2) NOT NULL",
+ "weight integer(7) NOT NULL",
+ "capacity smallint(3) NOT NULL",
+ "pay_load integer(7) NOT NULL",
+ "cruising_speed mediumint(5) NOT NULL",
+ "range_miles mediumint(5) NOT NULL",
+ "pressurized char(3) NOT NULL"],
+ ["PRIMARY KEY (aircraft_code)"]);
+ @airline=
+ $server->create("airline",
+ ["airline_code char(2) NOT NULL",
+ "airline_name char(64) NOT NULL",
+ "notes char(38) NOT NULL"],
+ ["PRIMARY KEY (airline_code)"]);
+ @airport=
+ $server->create("airport",
+ ["airport_code char(3) NOT NULL",
+ "airport_name char(40) NOT NULL",
+ "location char(36) NOT NULL",
+ "state_code char(2) NOT NULL",
+ "country_name char(25) NOT NULL",
+ "time_zone_code char(3) NOT NULL"],
+ ["PRIMARY KEY (airport_code)"]);
+ @airport_service=
+ $server->create("airport_service",
+ ["city_code char(4) NOT NULL",
+ "airport_code char(3) NOT NULL",
+ "miles_distant float(4,1) NOT NULL",
+ "direction char(3) NOT NULL",
+ "minutes_distant smallint(3) NOT NULL"],
+ ["PRIMARY KEY (city_code, airport_code)"]);
+ @city=
+ $server->create("city",
+ ["city_code char(4) NOT NULL",
+ "city_name char(25) NOT NULL",
+ "state_code char(2) NOT NULL",
+ "country_name char(25) NOT NULL",
+ "time_zone_code char(3) NOT NULL"],
+ ["PRIMARY KEY (city_code)"]);
+ @class_of_service=
+ $server->create("class_of_service",
+ ["class_code char(2) NOT NULL",
+ "rank tinyint(2) NOT NULL",
+ "class_description char(80) NOT NULL"],
+ ["PRIMARY KEY (class_code)"]);
+ @code_description=
+ $server->create("code_description",
+ ["code char(5) NOT NULL",
+ "description char(110) NOT NULL"],
+ ["PRIMARY KEY (code)"]);
+ @compound_class=
+ $server->create("compound_class",
+ ["fare_class char(3) NOT NULL",
+ "base_class char(2) NOT NULL",
+ "class_type char(10) NOT NULL",
+ "premium char(3) NOT NULL",
+ "economy char(3) NOT NULL",
+ "discounted char(3) NOT NULL",
+ "night char(3) NOT NULL",
+ "season_fare char(4) NOT NULL",
+ "class_days char(7) NOT NULL"],
+ ["PRIMARY KEY (fare_class)"]);
+ @connect_leg=
+ $server->create("connect_leg",
+ ["connect_code integer(8) NOT NULL",
+ "leg_number tinyint(1) NOT NULL",
+ "flight_code integer(8) NOT NULL"],
+ ["PRIMARY KEY (connect_code, leg_number, flight_code)"]);
+ @connection=
+ $server->create("fconnection",
+ ["connect_code integer(8) NOT NULL",
+ "from_airport char(3) NOT NULL",
+ "to_airport char(3) NOT NULL",
+ "departure_time smallint(4) NOT NULL",
+ "arrival_time smallint(4) NOT NULL",
+ "flight_days char(7) NOT NULL",
+ "stops tinyint(1) NOT NULL",
+ "connections tinyint(1) NOT NULL",
+ "time_elapsed smallint(4) NOT NULL"],
+ ["PRIMARY KEY (connect_code)",
+ "INDEX from_airport1 (from_airport)",
+ "INDEX to_airport1 (to_airport)"]);
+ @day_name=
+ $server->create("day_name",
+ ["day_code tinyint(1) NOT NULL",
+ "day_name char(9) NOT NULL"],
+ ["PRIMARY KEY (day_code)"]);
+ @dual_carrier=
+ $server->create("dual_carrier",
+ ["main_airline char(2) NOT NULL",
+ "dual_airline char(2) NOT NULL",
+ "low_flight smallint(4) NOT NULL",
+ "high_flight smallint(4) NOT NULL",
+ "fconnection_name char(64) NOT NULL"],
+ ["PRIMARY KEY (main_airline, dual_airline, low_flight)",
+ "INDEX main_airline1 (main_airline)"]);
+
+ @fare=
+ $server->create("fare",
+ ["fare_code char(8) NOT NULL",
+ "from_airport char(3) NOT NULL",
+ "to_airport char(3) NOT NULL",
+ "fare_class char(3) NOT NULL",
+ "fare_airline char(2) NOT NULL",
+ "restrict_code char(5) NOT NULL",
+ "one_way_cost float(7,2) NOT NULL",
+ "rnd_trip_cost float(8,2) NOT NULL"],
+ ["PRIMARY KEY (fare_code)",
+ "INDEX from_airport2 (from_airport)",
+ "INDEX to_airport2 (to_airport)"]);
+ @flight=
+ $server->create("flight",
+ ["flight_code integer(8) NOT NULL",
+ "flight_days char(7) NOT NULL",
+ "from_airport char(3) NOT NULL",
+ "to_airport char(3) NOT NULL",
+ "departure_time smallint(4) NOT NULL",
+ "arrival_time smallint(4) NOT NULL",
+ "airline_code char(2) NOT NULL",
+ "flight_number smallint(4) NOT NULL",
+ "class_string char(8) NOT NULL",
+ "aircraft_code char(3) NOT NULL",
+ "meal_code char(7) NOT NULL",
+ "stops tinyint(1) NOT NULL",
+ "dual_carrier char(1) NOT NULL",
+ "time_elapsed smallint(4) NOT NULL"],
+ ["PRIMARY KEY (flight_code)",
+ "INDEX from_airport3 (from_airport)",
+ "INDEX to_airport3 (to_airport)"]);
+ @flight_class=
+ $server->create("flight_class",
+ ["flight_code integer(8) NOT NULL",
+ "fare_class char(3) NOT NULL"],
+ ["PRIMARY KEY (flight_code, fare_class)"]);
+ @flight_day=
+ $server->create("flight_day",
+ ["day_mask char(7) NOT NULL",
+ "day_code tinyint(1) NOT NULL",
+ "day_name char(9) NOT NULL"],
+ ["PRIMARY KEY (day_mask, day_code)"]);
+ @flight_fare=
+ $server->create("flight_fare",
+ ["flight_code integer(8) NOT NULL",
+ "fare_code char(8) NOT NULL"],
+ ["PRIMARY KEY (flight_code, fare_code)"]);
+ @food_service=
+ $server->create("food_service",
+ ["meal_code char(4) NOT NULL",
+ "meal_number tinyint(1) NOT NULL",
+ "meal_class char(10) NOT NULL",
+ "meal_description char(10) NOT NULL"],
+ ["PRIMARY KEY (meal_code, meal_number, meal_class)"]);
+ @ground_service=
+ $server->create("ground_service",
+ ["city_code char(4) NOT NULL",
+ "airport_code char(3) NOT NULL",
+ "transport_code char(1) NOT NULL",
+ "ground_fare float(6,2) NOT NULL"],
+ ["PRIMARY KEY (city_code, airport_code, transport_code)"]);
+ @time_interval=
+ $server->create("time_interval",
+ ["period char(20) NOT NULL",
+ "begin_time smallint(4) NOT NULL",
+ "end_time smallint(4) NOT NULL"],
+ ["PRIMARY KEY (period, begin_time)"]);
+ @month_name=
+ $server->create("month_name",
+ ["month_number tinyint(2) NOT NULL",
+ "month_name char(9) NOT NULL"],
+ ["PRIMARY KEY (month_number)"]);
+ @restrict_carrier=
+ $server->create("restrict_carrier",
+ ["restrict_code char(5) NOT NULL",
+ "airline_code char(2) NOT NULL"],
+ ["PRIMARY KEY (restrict_code, airline_code)"]);
+ @restrict_class=
+ $server->create("restrict_class",
+ ["restrict_code char(5) NOT NULL",
+ "ex_fare_class char(12) NOT NULL"],
+ ["PRIMARY KEY (restrict_code, ex_fare_class)"]);
+ @restriction=
+ $server->create("restriction",
+ ["restrict_code char(5) NOT NULL",
+ "application char(80) NOT NULL",
+ "no_discounts char(80) NOT NULL",
+ "reserve_ticket smallint(3) NOT NULL",
+ "stopovers char(1) NOT NULL",
+ "return_min smallint(3) NOT NULL",
+ "return_max smallint(3) NOT NULL"],
+ ["PRIMARY KEY (restrict_code)"]);
+ @state=
+ $server->create("state",
+ ["state_code char(2) NOT NULL",
+ "state_name char(25) NOT NULL",
+ "country_name char(25) NOT NULL"],
+ ["PRIMARY KEY (state_code)"]);
+ @stop=
+ $server->create("stop1",
+ ["flight_code integer(8) NOT NULL",
+ "stop_number tinyint(1) NOT NULL",
+ "stop_flight integer(8) NOT NULL"],
+ ["PRIMARY KEY (flight_code, stop_number)"]);
+ @time_zone=
+ $server->create("time_zone",
+ ["time_zone_code char(3) NOT NULL",
+ "time_zone_name char(32) NOT NULL"],
+ ["PRIMARY KEY (time_zone_code, time_zone_name)"]);
+ @transport=
+ $server->create("transport",
+ ["transport_code char(1) NOT NULL",
+ "transport_desc char(32) NOT NULL"],
+ ["PRIMARY KEY (transport_code)"]);
+
+# Avoid not used warnings
+
+ @tables =
+ (\@aircraft, \@airline, \@airport, \@airport_service,
+ \@city, \@class_of_service, \@code_description,
+ \@compound_class, \@connect_leg, \@connection, \@day_name,
+ \@dual_carrier, \@fare, \@flight, \@flight_class, \@flight_day,
+ \@flight_fare, \@food_service, \@ground_service, \@time_interval,
+ \@month_name,
+ \@restrict_carrier, \@restrict_class, \@restriction, \@state, \@stop,
+ \@time_zone, \@transport);
+
+ @table_names =
+ ("aircraft", "airline", "airport", "airport_service",
+ "city", "class_of_service", "code_description",
+ "compound_class", "connect_leg", "fconnection", "day_name",
+ "dual_carrier", "fare", "flight", "flight_class", "flight_day",
+ "flight_fare", "food_service", "ground_service", "time_interval",
+ "month_name",
+ "restrict_carrier", "restrict_class", "restriction", "state", "stop1",
+ "time_zone", "transport");
+
+# Alias used in joins
+ @extra_names=("airport as from_airport","airport as to_airport");
+}
diff --git a/sql-bench/test-alter-table.sh b/sql-bench/test-alter-table.sh
new file mode 100644
index 00000000..350c6fae
--- /dev/null
+++ b/sql-bench/test-alter-table.sh
@@ -0,0 +1,269 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# Test of alter table
+#
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_start_field_count=8; # start with this many fields
+$opt_loop_count=10000; # How many tests to do
+$opt_row_count=1000; # Rows in the table
+$opt_field_count=1000; # Add until this many fields.
+$opt_time_limit=10*60; # Don't wait more than 10 min for some tests
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+$opt_field_count=min($opt_field_count,$limits->{'max_columns'},
+ ($limits->{'query_size'}-30)/14);
+$opt_start_field_count=min($opt_start_field_count,$limits->{'max_index'});
+
+if ($opt_small_test)
+{
+ $opt_row_count/=10;
+ $opt_field_count/=10;
+}
+
+if (!$limits->{'alter_table'})
+{
+ print("Some of the servers given with --cmp or --server doesn't support ALTER TABLE\nTest aborted\n\n");
+ $start_time=new Benchmark;
+ end_benchmark($start_time);
+ exit 0;
+}
+
+print "Testing of ALTER TABLE\n";
+print "Testing with $opt_field_count columns and $opt_row_count rows in $opt_loop_count steps\n";
+
+####
+#### Create a table and fill it with data
+####
+
+$dbh = $server->connect();
+@fields=();
+@index=();
+push(@fields,"i1 int not null");
+for ($i=2 ; $i <= $opt_start_field_count ; $i++)
+{
+ push(@fields,"i${i} int not null");
+}
+$field_count= $opt_start_field_count;
+
+$start_time=new Benchmark;
+
+$dbh->do("drop table bench" . $server->{'drop_attr'});
+do_many($dbh,$server->create("bench",\@fields,\@index));
+
+print "Insert data into the table\n";
+
+$loop_time=new Benchmark;
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+ print "Transactions enabled\n" if ($opt_debug);
+}
+
+for ($i=0 ; $i < $opt_row_count ; $i++)
+{
+ $query="insert into bench values ( " . ("$i," x ($opt_start_field_count-1)) . "$i)";
+ $dbh->do($query) or die $DBI::errstr;
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+
+print "Time for insert ($opt_row_count)",
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+
+####
+#### Add fields to the table.
+####
+
+$loop_time=new Benchmark;
+$add= int(($opt_field_count-$opt_start_field_count)/$opt_loop_count)+1;
+
+$multi_add=$server->{'limits'}->{'alter_add_multi_col'} == 1;
+if ($opt_fast)
+{
+ $add=1 if (!$server->{'limits'}->{'alter_add_multi_col'});
+}
+else
+{
+ $add=1 if (!$limits->{'alter_add_multi_col'});
+}
+
+$count=0;
+while ($field_count < $opt_field_count)
+{
+ $count++;
+ $end=min($field_count+$add,$opt_field_count);
+ $fields="";
+ $tmp="ADD ";
+ while ($field_count < $end)
+ {
+ $field_count++;
+ $fields.=",$tmp i${field_count} integer";
+ $tmp="" if (!$multi_add); # Adabas
+ }
+ do_query($dbh,"ALTER TABLE bench " . substr($fields,1));
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$count,
+ $opt_field_count/$add+1));
+}
+
+$end_time=new Benchmark;
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for alter_table_add ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+#
+# If estimated, fix table to have known number of fields
+#
+if ($estimated && $field_count < $opt_field_count)
+{
+ $fields="";
+ $tmp="ADD ";
+ while ($field_count < $opt_field_count)
+ {
+ $field_count++;
+ $fields.=",$tmp i${field_count} integer";
+ $tmp="" if (!$multi_add); # Adabas
+ }
+ do_query($dbh,"ALTER TABLE bench " . substr($fields,1));
+}
+
+####
+#### Test adding and deleting index on the first $opt_start_fields
+####
+
+$loop_time=new Benchmark;
+
+$count= 0;
+for ($i=1; $i <= $opt_start_field_count ; $i++)
+{
+ $dbh->do("CREATE INDEX bench_ind$i ON bench (i${i})") || die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for create_index ($opt_start_field_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+$loop_time=new Benchmark;
+for ($i=1; $i <= $opt_start_field_count ; $i++)
+{
+ $dbh->do($server->drop_index("bench","bench_ind$i")) || die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for drop_index ($opt_start_field_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+####
+#### Delete fields from the table
+####
+
+goto skip_dropcol if (!$limits->{'alter_table_dropcol'});
+
+$loop_time=new Benchmark;
+
+$count=0;
+while ($field_count > $opt_start_field_count)
+{
+ $count++;
+ $end=max($field_count-$add,$opt_start_field_count);
+ $fields="";
+ while ($field_count > $end)
+ {
+ $fields.=",DROP i${field_count}";
+ $field_count--;
+ }
+ $dbh->do("ALTER TABLE bench " . substr($fields,1) . $server->{'drop_attr'})
+ || die $DBI::errstr;
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$count,
+ $opt_field_count/$add+1));
+}
+
+$end_time=new Benchmark;
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for alter_table_drop ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+####
+#### Add fields in middle of the table
+####
+
+goto skip_dropcol if (!$limits->{'alter_table_after'});
+
+$count=0;
+while ($field_count < $opt_field_count)
+{
+ $count++;
+ $end=min($field_count+$add,$opt_field_count);
+ $fields="";
+ $tmp="ADD ";
+ while ($field_count < $end)
+ {
+ $field_count++;
+ $fields.=",$tmp i${field_count} integer after i1";
+ $tmp="" if (!$multi_add); # Adabas
+ }
+ do_query($dbh,"ALTER TABLE bench " . substr($fields,1));
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$count,
+ $opt_field_count/$add+1));
+}
+
+$end_time=new Benchmark;
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for alter_table_add_in_middle ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+skip_dropcol:
+
+################################ END ###################################
+####
+#### End of the test...Finally print time used to execute the
+#### whole test.
+
+$dbh->do("drop table bench" . $server->{'drop_attr'});
+
+$dbh->disconnect;
+
+end_benchmark($start_time);
diff --git a/sql-bench/test-big-tables.sh b/sql-bench/test-big-tables.sh
new file mode 100644
index 00000000..6be907d0
--- /dev/null
+++ b/sql-bench/test-big-tables.sh
@@ -0,0 +1,174 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# Test of extreme tables.
+#
+
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count=70000; # Change this to make test harder/easier
+$opt_field_count=1000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+$opt_field_count=min($opt_field_count,$limits->{'max_columns'},
+ ($limits->{'query_size'}-30)/14);
+
+$opt_loop_count*=10 if ($opt_field_count<100); # mSQL has so few fields...
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=10;
+ $opt_field_count/=10;
+}
+
+
+print "Testing of some unusual tables\n";
+print "All tests are done $opt_loop_count times with $opt_field_count fields\n\n";
+
+
+####
+#### Testing many fields
+####
+
+$dbh = $server->connect();
+print "Testing table with $opt_field_count fields\n";
+
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'});
+
+my @fields=();
+my @index=();
+my $fields="i1";
+push(@fields,"$fields int");
+$values= "1," x ($opt_field_count-1) . "1";
+for ($i=2 ; $i <= $opt_field_count ; $i++)
+{
+ push(@fields,"i${i} int");
+ $fields.=",i${i}";
+}
+
+$start_time=new Benchmark;
+
+do_many($dbh,$server->create("bench1",\@fields,\@index));
+$sth = $dbh->do("insert into bench1 values ($values)") or die $DBI::errstr;
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+test_query("Testing select * from table with 1 record",
+ "Time to select_many_fields",
+ "select * from bench1",
+ $dbh,$opt_loop_count);
+
+
+if ($limits->{'working_all_fields'})
+{
+ test_query("Testing select all_fields from table with 1 record",
+ "Time to select_many_fields",
+ "select $fields from bench1",
+ $dbh,$opt_loop_count);
+}
+
+test_query("Testing insert VALUES()",
+ "Time to insert_many_fields",
+ "insert into bench1 values($values)",
+ $dbh,$opt_loop_count);
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+test_command("Testing insert (all_fields) VALUES()",
+ "Time to insert_many_fields",
+ "insert into bench1 ($fields) values($values)",
+ $dbh,$opt_loop_count);
+
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr;
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+################################ END ###################################
+####
+#### End of the test...Finally print time used to execute the
+#### whole test.
+
+$dbh->disconnect;
+
+end_benchmark($start_time);
+
+
+############################ HELP FUNCTIONS ##############################
+
+sub test_query
+{
+ my($test_text,$result_text,$query,$dbh,$count)=@_;
+ my($i,$loop_time,$end_time, $using_transactions);
+
+ print $test_text . "\n";
+ $loop_time=new Benchmark;
+
+ $using_transactions=0;
+ if ($opt_fast && server->{transactions} && $query=~ /^insert /i)
+ {
+ $using_transactions=1;
+ $dbh->{AutoCommit} = 0;
+ print "Transactions enabled\n" if ($opt_debug);
+ }
+ for ($i=0 ; $i < $count ; $i++)
+ {
+ defined(fetch_all_rows($dbh,$query)) or die $DBI::errstr;
+ }
+ if ($using_transactions)
+ {
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+ }
+
+ $end_time=new Benchmark;
+ print $result_text . "($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+
+sub test_command
+{
+ my($test_text,$result_text,$query,$dbh,$count)=@_;
+ my($i,$loop_time,$end_time);
+
+ print $test_text . "\n";
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $count ; $i++)
+ {
+ $dbh->do($query) or die $DBI::errstr;
+ }
+ $end_time=new Benchmark;
+ print $result_text . "($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
diff --git a/sql-bench/test-connect.sh b/sql-bench/test-connect.sh
new file mode 100644
index 00000000..e3acb453
--- /dev/null
+++ b/sql-bench/test-connect.sh
@@ -0,0 +1,339 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# This test is for testing the speed of connections and sending
+# data to the client.
+#
+# By changing the variable '$opt_loop_count' value you can make this test
+# easier/harderto your computer to execute. You can also change this value
+# by using option --loop_value='what_ever_you_like'.
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count=500000; # Change this to make test harder/easier
+$str_length=65000; # This is the length of blob strings in PART:5
+$max_test=20; # How many times to test if the server is busy
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+# This is the length of blob strings in PART:5
+$str_length=min($limits->{'max_text_size'},$limits->{'query_size'}-30,$str_length);
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=100;
+}
+
+$opt_loop_count=min(1000, $opt_loop_count) if ($opt_tcpip);
+$small_loop_count=$opt_loop_count/10; # For connect tests
+
+print "Testing the speed of connecting to the server and sending of data\n";
+print "Connect tests are done $small_loop_count times and other tests $opt_loop_count times\n\n";
+
+################################# PART:1 ###################################
+####
+#### Start timeing and start connect test..
+####
+
+$start_time=new Benchmark;
+
+print "Testing connection/disconnect\n";
+
+$loop_time=new Benchmark;
+$errors=0;
+
+for ($i=0 ; $i < $small_loop_count ; $i++)
+{
+ print "$i " if (($opt_debug));
+ for ($j=0; $j < $max_test ; $j++)
+ {
+ if ($dbh = DBI->connect($server->{'data_source'}, $opt_user,
+ $opt_password))
+ {
+ $dbh->disconnect;
+ last;
+ }
+ select(undef, undef, undef, 0.01*$j);
+ print "$errors " if (($opt_debug));
+ $errors++;
+ }
+ die "Got error '$DBI::errstr' after $i connects" if ($j == $max_test);
+ $dbh->disconnect;
+ undef($dbh);
+}
+$end_time=new Benchmark;
+print "Warning: $errors connections didn't work without a time delay\n" if ($errors);
+print "Time to connect ($small_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+################################# PART:2 ###################################
+#### Now we shall do first one connect, then simple select
+#### (select 1..) and then close connection. This will be
+#### done $small_loop_count times.
+
+if ($limits->{'select_without_from'})
+{
+ print "Test connect/simple select/disconnect\n";
+ $loop_time=new Benchmark;
+
+ for ($i=0; $i < $small_loop_count; $i++)
+ {
+ $dbh = DBI->connect($server->{'data_source'}, $opt_user, $opt_password) || die $DBI::errstr;
+ $sth = $dbh->do("select $i") or die $DBI::errstr;
+ $dbh->disconnect;
+ }
+ $end_time=new Benchmark;
+ print "Time for connect+select_simple ($small_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+################################# PART:3 ###################################
+####
+#### Okay..Next thing we'll do is a simple select $opt_loop_count times.
+####
+
+$dbh = DBI->connect($server->{'data_source'}, $opt_user, $opt_password,
+ { PrintError => 0}) || die $DBI::errstr;
+
+if ($limits->{'select_without_from'})
+{
+ print "Test simple select\n";
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $sth = $dbh->do("select $i") or die $DBI::errstr;
+ }
+ $end_time=new Benchmark;
+ print "Time for select_simple ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+###########################################################################
+#### The same as the previous test, but always execute the same select
+#### This is done to test the query cache for real simple selects.
+
+if ($limits->{'select_without_from'})
+{
+ print "Test simple select\n";
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $sth = $dbh->do("select 10000") or die $DBI::errstr;
+ }
+ $end_time=new Benchmark;
+ print "Time for select_simple_cache ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+##########################################################################
+#### First, we'll create a simple table 'bench1'
+#### Then we shall do $opt_loop_count selects from this table.
+#### Table will contain very simple data.
+
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'});
+do_many($dbh,$server->create("bench1",
+ ["a int NOT NULL",
+ "i int",
+ "s char(10)"],
+ ["primary key (a)"]));
+$sth = $dbh->do("insert into bench1 values(1,100,'AAA')") or die $DBI::errstr;
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+if (!$main::opt_temporary_tables)
+{
+ $dbh->disconnect;
+}
+
+#
+# First test connect/select/disconnect
+#
+if (!$main::opt_temporary_tables)
+{
+ print "Testing connect/select 1 row from table/disconnect\n";
+
+ $loop_time=new Benchmark;
+ $errors=0;
+
+ for ($i=0 ; $i < $small_loop_count ; $i++)
+ {
+ for ($j=0; $j < $max_test ; $j++)
+ {
+ last if ($dbh = DBI->connect($server->{'data_source'}, $opt_user, $opt_password));
+ $errors++;
+ }
+ die $DBI::errstr if ($j == $max_test);
+
+ $sth = $dbh->do("select a,i,s,$i from bench1") # Select * from table with 1 record
+ or die $DBI::errstr;
+ $dbh->disconnect;
+ }
+
+ $end_time=new Benchmark;
+ print "Warning: $errors connections didn't work without a time delay\n" if ($errors);
+ print "Time to connect+select_1_row ($small_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+ $dbh = $server->connect();
+}
+
+#
+# The same test, but without connect/disconnect
+#
+print "Testing select 1 row from table\n";
+
+$loop_time=new Benchmark;
+
+for ($i=0 ; $i < $opt_loop_count ; $i++)
+{
+ $sth = $dbh->do("select a,i,s,$i from bench1") # Select * from table with 1 record
+ or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time to select_1_row ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+#
+# Same test (as with one row) but now with a cacheable query
+#
+
+$loop_time=new Benchmark;
+
+for ($i=0 ; $i < $opt_loop_count ; $i++)
+{
+ $sth = $dbh->do("select a,i,s from bench1") # Select * from table with 1 record
+ or die $DBI::errstr;
+}
+$end_time=new Benchmark;
+print "Time to select_1_row_cache ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+#
+# The same test, but with 2 rows (not cacheable).
+#
+
+print "Testing select 2 rows from table\n";
+
+$sth = $dbh->do("insert into bench1 values(2,200,'BBB')")
+ or die $DBI::errstr;
+
+$loop_time=new Benchmark;
+
+for ($i=0 ; $i < $opt_loop_count ; $i++)
+{
+ $sth = $dbh->do("select a,i,s,$i from bench1") # Select * from table with 2 record
+ or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time to select_2_rows ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+#
+# Simple test to test speed of functions.
+#
+
+if ($limits->{'functions'})
+{
+ print "Test select with aritmetic (+)\n";
+ $loop_time=new Benchmark;
+
+ for ($i=0; $i < $opt_loop_count; $i++)
+ {
+ $sth = $dbh->do("select a+a+a+a+a+a+a+a+a+$i from bench1") or die $DBI::errstr;
+ }
+ $end_time=new Benchmark;
+ print "Time for select_column+column ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'})
+ or die $DBI::errstr;
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+################################# PART:5 ###################################
+#### We'll create one table with a single blob field,but with a
+#### huge record in it and then we'll do $opt_loop_count selects
+#### from it.
+
+goto skip_blob_test if (!$limits->{'working_blobs'});
+
+print "Testing retrieval of big records ($str_length bytes)\n";
+
+do_many($dbh,$server->create("bench1", ["b blob"], []));
+$dbh->{LongReadLen}= $str_length; # Set retrieval buffer
+
+my $string=(A) x ($str_length); # This will make a string $str_length long.
+$sth = $dbh->prepare("insert into bench1 values(?)") or die $dbh->errstr;
+$sth->execute($string) or die $sth->errstr;
+undef($string);
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+$loop_time=new Benchmark;
+
+for ($i=0 ; $i < $small_loop_count ; $i++)
+{
+ $sth = $dbh->prepare("select b,$i from bench1");
+ if (!$sth->execute || !(@row = $sth->fetchrow_array) ||
+ length($row[0]) != $str_length)
+ {
+ warn "$DBI::errstr - ".length($row[0])." - $str_length **\n";
+ }
+ $sth->finish;
+}
+
+$end_time=new Benchmark;
+print "Time to select_big_str ($small_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'})
+ or do
+{
+ # Fix for Access 2000
+ die $dbh->errstr if (!$server->abort_if_fatal_error());
+};
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+skip_blob_test:
+
+################################ END ###################################
+####
+#### End of the test...Finally print time used to execute the
+#### whole test.
+
+$dbh->disconnect;
+end_benchmark($start_time);
diff --git a/sql-bench/test-create.sh b/sql-bench/test-create.sh
new file mode 100644
index 00000000..09961f0d
--- /dev/null
+++ b/sql-bench/test-create.sh
@@ -0,0 +1,277 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000-2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# This test is for testing how long it takes to create tables,
+# make a count(*) from them and finally drop the tables. These
+# commands will be done in different ways in this test.
+# Using option --fast will drop all the tables in the end
+# of this test with one command instead of making own
+# 'drop' command for each and every table.
+# By changing the variable '$table_amount' value you can make
+# this test a lot harder/easier for your computer to drive.
+# Note that when using value bigger than 64 for this variable
+# will do 'drop table'-command in totally different way because of that
+# how MySQL handles these commands.
+
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count=10000; # Change this to make test harder/easier
+# This is the default value for the amount of tables used in this test.
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+$create_loop_count=$opt_loop_count;
+if ($opt_small_test)
+{
+ $opt_loop_count/=100;
+ $create_loop_count/=1000;
+}
+
+if ($opt_temporary_tables)
+{
+ $max_tables=min($limits->{'max_tables'},$opt_loop_count);
+}
+else
+{
+ $max_tables=min($limits->{'max_tables'},$opt_loop_count);
+ $max_tables=400;
+}
+
+if ($opt_small_test)
+{
+ $max_tables=10;
+}
+
+
+print "Testing the speed of creating and dropping tables\n";
+print "Testing with $max_tables tables and $opt_loop_count loop count\n\n";
+
+####
+#### Connect and start timeing
+####
+
+$dbh = $server->connect();
+
+### Test how the database can handle many tables
+### Create $max_tables ; Access all off them with a simple query
+### and then drop the tables
+
+if ($opt_force) # If tables used in this test exist, drop 'em
+{
+ print "Okay..Let's make sure that our tables don't exist yet.\n\n";
+ for ($i=1 ; $i <= max($max_tables, $create_loop_count) ; $i++)
+ {
+ $dbh->do("drop table bench_$i" . $server->{'drop_attr'});
+ }
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+print "Testing create of tables\n";
+
+$loop_time=$start_time=new Benchmark;
+
+for ($i=1 ; $i <= $max_tables ; $i++)
+{
+ if (do_many($dbh,$server->create("bench_$i",
+ ["i int NOT NULL",
+ "d double",
+ "f float",
+ "s char(10)",
+ "v varchar(100)"],
+ ["primary key (i)"])))
+ {
+ # Got an error; Do cleanup
+ for ($i=1 ; $i <= $max_tables ; $i++)
+ {
+ $dbh->do("drop table bench_$i" . $server->{'drop_attr'});
+ }
+ die "Test aborted";
+ }
+}
+
+$end_time=new Benchmark;
+print "Time for create_MANY_tables ($max_tables): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+#### Here comes $max_tables couples of cont(*) to the tables.
+#### We'll check how long it will take...
+####
+
+print "Accessing tables\n";
+
+if ($limits->{'group_functions'})
+{
+ $query="select count(*) from ";
+ $type="select_group_when_MANY_tables";
+}
+else
+{
+ $query="select * from ";
+ $type="select_when_MANY_tables";
+}
+
+$loop_time=new Benchmark;
+for ($i=1 ; $i <= $max_tables ; $i++)
+{
+ $sth = $dbh->do("$query bench_$i") or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time to $type ($max_tables): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+####
+#### Now we are going to drop $max_tables tables;
+####
+
+print "Testing drop\n";
+
+$loop_time=new Benchmark;
+
+if ($opt_fast && $server->{'limits'}->{'multi_drop'} &&
+ $server->{'limits'}->{'query_size'} > 11+$max_tables*10)
+{
+ my $query="drop table bench_1";
+ for ($i=2 ; $i <= $max_tables ; $i++)
+ {
+ $query.=",bench_$i";
+ }
+ $sth = $dbh->do($query . $server->{'drop_attr'}) or die $DBI::errstr;
+}
+else
+{
+ for ($i=1 ; $i <= $max_tables ; $i++)
+ {
+ $sth = $dbh->do("drop table bench_$i" . $server->{'drop_attr'})
+ or die $DBI::errstr;
+ }
+}
+
+
+$end_time=new Benchmark;
+print "Time for drop_table_when_MANY_tables ($max_tables): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+#### We'll do first one 'create table' and then we'll drop it
+#### away immediately. This loop shall be executed $opt_loop_count
+#### times.
+
+print "Testing create+drop\n";
+
+$loop_time=new Benchmark;
+
+for ($i=1 ; $i <= $create_loop_count ; $i++)
+{
+ do_many($dbh,$server->create("bench_$i",
+ ["i int NOT NULL",
+ "d double",
+ "f float",
+ "s char(10)",
+ "v varchar(100)"],
+ ["primary key (i)"]));
+ $sth = $dbh->do("drop table bench_$i" . $server->{'drop_attr'}) or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for create+drop ($create_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+#
+# Same test, but with a table with many keys
+#
+
+my @fields=(); my @keys=();
+$keys=min($limits->{'max_index'},16); # 16 is more than enough
+$seg= min($limits->{'max_index_parts'},$keys,16); # 16 is more than enough
+
+# Make keys on the most important types
+@types=(0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1); # A 1 for each char field
+push(@fields,"field1 tinyint not null");
+push(@fields,"field2 mediumint not null");
+push(@fields,"field3 smallint not null");
+push(@fields,"field4 char(16) not null");
+push(@fields,"field5 integer not null");
+push(@fields,"field6 float not null");
+push(@fields,"field7 double not null");
+for ($i=8 ; $i <= $keys ; $i++)
+{
+ push(@fields,"field$i char(5) not null"); # Should be relatively fair
+}
+
+# Let first key contain many segments
+my $query="primary key (";
+for ($i= 1 ; $i <= $seg ; $i++)
+{
+ $query.= "field$i,";
+}
+substr($query,-1)=")";
+push (@keys,$query);
+
+#Create other keys
+for ($i=2 ; $i <= $keys ; $i++)
+{
+ push(@keys,"index index$i (field$i)");
+}
+
+$loop_time=new Benchmark;
+for ($i=1 ; $i <= $create_loop_count ; $i++)
+{
+ do_many($dbh,$server->create("bench_$i", \@fields, \@keys));
+ $dbh->do("drop table bench_$i" . $server->{'drop_attr'}) or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for create_key+drop ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+####
+#### End of benchmark
+####
+
+$dbh->disconnect; # close connection
+end_benchmark($start_time);
diff --git a/sql-bench/test-insert.sh b/sql-bench/test-insert.sh
new file mode 100644
index 00000000..5aee14dc
--- /dev/null
+++ b/sql-bench/test-insert.sh
@@ -0,0 +1,1995 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000-2003, 2006, 2007 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# Test of creating a simple table and inserting $record_count records in it,
+# $opt_loop_count rows in order, $opt_loop_count rows in reverse order and
+# $opt_loop_count rows in random order
+#
+# changes made for Oracle compatibility
+# - $limits->{'func_odbc_mod'} is OK from crash-me, but it fails here so set we
+# set it to 0 in server-cfg
+# - the default server config runs out of rollback segments, so we added a
+# couple of disconnect/connects to reset
+#
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+use Data::Dumper;
+
+$opt_loop_count=100000; # number of rows/3
+$small_loop_count=10; # Loop for full table retrieval
+$range_loop_count=$small_loop_count*50;
+$many_keys_loop_count=$opt_loop_count;
+$opt_read_key_loop_count=$opt_loop_count;
+$many_key_update=10000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=100;
+ $many_keys_loop_count=$opt_loop_count/10;
+ $range_loop_count=10;
+ $opt_read_key_loop_count=10;
+ $many_key_update=10;
+}
+elsif ($opt_small_tables)
+{
+ $opt_loop_count=10000; # number of rows/3
+ $many_keys_loop_count=$opt_loop_count;
+ $opt_read_key_loop_count=10;
+ $many_key_update=10;
+}
+elsif ($opt_small_key_tables)
+{
+ $many_keys_loop_count/=10;
+ $many_key_update/=10;
+}
+
+if ($opt_loop_count < 100)
+{
+ $opt_loop_count=100; # Some tests must have some data to work!
+}
+$range_loop_count=min($opt_loop_count,$range_loop_count);
+
+
+print "Testing the speed of inserting data into 1 table and do some selects on it.\n";
+print "The tests are done with a table that has $opt_loop_count rows.\n\n";
+
+####
+#### Generating random keys
+####
+
+print "Generating random keys\n";
+$random[$opt_loop_count]=0;
+for ($i=0 ; $i < $opt_loop_count ; $i++)
+{
+ $random[$i]=$i+$opt_loop_count;
+}
+
+my $tmpvar=1;
+for ($i=0 ; $i < $opt_loop_count ; $i++)
+{
+ $tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
+ $swap=$tmpvar % $opt_loop_count;
+ $tmp=$random[$i]; $random[$i]=$random[$swap]; $random[$swap]=$tmp;
+}
+
+$total_rows=$opt_loop_count*3;
+
+####
+#### Connect and start timeing
+####
+$start_time=new Benchmark;
+$dbh = $server->connect();
+####
+#### Create needed tables
+####
+
+goto select_test if ($opt_skip_create);
+
+$dbh->do("drop table bench1" . $server->{'drop_attr'});
+$dbh->do("drop table bench2" . $server->{'drop_attr'});
+$dbh->do("drop table bench3" . $server->{'drop_attr'});
+
+goto keys_test if ($opt_stage == 2);
+goto keys_test2 if ($opt_stage == 3);
+
+print "Creating tables\n";
+do_many($dbh,$server->create("bench1",
+ ["id int NOT NULL",
+ "id2 int NOT NULL",
+ "id3 int NOT NULL",
+ "dummy1 char(30)"],
+ ["primary key (id,id2)",
+ "index ix_id3 (id3)"]));
+
+if ($opt_lock_tables)
+{
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+}
+
+####
+#### Insert $total_rows records in order, in reverse order and random.
+####
+
+$loop_time=new Benchmark;
+
+if ($opt_fast_insert)
+{
+ $query="insert into bench1 values ";
+}
+else
+{
+ $query="insert into bench1 (id,id2,id3,dummy1) values ";
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+ print "Transactions enabled\n" if ($opt_debug);
+}
+
+if (($opt_fast || $opt_fast_insert) && $server->{'limits'}->{'insert_multi_value'})
+{
+ $query_size=$server->{'limits'}->{'query_size'};
+
+ print "Inserting $opt_loop_count multiple-value rows in order\n";
+ $res=$query;
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $tmp= "($i,$i,$i,'ABCDEFGHIJ'),";
+ if (length($tmp)+length($res) < $query_size)
+ {
+ $res.= $tmp;
+ }
+ else
+ {
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die $DBI::errstr;
+ $res=$query . $tmp;
+ }
+ }
+ print "Inserting $opt_loop_count multiple-value rows in reverse order\n";
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $tmp= "(" . ($total_rows-1-$i) . "," .($total_rows-1-$i) .
+ "," .($total_rows-1-$i) . ",'BCDEFGHIJK'),";
+ if (length($tmp)+length($res) < $query_size)
+ {
+ $res.= $tmp;
+ }
+ else
+ {
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die $DBI::errstr;
+ $res=$query . $tmp;
+ }
+ }
+ print "Inserting $opt_loop_count multiple-value rows in random order\n";
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $tmp= "(" . $random[$i] . "," . $random[$i] . "," . $random[$i] .
+ ",'CDEFGHIJKL')," or die $DBI::errstr;
+ if (length($tmp)+length($res) < $query_size)
+ {
+ $res.= $tmp;
+ }
+ else
+ {
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die $DBI::errstr;
+ $res=$query . $tmp;
+ }
+ }
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die $DBI::errstr;
+}
+else
+{
+ print "Inserting $opt_loop_count rows in order\n";
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $sth = $dbh->do($query . "($i,$i,$i,'ABCDEFGHIJ')") or die $DBI::errstr;
+ }
+
+ print "Inserting $opt_loop_count rows in reverse order\n";
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $sth = $dbh->do($query . "(" . ($total_rows-1-$i) . "," .
+ ($total_rows-1-$i) . "," .
+ ($total_rows-1-$i) . ",'BCDEFGHIJK')")
+ or die $DBI::errstr;
+ }
+
+ print "Inserting $opt_loop_count rows in random order\n";
+
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $sth = $dbh->do($query . "(". $random[$i] . "," . $random[$i] .
+ "," . $random[$i] . ",'CDEFGHIJKL')") or die $DBI::errstr;
+ }
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time for insert (" . ($total_rows) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_lock_tables)
+{
+ $sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
+}
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh,"bench1");
+}
+if ($opt_lock_tables)
+{
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+}
+
+####
+#### insert $opt_loop_count records with duplicate id
+####
+
+if ($limits->{'unique_index'})
+{
+ print "Testing insert of duplicates\n";
+ $loop_time=new Benchmark;
+
+ if ($opt_fast && $server->{transactions})
+ {
+ $dbh->{AutoCommit} = 0;
+ }
+
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ $tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
+ $tmp=$tmpvar % ($total_rows);
+ $tmpquery = "$query ($tmp,$tmp,2,'D')";
+ if ($dbh->do($tmpquery))
+ {
+ die "Didn't get an error when inserting duplicate record $tmp\n";
+ }
+ }
+ if ($opt_fast && $server->{transactions})
+ {
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+ }
+
+ $end_time=new Benchmark;
+ print "Time for insert_duplicates (" . ($opt_loop_count) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+
+####
+#### Do some selects on the table
+####
+
+select_test:
+
+# ----------------- prepared+executed/prepared*executed tests
+
+print "Test of prepared+execute/once prepared many execute selects\n";
+$loop_time=new Benchmark;
+
+for ($i=1 ; $i <= $opt_loop_count ; $i++)
+{
+ my ($key_value)=$random[$i];
+ my ($query)= "select * from bench1 where id=$key_value";
+ print "$query\n" if ($opt_debug);
+ $sth = $dbh->prepare($query);
+ if (! $sth)
+ {
+ die "error in prepare select with id = $key_value : $DBI::errstr";
+ };
+ if (! $sth->execute)
+ {
+ die "cannot execute prepare select with id = $key_value : $DBI::errstr";
+ }
+ while ($sth->fetchrow_arrayref) { };
+ $sth->finish;
+};
+$end_time=new Benchmark;
+print "Time for prepared_select ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+$loop_time=new Benchmark;
+$query= "select * from bench1 where id=?";
+$sth = $dbh->prepare($query);
+if (! $sth)
+{
+ die "cannot prepare select: $DBI::errstr";
+};
+
+for ($i=1 ; $i <= $opt_loop_count ; $i++)
+{
+ my ($key_value)=$random[$i];
+ $sth->bind_param(1,$key_value);
+ print "$query , id = $key_value\n" if ($opt_debug);
+ if (! $sth->execute)
+ {
+ die "cannot execute prepare select with id = $key_value : $DBI::errstr";
+ }
+ while ($sth->fetchrow_arrayref) { };
+};
+$sth->finish;
+$end_time=new Benchmark;
+print "Time for once_prepared_select ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+print "Retrieving data from the table\n";
+$loop_time=new Benchmark;
+$error=0;
+
+# It's really a small table, so we can try a select on everything
+
+$count=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ if (($found_rows=fetch_all_rows($dbh,"select id from bench1")) !=
+ $total_rows)
+ {
+ if (!$error++)
+ {
+ print "Warning: Got $found_rows rows when selecting a whole table of " . ($total_rows) . " rows\nContact the database or DBD author!\n";
+ }
+ }
+ $count+=$found_rows;
+}
+
+$end_time=new Benchmark;
+print "Time for select_big ($small_loop_count:$count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+#
+# Do a lot of different ORDER BY queries
+#
+
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ $rows+=fetch_all_rows($dbh,"select id,id2 from bench1 order by id,id2",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $small_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_big_key ($small_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ $rows+=fetch_all_rows($dbh,"select id,id2 from bench1 order by id desc, id2 desc",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $small_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_big_key_desc ($small_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ $rows+=fetch_all_rows($dbh,"select id from bench1 order by id desc",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $small_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_big_key_prefix ($small_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ $rows+=fetch_all_rows($dbh,"select id3 from bench1 order by id3",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $small_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_big_key2 ($small_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+$sel=$limits->{'order_by_unused'} ? "id2" : "*";
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ $rows+=fetch_all_rows($dbh,"select $sel from bench1 order by id3",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $small_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_big_key_diff ($small_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+$sel=$limits->{'order_by_unused'} ? "id" : "*";
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ $rows+=fetch_all_rows($dbh,"select $sel from bench1 order by id2,id3",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $small_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_big ($small_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+$sel=$limits->{'order_by_unused'} ? "dummy1" : "dummy1,id3";
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $range_loop_count ; $i++)
+{
+ $start=$opt_loop_count/$range_loop_count*$i;
+ $end=$start+$i;
+ $rows+=fetch_all_rows($dbh,"select $sel from bench1 where id>=$start and id <= $end order by id3",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $range_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_range ($range_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+$sel=$limits->{'order_by_unused'} ? "dummy1" : "dummy1,id";
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $range_loop_count ; $i++)
+{
+ $start=$opt_loop_count/$range_loop_count*$i;
+ $end=$start+$i;
+ $rows+=fetch_all_rows($dbh,"select $sel from bench1 where id>=$start and id <= $end order by id",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $range_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_key_prefix ($range_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+$sel=$limits->{'order_by_unused'} ? "id2" : "id2,id3";
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $range_loop_count ; $i++)
+{
+ $start=$opt_loop_count/$range_loop_count*$i;
+ $end=$start+$range_loop_count;
+ $rows+=fetch_all_rows($dbh,"select $sel from bench1 where id3>=$start and id3 <= $end order by id3",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $range_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_key2_diff ($range_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+#
+# Test of select on 2 different keys with or
+# (In this case database can only use keys if they do an automatic union).
+#
+
+$loop_time=new Benchmark;
+$estimated=0;
+$rows=0;
+$count=0;
+for ($i=1 ; $i <= $range_loop_count ; $i++)
+{
+ my $rnd=$i;
+ my $rnd2=$random[$i];
+ $rows+=fetch_all_rows($dbh,"select id2 from bench1 where id=$rnd or id3=$rnd2",1);
+ $count++;
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$count,
+ $range_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for select_diff_key ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+# Test select that is very popular when using ODBC
+
+check_or_range("id","select_range_prefix");
+check_or_range("id3","select_range_key2");
+
+# Check reading on direct key on id and id3
+
+check_select_key("*","id","select_key_prefix");
+check_select_key2("*","id","id2","select_key");
+check_select_key2("id,id2","id","id2","select_key_return_key");
+check_select_key("*","id3","select_key2");
+check_select_key("id3","id3","select_key2_return_key");
+check_select_key("id,id2","id3","select_key2_return_prim");
+
+####
+#### A lot of simple selects on ranges
+####
+
+@Q=("select * from bench1 where !id!=3 or !id!=2 or !id!=1 or !id!=4 or !id!=16 or !id!=10",
+ 6,
+ "select * from bench1 where !id!>=" . ($total_rows-1) ." or !id!<1",
+ 2,
+ "select * from bench1 where !id!>=1 and !id!<=2",
+ 2,
+ "select * from bench1 where (!id!>=1 and !id!<=2) or (!id!>=1 and !id!<=2)",
+ 2,
+ "select * from bench1 where !id!>=1 and !id!<=10 and !id!<=5",
+ 5,
+ "select * from bench1 where (!id!>0 and !id!<2) or !id!>=" . ($total_rows-1),
+ 2,
+ "select * from bench1 where (!id!>0 and !id!<2) or (!id!>= " . ($opt_loop_count/2) . " and !id! <= " . ($opt_loop_count/2+2) . ") or !id! = " . ($opt_loop_count/2-1),
+ 5,
+ "select * from bench1 where (!id!>=5 and !id!<=10) or (!id!>=1 and !id!<=4)",
+ 10,
+ "select * from bench1 where (!id!=1 or !id!=2) and (!id!=3 or !id!=4)",
+ 0,
+ "select * from bench1 where (!id!=1 or !id!=2) and (!id!=2 or !id!=3)",
+ 1,
+ "select * from bench1 where (!id!=1 or !id!=5 or !id!=20 or !id!=40) and (!id!=1 or !id!>=20 or !id!=4)",
+ 3,
+ "select * from bench1 where ((!id!=1 or !id!=3) or (!id!>1 and !id!<3)) and !id!<=2",
+ 2,
+ "select * from bench1 where (!id! >= 0 and !id! < 4) or (!id! >=4 and !id! < 6)",
+ 6,
+ "select * from bench1 where !id! <= -1 or (!id! >= 0 and !id! <= 5) or (!id! >=4 and !id! < 6) or (!id! >=6 and !id! <=7) or (!id!>7 and !id! <= 8)",
+ 9,
+ "select * from bench1 where (!id!>=1 and !id!<=2 or !id!>=4 and !id!<=5) or (!id!>=0 and !id! <=10)",
+ 11,
+ "select * from bench1 where (!id!>=1 and !id!<=2 or !id!>=4 and !id!<=5) or (!id!>2 and !id! <=10)",
+ 10,
+ "select * from bench1 where (!id!>1 or !id! <1) and !id!<=2",
+ 2,
+ "select * from bench1 where !id! <= 2 and (!id!>1 or !id! <=1)",
+ 3,
+ "select * from bench1 where (!id!>=1 or !id! <1) and !id!<=2",
+ 3,
+ "select * from bench1 where (!id!>=1 or !id! <=2) and !id!<=2",
+ 3
+ );
+
+print "\nTest of compares with simple ranges\n";
+check_select_range("id","select_range_prefix");
+check_select_range("id3","select_range_key2");
+
+####
+#### Some group queries
+####
+
+if ($limits->{'group_functions'})
+{
+ $loop_time=new Benchmark;
+ $count=1;
+
+ $estimated=0;
+ for ($tests=0 ; $tests < $small_loop_count ; $tests++)
+ {
+ $sth=$dbh->prepare($query="select count(*) from bench1") or die $DBI::errstr;
+ $sth->execute or die $sth->errstr;
+ if (($sth->fetchrow_array)[0] != $total_rows)
+ {
+ print "Warning: '$query' returned wrong result\n";
+ }
+ $sth->finish;
+
+ # min, max in keys are very normal
+ $count+=7;
+ fetch_all_rows($dbh,"select min(id) from bench1");
+ fetch_all_rows($dbh,"select max(id) from bench1");
+ fetch_all_rows($dbh,"select sum(id+0.0) from bench1");
+ fetch_all_rows($dbh,"select min(id3),max(id3),sum(id3-0.0) from bench1");
+ if ($limits->{'group_func_sql_min_str'})
+ {
+ fetch_all_rows($dbh,"select min(dummy1),max(dummy1) from bench1");
+ }
+ $count++;
+ $sth=$dbh->prepare($query="select count(*) from bench1 where id >= " .
+ ($opt_loop_count*2)) or die $DBI::errstr;
+ $sth->execute or die $DBI::errstr;
+ if (($sth->fetchrow_array)[0] != $opt_loop_count)
+ {
+ print "Warning: '$query' returned wrong result\n";
+ }
+ $sth->finish;
+
+ $count++;
+ $sth=$dbh->prepare($query="select count(*),sum(id+0.0),min(id),max(id),avg(id-0.0) from bench1") or die $DBI::errstr;
+ $sth->execute or die $DBI::errstr;
+ @row=$sth->fetchrow_array;
+ if ($row[0] != $total_rows ||
+ int($row[1]+0.5) != int((($total_rows-1)/2*$total_rows)+0.5) ||
+ $row[2] != 0 ||
+ $row[3] != $total_rows-1 ||
+ 1-$row[4]/(($total_rows-1)/2) > 0.001)
+ {
+ # PostgreSQL 6.3 fails here
+ print "Warning: '$query' returned wrong result: @row\n";
+ }
+ $sth->finish;
+
+ if ($limits->{'func_odbc_mod'})
+ {
+ $tmp="mod(id,10)";
+ if ($limits->{'func_extra_%'})
+ {
+ $tmp="id % 10"; # For postgreSQL
+ }
+ $count++;
+ if ($limits->{'group_by_alias'}) {
+ if (fetch_all_rows($dbh,$query=$server->query("select $tmp as last_digit,count(*) from bench1 group by last_digit")) != 10)
+ {
+ print "Warning: '$query' returned wrong number of rows\n";
+ }
+ } elsif ($limits->{'group_by_position'}) {
+ if (fetch_all_rows($dbh,$query=$server->query("select $tmp,count(*) from bench1 group by 1")) != 10)
+ {
+ print "Warning: '$query' returned wrong number of rows\n";
+ }
+ }
+ }
+
+ if ($limits->{'order_by_position'} && $limits->{'group_by_position'})
+ {
+ $count++;
+ if (fetch_all_rows($dbh, $query="select id,id3,dummy1 from bench1 where id < 100+$count-$count group by id,id3,dummy1 order by id desc,id3,dummy1") != 100)
+ {
+ print "Warning: '$query' returned wrong number of rows\n";
+ }
+ }
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$tests,
+ $small_loop_count));
+ }
+ print_time($estimated);
+ print " for select_group ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $count=$estimated=0;
+ for ($tests=1 ; $tests <= $range_loop_count*5 ; $tests++)
+ {
+ $count+=6;
+ fetch_all_rows($dbh,"select min(id) from bench1");
+ fetch_all_rows($dbh,"select max(id) from bench1");
+ fetch_all_rows($dbh,"select min(id2) from bench1 where id=$tests");
+ fetch_all_rows($dbh,"select max(id2) from bench1 where id=$tests");
+ if ($limits->{'group_func_sql_min_str'})
+ {
+ fetch_all_rows($dbh,"select min(dummy1) from bench1 where id=$tests");
+ fetch_all_rows($dbh,"select max(dummy1) from bench1 where id=$tests");
+ }
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$tests,
+ $range_loop_count*5));
+ }
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for min_max_on_key ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $count=$estimated=0;
+ for ($tests=1 ; $tests <= $small_loop_count ; $tests++)
+ {
+ $count+=6;
+ fetch_all_rows($dbh,"select min(id2) from bench1");
+ fetch_all_rows($dbh,"select max(id2) from bench1");
+ fetch_all_rows($dbh,"select min(id3) from bench1 where id2=$tests");
+ fetch_all_rows($dbh,"select max(id3) from bench1 where id2=$tests");
+ if ($limits->{'group_func_sql_min_str'})
+ {
+ fetch_all_rows($dbh,"select min(dummy1) from bench1 where id2=$tests");
+ fetch_all_rows($dbh,"select max(dummy1) from bench1 where id2=$tests");
+ }
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$tests,
+ $range_loop_count));
+ }
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for min_max ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $count=0;
+ $total=$opt_loop_count*3;
+ for ($tests=0 ; $tests < $total ; $tests+=$total/100)
+ {
+ $count+=1;
+ fetch_all_rows($dbh,"select count(id) from bench1 where id < $tests");
+ }
+ $end_time=new Benchmark;
+ print "Time for count_on_key ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $count=0;
+ for ($tests=0 ; $tests < $total ; $tests+=$total/100)
+ {
+ $count+=1;
+ fetch_all_rows($dbh,"select count(dummy1) from bench1 where id2 < $tests");
+ }
+ $end_time=new Benchmark;
+ print "Time for count ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ if ($limits->{'group_distinct_functions'})
+ {
+ $loop_time=new Benchmark;
+ $count=$estimated=0;
+ for ($tests=1 ; $tests <= $small_loop_count ; $tests++)
+ {
+ $count+=2;
+ fetch_all_rows($dbh,"select count(distinct dummy1) from bench1");
+ fetch_all_rows($dbh,"select dummy1,count(distinct id) from bench1 group by dummy1");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$tests,
+ $small_loop_count));
+ }
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for count_distinct_big ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+ }
+}
+
+
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+}
+
+####
+#### Some updates on the table
+####
+
+$loop_time=new Benchmark;
+
+if ($limits->{'functions'})
+{
+ print "\nTesting update of keys with functions\n";
+ my $update_loop_count=$opt_loop_count/2;
+ for ($i=0 ; $i < $update_loop_count ; $i++)
+ {
+ my $tmp=$opt_loop_count+$random[$i]; # $opt_loop_count*2 <= $tmp < $total_rows
+ $sth = $dbh->do("update bench1 set id3=-$tmp where id3=$tmp") or die $DBI::errstr;
+ }
+
+ $end_time=new Benchmark;
+ print "Time for update_of_key ($update_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ if ($opt_lock_tables)
+ {
+ do_query($dbh,"UNLOCK TABLES");
+ }
+ if ($opt_fast && defined($server->{vacuum}))
+ {
+ $server->vacuum(1,\$dbh,"bench1");
+ }
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+
+ $loop_time=new Benchmark;
+ $count=0;
+ $step=int($opt_loop_count/$range_loop_count+1);
+ for ($i= 0 ; $i < $opt_loop_count ; $i+= $step)
+ {
+ $count++;
+ $sth=$dbh->do("update bench1 set id3= 0-id3 where id3 >= 0 and id3 <= $i") or die $DBI::errstr;
+ }
+
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+ $count++;
+ $sth=$dbh->do("update bench1 set id3= 0-id3 where id3 >= 0 and id3 < $opt_loop_count") or die $DBI::errstr;
+
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+ $count++;
+ $sth=$dbh->do("update bench1 set id3= 0-id3 where id3 >= $opt_loop_count and id3 < ". ($opt_loop_count*2)) or die $DBI::errstr;
+
+ #
+ # Check that everything was updated
+ # In principle we shouldn't time this in the update loop..
+ #
+
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+ $row_count=0;
+ if (($sth=$dbh->prepare("select count(*) from bench1 where id3>=0"))
+ && $sth->execute)
+ {
+ ($row_count)=$sth->fetchrow;
+ }
+ $result=1 + $opt_loop_count-$update_loop_count;
+ if ($row_count != $result)
+ {
+ print "Warning: Update check returned $row_count instead of $result\n";
+ }
+
+ $sth->finish;
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+ #restore id3 to 0 <= id3 < $total_rows/10 or 0<= id3 < $total_rows
+
+ my $func=($limits->{'func_odbc_floor'}) ? "floor((0-id3)/20)" : "0-id3";
+ $count++;
+ $sth=$dbh->do($query="update bench1 set id3=$func where id3<0") or die $DBI::errstr;
+
+ $end_time=new Benchmark;
+ print "Time for update_of_key_big ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+else
+{
+ print "\nTesting update of keys in loops\n";
+ #
+ # This is for mSQL that doesn't have functions. Do we really need this ????
+ #
+
+ $sth=$dbh->prepare("select id3 from bench1 where id3 >= 0") or die $DBI::errstr;
+ $sth->execute or die $DBI::errstr;
+ $count=0;
+ while (@tmp = $sth->fetchrow_array)
+ {
+ my $tmp1 = "-$tmp[0]";
+ my $sth1 = $dbh->do("update bench1 set id3 = $tmp1 where id3 = $tmp[0]");
+ $count++;
+ $end_time=new Benchmark;
+ if (($end_time->[0] - $loop_time->[0]) > $opt_time_limit)
+ {
+ print "note: Aborting update loop because of timeout\n";
+ last;
+ }
+ }
+ $sth->finish;
+ # Check that everything except id3=0 was updated
+ # In principle we shouldn't time this in the update loop..
+ #
+ if (fetch_all_rows($dbh,$query="select * from bench1 where id3>=0") != 1)
+ {
+ if ($count == $total_rows)
+ {
+ print "Warning: Wrong information after update: Found '$row_count' rows, but should have been: 1\n";
+ }
+ }
+ #restore id3 to 0 <= id3 < $total_rows
+ $sth=$dbh->prepare("select id3 from bench1 where id3 < 0") or die $DBI::errstr;
+ $sth->execute or die $DBI::errstr;
+ while (@tmp = $sth->fetchrow_array)
+ {
+ $count++;
+ my $tmp1 = floor((0-$tmp[0])/10);
+ my $sth1 = $dbh->do("update bench1 set id3 = $tmp1 where id3 = $tmp[0]");
+ }
+ $sth->finish;
+ $end_time=new Benchmark;
+ $estimated=predict_query_time($loop_time,$end_time,\$count,$count,
+ $opt_loop_count*6);
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for update_of_key ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ if ($opt_lock_tables)
+ {
+ do_query($dbh,"UNLOCK TABLES");
+ }
+ $server->vacuum(1,\$dbh,"bench1");
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+}
+
+#
+# Testing some simple updates
+#
+
+print "Testing update with key\n";
+$loop_time=new Benchmark;
+for ($i=0 ; $i < $opt_loop_count*3 ; $i++)
+{
+ $sth = $dbh->do("update bench1 set dummy1='updated' where id=$i and id2=$i") or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for update_with_key (" . ($opt_loop_count*3) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+print "Testing update with key, no changes in data\n";
+$loop_time=new Benchmark;
+for ($i=0 ; $i < $opt_loop_count*3 ; $i++)
+{
+ $sth = $dbh->do("update bench1 set dummy1='updated' where id=$i and id2=$i") or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for update_with_key_record_unchanged (" . ($opt_loop_count*3) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+$loop_time=new Benchmark;
+$count=0;
+for ($i=1 ; $i < $opt_loop_count*3 ; $i+=3)
+{
+ $sth = $dbh->do("update bench1 set dummy1='really updated' where id=$i") or die $DBI::errstr;
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,($i-1)/3,
+ $opt_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for update_with_key_prefix (" . ($opt_loop_count) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+print "\nTesting update of all rows\n";
+$loop_time=new Benchmark;
+for ($i=0 ; $i < $small_loop_count ; $i++)
+{
+ $sth = $dbh->do("update bench1 set dummy1='updated $i'") or die $DBI::errstr;
+}
+$end_time=new Benchmark;
+print "Time for update_big ($small_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+#
+# Testing left outer join
+#
+
+if ($limits->{'func_odbc_floor'} && $limits->{'left_outer_join'})
+{
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 a READ, bench1 b READ") || die $DBI::errstr;
+ }
+ print "\nTesting left outer join\n";
+ $loop_time=new Benchmark;
+ $count=0;
+ for ($i=0 ; $i < $small_loop_count ; $i++)
+ {
+ $count+=fetch_all_rows($dbh,"select count(*) from bench1 as a left outer join bench1 as b on (a.id2=b.id3)");
+ }
+ $end_time=new Benchmark;
+ print "Time for outer_join_on_key ($small_loop_count:$count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $count=0;
+ for ($i=0 ; $i < $small_loop_count ; $i++)
+ {
+ $count+=fetch_all_rows($dbh,"select count(a.dummy1),count(b.dummy1) from bench1 as a left outer join bench1 as b on (a.id2=b.id3)");
+ }
+ $end_time=new Benchmark;
+ print "Time for outer_join ($small_loop_count:$count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $count=0;
+ $loop_time=new Benchmark;
+ for ($i=0 ; $i < $small_loop_count ; $i++)
+ {
+ $count+=fetch_all_rows($dbh,"select count(a.dummy1),count(b.dummy1) from bench1 as a left outer join bench1 as b on (a.id2=b.id3) where b.id3 is not null");
+ }
+ $end_time=new Benchmark;
+ print "Time for outer_join_found ($small_loop_count:$count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $count=$estimated=0;
+ $loop_time=new Benchmark;
+ for ($i=1 ; $i <= $small_loop_count ; $i++)
+ {
+ $count+=fetch_all_rows($dbh,"select count(a.dummy1),count(b.dummy1) from bench1 as a left outer join bench1 as b on (a.id2=b.id3) where b.id3 is null");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,
+ \$count,$i,
+ $range_loop_count));
+ }
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for outer_join_not_found ($range_loop_count:$count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+}
+
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+}
+
+###
+### Test speed of IN( value list)
+###
+
+if ($limits->{'left_outer_join'})
+{
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
+ }
+ print "\n";
+ do_many($dbh,$server->create("bench2",
+ ["id int NOT NULL"],
+ ["primary key (id)"]));
+
+ $max_tests=min(($limits->{'query_size'}-50)/6, $opt_loop_count);
+
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 READ, bench2 WRITE") ||
+ die $DBI::errstr;
+ }
+ test_where_in("bench1","bench2","id",1,10);
+ test_where_in("bench1","bench2","id",11,min(100,$max_tests));
+ test_where_in("bench1","bench2","id",101,min(1000,$max_tests));
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
+ }
+ $sth = $dbh->do("DROP TABLE bench2" . $server->{'drop_attr'}) ||
+ die $DBI::errstr;
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+}
+
+####
+#### Test INSERT INTO ... SELECT
+####
+
+if ($limits->{'insert_select'})
+{
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
+ }
+ print "\nTesting INSERT INTO ... SELECT\n";
+ do_many($dbh,$server->create("bench2",
+ ["id int NOT NULL",
+ "id2 int NOT NULL",
+ "id3 int NOT NULL",
+ "dummy1 char(30)"],
+ ["primary key (id,id2)"]));
+ do_many($dbh,$server->create("bench3",
+ ["id int NOT NULL",
+ "id2 int NOT NULL",
+ "id3 int NOT NULL",
+ "dummy1 char(30)"],
+ ["primary key (id,id2)",
+ "index index_id3 (id3)"]));
+ $loop_time=new Benchmark;
+ $sth = $dbh->do("INSERT INTO bench2 SELECT * from bench1") ||
+ die $DBI::errstr;
+ $end_time=new Benchmark;
+ print "Time for insert_select_1_key (1): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+ $loop_time=new Benchmark;
+ $sth = $dbh->do("INSERT INTO bench3 SELECT * from bench1") ||
+ die $DBI::errstr;
+ $end_time=new Benchmark;
+ print "Time for insert_select_2_keys (1): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+ $loop_time=new Benchmark;
+ $sth = $dbh->do("DROP TABLE bench2" . $server->{'drop_attr'}) ||
+ die $DBI::errstr;
+ $sth = $dbh->do("DROP TABLE bench3" . $server->{'drop_attr'}) ||
+ die $DBI::errstr;
+ $end_time=new Benchmark;
+ print "Time for drop table(2): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ if ($opt_fast && defined($server->{vacuum}))
+ {
+ $server->vacuum(1,\$dbh);
+ }
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+}
+
+####
+#### Do some deletes on the table
+####
+
+if (!$opt_skip_delete)
+{
+ print "\nTesting delete\n";
+ $loop_time=new Benchmark;
+ $count=0;
+ for ($i=0 ; $i < $opt_loop_count ; $i+=10)
+ {
+ $count++;
+ $tmp=$opt_loop_count+$random[$i]; # $opt_loop_count*2 <= $tmp < $total_rows
+ $dbh->do("delete from bench1 where id3=$tmp") or die $DBI::errstr;
+ }
+
+ $end_time=new Benchmark;
+ print "Time for delete_key ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+
+ $count=0;
+ $loop_time=new Benchmark;
+ for ($i= 0 ; $i < $opt_loop_count ; $i+=$opt_loop_count/10)
+ {
+ $sth=$dbh->do("delete from bench1 where id3 >= 0 and id3 <= $i") or die $DBI::errstr;
+ $count++;
+ }
+ $count+=2;
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+ $sth=$dbh->do("delete from bench1 where id3 >= 0 and id3 <= $opt_loop_count") or die $DBI::errstr;
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+
+ $sth=$dbh->do("delete from bench1 where id >= $opt_loop_count and id <= " . ($opt_loop_count*2) ) or die $DBI::errstr;
+
+ if ($server->small_rollback_segment())
+ {
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+ }
+ if ($opt_fast)
+ {
+ $sth=$dbh->do("delete from bench1") or die $DBI::errstr;
+ }
+ else
+ {
+ $sth = $dbh->do("delete from bench1 where id3 < " . ($total_rows)) or die $DBI::errstr;
+ }
+
+ $end_time=new Benchmark;
+ print "Time for delete_range ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
+ }
+ $sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr;
+}
+
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+}
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+
+keys_test:
+#
+# Test of insert in table with many keys
+# This test assumes that the server really create the keys!
+#
+
+my @fields=(); my @keys=();
+$keys=min($limits->{'max_index'},16); # 16 is more than enough
+$seg= min($limits->{'max_index_parts'},$keys,16); # 16 is more than enough
+
+print "Insert into table with $keys keys and with a primary key with $seg parts\n";
+
+# Make keys on the most important types
+@types=(0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1); # A 1 for each char field
+push(@fields,"field1 tinyint not null");
+push(@fields,"field_search tinyint not null");
+push(@fields,"field2 mediumint not null");
+push(@fields,"field3 smallint not null");
+push(@fields,"field4 char(16) not null");
+push(@fields,"field5 integer not null");
+push(@fields,"field6 float not null");
+push(@fields,"field7 double not null");
+for ($i=8 ; $i <= $keys ; $i++)
+{
+ push(@fields,"field$i char(6) not null"); # Should be relatively fair
+}
+
+# First key contains many segments
+$query="primary key (";
+for ($i= 1 ; $i <= $seg ; $i++)
+{
+ $query.= "field$i,";
+}
+substr($query,-1)=")";
+push (@keys,$query);
+push (@keys,"index index2 (field_search)");
+
+#Create other keys
+for ($i=3 ; $i <= $keys ; $i++)
+{
+ push(@keys,"index index$i (field$i)");
+}
+
+do_many($dbh,$server->create("bench1",\@fields,\@keys));
+if ($opt_lock_tables)
+{
+ $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+}
+
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+}
+
+$loop_time=new Benchmark;
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+}
+
+$fields=$#fields;
+if (($opt_fast || $opt_fast_insert) && $server->{'limits'}->{'insert_multi_value'})
+{
+ $query_size=$server->{'limits'}->{'query_size'};
+ $query="insert into bench1 values ";
+ $res=$query;
+ for ($i=0; $i < $many_keys_loop_count; $i++)
+ {
+ $id= $i & 127;
+ $rand=$random[$i];
+ $tmp="($id,$id,$rand," . ($i & 32766) . ",'ABCDEF$rand',0,$rand,$rand.0,";
+
+ for ($j=8; $j <= $fields ; $j++)
+ {
+ $tmp.= ($types[$j] == 0) ? "$rand," : "'$rand',";
+ }
+ substr($tmp,-1)=")";
+ if (length($tmp)+length($res) < $query_size)
+ {
+ $res.= $tmp . ",";
+ }
+ else
+ {
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die $DBI::errstr;
+ $res=$query . $tmp . ",";
+ }
+ }
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die $DBI::errstr;
+}
+else
+{
+ for ($i=0; $i < $many_keys_loop_count; $i++)
+ {
+ $id= $i & 127;
+ $rand=$random[$i];
+ $query="insert into bench1 values ($id,$id,$rand," . ($i & 32767) .
+ ",'ABCDEF$rand',0,$rand,$rand.0,";
+
+ for ($j=8; $j <= $fields ; $j++)
+ {
+ $query.= ($types[$j] == 0) ? "$rand," : "'$rand',";
+ }
+ substr($query,-1)=")";
+ print "query1: $query\n" if ($opt_debug);
+ $dbh->do($query) or die "Got error $DBI::errstr with query: $query\n";
+ }
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time for insert_key ($many_keys_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+}
+if ($opt_fast && defined($server->{vacuum}))
+{
+ if ($opt_lock_tables)
+ {
+ do_query($dbh,"UNLOCK TABLES");
+ }
+ $server->vacuum(1,\$dbh,"bench1");
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+}
+
+#
+# update one key of the above
+#
+
+print "Testing update of keys\n";
+$loop_time=new Benchmark;
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+}
+
+for ($i=0 ; $i< 256; $i++)
+{
+ $dbh->do("update bench1 set field5=1 where field_search=$i")
+ or die "Got error $DBI::errstr with query: update bench1 set field5=1 where field_search=$i\n";
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time for update_of_primary_key_many_keys (256): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+}
+if ($opt_fast && defined($server->{vacuum}))
+{
+ if ($opt_lock_tables)
+ {
+ do_query($dbh,"UNLOCK TABLES");
+ }
+ $server->vacuum(1,\$dbh,"bench1");
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+}
+
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh = $server->connect();
+}
+
+#
+# Delete everything from table
+#
+
+print "Deleting rows from the table\n";
+$loop_time=new Benchmark;
+$count=0;
+
+for ($i=0 ; $i < 128 ; $i++)
+{
+ $count++;
+ $dbh->do("delete from bench1 where field_search = $i") or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for delete_big_many_keys ($count): " .
+timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_lock_tables)
+{
+ $sth = $dbh->do("UNLOCK TABLES") || die $DBI::errstr;
+}
+
+print "Deleting everything from table\n";
+$count=1;
+if ($opt_fast)
+{
+ $query= ($limits->{'truncate_table'} ? "truncate table bench1" :
+ "delete from bench1");
+ $dbh->do($query) or die $DBI::errstr;
+}
+else
+{
+ $dbh->do("delete from bench1 where field1 > 0") or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for delete_all_many_keys ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr;
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+#
+# Test multi value inserts if the server supports it
+#
+
+if ($limits->{'insert_multi_value'})
+{
+ $query_size=$limits->{'query_size'}; # Same limit for all databases
+
+ $sth = $dbh->do("drop table bench1" . $server->{'drop_attr'});
+ do_many($dbh,$server->create("bench1",
+ ["id int NOT NULL",
+ "id2 int NOT NULL",
+ "id3 int NOT NULL",
+ "dummy1 char(30)"],
+ ["primary key (id,id2)",
+ "index index_id3 (id3)"]));
+
+ $loop_time=new Benchmark;
+
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 write") || die $DBI::errstr;
+ }
+ if ($opt_fast && $server->{transactions})
+ {
+ $dbh->{AutoCommit} = 0;
+ }
+
+ print "Inserting $opt_loop_count rows with multiple values\n";
+ $query="insert into bench1 values ";
+ $res=$query;
+ for ($i=0 ; $i < $opt_loop_count ; $i++)
+ {
+ my $tmp= "($i,$i,$i,'EFGHIJKLM'),";
+ if (length($i)+length($res) < $query_size)
+ {
+ $res.= $tmp;
+ }
+ else
+ {
+ do_query($dbh,substr($res,0,length($res)-1));
+ $res=$query .$tmp;
+ }
+ }
+ do_query($dbh,substr($res,0,length($res)-1));
+
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("UNLOCK TABLES ") || die $DBI::errstr;
+ }
+ if ($opt_fast && $server->{transactions})
+ {
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+ }
+
+ $end_time=new Benchmark;
+ print "Time for multiple_value_insert (" . ($opt_loop_count) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("UNLOCK TABLES ") || die $DBI::errstr;
+ }
+
+ # A big table may take a while to drop
+ $loop_time=new Benchmark;
+ $sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr;
+ $end_time=new Benchmark;
+ print "Time for drop table(1): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+#
+# Test insert and update on a table with a lot of different keys
+#
+
+keys_test2:
+
+$keys=min($limits->{'max_index'},8); # 8 is more than enough
+print "Insert into table with $many_keys_loop_count rows, $keys keys and with simple primary key\n";
+
+@fields=();
+@keys=();
+
+# Make keys on the most important types
+@types=(0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1); # A 1 for each char field
+push(@fields,"field1 integer not null");
+push(@fields,"field2 integer not null");
+push(@fields,"field3 char(16) not null");
+push(@fields,"field4 varchar(64) not null");
+push(@fields,"field5 float not null");
+push(@fields,"field6 double not null");
+push(@fields,"field7 integer not null");
+for ($i=8 ; $i <= 16 ; $i++)
+{
+ push(@fields,"field$i varchar(16) not null");
+}
+
+$query="primary key (field1) ";
+push (@keys,$query);
+# Create other keys
+for ($i=2 ; $i <= $keys ; $i++)
+{
+ push(@keys,"index index$i (field$i)");
+}
+
+do_many($dbh,$server->create("bench1",\@fields,\@keys));
+if ($opt_lock_tables)
+{
+ $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+}
+
+$loop_time=new Benchmark;
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+}
+
+$fields=$#fields+1;
+if (($opt_fast || $opt_fast_insert) && $server->{'limits'}->{'insert_multi_value'})
+{
+ $query_size=$server->{'limits'}->{'query_size'};
+ $query="insert into bench1 values ";
+ $res=$query;
+ for ($i=1; $i <= $many_keys_loop_count; $i++)
+ {
+ $id= $i;
+ $rand=$random[$i];
+ $tmp="($id,$id,'test$rand','ABCDEF$rand',$rand.0,$rand.0,$rand,";
+
+ for ($j=8; $j <= $fields ; $j++)
+ {
+ $tmp.= ($types[$j] == 0) ? "$rand," : "'$rand',";
+ }
+ substr($tmp,-1)=")";
+ if (length($tmp)+length($res) < $query_size)
+ {
+ $res.= $tmp . ",";
+ }
+ else
+ {
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die "$DBI::errstr";
+ $res=$query . $tmp . ",";
+ }
+ }
+ $sth = $dbh->do(substr($res,0,length($res)-1)) or die $DBI::errstr;
+}
+else
+{
+ for ($i=1; $i <= $many_keys_loop_count; $i++)
+ {
+ $id= $i;
+ $rand=$random[$i];
+
+
+ $query="insert into bench1 values ($id,$id,'test$rand','ABCDEF$rand',$rand.0,$rand.0,$rand,";
+
+ for ($j=8; $j <= $fields ; $j++)
+ {
+ $query.= ($types[$j] == 0) ? "$rand," : "'$rand',";
+ }
+ substr($query,-1)=")";
+ print "query1: $query\n" if ($opt_debug);
+ $dbh->do($query) or die "Got error $DBI::errstr with query: $query\n";
+ }
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time for insert_many_keys ($many_keys_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ if ($opt_lock_tables)
+ {
+ do_query($dbh,"UNLOCK TABLES");
+ }
+
+ $server->vacuum(1,\$dbh,"bench1");
+ if ($opt_lock_tables)
+ {
+ $sth = $dbh->do("LOCK TABLES bench1 WRITE") || die $DBI::errstr;
+ }
+}
+
+#
+# Testing of update of table with many keys
+#
+
+$loop_time=new Benchmark;
+for ($i=0 ; $i< $many_key_update; $i++)
+{
+ $tmp= ($i*11 % $many_keys_loop_count)+1;
+ $query="update bench1 set field7=$i where field1=$tmp";
+ $dbh->do($query) or die "Got error $DBI::errstr with query $query\n";
+}
+$end_time=new Benchmark;
+print "Time for many_key_update_of_key_with_primary ($many_key_update): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+$loop_time=new Benchmark;
+for ($i=0 ; $i< $many_key_update; $i++)
+{
+ $tmp= ($i*11 % $many_keys_loop_count)+1;
+ $query="update bench1 set field7=$i+1 where field2=$tmp";
+ $dbh->do($query) or die "Got error $DBI::errstr with query $query\n";
+}
+$end_time=new Benchmark;
+print "Time for many_key_update_of_key_with_secondary ($many_key_update): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+$loop_time=new Benchmark;
+for ($i=0 ; $i< $many_key_update; $i++)
+{
+ $tmp= ($i*11 % $many_keys_loop_count)+2;
+ $query="update bench1 set field8='hello', field9='world' where field1=$tmp";
+ $dbh->do($query) or die "Got error $DBI::errstr with query $query\n";
+}
+$end_time=new Benchmark;
+print "Time for many_key_update_of_field_with_primary ($many_key_update): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+$loop_time=new Benchmark;
+for ($i=0 ; $i< $many_key_update; $i++)
+{
+ $tmp= ($i*11 % $many_keys_loop_count)+3;
+ $query="update bench1 set field8='world', field9='hello' where field2=$tmp";
+ $dbh->do($query) or die "Got error $DBI::errstr with query $query\n";
+}
+$end_time=new Benchmark;
+print "Time for many_key_update_of_field_with_secondary ($many_key_update): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+
+$loop_time=new Benchmark;
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr;
+$end_time=new Benchmark;
+print "Time for drop table(1): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+
+####
+#### End of benchmark
+####
+
+$dbh->disconnect; # close connection
+
+end_benchmark($start_time);
+
+###
+### Some help functions
+###
+
+
+# Do some sample selects on direct key
+# First select finds a row, the second one doesn't find.
+
+sub check_select_key
+{
+ my ($sel_columns,$column,$check)= @_;
+ my ($loop_time,$end_time,$i,$tmp_var,$tmp,$count,$row_count,$estimated);
+
+ $estimated=0;
+ $loop_time=new Benchmark;
+ $count=0;
+ for ($i=1 ; $i <= $opt_read_key_loop_count; $i++)
+ {
+ $count+=2;
+ $tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
+ $tmp=$tmpvar % ($total_rows);
+ fetch_all_rows($dbh,"select $sel_columns from bench1 where $column=$tmp")
+ or die $DBI::errstr;
+ $tmp+=$total_rows;
+ defined($row_count=fetch_all_rows($dbh,"select $sel_columns from bench1 where $column=$tmp")) or die $DBI::errstr;
+ die "Found $row_count rows on impossible id: $tmp\n" if ($row_count);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i,
+ $opt_loop_count));
+ }
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for $check ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+}
+
+# Same as above, but select on 2 columns
+
+sub check_select_key2
+{
+ my ($sel_columns,$column,$column2,$check)= @_;
+ my ($loop_time,$end_time,$i,$tmp_var,$tmp,$count,$row_count,$estimated);
+
+ $estimated=0;
+ $loop_time=new Benchmark;
+ $count=0;
+ for ($i=1 ; $i <= $opt_read_key_loop_count; $i++)
+ {
+ $count+=2;
+ $tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
+ $tmp=$tmpvar % ($total_rows);
+ fetch_all_rows($dbh,"select $sel_columns from bench1 where $column=$tmp and $column2=$tmp")
+ or die $DBI::errstr;
+ $tmp+=$total_rows;
+ defined($row_count=fetch_all_rows($dbh,"select $sel_columns from bench1 where $column=$tmp and $column2=$tmp")) or die $DBI::errstr;
+ die "Found $row_count rows on impossible id: $tmp\n" if ($row_count);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i,
+ $opt_loop_count));
+ }
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for $check ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+}
+
+#
+# Search using some very simple queries
+#
+
+sub check_select_range
+{
+ my ($column,$check)= @_;
+ my ($loop_time,$end_time,$i,$tmp_var,$tmp,$query,$rows,$estimated);
+
+ $estimated=0;
+ $loop_time=new Benchmark;
+ $found=$count=0;
+ for ($test=1 ; $test <= $range_loop_count; $test++)
+ {
+ $count+=$#Q+1;
+ for ($i=0 ; $i < $#Q ; $i+=2)
+ {
+ $query=$Q[$i];
+ $rows=$Q[$i+1];
+ $query =~ s/!id!/$column/g;
+ if (($row_count=fetch_all_rows($dbh,$query)) != $rows)
+ {
+ if ($row_count == undef())
+ {
+ die "Got error: $DBI::errstr when executing $query\n";
+ }
+ die "'$query' returned wrong number of rows: $row_count instead of $rows\n";
+ }
+ $found+=$row_count;
+ }
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$test,
+ $range_loop_count));
+ }
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for $check ($count:$found): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+}
+
+
+#
+# SELECT * from bench where col=x or col=x or col=x ...
+
+
+sub check_or_range
+{
+ my ($column,$check)= @_;
+ my ($loop_time,$end_time,$i,$tmp_var,$tmp,$columns,$estimated,$found,
+ $or_part,$count,$loop_count);
+
+ $columns=min($limits->{'max_columns'},50,($limits->{'query_size'}-50)/13);
+ $columns=$columns- ($columns % 4); # Make Divisible by 4
+
+ $estimated=0;
+ $loop_time=new Benchmark;
+ $found=0;
+ # The number of tests must be divisible by the following
+ $tmp= $limits->{'func_extra_in_num'} ? 15 : 10;
+ # We need to calculate the exact number of test to make 'Estimated' right
+ $loop_count=$range_loop_count*10+$tmp-1;
+ $loop_count=$loop_count- ($loop_count % $tmp);
+
+ for ($count=0 ; $count < $loop_count ; )
+ {
+ for ($rowcnt=0; $rowcnt <= $columns; $rowcnt+= $columns/4)
+ {
+ my $query="select * from bench1 where ";
+ my $or_part= "$column = 1";
+ $count+=2;
+
+ for ($i=1 ; $i < $rowcnt ; $i++)
+ {
+ $tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
+ $tmp=$tmpvar % ($opt_loop_count*4);
+ $or_part.=" or $column=$tmp";
+ }
+ print $query . $or_part . "\n" if ($opt_debug);
+ ($rows=fetch_all_rows($dbh,$query . $or_part)) or die $DBI::errstr;
+ $found+=$rows;
+
+ if ($limits->{'func_extra_in_num'})
+ {
+ my $in_part=$or_part; # Same query, but use 'func_extra_in_num' instead.
+ $in_part=~ s/ = / IN \(/;
+ $in_part=~ s/ or $column=/,/g;
+ $in_part.= ")";
+ fetch_all_rows($dbh,$query . $in_part) or die $DBI::errstr;
+ $count++;
+ }
+ # Do it a little harder by setting a extra range
+ defined(($rows=fetch_all_rows($dbh,"$query($or_part) and $column < 10"))) or die $DBI::errstr;
+ $found+=$rows;
+ }
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$count,
+ $loop_count));
+ }
+
+ if ($estimated)
+ { print "Estimated time"; }
+ else
+ { print "Time"; }
+ print " for $check ($count:$found): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+}
+
+#
+# General test of SELECT ... WHERE id in(value-list)
+#
+
+sub test_where_in
+{
+ my ($t1,$t2,$id,$from,$to)= @_;
+
+ return if ($from >= $to);
+
+ $query="SELECT $t1.* FROM $t1 WHERE $id IN (";
+ for ($i=1 ; $i <= $to ; $i++)
+ {
+ $query.="$i,";
+ }
+ $query=substr($query,0,length($query)-1) . ")";
+
+ # Fill join table to have the same id's as 'query'
+ for ($i= $from ; $i <= $to ; $i++)
+ {
+ $dbh->do("insert into $t2 values($i)") or die $DBI::errstr;
+ }
+ if ($opt_fast && defined($server->{vacuum}))
+ {
+ $server->vacuum(1,\$dbh,"bench1");
+ }
+
+ time_fetch_all_rows("Testing SELECT ... WHERE id in ($to values)",
+ "select_in", $query, $dbh,
+ $range_loop_count);
+ time_fetch_all_rows(undef, "select_join_in",
+ "SELECT $t1.* FROM $t2 left outer join $t1 on ($t1.$id=$t2.$id)",
+ $dbh, $range_loop_count);
+}
diff --git a/sql-bench/test-select.sh b/sql-bench/test-select.sh
new file mode 100644
index 00000000..fefc860e
--- /dev/null
+++ b/sql-bench/test-select.sh
@@ -0,0 +1,500 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# Test of selecting on keys that consist of many parts
+#
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Getopt::Long;
+use Benchmark;
+
+$opt_loop_count=10000;
+$opt_medium_loop_count=7000;
+$opt_small_loop_count=10;
+$opt_regions=6;
+$opt_groups=100;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+$columns=min($limits->{'max_columns'},500,($limits->{'query_size'}-50)/24,
+ $limits->{'max_conditions'}/2-3);
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=10;
+ $opt_medium_loop_count/=10;
+ $opt_small_loop_count/=10;
+ $opt_groups/=10;
+}
+
+print "Testing the speed of selecting on keys that consist of many parts\n";
+print "The test-table has $opt_loop_count rows and the test is done with $columns ranges.\n\n";
+
+####
+#### Connect and start timeing
+####
+
+$dbh = $server->connect();
+$start_time=new Benchmark;
+
+####
+#### Create needed tables
+####
+
+goto select_test if ($opt_skip_create);
+
+print "Creating table\n";
+$dbh->do("drop table bench1" . $server->{'drop_attr'});
+
+do_many($dbh,$server->create("bench1",
+ ["region char(1) NOT NULL",
+ "idn integer(6) NOT NULL",
+ "rev_idn integer(6) NOT NULL",
+ "grp integer(6) NOT NULL",
+ "grp_no_key integer(6) NOT NULL"],
+ ["primary key (region,idn)",
+ "unique (region,rev_idn)",
+ "unique (region,grp,idn)"]));
+if ($opt_lock_tables)
+{
+ do_query($dbh,"LOCK TABLES bench1 WRITE");
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+####
+#### Insert $opt_loop_count records with
+#### region: "A" -> "E"
+#### idn: 0 -> count
+#### rev_idn: count -> 0,
+#### grp: distributed values 0 - > count/100
+####
+
+print "Inserting $opt_loop_count rows\n";
+
+$loop_time=new Benchmark;
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+}
+
+$query="insert into bench1 values (";
+$half_done=$opt_loop_count/2;
+for ($id=0,$rev_id=$opt_loop_count-1 ; $id < $opt_loop_count ; $id++,$rev_id--)
+{
+ $grp=$id*3 % $opt_groups;
+ $region=chr(65+$id%$opt_regions);
+ do_query($dbh,"$query'$region',$id,$rev_id,$grp,$grp)");
+ if ($id == $half_done)
+ { # Test with different insert
+ $query="insert into bench1 (region,idn,rev_idn,grp,grp_no_key) values (";
+ }
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time to insert ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"UNLOCK TABLES");
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh,"bench1");
+}
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"LOCK TABLES bench1 WRITE");
+}
+
+####
+#### Do some selects on the table
+####
+
+select_test:
+
+if ($limits->{'group_functions'})
+{
+ my ($tmp); $tmp=1000;
+ print "Test if the database has a query cache\n";
+
+ # First ensure that the table is read into memory
+ fetch_all_rows($dbh,"select sum(idn+$tmp),sum(rev_idn-$tmp) from bench1");
+
+ $loop_time=new Benchmark;
+ for ($tests=0 ; $tests < $opt_loop_count ; $tests++)
+ {
+ fetch_all_rows($dbh,"select sum(idn+100),sum(rev_idn-100) from bench1");
+ }
+ $end_time=new Benchmark;
+ print "Time for select_cache ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+ # If the database has a query cache, the following loop should be much
+ # slower than the previous loop
+
+ $loop_time=new Benchmark;
+ for ($tests=0 ; $tests < $opt_loop_count ; $tests++)
+ {
+ fetch_all_rows($dbh,"select sum(idn+$tests),sum(rev_idn-$tests) from bench1");
+ }
+ $end_time=new Benchmark;
+ print "Time for select_cache2 ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+
+print "Testing big selects on the table\n";
+$loop_time=new Benchmark;
+$rows=0;
+for ($i=0 ; $i < $opt_small_loop_count ; $i++)
+{
+ $grp=$i*11 % $opt_groups;
+ $region=chr(65+$i%($opt_regions+1)); # One larger to test misses
+ $rows+=fetch_all_rows($dbh,"select idn from bench1 where region='$region'");
+ $rows+=fetch_all_rows($dbh,"select idn from bench1 where region='$region' and idn=$i");
+ $rows+=fetch_all_rows($dbh,"select idn from bench1 where region='$region' and rev_idn=$i");
+ $rows+=fetch_all_rows($dbh,"select idn from bench1 where region='$region' and grp=$grp");
+ $rows+=fetch_all_rows($dbh,"select idn from bench1 where region>='B' and region<='C' and grp=$grp");
+ $rows+=fetch_all_rows($dbh,"select idn from bench1 where region>='B' and region<='E' and grp=$grp");
+ $rows+=fetch_all_rows($dbh,"select idn from bench1 where grp=$grp"); # This is hard
+}
+$count=$opt_small_loop_count*7;
+
+$end_time=new Benchmark;
+print "Time for select_big ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+# Test select with many OR's
+
+$loop_time=new Benchmark;
+$tmpvar=0;
+$count=0;
+$estimated=0;
+$max_and_conditions=$limits->{'max_conditions'}/2;
+$rows=0;
+
+for ($i=0 ; $i < $opt_small_loop_count ; $i++)
+{
+ $region=chr(65+$i%($opt_regions+1)); # One larger to test out-of-regions
+ $query="select * from bench1 where ";
+ $or_part="grp = 1";
+ $or_part2="region='A' and grp=1";
+
+ for ($j=1 ; $j < $columns; $j++)
+ {
+ $tmpvar^= ((($tmpvar + 63) + $j)*3 % 100000);
+ $tmp=$tmpvar % $opt_groups;
+ $tmp_region=chr(65+$tmpvar%$opt_regions);
+ $or_part.=" or grp=$tmp";
+ if ($j < $max_and_conditions)
+ {
+ $or_part2.=" or region='$tmp_region' and grp=$tmp";
+ }
+ }
+ $or_part="region='$region' and ($or_part)";
+
+# Same query, but use 'func_extra_in_num' instead.
+ if ($limits->{'func_extra_in_num'})
+ {
+ $in_part=$or_part;
+ $in_part=~ s/ = / IN \(/;
+ $in_part=~ s/ or grp=/,/g;
+ $in_part.= ")";
+ defined($found=fetch_all_rows($dbh,$query . $in_part)) || die $DBI::errstr;
+ $rows+=$found;
+ $count++;
+ }
+ for ($j=0; $j < 10 ; $j++)
+ {
+ $rows+=fetch_all_rows($dbh,$query . $or_part);
+ $rows+=fetch_all_rows($dbh,$query . $or_part2);
+# Do it a little harder by setting a extra range
+ $rows+=fetch_all_rows($dbh,"$query ($or_part) and idn < 50");
+ $rows+=fetch_all_rows($dbh,"$query (($or_part) or (region='A' and grp < 10)) and region <='B'")
+ }
+ $count+=$j*4;
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_small_loop_count));
+}
+
+print_time($estimated);
+print " for select_range ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+#
+# Testing MIN() and MAX() on keys
+#
+
+if ($limits->{'group_functions'} && $limits->{'order_by_unused'})
+{
+ $loop_time=new Benchmark;
+ $count=0;
+ $estimated=0;
+ for ($tests=0 ; $tests < $opt_loop_count ; $tests++)
+ {
+ $count+=7;
+ $grp=$tests*3 % $opt_groups;
+ $region=chr(65+$tests % $opt_regions);
+ if ($limits->{'group_func_sql_min_str'})
+ {
+ fetch_all_rows($dbh,"select min(region) from bench1");
+ fetch_all_rows($dbh,"select max(region) from bench1");
+ fetch_all_rows($dbh,"select min(region),max(region) from bench1");
+ }
+ fetch_all_rows($dbh,"select min(rev_idn) from bench1 where region='$region'");
+
+ fetch_all_rows($dbh,"select max(grp) from bench1 where region='$region'");
+ fetch_all_rows($dbh,"select max(idn) from bench1 where region='$region' and grp=$grp");
+ if ($limits->{'group_func_sql_min_str'})
+ {
+ fetch_all_rows($dbh,"select max(region) from bench1 where region<'$region'");
+ }
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,
+ $tests+1, $opt_loop_count));
+ }
+ print_time($estimated);
+ print " for min_max_on_key ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $count=0;
+ $estimated=0;
+ for ($tests=0 ; $tests < $opt_loop_count ; $tests++)
+ {
+ $count+=5;
+ $grp=$tests*3 % $opt_groups;
+ $region=chr(65+$tests % $opt_regions);
+ fetch_all_rows($dbh,"select count(*) from bench1 where region='$region'");
+ fetch_all_rows($dbh,"select count(*) from bench1 where region='$region' and grp=$grp");
+ fetch_all_rows($dbh,"select count(*) from bench1 where region>'$region'");
+ fetch_all_rows($dbh,"select count(*) from bench1 where region<='$region'");
+ fetch_all_rows($dbh,"select count(*) from bench1 where region='$region' and grp>$grp");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,
+ $tests+1, $opt_loop_count));
+ }
+ print_time($estimated);
+ print " for count_on_key ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+}
+
+if ($limits->{'group_functions'})
+{
+ $loop_time=new Benchmark;
+ $rows=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $rows+=fetch_all_rows($dbh,"select grp,count(*) from bench1 group by grp");
+ }
+ $end_time=new Benchmark;
+ print "Time for count_group_on_key_parts ($i:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $rows+=fetch_all_rows($dbh,"select grp_no_key,count(*) from bench1 group by grp_no_key");
+ }
+ $end_time=new Benchmark;
+ print "Time for count_group ($i:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $rows+=fetch_all_rows($dbh,"select grp_no_key,count(*) from bench1 group by grp_no_key order by grp_no_key");
+ }
+ $end_time=new Benchmark;
+
+ print "Time for count_group_order_group ($i:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ if ($limits->{'order_by_null'})
+ {
+ $loop_time=new Benchmark;
+ $rows=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $rows+=fetch_all_rows($dbh,"select grp_no_key,count(*) from bench1 group by grp_no_key order by null");
+ }
+ $end_time=new Benchmark;
+ print "Time for count_group_order_null ($i:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+ }
+ $loop_time=new Benchmark;
+ $rows=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $rows+=fetch_all_rows($dbh,"select grp_no_key,count(*) as cnt from bench1 group by grp_no_key order by cnt");
+ }
+ $end_time=new Benchmark;
+ print "Time for count_group_with_order ($i:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+if ($limits->{'group_distinct_functions'})
+{
+ print "Testing count(distinct) on the table\n";
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select count(distinct region) from bench1");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_key_prefix ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select count(distinct grp) from bench1");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+# Workaround mimer's behavior
+ if ($limits->{'multi_distinct'})
+ {
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select count(distinct grp),count(distinct rev_idn) from bench1");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_2 ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+ }
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select region,count(distinct idn) from bench1 group by region");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_group_on_key ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select grp,count(distinct idn) from bench1 group by grp");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_group_on_key_parts ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select grp,count(distinct rev_idn) from bench1 group by grp");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $opt_medium_loop_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_group ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+ $loop_time=new Benchmark;
+ $rows=$estimated=$count=0;
+ $test_count=$opt_medium_loop_count/10;
+ for ($i=0 ; $i < $test_count ; $i++)
+ {
+ $count++;
+ $rows+=fetch_all_rows($dbh,"select idn,count(distinct region) from bench1 group by idn");
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$count,$i+1,
+ $test_count));
+ }
+ print_time($estimated);
+ print " for count_distinct_big ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+}
+
+####
+#### End of benchmark
+####
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"UNLOCK TABLES");
+}
+if (!$opt_skip_delete)
+{
+ do_query($dbh,"drop table bench1" . $server->{'drop_attr'});
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+$dbh->disconnect; # close connection
+
+end_benchmark($start_time);
diff --git a/sql-bench/test-table-elimination.sh b/sql-bench/test-table-elimination.sh
new file mode 100755
index 00000000..0f5e53e0
--- /dev/null
+++ b/sql-bench/test-table-elimination.sh
@@ -0,0 +1,309 @@
+#!/usr/bin/env perl
+# Test of table elimination feature
+
+use Cwd;
+use DBI;
+use Getopt::Long;
+use Benchmark;
+
+$opt_loop_count=100000;
+$opt_medium_loop_count=10000;
+$opt_small_loop_count=100;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=10;
+ $opt_medium_loop_count/=10;
+ $opt_small_loop_count/=10;
+}
+
+print "Testing table elimination feature\n";
+print "The test table has $opt_loop_count rows.\n\n";
+
+# A query to get the recent versions of all attributes:
+$select_current_full_facts="
+ select
+ F.id, A1.attr1, A2.attr2
+ from
+ elim_facts F
+ left join elim_attr1 A1 on A1.id=F.id
+ left join elim_attr2 A2 on A2.id=F.id and
+ A2.fromdate=(select MAX(fromdate) from
+ elim_attr2 where id=A2.id);
+";
+# TODO: same as above but for some given date also?
+
+
+####
+#### Connect and start timeing
+####
+
+$dbh = $server->connect();
+$start_time=new Benchmark;
+
+####
+#### Create needed tables
+####
+
+goto select_test if ($opt_skip_create);
+
+print "Creating tables\n";
+$dbh->do("drop view elim_current_facts");
+$dbh->do("drop table elim_facts" . $server->{'drop_attr'});
+$dbh->do("drop table elim_attr1" . $server->{'drop_attr'});
+$dbh->do("drop table elim_attr2" . $server->{'drop_attr'});
+
+# The facts table
+do_many($dbh,$server->create("elim_facts",
+ ["id integer"],
+ ["primary key (id)"]));
+
+# Attribute1, non-versioned
+do_many($dbh,$server->create("elim_attr1",
+ ["id integer",
+ "attr1 integer"],
+ ["primary key (id)",
+ "index ix_attr1 (attr1)"]));
+
+# Attribute2, time-versioned
+do_many($dbh,$server->create("elim_attr2",
+ ["id integer",
+ "attr2 integer",
+ "fromdate date"],
+ ["primary key (id, fromdate)",
+ "index ix_attr2 (attr2,fromdate)"]));
+
+#NOTE: ignoring: if ($limits->{'views'})
+$dbh->do("drop view elim_current_facts");
+$dbh->do("create view elim_current_facts as $select_current_full_facts");
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"LOCK TABLES elim_current_facts WRITE, elim_facts WRITE, elim_attr1 WRITE, elim_attr2 WRITE");
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+####
+#### Fill the facts table
+####
+$n_facts= $opt_loop_count;
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+}
+
+print "Inserting $n_facts rows into facts table\n";
+$loop_time=new Benchmark;
+
+$query="insert into elim_facts values (";
+for ($id=0; $id < $n_facts ; $id++)
+{
+ do_query($dbh,"$query $id)");
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time to insert ($n_facts): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+####
+#### Fill attr1 table
+####
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+}
+
+print "Inserting $n_facts rows into attr1 table\n";
+$loop_time=new Benchmark;
+
+$query="insert into elim_attr1 values (";
+for ($id=0; $id < $n_facts ; $id++)
+{
+ $attr1= ceil(rand($n_facts));
+ do_query($dbh,"$query $id, $attr1)");
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time to insert ($n_facts): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+####
+#### Fill attr2 table
+####
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->{AutoCommit} = 0;
+}
+
+print "Inserting $n_facts rows into attr2 table\n";
+$loop_time=new Benchmark;
+
+for ($id=0; $id < $n_facts ; $id++)
+{
+ # Two values for each $id - current one and obsolete one.
+ $attr1= ceil(rand($n_facts));
+ $query="insert into elim_attr2 values ($id, $attr1, now())";
+ do_query($dbh,$query);
+ $query="insert into elim_attr2 values ($id, $attr1, '2009-01-01')";
+ do_query($dbh,$query);
+}
+
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time to insert ($n_facts): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+####
+#### Finalize the database population
+####
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"UNLOCK TABLES");
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh,"elim_facts");
+ $server->vacuum(1,\$dbh,"elim_attr1");
+ $server->vacuum(1,\$dbh,"elim_attr2");
+}
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"LOCK TABLES elim_current_facts READ, elim_facts READ, elim_attr1 READ, elim_attr2 READ");
+}
+
+####
+#### Do some selects on the table
+####
+
+select_test:
+
+#
+# The selects will be:
+# - N pk-lookups with all attributes
+# - pk-attribute-based lookup
+# - latest-attribute value based lookup.
+
+
+###
+### Bare facts select:
+###
+print "testing bare facts facts table\n";
+$loop_time=new Benchmark;
+$rows=0;
+for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+{
+ $val= ceil(rand($n_facts));
+ $rows+=fetch_all_rows($dbh,"select * from elim_facts where id=$val");
+}
+$count=$i;
+
+$end_time=new Benchmark;
+print "time for select_bare_facts ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+###
+### Full facts select, no elimination:
+###
+print "testing full facts facts table\n";
+$loop_time=new Benchmark;
+$rows=0;
+for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+{
+ $val= rand($n_facts);
+ $rows+=fetch_all_rows($dbh,"select * from elim_current_facts where id=$val");
+}
+$count=$i;
+
+$end_time=new Benchmark;
+print "time for select_two_attributes ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+###
+### Now with elimination: select only only one fact
+###
+print "testing selection of one attribute\n";
+$loop_time=new Benchmark;
+$rows=0;
+for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+{
+ $val= rand($n_facts);
+ $rows+=fetch_all_rows($dbh,"select id, attr1 from elim_current_facts where id=$val");
+}
+$count=$i;
+
+$end_time=new Benchmark;
+print "time for select_one_attribute ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+###
+### Now with elimination: select only only one fact
+###
+print "testing selection of one attribute\n";
+$loop_time=new Benchmark;
+$rows=0;
+for ($i=0 ; $i < $opt_medium_loop_count ; $i++)
+{
+ $val= rand($n_facts);
+ $rows+=fetch_all_rows($dbh,"select id, attr2 from elim_current_facts where id=$val");
+}
+$count=$i;
+
+$end_time=new Benchmark;
+print "time for select_one_attribute ($count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
+;
+
+####
+#### End of benchmark
+####
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"UNLOCK TABLES");
+}
+if (!$opt_skip_delete)
+{
+ $dbh->do("drop view elim_current_facts");
+ do_query($dbh,"drop table elim_facts, elim_attr1, elim_attr2" . $server->{'drop_attr'});
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+$dbh->disconnect; # close connection
+
+end_benchmark($start_time);
+
diff --git a/sql-bench/test-transactions.sh b/sql-bench/test-transactions.sh
new file mode 100644
index 00000000..1b88b258
--- /dev/null
+++ b/sql-bench/test-transactions.sh
@@ -0,0 +1,304 @@
+#!/usr/bin/env perl
+# Copyright (c) 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+# Test of transactions performance.
+#
+
+##################### Standard benchmark inits ##############################
+
+use Cwd;
+use DBI;
+use Benchmark;
+#use warnings;
+
+$opt_groups=27; # Characters are 'A' -> Z
+
+$opt_loop_count=500000; # Change this to make test harder/easier
+$opt_medium_loop_count=10000; # Change this to make test harder/easier
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+# Avoid warnings for variables in bench-init.pl
+# (Only works with perl 5.6)
+#our ($opt_small_test, $opt_small_tables, $opt_debug, $opt_force);
+
+if ($opt_small_test || $opt_small_tables)
+{
+ $opt_loop_count/=100;
+ $opt_medium_loop_count/=10;
+}
+
+####
+#### Connect and start timeing
+####
+
+$start_time=new Benchmark;
+$dbh = $server->connect();
+
+###
+### Create Table
+###
+
+print "Creating tables\n";
+$dbh->do("drop table bench1");
+$dbh->do("drop table bench2");
+
+do_many($dbh,$server->create("bench1",
+ ["idn int NOT NULL",
+ "rev_idn int NOT NULL",
+ "region char(1) NOT NULL",
+ "grp int NOT NULL",
+ "updated tinyint NOT NULL"],
+ ["primary key (idn)",
+ "unique (region,grp)"]));
+do_many($dbh,$server->create("bench2",
+ ["idn int NOT NULL",
+ "rev_idn int NOT NULL",
+ "region char(1) NOT NULL",
+ "grp int NOT NULL",
+ "updated tinyint NOT NULL"],
+ ["primary key (idn)",
+ "unique (region,grp)"]));
+
+$dbh->{AutoCommit} = 0;
+
+###
+### Test insert perfomance
+###
+
+if ($server->{transactions})
+{
+ test_insert("bench1","insert_commit",0);
+}
+test_insert("bench2","insert_autocommit",1);
+
+sub test_insert
+{
+ my ($table, $test_name, $auto_commit)= @_;
+ my ($loop_time,$end_time,$id,$rev_id,$grp,$region);
+
+ $dbh->{AutoCommit}= $auto_commit;
+ $loop_time=new Benchmark;
+
+ for ($id=0,$rev_id=$opt_loop_count-1 ; $id < $opt_loop_count ;
+ $id++,$rev_id--)
+ {
+ $grp=$id/$opt_groups;
+ $region=chr(65+$id%$opt_groups);
+ do_query($dbh,"insert into $table values ($id,$rev_id,'$region',$grp,0)");
+ }
+
+ $dbh->commit if (!$auto_commit);
+ $end_time=new Benchmark;
+ print "Time for $test_name ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+###
+### Test rollback performance
+###
+
+print "Test transactions rollback performance\n" if($opt_debug);
+
+##
+## Insert rollback test
+##
+
+#
+# Test is done by inserting 100 rows in a table with lots of rows and
+# then doing a rollback on these
+#
+
+if ($server->{transactions})
+{
+ my ($id,$rev_id,$grp,$region,$end,$loop_time,$end_time,$commit_loop,$count);
+
+ $dbh->{AutoCommit} = 0;
+ $loop_time=new Benchmark;
+ $end=$opt_loop_count*2;
+ $count=0;
+
+ for ($commit_loop=1, $id=$opt_loop_count ; $id < $end ;
+ $id++, $commit_loop++)
+ {
+ $rev_id=$end-$id;
+ $grp=$id/$opt_groups;
+ $region=chr(65+$id%$opt_groups);
+ do_query($dbh,"insert into bench1 values ($id,$rev_id,'$region',$grp,0)");
+ if ($commit_loop >= $opt_medium_loop_count)
+ {
+ $dbh->rollback;
+ $commit_loop=0;
+ $count++;
+ }
+ }
+ if ($commit_loop > 1)
+ {
+ $dbh->rollback;
+ $count++;
+ }
+ $end_time=new Benchmark;
+ print "Time for insert_rollback ($count:$opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+##
+## Update rollback test
+##
+
+#
+# Test is done by updating 100 rows in a table with lots of rows and
+# then doing a rollback on these
+#
+
+if ($server->{transactions})
+{
+ my ($id,$loop_time,$end_time,$commit_loop,$count);
+
+ $dbh->{AutoCommit} = 0;
+ $loop_time=new Benchmark;
+ $end=$opt_loop_count*2;
+ $count=0;
+
+ for ($commit_loop=1, $id=0 ; $id < $opt_loop_count ; $id++, $commit_loop++)
+ {
+ do_query($dbh,"update bench1 set updated=2 where idn=$id");
+ if ($commit_loop >= $opt_medium_loop_count)
+ {
+ $dbh->rollback;
+ $commit_loop=0;
+ $count++;
+ }
+ }
+ if ($commit_loop > 1)
+ {
+ $dbh->rollback;
+ $count++;
+ }
+ $end_time=new Benchmark;
+ print "Time for update_rollback ($count:$opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+##
+## Delete rollback test
+##
+
+#
+# Test is done by deleting 100 rows in a table with lots of rows and
+# then doing a rollback on these
+#
+
+if ($server->{transactions})
+{
+ my ($id,$loop_time,$end_time,$commit_loop,$count);
+
+ $dbh->{AutoCommit} = 0;
+ $loop_time=new Benchmark;
+ $end=$opt_loop_count*2;
+ $count=0;
+
+ for ($commit_loop=1, $id=0 ; $id < $opt_loop_count ; $id++, $commit_loop++)
+ {
+ do_query($dbh,"delete from bench1 where idn=$id");
+ if ($commit_loop >= $opt_medium_loop_count)
+ {
+ $dbh->rollback;
+ $commit_loop=0;
+ $count++;
+ }
+ }
+ if ($commit_loop > 1)
+ {
+ $dbh->rollback;
+ $count++;
+ }
+ $end_time=new Benchmark;
+ print "Time for delete_rollback ($count:$opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+
+###
+### Test update perfomance
+###
+
+if ($server->{transactions})
+{
+ test_update("bench1","update_commit",0);
+}
+test_update("bench2","update_autocommit",1);
+
+sub test_update
+{
+ my ($table, $test_name, $auto_commit)= @_;
+ my ($loop_time,$end_time,$id);
+
+ $dbh->{AutoCommit}= $auto_commit;
+ $loop_time=new Benchmark;
+
+ for ($id=0 ; $id < $opt_loop_count ; $id++)
+ {
+ do_query($dbh,"update $table set updated=1 where idn=$id");
+ }
+
+ $dbh->commit if (!$auto_commit);
+ $end_time=new Benchmark;
+ print "Time for $test_name ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+###
+### Test delete perfomance
+###
+
+if ($server->{transactions})
+{
+ test_delete("bench1","delete_commit",0);
+}
+test_delete("bench2","delete_autocommit",1);
+
+sub test_delete
+{
+ my ($table, $test_name, $auto_commit)= @_;
+ my ($loop_time,$end_time,$id);
+
+ $dbh->{AutoCommit}= $auto_commit;
+ $loop_time=new Benchmark;
+
+ for ($id=0 ; $id < $opt_loop_count ; $id++)
+ {
+ do_query($dbh,"delete from $table where idn=$id");
+ }
+ $dbh->commit if (!$auto_commit);
+ $end_time=new Benchmark;
+ print "Time for $test_name ($opt_loop_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+}
+
+####
+#### End of benchmark
+####
+
+$sth = $dbh->do("drop table bench1" . $server->{'drop_attr'}) or die $DBI::errstr;
+$sth = $dbh->do("drop table bench2" . $server->{'drop_attr'}) or die $DBI::errstr;
+
+$dbh->disconnect; # close connection
+end_benchmark($start_time);
diff --git a/sql-bench/test-wisconsin.sh b/sql-bench/test-wisconsin.sh
new file mode 100644
index 00000000..581db897
--- /dev/null
+++ b/sql-bench/test-wisconsin.sh
@@ -0,0 +1,373 @@
+#!/usr/bin/env perl
+# Copyright (c) 2000, 2001, 2003, 2006 MySQL AB, 2009 Sun Microsystems, Inc.
+# Use is subject to license terms.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Library General Public
+# License as published by the Free Software Foundation; version 2
+# of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Library General Public License for more details.
+#
+# You should have received a copy of the GNU Library General Public
+# License along with this library; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1335 USA
+#
+
+use Cwd;
+use DBI;
+use Benchmark;
+
+$opt_loop_count=5000;
+
+$pwd = cwd(); $pwd = "." if ($pwd eq '');
+require "$pwd/bench-init.pl" || die "Can't read Configuration file: $!\n";
+
+$into_table = "";
+
+if ($opt_small_test)
+{
+ $opt_loop_count/=5;
+}
+
+####
+#### Connect and start timeing
+####
+
+$dbh = $server->connect();
+$start_time=new Benchmark;
+
+####
+#### Create needed tables
+####
+
+init_data();
+init_query();
+
+print "Wisconsin benchmark test\n\n";
+
+if ($opt_skip_create)
+{
+ if ($opt_lock_tables)
+ {
+ @tmp=@table_names; push(@tmp,@extra_names);
+ $sth = $dbh->do("LOCK TABLES " . join(" WRITE,", @tmp) . " WRITE") ||
+ die $DBI::errstr;
+ }
+ goto start_benchmark;
+}
+
+$loop_time= new Benchmark;
+for($ti = 0; $ti <= $#table_names; $ti++)
+{
+ my $table_name = $table_names[$ti];
+ my $array_ref = $tables[$ti];
+
+ # This may fail if we have no table so do not check answer
+ $sth = $dbh->do("drop table $table_name" . $server->{'drop_attr'});
+ print "Creating table $table_name\n" if ($opt_verbose);
+ do_many($dbh,@$array_ref);
+}
+$end_time=new Benchmark;
+print "Time for create_table ($#tables): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(1,\$dbh);
+}
+
+
+####
+#### Insert data
+####
+
+print "Inserting data\n";
+$loop_time= new Benchmark;
+$row_count=0;
+if ($opt_lock_tables)
+{
+ @tmp=@table_names; push(@tmp,@extra_names);
+ $sth = $dbh->do("LOCK TABLES " . join(" WRITE,", @tmp) . " WRITE") ||
+ die $DBI::errstr;
+}
+
+if ($opt_fast && $server->{'limits'}->{'load_data_infile'})
+{
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ if ($table_name =~ /tenk|Bprime/i) {
+ $filename = "$pwd/Data/Wisconsin/tenk.data";
+ } else {
+ $filename = "$pwd/Data/Wisconsin/$table_name.data";
+ }
+ $row_count+=$server->insert_file($table_name,$filename,$dbh);
+ }
+}
+else
+{
+ if ($opt_fast && $server->{transactions})
+ {
+ $dbh->{AutoCommit} = 0;
+ }
+
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ my $array_ref = $tables[$ti];
+ my @table = @$array_ref;
+ my $insert_start = "insert into $table_name values (";
+
+ if ($table_name =~ /tenk|Bprime/i) {
+ $filename = "$pwd/Data/Wisconsin/tenk.data";
+ } else {
+ $filename = "$pwd/Data/Wisconsin/$table_name.data";
+ }
+ open(DATA, "$filename") || die "Can't open text file: $filename\n";
+ while(<DATA>)
+ {
+ chomp;
+ $command = $insert_start . $_ . ")";
+ print "$command\n" if ($opt_debug);
+ $sth = $dbh->do($command) or die $DBI::errstr;
+ $row_count++;
+ }
+ }
+ close(DATA);
+}
+
+if ($opt_lock_tables)
+{
+ do_query($dbh,"UNLOCK TABLES");
+}
+if ($opt_fast && $server->{transactions})
+{
+ $dbh->commit;
+ $dbh->{AutoCommit} = 1;
+}
+
+$end_time=new Benchmark;
+print "Time to insert ($row_count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+## Oracle runs out of rollback segments here if using the default "small"
+## configuration so disconnect and reconnect to use a new segment
+if ($server->small_rollback_segment())
+{
+ $dbh->disconnect; # close connection
+ $dbh=$server->connect();
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh,@table_names);
+}
+
+if ($opt_lock_tables)
+{
+ @tmp=@table_names; push(@tmp,@extra_names);
+ $sth = $dbh->do("LOCK TABLES " . join(" WRITE,", @tmp) . " WRITE") ||
+ die $DBI::errstr;
+}
+
+$loop_time= $end_time;
+print "Delete from Bprime where unique2 >= 1000\n" if ($opt_debug);
+$sth = $dbh->do("delete from Bprime where Bprime.unique2 >= 1000") or
+ die $DBI::errstr;
+$end_time=new Benchmark;
+print "Time to delete_big (1): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+####
+#### Running the benchmark
+####
+
+start_benchmark:
+
+print "Running the actual benchmark\n";
+
+$loop_time= new Benchmark;
+$count=0;
+for ($i = 0; $i <= $#query; $i+=2)
+{
+ if ($query[$i+1]) # If the server can handle it
+ {
+ $loop_count = 1;
+ $loop_count = $opt_loop_count if ($query[$i] =~ /^select/i);
+ $query[$i] =~ s/\sAS\s+[^\s,]+//ig if (!$limits->{'column_alias'});
+ timeit($loop_count, "fetch_all_rows(\$dbh,\"$query[$i]\")");
+ $count+=$loop_count;
+ }
+}
+
+$end_time=new Benchmark;
+print "Time for wisc_benchmark ($count): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n\n";
+
+if (!$opt_skip_delete)
+{
+ for ($ti = 0; $ti <= $#table_names; $ti++)
+ {
+ my $table_name = $table_names[$ti];
+ $sth = $dbh->do("drop table $table_name" . $server->{'drop_attr'});
+ }
+}
+
+if ($opt_fast && defined($server->{vacuum}))
+{
+ $server->vacuum(0,\$dbh);
+}
+
+####
+#### The END
+####
+
+$dbh->disconnect; # close connection
+end_benchmark($start_time);
+
+
+################################
+###### subroutine for database structure
+################################
+
+sub init_data
+{
+ @onek=
+ $server->create("onek",
+ ["unique1 int(5) NOT NULL",
+ "unique2 int(4) NOT NULL",
+ "two int(4)",
+ "four int(4)",
+ "ten int(4)",
+ "twenty int(4)",
+ "hundred int(4) NOT NULL",
+ "thousand int(4)",
+ "twothousand int(4)",
+ "fivethous int(4)",
+ "tenthous int(4)",
+ "odd int(4)",
+ "even int(4)",
+ "stringu1 char(16)",
+ "stringu2 char(16)",
+ "string4 char(16)"],
+ ["UNIQUE (unique1)",
+ "UNIQUE (unique2)",
+ "INDEX hundred1 (hundred)"]);
+
+ @tenk1=
+ $server->create("tenk1",
+ ["unique1 int(4) NOT NULL",
+ "unique2 int(4) NOT NULL",
+ "two int(4)",
+ "four int(4)",
+ "ten int(4)",
+ "twenty int(4)",
+ "hundred int(4) NOT NULL",
+ "thousand int(4)",
+ "twothousand int(4)",
+ "fivethous int(4)",
+ "tenthous int(4)",
+ "odd int(4)",
+ "even int(4)",
+ "stringu1 char(16)",
+ "stringu2 char(16)",
+ "string4 char(16)"],
+ ["UNIQUE (unique1)",
+ "UNIQUE (unique2)",
+ "INDEX hundred2 (hundred)"]);
+
+ @tenk2=
+ $server->create("tenk2",
+ ["unique1 int(4) NOT NULL",
+ "unique2 int(4) NOT NULL",
+ "two int(4)",
+ "four int(4)",
+ "ten int(4)",
+ "twenty int(4)",
+ "hundred int(4) NOT NULL",
+ "thousand int(4)",
+ "twothousand int(4)",
+ "fivethous int(4)",
+ "tenthous int(4)",
+ "odd int(4)",
+ "even int(4)",
+ "stringu1 char(16)",
+ "stringu2 char(16)",
+ "string4 char(16)"],
+ ["UNIQUE (unique1)",
+ "UNIQUE (unique2)",
+ "INDEX hundred3 (hundred)"]);
+
+ @Bprime=
+ $server->create("Bprime",
+ ["unique1 int(4) NOT NULL",
+ "unique2 int(4) NOT NULL",
+ "two int(4)",
+ "four int(4)",
+ "ten int(4)",
+ "twenty int(4)",
+ "hundred int(4) NOT NULL",
+ "thousand int(4)",
+ "twothousand int(4)",
+ "fivethous int(4)",
+ "tenthous int(4)",
+ "odd int(4)",
+ "even int(4)",
+ "stringu1 char(16)",
+ "stringu2 char(16)",
+ "string4 char(16)"],
+ ["UNIQUE (unique1)",
+ "UNIQUE (unique2)",
+ "INDEX hundred4 (hundred)"]);
+
+ @tables =
+ (\@onek, \@tenk1, \@tenk2, \@Bprime);
+
+ @table_names =
+ ("onek", "tenk1", "tenk2", "Bprime");
+
+# Alias used in joins
+ @extra_names=
+ ("tenk1 as t", "tenk1 as t1","tenk1 as t2", "Bprime as B","onek as o");
+}
+
+
+sub init_query
+{
+ @query=
+ ("select * $into_table from tenk1 where (unique2 > 301) and (unique2 < 402)",1,
+ "select * $into_table from tenk1 where (unique1 > 647) and (unique1 < 1648)",1,
+ "select * from tenk1 where unique2 = 2001",1,
+ "select * from tenk1 where (unique2 > 301) and (unique2 < 402)",1,
+ "select t1.*, t2.unique1 AS t2unique1, t2.unique2 AS t2unique2, t2.two AS t2two, t2.four AS t2four, t2.ten AS t2ten, t2.twenty AS t2twenty, t2.hundred AS t2hundred, t2.thousand AS t2thousand, t2.twothousand AS t2twothousand, t2.fivethous AS t2fivethous, t2.tenthous AS t2tenthous, t2.odd AS t2odd, t2.even AS t2even, t2.stringu1 AS t2stringu1, t2.stringu2 AS t2stringu2, t2.string4 AS t2string4 $into_table from tenk1 t1, tenk1 t2 where (t1.unique2 = t2.unique2) and (t2.unique2 < 1000)",$limits->{'table_wildcard'},
+ "select t.*,B.unique1 AS Bunique1,B.unique2 AS Bunique2,B.two AS Btwo,B.four AS Bfour,B.ten AS Bten,B.twenty AS Btwenty,B.hundred AS Bhundred,B.thousand AS Bthousand,B.twothousand AS Btwothousand,B.fivethous AS Bfivethous,B.tenthous AS Btenthous,B.odd AS Bodd,B.even AS Beven,B.stringu1 AS Bstringu1,B.stringu2 AS Bstringu2,B.string4 AS Bstring4 $into_table from tenk1 t, Bprime B where t.unique2 = B.unique2",$limits->{'table_wildcard'},
+ "select t1.*,o.unique1 AS ounique1,o.unique2 AS ounique2,o.two AS otwo,o.four AS ofour,o.ten AS oten,o.twenty AS otwenty,o.hundred AS ohundred,o.thousand AS othousand,o.twothousand AS otwothousand,o.fivethous AS ofivethous,o.tenthous AS otenthous,o.odd AS oodd, o.even AS oeven,o.stringu1 AS ostringu1,o.stringu2 AS ostringu2,o.string4 AS ostring4 $into_table from onek o, tenk1 t1, tenk1 t2 where (o.unique2 = t1.unique2) and (t1.unique2 = t2.unique2) and (t1.unique2 < 1000) and (t2.unique2 < 1000)",$limits->{'table_wildcard'},
+ "select two, four, ten, twenty, hundred, string4 $into_table from tenk1",1,
+ "select * $into_table from onek",1,
+ "select MIN(unique2) as x $into_table from tenk1",$limits->{'group_functions'},
+ "insert into tenk1 (unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even,stringu1,stringu2, string4) values (10001, 74001, 0, 2, 0, 10, 50, 688, 1950, 4950, 9950, 1, 100, 'ron may choi','jae kwang choi', 'u. c. berkeley')",1,
+ "insert into tenk1 (unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even,stringu1,stringu2, string4) values (19991, 60001, 0, 2, 0, 10, 50, 688, 1950, 4950, 9950, 1, 100, 'ron may choi','jae kwang choi', 'u. c. berkeley')",1,
+ "delete from tenk1 where tenk1.unique2 = 877",1,
+ "delete from tenk1 where tenk1.unique2 = 876",1,
+ "update tenk1 set unique2 = 10001 where tenk1.unique2 =1491",1,
+ "update tenk1 set unique2 = 10023 where tenk1.unique2 =1480",1,
+ "insert into tenk1 (unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even, stringu1, stringu2, string4) values (20002, 70002, 0, 2, 0, 10, 50, 688, 1950, 4950, 9950, 1, 100, 'ron may choi', 'jae kwang choi', 'u. c. berkeley')",1,
+ "insert into tenk1 (unique1, unique2, two, four, ten, twenty, hundred, thousand, twothousand, fivethous, tenthous, odd, even, stringu1, stringu2, string4) values (50002, 40002, 0, 2, 0, 10, 50, 688, 1950, 4950, 9950, 1, 100, 'ron may choi', 'jae kwang choi', 'u. c. berkeley')",1,
+ "delete from tenk1 where tenk1.unique2 = 10001",1,
+ "delete from tenk1 where tenk1.unique2 = 900",1,
+ "update tenk1 set unique2 = 10088 where tenk1.unique2 =187",1,
+ "update tenk1 set unique2 = 10003 where tenk1.unique2 =2000",1,
+ "update tenk1 set unique2 = 10020 where tenk1.unique2 =1974",1,
+ "update tenk1 set unique2 = 16001 where tenk1.unique2 =1140",1,
+ );
+}
diff --git a/sql-bench/uname.bat b/sql-bench/uname.bat
new file mode 100755
index 00000000..dd9fe012
--- /dev/null
+++ b/sql-bench/uname.bat
@@ -0,0 +1,2 @@
+@echo off
+@ver