kê\|”·:|”·:ÿÿÿby nameby named kêš#äà¤�%|”·:|”·:|”·:!#°jÝ%./lpp_nameó/¤�4 R I freeware.mysql.client { freeware.mysql.client.rte 03.23.0035.0000 01 N U en_US MySQL Client Libraries [ *prereq freeware.zlib.rte 1.1.3.2 *ifreq freeware.mysql.rte (3.22.0.0) 3.22.32.1 *prereq freeware.gnu.readline.rte 4.1.0.1 % /usr 4 /usr/local 11 /usr/local/bin 2384 /usr/local/lib 466 /usr/local/lib/mysql-client-3.23 1191 /usr/local/man 2 /usr/local/man/man1 102 /usr/local/include 2 /usr/local/include/mysql 321 /usr/local/share 2 /usr/local/share/mysql 76 /usr/lpp 2 /usr/lpp/freeware.mysql.client INSTWORK 56 56 % % % % ] } kê �ȧíAu”·:{”·:{”·:!0¿q./usr/lpp/freeware.mysql.clientó/íA kê„„ɧ¤�m{”·:{”·:{”·:! +vm./usr/lpp/freeware.mysql.client/liblpp.aó/¤� 27428 0 0 128 24526 0 2866 3136 0 985109619 0 0 644 28 freeware.mysql.client.rte.al` ./usr/local/bin/insert_test ./usr/local/bin/mysql ./usr/local/bin/mysqladmin ./usr/local/bin/mysqlshow ./usr/local/bin/mysqldump ./usr/local/bin/mysqlimport ./usr/local/bin/msql2mysql ./usr/local/bin/mysql_config ./usr/local/bin/mysql_fix_privilege_tables ./usr/local/bin/mysql_setpermission ./usr/local/bin/mysql_zap ./usr/local/bin/mysqlaccess ./usr/local/bin/mysqlbug ./usr/local/bin/mysql_convert_table_format ./usr/local/bin/mysql_find_rows ./usr/local/bin/mysqlhotcopy ./usr/local/bin/select_test ./usr/local/bin/thread_test ./usr/local/bin/mysqldumpslow ./usr/local/bin/mysqltest ./usr/local/bin/mysqld_multi ./usr/local/lib/mysql-client-3.23/COPYING ./usr/local/lib/mysql-client-3.23/COPYING.LIB ./usr/local/lib/mysql-client-3.23/MIRRORS ./usr/local/lib/mysql-client-3.23/README ./usr/local/lib/mysql-client-3.23/config.cache ./usr/local/lib/mysql-client-3.23/myconf.mysql ./usr/local/lib/mysql-client-3.23/INSTALL-SOURCE ./usr/local/lib/mysql-client-3.23/libtool ./usr/local/lib/mysql-client-3.23/ltconfig ./usr/local/lib/mysql-client-3.23/ltmain.sh ./usr/local/lib/libmysqlclient.a ./usr/local/lib/libmysqlclient.la ./usr/local/man/man1/mysql_zap.1 ./usr/local/man/man1/mysql.1 ./usr/local/man/man1/mysqlaccess.1 ./usr/local/man/man1/mysqladmin.1 ./usr/local/man/man1/mysqldump.1 ./usr/local/man/man1/mysqlshow.1 ./usr/local/man/man1/isamchk.1 ./usr/local/man/man1/isamlog.1 ./usr/local/man/man1/mysqld.1 ./usr/local/man/man1/mysqld_multi.1 ./usr/local/man/man1/perror.1 ./usr/local/man/man1/replace.1 ./usr/local/man/man1/safe_mysqld.1 ./usr/local/include/mysql/dbug.h ./usr/local/include/mysql/m_string.h ./usr/local/include/mysql/my_sys.h ./usr/local/include/mysql/mysql.h ./usr/local/include/mysql/mysql_com.h ./usr/local/include/mysql/mysqld_error.h ./usr/local/include/mysql/my_list.h ./usr/local/include/mysql/my_pthread.h ./usr/local/include/mysql/my_no_pthread.h ./usr/local/include/mysql/raid.h ./usr/local/include/mysql/errmsg.h ./usr/local/include/mysql/my_global.h ./usr/local/include/mysql/my_net.h ./usr/local/include/mysql/sslopt-case.h ./usr/local/include/mysql/sslopt-longopts.h ./usr/local/include/mysql/sslopt-usage.h ./usr/local/include/mysql/sslopt-vars.h ./usr/local/include/mysql/mysql_version.h ./usr/local/include/mysql/m_ctype.h ./usr/local/include/mysql/my_config.h ./usr/local/share/mysql/make_binary_distribution ./usr/local/share/mysql/my-small.cnf ./usr/local/share/mysql/my-medium.cnf ./usr/local/share/mysql/my-large.cnf ./usr/local/share/mysql/my-huge.cnf ./usr/local/share/mysql/mysql-log-rotate ./usr/local/share/mysql/mysql.server ./usr/local/share/mysql/binary-configure ./usr/local/share/mysql/mysql-3.23.35.spec ./usr/local ./usr/local/bin ./usr/local/lib ./usr/local/lib/mysql-client-3.23 ./usr/local/man ./usr/local/man/man1 ./usr/local/include ./usr/local/include/mysql ./usr/local/share ./usr/local/share/mysql 1172 4458 128 981565500 0 0 644 35 freeware.mysql.client.rte.copyright` MySQL, a basically free SQL database server, version 3.23.32 For license information please read the files COPYING and COPYING.LIB in the directory /usr/local/lib/mysql-client-3.23 Packaging is Copyright (C) 2001 BULL SA. This LPP shall not be redistributed commercially. Software, information and material distributed as freeware or shareware (hereinafter the "Materials") are provided "as is", without warranty of any kind. Bull and its suppliers disclaim all warranties whether expressed or implied, including, but not limited to the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the Materials is with you. Neither Bull nor its suppliers warrant that the functions contained in the Materials will meet your requirements or that the Materials will be error free. Bull and its suppliers shall in no event be liable for direct or indirect damage caused to the User or to third parties by use of the Materials, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of the Materials. 15139 19748 3136 985109626 0 0 644 35 freeware.mysql.client.rte.inventory` /usr/local/bin/insert_test: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 4056 checksum = "13917 4 " /usr/local/bin/mysql: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 788318 checksum = "40377 770 " /usr/local/bin/mysqladmin: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 44817 checksum = "24070 44 " /usr/local/bin/mysqlshow: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 27490 checksum = "15632 27 " /usr/local/bin/mysqldump: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 51283 checksum = "13695 51 " /usr/local/bin/mysqlimport: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 26113 checksum = "23680 26 " /usr/local/bin/msql2mysql: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1468 checksum = "54380 2 " /usr/local/bin/mysql_config: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2129 checksum = "52168 3 " /usr/local/bin/mysql_fix_privilege_tables: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 4364 checksum = "02949 5 " /usr/local/bin/mysql_setpermission: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 15255 checksum = "53547 15 " /usr/local/bin/mysql_zap: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 3071 checksum = "50155 3 " /usr/local/bin/mysqlaccess: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 111535 checksum = "38116 109 " /usr/local/bin/mysqlbug: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 9633 checksum = "04822 10 " /usr/local/bin/mysql_convert_table_format: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2642 checksum = "51237 3 " /usr/local/bin/mysql_find_rows: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2654 checksum = "42327 3 " /usr/local/bin/mysqlhotcopy: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 21379 checksum = "15769 21 " /usr/local/bin/select_test: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 4056 checksum = "27572 4 " /usr/local/bin/thread_test: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 4056 checksum = "16849 4 " /usr/local/bin/mysqldumpslow: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 4817 checksum = "64979 5 " /usr/local/bin/mysqltest: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 62935 checksum = "34656 62 " /usr/local/bin/mysqld_multi: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 18283 checksum = "40509 18 " /usr/local/lib/mysql-client-3.23/COPYING: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 19451 checksum = "06344 19 " /usr/local/lib/mysql-client-3.23/COPYING.LIB: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 27362 checksum = "45026 27 " /usr/local/lib/mysql-client-3.23/MIRRORS: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2893 checksum = "48378 3 " /usr/local/lib/mysql-client-3.23/README: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1976 checksum = "11584 2 " /usr/local/lib/mysql-client-3.23/config.cache: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 12878 checksum = "33501 13 " /usr/local/lib/mysql-client-3.23/myconf.mysql: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1278 checksum = "54239 2 " /usr/local/lib/mysql-client-3.23/INSTALL-SOURCE: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 206245 checksum = "42907 202 " /usr/local/lib/mysql-client-3.23/libtool: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 119056 checksum = "55770 117 " /usr/local/lib/mysql-client-3.23/ltconfig: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 102941 checksum = "18191 101 " /usr/local/lib/mysql-client-3.23/ltmain.sh: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 110845 checksum = "36581 109 " /usr/local/lib/libmysqlclient.a: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 236211 checksum = "18968 231 " /usr/local/lib/libmysqlclient.la: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 681 checksum = "42938 1 " /usr/local/man/man1/mysql_zap.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1071 checksum = "34275 2 " /usr/local/man/man1/mysql.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 3440 checksum = "27141 4 " /usr/local/man/man1/mysqlaccess.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2796 checksum = "53938 3 " /usr/local/man/man1/mysqladmin.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 4462 checksum = "01790 5 " /usr/local/man/man1/mysqldump.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 7636 checksum = "35470 8 " /usr/local/man/man1/mysqlshow.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2317 checksum = "39611 3 " /usr/local/man/man1/isamchk.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 3875 checksum = "14428 4 " /usr/local/man/man1/isamlog.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1627 checksum = "18211 2 " /usr/local/man/man1/mysqld.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 10894 checksum = "01736 11 " /usr/local/man/man1/mysqld_multi.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2481 checksum = "39844 3 " /usr/local/man/man1/perror.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1395 checksum = "29479 2 " /usr/local/man/man1/replace.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1535 checksum = "02242 2 " /usr/local/man/man1/safe_mysqld.1: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2280 checksum = "44528 3 " /usr/local/include/mysql/dbug.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 3437 checksum = "28314 4 " /usr/local/include/mysql/m_string.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 7452 checksum = "55691 8 " /usr/local/include/mysql/my_sys.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 24248 checksum = "42822 24 " /usr/local/include/mysql/mysql.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 10562 checksum = "45141 11 " /usr/local/include/mysql/mysql_com.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 8598 checksum = "27895 9 " /usr/local/include/mysql/mysqld_error.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 6959 checksum = "27309 7 " /usr/local/include/mysql/my_list.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1579 checksum = "54877 2 " /usr/local/include/mysql/my_pthread.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 20676 checksum = "43387 21 " /usr/local/include/mysql/my_no_pthread.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1206 checksum = "61531 2 " /usr/local/include/mysql/raid.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 5836 checksum = "52866 6 " /usr/local/include/mysql/errmsg.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1979 checksum = "63904 2 " /usr/local/include/mysql/my_global.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 29919 checksum = "51322 30 " /usr/local/include/mysql/my_net.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1324 checksum = "07225 2 " /usr/local/include/mysql/sslopt-case.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1605 checksum = "16180 2 " /usr/local/include/mysql/sslopt-longopts.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1296 checksum = "40053 2 " /usr/local/include/mysql/sslopt-usage.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1235 checksum = "26155 2 " /usr/local/include/mysql/sslopt-vars.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 1013 checksum = "22170 1 " /usr/local/include/mysql/mysql_version.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 548 checksum = "41119 1 " /usr/local/include/mysql/m_ctype.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 5846 checksum = "01938 6 " /usr/local/include/mysql/my_config.h: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 19031 checksum = "42391 19 " /usr/local/share/mysql/make_binary_distribution: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 5248 checksum = "10274 6 " /usr/local/share/mysql/my-small.cnf: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2251 checksum = "59974 3 " /usr/local/share/mysql/my-medium.cnf: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2536 checksum = "25897 3 " /usr/local/share/mysql/my-large.cnf: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2551 checksum = "53932 3 " /usr/local/share/mysql/my-huge.cnf: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 2559 checksum = "31560 3 " /usr/local/share/mysql/mysql-log-rotate: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 659 checksum = "48397 1 " /usr/local/share/mysql/mysql.server: owner = root group = system mode = 755 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 4022 checksum = "04287 4 " /usr/local/share/mysql/binary-configure: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 773 checksum = "07370 1 " /usr/local/share/mysql/mysql-3.23.35.spec: owner = root group = system mode = 644 type = FILE class = apply,inventory,freeware.mysql.client.rte size = 14149 checksum = "37385 14 " /usr/local: owner = bin group = bin mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/bin: owner = bin group = bin mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/lib: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/lib/mysql-client-3.23: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/man: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/man/man1: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/include: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/include/mysql: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/share: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte /usr/local/share/mysql: owner = root group = system mode = 755 type = DIRECTORY class = apply,inventory,freeware.mysql.client.rte 2382 22276 4458 970751800 0 0 755 32 freeware.mysql.client.rte.post_i` #!/usr/bin/ksh LANG=C VERBOSE=${VERBOSE:-"0"} # simple debug system appname="${0##*/}" # $(basename $0) # Pre- and Post install template scripts # Copyright (C) 2000 GROUPE BULL # all rights reserved. # # author: Ciaran Deignan (Ciaran.Deignan@bull.net) # started: July 1997, last modified July 2000 # version: 2.0 #------------------------------------------------------------------ # GLOBAL UTILITIES #------------------------------------------------------------------ # Debug message print function (v1.0 - July 1998) debug() { integer lev=$1 shift [ $VERBOSE -ge $lev ] && print -- "$@" >&2 return 0 } # error handler (v2.1 - July 1998): cmd() { debug 7 "CMD: execute '$@'" eval '"$@"' [ $? -ne 0 ] && debug 0 "$appname: CMD: error detected in '$@'" \ && exit 2 } typeset -xf cmd debug [ $VERBOSE -gt 9 ] && set -x #------------------------------------------------------------------ debug 2 "$appname: starting execution, params <$*>"; # Function to update the file /usr/local/info/dir # This function should be used if the LPP delivers files into # /usr/local/info # NOTE: the file /usr/local/info/dir should *never* be delivered directly... update_info_dir() { if ! [ -d /usr/local/info ] then debug 1 "No info directory found !" debug 1 "stopping" return 0 fi if type gen-dir-node >/dev/null 2>&1 then print "Updating info \"root\" file (/usr/local/info/dir)" cmd cd /usr/local/info [ -f dir ] && cmd mv dir dir.bak cmd gen-dir-node /usr/local/info/ > dir cmd chmod 444 dir fi } # Perl module update function... update_perllocal () { # the directory /usr/local/lib/perl5/ should exist, or might # ba a symbolic link to /usr/opt/perl5/lib.... if ! cd /usr/local/lib/perl5/. then print "Perl not installed correctly, can't find directory" print "/usr/local/lib/perl5" exit 1 fi if ! ls */aix/perllocal.pod > /dev/null 2>&1 then filename=$(ls -td 5.*/aix | line) if [ "$filename" = "" ] then cmd print "Perl not installed correctly, can't find \c" cmd print "directory /usr/local/lib/perl5/5.00*/aix" exit 3 fi filename="$filename/perllocal.pod" else filename=$(cmd ls -t */aix/perllocal.pod | line) fi # use a "hello-script" to add info to perllocal.pod.... cmd cat >>$filename <&2 return 0 } # error handler (v2.1 - July 1998): cmd() { debug 7 "CMD: execute '$@'" eval '"$@"' [ $? -ne 0 ] && debug 0 "$appname: CMD: error detected in '$@'" \ && exit 2 } typeset -xf cmd debug [ $VERBOSE -gt 9 ] && set -x #------------------------------------------------------------------ debug 2 "$appname: starting execution, params <$*>"; slibclean # Function to allow perl modules to be delivered on top of IBM's perl package... make_free_perl_links() { if [ ! -d /usr/local/lib/perl5 ] && [ -d /usr/opt/perl5/lib ] then cmd ln -s /usr/opt/perl5/lib /usr/local/lib/perl5 fi if [ ! -e /usr/local/bin/perl ] && [ -e /usr/opt/perl5/bin/perl ] then cmd ln -s /usr/opt/perl5/bin/perl /usr/local/bin/perl fi } make_ibm_perl_links() { if [ ! -d /usr/opt/perl5/lib ] && [ ! -d /usr/local/lib/perl5 ] then cmd ln -s /usr/local/lib/perl5 /usr/opt/perl5/lib fi if [ ! -e /usr/opt/perl5/bin/perl ] && [ -e /usr/local/bin/perl ] then cmd ln -s /usr/local/bin/perl /usr/opt/perl5/bin/perl fi } exit 0 290 24526 22276 985109621 0 0 644 30 freeware.mysql.client.rte.size` ./usr 4 ./usr/local 11 ./usr/local/bin 2384 ./usr/local/lib 466 ./usr/local/lib/mysql-client-3.23 1191 ./usr/local/man 2 ./usr/local/man/man1 102 ./usr/local/include 2 ./usr/local/include/mysql 321 ./usr/local/share 2 ./usr/local/share/mysql 76 ./usr/lpp 2 ./usr/lpp/freeware.mysql.client 2753 27428 24092 970751801 0 0 700 34 freeware.mysql.client.rte.unpost_i` #!/usr/bin/ksh LANG=C VERBOSE=${VERBOSE:-"0"} # simple debug system appname="${0##*/}" # $(basename $0) # Pre- and Post install template scripts # Copyright (C) 2000 GROUPE BULL # all rights reserved. # # author: Ciaran Deignan (Ciaran.Deignan@bull.net) # started: July 1997, last modified July 2000 # version: 2.0 #------------------------------------------------------------------ # GLOBAL UTILITIES #------------------------------------------------------------------ # Debug message print function (v1.0 - July 1998) debug() { integer lev=$1 shift [ $VERBOSE -ge $lev ] && print -- "$@" >&2 return 0 } # error handler (v2.1 - July 1998): cmd() { debug 7 "CMD: execute '$@'" eval '"$@"' [ $? -ne 0 ] && debug 0 "$appname: CMD: error detected in '$@'" \ && print exit 2 } typeset -xf cmd debug [ $VERBOSE -gt 9 ] && set -x #------------------------------------------------------------------ debug 2 "$appname: starting execution, params <$*>"; # Function to update the file /usr/local/info/dir # This function should be used if the LPP delivers files into # /usr/local/info # NOTE: the file /usr/local/info/dir should *never* be delivered directly... update_info_dir() { if ! [ -d /usr/local/info ] then debug 1 "No info directory found !" debug 1 "stopping" return 0 fi if type gen-dir-node >/dev/null 2>&1 then print "Updating info \"root\" file (/usr/local/info/dir)" cmd cd /usr/local/info [ -f dir ] && cmd mv dir dir.bak cmd gen-dir-node /usr/local/info/ > dir cmd chmod 444 dir fi } # Perl module update function... remove_perllocal () { if [ $# -en 1 ] then debug 0 "Missing module-name parameter in remove_perllocal" debug 0 "can't remove module info from perllocal." return 0 fi modulename="$1" # the directory /usr/local/lib/perl5/ should exist, or might # ba a symbolic link to /usr/opt/perl5/lib.... if ! cd /usr/local/lib/perl5/. then print "Perl not installed correctly, can't find directory" print "/usr/local/lib/perl5" exit 1 fi if ! ls */aix/perllocal.pod > /dev/null 2>&1 then filename=$(ls -td 5.*/aix | line) if [ "$filename" = "" ] then cmd print "Perl not installed correctly, can't find \c" cmd print "directory /usr/local/lib/perl5/5.00*/aix" exit 3 fi filename="$filename/perllocal.pod" else filename=$(cmd ls -t */aix/perllocal.pod | line) fi # use a small perl script to remove the module info # (I hope this isn't too "wildcard"...) cmd perl -w -n -i.bak -e ' $line = $_; if (defined ($flag) && ($flag == 2)) { undef $flag ;} $flag=1 if $line =~ /^=head2\s+.*L<'"$modulename"'>/; print $line if !defined($flag); $flag=2 if $line =~ /^=back/;' $filename } exit 0 392 0 24526 0 0 0 0 0 ` 7 128 3136 4458 19748 22276 24092 24526 freeware.mysql.client.rte.alfreeware.mysql.client.rte.copyrightfreeware.mysql.client.rte.inventoryfreeware.mysql.client.rte.post_ifreeware.mysql.client.rte.pre_ifreeware.mysql.client.rte.sizefreeware.mysql.client.rte.unpost_it/ kê¦ÑÏàí�Øu”·:ðŽ·:ðŽ·:!#ûâØ./usr/local/bin/insert_testent/ó/í�#! /bin/sh # insert_test - temporary wrapper script for .libs/insert_test # Generated by ltmain.sh - GNU libtool 1.3.5a (1.385.2.206 2000/05/27 11:12:27) # # The insert_test program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "${CDPATH+set}" = set; then CDPATH=:; export CDPATH; fi relink_command="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 -O -DDBUG_OFF -I /usr/local/include -DHAVE_INT_8_16_32 -Wa,-many -DUNDEF_HAVE_INITGROUPS -L/usr/local/lib -o \$progdir/\$file insert_test.o -L../libmysql/.libs -lmysqlclient -lz -lcrypt -lm -lz -lcrypt -lm -Wl,-bnolibpath -Wl,-blibpath:/ii/po/mysql-3.23.35/libmysql/.libs:/usr/local/lib/mysql:/usr/lib:/lib" # This environment variable determines our operation mode. if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then # install mode needs the following variable: link_against_libtool_libs=' ../libmysql/libmysqlclient.la' else # When we are sourced in execute mode, $file and $echo are already set. if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then echo="print -r" file="$0" # Make sure echo works. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec /bin/sh "$0" --no-reexec ${1+"$@"} fi fi # Find the directory that this script lives in. thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "x$thisdir" = "x$file" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=`ls -ld "$file" | sed -n 's/.*-> //p'` while test -n "$file"; do destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` # If there was a directory component, then change thisdir. if test "x$destdir" != "x$file"; then case "$destdir" in [\/]* | [A-Za-z]:[\/]*) thisdir="$destdir" ;; *) thisdir="$thisdir/$destdir" ;; esac fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` file=`ls -ld "$thisdir/$file" | sed -n 's/.*-> //p'` done # Try to get the absolute directory name. absdir=`cd "$thisdir" && pwd` test -n "$absdir" && thisdir="$absdir" program=lt-'insert_test' progdir="$thisdir/.libs" if test ! -f "$progdir/$program" || \ { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | sed 1q`; \ test "X$file" != "X$progdir/$program"; }; then file="$$-$program" if test ! -d "$progdir"; then mkdir "$progdir" else rm -f "$progdir/$file" fi # relink executable if necessary if test -n "$relink_command"; then if (cd "$thisdir" && eval $relink_command); then : else rm -f "$progdir/$file" exit 1 fi fi mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || { rm -f "$progdir/$program"; mv -f "$progdir/$file" "$progdir/$program"; } rm -f "$progdir/$file" fi if test -f "$progdir/$program"; then if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then # Run the actual program with our arguments. # Export the path to the program. PATH="$progdir:$PATH" export PATH exec $program ${1+"$@"} $echo "$0: cannot exec $program ${1+"$@"}" exit 1 fi else # The program doesn't exist. $echo "$0: error: $progdir/$program does not exist" 1>&2 $echo "This script is just a wrapper for $program." 1>&2 echo "See the libtool documentation for more information." 1>&2 exit 1 fi fi kêè÷ñàí�^ u”·:y�·:y�·:!#Ìù^ ./usr/local/bin/mysql_tó/í�ß:·‹¼ëfRhH ‘”,d@ P ä 41L.textPP‘”Pñh™L I ¯ .data ä ä,d’äXB�@.bss /H /H@€.loadera&¿H.debugÐù n ‚"$|nx|�#x|°+x|ø‘‘â‚1�B(9 e)-‘*@‚H‘`Hƒâ0H�€A|nxAŠ€�A| ¦€QN€!€A€â89}Ãsx}ä{x~ƒx‘Hi`€â,A‚€b H €A|� @¬__start€b|¦,”!ÿÀ�HA‚À�c�A}h¦�c€CN€!€A€b ,A‚€�c|¦€CN€!€A€b,A‚€�c|¦€CN€!€A€b,A‚€�c|¦€CN€!€A€b,A‚€�c|¦€CN€!€A��H8!@}ˆ¦N€ 8!@N€ A€Ü__threads_init€,�‚4�A€ €L| ¦N€  |¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ`�a¸��¼H`1`�!¼�b T€ � HÝ€A€‚ `€b dHõ€A€‚ |€b ŒHå€A8`HÚ­€A,A‚8`HÚ™€A,@‚(�b ¬89@�" Ä� � Ø‘I�H�" Ø8� ƒ¢ Ø88¡¸€b 8Á¼€‚ �H‘€A€a¸€�¼HÁ,A‚8`H™€A8`Hµ€A€a¼HÑ€A€,A‚@€ ,@‚4�" 0€‚ 8€i8cH}`,�} @‚8`Ha€A€b L8€H@½`€b œ8€2HR-`�" ´�b Ä�B Ü� 샢 ¬€i€‹€ª€È€ýHV-,A‚ �b ü8�" Ø8`ÿÿ� � H1ƒâ Ø€,@‚�" Ä8� €‚ 8`HW­€A€b 8€8 HIqƒ‚ L€b $ƒ|HW±€A|}x€b $HWÉ€A|fx€‚ P¥ëxcÛxHL•€A€|8€8 HI%�" T€iHOE€,@‚�" ü€ ,@‚ð�" T€ ,@‚à€b dHW…€A,A‚(€b dHWq€A8€HW�€A�" p�iHl€b xHWM€A,A‚X€b xƒ¢ pHW5€AH­!€A8c8€H!±€A,�}A‚`€b xHW€A|ex€‚ |€}HK­€Aƒ¢ p€½,A‚0�" €€ ,A‚€b ”€‚ ÐHJyOÿû‚€}HW€A€‚ Ø8a8HKa€A8€8 8a8HGñ8`HY�" Ü�b Ø€ �k,A‚HPÍ8`HI8`8! €|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ämain|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸�" |x€ ,A‚€b (HVe€A�" Ü€ ,@‚\�" € ,@‚L�" X€ ,@‚<�" „€ ,A‚�" t€b ˜€©€‚ (HIMOÿû‚�" t€iHV%€A�" Ü€i H}`€b  HS`,A€€b 0@‚€b 48€8 HF¥ƒâ P€ ,A‚$; €“¿ “¿HÝ€A“¿“¿ƒâ 8€ ,A‚$; €“¿ “¿H­€A“¿“¿�" ð€iH•€A�" H€iH…€A�" t€iHu€A�" È€iHe€A�" ¸€iHU€A�" à€iHE€A�" T€ | þp}#x|cH|cþpTc¾HÝ€A�" Ü€iHõ€A A€Ð mysql_end__Fi|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸ƒâ X|}x�" d€b h€©€Ÿ€Â l€â p� tHTµ€A,@‚4€b |HTÉ€A€b „HT½€A€Ÿ€b ˆHT…€A€b ŒHTy€A€b �HTm€A€b ”HTa€A€b ˜HTU€A€b œHS�€A,A‚€b œHSm€A|dxH€‚ ¤€b ´HT€A€b ¸HT€A€b ¼HT€A€b ÀHSù€A€b ÄHSí€A€b ÈHSá€A€b €‚ HT!€A€b ÐHSÅ€A�" Ô€ ,A‚<}>Kx; ;þ�?|�ð.;ÿ€©;½€b ÜHS‰€A|ð.,@‚ÿØ8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€˜ usage__Fi|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ ||x8€b Ø|›#x; �8HSq€A;A8HX8ÿÝ(âA� �b äT:}+.})Z})¦N€ lðà4d€ ððt„€”°l,Ü0œäô |h¬TDd4Œ°˜Œp¬ô�b è�" ìH �b è�" ð€ � HˆƒÂ à€,@‚xƒ¢ è€}H¤-€A,A‚`€�€b hHI€A8�HG©H@ƒÂ à€,A‚HHY8�H �" è8�b ô€‰� ,A‚€b �Hñ€AH €b  HM¹€A|dx€b �HÑ€A€b €‚ �HÁ€AHÄ�" ô8� H´ƒ¢ Ì€}H1€A�" è8€H0ƒ¢ à8;À€} �“ÝHQ`�" è€iHÁ`,�} A‚Ð�" È“ÉHP�" È8� H@ƒ¢ ¼€}H½€A�" è8€H¼ƒ¢ ä€}H¡€A�" è8€H �" è€i,@‚�" 8� H胢 HN€A1#ÿÿ| �HÌ�b (8�" 0� � H´�" 耂 Ø€iHN€A,A‚˜8`Kÿø58`HЃ èƒþ,A‚tƒ¢ ô€}Hõ€A€~8€HLQ€A�>�}ˆ ,A‚(Ãóx9`x�#™i9)‘#ˆ ,@‚ÿèˆ,A‚8˜H; H�" D8� Hð�" L8� Hà�" 8� HÐ�b °H(�" X8� H¸�" T8� H¨�b ˆ�+9)‘+H”�" `8� H„�" è8�b l€i� ,A‚hHL™€A�" t�iHT�" |8� HD�" �8� H4�" �8� H$�" \8� H�" œ€ `� H�B à�j, @‚ð�" °8‘j�i� 9k‘iHÐ�" ¤8� HÀ�" ¬8� H°�" ´8� H �" 胢 Ä€iHKÅ€A�}H„ƒ¢ L€}H€A�" è8€€iHJY€A�}HX8`Kÿõõ8`H µ€A8`Kÿõá8`H ¡€A�" Ì€b Ѐ©€‚ ÜH=¡Oÿû‚8`Kÿõµ8`H u€A€¢ àƒãxdÛx€Â äGÓxHKq€A,ÿÿ@‚÷Œ�" à€ ,A‚<€‚ €€b H ¹€A€b �€‚ €H ©€A�B ô89`�" à� ‘i�" ì€i,A‚$8€HK-€A,A‚8`H Ù€A�" ð€ €à,T:{@�8`Kÿôé8`H ©€A@‚(ƒ¢ Ì€}H±€A€{8€HI €A�}ƒâ ¼€,@‚(€b ôHHÅ€A|cyA‚8€HHÙ€A�,A‚8`HJ¡€A�" ô�i8`8!`€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ get_options__FiPPc|¦}€&“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�‘�”!ÿ |yy�" ä9`8™a8ƒ¢ T}>KxƒB äN;€ƒb ü� Hìˆ8,| x@‚,‰?, #A‚Ð, -@‚ˆ,-A‚¼, A‚´A’˜�" ”€ ,A‚€,@‚|, @‚tãûx8€HU|cyA‚`�#äûx€b T�A€ €I|¦�iN€!€A,A�d€,@‚˜8€,A‚,ãûxHI9€AH€b Täûx8¡8Hù,@‚ €,@‚@’,€~ ;œH %`€|x,@‚䓞HÜ€,A‚hƒâ T€,@‚€{HเA€,@‚ €b$H,ˆ8,A‚,'@‚ €b(H€b,H€b0€›HH�€A€,@‚ €b$H,ˆ8,A‚,'@‚ €b(H€b,H€b0HH�€A€|x,A‚€{åûx€‚�j�kH�>})Zˆ p @‚ÿðÃóx8€;HGA€A,@‚4€‚lÃóxHGQ€A,@‚€‚tÃóxHGa€A|yA‚D�BDžø‰?�j�kH�?})Zˆ p @‚ÿðˆ|Ð|þpÿ8HÃóxHš €A||xƒ¢€€«ëx,A‚ -ž;]-;} ;à|Ð.,A‚l.AŽL|�ø.Ãóx…ãxHFá€A,@‚(}=ø.| à®,@‚�b€AŠ(|ø.,@‚�b€@’}?Zˆ |È@‚ |ZH;ÿ}}[x|ø.,@‚ÿ|8`8!X€��|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿü}ƒ� N€ C€ðfind_command__FPcc|¦’¡ÿÔ’ÁÿØ’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ(|™#x|zx|¸+xH¸-`ˆ|wx~é»x,@‚D€,@‚8H�7ãûx�i€ � H%™`8`Hä|cøTcþHØ�" è€ ,A‚ˆ,A‚#ËxHDi€A‹ù>Ëx<Ëx,A‚0: \:À�"HžÈ�i}@&UJÿþ� }?Bˆ Tïþ| P9A‚€,A‚ä,\@‚l�ü,A‚܈kéN!I}*I|ÐTþ|KyA‚š¾ŸþH 8`äûxKÿü…|}yA‚è|ð“!ˆ;áˆ��9A˜CÓx�Œäûx“ �w€��+�œ‘!˜“á ‘KH -`�=CÓx8œÿÿ�A€ €I|¦�iN€!€A,A�þŒ€ �w,A‚@�<i ;})Ð|ÐU)þTþ}*9@‚ÿäˆ9<ÿÿ|Ð|þp})x€8|Kx�+>Ëx8aˆ€ � H#Õ`H¬€‚˜åûx8a8H5U€A8a88€8 H1å,A�þš¾ŸþHp,;@‚äˆ,| x@‚Až|¹ðCÓx$ËxH ±`�:€š, A‚| ®,A‚CÓxH()`€z8€Kÿúý|}yA‚`�:€š, A‚| ®,A‚CÓxH'í`�=CÓx€š�A€ €I|¦�iN€!€A,@�Kÿý<CÓx8€H ±|cy@‚ý0’Ú>ËxHŒˆ,| x@‚4,#A‚€,-@‚$ˆ,-@‚‰<})Bˆ p @‚XU`>|@‚ šØH0,@‚(ké'!I}*Ikà"!`| }*yA‚›ø›þ;Þ�ü,@‚üà|È@‚€,A‚X8 ˜;Þ�:ùð€|‰ú|@A€8„CÓxH&½`CÓx$ËxåûxH `,8`@‚8`8!Ø€|¦‚¡ÿÔ‚ÁÿØ‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ °add_line__FR6StringPcT1|¦}€&“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�‘�”!ÿ¨|Ÿ#y|~xN@’ƒ¢œH“Í€A�}�"œ€ ,@��@’`ÃóxH“©€A|exÄóx€b ¤8Á8H8ñ`�" ,�i@‚ H´�b �"¤‘K€ � HŒ€�"¤� ƒ¢¤€},A‚€€cH@‘€A�=€ �Hh,@‚L�b ¤�"¬€ “é|@@€4€Ë }(Kx|x�hUi:}I0., @‚ÿt8 |8@�A€ÿàƒâ¤; €,A‚ôƒÂ ƒb¬úûxƒ‚ ¤�?€iH’©€A�>€ |@‚�?€iH?Ý€A|}x�?€ ,�@‚|�>�), ‘>@‚`�;€9)| @‘;@€P�¬|x�\ �hUi:})P., @‚8 |8@�A€ÿàH‘>€ �H € �ƒâ¤!=| é�?1Iÿÿ}jI}i9@‚ÿ$,£ëx@‚8`8!X€��|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿü}€� N€ C€|new_command_generator__FPci|¦’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ�" ì||x|›#xƒâ„€ ,@‚¼�" ƒÉ,@‚¬�" Ѐ ,A‚œ€b ¨H7‰`ƒ¢°€},A‚H>Q€A“݃¢¸€},A‚H>5€A“Ý,€À&,A‚ €Ÿ€b ¨H9I`„,@‚ÿèÈ @‚ €b ,€‚¼H>€A,@‚h€b ,H>%€A�"¸,�i@‚ €b ,H>1€A8€8 H+™H0}?KxH€ƒ€b ¨H8Í`€H>%€A|cy@‚ÿà€b ,€‚ÐH=•€A,@‚È€b ,H=©€A�"°,�i@‚ €b ,H=µ€A8€8 H+H�H=í€A|€yA‚,�" ´€ ,@‚,A‚€b œ€‚ØH-=Oÿû‚ƒâ°H<€}H�e€A|ex€�€b ¨H3™`,@‚€�€b ¨H7ñ`€H=I€A|}y@‚ÿ¸�"Ü�I, A‚°€ ;À,A‚�}8Kx�8Wß:;>üûx}H.€ ,A‚DƒBÜ;`;À�zýûx;{}?X.|~H.;ÞH}€A�:}}H.|X.,@‚ÿÐ�8>Ëx||H.HU€A�xWÉ:| X.,@‚ÿ|�"Ü€iH1€AƒÂ°8ƒâÜ€~�,A‚ð8€8 H<©€A€~HHÈ€ß8a8€½€‚ðH,=€A8a88€H7™€AƒÂÜWH:�~}€‚øH*]Oÿû‚�wWÉ:éY.>Ëx�"°€iH:•€A|}y@‚þt�"ÜWÊ:�iªY.8!è€|¦‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ 8build_completion_hash__FbT0|¦“áÿü�”!ÿÀ€bü8€8 H'A�" ˜€ ,A‚€b8€8 H'!€¢ˆ€,A‚<|¿+x€,A‚ €b  €‚€¿ˆß€ÿH)AOÿû‚„,@‚ÿÐ�" € ,A‚(€b 0H5€A|ex€‚€b  H)Oÿû‚H€b  €‚ H(ñOÿû‚8`8!@€|¦ƒáÿüN€ A€äcom_help__FP6StringPc|¦}€&“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�‘�”!þè�" ð|x;`€ ,@‚`ƒ¢ <|èA‚H€ ,A‚ €}“} “}Hÿ=€A“}“}€��?‘=€“} �€b H•€AH�$›é9)‘$�" € ,A‚@�b€‹�$9)ÿÿ, ‘$@€Wã>HI€AH�$›é9)‘$8!@€|¦ƒáÿüN€ A€¨tee_putc__FiP4FILE[DS]|¦�”!ÿ¸8a8H É€A8!H€|¦N€ A€(start_timer__Fv|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ˜|œ#x|zx8 9 (˜;|8a8™<H I€A|}x8`H a€AºèÉ‚D<C0“¡L}i[x�Hlc€eÛxÈH8À�aL�HÉ¢ü`(È!Hü!h(ü $KÿñIƒãxH 5€A€‚H¾í€A8!h€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ämysql_end_timer__FUlPc|¦�”!ÿÈ8€HÆí€A8!8€|¦N€ A€(sql_alloc__FUi[DS]|¦�”!ÿÈHÆÉ€A8!8€|¦N€ A€$sql_element_free__FPv[DS]|¦�”!ÿÈ8€8``„ÿÿKÿòE8!8€|¦N€ A€,_GLOBAL_.I.VER|¦�”!ÿÈ8€8``„ÿÿKÿñù8!8€|¦N€ A€,_GLOBAL_.D.VER|¦“áÿü�”!ÿÀ�"<�)€ ,A‚Dƒâ<�?9)‘?�)ÿü�A€ €I|¦�iN€!€A�?€ ,@‚ÿÈ8!@€|¦ƒáÿüN€ A€x__do_global_dtors|¦“Áÿø“áÿü�”!ÿÀ�b H�+, ÿÿ@‚,9 € ,A‚9)8 T:| .,@‚ÿì}?KyA‚4ƒÂ HWà:}>.�A€ €I|¦�iN€!€A7ÿÿÿ@‚ÿØ€b LHzÝ€A8!@€|¦ƒÁÿøƒáÿüN€ A€¨__do_global_ctors|¦�”!ÿÈ�" P€ ,@‚8� KÿÿOÿû‚8!8€|¦N€ A€<__main|¦�”!ÿÈH.5`8!8€|¦N€ A€$_un_link__9streambuf|¦�”!ÿÈH.m`8!8€|¦N€ A€$_link_in__9streambuf|¦�”!ÿÈH/™`8!8€|¦N€ A€$switch_to_get_mode__9streambuf|¦�”!ÿÈH01`8!8€|¦N€ A€$free_backup_area__9streambuf|¦�”!ÿÈ�#H¨ �I|c�A€ €J|¦�jN€!€A8!8€|¦N€ A€H__overflow__FP9streambufi”!ÿè8`ÿÿ8!N€ @€underflow__9streambuf|¦�”!ÿÈH5Á`8!8€|¦N€ A€$uflow__9streambuf”!ÿè8`ÿÿ8!N€ @€overflow__9streambufi[DS]|¦�”!ÿÈH5É`8!8€|¦N€ A€$xsputn__9streambufPCcl[DS]|¦�”!ÿÈH7!`8!8€|¦N€ A€$xsgetn__9streambufPcl|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|�#x|~x¿ëx€�~}K@�0ŠøOþã‚|&Tþ|Ðéx}@8|Kx}kàø‘~,A‚ÃóxH0u`,ÿÿ@‚ÿ¬|è8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€œignore__9streambufi”!ÿè8`8!N€ @€sync__9streambuf|¦�”!ÿÈHAÑ`8!8€|¦N€ A€$pbackfail__9streambufi|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|ž#x�?H|½+x¨iX�I\|�A€ €J|¦�jN€!€A,ÿÿ@‚ 8`H !~}+ñ!}| é}+yA‚,€ãûx8ŸG8¿H8À`�H}Oÿû‚H(€Äóxãûx|¤ê8ÀTú�HUOÿû‚€;À“ßp “ß“ßA‚ãûxH+Í`“ßãûx“ß “ß8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€setbuf__9streambufPci|¦�”!ÿÈ�cH|¦+x8 ¨ @�+D|c�A€ €I|¦�iN€!€A8!8€|¦N€ A€Pseekpos__9streambufli|¦�”!ÿÈHê`8!8€|¦N€ A€$sseekpos__9streambufli|¦�”!ÿÈH/¡`8!8€|¦N€ A€$setb__9streambufPcT1i[DS]|¦�”!ÿÈH5Ý`8!8€|¦N€ A€$doallocate__9streambuf[DS]|¦�”!ÿÈH/­`8!8€|¦N€ A€$doallocbuf__9streambuf[DS]|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸€Ô|}x�HH5©`£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€L __9streambufi|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸€Ø|x|�#x8€�HH5É`s A‚ãûxH™…`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€d _._9streambuf”!ÿè8`ÿÿ8!N€ @€(seekoff__9streambuflQ23ios8seek_diri[DS]|¦�”!ÿÈHn½`8!8€|¦N€ A€$%sseekoff__9streambuflQ23ios8seek_diri|¦�”!ÿÈH5­`8!8€|¦N€ A€$sputbackc__9streambufc|¦�”!ÿÈH6`8!8€|¦N€ A€$sungetc__9streambuf|¦�”!ÿÈ|ix iD,@‚ 8`ÿÿH€‰8cÿÿ€©|¤(H6E`8!8€|¦N€ A€Lget_column__9streambuf”!ÿè8„°ƒD8`8!N€ @€set_column__9streambufi|¦�”!ÿÈH6`8!8€|¦N€ A€$flush_all__9streambuf|¦�”!ÿÈH6™`8!8€|¦N€ A€$"flush_all_linebuffered__9streambuf”!ÿè�"888`ÿÿ� 8!N€ @€sys_stat__9streambufPv”!ÿè8`8!N€ @€sys_read__9streambufPcl”!ÿè8`8!N€ @€sys_write__9streambufPCcl”!ÿè8`ÿÿ8!N€ @€$sys_seek__9streambuflQ23ios8seek_dir”!ÿè8`8!N€ @€sys_close__9streambuf|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}xH6q`£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€D__12streammarkerP9streambuf|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#xH6¡`s A‚ãûxH”�`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€X_._12streammarker|¦�”!ÿÈH6�`8!8€|¦N€ A€$$delta__12streammarkerR12streammarker|¦�”!ÿÈH6y`8!8€|¦N€ A€$delta__12streammarker|¦�”!ÿÈH6¡`8!8€|¦N€ A€$$seekmark__9streambufR12streammarkeri|¦�”!ÿÈH7`8!8€|¦N€ A€$unsave_markers__9streambuf”!ÿè�#€ihcTc÷þ8!N€ @€readable__3ios”!ÿè�#€ihcTcïþ8!N€ @€writable__3ios”!ÿè€c8,A‚€T:h |ÐTþ|x8!N€ @€4 is_open__3ios|¦�”!ÿÈ8`ÿÿ|@‚,@‚ H2í`8!8€|¦N€ A€<)__static_initialization_and_destruction_0|¦“áÿü�”!ÿÀƒâÜ€,@‚ HIOÿû‚€‚àãûx€¢äH|]`ãûx8!@€|¦ƒáÿüN€ A€T __tf3ios[DS]”!ÿè€c8!N€ @€ tie__C3ios”!ÿè€�ƒ|x8!N€ @€tie__3iosP7ostream”!ÿè¨c8!N€ @€ fill__C3ios”!ÿ訰ƒ|x8!N€ @€ fill__3ioss”!ÿè€c 8!N€ @€ flags__C3ios”!ÿè€ �ƒ |x8!N€ @€ flags__3iosUl”!ÿè€c8!N€ @€precision__C3ios”!ÿè T„>�ƒ|x8!N€ @€precision__3iosi”!ÿè|ix€i |d#x�‰ 8!N€ @€ setf__3iosUl”!ÿè|ix|„(8€i |e(x|¥#x�© 8!N€ @€$setf__3iosUlUl”!ÿè|ix€i |d x�‰ 8!N€ @€unsetf__3iosUl”!ÿè€c8!N€ @€ width__C3ios”!ÿè€�ƒ|x8!N€ @€ width__3iosi”!ÿè8!N€ @€ _throw_failure__C3ios[DS]”!ÿè€,@‚`„˜ƒ8!N€ @€ clear__3iosi[DS]”!ÿèˆ|#x˜8!N€ @€ set__3iosi”!ÿèˆ|#x˜8!N€ @€setstate__3iosi”!ÿèˆc |`8!N€ @€ good__C3ios”!ÿèˆcTcþ8!N€ @€ eof__C3ios”!ÿèˆcTc|8!N€ @€fail__C3ios[DS]”!ÿèˆcTcz8!N€ @€ bad__C3ios”!ÿèˆc8!N€ @€rdstate__C3ios”!ÿèˆcTc|0cÿÿ|c8!N€ @€ __opPv__C3ios”!ÿèˆcTc|8!N€ @€ __nt__C3ios”!ÿèˆc8!N€ @€exceptions__C3ios”!ÿ蘃8!N€ @€exceptions__3iosi”!ÿè€c8!N€ @€rdbuf__C3ios[DS]”!ÿè0ÿÿ|�#Tz�ƒ˜}#Kx8!N€ @€(rdbuf__3iosP9streambuf|¦�”!ÿÈ8`H£}`8!8€|¦N€ A€(sync_with_stdio__3ios”!ÿèˆ| x˜ƒ8!N€ @€unset__3ios11state_value”!ÿè8!N€ @€ __Q23ios4Init”!ÿè�ƒ8!N€ @€set_offset__12streammarkeri”!ÿè8`8!N€ @€saving__12streammarker|¦“áÿü�”!ÿÀƒâ €,@‚ HuOÿû‚€‚ ãûx€¢ (Ht`ãûx8!@€|¦ƒáÿüN€ A€T__tf9streambuf[DS]”!ÿè8cH8!N€ @€_vtable__9streambuf”!ÿè8c48!N€ @€xchain__9streambuf”!ÿè€p A‚ €c$H€c8!N€ @€$gptr__C9streambuf[DS]”!ÿè€c8!N€ @€pptr__C9streambuf[DS]”!ÿè€p A‚ €c,H€c8!N€ @€$egptr__C9streambuf[DS]”!ÿè€c8!N€ @€epptr__C9streambuf”!ÿè€c8!N€ @€pbase__C9streambuf[DS]”!ÿè€p A‚ €c$H€c 8!N€ @€$eback__C9streambuf[DS]”!ÿè€c8!N€ @€base__C9streambuf[DS]”!ÿè€c 8!N€ @€ebuf__C9streambuf”!ÿ耀c |`8!N€ @€blen__C9streambuf”!ÿè�#˜‰9)‘#8!N€ @€xput_char__9streambufc”!ÿè€c8!N€ @€xflags__9streambuf”!ÿè€�ƒ|x8!N€ @€xflags__9streambufi”!ÿè€|#x�8!N€ @€xsetflags__9streambufi”!ÿè€|„(8|(x|¥#x�£8!N€ @€ xsetflags__9streambufii”!ÿè€p A‚€$|"�$H€|"�8!N€ @€4gbump__9streambufi”!ÿè€|"�8!N€ @€pbump__9streambufi”!ÿè�£�ƒ�ƒ8!N€ @€setp__9streambufPcT1[DS]|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|œ#x€|½+x|Þ3xp A‚ H`“ß“Ÿ “¿8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€lsetg__9streambufPcN21[DS]”!ÿè8cG8!N€ @€shortbuf__9streambuf”!ÿè€cTcî8!N€ @€in_backup__9streambuf[DS]”!ÿè€p A‚ €c$H€c 8!N€ @€$Gbase__9streambuf”!ÿè€p A‚ €c,H€c8!N€ @€$eGptr__9streambuf[DS]”!ÿè€p A‚ €c H€c$8!N€ @€$Bbase__9streambuf”!ÿè€c(8!N€ @€Bptr__9streambuf”!ÿè€p A‚ €cH€c,8!N€ @€$eBptr__9streambuf”!ÿè€c$8!N€ @€Nbase__9streambuf”!ÿè€c,8!N€ @€eNptr__9streambuf”!ÿè€$1 ÿÿ|i8!N€ @€have_backup__9streambuf”!ÿè€01 ÿÿ|i8!N€ @€have_markers__9streambuf”!ÿè€cTc(8!N€ @€put_mode__9streambuf|¦�”!ÿÈHUÑ`8!8€|¦N€ A€$'pubseekoff__9streambuflQ23ios8seek_diri|¦�”!ÿÈHÎ`8!8€|¦N€ A€$pubseekpos__9streambufli”!ÿè€cTcÿþ8!N€ @€unbuffered__9streambuf[DS]”!ÿè€cTc¿þ8!N€ @€linebuffered__9streambuf”!ÿè,A‚€`H €Tú�8!N€ @€,unbuffered__9streambufi[DS]”!ÿè,A‚€`H €Tê�8!N€ @€,linebuffered__9streambufi|¦�”!ÿÈ|kx€ ,@‚€ p A‚ 8`H0�+H¨i`�Id|k�A€ €J|¦�jN€!€A8!8€|¦N€ A€lallocate__9streambuf|¦�”!ÿÈ€,@‚ KÿâÍOÿû‚8!8€|¦N€ A€0allocbuf__9streambuf”!ÿ耀c|`8!N€ @€in_avail__9streambuf”!ÿ耀c|`8!N€ @€out_waiting__9streambuf|¦�”!ÿÈ�#H¨ 0�I4|c�A€ €J|¦�jN€!€A8!8€|¦N€ A€Hsputn__9streambufPCcl|¦�”!ÿÈH Y`8!8€|¦N€ A€$padn__9streambufcl|¦�”!ÿÈH¥`8!8€|¦N€ A€$sgetn__9streambufPcl|¦�”!ÿÈ|`x|ƒ#x|xHÉ`8!8€|¦N€ A€0sputc__9streambufi|¦�”!ÿÈHÉ`8!8€|¦N€ A€$sbumpc__9streambuf|¦“áÿü�”!ÿÀ|x�?€| @A€H ý`,ÿÿA‚�?ˆiH8`ÿÿ8!@€|¦ƒáÿüN€ A€Xsgetc__9streambuf[DS]|¦“áÿü�”!ÿÀ|x�?€| @A€H y`,ÿÿ@‚ 8`ÿÿH@�?€9)| @‘?A€ãûxH E`,ÿÿA‚�?ˆiH8`ÿÿ8!@€|¦ƒáÿüN€ A€Œsnextc__9streambuf”!ÿè�#€| @@€ 8 �8!N€ @€$stossc__9streambuf|¦“Áÿø“áÿü�”!ÿÀƒÂˆ€,@‚Dƒâ €,@‚ HiOÿû‚€‚ $ãûx€¢ ,Hd `€‚ 4ÃóxåûxHcù`€bˆ8!@€|¦ƒÁÿøƒáÿüN€ A€€__tf7filebuf[DS]”!ÿè€c8|cøTcþ8!N€ @€is_open__C7filebuf[DS]”!ÿè€c8/ƒ|&Tïþ|Ð|cx|x8!N€ @€( fd__C7filebuf”!ÿè€p A‚ �#$H�# €p A‚ €,H€} x1 ÿÿ|i8!N€ @€His_reading__7filebuf[DS]”!ÿè€p A‚ �#$H�# €p | xA‚ €,H€| A‚q`A‚ €c$H€cH€c8!N€ @€dcur_ptr__7filebuf”!ÿè€p A‚ €c,H€c8!N€ @€$file_ptr__7filebuf”!ÿè|„#y8@‚8˜99 �ƒ9` 9@‘8™#�£±c‘C �‘8!N€ @€T"init__3iosP9streambufP7ostream[DS]”!ÿè€ 8|„#y|gx�8@‚8˜98�‡9` 9@˜9 �§|ã;x±g‘G ‘'‘‘8!N€ @€d__3iosP9streambufP7ostream|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x€ <|�#x€�H#E`s A‚ãûxHui`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€d _._3ios[DS]|¦“áÿü�”!ÿÀƒâè€,@‚€‚ @ãûxHaa`ãûx8!@€|¦ƒáÿüN€ A€H__tf11_ios_fields[DS]|¦“áÿü�”!ÿÀƒâ 0€,@‚€‚ DãûxH`ñ`ãûx8!@€|¦ƒáÿüN€ A€H__tf8_IO_FILE[DS]|¦�”!ÿÈ8€8``„ÿÿKÿâ)8!8€|¦N€ A€,_GLOBAL_.I._un_link__9streambuf|¦�”!ÿÈ8€8``„ÿÿKÿáÉ8!8€|¦N€ A€,_GLOBAL_.D._un_link__9streambuf€p €M‚ �b@€ ,A‚<|@‚€4� H(�+9i4€ 4,A‚|@‚ÿè€4� 4€Tn�N€ @d _IO_un_link€p €L‚ `€��"D€ �4�iN€ @( _IO_link_in�#€ } H�c0, A‚ € |H@€| x�k, @‚ÿè}#KxN€ @<_IO_least_marker€T,��#€,�‘#,�# €$� ‘#$�N€ @4_IO_switch_to_main_get_area€`��c�#,‘#‘c,�c €$� ‘c$‘#N€ @4_IO_switch_to_backup_area|¦“áÿü�”!ÿÀ|x�?€| @@�<�?H�)8€ÿÿ�A€ €I|¦�iN€!€A,ÿÿ@‚ 8`ÿÿHX€p A‚€(� H €� �?€| @@�‘?€���€Tf�8`8!@€|¦ƒáÿüN€ A€Ä_IO_switch_to_get_mode|¦“áÿü�”!ÿÀ|x€p A‚ Kÿþ%Oÿû‚€$H�€A8�$�,�(8!@€|¦ƒáÿüN€ A€X_IO_free_backup_area|¦�”!ÿÈ�#H�)�A€ €I|¦�iN€!€A8!8€|¦N€ A€@ __overflow|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|~xKÿüÕ|x�>€ €HŸà�>,€$|H|@�¨;@d8|dHDQ€A|{y@‚ 8`ÿÿH<,@€@€ž,»Ò£ëx|„ú|¿ÐH8m`€¾ €|è|¤+x|¥H8Q`H€ž |{Ò|„ú…ãxH85`€~$,A‚ Hù€A“~$|Ò|â�,Hx\,@€H€~$€ž,|z|Ÿ"|¿ÐH7å`€~$|z€¾ €||¤+x|¥H7Á`H(,@� €~$€ž |cÒ|„ú…ãxH7™`€$|�(�>€ } H€~0,A‚€| �€c,@‚ÿì8`8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Ôsave_for_backup|¦“áÿü�”!ÿÀ|x€p A‚KÿüOÿû‚,ÿÿA‚`�?€| @A€,€p A‚(ãûxKÿûOÿû‚�?€| @@€ ˆiHh€0,A‚ãûxKÿý…,A‚$8`ÿÿHD€$,A‚ãûxKÿü}Oÿû‚�?H�)ãûx�A€ €I|¦�iN€!€A8!@€|¦ƒáÿüN€ A€è __underflow|¦“áÿü�”!ÿÀ|x€p A‚KÿûOÿû‚,ÿÿA‚x�?€| @@€ˆi8 �H €p A‚0ãûxKÿùùOÿû‚�?€| @@€ˆi8 �Hh€0,A‚ãûxKÿüa,A‚$8`ÿÿHD€$,A‚ãûxKÿûYOÿû‚�?H�)$ãûx�A€ €I|¦�iN€!€A8!@€|¦ƒáÿüN€ A€__uflow|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|ž#x|½+x|Ü3x€,A‚€p @‚ Hi€A“ß“¿ ,A‚€T|@‚8 ÿÿ�H,�?H�),ãûx�A€ €I|¦�iN€!€A,ÿÿA‚€T4�8!@€|¦ƒáÿüN€ A€� _IO_sputbackc|¦“áÿü�”!ÿÀ|x€€ |@@�8ÿÿ�ˆcÿÿH0�?H�),ãûx8€ÿÿ�A€ €I|¦�iN€!€A,ÿÿA‚€T4�8!@€|¦ƒáÿüN€ A€ˆ _IO_sungetc|kx|d*| @@�(|ixŒÿÿ, @‚|cH8cÿÿN€ | @A�ÿä|k*N€ @<_IO_adjust_column|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸;À�"Hƒé,A‚l; ÿÿ�?€| @@�L�?H�)ãûx8€ÿÿ�A€ €I|¦�iN€!€A|cêx|`þp|x|c|cþp|`ð8|8ƒÿ4,@‚ÿ Ãóx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€´ _IO_flush_all|¦“áÿü�”!ÿÀ�"Lƒé,A‚L€p,@‚0�?H�)ãûx8€ÿÿ�A€ €I|¦�iN€!€Aƒÿ4,@‚ÿ¼8!@€|¦ƒáÿüN€ A€|_IO_flush_all_linebuffered|¦“áÿü�”!ÿÀ�"Pƒé,A‚L€p @‚4�?H�)Tãûx8€8 �A€ €I|¦�iN€!€Aƒÿ4,@‚ÿ¼8!@€|¦ƒáÿüN€ A€|_IO_unbuffer_all|¦�”!ÿÈKÿýÙOÿû‚KÿÿM8!8€|¦N€ A€( _IO_cleanup|¦“Áÿø“áÿü�”!ÿÀ|~x|Ÿ#x“þ€p A‚ãûxKÿìýOÿû‚€p A‚€�?H €�? | �€0�“ß08!@€|¦ƒÁÿøƒáÿüN€ A€„_IO_init_marker�#9i0€ 0,M‚ € |@‚€� N€ �k€ ,@‚ÿÜN€ @@_IO_remove_marker€€d|cN€ @_IO_marker_difference€,@‚ 8`ÿÿN€ �C€ p A‚�*€ |HH�#�i€ |X€c|`N€ @P_IO_marker_delta|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€|øA‚ 8`ÿÿH\€,A€$€p A‚ãûxKÿêMOÿû‚€ H €p @‚ãûxKÿê•Oÿû‚€�>|J�8`8!@€|¦ƒÁÿøƒáÿüN€ A€  _IO_seekmark|¦�”!ÿÈ€0,A‚ 8�0€$,A‚ KÿëeOÿû‚8!8€|¦N€ A€D_IO_unsave_markers|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|~x|š#x�>€ | @A�Ø€$,A‚$€p @‚ Kÿé}Oÿû‚€$,@‚88`€H0I€A|cyA‚T�~$8€�,�(ÃóxKÿéAOÿû‚Hx€€¾ |(@A�h€åúcÛxH/ù€A||y@‚ 8`ÿÿHl¿Ø¼ê£ëx€ž åûxH$`€~ Hñé€A“ž “¾|Ú�“¾(�>8 ÿÿ�,ÿÿA‚ˆ ÿÿ|ÐA‚›Iÿÿ�>ˆi8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€d_IO_default_pbackfail8`ÿÿN€ @_IO_default_seek8`ÿÿN€ @_IO_default_stat8`ÿÿN€ @_IO_default_read8`N€ @_IO_default_write|¦�”!ÿÈH¥`8!8€|¦N€ A€$init__7filebuf|¦}€&H$‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ°|? x�hH%Õ`�h8€|`x€hKÿ¾e`€Ÿh889@�a9?@|x„ä�Ð�ÿ8|†#x‘_<�@‘ ‘i�) H ;ÿÿÈH8€h�¦€Ô|ex�HH �`€Ÿh€h�$€ �H€€¿h9@98€9?X…e€âä‘P|¦+x‘_T‘X�é� �) H ;ÿÿÈH48P€h8€�Kÿ½ý`€Ÿh�$€ �H' `H#I`€!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� H,° "c’è __7filebuf|¦}€&H"‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ°|? x�h�ŸlH#Å`�h8€|`x€hKÿ¼U`€Ÿh889@�a9?@|x„ä�è�ÿ8|†#x‘_<�@‘ ‘i�) H ;ÿÿÈHH€h�¦€Ø|ex�HH q`€Ÿl€hHu`€Ÿh€h�$€ �H€€¿h9@98€9?X…e€âì‘P|¦+x‘_T‘X�é� �) H ;ÿÿÈH48P€h8€�Kÿ»Ý`€Ÿh�$€ �H$é`H!)`€!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� H*� "c’ü __7filebufi|¦}€&Hñ‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ°|? x�h�Ÿl�¿p�ßtH!�`�h8€|`x€hKÿº-`€Ÿh889@�a9?@|x„ä�ð�ÿ8|†#x‘_<�@‘ ‘i�) H ;ÿÿÈH\€h�¦€Ü|ex�HH I`€Ÿl€hH M`€Ÿp€¿t€hH‰Oÿû‚€Ÿh€h�$€ �H€€¿h9@98€9?X…e€âô‘P|¦+x‘_T‘X�é� �) H ;ÿÿÈH48P€h8€�Kÿ¹¡`€Ÿh�$€ �H"­`Hí`€!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� H(T "c’__7filebufiPci|¦“Áÿø“áÿü�”!ÿÀ|x�"à|ž#x€8‘?H,A€L€Ÿ€¿|¤(H 1`€p @@‚,�_Hãûx�*„�A€ €I|¦�iN€!€AãûxÄóxKÿ¸m`8!@€|¦ƒÁÿøƒáÿüN€ A€  _._7filebuf|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x|¿+x€8|ƒ#x|Å3x,@€(sàcà} &U)þ})Ð|HxéH8}?xWë¾, @‚9;ÀH4séA‚9;ÀH sêA‚9;ÀH 9;À së€a Wën} &U)þ})Ð}kHxéH8}?[xké!i}+IWàçþ|Kx0ÿÿ|sé}Jx}8|SxA‚ acÞkëkà 1Kÿÿ}*YTßþ|H8së@0ÿÿ|a })x}8|€&T„þ|Kx|„Ða| x} 8|„xHÉ€A|cy@€ 8`H\€sË 9 ïósê �}8|H8|[x�A‚(£ëx8€8 8ÀH&5`,ÿÿ8`A‚£ëxKÿÝE`£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Ôopen__7filebufPCcii|¦�”!ÿÈH­`8!8€|¦N€ A€$open__7filebufPCcT1|¦�”!ÿÈHñ`8!8€|¦N€ A€$attach__7filebufi|¦�”!ÿÈH y`8!8€|¦N€ A€$setbuf__7filebufPci[DS]|¦�”!ÿÈH%­`8!8€|¦N€ A€$doallocate__7filebuf|¦�”!ÿÈH U`8!8€|¦N€ A€$overflow__7filebufi|¦�”!ÿÈH ™`8!8€|¦N€ A€$underflow__7filebuf|¦�”!ÿÈH y`8!8€|¦N€ A€$sync__7filebuf|¦�”!ÿÈH9`8!8€|¦N€ A€$"seekoff__7filebuflQ23ios8seek_diri|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}xH`0cÿÿ|c£88!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Lclose__7filebuf|¦�”!ÿÈH!`8!8€|¦N€ A€$sys_read__7filebufPcl|¦�”!ÿÈH`8!8€|¦N€ A€$"sys_seek__7filebuflQ23ios8seek_dir|¦�”!ÿÈH¥`8!8€|¦N€ A€$sys_write__7filebufPCcl|¦�”!ÿÈH¹`8!8€|¦N€ A€$sys_stat__7filebufPv|¦�”!ÿÈHµ`8!8€|¦N€ A€$sys_close__7filebuf|¦�”!ÿÈH}`8!8€|¦N€ A€$xsputn__7filebufPCcl|¦�”!ÿÈKÿ¬`8!8€|¦N€ A€$xsgetn__7filebufPcl|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x;€ÿÿ“�@€`$ �Kÿ×…`“�88!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€` _IO_file_init|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|x€8,A€Ð€€¿|¤+x|¥H±Oÿû‚||xãûxKÿíÅ`�?H�)„ãûx�A€ €I|¦�iN€!€A|}xãûx8€8 8ÀKÿÞ`8� �����ãûxKÿÕõ`<û­`$ �8ÿÿ�8�@ þp|êx|c|cþp½8ƒx£xH8`ÿÿ8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€_IO_file_close_it|¦“áÿü�”!ÿÀ|x€8,A€P€€¿|¤+x|¥HyOÿû‚€p @@‚,�?H�)„ãûx�A€ €I|¦�iN€!€Aãûx8€Kÿä©`8!@€|¦ƒáÿüN€ A€�_IO_file_finish|¦“Áÿø“áÿü�”!ÿÀ|~x|ƒ#x9 €8,@€hˆ8¥,rA‚ A�,aA‚0H<,wA‚H08€;àH88€9 ;àH(8€9 ;àH�"T8� 8`HĈ,+A‚,b@‚ˆ,+@‚ 8€Wÿæ|„Kx8 ¶H‘€A|cyA€ÿ¼�~8€9 ïó|H8àx�sàA‚T�>H�)DÃóx8€8 8À�A€ €I|¦�iN€!€A,ÿÿ@‚�"T€ ,8`@‚ÃóxKÿÓí`Ãóx8!@€|¦ƒÁÿøƒáÿüN€ A€p_IO_file_fopen|¦“áÿü�”!ÿÀ|x€8,A€ 8`Ht�Ÿ8€T¶`@�8ÿÿ�@�?H�)Dãûx8€8 8À�A€ €I|¦�iN€!€A,ÿÿ@‚�"X€ ,8`@‚ãûx8!@€|¦ƒáÿüN€ A€¬_IO_file_attach|¦“áÿü�”!ÿÀ|xKÿß1`,A‚(€���� ��ãûxH8`8!@€|¦ƒáÿüN€ A€`_IO_file_setbuf|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|œ#x|¾+y@‚ 8`H€p A‚8ÿÿ�@HX€€Ÿ| A‚H�?H�)|ãûx|€ 8 �A€ €I|¦�iN€!€A,ÿÿ@‚ 8`ÿÿH¬�@�?H�)tãûx„ãxÅóx�A€ €I|¦�iN€!€A|}x D,A‚ 8cÿÿ„ãxÅóxKÿâå`8c°D�?‘? ‘?‘?‘?‘?€p A‚ } KxH€ �£òx|`þp|x|c|cþp8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€d_IO_do_write[DS]|¦“áÿü�”!ÿÀ|x€p A‚�"\8 � 8`ÿÿH�?€| @A€ì€,@‚ãûxKÿØ•`€p A‚ Kÿã`ãûxKÿÑÅ`€¿�¿�¿ �¿�¿�¿�¿�?H€ �)lãûx|¤+x|¥�A€ €I|¦�iN€!€A|cyA�(@‚€`�H€` �8`€|�,@‚ 8`ÿÿH €@,ÿÿA‚ |�@�?ˆi8!@€|¦ƒáÿüN€ A€D_IO_file_underflow|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€p A‚ ` ��"`8 � 8`ÿÿHD€p @‚„€,@‚ ãûxKÿ×`€� ���?€ | @‚€���?‘?‘?€ �€�� €p A‚‘?€`�,ÿÿ@‚$€€¿ãûx|¤+x|¥KÿüOÿû‚H��?€ | @‚$€¿ãûx|¤+x|¥HKÿûñOÿû‚,ÿÿA‚ÿ�?›É9)‘?�?q @‚U)¿þkÀ !`| }+9A‚(€€¿ãûx|¤+x|¥Kÿû™Oÿû‚,ÿÿA‚þÀWÃ>8!@€|¦ƒÁÿøƒáÿüN€ A€œ_IO_file_overflow|¦“Áÿø“áÿü�”!ÿÀ|x;À€¿€|@@�$|x| (KÿûOÿû‚,A‚ 8`ÿÿH„�?€|€HA‚`�?H�)|ãûx8 �A€ €I|¦�iN€!€A,ÿÿA‚€�H �"d€ h0ÿÿ|| ð8}>8,ÿÿA‚ 8ÿÿ�@Ãóx8!@€|¦ƒÁÿøƒáÿüN€ A€ä _IO_file_sync|¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ8|x|�#x|¾+x;`�? €| @‚�?€};x![jÙ,@‚ ;À; �?€| @A�€p A‚ãûxKÿÍ}`,@‚”€,@‚,ãûxKÿÔ `€���� ��,A‚@�ˆ,A‚(H|€�?|  è€@,ÿÿA‚üHT�?H�)Œãûx8�8�A€ €I|¦�iN€!€A,@‚Ä€@T&9 a)€|H@‚¬€T½;À�?@, ÿÿA‚\� , A‚P€p @‚D})è€| })A€0| A�(€� })‘?���£ëxH´€p @‚0€ �?| } ФH8Äè|@� ¤ëx;À�?H�)|ãûx8 �A€ €I|¦�iN€!€A||y@€ 8`ÿÿHD,@‚ 8`H|�H,@‚�? €| HHÅóx�+lãûx€Ÿ�A€ €I|¦�iN€!€A|ð@€,Ýóx ÿÿ0ÿÿ|}#è«8} x}}x;ÀHD�?‘? |J�|J�‘?‘?‘?|�@€T4�£ëxH|ãûxKÿài`�?H�)|ãûx¤ëxÅóx�A€ €I|¦�iN€!€A||x,ÿÿA‚€T4�“Ÿ@€� �����ƒãx8!È€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€�_IO_file_seekoff|¦�”!ÿÈ€c8H€A8!8€|¦N€ A€( _IO_file_read|¦�”!ÿÈ€c8Há€A8!8€|¦N€ A€( _IO_file_seek|¦�”!ÿÈ€c8H½€A8!8€|¦N€ A€( _IO_file_stat|¦�”!ÿÈ€c8H™€A8!8€|¦N€ A€(_IO_file_close|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸||x|ž#x|½+x¿ëx,@�<€|8ÄóxåûxHE€A,ÿÿ@‚€` �HÞãøA�ÿÌ¿è€@,A€ |�@£ëx8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€¨_IO_file_write|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|{x|º+x|�#x\Óx;À,@‚ 8`H\€�{ë€p , @‚8€ ë|Ð@A€(}=Ò| è@@�Œ ÿÿ, @‚ÿð}=H;é;À,A‚t|à||¸é8€x}?x(@� €{¤ëxåûxHQ`½úH(�{5?ÿÿA€ˆ˜ ;½9k5)ÿÿ@€ÿì€|�Ÿà|ò,A‚„cÛx8€ÿÿKÿÈ�`,ÿÿA‚l�; €|€H(@�ƒãxH2ƒ|ž#xH;ÀþàcÛx¤ëxåûxKÿóOÿû‚,ÿÿA‚$ÜóyA‚cÛx|�ú…ãxKÿÎÝ`ƒà||Ð8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€È_IO_file_xsputn�‚h�A€ €L| ¦N€  �‚l�A€ €L| ¦N€  �‚p�A€ €L| ¦N€  �‚t�A€ €L| ¦N€  �‚x�A€ €L| ¦N€  �‚|�A€ €L| ¦N€  |fx|ƒ#x|Ä3x`````�b€T Ù�‹@�qŒ@¢|ƒ @M† A„|*|€@A…ŒpiA‚<8„ÿÿ8Ãÿÿ!)})¦ŒäœæBÿø|©(8„ÿý8Æÿýp¨T¥èþ|©¦Hp¨T¥èþ|©¦8„ÿü8Ãÿü„ä…$”æ•&BÿðM‚ } ¦8„8ÆŒäœæBÿøN€ |Ã*|ä*pÈA‚} ¦�'ÿÿ�&ÿÿBÿø|¨(p¨T¥èþ|©¦…'ÿü…Gÿü•&ÿü•FÿüBÿðM‚ } ¦�'ÿÿ�&ÿÿBÿøN€ |¡¦| $*| *N€ |„@@„ }D(|ƒP@| ¦8 |¦T ÿ�a|dA„(| $*|£%*0„ Bÿô|¦| $*|£%*€aN€ |„(0„ÿà| $*|£%*Bÿô|€ |¦| $*|£%*€aN€ @ÀbcopyÙÁÿpÙáÿxÚÿ€Ú!ÿˆÚAÿ�Úaÿ˜Ú�ÿ Ú¡ÿ¨ÚÁÿ°Úáÿ¸ÛÿÀÛ!ÿÈÛAÿÐÛaÿØÛ�ÿàÛ¡ÿèÛÁÿðÛáÿøN€ @Lfsav|¦�”!ÿÈH1€A A€__default_terminate|¦�”!ÿÈ�"ˆ�)�A€ €I|¦�iN€!€A8!8€|¦N€ A€@ __terminate|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|½+xH­`0cÿÿ|c|cè88!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€L__throw_type_match”!ÿè8!N€ @€ __empty|¦“áÿü�”!ÿÀ8`HI€A|y@‚ KÿþáOÿû‚ãûx8€8 HM€A8�ãûx8!@€|¦ƒáÿüN€ A€`new_eh_context|¦�”!ÿÈ�"”�)�A€ €I|¦�iN€!€A8!8€|¦N€ A€@__get_eh_context|¦�”!ÿÈ�"˜�)�A€ €I|¦�iN€!€A8c8!8€|¦N€ A€D __get_eh_info|¦�”!ÿÈ�bœ�"¬‘+�A€ €I|¦�iN€!€A8!8€|¦N€ A€Deh_context_initialize|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸�"°€ ,@‚,8� ƒ¢´£ëx8€8 H‘€A€¸�€b´8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€peh_context_static|¦�”!ÿÈ�" �)�A€ €I|¦�iN€!€A8c8!8€|¦N€ A€D__get_dynamic_handler_chain|¦}€&Kÿû¡‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!ø˜|? x�"¤�)�A€ €I|¦�iN€!€A�x9#‘?|�#9I‘_€€ ,A‚Ì98‘„8� �?x€ �89?@‘@€¼� €� �) 8H ;ÿÿÈ8,@‚t�„�_|‘jH@�_€�*�I€i€ �€� 8€�A€ €J|¦�jN€!€A�?€€ ,@‚ÿ¸�_„€ �|� H KÿúÙOÿû‚�?x€ ,A‚�_|�*€ ,@‚ Kÿú­Oÿû‚�_|�*9i€ � € | ¦ƒé€ €+ �N€ "c’Ô __sjthrow|¦}€&Kÿù±‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!ø˜|? x�"¨�)�A€ €I|¦�iN€!€A9#‘?x�#9i‘|€ ,A‚È9?8‘?€8� €�89?@�€‘@€À� €� �) 8H ;ÿÿÈ8,@‚p�€�?x‘iH<�|�+�I€i€ � 8€�A€ €J|¦�jN€!€A�?|€ ,@‚ÿ¼�€€ �?x� H KÿøñOÿû‚�x�+€ � Kÿü‘Oÿû‚"c’ˆ __sjpopnthrow|¦“áÿü�”!ÿÀ|xKÿú}Oÿû‚€c�#, A‚8äûx8 �A€ €I|¦�iN€!€A0ÿÿ} }#KxH€bÄ€‚ÈHñ€A8`8!@€|¦ƒáÿüN€ A€ˆ__eh_rtime_match�‚„�A€ €L| ¦N€  �b€�‹8qŒA‚´|¦| +|à"*A‚H|…8@@@@†|Aš L˜Hp|£+|ä*A‚$0|…8@@@|£+@†P@šD|ä*@‚ÿä|¦, TøA�|¥0|ç0|…8@H|…8@|Æ0}0@@@† L˜A†A… 8`ÿÿN€ 8`N€ 8`N€ 8cÿÿ8„ÿÿˆ£ˆÄ,|…0@A‚Œ£@†ŒÄ,|…0@KÿÿèA†A…8`ÿÿN€ 8`N€ 8`N€ @strcmp�‚Œ�A€ €L| ¦N€  �‚��A€ €L| ¦N€  �‚Ì�A€ €L| ¦N€  ÉÁÿpÉáÿxÊÿ€Ê!ÿˆÊAÿ�Êaÿ˜Ê�ÿ Ê¡ÿ¨ÊÁÿ°Êáÿ¸ËÿÀË!ÿÈËAÿÐËaÿØË�ÿàË¡ÿèËÁÿðËáÿøN€ @Lfres|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|ž#x|½+x|Ü3x€$,A‚4,@‚ €p A‚€�?| ÀðãûxKÿ¹5`�?H�)DãûxÄóx¥ëx†ãx�A€ €I|¦�iN€!€A8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€¼ _IO_seekoff|¦“¡ÿô“Áÿø“áÿü�”!ÿ@|~x�"ø�), A‚ �A€ €I|¦�iN€!€A€8,A€8�>H�)ŒÃóx8�8�A€ €I|¦�iN€!€A,@€; ;àH4€@T&k½  é�!p8 ÿÿ|Kx|þpT æ} x}xãûxKÿý}€A|ey8`ÿÿA‚HÃóx|¤+x|¥ú8ÀKÿ¼Õ`,A‚$€~8Hí€A,A‚€`�8`8!À€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€<_IO_file_doallocate|¦�”!ÿÈ€büHM€A�"ø8� 8!8€|¦N€ A€4_IO_register_cleanup�‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  |¦}€&Kÿò1‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ°|? x�h�ŸlKÿóå`�h€¿l|`x€h¨…KÿÏ•`€Ÿh889@�a9?@|x„ä��ÿ8|†#x‘_<�@‘ ‘i�) H ;ÿÿÈHH�¦8€€h8 € �l|ix� H‘iLKÿÖá`€Ÿh€h�$€ �H€€¿h9@98€9?X…e€â‘P|¦+x‘_T‘X�é� �) H ;ÿÿÈH48P€h8€�KÿÓ `€Ÿh�$€ �Kÿõ`KÿñE`€!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿú¬ "c’__8stdiobufP4FILE[DS]|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x|œ#x€€�€½�H|¤(Kÿ߉`£ëx„ãxKÿÒ `8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€p_._8stdiobuf[DS]|¦“áÿü�”!ÿÀ,|Ÿ#x@‚\�cL�+9)ÿÿ, ‘+@€€cLHE€AH�cL�+ˆi9)‘+,ÿÿ@‚ 8`H$˜8`H€ÃL8€ãûxH%€A8!@€|¦ƒáÿüN€ A€œsys_read__8stdiobufPcl|¦“Áÿø“áÿü�”!ÿÀ|x|¾+x|ƒ#x€ßL8€HÝ€A€@,A€ |ò�@8!@€|¦ƒÁÿøƒáÿüN€ A€\sys_write__8stdiobufPCcl|¦�”!ÿÈ€cLH‘€A8!8€|¦N€ A€(#sys_seek__8stdiobuflQ23ios8seek_dir|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x€}LHE€A8�L8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Lsys_close__8stdiobuf|¦“áÿü�”!ÿÀ|x€Ÿ€¿|¤(KÿÜÙ`,A‚ 8`ÿÿH,€p @‚€LHÍ€A,8`ÿÿ@‚8`8!@€|¦ƒáÿüN€ A€tsync__8stdiobuf|¦“Áÿø“áÿü�”!ÿÀ|~x|Ÿ#xKÿÒÙ`,ÿÿ@‚ 8`ÿÿH ,ÿÿ@‚€~LH9€AHãûx8!@€|¦ƒÁÿøƒáÿüN€ A€hoverflow__8stdiobufi|¦�”!ÿÈ€hp @‚€ÃL|ƒ#x8€HE€AH Kÿ�¥`8!8€|¦N€ A€Lxsputn__8stdiobufPCcl|¦�”!ÿÈ,|kxA‚€ p A‚PTú� HD€ p @‚8�+H8€8 ¨iP�IT|k�A€ €J|¦�jN€!€A8!8€|¦N€ A€€buffered__8stdiobufi[DS]|¦“Áÿø“áÿü�”!ÿ�|x€¢0|ž#y�?�©@‚X€Å9AP€�%�e �€å�ÁP� ‘*‘j ‘ �ê� ‘K�?9)ÿ¨})ø|J°X8€8KÿúYOÿû‚�?sÀ8�8�b8‘i€ �+ �K€Ë€«� €ÿ�@�Á8�¡<‘!D‘AH‘L�‡�_¡+8 ÿø|ø})±!@A‚€`€j� HÌ©`sÀA‚ãûxHÍ`8!p€|¦ƒÁÿøƒáÿüN€ A€8_._12istdiostream[DS]|¦“Áÿø“áÿü�”!ÿ�|x€¢p|ž#y�?�©@‚X€Å9AP€�%�e �€å�ÁP� ‘*‘j ‘ �ê� ‘K�?9)ÿ¬})ø|J°X8€8KÿøõOÿû‚�?sÀ8�8�bx‘i€ �+ �K€Ë€«� €ÿ�@�Á8�¡<‘!D‘AH‘L�‡�_¡+8 ÿü|ø})±!@A‚€d€j� HËE`sÀA‚ãûxHi`8!p€|¦ƒÁÿøƒáÿüN€ A€8_._12ostdiostream[DS]|¦“áÿü�”!ÿÀƒâ€€,@‚ Kÿ£±`€‚„ãûx€¢ˆHñ`ãûx8!@€|¦ƒáÿüN€ A€T__tf8stdiobuf[DS]”!ÿè€cL8!N€ @€stdiofile__C8stdiobuf”!ÿè€chcTcÿþ8!N€ @€buffered__C8stdiobuf[DS]|¦“áÿü�”!ÿÀƒâŒ€,@‚$HUE`€‚�ãûx8À€¢”H}`ãûx8!@€|¦ƒáÿüN€ A€X__tf12istdiostream[DS]|¦}€&Kÿæ¡‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!ýè��4�a0�¡8KÿèU`€4�a(,|lxA‚P€a089`�Bh8à 99#X‘#‘I™i9@˜ �X� °é‘ ‘I� � €¡(889�a9!@…E€â˜|¦+x‘A8�Á,‘<�@�é‘i�) 9!89P‘&9@�a(�+}`[x8ë�bœ€‘!P‘H‘a\�`‘X�!dƒá08�h8`‘�?�b<‘i€ �+ €Ë€«�K� €ÿ�p�Áh�¡l‘!t‘Ax‘|�‡�?  9)ÿø�})ø|J°p�,€ � €¡(�e€ ‘a˜9! �A9a8�aœ‘a � ‘I�) €a,8˜ƒá4€¡0�,€‚4�%�‰@‚\€¤9a°ƒá0�¡°€�$� €ä€Ä�_� ‘+‘ �ë�Ë‘j�? 9)ÿ¨})ø|J°¸€a0€�88c�a0KÿñáOÿû‚€a(9`8¡8�9!Ѐ�B¤�È‘aÌ�¡Ð‘I‘ �) �!08È8À�A,�a0, � €ë@‚8˜H˜Çƒá099 9` 9@‘8“ç™'�DZg‘G �‘€a(�#�i‘c�+‘#€ �€a0HL€¡(9@98€9!…e€â¨‘aø|¦+x‘Aü‘�é� �) 8ø�A08�°��*�b<ƒá0‘i€ �+ €Ë€«�K� €ÿ�¸�Á°�¡´‘!¼‘AÀ‘Ä�‡�?  9)ÿø€a(})ø|J°¸�#€ �Kÿæé`€a(9@98€9!…c€â¬‘a|fx‘A‘�é� �) €¡48�,A‚ �A0€h�*€i� HÄé`€a(�#€ �Kÿæi`Kÿâ©`8!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿì "C’ __12istdiostreamiP4FILE”!ÿè8c8!N€ @€rdbuf__12istdiostream”!ÿè€chcTcÿþ8!N€ @€buffered__C12istdiostream|¦�”!ÿÈ8cKÿõ=Oÿû‚8!8€|¦N€ A€(buffered__12istdiostreami|¦“áÿü�”!ÿÀƒâ°€,@‚$HD`€‚´ãûx8À€¢¸Hþå`ãûx8!@€|¦ƒáÿüN€ A€X__tf12ostdiostream[DS]|¦}€&Kÿà ‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!ýè��4�a0�¡8Kÿá½`€4�a(,A‚P€¡089`�Bl8à 99%T‘%‘I™i9@˜ �T� °é‘ ‘I� � �!(889ƒá(�I�a8ß9!@€â¼‘A8�Á,‘<�@�é‘i�) 889P�bÀ�9@€¡(�%| +x8們!P‘H‘a\�`‘X�!d�A08�h‘�*�b|ƒá0‘i€ �+ €Ë€«�K� €ÿ�p�Áh�¡l‘!t‘Ax‘|�‡�?  9)ÿü})ø|J°p�#€ �€a(�c8¡88�BÄ�9! ‘a˜�œ�¡ ‘I‘ �) �!48˜�A,�a0, � €‚t�+�‰@‚\€¤9a°ƒá0�¡°€�$� €ä€Ä�_� ‘+‘ �ë�Ë‘j�? 9)ÿ¬})ø|J°¸€a0€�88c�a0KÿëIOÿû‚€a(9`8¡8�9!Ѐ�BÈ�È‘aÌ�¡Ð‘I‘ �) �!08È8À�A,�a0, � €ë@‚8˜H˜Çƒá099 9` 9@‘8“ç™'�DZg‘G �‘€a(�#�i‘c�+‘#€ �€a0HL€¡(9@98€9!…e€âÌ‘aø|¦+x‘Aü‘�é� �) 8ø�A08�°��*�b|ƒá0‘i€ �+ €Ë€«�K� €ÿ�¸�Á°�¡´‘!¼‘AÀ‘Ä�‡�?  9)ÿü€a(})ø|J°¸�#€ �KÿàQ`€a(9@98€9!…c€âБa|fx‘A‘�é� �) €¡48�,A‚ �A0€l�*€i� H¾Q`€a(�#€ �KÿßÑ`KÿÜ`8!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿåx "C’ __12ostdiostreamiP4FILE”!ÿè8c8!N€ @€rdbuf__12ostdiostream”!ÿè€chcTcÿþ8!N€ @€buffered__C12ostdiostream|¦�”!ÿÈ8cKÿî¥Oÿû‚8!8€|¦N€ A€(buffered__12ostdiostreami�‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �‚$�A€ €L| ¦N€  �‚(�A€ €L| ¦N€  �‚,�A€ €L| ¦N€  |¦}€&KÿÙ‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ ��|�ax�¡€�Á„KÿÚ±`€||lx,}€cxA‚P€¡x89`�B@8à 99%‘%‘I™i9@˜ �� °é‘ ‘I� � }†cx�a88„æ9@9!@�l|x�á8‘A<�@‘ ‘i�) �!|�ax�¦, �+€‚p�‰@‚\€¤9aP€�¡P€¡x�$� €ä€Ä�E� ‘+‘ �ë�Ë‘j�% 9)ÿø})(|J°X�!€�ax, €ë8@‚8˜€¡€9 9`™'89@ �§9�!„€ax‘g‘'|kx±G‘ ��� �,€ � 8!`€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿá "C’d__7istreamiP9streambufP7ostream|¦“Áÿø“áÿü�”!ÿÀ|~xÃóxHY=`|x,ÿÿA‚HY™€A,@‚ÿÜãûx8!@€|¦ƒÁÿøƒáÿüN€ A€\skip_ws__FP9streambuf|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x�?ˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ H(]Oÿû‚9`, A‚@�?€iHXY`,ÿÿA‚˜~8�H�?9`ˆ `˜ ‘ãûx8!@€|¦ƒÁÿøƒáÿüN€ A€Ìget__7istreamRc[DS]|¦“Áÿø“áÿü�”!ÿÀ|~x�>ˆ ,8`ÿÿ@‚€€i,A‚ �)�i€ |X@‚ H'uOÿû‚�>ƒé�€| @A€ãûxKÿ›Å`,ÿÿA‚�?ˆiH8`ÿÿ,ÿÿ@‚�>ˆ `˜ 8!@€|¦ƒÁÿøƒáÿüN€ A€Àpeek__7istream|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x8�=|Ÿ#x|¼+x�ˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ H&mOÿû‚9`, A‚l�=,ÿÿƒÉ@‚0ÃóxäûxKÿiÕ`�}HD�=|à9)‘=A‚07ÿÿÿA€(ÃóxHV)`,ÿÿ@‚ÿÔ�=ˆ `˜ £ëx8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ignore__7istreamii|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#x�?|¾+xˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ H%AOÿû‚9`, A‚<�?¤ëxÅóx€iKÿŸ-`|ð�A‚�?ˆ `˜ H‘ãûx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Ôread__7istreamPcl[DS]|¦“áÿü�”!ÿÀ|x�?�i, @‚ 8`ÿÿHT�+H¨iX�I\|k�A€ €J|¦�jN€!€A,@‚ 8`H�?8`ÿÿˆ `˜ 8!@€|¦ƒáÿüN€ A€�sync__7istream|¦“áÿü�”!ÿÀ|x8 �?€iHT�`,ÿÿ@‚�?ˆ `˜ ãûx8!@€|¦ƒáÿüN€ A€Xseekg__7istreaml|¦“áÿü�”!ÿÀ|x8À�?€iKÿÛQ`,ÿÿ@‚�?ˆ `˜ ãûx8!@€|¦ƒáÿüN€ A€Xseekg__7istreamlQ23ios8seek_dir|¦“áÿü�”!ÿÀ|x8€�?8 8À€iKÿÚ¹`,ÿÿ@‚�?ˆ `˜ 8!@€|¦ƒáÿüN€ A€\tellg__7istream|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€ˆ,A‚`9 ˜H@€c,A‚ H"Oÿû‚�?€ p A‚ãûxH#ÍOÿû‚|ixH9 , A‚4�?€iHQí`,ÿÿ@‚�?ˆ `˜ H˜~ãûx8!@€|¦ƒÁÿøƒáÿüN€ A€Ì__rs__7istreamRc[DS]|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|{x8�;|�#xºëx�i� €{}|[xˆ,A‚`9 ˜H@€c,A‚ H õOÿû‚�;€ p A‚cÛxH"­Oÿû‚|ixH9 , A‚Œ�;ƒÉH@ãûxHQ5€A,@‚ ,@‚ÃóxWä>Kÿj%`H8›ý;œÿÿ;½ÃóxHP‰`|x,ÿÿ@‚ÿ°�;ˆ `˜ |Ð@‚�;ˆ `˜ 8cÛx˜8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€d__rs__7istreamPc[DS]|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|{x|š#x€{|¿+xˆ,A‚`9 ˜H@€c,A‚ HyOÿû‚�;€ p A‚cÛxH!1Oÿû‚|ixH9 , @‚ 8`H`�;;  ;€ƒÉÃóxKÿõåOÿû‚|dx,ÿÿA‚$,+“Ÿ@‚ ÃóxH,-@‚8Ãóx�Kÿõ©Oÿû‚|dx,ÿÿA‚è�;€ pp@‚”,0@‚¸ÃóxHNÑ`|dx,ÿÿ@‚9 9@‘:‘ZH„h‰x } Ih€X!`| }+yA‚$Ãóx; HN�`|dx,ÿÿA‚hHLT„>ÃóxKÿgá`; 8€0H0,@@‚ ; H h |Ð|þp| ø 8U)8|Kx9 ,ÿÿ9@‘:‘ZA‚ä8äÿÐ( A� |ÿ;xH48ÿ¿(A� ;äÿÉH 8ÿŸ9$ÿ© |})xpç|Kx|èA€ ÃóxT„>Kÿg5`,A‚ˆH|�z�šªëxèûx}CSxUFþ}„cxU…þH1ƒ|¥Z©þp|ÆJçþp|¥QÖ;œ|ÆaÖ|ix|Š#xÃóx})*})2}Š@}i9‘z‘šHM=`|dx,ÿÿ@‚ÿ$8`H0�;8`ˆ `˜ H�;8`ˆ `˜ 8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ read_int__FR7istreamRUxRi|¦“¡ÿô“Áÿø“áÿü�”!ÿ¨|~x|�#x;á8äûx8¡@Kÿü…,A‚0€@,A‚�!8�AKx}_Sx�}ÿÿÀûy@‚ÿØ�8~û¸ø€ p €A‚\, 0A‚T80œÿÿHH,@@‚dq+€âð@‚€âô;�8~û¸øWàá>WÈà} xWë>WÉá>|X®}>Kx}_SxÉûyœÿÿ@‚ÿØ�8€ p €A‚ì:‡: Hà/—~û¸ø(@&WZà@�L8 Ãóxäûx8À H‹•`808 Ãóxäûx8À œÿÿH‘`|~x|Ÿ#x(A�ÿ¼=`ÌÌèûxakÌÍ<€ÌÌ}Cx`„ÌÍ}þpH1|X8|c|cBTcèþTi8})})})@|hy9)0�=ÿÿ@‚ÿÀH @�(�8€ p } &U)þ})Ð8 ~ÉH8}6x8ÿÞkþp€ø à9 |Ù²�|ÀX89F‘'}KXx�8|[x|Àª�i †@‹I}@U|<ƒék‰Oþã‚|&Tþ})Ð|ÐU)þ}8Àþp|Tþ| H9A‚(,A‚ ãûxDÓxÅóxH•¹`|ðA€DVéþ1vÿÿ| ±}+yA‚,`þpäûx|øp+pc-|xH‰•`,A€,A‚<�_H~„£x~¥«xãûx�*4�A€ €I|¦�iN€!€A,A‚ÈÀþpk‰!i}+I|Tþ} Ø9A‚ ãûxDÓxÅóxH•`|ðA€Œ�_H¤ëxãûx%Ëx�*4�A€ €I|¦�iN€!€A|È@‚Tk€! | | Ø9A‚ ãûxDÓxÅóxH”™`|ðA€$�8€ p `A‚@ÃxHIOÿû‚H0�xˆ `˜ �8€ p `A‚ÃxHOÿû‚8!�€|¦‚�ÿЂ¡ÿÔ‚ÁÿØ‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ `write_int__FR7ostreamUxi|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€ˆ,A‚ 8H€c,A‚ H Oÿû‚8,A‚8Ëóy8À@€�?€ p `@‚ }kÐ8Àÿÿ}e[xãûx8€Kÿúíãûx8!@€|¦ƒÁÿøƒáÿüN€ A€¤__ls__7ostreami[DS]|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€ˆ,A‚ 8H€c,A‚ H EOÿû‚8,A‚Åóxãûx8À8€Kÿú=ãûx8!@€|¦ƒÁÿøƒáÿüN€ A€„__ls__7ostreamUi[DS]|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€ˆ,A‚ 8H€c,A‚ H •Oÿû‚8,A‚8Ëóy8À@€�?€ p `@‚ }kÐ8Àÿÿ}e[xãûx8€Kÿùmãûx8!@€|¦ƒÁÿøƒáÿüN€ A€¤__ls__7ostreaml|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€ˆ,A‚ 8H€c,A‚ H ÉOÿû‚8,A‚Åóxãûx8À8€KÿøÁãûx8!@€|¦ƒÁÿøƒáÿüN€ A€„__ls__7ostreamUl|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x|ž#x|¿+x€}ˆ,A‚ 8H€c,A‚ H Oÿû‚8,A‚<Äóxåûx8À,@€ �=€ p `@‚ ¥|„�8Àÿÿ£ëxKÿ÷é£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€´__ls__7ostreamx|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x|ž#x|¿+x€}ˆ,A‚ 8H€c,A‚ H 9Oÿû‚8,A‚Äóxåûx£ëx8ÀKÿ÷1£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€�__ls__7ostreamUx|¦Ûáÿø“áÿô�”!ÿ°|xÿà�€ˆ,A‚ 8H€c,A‚ H‰Oÿû‚8,A‚ü�?€ T è, @‚ 8ÀfH@, @‚ p |&Tþ|Ðpe`EHp |&Tþ|Ðpg`G€¿�,A�$€ Tæ|Ð|þp| ø}8U)||Kx€å8ü ø���€¥�+ ¨ U*j}JÐ�8}JþpqJ+H�a`,@€�?ˆ `˜ �?€ p `A‚ãûxH ÑOÿû‚ãûx8!P€|¦ƒáÿôËáÿøN€ "A�`h__ls__7ostreamd[DS]|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|{x|œ#x€{ˆ,A‚ 8H€c,A‚ HåOÿû‚8,A‚,@‚ƒ‚ ƒãxH–…€A�{|}x8�K� Šè�;}]P�i |&T÷þ‹I|ЃÉ}_8q`@‚(,@� ÃóxDÓxåûxHŒÙ`|ø@‚p�^H„ãxÃóx¥ëx�*4�A€ €I|¦�iN€!€A|è@‚8�;€ p A‚8,@�0ÃóxDÓxåûxHŒm`|øA‚�;ˆ `˜ �;€ p `A‚cÛxH Oÿû‚cÛx8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€¨__ls__7ostreamPCc[DS]|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ï¸|}x|œ#x€}ˆ,A‚ 8H€c,A‚ HOÿû‚8,A‚Œ�=ƒÉƒãx8�88 Kÿ`|yA‚L�^HÃóx8�8åûx�*4�A€ €I|¦�iN€!€A|øA‚ÿ°�=ˆ `˜ �=€ p `A‚£ëxH ÑOÿû‚£ëx8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€__ls__7ostreamP9streambuf|¦}€&Kÿ±M‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ ��|�ax�¡€�Á„Kÿ²ý`€||lx,}€cxA‚P€¡x89`�BD8à 99%‘%‘I™i9@˜ �� °é‘ ‘I� � }†cx�a88„æ9@9!@�|x�á8‘A<�@‘ ‘i�) �!|�ax�¦, �+€‚�‰@‚\€¤9aP€�¡P€¡x�$� €ä€Ä�E� ‘+‘ �ë�Ë‘j�% 9)ÿü})(|J°X�!€�ax, €ë8@‚8˜€¡€98‘9 9` �§9@˜€„±g�‘G ‘'‘�,€ax€ � 8!`€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿ¹l "C’\__7ostreamiP9streambufP7ostream|¦“áÿü�”!ÿÀ|x8 �?€iH2%`,ÿÿ@‚�?ˆ `˜ ãûx8!@€|¦ƒáÿüN€ A€Xseekp__7ostreaml|¦“áÿü�”!ÿÀ|x8À�?€iKÿ¸õ`,ÿÿ@‚�?ˆ `˜ ãûx8!@€|¦ƒáÿüN€ A€Xseekp__7ostreamlQ23ios8seek_dir|¦“áÿü�”!ÿÀ|x8€�?8 8À€iKÿ¸]`,ÿÿ@‚�?ˆ `˜ 8!@€|¦ƒáÿüN€ A€\tellp__7ostream|¦“áÿü�”!ÿÀ|x�?�I�jH¨kX�+\|j�A€ €I|¦�iN€!€A,A‚�?ˆ `˜ ãûx8!@€|¦ƒáÿüN€ A€xflush__7ostream[DS]|¦�”!ÿÈKÿÿQOÿû‚8!8€|¦N€ A€$flush__FR7ostream|¦“áÿü�”!ÿÀ|x�?ˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ Kÿþ½Oÿû‚9`, A‚D�?€iKÿÕaOÿû‚,ÿÿ@‚�?ˆ `˜ H�?Td>€iKÿH `ãûx8!@€|¦ƒáÿüN€ A€Àws__FR7istream|¦“áÿü�”!ÿÀ|x�?€iKÿÔÑOÿû‚,ÿÿA‚ �?Td>€iKÿG�`8`H�?8`ˆ `˜ 8!@€|¦ƒáÿüN€ A€p_skip_ws__7istream[DS]|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x�=8`€‰Hwù`£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Pends__FR7ostream|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x�=8` €‰Hw�`£ëxKÿý‰Oÿû‚8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Xendl__FR7ostream”!ÿè8!N€ @€ lock__FR7istream”!ÿè8!N€ @€ unlock__FR7istream”!ÿè8!N€ @€ lock__FR7ostream”!ÿè8!N€ @€ unlock__FR7ostream|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#x€|¾+xˆ,A‚ 8H€c,A‚ Kÿû�Oÿû‚8,A‚l�?¤ëxÅóx€i�CH�*4�A€ €I|¦�iN€!€A|ðA‚�?ˆ `˜ �?€ p `A‚ãûxHYOÿû‚ãûx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€äwrite__7ostreamPCcl[DS]|¦“áÿü�”!ÿÀ|x�?€ p A‚ Kÿú‘Oÿû‚�?€ p @A‚€b4KÿÎq€A€bÄKÿÎe€A8!@€|¦ƒáÿüN€ A€hdo_osfx__7ostream[DS]|¦}€&Kÿ§E‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!ý°��l�ah�¡p�ÁtKÿ¨õ`€l|lx}žcx,A‚T€¡h89`€âH8À 9@9% 9‘%‘%�é™i˜ � � °É‘I ‘ � � }†cx�a88…F99!@€â8|x‘A8|Ú3x‘<�@�é‘i�) “f}€cx9P�,9@8ì€�b<‘!P‘H‘a\�`‘X�!d‘8ah; €áh8� �bt�'ƒ‚@‘i�K€ �+ €Ë€«� €ç‘Ax�p�Áh�¡l‘!t‘|�Ah�g�*  9)ÿø“ª})P|J°p�>€ ��,€‘!˜“¡œ“a “„��$ 8˜}‡cx�BD�9°9`…'}€cx€¡h€‘!°;å‘h‘A¼�À‘¸�!Ä‘8aÈ;€�?8��bƒ¢H‘i€ �+ €Ë€«�K� €ÿ�Ð�ÁÈ�¡Ì‘!Ô‘AØ‘Ü�g�?  9)ÿü})ø|J°Ð�>€ ��,€‘!ø“�ü“a“¤��$ 8ø€ál�Ah�,€‚L�*�‰@‚\€¤9a€�¡�$� €ä€Ä�J� ‘+‘ �ë�Ë‘j�ah �+9)ÿô})X|J°ƒáp€¡h,€å8@‚8˜�!p98‘9` 9@‘'˜9 ƒát±g“ç‘G ‘'‘�,€ah�i‘l�+‘,€ � 8!P€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿ­ˆ "C’8 __8iostreamiP9streambufP7ostream|¦“áÿü�”!ÿÀ|x�€ p A‚}c[xKÿŠE`H8, A‚0�+H¨iX�I\|k�A€ €J|¦�jN€!€A9 8˜‘?8!@€|¦ƒáÿüN€ A€Œ close__3ios”!ÿè€c,€ T þA‚ `HT<� }#Kx8!N€ @€4skip__7istreami|¦“Áÿø“áÿü�”!ÿ�|x€¢P|ž#y�?�©@‚X€Å9AP€�%�e �€å�ÁP� ‘*‘j ‘ �ê� ‘K�?9)ÿô})ø|J°X�?sÀ8a8�b �Bx‘i€ �+ � €ë€«€‹€ß�@�¡8��<‘!D‘H�áL�f�?  })ø�9) |J°@‘K€ �*�j� €ê‘!<‘a@�8‘D€ �áH�?�L�i�¡*8 ÿø|ø})±!@A‚€L€k� HƒA`sÀA‚ãûxHÕe`8!p€|¦ƒÁÿøƒáÿüN€ A€„_._8iostream[DS]|¦“Áÿø“áÿü�”!ÿ�|x€¢l|ž#y�?�©@‚X€Å9AP€�%�e �€å�ÁP� ‘*‘j ‘ �ê� ‘K�?9)ÿø})ø|J°X�?sÀ8�8�b|‘i€ �+ �K€Ë€«� €ÿ�@�Á8�¡<‘!D‘AH‘L�‡�_¡+8 ÿø|ø})±!@A‚€P€j� H�ñ`sÀA‚ãûxHÔ`8!p€|¦ƒÁÿøƒáÿüN€ A€(_._22_IO_istream_withassign[DS]|¦“Áÿø“áÿü�”!ÿ�|x€¢p|ž#y�?�©@‚X€Å9AP€�%�e �€å�ÁP� ‘*‘j ‘ �ê� ‘K�?9)ÿü})ø|J°X�?sÀ8�8�b$‘i€ �+ �K€Ë€«� €ÿ�@�Á8�¡<‘!D‘AH‘L�‡�_¡+8 ÿü|ø})±!@A‚€T€j� H€‘`sÀA‚ãûxHÒµ`8!p€|¦ƒÁÿøƒáÿüN€ A€(_._22_IO_ostream_withassign[DS]|¦“Áÿø“áÿü�”!ÿ¨|x€¢(|ž#y�?�©@‚X€Å9A8€�%�e �€å�Á8� ‘*‘j ‘ �ê� ‘K�?9)ÿü})ø|J°@sÀA‚�?€X€i� H�`sÀA‚ãûxHѱ`8!X€|¦ƒÁÿøƒáÿüN€ A€Ì_._7ostream[DS]|¦“áÿü�”!ÿÀƒât€,@‚$Kÿ?Á`€‚€ãûx8À€¢ŒHºÅ`ãûx8!@€|¦ƒáÿüN€ A€X__tf7ostream[DS]|¦}€&Kÿ›í‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ ��|�axKÿ�¥`€||lx,}€cxA‚P€¡x89`�B\8à 99%‘%‘I™i9@˜ �� °é‘ ‘I� � }†cx�a88„æ9@9!@�˜|x�á8‘A<�@‘ ‘i�) �¦�a|€¡x€‚,, �%�‰@‚\€¤9aP€�¡P€¡x�$� €ä€Ä�E� ‘+‘ �ë�Ë‘j�% 9)ÿü})(|J°X�,€ax€ � 8!`€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿ¤p "C’ø__7ostreami[DS]|¦�”!ÿÈ€cˆ,A‚ 8`H€c,A‚ KÿìyOÿû‚8`8!8€|¦N€ A€Lopfx__7ostream[DS]|¦�”!ÿÈ�#€ p `A‚ KÿñeOÿû‚8!8€|¦N€ A€4osfx__7ostream[DS]|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x�=|ƒ#x€‰HfA`£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Pput__7ostreamc[DS]|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x�=|ƒ#x€‰HeÉ`£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Pput__7ostreamUc|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x�=Tƒ>€‰HeQ`£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Pput__7ostreamSc|¦�”!ÿÈKÿî�Oÿû‚8!8€|¦N€ A€$write__7ostreamPCUcl|¦�”!ÿÈKÿîMOÿû‚8!8€|¦N€ A€$write__7ostreamPCScl|¦�”!ÿÈKÿíýOÿû‚8!8€|¦N€ A€$write__7ostreamPCvl|¦�”!ÿÈKÿÖ­Oÿû‚8!8€|¦N€ A€$__ls__7ostreamUc|¦�”!ÿÈT„>KÿÖ]Oÿû‚8!8€|¦N€ A€(__ls__7ostreamSc|¦�”!ÿÈKÿá¥Oÿû‚8!8€|¦N€ A€$__ls__7ostreamPCUc|¦�”!ÿÈKÿáYOÿû‚8!8€|¦N€ A€$__ls__7ostreamPCSc|¦�”!ÿÈKÿÚíOÿû‚8!8€|¦N€ A€$__ls__7ostreams|¦�”!ÿÈKÿÛqOÿû‚8!8€|¦N€ A€$__ls__7ostreamUs|¦�”!ÿÈKÿÚUOÿû‚8!8€|¦N€ A€$__ls__7ostreamb|¦�”!ÿÈKÿÞ•Oÿû‚8!8€|¦N€ A€@$__ls__7ostreamf|¦�”!ÿÈKÿÞIOÿû‚8!8€|¦N€ A€`$__ls__7ostreamr|¦�”!ÿÈ�A€€D|¦�dN€!€A8!8€|¦N€ A€8#__ls__7ostreamPFR7ostream_R7ostream|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x€}�A€€D|¦�dN€!€A£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€\__ls__7ostreamPFR3ios_R3ios”!ÿè�#€i8!N€ @€ostreambuf__C7ostream|¦“Áÿø“áÿü�”!ÿ¨|x€¢€|ž#y�?�©@‚X€Å9A8€�%�e �€å�Á8� ‘*‘j ‘ �ê� ‘K�?9)ÿø})ø|J°@sÀA‚�?€`€i� Htá`sÀA‚ãûxHÇ`8!X€|¦ƒÁÿøƒáÿüN€ A€Ì_._7istream[DS]|¦“áÿü�”!ÿÀƒâœ€,@‚$Kÿ5`€‚¨ãûx8À€¢´H°`ãûx8!@€|¦ƒáÿüN€ A€X__tf7istream[DS]|¦}€&Kÿ‘A‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ ��|�axKÿ’ù`€||lx,}€cxA‚P€¡x89`�Bd8à 99%‘%‘I™i9@˜ �� °é‘ ‘I� � }†cx�a88„æ9@9!@�À|x�á8‘A<�@‘ ‘i�) �!|�ax�¦, �+€‚„�‰@‚\€¤9aP€�¡P€¡x�$� €ä€Ä�E� ‘+‘ �ë�Ë‘j�% 9)ÿø})(|J°X€ax8��,€ � 8!`€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿ™¼ "C’__7istreami[DS]|¦�”!ÿÈHÈ-`8!8€|¦N€ A€$get__7istreamPUcic|¦�”!ÿÈKÿ¸åOÿû‚8!8€|¦N€ A€$get__7istreamRUc|¦�”!ÿÈHÅÕ`8!8€|¦N€ A€$getline__7istreamPUcic|¦�”!ÿÈKÿ¸IOÿû‚8!8€|¦N€ A€$get__7istreamRSc|¦�”!ÿÈHÆù`8!8€|¦N€ A€$get__7istreamPScic|¦�”!ÿÈHÄí`8!8€|¦N€ A€$getline__7istreamPScic|¦�”!ÿÈKÿºuOÿû‚8!8€|¦N€ A€$read__7istreamPUcl|¦�”!ÿÈKÿº)Oÿû‚8!8€|¦N€ A€$read__7istreamPScl|¦�”!ÿÈKÿ¹ÝOÿû‚8!8€|¦N€ A€$read__7istreamPvl|¦}€&“áÿü�‘�”!ÿÀ|x�?ˆ ,A‚`8`˜ H`€i.,A‚(A’�)�i€ | | @€ KÿÞÙOÿû‚@’$�?€ p A‚ãûxKÿà�Oÿû‚H8`8!@€��|¦ƒáÿü}€� N€ C€´ipfx__7istreami|¦“áÿü�”!ÿÀ|x�?ˆ ,A‚`8`˜ H8€i,A‚ KÿÞ%Oÿû‚�?8`€ p A‚ãûxKÿßÙOÿû‚8!@€|¦ƒáÿüN€ A€|ipfx0__7istream[DS]|¦�”!ÿÈ�#ˆ ,A‚`8`˜ H0€i,A‚ �)�i€ |X@‚ KÿÝqOÿû‚8`8!8€|¦N€ A€hipfx1__7istream[DS]”!ÿè8!N€ @€ isfx__7istream[DS]|¦“áÿü�”!ÿÀ|x�?ˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ KÿÜ¡Oÿû‚9`, @‚ 8`ÿÿH,�?€iH •`,ÿÿ@‚�?ˆ `˜ 8!@€|¦ƒáÿüN€ A€¬ get__7istream”!ÿè€c8!N€ @€gcount__7istream|¦“áÿü�”!ÿÀ|x€ˆ,@‚$€cKÿ%]`,ÿÿ@‚�?8˜ ãûx8!@€|¦ƒáÿüN€ A€\putback__7istreamc[DS]|¦“áÿü�”!ÿÀ|x€ˆ,@‚$€cKÿ%%`,ÿÿ@‚�?8˜ ãûx8!@€|¦ƒáÿüN€ A€\unget__7istream|¦“áÿü�”!ÿÀ|x€ˆ,@‚$€cKÿ$Q`,ÿÿ@‚�?8˜ ãûx8!@€|¦ƒáÿüN€ A€\unget__7istreamc”!ÿè�#€i8!N€ @€istreambuf__C7istream|¦�”!ÿÈKÿ¸­Oÿû‚8!8€|¦N€ A€$__rs__7istreamPUc|¦�”!ÿÈKÿ¸aOÿû‚8!8€|¦N€ A€$__rs__7istreamPSc|¦�”!ÿÈKÿ·Oÿû‚8!8€|¦N€ A€$__rs__7istreamRUc|¦�”!ÿÈKÿ¶ÑOÿû‚8!8€|¦N€ A€$__rs__7istreamRSc|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x€}�A€€D|¦�dN€!€A£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€\__rs__7istreamPFR3ios_R3ios|¦�”!ÿÈ�A€€D|¦�dN€!€A8!8€|¦N€ A€8#__rs__7istreamPFR7istream_R7istream|¦“Áÿø“áÿü�”!ÿÀƒÂ(€,@‚|ƒâx€,@‚$Kÿ(Q`€‚„ãûx8À€¢�H£U`ƒâ €,@‚$Kÿ(!`€‚¬ãûx8À€¢¸H£%`€‚,Ãóx€¢08ÀH£ `€b(8!@€|¦ƒÁÿøƒáÿüN€ A€¸__tf8iostream[DS]|¦}€&Kÿ„1‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!ý°��l�ahKÿ…é`€l|lx}žcx,A‚T€¡h89`€âh8À 9@9% 9‘%‘%�é™i˜ � � °É‘I ‘ � � }†cx�a88…F99!@€â4|x‘A8|Ú3x‘<�@�é‘i�) “f}€cx9P�,9@8ì€�b8‘!P‘H‘a\�`‘X�!d‘8ah; €áh8� �bˆ�'ƒ‚<‘i�K€ �+ €Ë€«� €ç‘Ax�p�Áh�¡l‘!t‘|�Ah�g�*  9)ÿø“ª})P|J°p�>€ ��,€‘!˜“¡œ“a “„��$ 8˜}‡cx�B@�9°9`…'}€cx€¡h€‘!°;å‘h‘A¼�À‘¸�!Ä‘8aÈ;€�?8��b0ƒ¢D‘i€ �+ €Ë€«�K� €ÿ�Ð�ÁÈ�¡Ì‘!Ô‘AØ‘Ü�g�?  9)ÿü})ø|J°Ð�>€ ��,€‘!ø“�ü“a“¤��$ 8ø€ál�Ah�,€‚T�*�‰@‚\€¤9a€�¡�$� €ä€Ä�J� ‘+‘ �ë�Ë‘j�ah �+9)ÿô})X|J°�l€ah�+‘,�i‘l€ � 8!P€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� KÿŠØ "C’Ô __8iostreami|¦“Áÿø“áÿü�”!ÿÀƒÂH€,@‚Lƒâ¤€,@‚$Kÿ#}`€‚°ãûx8À€¢¼Hž�`€‚LÃóx€¢P8ÀHži`€bH8!@€|¦ƒÁÿøƒáÿüN€ A€ˆ __tf22_IO_istream_withassign[DS]|¦�”!ÿÈHÌ`8!8€|¦N€ A€$7__as__22_IO_istream_withassignR22_IO_istream_withassign|¦“Áÿø“áÿü�”!ÿÀƒÂT€,@‚Lƒâ|€,@‚$Kÿ"M`€‚ˆãûx8À€¢”H�Q`€‚XÃóx€¢\8ÀH�9`€bT8!@€|¦ƒÁÿøƒáÿüN€ A€ˆ __tf22_IO_ostream_withassign[DS]|¦�”!ÿÈHË�`8!8€|¦N€ A€$7__as__22_IO_ostream_withassignR22_IO_ostream_withassign”!ÿè|ix€ T0`� 8!N€ @€ dec__FR3ios”!ÿè|ix€ T0`@� 8!N€ @€ hex__FR3ios”!ÿè|ix€ T0` � 8!N€ @€ oct__FR3ios|¦�”!ÿÈ�#€| @A€KÿEM`|`xH�#ˆ 9)‘#|x8!8€|¦N€ A€P_IO_getc�‚Œ�A€ €L| ¦N€  |¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|ž#x|½+x€$,A‚ Kÿ@µ`�?H�)LãûxÄóx¥ëx�A€ €I|¦�iN€!€A8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€„ _IO_seekpos|¦“Áÿø“áÿü�”!ÿÀ�¡`|x|ž#x��Ád�áh‘l‘!p‘At��\ˆ ,A‚`8`˜ H<€k,A‚ KÿÎE`�?€ p A‚ãûxKÿÏý`H8`,A‚€ßÄóx8¡`€fH9`ãûx8!@€|¦ƒÁÿøƒáÿüN€ A€Ìscan__7istreamPCce|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#x€|¾+xˆ,A‚`9 ˜H@€c,A‚ KÿÍe`�?€ p A‚ãûxKÿÏ`|ixH9 , A‚€ß¤ëxÅóx€fHU`ãûx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Àvscan__7istreamPCcPc|¦“áÿü�”!ÿ¸|ß3x8�88Á8HÝ`,A‚ˆ�!8|Kx˜8!H€|¦ƒáÿüN€ A€Tvscan__9streambufPCcPcP3ios|¦�”!ÿÈ�¡X�Á\8¡X��T8À�á`‘d‘!h‘AlHE`8!8€|¦N€ A€Hscan__9streambufPCce|¦’AÿÈ’aÿÌ’�ÿÐ’¡ÿÔ’ÁÿØ’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ý0|zx|¹+x|Ò3x|•#x;:`:À:€:à‹Õ:µ,A‚œÃóxKÿûÙ€A,A‚PH:÷CÓxKÿûM`|~x,ÿÿA‚(Kÿû©€A,@‚ÿØÃóxDÓxHÍ`Kÿÿœ:ÖKÿÿ”,%@‚;`;€‹Õ:µ(xA�`�"˜WÀ:| .|J| ¦N€ <DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDäDDDD DDDDDXXXXXXXXXXDDDDDDDDDD€ÀÀDDDDD0DD˜DDDDDDDD¸DDÐDDDDDDDìhÀÀÀDˆDDD œøDDÈD¬DD¸CÓxKÿøí`|x,ÿÿA‚ Ø|ð@‚l:÷KÿýP,@‚ Ü;€KÿýÀ8ÿ·‰9@‚ ÈcœKÿý¬8ÿ·‹9@‚ ´cœKÿý˜8ÿ·‰9@‚  cœKÿý„8ÿ·‹9@‚ Œcœ@W`8|Ú{{ò;{ÿÐKÿý\cœHä;À‚bœ;Hàcœ;À‚b ;HÌ;À‚b H¼cœH@;ÀH°;ÀH¨8a8~¤«xH ½|uxcœ ;ÀHŒcœ ;ÀH€cœ;À‚b ;Hls€@‚üHs‰A‚;9�9ÿü²éKÿü0;9�9ÿü’éKÿü :€ÿÿH ÀÃóxH ™€A0cÿÿ|cc€‰8|x}<x;À‚bœ; �:€| @A€CÓxKÿ;©`,ÿÿA‚ <�:ˆi,ÿÿA‚ ,s€ @‚h|xHL�:9)‘::÷€| @A€CÓxKÿ;Y`,ÿÿA‚�:‹éH;àÿÿ,ÿÿA‚ ÔãûxKÿ÷A€A,@‚ÿ¨(A�û@�"¨WÀ:| .|J| ¦N€ 䀸ä`þp| Úx})})þp`H89)|Kxs‰A‚h;À€€zã|Ø@€8ÞúØ|�CÓxKÿ:™`,ÿÿ@‚ÿÌ,A‚ $:ÖHÞÚ€|�~÷òKÿúŒ�:H;9�)<CÓx€™ÿüeÛx�A€ €I|¦�iN€!€A|Ø@‚È~÷Ú:”KÿúDiþp} Úx|H|þp| Ø8};8s‹A‚°;à�zˆ 9!8| ®,A‚ˆ;à8 �7{ÿÿA‚t}>Kx�:€| @A€CÓxKÿ9±`,ÿÿA‚�:ˆ ,ÿÿ@‚,A‚,:ÖH,�:ˆ |®,A‚;ÿ8 �7{ÿÿ@‚ÿ˜,A‚Hh;9ƒ¹ÿü¿ëx�Z‰jU`>9!8| ®,A‚”™}8 �;½7{ÿÿA‚|}>Kx�:€| @A€CÓxKÿ8õ`,ÿÿA‚�:ˆ ,ÿÿ@‚|øA‚p:ÖH4�z‰+U >|®,A‚™=8 �;½7{ÿÿ@‚ÿ�ÿèA‚L8˜:”H˜iþp} Úx|H|þp| Ø8};8s‹A‚€;àH@�:€| @A€CÓxKÿ8A`,ÿÿA‚�:ˆ ,ÿÿ@‚ :ÖH4�:ˆiKÿô%€A,@‚;ÿ�:9)‘:7{ÿÿ@‚ÿ˜~÷úKÿø ;9ƒ¹ÿü¿ëxH@�:€| @A€CÓxKÿ7½`,ÿÿA‚�:ˆ ,ÿÿ@‚ :ÖH<�:ˆiKÿó¡€A,@‚$�:ˆ ˜9)‘:;½7{ÿÿ@‚ÿ�8˜|è~÷:”Kÿ÷p8ÿÿ \||¸i8|øp]cœÀ;¡8};yA‚@�:‹É8ÿÕ(MA�,�"¬T:| .|J| ¦N€ ��8\\\\\\\pp„„„„„„ „„„„„„ ,@‚ ;cœs€A‚8ý?œ8Hd�"°| ®Wœ¬HP�"°| ®,H, @�ˆKÿÿÜs‰@A‚|Wœ°H s‹A‚l89|@‚`;Wœ,›Ý;½�:9)‘:€| @A€CÓxKÿ5 `,ÿÿA‚�:ˆ ,ÿÿ@‚ :ÖH 7{ÿÿ@‚ýÈs€€A‚$88|@@�ˆˆ}ÿÿDÓxH`Ht‹ÝÿÿkÉx } IkÀX!`| }+yA‚;½ÿÿÃóxDÓxHÕ`s€@‚˜8a88€Ãx�A€€S|¦�sN€!€As‰@‚s‹A‚;9�9ÿü°iH¸;9�9ÿü�iH¨8ÿÿ \||¸i8|øp]cœÀ;¡8};yA‚°�:‹É8ÿÕ(:A�œ�"´T:| .|J| ¦N€ ô€ô€ììììììììì쀀€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€Wœ®HKÿ:m`H8`ÿÿ8!8€|¦N€ A€@ _IO_ungetc�‚¤�A€ €L| ¦N€  �"¸8� �"Ô8� N€ @test_endianness8° 8�8�8�°N€ @(Binit|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸/ƒà&Wÿ÷þÿÐ|cø8àøøT¾|x; ½ø0W£:8cKÿq €A“ã“£8�°° 8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€„Balloc|¦�”!ÿÈ|cyA‚¨ ,@‚ H2½€A8!8€|¦N€ A€8Bfree�$ °‘#8c8„5)ÿÿM€ €�8„8c5)ÿÿ@€ÿìN€ @<Bcopy|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|yA‚8€| ãûx@€0|ƒ#xKÿþ�|}xäûxKÿÿiãûxKÿÿ £ëxH |ƒ#xKÿþ]8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€xBrealloc|¦“Áÿø“áÿü�”!ÿÀ|¾+xƒã9C9€ T >}k!Ö}kòT„>|!ÖUi„>|JT„>T€Uk>|Z� 9J9|øA€ÿÀ,A‚0€|A€€ƒ8„KÿþåWà:9#É.;ÿ“ã8!@€|¦ƒÁÿøƒáÿüN€ A€´multadd|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|kx|Ÿ#x|½+x|Ü3x|þ;x8|x<€8ã`„Ž9H1|cp|þp|8€9 ,@�U)<8„|HA�ÿô}c[xKÿþ!|kx“Ë8� ;À , @�8;ÿ ˆ¿;ÿ}c[x8€ 8¥ÿÐKÿþ�|kx;Þ|èA€ÿÜ;ÿH,;ÿ H$ˆ¿;ÿ}c[x8€ 8¥ÿÐKÿþI|kx;Þ|àA€ÿÜ}c[x8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€s2b9 t`ÿÿ@‚ 9 Tc€t`ÿ@‚ 9)Tc@.t`ð@‚ 9)Tc 6t`À@‚ 9)Tc:,A€9)t`@8` M‚ }#KxN€ @dhi0bits|kx�+q A‚,@‚ 8`U)„>U >,@‚ 8cU)Â>q @‚ 8cU)á>q @‚ 8cU)ð¾q @‚8cU)ø@‚ 8` N€ ‘+N€ @¸lo0bits|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|�#x8€Kÿûá“£8�8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Li2b|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°||x|Ÿ#x|½+x�?€| @€àûx¿ëx|x�?ƒƒ]ÛÒ€žOþã‚|€&T„þ|„Ð8 }) 8| xƒãx}$#xKÿû||x9WÀ:}ˆ|`@@€8�9|`@A€ÿô9ŸW`:|l8½W@:¥;ü|è@@€ø Å,A‚l}ˆcxçûx8€�hU`>|1Ö�GUI>|J} "U$„>Uk„>}k1ÖUJ„>}kR}k"9Ud„>U`€U)>|Kx�8ç|@A€ÿ¬�‡ Å,A‚h}ˆcxçûx8€�g |1Ö¡'|J} "U$„>U €Ui>|Kx�¡(})1Ö„T>})}i"9Ud„>|@A€ÿ´‘g8¥;ÿ|è@A€ÿ;üWÀ:|ÿ,H7Þÿÿ@�„ÿü,A‚ÿð“܃ãx8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€(mult|¦“áÿü�”!ÿÀ|Ÿ#x,@�8€= 8 KÿùÉ;ÿÿú,A�ÿì,A‚�"ð8ÿÿT:|‰.8 Kÿù�8!@€|¦ƒáÿüN€ A€hpow5mult|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|Ÿ#xƒ£ü.p€ƒÜê;Þ,A‚Ì€|@�8„T<|A�ÿôKÿøu8ÃW :}FW€:} sÿA‚` ¿ „êÿü|à,0�0ÿÿ|9>Ë8} x}~x| 0@@�$„ ÿü|éø0| ,0})[x•(ÿü|x| 0@A�ÿä|àø0”ÿüH„ ÿü”ÿü| 0@A�ÿô|0@@�8”ÿü|0@A�ÿø8ÿÿ�8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€$lshift|kx€k�$|iA‚N€ |`X|c`cN€ 8kU):}CJ8|€J…jÿü„ÿü| @‚ÿÐ| @A�ÿì8`N€ @\cmp|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸||x|ž#x|½+xÃóx¤ëxKÿÿY|y@‚$ƒãx8€KÿöÑ||x8�“üH,@€Àóx¾ëx|x;àH;àƒãx€žKÿö‘||x³ü€¾8~T :ã€8�T:Ä8ü8À�CUI>�dU`>} H} 2}†pUJ„>Uk„>}KP| 28„8c|†pT€U >|Kx�8ç|ð@A€ÿ°|ø@@€H�#U >}2}†pU)„>| 28c|†pT€U >|Kx�8ç|ø@A€ÿÈH8¥ÿÿ„ÿü,A‚ÿô�¼ƒãx8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ŒdiffØ!ÿà�"¼€ T:9!ÿà|H.T V=JüÀ, @�(9aÿè}HY.�"Ø€ T:9 }+.È!ÿèN€ }JÐ}J¦p, A�<�"¼�)U):9aÿð<|V0| Y.�"Ø€ T:9 }+.È!ÿðN€ 9Jÿì�"¼€ T:9ÿø9 }(.�"Ø€ T:}gB, A�!*8|H0|A.H 8� È!ÿøN€ @Àìulp|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|�#x;ƒ€T:܇þÿüãûxKÿöÑ  �, A�8  è0e?ð|à@9 @��>ÿü8ê0  } 0}JxH\|à@9 @�…>ÿü4cÿõA‚<è0  } 0d?ð}x|à@;à@�ƒþÿü}*0  à0}JxH gè?ð}*Kx�"À€ T:9a8} .�"Ü€ T:}K.È!88!P€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ b2d|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ˜|Û3x|ú;xØ!8�"Ä€ T:9!8©.Ø!@�"à€ T:9!@é.8€KÿòÉ||x;ÜW >�LW½eA‚ d�L“áH,A‚p8aHKÿõ½|cyA‚,!# €L|H0�!H|Kx�€L|0�LH €H�€L�0ÿÿ|T þ|øT¼} x�|xH$8aLKÿõQ€L�8�;à8c ,A‚8ûÍ|� 5H(8ûÎ|�Wé:})ò€iÿüKÿô}Wà(4|�ƒãx8!h€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€`Œd2b|¦Ûáÿø“�ÿè“¡ÿì“Áÿð“áÿô�”!ÿ˜|}x|œ#x8�8Kÿüñÿà�ƒãx8�= a)ÿÿ|H@‚ØÛÁÐ�Bä€ T:9!Ð| .,ÿÿ@‚¸ÛÁØÛÁà9!à}+H.U)V=)}+�.ÈØØè€ T:9!è|i.ËÁèHðÛÁð€T:9!ð| .T ?@‚`ÛÁø€T:9!ø| .,@‚DÛÁ�vUk:9!| H.T V=)ÿðe `ÿÿ| ™.€T:9 ÿÿ}3.ËÁHxÛÁ€T:9!| .p A‚\,@‚ü0ü ð�Kÿï�ÿÞ(ÈôüA‚üH8~ã»x$ËxKÿóYÿà�ÈDüLb‚@ƒ´,A‚Ë¢Lÿàè�HÈÛÁ€T:9!| .,@‚ ÛÁ €T:9! | .T ?A‚HÛÁ(€T:9!(| .,@‚ ÛÁ0€T:9!0| .,A‚û\ËâLË¢\HLÈLü@€ Ëâ4Hÿÿòÿ øPH,ÿÿòÿ ø�,@‚ÿ øPHU€A,@‚ÿ½Ø*ÛÁ8ƒ¢Ì€T :9!8| H.TV<à|@‚àÿ€ð�Û�@9a@}*X.=)ü°}*Y.ËÁ@ü ð�Kÿî5ÿÝðzÛÁH€T :9!H| H.TV= |Ÿa)ÿÿ|H@@�lÛ�P9!P}+H.<ï`ÿÿ| @‚ Û�X€T:9!X| .,ÿÿA‚ø¸�6U):9a`<ï`ÿÿ| Y.€T:9 ÿÿ}+.ËÁ`Kÿú¼ÛÁh€T:9ah}+.=)P}+.ËÁhHp= @}|ñÖ}@U „>|ñÖUI„>}JU„>�fU`>UI>| } "}$†pUk„>U>}`X| "|†pT€U)>|Kx�8Æ|à@@�ÿ”€,@‚,8ÝH;ÿÿÿ8çÿü|0@@�€,A‚ÿè“ý£ëxdÛxKÿè9,A€¼;Þ8€8`8Ý8»�%8¥U >}@U)„>U@„>} U„>�fU`>UI>| } "}$†pUk„>U>}`X| "|†pT€U)>|Kx�8Æ|à@@�ÿœ8ÝWà:|æ|.,@‚(H;ÿÿÿ8çÿü|0@@�€,A‚ÿè“ýÃóx8!P€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€quorem|¦KÿDù‘¡ÿ„‘Áÿˆ‘áÿŒ’ÿ�’!ÿ”’Aÿ˜’aÿœ’�ÿ ’¡ÿ¤’Áÿ¨’áÿ¬“ÿ°“!ÿ´“Aÿ¸“aÿ¼“�ÿÀ“¡ÿÄ“ÁÿÈ“áÿÌ�”!ýhÿÀ�|²+x|Ï3x�áÀ}Cx‘!È8a8Kÿܵ|qx8apKÿÜ©|zx8aKÿÜ�|wx:€9À�"Ѐ ,@€KÿÜ=�"˜�i, A‚$�"œ�)‘+8|H0� 8° ÛÁP�bЀ T:9!P| .,@€88�ÛÁX�kUk:9AXÛÁ`9!`| H.T~| Q.ËÁXH 8�ÛÁh�bЀ T:9!h| .TV= ð|H@‚€8'�!À� ÛÁp�"è€ T:9!p| .,@‚8ÛÁx€ T:9!x| .T ?@‚ƒ‚ �aÈ, A‚X8HLƒ‚¤�!È, A‚@8� H4Èüü@‚08�AÀ� ƒ‚¨�aÈ, A‚ 8� ƒãxHXCÓxü ð�8Á€8á„Kÿéi|zxÛÁˆ�"Ѐ T :9!ˆ| H.TeA‚4ÛÁ�9a�ÛÁ˜9!˜| H.T>d?ð| Y.ËA�;Þü8HÌ�!„€€É;Þ2, @�LÛÁ �"Ѐ T:9! !~@}I.}JX0ÛÁ¨�"è€ T:9!¨9~ÿà| .|\0}JxH$ÛÁ°�"è€ T:9!°!~ | .| X0<C0È‘A�É¡ý­(üh�ظ�"Ѐ T:9a¸}+.=)þ}+.ËA¸;ÞûÍ8�Ȭÿú(É¢´È¼ÿÿz?àC0Ë¢xoÀ€�“áÉ¡ý­è(ÈÄÿíø:ü ø�H ±`|{xÈüü@€8o`€�“áÈüè(ÿŸ|&Tÿþ|Ð9;ÿÿk8} x}{x8�ø(A�(�"W`8| ®ü8ÿÿ@€|x9 ‘!ø€„¾7½ÿÿA€: ¸ëxH ~½Ð;,A€:mÛxÚH~»¨~Ð9   ||¸|�8;à,@� :Rÿü;à9@‘Aü(A�°�"ÌV@:| .|J| ¦N€ 0`8h9`ÿÿ‘að:Àÿÿ;À9àHh8�ü!o}kÔ}kþp}éX88 }/x}þ{x“ÁðÖóxH89 ‘!üÏÚ;ÞÖóx9^ÿÿ‘Að!^}JÔ}JþpÉP88 }>x;  �"œ8� (3@�$}+Kx�+9)W½<8|ð@@�ÿð‘+�"˜�i, A‚�"œ�)€ | @� ƒ¢˜€}KÿØy�"œ€iKÿ×Í�}�"˜‚i~|›x 8|| ø9A‚Ä;Àÿ@ð�“aô~Ù³x9@,@�h�"W`xé®}&ps«A‚W½>�",È ÿÞ$9@,A‚,�",s A‚9JWÀ8| ®ÿÿ2;Þ½q@‚ÿàÿÞø$HL|{ÑA‚D�"T`x| ®ÿÞ2|}&qA‚,�",s«A‚9JWÀ8| ®ÿÞ2;Þ½q@‚ÿàÈTÿž|&Tïþ�!ø})9A‚,,@�$�að, @�¼}v[x;{ÿÿÈÐÿÞ29J<C0ÈxmK€‘a�Ëáÿÿ(ÈØüºØÀ�"Ѐ T:9aÀ}+.=)üÀ}+.ËáÀ,@‚$ÈàÿÞ(üøA�´üøPüA€ H8€ü,A‚”�"8ÿÿT8È<}©®üh$ÿàø(;À?àC0ËbxË‚TË¢ÐH ÿÿrÿÞrü ð�H ©`l`€�“áÈüØ(ÿÞ(80˜;œüøA€|üð(üøA€ˆ;Þ|°A€ÿ¬Hœ�"8ÿÿT8| ®ÿÿ2;À?àC0Ë‚xË¢Ðü ð�H 1`l`€�“áÈüà(ÿÞ(80˜;œ|°@‚4É¢<üh*üA� ü ø(ü@€$Œÿÿ,0A‚ÿø;œHÔ;ÞÿÞrKÿÿ�~|›xÿÀÐ�ƒaô6Ëx€€|øTþ/›Oþã‚} &U)þ| H9A‚ü�"W`8é®Uéþ8ÿÿ|³xTþ}+9A‚$,A€Èàü2üLb‚AƒôHø;Àü>ø$HA`<C0Èxlk€‘a�É¡ý­(üh�üòÿÞ(80˜;œ|°@‚PÿÞð*üøA�@‚ôp`A‚ì9 0Œÿÿ,9@‚|˜@‚ÿð;{™3‰<9)™<;œH¸ÈÐÿÞ2ÈüüA‚¤;ÞKÿÿT~¹«x~ƒx�!ü, A‚„,A�(�A, A‚�!€;É3HH€„#À6H<;¶ÿÿ|èA€ ýøH¿è}­ê~ê;à~Þ³x,@€ 6È;À~µòò8a¨KÿÓ8€Kÿ؉|tx!9})ÔU)þ |ÔTþ}*9A‚4ÃxžÈOþã‚|&Tþ|ÐÉ8 x}>x~¾¨>ÈÀ,@�d�aü, A‚H,@�,~ƒ£xäûxKÿÚ¹|tx~#‹x~„£xEÓxKÿØaQÓx|zx¿€A‚ CÓx¤ëxH CÓx~ƒxKÿÚ}|zx~ã»x8€Kÿ×Á|wx, @�}¤kxKÿÚY|wx,A�tÛÁÈ�"è€ T:9!È| .,@‚LÛÁÐ�"Ѐ T :9!Ð| H.T ?@‚,ÛÁØ9!Ø| H.t ðA‚:µ;9`‘aH 8�, A‚(�79)ÿÿU):9w|kH.KÿÕµ;Ø ÃðH;ØWÞþ0ÿÿ|!> Ë8} x}~x,@� ;ÞÿüH,A�;Þ~µò9òò,@�CÓx~¤«xKÿÙÝ|zx,@�~ã»xÃxKÿÙÅ|wx€ø,A‚TCÓx~ä»xKÿÚé,@€@;{ÿÿCÓx8€ 8 KÿÒñ|zx€ü,A‚~ƒ£x8€ 8 KÿÒÑ|tx‚Áð8ÿÿ|³xTþ/’} &U)÷þ| H9A‚P,A€,~ã»x8€8 KÿÒ‘|wxCÓx~ä»xKÿÚ],A� }ûxøH81˜;œ;{H€ü,A‚<,@�~ƒ£x$ËxKÿØÙ|tx€,A‚48aàKÿÏý€”KÿÑ…|nx~„£xKÿÑ!~ƒ£x8€KÿØ¡|txH~Ž£x;À  ‘ƒèCÓx~ä»xKÿð];ã0CÓx}ÄsxKÿÙ©|}x~#‹x~ä»x~…£xKÿÚ |qx¨,@‚CÓx~$‹xKÿÙyH8`!#| | È9A‚LÛÁà€T:9!à| .p @‚0,9A‚¸8ÿÿ|ëx|þp9?ë8} x}x›üHÜ,A€0|&Tþ| È9A‚lÛÁè€T:9!è| .p @‚P,@�@CÓx8€Kÿב|zx~ä»xKÿØÅ,A�@‚sàA‚àûx;ÿ,9A‚›üH\,@�(,9@‚89˜;œH8˜H0›ü;œ|°A‚¬CÓx8€ 8 KÿÐq|zx| @‚ ~ƒ£x8€ 8 KÿÐU|tx~Ž£xH,}Ãsx8€ 8 KÿÐ9|nx~ƒ£x8€ 8 KÿÐ%|tx;ÞKÿþ4;ÀHCÓx8€ 8 KÿÐ|zx;ÞCÓx~ä»xKÿîm;ã0›ü;œ|°A€ÿÌCÓx8€KÿÖi|zx~ä»xKÿ×�,A�@‚HsàA‚@H |˜A‚ Œÿÿ,9A‚ÿð‰<9)™<H$;{81˜;“HŒÿÿ,0A‚ÿø;œ~#‹xKÿÎ~ã»xKÿÎ ,A‚40ÿÿ} q}À¢x1`ÿÿ}K}@Sx}*9A‚ }ÃsxKÿÍÝ~ƒ£xKÿÍÕCÓxKÿÍÍ8˜8�!À� �AÈ, A‚“Š~c›x8!˜€|¦�¡ÿ„�Áÿˆ�áÿŒ‚ÿ�‚!ÿ”‚Aÿ˜‚aÿœ‚�ÿ ‚¡ÿ¤‚Áÿ¨‚áÿ¬ƒÿ°ƒ!ÿ´ƒAÿ¸ƒaÿ¼ƒ�ÿÀƒ¡ÿăÁÿȃáÿÌKÿ>¤"A†ÀÌ_IO_dtoa�‚ì�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  Àdÿ€Âhü  ÈFü€ŽüÈfA˜$ÿÀLÿàLüÁ*ØÁÿøü%Ž@€,€aÿüN€ ÿÀLÿàŒüÁ*ØÁÿøü%ŽA� €aÿüN€ ýþ%Ž|¦“áÿü�”!ÿÄ?à€Aƒ A˜#ÿÿÿ€fHA€Aãûx€D0!<|¦ƒáÿüN€ #AÀ¬__itrunc�‚l�A€ €L| ¦N€  |¦�”!ÿÈ|kx�$€| @A€|ƒ#xUd>Kþ÷a`H�$™iUc>9)‘$8!8€|¦N€ A€X_IO_putc|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿÀ;!|Ç3x|ž#x|x|¬+y@‚x|ø@@�x|Ë3x8`ÿÿ|@A� ÿ|T8H<ÿ`ÿÿ| |Tø`�"ø}`,0| ®|*#` ,A‚\|çØ0ÿØ0  À0ÿxÞØ0H@,@‚8`8€H3ƒ|gx|ê;x8`ÿÿ|@A� ÿ|T 8H<ÿ`ÿÿ| |Tø` �"ø}@\0| ®|Z#` ,@‚ çøHÈ#[ |çØ0ëÔ0ÿØ0ÀÔ0ÿxÞØ0Tê„>Tè>}c[x}DSxH2ƒ|‰#x}c[x}DSxH3ƒ|cAÖU)€Wà„>})x| @@€}):| 8@A€| @@€}):}#H}#Kx}DSxH2ƒ|‹#x}#Kx}DSxH3ƒ|cAÖUi€Wà>}+x| @@€}k:| 8@A€| @@€}k:ãXTê„>Tè>ãûx}DSxH2ƒ|‰#xãûx}DSxH3ƒ|cAÖU)€WÀ„>})x| @@€}):| 8@A€| @@€}):}#H}#Kx}DSxH2ƒ|‹#x}#Kx}DSxH3ƒ|cAÖUi€WÀ>}+x| @@€}k:| 8@A€| @@€}k:ÃX,A‚˜ÝÜ0;€H„| ø@@�,A‚|ÝóxüûxHh}Šcx8`ÿÿ| @A� ÿ|T 8H<ÿ`ÿÿ| |Tø` �"ø}@\0| ®|Z#` ,@‚T}?`})I})Ð|ð8|}+yA‚ }gð},ø| ð||ÐàH}~[x,A‚ÔÝóxüûxHÀ#[ }ŒØ0|àÔ0}Œx|çØ0ëÔ0ÿØ0ÀÔ0ÿxÞØ0U†„>U…>}c[x|Ä3xH2ƒ|‰#x}c[x|Ä3xH3ƒ|hx}H)ÖU)€Wà„>})x| P@@€$9ÿÿ})b| `@A€| P@@€ 9ÿÿ})b}*H}#Kx|Ä3xH2ƒ|‹#x}#Kx|Ä3xH3ƒ}C)ÖUi€Wà>}+x| P@@€$8cÿÿ}kb| `@A€| P@@€ 8cÿÿ}kbU €})xêXU+>U)„>Tê>Tà„>} QÖ}kÖ}IQÖ})ÖU„>}k}kR}JX}JQ}JS¸< })P8|Px}*xU`„>|jUk€U>}KB|ø@A�$|iúx } I| ð||Ð}+9A‚ }gP},| P||Ð|`H}j[x,A‚4}jð}#ø| ð||ÐàHàÐ0}kÜ0|[xüÜ0“™“¹€a€�8!@€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€p __umoddi3|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿØ|Ç3x|ž#x|x|¬+y@‚X|ø@@�4|Ë3x8`ÿÿ|@A� ÿ|T8H<ÿ`ÿÿ| |Tø`�"ü}`,0| ®|*   ,A‚|ç(0ÿ(0  À0ÿxÞ(0Tè„>Tæ>ãûx}CxH2ƒ|‰#xãûx}CxH3ƒ|kx|‹1ÖU)€WÀ„>})x| @@€$9kÿÿ}):| 8@A€| @@€ 9kÿÿ}):}$H}#Kx}CxH2ƒ|Š#x}#Kx}CxH3ƒ|ƒ1ÖUI€WÀ>}*x| @@€ 8cÿÿ}J:| 8@A€| @@€8cÿÿU`€|xH(,@‚8`8€H3ƒ|gx|ê;x8`ÿÿ|@A� ÿ|T 8H<ÿ`ÿÿ| |Tø` �"ü}@\0| ®|Z   ,@‚çø8 Hä!% |ç(0ëL0ÿ(0ÀL0ÿxÞ(0Tæ„>Tå>}c[x|Ä3xH2ƒ|‰#x}c[x|Ä3xH3ƒ|hx}H)ÖU)€Wà„>})x| P@@€$9ÿÿ}):| 8@A€| P@@€ 9ÿÿ}):}*H}#Kx|Ä3xH2ƒ|‹#x}#Kx|Ä3xH3ƒ}C)ÖUi€Wà>}+x| P@@€$8cÿÿ}k:| 8@A€| P@@€ 8cÿÿ}k:U€|xêXTè„>Tæ>ãûx}CxH2ƒ|‰#xãûx}CxH3ƒ|kx|‹1ÖU)€WÀ„>})x| @@€$9kÿÿ}):| 8@A€| @@€ 9kÿÿ}):}$H}#Kx}CxH2ƒ|Š#x}#Kx}CxH3ƒ|ƒ1ÖUI€WÀ>}*x| @@€ 8cÿÿ}J:| 8@A€| @@€8cÿÿU`€|xH| ø@@� 8`Hü}Šcx8`ÿÿ| @A� ÿ|T 8H<ÿ`ÿÿ| |Tø` �"ü}@\0| ®|Z   ,@‚0}?`})I})Ð|ð8|}+y8`A‚€8`Hx!% }Œ(0|àL0}Œx|ç(0ëL0ÿ(0ÀL0ÿxÞ(0U†„>U…>}c[x|Ä3xH2ƒ|‰#x}c[x|Ä3xH3ƒ|kx} )ÖU)€Wà„>})x| @@@€$9kÿÿ})b| `@A€| @@@€ 9kÿÿ})b}(H}#Kx|Ä3xH2ƒ|Š#x}#Kx|Ä3xH3ƒ})ÖUI€Wà>}*x| @@@€$8cÿÿ}Jb| `@A€| @@@€ 8cÿÿ}JbU`€|xèPTi>Tk„>Tê>Tà„>} QÖ})Ö}KQÖ}kÖU„>})})R|êH|ç9|ç;¸< }k88|8x}gxU „>|U)€U>}IB|ø@A�$| úx!i}+I| ð||Ð}+9A‚8cÿÿ8 |}x|¼+xƒãx¤ëx8!(€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€À __udivdi3|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¨||x;À, @‚ ƒ¢H,,0@‚ ƒ¢H;à9!8|‰ù®7ÿÿÿ@€ÿø;¡8|¿+x,@�L�<H�)4ƒãx¤ëx8 �A€ €I|¦�iN€!€AÞ,@‚L;ÿÿð,A�ÿ¼,@�8�<H�)4ƒãx¤ëxåûx�A€ €I|¦�iN€!€AÞÃóx8!X€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€_IO_padn|¦’!ÿÄ’AÿÈ’aÿÌ’�ÿÐ’¡ÿÔ’ÁÿØ’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿh|»+x|Ý3x|ñ;x}Cx}+Kx}RSx‚aÐ;€Ut<: UvÇþ; 8ÿ»("A�$�"T:| .|J| ¦N€ ”¼”Œ¼;@Hx¹ëx;@kàç0ÿÿ|9?ë8} x}xHPk g0ÿÿ|pe`Eàþp| úx})})þpàH89)|KxUk¸}kþp~©X88 }5x; g;@kéç! }(Ik@1`ÿÿ}K}@Sx})81)ÿÿ})I}:Ð8EÓxæûx8áH9L9!PKÿÞÕ`|xx€PØ:áDHþp}Òx|@|þpé8Àx}?x,A‚Ä€aH,'A‚¸9cÿÿk©g0 ÿÿ}@I}ISxk F1@ÿÿ} }Cx}(9@‚(/‹ÿü} &U)ïþ‹øOþë‚|&Tþ}*yA‚h, 9@+@€ 9@-}kÐ}c[x<€ff`„fgH1|cp}`þp|`Ti8})})})X9)0�7ÿÿ|kx, A�ÿÄ8 0œÿÿ�WÿÿŸ7ÿÿ|kI}(þp} Jx})@})þpëH89)}Kx7 DA‚ 8�H€H,'@‚“ÁH;à:À,A‚ ;@H`,f@‚ úûx€H|@�H|ð@ÐH<,A‚ ^øH,�!HžH|&T÷þ|Ð^ø})øK8} x}zx@Ðø|þp|Ð9@‚€H|@�:À,@‚ €L| þp} x|H|þpp-HH,+@‚$€L0ÿÿ|p +|øp-}=xH €L|þp}x|@|þpp-` ,A‚8}:H}:Ê})²})ò€H|ð@�||éH €H,A�8é|à8H}'Kx‘8|&T÷þ|Ð}'ˆ|H8!?})ÔU)þj€|ÐTþ}(9A‚,,A‚$œúcÛx~d›xåûxKÿú `|ø@‚Ø,A‚ £ëxdÛxKÿî`,A€¸;œj€!|!?})ÔU)þ| H9A‚$œúcÛx~d›xåûxKÿù©`|ø@‚tƒ¡H,@�|èA€<œê�;H�)4cÛxÃx¥ëx�A€ €I|¦�iN€!€AH`œò�;H�)4cÛxÃxÅóx�A€ €I|¦�iN€!€A|ð@‚샡H¾èœêcÛx8€0¥ëxKÿøù`|è@‚Ä,A‚8`.dÛxKÿìñ`,A€¤;œ€H|@�è ðœê�;H�)4cÛx|˜¥ëx�A€ €I|¦�iN€!€A|èH¤8`0dÛxKÿì‰`,A€<;œ,A‚„8`.dÛxKÿìe`,A€;œƒ¡H½ÐœêcÛx8€0¥ëxKÿø!`|è@‚ìœò�;H�)4cÛxÃxÅóx�A€ €I|¦�iN€!€A|ð@‚°œÒcÛx8€0EÓxKÿ÷Å`|Ð@‚�,A‚@œÊ�;H�)4cÛx~ä»x%Ëx�A€ €I|¦�iN€!€A|È@‚Lj€!|!?})ÔU)þ| H9A‚$œúcÛx~d›xåûxKÿ÷A`|ø@‚ ƒãxH8`ÿÿ8!˜€|¦‚!ÿÄ‚AÿÈ‚aÿÌ‚�ÿЂ¡ÿÔ‚ÁÿØ‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Àø _IO_outfloat�‚�A€ €L| ¦N€  |¦}€&Kÿ9‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ˜|? x�€Kÿñ`�„|`x8Àã989@€9?@}e[x�X�ÿ8‘_<‘@‘ � �) H ;ÿÿÈH4€€�¦,A‚€€Kÿè�€A€¿„�%€ �HäH}`�€€¿„8Å�e9@98€9?X€âd‘P‘_T‘X�é� �) H ;ÿÿÈH8P8`�8ŸhHA`€¿„9@98€9?p…e€âh‘h|¦+x‘_l‘p�é� �) H ;ÿÿÈH08h€€�HU`€¿„�%€ �KÿÙ`Kÿ`€!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿ%€ "c’4__builtin_vec_delete|¦�”!ÿÈ�B\�*�A€ €I|¦�iN€!€A A€0 terminate__Fv|¦�”!ÿÈKÿÿ¥Oÿû‚ A€__default_unexpected__Fv”!ÿè�"`€ �i|x8!N€ @€set_terminate__FPFv_v”!ÿè�"d€ �i|x8!N€ @€set_unexpected__FPFv_v|¦�”!ÿÈ�Bh�*�A€ €I|¦�iN€!€A A€0unexpected__Fv|¦�”!ÿÈKÿå`€c8c8!8€|¦N€ A€,__cp_exception_info|¦�”!ÿÈKÿ‘`€c8!8€|¦N€ A€( __cp_eh_info|¦�”!ÿÈKÿI`�#8�i}#Kx� 9k‘i8!8€|¦N€ A€@__start_cp_handler|¦�”!ÿÈKÿ"]€A|cy@‚ KÿýuOÿû‚8!8€|¦N€ A€4 __eh_alloc|¦�”!ÿÈKÿä1€A8!8€|¦N€ A€$ __eh_free|¦“áÿü�”!ÿÀ|¥+y|xA‚¨,A‚ 8`HL,ÿÿ@‚ €H<�A€€D|¦�dN€!€A€Ÿ €¿ H%`|cyA‚�8!@€|¦ƒáÿüN€ A€Œ__cplus_type_matcher|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|zx|›#x|¼+x8`$Kÿþ}Oÿû‚�BÜ|}x9`89 “} °“�‘}“] ‘]±=“]‘}Kÿ-`€�“£8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€°__cp_push_exception|¦“áÿü�”!ÿÀ|xKÿ±`�?9)ÿÿ, ‘?@‚Ä€|| x@‚€,A‚¨, A‚8| ø�A‚$�#€ 8i,A‚|ø| x@‚ÿä, @‚ KÿúÝOÿû‚‘c�?, A‚(€8€�A€ €I|¦�iN€!€A€ H™`,@‚€ KÿýMOÿû‚ãûxKÿýAOÿû‚8!@€|¦ƒáÿüN€ A€__cp_pop_exception|¦�”!ÿÈKÿ�`€c,@‚ KÿúOÿû‚8�8!8€|¦N€ A€@__uncatch_exception|¦}€&Kÿ©‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ|? x��Ÿ Kÿ]`��èKÿ±`€€c,�à@�\€¿ �ä�¿ �? �_à€i€Š 9)‘? €ªH �`,A‚KÿþÅOÿû‚Kÿ-`€ä4ÿÿ�ä@‚ÿ¸€¿889@�a9?@…€âà‘8|¦+x‘_<�@�é‘i�) H ;ÿÿÈH9?8‘&Kÿù±Oÿû‚Kÿú•Oÿû‚�쀿8Å�889@�a9?X€âä�ß‘P‘_T�X�é‘i�) H�?9)‘?;ÿÿÈH¬�_à8P�ì�| XA‚l€‘à,@�\€¿ �ð�¿�?�_ì€i€Š 9)‘?€ªH i`,A‚Kÿý‘Oÿû‚Kÿù`€ð4ÿÿ�ð@‚ÿ¸H eOÿû‚�?8 �¿ø|H�ô@€ü�_ø�à�? U@:€«€Ÿô|i.H ý`,A‚¸€¿9h8ÿp�bè8À�E€8¿€�*‘t| x‘?p‘x8‹€ì�ê�h�+€�b‘?€�Å‘Œ���¿ˆ�?”�¤8`€ €¿è�h�%€ �KÿùEOÿû‚€¿9@9?¸€�e‘_´�9_8�ü‘°‘_¸‘ � �) H ;ÿÿÈH€¿8°9@�?��b쀿ü�?‘e€ 9 �"�a‘?Œ9?€�€‘_„‘�‘?ˆ�?”9_€€ ‘H�ü�Bì� €¿è�%€ ��€¿�+�i‘e�+€ � ‘_h�_ü�*�I�A€ €J|¦�jN€!€A|dx€¢è€üKÿùyOÿû‚Kÿé`€¿ø�?8¥|H�¿øA€þ Kÿõ‘Oÿû‚Kÿõ‰Oÿû‚€¿9@98€9?Ð�e€â‘È‘_Ì‘Ð�é� �) H ;ÿÿÈH4�?8È€ì� KÿùÍOÿû‚€¿�%€ �KÿQ`Kÿ‘` "c’È__check_eh_spec|¦}€&Kÿ¹‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þx|? xKÿu`� |dx8¿8�˜9@8ßP…D9€ �*�D‘?@|`x�¿H‘j€âð�? �ÿ8€ �!�b$�P‘‘\‘?`�ßX�?d€(8`�Ä�� �+€ � KÿöUOÿû‚€ß 9@9?ˆ€…f�,‘€|Ç3x98�œ‘_„‘ˆ‘ � �) H ;ÿÿÈHÜ�? 8€9@��bð�?œ€ß ‘i�a9€�"0‘`9P�P‘_T‘?\‘X�?d8ßP€(�È�?œ�Bð� �˜�+€ � €ß �&�i‘f�+€ � �œ‘_8�+�I�A€ €J|¦�jN€!€A|dx€¢ €œKÿö�Oÿû‚Kÿý`Kÿò½Oÿû‚ "c’,__throw_bad_cast|¦}€&Kÿ i‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þx|? xKÿ%`� |dx8¿8�˜9@8ßP…D9€4�*�D‘?@|`x�¿H‘j€âô�? �ÿ8€ �!�b8�P‘‘\‘?`�ßX�?d€<8`�Ä�� �+€ � KÿôOÿû‚€ß 9@9?ˆ€…f�@‘€|Ç3x98�œ‘_„‘ˆ‘ � �) H ;ÿÿÈHÜ�? 8€9@��bô�?œ€ß ‘i�a9€�"D‘`9P�P‘_T‘?\‘X�?d8ßP€<�È�?œ�Bô� �˜�+€ � €ß �&�i‘f�+€ � �œ‘_8�+�I�A€ €J|¦�jN€!€A|dx€¢4€œKÿô=Oÿû‚Kÿ­`KÿðmOÿû‚ "c’,__throw_bad_typeid|¦�”!ÿÈKÿ ‘`€c8,A‚€! | |x8!8€|¦N€ A€Duncaught_exception__Fv|¦�”!ÿÈ|cyA‚,�#�I�A€ €J|¦�jN€!€AHKÿýOÿû‚8`€c8!8€|¦N€ A€\what__C9exception|¦“áÿü�”!ÿÀƒâH€,@‚€‚PãûxH+e`ãûx8!@€|¦ƒáÿüN€ A€H__tf9exception[DS]”!ÿè€ø|ix� 8!N€ @€__9exception[DS]|¦�”!ÿÈ€üp‰�A‚ H>]`8!8€|¦N€ A€4_._9exception[DS]|¦“Áÿø“áÿü�”!ÿÀƒÂX€,@‚8ƒâL€,@‚€‚TãûxH*I`€‚\ÃóxåûxH(Õ`€bX8!@€|¦ƒÁÿøƒáÿüN€ A€t__tf13bad_exception[DS]|¦}€&Kÿ}‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ¸�a`Kÿ 9`€|ex8á8�!`98…€Â`|ì;x� �e9!@| +x�A‘a8‘<�á@�É‘I�) €a`€‘„|ix� �%€ �8!H€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kÿ¸ "C’@__13bad_exception[DS]|¦�”!ÿÈ€p‰�A‚ H;õ`8!8€|¦N€ A€4_._13bad_exception[DS]|¦�”!ÿÈ€c€„Kÿm`Tcþ8!8€|¦N€ A€0before__C9type_infoRC9type_info|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¨|~x|Ÿ#x|¹+xH$!`,A‚ #ËxHÈ,;@@‚ 9@H0�?8 èûx€‚t¨É€i€âx|ß2H ÑOÿû‚|jx, @‚ ,@‚ ;àH0�?èûx8 €‚€¨É€i€âx|ß2H �Oÿû‚|x,A‚8,@‚ 8`H,�>Èóx8 €‚€¨É€i€âx|Þ2H IOÿû‚,A‚øƒÿƒÃ,@‚ 8`H,�?8 èûx€‚ˆ¨É€i€âx|ß2H Oÿû‚,A‚ƒãƒ£ H; ,@‚ 8`H,�>8 Èóx€‚ˆ¨É€i€âx|Þ2H ±Oÿû‚,A‚ƒÃƒƒ H;€W©þW€þ| A�@W©¼W€¼| A�0ÃóxäûxH"m`,@‚H ¥Oÿû‚,|dxÃóx &H"E`,A‚<¨ A‚ä�?8 èûx€‚Œ¨É€i€âx|ß2H Oÿû‚,A‚´¨ @‚ 9@H0�?8 èûx€‚t¨É€i€âx|ß2H ÉOÿû‚|jx, A‚L�jÄóx&Ëx8 8à¨k9�+|j�A€ €I|¦�iN€!€A|zxH,¨ @‚ ;àH0�?èûx8 €‚€¨É€i€âx|ß2H =Oÿû‚|x,A‚è,@‚ ;ÀH0�>Èóx8 €‚€¨É€i€âx|Þ2HùOÿû‚|~x,A‚¤ƒÞW›þƒÿH¨,@‚ ;ÀH0�>Èóx8 €‚€¨É€i€âx|Þ2H¥Oÿû‚|~x,@‚ ;àH0�?èûx8 €‚€¨É€i€âx|ß2HiOÿû‚|x } ñ!| ù}+y@‚W€þƒÞ|Ѓÿ{8,@‚ 8`H,�?8 èûx€‚ˆ¨É€i€âx|ß2HOÿû‚,A‚ƒãƒ£ H; ,@‚ 8`H,�>8 Èóx€‚ˆ¨É€i€âx|Þ2H±Oÿû‚,A‚ƒÃƒƒ H;€W©þW€þ A™@W©¼W€¼‰A�0,@‚ A˜$Aœ ÃóxäûxH]`,A‚þx:ËxCÓx8!X€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€<__throw_type_match_rtti|¦�”!ÿÈ|ky@‚ 8`H,�+}h[x8 €‚„¨É€i€â||Ë2H©Oÿû‚1#ÿÿ| |x8!8€|¦N€ A€`__is_pointer__FPv|¦“¡ÿô“Áÿø“áÿü�”!ÿp|ž#x|½+x|xKÿU`�C8á8|`x€Â�|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚\�"”|`x9@“ß9‘?€�"ð�a�8‘A<‘!D‘aH��@�!L€ô�ˆ“¿��#€ �8!�€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€ô __rtti_ptr|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿp|ž#x|½+x|Ü3x|xKÿ9`�C8á8|`x€Âø|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚`�"˜|`x9@“ß9‘?€�"ü�a�8‘A<‘!D‘aH��@�!L€�ˆ“¿ �“Ÿ�#€ �8!�€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ __rtti_attr|¦“Áÿø“áÿü�”!ÿx|ž#x|xKÿ!`�C8á8|`x€Â|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚X�"œ|`x9@“ß9‘?€�"�a�8‘A<‘!D‘aH��@�!L€ �ˆ��#€ �8!ˆ€|¦ƒÁÿøƒáÿüN€ A€ä __rtti_func|¦“Áÿø“áÿü�”!ÿx|ž#x|xKþÿ`�C8á8|`x€Â|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚X�" |`x9@“ß9‘?€�"�a�8‘A<‘!D‘aH��@�!L€�ˆ��#€ �8!ˆ€|¦ƒÁÿøƒáÿüN€ A€ä __rtti_ptmf|¦“Áÿø“áÿü�”!ÿx|ž#x|xKþþ`�C8á8|`x€Â|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚X�"¤|`x9@“ß9‘?€�" �a�8‘A<‘!D‘aH��@�!L€$�ˆ��#€ �8!ˆ€|¦ƒÁÿøƒáÿüN€ A€ä __rtti_ptmd|¦“Áÿø“áÿü�”!ÿx|ž#x|xKþý `�C8á8|`x€Â(|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚X�"¨|`x9@“ß9‘?€�",�a�8‘A<‘!D‘aH��@�!L€0�ˆ��#€ �8!ˆ€|¦ƒÁÿøƒáÿüN€ A€ä __rtti_array|¦’ÁÿØ’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ |™#x|¸+x|×3x|ú;x}Cx�A€€C|¦�cN€!€A||xƒ¼¨;½œ�A€€Y|¦�yN€!€A|{x�A€€Z|¦�zN€!€A�=dÛx|gxÃxƒãx~æ»x~ȳx�A€ €I|¦�iN€!€A8!`€|¦‚ÁÿØ‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ $__dynamic_cast[DS]|¦�”!ÿ€KþúÅ`€â4|`x€Ç,@‚¨�C9a8�"8}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b<|`x9@�"¬8ã‘h‘(€�"@�a�8‘A<‘!D‘aH�¡@�!L€D�§��#€ �€b48!€€|¦N€ A€à __tfv[DS]|¦�”!ÿ€KþùÉ`€âˆ|`x€Ç,@‚¨�C9a8�"Œ}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b�|`x9@�"°8ã‘h‘(€�"”�a�8‘A<‘!D‘aH�¡@�!L€H�§��#€ �€bˆ8!€€|¦N€ A€à__tfx|¦�”!ÿ€KþøÑ`€â˜|`x€Ç,@‚¨�C9a8�"œ}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b |`x9@�"´8ã‘h‘(€�"¤�a�8‘A<‘!D‘aH�¡@�!L€L�§��#€ �€b˜8!€€|¦N€ A€à__tfl|¦�”!ÿ€Kþ÷Ù`€â¨|`x€Ç,@‚¨�C9a8�"¬}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b°|`x9@�"¸8ã‘h‘(€�"´�a�8‘A<‘!D‘aH�¡@�!L€P�§��#€ �€b¨8!€€|¦N€ A€à__tfi|¦�”!ÿ€Kþöá`€â¸|`x€Ç,@‚¨�C9a8�"¼}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�bÀ|`x9@�"¼8ã‘h‘(€�"Ä�a�8‘A<‘!D‘aH�¡@�!L€T�§��#€ �€b¸8!€€|¦N€ A€à__tfs|¦�”!ÿ€Kþõé`€âÈ|`x€Ç,@‚¨�C9a8�"Ì}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�bÐ|`x9@�"À8ã‘h‘(€�"Ô�a�8‘A<‘!D‘aH�¡@�!L€X�§��#€ �€bÈ8!€€|¦N€ A€à__tfb|¦�”!ÿ€Kþôñ`€âØ|`x€Ç,@‚¨�C9a8�"Ü}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�bà|`x9@�"Ä8ã‘h‘(€�"ä�a�8‘A<‘!D‘aH�¡@�!L€\�§��#€ �€bØ8!€€|¦N€ A€à__tfc|¦�”!ÿ€Kþóù`€âè|`x€Ç,@‚¨�C9a8�"ì}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�bð|`x9@�"È8ã‘h‘(€�"ô�a�8‘A<‘!D‘aH�¡@�!L€`�§��#€ �€bè8!€€|¦N€ A€à__tfw|¦�”!ÿ€Kþó`€âø|`x€Ç,@‚¨�C9a8�"ü}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b|`x9@�"Ì8ã‘h‘(€�"�a�8‘A<‘!D‘aH�¡@�!L€d�§��#€ �€bø8!€€|¦N€ A€à__tfr|¦�”!ÿ€Kþò `€â|`x€Ç,@‚¨�C9a8�" }e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b|`x9@�"Ð8ã‘h‘(€�"�a�8‘A<‘!D‘aH�¡@�!L€h�§��#€ �€b8!€€|¦N€ A€à__tfd|¦�”!ÿ€Kþñ`€â|`x€Ç,@‚¨�C9a8�"}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b |`x9@�"Ô8ã‘h‘(€�"$�a�8‘A<‘!D‘aH�¡@�!L€l�§��#€ �€b8!€€|¦N€ A€à__tff|¦�”!ÿ€Kþð`€â(|`x€Ç,@‚¨�C9a8�",}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b0|`x9@�"Ø8ã‘h‘(€�"4�a�8‘A<‘!D‘aH�¡@�!L€p�§��#€ �€b(8!€€|¦N€ A€à__tfUi|¦�”!ÿ€Kþï!`€â8|`x€Ç,@‚¨�C9a8�"<}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b@|`x9@�"Ü8ã‘h‘(€�"D�a�8‘A<‘!D‘aH�¡@�!L€t�§��#€ �€b88!€€|¦N€ A€à__tfUl|¦�”!ÿ€Kþî)`€âH|`x€Ç,@‚¨�C9a8�"L}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�bP|`x9@�"à8ã‘h‘(€�"T�a�8‘A<‘!D‘aH�¡@�!L€x�§��#€ �€bH8!€€|¦N€ A€à__tfUx|¦�”!ÿ€Kþí1`€âX|`x€Ç,@‚¨�C9a8�"\}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b`|`x9@�"ä8ã‘h‘(€�"d�a�8‘A<‘!D‘aH�¡@�!L€|�§��#€ �€bX8!€€|¦N€ A€à__tfUs|¦�”!ÿ€Kþì9`€âh|`x€Ç,@‚¨�C9a8�"l}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�bp|`x9@�"è8ã‘h‘(€�"t�a�8‘A<‘!D‘aH�¡@�!L€€�§��#€ �€bh8!€€|¦N€ A€à__tfUc|¦�”!ÿ€KþëA`€âx|`x€Ç,@‚¨�C9a8�"|}e[x|ä;x€9‘A8�Á<‘!D�H‘a@�!L�¨�#|è;y€ �A‚\�b€|`x9@�"ì8ã‘h‘(€�"„�a�8‘A<‘!D‘aH�¡@�!L€„�§��#€ �€bx8!€€|¦N€ A€à__tfSc|¦�”!ÿÈHÕ`8!8€|¦N€ A€$_._19__pointer_type_info[DS]|¦“áÿü�”!ÿÀƒâˆ€,@‚ H]`€‚Œãûx€¢�H­`ãûx8!@€|¦ƒáÿüN€ A€T__tf19__pointer_type_info[DS]|¦�”!ÿÈHù`8!8€|¦N€ A€$_._16__attr_type_info[DS]|¦“áÿü�”!ÿÀƒâ¬€,@‚ H …`€‚°ãûx€¢”HÕ`ãûx8!@€|¦ƒáÿüN€ A€T__tf16__attr_type_info[DS]|¦�”!ÿÈH%`8!8€|¦N€ A€$_._19__builtin_type_info[DS]|¦“áÿü�”!ÿÀƒâ´€,@‚ H ­`€‚¸ãûx€¢˜Hý`ãûx8!@€|¦ƒáÿüN€ A€T__tf19__builtin_type_info[DS]|¦�”!ÿÈHI`8!8€|¦N€ A€$_._16__func_type_info[DS]|¦“áÿü�”!ÿÀƒâ¼€,@‚ H Õ`€‚Àãûx€¢œH%`ãûx8!@€|¦ƒáÿüN€ A€T__tf16__func_type_info[DS]|¦�”!ÿÈHu`8!8€|¦N€ A€$_._16__ptmf_type_info[DS]|¦“áÿü�”!ÿÀƒâÄ€,@‚ H `€‚Èãûx€¢ HQ`ãûx8!@€|¦ƒáÿüN€ A€T__tf16__ptmf_type_info[DS]|¦�”!ÿÈH¡`8!8€|¦N€ A€$_._16__ptmd_type_info[DS]|¦“áÿü�”!ÿÀƒâÌ€,@‚ H -`€‚Ðãûx€¢¤H}`ãûx8!@€|¦ƒáÿüN€ A€T__tf16__ptmd_type_info[DS]|¦�”!ÿÈHÍ`8!8€|¦N€ A€$_._17__array_type_info[DS]|¦“áÿü�”!ÿÀƒâÔ€,@‚ H Y`€‚Øãûx€¢¨H©`ãûx8!@€|¦ƒáÿüN€ A€T__tf17__array_type_info[DS]|¦�”!ÿÈ€lp‰�A‚ H5`8!8€|¦N€ A€4_._9type_info[DS]|¦“áÿü�”!ÿÀ|;àA‚€c€„Kþê¡`,@‚;àãûx8!@€|¦ƒáÿüN€ A€P!__eq__C9type_infoRC9type_info[DS]|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ|ž#x|¼+x|Ý3x|xKþãe`�C8á8|`x€Â˜|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚¬�bp|`x|ix“ß9€‘9@8À�!�€�bœ‘H‘‘aŒ‘!��!”€ |gx9@‘��#�b¸€ ”�!�°‘H4‘¸‘a¼‘!À�!Ä8°�"¼�“¿ ‘?“Ÿ�#€ �8!ð€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€P __rtti_class|¦“¡ÿô“Áÿø“áÿü�”!ÿ|ž#x|½+x|xKþáù`�C8á8|`x€ÂÄ|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚¨�bt|`x|ix“ß9€‘9@8À�!�€�bÈ‘H‘‘aŒ‘!��!”€¤|gx9@‘��#�bÌ€ ”�!�°‘H4‘¸‘a¼‘!À�!Ä8°�bÐ�“¿‘�#€ �8!ð€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€@ __rtti_si|¦“Áÿø“áÿü�”!ÿx|ž#x|xKþà¡`�C8á8|`x€ÂØ|ix9`�8£|ä;x‘A8‘a<�ÁD‘H�á@�!L�…,�#€ �A‚X�"x|`x9@“ß9‘?€�"Ü�a�8‘A<‘!D‘aH��@�!L€¨�ˆ��#€ �8!ˆ€|¦ƒÁÿøƒáÿüN€ A€ä __rtti_user|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|Ý3xKÿû�Oÿû‚|`þp|x|c|cþp£88!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€T7dcast__C16__user_type_infoRC9type_infoiPvPC9type_infoT3|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|}x|Ÿ#x|¼+x|Þ3x|û;x}CxKÿú½Oÿû‚,@‚Lƒ½äûx…ãxÆóxgÛx�=HÓx¨i�I|}�A€ €J|¦�jN€!€AHÃóx8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€À5dcast__C14__si_type_infoRC9type_infoiPvPC9type_infoT3|¦}€&’¡ÿÔ’ÁÿØ’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�‘�”!ÿ˜|wx|œ#x|µ+x|Ö3x|ú;x}CxKÿù•Oÿû‚,A‚ ~óxH„€ ;À;`|@@€l.; �wWj8A’}*Z€ T¾,@‚0}9Z€ pT èþöJA‚öH.ªX.æûx„ãx~¥«xGÓx�=Ãx¨i�I|}�A€ €J|¦�jN€!€A|yA‚È,A‚°|øA‚¸,A‚¨�|DÓx8 Æóx8à¨k9�+||�A€ €I|¦�iN€!€A8 æûx�||}xDÓx8à9¨k�+||�A€ €I|¦�iN€!€A|A‚|ÀA‚|À@‚ þûxH 8`H€ ;{;9|@A€þ¤Ãóx8!h€��|¦‚¡ÿÔ‚ÁÿØ‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿü}€� N€ C€ 48dcast__C17__class_type_infoRC9type_infoiPvPC9type_infoT3|¦“áÿü�”!ÿÀƒâà€,@‚€‚ðãûxKÿú�Oÿû‚ãûx8!@€|¦ƒáÿüN€ A€H__tf9type_info[DS]”!ÿè€||ix�‰� 8!N€ @€__9type_infoPCc[DS]”!ÿè€c8!N€ @€name__C9type_info[DS]|¦�”!ÿÈKÿömOÿû‚hc8!8€|¦N€ A€(__ne__C9type_infoRC9type_info|¦“áÿü�”!ÿÀƒâ€,@‚ KÿÍÍ`€‚ãûx€¢Kÿ÷åOÿû‚ãûx8!@€|¦ƒáÿüN€ A€T__tf8bad_cast[DS]|¦}€&Kþ×™‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ¸�a`KþÙU`€|ex8á8�!`98…€Â |ì;x� �e9!@| +x�A‘a8‘<�á@�É‘I�) €a`€$‘„|ix� �%€ �8!H€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� KþàÔ "C’@ __8bad_cast|¦�”!ÿÈ€p‰�A‚ H `8!8€|¦N€ A€4_._8bad_cast[DS]|¦“áÿü�”!ÿÀƒâ(€,@‚ KÿË•`€‚,ãûx€¢ Kÿõ­Oÿû‚ãûx8!@€|¦ƒáÿüN€ A€T__tf10bad_typeid[DS]|¦}€&KþÕ]‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ¸�a`Kþ×`€|ex8á8�!`98…€Â0|ì;x� �e9!@| +x�A‘a8‘<�á@�É‘I�) €a`€4‘„|ix� �%€ �8!H€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� KþÞ˜ "C’@__10bad_typeid|¦�”!ÿÈ€p‰�A‚ HÝ`8!8€|¦N€ A€4_._10bad_typeid[DS]|¦�”!ÿÈKÿñ=Oÿû‚8!8€|¦N€ A€$_._16__user_type_info[DS]|¦“Áÿø“áÿü�”!ÿÀƒÂ8€,@‚8ƒâä€,@‚€‚ôãûxKÿôqOÿû‚€‚DÃóxåûxKÿòýOÿû‚€b88!@€|¦ƒÁÿøƒáÿüN€ A€t__tf16__user_type_info[DS]|¦}€&KþÒ¥‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ¸�a`��dKþÔ]`�ad|ex8Á8�!`8à8…€€|Ì3x‘i� �e9!@| +x�A�P‘a8�á<�Á@‘ ‘I�) €a`€¬‘„|ix� �%€ �8!H€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� KþÛÔ "C’L__16__user_type_infoPCc[DS]|¦�”!ÿÈKÿîÉOÿû‚8!8€|¦N€ A€$_._14__si_type_info[DS]|¦“Áÿø“áÿü�”!ÿÀ�"T€ ,@‚\ƒÂ<€,@‚8ƒâè€,@‚€‚øãûxKÿñíOÿû‚€‚HÃóxåûxKÿðyOÿû‚€bT€‚X€¢ˆ `˜ H(�>ˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ Kÿñ`9`, A‚¤�>8¿ÿÿ„ãx¦ëx8àÿÿƒé98ãûxHU`€8�~,ÿÿA‚ãûxKÿJ¹`,ÿÿ�a8@‚,€�~0ÿÿ|‰+T¾`})x™+H4|èA‚,�>ãûxˆ `˜ Kþd1`H 8ÿÿ�8€89`�>|è}|I®@‚�>9)‘>Ãóx8!P€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€�getline__7istreamPcic[DS]|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|¾+y|x8|œ#x|Ý3x�A��?ˆ `˜ H´�?ˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ Kÿ1`9`, A‚P�?8¾ÿÿ¦ëx„ãx8àÿÿ€i98H™`,�@‚ €8,ÿÿ@‚�?ˆ `˜ �?8ãûx|I®8!P€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€get__7istreamPcic[DS]|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ý |º+x|x|�#x;!88�88 FÓx8àÿÿ(ËxHÁ`€8||x,ÿÿA‚ãûxKÿH%`�a8€8ƒ},ÿÿÛâ“ÝA‚L|ÐA‚D8ãûx�¤ëxEÓxKÿÿY|yA‚d|Ú…ãx8�8KþÃ)`ˆ|ñ®HD€}8cHU`|yA‚,�=8…ãx8�8|I®€}|||KþÂÝ`ãûx8!`€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€D_sb_readline__FP9streambufRlc|¦“¡ÿô“Áÿø“áÿü�”!ÿ°|x|ž#x�?|½+xˆ ,A‚`9`˜ H0€i,A‚ �)�i€ |X@‚ Kÿ™`9`, A‚„�?8¥ëx�88�8ƒ©£ëxKÿýõOÿû‚|kþp�!8}`x�~|X|þp})8‘?€p A‚<�?ˆ `˜ �, @‚ �?ˆ `˜ H ‘‘~ãûx8!P€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€ gets__7istreamPPcc|¦�”!ÿÈ9H=Oÿû‚8!8€|¦N€ A€( _IO_getline|¦}€&’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�‘�”!ÿ |{x|—#x|¼+x|Ù3x|ø;x~ý»x}CyA‚ 8�,A‚,.�;€àHA�hcÛxKþŠi`|dx,ÿÿ@‚,A‚ø�šHð|È@‚(@‘›=;½HØ@�ÔcÛxKþ“õ`HĘ�;½;œÿÿH¬|ø|é8€x}?x€{$ËxåûxHý€A|~yA‚T—è€àðA�$;Þ8ÿÿ|Ãx|þp9?ë8} x}x£ëx€›åûxKþ¿‘`“Û||úH8£ëx€›åûxKþ¿q`€|�½úŸà,@‚þà|wè8!`€��|¦‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿü}€� N€ C€ Ð_IO_getline_info[DS]�‚Ä�A€ €L| ¦N€  |¦}€&KþÀi‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ�|? x�ˆKþÂ!`�ˆ|`x8Àã989@€9?@}e[x�È�ÿ8‘_<‘@‘ � �) H ;ÿÿÈH(�¦€ˆH•`€¿ˆ�%€ �HðKÿ¦¹`�„€¿ˆ8Å�e9@98€9?X€â ‘P‘_T‘X�é� �) H ;ÿÿÈH(8P�Ha`�€8Ÿ€8`Kÿªq`€¿ˆ9@98€9?p…e€â$‘h|¦+x‘_l‘p�é� �) H ;ÿÿÈH08h€„�Kÿ¨…`€¿ˆ�%€ �Kþà `Kþ¿I`€!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� KþȰ "c’4__builtin_vec_new|¦}€&Kþ¾ ‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ |? x�øKþ¿Å`�ø�ä8Àã989@€9?@�Ì�ÿ8‘_<‘@‘ � �) H ;ÿÿÈH€ø8ÿ8�æ|þp�ø|©x})(})þp8 } H8})x‘?ø}#KxH �"Ð�), ‘?è@‚h€¿ø9P9X�"ø}c[x…E|§+x�ÿì€ ‘?\�X‘`‘ HõOÿû‚8`Kÿ¤]`€¿ø989?p€ÿè€�A�bü�ð�h�ÿl‘p‘i‘I�) H ;ÿÿÈH$�ì8h9€�"9@� €¿ð€ø‘%�?ø�b€ 8é�!�€‘H‘Œ‘?�‘ˆ�?”‘�ð€ �B� €¿ä�%€ �€ÿø�'�i‘g�+€ � �ð‘_P�(�I�A€ €J|¦�jN€!€A|dx€¢ø€ðKÿ¤™`KþÀ `€¿è�A€å€E|è¦�eN€!€A€øKþÅ}€A|cyA‚þX€¿ø�%€ �HøKÿ �`Kÿ¢…`�ô€¿ø8Å�e9@98€9?¸€â‘°‘_´‘¸�é� �) H ;ÿÿÈH(8°�H-`�à8Ÿà8`Kÿ¦=`€¿ø9@98€9?Ð…e€â‘È|¦+x‘_Ì‘Ð�é� �) H ;ÿÿÈH08È€ô�Kÿ¤Q`€¿ø�%€ �Kþ¾Õ`Kþ»`€!€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� KþÄ| "c’ __builtin_new|¦}€&Kþ¹Ý‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ¸�a`Kþ»™`€|ex8á8�!`98…€Â|ì;x� �e9!@| +x�A‘a8‘<�á@�É‘I�) €a`€‘„|ix� �%€ �8!H€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kþà "C’@__9bad_alloc[DS]”!ÿè�"Ô€ �i|x8!N€ @€set_new_handler__FPFv_v|¦�”!ÿÈ€Øp‰�A‚ Kÿí `8!8€|¦N€ A€4_._9bad_alloc[DS]|¦“áÿü�”!ÿÀƒâÜ€,@‚ Kÿ­‰`€‚àãûx€¢äKÿס`ãûx8!@€|¦ƒáÿüN€ A€T__tf9bad_alloc[DS]|¦}€&Kþ·U‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ Kþ¹`|ex€á98�e9@9!@€Âè| +x8…‘a8}Cx‘A<‘@�É�é�) �d�%€bì€ �8!`€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� KþÀ¬ "C’$what__C9bad_alloc[DS]|¦}€&Kþ¶‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ ��|Kþ·Á`|ex€á98�e9@9!@€Âð| +x8…‘a8}Cx‘A<‘@�É�é�) �d�%€a|€ �8!`€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kþ¿X "C’( __nw__FUlPv|¦}€&Kþ´¹‘¡ÿ$‘Áÿ(‘áÿ,’ÿ0’!ÿ4’Aÿ8’aÿ<’�ÿ@’¡ÿD’ÁÿH’áÿL“ÿP“!ÿT“AÿX“aÿ\“�ÿ`“¡ÿd“Áÿh“áÿl�‘�”!þ ��|Kþ¶u`|ex€á98�e9@9!@€Âô| +x8…‘a8}Cx‘A<‘@�É�é�) �d�%€a|€ �8!`€��|¦�¡ÿ$�Áÿ(�áÿ,‚ÿ0‚!ÿ4‚Aÿ8‚aÿ<‚�ÿ@‚¡ÿD‚ÁÿH‚áÿLƒÿPƒ!ÿTƒAÿXƒaÿ\ƒ�ÿ`ƒ¡ÿdƒÁÿhƒáÿl}ƒ� Kþ¾ "C’( __vn__FUlPv”!ÿè|A‚d�$8À€ã€‰,@‚8˜H˜Ç89 �‡9@ 9™'9`�DZG‘ ‘g���8!N€ @€t+__as__22_IO_istream_withassignR7istream[DS]”!ÿè|A‚`�$8À€ã€‰,@‚8˜H˜Ç99 �‡9` 9@‘8™'�DZg‘G �‘8!N€ @€p+__as__22_IO_ostream_withassignR7ostream[DS]”!ÿè�"ì|ex€ |A‚`,A‚ €âð�ô�bø€ü‘€Â H€âð� �bø€ ‘€Â �" � �B �É�Ê�"ì€i�©8!N€ @€|sync_with_stdio__3iosi[DS]�‚ \�A€ €L| ¦N€  �‚ x�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �‚ $�A€ €L| ¦N€  �‚ (�A€ €L| ¦N€  �‚ ,�A€ €L| ¦N€  |¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|x€� �?,‹HA‚ 8`H €�?|T'©X@‚T�?8 €})J8‰‘?Hå€A,�A‚t€}cê}#â£X‘?|‘ T'A‚ÿ´€Ÿ €|A‚…ãxKþ­ù`€|â�€Åóx8À€ŸH�€A|~x,ÿÿ@‚ 8`ÿÿHd } ñ1|ÿÿ| á}+9A‚$�?ˆ ÿÿ, A‚;À8 “ߘ �9Ãóx�_}+â‘ | ò‘?�} ñ®8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€|fill_buffer__FP14st_line_buffer|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x|ž#x8`$8€HÉ€A|yA‚,¨ž¦ëxãûx8 HA,ãûxA‚HÁ€A8`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€€batch_readline_init__FUlP4FILE|¦“áÿü�”!ÿ¸|x8�8HÅ|jy@‚ 8`H<�a8, A‚}+Rˆ ÿÿ, @‚ 8 ÿÿ�8€89 }CSx� }*®8!H€|¦ƒáÿüN€ A€x"batch_readline__FP14st_line_buffer|¦“áÿü�”!ÿÀ|yA‚€H™€AãûxH�€A8!@€|¦ƒáÿüN€ A€D&batch_readline_end__FP14st_line_buffer|¦“Áÿø“áÿü�”!ÿÀ|~x8€8`$Hí€A|y8`A‚(ÄóxãûxHU,ãûxA‚Hé€A8`8!@€|¦ƒÁÿøƒáÿüN€ A€pbatch_readline_command__FPc|¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|x|½+x|œ#x|Û3x8 $8€Kþ¶€A“Ÿ8}8€““¿H€A|ix, ‘?A‚‘?88`‘?˜ H8`8!P€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€¬)init_line_buffer__FP14st_line_bufferiUlUl|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|~x|�#x8€8 $Kþµ=€A£ëxKÿ�©€A|x8€8H5€A,�~�~ �~A‚T¤ëxåûxKþ©!`�~8 9@98`| ù®�>}?J™I�~‘}kú‘9k‘~H8`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Ô2init_line_buffer_from_string__FP14st_line_bufferPc|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€� �_�‰*H�*i })Ð|ÐU)þTþ|H9@‚ÿä| X@‚<€ �?|P|H@@€$ãûxKÿùI|cyA‚ ,ÿÿ@‚ÿ 8`H,9Jÿÿ�?8 � 9)ÿÿ�})P}+H‘>€ 8!@€|¦ƒÁÿøƒáÿüN€ A€Ð'intern_read_line__FP14st_line_bufferPUl�‚ <�A€ €L| ¦N€  �‚ @�A€ €L| ¦N€  �‚ D�A€ €L| ¦N€  �‚ H�A€ €L| ¦N€  |¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|›#x|~x�;, A‚ø€�~@J9:U=8| è@@€�ƒž ,A‚,€~¤ëx8 Kÿþõ€A|yA‚`“þ“¾H\£ëx8€Kÿÿ!€A|yA‚<€¾,A‚€žãûxKþ¦ `€9 Ÿ®“þ“¾‘> H 9`H�>89`| Ñ®, A‚ 8`H4€€~€›€»|`Kþ¥­`�;€|J�8`8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Xappend__6StringRC6String|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¨|»+y|~x|™#x@‚ #ËxKÿ‰M€A|{y@‚ 8`Hø€�~@Ú9:U=8| è@@€�ƒž ,A‚,€~¤ëx8 KÿýQ€A|yA‚`“þ“¾H\£ëx8€Kÿý}€A|yA‚<€¾,A‚€žãûxKþ¤i`€9 Ÿ®“þ“¾‘> H 9`H�>89`| Ñ®, @‚4€$ËxeÛx€~|`Kþ¤`€8`|Ú�H8`8!X€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€tappend__6StringPCcUi|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¨|~x|º+x€|›#x�~ Ò99U=8| è@@€�ƒž ,A‚,€~¤ëx8 KÿûÑ€A|yA‚`“þ“¾H\£ëx8€Kÿûý€A|yA‚<€¾,A‚€žãûxKþ¢é`€9 Ÿ®“þ“¾‘> H 9`H�>89`| É®, A‚ 8`H䀛�;|Ò|H@A�,€EÓx€~|`Kþ¢y`€|Ò�H˜€cÛxEÓx€ž�; |€"�A€ €I|¦�iN€!€A,A‚\ƒþ€|@@€ÿt€~äûx8 Kÿú©€A|cy@‚$€~Kÿû €AÃóxäûxHYOÿû‚Kÿÿ8“þ�~Kÿÿ,€8`|Ò�8!X€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€append__6StringP11st_io_cacheUi|¦’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ |~x|¹+x�>|š#x|Ø3x|Ê€¸|H@y(A�l,@€L,A‚€~€˜|cÒKþ å`€~€¾|cÒ€|º(|ƒÊ|¹(|cKþ ½`HA‚ì~éÚ�>8T8| è@@€�ƒž ,A‚,€~¤ëx8 Kÿù€A|yA‚`“þ“¾H\£ëx8€KÿùI€A|yA‚<€¾,A‚€žãûxKþ 5`€9 Ÿ®“þ“¾‘> H 9`H�>89`| ¹®, A‚ 8`HX€€~|º|c|¹(|dx|cÚH"€A€¸,A‚€~€˜|cÒKþŸ­`€|Ú�8`8!`€|¦‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ øreplace__6StringUiUiRC6String€£€Ä€c|0||¸€„|Éx| 8|Kx,|¨(|È09ÿÿA‚<�b d�+€é‰C‰d8c}'P®8„|X®| @‚T,9ÿÿ@‚ÿØ,A‚h}D2|PA‚”�b d�+�i‰$})Zˆ p A‚,8„|P@‚ÿäHd‰cÿÿ‰$ÿÿ|X®|gH®|cN€ 8`ÿÿN€ 8`N€ }C*|PA‚0�b d�+�i‰#})Zˆ p A‚ÿÐ8c|P@‚ÿä8`N€ @ sortcmp__FPC6StringT0|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|œ#x|º+x�||~x| Ð@@€|ƒ¼ /�@ž } ñ€òx!@| }*yA‚œ8T8| ð@@€|Až,€|Äóx8 Kÿõý€A|yA‚$“ü“ÜHPÃóx8€Kÿö)€A|yA‚€¼,A‚€œãûxKþ�`€9 ¿®“ü“Ü‘< �<8| Ñ®H¼8�>T8| è@@€�ƒ~ ,A‚,€~¤ëx8 KÿõY€A|yA‚`“þ“¾H\£ëx8€Kÿõ…€A|yA‚<€¾,A‚€žãûxKþœq`€9 ®“þ“¾‘> H 9`H�>89`| Ñ®, A‚ ƒãxH@€} Ð})I})K¸KHx|H8|[x,�¾A‚€œ€~Kþ›õ`Ãóx8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ "copy_if_not_alloced__FP6StringT0Ui|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¨|¿+x|Û3x|Ø|~x|œ#x|ù;x8`ÿÿA‚\ƒ¢ pºëx‰‰Ui>}j[x€Â x| @A‚¤ˆ| A‚¨€‚ h}Cx|Å3x| È@‚ 9?} Úx0ÿÿ|})xà8|Kx|àA‚,�d‰�+;ÿ‰~}I@®;Þ| X®| A‚ 8`HÐ|ØA‚¼‰8`Ui>}j[x| 8A‚ˆ| @‚ÿ|‰&U@>|H@‚8�b x|àA‚ˆ;ÿ;Þ|Ø@@€‰?ˆ | A‚ÿÜ|ØA‚T‰?ˆ| @‚<€â p;ÿ� xH;ÿŸØAž<ˆ‰'T >| x| HA‚ÿàˆ| @‚|àA‚ì;ÞKÿÿÄ@ž 8`HôžàAžÐU]>|È@‚8|ØA‚ |x‹¿�" h;ÿƒB p�i�Kªè®AžD� h‰^�(�i| P®|èA‚(;Þ|àA‚�H‰~�*| X®|è@‚ÿàÀóx8`ÿÿ|à;ÞA‚\Ãóx„ãxåûxfÛx'ËxKÿý™|cy@�<|àO€A‚‰?ˆ| @‚ÿp8`ÿÿH|Ø@‚ý´Àâx1 ÿÿ|i8!X€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Øwild_case_compare__FPCcN30c|¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¨|¿+x|Û3x|Ø|~x|œ#x|ù;x8`ÿÿA‚€¢ t|¤+x‰ˆUi>}j[x€â || A‚”ˆ| A‚˜�" t|æ;x‰ | È@‚ 9?} Úx0ÿÿ|})xà8|Kx|àA‚‰?ˆ;ÿ;Þ| A‚ 8`H˜|ØA‚„‰8`Ui>}j[x| @A‚ˆ| @‚ÿŒ‰'U@>|H@‚4�b ||àA‚P�?;Þˆ | @‚ |Ø@‚ÿà|ØA‚ ‰?ˆ| @‚€â t;ÿ� |H;ÿŸØAž<ˆ‰'T >| x| HA‚ÿàˆ| @‚|àA‚¸;ÞKÿÿÄ@ž 8`HÀžàAžœU]>|È@‚8|ØA‚ |x‹¿ƒB t;ÿAž H;Þ|àA‚ˆ|è@‚ÿìÀóx8`ÿÿ|à;ÞA‚\Ãóx„ãxåûxfÛx'ËxKÿýá|cy@�<|àO€A‚‰?ˆ| @‚ÿ”8`ÿÿH|Ø@‚ýüÀâx1 ÿÿ|i8!X€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€�wild_compare__FPCcN30c|ix8� � � � N€ @ __6String|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x8�� H ÑOÿû‚£ëx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€P __6StringUi|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x|ƒ#x��Kÿy=€A8�}� £ëx�8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€\ __6StringPCc|ix8�‰�©� � N€ @__6StringPCcUi|ix8�‰�©� �©N€ @ __6StringPcUi�d|ix9@‘i€� �d‘I ‘iN€ @(__6StringRC6String|¦�”!ÿÈKþ%©`8!8€|¦N€ A€$__nw__6StringUl|¦�”!ÿÈKþ%­`8!8€|¦N€ A€$__dl__6StringPvUl[DS]|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#xH…Oÿû‚s A‚ãûxKþ%5`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€X _._6String€cN€ @length__C6String[DS]€cN€ @alloced_length__C6String€c|c"N€ @ __vc__C6StringUi�ƒN€ @length__6StringUi€c |`N€ @is_empty__6String€cN€ @ptr__C6String[DS]|¦“áÿü�”!ÿÀ|x�, A‚�?| H®,A‚€ŸãûxH¥Oÿû‚€8!@€|¦ƒáÿüN€ A€Xc_ptr__6String�c, A‚�#€| @@€ 8| I®€cN€ @,c_ptr_quick__6String|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|œ#x|¾+x|Ý3xHõOÿû‚€9 “¿|ò‘? �€,A‚|�8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€€set__6StringR6StringUiUi|¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|}x|»+x|œ#xHEOÿû‚8“�� “}“}8!P€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€lset__6StringPcUi|¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|}x|œ#x|»+xH±Oÿû‚8“�� “}�8!P€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€lset__6StringPCcUi€ ,L‚ �£�ƒ�£N€ @set_quick__6StringPcUi|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x€ ,A‚$; €“¿ “¿Kÿça€A“¿“¿8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€dfree__6String[DS]|¦�”!ÿÈ|ix€ 8`|@A€}#KxHEOÿû‚8!8€|¦N€ A€<alloc__6StringUi[DS]|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€|@@€D€8 Kÿåý€A|cy@‚$€Kÿæa€AãûxÄóxH­Oÿû‚H “ß�8!@€|¦ƒÁÿøƒáÿüN€ A€€shrink__6StringUi[DS]€c N€ @is_alloced__6String|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|ž#x|øA‚P€ ,A‚$; €“¿ “¿Kÿå�€A“¿“¿�>9`‘?€��>‘ ‘?ãûx8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€”__as__6StringRC6String|¦“Áÿø“áÿü�”!ÿÀ|x|ž#x€Ÿ€|@@€�?8É!®�H88„ãûxH Oÿû‚,A‚ 8`H�?�ËI®9)‘?8`8!@€|¦ƒÁÿøƒáÿüN€ A€�append__6Stringc|¦�”!ÿÈ€ƒ€cH ™€A8!8€|¦N€ A€,caseup__6String|¦�”!ÿÈ€ƒ€cH m€A8!8€|¦N€ A€,casedn__6String|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x8„€Tž8|ð@@€d€ ,A‚$; €“¿ “¿KÿãY€A“¿“¿Ãóx8€Kÿã€A,�@‚�8`H(8“ß� �?89`8`˜ ‘8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€Äreal_alloc__6StringUi[DS]|¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|~x|›#x8�>T8| è@@€�ƒž ,A‚,€~¤ëx8 Kÿáå€A|yA‚`“þ“¾H\£ëx8€Kÿâ€A|yA‚<€¾,A‚€žãûxKþˆý`€9 Ÿ®“þ“¾‘> H 8`H�>88`| Ù®8!P€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ürealloc__6StringUi[DS]|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#x|¾+x€(8`A�ãûx8€Kÿý©Oÿû‚,@‚0€¿£ëxÄóx8ÀÿöH Ý€A€|`�8`H8`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€˜ set__6Stringx|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#x|¾+x€(8`A�ãûx8€KÿüíOÿû‚,@‚0€¿£ëxÄóx8À H !€A€|`�8`H8`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€˜set__6StringUx|¦“áÿü�”!þh|É3xØ!ˆ|x( €¡ˆ€ÁŒA�0|§+x|È3x8€¢ Œ8€J}&Kx˜‚8a8H �€AH$�¡ˆ�ÁŒ8a8Ȉ€‚ ”ü �H ¡€A8a8KÿjÍ€A|ex8�8ãûxH Oÿû‚8!˜€|¦ƒáÿüN€ A€`¬set__6StringdUi|¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|~xƒ¾ ,@‚ˆƒ~“¾8T8|à@@€\ƒãx8€KÿÞÅ€A|yA‚<€¾,A‚€žãûxKþ…±`€9 ¿®“þ“ž‘> H 8`H�>88`| Ù®H8`8!P€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Ü copy__6String|¦“¡ÿô“Áÿø“áÿü�”!ÿ¸|x|�#x€�€|@@€ ;ÀHãûxKÿú]Oÿû‚|~x,@‚0€½€�¿€�Kþ„Å`�8`�?ÉY®H8`8!H€|¦ƒ¡ÿôƒÁÿøƒáÿüN€ A€œcopy__6StringRC6String|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|~x|¿+x€|œ#x|@@€ ; HÃóxäûxKÿù�Oÿû‚|}x,A‚ 8`H0,“þA‚€~„ãxåûxKþƒå`�>8`©ù®8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€¬copy__6StringPCcUi[DS]|¦“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|~x|œ#x€|º+x|à@@��>8“ž| á®Hä8�>T8| è@@€�ƒ~ ,A‚,€~¤ëx8 KÿÛ©€A|yA‚`“þ“¾H\£ëx8€KÿÛÕ€A|yA‚<€¾,A‚€žãûxKþ‚Á`€9 ®“þ“¾‘> H 9`H�>89`| á®, A‚ 8`H(€DÓx€~| à|cKþŽ9€A“ž8`8!P€|¦ƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€\fill__6StringUic�,M‚ €Â l€ã�F}h:‰+ÿÿ€ })‰iq`M‚ 9(ÿÿ, ‘#M‚ }(Kx�F}(:‰iÿÿ€ }k‰+q @‚ÿÐN€ @lstrip_sp__6String€cN€ @numchars__6String|ƒ#xN€ @charpos__6StringiUi|jx�d|£+x�*| |H@A�”, M‚ € €„} J|x}+H|äZ8É|`|0A‚d8ÿÿ‰$}ˆ98c|H@‚<9d|jx| 8A‚$‰*ˆ 9J9k| @‚ÿ´| 8@‚ÿä}CxN€ |0@‚ÿ°8`ÿÿN€ @´strstr__6StringRC6StringUi|‹#x€‹|(@A�¬€|@A� ,@‚ |£+xN€ �#�k}I*},Kx8ëÿÿ})"}k"8Éÿþ8‹ÿÿ8ªÿÿ|0A‚`‰$}‹cxˆ8¥ÿÿ|H@‚@9ÿÿ|£+x|8A‚$‰#ˆ8cÿÿ9ÿÿ| @‚ÿ¼|8@‚ÿä|k8cN€ |0@‚ÿ°8`ÿÿN€ @Àstrrstr__6StringRC6StringUi��D€c|P||¸€„}Ix}8| KxH,‰#ˆ8c8„| A‚ˆÿÿˆdÿÿ|cN€ , 9kÿÿ@‚ÿÐ|j@N€ @hstringcmp__FPC6StringT0|¦�”!ÿÈ�#|§+x€¤€€Ä}#Kx|ƒ|Å2Kÿâå8!8€|¦N€ A€@wild_case_compare__FR6StringT0c|¦�”!ÿÈ�#|§+x€¤€€Ä}#Kx|ƒ|Å2Kÿåy8!8€|¦N€ A€@wild_compare__FR6StringT0c�‚ `�A€ €L| ¦N€  �‚ €�A€ €L| ¦N€  �‚ „�A€ €L| ¦N€  �‚ ˆ�A€ €L| ¦N€  �‚ ��A€ €L| ¦N€  �‚ ˜�A€ €L| ¦N€  |¦“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¨|{x|œ#x|¾+x�;|Ù3xÄóxƒãx�A€ €I|¦�iN€!€A|}x€›/žH2ƒAž�{ T‰:}:KxéX.,A‚D€|è@‚,€|ð@‚ €„ãxÅóxH Í€A,A‚„ƒÿ,@‚ÿÄ8`8€KÿÔÝ€A|yA‚¤“Ÿ8`8€“ß“¿KÿÔ¹€A,�A‚p“#89`�?8`� ‘ �; |H.��; úI.HL8`8€KÿÔi€A€|kx“+8`� �? ‘9)‘? HãûxKÿÔ]€A8`8!X€|¦ƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€´*completion_hash_update__FP9hashtablePcUiT1|¦’ÁÿØ’áÿÜ“ÿà“!ÿä“Aÿè“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ |xx|œ#x|½+x�8|Ö3x¤ëxƒãx�A€ €I|¦�iN€!€A|~x€˜�8 H2ƒT„:äH.,A‚D€|ð@‚,€|è@‚ €„ãx¥ëxHÙ€A,A‚(ƒÿ,@‚ÿÄ9`, @‚‘v8`HðëûxKÿÿè�+}z[x‚ë ƒiHÀ;Ý�8cÛxÄóxÙóx�A€ €I|¦�iN€!€A||x€˜�8 H2ƒT„:äH.,A‚D€|à@‚,€|ð@‚ €dÛxÅóxH€A,A‚,ƒÿ,@‚ÿÄ9`, A‚0€ |¸@@€H ëûxKÿÿä=Ëx}z[x|è®,@‚ÿ<“¶CÓx8!`€|¦‚ÁÿØ‚áÿ܃ÿàƒ!ÿäƒAÿèƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€ 'find_longest_match__FP9hashtablePcUiPUi9`9@| @@€0}#P®U` 6}`JuiðA‚U F>}kx}kJx9J| @A€ÿØ}c[xN€ @Dhashpjw__FPcUi[DS]|¦“Áÿø“áÿü�”!ÿÀ|x|ž#xWÃ:8€0KÿÐå€A,� A‚ �" °88`�‘?“ßH �8`8!@€|¦ƒÁÿøƒáÿüN€ A€t$completion_hash_init__FP9hashtableUi|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸|}x|œ#x�=|¾+xƒãxÄóx�A€ €I|¦�iN€!€A€�|x�= H2ƒT„:¤H.,A‚H€|ø@‚0€|ð@‚$€}„ãxKþ�Y`,@‚ 8`Hƒ½,@‚ÿÀ8`8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Ø(completion_hash_exists__FP9hashtablePcUi|¦“aÿì“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ°|}x|œ#x�=|¾+x|Û3xÄóxƒãx�A€ €I|¦�iN€!€A€�|x�= H2ƒT„:¤H.,A‚D€|ø@‚,€|ð@‚ €}„ãxÅóxHq€A,A‚$ƒ½,@‚ÿÄ8`,A‚“ÛH£ëxKÿÿì�{8`8!P€|¦ƒaÿìƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€%find_all_matches__FP9hashtablePcUiPUi|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸||x9@€| @@€h�| UI:;ªÉX.,A‚@ƒþ,A‚ãûxƒÿKÿÍÑ€A,@‚ÿìÃóxƒÞKÿ͹€A,@‚ÿÈ€ªëx| @A€ÿ €¼8€€| T¥:Kþ€I€A8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Ì'completion_hash_clean__FP9hashtable[DS]|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸||x9@€| @@€h�| UI:;ªÉX.,A‚@ƒþ,A‚ãûxƒÿKÿÌÅ€A,@‚ÿìÃóxƒÞKÿÌ­€A,@‚ÿÈ€ªëx| @A€ÿ €¼8€€| T¥:Kþ=€A€| KÿÌq€A8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€Ø"completion_hash_free__FP9hashtable|¦“�ÿð“¡ÿô“Áÿø“áÿü�”!ÿ¸||x|�#x£ëx;àKÿW€A|~x|ðA�(åûxƒãx¤ëx¦ëxKÿõéOÿû‚;ÿ|ð@�ÿà8!H€|¦ƒ�ÿðƒ¡ÿôƒÁÿøƒáÿüN€ A€„add_word__FP9hashtablePc�‚ ¬�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �‚ H�A€ €L| ¦N€  �‚ L�A€ €L| ¦N€  �‚ h�A€ €L| ¦N€  �‚ l�A€ €L| ¦N€  �‚ Ô�A€ €L| ¦N€  �‚ $�A€ €L| ¦N€  �‚ ,�A€ €L| ¦N€  �‚ x�A€ €L| ¦N€  �‚ €�A€ €L| ¦N€  �‚ Ì�A€ €L| ¦N€  �‚ à�A€ €L| ¦N€  �‚ $�A€ €L| ¦N€  �‚ @�A€ €L| ¦N€  �‚ è�A€ €L| ¦N€  �‚ ì�A€ €L| ¦N€  �‚ ø�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �‚4�A€ €L| ¦N€  �‚8�A€ €L| ¦N€  �‚h�A€ €L| ¦N€  �‚p�A€ €L| ¦N€  �‚|�A€ €L| ¦N€  �‚Œ�A€ €L| ¦N€  �‚¨�A€ €L| ¦N€  �‚´�A€ €L| ¦N€  �‚À�A€ €L| ¦N€  �‚Ä�A€ €L| ¦N€  �‚È�A€ €L| ¦N€  �‚Ì�A€ €L| ¦N€  �‚Ô�A€ €L| ¦N€  �‚à�A€ €L| ¦N€  �‚è�A€ €L| ¦N€  �‚ì�A€ €L| ¦N€  �‚ô�A€ €L| ¦N€  �‚(�A€ €L| ¦N€  �‚0�A€ €L| ¦N€  �‚4�A€ €L| ¦N€  �‚8�A€ €L| ¦N€  �‚<�A€ €L| ¦N€  �‚P�A€ €L| ¦N€  �‚\�A€ €L| ¦N€  �‚`�A€ €L| ¦N€  �‚��A€ €L| ¦N€  �‚Ü�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚$�A€ €L| ¦N€  �‚D�A€ €L| ¦N€  �‚H�A€ €L| ¦N€  �‚L�A€ €L| ¦N€  �‚`�A€ €L| ¦N€  �‚d�A€ €L| ¦N€  �‚h�A€ €L| ¦N€  �‚l�A€ €L| ¦N€  �‚p�A€ €L| ¦N€  �‚t�A€ €L| ¦N€  �‚x�A€ €L| ¦N€  �‚”�A€ €L| ¦N€  �‚œ�A€ €L| ¦N€  �‚¨�A€ €L| ¦N€  �‚°�A€ €L| ¦N€  �‚¸�A€ €L| ¦N€  �‚Ð�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚(�A€ €L| ¦N€  �‚0�A€ €L| ¦N€  �‚t�A€ €L| ¦N€  �‚€�A€ €L| ¦N€  €bŒü ÀcüCòüC²üC²ü`ŽÿàLÿÀŒü�*ü¡(ýþŽü@€ Àü@€ ü$(N€ ü"(*N€ €b�Èü *N€ "@Àdtrunc0€bŒü ÀcüCòüC²üC²ü`ŽÿàŒÿÀŒü�*ü¡(ýþŽü@€ Àü@€ ü$(N€ ü"(*N€ €b�Èü *N€ "@Àdnearest0 €bŒü ÀcüCòüC²üC²ü`ŽÿàLÿÀLü�*ü¡(ýþŽü@€$ÀüM‚ @€ ü$(N€ ü"(*N€ €b�Èü!*N€ "@Àhfloor0Ø!ÿð€ÿðT~�ÿðÈ!ÿðN€ "@Àfabs0 €bŒü ÀcüCòüC²üC²ü`ŽÿàŒÿÀLü�*ü¡(ýþŽü@€$ÀüM‚ @€ ü$(N€ ü"(*N€ €b�Èü *N€ "@Àhceil0 À”ÿ€Â˜ü€ŽÈFÿÀŒüÈfÿàLA˜üÁ*ØÁÿøü%Ž@€€aÿüN€ ü%Ž8`H8`Aƒ8`ÿÿHN€ ýþ%Ž|¦“áÿü�”!ÿÄ|x€fKÿ3e€Aãûx€D0!<|¦ƒáÿüN€ #AÀœ __uitrunc�‚œ�A€ €L| ¦N€  �‚ä�A€ €L| ¦N€  �‚è�A€ €L| ¦N€  �‚ø�A€ €L| ¦N€  �‚ü�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  Internal Compiler Bug: No runtime type matcher.%lg%g0123456789ABCDEF0X0123456789abcdef0x(null)7ostream7istream8iostream22_IO_istream_withassign22_IO_ostream_withassign?ð@$@Y@�@@È@øjA.„€AcÐA—ׄAÍÍeB _ B7HvèBm”¢B¢0œå@BÖ¼Ä�C kõ&4CAÃy7à€Cv4W…Ø C«ÁmgNÈCáXä`‘=D¯xµŒ@DKäÖâïPD€ðÏMÕ’CAÃy7à€F“¸µµnM8Oé?ùõZ‚wHù02uOÝs¿<<œÒ²—؉¼9Iö#Õ¨§32¥ýDô§=%[ºÏŒ—� È(d¬oCInfinityNaN0C0Aà 0000000000000000bad_alloc9type_info8bad_cast10bad_typeid16__user_type_info14__si_type_info17__class_type_infobad_allocvxlisbcwrdfUiUlUxUsUcSc19__pointer_type_info16__attr_type_info19__builtin_type_info16__func_type_info16__ptmf_type_info16__ptmd_type_info17__array_type_info9exception13bad_exceptionbad_alloc9bad_alloc8stdiobuf12istdiostream12ostdiostream3ios9streambuf7filebuf11_ios_fields8_IO_FILE11.13helpDisplay this help.?Synonym for `help'.clearClear command.connectReconnect to the server. Optional arguments are db and host.editEdit command with $EDITOR.egoSend command to mysql server, display result vertically.exitExit mysql. Same as quit.goSend command to mysql server.nopagerDisable pager, print to stdout.noteeDon't write into outfile.pagerSet PAGER [to_pager]. Print the query results via PAGER.printPrint current command.quitQuit mysql.rehashRebuild completion hash.sourceExecute a SQL script file. Takes a file name as an argument.statusGet status information from the server.teeSet outfile [to_outfile]. Append everything into given outfile.useUse another database. Takes database name as argument.create tablecreate databasedropselectinsertreplaceupdatedeleteexplainshow databasesshow fields fromshow keys fromshow tablesload data fromalter tableset optionlock tablesunlock tablesmysqlclientstdoutmyWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is %ld to server version: %s MYSQL_HISTFILEHOME%s/.mysql_historyReading history-file %s Type 'help;' or '\h' for help. Type '\c' to clear the buffer Writing history-file %s AbortedByei-am-a-dummybatchcharacter-sets-dircompressdatabasedebug-infodefault-character-setenable-named-commandsexecuteforcehtmlhostignore-spacesno-auto-rehashno-named-commandsno-teeno-pagerone-databasepasswordportquickset-variablerawsafe-updatessilentskip-column-namesskip-line-numberssockettableuserunbufferedverboseversionverticalwaitconnect_timeoutmax_allowed_packetnet_buffer_lengthselect_limitmax_join_size%s Ver %s Distrib %s, for %s (%s) 3.23.35ibm-aix4.3.2.0powerpcCopyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult ABThis software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Usage: %s [OPTIONS] [database] -?, --help Display this help and exit. -A, --no-auto-rehash No automatic rehashing. One has to use 'rehash' to get table and field completion. This gives a quicker start of mysql and disables rehashing on reconnect. -B, --batch Print results with a tab as separator, each row on a new line. Doesn't use history file. --character-sets-dir=... Directory where character sets are located. -C, --compress Use compression in server/client protocol. -D, --database=.. Database to use. --default-character-set=... Set the default character set. -e, --execute=... Execute command and quit. (Output like with --batch) -E, --vertical Print the output of a query (rows) vertically. -f, --force Continue even if we get an sql error. -g, --no-named-commands Named commands are disabled. Use \* form only, or use named commands only in the beginning of a line ending with a semicolon (;) Since version 10.9 the client now starts with this option ENABLED by default! Disable with '-G'. Long format commands still work from the first line. -G, --enable-named-commands Named commands are enabled. Opposite to -g. -i, --ignore-space Ignore space after function names. -h, --host=... Connect to host. -H, --html Produce HTML output. -L, --skip-line-numbers Don't write line number for errors. --no-pager Disable pager and print to stdout. See interactive help (\h) also. --no-tee Disable outfile. See interactive help (\h) also. -n, --unbuffered Flush buffer after each query. -N, --skip-column-names Don't write column names in results. -O, --set-variable var=option Give a variable an value. --help lists variables. -o, --one-database Only update the default database. This is useful for skipping updates to other database in the update log. PAGER --pager[=...] Pager to use to display results. If you don't supply an option the default pager is taken from your ENV variable PAGER (%s). Valid pagers are less, more, cat [> filename], etc. See interactive help (\h) also. This option does not work in batch mode. -p[password], --password[=...] Password to use when connecting to server If password is not given it's asked from the tty. -P, --port=... Port number to use for connection. -q, --quick Don't cache result, print it row by row. This may slow down the server if the output is suspended. Doesn't use history file. -r, --raw Write fields without conversion. Used with --batch -s, --silent Be more silent. -S --socket=... Socket file to use for connection. -t, --table Output in table format. -T, --debug-info Print some debug info at exit. --tee=... Append everything into outfile. See interactive help (\h) also. Does not work in batch mode. -u, --user=# User for login if not current user. -U, --safe-updates[=#], --i-am-a-dummy[=#] Only allow UPDATE and DELETE that uses keys. -v, --verbose Write more. (-v -v -v gives the table output format) -V, --version Output version information and exit. -w, --wait Wait and retry if connection is down. Possible variables for option --set-variable (-O) are: %-20s current value: %lu ?ABCD:LfgGHinNoqrstTU::vVw::WEe:h:O:P:S:u:#::p::illegal option: -%c MYSQL_HOSTmysql> '> "> -> %s \g Unknown command '\%c'.Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A %s.%sDidn't find any fields in table '%s' No connection. Trying to reconnect...Can't connect to the server MySQL commands:Note that all text commands must be first on line and end with ';'%s (\%c) %s Connection id: %ld (Can be used with mysqladmin kill) Not connected! Reconnect with 'connect'! No query specified SET Ignoring query to other databaseEmpty set%srowrows%ld %s in set%sQuery OK%sQuery OK, %ld %s affected%swpopen() failed! defaulting PAGER to stdout! %s '%s' %d %d %d %d %d +| %-*s| NULL |%*s |  
%s
*************************** %d. row *************************** %*s: \0\t\n\\ No previous outfile available, you must give the filename! No outfile specified! Logging to file '%s' Outfile disabled. Default pager wasn't set, using stdout. PAGER set to %s PAGER set to stdout sqlEDITORVISUALvi ---------------------------- ;Connection id: %ldCurrent database: %s *** NONE ***Usage: \. | source Failed to open file '%s', error: %dCan't initialize batch_readlineUSE must be followed by a database nameDatabase changedSET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=%lu,SQL_MAX_JOIN_SIZE=%luWaiting Connection id: %ld select DATABASE(),USER()Current database: %s Current user: %s No connection All updates ignored to this database Current pager: %s Using outfile: '%s' Server version: %s Protocol version: %d Connection: %s Client characterset: %s Server characterset: %s TCP/IPTCP port: %d UNIX socket: %s Protocol: Compressed %s Note that you are running in safe_update_mode: UPDATEs and DELETEs that don't use a key in the WHERE clause are not allowed. (One can force an UPDATE/DELETE by adding LIMIT # at the end of the command.) SELECT has an automatic 'LIMIT %lu' if LIMIT is not used. Max number of examined row combination in a join is set to: %lu ERROR %d at line %lu in file: '%s': %s ERROR %d: ERROR: days day hours hour min %.2f sec%d sec)%.14g%.*fFC0Að@(#)61 1.11 src/bos/usr/ccs/lib/libc/__threads_init.c, libcthrd, bos43K, 9823A_43K 6/12/98 12:37:06 4  |  ( ü  \û­ ˆ pû­ „ � pû­ † Ü pû­ Š ( û­ † t  û­ † Ä @ ° 4 @ ˆ ”   ¬ ¸ Ä Ð Ü è ô    $ 0 < H T ` l   ¬ x „ � Ü œ ¨ ´ À Ì Ø ä ð ü ’) LÙV X pÞ.ÿ¬ ÿ¬ lÿ¨ xÿ¨ „ � œ ¨ ”   ¬ ´ Ä Ð Ü è À  Ì Ø ä ð <ö¿ÿü  ÿü ÿø  ÿø ÿô $ÿô 0ÿø <ÿø Hÿü Tÿü `S¡  ÿÿÿÿ}q 5= , 8 D P \ h t € Œ ˜ ¤ ° ¼ È Ô ¼ à ì­ ø  ¼   ¼Ê L X d p | ˆ @ ”   ¬ 4 ¸ ( Äî] 4È 4È 4Ø 4¸A 4Ø 4¸ Ü è ôA 4Ø 4¸ , Ä  T  (   € t (  ¬  ( \ry ¨Ày€y(@€y< 1ÌèÿÿÿÿyL 1ÐB@ÿÿÿÿb0rh ,rr,? ,r0rDc 8rLr\r Drdr¤e Pr¬rÈG \rÌsq hss,g ts0sPn €sXsxt Œs€sœP ˜s¤sàp ¤sètq htt# °tt8. ¼t@t€s Ètˆt°T Ôt´tôu àtøu0u@uDu@uTu@u\u@udu@ulu@utu@u|u@u„u@uŒu@uœu@u°u@uÀu@uÌu@uÜu@uèu@uôu@vu@u@vvwTUwdBwlw€CwŒDw˜Tw¤w¼GwÔewÜfr?wäHwìhwôixAxgx(x0sPsœsxt°x<oxLpxXPx`qxhOxxrx|UxŒsx”Nx¨Lx¼SxÄtxÌuxÔnxàvxèVxðExüw@(#)79 1.4 src/bos/usr/ccs/lib/libm/POWER/floor.c, libm, bos430, 9737A_430 3/10/97 22:38:39P 4 4a˜ 4‘l 4Œd 4³ 4Ñ 4Óœ 4Ô 4ÝÔ 4¦¼ 4· 4·T 4eð 4h 4º\ 4º¬ 4·ì 4i´ 4¶` 4·¤ 4¶´ 4¸¼ 4¹h 4¹ 4º 4¹¼ 4|l 4kì 4f< 4e´ 4f| 4fÐ 4lt 4hp 4gè 4jÔ 4op 4o° 4oð 4p< 4o( 4t( 4� 4ð( 4Q¨ 4¶( 4à 4Œ 4ôÐ 4ÿà 4ÿŒ 4óÄ 4ýl 4ý 4ó 4úØ 4ü¸ 4Æ 4ø  4ú| 4÷T 4î` 4Ç” 4É  4ÆŒ 4Ç8 4èØ 4é° 4ë` 4íÜ 4íˆ 4í 4ì´ 4ì4 4ëà 4ë 4êˆ 4ê0 4é\ 4è€ 4¸à 4ä 4ˆ 4\ 41ô 4Px 40” 4K¤ 4.è 4>ô 4> 44H 43T 4ç0 4é� 4åÌ 4è” 4ଠ4ä 4ä¤ 4ãt 4áD 4â 4☠4âü 4aä 4‘Ì 4c˜ 4b0 4'` 4UÀ 4@˜ 4>´ 4X 4Y˜ 4(p 4Y 4XŒ 4<à 4Z4 4YØ 4B¼ 4JÔ 4:ˆ 4Et 4V| 4@ 4;Ü 4U< 4T° 4D 4 3Ô è P ` d d d d d À È È È È È È d /X /H /\Ö×ì@kè­` p p p p­Ø¯p¯ø±˜²4 Ð |ßT  ßÜ ð ð ð ð                      øÄ ð ð ð ð ð ð ðllXÐ]a (d@ P P P P P P P /h /h /h /h /h /h T{C0C0l°l°mhmhm�?à?à@?ð?ð¿ðmÐC0€C0€?ßÿÿ” 5•?à5¯å5?Ïÿÿ” 5• l /dm¸mÄmÈ?ø?Ò‡§coCa?ÆŠ(‹`ȳ?ÓDPŸyû�Œ@$@@ll l$l8mènèoèoø«ÐlL x        *ˆ*À+h+¬,H Ø Ø Ø´0 À À p p        hèDï´ð ¸ ¸ ¸ ¸ ¸ ¸ðP x xñ ñ|ñ¼ ˜ ˜òxòÌ 3Ø 3Ø 3Ø 3Øpppp 3àp 3ð 3ð X X X XùÔ ø 3øp,ü Ø 4 4 4p<p<p<þÔ 4pPp¸ 4(pdxÀ € à à ( ( 4 @ÐÄ                       Ñ ÑàÒ4 øÒøÓL ÈÔÔT °ÕÕ\ ˜ÖÖd € (Ø`p„ظ à à à à à à à à à à à à à à à à à 0Ù\pˆÙ´ 8ÚTpŒÚ¬ @ÛLp�Û¤ HÜDp”Üœ PÝ<p˜Ý” XÞ4pœÞŒ `ß,p ß„ hà$p¤à| páp¨át xâp¬âl €ã p°ãd ˆäp´ä\ �äüp¸åT ˜åôp¼æL  æìpÀçD ¨çäpÄè< 48pÈ 3Ø 3Ø 3Ø 3Ø 3Ø 3Ø 3Ø 4Hpà 4Xpô 4hq 4xq 4ˆq4 4˜qH н8½œ  X X X X X X X¾ä 8 8¿H¿ À� ÔÁÔ øÂ<Â� °Ä$ ØÄŒÄà 3ð 3ðq`q` 4¨qlÈð´°µ À ¨ 4¸ 4¸ 4¸lTlTlT ¸ ¸ ¸5Ð 4Ø 4Ø 4Øl`l`l` À À À@|X   X 4èqŒ 3ðq€\¨ è0 X Xˆ è è¨�tÜ 4øll ÈM”MÌNtN¸OT 5lx Ø 5l” à         Ø Ø   5(q˜ 58 5Hq¤ ë$ëdììÜí¨îh 5Xq´ ñ¼ñüò¨ótô@õ   4ÈqÈ 5h 5h x t ( Ä  � Ü ( ¨ P 5p 5pqÐqÐ 5€ 5€ 5€qÜ    qèqø h  /lv ˆ ˆ ˆ ˆ ˆv$v$v$v$ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ì ì ì ì ì ì œ œ œ œ œ 1´ 1´ 1´ 1´ 1´ 1´ 1´ 1´ 1´ 1´ 1´ 1´ 1´ 1´v,v, ð ð /„ /„ /„ /„ /„’À’¸ /¤ /¤ /¤ /¤ ì 1¤ 1¤ 1¤ 1¤ 1¨ 1¨ 1¨ 1¨ 1¨ 1¨ ü ü ü ü     ¤ ¤ ¤ ¤ ¤ ¤ ¤ øv0 /´ /´ /´ /´ /´ /´ /´ /´ /´vl Ø Ø Ø Øv¤ 1° 1°v´v¼ è è è è è vÐvì à à à à à à à à à à à ¨ ¨ ¨ ¨ ¨ ¨ ¨w,wHwP /” /” /” /” ô ô ô ˜ ˜ ˜ ˜ Øy\y€yˆy˜y yäzxz˜|„€´�(‚Ø‚Øu@u@u@u@‚à„l„ð†P‡8‡pˆˆ Ü ÜˆÄ ` 1¬ Ü Ü Ü Ü Ü Ü Ü 1Ô 1Ô À À À Ä Ä ¼ ¼ ¼ ¼ ´ ´ ¬ ¬ ° ° ° Ì Ì Ì       ¸ ¸ ¸ ¸ ¸ ä ä ä ø ø È È Ð Ð Ô Ô Ô Ô ð ð@@@‰ˆà ü‰, Œ Œ Œ Œ Œ Œ Œ Œ Œ‰8‰@‰H‰P‰X‰X‰\‰`‰`     ‰d /p /t /x /| � ŒuŒuÀ‰| ” /€ŠŠŠxŠŒŠÐŠà‹‹HŠ0Š0ŠXŠX‹\‹d‹ˆ‹”‹˜‹ ‹°‹¼ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆŒ Œ$Œ(Œ,Œ4Œ4Œ4Œ4Œ8Œ8Œ8Œ8Œ@ŒDŒLŒpŒdŒ|Œ„ŒŒŒ”ŒœŒ¨ŒìŒôŒøŒü����D‹Ø‹Ø‹Ø‹Ü‹Ü‹Ü�\�ˆ�´�à�ä�ì�ô�øŽŽŽ ŽPŽ8Ž`ŽŒްŽÐŽø  1Ì 1Ì 1Ð 1Ð� �ü�ü�¸�X�p�Œ�¤�È�ð���4�L�`�|�˜� �°�Ä�ÜC0C0C0�䑎 Ž ’0’8’<’L’\ ˜’d’p@õ’È  ’Ð’x’€@¬ ’ˆ’�@N’˜’ ’¬   (�t�È�PC0€’´“�u[ô½\ierrno@close@ lseek@ open@ times@ @__mulh1@__mull1€@__divus2€@__quous3€@_iob@_DBLINF@exit@ atexit@ free@ malloc@ strlen@ isatty@ getenv@ atoi@ write@ abort@ memset@ fflush@ fclose@ __flsbuf@ vfprintf@ snprintf@ sprintf@ printf@ fprintf@ strchr@ fwrite@ __filbuf@ read@ isupper@ signal@ isspace@ memchr@ sleep@ fread@ fseek@ strtoul@ fstat@ strtok@ fputs@ system@ strstr@ memcmp@ pclose@ popen@ puts@ strdup@ @ sysconf@ strtol@ )@ 7@ __crt0v@D@R@i@~@’@¡@wild_one@optind@optarg@opterr@­@ Á@ ×@ é@ ü@ @ "@ 2@ E@ Z@ n@ …@ ›@ ³@ À@ Ó@ á@ ó@ @ @ #@ 5@ B@ P@ ^@ t@ ˆ@ ”@ §@ ¸@ È@ Û@ ç@ strmov@ strmake@ my_open@ my_read@ my_close@ ÷@ my_init@ strend@ @ @ strnmov@ my_end@ str2int@ #@ /@ B@ O@ casedn@ caseup@ my_write@ int2str@ \@ n@ strxmov@ z@ my_fopen@ †@ —@ my_stat@ µ@ Ã@ Ø@ strcont@ ò@ @)@H@[@ p@ ~@ Ž@ readline@ __start ! �  ® ü P T ` l” p |• € ˆ Œ Ø  $ \ p ¨ ¼ À  ø     H \ `  d h t | „ Œ ” œ ¤ ¬ ´ ¼ Ä Ì Ô Ü ä ì ô ü     $ , 4 < D L T \ d l t | „ Œ ” ¤ ¬ ¼ À Ä È Ð Ô Ü ä ô ü     $ , 4 < D L T \ d l t | „ Œ ”   ¬ ´ Ä Ì Ü ä ô ü      p | „ Œ œ ¤ ¬ ¼ Ä Ì Ü ä ì ü    $ 0 < D L \ d l x „ Œ œ ¤ ´ ¼ Ì Ô ä ì ü    ° ¸ À È Ð Ø à ì ô ü    ( , P T X x € „ ¨ ¬ ° Ð Ø Ü à ø ü@  A 0 4 L P �       ( 0 4 < D H P X \ d l p x € „ Œ ” ˜   ¨ ¬ ´ ¼ À È Ð Ô Ü ä è ð ø ü        $ , 4 8 @ H L T \ ` h p t „ ˆ ˜ œ ¬ ° À Ä Ô Ø è ì ü    $ ( 8 < L P ` d t x ˆ Œ œ   ° ´ Ä È Ø ì ð ô ü    , < L \ l | Œ œ ¬ ¼ Ì Ü ì ü    , < L \ l | Œ œ ¬ ¼ Ì Ü ì ü    , < L \ l         ( , 4 8 @ D L P X \ d h p t | € ˆ Œ ” ˜   ¤ ¬ ° ¸ ¼ Ä È Ð Ô Ü à è ì ô ø        $ ( 0 4 < @ H L T X ` d l p x | „ ˆ � ” œ   ¨ ¬ ´ ¸ À Ä Ì Ð Ø Ü ä è ð ô ü         $ , 0 8 < D H P T \ ` h l t x € „ Œ � ˜ œ ¤ ¨ ° ´ ¼ À È Ì Ô Ø à ä ì ð ø ü        ( , 4 8 @ D L P X \ d h p t | € ˆ Œ ” ˜   ¤ ¬ ° ¸ ¼ Ä È Ð Ô Ü à è ì ô ø        $ ( 0 4 < @ H L T X ` d l p x | „ ˆ � ” œ   ¨ ¬ ´ ¸ À Ä Ì Ð Ø Ü ä è ð ô ü         $ , 0 8 < D H P T \ ` h l t x € „ Œ � ˜ œ ¤ ¨ ° ´ ¼ À È Ì Ô Ø à ä ì ð ø ü        ( , X \= ` d h< l p t x | € „ ˆ Œ � ” ˜ œ  % ¤ ¨. ¬ ° ´ ¸ ¼ À Ä È Ì Ð Ô Ø Ü à ä è ì ð ô ø  ü !           $ ( , 0 4 8 < @ D H L$ P+ T# X, \ ` d h l p t x | € „ ˆ Œ � ” ˜ œ   ¤ ¨ ¬ ° ´ ¸ ¼ À( Ä È Ì Ð: Ô- Ø& Ü à ä è ì ð ô ø ü            $ 8 L P T; X \ ` d œ  8 Ì Ð Ô Ø Ü    $ ( , 0 4 8 < @ D H L P T X \ ` d h  l p t x | € „ ˆ Œ � ” ˜ œ   ¤ ¨ ¬ ° ´ ¸ ¼ À Ä È Ì Ð Ô Ø Ü à ä è ì ð ô ø ü ! ! ! !  ! ! ! ! !  !$ !( !, !0 !4 !8 !< !@ !D !H !L !P !T !X !\ !` !d !h !l !p !t !x !| !€ !„ !ˆ !Œ !� !” !˜ !œ !  !¤ !¨ !¬ !° !´ !¸ !¼ !À !Ä !È !Ì !Ð !Ô !Ø !Ü !à !ä !è !ì !ð !ô !ø !ü " " " "  " " " " "  "$ "( ", "0 "4 "8 "< "@ "D "H "L "P "T "X "\ "` "d "h "l "p "t "x "| "€ "„ "ˆ "Œ "� "” "˜ "œ "  "¤ "¨ "¬ "° "´ "¸ "¼ "À "Ä "È "Ì "Ð "Ô "Ø "Ü "à "ä "è "ì "ð "ô "ø "ü # # # #  # # # # #  #$ #( #, #0 #4 #8 #< #@ #D #H #L #P #T #X #\ #` #d #h #l #p #t #x #| #€ #„ #ˆ #Œ #� #” #˜ #œ #  #¤ #¨ #¬ #° #´ #¸ #¼ #À #Ä #È #Ì #Ð #Ô #Ø #Ü #à #ä #è #ì #ð #ô #ø #ü $ $ $ $  $ $ $ $ $  $$ $( $, $0 $4 $8 $< $@ $D $H $L $P $T $X $\ $` $d $h $l $p $t $x $| $€ $„ $ˆ $Œ $� $” $˜ $œ $  $¤ $¨ $¬ $° $´ $¸ $¼ $À $Ä $È $Ì $Ð $Ô $Ø $Ü $à $ä $è $ì $ð $ô $ø) $ü % % % %  % % % % %  %$ %( %, %0 %4 %8 %< %@ %D %H %L %P %T %X %\ %` %d %h %l %p %t %x %| %€ %„ %ˆ %Œ %� %” %˜ %œ %  %¤ %¨ %¬ %° %´ %¸ %¼ %À %Ä %È %Ì %Ð %Ô %Ø %Ü %à %ä %è %ì %ð %ô %ø %ü & & & &  & & & & &  &$ &( &, &0 &4 &8 &< &@ &D &H &L &P &T &X &\ &` &d &h &l &p &t &x &| &€ &„ &ˆ> &Œ> &�o &” &˜ &œ &  &¤ &¨ &¬i &° &´ &¸ &¼ &À &Ä &È &Ì &Ð &Ô &Ø &Ü &à &ä &è &ì &ð &ô &ø &ü ' ' ' '  ' ' ' ' '  '$ '( ', '0 '4 '8 '< '@ 'D 'H 'L 'P 'Te 'Xt '\ '`h 'd@ 'h@ 'l  'pq 'tl 'xn '|f '€ '„ 'ˆ 'Œ '� '” '˜? 'œ? ' ? '¤C '¨C '¬D '°D '´{ '¸z '¼Š 'À 'Ä 'È 'Ì 'Ð 'Ô 'Ø 'Ü 'à3 'ä 'è 'ì 'ð 'ô 'ø 'ü ( ( ( (  ( ( ( ( (  ($ (( (, (0 (4 (8 (< (@ (D (H (L (P' (T (X (\ (` (d (h (l (p (t (x (|\ (€T („ (ˆ (Œ (� (” (˜ (œ ( g (¤ (¨ (¬ (° (´ (¸ (¼ (À (Ä (È  (Ì  (Ð  (Ô  (Ø  (Ü  (à  (ä  (è  (ì  (ð  (ô  (ø  (ü  )  ) )‘ )  ) ) ) ) )  )$ )( ), )0 )4 )8 )< )@ )D )H )L )P )T )XY )\ )`� )d )h )l )p )t )x )| )€ )„ )ˆ )Œ )� )” )˜ )œ )  )¤ )¨ )¬  )° )´6 )¸ )¼ )À )Ä )È )Ì )Ð )Ô )Ø )Ü )à )ä )è )ì )ð )ô )ø )ü *ƒ * * *  * *ˆ * *F *  *$B *( *, *0 *4 *8 *< *@ *D *H *L *P *T *X *\ *` *d *h *l *p *t‡ *x *| *€ *„ *ˆ *Œ *� *” *˜ *œ *  *¤ *¨ *¬ *° *´ *¸ *¼ *À *Ä *È *Ì *Ð *Ô *Ø *Ü *à *ä *è *ì *ð *ô *ø *ü +G +  +  +  + + + +† + „ +$E +( +,r +0 +4 +8 +< +@ +D +H +L +P +T� +X +\ +` +d +h0 +l’ +p +t +x? +|? +€? +„? +ˆ? +Œ? +�? +”? +˜? +œ" +  +¤2 +¨ +¬ +°‰ +´ +¸ +¼ +Ày +Ä +È +Ì +Ð +Ô +Ø +Ü7 +à +ä +èM +ì +ð +ôW +øP +ü^ ,J , ,d ,  , ,L , ,Q , c ,$ ,(H ,, ,0 ,4 ,8 ,< ,@ ,D ,H ,L ,P ,T ,X ,\x ,` ,d_ ,hV ,lO ,pa ,t ,x ,| ,€ ,„` ,ˆ ,Œ ,�] ,”b ,˜ ,œ ,  ,¤ ,¨ ,¬ ,° ,´ ,¸ ,¼ ,À ,ÄK ,È ,Ì ,Ð ,Ô ,Ø ,Ü ,à ,ä ,è ,ì ,ð ,ô ,ø ,ü - - - -  -I - - - -  -$ -( -, -0 -4 -8 -< -@j -D -H‚ -L -P -T -X5 -\ -` -d -h -l -p -t -xw -|| -€m -„ -ˆ -Œ -� -”€ -˜1 -œ… - k -¤v -¨s -¬/ -° -´ -¸ -¼ -À -Ä -È~ -Ì -Ð� -Ô -Ø -ÜX -à -ä[ -è -ìN -ð -ô -ø -ü . .Z . .  . . . . .  .$ .( ., .0 .4R .8 .<S .@ .D .H .L .P .T .X .\U .` .du .€ .„ .ˆ .Œ .� .” .˜ .œ .  .¤ .¨ .¬ .° .´ .À .Ä .Ì .Ð} .Ô .Ø .ä .è .ô .ø .ü /� /‹ / / Œ / / /Ž /4 /  /$ /( /,* /0 /49 /@p /D/usr/local/lib/mysql:/usr/lib:/liblibc.ashr.olibmysqlclient.alibmysqlclient.solibreadline.alibreadline.so_system_configuration fp_raise_xcp fp_read_rnd __mod_init my_prognamedefault_charset_infomax_allowed_packetnet_buffer_length charsets_dir wild_manymysql_fetch_fieldmysql_fetch_lengthsmysql_fetch_rowmysql_field_seekmysql_data_seekmysql_free_resultmysql_optionsmysql_use_resultmysql_store_resultmysql_list_fieldsmysql_get_proto_infomysql_get_host_infomysql_get_server_info mysql_statmysql_real_query mysql_querymysql_select_db mysql_closemysql_real_connect mysql_initmysql_thread_id mysql_info mysql_error mysql_errnomysql_affected_rowsmysql_field_count mysql_eofmysql_num_fieldsmysql_num_rowsload_defaultsmy_no_flags_free my_strdupfree_defaults my_malloc my_reallocget_tty_password my_deletecreate_temp_file my_sortcmp my_casecmpunpack_filename bmove_upp my_fcloseprint_defaultsset_default_charset_by_name getopt_longset_changeable_varset_all_changeable_varslonglong10_to_str!rl_attempted_completion_functionrl_completion_entry_functionrl_readline_namecompletion_matches add_historywrite_history read_history_GLOBAL_.I.VER_GLOBAL_.D.VER.complex int:t1=s8real:-1,0,32;imag:-1,32,32;;complex float:t2=r2;4;0;complex double:t3=r3;8;0;complex long double:t4=r4;8;0;bool:t5=@s32;-16;__wchar_t:t6=r6;0;65535;]__vtbl_ptr_type:t7=s8__delta:-3,0,16;__index:-3,16,16;__pfn:8=*-11,32,32;__delta2:-3,32,16;;_G_int8_t:t9=-6_G_uint8_t:t10=-5_G_int16_t:t11=-3_G_uint16_t:t12=-7_G_int32_t:t13=-1_G_uint32_t:t14=-8_G_int64_t:t15=-31_G_uint64_t:t16=-32_G_llong:t17=-31_G_ullong:t18=-32_G_clock_t:t19=-1_G_dev_t:t20=-8_G_fpos_t:t21=-4_G_gid_t:t22=-8_G_ino_t:t23=-8_G_mode_t:t24=-8_G_nlink_t:t25=-3_G_off_t:t26=-4_G_pid_t:t27=-1_G_ptrdiff_t:t28=-4_G_sigset_t:t29=-1_G_size_t:t30=-10_G_time_t:t31=-1_G_uid_t:t32=-8_G_wchar_t:t33=-7_G_ssize_t:t34=-4_G_wint_t:t35=-1_G_va_list:t36=37=*-2_IO_lock_t:t38=-11®_IO_marker:T39=s12_next:40=*39,0,32;_sbuf:41=*42=xs_IO_FILE:,32,32;_pos:-1,64,32;__as::43=##44=&39;:RC10_IO_marker;2A.;_IO_marker::45=##40;:RC10_IO_marker;2A.46=##40;:;2A.;;_IO_marker:Tt39_IO_FILE:Tt42=s72_flags:-1,0,32;_IO_read_ptr:37,32,32;_IO_read_end:37,64,32;_IO_read_base:37,96,32;_IO_write_base:37,128,32;_IO_write_ptr:37,160,32;_IO_write_end:37,192,32;_IO_buf_base:37,224,32;_IO_buf_end:37,256,32;_IO_save_base:37,288,32;_IO_backup_base:37,320,32;_IO_save_end:37,352,32;_markers:40,384,32;_chain:41,416,32;_fileno:-1,448,32;_blksize:-1,480,32;_offset:26,512,32;_cur_column:-7,544,16;_unused:-2,560,8;_shortbuf:47=ar-1;0;0;-2,568,8;__as::48=##49=&42;:RC8_IO_FILE;2A.;_IO_FILE::50=##41;:RC8_IO_FILE;2A.51=##41;:;2A.;;ÿ_IO_cookie_io_functions_t:t52=s16read:53=*54=f34,0,32;write:55=*56=f34,32,32;seek:57=*58=f26,64,32;close:59=*60=f-1,96,32;__as::61=#52,62=&52,63=*52,64=&52,-11;:__as__3._0RC3._0;2A.;._0::65=#52,63,63,64,-11;:__3._0RC3._0;2A.66=#52,63,63,-11;:__3._0;2A.;;Ô_IO_cookie_file:Tt67=s96file:42,0,576;vtable:68=*-11,576,32;cookie:8,608,32;io_functions:52,640,128;__as::69=##70=&67;:RC15_IO_cookie_file;2A.;_IO_cookie_file::71=##72=*67;:RC15_IO_cookie_file;2A.73=##72;:;2A.;;streamoff:t74=26streampos:t75=26streamsize:t76=34__fmtflags:t77=-10__iostate:t78=-56io_state:t79=egoodbit:0,eofbit:1,failbit:2,badbit:4,;]open_mode:t80=ein:1,out:2,ate:4,app:8,trunc:16,nocreate:32,noreplace:64,bin:128,binary:128,;"seek_dir:t81=ebeg:0,cur:1,end:2,;_seek_dir:t82=81_IO_finish_t:t83=84=*85=f-11_IO_overflow_t:t86=87=*88=f-1_IO_underflow_t:t89=59_IO_pbackfail_t:t90=87_IO_xsputn_t:t91=92=*93=f30_IO_xsgetn_t:t94=95=*96=f30_IO_seekoff_t:t97=98=*99=f26_IO_seekpos_t:t100=57_IO_setbuf_t:t101=102=*103=f41_IO_sync_t:t104=59_IO_doallocate_t:t105=59_IO_read_t:t106=53_IO_write_t:t107=55_IO_seek_t:t108=57_IO_close_t:t109=59_IO_stat_t:t110=111=*112=f-1æ_IO_jump_t:Tt113=s144__dummy:114=s8delta1:-3,0,16;delta2:-3,16,16;pfn:30,32,32;__as::115=#114,116=&114,117=*114,118=&114,-11;:__as__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.;._3::119=#114,117,117,118,-11;:__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.120=#114,117,117,-11;:__Q210_IO_jump_t3._3;2A.;;,0,64;__finish:121=s8delta1:-3,0,16;delta2:-3,16,16;pfn:83,32,32;__as::122=#121,123=&121,124=*121,125=&121,-11;:__as__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.;._4::126=#121,124,124,125,-11;:__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.127=#121,124,124,-11;:__Q210_IO_jump_t3._4;2A.;;,64,64;__overflow:128=s8delta1:-3,0,16;delta2:-3,16,16;pfn:86,32,32;__as::129=#128,130=&128,131=*128,132=&128,-11;:__as__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.;._5::133=#128,131,131,132,-11;:__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.134=#128,131,131,-11;:__Q210_IO_jump_t3._5;2A.;;,128,64;__underflow:135=s8delta1:-3,0,16;delta2:-3,16,16;pfn:89,32,32;__as::136=#135,137=&135,138=*135,139=&135,-11;:__as__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.;._6::140=#135,138,138,139,-11;:__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.141=#135,138,138,-11;:__Q210_IO_jump_t3._6;2A.;;,192,64;__uflow:142=s8delta1:-3,0,16;delta2:-3,16,16;pfn:89,32,32;__as::143=#142,144=&142,145=*142,146=&142,-11;:__as__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.;._7::147=#142,145,145,146,-11;:__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.148=#142,145,145,-11;:__Q210_IO_jump_t3._7;2A.;;,256,64;__pbackfail:149=s8delta1:-3,0,16;delta2:-3,16,16;pfn:90,32,32;__as::150=#149,151=&149,152=*149,153=&149,-11;:__as__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.;._8::154=#149,152,152,153,-11;:__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.155=#149,152,152,-11;:__Q210_IO_jump_t3._8;2A.;;,320,64;__xsputn:156=s8delta1:-3,0,16;delta2:-3,16,16;pfn:91,32,32;__as::157=#156,158=&156,159=*156,160=&156,-11;:__as__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.;._9::161=#156,159,159,160,-11;:__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.162=#156,159,159,-11;:__Q210_IO_jump_t3._9;2A.;;,384,64;__xsgetn:163=s8delta1:-3,0,16;delta2:-3,16,16;pfn:94,32,32;__as::164=#163,165=&163,166=*163,167=&163,-11;:__as__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.;._10::168=#163,166,166,167,-11;:__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.169=#163,166,166,-11;:__Q210_IO_jump_t4._10;2A.;;,448,64;__seekoff:170=s8delta1:-3,0,16;delta2:-3,16,16;pfn:97,32,32;__as::171=#170,172=&170,173=*170,174=&170,-11;:__as__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.;._11::175=#170,173,173,174,-11;:__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.176=#170,173,173,-11;:__Q210_IO_jump_t4._11;2A.;;,512,64;__seekpos:177=s8delta1:-3,0,16;delta2:-3,16,16;pfn:100,32,32;__as::178=#177,179=&177,180=*177,181=&177,-11;:__as__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.;._12::182=#177,180,180,181,-11;:__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.183=#177,180,180,-11;:__Q210_IO_jump_t4._12;2A.;;,576,64;__setbuf:184=s8delta1:-3,0,16;delta2:-3,16,16;pfn:101,32,32;__as::185=#184,186=&184,187=*184,188=&184,-11;:__as__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.;._13::189=#184,187,187,188,-11;:__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.190=#184,187,187,-11;:__Q210_IO_jump_t4._13;2A.;;,640,64;__sync:191=s8delta1:-3,0,16;delta2:-3,16,16;pfn:104,32,32;__as::192=#191,193=&191,194=*191,195=&191,-11;:__as__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.;._14::196=#191,194,194,195,-11;:__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.197=#191,194,194,-11;:__Q210_IO_jump_t4._14;2A.;;,704,64;__doallocate:198=s8delta1:-3,0,16;delta2:-3,16,16;pfn:105,32,32;__as::199=#198,200=&198,201=*198,202=&198,-11;:__as__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.;._15::203=#198,201,201,202,-11;:__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.204=#198,201,201,-11;:__Q210_IO_jump_t4._15;2A.;;,768,64;__read:205=s8delta1:-3,0,16;delta2:-3,16,16;pfn:106,32,32;__as::206=#205,207=&205,208=*205,209=&205,-11;:__as__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.;._16::210=#205,208,208,209,-11;:__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.211=#205,208,208,-11;:__Q210_IO_jump_t4._16;2A.;;,832,64;__write:212=s8delta1:-3,0,16;delta2:-3,16,16;pfn:107,32,32;__as::213=#212,214=&212,215=*212,216=&212,-11;:__as__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.;._17::217=#212,215,215,216,-11;:__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.218=#212,215,215,-11;:__Q210_IO_jump_t4._17;2A.;;,896,64;__seek:219=s8delta1:-3,0,16;delta2:-3,16,16;pfn:108,32,32;__as::220=#219,221=&219,222=*219,223=&219,-11;:__as__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.;._18::224=#219,222,222,223,-11;:__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.225=#219,222,222,-11;:__Q210_IO_jump_t4._18;2A.;;,960,64;__close:226=s8delta1:-3,0,16;delta2:-3,16,16;pfn:109,32,32;__as::227=#226,228=&226,229=*226,230=&226,-11;:__as__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.;._19::231=#226,229,229,230,-11;:__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.232=#226,229,229,-11;:__Q210_IO_jump_t4._19;2A.;;,1024,64;__stat:233=s8delta1:-3,0,16;delta2:-3,16,16;pfn:110,32,32;__as::234=#233,235=&233,236=*233,237=&233,-11;:__as__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.;._20::238=#233,236,236,237,-11;:__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.239=#233,236,236,-11;:__Q210_IO_jump_t4._20;2A.;;,1088,64;__as::240=##241=&113;:RC10_IO_jump_t;2A.;_IO_jump_t::242=##243=*113;:RC10_IO_jump_t;2A.244=##243;:;2A.;;®_IO_FILE_plus:Tt245=s76file:42,0,576;vtable:246=*113,576,32;__as::247=##248=&245;:RC13_IO_FILE_plus;2A.;_IO_FILE_plus::249=##250=*245;:RC13_IO_FILE_plus;2A.251=##250;:;2A.;;int8_t:t252=-6int16_t:t253=-3int32_t:t254=-1int64_t:t255=-31uint8_t:t256=-5uint16_t:t257=-7uint32_t:t258=-8uint64_t:t259=-32intmax_t:t260=255uintmax_t:t261=259intptr_t:t262=-4uintptr_t:t263=-10int_least8_t:t264=-6int_least16_t:t265=-3int_least32_t:t266=-1int_least64_t:t267=-31uint_least8_t:t268=-5uint_least16_t:t269=-7uint_least32_t:t270=-8uint_least64_t:t271=-32__long32_t:t272=-4__ulong32_t:t273=-10__long64_t:t274=-1__ulong64_t:t275=-8int32long64_t:t276=-1uint32long64_t:t277=-8long32int64_t:t278=-4ulong32int64_t:t279=-10ptrdiff_t:t280=-4wctype_t:t281=-8fpos_t:t282=-4time_t:t283=276clock_t:t284=-1size_t:t285=-10uchar_t:t286=-5ushort_t:t287=-7uint_t:t288=-8ulong_t:t289=-10ssize_t:t290=-4level_t:t291=-1daddr_t:t292=276daddr32_t:t293=-1daddr64_t:t294=255caddr_t:t295=37ino_t:t296=277ino32_t:t297=288ino64_t:t298=259cnt_t:t299=-3dev_t:t300=277dev32_t:t301=288dev64_t:t302=259chan_t:t303=-1time32_t:t304=-1pid32_t:t305=-1tid32_t:t306=-1pid64_t:t307=259tid64_t:t308=259time64_t:t309=259__ptr32:t310=8__cptr32:t311=37soff_t:t312=-1off_t:t313=-4paddr_t:t314=-4key_t:t315=-1timer_t:t316=-1nlink_t:t317=-3mode_t:t318=288uid_t:t319=288gid_t:t320=288mid_t:t321=310pid_t:t322=-1tid_t:t323=-1slab_t:t324=325=ar-1;0;11;-2mtyp_t:t326=-4boolean_t:t327=-1blkcnt_t:t328=-4blksize_t:t329=-4fsblkcnt_t:t330=289fsfilcnt_t:t331=289wint_t:t332=-1•sigset_t:Tt333=s8__losigs:-8,0,32;__hisigs:-8,32,32;__as::334=##335=&333;:RC8sigset_t;2A.;sigset_t::336=##337=*333;:RC8sigset_t;2A.338=##337;:;2A.;;signal_t:t339=-1…fsid_t:Tt340=s8__val:341=ar-1;0;1;-8,0,64;__as::342=##343=&340;:RC6fsid_t;2A.;fsid_t::344=##345=*340;:RC6fsid_t;2A.346=##345;:;2A.;;©__ptq_queue:Tt347=s8__ptq_next:348=*347,0,32;__ptq_prev:348,32,32;__as::349=##350=&347;:RC11__ptq_queue;2A.;__ptq_queue::351=##348;:RC11__ptq_queue;2A.352=##348;:;2A.;;__ptlock_type:t353=-1*pthread_attr_t:t354=355=*356=xs__pt_attr:pthread_condattr_t:t357=355pthread_mutexattr_t:t358=355pthread_t:t359=-8pthread_key_t:t360=-8Ípthread_mutex_t:t361=s52__ptq_link:348,0,32;__reserved1:-1,32,32;__ptmtx_lock:353,64,32;__ptmtx_flags:-1,96,32;__ptmtx_owner:359,128,32;__mtx_id:-1,160,32;__acquisitions:-1,192,32;__mtx_kind:-1,224,32;__lock_cpt:-1,256,32;__sleeps:-1,288,32;__misses:-1,320,32;__reserved2:-1,352,32;__ptmtx_dbx:-10,384,32;__as::362=#361,363=&361,364=*361,365=&361,-11;:__as__4._21RC4._21;2A.;._21::366=#361,364,364,365,-11;:__4._21RC4._21;2A.367=#361,364,364,-11;:__4._21;2A.;;Ÿpthread_cond_t:t368=s44__ptcv_dbx:-10,0,32;__reserved1:-1,32,32;__ptcv_lock:353,64,32;__ptcv_flags:-1,96,32;__ptcv_waiters:348,128,32;__reserved2:-1,160,32;__cv_id:-1,192,32;__cv_mutex:364,224,32;__reserved3:-1,256,32;__cptwait:-1,288,32;__reserved:-1,320,32;__as::369=#368,370=&368,371=*368,372=&368,-11;:__as__4._22RC4._22;2A.;._22::373=#368,371,371,372,-11;:__4._22RC4._22;2A.374=#368,371,371,-11;:__4._22;2A.;;Zpthread_once_t:t375=s112__ptonce_lock:353,0,32;__ptonce_initialized:-1,32,32;__ptonce_executing:-1,64,32;__ptonce_completed:-1,96,32;__ptonce_mutex:361,128,416;__ptonce_executed:368,544,352;__as::376=#375,377=&375,378=*375,379=&375,-11;:__as__4._23RC4._23;2A.;._23::380=#375,378,378,379,-11;:__4._23RC4._23;2A.381=#375,378,378,-11;:__4._23;2A.;;stat:Tt382=s116st_dev:300,0,32;st_ino:296,32,32;st_mode:318,64,32;st_nlink:317,96,16;st_flag:287,112,16;st_uid:319,128,32;st_gid:320,160,32;st_rdev:300,192,32;st_size:313,224,32;st_atime:283,256,32;st_spare1:-1,288,32;st_mtime:283,320,32;st_spare2:-1,352,32;st_ctime:283,384,32;st_spare3:-1,416,32;st_blksize:329,448,32;st_blocks:328,480,32;st_vfstype:-1,512,32;st_vfs:288,544,32;st_type:288,576,32;st_gen:288,608,32;st_reserved:383=ar-1;0;8;-8,640,288;__as::384=##385=&382;:RC4stat;2A.;stat::386=##387=*382;:RC4stat;2A.388=##387;:;2A.;;Üflock:Tt389=s24l_type:-3,0,16;l_whence:-3,16,16;l_start:313,32,32;l_len:313,64,32;l_sysid:-8,96,32;l_pid:322,128,32;l_vfs:-1,160,32;__as::390=##391=&389;:RC5flock;2A.;flock::392=##393=*389;:RC5flock;2A.394=##393;:;2A.;;flock_t:t395=389init__7filebuf:F-11this:R396=*397=xsfilebuf:__7filebuf:F396 this:p396__7filebufi:F396__7filebufiPci:F396_._7filebuf:F-11 this:R396__in_chrg:R-1this:r398=*399=xsstreambuf:open__7filebufPCcii:F396filename:R400=*-2posix_mode:r-1read_write:r-1 this:r398open__7filebufPCcT1:F396filename:R400 mode:R400attach__7filebufi:F396setbuf__7filebufPci:F398doallocate__7filebuf:F-1overflow__7filebufi:F-1underflow__7filebuf:F-1sync__7filebuf:F-1'seekoff__7filebuflQ23ios8seek_diri:F75 offset:R74close__7filebuf:F396sys_read__7filebufPcl:F76'sys_seek__7filebuflQ23ios8seek_dir:F75sys_write__7filebufPCcl:F76sys_stat__7filebufPv:F-1sys_close__7filebuf:F-1xsputn__7filebufPCcl:F76xsgetn__7filebufPcl:F76_7filebuf.openprot:G-1"__manip:t83=84=*85=f86=&87=xsios:'__imanip:t88=89=*90=f91=&92=xsistream:'__omanip:t93=94=*95=f96=&97=xsostream:_IO_finish_t:t98=99=*100=f-11!_IO_overflow_t:t101=102=*103=f-1_IO_underflow_t:t104=59_IO_pbackfail_t:t105=102_IO_xsputn_t:t106=107=*108=f30_IO_xsgetn_t:t109=110=*111=f30 _IO_seekoff_t:t112=113=*114=f26_IO_seekpos_t:t115=57_IO_setbuf_t:t116=117=*118=f41_IO_sync_t:t119=59_IO_doallocate_t:t120=59_IO_read_t:t121=53_IO_write_t:t122=55_IO_seek_t:t123=57_IO_close_t:t124=59_IO_stat_t:t125=126=*127=f-1í_IO_jump_t:Tt128=s144__dummy:129=s8delta1:-3,0,16;delta2:-3,16,16;pfn:30,32,32;__as::130=#129,131=&129,132=*129,133=&129,-11;:__as__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.;._3::134=#129,132,132,133,-11;:__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.135=#129,132,132,-11;:__Q210_IO_jump_t3._3;2A.;;,0,64;__finish:136=s8delta1:-3,0,16;delta2:-3,16,16;pfn:98,32,32;__as::137=#136,138=&136,139=*136,140=&136,-11;:__as__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.;._4::141=#136,139,139,140,-11;:__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.142=#136,139,139,-11;:__Q210_IO_jump_t3._4;2A.;;,64,64;__overflow:143=s8delta1:-3,0,16;delta2:-3,16,16;pfn:101,32,32;__as::144=#143,145=&143,146=*143,147=&143,-11;:__as__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.;._5::148=#143,146,146,147,-11;:__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.149=#143,146,146,-11;:__Q210_IO_jump_t3._5;2A.;;,128,64;__underflow:150=s8delta1:-3,0,16;delta2:-3,16,16;pfn:104,32,32;__as::151=#150,152=&150,153=*150,154=&150,-11;:__as__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.;._6::155=#150,153,153,154,-11;:__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.156=#150,153,153,-11;:__Q210_IO_jump_t3._6;2A.;;,192,64;__uflow:157=s8delta1:-3,0,16;delta2:-3,16,16;pfn:104,32,32;__as::158=#157,159=&157,160=*157,161=&157,-11;:__as__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.;._7::162=#157,160,160,161,-11;:__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.163=#157,160,160,-11;:__Q210_IO_jump_t3._7;2A.;;,256,64;__pbackfail:164=s8delta1:-3,0,16;delta2:-3,16,16;pfn:105,32,32;__as::165=#164,166=&164,167=*164,168=&164,-11;:__as__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.;._8::169=#164,167,167,168,-11;:__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.170=#164,167,167,-11;:__Q210_IO_jump_t3._8;2A.;;,320,64;__xsputn:171=s8delta1:-3,0,16;delta2:-3,16,16;pfn:106,32,32;__as::172=#171,173=&171,174=*171,175=&171,-11;:__as__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.;._9::176=#171,174,174,175,-11;:__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.177=#171,174,174,-11;:__Q210_IO_jump_t3._9;2A.;;,384,64;__xsgetn:178=s8delta1:-3,0,16;delta2:-3,16,16;pfn:109,32,32;__as::179=#178,180=&178,181=*178,182=&178,-11;:__as__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.;._10::183=#178,181,181,182,-11;:__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.184=#178,181,181,-11;:__Q210_IO_jump_t4._10;2A.;;,448,64;__seekoff:185=s8delta1:-3,0,16;delta2:-3,16,16;pfn:112,32,32;__as::186=#185,187=&185,188=*185,189=&185,-11;:__as__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.;._11::190=#185,188,188,189,-11;:__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.191=#185,188,188,-11;:__Q210_IO_jump_t4._11;2A.;;,512,64;__seekpos:192=s8delta1:-3,0,16;delta2:-3,16,16;pfn:115,32,32;__as::193=#192,194=&192,195=*192,196=&192,-11;:__as__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.;._12::197=#192,195,195,196,-11;:__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.198=#192,195,195,-11;:__Q210_IO_jump_t4._12;2A.;;,576,64;__setbuf:199=s8delta1:-3,0,16;delta2:-3,16,16;pfn:116,32,32;__as::200=#199,201=&199,202=*199,203=&199,-11;:__as__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.;._13::204=#199,202,202,203,-11;:__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.205=#199,202,202,-11;:__Q210_IO_jump_t4._13;2A.;;,640,64;__sync:206=s8delta1:-3,0,16;delta2:-3,16,16;pfn:119,32,32;__as::207=#206,208=&206,209=*206,210=&206,-11;:__as__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.;._14::211=#206,209,209,210,-11;:__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.212=#206,209,209,-11;:__Q210_IO_jump_t4._14;2A.;;,704,64;__doallocate:213=s8delta1:-3,0,16;delta2:-3,16,16;pfn:120,32,32;__as::214=#213,215=&213,216=*213,217=&213,-11;:__as__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.;._15::218=#213,216,216,217,-11;:__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.219=#213,216,216,-11;:__Q210_IO_jump_t4._15;2A.;;,768,64;__read:220=s8delta1:-3,0,16;delta2:-3,16,16;pfn:121,32,32;__as::221=#220,222=&220,223=*220,224=&220,-11;:__as__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.;._16::225=#220,223,223,224,-11;:__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.226=#220,223,223,-11;:__Q210_IO_jump_t4._16;2A.;;,832,64;__write:227=s8delta1:-3,0,16;delta2:-3,16,16;pfn:122,32,32;__as::228=#227,229=&227,230=*227,231=&227,-11;:__as__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.;._17::232=#227,230,230,231,-11;:__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.233=#227,230,230,-11;:__Q210_IO_jump_t4._17;2A.;;,896,64;__seek:234=s8delta1:-3,0,16;delta2:-3,16,16;pfn:123,32,32;__as::235=#234,236=&234,237=*234,238=&234,-11;:__as__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.;._18::239=#234,237,237,238,-11;:__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.240=#234,237,237,-11;:__Q210_IO_jump_t4._18;2A.;;,960,64;__close:241=s8delta1:-3,0,16;delta2:-3,16,16;pfn:124,32,32;__as::242=#241,243=&241,244=*241,245=&241,-11;:__as__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.;._19::246=#241,244,244,245,-11;:__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.247=#241,244,244,-11;:__Q210_IO_jump_t4._19;2A.;;,1024,64;__stat:248=s8delta1:-3,0,16;delta2:-3,16,16;pfn:125,32,32;__as::249=#248,250=&248,251=*248,252=&248,-11;:__as__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.;._20::253=#248,251,251,252,-11;:__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.254=#248,251,251,-11;:__Q210_IO_jump_t4._20;2A.;;,1088,64;__as::255=##256=&128;:RC10_IO_jump_t;2A.;_IO_jump_t::257=##258=*128;:RC10_IO_jump_t;2A.259=##258;:;2A.;;®_IO_FILE_plus:Tt260=s76file:42,0,576;vtable:261=*128,576,32;__as::262=##263=&260;:RC13_IO_FILE_plus;2A.;_IO_FILE_plus::264=##265=*260;:RC13_IO_FILE_plus;2A.266=##265;:;2A.;;L__as__22_IO_istream_withassignR7istream:F267=&268=xs_IO_istream_withassign:this:R269=*268this:r270=*87this:r271=*87 this:r271L__as__22_IO_ostream_withassignR7ostream:F272=&273=xs_IO_ostream_withassign:this:R274=*273 this:r2701state_value:t79=e_good:0,_eof:1,_fail:2,_bad:4,;3open_mode:t80=einput:1,output:2,atend:4,append:8,;6io_state:t81=egoodbit:0,eofbit:1,failbit:2,badbit:4,;]open_mode:t82=ein:1,out:2,ate:4,app:8,trunc:16,nocreate:32,noreplace:64,bin:128,binary:128,;"seek_dir:t83=ebeg:0,cur:1,end:2,;_seek_dir:t84=83"__manip:t85=86=*87=f88=&89=xsios:'__imanip:t90=91=*92=f93=&94=xsistream:'__omanip:t95=96=*97=f98=&99=xsostream:Öostream:Tt99=s36!1,120,89;.vb89:100=*89,0;__as::101=##98;:R7ostream;2A.;ostream::102=##103=*99;:iRC7ostream;2A.104=#99,-11,103,-1,-11;:_._7ostream;2A*1;89;;do_osfx::105=##-11;:;0A.;ostream::106=##103;:i;2A.107=##103;:iP9streambufP7ostream;2A.;opfx::108=##-1;:;2A.;osfx::105:;2A.;flush::109=##98;:;2A.;put::110=##98;:c;2A.111=##98;:Uc;2A.112=##98;:Sc;2A.;write::113=##98;:PCcl;2A.114=##98;:PCUcl;2A.115=##98;:PCScl;2A.116=##98;:PCvl;2A.;seekp::117=##98;:l;2A.118=##98;:lQ23ios8seek_dir;2A.;tellp::119=##75;:;2A.;form::120=##98;:PCce;2A.;vform::121=##98;:PCcPc;2A.;__ls::110:c;2A.111:Uc;2A.112:Sc;2A.122=##98;:PCc;2A.123=##98;:PCUc;2A.124=##98;:PCSc;2A.125=##98;:PCv;2A.126=##98;:i;2A.127=##98;:Ui;2A.117:l;2A.128=##98;:Ul;2A.129=##98;:x;2A.130=##98;:Ux;2A.131=##98;:s;2A.132=##98;:Us;2A.133=##98;:b;2A.134=##98;:d;2A.135=##98;:f;2A.136=##98;:r;2A.137=##98;:PFR7ostream_R7ostream;2A.138=##98;:PFR3ios_R3ios;2A.139=##98;:P9streambuf;2A.;ostreambuf::140=##141=*142=xsstreambuf:;:;2B.;;Yistream:Tt94=s40!1,120,89;.vb89:100,0;_gcount:/130,32,32;__as::143=##93;:R7istream;2A.;istream::144=##145=*94;:iRC7istream;2A.146=#94,-11,145,-1,-11;:_._7istream;2A*1;89;;_skip_ws::147=##-1;:;1A.;istream::148=##145;:i;2A.149=##145;:iP9streambufP7ostream;2A.;get::150=##93;:Pcic;2A.151=##93;:PUcic;2A.152=##93;:Rc;2A.153=##93;:RUc;2A.;getline::154=##93;:Pcic;2A.155=##93;:PUcic;2A.;get::156=##93;:RSc;2A.157=##93;:PScic;2A.;getline::158=##93;:PScic;2A.;read::159=##93;:Pcl;2A.160=##93;:PUcl;2A.161=##93;:PScl;2A.162=##93;:Pvl;2A.;get::163=##93;:R9streambufc;2A.;gets::164=##93;:PPcc;2A.;ipfx::165=##-1;:i;2A.;ipfx0::147:;2A.;ipfx1::147:;2A.;isfx::166=##-11;:;2A.;get::147:;2A.;peek::147:;2A.;gcount::167=##30;:;2A.;ignore::168=##93;:ii;2A.;sync::147:;2A.;seekg::169=##93;:l;2A.170=##93;:lQ23ios8seek_dir;2A.;tellg::171=##75;:;2A.;putback::172=##93;:c;2A.;unget::173=##93;:;2A.;scan::174=##93;:PCce;2A.;vscan::175=##93;:PCcPc;2A.;unget::172:c;2A.;skip::176=##-1;:i;2A.;istreambuf::177=##141;:;2B.;__rs::178=##93;:Pc;2A.179=##93;:PUc;2A.180=##93;:PSc;2A.152:Rc;2A.153:RUc;2A.156:RSc;2A.181=##93;:Ri;2A.182=##93;:Rl;2A.183=##93;:Rx;2A.184=##93;:RUx;2A.185=##93;:Rs;2A.186=##93;:RUi;2A.187=##93;:RUl;2A.188=##93;:RUs;2A.189=##93;:Rb;2A.190=##93;:Rf;2A.191=##93;:Rd;2A.192=##93;:Rr;2A.193=##93;:PFR3ios_R3ios;2A.194=##93;:PFR7istream_R7istream;2A.195=##93;:P9streambuf;2A.;;Øiostream:Tt196=s44!2,020,94;0264,99;__as::197=##198=&196;:R8iostream;2A.;iostream::199=##200=*196;:iRC8iostream;2A.201=#196,-11,200,-1,-11;:_._8iostream;2A*1;89;202=##200;:i;2A.203=##200;:iP9streambufP7ostream;2A.;; _IO_istream_withassign:Tt204=s40!1,020,94;_IO_istream_withassign::205=##206=*204;:iRC22_IO_istream_withassign;2A.207=##206;:i;2A.208=#204,-11,206,-1,-11;:_._22_IO_istream_withassign;2A*1;89;;__as::209=##210=&204;:R7istream;2A.211=##210;:R22_IO_istream_withassign;2A.;; _IO_ostream_withassign:Tt212=s36!1,020,99;_IO_ostream_withassign::213=##214=*212;:iRC22_IO_ostream_withassign;2A.215=##214;:i;2A.216=#212,-11,214,-1,-11;:_._22_IO_ostream_withassign;2A*1;89;;__as::217=##218=&212;:R7ostream;2A.219=##218;:R22_IO_ostream_withassign;2A.;;ˆIostream_init:Tt220=s1__as::221=##222=&220;:RC13Iostream_init;2A.;Iostream_init::223=##224=*220;:RC13Iostream_init;2A.225=##224;:;2A.;; _IO_finish_t:t226=227=*228=f-11!_IO_overflow_t:t229=230=*231=f-1_IO_underflow_t:t232=59_IO_pbackfail_t:t233=230_IO_xsputn_t:t234=235=*236=f30_IO_xsgetn_t:t237=238=*239=f30 _IO_seekoff_t:t240=241=*242=f26_IO_seekpos_t:t243=57_IO_setbuf_t:t244=245=*246=f41_IO_sync_t:t247=59_IO_doallocate_t:t248=59_IO_read_t:t249=53_IO_write_t:t250=55_IO_seek_t:t251=57_IO_close_t:t252=59_IO_stat_t:t253=254=*255=f-1î_IO_jump_t:Tt256=s144__dummy:257=s8delta1:-3,0,16;delta2:-3,16,16;pfn:30,32,32;__as::258=#257,259=&257,260=*257,261=&257,-11;:__as__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.;._3::262=#257,260,260,261,-11;:__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.263=#257,260,260,-11;:__Q210_IO_jump_t3._3;2A.;;,0,64;__finish:264=s8delta1:-3,0,16;delta2:-3,16,16;pfn:226,32,32;__as::265=#264,266=&264,267=*264,268=&264,-11;:__as__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.;._4::269=#264,267,267,268,-11;:__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.270=#264,267,267,-11;:__Q210_IO_jump_t3._4;2A.;;,64,64;__overflow:271=s8delta1:-3,0,16;delta2:-3,16,16;pfn:229,32,32;__as::272=#271,273=&271,274=*271,275=&271,-11;:__as__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.;._5::276=#271,274,274,275,-11;:__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.277=#271,274,274,-11;:__Q210_IO_jump_t3._5;2A.;;,128,64;__underflow:278=s8delta1:-3,0,16;delta2:-3,16,16;pfn:232,32,32;__as::279=#278,280=&278,281=*278,282=&278,-11;:__as__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.;._6::283=#278,281,281,282,-11;:__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.284=#278,281,281,-11;:__Q210_IO_jump_t3._6;2A.;;,192,64;__uflow:285=s8delta1:-3,0,16;delta2:-3,16,16;pfn:232,32,32;__as::286=#285,287=&285,288=*285,289=&285,-11;:__as__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.;._7::290=#285,288,288,289,-11;:__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.291=#285,288,288,-11;:__Q210_IO_jump_t3._7;2A.;;,256,64;__pbackfail:292=s8delta1:-3,0,16;delta2:-3,16,16;pfn:233,32,32;__as::293=#292,294=&292,295=*292,296=&292,-11;:__as__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.;._8::297=#292,295,295,296,-11;:__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.298=#292,295,295,-11;:__Q210_IO_jump_t3._8;2A.;;,320,64;__xsputn:299=s8delta1:-3,0,16;delta2:-3,16,16;pfn:234,32,32;__as::300=#299,301=&299,302=*299,303=&299,-11;:__as__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.;._9::304=#299,302,302,303,-11;:__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.305=#299,302,302,-11;:__Q210_IO_jump_t3._9;2A.;;,384,64;__xsgetn:306=s8delta1:-3,0,16;delta2:-3,16,16;pfn:237,32,32;__as::307=#306,308=&306,309=*306,310=&306,-11;:__as__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.;._10::311=#306,309,309,310,-11;:__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.312=#306,309,309,-11;:__Q210_IO_jump_t4._10;2A.;;,448,64;__seekoff:313=s8delta1:-3,0,16;delta2:-3,16,16;pfn:240,32,32;__as::314=#313,315=&313,316=*313,317=&313,-11;:__as__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.;._11::318=#313,316,316,317,-11;:__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.319=#313,316,316,-11;:__Q210_IO_jump_t4._11;2A.;;,512,64;__seekpos:320=s8delta1:-3,0,16;delta2:-3,16,16;pfn:243,32,32;__as::321=#320,322=&320,323=*320,324=&320,-11;:__as__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.;._12::325=#320,323,323,324,-11;:__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.326=#320,323,323,-11;:__Q210_IO_jump_t4._12;2A.;;,576,64;__setbuf:327=s8delta1:-3,0,16;delta2:-3,16,16;pfn:244,32,32;__as::328=#327,329=&327,330=*327,331=&327,-11;:__as__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.;._13::332=#327,330,330,331,-11;:__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.333=#327,330,330,-11;:__Q210_IO_jump_t4._13;2A.;;,640,64;__sync:334=s8delta1:-3,0,16;delta2:-3,16,16;pfn:247,32,32;__as::335=#334,336=&334,337=*334,338=&334,-11;:__as__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.;._14::339=#334,337,337,338,-11;:__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.340=#334,337,337,-11;:__Q210_IO_jump_t4._14;2A.;;,704,64;__doallocate:341=s8delta1:-3,0,16;delta2:-3,16,16;pfn:248,32,32;__as::342=#341,343=&341,344=*341,345=&341,-11;:__as__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.;._15::346=#341,344,344,345,-11;:__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.347=#341,344,344,-11;:__Q210_IO_jump_t4._15;2A.;;,768,64;__read:348=s8delta1:-3,0,16;delta2:-3,16,16;pfn:249,32,32;__as::349=#348,350=&348,351=*348,352=&348,-11;:__as__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.;._16::353=#348,351,351,352,-11;:__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.354=#348,351,351,-11;:__Q210_IO_jump_t4._16;2A.;;,832,64;__write:355=s8delta1:-3,0,16;delta2:-3,16,16;pfn:250,32,32;__as::356=#355,357=&355,358=*355,359=&355,-11;:__as__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.;._17::360=#355,358,358,359,-11;:__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.361=#355,358,358,-11;:__Q210_IO_jump_t4._17;2A.;;,896,64;__seek:362=s8delta1:-3,0,16;delta2:-3,16,16;pfn:251,32,32;__as::363=#362,364=&362,365=*362,366=&362,-11;:__as__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.;._18::367=#362,365,365,366,-11;:__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.368=#362,365,365,-11;:__Q210_IO_jump_t4._18;2A.;;,960,64;__close:369=s8delta1:-3,0,16;delta2:-3,16,16;pfn:252,32,32;__as::370=#369,371=&369,372=*369,373=&369,-11;:__as__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.;._19::374=#369,372,372,373,-11;:__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.375=#369,372,372,-11;:__Q210_IO_jump_t4._19;2A.;;,1024,64;__stat:376=s8delta1:-3,0,16;delta2:-3,16,16;pfn:253,32,32;__as::377=#376,378=&376,379=*376,380=&376,-11;:__as__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.;._20::381=#376,379,379,380,-11;:__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.382=#376,379,379,-11;:__Q210_IO_jump_t4._20;2A.;;,1088,64;__as::383=##384=&256;:RC10_IO_jump_t;2A.;_IO_jump_t::385=##386=*256;:RC10_IO_jump_t;2A.387=##386;:;2A.;;®_IO_FILE_plus:Tt388=s76file:42,0,576;vtable:389=*256,576,32;__as::390=##391=&388;:RC13_IO_FILE_plus;2A.;_IO_FILE_plus::392=##393=*388;:RC13_IO_FILE_plus;2A.394=##393;:;2A.;;__gnuc_va_list:t395=37size_t:t396=-10fpos_t:t397=-4SFILE:t398=s32_ptr:399=*-5,0,32;_cnt:-1,32,32;_base:399,64,32;_bufendp:399,96,32;_flag:-3,128,16;_file:-3,144,16;__stdioid:-1,160,32;__newbase:37,192,32;_unused:400=ar-1;0;0;-4,224,32;__as::401=#398,402=&398,403=*398,404=&398,-11;:__as__4._21RC4._21;2A.;._21::405=#398,403,403,404,-11;:__4._21RC4._21;2A.406=#398,403,403,-11;:__4._21;2A.;;va_list:t407=37int8_t:t408=-6int16_t:t409=-3int32_t:t410=-1int64_t:t411=-31uint8_t:t412=-5uint16_t:t413=-7uint32_t:t414=-8uint64_t:t415=-32intmax_t:t416=411uintmax_t:t417=415intptr_t:t418=-4uintptr_t:t419=-10int_least8_t:t420=-6int_least16_t:t421=-3int_least32_t:t422=-1int_least64_t:t423=-31uint_least8_t:t424=-5uint_least16_t:t425=-7uint_least32_t:t426=-8uint_least64_t:t427=-32__long32_t:t428=-4__ulong32_t:t429=-10__long64_t:t430=-1__ulong64_t:t431=-8int32long64_t:t432=-1uint32long64_t:t433=-8long32int64_t:t434=-4ulong32int64_t:t435=-10ptrdiff_t:t436=-4wctype_t:t437=-8time_t:t438=432clock_t:t439=-1uchar_t:t440=-5ushort_t:t441=-7uint_t:t442=-8ulong_t:t443=-10ssize_t:t444=-4level_t:t445=-1daddr_t:t446=432daddr32_t:t447=-1daddr64_t:t448=411caddr_t:t449=37ino_t:t450=433ino32_t:t451=442ino64_t:t452=415cnt_t:t453=-3dev_t:t454=433dev32_t:t455=442dev64_t:t456=415chan_t:t457=-1time32_t:t458=-1pid32_t:t459=-1tid32_t:t460=-1pid64_t:t461=415tid64_t:t462=415time64_t:t463=415__ptr32:t464=8__cptr32:t465=37soff_t:t466=-1off_t:t467=-4paddr_t:t468=-4key_t:t469=-1timer_t:t470=-1nlink_t:t471=-3mode_t:t472=442uid_t:t473=442gid_t:t474=442mid_t:t475=464pid_t:t476=-1tid_t:t477=-1slab_t:t478=479=ar-1;0;11;-2mtyp_t:t480=-4boolean_t:t481=-1blkcnt_t:t482=-4blksize_t:t483=-4fsblkcnt_t:t484=443fsfilcnt_t:t485=443wint_t:t486=-1•sigset_t:Tt487=s8__losigs:-8,0,32;__hisigs:-8,32,32;__as::488=##489=&487;:RC8sigset_t;2A.;sigset_t::490=##491=*487;:RC8sigset_t;2A.492=##491;:;2A.;;signal_t:t493=-1…fsid_t:Tt494=s8__val:495=ar-1;0;1;-8,0,64;__as::496=##497=&494;:RC6fsid_t;2A.;fsid_t::498=##499=*494;:RC6fsid_t;2A.500=##499;:;2A.;;©__ptq_queue:Tt501=s8__ptq_next:502=*501,0,32;__ptq_prev:502,32,32;__as::503=##504=&501;:RC11__ptq_queue;2A.;__ptq_queue::505=##502;:RC11__ptq_queue;2A.506=##502;:;2A.;;__ptlock_type:t507=-1*pthread_attr_t:t508=509=*510=xs__pt_attr:pthread_condattr_t:t511=509pthread_mutexattr_t:t512=509pthread_t:t513=-8pthread_key_t:t514=-8Ípthread_mutex_t:t515=s52__ptq_link:502,0,32;__reserved1:-1,32,32;__ptmtx_lock:507,64,32;__ptmtx_flags:-1,96,32;__ptmtx_owner:513,128,32;__mtx_id:-1,160,32;__acquisitions:-1,192,32;__mtx_kind:-1,224,32;__lock_cpt:-1,256,32;__sleeps:-1,288,32;__misses:-1,320,32;__reserved2:-1,352,32;__ptmtx_dbx:-10,384,32;__as::516=#515,517=&515,518=*515,519=&515,-11;:__as__4._22RC4._22;2A.;._22::520=#515,518,518,519,-11;:__4._22RC4._22;2A.521=#515,518,518,-11;:__4._22;2A.;;Ÿpthread_cond_t:t522=s44__ptcv_dbx:-10,0,32;__reserved1:-1,32,32;__ptcv_lock:507,64,32;__ptcv_flags:-1,96,32;__ptcv_waiters:502,128,32;__reserved2:-1,160,32;__cv_id:-1,192,32;__cv_mutex:518,224,32;__reserved3:-1,256,32;__cptwait:-1,288,32;__reserved:-1,320,32;__as::523=#522,524=&522,525=*522,526=&522,-11;:__as__4._23RC4._23;2A.;._23::527=#522,525,525,526,-11;:__4._23RC4._23;2A.528=#522,525,525,-11;:__4._23;2A.;;Zpthread_once_t:t529=s112__ptonce_lock:507,0,32;__ptonce_initialized:-1,32,32;__ptonce_executing:-1,64,32;__ptonce_completed:-1,96,32;__ptonce_mutex:515,128,416;__ptonce_executed:522,544,352;__as::530=#529,531=&529,532=*529,533=&529,-11;:__as__4._24RC4._24;2A.;._24::534=#529,532,532,533,-11;:__4._24RC4._24;2A.535=#529,532,532,-11;:__4._24;2A.;;%__7istreamiP9streambufP7ostream:F145 this:p145__in_chrg:p-1 tied:p103 this:r100 tie_to:103skip_ws__FP9streambuf:F-1 this:r141get__7istreamRc:F93 this:R145 c:R536=&-2 this:r145this:r537=*89 this:r537peek__7istream:F-1ignore__7istreamii:F93 delim:R-1read__7istreamPcl:F93sync__7istream:F-1seekg__7istreaml:F93$seekg__7istreamlQ23ios8seek_dir:F93tellg__7istream:F75__rs__7istreamRc:F93__rs__7istreamPc:F93read_int__FR7istreamRUxRi:f-1 stream:R93val:R538=&-32 neg:R539=&-1 retval:r-1 ndigits:r-1 digit:r-1__rs__7istreamRs:F93 i:R540=&-3__rs__7istreamRUs:F93 i:R541=&-7__rs__7istreamRi:F93__rs__7istreamRUi:F93 i:R542=&-8__rs__7istreamRl:F93 i:R543=&-4__rs__7istreamRUl:F93 i:R544=&-10__rs__7istreamRx:F93 i:R545=&-31__rs__7istreamRUx:F93__rs__7istreamRb:F93 i:R546=&5__rs__7istreamRr:F93 x:R547=&-14__rs__7istreamRd:F93 x:R548=&-13__rs__7istreamRf:F93 x:R549=&-12__rs__7istreamP9streambuf:F93 sbuf:R141 inbuf:r141__ls__7ostreamc:F98 this:R103 this:r103write_int__FR7ostreamUxi:f-11 stream:R98buf:550=ar-1;0;33;-2 buf_ptr:r37show_base:r551=*-2show_base_len:r-1 show_pos:r-1 buf_len:r-1 sbuf:r141 pad_kind:r77fill_char:r-2 xdigs:r551__ls__7ostreami:F98 abs_n:r-8__ls__7ostreamUi:F98__ls__7ostreaml:F98 abs_n:r-10__ls__7ostreamUl:F98__ls__7ostreamx:F98 abs_n:r-32__ls__7ostreamUx:F98__ls__7ostreamd:F98format_char:r-1__ls__7ostreamPCc:F98__ls__7ostreamP9streambuf:F98buffer:552=ar-1;0;4095;-2 outbuf:r141 buffer:552 count:r30%__7ostreamiP9streambufP7ostream:F103 this:p103seekp__7ostreaml:F98$seekp__7ostreamlQ23ios8seek_dir:F98tellp__7ostream:F75flush__7ostream:F98flush__FR7ostream:F98ws__FR7istream:F93_skip_ws__7istream:F-1ends__FR7ostream:F98endl__FR7ostream:F98lock__FR7istream:F93unlock__FR7istream:F93lock__FR7ostream:F98unlock__FR7ostream:F98write__7ostreamPCcl:F98do_osfx__7ostream:F-11&__8iostreamiP9streambufP7ostream:F200 this:p200!_vt.7istream.3ios:553=ar-1;0;2;7close__3ios:F-11 this:R100skip__7istreami:F-1'_vt.22_IO_ostream_withassign.3ios:G553'_vt.22_IO_istream_withassign.3ios:G553_vt.8iostream.3ios:G553_vt.7istream.3ios:G553_vt.7ostream.3ios:G553__ti7ostream:G554=ar-1;0;15;-5__ti7istream:G554_._8iostream:F-11 this:R200!_._22_IO_istream_withassign:F-11 this:R206!_._22_IO_ostream_withassign:F-11 this:R214_._7ostream:F-11$__tf7ostream:F555=&556=xstype_info:__7ostreami:F103opfx__7ostream:F-1osfx__7ostream:F-11put__7ostreamc:F98put__7ostreamUc:F98put__7ostreamSc:F98write__7ostreamPCUcl:F98 s:R557=*-5write__7ostreamPCScl:F98 s:R558=*-6write__7ostreamPCvl:F98__ls__7ostreamUc:F98__ls__7ostreamSc:F98__ls__7ostreamPCUc:F98__ls__7ostreamPCSc:F98__ls__7ostreams:F98__ls__7ostreamUs:F98__ls__7ostreamb:F98__ls__7ostreamf:F98__ls__7ostreamr:F98(__ls__7ostreamPFR7ostream_R7ostream:F98 __ls__7ostreamPFR3ios_R3ios:F98ostreambuf__C7ostream:F141this:R559=*99_._7istream:F-11__tf7istream:F555__7istreami:F145_vt.7istream.3ios:553get__7istreamPUcic:F93 delim:R-2get__7istreamRUc:F93 c:R560=&-5getline__7istreamPUcic:F93get__7istreamRSc:F93 c:R561=&-6get__7istreamPScic:F93 ptr:R562=*-6getline__7istreamPScic:F93read__7istreamPUcl:F93read__7istreamPScl:F93read__7istreamPvl:F93ipfx__7istreami:F-1ipfx0__7istream:F-1ipfx1__7istream:F-1isfx__7istream:F-11get__7istream:F-1gcount__7istream:F30putback__7istreamc:F93unget__7istream:F93unget__7istreamc:F93istreambuf__C7istream:F141this:R563=*94__rs__7istreamPUc:F93__rs__7istreamPSc:F93__rs__7istreamRUc:F93__rs__7istreamRSc:F93 __rs__7istreamPFR3ios_R3ios:F93(__rs__7istreamPFR7istream_R7istream:F93__tf8iostream:F555__8iostreami:F200"__tf22_IO_istream_withassign:F555=__as__22_IO_istream_withassignR22_IO_istream_withassign:F210"__tf22_IO_ostream_withassign:F555=__as__22_IO_ostream_withassignR22_IO_ostream_withassign:F218dec__FR3ios:F88hex__FR3ios:F88oct__FR3ios:F88__ti8iostream:G554"__ti22_IO_istream_withassign:G554"__ti22_IO_ostream_withassign:G554_IO_finish_t:t74=75=*76=f-11_IO_overflow_t:t77=78=*79=f-1_IO_underflow_t:t80=59_IO_pbackfail_t:t81=78_IO_xsputn_t:t82=83=*84=f30_IO_xsgetn_t:t85=86=*87=f30_IO_seekoff_t:t88=89=*90=f26_IO_seekpos_t:t91=57_IO_setbuf_t:t92=93=*94=f41_IO_sync_t:t95=59_IO_doallocate_t:t96=59_IO_read_t:t97=53_IO_write_t:t98=55_IO_seek_t:t99=57_IO_close_t:t100=59_IO_stat_t:t101=102=*103=f-1Ó_IO_jump_t:Tt104=s144__dummy:105=s8delta1:-3,0,16;delta2:-3,16,16;pfn:30,32,32;__as::106=#105,107=&105,108=*105,109=&105,-11;:__as__Q210_IO_jump_t3._1RCQ210_IO_jump_t3._1;2A.;._1::110=#105,108,108,109,-11;:__Q210_IO_jump_t3._1RCQ210_IO_jump_t3._1;2A.111=#105,108,108,-11;:__Q210_IO_jump_t3._1;2A.;;,0,64;__finish:112=s8delta1:-3,0,16;delta2:-3,16,16;pfn:74,32,32;__as::113=#112,114=&112,115=*112,116=&112,-11;:__as__Q210_IO_jump_t3._2RCQ210_IO_jump_t3._2;2A.;._2::117=#112,115,115,116,-11;:__Q210_IO_jump_t3._2RCQ210_IO_jump_t3._2;2A.118=#112,115,115,-11;:__Q210_IO_jump_t3._2;2A.;;,64,64;__overflow:119=s8delta1:-3,0,16;delta2:-3,16,16;pfn:77,32,32;__as::120=#119,121=&119,122=*119,123=&119,-11;:__as__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.;._3::124=#119,122,122,123,-11;:__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.125=#119,122,122,-11;:__Q210_IO_jump_t3._3;2A.;;,128,64;__underflow:126=s8delta1:-3,0,16;delta2:-3,16,16;pfn:80,32,32;__as::127=#126,128=&126,129=*126,130=&126,-11;:__as__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.;._4::131=#126,129,129,130,-11;:__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.132=#126,129,129,-11;:__Q210_IO_jump_t3._4;2A.;;,192,64;__uflow:133=s8delta1:-3,0,16;delta2:-3,16,16;pfn:80,32,32;__as::134=#133,135=&133,136=*133,137=&133,-11;:__as__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.;._5::138=#133,136,136,137,-11;:__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.139=#133,136,136,-11;:__Q210_IO_jump_t3._5;2A.;;,256,64;__pbackfail:140=s8delta1:-3,0,16;delta2:-3,16,16;pfn:81,32,32;__as::141=#140,142=&140,143=*140,144=&140,-11;:__as__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.;._6::145=#140,143,143,144,-11;:__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.146=#140,143,143,-11;:__Q210_IO_jump_t3._6;2A.;;,320,64;__xsputn:147=s8delta1:-3,0,16;delta2:-3,16,16;pfn:82,32,32;__as::148=#147,149=&147,150=*147,151=&147,-11;:__as__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.;._7::152=#147,150,150,151,-11;:__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.153=#147,150,150,-11;:__Q210_IO_jump_t3._7;2A.;;,384,64;__xsgetn:154=s8delta1:-3,0,16;delta2:-3,16,16;pfn:85,32,32;__as::155=#154,156=&154,157=*154,158=&154,-11;:__as__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.;._8::159=#154,157,157,158,-11;:__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.160=#154,157,157,-11;:__Q210_IO_jump_t3._8;2A.;;,448,64;__seekoff:161=s8delta1:-3,0,16;delta2:-3,16,16;pfn:88,32,32;__as::162=#161,163=&161,164=*161,165=&161,-11;:__as__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.;._9::166=#161,164,164,165,-11;:__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.167=#161,164,164,-11;:__Q210_IO_jump_t3._9;2A.;;,512,64;__seekpos:168=s8delta1:-3,0,16;delta2:-3,16,16;pfn:91,32,32;__as::169=#168,170=&168,171=*168,172=&168,-11;:__as__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.;._10::173=#168,171,171,172,-11;:__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.174=#168,171,171,-11;:__Q210_IO_jump_t4._10;2A.;;,576,64;__setbuf:175=s8delta1:-3,0,16;delta2:-3,16,16;pfn:92,32,32;__as::176=#175,177=&175,178=*175,179=&175,-11;:__as__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.;._11::180=#175,178,178,179,-11;:__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.181=#175,178,178,-11;:__Q210_IO_jump_t4._11;2A.;;,640,64;__sync:182=s8delta1:-3,0,16;delta2:-3,16,16;pfn:95,32,32;__as::183=#182,184=&182,185=*182,186=&182,-11;:__as__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.;._12::187=#182,185,185,186,-11;:__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.188=#182,185,185,-11;:__Q210_IO_jump_t4._12;2A.;;,704,64;__doallocate:189=s8delta1:-3,0,16;delta2:-3,16,16;pfn:96,32,32;__as::190=#189,191=&189,192=*189,193=&189,-11;:__as__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.;._13::194=#189,192,192,193,-11;:__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.195=#189,192,192,-11;:__Q210_IO_jump_t4._13;2A.;;,768,64;__read:196=s8delta1:-3,0,16;delta2:-3,16,16;pfn:97,32,32;__as::197=#196,198=&196,199=*196,200=&196,-11;:__as__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.;._14::201=#196,199,199,200,-11;:__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.202=#196,199,199,-11;:__Q210_IO_jump_t4._14;2A.;;,832,64;__write:203=s8delta1:-3,0,16;delta2:-3,16,16;pfn:98,32,32;__as::204=#203,205=&203,206=*203,207=&203,-11;:__as__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.;._15::208=#203,206,206,207,-11;:__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.209=#203,206,206,-11;:__Q210_IO_jump_t4._15;2A.;;,896,64;__seek:210=s8delta1:-3,0,16;delta2:-3,16,16;pfn:99,32,32;__as::211=#210,212=&210,213=*210,214=&210,-11;:__as__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.;._16::215=#210,213,213,214,-11;:__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.216=#210,213,213,-11;:__Q210_IO_jump_t4._16;2A.;;,960,64;__close:217=s8delta1:-3,0,16;delta2:-3,16,16;pfn:100,32,32;__as::218=#217,219=&217,220=*217,221=&217,-11;:__as__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.;._17::222=#217,220,220,221,-11;:__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.223=#217,220,220,-11;:__Q210_IO_jump_t4._17;2A.;;,1024,64;__stat:224=s8delta1:-3,0,16;delta2:-3,16,16;pfn:101,32,32;__as::225=#224,226=&224,227=*224,228=&224,-11;:__as__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.;._18::229=#224,227,227,228,-11;:__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.230=#224,227,227,-11;:__Q210_IO_jump_t4._18;2A.;;,1088,64;__as::231=##232=&104;:RC10_IO_jump_t;2A.;_IO_jump_t::233=##234=*104;:RC10_IO_jump_t;2A.235=##234;:;2A.;;®_IO_FILE_plus:Tt236=s76file:42,0,576;vtable:237=*104,576,32;__as::238=##239=&236;:RC13_IO_FILE_plus;2A.;_IO_FILE_plus::240=##241=*236;:RC13_IO_FILE_plus;2A.242=##241;:;2A.;;streamoff:t243=26streampos:t244=26streamsize:t245=34__fmtflags:t246=-10__iostate:t247=-57io_state:t248=egoodbit:0,eofbit:1,failbit:2,badbit:4,;^open_mode:t249=ein:1,out:2,ate:4,app:8,trunc:16,nocreate:32,noreplace:64,bin:128,binary:128,;#seek_dir:t250=ebeg:0,cur:1,end:2,;_seek_dir:t251=250'__manip:t252=253=*254=f255=&256=xsios:,__imanip:t257=258=*259=f260=&261=xsistream:,__omanip:t262=263=*264=f265=&266=xsostream:int8_t:t267=-6int16_t:t268=-3int32_t:t269=-1int64_t:t270=-31uint8_t:t271=-5uint16_t:t272=-7uint32_t:t273=-8uint64_t:t274=-32intmax_t:t275=270uintmax_t:t276=274intptr_t:t277=-4uintptr_t:t278=-10int_least8_t:t279=-6int_least16_t:t280=-3int_least32_t:t281=-1int_least64_t:t282=-31uint_least8_t:t283=-5uint_least16_t:t284=-7uint_least32_t:t285=-8uint_least64_t:t286=-32__long32_t:t287=-4__ulong32_t:t288=-10__long64_t:t289=-1__ulong64_t:t290=-8int32long64_t:t291=-1uint32long64_t:t292=-8long32int64_t:t293=-4ulong32int64_t:t294=-10ptrdiff_t:t295=-4wctype_t:t296=-8fpos_t:t297=-4time_t:t298=291clock_t:t299=-1size_t:t300=-10uchar_t:t301=-5ushort_t:t302=-7uint_t:t303=-8ulong_t:t304=-10ssize_t:t305=-4level_t:t306=-1daddr_t:t307=291daddr32_t:t308=-1daddr64_t:t309=270caddr_t:t310=37ino_t:t311=292ino32_t:t312=303ino64_t:t313=274cnt_t:t314=-3dev_t:t315=292dev32_t:t316=303dev64_t:t317=274chan_t:t318=-1time32_t:t319=-1pid32_t:t320=-1tid32_t:t321=-1pid64_t:t322=274tid64_t:t323=274time64_t:t324=274__ptr32:t325=8__cptr32:t326=37soff_t:t327=-1off_t:t328=-4paddr_t:t329=-4key_t:t330=-1timer_t:t331=-1nlink_t:t332=-3mode_t:t333=303uid_t:t334=303gid_t:t335=303mid_t:t336=325pid_t:t337=-1tid_t:t338=-1slab_t:t339=340=ar-1;0;11;-2mtyp_t:t341=-4boolean_t:t342=-1blkcnt_t:t343=-4blksize_t:t344=-4fsblkcnt_t:t345=304fsfilcnt_t:t346=304wint_t:t347=-1•sigset_t:Tt348=s8__losigs:-8,0,32;__hisigs:-8,32,32;__as::349=##350=&348;:RC8sigset_t;2A.;sigset_t::351=##352=*348;:RC8sigset_t;2A.353=##352;:;2A.;;signal_t:t354=-1…fsid_t:Tt355=s8__val:356=ar-1;0;1;-8,0,64;__as::357=##358=&355;:RC6fsid_t;2A.;fsid_t::359=##360=*355;:RC6fsid_t;2A.361=##360;:;2A.;;©__ptq_queue:Tt362=s8__ptq_next:363=*362,0,32;__ptq_prev:363,32,32;__as::364=##365=&362;:RC11__ptq_queue;2A.;__ptq_queue::366=##363;:RC11__ptq_queue;2A.367=##363;:;2A.;;__ptlock_type:t368=-1*pthread_attr_t:t369=370=*371=xs__pt_attr:pthread_condattr_t:t372=370pthread_mutexattr_t:t373=370pthread_t:t374=-8pthread_key_t:t375=-8Ípthread_mutex_t:t376=s52__ptq_link:363,0,32;__reserved1:-1,32,32;__ptmtx_lock:368,64,32;__ptmtx_flags:-1,96,32;__ptmtx_owner:374,128,32;__mtx_id:-1,160,32;__acquisitions:-1,192,32;__mtx_kind:-1,224,32;__lock_cpt:-1,256,32;__sleeps:-1,288,32;__misses:-1,320,32;__reserved2:-1,352,32;__ptmtx_dbx:-10,384,32;__as::377=#376,378=&376,379=*376,380=&376,-11;:__as__4._21RC4._21;2A.;._21::381=#376,379,379,380,-11;:__4._21RC4._21;2A.382=#376,379,379,-11;:__4._21;2A.;;Ÿpthread_cond_t:t383=s44__ptcv_dbx:-10,0,32;__reserved1:-1,32,32;__ptcv_lock:368,64,32;__ptcv_flags:-1,96,32;__ptcv_waiters:363,128,32;__reserved2:-1,160,32;__cv_id:-1,192,32;__cv_mutex:379,224,32;__reserved3:-1,256,32;__cptwait:-1,288,32;__reserved:-1,320,32;__as::384=#383,385=&383,386=*383,387=&383,-11;:__as__4._22RC4._22;2A.;._22::388=#383,386,386,387,-11;:__4._22RC4._22;2A.389=#383,386,386,-11;:__4._22;2A.;;Zpthread_once_t:t390=s112__ptonce_lock:368,0,32;__ptonce_initialized:-1,32,32;__ptonce_executing:-1,64,32;__ptonce_completed:-1,96,32;__ptonce_mutex:376,128,416;__ptonce_executed:383,544,352;__as::391=#390,392=&390,393=*390,394=&390,-11;:__as__4._23RC4._23;2A.;._23::395=#390,393,393,394,-11;:__4._23RC4._23;2A.396=#390,393,393,-11;:__4._23;2A.;;getline__7istreamPcic:F260this:R397=*261this:r398=*256this:r399=*256 this:r397sb:r400=*401=xsstreambuf: this:r399 this:r400get__7istreamPcic:F260 this:R397"_sb_readline__FP9streambufRlc:F37total:R402=&-4terminator:R-2buf:403=ar-1;0;511;-2old_total:r-4gets__7istreamPPcc:F260 s:R404=*37__gnuc_va_list:t267=37va_list:t268=267scan__7istreamPCce:F260this:R269=*261format:p270=*-2 format:r270 this:r269this:r271=*256vscan__7istreamPCcPc:F260 this:R269 format:R270__gnuc_va_list:t252=37va_list:t253=252 vscan__9streambufPCcPcP3ios:F-1this:R254=*255=xsstreambuf:fmt0:R256=*-2stream:R257=*258=xsios: errcode:-1 count:r-1 this:r257this:r259=*258scan__9streambufPCce:F-1 this:R254 format:p256size_t:t268=-10fpos_t:t269=-4SFILE:t270=s32_ptr:271=*-5,0,32;_cnt:-1,32,32;_base:271,64,32;_bufendp:271,96,32;_flag:-3,128,16;_file:-3,144,16;__stdioid:-1,160,32;__newbase:37,192,32;_unused:272=ar-1;0;0;-4,224,32;__as::273=#270,274=&270,275=*270,276=&270,-11;:__as__4._21RC4._21;2A.;._21::277=#270,275,275,276,-11;:__4._21RC4._21;2A.278=#270,275,275,-11;:__4._21;2A.;;va_list:t279=37int8_t:t280=-6int16_t:t281=-3int32_t:t282=-1int64_t:t283=-31uint8_t:t284=-5uint16_t:t285=-7uint32_t:t286=-8uint64_t:t287=-32intmax_t:t288=283uintmax_t:t289=287intptr_t:t290=-4uintptr_t:t291=-10int_least8_t:t292=-6int_least16_t:t293=-3int_least32_t:t294=-1int_least64_t:t295=-31uint_least8_t:t296=-5uint_least16_t:t297=-7uint_least32_t:t298=-8uint_least64_t:t299=-32__long32_t:t300=-4__ulong32_t:t301=-10__long64_t:t302=-1__ulong64_t:t303=-8int32long64_t:t304=-1uint32long64_t:t305=-8long32int64_t:t306=-4ulong32int64_t:t307=-10ptrdiff_t:t308=-4wctype_t:t309=-8time_t:t310=304clock_t:t311=-1uchar_t:t312=-5ushort_t:t313=-7uint_t:t314=-8ulong_t:t315=-10ssize_t:t316=-4level_t:t317=-1daddr_t:t318=304daddr32_t:t319=-1daddr64_t:t320=283caddr_t:t321=37ino_t:t322=305ino32_t:t323=314ino64_t:t324=287cnt_t:t325=-3dev_t:t326=305dev32_t:t327=314dev64_t:t328=287chan_t:t329=-1time32_t:t330=-1pid32_t:t331=-1tid32_t:t332=-1pid64_t:t333=287tid64_t:t334=287time64_t:t335=287__ptr32:t336=8__cptr32:t337=37soff_t:t338=-1off_t:t339=-4paddr_t:t340=-4key_t:t341=-1timer_t:t342=-1nlink_t:t343=-3mode_t:t344=314uid_t:t345=314gid_t:t346=314mid_t:t347=336pid_t:t348=-1tid_t:t349=-1slab_t:t350=351=ar-1;0;11;-2mtyp_t:t352=-4boolean_t:t353=-1blkcnt_t:t354=-4blksize_t:t355=-4fsblkcnt_t:t356=315fsfilcnt_t:t357=315wint_t:t358=-1•sigset_t:Tt359=s8__losigs:-8,0,32;__hisigs:-8,32,32;__as::360=##361=&359;:RC8sigset_t;2A.;sigset_t::362=##363=*359;:RC8sigset_t;2A.364=##363;:;2A.;;signal_t:t365=-1…fsid_t:Tt366=s8__val:367=ar-1;0;1;-8,0,64;__as::368=##369=&366;:RC6fsid_t;2A.;fsid_t::370=##371=*366;:RC6fsid_t;2A.372=##371;:;2A.;;©__ptq_queue:Tt373=s8__ptq_next:374=*373,0,32;__ptq_prev:374,32,32;__as::375=##376=&373;:RC11__ptq_queue;2A.;__ptq_queue::377=##374;:RC11__ptq_queue;2A.378=##374;:;2A.;;__ptlock_type:t379=-1*pthread_attr_t:t380=381=*382=xs__pt_attr:pthread_condattr_t:t383=381pthread_mutexattr_t:t384=381pthread_t:t385=-8pthread_key_t:t386=-8Ípthread_mutex_t:t387=s52__ptq_link:374,0,32;__reserved1:-1,32,32;__ptmtx_lock:379,64,32;__ptmtx_flags:-1,96,32;__ptmtx_owner:385,128,32;__mtx_id:-1,160,32;__acquisitions:-1,192,32;__mtx_kind:-1,224,32;__lock_cpt:-1,256,32;__sleeps:-1,288,32;__misses:-1,320,32;__reserved2:-1,352,32;__ptmtx_dbx:-10,384,32;__as::388=#387,389=&387,390=*387,391=&387,-11;:__as__4._22RC4._22;2A.;._22::392=#387,390,390,391,-11;:__4._22RC4._22;2A.393=#387,390,390,-11;:__4._22;2A.;;Ÿpthread_cond_t:t394=s44__ptcv_dbx:-10,0,32;__reserved1:-1,32,32;__ptcv_lock:379,64,32;__ptcv_flags:-1,96,32;__ptcv_waiters:374,128,32;__reserved2:-1,160,32;__cv_id:-1,192,32;__cv_mutex:390,224,32;__reserved3:-1,256,32;__cptwait:-1,288,32;__reserved:-1,320,32;__as::395=#394,396=&394,397=*394,398=&394,-11;:__as__4._23RC4._23;2A.;._23::399=#394,397,397,398,-11;:__4._23RC4._23;2A.400=#394,397,397,-11;:__4._23;2A.;;Zpthread_once_t:t401=s112__ptonce_lock:379,0,32;__ptonce_initialized:-1,32,32;__ptonce_executing:-1,64,32;__ptonce_completed:-1,96,32;__ptonce_mutex:387,128,416;__ptonce_executed:394,544,352;__as::402=#401,403=&401,404=*401,405=&401,-11;:__as__4._24RC4._24;2A.;._24::406=#401,404,404,405,-11;:__4._24RC4._24;2A.407=#401,404,404,-11;:__4._24;2A.;;stdiobuf:Tt408=s80!1,020,409=xsfilebuf:;_file:/1275,608,32;__as::410=##411=&408;:RC8stdiobuf;2A.;stdiobuf::412=##413=*408;:RC8stdiobuf;2A.;stdiofile::414=##275;:;2B.;stdiobuf::415=##413;:P4FILE;2A.416=#408,-11,413,-1,-11;:_._8stdiobuf;2A*1;417=xsstreambuf:;;buffered::418=##-1;:;2B.416:i;2A.;sys_read::419=##245;:Pcl;2A*13;417;;sys_seek::420=##244;:lQ23ios8seek_dir;2A*15;417;;sys_write::421=##245;:PCcl;2A*14;417;;sys_close::422=##-1;:;2A*16;417;;sync::422:;2A*11;417;;overflow::423=##-1;:i;2A*2;417;;xsputn::421:PCcl;2A*6;417;;;~%417;istdiostream:Tt424=s120!1,020,261;_file:/0408,64,640;__as::425=##426=&424;:R12istdiostream;2A.;istdiostream::427=##428=*424;:iRC12istdiostream;2A.429=#424,-11,428,-1,-11;:_._12istdiostream;2A*1;256;430=##428;:iP4FILE;2A.;rdbuf::431=##413;:;2A.;buffered::432=##-1;:;2B.429:i;2A.;;ostdiostream:Tt433=s116!1,020,266;_file:/0408,32,640;__as::434=##435=&433;:R12ostdiostream;2A.;ostdiostream::436=##437=*433;:iRC12ostdiostream;2A.438=#433,-11,437,-1,-11;:_._12ostdiostream;2A*1;256;439=##437;:iP4FILE;2A.;rdbuf::440=##413;:;2A.;buffered::441=##-1;:;2B.438:i;2A.;;__8stdiobufP4FILE:F413 this:p413_._8stdiobuf:F-11 this:R413sys_read__8stdiobufPcl:F245 size:R245sys_write__8stdiobufPCcl:F245 buf:R442=*-2 count:r34)sys_seek__8stdiobuflQ23ios8seek_dir:F244 offset:R243sys_close__8stdiobuf:F-1sync__8stdiobuf:F-1this:r443=*417overflow__8stdiobufi:F-1xsputn__8stdiobufPCcl:F245this:r444=*408buffered__8stdiobufi:F-11(_vt.12ostdiostream.3ios:G445=ar-1;0;2;7_vt.12istdiostream.3ios:G445_vt.8stdiobuf:G446=ar-1;0;18;7 __ti8stdiobuf:G447=ar-1;0;11;-5_._12istdiostream:F-11 this:R428this:r448=*261_._12ostdiostream:F-11 this:R437this:r450=*266%__tf8stdiobuf:F451=&452=xstype_info:stdiofile__C8stdiobuf:F275 this:R444buffered__C8stdiobuf:F-1__tf12istdiostream:F451__12istdiostreamiP4FILE:F428 this:p428_vt.12istdiostream.3ios:445_vt.7istream.3ios:445this:r453=*256 this:r453rdbuf__12istdiostream:F413buffered__C12istdiostream:F-1this:R454=*424buffered__12istdiostreami:F-11__tf12ostdiostream:F451__12ostdiostreamiP4FILE:F437 this:p437_vt.12ostdiostream.3ios:445rdbuf__12ostdiostream:F413buffered__C12ostdiostream:F-1this:R455=*433buffered__12ostdiostreami:F-11%__ti12istdiostream:G449=ar-1;0;15;-5__ti12ostdiostream:G449__gnuc_va_list:t243=37size_t:t244=-10fpos_t:t245=-4SFILE:t246=s32_ptr:247=*-5,0,32;_cnt:-1,32,32;_base:247,64,32;_bufendp:247,96,32;_flag:-3,128,16;_file:-3,144,16;__stdioid:-1,160,32;__newbase:37,192,32;_unused:248=ar-1;0;0;-4,224,32;__as::249=#246,250=&246,251=*246,252=&246,-11;:__as__4._19RC4._19;2A.;._19::253=#246,251,251,252,-11;:__4._19RC4._19;2A.254=#246,251,251,-11;:__4._19;2A.;;va_list:t255=37int8_t:t256=-6int16_t:t257=-3int32_t:t258=-1int64_t:t259=-31uint8_t:t260=-5uint16_t:t261=-7uint32_t:t262=-8uint64_t:t263=-32intmax_t:t264=259uintmax_t:t265=263intptr_t:t266=-4uintptr_t:t267=-10int_least8_t:t268=-6int_least16_t:t269=-3int_least32_t:t270=-1int_least64_t:t271=-31uint_least8_t:t272=-5uint_least16_t:t273=-7uint_least32_t:t274=-8uint_least64_t:t275=-32__long32_t:t276=-4__ulong32_t:t277=-10__long64_t:t278=-1__ulong64_t:t279=-8int32long64_t:t280=-1uint32long64_t:t281=-8long32int64_t:t282=-4ulong32int64_t:t283=-10ptrdiff_t:t284=-4wctype_t:t285=-8time_t:t286=280clock_t:t287=-1uchar_t:t288=-5ushort_t:t289=-7uint_t:t290=-8ulong_t:t291=-10ssize_t:t292=-4level_t:t293=-1daddr_t:t294=280daddr32_t:t295=-1daddr64_t:t296=259caddr_t:t297=37ino_t:t298=281ino32_t:t299=290ino64_t:t300=263cnt_t:t301=-3dev_t:t302=281dev32_t:t303=290dev64_t:t304=263chan_t:t305=-1time32_t:t306=-1pid32_t:t307=-1tid32_t:t308=-1pid64_t:t309=263tid64_t:t310=263time64_t:t311=263__ptr32:t312=8__cptr32:t313=37soff_t:t314=-1off_t:t315=-4paddr_t:t316=-4key_t:t317=-1timer_t:t318=-1nlink_t:t319=-3mode_t:t320=290uid_t:t321=290gid_t:t322=290mid_t:t323=312pid_t:t324=-1tid_t:t325=-1slab_t:t326=327=ar-1;0;11;-2mtyp_t:t328=-4boolean_t:t329=-1blkcnt_t:t330=-4blksize_t:t331=-4fsblkcnt_t:t332=291fsfilcnt_t:t333=291wint_t:t334=-1•sigset_t:Tt335=s8__losigs:-8,0,32;__hisigs:-8,32,32;__as::336=##337=&335;:RC8sigset_t;2A.;sigset_t::338=##339=*335;:RC8sigset_t;2A.340=##339;:;2A.;;signal_t:t341=-1…fsid_t:Tt342=s8__val:343=ar-1;0;1;-8,0,64;__as::344=##345=&342;:RC6fsid_t;2A.;fsid_t::346=##347=*342;:RC6fsid_t;2A.348=##347;:;2A.;;©__ptq_queue:Tt349=s8__ptq_next:350=*349,0,32;__ptq_prev:350,32,32;__as::351=##352=&349;:RC11__ptq_queue;2A.;__ptq_queue::353=##350;:RC11__ptq_queue;2A.354=##350;:;2A.;;__ptlock_type:t355=-1*pthread_attr_t:t356=357=*358=xs__pt_attr:pthread_condattr_t:t359=357pthread_mutexattr_t:t360=357pthread_t:t361=-8pthread_key_t:t362=-8Ípthread_mutex_t:t363=s52__ptq_link:350,0,32;__reserved1:-1,32,32;__ptmtx_lock:355,64,32;__ptmtx_flags:-1,96,32;__ptmtx_owner:361,128,32;__mtx_id:-1,160,32;__acquisitions:-1,192,32;__mtx_kind:-1,224,32;__lock_cpt:-1,256,32;__sleeps:-1,288,32;__misses:-1,320,32;__reserved2:-1,352,32;__ptmtx_dbx:-10,384,32;__as::364=#363,365=&363,366=*363,367=&363,-11;:__as__4._20RC4._20;2A.;._20::368=#363,366,366,367,-11;:__4._20RC4._20;2A.369=#363,366,366,-11;:__4._20;2A.;;Ÿpthread_cond_t:t370=s44__ptcv_dbx:-10,0,32;__reserved1:-1,32,32;__ptcv_lock:355,64,32;__ptcv_flags:-1,96,32;__ptcv_waiters:350,128,32;__reserved2:-1,160,32;__cv_id:-1,192,32;__cv_mutex:366,224,32;__reserved3:-1,256,32;__cptwait:-1,288,32;__reserved:-1,320,32;__as::371=#370,372=&370,373=*370,374=&370,-11;:__as__4._21RC4._21;2A.;._21::375=#370,373,373,374,-11;:__4._21RC4._21;2A.376=#370,373,373,-11;:__4._21;2A.;;Zpthread_once_t:t377=s112__ptonce_lock:355,0,32;__ptonce_initialized:-1,32,32;__ptonce_executing:-1,64,32;__ptonce_completed:-1,96,32;__ptonce_mutex:363,128,416;__ptonce_executed:370,544,352;__as::378=#377,379=&377,380=*377,381=&377,-11;:__as__4._22RC4._22;2A.;._22::382=#377,380,380,381,-11;:__4._22RC4._22;2A.383=#377,380,380,-11;:__4._22;2A.;;_IO_stdin_:G236_IO_stdout_:G236_IO_stderr_:G236streamoff:t384=26streampos:t385=26streamsize:t386=34__fmtflags:t387=-10__iostate:t388=-57io_state:t389=egoodbit:0,eofbit:1,failbit:2,badbit:4,;^open_mode:t390=ein:1,out:2,ate:4,app:8,trunc:16,nocreate:32,noreplace:64,bin:128,binary:128,;#seek_dir:t391=ebeg:0,cur:1,end:2,;_seek_dir:t392=391'__manip:t393=394=*395=f396=&397=xsios:,__imanip:t398=399=*400=f401=&402=xsistream:,__omanip:t403=404=*405=f406=&407=xsostream:â_IO_fake_stdiobuf:Tt408=s80s:409=s76file:42,0,576;vtable:68,576,32;__as::410=#409,411=&409,412=*409,413=&409,-11;:__as__Q217_IO_fake_stdiobuf4._25RCQ217_IO_fake_stdiobuf4._25;2A.;._25::414=#409,412,412,413,-11;:__Q217_IO_fake_stdiobuf4._25RCQ217_IO_fake_stdiobuf4._25;2A.415=#409,412,412,-11;:__Q217_IO_fake_stdiobuf4._25;2A.;;,0,608;stdio_file:251,608,32;__as::416=##417=&408;:RC17_IO_fake_stdiobuf;2A.;_IO_fake_stdiobuf::418=##419=*408;:RC17_IO_fake_stdiobuf;2A.420=##419;:;2A.;;_IO_stdin_buf:G408_IO_stdout_buf:G408_IO_stderr_buf:G408_IO_list_all:G41size_t:t253=-10fpos_t:t254=-4SFILE:t255=s32_ptr:256=*-5,0,32;_cnt:-1,32,32;_base:256,64,32;_bufendp:256,96,32;_flag:-3,128,16;_file:-3,144,16;__stdioid:-1,160,32;__newbase:37,192,32;_unused:257=ar-1;0;0;-4,224,32;__as::258=#255,259=&255,260=*255,261=&255,-11;:__as__4._21RC4._21;2A.;._21::262=#255,260,260,261,-11;:__4._21RC4._21;2A.263=#255,260,260,-11;:__4._21;2A.;;va_list:t264=37int8_t:t265=-6int16_t:t266=-3int32_t:t267=-1int64_t:t268=-31uint8_t:t269=-5uint16_t:t270=-7uint32_t:t271=-8uint64_t:t272=-32intmax_t:t273=268uintmax_t:t274=272intptr_t:t275=-4uintptr_t:t276=-10int_least8_t:t277=-6int_least16_t:t278=-3int_least32_t:t279=-1int_least64_t:t280=-31uint_least8_t:t281=-5uint_least16_t:t282=-7uint_least32_t:t283=-8uint_least64_t:t284=-32__long32_t:t285=-4__ulong32_t:t286=-10__long64_t:t287=-1__ulong64_t:t288=-8int32long64_t:t289=-1uint32long64_t:t290=-8long32int64_t:t291=-4ulong32int64_t:t292=-10ptrdiff_t:t293=-4wctype_t:t294=-8time_t:t295=289clock_t:t296=-1uchar_t:t297=-5ushort_t:t298=-7uint_t:t299=-8ulong_t:t300=-10ssize_t:t301=-4level_t:t302=-1daddr_t:t303=289daddr32_t:t304=-1daddr64_t:t305=268caddr_t:t306=37ino_t:t307=290ino32_t:t308=299ino64_t:t309=272cnt_t:t310=-3dev_t:t311=290dev32_t:t312=299dev64_t:t313=272chan_t:t314=-1time32_t:t315=-1pid32_t:t316=-1tid32_t:t317=-1pid64_t:t318=272tid64_t:t319=272time64_t:t320=272__ptr32:t321=8__cptr32:t322=37soff_t:t323=-1off_t:t324=-4paddr_t:t325=-4key_t:t326=-1timer_t:t327=-1nlink_t:t328=-3mode_t:t329=299uid_t:t330=299gid_t:t331=299mid_t:t332=321pid_t:t333=-1tid_t:t334=-1slab_t:t335=336=ar-1;0;11;-2mtyp_t:t337=-4boolean_t:t338=-1blkcnt_t:t339=-4blksize_t:t340=-4fsblkcnt_t:t341=300fsfilcnt_t:t342=300wint_t:t343=-1•sigset_t:Tt344=s8__losigs:-8,0,32;__hisigs:-8,32,32;__as::345=##346=&344;:RC8sigset_t;2A.;sigset_t::347=##348=*344;:RC8sigset_t;2A.349=##348;:;2A.;;signal_t:t350=-1…fsid_t:Tt351=s8__val:352=ar-1;0;1;-8,0,64;__as::353=##354=&351;:RC6fsid_t;2A.;fsid_t::355=##356=*351;:RC6fsid_t;2A.357=##356;:;2A.;;©__ptq_queue:Tt358=s8__ptq_next:359=*358,0,32;__ptq_prev:359,32,32;__as::360=##361=&358;:RC11__ptq_queue;2A.;__ptq_queue::362=##359;:RC11__ptq_queue;2A.363=##359;:;2A.;;__ptlock_type:t364=-1*pthread_attr_t:t365=366=*367=xs__pt_attr:pthread_condattr_t:t368=366pthread_mutexattr_t:t369=366pthread_t:t370=-8pthread_key_t:t371=-8Ípthread_mutex_t:t372=s52__ptq_link:359,0,32;__reserved1:-1,32,32;__ptmtx_lock:364,64,32;__ptmtx_flags:-1,96,32;__ptmtx_owner:370,128,32;__mtx_id:-1,160,32;__acquisitions:-1,192,32;__mtx_kind:-1,224,32;__lock_cpt:-1,256,32;__sleeps:-1,288,32;__misses:-1,320,32;__reserved2:-1,352,32;__ptmtx_dbx:-10,384,32;__as::373=#372,374=&372,375=*372,376=&372,-11;:__as__4._22RC4._22;2A.;._22::377=#372,375,375,376,-11;:__4._22RC4._22;2A.378=#372,375,375,-11;:__4._22;2A.;;Ÿpthread_cond_t:t379=s44__ptcv_dbx:-10,0,32;__reserved1:-1,32,32;__ptcv_lock:364,64,32;__ptcv_flags:-1,96,32;__ptcv_waiters:359,128,32;__reserved2:-1,160,32;__cv_id:-1,192,32;__cv_mutex:375,224,32;__reserved3:-1,256,32;__cptwait:-1,288,32;__reserved:-1,320,32;__as::380=#379,381=&379,382=*379,383=&379,-11;:__as__4._23RC4._23;2A.;._23::384=#379,382,382,383,-11;:__4._23RC4._23;2A.385=#379,382,382,-11;:__4._23;2A.;;Zpthread_once_t:t386=s112__ptonce_lock:364,0,32;__ptonce_initialized:-1,32,32;__ptonce_executing:-1,64,32;__ptonce_completed:-1,96,32;__ptonce_mutex:372,128,416;__ptonce_executed:379,544,352;__as::387=#386,388=&386,389=*386,390=&386,-11;:__as__4._24RC4._24;2A.;._24::391=#386,389,389,390,-11;:__4._24RC4._24;2A.392=#386,389,389,-11;:__4._24;2A.;;use_stdiobuf:S-1myfields:Tt408=s8vb:409=*410=xs_ios_fields:,0,32;_gcount:34,32,32;__as::411=##412=&408;:Q213_fake_istream8myfieldsRCQ213_fake_istream8myfields;2A.;myfields::413=##414=*408;:__Q213_fake_istream8myfieldsRCQ213_fake_istream8myfields;2A.415=##414;:__Q213_fake_istream8myfields;2A.;;¹_fake_istream:Tt416=s48mine:408,0,64;base:410,64,224;filler:336,288,96;__as::417=##418=&416;:RC13_fake_istream;2A.;_fake_istream::419=##420=*416;:RC13_fake_istream;2A.421=##420;:;2A.;;òmyfields:Tt422=s4vb:409,0,32;__as::423=##424=&422;:Q213_fake_ostream8myfieldsRCQ213_fake_ostream8myfields;2A.;myfields::425=##426=*422;:__Q213_fake_ostream8myfieldsRCQ213_fake_ostream8myfields;2A.427=##426;:__Q213_fake_ostream8myfields;2A.;;Å_fake_ostream:Tt428=s40mine:422,0,32;base:410,32,224;filler:429=ar-1;0;7;-2,256,64;__as::430=##431=&428;:RC13_fake_ostream;2A.;_fake_ostream::432=##433=*428;:RC13_fake_ostream;2A.434=##433;:;2A.;; cout:G428 cerr:G428 clog:G428sync_with_stdio__3iosi:F-1new_state:R-1old_state:r-11_ios_fields:Tt79=s28_strbuf:80=*81=xsstreambuf:,0,32;_tie:82=*83=xsostream:,32,32;_width:-1,64,32;_flags:77,96,32;_fill:-3,128,16;_state:78,144,8;_exceptions:78,152,8;_precision:-1,160,32;_arrays:8,192,32;__as::84=##85=&79;:RC11_ios_fields;2A.;_ios_fields::86=##87=*79;:RC11_ios_fields;2A.88=##87;:;2A.;;1state_value:t89=e_good:0,_eof:1,_fail:2,_bad:4,;3open_mode:t90=einput:1,output:2,atend:4,append:8,;6io_state:t91=egoodbit:0,eofbit:1,failbit:2,badbit:4,;]open_mode:t92=ein:1,out:2,ate:4,app:8,trunc:16,nocreate:32,noreplace:64,bin:128,binary:128,;"seek_dir:t93=ebeg:0,cur:1,end:2,;ŠInit:Tt94=s1__as::95=##96=&94;:Q23ios4InitRCQ23ios4Init;2A.;Init::97=##98=*94;:__Q23ios4InitRCQ23ios4Init;2A.99=##98;:__Q23ios4Init;2A.;; ios:Tt100=s32!1,020,79;.vf100:101=*7,224;__as::102=##103=&100;:R3ios;0A.;ios::104=##105=*100;:RC3ios;0A.;tie::106=##82;:;2B.107=##82;:P7ostream;2A.;fill::108=##-3;:;2B.109=##-3;:s;2A.;flags::110=##77;:;2B.111=##77;:Ul;2A.;precision::112=##-1;:;2B.113=##-1;:i;2A.;setf::111:Ul;2A.114=##77;:UlUl;2A.;unsetf::111:Ul;2A.;width::112:;2B.113:i;2A.;_throw_failure::115=##-11;:;2B.;clear::116=##-11;:i;2A.;set::117=##-11;:i;2A.;setstate::117:i;2A.;good::112:;2B.;eof::112:;2B.;fail::112:;2B.;bad::112:;2B.;rdstate::112:;2B.;__opPv::118=##8;:;2B.;__nt::112:;2B.;exceptions::112:;2B.117:i;2A.;rdbuf::119=##80;:;2B.120=##80;:P9streambuf;2A.;sync_with_stdio::121=f-1:i;2A?122=f-11:;2A?;bitalloc::123=f77:;2A?;xalloc::124=f-1:;2A?;pword::125=##126=&8;:i;2A.127=##8;:i;2B.;iword::128=##129=&-4;:i;2A.130=##-4;:i;2B.;unset::131=##-11;:11state_value;2A.;close::132=##-11;:;2A.;is_open::133=##-1;:;2A.;readable::133:;2A.;writable::133:;2A.;ios::134=##105;:P9streambufP7ostream;1A.117:_._3ios;1A*1;100;;init::135=##-11;:P9streambufP7ostream;1A.;;~%100;_seek_dir:t136=93#streammarker:Tt137=s12!1,000,39;__as::138=##139=&137;:RC12streammarker;2A.;streammarker::140=##141=*137;:RC12streammarker;2A.;set_offset::142=##-11;:i;0A.;streammarker::143=##141;:P9streambuf;2A.142:_._12streammarker;2A.;saving::144=##-1;:;2A.;delta::145=##-1;:R12streammarker;2A.144:;2A.;; streambuf:Tt81=s76!1,020,42;_list_all:/180:_9streambuf._list_all;.vf81:101,576;__as::146=##147=&81;:RC9streambuf;2A.;streambuf::148=##80;:RC9streambuf;2A.;_vtable::149=##150=&68;:;2A.;xchain::151=##152=&41;:;1A.;_un_link::153=##-11;:;1A.;_link_in::153:;1A.;gptr::154=##37;:;1B.;pptr::154:;1B.;egptr::154:;1B.;epptr::154:;1B.;pbase::154:;1B.;eback::154:;1B.;base::154:;1B.;ebuf::154:;1B.;blen::155=##-1;:;1B.;xput_char::156=##-11;:c;1A.;xflags::157=##-1;:;1A.158=##-1;:i;1A.;xsetflags::159=##-11;:i;1A.160=##-11;:ii;1A.;gbump::159:i;1A.;pbump::159:i;1A.;setb::161=##-11;:PcT1i;1A.;setp::162=##-11;:PcT1;1A.;setg::163=##-11;:PcN21;1A.;shortbuf::164=##37;:;1A.;in_backup::157:;1A.;Gbase::164:;1A.;eGptr::164:;1A.;Bbase::164:;1A.;Bptr::164:;1A.;eBptr::164:;1A.;Nbase::164:;1A.;eNptr::164:;1A.;have_backup::157:;1A.;have_markers::157:;1A.;free_backup_area::153:;1A.;unsave_markers::153:;1A.;put_mode::157:;1A.;switch_to_get_mode::157:;1A.;streambuf::165=##80;:i;1A.;flush_all::124:;2A?;flush_all_linebuffered::122:;2A?;streambuf::159:_._9streambuf;2A*1;81;;overflow::166=##-1;:i;2A*2;81;;underflow::157:;2A*3;81;;uflow::157:;2A*4;81;;pbackfail::158:i;2A*5;81;;xsputn::167=##76;:PCcl;2A*6;81;;xsgetn::168=##76;:Pcl;2A*7;81;;seekoff::169=##75;:lQ23ios8seek_diri;2A*8;81;;seekpos::170=##75;:li;2A*9;81;;pubseekoff::171=##75;:lQ23ios8seek_diri;2A.;pubseekpos::172=##75;:li;2A.;sseekoff::173=##75;:lQ23ios8seek_diri;2A.;sseekpos::174=##75;:li;2A.;setbuf::175=##80;:Pci;2A*10;81;;sync::157:;2A*11;81;;doallocate::157:;2A*12;81;;seekmark::176=##-1;:R12streammarkeri;2A.;sputbackc::177=##-1;:c;2A.;sungetc::157:;2A.;unbuffered::157:;2A.;linebuffered::157:;2A.;unbuffered::159:i;2A.;linebuffered::159:i;2A.;allocate::157:;2A.;allocbuf::153:;2A.;doallocbuf::153:;2A.;in_avail::157:;2A.;out_waiting::157:;2A.;sputn::167:PCcl;2A.;padn::178=##76;:cl;2A.;sgetn::168:Pcl;2A.;ignore::158:i;2A.;get_column::157:;2A.;set_column::158:i;2A.;sgetline::179=##-4;:PcUlci;2A.;sputc::158:i;2A.;sbumpc::157:;2A.;sgetc::157:;2A.;snextc::157:;2A.;stossc::153:;2A.;vscan::180=##-1;:PCcPcP3ios;2A.;scan::181=##-1;:PCce;2A.;vform::182=##-1;:PCcPc;2A.;form::181:PCce;2A.;sys_read::168:Pcl;2A*13;81;;sys_write::167:PCcl;2A*14;81;;sys_seek::183=##75;:lQ23ios8seek_dir;2A*15;81;;sys_close::157:;2A*16;81;;sys_stat::184=##-1;:Pv;2A*17;81;;;~%81;dfilebuf:Tt185=s76!1,020,81;openprot:/2-1:_7filebuf.openprot;__as::186=##187=&185;:RC7filebuf;2A.;filebuf::188=##189=*185;:RC7filebuf;2A.;init::190=##-11;:;1A.;filebuf::191=##189;:;2A.192=##189;:i;2A.193=##189;:iPci;2A.194=#185,-11,189,-1,-11;:_._7filebuf;2A*1;81;;attach::192:i;2A.;open::195=##189;:PCcT1;2A.196=##189;:PCcii;2A.;underflow::197=##-1;:;2A*3;81;;overflow::198=##-1;:i;2A*2;81;;is_open::199=##-1;:;2B.;fd::199:;2B.;close::191:;2A.;doallocate::197:;2A*12;81;;seekoff::200=##75;:lQ23ios8seek_diri;2A*8;81;;setbuf::201=##80;:Pci;2A*10;81;;xsputn::202=##76;:PCcl;2A*6;81;;xsgetn::203=##76;:Pcl;2A*7;81;;sync::197:;2A*11;81;;is_reading::197:;1A.;cur_ptr::204=##37;:;1A.;file_ptr::204:;1A.;sys_read::203:Pcl;1A*13;81;;sys_seek::205=##75;:lQ23ios8seek_dir;1A*15;81;;sys_write::202:PCcl;1A*14;81;;sys_stat::206=##-1;:Pv;1A*17;81;;sys_close::197:;1A*16;81;;;~%81; _IO_finish_t:t207=208=*209=f-11!_IO_overflow_t:t210=211=*212=f-1_IO_underflow_t:t213=59_IO_pbackfail_t:t214=211_IO_xsputn_t:t215=216=*217=f30_IO_xsgetn_t:t218=219=*220=f30 _IO_seekoff_t:t221=222=*223=f26_IO_seekpos_t:t224=57_IO_setbuf_t:t225=226=*227=f41_IO_sync_t:t228=59_IO_doallocate_t:t229=59_IO_read_t:t230=53_IO_write_t:t231=55_IO_seek_t:t232=57_IO_close_t:t233=59_IO_stat_t:t234=235=*236=f-1î_IO_jump_t:Tt237=s144__dummy:238=s8delta1:-3,0,16;delta2:-3,16,16;pfn:30,32,32;__as::239=#238,240=&238,241=*238,242=&238,-11;:__as__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.;._3::243=#238,241,241,242,-11;:__Q210_IO_jump_t3._3RCQ210_IO_jump_t3._3;2A.244=#238,241,241,-11;:__Q210_IO_jump_t3._3;2A.;;,0,64;__finish:245=s8delta1:-3,0,16;delta2:-3,16,16;pfn:207,32,32;__as::246=#245,247=&245,248=*245,249=&245,-11;:__as__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.;._4::250=#245,248,248,249,-11;:__Q210_IO_jump_t3._4RCQ210_IO_jump_t3._4;2A.251=#245,248,248,-11;:__Q210_IO_jump_t3._4;2A.;;,64,64;__overflow:252=s8delta1:-3,0,16;delta2:-3,16,16;pfn:210,32,32;__as::253=#252,254=&252,255=*252,256=&252,-11;:__as__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.;._5::257=#252,255,255,256,-11;:__Q210_IO_jump_t3._5RCQ210_IO_jump_t3._5;2A.258=#252,255,255,-11;:__Q210_IO_jump_t3._5;2A.;;,128,64;__underflow:259=s8delta1:-3,0,16;delta2:-3,16,16;pfn:213,32,32;__as::260=#259,261=&259,262=*259,263=&259,-11;:__as__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.;._6::264=#259,262,262,263,-11;:__Q210_IO_jump_t3._6RCQ210_IO_jump_t3._6;2A.265=#259,262,262,-11;:__Q210_IO_jump_t3._6;2A.;;,192,64;__uflow:266=s8delta1:-3,0,16;delta2:-3,16,16;pfn:213,32,32;__as::267=#266,268=&266,269=*266,270=&266,-11;:__as__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.;._7::271=#266,269,269,270,-11;:__Q210_IO_jump_t3._7RCQ210_IO_jump_t3._7;2A.272=#266,269,269,-11;:__Q210_IO_jump_t3._7;2A.;;,256,64;__pbackfail:273=s8delta1:-3,0,16;delta2:-3,16,16;pfn:214,32,32;__as::274=#273,275=&273,276=*273,277=&273,-11;:__as__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.;._8::278=#273,276,276,277,-11;:__Q210_IO_jump_t3._8RCQ210_IO_jump_t3._8;2A.279=#273,276,276,-11;:__Q210_IO_jump_t3._8;2A.;;,320,64;__xsputn:280=s8delta1:-3,0,16;delta2:-3,16,16;pfn:215,32,32;__as::281=#280,282=&280,283=*280,284=&280,-11;:__as__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.;._9::285=#280,283,283,284,-11;:__Q210_IO_jump_t3._9RCQ210_IO_jump_t3._9;2A.286=#280,283,283,-11;:__Q210_IO_jump_t3._9;2A.;;,384,64;__xsgetn:287=s8delta1:-3,0,16;delta2:-3,16,16;pfn:218,32,32;__as::288=#287,289=&287,290=*287,291=&287,-11;:__as__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.;._10::292=#287,290,290,291,-11;:__Q210_IO_jump_t4._10RCQ210_IO_jump_t4._10;2A.293=#287,290,290,-11;:__Q210_IO_jump_t4._10;2A.;;,448,64;__seekoff:294=s8delta1:-3,0,16;delta2:-3,16,16;pfn:221,32,32;__as::295=#294,296=&294,297=*294,298=&294,-11;:__as__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.;._11::299=#294,297,297,298,-11;:__Q210_IO_jump_t4._11RCQ210_IO_jump_t4._11;2A.300=#294,297,297,-11;:__Q210_IO_jump_t4._11;2A.;;,512,64;__seekpos:301=s8delta1:-3,0,16;delta2:-3,16,16;pfn:224,32,32;__as::302=#301,303=&301,304=*301,305=&301,-11;:__as__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.;._12::306=#301,304,304,305,-11;:__Q210_IO_jump_t4._12RCQ210_IO_jump_t4._12;2A.307=#301,304,304,-11;:__Q210_IO_jump_t4._12;2A.;;,576,64;__setbuf:308=s8delta1:-3,0,16;delta2:-3,16,16;pfn:225,32,32;__as::309=#308,310=&308,311=*308,312=&308,-11;:__as__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.;._13::313=#308,311,311,312,-11;:__Q210_IO_jump_t4._13RCQ210_IO_jump_t4._13;2A.314=#308,311,311,-11;:__Q210_IO_jump_t4._13;2A.;;,640,64;__sync:315=s8delta1:-3,0,16;delta2:-3,16,16;pfn:228,32,32;__as::316=#315,317=&315,318=*315,319=&315,-11;:__as__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.;._14::320=#315,318,318,319,-11;:__Q210_IO_jump_t4._14RCQ210_IO_jump_t4._14;2A.321=#315,318,318,-11;:__Q210_IO_jump_t4._14;2A.;;,704,64;__doallocate:322=s8delta1:-3,0,16;delta2:-3,16,16;pfn:229,32,32;__as::323=#322,324=&322,325=*322,326=&322,-11;:__as__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.;._15::327=#322,325,325,326,-11;:__Q210_IO_jump_t4._15RCQ210_IO_jump_t4._15;2A.328=#322,325,325,-11;:__Q210_IO_jump_t4._15;2A.;;,768,64;__read:329=s8delta1:-3,0,16;delta2:-3,16,16;pfn:230,32,32;__as::330=#329,331=&329,332=*329,333=&329,-11;:__as__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.;._16::334=#329,332,332,333,-11;:__Q210_IO_jump_t4._16RCQ210_IO_jump_t4._16;2A.335=#329,332,332,-11;:__Q210_IO_jump_t4._16;2A.;;,832,64;__write:336=s8delta1:-3,0,16;delta2:-3,16,16;pfn:231,32,32;__as::337=#336,338=&336,339=*336,340=&336,-11;:__as__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.;._17::341=#336,339,339,340,-11;:__Q210_IO_jump_t4._17RCQ210_IO_jump_t4._17;2A.342=#336,339,339,-11;:__Q210_IO_jump_t4._17;2A.;;,896,64;__seek:343=s8delta1:-3,0,16;delta2:-3,16,16;pfn:232,32,32;__as::344=#343,345=&343,346=*343,347=&343,-11;:__as__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.;._18::348=#343,346,346,347,-11;:__Q210_IO_jump_t4._18RCQ210_IO_jump_t4._18;2A.349=#343,346,346,-11;:__Q210_IO_jump_t4._18;2A.;;,960,64;__close:350=s8delta1:-3,0,16;delta2:-3,16,16;pfn:233,32,32;__as::351=#350,352=&350,353=*350,354=&350,-11;:__as__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.;._19::355=#350,353,353,354,-11;:__Q210_IO_jump_t4._19RCQ210_IO_jump_t4._19;2A.356=#350,353,353,-11;:__Q210_IO_jump_t4._19;2A.;;,1024,64;__stat:357=s8delta1:-3,0,16;delta2:-3,16,16;pfn:234,32,32;__as::358=#357,359=&357,360=*357,361=&357,-11;:__as__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.;._20::362=#357,360,360,361,-11;:__Q210_IO_jump_t4._20RCQ210_IO_jump_t4._20;2A.363=#357,360,360,-11;:__Q210_IO_jump_t4._20;2A.;;,1088,64;__as::364=##365=&237;:RC10_IO_jump_t;2A.;_IO_jump_t::366=##367=*237;:RC10_IO_jump_t;2A.368=##367;:;2A.;;®_IO_FILE_plus:Tt369=s76file:42,0,576;vtable:370=*237,576,32;__as::371=##372=&369;:RC13_IO_FILE_plus;2A.;_IO_FILE_plus::373=##374=*369;:RC13_IO_FILE_plus;2A.375=##374;:;2A.;;int8_t:t376=-6int16_t:t377=-3int32_t:t378=-1int64_t:t379=-31uint8_t:t380=-5uint16_t:t381=-7uint32_t:t382=-8uint64_t:t383=-32intmax_t:t384=379uintmax_t:t385=383intptr_t:t386=-4uintptr_t:t387=-10int_least8_t:t388=-6int_least16_t:t389=-3int_least32_t:t390=-1int_least64_t:t391=-31uint_least8_t:t392=-5uint_least16_t:t393=-7uint_least32_t:t394=-8uint_least64_t:t395=-32__long32_t:t396=-4__ulong32_t:t397=-10__long64_t:t398=-1__ulong64_t:t399=-8int32long64_t:t400=-1uint32long64_t:t401=-8long32int64_t:t402=-4ulong32int64_t:t403=-10ptrdiff_t:t404=-4wctype_t:t405=-8fpos_t:t406=-4time_t:t407=400clock_t:t408=-1size_t:t409=-10uchar_t:t410=-5ushort_t:t411=-7uint_t:t412=-8ulong_t:t413=-10ssize_t:t414=-4level_t:t415=-1daddr_t:t416=400daddr32_t:t417=-1daddr64_t:t418=379caddr_t:t419=37ino_t:t420=401ino32_t:t421=412ino64_t:t422=383cnt_t:t423=-3dev_t:t424=401dev32_t:t425=412dev64_t:t426=383chan_t:t427=-1time32_t:t428=-1pid32_t:t429=-1tid32_t:t430=-1pid64_t:t431=383tid64_t:t432=383time64_t:t433=383__ptr32:t434=8__cptr32:t435=37soff_t:t436=-1off_t:t437=-4paddr_t:t438=-4key_t:t439=-1timer_t:t440=-1nlink_t:t441=-3mode_t:t442=412uid_t:t443=412gid_t:t444=412mid_t:t445=434pid_t:t446=-1tid_t:t447=-1slab_t:t448=449=ar-1;0;11;-2mtyp_t:t450=-4boolean_t:t451=-1blkcnt_t:t452=-4blksize_t:t453=-4fsblkcnt_t:t454=413fsfilcnt_t:t455=413wint_t:t456=-1•sigset_t:Tt457=s8__losigs:-8,0,32;__hisigs:-8,32,32;__as::458=##459=&457;:RC8sigset_t;2A.;sigset_t::460=##461=*457;:RC8sigset_t;2A.462=##461;:;2A.;;signal_t:t463=-1…fsid_t:Tt464=s8__val:465=ar-1;0;1;-8,0,64;__as::466=##467=&464;:RC6fsid_t;2A.;fsid_t::468=##469=*464;:RC6fsid_t;2A.470=##469;:;2A.;;©__ptq_queue:Tt471=s8__ptq_next:472=*471,0,32;__ptq_prev:472,32,32;__as::473=##474=&471;:RC11__ptq_queue;2A.;__ptq_queue::475=##472;:RC11__ptq_queue;2A.476=##472;:;2A.;;__ptlock_type:t477=-1*pthread_attr_t:t478=479=*480=xs__pt_attr:pthread_condattr_t:t481=479pthread_mutexattr_t:t482=479pthread_t:t483=-8pthread_key_t:t484=-8Ípthread_mutex_t:t485=s52__ptq_link:472,0,32;__reserved1:-1,32,32;__ptmtx_lock:477,64,32;__ptmtx_flags:-1,96,32;__ptmtx_owner:483,128,32;__mtx_id:-1,160,32;__acquisitions:-1,192,32;__mtx_kind:-1,224,32;__lock_cpt:-1,256,32;__sleeps:-1,288,32;__misses:-1,320,32;__reserved2:-1,352,32;__ptmtx_dbx:-10,384,32;__as::486=#485,487=&485,488=*485,489=&485,-11;:__as__4._21RC4._21;2A.;._21::490=#485,488,488,489,-11;:__4._21RC4._21;2A.491=#485,488,488,-11;:__4._21;2A.;;Ÿpthread_cond_t:t492=s44__ptcv_dbx:-10,0,32;__reserved1:-1,32,32;__ptcv_lock:477,64,32;__ptcv_flags:-1,96,32;__ptcv_waiters:472,128,32;__reserved2:-1,160,32;__cv_id:-1,192,32;__cv_mutex:488,224,32;__reserved3:-1,256,32;__cptwait:-1,288,32;__reserved:-1,320,32;__as::493=#492,494=&492,495=*492,496=&492,-11;:__as__4._22RC4._22;2A.;._22::497=#492,495,495,496,-11;:__4._22RC4._22;2A.498=#492,495,495,-11;:__4._22;2A.;;Zpthread_once_t:t499=s112__ptonce_lock:477,0,32;__ptonce_initialized:-1,32,32;__ptonce_executing:-1,64,32;__ptonce_completed:-1,96,32;__ptonce_mutex:485,128,416;__ptonce_executed:492,544,352;__as::500=#499,501=&499,502=*499,503=&499,-11;:__as__4._23RC4._23;2A.;._23::504=#499,502,502,503,-11;:__4._23RC4._23;2A.505=#499,502,502,-11;:__4._23;2A.;;__gnuc_va_list:t506=37va_list:t507=506_un_link__9streambuf:F-11_link_in__9streambuf:F-11#switch_to_get_mode__9streambuf:F-1"free_backup_area__9streambuf:F-11__overflow__FP9streambufi:F-1underflow__9streambuf:F-1uflow__9streambuf:F-1overflow__9streambufi:F-1xsputn__9streambufPCcl:F76 s:R508=*-2xsgetn__9streambufPcl:F76ignore__9streambufi:F-1sync__9streambuf:F-1pbackfail__9streambufi:F-1setbuf__9streambufPci:F80seekpos__9streambufli:F75sseekpos__9streambufli:F75setb__9streambufPcT1i:F-11doallocate__9streambuf:F-1doallocbuf__9streambuf:F-11__9streambufi:F80 flags:R-1_._9streambuf:F-11)seekoff__9streambuflQ23ios8seek_diri:F75*sseekoff__9streambuflQ23ios8seek_diri:F75sputbackc__9streambufc:F-1sungetc__9streambuf:F-1get_column__9streambuf:F-1this:r509=*81 this:r509set_column__9streambufi:F-1flush_all__9streambuf:F-1(flush_all_linebuffered__9streambuf:F-11sys_stat__9streambufPv:F-1sys_read__9streambufPcl:F76sys_write__9streambufPCcl:F76)sys_seek__9streambuflQ23ios8seek_dir:F75sys_close__9streambuf:F-1!__12streammarkerP9streambuf:F141 this:R141_._12streammarker:F-11)delta__12streammarkerR12streammarker:F-1other_mark:R139delta__12streammarker:F-1)seekmark__9streambufR12streammarkeri:F-1 mark:R139 delta:R-1 unsave_markers__9streambuf:F-11readable__3ios:F-1 this:R105writable__3ios:F-1is_open__3ios:F-1 __io_defs:Tt510=s1__as::511=##512=&510;:RC9__io_defs;2A.;__io_defs::513=##514=*510;:RC9__io_defs;2A.515=##514;:;2A.516=#510,-11,514,-1,-11;:_._9__io_defs;2A.;;_vt.7filebuf:G517=ar-1;0;18;7_vt.9streambuf:G517_vt.3ios:G518=ar-1;0;2;7io_defs__:G510/__static_initialization_and_destruction_0:f-11__initialize_p:R-1__priority:R-1__ti9streambuf:G519__ti7filebuf:G519#__ti11_ios_fields:G520=ar-1;0;7;-5__ti8_IO_FILE:G520 __tf3ios:F521=&522=xstype_info:tie__C3ios:F82this:R523=*100tie__3iosP7ostream:F82fill__C3ios:F-3 this:R523fill__3ioss:F-3flags__C3ios:F77flags__3iosUl:F77 new_val:R77 old_val:r77precision__C3ios:F-1precision__3iosi:F-1setf__3iosUl:F77 oldbits:r77setf__3iosUlUl:F77unsetf__3iosUl:F77width__C3ios:F-1width__3iosi:F-1_throw_failure__C3ios:F-11clear__3iosi:F-11 state:R-1 this:r523set__3iosi:F-11setstate__3iosi:F-11good__C3ios:F-1eof__C3ios:F-1fail__C3ios:F-1bad__C3ios:F-1rdstate__C3ios:F-1__opPv__C3ios:F8__nt__C3ios:F-1exceptions__C3ios:F-1exceptions__3iosi:F-11 enable:R-1rdbuf__C3ios:F80rdbuf__3iosP9streambuf:F80 this:r105sync_with_stdio__3ios:F-11unset__3ios11state_value:F-11__Q23ios4Init:F98!set_offset__12streammarkeri:F-11 offset:R-1saving__12streammarker:F-1__tf9streambuf:F521_vtable__9streambuf:F150xchain__9streambuf:F152gptr__C9streambuf:F37 this:R509pptr__C9streambuf:F37egptr__C9streambuf:F37epptr__C9streambuf:F37pbase__C9streambuf:F37eback__C9streambuf:F37base__C9streambuf:F37ebuf__C9streambuf:F37blen__C9streambuf:F-1xput_char__9streambufc:F-11xflags__9streambuf:F-1xflags__9streambufi:F-1xsetflags__9streambufi:F-11xsetflags__9streambufii:F-11gbump__9streambufi:F-11pbump__9streambufi:F-11setp__9streambufPcT1:F-11setg__9streambufPcN21:F-11shortbuf__9streambuf:F37in_backup__9streambuf:F-1Gbase__9streambuf:F37eGptr__9streambuf:F37Bbase__9streambuf:F37Bptr__9streambuf:F37eBptr__9streambuf:F37Nbase__9streambuf:F37eNptr__9streambuf:F37have_backup__9streambuf:F-1have_markers__9streambuf:F-1put_mode__9streambuf:F-1,pubseekoff__9streambuflQ23ios8seek_diri:F75pubseekpos__9streambufli:F75unbuffered__9streambuf:F-1linebuffered__9streambuf:F-1unbuffered__9streambufi:F-11linebuffered__9streambufi:F-11allocate__9streambuf:F-1allocbuf__9streambuf:F-11in_avail__9streambuf:F-1out_waiting__9streambuf:F-1sputn__9streambufPCcl:F76padn__9streambufcl:F76sgetn__9streambufPcl:F76sputc__9streambufi:F-1sbumpc__9streambuf:F-1sgetc__9streambuf:F-1snextc__9streambuf:F-1stossc__9streambuf:F-11__tf7filebuf:F521is_open__C7filebuf:F-1this:R524=*185fd__C7filebuf:F-1 this:R524is_reading__7filebuf:F-1 this:R189cur_ptr__7filebuf:F37 this:r189file_ptr__7filebuf:F37$init__3iosP9streambufP7ostream:F-11 tie_to:R82 __3iosP9streambufP7ostream:F105 tie_to:r82 _._3ios:F-11__tf11_ios_fields:f521__tf8_IO_FILE:f521%_GLOBAL_.I._un_link__9streambuf:F-11%_GLOBAL_.D._un_link__9streambuf:F-11__ti3ios:G519=ar-1;0;11;-5Óprocessor_type:T5=ePROCESSOR_RIOS1:0,PROCESSOR_RIOS2:1,PROCESSOR_MPCCORE:2,PROCESSOR_PPC403:3,PROCESSOR_PPC601:4,PROCESSOR_PPC603:5,PROCESSOR_PPC604:6,PROCESSOR_PPC604e:7,PROCESSOR_PPC620:8,PROCESSOR_PPC750:9,;ars6000_cpu_select:T6=s16string:7=*-2,0,32;name:7,32,32;set_tune_p:-1,64,32;set_arch_p:-1,96,32;;reg_class:T8=eNO_REGS:0,BASE_REGS:1,GENERAL_REGS:2,FLOAT_REGS:3,NON_SPECIAL_REGS:4,MQ_REGS:5,LINK_REGS:6,CTR_REGS:7,LINK_OR_CTR_REGS:8,SPECIAL_REGS:9,SPEC_OR_GEN_REGS:10,CR0_REGS:11,CR_REGS:12,NON_FLOAT_REGS:13,FPMEM_REGS:14,FLOAT_OR_FPMEM_REGS:15,ALL_REGS:16,LIM_REG_CLASSES:17,;Wrs6000_abi:T9=eABI_NONE:0,ABI_AIX:1,ABI_AIX_NODESC:2,ABI_V4:3,ABI_NT:4,ABI_SOLARIS:5,;Órs6000_stack:T10=s132first_gp_reg_save:-1,0,32;first_fp_reg_save:-1,32,32;lr_save_p:-1,64,32;cr_save_p:-1,96,32;toc_save_p:-1,128,32;push_p:-1,160,32;calls_p:-1,192,32;main_p:-1,224,32;main_save_p:-1,256,32;fpmem_p:-1,288,32;abi:9,320,32;gp_save_offset:-1,352,32;fp_save_offset:-1,384,32;lr_save_offset:-1,416,32;cr_save_offset:-1,448,32;toc_save_offset:-1,480,32;varargs_save_offset:-1,512,32;main_save_offset:-1,544,32;fpmem_offset:-1,576,32;reg_size:-1,608,32;varargs_size:-1,640,32;vars_size:-1,672,32;parm_size:-1,704,32;main_size:-1,736,32;save_size:-1,768,32;fixed_size:-1,800,32;gp_size:-1,832,32;fp_size:-1,864,32;cr_size:-1,896,32;lr_size:-1,928,32;fpmem_size:-1,960,32;toc_size:-1,992,32;total_size:-1,1024,32;;rs6000_stack_t:t11=10 rs6000_args:T12=s28words:-1,0,32;fregno:-1,32,32;nargs_prototype:-1,64,32;orig_nargs:-1,96,32;prototype:-1,128,32;call_cookie:-1,160,32;sysv_gregno:-1,192,32;;CUMULATIVE_ARGS:t13=12size_t:t14=-10wchar_t:t15=-7(div_t:T16=s8quot:-1,0,32;rem:-1,32,32;; div_t:t17=16)ldiv_t:T18=s8quot:-4,0,32;rem:-4,32,32;;ldiv_t:t19=18int8_t:t20=-6int16_t:t21=-3int32_t:t22=-1int64_t:t23=-31uint8_t:t24=-5uint16_t:t25=-7uint32_t:t26=-8uint64_t:t27=-32intmax_t:t28=23uintmax_t:t29=27intptr_t:t30=-4uintptr_t:t31=-10int_least8_t:t32=-6int_least16_t:t33=-3int_least32_t:t34=-1int_least64_t:t35=-31uint_least8_t:t36=-5uint_least16_t:t37=-7uint_least32_t:t38=-8uint_least64_t:t39=-32intfast_t:t40=22uintfast_t:t41=26int_fast8_t:t42=-6int_fast16_t:t43=22int_fast32_t:t44=22uint_fast8_t:t45=26uint_fast16_t:t46=26uint_fast32_t:t47=26int_fast64_t:t48=23uint_fast64_t:t49=27__long32_t:t50=-4__ulong32_t:t51=-10__long64_t:t52=-1__ulong64_t:t53=-8int32long64_t:t54=-1uint32long64_t:t55=-8long32int64_t:t56=-4ulong32int64_t:t57=-10 int8:t58=-6 int16:t59=-3 int32:t60=-1int64:t61=-31u_int8:t62=-5u_int8_t:t63=-5u_int16:t64=-7u_int16_t:t65=-7u_int32:t66=-8u_int32_t:t67=-8u_int64:t68=-32u_int64_t:t69=-32ptrdiff_t:t70=-4wctype_t:t71=-8fpos_t:t72=-4fpos64_t:t73=-31time_t:t74=54clock_t:t75=-1uchar_t:t76=-5ushort_t:t77=-7uint_t:t78=-8ulong_t:t79=-10ssize_t:t80=-4level_t:t81=-1daddr_t:t82=54daddr32_t:t83=-1daddr64_t:t84=23caddr_t:t85=86=*-2 ino_t:t87=55ino32_t:t88=78ino64_t:t89=27 cnt_t:t90=-3 dev_t:t91=55dev32_t:t92=78dev64_t:t93=27chan_t:t94=-1time32_t:t95=-1pid32_t:t96=-1tid32_t:t97=-1pid64_t:t98=27tid64_t:t99=27time64_t:t100=27__ptr32:t101=102=*-11__cptr32:t103=86soff_t:t104=-1off_t:t105=-4off64_t:t106=-31paddr_t:t107=-4key_t:t108=-1timer_t:t109=-1nlink_t:t110=-3mode_t:t111=78uid_t:t112=78gid_t:t113=78mid_t:t114=101pid_t:t115=-1tid_t:t116=-1slab_t:t117=118=ar-1;0;11;-2mtyp_t:t119=-4boolean_t:t120=-1blkcnt_t:t121=-1blksize_t:t122=-1fsblkcnt_t:t123=79fsfilcnt_t:t124=79wint_t:t125=-1 id_t:t126=78useconds_t:t127=-8suseconds_t:t128=-1clockid_t:t129=-11sigset_t:T130=s8losigs:-8,0,32;hisigs:-8,32,32;;sigset_t:t131=130signal_t:t132=-1)fsid_t:T133=s8val:134=ar-1;0;1;-8,0,64;;fsid_t:t135=133C__ptq_queue:T136=s8__ptq_next:137=*136,0,32;__ptq_prev:137,32,32;;__ptq_queue:t138=136__ptlock_type:t139=-1*pthread_attr_t:t140=141=*142=xs__pt_attr:pthread_condattr_t:t143=141pthread_mutexattr_t:t144=141pthread_rwlockattr_t:t145=141pthread_t:t146=-8pthread_key_t:t147=-8_LC_load_object_t:t399=400=s24hdr:277,0,96;handle:394,96,96;;.lldiv_t:T401=s16quot:-31,0,64;rem:-31,64,64;;lldiv_t:t402=401¼stat:T403=s116st_dev:91,0,32;st_ino:87,32,32;st_mode:111,64,32;st_nlink:110,96,16;st_flag:77,112,16;st_uid:112,128,32;st_gid:113,160,32;st_rdev:91,192,32;st_size:105,224,32;st_atime:74,256,32;st_spare1:-1,288,32;st_mtime:74,320,32;st_spare2:-1,352,32;st_ctime:74,384,32;st_spare3:-1,416,32;st_blksize:122,448,32;st_blocks:121,480,32;st_vfstype:-1,512,32;st_vfs:78,544,32;st_type:78,576,32;st_gen:78,608,32;st_reserved:404=ar-1;0;8;78,640,288;;Òstat64:T405=s128st_dev:91,0,32;st_ino:87,32,32;st_mode:111,64,32;st_nlink:110,96,16;st_flag:77,112,16;st_uid:112,128,32;st_gid:113,160,32;st_rdev:91,192,32;st_ssize:104,224,32;st_atime:74,256,32;st_spare1:-1,288,32;st_mtime:74,320,32;st_spare2:-1,352,32;st_ctime:74,384,32;st_spare3:-1,416,32;st_blksize:122,448,32;st_blocks:121,480,32;st_vfstype:-1,512,32;st_vfs:78,544,32;st_type:78,576,32;st_gen:78,608,32;st_reserved:406=ar-1;0;9;78,640,320;st_size:106,960,64;;’machine_mode:T407=eVOIDmode:0,PQImode:1,QImode:2,PHImode:3,HImode:4,PSImode:5,SImode:6,PDImode:7,DImode:8,TImode:9,OImode:10,QFmode:11,HFmode:12,TQFmode:13,SFmode:14,DFmode:15,XFmode:16,TFmode:17,QCmode:18,HCmode:19,SCmode:20,DCmode:21,XCmode:22,TCmode:23,CQImode:24,CHImode:25,CSImode:26,CDImode:27,CTImode:28,COImode:29,BLKmode:30,CCmode:31,CCUNSmode:32,CCFPmode:33,CCEQmode:34,MAX_MACHINE_MODE:35,;�mode_class:T408=eMODE_RANDOM:0,MODE_INT:1,MODE_FLOAT:2,MODE_PARTIAL_INT:3,MODE_CC:4,MODE_COMPLEX_INT:5,MODE_COMPLEX_FLOAT:6,MAX_MODE_CLASS:7,;UQItype:t409=-5SItype:t410=-1USItype:t411=-8DItype:t412=-31UDItype:t413=-32SFtype:t414=-12DFtype:t415=-13word_type:t416=-1.DIstruct:T417=s8high:410,0,32;low:410,32,32;;,DIunion:t418=419=u8s:417,0,64;ll:412,0,64;;func_ptr:t420=421=*422=f-11__do_global_dtors:F-11_exit_dummy_ref:G423=*-1__do_global_ctors:F-11 __main:F-11__gthread_mutex_t:t420=-1__default_terminate:F-11 __terminate_func:G421=*422=f-11__terminate:F-11__throw_type_match:F102catch_type:R102throw_type:R102 __empty:F-11veh_context:T423=s16handler_label:102,0,32;dynamic_handler_chain:424=*102,32,32;info:102,64,32;table_index:102,96,32;;eold_exception_table:T425=s12start_region:102,0,32;end_region:102,32,32;exception_handler:102,64,32;;old_exception_table:t426=425vexception_table:T427=s16start_region:102,0,32;end_region:102,32,32;exception_handler:102,64,32;match_info:102,96,32;;exception_table:t428=427?exception_lang_info:T429=s4language:-3,0,16;version:-3,16,16;;exception_lang_info:t430=429fexception_descriptor:T431=s24runtime_id_field:102,0,32;lang:430,32,32;table:432=ar-1;0;0;428,64,128;;exception_descriptor:t433=431 __eh_matcher:t434=435=*436=f102N__eh_info:T437=s8match_function:434,0,32;language:-3,32,16;version:-3,48,16;;__eh_info:t438=437exception_source_language:T439=eEH_LANG_C89:1,EH_LANG_C:2,EH_LANG_Ada83:3,EH_LANG_C_plus_plus:4,EH_LANG_Cobol74:5,EH_LANG_Cobol85:6,EH_LANG_Fortran77:7,EH_LANG_Fortran90:8,EH_LANG_Pascal83:9,EH_LANG_Modula2:10,EH_LANG_Java:11,EH_LANG_Mips_Assembler:32769,;__gnuc_va_list:t440=86¹FILE:t441=442=s32_ptr:330,0,32;_cnt:-1,32,32;_base:330,64,32;_bufendp:330,96,32;_flag:-3,128,16;_file:-3,144,16;__stdioid:-1,160,32;__newbase:86,192,32;_unused:443=ar-1;0;0;-4,224,32;;Feh_full_context:T444=s24c:423,0,128;top_elt:445=ar-1;0;1;102,128,64;;new_eh_context:f102#get_eh_context:S446=*447=f448=*423__get_eh_context:F102__get_eh_info:F424eh_context_initialize:f448eh_context_static:f448&__get_dynamic_handler_chain:F449=*424__sjthrow:F-11__sjpopnthrow:F-11__eh_rtime_match:F-1 rtime:R102__udivdi3:F413__umoddi3:F413Àexception:T9=s4.vf9:10=*7,0;__as::11=##12=&9;:RC9exception;2A.;exception::13=##14=*9;:RC9exception;2A.15=##14;:;2A.16=#9,-11,14,-1,-11;:_._9exception;2A*1;9;;what::17=##18=*-2;:;2B*2;9;;;~%9;exception:Tt9¼bad_exception:Tt19=s4!1,020,9;__as::20=##21=&19;:RC13bad_exception;2A.;bad_exception::22=##23=*19;:RC13bad_exception;2A.24=##23;:;2A.25=#19,-11,23,-1,-11;:_._13bad_exception;2A*1;9;;;~%9;"terminate_handler:t26=27=*28=f-11unexpected_handler:t29=27ptrdiff_t:t30=-4size_t:t31=-10wint_t:t32=-8Ìeh_context:Tt33=s16handler_label:8,0,32;dynamic_handler_chain:34=*8,32,32;info:8,64,32;table_index:8,96,32;__as::35=##36=&33;:RC10eh_context;2A.;eh_context::37=##38=*33;:RC10eh_context;2A.39=##38;:;2A.;;Ùold_exception_table:Tt40=s12start_region:8,0,32;end_region:8,32,32;exception_handler:8,64,32;__as::41=##42=&40;:RC19old_exception_table;2A.;old_exception_table::43=##44=*40;:RC19old_exception_table;2A.45=##44;:;2A.;;Üexception_table:Tt46=s16start_region:8,0,32;end_region:8,32,32;exception_handler:8,64,32;match_info:8,96,32;__as::47=##48=&46;:RC15exception_table;2A.;exception_table::49=##50=*46;:RC15exception_table;2A.51=##50;:;2A.;;¹exception_lang_info:Tt52=s4language:-3,0,16;version:-3,16,16;__as::53=##54=&52;:RC19exception_lang_info;2A.;exception_lang_info::55=##56=*52;:RC19exception_lang_info;2A.57=##56;:;2A.;;Þexception_descriptor:Tt58=s24runtime_id_field:8,0,32;lang:52,32,32;table:59=ar-1;0;0;46,64,128;__as::60=##61=&58;:RC20exception_descriptor;2A.;exception_descriptor::62=##63=*58;:RC20exception_descriptor;2A.64=##63;:;2A.;;__eh_matcher:t65=66=*67=f8§__eh_info:Tt68=s8match_function:65,0,32;language:-3,32,16;version:-3,48,16;__as::69=##70=&68;:RC9__eh_info;2A.;__eh_info::71=##72=*68;:RC9__eh_info;2A.73=##72;:;2A.;;exception_source_language:t74=eEH_LANG_C89:1,EH_LANG_C:2,EH_LANG_Ada83:3,EH_LANG_C_plus_plus:4,EH_LANG_Cobol74:5,EH_LANG_Cobol85:6,EH_LANG_Fortran77:7,EH_LANG_Fortran90:8,EH_LANG_Pascal83:9,EH_LANG_Modula2:10,EH_LANG_Java:11,EH_LANG_Mips_Assembler:32769,;terminate__Fv:F-11__default_unexpected__Fv:F-11__unexpected_func:S75=*28set_terminate__FPFv_v:F26set_unexpected__FPFv_v:F29unexpected__Fv:F-11cp_eh_info:Tt76=s36eh_info:68,0,64;value:8,64,32;type:8,96,32;cleanup:77=*78=f-11,128,32;caught:5,160,32;next:79=*76,192,32;handlers:-4,224,32;original_value:8,256,32;__as::80=##81=&76;:RC10cp_eh_info;2A.;cp_eh_info::82=##79;:RC10cp_eh_info;2A.83=##79;:;2A.;;__cp_exception_info:F8__cp_eh_info:F79__start_cp_handler:F79__eh_alloc:F8__eh_free:F-11rtimetype:t84=85=*86=f8__cplus_type_matcher:F8match_info:R84exception_table:R63__cp_push_exception:F-11 cleanup:R77 q:r87=*79__cp_pop_exception:F-11__uncatch_exception:F-11__check_eh_spec:F-11spec:p88=*89=*-11__exception_info:79bad_exc:90=&91=xstype_info:__throw_bad_cast:F-11__throw_bad_typeid:F-11uncaught_exception__Fv:F5what__C9exception:F18 this:R92=*9__tf9exception:F90__9exception:F14_._9exception:F-11#_vt.13bad_exception:G93=ar-1;0;3;7_vt.9exception:G93__ti9exception:G94=ar-1;0;7;-5%__ti13bad_exception:G95=ar-1;0;11;-5__tf13bad_exception:F90__13bad_exception:F23_._13bad_exception:F-11ptrdiff_t:t9=-4size_t:t10=-10wint_t:t11=-8"terminate_handler:t12=13=*14=f-11unexpected_handler:t15=13Ñbad_alloc:T16=s4!1,020,17=xsexception:;__as::18=##19=&16;:RC9bad_alloc;2A.;bad_alloc::20=##21=*16;:RC9bad_alloc;2A.22=##21;:;2A.23=#16,-11,21,-1,-11;:_._9bad_alloc;2A*1;17;;what::24=##25=*-2;:;2B*2;17;;;~%17;bad_alloc:Tt16mnothrow_t:Tt26=s1__as::27=##28=&26;:RC9nothrow_t;2A.;nothrow_t::29=##30=*26;:RC9nothrow_t;2A.31=##30;:;2A.;;new_handler:t32=13 nothrow:G26set_new_handler__FPFv_v:F32 handler:R32prev_handler:r32_vt.9bad_alloc:G33=ar-1;0;3;7 __ti9bad_alloc:G34=ar-1;0;11;-5_._9bad_alloc:F-11 this:r35=*17$__tf9bad_alloc:F36=&37=xstype_info:what__C9bad_alloc:F25 this:R38=*16__nw__FUlPv:F8__vn__FUlPv:F8__new_handler:G32new_handler:t16=13__builtin_delete:F-11&__exception_info:17=*18=xscp_eh_info:__builtin_new:F8 handler:16__exception_info:17"__9bad_alloc:f19=*20=xsbad_alloc:this:21=*22=xsexception:__builtin_vec_delete:F-11__builtin_vec_new:F8,type_info:T16=s8_name:/117=*-2,0,32;.vf16:18=*7,32;__as::19=##20=&16;:RC9type_info;0A.;type_info::21=##22=*16;:RC9type_info;0A.23=##22;:PCc;1A.24=#16,-11,22,-1,-11;:_._9type_info;2A*1;16;;before::25=##5;:RC9type_info;2B.;name::26=##17;:;2B.;__eq::25:RC9type_info;2B.;__ne::25:RC9type_info;2B.;;~%16;type_info:Tt16°bad_cast:Tt27=s4!1,020,28=xsexception:;__as::29=##30=&27;:RC8bad_cast;2A.;bad_cast::31=##32=*27;:RC8bad_cast;2A.33=##32;:;2A.34=#27,-11,32,-1,-11;:_._8bad_cast;2A*1;28;;;~%28;°bad_typeid:Tt35=s4!1,020,28;__as::36=##37=&35;:RC10bad_typeid;2A.;bad_typeid::38=##39=*35;:RC10bad_typeid;2A.40=##39;:;2A.41=#35,-11,39,-1,-11;:_._10bad_typeid;2A*1;28;;;~%28;__user_type_info:Tt42=s8!1,020,16;__as::43=##44=&42;:RC16__user_type_info;2A.;__user_type_info::45=##46=*42;:RC16__user_type_info;2A.47=#42,-11,46,-1,-11;:_._16__user_type_info;2A*1;16;48=##46;:PCc;2A.;dcast::49=##8;:RC9type_infoiPvPC9type_infoT3;2B*2;42;;;~%16;&__si_type_info:Tt50=s12!1,020,42;base:/051=&42,64,32;__as::52=##53=&50;:RC14__si_type_info;2A.;__si_type_info::54=##55=*50;:RC14__si_type_info;2A.56=#50,-11,55,-1,-11;:_._14__si_type_info;2A*1;16;57=##55;:PCcRC16__user_type_info;2A.;dcast::58=##8;:RC9type_infoiPvPC9type_infoT3;2B*2;42;;;~%16;USItype:t59=-8-access:t60=ePUBLIC:1,PROTECTED:2,PRIVATE:3,;:base_info:Tt61=s8base:62=*42,0,32;offset:59,32,29;is_virtual:5,61,1;access:60,62,2;__as::63=##64=&61;:Q217__class_type_info9base_infoRCQ217__class_type_info9base_info;2A.;base_info::65=##66=*61;:__Q217__class_type_info9base_infoRCQ217__class_type_info9base_info;2A.67=##66;:__Q217__class_type_info9base_info;2A.;;X__class_type_info:Tt68=s16!1,020,42;base_list:69=*61,64,32;n_bases:10,96,32;__as::70=##71=&68;:RC17__class_type_info;2A.;__class_type_info::72=##73=*68;:RC17__class_type_info;2A.74=#68,-11,73,-1,-11;:_._17__class_type_info;2A*1;16;75=##73;:PCcPCQ217__class_type_info9base_infoUl;2A.;dcast::76=##8;:RC9type_infoiPvPC9type_infoT3;2B*2;42;;;~%16;new_handler:t77=13_._9type_info:F-11!__eq__C9type_infoRC9type_info:F5 this:R78=*16 arg:R79=&16__rtti_class:F-11__rtti_si:F-11__rtti_user:F-11;dcast__C16__user_type_infoRC9type_infoiPvPC9type_infoT3:F89dcast__C14__si_type_infoRC9type_infoiPvPC9type_infoT3:F8 this:R80=*50require_public:R-1 subptr:R8ž@ P"™¬P'™ÀP'™ÒBÞDæFöFFHJP,™<P1™HP™TP6™vTzV„Ç™œP™¦`¬$™¶x¼S™Æ~ʀ΂҄ÖBú†FF&D2ˆ8P;™BŒR`VŽ\P@™jŽlPE™z”„PJ™ž4¶†Æ–Ö˜ØPO™ê˜ìPO™øPT™ž PO™" &ž(PO™0PY™@P^™V XPO™f¢lPJ™vž†¤–¦š¨¨Pc™²¬¸PJ™Ú®ÞFZ°nŽpPh™zFŠ†š–ª¤ºž¾¦Æ´ÒžØPm™âFèË™òxô[™¸º`<Pr™N¼lPr™~„„Pr™Ž¾”Pr™žž¤Pr™®€´Pr™¾~ÄPr™Î‚ÔPr™ÞÀøP1™ F P™ N4 V ZÄ fÆ jÈ nÊ pPw™ ‚Î „P|™ ŽÒ �P|™ žÔ  Pw™ ªÖ ¬Pw™ ¶Ø ¸Pw™ ÂÚ ÄPw™ ÎÜ ÐPw™ ÚÞ ÜPO™ îÞ ðPO™ à â Pw™ ä Pw™ æ Pw™ *è ,Pw™ 6ê 8Pw™ Bì DPw™ NH RJ TP�™ ^ð `Pw™ jò šô œPw™ ò ,P†™ Jøîúòüúúþþ®ú$PY™::<P"™V®vú~’@”P"™¢Þ¤PO™²@´P"™¾Â@ÄP"™Òâ€èPr™òúþFË™ú$Í™:DFDV~\Pr™fúr‚xPr™‚úŽúž®°P‹™ÊÒ âúæòìP�™ú„$Pr™4PT™–¦¶†ÆBÎÀÞî¤ú,P‹™6BRbr–‚–F¦BÆ Ö"æ$öúú&P‹™¾Pr™"ú,PT™HP™\P™f(j*r,ˆP™’.ž0¤P•™¶FÆ>ÊÌP"™Ö@Ú>ÜP"™æò®þüPš™$P™.6TP™b€hPr™xPT™†~–8˜PO™¬PT™ÄPŸ™Î„bFr`z®†<Î`TP¤™b`�É™¾`ÐP©™æ@B DFP®™.@JBRDZF\P³™~L€P¸™–Fº`Â`îF–NÄP½™ÖRÜP™îVôPÇ™NHPY™VZœPÌ™¾ZÒZ¨==™è™F$P¤™JNþ^Ø™¬™º`ÄPJ™Ú™@$™|$™¬$™ÀÚ™‚b„PY™’b¨PY™ºxÀW™ÊdÞdâfúf f PÑ™ 6x :j ~f ’d –j žx ¨PY™ ÈPÑ™!j!bf"&F"2Z"B†"R€"bx"dY™"nl"|PÖ™"Šp"˜PÖ™"¾x"À]™"ÞŽ"âr"äPÛ™"öŽ"øPà™#p#Ž#På™#:x#<]™#HPê™#ZŽ#^|#`PÛ™#rŽ#tPà™#~l#ŽŽ#�På™#¨Pï™#ºB#Ò¦#Ö€#âl#ìPY™#þx$U™$x$]™$$Pê™$6‚$z‚$œPr™$ÄPr™$â‚$èPr™$òl$ú‚%Pô™% Pï™%4P^™%J†%ZŽ%dPù™%|Pþ™%”P^™%ÚŒ%ÜPJ™%ìPT™%ö‚&x&]™&$PT™&HPY™&Zx&dU™&zx&„]™&”Q™&®¦&¶�&Òl&ØPê™&ê‚'r’'‚'’”'¢Z'¦'Æ–'ê°'úŽ'üP@™( ˜(¦(¦("š(¢F(º¼(ÜPr™) ¼) ,™)*F)>œ)R°)bF)rž)Ž)ª°)º )ÞF)ú¤* *:¢*<Q™*N¦*rF*~Ž*€På™*ŽŽ*�Q ™*®Ž*°Q ™*Þž*ú+°+& +JŽ+TQ™+j†+~Ž+€Q™+’Ž+”Q™+¦Ž+¨Pà™+ºŽ+¼På™+ÒŽ+ÔPå™+âŽ+äQ ™,¤,B,PPï™,b†,r°,~–,š,¶B,Ƥ,Ö,üPï™-Pï™-²-&´-*¶-8PJ™-JŽ-LQ!™-fº-pPJ™-~Ž-€Q!™-’Ž-”Q!™-¢²-ª´-®¼-¼PJ™-ÖŽ-ØQ&™-êŽ-ìQ&™.à.Q+™.*Ž.,På™.:Ž.<Q ™.n.~¦.€P©™.ŒPÖ™/<==™/d"™/z^/�Pþ™/šÀ/ÆÂ/âà/úÄ0 Q™0Â0"à08Q0™0BÈ0P0™0^$0xPY™0††0ü2™1$™1DQ™1x$™1‚Â1–$1¬Q0™1¾Ê1îÌ2<Q™2NÂ2RÎ2„$™2ŽÂ2¢Â2ªÊ2ÈQ0™2ÒÂ2æÐ2ìQ™3Ò32Ô3:Ì3TPþ™3fÎ3xPê™3¬$™3¶Â3Ü™4ŒQ0™4–Â4šÖ4ª$4ÚØ4âÐ4æÚ4ôQ™5Â5 Ü5Â5"Þ5:Â5DQ5™5Zâ5vä5ˆPþ™5šÜ5¬Pê™5¾Â5Âæ6pPY™6˜Q™6°Q0™6¾Â6ÌQ0™6âè6ôQ™7 ê7.Ð72L7@Pþ™7XPê™7öÂ7úÐ88Â86Â8Fì8Vî8fð8vò9B9&$96Â9Fô9hQ™9‚Â9†Î9–Â9¤Q5™9ÂÂ9Êô9ìPþ™:Î:Pê™:žF:²N:ÜP½™:î::ðPY™;ö;Pw™;®;N;TQ:™;jN;²:;¼P"™;Æ:;ÈPY™;Úú;ÜPw™;ê®;ú:<Q?™<<<<2@<6þ<8QD™=xP"™=‚Â=Ц=–@=š=œP"™=ªN=àQ:™=öN>>@>HP"™>R>Z¦>^>b@>Ò >äQI™?¼? QN™?<QN™?LQS™?V?XPO™?j?lPO™?~?Š?˜QX™?¤Q]™?¸Qb™?ÔQg™?ø"™@ Ql™@4QS™@DQq™@¶@ÆN@ôQv™AVAQ{™A*(A0Q{™AB€AHPr™AXPT™Af(AlQ{™A~~A„Pr™A”PT™A¦AÆ‚A΄AÒ~AÖ€Aî°AöB ŽB P@™B*B PJ™BF,BJ.BPPJ™BÞNC P½™C0C.NCdQ:™CzNCÌQ€™CàQ?™Cò,Cþ4DPJ™DTD(Ç™D:FD|Q…™D’`DäQŠ™DðË™EQŠ™E8EŽNE¼Qv™EÚ(EàQ{™Eò(EøQ{™F :F€F,O"™F>FN F^°FnFF~žFšF¶°FÆ FæŽFìQ�™FþŽGQ ™GFG"žG>GZ°Gj GŠFG¢ŽG¨Q�™GºŽG¼På™GÊŽGÌQ ™Gê€GðPr™HPT™H H" H*>Hª°HÎŽHÐPh™HâŽHäQ”™HîBHþŽI Q™™I I&ŽI0Q™™I:IJFIRHIZJI`PJ™IjŽItQ™™I~&IоI–I¦ŽI¨Qž™IÂŽIÄQ ™IÖŽIØQ ™IêŽIìPå™IúŽIüQ ™J¦JP©™J"DJJÀJVJbŽJîNJò¦K°K¦KPK*ŽK,P@™K:RK>¦KJŽKNTKPPÛ™KbŽKdQ™KxPê™K†VKЦKš¦K¢XK°Pê™Kº KʦKÎZKÚ¦KÞ\Kâ@Kî®Kú:LàL^L ¦LŽLPE™L&`L*¦L6ŽL8Q£™LFdLJ¦LVŽLXQ¨™LfhLj¦LvNLz¦L‚jL’ŽL–lLž¦L°Q¨™LºnL¼P™LÞ¦LâpLò¦LörMŽM¦MtM$Q­™M8På™MTP½™MbxMj¦M”Q²™M®|MΦMþ¦N¦NN.¦N2~N>FNBHNN¦NR€N^‚Nb¦NÞFNþ¦OP©™O *O„OP¸™O"*O*†O,P¸™OB"OR*OVˆOXP¸™On*OrŠOtP¸™O~ŒO†*OˆP¸™O’*O”P©™OžDO¾¤OÒBOúŽP¦P0Q·™PZ*Pb’Pr”Pv¦P‚¦P’P¢¦P¤P©™QPQ¼™QZ®Qj<QxQ¼™Qò˜R m™RO™R"|RHQÁ™RZ¤Rb¦RhP"™Rv¨Rˆm™R�O™Rž|RÄQÁ™RÖªRÞ¬RäP"™Rò®Sm™S O™S|S@QÁ™SJ°SLP"™Sv²S|PJ™SŒO™Sš´S PJ™T`T"¼TJ¼TL™TV`TX™Tê¶Tî¸TòºTú¼Tþ¾UJFUZ†UjÀUlQÆ™VV@V"þV$QD™V.ÂV>¦VBVN¦VZÂV^¦V¦V¶ÂV¼QË™W:WQ?™W<W*W.®WB@WFþWHQD™WRÂWb¦WfWr¦W~ÂW‚¦WÊ<WÔQŠ™X*Xž®X®<X¸QŠ™X¦XÊÆY*>Y.@Y0P"™Y:YB¦YFÈYšFZJ¦ZNNZ|$™ZЦZ¶¦ZÆ‚Zʦ[V[žÎ[¢*[®*[°P©™[ÎD\Ê\ *\*\P©™\&\,QЙ\>*\XQ·™\z*\€P©™] N]œP®™]¦®]¶<]ÀP®™^,P®™^6Î^<P®™^F®^V<^`P®™^nÎ^pP®™^ðQ·™_®_<_<Q·™_¨QÕ™`(QÕ™`8QÚ™`F|`rÒ`ŒQß™`–Ö`˜P"™aP^™aPPr™bB.bV.bâ.c".cR0cTR™c¦2cø¶™dH¸™d˜À™dð™eüÒ™fˆÔ™fÜØ™gŒÈ™h, ™iT™j< T™jŒÌ™jàÞ™k4Ιk–k à™llä™l,C;™lÐ O™m0è™m€ê™møì™n�î™nÜð™o.,p”ö™qø™q$C;™q|ú™qÜü™r,þ™rŒ ™sÐô™t:tRtZt\EI™{41Œ™|~ |–"|ž$| EI™‚ ™…¼ O™† T™‰¬ A™‰øÖ™ŠT h™Š  c™‹È™‹ˆÈ™‹¼È™ŒzÜŒŠ Œ¢"Œª$Œ¬EI™Œ¶&ŒÀEI™ŒÊÜ�z(�&(�4CÜ™�HC;™�¢�²*�¸E‹™‘$‘",‘(E‹™’:0’Ê0•LR ™–`R%™–”O+™–°O+™–ÌO+™–àR ™—O-™—@O+™—hO+™špR ™œÈO+™ždO+™ ÔR%™¢R ™¢LR ™¤¾0¥†0¦.0ªhR%™ª¸R%™ªäO+™ªðR ™¬X ™¬œO6™­==™­3Ø™­>^­r`­| ™­¶b­ð3â™®=e™®=™®xO¦™®¨O6™¯==™¯(3Ø™¯Nd¯‚`¯Œ ™¯œ ™¯Öf°3â™°(=e™°0=™°˜O¦™°ÈO6™±8==™±P3Ø™±vh±ª`±´ ™±Ä ™²j²L3♲d=e™²l=™²ÔO¦™³`³< ™³€3♵ R™µX O™µp¸™µÐ ™¶ ™¶l ™¶Àz™· #™·` !™·° %™·ø '™¸d ™¸È )™¹ +™¹t 1™¹È -™º /™ºh 3™º¸30™»0¸™»Ì ™¼Ì™¼8¶™½8䙾2¾DR™¾²2¾È¸™¿’2¿øÚ™ÁXì™Â2ÂLΙÂ`ð™ÂlÀ™Ö2ÃÄΙÅÆ2Æ´À™ÆÔΙÉ( ™ÉøQl™ÊDR™Ê�R\™ÊÜR ™ËXR*™̰O+™ÍÄ™Í0º™ÍtÔ™ÍÖ4Íþ6Î&8ÎN:Îv<Ξ>ÎàO%Ï@иO0Ñ(R/™ÑfDÑÔO"™ÒhR%™ÒŒQ…™ÒâJÓFJÓªJÓ®LÔ"NÔ:PÔHQ…™ÔRRÔZPÔªJÕO6™ÕzJÕæT×O6™×jJ×ÒVÙ XÙZÙP¸™ÙZBÙ€O"Ù‚@Ú²FÚÚHÛ\Û(O Ûì™ÜŠlÝ4R%™ÝXÌ™ÝlP'™ÝânÝäR™ÝîlÞ2pÞZrÞˆO6™Þð==™ß +™ß2tßnv߀ £™ߺxßô A™à =e™à=™à|O¦™àÒvàä ™àô A™á|R>™áÄRR™â4R9™â¨RW™ãR4™ã” ™ã¼P©™ä, ·™äPP©™äÌR9™äØ3%™åæ†æjˆæÆÒæÐCÜ™æäC;™çJÔçÎÖè*Òè4CÜ™èHC;™è¦Øè´9™è¾ÚèÆÜèÈEI™é¢Þé°"Š™éºàéÆâéÈE™êO6™ê€==™êªÒëäëFæëzˆëêèì*†ìÂêíŠìí¾ˆî(=e™îJîî‚Òî�CÜ™î¨=e™î°=™ïO¦™ð:ððH!E™ðRòð^ôð`E™ð°O6™ñ==™ñ>ÒñžöñÆøòÖò†úòÂÔóZüô"þôVÖôÀ=e™ôâõÒõ(CÜ™õ@=e™õH=™õ°O¦™öÂzöê|÷~÷:€÷b‚÷Š„÷¸O6™ø$==™øNŠø¦ŒøÚŽúO¦™úh c™ú|RH™ûL c™ü<È™ýL3;™ý| c™þpÖ™ÿ¼ T™< O™Ô O™¸ c™àRH™4™ c™Ô c™$ c™D4™ð4™$¸™h c™ Ž’ ˜+>™n’x+>™FìP+>™@ h™T c™$ h™òî~ð†ò@™ >Ä™T¶™L A™ˆ h™ A™l A™Ô Y™ÆþÌPY™, A™˜ A™œÖ™lO6™Ø==™ Š Z Ž!¼O¦™" T™"˜ O™#0 O™%4™%˜4™&$ h™&œ h™))P©™)"X)$P©™)tO6™)à==™* Š*f*¦ *ÖŽ*Þ +r+Â+Æ,^- O¦™. ß™//v/zŽ0.Š08CÜ™0LC;™0®t1"Ž1~Š1ˆCÜ™1œC;™2v2‚2ÞŠ2èCÜ™2üC;™3n3âŠ3ìCÜ™4C;™4Zx4h5™4rz4~|4€E™4ÌO6™50==™5ZŠ5²~5Þ6¸O¦™7Ü h™8T h™8Ì h™>Ž>ŽŠ>˜CÜ™>¬C;™?€?5™?‚?*„?,E™?xO6™?Ü==™@Š@^†@’ŽAlO¦™A¤(ö™B<'è™BØ(ö™C$'è™G c™GÈ4™HP4 ™HÔ4™Kº¶KÊxKØ5™KâzKî|KðE™Kú€L5™L‚L„L E™L*¸L2ºL8E™LB¶LˆO6™Lì==™MŠMr¼M²¾MâŽMêÀN~ÂNÎNÒÄOjPPO¦™PŽÆPž€P¬5™P¶‚P„PÄE™PÎÈPÖÊPÜE™PæÆQ@ ¹™Q¾ÌQÎxQÜ5™QæzQò|QôE™QþÎRÐR E™RÌRp Þ™SÀÊ™T�Tl™UH™Udë™UŒ,G™V(™VDë™Vp,G™Vä 8™W| 8™X<RH™XX c™XlRH™X„ ^™Xº”Z¸ c™[^–[r˜[‚˜[Ò˜\RC™\>–\XÈ™\¨È™\ÔRH™\îœ]hÈ™^PÈ™_ È™_ÀÈ™_ðRH™`DÈ™`tRH™`þžbr b† bôÈ™c@ ^™c| ^™d*¢e�È™eè ^™f( ^™f< ^™fX§™hpè™h²šhÚ¤hæ¦i¤R%™jR ™lT¶™q’ªuB¤un¦uš¤u¶¦uÖ¤uî¦w¤w2¦w²¤wʦy’¤y¾¤z(O„™zΤzî¬{®°6²dRf™Š²²²Ú²€²€&,€2¶€R¸€~¤€š¸€î¦�¤�F²�nº�šº�ª¬�Ƭ�Ê,�꤂¦‚F¦‚J¤‚V¼„º¦…º¬…Ú¾…òÀ†nÀ†r†zÀ††¼†¬Rf™†Æ¤‡ÖÀ‡ôO™ˆÊˆ6¤ˆXO™ˆfʈÆÌˆÖΈòЉœOô™Š$¼™‹ðO~™ŒŽ¤Œ¢ÒŒ²ÔŒÖ¤�2¤�f¦�žÖ�¶Ø�Ò¬�êÚŽ&¤ŽŽ¤Ž®¦ŽÖ¦Žö°�¤�>Ü�FÞ�Jà�VÊ�nâ�xO™�†¬�Ö²�vä‘&Ô‘ZÒ‘jÔ‘~Ò‘ŠÔ‘šÒ‘Ö²‘ò¸’ ¸’B²’Z¸’‚À’ºæ’ÊÊ’âè’ê“B²“N¼“fÊ“jÀ“næ“€O™“Ò²“îÊ“òæ“øO™”.¼”ž²”Êê”èO™”öÊ•zæ•‚¬—¦—2¤™Z¦œ´Oڨ�´�(O�*Ä�2Æ�´Ra™�öÈžDÄ™ŸôŸ`¼™Ÿ¦ôŸôº™ ¼™ Dº™ T¼™ œº™ ¬¼™ ìº™ ü¼™¡¢ô¢Dº™¢T¼™¢ º™¢°¼™¤šö¤Üº™¤ì¼™¥8º™¥H¼™¥œ¼™¥âö¦4º™¦D¼™¦�º™¦ ¼™¦øº™§¼™§Tº™§d¼™§öö¨tº™¨„¼™¨Ðº™¨à¼™ª2øªBú«ºü­«™­Ð¶™¯ø A™° h™°\ A™± A™±, h™±” h™±¸ h™±ä A™²@ A™²Ä A™³R³€O6™³ä==™´´LR ™´h@È™´’p´ÈA™´êrµ @þ™µ8=e™µ@=™µ¨O¦™µæ¶n¶¶··T=E™·¨=E™·ð=E™¸TR%™¸¨R ™¹DI@™¹Ö>º =E™ºˆ=E™»<I£™»¬=E™¼O6™¼x==™¼ˆ=E™¼ÌI@™¼ä=e™½@½zB¾I@™¾=e™¾lI@™¾ŠD¾¶F¾ÊH¾îJ¿&L¿fF¿~N¿¦J¿²FÀDÀ(=e™ÀrPÀÀ=e™ÀÈ=™ÁO6™Á`==™ÁŠRÁ¦FÁºTÁÖVÂXÂVFÂrZ–V¢FÃRÃ=e™ÃPO6™ð==™ÃÚ\ÃöFÄ ^Ä&`ÄbbĦFÄÂdÄæ`ÄòFÅV\Åd=e™Ũ=E™ÆžfÆ®hÆ´E‹™ÆþFÇFFÇTC;™ǪjǺfÇÊhÇÐE‹™ÇÚlÇäEI™ÇîjÈ<O6™Èœ==™ȦFȾnÈöJÉpO¦™É®FɼC;™ÊO"™ÊœDå™ÊÖfÊâhËjË&hË^jËjh˦l˲hËölÌhÌPDå™ÌxDå™Ìžn̪hÌÞfÌêhÍjjÍvhÍ®jͺhÎjÎhÎ>jÎJhΦlβhÎölÏhÏ`Då™ÏþjÐ hЀ==™ЖpÐÞrÐútÑvÑœ==™ѲxÑúrÒzÒ6|Ò´==™ÒÊ~ÓrÓ.€ÓN‚Ó¼==™ÓÒ„ÔrÔ6†ÔVˆÔÄ==™ÔÚŠÕ"rÕ>ŒÕ^ŽÕÌ==™Õâ�Ö*rÖF’Öf”Ø==™Ø–Ø6˜Øzš؆rØšœغžØÒ–Ù ==™Ù Ù2¢Ùv¤Ù‚rÙ–¦Ù¶žÙΠÚ==™Ú¨Ú*ªÚn¬ÚzrÚŽ®Ú®žÚƨÚü==™Û°Û"²Ûf´ÛrrÛ†¶Û¦žÛ¾°Ûô==™Ûþ¸ÜºÜ^¼ÜjrÜ~¾Üžžܶ¸Üì==™ÜöÀÝÂÝVÄÝbrÝvÆÝ–žÝ®ÀÝä==™ÝîÈÞ ÊÞNÌÞZrÞnÎÞŽžÞ¦ÈÞÜ==™ÞæÐßÒßFÔßRrßfÖ߆žßžÐßÔ==™ßÞØßúÚà>ÜàJrà^Þà~žà–ØàÌ==™àÖààòâá6äáBráVæávžáŽàáÄ==™áÎèáêêâ.ìâ:râNîânžâ†èâ¼==™âÆðââòã&ôã2rãFöãfžã~ðã´==™ã¾øãÚúäüä*rä>þä^žävøä¬==™ä¶äÒåå"rå6åVžånå¤==™å®åÊ æ æræ.æNžæfæœ==™æ¦æÂççrç&çFžç^ç”==™çžçºçþè rèè>žèVèŒDÛ™èê èøF™é"é $é EI™éhDÛ™éÂ&éÐF™éÚ(éâ$éäEI™ê<DÛ™êš*ê¨F™ê²,êº$ê¼EI™ëDÛ™ër.ë€F™ëŠ0ë’$ë”EI™ëìDÛ™ìF2ìTF™ì^4ìf$ìhEI™ìÀDÛ™í6í(F™í28í:$í<EI™í”DÛ™íî:íüF™î<î$îEI™înî|C;™îàO"™ïp==™ï†"ïÎïú$ð&ð*(ðV*ðÜ==™ðò,ñ:ñf.ñ~&ñ–0ñÂ2ò4==™òJ4ò’ò®6òÎ&÷f8÷v:÷Æø²<øÀB%™øÊ>øÒ@ù O6™ù€==™ùŠBù¢DùÚFúTO¦™úŠBú˜C;™úêHúøB%™ûJû @û\O6™û¼==™ûÆBûÞLüNü�O¦™üÆBüÔC;™ý‚Pý’8ý¢:ý²RýÆPþO6™þx==™þšþºTþÚ&ÿTO¦™ÿöVP8&:6RJVNXRP^V¬O6™==™6RZr&’\Â2DO¦™ö^P8&:6RJ^N`RP^^°O6™==™>Zbz&šdÊ*TO¦™¸O6™==™J„R ™ @È™ÊA™" X@þ™p=e™x=™àO¦™œ™Ð J™ì c™ D4 ™ \™ Œ J™ d J™ € c™ ØO+™ ôCú™ $O+™ ô™¤Ê™èè™$RM™pO+™�O+™"ˆPO6™´==™âŠCm™,@È™V²„BÙ™˜A™º´ð@þ™=e™=™xO¦™¬O6™==™:ŒšŽº¢ì@Ñ™¤F¦b¨’ª–¦ú¢@ñ™=e™4R%™X@ˆ™`@È™Š¬¸BÙ™ÌA™î®$@þ™<=e™D=™¬O¦™ÜO6™<==™F¦^°–ªO¦™B�–’¤C;™ö”B%™–˜EI™dO6™À==™âšœ|O¦™´O6™==™6žÐO¦™O6™`==™‚ O¦™¶ Ò ÖÚÞæî òöú ^6†<®LÖNþP &R ¼Qä™!O-™!,Qé™"(P^™"XPr™#€Pr™#ŒPr™$P^™$0Pr™$ÀQ…™$ÜP^™%œQ…™%¨PY™%¼P^™%àO+™'¢X'ÊZ'ò\(^(¬Qä™(ÐP^™(ôO+™)TO+™*PY™*PQä™*tP^™*˜O+™*ðO+™+ÐQä™+ôP^™,O+™,ˆO+™,øQä™- Pr™.O+™.DO-™.„Qä™.¨P^™.ÌO+™/4Qî™/TO+™0d0^d0Âd1¤Qä™1ÈP^™1ìO+™2HQä™2lP^™2�O+™3 O+™3Âf3Úh3òd4–h4Úf4âh5^d5ff5zd6Îf6æh6þf7’h7Òf7Úh8Vf:PY™;Lr™;˜t™<t™@¸Pr™A¤Qä™A¸Pr™B˜Pr™CàQó™D4Qø™DÀPr™DØP^™E¼Qä™EàP^™FO+™FìQý™G¨Qý™HBpHTR™HrtHxPJ™H„PY™I,P^™IPO+™J<O-™KO+™KøQä™LP^™L@O+™L Q…™MdQRbQzjQ¢lQÊnQòrRvR¬º™RðR™SP^™S8P^™SˆP^™S¼Pr™T¬º™TäR™Upº™U¨R™W P^™W"|Wôº™X(O"™Yº™YLR™ZHPr™Z`Pr™Z�Q…™[TPr™[lPr™[œQ…™[¨Pr™\4PY™\¾z\æŠ]�]6’]^š]†œ]®ª]Ö²]þ¶^&Ì^NÐ^vî^žö^Æ^î _2_>4_f:_Ž>_¶H_ÞJ`P`.T`VX`~\`¦h`În`ötavaFxanza–~a¾„aæˆbŠb6Žb^¤b†¨b®ªbÖ¬bþ®c&¸cN¾cvÀcžÆcÆàcîødüd>df dŽd¶dÞee.eV e~"e¦$eÎ&eö2f6fF<fn@f–Df¾Lfæbgfg6vg^zg†�g®–gÖš�h*œ�hVš�hªœ�hÚš�i2œ�i’š�iêœ�jOjžj j�Ra™jÒ¢júÂk"ÄkJÌkrÎkšÐkÂÔ Pâ Tö `  lº p:S |¾ €:W ˆ;Å Œ Ø:9 0Ç $:9 \0Ç p:9 ¨0Ç ¼/÷ À¾ ø0Ç  /÷ ¾ H0Ç \/÷ `¾ d0Ç h0 t:I | 5 „ A Œ E ”9÷ œ:  ¤ e ¬ i ´ M ¼: Ä 9 Ì I Ô = Ü Q ä Y ì U ô a ü ]  :E : 9û $9ó ,9÷ 4:  <9ÿ D: L: T: \: d: l: t:' |:+ „:/ Œ:3 ”:# ¤:A ¬:M ¼2/ À=‚ Ä;Ê È=Š Ð:i Ô:e Ü0  ä/ý ô0 ü/ù  0 /Ñ /é $ E ,9ù 4:  </í D i L M T: \ 9 d/å l = t/Õ |/Ù „/Ý Œ/á ” ]  ,ý ¬&Ò ´&¶ Ä&Î Ì&² Ü&Ê ä&® ô&Æ ü&  &¾ &º   pB~ |G� „G‹ ŒGU œG‡ ¤Gƒ ¬GQ ¼G ÄG{ ÌGM ÜGs äGw ìBˆ üGk Go Bˆ Gg $GI 0D <B˜ DBœ LB† \B� dB” lB† x@o „O ŒO œO ¤O ´Nÿ ¼Ný ÌNû ÔNù äN÷ ìNõ üNó Nñ Nï Ní °I ¸:Y À:Y È&Ø Ð&Ö Ø&Ø à&Ö ìC! ôC üC% B« &Ø &Ö (1˜ ,0Ñ P1˜ T0Ó X1˜ x1˜ €0Ï „1˜ ¨1˜ ¬0Ó °1˜ Ð0Ø Øz Üz àŒ øz ü z  0z 4À Lz PÀ �  z ’ z  z (’ 0z 4z <ª Dz Hz Pœ Xz \z dš lz pz x¬ €z „z Œ² ”z ˜z  ” ¨z ¬z ´° ¼z Àz È® Ðz Ôz ܘ äz èz ð¶ øz üz ²  z z ´  z $z ,ž 4z 8z @¢ Hz Lz T– \z `z h  pz tz „z ˆz ˜z œz ¬z °z Àz Äz Ôz Øz èz ìz üz z z z $z (z 8z <z Lz Pz `z dz tz xz ˆz Œz œz  z °z ´z Äz Èz Øz ìz ðz ôz üz  z z ,z <z Lz \z lz |z Œz œz ¬z ¼z Ìz Üz ìz üz  z z ,z <z Lz \z lz |z Œz œz ¬z ¼z Ìz Üz ìz üz  z z ,z <z Lz \z lz Ú    ò       (2/ ,  42/ 8  @ s D  L;Ê P  X;Ê \  d;Ê h  p:e t  |´ €  ˆ s Œ  ” s ˜   2/ ¤  ¬2/ °  ¸ s ¼  Ä s È  Ð s Ô  Ü2/ à  è s ì  ô s ø   s    s    s   $ s (  0 s 4  < s @  H2/ L  T2/ X  `2/ d  l2/ p  x2/ |  „2/ ˆ  �2/ ”  œ2/    ¨2/ ¬  ´2/ ¸  À2/ Ä  Ì2/ Ð  Ø2/ Ü  ä2/ è  ð2/ ô  ü2/   2/    ,ý     $  ,@o 0  8D <  DD H  PD T  \D `  hD l  tD x  €D „  ŒD �  ˜D œ  ¤D ¨  °D ´  ¼@o À  ÈDÂ Ì  ÔDÂ Ø  àDÂ ä  ìDÂ ð  ø@o ü  @o   @o   @o    (I ,  4I 8  @I D  LI P  XI \  dI h  pI t  |I €  ˆI Œ  ”I ˜   I ¤  ¬I °  ¸I ¼  ÄI È  Ð@o Ô  ÜB« à  èB« ì  ôB« ø            $ (  0 4  < @  H L  T X  ` d  l,ý p  x,ý |  „,ý ˆ  �,ý ”  œ,ý    ¨,ý ¬  ´,ý ¸  À,ý Ä  Ì,ý Ð  Ø,ý Ü  ä,ý è  ð,ý ô  ü   2/    :p    :p $  , 0  8 <  D H  P T  \ `  h l  t x  € „  Œ �  ˜ œ  ¤ ¨  ° ´  ¼ À  È Ì  Ô Ø  à ä  ìK ð  ø ü  Ö          ( ,  Xê \ `ô dà h lª p;½ t0Õ x0Õ |0Õ €0Õ „0Õ ˆª Œª �ª ”ª ˜ª œ°  î ¤® ¨ ¬¬ °Ò ´´ ¸Ô ¼=† ÀÈ ÄÖ È=€ Ì=€ Ð=€ Ô=€ Ø=€ Ü=€ à=Œ ä=Ž è=Ž ì=Ž ð;Ê ô;Ê ø¾ ü=~ æ  s :9  :9 :9 :9  s  s  s $ s ( s ,:m 0  4Ä 8Ì <,ý @/ñ D/ñ H,ý Lì Pú Tê Xü \Ú `Ø d/ñ h/ñ l&ª p&ª t:= x:= |:= €:= „:= ˆ:= Œ:= �:= ”:= ˜:= œ:=   ¤&¢ ¨&¢ ¬&¢ °&¢ ´&¢ ¸&¢ ¼&¢ Àô Ä&ž È&ž Ì 6 Ð Ôþ Øð Ü 6 à 6 ä < è 6 ì¯ ð¯ ô¯ ø¯ ü¯ ¯ ¯ ±  ± ± ± ± ±  Æ $¯ 8} L­ P­ T XÀ \­ `­ d­ œO   ̯ б Ô­ Ø­ Ü­ } &ž &ž $&ž (&ž ,@ 0>Î 4 C 8 C < W @&ž DÊ H L&¢ P&¢ T&¢ X&¢ \&¢ `&¢ d&¢ h¾ l p t x | €&¢ „&¢ ˆ&¢ ŒCÍ �=ˆ ”=ˆ ˜B| œB|  GY ¤GY ¨GY ¬GY °GY ´GY ¸GY ¼GY ÀC, ÄC, ÈC, ÌD ÐD ÔGY ØGY ÜGY àGY äGY èGY ìD ðGY ôGY øD üD !D !GY !GY ! D !D !G“ !G“ !G“ ! G“ !$GG !(GG !,GG !0GG !4G• !8GG !<B  !@B  !DBŽ !HBŽ !LBŽ !PBŽ !TD !XGY !\G— !`GG !dD !hGY !lG™ !pG™ !tG™ !xGG !|GG !€GG !„D !ˆG› !ŒGG !�D !”D !˜G� !œGG ! D !¤D !¨G� !¬Gi !°Gi !´Nï !¸Nï !¼Nó !ÀNû !ÄI !ÈGe !ÌGe !ÐGe !ÔGe !ØGe !ÜGe !àGe !äGe !èGe !ìGe !ðGe !ôGe !øGe !üGe "Ge "Ge "Ge " Ge "Ge "Ge "Ge "Ge " Ge "$I "(NÇ ",I "0I "4NÇ "8I "<I "@NÇ "DI "HI "LNÇ "PI "TI "XNÇ "\I "`I "dNÇ "hNÉ "lI "pNÅ "tI "xNÇ "|NÇ "€NÇ "„NÇ "ˆNÇ "ŒNÇ "�NÇ "”NÇ "˜NÇ "œNÇ " NÇ "¤NÇ "¨NÇ "¬NÇ "°NÇ "´NÇ "¸NÇ "¼NÉ "ÀI "ÄNÅ "ÈI "ÌNÉ "ÐI "ÔNÅ "ØI "ÜNÉ "àI "äNÅ "èI "ìNÉ "ðI "ôNÅ "øI "üNÉ #I #NÅ #I # NÉ #I #NÅ #I #NÉ # I #$NÅ #(I #,NÉ #0I #4NÅ #8I #<NÉ #@I #DNÅ #HI #LNÉ #PI #TNÅ #XI #\NÉ #`I #dNÅ #hI #lNÉ #pI #tNÅ #xI #|NÉ #€I #„NÅ #ˆI #ŒNÉ #�I #”NÅ #˜I #œNÉ # I #¤NÅ #¨I #¬NÉ #°I #´NÅ #¸I #¼O  #ÀNÅ #ÄG“ #ÈG“ #ÌG“ #ÐG“ #ÔG“ #ØG“ #ÜG“ #àO  #äNÅ #èO  #ìNÅ #ðO #ôNÅ #øO #üNÅ $O $NÅ $O $ NÅ $B‚ $@o $@o $Bœ $ BŠ $$BŠ $(BŠ $,BŠ $0BŠ $4BŠ $8BŠ $<@o $@BŠ $DBŠ $H@o $L@o $P@o $TGq $X@o $\Gc $`@o $d@o $hGy $l@o $pGa $t@o $x@o $|B  $€B  $„Bz $ˆBz $ŒB¢ $�Bz $”@o $˜CÍ $œCÍ $ &¢ $¤&¢ $¨&Ö $¬&Ö $°&Ö $´&ž $¸&ž $¼&ž $À&  $Ä&  $È&  $Ì $Ð&Ø $Ô&Ø $Ø&Ø $Ü&ž $à&ž $ä&ž $è&  $ì&  $ð&  $ô $øö $üCë %C^ %C %C % BŽ %C) %C %B  %B« % C %$B« %(B« %,C %0C^ %4BŽ %8BŽ %<C^ %@C %DC %HC^ %LC^ %PC^ %TCë %XCë %\&Ú %`&ž %d&  %h %l %p %t %x %|&Ý %€&ž %„&  %ˆ&à %Œ&ž %�&  %”:= %˜:= %œ:= % := %¤/ñ %¨/ñ %¬&¬ %°&¬ %´0  %¸/Í %¼:^ %À0 %Ä/Í %È/Ï %Ì,ý %Ð,ý %Ô,ý %Ø,ý %Ü,ý %à,ý %ä0 %è/Í %ì/Ï %ð,ý %ô,ý %ø,ý %ü,ý &,ý &,ý &:7 & :7 &:Y &9ñ &:` &:` & 1– &$1˜ &(0Ï &,1˜ &00Ñ &40Ó &80É &<0Ë &@0Í &D1˜ &H1˜ &L:\ &P:\ &T9ñ &X9ñ &\:b &`:b &d:b &h9ñ &l:7 &p:7 &t9ñ &x9ñ &| &€;¿ &„;Ç &ˆ &Œ &�r &”z &˜| &œ| & | &¤| &¨| &¬f &°z &´z &¸z &¼z &À| &Ä| &È| &Ì| &Ð| &Ô| &Ø| &Ü| &àŒ &äŒ &èŒ &ìŒ &ðŒ &ôŒ &øŒ &üŒ 'Œ 'Œ 'Œ ' À 'À 'À 'À 'À ' À '$À '(À ',À '0À '4À '8À '<À '@À 'Dz 'Hz 'LŒ 'PŒ 'T^ 'X| '\ '`d 'd 'h 'l¾ 'pv 'tl 'xp '|` '€À '„À 'ˆÀ 'ŒÀ '�À '”’ '˜ 'œ '  '¤ '¨ '¬ '° '´Š '¸ˆ '¼¨ 'ÀD 'Äà 'ÈD 'Ìâ 'ÐÀ 'ÔÀ 'ØÀ 'ÜÀ 'à  'ä_ 'èÀ 'ìÀ 'ðÀ 'ôÀ 'øÀ 'üÀ (À (À (À ( À (Œ (Œ (Œ (Œ ( Œ ($Œ ((Œ (,Œ (0Œ (4Œ (8Œ (<Œ (@Œ (DŒ (HŒ (LŽ (Pò (Tz (XÀ (\À (`À (dÀ (hÀ (lÀ (pÀ (tÀ (xÀ (|L (€< („z (ˆŒ (ŒŒ (�Œ (”Œ (˜z (œÎ ( b (¤À (¨À (¬z (°z (´Œ (¸Œ (¼Œ (ÀŒ (ÄŒ (Ⱦ (̾ (о (Ô¾ (ؾ (ܾ (ྠ(ä¾ (è¾ (ì¾ (ð¾ (ô¾ (ø¾ (ü¾ )¾ )z )  ) z )Œ )Œ )Œ )Œ ) Œ )$Œ )(Œ ),Œ )0Œ )4Œ )8Œ )<Œ )@Œ )DŒ )HŒ )LŒ )PŒ )TŒ )XF )\z )`  )dz )hz )lÀ )pÀ )tÀ )xÀ )|Œ )€Œ )„Œ )ˆŒ )ŒŒ )�Œ )”Œ )˜| )œz ) z )¤z )¨z )¬ä )°z )´ )¸z )¼z )Àz )Äz )Èz )Ìz )Ðz )Ôz )Øz )Üz )àz )äz )èz )ìz )ðz )ôz )øz )üz *š *z *| * | *z *¤ * *  * À *$ *(Œ *,Œ *0Œ *4Œ *8Œ *<Œ *@Œ *DÀ *HÀ *LŒ *PŒ *TŒ *XÐ *\Œ *`Œ *dŒ *hŒ *lŒ *pŒ *t¢ *xŒ *|Œ *€Œ *„Œ *ˆŒ *ŒŒ *�Œ *”Œ *˜Œ *œŒ * Œ *¤Œ *¨Œ *¬Œ *°Œ *´Œ *¸Œ *¼Œ *ÀŒ *ÄŒ *ÈŒ *ÌŒ *ÐŒ *ÔŒ *ØŒ *ÜŒ *àŒ *äŒ *èŒ *ìŒ *ðŒ *ôŒ *øŒ *üŒ +" +¾ +¾ + ¾ +z +z +Œ +  + œ +$ +(z +,x +0| +4| +8| +<| +@| +D| +H| +L| +P| +T +Xz +\z +`z +dz +h +l +pz +tz +x +| +€ +„ +ˆ +Œ +� +” +˜ +œè + z +¤ +¨z +¬z +°¦ +´Œ +¸Œ +¼Œ +À† +ÄH +ÈH +Ìz +ÐÀ +ÔÀ +ØÀ +Ü +àÀ +äŒ +è. +ìŒ +ðz +ôB +ø4 +üP ,( ,z ,\ , z ,Œ ,, ,À ,6 , Z ,$z ,($ ,,z ,0z ,4z ,8z ,<z ,@z ,Dz ,Hz ,Lz ,Pz ,Tz ,Xz ,\„ ,`z ,dR ,h@ ,l2 ,pV ,tz ,xz ,|z ,€z ,„T ,ˆz ,Œz ,�N ,”X ,˜| ,œ| , | ,¤| ,¨| ,¬| ,°| ,´| ,¸| ,¼| ,Àz ,Ä* ,Èz ,Ìz ,Ðz ,Ôz ,Øz ,Üz ,àz ,äz ,èz ,ìz ,ðz ,ôz ,øz ,üz -z -z -z - z -& -z -z -z - z -$z -(z -,z -0z -4z -8z -<z -@h -Dz -H˜ -Lz -Pz -Tz -X -\z -`z -dz -hz -lz -pz -tz -x‚ -|Œ -€n -„z -ˆz -Œz -�z -”” -˜ -œž - j -¤€ -¨z -¬ -°z -´z -¸z -¼z -Àz -Äz -È� -Ìz -Ж -Ôz -Øz -ÜD -àz -äJ -èŒ -ì0 -ðÀ -ôÀ -øÀ -üÀ .z .H .z . z .z .z .z .z . z .$z .(z .,z .0z .48 .8z .<: .@z .Dz .Hz .Lz .Pz .Tz .Xz .\> .`z .d~ .€z .„z .ˆz .Œz .�z .”z .˜z .œz . z .¤Œ .¨Ü .¬z .°z .´Þ .Às .Äu .ÌO .ÐŽ .Ôz .Øz .äz .èz .ôz .øz .üz / / /¨ /  /¤ /� / /  / z /$z /(z /,ø /0² /4 /@t /Dz ¬L¬X "¬”­h­l­| +® ¯x¯|¯Œ¯” 5°À± ±¤±´±¼±Ì A³³ ³$³(³0³0³D7³H³P `³Ä³ä³è³ð³ø³ü´´´$ ´( ´0 ´8 ´D´L´X´`´d´h´l´„´ ´¤´°´´´¼´Ô ´Ø´à´ä´ì ´ô´ø ´ü!µ µ&µ'µ(µ$)µ$;µ0+µ4)µ8;µD+µH,µHjµ`,µd-µh,µl-µl/µx0 ŽµÄµÐ ™¶¶  £¶`¶l ®¶´ ··· Á·T·` Ê·¤·° Ó·ì·ø ߸H¸d 踼¸È ó¹ ¹ þ¹h¹t ¹¼¹È º º º\ºh 'º¬º¸ ¹DHPPåTÕ\å`Öx×|ր׈ٌÖ�ݔל٠ݨ׬° Þüå ÕåÖ0×4Ö8×@ÙDÝLÖP×XÙ\Ý`×ddÅ÷°øDßøHÖøLßøP×øTÙøXø`ßødÖøhÝølÖøp×øtÝøx×ø|Ùø€Ýø„×øŒßøŒù<Õù<Öù@ÕùDÖùHÕùLÖù\×ù`ÖùdÝùhÖùl×ùxÙù|×ù€ù„Ýùˆ×ùŒù�×ù”Ùù˜Ýùœ×ù ôúLúdúdŒútúŒú�úÔúðÙúø¥ûÕû¥ûÕû ¥û¦û¨ûåû ‚û(¨û8©û<«û<ûDûHŒûTû\ û` ûhûlÕûpûtÕû€û€û„·ûÌûäÙûìûðûôûøûøüåü‚üüü ü$�ü\üdüdÕütÖütÐütÖütüt ü°üÐüÔÙüØüàüäÙüè¥üðÕüô¥üøÕüü¥ý¦ý¨ý åý‚ý¨ý(©ý,«ý,ý4ý8ý<ý@ýDýX ý\ ý\ý`ýdýlýpýpýxŒý„ýŒÕýœýœ¬ýœýœÇýèþÙþ þÙþ¥þÕþ ¥þ$Õþ(¥þ,¦þ,¨þ8åþ<‚þD¨þT©þX«þXþ`þd†þxþ|þ€þ„þ„Õþ”þ˜ þœ `þèþüåÿÿ ÿÿH ÿP×ÿTÿX×ÿd•ÿœÿ°lÿ´ÿ¸lÿÄÿÌÿÌÕÿÜÖÿÜÐÿÜÖÿÜÿÜÉ0DLLÕ\Ö\Ð\Ö\\ö¬ÀÜääÕôÖôÐôÖôô "0LÙTœ\Õ`œdÕhœl�lŸ€ €ºˆ ¤¡¨£¨°´ŒÀÈÈÕØÜ à¬à à Á(PËX\`ËhÙlËpÙtœ|Õ€œ„ÕˆœŒ�ŒŸ   º¨ Ä¡È£ÈÐÐØ Üø Œ( 0Õ@@HHÕXÖXÐXÖXX¬XX\`d˜¸äÙèìÙðœøÕüœÕœ�Ÿ º$ @¡D£DLTåX\ `åd t |€ „ˆ�˜œ ¤°¸¸ºÀÈÐŒàèøüŒ $Œ0 <#L$P%X)XºX)`*h+hºh+„,„-ˆ/Œ-˜/œ0œ2¨3°4¼5Ä6È7Ì6à:è;ø<?AB<A@BLŒPBhŒt/|0|F€G„ÕˆJŒÕ˜KœÕ N¤Õ°¬°R·Ã´Ï`Û ç ¸ó dÿ   ° P#  (Ù 0œ 8Õ <œ @Õ Dœ H� HŸ \  \º d  €¡ „£ „ Œ Œ     ¨¬ ¨  ¨‘ ìٜ՜ Õ$œ(�(Ÿ< <ºD `¡d£dll€¬€€ ïÄàÙèœðÕôœøÕüœ�Ÿ º 8¡<£<DDX¬XX Mœ¼ÙÄœÌÕМÔÕØœÜ�ÜŸð ðºø Õ $¡(£(0å8< <‹H PŒ\ dÕt t¬tt9ÄàÙè4ø5‹,4ÕDÖDÐDÖD D6D7DºL7T8``"«¨ðôºøüº (,04<@HHºLPºTdppºpxºx�œ ¤¨°´¸¼¼ºÄÌÐØ Ø#ð$ %$ %8,<(@,D-x/|-„/ˆ0�º˜0´1´4¸9¼ËÀ4ÄËÈ8ÌËÐ9ØËÜ9àåä9è:ìºð;ôAø;ü@åD;D;D ;$D@E\GpHpIt‹xI„‹�J˜K˜M NØPøQSLU`V|6|7|º„7Œ8˜YœÕ¬º´7¼8È\È]À8TÙ\4l5„ŒŒ�”˜º ¨° À ÿ$Ù,4<5T\p#¸ÔÙÜ4ì5  º (0 @ b„ Ù¨4¸5ÐØì†0TÙ\4l5„ŒŒ”˜ º¨°¼ Ä Å 0Ù84H5`h|éÄàÙè4ø5 º , 4 4º4 < <º< XXºXp½x€º„  3 å Ë¨6¬Ë°º´å¸º¼·À6ä7äÕôÖôÐôÖô7ô6ô7ôºü78jmåX„ÙŒ4œ5´¼¼ÄÈÔËØÜËè ì·ð ôºø   å  <<Õ<<ttÕtttº|Œ¨¨Õ¸Ö¸Ð¸Ö¸¸6¸7¸ºÀ7È8ÔÔ à,PÙX4h5€ˆˆ�� ¤ ¬ äÕôô6ô7ôºü78\døßüÖ ß × Ù  ß Ö Ý Ö $× (Ý ,× 0Ù 4Ý 8× @ß @ ðÕ ðÖ ôÕ øÖ üÕ!Ö!×!Ö!Ý!$×!,Ù!0Ö!4×!@Ù!DÝ!H×!L‹!ø" l""l" "("(Õ"8Ö"8Ð"8Ö"8"8¿"x"Œ" "¨"¨Õ"¸Ö"¸Ð"¸Ö"¸"¸ì###8#@#@Õ#PÖ#PÐ#PÖ#P#P #Œ# #Ü#ÜÕ#ìÖ#ìÐ#ìÖ#ì#ìC$0$<L$|$�Ù$˜¥$ Õ$¤¥$¨Õ$¬¥$°¦$°¨$¼å$À‚$Ȩ$Ø©$Ü«$Ü$ä$ô$ü$üÕ% % %$¬%$ %$ ë%`%t%„%Œ%  %¨Õ%¬%°Õ%¼%ü&:&‹&,1&t&�:&”‹&¤K&ô&øT'(',]'\'`f'�'”o'Ä'äÙ'è'ìÙ'ð4(5(( (\(\Õ(lÖ(lÐ(lÖ(l(l6(l7(lº(t7(|8(ˆ(ˆ ×(Ø(ìº(ô(ü))º) )) ú)l*ß*Ö*ß* ×*Ù**Ý**$ß*(Ö*0×*4Ý*8×*<Ù*@Ý*D×*Lß*L*Œz*�*”z*Ð*Ôz*Ü*àz+H+l1+t+|1+´+¸1+¼+À1+Ä+È1,(,ÄÕ,ÄÖ,ÈÕ,ÌÖ,ÐÕ,ÔÖ,ä×,ìÖ,ðÝ,ô×,øÙ,ü×-Ö-Ý-×-Ù-Ý-×-  –-Ü-ð..å....å..D.H.P Å.Œ.�.”.˜. .¤.¬.´ ×.è/hæ/l/pæ0(0,á00ç04á08ç0@è0@!0”1æ11æ1x1|á1€ç1„á1ˆç1�è1�!1ô2tæ2x2|æ2Ø2Üá2àç2äá2èç2ðè2ð!63T3Üá3äç3èá3ìç3ôè3ô!E4H!M4Ä5Pß5TÖ5Xß5\×5`Ù5d5lß5pÖ5tÝ5xÖ5|×5€Ý5„×5ˆÙ5ŒÝ5�×5˜ß5˜!o6ä6ð6ðÙ6ø7!…7X7dº7l7t!›7´7Ô‹7ä!­8,8H:8L‹8\!È8¤8À:8Ä‹8Ô!ã9!î9l!ù9¼": ":X":¨"":ô",;@"6;Œ"@;Ø"J<$"T>ˆá>�ç>”á>˜ç> è> "Š>ô"’?p?üß@Ö@ß@×@ Ù@@ß@Ö@ Ý@$Ö@(×@,Ý@0×@4Ù@8Ý@<×@Dß@D"¹A˜"ÅAä"ÏB0"ÛB€"åBÌ"ñC"ýCh#C´#D#DLDhÙDpDxÕD|D€ÕD„DˆDˆDœåD ‚D¬D¼DÀºDÈDà#vE(E<ÙEDELÕEPETÕEXE\E\EpEpºEtExºE|E„#¹EÐEÜEÜÙEäEìÕEðEôÕEøEüEüFåF ‚FF$$Fd$ F˜F¬ÙF´¥F¼ÕFÀ¥FÄÕFÈ¥F̦F̨FØåFÜ‚Fä¨Fô©Fø«FøGG ŒGG ÕG0ÖG0ÐG0ÖG0G0¬G0$³Gh$¼G G´ÙG¼GØÒGÜÓGäÔGäÐGäÔGäGä$ñH(H<ÙHDH`ÒHdÓHlÔHlÐHlÔHlHl%%H¬HÀÙHÈ»HäÒHèÓHðÔHðÐHðÔHð»Hð¼Hð%dI0%mIp%wI¼%�J%‹JT%•J %ŸK0%©K¤%µL€M ßMÖMßM×MÙM M$ÝM(M0ßM4ÖM<×M@ÝMD×MHÙMLÝMP×MXßMXM˜zMœM zMÜMàzMèMìzNTNx1N€Nˆ1NÀNÄ1NÈNÌ1NÐNÔ1O4&DPx&LQ4&VQ¨&^Rd&hRØRàÆRäÆRð&zSS$ÆS(ÆS4&ŒS`ShÆSlÆSx'è,048@DHHÕLLÕX\ \¤\¥\Ùd¥lÕp¥tÕx¥|¦|¨ˆåŒ‚”¨¤©¨«¨ ° °å´ÄåÈØÜàèèŒôøü  Õ  Õ  Õ $ ( 0 0Õ 4 8Õ D L P X \ d h l p | (ö Ð ì ð ô ø    Õ  Õ   ¤ ¥ Ù $¥ ,Õ 0¥ 4Õ 8¥ <¦ <¨ Hå L‚ T¨ d© h« h p  på t ” ˜ œ ¬ ¬Õ ¼Ö ¼Ð ¼Ö ¼ ¼¬ ¼ ¼ Ä È Ì)à  L l p t |  |Œ ˆ  Œ  �  ”  ˜     ¬  ° ´  ¸ Ä Ì à è ì ü     ,)ä � °Ù ´ ¸Ù ¼¥ ÄÕ È¥ ÌÕ Ð¥ Ô¦ Ô¨ àå ä‚ ì¨ ü© «   å     å  , 8 < L  XÕ h  t  tÕ „ ˆ Œ �+>TäUÙUU ÙU$œU,ÕU0œU4ÕU8œU<�U<ŸUP UPºUX Up¡Ut£UtU|U”¬U” U” +�UØUøÙUüVÙVœV ÕVœVÕVœV�VŸV0 V0ºV8 VT¡VX£VXV`V`Vx¬VxVx ,GVÄVØVàVìVôVô×WØWÐWØWW,xWLW`WdWhWlW|W„-©Þ€ß`ßlßpßtß|߀-³à¬àÔàÜàà-½áDáTáXá\á`á`ᜠᤠᬠá° á¸-Ñâ â(â<âHâP-Ýâ˜â¤-èâüãã$ã,-ñãtãˆã¤ã¬ã¬7ã°ã¸ãÈãÌãÐãÐ.ää,ä<äDäLä\.ä¤ä°-ä¸äÀäØ.)åå(å,å0å4å@åL åX .7åÌæ\ææ`ædææÀæÄáæÈçæÌáæÐçæØèæØ.Rç0çÀæçÄçÈæè$è(áè,çè0áè4çè<èè<.mè”.ué .~éH.‡é�.�êê ßê¤Öê¨ßê¬×ê°Ùê´ê¼ßêÀÖêÄÝêÈÖêÌ×êÐÝêÔ×êØÙêÜÝêà×êèßêèë0zëàìÜÖìàìäÕìèììÕìðÖìôìøÕìüÖí×íÖí×í Ùí$Ýí,×í0Öí4×í<Ùí@ÝíD×íHí¬æí°í¸æî îæîî|áîˆçîŒáî�çî˜èî˜/ ïL/ïˆïŒ-ï”/#ïÐ/-ð(/5ð¨ñ4ßñ8Öñ<ßñ@×ñDÙñHñPßñTÖñXÝñ\Öñ`×ñdÝñh×ñlÙñpÝñt×ñ|ßñ|ñÄ1ñÈñÌ1òtótÖóxó|Õó€ó„ÕóˆÖóŒó�Õó”Öó¨×ó°Öó´×ó¸Ùó¼ÝóÄ×óÈÖóÌ×óÔÙóØÝóÜ×óàôDæôHôPæô¤ô¨æô´õáõ çõ$áõ(çõ0èõ0/©õä/²ö ö$-ö,/Ãöh1Œ°´¸¼ÈÐ Ø à ä è ìôü  $2Ücì2åd<2îdŒ2÷dä3e<eH3 e´3eð3f<3%f|30fÐ3;g g@gDgDgLgTgtgx g|g€ gœ gœ3Ogègì3Xh h,3bhph�h”h˜hÈhÐhèyhìhüyiiiyi i$yi, i4Ai4Ci8Ai@CiDAiLCi\Di`idDil3¤i´iÀiÄiÈ3¯j0j<3ºj€3ÆjÔ3Ïk(3Øk|kœkœk 3âkìlll3ìltlx3õlÄlÐ4m$m04 mtm€4mÄmÔmàmè0mìmð,mô4Bn<n@nH4Ln„4TnÐ4\o(o,o4o8o<4eopot4no°o´4woðoô4€p<4‰pxp”4“pðq4�qpq|4§qÐqÜ4°r r,4»r€rŒ4ÄrÔrØårÜ4Õssås4æsTsXsXås\shåsh5s¬5t(5&tœ5/tÌ5:u 5Cu@5Mu|5Vu°u´5auì5jv$v(v45tvhvpvt5v¨v°v´v¸5‹vðvøvü5–w05Ÿwd5ªw 5³wÜwàwôwôÐwô5Îx$x4x4Ðx45éx\xlxlÐxl6xœ6 xØ6y 6yH6(y|61y°y´Ûy¼6ByðyôÛyø6Sz(6\z`zdzhzhÐzh6vz˜6zÐzÔÓzÜzàÓzäzèÓzì6¤{$6¬{t6¶{¼6¿{ì6É|06Ò|l6Ú|ä6ã} 6ì}X6õ}¨6þ}ä7~47~l7~¨7"~ø7+474l7=¬7Gô7P€,7[€p7e€´7p�7z�`7„� 7��è‚ ‚‚‚(7›‚„7¤‚À7­ƒƒGƒ 7¿ƒPƒTGƒX7у ƒ¤Gƒ¨7ãƒì7ì„$„(G„,7þ„p8„¨8„à8…(8"…p8+…°87†8B†h8K†¬8T†ð8^‡P8h‡¬‡¼3‡À‡Èv‡Ì‡Ü8ˆˆDˆP3ˆT8žˆ 8§ˆä8°‰,8»‰ 8Ɖì8ÑŠ<8ÛŠ”8äŠà8í‹d‹x‹˜‹ ‹¤�‹¨‹¬�‹°‹´�‹Ü9Œ9Œd9�9!�L�Pº�T92�˜�œ2�´.�Ì9NŽŽ2Ž,.ŽHÅŽHŽP+ŽdŽh,Žh9‹ŽœŽ GޤKޏ9¦ŽèŽì����� �� �(�, �09±�t�|Ö�€�ˆÖ�˜×�œÖ� ×�¨Ù�¬Ö�°Ý�´×�¸�¼×�ÀÙ�ÄÝ�Ì×9Ç��,�0�49Ñ��9Ù‘9á‘l9é‘Ì;¤;­;µ<þ====2===E=M=U=]=e=m=u>Ä@@ˆµØµä@�¶(¶4@›¶h¶l¶t¶x@¥¶°¶´¶¼¶À@¯¶ø·@¸·H·T@À·œ·¨·°@È·ä·ð·ü¸¸¸¸ ¸@ѸH¸T¸\¸d¸l@Û¸œ¸¨@å¸à¸ð¸ô¸ø¹¹ ¹ ¹ ¹<¹L¹T¹X@ñ¹˜¹È¹Ô ¹Ø¹Ü¹à ¹ä ¹è¹ì ¹ð¹ô¹ø ¹ü º ººº ºº@þºtºˆº�º˜ ºœº  ºÀ ºÈºÔºèºôºü»»»»8»L»X»dA» »¬»¸»À»ÈA¼¼ˆ¼�¼”¼˜¼œ¼ ¼°¼Ü¼ì¼ü ½H ½P ½P½°½´½¸½¼½À½È½È½È½Ì½Ð½ä¾¾ ¾0¾8¾H¾L¾P¾|¾Œ¾�¾”¾˜¾¤¾¨¾°¾´¾¸¾¼¾À¾è¾ì¿¿d¿l¿p¿t7¿°¿´7¿è¿ìÀ0 ÀH"A‹ÀøÁlÁtÁxÁ„-ÁˆÁ˜-ÁœÁ¤Á¨-Á¬Á°-ÁØÁÜ-ÁôÂTÂ\Â`ÂdA ¤AÂØÂÜAËÃHüÃÄÃÈÃÔ3ÃØÃè3ÃìÃôÃø3ÃüÄ3Ä(Ä,3ÄDĤĬİÄ´GÄðÄôGÅ(Å,B ÅœŨÅ´BÆÆÆP ÆPB%ÆŒB-ÆøB6Ç8B@Ç”BLÈ4ȤȨȰÈ´ÈÄÈÈBgÉ ɬB¾<@HLBʈ”BÙäBá\Bò¬CøC;°ptx€œCm¤`dl�”˜   ¤ ¨ ¬ DH PT X\ ”˜ ÌÐR 0DXC´ÔDHPTdhCܳx´8´<´@´H´dCúH ,DÛî`Dåî¼îÌîØ îØEïDïx&ï€ï„&ï¸ï¼&ïÈïÌïÐ2ïÔ ïØïÜïàïä ð2ð ð(2ð, ð42ðtðt2ðtEIð¸ðä&ðìðð&ñ$ñ(&ñ4ñ8ñ<ñ@ ñDñHñLñP ñ„ñˆ ñ”ñ˜ ñ ñÜE‹òò<&òDòH&ò|ò€&òŒò� ò�ò” òœò  ò¤ò¨ òäE»ó EÆóÄôôôXEÔôÐõ(õ8õ@õ@õDõHõ\õ| õ„ õˆ õ� õ” õ˜õÜõäõäõìõôõôõüõüö<öHöLö€ öˆ"ö�$ö˜&öœ'ö -ö¨0ö¼2F÷TF#÷ÀF-øF6øDøPF@ø FHùùˆùŒù”ù˜ù¨ù¬Fcú|úˆFvúØF~ûTûÄûÈûÐûÔûäûèF™ü¸üÄF¬ýF¶ýlF¾þ þ€þ„þŒþ�þ˜þœþ þ¨FÒÿŒÿ˜FÜÿàFè¤ $ (, 48 <DH x| €„ �” œG Œ˜GàG"¨$(, 04 <@ DLP €„ ˆŒ ˜œ ¤IÊÊ Ê I@ÊhÊœʬÊ´ Ê´ʸ ʼÊüË8Ë@Ë@ËxË€ˈ"ËÈ%ËÌ$ËÐ%ËÔ(ËØ*ËØ+Ì.Ì-Ì .Ì$1Ì(6ÌH9Ì`;Ì`<ÌÀ>ÌÀ?ÍBÍLDÍLEÍ�FÍ�JÍÌLÍÔOÍÔPÍØOÍÜPÍäxÎ yÎ\zÎt}ÎxÎ|}΀΄}ΈTÎÈWÎÌVÎÐWÎÔZÎØ]Ï`Ï_Ï `Ï$cÏ(hÏHoÏXrÏptÏtuÏtˆI£ÏÔÏàÐI­Ð\Ј&Ð�Д&ÐÈÐÌ&ÐØÐÜ.ÐÜÐà.ÐèÐì.ÐðÐô.Ñ4IâÑpѤ&ѬѰ&ÑäÑè&ÑôÑø:ÑøÑü:ÒÒ:Ò Ò:ÒTJÒ˜Ò¼&ÒÄÒÈ&ÒüÓ&Ó ÓFÓÓFÓÓ FÓ$Ó(FÓdJLÓ ÓÄ&ÓÌÓÐ&ÔÔ&ÔÔLÔÔLÔ$Ô(LÔ,Ô0LÔlJ|Ô¨ÔÌ&ÔÔÔØ&Õ Õ&ÕÕ RÕ Õ$RÕ,Õ0RÕ4Õ8RÕtJ¬Õ°ÕÔ&ÕÜÕà&ÖÖ&Ö$Ö(XÖ(Ö,XÖ4Ö8XÖ<Ö@XÖ|JÜÖ¸×JêØØ,&ØhØl&ØtØx@Ø„؈@،ؔ@ØÐKÙÙ(&ÙdÙh&ÙpÙt@ـل@ÙˆÙ�@ÙÌKJÙøÚ &Ú\Ú`&ÚhÚl@ÚxÚ|@Ú€Úˆ@ÚÄKzÚðÛ&ÛTÛX&Û`Ûd@ÛpÛt@ÛxÛ€@Û¼KªÛèÜ&ÜLÜP&ÜXÜ\@ÜhÜl@ÜpÜx@Ü´KÚÜàÝ&ÝDÝH&ÝPÝT@Ý`Ýd@ÝhÝp@ݬL ÝØÞ&Þ<Þ@&ÞHÞL@ÞXÞ\@Þ`Þh@Þ¤L:ÞÐÞø&ß4ß8&ß@ßD@ßPßT@ßXß`@ßœLjßÈßð&à,à0&à8à<@àHàL@àPàX@à”LšàÀàè&á$á(&á0á4@á@áD@áHáP@áŒLÊá¸áà&ââ &â(â,@â8â<@â@âH@â„Lúâ°âØ&ãã&ã ã$@ã0ã4@ã8ã@@ã|M*ã¨ãÐ&ä ä&ää@ä(ä,@ä0ä8@ätMZä äÈ&åå&åå@å å$@å(å0@ålMŠå˜åÀ&åüæ&ææ @ææ@æ æ(@ædMºæ�æ¸&æôæø&çç@çç@çç @ç\Mêçˆç°&çìçð&çøçü@èè @èè@èTN6è€N@èØNHé\NRé°NZê0NdêˆNlë Nvë`N~ëàNˆì4N�ì´NšíN¢íˆN¬íÜ%BS f r € readline �™®ÁÓàwild_oneoptindoptargopterrê ü    1 A S a r … — ¬ À Ö á ò þ   - 8 H S _ k  ‘ › ¬ » É Ú ä strmov strmake my_open my_read my_close ò my_init strend ü  strnmov my_end str2int  " 3 > casedn caseup my_write int2str I Y strxmov c my_fopen m | my_stat ˜ ¤ · strcont Ï errnoclose lseek open times á__mulh1__mull1€__divus2€__quous3€_iob_DBLINFexit atexit free malloc strlen isatty getenv atoi write abort memset fflush fclose __flsbuf vfprintf snprintf sprintf printf fprintf strchr fwrite __filbuf read isupper signal isspace memchr sleep fread fseek strtoul fstat strtok fputs system strstr memcmp pclose popen puts strdup ÷ sysconf strtol   __crt0vTOC 4k Xk__crt0v \k_$STATIC `k0 dk hkerrno lkp.3 pk: tkerrno ˆkopen œkread  klseek ¤kfstat ¨kclose ¬kwrite °ká ´kabort ¸kG ¼kmalloc Àkmemset ÄkX Èkg àky äkeh.39 èkˆ ìkL..25 ðkL..38 ôk_iob.P64 økLC..13 ükfprintf kL..194 k“ kL..199 kL..206 kL..211  kL..218 $kL..223 (k  ,kÀ 0katexit 4kisatty 8kL..647 <kÌ @kL..652 Hk__filbuf Lkfread Pkfwrite Tkfseek Xkfclose \kfflush `kÚ dkò lk_vt.3ios tk,L..509  kò ¤kisspace ÀkLC..37 ÄkL..70 Ìkstrtol Ðkstrtoul Ôkisupper ØkL..248 ÜkL..188 àk äkL..231 èkHIWORD ìkLOWORD kfree  kp05.39 $kFD_0_0 (kL..212 8k <ktens Lk Tk_DBLINF Xkbigtens \ktinytens dk hk* xk8 €kF �kT ˜k` œk÷  km ¤k‚ ´k— ¼k¬ ÄkÁ ÌkË ÐkLC..32 ÔkLC..34 ØkLC..36 Ük× àkå èkú ðk økL..439 k$ k2 k@ kLC..40 kLC..42 kLC..44 $kLC..46 (kN ,kN 0kblanks 4kzeroes 8kL..14 <kLC..48 @kstrlen DkL..1100 HkX Lk_iob.P32 hkL..1206 lkL..1217 pkL..1233 tkL..1244 xkL..1260 |kj €k L..80 ŒkG �k} ˜k�  k L..80 ÀkL..86 ÄkL..90 ÈkL..201 ÌkL..216 Ðkž ÔkL..225 ìkµ ðkL..237 økL..252 ükL..261 !kÍ !kL..273 ! kL..288 !kâ !kLC..79 !$kñ !4kLC..82 !8kÿ !<k !DkL..40 !Tk !Xk+ !\kLC..86 !`kL..63 !dk< !hkM !lk LC..92 !xk L..86 !„kd !ˆkLC..99 !ŒkL..99 !�kL..110 !”ky !˜kLC..106 !œkL..125 ! kL..134 !¤k‘ !¨k¨ !¬k· !´kÑ !¼kè !ÀkL..354 !Äk� !Èk\L..369 "$kÿ "(kL..379 ",kL..394 "0k "4kL..404 "8kL..419 "<k0 "@kL..429 "DkL..444 "HkG "LkL..454 "PkL..469 "Tk^ "XkL..479 "\kL..494 "`ku "dk__tiv "hkL..506 "lkLC..131 "pkL..521 "tk� "xkD__tix "¼kL..532 "ÀkLC..141 "ÄkL..547 "Èk__til "ÌkL..558 "ÐkLC..151 "ÔkL..573 "Øk__tii "ÜkL..584 "àkLC..161 "äkL..599 "èk__tis "ìkL..610 "ðkLC..171 "ôkL..625 "øk__tib "ükL..636 #kLC..181 #kL..651 #k__tic # kL..662 #kLC..191 #kL..677 #k__tiw #kL..688 # kLC..201 #$kL..703 #(k__tir #,kL..714 #0kLC..211 #4kL..729 #8k__tid #<kL..740 #@kLC..221 #DkL..755 #Hk__tif #LkL..766 #PkLC..231 #TkL..781 #Xk__tiUi #\kL..792 #`kLC..241 #dkL..807 #hk__tiUl #lkL..818 #pkLC..251 #tkL..833 #xk__tiUx #|kL..844 #€kLC..261 #„kL..859 #ˆk__tiUs #ŒkL..870 #�kLC..271 #”kL..885 #˜k__tiUc #œkL..896 # kLC..281 #¤kL..911 #¨k__tiSc #¬kL..922 #°kLC..291 #´kL..937 #¸k§ #¼kLC..298 #Àkâ #ÄkÁ #àkLC..302 #äkØ #èkLC..306 #ìkò #ðkLC..310 #ôk #økLC..314 #ük $kLC..318 $k 7 $kLC..322 $ k O $kL..123 $kL..128 $k d $k $ kL..164 $<k w $@kL..178 $HkL..183 $LkL..204 $Pk ‹ $TkL..228 $Xk $\kL..242 $`kL..247 $dk ˜ $hkL..287 $lk< $pkL..301 $tkL..306 $xkÿ $|kLC..67 $„k ¨ $ŒkLC..72 $�kL..13 $”kL..86 $˜kL..90 $œk ¼ $ k Þ $¤k $¨k LC..91 $´k LC..92 $Àk L..200 $Ìk $Ðk LC..96 $Ük LC..97 $èk L..256 $ôkmemchr $økL..80 $ükL..80 %k  %k  %k % k ( %kLC..22 %kÿ %kL..34 %kLC..9 % kL..49 %$kL..64 %(k 7 %,kL..131 %0k %4kL..136 %<k E %@kL..158 %HkL..162 %LkL..91 %PkL..85 %TkL..89 %Xk T %\kLC..126 %`kLC..127 %dkL..378 %hkL..389 %lkL..414 %pkL..425 %tkL..450 %xk b %|kLC..147 %€kLC..148 %„k  %ˆkLC..168 %ŒkLC..169 %�k_vt.3ios %”k œ %¤kX %¬k ´ %´kLC..55 %¸k  %¼k Ï %ÀkLC..72 %ÄkLC..73 %ÈkL..493 %ÌkL..504 %ÐkL..520 %ÔkL..525 %ØkL..537 %ÜkL..550 %àk â %äkLC..90 %èkLC..91 %ìkL..573 %ðkL..584 %ôkL..600 %økL..605 %ükL..617 &kL..630 &k õ &k__ti3ios &kLC..7 &k  &k  & kcin &$k # &(kcout &,k 1 &0k @ &4k O &8k Z &<k f &@kclog &Dkcerr &Hk r &LkLC..11 &Tk � &\k LC..18 &hk_vt.3ios &lkLC..21 &tkLC..24 &xk � &|k � &€k ¯ &„k� &ˆkmy_init &�kLC..59 &”koutfile &˜kstrmov &¬kLC..62 &°kpager &Àk  ¾ &àk É &økstatus ' k8LC..68 'Dk × 'Lk» 'Tkmy_end 'Xkexit '\kä '`k® 'dk_iob 'lkü 'pkmy_read 'tkò 'xkÉ '|k ë '€kY '”k™ '˜k à '¤kwild_one '¬kcaseup '´kcasedn '¸kÏ '¼kLC..2 'Àksnprintf 'ÄkLC..0 'Èksprintf 'Ìkht 'Ðkmemcmp 'àk ÷ 'äk  'èk  'øk  (k + ( kquick (0k 8 (Lksignal (PkLC..81 (Tkmysql (Xk$8 (|kÀ (€kLC..84 („kopt_html (ˆkLC..87 (˜kgetenv (œkÚ ( khistfile (¤kLC..90 (¬kLC..92 (°kverbose (´k_iob.P32 (Èk<LC..95 )k€ )kLC..98 ) k F )k, R )<k )XkLC..110 )\kr )`kLC..115 )dkLC..117 )hk \ )lk g )|k  { )ˆkVER )˜kLC..175 )œkLC..178 ) kLC..179 )¤kLC..180 )¨kprintf )¬kLC..185 )°kputs )´kLC..187 )¸kLC..189 )¼kLC..191 )ÀkLC..193 )ÄkLC..195 )ÈkLC..197 )ÌkLC..199 )ÐkLC..38 )ØkLC..202 )èkLC..204 )ìkLC..206 )ðkLC..208 )ôkLC..210 )økLC..212 )ükm *kLC..216 *k … *kLC..219 *k· *kL..173 *koptarg *k • * kÓ *$k ¥ *(k ± *Dk ¿ *Lk atoi *Xk Ì *\k Ù *dk¤ *tk æ *xk ô *€k  *ˆk vertical *”k  * k  *¨k *°k * *Äk  8 *Ðk E *Øk R *àk d *èk v *økopterr +k_iob.P64 +k LC..263 +kLC..223 +k … +k˜ +k| + koptind +$kLC..270 +(k +,kOUTFILE +0k$f +TkLC..279 +XkLC..281 +\kLC..283 +`kLC..285 +dkfputs +hkreadline +lkLC..287 +pk™ +xk$strchr +œkLC..296 + kstrstr +¤kLC..298 +¨kstrcont +°kcommands +´k > +Àk ’ +ÄkLC..306 +Ìk � +Ðkb.139 +Ôke.140 +Økstrdup +Üki.141 +àk © +äkA +èk ´ +ìkLC..47 +ðkò +ôkr +økS +ük ,kLC..50 ,k¬ ,kLC..334 , k  ,k1 ,k Ò ,k… ,k› , kLC..339 ,$kê ,(kLC..341 ,,kLC..351 ,0kLC..354 ,4kLC..357 ,8kLC..362 ,<kLC..364 ,@kLC..370 ,DkLC..345 ,HkLC..349 ,PkLC..378 ,Xk3 ,\kLC..380 ,`k_ ,dká ,hka ,lk ,pkLC..385 ,tkLC..390 ,xkLC..392 ,|kLC..394 ,€kk ,„kLC..396 ,ˆkLC..398 ,ŒkH ,�k‘ ,”kPAGER ,˜k(LC..429 ,Àk ,ÄkLC..437 ,ÈkLC..441 ,ÌkLC..443 ,ÐkLC..445 ,ÔkLC..447 ,äkLC..449 ,ôkLC..451 ,økLC..453 ,ükLC..458 -kLC..457 -kLC..462 -kLC..464 - kü -kLC..466 -kLC..468 -kLC..470 -kLC..473 - kLC..475 -$kLC..482 -(kLC..484 -,kLC..486 -0kLC..488 -4kLC..492 -8kLC..499 -<kstrmake -@kLC..502 -Dkmy_fopen -HkLC..408 -Lk popen -XkLC..412 -\k LC..511 -hkLC..522 -lkLC..529 -pkLC..538 -tk" -xkmy_write -|kmy_close -€kLC..541 -„kLC..543 -ˆkLC..545 -ŒkLC..547 -�kstrxmov -”ksystem -˜kmy_stat -œkmy_open - k -¤kstrnmov -¨kstrtok -¬kLC..559 -°kLC..567 -¸kLC..570 -¼kLC..569 -ÀkLC..574 -ÄkI -ÈkLC..576 -Ìkc -ÐkLC..580 -ÔkLC..592 -Økþ -ÜkLC..603 -àk- -äk Ý -èkS -ìk ñ -ðk þ -økLC..611 .k .kLC..551 .kLC..642 .kLC..634 .kLC..636 .kLC..638 .kLC..640 . kLC..645 .$kLC..647 .(kLC..650 .,kLC..655 .0k— .4kLC..657 .8k¬ .<kLC..659 .@kLC..661 .DkLC..664 .HkLC..666 .LkLC..668 .PkLC..670 .TkLC..672 .XkÖ .\kLC..674 .`kstr2int .dk .hkLC..677 .€kLC..679 .„kLC..554 .ˆkLC..691 .�kLC..694 .”kLC..697 .˜kLC..699 .œkLC..701 . k .¤k__flsbuf .¨kLC..708 .¬kLC..710 .°kvfprintf .´k .¸k .Àk_$STATIC .ÄkT .Èk% .Ìkint2str .ÐkLC..727 .ÔkLC..729 .Øk3 .ÜkLC..732 .äkLC..734 .èkA .ìkLC..736 .ôkLC..738 .økLC..740 .ükB /k /kO /k% / kk /k€ /kS /kpclose /kLC..516 / kLC..535 /$kLC..627 /(ksleep /,ktimes /0ksysconf /4km /8kstrend /@kLC..744 /Dk Ùÿþùgœìÿþ g.__startPkÅ.__startPÚ__start  0 Pk p_xargc 4p_xargv 8p_xrcfg Pp_xrc T 3Ô.fileÿþg§æk/ ð_$STATIC èke0   ? <U @g D} H� L© ÿþg.text\k.data hk( � h¹ xÇ ˆmysql.ccÂÿþ g.text@k^ð.main@Ø@kç 4kò ìk,kLk*dkCDk`!ôk}'`k”(pk©.økÍ4\kö6<k%7Ôk=8èk_:ˆku<àk�>´k¤@˜k¾B¼k×EtkíH„k JÔk"N¼kDQ^QÌkpSôk›T°±TèkËU<kèUÀkUükV˜kVôk-W¼k:X kPXŒkhYk‚Y˜k™YØk²Z4kÊ[ká\ôkú]ˆ^ '^Ä;_˜kL_äkd`ôtaD‹a˜›aä«rk ®.data Øk¼VER Ø| … Ü|_locp „|pager ˆ|outfile ˆ|PAGER ˆ|OUTFILE Œ|« ˜k 8 øk  € (k  ~ ,k  • tk  ` Ôk  v ˜k  Ž Pk  ¥ Dk  ¿ ¼k  Ø àk   Èk  k k  k ¤ O k  é 8k  ; \k  Q Œk  i €k  ƒ hk  š °k  ³ ¤k  Œ k  Œ ¸ œ ük  œ ü¼ ¸ /pkd ÆÕÿþ g.text LkQÒ LkÃó"Ã"´Ã7#dÃ_#äÃ|$ˆkç%tkÃÛ&�kÃJÿþ g.text(@k)(@Ö,)ÈÖB+hÖc-¨Ö‚/ÔÖ™1 Ö½3xkÖÚ6„kÖò9@Öý9|Ö 9ðÖ:pÖ(:°Ö7:ðÖK;@Ö\;ŒÖo;ÜÖ{Ö>`Ö.?Ö@?¤ÖS@8Ök@€ÖzA ÖŒAtÖŸB Ö´BTÖÌCÖÞCÌÖïD ÖDtÖEhÖ+F�Ö:GLÖJHÖ[HÜÖjIÜÖ‚J¤Ö–K|Ö¨MÖ»M”ÖÎMÄÖãMøÖÿNÜÖOÐÖ5PhÖVPàÖr’¸k  ’ k  ’ F ƒcÿþ g.textR@k z–R@KÂT4KëV|KûVèK!W˜KKX°KrYìK—ZøK»\K ÷ ìk  ÷ ì_ .filewÿþgÕgÔk@.truncgÔ g.nearesthT g.floorhØ g.fabsi\ g.ceili� g’Èk_$STATIC  ke+|ÿþg.textÜlkeHÜlx]³ÿþg.texthØk3þxhØk}.Binitik}.Balloci\k}.Bfreeiük}.BcopyjPk}‰j¨k}.multaddk@k}.s2blk}.hi0bitsmLk}.lo0bitsmÐk}.i2bn¨k}.multok}“qTk}.lshiftqÜk}.cmpsk}.diffs”k}.ulpu<k}.b2dvDk}.d2bw€k}.ratioy(k}�z$}.quorem‰Àk}©‹ì}³l°k³ Pk à /dk Ô ÿþg.text’,kì’,´ù’´´“k´“d´5“Ì´P”0´h• ´~•¤´Š–k´›˜´.__uflow™ ´¨š,´²šà´Â›ˆ´Ù›¼´ìœP´�œ´ �ü´Ÿ(´3 H´H ¼´`¡H´j¡°´|¡à´�¢¨´¥¢Ü´´£�´Á¤<´Ô¤ ´ã¥t´ÿ¦k´¦¼´§´/§°´B¨´Y¨T´k¨Ì´y©�´�©ü´¤«Œ´¶«¼´È«ì´Ú¬´À |k  À |  í 5ÿþg.textºükÕ ºü  »€  (¼Ä  9½|  I¿  Z¿ä  kÀl  yÁø  �Ãd   Å(  ¯Æ0  ÁÉè  ÐÊ4  ßÊ€  îÊÌ  þË !Ëä ! >ÿþg.textWÀk�!:WÀ 6.__scclgdk 6!G (k"!W Eÿþg.textªk.!oª ?!yoèk !† Lÿþg.text ØkF!¡ Ø F!®$ F!À Qÿþg.textÛŒkÝ!ÛÛŒ M!è Vÿþg.textT<k¥"T< R" [ÿþg.text«4k"*«4 W"8 `ÿþg.texthPk`"RhP \"^ eÿþg.textS¤kn"vS¤ a"€ jÿþg.textžkv"˜ž f"¢ kÿþ g"¼™ôÿþl"¼™ôÿþm"¼šðÿþl"¼šðÿþm"¼›ÿþl"¼›ÿþm"¼›ÿþl"¼›ÿþm.text¬Lk­ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ ÿþŒÿþŒ/ÿþŒCÿþŒXÿþŒkÿþŒ£ÿþŒ ÿþŒ &ÿþŒ 9ÿþŒ XÿþŒ xÿþŒ ‘ÿþŒ ªÿþŒ ÈÿþŒ æÿþŒ ÿþŒ ÿþŒ >ÿþŒ SÿþŒ nÿþŒ ƒÿþŒ ™ÿþŒ ®ÿþŒ ÄÿþŒ ãÿþŒËÿþŒ {ÿþŒ ŒÿþŒ žÿþŒ °ÿþŒ ÃÿþŒ ÕÿþŒ èÿþŒ ûÿþŒ!ÿþŒ!#ÿþŒ!8ÿþŒ!KÿþŒ!`ÿþŒ!wÿþŒ!�ÿþŒ!§ÿþŒ!ÀÿþŒ!ØÿþŒ!ñÿþŒ" ÿþŒ"$ÿþŒ"9ÿþŒ"PÿþŒ"eÿþŒ"{ÿþŒ"“ÿþŒ"¬ÿþŒ"ÄÿþŒ"ÞÿþŒ"òÿþŒ#ÿþŒ#ÿþŒ#(ÿþŒ#:ÿþŒ#LÿþŒ#^ÿþŒ#qÿþŒ#‚ÿþŒ#•ÿþŒ#§ÿþŒ#¹ÿþŒ#ÌÿþŒ#àÿþŒ#õÿþŒ$ÿþŒ$ÿþŒ$+ÿþŒ$>ÿþŒ$NÿþŒ$_ÿþŒ$rÿþŒ$…ÿþŒ$–ÿþŒ$©ÿþŒ$»ÿþŒ$ÍÿþŒ$àÿþŒ$óÿþŒ%ÿþŒ%ÿþŒ%+ÿþŒ%<ÿþŒ%LÿþŒ%^ÿþŒ%nÿþŒ%€ÿþŒ%’ÿþŒ%¤ÿþŒ%µÿþŒ%ÆÿþŒ%×ÿþŒ%çÿþŒ%÷ÿþŒ&ÿþŒ&'ÿþŒ&;ÿþŒ&NÿþŒ&bÿþŒ&xÿþŒ&ŽÿþŒ&ŸÿþŒ'6ÿþŒ'IÿþŒ'ÐÿþŒ({ÿþŒ(“ÿþŒ(¿ÿþŒ(ÝÿþŒ(üÿþŒ)ÿþŒ)(ÿþŒ*÷ÿþŒ,˜ÿþŒ-ôÿþŒ0ÿþŒ0îÿþŒ"׬L H™L " s1ÿþŽ.bf¬Le#1ÿþ„.ef¬`e$"笔  ™^ + s13HÿþŽ.bf¬”e(1Ehÿþ‚.ef®e)"ó®  ™| 5 s1QTÿþŽ.bf® e:1Ehÿþ‚fd:p-1lÿþ‚.ef°8e<#°À =™  A s1dtÿþŽ.bf°Àe@1Ehÿþ‚fd:p-1lÿþ‚p:p37pÿþ‚len:p-1tÿþ‚.ef²teC#³ Á™Ê ` s1z´ÿþŽ.bf³eG1�ÿþ„1™ÿþ„.bb³d;.bb³0d9.bb³0d7.bb³0d51©ÿþƒ.bb³0d3.eb³0d.eb³0d.eb³xdñ.eb³xdñ.eb³xdñ.ef³ˆe7#³Ä ýš Ž s1ÇxÿþŽ.bf³ÄeQ1�ÿþ„1âÿþ„mode:R-1ÿþ„prot:R-1ÿþ„1öÿþƒ2ÿþƒfd:r-1ÿþƒ.bbµ$d)T2ÿþƒf:r-1ÿþƒ.bbµ$d)R.ebµ$d).ebµ$d).bbµ$d)i.bbµHd+g.bbµHd,e.bbµHdjc2ÿþƒ.bbµHdja.ebµHdj.ebµHdj.ebµld.ebµld.ebµld.efµ|ej#2µÄ M›> ™ s2$ xÿþŽ.bfµÄe…1�ÿþ„2?ÿþ„2Oÿþ„.efµØe‰#G¶ K›P £ s2[ ÈÿþŽ.bf¶eŽ1�ÿþ„fd:R-1ÿþ„.ef¶(e�#Z¶` Q›b ® s2t ÿþŽ.bf¶`e“1�ÿþ„p:R37ÿþ„len:R-1ÿþ„.ef¶te”#o¶´ N›t · s2� hÿþŽ.bf¶´e—1�ÿþ„.ef¶Èe—#…· M›€ Á s2ª ¸ÿþŽ.bf·eš1�ÿþ„c:R-1ÿþ„.ef·e›#š·T M›’ Ê s2Ä ÿþŽ.bf·TeŸ1�ÿþ„.ef·he #¯·¤ H›¤ Ó s2Þ XÿþŽ.bf·¤e¤1�ÿþ„.ef·¸e¥#¿·ì \›¶ ß s2ó  ÿþŽ.bf·ìe©1�ÿþ„3ÿþ„dir:R82ÿþ„mode:R-1ÿþ„.ef¸eª#ã¸H q›È è s3) üÿþŽ.bf¸He®1�ÿþ„.ef¸xe¯#ô¸¼ O›Ú ó s3@ pÿþŽ.bf¸¼e³1�ÿþ„buf:R37ÿþ„size:R76ÿþ„.ef¸Ðe´$ ¹  \›ì þ s3\ ÀÿþŽ.bf¹ e¸1�ÿþ„3ÿþ„dir:R82ÿþ„.ef¹ e¹$/¹h Q›þ s3… ÿþŽ.bf¹he½1�ÿþ„buf:R400ÿþ„n:R76ÿþ„.ef¹|e¾$H¹¼ Nœ  s3£ pÿþŽ.bf¹¼eÂ1�ÿþ„st:R8ÿþ„.ef¹ÐeÃ$^º  Mœ"  s3¾ ÀÿþŽ.bfº eÇ1�ÿþ„.efº eÈ$sº\ Nœ4 ' s3ØÿþŽ.bfº\eÌ1�ÿþ„s:R400ÿþ„n:R76ÿþ„.efºpeÍ$‰º¬ MœF 2 s3ó`ÿþŽ.bfº¬eÑ1�ÿþ„s:R37ÿþ„n:R76ÿþ„.efºÀeÓ4 ÿþ€# @k  # @ 3 #[ èk  #[ è 7 #p k  #p  ; #† ˆk  #† ˆ ? #› ”k  #› ” C #° ôk  #° ô G #À Ðk  #À Ð K #õ  k  #õ   O $ $k  $ $ S $0 k  $0  W $I <k  $I < [ $_ 0k  $_ 0 _ $t ¸k  $t ¸ c $Š Äk  $Š Ä g $ž ÿþ g"¼œpÿþl"¼œ¾ÿþm"¼œèÿþl"¼�6ÿþm.textDkiÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ ÿþŒÿþŒ/ÿþŒCÿþŒXÿþŒkÿþŒ£ÿþŒ ÿþŒ &ÿþŒ4&ÿþŒ4JÿþŒ4sÿþŒ4œÿþŒ4¼ÿþŒ4ßÿþŒ4ùÿþŒ5ÿþŒ55ÿþŒ5VÿþŒ5xÿþŒ5�ÿþŒ5±ÿþŒ5ÆÿþŒ5áÿþŒ5öÿþŒ6 ÿþŒ6!ÿþŒ67ÿþŒ6VÿþŒKEÿþŒ$¹D µœX Þ pKõÿþŽ.bfDe#LCÿþ„rhs:R91ÿþ„.bbHd~.bbPd|.bbPdåqLT ÿþƒ.bbPdåoLdÿþƒ.ebPdå.ebPdå.bbPdåzLtÿþƒ.bbPdåx.ebxdÖ.ebxdÖ.eb°d».eb°d».ef°eÝ$âü ±œÐ  pL€¸ÿþŽ.bfüe-LÎÿþ„rhs:R96ÿþ„.bbd£.bbd¡.bbdå–Lß ÿþƒ.bbdå”Ltÿþƒ.ebdå.ebdå.bbdåŸLtÿþƒ.bbdå�.ebddÝ.ebddÝ.ebdd±.ebdd±.efdeÝ% &ãÿþ g"¼�Tÿþl"¼�lÿþm"¼�xÿþl"¼�´ÿþm"¼�Àÿþl"¼žÿþm"¼žÿþl"¼žÿþm"¼ž&ÿþl"¼ž8ÿþm"¼žVÿþl"¼žVÿþm"¼žzÿþl"¼žzÿþm%&ž€ÿþl%&ž€ÿþm"¼ž†ÿþl"¼ž†ÿþm%&žŒÿþl%&žŒÿþm"¼ž’ÿþl"¼ž’ÿþm%&ž˜ÿþl%&ž¤ÿþm"¼žªÿþl"¼ž°ÿþm%&ž¶ÿþl%&žÂÿþm"¼žÔÿþl"¼žÔÿþm"¼žòÿþl"¼žòÿþm"¼žþÿþl"¼žþÿþm"¼Ÿ"ÿþl"¼Ÿ"ÿþm"¼ŸFÿþl"¼ŸLÿþm"¼Ÿdÿþl"¼Ÿdÿþm"¼Ÿvÿþl"¼Ÿˆÿþm"¼Ÿ¬ÿþl"¼Ÿ¬ÿþm"¼Ÿ¾ÿþl"¼Ÿ¾ÿþm%&ŸÄÿþl%&ŸÄÿþm"¼ŸÊÿþl"¼ŸÊÿþm%&ŸÐÿþl%&ŸÐÿþm"¼ŸÖÿþl"¼ŸÖÿþm%&ŸÜÿþl%&Ÿèÿþm"¼Ÿîÿþl"¼Ÿôÿþm%&Ÿúÿþl%& ÿþm"¼ `ÿþl"¼ `ÿþm"¼ lÿþl"¼ lÿþm%& xÿþl%& xÿþm"¼ –ÿþl"¼ –ÿþm"¼ ¢ÿþl"¼ ¢ÿþm%& ¨ÿþl%& ¨ÿþm"¼ ®ÿþl"¼ ®ÿþm%& ´ÿþl%& ´ÿþm"¼ ºÿþl"¼ ºÿþm%& Àÿþl%& Ìÿþm"¼ Òÿþl"¼ Øÿþm%& Þÿþl%& êÿþm"¼ üÿþl"¼ üÿþm"¼¡ÿþl"¼¡ÿþm"¼¡>ÿþl"¼¡>ÿþm"¼¡\ÿþl"¼¡\ÿþm"¼¡hÿþl"¼¡hÿþm"¼¡€ÿþl"¼¡€ÿþm"¼¡Œÿþl"¼¡Œÿþm"¼¡žÿþl"¼¡°ÿþm"¼¡àÿþl"¼¡òÿþm"¼¢"ÿþl"¼¢4ÿþm"¼¢Rÿþl"¼¢Rÿþm%&¢Xÿþl%&¢Xÿþm"¼¢^ÿþl"¼¢^ÿþm%&¢dÿþl%&¢dÿþm"¼¢jÿþl"¼¢jÿþm%&¢pÿþl%&¢‚ÿþm"¼¢ˆÿþl"¼¢ˆÿþm%&¢Žÿþl%&¢šÿþm"¼¢¬ÿþl"¼¢¬ÿþm"¼¢¾ÿþl"¼¢¾ÿþm%&¢Ðÿþl%&¢Ðÿþm"¼¢îÿþl"¼¢îÿþm"¼£ÿþl"¼£ÿþm%&£ÿþl%&£ÿþm"¼£ÿþl"¼£ÿþm%&£$ÿþl%&£$ÿþm"¼£*ÿþl"¼£*ÿþm%&£0ÿþl%&£Bÿþm"¼£Hÿþl"¼£Hÿþm%&£Nÿþl%&£Zÿþm"¼£¢ÿþl"¼£¢ÿþm"¼£®ÿþl"¼£®ÿþm"¼£Æÿþl"¼£Øÿþm%&£äÿþl%&£äÿþm"¼¤ÿþl"¼¤ÿþm"¼¤ ÿþl"¼¤ ÿþm%&¤&ÿþl%&¤&ÿþm"¼¤,ÿþl"¼¤,ÿþm%&¤2ÿþl%&¤2ÿþm"¼¤8ÿþl"¼¤8ÿþm%&¤>ÿþl%&¤Pÿþm"¼¤Vÿþl"¼¤Vÿþm%&¤\ÿþl%&¤hÿþm"¼¤zÿþl"¼¤zÿþm"¼¤Œÿþl"¼¤Œÿþm"¼¤àÿþl"¼¤àÿþm"¼¤òÿþl"¼¤òÿþm"¼¥ÿþl"¼¥ÿþm"¼¥"ÿþl"¼¥"ÿþm"¼¥Fÿþl"¼¥Fÿþm"¼¥^ÿþl"¼¥^ÿþm"¼¥èÿþl"¼¥èÿþm"¼¥ôÿþl"¼¥ôÿþm"¼¦ÿþl"¼¦ÿþm"¼¦ÿþl"¼¦ÿþm"¼¦*ÿþl"¼¦*ÿþm"¼¦6ÿþl"¼¦6ÿþm%&¦<ÿþl%&¦<ÿþm"¼¦Àÿþl"¼¦Àÿþm%&¦Æÿþl%&¦Æÿþm"¼¦Ìÿþl"¼¦Ìÿþm%&¦Òÿþl%&¦Òÿþm"¼¦Øÿþl"¼¦Øÿþm%&¦Þÿþl%&¦ðÿþm"¼¦öÿþl"¼¦öÿþm%&¦üÿþl%&§ÿþm%&§&ÿþl%&§&ÿþm"¼§Dÿþl"¼§Dÿþm%&§Jÿþl%&§Jÿþm"¼§Pÿþl"¼§Pÿþm%&§Vÿþl%&§Vÿþm"¼§\ÿþl"¼§\ÿþm%&§bÿþl%&§tÿþm"¼§zÿþl"¼§zÿþm%&§€ÿþl%&§Œÿþm%&§¤ÿþl%&§¤ÿþm"¼§Âÿþl"¼§Âÿþm%&§Èÿþl%&§Èÿþm"¼§Îÿþl"¼§Îÿþm%&§Ôÿþl%&§Ôÿþm"¼§Úÿþl"¼§Úÿþm%&§àÿþl%&§òÿþm"¼§øÿþl"¼§øÿþm%&§þÿþl%&¨ ÿþm%&¨"ÿþl%&¨"ÿþm"¼¨@ÿþl"¼¨@ÿþm%&¨Fÿþl%&¨Fÿþm"¼¨Lÿþl"¼¨Lÿþm%&¨Rÿþl%&¨Rÿþm"¼¨Xÿþl"¼¨Xÿþm%&¨^ÿþl%&¨pÿþm"¼¨vÿþl"¼¨vÿþm%&¨|ÿþl%&¨|ÿþm"¼¨‚ÿþl"¼¨‚ÿþm%&¨Žÿþl%&¨”ÿþm"¼¨ ÿþl"¼¨ ÿþm"¼¨²ÿþl"¼¨²ÿþm"¼¨¾ÿþl"¼¨¾ÿþm"¼¨Êÿþl"¼¨Êÿþm%&¨Öÿþl%&¨Öÿþm"¼¨ôÿþl"¼¨ôÿþm%&¨úÿþl%&©ÿþm"¼©ÿþl"¼©ÿþm"¼©ÿþl"¼©0ÿþm%&©<ÿþl%&©Bÿþm"¼©Hÿþl"¼©Hÿþm%&©Nÿþl%&©Tÿþm"¼©xÿþl"¼©xÿþm"¼©–ÿþl"¼©–ÿþm"¼©Òÿþl"¼©Òÿþm"¼©Þÿþl"¼©Þÿþm"¼©öÿþl"¼©öÿþm"¼ªÿþl"¼ªÿþm"¼ªDÿþl"¼ªDÿþm"¼ª°ÿþl"¼ª°ÿþm"¼ªÎÿþl"¼ªÎÿþm"¼ªÚÿþl"¼ªÚÿþm"¼ªæÿþl"¼ªæÿþm"¼ªòÿþl"¼ªòÿþm"¼ªþÿþl"¼ªþÿþm"¼«ÿþl"¼«ÿþm"¼«.ÿþl"¼«.ÿþm"¼«vÿþl"¼«vÿþm"¼«‚ÿþl"¼«‚ÿþm%&«¾ÿþl%&«Äÿþm"¼«Êÿþl"¼«Êÿþm%&«Ðÿþl%&«Öÿþm"¼«âÿþl"¼«èÿþm%&«îÿþl%&«ôÿþm"¼¬ÿþl"¼¬ÿþm%&¬ÿþl%&¬ÿþm"¼¬Bÿþl"¼¬Bÿþm"¼¬lÿþl"¼¬lÿþm%&¬rÿþl%&¬xÿþm"¼¬œÿþl"¼¬œÿþm%&¬¢ÿþl%&¬¨ÿþm"¼¬Ìÿþl"¼¬Ìÿþm"¼¬öÿþl"¼¬öÿþm%&¬üÿþl%&­ÿþm"¼­&ÿþl"¼­&ÿþm%&­,ÿþl%&­2ÿþm"¼­Vÿþl"¼­Vÿþm"¼­€ÿþl"¼­€ÿþm%&­†ÿþl%&­Œÿþm"¼­°ÿþl"¼­°ÿþm%&­¶ÿþl%&­¼ÿþm"¼­Îÿþl"¼­Îÿþm"¼­æÿþl"¼­æÿþm"¼­øÿþl"¼­øÿþm"¼® ÿþl"¼® ÿþm"¼®ÿþl"¼®ÿþm"¼®"ÿþl"¼®"ÿþm"¼®:ÿþl"¼®@ÿþm"¼®Lÿþl"¼®dÿþm"¼®vÿþl"¼®ˆÿþm%&®”ÿþl%&®šÿþm"¼® ÿþl"¼® ÿþm%&®¦ÿþl%&®¬ÿþm"¼®Êÿþl"¼®Êÿþm%&®Ðÿþl%&®Öÿþm"¼®úÿþl"¼®úÿþm"¼¯ÿþl"¼¯ÿþm"¼¯ÿþl"¼¯ÿþm"¼¯ÿþl"¼¯ÿþm"¼¯6ÿþl"¼¯6ÿþm"¼¯Tÿþl"¼¯Tÿþm"¼¯lÿþl"¼¯lÿþm"¼¯~ÿþl"¼¯~ÿþm"¼¯–ÿþl"¼¯¨ÿþm%&¯´ÿþl%&¯ºÿþm"¼¯Àÿþl"¼¯Àÿþm%&¯Æÿþl%&¯Ìÿþm"¼¯êÿþl"¼¯êÿþm%&¯ðÿþl%&¯öÿþm"¼°&ÿþl"¼°&ÿþm%&°2ÿþl%&°8ÿþm"¼°>ÿþl"¼°>ÿþm%&°Dÿþl%&°Jÿþm"¼°hÿþl"¼°€ÿþm"¼°Œÿþl"¼°Èÿþm"¼°Ôÿþl"¼±.ÿþm"¼±Fÿþl"¼±Fÿþm"¼±Rÿþl"¼±Rÿþm"¼±dÿþl"¼±vÿþm"¼±¦ÿþl"¼±¸ÿþm"¼±èÿþl"¼±úÿþm"¼²$ÿþl"¼²6ÿþm"¼²fÿþl"¼²fÿþm%&²lÿþl%&²lÿþm"¼²rÿþl"¼²rÿþm%&²xÿþl%&²xÿþm"¼²~ÿþl"¼²~ÿþm%&²„ÿþl%&²�ÿþm"¼²–ÿþl"¼²œÿþm%&²¢ÿþl%&²®ÿþm"¼²Ìÿþl"¼²Ìÿþm%&²Þÿþl%&²Þÿþm"¼³ÿþl"¼³ÿþm"¼³ ÿþl"¼³ ÿþm%&³8ÿþl%&³8ÿþm"¼³>ÿþl"¼³>ÿþm%&³Vÿþl%&³Vÿþm"¼³\ÿþl"¼³\ÿþm"¼³¼ÿþl"¼³¼ÿþm"¼³Èÿþl"¼³Èÿþm%&³Îÿþl%&³Ôÿþm"¼³ìÿþl"¼³þÿþm%&´ ÿþl%&´ÿþm"¼´ÿþl"¼´ÿþm%&´ÿþl%&´"ÿþm"¼´@ÿþl"¼´@ÿþm"¼´Xÿþl"¼´Xÿþm"¼´|ÿþl"¼´”ÿþm"¼´ ÿþl"¼´ ÿþm"¼´¬ÿþl"¼´Üÿþm%&´èÿþl%&´èÿþm%&´ôÿþl%&´ôÿþm%&µÿþl%&µÿþm%&µ ÿþl%&µ ÿþm%&µÿþl%&µÿþm%&µ$ÿþl%&µ$ÿþm%&µ0ÿþl%&µ0ÿþm%&µ<ÿþl%&µ<ÿþm%&µHÿþl%&µHÿþm"¼µTÿþl"¼µºÿþm"¼µÞÿþl"¼µÞÿþm"¼µöÿþl"¼µöÿþm%&¶Jÿþl%&¶Pÿþm%&¶Vÿþl%&¶Vÿþm%&¶bÿþl%&¶bÿþm"¼¶nÿþl"¼¶†ÿþm%&¶’ÿþl%&¶˜ÿþm%&¶žÿþl%&¶žÿþm%&¶ªÿþl%&¶ªÿþm"¼¶¶ÿþl"¼¶Îÿþm%&¶Úÿþl%&¶àÿþm%&¶æÿþl%&¶æÿþm%&¶òÿþl%&¶òÿþm"¼¶þÿþl"¼·ÿþm%&·"ÿþl%&·(ÿþm"¼·.ÿþl"¼·Fÿþm%&·Lÿþl%&·dÿþm"¼·jÿþl"¼·‚ÿþm%&·ˆÿþl%&·ˆÿþm"¼·Žÿþl"¼·Êÿþm%&·Ðÿþl%&·âÿþm"¼·èÿþl"¼·èÿþm%&·îÿþl%&¸ÿþm"¼¸ÿþl"¼¸ÿþm%&¸ ÿþl%&¸ÿþm"¼¸$ÿþl"¼¸$ÿþm%&¸*ÿþl%&¸6ÿþm%&¸<ÿþl%&¸<ÿþm"¼¸Bÿþl"¼¸Bÿþm%&¸Hÿþl%&¸Tÿþm%&¸Zÿþl%&¸Zÿþm"¼¸`ÿþl"¼¸`ÿþm%&¸fÿþl%&¹&ÿþm"¼¹,ÿþl"¼¹Dÿþm%&¹Jÿþl%&¹bÿþm"¼¹hÿþl"¼¹€ÿþm%&¹†ÿþl%&¹†ÿþm"¼¹Œÿþl"¼¹Èÿþm%&¹Îÿþl%&ºFÿþm"¼ºLÿþl"¼ºLÿþm%&ºRÿþl%&ºRÿþm"¼ºXÿþl"¼ºXÿþm%&º^ÿþl%&º^ÿþm"¼ºdÿþl"¼ºdÿþm%&ºjÿþl%&ºvÿþm"¼º|ÿþl"¼º‚ÿþm%&ºˆÿþl%&ºŽÿþm"¼º”ÿþl"¼º”ÿþm%&ºšÿþl%&º¬ÿþm"¼º²ÿþl"¼º²ÿþm%&º¸ÿþl%&º¸ÿþm"¼º¾ÿþl"¼º¾ÿþm%&ºÄÿþl%&ºÄÿþm"¼ºÊÿþl"¼ºÊÿþm%&ºÐÿþl%&ºâÿþm"¼ºèÿþl"¼ºèÿþm%&ºîÿþl%&ºîÿþm"¼ºôÿþl"¼ºôÿþm%&ºúÿþl%&»ÿþm"¼»ÿþl"¼»ÿþm%&»ÿþl%&»ÿþm"¼»$ÿþl"¼»$ÿþm%&»*ÿþl%&»*ÿþm"¼»0ÿþl"¼»0ÿþm%&»6ÿþl%&»Bÿþm"¼»Hÿþl"¼»Nÿþm%&»Tÿþl%&»rÿþm"¼»xÿþl"¼»xÿþm%&»~ÿþl%&»~ÿþm"¼»„ÿþl"¼»„ÿþm%&»Šÿþl%&»Šÿþm"¼»�ÿþl"¼»�ÿþm%&»–ÿþl%&»¢ÿþm"¼»¨ÿþl"¼»®ÿþm%&»´ÿþl%&»Àÿþm%&»Æÿþl%&»Ìÿþm"¼»Òÿþl"¼»Òÿþm%&»Øÿþl%&»Øÿþm"¼»Þÿþl"¼»ðÿþm%&»öÿþl%&»öÿþm%&»üÿþl%&»üÿþm%&¼ÿþl%&¼ÿþm"¼¼ ÿþl"¼¼ ÿþm%&¼&ÿþl%&¼&ÿþm"¼¼,ÿþl"¼¼Dÿþm%&¼Jÿþl%&¼\ÿþm"¼¼bÿþl"¼¼bÿþm%&¼hÿþl%&¼hÿþm"¼¼nÿþl"¼¼†ÿþm%&¼Œÿþl%&¼žÿþm"¼¼¤ÿþl"¼¼¤ÿþm%&¼ªÿþl%&¼ªÿþm"¼¼°ÿþl"¼¼Èÿþm%&¼Îÿþl%&¼Ôÿþm%&¼Úÿþl%&½Fÿþm"¼½Lÿþl"¼½dÿþm%&½jÿþl%&½jÿþm"¼½pÿþl"¼½pÿþm%&½vÿþl%&½vÿþm"¼½|ÿþl"¼½¬ÿþm%&½²ÿþl%&½²ÿþm%&½¸ÿþl%&½¸ÿþm%&½¾ÿþl%&½¾ÿþm%&½Äÿþl%&½Äÿþm%&½Êÿþl%&½Êÿþm%&½Ðÿþl%&½Ðÿþm%&½Öÿþl%&½Öÿþm%&½Üÿþl%&½Üÿþm%&½âÿþl%&½âÿþm%&½èÿþl%&½èÿþm%&½îÿþl%&½îÿþm%&½ôÿþl%&½ôÿþm%&½úÿþl%&½úÿþm%&¾ÿþl%&¾ÿþm%&¾ÿþl%&¾ÿþm%&¾ ÿþl%&¾ ÿþm%&¾ÿþl%&¾ÿþm%&¾ÿþl%&¾ÿþm%&¾ÿþl%&¾Zÿþm"¼¾`ÿþl"¼¾fÿþm%&¾lÿþl%&¾xÿþm"¼¾~ÿþl"¼¾„ÿþm%&¾Šÿþl%&¾–ÿþm"¼¾œÿþl"¼¾¢ÿþm%&¾¨ÿþl%&¾¨ÿþm.text÷°k[ñÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ ÿþŒÿþŒ/ÿþŒCÿþŒXÿþŒLëÿþŒMÿþŒMSÿþŒM‹ÿþŒMêÿþŒNÿþŒN!ÿþŒNEÿþŒNnÿþŒN—ÿþŒRoÿþŒWÊÿþŒX¤ÿþŒY³ÿþŒZÂÿþŒ[LÿþŒ[nÿþŒ[‘ÿþŒ[«ÿþŒ[ÆÿþŒ[çÿþŒ\ÿþŒ\*ÿþŒ\BÿþŒ\cÿþŒ\xÿþŒ\“ÿþŒ\¨ÿþŒ\¾ÿþŒ\ÓÿþŒ\éÿþŒ]ÿþŒqøÿþŒr¨ÿþŒrÁÿþŒrÓÿþŒräÿþŒt9ÿþŒtKÿþŒt\ÿþŒtnÿþŒt€ÿþŒt“ÿþŒt¥ÿþŒt¸ÿþŒtËÿþŒtßÿþŒtóÿþŒuÿþŒuÿþŒu0ÿþŒuGÿþŒu_ÿþŒuwÿþŒu�ÿþŒu¨ÿþŒuÁÿþŒuÚÿþŒuôÿþŒv ÿþŒv ÿþŒv5ÿþŒvKÿþŒvcÿþŒv|ÿþŒv”ÿþŒv®ÿþŒvÂÿþŒvÕÿþŒvçÿþŒvùÿþŒw ÿþŒwÿþŒw/ÿþŒwBÿþŒwTÿþŒwfÿþŒwyÿþŒw�ÿþŒw¢ÿþŒw´ÿþŒwÅÿþŒwØÿþŒwëÿþŒwûÿþŒx ÿþŒxÿþŒx2ÿþŒxCÿþŒxVÿþŒxhÿþŒxzÿþŒx�ÿþŒx ÿþŒx´ÿþŒxÅÿþŒxØÿþŒxéÿþŒxùÿþŒy ÿþŒyÿþŒy-ÿþŒy?ÿþŒyQÿþŒybÿþŒysÿþŒy„ÿþŒy”ÿþŒy¤ÿþŒyÃÿþŒyÔÿþŒyèÿþŒyûÿþŒzÿþŒz%ÿþŒz;ÿþŒzLÿþŒzãÿþŒzöÿþŒ{}ÿþŒ|(ÿþŒ|@ÿþŒ|lÿþŒ|ŠÿþŒ|©ÿþŒ|½ÿþŒ|ÕÿþŒ~¤ÿþŒ€EÿþŒ%@÷° ™�Hô�¡ÿþŽ.bf÷°e8�Èxÿþ‚�Ô|ÿþ‚sb:p141€ÿþ‚�ä„ÿþ‚.bbø@d%.bbø@d#.bbø@d!.ebøŒdß.ebøŒdß.ebøŒdß.bbù<d4.bbù<dÕ2�ðÿþƒsb:141€ÿþ��ü„ÿþ�.bbù<dÕ0.ebù\dÖ.ebù\dÖ.ebù\dÖ.bbù\dÖ<.bbù\dÖ:.ebù\dÖ.ebù\dÖ.efù°eß%aúL ‡žD‚ œÿþŽ.bfúLe>sb:R141ÿþ„ch:r-1ÿþƒ.bbúddW.bbúddU.bbúddŒS‚%ÿþƒ.bbúddŒQ.ebúddŒ.ebúddŒ.ebú�dO.ebú�dO.efú�eŒ%xúÔ õžn·‚1$ÿþŽ.bfúÔeH‚Gÿþ„‚Sÿþ„.bbúèdÿ.bbúèd¾‚`ÿþƒ.bbúèd¼ch:r-1ÿþƒ.bbúèdºch:r-1ÿþƒ.bbúèdw‚l ÿþƒch:r-1ÿþƒ.bbúèduch:r-1ÿþƒ.ebúèd.ebúèd.bbûd¥šch:r-1ÿþƒ.bbûdÕ˜ch:r-1ÿþƒ.bbûdÕ–ch:r-1ÿþƒ.bbûdÕ”ch:r-1ÿþƒ.bbûdÕ’ch:r-1ÿþƒ.bbûdÕ�ch:r-1ÿþƒ.bbûdÕŽch:r-1ÿþƒ.ebûdÕ.ebûdÕ.ebûdÕ.ebûdÕ.ebûdÕ.ebûdÕ.ebûdÕ.bbûd¦¸ch:r-1ÿþƒ.bbûd¨¶ch:r-1ÿþƒ.bbûdåªch:r-1ÿþƒ.bbûdå¨ch:r-1ÿþƒ.ebûdå.ebûdå.bbûdå´ch:r-1ÿþƒ.bbûdå²ch:r-1ÿþƒ.ebûdå.ebûdå.ebû8d‚.ebû<d‚.ebû<d‚.ebû<d‚.ebû<d‚.bbûDdých:r-1ÿþƒ.bbûDdÉ.bbûDdÇ.ebûDd.ebûDd.bbûDdò.bbû\dð‚`ÿþƒ.bbû\dî�ð ÿþƒ‚`ÿþƒ.bbû\dì‚`ÿþƒ.bbû\dê‚`ÿþƒ.bbû\dè‚`ÿþƒ.bbû\dæ‚| ÿþƒ‚`ÿþƒ.bbû\dä‚`ÿþƒ.ebû\d.ebû\d.ebû\d.ebû\d.ebû\d.ebû\d.ebû\d.ebûld.bbûldû‚`ÿþƒ.bbûldù.ebûld.ebûld.ebûld.ebû„dŽ.efûˆeŒ%‰ûÌ äŸ‚ˆÿþŽ.bfûÌe^‚Gÿþ„.bbûàd.bbûàd‚| ÿþƒ.bbûàd.ebûàd.ebûàd.ebûød|.bbûød-.bbüdå!‚%ÿþƒ.bbüdå‚%ÿþƒ.ebüdå.ebüdå.bbüdå+‚%ÿþƒ.bbüdå)‚%ÿþƒ.ebüdå.ebüdå.ebü d%.bbü d6‚%ÿþƒ.bbü d4.ebü\d�.ebü\d�.bbü\dX.bbüddV.bbüddÕT�ð ÿþƒ.bbüddÕR.bbütdÖP.bbütdÖN.bbütdÐL‚| ÿþƒ.bbütdÐJ.ebütdÐ.ebütdÐ.ebütdÖ.ebütdÖ.ebütdÖ.ebütdÖ.ebütdy.ebütdy.efüte�%™ü° 8ŸšÇ‚�ÿþŽ.bfü°ej‚Gÿþ„n:R-1ÿþ„‚¶ÿþ„.bbüÌd.bbüÌdÀ‚`ÿþƒ.bbüÌd¾sb:r141ÿþƒ.bbüÌd¼sb:r141ÿþƒ.bbüÌdy‚| ÿþƒsb:r141ÿþƒ.bbüÌdwsb:r141ÿþƒ.ebüÌd.ebüÌd.bbüðd¥œsb:r141ÿþƒ.bbüðdÕšsb:r141ÿþƒ.bbüðdÕ˜sb:r141ÿþƒ.bbüðdÕ–sb:r141ÿþƒ.bbüðdÕ”sb:r141ÿþƒ.bbüðdÕ’sb:r141ÿþƒ.bbüðdÕ�sb:r141ÿþƒ.ebüðdÕ.ebüðdÕ.ebüðdÕ.ebüðdÕ.ebüðdÕ.ebüðdÕ.ebýdÕ.bbýd¦ºsb:r141ÿþƒ.bbýd¨¸sb:r141ÿþƒ.bbý då¬sb:r141ÿþƒ.bbý dåªsb:r141ÿþƒ.ebý då.ebý då.bbý då¶sb:r141ÿþƒ.bbý då´sb:r141ÿþƒ.ebý då.ebý då.ebý(d‚.ebý,d‚.ebý,d‚.ebý,d‚.ebý,d‚.bbý4d sb:r141ÿþƒ.bbý\d .bbý\d ch:r-1ÿþƒ‚`ÿþƒ.bbý\d Ô‚%ÿþƒ‚`ÿþƒ.bbý\d Ò‚`ÿþƒ.ebý\d .ebý\d .bbý\d þ‚`ÿþƒ.bbý\d ü‚`ÿþƒ.bbý\d ú�ð ÿþƒ‚`ÿþƒ.bbý\d ø‚`ÿþƒ.bbý\d ö‚`ÿþƒ.bbý\d ô‚`ÿþƒ.bbý\d ò‚| ÿþƒ‚`ÿþƒ.bbý\d ð‚`ÿþƒ.ebý\d .ebý\d .ebý\d .ebý\d .ebý\d .ebý\d .ebý\d .ebý\d .ebýpd.ebýœd#.bbýœd¬ ‚`ÿþƒ.bbýœd¬ .ebýœd¬.ebýœd¬.ebýœdC.ebýœdC.efý eŒ%­ýè ÿ Š`‚Â8ÿþŽ.bfýèe‹‚Gÿþ„s:R37ÿþ„n:R34ÿþ„.bbþd¨.bbþdf‚`ÿþƒ.bbþdd.bbþdb.bbþd,‚| ÿþƒ.bbþd*.ebþd.ebþd.bbþd¥H.bbþdÕF.bbþdÕD.bbþdÕB.bbþdÕ@.bbþdÕ>.bbþdÕ<.ebþdÕ.ebþdÕ.ebþdÕ.ebþdÕ.ebþdÕ.ebþdÕ.ebþ,dÕ.bbþ,d¦`.bbþ,d¨^.bbþ8dåT.bbþ8dåR.ebþ8då.ebþ8då.bbþ8då\.bbþ8dåZ.ebþ8då.ebþ8då.ebþTd‚.ebþXd‚.ebþXd‚.ebþXd‚.ebþXd‚.bbþ`d¦.bbþ`drs:r37ÿþƒn:r76ÿþƒ.bbþ`dp.ebþ`d.ebþ`d.bbþ`d›.bbþ„d™‚`ÿþƒ.bbþ„dÕ—�ð ÿþƒ‚`ÿþƒ.bbþ„dÕ•‚`ÿþƒ.bbþ„dÕ“‚`ÿþƒ.bbþ„dÕ‘‚`ÿþƒ.bbþ„dÕ�‚| ÿþƒ‚`ÿþƒ.bbþ„dÕ�‚`ÿþƒ.ebþ„dÕ.ebþ„dÕ.ebþ„dÕ.ebþ„dÕ.ebþ„dÕ.ebþ„dÕ.ebþ„dÕ.ebþ„dÕ.bbþ„dÕ¤‚`ÿþƒ.bbþ„dÕ¢.ebþ„dÕ.ebþ„dÕ.ebþ„dÕ.ebþœdK.efþ e†%Àþè ´¡2•‚Ú8ÿþŽ.bfþèeœ‚Gÿþ„sb:r141 ÿþƒ.bbþød»‚| ÿþƒ.bbþød¹.ebþød.ebþød.bbÿdÝ.bbÿHdÛ.bbÿHdÙ�ð ÿþƒ.bbÿHd×.bbÿHdÕ.bbÿHdÓ.bbÿHdÑ‚| ÿþƒ.bbÿHdÏ.ebÿHd.ebÿHd.ebÿHd.ebÿHd.ebÿHd.ebÿHd.ebÿPd .ebÿdd<.efÿdeå%Ðÿœ ~¡tÉ‚ïìÿþŽ.bfÿœeª‚Gÿþ„pos:R75ÿþ„.bbÿ¬dï.bbÿ¬dí.ebÿ¬d.ebÿ¬d.bbÿ¬d.bbÿÌd.bbÿÌdÕ �ð ÿþƒ.bbÿÌdÕ .bbÿÜdÖ .bbÿÜdÖ.bbÿÜdЂ| ÿþƒ.bbÿÜdÐ.ebÿÜdÐ.ebÿÜdÐ.ebÿÜdÖ.ebÿÜdÖ.ebÿÜdÖ.ebÿÜdÖ.ebÿÜd-.ebÿÜd-.efÿàel%â �¡ÂöƒlÿþŽ.bfe²‚Gÿþ„off:R74ÿþ„dir:R84ÿþ„.bb,d>.bbLd<.bbLdÕ:�ð ÿþƒ.bbLdÕ8.bb\dÖ6.bb\dÖ4.bb\dÐ2‚| ÿþƒ.bb\dÐ0.eb\dÐ.eb\dÐ.eb\dÖ.eb\dÖ.eb\dÖ.eb\dÖ.eb\d%.eb\d%.ef`eÖ&¬ �¢"ƒ,üÿþŽ.bf¬eº‚Gÿþ„pos:r75ÿþƒ.bb¼dj.bbädh.bbädÕf�ð ÿþƒ.bbädÕd.bbôdÖb.bbôdÖ`.bbôdÐ^‚| ÿþƒ.bbôdÐ\.ebôdÐ.ebôdÐ.ebôdÖ.ebôdÖ.ebôdÖ.ebôdÖ.ebôd.ebôd.efôeÖ&0 ö¢FÁƒB €ÿþŽ.bf0eÆ‚Gÿþ„c:R536ÿþ„.bbDd .bbDdÈ‚`ÿþƒ.bbDdÆch:r-1ÿþƒ.bbDdÄch:r-1ÿþƒ.bbDdŠ‚|ÿþƒch:r-1ÿþƒ.bbDdˆch:r-1ÿþƒ.ebDd.ebDd.bb\dœ­ch:r-1ÿþƒ.bb\dÕ«ch:r-1ÿþƒ.bb\dÕ©ch:r-1ÿþƒ.bb\dÕ§ch:r-1ÿþƒ.bb\dÕ¥ch:r-1ÿþƒ.bb\dÕ£ch:r-1ÿþƒ.bb\dÕ¡ch:r-1ÿþƒ.eb\dÕ.eb\dÕ.eb\dÕ.eb\dÕ.eb\dÕ.eb\dÕ.ebldÕ.bbld�Âch:r-1ÿþƒ.bb€d Àch:r-1ÿþƒ.bb€dº¾‚| ÿþƒch:r-1ÿþƒ.bb€dº¼ch:r-1ÿþƒ.eb€dº.eb€dº.eb¨dº.eb¨dº.eb¨dº.eb¨dº.eb¨dº.bb°dch:r-1ÿþƒ.bb°dÓ.bb°dÑ.eb°d.eb°d.bb°dü.bbÈdú‚`ÿþƒ.bbÈdÕø�ð ÿþƒ‚`ÿþƒ.bbÈdÕö‚`ÿþƒ.bbÈdÕô‚`ÿþƒ.bbÈdÕò‚`ÿþƒ.bbÈdÕð‚| ÿþƒ‚`ÿþƒ.bbÈdÕî‚`ÿþƒ.ebÈdÕ.ebÈdÕ.ebÈdÕ.ebÈdÕ.ebÈdÕ.ebÈdÕ.ebÈdÕ.ebàd.bbàd¬‚`ÿþƒ.bbàd¬.ebàd¬.ebàd¬.ebàd .ebàd .efäeŒ&&( Ž¢â˜ƒY xÿþŽ.bf(eׂGÿþ„ptr:R37ÿþ„p:r37ÿþƒw:r-1ÿþƒ.bbLd�ð ÿþƒ.bbLdsave:r-1 ÿþƒ.ebLd.ebLd.bbLdà.bbLds‚`ÿþƒ.bbLdqsb:r141ÿþƒ.bbLdosb:r141ÿþƒ.bbLd5‚|ÿþƒsb:r141ÿþƒ.bbLd3sb:r141ÿþƒ.ebLd.ebLd.bb|dœXsb:r141ÿþƒ.bb|dÕVsb:r141ÿþƒ.bb|dÕTsb:r141ÿþƒ.bb|dÕRsb:r141ÿþƒ.bb|dÕPsb:r141ÿþƒ.bb|dÕNsb:r141ÿþƒ.bb|dÕLsb:r141ÿþƒ.eb|dÕ.eb|dÕ.eb|dÕ.eb|dÕ.eb|dÕ.eb|dÕ.ebŒdÕ.bbŒd�msb:r141ÿþƒ.bb d ksb:r141ÿþƒ.bb dºi‚| ÿþƒsb:r141ÿþƒ.bb dºgsb:r141ÿþƒ.eb dº.eb dº.ebÈdº.ebÈdº.ebÈdº.ebÈdº.ebÈdº.bbÐdÞsb:r141ÿþƒ.bbÐdª.bbÜd ¨ch:r-1ÿþƒ.bbÜd „‚%ÿþƒ.bbÜd ‚.ebÜd .ebÜd .bbÜd ¦.bbÜd ¤.bbÜd ¢�ð ÿþƒ.bbÜd  .bbÜd ž.bbÜd œ.bbÜd š‚| ÿþƒ.bbÜd ˜.ebÜd .ebÜd .ebÜd .ebÜd .ebÜd .ebÜd .ebÜd .eb d.ebd.eb@d¶.bb@dÓ.bbHdÑ‚`ÿþƒ.bbHdÕÏ�ð ÿþƒ‚`ÿþƒ.bbHdÕÍ‚`ÿþƒ.bbXdÖË‚`ÿþƒ.bbXdÖÉ‚`ÿþƒ.bbXdÐÇ‚| ÿþƒ‚`ÿþƒ.bbXdÐÅ‚`ÿþƒ.ebXdÐ.ebXdÐ.ebXdÖ.ebXdÖ.ebXdÖ.ebXdÖ.ebXd.ebXd.bbXd¬Ü‚`ÿþƒ.bbXd¬Ú.ebXd¬.ebXd¬.ebXd.ebXd.efdeŒ&8¸ kO¤·ƒp ÿþŽ.bf¸eÿƒ�ÿþ„ƒ�ÿþ„ƒ­ÿþ„ƒ¼ÿþƒsb:r141ÿþƒbase:r-1ÿþƒƒÉÿþƒch:r-1ÿþƒ.bbÜd G.bbÜd E‚`ÿþƒ‚| ÿþƒ.bbÜd C‚| ÿþƒ.bbÜd A‚| ÿþƒ.bbÜd ‚|ÿþƒ‚| ÿþƒ.bbÜd ‚| ÿþƒ.ebÜd.ebÜd.bbødœ *‚| ÿþƒ.bbødÕ (‚| ÿþƒ.bbødÕ &‚| ÿþƒ.bbødÕ $‚| ÿþƒ.bbødÕ "‚| ÿþƒ.bbødÕ ‚| ÿþƒ.bbødÕ ‚| ÿþƒ.ebødÕ.ebødÕ.ebødÕ.ebødÕ.ebødÕ.ebødÕ.ebdÕ.bbd� ?‚| ÿþƒ.bbd  =‚| ÿþƒ.bbdº ;‚| ÿþƒ‚| ÿþƒ.bbdº 9‚| ÿþƒ.ebdº.ebdº.ebDdº.ebDdº.ebDdº.ebDdº.ebDdº.ebTd.bbTdå P‚| ÿþƒ.bbTdå N.ebTdå.ebTdå.bb¸d £.bb¸dº [‚| ÿþƒ.bb¸dº Y.eb¸dº.eb¸dº.bbÈd �.bbÈd .bbÐd }.bbÐdŒ j‚%ÿþƒ.bbÐdŒ h.ebÐdŒ.ebÐdŒ.bbüd {.bbd y.bbd w‚%ÿþƒ.bbd u.ebd.ebd.eb8dŽ.eb<dŽ.eb<dŽ.eb<dŽ.eb<dŽ.bbXd) ¡.bbXd) Ÿ.bbXdº �.bbXdº ‹.ebXdº.ebXdº.bbhd+ �.bbhd+ ›.bbhdº ™.bbhdº —.ebhdº.ebhdº.eb„d,.eb„d,.eb„d,.eb„d,.eb„d,.bb„d- ¸.bbœd0 ¶ƒ×ÿþƒ�ð ÿþƒ.bbdA ´‚%ÿþƒ�ð ÿþƒ.bbdA ²�ð ÿþƒ.ebdA.ebdA.ebdA.eb|dŽ.bb„dÕ ×�ð ÿþƒ.bb„dÕ Õ�ð ÿþƒ.bb„dÕ Ó�ð ÿþƒ.bb„dÕ Ñ�ð ÿþƒ.bb„dÕ Ï‚| ÿþƒ�ð ÿþƒ.bb„dÕ Í�ð ÿþƒ.eb„dÕ.eb„dÕ.eb„dÕ.eb„dÕ.eb„dÕ.eb„dÕ.bbœdÕ ö�ð ÿþƒ.bbœdÕ ô‚`ÿþƒ.bbœdÕ ò‚`ÿþƒ.bbœdÕ ð‚`ÿþƒ.bbœdÕ î‚| ÿþƒ‚`ÿþƒ.bbœdÕ ì‚`ÿþƒ.ebœdÕ.ebœdÕ.ebœdÕ.ebœdÕ.ebœdÕ.ebœdÕ.bb°d¬ ÿ‚`ÿþƒ.bb°d¬ ý.eb°d¬.eb°d¬.ef°eŒ&S ª¦HÃãXÿþŽ.bfe^‚Gÿþ„ƒúÿþ„val:-328ÿþ�neg:-1@ÿþ�.efpe^&e´ «¦TÏ„ÿþŽ.bf´e_‚Gÿþ„„ÿþ„val:-328ÿþ�neg:-1@ÿþ�.efe_&x` ª¦`Û„,°ÿþŽ.bf`e`‚Gÿþ„i:R539ÿþ„val:-328ÿþ�neg:-1@ÿþ�.efÈe`&Š  «¦lç„C\ÿþŽ.bf ea‚Gÿþ„„[ÿþ„val:-328ÿþ�neg:-1@ÿþ�.ef tea&� ¸ ª¦xó„hÿþŽ.bf ¸eb‚Gÿþ„„ÿþ„val:-328ÿþ�neg:-1@ÿþ�.ef eb&¯ d «¦„ÿ„Œ´ÿþŽ.bf dec‚Gÿþ„„¤ÿþ„val:-328ÿþ�neg:-1@ÿþ�.ef Ìec&  ž¦� „²`ÿþŽ.bf ee‚Gÿþ„„Éÿþ„val:-328ÿþ�neg:-1@ÿþ�.ef pee&Ô ° Ÿ¦œ„×ÿþŽ.bf °ef‚Gÿþ„i:R538ÿþ„val:-328ÿþ�neg:-1@ÿþ�.ef ef&ç P º¦¨#„ï ÿþŽ.bf Pei‚Gÿþ„…ÿþ„val:-328ÿþ�neg:-1@ÿþ�.ef Èei&ù  Þ¦´‘…\ÿþŽ.bf em‚Gÿþ„…)ÿþ„.bb d Ù.bb d É‚`ÿþƒ.bb d Çy:-138ÿþ�.bb d Åy:-138ÿþ�.bb d ‹‚|ÿþƒy:-138ÿþ�.bb d ‰y:-138ÿþ�.eb d.eb d.bb 8dœ ®y:-138ÿþ�.bb 8dÕ ¬y:-138ÿþ�.bb 8dÕ ªy:-138ÿþ�.bb 8dÕ ¨y:-138ÿþ�.bb 8dÕ ¦y:-138ÿþ�.bb 8dÕ ¤y:-138ÿþ�.bb 8dÕ ¢y:-138ÿþ�.eb 8dÕ.eb 8dÕ.eb 8dÕ.eb 8dÕ.eb 8dÕ.eb 8dÕ.eb HdÕ.bb Hd� Ãy:-138ÿþ�.bb \d  Áy:-138ÿþ�.bb \dº ¿‚| ÿþƒy:-138ÿþ�.bb \dº ½y:-138ÿþ�.eb \dº.eb \dº.eb „dº.eb „dº.eb „dº.eb „dº.eb „dº.bb Œd ×y:-138ÿþ�.bb ¨d¬ Õ‚`ÿþƒ.bb ¨d¬ Ó.eb ¨d¬.eb ¨d¬.eb ¨d .eb ¨d .ef ¬e|'  ì Ö§8ï…7<ÿþŽ.bf ìe€‚Gÿþ„…Nÿþ„.bbd 7.bbd (‚`ÿþƒ.bbd &.bbd $.bbd õ‚|ÿþƒ.bbd ó.ebd.ebd.bbdœ .bbdÕ .bbdÕ .bbdÕ .bbdÕ .bbdÕ .bbdÕ .ebdÕ.ebdÕ.ebdÕ.ebdÕ.ebdÕ.ebdÕ.eb(dÕ.bb(d� ".bb<d  .bb<dº ‚| ÿþƒ.bb<dº .eb<dº.eb<dº.ebddº.ebddº.ebddº.ebddº.ebddº.bbld 5.bb€d¬ 3‚`ÿþƒ.bb€d¬ 1.eb€d¬.eb€d¬.eb€d.eb€d.ef„e‰'Ä Ö§¶M…\ÿþŽ.bfÄe�‚Gÿþ„…sÿþ„.bbØd •.bbØd †‚`ÿþƒ.bbØd „.bbØd ‚.bbØd S‚|ÿþƒ.bbØd Q.ebØd.ebØd.bbðdœ o.bbðdÕ m.bbðdÕ k.bbðdÕ i.bbðdÕ g.bbðdÕ e.bbðdÕ c.ebðdÕ.ebðdÕ.ebðdÕ.ebðdÕ.ebðdÕ.ebðdÕ.ebdÕ.bbd� €.bbd  ~.bbdº |‚| ÿþƒ.bbdº z.ebdº.ebdº.eb<dº.eb<dº.eb<dº.eb<dº.eb<dº.bbDd “.bbXd¬ ‘‚`ÿþƒ.bbXd¬ �.ebXd¬.ebXd¬.ebXd.ebXd.ef\e–'/œ '¨49…�ìÿþŽ.bfœeš‚Gÿþ„…¡ÿþ„.bb´d �.bb´d ó‚`ÿþƒ.bb´d ñ…­ÿþƒ.bb´d ï…­ÿþƒ.bb´d µ‚|ÿþƒ…­ÿþƒ.bb´d ³…­ÿþƒ.eb´d.eb´d.bbÌdœ Ø…­ÿþƒ.bbÌdÕ Ö…­ÿþƒ.bbÌdÕ Ô…­ÿþƒ.bbÌdÕ Ò…­ÿþƒ.bbÌdÕ Ð…­ÿþƒ.bbÌdÕ Î…­ÿþƒ.bbÌdÕ Ì…­ÿþƒ.ebÌdÕ.ebÌdÕ.ebÌdÕ.ebÌdÕ.ebÌdÕ.ebÌdÕ.ebÜdÕ.bbÜd� í…­ÿþƒ.bbðd  ë…­ÿþƒ.bbðdº é‚| ÿþƒ…­ÿþƒ.bbðdº ç…­ÿþƒ.ebðdº.ebðdº.eb(d¨.eb(d¨.eb(d¨.eb(d¨.eb(d¨.bb0d …­ÿþƒ.bb0då ÿ‚| ÿþƒ.bb0då ý.eb0då.eb0då.bb0då t.bb<d rch:r-1ÿþƒ‚`ÿþƒ.bb<d ‚%ÿþƒ‚`ÿþƒ.bb<d ‚`ÿþƒ.eb<d.eb<d.bb<d :‚`ÿþƒ.bb<d 8‚`ÿþƒ.bb<d 6�ð ÿþƒ‚`ÿþƒ.bb<d 4‚`ÿþƒ.bb<d 2‚`ÿþƒ.bb<d 0‚`ÿþƒ.bb<d .‚| ÿþƒ‚`ÿþƒ.bb<d ,‚`ÿþƒ.eb<d.eb<d.eb<d.eb<d.eb<d.eb<d.eb<d.eb<d.bb<d p‚`ÿþƒ.bb<d‹ I‚%ÿþƒc:r-1ÿþƒ‚`ÿþƒ.bb<d‹ G‚`ÿþƒ.eb<d‹.eb<d‹.bbPd n‚`ÿþƒ.bbPd l�ð ÿþƒ‚`ÿþƒ.bbPd j‚`ÿþƒ.bbPd h‚`ÿþƒ.bbPd f‚`ÿþƒ.bbPd d‚| ÿþƒ‚`ÿþƒ.bbPd b‚`ÿþƒ.ebPd .ebPd .ebPd .ebPd .ebPd .ebPd .ebPd .ebPd .ebPd .ebtd .bbtd¬ }‚`ÿþƒ.bbtd¬ {.ebtd¬.ebtd¬.ebtd.ebtd.efxe®'JÄ á¨è«…ºÿþŽ.bfÄe²…Ðÿþ„c:R-2ÿþ„.bbØd ó.bbØd £…Üÿþƒ.bbØd ¡.bbØd Ÿ.bbØd �‚|ÿþƒ.bbØd ›.ebØd.ebØd.ebd².ebd².ebd².bbd ñ.bbd Ù.bbd ²c:r-1ÿþƒ…Üÿþƒ.bbd °…Üÿþƒ.ebd.ebd.bb4d ×…Üÿþƒ.bb4dÕ Õ�ð ÿþƒ…Üÿþƒ.bb4dÕ Ó…Üÿþƒ.bbDdÖ Ñ…Üÿþƒ.bbDdÖ Ï…Üÿþƒ.bbDdÐ Í‚| ÿþƒ…Üÿþƒ.bbDdÐ Ë…Üÿþƒ.ebDdÐ.ebDdÐ.ebDdÖ.ebDdÖ.ebDdÖ.ebDdÖ.ebDd .ebDd .bbDd6 ï…Üÿþƒ.bbDd6 í.bbDd7 ë.bbDdº é‚| ÿþƒ.bbDdº ç.ebDdº.ebDdº.eb`dº.eb`dº.eb`dº.eb`d.eb`d.efdeÓ'[¨ kŽ©fÀ…èøÿþŽ.bf¨e܆ÿþ„val:R-32ÿþ„sign:R-1ÿþ„†8ÿþ�†,ÿþƒ†:ÿþƒ†Oÿþƒ†cÿþƒ†rÿþƒlen:r-1ÿþƒ†€ÿþƒ†Œÿþƒ†›ÿþƒ.bbäd |.bbäd ‚| ÿþƒ�ðÿþƒ.bbäd �ðÿþƒ.ebäd.ebäd.bbd *�ðÿþƒ.bbHd (�ðÿþƒ.bbHdº &‚| ÿþƒ�ðÿþƒ.bbHdº $�ðÿþƒ.ebHdº.ebHdº.ebdd.ebdd.bbpd z�ðÿþƒ.bbpd x�ðÿþƒ.bbpdº ;�ðÿþƒ.bbpdº 9†«ÿþƒ�ðÿþƒ.ebpdº.ebpdº.bbxd `†«ÿþƒ�ðÿþƒ.bbxdº Kival:r-8ÿþƒ�ðÿþƒ.bbxdº Iival:r-8ÿþƒ�ðÿþƒ.ebxdº.ebxdº.bb¼d ^ival:r-8ÿþƒ�ðÿþƒ.bb¼dº \‚| ÿþƒival:r-8ÿþƒ�ðÿþƒ.bb¼dº Zival:r-8ÿþƒ�ðÿþƒ.eb¼dº.eb¼dº.ebÌd.ebÌd.bbØd vival:r-8ÿþƒ�ðÿþƒ.bbˆd0 t�ðÿþƒ.bb�dº r‚| ÿþƒ�ðÿþƒ.bb�dº p�ðÿþƒ.eb�dº.eb�dº.eb´d1.eb´d1.eb´d1.eb´d1.eb´d1.bb´d4 ‡�ðÿþƒ.bb´d4 …save:r-1ÿþƒ‚| ÿþƒ.eb´d4.eb´d4.bb´d4 �‚| ÿþƒ.bb´d4 Ž.eb´d4.eb´d4.bb´d4 ˜.bb´d4 –.eb´d4.eb´d4.bb´d4  .bb´d4 ž.eb´d4.eb´d4.bb\dG ¹.bbpdH ·…Üÿþƒ.bbpdI µ…Üÿþƒ.bbpdI ³‚%ÿþƒ…Üÿþƒ.bbpdI ±…Üÿþƒ.ebpdI.ebpdI.eb˜dK.eb˜dK.eb˜dK.bb|d6 Ó…Üÿþƒ.bb|d6 Ñ�ð ÿþƒ.bb|d7 Ï�ð ÿþƒ.bb|dº Í‚| ÿþƒ�ð ÿþƒ.bb|dº Ë�ð ÿþƒ.eb|dº.eb|dº.ebŒdº.ebŒdº.ebŒdº.bbœdÕ ò�ð ÿþƒ.bbœdÕ ð…Üÿþƒ.bbœdÕ î…Üÿþƒ.bbœdÕ ì…Üÿþƒ.bbœdÕ ê‚| ÿþƒ…Üÿþƒ.bbœdÕ è…Üÿþƒ.ebœdÕ.ebœdÕ.ebœdÕ.ebœdÕ.ebœdÕ.ebœdÕ.bbœdÕ…Üÿþƒ.bbœdÕ.bbœdÕ.bbœdÕ‚| ÿþƒ.bbœdÕ.ebœdÕ.ebœdÕ.ebÈdÕ.ebÈdÕ.ebÈdÕ.efÈe8'u8 ͬÿ†¸ˆÿþŽ.bf8e;…Ðÿþ„n:R-1ÿþ„.bbLdG.bbLd2…Üÿþƒ.bbLd0sign:r-1ÿþƒ†Î ÿþƒ.bbLd.sign:r-1ÿþƒ†Î ÿþƒ.bbLd,‚|ÿþƒsign:r-1ÿþƒ†Î ÿþƒ.bbLd*sign:r-1ÿþƒ†Î ÿþƒ.ebLd.ebLd.eb„d;.eb„d;.eb„d;.bbŒdEsign:r-1ÿþƒ†Î ÿþƒ.bbŒdC.bb˜dºA‚| ÿþƒ.bb˜dº?.eb˜dº.eb˜dº.eb°d.ebÀd .ebÀd .efÄeF'† ®¬`#†ÚXÿþŽ.bfeJ…Ðÿþ„n:R-8ÿþ„.bbdk.bbdi…Üÿþƒ.bbdg.bbde.bbdc‚|ÿþƒ.bbda.ebd.ebd.ebTdJ.ebTdJ.ebTdJ.ebpd.efteQ'˜¸ ɬ�b†ñ ÿþŽ.bf¸eV…Ðÿþ„n:R-4ÿþ„.bbÌdª.bbÌd•…Üÿþƒ.bbÌd“sign:r-1ÿþƒ‡ ÿþƒ.bbÌd‘sign:r-1ÿþƒ‡ ÿþƒ.bbÌd�‚|ÿþƒsign:r-1ÿþƒ‡ ÿþƒ.bbÌd�sign:r-1ÿþƒ‡ ÿþƒ.ebÌd.ebÌd.ebdV.ebdV.ebdV.bb d¨sign:r-1ÿþƒ‡ ÿþƒ.bb d¦.bbdº¤‚| ÿþƒ.bbdº¢.ebdº.ebdº.eb0d.eb@d .eb@d .efDea'©„ ª¬ê†‡ ÔÿþŽ.bf„ee…Ðÿþ„n:R-10ÿþ„.bb˜dÎ.bb˜dÌ…Üÿþƒ.bb˜dÊ.bb˜dÈ.bb˜dÆ‚|ÿþƒ.bb˜dÄ.eb˜d.eb˜d.ebÐde.ebÐde.ebÐde.ebìd.efðel'»0 ٭Ň+!€ÿþŽ.bf0eq…Ðÿþ„n:R-31ÿþ„.bbHd .bbHdø…Üÿþƒ.bbHdösign:r-1ÿþƒ‡Aÿþƒ.bbHdôsign:r-1ÿþƒ‡Aÿþƒ.bbHdò‚|ÿþƒsign:r-1ÿþƒ‡Aÿþƒ.bbHdðsign:r-1ÿþƒ‡Aÿþƒ.ebHd.ebHd.eb„dq.eb„dq.eb„dq.bbŒd sign:r-1ÿþƒ‡Aÿþƒ.bbŒd .bb dº‚| ÿþƒ.bb dº.eb dº.eb dº.eb¼d.ebÄd .ebÄd .efÈe|'Ì  ¶­té‡N"\ÿþŽ.bf e�…Ðÿþ„n:R-32ÿþ„.bb$d1.bb$d/…Üÿþƒ.bb$d-.bb$d+.bb$d)‚|ÿþƒ.bb$d'.eb$d.eb$d.eb`d�.eb`d�.eb`d�.eb|d.ef€eˆ'ÞÄ ‘­¤å‡e#ÿþŽ.bfÄe�…Ðÿþ„n:R-13?ÿþ„.bbØd-.bbØd[…Üÿþƒ.bbØdY‡{ÿþƒprec:r-1ÿþƒ.bbØdW‡{ÿþƒprec:r-1ÿþƒ.bbØdU‚|ÿþƒ‡{ÿþƒprec:r-1ÿþƒ.bbØdS‡{ÿþƒprec:r-1ÿþƒ.ebØd.ebØd.ebd�.ebd�.ebd�.bbd+‡{ÿþƒprec:r-1ÿþƒ.bbd  .bbdºl‚| ÿþƒ‚|ÿþƒ.bbdºj‚|ÿþƒ.ebdº.ebdº.bb4d ž‚|ÿþƒ.bb4d œ‚|ÿþƒ.bb4dº|‚|ÿþƒ.bb4dºz‚|ÿþƒ.eb4dº.eb4dº.bb<d ‹‚|ÿþƒ.bb<dº‰‚|ÿþƒ.bb<dº‡‚|ÿþƒ.eb<dº.eb<dº.eb<d .bbXdš‚|ÿþƒ.bbXdº˜‚|ÿþƒ.bbXdº–‚|ÿþƒ.ebXdº.ebXdº.ebpd.ebpd.ebpd.ebpd.bbpd½©‚|ÿþƒ.bbpd½§.ebpd½.ebpd½.bbpd½µ.bb€dº³.bb€dº±.eb€dº.eb€dº.eb d.bb d3.bb dåÁ…Üÿþƒ.bb då¿…Üÿþƒ.eb då.eb då.bb dåÍ…Üÿþƒ.bb dåËsave:r-1ÿþƒ‚| ÿþƒ…Üÿþƒ.eb då.eb då.bb d娂| ÿþƒ…Üÿþƒ.bb dåÖ…Üÿþƒ.eb då.eb då.bb dåâ…Üÿþƒ.bb dåà…Üÿþƒ.eb då.eb då.bb dåì…Üÿþƒ.bb dåê…Üÿþƒ.eb då.eb då.bbäd7…Üÿþƒ.bbädÕ�ð ÿþƒ…Üÿþƒ.bbädÕ …Üÿþƒ.bbôdÖ …Üÿþƒ.bbôdÖ …Üÿþƒ.bbôdЂ| ÿþƒ…Üÿþƒ.bbôdÐ…Üÿþƒ.ebôdÐ.ebôdÐ.ebôdÖ.ebôdÖ.ebôdÖ.ebôdÖ.ebôd7.ebôd7.bbôd6)…Üÿþƒ.bbôd6'.bbôd7%.bbôdº#‚| ÿþƒ.bbôdº!.ebôdº.ebôdº.ebdº.ebdº.ebdº.ebdj.ebdj.efeù'ïX Ó®¾à‡�$¨ÿþŽ.bfXe8…Ðÿþ„s:R551ÿþ„.bb|d(.bb|d[…Üÿþƒ.bb|dYlen:r-1ÿþƒ†›ÿþƒ†€ÿþƒ.bb|dWlen:r-1ÿþƒ†›ÿþƒ†€ÿþƒ.bb|dU‚|ÿþƒlen:r-1ÿþƒ†›ÿþƒ†€ÿþƒ.bb|dSlen:r-1ÿþƒ†›ÿþƒ†€ÿþƒ.eb|d.eb|d.eb´d8.eb´d8.eb´d8.bb¼d&len:r-1ÿþƒ†›ÿþƒ†€ÿþƒ.bbÈdk�ð ÿþƒ.bbÈdisave:r-1 ÿþƒ‚| ÿþƒ.ebÈd.ebÈd.bbÈdt‚| ÿþƒ.bbÈdr.ebÈd.ebÈd.bbÈd|.bbÈdz.ebÈd.ebÈd.bbÈd®.bbÈd†.bbÈd„.ebÈd.ebÈd.bb d¬.bb dª.bb<d¨.bb<dÕ¦�ð ÿþƒ.bb<dÕ¤.bb<dÕ¢.bb<dÕ .bb<dÕž‚| ÿþƒ.bb<dÕœ.eb<dÕ.eb<dÕ.eb<dÕ.eb<dÕ.eb<dÕ.eb<dÕ.eb<d.eb<d.eb<d.eb<d.bb<dÐ.bbtdÎ.bbtdÕÌ�ð ÿþƒ.bbtdÕÊ.bbtdÕÈ.bbtdÕÆ.bbtdÕÄ‚| ÿþƒ.bbtdÕÂ.ebtdÕ.ebtdÕ.ebtdÕ.ebtdÕ.ebtdÕ.ebtdÕ.ebtd.ebtd.bbtd.bbtdºÝ‚| ÿþƒ…Üÿþƒ.bbtdºÛ…Üÿþƒ.ebtdº.ebtdº.bbŒd …Üÿþƒ.bbŒd …Üÿþƒ.bb¨d…Üÿþƒ.bb¨dÕ�ð ÿþƒ…Üÿþƒ.bb¨dÕ…Üÿþƒ.bb¸dÖ…Üÿþƒ.bb¸dÖ…Üÿþƒ.bb¸dÐþ‚| ÿþƒ…Üÿþƒ.bb¸dÐü…Üÿþƒ.eb¸dÐ.eb¸dÐ.eb¸dÖ.eb¸dÖ.eb¸dÖ.eb¸dÖ.eb¸d.eb¸d.eb¸d.eb¸d.bb¸d6$…Üÿþƒ.bb¸d6".bb¸d7 .bb¸dº‚| ÿþƒ.bb¸dº.eb¸dº.eb¸dº.ebÔdº.ebÔdº.ebÔdº.ebÔd.ebÔd.efØeW(, 7¯Þ\‡¥&|ÿþŽ.bf,e`…Ðÿþ„…¡ÿþ„.bbHd¤.bbHdR…Üÿþƒ.bbHdP‡Å8ÿþ�‡áÿþƒ.bbHdN‡ï8ÿþ�‡áÿþƒ.bbHdL‚|ÿþƒ‡ï8ÿþ�‡áÿþƒ.bbHdJ‡ï8ÿþ�‡áÿþƒ.ebHd.ebHd.eb€d`.eb€d`.eb€d`.bbˆd¢‡ï8ÿþ�‡áÿþƒ.bb�dŠ.bb�dˆ‡üÿþƒ…Üÿþƒ.bb�d†…Üÿþƒ.bb�d„…Üÿþƒ.bb�d‚�ð ÿþƒ…Üÿþƒ.bb�d€…Üÿþƒ.bb�d~…Üÿþƒ.bb�d|…Üÿþƒ.bb�dz‚| ÿþƒ…Üÿþƒ.bb�dx…Üÿþƒ.eb�d.eb�d.eb�d.eb�d.eb�d.eb�d.eb�d.eb�d.eb�d.ebôd.bbôd6 …Üÿþƒ.bbôd6ž.bbôd7œ.bbôdºš‚| ÿþƒ.bbôdº˜.ebôdº.ebôdº.ebdº.ebdº.ebdº.ebd.ebd.efeu(d ‘°\‹ˆ'´ÿþŽ.bfdeyˆ/xÿþ‚�Ô|ÿþ‚sb:p141€ÿþ‚�ä„ÿþ‚.bbôd¼.bbôdº.bbôd¸.eb @dy.eb @dy.eb @dy.bb ðdË.bb ðdÕÉ�ðÿþƒsb:141€ÿþ��ü„ÿþ�.bb ðdÕÇ.eb!dÖ.eb!dÖ.eb!dÖ.bb!dÖÓ.bb!dÖÑ.eb!dÖ.eb!dÖ.ef!\ez(>!ø ~±:¿ˆ;*HÿþŽ.bf!øe~…Ðÿþ„pos:R75ÿþ„.bb"då.bb"dã.eb"d.eb"d.bb"d.bb"(d.bb"(dÕ�ð ÿþƒ.bb"(dÕ.bb"8dÖÿ.bb"8dÖý.bb"8dÐû‚| ÿþƒ.bb"8dÐù.eb"8dÐ.eb"8dÐ.eb"8dÖ.eb"8dÖ.eb"8dÖ.eb"8dÖ.eb"8d.eb"8d.ef"<e‚(P"x �±ˆìˆR*ÈÿþŽ.bf"xe†…Ðÿþ„off:R74ÿþ„dir:R84ÿþ„.bb"ˆd4.bb"¨d2.bb"¨dÕ0�ð ÿþƒ.bb"¨dÕ..bb"¸dÖ,.bb"¸dÖ*.bb"¸dÐ(‚| ÿþƒ.bb"¸dÐ&.eb"¸dÐ.eb"¸dÐ.eb"¸dÖ.eb"¸dÖ.eb"¸dÖ.eb"¸dÖ.eb"¸d.eb"¸d.ef"¼eŠ(q# �±Êˆx+XÿþŽ.bf#eŽ…Ðÿþ„pos:r75ÿþƒ.bb#d`.bb#@d^.bb#@dÕ\�ð ÿþƒ.bb#@dÕZ.bb#PdÖX.bb#PdÖV.bb#PdÐT‚| ÿþƒ.bb#PdÐR.eb#PdÐ.eb#PdÐ.eb#PdÖ.eb#PdÖ.eb#PdÖ.eb#PdÖ.eb#Pd.eb#Pd.ef#Pe–(‚#Œ ¡² CˆŽ+ÜÿþŽ.bf#Œeš…Ðÿþ„.bb#œd‹.bb#Üd‰.bb#ÜdÕ‡�ð ÿþƒ.bb#ÜdÕ….bb#ìdÖƒ.bb#ìdÖ�.bb#ìdЂ| ÿþƒ.bb#ìdÐ}.eb#ìdÐ.eb#ìdÐ.eb#ìdÖ.eb#ìdÖ.eb#ìdÖ.eb#ìdÖ.eb#ìd.eb#ìd.ef#ðe�(“$0 K²HLˆ¤,€ÿþŽ.bf$0e¡outs:R98ÿþ„.ef$De¢(¦$| ä²Z눼,ÌÿþŽ.bf$|e¦ins:R93ÿþ„.bb$Œd3.bb$Œdú‚`ÿþƒ.bb$Œdøch:r-1ÿþƒ.bb$Œdöch:r-1ÿþƒ.bb$Œd³‚| ÿþƒch:r-1ÿþƒ.bb$Œd±ch:r-1ÿþƒ.eb$Œd.eb$Œd.bb$ d¥Öch:r-1ÿþƒ.bb$ dÕÔch:r-1ÿþƒ.bb$ dÕÒch:r-1ÿþƒ.bb$ dÕÐch:r-1ÿþƒ.bb$ dÕÎch:r-1ÿþƒ.bb$ dÕÌch:r-1ÿþƒ.bb$ dÕÊch:r-1ÿþƒ.eb$ dÕ.eb$ dÕ.eb$ dÕ.eb$ dÕ.eb$ dÕ.eb$ dÕ.eb$°dÕ.bb$°d¦ôch:r-1ÿþƒ.bb$°d¨òch:r-1ÿþƒ.bb$¼dåæch:r-1ÿþƒ.bb$¼dåäch:r-1ÿþƒ.eb$¼då.eb$¼då.bb$¼dåðch:r-1ÿþƒ.bb$¼dåîch:r-1ÿþƒ.eb$¼då.eb$¼då.eb$Ød‚.eb$Üd‚.eb$Üd‚.eb$Üd‚.eb$Üd‚.bb$äd1ch:r-1ÿþƒ.bb$äd&.bb$üd$‚`ÿþƒ.bb$üdÕ"�ð ÿþƒ‚`ÿþƒ.bb$üdÕ ‚`ÿþƒ.bb$üdÕ‚`ÿþƒ.bb$üdÕ‚`ÿþƒ.bb$üdÕ‚| ÿþƒ‚`ÿþƒ.bb$üdÕ‚`ÿþƒ.eb$üdÕ.eb$üdÕ.eb$üdÕ.eb$üdÕ.eb$üdÕ.eb$üdÕ.eb$üdÕ.eb%$d .bb%$d¬/‚`ÿþƒ.bb%$d¬-.eb%$d¬.eb%$d¬.eb%$d .eb%$d .ef%(e²(¶%` œ²ðˆÑ-°ÿþŽ.bf%`eº‚Gÿþ„ch:r-1ÿþƒ.bb%pd_.bb%Œd].bb%Œd[�ð ÿþƒ.bb%ŒdY.bb%ŒdW.bb%ŒdU.bb%ŒdS‚| ÿþƒ.bb%ŒdQ.eb%Œd.eb%Œd.eb%Œd.eb%Œd.eb%Œd.eb%Œd.eb%¨d .eb%¼d .ef%¼eÂ(Ê%ü v³,1ˆê.LÿþŽ.bf%üeÇouts:R98ÿþ„.bb&dy…Üÿþƒ.bb&dw.bb&du.bb&ds.eb&d.eb&d.eb&d.eb&d.ef&0eÉ(Ü&t ~³JK‰.ÄÿþŽ.bf&teÍouts:R98ÿþ„.bb&Œd“…Üÿþƒ.bb&Œd‘.bb&Œd�.bb&Œd�.eb&Œd.eb&Œd.eb&Œd.eb&Œd.ef&°eÎ(î&ô 2³hT‰/DÿþŽ.bf&ôeÒins:R93ÿþ„.ef&øeÔ)'( 4³z]‰//xÿþŽ.bf'(e×ins:R93ÿþ„.ef',eÙ)'\ 2³Œf‰H/¬ÿþŽ.bf'\eÜouts:R98ÿþ„.ef'`eÞ)&'� 4³žo‰_/àÿþŽ.bf'�eáouts:R98ÿþ„.ef'”eã):'Ä ³°×‰x0ÿþŽ.bf'Äeè…Ðÿþ„s:R551ÿþ„n:R34ÿþ„.bb'Üd.bb'ÜdÚ…Üÿþƒ.bb'ÜdØ.bb'ÜdÖ.bb'ÜdÔ‚|ÿþƒ.bb'ÜdÒ.eb'Üd.eb'Üd.eb(dè.eb(dè.eb(dè.bb( d.bb( d.bb(\d…Üÿþƒ.bb(\dÕ�ð ÿþƒ…Üÿþƒ.bb(\dÕÿ…Üÿþƒ.bb(ldÖý…Üÿþƒ.bb(ldÖû…Üÿþƒ.bb(ldÐù‚| ÿþƒ…Üÿþƒ.bb(ldÐ÷…Üÿþƒ.eb(ldÐ.eb(ldÐ.eb(ldÖ.eb(ldÖ.eb(ldÖ.eb(ldÖ.eb(ld.eb(ld.bb(ld6…Üÿþƒ.bb(ld6.bb(ld7.bb(ldº‚| ÿþƒ.bb(ldº.eb(ldº.eb(ldº.eb(ˆdº.eb(ˆdº.eb(ˆdº.eb(ˆd.eb(ˆd.ef(Œeñ)O(Ø “´4ú‰’1(ÿþŽ.bf(Øeõ…Ðÿþ„.bb(èd5.bb(èd3‚| ÿþƒ.bb(èd1.eb(èd.eb(èd.eb)d.bb)dB.bb)dº@‚| ÿþƒ.bb)dº>.eb)dº.eb)dº.eb),d.ef),eú)b)l n´p –‰«1¼ÿþŽ.bf)leÿ‰Óhÿþ‚�Ôlÿþ‚sb:p141pÿþ‚�ätÿþ‚.bb)üd]this:145hÿþ�.bb)üd[this:145hÿþ�.bb)üdYthis:145hÿþ�.eb*Ldÿ.eb*Ldÿ.eb*Ldÿ.bb*ˆd‹this:145hÿþ�.bb*ˆdu‰ßhÿþ�…Üÿþƒ.bb*ˆds…Üÿþƒ.bb*ˆdq…Üÿþƒ.bb*ˆdo…Üÿþƒ.eb*ˆd.eb*ˆd.eb*ˆd.eb*ˆd.bb*Àdz…Üÿþƒ.bb*Àdz}…Üÿþƒ.eb*Àdz.eb*Àdz.bb*Àdz‰…Üÿþƒ.bb*Àdz‡…Üÿþƒ.eb*Àdz.eb*Àdz.eb*Àdz.bb+hd¬…Üÿþƒ.bb+hdž.bb+hdœ.bb+hdš.bb+hd˜.eb+hd.eb+hd.eb+hd.eb+hd.bb+¬d1¢.eb+¬d1.bb+¬d1ª.bb+¬d1¨.eb+¬d1.eb+¬d1.eb+¬d1.bb,Äd».bb,ÄdÕ¹�ðÿþƒsb:141pÿþ��ütÿþ�.bb,ÄdÕ·.eb,ädÖ.eb,ädÖ.eb,ädÖ.bb,ädÖÉ.bb,ädÖÇthis:145hÿþ�.bb,ädÖÅthis:145hÿþ�.eb,ädÖ.eb,ädÖ.eb,ädÖ.bb,ädÖÖthis:145hÿþ�.bb,ädÖÔ.bb,ädÖÒ.eb,ädÖ.eb,ädÖ.eb,ädÖ.bb,ädÖÞ.bb,ädÖÜ.eb,ädÖ.eb,ädÖ.ef-@e)„-Ü ­µÆ ÅŠ6,ÿþŽ.bf-ÜeŠÿþ„.bb-ìd .bb.dö.bb.dåô‚|ÿþƒ.bb.dåò.eb.då.eb.då.eb.d.bb.d .bb.d .bb.d.bb.då‚|ÿþƒ.bb.då.eb.då.eb.då.eb.Dd.eb.Dd.eb.Dd.eb.Dd.ef.Te )‘.Œ Y¶ Њ!6ÜÿþŽ.bf.Œe‚Gÿþ„i:R-1ÿþ„old:r-1 ÿþƒ.ef.¸eŠ7ÿþ€Š`ÿþ€Š‰0ÿþ€Š£Hÿþ€Š¼`ÿþ€ŠÕÿþ€Šöÿþ€)¢.è ª¶J!‹ 78ÿþŽ.bf.èe‹ÿþ„1™ÿþ„.bb/hdæ3‚`ÿþƒ.bb/hdæ1‚`ÿþƒ.eb/hdæ.eb/hdæ.bb/hdæ@‚`ÿþƒ.bb/hdæ>.bb/hdæ<.eb/hdæ.eb/hdæ.eb/hdæ.bb0,dáH.bb0,dáF.eb0@dç.eb0@dè.ef0Te)°0” ]¶’!‹*8äÿþŽ.bf0”e‹Mÿþ„1™ÿþ„‚`ÿþƒ.bb1dæ[.bb1dæY.eb1dæ.eb1dæ.bb1|dác.bb1|dáa.eb1�dç.eb1�dè.ef1¤e)Í1ô ]¶Ú!6‹Y:DÿþŽ.bf1ôe‹|ÿþ„1™ÿþ„…Üÿþƒ.bb2tdæv.bb2tdæt.eb2tdæ.eb2tdæ.bb2Üdá~.bb2Üdá|.eb2ðdç.eb2ðdè.ef3e)ê3T ñ·"!E‹ˆ;¤ÿþŽ.bf3Teæ…Ðÿþ„1™ÿþ„�ð ÿþƒ.bb3Üdá�.eb3ôdç.ef4eè)÷4H z·R!M‹›<˜ÿþŽ.bf4He.ef4Œe*4Ä ·^!o‹Á=ÿþŽ.bf4Äe1ˆ/xÿþ‚�Ô|ÿþ‚.bb5Ld«.bb5Ld©.bb5Ld§.eb5˜dß.eb5˜dß.eb5˜dß.bb6Hd¯.eb6Hd.bb6Hd·.bb6Hdµ.eb6Hd.eb6Hd.ef6Xeß*6ä t·Ö!…‹Ô?4ÿþŽ.bf6äe3…Ðÿþ„.bb6ðdÍ.bb6ðdÙË‚|ÿþƒ.bb6ðdÙÉ.eb6ðdÙ.eb6ðdÙ.eb7 d§.ef7 eÙ*"7X \·ú!›‹é?¨ÿþŽ.bf7Xe6…Ðÿþ„.bb7ddã.bb7ddá‚| ÿþƒ.bb7ddß.eb7dd.eb7dd.eb7|d….ef7|eº*27´ x¸!­‹ÿ@ÿþŽ.bf7´e:…Ðÿþ„c:R-2ÿþ„.bb7Ìdõ.bb7Ìdó.eb7Ìd.eb7Ìd.ef7èe‹*B8, u¸0!ÈŒ@|ÿþŽ.bf8,e=…Ðÿþ„c:R-5ÿþ„.bb8Dd…Üÿþƒ.bb8Dd.bb8Dd .bb8Dd .eb8Dd.eb8Dd.eb8Dd.eb8Dd.ef8`e‹*S8¤ u¸N!ãŒ*@ôÿþŽ.bf8¤e>…Ðÿþ„c:R-6ÿþ„.bb8¼d+…Üÿþƒ.bb8¼d).bb8¼d'.bb8¼d%.eb8¼d.eb8¼d.eb8¼d.eb8¼d.ef8Øe‹*d9 N¸l!îŒ@AlÿþŽ.bf9eB…Ðÿþ„Œ[ÿþ„n:R34ÿþ„.ef90eB*z9l N¸x!ùŒhA¼ÿþŽ.bf9leD…Ðÿþ„Œƒÿþ„n:R34ÿþ„.ef9€eD*�9¼ M¸„"Œ�B ÿþŽ.bf9¼eF…Ðÿþ„s:R68ÿþ„n:R34ÿþ„.ef9ÐeF*¥:  J¸�"ŒªB\ÿþŽ.bf: eN…Ðÿþ„c:R-5ÿþ„.ef: eN*·:X N¸œ"ŒÁB¨ÿþŽ.bf:XeO…Ðÿþ„c:R-6ÿþ„.ef:peO*É:¨ L¸¨""ŒØBøÿþŽ.bf:¨eR…Ðÿþ„s:R557ÿþ„.ef:¼eR*Ý:ô L¸´",ŒñCDÿþŽ.bf:ôeT…Ðÿþ„s:R558ÿþ„.ef;eT*ñ;@ I¸À"6� C�ÿþŽ.bf;@e^…Ðÿþ„n:R-3ÿþ„.ef;Te^+;Œ J¸Ì"@� CÜÿþŽ.bf;Œe_…Ðÿþ„n:R-7ÿþ„.ef; e_+;Ø I¸Ø"J�7D(ÿþŽ.bf;Øea…Ðÿþ„b:R5ÿþ„.ef;ìea+%<$ I¸ä"T�MDtÿþŽ.bf<$ed…Ðÿþ„n:R-12!ÿþ„.ef<8ed+6 ñ¹ "Š�òFPÿþŽ.bf>eæ‚Gÿþ„1™ÿþ„�ð ÿþƒ.bb>ˆdáÒ.eb> dç.ef>´eè+­>ô z¹P"’ŽGDÿþŽ.bf>ôe.ef?8e+»?p %¹\"¹ŽGÀÿþŽ.bf?pez�Èxÿþ‚�Ô|ÿþ‚Ž,Pÿþ�.bb?ødñ.bb?ødï.bb?ødí.eb@Ddß.eb@Ddß.eb@Ddß.bb@ôdù.bb@ôd÷.eb@ôd.eb@ôd.bb@ôd.bb@ôdÿ.eb@ôd.eb@ôd.efA eß+ÈA˜ L¹Ô"ÅŽDIèÿþŽ.bfA˜e~‚Gÿþ„ptr:R399ÿþ„len:R-1ÿþ„Ž]ÿþ„.efA¬e~+ÜAä J¹à"ÏŽiJ4ÿþŽ.bfAäe€‚Gÿþ„Ž€ÿþ„.efAøe€+îB0 P¹ì"ÛŽ�J€ÿþŽ.bfB0eƒ‚Gÿþ„ptr:R399ÿþ„len:R-1ÿþ„Ž]ÿþ„.efBDeƒ,B€ J¹ø"厪JÐÿþŽ.bfB€e„‚Gÿþ„ŽÁÿþ„.efB”e„,BÌ Lº"ñŽÎKÿþŽ.bfBÌe†‚Gÿþ„Žçÿþ„len:R-1ÿþ„Ž]ÿþ„.efBàe†,,C Pº"ýŽöKhÿþŽ.bfCeˆ‚Gÿþ„ptr:R562ÿþ„len:R-1ÿþ„Ž]ÿþ„.efC,eˆ,DCh Lº#�K¸ÿþŽ.bfChe‹‚Gÿþ„ptr:R399ÿþ„n:R34ÿþ„.efC|e‹,XC´ Lº(#�,LÿþŽ.bfC´e�‚Gÿþ„ptr:R562ÿþ„n:R34ÿþ„.efCÈe�,lD Kº4#�ELPÿþŽ.bfDe�‚Gÿþ„ptr:R8ÿþ„n:R34ÿþ„.efDe�,DL Ùº@#v�]LœÿþŽ.bfDLe’‚Gÿþ„need:R-1ÿþ„.bbDdd¾.bbDdd{‚| ÿþƒ.bbDddy.ebDdd.ebDdd.bbDxd—.bbDxdÕ•.bbDxdÕ“.bbDxdÕ‘.bbDxdÕ�.bbDxdÕ�.bbDxdÕ‹.ebDxdÕ.ebDxdÕ.ebDxdÕ.ebDxdÕ.ebDxdÕ.ebDxdÕ.ebDˆdD.bbDˆd¼.bbDˆd­.bbDœdå£.bbDœdå¡.ebDœdå.ebDœdå.bbDœdå«.bbDœdå©.ebDœdå.ebDœdå.ebD¼dñ.bbD¼dº.bbDÀdº¸‚| ÿþƒ.bbDÀdº¶.ebDÀdº.ebDÀdº.ebDäd).ebDäd).ebDäd).efDäe‚,�E( ¥º¦#¹�sMxÿþŽ.bfE(e›‚Gÿþ„.bbE8d.bbE8dÒ‚| ÿþƒ.bbE8dÐ.ebE8d.ebE8d.bbELdî.bbELdÕì.bbELdÕê.bbELdÕè.bbELdÕæ.bbELdÕä.bbELdÕâ.ebELdÕ.ebELdÕ.ebELdÕ.ebELdÕ.ebELdÕ.ebELdÕ.ebE\d;.bbE\dÿ.bbEpdý.bbEpdºû‚| ÿþƒ.bbEpdºù.ebEpdº.ebEpdº.ebE�d .ebE�d .ebE�d .efE�eÙ,¡EÐ ‘»$�‰N ÿþŽ.bfEÐe¤‚Gÿþ„.bbEÜdK.bbEÜdÙ‚| ÿþƒ.bbEÜdÙ.ebEÜdÙ.ebEÜdÙ.bbEìd1.bbEìdÕ/.bbEìdÕ-.bbEìdÕ+.bbEìdÕ).bbEìdÕ'.bbEìdÕ%.ebEìdÕ.ebEìdÕ.ebEìdÕ.ebEìdÕ.ebEìdÕ.ebEìdÕ.ebEüd2.bbEüdI.bbEüdG.bbFdå=.bbFdå;.ebFdå.ebFdå.bbFdåE.bbFdåC.ebFdå.ebFdå.ebF$dß.ebF(dß.ebF(dß.efF(e‚,²Fd 4»`$ �ŸN´ÿþŽ.bfFde¬‚Gÿþ„.efFhe¬,ÂF˜ Ï»l$³�µNèÿþŽ.bfF˜e­‚Gÿþ„.bbF¨dû.bbF¨dº‚`ÿþƒ.bbF¨d¸ch:r-1ÿþƒ.bbF¨d¶ch:r-1ÿþƒ.bbF¨ds‚| ÿþƒch:r-1ÿþƒ.bbF¨dqch:r-1ÿþƒ.ebF¨d.ebF¨d.bbF¼d¥–ch:r-1ÿþƒ.bbF¼dÕ”ch:r-1ÿþƒ.bbF¼dÕ’ch:r-1ÿþƒ.bbF¼dÕ�ch:r-1ÿþƒ.bbF¼dÕŽch:r-1ÿþƒ.bbF¼dÕŒch:r-1ÿþƒ.bbF¼dÕŠch:r-1ÿþƒ.ebF¼dÕ.ebF¼dÕ.ebF¼dÕ.ebF¼dÕ.ebF¼dÕ.ebF¼dÕ.ebFÌdÕ.bbFÌd¦´ch:r-1ÿþƒ.bbFÌd¨²ch:r-1ÿþƒ.bbFØdå¦ch:r-1ÿþƒ.bbFØdå¤ch:r-1ÿþƒ.ebFØdå.ebFØdå.bbFØdå°ch:r-1ÿþƒ.bbFØdå®ch:r-1ÿþƒ.ebFØdå.ebFØdå.ebFôd‚.ebFød‚.ebFød‚.ebFød‚.ebFød‚.bbGdùch:r-1ÿþƒ.bbGdÅ.bbGdÃ.ebGd.ebGd.bbGdî.bbG dì‚`ÿþƒ.bbG dÕê�ð ÿþƒ‚`ÿþƒ.bbG dÕè‚`ÿþƒ.bbG0dÖæ‚`ÿþƒ.bbG0dÖä‚`ÿþƒ.bbG0dÐâ‚| ÿþƒ‚`ÿþƒ.bbG0dÐà‚`ÿþƒ.ebG0dÐ.ebG0dÐ.ebG0dÖ.ebG0dÖ.ebG0dÖ.ebG0dÖ.ebG0d*.ebG0d*.bbG0d¬÷‚`ÿþƒ.bbG0d¬õ.ebG0d¬.ebG0d¬.ebG0d.ebG0d.efG0eŒ,ÑGh 6¼$¼�ÉO¸ÿþŽ.bfGhe´‚Gÿþ„.efGpe´,ãG  ˆ¼$ñ�àOðÿþŽ.bfG eº‚Gÿþ„ch:R-2ÿþ„.bbG°d9.bbG°d‚|ÿþƒ.bbG°d.ebG°d.ebG°d.bbGØd7.bbGØd5�ð ÿþƒ.bbGØd3.bbGädÔ1.bbGädÔ/.bbGädÐ-‚| ÿþƒ.bbGädÐ+.ebGädÐ.ebGädÐ.ebGädÔ.ebGädÔ.ebGädÔ.ebGädÔ.ebGäd.ebGäd.efGèeÙ,÷H( �¼V%%�ùPxÿþŽ.bfH(e½‚Gÿþ„.bbH8dm.bbH8dM‚|ÿþƒ.bbH8dK.ebH8d.ebH8d.bbH`dk.bbH`di�ð ÿþƒ.bbH`dg.bbHldÔe.bbHldÔc.bbHldÐa‚| ÿþƒ.bbHldÐ_.ebHldÐ.ebHldÐ.ebHldÔ.ebHldÔ.ebHldÔ.ebHldÔ.ebHld.ebHld.efHpeÙ-H¬ ‚¼˜%d�PüÿþŽ.bfH¬eÂGÿþ„ch:R-2ÿþ„.bbH¼d¬‚`ÿþƒch:r-2ÿþƒ.bbH¼dª.bbH¼d¨.bbH¼dˆ‚|ÿþƒ.bbH¼d†.ebH¼d.ebH¼d.bbHäd»¦.bbHäd»¤�ð ÿþƒ.bbHäd»¢.bbHðdÔ .bbHðdÔž.bbHðdМ‚| ÿþƒ.bbHðdК.ebHðdÐ.ebHðdÐ.ebHðdÔ.ebHðdÔ.ebHðdÔ.ebHðdÔ.ebHðdÔ.ebHðdÔ.ebHðdÔ.ebHðdÔ.efHôeÙ-I0 ?¼à%m�&Q€ÿþŽ.bfI0eÅ�Cÿþ„.efI<eÅ-1Ip K¼ì%w�SQÀÿþŽ.bfIpeÉ‚Gÿþ„p:R399ÿþ„.efI„eÉ-DI¼ K¼ø%��kR ÿþŽ.bfI¼eÊ‚Gÿþ„p:R562ÿþ„.efIÐeÊ-WJ K½%‹�ƒRXÿþŽ.bfJeÌ‚Gÿþ„c:R560ÿþ„.efJeÌ-jJT K½%•�›R¤ÿþŽ.bfJTeÍ‚Gÿþ„c:R561ÿþ„.efJheÍ-}J  �½%Ÿ�³RðÿþŽ.bfJ eÞ‚Gÿþ„func:R85ÿþ„.efJàeÞ-šK0 q½(%©�ÕS€ÿþŽ.bfK0eß‚Gÿþ„func:R90ÿþ„.efKXeß-¿K¤ Û½4%µ�ÿSôÿþŽ.bfK¤e.bbKødý.ebL(d.efLDe-ÎL€ ö½@&D‘TÐÿþŽ.bfL€eæ‰Óhÿþ‚�Ôlÿþ‚.bbMdthis:145hÿþ�.bbMdthis:145hÿþ�.bbMdthis:145hÿþ�.ebMXdß.ebMXdß.ebMXdß.bbM”dDthis:145hÿþ�.bbM”d.Ž,hÿþ�…Üÿþƒ.bbM”d,…Üÿþƒ.bbM”d*…Üÿþƒ.bbM”d(…Üÿþƒ.ebM”d.ebM”d.ebM”d.ebM”d.bbMÌdz8…Üÿþƒ.bbMÌdz6…Üÿþƒ.ebMÌdz.ebMÌdz.bbMÌdzB…Üÿþƒ.bbMÌdz@…Üÿþƒ.ebMÌdz.ebMÌdz.ebMÌdz.bbNtde…Üÿþƒ.bbNtdW.bbNtdU.bbNtdS.bbNtdQ.ebNtd.ebNtd.ebNtd.ebNtd.bbN¸d1[.ebN¸d1.bbN¸d1c.bbN¸d1a.ebN¸d1.ebN¸d1.ebN¸d1.bbOÐdi.ebOÐd.bbOÐdw.bbOÐduthis:145hÿþ�.bbOÐdsthis:145hÿþ�.ebOÐd.ebOÐd.ebOÐd.bbOÐd„this:145hÿþ�.bbOÐd‚.bbOÐd€.ebOÐd.ebOÐd.ebOÐd.bbOÐdŒ.bbOÐdŠ.ebOÐd.ebOÐd.efOðeß-ÜPx º¾$&L‘(XÈÿþŽ.bfPxe.efPèe-úQ4 q¾0&V‘LY„ÿþŽ.bfQ4eî‹Mÿþ„rhs:R210ÿþ„.efQHeî.3Q¨ º¾<&^‘‹YøÿþŽ.bfQ¨e.efRe.QRd q¾H&h‘¯Z´ÿþŽ.bfRdeõ‹|ÿþ„rhs:R218ÿþ„.efRxeõ.ŠRØ A¾T&z‘î[(ÿþŽ.bfRØe i:R88 ÿþ„.bbRÜdÂ�ð ÿþƒ.bbRÜdÀ.ebRÜd.ebRÜd.efRðe .—S A¾r&Œ’[lÿþŽ.bfSe i:R88 ÿþ„.bbS dÔ�ð ÿþƒ.bbS dÒ.ebS d.ebS d.efS4e .¤S` A¾�&ž’[°ÿþŽ.bfS`ei:R88 ÿþ„.bbSddæ�ð ÿþƒ.bbSddä.ebSdd.ebSdd.efSxe.±lk•.± ¸k0.data ¨k| Þ ¨&¢ ¼ À&¢j Ø&¢ò ð&¢X &¢)£ 0k  )£ 0&® )± k  )± &² )Î k  )Î &¶ )ë `k  )ë `&º )ø Tk  )ø T&¾ +¡ Hk  +¡ H& +® <k  +® <&Æ -À $k  -À $&Ê -Ý  k  -Ý  &Î .4  k  .4  &Ò 4¸ 4Ø T 4ø’$ÿþ€ b 5’9ÿþ€  5’]ÿþ€.Á*Êÿþ g"¼¾äÿþl"¼¾äÿþm"¼¾ðÿþl"¼¾ðÿþm%&¿ÿþl%&¿ÿþm"¼¿ÿþl"¼¿ÿþm%&¿ÿþl%&¿ÿþm"¼¿ÿþl"¼¿ÿþm%&¿ ÿþl%&¿ ÿþm"¼¿&ÿþl"¼¿&ÿþm%&¿,ÿþl%&¿8ÿþm"¼¿>ÿþl"¼¿Dÿþm%&¿Jÿþl%&¿Vÿþm"¼¿hÿþl"¼¿hÿþm"¼¿tÿþl"¼¿tÿþm"¼¿˜ÿþl"¼¿˜ÿþm"¼¿¶ÿþl"¼¿¶ÿþm"¼¿Âÿþl"¼¿Âÿþm"¼¿Îÿþl"¼¿Îÿþm"¼¿æÿþl"¼¿æÿþm"¼¿òÿþl"¼¿òÿþm"¼Àjÿþl"¼Àjÿþm"¼Àvÿþl"¼Àvÿþm%&Àˆÿþl%&ÀŽÿþm"¼À”ÿþl"¼À”ÿþm%&Àšÿþl%&Àšÿþm"¼À ÿþl"¼À ÿþm%&À¦ÿþl%&À¦ÿþm"¼À¬ÿþl"¼À¬ÿþm%&À²ÿþl%&À¾ÿþm"¼ÀÄÿþl"¼ÀÊÿþm%&ÀÐÿþl%&ÀÜÿþm"¼Àîÿþl"¼Àîÿþm"¼Áÿþl"¼Á$ÿþm%&Á0ÿþl%&Á0ÿþm"¼Á~ÿþl"¼Á~ÿþm"¼Âÿþl"¼Âÿþm"¼Âÿþl"¼Âÿþm%& ÿþl%& ÿþm"¼Â&ÿþl"¼Â&ÿþm%&Â,ÿþl%&Â,ÿþm"¼Â2ÿþl"¼Â2ÿþm%&Â8ÿþl%&ÂDÿþm"¼ÂJÿþl"¼ÂPÿþm%&ÂVÿþl%&Âbÿþm"¼Âtÿþl"¼Âtÿþm"¼Â’ÿþl"¼Â’ÿþm"¼¶ÿþl"¼¶ÿþm"¼ÂÈÿþl"¼ÂÈÿþm.textkÈÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ’�ÿþŒ’ ÿþŒ’ÀÿþŒ’ÙÿþŒ’òÿþŒ“ÿþŒ“.ÿþŒ“MÿþŒ“dÿþŒ“‚ÿþŒ“–ÿþŒ“°ÿþŒ“ÄÿþŒ“ÙÿþŒ“íÿþŒ”ÿþŒ”"ÿþŒ¨÷ÿþŒ©§ÿþŒ©»ÿþŒ©ÏÿþŒ©äÿþŒ©úÿþŒªÿþŒªGÿþŒª§ÿþŒªÌÿþŒªáÿþŒ« ÿþŒ«8ÿþŒ«fÿþŒ«wÿþŒ«‰ÿþŒ«›ÿþŒ«®ÿþŒ«ÀÿþŒ«ÓÿþŒ«æÿþŒ«úÿþŒ¬ÿþŒ¬#ÿþŒ¬6ÿþŒ¬KÿþŒ¬bÿþŒ¬zÿþŒ¬’ÿþŒ¬«ÿþŒ¬ÃÿþŒ¬ÜÿþŒ¬õÿþŒ­ÿþŒ­$ÿþŒ­;ÿþŒ­PÿþŒ­fÿþŒ­~ÿþŒ­—ÿþŒ­¯ÿþŒ­ÉÿþŒ­ÝÿþŒ­ðÿþŒ®ÿþŒ®ÿþŒ®%ÿþŒ®7ÿþŒ®IÿþŒ®\ÿþŒ®mÿþŒ®€ÿþŒ®’ÿþŒ®¤ÿþŒ®·ÿþŒ®ËÿþŒ®àÿþŒ®òÿþŒ¯ÿþŒ¯ÿþŒ¯)ÿþŒ¯9ÿþŒ¯JÿþŒ¯]ÿþŒ¯pÿþŒ¯�ÿþŒ¯”ÿþŒ¯¦ÿþŒ¯¸ÿþŒ¯ËÿþŒ¯ÞÿþŒ¯òÿþŒ°ÿþŒ°ÿþŒ°'ÿþŒ°7ÿþŒ°IÿþŒ°YÿþŒ°kÿþŒ°}ÿþŒ°�ÿþŒ° ÿþŒ°±ÿþŒ°ÂÿþŒ°ÒÿþŒ°âÿþŒ±ÿþŒ±ÿþŒ±&ÿþŒ±9ÿþŒ±MÿþŒ±cÿþŒ±yÿþŒ±ŠÿþŒ²!ÿþŒ²4ÿþŒ²»ÿþŒ³fÿþŒ³~ÿþŒ³ªÿþŒ³ÈÿþŒ³çÿþŒ³ûÿþŒ´ÿþŒµâÿþŒ·ƒÿþŒ.Ý ¿¾®(ö'B¸ßÿþŽ.bfe¸üÿþ„buf:R37ÿþ„len:R-1ÿþ„Ž]ÿþ„ch:-18ÿþ�.bb,dK.bbHdI.bbHdÕG¹ ÿþƒ.bbHdÕE.bbHdÕC.bbHdÕA.bbHdÕ?¹ ÿþƒ.bbHdÕ=.ebHdÕ.ebHdÕ.ebHdÕ.ebHdÕ.ebHdÕ.ebHdÕ.eb\d¸.eb\d¸.bb\d *.bb\d¤¨¹/ÿþƒ.bb\d¤¦¹;ÿþƒ.bb\d¥¤sb:r400ÿþƒ.bb\dÙa¹W ÿþƒsb:r400ÿþƒ.bb\dÙ_sb:r400ÿþƒ.eb\dÙ.eb\dÙ.bbld¥„sb:r400ÿþƒ.bbldÕ‚sb:r400ÿþƒ.bbldÕ€sb:r400ÿþƒ.bbldÕ~sb:r400ÿþƒ.bbldÕ|sb:r400ÿþƒ.bbldÕzsb:r400ÿþƒ.bbldÕxsb:r400ÿþƒ.ebldÕ.ebldÕ.ebldÕ.ebldÕ.ebldÕ.ebldÕ.eb|dÕ.bb|d¦¢sb:r400ÿþƒ.bb|d¨ sb:r400ÿþƒ.bbˆdå”sb:r400ÿþƒ.bbˆdå’sb:r400ÿþƒ.ebˆdå.ebˆdå.bbˆdåžsb:r400ÿþƒ.bbˆdåœsb:r400ÿþƒ.ebˆdå.ebˆdå.eb¤d‚.eb¨d‚.eb¨d‚.eb¨d‚.eb¨d‚.bb°d (sb:r400ÿþƒ.bb°då´¹W ÿþƒ.bb°då².eb°då.eb°då.bb°dåÅ.bbèdÃ.bbèdŒÁ¹cÿþƒ.bbèdŒ¿.ebèdŒ.ebèdŒ.ebèdŒ.ebèdŒ.bbèdŒ.bb dì¹/ÿþƒ.bb dê2 ÿþƒ¹/ÿþƒ.bb dè¹/ÿþƒ.bb dæ¹/ÿþƒ.bb dä¹/ÿþƒ.bb dâ¹W ÿþƒ¹/ÿþƒ.bb dà¹/ÿþƒ.eb d.eb d.eb d.eb d.eb d.eb d.eb d.bb (d¹/ÿþƒ.bb (d¹/ÿþƒ.bb 0d¹/ÿþƒ.bb 0dÕ2 ÿþƒ¹/ÿþƒ.bb 0dÕ¹/ÿþƒ.bb 0dÕ¹/ÿþƒ.bb 0dÕ¹/ÿþƒ.bb 0dÕ ¹W ÿþƒ¹/ÿþƒ.bb 0dÕ ¹/ÿþƒ.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb 0dÕ.bb 0dÕ&¹/ÿþƒ.bb 0dÕ$.eb 0dÕ.eb 0dÕ.eb 0dÕ.eb Xd¸.ef €eŒ.ô Ð GÀ4)Ã'B¹oÀÿþŽ.bf ÐeA¹ˆÿþ„buf:R37ÿþ„len:R-1ÿþ„Ž]ÿþ„.bb ìdX.bb dV.bb dÕT2 ÿþƒ.bb dÕR.bb dÕP.bb dÕN.bb dÕL¹W ÿþƒ.bb dÕJ.eb dÕ.eb dÕ.eb dÕ.eb dÕ.eb dÕ.eb dÕ.eb d•.eb d•.bb d÷.bb d¤µ¹/ÿþƒ.bb d¤³ch:-18ÿþ�.bb d¥±ch:-18ÿþ�.bb dÙn¹W ÿþƒch:-18ÿþ�.bb dÙlch:-18ÿþ�.eb dÙ.eb dÙ.bb ,d¥‘ch:-18ÿþ�.bb ,dÕ�ch:-18ÿþ�.bb ,dÕ�ch:-18ÿþ�.bb ,dÕ‹ch:-18ÿþ�.bb ,dÕ‰ch:-18ÿþ�.bb ,dÕ‡ch:-18ÿþ�.bb ,dÕ…ch:-18ÿþ�.eb ,dÕ.eb ,dÕ.eb ,dÕ.eb ,dÕ.eb ,dÕ.eb ,dÕ.eb <dÕ.bb <d¦¯ch:-18ÿþ�.bb <d¨­ch:-18ÿþ�.bb Hdå¡ch:-18ÿþ�.bb HdåŸch:-18ÿþ�.eb Hdå.eb Hdå.bb Hdå«ch:-18ÿþ�.bb Hdå©ch:-18ÿþ�.eb Hdå.eb Hdå.eb dd‚.eb hd‚.eb hd‚.eb hd‚.eb hd‚.bb pd õch:-18ÿþ�.bb pdåÁ¹W ÿþƒ.bb pdå¿.eb pdå.eb pdå.bb pdåê.bb ¬dè¹/ÿþƒ.bb ¬dÕæ2 ÿþƒ¹/ÿþƒ.bb ¬dÕä¹/ÿþƒ.bb ¼dÖâ¹/ÿþƒ.bb ¼dÖà¹/ÿþƒ.bb ¼dÐÞ¹W ÿþƒ¹/ÿþƒ.bb ¼dÐܹ/ÿþƒ.eb ¼dÐ.eb ¼dÐ.eb ¼dÖ.eb ¼dÖ.eb ¼dÖ.eb ¼dÖ.eb ¼d–.eb ¼d–.bb ¼d¬ó¹/ÿþƒ.bb ¼d¬ñ.eb ¼d¬.eb ¼d¬.eb ¼dl.eb ¼dl.ef Ìe‚/  wÁT)ä'B¹”ÿþŽ.bf ebsb:R400ÿþ„¹¸ÿþ„¹Éÿþ„¹Ú8ÿþ�ptr:r37ÿþƒch:-18ÿþ�‡üÿþƒ¹òÿþƒ.bb @d.bb |d .bb |dŒ¹cÿþƒ.bb |dŒ.eb |dŒ.eb |dŒ.eb Œd+.eb Œd+.ef 0eŒ/& � HÂ*Ê'Bº€ÿþŽ.bf �e„¹ˆÿþ„ºÿþ„Ž]ÿþ„.bb ¨dþ.bb ¨d‘¹/ÿþƒ.bb ¨d�size:-48ÿþ�sb:r400ÿþƒ.bb ¨d�size:-48ÿþ�sb:r400ÿþƒ.bb ¨d=¹W ÿþƒsize:-48ÿþ�sb:r400ÿþƒ.bb ¨d;size:-48ÿþ�sb:r400ÿþƒ.eb ¨d.eb ¨d.bb Äd¥gsize:-48ÿþ�sb:r400ÿþƒ.bb ÄdÕesize:-48ÿþ�sb:r400ÿþƒ.bb ÄdÕcsize:-48ÿþ�sb:r400ÿþƒ.bb ÄdÕasize:-48ÿþ�sb:r400ÿþƒ.bb ÄdÕ_size:-48ÿþ�sb:r400ÿþƒ.bb ÄdÕ]size:-48ÿþ�sb:r400ÿþƒ.bb ÄdÕ[size:-48ÿþ�sb:r400ÿþƒ.eb ÄdÕ.eb ÄdÕ.eb ÄdÕ.eb ÄdÕ.eb ÄdÕ.eb ÄdÕ.eb ÔdÕ.bb Ôd¦‹size:-48ÿþ�sb:r400ÿþƒ.bb Ôd¨‰size:-48ÿþ�sb:r400ÿþƒ.bb àdå{size:-48ÿþ�sb:r400ÿþƒ.bb àdåysize:-48ÿþ�sb:r400ÿþƒ.eb àdå.eb àdå.bb àdå‡size:-48ÿþ�sb:r400ÿþƒ.bb àdå…size:-48ÿþ�sb:r400ÿþƒ.eb àdå.eb àdå.eb üd‚.eb d‚.eb d‚.eb d‚.eb d‚.bb düsize:-48ÿþ�sb:r400ÿþƒ.bb dž¹W ÿþƒ.bb dœ.eb d.eb d.bb dñ.bb Xd ï¹/ÿþƒ.bb XdÕÃ2 ÿþƒ¹/ÿþƒ.bb XdÕÁ¹/ÿþƒ.bb XdÕ¿¹/ÿþƒ.bb XdÕ½¹/ÿþƒ.bb XdÕ»¹W ÿþƒ¹/ÿþƒ.bb XdÕ¹¹/ÿþƒ.eb XdÕ.eb XdÕ.eb XdÕ.eb XdÕ.eb XdÕ.eb XdÕ.bb XdÕí¹/ÿþƒ.bb td ë¹/ÿþƒ.bb tdÕé2 ÿþƒ¹/ÿþƒ.bb tdÕç¹/ÿþƒ.bb tdÕå¹/ÿþƒ.bb tdÕã¹/ÿþƒ.bb tdÕá¹W ÿþƒ¹/ÿþƒ.bb tdÕß¹/ÿþƒ.eb tdÕ.eb tdÕ.eb tdÕ.eb tdÕ.eb tdÕ.eb tdÕ.eb tdÕ.eb tdÕ.eb tdÕ.eb tdÕ.bb tdÕú¹/ÿþƒ.bb tdÕø.eb tdÕ.eb tdÕ.eb tdÕ.eb �dR.ef ”e‚/:+üÿþ g"¼Âòÿþl"¼Âòÿþm"¼Âþÿþl"¼Âþÿþm%&Ãÿþl%&Ãÿþm"¼à ÿþl"¼à ÿþm%&Ãÿþl%&Ãÿþm"¼Ãÿþl"¼Ãÿþm%&Ãÿþl%&Ã.ÿþm"¼Ã4ÿþl"¼Ã4ÿþm%&Ã:ÿþl%&ÃFÿþm%&ÃXÿþl%&ÃXÿþm"¼Ãvÿþl"¼Ãvÿþm"¼Âÿþl"¼Âÿþm%&Èÿþl%&Èÿþm"¼ÃŽÿþl"¼ÃŽÿþm%&Ôÿþl%&Ôÿþm"¼Úÿþl"¼Úÿþm%&àÿþl%&òÿþm"¼øÿþl"¼øÿþm%&þÿþl%&ÃÊÿþm%&Ãâÿþl%&Ãâÿþm.textTäkÞÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ’�ÿþŒ’ ÿþŒ’ÀÿþŒ’ÙÿþŒ’òÿþŒ“ÿþŒ“.ÿþŒ“MÿþŒ“dÿþŒ“‚ÿþŒ“–ÿþŒ“°ÿþŒ“ÄÿþŒ“ÙÿþŒ“íÿþŒ”ÿþŒ”"ÿþŒ¨÷ÿþŒ©§ÿþŒ©»ÿþŒ©ÏÿþŒ©äÿþŒ©úÿþŒªÿþŒªGÿþŒª§ÿþŒªÌÿþŒªáÿþŒ« ÿþŒ«8ÿþŒº)ÿþŒºBÿþŒ/STä ôÂæ+�*óºUÿþŽ.bfTäeºoÿþ„º€\ÿþ‚º’ÿþƒ.bbTødä.bbTødÕº ÿþƒ.bbTødÓ.bbTødÑ.bbTød¢º¬ ÿþƒ.bbTød .ebTød.ebTød.bbU,dœ¾.bbU,dÕ¼.bbU,dÕº.bbU,dÕ¸.bbU,dÕ¶.bbU,dÕ´.bbU,dÕ².ebU,dÕ.ebU,dÕ.ebU,dÕ.ebU,dÕ.ebU,dÕ.ebU,dÕ.ebU<dÕ.bbU<d�Ï.bbUPd Í.bbUPdºËLt ÿþƒ.bbUPdºÉ.ebUPdº.ebUPdº.ebUtdº.ebUtdº.ebUtdº.ebUtdº.ebUtdº.bbU|dâ.bbU”d¬àº ÿþƒ.bbU”d¬Þ.ebU”d¬.ebU”d¬.ebU”d�.ebU”d�.efU˜eÙ/gUØ êÃj+ü*óº½ôÿþŽ.bfUØe-ºÙÿþ„ºåÿþ„args:R36ÿþ„.bbUðdC.bbUðd4º ÿþƒ.bbUðd2.bbUðd0.bbUðdLtÿþƒ.bbUðdÿ.ebUðd.ebUðd.bbV dœ.bbV dÕ.bbV dÕ.bbV dÕ.bbV dÕ.bbV dÕ.bbV dÕ.ebV dÕ.ebV dÕ.ebV dÕ.ebV dÕ.ebV dÕ.ebV dÕ.ebVdÕ.bbVd�..bbV0d ,.bbV0dº*Lt ÿþƒ.bbV0dº(.ebV0dº.ebV0dº.ebVXdº.ebVXdº.ebVXdº.ebVXdº.ebVXdº.bbV`dA.bbVxd¬?º ÿþƒ.bbVxd¬=.ebVxd¬.ebVxd¬.ebVxd€.ebVxd€.efV|eÙ/},‚ÿþ g"¼Äÿþl"¼Ä*ÿþm.textVÄkúÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ’�ÿþŒ’ ÿþŒ’ÀÿþŒ’ÙÿþŒ’òÿþŒ“ÿþŒ“.ÿþŒ“MÿþŒ“dÿþŒ“‚ÿþŒ“–ÿþŒ“°ÿþŒ“ÄÿþŒ“ÙÿþŒ“íÿþŒ”ÿþŒ”"ÿþŒ¨÷ÿþŒ©§ÿþŒ©»ÿþŒ©ÏÿþŒ©äÿþŒ©úÿþŒªÿþŒªGÿþŒª§ÿþŒªÌÿþŒºóÿþŒ» ÿþŒ/–VÄ …Ãô,x+ÿ»ÿþŽ.bfVÄe»Aÿþ„»_ÿþ„ap:R36ÿþ„»oÿþ„»‰8ÿþ�»–ÿþƒ.bbVÔd‰.bbVôd‡.bbVôd×…»¢ÿþƒflag:r-1 ÿþƒ.bbVôd׃.bbWdØ�.bbWdØ.bbWdÐ}»®ÿþƒ.bbWdÐ{.ebWdÐ.ebWdÐ.ebWdØ.ebWdØ.ebWdØ.ebWdØ.ebWdº.ebWdº.efWeØ/³WL rÄ<,‚+ÿ»¿ˆÿþŽ.bfWLe'»Úÿþ„»æTÿþ‚.efW„e,/É0ÿþ g"¼Åtÿþl"¼Åtÿþm/çÅÔÿþl/çÅÔÿþm/çÆ"ÿþl/çÆ(ÿþm%&Æ.ÿþl%&Æ.ÿþm%&Æ:ÿþl%&Æ:ÿþm"¼ÆFÿþl"¼Æ^ÿþm/çÆjÿþl/çÆpÿþm%&Ævÿþl%&Ævÿþm%&Æ‚ÿþl%&Æ‚ÿþm"¼ÆŽÿþl"¼Ʀÿþm/çƲÿþl/çÆèÿþm"¼Æîÿþl"¼Çÿþm/çÇ ÿþl/çÇ ÿþm"¼Çÿþl"¼ÇNÿþm/çÇTÿþl/çÇTÿþm%&ÇZÿþl%&ÇZÿþm/çÇ`ÿþl/çÇ`ÿþm"¼Çfÿþl"¼Çfÿþm/çÇlÿþl/çÇlÿþm"¼Çrÿþl"¼Çrÿþm/çÇxÿþl/çÇxÿþm"¼Ç~ÿþl"¼Ç„ÿþm/çÇŠÿþl/çÇŠÿþm"¼Ç�ÿþl"¼ÇØÿþm/çÇÞÿþl/çÇÞÿþm%&Çäÿþl%&Çäÿþm/çÇêÿþl/çÇêÿþm%&Çðÿþl%&Çðÿþm/çÇöÿþl/çÇöÿþm%&Çüÿþl%&Çüÿþm/çÈÿþl/çÈÿþm"¼Èÿþl"¼È ÿþm/çÈ&ÿþl/çÈ>ÿþm/çÈDÿþl/çÈDÿþm/çÈJÿþl/çÈnÿþm"¼Ètÿþl"¼ÈŒÿþm/çÈ’ÿþl/çÈ’ÿþm"¼Șÿþl"¼ÈÔÿþm/çÈÚÿþl/çÈÚÿþm%&Èàÿþl%&Èàÿþm/çÈæÿþl/çÈæÿþm%&Èìÿþl%&Èìÿþm/çÈòÿþl/çÈòÿþm"¼Èøÿþl"¼Èøÿþm/çÈþÿþl/çÈþÿþm"¼Éÿþl"¼Éÿþm/çÉ ÿþl/çÉ ÿþm"¼Éÿþl"¼Éÿþm/çÉÿþl/çÉÿþm"¼É"ÿþl"¼Éjÿþm/çÉpÿþl/çÉpÿþm%&Évÿþl%&Évÿþm/çÉ|ÿþl/çÉ|ÿþm%&É‚ÿþl%&É‚ÿþm/çɈÿþl/çɈÿþm%&ÉŽÿþl%&ÉŽÿþm/çÉ”ÿþl/çÉ”ÿþm"¼Éšÿþl"¼ɲÿþm/çɸÿþl/çÉÐÿþm/çÉÖÿþl/çÉÖÿþm/çÉÜÿþl/çÉèÿþm.textÞ€k?ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ’�ÿþŒ’ ÿþŒ’ÀÿþŒ’ÙÿþŒ’òÿþŒ“ÿþŒ“.ÿþŒ“MÿþŒ“dÿþŒ“‚ÿþŒ“–ÿþŒ“°ÿþŒ“ÄÿþŒ“ÙÿþŒ“íÿþŒ”ÿþŒ”"ÿþŒ¨÷ÿþŒ©§ÿþŒ©»ÿþŒ©ÏÿþŒ©äÿþŒ©úÿþŒªÿþŒªGÿþŒª§ÿþŒªÌÿþŒªáÿþŒ« ÿþŒ«8ÿþŒº)ÿþŒ»ôÿþŒ¼ÿþŒ¼ÿþŒ½lÿþŒ½~ÿþŒ½�ÿþŒ½¡ÿþŒ½³ÿþŒ½ÆÿþŒ½ØÿþŒ½ëÿþŒ½þÿþŒ¾ÿþŒ¾&ÿþŒ¾;ÿþŒ¾NÿþŒ¾cÿþŒ¾zÿþŒ¾’ÿþŒ¾ªÿþŒ¾ÃÿþŒ¾ÛÿþŒ¾ôÿþŒ¿ ÿþŒ¿'ÿþŒ¿<ÿþŒ¿SÿþŒ¿hÿþŒ¿~ÿþŒ¿–ÿþŒ¿¯ÿþŒ¿ÇÿþŒ¿áÿþŒ¿õÿþŒÀÿþŒÀÿþŒÀ,ÿþŒÀ>ÿþŒÀQÿþŒÀbÿþŒÀuÿþŒÀ‡ÿþŒÀ™ÿþŒÀ¬ÿþŒÀÀÿþŒÀÕÿþŒÀçÿþŒÀøÿþŒÁ ÿþŒÁÿþŒÁ.ÿþŒÁ?ÿþŒÁRÿþŒÁeÿþŒÁvÿþŒÁ‰ÿþŒÁ›ÿþŒÁ­ÿþŒÁÀÿþŒÁÓÿþŒÁçÿþŒÁøÿþŒÂ ÿþŒÂÿþŒÂ,ÿþŒÂ>ÿþŒÂNÿþŒÂ`ÿþŒÂrÿþŒÂ„ÿþŒÂ•ÿþŒÂ¦ÿþŒÂ·ÿþŒÂÇÿþŒÂ×ÿþŒÂöÿþŒÃÿþŒÃÿþŒÃ.ÿþŒÃBÿþŒÃXÿþŒÃnÿþŒÃÿþŒÄÿþŒÄ)ÿþŒÄ°ÿþŒÅ[ÿþŒÅsÿþŒÅŸÿþŒÅ½ÿþŒÅÜÿþŒÅðÿþŒÆÿþŒÇ×ÿþŒÉxÿþŒÊÔÿþŒÌïÿþŒÎ ÿþŒ0Þ€ ,Äl-³,ýÏ#ÿþŽ.bfÞ€e7Ï<hÿþ‚f:p275lÿþ‚.efàe<0ଠ–Äœ-½,ýÏH,ÿþŽ.bfà¬e@Ï\ÿþ„1™ÿþ„.efàüeB0%áD Èĺ-Ñ,ýÏhÄÿþŽ.bfáDeFÏ\ÿþ„buf:R37ÿþ„φÿþ„.bbáTd¨.bbá`d¦ch:r-1ÿþƒ.ebá¸d .ebáÌd.efáÌeT0=â  ŠÅ-Ý,ýÏ’ŒÿþŽ.bfâ eXÏ\ÿþ„ϲÿþ„n:R245ÿþ„ÏÁÿþƒ.efâPe\0W☠aÅ&-è,ýÏÍÿþŽ.bfâ˜e`Ï\ÿþ„Ïøÿþ„dir:R251ÿþ„.efâ°eg0|âü vÅ8-ñ,ýÐ|ÿþŽ.bfâüekÏ\ÿþ„.efã,en0’ãt ™ÅV.,ýÐ!ôÿþŽ.bfãterÏ\ÿþ„.bbã¬dÞ.bbã¬d7ÜÐ7ÿþƒ.bbã¬d7Ú.ebã¬d7.ebã¬d7.ebãÐdÆ.efãÔe70£ä ’Åž.,ýÐH�ÿþŽ.bfäe|Ï\ÿþ„c:R-1ÿþ„.efä`e�0¹ä¤ wÅÈ.),ýÐc$ÿþŽ.bfä¤e…Ï\ÿþ„s:R442ÿþ„n:R245ÿþ„.bbä°d.bbä°dþЀÿþƒ.bbä°dü.ebä°d.ebä°d.ebäàd.efäàeŒ0Ðå ®Åì.3,ýБœÿþŽ.bfåe�Ï\ ÿþ„b:R-1ÿþ„.efåŒeœÐ­ÿþ€Ð×ÿþ€Ðö0ÿþ€Ñÿþ€0æåÌ cÆ".R,ýÑ9LÿþŽ.bfåÌeŸÑRÿþ„1™ÿþ„Ñ^ÿþƒ.bbæLd!.bbæLd.ebæLd.ebæLd.bbæÄdá).bbæÄdá'.ebæØdç.ebæØdè.efæìeè0ùç0 cÆj.m,ýÑo°ÿþŽ.bfç0eŸÑˆÿþ„1™ÿþ„Ñ”ÿþƒ.bbç°d<.bbç°d:.ebç°d.ebç°d.bbè(dáD.bbè(dáB.ebè<dç.ebè<dè.efèPeè1 è” wƲ.u,ýÑ¥ ÿþŽ.bfè”eŸ.efèÔeŸ1é  ;ƾ.~,ýÑÌ ŒÿþŽ.bfé e*Ñéÿþ„.efée*12éH FÆÊ.‡,ýÑõ ÈÿþŽ.bféHe-Ñéÿþ„.eféXe-1Hé� €ÆÖ.�,ýÒ ÿþŽ.bfé�eŸ.eféÔeŸ1\ê 9Æâ/ ,ýÒ* �ÿþŽ.bfêe=ÒI0ÿþ‚�Ô4ÿþ‚__f:p2758ÿþ‚ÒU°ÿþ�.bbêœdƒthis:4480ÿþ�.bbêœd�this:4480ÿþ�this:4480ÿþ�.bbêœdthis:4480ÿþ�this:4480ÿþ�.ebêèdß.ebêèdß.ebêèdß.bbë$d³this:4480ÿþ�this:4480ÿþ�.bbë$d�this:4480ÿþ�this:4480ÿþ�.bbë$d›Òshÿþ�this:4480ÿþ�.bbë$d™this:4480ÿþ�.bbë$d—this:4480ÿþ�.ebë$d.ebë$d.ebë$d.ebë$d.bbëddz§this:4480ÿþ�.bbëddz¥this:4480ÿþ�.ebëddz.ebëddz.bbëddz±this:4480ÿþ�.bbëddz¯this:4480ÿþ�.ebëddz.ebëddz.ebëddz.bbìÜdÈthis:4480ÿþ�.bbìÜdÆthis:4480ÿþ�.bbìÜdÄÒ‹ÿþƒthis:4480ÿþ�.bbìÜdÂthis:4480ÿþ�.ebídÖ.ebídÖ.ebídÖ.ebídÖ.bbí¨d×this:4480ÿþ�.bbí¨dÕÒœ ÿþƒ.bbí¨dÓÒœ ÿþƒ.ebí¨d.ebí¨d.ebí¨d.bbî|dáàÒœ ÿþƒ.bbî|dáÞ.ebî˜dç.ebî˜dè.efî¸eè1uïL ;È,/,ýÒ¨ÌÿþŽ.bfïLe>ÑRÿþ„.efïTe>1Œïˆ GÈ8/#,ýÒÅÿþŽ.bfïˆe?Òåÿþ„.bbïŒd-ú.bbïŒd-ø.ebïŒd-.ebïŒd-.efï˜e?1§ïÐ WÈP/-,ýÒöPÿþŽ.bfïÐe@ÑRÿþ„_i:R-1ÿþ„.efïèe@1Âð( €È\/5,ýÓ¨ÿþŽ.bfð(eŸ.efðleŸ1Öð¨ 9Èh/©,ýÓ1(ÿþŽ.bfð¨eHÓP0ÿþ‚�Ô4ÿþ‚__f:p2758ÿþ‚Ó\°ÿþ�.bbñ0d)this:4500ÿþ�.bbñ0d'this:4500ÿþ�this:4500ÿþ�.bbñ0d%this:4500ÿþ�this:4500ÿþ�.ebñ|dß.ebñ|dß.ebñ|dß.bbñ¼dSthis:4500ÿþ�this:4500ÿþ�.bbñ¼dBthis:4500ÿþ�this:4500ÿþ�.bbñ¼d@this:4500ÿþ�.bbñ¼d>this:4500ÿþ�.bbñ¼d<this:4500ÿþ�.ebñ¼d.ebñ¼d.ebñ¼d.ebñ¼d.bbñüd1Gthis:4500ÿþ�.ebñüd1.bbñüd1Qthis:4500ÿþ�.bbñüd1Othis:4500ÿþ�.ebñüd1.ebñüd1.ebñüd1.bbótdhthis:4500ÿþ�.bbótdfthis:4500ÿþ�.bbótddÒœÿþƒthis:4500ÿþ�.bbótdbthis:4500ÿþ�.ebó¨dÖ.ebó¨dÖ.ebó¨dÖ.ebó¨dÖ.bbô@dwthis:4500ÿþ�.bbô@duÒœ ÿþƒ.bbô@dsÒœ ÿþƒ.ebô@d.ebô@d.ebô@d.bbõdá€Òœ ÿþƒ.bbõdá~.ebõ0dç.ebõ0dè.efõPeè1ïõä ;ɾ/²,ýÓzdÿþŽ.bfõäeIшÿþ„.efõìeI2ö  GÉÊ/Ã,ýÓ— ÿþŽ.bfö eJÓ·ÿþ„.bbö$d-š.bbö$d-˜.ebö$d-.ebö$d-.efö0eJ2!öh WÉâ/Í,ýÓÈèÿþŽ.bföheKшÿþ„_i:R-1ÿþ„.efö€eK2<q˜k+2< k0 œk  0 œ/Ñ 0& Ìk  0& Ì/Õ 0> Øk  0> Ø/Ù 0X äk  0X ä/Ý 0} ðk  0} ð/á 0“ Àk  0“ À/å 0¤ ¨k  0¤ ¨/é 0º ´k  0º ´/í .data ØkÌ œ Ø/ñÚ ð/ñÌ /ñ0ç „k  0ç „/ù 0ú lk  0ú l/ý 1 �k  1 �0 1I xk  1I x0 1à k  1à 0  ´ 5(  Ï 5HÓéÿþ€ â 5XÔÿþ€2O0×ÿþ g.text°kÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ’�ÿþŒ’ ÿþŒ’ÀÿþŒ’ÙÿþŒ’òÿþŒ“ÿþŒ“.ÿþŒ“MÿþŒ“dÿþŒ“‚ÿþŒ“–ÿþŒ“°ÿþŒ“ÄÿþŒ“ÙÿþŒ“íÿþŒ”ÿþŒ”"ÿþŒ¨÷ÿþŒÔ*ÿþŒÔCÿþŒÔUÿþŒÔfÿþŒÕ»ÿþŒÕÍÿþŒÕÞÿþŒÕðÿþŒÖÿþŒÖÿþŒÖ'ÿþŒÖ:ÿþŒÖMÿþŒÖaÿþŒÖuÿþŒÖŠÿþŒÖ�ÿþŒÖ²ÿþŒÖÉÿþŒÖáÿþŒÖùÿþŒ×ÿþŒ×*ÿþŒ×CÿþŒ×\ÿþŒ×vÿþŒ×‹ÿþŒ×¢ÿþŒ×·ÿþŒ×ÍÿþŒ×åÿþŒ×þÿþŒØÿþŒØ0ÿþŒØDÿþŒØWÿþŒØiÿþŒØ{ÿþŒØ�ÿþŒØ ÿþŒØ±ÿþŒØÄÿþŒØÖÿþŒØèÿþŒØûÿþŒÙÿþŒÙ$ÿþŒÙ6ÿþŒÙGÿþŒÙZÿþŒÙmÿþŒÙ}ÿþŒÙŽÿþŒÙ¡ÿþŒÙ´ÿþŒÙÅÿþŒÙØÿþŒÙêÿþŒÙüÿþŒÚÿþŒÚ"ÿþŒÚ6ÿþŒÚGÿþŒÚZÿþŒÚkÿþŒÚ{ÿþŒÚ�ÿþŒÚ�ÿþŒÚ¯ÿþŒÚÁÿþŒÚÓÿþŒÚäÿþŒÚõÿþŒÛÿþŒÛÿþŒÛ&ÿþŒÛEÿþŒÛVÿþŒÛjÿþŒÛ}ÿþŒÛ‘ÿþŒÛ§ÿþŒÛ½ÿþŒÛÎÿþŒÜeÿþŒÜxÿþŒÜÿÿþŒÝªÿþŒÝÂÿþŒÝîÿþŒÞ ÿþŒÞ+ÿþŒÞ?ÿþŒÞWÿþŒà&ÿþŒáÇÿþŒã#ÿþ€ã5Lÿþ€ãH˜ÿþ€ã[ÿþŒãoÿþŒãƒÿþŒã˜ÿþŒã®ÿþŒãÂÿþŒãûÿþŒä[ÿþŒä€ÿþŒä•ÿþŒä¾ÿþŒäìÿþŒåÿþŒæþäÿþ€ç4ÿþ€ç)„ÿþ€ç?Ôÿþ€.data �kÜ O �0Ç Z Ü0Ç f (0Ç # t0Ç 1 Ä0Ç @ 0Ç: d0Ç2l1¢ÿþ g.text°k¬ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ’�ÿþŒ’ ÿþŒ’ÀÿþŒ’ÙÿþŒ’òÿþŒ“ÿþŒ“.ÿþŒ“MÿþŒ“dÿþŒ“‚ÿþŒ“–ÿþŒ“°ÿþŒ“ÄÿþŒ“ÙÿþŒ“íÿþŒ”ÿþŒ”"ÿþŒ¨÷ÿþŒ©§ÿþŒ©»ÿþŒ©ÏÿþŒ©äÿþŒ©úÿþŒªÿþŒªGÿþŒª§ÿþŒªÌÿþŒºóÿþŒçRÿþŒçdÿþŒçuÿþŒèÊÿþŒèÜÿþŒèíÿþŒèÿÿþŒéÿþŒé$ÿþŒé6ÿþŒéIÿþŒé\ÿþŒépÿþŒé„ÿþŒé™ÿþŒé¬ÿþŒéÁÿþŒéØÿþŒéðÿþŒêÿþŒê!ÿþŒê9ÿþŒêRÿþŒêkÿþŒê…ÿþŒêšÿþŒê±ÿþŒêÆÿþŒêÜÿþŒêôÿþŒë ÿþŒë%ÿþŒë?ÿþŒëSÿþŒëfÿþŒëxÿþŒëŠÿþŒëœÿþŒë¯ÿþŒëÀÿþŒëÓÿþŒëåÿþŒë÷ÿþŒì ÿþŒìÿþŒì3ÿþŒìEÿþŒìVÿþŒìiÿþŒì|ÿþŒìŒÿþŒì�ÿþŒì°ÿþŒìÃÿþŒìÔÿþŒìçÿþŒìùÿþŒí ÿþŒíÿþŒí1ÿþŒíEÿþŒíVÿþŒíiÿþŒízÿþŒíŠÿþŒíœÿþŒí¬ÿþŒí¾ÿþŒíÐÿþŒíâÿþŒíóÿþŒîÿþŒîÿþŒî%ÿþŒî5ÿþŒîTÿþŒîeÿþŒîyÿþŒîŒÿþŒî ÿþŒî¶ÿþŒîÌÿþŒîÝÿþŒïtÿþŒï‡ÿþŒðÿþŒð¹ÿþŒðÑÿþŒðýÿþŒñÿþŒñ:ÿþŒñNÿþŒñfÿþŒó5ÿþŒôÖÿþŒ.bs1–�ö2ÿþ….es�ä•ÿþŒä¾ÿþŒäìÿþŒöEÿþŒ÷^ÿþŒøÿþŒù ÿþŒùÔÿþ€ùà(ÿþ€cin:G416Pÿþ€ùì€ÿþ€2‰° ¬Éî1–0ØùøÿþŽ.bf°eƒúÿþ„ú%ÿþƒ.ef$e—2¡ k.data (k¬cout (1˜cerr P1˜cin x1˜clog ¨1˜2³:dÿþ g"¼Ë’ÿþl"¼Ë’ÿþm"¼Ëžÿþl"¼Ëžÿþm"¼˰ÿþl"¼˰ÿþm"¼˼ÿþl"¼˼ÿþm"¼ËÈÿþl"¼Ëìÿþm"¼Ëøÿþl"¼Ëøÿþm"¼Ìôÿþl"¼Ìôÿþm"¼Íÿþl"¼Íÿþm"¼Îÿþl"¼Îÿþm"¼Î2ÿþl"¼Î2ÿþm"¼ÎPÿþl"¼ÎPÿþm"¼Î\ÿþl"¼Î\ÿþm2³Þÿþ2³Þÿþ"¼Îtÿþl"¼Ïvÿþm"¼Ï|ÿþl"¼Ï|ÿþm"¼Ï‚ÿþl"¼Ï”ÿþm"¼Ïšÿþl"¼Ïšÿþm"¼Ï ÿþl"¼ϲÿþm"¼ϸÿþl"¼ϸÿþm"¼Ͼÿþl"¼Ðÿþm"¼Ð ÿþl"¼Ð ÿþm"¼Ðÿþl"¼Ðÿþm"¼Ð$ÿþl"¼Ð$ÿþm"¼Ð*ÿþl"¼ÐNÿþm"¼ÐTÿþl"¼ÐTÿþm"¼ÐZÿþl"¼Ðrÿþm"¼Ðxÿþl"¼Ðxÿþm"¼Ð~ÿþl"¼Ð~ÿþm"¼Єÿþl"¼Єÿþm"¼Њÿþl"¼Њÿþm"¼Ð�ÿþl"¼Ð�ÿþm"¼Жÿþl"¼Ò ÿþm"¼Òÿþl"¼Òÿþm"¼Òÿþl"¼Ò"ÿþm"¼Ò(ÿþl"¼Ò(ÿþm"¼Ò.ÿþl"¼Ò:ÿþm"¼Ò@ÿþl"¼Ò@ÿþm"¼ÒFÿþl"¼Ò^ÿþm"¼Òdÿþl"¼Òdÿþm"¼Òjÿþl"¼Òúÿþm"¼Óÿþl"¼Óÿþm"¼Óÿþl"¼Óÿþm"¼Ó ÿþl"¼Ó ÿþm"¼Óÿþl"¼Ó$ÿþm"¼Ó*ÿþl"¼Ó*ÿþm"¼Ó0ÿþl"¼Ó®ÿþm"¼Ó´ÿþl"¼Ó´ÿþm"¼Óºÿþl"¼Óºÿþm"¼ÓÀÿþl"¼ÓÀÿþm"¼ÓÆÿþl"¼ÓÆÿþm"¼ÓÌÿþl"¼ÓÌÿþm"¼ÓÒÿþl"¼Ôÿþm"¼Ôÿþl"¼Ôÿþm"¼Ôÿþl"¼Ôÿþm"¼Ô ÿþl"¼Ô&ÿþm"¼Ô,ÿþl"¼Ô8ÿþm"¼Ô>ÿþl"¼ÔJÿþm"¼ÔPÿþl"¼ÔPÿþm"¼ÔVÿþl"¼ÔVÿþm"¼Ô\ÿþl"¼Ô\ÿþm"¼Ôbÿþl"¼Ôbÿþm"¼Ôhÿþl"¼Ôtÿþm"¼Ôzÿþl"¼Ô€ÿþm"¼Ô†ÿþl"¼Ôàÿþm"¼Ôæÿþl"¼Ôæÿþm"¼Ôìÿþl"¼Ôìÿþm"¼Ôòÿþl"¼Õÿþm"¼Õ"ÿþl"¼Õ"ÿþm"¼Õ(ÿþl"¼Õ:ÿþm"¼Õ@ÿþl"¼ÕXÿþm.textcìk.=ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒÿþŒ*ÿþŒ>ÿþŒRÿþŒgÿþŒ{ÿþŒ�ÿþŒ¥ÿþŒ»ÿþŒÎÿþŒâÿþŒöÿþŒÿþŒÿþŒ-ÿþŒ?ÿþŒRÿþŒfÿþŒxÿþŒŠÿþŒ ÿþŒµÿþŒÉÿþŒÜÿþŒîÿþŒÿþŒÿþŒ)ÿþŒAÿþŒVÿþŒÿþŒÿþŒ2ÿþŒ3ÿþŒ ÿþŒÿþŒ/ÿþŒCÿþŒXÿþŒú5ÿþŒûhÿþŒû›ÿþŒûÐÿþŒüÿþŒügÿþŒü‹ÿþŒýÿþŒ$ÿþŒ8ÿþŒ]ÿþŒ `ÿþŒÆÿþŒèÿþŒ ÿþŒ%ÿþŒ@ÿþŒaÿþŒ‚ÿþŒ¤ÿþŒ¼ÿþŒÝÿþŒòÿþŒ ÿþŒ"ÿþŒ8ÿþŒMÿþŒcÿþŒ‚ÿþŒ%rÿþŒ&"ÿþŒ&3ÿþŒ&EÿþŒ&WÿþŒ&jÿþŒ&|ÿþŒ&�ÿþŒ&¢ÿþŒ&¶ÿþŒ&ÊÿþŒ&ßÿþŒ&òÿþŒ'ÿþŒ'ÿþŒ'6ÿþŒ'NÿþŒ'gÿþŒ'ÿþŒ'˜ÿþŒ'±ÿþŒ'ËÿþŒ'àÿþŒ'÷ÿþŒ( ÿþŒ("ÿþŒ(:ÿþŒ(SÿþŒ(kÿþŒ(…ÿþŒ(™ÿþŒ(¬ÿþŒ(½ÿþŒ(ÏÿþŒ(áÿþŒ(óÿþŒ)ÿþŒ)ÿþŒ))ÿþŒ)<ÿþŒ)NÿþŒ)`ÿþŒ)sÿþŒ)‡ÿþŒ)œÿþŒ)®ÿþŒ)¿ÿþŒ)ÒÿþŒ)åÿþŒ)õÿþŒ*ÿþŒ*ÿþŒ*,ÿþŒ*=ÿþŒ*PÿþŒ*bÿþŒ*tÿþŒ*‡ÿþŒ*šÿþŒ*®ÿþŒ*¿ÿþŒ*ÒÿþŒ*ãÿþŒ*óÿþŒ+ÿþŒ+ÿþŒ+'ÿþŒ+9ÿþŒ+KÿþŒ+\ÿþŒ+mÿþŒ+~ÿþŒ+ŽÿþŒ+žÿþŒ+½ÿþŒ+ÎÿþŒ+âÿþŒ+õÿþŒ, ÿþŒ,ÿþŒ,5ÿþŒ,FÿþŒ,ÝÿþŒ,ðÿþŒ-wÿþŒ."ÿþŒ.:ÿþŒ.fÿþŒ.„ÿþŒ.£ÿþŒ.·ÿþŒ.ÏÿþŒ0žÿþŒ2?ÿþŒ3›ÿþŒ3´ÿþŒ2Ïcì NÊx2å2/3ÇÿþŽ.bfcìe'this:R80ÿþ„.efde'2åd< NÊ„2î2/3ãPÿþŽ.bfd<e)this:R80ÿþ„.efdPe)2ûdŒ XÊ�2÷2/3ÿ ÿþŽ.bfdŒe,this:R80ÿþ„.efd e,3dä VÊœ32/4$øÿþŽ.bfdäe/this:R80ÿþ„.efdøe/39e< wʨ3 2/4HPÿþŽ.bfe<e7sb:R80ÿþ„c:R-1ÿþ„.efete83Te´ ;ʺ32/4hÈÿþŽ.bfe´e<this:R80ÿþ„.efe¼e<3keð KÊÆ32/4„ÿþŽ.bfeðe?this:R80ÿþ„.effe?3~f< ?ÊÒ3%2/4œPÿþŽ.bff<eBthis:R80ÿþ„.effDeB3•f| TÊÞ302/4¸�ÿþŽ.bff|eEthis:R80ÿþ„4Õÿþ„n:R76ÿþ„.eff�eE3­fÐ OÊê3;2/4âäÿþŽ.bffÐeHthis:R80ÿþ„s:R37ÿþ„n:R76ÿþ„.effäeH3Äg  ÅÊö3O2/4þ4ÿþŽ.bfg eKthis:R80ÿþ„n:R-1ÿþ„more:r-1ÿþƒ.bbgDd$.bbgDd"»– ÿþƒ.ebgDd.ebgœd .efg eX3Ùgè 6ËD3X2/5üÿþŽ.bfgèe\this:R80ÿþ„.efgðe]3ëh  PËV3b2/5/4ÿþŽ.bfh eathis:R80ÿþ„c:R-1ÿþ„.efh4eb4hp CËh3¤2/5L„ÿþŽ.bfhpefthis:R80ÿþ„p:R37ÿþ„len:R-1ÿþ„.bbhÐdf.bbhèdTthis:r80ÿþƒ.bbhèdyRthis:r80ÿþƒthis:r80ÿþƒ.bbhèdyPthis:r80ÿþƒ.ebhèdy.ebhèdy.ebhèdy.bbiddthis:r80ÿþƒ.bbidybthis:r80ÿþƒthis:r80ÿþƒ.bbidy`this:r80ÿþƒ.ebidy.ebidy.ebi4d.ebi4d.bbi4dApthis:r80ÿþƒ.bbi4dAnthis:r80ÿþƒ.ebi4dA.ebi4dA.bbi4dAythis:r80ÿþƒ.bbi4dAw.ebi\dD.ebi\dD.efiley4i´ {Ì3¯2/5hÈÿþŽ.bfi´ewthis:R80ÿþ„pos:R75ÿþ„mode:R-1ÿþ„.efiôex41j0 PÌ"3º2/5„DÿþŽ.bfj0e|this:R80ÿþ„pos:R75ÿþ„mode:R-1ÿþ„.efjDe}4Ij€ SÌ43Æ2/5¡”ÿþŽ.bfj€e�this:R80ÿþ„b:R37ÿþ„eb:R37ÿþ„a:R-1ÿþ„.efj”e�4`jÔ TÌ@3Ï2/5¾èÿþŽ.bfjÔeƒthis:R80ÿþ„.efjèeƒ4xk( TÌL3Ø2/5Û<ÿþŽ.bfk(e…this:R80ÿþ„.efk<e…4�k| oÌX3â2/5ù�ÿþŽ.bfk|eÑthis:R80ÿþ„6 ÿþ„.efk¬eÕ4Ÿkì ‡Ìv3ì2/6ÿþŽ.bfkìeÜthis:R80ÿþ„1™ÿþ„.efl4eÝ4®lt NÌ”3õ2/6.ˆÿþŽ.bflteæthis:R80ÿþ„.efl|eç4ÔlÄ _̦42/6YØÿþŽ.bflÄeìthis:R80ÿþ„o:R74ÿþ„d:R136ÿþ„m:R-1ÿþ„.eflØeí4ûm$ P̸4 2/6… 8ÿþŽ.bfm$eñthis:R80ÿþ„c:R-2ÿþ„.efm8eò5mt MÌÊ42/6¢ ˆÿþŽ.bfmteöthis:R80ÿþ„.efmˆe÷5(mÄ xÌÜ4B2/6¼ ØÿþŽ.bfmÄethis:R80 ÿþ„.bbmÐd.bbmàd.bbmàd6Ù ÿþƒ.bbmàdþ6é ÿþƒ.ebmàd.ebmàd.bbmàd 6é ÿþƒ.bbmàd6é ÿþƒ.ebmàd.ebmàd.bbmàd6é ÿþƒ.bbmàd.ebmàd.ebmàd.ebmèd.ebmèd.efne05@n< EÍ 4L2/6õ PÿþŽ.bfn<e this:R80ÿþ„i:R-1ÿþ„.efnLe5Yn„ KÍ$4T2/7 ˜ÿþŽ.bfn„e.efn˜e5pnÐ XÍ04\2/7/ äÿþŽ.bfnÐe.efnäe5”o( HÍ<4e2/7Y <ÿþŽ.bfo(ethis:R80ÿþ„.efo<e5¬op =Í`4n2/7v „ÿþŽ.bfope this:R80ÿþ„.efoxe!5Åo° ?Ír4w2/7” ÄÿþŽ.bfo°e%this:R80ÿþ„.efo¸e&5àoð JÍ„4€2/7´ ÿþŽ.bfoðe*this:R80ÿþ„.efoøe+6p< ;Í–4‰2/7ß PÿþŽ.bfp<e.this:R80ÿþ„.efpDe.6px uÍ¢4“2/7û ŒÿþŽ.bfpxe<8ÿþ„sb:R80ÿþ„.efp e=6:pð Í´4�2/8* ÿþŽ.bfpðeA8ÿþ„1™ÿþ„.efq,eB6Mqp ^ÍÆ4§2/8C „ÿþŽ.bfqpeH8ÿþ„8nÿþ„.efq„eI6sqÐ OÍØ4°2/8€ äÿþŽ.bfqÐeM8ÿþ„.efqäeN6Šr  ^Íê4»2/8œ4ÿþŽ.bfr eRthis:R80ÿþ„8Çÿþ„8Óÿþ„.efr4eS6°r€ TÍü4Ä2/8ß”ÿþŽ.bfr€eWthis:R80ÿþ„.efr”eX6ÌrÔ @Î4Õ2/9èÿþŽ.bfrÔe[9ÿþ„.bbrØdåª.bbrØdå¨.ebrØdå.ebrØdå.efrèe[6Üs @Î&4æ2/9"(ÿþŽ.bfse\9ÿþ„.bbsdå».bbsdå¹.ebsdå.ebsdå.efs(e\6ìsT WÎ>4ÿ2/97hÿþŽ.bfsTe]9ÿþ„.bbsXdÌ.bbsXdÊ.ebsXd.ebsXd.bbshdåÔ.bbshdåÒ.ebshdå.ebshdå.efs€e_9KÿþŒ9íÿþ€: ˜ÿþ€:#0ÿþ€:>Hÿþ€ps¬ k{Îh52/:OÀÿþŽ.bfs¬el:€ÿþ„:•ÿþ„.bbsÐdç.ebsÐd.bbsÐdiï.bbsÐdií.ebsÐdi.ebsØdi.efsØel:¦ÿþ€:¼ÿþ€:Ðÿþ€:õÿþ€6ût( rÎt5&2/; <ÿþŽ.bft(ek.efthek7tœ 0΀5/2/;,°ÿþŽ.bftœe³;=ÿþ„.eft¤e³7tÌ @ÎŒ5:2/;NàÿþŽ.bftÌe´9ÿþ„val:R82ÿþ„save:r82ÿþƒ.eftÜe´7%u  1Θ5C2/;g ÿþŽ.bfu e·;yÿþ„.efue·72u@ 9Τ5M2/;…TÿþŽ.bfu@e¹9ÿþ„newf:R-3ÿþ„.efuPe¹7?u| 2ΰ5V2/;—�ÿþŽ.bfu|eº;yÿþ„.efu„eº7Mu° ;μ5a2/;ªÄÿþŽ.bfu°e»9ÿþ„;¾ÿþ„;Ìÿþƒ.efuÀe¼7\uì 6ÎÎ5j2/;ÚÿþŽ.bfuìe½;yÿþ„.efuôe½7nv$ BÎÚ5t2/;ñ8ÿþŽ.bfv$e¾9ÿþ„newp:R-1ÿþ„.efv8eÀ7€vh >Îò52/<|ÿþŽ.bfvheÁ9 ÿþ„val:R77ÿþ„<ÿþƒ.efv|eÃ7Žv¨ HÏ 5‹2/<)¼ÿþŽ.bfv¨eÄ9 ÿþ„val:R77ÿþ„mask:R77ÿþ„<ÿþƒ.efvÄeÆ7žvð @Ï(5–2/<>ÿþŽ.bfvðeÇ9 ÿþ„mask:R77ÿþ„<ÿþƒ.efweÉ7®w0 2Ï@5Ÿ2/y| 4Ïô612/=1�ÿþŽ.bfy|eÝ;yÿþ„.efy„eÝ8Ny° ?Ð6B2/=FÄÿþŽ.bfy°eÞ;yÿþ„.bby´dÛ.bby´dÛ.eby´dÛ.eby´dÛ.efyÄeÞ8]yð 5Ð6S2/=YÿþŽ.bfyðeß;yÿþ„.bbyôdÛ(.bbyôdÛ&.ebyôdÛ.ebyôdÛ.efyüeß8jz( 7Ð06\2/=k<ÿþŽ.bfz(eà;yÿþ„.efz0eà8}z` 7Ð<6v2/=ƒtÿþŽ.bfz`eá9ÿþ„=œÿþ„.bbzhdK.bbzhdI.bbzhdÐG.bbzhdÐE.ebzhdÐ.ebzhdÐ.ebzhd.ebzhd.efzheã8�z˜ 6Ð`62/=©¬ÿþŽ.bfz˜eå;yÿþ„.efz eå8žzÐ TÐl6¤2/=¼äÿþŽ.bfzÐeæ9ÿþ„_s:R80ÿþ„_old:r80 ÿþƒ.bbzÔdy=Ùÿþƒ.bbzÔdw.bbzÔdu.bbzÔds.bbzÔdq<¶ÿþƒ.bbzÔdo.ebzÔd.ebzÔd.ebzÔd.ebzÔd.ebzÔd.ebzÔd.efzðeç8¶{$ OМ6¬2/=å8ÿþŽ.bf{$eê.ef{<eê8Í{t FШ6¶2/>ˆÿþŽ.bf{teó9ÿþ„flag:R89ÿþ„.ef{„eó8ç{¼ /д6¿2/>"ÐÿþŽ.bf{¼eýthis:R98ÿþ„.ef{Àeý8ö{ì AÐÀ6É2/>6ÿþŽ.bf{ìe8ÿþ„>Yÿþ„.ef{ôe9|0 <ÐÌ6Ò2/>fDÿþŽ.bf|0e8ÿþ„.ef|8e9+|l xÐØ6Ú2/>ƒ€ÿþŽ.bf|lek.ef|¬ek9;|ä 9Ðä6ã2/>™øÿþŽ.bf|äe$this:R80ÿþ„.ef|ìe$9P}  8Ðð6ì2/>´4ÿþŽ.bf} e'this:R80ÿþ„.ef}(e'9d}X OÐü6õ2/>ÎlÿþŽ.bf}Xe+>æÿþ„.ef}te+9w}¨ ;Ñ6þ2/>ò¼ÿþŽ.bf}¨e,>æÿþ„.ef}°e,9Š}ä PÑ72/? øÿþŽ.bf}äe.>æÿþ„.ef~e.9ž~4 8Ñ 72/?#HÿþŽ.bf~4e/>æÿþ„.ef~<e/9²~l <Ñ,72/?<€ÿþŽ.bf~le0>æÿþ„.ef~te09Æ~¨ PÑ87"2/?U¼ÿþŽ.bf~¨e2>æÿþ„.ef~Äe29Ú~ø ;ÑD7+2/?n ÿþŽ.bf~øe3>æÿþ„.efe39í4 7ÑP742/?†HÿþŽ.bf4e4>æÿþ„.ef<e4:l ?Ñ\7=2/?ž€ÿþŽ.bfle5>æÿþ„.ef|e5:¬ HÑh7G2/?¶ÀÿþŽ.bf¬e6this:R80ÿþ„c:R-2ÿþ„.efÀe6:+ô 8Ñt7P2/?ÔÿþŽ.bfôe7this:R80ÿþ„.efüe7:?€, AÑ€7[2/?í@ÿþŽ.bf€,e8this:R80ÿþ„f:R-1ÿþ„fl:r-1ÿþƒ.ef€<e8:T€p DÑŒ7e2/@„ÿþŽ.bf€pe9this:R80ÿþ„f:R-1ÿþ„.ef€€e9:l€´ Mј7p2/@%ÈÿþŽ.bf€´e;this:R80ÿþ„f:R-1ÿþ„mask:R-1ÿþ„.ef€Ìe;:…� \Ѥ7z2/@DÿþŽ.bf�e=this:R80ÿþ„n:R-1ÿþ„.ef�0e=:™�` @Ѱ7„2/@^tÿþŽ.bf�`e>this:R80ÿþ„n:R-1ÿþ„.ef�pe>:­�  FѼ7�2/@x´ÿþŽ.bf� eAthis:R80ÿþ„p:R37ÿþ„ep:R37ÿþ„.ef�°eA:Ã�è ›ÑÈ7›2/@”üÿþŽ.bf�èeBthis:R80ÿþ„eb:R37ÿþ„g:R37ÿþ„eg:R37ÿþ„.ef‚4eD:Ú‚„ :Ñì7¤2/@±˜ÿþŽ.bf‚„eEthis:R80ÿþ„.ef‚ŒeE:ð‚À CÑø7­2/@ÌÔÿþŽ.bf‚ÀeGthis:R80ÿþ„.ef‚ÌeG;ƒ KÒ7¿2/@èÿþŽ.bfƒeIthis:R80ÿþ„.bbƒd”this:r80ÿþƒ.bbƒd’.ebƒd.ebƒd.efƒ eI;ƒP OÒ7Ñ2/AdÿþŽ.bfƒPeKthis:R80ÿþ„.bbƒTd¦this:r80ÿþƒ.bbƒTd¤.ebƒTd.ebƒTd.efƒleK;-ƒ  KÒ47ã2/A´ÿþŽ.bfƒ eMthis:R80ÿþ„.bbƒ¤d¸this:r80ÿþƒ.bbƒ¤d¶.ebƒ¤d.ebƒ¤d.efƒ¼eM;@ƒì 6ÒL7ì2/A0 ÿþŽ.bfƒìeNthis:R80ÿþ„.efƒôeN;R„$ KÒX7þ2/AG 8ÿþŽ.bf„$ePthis:R80ÿþ„.bb„(dÓthis:r80ÿþƒ.bb„(dÑ.eb„(d.eb„(d.ef„@eP;e„p 7Òp82/A_ „ÿþŽ.bf„peQthis:R80ÿþ„.ef„xeQ;x„¨ 7Ò|82/Aw ¼ÿþŽ.bf„¨eRthis:R80ÿþ„.ef„°eR;‹„à EÒˆ82/A� ôÿþŽ.bf„àeSthis:R80ÿþ„.ef„ðeS;¤…( FÒ”8"2/A­!<ÿþŽ.bf…(eTthis:R80ÿþ„.ef…8eT;¾…p >Ò 8+2/AÌ!„ÿþŽ.bf…peWthis:R80ÿþ„.ef…|eW;Ô…° aÒ¬872/Aç!ÄÿþŽ.bf…°ejthis:R80ÿþ„o:R74ÿþ„d:R136ÿþ„mode:R-1ÿþ„.ef…Äej;ý† RÒ¸8B2/B"(ÿþŽ.bf†elthis:R80ÿþ„pos:R75ÿþ„mode:R-1ÿþ„.ef†(el<†h DÒÄ8K2/B4"|ÿþŽ.bf†hevthis:R80ÿþ„.ef†tev6éÿþƒ6éÿþƒ.bbŽd<6éÿþƒ6éÿþƒ.ebŽ,dÆ.ebŽ,dÆ.bbŽ,d.I6éÿþƒ6éÿþƒ.bbŽ,d.G6éÿþƒ.ebŽHd..ebŽHd..ebŽHdÅ.ebŽHdÅ.bbŽPd+W6éÿþƒ.bbŽPd+U6éÿþƒ.ebŽdd+.ebŽdd+.bbŽhd,`6éÿþƒ.bbŽhd,^.ebŽhd,.ebŽhd,.efŽleÆ=ÖŽœ LÔn9¦2/D–*°ÿþŽ.bfŽœeÈDfÿþ„.bbŽ d{this:r80ÿþƒ.bbŽ dy.bbŽ dwthis:r80ÿþƒ.bbŽ du.ebŽ d.ebŽ d.ebޏdÈ.ebޏdÈ.efޏeÈ=êŽè ŒÔŒ9±2/D¯*üÿþŽ.bfŽèeÕ9ÿþ„sb:R80ÿþ„DÕÿþ„.ef�4eÝ> �t ”ÔÚ9Ç2/Dâ+ˆÿþŽ.bf�teß9ÿþ„sb:R80ÿþ„DÕÿþ„.bb�xdœ=Ùÿþƒsb:r80ÿþƒEÿþƒ.bb�xdš.eb�˜dß.eb�˜dß.ef�Ðeß._._3ios� …Õ@9Ñ2/E,ÿþŽ.bf�eá9ÿþ„1™ÿþ„.ef�Peç>&�� koÕ^9Ù2/E ,¤ÿþŽ.bf��ek.ef�Äek>9‘ kkÕj9á2/E9-ÿþŽ.bf‘ek.ef‘4ek>H‘l ]Õv9é2/EN-€ÿþŽ.bf‘lek.ef‘ˆek>i‘Ì ]Õ‚9ñ2/Eu-àÿþŽ.bf‘Ìek.ef‘èek>ŠqÈk:3U lk  3U l9ó 3l  k  3l  9÷ 3 `k  3 `9û 3– xk  3– x9ÿ 3® „k  3® „: 3Ú ¨k  3Ú ¨: 3ì ¬k  3ì ¬:  4 œk  4 œ: 4 Ük  4 Ü: 4a ´k  4a ´: 4  Tk  4  T: 4¯ �k  4¯ �: 5• ðk  5• ð:# 5­ Àk  5­ À:' 5Æ Ìk  5Æ Ì:+ 5á Øk  5á Ø:/ 6 äk  6 ä:3 .data pkP“ p:7 õ :7_vt.3ios  :7>› ¸:7__tf3ios ük  __tf3ios ü:A 9, Hk  9, H:E =} 4k  =} 4:I _._3ios k  _._3ios :M >I (k  >I (:Q >j k  >j :U __ti3ios 4È Eœÿþ€ r 5p   58   5h � 5€>¥:oÿþg.textÝÔkZ>¾ÝÔk:e>¿ pk  .data Ðk  Ð:k>Ô;Éÿþg.textb0k¼ÿþŒ2ÿþŒMÿþŒiÿþŒE¹ÿþŒFŽÿþŒFñÿþŒH ÿþŒHeÿþŒK:ÿþŒKRÿþŒKôÿþŒL ÿþŒLÿþŒL/ÿþŒLYÿþŒLhÿþŒL“ÿþŒL£ÿþŒL³ÿþŒLÄÿþŒLÕÿþŒLçÿþŒLøÿþŒM ÿþŒMÿþŒM/ÿþŒMAÿþŒMTÿþŒMfÿþŒMzÿþŒM�ÿþŒM§ÿþŒM¾ÿþŒMÖÿþŒMíÿþŒNÿþŒNÿþŒN6ÿþŒNIÿþŒN]ÿþŒNrÿþŒNˆÿþŒNžÿþŒN´ÿþŒNËÿþŒNâÿþŒNøÿþŒOÿþŒO#ÿþŒO9ÿþŒOMÿþŒObÿþŒOyÿþŒO‘ÿþŒO¨ÿþŒOÁÿþŒOÏÿþŒOÞÿþŒOíÿþŒOýÿþŒP ÿþŒPÿþŒP0ÿþŒPCÿþŒPTÿþŒPgÿþŒPyÿþŒP�ÿþŒP ÿþŒP²ÿþŒPÂÿþŒPÕÿþŒPåÿþŒPöÿþŒQÿþŒQÿþŒQ)ÿþŒQ;ÿþŒQLÿþŒQ]ÿþŒQnÿþŒQ�ÿþŒQ”ÿþŒQ©ÿþŒQ¸ÿþŒQÉÿþŒQÚÿþŒQéÿþŒQøÿþŒR ÿþŒRÿþŒR*ÿþŒR<ÿþŒRMÿþŒR^ÿþŒRoÿþŒR€ÿþŒR“ÿþŒR«ÿþŒR¾ÿþŒRÏÿþŒRßÿþŒRòÿþŒSÿþŒSÿþŒS&ÿþŒS8ÿþŒSIÿþŒSYÿþŒSiÿþŒSzÿþŒSŠÿþŒSšÿþŒS¹ÿþŒSÊÿþŒSÞÿþŒSñÿþŒTÿþŒTÿþŒT/ÿþŒT@ÿþŒTOÿþŒTdÿþŒTzÿþŒTŽÿþŒTÁÿþŒTÕÿþŒTèÿþŒUÿþŒU%ÿþŒUjÿþŒU�ÿþŒU™ÿþŒUÅÿþŒUãÿþŒVÿþŒV"ÿþŒV6ÿþŒVNÿþŒWŒÿþŒXœÿþŒYbÿþŒ[ ÿþŒ[™ÿþŒ[¬ÿþŒ[½ÿþŒ[ÒÿþŒ[äÿþŒ[úÿþŒ\ ÿþŒ\ÿþŒ\+ÿþŒ\<ÿþŒ\LÿþŒ\_ÿþŒ\’ÿþŒ\¦ÿþŒ\éÿþŒ\þÿþŒ]ÿþŒ]#ÿþŒ]7ÿþŒ]IÿþŒ]YÿþŒ]jÿþŒ]yÿþŒ]‰ÿþŒ]¾ÿþŒ]ÑÿþŒ]âÿþŒ]ôÿþŒ^ÿþŒ^ÿþŒ^@ÿþŒ^PÿþŒ^bÿþŒ^“ÿþŒ^°ÿþŒ_ÿþŒ_RÿþŒ_cÿþŒ_�ÿþŒ_¥ÿþŒ_ßÿþŒ`0ÿþŒ`GÿþŒ`[ÿþŒ`oÿþŒ`„ÿþŒ`šÿþŒ`²ÿþŒ`æÿþŒa$ÿþŒa]ÿþŒaoÿþŒa§ÿþŒaéÿþŒb2ÿþŒbNÿþŒb�ÿþŒbŸÿþŒbÖÿþŒbêÿþŒc$ÿþŒdsÿþŒeÓÿþŒeêÿþŒf!ÿþŒfýÿþŒg�ÿþŒiþÿþŒk*ÿþŒk¦ÿþŒkÓÿþŒl<ÿþŒl£ÿþŒl¹ÿþŒmkÿþŒm�ÿþŒm¸ÿþŒn_ÿþŒn�ÿþŒoÿþŒo8ÿþŒoLÿþŒo^ÿþŒoÂÿþŒp›ÿþŒrÿþŒr®ÿþŒs·ÿþŒt_ÿþŒtàÿþŒuLÿþŒuÉÿþŒvKÿþŒx;ÿþŒxLÿþŒx§ÿþŒx¼ÿþŒyçÿþŒyøÿþŒ{ ÿþŒ{ÿþŒ|àÿþŒ|ñÿþŒ}ŠÿþŒ}›ÿþŒ~1ÿþŒ~BÿþŒgÿþŒxÿþŒÔÿþŒåÿþŒ�ÿþŒ�"ÿþŒ‚ÿþŒ‚PÿþŒ‚ËÿþŒ…ÿþŒ…;ÿþŒ…ŽÿþŒ†>ÿþŒ†tÿþŒ†ÆÿþŒ‡sÿþŒ‡£ÿþŒ‡òÿþŒ‰œÿþŒ‰ÌÿþŒŠÿþŒŠOÿþŒŠŒÿþŒŠÒÿþŒ‹ÿþŒŒKÿþŒŒ�ÿþŒŒÓÿþŒ� ÿþŒŽÿþŒŽKÿþŒŽ›ÿþŒ�!ÿþŒ�9ÿþŒ�XÿþŒ�©ÿþŒ�ÝÿþŒ‘ÚÿþŒ’ÿþŒ’JÿþŒ’]ÿþŒ”ÿþŒ•ïÿþŒ—ƒÿþŒ˜ÿþŒ˜&ÿþŒ˜7ÿþŒ˜IÿþŒ˜[ÿþŒ˜nÿþŒ˜€ÿþŒ˜’ÿþŒ˜¦ÿþŒ˜ÖÿþŒ™ÿþŒ>èb0 ›ÕŽ;¬:p™"ÿþŽ.bfb0e.efb”e™;ÿþ€>ûbÌ ËÕ”;µ:p™VœÿþŽ.bfbÌe.efc\e.__mainc˜ TÕš;½:p™ohÿþŽ.bfc˜e.efcÄe? `k �  k  �  ;¿ __main k  __main ;à ? /lk >Ô=�ÿþg.textÑk:ÿþŒ2ÿþŒMÿþŒiÿþŒE¹ÿþŒFŽÿþŒFñÿþŒH ÿþŒHeÿþŒK:ÿþŒKRÿþŒKôÿþŒL ÿþŒLÿþŒL/ÿþŒLYÿþŒLhÿþŒL“ÿþŒL£ÿþŒL³ÿþŒLÄÿþŒLÕÿþŒLçÿþŒLøÿþŒM ÿþŒMÿþŒM/ÿþŒMAÿþŒMTÿþŒMfÿþŒMzÿþŒM�ÿþŒM§ÿþŒM¾ÿþŒMÖÿþŒMíÿþŒNÿþŒNÿþŒN6ÿþŒNIÿþŒN]ÿþŒNrÿþŒNˆÿþŒNžÿþŒN´ÿþŒNËÿþŒNâÿþŒNøÿþŒOÿþŒO#ÿþŒO9ÿþŒOMÿþŒObÿþŒOyÿþŒO‘ÿþŒO¨ÿþŒOÁÿþŒOÏÿþŒOÞÿþŒOíÿþŒOýÿþŒP ÿþŒPÿþŒP0ÿþŒPCÿþŒPTÿþŒPgÿþŒPyÿþŒP�ÿþŒP ÿþŒP²ÿþŒPÂÿþŒPÕÿþŒPåÿþŒPöÿþŒQÿþŒQÿþŒQ)ÿþŒQ;ÿþŒQLÿþŒQ]ÿþŒQnÿþŒQ�ÿþŒQ”ÿþŒQ©ÿþŒQ¸ÿþŒQÉÿþŒQÚÿþŒQéÿþŒQøÿþŒR ÿþŒRÿþŒR*ÿþŒR<ÿþŒRMÿþŒR^ÿþŒRoÿþŒR€ÿþŒR“ÿþŒR«ÿþŒR¾ÿþŒRÏÿþŒRßÿþŒRòÿþŒSÿþŒSÿþŒS&ÿþŒS8ÿþŒSIÿþŒSYÿþŒSiÿþŒSzÿþŒSŠÿþŒSšÿþŒS¹ÿþŒSÊÿþŒSÞÿþŒSñÿþŒTÿþŒTÿþŒT/ÿþŒT@ÿþŒTOÿþŒTdÿþŒTzÿþŒTŽÿþŒTÁÿþŒTÕÿþŒTèÿþŒUÿþŒU%ÿþŒUjÿþŒU�ÿþŒU™ÿþŒUÅÿþŒUãÿþŒVÿþŒV"ÿþŒV6ÿþŒVNÿþŒWŒÿþŒXœÿþŒYbÿþŒ[ ÿþŒ[™ÿþŒ[¬ÿþŒ[½ÿþŒ[ÒÿþŒ[äÿþŒ[úÿþŒ\ ÿþŒ\ÿþŒ\+ÿþŒ\<ÿþŒ\LÿþŒ\_ÿþŒ\’ÿþŒ\¦ÿþŒ\éÿþŒ\þÿþŒ]ÿþŒ]#ÿþŒ]7ÿþŒ]IÿþŒ]YÿþŒ]jÿþŒ]yÿþŒ]‰ÿþŒ]¾ÿþŒ]ÑÿþŒ]âÿþŒ]ôÿþŒ^ÿþŒ^ÿþŒ^@ÿþŒ^PÿþŒ^bÿþŒ^“ÿþŒ^°ÿþŒ_ÿþŒ_RÿþŒ_cÿþŒ_�ÿþŒ_¥ÿþŒ_ßÿþŒ`0ÿþŒ`GÿþŒ`[ÿþŒ`oÿþŒ`„ÿþŒ`šÿþŒ`²ÿþŒ`æÿþŒa$ÿþŒa]ÿþŒaoÿþŒa§ÿþŒaéÿþŒb2ÿþŒbNÿþŒb�ÿþŒbŸÿþŒbÖÿþŒbêÿþŒc$ÿþŒdsÿþŒeÓÿþŒeêÿþŒf!ÿþŒfýÿþŒg�ÿþŒiþÿþŒk*ÿþŒk¦ÿþŒkÓÿþŒl<ÿþŒl£ÿþŒl¹ÿþŒmkÿþŒm�ÿþŒm¸ÿþŒn_ÿþŒn�ÿþŒoÿþŒo8ÿþŒoLÿþŒo^ÿþŒoÂÿþŒp›ÿþŒrÿþŒr®ÿþŒs·ÿþŒt_ÿþŒtàÿþŒuLÿþŒuÉÿþŒvKÿþŒx;ÿþŒxLÿþŒx§ÿþŒx¼ÿþŒyçÿþŒyøÿþŒ{ ÿþŒ{ÿþŒ|àÿþŒ|ñÿþŒ}ŠÿþŒ}›ÿþŒ~1ÿþŒ~BÿþŒgÿþŒxÿþŒÔÿþŒåÿþŒ�ÿþŒ�"ÿþŒ‚ÿþŒ‚PÿþŒ‚ËÿþŒ…ÿþŒ…;ÿþŒ…ŽÿþŒ†>ÿþŒ†tÿþŒ†ÆÿþŒ‡sÿþŒ‡£ÿþŒ‡òÿþŒ‰œÿþŒ‰ÌÿþŒŠÿþŒŠOÿþŒŠŒÿþŒŠÒÿþŒ‹ÿþŒŒKÿþŒŒ�ÿþŒŒÓÿþŒ� ÿþŒŽÿþŒŽKÿþŒŽ›ÿþŒ�!ÿþŒ�9ÿþŒ�XÿþŒ�©ÿþŒ�ÝÿþŒ‘ÚÿþŒ’ÿþŒ’JÿþŒ’]ÿþŒ”ÿþŒ•ïÿþŒ—ƒÿþŒ˜ÿþŒ˜&ÿþŒ˜7ÿþŒ˜IÿþŒ˜[ÿþŒ˜nÿþŒ˜€ÿþŒ˜’ÿþŒ˜¦ÿþŒ˜ÖÿþŒ™}ÿþŒ?+Ñ 9Õ =;Ê™™ÿþŽ.bfÑe.efÑ0e™´ÿþ€?@ÑX ]Õ¦=;Ê™Ö<ÿþŽ.bfÑXe.efшe?MѸ tÕ¬=;Ê™éœÿþŽ.bfѸešÿþ„šÿþ„obj:R102ÿþ„.efÑèe.__emptyÒ, %Õ²=";Êš'ÿþŽ.bfÒ,e.efÒ0eš6ÿþŒš®ÿþŒ›ÿþŒ›4ÿþŒ›¬ÿþŒ›ÇÿþŒœÿþŒœ'ÿþŒœ�ÿþŒœ¯ÿþŒœÑÿþŒ�!ÿþŒ�6ÿþŒž9ÿþŒžRÿþŒŸ ÿþŒ?aÒT k€Õ¸=:;ÊŸU8ÿþŽ.bfÒTe.efÒ e.bs=€�Ÿkÿþ….es�?qÒÔ bÕ¾=E;ÊŸ�¸ÿþŽ.bfÒÔe.efÓe?ƒÓ8 cÕÄ=M;ÊŸ¨ÿþŽ.bfÓ8e.efÓle?’Óœ kkÕÊ=U;ÊŸ½€ÿþŽ.bfÓœe.efÓÐe?©Ô k“ÕÐ=];ÊŸÚìÿþŽ.bfÔe.efÔ\e?¼Ôœ qÕÖ=e;ÊŸó€ÿþŽ.bfÔœe.efÔÐe?ÙÕ ðÕÜ=m;Ê ôÿþŽ.bfÕe.efÖäe?ä× ¨Õâ=u;Ê ,äÿþŽ.bf×e.ef؈e?óب ®Õè=~;Ê AŒÿþŽ.bfبe Xÿþ„.efÙe?kèk0? Èk?, Lk  ?, L=‚ .data ÀkG À=†?“ Xk  g dk  ? /Hk >Ô>Ðÿþg.text¤$kßÿþŒ2ÿþŒMÿþŒiÿþŒE¹ÿþŒFŽÿþŒFñÿþŒH ÿþŒHeÿþŒK:ÿþŒKRÿþŒKôÿþŒL ÿþŒLÿþŒL/ÿþŒLYÿþŒLhÿþŒL“ÿþŒL£ÿþŒL³ÿþŒLÄÿþŒLÕÿþŒLçÿþŒLøÿþŒM ÿþŒMÿþŒM/ÿþŒMAÿþŒMTÿþŒMfÿþŒMzÿþŒM�ÿþŒM§ÿþŒM¾ÿþŒMÖÿþŒMíÿþŒNÿþŒNÿþŒN6ÿþŒNIÿþŒN]ÿþŒNrÿþŒNˆÿþŒNžÿþŒN´ÿþŒNËÿþŒNâÿþŒNøÿþŒOÿþŒO#ÿþŒO9ÿþŒOMÿþŒObÿþŒOyÿþŒO‘ÿþŒO¨ÿþŒOÁÿþŒOÏÿþŒOÞÿþŒOíÿþŒOýÿþŒP ÿþŒPÿþŒP0ÿþŒPCÿþŒPTÿþŒPgÿþŒPyÿþŒP�ÿþŒP ÿþŒP²ÿþŒPÂÿþŒPÕÿþŒPåÿþŒPöÿþŒQÿþŒQÿþŒQ)ÿþŒQ;ÿþŒQLÿþŒQ]ÿþŒQnÿþŒQ�ÿþŒQ”ÿþŒQ©ÿþŒQ¸ÿþŒQÉÿþŒQÚÿþŒQéÿþŒQøÿþŒR ÿþŒRÿþŒR*ÿþŒR<ÿþŒRMÿþŒR^ÿþŒRoÿþŒR€ÿþŒR“ÿþŒR«ÿþŒR¾ÿþŒRÏÿþŒRßÿþŒRòÿþŒSÿþŒSÿþŒS&ÿþŒS8ÿþŒSIÿþŒSYÿþŒSiÿþŒSzÿþŒSŠÿþŒSšÿþŒS¹ÿþŒSÊÿþŒSÞÿþŒSñÿþŒTÿþŒTÿþŒT/ÿþŒT@ÿþŒTOÿþŒTdÿþŒTzÿþŒTŽÿþŒTÁÿþŒTÕÿþŒTèÿþŒUÿþŒU%ÿþŒUjÿþŒU�ÿþŒU™ÿþŒUÅÿþŒUãÿþŒVÿþŒV"ÿþŒV6ÿþŒVNÿþŒWŒÿþŒXœÿþŒYbÿþŒ[ ÿþŒ[™ÿþŒ[¬ÿþŒ[½ÿþŒ[ÒÿþŒ[äÿþŒ[úÿþŒ\ ÿþŒ\ÿþŒ\+ÿþŒ\<ÿþŒ\LÿþŒ\_ÿþŒ\’ÿþŒ\¦ÿþŒ\éÿþŒ\þÿþŒ]ÿþŒ]#ÿþŒ]7ÿþŒ]IÿþŒ]YÿþŒ]jÿþŒ]yÿþŒ]‰ÿþŒ]¾ÿþŒ]ÑÿþŒ]âÿþŒ]ôÿþŒ^ÿþŒ^ÿþŒ^@ÿþŒ^PÿþŒ^bÿþŒ^“ÿþŒ^°ÿþŒ_ÿþŒ_RÿþŒ_cÿþŒ_�ÿþŒ_¥ÿþŒ_ßÿþŒ`0ÿþŒ`GÿþŒ`[ÿþŒ`oÿþŒ`„ÿþŒ`šÿþŒ`²ÿþŒ`æÿþŒa$ÿþŒa]ÿþŒaoÿþŒa§ÿþŒaéÿþŒb2ÿþŒbNÿþŒb�ÿþŒbŸÿþŒbÖÿþŒbêÿþŒc$ÿþŒdsÿþŒeÓÿþŒeêÿþŒf!ÿþŒfýÿþŒg�ÿþŒiþÿþŒk*ÿþŒk¦ÿþŒkÓÿþŒl<ÿþŒl£ÿþŒl¹ÿþŒmkÿþŒm�ÿþŒm¸ÿþŒn_ÿþŒn�ÿþŒoÿþŒo8ÿþŒoLÿþŒo^ÿþŒoÂÿþŒp›ÿþŒrÿþŒr®ÿþŒs·ÿþŒt_ÿþŒtàÿþŒuLÿþŒuÉÿþŒvKÿþŒx;ÿþŒxLÿþŒx§ÿþŒx¼ÿþŒyçÿþŒyøÿþŒ{ ÿþŒ{ÿþŒ|àÿþŒ|ñÿþŒ}ŠÿþŒ}›ÿþŒ~1ÿþŒ~BÿþŒgÿþŒxÿþŒÔÿþŒåÿþŒ�ÿþŒ�"ÿþŒ‚ÿþŒ‚PÿþŒ‚ËÿþŒ…ÿþŒ…;ÿþŒ…ŽÿþŒ†>ÿþŒ†tÿþŒ†ÆÿþŒ‡sÿþŒ‡£ÿþŒ‡òÿþŒ‰œÿþŒ‰ÌÿþŒŠÿþŒŠOÿþŒŠŒÿþŒŠÒÿþŒ‹ÿþŒŒKÿþŒŒ�ÿþŒŒÓÿþŒ� ÿþŒŽÿþŒŽKÿþŒŽ›ÿþŒ�!ÿþŒ�9ÿþŒ�XÿþŒ�©ÿþŒ�ÝÿþŒ‘ÚÿþŒ’ÿþŒ’JÿþŒ’]ÿþŒ”ÿþŒ•ïÿþŒ—ƒÿþŒ˜ÿþŒ˜&ÿþŒ˜7ÿþŒ˜IÿþŒ˜[ÿþŒ˜nÿþŒ˜€ÿþŒ˜’ÿþŒ˜¦ÿþŒ˜ÖÿþŒ@¤$ ßÕî>Î=‘ eÿþŽ.bf¤$en:R413ÿþ„d:R413ÿþ„.ef©Äe?nèk>Ô@ÿþg.textž”k�ÿþŒ2ÿþŒMÿþŒiÿþŒE¹ÿþŒFŽÿþŒFñÿþŒH ÿþŒHeÿþŒK:ÿþŒKRÿþŒKôÿþŒL ÿþŒLÿþŒL/ÿþŒLYÿþŒLhÿþŒL“ÿþŒL£ÿþŒL³ÿþŒLÄÿþŒLÕÿþŒLçÿþŒLøÿþŒM ÿþŒMÿþŒM/ÿþŒMAÿþŒMTÿþŒMfÿþŒMzÿþŒM�ÿþŒM§ÿþŒM¾ÿþŒMÖÿþŒMíÿþŒNÿþŒNÿþŒN6ÿþŒNIÿþŒN]ÿþŒNrÿþŒNˆÿþŒNžÿþŒN´ÿþŒNËÿþŒNâÿþŒNøÿþŒOÿþŒO#ÿþŒO9ÿþŒOMÿþŒObÿþŒOyÿþŒO‘ÿþŒO¨ÿþŒOÁÿþŒOÏÿþŒOÞÿþŒOíÿþŒOýÿþŒP ÿþŒPÿþŒP0ÿþŒPCÿþŒPTÿþŒPgÿþŒPyÿþŒP�ÿþŒP ÿþŒP²ÿþŒPÂÿþŒPÕÿþŒPåÿþŒPöÿþŒQÿþŒQÿþŒQ)ÿþŒQ;ÿþŒQLÿþŒQ]ÿþŒQnÿþŒQ�ÿþŒQ”ÿþŒQ©ÿþŒQ¸ÿþŒQÉÿþŒQÚÿþŒQéÿþŒQøÿþŒR ÿþŒRÿþŒR*ÿþŒR<ÿþŒRMÿþŒR^ÿþŒRoÿþŒR€ÿþŒR“ÿþŒR«ÿþŒR¾ÿþŒRÏÿþŒRßÿþŒRòÿþŒSÿþŒSÿþŒS&ÿþŒS8ÿþŒSIÿþŒSYÿþŒSiÿþŒSzÿþŒSŠÿþŒSšÿþŒS¹ÿþŒSÊÿþŒSÞÿþŒSñÿþŒTÿþŒTÿþŒT/ÿþŒT@ÿþŒTOÿþŒTdÿþŒTzÿþŒTŽÿþŒTÁÿþŒTÕÿþŒTèÿþŒUÿþŒU%ÿþŒUjÿþŒU�ÿþŒU™ÿþŒUÅÿþŒUãÿþŒVÿþŒV"ÿþŒV6ÿþŒVNÿþŒWŒÿþŒXœÿþŒYbÿþŒ[ ÿþŒ[™ÿþŒ[¬ÿþŒ[½ÿþŒ[ÒÿþŒ[äÿþŒ[úÿþŒ\ ÿþŒ\ÿþŒ\+ÿþŒ\<ÿþŒ\LÿþŒ\_ÿþŒ\’ÿþŒ\¦ÿþŒ\éÿþŒ\þÿþŒ]ÿþŒ]#ÿþŒ]7ÿþŒ]IÿþŒ]YÿþŒ]jÿþŒ]yÿþŒ]‰ÿþŒ]¾ÿþŒ]ÑÿþŒ]âÿþŒ]ôÿþŒ^ÿþŒ^ÿþŒ^@ÿþŒ^PÿþŒ^bÿþŒ^“ÿþŒ^°ÿþŒ_ÿþŒ_RÿþŒ_cÿþŒ_�ÿþŒ_¥ÿþŒ_ßÿþŒ`0ÿþŒ`GÿþŒ`[ÿþŒ`oÿþŒ`„ÿþŒ`šÿþŒ`²ÿþŒ`æÿþŒa$ÿþŒa]ÿþŒaoÿþŒa§ÿþŒaéÿþŒb2ÿþŒbNÿþŒb�ÿþŒbŸÿþŒbÖÿþŒbêÿþŒc$ÿþŒdsÿþŒeÓÿþŒeêÿþŒf!ÿþŒfýÿþŒg�ÿþŒiþÿþŒk*ÿþŒk¦ÿþŒkÓÿþŒl<ÿþŒl£ÿþŒl¹ÿþŒmkÿþŒm�ÿþŒm¸ÿþŒn_ÿþŒn�ÿþŒoÿþŒo8ÿþŒoLÿþŒo^ÿþŒoÂÿþŒp›ÿþŒrÿþŒr®ÿþŒs·ÿþŒt_ÿþŒtàÿþŒuLÿþŒuÉÿþŒvKÿþŒx;ÿþŒxLÿþŒx§ÿþŒx¼ÿþŒyçÿþŒyøÿþŒ{ ÿþŒ{ÿþŒ|àÿþŒ|ñÿþŒ}ŠÿþŒ}›ÿþŒ~1ÿþŒ~BÿþŒgÿþŒxÿþŒÔÿþŒåÿþŒ�ÿþŒ�"ÿþŒ‚ÿþŒ‚PÿþŒ‚ËÿþŒ…ÿþŒ…;ÿþŒ…ŽÿþŒ†>ÿþŒ†tÿþŒ†ÆÿþŒ‡sÿþŒ‡£ÿþŒ‡òÿþŒ‰œÿþŒ‰ÌÿþŒŠÿþŒŠOÿþŒŠŒÿþŒŠÒÿþŒ‹ÿþŒŒKÿþŒŒ�ÿþŒŒÓÿþŒ� ÿþŒŽÿþŒŽKÿþŒŽ›ÿþŒ�!ÿþŒ�9ÿþŒ�XÿþŒ�©ÿþŒ�ÝÿþŒ‘ÚÿþŒ’ÿþŒ’JÿþŒ’]ÿþŒ”ÿþŒ•ïÿþŒ—ƒÿþŒ˜ÿþŒ˜&ÿþŒ˜7ÿþŒ˜IÿþŒ˜[ÿþŒ˜nÿþŒ˜€ÿþŒ˜’ÿþŒ˜¦ÿþŒ˜ÖÿþŒ@ž” �Õô@>Ñ vÿþŽ.bfž”eu:R413ÿþ„v:R413ÿþ„.ef£Øe?mèk@B¤ÿþ g@5Ù0ÿþl@5Ù0ÿþm@5Ù<ÿþl@5Ù<ÿþm@5ÙHÿþl@5ÙHÿþm@5ÙTÿþl@5ÙZÿþm@5Ùfÿþl@5Ùlÿþm@5Ùxÿþl@5Ùxÿþm@5Ù„ÿþl@5Ù„ÿþm@5Ù�ÿþl@5Ù�ÿþm@Ù–ÿþl@Ù–ÿþm@5Ùœÿþl@5Ùœÿþm@Ù¢ÿþl@Ù¢ÿþm@5Ù¨ÿþl@5Ù¨ÿþm@GÙÞÿþl@GÙÞÿþm@GÙêÿþl@GÙêÿþm@5Ùöÿþl@5Ùöÿþm@GÙüÿþl@GÙüÿþm@5Úÿþl@5Úÿþm@GÚÿþl@GÚÿþm@GÚÿþl@GÚÿþm@5Ú ÿþl@5Ú ÿþm@5Ú,ÿþl@5Ú,ÿþm@Ú2ÿþl@Ú2ÿþm@5Ú8ÿþl@5Ú8ÿþm@Ú>ÿþl@Ú>ÿþm@5ÚDÿþl@5ÚDÿþm@GÚnÿþl@GÚnÿþm@GÚzÿþl@GÚzÿþm@5Ú†ÿþl@5Ú†ÿþm@GÚŒÿþl@GÚŒÿþm@5Ú’ÿþl@5Ú’ÿþm@GÚ˜ÿþl@GÚ˜ÿþm@GÚ¤ÿþl@GÚ¤ÿþm@5Ú°ÿþl@5Ú°ÿþm@5Ú¼ÿþl@5Ú¼ÿþm@ÚÂÿþl@ÚÂÿþm@5ÚÈÿþl@5ÚÈÿþm@ÚÎÿþl@ÚÎÿþm@5ÚÔÿþl@5ÚÔÿþm@GÛ ÿþl@GÛ ÿþm@5Ûÿþl@5ÛLÿþm@5ÛRÿþl@5ÛRÿþm@5ÛXÿþl@5ÛXÿþm@5Û^ÿþl@5Û^ÿþm@5Ûdÿþl@5Ûdÿþm@5Ûjÿþl@5Ûjÿþm@5Ûpÿþl@5Û|ÿþm@5Û‚ÿþl@5Û‚ÿþm.textµØk(ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ ‡ÿþŒ¡IÿþŒ¡YÿþŒ¢ÿþŒ¢;ÿþŒ¢WÿþŒ¢jÿþŒ¢{ÿþŒ¢‹ÿþŒ£YÿþŒ¤4ÿþŒ¥ÿþŒ¥ÍÿþŒ¦­ÿþŒ¦ÊÿþŒ§sÿþŒ@XµØ OÕú@�@o¨uÿþŽ.bfµØe,.ef¶e-@g¶( >Ö @˜@o¨ŠPÿþŽ.bf¶(e2.ef¶<e3.bsB|�¨ªÿþ….es�@�¶h GÖ@¥@o¨Æ�ÿþŽ.bf¶he;func:R26ÿþ„old:r26ÿþƒ.ef¶|e?@˜¶° HÖ<@¯@o¨âØÿþŽ.bf¶°eDfunc:R29ÿþ„old:r29ÿþƒ.ef¶ÄeH@°¶ø PÖZ@·@o¨ÿ ÿþŽ.bf¶øeM.ef·(eN©ÿþŒ@À·H QÖl@À@oªpÿþŽ.bf·Het.ef·deu@Õ·œ FÖ~@È@oª4ÄÿþŽ.bf·œe.ef·´e�@ã·ä dÖ–@Ñ@oªG ÿþŽ.bf·äeŠp:r79 ÿþƒ.ef¸eŽ@÷¸H TÖÌ@Û@oª`pÿþŽ.bf¸He—size:R31ÿþ„p:r8ÿþƒ.ef¸le›A¸œ CÖð@ä@oªpÄÿþŽ.bf¸œe¤p:R8ÿþ„.ef¸°e¥ª�ÿþŒA¸à ¶×@ñ@oª›ÿþŽ.bf¸àe®info:R79ÿþ„ªµÿþ„ªÆÿþ„ret:r8ÿþƒ.ef¹XeÀA$¹˜ Ù×P@þ@oªÜÀÿþŽ.bf¹˜eÉvalue:R8ÿþ„type:R8ÿþ„ª÷ÿþ„p:r79ÿþƒ«ÿþƒ.efº eÚA9ºt ,×ÈA@o«œÿþŽ.bfºteãp:R79ÿþ„q:r87ÿþƒ.ef»deAM»  eØ@A@o«+ÈÿþŽ.bf» ep:r79ÿþƒ.ef»ÐeAb¼ îØdA‹@o«F0ÿþŽ.bf¼en:p-1ÿþ‚«] ÿþ‚p:79àÿþ�.bb¼�d@i:-1äÿþ�.eb¼üd.bb½Pdª.bb½Pd¨«qìÿþ�.bb½°d¦.bb½°d¤«‡ôÿþ�.bb½°dY.bb½ÈdWi:-1øÿþ�.bb½ÈdUi:-1ðÿþ�i:-1øÿþ�.eb¾0d.eb¾0d.eb¾0d.bb¾8d¢i:-1øÿþ�.bb¾Pd .bb¾Pdž.bb¾|dœ.bb¾|dz.bb¾|dl.bb¾|dj.eb¾|d.eb¾|d.bb¾ädp.eb¾äd.bb¾ädx.bb¾ädv.eb¾äd.eb¾äd.eb¾äd.bb¿PdŠ.bb¿Pd€.eb¿Pd.bb¿ d7ˆ.bb¿ d7†.eb¿ d7.eb¿ d7.eb¿ d7.bb¿ d7š.bb¿ d7�.eb¿ d7.bb¿ d7˜.bb¿ d7–.eb¿ d7.eb¿ d7.eb¿ d7.ebÀ0d.ebÀ0d.ebÀ0d.ebÀHd .ebÀPd".ebÀPd".ebÀPd".ebÀPd".efÀÐe:AsÀø OÙÀAË@o«¥ ÿþŽ.bfÀøe@.bbÁ`dÊ.bbÁ`d¼.bbÁ`dº.ebÁ`d.ebÁ`d.bbÁÔd-À.ebÁÔd-.bbÁÔd-È.bbÁÔd-Æ.ebÁÔd-.ebÁÔd-.ebÁÔd-.bbÂDdÚ.bbÂDdÐ.ebÂDd.bbÂ�dAØ.bbÂ�dAÖ.ebÂ�dA.ebÂ�dA.ebÂ�dA.bbÂ�dAê.bbÂ�dAà.ebÂ�dA.bbÂ�dAè.bbÂ�dAæ.ebÂ�dA.ebÂ�dA.ebÂ�dA.efÃ$eAA…ÃH QÚPB @o«½ pÿþŽ.bfÃHeF.bbðd .bbðdü.bbðdú.ebðd.ebðd.bbÄ$d3.ebÄ$d3.bbÄ$d3.bbÄ$d3.ebÄ$d3.ebÄ$d3.ebÄ$d3.bbÄ”d.bbÄ”d.ebÄ”d.bbÄàdG.bbÄàdG.ebÄàdG.ebÄàdG.ebÄàdG.bbÄàdG*.bbÄàdG .ebÄàdG.bbÄàdG(.bbÄàdG&.ebÄàdG.ebÄàdG.ebÄàdG.efÅteGA™Åœ lÚàB@o«×ÄÿþŽ.bfÅœeNp:r79ÿþƒ.efÅÐePA±Æ ƒÚøB%@o«ó0ÿþŽ.bfÆeU¬ ÿþ„.bbÆPd D.bbÆPd B.ebÆPd .ebÆPd .efÆTeVAÄÆŒ lÛB-@o¬´ÿþŽ.bfÆŒeW.efÆÀeWAÔÆø >Û"B6@o¬. ÿþŽ.bfÆøethis:R14 ÿþ„.efÇeAâÇ8 [Û.B@@o¬A`ÿþŽ.bfÇ8ethis:R14ÿþ„1™ÿþ„.efÇ\eAñÇ” �Û:BL@o¬Vÿþ€¬{ ÿþ€¬�ÿþ€¬±ÿþ€¬Ø¼ÿþŽ.bfÇ”eW.efÇðeWBÈ4 kÛFBg@o¬ò\ÿþŽ.bfÈ4ethis:p23`ÿþ‚this:14`ÿþ�.bbȘdy.ebȘd.bbÈðd}.ebÈðd.bbÈðd†this:14`ÿþ�.bbÈðd„.ebÈðd.ebÈðd.efÉeBÉ  `ÛvBz@o­ ÈÿþŽ.bfÉ ethis:R23ÿþ„1™ÿþ„.bbɬd™this:r14ÿþƒ.bbɬd—.ebɬd.ebÉÄd.efÉÄeB-q`kB- pk@h ,k  @h ,B~ O Ðk  O ÐB‚ A² ¼k  A² ¼B† .data 8kD w 8BŠ XBŠAÅ k  AÅ B� Aã k  Aã B” Aò øk  Aò øB˜ d k  d Bœ ÿ 3ð ¨ 4¨ B>C+ÿþ gBRÛ¦ÿþlBRÛ¬ÿþm@5Û²ÿþl@5Û²ÿþmBRÛ¸ÿþlBRÛâÿþm.text<kÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ­$ÿþŒ­6ÿþŒ­GÿþŒ­WÿþŒ­{ÿþŒ­—ÿþŒ®jÿþŒ®{ÿþŒ®êÿþŒ®ÿÿþ€B^< IÛˆBÈB«¯ ÿþŽ.bf<e&¯+ÿþ„¯9ÿþƒ.efPe)¯Lÿþ€¯lÿþ€Bwˆ [Û¦BÙB«¯ŽLÿþŽ.bfˆe*this:R21ÿþ„1™ÿþ„¯£ÿþƒ.bb”dP.eb”d.ef¬e*B†ä xÛ¸BáB«¯²¨ÿþŽ.bfäe*.ef$e*B–\ OÛÄBòB«¯Ø ÿþŽ.bf\e¯ðÿþ„.bbde.ebd.bbdi.ebd.efeB©¬ IÛÐCB«¯ÿpÿþŽ.bf¬e&place:p8|ÿþ‚.bb\dv.eb\d.bb\dz.eb\d.efpe&B¶ø IÛÜCB«°¼ÿþŽ.bføe'place:p8|ÿþ‚.bb¨d‡.eb¨d.bb¨d‹.eb¨d.ef¼e'°! ÿþ€BÃq€k.data èk( E èC  C 7 èk  7 èC B‡ Ük  B‡ ÜC! B— ôk  B— ôC% ( 4è BÎCIÿþ g.text°k_ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ­$ÿþŒ­6ÿþŒ­GÿþŒ­WÿþŒ­{ÿþŒ°5ÿþŒBã° _ÛèCIC,°JÿþŽ.bf°e4ptr:p8€ÿþ‚.bb d;°b€ÿþ�.ebd.ef€e7BõCÌÿþ g@5ÜZÿþl@5ÜZÿþm@5Üfÿþl@5Üfÿþm@5Ürÿþl@5Ürÿþm@5Ü~ÿþl@5Ü~ÿþm@5ÜŠÿþl@5ÜŠÿþmBõÜ�ÿþlBõÜ�ÿþmBRÜ®ÿþlBRÜ´ÿþm@5ܺÿþl@5ܺÿþm@5ÜÆÿþl@5ÜÆÿþm@5ÜÒÿþl@5ÜÒÿþm.text¤k–ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ­$ÿþŒ­6ÿþŒ­GÿþŒ­WÿþŒ­{ÿþŒ°5ÿþŒC ¤ 0ÜC´C^°ŠÿþŽ.bf¤eGsz:p10øÿþ‚p:r8ÿþƒ.bb˜dް�èÿþ�°bôÿþ�.bb˜d Œ°ªôÿþ�.bb¬d аªôÿþ�.bb8d y°ªôÿþ�.bb8d m°ªôÿþ�.eb8d .bbˆd w°ªôÿþ�.bbˆd u°ªôÿþ�.ebˆd .ebˆd .ebˆd .bbˆd ˆ°ªôÿþ�.bbˆd †°ªôÿþ�.bbˆd „°ªôÿþ�.ebˆd .ebˆd .ebˆd .ebdR.ebdR.eb<d.bbDd“°ªôÿþ�.ebDd.bb`d˜°ªôÿþ�.ebÔd.efLeXCÔ kfÜ®CÌC^°À0ÿþŽ.bfÔeRthis:p19`ÿþ‚°ä`ÿþ�.bb8d§this:21`ÿþ�.eb8d.bb�d°this:21`ÿþ�.bb�d®.eb�d.eb�d.ef°eRBÎCêÿþ g.text³xk_ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ­$ÿþŒ­6ÿþŒ­GÿþŒ­WÿþŒ­{ÿþŒ°5ÿþŒC'³x _ÜÞCêCͰÿÿþŽ.bf³xe<ptr:p8€ÿþ‚.bb´hd;°b€ÿþ�.eb´Ðd.efµHe?BÎD ÿþ g.textHk\ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ­$ÿþŒ­6ÿþŒ­GÿþŒ­WÿþŒ­{ÿþŒ°5ÿþŒC=H \ÝD Cë±ÿþŽ.bfHe&sz:p10ˆÿþ‚.bbd=°b„ÿþ�.ebd.bb,dB°ª„ÿþ�.eb d.efe(CPGŸÿþ g@GÝ>ÿþl@GÝ>ÿþmBRÝVÿþlBRÝVÿþmBRÝbÿþlBRÝbÿþmBRÝnÿþlBRÝnÿþm@GÝzÿþl@GÝzÿþmCfÝ€ÿþlCf݆ÿþm@GÝŒÿþl@GÝŒÿþm@Gݘÿþl@GݘÿþmCfÝžÿþlCfÝÈÿþmBRÝàÿþlBRÝàÿþmBRÝìÿþlBRÝìÿþmBRÝøÿþlBRÝøÿþm@GÞÿþl@GÞÿþmCfÞ ÿþlCfÞÿþm@GÞÿþl@GÞÿþm@GÞ"ÿþl@GÞ"ÿþmCfÞ(ÿþlCfÞFÿþmBRÞ^ÿþlBRÞ^ÿþmBRÞjÿþlBRÞjÿþmBRÞvÿþlBRÞvÿþmCfÞ‚ÿþlCfÞ‚ÿþm@GÞˆÿþl@GÞˆÿþmCfÞŽÿþlCfÞŽÿþm@GÞ”ÿþl@GÞ”ÿþmCfÞšÿþlCfÞšÿþm@GÞ ÿþl@GÞ ÿþmCfÞ¦ÿþlCfÞ¦ÿþm@Gߨÿþl@Gßðÿþm@5ßöÿþl@5ßöÿþm@Gßüÿþl@Gßüÿþm@5àÿþl@5àÿþm@Gàÿþl@Gàÿþm@5àÿþl@5àÿþm@Gàÿþl@Gà ÿþm@5à&ÿþl@5à&ÿþm@Gà,ÿþl@Gà>ÿþm@5àDÿþl@5àDÿþm@GàJÿþl@GàJÿþm@5àPÿþl@5àPÿþm@GàVÿþl@GàVÿþm@5à\ÿþl@5à\ÿþm@Gàbÿþl@Gànÿþm@5àtÿþl@5àtÿþmCfàzÿþlCfà˜ÿþm@Gàžÿþl@GàžÿþmCfà¤ÿþlCfà¤ÿþm@Gàªÿþl@GàªÿþmCfà°ÿþlCfà°ÿþm@Gà¶ÿþl@Gà¶ÿþmCfà¼ÿþlCfà¼ÿþm@GàÂÿþl@GàÂÿþmCfàÈÿþlCfàÔÿþmCfàÚÿþlCfàÚÿþmCfààÿþlCfàòÿþm@Gàøÿþl@GàøÿþmCfàþÿþlCfàþÿþmCfáÿþlCfáÿþm@Gá ÿþl@Gá ÿþmCfáÿþlCfáÿþm@Gáÿþl@GáÿþmCfáÿþlCfáÿþm@Gá"ÿþl@Gá"ÿþmCfá(ÿþlCfá(ÿþmCfá.ÿþlCfá.ÿþmCfá4ÿþlCfá4ÿþmCfá:ÿþlCfá:ÿþmCfá@ÿþlCfá@ÿþmCfáFÿþlCfáFÿþmCfáLÿþlCfáLÿþmCfáRÿþlCfáRÿþmCfáXÿþlCfádÿþmCfájÿþlCfájÿþmCfápÿþlCfá‚ÿþm@Gáˆÿþl@GáˆÿþmCfáŽÿþlCfáŽÿþmCfá”ÿþlCfá”ÿþm@Gášÿþl@GášÿþmCfá ÿþlCfá ÿþm@Gá¦ÿþl@Gá¦ÿþmCfá¬ÿþlCfá¬ÿþm@Gá²ÿþl@Gá²ÿþmCfá¸ÿþlCfá¸ÿþmCfá¾ÿþlCfá¾ÿþmCfáÄÿþlCfáÄÿþmCfáÊÿþlCfáÊÿþmCfáÐÿþlCfáÐÿþmCfáÖÿþlCfáÖÿþmCfáÜÿþlCfáÜÿþmCfáâÿþlCfáâÿþmCfáèÿþlCfáèÿþm.textî`kMÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ­$ÿþŒ­6ÿþŒ­GÿþŒ­WÿþŒ­{ÿþŒ±2ÿþŒ²`ÿþŒ²qÿþŒ³#ÿþŒ³ÕÿþŒ´ÞÿþŒ¶ÿþŒ¶ÿþŒ¶FÿþŒ·‚ÿþŒ¸ÜÿþŒC{î` [Ý DåD¸ñÿþŽ.bfî`e(this:R22ÿþ„1™ÿþ„.efî„e(CŠî¼ ‡Ý,ED¹\ÿþŽ.bfî¼e-¹)ÿþ„¹8ÿþ„.bbîØd this:r78ÿþƒ.bbîØd  this:r78ÿþƒ.ebîØd .ebîØd .bbîØd this:r78ÿþƒ.bbîØd .ebîØd .ebîØd .efîøe.C©ïD rÝJEID¹FäÿþŽ.bfïDe4addr:R8ÿþ„name:R17ÿþ„bl:R69ÿþ„bn:R10ÿþ„.bbï`d>place:r8ÿþƒ.bbï´d&5name:r17ÿþƒbl:r69ÿþƒbn:r10ÿþƒ.bbï´d&3name:r17ÿþƒbl:r69ÿþƒbn:r10ÿþƒ.ebï´d&.ebï´d&.bbï´d&<name:r17ÿþƒbl:r69ÿþƒbn:r10ÿþƒ.ebï´d&.ebï´d&.bbïÌd_name:r17ÿþƒbl:r69ÿþƒbn:r10ÿþƒ.bbïÌdUn:r17ÿþƒ.bbïÌdOn:r17ÿþƒ.bbïÌdM.ebïÌd.ebïÌd.bbðd S.ebðd .ebðd .bbðPd2Y.ebðPd2.bbðtd].ebðtd.ebðtd2.efðte4C·ð¸ _ÝÔE‹D¹ZXÿþŽ.bfð¸e8addr:R8ÿþ„n:R17ÿþ„ti:R78ÿþ„.bbðÐd�place:r8ÿþƒ.bbñ d&yn:r17ÿþƒb:r51ÿþƒ.bbñ d&wn:r17ÿþƒb:r51ÿþƒ.ebñ d&.ebñ d&.bbñ d&n:r17ÿþƒb:r51ÿþƒ.ebñ d&.ebñ d&.bbñ8d¡n:r17ÿþƒb:r51ÿþƒ.bbñ8d—n:r17ÿþƒ.bbñ8d‘n:r17ÿþƒ.bbñ8d�.ebñ8d.ebñ8d.bbñ|d •.ebñ|d .ebñ|d .bbñ¼d›.ebñ¼d.bbñÜdŸ.ebñÜd.ebñÜd.efñÜe:CÂò ÞRE»D¹k¸ÿþŽ.bfòe?addr:R8ÿþ„name:R17ÿþ„.bbò,d¿place:r8ÿþƒ.bbòxd&¸n:r17ÿþƒ.bbòxd&¶n:r17ÿþƒ.ebòxd&.ebòxd&.bbòxd&½n:r17ÿþƒ.ebòxd&.ebòxd&.bbò�d Ñn:r17ÿþƒ.bbò�d Ën:r17ÿþƒ.bbò�d É.ebò�d .ebò�d .bbòÌd Ï.ebòÌd .ebòäd .efòäe?CÏó  ¡Þ²EÆD¹~ÀÿþŽ.bfó eFthis:R62ÿþ„to:R79ÿþ„addr:R8ÿþ„.efóXeFDóÄ  Þ¾EÔD¹»dÿþŽ.bfóÄeK¹öÿþ„to:R79ÿþ„ºÿþ„addr:R8ÿþ„sub:R78ÿþ„ºÿþ„.efô\eND?ôÐ ‚ÞÜFDº&pÿþŽ.bfôÐeTºdÿþ„ºsÿþ„º�ÿþ„º‘ÿþ„sub:R78ÿþ„ºÿþ„º�ÿþƒ.bbõ@d%i:r10ÿþƒ.bbõ\d#p:r8ÿþƒ.bbõ˜d!.bbõäd.bbõäd.bbõìd.bbõìd.bbõôd.bbõôd.bbõüdos:r8ÿþƒns:r8ÿþƒ.ebö d'.ebö d'.ebö¨d-.ebö¨d-.ebö¨d-.ebö¨d-.ebö¨d-.ebö¨d-.ebö¨d-.ebö¼d0.eföÀe…º®ÿþ€º×ÿþ€ºòÿþ€»`ÿþ€»&€ÿþ€»: ÿþ€»Zÿþ€»{ÿþ€»œÿþ€»³ÿþ€»Ðÿþ€»ëÿþ€Dy÷T lߨF#D¼ ôÿþŽ.bf÷Te†.ef÷ˆe†D‰÷À Eß´F-D¼ `ÿþŽ.bf÷Àethis:R22 ÿþ„n:R17ÿþ„.ef÷ÔeDšø ;ßÀF6D¼4 ¨ÿþŽ.bføe this:R78ÿþ„.eføe D­øD [ßÌF@D¼L äÿþŽ.bføDe'this:R78ÿþ„arg:R79ÿþ„.efø\e(DÌø  wßÞFHD¼o @ÿþŽ.bfø e†.eføàe†DÛù aßêFcD¼ƒ ¸ÿþŽ.bfùe-this:p32`ÿþ‚¼•`ÿþ�.bbù|dl.ebù|d.bbùÔdp.ebùÔd.bbùÔdythis:86`ÿþ�.bbùÔdw.ebùÔd.ebùÔd.efùôe-Dèú| ZàFvD¼£ ÿþŽ.bfú|e.this:R32ÿþ„1™ÿþ„.bbúˆdŒthis:r86ÿþƒ.bbúˆdŠ.ebúˆd.ebú d..efú e.DöúØ zà,F~D¼· xÿþŽ.bfúØe†.efûe†EûT dà8F™D¼ΠôÿþŽ.bfûTe3this:p39`ÿþ‚this:86`ÿþ�.bbû¸d¢.ebû¸d.bbüd¦.ebüd.bbüd¯this:86`ÿþ�.bbüd­.ebüd.ebüd.efü0e3Eü¸ ]àhF¬D¼ãXÿþŽ.bfü¸e4this:R39ÿþ„1™ÿþ„.bbüÄdÂthis:r86ÿþƒ.bbüÄdÀ.ebüÄd.ebüÜd4.efüÜe4E)ý SàzF¶D¼ú¸ÿþŽ.bfýethis:R46ÿþ„1™ÿþ„.efý,eE@ýl  à†F¾D½ ÿþŽ.bfýle†.efýÈe†EXþ  }à’FÒD½4¬ÿþŽ.bfþ e this:p46`ÿþ‚n:p17dÿþ‚this:22`ÿþ�n:17dÿþ�.bbþpdä.ebþpd.bbþÔdè.ebþÔd.efþôeEqÿŒ QàÎFÜD½R,ÿþŽ.bfÿŒe†this:R55ÿþ„1™ÿþ„.efÿ e†E†ÿà ÂààFèD½m€ÿþŽ.bfÿàe†.bbdþ.eb4d.ef`e†Eœ¤ çàìG D½ˆDÿþŽ.bf¤ethis:p55�ÿþ‚n:p17”ÿþ‚b:p51˜ÿþ‚this:46�ÿþ�n:17”ÿþ�.bbdn:17”ÿþ�this:22�ÿþ�.bbd.ebd.ebd.bbpd .ebpd .bb¸d.eb¸d.bb¸d"this:46�ÿþ�.eb¸d.efäeEÇŒ Tá^GD½¸,ÿþŽ.bfŒe†this:R73ÿþ„1™ÿþ„.ef e†Eßà ÅápG"D½րÿþŽ.bfàe†.bbd8.eb4d.ef`e†Eø¨ á|GGD½ôHÿþŽ.bf¨e2this:p73�ÿþ‚name:p17”ÿþ‚bl:p69˜ÿþ‚bn:p10œÿþ‚this:46�ÿþ�n:17”ÿþ�.bb dPn:17”ÿþ�this:22�ÿþ�.bb dN.eb d.eb d.bbxd T.ebxd .bbÀdX.ebÀd.bbÀd]this:46�ÿþ�.ebÀd.efôe2F5pkpC| ìk  C| ìGI CÐ ˜k  CÐ ˜GM D tk  D tGQ D@ Pk  D@ PGU .data xk¼µ xGYÍ ˜GYž ¸GY< ØGY øGY� GY¨ àk  ¨ àGg DÍ Èk  DÍ ÈGk ‹ Ôk  ‹ ÔGo D÷ ¤k  D÷ ¤Gs ˜ °k  ˜ °Gw E* Œk  E* ŒG{ ‘ €k  ‘ €G Er hk  Er hGƒ E‡ \k  E‡ \G‡ EÈ Dk  EÈ DG‹ Eà 8k  Eà 8G� â 3Øñ 3à + 3ø M 4 d 4 y 4( FBOÿþ g@Gáúÿþl@GáúÿþmBRã°ÿþlBRã°ÿþmBRã¼ÿþlBRã¼ÿþmBRãÈÿþlBRãÈÿþmFBãÔÿþlFBãÔÿþm@GãÚÿþl@GãÚÿþmFBãàÿþlFBãàÿþm@Gãæÿþl@GãæÿþmFBãìÿþlFBãìÿþm@Gãòÿþl@GãòÿþmFBãøÿþlFBãøÿþmBRäÿþlBRäÿþmBRäÿþlBRäÿþmBRä(ÿþlBRä(ÿþmFBä4ÿþlFBä4ÿþm@Gä:ÿþl@Gä:ÿþmFBä@ÿþlFBä@ÿþm@GäFÿþl@GäFÿþmFBäLÿþlFBäLÿþm@GäRÿþl@GäRÿþmFBäXÿþlFBäXÿþmBRäpÿþlBRäpÿþmBRä|ÿþlBRä|ÿþmBRäˆÿþlBRäˆÿþmFBä”ÿþlFBä”ÿþm@Gäšÿþl@GäšÿþmFBä ÿþlFBä ÿþm@Gä¦ÿþl@Gä¦ÿþmFBä¬ÿþlFBä¬ÿþm@Gä²ÿþl@Gä²ÿþmFBä¸ÿþlFBä¸ÿþmBRäÐÿþlBRäÐÿþmBRäÜÿþlBRäÜÿþmBRäèÿþlBRäèÿþmFBäôÿþlFBäôÿþm@Gäúÿþl@GäúÿþmFBåÿþlFBåÿþm@Gåÿþl@GåÿþmFBå ÿþlFBå ÿþm@Gåÿþl@GåÿþmFBåÿþlFBåÿþmBRå0ÿþlBRå0ÿþmBRå<ÿþlBRå<ÿþmBRåHÿþlBRåHÿþmFBåTÿþlFBåTÿþm@GåZÿþl@GåZÿþmFBå`ÿþlFBå`ÿþm@Gåfÿþl@GåfÿþmFBålÿþlFBålÿþm@Gårÿþl@GårÿþmFBåxÿþlFBåxÿþmBRå�ÿþlBRå�ÿþmBRåœÿþlBRåœÿþmBRå¨ÿþlBRå¨ÿþmFBå´ÿþlFBå´ÿþm@Gåºÿþl@GåºÿþmFBåÀÿþlFBåÀÿþm@GåÆÿþl@GåÆÿþmFBåÌÿþlFBåÌÿþm@GåÒÿþl@GåÒÿþmFBåØÿþlFBåØÿþmBRæÿþlBRæÿþmBRæÿþlBRæÿþmFBæÿþlFBæÿþm@Gæ ÿþl@Gæ ÿþmFBæ&ÿþlFBæ&ÿþm@Gæ,ÿþl@Gæ,ÿþmFBæ2ÿþlFBæ2ÿþmBRæJÿþlBRæJÿþmBRæVÿþlBRæVÿþmFBæbÿþlFBæbÿþm@Gæhÿþl@GæhÿþmFBænÿþlFBænÿþm@Gætÿþl@GætÿþmFBæzÿþlFBæzÿþmBRæ’ÿþlBRæ’ÿþmBRæžÿþlBRæžÿþmFBæªÿþlFBæªÿþm@Gæ°ÿþl@Gæ°ÿþmFBæ¶ÿþlFBæ¶ÿþm@Gæ¼ÿþl@Gæ¼ÿþmFBæÂÿþlFBæÂÿþmBRæÚÿþlBRæÚÿþmBRææÿþlBRææÿþmFBæòÿþlFBæòÿþm@Gæøÿþl@GæøÿþmFBæþÿþlFBæþÿþm@Gçÿþl@GçÿþmFBç ÿþlFBç ÿþmBRç"ÿþlBRç"ÿþmBRç.ÿþlBRç.ÿþmFBç:ÿþlFBç:ÿþm@Gç@ÿþl@Gç@ÿþmFBçFÿþlFBçFÿþm@GçLÿþl@GçLÿþmFBçRÿþlFBçRÿþmBRçjÿþlBRçjÿþmBRçvÿþlBRçvÿþmFBç‚ÿþlFBç‚ÿþm@Gçˆÿþl@GçˆÿþmFBçŽÿþlFBçŽÿþm@Gç”ÿþl@Gç”ÿþmFBçšÿþlFBçšÿþmBRç²ÿþlBRç²ÿþmBRç¾ÿþlBRç¾ÿþmFBçÊÿþlFBçÊÿþm@GçÐÿþl@GçÐÿþmFBçÖÿþlFBçÖÿþm@GçÜÿþl@GçÜÿþmFBçâÿþlFBçâÿþmBRçúÿþlBRçúÿþmBRèÿþlBRèÿþmFBèÿþlFBèÿþm@Gèÿþl@GèÿþmFBèÿþlFBèÿþm@Gè$ÿþl@Gè$ÿþmFBè*ÿþlFBè*ÿþmBRèBÿþlBRèBÿþmBRèNÿþlBRèNÿþmFBèZÿþlFBèZÿþm@Gè`ÿþl@Gè`ÿþmFBèfÿþlFBèfÿþm@Gèlÿþl@GèlÿþmFBèrÿþlFBèrÿþmBRèŠÿþlBRèŠÿþmBRè–ÿþlBRè–ÿþmFBè¢ÿþlFBè¢ÿþm@Gè¨ÿþl@Gè¨ÿþmFBè®ÿþlFBè®ÿþm@Gè´ÿþl@Gè´ÿþmFBèºÿþlFBèºÿþmBRèÒÿþlBRèÒÿþmBRèÞÿþlBRèÞÿþmFBèêÿþlFBèêÿþm@Gèðÿþl@GèðÿþmFBèöÿþlFBèöÿþm@Gèüÿþl@GèüÿþmFBéÿþlFBéÿþmBRéÿþlBRéÿþmBRé&ÿþlBRé&ÿþmFBé2ÿþlFBé2ÿþm@Gé8ÿþl@Gé8ÿþmFBé>ÿþlFBé>ÿþm@GéDÿþl@GéDÿþmFBéJÿþlFBéJÿþmBRébÿþlBRébÿþmBRénÿþlBRénÿþmFBézÿþlFBézÿþm@Gé€ÿþl@Gé€ÿþmFBé†ÿþlFBé†ÿþm@GéŒÿþl@GéŒÿþmFBé’ÿþlFBé’ÿþmBRéªÿþlBRéªÿþmBRé¶ÿþlBRé¶ÿþmFBéÂÿþlFBéÂÿþm@GéÈÿþl@GéÈÿþmFBéÎÿþlFBéÎÿþm@GéÔÿþl@GéÔÿþmFBéÚÿþlFBéÚÿþmBRéòÿþlBRéòÿþmBRéþÿþlBRéþÿþmFBê ÿþlFBê ÿþm@Gêÿþl@GêÿþmFBêÿþlFBêÿþm@Gêÿþl@GêÿþmFBê"ÿþlFBê"ÿþmBRê:ÿþlBRê:ÿþmBRêFÿþlBRêFÿþmFBêRÿþlFBêRÿþm@GêXÿþl@GêXÿþmFBê^ÿþlFBê^ÿþm@Gêdÿþl@GêdÿþmFBêjÿþlFBêjÿþmBRê‚ÿþlBRê‚ÿþmBRêŽÿþlBRêŽÿþmFBêšÿþlFBêšÿþm@Gê ÿþl@Gê ÿþmFBê¦ÿþlFBê¦ÿþm@Gê¬ÿþl@Gê¬ÿþmFBê²ÿþlFBê²ÿþm.textÊk$]ÿþŒ2ÿþŒMÿþŒiÿþŒŠÿþŒžÿþŒ¹ÿþŒ­$ÿþŒ­6ÿþŒ­GÿþŒ­WÿþŒ­{ÿþŒ¾6ÿþŒ¿KÿþŒ¿cÿþŒÀ‹ÿþŒÀœÿþŒÀËÿþŒÂÿþŒÃaÿþŒFYÊ eáîI8IÃvÿþŽ.bfÊe$Ûÿþ„êÿþ„.bbÊ d °.bbÊ d ®.ebÊ d .ebÊ d .bbÊ d ¸.bbÊ d ¶.ebÊ d .ebÊ d .efÊ e%øÿþŒĵÿþŒÄæÿþŒÅùÿþŒÆÛÿþŒÇ®ÿþŒÈ�ÿþŒÉTÿþŒFzÊh iâI£IÊ3hÿþŽ.bfÊhecÊPÿþ„Êiÿþ„º‘ÿþ„Ê}ÿþƒ.bbÊ´d #p:r37 ÿþƒ.bbÊüd!.bbÊüdÊ�ÿþƒ.bbË@dto:r106ÿþƒÊ›ÿþƒʧÿþƒʳÿþƒcvto:r62ÿþƒ.bbË€dàÊÀÿþƒ.ebËØd(.bbËØd*åat:r107ÿþƒ.ebÌ(d1.bbÌHd9.bbÌ`d;.bbÌ`d;.bbÌÀd>.bbÌÀd>p:r37 ÿþƒ.bbÍLdD.bbÍLdDpfr:r106ÿþƒ.bbÍ�dF pto:r106ÿþƒÊÎÿþƒ.bbÍÔdO .bbÍädP .bbÍädPat:r107ÿþƒ.ebÍädP.bbÍädPat:r107ÿþƒ.ebÍädP.ebÎtd}.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.ebÏtd.efÏxeêF“ÏÔ ‡ãŒI­IÊÚÔÿþŽ.bfÏÔeòp:R8 ÿþ„pt:r106ÿþƒ.efÐ$eöF¦Ð\ ã¤IâIÊñ\ÿþŽ.bfÐ\eûaddr:R8ÿþ„Ëÿþ„ti:R53ÿþ„.bbÐtdOplace:r8ÿþƒ.bbÐÄd&Gn:r108ÿþƒti:r54ÿþƒ.bbÐÄd&En:r108ÿþƒti:r54ÿþƒ.ebÐÄd&.ebÐÄd&.bbÐÄd&Mn:r108ÿþƒti:r54ÿþƒ.ebÐÄd&.ebÐÄd&.bbÐÜd.bn:r108ÿþƒti:r54ÿþƒ.bbÐÜd.\n:r108ÿþƒ.bbÐÜd.Z.ebÐÜd..ebÐÜd..bbÑd.`.ebÑd..ebÑ4d..efÑ4eûF²Ñp %äJIËpÿþŽ.bfÑpeÿaddr:R8ÿþ„n:R108ÿþ„Ë#ÿþ„ti:R53ÿþ„.bbÑŒdˆplace:r8ÿþƒ.bbÑàd&n:r108ÿþƒa:r62ÿþƒt:r54ÿþƒ.bbÑàd&}n:r108ÿþƒa:r62ÿþƒt:r54ÿþƒ.ebÑàd&.ebÑàd&.bbÑàd&†n:r108ÿþƒa:r62ÿþƒt:r54ÿþƒ.ebÑàd&.ebÑàd&.bbÑød:œn:r108ÿþƒa:r62ÿþƒt:r54ÿþƒ.bbÑød:–n:r108ÿþƒ.bbÑød:”.ebÑød:.ebÑød:.bbÒ4d:š.ebÒ4d:.ebÒTd:.efÒTeF¿Ò˜ ädJLIË1˜ÿþŽ.bfÒ˜eaddr:R8ÿþ„ËDÿþ„.bbÒ¬dºplace:r8ÿþƒ.bbÒød&³n:r108ÿþƒ.bbÒød&±n:r108ÿþƒ.ebÒød&.ebÒød&.bbÒød&¸n:r108ÿþƒ.ebÒød&.ebÒød&.bbÓdFÌn:r108ÿþƒ.bbÓdFÆn:r108ÿþƒ.bbÓdFÄ.ebÓdF.ebÓdF.bbÓLdFÊ.ebÓLdF.ebÓddF.efÓdeFÌÓ  äÄJ|IËP  ÿþŽ.bfÓ e addr:R8ÿþ„ËDÿþ„.bbÓ´dêplace:r8ÿþƒ.bbÔd&ãn:r108ÿþƒ.bbÔd&án:r108ÿþƒ.ebÔd&.ebÔd&.bbÔd&èn:r108ÿþƒ.ebÔd&.ebÔd&.bbÔdLün:r108ÿþƒ.bbÔdLön:r108ÿþƒ.bbÔdLô.ebÔdL.ebÔdL.bbÔTdLú.ebÔTdL.ebÔldL.efÔle FÙÔ¨ å$J¬IËc ¨ÿþŽ.bfÔ¨eaddr:R8ÿþ„ËDÿþ„.bbÔ¼dplace:r8ÿþƒ.bbÕd&n:r108ÿþƒ.bbÕd&n:r108ÿþƒ.ebÕd&.ebÕd&.bbÕd&n:r108ÿþƒ.ebÕd&.ebÕd&.bbÕ dR,n:r108ÿþƒ.bbÕ dR&n:r108ÿþƒ.bbÕ dR$.ebÕ dR.ebÕ dR.bbÕ\dR*.ebÕ\dR.ebÕtdR.efÕteFæÕ° å„JÜIËv °ÿþŽ.bfÕ°eaddr:R8ÿþ„ËDÿþ„.bbÕÄdJplace:r8ÿþƒ.bbÖd&Cn:r108ÿþƒ.bbÖd&An:r108ÿþƒ.ebÖd&.ebÖd&.bbÖd&Hn:r108ÿþƒ.ebÖd&.ebÖd&.bbÖ(dX\n:r108ÿþƒ.bbÖ(dXVn:r108ÿþƒ.bbÖ(dXT.ebÖ(dX.ebÖ(dX.bbÖddXZ.ebÖddX.ebÖ|dX.efÖ|eFôÖ¸ LåäJêIËŠ ¸ÿþŽ.bfÖ¸eËžÿþ„to:R109ÿþ„ºÿþ„˳ÿþ„sub:R109ÿþ„ºÿþ„.efפe.__tfvØ ûåöKIËÀÿþŽ.bfØe).bbØdš.bbØ,d˜.bbØ,d&†.bbØ`d&€.bbØ`d&~.ebØ`d&.ebØ`d&.bbØ`d&„.ebØ`d&.ebØ`d&.bbØxd@–.bbØxd@�.bbØxd@Ž.ebØxd@.ebØxd@.bbظd@”.ebظd@.ebØÐd@.ebØÐd.ebØÐd.efØÔe).__tfxÙ ÷æ>KJIËÌÿþŽ.bfÙe).bbÙ dÊ.bbÙ(dÈ.bbÙ(d&¶.bbÙ\d&°.bbÙ\d&®.ebÙ\d&.ebÙ\d&.bbÙ\d&´.ebÙ\d&.ebÙ\d&.bbÙtd@Æ.bbÙtd@À.bbÙtd@¾.ebÙtd@.ebÙtd@.bbÙ´d@Ä.ebÙ´d@.ebÙÌd@.ebÙÌd.ebÙÌd.efÙÐe).__tflÙø ÷æ†KzIËØøÿþŽ.bfÙøe).bbÚdú.bbÚ dø.bbÚ d&æ.bbÚTd&à.bbÚTd&Þ.ebÚTd&.ebÚTd&.bbÚTd&ä.ebÚTd&.ebÚTd&.bbÚld@ö.bbÚld@ð.bbÚld@î.ebÚld@.ebÚld@.bbÚ¬d@ô.ebÚ¬d@.ebÚÄd@.ebÚÄd.ebÚÄd.efÚÈe).__tfiÚð ÷æÎKªIËäðÿþŽ.bfÚðe).bbÚüd*.bbÛd(.bbÛd&.bbÛLd&.bbÛLd&.ebÛLd&.ebÛLd&.bbÛLd&.ebÛLd&.ebÛLd&.bbÛdd@&.bbÛdd@ .bbÛdd@.ebÛdd@.ebÛdd@.bbÛ¤d@$.ebÛ¤d@.ebÛ¼d@.ebÛ¼d.ebÛ¼d.efÛÀe).__tfsÛè ÷çKÚIËðèÿþŽ.bfÛèe).bbÛôdZ.bbÜdX.bbÜd&F.bbÜDd&@.bbÜDd&>.ebÜDd&.ebÜDd&.bbÜDd&D.ebÜDd&.ebÜDd&.bbÜ\d@V.bbÜ\d@P.bbÜ\d@N.ebÜ\d@.ebÜ\d@.bbÜœd@T.ebÜœd@.ebÜ´d@.ebÜ´d.ebÜ´d.efܸe).__tfbÜà ÷ç^L IËüàÿþŽ.bfÜàe).bbÜìdŠ.bbÝdˆ.bbÝd&v.bbÝ<d&p.bbÝ<d&n.ebÝ<d&.ebÝ<d&.bbÝ<d&t.ebÝ<d&.ebÝ<d&.bbÝTd@†.bbÝTd@€.bbÝTd@~.ebÝTd@.ebÝTd@.bbÝ”d@„.ebÝ”d@.ebݬd@.ebݬd.ebݬd.efݰe).__tfcÝØ ÷ç¦L:IÌØÿþŽ.bfÝØe*.bbÝädº.bbÞd¸.bbÞd&¦.bbÞ4d& .bbÞ4d&ž.ebÞ4d&.ebÞ4d&.bbÞ4d&¤.ebÞ4d&.ebÞ4d&.bbÞLd@¶.bbÞLd@°.bbÞLd@®.ebÞLd@.ebÞLd@.bbÞŒd@´.ebÞŒd@.ebÞ¤d@.ebÞ¤d.ebÞ¤d.efÞ¨e*.__tfwÞÐ ÷çîLjIÌÐÿþŽ.bfÞÐe*.bbÞÜdê.bbÞødè.bbÞød&Ö.bbß,d&Ð.bbß,d&Î.ebß,d&.ebß,d&.bbß,d&Ô.ebß,d&.ebß,d&.bbßDd@æ.bbßDd@à.bbßDd@Þ.ebßDd@.ebßDd@.bbß„d@ä.ebß„d@.ebßœd@.ebßœd.ebßœd.efß e*.__tfrßÈ ÷è6LšIÌ ÈÿþŽ.bfßÈe*.bbßÔd.bbßðd.bbßðd&.bbà$d&.bbà$d&þ.ebà$d&.ebà$d&.bbà$d&.ebà$d&.ebà$d&.bbà<d@.bbà<d@.bbà<d@.ebà<d@.ebà<d@.bbà|d@.ebà|d@.ebà”d@.ebà”d.ebà”d.efà˜e*.__tfdàÀ ÷è~LÊIÌ,ÀÿþŽ.bfàÀe*.bbàÌdJ.bbàèdH.bbàèd&6.bbád&0.bbád&..ebád&.ebád&.bbád&4.ebád&.ebád&.bbá4d@F.bbá4d@@.bbá4d@>.ebá4d@.ebá4d@.bbátd@D.ebátd@.ebáŒd@.ebáŒd.ebáŒd.efá�e*.__tffḠ÷èÆLúIÌ8¸ÿþŽ.bfá¸e*.bbáÄdz.bbáàdx.bbáàd&f.bbâd&`.bbâd&^.ebâd&.ebâd&.bbâd&d.ebâd&.ebâd&.bbâ,d@v.bbâ,d@p.bbâ,d@n.ebâ,d@.ebâ,d@.bbâld@t.ebâld@.ebâ„d@.ebâ„d.ebâ„d.efâˆe*.__tfUiâ° øéM*IÌD°ÿþŽ.bfâ°e+.bbâ¼dª.bbâØd¨.bbâØd&–.bbã d&�.bbã d&Ž.ebã d&.ebã d&.bbã d&”.ebã d&.ebã d&.bbã$d@¦.bbã$d@ .bbã$d@ž.ebã$d@.ebã$d@.bbãdd@¤.ebãdd@.ebã|d@.ebã|d.ebã|d.efã€e+.__tfUl㨠øéVMZIÌQ¨ÿþŽ.bfã¨e+.bbã´dÚ.bbãÐdØ.bbãÐd&Æ.bbäd&À.bbäd&¾.ebäd&.ebäd&.bbäd&Ä.ebäd&.ebäd&.bbäd@Ö.bbäd@Ð.bbäd@Î.ebäd@.ebäd@.bbä\d@Ô.ebä\d@.ebätd@.ebätd.ebätd.efäxe+.__tfUxä  øéžMŠIÌ^ ÿþŽ.bfä e+.bbä¬d .bbäÈd.bbäÈd&ö.bbäüd&ð.bbäüd&î.ebäüd&.ebäüd&.bbäüd&ô.ebäüd&.ebäüd&.bbåd@.bbåd@.bbåd@þ.ebåd@.ebåd@.bbåTd@.ebåTd@.ebåld@.ebåld.ebåld.efåpe+.__tfUså˜ øéæMºIÌk˜ÿþŽ.bfå˜e+.bbå¤d:.bbåÀd8.bbåÀd&&.bbåôd& .bbåôd&.ebåôd&.ebåôd&.bbåôd&$.ebåôd&.ebåôd&.bbæ d@6.bbæ d@0.bbæ d@..ebæ d@.ebæ d@.bbæLd@4.ebæLd@.ebædd@.ebædd.ebædd.efæhe+.__tfUcæ� øê.MêIÌx�ÿþŽ.bfæ�e+.bbæœdj.bbæ¸dh.bbæ¸d&V.bbæìd&P.bbæìd&N.ebæìd&.ebæìd&.bbæìd&T.ebæìd&.ebæìd&.bbçd@f.bbçd@`.bbçd@^.ebçd@.ebçd@.bbçDd@d.ebçDd@.ebç\d@.ebç\d.ebç\d.efç`e+.__tfScçˆ øêvNIÌ…ˆÿþŽ.bfçˆe,.bbç”dš.bbç°d˜.bbç°d&†.bbçäd&€.bbçäd&~.ebçäd&.ebçäd&.bbçäd&„.ebçäd&.ebçäd&.bbçüd@–.bbçüd@�.bbçüd@Ž.ebçüd@.ebçüd@.bbè<d@”.ebè<d@.ebèTd@.ebèTd.ebèTd.efèXe,.bsNÇ�Ì’ÿþ….es�.bsNÇ�̼ÿþ….es�.bsNÇ�ÌÚ0ÿþ….es�.bsNÇ�ÌøHÿþ….es�.bsNÇ�Í`ÿþ….es�.bsNÇ�Í7xÿþ….es�.bsNÇ�ÍU�ÿþ….es�Ívÿþ€ͤÿþ€ÍÂÿþ€Íãÿþ€Îÿþ€Îÿþ€Î=ÿþ€Gè€ kVê¾N@IÎ\€ÿþŽ.bfè€e,this:R59ÿþ„1™ÿþ„.efè”e,GèØ kƒêÊNHIÎ|ØÿþŽ.bfèØe,.efée,G9é\ kSêÖNRIΜ\ÿþŽ.bfé\e,this:R67ÿþ„1™ÿþ„.efépe,GPé° k€êâNZIι°ÿþŽ.bfé°e,.eféðe,Ghê0 kVêîNdIÎÖ 0ÿþŽ.bfê0e,this:R74ÿþ„1™ÿþ„.efêDe,G‚êˆ kƒêúNlIÎö ˆÿþŽ.bfêˆe,.efêÈe,G�ë  kSëNvIÏ! ÿþŽ.bfë e,this:R81ÿþ„1™ÿþ„.efë e,G´ë` k€ëN~IÏ3!`ÿþŽ.bfë`e,.efë e,GÌëà kSëNˆIÏP!àÿþŽ.bfëàe,this:R88ÿþ„1™ÿþ„.efëôe,Gãì4 k€ë*N�IÏm"4ÿþŽ.bfì4e,.efìte,Gûì´ kSë6NšIÏŠ"´ÿþŽ.bfì´e,this:R95ÿþ„1™ÿþ„.efìÈe,Hí k€ëBN¢Iϧ#ÿþŽ.bfíe,.efíHe,H*íˆ kTëNN¬IÏÄ#ˆÿþŽ.bfíˆe,Ïâÿþ„1™ÿþ„.efíœe,HBíÜ k�ëZN´IÏî#ÜÿþŽ.bfíÜe,.efîe,Ð ÿþ€Ð%ÿþ€Ð2ÿþ€Ð?ÿþ€ÐL ÿþ€ÐY(ÿþ€Ðf0ÿþ€Ðs8ÿþ€Ѐ@ÿþ€Ð�Hÿþ€КPÿþ€ЧXÿþ€е`ÿþ€ÐÃhÿþ€ÐÑpÿþ€Ðßxÿþ€Ðí€ÿþ€H[pxkäH[ €k¨.data (kŒ__tiv (NÉ__tix 0NÉ__til 8NÉ__tii @NÉ__tis HNÉ__tib PNÉ__tic XNÉ__tiw `NÉ__tir hNÉ__tid pNÉ__tif xNÉ__tiUi €NÉ__tiUl ˆNÉ__tiUx �NÉ__tiUs ˜NÉ__tiUc  NÉ__tiSc ¨NÉG Äk  · (k  G: ¸k  Ñ 4k  Gi ¬k  Gƒ  k  Gž ”k  è @k  GÍ ˆk  Gä |k  Gü pk  H dk  H+ Xk  HC Lk  § 48 Á 4H Ø 4X ò 4h  4x  4ˆ  7 4˜ HiOÿþ gHs�(Ê`mÐkH}O!ÿþ gHˆj»%’Ðkstrcmp.sO$ÿþ g.strcmpÙ€0)moveeq.sO/ÿþ g.bcopyÎà×).ovbcopyÎàO%._moveeqÏO%.memcpyÏO%.memmoveÏO%nonamePÿþ g.fsavиbH“иO0H�иO0H§иO0H±мO0H»мO0HÅмO0HÏÐÀO0HÙÐÀO0HãÐÀO0HíÐÄO0H÷ÐÄO0IÐÄO0I ÐÈO0IÐÈO0IÐÈO0I)ÐÌO0I3ÐÌO0I=ÐÌO0IGÐÐO0IQÐÐO0I[ÐÐO0IeÐÔO0IoÐÔO0IyÐÔO0IƒÐØO0I�ÐØO0I—ÐØO0I¡ÐÜO0I«ÐÜO0IµÐÜO0I¿ÐàO0IÉÐàO0IÓÐàO0IÝÐäO0IçÐäO0IñÐäO0IûÐèO0JÐèO0JÐèO0JÐìO0J#ÐìO0J-ÐìO0J7ÐðO0JAÐðO0JKÐðO0JUÐôO0J_ÐôO0JiÐôO0JsÐøO0J}ÐøO0J‡ÐøO0J‘ÐüO0J›ÐüO0J¥ÐüO0._savef3ÐüO0.fresÛ(bJ¯Û(O J¹Û(O JÃÛ(O JÍÛ,O J×Û,O JáÛ,O JëÛ0O JõÛ0O JÿÛ0O K Û4O KÛ4O KÛ4O K'Û8O K1Û8O K;Û8O KEÛ<O KOÛ<O KYÛ<O KcÛ@O KmÛ@O KwÛ@O K�ÛDO K‹ÛDO K•ÛDO KŸÛHO K©ÛHO K³ÛHO K½ÛLO KÇÛLO KÑÛLO KÛÛPO KåÛPO KïÛPO KùÛTO LÛTO L ÛTO LÛXO L!ÛXO L+ÛXO L5Û\O L?Û\O LIÛ\O LSÛ`O L]Û`O LgÛ`O LqÛdO L{ÛdO L…ÛdO L�ÛhO L™ÛhO L£ÛhO L­ÛlO L·ÛlO LÁÛlO ._restf3ÛlO glink.sPÿþ gLËk(LËPglink.sPÿþ g.exitük(.exitüPglink.sPÿþ g.my_init\k(.my_init\Pglink.sP$ÿþ g.strmov„k(.strmov„P glink.sP)ÿþ g.isattyÞXk(.isattyÞXP%glink.sP.ÿþ gL׬k(L׬P*glink.sP3ÿþ g.my_endÔk(.my_endÔP/glink.sP8ÿþ gLæ $k(Læ $P4glink.sP=ÿþ g.signal\äk(.signal\äP9glink.sPBÿþ gLõ] k(Lõ] P>glink.sPGÿþ gM]4k(M]4PCglink.sPLÿþ g.sprintfRk(.sprintfRPHglink.sPQÿþ g.getenv]\k(.getenv]\PMglink.sPVÿþ gM]„k(M]„PRglink.sP[ÿþ g.strlen³Pk(.strlen³PPWglink.sP`ÿþ gM('ðk(M('ðP\glink.sPeÿþ gM3]¬k(M3]¬Paglink.sPjÿþ gMA]Ôk(MA]ÔPfglink.sPoÿþ gMN]ük(MN]üPkglink.sPtÿþ gM](k(M](Ppglink.sPyÿþ g.printf^$k(.printf^$Puglink.sP~ÿþ g.puts^Lk(.puts^LPzglink.sPƒÿþ gMo^tk(Mo^tPglink.sPˆÿþ gM^œk(M^œP„glink.sP�ÿþ g.atoi^Äk(.atoi^ÄP‰glink.sP’ÿþ gM˜^ìk(M˜^ìPŽglink.sP—ÿþ gM¬_k(M¬_P“glink.sPœÿþ gM¹_<k(M¹_<P˜glink.sP¡ÿþ gMÖ_dk(MÖ_dP�glink.sP¦ÿþ gMè_Œk(Mè_ŒP¢glink.sP«ÿþ g.fflush÷ˆk(.fflush÷ˆP§glink.sP°ÿþ g.fputs_´k(.fputs_´P¬glink.sPµÿþ gMõ_Ük(Mõ_ÜP±glink.sPºÿþ g.fprintfÛk(.fprintfÛP¶glink.sP¿ÿþ g.strchr`k(.strchr`P»glink.sPÄÿþ g.strstr`,k(.strstr`,PÀglink.sPÉÿþ g.strcont`Tk(.strcont`TPÅglink.sPÎÿþ gMÿ`|k(Mÿ`|PÊglink.sPÓÿþ g.strdup`¤k(.strdup`¤PÏglink.sPØÿþ gN `Ìk(N `ÌPÔglink.sPÝÿþ gN`ôk(N`ôPÙglink.sPâÿþ gN+ak(N+aPÞglink.sPçÿþ gN?aDk(N?aDPãglink.sPìÿþ gNLalk(NLalPèglink.sPñÿþ gN]a”k(N]a”Píglink.sPöÿþ gNma¼k(Nma¼Pòglink.sPûÿþ gN~aäk(N~aäP÷glink.sQÿþ gN‘b k(N‘b Püglink.sQÿþ gN£b4k(N£b4Qglink.sQ ÿþ gN¶b\k(N¶b\Qglink.sQÿþ gNÂb„k(NÂb„Q glink.sQÿþ gNÏb¬k(NÏb¬Qglink.sQÿþ gNábÔk(NábÔQglink.sQÿþ gNóbük(NóbüQglink.sQ#ÿþ gOc$k(Oc$Qglink.sQ(ÿþ gOcLk(OcLQ$glink.sQ-ÿþ gO'ctk(O'ctQ)glink.sQ2ÿþ gO2cœk(O2cœQ.glink.sQ7ÿþ gODcÄk(ODcÄQ3glink.sQ<ÿþ g.strmakecìk(.strmakecìQ8glink.sQAÿþ gOYdk(OYdQ=glink.sQFÿþ g.popend<k(.popend<QBglink.sQKÿþ gOcddk(OcddQGglink.sQPÿþ gOudŒk(OudŒQLglink.sQUÿþ gOd´k(Od´QQglink.sQZÿþ g.strxmovdÜk(.strxmovdÜQVglink.sQ_ÿþ g.systemek(.systemeQ[glink.sQdÿþ g.my_state,k(.my_state,Q`glink.sQiÿþ g.my_openeTk(.my_openeTQeglink.sQnÿþ g.readÍük(.readÍüQjglink.sQsÿþ gO‰e|k(O‰e|Qoglink.sQxÿþ g.strnmove¤k(.strnmove¤Qtglink.sQ}ÿþ g.strtokeÌk(.strtokeÌQyglink.sQ‚ÿþ gO”eôk(O”eôQ~glink.sQ‡ÿþ g.memsetÚØk(.memsetÚØQƒglink.sQŒÿþ gO¥fk(O¥fQˆglink.sQ‘ÿþ gO°fDk(O°fDQ�glink.sQ–ÿþ gOÁflk(OÁflQ’glink.sQ›ÿþ gOÍf”k(OÍf”Q—glink.sQ ÿþ gOÜf¼k(OÜf¼Qœglink.sQ¥ÿþ gOðfäk(OðfäQ¡glink.sQªÿþ gPg k(Pg Q¦glink.sQ¯ÿþ gPg4k(Pg4Q«glink.sQ´ÿþ g.str2intg\k(.str2intg\Q°glink.sQ¹ÿþ gP'g„k(P'g„Qµglink.sQ¾ÿþ gP1g¬k(P1g¬Qºglink.sQÃÿþ g.int2strjÐk(.int2strjÐQ¿glink.sQÈÿþ gP;jøk(P;jøQÄglink.sQÍÿþ g.pclosek k(.pclosek QÉglink.sQÒÿþ g.sleepkHk(.sleepkHQÎglink.sQ×ÿþ g.timeskpk(.timeskpQÓglink.sQÜÿþ g.sysconfk˜k(.sysconfk˜QØglink.sQáÿþ g.strendkÀk(.strendkÀQÝglink.sQæÿþ gPO' k(PO' Qâglink.sQëÿþ g.my_read'Èk(.my_read'ÈQçglink.sQðÿþ gP[QPk(P[QPQìglink.sQõÿþ g.caseupQxk(.caseupQxQñglink.sQúÿþ g.casednQ k(.casednQ Qöglink.sQÿÿþ gPfQÈk(PfQÈQûglink.sRÿþ gPyQðk(PyQðRglink.sR ÿþ g.memcmp\¼k(.memcmp\¼Rglink.sRÿþ g.closeÎtk(.closeÎtR glink.sRÿþ g.lseekÎ$k(.lseekÎ$Rglink.sRÿþ g.openÍÔk(.openÍÔRglink.sRÿþ g.atexitÞ0k(.atexitÞ0Rglink.sR"ÿþ g.freeœØk(.freeœØRglink.sR'ÿþ g.mallocÚ°k(.mallocÚ°R#glink.sR,ÿþ g.writeΜk(.writeΜR(glink.sR1ÿþ g.abortÙXk(.abortÙXR-glink.sR6ÿþ g.fclose÷`k(.fclose÷`R2glink.sR;ÿþ g.fwrite÷k(.fwrite÷R7glink.sR@ÿþ gPƒöÀk(PƒöÀR<glink.sREÿþ g.isupperh°k(.isupperh°RAglink.sRJÿþ g.isspaceTk(.isspaceTRFglink.sROÿþ g.memchr k(.memchr RKglink.sRTÿþ g.freadöèk(.freadöèRPglink.sRYÿþ g.fseek÷8k(.fseek÷8RUglink.sR^ÿþ g.fstatÎLk(.fstatÎLRZglink.sRcÿþ gP��ôk(P��ôR_glink.sÿÿÿÿÿþ gP›�k(P›�RdP¨rl_attempted_completion_functionrl_completion_entry_functionrl_readline_namecompletion_matchesadd_historywrite_historyread_historymy_prognamedefault_charset_infomax_allowed_packetnet_buffer_lengthcharsets_dirwild_manymysql_fetch_fieldmysql_fetch_lengthsmysql_fetch_rowmysql_field_seekmysql_data_seekmysql_free_resultmysql_optionsmysql_use_resultmysql_store_resultmysql_list_fieldsmysql_get_proto_infomysql_get_host_infomysql_get_server_infomysql_statmysql_real_querymysql_querymysql_select_dbmysql_closemysql_real_connectmysql_initmysql_thread_idmysql_infomysql_errormysql_errnomysql_affected_rowsmysql_field_countmysql_eofmysql_num_fieldsmysql_num_rowsload_defaultsmy_no_flags_freemy_strdupfree_defaultsmy_mallocmy_reallocget_tty_passwordmy_deletecreate_temp_filemy_sortcmpmy_casecmpunpack_filenamebmove_uppmy_fcloseprint_defaultsset_default_charset_by_namegetopt_longset_changeable_varset_all_changeable_varslonglong10_to_str_system_configurationfp_raise_xcpfp_read_rnd__mod_init__C_runtime_pstartupcrt0_data_IO_list_all__terminate_funcget_eh_contexteh_context_staticinitialized.40top_elt.41_vt.7filebuf_IO_cleanup_registration_needed_IO_cleanup_vt.8stdiobuf_vt.12istdiostream.3ios_vt.7istream.3iosbasefix.3FD_43300000_0FD_3fe00000_0FD_40000000_0FD_3ff00000_0FD_bff00000_0_0x00000000itrunc_constFD_43300000_80000000FD_3fdfffff_94a03595FD_3fe00000_35afe535FD_3fcfffff_94a03595result.70result_k.71FD_3ff80000_0FD_3fd287a7_636f4361FD_3fc68a28_8b60c8b3FD_3fd34413_509f79fbFD_40240000_0FD_401c0000_0FD_40140000_0__clz_tab_vt.7ostream.3ios_vt.8iostream.3ios__unexpected_func_vt.9type_info_vt.16__user_type_info_vt.17__class_type_info_vt.14__si_type_info__ti9type_info__ti8bad_cast__ti9exception_vt.9exception_vt.8bad_cast__ti10bad_typeid_vt.10bad_typeid__ti16__user_type_info__ti14__si_type_info__ti17__class_type_info__tf16__user_type_info__tf9type_info__tf19__pointer_type_info__tf16__attr_type_info__tf16__func_type_info_vt.19__pointer_type_info_vt.16__attr_type_info_vt.16__func_type_info_vt.16__ptmf_type_info_vt.16__ptmd_type_info_vt.17__array_type_info_vt.19__builtin_type_info__ti19__pointer_type_info__ti16__attr_type_info__ti19__builtin_type_info__ti16__func_type_info__ti16__ptmf_type_info__ti16__ptmd_type_info__ti17__array_type_info__cplus_type_matcher_._13bad_exception_vt.13bad_exception_._8bad_cast_._10bad_typeid__ti13bad_exception_vt.22_IO_istream_withassign.3ios_vt.22_IO_ostream_withassign.3ios__ti7ostream__ti7istream__new_handler__ti9bad_alloc_._9bad_alloc_vt.9bad_alloc__ti8iostream__ti22_IO_istream_withassign__ti22_IO_ostream_withassign_vt.12ostdiostream.3ios__ti8stdiobuf__ti7filebuf__ti12istdiostream__ti12ostdiostream_vt.9streambuf__ti11_ios_fieldsuse_stdiobuf_IO_stdin_buf_IO_stdout_buf_IO_stderr_buf_IO_stdin__IO_stdout__IO_stderr___ti9streambuf__ti8_IO_FILE__CTOR_LIST____do_global_dtorsinitialized.10opt_silentignore_errorsload_default_groupsglob_bufferhashpjw__FPcUicurrent_hostcurrent_dbcurrent_useropt_passwordmysql_end__Fiopt_outfileconnectedold_bufferopt_mysql_unix_portinfo_flagchangeable_varsdefault_charsetopt_nopagerdefault_pagersafe_updatesone_databaseskip_updatesoutput_tablesopt_raw_dataunbufferedwait_flagwait_timeno_rehashno_named_cmdsconnect_flagopt_compressskip_line_numbersskip_column_namesopt_mysql_portlong_options_._6Stringtextlen.138tables.146databases.145field_names.148fields.147opt_connect_timeoutselect_limitmax_join_sizeinited.239FD_40f51800_0uitrunc_constFD_40ac2000_0FD_404e0000_0new_mysql_completion__FPciino_completion__FPcT0new_command_generator__FPcicrt0main.s../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cTue Aug 18 09:04:53 1998 C Set ++ for AIX Compiler Version 4.1.0.0 --- .__threads_init_pthread_init_routine_bsd_init_routine_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routine/tmp/cccN083l.c__DTOR_LIST____main_reference.mysql_end__Fi.usage__Fi.get_options__FiPPc.read_lines__Fb.find_command__FPcc.add_line__FR6StringPcT1.new_command_generator__FPci.build_completion_hash__FbT0.com_help__FP6StringPc.com_go__FP6StringPc.print_table_data__FP12st_mysql_res.print_table_data_html__FP12st_mysql_res.print_table_data_vertically__FP12st_mysql_res.safe_put_field__FPCcUl.print_tab_data__FP12st_mysql_res.com_tee__FP6StringPc.com_pager__FP6StringPc.com_edit__FP6StringPc.com_connect__FP6StringPc.com_source__FP6StringPc.com_use__FP6StringPc.sql_real_connect__FPcN30Ui.com_status__FP6StringPc.put_info__FPCc14enum_info_typeUi.tee_fprintf__FP4FILEPCce.nice_time__FdPcb.__static_initialization_and_destruction_0.no_completion__FPcT0.initialize_readline__FPc.new_mysql_completion__FPcii.com_clear__FP6StringPc.init_pager__Fv.end_pager__Fv.init_tee__Fv.end_tee__Fv.com_ego__FP6StringPc.com_notee__FP6StringPc.com_nopager__FP6StringPc.com_quit__FP6StringPc.com_rehash__FP6StringPc.com_print__FP6StringPc.sql_connect__FPcN30Ui.remove_cntrl__FR6String.tee_fputs__FPCcP4FILE.tee_puts__FPCcP4FILE.tee_putc__FiP4FILE.start_timer__Fv.mysql_end_timer__FUlPc.sql_alloc__FUi.sql_element_free__FPv._GLOBAL_.I.VER._GLOBAL_.D.VER_mysql.rw_cc_mysql.bss_ccreadline.cc.fill_buffer__FP14st_line_buffer.batch_readline_init__FUlP4FILE.batch_readline__FP14st_line_buffer.batch_readline_end__FP14st_line_buffer.batch_readline_command__FPc.init_line_buffer__FP14st_line_bufferiUlUl.init_line_buffer_from_string__FP14st_line_bufferPc.intern_read_line__FP14st_line_bufferPUlsql_string.cc.append__6StringRC6String.append__6StringPCcUi.append__6StringP11st_io_cacheUi.replace__6StringUiUiRC6String.sortcmp__FPC6StringT0.copy_if_not_alloced__FP6StringT0Ui.wild_case_compare__FPCcN30c.wild_compare__FPCcN30c.__6String.__6StringUi.__6StringPCc.__6StringPCcUi.__6StringPcUi.__6StringRC6String.__nw__6StringUl.__dl__6StringPvUl._._6String.length__C6String.alloced_length__C6String.__vc__C6StringUi.length__6StringUi.is_empty__6String.ptr__C6String.c_ptr__6String.c_ptr_quick__6String.set__6StringR6StringUiUi.set__6StringPcUi.set__6StringPCcUi.set_quick__6StringPcUi.free__6String.alloc__6StringUi.shrink__6StringUi.is_alloced__6String.__as__6StringRC6String.append__6Stringc.caseup__6String.casedn__6String.real_alloc__6StringUi.realloc__6StringUi.set__6Stringx.set__6StringUx.set__6StringdUi.copy__6String.copy__6StringRC6String.copy__6StringPCcUi.fill__6StringUic.strip_sp__6String.numchars__6String.charpos__6StringiUi.strstr__6StringRC6StringUi.strrstr__6StringRC6StringUi.stringcmp__FPC6StringT0.wild_case_compare__FR6StringT0c.wild_compare__FR6StringT0c_sqlstring.rw_cccompletion_hash.cc.completion_hash_update__FP9hashtablePcUiT1.find_longest_match__FP9hashtablePcUiPUi.hashpjw__FPcUi.completion_hash_init__FP9hashtableUi.completion_hash_exists__FP9hashtablePcUi.find_all_matches__FP9hashtablePcUiPUi.completion_hash_clean__FP9hashtable.completion_hash_free__FP9hashtable.add_word__FP9hashtablePc../../../../../../../src/bos/usr/ccs/lib/libm/POWER/floor.cWed Aug 5 12:22:31 1998 ../../../libio/filedoalloc.c._IO_file_doallocate../../../libio/floatconv.c.test_endianness.Brealloc.pow5mult._IO_strtod._IO_dtoa_floatconv.rw_c_floatconv.bss_c../../../libio/genops.c._IO_un_link._IO_link_in._IO_least_marker._IO_switch_to_main_get_area._IO_switch_to_backup_area._IO_switch_to_get_mode._IO_free_backup_area.__overflow.save_for_backup.__underflow._IO_setb._IO_doallocbuf._IO_default_underflow._IO_default_uflow._IO_default_xsputn._IO_sgetn._IO_default_xsgetn._IO_default_setbuf._IO_default_seekpos._IO_default_doallocate._IO_init._IO_default_sync._IO_default_finish._IO_default_seekoff._IO_sputbackc._IO_sungetc._IO_adjust_column._IO_flush_all._IO_flush_all_linebuffered._IO_unbuffer_all._IO_cleanup._IO_init_marker._IO_remove_marker._IO_marker_difference._IO_marker_delta._IO_seekmark._IO_unsave_markers._IO_default_pbackfail._IO_default_seek._IO_default_stat._IO_default_read._IO_default_write../../../libio/fileops.c._IO_file_init._IO_file_close_it._IO_file_finish._IO_file_fopen._IO_file_attach._IO_file_setbuf._IO_do_write._IO_file_underflow._IO_file_overflow._IO_file_sync._IO_file_seekoff._IO_file_read._IO_file_seek._IO_file_stat._IO_file_close._IO_file_write._IO_file_xsputn../../../libio/iovfscanf.c._IO_vfscanf_iovfscanf.rw_c../../../libio/iopadn.c._IO_padn_iopadn.rw_c../../../libio/iogetline.c._IO_getline._IO_getline_info../../../libio/ioseekoff.c._IO_seekoff../../../libio/ioseekpos.c._IO_seekpos../../../libio/outfloat.c._IO_outfloat../../../libio/ioungetc.c._IO_ungetc../../../libio/iogetc.c._IO_getc../../../libio/ioputc.c._IO_putc../../../libio/filebuf.cc../../../libio/streambuf.h.init__7filebuf.__7filebuf.__7filebufi.__7filebufiPci._._7filebuf.open__7filebufPCcii.open__7filebufPCcT1.attach__7filebufi.setbuf__7filebufPci.doallocate__7filebuf.overflow__7filebufi.underflow__7filebuf.sync__7filebuf.seekoff__7filebuflQ23ios8seek_diri.close__7filebuf.sys_read__7filebufPcl.sys_seek__7filebuflQ23ios8seek_dir.sys_write__7filebufPCcl.sys_stat__7filebufPv.sys_close__7filebuf.xsputn__7filebufPCcl.xsgetn__7filebufPcl../../../libio/ioassign.cc.__as__22_IO_istream_withassignR7istream.__as__22_IO_ostream_withassignR7ostream../../../libio/iostream.cc../../../libio/iostream.h.__7istreamiP9streambufP7ostream.skip_ws__FP9streambuf.get__7istreamRc.peek__7istream.ignore__7istreamii.read__7istreamPcl.sync__7istream.seekg__7istreaml.seekg__7istreamlQ23ios8seek_dir.tellg__7istream.__rs__7istreamRc.__rs__7istreamPc.read_int__FR7istreamRUxRi.__rs__7istreamRs.__rs__7istreamRUs.__rs__7istreamRi.__rs__7istreamRUi.__rs__7istreamRl.__rs__7istreamRUl.__rs__7istreamRx.__rs__7istreamRUx.__rs__7istreamRb.__rs__7istreamRr.__rs__7istreamRd.__rs__7istreamRf.__rs__7istreamP9streambuf.__ls__7ostreamc.write_int__FR7ostreamUxi.__ls__7ostreami.__ls__7ostreamUi.__ls__7ostreaml.__ls__7ostreamUl.__ls__7ostreamx.__ls__7ostreamUx.__ls__7ostreamd.__ls__7ostreamPCc.__ls__7ostreamP9streambuf.__7ostreamiP9streambufP7ostream.seekp__7ostreaml.seekp__7ostreamlQ23ios8seek_dir.tellp__7ostream.flush__7ostream.flush__FR7ostream.ws__FR7istream._skip_ws__7istream.ends__FR7ostream.endl__FR7ostream.lock__FR7istream.unlock__FR7istream.lock__FR7ostream.unlock__FR7ostream.write__7ostreamPCcl.do_osfx__7ostream.__8iostreamiP9streambufP7ostream.close__3ios.skip__7istreami._._8iostream._._22_IO_istream_withassign._._22_IO_ostream_withassign._._7ostream.__tf7ostream.__7ostreami.opfx__7ostream.osfx__7ostream.put__7ostreamc.put__7ostreamUc.put__7ostreamSc.write__7ostreamPCUcl.write__7ostreamPCScl.write__7ostreamPCvl.__ls__7ostreamUc.__ls__7ostreamSc.__ls__7ostreamPCUc.__ls__7ostreamPCSc.__ls__7ostreams.__ls__7ostreamUs.__ls__7ostreamb.__ls__7ostreamf.__ls__7ostreamr.__ls__7ostreamPFR7ostream_R7ostream.__ls__7ostreamPFR3ios_R3ios.ostreambuf__C7ostream._._7istream.__tf7istream.__7istreami.get__7istreamPUcic.get__7istreamRUc.getline__7istreamPUcic.get__7istreamRSc.get__7istreamPScic.getline__7istreamPScic.read__7istreamPUcl.read__7istreamPScl.read__7istreamPvl.ipfx__7istreami.ipfx0__7istream.ipfx1__7istream.isfx__7istream.get__7istream.gcount__7istream.putback__7istreamc.unget__7istream.unget__7istreamc.istreambuf__C7istream.__rs__7istreamPUc.__rs__7istreamPSc.__rs__7istreamRUc.__rs__7istreamRSc.__rs__7istreamPFR3ios_R3ios.__rs__7istreamPFR7istream_R7istream.__tf8iostream.__8iostreami.__tf22_IO_istream_withassign.__as__22_IO_istream_withassignR22_IO_istream_withassign.__tf22_IO_ostream_withassign.__as__22_IO_ostream_withassignR22_IO_ostream_withassign.dec__FR3ios.hex__FR3ios.oct__FR3ios_iostream.rw_cc../../../libio/isgetline.cc.getline__7istreamPcic.get__7istreamPcic._sb_readline__FP9streambufRlc.gets__7istreamPPcc../../../libio/isscan.cc.scan__7istreamPCce.vscan__7istreamPCcPc../../../libio/sbscan.cc.vscan__9streambufPCcPcP3ios.scan__9streambufPCce../../../libio/stdiostream.cc../../../libio/stdiostream.h.__8stdiobufP4FILE._._8stdiobuf.sys_read__8stdiobufPcl.sys_write__8stdiobufPCcl.sys_seek__8stdiobuflQ23ios8seek_dir.sys_close__8stdiobuf.sync__8stdiobuf.overflow__8stdiobufi.xsputn__8stdiobufPCcl.buffered__8stdiobufi._._12istdiostream._._12ostdiostream.__tf8stdiobuf.stdiofile__C8stdiobuf.buffered__C8stdiobuf.__tf12istdiostream.__12istdiostreamiP4FILE.rdbuf__12istdiostream.buffered__C12istdiostream.buffered__12istdiostreami.__tf12ostdiostream.__12ostdiostreamiP4FILE.rdbuf__12ostdiostream.buffered__C12ostdiostream.buffered__12ostdiostreami_stdiostream.rw_cc../../../libio/stdstrbufs.cc../../../libio/stdstreams.cc.sync_with_stdio__3iosi_stdstreams.rw_cc../../../libio/streambuf.cc._un_link__9streambuf._link_in__9streambuf.switch_to_get_mode__9streambuf.free_backup_area__9streambuf.__overflow__FP9streambufi.underflow__9streambuf.uflow__9streambuf.overflow__9streambufi.xsputn__9streambufPCcl.xsgetn__9streambufPcl.ignore__9streambufi.sync__9streambuf.pbackfail__9streambufi.setbuf__9streambufPci.seekpos__9streambufli.sseekpos__9streambufli.setb__9streambufPcT1i.doallocate__9streambuf.doallocbuf__9streambuf.__9streambufi._._9streambuf.seekoff__9streambuflQ23ios8seek_diri.sseekoff__9streambuflQ23ios8seek_diri.sputbackc__9streambufc.sungetc__9streambuf.get_column__9streambuf.set_column__9streambufi.flush_all__9streambuf.flush_all_linebuffered__9streambuf.sys_stat__9streambufPv.sys_read__9streambufPcl.sys_write__9streambufPCcl.sys_seek__9streambuflQ23ios8seek_dir.sys_close__9streambuf.__12streammarkerP9streambuf._._12streammarker.delta__12streammarkerR12streammarker.delta__12streammarker.seekmark__9streambufR12streammarkeri.unsave_markers__9streambuf.readable__3ios.writable__3ios.is_open__3ios.__tf3ios.tie__C3ios.tie__3iosP7ostream.fill__C3ios.fill__3ioss.flags__C3ios.flags__3iosUl.precision__C3ios.precision__3iosi.setf__3iosUl.setf__3iosUlUl.unsetf__3iosUl.width__C3ios.width__3iosi._throw_failure__C3ios.clear__3iosi.set__3iosi.setstate__3iosi.good__C3ios.eof__C3ios.fail__C3ios.bad__C3ios.rdstate__C3ios.__opPv__C3ios.__nt__C3ios.exceptions__C3ios.exceptions__3iosi.rdbuf__C3ios.rdbuf__3iosP9streambuf.sync_with_stdio__3ios.unset__3ios11state_value.__Q23ios4Init.set_offset__12streammarkeri.saving__12streammarker.__tf9streambuf._vtable__9streambuf.xchain__9streambuf.gptr__C9streambuf.pptr__C9streambuf.egptr__C9streambuf.epptr__C9streambuf.pbase__C9streambuf.eback__C9streambuf.base__C9streambuf.ebuf__C9streambuf.blen__C9streambuf.xput_char__9streambufc.xflags__9streambuf.xflags__9streambufi.xsetflags__9streambufi.xsetflags__9streambufii.gbump__9streambufi.pbump__9streambufi.setp__9streambufPcT1.setg__9streambufPcN21.shortbuf__9streambuf.in_backup__9streambuf.Gbase__9streambuf.eGptr__9streambuf.Bbase__9streambuf.Bptr__9streambuf.eBptr__9streambuf.Nbase__9streambuf.eNptr__9streambuf.have_backup__9streambuf.have_markers__9streambuf.put_mode__9streambuf.pubseekoff__9streambuflQ23ios8seek_diri.pubseekpos__9streambufli.unbuffered__9streambuf.linebuffered__9streambuf.unbuffered__9streambufi.linebuffered__9streambufi.allocate__9streambuf.allocbuf__9streambuf.in_avail__9streambuf.out_waiting__9streambuf.sputn__9streambufPCcl.padn__9streambufcl.sgetn__9streambufPcl.sputc__9streambufi.sbumpc__9streambuf.sgetc__9streambuf.snextc__9streambuf.stossc__9streambuf.__tf7filebuf.is_open__C7filebuf.fd__C7filebuf.is_reading__7filebuf.cur_ptr__7filebuf.file_ptr__7filebuf.init__3iosP9streambufP7ostream.__3iosP9streambufP7ostream.__tf11_ios_fields.__tf8_IO_FILE._GLOBAL_.I._un_link__9streambuf._GLOBAL_.D._un_link__9streambuf_streambuf.rw_ccio_defs__../../../libio/cleanup.c._IO_register_cleanup../../gcc/libgcc2.c.__do_global_dtors.__do_global_ctors_libgcc2.rw_c_libgcc2.bss_c.__default_terminate.__terminate.__throw_type_match.new_eh_context.__get_eh_context.__get_eh_info.eh_context_initialize.eh_context_static.__get_dynamic_handler_chain.__sjthrow.__sjpopnthrow.__eh_rtime_match.__udivdi3.__umoddi3../../gcc/cp/exception.ccinclude/exceptioninclude/typeinfo.terminate__Fv.__default_unexpected__Fv.set_terminate__FPFv_v.set_unexpected__FPFv_v.unexpected__Fv.__cp_exception_info.__cp_eh_info.__start_cp_handler.__eh_alloc.__eh_free.__cplus_type_matcher.__cp_push_exception.__cp_pop_exception.__uncatch_exception.__check_eh_spec.__throw_bad_cast.__throw_bad_typeid.uncaught_exception__Fv.what__C9exception.__tf9exception.__9exception._._9exception.__tf13bad_exception.__13bad_exception._._13bad_exception_exception.rw_cc../../gcc/cp/new.ccinclude/new.set_new_handler__FPFv_v._._9bad_alloc.__tf9bad_alloc.what__C9bad_alloc.__nw__FUlPv.__vn__FUlPv_new.rw_cc../../gcc/cp/new2.cc.__builtin_delete../../gcc/cp/new1.cc.__builtin_new.__9bad_alloc.__builtin_vec_delete.__builtin_vec_new../../gcc/cp/tinfo.cc../../gcc/cp/tinfo.h._._9type_info.__eq__C9type_infoRC9type_info.__rtti_class.__rtti_si.__rtti_user.dcast__C16__user_type_infoRC9type_infoiPvPC9type_infoT3.dcast__C14__si_type_infoRC9type_infoiPvPC9type_infoT3.dcast__C17__class_type_infoRC9type_infoiPvPC9type_infoT3.__tf9type_info.__9type_infoPCc.name__C9type_info.__ne__C9type_infoRC9type_info.__tf8bad_cast.__8bad_cast._._8bad_cast.__tf10bad_typeid.__10bad_typeid._._10bad_typeid._._16__user_type_info.__tf16__user_type_info.__16__user_type_infoPCc._._14__si_type_info.__tf14__si_type_info.__14__si_type_infoPCcRC16__user_type_info._._17__class_type_info.__tf17__class_type_info.__17__class_type_infoPCcPCQ217__class_type_info9base_infoUl_tinfo.rw_cc../../gcc/cp/tinfo2.cc.before__C9type_infoRC9type_info.__throw_type_match_rtti.__is_pointer__FPv.__rtti_ptr.__rtti_attr.__rtti_func.__rtti_ptmf.__rtti_ptmd.__rtti_array.__dynamic_cast._._19__pointer_type_info.__tf19__pointer_type_info._._16__attr_type_info.__tf16__attr_type_info._._19__builtin_type_info.__tf19__builtin_type_info._._16__func_type_info.__tf16__func_type_info._._16__ptmf_type_info.__tf16__ptmf_type_info._._16__ptmd_type_info.__tf16__ptmd_type_info._._17__array_type_info.__tf17__array_type_info_tinfo2.rw_cc_itrunc.s.__itrunc_uitrunc.s.__uitrunc.$SAVEF14.Ssavef14._savef14.$SAVEF15.Ssavef15._savef15.$SAVEF16.Ssavef16._savef16.$SAVEF17.Ssavef17._savef17.$SAVEF18.Ssavef18._savef18.$SAVEF19.Ssavef19._savef19.$SAVEF20.Ssavef20._savef20.$SAVEF21.Ssavef21._savef21.$SAVEF22.Ssavef22._savef22.$SAVEF23.Ssavef23._savef23.$SAVEF24.Ssavef24._savef24.$SAVEF25.Ssavef25._savef25.$SAVEF26.Ssavef26._savef26.$SAVEF27.Ssavef27._savef27.$SAVEF28.Ssavef28._savef28.$SAVEF29.Ssavef29._savef29.$SAVEF30.Ssavef30._savef30.$SAVEF31.Ssavef31._savef31.$RESTF14.Srestf14._restf14.$RESTF15.Srestf15._restf15.$RESTF16.Srestf16._restf16.$RESTF17.Srestf17._restf17.$RESTF18.Srestf18._restf18.$RESTF19.Srestf19._restf19.$RESTF20.Srestf20._restf20.$RESTF21.Srestf21._restf21.$RESTF22.Srestf22._restf22.$RESTF23.Srestf23._restf23.$RESTF24.Srestf24._restf24.$RESTF25.Srestf25._restf25.$RESTF26.Srestf26._restf26.$RESTF27.Srestf27._restf27.$RESTF28.Srestf28._restf28.$RESTF29.Srestf29._restf29.$RESTF30.Srestf30._restf30.$RESTF31.Srestf31._restf31.__mod_init.load_defaults.free_defaults.mysql_thread_id.mysql_get_server_info.my_strdup.my_malloc.read_history.mysql_close.write_history.my_no_flags_free.print_defaults.set_all_changeable_vars.set_changeable_var.getopt_long.set_default_charset_by_name.get_tty_password.add_history.readline.my_casecmp.mysql_free_result.mysql_query.mysql_store_result.mysql_error.mysql_fetch_row.mysql_num_rows.mysql_data_seek.mysql_list_fields.mysql_num_fields.mysql_fetch_field.my_sortcmp.mysql_errno.mysql_real_query.mysql_use_result.mysql_field_count.mysql_affected_rows.mysql_info.mysql_eof.mysql_field_seek.mysql_fetch_lengths.my_fopen.create_temp_file.my_write.my_close.my_delete.unpack_filename.my_fclose.mysql_select_db.mysql_init.mysql_options.mysql_real_connect.mysql_get_proto_info.mysql_get_host_info.mysql_stat.__flsbuf.vfprintf.completion_matches.my_realloc.bmove_upp.longlong10_to_str.snprintf.__filbuf.fp_raise_xcp.fp_read_rnd_F kê`¬Ðàí�¯u”·:{�·:{�·:!#bê¯./usr/local/bin/mysqladminent/ó/í�ß:·‹ÎpðýH C ÙƒÜ 4( 3 „1L.text((C (ZÞ› .data 3 3ÙD3jìš@.bss ƒÜ€.loaderÒI ‚"$|nx|�#x|°+x|ø‘‘â‚1�B(9 e)-‘*@‚H‘`Hƒâà€‚b|€}8œ8 H9€A8ÿÿ(Tz|{€|šA� (| ¦N€ ,A€x€Ý8a8›\8 H€Acã8�Hµ€A,@‚;Þÿÿ;½;½7Þÿÿ@� (H cãH±€A`f8`8›t8 HÁ€A8`H ü8`8› 8 H¥€A8`H à,A€p€Ý8a$8›¼8 H…€Acã8�$H€A,A‚ÿlcãH1€A`f8`8›Ô8 HA€A8`��x8!pºaÿÌ}ˆ¦H |8`8›ü8 H€A8`H P:À€ ,A‚cã8�8Kÿó�|`4TÙ~cãH €A,@‚@M@Z@optind@optarg@opterr@l@ €@ ’@ ¥@ ¹@ É@ Þ@ õ@  @ #@ 0@ =@ J@ Z@ r@ ƒ@ ‘@ Ÿ@ ´@ Á@ Ï@ Ý@ ð@ @  @ @ +@ strmov@ my_init@ ;@ U@ my_end@ str2int@ h@ int2str@ z@ Œ@ �@ ¬@ º@ Ï@ strfill@ llstr@ __start 4!     $ ( P ` p € �   ° À Ð à ð     0 @ P ` € „ ˆ Œ � ” ˜ œ   ¤ ¨ ¬ ° ´ ¸ ¼ À Ä È Ì Ð Ô à ä ü  4 8 < @ H L T X ` d l p x | Œ ¨ ¬ ° ´ ¸ ¼ À Ä È Ì Ð> Ô4 Ø Ü à8 ä èJ ìH ð! ô ø ü   I     : ;    @ $ ( ,& 0 42 8 < @< DA H" L# P T X= \ `E d  h l1 p5 tC x' |% €K „ ˆ  ŒG �L ” ˜ œ$  7 ¤D ¨9 ¬  °0 ´. ¸* ¼( À) Ä+ È ÌB Ð Ô- Ø/ Ü? à, ä6 è ì ð ô3 ø ü    F/usr/local/lib/mysql:/usr/lib:/liblibc.ashr.olibpthreads.ashr_comm.olibpthreads.ashr_xpg5.olibmysqlclient.alibmysqlclient.so __mod_init__pthread_trace pthread_init my_progname charsets_dir mysql_portmysql_unix_portmysql_fetch_fieldmysql_fetch_rowmysql_field_seekmysql_free_resultmysql_optionsmysql_store_resultmysql_get_proto_infomysql_get_host_infomysql_get_server_info mysql_stat mysql_ping mysql_killmysql_refreshmysql_dump_debug_infomysql_shutdown mysql_query mysql_closemysql_real_connect mysql_init mysql_error mysql_errnomysql_num_fieldsload_defaults find_typemy_no_flags_free my_strdupfree_defaultsmake_scrambled_passwordget_tty_passwordmy_printf_errorsystem_filenameprint_defaults int10_to_str getopt_longset_changeable_varset_all_changeable_vars*˜>TBVJš`d™n¤pÊ™š¨°x™ºXÆZÈÏ™ò¾�&j�Jl�nn�’p�î¢�òœ�û™B �Jžr¦¾ª�ØÔ™äÙ™î°�ò²�Þ™¶�ã™,è™>¼�B¾�FÀ�JÂ�RÄ�–¶�˜í™Èò™ìÏ™ò™4÷™Dü™¼è™ðü™ò™@è™p™œè™ÊÒ�Ï™™"Ö�( ™6Ö�8 ™X™bÜ�€™™@™X™„™�÷™œ÷™¨$™´)™ÀÏ™ .™ Ü� .™ 43™ Fì� Jî� h8™ |=™ ˜3™ øB™ G™ Ü� ,L™ 8™ HG™ lL™ v¾� z²� Œ™ Ò²� èQ™ üV™ [™ `™ 43™ L8™ Xe™ žÜ� Àj™ Øj™ ôj™ ™ "î� &� *ì� >²� \o™ Èt™ Üo™ ôy™ o™ H™ ~¾� �~™ žÜ� Ð~™~™4~™j¾�|~™ŠÜ�š�¢²�¼o™ô~™>¾�H~™d=™vì�†Ü�¦ì�¶Ü�Ôy™â²�ìo™øƒ™°�pˆ™|.™’²�œo™¨.™È=™Öì� ì�0y™Do™†¾�œ~™¬ˆ™¼�™β�Ø.™üo™ �™$~™^¾�p~™€ˆ™Œ.™ ƒ™Ô~™ü~™.™ ~™lˆ™v¾�€~™Œ.™ž²�°o™¼.™è~™Ln™`’™n²�€8™œn™´’™²�Ô8™ðn™’™²�8™,’™6²�<8™j°�ª°�®²�²¾�ÂÄ�З™œ™$Q™PV™h[™„[™¬œ™¼Q™ÐV™è[™[™L¡™`™€o™˜V™°[™ÄV™Ü[™ô¦™V™ [™L™X™d«™to™€°™�o™œµ™¬o™Äo™Øo™äº™ô¿™ o™(Ä™H™ˆ~™œ™ÌQ™à`™ü3™3™De™XV™p[™„º™¬É™¼ΙÐÉ™àV™ü[™¿™\[™pÓ™„V™œ[™ÈQ™Ü`™ø3™3™@e™PV™h[™€¦™œ¦™¸¦™èØ™üœ™œ™(Q™@Q™TV™l[™�V™¨[™Ä[™ÜÝ™ü™â™(Ý™<™PV™h[™ˆQ™œ`™.8�::�B<�H3™hÙt3™¸~™Ìe™èe™øV™ [™ (¦™ DQ™ X™ tV™ Œ[™ ¤Q™ ¸™ ÔV™ ì[™!¦™!([™!@¦™!²°�!¾�!ʲ�!ìç™"â™"(â™"<V™"P™"Œì™"˜ñ™"¤™"¸~™"Äñ™"Й"üV™#[™#(â™#FD�#T™#dâ™#xâ™#”™#ªF�#¸™#ÎF�#à™$ì™$ñ™$V²�$\™$h™$t™$~ª�$ˆo™$”o™$ o™$¬o™$¸o™$Äo™$ΰ�$Ôö™$ào™$ê¶�%o™%,™%8™%D™%rª�%v²�%œo™%ʬ%ò®&´&B¸&jº&’Æ&ºÈ&âÊ' Ì'2Î'ZÐ'‚Ô'ªØ'ÒÚ'úÞ("à(Jâ(rä(šæ(Âè(êê)ð):ò)bô)Šö)²ø)Úú*ü**þ*R*z*¢*Ê*ò + +B+j+’+º+â, ,2,Z,‚,ª ,Ò",ú$-"&-J(-r*-š,-Â.-ê0.2.:4.b6.ˆÁ.º>.â@/ B/2H T h œ œ $œ (ž Pœ `œ pœ €œ �œ  œ °œ Àœ М àœ ðœ œ œ  œ 0œ @œ Pœ `œ €œ „œ ˆœ Œœ �œ ”œ ˜œ œœ  œ ¤œ ¨œ ¬œ °œ ´œ ¸œ ¼œ Àœ Äœ Èœ Ìœ М Ôœ àœ ä  üœ   4L 8– <¸ @– Hd L– T’ X– `ˆ d– l† p– xŠ |– Œ¼ ¨\ ¬” °d ´f ¸º ¼f ÀR Ä’ Èh Ì ÐF Ô2 Øž Üœ à: ä¢ è^ ìZ ð  ôp ø ü  v \ x  r > @ €   J $¤ († , 0  4. 8ˆ <Ž @B DL H L P¦ T¨ XD \� `T dv hj l, p4 tP x | €` „ª ˆ~ ŒX �b ”„ ˜t œ  8 ¤R ¨< ¬| °* ´& ¸ ¼ À Ä  È‚ ÌN Њ Ô$ Ø( ÜH à" ä6 è® ì¬ ð° ô0 øŒ üz   V(optindoptargopterr8 J Z k } ‹ ž ³ Ç Ý è ó þ   " 1 = I \ g s  � ž ¨ ¹ à strmov my_init Ñ é my_end str2int ú int2str    ) 6 B U strfill llstr m} errnoclose __quous3€.__quous3€_iobexit strlen open64 atoi fflush sprintf printf fprintf strchr fputc signal sleep atol fputs puts strtoull Š __crt0vTOC „k• ¨k__crt0v ¬km °k} ´k_$STATIC ¸k_$STATIC ¼kª ÀkŠ Äkerrno Èk Ìkmy_init Ðk\ Ôk_$STATIC Øk Ük� àk´ äkU èk6 ìkopterr ðk_iob ôk økoptarg ük kB katoi kexit  k¨ k¹ kfprintf koptind ké  kendprog $ksignal (k} ,kÄ 0k= 4ksleep 8kputs <kà @kmy_end Dk8 HkJ LkÑ PkÝ Tkstrmov Xkstrtoull \k `kopen64 dkclose hk1 lkg pkú tk‹ xkk |kstrfill €kê „kprintf ˆk) Œkllstr �kfputc ”kstrlen ˜kZ œk  kint2str ¤kž ¨ksprintf ¬k" °kþ ´kÇ ¸kž ¼k³ ÀkÝ Äkstrchr Èkstr2int Ìkatol Ðkó Ôk ØkÑ Ükè àks äkþ èk ìk) ðkI ôkfputs økfflush ük( k k k Kÿþùg3^ÿþ g.__start(kÅ.__start(L__start 4 ª k p_xargc „p_xargv ˆp_xrcfg  p_xrc ¤• .filerÿþg>}—ðkÆð b_$STATIC ˜keÇ H  Ö �è ”þ ˜ œ.file²ÿþgmysqladmin.c*D˜k"0.main˜ vlð kvz à kvˆ È kv• ” kv¥ t kvº` kvÑ  kvêP kvþx kv P kvL kv" kv.endprogh kv-ˆ kv?!” kv.usage$@ kvL%p kv/XkÛ_$STATIC kÌÄ k´ àTendprog Tk  Ñ (Ý (€ê Œ(À lk  þ `k  ) xk  .fileÀÿþg[——ðkX±ð ¶_$STATIC 8k`² <  Ä Œptrgl.sÇÿþ g._ptrgl.ˆk0._ptrgl.ˆÁ.$PTRGL.ˆÁglink.sÌÿþ gÚpk(ÚpÈglink.sÑÿþ g.exit&àk(.exit&àÍglink.sÖÿþ g.my_init%Èk(.my_init%ÈÒglink.sÛÿþ gæ%ðk(æ%ð×glink.sàÿþ gò&k(ò&Üglink.såÿþ g&@k(&@áglink.sêÿþ g&hk(&hæglink.sïÿþ g'&�k('&�ëglink.sôÿþ g.atoi&¸k(.atoi&¸ðglink.sùÿþ g;'k(;'õglink.sþÿþ gM'0k(M'0úglink.sÿþ g.fprintf'Xk(.fprintf'Xÿglink.sÿþ gX'€k(X'€glink.s ÿþ g.signal'¨k(.signal'¨ glink.sÿþ gj'Ðk(j'Ðglink.sÿþ gy'øk(y'øglink.sÿþ g.sleep( k(.sleep( glink.s!ÿþ g.puts(Hk(.puts(Hglink.s&ÿþ g†(pk(†(p"glink.s+ÿþ g.my_end(˜k(.my_end(˜'glink.s0ÿþ g•(Àk(•(À,glink.s5ÿþ g¨(èk(¨(è1glink.s:ÿþ g.strmov)k(.strmov)6glink.s?ÿþ g¹)8k(¹)8;glink.sDÿþ gÃ)`k(Ã)`@glink.sIÿþ g.open64)ˆk(.open64)ˆEglink.sNÿþ g.close)°k(.close)°Jglink.sSÿþ gÔ)Øk(Ô)ØOglink.sXÿþ gá*k(á*Tglink.s]ÿþ gî*(k(î*(Yglink.sbÿþ gÿ*Pk(ÿ*P^glink.sgÿþ g*xk(*xcglink.slÿþ g.strfill* k(.strfill* hglink.sqÿþ g.printf*Èk(.printf*Èmglink.svÿþ g&*ðk(&*ðrglink.s{ÿþ g.llstr+k(.llstr+wglink.s€ÿþ g.fputc+@k(.fputc+@|glink.s…ÿþ g.strlen+hk(.strlen+h�glink.sŠÿþ g4+�k(4+�†glink.s�ÿþ gF+¸k(F+¸‹glink.s”ÿþ g.int2str+àk(.int2str+à�glink.s™ÿþ gX,k(X,•glink.sžÿþ g.sprintf,0k(.sprintf,0šglink.s£ÿþ gc,Xk(c,XŸglink.s¨ÿþ gs,€k(s,€¤glink.s­ÿþ g‚,¨k(‚,¨©glink.s²ÿþ g™,Ðk(™,Юglink.s·ÿþ g¯,øk(¯,ø³glink.s¼ÿþ gÄ- k(Ä- ¸glink.sÁÿþ g.strchr-Hk(.strchr-H½glink.sÆÿþ g.str2int-pk(.str2int-pÂglink.sËÿþ g.atol-˜k(.atol-˜Çglink.sÐÿþ gÐ-Àk(Ð-ÀÌglink.sÕÿþ gÜ-èk(Ü-èÑglink.sÚÿþ gó.k(ó.Öglink.sßÿþ g .8k( .8Ûglink.säÿþ g.`k(.`àglink.séÿþ g%.¸k(%.¸åglink.sîÿþ g.fputs.àk(.fputs.àêglink.sóÿþ g.fflush/k(.fflush/ïglink.søÿþ g9/0k(9/0ôglink.sÿÿÿÿÿþ gIHk(IHùWmy_prognamecharsets_dirmysql_portmysql_unix_portmysql_fetch_fieldmysql_fetch_rowmysql_field_seekmysql_free_resultmysql_optionsmysql_store_resultmysql_get_proto_infomysql_get_host_infomysql_get_server_infomysql_statmysql_pingmysql_killmysql_refreshmysql_dump_debug_infomysql_shutdownmysql_querymysql_closemysql_real_connectmysql_initmysql_errormysql_errnomysql_num_fieldsload_defaultsfind_typemy_no_flags_freemy_strdupfree_defaultsmake_scrambled_passwordget_tty_passwordmy_printf_errorsystem_filenameprint_defaultsint10_to_strgetopt_longset_changeable_varset_all_changeable_vars__pthread_tracepthread_init__mod_init__C_runtime_pstartupcrt0_datachangeable_vars_$STATIC_BSSlast_valuesex_var_namestruncated_var_namesprint_relative_rowprint_relative_row_vertprint_rowcrt0main.s../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cTue Aug 18 09:04:53 1998 C Set ++ for AIX Compiler Version 4.1.0.0 --- .__threads_init_bsd_init_routine_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routineTue Mar 20 17:56:38 2001 C for AIX Compiler Version 4.4.0.0 --- .store_values.wait_pidfile.get_pidfile.truncate_names.print_relative_line.print_relative_header.print_relative_row_vert.print_relative_row.print_row.print_top.print_header.nice_time.execute_commands.sql_connect.print_version../../../../../../../src/bos/usr/ccs/lib/libpthreads/init.cMon Sep 29 13:53:38 1997 .call_pthread_init_pthread_init_routine.__mod_init.mysql_init.load_defaults.set_all_changeable_vars.getopt_long.set_changeable_var.my_no_flags_free.my_strdup.get_tty_password.mysql_options.mysql_close.free_defaults.mysql_fetch_field.mysql_fetch_row.strtoull.system_filename.mysql_query.mysql_error.my_printf_error.mysql_store_result.mysql_free_result.int10_to_str.mysql_field_seek.mysql_num_fields.find_type.mysql_shutdown.mysql_refresh.mysql_get_server_info.mysql_get_proto_info.mysql_get_host_info.mysql_stat.mysql_kill.mysql_dump_debug_info.make_scrambled_password.mysql_ping.mysql_errno.mysql_real_connect.print_defaults.pthread_initint2str kêB[Ñàí�bku”·:|�·:|�·:!#têbk./usr/local/bin/mysqlshowent/ó/í�ß:·‹ÔC®äH 'ðè è(  1L.text(('ð(6Ž .data  è)@¶L@.bss €.loader Ž,‚"$|nx|�#x|°+x|ø‘‘â‚1�B(9 e)-‘*@‚H‘`Hƒâ@optind@optarg@opterr@M@ a@ s@ †@ š@ ª@ ¿@ Ó@ ä@ ò@ @ @ '@ 4@ B@ P@ c@ t@ „@ —@ strmov@ my_init@ £@ my_end@ strxmov@ ¶@ Ç@ strcont@ __start è! à ä ø ü  ( 8 H X h x ˆ ˜ ¨ ¸ È è ì ð ô ü   , 0 4 8 < @ D H  L P T  X \ ` d/ h+ l' p1 t x  | €" „ ˆ! Œ# �  ”( ˜- œ    ¤% ¨ ¬ °  ´ ¸* ¼. À Ä È Ì& Ð Ô$ Ø Ü à0 ä è ì ð ô) ø ü,/usr/local/lib/mysql:/usr/lib:/liblibc.ashr.olibpthreads.ashr_comm.olibpthreads.ashr_xpg5.olibmysqlclient.alibmysqlclient.so __mod_init__pthread_trace pthread_init my_progname charsets_dirmysql_fetch_fieldmysql_fetch_rowmysql_field_seekmysql_free_resultmysql_optionsmysql_store_resultmysql_list_tablesmysql_list_dbs mysql_querymysql_select_db mysql_closemysql_real_connect mysql_init mysql_error mysql_errnomysql_num_fieldsmysql_num_rowsload_defaultsmy_no_flags_free my_strdupget_tty_passwordprint_defaults getopt_long*`>ÔBÖJb`ä™nlp)™šp°ü™ºØÆÚÈ.™ò$�&ê�Jì�nî�’ð�îj�òd�â™Bh�Jfrn®r�´3™À3™Ì3™Öv�à8™ì8™ø8™8™8™3™&z�0=™^v�br�ˆ8™Âv�ÔB™Þz�âr�ôG™,L™΄�ÜQ™è.™ôV™[™@`™R„�\e™tQ™€.™ìj™o™ t™p.™®„�Äy™Ô~™äƒ™ör�ˆ™$8™4ƒ™Ly™†„�˜y™¨~™´ˆ™È�™üy™ $y™ 0ˆ™ Hy™ ”~™ ž„� ¨y™ ´ˆ™ Ær� Ø8™ 䈙 y™ N„� ˆy™ ¤y™ Ìy™ ôy™ .„� ly™ |y™ Œ’™ ˜�™ ´y™ ôy™ y™ y™ N„� �y™ °y™ Øy™ y™ (y™ 4�™ py™ ¨y™ ày™y™4y™Dy™dy™Œy™Äy™—™.v�2„�8e™Br�XQ™~r�„œ™�œ™¼¡™Ì¦™à«™öv�ú„�e™ Q™X8™x8™‚„�Œy™ °™¼°™Öz�윙øœ™¦™«™.v�8e™XQ™„µ™¨°™Ä°™ä3™ðº™Fr�`¡™Œ¡™œ¦™°«™Ê„�Îv�Øe™øQ™¿™Q™48™H8™R„�\y™p°™Œ°™¨º™—™*„�2v�<e™Fr�\Q™„Ä™–v� e™ªr�ÀQ™Ì.™Ör�à8™ø8™y™�™$ˆ™P°™t°™¤º™ìÉ™þ„�v� e™r�(Q™Rr�\8™fr�l�™|ˆ™¨°™Ì°™üº™6z�:r�hΙz¼�~¾�‚„�†À�àΙ.™$Ι@Ó™ŒΙØΙôo™Ø™|Ι¤Q™´.™ÐΙòÆ�$Ý™Zt‚xª|Ò~ú€"‚J†rˆšŠÂŒêŽ�:’b”Š–²˜Úšœ*žR z¢¢¤ʦò¨ªB¬j®’°º²â´ ¶2¸Zº‚ªÄÒÈ àÔ äè ø ü  ( 8 H X h x ˆ ˜ ¨ ¸ È èÌ ì^ ð ô^ üä ^ " ,Ü 0\ 4B 8D <  @æ DÒ HZ LF P TX X \P ` d< h4 l, p@ tH xR |J €" „ ˆ  Œ$ � ”. ˜8 œT   ¤( ¨  ¬L °V ´ ¸2 ¼: À Ä È  Ì* Ð Ô& Ø Ü à> ä è ì ðN ô0 ø ü6optindoptargopterr / ? P b p ƒ • ¤ ° À Ì ß ê ö   " 0 A strmov my_init K my_end strxmov \ k strcont w‡ errno_iobexit strlen atoi printf fprintf fputc fputs puts ” __crt0vTOC kŸ ,k__crt0v 0kw 4k‡ 8k_$STATIC <k_$STATIC @k´ Dk” Hkerrno Lk Pkputs Tk Xkprintf \k_$STATIC `k\ dkmy_init hk" lkstrcont pk_iob tkfprintf xkexit |kß €kb „kÌ ˆkê ŒkÀ �k0 ”kmy_end ˜kfputc œk?  k ¤k ¨kstrlen ¬kfputs °k° ´kstrmov ¸kstrxmov ¼k¤ Àkp Äk/ Èk ÌkP Ðkö Ôkƒ Øk• Ükk àk äkopterr èkoptarg ìkatoi ðkA ôkoptind økK ük Ëÿþùg¾Þÿþ g.__start(kÅ.__start(Ì__start è ´ àk p_xargc p_xargv p_xrcfg $p_xrc (Ÿ .fileòÿþgÉ"ðkQð â_$STATIC xkeR ü  a s ‰ › .fileÿþgmysqlshow.cµÏ˜kÀ.usage˜ kö÷\ kö.main° ö  köx kö$ t kö6 D köE  köP D kö^ð kök( kö~ kö‹Ô kö•, köøk _$STATIC ðkø.file&ÿþg¢Þ"ðkXøð _$STATIC k`ù ð   glink.s+ÿþ g!pk(!p'glink.s0ÿþ g.exitpk(.exitp,glink.s5ÿþ g.putsXk(.putsX1glink.s:ÿþ g.printf€k(.printf€6glink.s?ÿþ g-¨k(-¨;glink.sDÿþ g.my_initÐk(.my_initÐ@glink.sIÿþ g=øk(=øEglink.sNÿþ g.strcont k(.strcont Jglink.sSÿþ g.fprintfHk(.fprintfHOglink.sXÿþ gL˜k(L˜Tglink.s]ÿþ gXÀk(XÀYglink.sbÿþ ggèk(gè^glink.sgÿþ g{k({cglink.slÿþ gˆ8k(ˆ8hglink.sqÿþ g•`k(•`mglink.svÿþ g.my_endˆk(.my_endˆrglink.s{ÿþ g.fputc°k(.fputc°wglink.s€ÿþ g§Øk(§Ø|glink.s…ÿþ g¹k(¹�glink.sŠÿþ gË(k(Ë(†glink.s�ÿþ g.strlenPk(.strlenP‹glink.s”ÿþ g.fputsxk(.fputsx�glink.s™ÿþ gÞ k(Þ •glink.sžÿþ g.strmovÈk(.strmovÈšglink.s£ÿþ g.strxmovðk(.strxmovðŸglink.s¨ÿþ gïk(ï¤glink.s­ÿþ gü@k(ü@©glink.s²ÿþ ghk(h®glink.s·ÿþ g!�k(!�³glink.s¼ÿþ g1¸k(1¸¸glink.sÁÿþ gDàk(Dà½glink.sÆÿþ gQk(QÂglink.sËÿþ gd0k(d0Çglink.sÐÿþ gtXk(tXÌglink.sÕÿþ g.atoi€k(.atoi€Ñglink.sÚÿþ g�¨k(�¨Öglink.sßÿþ gŒÐk(ŒÐÛglink.sÿÿÿÿÿþ gžHk(žHà¬my_prognamecharsets_dirmysql_fetch_fieldmysql_fetch_rowmysql_field_seekmysql_free_resultmysql_optionsmysql_store_resultmysql_list_tablesmysql_list_dbsmysql_querymysql_select_dbmysql_closemysql_real_connectmysql_initmysql_errormysql_errnomysql_num_fieldsmysql_num_rowsload_defaultsmy_no_flags_freemy_strdupget_tty_passwordprint_defaultsgetopt_long__pthread_tracepthread_init__mod_init__C_runtime_pstartupcrt0_datacrt0main.s../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cTue Aug 18 09:04:53 1998 C Set ++ for AIX Compiler Version 4.1.0.0 --- .__threads_init_bsd_init_routine_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routineTue Mar 20 17:56:46 2001 C for AIX Compiler Version 4.4.0.0 --- .print_version.print_res_row.print_res_top.print_res_header.print_trailer.print_row.print_header.list_fields.list_table_status.list_tables.list_dbs.get_options../../../../../../../src/bos/usr/ccs/lib/libpthreads/init.cMon Sep 29 13:53:38 1997 .call_pthread_init_pthread_init_routine.__mod_init.print_defaults.load_defaults.mysql_init.mysql_options.mysql_real_connect.mysql_error.mysql_close.my_no_flags_free.mysql_field_seek.mysql_num_fields.mysql_fetch_field.mysql_select_db.mysql_query.mysql_store_result.mysql_fetch_row.mysql_num_rows.mysql_free_result.mysql_errno.mysql_list_tables.mysql_list_dbs.getopt_long.my_strdup.get_tty_password.pthread_initprintf kê˜}Òàí�SÈu”·:~�·:~�·:!#ŸêSÈ./usr/local/bin/mysqldumpent/ó/í�ß:·‹Ý‰�õH X¼2 d( < „1L.text((X(qç .data < <¼Y<„"‹@.bss ø ø2€.loader#^ø‚"$|nx|�#x|°+x|ø‘‘â‚1�B(9 e)-‘*@‚H‘`Hƒâœ§@‚ÿôN€ @xstrcat�‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �b�‹8qŒA‚´|¦| +|à"*A‚H|…8@@@@†|Aš L˜Hp|£+|ä*A‚$0|…8@@@|£+@†P@šD|ä*@‚ÿä|¦, TøA�|¥0|ç0|…8@H|…8@|Æ0}0@@@† L˜A†A… 8`ÿÿN€ 8`N€ 8`N€ 8cÿÿ8„ÿÿˆ£ˆÄ,|…0@A‚Œ£@†ŒÄ,|…0@KÿÿèA†A…8`ÿÿN€ 8`N€ 8`N€ @strcmp�‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �‚$�A€ €L| ¦N€  �‚(�A€ €L| ¦N€  �‚0�A€ €L| ¦N€  �‚4�A€ €L| ¦N€  �‚H�A€ €L| ¦N€  �‚L�A€ €L| ¦N€  �‚P�A€ €L| ¦N€  �‚X�A€ €L| ¦N€  �‚\�A€ €L| ¦N€  �‚`�A€ €L| ¦N€  �‚d�A€ €L| ¦N€  �‚h�A€ €L| ¦N€  �‚l�A€ €L| ¦N€  �‚p�A€ €L| ¦N€  all-databasesalladd-drop-tableadd-locksallow-keywordscharacter-sets-dircomplete-insertcompressdatabasesdebugdefault-character-setdelayed-insertextended-insertfields-terminated-byfields-enclosed-byfields-optionally-enclosed-byfields-escaped-byfirst-slaveflush-logsforcehelphostlines-terminated-bylock-tablesno-create-dbno-create-infono-dataoptpasswordportquickquote-namesset-variablesockettabtablesuserverboseversionwheremysqldumpclientmax_allowed_packetnet_buffer_lengthlocalhost DELAYED IB%s Ver %s Distrib %s, for %s (%s) 8.13IBM3.23.35ibm-aix4.3.2.0IpowerpcBy Igor Romanenko, Monty, Jani & SinisaThis software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license IBMDumping definition and data mysql database or tableUsage: %s [OPTIONS] database [tables] IOR %s [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR %s [OPTIONS] --all-databases [OPTIONS] I -A, --all-databases Dump all the databases. This will be same as --databases with all databases selected. -a, --all Include all MySQL specific create options. -#, --debug=... Output debug log. Often this is 'd:t:o,filename`. --character-sets-dir=... Directory where character sets are -?, --help Display this help message and exit. -B, --databases To dump several databases. Note the difference in usage; In this case no tables are given. All name arguments are regarded as databasenames. 'USE db_name;' will be included in the output -c, --complete-insert Use complete insert statements. -C, --compress Use compression in server/client protocol. --default-character-set=... Set the default character set -e, --extended-insert Allows utilization of the new, much faster INSERT syntax. --add-drop-table Add a 'drop table' before each create. --add-locks Add locks around insert statements. --allow-keywords Allow creation of column names that are keywords. --delayed-insert Insert rows with INSERT DELAYED. -F, --flush-logs Flush logs file in server before starting dump. -f, --force Continue even if we get an sql-error. -h, --host=... Connect to host. IB -l, --lock-tables Lock all tables for read. -n, --no-create-db 'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;' will not be put in the output. The above line will be added otherwise, if --databases or --all-databases option was given. -t, --no-create-info Don't write table creation info. -d, --no-data No row information. -O, --set-variable var=option give a variable a value. --help lists variables --opt Same as --add-drop-table --add-locks --all --extended-insert --quick --lock-tables -p, --password[=...] Password to use when connecting to server. If password is not given it's solicited on the tty. IB -P, --port=... Port number to use for connection. -q, --quick Don't buffer query, dump directly to stdout. -Q, --quote-names Quote table and column names with ` -S, --socket=... Socket file to use for connection. --tables Overrides option --databases (-B). IB -T, --tab=... Creates tab separated textfile for each table to given path. (creates .sql and .txt files). NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon. I -u, --user=# User for login if not current user. IBM -v, --verbose Print info about the various stages. -V, --version Output version information and exit. -w, --where= dump only selected records; QUOTES mandatory! EXAMPLES: "--where=user='jimf'" "-wuserid>1" "-wuserid<1" Use -T (--tab=...) with --fields-... --fields-terminated-by=... Fields in the textfile are terminated by ... --fields-enclosed-by=... Fields in the importfile are enclosed by ... --fields-optionally-enclosed-by=... Fields in the i.file are opt. enclosed by ... --fields-escaped-by=... Fields in the i.file are escaped by ... --lines-terminated-by=... Lines in the i.file are terminated by ... myI Possible variables for option --set-variable (-O) are: IBM%-20s current value: %lu I#::p::h:u:O:P:S:T:EBaAcCdefFlnqtvVw:?IxH0ø0000H00000L`0ht0€\000000000œ0¤¬´¼0Ä000è0ð0ø¤00¬´À�ÈXìø$,4PX%s: You must use option --tab with --fields-... IBM%s: You can't use ..enclosed.. and ..optionally-enclosed.. at the same time. IB%s: You can't use --ignore (-i) and --replace (-r) at the same time. IB%s: --databases or --all-databases can't be used with --tab. IB%s: Illegal option character '%c' I# Disconnecting from %s... Got error: %d: %s %sIBMwhen selecting the database # # Current Database: %s # IBM CREATE DATABASE /*!32312 IF NOT EXISTS*/ %s; I USE %s; 'I# Sending SELECT query... I.txtIBMSELECT * INTO OUTFILE '%s'I REPLACEIBM IGNORE FIELDS TERMINATED BYI ENCLOSED BYIBM OPTIONALLY ENCLOSED BY ESCAPED BY LINES TERMINATED BYIBM FROM %sIBM WHERE when executing 'SELECT INTO OUTFILE'IBM # # Dumping data for table '%s' IBSELECT * FROM %sIBM# WHERE: %s IB# Iwhen retrieving data from serverIBM# Retrieving rows... IB%s: Error in field count for table: '%s' ! Aborting. ILOCK TABLES %s WRITE; I(,Aborting dump (out of memory)'''INULLI);IB);I%s: Error %d: %s when dumping table '%s' at row: %ld IB%s: Not enough fields from table '%s'! Aborting. IBUNLOCK TABLES;I0IB# MySQL dump %s # I# Host: %s Database: %s #-------------------------------------------------------- I# Server version %s IBM# Retrieving table structure for table %s... IBSET OPTION SQL_QUOTE_SHOW_CREATE=%dshow create table %sIBM%s: Can't get CREATE TABLE for table '%s' (%s) .sqlIBM # # Table structure for table '%s' # DROP TABLE IF EXISTS %s; IB%s; IBMshow fields from %s%s: Can't get info about table: '%s' error: %s INSERT %sINTO %s (IINSERT %sINTO %s VALUES IBM, ICREATE TABLE %s ( I, I %s.%s %sI %s %s DEFAULT IB NOT NULLIB %sshow keys from %sIB%s: Can't get keys for table '%s' (%s) PRIMARY, KEY %s (IBM, PRIMARY KEY (IB, UNIQUE %s ( (%s)IB )Ishow table status like '%s'# Warning: Couldn't get status information for table '%s' (%s) Error: Couldn't read status information for table '%s' (%s) IBM/*!type=IBTypeIBMCreate_optionsIcomment=IBMComment */; I) VALUES IBLOCK TABLES IBM READ /*!32311 LOCAL */,IBMwhen using LOCK TABLESIwhen doing refreshIUNLOCK_TABLESIBwhen doing LOCK TABLESISHOW DATABASESIError: Couldn't execute 'SHOW DATABASES': %sIBM# Connecting to %s... Iwhen trying to connectIFLUSH TABLES WITH READ LOCKError: Couldn't execute 'FLUSH TABLES WITH READ LOCK': %sIBFLUSH MASTERIBMError: Couldn't execute 'FLUSH MASTER': %sIUNLOCK TABLESIBError: Couldn't execute 'UNLOCK TABLES': %s@(#)23 1.3 src/bos/usr/ccs/lib/libpthreads/init.c, libpth, bos430, 9737A_430 7/17/97 10:33:02@(#)61 1.11 src/bos/usr/ccs/lib/libc/__threads_init.c, libcthrd, bos43K, 9823A_43K 6/12/98 12:37:06 „ x>$>0< A<0a<4u> v>V>w>8€€>Lûÿ€( „ð „ð „ l ø @    <  ˜M‹‹ ܼgerrno@@_iob@exit@ strlen@ atoi@ fflush@ sprintf@ printf@ fprintf@ fputc@ fputs@ puts@ @ __crt0v@'@9@ H@V@m@‚@–@optind@optarg@opterr@¥@ À@ Ô@ ê@ ü@ @ !@ 5@ E@ X@ m@ �@ ™@ ©@ ¼@ Ê@ Ü@ ê@ ÿ@  @ @ (@ ;@ L@ \@ o@ strmov@ {@ ‡@ my_init@ strend@ “@ my_end@ ¦@ ²@ Ä@ strxmov@ Ö@ å@ my_fopen@ ñ@ @ @ @ ,@ <@ R@ c@ �@ �@ ¤@ __start d!    $ € �   ° À Ð à ð    0 @ P ` p € �   ° À Ð à ð    0 @ P ` p € �   ° À Ð à ð   , 0 d h l p x | Œ ¨ ¬ ° ´ ¸ ¼ À Ä È Ì Ð9 Ô< Ø Ü à ä è* ì/ ð? ô ø4 ü E &   ! "   6 >  D $7 (= ,A 0  4: 8@ <  @$ D% H1 L P T X \  ` dG hH lF p t  x  |0 €C „ ˆ2 ŒB � ” ˜8 œ,  . ¤# ¨- ¬3 ° ´N ¸L ¼ À Ä È ÌM Ð5 ÔK Ø Ü; àJ ä+ èI ì) ð( ô'/usr/local/lib/mysql:/usr/lib:/liblibc.ashr.olibpthreads.ashr_comm.olibpthreads.ashr_xpg5.olibmysqlclient.alibmysqlclient.so_system_configuration __mod_init__pthread_trace pthread_init my_prognamedefault_charset_infomax_allowed_packetnet_buffer_length charsets_dirmysql_real_escape_stringmysql_fetch_fieldmysql_fetch_lengthsmysql_fetch_rowmysql_field_seekmysql_data_seekmysql_free_resultmysql_optionsmysql_use_resultmysql_store_resultmysql_list_tablesmysql_get_server_infomysql_refreshmysql_real_query mysql_querymysql_select_db mysql_closemysql_real_connect mysql_init mysql_error mysql_errnomysql_num_fieldsmysql_num_rowsload_defaultsmy_no_flags_free my_strdup fn_format my_mallocget_tty_password my_deleteconvert_dirnamemy_printf_error to_unix_path my_fclose my_load_path dynstr_freedynstr_realloc dynstr_setdynstr_appendinit_dynamic_stringprint_defaultsset_default_charset_by_name getopt_longset_changeable_varset_all_changeable_vars*š>LBNJœ`\™n¦p½™šª°p™ºPÆRÈ™ò²�&b�Jd�nf�’h�î¤�òž�ó™B¢�J r¨ž¬�¼Ç™ÜÌ™è™ò´�™&¶�F¸�XÑ™lÖ™„Û™�Ì™&¸�,Ñ™@Ö™XÛ™hÑ™|Ö™”Û™¦¸�¬à™¸å™ÎÄ�Ðê™ÜÌ™´�8ï™Lô™ˆù™¨þ™ê´� ¶�¸�™0™< ™P™Z¸�p™€™Œ!™ &™¬+™Ä™Ü™™t&™„™ 0™°Ñ™â¸�ì5™ &™ $5™ 0+™ D0™ Pà™ `Ñ™  :™ °?™ ζ� Ø™ äD™ ö¶� ú¬� ™ P5™ Zì� ^Ä� tI™ „ô™ –¶� œN™ ÀS™ ÐX™ àD™ ô]™ Ä� $b™ >Ä� Dg™ vÄ� xl™ �S™ ¢Ä� ¨g™ Èq™ ÞÄ� èg™ öÄ� øg™ Ä� g™ Ä� g™ 8S™ XD™ pv™ ¬D™ ÀS™ ÔS™ ìD™ Ä� g™ 8v™ HS™ `à™ tS™ „S™ ˜à™ ¤ô™ Ìà™ Ö¶� Ü{™ 耙 ú¬�€™Ö™<&™LS™r¬�„&™”S™¸à™Äþ™´�¶�¸�d™nÄ�|&™œÑ™Ä&™ÔÑ™æ¬�ðÖ™ ™D™P ™l™|…™Ä™ä™ð?™üô™™þ™0&™@Ñ™T?™f¬�pÖ™Œ™Ð&™ì&™µ™+™$ô™P™€™�ô™´Š™Äþ™Ü&™ìÑ™?™¬�Ö™8™€™Œ ™¨™¸…™à™ü™™0™T&™p&™Œµ™˜+™¨ô™¼N™äS™™<™€™¬™ÈS™øS™™$ô™8Š™Hþ™h&™xÑ™ެ�”Ö™°™È�™Ô?™ðô™”™ ¸™4ô™Pù™\ô™p”™”v™ ”™È™ðS™ ™4v™LS™h™tô™”v™¤S™Ä&™Ôљ耙֙ ™,?™@ô™TÖ™l™ˆS™ìS™øþ™S™$™<™Š�™™&´�:Ä�Lq™\v™lS™|v™ˆå™¾´�Þ¸�æ¶�ê¸�ø™ž™:´�j¶�n¸�x™†¸�޶�’¸�œ™¦Ä�¬£™Ì¨™ô­™¸�l€™|Ö™†¸� Û™Ú¸�Þ´�²™�·™0¼™BÄ�F$�J&�N¬�R¶�V(�Z*�¶�¸Á™è”™ ™`å™pÆ™ å™°Æ™ (¼™!¼™!–¶�!š¬�!¨™!Ú¶�!Þ¬�!ì™"&¶�"*¬�"8™"v¶�"z¬�"ˆ™"Ø™"è™"þÄ�#Ë™#$™#22�#€Й#ʸ�#Ðà™#Üà™#èà™#ò¬�#ü5™$ 5™$5™$(5™$4à™$@5™$L5™$X5™$d5™$n´�$xÕ™$„5™$Ž�$¨5™$ò¬�$ö¸�%5™%J´�% ™%æ¸�%î´�&Ñ™&?™&(Ö™&@Û™&dô™&Œô™'F´�'LÚ™'b¸�'ª¸�'´5™'Ð5™'à5™'ö¸�'úÄ�(ß™(™(‚´�(’¸�(¤ß™(Äg™(Ôg™)ä™)(ê™)Dé™)Z¸�)ʸ�)ÐÑ™*J´�*^¸�*pß™*Œg™*œg™*Ìä™*ìê™+é™+¸�+~¸�+„Ñ™+ìX™+ø]™, ¸�,¸™,@¸™,X]™,�v™, S™,¸I™,ìS™-&¸�-@™-J´�-t™-„S™-ŽÄ�-”î™-¨™-Þ´�.ž™. ™/¸�/,0™/J¸�/X0™/hI™/®/ê°0²0:º0b¼0о0²À0ÚÂ1Æ1*È1RÊ1zÌ1¢Î1ÊÐ1òÒ2Ô2BÖ2jØ2’Ú2ºÜ2âÞ3 à32â3Zä3‚æ3ªè3Òê3úî4"ð4Jò4rô4šö4Âø4êú5ü5:þ5b5Š5²5Ú6µ67’ 7º 7â8 ¸8"9R9z9¢9Ê9ò::B :j":’,:º.:â0; 4;26;Z8;‚:;ª<;Ò>;ú@ L ` ž $ž €ž �ž  ž °ž Àž О àž ðž ž ž ž 0ž @ž Pž `ž pž €ž �ž  ž °ž Àž О àž ðž ž ž ž 0ž @ž Pž `ž pž €ž �ž  ž °ž Àž О àž ðž ž  ,ž 0 dD h˜ l¬ p˜ x\ |˜ Œ° ¨T ¬– °v ´x ¸® ¼^ ÀJ Ä” Èz Ì ÐJ ÔP Ø€ Ü  à~ äž è, ì6 ðV ô’ ø@ ü¢ b $     Œ D T  ` $F (R ,Z 0ˆ 4L 8X <Š @  D" H: L P‚ T X� \ ` df hh ld p tŽ x† |8 €^ „| ˆ< Œ\ �„ ” ˜H œ0  4 ¤ ¨2 ¬> °¤ ´t ¸p ¼ À Ä  Èn Ìr ÐB Ôn Ø  ÜN àl ä. èj ì* ð( ô&%8JoptindoptargopterrW p ‚ – ¦ · Ç Ù ç ø    3 A R ^ n z � ˜ ¤ ° Á Ð Þ ï strmov ù  my_init strend   my_end  ( 8 strxmov H U my_fopen _ l x ‡ ’   ´ Ã ß ë þ & errno3_iobexit strlen atoi fflush sprintf printf fprintf fputc fputs puts I __crt0vTOC „kT ¨k__crt0v ¬k °k& ´k_$STATIC ¸k_$STATIC ¼ki ÀkI Äkerrno Èk Ìkmy_init Ðkmy_end Ôkexit Øk_$STATIC Ük_iob àk äkR èk˜ ìk8 ðkputs ôkÞ øks ükl k k– k·  kÇ kfprintf kstrmov k( k_  kù $k (kH ,ksprintf 0kstrend 4kstrxmov 8kprintf <kç @kø Dk° Hk8 Lkstrlen Pk‚ Tkfputs Xk¦ \kp `k‡ dk’ hkx lkW pkfputc tkfflush xk¤ |kmy_fopen €k3 „kÁ ˆkU Œkatoi �k ”k ˜kn œk�  kÙ ¤kz ¨kÐ ¬k€ °kþ ´kß ¸kJ ¼kopterr Àkoptarg Äk Èkë Ìkï Ðkà Ôkoptind Øk Ük´ àk^ äk  èkA ìk3 ðk ôk Cÿþùg�Vÿþ g.__start(kÅ.__start(D__start d i k p_xargc „p_xargv ˆp_xrcfg  p_xrc ¤T ø.filejÿþg›Úôðk#ð Z_$STATIC  ke$ x  3 �E ”[ ˜m œ.file¦ÿþgmysqldump.c‡¡˜k,(.main˜ nÉ  kn×à knâ knõ| kn ì kn´ kn$0 kn.DBerrorX kn/Ð kn.usage#´ kn<$ð knK%D knW%Ü knk&Ä kn{', kn‰(L kn * kn¶+¼ knÃ- knÐ-Ô knÛ.X kné.à kn< k_$STATIC køs k2€ T.file´ÿþgú6ôðkXPð ª_$STATIC @k`Q l  c Œstrcat.s·ÿþ g.strcat6�)strcmp.sºÿþ g.strcmp8 0)glink.s¿ÿþ gypk(yp»glink.sÄÿþ g.exit0k(.exit0Àglink.sÉÿþ g.my_init/Àk(.my_init/ÀÅglink.sÎÿþ g.my_end/èk(.my_end/èÊglink.sÓÿþ g…08k(…08Ïglink.sØÿþ g’0`k(’0`Ôglink.sÝÿþ gŸ0ˆk(Ÿ0ˆÙglink.sâÿþ g.puts0°k(.puts0°Þglink.sçÿþ g°0Øk(°0Øãglink.sìÿþ gÂ1k(Â1èglink.sñÿþ gÏ1(k(Ï1(íglink.söÿþ gâ1Pk(â1Pòglink.sûÿþ gó1xk(ó1x÷glink.sÿþ g1 k(1 üglink.sÿþ g.fprintf1Èk(.fprintf1Èglink.s ÿþ g.strmov1ðk(.strmov1ðglink.sÿþ g2k(2 glink.sÿþ g(2@k((2@glink.sÿþ g62hk(62hglink.sÿþ gA2�k(A2�glink.s#ÿþ gL2¸k(L2¸glink.s(ÿþ g.sprintf2àk(.sprintf2à$glink.s-ÿþ g.strend3k(.strend3)glink.s2ÿþ g.strxmov30k(.strxmov30.glink.s7ÿþ g.printf3Xk(.printf3X3glink.s<ÿþ gZ3€k(Z3€8glink.sAÿþ gl3¨k(l3¨=glink.sFÿþ g€3Ðk(€3ÐBglink.sKÿþ g.strlen3øk(.strlen3øGglink.sPÿþ g’4 k(’4 Lglink.sUÿþ g.fputs4Hk(.fputs4HQglink.sZÿþ g§4pk(§4pVglink.s_ÿþ g¹4˜k(¹4˜[glink.sdÿþ gÌ4Àk(Ì4À`glink.siÿþ gØ4èk(Ø4èeglink.snÿþ gç5k(ç5jglink.ssÿþ g÷58k(÷58oglink.sxÿþ g.fputc5`k(.fputc5`tglink.s}ÿþ g.fflush5ˆk(.fflush5ˆyglink.s‚ÿþ g5°k(5°~glink.s‡ÿþ g5Øk(5؃glink.sŒÿþ g(7�k((7�ˆglink.s‘ÿþ g87¸k(87¸�glink.s–ÿþ g.atoi7àk(.atoi7à’glink.s›ÿþ gC9Pk(C9P—glink.s ÿþ gN9xk(N9xœglink.s¥ÿþ g[9 k([9 ¡glink.sªÿþ gg9Èk(g9Ȧglink.s¯ÿþ gv9ðk(v9ð«glink.s´ÿþ gŠ:k(Š:°glink.s¹ÿþ g™:@k(™:@µglink.s¾ÿþ g²:hk(²:hºglink.sÃÿþ g¿:�k(¿:�¿glink.sÈÿþ gÓ:¸k(Ó:¸Äglink.sÍÿþ gÞ:àk(Þ:àÉglink.sÒÿþ gû;k(û;Îglink.s×ÿþ g ;0k( ;0Óglink.sÜÿþ g ;Xk( ;XØglink.sáÿþ g .;€k( .;€Ýglink.sæÿþ g C;¨k( C;¨âglink.sëÿþ g U;Ðk( U;Ðçglink.sðÿþ g d;øk( d;øìglink.sÿÿÿÿÿþ g {Hk( {Hñ ‰my_prognamedefault_charset_infomax_allowed_packetnet_buffer_lengthcharsets_dirmysql_real_escape_stringmysql_fetch_fieldmysql_fetch_lengthsmysql_fetch_rowmysql_field_seekmysql_data_seekmysql_free_resultmysql_optionsmysql_use_resultmysql_store_resultmysql_list_tablesmysql_get_server_infomysql_refreshmysql_real_querymysql_querymysql_select_dbmysql_closemysql_real_connectmysql_initmysql_errormysql_errnomysql_num_fieldsmysql_num_rowsload_defaultsmy_no_flags_freemy_strdupfn_formatmy_mallocget_tty_passwordmy_deleteconvert_dirnamemy_printf_errorto_unix_pathmy_fclosemy_load_pathdynstr_freedynstr_reallocdynstr_setdynstr_appendinit_dynamic_stringprint_defaultsset_default_charset_by_namegetopt_longset_changeable_varset_all_changeable_vars__pthread_tracepthread_init_system_configuration__mod_init__C_runtime_pstartupcrt0_data_$STATIC_BSSchangeable_varscrt0main.s../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cTue Aug 18 09:04:53 1998 C Set ++ for AIX Compiler Version 4.1.0.0 --- .__threads_init_bsd_init_routine_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routineTue Mar 20 17:56:52 2001 C for AIX Compiler Version 4.4.0.0 --- .getTableName.dumpTable.getTableStructure.test_if_special_chars.unescape.dbDisconnect.dbConnect.get_options.print_version.quote_name.dump_all_databases.dump_databases.init_dumping.dump_all_tables_in_db.dump_selected_tables.print_value.write_heder.safe_exit.field_escape.add_load_option../../../../../../../src/bos/usr/ccs/lib/libpthreads/init.cMon Sep 29 13:53:38 1997 .call_pthread_init_pthread_init_routine.__mod_init.mysql_query.mysql_error.my_printf_error.my_no_flags_free.dynstr_free.mysql_list_tables.mysql_fetch_row.mysql_data_seek.mysql_free_result.convert_dirname.my_load_path.fn_format.my_delete.to_unix_path.mysql_use_result.mysql_store_result.mysql_num_fields.mysql_fetch_lengths.mysql_field_seek.mysql_fetch_field.dynstr_set.dynstr_append.dynstr_realloc.mysql_real_escape_string.mysql_errno.my_fopen.mysql_num_rows.my_fclose.my_malloc.mysql_close.mysql_init.mysql_options.mysql_real_connect.load_defaults.set_all_changeable_vars.getopt_long.set_changeable_var.my_strdup.set_default_charset_by_name.get_tty_password.print_defaults.mysql_select_db.init_dynamic_string.mysql_real_query.mysql_refresh.mysql_get_server_info.pthread_init k꦳Óàí�fu”·:€�·:€�·:!#Ïêf./usr/local/bin/mysqlimportent/ó/í�ß:·‹â?ÞÒH %ÏÝô À( ÷ à1L.text((%Ï(5„± .data ÷ ÷Ý&÷ €bxc䀡D€ÁH€á@9@H Ñ€A|y@‚8€bx˜FH YˆH,A‚ €bp€‚T€¡@8„À8c H €Acã€�@H ©€A,A‚8€bx˜FH cã��h8!`»Áÿø}ˆ¦N€ €L|¦€ÂP¿�ÿð�ˆH”!ý��aP,`½`ŸA‚€bp€‚T8„x8c H …€AƒÂT8a@8 8À8ž”H 1€A;€,@�h;½ÿü8¾X„�`¦8aP8àH -€A8a@8�PH E€A8a@8ž¤H 5€A;œ|ø@€8¾X„�`¦8aP8àKÿÿ¸€�@€¡D€aP8¥ÿÿH !€A,A‚ €aPH é��x8!p»�ÿð}ˆ¦N€ € |¦¿Aÿè�`Ÿ€ }€&‘�”!ö ,;Àƒ‚P; A‚ˆ@,A‚; �a @ƒbT8à8a@;[XcE`¦€� @H 1€A.A’$8a@€� @H ‘€AˆE,A‚¨H$8a@€� @8 H •€AˆE,A‚„ˆH,A‚€bp8› $8¡@8c H Õ€A;¡@c£8› L8¡@H u€Acãc¤H �€A,A‚4cã8�@H 8`�� d€ h8! `|¦}€� »AÿèN€ ;¡@8a@H q€AˆH,A‚H€bp8c A’(8› \8¡@8Á@H =€Aˆ,A‚0H$8› ˆ8¡@8Á@H €Aˆ,A‚ 8»HHcEA’;[\c£8› ´cF8á@H ™€Ac£H €AˆD,A‚8› ÐH %€AˆB,A‚8› ÜH €A8› äH €A8�@H õ€A€œ,,@‚(€$,@‚€ ,@‚€,A‚8› ôH ¹€A€œ,8» üHù€œ$8» H퀜 8»Hလ8»4HÕ€œ(8»@HÉ€,A‚(8›XH e€A€œH Y€A8›\H M€A›Ãcãc¤H ±€A,@‚þ(ˆC,@‚HcãH €A,A‚4ƒÂpƒ¼0cãH í€A`g8~ 8›`c¥8Á@Hy€A8`�� d€ h8! `|¦}€� »AÿèN€ €T¾�ÿÐ|¦ƒâPƒÂT`}�”!ÿ€`œ;`;@€}€œ8¾ d8ßP8á@H …€A,ÿÿA‚dƒ"¼ƒÀ‚âÄ:À: x8ÿ½(3T:|ž€ „|ºA�p| ¦N€ šßAHäšß@HÜ€xH Q€A�HÈ€� H¼Hñ8`H]€AH-8`HM€A€�,H�€�H„šßEH|šßFHt€�4HhšßBH`šßGHX‚˜,A‚œ€@optind@optarg@M@ ]@ p@ ~@ �@ ž@ ³@ À@ Í@ Û@ ë@ þ@  @ strmov@ @ my_init@ strend@ &@ my_end@ 9@ strxmov@ K@ Z@ i@ y@ �@  @ __start À! À Ä Ð Ô   0 @ P ` p € �   ° À Ð à ð    0 @ P ` p € �   À Ä È Ì Ô Ø è          $ ( ,# 0 4 8 < @  D& H L P T  X \ ` d h l, p" t+ x |! €* „ ˆ Œ) �$ ” ˜. œ   ¤ ¨ ¬ ° ´% ¸  ¼  À- Ä( È Ì Ð'/usr/local/lib/mysql:/usr/lib:/liblibc.ashr.olibpthreads.ashr_comm.olibpthreads.ashr_xpg5.olibmysqlclient.alibmysqlclient.so __mod_init__pthread_trace pthread_init my_progname charsets_dirmysql_optionsmysql_real_query mysql_querymysql_select_db mysql_closemysql_real_connect mysql_init mysql_info mysql_errorload_defaultsmy_no_flags_free my_strdupfree_defaults fn_formatget_tty_passwordmy_printf_error to_unix_path my_load_pathdynstr_appendinit_dynamic_stringprint_defaults getopt_long*Z>ÌBÎJ\`Ü™nfp!™šj°ð™ºÐÆÒÈ&™ò�&â�Jä�næ�’è�îd�ò^�ЙBb�J`rhžl�À+™Êp�Îr�à0™¤5™°:™¼?™öp�D™$&™^p�~r�†€�Šr�˜I™¤D™Öp� €�r�I™&r�.€�2r�<I™F„�HN™^„�hS™z„��X™¦„�¾€�Âr�ÐI™à]™ö„�.p�V€�Zr�dI™nr�€b™¬g™¼l™Ìl™q™np�Žr�¨g™Àv™ä{™ €� I™ ,€™ <…™ €Š™ –€� ¬I™ ÐI™ €™ �™ ,v™ Dv™ Pv™ \v™ ˜v™ ìv™ øv™ v™ …™ 8”™ J€� T”™ pI™ ²p� ¶r� ä™™ ö¦� ú¨� þª� @ž™ d&™ t&™ Ð5™ ࣙ X™™(™™n€�xI™²€�¼I™â°�d¨™®r�´­™À­™Ì²™Öl�ಙ척ø²™²™²™p� ·™Nl�Rr�x²™Úr�ì¼™ r�¼™(Á™Æ™r�0Ë™xÆ™‚r�˜Ë™Ònút"vJxrzš|Â~ꂆ:ˆbŠŠŒ²ŽÚ�’*”R–z˜¢šÊœòž B¢j¤’¬º®â² ´2¶Z¸‚ºª¼Ò¾úÀ ÀÌ Äà Ð  Ô     0  @  P  `  p  €  �     °  À  Ð  à  ð        0  @  P  `  p  €  �     ÀÄ ÄX È ÌX ÔÜ ØX è Ô V > @  Þ Ê T $B ( ,& 0  4  8 < @  D, H LF PD TP X \ ` d h l8 p$ t6 x  |" €4 „L ˆ  Œ2 �( ” ˜< œ   ¤î ¨J ¬ ° ´* ¸R ¼N À: Ä0 ÈH Ì Ð.optindoptarg + < H X d w ‚ � ™ § ¸  strmov Ð my_init strend Ú my_end ë strxmov û   # 7 F Rb errno_iobexit strlen atoi sprintf printf fprintf puts o __crt0vTOC àkz k__crt0v kR kb k_$STATIC k_$STATIC k� ko kerrno $k (kmy_init ,k_$STATIC 0k 4k™ 8k§ <k @kmy_end DkX Hkexit Lk_iob Pkfprintf Tk™ Xkw \k `kd dkH hk# lkÐ pk tk+ xkstrmov |k €ksprintf „k< ˆkû Œkstrend �k‚ ”kF ˜k œkoptarg  k ¤katoi ¨k¸ ¬koptind °kÚ ´kputs ¸kprintf ¼k7 Àkstrxmov Äkstrlen Èk� Ìkë Ðk Ãÿþùg¦Öÿþ g.__start(kÅ.__start(Ä__start À � Àk p_xargc àp_xargv äp_xrcfg üp_xrc z Ô.fileêÿþg±ð ðk9ð Ú_$STATIC Xke: Ô  I ì[ ðq ôƒ ø.fileÿþgmysqlimport.c�·˜k8.main˜ îßì kîêT kîùÌ kî( kîD kî! ¨ kî.usage˜ kî.L kî=  kîN| kî\ kîfd kî k×_$STATIC Ðkð™ Økð.fileÿþg{· ðkXÑð _$STATIC øk`Ò È  ä èglink.s#ÿþ gúpk(úpglink.s(ÿþ g.exitÀk(.exitÀ$glink.s-ÿþ g.my_initÐk(.my_initÐ)glink.s2ÿþ gøk(ø.glink.s7ÿþ g k( 3glink.s<ÿþ g'Hk('H8glink.sAÿþ g.my_endpk(.my_endp=glink.sFÿþ g6˜k(6˜Bglink.sKÿþ g.fprintfèk(.fprintfèGglink.sPÿþ gCk(CLglink.sUÿþ gO8k(O8Qglink.sZÿþ g^`k(^`Vglink.s_ÿþ grˆk(rˆ[glink.sdÿþ gƒ°k(ƒ°`glink.siÿþ g˜Øk(˜Øeglink.snÿþ g£k(£jglink.ssÿþ g²(k(²(oglink.sxÿþ g.strmovPk(.strmovPtglink.s}ÿþ gÄxk(Äxyglink.s‚ÿþ g.sprintf k(.sprintf ~glink.s‡ÿþ gÒÈk(Òȃglink.sŒÿþ gßðk(ßðˆglink.s‘ÿþ g.strendk(.strend�glink.s–ÿþ gí@k(í@’glink.s›ÿþ gùhk(ùh—glink.s ÿþ g.atoi�k(.atoi�œglink.s¥ÿþ g¸k(¸¡glink.sªÿþ gàk(à¦glink.s¯ÿþ g.putsk(.puts«glink.s´ÿþ g.printf0k(.printf0°glink.s¹ÿþ g#Xk(#Xµglink.s¾ÿþ g.strxmov€k(.strxmov€ºglink.sÃÿþ g.strlen¨k(.strlen¨¿glink.sÈÿþ g3Ðk(3ÐÄglink.sÍÿþ g@øk(@øÉglink.sÿÿÿÿÿþ gQHk(QHÎ_my_prognamecharsets_dirmysql_optionsmysql_real_querymysql_querymysql_select_dbmysql_closemysql_real_connectmysql_initmysql_infomysql_errorload_defaultsmy_no_flags_freemy_strdupfree_defaultsfn_formatget_tty_passwordmy_printf_errorto_unix_pathmy_load_pathdynstr_appendinit_dynamic_stringprint_defaultsgetopt_long__pthread_tracepthread_init__mod_init__C_runtime_pstartupcrt0_data_$STATIC_BSScrt0main.s../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cTue Aug 18 09:04:53 1998 C Set ++ for AIX Compiler Version 4.1.0.0 --- .__threads_init_bsd_init_routine_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routineTue Mar 20 17:57:01 2001 C for AIX Compiler Version 4.4.0.0 --- .safe_exit.db_disconnect.db_connect.lock_table.write_to_table.get_options.print_version.add_load_option.field_escape.db_error.db_error_with_table../../../../../../../src/bos/usr/ccs/lib/libpthreads/init.cMon Sep 29 13:53:38 1997 .call_pthread_init_pthread_init_routine.__mod_init.load_defaults.my_no_flags_free.free_defaults.mysql_close.mysql_init.mysql_options.mysql_real_connect.mysql_select_db.init_dynamic_string.fn_format.dynstr_append.mysql_real_query.my_load_path.mysql_query.to_unix_path.mysql_info.getopt_long.my_strdup.get_tty_password.print_defaults.mysql_error.my_printf_error.pthread_init8 kêúâàí�¼u”·:ƒ�·:ƒ�·:!#0<â¼./usr/local/bin/msql2mysqlent/ó/í�#!/bin/sh # Copyright (C) 1979-1996 TcX AB & Monty Program KB & Detron HB # # This software is distributed with NO WARRANTY OF ANY KIND. No author or # distributor accepts any responsibility for the consequences of using it, or # for whether it serves any particular purpose or works at all, unless he or # she says so in writing. Refer to the Free Public License (the "License") # for full details. # # Every copy of this file must include a copy of the License, normally in a # plain ASCII text file named PUBLIC. The License grants you the right to # copy, modify and redistribute this file, but only under certain conditions # described in the License. Among other things, the License requires that # the copyright notice and this notice be preserved on all copies. /usr/local/bin/replace msqlConnect mysql_connect msqlListDBs mysql_list_dbs msqlNumRows mysql_num_rows msqlFetchRow mysql_fetch_row msqlFetchField mysql_fetch_field msqlFreeResult mysql_free_result msqlListFields mysql_list_fields msqlListTables mysql_list_tables msqlErrMsg 'mysql_error(mysql)' msqlStoreResult mysql_store_result msqlQuery mysql_query msqlField mysql_field msqlSelect mysql_select msqlSelectDB mysql_select_db msqlNumFields mysql_num_fields msqlClose mysql_close msqlDataSeek mysql_data_seek m_field MYSQL_FIELD m_result MYSQL_RES m_row MYSQL_ROW msql mysql mSQL mySQL MSQL MYSQL msqlCreateDB mysql_create_db msqlDropDB mysql_drop_db msqlFieldSeek mysql_field_seek -- $* pass kê~ÃÕàí�Qv”·:ƒ�·:ƒ�·:!# =âQ./usr/local/bin/mysql_confignt/ó/í�#!/bin/sh # Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB # # 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # This script reports various configuration settings that may be needed # when using the MySQL client library. ldata='/var/mysql' execdir='/usr/local/bin' bindir='/usr/local/bin' pkglibdir='/usr/local/lib/mysql' pkgincludedir='/usr/local/include/mysql' version='3.23.35' socket='/tmp/mysql.sock' port='3306' ldflags='-L/usr/local/lib' client_libs='-lz -lcrypt -lm ' libs="$ldflags -L'$pkglibdir' -lmysqlclient $client_libs" cflags="-I'$pkgincludedir'" usage () { cat < Grant # and Create -> Alter, Index, References if test $res = 0 then echo "Setting default privileges for the new grant, index and alter privileges" /usr/local/bin/mysql --user=root --password="$root_password" --host="$host" mysql < Column_priv from MySQL 3.22.12 # echo "Changing name of columns_priv.Type -> columns_priv.Column_priv" echo "You can ignore any errors from this" /usr/local/bin/mysql -f --user=root --password="$root_password" --host="$host" mysql <; chomp($opt_password); system "stty echo"; print "\n"; } # make the connection to MySQL $dbh= DBI->connect("DBI:mysql:mysql:host=$hostname:port=$opt_port:mysql_socket=$opt_socket",$opt_user,$opt_password, {PrintError => 0}) || die("Can't make a connection to the mysql server.\n The error: $DBI::errstr"); # the start of the program &q1(); exit(0); # the end... ##### # below all subroutines of the program ##### ### # the beginning of the program ### sub q1 { # first question ... my ($answer,$end); while (! $end) { print "#"x70; print "\n"; print "## Welcome to the permission setter $version for MySQL.\n"; print "## made by Luuk de Boer\n"; print "#"x70; print "\n"; print "What would you like to do:\n"; print " 1. Set password for a user.\n"; print " 2. Add a database + user privilege for that database.\n"; print " - user can do all except all admin functions\n"; print " 3. Add user privilege for an existing database.\n"; print " - user can do all except all admin functions\n"; print " 4. Add user privilege for an existing database.\n"; print " - user can do all except all admin functions + no create/drop\n"; print " 5. Add user privilege for an existing database.\n"; print " - user can do only selects (no update/delete/insert etc.)\n"; print " 0. exit this program\n"; print "\nMake your choice [1,2,3,4,5,0]: "; while () { $answer = $_; chomp($answer); if ($answer =~ /1|2|3|4|5|0/) { &setpwd if ($answer == 1); &addall($answer) if ($answer =~ /^[2345]$/); if ($answer == 0) { print "Sorry, hope we can help you next time \n\n"; $end = 1; } } else { print "Your answer was $answer\n"; print "and that's wrong .... Try again\n"; } last; } } } ### # set a password for a user ### sub setpwd { my ($user,$pass,$host); print "\n\nSetting a (new) password for a user.\n"; $user = user(); $pass = newpass($user); $host = hosts($user); print "#"x70; print "\n\n"; print "That was it ... here is an overview of what you gave to me:\n"; print "The username : $user\n"; # print "The password : $pass\n"; print "The host : $host\n"; print "#"x70; print "\n\n"; print "Are you pretty sure you would like to implement this [yes/no]: "; my $no = ; chomp($no); if ($no =~ /n/i) { print "Okay .. that was it then ... See ya\n\n"; return(0); } else { print "Okay ... let's go then ...\n\n"; } $user = $dbh->quote($user); $host = $dbh->quote($host); if ($pass eq '') { $pass = "''"; } else { $pass = "PASSWORD(". $dbh->quote($pass) . ")"; } my $sth = $dbh->prepare("update user set Password=$pass where User = $user and Host = $host") || die $dbh->errstr; $sth->execute || die $dbh->errstr; $sth->finish; print "The password is set for user $user.\n\n"; } ### # all things which will be added are done here ### sub addall { my ($todo) = @_; my ($answer,$good,$db,$user,$pass,$host,$priv); if ($todo == 2) { $db = newdatabase(); } else { $db = database(); } $user = newuser(); $pass = newpass(); $host = newhosts(); print "#"x70; print "\n\n"; print "That was it ... here is an overview of what you gave to me:\n"; print "The database name : $db\n"; print "The username : $user\n"; # print "The password : $pass\n"; print "The host(s) : $host\n"; print "#"x70; print "\n\n"; print "Are you pretty sure you would like to implement this [yes/no]: "; my $no = ; chomp($no); if ($no =~ /n/i) { print "Okay .. that was it then ... See ya\n\n"; return(0); } else { print "Okay ... let's go then ...\n\n"; } if ($todo == 2) { # create the database my $sth = $dbh->do("create database $db") || $dbh->errstr; } # select the privilege .... if (($todo == 2) || ($todo == 3)) { $priv = "'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'"; } elsif ($todo == 4) { $priv = "'Y','Y','Y','Y','N','N','N','Y','Y','Y'"; } elsif ($todo == 5) { $priv = "'Y','N','N','N','N','N','N','N','N','N'"; } else { print "Sorry, choice number $todo isn't known inside the program .. See ya\n"; quit(); } my @hosts = split(/,/,$host); $user = $dbh->quote($user); $db = $dbh->quote($db); if ($pass eq '') { $pass = "''"; } else { $pass = "PASSWORD(". $dbh->quote($pass) . ")"; } foreach my $key (@hosts) { my $key1 = $dbh->quote($key); my $sth = $dbh->prepare("select Host,User from user where Host = $key1 and User = $user") || die $dbh->errstr; $sth->execute || die $dbh->errstr; my @r = $sth->fetchrow_array; if ($r[0]) { print "WARNING WARNING SKIPPING CREATE FOR USER $user AND HOST $key\n"; print "Reason: entry already exists in the user table.\n"; } else { $sth = $dbh->prepare("insert into user (Host,User,Password) values($key1,$user,$pass)") || die $dbh->errstr; $sth->execute || die $dbh->errstr; $sth->finish; } $sth = $dbh->prepare("INSERT INTO db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Grant_priv,References_priv,Index_priv,Alter_priv) VALUES ($key1,$db,$user,$priv)") || die $dbh->errstr; $sth->execute || die $dbh->errstr; $sth->finish; } $dbh->do("flush privileges") || print "Can't load privileges\n"; print "Everything is inserted and mysql privileges have been reloaded.\n\n"; } ### # ask for a new database name ### sub newdatabase { my ($answer,$good,$db); print "\n\nWhich database would you like to add: "; while () { $answer = $_; $good = 0; chomp($answer); if ($answer) { my $sth = $dbh->prepare("show databases") || die $dbh->errstr; $sth->execute || die $dbh->errstr; while (my @r = $sth->fetchrow_array) { if ($r[0] eq $answer) { print "\n\nSorry, this database name is already in use; try something else: "; $good = 1; } } } else { print "You must type something ...\nTry again: "; next; } last if ($good == 0); } $db = $answer; print "The new database $db will be created\n"; return($db); } ### # select a database ### sub database { my ($answer,$good,$db); print "\n\nWhich database would you like to select: \n"; print "You can choose from: \n"; my $sth = $dbh->prepare("show databases") || die $dbh->errstr; $sth->execute || die $dbh->errstr; while (my @r = $sth->fetchrow_array) { print " - $r[0] \n"; } print "Which database will it be (case sensitive): "; while () { $answer = $_; $good = 0; chomp($answer); if ($answer) { my $sth = $dbh->prepare("show databases") || die $dbh->errstr; $sth->execute || die $dbh->errstr; while (my @r = $sth->fetchrow_array) { if ($r[0] eq $answer) { $good = 1; $db = $r[0]; last; } } } else { print "You must type something ...\nTry again: "; next; } if ($good == 1) { last; } else { print "You must select one from the list.\nTry again: "; next; } } print "The database $db will be used.\n"; return($db); } ### # ask for a new username ### sub newuser { my ($answer,$user); print "\nWhat username is to be created: "; while() { $answer = $_; chomp($answer); if ($answer) { $user = $answer; } else { print "You must type something ...\nTry again: "; next; } last; } print "Username = $user\n"; return($user); } ### # ask for a user which is already in the user table ### sub user { my ($answer,$user); print "\nFor which user do you want to specify a password: "; while() { $answer = $_; chomp($answer); if ($answer) { my $sth = $dbh->prepare("select User from user where User = '$answer'") || die $dbh->errstr; $sth->execute || die $dbh->errstr; my @r = $sth->fetchrow_array; if ($r[0]) { $user = $r[0]; } else { print "Sorry, user $answer isn't known in the user table.\nTry again: "; next; } } else { print "You must type something ...\nTry again: "; next; } last; } print "Username = $user\n"; return($user); } ### # ask for a new password ### sub newpass { my ($user) = @_; my ($answer,$good,$pass,$yes); print "Would you like to set a password for $user [y/n]: "; $yes = ; chomp($yes); if ($yes =~ /y/) { system "stty -echo"; print "What password do you want to specify for $user: "; while() { $answer = $_; chomp($answer); system "stty echo"; print "\n"; if ($answer) { system "stty -echo"; print "Type the password again: "; my $second = ; chomp($second); system "stty echo"; print "\n"; if ($answer ne $second) { print "Passwords aren't the same; we begin from scratch again.\n"; system "stty -echo"; print "Password please: "; next; } else { $pass = $answer; } } else { print "You must type something ...\nTry again: "; next; } last; } # print "The password for $user is $pass.\n"; } else { print "We won't set a password so the user doesn't have to use it\n"; $pass = ""; } return($pass); } ### # ask for new hosts ### sub newhosts { my ($answer,$good,$host); print "We now need to know from what host(s) the user will connect.\n"; print "Keep in mind that % means 'from any host' ...\n"; print "The host please: "; while() { $answer = $_; chomp($answer); if ($answer) { $host .= ",$answer"; print "Would you like to add another host [yes/no]: "; my $yes = ; chomp($yes); if ($yes =~ /y/i) { print "Okay, give us the host please: "; next; } else { print "Okay we keep it with this ...\n"; } } else { print "You must type something ...\nTry again: "; next; } last; } $host =~ s/^,//; print "The following host(s) will be used: $host.\n"; return($host); } ### # ask for a host which is already in the user table ### sub hosts { my ($user) = @_; my ($answer,$good,$host); print "We now need to know which host for $user we have to change.\n"; print "Choose from the following hosts: \n"; $user = $dbh->quote($user); my $sth = $dbh->prepare("select Host,User from user where User = $user") || die $dbh->errstr; $sth->execute || die $dbh->errstr; while (my @r = $sth->fetchrow_array) { print " - $r[0] \n"; } print "The host please (case sensitive): "; while() { $answer = $_; chomp($answer); if ($answer) { $sth = $dbh->prepare("select Host,User from user where Host = '$answer' and User = $user") || die $dbh->errstr; $sth->execute || die $dbh->errstr; my @r = $sth->fetchrow_array; if ($r[0]) { $host = $answer; last; } else { print "You have to select a host from the list ...\nTry again: "; next; } } else { print "You have to type something ...\nTry again: "; next; } last; } print "The following host will be used: $host.\n"; return($host); } ### # a nice quit (first disconnect and then exit ### sub quit { $dbh->disconnect; exit(0); } ### # Read variables password, port and socket from .my.cnf under the client # or perl groups ### sub read_my_cnf { open(TMP,$ENV{'HOME'} . "/.my.cnf") || return 1; while () { if (/^\[(client|perl)\]/i) { while ((defined($_=)) && !/^\[\w+\]/) { print $_; if (/^host\s*=\s*(\S+)/i) { $opt_host = $1; } elsif (/^user\s*=\s*(\S+)/i) { $opt_user = $1; } elsif (/^password\s*=\s*(\S+)/i) { $opt_password = $1; } elsif (/^port\s*=\s*(\S+)/i) { $opt_port = $1; } elsif (/^socket\s*=\s*(\S+)/i) { $opt_socket = $1; } } } } close(TMP); } ### # the help text ### sub usage { print < ---------------------------------------------------------------------- The permission setter is a little program which can help you add users or databases or change passwords in MySQL. Keep in mind that we don't check permissions which already been set in MySQL. So if you can't connect to MySQL using the permission you just added, take a look at the permissions which have already been set in MySQL. The permission setter first reads your .my.cnf file in your Home directory if it exists. Options for the permission setter: --help : print this help message and exit. The options shown below are used for making the connection to the MySQL server. Keep in mind that the permissions for the user specified via these options must be sufficient to add users / create databases / set passwords. --user : is the username to connect with. --password : the password of the username. --host : the host to connect to. --socket : the socket to connect to. --port : the port number of the host to connect to. If you don't give a password and no password is set in your .my.cnf file, then the permission setter will ask for a password. EOL exit(0); } s kê¬%Øàí�ÿ v”·:…�·:…�·:!# ýãÿ ./usr/local/bin/mysql_zapermissó/í�#!/usr/bin/perl # This is a utility for MySQL. It is not needed by any standard part # of MySQL. # Usage: mysql_zap [-signal] [-f] [-t] pattern # Configuration parameters. $sig = ""; # Default to try all signals $ans = "y"; $opt_f= 0; $opt_t= 0; $opt_a = ""; $BSD = -f '/vmunix' || $ENV{"OS"} eq "SunOS4"; $LINUX = $^O eq 'linux'; $pscmd = $BSD ? "/bin/ps -auxww" : $LINUX ? "/bin/ps axuw" : "/bin/ps -ef"; open(TTYIN, "/dev/tty") || die "can't write /dev/tty: $!"; select(TTYOUT); $| = 1; select(STDOUT); $SIG{'INT'} = 'cleanup'; while ($#ARGV >= $[ && $ARGV[0] =~ /^-/) { if ($ARGV[0] =~ /(ZERO|HUP|INT|QUIT|ILL|TRAP|ABRT|EMT|FPE|KILL|BUS|SEGV|SYS|PIPE|ALRM|TERM|URG|STOP|TSTP|CONT|CLD|TTIN|TTOU|IO|XCPU|XFSZ|VTALRM|PROF|WINCH|LOST|USR1|USR2)/ || $ARGV[0] =~ /-(\d+)$/) { $sig = $1; } elsif ($ARGV[0] eq "-f") { $opt_f=1; } elsif ($ARGV[0] eq "-t") { $opt_t=1; $ans = "n"; } elsif ($ARGV[0] eq "-a") { $opt_a = 1; } elsif ($ARGV[0] eq "-?" || $ARGV[0] eq "-I") { &usage; } else { print STDERR "$0: illegal argument $ARGV[0] ignored\n"; } shift; } &usage if $#ARGV < 0; if (!$opt_f) { if ($BSD) { system "stty cbreak /dev/tty 2>&1"; } else { system "stty", 'cbreak', system "stty", 'eol', '^A'; } } open(PS, "$pscmd|") || die "can't run $pscmd: $!"; $title = ; print TTYOUT $title; # Catch any errors with eval. A bad pattern, for instance. eval <<'EOF'; process: while ($cand = ) { chop($cand); ($user, $pid) = split(' ', $cand); next if $pid == $$; $found = !@ARGV; if ($opt_a) { $found = 1; } foreach $pat (@ARGV) { if ($opt_a) { if (! ($cand =~ $pat)) { next process; } } else { $found = 1 if $cand =~ $pat; } } next if (!$found); if (! $opt_f && ! $opt_t) { print TTYOUT "$cand? "; read(TTYIN, $ans, 1); print TTYOUT "\n" if ($ans ne "\n"); } else { print TTYOUT "$cand\n"; } if ($ans =~ /^y/i) { &killpid($sig, $pid); } if ($ans =~ /^q/i) { last; } } EOF &cleanup; sub usage { print </dev/tty 2>&1"; } else { system "stty", 'icanon'; system "stty", 'eol', '^@'; } print "\n"; exit; } sub killpid { local($signal,$pid) = @_; if ($signal) { kill $signal,$pid; } else { print "kill -15\n"; kill 15, $pid; for (1..5) { sleep 2; return if kill(0, $pid) == 0; } print "kill -9\n"; kill 9, $pid; for (1..5) { sleep 2; return if kill(0, $pid) == 0; } print "$pid will not die!\n"; } } \ kê2½Ùàí�¯³v”·:†�·:†�·:!#믳./usr/local/bin/mysqlaccessmissó/í�#!/usr/bin/perl # **************************** package MySQLaccess; #use strict; use POSIX qw(tmpnam); use Fcntl; BEGIN { # **************************** # static information... $VERSION = "2.06, 20 Dec 2000"; $0 =~ m%/([^/]+)$%o; $script = $1; $script = 'MySQLAccess' unless $script; $script_conf = "$script.conf"; $script_log = "~/$script.log"; # **************************** # information on MySQL $MYSQL = '/usr/local/bin/mysql'; # path to mysql executable $SERVER = '3.21'; $MYSQL_OPT = ' --batch --unbuffered'; $ACCESS_DB = 'mysql'; # name of DB with grant-tables $ACCESS_H = 'host'; # $ACCESS_U = 'user'; # $ACCESS_D = 'db'; # # Add/Edit privileges $ACCESS_H_TMP = 'host_tmp'; $ACCESS_U_TMP = 'user_tmp'; $ACCESS_D_TMP = 'db_tmp'; $ACCESS_H_BCK = 'host_backup'; $ACCESS_U_BCK = 'user_backup'; $ACCESS_D_BCK = 'db_backup'; $DIFF = '/usr/bin/diff'; $TMP_PATH = '/tmp'; #path to writable tmp-directory $MYSQLDUMP = '/usr/local/bin/mysqldump'; #path to mysqldump executable $MYSQLADMIN= 'http://foobar.com/MySQLadmin'; #URL of CGI for manipulating #the temporary grant-tables } END { unlink $MYSQL_CNF if defined $MYSQL_CNF and not $DEBUG; } $INFO = <<"_INFO"; -------------------------------------------------------------------------- mysqlaccess (Version $VERSION) ~~~~~~~~~~~ Copyright (C) 1997,1998 Yves.Carlier\@rug.ac.be University of Ghent (RUG), Belgium Administratieve Informatieverwerking (AIV) report the access-privileges for a USER from a HOST to a DB Many thanks go to and for their suggestions, debugging and patches. use `$script -?' to get more information on available options. From version 2.0x, $script can also be used through a WEB-browser if it is ran as a CGI-script. (See the release-notes) -------------------------------------------------------------------------- _INFO $OPTIONS = <<_OPTIONS; Usage: $script [host [user [db]]] OPTIONS -?, --help display this helpscreen and exit -v, --version print information on the program `$script' -u, --user=# username for logging in to the db -p, --password=# validate password for user -h, --host=# name or IP-number of the host -d, --db=# name of the database -U, --superuser=# connect as superuser -P, --spassword=# password for superuser -H, --rhost=# remote MySQL-server to connect to --old_server connect to old MySQL-server (before v3.21) which does not yet know how to handle full where clauses. -b, --brief single-line tabular report -t, --table report in table-format --relnotes print release-notes --plan print suggestions/ideas for future releases --howto some examples of how to run `$script' --debug=N enter debuglevel N (0..3) --copy reload temporary grant-tables from original ones --preview show differences in privileges after making changes in (temporary) grant-tables --commit copy grant-rules from temporary tables to grant-tables (!don't forget to do an mysqladmin reload) --rollback undo the last changes to the grant-tables. Note: + At least the user and the db must be given (even with wildcards) + If no host is given, `localhost' is assumed + Wilcards (*,?,%,_) are allowed for host, user and db, but be sure to escape them from your shell!! (ie type \\* or '*') _OPTIONS $RELEASE = <<'_RELEASE'; Release Notes: ------------- 0.1-beta1: internal - first trial. 0.1-beta2: (1997-02-27) - complete rewrite of the granting-rules, based on the documentation found in de FAQ. - IP-number and name for a host are equiv. 0.1-beta3: (1997-03-10) - more information - 'localhost' and the name/ip of the local machine are now equiv. 0.1-beta4: (1997-03-11) - inform the user if he has not enough priv. to read the mysql db 1.0-beta1: (1997-03-12) suggestions by Monty: - connect as superuser with superpassword. - mysqlaccess could also notice if all tables are empty. This means that all user have full access! - It would be nice if one could optionally start mysqlaccess without any options just the arguments 'user db' or 'host user db', where host is 'localhost' if one uses only two arguments. 1.0-beta2: (1997-03-14) - bugfix: translation to reg.expr of \_ and \%. - bugfix: error in matching regular expression and string given by user which resulted in 'test_123' being matched with 'test' 1.0-beta3: (1997-03-14) - bugfix: the user-field should not be treated as a sql-regexpr, but as a plain string. - bugfix: the host-table should not be used if the host isn't empty in db or if the host isn't emty in user (Monty) 1.0-beta4: (1997-03-14) - bugfix: in an expression "$i = $j or $k", the '=' binds tighter than the or which results in problems... (by Monty) - running mysqlaccess with "perl -w" gives less warnings... ;-) 1.0-beta5: (1997-04-04) - bugfix: The table sorting was only being applied to the "user" table; all the tables need to be sorted. Rewrote the sort algorithm, and the table walk algorithm (no temp file anymore), and various other cleanups. I believe the access calculation is 100% correct. (by Paul D. Smith ) - Allow the debug level to be set on the cmd line with --debug=N. (by Paul D. Smith ) - More -w cleanups; should be totally -w-clean. (by Paul D. Smith ) 1.1-beta1: (1997-04-xx) 1.1-beta2: (1997-04-11) - new options: --all_users : report access-rights for all possible users --all_dbs : report access-rights for all possible dbs --all_hosts : report access-rights for all possible hosts --brief : as brief as possible, don't mention notes,warnings and rules --password : validate password for user - layout: long messages are wrapped on the report. - functionality: more descriptive notes and warnings wildcards (*,?) are allowed in the user,host and db options setting xxxx=* is equiv to using option --all_xxxx note: make sure you escape your wildcards, so they don't get interpreted by the shell. use \* or '*' - bugfix: Fieldnames which should be skipped on the output can now have a first capital letter. - bugfix: any option with a '.' (eg ip-number) was interpreted as a wildcard-expression. - bugfix: When no entry was found in the db-table, the default accessrights are N, instead of the faulty Y in a previous version. 1.1-beta-3 : (1997-04-xx) 1.1-beta-4 : (1997-04-xx) 1.1-beta-5 : (1997-04-xx) 1.1 : (1997-04-28) - new options: --rhost : name of mysql-server to connect to --plan : print suggestions/ideas for future releases --relnotes : display release-notes --howto : display examples on how to use mysqlaccess --brief : single-line tabular output - functionality/bugfix: * removed options --all_users,--all_dbs,--all_hosts, which were redundant with the wildcard-expressions for the corresponding options. They made the processing of the commandline too painful and confusing ;-) (suggested by psmith) * redefined the option --brief, which now gives a single-line tabular output * Now we check if the right version of the mysql-client is used, since we might use an option not yet implemented in an older version (--unbuffered, since 3.0.18) Also the error-messages the mysql-client reports are better interpreted ;-) * Wildcards can now be given following the SQL-expression (%,_) and the Regular-expression (*,?) syntax. - speed: we now open a bidirectional pipe to the mysql-client, and keep it open throughout the whole run. Queries are written to, and the answers read from the pipe. (suggested by monty) - bugfixes: * the Rules were not properly reset over iterations * when in different tables the field-names were not identical, eg. Select_priv and select_priv, they were considered as definitions of 2 different access-rights. * the IP-number of a host with a name containing wildcards should not be searched for in Name2IP and IP2Name. * various other small things, pointed out by and 1.2 : (1997-05-13) - bugfix: * Fixed bug in acl with anonymous user: Now if one gets accepted by the user table as a empty user name, the user name is set to '' when checking against the 'db' and 'host' tables. (Bug fixed in MySQL3.20.19) 1.2-1 : (1997-xx-xx) - bugfix: * hashes should be initialized with () instead of {} * "my" variable $name masks earlier declaration in same scope, using perl 5.004 1.2-2 : (1997-06-10) 2.0p1-3 : (1997-10-xx) - new * packages * log-file for debug-output : /tmp/mysqlaccess.log * default values are read from a configuration file $script.conf first this file is looked for in the current directory; if not found it is looked for in /etc/ Note that when default-values are given, these can't get overriden by empty (blanc) values! * CGI-BIN version with HTML and forms interface. Simply place the script in an ScriptAliased directory, make the configuration file available in the that directory or in /etc, and point your browser to the right URL. * copy the grant-rules to temporary tables, where you are safe to play with them. * preview changes in privileges after changing grant-rules, before taking them into production * copy the new grant-rules from the temporary tables back to the grant-tables. * Undo all changes made in the grant-tables (1-level undo). -new options: * --table : as opposite of the --brief option. * --copy : (re)load temporary grant-tables from original ones. * --preview : preview changes in privileges after changing some or more entries in the grant-tables. * --commit : copy grant-rules from temporary tables to grant-tables (!don't forget to do an mysqladmin reload) * --rollback: undo the last changes to the grant-tables. - bugfix: * if the table db is empty, mysqlaccess freezed (by X Zhu ) 2.0 : (1997-10-09) - fixed some "-w" warnings. - complain when certain programs and paths can't be found. 2.01 : (1997-12-12) - bugfix: * rules for db-table where not calculated and reported correctly. 2.02 : (1998-01-xx) - bugfix: * Privileges of the user-table were not AND-ed properly with the other privileges. (reported by monty) - new option: * --old_server: mysqlaccess will now use a full where clause when retrieving information from the MySQL-server. If you are connecting to an old server (before v3.21) use the option --old_server. 2.03 : (1998-02-27) - bugfix: * in Host::MatchTemplate: incorrect match if host-field was left empty. 2.04-alpha1 : (2000-02-11) Closes vulnerability due to former implementation requiring passwords to be passed on the command line. - functionality Option values for --password -p -spassword -P may now be omitted from command line, in which case the values will be prompted for. (fix supplied by Steve Harvey ) 2.05: (2000-02-17) Monty Moved the log file from /tmp to ~ 2.06: Don't print '+++USING FULL WHERE CLAUSE+++' _RELEASE $TODO = <<_TODO; Plans: ----- -a full where clause is use now. How can we handle older servers? -add some more functionality for DNS. -select the warnings more carefuly. >> I think that the warnings should either be enhanced to _really_ >> understand and report real problems accurately, or restricted to >> only printing things that it knows with 100% certainty. > Why do I have both '%' and 'any_other_host' in there? Isn't that >> the same thing? I think it's because I have an actual host '%' in >> one of my tables. Probably the script should catch that and not >> duplicate output. _TODO # From the FAQ: the Grant-algorithm # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # The host table is mainly to maintain a list of "secure" servers. # At TCX hosts contain a list of all machines on local network. These are granted # all privileges. # Technically the user grant is calculated by: # # 1.First sort all entries by host by putting host without wildcards first, # after this host with wildcards and entries with host = ". # Under each host sort user by the same criterias. # 2.Get grant for user from the "db" table. # 3.If hostname is "empty" for the found entry, AND the privileges with # the privileges for the host in "host" table. # (Remove all which is not "Y" in both) # 4.OR (add) the privileges for the user from the "user" table. # (add all privileges which is "Y" in "user") # # When matching, use the first found match. # # ----------------------------------------------------------------------------------- $HOWTO = <<_HOWTO; Examples of how to call $script: ~~~~~~~~ 1)Calling $script with 2 arguments: \$ $script root mysql ->report rights of user root logged on at the local host in db mysql Access-rights for USER 'root', from HOST 'localhost', to DB 'mysql' +-----------------+---+ +-----------------+---+ | select_priv | Y | | drop_priv | Y | | insert_priv | Y | | reload_priv | Y | | update_priv | Y | | shutdown_priv | Y | | delete_priv | Y | | process_priv | Y | | create_priv | Y | | file_priv | Y | +-----------------+---+ +-----------------+---+ BEWARE: Everybody can access your DB as user 'root' : WITHOUT supplying a password. Be very careful about it!! The following rules are used: db : 'No matching rule' host : 'Not processed: host-field is not empty in db-table.' user : 'localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y' 2)Calling $script with 3 arguments: \$ $script foo.bar nobody Foo ->report rights of user root logged in at machine foobar to db Foo Access-rights for USER 'nobody', from HOST 'foo.bar', to DB 'Foo' +-----------------+---+ +-----------------+---+ | select_priv | Y | | drop_priv | N | | insert_priv | Y | | reload_priv | N | | update_priv | Y | | shutdown_priv | N | | delete_priv | Y | | process_priv | N | | create_priv | N | | file_priv | N | +-----------------+---+ +-----------------+---+ BEWARE: Everybody can access your DB as user 'nobody' : WITHOUT supplying a password. Be very careful about it!! The following rules are used: db : 'foo.bar','Foo','nobody','Y','Y','Y','N','N','N' host : 'Not processed: host-field is not empty in db-table.' user : 'foo.bar','nobody','','N','N','N','Y','N','N','N','N','N','N' 3)Using wildcards: \$ $script \\* nobody Foo --brief ->report access-rights of user nobody from all machines to db Foo, and use a matrix-report. Sel Ins Upd Del Crea Drop Reld Shut Proc File Host,User,DB ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -------------------- Y Y Y Y N N N N N N localhost,nobody,Foo N N N N N N N N N N %,nobody,Foo N N N N N N N N N N any_other_host,nobody,Foo _HOWTO # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # # START OF THE PROGRAM # # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # use Getopt::Long; use Sys::Hostname; use IPC::Open3; #use CGI; #moved to use of CGI by monty # **************************** # debugging flag # can be set to 0,1,2,3 # a higher value gives more info # ! this can also be set on the command-line $DEBUG = 0; # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>8 # Normaly nothing should be changed beneeth this line # **************************** # no caching on STDOUT $|=1; $MYSQL_CNF = POSIX::tmpnam(); %MYSQL_CNF = (client => { }, mysql => { }, mysqldump => { }, ); $NEW_USER = 'ANY_NEW_USER'; $NEW_DB = 'ANY_NEW_DB' ; # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # # mysqlaccess: # # ~~~~~~~~~~~ # # Lets get to it, # # and start the program by processing the parameters # # %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # ($CMD,$CGI) = GetMode(); # **************************** # the copyright message should # always be printed (once) MySQLaccess::Report::Print_Header(); # ***************************** # Read configuration-file MySQLaccess::Debug::Print(1, "Reading configuration file..."); if (-f "./$script_conf") { require "./$script_conf"; } elsif (-f "/etc/$script_conf") { require "/etc/$script_conf"; } # **************************** # Read in all parameters if ($MySQLaccess::CMD) { #command-line version # ---------------------------- # Get options from commandline $Getopt::Long::ignorecase=0; #case sensitive options if ( grep(/\-\?/,@ARGV) ) { MySQLaccess::Report::Print_Usage(); exit 0; } GetOptions("help" => \$Param{'help'} ,"host|h=s" => \$Param{'host'} ,"user|u=s" => \$Param{'user'} ,"password|p:s" => \$Param{'password'} ,"db|d=s" => \$Param{'db'} ,"superuser|U=s" => \$Param{'superuser'} ,"spassword|P:s" => \$Param{'spassword'} ,"rhost|H=s" => \$Param{'rhost'} ,"old_server" => \$Param{'old_server'} ,"debug=i" => \$Param{'DEBUG'} ,"brief|b" => \$Param{'brief'} ,"table|t" => \$Param{'table'} ,"relnotes" => \$Param{'relnotes'} ,"plan" => \$Param{'plan'} ,"howto" => \$Param{'howto'} ,"version|v" => \$Param{'version'} ,"preview" => \$Param{'preview'} ,"copy" => \$Param{'copy'} ,"commit" => \$Param{'commit'} ,'rollback' => \$Param{'rollback'} ); # ----------------------------- # set DEBUG $DEBUG = $Param{'DEBUG'} if ($Param{'DEBUG'}>=$DEBUG); # ----------------------------- # check for things which aren't # declared as options: # 2 arguments: (user,db) -> ('localhost','user','db') if ($#ARGV == 1) { MySQLaccess::Debug::Print(2,"$script called with 2 arguments:"); $Param{'host'} = $Param{'host'} || 'localhost'; $Param{'user'} = $ARGV[0] || $Param{'user'}; $Param{'db'} = $ARGV[1] || $Param{'db'}; } # 3 arguments: (host,user,db) if ($#ARGV == 2) { MySQLaccess::Debug::Print(2,"$script called with 3 arguments:"); $Param{'host'} = $ARGV[0] || $Param{'host'}; $Param{'user'} = $ARGV[1] || $Param{'user'}; $Param{'db'} = $ARGV[2] || $Param{'db'}; } # ------------------------------------- # prompt for user password if requested if ( defined($Param{'password'}) && length($Param{'password'}) == 0 ) { $Param{'password'} = PromptPass( "Password for MySQL user $Param{'user'}: "); } } if ($MySQLaccess::CGI) { #CGI-version use CGI; $Q = new CGI; $Param{'help'} = $Q->param('help') ; $Param{'host'} = $Q->param('host') || $Q->param('h') || $Param{'host'}; $Param{'user'} = $Q->param('user') || $Q->param('u') || $Param{'user'}; $Param{'db'} = $Q->param('db') || $Q->param('d') || $Param{'db'}; $Param{'password'} = $Q->param('password') || $Q->param('p') || $Param{'password'}; $Param{'superuser'} = $Q->param('superuser') || $Q->param('U') || $Param{'superuser'}; $Param{'spassword'} = $Q->param('spassword') || $Q->param('P') || $Param{'spassword'}; $Param{'rhost'} = $Q->param('rhost') || $Q->param('H') || $Param{'rhost'}; $Param{'old_server'}= $Q->param('old_server')|| $Param{'old_server'}; $Param{'debug'} = $Q->param('debug') || $Param{'debug'}; $Param{'brief'} = $Q->param('brief') || $Param{'brief'}; $Param{'table'} = $Q->param('table') || $Param{'table'}; $Param{'relnotes'} = $Q->param('relnotes'); $Param{'plan'} = $Q->param('plan'); $Param{'howto'} = $Q->param('howto'); $Param{'version'} = $Q->param('version') ? $Q->param('version') : $Q->param('v'); $Param{'edit'} = $Q->param('edit'); $Param{'preview'} = $Q->param('preview'); $Param{'copy'} = $Q->param('copy'); $Param{'commit'} = $Q->param('commit'); $Param{'rollback'} = $Q->param('rollback'); # ----------------------------- # set DEBUG $DEBUG = $Q->param('debug') if ($Q->param('debug')>=$DEBUG); } # ---------------------- # brief and table-format # exclude each-other # table-format is prefered if (defined($Param{'table'})) { undef($Param{'brief'}); } if (defined($Param{'preview'}) or defined($Param{'copy'}) or defined($Param{'commit'}) or defined($Param{'rollback'}) ) { $Param{'edit'}='on'; } # ---------------------- # if no host is given # assume we mean 'localhost' if (!defined($Param{'host'})) { $Param{'host'}='localhost'; } # ---------------------- # perform some checks # -> eliminate 'broken pipe' error push(@MySQLaccess::Grant::Error,'not_found_mysql') if !(-x $MYSQL); push(@MySQLaccess::Grant::Error,'not_found_diff') if !(-x $DIFF); push(@MySQLaccess::Grant::Error,'not_found_mysqldump') if !(-x $MYSQLDUMP); push(@MySQLaccess::Grant::Error,'not_found_tmp') if !(-d $TMP_PATH); push(@MySQLaccess::Grant::Error,'write_err_tmp') if !(-w $TMP_PATH); if (@MySQLaccess::Grant::Error) { MySQLaccess::Report::Print_Error_Messages() ; exit 0; } #----------------------- # get info/help if necc. $print_usage=1; if ( defined($Param{'version'}) ) { MySQLaccess::Report::Print_Version(); $print_usage=0; MySQLaccess::Report::Print_Footer(); MySQLaccess::DB::CloseConnection(); exit 0; # exit 0; } if ( defined($Param{'relnotes'}) ) { MySQLaccess::Report::Print_Relnotes(); $print_usage=0; MySQLaccess::Report::Print_Footer(); MySQLaccess::DB::CloseConnection(); exit 0; # exit 0; } if ( defined($Param{'plan'}) ) { MySQLaccess::Report::Print_Plans(); $print_usage=0; MySQLaccess::Report::Print_Footer(); MySQLaccess::DB::CloseConnection(); exit 0; # exit 0; } if ( defined($Param{'howto'}) ) { MySQLaccess::Report::Print_HowTo(); $print_usage=0; MySQLaccess::Report::Print_Footer(); MySQLaccess::DB::CloseConnection(); exit 0; # exit 0; } # ----------------------------- # generate a help-screen in CMD-mode # or a blanc form in CGI-mode if ( defined($Param{'help'}) or !defined($Param{'user'}) or !defined($Param{'host'}) or !defined($Param{'db'}) ) { push(@MySQLaccess::Grant::Error,'user_required') unless defined($Param{'user'}); push(@MySQLaccess::Grant::Error,'db_required') unless defined($Param{'db'}); push(@MySQLaccess::Grant::Error,'host_required') unless defined($Param{'host'}); MySQLaccess::Report::Print_Usage() if $print_usage; exit 0; } # ---------------------------- # get hostname and local-ip # for localhost $localhost = MySQLaccess::Host::LocalHost(); $local_ip = MySQLaccess::Host::Name2IP($localhost); $MySQLaccess::Host::localhost = MySQLaccess::Host::LocalHost(); $MySQLaccess::Host::local_ip = MySQLaccess::Host::Name2IP($localhost); MySQLaccess::Debug::Print(3, "localhost name=$localhost, ip=$local_ip"); #----------------------------------- # version of MySQL-server to connect # to determine use of full where clause $MySQLaccess::Host::SERVER = $Param{'old_server'} ? '3.20' : $SERVER; #--------------------------------- # create the config file for mysql and mysqldump # to avoid passing authentication info on the command line # MergeConfigFiles(); die "Unsafe config file found: $unsafeConfig\n" if $unsafeConfig; if (defined($Param{'superuser'})) { $MYSQL_CNF{'mysql'}{'user'} = $Param{'superuser'}; $MYSQL_CNF{'mysqldump'}{'user'} = $Param{'superuser'}; } if (defined($Param{'spassword'})) { if ( $CMD && length($Param{'spassword'}) == 0 ) { $Param{'spassword'} = PromptPass("Password for MySQL superuser $Param{'superuser'}: "); } if ( length($Param{'spassword'}) > 0 ) { $MYSQL_CNF{'mysql'}{'password'} = $Param{'spassword'}; $MYSQL_CNF{'mysqldump'}{'password'} = $Param{'spassword'}; } } WriteTempConfigFile(); #--------------------------------- # Inform user if he has not enough # privileges to read the access-db if ( $nerror=MySQLaccess::DB::OpenConnection() ) { MySQLaccess::Report::Print_Error_Access($nerror); exit 0; } # ----------------------- # Read MySQL ACL-files if ($nerror=MySQLaccess::Grant::ReadTables()) { MySQLaccess::Report::Print_Error_Access($nerror); exit 0; }; if ($Param{'edit'} and $nerror=MySQLaccess::Grant::ReadTables('tmp')) { MySQLaccess::Report::Print_Error_Access($nerror); exit 0; } #--------------------------------- # reload temporay grant-tables # with data from original ones if ( defined($Param{'copy'}) ) { $nerror=MySQLaccess::DB::LoadTmpTables(); if ($nerror) { MySQLaccess::Report::Print_Error_Access($nerror); exit 0; } my $msg = "The grant-rules are copied from the grant-tables to\n" . "the temporary tables."; MySQLaccess::Report::Print_Message([$msg]); # MySQLaccess::Report::Print_Footer(); # MySQLaccess::DB::CloseConnection(); # exit 0; } #--------------------------------- # preview result of changes in the # grant-tables if ( defined($Param{'preview'}) ) { $aref=MySQLaccess::Grant::Diff_Privileges(); MySQLaccess::Report::Print_Diff_ACL($aref); # MySQLaccess::Report::Print_Footer(); # MySQLaccess::DB::CloseConnection(); # exit 0; } #--------------------------------- # reload grant-tables # with data from temporary tables if ( defined($Param{'commit'}) ) { if ($nerror = MySQLaccess::DB::CommitGrantTables()) { MySQLaccess::Report::Print_Error_Access($nerror); exit 0; } my $msg = "The grant-rules have been copied from the temporary tables\n" . "to the grant-tables."; my $msg1= "Don't forget to do an 'mysqladmin reload' before these\n" . "changes take effect."; my $msg2= "A backup-version of your original grant-rules are saved in the\n" . "backup-tables, so you can always perform a 1-level rollback."; MySQLaccess::Report::Print_Message([$msg,$msg1,$msg2]); # MySQLaccess::Report::Print_Footer(); # MySQLaccess::DB::CloseConnection(); # exit 0; } #--------------------------------- # restore previous grant-rules # with data from backup tables if ( defined($Param{'rollback'}) ) { if ($nerror = MySQLaccess::DB::RollbackGrantTables()) { MySQLaccess::Report::Print_Error_Access($nerror); exit 0; } my $msg = "The old grant-rules have been copied back from the backup tables\n" . "to the grant-tables."; my $msg1= "Don't forget to do an 'mysqladmin reload' before these\n" . "changes take effect."; MySQLaccess::Report::Print_Message([$msg,$msg1]); # MySQLaccess::Report::Print_Footer(); # MySQLaccess::DB::CloseConnection(); # exit 0; } #---------------------------------- # show edit-taskbar if ( defined($Param{'edit'})) { if ($MySQLaccess::CGI ) { MySQLaccess::Report::Print_Edit(); $print_usage=0; MySQLaccess::Report::Print_Footer(); MySQLaccess::DB::CloseConnection(); exit 0; } else { MySQLaccess::Report::Print_Edit(); $print_usage=0; MySQLaccess::Report::Print_Footer(); MySQLaccess::DB::CloseConnection(); exit 0; } } # ----------------------------- # Build list of users,dbs,hosts # to process... @all_dbs = @{MySQLaccess::DB::Get_All_dbs($Param{'db'})}; @all_users = @{MySQLaccess::DB::Get_All_users($Param{'user'})}; @all_hosts = @{MySQLaccess::DB::Get_All_hosts($Param{'host'})}; #if EDIT-mode #@all_dbs_tmp = @{MySQLaccess::DB::Get_All_dbs($Param{'db'},'tmp')}; #@all_users_tmp = @{MySQLaccess::DB::Get_All_users($Param{'user'},'tmp')}; #@all_hosts_tmp = @{MySQLaccess::DB::Get_All_hosts($Param{'host'},'tmp')}; # ----------------------------- # Report access-rights for each # tuple (host,user,db) #$headers=0; my %Access = (); foreach $host (@all_hosts) { foreach $user (@all_users) { foreach $db (@all_dbs) { MySQLaccess::Grant::Initialize(); %Access = MySQLaccess::Grant::Get_Access_Rights($host,$user,$db); MySQLaccess::Report::Print_Access_rights($host,$user,$db,\%Access); } } } # ----------------------------- # End script MySQLaccess::Report::Print_Footer(); MySQLaccess::DB::CloseConnection(); exit 0; ############################################################# # FUNCTIONS # ############### sub GetMode { my $cmd=0; my $cgi=0; if (defined($ENV{'HTTP_HOST'})) { $cmd=0; $cgi=1; } else { $cmd=1; $cgi=0; } return ($cmd,$cgi); } # ================================ # sub PromptPass # prompt tty for a password # ================================ sub PromptPass { my ($prompt) = @_; my $password; $ENV{PATH} = "/bin:/usr/bin"; $ENV{IFS} = " \t\n"; $ENV{SHELL} = "/bin/sh"; system "stty -echo"; print $prompt; chomp($password = ); print "\n"; system "stty echo"; $password; } # ================================= # sub CheckUnsafeFile # tell if a config file containing a password is unsafe # ================================= sub CheckUnsafeFile { my ($fname) = @_; my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($fname); if ( $uid != $< ) { # unsafe if owned by other than current user return 1; } if ( $mode & 066 ) { # unsafe if accessible by other return 1; } $fname =~ s#/[^/]+$##; if ( (length $fname) > 0 ) { return CheckUnsafeDir($fname); } return 0; } # ================================= # sub CheckUnsafeDir # tell if a directory is unsafe # ================================= sub CheckUnsafeDir { my ($fname) = @_; my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($fname); # not owned by me or root if ( ($uid != $<) && ($uid != 0) ) { return 1; } if ( $mode & 022 ) { # unsafe if writable by other return 1 unless $mode & 01000; # but sticky bit ok } $fname =~ s#/[^/]+$##; if ( (length $fname) > 0 ) { return CheckUnsafeDir($fname); } return 0; } # ================================= # sub MergeConfigFile # merge data from .cnf file # ================================= sub MergeConfigFile { my ($fname) = @_; my ($group, $item, $value); if ( open CNF, $fname ) { while () { s/^\s+//; next if /^[#;]/; if ( /\[\s*(\w+)\s*]/ ) { $group = $1; $group =~ tr/A-Z/a-z/; if ( !exists $MYSQL_CNF{$group} ) { undef $group; } } elsif ( defined $group ) { ($item, $value) = /((?:\w|-)+)\s*=\s*(\S+)/; # don't unquote backslashes as we just write it back out if ( defined $item ) { if ( $item =~ /^password$/ ) { if ( CheckUnsafeFile($fname) ) { $unsafeConfig = $fname; } } if ( $group eq 'client' ) { $MYSQL_CNF{'mysql'}{$item} = $value; $MYSQL_CNF{'mysqldump'}{$item} = $value; } else { $MYSQL_CNF{$group}{$item} = $value; } } } } close(CNF); } } # ================================= # sub MergeConfigFiles # merge options from config files # NOTE: really should do two separate merges for each # client to exactly duplicate order of resulting argument lists # ================================= sub MergeConfigFiles { my ($name,$pass,$uid,$gid,$quota,$comment,$gcos,$dir,$shell) = getpwuid $<; MergeConfigFile("/etc/my.cnf"); MergeConfigFile("$dir/.my.cnf"); } # ================================= # sub WriteTempConfigFile # write # ================================= sub WriteTempConfigFile { sysopen CNFFILE, $MYSQL_CNF, O_RDWR|O_CREAT|O_EXCL, 0700 or die "sysopen $MYSQL_CNF: $!"; # groups may be in any order, generic groups such as [client] assumed # here to be empty foreach $group (keys %MYSQL_CNF) { print CNFFILE "[$group]\n"; foreach $item (keys %{$MYSQL_CNF{$group}}) { if ( defined $MYSQL_CNF{$group}{$item} ) { print CNFFILE "$item=$MYSQL_CNF{$group}{$item}\n"; } else { print CNFFILE "$item\n"; } } print CNFFILE "\n"; } close(CNFFILE); } ###################################################################### package MySQLaccess::DB; ########### BEGIN { $DEBUG = 2; $DEBUG = $MySQLaccess::DEBUG unless ($DEBUG); # Error-messages from the MySQL client %ACCESS_ERR= ('Access_denied' => 'Access denied' ,'Dbaccess_denied' => 'Access to database denied' ,'Unrecognized_option' => 'unrecognized option' ,'Unknown_table' => "Can't find file:" ,'unknown_error' => '^ERROR:' ); } # ###################################### # Connecting to the MYSQL DB # ====================================== # sub OpenConnection # Open an connection to the mysql-db # questions to MYSQL_Q # answers from MYSQL_A # ====================================== sub OpenConnection { my $pid; MySQLaccess::Debug::Print(2,"OpenConnection:"); # check path to mysql-client executable if (! -f $MySQLaccess::MYSQL) { if ($MySQLaccess::CMD) { die "Could not find MySQL-client '$MySQLaccess::MYSQL'"; } if ($MySQLaccess::CGI) { print "
\n\n"; print "ERROR: Could not find MySQL-client '$MySQLaccess::MYSQL'"; print "
\n\n"; exit 0; } } # path to mysql executable my $connect = "$MySQLaccess::MYSQL --defaults-file=$MySQLaccess::MYSQL_CNF"; $connect .= " $MySQLaccess::MYSQL_OPT"; # superuser, spassword transmitted via defaults-file if (defined($MySQLaccess::Param{'rhost'})) { $connect .= " --host=$MySQLaccess::Param{'rhost'}"; } # other options?? # grant-database $connect .= " $MySQLaccess::ACCESS_DB"; # open connection (not using /bin/sh -c) MySQLaccess::Debug::Print(2,"Connecting to: $connect"); $pid=IPC::Open3::open3(\*MYSQL_Q,\*MYSQL_A,"",split /\s+/,$connect); MySQLaccess::Debug::Print(2,"PID of open pipe: $pid"); # check connection print MYSQL_Q "select 'ok';\n"; $answer = ; #answer from mysql MySQLaccess::Debug::Print(2,"Answer: $answer\n"); foreach $nerror (sort(keys(%ACCESS_ERR))) { MySQLaccess::Debug::Print(3,"check answer for error $ACCESS_ERR{$nerror}"); if (grep(/$ACCESS_ERR{$nerror}/i,$answer)) { MySQLaccess::Debug::Print(2,"Answer contain error [$nerror]"); return $nerror; } } if (0) { # check server-version print MYSQL_Q "select 'ok';\n"; $answer = ; #answer from mysql MySQLaccess::Debug::Print(2,"Answer: $answer\n"); foreach $nerror (sort(keys(%ACCESS_ERR))) { MySQLaccess::Debug::Print(3,"check answer for error $ACCESS_ERR{$nerror}"); if (grep(/$ACCESS_ERR{$nerror}/i,$answer)) { MySQLaccess::Debug::Print(2,"Answer contain error [$nerror]"); return $nerror; } } } my $skip=; return 0; } # ====================================== # sub CloseConnection # Close the connection to the mysql-db # ====================================== sub CloseConnection { close MYSQL_Q; close MYSQL_A; } # =========================================================== # sub CreateTable($table) # Create temporary/backup table # =========================================================== sub CreateTable { my $pid; my ($table,$force) = @_; my %tables = ( $MySQLaccess::ACCESS_U_TMP => $MySQLaccess::ACCESS_U, $MySQLaccess::ACCESS_H_TMP => $MySQLaccess::ACCESS_H, $MySQLaccess::ACCESS_D_TMP => $MySQLaccess::ACCESS_D, $MySQLaccess::ACCESS_U_BCK => $MySQLaccess::ACCESS_U, $MySQLaccess::ACCESS_H_BCK => $MySQLaccess::ACCESS_H, $MySQLaccess::ACCESS_D_BCK => $MySQLaccess::ACCESS_D, $MySQLaccess::ACCESS_U => $MySQLaccess::ACCESS_U_BCK, $MySQLaccess::ACCESS_H => $MySQLaccess::ACCESS_H_BCK, $MySQLaccess::ACCESS_D => $MySQLaccess::ACCESS_D_BCK, ); my $tbl; my $query=""; my $delim; my $skip; my $create; my @known_tables=(); # print STDERR "CreateTable($table)\n"; MySQLaccess::Debug::Print(1,"CreateTable($table):"); ## error-handling return 'Unknown_table' unless defined($tables{$table}); ## build list of known/existing tables; ## if 'force' existing table is dropped first if (defined($force) and $force) { @known_tables = Show_Tables(); if (grep(/^$table$/,@known_tables)) { $query = "DROP TABLE $table;"; } } ## path to mysqldump executable my $connect = $MySQLaccess::MYSQLDUMP; $connect .= " --defaults-file=$MySQLaccess::MYSQL_CNF --no-data"; # superuser, spassword transmitted via defaults-file if (defined($MySQLaccess::Param{'rhost'})) { $connect .= " --host=$MySQLaccess::Param{'rhost'}"; } $connect .= " $MySQLaccess::ACCESS_DB"; $connect .= " $tables{$table}"; ## get creation-data for original table $create = ''; my $mysqldump = $connect; $mysqldump =~ s/ \$TABLE / $tbl /; # open connection (not using /bin/sh -c) MySQLaccess::Debug::Print(2,"Connecting to: $connect"); $pid=IPC::Open3::open3(\*DONTCARE,\*CREATE,"",split /\s+/,$mysqldump); MySQLaccess::Debug::Print(2,"PID of open pipe: $pid"); #open(CREATE,"$mysqldump"); @create = ; $create = "@create"; foreach $nerror (sort(keys(%ACCESS_ERR))) { MySQLaccess::Debug::Print(3,"check answer for error $ACCESS_ERR{$nerror}"); if (grep(/$ACCESS_ERR{$nerror}/i,$create)) { MySQLaccess::Debug::Print(2,"Answer contain error [$nerror]"); return $nerror; } } close(CREATE); close(DONTCARE); ## manipulate result for creation-data for temporary table $create =~ s/CREATE TABLE $tables{$table} \(/CREATE TABLE $table \(/; ## recreate temporary table $query .= "$create\n"; $query .= "select 'ok';"; ## execute query print MYSQL_Q "$query\n"; # print STDERR $query; $answer = ; #answer from mysql # print STDERR "A>",$answer; MySQLaccess::Debug::Print(2,"Answer: $answer\n"); foreach $nerror (sort(keys(%ACCESS_ERR))) { # print STDERR "->$nerror?"; MySQLaccess::Debug::Print(3,"check answer for error $ACCESS_ERR{$nerror}"); if (grep(/$ACCESS_ERR{$nerror}/i,$answer)) { # print STDERR "Yes!"; MySQLaccess::Debug::Print(2,"Answer contain error [$nerror]"); return $nerror; } } $delim = ; # read header if ($delim ne "ok\n") { while (($line=) ne "ok\n") { MySQLaccess::Debug::Print(3," A> $line"); } $skip = ; # skip result 'ok' } # print STDERR "CreateTable done\n"; return 0; } # =========================================================== # sub CopyTable() # Copy the structure and the data of a table to another table # =========================================================== sub CopyTable { my ($from,$to,$force) = @_; my @known_tables = Show_Tables(); my $query = ""; my $nerror= 0; my $skip; # print STDERR "CopyTable($from,$to)\n"; MySQLaccess::Debug::Print(1,"MySQLaccess::DB::CopyTable($from,$to)"); ## error-handling if (!grep(/^$from$/,@known_tables)) { return 'Unknown_table'; } ## copy structure ## if forced if (defined($force) and $force) { return $nerror if ($nerror=CreateTable($to,$force)); # print STDERR "Structure copied\n"; } ## copy data $query .= "DELETE FROM $to;"; $query .= "INSERT INTO $to SELECT * FROM $from;"; $query .= "SELECT 'ok';\n"; MySQLaccess::Debug::Print(2,"Query: $query"); ## execute query print MYSQL_Q "$query\n"; # print STDERR $query; ## check for errors... my $answer = ; #answer from mysql # print STDERR $answer; MySQLaccess::Debug::Print(2,"Answer: $answer\n"); foreach $nerror (sort(keys(%ACCESS_ERR))) { MySQLaccess::Debug::Print(3,"check answer for error $ACCESS_ERR{$nerror}"); if (grep(/$ACCESS_ERR{$nerror}/i,$answer)) { MySQLaccess::Debug::Print(2,"Answer contain error [$nerror]"); return $nerror; } } my $delim = ; # read header # print STDERR $delim; if ($delim ne "ok\n") { while (($line=) ne "ok\n") { MySQLaccess::Debug::Print(3," A> $line"); } $skip = ; # skip result 'ok' } return 0; } # =========================================================== # sub LoadTmpTables() # (Re)load temporary tables with entries of ACL-tables # =========================================================== sub LoadTmpTables { my %tables = ( $MySQLaccess::ACCESS_U => $MySQLaccess::ACCESS_U_TMP, $MySQLaccess::ACCESS_H => $MySQLaccess::ACCESS_H_TMP, $MySQLaccess::ACCESS_D => $MySQLaccess::ACCESS_D_TMP, ); my $tbl; my $nerror; # print STDERR "LoadTmpTables:\n"; MySQLaccess::Debug::Print(1,"LoadTmpTables():"); foreach $tbl (keys(%tables)) { # print STDERR "$tbl -> $tables{$tbl}\n"; MySQLaccess::Debug::Print(2,"Loading table $tbl -> $tables{$tbl}."); return $nerror if ($nerror=CopyTable($tbl,$tables{$tbl},'force')); } return 0; } # =========================================================== # sub BackupGrantTables() # Make a backup of the original grant-tables # =========================================================== sub BackupGrantTables { my %tables = ( $MySQLaccess::ACCESS_U => $MySQLaccess::ACCESS_U_BCK, $MySQLaccess::ACCESS_H => $MySQLaccess::ACCESS_H_BCK, $MySQLaccess::ACCESS_D => $MySQLaccess::ACCESS_D_BCK, ); my $tbl; my $nerror; # print STDERR "BackupGrantTables:\n"; MySQLaccess::Debug::Print(1,"BackupGrantTables():"); foreach $tbl (keys(%tables)) { # print STDERR "$tbl -> $tables{$tbl}\n"; MySQLaccess::Debug::Print(2,"Backup table $tbl -> $tables{$tbl}."); return $nerror if ($nerror=CopyTable($tbl,$tables{$tbl},'force')); } return 0; } # =========================================================== # sub RollbackGrantTables() # Rollback the backup of the grant-tables # =========================================================== sub RollbackGrantTables { my %tables = ( $MySQLaccess::ACCESS_U_BCK => $MySQLaccess::ACCESS_U, $MySQLaccess::ACCESS_H_BCK => $MySQLaccess::ACCESS_H, $MySQLaccess::ACCESS_D_BCK => $MySQLaccess::ACCESS_D, ); my $tbl; my $nerror; # print STDERR "RollbackGrantTables:\n"; MySQLaccess::Debug::Print(1,"RollbackGrantTables():"); foreach $tbl (keys(%tables)) { # print STDERR "$tbl -> $tables{$tbl}\n"; MySQLaccess::Debug::Print(2,"Rollback table $tbl -> $tables{$tbl}."); return $nerror if ($nerror=CopyTable($tbl,$tables{$tbl},'force')); } return 0; } # =========================================================== # sub CommitGrantTables() # Copy grant-rules from temporary tables to the ACL-tables # =========================================================== sub CommitGrantTables { my %tables = ( $MySQLaccess::ACCESS_U => $MySQLaccess::ACCESS_U_TMP, $MySQLaccess::ACCESS_H => $MySQLaccess::ACCESS_H_TMP, $MySQLaccess::ACCESS_D => $MySQLaccess::ACCESS_D_TMP, ); my $tbl; my $query; my $delim; my $skip; my $create; print STDERR "CommitGrantTables()\n"; MySQLaccess::Debug::Print(1,"CommitGrantTables():"); ## Make backup of original grant-tables MySQLaccess::Debug::Print(2,"Making backup of original grant-tables..."); BackupGrantTables(); ## Copy data from temporay tables to grant-tables foreach $tbl (keys(%tables)) { print STDERR "$tbl -> $tables{$tbl}\n"; MySQLaccess::Debug::Print(2,"Loading data $tables{$tbl} -> $tbl."); return $nerror if ($nerror=CopyTable($tables{$tbl},$tbl)); } return 0; } # =========================================================== # sub Show_Fields($table): # return (a reference to) a hash which holds the names # of all relevant grant-fields, with their index in the record, # and (a reference to) an array which holds the fieldnames. # =========================================================== sub Show_Fields { my ($table) = @_; my %skip = ('host' => [0,1] ,'user' => [0,1,2] ,'db' => [0,1,2] ); my %Struct = (); my @Struct = (); my $query = "show fields from $table;select 'ok';\n"; my $i=0; my $line; #print STDERR $query; MySQLaccess::Debug::Print(1,"Show_Fields($table):"); MySQLaccess::Debug::Print(2,"SQL: $query"); print MYSQL_Q "$query"; my $skip = ; #skip header while (($line=) ne "ok\n") { #print STDERR ">",$line; chop($line); MySQLaccess::Debug::Print(2," $table>: $line"); my ($field,$type,$null,$key,$default,$extra) = split(' ',$line); $field = ucfirst($field); MySQLaccess::Debug::Print(3, " added column[$i]: $field ($Struct{$field})"); } else { MySQLaccess::Debug::Print(3," ==> skipped column[$i], value=[$field]"); } $i++; } $skip=; # Get ok row (found already ok header) MySQLaccess::Debug::Print(2, "Array:"); foreach $field (@Struct) { MySQLaccess::Debug::Print(2,"+ $field"); } MySQLaccess::Debug::Print(2,"Hash:"); foreach $field (keys(%Struct)) { MySQLaccess::Debug::Print(2,"+ $field -> $Struct{$field}"); } return (\%Struct,\@Struct); } # =========================================================== # sub Show_Tables(): # return (a reference to) an array which holds all # known tables. # =========================================================== sub Show_Tables { my @Tables = (); my $query = "show tables;select 'ok';\n"; my $i=0; my $line; MySQLaccess::Debug::Print(1,"Show_Tables():"); MySQLaccess::Debug::Print(2,"SQL: $query"); print MYSQL_Q "$query"; my $skip = ; #skip header while (($line=) ne "ok\n") { chop($line); push(@Tables,$line); #array MySQLaccess::Debug::Print(3," ==> added table: $line"); } $skip=; # Get ok row (found already ok header) MySQLaccess::Debug::Print(2, "Array:"); foreach $tbl (@Tables) { MySQLaccess::Debug::Print(2,"+ $tbl"); } return @Tables; } # ====================================== # sub Validate_Password($passwd,$host,$user,$encpw) # Validate the given password # for user '$user' # connecting from host '$host' # ====================================== sub Validate_Password { my ($password,$host,$user,$encpw) = @_; my $valid=0; MySQLaccess::Debug::Print(1,"Validate_Password($password,$host,$user,$encpw)"); my $sql = "select host,user,password from user having " ."host='$host' and user='$user' and password='$encpw' " ."and password=PASSWORD('$password');\n"; $sql .= "select 'ok';\n"; MySQLaccess::Debug::Print(2,"SQL = $sql"); print MYSQL_Q "$sql"; # if password is valid, at least 1 row returns before we read 'ok' while ( ($line=) ne "ok\n") { MySQLaccess::Debug::Print(2," A> $line"); $valid = defined($line); } my $skip = ; # read 'ok' return $valid; } # ========================================================== # sub Sort_fields: (rewritten by psmith) # Build the query for an ordered list of entries # ========================================================== sub Sort_fields { my ($start, $end, $sofar, $this, @rest) = (@_); my @where = ("((FIELD not like '\\%') AND (FIELD <> ''))", "((FIELD like '%\\%%') OR (FIELD like '%\\_%'))", "(FIELD = '')"); my $res = ''; $this or return ("$start $sofar $end"); $sofar .= ' AND ' if $sofar; foreach $w (@where) { my $f = $w; $f =~ s/FIELD/$this/g; $res .= Sort_fields($start, $end, "$sofar$f", @rest); } return ($res); } # =========================================================== # sub Sort_table: (rewritten by psmith) # return all entries in the given table, # in an ordered fashion # =========================================================== sub Sort_table { my ($tbl, @order) = @_; my @res=(); # as long as there's no full where clause (Distrib 3.20)... # use having :-( # NOTE: this clause WILL NOT work on 3.21, because of the # order of 'ORDER BY' and 'HAVING' my $start = "SELECT *,UCASE(host) as ucase_host FROM $tbl "; $start .= 'ORDER BY ' . join(',', @order) ." HAVING "; my $end = ";\n"; # server version 3.21 has a full where clause :-) if ($MySQLaccess::Host::SERVER >= '3.21') { # print "+++USING FULL WHERE CLAUSE+++\n"; $start = "SELECT *,UCASE(host) as ucase_host FROM $tbl WHERE "; $end = ' ORDER BY ' . join(',', @order) . ";\n"; } MySQLaccess::Debug::Print(1,"Sort_table():"); MySQLaccess::Debug::Print(2,"Sorting table $tbl by `@order'"); my $tmp; foreach $tmp (@order) { $tmp="UCASE(host)" if ($tmp eq "ucase_host"); } my $query = Sort_fields($start, $end, '', @order); $query .= "select 'ok';\n"; MySQLaccess::Debug::Print(2,"Query: $query"); print MYSQL_Q "$query\n"; my $delim = ; # read header MySQLaccess::Debug::Print(3," A> $delim"); if ($delim ne "ok\n") { if ($delim =~ /^ERROR/) { push(@MySQLaccess::Grant::Error,'use_old_server'); MySQLaccess::Report::Print_Error_Messages() ; exit 1; } while (($line=) ne "ok\n") { MySQLaccess::Debug::Print(3," A> $line"); push(@res,$line); } } my $skip = ; # skip result 'ok' # remove columnheaders from output @res = grep(!/^\Q$delim\E$/, @res); # remove trailing \n from each returned record chomp(@res); # each record has 1 field to much : ucase_host @res = grep { /(.*)\t.*$/; $_ = $1; } @res; MySQLaccess::Debug::Print(2,"Result of sorted table $tbl:"); foreach $line (@res) { MySQLaccess::Debug::Print(2," >>$line"); } return @res; } # =========================================================== # sub Get_All_db(template): # return all db the grant-tables are working on, # which conform to the template # =========================================================== sub Get_All_dbs { my ($template,$tmp) = @_; my @db=(); my $aref; # working with temporary tables or production tables if (defined($tmp) and $tmp) { $aref = \@MySQLaccess::Grant::sorted_db_tmp_table ; } else { $aref = \@MySQLaccess::Grant::sorted_db_table; } MySQLaccess::Debug::Print(1," template=[$template]"); # get all db for which access-rights can be calculated, # which conform to the template. # !! these db's don't have to exist yet, so it's not # enough to look which db already exist on the system $reg_expr = $template; if ($template =~ /[\*\?]/) { $reg_expr =~ tr/*?/%_/; #$reg_expr = MySQLaccess::Wildcards::Wild2Reg($template); } $reg_expr = MySQLaccess::Wildcards::SQL2Reg("$reg_expr"); if ( ! ($template =~ /[\*\?%_]/) ) { push(@db,$template); return \@db; } MySQLaccess::Debug::Print(2,"#Reading db-table..."); foreach $record (@{$aref}) { #MySQLaccess::Grant::sorted_db_table) { my @record=split(/\t/,$record); my $db = $record[1]; MySQLaccess::Debug::Print(2,"> $db "); if ( (!grep(/$db/i,@db)) and ($db =~/$reg_expr/i) ) { push(@db,$db); MySQLaccess::Debug::Print(2,"added"); } else { MySQLaccess::Debug::Print(2,"skipped"); } } # if no rule is found for a certain db in the db-table, # the rights of the user are used, so we should inform # the user for if (!grep(/^%$/,@db)) { push(@db,"$MySQLaccess::NEW_DB"); } return \@db; } # =========================================================== # sub Get_All_users(template): # return all users the grant-tables are working on, # which conform to the template # =========================================================== sub Get_All_users { ($template,$tmp) = @_; # nog verder uitwerken!!! my @user=(); my $aref; # working with temporary tables or production tables if (defined($tmp) and $tmp) { $aref = \@MySQLaccess::Grant::sorted_user_tmp_table ; } else { $aref = \@MySQLaccess::Grant::sorted_user_table; } MySQLaccess::Debug::Print(1,"Debug Get_All_users:"); # get all db for which access-rights can be calculated. # !! these db's don't have to exist yet, so it's not # enough to look which db already exist on the system $reg_expr = $template; if ($template =~ /[\*\?]/) { $reg_expr =~ tr/*?/%_/; #$reg_expr = MySQLaccess::Wildcards::Wild2Reg($template); } $reg_expr = MySQLaccess::Wildcards::SQL2Reg("$reg_expr"); if ( ! ($template =~ /[\*\?%_]/) ) { push(@user,$template); return \@user; } MySQLaccess::Debug::Print(2,"#Reading user-table..."); foreach $record (@{$aref}) { #MySQLaccess::Grant::sorted_user_table) { my @record=split(/\t/,$record); my $user = $record[1]; MySQLaccess::Debug::Print(2,"> $user "); if ( (!grep(/$user/,@user)) and ($user=~/$reg_expr/)) { push(@user,$user); MySQLaccess::Debug::Print(2, "added"); } else { MySQLaccess::Debug::Print(2, "skipped"); } } # Any user means also: # - the 'empty' user, ie without supplying a username # - any user still to be defined/created #push(@user,''); #without_suplying_a_username push(@user,"$MySQLaccess::NEW_USER"); #push(@Warnings,'minimum_priv'); return \@user; } # =========================================================== # sub Get_All_hosts(template): # return all hosts the grant-tables are working on, # which conform to the template # =========================================================== sub Get_All_hosts { my ($template,$tmp) = @_; my @host=(); my $aref; my $aref1; # working with temporary tables or production tables if (defined($tmp) and $tmp) { $aref = \@MySQLaccess::Grant::sorted_host_tmp_table ; $aref1= \@MySQLaccess::Grant::sorted_db_tmp_table ; } else { $aref = \@MySQLaccess::Grant::sorted_host_table; $aref1= \@MySQLaccess::Grant::sorted_db_table ; } MySQLaccess::Debug::Print(1, "Debug Get_All_hosts:"); # get all db for which access-rights can be calculated. # !! these db's don't have to exist yet, so it's not # enough to look which db already exist on the system $reg_expr = $template; if ($template =~ /[\*\?]/) { $reg_expr =~ tr/*?/%_/; #$reg_expr = MySQLaccess::Wildcards::Wild2Reg($template); } $reg_expr = MySQLaccess::Wildcards::SQL2Reg("$reg_expr"); if ( ! ($template =~ /[\*\?%_]/) ) { push(@host,$template); return \@host; } MySQLaccess::Debug::Print(1, "#Reading db-table..."); foreach $record (@{$aref1}) { #MySQLaccess::Grant::sorted_db_table) { my @record=split(/\t/,$record); my $host = $record[0]; MySQLaccess::Debug::Print(2, "> $host "); if (! grep(/$host/i,@host)) { push(@host,$host); MySQLaccess::Debug::Print(2, "added"); } else { MySQLaccess::Debug::Print(2, "skipped"); } } MySQLaccess::Debug::Print(1, "#Reading host-table..."); foreach $record (@{$aref}) { my @record=split(/\t/,$record); my $host = $record[0]; MySQLaccess::Debug::Print(2, "> $host "); if ( (!grep(/$host/,@host)) and ($host=~/$reg_expr/)) { push(@host,$host); MySQLaccess::Debug::Print(2, "added"); } else { MySQLaccess::Debug::Print(2, "skipped"); } } # DOUBT: #print "#Reading user-table...\n" if ($DEBUG>1); #foreach $record (@MySQLaccess::Grant::sorted_user_table) { # my @record=split(/\t/,$record); # my $host = $record[0]; # print "> $host " if ($DEBUG>2); # if ( (!grep(/$host/,@host)) and ($host=~/$reg_expr/)) { # push(@host,$host); # print "added\n" if ($DEBUG>2); # } # else { # print "skipped\n" if ($DEBUG>2); # } #} # Any host also means: # - any host still to be defined/created #push(@host,"any_other_host"); @host = sort(@host); return \@host; } ########################################################################## package MySQLaccess::Grant; ############## BEGIN { $DEBUG = 0; $DEBUG = $MySQLaccess::DEBUG unless ($DEBUG); } # =========================================================== # sub Diff_Privileges() # Calculate diff between temporary and original grant-tables # =========================================================== sub Diff_Privileges { my @before=(); my @after =(); my @diffs =(); # ----------------------------- # Build list of users,dbs,hosts # to process... my @all_dbs = @{MySQLaccess::DB::Get_All_dbs('*')}; my @all_users = @{MySQLaccess::DB::Get_All_users('*')}; my @all_hosts = @{MySQLaccess::DB::Get_All_hosts('*')}; #if EDIT-mode my @all_dbs_tmp = @{MySQLaccess::DB::Get_All_dbs('*','tmp')}; my @all_users_tmp = @{MySQLaccess::DB::Get_All_users('*','tmp')}; my @all_hosts_tmp = @{MySQLaccess::DB::Get_All_hosts('*','tmp')}; my %Access; # ------------------------------------ # Build list of priv. for grant-tables foreach $host (@all_hosts) { foreach $user (@all_users) { foreach $db (@all_dbs) { MySQLaccess::Grant::Initialize(); %Access = MySQLaccess::Grant::Get_Access_Rights($host,$user,$db); push(@before,MySQLaccess::Report::Raw_Report($host,$user,$db,\%Access)); } } } # ---------------------------------- # Build list of priv. for tmp-tables foreach $host (@all_hosts_tmp) { foreach $user (@all_users_tmp) { foreach $db (@all_dbs_tmp) { MySQLaccess::Grant::Initialize('tmp'); %Access = MySQLaccess::Grant::Get_Access_Rights($host,$user,$db,'tmp'); push(@after,MySQLaccess::Report::Raw_Report($host,$user,$db,\%Access)); } } } # ---------------------------------- # Write results to temp-file to make # DIFF @before = sort(@before); @after = sort(@after); $before = "$MySQLaccess::TMP_PATH/$MySQLaccess::script.before.$$"; $after = "$MySQLaccess::TMP_PATH/$MySQLaccess::script.after.$$"; #$after = "/tmp/t0"; open(BEFORE,"> $before") || push(@MySQLaccess::Report::Errors,"Can't open temporary file $before for writing"); open(AFTER,"> $after") || push(@MySQLaccess::Report::Errors,"Can't open temporary file $after for writing"); print BEFORE join("\n",@before); print AFTER join("\n",@after); close(BEFORE); close(AFTER); # ---------------------------------- # compute difference my $cmd="$MySQLaccess::DIFF $before $after |"; open(DIFF,"$cmd"); @diffs = ; @diffs = grep(/[<>]/,@diffs); chomp(@diffs); close(DIFF); # ---------------------------------- # cleanup temp. files unlink(BEFORE); unlink(AFTER); return \@diffs; } # =========================================================== # sub Initialize() # # =========================================================== sub Initialize { %MySQLaccess::Grant::Access = %{Default_Access_Rights()}; @MySQLaccess::Grant::Errors = (); @MySQLaccess::Grant::Warnings = (); @MySQLaccess::Grant::Notes = (); # ----- # rules $MySQLaccess::Grant::Rules{'user'} = 'no_rule_found'; $MySQLaccess::Grant::Rules{'db'} = 'no_rule_found'; $MySQLaccess::Grant::Rules{'host'} = 'no_equiv_host'; $MySQLaccess::Grant::full_access = 1; $MySQLaccess::Grant::process_host_table = 0; return 1; } # =========================================================== # sub ReadTables() # # =========================================================== sub ReadTables { my ($tmp) = @_; my ($HOST,$DB,$USER); my @tables; # build list of available tables @tables = MySQLaccess::DB::Show_Tables(); # reading production grant-tables or temporary tables? $tmp = (defined($tmp) and $tmp) ? 1 : 0; if ($tmp) { #reading temporary tables $HOST=$MySQLaccess::ACCESS_H_TMP; $DB =$MySQLaccess::ACCESS_D_TMP; $USER=$MySQLaccess::ACCESS_U_TMP; # ---------------------------- # do tables exist? if (!grep(/$HOST/,@tables)) { MySQLaccess::DB::CreateTable($HOST); } if (!grep(/$USER/,@tables)) { MySQLaccess::DB::CreateTable($USER); } if (!grep(/$DB/,@tables)) { MySQLaccess::DB::CreateTable($DB); } MySQLaccess::Debug::Print(1,"Finding fields in tmp-ACL files:"); # ----------------------------- # Get record-layout my ($h1,$h2) = MySQLaccess::DB::Show_Fields($HOST); my ($d1,$d2) = MySQLaccess::DB::Show_Fields($DB); my ($u1,$u2) = MySQLaccess::DB::Show_Fields($USER); %MySQLaccess::Grant::H_tmp = %{$h1}; @MySQLaccess::Grant::H_tmp = @{$h2}; %MySQLaccess::Grant::D_tmp = %{$d1}; @MySQLaccess::Grant::D_tmp = @{$d2}; %MySQLaccess::Grant::U_tmp = %{$u1}; @MySQLaccess::Grant::U_tmp = @{$u2}; # @MySQLaccess::Grant::Privileges_tmp=@{Make_Privlist()}; # MySQLaccess::Debug::Print(1, "Reading sorted temp-tables:"); @MySQLaccess::Grant::sorted_db_tmp_table = MySQLaccess::DB::Sort_table($DB, 'ucase_host', 'user', 'db'); @MySQLaccess::Grant::sorted_host_tmp_table= MySQLaccess::DB::Sort_table($HOST, 'ucase_host', 'db'); @MySQLaccess::Grant::sorted_user_tmp_table= defined($MySQLaccess::Param{'password'}) ? MySQLaccess::DB::Sort_table($USER, 'ucase_host', 'user', 'password'): MySQLaccess::DB::Sort_table($USER, 'ucase_host', 'user'); } else { #reading production grant-tables $HOST=$MySQLaccess::ACCESS_H; $DB =$MySQLaccess::ACCESS_D; $USER=$MySQLaccess::ACCESS_U; MySQLaccess::Debug::Print(1,"Finding fields in ACL files:"); # ----------------------------- # Get record-layout my ($h1,$h2) = MySQLaccess::DB::Show_Fields($HOST); my ($d1,$d2) = MySQLaccess::DB::Show_Fields($DB); my ($u1,$u2) = MySQLaccess::DB::Show_Fields($USER); %MySQLaccess::Grant::H = %{$h1}; @MySQLaccess::Grant::H = @{$h2}; %MySQLaccess::Grant::D = %{$d1}; @MySQLaccess::Grant::D = @{$d2}; %MySQLaccess::Grant::U = %{$u1}; @MySQLaccess::Grant::U = @{$u2}; @MySQLaccess::Grant::Privileges=@{Make_Privlist()}; MySQLaccess::Debug::Print(1, "Reading sorted tables:"); @MySQLaccess::Grant::sorted_db_table = MySQLaccess::DB::Sort_table($DB, 'ucase_host', 'user', 'db'); @MySQLaccess::Grant::sorted_host_table= MySQLaccess::DB::Sort_table($HOST, 'ucase_host', 'db'); @MySQLaccess::Grant::sorted_user_table= defined($MySQLaccess::Param{'password'}) ? MySQLaccess::DB::Sort_table($USER, 'ucase_host', 'user', 'password'): MySQLaccess::DB::Sort_table($USER, 'ucase_host', 'user'); } return 0; } # =========================================================== # sub Get_Access_Rights(host,user,db) # report the access_rights for the tuple ($host,$user,$db). # =========================================================== sub Get_Access_Rights { local ($host,$user,$db,$tmp) = @_; my $aref_user; my $aref_host; my $aref_db; # working with temporary tables or production tables if (defined($tmp) and $tmp) { $aref_user = \@MySQLaccess::Grant::sorted_user_tmp_table; $aref_host = \@MySQLaccess::Grant::sorted_host_tmp_table; $aref_db = \@MySQLaccess::Grant::sorted_db_tmp_table; } else { $aref_user = \@MySQLaccess::Grant::sorted_user_table; $aref_host = \@MySQLaccess::Grant::sorted_host_table; $aref_db = \@MySQLaccess::Grant::sorted_db_table; } my ($refrecord,$refgrant); my ($_host_,$_user_,$encpw_); my %_Access_; MySQLaccess::Debug::Print(1, "for ($host,$user,$db):"); # ****************************************************************************** # Create default access-rights # default access-rights are no access at all!! # ****************************************************************************** # get hostname for IP-address # get IP-address for hostname local $host_name = MySQLaccess::Host::IP2Name($host); local $host_ip = MySQLaccess::Host::Name2IP($host); MySQLaccess::Debug::Print(3,"host=$host, hostname=$host_name, host-ip =$host_ip"); MySQLaccess::Debug::Print(3,"user=$user"); MySQLaccess::Debug::Print(3,"db =$db"); # *********************************************************************** # retrieve information on USER # check all records in mysql::user for matches with the tuple (host,user) # *********************************************************************** # 4.OR (add) the privileges for the user from the "user" table. # (add all privileges which is "Y" in "user") ($refrecord,$refgrant) = Get_grant_from_user($host,$user,$aref_user); ($_host_,$_user_,$encpw_) = @{$refrecord}; %_access_ = %{$refgrant}; foreach $field (keys(%U)) { ##only priv. set in user-table $MySQLaccess::Grant::Access{$field} = ($MySQLaccess::Grant::Access{$field} or $_access_{$field}); } if ($_user_ eq $MySQLaccess::NEW_USER) { push(@Warnings,'minimum_priv'); } if ($_user_ ne $user) { $user=$_user_; push(@Warnings,'anonymous_access'); } # ******************************************************* # Validate password if this has been asked to do # ******************************************************* if (defined($password)) { $valid = Validate_Password($password,$_host_,$_user_,$_encpw_,$aref_user); if (!$valid) { push(@Errors,'invalid_password'); } else { push(@Notes,'valid_password'); } } # ****************************************************************************** # retrieve information on DB # check all records in mysql::db for matches with the triple (host,db,user) # first match is used. # ****************************************************************************** # 2.Get grant for user from the "db" table. ($refrecord,$refgrant)=Get_grant_from_db($host,$db,$user,$aref_db); #set process_host_table ($_host_,$_user_,$encpw_) = @{$refrecord}; %_access_ = %{$refgrant}; foreach $field (keys(%D)) { ##only priv. set in db-table $MySQLaccess::Grant::Access{$field} = ($MySQLaccess::Grant::Access{$field} or $_access_{$field}); } # *********************************************************************** # retrieve information on HOST # check all records in mysql::host for matches with the tuple (host,db) # # ' The host table is mainly to maintain a list of "secure" servers. ' # *********************************************************************** # 3.If hostname is "empty" for the found entry, AND the privileges with # the privileges for the host in "host" table. # (Remove all which is not "Y" in both) if ($MySQLaccess::Grant::process_host_table) { ($refrecord,$refgrant)=Get_grant_from_host($host,$db,$aref_host); ($_host_,$_user_,$encpw_) = @{$refrecord}; %_access_ = %{$refgrant}; foreach $field (keys(%H)) { ##only priv. set in host-table $MySQLaccess::Grant::Access{$field} = ($MySQLaccess::Grant::Access{$field} and $_access_{$field}); } } MySQLaccess::Debug::Print(1,"done for ($host,$user,$db)"); return %MySQLaccess::Grant::Access; } # #################################### # FINDING THE RIGHT GRANT-RULE # ========================================================== # sub Get_grant_from_user: # ========================================================== sub Get_grant_from_user { my ($host,$user,$aref) = @_; MySQLaccess::Debug::Print(1, ""); MySQLaccess::Debug::Print(1, "(host=$host,user=$user)"); my %Access_user = %{Default_Access_Rights()}; my $rule_found=0; my @record = (); my $record; foreach $record (@{$aref}) { $MySQLaccess::Grant::full_access=0; MySQLaccess::Debug::Print(3, "Record= $record"); @record=split(/\t/,$record); # check host and db # with possible wildcards in field # replace mysql-wildcards by reg-wildcards my $host_tpl = MySQLaccess::Wildcards::SQL2Reg($record[0]); my $user_tpl = $record[1]; #user field isn't pattern-matched!! my $passwd = $record[2]; MySQLaccess::Debug::Print(3, "=>host_tpl : read=$record[0] -> converted=$host_tpl"); MySQLaccess::Debug::Print(3, "=>user_tpl : read=$record[1] -> $user_tpl"); MySQLaccess::Debug::Print(3, "=>password : read=$record[2] -> $passwd"); if ( MySQLaccess::Host::MatchTemplate($host,$host_tpl) and MySQLaccess::Wildcards::MatchTemplate($user_tpl,$user) ) { MySQLaccess::Debug::Print(2, "FOUND!!"); if ($passwd eq '') { push(@Warnings,'insecure_user'); } else { push(@Notes,'password_required'); } foreach $field (keys(%U)) { $Access_user{$field} = $MySQLaccess::Report::Answer{$record[$U{$field}]}; } #print "\n" if $DEBUG; $MySQLaccess::Grant::Rules{'user'} = $record; $rule_found=1; last; } } # ------------------------------- # setting privileges to user-priv MySQLaccess::Debug::Print(2, "Rights after parsing user-table..:"); if (! $rule_found ) { @record=(); MySQLaccess::Debug::Print(2, "NO record found in the user-table!!"); } else { MySQLaccess::Debug::Print(2, "Selected record=@record"); MySQLaccess::Debug::Print(2, "<=?=> $record"); } MySQLaccess::Debug::Print(1, "returning @record"); return (\@record,\%Access_user); #matching record in user-table } # ========================================================== # sub Get_grant_from_db: # ========================================================== sub Get_grant_from_db { my ($host,$db,$user,$aref) = @_; MySQLaccess::Debug::Print(1, "(host=$host,user=$user,db=$db)"); my %Access_db = %{Default_Access_Rights()}; my $rule_found=0; foreach $record (@{$aref}) { $full_access=0; MySQLaccess::Debug::Print(2, "Read db: $record"); @record=split(/\t/,$record); # check host and db # with possible wildcards in field # replace mysql-wildcards by reg-wildcards my $host_tpl = MySQLaccess::Wildcards::SQL2Reg($record[0]); my $db_tpl = MySQLaccess::Wildcards::SQL2Reg($record[1]); my $user_tpl = $record[2]; #user field isn't pattern matched!! MySQLaccess::Debug::Print(3, "=>host_tpl : read=$record[0] -> converted=$host_tpl"); MySQLaccess::Debug::Print(3, "=>db_tpl : read=$record[1] -> $db_tpl"); MySQLaccess::Debug::Print(3, "=>user_tpl : read=$record[2] -> $user_tpl"); if ( ( MySQLaccess::Host::Is_localhost($host_tpl) or MySQLaccess::Wildcards::MatchTemplate($host_tpl,$host_name) or MySQLaccess::Wildcards::MatchTemplate($host_tpl,$host_ip) ) and ( MySQLaccess::Wildcards::MatchTemplate($db_tpl,$db) ) and ( MySQLaccess::Wildcards::MatchTemplate($user_tpl,$user) ) ) { $MySQLaccess::Grant::process_host_table = ($record[0] eq ''); if ($user_tpl eq '') { push(@Warnings,'public_database'); } foreach $field (keys(%D)) { $Access_db{$field} = $MySQLaccess::Report::Answer{$record[$D{$field}]}; } $rule_found=1; $MySQLaccess::Grant::Rules{'db'} = $record; last; } } # ------------------------------- # setting privileges to db-priv MySQLaccess::Debug::Print(2, "Rights after parsing db-table..:"); if (! $rule_found ) { MySQLaccess::Debug::Print(2, "NO rule found in db-table => no access granted!!"); } return (\@record,\%Access_db); } # ========================================================== # sub Get_grant_from_host: # ========================================================== sub Get_grant_from_host { my ($host,$db,$aref) = @_; MySQLaccess::Debug::Print(1, "Get_grant_from_host()"); my %Access_host = %{Default_Access_Rights()}; # the host-table doesn't have to be processed if the host-field # in the db-table isn't empty if (!$MySQLaccess::Grant::process_host_table) { MySQLaccess::Debug::Print(2, ">> Host-table doesn't have to be processed!!"); $MySQLaccess::Grant::Rules{'host'} = 'no_equiv_host'; return ([],\%Access_host); } my $rule_found=0; my @record = (); foreach $record (@{$aref}) { $full_access=0; MySQLaccess::Debug::Print(2, "host: $record"); @record=split(/\t/,$record); # check host and db # with possible wildcards in field # replace mysql-wildcards by reg-wildcards my $host_tpl = MySQLaccess::Wildcards::SQL2Reg($record[0]); my $db_tpl = MySQLaccess::Wildcards::SQL2Reg($record[1]); MySQLaccess::Debug::Print(3, "=>host_tpl : $record[0] -> $host_tpl"); MySQLaccess::Debug::Print(3, "=>db_tpl : $record[1] -> $db_tpl"); if ( ( MySQLaccess::Host::Is_localhost($host_tpl) or MySQLaccess::Wildcards::MatchTemplate($host_tpl,$host_name) or MySQLaccess::Wildcards::MatchTemplate($host_tpl,$host_ip) ) and ( MySQLaccess::Wildcards::MatchTemplate($db_tpl,$db) ) ) { $MySQLaccess::Grant::Rules{'host'} = $record; $rule_found=1; foreach $field (keys(%H)) { $Access_host{$field} = $MySQLaccess::Report::Answer{$record[$H{$field}]}; } last; } } # ------------------------------- # setting privileges to host-priv MySQLaccess::Debug::Print(2, "Rights after parsing host-table..:"); if (! $rule_found ) { @record=(); MySQLaccess::Debug::Print(2, "NO restrictions found in the host-table!!"); } # -------------------------------- # debugging access-rights in db return (\@record,\%Access_host); #matching record in host-table } # =========================================================== # sub Default_Access_Rights(): # return (a reference to) a hash which holds all default # priviliges currently defined in the grant-tables. # =========================================================== sub Default_Access_Rights { my %right = (); MySQLaccess::Debug::Print(2, "Debug Default_Access_Rights():"); # add entry for all fields in the HOST-table foreach $field (keys(%MySQLaccess::Grant::H)) { $right{$field}='0' unless (defined($right{$field})); } # add entry for all fields in the DB-table foreach $field (keys(%MySQLaccess::Grant::D)) { $right{$field}='0' unless (defined($right{$field})); } # add entry for all fields in the USER-table foreach $field (keys(%MySQLaccess::Grant::U)) { $right{$field}='0' unless (defined($right{$field})); } # -------------- # debugging info foreach $field (keys(%right)) { MySQLaccess::Debug::Print(3, sprintf("> %15s : %1s",$field,$right{$field})); } return \%right; } # ====================================== # sub Make_Privlist # Make an ordered list of the privileges # that should be reported # ====================================== sub Make_Privlist { # layout: #'select_priv', 'create_priv', #'insert_priv', 'drop_priv', #'update_priv', 'reload_priv', #'delete_priv', 'process_priv', #'file_priv', 'shutdown_priv'); my $right; my @privlist=(); foreach $right (@U) { if (! grep(/$right/,@privlist)) { push(@privlist,$right); } }; foreach $right (@D) { if (! grep(/$right/,@privlist)) { push(@privlist,$right); } }; foreach $right (@H) { if (! grep(/$right/,@privlist)) { push(@privlist,$right); } }; # print "Privileges:\n"; # foreach $field (@privlist) { print " > $field\n"; } return \@privlist; } ######################################################################## package MySQLaccess::Report; use Exporter (); @EXPORT = qw(&Print_Header()); BEGIN { $FORM = $ENV{'SCRIPT_NAME'}; $DEBUG = 0; $DEBUG = $MySQLaccess::DEBUG unless ($DEBUG); # translation-table for poss. answers %Answer = ('Y' => 1 , 'N' => 0 , 1 => 'Y', 0 => 'N' ,'?' => '?', '' => '?' ); $headers = 0; $separator = 0; # **************************** # Notes and warnings %MESSAGES = ( 'insecure_user' => "Everybody can access your DB as user `\$user' from host `\$host'\n" ."WITHOUT supplying a password.\n" ."Be very careful about it!!" ,'password_required' => "A password is required for user `\$user' :-(" ,'invalid_password' => "The password '\$password' for user `\$user' is invalid :-P" , 'valid_password' => "You supplied the right password for user `\$user' :-)" ,'public_database' => "Any user with the appropriate permissions has access to your DB!\n" ."Check your users!" ,'full_access' => "All grant-tables are empty, which gives full access to ALL users !!" ,'no_rule_found' => "No matching rule" ,'no_equiv_host' => "Not processed: host-field is not empty in db-table." ,'least_priv' => "If the final priveliges of the user are more then you gave the user,\n" ."check the priveliges in the db-table `\$db'." ,'minimum_priv' => "The privileges for any new user are AT LEAST\n" ."the ones shown in the table above,\n" ."since these are the privileges of the db `\$db'.\n" ,'not_found_mysql' => "The MySQL client program <$MySQLaccess::MYSQL> could not be found.\n" ."+ Check your path, or\n" ."+ edit the source of this script to point \$MYSQL to the mysql client.\n" ,'not_found_mysqldump' => "The MySQL dump program <$MySQLaccess::MYSQLDUMP> could not be found.\n" ."+ Check your path, or\n" ."+ edit the source of this script to point \$MYSQLDUMP to the mysqldump program.\n" ,'not_found_diff' => "The diff program <$MySQLaccess::DIFF> could not be found.\n" ."+ Check your path, or\n" ."+ edit the source of this script to point \$DIFF to the diff program.\n" ,'not_found_tmp' => "The temporary directory <$MySQLaccess::TMP_PATH> could not be found.\n" ."+ create this directory (writeable!), or\n" ."+ edit the source of this script to point \$TMP_PATH to the right directory.\n" ,'write_err_tmp' => "The temporary directory <$MySQLaccess::TMP_PATH> is not writable.\n" ."+ make this directory writeable!, or\n" ."+ edit the source of this script to point \$TMP_PATH to another directory.\n" ,'Unrecognized_option' => "Sorry,\n" ."You are using an old version of the mysql-program,\n" ."which does not yet implement a neccessary option.\n" ."\n" ."You need at least Version 6.2 of the mysql-client,\n" ."which was build in MySQL v3.0.18, to use this version\n" ."of `$MySQLaccess::script'." ,'Access_denied' => "Sorry,\n" ."An error occured when trying to connect to the database\n" ."with the grant-tables:\n" ."* Maybe YOU do not have READ-access to this database?\n" ."* If you used the -U option, you may have supplied an invalid username?\n" ." for the superuser?\n" ."* If you used the -U option, it may be possible you have to supply\n" ." a superuser-password to, with the -P option?\n" ."* If you used the -P option, you may have supplied an invalid password?\n" ,'Dbaccess_denied' => "Sorry,\n" ."An error occured when trying to connect to the database\n" ."with the grant-tables. (dbaccess denied)\n" ,'Unknown_tmp_table' => "Sorry,\n" ."An error occured when trying to work with the temporary tables in the database\n" ."with the grant-tables. (One of the temporary tables does not exist)\n" ,'Unknown_table' => "Sorry,\n" ."An error occured when trying to work with some tables in the database\n" ."with the grant-tables. (table does not exist)\n" ,'use_old_server' => "Sorry,\n" ."An error occured when executing an SQL statement.\n" ."You might consider altering the use of the parameter `--old_server' when \n" ."calling `$MySQLaccess::script'." ,'unknown_error' => "Sorry,\n" ."An error occured when trying to connect to the database\n" ."with the grant-tables. (unknown error)\n" ,'anonymous_access' => "Accessing the db as an anonymous user.\n" ."Your username has no relevance\n" ,'user_required' => "You have to supply a userid." ,'db_required' => "You have to supply the name of a database." ,'host_required' => "You have to supply the name of a host." ); } # ===================================== # sub Print_Header: # print header info # ===================================== sub Print_Header { if ($MySQLaccess::CMD) { #command-line mode print "$MySQLaccess::script Version $MySQLaccess::VERSION\n" ."By RUG-AIV, by Yves Carlier (Yves.Carlier\@rug.ac.be)\n" ."Changes by Steve Harvey (sgh\@vex.net)\n" ."This software comes with ABSOLUTELY NO WARRANTY.\n"; } if ($MySQLaccess::CGI) { #CGI-BIN mode print "content-type: text/html\n\n" . "\n" ."\n" ."MySQLaccess\n" ."\n" ."\n" ."

$MySQLaccess::script Version $MySQLaccess::VERSION

\n" ."
\n
\n" ."By RUG-AIV, by Yves Carlier (Yves.Carlier\@rug.ac.be)
\n" ."Changes by Steve Harvey (sgh\@vex.net)
\n" ."This software comes with ABSOLUTELY NO WARRANTY.
\n" ."
\n
\n" ."
\n"; Print_Taskbar(); print "
\n"; } return 1; } # ===================================== # sub Print_Footer: # print footer info # ===================================== sub Print_Footer { if ($MySQLaccess::CMD) { #command-line mode print "\n" ."BUGs can be reported by email to Yves.Carlier\@rug.ac.be\n"; } if ($MySQLaccess::CGI) { #CGI-BIN mode if ($MySQLaccess::Param{'brief'}) { print "\n"; #close table in brief-output } print "
\n" ."
\n" ."BUGs can be reported by email to Yves.Carlier\@rug.ac.be
\n" # ."Don't forget to mention the version $VERSION!
\n" ."
\n" ."\n" ."\n"; } return 1; } # ===================================== # sub Print_Taskbar: # print taskbar on STDOUT # ===================================== sub Print_Taskbar { print "
\n" ."[Release Notes] \n" ."[Version] \n" ."[Future Plans] \n" ."[Examples] \n" ."[New check] \n" ."[Change/edit ACL] \n" ."
\n"; return 1; } # ===================================== # sub Print_Form: # print CGI-form # ===================================== sub Print_Form { print <
MySQL server User information Reports
Host
(Host on which MySQL-server resides.)
Superuser
(User which has read-access to grant-tables.)
Password
(of Superuser.)
User
(Userid used to connect to MySQL-database.)
Password
(Password user has to give to get access to MySQL-database.)
Database
(Name of MySQL-database user tries to connect to.
Wildcards (*,?,%,_) are allowed.)
Host
(Host from where the user is trying to connect to MySQL-database.
Wildcards (*,?,%,_) are allowed.)

EOForm return 1; } # ===================================== # sub Print_Usage: # print some information on STDOUT # ===================================== sub Print_Usage { Print_Error_Messages(); if ($MySQLaccess::CMD) { #command-line mode Print_Options(); } if ($MySQLaccess::CGI) { #CGI-BIN mode Print_Form(); } return 1; } # ====================================== # sub Print_Version: # ====================================== sub Print_Version { if ($MySQLaccess::CMD) { print $MySQLaccess::INFO; } if ($MySQLaccess::CGI) { print "
\n"; 
       print $MySQLaccess::INFO;
       print "
\n"; } return 1; } # ====================================== # sub Print_Relnotes: # ====================================== sub Print_Relnotes { if ($MySQLaccess::CMD) { print $MySQLaccess::RELEASE; } if ($MySQLaccess::CGI) { print "
\n";
       print $MySQLaccess::RELEASE;
       print "
\n"; } return 1; } # ====================================== # sub Print_Plans: # ====================================== sub Print_Plans { if ($MySQLaccess::CMD) { print $MySQLaccess::TODO; } if ($MySQLaccess::CGI) { print "
\n";
       print $MySQLaccess::TODO;
       print "
\n"; } return 1; } # ====================================== # sub Print_HowTo: # ====================================== sub Print_HowTo { if ($MySQLaccess::CMD) { print $MySQLaccess::HOWTO; } if ($MySQLaccess::CGI) { print "
\n"; 
       print $MySQLaccess::HOWTO;
       print "
\n"; } return 1; } # ====================================== # sub Print_Options: # ====================================== sub Print_Options { if ($MySQLaccess::CGI) { print "
\n"; }
    print $MySQLaccess::OPTIONS;
    if ($MySQLaccess::CGI) { print "
\n"; } return 1; } # ====================================== # sub Print_Error_Access: # ====================================== sub Print_Error_Access { my ($error) = @_; print "\n"; if ($MySQLaccess::CGI) { print "\n
\n"; }
    print $MESSAGES{$error};
    if ($MySQLaccess::CGI) { print "
\n
\n"; } print "\n"; return 1; } # ====================================== # sub Print_Error_Messages: # ====================================== sub Print_Error_Messages { # my ($error) = @_; print "\n"; if ($MySQLaccess::CGI) { print "\n
\n"; } foreach $error (@MySQLaccess::Grant::Error) { print $MESSAGES{$error}; print $MySQLaccess::CGI ? "
\n" : "\n"; } if ($MySQLaccess::CGI) { print "
\n
\n"; } print "\n"; return 1; } # ====================================== # sub Print_Message: # ====================================== sub Print_Message { my ($aref) = @_; my @messages = @{$aref}; print "\n"; if ($MySQLaccess::CGI) { print "\n
\n"; } foreach $msg (@messages) { print $msg; print $MySQLaccess::CGI ? "
\n" : "\n"; } if ($MySQLaccess::CGI) { print "
\n
\n"; } print "\n"; return 1; } # ====================================== # sub Print_Edit: # ====================================== sub Print_Edit { print "\n"; if (!$MySQLaccess::CGI) { print "Note: Editing the temporary tables is NOT supported in CMD-line mode!\n"; return 0; } print "
\n" ."
\n" ."\n" ."\n" ." \n" ." \n" ."\n" ."\n" ." \n" ."\n" ."\n" ." \n" ."\n" ."\n" ." \n" ."\n" ."\n" ." \n" ."\n" ."\n" ." \n" ."\n" ."
Copy grant-rules to temporary tables
Edit temporary tables with external application:
" ." $MySQLaccess::MYSQLADMIN
Preview changes made in temporary tables
Make changes permanent
Restore previous grand-rules
You need write,delete and drop-privileges to perform the above actions
\n" ."
\n" ."
\n"; return 1; } # ====================================== # sub Print_Access_rights: # print the access-rights on STDOUT # ====================================== sub Print_Access_rights { my ($host,$user,$db,$refhash) = @_; if (defined($MySQLaccess::Param{'brief'})) { # if ($MySQLaccess::CGI) { print "
\n"; }
       Matrix_Report($host,$user,$db,$refhash);  
#       if ($MySQLaccess::CGI) { print "
\n"; } } else { Tabular_Report($host,$user,$db,$refhash); $MySQLaccess::Report::separator = $MySQLaccess::CGI ? "
" : "-"x80; } return 1; } # ====================================== # sub Print_Diff_ACL: # print the diff. in the grants before and after # ====================================== sub Print_Diff_ACL { my ($aref) = @_; my @diffs = @{$aref}; my %block = ( '<' => 'Before', '>' => 'After', ); my %color = ( '<' => 'Green', '>' => 'Red', ); my $curblock = ''; # ----------------------------- # create column-headers foreach $field (@MySQLaccess::Grant::Privileges) { push(@headers,substr($field,0,4)); } if ($MySQLaccess::CMD) { print "\n"; print "Differences in access-rights BEFORE and AFTER changes in grant-tables\n"; # print "---------------------------------------------------------------------\n"; my $line1=""; my $line2=""; $line1 .= sprintf("| %-30s|",'Host,User,DB'); $line2 .= sprintf("+-%-30s+",'-' x 30); foreach $header (@headers) { $line1 .= sprintf("%-4s|",$header); $line2 .= sprintf("%s+",'----'); } print "$line2\n"; print "$line1\n"; print "$line2\n"; $format = "format STDOUT = \n" . "^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< " . " @|||" x 10 ."\n" . '$host_user_db,@priv' . "\n" . ".\n"; #print $format; eval $format; } if ($MySQLaccess::CGI) { print "\n"; print "\n"; print ""; print "\n"; print "\n"; $line1 .= sprintf("",'Host, User, DB'); foreach $header (@headers) { $line1 .= sprintf("",$header); } print "$line1\n"; } foreach $line (@diffs) { $type = substr($line,0,1); $line = substr($line,1); ($host,$user,$db,@priv) = split(/,/,$line); if ($MySQLaccess::CMD) { if ($type ne $curblock) { $curblock = $type; print $block{$curblock},":\n"; } #print "$line\n"; write; } if ($MySQLaccess::CGI) { if ($type ne $curblock) { $curblock = $type; print "\n"; } $line1=""; foreach $field (@priv) { $line1 .= sprintf("",$field); } print "$line1\n"; } } print "\n"; if ($MySQLaccess::CMD) { print "---------------------------------------------------------------------\n"; } if ($MySQLaccess::CGI) { print "
"; print "Differences in access-rights BEFORE " ."and '}>AFTER changes to grant-tables\n"; print "
%-20s%-4s
$block{$curblock}
$host, $user, $db%-4s

"; } return 1; } # ====================================== # sub Tabular_Report # Tabular report, # suitable for 1 triple (host,db,user) # ====================================== sub Tabular_Report { my ($host,$user,$db,$a) = @_; my $column=2; # ----------------------------- # separator if ($MySQLaccess::Report::separator) { print "$MySQLaccess::Report::separator\n"; } # ----------------------------- # print table of access-rights my $rows = int(@MySQLaccess::Grant::Privileges/2); #round up my @table=(); $j=0; for $i (0 .. $rows-1) { $table[$j]=$MySQLaccess::Grant::Privileges[$i]; $j = $j+2; } $j=1; for $i ($rows .. $#MySQLaccess::Grant::Privileges) { $table[$j]=$MySQLaccess::Grant::Privileges[$i]; $j = $j+2; } if ($MySQLaccess::CMD) { print "\n"; print "Access-rights\n"; print "for USER '$user', from HOST '$host', to DB '$db'\n"; } if ($MySQLaccess::CGI) { print "\n"; print "\n"; } if ($MySQLaccess::CGI) { print ""; print "\n"; print "\n"; } if ($MySQLaccess::CMD) { print "\t+-----------------+---+\t+-----------------+---+"; } foreach $field (@table) { if ($MySQLaccess::CMD) { if ($column==2) { print "\n\t"; $column=1;} else { print "\t"; $column=2;} printf "| %-15s | %s |",$field,$Answer{$a->{$field}}; } if ($MySQLaccess::CGI) { if ($column==2) { print "\n\n"; $column=1;} else { print ""; $column=2;} printf " \n",$field,$Answer{$a->{$field}}; } } print "\n"; if ($MySQLaccess::CMD) { print "\t+-----------------+---+\t+-----------------+---+\n"; } if ($MySQLaccess::CGI) { print "\n
"; print "Access-rights\n"; print "for USER '$user', from HOST '$host', to DB '$db'\n"; print "
%-15s%s

"; } # --------------- # print notes: foreach $note (@MySQLaccess::Grant::Notes) { my $message = $MESSAGES{$note}; $message =~ s/\$user/$user/g; $message =~ s/\$db/$db/g; $message =~ s/\$host/$host/g; $message =~ s/\$password/$password/g; $PREFIX='NOTE'; if ($MySQLaccess::CMD) { my @lines = split(/\n/,$message); foreach $line (@lines) { print "$PREFIX:\t $line\n"; $PREFIX=' '; } } if ($MySQLaccess::CGI) { print "$PREFIX: $message
\n"; } } # --------------- # print warnings: foreach $warning (@MySQLaccess::Grant::Warnings) { my $message = $MESSAGES{$warning}; $message =~ s/\$user/$user/g; $message =~ s/\$db/$db/g; $message =~ s/\$host/$host/g; $message =~ s/\$password/$password/g; $PREFIX='BEWARE'; if ($MySQLaccess::CMD) { my @lines = split(/\n/,$message); foreach $line (@lines) { print "$PREFIX:\t $line\n"; $PREFIX=' '; } } if ($MySQLaccess::CGI) { print "$PREFIX: $message
\n"; } } # --------------- # print errors: foreach $error (@MySQLaccess::Grant::Errors) { my $message = $MESSAGES{$error}; $message =~ s/\$user/$user/g; $message =~ s/\$db/$db/g; $message =~ s/\$host/$host/g; $message =~ s/\$password/$password/g; $PREFIX='ERROR'; if ($MySQLaccess::CMD) { my @lines = split(/\n/,$message); foreach $line (@lines) { print "$PREFIX:\t $line\n"; $PREFIX=' '; } } if ($MySQLaccess::CGI) { print "$PREFIX: $message
\n"; } } # --------------- # inform if there are no rules ==> full access for everyone. if ($MySQLaccess::Grant::full_access) { print "$MESSAGES{'full_access'}\n"; } # --------------- # print the rules used print "\n"; if ($MySQLaccess::CMD) { print "The following rules are used:\n"; foreach $field (sort(keys(%MySQLaccess::Grant::Rules))) { my $rule = (defined($MESSAGES{$MySQLaccess::Grant::Rules{$field}}) ? $MESSAGES{$MySQLaccess::Grant::Rules{$field}} : $MySQLaccess::Grant::Rules{$field}); $rule =~ s/\t/','/g; printf " %-5s : '%s'\n",$field,$rule; } } if ($MySQLaccess::CGI) { print "
\n"; print "\n"; print "\n"; foreach $field (sort(keys(%MySQLaccess::Grant::Rules))) { my $rule = (defined($MESSAGES{$MySQLaccess::Grant::Rules{$field}}) ? $MESSAGES{$MySQLaccess::Grant::Rules{$field}} : $MySQLaccess::Grant::Rules{$field}); $rule =~ s/\t/','/g; printf "\n",$field,$rule; } print "
The following rules are used:
%-5s'%s'
\n"; } return 1; } # ====================================== # sub Matrix_Report: # single-line output foreach triple, # no notes,warnings,... # ====================================== sub Matrix_Report { my ($host,$user,$db,$a) = @_; my @headers = (); if (! $headers) { # ----------------------------- # create column-headers foreach $field (@MySQLaccess::Grant::Privileges) { push(@headers,substr($field,0,4)); } # ----------------------------- # print column-headers print "\n"; if ($MySQLaccess::CMD) { my $line1=""; my $line2=""; foreach $header (@headers) { $line1 .= sprintf("%-4s ",$header); $line2 .= sprintf("%s ",'----'); } $line1 .= sprintf("| %-20s",'Host,User,DB'); $line2 .= sprintf("+ %-20s",'-' x 20); print "$line1\n"; print "$line2\n"; } if ($MySQLaccess::CGI) { print "\n"; my $line1=""; foreach $header (@headers) { $line1 .= sprintf("",$header); } $line1 .= sprintf("",'Host, User, DB'); print "$line1\n"; } # ---------------------------- # column-headers should only be # printed once. $MySQLaccess::Report::headers=1; } # ------------------------ # print access-information if ($MySQLaccess::CMD) { foreach $field (@MySQLaccess::Grant::Privileges) { printf " %-2s ",$Answer{$a->{$field}}; } printf "| %-20s",join(',',$host,$user,$db); print "\n"; } if ($MySQLaccess::CGI) { print ""; foreach $field (@MySQLaccess::Grant::Privileges) { printf "",$Answer{$a->{$field}}; } printf "",join(', ',$host,$user,$db); print "\n"; } return 1; } # ====================================== # sub Raw_Report: # single-line output foreach triple, # no notes,warnings,... # ====================================== sub Raw_Report { my ($host,$user,$db,$a) = @_; my @headers = (); my $string = ""; # ------------------------ # print access-information $string = "$host,$user,$db,"; foreach $field (@MySQLaccess::Grant::Privileges) { $string .= $Answer{$a->{$field}} . ","; } return $string; } ####################################################################### package MySQLaccess::Wildcards; BEGIN { $DEBUG = 0; $DEBUG = $MySQLaccess::DEBUG unless ($DEBUG); } # ############################################ # SQL, WILDCARDS and REGULAR EXPRESSIONS # ============================================ # translage SQL-expressions to Reg-expressions # ============================================ sub SQL2Reg { my ($expr) = @_; my $expr_o = $expr; $expr =~ s/\./\\./g; $expr =~ s/\\%/\002/g; $expr =~ s/%/.*/g; $expr =~ s/\002/%/g; $expr =~ s/\\_/\002/g; $expr =~ s/_/.+/g; $expr =~ s/\002/_/g; MySQLaccess::Debug::Print(2,"$expr_o --> $expr"); return $expr; } # translage WILDcards to Reg-expressions # ============================================ sub Wild2Reg { my ($expr) = @_; my $expr_o = $expr; $expr =~ s/\./\\./g; $expr =~ s/\\\*/\002/g; $expr =~ s/\*/.*/g; $expr =~ s/\002/*/g; $expr =~ s/\\\?/\002/g; $expr =~ s/\?/.+/g; $expr =~ s/\002/?/g; MySQLaccess::Debug::Print(2,"$expr_o --> $expr"); return $expr; } # ============================================= # match a given string with a template # ============================================= sub MatchTemplate { my ($tpl,$string) = @_; my $match=0; if ($string=~ /^$tpl$/ or $tpl eq '') { $match=1; } else { $match=0;} MySQLaccess::Debug::Print(2,"($tpl,$string) --> $match"); return $match; } ####################################################################### package MySQLaccess::Host; BEGIN { $localhost = undef; $DEBUG = 2; $DEBUG = $MySQLaccess::DEBUG unless ($DEBUG); } # ====================================== # sub IP2Name # return the Name with the corr. IP-nmbr # (no aliases yet!!) # ====================================== sub IP2Name { my ($ip) = @_; my $ip_o = $ip; if ($ip !~ /([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/o) { MySQLaccess::Debug::Print(3,"'$ip' is not an ip-number, returning IP=$ip"); return $ip; } MySQLaccess::Debug::Print(4,"IP=$ip split up => $1.$2.$3.$4"); $ip = pack "C4",$1,$2,$3,$4; MySQLaccess::Debug::Print(4,"IP packed -> >>$ip<<\n"); my ($name,$aliases,$addrtype,$length,@addrs) = gethostbyaddr($ip, AF_INET); MySQLaccess::Debug::Print(3,"IP=$ip_o => hostname=$name"); MySQLaccess::Debug::Print(4,"aliases=$aliases"); MySQLaccess::Debug::Print(4,"addrtype=$addrtype - length=$length"); return ($name || $ip); #return ($name || undef); } # ====================================== # sub Name2IP # return the IP-number of the host # ====================================== sub Name2IP { my ($name) = @_; if ($name =~ /[%_]/) { MySQLaccess::Debug::Print(3,"'$name' contains SQL-wildcards, returning name=$name"); return $name; } my ($_name,$aliases,$addrtype,$length,@addrs) = gethostbyname($name); my ($a,$b,$c,$d) = unpack('C4',$addrs[0]); my $ip = "$a.$b.$c.$d"; MySQLaccess::Debug::Print(3,"hostname=$name => IP=$ip"); MySQLaccess::Debug::Print(4,"aliases=$aliases"); MySQLaccess::Debug::Print(4,"addrtype=$addrtype - length=$length"); #if ($ip ne "") { return "$ip"; } #else { return undef; } return ($ip || $name); } # ======================================== # sub LocalHost # some special action has to be taken for # the localhost # ======================================== sub LocalHost { if (!defined($MySQLaccess::Host::localhost)) { $MySQLaccess::Host::localhost = Sys::Hostname::hostname(); MySQLaccess::Debug::Print(3,"Setting package variable \$localhost=$MySQLaccess::Host::localhost"); } my $host = $localhost; MySQLaccess::Debug::Print(3,"localhost = $host"); return $host; } # ======================================== # check if the given hostname (or ip) # corresponds with the localhost # ======================================== sub Is_localhost { my ($host_tpl) = @_; my $isit = 0; if (($MySQLaccess::host_name eq $localhost) or ($MySQLaccess::host_ip eq $local_ip)) { MySQLaccess::Debug::Print(2,"Checking for localhost"); MySQLaccess::Debug::Print(3,"because ($MySQLaccess::host_name EQ $localhost) AND ($MySQLaccess::host_ip EQ $local_ip)"); $isit = ( 'localhost' =~ /$host_tpl/ ) ? 1 : 0; MySQLaccess::Debug::Print(3," 'localhost' =?= $host_tpl -> $isit"); return $isit; } else { MySQLaccess::Debug::Print(4,"Not checking for localhost"); MySQLaccess::Debug::Print(4,"because ($MySQLaccess::host_name != $localhost) AND ($MySQLaccess::host_ip != $local_ip)"); return 0; } } # ========================================= # check if host (IP or name) can be matched # on the template. # ========================================= sub MatchTemplate { my ($host,$tpl) = @_; my $match = 0; MySQLaccess::Debug::Print(1, "($host) =?= ($tpl)"); my $host_name = IP2Name($host); my $host_ip = Name2IP($host); MySQLaccess::Debug::Print(2, "name=$host_name ; ip=$host_ip"); $match = (MySQLaccess::Wildcards::MatchTemplate($tpl,$host_name) or MySQLaccess::Wildcards::MatchTemplate($tpl,$host_ip)); MySQLaccess::Debug::Print(2, "($host_name,$host_ip) =?= ($tpl): $ncount"); return $match; } ######################################################################## package MySQLaccess::Debug; BEGIN { my $dbg_file = "$MySQLaccess::script_log"; open(DEBUG,"> $dbg_file") or warn "Could not open outputfile $dbg_file for debugging-info\n"; select DEBUG; $| = 1; select STDOUT; } # ========================================= # Print debugging information on STDERR # ========================================= sub Print { my ($level,$mesg) = @_; my ($pack,$file,$line,$subname,$hasargs,$wantarray) = caller(1); my ($PACK) = split('::',$subname); my $DEBUG = ${$PACK."::DEBUG"} ? ${$PACK."::DEBUG"} : $MySQLaccess::DEBUG ; my ($sec,$min,$hour) = localtime(); print DEBUG "[$hour:$min:$sec $subname] $mesg\n" if ($DEBUG>=$level); } $ kêÎAÚàí�¡%v”·:†�·:†�·:!#+ë¡%./usr/local/bin/mysqlbugssmissó/í�#!/bin/sh # Create a bug report and mail it to the mysql mailing list # Based on glibc bug reporting script. echo "Finding system information for a MySQL bug report" VERSION="3.23.35" COMPILATION_COMMENT="yes" BUGmysql="mysql@lists.mysql.com" # This is set by configure COMP_ENV_INFO="CC='xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 ' CFLAGS='-I /usr/local/include -DHAVE_INT_8_16_32' CXX='c++' CXXFLAGS='-I /usr/local/include -DHAVE_INT_8_16_32' LDFLAGS='-L/usr/local/lib'" CONFIGURE_LINE="./configure --prefix=/usr/local --localstatedir=/var/mysql --sysconfdir=/etc/mysql '--sbindir=/usr/local/bin' '--libexecdir=/usr/local/bin' --without-server --without-bench --without-bench --without-docs --enable-large-files --with-comment --without-readline" LIBC_INFO="" for pat in /lib/libc.* /lib/libc-* /usr/lib/libc.* /usr/lib/libc-* do TMP=`ls -l $pat 2>/dev/null` if test $? = 0 then LIBC_INFO="$LIBC_INFO $TMP" fi done PATH=../client:$PATH:/bin:/usr/bin:/usr/local/bin export PATH BUGADDR=${1-$BUGmysql} ENVIRONMENT=`uname -a` : ${USER=${LOGNAME-`whoami`}} COMMAND=`echo $0|sed 's%.*/\([^/]*\)%\1%'` # Try to create a secure tmpfile umask 077 TEMPDIR=/tmp/mysqlbug-$$ mkdir $TEMPDIR || (echo "can not create directory in /tmp, aborting"; exit 1;) TEMP=${TEMPDIR}/mysqlbug trap 'rm -f $TEMP $TEMP.x; rmdir $TEMPDIR; exit 1' 1 2 3 13 15 trap 'rm -f $TEMP $TEMP.x; rmdir $TEMPDIR' 0 # How to read the passwd database. PASSWD="cat /etc/passwd" if test -f /usr/lib/sendmail then MAIL_AGENT="/usr/lib/sendmail -oi -t" elif test -f /usr/sbin/sendmail then MAIL_AGENT="/usr/sbin/sendmail -oi -t" else MAIL_AGENT="rmail $BUGmysql" fi # Figure out how to echo a string without a trailing newline N=`echo 'hi there\c'` case "$N" in *c) ECHON1='echo -n' ECHON2= ;; *) ECHON1=echo ECHON2='\c' ;; esac # Find out the name of the originator of this PR. if test -n "$NAME" then ORIGINATOR="$NAME" elif test -f $HOME/.fullname then ORIGINATOR="`sed -e '1q' $HOME/.fullname`" else # Must use temp file due to incompatibilities in quoting behavior # and to protect shell metacharacters in the expansion of $LOGNAME $PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP ORIGINATOR="`cat $TEMP`" rm -f $TEMP fi if test -n "$ORGANIZATION" then if test -f "$ORGANIZATION" then ORGANIZATION="`cat $ORGANIZATION`" fi else if test -f $HOME/.organization then ORGANIZATION="`cat $HOME/.organization`" elif test -f $HOME/.signature then ORGANIZATION=`sed -e "s/^/ /" $HOME/.signature; echo ">"` fi fi PATH_DIRS=`echo $PATH | sed -e 's/^:/. /' -e 's/:$/ ./' -e 's/::/ . /g' -e 's/:/ /g' ` which_1 () { for cmd do # Absolute path ?. if expr "x$cmd" : "x/" > /dev/null then echo "$cmd" exit 0 else for d in $PATH_DIRS do file="$d/$cmd" if test -x "$file" -a ! -d "$file" then echo "$file" exit 0 fi done fi done exit 1 } change_editor () { echo "You can change editor by setting the environment variable VISUAL." echo "If your shell is a bourne shell (sh) do" echo "VISUAL=your_editors_name; export VISUAL" echo "If your shell is a C shell (csh) do" echo "setenv VISUAL your_editors_name" } # If they don't have a preferred editor set, then use emacs if test -z "$VISUAL" then if test -z "$EDITOR" then EDIT=emacs else EDIT="$EDITOR" fi else EDIT="$VISUAL" fi #which_1 $EDIT used_editor=`which_1 $EDIT` echo "test -x $used_editor" if test -x "$used_editor" then echo "Using editor $used_editor"; change_editor sleep 2 else echo "Could not find a text editor. (tried $EDIT)" change_editor exit 1 fi # Find out some information. SYSTEM=`( test -f /bin/uname && /bin/uname -a ) || \ ( test -f /usr/bin/uname && /usr/bin/uname -a ) || echo ""` ARCH=`test -f /bin/arch && /bin/arch` MACHINE=`test -f /bin/machine && /bin/machine` FILE_PATHS= for cmd in perl make gmake gcc cc do file=`which_1 $cmd` if test $? = 0 then if test $cmd = "gcc" then GCC_INFO=`$file -v 2>&1` elif test $cmd = "perl" then PERL_INFO=`$file -v | grep -i version 2>&1` fi FILE_PATHS="$FILE_PATHS $file" fi done admin=`which_1 mysqladmin` MYSQL_SERVER= if test -x "$admin" then MYSQL_SERVER=`$admin version 2> /dev/null` if test "$?" = "1" then MYSQL_SERVER="" fi fi SUBJECT_C="[50 character or so descriptive subject here (for reference)]" ORGANIZATION_C='' LICENCE_C='[none | licence | email support | extended email support ]' SYNOPSIS_C='' SEVERITY_C='<[ non-critical | serious | critical ] (one line)>' PRIORITY_C='<[ low | medium | high ] (one line)>' CLASS_C='<[ sw-bug | doc-bug | change-request | support ] (one line)>' RELEASE_C='' ENVIRONMENT_C='' DESCRIPTION_C='' HOW_TO_REPEAT_C='' FIX_C='' cat > $TEMP <'). SEND-PR: From: ${USER} To: ${BUGADDR} Subject: $SUBJECT_C >Description: $DESCRIPTION_C >How-To-Repeat: $HOW_TO_REPEAT_C >Fix: $FIX_C >Submitter-Id: >Originator: ${ORIGINATOR} >Organization: ${ORGANIZATION- $ORGANIZATION_C} >MySQL support: $LICENCE_C >Synopsis: $SYNOPSIS_C >Severity: $SEVERITY_C >Priority: $PRIORITY_C >Category: mysql >Class: $CLASS_C >Release: mysql-${VERSION} ($COMPILATION_COMMENT) `test -n "$MYSQL_SERVER" && echo ">Server: $MYSQL_SERVER"` >Environment: $ENVIRONMENT_C `test -n "$SYSTEM" && echo "System: $SYSTEM"` `test -n "$ARCH" && echo "Architecture: $ARCH"` `test -n "$MACHINE" && echo "Machine: $MACHINE"` `test -n "$FILE_PATHS" && echo "Some paths: $FILE_PATHS"` `test -n "$GCC_INFO" && echo "GCC: $GCC_INFO"` `test -n "$COMP_ENV_INFO" && echo "Compilation info: $COMP_ENV_INFO"` `test -n "$LIBC_INFO" && echo "LIBC: $LIBC_INFO"` `test -n "$CONFIGURE_LINE" && echo "Configure command: $CONFIGURE_LINE"` `test -n "$PERL_INFO" && echo "Perl: $PERL_INFO"` EOF chmod u+w $TEMP cp $TEMP $TEMP.x eval $EDIT $TEMP if cmp -s $TEMP $TEMP.x then echo "File not changed, no bug report submitted." cp $TEMP /tmp/failed-mysql-bugreport echo "The raw bug report exists in /tmp/failed-mysql-bugreport" echo "If you use this remember that the first lines of the report now is a lie.." exit 1 fi # # Check the enumeration fields # This is a "sed-subroutine" with one keyword parameter # (with workaround for Sun sed bug) # SED_CMD=' /$PATTERN/{ s||| s|<.*>|| s|^[ ]*|| s|[ ]*$|| p q }' while :; do CNT=0 # # 1) Severity # PATTERN=">Severity:" SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP` case "$SEVERITY" in ""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;; *) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'." esac # # 2) Priority # PATTERN=">Priority:" PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP` case "$PRIORITY" in ""|low|medium|high) CNT=`expr $CNT + 1` ;; *) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'." esac # # 3) Class # PATTERN=">Class:" CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP` case "$CLASS" in ""|sw-bug|doc-bug|change-request|support) CNT=`expr $CNT + 1` ;; *) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'." esac # # 4) Synopsis # VALUE=`grep "^>Synopsis:" $TEMP | sed 's/>Synopsis:[ ]*//'` case "$VALUE" in "$SYNOPSIS_C") echo "$COMMAND: \`$VALUE' is not a valid value for \`Synopsis'." ;; *) CNT=`expr $CNT + 1` esac test $CNT -lt 4 && echo "Errors were found with the problem report." # Check if subject of mail was changed, if not, use Synopsis field # subject=`grep "^Subject" $TEMP| sed 's/^Subject:[ ]*//'` if [ X"$subject" = X"$SUBJECT_C" -o X"$subject" = X"$SYNOPSIS_C" ]; then subject=`grep Synopsis $TEMP | sed 's/>Synopsis:[ ]*//'` sed "s/^Subject:[ ]*.*/Subject: $subject/" $TEMP > $TEMP.tmp mv -f $TEMP.tmp $TEMP fi while :; do $ECHON1 "a)bort, e)dit or s)end? $ECHON2" read input case "$input" in a*) echo "$COMMAND: problem report saved in $HOME/dead.mysqlbug." cat $TEMP >> $HOME/dead.mysqlbug xs=1; exit ;; e*) eval $EDIT $TEMP continue 2 ;; s*) break 2 ;; esac done done # # Remove comments and send the problem report # (we have to use patterns, where the comment contains regex chars) # # /^>Originator:/s;$ORIGINATOR;; sed -e " /^SEND-PR:/d /^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;; /^>Confidential:/s;<.*>;; /^>Synopsis:/s;$SYNOPSIS_C;; /^>Severity:/s;<.*>;; /^>Priority:/s;<.*>;; /^>Class:/s;<.*>;; /^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;; /^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;; /^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;; /^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;; /^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;; " $TEMP > $TEMP.x if $MAIL_AGENT < $TEMP.x then echo "$COMMAND: problem report sent" xs=0; exit else echo "$COMMAND: mysterious mail failure, report not sent." echo "$COMMAND: problem report saved in $HOME/dead.mysqlbug." cat $TEMP >> $HOME/dead.mysqlbug fi exit 0 connect("DBI:mysql:$opt_database:$opt_host", $opt_user, $opt_password, { PrintError => 0}) || die "Can't connect to database $opt_database: $DBI::errstr\n"; if ($#ARGV < 0) { # Fetch all table names from the database my ($sth,$row); $sth=$dbh->prepare("show tables"); $sth->execute || die "Can't get tables from $opt_database; $DBI::errstr\n"; while (($row = $sth->fetchrow_arrayref)) { push(@ARGV,$row->[0]); } $sth->finish; } print "Converting tables:\n" if ($opt_verbose); foreach $table (@ARGV) { my ($sth,$row); # Check if table is already converted $sth=$dbh->prepare("show table status like '$table'"); if ($sth->execute && ($row = $sth->fetchrow_arrayref)) { if (uc($row->[1]) eq uc($opt_type)) { print "$table is alread of type $opt_type; Ignored\n"; next; } } print "converting $table\n" if ($opt_verbose); if (!$dbh->do("ALTER TABLE $table type=$opt_type")) { print STDERR "Can't convert $table: Error $DBI::errstr\n"; exit(1) if (!$opt_force); $exit_status=1; } } $dbh->disconnect; exit($exit_status); sub usage { my($version)=shift; print "$0 version 1.1\n"; exit(0) if ($version); print <ä^ ./usr/local/bin/mysql_find_rowsó/í�#!/usr/bin/perl $version="1.02"; use Getopt::Long; $opt_help=$opt_Information=$opt_skip_use_db=0; $opt_regexp=$opt_dbregexp=".*"; $opt_start_row=1; $opt_rows=9999999999; GetOptions("Information","help","regexp=s","start_row=i","rows=i", "dbregexp=s", "skip-use-db") || usage(); usage() if ($opt_help || $opt_Information); $query=$search=$database=$set=""; $eoq=0; while (<>) { next if (length($query) == 0 && /^\#/); # Skipp comments $query.=search($_); if ($eoq) { if ($query =~ /^use /i || $query =~ /^SET / || ($query =~ /$opt_regexp/o && $database =~ /$opt_dbregexp/o)) { if ($opt_skip_use_db && $query =~ /^use /i) { $query=""; next; } if ($opt_start_row <= 1) { if ($database) { print $database, $set; $database=$set=""; } print $query; last if (--$opt_rows == 0); } else { $opt_start_row--; if ($query =~ /^use /) { $database=$query; $set=""; } elsif ($query =~ /^SET/) { $set=$query; } else { $set=""; } } } $query=""; $search=""; $eoq=0; } } exit 0; sub search { my($row)=shift; my($i); for ($i=0 ; $i < length($row) ; $i++) { if (length($search)) { if (length($search) > 1) { # Comment next if (substr($row,$i,length($search)) ne $search); $i+=length($search)-1; $search=""; } elsif (substr($row,$i,1) eq '\\') # Escaped char in string { $i++; } elsif (substr($row,$i,1) eq $search) { if (substr($row,$i+1,1) eq $search) # Double " or ' { $i++; } else { $search=""; } } next; } if (substr($row,$i,2) eq '/*') # Comment { $search="*/"; $i++; } elsif (substr($row,$i,1) eq "'" || substr($row,$i,1) eq '"') { $search=substr($row,$i,1); } } $eoq=1 if (!length($search) && $row =~ /;\s*$/); return $row; } sub usage { print < scalar getpwuid($>), noindices => 0, allowold => 0, # for safety keepold => 0, method => "cp", flushlog => 0, ); Getopt::Long::Configure(qw(no_ignore_case)); # disambuguate -p and -P GetOptions( \%opt, "help", "user|u=s", "password|p=s", "port|P=s", "socket|S=s", "allowold!", "keepold!", "noindices!", "method=s", "debug", "quiet|q", "mv!", "regexp=s", "suffix=s", "checkpoint=s", "flushlog", "tmpdir|t=s", "dryrun|n", ) or usage("Invalid option"); # @db_desc # ========== # a list of hash-refs containing: # # 'src' - name of the db to copy # 't_regex' - regex describing tables in src # 'target' - destination directory of the copy # 'tables' - array-ref to list of tables in the db # 'files' - array-ref to list of files to be copied # my @db_desc = (); my $tgt_name = undef; usage("") if ($opt{help}); if ( $opt{regexp} || $opt{suffix} || @ARGV > 2 ) { $tgt_name = pop @ARGV unless ( exists $opt{suffix} ); @db_desc = map { s{^([^\.]+)\./(.+)/$}{$1}; { 'src' => $_, 't_regex' => ( $2 ? $2 : '.*' ) } } @ARGV; } else { usage("Database name to hotcopy not specified") unless ( @ARGV ); $ARGV[0] =~ s{^([^\.]+)\./(.+)/$}{$1}; @db_desc = ( { 'src' => $ARGV[0], 't_regex' => ( $2 ? $2 : '.*' ) } ); if ( @ARGV == 2 ) { $tgt_name = $ARGV[1]; } else { $opt{suffix} = "_copy"; } } my %mysqld_vars; my $start_time = time; $opt_tmpdir= $opt{tmpdir} if $opt{tmpdir}; $0 = $1 if $0 =~ m:/([^/]+)$:; $opt{quiet} = 0 if $opt{debug}; $opt{allowold} = 1 if $opt{keepold}; # --- connect to the database --- my $dsn = ";host=localhost"; $dsn .= ";port=$opt{port}" if $opt{port}; $dsn .= ";mysql_socket=$opt{socket}" if $opt{socket}; my $dbh = DBI->connect("dbi:mysql:$dsn;mysql_read_default_group=mysqlhotcopy", $opt{user}, $opt{password}, { RaiseError => 1, PrintError => 0, AutoCommit => 1, }); # --- check that checkpoint table exists if specified --- if ( $opt{checkpoint} ) { eval { $dbh->do( qq{ select time_stamp, src, dest, msg from $opt{checkpoint} where 1 != 1} ); }; die "Error accessing Checkpoint table ($opt{checkpoint}): $@" if ( $@ ); } # --- get variables from database --- my $sth_vars = $dbh->prepare("show variables like 'datadir'"); $sth_vars->execute; while ( my ($var,$value) = $sth_vars->fetchrow_array ) { $mysqld_vars{ $var } = $value; } my $datadir = $mysqld_vars{'datadir'} || die "datadir not in mysqld variables"; $datadir =~ s:/$::; # --- get target path --- my ($tgt_dirname, $to_other_database); $to_other_database=0; if ($tgt_name =~ m:^\w+$: && @db_desc <= 1) { $tgt_dirname = "$datadir/$tgt_name"; $to_other_database=1; } elsif ($tgt_name =~ m:/: || $tgt_name eq '.') { $tgt_dirname = $tgt_name; } elsif ( $opt{suffix} ) { print "copy suffix $opt{suffix}\n" unless $opt{quiet}; } else { die "Target '$tgt_name' doesn't look like a database name or directory path.\n"; } # --- resolve database names from regexp --- if ( defined $opt{regexp} ) { my $sth_dbs = $dbh->prepare("show databases"); $sth_dbs->execute; while ( my ($db_name) = $sth_dbs->fetchrow_array ) { push @db_desc, { 'src' => $db_name } if ( $db_name =~ m/$opt{regexp}/o ); } } # --- get list of tables to hotcopy --- my $hc_locks = ""; my $hc_tables = ""; my $num_tables = 0; my $num_files = 0; foreach my $rdb ( @db_desc ) { my $db = $rdb->{src}; eval { $dbh->do( "use $db" ); }; die "Database '$db' not accessible: $@" if ( $@ ); my @dbh_tables = $dbh->func( '_ListTables' ); ## generate regex for tables/files my $t_regex = $rdb->{t_regex}; ## assign temporary regex my $negated = $t_regex =~ tr/~//d; ## remove and count negation operator: we don't allow ~ in table names $t_regex = qr/$t_regex/; ## make regex string from user regex ## filter (out) tables specified in t_regex print "Filtering tables with '$t_regex'\n" if $opt{debug}; @dbh_tables = ( $negated ? grep { $_ !~ $t_regex } @dbh_tables : grep { $_ =~ $t_regex } @dbh_tables ); ## get list of files to copy my $db_dir = "$datadir/$db"; opendir(DBDIR, $db_dir ) or die "Cannot open dir '$db_dir': $!"; my %db_files; map { ( /(.+)\.\w+$/ ? ( $db_files{$_} = $1 ) : () ) } readdir(DBDIR); unless( keys %db_files ) { warn "'$db' is an empty database\n"; } closedir( DBDIR ); ## filter (out) files specified in t_regex my @db_files = ( $negated ? grep { $db_files{$_} !~ $t_regex } keys %db_files : grep { $db_files{$_} =~ $t_regex } keys %db_files ); @db_files = sort @db_files; my @index_files=(); ## remove indices unless we're told to keep them if ($opt{noindices}) { @index_files= grep { /\.(ISM|MYI)$/ } @db_files; @db_files = grep { not /\.(ISM|MYI)$/ } @db_files; } $rdb->{files} = [ @db_files ]; $rdb->{index} = [ @index_files ]; my @hc_tables = map { "$db.$_" } @dbh_tables; $rdb->{tables} = [ @hc_tables ]; $hc_locks .= ", " if ( length $hc_locks && @hc_tables ); $hc_locks .= join ", ", map { "$_ READ" } @hc_tables; $hc_tables .= ", " if ( length $hc_tables && @hc_tables ); $hc_tables .= join ", ", @hc_tables; $num_tables += scalar @hc_tables; $num_files += scalar @{$rdb->{files}}; } # --- resolve targets for copies --- my @targets = (); if (length $tgt_name ) { # explicit destination directory specified # GNU `cp -r` error message die "copying multiple databases, but last argument ($tgt_dirname) is not a directory\n" if ( @db_desc > 1 && !(-e $tgt_dirname && -d $tgt_dirname ) ); if ($to_other_database) { foreach my $rdb ( @db_desc ) { $rdb->{target} = "$tgt_dirname"; } } elsif ($opt{method} =~ /^scp\b/) { # we have to trust scp to hit the target foreach my $rdb ( @db_desc ) { $rdb->{target} = "$tgt_dirname/$rdb->{src}"; } } else { die "Last argument ($tgt_dirname) is not a directory\n" if (!(-e $tgt_dirname && -d $tgt_dirname ) ); foreach my $rdb ( @db_desc ) { $rdb->{target} = "$tgt_dirname/$rdb->{src}"; } } } else { die "Error: expected \$opt{suffix} to exist" unless ( exists $opt{suffix} ); foreach my $rdb ( @db_desc ) { $rdb->{target} = "$datadir/$rdb->{src}$opt{suffix}"; } } print Dumper( \@db_desc ) if ( $opt{debug} ); # --- bail out if all specified databases are empty --- die "No tables to hot-copy" unless ( length $hc_locks ); # --- create target directories if we are using 'cp' --- my @existing = (); if ($opt{method} =~ /^cp\b/) { foreach my $rdb ( @db_desc ) { push @existing, $rdb->{target} if ( -d $rdb->{target} ); } die "Can't hotcopy to '", join( "','", @existing ), "' because already exist and --allowold option not given.\n" if ( @existing && !$opt{allowold} ); } retire_directory( @existing ) if ( @existing ); foreach my $rdb ( @db_desc ) { my $tgt_dirpath = $rdb->{target}; if ( $opt{dryrun} ) { print "mkdir $tgt_dirpath, 0750\n"; } elsif ($opt{method} =~ /^scp\b/) { ## assume it's there? ## ... } else { mkdir($tgt_dirpath, 0750) or die "Can't create '$tgt_dirpath': $!\n"; } } ############################## # --- PERFORM THE HOT-COPY --- # # Note that we try to keep the time between the LOCK and the UNLOCK # as short as possible, and only start when we know that we should # be able to complete without error. # read lock all the tables we'll be copying # in order to get a consistent snapshot of the database if ( $opt{checkpoint} ) { # convert existing READ lock on checkpoint table into WRITE lock unless ( $hc_locks =~ s/$opt{checkpoint}\s+READ/$opt{checkpoint} WRITE/ ) { $hc_locks .= ", $opt{checkpoint} WRITE"; } } my $hc_started = time; # count from time lock is granted if ( $opt{dryrun} ) { print "LOCK TABLES $hc_locks\n"; print "FLUSH TABLES /*!32323 $hc_tables */\n"; print "FLUSH LOGS\n" if ( $opt{flushlog} ); } else { my $start = time; $dbh->do("LOCK TABLES $hc_locks"); printf "Locked $num_tables tables in %d seconds.\n", time-$start unless $opt{quiet}; $hc_started = time; # count from time lock is granted # flush tables to make on-disk copy uptodate $start = time; $dbh->do("FLUSH TABLES /*!32323 $hc_tables */"); printf "Flushed tables ($hc_tables) in %d seconds.\n", time-$start unless $opt{quiet}; $dbh->do( "FLUSH LOGS" ) if ( $opt{flushlog} ); } my @failed = (); foreach my $rdb ( @db_desc ) { my @files = map { "$datadir/$rdb->{src}/$_" } @{$rdb->{files}}; next unless @files; eval { copy_files($opt{method}, \@files, $rdb->{target} ); }; push @failed, "$rdb->{src} -> $rdb->{target} failed: $@" if ( $@ ); @files = @{$rdb->{index}}; if ($rdb->{index}) { copy_index($opt{method}, \@files, "$datadir/$rdb->{src}", $rdb->{target} ); } if ( $opt{checkpoint} ) { my $msg = ( $@ ) ? "Failed: $@" : "Succeeded"; eval { $dbh->do( qq{ insert into $opt{checkpoint} (src, dest, msg) VALUES ( '$rdb->{src}', '$rdb->{target}', '$msg' ) } ); }; if ( $@ ) { warn "Failed to update checkpoint table: $@\n"; } } } if ( $opt{dryrun} ) { print "UNLOCK TABLES\n"; if ( @existing && !$opt{keepold} ) { my @oldies = map { $_ . '_old' } @existing; print "rm -rf @oldies\n" } $dbh->disconnect(); exit(0); } else { $dbh->do("UNLOCK TABLES"); } my $hc_dur = time - $hc_started; printf "Unlocked tables.\n" unless $opt{quiet}; # # --- HOT-COPY COMPLETE --- ########################### $dbh->disconnect; if ( @failed ) { # hotcopy failed - cleanup # delete any @targets # rename _old copy back to original print "Deleting @targets \n" if $opt{debug}; rmtree([@targets]); if (@existing) { print "Restoring @existing from back-up\n" if $opt{debug}; foreach my $dir ( @existing ) { rename("${dir}_old", $dir ) or warn "Can't rename ${dir}_old to $dir: $!\n"; } } die join( "\n", @failed ); } else { # hotcopy worked # delete _old unless $opt{keepold} if ( @existing && !$opt{keepold} ) { my @oldies = map { $_ . '_old' } @existing; print "Deleting previous copy in @oldies\n" if $opt{debug}; rmtree([@oldies]); } printf "$0 copied %d tables (%d files) in %d second%s (%d seconds overall).\n", $num_tables, $num_files, $hc_dur, ($hc_dur==1)?"":"s", time - $start_time unless $opt{quiet}; } exit 0; # --- sub copy_files { my ($method, $files, $target) = @_; my @cmd; print "Copying ".@$files." files...\n" unless $opt{quiet}; if ($method =~ /^s?cp\b/) { # cp or scp with optional flags @cmd = ($method); # add option to preserve mod time etc of copied files # not critical, but nice to have push @cmd, "-p" if $^O =~ m/^(solaris|linux|freebsd)$/; # add recursive option for scp push @cmd, "-r" if $^O =~ /m^(solaris|linux|freebsd)$/ && $method =~ /^scp\b/; # add files to copy and the destination directory push @cmd, @$files, $target; } else { die "Can't use unsupported method '$method'\n"; } safe_system (@cmd); } # # Copy only the header of the index file # sub copy_index { my ($method, $files, $source, $target) = @_; my $tmpfile="$opt_tmpdir/mysqlhotcopy$$"; print "Copying indices for ".@$files." files...\n" unless $opt{quiet}; foreach my $file (@$files) { my $from="$source/$file"; my $to="$target/$file"; my $buff; open(INPUT, "<$from") || die "Can't open file $from: $!\n"; my $length=read INPUT, $buff, 2048; die "Can't read index header from $from\n" if ($length < 1024); close INPUT; if ( $opt{dryrun} ) { print "$opt{method}-header $from $to\n"; } elsif ($opt{method} eq 'cp') { open(OUTPUT,">$to") || die "Can\'t create file $to: $!\n"; if (syswrite(OUTPUT,$buff) != length($buff)) { die "Error when writing data to $to: $!\n"; } close OUTPUT || die "Error on close of $to: $!\n"; } elsif ($opt{method} eq 'scp') { my $tmp=$tmpfile; open(OUTPUT,">$tmp") || die "Can\'t create file $tmp: $!\n"; if (syswrite(OUTPUT,$buff) != length($buff)) { die "Error when writing data to $tmp: $!\n"; } close OUTPUT || die "Error on close of $tmp: $!\n"; safe_system("scp $tmp $to"); } else { die "Can't use unsupported method '$opt{method}'\n"; } } unlink "$tmpfile" if ($opt{method} eq 'scp'); } sub safe_system { my @cmd= @_; if ( $opt{dryrun} ) { print "@cmd\n"; return; } ## for some reason system fails but backticks works ok for scp... print "Executing '@cmd'\n" if $opt{debug}; my $cp_status = system "@cmd > /dev/null"; if ($cp_status != 0) { warn "Burp ('scuse me). Trying backtick execution...\n" if $opt{debug}; #' ## try something else `@cmd` && die "Error: @cmd failed ($cp_status) while copying files.\n"; } } sub retire_directory { my ( @dir ) = @_; foreach my $dir ( @dir ) { my $tgt_oldpath = $dir . '_old'; if ( $opt{dryrun} ) { print "rmtree $tgt_oldpath\n" if ( -d $tgt_oldpath ); print "rename $dir, $tgt_oldpath\n"; next; } if ( -d $tgt_oldpath ) { print "Deleting previous 'old' hotcopy directory ('$tgt_oldpath')\n" unless $opt{quiet}; rmtree([$tgt_oldpath]) } rename($dir, $tgt_oldpath) or die "Can't rename $dir=>$tgt_oldpath: $!\n"; print "Existing hotcopy directory renamed to '$tgt_oldpath'\n" unless $opt{quiet}; } } __END__ =head1 DESCRIPTION mysqlhotcopy is designed to make stable copies of live MySQL databases. Here "live" means that the database server is running and the database may be in active use. And "stable" means that the copy will not have any corruptions that could occur if the table files were simply copied without first being locked and flushed from within the server. =head1 OPTIONS =over 4 =item --checkpoint checkpoint-table As each database is copied, an entry is written to the specified checkpoint-table. This has the happy side-effect of updating the MySQL update-log (if it is switched on) giving a good indication of where roll-forward should begin for backup+rollforward schemes. The name of the checkpoint table should be supplied in database.table format. The checkpoint-table must contain at least the following fields: =over 4 time_stamp timestamp not null src varchar(32) dest varchar(60) msg varchar(255) =back =item --suffix suffix Each database is copied back into the originating datadir under a new name. The new name is the original name with the suffix appended. If only a single db_name is supplied and the --suffix flag is not supplied, then "--suffix=_copy" is assumed. =item --allowold Move any existing version of the destination to a backup directory for the duration of the copy. If the copy successfully completes, the backup directory is deleted - unless the --keepold flag is set. If the copy fails, the backup directory is restored. The backup directory name is the original name with "_old" appended. Any existing versions of the backup directory are deleted. =item --keepold Behaves as for the --allowold, with the additional feature of keeping the backup directory after the copy successfully completes. =item --flushlog Rotate the log files by executing "FLUSH LOGS" after all tables are locked, and before they are copied. =item --regexp pattern Copy all databases with names matching the pattern =item db_name./pattern/ Copy only tables matching pattern. Shell metacharacters ( (, ), |, !, etc.) have to be escaped (e.g. \). For example, to select all tables in database db1 whose names begin with 'foo' or 'bar': mysqlhotcopy --indices --method=cp db1./^\(foo\|bar\)/ =item db_name./~pattern/ Copy only tables not matching pattern. For example, to copy tables that do not begin with foo nor bar: mysqlhotcopy --indices --method=cp db1./~^\(foo\|bar\)/ =item -?, --help Display helpscreen and exit =item -u, --user=# user for database login if not current user =item -p, --password=# password to use when connecting to server =item -P, --port=# port to use when connecting to local server =item -S, --socket=# UNIX domain socket to use when connecting to local server =item --noindices Don\'t include index files in copy. Only up to the first 2048 bytes are copied; You can restore the indexes with isamchk -r or myisamchk -r on the backup. =item --method=# method for copy (only "cp" currently supported). Alpha support for "scp" was added in November 2000. Your experience with the scp method will vary with your ability to understand how scp works. 'man scp' and 'man ssh' are your friends. The destination directory _must exist_ on the target machine using the scp method. --keepold and --allowold are meeningless with scp. Liberal use of the --debug option will help you figure out what\'s really going on when you do an scp. Note that using scp will lock your tables for a _long_ time unless your network connection is _fast_. If this is unacceptable to you, use the 'cp' method to copy the tables to some temporary area and then scp or rsync the files at your leisure. =item -q, --quiet be silent except for errors =item --debug Debug messages are displayed =item -n, --dryrun Display commands without actually doing them =back =head1 WARRANTY This software is free and comes without warranty of any kind. You should never trust backup software without studying the code yourself. Study the code inside this script and only rely on it if I believe that it does the right thing for you. Patches adding bug fixes, documentation and new features are welcome. =head1 TO DO Extend the individual table copy to allow multiple subsets of tables to be specified on the command line: mysqlhotcopy db newdb t1 t2 /^foo_/ : t3 /^bar_/ : + where ":" delimits the subsets, the /^foo_/ indicates all tables with names begining with "foo_" and the "+" indicates all tables not copied by the previous subsets. newdb is either another not existing database or a full path to a directory where we can create a directory 'db' Add option to lock each table in turn for people who don't need cross-table integrity. Add option to FLUSH STATUS just before UNLOCK TABLES. Add support for other copy methods (eg tar to single file?). Add support for forthcoming MySQL ``RAID'' table subdirectory layouts. =head1 AUTHOR Tim Bunce Martin Waite - added checkpoint, flushlog, regexp and dryrun options Ralph Corderoy - added synonyms for commands Scott Wiersdorf - added table regex and scp support Monty - working --noindex (copy only first 2048 bytes of index file) Fixes for --method=scp Ask Bjoern Hansen - Cleanup code to fix a few bugs and enable -w again. of th kêÎÛßàí�Øv”·:ðŽ·:ðŽ·:!#ÄéØ./usr/local/bin/select_testwsó/í�#! /bin/sh # select_test - temporary wrapper script for .libs/select_test # Generated by ltmain.sh - GNU libtool 1.3.5a (1.385.2.206 2000/05/27 11:12:27) # # The select_test program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "${CDPATH+set}" = set; then CDPATH=:; export CDPATH; fi relink_command="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 -O -DDBUG_OFF -I /usr/local/include -DHAVE_INT_8_16_32 -Wa,-many -DUNDEF_HAVE_INITGROUPS -L/usr/local/lib -o \$progdir/\$file select_test.o -L../libmysql/.libs -lmysqlclient -lz -lcrypt -lm -lz -lcrypt -lm -Wl,-bnolibpath -Wl,-blibpath:/ii/po/mysql-3.23.35/libmysql/.libs:/usr/local/lib/mysql:/usr/lib:/lib" # This environment variable determines our operation mode. if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then # install mode needs the following variable: link_against_libtool_libs=' ../libmysql/libmysqlclient.la' else # When we are sourced in execute mode, $file and $echo are already set. if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then echo="print -r" file="$0" # Make sure echo works. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec /bin/sh "$0" --no-reexec ${1+"$@"} fi fi # Find the directory that this script lives in. thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "x$thisdir" = "x$file" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=`ls -ld "$file" | sed -n 's/.*-> //p'` while test -n "$file"; do destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` # If there was a directory component, then change thisdir. if test "x$destdir" != "x$file"; then case "$destdir" in [\/]* | [A-Za-z]:[\/]*) thisdir="$destdir" ;; *) thisdir="$thisdir/$destdir" ;; esac fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` file=`ls -ld "$thisdir/$file" | sed -n 's/.*-> //p'` done # Try to get the absolute directory name. absdir=`cd "$thisdir" && pwd` test -n "$absdir" && thisdir="$absdir" program=lt-'select_test' progdir="$thisdir/.libs" if test ! -f "$progdir/$program" || \ { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | sed 1q`; \ test "X$file" != "X$progdir/$program"; }; then file="$$-$program" if test ! -d "$progdir"; then mkdir "$progdir" else rm -f "$progdir/$file" fi # relink executable if necessary if test -n "$relink_command"; then if (cd "$thisdir" && eval $relink_command); then : else rm -f "$progdir/$file" exit 1 fi fi mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || { rm -f "$progdir/$program"; mv -f "$progdir/$file" "$progdir/$program"; } rm -f "$progdir/$file" fi if test -f "$progdir/$program"; then if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then # Run the actual program with our arguments. # Export the path to the program. PATH="$progdir:$PATH" export PATH exec $program ${1+"$@"} $echo "$0: cannot exec $program ${1+"$@"}" exit 1 fi else # The program doesn't exist. $echo "$0: error: $progdir/$program does not exist" 1>&2 $echo "This script is just a wrapper for $program." 1>&2 echo "See the libtool documentation for more information." 1>&2 exit 1 fi fi kê&Rààí�Øv”·:ðŽ·:ðŽ·:!#êØ./usr/local/bin/thread_testwsó/í�#! /bin/sh # thread_test - temporary wrapper script for .libs/thread_test # Generated by ltmain.sh - GNU libtool 1.3.5a (1.385.2.206 2000/05/27 11:12:27) # # The thread_test program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "${CDPATH+set}" = set; then CDPATH=:; export CDPATH; fi relink_command="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 -O -DDBUG_OFF -I /usr/local/include -DHAVE_INT_8_16_32 -Wa,-many -DUNDEF_HAVE_INITGROUPS -L/usr/local/lib -o \$progdir/\$file thread_test.o -L../libmysql/.libs -lmysqlclient -lz -lcrypt -lm -lz -lcrypt -lm -Wl,-bnolibpath -Wl,-blibpath:/ii/po/mysql-3.23.35/libmysql/.libs:/usr/local/lib/mysql:/usr/lib:/lib" # This environment variable determines our operation mode. if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then # install mode needs the following variable: link_against_libtool_libs=' ../libmysql/libmysqlclient.la' else # When we are sourced in execute mode, $file and $echo are already set. if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then echo="print -r" file="$0" # Make sure echo works. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec /bin/sh "$0" --no-reexec ${1+"$@"} fi fi # Find the directory that this script lives in. thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "x$thisdir" = "x$file" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=`ls -ld "$file" | sed -n 's/.*-> //p'` while test -n "$file"; do destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` # If there was a directory component, then change thisdir. if test "x$destdir" != "x$file"; then case "$destdir" in [\/]* | [A-Za-z]:[\/]*) thisdir="$destdir" ;; *) thisdir="$thisdir/$destdir" ;; esac fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` file=`ls -ld "$thisdir/$file" | sed -n 's/.*-> //p'` done # Try to get the absolute directory name. absdir=`cd "$thisdir" && pwd` test -n "$absdir" && thisdir="$absdir" program=lt-'thread_test' progdir="$thisdir/.libs" if test ! -f "$progdir/$program" || \ { file=`ls -1dt "$progdir/$program" "$progdir/../$program" 2>/dev/null | sed 1q`; \ test "X$file" != "X$progdir/$program"; }; then file="$$-$program" if test ! -d "$progdir"; then mkdir "$progdir" else rm -f "$progdir/$file" fi # relink executable if necessary if test -n "$relink_command"; then if (cd "$thisdir" && eval $relink_command); then : else rm -f "$progdir/$file" exit 1 fi fi mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null || { rm -f "$progdir/$program"; mv -f "$progdir/$file" "$progdir/$program"; } rm -f "$progdir/$file" fi if test -f "$progdir/$program"; then if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then # Run the actual program with our arguments. # Export the path to the program. PATH="$progdir:$PATH" export PATH exec $program ${1+"$@"} $echo "$0: cannot exec $program ${1+"$@"}" exit 1 fi else # The program doesn't exist. $echo "$0: error: $progdir/$program does not exist" 1>&2 $echo "This script is just a wrapper for $program." 1>&2 echo "See the libtool documentation for more information." 1>&2 exit 1 fi fi kê kÞàí�Ñv”·:ˆ�·:‰�·:!#ùéÑ./usr/local/bin/mysqldumpslowsó/í�#!/usr/bin/perl # mysqldumpslow - parse and summarize the MySQL slow query log # Original version by Tim Bunce, sometime in 2000. # Further changes by Tim Bunce, 8th March 2001. use strict; use Getopt::Long; # t=time, l=lock time, r=rows # at, al, and ar are the corresponding averages my %opt = ( s => 'at', h => '*', ); GetOptions(\%opt, 'v+', # verbose 'd+', # debug 's=s', # what to sort by (t, at, l, al, r, ar etc) 'r!', # reverse the sort order (largest last instead of first) 't=i', # just show the top n queries 'a!', # don't abstract all numbers to N and strings to 'S' 'n=i', # abstract numbers with at least n digits within names 'g=s', # grep: only consider stmts that include this string 'h=s', # hostname of db server for *-slow.log filename (can be wildcard) 'i=s', # name of server instance (if using mysql.server startup script) 'l!', # don't subtract lock time from total time ) or die "Bad option"; unless (@ARGV) { my $defaults = `my_print_defaults mysqld`; my $basedir = ($defaults =~ m/--basedir=(.*)/)[0] or die "Can't determine basedir from 'my_print_defaults mysqld' output: $defaults"; warn "basedir=$basedir\n" if $opt{v}; my $datadir = ($defaults =~ m/--datadir=(.*)/)[0]; if (!$datadir or $opt{i}) { # determine the datadir from the instances section of /etc/my.cnf, if any my $instances = `my_print_defaults instances`; die "Can't determine datadir from 'my_print_defaults mysqld' output: $defaults" unless $instances; my @instances = ($instances =~ m/^--(\w+)-/mg); die "No -i 'instance_name' specified to select among known instances: @instances.\n" unless $opt{i}; die "Instance '$opt{i}' is unknown (known instances: @instances)\n" unless grep { $_ eq $opt{i} } @instances; $datadir = ($instances =~ m/--$opt{i}-datadir=(.*)/)[0] or die "Can't determine --$opt{i}-datadir from 'my_print_defaults instances' output: $instances"; warn "datadir=$datadir\n" if $opt{v}; } @ARGV = <$datadir/$opt{h}-slow.log>; die "Can't find '$datadir/$opt{h}-slow.log'\n" unless @ARGV; } warn "\nReading mysql slow query log from @ARGV\n"; my @pending; my %stmt; $/ = ";\n#"; # read entire statements using paragraph mode while ( defined($_ = shift @pending) or defined($_ = <>) ) { warn "[[$_]]\n" if $opt{d}; # show raw paragraph being read my @chunks = split /^\/.*Version.*started with[\000-\377]*?Time.*Id.*Command.*Argument.*\n/m; if (@chunks > 1) { unshift @pending, map { length($_) ? $_ : () } @chunks; warn "<<".join(">>\n<<",@chunks).">>" if $opt{d}; next; } s/^#? Time: \d{6}\s+\d+:\d+:\d+.*\n//; my ($user,$host) = s/^#? User\@Host:\s+(\S+)\s+\@\s+(\S+).*\n// ? ($1,$2) : ('',''); s/^# Time: (\d+) Lock_time: (\d+) Rows_sent: (\d+).*\n//; my ($t, $l, $r) = ($1, $2, $3); $t -= $l unless $opt{l}; # remove fluff that mysqld writes to log when it (re)starts: s!^/.*Version.*started with:.*\n!!mg; s!^Tcp port: \d+ Unix socket: \S+\n!!mg; s!^Time.*Id.*Command.*Argument.*\n!!mg; s/^use \w+;\n//; # not consistently added s/^SET timestamp=\d+;\n//; s/^[ ]*\n//mg; # delete blank lines s/^[ ]*/ /mg; # normalize leading whitespace s/\s*;\s*(#\s*)?$//; # remove trailing semicolon(+newline-hash) next if $opt{g} and !m/$opt{g}/io; unless ($opt{a}) { s/\b\d+\b/N/g; s/\b0x[0-9A-Fa-f]+\b/N/g; s/'.*?'/'S'/g; s/".*?"/"S"/g; # -n=8: turn log_20001231 into log_NNNNNNNN s/([a-z_]+)(\d{$opt{n},})/$1.('N' x length($2))/ieg if $opt{n}; # abbreviate massive "in (...)" statements and similar s!(([NS],){100,})!sprintf("$2,{repeated %d times}",length($1)/2)!eg; } my $s = $stmt{$_} ||= { users=>{}, hosts=>{} }; $s->{c} += 1; $s->{t} += $t; $s->{l} += $l; $s->{r} += $r; $s->{users}->{$user}++ if $user; $s->{hosts}->{$host}++ if $host; warn "{{$_}}\n\n" if $opt{d}; # show processed statement string } foreach (keys %stmt) { my $v = $stmt{$_} || die; my ($c, $t, $l, $r) = @{ $v }{qw(c t l r)}; $v->{at} = $t / $c; $v->{al} = $l / $c; $v->{ar} = $r / $c; } my @sorted = sort { $stmt{$b}->{$opt{s}} <=> $stmt{$a}->{$opt{s}} } keys %stmt; @sorted = @sorted[0 .. $opt{t}-1] if $opt{t}; @sorted = reverse @sorted if $opt{r}; foreach (@sorted) { my $v = $stmt{$_} || die; my ($c, $t,$at, $l,$al, $r,$ar) = @{ $v }{qw(c t at l al r ar)}; my @users = keys %{$v->{users}}; my $user = (@users==1) ? $users[0] : sprintf "%dusers",scalar @users; my @hosts = keys %{$v->{hosts}}; my $host = (@hosts==1) ? $hosts[0] : sprintf "%dhosts",scalar @hosts; printf "Count: %d Time=%.2fs (%ds) Lock=%.2fs (%ds) Rows=%.1f (%d), $user\@$host\n%s\n\n", $c, $at,$t, $al,$l, $ar,$r, $_; } that i kêrMÔàí�×õv”·:‚�·:‚�·:!#Ùê×õ./usr/local/bin/mysqltestlowsó/í�ß:·Œ—¦ˆÓH u@ˆæ˜ ( h ,1L.text((u@(�Vé .data h hˆvh pœ@.bss ð ð昀.loaderfzð‚"$|nx|�#x|°+x|ø‘‘â‚1�B(9 e)-‘*@‚H‘`Hƒâƒ8:#ø‚B|�y‚b€:”à|µª’“’2| ¦€b„|£ª8c Bÿø�£8zÐ8P�—��w€bˆ8€8À8 HMÉ€A‚�:ºP|¶ª|µª8zp:Ú°|£ª8z�8Ð|£ª|¶ª8›ä’· �b8 <ÀHM¥€A€aDcH ù€w€,@‚ €˜�€—;€y“HM‘€A,@‚ 8{lH2‰8{„8€HM™€A�y,�kð@‚8{ äH2a�y‚âT€b¤€‚¨€¢¬�#€×€÷€„€¥�ac9@HMm€A,@‚€yHM�€A`d8{ŒH28a@H9,@‚Œ‚¸‚¢¼‚‚À€a@c:@€8,A‚ ,@‚HÉ€,A‚Øc€a@`d€Ã88ÿÿ(Tz|»€°|A�´|¦N€ H!Hœ: ,@‚: ,A‚ c;€ˆD,A‚ 8d88�DHLÙ€A€�@›ÁD›¤ €yb%HÙ|ûxH@HÍH8H"¹H0H*EH(H)éH H+UHHEQHH$�HH(…,@‚@:`€a@€8, ,€ A‚(A† c€8a@|š�H åHH�€8a@|š�H É,@‚€a@c:@€8,Kÿþœ€bÈ€ƒ,A‚D€°,A‚8€,,@‚€¡@bˆ¥ H-}|ûxH€`ƒ`H5bHKÑ€A€$.,@‚$A’8{HKÙ€AH8{ HKÉ€AH0‘A’ cH8`HKÕ€AA’�c��”€˜8!�|¦}€� ºÿÀN€ HIKÿþüH'ÁKÿþ°8aDH �; Kÿþ 8aDH qcKÿþ�H$µKÿþˆH%ÅKÿþ€8z(HqKÿþtcKÿþlHiKÿþd€yHKq€AKÿþT;c��”€˜8!�|¦}€� ºÿÀN€ €¿Áÿø|¦`€�”!ÿÀˆ,}@‚8 �8ƒá<8!@N€ €8,A‚ 8�8€ß8€‚Ü8 Ã0®|1®€HJñ€A,€Ÿ€¿Ä)®A‚�8��H8!@»Áÿø}ˆ¦N€ €œ|¦¾AÿÈ�`Ÿˆ8}€&;ÀcÝ,‘�”!ÿ`�aP`ºc¼A‚(€‚L;a@cc8 @8„ä<ÀHHÉ€AHƒb�@ N@“Hƒ_cCHJ]€A`e€aPcDHJq€A,A‚€‚p€bL€¿8c (€„ H-¡A’$��¤€¨8! cÃ|¦}€� »AÿèN€ €aPHJI€A,A‚dˆ ,@‚,åMï{‚ˆ ,A‚T€‚pƒ¿€aPƒD HJ5€A�aT€aPHH•€A`g€bLcDc¥8c P€ÁTH- €¿,A‚(€bL;€€Ÿ8c xH+µ8a@|@@‚ÄH¸€aPHIõ€A|}y@‚d€aPHJ €A,A‚Pˆ ,@‚,-Mï{‚ˆ ƒ_,A‚l€‚p€aPƒ$ HI}€A`f€bLc$cE8c ´H,e.A’0c£HIÉ€A`yc£HIá€A|zycØ@�D;9ÿà‚âL,A‚cc8— ò8 HIÙ€A„™ ccHIñ€A;|ÐA€ÿÌccƒ"L8 8™ŽHI¥€Ac£HIé€A|uyA‚4,@�ø‚âpƒc£HIí€AcÖ:Cÿü:µÿü†u†’,@‚ :yl:€,A‚cc8™ ò8 HI5€A€x,A‚,8—€¢pbfH1m`t,ÿÿ@‚ 8y ôH+=‚wccbdb…HHí€A:Ö|Ð@€†u†’,Kÿÿxcc8™Ž8 HH½€Ac£HI€A|uy@‚ÿ,€b€,A‚PHHc£HI€Acc8™Ž8 HHu€Ac£HH¹€A,@‚ÿЀb€,A‚HU€bTˆ8,€€c,,A‚ƒÂÈ€,@† @‚€‚p8y €„ H*I€,@‚€›€»88HEHì€aPHG€A`e€bLcD8c 0H(Õ;€.HÀƒ_,A‚,;?€aPHFá€A|@A‚¬;Þ‡Y,@‚ÿà,~ƒ_A‚,€aPHF­€A€âL`e€ßcD8g dH(aHT€aPHF…€A�aX€aPHDå€A`f€bLcD€¡X8c œH()HA†ˆ¿ 8Ÿ8ccH&�`|A’c£HG™€A8a@|@@‚ HDÝ€Acƒ��¤€¨8! |¦}€� ºAÿÈN€ €X“áÿü|¦�”!ÿ°��@�¡D�aH8 8€HGQ€A|y@€ HGi€A€£€bL€�H8c�H(�cã€�@€¡D8ÀHGe€A,A‚€bL8c°H(qcã8€HGi€A��X8!Pƒáÿü}ˆ¦N€ € 8Àˆ,A‚D4¥ÿÿ@�<|©¦8£ÿÿœŒ8c,BHA‚œŒ8c,Bÿì˜ÃN€ X¾�ÿÐ|¦ƒâT; ƒÂL�”!ÿ€8�a˜��œ�@8Áœ8¡˜8Ÿ8~,HFÁ€A€�œƒp€a˜8¾0�˜€Â08á@HFÅ€A,ÿÿA‚,ƒ‚¬ƒb¨ƒB¤ƒ"È‚‚8?‚âÀ:Àx: 8ÿ˜(Tº|ž€L|ºA�Ô| ¦N€ €�H˜€,A‚p€H@‘€A€t8€HB €A�€”ˆ,A‚\šÄ€t8ƒ�”ˆ,A‚ šÄ€t8ƒ�”ˆ,KÿÿäH ; H’¿$H’¿,H€”8xÐ8 HEí€AHð€�Hä’¿(HÜ,R/ƒ#,ƒSA‚�A�T,?,ƒD/PAž¸A‚”A†0@šœ€tHEÁ€A�€a˜€�œ8¾0€Â08á@H˜€�Hx/T,VA†$Aš A‚4HP€tHEu€A� HL€�H@€�H4H‘8`HA­€AHõ8`HA�€AHå8`HA�€A€a˜€�œ8¾0€Â08á@HD¹€A,ÿÿA‚ 8ÿ˜(Tº|ž€L|ºKÿþ€˜€bD€�œ€c|,�˜T`:|�œ@�Hi8`HA€A€˜,@‚€aœ€�,A‚8`HD¥€A�8`��ˆ8!€º�ÿÐ}ˆ¦N€ € “áÿü|¦�”!ÿÀH}ƒâL8¼H@m€A8àH@a€A8H@U€A€‚h8d€„H@A€A8�H@5€A8ÌH@)€A��H8!@ƒáÿü}ˆ¦N€ €|€bh�L”!ÿÀ|¦€ƒ8ht8Èœ8¨˜�H8è¤9´H?Ñ€A��H8!@}ˆ¦N€ €D¿aÿì|¦ƒâ¸}€&ƒÂp�€€¿‘�`|”!ÿ |;¾$@€,€bˆc„HCy€A��h8!`»�ÿð}ˆ¦8`N€ 8`<8€H=±€A,�a@�|A‚€bˆ8�@HCY€A,A‚ 8`H#)€a@=^;€9j(ƒbL›ƒ |«¤ª›ƒ89ƒ“ƒ8c$|¬¥ª9Š<<€|¬¤ª|£¥ª€ (8{ \|£¤ª€a@|49@TÙ~|«¥ª|¬¥ª˜ ‘C8“ƒc£H©,A‚��h8!`»aÿì}ˆ¦8`N€ ˆž$,#@‚8@€¡@|� 8�8HÜ,-@‚,ˆ%,-@‚ ˆž&€¡@8;¾&�8.H¬,!@‚”ˆž%€¡@;¾%›… ,$@‚|€ÂTˆž&8;¾&€Æ€æ|Ç"ˆÆpÆA‚L8çc¦;½ }Œ†8ÿÐ} ®qA‚$;½ }Œ†8ÿÐ} ®qKÿÿà�“….A’T€¢T€¥€Å|¦"ˆpA‚88Æc¥;½Œ….A’ | ®pA‚;½Œ….Kÿÿä,@@‚´€‚Tc¥ˆ¥�@€ä;½8È8€ç8ç|(®p@‚x87|@@€lc©8è7œ§�Œ©8Æ�;½9|(®p@‚<�@87|@@€,œ§�Œ©8Æ�;½9|(®pKÿÿÈ›†ˆ�.A’T€¢T€¥€¥|…"ˆpA‚88…c¦;½Œ¦,A‚ |(®pA‚;½Œ¦,Kÿÿäc£8€H;Q€A€�@|`y�d@‚8`H €�@€d`eˆ,A‚T€ÂT€Æ€Æ|æˆp@‚88Æ`h8¥Œè,A‚ |8®p@‚8¥Œè,Kÿÿä|(�ˆ,A‚T€ÂT€Æ€Æ|æˆpA‚88Æ`¨8¥Œè,A‚ |8®pA‚8¥Œè,Kÿÿä�¤€Ÿ8`8���d€h8!`|¦}€� »aÿìN€ €¬¾AÿÈ`~|¦|~"ƒâp;£ÿÿ}€&€~è@‘��”!ÿ�€cÜ;`;@€� @�¸<Ÿƒ"˜ƒT:þÿÿ‚ÂL‚¢À:„:`€cH>Ý€A`r€€cH>ñ€A,A‚L€Ÿ€d|È@A‚8€H>õ€A€Ÿ| @A‚8dÿü€¿�8ÿü�H 8`H8(W@º|v€H|A�è| ¦N€ ,;A‚T,'@‚;@,€@‚ØHÈ,"A‚°, @‚¬;@€Ÿ€d8�,€@‚¤H”›|8`H´,'@‚;@,€@‚|Hl,\@‚X;@,€@‚`HP,;A‚ÿ¸,'A‚ÿh;@H,,"@‚;@,€@‚,H,\@‚;@,€@‚H, @‚ì8`€¿›|€…8���t€x8!p|¦}€� H,#A‚ ,-@‚;@,€@‚´H¤€xVD>€c8c| ®pA‚(, @‚€Ÿ€d8�� :`HX,}A‚(,;A‚þÄ,{A‚þ¼;@,€@‚HH88}›~˜8`HP,;A‚þŒ,"@‚ÿÌ;@,€@‚;œ~è@žW@�:`€cKÿýt›|€cH|8®pBÿäA‚ œh8„8€ax˜€�P€¡pHE€‚,�dA‚H%,A‚€�8 H98apHm8aHHe€a”H+µ€A��¸8!°»¡ÿô}ˆ¦N€ €Ü¿�ÿð`Ÿ€Ÿ|¦`~ƒ¾‰d�”!ÿ°, "`œA‚ , '@‚a`;œ‰dH8 }d[yA‚8À8à 9 9 9@ ,\@‚¸ˆ|,A‚¬cƒˆc;œ,n/Z,ƒrA‚„A�<,bAš(@‚<˜Ý;½cƒ‰c;œ}d[y@‚ÿ¨H ™=;½H€,tA†4A‚$˜};½cƒ‰c;œ}d[y@‚ÿpHh˜ý;½HH™;½H<™];½H0|@‚ , A‚4cƒ‰c;œ|X@‚ ˜�;½cƒ‰c;œ}d[y@‚ÿ, A‚ , A‚€…€bL8c  Hu‰|€bT€c€c|ƒZˆpA‚48cc…;œŒ…| ®pA‚;œŒ…| ®pKÿÿì8`8˜}�“Ÿ��X8!P»�ÿð}ˆ¦N€ €ü¿¡ÿô|¦ƒÄ`�ˆ”!ÿ°,@‚€„€bL8c ÀH¹? €cÃ8€ < €8á@8ÝÿÿH2 €A,A‚\;ßÿü€@;ÿ”ˆ,,@‚@8c8€ < €8Ýÿÿ8á@H1É€A,A‚€@;ÿ”ˆ,,KÿÿÄ8���X8!P»¡ÿô}ˆ¦N€ €пÁÿø|¦ƒÄ8 `�”!ÿÀcÄH.e€A|ø@@�T€bTˆÿÿ€c€c|ƒˆpA‚48c8¾ÿÿ;Þÿÿ|ø@@� Œ…ÿÿ| ®pA‚;Þÿÿ|ø@Kÿÿä8˜��H8!@»Áÿø}ˆ¦N€ €œ¿Áÿø|¦ƒã<`;ÃB@�ˆ”!ÿ°,€A†X€bT€c€c|ƒˆpA‚88ccå;ÿŒ…,„A†$| ®pA‚;ÿŒ…,„Kÿÿä@†€bL8c 0H Ù8€bT�D€c ,ƒA†0�a@8á@|ñÖ8`�D8€8 8ÀH01€AHcãH-1€A�a@ˆ,,€.A‚dA†h€‚T€„€„|¤ˆp@‚D8„cæ;ÿŒ¦,,….A‚(A†Ð|(®p@‚;ÿŒ¦,,….KÿÿÜ€D@†p8Ÿ8¿€D|„(@A…\8€< ff|‰¦ŒŸ8„ÿÐp†ÿ,† @„H±|}yA‚x,@‚Mï{‚,�,A†@A‚(€bL8cHicƒ��h8!`»�ÿð}ˆ¦HL€bL8cHH;€H€bL8c`Hý;€€Ÿ€¿€a@HÕcƒ��h8!`»�ÿð}ˆ¦N€ €¸€‚TTf>€„€| 2ˆpA‚ 8cÿÐN€ €d |c0®,aA€,fA� 8cÿ©N€ 8`ÿÿN€ P€¢L€b˜¿Áÿø€‚¸8;à;Å \|¾ª˜£“ä| ¦“ä8c|£ª8c Bÿø|£}ª»ÁÿøN€ L|¦�bT¿¡ÿô�”!ÿ°€ (�ah��l�¡p,�Át�áx‘|‘A„‘!€A‚h€‚h€bpƒâ˜ƒÂL€Ã €¤;¡h8@8žÈH&u€A€�h8@8½H&‰€A8@8žŽH&Q€A��X8!P»¡ÿô}ˆ¦N€ 8!PN€ €¬|¦“áÿü€b˜ƒâL�”!ÿÀ8ŸÜ8c@H%ý€A€bT€$,@‚8H!€AHé8`H9€A��H8!@ƒáÿü}ˆ¦N€ €h|¦,¿¡ÿô�”!ÿ°�ah��l�¡p�Át�áx‘|‘!€;áh‘A„A‚Hƒ¢L€bhƒÂ˜€£8�ˆ8~@H%Q€A€�h8~@8¿H%e€A8~@8�ŽH%-€AH58`H…€A��X8!P»¡ÿô}ˆ¦N€ €¤|¦¿�ÿð�”!ÿ°HQHÉ;àƒÂˆ€,A‚Lcýƒž||è.€cH¥€A||è.H™€A€;ÿ;½|@@€ƒž||è.€cKÿÿÌcÃH$É€A€b�H…€A€bT€cHM€A€bp€cH$Å€A8`H$á€A��X8!P»�ÿð}ˆ¦N€ €Ì¿¡ÿô|¦ƒÂpƒâ˜�<~”!ÿ°€ž;£€d|ø@A‚8€HÑ€A€ž| (8„ÿü�žA‚€d|ø@KÿÿÐ��X8!P»¡ÿô}ˆ¦N€ €t¿ÁÿøƒÂ||¦ƒât€~�”!ÿÀ8cþ|ø@�~A€DH$-€A€~€cðHE€A€~8cþ|ø@�~@€ÿØ��H8!@»Áÿø}ˆ¦N€ »Á88!@N€ €x|¦€bp”!ÿÀ€c�HHå€A��H8!@}ˆ¦N€ €,|¦“áÿüƒâp8€�8 8` ”!ÿÀ�HY€A�,8`A‚8`��H8!@ƒáÿü}ˆ¦N€ €T|¦¿Áÿø�`~”!ÿÀ€,A‚<;à€~“þH-€A“þ€~ H€A��H8!@»Áÿø}ˆ¦N€ ƒÁ88!@N€ €d|¦¿¡ÿô�`€”!ÿ°��@,@‚¤8`õ8€Hy€A�|`y@‚��X8!Pƒáÿü8`ÿÿ}ˆ¦N€ 8`ø8€HE€A� €€ ,@‚$Hi€A��X8!P8`ÿÿƒáÿü}ˆ¦N€ 818cÄ8€8 ø8À���Ÿ�ß�¿ €a@H €A€Ÿ €;£|ê| @A€€€ 8„8 H‰€A,@‚8`��X8!P»¡ÿô}ˆ¦N€ € |@A‚4|€Ÿ,A‚ |‰¦€Ÿ8„ÿü€¤|¥”¤Bÿô� € 8� €¿€8ÿÿ|@A€t€€ß8€8 8�T@.8cÿøH3ƒ`~`ÞHÕ€A,A‚ÿPWÀ:€¿|�“ßT¤:|ƒ"�`HQ`€¿€9€�@})®€€ €ß€¿8ãTc:||.`àT:�ÿ}.€ |fHµ€A€8`|ê���X8!P»¡ÿô}ˆ¦N€ €\|¦¿!ÿä�`Ÿ`¾€ƒ¿`{”!ÿ `Ü|}8ÿÿ;;ˆy,@‚”;\ÿÿŒš|@8yT…:#(.@‚H€ž€8 8„ �žH¡€A,A‚€€¾�ˆš8¥ÿÿ|è£|*˜�ˆy;œ;½,@‚Œš|@8yT…:#(.KÿÿŒƒY,A‚À€yˆš,£èA‚d|@@‚H€€8 |€�žH€A,A‚x€€¾�ˆš8¥ÿÿ|è |*˜�Œš;½,@‚ÿ¤€y ƒàˆ|,@‚ˆy,@‚cyˆy,@‚ÿTKÿþÀ€|`èH8`ÿÿH€|`è8cÿÿ��h8!`»!ÿä}ˆ¦N€ €¸½¡ÿ´|¦;À|¿+y}€&�``cÝ`‡‘�N”!ý@�ád�`cÚ`Ü; c»A’P:ãÿü;ÿü„wKÿ»Y|vyA‚ H89„xH1€A|Ð@8½@�bÚ;{|ø@A€ÿÀ€‚L8| ¦;a\9¤ \cc|­ª‘¡h|£ª8c Bÿøˆ|,A‚,c„8|®Œd,A‚|®Œd,Kÿÿð8a@c$KÿÂ5,A‚(��Ä€È�¡t8!À|¦cÃ}€� ºÁÿØN€ �¢TW@88€|Ö“ÍH-€A|zy@‚08a@Kÿ¿¥€È��ÄcÃ�¡t|¦8!À}€� ºÁÿØN€ 8a@KÿÀ-8a@Kÿ¿í:Àÿÿ8a@KÿÀ�al8a@KÿÀ `u88€` H¹€A|yy@‚<8a@Kÿ¿1cCHÝ€A€È��ÄcÃ�¡t|¦8!À}€� º¡ÿÔN€ ; cÆ8à:àcA’0€a`9@9`9€9#ÿü:€ :@ :` „iˆ,\@‚ ˆ,^@‚<8‡b£Kÿ¾m€iˆ,@‚à�Õ’õcĈ,A‚ŒHÔ,$@‚Tb£`äKÿ¾-€al`äKÿ¾!€iˆ,@‚”€|°@@‚ˆ�Õ“ÕcĈ,A‚4H|€al`äKÿ½Ý€iˆ,\@‚@ˆ,b@‚4ˆ,A‚(8‡b£Kÿ½©€icĈ,A‚ÜH$b£`äKÿ½…€icĈ,A‚¸8¨ÿü,\@‚„Š#,A‚x`qˆ8c,r.€$,€tA‚A�L,€^,bA–8A†,@‚D‘E8„�Å”… `q9 ˆ8cH@‘eH‘…H,vA†¸A‚¬�8„�Å”… `q9 ˆ8c,@‚ÿT�È8Æ8“È|ø@�ˆ9 |ç@€„iˆ,\KÿþcÖ€@,A‚ˆ:¹:�\cÓ€PcÒbQ|`š`o8€ÿÿKÿº)|jyA‚Xj |.,@‚$,@‚€�€¯cC8¥Kÿ¸¹`qaãaDKÿ¹å|jyA‚j |.,Kÿÿ¼€aPaä8cýäKÿºñ,@‚€�P8dýäKÿ»%€�h8| ¦8a\|¤ª|£ª8c Bÿø€ÁP8€ÿÿ|£ª8fýäKÿ¹u|dyA‚dd |¹.~ô)®,@‚|.,@‚|.(A� ,@‚šá\€aP8cýäKÿ¹)|dyA‚d |¹.~ô)®,Kÿÿ´ˆ\,A‚4ˆ|,A‚(c„~ô®Œd,A‚~ô®Œd,Kÿÿð9¡[9ÀŒ ,@‚$,A‚b |s.HŒ8ÿÿ|s.H€8a@Kÿ»¡`i€aPcÊaK}ã‚€8cýä8€ÿÿ� € �  €¯8� Kÿ¸Y|fyA‚è,’f |™|y..ƒA–L|�A‚D,@‚,|�®,@‚0@†€(@�€ ,A‚,@‚d@†`HA†A– € ,@‚€|X@@�` A†(A–$8†a#Kÿ¹Ý€aP`Ä8cýäKÿ·©H a#`ÄKÿ¹½€aP`Ä8cýäKÿ·‰|fyA‚f |™|y..ƒKÿÿ4, A‚8“É a#8€ÿÿKÿ·U|fyA‚è,’f |¹..…A– ,@‚$@† 8` |™€ÿü|X@A€ œ   ¤ ¨ ¬ ° ´ ¸N ¼ ÀL Ä È, Ì5 Ð Ô Ø Ü+ à- ä è ì ð7 ô øI ü  &  3   ( ' . % $/ (0 ,1 0J 4K 8# < @" D$ H9 L  PE T; X2 \ `R d! hB l  p  tA xP |M € „ ˆ ŒG � ” ˜ œ8  D ¤ ¨) ¬ ° ´ ¸  ¼ ÀH Ä È Ì ÐO Ô6 ØC Ü* àF ä< èQ ì:/usr/local/lib/mysql:/usr/lib:/liblibc.ashr.olibpthreads.ashr_comm.olibpthreads.ashr_xpg5.olibmysqlclient.alibmysqlclient.so.10_system_configuration __mod_init__pthread_trace pthread_init my_prognamedefault_charset_infomysql_fetch_lengthsmysql_fetch_rowmysql_free_resultmysql_store_result mysql_pingmysql_read_query_resultmysql_send_query mysql_query mysql_closemysql_real_connect mysql_init mysql_error mysql_errnomysql_field_countmysql_fetch_fieldsmysql_num_fieldsload_defaults find_typemy_no_flags_free my_strdupfree_defaults fn_format vio_delete my_malloc my_reallocget_tty_password my_message my_fclose dynstr_freedynstr_append_memdynstr_appendinit_dynamic_stringinsert_dynamicinit_dynamic_arraydelete_dynamic get_dynamic getopt_long*¦>€B‚J¨`�™n²p}™š¶°Ä™º„ƆȂ™òd�&–�J˜�nš�’œ�î°�òª�Ñ™B®�J¬r´ ‡™&º�4Œ™Jº�XŒ™º�ØŒ™Œ™V¾�˜Œ™àt™ü‘™ ‘™ ðg™ þº� \–™ ¬–™ &º� X›™ �›™ ¨‘™ È� , ™ 6º� :Ì� BÎ� nÐ� ŠÒ� ’Ô� ªÖ� ÒØ� ख़ êÜ� ,ª™ Rà� h¯™ ˆ´™ ®¾� ²æ� ¶è� ºê� ܹ™ ð¾™ð�ò�ô�ÀÙžø�ðș͙ Í™<‚™ÈÒ™^�p×™òº�ª™Ü�,Ü™@á™RÌ�Vº��晾Ì�Ìë™Ü¾™êº�º�4ð™Hõ™zÌ�„ë™’º�°ú™Àÿ™Úº�ð™ ™º�$™0™JÌ�N�T™”™®Ì�Ü™ ™™*�@™T™`™r�†¾�žø�²Ì�äë™òº� ë™Të™^º�|뙌¾™šº�ЙäÈ™@™P"™^º�|'™Žº� ,™>¾�Fº�p1™~Ì�Ž,�”6™¦ê�ªè�®æ�²ø�¶0�¾ô�‘™´™”;™è@™,�4@™d‚™t‚™„‚™š,� 6™Ò6�‚™,E™vº�|Í™ˆÍ™”Í™žÈ�¨Í™´Í™ÀÍ™îÈ�òº�Í™Jð�RÌ�zØ�€J™¨›™ÂØ�ÈO™òº�î>�n>�Æ>�z>�д™ >� n>�!Ì�!Nà�!R>�!Zº�!^ô�!lT™!€Y™!¤^™$Y™%ºÌ�%Úº�%æò�%úF�&(c™&:º�&Lh™&^º�&zð�&ªF�&îÌ�'º�'"ò�'6ð�'bF�'~ð�'Öº�'âº�(>Ò�(BÔ�(`¯™(zÌ�(”m™(¸@™(๙(ø¾™)´™)>Ð�)–>�*>�*ƺ�*â>�+6Ò�+>Î�+Xj™+‚º�+¶Ð�+Þ�+ì‘™,.º�,ˆÜ™,˜›™-:>�-ª�-ä‘™/Šº�/š>�0Fº�0hr™0¨r™1;™1.>�1Ò>�2&º�26¾�2hw™2x@™2š>�3Dv™3„w™3Öº�3þ>�4>�4v>�5NÐ�5Zº�5p|™5‚Ì�5Œë™5œ¾™5¼ð™5ÎÌ�5à™5òÌ�6Ö�6m™6$�™64™6jÐ�6�@™6žÖ�6¢º�6´†™6Ä|™6ÖÌ�6àë™6ð¾™7ð™7&Ì�78™7JÌ�7t™7Îà�7Ô‹™7ì�™7úº�8�™8|t™8”•™8²º�:Ü™:&º�:~º�:š>�;*Ì�;Vº�;lš™<º�>�>vº�>z`�>‚ð�>Ö¾�?È�?Ì�?à�?º�?4Ÿ™?H¤™?XŸ™?–à�?šº�?¬Ÿ™?¶¾�?ÈÍ™?Ø‚™@Bº�@FÈ�@Jà�@XŸ™@l¤™@|Ÿ™@Œ‚™@ÖØ�@ô‘™A‘™A0©™A:Ü�A<È™AF¾�AL‘™AVÌ�A\®™Ah³™AžÌ�A¢à�AÈ^™BÒ�B&Î�BD¸™BT‘™B¦Ì�B´‘™BæÌ�C›™Cl‘™C|‘™Cà›™D›™D0‘™D|Ü™D¨–™ELz™E\–™E�t™EäÙF�–™G,–™HXÜ™H‚º�I¾�I,›™I ›™I¼‘™P¾�Pè›™Q8ÙQ‚¾�QŠº�Q¤Œ™R�"™Ržº�R°½™S‘™S0‘™S¦º�SÚ`�Söº�T†™T*º�T†º�T¢>�TöÒ�TþÎ�Uj™UBº�UŒ™Uœ¸™Uº�Uèm™V@Ç™V�›™V´™VÜÌ™WŒ™W‘™W,,™Wb¸WмWÀpWâÀYšÂYÀgZ2ÄZZÆZ‚ÊZªÚZÒÞZúâ["ä[Jì[rî[šö[Âú[êü\þ\:\b\Š\²\Ú ] ]*]R]z]¢]Ê]ò^^B^j ^’"^º$^â&_ (_2*_Z._‚2_ª4_Ò8_ú:`"<`J@`rB`šD`ÂH`êJaLa@jaBÀbrNbšPbÂRcmcÀdºTdâVe Xe2ZeZ\e‚^eªbeÒdeúff"hfJjfrlfšnfÂpfêrgt 0€ 4” H, L, Œ, �N ˜, œ,  , ¤, ¨, ¬, °, ´, ¸, ¼, À, Ä, È, Ì, Ð, Ô, Ø, Ü, à, ä, è, ì, ð, ø, , , (, 8, H, X, h, x, ˆ, ˜, ¨, ¸, È, Ø, è, x ¤ ^ ¤ � $¤ 4b Pˆ T¢ Xj \l `` d’ h~ l  pn tB x, |œ €. „r ˆ, ŒD �> ” ˜@ œ0  2 ¤4 ¨6 ¬8 °: ´< ¸` ¼> À\ Ä| È Ì. Ð@ ÔB ØD Ü à äF èH ì¢ ð2 ôJ øV üŽ €  L * ‚      $" ($ ,& 0X 4Z 8  <P @ D  H6 L~ PN T: X( \R `h d hH l„ p tF xd |^ € „– ˆž ŒR �T ”’ ˜” œ4  L ¤p ¨ ¬˜ °Œ ´ˆ ¸† ¼š ÀT ÄV È� ÌŠ Ðb Ô0 ØJ Ü àP ä< èf ì8optindoptarg% 9 I [ n y ‘ ¢ ® º Í Ø ä ð   & 4 > O Y strmov g my_open my_read my_close q | my_init strend † ‘ strnmov my_end str2int my_write ¢ ­ my_fopen · Ã Õ ã ÷   ( my_stat 4 @P errnoselect ]__mulh1.__mulh1__quous3€.__quous3€_iob_Errno exit strlen atoi write fflush vfprintf sprintf printf fprintf strchr strrchr fgetc strtoul system memcmp feof s __crt0vTOC ,k~ Pk__crt0v Tk@ XkP \k_$STATIC `k_$STATIC dk“ hks lkerrno pkstrend tk xkmemcmp |k_$STATIC €k] „k> ˆk† Œk| �k ”kmy_init ˜k� œkcons  kcur_con ¤knext_con ¨kcons_end ¬kª °kq_lines ´k ¸kds_res ¼kã Àk_iob ÄkÍ ÈkO Ìkµ Ðkhost Ôkuser Økº ÜkØ àkparser äkblock_ok èk ìkstrmov ðk¿ ôk· økprintf ükexit kn kË k4 kstrlen k‘ ky kä k[ kð $k (k ,kà 0kÕ 4k9 8kÛ <k% @kI Dkmy_open Hk_Errno Lkmy_write Pkmy_close Tk& Xkè \k4 `koptarg dkstrnmov hkatoi lkoptind pk‘ tk( xk÷ |k €kfgetc „kfeof ˆk­ Œkõ �kstrchr ”kstrrchr ˜kg œkstr2int  kselect ¤k¢ ¨kstrtoul ¬ksprintf °kfflush ´kwrite ¸ksystem ¼kmy_fopen Àkvar_reg Äkfprintf Èkvfprintf Ìk ÐkY Ôkmy_end Øk® Ük¢ àkq äkmy_stat èkmy_read ìk wÿþùgŠÿþ g.__start(kÅ.__start(x__start  “ 0k p_xargc ,p_xargv 0p_xrcfg Hp_xrc L~ ð.filežÿþgQkðkšð Ž_$STATIC Èke›   ª 8¼ <Ò @ä D.fileXÿþgmysqltest.cþ˜kSÈ@˜ k¢Mð k¢Z¸ k¢iP k¢uè k¢Œ k¢�x k¢—À k¢.or_bits k¢¢| k¢.set_bit° k¢­ä k¢¸ 4 k¢Ç ` k¢Ü ˜ k¢ê  k¢.main ð ¢õ ¢´ ¢ ¢Ì ¢.4 ¢.usage` ¢:ì k¢I@ ¢U ü ¢`$8 ¢t%° ¢.do_done&ä ¢~'´ ¢Š)t ¢š*¤ ¢­+Ô ¢»,$ k¢È. k¢Ô0 k¢Þ0ü k¢í1¨ ¢.do_let3´ ¢÷5L ¢ 6d ¢.do_echo7¤ ¢ 80 ¢.do_dec8è ¢.do_inc9< ¢+9� ¢6:\ ¢A;  ¢.var_set;Ø ¢L=L k¢.hex_val> ¢Z>t ¢g>Ð k¢t?Œ k¢.die@ k¢Ž@¸ k¢ A” k¢­B k¢¹B  k¢ÎBÜ k¢éC@ ¢ýC´ k¢F  ¢#Gè ¢.var_getSt ¢1T` ¢CU¼ ¢PV ¢g8k0_$STATIC @k0� økPcons Hàcur_con îHnext_con îLcons_end îPª îXq_lines ð`ds_res ðxµ phost tuser xparser ðˆblock_ok |¿ €Ë ˆ ` ˜`Û ð�è øõ var_reg ð˜ð.filefÿþgnªkðkXÄð \_$STATIC hk`Å   × 4nonameiÿþ g._fillYÀostrcmp.slÿþ g.strcmpa@0)íoÿþ g.strncpycµ)moveeq.szÿþ g.bcopyWÀ×).ovbcopyWÀp._moveeqWàp.memcpyWàp.memmoveWàpglink.sÿþ g÷pk(÷p{glink.s„ÿþ g.exit\k(.exit\€glink.s‰ÿþ g.strendW`k(.strendW`…glink.sŽÿþ g.memcmpWˆk(.memcmpWˆŠglink.s“ÿþ gY˜k(Y˜�glink.s˜ÿþ gZ0k(Z0”glink.s�ÿþ g!ZXk(!ZX™glink.s¢ÿþ g.my_initZ€k(.my_initZ€žglink.s§ÿþ g,Z¨k(,Z¨£glink.s¬ÿþ g@ZÐk(@ZШglink.s±ÿþ gUZøk(UZø­glink.s¶ÿþ ga[ k(a[ ²glink.s»ÿþ gl[Hk(l[H·glink.sÀÿþ g€[pk(€[p¼glink.sÅÿþ g.strmov[˜k(.strmov[˜Áglink.sÊÿþ g�[Àk(�[ÀÆglink.sÏÿþ g.printf[èk(.printf[èËglink.sÔÿþ gš\8k(š\8Ðglink.sÙÿþ g¦\`k(¦\`Õglink.sÞÿþ g.strlen\ˆk(.strlen\ˆÚglink.sãÿþ g±\°k(±\°ßglink.sèÿþ gÃ\Øk(Ã\Øäglink.síÿþ gÜ]k(Ü]églink.sòÿþ gé](k(é](îglink.s÷ÿþ gý]Pk(ý]Póglink.süÿþ g ]xk( ]xøglink.sÿþ g $] k( $] ýglink.sÿþ g 6]Èk( 6]Èglink.s ÿþ g I]ðk( I]ðglink.sÿþ g X^k( X^ glink.sÿþ g i^@k( i^@glink.sÿþ g ~^hk( ~^hglink.sÿþ g.my_open^�k(.my_open^�glink.s$ÿþ g._Errno^¸k(._Errno^¸ glink.s)ÿþ g ‘^àk( ‘^à%glink.s.ÿþ g ›_k( ›_*glink.s3ÿþ g ¥_0k( ¥_0/glink.s8ÿþ g ´_Xk( ´_X4glink.s=ÿþ g.strnmov_€k(.strnmov_€9glink.sBÿþ g.atoi_¨k(.atoi_¨>glink.sGÿþ g Á_Ðk( Á_ÐCglink.sLÿþ g Ó_øk( Ó_øHglink.sQÿþ g à` k( à` Mglink.sVÿþ g.fgetc`Hk(.fgetc`HRglink.s[ÿþ g.feof`pk(.feof`pWglink.s`ÿþ g ð`˜k( ð`˜\glink.seÿþ g.strchr`Àk(.strchr`Àaglink.sjÿþ g.strrchr`èk(.strrchr`èfglink.soÿþ g ûak( ûakglink.stÿþ g.str2intbpk(.str2intbppglink.syÿþ g.selectb˜k(.selectb˜uglink.s~ÿþ g bÀk( bÀzglink.sƒÿþ g.strtould¸k(.strtould¸glink.sˆÿþ g.sprintfdàk(.sprintfdà„glink.s�ÿþ g.fflushek(.fflushe‰glink.s’ÿþ g.writee0k(.writee0Žglink.s—ÿþ g.systemeXk(.systemeX“glink.sœÿþ g e€k( e€˜glink.s¡ÿþ g.fprintfe¨k(.fprintfe¨�glink.s¦ÿþ g eÐk( eТglink.s«ÿþ g 'eøk( 'eø§glink.s°ÿþ g 7f k( 7f ¬glink.sµÿþ g.my_endfHk(.my_endfH±glink.sºÿþ g Ffpk( Ffp¶glink.s¿ÿþ g Sf˜k( Sf˜»glink.sÄÿþ g _fÀk( _fÀÀglink.sÉÿþ g.my_statfèk(.my_statfèÅglink.sÎÿþ g.my_readgk(.my_readgÊglink.sÿÿÿÿÿþ g kHk( kHÏ ymy_prognamedefault_charset_infomysql_fetch_lengthsmysql_fetch_rowmysql_free_resultmysql_store_resultmysql_pingmysql_read_query_resultmysql_send_querymysql_querymysql_closemysql_real_connectmysql_initmysql_errormysql_errnomysql_field_countmysql_fetch_fieldsmysql_num_fieldsload_defaultsfind_typemy_no_flags_freemy_strdupfree_defaultsfn_formatvio_deletemy_mallocmy_reallocget_tty_passwordmy_messagemy_fclosedynstr_freedynstr_append_memdynstr_appendinit_dynamic_stringinsert_dynamicinit_dynamic_arraydelete_dynamicget_dynamicgetopt_long__pthread_tracepthread_init_system_configuration__mod_init__C_runtime_pstartupcrt0_data_$STATIC_BSSmaster_posunix_sockresult_filecommand_typelibglob_replacelong_optionsfalse_block_depthcrt0main.s../../../../../../../src/bos/usr/ccs/lib/libc/__threads_init.cTue Aug 18 09:04:53 1998 C Set ++ for AIX Compiler Version 4.1.0.0 --- .__threads_init_bsd_init_routine_xti_tli_init_routine_nsl_init_routine__dce_compat_init_routineTue Mar 20 17:57:07 2001 C for AIX Compiler Version 4.4.0.0 --- .replace_len.end_of_word.start_at_word.find_found.find_set.get_next_bit.cmp_bits.copy_bits.clear_bit.free_sets.free_last_set.make_sets_invisible.make_new_set.init_sets.get_query_type.run_query.str_to_file.safe_str_append.parse_args.print_version.read_query.read_line.safe_copy_unescape.do_while.do_connect.safe_get_param.select_connection.free_replace.get_replace.get_string.get_ints.get_file_name.do_sleep.do_save_master_pos.do_sync_with_master.do_system.eval_expr.do_source.open_file.check_result.init_parser.verbose_msg.abort_not_supported_test.free_used_memory.close_files.close_cons.free_replace_buffer.initialize_replace_buffer.free_pointer_array.insert_pointer_name.replace_strings.init_replace.close_connection.reject_dump.dyn_string_cmpcommand_names../../../../../../../src/bos/usr/ccs/lib/libpthreads/init.cMon Sep 29 13:53:38 1997 .call_pthread_init_pthread_init_routinestrncpy.s.__mod_init.my_no_flags_free.my_realloc.my_malloc.init_dynamic_array.init_dynamic_string.mysql_init.my_strdup.mysql_real_connect.mysql_error.dynstr_free.mysql_ping.find_type.mysql_send_query.mysql_read_query_result.mysql_errno.mysql_store_result.mysql_field_count.mysql_fetch_fields.mysql_num_fields.dynstr_append_mem.dynstr_append.mysql_fetch_row.mysql_fetch_lengths.mysql_free_result.my_write.my_close.load_defaults.getopt_long.get_tty_password.get_dynamic.insert_dynamic.my_fclose.fn_format.mysql_query.my_fopen.vfprintf.delete_dynamic.free_defaults.mysql_close.my_message.vio_delete.pthread_initf kê`wáàí�kGv”·:‰�·:‰�·:!# gëkG./usr/local/bin/mysqld_multisó/í�#!/usr/bin/perl use Getopt::Long; use POSIX qw(strftime); $|=1; $VER="2.2"; $opt_config_file = undef(); $opt_example = 0; $opt_help = 0; $opt_log = "/tmp/mysqld_multi.log"; $opt_mysqladmin = "/usr/local/bin/mysqladmin"; $opt_mysqld = "/usr/local/bin/mysqld"; $opt_no_log = 0; $opt_password = undef(); $opt_tcp_ip = 0; $opt_user = "root"; $opt_version = 0; my ($mysqld, $mysqladmin, $groupids, $homedir, $my_progname); $homedir = $ENV{HOME}; $my_progname = $0; $my_progname =~ s/.*[\/]//; main(); #### #### main sub routine #### sub main { my ($flag_exit); if (!defined(my_which(my_print_defaults))) { # We can't throw out yet, since --version, --help, or --example may # have been given print "WARNING! my_print_defaults command not found!\n"; print "Please make sure you have this command available and\n"; print "in your path. The command is available from the latest\n"; print "MySQL distribution.\n"; } my @defops = `my_print_defaults mysqld_multi`; chop @defops; splice @ARGV, 0, 0, @defops; GetOptions("help","example","version","mysqld=s","mysqladmin=s", "config-file=s","user=s","password=s","log=s","no-log","tcp-ip") || die "Wrong option! See $my_progname --help for detailed information!\n"; $groupids = $ARGV[1]; if ($opt_version) { print "$my_progname version $VER by Jani Tolonen\n"; exit(0); } example() if ($opt_example); if (!defined(($mysqld = my_which($opt_mysqld)))) { print "Couldn't find the mysqld binary! Tried: $opt_mysqld\n"; $flag_exit=1; } if (!defined(($mysqladmin = my_which($opt_mysqladmin)))) { print "Couldn't find the mysqladmin binary! Tried: $opt_mysqladmin\n"; $flag_exit=1; } usage() if ($opt_help); if ($flag_exit) { print "Error with an option, see $my_progname --help for more info!\n"; exit(1); } if (!defined(my_which(my_print_defaults))) { print "ABORT: Can't find command 'my_print_defaults'!\n"; print "This command is available from the latest MySQL\n"; print "distribution. Please make sure you have the command\n"; print "in your PATH.\n"; exit(1); } usage() if (!defined($ARGV[0]) || ($ARGV[0] ne 'start' && $ARGV[0] ne 'START' && $ARGV[0] ne 'stop' && $ARGV[0] ne 'STOP' && $ARGV[0] ne 'report' && $ARGV[0] ne 'REPORT')); if (!$opt_no_log) { w2log("$my_progname log file version $VER; run: ", "$opt_log", 1, 0); } else { print "$my_progname log file version $VER; run: "; print strftime "%a %b %e %H:%M:%S %Y", localtime; print "\n"; } if ($ARGV[0] eq 'report' || $ARGV[0] eq 'REPORT') { report_mysqlds(); } elsif ($ARGV[0] eq 'start' || $ARGV[0] eq 'START') { start_mysqlds(); } else { stop_mysqlds(); } } #### #### Report living and not running MySQL servers #### sub report_mysqlds { my (@groups, $com, $i, @options, $j, $pec); print "Reporting MySQL servers\n"; if (!$opt_no_log) { w2log("\nReporting MySQL servers","$opt_log",0,0); } @groups = &find_groups($groupids); for ($i = 0; defined($groups[$i]); $i++) { $com = "my_print_defaults"; $com.= defined($opt_config_file) ? " --config-file=$opt_config_file" : ""; $com.= " $groups[$i]"; @options = `$com`; chop @options; $com = "$mysqladmin -u $opt_user"; $com.= defined($opt_password) ? " -p$opt_password" : ""; $com.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; for ($j = 0; defined($options[$j]); $j++) { if ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || ($options[$j] =~ m/^(\-\-port\=)(.*)$/)) { $com.= " $options[$j]"; } } $com.= " ping >> /dev/null 2>&1"; system($com); $pec = $? >> 8; if ($pec) { print "MySQL server from group: $groups[$i] is not running\n"; if (!$opt_no_log) { w2log("MySQL server from group: $groups[$i] is not running", "$opt_log", 0, 0); } } else { print "MySQL server from group: $groups[$i] is running\n"; if (!$opt_no_log) { w2log("MySQL server from group: $groups[$i] is running", "$opt_log", 0, 0); } } } if (!$i) { print "No groups to be reported (check your GNRs)\n"; if (!$opt_no_log) { w2log("No groups to be reported (check your GNRs)", "$opt_log", 0, 0); } } } #### #### start multiple servers #### sub start_mysqlds() { my (@groups, $com, $i, @options, $j); if (!$opt_no_log) { w2log("\nStarting MySQL servers\n","$opt_log",0,0); } else { print "\nStarting MySQL servers\n"; } @groups = &find_groups($groupids); for ($i = 0; defined($groups[$i]); $i++) { $com = "my_print_defaults"; $com.= defined($opt_config_file) ? " --config-file=$opt_config_file" : ""; $com.= " $groups[$i]"; @options = `$com`; chop @options; $com = "$mysqld"; for ($j = 0; defined($options[$j]); $j++) { $com.= " $options[$j]"; } $com.= " >> $opt_log 2>&1" if (!$opt_no_log); $com.= " &"; system($com); } if (!$i && !$opt_no_log) { w2log("No MySQL servers to be started (check your GNRs)", "$opt_log", 0, 0); } } #### #### stop multiple servers #### sub stop_mysqlds() { my (@groups, $com, $i, @options, $j); if (!$opt_no_log) { w2log("\nStopping MySQL servers\n","$opt_log",0,0); } else { print "\nStopping MySQL servers\n"; } @groups = &find_groups($groupids); for ($i = 0; defined($groups[$i]); $i++) { $com = "my_print_defaults"; $com.= defined($opt_config_file) ? " --config-file=$opt_config_file" : ""; $com.= " $groups[$i]"; @options = `$com`; chop @options; $com = "$mysqladmin -u $opt_user"; $com.= defined($opt_password) ? " -p$opt_password" : ""; $com.= $opt_tcp_ip ? " -h 127.0.0.1" : ""; for ($j = 0; defined($options[$j]); $j++) { if ((($options[$j] =~ m/^(\-\-socket\=)(.*)$/) && !$opt_tcp_ip) || ($options[$j] =~ m/^(\-\-port\=)(.*)$/)) { $com.= " $options[$j]"; } } $com.= " shutdown"; $com.= " >> $opt_log 2>&1" if (!$opt_no_log); $com.= " &"; system($com); } if (!$i && !$opt_no_log) { w2log("No MySQL servers to be stopped (check your GNRs)", "$opt_log", 0, 0); } } #### #### Find groups. Takes the valid group numbers as an argument, parses #### them, puts them in the ascending order, removes duplicates and #### returns the wanted groups accordingly. #### sub find_groups { my ($raw_gids) = @_; my (@groups, @data, @tmp, $line, $i, $k, @pre_gids, @gids, @tmp2, $prev_value); # Read the lines from the config file to variable 'data' if (defined($opt_config_file)) { open(MY_CNF, "<$opt_config_file") && (@data=) && close(MY_CNF); } else { if (-f "/etc/my.cnf" && -r "/etc/my.cnf") { open(MY_CNF, ") && close(MY_CNF); } for ($i = 0; ($line = shift @tmp); $i++) { $data[$i] = $line; } if (-f "$homedir/.my.cnf" && -r "$homedir/.my.cnf") { open(MY_CNF, "<$homedir/.my.cnf") && (@tmp=) && close(MY_CNF); } for (; ($line = shift @tmp); $i++) { $data[$i] = $line; } } chop @data; # Make a list of the wanted group ids if (defined($raw_gids)) { @pre_gids = split(',', $raw_gids); } if (defined($raw_gids)) { for ($i = 0, $j = 0; defined($pre_gids[$i]); $i++) { if ($pre_gids[$i] =~ m/^(\d+)$/) { $gids[$j] = $1; $j++; } elsif ($pre_gids[$i] =~ m/^(\d+)(\-)(\d+)$/) { for ($k = $1; $k <= $3; $k++) { $gids[$j] = $k; $j++; } } else { print "ABORT: Bad GNR: $pre_gids[$i] See $my_progname --help\n"; exit(1); } } } # Sort the list of gids numerically in ascending order @gids = sort {$a <=> $b} @gids; # Remove non-positive integers and duplicates for ($i = 0, $j = 0; defined($gids[$i]); $i++) { next if ($gids[$i] <= 0); if (!$i || $prev_value != $gids[$i]) { $tmp2[$j] = $gids[$i]; $j++; } $prev_value = $gids[$i]; } @gids = @tmp2; # Find and return the wanted groups for ($i = 0, $j = 0; defined($data[$i]); $i++) { if ($data[$i] =~ m/^(\s*\[\s*)(mysqld)(\d+)(\s*\]\s*)$/) { if (defined($raw_gids)) { for ($k = 0; defined($gids[$k]); $k++) { if ($gids[$k] == $3) { $groups[$j] = $2 . $3; $j++; } } } else { $groups[$j] = $2 . $3; $j++; } } } return @groups; } #### #### w2log: Write to a logfile. #### 1.arg: append to the log file (given string, or from a file. if a file, #### file will be read from $opt_logdir) #### 2.arg: logfile -name (w2log assumes that the logfile is in $opt_logdir). #### 3.arg. 0 | 1, if true, print current date to the logfile. 3. arg will #### be ignored, if 1. arg is a file. #### 4.arg. 0 | 1, if true, first argument is a file, else a string #### sub w2log { my ($msg, $file, $date_flag, $is_file)= @_; my (@data); open (LOGFILE, ">>$opt_log") or die "FATAL: w2log: Couldn't open log file: $opt_log\n"; if ($is_file) { open (FROMFILE, "<$msg") && (@data=) && close(FROMFILE) or die "FATAL: w2log: Couldn't open file: $msg\n"; foreach my $line (@data) { print LOGFILE "$line"; } } else { print LOGFILE "$msg"; print LOGFILE strftime "%a %b %e %H:%M:%S %Y", localtime if ($date_flag); print LOGFILE "\n"; } close (LOGFILE); return; } #### #### my_which is used, because we can't assume that every system has the #### which -command. my_which can take only one argument at a time. #### Return values: requested system command with the first found path, #### or undefined, if not found. #### sub my_which { my ($command) = @_; my (@paths, $path); return $command if (-f $command && -x $command); @paths = split(':', $ENV{'PATH'}); foreach $path (@paths) { $path .= "/$command"; return $path if (-f $path && -x $path); } return undef(); } #### #### example #### sub example { print < mysql -u root -S /tmp/mysql.sock -proot_password -e # "GRANT SHUTDOWN ON *.* TO multi_admin\@localhost IDENTIFIED BY 'multipass'" # You will have to do the above for each mysqld running in each data # directory, that you have (just change the socket, -S=...) # See more detailed information from chapter: # '6 The MySQL Access Privilege System' from the MySQL manual. # 2.pid-file is very important, if you are using safe_mysqld to start mysqld # (e.g. --mysqld=safe_mysqld) Every mysqld should have it's own pid-file. # The advantage using safe_mysqld instead of mysqld directly here is, that # safe_mysqld 'guards' every mysqld process and will restart it, if mysqld # process fails due to signal kill -9, or similar. (Like segmentation fault, # which MySQL should never do, of course ;) Please note that safe_mysqld # script may require that you start it from a certain place. This means that # you may have to CD to a certain directory, before you start the # mysqld_multi. If you have problems starting, please see the script. # Check especially the lines: # -------------------------------------------------------------------------- # MY_PWD=`pwd` # Check if we are starting this relative (for the binary release) # if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a \ # -x ./bin/mysqld # -------------------------------------------------------------------------- # The above test should be successful, or you may encounter problems. # 3.Beware of the dangers starting multiple mysqlds in the same data directory. # Use separate data directories, unless you *KNOW* what you are doing! # 4.The socket file and the TCP/IP port must be different for every mysqld. # 5.The first and fifth mysqld was intentionally left out from the example. # You may have 'gaps' in the config file. This gives you more flexibility. # The order in which the mysqlds are started or stopped depends on the order # in which they appear in the config file. # 6.When you want to refer to a certain group with GNR with this program, # just use the number in the end of the group name ( [mysqld# <== ) # 7.You may want to use option '--user' for mysqld, but in order to do this # you need to be root when you start this script. Having the option # in the config file doesn't matter; you will just get a warning, if you are # not the superuser and the mysqlds are started under *your* unix account. # IMPORTANT: Make sure that the pid-file and the data directory are # read+write(+execute for the latter one) accessible for *THAT* UNIX user, # who the specific mysqld process is started as. *DON'T* use the UNIX root # account for this, unless you *KNOW* what you are doing! # 8.MOST IMPORTANT: Make sure that you understand the meanings of the options # that are passed to the mysqlds and why *WOULD YOU WANT* to have separate # mysqld processes. Starting multiple mysqlds in one data directory *WON'T* # give you extra performance in a threaded system! # [mysqld_multi] mysqld = /usr/local/bin/safe_mysqld mysqladmin = /usr/local/bin/mysqladmin user = multi_admin password = multipass [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /var/mysql2/hostname.pid2 datadir = /var/mysql2 language = /usr/local/share/mysql/english user = john [mysqld3] socket = /tmp/mysql.sock3 port = 3308 pid-file = /var/mysql3/hostname.pid3 datadir = /var/mysql3 language = /usr/local/share/mysql/swedish user = monty [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /var/mysql4/hostname.pid4 datadir = /var/mysql4 language = /usr/local/share/mysql/estonia user = tonu [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /var/mysql6/hostname.pid6 datadir = /var/mysql6 language = /usr/local/share/mysql/japanese user = jani EOF exit(0); } #### #### usage #### sub usage { print < Copyright (C) 19yy 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; either version 2 of the License, or (at your option) any later version. 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., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ED, I kê¢ó…¤�âjv”·:”Ž·:”Ž·:! Œâj./usr/local/lib/mysql-client-3.23/COPYING.LIBó/¤�GNU Library General Public License ********************************** GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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; either version 2 of the License, or (at your option) any later version. 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., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! to inc kêÄwô…¤�M v”·:”Ž·:”Ž·:! ªM ./usr/local/lib/mysql-client-3.23/MIRRORSLIBó/¤�MySQL mirror listing *** Europe http://gd.tuwien.ac.at/db/mysql/ ftp://gd.tuwien.ac.at/db/mysql/ http://mysql.online.bg/ ftp://mysql.online.bg/ http://mysql.linux.cz/index.html ftp://ftp.fi.muni.cz/pub/mysql/ http://www.mysql.cz/ http://mysql.gin.cz/ ftp://ftp.gin.cz/pub/MIRRORS/www.mysql.com/ http://SunSITE.auc.dk/mysql/ ftp://SunSITE.auc.dk/pub/databases/mysql/ http://mysql.mirror.ok.ee http://mysql.mtesa.net/ http://mysql.tonnikala.org/ http://www.kernelnotes.de/mysql/ ftp://ftp.kernelnotes.de/pub/mirror/mysql.org/ http://www.fh-wolfenbuettel.de/ftp/pub/database/mysql/ ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/ http://www.ntua.gr/mysql/ ftp://ftp.ntua.gr/pub/databases/mysql/ http://mysql.sote.hu/ ftp://xenia.sote.hu/pub/mirrors/www.mysql.com/ http://mysql.gm.is/ ftp://ftp.gm.is/pub/mysql/ http://mysql.feelinglinux.com/ http://www.teta.it/mysql/ http://mysql.tzone.it/ http://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/ ftp://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/ http://mysql.silverpoint.nl/ http://mysql.widexs.nl/ ftp://mysql.widexs.nl/pub/mysql/ http://sunsite.icm.edu.pl/mysql/ ftp://sunsite.icm.edu.pl/pub/unix/mysql/ http://mysql.service.net.pl/ http://ftp.netc.pt/pub/mysql/ ftp://ftp.netc.pt/pub/mysql/ ftp://ftp.roedu.net/pub/mirrors/ftp.mysql.com/ http://mysql.directnet.ru/ ftp://ftp.dn.ru/pub/MySQL/ ftp://ftp.chg.ru/pub/databases/mysql/ http://sunsite.cnlab-switch.ch/ftp/mirror/mysql/ ftp://sunsite.cnlab-switch.ch/mirror/mysql/ http://mysql.omnipotent.net/ ftp://mysql.omnipotent.net/ http://ftp.plig.org/pub/mysql/ ftp://ftp.plig.org/pub/mysql/ http://mysql.paco.net.ua ftp://mysql.paco.net.ua/ http://mysql.dp.ua/ *** North America http://web.tryc.on.ca/mysql/ http://mysql.he.net/ http://mysql.valueclick.com/ ftp://mysql.valueclick.com/mysql/ http://www.mysql.net http://mirror.sit.wisc.edu/mysql/ ftp://mirror.sit.wisc.edu/mirrors/mysql/ http://mysql.linuxwired.net/ ftp://ftp.linuxwired.net/pub/mirrors/mysql/ http://mysql.venoma.org/ http://mysql.adgrafix.com/ *** South America http://mysql.bannerlandia.com.ar/ ftp://mysql.bannerlandia.com.ar/mirrors/mysql/ http://mysql.vision.cl/ http://mysql.psinet.cl/ ftp://ftp.psinet.cl/pub/database/mysql/ http://mysql.tecnoera.com/ *** Asia http://www.freecode.net.cn/mirror/mysql/ http://www2.linuxforum.net/mirror/mysql/ http://mysql.islnet.net http://www.traland.com/mysql/ http://mysql.webiiz.com/ http://mysql.holywar.net/ http://www.softagency.co.jp/MySQL ftp://ftp.u-aizu.ac.jp/ftp/pub/dbms/mysql/mysql.com http://mysql.hjc.edu.sg ftp://ftp.hjc.edu.sg/mysql http://mysql.ttn.net http://mysql.nctu.edu.tw/ *** Australia http://mirror.aarnet.edu.au/mysql ftp://mirror.aarnet.edu.au/pub/mysql *** Africa http://www.mysql.mweb.co.za/ ftp://ftp.is.co.za/linux/mysql/ tib kêD³õ…¤�¸w”·:”Ž·:”Ž·:! g¸./usr/local/lib/mysql-client-3.23/READMELIBó/¤�This is a release of MySQL, a GPL (free) SQL database server (more licence information in the PUBLIC file and in the reference manual). Please read the Upgrading section in the manual if emigration from 3.20.# to 3.21.#. Otherwise it wont work!! The latest information about MySQL can be found at: http://www.mysql.com To see what it can do take a look at the features section in the manual. For installation instructions see the Installation chapter in the manual. For future plans see the TODO appendix in the manual. New features/bug fixes history is in the news appendix in the manual. For the currently known bugs/misfeatures (known errors) see the bugs appendix in the manual. For examples of SQL and benchmarking information see the bench directory. The manual mentioned above can be found in the Docs directory. The manual is available in the following formats: as text in Docs/manual.txt, as HTML in Docs/manual_toc.html, as GNU Info in Docs/mysql.info and as PostScript in Docs/manual.ps. For a contributed user manual see http://www.turbolift.com/mysql. MySQL is brought to you by the MySQL team at MySQL AB For a list of developers and other contributors, see the Credits appendix in the manual. ************************************************************ IMPORTANT: Send bug (error) reports, questions and comments to the mailing list at mysql@lists.mysql.com Please use the 'mysqlbug' script when posting bug reports or questions about MySQL. mysqlbug will gather some information about your system and start your editor with a form in which you can describe your problem. Bug reports might be silently ignored by the MySQL maintainers if there is not a good reason included in the report as to why mysqlbug has not been used. A report that says 'MySQL does not work for me. Why?' is not consider a valid bug report. The mysqlbug script can be found in the 'scripts' directory in the distribution, that is 'there-you-installed-mysql/scripts'.  kê\–ö…¤�N2w”·:•Ž·:•Ž·:! 76N2./usr/local/lib/mysql-client-3.23/config.cacheó/¤�# This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # ac_cv_c_bigendian=${ac_cv_c_bigendian=yes} ac_cv_c_const=${ac_cv_c_const=yes} ac_cv_c_inline=${ac_cv_c_inline=__inline} ac_cv_c_stack_direction=${ac_cv_c_stack_direction=-1} ac_cv_conv_longlong_to_float=${ac_cv_conv_longlong_to_float=yes} ac_cv_fp_except=${ac_cv_fp_except=no} ac_cv_func_alarm=${ac_cv_func_alarm=yes} ac_cv_func_alloca_works=${ac_cv_func_alloca_works=yes} ac_cv_func_atod=${ac_cv_func_atod=no} ac_cv_func_bcmp=${ac_cv_func_bcmp=yes} ac_cv_func_bfill=${ac_cv_func_bfill=no} ac_cv_func_bind=${ac_cv_func_bind=yes} ac_cv_func_bmove=${ac_cv_func_bmove=no} ac_cv_func_bzero=${ac_cv_func_bzero=yes} ac_cv_func_chsize=${ac_cv_func_chsize=no} ac_cv_func_crypt=${ac_cv_func_crypt=yes} ac_cv_func_cuserid=${ac_cv_func_cuserid=yes} ac_cv_func_dlerror=${ac_cv_func_dlerror=yes} ac_cv_func_dlopen=${ac_cv_func_dlopen=yes} ac_cv_func_fchmod=${ac_cv_func_fchmod=yes} ac_cv_func_fcntl=${ac_cv_func_fcntl=yes} ac_cv_func_fconvert=${ac_cv_func_fconvert=no} ac_cv_func_finite=${ac_cv_func_finite=yes} ac_cv_func_fpresetsticky=${ac_cv_func_fpresetsticky=no} ac_cv_func_fpsetmask=${ac_cv_func_fpsetmask=no} ac_cv_func_fseeko=${ac_cv_func_fseeko=yes} ac_cv_func_ftruncate=${ac_cv_func_ftruncate=yes} ac_cv_func_getcwd=${ac_cv_func_getcwd=yes} ac_cv_func_gethostbyaddr_r=${ac_cv_func_gethostbyaddr_r=yes} ac_cv_func_gethostbyname_r=${ac_cv_func_gethostbyname_r=yes} ac_cv_func_getpagesize=${ac_cv_func_getpagesize=yes} ac_cv_func_getpass=${ac_cv_func_getpass=yes} ac_cv_func_getpassphrase=${ac_cv_func_getpassphrase=no} ac_cv_func_getpwnam=${ac_cv_func_getpwnam=yes} ac_cv_func_getpwuid=${ac_cv_func_getpwuid=yes} ac_cv_func_getrlimit=${ac_cv_func_getrlimit=yes} ac_cv_func_getrusage=${ac_cv_func_getrusage=yes} ac_cv_func_getwd=${ac_cv_func_getwd=yes} ac_cv_func_index=${ac_cv_func_index=yes} ac_cv_func_initgroups=${ac_cv_func_initgroups=yes} ac_cv_func_localtime_r=${ac_cv_func_localtime_r=yes} ac_cv_func_locking=${ac_cv_func_locking=no} ac_cv_func_longjmp=${ac_cv_func_longjmp=yes} ac_cv_func_lrand48=${ac_cv_func_lrand48=yes} ac_cv_func_lstat=${ac_cv_func_lstat=yes} ac_cv_func_madvise=${ac_cv_func_madvise=yes} ac_cv_func_memcpy=${ac_cv_func_memcpy=yes} ac_cv_func_memmove=${ac_cv_func_memmove=yes} ac_cv_func_mkstemp=${ac_cv_func_mkstemp=yes} ac_cv_func_mlockall=${ac_cv_func_mlockall=yes} ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=no} ac_cv_func_p2open=${ac_cv_func_p2open=no} ac_cv_func_perror=${ac_cv_func_perror=yes} ac_cv_func_poll=${ac_cv_func_poll=yes} ac_cv_func_pread=${ac_cv_func_pread=yes} ac_cv_func_pthread_attr_create=${ac_cv_func_pthread_attr_create=no} ac_cv_func_pthread_attr_setprio=${ac_cv_func_pthread_attr_setprio=no} ac_cv_func_pthread_attr_setschedparam=${ac_cv_func_pthread_attr_setschedparam=yes} ac_cv_func_pthread_attr_setstacksize=${ac_cv_func_pthread_attr_setstacksize=yes} ac_cv_func_pthread_condattr_create=${ac_cv_func_pthread_condattr_create=no} ac_cv_func_pthread_getsequence_np=${ac_cv_func_pthread_getsequence_np=no} ac_cv_func_pthread_rwlock_rdlock=${ac_cv_func_pthread_rwlock_rdlock=yes} ac_cv_func_pthread_setprio=${ac_cv_func_pthread_setprio=no} ac_cv_func_pthread_setprio_np=${ac_cv_func_pthread_setprio_np=no} ac_cv_func_pthread_setschedparam=${ac_cv_func_pthread_setschedparam=yes} ac_cv_func_pthread_sigmask=${ac_cv_func_pthread_sigmask=yes} ac_cv_func_putenv=${ac_cv_func_putenv=yes} ac_cv_func_readlink=${ac_cv_func_readlink=yes} ac_cv_func_realpath=${ac_cv_func_realpath=yes} ac_cv_func_rename=${ac_cv_func_rename=yes} ac_cv_func_rint=${ac_cv_func_rint=yes} ac_cv_func_rwlock_init=${ac_cv_func_rwlock_init=no} ac_cv_func_select=${ac_cv_func_select=yes} ac_cv_func_setenv=${ac_cv_func_setenv=no} ac_cv_func_setlocale=${ac_cv_func_setlocale=yes} ac_cv_func_setsockopt=${ac_cv_func_setsockopt=yes} ac_cv_func_setupterm=${ac_cv_func_setupterm=no} ac_cv_func_sighold=${ac_cv_func_sighold=yes} ac_cv_func_sigset=${ac_cv_func_sigset=yes} ac_cv_func_sigthreadmask=${ac_cv_func_sigthreadmask=yes} ac_cv_func_snprintf=${ac_cv_func_snprintf=yes} ac_cv_func_socket=${ac_cv_func_socket=yes} ac_cv_func_stpcpy=${ac_cv_func_stpcpy=no} ac_cv_func_strcasecmp=${ac_cv_func_strcasecmp=yes} ac_cv_func_strcoll=${ac_cv_func_strcoll=yes} ac_cv_func_strerror=${ac_cv_func_strerror=yes} ac_cv_func_strnlen=${ac_cv_func_strnlen=no} ac_cv_func_strpbrk=${ac_cv_func_strpbrk=yes} ac_cv_func_strstr=${ac_cv_func_strstr=yes} ac_cv_func_strtok_r=${ac_cv_func_strtok_r=yes} ac_cv_func_strtol=${ac_cv_func_strtol=yes} ac_cv_func_strtoul=${ac_cv_func_strtoul=yes} ac_cv_func_strtoull=${ac_cv_func_strtoull=yes} ac_cv_func_tcgetattr=${ac_cv_func_tcgetattr=yes} ac_cv_func_tell=${ac_cv_func_tell=yes} ac_cv_func_tempnam=${ac_cv_func_tempnam=yes} ac_cv_func_thr_setconcurrency=${ac_cv_func_thr_setconcurrency=no} ac_cv_func_utime_null=${ac_cv_func_utime_null=yes} ac_cv_func_vidattr=${ac_cv_func_vidattr=no} ac_cv_func_vprintf=${ac_cv_func_vprintf=yes} ac_cv_func_yp_get_default_domain=${ac_cv_func_yp_get_default_domain=yes} ac_cv_header_alloca_h=${ac_cv_header_alloca_h=no} ac_cv_header_arpa_inet_h=${ac_cv_header_arpa_inet_h=yes} ac_cv_header_asm_termbits_h=${ac_cv_header_asm_termbits_h=no} ac_cv_header_crypt_h=${ac_cv_header_crypt_h=yes} ac_cv_header_curses_h=${ac_cv_header_curses_h=yes} ac_cv_header_dirent_dirent_h=${ac_cv_header_dirent_dirent_h=yes} ac_cv_header_dirent_h=${ac_cv_header_dirent_h=yes} ac_cv_header_fcntl_h=${ac_cv_header_fcntl_h=yes} ac_cv_header_float_h=${ac_cv_header_float_h=yes} ac_cv_header_floatingpoint_h=${ac_cv_header_floatingpoint_h=no} ac_cv_header_grp_h=${ac_cv_header_grp_h=yes} ac_cv_header_ieeefp_h=${ac_cv_header_ieeefp_h=no} ac_cv_header_limits_h=${ac_cv_header_limits_h=yes} ac_cv_header_locale_h=${ac_cv_header_locale_h=yes} ac_cv_header_memory_h=${ac_cv_header_memory_h=yes} ac_cv_header_ndir_h=${ac_cv_header_ndir_h=no} ac_cv_header_netinet_in_h=${ac_cv_header_netinet_in_h=yes} ac_cv_header_paths_h=${ac_cv_header_paths_h=yes} ac_cv_header_pwd_h=${ac_cv_header_pwd_h=yes} ac_cv_header_sched_h=${ac_cv_header_sched_h=yes} ac_cv_header_select_h=${ac_cv_header_select_h=no} ac_cv_header_stat_broken=${ac_cv_header_stat_broken=no} ac_cv_header_stdarg_h=${ac_cv_header_stdarg_h=yes} ac_cv_header_stdc=${ac_cv_header_stdc=yes} ac_cv_header_stddef_h=${ac_cv_header_stddef_h=yes} ac_cv_header_stdlib_h=${ac_cv_header_stdlib_h=yes} ac_cv_header_string_h=${ac_cv_header_string_h=yes} ac_cv_header_strings_h=${ac_cv_header_strings_h=yes} ac_cv_header_synch_h=${ac_cv_header_synch_h=no} ac_cv_header_sys_dir_h=${ac_cv_header_sys_dir_h=yes} ac_cv_header_sys_file_h=${ac_cv_header_sys_file_h=yes} ac_cv_header_sys_ioctl_h=${ac_cv_header_sys_ioctl_h=yes} ac_cv_header_sys_mman_h=${ac_cv_header_sys_mman_h=yes} ac_cv_header_sys_ndir_h=${ac_cv_header_sys_ndir_h=no} ac_cv_header_sys_pte_h=${ac_cv_header_sys_pte_h=no} ac_cv_header_sys_ptem_h=${ac_cv_header_sys_ptem_h=no} ac_cv_header_sys_select_h=${ac_cv_header_sys_select_h=yes} ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes} ac_cv_header_sys_stream_h=${ac_cv_header_sys_stream_h=yes} ac_cv_header_sys_timeb_h=${ac_cv_header_sys_timeb_h=yes} ac_cv_header_sys_types_h=${ac_cv_header_sys_types_h=yes} ac_cv_header_sys_un_h=${ac_cv_header_sys_un_h=yes} ac_cv_header_sys_utime_h=${ac_cv_header_sys_utime_h=no} ac_cv_header_sys_vadvise_h=${ac_cv_header_sys_vadvise_h=no} ac_cv_header_sys_wait_h=${ac_cv_header_sys_wait_h=yes} ac_cv_header_term_h=${ac_cv_header_term_h=yes} ac_cv_header_termbits_h=${ac_cv_header_termbits_h=no} ac_cv_header_termcap_h=${ac_cv_header_termcap_h=no} ac_cv_header_termio_h=${ac_cv_header_termio_h=yes} ac_cv_header_termios_h=${ac_cv_header_termios_h=yes} ac_cv_header_time=${ac_cv_header_time=yes} ac_cv_header_unistd_h=${ac_cv_header_unistd_h=yes} ac_cv_header_utime_h=${ac_cv_header_utime_h=yes} ac_cv_header_varargs_h=${ac_cv_header_varargs_h=yes} ac_cv_lib_crypt_crypt=${ac_cv_lib_crypt_crypt=yes} ac_cv_lib_curses_tgetent=${ac_cv_lib_curses_tgetent=yes} ac_cv_lib_dir_opendir=${ac_cv_lib_dir_opendir=no} ac_cv_lib_dl_dlopen=${ac_cv_lib_dl_dlopen=yes} ac_cv_lib_gen_p2open=${ac_cv_lib_gen_p2open=no} ac_cv_lib_m_floor=${ac_cv_lib_m_floor=yes} ac_cv_lib_ncurses_tgetent=${ac_cv_lib_ncurses_tgetent=no} ac_cv_lib_pthread_strtok_r=${ac_cv_lib_pthread_strtok_r=yes} ac_cv_path_AS=${ac_cv_path_AS=/usr/bin/as} ac_cv_path_CHMOD=${ac_cv_path_CHMOD=/usr/bin/chmod} ac_cv_path_CMP=${ac_cv_path_CMP=/usr/bin/cmp} ac_cv_path_CP=${ac_cv_path_CP=/usr/bin/cp} ac_cv_path_HOSTNAME=${ac_cv_path_HOSTNAME=/usr/bin/hostname} ac_cv_path_KILL=${ac_cv_path_KILL=/usr/bin/kill} ac_cv_path_LD=${ac_cv_path_LD=/usr/bin/ld} ac_cv_path_LN=${ac_cv_path_LN=/usr/bin/ln} ac_cv_path_LN_CP_F=${ac_cv_path_LN_CP_F=/usr/bin/ln} ac_cv_path_MV=${ac_cv_path_MV=/usr/bin/mv} ac_cv_path_NM=${ac_cv_path_NM='/usr/bin/nm -B'} ac_cv_path_PERL=${ac_cv_path_PERL=/usr/bin/perl} ac_cv_path_PS=${ac_cv_path_PS=/usr/bin/ps} ac_cv_path_RM=${ac_cv_path_RM=/usr/bin/rm} ac_cv_path_SED=${ac_cv_path_SED=/usr/bin/sed} ac_cv_path_uname_prog=${ac_cv_path_uname_prog=/usr/bin/uname} ac_cv_prog_AWK=${ac_cv_prog_AWK=gawk} ac_cv_prog_CC=${ac_cv_prog_CC='xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 '} ac_cv_prog_CPP=${ac_cv_prog_CPP='xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 -E'} ac_cv_prog_CXX=${ac_cv_prog_CXX=c++} ac_cv_prog_GETCONF=${ac_cv_prog_GETCONF=getconf} ac_cv_prog_LN_S=${ac_cv_prog_LN_S='ln -s'} ac_cv_prog_RANLIB=${ac_cv_prog_RANLIB=ranlib} ac_cv_prog_YACC=${ac_cv_prog_YACC='bison -y'} ac_cv_prog_cc_cross=${ac_cv_prog_cc_cross=no} ac_cv_prog_cc_g=${ac_cv_prog_cc_g=yes} ac_cv_prog_cc_works=${ac_cv_prog_cc_works=yes} ac_cv_prog_cxx_cross=${ac_cv_prog_cxx_cross=no} ac_cv_prog_cxx_g=${ac_cv_prog_cxx_g=yes} ac_cv_prog_cxx_works=${ac_cv_prog_cxx_works=yes} ac_cv_prog_gcc=${ac_cv_prog_gcc=no} ac_cv_prog_gnu_ld=${ac_cv_prog_gnu_ld=no} ac_cv_prog_gxx=${ac_cv_prog_gxx=yes} ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set=yes} ac_cv_sizeof_char=${ac_cv_sizeof_char=1} ac_cv_sizeof_int=${ac_cv_sizeof_int=4} ac_cv_sizeof_long=${ac_cv_sizeof_long=4} ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8} ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=8} ac_cv_struct_st_rdev=${ac_cv_struct_st_rdev=yes} ac_cv_struct_tm=${ac_cv_struct_tm=time.h} ac_cv_sys_file_offset_bits=${ac_cv_sys_file_offset_bits=no} ac_cv_sys_large_files=${ac_cv_sys_large_files=1} ac_cv_sys_largefile_CFLAGS=${ac_cv_sys_largefile_CFLAGS=no} ac_cv_sys_largefile_LDFLAGS=${ac_cv_sys_largefile_LDFLAGS=no} ac_cv_sys_largefile_LIBS=${ac_cv_sys_largefile_LIBS=no} ac_cv_sys_largefile_source=${ac_cv_sys_largefile_source=no} ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls=no} ac_cv_type_off_t=${ac_cv_type_off_t=yes} ac_cv_type_signal=${ac_cv_type_signal=void} ac_cv_type_size_t=${ac_cv_type_size_t=yes} ac_cv_uchar=${ac_cv_uchar=yes} ac_cv_uint=${ac_cv_uint=yes} ac_cv_ulong=${ac_cv_ulong=yes} am_cv_prog_cc_stdc=${am_cv_prog_cc_stdc=''} mysql_cv_btype_last_arg_accept=${mysql_cv_btype_last_arg_accept=socklen_t} mysql_cv_can_redecl_getpw=${mysql_cv_can_redecl_getpw=yes} mysql_cv_compress=${mysql_cv_compress=yes} mysql_cv_dirent_has_dino=${mysql_cv_dirent_has_dino=yes} mysql_cv_fionread_in_ioctl=${mysql_cv_fionread_in_ioctl=yes} mysql_cv_gethost_style=${mysql_cv_gethost_style=other} mysql_cv_gethostname_arg=${mysql_cv_gethostname_arg=hostent_data} mysql_cv_gethostname_style=${mysql_cv_gethostname_style=other} mysql_cv_getspecific_args=${mysql_cv_getspecific_args=POSIX} mysql_cv_have_bool=${mysql_cv_have_bool=yes} mysql_cv_mutex_init_args=${mysql_cv_mutex_init_args=POSIX} mysql_cv_pthread_attr_setscope=${mysql_cv_pthread_attr_setscope=yes} mysql_cv_readdir_r=${mysql_cv_readdir_r=POSIX} mysql_cv_signal_vintage=${mysql_cv_signal_vintage=posix} mysql_cv_sigwait=${mysql_cv_sigwait=POSIX} mysql_cv_sys_os=${mysql_cv_sys_os=AIX} mysql_cv_termcap_lib=${mysql_cv_termcap_lib=libcurses} mysql_cv_timespec_ts=${mysql_cv_timespec_ts=no} mysql_cv_tiocgwinsz_in_ioctl=${mysql_cv_tiocgwinsz_in_ioctl=yes} mysql_cv_tiocstat_in_ioctl=${mysql_cv_tiocstat_in_ioctl=no} mysql_cv_type_qsort=${mysql_cv_type_qsort=void} mysql_cv_tzname=${mysql_cv_tzname=yes} mysql_cv_void_sighandler=${mysql_cv_void_sighandler=yes} ge kêê÷…í�þw”·:”Ž·:”Ž·:! 0lþ./usr/local/lib/mysql-client-3.23/myconf.mysqló/í� cp $0 //info/conf/. || exit suffix=${0##*/}; suffix=${suffix#*.}; # print $suffix; exit if [ "$1" != "ok" ] then print "Before running configure you must :" print "\t* hack ltconfig / libtool to" print "\t\t- remove 'erok'" print "\t\t- replace CC by LD for shared lib creation" print "\t* add -export-symbols-regex '.*' to ./libmysql/Makefile.in" print "\t and ./libmysql_r/Makefile.in (search '=link', before '-o $@'" exit fi # after configure, you have to manually modify config.h to # set SOCKET_SIZE_TYPE to "socklen_t" export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 " # default to g++ for client side... #export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192" export CFLAGS="-I /usr/local/include -DHAVE_INT_8_16_32" export LDFLAGS="-L/usr/local/lib" export CPPFLAGS=$CFLAGS export CXXFLAGS=$CFLAGS ./configure --prefix=/usr/local \ --localstatedir=/var/mysql \ --sysconfdir=/etc/mysql \ --sbindir='${prefix}/bin' \ --libexecdir='${prefix}/bin' \ --without-server --without-bench \ --without-bench --without-docs \ --enable-large-files \ --with-comment \ --without-readline \ 2>&1 | tee /info/make/$suffix print "now do $ make 2>&1 | tee -a /info/make/$suffix" exit --enable-thread-safe-client \ M= kêöÖù…¤�¥%w”·:”Ž·:”Ž·:!  ¥%./usr/local/lib/mysql-client-3.23/INSTALL-SOURCEó/¤�Installing MySQL **************** * Menu: * Getting MySQL:: How to get *MySQL* * Which OS:: Operating systems supported by *MySQL* * Which version:: Which *MySQL* version to use * Many versions:: How and when updates are released * Installation layouts:: Installation layouts * Installing binary:: Installing a *MySQL* binary distribution * Installing source:: Installing a *MySQL* source distribution * Installing source tree:: Installing *MySQL* from development source tree * Compilation problems:: Problems compiling? * MIT-pthreads:: MIT-pthreads notes * Perl support:: Perl installation comments * Source install system issues:: System-specific issues * Windows:: Windows notes * OS/2:: OS/2 notes * MySQL binaries:: MySQL binaries * Post-installation:: Post-installation setup and testing * Installing many servers:: Installing many servers on the same machine * Upgrade:: Upgrading/Downgrading MySQL This chapter describes how to obtain and install *MySQL*: * For a list of sites from which you can obtain *MySQL*, see *Note Getting *MySQL*: Getting MySQL. * To see which platforms are supported, see *Note Which OS::. * Several versions of *MySQL* are available in both binary and source distributions. We also provide public access to our current source tree for those who want to see our most recent developments and help us test new code. To determine which version and type of distribution you should use, see *Note Many versions::. * Installation instructions for binary and source distributions are described in *Note Installing binary:: and *Note Installing source::. Each set of instructions includes a section on system-specific problems you may run into. * For post-installation procedures, see *Note Post-installation::. These procedures apply whether you install *MySQL* using a binary or source distribution. How to Get MySQL ================ Check the *MySQL* home page (http://www.mysql.com/) for information about the current version and for downloading instructions. Our main download mirror is located at: http://download.sourceforge.net/mirrors/mysql/ (http://download.sourceforge.net/mirrors/mysql/) If you are interested in becoming a *MySQL* mirror site, you may anonymously rsync with: `rsync://download.sourceforge.net/mysql/'. Please send e-mail to notifying us of your mirror to be added to the list below. If you have problems downloading from our main site, try using one of the mirrors listed below. Please report bad or out-of-date mirrors to . *Europe:* * Austria [Univ. of Technology/Vienna] WWW (http://gd.tuwien.ac.at/db/mysql/) FTP (ftp://gd.tuwien.ac.at/db/mysql/) * Bulgaria [online.bg/Sofia] WWW (http://mysql.online.bg/) FTP (ftp://mysql.online.bg/) * Czech Republic [Masaryk University in Brno] WWW (http://mysql.linux.cz/index.html) FTP (ftp://ftp.fi.muni.cz/pub/mysql/) * Czech Republic [www.sopik.cz] WWW (http://www.mysql.cz/) * Czech Republic [www.gin.cz] WWW (http://mysql.gin.cz/) FTP (ftp://ftp.gin.cz/pub/MIRRORS/www.mysql.com/) * Denmark [Borsen] WWW (http://mysql.borsen.dk/) * Denmark [SunSITE] WWW (http://SunSITE.auc.dk/mysql/) FTP (ftp://SunSITE.auc.dk/pub/databases/mysql/) * Estonia [OKinteractive] WWW (http://mysql.mirror.ok.ee) * France [mtesa.net] WWW (http://mysql.mtesa.net/) * Finland [tonnikala.net] WWW (http://mysql.tonnikala.org/) * Germany [Kernelnotes.de, Bonn] WWW (http://www.kernelnotes.de/mysql/) FTP (ftp://ftp.kernelnotes.de/pub/mirror/mysql.org/) * Germany [Wolfenbuettel] WWW (http://www.fh-wolfenbuettel.de/ftp/pub/database/mysql/) FTP (ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/) * Greece [NTUA, Athens] WWW (http://www.ntua.gr/mysql/) FTP (ftp://ftp.ntua.gr/pub/databases/mysql/) * Hungary [Xenia] WWW (http://mysql.sote.hu/) FTP (ftp://xenia.sote.hu/pub/mirrors/www.mysql.com/) * Iceland [GM] WWW (http://mysql.gm.is/) FTP (ftp://ftp.gm.is/pub/mysql/) * Italy [feelinglinux.com] WWW (http://mysql.feelinglinux.com/) * Italy [Teta Srl] WWW (http://www.teta.it/mysql/) * Italy [tzone.it] WWW (http://mysql.tzone.it/) * Ireland [Esat Net] WWW (http://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/) FTP (ftp://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/) * Netherlands [Silverpoint] WWW (http://mysql.silverpoint.nl/) * Netherlands [Widexs BV] WWW (http://mysql.widexs.nl/) FTP (ftp://mysql.widexs.nl/pub/mysql/) * Poland [Sunsite] WWW (http://sunsite.icm.edu.pl/mysql/) FTP (ftp://sunsite.icm.edu.pl/pub/unix/mysql/) * Poland [ncservice.com/Gdansk] WWW (http://mysql.service.net.pl/) * Portugal [Netc] WWW (http://ftp.netc.pt/pub/mysql/) FTP (ftp://ftp.netc.pt/pub/mysql/) * Romania [roedu.net/Bucharest] FTP (ftp://ftp.roedu.net/pub/mirrors/ftp.mysql.com/) * Russia [DirectNet] WWW (http://mysql.directnet.ru/) FTP (ftp://ftp.dn.ru/pub/MySQL/) * Russia [Scientific Center/Chernogolovka] FTP (ftp://ftp.chg.ru/pub/databases/mysql/) * Switzerland [Sunsite] WWW (http://sunsite.cnlab-switch.ch/ftp/mirror/mysql/) FTP (ftp://sunsite.cnlab-switch.ch/mirror/mysql/) * UK [Omnipotent/UK] WWW (http://mysql.omnipotent.net/) FTP (ftp://mysql.omnipotent.net/) * UK [PLiG/UK] WWW (http://ftp.plig.org/pub/mysql/) FTP (ftp://ftp.plig.org/pub/mysql/) * Ukraine [PACO] WWW (http://mysql.paco.net.ua) FTP (ftp://mysql.paco.net.ua/) * Ukraine [ISP Alkar Teleport/Dnepropetrovsk] WWW (http://mysql.dp.ua/) *North America:* * Canada [Tryc] WWW (http://web.tryc.on.ca/mysql/) * USA [Hurricane Electric/San Jose] WWW (http://mysql.he.net/) * USA [ValueClick, Los Angeles CA] WWW (http://mysql.valueclick.com/) FTP (ftp://mysql.valueclick.com/mysql/) * USA [Circle Net/North Carolina] WWW (http://www.mysql.net) * USA [Wisconsin University/Wisconsin] WWW (http://mirror.sit.wisc.edu/mysql/) FTP (ftp://mirror.sit.wisc.edu/mirrors/mysql/) * USA [LinuxWired/Scottsdale, AZ] WWW (http://mysql.linuxwired.net/) FTP (ftp://ftp.linuxwired.net/pub/mirrors/mysql/) * USA [Venoma.Org/Valdosta, GA] WWW (http://mysql.venoma.org/) * USA [adgrafix.com/Boston, MA] WWW (http://mysql.adgrafix.com/) *South America:* * Argentina [bannerlandia.com] WWW (http://mysql.bannerlandia.com.ar/) FTP (ftp://mysql.bannerlandia.com.ar/mirrors/mysql/) * Chile [Vision] WWW (http://mysql.vision.cl/) * Chile [PSINet] WWW (http://mysql.psinet.cl/) FTP (ftp://ftp.psinet.cl/pub/database/mysql/) * Chile [Tecnoera] WWW (http://mysql.tecnoera.com/) *Asia:* * China [Freecode] WWW (http://www.freecode.net.cn/mirror/mysql/) * China [linuxforum.net] WWW (http://www2.linuxforum.net/mirror/mysql/) * China [ISL/Hong Kong] WWW (http://mysql.islnet.net) * China [TraLand.com/Hong Kong] WWW (http://www.traland.com/mysql/) * South Korea [Webiiz] WWW (http://mysql.webiiz.com/) * South Korea [PanworldNet] WWW (http://mysql.holywar.net/) * Japan [Soft Agency] WWW (http://www.softagency.co.jp/MySQL) * Japan [u-aizu.ac.jp/Aizu] FTP (ftp://ftp.u-aizu.ac.jp/ftp/pub/dbms/mysql/mysql.com) * Singapore [HJC] WWW (http://mysql.hjc.edu.sg) FTP (ftp://ftp.hjc.edu.sg/mysql) * Taiwan [TTN] WWW (http://mysql.ttn.net) * Taiwan [nctu.edu/HsinChu] WWW (http://mysql.nctu.edu.tw/) *Australia:* * Australia [AARNet/Queensland] WWW (http://mirror.aarnet.edu.au/mysql) FTP (ftp://mirror.aarnet.edu.au/pub/mysql) *Africa:* * South-Africa [Mweb] WWW (http://www.mysql.mweb.co.za/) * South Africa [The Internet Solution/Johannesburg] FTP (ftp://ftp.is.co.za/linux/mysql/) Operating Systems Supported by MySQL ==================================== We use GNU Autoconf, so it is possible to port *MySQL* to all modern systems with working Posix threads and a C++ compiler. (To compile only the client code, a C++ compiler is required but not threads.) We use and develop the software ourselves primarily on Sun Solaris (Versions 2.5 - 2.7) and RedHat Linux Version 6.x. Note that for many operating systems, the native thread support works only in the latest versions. *MySQL* has been reported to compile sucessfully on the following operating system/thread package combinations: * AIX 4.x with native threads. *Note IBM-AIX::. * BSDI 2.x with the included MIT-pthreads package. *Note BSDI::. * BSDI 3.0, 3.1 and 4.x with native threads. *Note BSDI::. * DEC Unix 4.x with native threads. *Note Alpha-DEC-UNIX::. * FreeBSD 2.x with the included MIT-pthreads package. *Note FreeBSD::. * FreeBSD 3.x and 4.x with native threads. *Note FreeBSD::. * HP-UX 10.20 with the included MIT-pthreads package. *Note HP-UX 10.20::. * HP-UX 11.x with the native threads. *Note HP-UX 11.x::. * Linux 2.0+ with LinuxThreads 0.7.1+ or `glibc' 2.0.7+ . *Note Linux::. * Mac OS X Server. *Note Mac OS X::. * NetBSD 1.3/1.4 Intel and NetBSD 1.3 Alpha (Requires GNU make). *Note NetBSD::. * OpenBSD > 2.5 with native therads. OpenBSD < 2.5 with the included MIT-pthreads package. *Note OpenBSD::. * OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. *Note OS/2::. * SGI Irix 6.x with native threads. *Note SGI-Irix::. * Solaris 2.5 and above with native threads on SPARC and x86. *Note Solaris::. * SunOS 4.x with the included MIT-pthreads package. *Note Solaris::. * SCO OpenServer with a recent port of the FSU Pthreads package. *Note SCO::. * SCO UnixWare 7.0.1. *Note SCO Unixware::. * Tru64 Unix * Win95, Win98, NT, and Win2000. *Note Windows::. Which MySQL Version to Use ========================== The first decision to make is whether you want to use the latest development release or the last stable release: * Normally, if you are beginning to use *MySQL* for the first time or trying to port it to some system for which there is no binary distribution, we recommend going with the development release (currently Version 3.23.35. This is because there are usually no really serious bugs in the development release, and you can easily test it on your machine with the `crash-me' and benchmark tests. *Note Benchmarks::. Note that all *MySQL* releases are checked with the *MySQL* benchmarks and an extensive test suite before each release. * Otherwise, if you are running an old system and want to upgrade, but don't want to take chances with the development version, you should upgrade to the latest in the same branch you are using (where only the last version number is newer than yours). We have tried to fix only fatal bugs and make small, relatively safe changes to that version. The second decision to make is whether you want to use a source distribution or a binary distribution. In most cases you should probably use a binary distribution, if there exist one for your platform, as this is generally, it will be easier to install than a source distribution. In the following cases you will probably be better of with a source installation: * If you want to install *MySQL* at some explicit location. (The standard binary distributions are 'ready to run' at any place, but you may want to get even more flexibility). * If you want to configure `mysqld' with some extra feature that is NOT in the standard binary distributions. Here is a list of the most common extra options that you may want to use * -with-berkeley-db * -with-raid * -with-libwrap * -with-named-z-lib (This is done for some of the binaries) * -with-debugging[=full] * The default binary distribution is normally compiled with support for all characters sets and should work on a variety of processors from the same processor family. If you want a faster *MySQL* server you may want to recompile it with support for only the character sets you need, use a better compiler (like pgcc) or use compiler options that are better optimized for your processor. * If you have found a bug and reported it to the *MySQL* development team you will probably got a patch that you need to apply to the source distribution to get the bug fixed. * If you want to read (and/or modify) the C and C++ code that makes up *MySQL*, you should get a source distribution. The source code is always the ultimate manual. Source distributions also contain more tests and examples than binary distributions. The *MySQL* naming scheme uses release numbers that consist of three numbers and a suffix. For example, a release name like `mysql-3.21.17-beta' is interpreted like this: * The first number (`3') describes the file format. All Version 3 releases have the same file format. When a Version 4 appears, every table will have to be converted to the new format (nice tools for this will be included, of course.) * The second number (`21') is the release level. Normally there are two to choose from. One is the release/stable branch (currently `22') and the other is the development branch (currently `23') . Normally both are stable, but the development version may have quirks, missing documentation on new features, or may fail to compile on some systems. * The third number (`17') is the version number within the release level. This is incremented for each new distribution. Usually you want the latest version for the release level you have choosen. * The suffix (`beta') indicates the stability level of the release. The possible suffixes are: - `alpha' indicates that the release contains some large section of new code that hasn't been 100% tested. Known bugs (usually there are none) should be documented in the News section. *Note News::. There are also new commands and extensions in most alpha releases. Active development that may involve major code changes can occur on an alpha release, but everything will be tested before doing a release. There should be no known bugs in any *MySQL* release. - `beta' means that all new code has been tested. No major new features that could cause corruption on old code are added. There should be no known bugs. A version changes from alpha to beta when there haven't been any reported fatal bugs within an alpha version for at least a month and we don't plan to add any features that could make any old command more unreliable. - `gamma' is a beta that has been around a while and seems to work fine. Only minor fixes are added. This is what many other companies call a release. - If there is no suffix, it means that the version has been run for a while at many different sites with no reports of bugs other than platform-specific bugs. Only critical bug fixes are applied to the release. This is what we call a stable release. All versions of *MySQL* are run through our standard tests and benchmarks to ensure that they are relatively safe to use. Because the standard tests are extended over time to check for all previously found bugs, the test suite keeps getting better. Note that all releases have been tested at least with: An internal test suite This is part of a production system for a customer. It has many tables with hundreds of megabytes of data. The *MySQL* benchmark suite This runs a range of common queries. It is also a test to see whether the latest batch of optimizations actually made the code faster. *Note Benchmarks::. The `crash-me' test This tries to determine what features the database supports and what its capabilities and limitations are. *Note Benchmarks::. Another test is that we use the newest *MySQL* version in our internal production environment, on at least one machine. We have more than 100 gigabytes of data to work with. How and When Updates Are Released ================================= *MySQL* is evolving quite rapidly here at MySQL AB and we want to share this with other *MySQL* users. We try to make a release when we have very useful features that others seem to have a need for. We also try to help out users who request features that are easy to implement. We take note of what our licensed users want to have, and we especially take note of what our extended e-mail supported customers want and try to help them out. No one has to download a new release. The News section will tell you if the new release has something you really want. *Note News::. We use the following policy when updating *MySQL*: * For each minor update, the last number in the version string is incremented. When there are major new features or minor incompatibilities with previous versions, the second number in the version string is incremented. When the file format changes, the first number is increased. * Stable tested releases are meant to appear about 1-2 times a year, but if small bugs are found, a release with only bug fixes will be released. * Working releases are meant to appear about every 1-8 weeks. * Binary distributions for some platforms will be made by us for major releases. Other people may make binary distributions for other systems but probably less frequently. * We usually make patches available as soon as we have located and fixed small bugs. * For non-critical but annoying bugs, we will make patches available if they are sent to us. Otherwise we will combine many of them into a larger patch. * If there is, by any chance, a fatal bug in a release we will make a new release as soon as possible. We would like other companies to do this, too. The current stable release is Version 3.23; We have already moved active development to Version 4.0. Bugs will still be fixed in the stable version. We don't believe in a complete freeze, as this also leaves out bug fixes and things that "must be done." "Somewhat frozen" means that we may add small things that "almost surely will not affect anything that's already working." Installation Layouts ==================== This section describes the default layout of the directories created by installing binary and source distributions. A binary distribution is installed by unpacking it at the installation location you choose (typically `/usr/local/mysql') and creates the following directories in that location: *Directory* *Contents of directory* `bin' Client programs and the `mysqld' server `data' Log files, databases `include' Include (header) files `lib' Libraries `scripts' `mysql_install_db' `share/mysql' Error message files `sql-bench' Benchmarks A source distribution is installed after you configure and compile it. By default, the installation step installs files under `/usr/local', in the following subdirectories: *Directory* *Contents of directory* `bin' Client programs and scripts `include/mysql' Include (header) files `info' Documentation in Info format `lib/mysql' Libraries `libexec' The `mysqld' server `share/mysql' Error message files `sql-bench' Benchmarks and `crash-me' test `var' Databases and log files Within an installation directory, the layout of a source installation differs from that of a binary installation in the following ways: * The `mysqld' server is installed in the `libexec' directory rather than in the `bin' directory. * The data directory is `var' rather than `data'. * `mysql_install_db' is installed in the `/usr/local/bin' directory rather than in `/usr/local/mysql/scripts'. * The header file and library directories are `include/mysql' and `lib/mysql' rather than `include' and `lib'. You can create your own binary installation from a compiled source distribution by executing the script `scripts/make_binary_distribution'. Installing a MySQL Binary Distribution ====================================== * Menu: * Linux-RPM:: Linux RPM files * Building clients:: Building client programs * Binary install system issues:: System-specific issues You need the following tools to install a *MySQL* binary distribution: * GNU `gunzip' to uncompress the distribution. * A reasonable `tar' to unpack the distribution. GNU `tar' is known to work. Sun `tar' is known to have problems. An alternative installation method under Linux is to use RPM (RedHat Package Manager) distributions. *Note Linux-RPM::. If you run into problems, *PLEASE ALWAYS USE* `mysqlbug' when posting questions to . Even if the problem isn't a bug, `mysqlbug' gathers system information that will help others solve your problem. By not using `mysqlbug', you lessen the likelihood of getting a solution to your problem! You will find `mysqlbug' in the `bin' directory after you unpack the distribution. *Note Bug reports::. The basic commands you must execute to install and use a *MySQL* binary distribution are: shell> groupadd mysql shell> useradd -g mysql mysql shell> cd /usr/local shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf - shell> ln -s mysql-VERSION-OS mysql shell> cd mysql shell> scripts/mysql_install_db shell> chown -R root /usr/local/mysql shell> chown -R mysql /usr/local/mysql/var shell> chgrp -R mysql /usr/local/mysql shell> chown -R root /usr/local/mysql/bin/ shell> bin/safe_mysqld --user=mysql & You can add new users using the `bin/mysql_setpermission' script if you install the `DBI' and `Msql-Mysql-modules' Perl modules. A more detailed description follows. To install a binary distribution, follow the steps below, then proceed to *Note Post-installation::, for post-installation setup and testing: 1. Pick the directory under which you want to unpack the distribution, and move into it. In the example below, we unpack the distribution under `/usr/local' and create a directory `/usr/local/mysql' into which *MySQL* is installed. (The following instructions therefore assume you have permission to create files in `/usr/local'. If that directory is protected, you will need to perform the installation as `root'.) 2. Obtain a distribution file from one of the sites listed in *Note Getting *MySQL*: Getting MySQL. *MySQL* binary distributions are provided as compressed `tar' archives and have names like `mysql-VERSION-OS.tar.gz', where `VERSION' is a number (for example, `3.21.15'), and `OS' indicates the type of operating system for which the distribution is intended (for example, `pc-linux-gnu-i586'). 3. Add a user and group for `mysqld' to run as: shell> groupadd mysql shell> useradd -g mysql mysql These commands add the `mysql' group and the `mysql' user. The syntax for `useradd' and `groupadd' may differ slightly on different Unixes. They may also be called `adduser' and `addgroup'. You may wish to call the user and group something else instead of `mysql'. 4. Change into the intended installation directory: shell> cd /usr/local 5. Unpack the distribution and create the installation directory: shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf - shell> ln -s mysql-VERSION-OS mysql The first command creates a directory named `mysql-VERSION-OS'. The second command makes a symbolic link to that directory. This lets you refer more easily to the installation directory as `/usr/local/mysql'. 6. Change into the installation directory: shell> cd mysql You will find several files and subdirectories in the `mysql' directory. The most important for installation purposes are the `bin' and `scripts' subdirectories. `bin' This directory contains client programs and the server You should add the full pathname of this directory to your `PATH' environment variable so that your shell finds the *MySQL* programs properly. *Note Environment variables::. `scripts' This directory contains the `mysql_install_db' script used to initialize the server access permissions. 7. If you would like to use `mysqlaccess' and have the *MySQL* distribution in some nonstandard place, you must change the location where `mysqlaccess' expects to find the `mysql' client. Edit the `bin/mysqlaccess' script at approximately line 18. Search for a line that looks like this: $MYSQL = '/usr/local/bin/mysql'; # path to mysql executable Change the path to reflect the location where `mysql' actually is stored on your system. If you do not do this, you will get a `Broken pipe' error when you run `mysqlaccess'. 8. Create the *MySQL* grant tables (necessary only if you haven't installed *MySQL* before): shell> scripts/mysql_install_db Note that *MySQL* versions older than Version 3.22.10 started the *MySQL* server when you run `mysql_install_db'. This is no longer true! 9. Change ownership of binaries to `root' and ownership of the data directory to the user that you will run `mysqld' as: shell> chown -R root /usr/local/mysql shell> chown -R mysql /usr/local/mysql/var shell> chgrp -R mysql /usr/local/mysql The first command changes the `owner' attribute of the files to the `root' user, the second one changes the `owner' attribute of the data directory to the `mysql' user, and the third one changes the `group' attribute to the `mysql' group. 10. If you want to install support for the Perl `DBI'/`DBD' interface, see *Note Perl support::. 11. If you would like *MySQL* to start automatically when you boot your machine, you can copy `support-files/mysql.server' to the location where your system has its startup files. More information can be found in the `support-files/mysql.server' script itself and in *Note Automatic start::. After everything has been unpacked and installed, you should initialize and test your distribution. You can start the *MySQL* server with the following command: shell> bin/safe_mysqld --user=mysql & *Note safe_mysqld::. *Note Post-installation::. Linux RPM Notes --------------- The recommended way to install *MySQL* on Linux is by using an RPM file. The *MySQL* RPMs are currently being built on a RedHat Version 6.2 system but should work on other versions of Linux that support `rpm' and use `glibc'. If you have problems with an RPM file, for example, if you receive the error "`Sorry, the host 'xxxx' could not be looked up'", see *Note Binary notes-Linux::. The RPM files you may want to use are: * `MySQL-VERSION.i386.rpm' The *MySQL* server. You will need this unless you only want to connect to a *MySQL* server running on another machine. * `MySQL-client-VERSION.i386.rpm' The standard *MySQL* client programs. You probably always want to install this package. * `MySQL-bench-VERSION.i386.rpm' Tests and benchmarks. Requires Perl and msql-mysql-modules RPMs. * `MySQL-devel-VERSION.i386.rpm' Libraries and include files needed if you want to compile other *MySQL* clients, such as the Perl modules. * `MySQL-VERSION.src.rpm' This contains the source code for all of the above packages. It can also be used to try to build RPMs for other architectures (for example, Alpha or SPARC). To see all files in an RPM package, run: shell> rpm -qpl MySQL-VERSION.i386.rpm To perform a standard minimal installation, run: shell> rpm -i MySQL-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm To install just the client package, run: shell> rpm -i MySQL-client-VERSION.i386.rpm The RPM places data in `/var/lib/mysql'. The RPM also creates the appropriate entries in `/etc/rc.d/' to start the server automatically at boot time. (This means that if you have performed a previous installation, you may want to make a copy of your previously installed *MySQL* startup file if you made any changes to it, so you don't lose your changes.) After installing the RPM file(s), the `mysqld' daemon should be running and you should now be able to start using *MySQL*. *Note Post-installation::. If something goes wrong, you can find more information in the binary installation chapter. *Note Installing binary::. Building Client Programs ------------------------ If you compile *MySQL* clients that you've written yourself or that you obtain from a third party, they must be linked using the `-lmysqlclient' option on the link command. You may also need to specify a `-L' option to tell the linker where to find the library. For example, if the library is installed in `/usr/local/mysql/lib', use `-L/usr/local/mysql/lib -lmysqlclient' on the link command. For clients that use *MySQL* header files, you may need to specify a `-I' option when you compile them (for example, `-I/usr/local/mysql/include'), so the compiler can find the header files. System-specific Issues ---------------------- * Menu: * Binary notes-Linux:: Linux notes for binary distribution * Binary notes-HP-UX:: HP-UX notes for binary distribution The following sections indicate some of the issues that have been observed on particular systems when installing *MySQL* from a binary distribution. Linux Notes for Binary Distributions .................................... *MySQL* needs at least Linux Version 2.0. The binary release is linked with `-static', which means you do not normally need to worry about which version of the system libraries you have. You need not install LinuxThreads, either. A program linked with `-static' is slightly bigger than a dynamically linked program but also slightly faster (3-5%). One problem, however, is that you can't use user-definable functions (UDFs) with a statically linked program. If you are going to write or use UDF functions (this is something only for C or C++ programmers), you must compile *MySQL* yourself, using dynamic linking. If you are using a `libc'-based system (instead of a `glibc2' system), you will probably get some problems with hostname resolving and getpwnam() with the binary release. (This is because `glibc' unfortunately depends on some external libraries to resolve hostnames and getpwent() , even when compiled with `-static'). In this case you probably get the following error message when you run `mysql_install_db': Sorry, the host 'xxxx' could not be looked up or the following error when you try to run mysqld with the `--user' option: getpwnam: No such file or directory You can solve this problem in one of the following ways: * Get a *MySQL* source distribution (an RPM or the `tar.gz' distribution) and install this instead. * Execute `mysql_install_db --force'; This will not execute the `resolveip' test in `mysql_install_db'. The downside is that you can't use host names in the grant tables; you must use IP numbers instead (except for `localhost'). If you are using an old *MySQL* release that doesn't support `--force', you have to remove the `resolveip' test in `mysql_install' with an editor. * Start mysqld with `su' instead of using `--user'. The Linux-Intel binary and RPM releases of *MySQL* are configured for the highest possible speed. We are always trying to use the fastest stable compiler available. *MySQL* Perl support requires Version Perl 5.004_03 or newer. On some Linux 2.2 versions, you may get the error `Resource temporarily unavailable' when you do a lot of new connections to a `mysqld' server over TCP/IP. The problem is that Linux has a delay between when you close a TCP/IP socket and until this is actually freed by the system. As there is only room for a finite number of TCP/IP slots, you will get the above error if you try to do too many new TCP/IP connections during a small time, like when you run the *MySQL* `test-connect' benchmark over TCP/IP. We have mailed about this problem a couple of times to different Linux mailing lists but have never been able to resolve this properly. The only known 'fix' to this problem is to use persistent connections in your clients or use sockets, if you are running the database server and clients on the same machine. We hope that the `Linux 2.4' kernel will fix this problem in the future. HP-UX Notes for Binary Distributions .................................... Some of the binary distributions of *MySQL* for HP-UX is distributed as an HP depot file and as a tar file. To use the depot file you must be running at least HP-UX 10.x to have access to HP's software depot tools. The HP version of *MySQL* was compiled on an HP 9000/8xx server under HP-UX 10.20, and uses MIT-pthreads. It is known to work well under this configuration. *MySQL* Version 3.22.26 and newer can also be built with HP's native thread package. Other configurations that may work: * HP 9000/7xx running HP-UX 10.20+ * HP 9000/8xx running HP-UX 10.30 The following configurations almost definitely won't work: * HP 9000/7xx or 8xx running HP-UX 10.x where x < 2 * HP 9000/7xx or 8xx running HP-UX 9.x To install the distribution, use one of the commands below, where `/path/to/depot' is the full pathname of the depot file: * To install everything, including the server, client and development tools: shell> /usr/sbin/swinstall -s /path/to/depot mysql.full * To install only the server: shell> /usr/sbin/swinstall -s /path/to/depot mysql.server * To install only the client package: shell> /usr/sbin/swinstall -s /path/to/depot mysql.client * To install only the development tools: shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer The depot places binaries and libraries in `/opt/mysql' and data in `/var/opt/mysql'. The depot also creates the appropriate entries in `/etc/init.d' and `/etc/rc2.d' to start the server automatically at boot time. Obviously, this entails being `root' to install. To install the HP-UX tar.gz distribution, you must have a copy of GNU `tar'. Installing a MySQL Source Distribution ====================================== You need the following tools to build and install *MySQL* from source: * GNU `gunzip' to uncompress the distribution. * A reasonable `tar' to unpack the distribution. GNU `tar' is known to work. Sun `tar' is known to have problems. * A working ANSI C++ compiler. `gcc' >= 2.8.1, `egcs' >= 1.0.2, SGI C++, and SunPro C++ are some of the compilers that are known to work. `libg++' is not needed when using `gcc'. `gcc' 2.7.x has a bug that makes it impossible to compile some perfectly legal C++ files, such as `sql/sql_base.cc'. If you only have `gcc' 2.7.x, you must upgrade your `gcc' to be able to compile *MySQL*. `gcc' >= 2.95.2 is recommended when compiling *MySQL* Version 3.23.x. * A good `make' program. GNU `make' is always recommended and is sometimes required. If you have problems, we recommend trying GNU `make' 3.75 or newer. If you run into problems, *PLEASE ALWAYS USE `mysqlbug'* when posting questions to . Even if the problem isn't a bug, `mysqlbug' gathers system information that will help others solve your problem. By not using `mysqlbug', you lessen the likelihood of getting a solution to your problem! You will find `mysqlbug' in the `scripts' directory after you unpack the distribution. *Note Bug reports::. * Menu: * Quick install:: Quick installation overview * Applying patches:: Applying patches * configure options:: Typical `configure' options Quick Installation Overview --------------------------- The basic commands you must execute to install a *MySQL* source distribution are: shell> groupadd mysql shell> useradd -g mysql mysql shell> gunzip < mysql-VERSION.tar.gz | tar -xvf - shell> cd mysql-VERSION shell> ./configure --prefix=/usr/local/mysql shell> make shell> make install shell> scripts/mysql_install_db shell> chown -R root /usr/local/mysql shell> chown -R mysql /usr/local/mysql/var shell> chgrp -R mysql /usr/local/mysql shell> /usr/local/mysql/bin/safe_mysqld --user=mysql & If you start from a source RPM, then do the following: shell> rpm --rebuild MySQL-VERSION.src.rpm This will make a binary RPM that you can install. You can add new users using the `bin/mysql_setpermission' script if you install the `DBI' and `Msql-Mysql-modules' Perl modules. A more detailed description follows. To install a source distribution, follow the steps below, then proceed to *Note Post-installation::, for post-installation initialization and testing: 1. Pick the directory under which you want to unpack the distribution, and move into it. 2. Obtain a distribution file from one of the sites listed in *Note Getting *MySQL*: Getting MySQL. 3. If you are interested in using Berkeley DB tables with MySQL, you will need to obtain a patched version of the Berkeley DB source code. Please read the chapter on Berkeley DB tables before proceeding. *Note BDB::. *MySQL* source distributions are provided as compressed `tar' archives and have names like `mysql-VERSION.tar.gz', where `VERSION' is a number like 3.23.35. 4. Add a user and group for `mysqld' to run as: shell> groupadd mysql shell> useradd -g mysql mysql These commands add the `mysql' group, and the `mysql' user. The syntax for `useradd' and `groupadd' may differ slightly on different Unixes. They may also be called `adduser' and `addgroup'. You may wish to call the user and group something else instead of `mysql'. 5. Unpack the distribution into the current directory: shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf - This command creates a directory named `mysql-VERSION'. 6. Change into the top-level directory of the unpacked distribution: shell> cd mysql-VERSION Note that currently you must configure and build *MySQL* from this top-level directory. You can not build it in a different directory. 7. Configure the release and compile everything: shell> ./configure --prefix=/usr/local/mysql shell> make When you run `configure', you might want to specify some options. Run `./configure --help' for a list of options. *Note `configure' options: configure options, discusses some of the more useful options. If `configure' fails, and you are going to send mail to to ask for assistance, please include any lines from `config.log' that you think can help solve the problem. Also include the last couple of lines of output from `configure' if `configure' aborts. Post the bug report using the `mysqlbug' script. *Note Bug reports::. If the compile fails, see *Note Compilation problems::, for help with a number of common problems. 8. Install everything: shell> make install You might need to run this command as `root'. 9. Create the *MySQL* grant tables (necessary only if you haven't installed *MySQL* before): shell> scripts/mysql_install_db Note that *MySQL* versions older than Version 3.22.10 started the *MySQL* server when you run `mysql_install_db'. This is no longer true! 10. Change ownership of binaries to `root' and ownership of the data directory to the user that you will run `mysqld' as: shell> chown -R root /usr/local/mysql shell> chown -R mysql /usr/local/mysql/var shell> chgrp -R mysql /usr/local/mysql The first command changes the `owner' attribute of the files to the `root' user, the second one changes the `owner' attribute of the data directory to the `mysql' user, and the third one changes the `group' attribute to the `mysql' group. 11. If you want to install support for the Perl `DBI'/`DBD' interface, see *Note Perl support::. 12. If you would like *MySQL* to start automatically when you boot your machine, you can copy `support-files/mysql.server' to the location where your system has its startup files. More information can be found in the `support-files/mysql.server' script itself and in *Note Automatic start::. After everything has been installed, you should initialize and test your distribution: shell> /usr/local/mysql/bin/safe_mysqld --user=mysql & If that command fails immediately with `mysqld daemon ended' then you can find some information in the file `mysql-data-directory/'hostname'.err'. The likely reason is that you already have another `mysqld' server running. *Note Multiple servers::. *Note Post-installation::. Applying Patches ---------------- Sometimes patches appear on the mailing list or are placed in the patches area (http://www.mysql.com/Downloads/Patches) of the *MySQL* Web site. To apply a patch from the mailing list, save the message in which the patch appears in a file, change into the top-level directory of your *MySQL* source tree, and run these commands: shell> patch -p1 < patch-file-name shell> rm config.cache shell> make clean Patches from the FTP site are distributed as plain text files or as files compressed with `gzip'. Apply a plain patch as shown above for mailing list patches. To apply a compressed patch, change into the top-level directory of your *MySQL* source tree and run these commands: shell> gunzip < patch-file-name.gz | patch -p1 shell> rm config.cache shell> make clean After applying a patch, follow the instructions for a normal source install, beginning with the `./configure' step. After running the `make install' step, restart your *MySQL* server. You may need to bring down any currently running server before you run `make install'. (Use `mysqladmin shutdown' to do this.) Some systems do not allow you to install a new version of a program if it replaces the version that is currently executing. Typical `configure' Options --------------------------- The `configure' script gives you a great deal of control over how you configure your *MySQL* distribution. Typically you do this using options on the `configure' command line. You can also affect `configure' using certain environment variables. *Note Environment variables::. For a list of options supported by `configure', run this command: shell> ./configure --help Some of the more commonly-used `configure' options are described below: * To compile just the *MySQL* client libraries and client programs and not the server, use the `--without-server' option: shell> ./configure --without-server If you don't have a C++ compiler, `mysql' will not compile (it is the one client program that requires C++). In this case, you can remove the code in `configure' that tests for the C++ compiler and then run `./configure' with the `--without-server' option. The compile step will still try to build `mysql', but you can ignore any warnings about `mysql.cc'. (If `make' stops, try `make -k' to tell it to continue with the rest of the build even if errors occur.) * If you don't want your log files and database directories located under `/usr/local/var', use a `configure' command, something like one of these: shell> ./configure --prefix=/usr/local/mysql shell> ./configure --prefix=/usr/local \ --localstatedir=/usr/local/mysql/data The first command changes the installation prefix so that everything is installed under `/usr/local/mysql' rather than the default of `/usr/local'. The second command preserves the default installation prefix, but overrides the default location for database directories (normally `/usr/local/var') and changes it to `/usr/local/mysql/data'. * If you are using Unix and you want the *MySQL* socket located somewhere other than the default location (normally in the directory `/tmp' or `/var/run') use a `configure' command like this: shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock Note that the given file must be an absolute pathname! * If you want to compile statically linked programs (for example, to make a binary distribution, to get more speed, or to work around problems with some RedHat distributions), run `configure' like this: shell> ./configure --with-client-ldflags=-all-static \ --with-mysqld-ldflags=-all-static * If you are using `gcc' and don't have `libg++' or `libstdc++' installed, you can tell `configure' to use `gcc' as your C++ compiler: shell> CC=gcc CXX=gcc ./configure When you use `gcc' as your C++ compiler, it will not attempt to link in `libg++' or `libstdc++'. Here is some common environment variables to set depending on the compiler you are using: gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors" egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" gcc 2.95.2 CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" pgcc 2.90.29 CFLAGS="-O6 -mpentiumpro -mstack-align-double" or newer CXX=gcc CXXFLAGS="-O6 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti" In most cases you can get a resonable optimal *MySQL* binary picking the options from the above and add the following options to the configure line: --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static The full configure line would in other words be something like the following for all recent gcc versions: CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static The binaries we provide at on the MySQL home site `http://www.mysql.com', are all compiled with full optimization and should be ok for most users. *Note MySQL binaries::. There is some things one can tweak to make an even faster binary, but this is only for advanced users. *Note Compile and link options::. If the build fails and produces errors about your compiler or linker not being able to create the shared library `libmysqlclient.so.#' (`#' is a version number), you can work around this problem by giving the `--disable-shared' option to `configure'. In this case, `configure' will not build a shared `libmysqlclient.so.#' library. * You can configure *MySQL* not to use `DEFAULT' column values for non-`NULL' columns (that is, columns that are not allowed to be `NULL'). This causes `INSERT' statements to generate an error unless you explicitly specify values for all columns that require a non-`NULL' value. To suppress use of default values, run `configure' like this: shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure * By default, *MySQL* uses the ISO-8859-1 (Latin1) character set. To change the default set, use the `--with-charset' option: shell> ./configure --with-charset=CHARSET `CHARSET' may be one of `big5', `cp1251', `cp1257', `czech', `danish', `dec8', `dos', `euc_kr', `gb2312', `gbk', `german1', `hebrew', `hp8', `hungarian', `koi8_ru', `koi8_ukr', `latin1', `latin2', `sjis', `swe7', `tis620', `ujis', `usa7', or `win1251ukr'. *Note Character sets::. If you want to convert characters between the server and the client, you should take a look at the `SET OPTION CHARACTER SET' command. *Note `SET OPTION': SET OPTION. *Warning:* If you change character sets after having created any tables, you will have to run `myisamchk -r -q' on every table. Your indexes may be sorted incorrectly otherwise. (This can happen if you install *MySQL*, create some tables, then reconfigure *MySQL* to use a different character set and reinstall it.) * To configure *MySQL* with debugging code, use the `--with-debug' option: shell> ./configure --with-debug This causes a safe memory allocator to be included that can find some errors and that provides output about what is happening. *Note Debugging server::. * If your client programs are using threads, you need to also compile a thread-safe version of the *MySQL* client library with the `--with-thread-safe-client' configure options. This will create a `libmysqlclient_r' library with which you should link your threaded applications. *Note Thread-safe clients::. * Options that pertain to particular systems can be found in the system-specific sections later in this chapter. *Note Source install system issues::. Installing from development source tree ======================================= *CAUTION:* You should only read this section if you are interested in helping us test our new code. If you just want to get *MySQL* up and running on your system, you should use either source or binary distribution. Below are the instructions to obtain our most recent development source tree: * Download *BitKeeper* from `http://www.bitmover.com/cgi-bin/download.cgi'. You will need *Bitkeeper* 2.0 or newer to access our repository. * Follow the instructions to install it. * Once *BitKeeper* is installed, if you want to clone 3.23 branch, `bk clone bk://work.mysql.com:7000 mysql', and `bk clone bk://work.mysql.com:7001 mysql-4.0' for 4.0 branch The initial download may take a while, depending on the speed of your connection. * You will need GNU autoconf/automake, libtool, and m4 to do the next stage. If you get some strange error during the first stage, check that you really have libtool installed! cd mysql bk -r edit aclocal; autoheader; autoconf; automake; ./configure # Add your favorite options here make We have a collection of our standard configure scripts in the `BUILD/' subdirectory - if you are lazy, you can do `BUILD/compile-pentium-debug' . It will actually work on a lot of non-x86 machines despite its name. * Once the build is done, `make install'. Be careful with this on a production machine - this may overwrite your live release binary. We recommend that if you have another installation of *MySQL* that you `./configure' with different values for `prefix', `tcp-port', and `unix-socket-path'. * Play hard with your new installation and try to make the new features crash. Start by running `make test'. *Note MySQL test suite::. * If you have gotten to the `make' stage and it does not compile, please report it to . If you have installed the update version of the required GNU tools, and they crash trying to process our configuration files, please report it also. However, if you execute `aclocal' and get `command not found', or a similar problem, do not report it - make sure all the needed tools are installed and your `PATH' variable is set correctly. * After the initial `bk clone', do `bk pull' to get the updates. If you are using the most recent beta version of BitKeeper, you should use `bk opull' instead. * You can examine change history of the tree with all the diffs with `bk sccstool'. If you see some funny diffs or code that you have a question about, do not hesitate and e-mail . Also if you think you have a better idea on how to do something, send an email to the same place with a patch - `bk diffs' will produce a patch for you after you have made changes to the source. If you do not have the time to code your idea, just send a description. * *BitKeeper* has a nice help utility - `bk helptool'. Problems Compiling? =================== All *MySQL* programs compile cleanly for us with no warnings on Solaris using `gcc'. On other systems, warnings may occur due to differences in system include files. See *Note MIT-pthreads::, for warnings that may occur when using MIT-pthreads. For other problems, check the list below. The solution to many problems involves reconfiguring. If you do need to reconfigure, take note of the following: * If `configure' is run after it already has been run, it may use information that was gathered during its previous invocation. This information is stored in `config.cache'. When `configure' starts up, it looks for that file and reads its contents if it exists, on the assumption that the information is still correct. That assumption is invalid when you reconfigure. * Each time you run `configure', you must run `make' again to recompile. However, you may want to remove old object files from previous builds first, because they were compiled using different configuration options. To prevent old configuration information or object files from being used, run these commands before rerunning `configure': shell> rm config.cache shell> make clean Alternatively, you can run `make distclean'. The list below describes some of the problems compiling *MySQL* that have been found to occur most often: * If you get errors when compiling `sql_yacc.cc', such as the ones shown below, you have probably run out of memory or swap space: Internal compiler error: program cc1plus got fatal signal 11 or Out of virtual memory or Virtual memory exhausted The problem is that `gcc' requires huge amounts of memory to compile `sql_yacc.cc' with inline functions. Try running `configure' with the `--with-low-memory' option: shell> ./configure --with-low-memory This option causes `-fno-inline' to be added to the compile line if you are using `gcc' and `-O0' if you are using something else. You should try the `--with-low-memory' option even if you have so much memory and swap space that you think you can't possibly have run out. This problem has been observed to occur even on systems with generous hardware configurations, and the `--with-low-memory' option usually fixes it. * By default, `configure' picks `c++' as the compiler name and GNU `c++' links with `-lg++'. If you are using `gcc', that behavior can cause problems during configuration such as this: configure: error: installation or configuration problem: C++ compiler cannot create executables. You might also observe problems during compilation related to `g++', `libg++', or `libstdc++'. One cause of these problems is that you may not have `g++', or you may have `g++' but not `libg++', or `libstdc++'. Take a look at the `config.log' file. It should contain the exact reason why your c++ compiler didn't work! To work around these problems, you can use `gcc' as your C++ compiler. Try setting the environment variable `CXX' to `"gcc -O3"'. For example: shell> CXX="gcc -O3" ./configure This works because `gcc' compiles C++ sources as well as `g++' does, but does not link in `libg++' or `libstdc++' by default. Another way to fix these problems, of course, is to install `g++', `libg++' and `libstdc++'. * If your compile fails with errors, such as any of the following, you must upgrade your version of `make' to GNU `make': making all in mit-pthreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment or make: file `Makefile' line 18: Must be a separator (: or pthread.h: No such file or directory Solaris and FreeBSD are known to have troublesome `make' programs. GNU `make' Version 3.75 is known to work. * If you want to define flags to be used by your C or C++ compilers, do so by adding the flags to the `CFLAGS' and `CXXFLAGS' environment variables. You can also specify the compiler names this way using `CC' and `CXX'. For example: shell> CC=gcc shell> CFLAGS=-O6 shell> CXX=gcc shell> CXXFLAGS=-O6 shell> export CC CFLAGS CXX CXXFLAGS See *Note MySQL binaries::, for a list of flag definitions that have been found to be useful on various systems. * If you get an error message like this, you need to upgrade your `gcc' compiler: client/libmysql.c:273: parse error before `__attribute__' `gcc' 2.8.1 is known to work, but we recommend using `gcc' 2.95.2 or `egcs' 1.0.3a instead. * If you get errors such as those shown below when compiling `mysqld', `configure' didn't correctly detect the type of the last argument to `accept()', `getsockname()', or `getpeername()': cxx: Error: mysqld.cc, line 645: In this statement, the referenced type of the pointer value "&length" is "unsigned long", which is not compatible with "int". new_sock = accept(sock, (struct sockaddr *)&cAddr, &length); To fix this, edit the `config.h' file (which is generated by `configure'). Look for these lines: /* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXX Change `XXX' to `size_t' or `int', depending on your operating system. (Note that you will have to do this each time you run `configure', because `configure' regenerates `config.h'.) * The `sql_yacc.cc' file is generated from `sql_yacc.yy'. Normally the build process doesn't need to create `sql_yacc.cc', because *MySQL* comes with an already-generated copy. However, if you do need to re-create it, you might encounter this error: "sql_yacc.yy", line xxx fatal: default action causes potential... This is a sign that your version of `yacc' is deficient. You probably need to install `bison' (the GNU version of `yacc') and use that instead. * If you need to debug `mysqld' or a *MySQL* client, run `configure' with the `--with-debug' option, then recompile and link your clients with the new client library. *Note Debugging client::. MIT-pthreads Notes ================== This section describes some of the issues involved in using MIT-pthreads. Note that on Linux you should NOT use MIT-pthreads but install LinuxThreads! *Note Linux::. If your system does not provide native thread support, you will need to build *MySQL* using the MIT-pthreads package. This includes older FreeBSD systems, SunOS 4.x, Solaris 2.4 and earlier, and some others. *Note Which OS::. * On most systems, you can force MIT-pthreads to be used by running `configure' with the `--with-mit-threads' option: shell> ./configure --with-mit-threads Building in a non-source directory is not supported when using MIT-pthreads, because we want to minimize our changes to this code. * The checks that determine whether or not to use MIT-pthreads occur only during the part of the configuration process that deals with the server code. If you have configured the distribution using `--without-server' to build only the client code, clients will not know whether or not MIT-pthreads is being used and will use Unix socket connections by default. Because Unix sockets do not work under MIT-pthreads, this means you will need to use `-h' or `--host' when you run client programs. * When *MySQL* is compiled using MIT-pthreads, system locking is disabled by default for performance reasons. You can tell the server to use system locking with the `--use-locking' option. * Sometimes the pthread `bind()' command fails to bind to a socket without any error message (at least on Solaris). The result is that all connections to the server fail. For example: shell> mysqladmin version mysqladmin: connect to server at '' failed; error: 'Can't connect to mysql server on localhost (146)' The solution to this is to kill the `mysqld' server and restart it. This has only happened to us when we have forced the server down and done a restart immediately. * With MIT-pthreads, the `sleep()' system call isn't interruptible with `SIGINT' (break). This is only noticeable when you run `mysqladmin --sleep'. You must wait for the `sleep()' call to terminate before the interrupt is served and the process stops. * When linking, you may receive warning messages like these (at least on Solaris); they can be ignored: ld: warning: symbol `_iob' has differing sizes: (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4; file /usr/lib/libc.so value=0x140); /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken ld: warning: symbol `__iob' has differing sizes: (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4; file /usr/lib/libc.so value=0x140); /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken * Some other warnings also can be ignored: implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)' * We haven't gotten `readline' to work with MIT-pthreads. (This isn't needed, but may be interesting for someone.) Perl Installation Comments ========================== * Menu: * Perl installation:: Installing Perl on Unix * ActiveState Perl:: Installing ActiveState Perl on Windows * Windows Perl:: Installing the *MySQL* Perl distribution on Windows * Perl support problems:: Problems using the Perl `DBI'/`DBD' interface Installing Perl on Unix ----------------------- Perl support for *MySQL* is provided by means of the `DBI'/`DBD' client interface. *Note Perl::. The Perl `DBD'/`DBI' client code requires Perl Version 5.004 or later. The interface _will not work_ if you have an older version of Perl. *MySQL* Perl support also requires that you've installed *MySQL* client programming support. If you installed *MySQL* from RPM files, client programs are in the client RPM, but client programming support is in the developer RPM. Make sure you've installed the latter RPM. As of Version 3.22.8, Perl support is distributed separately from the main *MySQL* distribution. If you want to install Perl support, the files you will need can be obtained from `http://www.mysql.com/Downloads/Contrib/'. The Perl distributions are provided as compressed `tar' archives and have names like `MODULE-VERSION.tar.gz', where `MODULE' is the module name and `VERSION' is the version number. You should get the `Data-Dumper', `DBI', and `Msql-Mysql-modules' distributions and install them in that order. The installation procedure is shown below. The example shown is for the `Data-Dumper' module, but the procedure is the same for all three distributions: 1. Unpack the distribution into the current directory: shell> gunzip < Data-Dumper-VERSION.tar.gz | tar xvf - This command creates a directory named `Data-Dumper-VERSION'. 2. Change into the top-level directory of the unpacked distribution: shell> cd Data-Dumper-VERSION 3. Build the distribution and compile everything: shell> perl Makefile.PL shell> make shell> make test shell> make install The `make test' command is important because it verifies that the module is working. Note that when you run that command during the `Msql-Mysql-modules' installation to exercise the interface code, the *MySQL* server must be running or the test will fail. It is a good idea to rebuild and reinstall the `Msql-Mysql-modules' distribution whenever you install a new release of *MySQL*, particularly if you notice symptoms such as all your `DBI' scripts dumping core after you upgrade *MySQL*. If you don't have the right to install Perl modules in the system directory or if you to install local Perl modules, the following reference may help you: `http://www.iserver.com/support/contrib/perl5/modules.html' Look under the heading `Installing New Modules that Require Locally Installed Modules'. Installing ActiveState Perl on Windows -------------------------------------- To install the *MySQL* `DBD' module with ActiveState Perl on Windows, you should do the following: * Get activestate perl from `http://www.activestate.com/Products/ActivePerl/index.html' and install it. * Open a DOS shell. * If required, set the HTTP_proxy variable. For example, you might try: `set HTTP_proxy=my.proxy.com:3128' * Start the PPM program: `C:\perl\bin\ppm.pl' * If you have not already done so, install `DBI': `install DBI' * If this succeeds, install `ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd' The above should work at least with ActiveState Perl Version 5.6. If you can't get the above to work, you should instead install the *MyODBC* driver and connect to *MySQL* server through ODBC: use DBI; $dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") || die "Got error $DBI::errstr when connecting to $dsn\n"; Installing the MySQL Perl Distribution on Windows ------------------------------------------------- The *MySQL* Perl distribution contains `DBI', `DBD:MySQL' and `DBD:ODBC'. * Get the Perl distribution for Windows from `http://www.mysql.com/download.html'. * Unzip the distribution in `C:' so that you get a `C:\PERL' directory. * Add the directory `C:\PERL\BIN' to your path. * Add the directory `C:\PERL\BIN\MSWIN32-x86-thread' or `C:\PERL\BIN\MSWIN32-x86' to your path. * Test that `perl' works by executing `perl -v' in a DOS shell. Problems Using the Perl `DBI'/`DBD' Interface --------------------------------------------- If Perl reports that it can't find the `../mysql/mysql.so' module, then the problem is probably that Perl can't locate the shared library `libmysqlclient.so'. You can fix this by any of the following methods: * Compile the `Msql-Mysql-modules' distribution with `perl Makefile.PL -static -config' rather than `perl Makefile.PL'. * Copy `libmysqlclient.so' to the directory where your other shared libraries are located (probably `/usr/lib' or `/lib'). * On `Linux' you can add the pathname of the directory where `libmysqlclient.so' is located to the `/etc/ld.so.conf' file. * Add the pathname of the directory where `libmysqlclient.so' is located to the `LD_RUN_PATH' environment variable. If you get the following errors from `DBD-mysql', you are probably using `gcc' (or using an old binary compiled with `gcc'): /usr/bin/perl: can't resolve symbol '__moddi3' /usr/bin/perl: can't resolve symbol '__divdi3' Add `-L/usr/lib/gcc-lib/... -lgcc' to the link command when the `mysql.so' library gets built (check the output from `make' for `mysql.so' when you compile the Perl client). The `-L' option should specify the pathname of the directory where `libgcc.a' is located on your system. Another cause of this problem may be that Perl and *MySQL* aren't both compiled with `gcc'. In this case, you can solve the mismatch by compiling both with `gcc'. If you get the following error from `Msql-Mysql-modules' when you run the tests: t/00base............install_driver(mysql) failed: Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169. it means that you need to include the compression library, -lz, to the link line. This can be doing the following change in the file `lib/DBD/mysql/Install.pm': $sysliblist .= " -lm"; to $sysliblist .= " -lm -lz"; After this, you MUST run 'make realclean' and then proceed with the installation from the beginning. If you want to use the Perl module on a system that doesn't support dynamic linking (like SCO) you can generate a static version of Perl that includes `DBI' and `DBD-mysql'. The way this works is that you generate a version of Perl with the `DBI' code linked in and install it on top of your current Perl. Then you use that to build a version of Perl that additionally has the `DBD' code linked in, and install that. On SCO, you must have the following environment variables set: shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib or shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/lib shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man: First, create a Perl that includes a statically linked `DBI' by running these commands in the directory where your `DBI' distribution is located: shell> perl Makefile.PL -static -config shell> make shell> make install shell> make perl Then you must install the new Perl. The output of `make perl' will indicate the exact `make' command you will need to execute to perform the installation. On SCO, this is `make -f Makefile.aperl inst_perl MAP_TARGET=perl'. Next, use the just-created Perl to create another Perl that also includes a statically-linked `DBD::mysql' by running these commands in the directory where your `Msql-Mysql-modules' distribution is located: shell> perl Makefile.PL -static -config shell> make shell> make install shell> make perl Finally, you should install this new Perl. Again, the output of `make perl' indicates the command to use. System-specific Issues ====================== The following sections indicate some of the issues that have been observed to occur on particular systems when installing *MySQL* from a source distribution. * Menu: * Solaris:: Solaris notes * Solaris 2.7:: Solaris 2.7 / 2.8 notes * Solaris x86:: Solaris x86 notes * SunOS:: SunOS 4 notes * Linux:: Linux notes (all Linux versions) * Alpha-DEC-UNIX:: Alpha-DEC-UNIX notes * Alpha-DEC-OSF1:: Alpha-DEC-OSF1 notes * SGI-Irix:: SGI-Irix notes * FreeBSD:: FreeBSD notes * NetBSD:: NetBSD notes * OpenBSD:: OpenBSD 2.5 notes * BSDI:: BSD/OS notes * SCO:: SCO notes * SCO Unixware:: SCO Unixware 7.0 notes * IBM-AIX:: IBM-AIX notes * HP-UX 10.20:: HP-UX 10.20 notes * HP-UX 11.x:: HP-UX 11.x notes * Mac OS X:: Mac OS X notes * BEOS:: BeOS Notes Solaris Notes ------------- On Solaris, you may run into trouble even before you get the *MySQL* distribution unpacked! Solaris `tar' can't handle long file names, so you may see an error like this when you unpack *MySQL*: x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks tar: directory checksum error In this case, you must use GNU `tar' (`gtar') to unpack the distribution. You can find a precompiled copy for Solaris at `http://www.mysql.com/Downloads/'. Sun native threads work only on Solaris 2.5 and higher. For Version 2.4 and earlier, *MySQL* will automatically use MIT-pt threads. *Note MIT-pthreads::. If you get the following error from configure: checking for restartable system calls... configure: error can not run test programs while cross compiling this means that you have something wrong with your compiler installation! In this case you should upgrade your compiler to a newer version. You may also be able to solve this problem by inserting the following row into the `config.cache' file: ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'} If you are using Solaris on a SPARC, the recommended compiler is `gcc' 2.95.2. You can find this at `http://gcc.gnu.org/'. Note that `egs' 1.1.1 and `gcc' 2.8.1 don't work reliably on SPARC! The recommended `configure' line when using `gcc' 2.95.2 is: CC=gcc CFLAGS="-O6" \ CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler If you have a ultra sparc, you can get 4 % more performance by adding "-mcpu=v8 -Wa,-xarch=v8plusa" to CFLAGS and CXXFLAGS. If you have the Sun Workshop (SunPro) 4.2 (or newer) compiler, you can run `configure' like this: CC=cc CFLAGS="-Xa -fast -xO4 -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -xO4 -mt" \ ./configure --prefix=/usr/local/mysql --enable-assembler You may also have to edit the `configure' script to change this line: #if !defined(__STDC__) || __STDC__ != 1 to this: #if !defined(__STDC__) If you turn on `__STDC__' with the `-Xc' option, the Sun compiler can't compile with the Solaris `pthread.h' header file. This is a Sun bug (broken compiler or broken include file). If `mysqld' issues the error message shown below when you run it, you have tried to compile *MySQL* with the Sun compiler without enabling the multi-thread option (`-mt'): libc internal error: _rmutex_unlock: rmutex not held Add `-mt' to `CFLAGS' and `CXXFLAGS' and try again. If you get the following error when compiling *MySQL* with `gcc', it means that your `gcc' is not configured for your version of Solaris: shell> gcc -O3 -g -O2 -DDBUG_OFF -o thr_alarm ... ./thr_alarm.c: In function `signal_hand': ./thr_alarm.c:556: too many arguments to function `sigwait' The proper thing to do in this case is to get the newest version of `gcc' and compile it with your current `gcc' compiler! At least for Solaris 2.5, almost all binary versions of `gcc' have old, unusable include files that will break all programs that use threads (and possibly other programs)! Solaris doesn't provide static versions of all system libraries (`libpthreads' and `libdl'), so you can't compile *MySQL* with `--static'. If you try to do so, you will get the error: ld: fatal: library -ldl: not found If too many processes try to connect very rapidly to `mysqld', you will see this error in the *MySQL* log: Error in accept: Protocol error You might try starting the server with the `--set-variable back_log=50' option as a workaround for this. *Note Command-line options::. If you are linking your own *MySQL* client, you might get the following error when you try to execute it: ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory The problem can be avoided by one of the following methods: * Link the client with the following flag (instead of `-Lpath'): `-Wl,r/full-path-to-libmysqlclient.so'. * Copy `libmysqclient.so' to `/usr/lib'. * Add the pathname of the directory where `libmysqlclient.so' is located to the `LD_RUN_PATH' environment variable before running your client. When using the `--with-libwrap' configure option, you must also include the libraries that `libwrap.a' needs: --with-libwrap="/opt/NUtcpwrapper-7.6/lib/libwrap.a -lnsl -lsocket If you have problems with configure trying to link with `-lz' and you don't have `zlib' installed, you have two options: * If you want to be able to use the compressed communication protocol, you need to get and install zlib from ftp.gnu.org. * Configure with `--with-named-z-libs=no'. If you are using gcc and have problems with loading `UDF' functions into *MySQL*, try adding `-lgcc' to the link line for the `UDF' function. If you would like *MySQL* to start automatically, you can copy `support-files/mysql.server' to `/etc/init.d' and create a symbolic link to it named `/etc/rc3.d/S99mysql.server'. Solaris 2.7/2.8 Notes --------------------- You can normally use a Solaris 2.6 binary on Solaris 2.7 and 2.8. Most of the Solaris 2.6 issues also apply for Solaris 2.7 and 2.8. Note that *MySQL* Version 3.23.4 and above should be able to autodetect new versions of Solaris and enable workarounds for the following problems! Solaris 2.7 / 2.8 has some bugs in the include files. You may see the following error when you use `gcc': /usr/include/widec.h:42: warning: `getwc' redefined /usr/include/wchar.h:326: warning: this is the location of the previous definition If this occurs, you can do the following to fix the problem: Copy `/usr/include/widec.h' to `.../lib/gcc-lib/os/gcc-version/include' and change line 41 from: #if !defined(lint) && !defined(__lint) to #if !defined(lint) && !defined(__lint) && !defined(getwc) Alternatively, you can edit `/usr/include/widec.h' directly. Either way, after you make the fix, you should remove `config.cache' and run `configure' again! If you get errors like this when you run `make', it's because `configure' didn't detect the `curses.h' file (probably because of the error in `/usr/include/widec.h'): In file included from mysql.cc:50: /usr/include/term.h:1060: syntax error before `,' /usr/include/term.h:1081: syntax error before `;' The solution to this is to do one of the following: * Configure with `CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H ./configure'. * Edit `/usr/include/widec.h' as indicted above and rerun configure. * Remove the `#define HAVE_TERM' line from `config.h' file and run `make' again. If you get a problem that your linker can't find `-lz' when linking your client program, the problem is probably that your `libz.so' file is installed in `/usr/local/lib'. You can fix this by one of the following methods: * Add `/usr/local/lib' to `LD_LIBRARY_PATH'. * Add a link to `libz.so' from `/lib'. * If you are using Solaris 8, you can install the optional zlib from your Solaris 8 CD distribution. * configure *MySQL* with the `--with-named-z-libs=no' option. Solaris x86 Notes ----------------- If you are using `gcc' or `egcs' on Solaris x86 and you experience problems with core dumps under load, you should use the following `configure' command: CC=gcc CFLAGS="-O6 -fomit-frame-pointer -DHAVE_CURSES_H" \ CXX=gcc \ CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti -DHAVE_CURSES_H" \ ./configure --prefix=/usr/local/mysql This will avoid problems with the `libstdc++' library and with C++ exceptions. If this doesn't help, you should compile a debug version and run it with a trace file or under `gdb'. *Note Debugging server::. SunOS 4 Notes ------------- On SunOS 4, MIT-pthreads is needed to compile *MySQL*, which in turn means you will need GNU `make'. Some SunOS 4 systems have problems with dynamic libraries and `libtool'. You can use the following `configure' line to avoid this problem: shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static When compiling `readline', you may get warnings about duplicate defines. These may be ignored. When compiling `mysqld', there will be some `implicit declaration of function' warnings. These may be ignored. Linux Notes (All Linux Versions) -------------------------------- *MySQL* uses LinuxThreads on Linux. If you are using an old Linux version that doesn't have `glibc2', you must install LinuxThreads before trying to compile *MySQL*. `http://www.mysql.com/Downloads/Linux' Note that `glibc' versions before and including Version 2.1.1 have a fatal bug in `pthread_mutex_timedwait' handling, which is used when you do `INSERT DELAYED'. If you are using `INSERT DELAYED', you *MUST* add the following patch to your glibc library: `http://www.mysql.com/Downloads/Patches/glibc-pthread_cond_timedwait.patch'. *MySQL* Versions 3.23.7 and 3.22.32 contain a temporary workaround for this bug. If you plan to have 1000+ concurrent connections, you will need to make some changes to LinuxThreads, recompile it, and relink MySQL against the new `libpthread.a'. Increase `PTHREAD_THREADS_MAX' in `sysdeps/unix/sysv/linux/bits/local_lim.h' to 4096 and decrease `STACK_SIZE' in `linuxthreads/internals.h' to 256 KB. The paths are relative to the root of `glibc' Note that MySQL will not be stable with around 600-1000 connections if `STACK_SIZE' is the default of 2 MB. `STACK_SIZE' constant in *LinuxThreads* controls the spacing of thread stacks in the address space. It needs to be large enough so that there will be plenty of room for the stack of each individual thread, but small enough to keep the stack of some thread from running into the global `mysqld' data. Unfortunately, Linux implementation of `mmap()', as we have experimentaly discovered, will successfully unmap an already mapped region if you ask it to map out an address already in use, zeroing out the data on the entire page, instead of returning an error. So the safety of `mysqld' or any other threaded application depends on the "gentleman" behaviour of the code that creates threads - the user must take measures to make sure the number of running threads at any time is sufficiently low for thread stacks to stay away from the global heap. With `mysqld', you should enforce this "gentleman" behaviour by setting a reasonable value for `max_connections' variable. If you build *MySQL* yourself and do not what to mess with patching *LinuxThreads*, you should set `max_connections' to a value no higher than 500. It should be even less if you have a large key buffer, large heap tables, or some other things that make *mysqld* allocate a lot of memory or if you are running a 2.2 kernel with a 2 GB patch. If you are using our binary or RPM version 3.23.25 or later, you can safely set `max_connections' at 1500 again assuming no large key buffer or heap tables with lots of data. The more you reduce `STACK_SIZE' in LinuxThreads the more threads you can safely create. We recommend the values between 128K and 256 K. If you use a lot of concurrent connections, you may suffer from a 2.2 kernel "feature" in 2.2 kernel that penalizes a process for forking or cloning a child in an attempt to prevent a fork bomb attack. This will cause MySQL not to scale well as you increase the number of concurrent clients. On single CPU systems, we have seen this manifested in a very slow thread creation - which means it may take a long time to connect to MySQL (as long as 1 minute), and it may take just as long to shut it down. On multiple CPU systems, we have observed a gradual drop in query speed as the number of clients increases. In the process of trying to find a solution, we have received a kernel patch from one of our users, who claimed it made a lot of difference for his site. We have done some limited testing in which the patch greatly improved the scalabitility of MySQL. The patch is available here (`http://www.mysql.com/Downloads/Patches/linux-fork.patch'). We have done a rather extensive testing of this patch - Sasha Pachev has bravely put it on his development machine, and it now has run without problems for a year. Eventually, we have felt sufficiently confident about it that we installed it on several systems of one of our biggest customers. The patch has signficantly improved `MySQL' performance without causing any problems. So it should be pretty safe. This issue has been fixed in the 2.4 kernel. We have also tested *MySQL* on 2.4 kernel on a 2 CPU machine and found *MySQL* scales MUCH better - there was virtually no slowdown on query throughput all the way up to 1000 clients. If your plan to set up a dedicated Linux SMP machine to run *MySQL* under heavy load, we recommend that you give 2.4 kernel a try! We are currently trying to collect some info on how well `MySQL' performs on 2.4 kernel on 4-way and 8-way systems. If you have access such a system and have done some benchmarks, please send a mail to with the results - we will include them in the manual. There is another issue that greatly hurts *MySQL* performance, especially on SMP systems. The current implementation of mutex in Linuxthreads is also very bad for programs with many threads that only hold the mutex for a short time. On an SMP system, ironic as it is, if you link *MySQL* against unmodified *LinuxThreads*, removing processors from the machine improves *MySQL* performance in many cases. We have made a patch available for glibc 2.1, linuxthreads-2.1-patch (http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch) and for glibc 2.2, linuxthreads-2.2-patch (http://www.mysql.com/Downloads/Linux/linuxthreads-2.2-patch) to correct this behaviour. Please note that since there are so many versions of glibc floating around, the patch may not apply cleanly to yours, so some manual work may be required. We recommend that you use the above patched to build a special static version of `libpthread.a' and use it only for statically linking against `MySQL'. We know that the patch is safe for `MySQL' and significantly improves its performance, but we cannot say anything about other applications. If you link other applications against the patched version of the library, or build a patched shared version and install it on your system, you are doing it at your own risk with regard to other applicatioins that depend on `LinuxThreads'. If you can't start `mysqld' or if `mysql_install_db' doesn't work, please continue reading! This only happens on Linux system with problems in the LinuxThreads or `libc'/`glibc' libraries. There are a lot of simple workarounds to get *MySQL* to work! The simplest is to use the binary version of *MySQL* (not the RPM) for Linux x86. One nice aspect of this version is that it's probably 10% faster than any version you would compile yourself! *Note Compile and link options::. One known problem with the binary distribution is that with older Linux systems that use `libc' (like RedHat 4.x or Slackware), you will get some non-fatal problems with hostname resolution. *Note Binary notes-Linux::. `myisamchk' hangs with `libc.so.5.3.12'. Upgrading to the newest `libc' fixes this problem. When using LinuxThreads you will see a minimum of three processes running. These are in fact threads. There will be one thread for the LinuxThreads manager, one thread to handle connections, and one thread to handle alarms and signals. Note that the linux kernel and the linuxthread library can by default only have 1024 threads. This means that you can only have up to 1021 connections to MySQL on a unpatched system. The page `http://www.volano.com/linuxnotes.html' contains information how to go around this limit. If you see a dead `mysqld' daemon process with `ps', this usually means that you have found a bug in *MySQL* or you have a corrupted table. *Note Crashing::. To get a core dump on Linux if mysqld dies with a SIGSEGV signal, you can start mysqld with the `--core-file' option. Note that you also probably need to raise the `core file size' by adding `ulimit -c 1000000' to `safe_mysqld' or starting `safe_mysqld' with `--core-file-sizes=1000000'. *Note safe_mysqld::. If you are using LinuxThreads and `mysqladmin shutdown' doesn't work, you must upgrade to LinuxThreads Version 0.7.1 or newer. If you are using RedHat, you might get errors like this: /usr/bin/perl is needed... /usr/sh is needed... /usr/sh is needed... If so, you should upgrade your version of `rpm' to `rpm-2.4.11-1.i386.rpm' and `rpm-devel-2.4.11-1.i386.rpm' (or later). You can get the upgrades of libraries to RedHat Version 4.2 from `ftp://ftp.redhat.com/updates/4.2/i386'. Or `http://www.sunsite.unc.edu/pub/Linux/distributions/redhat/code/rpm/' for other distributions. If you are linking your own *MySQL* client and get the error: ld.so.1: ./my: fatal: libmysqlclient.so.4: open failed: No such file or directory When executing them, the problem can be avoided by one of the following methods: * Link the client with the following flag (instead of `-Lpath'): `-Wl,r/path-libmysqlclient.so'. * Copy `libmysqclient.so' to `/usr/lib'. * Add the pathname of the directory where `libmysqlclient.so' is located to the `LD_RUN_PATH' environment variable before running your client. If you are using the Fujitsu compiler `(fcc / FCC)' you will have some problems compiling *MySQL* because the Linux header files are very `gcc' oriented. The following `configure' line should work with `fcc/FCC': CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE -DCONST=const -DNO_STRTOLL_PROTO" CXX=FCC CXXFLAGS="-O -K fast -K lib -K omitfp -K preex --no_exceptions --no_rtti -D_GNU_SOURCE -DCONST=const -Dalloca=__builtin_alloca -DNO_STRTOLL_PROTO '-D_EXTERN_INLINE=static __inline'" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-low-memory * Menu: * Linux-x86:: Linux-x86 notes * Linux-RedHat50:: RedHat 5.0 notes * Linux-RedHat51:: RedHat 5.1 notes * Linux-SPARC:: Linux-SPARC notes * Linux-Alpha:: Linux-Alpha notes * MKLinux:: MkLinux notes * Qube2:: Qube2 Linux notes * Linux-Ia64:: Linux-Ia64 notes Linux-x86 Notes ............... *MySQL* requires `libc' Version 5.4.12 or newer. It's known to work with `libc' 5.4.46. `glibc' Version 2.0.6 and later should also work. There have been some problems with the `glibc' RPMs from RedHat, so if you have problems, check whether or not there are any updates! The `glibc' 2.0.7-19 and 2.0.7-29 RPMs are known to work. On some older Linux distributions, `configure' may produce an error like this: Syntax error in sched.h. Change _P to __P in the /usr/include/sched.h file. See the Installation chapter in the Reference Manual. Just do what the error message says and add an extra underscore to the `_P' macro that has only one underscore, then try again. You may get some warnings when compiling; those shown below can be ignored: mysqld.cc -o objs-thread/mysqld.o mysqld.cc: In function `void init_signals()': mysqld.cc:315: warning: assignment of negative value `-1' to `long unsigned int' mysqld.cc: In function `void * signal_hand(void *)': mysqld.cc:346: warning: assignment of negative value `-1' to `long unsigned int' In Debian GNU/Linux, if you want *MySQL* to start automatically when the system boots, do the following: shell> cp support-files/mysql.server /etc/init.d/mysql.server shell> /usr/sbin/update-rc.d mysql.server defaults 99 `mysql.server' can be found in the `share/mysql' directory under the *MySQL* installation directory or in the `support-files' directory of the *MySQL* source tree. If `mysqld' always core dumps when it starts up, the problem may be that you have an old `/lib/libc.a'. Try renaming it, then remove `sql/mysqld' and do a new `make install' and try again. This problem has been reported on some Slackware installations. RedHat Version 5.0 also has a similar problem with some new `glibc' versions. *Note Linux-RedHat50::. If you get the following error when linking `mysqld', it means that your `libg++.a' is not installed correctly: /usr/lib/libc.a(putc.o): In function `_IO_putc': putc.o(.text+0x0): multiple definition of `_IO_putc' You can avoid using `libg++.a' by running `configure' like this: shell> CXX=gcc ./configure RedHat Version 5.0 Notes ........................ If you have any problems with *MySQL* on RedHat, you should start by upgrading `glibc' to the newest possible version! If you install all the official RedHat patches (including `glibc-2.0.7-19' and `glibc-devel-2.0.7-19'), both the binary and source distributions of *MySQL* should work without any trouble! The updates are needed because there is a bug in `glibc' 2.0.5 in how `pthread_key_create' variables are freed. With `glibc' 2.0.5, you must use a statically linked *MySQL* binary distribution. If you want to compile from source, you must install the corrected version of LinuxThreads from `http://www.mysql.com/Downloads/Linux' or upgrade your `glibc'. If you have an incorrect version of `glibc' or LinuxThreads, the symptom is that `mysqld' crashes after each connection. For example, `mysqladmin version' will crash `mysqld' when it finishes! Another symptom of incorrect libraries is that `mysqld' crashes at once when it starts. On some Linux systems, this can be fixed by configuring like this: shell> ./configure --with-mysqld-ldflags=-all-static On Redhat Version 5.0, the easy way out is to install the `glibc' 2.0.7-19 RPM and run `configure' *without* the `--with-mysqld-ldflags=-all-static' option. For the source distribution of `glibc' 2.0.7, a patch that is easy to apply and is tested with *MySQL* may be found at: `http://www.mysql.com/Download/Linux/glibc-2.0.7-total-patch.tar.gz' If you experience crashes like these when you build *MySQL*, you can always download the newest binary version of *MySQL*. This is statically-linked to avoid library conflicts and should work on all Linux systems! *MySQL* comes with an internal debugger that can generate trace files with a lot of information that can be used to find and solve a wide range of different problems. *Note Debugging server::. RedHat Version 5.1 notes ........................ The `glibc' of RedHat Version 5.1 (`glibc' 2.0.7-13) has a memory leak, so to get a stable *MySQL* version, you must upgrade `glibc', to 2.0.7-19, downgrade `glibc' or use a binary version of `mysqld'. If you don't do this, you will encounter memory problems (out of memory, etc.). The most common error in this case is: Can't create a new thread (errno 11). If you are not out of available memory, you can consult the manual for any possible OS dependent bug After you have upgraded to `glibc' 2.0.7-19, you can configure *MySQL* with dynamic linking (the default), but you *cannot* run `configure' with the `--with-mysqld-ldflags=-all-static' option until you have installed `glibc' 2.0.7-19 from source! You can check which version of `glibc' you have with `rpm -q glibc'. Another reason for the above error is if you try to use more threads than your Linux kernel is configured for. In this case you should raise the limits in `include/linux/tasks.h' and recompile your kernel! Linux-SPARC Notes ................. In some implementations, `readdir_r()' is broken. The symptom is that `SHOW DATABASES' always returns an empty set. This can be fixed by removing `HAVE_READDIR_R' from `config.h' after configuring and before compiling. Some problems will require patching your Linux installation. The patch can be found at `http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff'. This patch is against the Linux distribution `sparclinux-2.0.30.tar.gz' that is available at `vger.rutgers.edu' (a version of Linux that was never merged with the official 2.0.30). You must also install LinuxThreads Version 0.6 or newer. Linux-Alpha Notes ................. *MySQL* Version 3.23.12 is the first *MySQL* version that is tested on Linux-Alpha. If you plan to use *MySQL* on Linux-Alpha, you should ensure that you have this version or newer. We have tested *MySQL* on Alpha with our benchmarks + test suite and it appears to work nicely. The main thing we haven't yet had time to test is how things works with many concurrent users. When we compiled the standard *MySQL* binary we are using SuSE 6.4, kernel 2.2.13-SMP, Compaq C compiler (V6.2-504) and Compaq C++ compiler (V6.3-005) on a Comaq DS20 machine with an Alpha EV6 processor You can find the above compilers at `http://www.support.compaq.com/alpha-tools'). By using these compilers, instead of gcc, we get about 9-14 % better performance with *MySQL*. Note that the configure line optimized the binary for the current CPU; This means you can only use our binary if you have an Alpha EV6 processor. We also compile staticly to avoid library problems. CC=ccc CFLAGS="-fast" CXX=cxx CXXFLAGS="-fast -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared If you want to use egcs the following configure line worked for us: CFLAGS="-O6 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --disable-shared Some known problems when running *MySQL* on Linux-Alpha: * Debugging threaded applications like *MySQL* will not work with `gdb 4.18'. You should download and use gdb 5.0 instead! * If you try linking mysqld staticly when using gcc, the resulting image will core dump at start. In other words, *DON'T* use `--with-mysqld-ldflags=-all-static' with gcc MkLinux Notes ............. *MySQL* should work on MkLinux with the newest `glibc' package (tested with `glibc' 2.0.7). Qube2 Linux Notes ................. To get *MySQL* to work on Qube2, (Linux Mips), you need the newest `glibc' libraries (`glibc-2.0.7-29C2' is known to work). You must also use the `egcs' C++ compiler (`egcs-1.0.2-9', `gcc 2.95.2' or newer). Linux IA64 Notes ................ To get *MySQL* to compile on Linux Ia64, we had to do the following (we assume that this will be easier when next gcc version for ia64 is released). Using `gcc-2.9-final': CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charsets=complex After `make' you will get an error that `sql/opt_range.cc' will not compile (internal compiler error). To fix this, go to the sql directory and type `make' again. Copy the compile line, but change -O2 to -O0. The file should now compile. Now you can do: cd .. make make_install and *mysqld* should be ready to run. Alpha-DEC-UNIX Notes (Tru64) ---------------------------- If you are using egcs 1.1.2 on Digital Unix, you should upgrade to gcc 2.95.2, as egcs on DEC has some serious bugs! When compiling threaded programs under Digital Unix, the documentation recommends using the `-pthread' option for `cc' and `cxx' and the libraries `-lmach -lexc' (in addition to `-lpthread'). You should run `configure' something like this: CC="cc -pthread" CXX="cxx -pthread -O" \ ./configure --with-named-thread-libs="-lpthread -lmach -lexc -lc" When compiling `mysqld', you may see a couple of warnings like this: mysqld.cc: In function void handle_connections()': mysqld.cc:626: passing long unsigned int *' as argument 3 of accept(int,sockadddr *, int *)' You can safely ignore these warnings. They occur because `configure' can detect only errors, not warnings. If you start the server directly from the command line, you may have problems with it dying when you log out. (When you log out, your outstanding processes receive a `SIGHUP' signal.) If so, try starting the server like this: shell> nohup mysqld [options] & `nohup' causes the command following it to ignore any `SIGHUP' signal sent from the terminal. Alternatively, start the server by running `safe_mysqld', which invokes `mysqld' using `nohup' for you. *Note safe_mysqld::. If you get a problem when compiling mysys/get_opt.c, just remove the line #define _NO_PROTO from the start of that file! If you are using Compac's CC compiler, the following configure line should work: CC="cc -pthread" CFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host" CXX="cxx -pthread" CXXFLAGS="-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host" export CC CFLAGS CXX CXXFLAGS ./configure \ --prefix=/usr/local/mysql \ --with-low-memory \ --enable-large-files \ --enable-shared=yes \ --with-named-thread-libs="-lpthread -lmach -lexc -lc" gnumake If you get a problem with libtool, when compiling with shared libraries as above, when linking `mysql', you should be able to get around this by issuing: cd mysql /bin/sh ../libtool --mode=link cxx -pthread -O3 -DDBUG_OFF \ -O4 -ansi_alias -ansi_args -fast -inline speed \ -speculate all \ -arch host -DUNDEF_HAVE_GETHOSTBYNAME_R \ -o mysql mysql.o readline.o sql_string.o completion_hash.o \ ../readline/libreadline.a -lcurses \ ../libmysql/.libs/libmysqlclient.so -lm cd .. gnumake gnumake install scripts/mysql_install_db Alpha-DEC-OSF1 Notes -------------------- If you have problems compiling and have DEC `CC' and `gcc' installed, try running `configure' like this: CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql If you get problems with the `c_asm.h' file, you can create and use a 'dummy' `c_asm.h' file with: touch include/c_asm.h CC=gcc CFLAGS=-I./include \ CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql Note that the following problems with the `ld' program can be fixed by downloading the latest DEC (Compaq) patch kit from: `http://ftp.support.compaq.com/public/unix/'. On OSF1 V4.0D and compiler "DEC C V5.6-071 on Digital Unix V4.0 (Rev. 878)" the compiler had some strange behavior (undefined `asm' symbols). `/bin/ld' also appears to be broken (problems with `_exit undefined' errors occuring while linking `mysqld'). On this system, we have managed to compile *MySQL* with the following `configure' line, after replacing `/bin/ld' with the version from OSF 4.0C: CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql With the Digital compiler "C++ V6.1-029", the following should work: CC=cc -pthread CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host CXX=cxx -pthread CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed -speculate all -arch host -noexceptions -nortti export CC CFLAGS CXX CXXFLAGS ./configure --prefix=/usr/mysql/mysql --with-mysqld-ldflags=-all-static --disable-shared --with-named-thread-libs="-lmach -lexc -lc" In some versions of OSF1, the `alloca()' function is broken. Fix this by removing the line in `config.h' that defines `'HAVE_ALLOCA''. The `alloca()' function also may have an incorrect prototype in `/usr/include/alloca.h'. This warning resulting from this can be ignored. `configure' will use the following thread libraries automatically: `--with-named-thread-libs="-lpthread -lmach -lexc -lc"'. When using `gcc', you can also try running `configure' like this: shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure .... If you have problems with signals (*MySQL* dies unexpectedly under high load), you may have found an OS bug with threads and signals. In this case you can tell *MySQL* not to use signals by configuring with: shell> CFLAGS=-DDONT_USE_THR_ALARM \ CXXFLAGS=-DDONT_USE_THR_ALARM \ ./configure ... This doesn't affect the performance of *MySQL*, but has the side effect that you can't kill clients that are "sleeping" on a connection with `mysqladmin kill' or `mysqladmin shutdown'. Instead, the client will die when it issues its next command. With `gcc' 2.95.2, you will probably run into the following compile error: sql_acl.cc:1456: Internal compiler error in `scan_region', at except.c:2566 Please submit a full bug report. To fix this you should change to the `sql' directory and do a "cut and paste" of the last `gcc' line, but change `-O3' to `-O0' (or add `-O0' immediately after `gcc' if you don't have any `-O' option on your compile line.) After this is done you can just change back to the top-level directly and run `make' again. SGI-Irix Notes -------------- If you are using Irix Version 6.5.3 or newer `mysqld' will only be able to create threads if you run it as a user with `CAP_SCHED_MGT' privileges (like `root') or give the `mysqld' server this privilege with the following shell command: shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld You may have to undefine some things in `config.h' after running `configure' and before compiling. In some Irix implementations, the `alloca()' function is broken. If the `mysqld' server dies on some `SELECT' statements, remove the lines from `config.h' that define `HAVE_ALLOC' and `HAVE_ALLOCA_H'. If `mysqladmin create' doesn't work, remove the line from `config.h' that defines `HAVE_READDIR_R'. You may have to remove the `HAVE_TERM_H' line as well. SGI recommends that you install all of the patches on this page as a set: http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html At the very minimum, you should install the latest kernel rollup, the latest `rld' rollup, and the latest `libc' rollup. You definately need all the POSIX patches on this page, for pthreads support: http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html If you get the something like the following error when compiling `mysql.cc': "/usr/include/curses.h", line 82: error(1084): invalid combination of type then type the following in the top-level directory of your *MySQL* source tree: shell> extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h shell> make There have also been reports of scheduling problems. If only one thread is running, things go slow. Avoid this by starting another client. This may lead to a 2-to-10-fold increase in execution speed thereafter for the other thread. This is a poorly understood problem with Irix threads; you may have to improvise to find solutions until this can be fixed. If you are compiling with `gcc', you can use the following `configure' command: CC=gcc CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql --with-thread-safe-client --with-named-thread-libs=-lpthread FreeBSD Notes ------------- FreeBSD 3.x is recommended for running *MySQL* since the thread package is much more integrated. The easiest and therefor the preferred way to install is to use the mysql-server and mysql-client ports available on `http://www.freebsd.org'. Using these gives you: * A working *MySQL* with all optimizations known to work on your version of FreeBSD enabled. * Automatic configuration and build. * Startup scripts installed in /usr/local/etc/rc.d. * Ability to see which files that are installed with pkg_info -L. And to remove them all with pkg_delete if you no longer want *MySQL* on that machine. It is recomended you use MIT-pthreads on FreeBSD 2.x and native threads on Versions 3 and up. It is possible to run with native threads on some late 2.2.x versions but you may encounter problems shutting down mysqld. The *MYSQL* Makefiles require GNU make (`gmake') to work. If you want to compile *MYSQL* you need to install GNU make first. Be sure to have your name resolver setup correct. Otherwise you may experience resolver delays or failures when connecting to mysqld. Make sure that the `localhost' entry in the `/etc/hosts' file is correct (otherwise you will have problems connecting to the database). The `/etc/hosts' file should start with a line: 127.0.0.1 localhost localhost.your.domain If you notice that `configure' will use MIT-pthreads, you should read the MIT-pthreads notes. *Note MIT-pthreads::. If you get an error from `make install' that it can't find `/usr/include/pthreads', `configure' didn't detect that you need MIT-pthreads. This is fixed by executing these commands: shell> rm config.cache shell> ./configure --with-mit-threads FreeBSD is also known to have a very low default file handle limit. *Note Not enough file handles::. Uncomment the ulimit -n section in safe_mysqld or raise the limits for the mysqld user in /etc/login.conf (and rebuild it witg cap_mkdb /etc/login.conf.) Also be sure you set the appropriate class for this user in the password file if you are not using the default (use: chpass mysqld-user-name). *Note safe_mysqld::. If you get problems with the current date in *MySQL*, setting the `TZ' variable will probably help. *Note Environment variables::. To get a secure and stable system you should only use FreeBSD kernels that are marked `-STABLE' NetBSD notes ------------ To compile on NetBSD you need GNU `make'. Otherwise the compile will crash when `make' tries to run `lint' on C++ files. OpenBSD Notes ------------- * Menu: * OpenBSD 2.5:: OpenBSD 2.5 Notes * OpenBSD 2.8:: OpenBSD 2.8 Notes OpenBSD 2.5 Notes ................. On OpenBSD Version 2.5, you can compile *MySQL* with native threads with the following options: CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no OpenBSD 2.8 Notes ................. Our users have reported that OpenBSD 2.8 has a threading bug which causes problems with MySQL. The OpenBSD Developers have fixed the problem, but as of January 25th, 2001, it's only available in the "-current" branch. The symptoms of this threading bug are: slow response, high load, high cpu usage, and crashes. BSD/OS Notes ------------ * Menu: * BSDI2:: BSD/OS 2.x notes * BSDI3:: BSD/OS 3.x notes * BSDI4:: BSD/OS 4.x notes BSD/OS Version 2.x Notes ........................ If you get the following error when compiling *MySQL*, your `ulimit' value for virtual memory is too low: item_func.h: In method `Item_func_ge::Item_func_ge(const Item_func_ge &)': item_func.h:28: virtual memory exhausted make[2]: *** [item_func.o] Error 1 Try using `ulimit -v 80000' and run `make' again. If this doesn't work and you are using `bash', try switching to `csh' or `sh'; some BSDI users have reported problems with `bash' and `ulimit'. If you are using `gcc', you may also use have to use the `--with-low-memory' flag for `configure' to be able to compile `sql_yacc.cc'. If you get problems with the current date in *MySQL*, setting the `TZ' variable will probably help. *Note Environment variables::. BSD/OS Version 3.x Notes ........................ Upgrade to BSD/OS Version 3.1. If that is not possible, install BSDIpatch M300-038. Use the following command when configuring *MySQL*: shell> env CXX=shlicc++ CC=shlicc2 \ ./configure \ --prefix=/usr/local/mysql \ --localstatedir=/var/mysql \ --without-perl \ --with-unix-socket-path=/var/mysql/mysql.sock The following is also known to work: shell> env CC=gcc CXX=gcc CXXFLAGS=-O3 \ ./configure \ --prefix=/usr/local/mysql \ --with-unix-socket-path=/var/mysql/mysql.sock You can change the directory locations if you wish, or just use the defaults by not specifying any locations. If you have problems with performance under heavy load, try using the `--skip-thread-priority' option to `mysqld'! This will run all threads with the same priority; on BSDI Version 3.1, this gives better performance (at least until BSDI fixes their thread scheduler). If you get the error `virtual memory exhausted' while compiling, you should try using `ulimit -v 80000' and run `make' again. If this doesn't work and you are using `bash', try switching to `csh' or `sh'; some BSDI users have reported problems with `bash' and `ulimit'. BSD/OS Version 4.x Notes ........................ BSDI Version 4.x has some thread-related bugs. If you want to use *MySQL* on this, you should install all thread-related patches. At least M400-023 should be installed. On some BSDI Version 4.x systems, you may get problems with shared libraries. The symptom is that you can't execute any client programs, for example, `mysqladmin'. In this case you need to reconfigure not to use shared libraries with the `--disable-shared' option to configure. Some customers have had problems on BSDI 4.0.1 that the `mysqld' binary after a while can't open tables. This is because some library/system related bug causes `mysqld' to change current directory without asking for this! The fix is to either upgrade to 3.23.34 or after running `configure' remove the line `#define HAVE_REALPATH' from `config.h' before running make. Note that the above means that you can't symbolic link a database directories to another database directory or symbolic link a table to another database on BSDI! (Making a symbolic link to another disk is ok). SCO Notes --------- The current port is tested only on a "sco3.2v5.0.4" and "sco3.2v5.0.5" system. There has also been a lot of progress on a port to "sco 3.2v4.2". For the moment the recommended compiler on OpenServer is gcc 2.95.2. With this you should be able to compile *MySQL* with just: CC=gcc CXX=gcc ./configure ... (options) 1. For OpenServer 5.0.X you need to use GDS in Skunkware 95 (95q4c). This is necessary because GNU `gcc' 2.7.2 in Skunkware 97 does not have GNU `as'. You can also use `egcs' 1.1.2 or newer `http://www.egcs.com/'. If you are using `egcs' 1.1.2 you have to execute the following command: shell> cp -p /usr/include/pthread/stdtypes.h /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/ 2. You need the port of GCC 2.5.x for this product and the Development system. They are required on this version of SCO Unix. You cannot just use the GCC Dev system. 3. You should get the FSU Pthreads package and install it first. This can be found at `http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz'. You can also get a precompiled package from `http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz'. 4. FSU Pthreads can be compiled with SCO Unix 4.2 with tcpip. Or OpenServer 3.0 or Open Desktop 3.0 (OS 3.0 ODT 3.0), with the SCO Development System installed using a good port of GCC 2.5.x ODT or OS 3.0 you will need a good port of GCC 2.5.x There are a lot of problems without a good port. The port for this product requires the SCO Unix Development system. Without it, you are missing the libraries and the linker that is needed. 5. To build FSU Pthreads on your system, do the following: a. Run `./configure' in the `threads/src' directory and select the SCO OpenServer option. This command copies `Makefile.SCO5' to `Makefile'. b. Run `make'. c. To install in the default `/usr/include' directory, login as root, then `cd' to the `thread/src' directory, and run `make install'. 6. Remember to use GNU `make' when making *MySQL*. 7. If you don't start `safe_mysqld' as root, you probably will get only the default 110 open files per process. `mysqld' will write a note about this in the log file. 8. With SCO 3.2V5.0.5, you should use FSU Pthreads version 3.5c or newer. You should also use gcc 2.95.2 or newer! The following `configure' command should work: shell> ./configure --prefix=/usr/local/mysql --disable-shared 9. With SCO 3.2V4.2, you should use FSU Pthreads version 3.5c or newer. The following `configure' command should work: shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \ ./configure \ --with-debug --prefix=/usr/local/mysql \ --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \ --with-named-curses-libs="-lcurses" You may get some problems with some include files. In this case, you can find new SCO-specific include files at `http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz'. You should unpack this file in the `include' directory of your *MySQL* source tree. SCO development notes: * *MySQL* should automatically detect FSU Pthreads and link `mysqld' with `-lgthreads -lsocket -lgthreads'. * The SCO development libraries are re-entrant in FSU Pthreads. SCO claims that its libraries' functions are re-entrant, so they must be reentrant with FSU Pthreads. FSU Pthreads on OpenServer tries to use the SCO scheme to make re-entrant libraries. * FSU Pthreads (at least the version at `http://www.mysql.com/') comes linked with GNU `malloc'. If you encounter problems with memory usage, make sure that `gmalloc.o' is included in `libgthreads.a' and `libgthreads.so'. * In FSU Pthreads, the following system calls are pthreads-aware: `read()', `write()', `getmsg()', `connect()', `accept()', `select()', and `wait()'. If you want to install DBI on SCO, you have to edit the `Makefile' in DBI-xxx and each subdirectory. Note that the following assumes gcc 2.95.2 or newer: OLD: NEW: CC = cc CC = gcc CCCDLFLAGS = -KPIC -W1,-Bexport CCCDLFLAGS = -fpic CCDLFLAGS = -wl,-Bexport CCDLFLAGS = LD = ld LD = gcc -G -fpic LDDLFLAGS = -G -L/usr/local/lib LDDLFLAGS = -L/usr/local/lib LDFLAGS = -belf -L/usr/local/lib LDFLAGS = -L/usr/local/lib LD = ld LD = gcc -G -fpic OPTIMISE = -Od OPTIMISE = -O1 OLD: CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include NEW: CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include This is because the Perl dynaloader will not load the `DBI' modules if they were compiled with `icc' or `cc'. Perl works best when compiled with `cc'. SCO Unixware Version 7.0 Notes ------------------------------ You must use a version of *MySQL* at least as recent as Version 3.22.13 because that version fixes some portability problems under Unixware. We have been able to compile *MySQL* with the following `configure' command on Unixware Version 7.0.1: CC=cc CXX=CC ./configure --prefix=/usr/local/mysql If you want to use `gcc', you must use `gcc' 2.95.2 or newer. IBM-AIX notes ------------- Automatic detection of `xlC' is missing from Autoconf, so a `configure' command something like this is needed when compiling *MySQL* (The example uses the IBM compiler): export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 " export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192" export CFLAGS="-I /usr/local/include" export LDLFAGS="-L /usr/local/lib" export CPPFLAGS=$CFLAGS export CXXFLAGS=$CFLAGS ./configure --prefix=/usr/local \ --localstatedir=/var/mysql \ --sysconfdir=/etc/mysql \ --sbindir='/usr/local/bin' \ --libexecdir='/usr/local/bin' \ --enable-thread-safe-client \ --enable-large-files Above are the options used to compile the *MySQL* distribution that can be found at www-frec.bull.com (http://www-frec.bull.com/). If you change the `-O3' to `-O2' in the above configure line, you must also remove the `-qstrict' option (this is a limitation in the IBM C compiler). If you are using `gcc' or `egcs' to compile *MySQL*, you *MUST* use the `-fno-exceptions' flag, as the exception handling in `gcc'/`egcs' is not thread safe! (This is tested with `egcs' 1.1.). There are also some known problems with IBM's assembler, which may cause it to generate bad code when used with gcc. We recommend the following `configure' line with `egcs' and `gcc 2.95' on AIX: CC="gcc -pipe -mcpu=power2 -Wa,-many" \ CXX="gcc -pipe -mcpu=power2 -Wa,-many" \ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory The `-Wa,-many' is necessary for the compile to be successful. IBM is aware of this problem but is in to hurry to fix it because of the workaround available. We don't know if the `-fno-exceptions' is required with `gcc 2.95', but as *MySQL* doesn't use exceptions and the above option generates faster code, we recommend that you should always use this option with `egcs / gcc'. If you have problems with signals (*MySQL* dies unexpectedly under high load) you may have found an OS bug with threads and signals. In this case you can tell *MySQL* not to use signals by configuring with: shell> CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -DDONT_USE_THR_ALARM" \ ./configure --prefix=/usr/local/mysql --with-debug --with-low-memory This doesn't affect the performance of *MySQL*, but has the side effect that you can't kill clients that are "sleeping" on a connection with `mysqladmin kill' or `mysqladmin shutdown'. Instead, the client will die when it issues its next command. On some versions of AIX, linking with `libbind.a' makes `getservbyname' core dump. This is an AIX bug and should be reported to IBM. HP-UX Version 10.20 Notes ------------------------- There are a couple of small problems when compiling *MySQL* on HP-UX. We recommend that you use `gcc' instead of the HP-UX native compiler, because `gcc' produces better code! We recommend using gcc 2.95 on HP-UX. Don't use high optimization flags (like -O6) as this may not be safe on HP-UX. Note that MIT-pthreads can't be compiled with the HP-UX compiler because it can't compile `.S' (assembler) files. The following configure line should work: CFLAGS="-DHPUX -I/opt/dce/include" CXXFLAGS="-DHPUX -I/opt/dce/include -felide-constructors -fno-exceptions -fno-rtti" CXX=gcc ./configure --with-pthread --with-named-thread-libs='-ldce' --prefix=/usr/local/mysql --disable-shared If you are compiling `gcc' 2.95 yourself, you should NOT link it with the DCE libraries (`libdce.a' or `libcma.a') if you want to compile *MySQL* with MIT-pthreads. If you mix the DCE and MIT-pthreads packages you will get a `mysqld' to which you cannot connect. Remove the DCE libraries while you compile `gcc' 2.95! HP-UX Version 11.x Notes ------------------------ For HPUX Version 11.x we recommend *MySQL* Version 3.23.15 or later. Because of some critical bugs in the standard HPUX libraries, one should install the following patches before trying to run MySQL on HPUX 11.0: PHKL_22840 Streams cumulative PHNE_22397 ARPA cumulative This will solve a problem that one gets `EWOULDBLOCK' from `recv()' and `EBADF' from `accept()' in threaded applications. If you are using `gcc' 2.95.1 on a unpatched HPUX 11.x system, you will get the error: In file included from /usr/include/unistd.h:11, from ../include/global.h:125, from mysql_priv.h:15, from item.cc:19: /usr/include/sys/unistd.h:184: declaration of C function ... /usr/include/sys/pthread.h:440: previous declaration ... In file included from item.h:306, from mysql_priv.h:158, from item.cc:19: The problem is that HP-UX doesn't define `pthreads_atfork()' consistently. It has conflicting prototypes in `/usr/include/sys/unistd.h':184 and `/usr/include/sys/pthread.h':440 (I post the details below). One solution is to copy `/usr/include/sys/unistd.h' into `mysql/include' and edit `unistd.h' and change it to match the definition in `pthread.h'. Here's the diff: 183,184c183,184 < extern int pthread_atfork(void (*prepare)(), void (*parent)(), < void (*child)()); --- > extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), > void (*child)(void)); After this, the following configure line should work: CFLAGS="-fomit-frame-pointer -O6 -fpic" CXX=gcc CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O6" ./configure --prefix=/usr/local/mysql --disable-shared Here is some information that a HPUX Version 11.x user sent us about compiling *MySQL* with HPUX:x compiler: Environment: proper compilers. setenv CC cc setenv CXX aCC flags setenv CFLAGS -D_REENTRANT setenv CXXFLAGS -D_REENTRANT setenv CPPFLAGS -D_REENTRANT % aCC -V aCC: HP ANSI C++ B3910B X.03.14.06 % cc -V /tmp/empty.c cpp.ansi: HP92453-01 A.11.02.00 HP C Preprocessor (ANSI) ccom: HP92453-01 A.11.01.00 HP C Compiler cc: "/tmp/empty.c", line 1: warning 501: Empty source file. configuration: ./configure --with-pthread \ --prefix=/source-control/mysql \ --with-named-thread-libs=-lpthread \ --with-low-memory added '#define _CTYPE_INCLUDED' to include/m_ctype.h. This symbol is the one defined in HP's /usr/include/ctype.h: /* Don't include std ctype.h when this is included */ #define _CTYPE_H #define __CTYPE_INCLUDED #define _CTYPE_INCLUDED #define _CTYPE_USING /* Don't put names in global namespace. */ * I had to use the compile-time flag `-D_REENTRANT' to get the compiler to recognize the prototype for `localtime_r'. Alternatively I could have supplied the prototype for `localtime_r'. But I wanted to catch other bugs without needing to run into them. I wasn't sure where I needed it, so I added it to all flags. * The optimization flags used by *MySQL* (-O3) are not recognized by HP's compilers. I did not change the flags. Mac OS X Notes -------------- * Menu: * Mac OS X Public Data:: * Mac OS X Server:: Mac OS X Public beta .................... *MySQL* should work without any probelms on Mac OS X public beta. (Darwin); You don't need the pthread patches for this os! Mac OS X Server ............... Before trying to configure *MySQL* on Mac OS X server you must first first install the pthread package from `http://www.prnet.de/RegEx/mysql.html'. Note that this is not neeaded Our binary for Mac OS X is compiled on Rhapsody 5.5 with the following configure line: CC=gcc CFLAGS="-O2 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O2 -fomit-frame-pointer" ./configure --prefix=/usr/local/mysql "--with-comment=Official MySQL binary" --with-extra-charsets=complex --disable-shared You might want to also add aliases to your shell's resource file to access `mysql' and `mysqladmin' from the command line: alias mysql '/usr/local/mysql/bin/mysql' alias mysqladmin '/usr/local/mysql/bin/mysqladmin' BeOS Notes ---------- We are really interested in getting *MySQL* to work on BeOS, but unfortunately we don't have any person who knows BeOS or has time to do a port. We are interested in finding someone to do a port, and we will help them with any techincal questions they may have while doing the port. We have previously talked with some BeOS developers that have said that *MySQL* is 80% ported to BeOS, but we haven't heard from these in a while. Windows Notes ============= This section describes installation and use of *MySQL* on Windows. This is also described in the `README' file that comes with the *MySQL* Windows distribution. * Menu: * Windows installation:: Installing *MySQL* on Windows * Win95 start:: Starting *MySQL* on Win95 / Win98 * NT start:: Starting *MySQL* on NT / Win2000 * Windows running:: Running *MySQL* on Windows * Windows and SSH:: Connecting to a remote *MySQL* from Windows with SSH * Windows symbolic links:: Splitting data across different disks under Win32 * Windows compiling:: Compiling MySQL clients on Windows. * Windows and BDB tables.:: Windows and BDB Tables * Windows vs Unix:: *MySQL*-Windows compared to Unix *MySQL* Installing MySQL on Windows --------------------------- If you don't have a copy of the MySQL distribution, you should first download one from `http://www.mysql.com/'. If you plan to connect to *MySQL* from some other program, you will probably also need the *MyODBC* driver. You can find this at the *MyODBC* download page (`http://www.mysql.com/downloads/api-myodbc.html'). To install either distribution, unzip it in some empty directory and run the `Setup.exe' program. By default, *MySQL*-Windows is configured to be installed in `C:\mysql'. If you want to install *MySQL* elsewhere, install it in `C:\mysql', then move the installation to where you want it. If you do move *MySQL*, you must tell `mysqld' where everything is by supplying options to `mysqld'. Use `C:\mysql\bin\mysqld --help' to display all options! For example, if you have moved the *MySQL* distribution to `D:\programs\mysql', you must start `mysqld' with: `D:\programs\mysql\bin\mysqld --basedir D:\programs\mysql' With all newer *MySQL* versions, you can also create a `C:\my.cnf' file that holds any default options for the *MySQL* server. Copy the file `\mysql\my-xxxxx.cnf' to `C:\my.cnf' and edit this to suit your setup. Note that you should specify all paths with `/' instead of `\'. If you use `\', you need to specify this twice, as `\' is the escape character in *MySQL*. *Note Option files::. Starting MySQL on Windows 95 or Windows 98 ------------------------------------------ *MySQL* uses TCP/IP to connect a client to a server. (This will allow any machine on your network to connect to your *MySQL* server.) Because of this, you must install TCP/IP on your machine before starting *MySQL*. You can find TCP/IP on your Windows CD-ROM. Note that if you are using an old Win95 release (for example OSR2), it's likely that you have an old Winsock package! *MySQL* requires Winsock 2! You can get the newest Winsock from Microsoft (http://www.microsoft.com). Win98 has as default the new Winsock 2 library, so the above doesn't apply for Win98. There are 2 different *MySQL* servers you can use: `mysqld' Compiled with full debugging and automatic memory allocation checking `mysqld-opt' Optimized for a Pentium processor. Both of the above should work on any Intel processor >= i386. To start the `mysqld' server, you should start an MS-DOS window and type: C:\mysql\bin\mysqld This will start `mysqld' in the background without a window. You can kill the *MySQL* server by executing: C:\mysql\bin\mysqladmin -u root shutdown Note that Win95/Win98 don't support creation of named pipes. On Win95/Win98, you can only use named pipes to connect to a remote *MySQL* running on an NT server. If `mysqld' doesn't start, please check whether or not the `\mysql\mysql.err' file contains any reason for this. You can also try to start it with `mysqld --standalone'; In this case you may get some useful information on the screen that may help solve this. The last option is to start `mysqld' with `--debug'. In this case `mysqld' will write a log file in `\mysqld.trace' that should contain the reason why `mysqld' doesn't start. If you make a bug report about this, please only send the lines to the mailing list where something seems to go wrong! Starting MySQL on NT or Windows 2000 ------------------------------------ The Win95/Win98 section also applies to *MySQL* on NT/Win2000, with the following differences: To get *MySQL* to work with TCP/IP on NT, you must install service pack 3 (or newer)! Note that everything in the following that applies for NT also applies for Win2000! For NT/Win2000, the server name is `mysqld-nt'. Normally you should install *MySQL* as a service on NT/Win2000: C:\mysql\bin\mysqld-nt --install (You could use the `mysqld' or `mysqld-opt' servers on NT, but those cannot be started as a service or use named pipes.) You can start and stop the *MySQL* service with: NET START mysql NET STOP mysql Note that in this case you can't use any other options for `mysqld-nt'! You can also run `mysqld-nt' as a stand-alone program on NT if you need to start `mysqld-nt' with any options! If you start `mysqld-nt' without options on NT, `mysqld-nt' tries to starts itself as a service with the default service options. If you have stopped `mysqld-nt', you have to start it with `NET START mysql'. The service is installed with the name `MySql'. Once installed, it must be started using the Services Control Manager (SCM) Utility (found in Control Panel) or by using the `NET START MySQL' command. If any options are desired, they must be specified as "Startup parameters" in the SCM utility before you start the *MySQL* service. Once running, `mysqld-nt' can be stopped using `mysqladmin' or from the SCM utility or by using the command `NET STOP MySQL'. If you use SCM to stop `mysqld-nt', there is a strange message from SCM about `mysqld shutdown normally'. When run as a service, `mysqld-nt' has no access to a console and so no messages can be seen. On NT you can get the following service error messages: Permission Denied Means that it cannot find `mysqld-nt.exe'. Cannot Register Means that the path is incorrect. Failed to install Means that the service is already installed or service. that the Service Control Manager is in bad state. If you have problems installing `mysqld-nt' as a service, try starting it with the full path: C:\mysql\bin\mysqld-nt --install If this doesn't work, you can get `mysqld-nt' to start properly by fixing the path in the registry! If you don't want to start `mysqld-nt' as a service, you can start it as follows: C:\mysql\bin\mysqld-nt --standalone or C:\mysql\bin\mysqld --standalone --debug The last version gives you a debug trace in `C:\mysqld.trace'. Running MySQL on Windows ------------------------ *MySQL* supports TCP/IP on all Windows platforms and named pipes on NT. The default is to use named pipes for local connections on NT and TCP/IP for all other cases if the client has TCP/IP installed. The host name specifies which protocol is used: *Host name* *Protocol* NULL (none) On NT, try named pipes first; if that doesn't work, use TCP/IP. On Win95/Win98, TCP/IP is used. . Named pipes localhost TCP/IP to current host hostname TCP/IP You can force a *MySQL* client to use named pipes by specifying the `--pipe' option or by specifying `.' as the host name. Use the `--socket' option to specify the name of the pipe. You can test whether or not *MySQL* is working by executing the following commands: C:\mysql\bin\mysqlshow C:\mysql\bin\mysqlshow -u root mysql C:\mysql\bin\mysqladmin version status proc C:\mysql\bin\mysql test If `mysqld' is slow to answer to connections on Win95/Win98, there is probably a problem with your DNS. In this case, start `mysqld' with `--skip-name-resolve' and use only `localhost' and IP numbers in the *MySQL* grant tables. You can also avoid DNS when connecting to a `mysqld-nt' *MySQL* server running on NT by using the `--pipe' argument to specify use of named pipes. This works for most *MySQL* clients. There are two versions of the *MySQL* command-line tool: `mysql' Compiled on native Windows, which offers very limited text editing capabilities. `mysqlc' Compiled with the Cygnus GNU compiler and libraries, which offers `readline' editing. If you want to use `mysqlc.exe', you must copy `C:\mysql\lib\cygwinb19.dll' to `\windows\system' (or similar place). The default privileges on Windows give all local users full privileges to all databases. To make *MySQL* more secure, you should set a password for all users and remove the row in the `mysql.user' table that has `Host='localhost'' and `User='''. You should also add a password for the `root' user. (The following example starts by removing the anonymous user, that allows anyone to access the 'test' database.): C:\mysql\bin\mysql mysql mysql> DELETE FROM user WHERE Host='localhost' AND User=''; mysql> QUIT C:\mysql\bin\mysqladmin reload C:\mysql\bin\mysqladmin -u root password your_password After you've set the password, if you want to take down the `mysqld' server, you can do so using this command: mysqladmin --user=root --password=your_password shutdown If you are using the old shareware version of *MySQL* Version 3.21 under Windows, the above command will fail with an error: `parse error near 'SET OPTION password''. This is because the old shareware version, which is based on *MySQL* Version 3.21, doesn't have the `SET PASSWORD' command. The fix is in this case to upgrade to the Version 3.22 shareware. With the newer *MySQL* versions you can easily add new users and change privileges with `GRANT' and `REVOKE' commands. *Note GRANT::. Connecting to a Remote MySQL from Windows with SSH -------------------------------------------------- Here is a note about how to connect to get a secure connection to remote MySQL server with SSH (by David Carlson ): * Install an SSH client on your windows machine - As a user, the best non-free one I've found is from `secureCRT' from `http://www.vandyke.com/'. Another option is `f-secure' from `http://www.f-secure.com/'. You can also find some free ones on *Google* at `http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Clients/Windows/'. * Start your windows SSH client. Set `Host_Name = yourmysqlserver_URL_or_IP'. Set `userid=your_userid' to log in to your server (probably not the same as your *MySQL* login/ password. * Set up port forwarding. Either do a remote forward (Set `local_port: 3306', `remote_host: yourmysqlservername_or_ip', `remote_port: 3306' ) or a local forward (Set `port: 3306', `host: localhost', `remote port: 3306'). * Save everything, otherwise you'll have to redo it the next time. * Log in to your server with SSH session you just created. * Start some ODBC application on your windows machine (for example Access). * Create a new file in windows and link to *MySQL* using the ODBC driver the same way you normally do, EXCEPT type in `localhost' for the *MySQL* host server - not `yourmysqlservername'. You should now have your ODBC connection to *MySQL* encrypted using SSH. Splitting Data Across Different Disks Under Windows --------------------------------------------------- On windows *MySQL* Version 3.23.16 and above is compiled with the `-DUSE_SYMDIR' option. This allows you to put a database on different disk by adding a symbolic link to it (in a similar manner that symbolic links works on Unix). On windows you make a symbolic link to a database by creating a file that contains the path to the destination directory and saving this in the `mysql_data' directory under the filename `database.sym'. Note that the symbolic link will only be used if the directory `mysql_data_dir\database' doesn't exist. For example, if you want to have database `foo' on `D:\data\foo', you should create the file `C:\mysql\data\foo.sym' that contains the text `D:\data\foo'. After this, all tables created in the database `foo' will be created in `D:\data\foo'. Compiling MySQL Clients on Windows ---------------------------------- In your source files, you should include `windows.h' before you include `mysql.h': #if defined(_WIN32) || defined(_WIN64) #include #endif #include You can either link your code with the dynamic `libmysql.lib' library, which is just a wrapper to load in `libmysql.dll' on demand, or link with the static `mysqlclient.lib' library. Note that as the mysqlclient libraries are compiled as threaded libraries, you should also compile your code to be multi-threaded! Windows and BDB Tables ---------------------- We will shortly do a full test on the new BDB interface on Windows. When this is done we will start to release binary distributions (for Windows and Unix) of *MySQL* that will include support for BDB tables. MySQL-Windows Compared to Unix MySQL ------------------------------------ *MySQL*-Windows has by now proven itself to be very stable. This version of *MySQL* has the same features as the corresponding Unix version with the following exceptions: *Win95 and threads* Win95 leaks about 200 bytes of main memory for each thread creation. Because of this, you shouldn't run `mysqld' for an extended time on Win95 if you do many connections, because each connection in *MySQL* creates a new thread! WinNT and Win98 don't suffer from this bug. *Concurrent reads* *MySQL* depends on the `pread()' and `pwrite()' calls to be able to mix `INSERT' and `SELECT'. Currently we use mutexes to emulate `pread()'/`pwrite()'. We will, in the long run, replace the file level interface with a virtual interface so that we can use the `readfile()'/`writefile()' interface on NT to get more speed. The current implementation will however limit the number of open files *MySQL* can use to 1024, which means that you will not be able to run as many concurrent threads on NT as on Unix. *Blocking read* *MySQL* uses a blocking read for each connection. This means that: * A connection will not be disconnected automatically after 8 hours, as happens with the Unix version of *MySQL*. * If a connection hangs, it's impossible to break it without killing *MySQL*. * `mysqladmin kill' will not work on a sleeping connection. * `mysqladmin shutdown' can't abort as long as there are sleeping connections. We plan to fix this when our windows developers have figured out a nice workaround for this. *UDF functions* For the moment, *MySQL*-Windows does not support user-definable functions. *`DROP DATABASE'* You can't drop a database that is in use by some thread. *Killing *MySQL* from the task manager* You can't kill *MySQL* from the task manager or with the shutdown utility in Win95. You must take it down with `mysqladmin shutdown'. *Case-insensitive names* Filenames are case insensitive on Windows, so database and table names are also case insensitive in *MySQL* for Windows. The only restriction is that database and table names must be given in the same case throughout a given statement. *Note Name case sensitivity::. *The `\' directory character* Pathname components in Win95 are separated by the `\' character, which is also the escape character in *MySQL*. If you are using `LOAD DATA INFILE' or `SELECT ... INTO OUTFILE', you must double the `\' character or use Unix style filenames `/' characters: LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr; SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr; *`Can't open named pipe' error* If you use a MySQL 3.22 version on NT with the newest mysql-clients you will get the following error: error 2017: can't open named pipe to host: . pipe... This is because the release version of *MySQL* uses named pipes on NT by default. You can avoid this error by using the `--host=localhost' option to the new *MySQL* clients or create a file `C:\my.cnf' that contains the following information: [client] host = localhost *`Access denied for user' error* If you get the error `Access denied for user: 'some-user@unknown' to database 'mysql'' when accessing a *MySQL* server on the same machine, this means that *MySQL* can't resolve your host name properly. To fix this, you should create a file `\windows\hosts' with the following information: 127.0.0.1 localhost *`ALTER TABLE'* While you are doing an `ALTER TABLE' the table is locked from usage by other threads. This has to do with the fact that you on Windows can't delete a file that is in use by another threads. (We may in the future find some way to go around this problem). *`DROP TABLE' on a table that is in use by a `MERGE' table will not work.* The `MERGE' handler does it table mapping hidden from *MySQL*. Because windows doesn't allow one to drop files that are open, you have to first flush all `MERGE' tables (with `FLUSH TABLES') or drop the `MERGE' table before drooping the table. We will fix this at the same time we introduce `VIEW''s. Here are some open issues for anyone who might want to help us with the Windows release: * Make a single-user `MYSQL.DLL' server. This should include everything in a standard *MySQL* server, except thread creation. This will make *MySQL* much easier to use in applications that don't need a true client/server and don't need to access the server from other hosts. * Add some nice start and shutdown icons to the *MySQL* installation. * Create a tool to manage registry entries for the *MySQL* startup options. The registry entry reading is already coded into `mysqld.cc', but it should be recoded to be more parameter oriented. The tool should also be able to update the `\my.cnf' file if the user prefers to use this instead of the registry. * When registering `mysqld' as a service with `--install' (on NT) it would be nice if you could also add default options on the command line. For the moment, the workaround is to update the `C:\my.cnf' file instead. * When you suspend a laptop running Win95, the `mysqld' daemon doesn't accept new connections when the laptop is resumed. We don't know if this is a problem with Win95, TCP/IP, or *MySQL*. * It would be real nice to be able to kill `mysqld' from the task manager. For the moment, you must use `mysqladmin shutdown'. * Port `readline' to Windows for use in the `mysql' command line tool. * GUI versions of the standard *MySQL* clients (`mysql', `mysqlshow', `mysqladmin', and `mysqldump') would be nice. * It would be nice if the socket read and write functions in `net.c' were interruptible. This would make it possible to kill open threads with `mysqladmin kill' on Windows. * Documentation of which Windows programs work with *MySQL*-Windows/*MyODBC* and what must be done to get them working. * `mysqld' always starts in the "C" locale and not in the default locale. We would like to have `mysqld' use the current locale for the sort order. * Implement UDF functions with `.DLL's. * Add macros to use the faster thread-safe increment/decrement methods provided by Windows. Other Windows-specific issues are described in the `README' file that comes with the *MySQL*-Windows distribution. OS/2 Notes ========== *MySQL* uses quite a few open files. Because of this, you should add something like the following to your `CONFIG.SYS' file: SET EMXOPT=-c -n -h1024 If you don't do this, you will probably run into the following error: File 'xxxx' not found (Errcode: 24) When using *MySQL* with OS/2 Warp 3, FixPack 29 or above is required. With OS/2 Warp 4, FixPack 4 or above is required. This is a requirement of the Pthreads library. *MySQL* must be installed in a partition that supports long filenames such as HPFS, FAT32, etc. The `INSTALL.CMD' script must be run from OS/2's own `CMD.EXE' and may not work with replacement shells such as `4OS2.EXE'. The `scripts/mysql-install-db' script has been renamed. It is now called `install.cmd' and is a REXX script, which will set up the default *MySQL* security settings and create the WorkPlace Shell icons for *MySQL*. Dynamic module support is compiled in but not fully tested. Dynamic modules should be compiled using the Pthreads run-time library. gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \ -o example udf_example.cc -L../lib -lmysqlclient udf_example.def mv example.dll example.udf *Note:* Due to limitations in OS/2, UDF module name stems must not exceed 8 characters. Modules are stored in the `/mysql2/udf' directory; the `safe-mysqld.cmd' script will put this directory in the `BEGINLIBPATH' environment variable. When using UDF modules, specified extensions are ignored -- it is assumed to be `.udf'. For example, in Unix, the shared module might be named `example.so' and you would load a function from it like this: CREATE FUNCTION metaphon RETURNS STRING SONAME "example.so"; Is OS/2, the module would be named `example.udf', but you would not specify the module extension: CREATE FUNCTION metaphon RETURNS STRING SONAME "example"; MySQL Binaries ============== As a service, we at MySQL AB provides a set of binary distributions of *MySQL* that are compiled at our site or at sites where customers kindly have given us access to their machines. These distributions are generated with `scripts/make_binary_distribution' and are configured with the following compilers and options: SunOS 4.1.4 2 sun4c with `gcc' 2.7.2.1 `CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-assembler' SunOS 5.5.1 sun4u with `egcs' 1.0.3a `CC=gcc CFLAGS="-O6 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex' SunOS 5.6 sun4u with `egcs' 2.90.27 `CC=gcc CFLAGS="-O6 -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex' SunOS 5.6 i86pc with `gcc' 2.8.1 `CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex' Linux 2.0.33 i386 with `pgcc' 2.90.29 (`egcs' 1.0.3a) `CFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --with-extra-charsets=complex' Linux 2.2.x with x686 with `gcc' 2.95.2 `CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charset=complex' SCO 3.2v5.0.4 i386 with `gcc' 2.7-95q4 `CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex' AIX 2 4 with `gcc' 2.7.2.2 `CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex' OSF1 V4.0 564 alpha with `gcc' 2.8.1 `CC=gcc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory --with-extra-charsets=complex' Irix 6.3 IP32 with `gcc' 2.8.0 `CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex' BSDI BSD/OS 3.1 i386 with `gcc' 2.7.2.1 `CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex' BSDI BSD/OS 2.1 i386 with `gcc' 2.7.2 `CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-extra-charsets=complex' Anyone who has more optimal options for any of the configurations listed above can always mail them to the developer's mailing list at . RPM distributions prior to *MySQL* Version 3.22 are user-contributed. Beginning with Version 3.22, some RPMs are generated by us at MySQL AB. If you want to compile a debug version of *MySQL*, you should add `--with-debug' or `--with-debug=full' to the above configure lines and remove any `-fomit-frame-pointer' options. Post-installation Setup and Testing =================================== * Menu: * mysql_install_db:: Problems running `mysql_install_db' * Starting server:: Problems starting the *MySQL* server * Automatic start:: Starting and stopping *MySQL* automatically * Command-line options:: Command-line options * Option files:: Option files Once you've installed *MySQL* (from either a binary or source distribution), you need to initialize the grant tables, start the server, and make sure that the server works okay. You may also wish to arrange for the server to be started and stopped automatically when your system starts up and shuts down. Normally you install the grant tables and start the server like this for installation from a source distribution: shell> ./scripts/mysql_install_db shell> cd mysql_installation_directory shell> ./bin/safe_mysqld --user=mysql & For a binary distribution, do this: shell> cd mysql_installation_directory shell> ./bin/mysql_install_db shell> ./bin/safe_mysqld --user=mysql & This creates the `mysql' database which will hold all database privileges, the `test' database which you can use to test *MySQL* and also privilege entries for the user that run `mysql_install_db' and a `root' user (without any passwords). This also starts the `mysqld' server. `mysql_install_db' will not overwrite any old privilege tables, so it should be safe to run in any circumstances. If you don't want to have the `test' database you can remove it with `mysqladmin -u root drop test'. Testing is most easily done from the top-level directory of the *MySQL* distribution. For a binary distribution, this is your installation directory (typically something like `/usr/local/mysql'). For a source distribution, this is the main directory of your *MySQL* source tree. In the commands shown below in this section and in the following subsections, `BINDIR' is the path to the location in which programs like `mysqladmin' and `safe_mysqld' are installed. For a binary distribution, this is the `bin' directory within the distribution. For a source distribution, `BINDIR' is probably `/usr/local/bin', unless you specified an installation directory other than `/usr/local' when you ran `configure'. `EXECDIR' is the location in which the `mysqld' server is installed. For a binary distribution, this is the same as `BINDIR'. For a source distribution, `EXECDIR' is probably `/usr/local/libexec'. Testing is described in detail below: 1. If necessary, start the `mysqld' server and set up the initial *MySQL* grant tables containing the privileges that determine how users are allowed to connect to the server. This is normally done with the `mysql_install_db' script: shell> scripts/mysql_install_db Typically, `mysql_install_db' needs to be run only the first time you install *MySQL*. Therefore, if you are upgrading an existing installation, you can skip this step. (However, `mysql_install_db' is quite safe to use and will not update any tables that already exist, so if you are unsure of what to do, you can always run `mysql_install_db'.) `mysql_install_db' creates six tables (`user', `db', `host', `tables_priv', `columns_priv', and `func') in the `mysql' database. A description of the initial privileges is given in *Note Default privileges::. Briefly, these privileges allow the *MySQL* `root' user to do anything, and allow anybody to create or use databases with a name of `'test'' or starting with `'test_''. If you don't set up the grant tables, the following error will appear in the log file when you start the server: mysqld: Can't find file: 'host.frm' The above may also happen with a binary *MySQL* distribution if you don't start *MySQL* by executing exactly `./bin/safe_mysqld'! *Note safe_mysqld::. You might need to run `mysql_install_db' as `root'. However, if you prefer, you can run the *MySQL* server as an unprivileged (non-`root') user, provided that user can read and write files in the database directory. Instructions for running *MySQL* as an unprivileged user are given in *Note Changing *MySQL* user: Changing MySQL user. If you have problems with `mysql_install_db', see *Note `mysql_install_db': mysql_install_db. There are some alternatives to running the `mysql_install_db' script as it is provided in the *MySQL* distribution: * You may want to edit `mysql_install_db' before running it, to change the initial privileges that are installed into the grant tables. This is useful if you want to install *MySQL* on a lot of machines with the same privileges. In this case you probably should need only to add a few extra `INSERT' statements to the `mysql.user' and `mysql.db' tables! * If you want to change things in the grant tables after installing them, you can run `mysql_install_db', then use `mysql -u root mysql' to connect to the grant tables as the *MySQL* `root' user and issue SQL statements to modify the grant tables directly. * It is possible to re-create the grant tables completely after they have already been created. You might want to do this if you've already installed the tables but then want to re-create them after editing `mysql_install_db'. For more information about these alternatives, see *Note Default privileges::. 2. Start the *MySQL* server like this: shell> cd mysql_installation_directory shell> bin/safe_mysqld & If you have problems starting the server, see *Note Starting server::. 3. Use `mysqladmin' to verify that the server is running. The following commands provide a simple test to check that the server is up and responding to connections: shell> BINDIR/mysqladmin version shell> BINDIR/mysqladmin variables The output from `mysqladmin version' varies slightly depending on your platform and version of *MySQL*, but should be similar to that shown below: shell> BINDIR/mysqladmin version mysqladmin Ver 8.14 Distrib 3.23.32, for linux on i586 Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 3.23.32-debug Protocol version 10 Connection Localhost via Unix socket TCP port 3306 UNIX socket /tmp/mysql.sock Uptime: 16 sec Threads: 1 Questions: 9 Slow queries: 0 Opens: 7 Flush tables: 2 Open tables: 0 Queries per second avg: 0.000 Memory in use: 132K Max memory used: 16773K To get a feeling for what else you can do with `BINDIR/mysqladmin', invoke it with the `--help' option. 4. Verify that you can shut down the server: shell> BINDIR/mysqladmin -u root shutdown 5. Verify that you can restart the server. Do this using `safe_mysqld' or by invoking `mysqld' directly. For example: shell> BINDIR/safe_mysqld --log & If `safe_mysqld' fails, try running it from the *MySQL* installation directory (if you are not already there). If that doesn't work, see *Note Starting server::. 6. Run some simple tests to verify that the server is working. The output should be similar to what is shown below: shell> BINDIR/mysqlshow +-----------+ | Databases | +-----------+ | mysql | +-----------+ shell> BINDIR/mysqlshow mysql Database: mysql +--------------+ | Tables | +--------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +--------------+ shell> BINDIR/mysql -e "select host,db,user from db" mysql +------+--------+------+ | host | db | user | +------+--------+------+ | % | test | | | % | test_% | | +------+--------+------+ There is also a benchmark suite in the `sql-bench' directory (under the *MySQL* installation directory) that you can use to compare how *MySQL* performs on different platforms. The `sql-bench/Results' directory contains the results from many runs against different databases and platforms. To run all tests, execute these commands: shell> cd sql-bench shell> run-all-tests If you don't have the `sql-bench' directory, you are probably using an RPM for a binary distribution. (Source distribution RPMs include the benchmark directory.) In this case, you must first install the benchmark suite before you can use it. Beginning with *MySQL* Version 3.22, there are benchmark RPM files named `mysql-bench-VERSION-i386.rpm' that contain benchmark code and data. If you have a source distribution, you can also run the tests in the `tests' subdirectory. For example, to run `auto_increment.tst', do this: shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst The expected results are shown in the `./tests/auto_increment.res' file. Problems Running mysql_install_db --------------------------------- The purpose of the `mysql_install_db' script is to generate new *MySQL* privilege tables. It will not affect any other data! It will also not do anything if you already have MySQL privilege tables installed! If you want to re-create your privilege tables, you should take down the mysqld server, if it's running, and then do something like: mv mysql-data-directory/mysql mysql-data-directory/mysql-old mysql_install_db This section lists problems you might encounter when you run `mysql_install_db': *`mysql_install_db' doesn't install the grant tables* You may find that `mysql_install_db' fails to install the grant tables and terminates after displaying the following messages: starting mysqld daemon with databases from XXXXXX mysql daemon ended In this case, you should examine the log file very carefully! The log should be located in the directory `XXXXXX' named by the error message, and should indicate why `mysqld' didn't start. If you don't understand what happened, include the log when you post a bug report using `mysqlbug'! *Note Bug reports::. *There is already a `mysqld' daemon running* In this case, you probably don't have to run `mysql_install_db' at all. You have to run `mysql_install_db' only once, when you install *MySQL* the first time. *Installing a second `mysqld' daemon doesn't work when one daemon is running* This can happen when you already have an existing *MySQL* installation, but want to put a new installation in a different place (for example, for testing, or perhaps you simply want to run two installations at the same time). Generally the problem that occurs when you try to run the second server is that it tries to use the same socket and port as the old one. In this case you will get the error message: `Can't start server: Bind on TCP/IP port: Address already in use' or `Can't start server : Bind on unix socket...'. *Note Installing many servers::. *You don't have write access to `/tmp'* If you don't have write access to create a socket file at the default place (in `/tmp') or permission to create temporary files in `/tmp,' you will get an error when running `mysql_install_db' or when starting or using `mysqld'. You can specify a different socket and temporary directory as follows: shell> TMPDIR=/some_tmp_dir/ shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock shell> export TMPDIR MYSQL_UNIX_PORT `some_tmp_dir' should be the path to some directory for which you have write permission. *Note Environment variables::. After this you should be able to run `mysql_install_db' and start the server with these commands: shell> scripts/mysql_install_db shell> BINDIR/safe_mysqld & *`mysqld' crashes immediately* If you are running RedHat Version 5.0 with a version of `glibc' older than 2.0.7-5, you should make sure you have installed all `glibc' patches! There is a lot of information about this in the *MySQL* mail archives. Links to the mail archives are available at the online *MySQL* documentation page (http://www.mysql.com/documentation/). Also, see *Note Linux::. You can also start `mysqld' manually using the `--skip-grant-tables' option and add the privilege information yourself using `mysql': shell> BINDIR/safe_mysqld --skip-grant-tables & shell> BINDIR/mysql -u root mysql From `mysql', manually execute the SQL commands in `mysql_install_db'. Make sure you run `mysqladmin flush-privileges' or `mysqladmin reload' afterward to tell the server to reload the grant tables. Problems Starting the MySQL Server ---------------------------------- Generally, you start the `mysqld' server in one of three ways: * By invoking `mysql.server'. This script is used primarily at system startup and shutdown, and is described more fully in *Note Automatic start::. * By invoking `safe_mysqld', which tries to determine the proper options for `mysqld' and then runs it with those options. *Note safe_mysqld::. * On NT you should install `mysqld' as a service as follows: bin\mysqld-nt --install # Install MySQL as a service You can now start/stop `mysqld' as follows: NET START mysql NET STOP mysql Note that in this case you can't use any other options for `mysqld'! You can remove the service as follows: bin\mysqld-nt --remove # remove MySQL as a service * By invoking `mysqld' directly. When the `mysqld' daemon starts up, it changes directory to the data directory. This is where it expects to write log files and the pid (process ID) file, and where it expects to find databases. The data directory location is hardwired in when the distribution is compiled. However, if `mysqld' expects to find the data directory somewhere other than where it really is on your system, it will not work properly. If you have problems with incorrect paths, you can find out what options `mysqld' allows and what the default path settings are by invoking `mysqld' with the `--help' option. You can override the defaults by specifying the correct pathnames as command-line arguments to `mysqld'. (These options can be used with `safe_mysqld' as well.) Normally you should need to tell `mysqld' only the base directory under which *MySQL* is installed. You can do this with the `--basedir' option. You can also use `--help' to check the effect of changing path options (note that `--help' _must_ be the final option of the `mysqld' command). For example: shell> EXECDIR/mysqld --basedir=/usr/local --help Once you determine the path settings you want, start the server without the `--help' option. Whichever method you use to start the server, if it fails to start up correctly, check the log file to see if you can find out why. Log files are located in the data directory (typically `/usr/local/mysql/data' for a binary distribution, `/usr/local/var' for a source distribution, `\mysql\mysql.err' on Windows.) Look in the data directory for files with names of the form `host_name.err' and `host_name.log' where `host_name' is the name of your server host. Then check the last few lines of these files: shell> tail host_name.err shell> tail host_name.log If you find something like the following in the log file: 000729 14:50:10 bdb: Recovery function for LSN 1 27595 failed 000729 14:50:10 bdb: warning: ./test/t1.db: No such file or directory 000729 14:50:10 Can't init databases this means that you didn't started mysqld with `--bdb-no-recover' and Berkeley DB found something wrong with it's log files when it tried to recover your databases. To be able to continue, you should move away the old Berkeley DB log file from the database directory to some other place, where you can later examine these. The log files are named `log.0000000001', where the number will increase over time. If you are running `mysqld' with BDB table support and mysqld core dumps at start this could be because of some problems with the BDB recover log. In this case you can try starting `mysqld' with `--bdb-no-recover'. If this helps, then you should remove all `log.*' files from the data directory and try starting `mysqld' again. If you get the following error, it means that some other program (or another `mysqld' server) is already using the TCP/IP port or socket `mysqld' is trying to use: Can't start server: Bind on TCP/IP port: Address already in use or Can't start server : Bind on unix socket... Use `ps' to make sure that you don't have another `mysqld' server running. If you can't find another server running, you can try to execute the command `telnet your-host-name tcp-ip-port-number' and press `RETURN' a couple of times. If you don't get an error message like `telnet: Unable to connect to remote host: Connection refused', something is using the TCP/IP port `mysqld' is trying to use. See *Note mysql_install_db:: and *Note Multiple servers::. If `mysqld' is currently running, you can find out what path settings it is using by executing this command: shell> mysqladmin variables or shell> mysqladmin -h 'your-host-name' variables If `safe_mysqld' starts the server but you can't connect to it, you should make sure you have an entry in `/etc/hosts' that looks like this: 127.0.0.1 localhost This problem occurs only on systems that don't have a working thread library and for which *MySQL* must be configured to use MIT-pthreads. On Windows, you can try to start `mysqld' as follows: C:\mysql\bin\mysqld --standalone --debug This will not run in the background and it should also write a trace in `\mysqld.trace', which may help you determine the source of your problems. *Note Windows::. If you are using BDB (Berkeley DB) tables, you should familiarize yourself with the different BDB specific startup options. *Note BDB start::. If you are using Gemini tables, refer to the Gemini-specific startup options. *Note GEMINI start::. If you are using Innobase tables, refer to the Innobase-specific startup options. *Note INNOBASE start::. Starting and Stopping MySQL Automatically ----------------------------------------- The `mysql.server' script can be used to start or stop the server by invoking it with `start' or `stop' arguments: shell> mysql.server start shell> mysql.server stop `mysql.server' can be found in the `share/mysql' directory under the *MySQL* installation directory or in the `support-files' directory of the *MySQL* source tree. Before `mysql.server' starts the server, it changes directory to the *MySQL* installation directory, then invokes `safe_mysqld'. You might need to edit `mysql.server' if you have a binary distribution that you've installed in a non-standard location. Modify it to `cd' into the proper directory before it runs `safe_mysqld'. If you want the server to run as some specific user, you can change the `mysql_daemon_user=root' line to use another user. You can also modify `mysql.server' to pass other options to `safe_mysqld'. `mysql.server stop' brings down the server by sending a signal to it. You can take down the server manually by executing `mysqladmin shutdown'. You might want to add these start and stop commands to the appropriate places in your `/etc/rc*' files when you start using *MySQL* for production applications. Note that if you modify `mysql.server', then upgrade *MySQL* sometime, your modified version will be overwritten, so you should make a copy of your edited version that you can reinstall. If your system uses `/etc/rc.local' to start external scripts, you should append the following to it: /bin/sh -c 'cd /usr/local/mysql ; ./bin/safe_mysqld --user=mysql &' You can also add options for `mysql.server' in a global `/etc/my.cnf' file. A typical `/etc/my.cnf' file might look like this: [mysqld] datadir=/usr/local/mysql/var socket=/tmp/mysqld.sock port=3306 [mysql.server] user=mysql basedir=/usr/local/mysql The `mysql.server' script uses the following variables: `user', `datadir', `basedir', `bindir', and `pid-file'. The following table shows which option sections each of the startup script uses: `mysqld' `mysqld' and `server' `mysql.server' `mysql.server', `mysqld' and `server' `safe_mysqld' `mysql.server', `mysqld' and `server' *Note Option files::. Command-line Options -------------------- `mysqld' accepts the following command-line options: `--ansi' Use ANSI SQL syntax instead of MySQL syntax. *Note ANSI mode::. `-b, --basedir=path' Path to installation directory. All paths are usually resolved relative to this. `--big-tables' Allow big result sets by saving all temporary sets on file. It solves most 'table full' errors, but also slows down the queries where in-memory tables would suffice. Since Version 3.23.2, *MySQL* is able to solve it automaticaly by using memory for small temporary tables and switching to disk tables where necessary. `--bind-address=IP' IP address to bind to. `--character-sets-dir=path' Directory where character sets are. *Note Character sets::. `--chroot=path' Chroot mysqld daemon during startup. Recommended security measure. It will somewhat limit `LOAD DATA INFILE' and `SELECT ... INTO OUTFILE' though. `-h, --datadir=path' Path to the database root. `--default-character-set=charset' Set the default character set. *Note Character sets::. `--default-table-type=type' Set the default table type for tables. *Note Table types::. `--delay-key-write-for-all-tables' Don't flush key buffers between writes for any `MyISAM' table. *Note Server parameters::. `--enable-locking' Enable system locking. Note that if you use this option on a system which a not fully working lockd() (as on Linux) you will easily get mysqld to deadlock. `-T, --exit-info' This is a bit mask of different flags one can use for debugging the mysqld server; One should not use this option if one doesn't know exactly what it does! `--flush' Flush all changes to disk after each SQL command. Normally *MySQL* only does a write of all changes to disk after each SQL command and lets the operating system handle the syncing to disk. *Note Crashing::. `-?, --help' Display short help and exit. `--init-file=file' Read SQL commands from this file at startup. `-L, --language=...' Client error messages in given language. May be given as a full path. *Note Languages::. `-l, --log[=file]' Log connections and queries to file. *Note Query log::. `--log-isam[=file]' Log all ISAM/MyISAM changes to file (only used when debugging ISAM/MyISAM). `--log-slow-queries[=file]' Log all queries that have taken more than `long_query_time' seconds to execute to file. *Note Slow query log::. `--log-update[=file]' Log updates to `file.#' where `#' is a unique number if not given. *Note Update log::. `--log-long-format' Log some extra information to update log. If you are using `--log-slow-queries' then queries that are not using indexes are logged to the slow query log. `--low-priority-updates' Table-modifying operations (`INSERT'/`DELETE'/`UPDATE') will have lower priority than selects. It can also be done via `{INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ...' to lower the priority of only one query, or by `SET OPTION SQL_LOW_PRIORITY_UPDATES=1' to change the priority in one thread. *Note Table locking::. `--memlock' Lock the `mysqld' process in memory. This works only if your system supports the `mlockall()' system call. This may help if you have a problem where the operating system is causing `mysqld' to swap on disk. `--myisam-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK.' If this option is used, `mysqld' will on open check if the table is marked as crashed or if if the table wasn't closed properly (The last option only works if you are running with `--skip-locking'). If this is the case mysqld will run check on the table. If the table was corrupted, `mysqld' will attempt to repair it. The following options affects how the repair works. DEFAULT The same as not giving any option to `--myisam-recover'. BACKUP If the data table was changed during recover, save a backup of the `table_name.MYD' data file as `table_name-datetime.BAK'. FORCE Run recover even if we will loose more than one row from the .MYD file. QUICK Don't check the rows in the table if there isn't any delete blocks. Before a table is automaticly repaired, mysqld will add a note about this in the error log. If you want to be able to recover from most things without user intervention, you should use the options `BACKUP,FORCE'. This will force a repair of a table even if some rows would be deleted, but it will keep the old data file as a backup so that you can later examine what happened. `--pid-file=path' Path to pid file used by `safe_mysqld'. `-P, --port=...' Port number to listen for TCP/IP connections. `-o, --old-protocol' Use the 3.20 protocol for compatibility with some very old clients. *Note Upgrading-from-3.20::. `--one-thread' Only use one thread (for debugging under Linux). *Note Debugging server::. `-O, --set-variable var=option' Give a variable a value. `--help' lists variables. You can find a full description for all variables in the `SHOW VARIABLES' section in this manual. *Note SHOW VARIABLES::. The tuning server parameters section includes information of how to optimize these. *Note Server parameters::. `--safe-mode' Skip some optimize stages. Implies `--skip-delay-key-write'. `--safe-show-database' Don't show databases for which the user doesn't have any privileges. `--secure' IP numbers returned by the `gethostbyname()' system call are checked to make sure they resolve back to the original hostname. This makes it harder for someone on the outside to get access by pretending to be another host. This option also adds some sanity checks of hostnames. The option is turned off by default in *MySQL* Version 3.21 because sometimes it takes a long time to perform backward resolutions. *MySQL* Version 3.22 caches hostnames (unless `--skip-host-cache' is used) and has this option enabled by default. `--skip-concurrent-insert' Turn off the ability to select and insert at the same time on `MyISAM' tables. (This is only to be used if you think you have found a bug in this feature). `--skip-delay-key-write' Ignore the `delay_key_write' option for all tables. *Note Server parameters::. `-Sg, --skip-grant-tables' This option causes the server not to use the privilege system at all. This gives everyone _full access_ to all databases! (You can tell a running server to start using the grant tables again by executing `mysqladmin flush-privileges' or `mysqladmin reload'.) `--skip-locking' Don't use system locking. To use `isamchk' or `myisamchk' you must shut down the server. *Note Stability::. Note that in *MySQL* Version 3.23 you can use `REPAIR' and `CHECK' to repair/check `MyISAM' tables. `--skip-name-resolve' Hostnames are not resolved. All `Host' column values in the grant tables must be IP numbers or `localhost'. *Note DNS::. `--skip-networking' Don't listen for TCP/IP connections at all. All interaction with `mysqld' must be made via Unix sockets. This option is highly recommended for systems where only local requests are allowed. *Note DNS::. `--skip-new' Don't use new, possible wrong routines. Implies `--skip-delay-key-write'. This will also set default table type to `ISAM'. *Note ISAM::. `--skip-host-cache' Never use host name cache for faster name-ip resolution, but query DNS server on every connect instead. *Note DNS::. `--skip-show-database' Don't allow 'SHOW DATABASE' commands, unless the user has *process* privilege. `--skip-thread-priority' Disable using thread priorities for faster response time. `--socket=path' Socket file to use for local connections instead of default `/tmp/mysql.sock'. `-t, --tmpdir=path' Path for temporary files. It may be useful if your default `/tmp' directory resides on a partition too small to hold temporary tables. `-u, --user=user_name' Run `mysqld' daemon as user `user_name'. This option is _mandatory_ when starting `mysqld' as root. `-V, --version' Output version information and exit. Option Files ------------ *MySQL* Version 3.22 can read default startup options for the server and for clients from option files. *MySQL* reads default options from the following files on Unix: *Filename* *Purpose* `/etc/my.cnf' Global options `DATADIR/my.cnf' Server-specific options `defaults-extra-file' The file specified with -defaults-extra-file=# `~/.my.cnf' User-specific options `DATADIR' is the *MySQL* data directory (typically `/usr/local/mysql/data' for a binary installation or `/usr/local/var' for a source installation). Note that this is the directory that was specified at configuration time, not the one specified with `--datadir' when `mysqld' starts up! (`--datadir' has no effect on where the server looks for option files, because it looks for them before it processes any command-line arguments.) *MySQL* reads default options from the following files on Windows: *Filename* *Purpose* `windows-system-directory\my.ini'Global options `C:\my.cnf' Global options `C:\mysql\data\my.cnf' Server-specific options Note that on Windows, you should specify all paths with `/' instead of `\'. If you use `\', you need to specify this twice, as `\' is the escape character in *MySQL*. *MySQL* tries to read option files in the order listed above. If multiple option files exist, an option specified in a file read later takes precedence over the same option specified in a file read earlier. Options specified on the command line take precedence over options specified in any option file. Some options can be specified using environment variables. Options specified on the command line or in option files take precedence over environment variable values. *Note Environment variables::. The following programs support option files: `mysql', `mysqladmin', `mysqld', `mysqldump', `mysqlimport', `mysql.server', `myisamchk', and `myisampack'. You can use option files to specify any long option that a program supports! Run the program with `--help' to get a list of available options. An option file can contain lines of the following forms: `#comment' Comment lines start with `#' or `;'. Empty lines are ignored. `[group]' `group' is the name of the program or group for which you want to set options. After a group line, any `option' or `set-variable' lines apply to the named group until the end of the option file or another group line is given. `option' This is equivalent to `--option' on the command line. `option=value' This is equivalent to `--option=value' on the command line. `set-variable = variable=value' This is equivalent to `--set-variable variable=value' on the command line. This syntax must be used to set a `mysqld' variable. The `client' group allows you to specify options that apply to all *MySQL* clients (not `mysqld'). This is the perfect group to use to specify the password you use to connect to the server. (But make sure the option file is readable and writable only to yourself.) Note that for options and values, all leading and trailing blanks are automatically deleted. You may use the escape sequences `\b', `\t', `\n', `\r', `\\', and `\s' in your value string (`\s' == blank). Here is a typical global option file: [client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock set-variable = key_buffer_size=16M set-variable = max_allowed_packet=1M [mysqldump] quick Here is typical user option file: [client] # The following password will be sent to all standard MySQL clients password=my_password [mysql] no-auto-rehash set-variable = connect_timeout=2 [mysql-hot-copy] interactive-timeout If you have a source distribution, you will find sample configuration files named `my-xxxx.cnf' in the `support-files' directory. If you have a binary distribution, look in the `DIR/share/mysql' directory, where `DIR' is the pathname to the *MySQL* installation directory (typically `/usr/local/mysql'). Currently there are sample configuration files for small, medium, large, and very large systems. You can copy `my-xxxx.cnf' to your home directory (rename the copy to `.my.cnf') to experiment with this. All *MySQL* clients that support option files support the following options: -no-defaults Don't read any option files. -print-defaults Print the program name and all options that it will get. -defaults-file=full-path-to-default-fileOnly use the given configuration file. -defaults-extra-file=full-path-to-default-fileRead this configuration file after the global configuration file but before the user configuration file. Note that the above options must be first on the command line to work! `--print-defaults' may however be used directly after the `--defaults-xxx-file' commands. Note for developers: Option file handling is implemented simply by processing all matching options (that is, options in the appropriate group) before any command-line arguments. This works nicely for programs that use the last instance of an option that is specified multiple times. If you have an old program that handles multiply-specified options this way but doesn't read option files, you need add only two lines to give it that capability. Check the source code of any of the standard *MySQL* clients to see how to do this. In shell scripts you can use the `my_print_defaults' command to parse the config files: shell> my_print_defaults client mysql --port=3306 --socket=/tmp/mysql.sock --no-auto-rehash The above output contains all options for the groups 'client' and 'mysql'. Installing many servers on the same machine =========================================== In some cases you may want to have many different `mysqld' deamons (servers) running on the same machine. You may for example want to run a new version of *MySQL* for testing together with an old version that is in production. Another case is when you want to give different users access to different mysqld servers that they manage themself. One way to get a new server running is by starting it with a different socket and port as follows: shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock shell> MYSQL_TCP_PORT=3307 shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT shell> scripts/mysql_install_db shell> bin/safe_mysqld & The environment variables appendix includes a list of other environment variables you can use to affect `mysqld'. *Note Environment variables::. The above is the quick and dirty way that one commonly use for testing. The nice thing with this is that all connections you do in the above shell will automaticly be directed to the new running server! If you need to do this more permanently, you should create an own option file for each server. *Note Option files::. In your startup script that is executed at boot time (mysql.server?) you should specify for both servers: `safe_mysqld --default-file=path-to-option-file' At least the following options should be different per server: `port=#' `socket=path' `pid-file=path' The following options should be different, if they are used: `log=path' `log-bin=path' `log-update=path' `log-isam=path' `bdb-logdir=path' If you want more performance, you can also specify the following differently: `tmpdir=path' `bdb-tmpdir=path' *Note Command-line options::. If you are installing binary *MySQL* versions (.tar files) and start them with `./bin/safe_mysqld' then in most cases the only option you need to add/change is the `socket' and `port' argument to `safe_mysqld'. Upgrading/Downgrading MySQL =========================== You can always move the *MySQL* form and data files between different versions on the same architecture as long as you have the same base version of *MySQL*. The current base version is 3. If you change the character set when running *MySQL* (which may also change the sort order), you must run `myisamchk -r -q' on all tables. Otherwise your indexes may not be ordered correctly. If you are afraid of new versions, you can always rename your old `mysqld' to something like `mysqld'-'old-version-number'. If your new `mysqld' then does something unexpected, you can simply shut it down and restart with your old `mysqld'! When you do an upgrade you should also back up your old databases, of course. If after an upgrade, you experience problems with recompiled client programs, like `Commands out of sync' or unexpected core dumps, you probably have used an old header or library file when compiling your programs. In this case you should check the date for your `mysql.h' file and `libmysqlclient.a' library to verify that they are from the new *MySQL* distribution. If not, please recompile your programs! If you get some problems that the new `mysqld' server doesn't want to start or that you can't connect without a password, check that you don't have some old `my.cnf' file from your old installation! You can check this with: `program-name --print-defaults'. If this outputs anything other than the program name, you have an active `my.cnf' file that will may affect things! It is a good idea to rebuild and reinstall the `Msql-Mysql-modules' distribution whenever you install a new release of *MySQL*, particularly if you notice symptoms such as all your `DBI' scripts dumping core after you upgrade *MySQL*. * Menu: * Upgrading-from-3.22:: Upgrading from a 3.22 version to 3.23 * Upgrading-from-3.21:: Upgrading from a 3.21 version to 3.22 * Upgrading-from-3.20:: Upgrading from a 3.20 version to 3.21 * Upgrading-to-arch:: Upgrading to another architecture Upgrading From Version 3.22 to Version 3.23 ------------------------------------------- *MySQL* Version 3.23 supports tables of the new `MyISAM' type and the old `ISAM' type. You don't have to convert your old tables to use these with Version 3.23. By default, all new tables will be created with type `MyISAM' (unless you start `mysqld' with the `--default-table-type=isam' option). You can change an `ISAM' table to a `MyISAM' table with `ALTER TABLE' or the Perl script `mysql_convert_table_format'. Version 3.22 and 3.21 clients will work without any problems with a Version 3.23 server. The following lists tell what you have to watch out for when upgrading to Version 3.23: * If you do a `DROP DATABASE' on a symbolic linked database, both the link and the original database is deleted. (This didn't happen in 3.22 because configure didn't detect the `readlink' system call). * `OPTIMIZE TABLE' now only works for *MyISAM* tables. For other table types, you can use `ALTER TABLE' to optimize the table. During `OPTIMIZE TABLE' the table is now locked from other threads. * The *MySQL* client `mysql' is now by default started with the option `--no-named-commands (-g)'. This option can be disabled with `--enable-named-commands (-G)'. This may cause incompatibility problems in some cases, for example in SQL scripts that use named commands without a semicolon! Long format commands still work from the first line. * If you are using the `german' character sort order, you must repair all your tables with `isamchk -r', as we have made some changes in the sort order! * The default return type of `IF' will now depend on both arguments and not only the first argument. * `AUTO_INCREMENT' will not work with negative numbers. The reason for this is that negative numbers caused problems when wrapping from -1 to 0. `AUTO_INCREMENT' is now for MyISAM tables handled at a lower level and is much faster than before. For MyISAM tables old numbers are also not reused anymore, even if you delete some rows from the table. * `CASE', `DELAYED', `ELSE', `END', `FULLTEXT', `INNER', `RIGHT', `THEN' and `WHEN' are now reserved words. * `FLOAT(X)' is now a true floating-point type and not a value with a fixed number of decimals. * When declaring `DECIMAL(length,dec)' the length argument no longer includes a place for the sign or the decimal point. * A `TIME' string must now be of one of the following formats: `[[[DAYS] [H]H:]MM:]SS[.fraction]' or `[[[[[H]H]H]H]MM]SS[.fraction]' * `LIKE' now compares strings using the same character comparison rules as `'=''. If you require the old behavior, you can compile *MySQL* with the `CXXFLAGS=-DLIKE_CMP_TOUPPER' flag. * `REGEXP' is now case insensitive for normal (not binary) strings. * When you check/repair tables you should use `CHECK TABLE' or `myisamchk' for `MyISAM' tables (`.MYI') and `isamchk' for ISAM (`.ISM') tables. * If you want your `mysqldump' files to be compatible between *MySQL* Version 3.22 and Version 3.23, you should not use the `--opt' or `--full' option to `mysqldump'. * Check all your calls to `DATE_FORMAT()' to make sure there is a `%' before each format character. (Later *MySQL* Version 3.22 did allow this syntax.) * `mysql_fetch_fields_direct' is now a function (it was a macro) and it returns a pointer to a `MYSQL_FIELD' instead of a `MYSQL_FIELD'. * `mysql_num_fields()' can no longer be used on a `MYSQL*' object (it's now a function that takes `MYSQL_RES*' as an argument. You should now use `mysql_field_count()' instead. * In *MySQL* Version 3.22, the output of `SELECT DISTINCT ...' was almost always sorted. In Version 3.23, you must use `GROUP BY' or `ORDER BY' to obtain sorted output. * `SUM()' now returns `NULL', instead of 0, if there is no matching rows. This is according to ANSI SQL. * An `AND' or `OR' with `NULL' values will now return `NULL' instead of 0. This mostly affects queries that use `NOT' on an `AND/OR' expression as `NOT NULL' = `NULL'. `LPAD()' and `RPAD()' will shorten the result string if it's longer than the length argument. Upgrading from Version 3.21 to Version 3.22 ------------------------------------------- Nothing that affects compatibility has changed between Version 3.21 and 3.22. The only pitfall is that new tables that are created with `DATE' type columns will use the new way to store the date. You can't access these new fields from an old version of `mysqld'. After installing *MySQL* Version 3.22, you should start the new server and then run the `mysql_fix_privilege_tables' script. This will add the new privileges that you need to use the `GRANT' command. If you forget this, you will get `Access denied' when you try to use `ALTER TABLE', `CREATE INDEX', or `DROP INDEX'. If your *MySQL* root user requires a password, you should give this as an argument to `mysql_fix_privilege_tables'. The C API interface to `mysql_real_connect()' has changed. If you have an old client program that calls this function, you must place a `0' for the new `db' argument (or recode the client to send the `db' element for faster connections). You must also call `mysql_init()' before calling `mysql_real_connect()'! This change was done to allow the new `mysql_options()' function to save options in the `MYSQL' handler structure. The `mysqld' variable `key_buffer' has changed names to `key_buffer_size', but you can still use the old name in your startup files. Upgrading from Version 3.20 to Version 3.21 ------------------------------------------- If you are running a version older than Version 3.20.28 and want to switch to Version 3.21, you need to do the following: You can start the `mysqld' Version 3.21 server with `safe_mysqld --old-protocol' to use it with clients from a Version 3.20 distribution. In this case, the new client function `mysql_errno()' will not return any server error, only `CR_UNKNOWN_ERROR' (but it works for client errors), and the server uses the old `password()' checking rather than the new one. If you are *NOT* using the `--old-protocol' option to `mysqld', you will need to make the following changes: * All client code must be recompiled. If you are using ODBC, you must get the new *MyODBC* 2.x driver. * The script `scripts/add_long_password' must be run to convert the `Password' field in the `mysql.user' table to `CHAR(16)'. * All passwords must be reassigned in the `mysql.user' table (to get 62-bit rather than 31-bit passwords). * The table format hasn't changed, so you don't have to convert any tables. *MySQL* Version 3.20.28 and above can handle the new `user' table format without affecting clients. If you have a *MySQL* version earlier than Version 3.20.28, passwords will no longer work with it if you convert the `user' table. So to be safe, you should first upgrade to at least Version 3.20.28 and then upgrade to Version 3.21. The new client code works with a 3.20.x `mysqld' server, so if you experience problems with 3.21.x, you can use the old 3.20.x server without having to recompile the clients again. If you are not using the `--old-protocol' option to `mysqld', old clients will issue the error message: ERROR: Protocol mismatch. Server Version = 10 Client Version = 9 The new Perl `DBI'/`DBD' interface also supports the old `mysqlperl' interface. The only change you have to make if you use `mysqlperl' is to change the arguments to the `connect()' function. The new arguments are: `host', `database', `user', `password' (the `user' and `password' arguments have changed places). *Note Perl `DBI' Class: Perl DBI Class. The following changes may affect queries in old applications: * `HAVING' must now be specified before any `ORDER BY' clause. * The parameters to `LOCATE()' have been swapped. * There are some new reserved words. The most notable are `DATE', `TIME', and `TIMESTAMP'. Upgrading to Another Architecture --------------------------------- If you are using *MySQL* Version 3.23, you can copy the `.frm', `.MYI', and `.MYD' files between different architectures that support the same floating-point format. (*MySQL* takes care of any byte swapping issues.) The *MySQL* `ISAM' data and index files (`.ISD' and `*.ISM', respectively) are architecture-dependent and in some cases OS-dependent. If you want to move your applications to another machine that has a different architecture or OS than your current machine, you should not try to move a database by simply copying the files to the other machine. Use `mysqldump' instead. By default, `mysqldump' will create a file full of SQL statements. You can then transfer the file to the other machine and feed it as input to the `mysql' client. Try `mysqldump --help' to see what options are available. If you are moving the data to a newer version of *MySQL*, you should use `mysqldump --opt' with the newer version to get a fast, compact dump. The easiest (although not the fastest) way to move a database between two machines is to run the following commands on the machine on which the database is located: shell> mysqladmin -h 'other hostname' create db_name shell> mysqldump --opt db_name \ | mysql -h 'other hostname' db_name If you want to copy a database from a remote machine over a slow network, you can use: shell> mysqladmin create db_name shell> mysqldump -h 'other hostname' --opt --compress db_name \ | mysql db_name You can also store the result in a file, then transfer the file to the target machine and load the file into the database there. For example, you can dump a database to a file on the source machine like this: shell> mysqldump --quick db_name | gzip > db_name.contents.gz (The file created in this example is compressed.) Transfer the file containing the database contents to the target machine and run these commands there: shell> mysqladmin create db_name shell> gunzip < db_name.contents.gz | mysql db_name You can also use `mysqldump' and `mysqlimport' to accomplish the database transfer. For big tables, this is much faster than simply using `mysqldump'. In the commands shown below, `DUMPDIR' represents the full pathname of the directory you use to store the output from `mysqldump'. First, create the directory for the output files and dump the database: shell> mkdir DUMPDIR shell> mysqldump --tab=DUMPDIR db_name Then transfer the files in the `DUMPDIR' directory to some corresponding directory on the target machine and load the files into *MySQL* there: shell> mysqladmin create db_name # create database shell> cat DUMPDIR/*.sql | mysql db_name # create tables in database shell> mysqlimport db_name DUMPDIR/*.txt # load data into tables Also, don't forget to copy the `mysql' database, because that's where the grant tables (`user', `db', `host') are stored. You may have to run commands as the *MySQL* `root' user on the new machine until you have the `mysql' database in place. After you import the `mysql' database on the new machine, execute `mysqladmin flush-privileges' so that the server reloads the grant table information. you kêr3ú…í�Ñw”·:•Ž·:•Ž·:! ˜6Ñ./usr/local/lib/mysql-client-3.23/libtoolSOURCEó/í�#! /bin/sh # libtool - Provide generalized library-building support services. # Generated automatically by ltconfig (GNU libtool 1.3.5a (1.385.2.236 2000/10/30 23:25:09)) # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ### BEGIN LIBTOOL CONFIG # Libtool was configured as follows, on host esther: # # CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 " CFLAGS="-I /usr/local/include -DHAVE_INT_8_16_32 " CPPFLAGS="-I /usr/local/include -DHAVE_INT_8_16_32" \ # LD="/usr/bin/ld" LDFLAGS="-L/usr/local/lib" LIBS="" \ # NM="/usr/bin/nm -B" RANLIB="ranlib" LN_S="ln -s" \ # DLLTOOL="" OBJDUMP="" AS="/usr/bin/as" \ # ./ltconfig --no-verify ./ltmain.sh powerpc-ibm-aix4.3.2.0 # # Compiler and other test output produced by ltconfig, useful for # debugging ltconfig, is in ./config.log if it exists. # The version of ltconfig that generated this script. LTCONFIG_VERSION="1.3.5a" # Shell to use when invoking shell scripts. SHELL="/bin/sh" # Whether or not to build shared libraries. build_libtool_libs=yes # Whether or not to build static libraries. build_old_libs=no # Whether or not to optimize for fast installation. fast_install=yes # The host system. host_alias=powerpc-ibm-aix4.3.2.0 host=powerpc-ibm-aix4.3.2.0 # An echo program that does not interpret backslashes. echo="print -r" # The archiver. AR="ar" # The default C compiler. CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 " # The linker used to build libraries. LD="/usr/bin/ld" # Whether we need hard or soft links. LN_S="ln -s" # A BSD-compatible nm program. NM="/usr/bin/nm -B" # Used on cygwin: DLL creation program. DLLTOOL="dlltool" # Used on cygwin: object dumper. OBJDUMP="objdump" # Used on cygwin: assembler. AS="/usr/bin/as" # The name of the directory that contains temporary libtool files. objdir=.libs # How to create reloadable object files. reload_flag=" -r" reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" # How to pass a linker flag through the compiler. wl="-Wl," # Object file suffix (normally "o"). objext="o" # Old archive suffix (normally "a"). libext="a" # Executable file suffix (normally ""). exeext="" # Additional compiler flags for building library objects. pic_flag="" # Does compiler simultaneously support -c and -o options? compiler_c_o="yes" # Can we write directly to a .lo ? compiler_o_lo="yes" # Must we lock files when doing compilation ? need_locks="no" # Do we need the lib prefix for modules? need_lib_prefix=unknown # Do we need a version for libraries? need_version=unknown # Whether dlopen is supported. dlopen=unknown # Whether dlopen of programs is supported. dlopen_self=unknown # Whether dlopen of statically linked programs is supported. dlopen_self_static=unknown # Compiler flag to prevent dynamic linking. link_static_flag="" # Compiler flag to turn off builtin functions. no_builtin_flag="" # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec="" # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec="" # Compiler flag to generate thread-safe objects. thread_safe_flag_spec="" # Library versioning type. version_type=linux # Format of library name prefix. libname_spec="lib\$name" # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec="\${libname}\${release}.a \$libname.a" # The coded name of the library, if different from the real name. soname_spec="\${libname}\${release}.so\$major" # Commands used to build and install an old-style archive. RANLIB="ranlib" old_archive_cmds="\$AR cru \$oldlib\$oldobjs~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib" old_postuninstall_cmds="" # Create an old-style archive from a shared archive. old_archive_from_new_cmds="" # Commands used to build and install a shared archive. archive_cmds="" archive_expsym_cmds="\$CC \${wl}-bM:SRE -o \$objdir/\$soname \$libobjs \$deplibs \$linkopts \${wl}\${allow_undefined_flag} \$no_entry_flag \${wl}-bexport:\$export_symbols ~\$AR -crlo \$objdir/\$libname\$release.a \$objdir/\$soname" postinstall_cmds="" postuninstall_cmds="" # Method to check whether dependent libraries are shared objects. deplibs_check_method="pass_all" # Command to use when deplibs_check_method == file_magic. file_magic_cmd="" # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag="-berok" # Flag that forces no undefined symbols. no_undefined_flag="" # Commands used to finish a libtool library installation in a directory. finish_cmds="" # Same as above, but a single script fragment to be evaled but not shown. finish_eval="" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([BCDT]\\)[ ][ ]*\\(\\)\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2\\3 \\3/p'" # Transform the output of nm in a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern char \\1;/p'" # This is the shared library runtime path variable. runpath_var= # This is the shared library path variable. shlibpath_var=LIBPATH # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=unknown # How to hardcode a shared library path into an executable. hardcode_action=immediate # Flag to hardcode $libdir into a binary during linking. # This must work even if $libdir does not exist. hardcode_libdir_flag_spec="\${wl}-bnolibpath \${wl}-blibpath:\$libdir:/usr/lib:/lib" # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=":" # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=yes # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=no # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=unsupported # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="PATH LIBPATH " # Compile-time system search path for libraries sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" # Run-time system search path for libraries sys_lib_dlsearch_path_spec="/lib /usr/lib" # Fix the shell variable $srcfile for the compiler. fix_srcfile_path="" # Set to yes if exported symbols are required. always_export_symbols=yes # The commands to list exported symbols. export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | sed 's/.* //' | sort | uniq > \$export_symbols" # Symbols that should not be listed in the preloaded symbols. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Symbols that must always be exported. include_expsyms="" ### END LIBTOOL CONFIG # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun ltconfig. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then echo "$modename: not configured to build any kind of library" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" # Parse our command line options once, thoroughly. while test $# -gt 0 do arg="$1" shift case "$arg" in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in execute_dlfiles) eval "$prev=\"\$$prev \$arg\"" ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case "$arg" in --help) show_help=yes ;; --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" exit 0 ;; --config) sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; --debug) echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --quiet | --silent) show=: ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case "$nonopt" in *cc | *++ | gcc* | *-gcc*) mode=link for arg do case "$arg" in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case "$mode" in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= lastarg= srcfile="$nonopt" suppress_output= user_target=no for arg do # Accept any command-line options. case "$arg" in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi user_target=next ;; -static) build_old_libs=yes continue ;; esac case "$user_target" in next) # The next one is the -o target name user_target=yes continue ;; yes) # We got the output file user_target=set libobj="$arg" continue ;; esac # Accept the current argument as the source file. lastarg="$srcfile" srcfile="$arg" # Aesthetically quote the previous argument. # Backslashify any backslashes, double quotes, and dollar signs. # These are the only characters that are still specially # interpreted inside of double-quoted scrings. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly in scan # sets, so we specify it separately. case "$lastarg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) lastarg="\"$lastarg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi done case "$user_target" in set) ;; no) # Get the name of the library object. libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; *) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' case "$libobj" in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case "$libobj" in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $libobj" else removelist="$libobj" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$libobj"; then dir="$objdir" else dir="$dir/$objdir" fi libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` if test -d "$dir"; then $show "$rm $libobj" $run $rm $libobj else $show "$mkdir $dir" $run $mkdir $dir status=$? if test $status -ne 0 && test ! -d $dir; then exit $status fi fi fi if test "$compiler_o_lo" = yes; then output_obj="$libobj" command="$command -o $output_obj" elif test "$compiler_c_o" = yes; then output_obj="$obj" command="$command -o $output_obj" fi $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if test -z "$pic_flag" && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then command="$base_compile $srcfile" if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $rm "$lockfile" fi exit 0 ;; # libtool link mode link) modename="$modename: link" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (!dll) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case "$prev" in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case "$arg" in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case "$arg" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi prevarg="$arg" case "$arg" in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: not more than one -exported-symbols argument allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 absdir="$dir" fi dir="$absdir" ;; esac case " $deplibs " in *" $arg "*) ;; *) deplibs="$deplibs $arg";; esac case " $lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir";; esac case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) dllsearchdir=`cd "$dir" && pwd || echo "$dir"` case ":$dllsearchpath:" in ::) dllsearchpath="$dllsearchdir";; *":$dllsearchdir:"*) ;; *) dllsearchpath="$dllsearchpath:$dllsearchdir";; esac ;; esac ;; -l*) if test "$arg" = "-lc"; then case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) # These systems don't actually have c library (as such) continue ;; esac elif test "$arg" = "-lm"; then case "$host" in *-*-cygwin* | *-*-beos*) # These systems don't actually have math library (as such) continue ;; esac fi deplibs="$deplibs $arg" ;; -module) module=yes continue ;; -no-undefined) allow_undefined=no continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # If we have no pic_flag, then this is the same as -all-static. if test -z "$pic_flag" && test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` linkflags="$linkflags $arg" case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac ;; *.o | *.obj | *.a | *.lib) # A standard object. objs="$objs $arg" ;; *.lo) # A library object. if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= fi libobjs="$libobjs $arg" ;; *.la) # A libtool-controlled library. dlname= libdir= library_names= old_library= # Check to see that this really is a libtool archive. if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 exit 1 fi # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file # If there is no directory component, then add one. case "$arg" in */* | *\\*) . $arg ;; *) . ./$arg ;; esac # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 exit 1 fi # Find the relevant object directory and library name. name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` if test "X$installed" = Xyes; then dir="$libdir" else dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$arg"; then dir="$objdir" else dir="$dir/$objdir" fi fi if test -n "$dependency_libs"; then # Extract -R and -L from dependency_libs temp_deplibs= for deplib in $dependency_libs; do case "$deplib" in -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` case " $rpath $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; -L*) case "$compile_command $temp_deplibs " in *" $deplib "*) ;; *) temp_deplibs="$temp_deplibs $deplib";; esac temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` case " $lib_search_path " in *" $temp_dir "*) ;; *) lib_search_path="$lib_search_path $temp_dir";; esac ;; *) temp_deplibs="$temp_deplibs $deplib";; esac done dependency_libs="$temp_deplibs" fi if test -z "$libdir"; then # It is a libtool convenience library, so add in its objects. convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$deplibs$dependency_libs" compile_command="$compile_command $dir/$old_library$dependency_libs" finalize_command="$finalize_command $dir/$old_library$dependency_libs" continue fi # This library was specified with -dlopen. if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking statically, # we need to preload. prev=dlprefiles else # We should not create a dependency on this library, but we # may need any libraries it requires. compile_command="$compile_command$dependency_libs" finalize_command="$finalize_command$dependency_libs" prev= continue fi fi # The library was specified with -dlpreopen. if test "$prev" = dlprefiles; then # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then dlprefiles="$dlprefiles $dir/$old_library" else dlprefiles="$dlprefiles $dir/$linklib" fi prev= fi if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then link_against_libtool_libs="$link_against_libtool_libs $arg" if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # We need an absolute path. case "$dir" in [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 absdir="$dir" fi ;; esac # This is the magic to use -rpath. # Skip directories that are in the system default run-time # search path, unless they have been requested with -R. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac lib_linked=yes case "$hardcode_action" in immediate | unsupported) if test "$hardcode_direct" = no; then compile_command="$compile_command $dir/$linklib" deplibs="$deplibs $dir/$linklib" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) dllsearchdir=`cd "$dir" && pwd || echo "$dir"` if test -n "$dllsearchpath"; then dllsearchpath="$dllsearchpath:$dllsearchdir" else dllsearchpath="$dllsearchdir" fi ;; esac elif test "$hardcode_minus_L" = no; then case "$host" in *-*-sunos*) compile_shlibpath="$compile_shlibpath$dir:" ;; esac case "$compile_command " in *" -L$dir "*) ;; *) compile_command="$compile_command -L$dir";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -L$dir -l$name" elif test "$hardcode_shlibpath_var" = no; then case ":$compile_shlibpath:" in *":$dir:"*) ;; *) compile_shlibpath="$compile_shlibpath$dir:";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then compile_command="$compile_command $absdir/$linklib" deplibs="$deplibs $absdir/$linklib" elif test "$hardcode_minus_L" = yes; then case "$compile_command " in *" -L$absdir "*) ;; *) compile_command="$compile_command -L$absdir";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -L$absdir -l$name" elif test "$hardcode_shlibpath_var" = yes; then case ":$compile_shlibpath:" in *":$absdir:"*) ;; *) compile_shlibpath="$compile_shlibpath$absdir:";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then finalize_command="$finalize_command $libdir/$linklib" elif test "$hardcode_minus_L" = yes; then case "$finalize_command " in *" -L$libdir "*) ;; *) finalize_command="$finalize_command -L$libdir";; esac finalize_command="$finalize_command -l$name" elif test "$hardcode_shlibpath_var" = yes; then case ":$finalize_shlibpath:" in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:";; esac finalize_command="$finalize_command -l$name" else # We cannot seem to hardcode it, guess we'll fake it. case "$finalize_command " in *" -L$dir "*) ;; *) finalize_command="$finalize_command -L$libdir";; esac finalize_command="$finalize_command -l$name" fi else # Transform directly to old archives if we don't build new libraries. if test -n "$pic_flag" && test -z "$old_library"; then $echo "$modename: cannot find static library for \`$arg'" 1>&2 exit 1 fi # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_command="$compile_command $dir/$linklib" finalize_command="$finalize_command $dir/$linklib" else case "$compile_command " in *" -L$dir "*) ;; *) compile_command="$compile_command -L$dir";; esac compile_command="$compile_command -l$name" case "$finalize_command " in *" -L$dir "*) ;; *) finalize_command="$finalize_command -L$dir";; esac finalize_command="$finalize_command -l$name" fi fi # Add in any libraries that this one depends upon. compile_command="$compile_command$dependency_libs" finalize_command="$finalize_command$dependency_libs" continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac ;; esac # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" case "$output" in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.a | *.lib) if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 exit 1 fi if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" ;; *.la) # Make sure we only generate libraries of the form `libNAME.la'. case "$outputname" in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi if test -n "$objs"; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 exit 1 fi # How the heck are we supposed to write a wrapper for a shared library? if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 exit 1 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test $# -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. libext=al oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi dependency_libs="$deplibs" if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi current="$2" revision="$3" age="$4" # Check that each of the things are valid numbers. case "$current" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case "$revision" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case "$age" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test $age -gt $current; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case "$version_type" in none) ;; irix) major=`expr $current - $age + 1` versuffix="$major.$revision" verstring="sgi$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test $loop != 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="sgi$major.$iface:$verstring" done ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test $loop != 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; windows) # Like Linux, but with '-' rather than '.', since we only # want one extension on Windows 95. major=`expr $current - $age` versuffix="-$major-$age-$revision" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= verstring="0.0" if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi dependency_libs="$deplibs" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody*) # rhapsody is a little odd... deplibs="$deplibs -framework System" ;; *) # Add libc to deplibs on all other systems. deplibs="$deplibs -lc" ;; esac fi # Create the output directory, or remove our outputs if we need to. if test -d $output_objdir; then $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* else $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi if test "$build_libtool_libs" = yes; then # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case "$deplibs_check_method" in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behaviour. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | sed 's/.* -> //'` case "$potliblink" in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | sed 10q \ | egrep "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: This library needs some functionality provided by $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | grep . >/dev/null; then echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" echo "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Ensure that we have .o objects for linkers which dislike .lo # (e.g. aix) in case we are running --disable-static for obj in $libobjs; do xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` if test ! -f $xdir/$oldobj; then $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? fi done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linkopts="$linkopts $flag" fi # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else eval cmds=\"$archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; *.lo | *.o | *.obj) if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 exit 1 fi if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case "$output" in *.lo) if test -n "$objs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" output="$obj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. $show "echo timestamp > $libobj" $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" else # Just create a symlink. $show $rm $libobj $run $rm $libobj xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$libobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` $show "(cd $xdir && $LN_S $oldobj $baseobj)" $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; # Anything else should be a program. *) if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$compile_rpath " in *" $libdir "*) ;; *) compile_rpath="$compile_rpath $libdir" ;; esac case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the binary in the object directory, then wrap it. if test ! -d $output_objdir; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case "$dlsyms" in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | sed -e 's%^.*/%%'` $run eval 'echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = {\ " sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr_t) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case "$host" in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case "$0" in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`echo $output|sed 's,.exe$,,'` ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: link_against_libtool_libs='$link_against_libtool_libs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then echo >> $output "\ program=lt-'$outputname' progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if (cd \"\$thisdir\" && eval \$relink_command); then : else $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # win32 systems need to use the prog path for dll # lookup to work *-*-cygwin*) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ # Export the path to the program. PATH=\"\$progdir:\$PATH\" export PATH exec \$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else # Ensure that we have .o objects in place in case we decided # not to build a shared library, and have fallen back to building # static libs even though --disable-static was passed! for oldobj in $oldobjs; do if test ! -f $oldobj; then xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$oldobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` $show "(cd $xdir && ${LN_S} $obj $baseobj)" $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? fi done eval cmds=\"$old_archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case "$output" in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" if test -n "$xrpath"; then temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" done dependency_libs="$temp_xrpath $dependency_libs" fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i fi $rm $output $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$dlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Directory that this library needs to be installed in: libdir='$install_libdir'\ " done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case "$arg" in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test $# -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case "$destdir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case "$file" in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case "$file" in *.a | *.lib) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" test "X$dir" = "X$file/" && dir= dir="$dir$objdir" # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift # Install the shared library and build the symlinks. $show "$install_prog $dir/$realname $destdir/$realname" $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? if test $# -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case "$destfile" in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.o | *.obj) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then link_against_libtool_libs= relink_command= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Check the variables that should have been set. if test -z "$link_against_libtool_libs"; then $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 exit 1 fi finalize=yes for lib in $link_against_libtool_libs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case "$lib" in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec $SHELL $0 --finish$current_libdirs exit 1 fi exit 0 ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do echo " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" echo "more information, such as the ld(1) and ld.so(8) manual pages." echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case "$file" in *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case "$file" in -*) ;; *) # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved enviroment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now actually exec the command. eval "exec \$cmd$args" $echo "$modename: cannot exec \$cmd$args" exit 1 else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool uninstall mode uninstall) modename="$modename: uninstall" rm="$nonopt" files= for arg do case "$arg" in -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` rmfiles="$file" case "$name" in *.la) # Possibly a libtool archive, so verify it. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $dir/$n" done test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" $show "$rm $rmfiles" $run $rm $rmfiles if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi ;; *.lo) if test "$build_old_libs" = yes; then oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi $show "$rm $rmfiles" $run $rm $rmfiles ;; *) $show "$rm $rmfiles" $run $rm $rmfiles ;; esac done exit 0 ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi # test -z "$show_help" # We need to display help for each of the modes. case "$mode" in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --version print version information MODE must be one of the following: compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE." exit 0 ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End:  kêî“û…í�’w”·:•Ž·:•Ž·:! ®6’./usr/local/lib/mysql-client-3.23/ltconfigOURCEó/í�#! /bin/sh # ltconfig - Create a system-specific libtool. # Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This file 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # A lot of this script is taken from autoconf-2.10. # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} echo=echo if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec "$SHELL" "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null`} case X$UNAME in *-DOS) PATH_SEPARATOR=';' ;; *) PATH_SEPARATOR=':' ;; esac fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if (echo_test_string="`eval $cmd`") 2>/dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then break fi done fi if test "X`($echo '\t') 2>/dev/null`" != 'X\t' || test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running ltconfig again with it. ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}" export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf "%s\n"' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then # Cool, printf works : elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL" export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # The name of this program. progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` # Constants: PROGRAM=ltconfig PACKAGE=libtool VERSION=1.3.5a TIMESTAMP=" (1.385.2.236 2000/10/30 23:25:09)" ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' rm="rm -f" help="Try \`$progname --help' for more information." # Global variables: default_ofile=libtool can_build_shared=yes enable_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). enable_static=yes enable_fast_install=yes enable_dlopen=unknown enable_win32_dll=no ltmain= silent= srcdir= ac_config_guess= ac_config_sub= host= nonopt= ofile="$default_ofile" verify_host=yes with_gcc=no with_gnu_ld=no need_locks=yes ac_ext=c objext=o libext=a exeext= cache_file= old_AR="$AR" old_CC="$CC" old_CFLAGS="$CFLAGS" old_CPPFLAGS="$CPPFLAGS" old_LDFLAGS="$LDFLAGS" old_LD="$LD" old_LN_S="$LN_S" old_LIBS="$LIBS" old_NM="$NM" old_RANLIB="$RANLIB" old_DLLTOOL="$DLLTOOL" old_OBJDUMP="$OBJDUMP" old_AS="$AS" # Parse the command line options. args= prev= for option do case "$option" in -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then eval "$prev=\$option" prev= continue fi case "$option" in --help) cat <&2 echo "$help" 1>&2 exit 1 ;; *) if test -z "$ltmain"; then ltmain="$option" elif test -z "$host"; then # This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 # if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then # echo "$progname: warning \`$option' is not a valid host type" 1>&2 # fi host="$option" else echo "$progname: too many arguments" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac done if test -z "$ltmain"; then echo "$progname: you must specify a LTMAIN file" 1>&2 echo "$help" 1>&2 exit 1 fi if test ! -f "$ltmain"; then echo "$progname: \`$ltmain' does not exist" 1>&2 echo "$help" 1>&2 exit 1 fi # Quote any args containing shell metacharacters. ltconfig_args= for arg do case "$arg" in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ltconfig_args="$ltconfig_args '$arg'" ;; *) ltconfig_args="$ltconfig_args $arg" ;; esac done # A relevant subset of AC_INIT. # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 5 compiler messages saved in config.log # 6 checking for... messages and results if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>>./config.log # NLS nuisances. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi if test "X${LANG+set}" = Xset; then LANG=C; export LANG; fi if test -n "$cache_file" && test -r "$cache_file" && test -f "$cache_file"; then echo "loading cache $cache_file within ltconfig" . $cache_file fi if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi if test -z "$srcdir"; then # Assume the source directory is the same one as the path to LTMAIN. srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` test "$srcdir" = "$ltmain" && srcdir=. fi trap "$rm conftest*; exit 1" 1 2 15 if test "$verify_host" = yes; then # Check for config.guess and config.sub. ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/config.guess; then ac_aux_dir=$ac_dir break fi done if test -z "$ac_aux_dir"; then echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 echo "$help" 1>&2 exit 1 fi ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub # Make sure we can run config.sub. if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : else echo "$progname: cannot run $ac_config_sub" 1>&2 echo "$help" 1>&2 exit 1 fi echo $ac_n "checking host system type""... $ac_c" 1>&6 host_alias=$host case "$host_alias" in "") if host_alias=`$SHELL $ac_config_guess`; then : else echo "$progname: cannot guess host type; you must specify one" 1>&2 echo "$help" 1>&2 exit 1 fi ;; esac host=`$SHELL $ac_config_sub $host_alias` echo "$ac_t$host" 1>&6 # Make sure the host verified. test -z "$host" && exit 1 elif test -z "$host"; then echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 echo "$help" 1>&2 exit 1 else host_alias=$host fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case "$host_os" in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` case "$host_os" in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR cru $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= # Set a sane default for `AR'. test -z "$AR" && AR=ar # Set a sane default for `OBJDUMP'. test -z "$OBJDUMP" && OBJDUMP=objdump # If RANLIB is not set, then run the test. if test "${RANLIB+set}" != "set"; then result=no echo $ac_n "checking for ranlib... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then RANLIB="ranlib" result="ranlib" break fi done IFS="$save_ifs" echo "$ac_t$result" 1>&6 fi if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" fi # Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$AS" && AS=as # Check to see if we are using GCC. if test "$with_gcc" != yes || test -z "$CC"; then # If CC is not set, then try to find GCC or a usable CC. if test -z "$CC"; then echo $ac_n "checking for gcc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then CC="gcc" break fi done IFS="$save_ifs" if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi fi # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". if test -z "$CC"; then echo $ac_n "checking for cc... $ac_c" 1>&6 IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" cc_rejected=no for dir in $PATH; do test -z "$dir" && dir=. if test -f $dir/cc || test -f $dir/cc$ac_exeext; then if test "$dir/cc" = "/usr/ucb/cc"; then cc_rejected=yes continue fi CC="cc" break fi done IFS="$save_ifs" if test $cc_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same name, so the bogon will be chosen # first if we set CC to just the name; use the full file name. shift set dummy "$dir/cc" "$@" shift CC="$@" fi fi if test -n "$CC"; then echo "$ac_t$CC" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$CC"; then echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 exit 1 fi fi # Now see if the compiler is really GCC. with_gcc=no echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 echo "$progname:581: checking whether we are using GNU C" >&5 $rm conftest.c cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then with_gcc=yes fi $rm conftest.c echo "$ac_t$with_gcc" 1>&6 fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" echo $ac_n "checking for object suffix... $ac_c" 1>&6 $rm conftest* echo 'int i = 1;' > conftest.c echo "$progname:603: checking for object suffix" >& 5 if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c) ;; *) objext=`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* echo "$ac_t$objext" 1>&6 echo $ac_n "checking for executable suffix... $ac_c" 1>&6 if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else case "$host_os" in cygwin* | mingw* | os2*) ac_cv_exeext=.exe ;; *) ac_cv_exeext="no" $rm conftest* echo 'main () { return 0; }' > conftest.c echo "$progname:634: checking for executable suffix" >& 5 if { (eval echo $progname:635: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then # Append any warnings to the config.log. cat conftest.err 1>&5 for ac_file in conftest.*; do case $ac_file in *.c | *.err | *.$objext ) ;; *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; esac done else cat conftest.err 1>&5 echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* ;; esac fi if test "X$ac_cv_exeext" = Xno; then exeext="" else exeext="$ac_cv_exeext" fi echo "$ac_t$ac_cv_exeext" 1>&6 echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 pic_flag= special_shlib_compile_flags= wl= link_static_flag= no_builtin_flag= if test "$with_gcc" = yes; then wl='-Wl,' link_static_flag='-static' case "$host_os" in beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # we not sure about C++ programs. link_static_flag="$link_static_flag ${wl}-lC" ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. pic_flag='-m68020 -resident32 -malways-restore-a4' ;; sysv4*MP*) if test -d /usr/nec; then pic_flag=-Kconform_pic fi ;; *) pic_flag='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case "$host_os" in aix3* | aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor link_static_flag='-Bstatic' else link_static_flag='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better link_static_flag that works with the bundled CC? wl='-Wl,' link_static_flag="${wl}-a ${wl}archive" pic_flag='+Z' ;; irix5* | irix6*) wl='-Wl,' link_static_flag='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | os2*) # We can build DLLs from non-PIC. ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. wl='-Wl,' link_static_flag='-non_shared' ;; sco3.2v5*) pic_flag='-Kpic' link_static_flag='-dn' special_shlib_compile_flags='-belf' ;; solaris*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; sunos4*) pic_flag='-PIC' link_static_flag='-Bstatic' wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) pic_flag='-KPIC' link_static_flag='-Bstatic' wl='-Wl,' ;; uts4*) pic_flag='-pic' link_static_flag='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then pic_flag='-Kconform_pic' link_static_flag='-Bstatic' fi ;; *) can_build_shared=no ;; esac fi if test -n "$pic_flag"; then echo "$ac_t$pic_flag" 1>&6 # Check to make sure the pic_flag actually works. echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $pic_flag -DPIC" echo "$progname:788: checking if $compiler PIC flag $pic_flag works" >&5 if { (eval echo $progname:789: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then # Append any warnings to the config.log. cat conftest.err 1>&5 case "$host_os" in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then they # create non-PIC objects. So, if there were any warnings, we assume that # PIC is not supported. if test -s conftest.err; then echo "$ac_t"no 1>&6 can_build_shared=no pic_flag= else echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" fi ;; *) echo "$ac_t"yes 1>&6 pic_flag=" $pic_flag" ;; esac else # Append any errors to the config.log. cat conftest.err 1>&5 can_build_shared=no pic_flag= echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else echo "$ac_t"none 1>&6 fi # Check to see if options -o and -c are simultaneously supported by compiler echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 $rm -r conftest 2>/dev/null mkdir conftest cd conftest $rm conftest* echo "int some_variable = 0;" > conftest.c mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.o" echo "$progname:841: checking if $compiler supports -c -o file.o" >&5 if { (eval echo $progname:842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then echo "$ac_t"no 1>&6 compiler_c_o=no else echo "$ac_t"yes 1>&6 compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 compiler_c_o=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" echo "$progname:874: checking if $compiler supports -c -o file.lo" >&5 if { (eval echo $progname:875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_o_lo=no else echo "$ac_t"yes 1>&6 compiler_o_lo=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_o_lo=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* else compiler_o_lo=no fi # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$ac_t$hard_links" 1>&6 $rm conftest* if test "$hard_links" = no; then echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 need_locks=warn fi else need_locks=no fi if test "$with_gcc" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 $rm conftest* echo "int some_variable = 0;" > conftest.c save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" echo "$progname:926: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 if { (eval echo $progname:927: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then echo "$ac_t"no 1>&6 compiler_rtti_exceptions=no else echo "$ac_t"yes 1>&6 compiler_rtti_exceptions=yes fi else # Append any errors to the config.log. cat conftest.err 1>&5 compiler_rtti_exceptions=no echo "$ac_t"no 1>&6 fi CFLAGS="$save_CFLAGS" $rm conftest* if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi # Check for any special shared library compilation flags. if test -n "$special_shlib_compile_flags"; then echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : else echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 can_build_shared=no fi fi echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 $rm conftest* echo 'main(){return(0);}' > conftest.c save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $link_static_flag" echo "$progname:970: checking if $compiler static flag $link_static_flag works" >&5 if { (eval echo $progname:971: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then echo "$ac_t$link_static_flag" 1>&6 else echo "$ac_t"none 1>&6 link_static_flag= fi LDFLAGS="$save_LDFLAGS" $rm conftest* if test -z "$LN_S"; then # Check to see if we can use ln -s, or we need hard links. echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 $rm conftest.dat if ln -s X conftest.dat 2>/dev/null; then $rm conftest.dat LN_S="ln -s" else LN_S=ln fi if test "$LN_S" = "ln -s"; then echo "$ac_t"yes 1>&6 else echo "$ac_t"no 1>&6 fi fi # Make sure LD is an absolute path. if test -z "$LD"; then ac_prog=ld if test "$with_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 echo "$progname:1003: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we are not using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld... $ac_c" 1>&6 echo "$progname:1027: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 echo "$progname:1030: checking for non-GNU ld" >&5 fi if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" fi if test -n "$LD"; then echo "$ac_t$LD" 1>&6 else echo "$ac_t"no 1>&6 fi if test -z "$LD"; then echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 exit 1 fi fi # Check to see if it really is or is not GNU ld. echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then with_gnu_ld=yes else with_gnu_ld=no fi echo "$ac_t$with_gnu_ld" 1>&6 # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. case "$host_os" in cygwin* | mingw*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$with_gcc" != yes; then with_gnu_ld=no fi ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case "$host_os" in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left by newer dlltools. export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols' # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $objdir/$soname-def;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done~ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case "$host_os" in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$with_gcc" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) hardcode_libdir_separator=':' if test "$with_gcc" = yes; then collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi shared_flag='-shared' else if test "$host_cpu" = ia64; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi hardcode_direct=yes fi if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. aix_use_runtimelinking=no for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then aix_use_runtimelinking=yes break fi done exp_sym_flag='-bexport' no_entry_flag='${wl}-bnoentry' fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' allow_undefined_flag=' -Wl,-G' archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${allow_undefined_flag} $no_entry_flag '"\${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname ${wl}-h$soname $libobjs $deplibs $linkopts ${wl}${allow_undefined_flag} $no_entry_flag '"\${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, -berok will # link without error, but may produce a broken library. allow_undefined_flag="-berok" # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}${allow_undefined_flag} $no_entry_flag '"\${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs' fix_srcfile_path='`cygpath -w $srcfile`' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case "$host_os" in hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$with_gcc" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF fi hardcode_libdir_flag_spec='${wl}-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; openbsd*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' ;; osf3*) if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # As osf3* with the addition of the -msym flag if test "$with_gcc" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' fi #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' hardcode_libdir_separator=: ;; rhapsody*) archive_cmds='$CC -bundle -undefined suppress -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flags_spec='-L$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case "$host_os" in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts' else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; unixware7*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$ac_t$ld_shlibs" 1>&6 test "$ld_shlibs" = no && can_build_shared=no if test -z "$NM"; then echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 case "$NM" in [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then NM="$ac_dir/nm -B" break elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then NM="$ac_dir/nm -p" break else NM=${NM="$ac_dir/nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$NM" && NM=nm ;; esac echo "$ac_t$NM" 1>&6 fi # Check for command to grab the raw symbol name followed by C symbol from nm. echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Define system-specific variables. case "$host_os" in aix*) symcode='[BCDT]' ;; cygwin* | mingw*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" ;; irix*) symcode='[BCDEGRST]' ;; solaris*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no $rm conftest* cat > conftest.c <&5 if { (eval echo $progname:1710: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then # Now try to grab the symbols. nlist=conftest.nm if { echo "$progname:1713: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.c #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' cat <> conftest.c #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c cat <<\EOF >> conftest.c {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$objext conftstm.$objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo $progname:1765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then pipe_works=yes else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi LIBS="$save_LIBS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.c >&5 fi $rm conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else global_symbol_pipe= fi done if test "$pipe_works" = yes; then echo "${ac_t}ok" 1>&6 else echo "${ac_t}failed" 1>&6 fi if test -z "$global_symbol_pipe"; then global_symbol_to_cdecl= fi # Check hardcoding attributes. echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$ac_t$hardcode_action" 1>&6 reload_flag= reload_cmds='$LD$reload_flag -o $output$reload_objs' echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 # PORTME Some linkers may need a different reload flag. reload_flag='-r' echo "$ac_t$reload_flag" 1>&6 test -n "$reload_flag" && reload_flag=" $reload_flag" # PORTME Fill in your ld.so characteristics library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" file_magic_cmd= file_magic_test_file= deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [regex]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 case "$host_os" in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix ${libname}.so' shlibpath_var=LD_LIBRARY_PATH soname_spec='${libname}${release}.so$major' else # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. # We preserve .a as extension for shared libraries though AIX4.2 # and later linker supports .so if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so instead of # lib.a to let people know that these are not typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries though AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH deplibs_check_method=pass_all fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH deplibs_check_method=pass_all lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw*) version_type=windows need_version=no need_lib_prefix=no if test "$with_gcc" = yes; then library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' else library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' fi dynamic_linker='Win32 ld.exe' deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' file_magic_cmd='${OBJDUMP} -f' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case "$version_type" in freebsd-elf*) deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) deplibs_check_method=unknown library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case "$host_os" in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' case "$host_os" in hpux10.20*) # TODO: Does this work for hpux-11 too? deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' file_magic_cmd=/usr/bin/file file_magic_test_file=/usr/lib/libc.sl ;; esac ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case "$host_os" in irix5*) libsuff= shlibsuff= # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case "$LD" in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /lib${libsuff}/libc.so*` deplibs_check_method='pass_all' ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no deplibs_check_method=pass_all # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH ;; openbsd*) version_type=sunos if test "$with_gnu_ld" = yes; then need_lib_prefix=no need_version=no fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH # this will be overridden with pass_all, but let us keep it just in case deplibs_check_method='file_magic COFF format alpha shared library' file_magic_cmd=/usr/bin/file file_magic_test_file=/shlib/libc.so deplibs_check_method='pass_all' sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rhapsody*) version_type=sunos library_names_spec='${libname}.so' soname_spec='${libname}.so' shlibpath_var=DYLD_LIBRARY_PATH deplibs_check_method=pass_all ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" file_magic_cmd=/usr/bin/file file_magic_test_file=/lib/libc.so ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case "$host_vendor" in sequent) file_magic_cmd='/bin/file' deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; ncr) deplibs_check_method='pass_all' ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' file_magic_cmd=/usr/bin/file file_magic_test_file=`echo /usr/lib/libc.so*` ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$ac_t$dynamic_linker" 1>&6 test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 # Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in # configure.in, otherwise build static only libraries. case "$host_os" in cygwin* | mingw* | os2*) if test x$can_build_shared = xyes; then test x$enable_win32_dll = xno && can_build_shared=no echo "checking if package supports dlls... $can_build_shared" 1>&6 fi ;; esac if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then case "$deplibs_check_method" in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case "$host_os" in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix4* | aix5*) test "$enable_shared" = yes && enable_static=no ;; esac echo "$ac_t$enable_shared" 1>&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes echo "checking whether to build static libraries... $enable_static" 1>&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$with_gcc" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi echo $ac_n "checking for objdir... $ac_c" 1>&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$ac_t$objdir" 1>&6 if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then lt_cv_dlopen=no lt_cv_dlopen_libs= echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 echo "$progname:2325: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen""... $ac_c" 1>&6 echo "$progname:2365: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else dlopen(); #endif ; return 0; } EOF if { (eval echo $progname:2395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_dlopen=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 echo "$progname:2412: checking for dlopen in -lsvld" >&5 if test "X${ac_cv_lib_svld_dlopen+set}" = Xset; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lsvld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_lib_svld_dlopen=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* ac_cv_lib_svld_dlopen=no fi rm -f conftest* LIBS="$ac_save_LIBS" fi if test "X$ac_cv_lib_svld_dlopen" = Xyes; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 echo "$progname:2451: checking for dld_link in -ldld" >&5 ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load""... $ac_c" 1>&6 echo "$progname:2491: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else shl_load(); #endif ; return 0; } EOF if { (eval echo $progname:2521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_func_shl_load=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" else echo "$ac_t""no" 1>&6 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 echo "$progname:2539: checking for shl_load in -ldld" >&5 ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else echo "$ac_t""no" 1>&6 fi fi fi fi fi fi fi if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case "$lt_cv_dlopen" in dlopen) for ac_hdr in dlfcn.h; do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 echo "$progname:2608: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int fnord = 0; EOF ac_try="$ac_compile >/dev/null 2>conftest.out" { (eval echo $progname:2618: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 else echo "$ac_t""no" 1>&6 fi done if test "x$ac_cv_header_dlfcn_h" = xyes; then CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" fi eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" LIBS="$lt_cv_dlopen_libs $LIBS" echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2646: checking whether a program can dlopen itself" >&5 if test "${lt_cv_dlopen_self+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self" 1>&6 if test "$lt_cv_dlopen_self" = yes; then LDFLAGS="$LDFLAGS $link_static_flag" echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 echo "$progname:2719: checking whether a statically linked program can dlopen itself" >&5 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then lt_cv_dlopen_self_static=cross else cat > conftest.c < #endif #include #ifdef RTLD_GLOBAL # define LTDL_GLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LTDL_GLOBAL DL_GLOBAL # else # define LTDL_GLOBAL 0 # endif #endif /* We may have to define LTDL_LAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LTDL_LAZY_OR_NOW # ifdef RTLD_LAZY # define LTDL_LAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LTDL_LAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LTDL_LAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LTDL_LAZY_OR_NOW DL_NOW # else # define LTDL_LAZY_OR_NOW 0 # endif # endif # endif # endif #endif fnord() { int i=42;} main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } EOF if { (eval echo $progname:2773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null then lt_cv_dlopen_self_static=yes else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* lt_cv_dlopen_self_static=no fi rm -fr conftest* fi fi echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 fi ;; esac case "$lt_cv_dlopen_self" in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case "$lt_cv_dlopen_self_static" in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi # Copy echo and quote the copy, instead of the original, because it is # used later. ltecho="$echo" if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then ltecho="$CONFIG_SHELL \$0 --fallback-echo" fi LTSHELL="$SHELL" LTCONFIG_VERSION="$VERSION" # Only quote variables if we're using ltmain.sh. case "$ltmain" in *.sh) # Now quote all the things that may contain metacharacters. for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case "$var" in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done case "$ltecho" in *'\$0 --fallback-echo"') ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ;; esac trap "$rm \"$ofile\"; exit 1" 1 2 15 echo "creating $ofile" $rm "$ofile" cat < "$ofile" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi ### BEGIN LIBTOOL CONFIG EOF cfgfile="$ofile" ;; *) # Double-quote the variables that need it (for aesthetics). for var in old_CC old_CFLAGS old_CPPFLAGS \ old_LD old_LDFLAGS old_LIBS \ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do eval "$var=\\\"\$var\\\"" done # Just create a config file. cfgfile="$ofile.cfg" trap "$rm \"$cfgfile\"; exit 1" 1 2 15 echo "creating $cfgfile" $rm "$cfgfile" cat < "$cfgfile" # `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) EOF ;; esac cat <> "$cfgfile" # Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # # CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ # LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ # NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ # DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ # $0$ltconfig_args # # Compiler and other test output produced by $progname, useful for # debugging $progname, is in ./config.log if it exists. # The version of $progname that generated this script. LTCONFIG_VERSION=$LTCONFIG_VERSION # Shell to use when invoking shell scripts. SHELL=$LTSHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$ltecho # The archiver. AR=$AR # The default C compiler. CC=$CC # The linker used to build libraries. LD=$LD # Whether we need hard or soft links. LN_S=$LN_S # A BSD-compatible nm program. NM=$NM # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$reload_flag reload_cmds=$reload_cmds # How to pass a linker flag through the compiler. wl=$wl # Object file suffix (normally "o"). objext="$objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$pic_flag # Does compiler simultaneously support -c and -o options? compiler_c_o=$compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$compiler_o_lo # Must we lock files when doing compilation ? need_locks=$need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$library_names_spec # The coded name of the library, if different from the real name. soname_spec=$soname_spec # Commands used to build and install an old-style archive. RANLIB=$RANLIB old_archive_cmds=$old_archive_cmds old_postinstall_cmds=$old_postinstall_cmds old_postuninstall_cmds=$old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$old_archive_from_new_cmds # Commands used to build and install a shared archive. archive_cmds=$archive_cmds archive_expsym_cmds=$archive_expsym_cmds postinstall_cmds=$postinstall_cmds postuninstall_cmds=$postuninstall_cmds # Method to check whether dependent libraries are shared objects. deplibs_check_method=$deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$global_symbol_to_cdecl # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Compile-time system search path for libraries sys_lib_search_path_spec=$sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$exclude_expsyms # Symbols that must always be exported. include_expsyms=$include_expsyms EOF case "$ltmain" in *.sh) echo '### END LIBTOOL CONFIG' >> "$ofile" echo >> "$ofile" case "$host_os" in aix3*) cat <<\EOF >> "$ofile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac # Append the ltmain.sh script. sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? chmod +x "$ofile" ;; *) # Compile the libtool program. echo "FIXME: would compile $ltmain" ;; esac test -n "$cache_file" || exit 0 # AC_CACHE_SAVE trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: ME. kêi†¤�ý°w”·:•Ž·:•Ž·:! S7ý°./usr/local/lib/mysql-client-3.23/ltmain.shURCEó/¤�# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun ltconfig. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then echo "$modename: not configured to build any kind of library" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" # Parse our command line options once, thoroughly. while test $# -gt 0 do arg="$1" shift case "$arg" in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in execute_dlfiles) eval "$prev=\"\$$prev \$arg\"" ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case "$arg" in --help) show_help=yes ;; --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" exit 0 ;; --config) sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; --debug) echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --quiet | --silent) show=: ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case "$nonopt" in *cc | *++ | gcc* | *-gcc*) mode=link for arg do case "$arg" in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case "$mode" in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= lastarg= srcfile="$nonopt" suppress_output= user_target=no for arg do # Accept any command-line options. case "$arg" in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi user_target=next ;; -static) build_old_libs=yes continue ;; esac case "$user_target" in next) # The next one is the -o target name user_target=yes continue ;; yes) # We got the output file user_target=set libobj="$arg" continue ;; esac # Accept the current argument as the source file. lastarg="$srcfile" srcfile="$arg" # Aesthetically quote the previous argument. # Backslashify any backslashes, double quotes, and dollar signs. # These are the only characters that are still specially # interpreted inside of double-quoted scrings. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly in scan # sets, so we specify it separately. case "$lastarg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) lastarg="\"$lastarg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi done case "$user_target" in set) ;; no) # Get the name of the library object. libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; *) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' case "$libobj" in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case "$libobj" in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $libobj" else removelist="$libobj" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\..*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$libobj"; then dir="$objdir" else dir="$dir/$objdir" fi libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` if test -d "$dir"; then $show "$rm $libobj" $run $rm $libobj else $show "$mkdir $dir" $run $mkdir $dir status=$? if test $status -ne 0 && test ! -d $dir; then exit $status fi fi fi if test "$compiler_o_lo" = yes; then output_obj="$libobj" command="$command -o $output_obj" elif test "$compiler_c_o" = yes; then output_obj="$obj" command="$command -o $output_obj" fi $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if test -z "$pic_flag" && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then command="$base_compile $srcfile" if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $rm "$lockfile" fi exit 0 ;; # libtool link mode link) modename="$modename: link" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # 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; either version 2 of the License, or # (at your option) any later version. # # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (!dll) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case "$prev" in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case "$arg" in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case "$arg" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi prevarg="$arg" case "$arg" in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: not more than one -exported-symbols argument allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 absdir="$dir" fi dir="$absdir" ;; esac case " $deplibs " in *" $arg "*) ;; *) deplibs="$deplibs $arg";; esac case " $lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir";; esac case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) dllsearchdir=`cd "$dir" && pwd || echo "$dir"` case ":$dllsearchpath:" in ::) dllsearchpath="$dllsearchdir";; *":$dllsearchdir:"*) ;; *) dllsearchpath="$dllsearchpath:$dllsearchdir";; esac ;; esac ;; -l*) if test "$arg" = "-lc"; then case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) # These systems don't actually have c library (as such) continue ;; esac elif test "$arg" = "-lm"; then case "$host" in *-*-cygwin* | *-*-beos*) # These systems don't actually have math library (as such) continue ;; esac fi deplibs="$deplibs $arg" ;; -module) module=yes continue ;; -no-undefined) allow_undefined=no continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # If we have no pic_flag, then this is the same as -all-static. if test -z "$pic_flag" && test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` linkflags="$linkflags $arg" case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac ;; *.o | *.obj | *.a | *.lib) # A standard object. objs="$objs $arg" ;; *.lo) # A library object. if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= fi libobjs="$libobjs $arg" ;; *.la) # A libtool-controlled library. dlname= libdir= library_names= old_library= # Check to see that this really is a libtool archive. if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 exit 1 fi # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file # If there is no directory component, then add one. case "$arg" in */* | *\\*) . $arg ;; *) . ./$arg ;; esac # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 exit 1 fi # Find the relevant object directory and library name. name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` if test "X$installed" = Xyes; then dir="$libdir" else dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$arg"; then dir="$objdir" else dir="$dir/$objdir" fi fi if test -n "$dependency_libs"; then # Extract -R and -L from dependency_libs temp_deplibs= for deplib in $dependency_libs; do case "$deplib" in -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` case " $rpath $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; -L*) case "$compile_command $temp_deplibs " in *" $deplib "*) ;; *) temp_deplibs="$temp_deplibs $deplib";; esac temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` case " $lib_search_path " in *" $temp_dir "*) ;; *) lib_search_path="$lib_search_path $temp_dir";; esac ;; *) temp_deplibs="$temp_deplibs $deplib";; esac done dependency_libs="$temp_deplibs" fi if test -z "$libdir"; then # It is a libtool convenience library, so add in its objects. convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$deplibs$dependency_libs" compile_command="$compile_command $dir/$old_library$dependency_libs" finalize_command="$finalize_command $dir/$old_library$dependency_libs" continue fi # This library was specified with -dlopen. if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking statically, # we need to preload. prev=dlprefiles else # We should not create a dependency on this library, but we # may need any libraries it requires. compile_command="$compile_command$dependency_libs" finalize_command="$finalize_command$dependency_libs" prev= continue fi fi # The library was specified with -dlpreopen. if test "$prev" = dlprefiles; then # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then dlprefiles="$dlprefiles $dir/$old_library" else dlprefiles="$dlprefiles $dir/$linklib" fi prev= fi if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then link_against_libtool_libs="$link_against_libtool_libs $arg" if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi # We need an absolute path. case "$dir" in [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 absdir="$dir" fi ;; esac # This is the magic to use -rpath. # Skip directories that are in the system default run-time # search path, unless they have been requested with -R. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac lib_linked=yes case "$hardcode_action" in immediate | unsupported) if test "$hardcode_direct" = no; then compile_command="$compile_command $dir/$linklib" deplibs="$deplibs $dir/$linklib" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) dllsearchdir=`cd "$dir" && pwd || echo "$dir"` if test -n "$dllsearchpath"; then dllsearchpath="$dllsearchpath:$dllsearchdir" else dllsearchpath="$dllsearchdir" fi ;; esac elif test "$hardcode_minus_L" = no; then case "$host" in *-*-sunos*) compile_shlibpath="$compile_shlibpath$dir:" ;; esac case "$compile_command " in *" -L$dir "*) ;; *) compile_command="$compile_command -L$dir";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -L$dir -l$name" elif test "$hardcode_shlibpath_var" = no; then case ":$compile_shlibpath:" in *":$dir:"*) ;; *) compile_shlibpath="$compile_shlibpath$dir:";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then compile_command="$compile_command $absdir/$linklib" deplibs="$deplibs $absdir/$linklib" elif test "$hardcode_minus_L" = yes; then case "$compile_command " in *" -L$absdir "*) ;; *) compile_command="$compile_command -L$absdir";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -L$absdir -l$name" elif test "$hardcode_shlibpath_var" = yes; then case ":$compile_shlibpath:" in *":$absdir:"*) ;; *) compile_shlibpath="$compile_shlibpath$absdir:";; esac compile_command="$compile_command -l$name" deplibs="$deplibs -l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then finalize_command="$finalize_command $libdir/$linklib" elif test "$hardcode_minus_L" = yes; then case "$finalize_command " in *" -L$libdir "*) ;; *) finalize_command="$finalize_command -L$libdir";; esac finalize_command="$finalize_command -l$name" elif test "$hardcode_shlibpath_var" = yes; then case ":$finalize_shlibpath:" in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:";; esac finalize_command="$finalize_command -l$name" else # We cannot seem to hardcode it, guess we'll fake it. case "$finalize_command " in *" -L$dir "*) ;; *) finalize_command="$finalize_command -L$libdir";; esac finalize_command="$finalize_command -l$name" fi else # Transform directly to old archives if we don't build new libraries. if test -n "$pic_flag" && test -z "$old_library"; then $echo "$modename: cannot find static library for \`$arg'" 1>&2 exit 1 fi # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_command="$compile_command $dir/$linklib" finalize_command="$finalize_command $dir/$linklib" else case "$compile_command " in *" -L$dir "*) ;; *) compile_command="$compile_command -L$dir";; esac compile_command="$compile_command -l$name" case "$finalize_command " in *" -L$dir "*) ;; *) finalize_command="$finalize_command -L$dir";; esac finalize_command="$finalize_command -l$name" fi fi # Add in any libraries that this one depends upon. compile_command="$compile_command$dependency_libs" finalize_command="$finalize_command$dependency_libs" continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac ;; esac # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi oldlibs= # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" case "$output" in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.a | *.lib) if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 exit 1 fi if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" ;; *.la) # Make sure we only generate libraries of the form `libNAME.la'. case "$outputname" in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi if test -n "$objs"; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 exit 1 fi # How the heck are we supposed to write a wrapper for a shared library? if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 exit 1 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test $# -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. libext=al oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi dependency_libs="$deplibs" if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi current="$2" revision="$3" age="$4" # Check that each of the things are valid numbers. case "$current" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case "$revision" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case "$age" in 0 | [1-9] | [1-9][0-9]*) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test $age -gt $current; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case "$version_type" in none) ;; irix) major=`expr $current - $age + 1` versuffix="$major.$revision" verstring="sgi$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test $loop != 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="sgi$major.$iface:$verstring" done ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test $loop != 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; windows) # Like Linux, but with '-' rather than '.', since we only # want one extension on Windows 95. major=`expr $current - $age` versuffix="-$major-$age-$revision" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= verstring="0.0" if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi dependency_libs="$deplibs" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody*) # rhapsody is a little odd... deplibs="$deplibs -framework System" ;; *) # Add libc to deplibs on all other systems. deplibs="$deplibs -lc" ;; esac fi # Create the output directory, or remove our outputs if we need to. if test -d $output_objdir; then $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* else $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi if test "$build_libtool_libs" = yes; then # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case "$deplibs_check_method" in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behaviour. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | sed 's/.* -> //'` case "$potliblink" in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | sed 10q \ | egrep "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: This library needs some functionality provided by $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | grep . >/dev/null; then echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" echo "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Ensure that we have .o objects for linkers which dislike .lo # (e.g. aix) in case we are running --disable-static for obj in $libobjs; do xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` if test ! -f $xdir/$oldobj; then $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? fi done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linkopts="$linkopts $flag" fi # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else eval cmds=\"$archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; *.lo | *.o | *.obj) if test -n "$link_against_libtool_libs"; then $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 exit 1 fi if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case "$output" in *.lo) if test -n "$objs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" output="$obj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. $show "echo timestamp > $libobj" $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" else # Just create a symlink. $show $rm $libobj $run $rm $libobj xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$libobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` $show "(cd $xdir && $LN_S $oldobj $baseobj)" $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; # Anything else should be a program. *) if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$compile_rpath " in *" $libdir "*) ;; *) compile_rpath="$compile_rpath $libdir" ;; esac case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the binary in the object directory, then wrap it. if test ! -d $output_objdir; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case "$dlsyms" in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | sed -e 's%^.*/%%'` $run eval 'echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = {\ " sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr_t) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case "$host" in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case "$dir" in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case "$0" in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`echo $output|sed 's,.exe$,,'` ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: link_against_libtool_libs='$link_against_libtool_libs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then echo >> $output "\ program=lt-'$outputname' progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if (cd \"\$thisdir\" && eval \$relink_command); then : else $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # win32 systems need to use the prog path for dll # lookup to work *-*-cygwin*) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ # Export the path to the program. PATH=\"\$progdir:\$PATH\" export PATH exec \$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case "$xlib" in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else # Ensure that we have .o objects in place in case we decided # not to build a shared library, and have fallen back to building # static libs even though --disable-static was passed! for oldobj in $oldobjs; do if test ! -f $oldobj; then xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$oldobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` $show "(cd $xdir && ${LN_S} $obj $baseobj)" $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? fi done eval cmds=\"$old_archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case "$output" in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" if test -n "$xrpath"; then temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" done dependency_libs="$temp_xrpath $dependency_libs" fi # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i fi $rm $output $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$dlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Directory that this library needs to be installed in: libdir='$install_libdir'\ " done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case "$arg" in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case "$arg" in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test $# -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case "$destdir" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case "$file" in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case "$file" in *.a | *.lib) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" test "X$dir" = "X$file/" && dir= dir="$dir$objdir" # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift # Install the shared library and build the symlinks. $show "$install_prog $dir/$realname $destdir/$realname" $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? if test $# -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case "$destfile" in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.o | *.obj) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then link_against_libtool_libs= relink_command= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Check the variables that should have been set. if test -z "$link_against_libtool_libs"; then $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 exit 1 fi finalize=yes for lib in $link_against_libtool_libs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case "$lib" in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec $SHELL $0 --finish$current_libdirs exit 1 fi exit 0 ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = : && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do echo " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" echo "more information, such as the ld(1) and ld.so(8) manual pages." echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case "$file" in *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case "$file" in -*) ;; *) # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case "$file" in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved enviroment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now actually exec the command. eval "exec \$cmd$args" $echo "$modename: cannot exec \$cmd$args" exit 1 else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool uninstall mode uninstall) modename="$modename: uninstall" rm="$nonopt" files= for arg do case "$arg" in -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` rmfiles="$file" case "$name" in *.la) # Possibly a libtool archive, so verify it. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $dir/$n" done test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" $show "$rm $rmfiles" $run $rm $rmfiles if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi ;; *.lo) if test "$build_old_libs" = yes; then oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi $show "$rm $rmfiles" $run $rm $rmfiles ;; *) $show "$rm $rmfiles" $run $rm $rmfiles ;; esac done exit 0 ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi # test -z "$show_help" # We need to display help for each of the modes. case "$mode" in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --version print version information MODE must be one of the following: compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE." exit 0 ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: add kê"?Ò„í�³šw”·:”·:”·:!)@³š./usr/local/lib/libmysqlclient.a/ltmainó/í� 223844 224010 82 210656 0 210464 210656 0 985108926 0 0 755 20 libmysqlclient.so.10` ß:·‘¾P H0 YB;04ÿÿÿÿ8tRE.textYB@õÎí .data;0Zˆ1@.bss;0;04€.loader`•¸|¦¿aÿì}€&�‘�”!ÿ `T (4��@`ƒTý>TÞ>`HC!`||y@‚��h8!`»�ÿð}ˆ¦8`N€ ƒ ,A‚4,.A‚ ;¼ÿü;À€›€a@€„HAI`€›�}€a@€„HA1`�}€›€d€¤ €ÄˆˆãˆcTç@.|:Tc€|�ˆe�}ˆ¦ˆæ, T¥@.|§*T¥>�½ˆÆ”Ý A�,@‚(A‚(A‚ , @‚ ` €�ÿüA’4€„,A‚(€a@H@‰`�}ÿì“Ýÿøƒ{,A‚,H“Ýÿì“Ýÿøƒ{,A‚€›€a@€„KÿÿH ;¼ÿü;À€›€a@€„H@-`€›�}€a@€„H@`�}€{€ƒ€£ €Ãˆˆäˆ„Tç@.|:T„€|"�ˆ…��ˆ¦, �½ˆÆ”Ý A�,@‚(A‚(A‚ , @‚ ` €�ÿüA’4€ƒ,A‚(€a@H?}`�}ÿì“Ýÿøƒ{,A‚,H“Ýÿì“Ýÿøƒ{,A‚€›€a@€„KÿÿcãHAcƒ��d€h8!`|¦}€� »aÿìN€ €À¿!ÿä|¦ƒâP`~; �”!ÿ€8ß;€8D�¡T`ƒ�ÁP�ÁD“¡@�H“�X8ÁH8¡@8�PHXM`€@€�H,A‚à;d€d,A‚ЃBÔˆ,-@‚¤ˆ,-@‚˜8€=H…`; ˆ,A‚ ;#›ƒ€{€‚Ø8 8cHza`8ÿÿ(Tz|€°|ÒA�@| ¦N€ ,A‚0c#H|y€A�~ „{,A‚,H,A‚€~ HD`c#8€HC9`�~ „{,A‚ôH䛾HÐ,A‚È€~HCÝ`c#8€HBù`�~„{,A‚´H¤›¾ H�,A‚ˆc#H{Ñ€A�~„{,A‚„Ht,A‚`€~HCu`c#8€HB‘`�~„{,A‚LH<,A‚(€~HC=`c#8€HBY`�~„{,A‚H,A‚ð€~HC`c#8€HB!`�~„{,A‚ÜHÌ,A‚¸€~$HBÍ`c#8€HAé`�~$„{,A‚¤H”,A‚c#HiHt8H]Hh€`�HX€~0HBm`c#8€HA‰`�~0H4€~4HBI`c#8€HAe`�~4H€`�„{,A‚ˆ,-KÿýH€�H`ƒHU `��ˆ8!€»!ÿä}ˆ¦N€ €d|¦“áÿü`�€p”!ÿÀ,A‚8t8€H;Ù`8t8€ 8 H>`8�p�D��H8!@ƒáÿü}ˆ¦N€ €d|¦¾áÿÜ�`€8}€&;Àÿÿ‘�”!ÿ p`�`¼`ÛTú>cÙ:à;A‚€‚Ü8` H�¹€A`w€,@‚@cãH i,A‚08Ö€‚ä�ä8€„HGÍ`€8pA‚XHD€l,A‚0€‚ä8Þ�ä8€„8HG•`€8pA‚ H ›“ä“,“ßP“ßTcãHŒ½`,@‚ƒ‚P.A’$cfW½>cãc¤c…HŠ]`H,cƒH?-€A`fW½>cãc¤c…HŠ1`,A‚PcãH•cãH i,@‚ÿ@’cƒH>á€A`{cãc¤c…cfH‰å`,@‚þÐ; ,@‚$cãH±``|ð@�hA‚;ÀcÙ€8pA‚8` bäH€€Ac#��d€h8!`|¦}€� ºáÿÜN€ € “áÿü|¦|y�”!ÿÀA‚488€H9I`cãH? `��H8!@ƒáÿü}ˆ¦N€ ƒá<8!@N€ €T�ˆ,û@€8�ˆˆ8`N€ @‚88€ÿÿ�8`N€ ,ü@‚(8�ˆˆˆ8`T@.|T>N€ ,ý@‚08�ˆhˆˆˆTe@.8`|*T„€|€"N€ 8ˆ 8�ƒ‰H‰(ˆˆˆÈˆ¨ˆhˆèUJ@.T„€‰TÆ€U)@.T¥À|çR}JTcÀ|‡"|È2|„*|f|€ |cN€ €ƒˆ,û@€8�ˆdN€ @‚8„�ƒ8`ÿÿN€ ,ü@‚$8�ˆˆ„T@.|„Tƒ>N€ ,ý@‚,8�ˆˆdˆ„T@.|„T`€|dN€ 8 �ˆˆ¤ˆdT@.ˆ„TcÀT¥€|„|„*|dN€ À|¦¿¡ÿô�`€8; ”!ÿ°c¾pA‚€‚Ü8` H}m€A`~€,A‚cãH�Ù``}€8pA‚8` cÄH}1€A8ÿÿ|@A‚ ,@‚HcãH €ä(�8äA‚8Ý€‚äT:�ä8|„*€„àÀHC1`8`ÿÿH €ˆ,ÿ@‚Œ(@�`8ƒ€@( @�(ˆˆÃ8ƒ8½ÿþT@.|T>�äH8Ð8½ÿÿ�ä(ÇA€8 Ç8HUá`H 8Ѐ‚ä�ä8€„HB™`8`ÿÿHc£��X8!P»¡ÿô}ˆ¦N€ €||¦¿�ÿð�|ß3y8”!ï�`|��P�@�¡T@‚$H”å€Aƒ�`��x8!pƒáÿü}ˆ¦N€ 8 8€H‘ €A�aX`ecƒ8€H�õ€Acƒ€�P€¡TH”‘€A`~Ho%€A€cƒ8€€¡X�DH�¹€A,A‚xƒÁD,7A‚,Hní€A��xƒ�`“Ã8!p}ˆ¦8`ÿÿ»ÁÿøN€ €bP8| ¦8�R8c�|£ª°¡P|¤ª8„ BÿøW€èúWƒþ|¤õª|�€¤P8|08`| x�PH“ý€A`~; “áH“¡L8|8€8¡P8À8áHH“ù€A,@€\8`H“½€A|àøHn%€A€,@‚,,@�$“áH“¡L8|8€8¡P8À8áHKÿÿ¤8`ÿÿHd<€“¡D8á@8ÁD8„ÿÿcƒ8 H“�€A,@‚ÿЃáD,A‚(Hm©€A“ã8`ÿÿ��x8!p»�ÿð}ˆ¦H8`��x8!p»�ÿð}ˆ¦N€ €D|2|@`€A‚ì9…ÿÿ|ɦ8À\8 '8`r8àn909 "9@Z�l, / ,‹"A‚˜A�L,‹ , Aš0A†@‚�˜Ä˜d8„BÿÈHˆ˜Ä˜ä8„Ht˜Ä™8„Hd/ ', \A†0Aš@‚H˜Ä˜Ä8„Bÿ€H@˜Ä˜¤8„H,˜Ä™$8„H˜Ä™D8„H ™d8„Bÿ@|` 8˜N€ |¦”!ÿÀ€‚Ü8` �HHx‘€A��H8!@}ˆ¦N€ €,|¦€¢P}€&8à¿aÿì‘�=€ÿÿ�9Œ `~|!an?á;ÿ€8`¦8€HUa`8€8€H6�`|{y@‚@€‚ä8Ø�ä8~€„ H>I`8`ÿÿ=�„ ðh|¦8,ÿø»ÁÿøƒaÿìN€ 8€8 H“Q`|}y@€”8€b@�䃣HkI€A€Ã8€c¤ceH�Y€A8~8Ÿ€8 ÇHPõ`cÀ‚P8 H�Õ`cÃH‚™`ccH6¥`8`ÿÿ=�„ ðh|¦8,ÿø»¡ÿôƒaÿìN€ 8Ÿ€?€8À8¼ðH“!`|eyN@‘LcÃ8Ÿ€H�i`,@‚Hc£8Ÿ€8¼ð8ÀH’å`|eyN@‘cÃ8Ÿ€KÿÿÄc£8€H�U`cÀ‚P8 H� `,@‚cÃH�É`,A‚`8Ý€bä�äƒã4Hj €A€£8~cäHŒ!€AccH5¡`8`ÿÿ=�„ ðh8,ÿø|¦��»aÿì}€� HÜ@�¸8€b@�䃣Hi­€A€Ã8€c¤ceH‹½€A8~8Ÿ€8 ÇHOY`ccH5)`8`ÿÿ=�„ ðh8,ÿø|¦��»aÿì}€� N€ 8Ý€‚ä�ä8~€„4H;å`c£8€H�%`ccH4Í`8`ÿÿH8`=�„ ðh8,ÿø|¦��»aÿì}€� N€ €$¿Áÿø`|¦ˆ��”!ýÀ,€HA‚p@‚€(,@‚T<8`�Hƒá<8!@N€ 8a@H+I8aÐ;ß�cÄ8 LH1m`€Ÿ€¿€ß€ÿ0�4�? �_88a@HÝ,@‚8`��H8!@»Áÿø}ˆ¦N€ €bPˆ¿Œ8Ÿ¬88c�˜¡Ì|£äª8ȘŒ|¾åª|¤åª|£¥ªcãHcã8�@8 ðH0Ý`cãHÙ`8ÿÿ8`�P�T��H8!@»Áÿø}ˆ¦N€ €0¿Áÿø|¦|¿+y`ž;Þÿû�”!ÿÀA‚¤ˆ,A‚˜€‚P8„0H:`ˆ,€A†X|ð@@€@8€\,\A‚ ,'@‚˜ƒ8cˆ˜Œ8c,€A†|ð@A€ÿÌA†8%˜8c8€'8˜˜ƒ��H8!@»Áÿø}ˆ¦N€ »Á88!@N€ €Ì“áÿü|¦�”!ÿ°�a@H�u€A,@‚(€a@€‚P8„H99`��X8!P}ˆ¦N€ H�i€A,@‚|H�1€AH�y€A,A‚ €c`d€a@8 HL`H\ƒâP8H�m€A,@‚08H�Y€A,@‚8H�E€A,@‚8`d€a@8 HKµ`��X8!Pƒáÿü}ˆ¦N€ €ø¿¡ÿô`|¦€�”!ÿ°,A‚X€8;À; pA‚€‚Ü8` HqÕ€A`}€H„Á`€8pA‚8` c¤Hq©€A“ßcãH~!`cãKÿï��X8!P»¡ÿô}ˆ¦N€ €œ¿�ÿð|¦``ž`Ý�”!ÿ `¼Kÿó©8Àÿÿ|0@@‚8`ÿÿ��h8!`»�ÿð}ˆ¦HÔ(€Ÿ@‚(ˆ,þ@‚8`��h8!`»�ÿð}ˆ¦H¤,8à9��@9 A‚hcŠ8a@Kÿòa|0@8@‚�ê�ý`H €�@�}`�Š€@|�@,A‚˜è9)| ð@�@9JA€ÿ¤8U#:|.˜è8`��h8!`»�ÿð}ˆ¦N€ €¾!ÿÄ|¦`}€&`ž‘��”!ÿp`½Kÿòy;€ÿÿ|à@`v@‚ ��˜‚Áh8!�8`}ˆ¦»�ÿðN€ 8`(8€0H/u`|{y@‚<8Ø€‚ä�ä8€„ H6 `��˜‚Áh8`8!�}ˆ¦»aÿìN€ 8c8€ �aD8 H+Y`€8�;@“[“[�a@“»ˆ;; ,þ@‚ (A‚ÐW£:8.-T::〻€€aD8€0|¥”�»�H)¡`|qyA‚€|–€aDH)‰`�q,A‚d’9b9~£º:ÀA’Ø:`cÔ8a@KÿðU`r|à@€q@‚\C™.:Ö|è@:s:” A€ÿÔH˜ccKÿî©8`HccKÿî™8Ø€‚ä�ä8€„ H4µ`8`Hè~£™.€�@bEb£H*å`R©®€@|rª:£|’�@AŠ€|�@@€’T:Ö|è@:s:” A€ÿ<€qVÄ:~£!.cãKÿðQ`v|à@A‚ÿP€�a@ˆ,þA‚(€»€€aD8€0|¥”�»�Kÿþœ(A‚(€»€€aD8€0|¥”�»�Kÿþp“Ycc��”€˜8!�|¦}‚ }€� º!ÿÄN€ €è|¦€bØ¿Áÿø�ˆ ”!ÿÀ,@‚Ü8˜ H�µ`H³©`ƒâ°€,@‚T8 êƒÂP�8~d8žlH³�€A,A‚€T>�8~pHŠ­€A,A‚Hd=€A�ƒâ¸€,@‚(€bP848c€�HŠq€A,A‚�8`H™8` 8€Hle€A��H8!@»Áÿø}ˆ¦N€ 8!@N€ €8`N€ `ƒˆ,A‚D8Äÿÿ,\@‚ˆ¤,A‚`…8„ˆ`…œ8cˆ8„,@‚ÿÈ8€˜ƒN€ \¾ÁÿØ|¦`ßß:|ð@�”!ÿ�}D*�aˆ��Œ�¡��Á”�ᘑœ‘@8 ÿû‘! ‘!DA‚d;¿ÿÿ;€\;`';@r; n;0:À":àZ|@A€<|ð8���aD8¡�€a@H0ù€A�aŒ|dyA‚€a�8ÿû|Œ},/,ƒ"A‚ÀA�`,ƒ , Aš@A†(@‚¼›„›D8„��Œ;ÿ|ð@“á”H´›„›$8„��ŒH”›„›8„��ŒH€/',\A†@Aš(@‚`›„›„8„��Œ;ÿ|ð@“á”HX›„›d8„��ŒH8›„šÄ8„��ŒH$›„šä8„��ŒH˜d8„��Œ;ÿ|ð@“á”@‚þÄ��x8!pºÁÿØ}ˆ¦`ƒN€ € ÄN€ €cèKÿð `€€âD`¦`d`€gKÿïØ €£ €|@A€ 8`N€ 8…€�ƒ T£(4|cN€ 0€ƒ8,@‚ 8`N€ €£€<,A‚Œ€Ã9 a%8`TÇ:`|ä:8ç|8@A‚d9ÿü…H, @‚�f8„|8@8ÆA‚@H0, A‚})P9)ÿÿ‘%aI`Å8„|8@8ÆA‚…H, Kÿÿ°`N€ ´|¦“áÿü`�€”!ÿÀ,@‚|ˆD,@‚h€@€Ÿ€¿4€ß”!ÿ°T…„>�XT€Â>˜ÁC˜�@˜A˜¡B8¡@8€ 8à8ÀKÿÚå��X8!P}ˆ¦N€ €L”!ÿ°|¦˜�@8¡@�X8€8à8ÀKÿÚ¡��X8!P}ˆ¦N€ €48€ 8 8À8àKÿÚl 8€8 8À8àKÿÚH ”!ÿ°|¦�aD��@�X`ƒH}€A`f€aD8€€¡@8àKÿÚ��X8!P}ˆ¦N€ €H”!ÿ°|¦�aD��@�X`ƒH%€A`f€aD8€€¡@8àKÿÙ©��X8!P}ˆ¦N€ €H|¦`¦”!ÿ°`…�X�a@8à8€KÿÙe,A‚8`ÿÿ��X8!P}ˆ¦N€ €a@H%��X8!P}ˆ¦N€ €X|¦¿�ÿð�”!ÿ `KÿÝu;Àÿÿ|ð@`|@‚8`ÿÿ��h8!`»�ÿð}ˆ¦HŒcãKÿØe€8a@�@KÿÜe|}yA‚¬|ð@@‚D€�@cãKÿâM`}cãKÿÝ `||ð@A‚ÿ ,@‚€8a@�@Kÿÿ´Kÿÿ„€Hp@‚ `�H8a@KÿÚå�`�Ÿdcã8€8 Kÿê,A‚ÿH8à€�H€||@@€8a@KÿÛM,A‚ €@�,8`H48à8Ÿtc¥8ÀKÿÐÍ�p|`yA‚þ„8“¿D�l8`��h8!`»�ÿð}ˆ¦N€ €Ì`¦`…8à8€Kÿ×0 ”!ÿ°|¦�aD��@�X`ƒHe€A`e€aD€�@Kÿým��X8!P}ˆ¦N€ €@|¦“áÿü``ƒ�”!ÿ°��@H€A`fcã8€€¡@8àKÿÖ•,@‚(€0Há`€a@8€Hý`�08`��X8!Pƒáÿü}ˆ¦N€ €|“áÿü|¦|y�”!ÿÀA‚P€,A‚4cãKÿÕ¥8cã�l8€8 8À8àKÿÕùcãKÿåé€(HE`€H9`€H-`€0H!`€¤H`€¨H `€ Hý`€¬Hñ`€°Hå`€´HÙ`€¸HÍ`€¼HÁ`€ÀHµ`€ÄH©`€bP8�0�8c��|£äª8��(|£åª8¬8ŸÈ|£åª|¤¥ª�ˆŒ,A‚cãHU`��H8!@ƒáÿü}ˆ¦N€ ƒá<8!@N€ €p½¡ÿ´|¦`}€&`ž�€8‘�”!ü p`½`Ü`ûaa9aX:à:ÀA‚€‚Ü8` HVu€A`v’ÿ€Ÿ¸€¿¼,„@†,A‚4€bP8ƒD8�KÿÐQ€¸H�`€¼H�`’ÿ¼’ÿ¸.A’ˆ,@‚ ƒß .,A‚ˆ,@‚ƒ¿¨,@‚$ƒŸ¬,@‚€bP8c Hsµ€A`|,A‚ˆ,@‚ƒ´,@‚ƒ_œ,@‚ƒ?°: : ’?Hš¿�A’ €‚PcÃ8„HHSÑ`,@‚0,@‚ Œ€b¸€,€A†`‚‚P;ÔH‚bä8`8€8 ‚S(Hœ €A�aˆ,ÿÿ@‚<8уÓ�äHH©€A€£8cÄHj½€A€8pA‚ØHÄ8€8 Hh9`8”�9�h|¤äª|¬åª9� 8�„|¤åª|¬åª8�¼�|¤µª8ajš¡ic$Hå`€ß�€aˆ8�h8 jKÿØm,@€ü8ÒƒÓ�äHH€A€Ã8cÄc%Hj€A€8pA‚0H; ,@‚ €b°ƒC@’ €bP;ÃH:AÔ‚bäcÅbC€“,HiÉ€A8`8€8 HšÍ€A�aŒ,ÿÿ@‚<8ÔƒÓ�äHGm€A€£8cÄHi�€A€8pA‚œHˆ8€8 Hfý`‚‚P8�H�cÃ94�|©„ª|¤…ªš!IHšy€A�a@,ÿÿA‚$�aL³AJ€ß�€aŒ8�H8 Kÿ×5H„cÃHši€A,@‚@8Õƒ³�äHF½€A€Ã8c¤cÅHhÍ€A€8pA‚èHÔ€ƒ€£ 8aL€„H}`³AJ€ß�€aŒ8�H8 KÿÖ±,@€@8Óƒ³ �äHFI€A€Ã8c¤cÅHhY€A€8pA‚tH`€Ÿ,A‚ cñb#H_9`,€ŸA‚<`ƒHeI`’ÿ8Ø�䀓 8H�`€8pA‚H`ƒ8€Hc=`8 €Ÿ��@,A‚@€H`1`,A‚,8Ý€“4�ä8H!`€8pA‚´H cãKÿÔ9 ÿÿ|h@`nA‚|€ˆ�@( A‚<( A‚48×€“�䀿@88À Hg5€A€8pA‚PH<8cH*Y`ˆ£ˆˆƒˆÃT¥@.`p|*Tƒ€|TÃÀ|b�L8�8Ü8 H*�`8o€:|`|@A€ˆ�ˆoTc@.|dTc>�<8o ||@A€$ˆ�숈oT@.|T>�H�ÿÄ,A‚8�€€À,�®A‚�aã8€H†µ`�è‘®HP€¿ì,A‚89áXaã8”,Hf€A€ì8€T>H‡]`�è,@‚€bD€c�è,@‚x8ã€ßÀ�ä.,A‚$@’9ôT€“L8aåHe©€AH°8aˆH‚u`@’9ôT€ä8aå8ÁˆT:|“€„àÀHem€AHt,@‚b�,@‚bœ.A’c#H Í€A:ƒH:€bCH µ€A9ãcÃH ¥€A€8ã9_$9 |€8ß8Ÿ(8`aåb‰�8’á,˜Õ€c;!Ô“ß8›ÁÔT`„>TdÂ>˜aÖH4T~ò€bWÀÂ>,˜Õ€c;!Ô“ß8›ÁÔT`„>TdÂ>˜aÖ˜�טØA‚,ˆ,A‚ ;AÙcCc¤8  H&ñ`H;AÙcCKÿÚMcCH&e`€ß@8c8ŸÜc…8ÿ÷|4TÙ~H˜9``}A’@€8ç0Tä>˜áA‚l`È<àff`i8gfg`T þH18Æÿÿ`da#|‰p|‰R$ })|€#yU)>9)0U$>�(ÿÿA‚`i8gfg`T þH1Kÿÿ¸˜…ˆe,A‚0`£8¥ŒœpÿA‚8¥ŒœpÿKÿÿì`£��˜8!�}ˆ¦N€ €,|¦,”!ÿp`k`†�˜@€@,ÿÜA€ ,ÿþ@�8!�8`N€ , @€8-}kИ8Æ|¥ÐH,$A�ÿÐ,A€ÿÈ`ˆ`j`¤acH3ƒ8a€âH˜€9|iyaC|IÖ|XT >|P®˜A‚Xa `l`‹a#`¤H3ad9ÿÿ``}eÖ}kH| yUk>|X®œ ÿÿA‚`‹a#`¤H3KÿÿȘˆ,A‚0`Ã8ÆŒœpÿA‚8ÆŒœpÿKÿÿì`Ã��˜8!�}ˆ¦N€ €T|¦, ”!ÿ°��@�X@‚8 ÿöKÿþ�€a@��X8!P}ˆ¦N€ €4|¦, ”!ÿ°��@�X@‚8 ÿöKÿþ=€a@��X8!P}ˆ¦N€ €4�‚L�A€ €L| ¦N€  (|¦+x|§+x|¨+xA�|�¦| *N€ T€Ù|©+x|ª+x|«+x|¬+xA‚ÿà| ¦8 |¦T„þ| *0c BÿøKÿÿÀ @X_fill½¡ÿ´|¦|º+y}€&;à‘��”!ü@N�aT��X�Á\‘d�á`; ;ÀcüA’cCKÿó¥€A`{H;`€a\Kÿó�€A|(ýA€$��Ä€È8!À8`|¦}€� »AÿèN€ A’d8aHcDKÿûE`8aHH �`ˆ,~@‚€‚X8aH8„pHÉ`8aHH Å`€�\€¡`8ÀH9`H8aH€�\Kÿúå`8aHƒbX8à`d8»`¦H©`8€8 H&‘`|zyA‚ÿ8;!Dc#8€cEH(µ€A,A‚tƒD:à=:À : :€\:` : :@ €˜ˆy;ÿ:D�¤9í|®pA‚0b:Œd|®pA‚:Œd|®pKÿÿì,#A‚¼,;A‚´,A‚¬,[@‚¨; ;�8€]cƒH=€A,A‚hˆƒÿÿ| ®pA‚08£ÿÿ8cÿÿŒ…ÿÿ| ®pA‚8cÿÿŒ…ÿÿ| ®pKÿÿì›Ãcƒ€�d8 H(q`|Ð|xTþH €b8›Ü8¡Hcæ8c@H*½€AHt,A‚P,A‚ðb8€=H‘€A|oyaî@‚bH Ù``n€x�£ˆnÿÿ8�|®pA‚08®ÿÿ9ÎÿÿŒeÿÿ|®pA‚9ÎÿÿŒeÿÿ|®pKÿÿì,@‚l}ðp8�€aXKÿìý`�a@,A‚È8›Kÿø¡`baåH ¹`€aT8�@H-Õ`,A‚ cC8€H"-`H�ˆo9ï|®pA‚0aå9ïŒe|®pA‚9ïŒe|®pKÿÿìaãH Ñ`ˆ£ÿÿ€˜`m€„8„|(®pA‚08£ÿÿ9­ÿÿŒeÿÿ|®pA‚9­ÿÿŒeÿÿ|®pKÿÿì| x@@€aí|oh}Ðp8|€8„€aXKÿëå`�a@,A‚°€aT8�@H,Ù`,@‚˜€a@8›Kÿ÷m`baÅH-`|h@šã8cA‚ð8­ÿÿˆ,\@‚À|(@A‚¸aäˆ9ï,r.€\,€sA‚�A�H,€b,nA–0A† @‚@šÃ8c9ï|h@A‚�H€š£8cHhšƒ8cH\,tA†4A‚$šƒˆ˜8c9ï|h@A‚LH<šc8cH$š#8cHšC8cH ˜8c9ï|h@A‚ˆ,\Kÿÿ$›Ã8aD8€cEH$i€A,A‚(€˜ˆy;ÿ:D�¤9í|®pKÿûÔcC8€HÑ`8`H4€b8› 8¡Hcæ8c@H'I€AcC8€H�`8`��Ä€È8!À|¦}€� ¹¡ÿ´N€ €8|¦¿aÿì�ƒâX”!ý �a@8(`›H-Y€A€a@H1`,A‚0€‚€a@;Ä cÄKÿðý€A8|cÄKÿðí€AH؃ÂÈ€ž,A‚¤ƒ‚̃¢ˆ,@‚€œ,A‚l8a@Kÿõ`8a@HA`ˆ@,~@‚8a@8ŸpH�`8a@H‰`€�@8¿t8ßz8àH ù`8a@8� KÿðQ€A„ž,A‚ˆ,Kÿÿt8H,]€A€b;à 8|cÄKÿð€A€,A‚<8` cÄKÿïÑ€A€{cÄKÿïé€A„,A‚8` cÄKÿÿÔ8œH+õ€A��h8!`»aÿì}ˆ¦N€ € |¦8cÿè|£Äª”!ÿ 8�@|¤Åª8€�h8a@Kÿç`��h8!`}ˆ¦N€ €<¾¡ÿÔ|¦`Ÿ}€&`¾; ‘��”!ÿP;P�a|`Ü;`c¹;@c8 8€€Kÿèá`‚Þ.A�|€|‚âX8—l‚£b£H+E`,@‚t8cT:8„KÿçY`,A‚ü€ž€¼8ã€(�@� 8ÿþ`æ| ¦8¥„”Bÿø8ÿÿ�ü�|¸Äª|£ÅªHÌ:ÀA� b£8—|H`,€|€cA‚D8€=Há€A:Ã; ; ‚âX“a@8`“áH8�D€,A‚ŒHd8—�H©`,A‚,€|8€=€cH…€A€‚Ì8; ; �‚âX“a@8`“áH8�D€,A‚(8c„,A‚8c„,Kÿÿð�a@€¾8ah8€8À H'­`,@‚ ,A‚@8·9@8ahcbÆ`§Kÿõ¡,A‚ø€b8—ü8c@H"Ñ€AHp€a|H`,A‚@9@8ahc8 €Á|8÷tKÿõQ,A‚¨€b8—ü8c@H"�€AH ƒâÈ€¿,A‚€‚¢Ì:×t8`ˆ,A‚ 8ah8�P€Á|bÇ9@KÿôñH(€Õ,A‚8ah8�P8 bÇ9@KÿôÉ,@‚œ„¿,A‚8`ˆ,Kÿÿœ€l€žc|„8T:8„Kÿä±`|yA‚T€l€œ:£:ÃT:€�€�hbÃKÿæ‰`€~€½,“¾ Ê“<A€0€y8—¨H(`,@‚;9;½ÿÿ;@“¾“<€l8}ÿÿTe:8™T:|`²Kÿæ`€l€ž’¼8ah|T:�|¸Äª|¿Åªu!.H"`,A‚¤€œ8w¼€„H(Á€A;à€,@�D;`;·ø€œc£|„Ø.H(•€A€;ÿ;{|@€€œc£|„Ø.KÿÿØ8wH&ý€A8`Kÿò™€AH$€b8—ü8c@H a€A8`Kÿòu€A��´€¸8!°|¦}€� º¡ÿÔN€ :ÀKÿü¼ € Ü|¦“áÿü`�”!ÿÀH]`|ø@A‚0ˆÿÿ,/A‚$,:A‚`d8/˜8˜8c��H8!@ƒáÿü}ˆ¦N€ €d|¦“áÿü8€:`�”!ÿÀH-€A,@‚8ÿÿ8ƒˆ,A‚$`…,/@‚`ƒ8„Œ,@‚ÿè8|��H8!@ƒáÿü}ˆ¦N€ €x“áÿü|¦�”!ÿ°�aD��@`ƒKÿÿ]`(þA€8`þ`e€aD€�@H©`€aDKÿþ½cã��X8!Pƒáÿü}ˆ¦N€ €dˆ,M‚ `d8cŒ,M‚ 8cŒ,KÿÿðN€ 4�‚T�A€ €L| ¦N€  ,A‚D8Ãÿÿ8„ÿÿ|©¦Œ8cœpÿBHA‚(Œ8cœpÿBÿìA‚8˜N€ 8cÿÿN€ \�b�‹8 qŒA‚H|¦| +A‚|£+0 @‚ÿø|Á¦0Æÿß|8À |Á¦| "+|£*8„ 0 @‚ÿðN€ pk=@!k9J}i¦8ãA‚ˆÇ,A‚P8çBÿð8çÿü…} P8})P},Pù@‚…} P8})P},PùA‚ÿÜ})@ø})PyA‚ÿÐ}+4Ukèþ|çXp‹!k}i¦A‚ ˆÄ,˜Ç8„M‚ 8çBÿ耤0çÿü|©P8})P},Pù@‚4…”§} P8})P},Pù@‚,„¤•|©P8})P},PùA‚ÿÐ})(ø})PyA‚ÿÄH})@ø})PyA‚ÿÌ}Cx8çt¦ÿT¥@>œ§@‚ÿôN€ @xstrcat�¡ ,�a���Á$�á(‘,‘!0‘A48¡A‚�ˆ„˜ƒˆƒ,A‚H`d8c�A8 �ˆ œ,A‚$8c�A8 �ˆ œ,Kÿÿà€�8„��„…��,A‚ˆ„˜ƒˆƒ,KÿÿŒ�a8 ˜£N€ Ĉ`d`…,€A†˜,€ A†P`¤ˆ„8¥,A‚ˆ,„ A†0`¤8¥Œ,A‚l,€ A†8¥Œ,KÿÿèA‚P`¤ˆ8¥,€ @†(`¦8¥Œ,€ @†8¥Œ,€ Kÿÿð,@‚ÿt|c N€ N€ `¤Kÿÿ𠼿!ÿä|¦`Ÿ}€&`~‘��”!ù �¡À`Ý`ü8aÀcûKÿû-`€ ,ãúNA‚@“$8aÀ€�À8 þKÿûå`8aÀKÿùù`@�8aÀ`dH M`@‘8aÀ`dHÅ`cã8€.H Ñ€A,A‚$A’cãKÿþy`yƒ¢„H?HcãKÿþ]`y8aÀKÿàA€AYc£Kÿà1€A|,@€ (A€tW€ç>| N@‘$8`��ä€è8!à|¦}€� »!ÿäN€ ccKÿýñ(ÿ@€`ecÃcdKÿúé`Ht8 ÿcÃcdKÿúÑ`H\|Ø@@‚8aÀcäc%KÿÝÙ`;áÀcÃ8�ÀKÿçu`cäc%Kÿú�`c¤KÿçY`W€ç>| N@“\A’,8�@cÃHí€A,@‚@€HT&( @‚0cÃ8�ÀHí€A,A‚cÃ8�À8 ÿKÿú`cÃ��ä€è8!à|¦}€� »!ÿäN€ €T¿�ÿð|¦`ƒß�”!ÿ°ˆ,/@‚€b\»ÁH€c8!PN€ cÃ8€/H Ñ€A||y@‚cÃKÿù``|‹Ü8˜€H É€A`}›ÜH á€A,A‚ “Ÿ€}��X8!P»�ÿð}ˆ¦H8`��X8!P»�ÿð}ˆ¦N€ €Ä¿Áÿø|¦`Ÿ`~|ð@�”!ý°@‚8a@KÿåÁ`;á@cÃcäKÿ÷ñ`|ŸcÃKÿùM`cÃ��X8!P»Áÿø}ˆ¦N€ €h|¦¿¡ÿô�”!ý°�a@`Ÿ8a@Kÿ÷•``~8a@`dHy`}ßòcÃKÿÝ5€A|(@€<|aê8c@cÄKÿå `€a@8�@HQ€a@��X8!P»¡ÿô}ˆ¦H$€a@cäH-€a@��X8!P»¡ÿô}ˆ¦N€ €°|¦“áÿü8 ÿ`�”!ÿÀKÿ÷½`|��H8!@ƒáÿü}ˆ¦N€ €8|¦¾aÿÌ�”!ýp`Ÿ�aL;ÁHcÝcã8€:Kÿ÷=€A,A‚(`||8£cÃcäHé``~;ü;€/8aA›�@€‚lKÿãù`ˆ8�@dcÚ˜ˆ~,A‚؃"\;:ûÿÿ:ÁI:`~,/@‚¤~¾Ð|Ø@›š@�¬~›Ðbƒ8�@ceHÍ€A,@‚Œbš|ð@A‚hcCˆÿÿ;Zÿÿ|šð@,~@‚pA†ˆcÿþ,/@‚`€™,@‚$ZÂŒcC;Zpÿ˜@‚ÿpH,8aHKÿã!`;Cÿÿˆÿÿ,/@‚;Cÿþ|šð@ˆÿþH|šð@,.@‚`A†ˆÿÿ,/@‚P€bt8€8 H `,@‚ÿ€8aH€‚tKÿâ¹`;Cÿÿˆÿÿ,/@‚;Cÿþ|šð@H|šð@cUA„8ˆ,/A‚,cC;Zÿÿ|ð@A€Œÿÿ,/A‚;Zÿÿ|ð@Kÿÿèˆ,~A‚ cC8�@ceHu€A,@‚8u8�@Kÿâ%``z›šŒ;Zpÿ˜@‚þHH|¸@@‚@cÃ8�AbåH!€A,@‚$c^ŒcC;Zpÿ˜@‚þHÀ,@�0ˆÿÿ,/@‚$;ZÿÿŒcC;Zpÿ˜@‚ýÐHŒ,@�<ˆÿÿ,.@‚0ˆÿþ,/@‚$;ZÿþŒcC;Zpÿ˜@‚ý�HL|°@@�,ˆÿÿ,~@‚ ˆÿþ,/@‚šaH›�I;ÁH;AIŒcC;Zpÿ˜@‚ýD€aL8�HKÿàõ`|}Ð��˜8!�ºaÿÌ}ˆ¦N€ € �|¦¿Aÿè�”!ý��aL8aDKÿúÉ8aDKÿØ­€A,A‚<8ÿÿ|�ˆD,:A‚(,/A‚ 8ƒ8/|a˜D|a"8˜D8aD`dKÿûñ`ˆD,~@‚Ä8E8a@�@Kÿù}|~yA‚¬ƒ¡@#�ÿ»cÃ|â`øKÿØ€A|Ú(`zA�€8cÿÿ|®,/@‚`z|aÒ8cD|è@@€,c¤ceKÿÖ!`8aDcÄcEKÿÖ `H4|Ò|a8cD|œøceH-`8aDcÄcEKÿÕÙ`€aL8�DKÿúÍ��x8!p»Aÿè}ˆ¦N€ €d|¦¿!ÿä}€&�‘�”!ý `KÿùQcã8€:Kÿò)€A,A‚ ;Ã8a@8€8 HA`Hcþ8a@8€8 H%`.@’€8a@KÿÖá€A|ø@`y¿ðA‚(|è@@‚\8a@cÄc¥Hå€A,@‚@ˆ,/A‚4,A‚,cãKÿÖ�€A8ãcãc¤8¡@c&H)`cãcäKÿùõ|~yA‚xƒ¢\;€;`ƒ],A‚(cCKÿÖ9€A8ƒÿÿ| ®`{,/@‚`›)@‰L|ð@@€DcãcDceH-€A,@‚(|Ø®,/@‚8~|ŸÚ˜8KÿÝÉ`@’È@‰P|È@@€H€�8a@ceHÝ€A,@‚,|aÚˆ@,/@‚8~8ƒ@˜@8aAKÿÝu`cã8�@HÅ`,A‚`8a@KÿÕY€A|®,A‚4|ŸcãKÿÝ5`��d€h8!`|¦}‚ }€� »!ÿäN€ 8.8`/˜˜›Ÿ��d€h8!`|¦}‚ }€� »!ÿäN€ ��d€hƒ!D8!`|¦}€� »¡ÿôN€ €˜�‚`�A€ €L| ¦N€  �‚d�A€ €L| ¦N€  �‚h�A€ €L| ¦N€  ,M‚ 8Ãÿÿ8„ÿÿ|©¦Œ8cœpÿBHA‚ Œ8cœpÿBÿìA‚N€ 8cÿÿN€ T�‚p�A€ €L| ¦N€  “áÿü|¦�ˆ”!ÿÀ,~@‚<ˆƒ,/@‚0;à€‚\€d,A‚KÿÿÅ,A‚;àcãH@,/@‚8!@8`N€ 8€:Kÿþ�€A0ÿÿ|��H8!@}ˆ¦`N€ ��H8!@ƒáÿü}ˆ¦N€ €¤|¦¿Áÿø�ˆ”!ÿ°`Ÿ,�a@A‚,/@‚ˆ,@‚€bxHñ€A|~yA‚H€‚sà€b€Ä�ÃA‚œ8`8€$€¡@Kÿ× `cÃ��X8!P»Áÿø}ˆ¦H„€a@Kÿþ¹,ƒâtA‚Tcã€�@8 ÿKÿíe`ˆÿÿ,/A‚<8/||®8c8|®cÃ��X8!P»Áÿø}ˆ¦H 8˜cÃ��X8!P»Áÿø}ˆ¦N€ €|¦“áÿü€Ât`¿�”!ÿ°ˆ�a@,A‚,8¤ÿÿ`ÄKÿìÁ`8`��X8!Pƒáÿü}ˆ¦N€ 8„ÿþHÝ€A,@‚DsàA‚<€¢€Â8`8€$€¥�¦KÿÕÑ`8`ÿÿ��X8!Pƒáÿü}ˆ¦N€ €a@KÿëÙ`ˆÿÿ,/A‚8€/8˜˜ƒ€bt€�@8 ÿKÿì`8`��X8!Pƒáÿü}ˆ¦N€ €ø�‚|�A€ €L| ¦N€  �‚€�A€ €L| ¦N€  ,M‚ |©¦ŒÿÿœÿÿBÿøN€ |¦¿Áÿø`ß�”!ÿ°|ø@�¡@`~|¤8@€0|‡ò|*|~Kÿÿ�`cÀ�@cåKÿÎI`H(|„ò|òKÿÎ5`cÀ�@cåKÿÎ!`��X8!P»Áÿø}ˆ¦N€ €Œˆ,A‚,8£ÿÿŒe|@‚$Œ,A‚Œe|Kÿÿè8`N€ 8`N€ D�‚ˆ�A€ €L| ¦N€  �‚Œ�A€ €L| ¦N€  ,8£@‚8r˜8˜N€ ,@‚8w˜8˜N€ ,@‚$8r˜8£8+˜8˜N€ p€A‚$8a˜8£8+˜8˜N€ 8w˜8£8+˜8˜N€ ¬|¦¿¡ÿô�”!ÿ°`ž«ãHM€A|}y@€THe€AsÀ€c€‚�dA‚HcãHm`�a@H9€A€Ã8`8€$€¡@KÿÒ]`H€‚ €d8ÿÿ�(@€0€¢œWã8|…€,A‚8|e.�KÿÎ�`c£��X8!P»¡ÿô}ˆ¦N€ €Ô|¦¿aÿì�”!ÿ `~��H8a@`ß`¤Kÿþ=cÃ8�@Hù€A|{y@‚THi€Asà€c€‚�dA‚´HM€A€£8`8€$KÿÑu`cc��h8!`»aÿì}ˆ¦H”€‚ ,€d8�@€hƒ¢œWÞ8�ò€,A‚4€‚¨€d8ÿÿ�8�cc��h8!`»aÿì}ˆ¦H4€aHcäKÿÌ‘`|}ñ.8�cc��h8!`»aÿì}ˆ¦N€ €$|¦¿¡ÿô�”!ÿ �aH`Ÿ8a@`¾Kÿý €aH8�@Hñ€A|}yA‚¬¨(A€,€¢ c£€…8���h8!`»¡ÿô}ˆ¦HÈ€aHcÄKÿËÝ`€Âœ¨T8|`y|¦"|f!.A‚0€‚ 8�c£€¤8���h8!`»¡ÿôHlc£cÄKÿý€b8À �ÃHH‘€A€Ã€b�ÃsÀA‚$8`,A‚8`8€$€¡HKÿÏ™`8`��h8!`»¡ÿô}ˆ¦N€ €8�‚��A€ €L| ¦N€  �‚”�A€ €L| ¦N€  ,A€ €b˜N€ ,A€$€¢œTc8|…€,A‚ |e.N€ €b˜8cN€ D�‚¤�A€ €L| ¦N€  �‚¬�A€ €L| ¦N€  �‚°�A€ €L| ¦N€  €|@@€€c,A‚T„:|c .N€ €b´N€ ,,|¦”!ÿ°�X@‚8!P8˜N€ 8„ÿÿ�a@`£Kÿÿ•`d€a@KÿÑA`��X8!P}ˆ¦N€ €T¿Aÿè|¦`Ÿ}€&€Ÿ‘��,„”!ÿ°`~@†$8`��T€X8!P|¦}€� »AÿèN€ €Ÿ8À`Ç�,ˆA†ü�BD‰>T«þ,‹/ �J, cËa#‰ˆAšXƒª�H®|`®~œ@–DcÜ9kŒ|�ˆ,A‚,|®‰ˆ}`®~€Ø@–9kŒ|�ˆ,KÿÿØ.Œ@–@.ƒ @– � .ˆ @–� .ˆ Kÿÿô,A‚à8ç….ˆA–8£ÿÿŒ…|M‚ ,8cA‚Œ…|Kÿÿè8cÿÿN€ 4�‚à�A€ €L| ¦N€  ¾¡ÿÔ|¦`}€&`ž‘��”!ÿ�; ;`ÿÿ;€€Hi`Tz>ˆö; ,@‚; “¾;€ €› ›¡@~à:À: .A’€bäc%Hé`-A‰Ì€H`p`ÿ@‚ˆ@,€@Š”ˆ@,€@†Œ›@€HÍ`,@‚T€8€HÕ`,@€<€H¹`,A‚0(;œ@€$€8€H�`,A€ÿÌ;€H<ˆ@,€;`ÿÿš¿ôHHA†ÿôA‚ÿð(;œ@€ÿäH#È.~÷A’€bäc%Kÿÿ ,@‚ô€ €Ÿ€¿ð|Ã"ˆT§>|8@‚�8¥ˆö�¿ð,A‚8ˆˆ†ˆ¦T„@.T€|…"|�€Ÿ|£"ˆÅ|ã ®H€|£"ˆÅ|ã ®ˆ¥TÆ@.|Ç2T¥€f*|@@�,c`|¤€ßè|0@A€DH$;`ÿÿˆ@,€HL|¤€ßè|0@A€ 8…cãH},@‚ÿЀ €Ÿ~ã"cy:Ö(A€ýôˆ@,€A†€cDH!`��t€xcc›¿ |¦8!p}‚ }€� º¡ÿÔN€ € È|¦€¢¿Áÿø�€”!ÿÀ`~|@A€ 8`8��ä˜~ôƒÁ88!@N€ 8ÿ€~ T&8 cäKÿùÅ`,@‚ 8`˜~ô��H8!@»Áÿø}ˆ¦N€ �~|�“þè8`€� ��H8!@»Áÿø}ˆ¦N€ €°|¦¿�ÿð�`€€`¾”!ÿ°£|è@`œ@�Pc¥Kÿ¸­`€Ÿ €¿ècãHu,@‚`Ýð�†ƒ¿è|è@�@�c„c¥Kÿÿ¼c„cÅKÿ¸]`€8`|ò���X8!P»�ÿð}ˆ¦N€ 8`Kÿÿè €¸|¦“áÿü`�ˆö”!ÿ°,@‚L8�@Kÿû}8ÿÿ|@€€Ÿ �aD|„�ŸA‚Œ8|®€aD��X8!Pƒáÿü}ˆ¦N€ €ø,A‚耟ˆ¿ € |€ |£!®€¿ø,@‚8��cã8�@HÄ(€€ |Å|ƒ2A€8ˆˆä|Ã0®€¿øTç€T@.||À:8ÿü|@�ßü@�(€|(@A‚Kÿ·`€ø��HP8ÿÿ8f|@|(�ÁD8„`Ã�ø�ŸA‚”|¤®8˜¿ |®€aDH|8��cã8�@Kÿú58ÿÿ|@�aDA‚T€ €8�D8¡@|`Hå`,@‚$€Ÿø€D€| "�¿ø|�KÿþÐ8`ÿÿ8˜ô��X8!Pƒáÿü}ˆ¦N€ €ä¾áÿÜ|¦`}€&`ž‘��”!ÿ��aˆ�¡���Œ; ;€€H `T{>ˆô,@‚��x8!p»aÿì}ˆ¦8`ÿÿN€ :àˆöšÿ €a�,A‚8c8€Kÿ¸•`|zy@‚$��x‚áL8!p›¿ }ˆ¦8`»AÿèN€ €¡�8ccÄKÿµa`8¡D8��8zH‘`,A‚4“¡D8˜€D“AŒc^TÂ>˜€DT„>˜H,€D˜€D“AŒc^TÂ>˜€DT„>˜€�˜€�TÂ>˜€�T„>˜€ð8�ð˜z€a�8c�a�Cò~Ð@›¡@cÙA’ü;€|¹Ðc$H E`-A‰À€H©`p`ÿ@‚ˆ@,€@Šˆˆ@,€@†€›@€H a`,@‚T€8€H i`,@€<€HM`,A‚0(;œ@€$€8€H 1`,A€ÿÌ;€H,šÿôH8A†ÿøA‚ÿô(;œ@€ÿèH 9~Ð@A’€|¹Ðc$Kÿÿˆö,A‚cÃKÿ¶A`ˆ@,A‚€cdH±`›¿ 8`@’8`��t€x8!p|¦}‚ }€� ºáÿÜN€ € ì|¦¿Áÿø�`ˆö`Þ8~”!ÿ ,Tf„>�¡HTgÂ>˜a@˜áA˜ÁBA‚ 8`˜�D˜aC8�@cã8 H(€ð8Tc>�ð˜�D˜aC8�@cã8 KÿùÉ,A‚8`��h8!`»Áÿø}ˆ¦N€ cã€�HcÅKÿù™,@‚ÿÔcãH,@‚ÿÄ8`��h8!`»Áÿø}ˆ¦N€ €ä|¦¿Áÿø�`ˆö`¾”!ÿ°WÃÂ>,WÅ„>��D›Á@˜¡B˜aAA‚ 8`˜aC8�@8 cãKÿùH(€ð8Tc>�ð˜aC8�@8 cãKÿøÝ,A‚8`��X8!P»Áÿø}ˆ¦N€ cã€�DcÅKÿø­��X8!P»Áÿø}ˆ¦N€ €À|¦“áÿü`€Ÿ �€”!ÿÀ8`|@A‚,|¤cãKÿû€ ���H8!@ƒáÿü}ˆ¦N€ ƒá<8!@N€ €\|¦¿Áÿø�`~”!ÿÀ€~H`pÿA‚€~8€H `€~HÝ`,@‚d€~€ž €¾èH™`,@�0€~€ž €¾èH}`,@�€~€ž €¾èKÿÿä,A‚€~8€H•`8`€ �~ð���H8!@»Áÿø}ˆ¦N€ €Ð|¦“áÿü`€ �”!ÿÀKÿ²µ`8� ��H8!@ƒáÿü}ˆ¦N€ €<¿¡ÿô|¦ƒâ `}`ž�”!ÿ°€8€Kÿ²¡`�} |`y@‚8`��X8!P»¡ÿô}ˆ¦N€ €Ÿ€b€£|(@@��ƒ8 €Ý €b$|,�Ý�€c��è“ݘ½÷€˜½ô˜½õ�½�}ì��½ð˜½˜½ö˜½ �½ø�½�½äA‚ cÃH1`�}cÃHõ`8`��X8!P»¡ÿô}ˆ¦N€ €¿¡ÿô�è` `Ì`ý;è;Ã|¿äª|£åª|¾åª;ã8|¿åª�ƒ0�‘ƒ›£»¡ÿôN€ H|¦“áÿü;à¤è�€8`”!ÿ°°aD³áF�@8a@8€H�€A,A�$A€0;à��Xcã8!Pƒáÿü}ˆ¦N€  Fp@‚;à��Xcã8!Pƒáÿü}ˆ¦N€ €Œˆ,A‚8`�dN€ €c$�dN€ $|¦“áÿü`�ˆ”!ÿ°��D,A‚0€aD€‚è8„8Kÿ·`8`��X8!Pƒáÿü}ˆ¦N€ 8€�@8¡@8Ÿ HÅ€A,A‚8`��X8!Pƒáÿü}ˆ¦N€ €$€�DH½`8`��X8!Pƒáÿü}ˆ¦N€ €´€cN€ ”!ÿÀ|¦�HKÿã©€A€c��H8!@}ˆ¦N€ €(€c0N€ 8c4N€ ¿�ÿð|¦`;À€�”!ÿ°8€; Ha€A,;€ÿÿA‚; ÿÿ€Hm€A,A‚; ÿÿ“ß0“Ÿc£��X8!P»�ÿð}ˆ¦N€ €t”!ÿÀ|¦�HKÿâ½€A€8`, A‚,€A†@‚8`��H8!@}ˆ¦N€ €D|¦8À”!ÿ°�Á@�X€0T„>,A‚8,A‚ 8�@<€€c8Á@8„ÿÿ8 8àH±€A`f`Ã��X8!P}ˆ¦N€ €l8`N€ € T÷þhN€ |¦T…>8€”!ÿÀ�H€,A€@€ ,A‚T¸�£ H `�£ |(A‚€c8€H!€A`d`ƒ��H8!@}ˆ¦N€ €p|¦”!ÿÀ€c�HH €A��H8!@}ˆ¦N€ €(|¦“áÿü`�”!ÿ°�¡D��@Kÿàí€A8€�@�€€¡DHÑ€A��X8!Pƒáÿü}ˆ¦N€ €T“áÿü|¦|y�”!ÿÀA‚8€0,A‚ cãKÿý1cãKÿ¬)`��H8!@ƒáÿü}ˆ¦N€ ƒá<8!@N€ €X|¦¿Áÿø�”!ÿ°�a@��DT¿>8`T8€Kÿ¬`|~yA‚TcÀ�D€¡@8ÀcçKÿú=€0€‚è,A‚8„ €¾8~4Hý€A€a@8€Hu€A�~ cÃ��X8!P»Áÿø}ˆ¦N€ €œ�‚ì�A€ €L| ¦N€  �‚ð�A€ €L| ¦N€  |¦”!ÿ°�ah��@�XH=€A`d€a@Kÿ±Í`��X8!P}ˆ¦N€ €<�‚ô�A€ €L| ¦N€  �‚ø�A€ €L| ¦N€  �‚ü�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  �‚�A€ €L| ¦N€  |¦¿¡ÿô�`Ÿ€”!ÿ°�a@8€d`½`xH3ƒ8€8c �}Kÿ©q`|~y@‚8`��X8!P»¡ÿô}ˆ¦N€ €ßcÃc¤€¡@HQ€A,A‚(cÃKÿ¨á`8`��X8!P»¡ÿô}ˆ¦N€ €}€|@A€08cÃ�Kÿ¨¥`8`��X8!P»¡ÿô}ˆ¦H ��cÃ��X8!P»¡ÿô}ˆ¦N€ €|¦¿¡ÿô�”!ÿ°�a@`¿`ž€,A‚˜8€Kÿ¨m`|}y@‚8`��X8!P»¡ÿô}ˆ¦N€ €Þc£c䀡@Hu€A,A‚(c£Kÿ§Ý`8`��X8!P»¡ÿô}ˆ¦N€ €¿€a@c¤�¾Kÿ¤ù`c£Kÿ§¡`8`��X8!P»¡ÿô}ˆ¦N€ €Ô|¦¿Áÿø�`Ÿ€”!ÿ°�a@`¾(2@€$8�8`��X8!P»Áÿø}ˆ¦N€ KÿýÅ,@‚,8`€,@‚D8`��X8!P»Áÿø}ˆ¦N€ �aD`d€a@€¿Kÿ¤1`€aDKÿ¦Ù`8`��X8!P»Áÿø}ˆ¦N€ €¸�‚�A€ €L| ¦N€  �‚�A€ €L| ¦N€  �‚(�A€ €L| ¦N€  �‚,�A€ €L| ¦N€  �‚0�A€ €L| ¦N€  �‚4�A€ €L| ¦N€  |¦¿¡ÿô�”!ÿ°`~`ŸKÿûI€A|}yA‚PKÿÙÙ€Asà€c€‚�dA‚4cÃKÿÙá`�a@KÿÙ­€A€Ã8`8€$€¡@Kÿ¨Ñ`(@€@€‚œWÃ8ä€,A‚(|d.Kÿ¥`8€b¨�€ƒ8ÿÿ�c£��X8!P»¡ÿô}ˆ¦N€ €Ð|¦¿¡ÿô�|y”!ÿ ��@`¾�ÁD`ýA€Œ,A€$€¢¨c㻡T€…8!`8�N€ €a@c¤Kÿ£©`|`y€‚œWå8|Ä*|d).A‚ €‚¨“Æc〤8�HTcãc¤Kÿþ…€b8À �ÃHKÿØq€A€Ã€b�Ãs A‚€aD8€$€¡@Kÿ§…`cã��h8!`»¡ÿô}ˆ¦N€ €ø|¦”!ÿ°€Â8�¡D�X�a@€¦H=€A€�@8 8À€áDKÿþÅ��X8!P}ˆ¦N€ €H�‚<�A€ €L| ¦N€  |¦¿¡ÿô}€&�‘�”!ÿ ��D�a@`¾`ßKÿ×q€A8€�D�€a@cÅKÿùU€A`}|ð@A‚ØKÿ×A€A€,A‚(Kÿ×-€A€ƒÂsã.ÿÿ�A‚xH8ÿÿƒÂsã.ÿÿ�A‚\@’,€a@Kÿ×``e€Þ8`8€$Kÿ¦ `H0sàA‚(€a@KÿÖá``e€Þ8` 8€$Kÿ¥Ý`A’ sàA‚08`ÿÿ��d€h8!`|¦}€� »¡ÿôN€ sàA‚; c£��d€h8!`|¦}€� »¡ÿôN€ €X�‚@�A€ €L| ¦N€  �‚D�A€ €L| ¦N€  �‚H�A€ €L| ¦N€  �‚L�A€ €L| ¦N€  ˆƒ|¦”!ÿ°,�XA‚T€¢D€¥€å|¤:ˆpA‚88ç`e8cŒ…,A‚ | ®pA‚8cŒ…,Kÿÿä,08€A‚8€ < €8Åÿÿ8á@8 Hé`€a@��X8!P}ˆ¦N€ €¤|¦}€&|` <`C0¾áÿÜN‘��”!ÿƒâ�a¨�aÀ@“D€‚¨€b €Ã€¤|£3yA‚,€bP€‚@€„LKÿö­€A8`€‚P8 Kÿ¡¹`@’,8�`8`H½€A,@‚ €a`�!d‚âX�l€áhÃd< hÜ8e‹­a$H1çdÀw(U*þa|ifp8e‹­|©R|¦*l¥€H1�¡¬UþÈ!¨ü!*À|cfp€€|cB|glc€�a„�aÄ��ˆƒÁŒƒ¡�ÈAÀüB*ƒ�”ƒa˜ƒAœ�!p�Axƒ¤ü!$üB$ƒ! 8@8—�8‘a<Ø!°ØAÈ‘�@“ÁD“¡H“�L“aP“AT“!X“\€Á´€¡°�Ì€áÈKÿ×]€AHQ`€b¤8€˜ƒ��€8!|¦}€� ºáÿÜN€ "€ È|¦€b¤¿Áÿø�ˆ”!ÿÀ,@‚¤8ƒÂ\˜€,@‚”ƒâX8,Kÿý €A�~|dyA‚€b¨Kÿ¿y`�~84Kÿüå€A,A‚Kÿüý``€€b8�8(�^,8hKÿÙ±€A€¾08Ÿ,@‚8Ÿ €Þ4€þ8�<8”KÿÙ…€A��H8!@»Áÿø}ˆ¦N€ €¿aÿì|¦|ž#y;à�”!ÿ°A‚xWÝ>;ƒÿÿƒb\,A‚Wà>|è@@‚8{$KÿÙ€AŒœ8{(KÿÙ €A;ÿWà>|è@@‚8{.KÿØí€A|ð@A€ÿ°��X8!P»aÿì}ˆ¦N€ »ÁH8!PN€ €œ”!ÿ°�aD|¦��@`ƒ�X€�DHQ,@‚(€aD€�@H¡`€aD€‚\8„H�`��X8!P}ˆ¦N€ €\|¦¿Áÿø�”!ÿ°�a@`ŸKÿ–ñ€A`~€€�@H�€A,A‚<|ð®,A‚L, A‚D8c€�@Ha€A,A‚|ð®,KÿÿÔ8`H��X8!P»Áÿø}ˆ¦N€ 8`Kÿÿè €˜|¦€Âd”!ÿ°�a@�X`d€¦ €fH¹,@‚(€a@Hí`,@‚€a@H€�@H™��X8!P}ˆ¦N€ €`|¦€Âd”!ÿ°�a@�X`d€¦ €fHÕ,@‚,€a@H `,@‚€a@H)`d€a@H%��X8!P}ˆ¦N€ €d¿¡ÿô|¦€¢\`}�”!û`;áH8eä“á@;Áh|£ª|¿ª|¾ª8¡Œ��Œ€�@8ˆ8áŒ8ÁŒ�¤ ��Ä�ä8 c£Hq,A‚8`��¨8! »¡ÿô}ˆ¦N€ 8`@8€Hõ`�a@cä8 @Kÿ“!`€aŒKÿ”Í€A8c8€HÅ`€¡@8€�e8`H­`€¡@8€�e8`H•`€¡@8€�e 8`H}`€¡@8€�e8`He`€�@�d“¤€aŒƒäKÿ”A€A8£cã€�ŒKÿ’u`€Á@8�ˆ8 €fKÿ’]`€Á@8�Œ8 €f Kÿ’E`€Á@8�Œ8 €fKÿ’-`€Á@8�Œ8 €fKÿ’`€¢d8�@8eKÿÑ`€a@��¨8! »¡ÿô}ˆ¦N€ €ä|¦¿�ÿð�|¿+y”!ÿ ��@;ÀA‚@;£ÿü‡�€�@€|KÿÓa`,A‚8;Þ|ø@@€‡�€�@€|KÿÿØ8`��h8!`»�ÿð}ˆ¦N€ cƒKÿÿè €|,A‚8|©¦8£ÿü„e€| @BHM‚ „e€| @BÿðM‚ 8`N€ D|¦,¿Áÿø�”!ù �¡H`Ÿ@‚��h8!`ƒáÿü8`}ˆ¦N€ 8�@HÑ8a@8€€¡HKÿÆ1`�a@,A‚ÿÄ;À8D�D›ÁD€8€8¡@Hý,@‚L€ 8€8¡@Hå,@‚4€8€8¡@HÍ,@‚€8€8¡@Hµ,A‚;À€a@8€KÿÉ`cÃ��h8!`»Áÿø}ˆ¦N€ €ü|¦”!ÿ°�a@`ƒ�XHÕ€Âd�aD€�@€`Hဢ\`d€aD8À8¥ÜKÿ®‘`��X8!P}ˆ¦N€ €\¿Áÿø|Ÿ#y|¦�”!û°A‚T�¡@;Ãÿÿ;ÿÿÿ€a@8�@H),@‚L8a@8€8 H%€Aœ~,A‚;ÿÿÿ€a@8�@KÿÿÈ8`��X8!P»Áÿø}ˆ¦N€ 8`Kÿÿè €ˆ¿Áÿø|¦ƒâ|ƒÂd�€”!ÿ°�a@,8`@‚@€,@‚,8~8€8 8ÀKÿÎ=`cÀ�@HQTc>8�€ž,A‚€,@‚8`��X8!P»Áÿø}ˆ¦N€ €˜|¦¿¡ÿô�”!ó€�� h`8a\H!€‚\8„ÔKÿ—Á`8a\8€€¡ hKÿÉ`�a`,@‚48`�� ˆ8! €»¡ÿô}ˆ¦N€ €a`€� hKÿÁ=`8`Ht;À8d�d›Ád8aH8€8  8À KÿÍ=`,@‚ÿ¤8a`8�\H],@‚È8a`8�hHI,@‚´8ahKÿÈE€A|}yA‚ÿ€8`€� hH`�a@,A‚ÿd8a\KÿŽå€A8c€� h�a lHÙ`€�@�d|cyA‚ÿ48�\€¡ lKÿŒù`€¡@8aH8�@“¥KÿËå`8a`8�\H­,@‚8a`8�hH™,A‚ÿT€a`€� hKÿÀ`€aL€� h8T:HQ`�,A‚þ˜€�H€LT:KÿŒq`€¿€L8aHT:Å!.KÿÈy`8`�� ˆ8! €»¡ÿô}ˆ¦N€ €¿¡ÿô|¦`ƒ¢D`ž�”!ÿ°€Ÿ€½ˆd€¥8¥|®| @œ0`†8„Œf|®| @œ8„Œf|®| Kÿÿì,A‚ ,#@‚L€¿88€KÿÃq€A,A‚(8Ÿ€½ˆd€¥8¥|®| @œÿ¸Kÿÿˆ8`HlAœ\`‡8¾ÿÿœe€ÝŒg;Þ€Æ8„8Æ|®p@‚,œe€ÝŒg;Þ€Æ8„8Æ|®pKÿÿØ8`˜~�Ÿ��X8!P»¡ÿô}ˆ¦N€ €<,A‚4€£,A‚(€| @A‚$„£,A‚€| @Kÿÿè€b\N€ €eN€ H¿Áÿøƒã|¦,�”!ÿ°��@A‚8`~€€�@KÿÌ`,A‚4‡þ,A‚€€�@KÿÿÜ8`��X8!P»Áÿø}ˆ¦N€ €Kÿÿè €t€‚€“áÿüƒâ\|¦€„�”!ÿ°,�a@A‚8 ÿKÿ¦©`Ht8Kÿ·Ñ`,@‚88Ÿ¸Kÿ»¹`,A‚$€a@8Ÿ8¿Ä8ßÈ8àKÿ¨u`H(8¿Ä€a@8Ÿ¸8ß`§9È9 Kÿ¨M`€a@Kÿ¤I`€a@Kÿ¥­`��X8!Pƒáÿü}ˆ¦N€ €Ô|¦¿¡ÿô}€&`‘��”!ý 8`Kÿú8a@8€8 8ÀHI`à N@“Pƒâh€,A‚@ƒÂ\€Ÿ8a@HÉ`8a@8žH¹`„@,A‚€Ÿ8a@KÿÿÔ@’ €bdƒã,A‚�€,A‚„ƒÂ\€c8�@Kÿó ,@‚T€8�ЀcKÿø]8aÐ8�P8 H ¹`,A‚(€Ÿ8a@€„H)`8a@8žH`„,A‚€c8�@Kÿÿ�@‘<€bdƒã€Ÿ,A‚(€„8a@Kÿò „Ÿ,A‚€„8a@Kÿÿè@�P;Àƒâd€ ,A‚<; €Ÿ8a@|„è.KÿñÅ€ ;Þ;½@|@@€€Ÿ8a@|„è.KÿÿÜ€aD€¡@88€8cÿÿ|®€a@Kÿ‰`�aÐ8a@H=`€aÐ��ä€è8!à|¦}€� »¡ÿôN€ €|¦€bd”!ÿÀ8c�HKÿÃ`��H8!@}ˆ¦N€ €,”!ÿÀ|¦�HHM,@‚8`��H8!@}ˆ¦N€ €‚D�d8`��H8!@}ˆ¦N€ €H|¦¿Áÿø�”!ý°�a@`Ÿ8`Kÿ÷e€a@Kÿñ•|~y@‚€‚h€d,A‚ `…|@A‚ 8„@„e@,@‚ÿ쀂l8dN€ €dN€ D¿ÁÿøƒÂh|¦�€”!ÿ°,A‚@�a@;þÿÄ„@€�@KÿÀ­`,A‚8;Þ@€<,A‚„@€�@KÿÿØ8`��X8!P»Áÿø}ˆ¦N€ €T>Kÿÿä €€¿ÁÿøƒÂh|¦�€”!ÿ°,A‚@�a@;þÿÄ„@€�@KÿÀ`,A‚8;Þ@€<,A‚„@€�@KÿÿØ8`��X8!P»Áÿø}ˆ¦N€ cÃKÿÿè €|€‚h€,A‚ `…|@A‚8„@„@,@‚ÿì8`N€ `ƒN€ <¿ÁÿøƒÂp|¦ƒþ�”!ÿÀ,A‚(cãƒÿKÿ��€A,A‚cãƒÿKÿÿè8���H8!@»Áÿø}ˆ¦N€ €`¿aÿìƒâp|¦`~`�€�8”!ÿ°,T88;€A‚<€ƒ|„ð@@„,|„@@…`€`€c,A‚€ƒ|„ð@A„ÿÜ@‚„€btT:;~€c|€@@„|›@@„`{ccKÿ€É€A,ƒ@†8€bs €‚€�A‚8`8€$ceKÿ‚±`8`H4“ƒ“c8ÿð�H €ƒc|ž|Ø�ƒ|`��X8!P»aÿì}ˆ¦N€ € �‚x�A€ €L| ¦N€  |¦”!ÿÀ€c€„�HKÿ½•`��H8!@}ˆ¦N€ €,”!ÿÀ|¦�HH©€A��H8!@}ˆ¦N€ €$|¦¿Áÿø�`Ÿà4}€&TÙ~‘�.”!ÿ°�a@`¾A’8`€cÄKÿ~5`|yA‚\€a@cäHU€A,@‚$cã��T€X8!P|¦}€� »ÁÿøN€ €b€‚€�A’cãKÿ}‘`sÀA‚@€Â8` 8€$€¡@€ÆKÿ€õ`8`��T€X8!P|¦}€� »ÁÿøN€ 8`��T€X8!P|¦}€� »ÁÿøN€ €,|¦”!ÿÀ�HA‚Kÿ}`��H8!@}ˆ¦N€ 8!@N€ €4|¦¾ÿÀ}€&�‘�”!ýp�aD`Ÿ`d8a@H‘HI€A|~y; ÀA‚8`ÀcäKÿ|Í`||yA‚ð;`8a@Kÿ–%`àA €¢��aH;@S;<;, cwN:À,:¥cTcó€|Ð@@€ØcÃHù€A|`4TÙ@‚À8ÿx»ˆ~E:# ˆc~9�|µäª|°åª|¬åª9�88�T|¬åª|¤åªb$9pp|«Åª—ˆKÿ‚É`;@‘$€aHb$Kÿ‚±`8’8a@cåKÿýu;{|Ð@@€8cÃHY€A|`4TÙ@‚ :# ˆc~9�|µäªKÿÿl,@‚�;½Àc’c¤bCbeKÿ¹`||yA‚¨ ,|ãc,;<:A‚8£ÿ€~‰¦€Åˆ|Ç2”ňBÿô|ÒbÅ rÿø|e| ;ZS:”S:Ö,|€2cKÿ©a`Kÿþ”cÃH¹€Asà“|“<@‚€Âœc#cd8 ˆH¹€AcƒHL€b,ƒ¢€�A‚cÃHe€AsàA‚€Ý8` 8€$€¡DKÿ}Ù`8`��”€˜8!�|¦}€� ºÿÀN€ €¨|¦”!ÿ°�a@�Xˆ,@‚€‚�Kÿ€õ`ˆÿÿ,/A‚8€/8˜˜ƒ€a@��X8!P}ˆ¦N€ €X�‚„�A€ €L| ¦N€  �‚ˆ�A€ €L| ¦N€  �‚Œ�A€ €L| ¦N€  �‚”�A€ €L| ¦N€  �‚˜�A€ €L| ¦N€  �‚ �A€ €L| ¦N€  €ä€b<�N€ �‚´�A€ €L| ¦N€  �‚¼�A€ €L| ¦N€  �‚À�A€ €L| ¦N€  �‚Ä�A€ €L| ¦N€  “áÿü|¦�”!ÿ°;áh�ah��l�¡p�Át�áx‘|‘!€‘A„€�a@8`,8ŸA‚L`…€€Ä8„,8¦T¥8|c*A‚(`…€€Ä8„,8¦T¥8|c*KÿÿÜ€�@Kÿw©`,@‚8`��X8!Pƒáÿü}ˆ¦N€ €Ÿ``8ÿ,A‚P`å�€…€Ç8ç8¦,T¥8|A‚(`å�€…€Ç8ç8¦,T¥8KÿÿØ��X8!Pƒáÿü}ˆ¦N€ €4|¦`g< 8¥ÿÿ`ƒ€ÂÈ`¤�H2ƒÈ �§Ø �‡T€ø~���}ˆ¦N€ "Hˆ< P08¥W5<à4,8À8çVqA‚H, A‚4, A‚,T¨¾Tª@.}2|ÆTé@.|Ö|R|¥x| Jx|çŒ,@‚ÿÀT ~Tä~�ƒ�N€ x|¦Ûáÿø}€&ÛÁÿð¿¡ÿä‘�`}�”!ÿp`¬TË>8a@KÿÿI. € €a@|xA’8aHKÿþÕˆ,A‚lH$€ €¡D8aH|*xHAˆ,A‚H€bÈc¿;Á[Ãã(ÃÃ,8aHH•ü!òHu`ü!ð*H ¥`œ~Œ,@‚ÿÔA’ 8ˆ½,A‚tH@8`Hl8aHHE€bÈÀ(ü!2H`H Q`T`>ˆ½,A‚48a[Œƒ|„x| @‚ÿ´Œ½,A‚Œƒ|„x| Kÿÿä8`€˜��”ËÁ€Ëáˆ|¦8!�}€� »¡ÿäN€ "‚p|¦ÛáÿøÛÁÿð}€&¿�ÿà‘�,�”!ÿp`TË>`žA‚ ˆ,A‚cü8a@`¤Kÿý­8aHcÄKÿý¡. €@€aH|xA’8aPKÿý-ˆ,A‚lH$€D€¡L8aP|*xH™ˆ,A‚H;¿ÿÿ€bÈÃã(ÃÃ,8aPHñü!òHÑ`ü!ð*H`œ}Œ;ÿ,@‚ÿÐ@’P8aPH¹€bÈÀ(ü!2H‘`HÅ`T`>|ø@A‚ 8œÿÿ||ø|i¦ˆd|cxœdBÿô8c㘀˜��”ËÁ€Ëáˆ|¦8!�}€� »�ÿàN€ "‚l|¦€âȀ¤”!ÿÀ�H8‡KÿÉ1€A��H8!@}ˆ¦N€ €48 ,�£�£M‚ ˆ¤,M‚ 8cÿü`…ˆ„,0A€$,9A�8„ÿÐT€ 6ˆ…,0A€hH@,AA€$,ZA�8„ÿÉT€ 6ˆ…,0A€@H8„ÿ©T€ 6ˆ…,0A€(,9A� 8„ÿÐ|„ˆÅT„ 6,0A€pHH,AA€(,ZA� 8„ÿÉ|„ˆÅT„ 6,0A€DH8„ÿ©|„ˆÅT„ 6,0A€(,9A� 8ÿÐ|€"ˆÅT„ 6,0A€pHH,AA€(,ZA� 8ÿÉ|€"ˆÅT„ 6,0A€DH8ÿ©|€"ˆÅT„ 6,0A€(,9A� 8ÿÐ|€"ˆÅT„ 6,0A€pHH,AA€(,ZA� 8ÿÉ|€"ˆÅT„ 6,0A€DH8ÿ©|€"ˆÅT„ 6,0A€(,9A� 8ÿÐ|€"ˆÅT„ 6,0A€pHH,AA€(,ZA� 8ÿÉ|€"ˆÅT„ 6,0A€DH8ÿ©|€"ˆÅT„ 6,0A€(,9A� 8ÿÐ|€"ˆÅT„ 6,0A€tHH,AA€(,ZA� 8ÿÉ|€"ˆÅT„ 6,0A€HH8ÿ©|€"ˆÅT„ 6,0A€,,9A�$8ÆÿÐ|†"ˆÅT€ 68…,0A€xHP,AA€,,ZA�$8ÆÿÉ|†"ˆÅT€ 68…,0A€HH 8Æÿ©|†"ˆÅT€ 68…,0A€(,9A� 8ÆÿÐ|ƔÈ¥,M‚ HH,AA€(,ZA� 8ÆÿÉ|ƔÈ¥,M‚ H8Æÿ©|ƔÈ¥,M‚ `…ˆ„,0Kÿü°N€ ˆ”!ÿ°|¦�aH8a@�XKÿø�€‚È€¡@€ÁD€aH8„KÿÅE€A��X8!P}ˆ¦N€ €D|¦`e<`C0€ÂÈ�€À €å€…�aÿð`æ|`:H2ƒÈE �…|Ä2€…8f!H2ƒ€�ÿôÈ!ÿðü*ü $�…��}ˆ¦N€ "t|¦`g<À@`ƒ�8ÿÿ�€ÂÈ`H2ƒÈ`£Ø �‡€‡H2ƒ�‡��}ˆ¦N€ "P€bÌü ÀcüCòüC²üC²ü`ŽÿàLÿÀŒü�*ü¡(ýþŽü@€ Àü@€ ü$(N€ ü"(*N€ €bÐÈü *N€ "@Àdtrunc0€bÌü ÀcüCòüC²üC²ü`ŽÿàŒÿÀŒü�*ü¡(ýþŽü@€ Àü@€ ü$(N€ ü"(*N€ €bÐÈü *N€ "@Àdnearest0 €bÌü ÀcüCòüC²üC²ü`ŽÿàLÿÀLü�*ü¡(ýþŽü@€$ÀüM‚ @€ ü$(N€ ü"(*N€ €bÐÈü!*N€ "@Àhfloor0Ø!ÿð€ÿðT~�ÿðÈ!ÿðN€ "@Àfabs0 €bÌü ÀcüCòüC²üC²ü`ŽÿàŒÿÀLü�*ü¡(ýþŽü@€$ÀüM‚ @€ ü$(N€ ü"(*N€ €bÐÈü *N€ "@Àhceil0 ÀÔÿ€ÂØü€ŽÈFÿÀŒüÈfÿàLA˜üÁ*ØÁÿøü%Ž@€€aÿüN€ ü%Ž8`H8`Aƒ8`ÿÿHN€ ýþ%Ž|¦“áÿü�”!ÿÄ|x€fHA€Aãûx€D0!<|¦ƒáÿüN€ #AÀœ __uitrunc�‚Ü�A€ €L| ¦N€  ,|¦”!ÿp�˜@‚€bàHQ€A`d8a@8 OKÿ•A`8a@8€Kÿi‘`��˜8!�}ˆ¦N€ €T�‚ä�A€ €L| ¦N€  |¦,”!ÿ°�a@�X�ÁDA‚ `€`¤€a@`KÿÆq€AH €b8€`¤€a@`KÿÆQ€A€�@8 8À€áDKÿÄÙ`��X8!P}ˆ¦N€ €||¦“áÿü`Ÿ�”!ÿ°�a@Hq€A�aD,ÿÿ@‚4€‚sà€b€Ä�ÃA‚Wä08`8„$€¡@Kÿlµ`€aD��X8!Pƒáÿü}ˆ¦N€ €t�‚è�A€ €L| ¦N€  |¦,¿¡ÿô}€&�‘�”!ÿ€�ád�a``Ÿ@‚€¢ì`¤;Á@cÃ8 Kÿ“]`ƒ¢ì8�Kÿo}`Þ,@‚8}KÿÆý€A|y@‚;ýcãKÿgU€A|ò,þ@�4€b;àV“ãKÿœ}€A��ˆ“ã8`8!€}ˆ¦»¡ÿôN€ €a`cäKÿo`€a`Kÿ€=`8�@Kÿné`€a`H™€A`€�`8 8À€ádKÿÂñ`.,�ahA€$@�$ƒâ€a`8€�ƒßKÿþ`“ßA�€‚ô€d8�€ah��„€ˆ8!€|¦}€� »¡ÿôN€ €x�‚ð�A€ €L| ¦N€  |0|æ1|88|A‚t�"D8åÿÿ9ÿÿ| ¦�)�)�G�h8c8¥| P®H4ˆcÿÿˆ…ÿÿ| ®|i ®|cN€ @‚ÿè�G�h8c8¥| P®}IX®| Bÿà@‚ÿÄ|f N€ Œ,A‚\€âD|©¦8£ÿÿ8Äÿÿ€ç€ç��%8c8„|@®H@‚0��%8c8„|@®}H®|Bÿà@‚ 8`N€ ˆcÿÿˆ„ÿÿ|®|g ®|cN€ €` (8¥ÿÿA‚p€ÂDˆã‰€Æ€Æ|8®|æ@®||4TÙA‚D` (8¥ÿÿA‚4Œã�|8®|æ@®||4TÙA‚` (8¥ÿÿKÿÿÐ8eN€ „€ÂDˆ£ˆä€Æ€Æ|(®|æ8®|8@‚8`ˆ8„,A‚8Œ£Œè|æ8®|(®|8@‚8„,Kÿÿ܈d|f®|cN€ 8`N€ p€ÂDˆ£ˆä€Æ€Æ|(®|æ8®|8@‚8`ˆ8„,A‚8Œ£Œè|æ8®|(®|8@‚8„,Kÿÿ܈d|f®|cN€ 8`N€ p€¢D8€¥ˆã,A‚@€Å‰`i}@®|æ8®8c|@A‚,Œé,A‚|æ8®8c|@Kÿÿä8`N€ N€ ‰$, A‚L9ÿÿ`}FH®�(}&H®| PA‚ˆã,Kÿÿ„�', A‚}FH®�(}&H®| PKÿÿÔ8cÿÿN€ ¼,M‚ €¢D8cÿÿ|‰¦€…ˆÃ€„|0®œBÿìN€ 0€ÂDˆƒ€¦€¥ | ®˜,M‚ €†ˆ£€„ |(®œ,M‚ €†ˆ£€„ |(®œ,KÿÿäN€ \€ÂDˆƒ€¦€¥| ®˜,M‚ €†ˆ£€„|(®œ,M‚ €†ˆ£€„|(®œ,KÿÿäN€ \,M‚ €¢D8cÿÿ|‰¦€…ˆÃ€„ |0®œBÿìN€ 0,M‚ €¢D8cÿÿ|‰¦€…ˆÃ€„|0®œBÿìN€ 0¾áÿÜ|¦;À}€&`ß�Wà´‘�”!ÿ�.�a@`�`¼cÛƒB;; ÿÿ€a@c¤c…Kÿ·Í€A`w|à@A‚8,ÿÿA‚cÚ½—àKÿ•Í€A€�,@‚hA’d|È@A‚\cÃ8€ H2ƒ;Þ,@‚4€a@Kÿ•µ``e8`8€DKÿdµ`8`I€A;½|ð@@€�0„|Kÿÿä“08Kÿq `8���X8!P»aÿì}ˆ¦N€ €�¿!ÿä|¦`;À`½�`€`Ü”!ÿ `ûaa9“ß88€`8ÀKÿt`,A‚ “ß08`��h8!`»!ÿä}ˆ¦Hd8`8€ÿÿs “¿“Ÿ�Ÿ� “,“?“_0A‚€X�48`��h8!`H€\�48`��h8!`»!ÿä}ˆ¦N€ €Ô¿�ÿð|¦€‚`€¢dƒÂh;à�;€`}”!ÿ°“哞“þ“þ8dKÿ”Ù€A�~ˆ,-@‚(8;½� c£��X8!P»�ÿð}ˆ¦Hh,+@‚$“ž ;½c£��X8!P»�ÿð}ˆ¦H@,A‚ “ž c£��X8!P»�ÿð}ˆ¦H“þ c£��X8!P»�ÿð}ˆ¦N€ €à€‚h€¢d¿�ÿð€€¤€Ä`|‡(`È@…È|@@�ÀTª:eÿü8cÿü}%Ð}J}kå8}ˆ(|`@�H, @�4Tÿ:U:a�žZÞÿ⩦ƒžƒ¿—¾—ŸBÿð|ì8|‡(H8,@�,ÇJU:aL�ɦƒ¼ƒÌ—Ü—¬Bÿð}ú@…|@@�å8}ˆ(|`Kÿÿl|¥|¦*�¤�»�ÿðN€ ˆ,A‚ `e| M‚ 8cŒ,@‚ÿì8`N€ 0½¡ÿ´|¦ƒâd}€&ƒÂl�€9 ‘�”!ÿp,`}`œ`»`Ú`ù‘>a@‚ccKÿým`{‚âh‚×,A‚ˆ,@‚ø€ ‚ß,@‚À€w€||€°A‚A†cƒKÿþ ‚ßH A†’×~è@�€VÃ:||.ˆ,-@‚ˆ,@‚`VÀ:||:Ö~è’ß@�H„ƒˆ,-A‚:Ö~è’ßKÿÿàˆ,@‚VÀ:||:Ö~è’ßKÿÿ¼’×H~èA’pVÃ:€‚`||.8„Kÿqñ`,@‚L€€w8–�Ÿ|A‚ | A‚cƒKÿý!“·“¿H�—“·~“¿c¶@’8€w€|A‚���”€˜8!�8`ÿÿ|¦}€� ºÁÿØN€ VÃ:||.ˆ,-@‚ˆ,@‚<€ ,A‚ÿ¸��”8�€˜8!��~|¦8`}€� ºÁÿØN€ ,8c8€A‚,€-@†8€~Ä’×H,A‚(€T:||.ˆƒ,-A‚,,A‚ˆ,@‚ccKÿý!,‚×@‚èbÕˆ:€:`,b’bqA‚8,=A‚0b£:µŒ,A‚,=A‚:µŒ,Kÿÿè9à‚,A‚Œ}¶¨cNbbÄa¥H}€A,@‚DbKÿ0€A| @A‚Ü,@‚$cTañ†;Z9ï,A‚0H:`†;Z9ï,A‚bbÄa¥Kÿÿ�,A‚p,@‚h€bt€,A‚0€€b€¼€‚`8c@T:|Ü0.8„Kÿh½€A‚×bÃKÿ/U€A€Ÿ|�8`?8�HH,€A‚°8£€�¿ˆ•,A‚ ,A‚8�H°€bt€,A‚`T :€b|œ€„ÿü€¼8c@ˆ€ô,-@‚ €‚``æ8„8Kÿh €A‚×HˆÄ�`8ˆhKÿgñ€A‚×bÃKÿ.‰€A|8`?�Hˆ,@‚ |è@€l8T£:||.��~bÃKÿ.I€A|,�A‚’9€”€t ,A‚4�d8`��”€˜8!�|¦}€� ¹¡ÿ´N€ €bt€,A‚0€bT :€‚`|Ü€¼€Æÿü8„˜8c@Kÿg!€A‚×bÃKÿ-¹€A|ˆ{�,:8`:A‚°8`?��”€˜8!�|¦}€� ¹¡ÿ´N€ ,A‚0Td:|œ .ˆ,-A‚ˆ–ccKÿùÕ,@‚œ€€‚t€,A‚pTd:€b|Ü .€÷8c@€¼ˆ,-@‚4€‚``æ8„ÀKÿf]€A€8c€`�8`?�HøˆÆ€‚`8„àKÿf-€A€8c€`�8`?�HȂ׋V8�cccDKÿù€·ˆ,@‚€Ÿ8�,A‚ ,:@‚t€bt€,A‚T€€b€¼8c@,A‚(€‚`cF8„Kÿe�€A€‚x8`?“DH4€‚`cF8„Kÿei€A€‚x8`?“DHˆ,:@‚ˆcˆ,€,:@‚|¦ ®œ§ÿÿA‚``8hfgcäWåþH1Kÿÿ¼˜¾ˆ,€A†0cÃ;ÞŒœpÿA‚;ÞŒœpÿKÿÿìcÃ��¨8! »Aÿè}ˆ¦N€ (€8 ˜¡€;¡€KÿþÀ €è¿!ÿä|¦|ß3y`�`¾�”!ÿ```@€d,ŸÿÜA„ ,Ÿÿþ@…»¡”8! 8`N€ ,L€@‚(�@„(8 -#½|�,˜¾;ÞL€@‚(�ÿÐH ,Ÿ$A…ÿ¬,ŸA„ÿ¤,@‚l(�@†$808€8~˜˜ž»¡”8! N€ (€8 ˜¡€;�€@‚<À€8Æÿÿ|�0@@…l<`€ƒbHc™;Cÿÿ`c¤8 cæH!€A|`y|¿!Ö(€|¥è|»(®`�;œÿÿœ¹ÿÿ@‚|„Ð@@…`c¤8 cæKÿÿ¼,A‚\€âHc†`h`…c£cäH3`¤;œÿÿ``|¿Ö|¥è|yT¥>|§(®œ¦ÿÿA‚`…c£cäH3KÿÿȘ¾ˆ,€A†0cÃ;ÞŒœpÿA‚;ÞŒœpÿKÿÿìcÃ��¨8! »!ÿä}ˆ¦N€ (€8 ˜¡€;�€KÿþÐ €�‚ˆ�A€ €L| ¦N€  |¦”!ÿ°8Àÿö�¡@�XKÿý�`€a@��X8!P}ˆ¦N€ €0N€ ,88À€¢ŒA‚ �eH€e,A‚œ‰,A‚�`g`æ™`h`ê8c‰'8ç| @‚4�e‰(| @‚8h�e‰,A‚@HaGH4�e‰,A‚$™`h`ê8c‰'8ç| Kÿÿ ˜`ÃN€ È8`N€ “áÿü|¦ƒâ€¢�€‚”�`f”!ÿÀ8@€¥8„$KÿWµ€A8@Kÿ!¡€A8`Kÿ)½€A��H8!@ƒáÿü}ˆ¦N€ €`“áÿüƒâŒ|¦€�”!ÿÀ€pA‚8€b˜€cKÿ!=€A€€c,@‚þM��H8!@ƒáÿü}ˆ¦N€ ƒá<8!@N€ €d|¦,¿Áÿø�”!ÿ°��@@‚ ;àcã��X8!P»Áÿø}ˆ¦HP;à`~€~€�@Kÿ]e`,A‚ÿȃÞ,A‚€~€�@KÿÿÜcã��X8!P»Áÿø}ˆ¦N€ €ˆ|¦¿¡ÿô�8ÿÿ€bŒ”!ÿ°;à€c€c |@�„À@�ˆƒ¢˜8€�||ø@‚ 8`|Kÿ 5€A;ÿ|ð@€8H8` Kÿ €A;ÿ|ð@€àp|”€�||øKÿÿ´��X8!P»¡ÿô}ˆ¦N€ ƒáL8!PN€ »ÁH8!PN€ €Ä¿Áÿø|y|¦�”!ÿÀA‚\cþ€~ƒÿ,A‚ KÿM€AcÃKÿA€A,A‚cþ€~ƒÿ,KÿÿÐ��H8!@»Áÿø}ˆ¦N€ ƒá<8!@N€ €||¦¿Áÿø�ƒÂŒ”!ÿ°�a@€ž€~€8d�~pA‚4€b˜ƒãH5€A€‚”`ecã8„€KÿT±€A€~€Tç>|` @�0€b˜€‚”€¾8„€€cKÿT�€A€~€Tç>|` @ž,€b˜€¢�€‚”€¥€c8„ˆKÿTM€A€~€| @�8€‚˜€~ƒäH™€‚”`ecã8„�KÿT€A€~€| @œ(€b˜€‚”€¡@8„€€cKÿSé€A€~€pA‚ €b˜€‚”€¾8„˜€cKÿS½€A��X8!P»Áÿø}ˆ¦N€ €d|¦“áÿü8€/`�”!ÿÀKÿ5€A,A‚;ãcã��H8!@ƒáÿü}ˆ¦N€ €D“áÿü|¦�”!ÿÀKÿ=€A|y@‚€b”8cHKÿû5cã��H8!@ƒáÿü}ˆ¦N€ €D¿Áÿø|¦ƒâŒ;À€¿�”!ÿÀ€pA‚L€ƒ€|A�<€€ƒ`Kÿû©,A‚$€€‚�€„€c$Kÿû�,A‚;ÀcÃ��H8!@»Áÿø}ˆ¦N€ €ˆ“áÿü|¦ƒâŒ�”!ÿÀˆ,@‚ 8˜8`,Kÿþ适€8ÀÈ8 8„@�£�Ã�£�ƒ�£ �£�£�£�£ �£$�(���H8!@ƒáÿü}ˆ¦N€ €ˆ|¦“áÿü€‚�”!ÿÀ8@|@A‚h8 |@A‚\KÿMU€A,ÿÿ@‚T€b˜€‚�ƒâ”€¤€c8Ÿ`KÿQe€A8‚Hí€A8`KÿùÝ��H8!@ƒáÿü}ˆ¦N€ 8!@N€ ��H8!@}ˆ¦N€ €œ|¦”!ÿp8`8�@�˜Kÿ~I€A€@€¡D<`b8cMÓ`¤èH1T¤þ|c6p|c"|`��˜8!�}ˆ¦N€ €X¿ÁÿøƒÂŒ|¦;à€~�”!ÿÀ€p€A‚H€ž€|A�8€c€žKÿùi,A‚$€~€‚�€„€c$KÿùM,A‚;àcã��H8!@»Áÿø}ˆ¦N€ €„|¦¿Áÿøƒâ”�”!ÿ°�a@8Ÿ KÿL�€A|~y@‚P€b˜€¢�8ŸX€Á@€¥€cKÿOÍ€A8‚HU€A8`KÿøEcÃ��X8!P»Áÿø}ˆ¦H,€¢¤€‚Œ�e€d“ÃcÃ��X8!P»Áÿø}ˆ¦N€ €¤¿�ÿð|¦|~y`Ÿ�”!ÿ°A‚ƒ¢ŒcÄ€}8cKÿÑ`ƒ‚”cÃ8œVKÿUÍ`,@‚8€}€‚€¢˜8 €ƒ��`€���X8!P»�ÿðH�8œ,@‚8œ cÃKÿK]€A,@‚P€b�ƒâ8œXcÆ€£8@KÿN�€A8|‚H%€A8@Kÿ}€A��X8!P»�ÿð}ˆ¦H$€¢˜€��d�e��X8!P»�ÿð}ˆ¦N€ »ÁH8!PN€ €$|¦”!ÿ°�a@�XKÿÁ€A8cKÿúÑ�aD€�@H Ñ`€aD��X8!P}ˆ¦N€ €D|¦¿aÿì�`ˆ”!ÿ°; ;À,A‚ ,,cüA‚Tcã;ÿŒ,,€,@†HA‚0;ÿŒ,,€,@†ÿìA‚›¿;ÿ8`Kÿú!H@† ›¿;ÿ8`Kÿú `{cƒKÿÿ�{“Ûˆc~,A‚,,cüKÿÿp��X8!PcÃ}ˆ¦»aÿìN€ €Ü€bŒ8�8N€ €bŒ8�8N€ |¦¿!ÿä�”!ÿ@�� �aœ`¼`ß`ƒƒÂŒH !,A‚X€aœKÿ÷m€~; €pA‚8€~8cKÿõíƒ"˜€‚”8a@€¡ c†8„cçKÿjI€AH@ƒ"˜€b”€¾8ƒˆ€yKÿL€A€‚”8a@€¡ c†8„cçKÿj €A€™8a@Kÿ)€A,A‚ˆƒbH;œÿÿ;½,P;ÿÿÿ�\A€€™8` KÿÍ€A; WCç>€™|{®Kÿµ€AWC>€™|{®Kÿ¡€A€™8` Kÿ‘€A,A‚;½,P;ÿÿÿ�\Kÿÿ˜€™8` Kÿe€A8~KÿóÉ��È8!À»!ÿä}ˆ¦N€ ��ȃ�°8!À}ˆ¦»ÁÿøN€ € ¿�ÿðƒâŒ|¦�”!ÿ°�ah��l�¡p�Át�áx‘|‘!€‘A„;Áh€4H ],A‚ÐKÿF¡€Aƒ£€0Kÿõ�€ƒ‚˜€pA‚,€8cKÿô€‚”€|€¿48„ˆKÿJm€AH4€‚”€|€¿8„ˆKÿJQ€A€‚”€|€¿48„ˆKÿJ9€A€|€�h8¾H ý€A€œ8` Kÿ5€A8Kÿò™KÿEõ€A“£��X8!P»�ÿð}ˆ¦N€ ��X8!P»Áÿø}ˆ¦N€ €(€¢Œ�e0�…4N€ |¦€â¬¿Aÿè�€”!ÿ �a@,`Ÿ`Ý`¾@‚œå@‚ÿôN€ @ðstrcpy�‚¨�A€ €L| ¦N€  : File '%s' not found (Errcode: %d)Can't create/write to file '%s' (Errcode: %d)Error reading file '%s' (Errcode: %d)Error writing file '%s' (Errcode: %d)Error on close of '%s' (Errcode: %d)Out of memory (Needed %u bytes)Error on delete of '%s' (Errcode: %d)Error on rename of '%s' to '%s' (Errcode: %d)Unexpected eof found when reading file '%s' (Errcode: %d)Can't lock file (Errcode: %d)Can't unlock file (Errcode: %d)Can't read dir of '%s' (Errcode: %d)Can't get stat of '%s' (Errcode: %d)Can't change size of file (Errcode: %d)Can't open stream from handle (Errcode: %d)Can't get working dirctory (Errcode: %d)Can't change dir to '%s' (Errcode: %d)Warning: '%s' had %d links%d files and %d streams is left open Disk is full writing '%s'. Waiting for someone to free space...Can't create directory '%s' (Errcode: %d)Character set '%s' is not a compiled character set and is not specified in the '%s' fileOut of resources when opening file '%s' (Errcode: %d)latin1?UNKNOWN_USERportsocketcompresspasswordpipetimeoutuserinit-commandhostdatabasedebugreturn-found-rowsssl-keyssl-certssl-cassl-capathcharacter-set-dirdefault-character-setinteractive-timeoutconnect_timeoutoptionsclientd:t:o,/tmp/client.trace/tmp/mysql.sockmylocalhostunknown3.23.35mysqlIBtcpMYSQL_TCP_PORTIMYSQL_UNIX_PORTÄì$,dl”Ì<t”øøøø¤ÈìlrootIBMUSERIBMLOGNAMELOGINIBMYSQL_PWDIB%dI like 'show databasesIshow tables#<#H#T#`#„#¨#Ì#ð/etc//var/mysql~/defaultsIBM Default options are read from the following files in the given order:I.IB.cnfI The following groups are read:I The following options may be given as the first argument: --print-defaults Print the program argument list and exit --no-defaults Don't read default options from any options file --defaults-file=# Only read default options from the given file # --defaults-extra-file=# Read this file after the global files are readIBerror: Wrong group definition in config file: %s at line %d IBM--Ierror: Found option without preceding group in config file: %s at line: %d --no-defaultsIB--defaults-file=IBM--defaults-extra-file=I--print-defaultsIBM%s would have been started with the following arguments: IB%s Program aborted ../UNKNOWNUNOPENED?Unknown MySQL errorCan't create UNIX socket (%d)Can't connect to local MySQL server through socket '%-.64s' (%d)Can't connect to MySQL server on '%-.64s' (%d)Can't create TCP/IP socket (%d)Unknown MySQL Server Host '%-.64s' (%d)MySQL server has gone awayProtocol mismatch. Server Version = %d Client Version = %dMySQL client run out of memoryWrong host infoLocalhost via UNIX socket%-.64s via TCP/IPError in server handshakeLost connection to MySQL server during queryCommands out of sync; You can't run this command now%-.64s via named pipeCan't wait for named pipe to host: %-.64s pipe: %-.32s (%lu)Can't open named pipe to host: %-.64s pipe: %-.32s (%lu)Can't set state of named pipe to host: %-.64s pipe: %-.32s (%lu)Can't initialize character set %-.64s (path: %-.64s)Got packet bigger than 'max_allowed_packet'socket (%d)TCP/IP (%d)127.0.0.1Y€BÈ User time %.2f, System time %.2f Maximum resident set size %ld, Integral resident set size %ld Non-physical pagefaults %ld, Physical pagefaults %ld, Swaps %ld Blocks in %ld out %ld, Messages in %ld out %ld, Signals %ld Voluntary context switches %ld, Involuntary context switches %ld IBÙ€HOMEIBMUMASKIBUMASK_DIR?/usr/local/share/mysqlyesnoI I %02x %s #%d ctype: to_lower: Ito_upper: Isort_order: IBMcollate: %3s (%d, %p, %p, %p, %p, %p) IBmulti-byte: %3s (%d, %p, %p, %p) IB/usr/localI/IBcharsets/IBIndexIB.confIB .IBAÏÿÿÿ€Y€Ù€%08lx%08lxIBM IAÿÿðAøB€FC0AðEnter password: 01230120022455012623010202tmp./tmp/IBXXXXXXITMPDIRSafemalloc link list destroyed, discovered at '%s:%d'IBcNewCount: %d IMemory that was not free'ed (%ld bytes): IB %6u bytes at 0x%09lx, allocated at line %4u in '%s' IBMaximum memory usage: %ld bytes (%ldk) Memory allocated at %s:%d was underrun, discovered at %s:%d IBMemory allocated at %s:%d was overrun,I discovered at '%s:%d' Out of memory at line %d, '%s'Ineeded %d byte (%ldk), memory in use: %ld bytes (%ldk)I%s NULL pointer at line %d, '%s' IB%s wrong aligned pointer at line %d, '%s' I%s pointer out of range at line %d, '%s' IBFreeingFreeing unallocated data at line %d, '%s' IReallocatingIBMReallocating unallocated data at line %d, '%s' /my/IBMPATHI_MY_BASEDIR_VERSIONIMY_BASEDIR..IBMPOSIXLY_CORRECT--I%s: option `%s' is ambiguous IB%s: option `--%s' doesn't allow an argument IBM%s: option `%c%s' doesn't allow an argument IBM%s: option `%s' requires an argument IB%s: unrecognized option `--%s' %s: unrecognized option `%c%s' %s: illegal option -- %c IB%s: invalid option -- %c IB%s: option requires an argument -- %c Can't find '=' in expression '%s' to option -O No variable match for: -O '%s' Variable prefix '%*s' is not unique IBMUnknown prefix used for variable value '%s' IBM%s=%ludbug?func?file?a+wIB%s: debugger aborting because %s IBout of memory-%s: can't open debug output stream "%s": I ¬¬ˆ¬Ø¬¬¬¬¬ì¬ ¬¬œ¬¬¬¬¬¬¬¬¬¬¬¬¬0¬¬(¬h”¬ä¬¬¬¬ø0 ¬8¬Hdbugmon.out%s: can't close debug file: IBM%5d: IB%s: IBM%14s: I%4d: IBE %ld %s IBS %lx %lx %s IB>%s IBM%s: missing DBUG_RETURN or DBUG_VOID_RETURN macro in function "%s" X %ld %s IB<%s IBM%s: Memory: %lx Bytes: (%d) +ð+ðAxAœAÌAôBBDBdBŒB¼BÀBüCC<CdCŒC´CàD D4DPDxD¸DäE@ˆEx ((((( H„„„„„„„„„„������‚‚‚‚‚‚ H  !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿àáâãäåæçèéêëìíîïðñòóôõö×øùúûüýþßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ÷ØÙÚÛÜÝÞÿ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿AAAA\[\CEEEEIIIIDNOOOO]רUUUYYÞßAAAA\[\CEEEEIIIIDNOOOO]÷ØUUUYYÞÿ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZHHHHF”'pEœE¤E¬E¸EÄEÌEÔEÜEìEôFFFF$F0F8FDFXFpF„KHK\K|KÀKðLL8LTL�L°LÀLÜLðM M<MtMŒMÌNNLN„ ´øÿ@(#)79 1.4 src/bos/usr/ccs/lib/libm/POWER/floor.c, libm, bos430, 9737A_430 3/10/97 22:38:39<ÿÿÿÿQØÿø*?ÿÿÿÿÿÿÿÿ?WWW W�8tI¨8t8tÉx8t¨8t8tè8tü8t8t@8t€8t D8t!<8t!\8t!„8t" 8t"ü8t$L8t%˜8t'(8t( 8t)`8t)ä8t*h8t*€8t*˜8t*´8t*Ì8t+x8t+œ8t+ø8t,<8t,`8t,„8t,Ü8t-48t-œ8t/x8t/œ8t/ì8t0x8t1ø8t= 8t>œ8t?(8t?ä8t@8t@8t@08t@H8t@`8t@€8t@ 8t@¸8t@Ð8t@è8tA8tA 8tA88tAP8tCT8tAÐ8t[l8tˆx8t}ø8tH8tG@8t[ 8tBD8tD”8tO8t”h8t’88t�H8tb88teô8t¤H8t“,8t“ü8t¤È8t¢`8t›¼8t•H8tHX8t©\8tÏX8tœ$8t•”8t™ì8t—8taÈ8t¿8t¿è8t»d8tÐ8tÓÀ8t�<8tš€8t›X8t™˜8tš 8t…Ø8tŸÀ8t ¤8t› 8t˜”8tšh8t—œ8t—Ð8t˜¬8t˜ä8t˜ü8t™8t� 8tѸ8tÒ@8tÕ<8tÕ€8tÙ8tÙl8tÙð8tÝt8trà8t§„8tª@8t¾l8ti,8tG°8tKœ8tÞ8t£@8tÞ”8tßD8t`X8t|ˆ8tàô8tá�8tâ 8tâ´8tã48tã´8tä€8täÀ8tå,8tå˜8tåØ8tæ8tNð8tJà8tK8tP¤8tsp8tt$8tuH8ti¤8tjd8tj¬8tnL8toÀ8taT8tv 8tvÐ8twp8t`Ì8tè48tè¤8t}X8t}”8tí�8tï 8tïŒ8tïø8tðì8tò”8tôd8tAp8te(8tøH8tdP8tú8txÔ8ty¸8tzì8tú48túh8túÌ8tü`8tþ¬8tÁp8tÁÐ8tÂx8tÔ8tÄt8tÄÄ8tYp8t„d8t…8t�„8tž°8t€˜8t� 8t�ì8t‚h8tƒl8tƒ°8tǰ8tÈ 8tÿô8tt8t¸8tt8tÌ8tH8tŒ8t­è8t¼H8t¾¨8t¿�8tÀ”8tÁ8tÆÔ8tÇ`8tÉè8tOh8tÅð8tÆD8td8t<8t 8tT8t ¨8t Ø8tœ8tÔ8t 8t¬8tØ8tX8t¤8tÜ8t8tl8t ¼8tÉ´8tË8tËD8tÍü8t!48t!¼8tR8tRL8t!ô8t"œ8t#8t$ü8t'L8t3ˆ8t3¨8t3È8t5x8t6°8t6Ð8t8T8t9ø8t:Ð8t> 8t>à8t?8tAp  €EˆH8K@KK K(@'@'DK@'H'\'`+ü'ÈN°(( ($((;0NøP@=0ˆEx(,(0(4(8QH,(<(@*@*D*HQpQ *PQ¨QÀQø+d+l+p+t*ÄR*Ü*Ø*Ô*Ð+P+L*¼+x*ÀT¸Tð6ˆ6”Tø+€=P+„+ˆ+ŒVX+�+ÌW+Ð+Ô+Ø+Ü+à'Œ¨;M$·M_errno@access@ chdir@ close@ getpid@ @ poll@ select@ unlink@ socket@ connect@ shutdown@ @ @ (@ 7@__mulh1@__divus2€@__quoss3@__quous3€@_iob@_Errno@ exit@ free@ malloc@ strlen@ fopen64@ open64@ realloc@ getenv@ atoi@ write@ memset@ fflush@ fclose@ fcntl@ vsprintf@ vfprintf@ sprintf@ printf@ fprintf@ strchr@ fwrite@ __divu64@ read@ strncmp@ strrchr@ fputc@ fgets@ signal@ perror@ memchr@ sleep@ fread@ atol@ endpwent@ getpwnam@ getpwuid@ lstat64@ fstat64@ stat64@ fputs@ fseeko64@ ftello64@ qsort@ getcwd@ strstr@ opendir@ readdir@ closedir@ geteuid@ memcmp@ getlogin@ fdopen@ time@ puts@ O@ mkstemp@ ferror@ ^@ getpass@ realpath@ j@ v@ †@ strtol@ compress@ –@ my_errno£¾Ì ágloberrs 퀈'9K_dig_vechome_dir8curr_dir@_@n'@�'D’'H¨'\¾'ÈÎ(ã( ÷($my_umask(( (,(0/(8>(@N*@]*Dj*H|*¸�*¼¢*À¶*ÄÊ*Èå*Ìù*Ð *Ô*Ø%*Ü5*àC*èV+8d+<‚+@˜+D­+HÌ+LÙ+Pæ+Tú+X+\+`1+dG+hW+lc+pwild_one+tq+xoptind+€optarg+„opterr+ˆoptopt+Œˆ+Ì_db_fp_+Ð_db_pfp_+Ô_no_db_+Ø_db_on_+Ü_db_pon_+à—+ä «+ð Â, Ù,  ô,, ,8 ,D 3,P G,\ ],h o,t ‚,€ “,Œ ¥,˜ ¹,¤ É,° Ü,¼ ñ,È ,Ô ,à 0,ì A,ø X- n- †- ž-( «-4 ¸-@ Å-L Õ-X í-d þ-p -|  -ˆ 3-” M-  `-¬ n-¸ €-Ä Ž-Ð £-Ü ·-è Ç-ô Ô. ï.  . .$ .0 *.< <.H R.T f.` y.l Š.x Ÿ.„ º.� Æ.œ Ù.¨ ê.´ ÷.À .Ì strcend.Ø .ä !.ð 4.ü @/ P/ \/  strmov/, n/8 z/D Ž/P strmake/\ œ/h my_open/t ¨/€ ·/Œ my_read/˜ my_close/¤ Ã/° net_end/¼ Ð/È my_init/Ô Ü/à vio_new/ì ï/ø ý0 0 strend0 0( 304 A0@ T0L scramble0X f0d w0p vio_read0| ‰0ˆ œ0” «0  ¸0¬ È0¸ Ö0Ä vio_fd0Ð â0Ü ñ0è ÿ0ô 1 vio_type1  1 -1$ 910 H1< X1H i1T ƒ1` œ1l rnd1x ¶1„ Ã1� strnmov1œ my_end1¨ str2int1´ Ö1À æ1Ì ø1Ø my_error1ä 1ð 1ü '2 32 F2  X2, f28 t2D �2P Ž2\ ž2h ®2t ¾2€ Ê2Œ ×2˜ casedn2¤ caseup2° my_write2¼ ä2È õ2Ô 2à int2str2ì 2ø my_setwd3 my_getwd3 (3 :3( L34 ^3@ o3L ~3X �3d bchange3p ™3| ¥3ˆ fn_ext3” ¶3  get_type3¬ Å3¸ Ñ3Ä Ý3Ð ê3Ü _sanity3è _myfree3ô ÷4 4  4 4$ my_path40 strxmov4< *4H 94T E4` my_fopen4l my_ftell4x my_fseek4„ Q4� my_fread4œ ]4¨ l4´ z4À ‹4Ì ˜4Ø ¬4ä ¼4ð Ò4ü ã5 ô5  5  5, .58 <5D U5P c5\ q5h 5t �5€ ž5Œ ®5˜ º5¤ È5° Ô5¼ ã5È ï5Ô list_add5à ý5ì  5ø 6 ;6 Q6 d6( y64 ™6@ my_stat6L ±6X À6d Ø6p ò6| 6  6¬ 6¸ (6Ä 66Ð E6Ü Q6è ]6ô getopt7 p7  ƒ7 ‘7$ ©70 ¾7< my_fstat7H Ø7T my_dir7` ä7l strnlen7x strfill7„ my_ltoa7� my_itoa7œ strinstr7¨ strcont7´ ú7À 7Ì llstr7Ø 7ä /7ð ?7ü K8 Y8 f8  t8, _db_pop_88 �8D �8P œ8\ ª8h errbuff;0£ £ $(,048<@DHLPTX\`dhlptx|€bŒ�c”d˜eœf'H'L'P'T'd'h'p't'x'|'€'„'ˆ'Œ'�'”'˜'œ' '¤'¨'¬'°'´'¸'¼'È'Ì'Ð'Ô'Ø'Ü'à'ä'è'ì'ð'ô'ø'ü(((( (((*à+\+¨+¬+Ä+Ì+ä+è+ð+ô+ü,,, ,,, ,$,,,0,8,<,D,H,P,T,\,`,h,l,t,x,€,„,Œ,�,˜,œ,¤,¨,°,´,¼,À,È,Ì,Ô,Ø,à,ä,ì,ð,ø,ü------ -(-,-4-8-@-D-L-P-X-\-d-h-p-t-|-€-ˆ-Œ-”-˜- -¤-¬-°-¸-¼-Ä-È-Ð-Ô-Ü-à-è-ì-ô-ø... ....$.(.0.4.<.@.H.L.T.X.`.d.l.p.x.|.„.ˆ.�.”.œ. .¨.¬.´.¸.À.Ä.Ì.Ð.Ø.Ü.ä.è.ð.ô.ü/// /// /$/,/0/8/</D/H/P/T/\/`/h/l/t/x/€/„/Œ/�/˜/œ/¤/¨/°/´/¼/À/È/Ì/Ô/Ø/à/ä/ì/ð/ø/ü000000 0(0,04080@0D0L0P0X0\0d0h0p0t0|0€0ˆ0Œ0”0˜0 0¤0¬0°0¸0¼0Ä0È0Ð0Ô0Ü0à0è0ì0ô0ø111 1111$1(10141<1@1H1L1T1X1`1d1l1p1x1|1„1ˆ1�1”1œ1 1¨1¬1´1¸1À1Ä1Ì1Ð1Ø1Ü1ä1è1ð1ô1ü222 222 2$2,20282<2D2H2P2T2\2`2h2l2t2x2€2„2Œ2�2˜2œ2¤2¨2°2´2¼2À2È2Ì2Ô2Ø2à2ä2ì2ð2ø2ü333333 3(3,34383@3D3L3P3X3\3d3h3p3t3|3€3ˆ3Œ3”3˜3 3¤3¬3°3¸3¼3Ä3È3Ð3Ô3Ü3à3è3ì3ô3ø444 4444$4(40444<4@4H4L4T4X4`4d4l4p4x4|4„4ˆ4�4”4œ4 4¨4¬4´4¸4À4Ä4Ì4Ð4Ø4Ü4ä4è4ð4ô4ü555 555 5$5,50585<5D5H5P5T5\5`5h5l5t5x5€5„5Œ5�5˜5œ5¤5¨5°5´5¼5À5È5Ì5Ô5Ø5à5ä5ì5ð5ø5ü666666 6(6,64686@6D6L6P6X6\6d6h6p6t6|6€6ˆ6Œ6”6˜6 6¤6¬6°6¸6¼6Ä6È6Ð6Ô6Ü6à6è6ì6ô6ø777 7777$7(70747<7@7H7L7T7X7`7d7l7p7x7|7„7ˆ7�7”7œ7 7¨7¬7´7¸7À7Ä7Ì7Ð7Ø7Ü7ä7è7ð7ô7ü888 888 8$8,80888<8D8H8P8T8\8`8h8l8t8x8|8€8„8ˆ[8Œ\8�8”$8˜28œ]8 @8¤8¨^8¬'8°_8´`8¸a8¼g8À8Ä8È18Ì8Ðh8Ô,8Ø;8Ü:8à8äJ8èi8ì8ð8ôD8ø8ü=9T9%99 9j9k9L9l9 9$39(9,!90+9498N9<m9@n9D*9H9L9P9T49Xo9\9` 9d9hU9l9p9t9x&9|"9€/9„)9ˆp9ŒY9�Z9”q9˜r9œ 9 M9¤ 9¨9¬s9°9´I9¸K9¼<9À 9Ī9È9Ì9Ð9ÔE9Ø9Üb9à9ät9èu9ìX9ð9ôv9ø>9ü?:F::G: H::C::w: x:$y:(W:,z:0 :4R:8V:<:@:D:L:PO:T:XS:\ :`:dP:h’:l7:p”:t•:x–:|~:€:„„:ˆƒ:Œ‚:��:”�:˜Œ:œ|: —:¤}:¨#:¬:°:´B:¸A:¼-:ÀQ:Ä8:È:Ì:Ð:Ô:ؘ:Ü:à™:ä0:èš:ì›:ð:ô9:ø6:ü.;;œ;; �;;5;ž;(; Ÿ;$ ;(¡;,/usr/local/lib:/usr/lib:/liblibc.ashr.olibz.ashr.o getrusage setsockopt getsockopt ngetpeername_system_configuration fp_raise_xcp inet_addr inet_ntoagethostbynamegetservbyname uncompressfatal_error_handler_hook my_prognameerror_handler_hook my_errmsgdefault_charset_infocompiled_charsets ctype_latin1to_lower_latin1to_upper_latin1sort_order_latin1 my_file_infomy_stream_openedmy_file_openeddefault_directoriesdefaults_extra_fileclient_errorsmax_allowed_packetnet_buffer_lengthnet_read_timeoutmy_once_root_blockmy_once_extra charsets_dirhome_dir_buff my_umask_dir mysql_portmysql_unix_portnet_write_timeoutsf_malloc_quicksf_malloc_endhuncsf_malloc_prehuncmy_time_to_wait_for_lockmy_have_got_alarmpRememberRoot cNewCountsf_max_adresssf_min_adress soundex_map_my_sig_remember _my_signalsmy_disable_flush_key_blocksmy_disable_async_iomy_disable_lockingmy_default_record_cache_size lMaxMemory lCurMemorymysys_uses_cursesmy_dont_interruptmy_abort_hookkey_cache_initedmy_tmp_file_createdmy_use_symdir wild_many wild_prefixsafemalloc_mem_limit _db_process_mysql_thread_safemy_message_no_cursesmyodbc_remove_escapemysql_odbc_escape_string mysql_debugmysql_real_escape_stringmysql_escape_stringmysql_fetch_fieldmysql_fetch_lengthsmysql_fetch_rowmysql_field_seekmysql_row_seekmysql_data_seekmysql_free_resultmysql_optionsmysql_use_resultmysql_store_resultmysql_list_processesmysql_list_fieldsmysql_list_tablesmysql_list_dbsmysql_get_proto_infomysql_get_host_infomysql_get_client_infomysql_get_server_info mysql_stat mysql_ping mysql_killmysql_refreshmysql_dump_debug_infomysql_shutdownmysql_drop_dbmysql_create_dbmysql_real_querymysql_read_query_resultmysql_send_query mysql_querymysql_select_db mysql_closemysql_real_connectmysql_change_usermysql_connect mysql_initmysql_character_set_namemysql_thread_id mysql_info mysql_error mysql_errnomysql_insert_idmysql_affected_rowsmysql_field_countmysql_field_tellmysql_row_tellmysql_fetch_fieldsmysql_fetch_field_direct mysql_eofmysql_num_fieldsmysql_num_rows alloc_root strdup_rootload_defaults find_typemy_no_flags_free my_strdupfree_defaults free_rootinit_alloc_root net_clearnet_write_command my_net_read fn_format my_net_write net_flush vio_delete my_mallocinit_client_errs my_net_initvio_keepalivevio_poll_readget_charset_by_name get_charsetget_charsets_dirmy_multi_mallocnet_real_writevio_is_blockingvio_should_retry vio_blocking my_reallocmy_uncompress my_compress vio_write vio_fastsend vio_in_addrvio_peer_addr vio_errnovio_description vio_close my_inet_ntoahash_passwordcheck_scramblemake_password_from_saltget_salt_from_passwordmake_scrambled_password randominitget_tty_passwordfree_charsetsintern_filename my_memdup my_createmy_register_filename my_deletecreate_temp_fileconvert_dirname my_filename my_sortncmp my_sortcmp my_casecmpmy_strsortcmpmy_strcasecmpmy_strcasestr case_sort casedn_str caseup_strinit_glob_errs my_messagemy_printf_errortest_if_hard_pathunpack_filenamesystem_filenamecleanup_dirnameunpack_dirname pack_dirname dirname_part bmove_upp is_prefixdirname_length wild_compare make_type TERMINATE _my_strdup _my_memdup _myrealloc _mymalloc memdup_root strlength to_unix_path my_fclose my_fdopen my_fwrite my_load_path dynstr_freedynstr_realloc dynstr_setdynstr_append_memdynstr_appendinit_dynamic_stringprint_defaultsinsert_dynamicinit_dynamic_arraydelete_dynamicmy_compress_alloc freeze_sizedelete_dynamic_element get_dynamic set_dynamic pop_dynamicalloc_dynamic my_once_freemy_once_alloc list_walk list_length list_free list_reverse list_cons list_delete_print_csinfolist_charsetsset_default_charset_by_nameset_default_charsetget_charset_nameget_charset_numberfind_compiled_charset_by_namefind_compiled_charset int10_to_strcompiled_charset_namecompiled_charset_number hash_update hash_delete hash_insert hash_next hash_search hash_element hash_free hash_init_getopt_internalgetopt_long_only getopt_longset_changeable_varvalset_changeable_varset_all_changeable_vars my_direnddirectory_file_namelonglong10_to_str longlong2str_db_unlock_file_db_lock_file _db_dump_ _db_doprnt_ _db_pargs_ _db_return_ _db_enter_ _db_push_ _db_longjmp_ _db_setjmp_ _db_keyword_4ß™ˆÛ™ Û™HÛ™¤Û™¼Û™TÛ™Úâ� ™J$�h}™Ž&�˜Ÿ™Ð y™øg™c™8g™Hc™x y™ g™°c™Øg™èc™g™ c™Hg™Xc™¨g™¸c™Ìg™Üc™}™lÝ™€á™(� ~™6,�D÷™j,�|÷™¬I™¾â�ÜC™ì ƒ™C™8 ƒ™TC™¤ ~™üÝ™ g™ N(� T ~™ p?™ � ~™ Ê,� à÷™ X™ j,� x÷™ Ü ˆ™  �™  �™ 0 ˆ™ < ’™ X �™ t ’™ žâ� ì —™ œ™, —™< ’™œ ¡™¸ ’™&(�0 ~™^â�”õ™¤c™¶,�È÷™ø§™Ú� ’™0 ¦™D™Râ�XE™dG™pg™¨ç™ÄE™äç™ £™â� E™4G™J,�T ’™h ¦™tg™ªÚ�´ ’™Ì ¦™à™ìg™,�,÷™<£™Hg™ô m™Bâ�„ m™�I™úâ�÷™¼ «™Òâ�Ø÷™ð °™ «™ µ™(™6â�< º™P º™d º™„™æ(�ì ~™ü�™ ~™(K™äi™ú,�÷™<á™´ß™Ìß™N,�\÷™| i™†&�¨™°ñ™º’�Îâ�Ü ¿™ü º™ y™–�*â�8 º™\ ~™  r™Ü�"¤Ý™"¸g™"Äg™# â�#$�#dg™#tc™#ˆg™#˜c™#¬g™#¼c™#Ðg™#àc™#ôg™$c™$’,�$¤÷™$Ôi™$üi™%g™%Ö,�%è÷™& i™&6,�&D÷™&”g™(*â�(<™(P™(¼i™)jâ�)€÷™)îâ�*÷™*šâ�+:,�+H÷™,œ ƒ™,ô ƒ™/´ ƒ™0 ƒ™04g™0Dc™0Ðg™0Üg™0èg™0ôg™1g™1 g™1g™1$g™10g™1<g™1Hg™1Tg™1`g™1lg™1vâ�1Àg™2F(�2L ~™2vâ�2ˆg™2”g™2îâ�2ô º™3Fâ�3P b™3j–�3~â�3†,�3˜ Ä™3¸ ’™3Ì ¦™3ì�™4,÷™4\ ’™4t ¦™4š’�4¦â�4²,�4À ¦™4Ô Ä™4ô ’™5 ¦™5(�™52â�5P É™5ˆ Ι5¤ ’™5¼ ¦™5ä i™6 ’™60 ¦™6\M™6t�™6�÷™6°�™6Ðo™6ð÷™7T ¦™7p™7¸™8.z�8L3™8x ¦™8Œ7™8¢Ü�8à ¦™8ð+™9 ¦™9L ƒ™9d ƒ™9t ƒ™9¬Q™9Äc™9àc™:÷™:$÷™:4÷™:H÷™:\÷™:x÷™:ÂD�:öD�;H™;d™;ˆÁ™;°™;Äc™;àE™;ôG™<ˆ ~™<¬ ~™<òâ�=>â�=Jâ�=T÷™=xÁ™=’â�=˜÷™=äg™=ðg™=üg™> c™> c™>8c™>øg™?Pi™?Žâ�A  i™Aì ƒ™B i™BŒg™BÐg™Cèi™D r™DÜi™E@ eEbºG¼GX ƒ™G€ i™Gä i™H( ™H„ ™H–Â�HžÄ�H²Æ�H¶Ô�HÔ ™Hä ™I Y™IZ¾I‚ÀI²È�IÈ U™Ià Z™IêÎ�Iü _™JÒ�J _™J _™J, Z™J8 U™JjÊJ’ÌJºÐJæÔ�Jô r™KX -™KfÔ�Kt r™KÄ&™KþØ�Lû™L, ƒ™LJÜ�M` ƒ™M€÷™MÌI™N.Ô�ND r™NtI™N˜ pNÊÖNòÚ�NöØ�O¬2™Oô&™P<&™Q2™Q*Þ�Qh.™Q .™R’àR¸ YSt ƒ™SŒ ƒ™SÌ÷™SØo™Sîæ�Sø \™T™T™T,÷™T:æ�TLõ™T\!™T|  ™TŽÜ�U, 2™UˆŸ™U¢È�U´ ™UØ 2™Uð™VXß™Vp÷™V€™V�³™V¨™Vø™Wpß™WŒ³™W¤÷™W´ ™XÈ  ™Y™YÈ�Y( ™Y8™Y~æ�Y� ¥™Yœq™Y®È�Y¼ _™YÌ _™YÚ�Yê �YîÈ�Z ÷™Zo™Z4 \™Z@™ZX™Zh _™ZŒ ¥™Z–È�Z¤ _™ZÀ Z™ZÐ _™Zô ¥™[DÝ™[´á™[Îæ�[Ü b™[üß™\l=™\ˆ 2™\žæ�\È=™\ä 2™\î �]æ�]Xµ™]–È�]  ™]°q™]æÈ�]ð ™]þ�^ �^¤ß™^Ø i™_ b™_D i™_t©™_� ª™_¼ ª™_ì ¥™_ø ™`È�` ™` ™`l™`ä K™a�™bäbÀ \bºf(s™fT™f`o™ftK™fˆI™f˜ 2™fºü�fØ ƒ™fè ƒ™gP™gh™gˆ m™gœ÷™g¬™g¸÷™gÜ i™h n™h ™h~è�h˜ 2™h¬™hÈ A™hØ F™iP÷™ids™it \™iÀs™iä ƒ™j÷™j|™jÔ K™jø ™kð�k÷™kBè�k| P™kð÷™l6ô�l@#™lVô�lX÷™lÔ P™lì÷™m( P™n÷™nl ƒ™nü ƒ™o@ m™oT m™ot‘™oˆ m™oè K™p#™p$#™p8 ƒ™pd P™pŒ ƒ™p¨‡™pÆè�pà ƒ™q P™qH÷™ql P™qœ÷™q¬=™qÀ ƒ™qÜ÷™rjêr’ìrºîsJòsžè�sÜ 2™t^ö�t` 7™trÂ�tzÄ�t” ™tÂô�tÔ™uRô�ux™uœ <™u¶Â�uºÄ�uÌ ™uð™vô�v ™vRøvzúw‘™w i™w, m™w@ i™wÊþwòxì x™xü ’™yÄ�y3™y( ’™y@ ™yN �yf�yˆg™yè }™yø ’™z Ä�z ’™z( ™zJ �zb�zz�z°c™{ ‚™{6 �{dc™{n�{Š �{ÂÄ�{Ð ’™{ÞÄ�| ™|:|b|’�|¢�|Â�|â } }2}~�}Ð÷™~^Ü�x™� y™€ ÷™€J€r€ày™�\ m™�¤g™‚ Y™‚@ i™‚´2™‚Èy™ƒ Y™ƒ< i™ƒìy™„Ô i™…(2™…|i™†i™†( ™†Dg™†nÂ�†vÄ�†� ™†Â†ê‡ b‡"ºˆR"ˆÂ*‰…™‰p‹™‰„™‰´…™‰Ì‡™‰à™Š‡™‹€‡™‹ÆD�Œy™Œ´ i™� i™ŽH m™ŽÜ•™�t…™�Äi™� i™�—™�܉™�𙑠…™‘8‡™‘L™‘p‡™‘Ôg™‘ð‡™”€…™”˜‡™”¤…™”À‹™”Ü‹™• ‡™•`g™•žJ�•¸i™•êD�–L�–du™–tƒ™–®.�—4 Ó™—ú.�˜÷™˜4 Ø™˜dÿ™˜¸ ’™™8 Ý™™T â™™¤ ’™š8 癚ð �™›0 ì™›t ’™›� ñ™›ìg™œHi™œv.�œŒ ¦™œœ �™œÒ0œú2�4 ¹™�D÷™�r4�š6�Â8�ê:ž<ž:>žb@žŠBžØ2™žèi™Ÿ ¯™Ÿ4g™Ÿpg™Ÿìi™ $ ´™ 8g™ h k™ tg™¡0 k™¡<g™¡rF¡šH¡ÂN¡êP¢R¢:T¢x ♢ˆ ’™¢šÄ�¢¨3™¢´ ’™¢Ì ™¢Þ�¢øg™£�£r�£˜c™£¦�£º�£âÄ�£ð ’™£þÄ�¤ ™¤RV�¤d ™¤¢X¤ð ’™¥ ñ™¥ ’™¥4 ’™¥BÄ�¥^Ä�¥x3™¥� ™¥¨3™¥À ™¦2Z¦Z\¦‚^¦ª`¦êÜ�§X_™§ªÈ�§º�§¾ �§Òb�§ÖÚ�§Ü ¦™§êb�§ðc™¨ û™¨f�¨8&™¨`&™© ™©/™©&Œ�©bŒ�©‚è�©–f�©œ º™©²Ž�©´A™©Ä º™©ÞV�©è º™ª��ª†Ü�¬| ’™¬ì.™­X ’™­Œ ’™­Âd­öh�® ª™® ª™®0 ª™®H ª™®` ª™®  ª™®Ì ª™¯h�¯8 ª™¯H ª™¯d ª™¯Ôc™¯âh�¯èc™°( ƒ™°< ¾™°h ¾™°¾l�°è·™±.l�±X¹™±¦h�²,Ñ™²@ m™²L ƒ™²\Ñ™²tÑ™²ŒÑ™²¤Ñ™²¼Ñ™²Ø ƒ™²ì i™³ i™³ i™³4 i™³L i™³Vl�³`³™³À b™´¼!™µL™µ–l�µ®h�µÀ™¶, Ù¶Šx�¶Žl�¶Èµ™·Jh�·P÷™·d!™·˜™·Èµ™¸ y™¸Ñ™¸4 ƒ™¸HÑ™¸h i™¸€³™¸¸™¸ÐÑ™¸ð i™¹ ©™¹JÜ�¹À  ™ºÂh�» b™»fz�»nh�»�™» ™»¸=™»Ü™¼™¼o™¼™¼|e™¼’n�¼¢h�¼¬c™¼¼c™¼âl�¼þh�½0Û™½Lc™½\c™½‚l�½Âl�¾$c™¾4[™¾rl�¾€©™¾ÖÜ�¿Bh�¿H÷™¿` ™¿¾Ü�À*h�À0÷™ÀLG™Àd ™À¸³™ÀÒl�Á$µ™Á>l�Á�g™Â2™Â$y™¤ ƒ™ÂÈ2™Âèy™Ã4 i™ÃØ2™Ãìy™Ä0 i™ÄŒ ƒ™Å ƒ™Å 2™Å<i™Å„ i™ÅÊjÅön�Æ"p�ÆJn�Æt b™ÆÚn�Ç b™Çbn�Ƕr�ÇØ ™È&r�È’t�ȸ ™ÈÊÂ�ÈÒÄ�Èì ™ÉRvÉŒ b™ÉÀ Ò™Ê$i™Ê< ×™ÊnÂ�ÊrÄ�Ê„g™Ê–Ä�ʨ ™Ëg™Ëp ܙˌi™ˤ™˲‚�Ëè á™ÌH÷™Ì`÷™̈ á™ÌÔy™Í@‘™ÍP æ™Íjˆ�Íx ë™ÍŠÂ�Í’Ä�ͤ æ™ÍÄ ™Î‚�Î÷™Îj|Î’~κ€Îâ„Ï †Ï2ŠÏZ,�Ï^Ø�Ïz”Ï¢˜ÏÊšÏòœаi™Ñvž�Ñ€*™Òž�Òà I™Òì T™Ó.ž�Ó8 I™Ó@ T™Ônž�Ô„ I™Ô� T™Ôºž�ÔÄ I™ÔÌ T™ÕBž�ÕX ¦™Ù2ž�ÙD ¦™Ùzž�Ù *™Ù¸*™Úž�Ú*™Ú,*™ÚR �Ú¦¢�ÚÒ �Û&¢�ÛV �Û®¢�Ü �Üf¢�Ü� TÜ’¤Üš¦Ý ™ÝN¨ÝŠª�ÝŒ ö™Ý  ™ݰc™ÝÞ¬Þ0 ™Þ>V�ÞP ™Þh¥™Þ¬ ™ÞÂÂ�ÞÊÄ�Þè ™ß®ßr°�ß„ ™ߎ°�ß”÷™߬ º™ßÄ ƒ™ßÚÄ�ßä ’™à÷™ào™à(÷™à4 #™àP¥™ànÄ�à|�™àŽ´�àβá Ü�ášÜ�â2Ü�â¶Ü�ã6Ü�ã¶Ü�äŠÜ�äÂÜ�å.Ü�å¢Ü�åâÜ�æVÄ�æl ì™æ” ’™æÀ*™æÔ3™æè ™æô (™ç (™ç< ’™çT ì™çŒ3™ç¤ ™è¶èPs™èd K™èx™èƸ�èʺ�èμ�ë¾�ëVÈ�ëZÀ�ël ™ë„ ™ë� U™ëîÈ�ëòÀ�ì ™ì ™ì( U™ìzÈ�ì~À�ìŒ ™ì˜ U™ìÂÈ�ìÆÀ�ìÔ ™ìà U™íÂ�íÄ�í"È�í&À�í4 ™í@ U™í’Æ�íÆÀ�íÌ ™íØ U™íâÈ�íöÊ�íúÀ�î ™î U™îÀ�î"¾�îD ™îP U™îªÌ�î®À�îÈ ™îÔ U™ï, ƒ™ï\ i™ïÈ i™ïþÈ�ðÆ�ðŠÈ�ðŽÀ�𜠙ð¬ Z™ð¸ U™ðòÎ�ñ:À�ñZ¾�ñ~È�ñ� ™ñœ U™ñÖÈ�ñîÊ�ñòÆ�ò Y™ò< ™òÞÎ�òþÀ�ó:¾�óVÈ�óh ™ót U™óÌ i™ôjÎ�ôªÊ�ô®Ð�ôÚ¾�ôÞÒ�ôô ™õÆ�õÔ�õ*Â�õ.À�õ2Ä�õL ¦™õ` ™õnÌ�õ� ¦™õ¤ ™õ´ ™õÞÈ�öBÌ�öfÆ�ö� d™öšÂ�öºÄ�÷&Ô÷VÖ�÷l º™÷” 2™÷¼ ™÷Ô™÷ä s™ø 2™øls™ø’Ö�ø˜ º™ø°s™øÈA™øÔ™øîô�øð#™ùô�ù ƒ™ù ƒ™ù*ô�ù0‡™ùRÖ�ùX º™ùl º™ùˆA™ù”™ùÀ÷™ùöØú@ ‡™úx Œ™ú¤ ‡™úô ‡™ûÄ�û ‘™û0 ’™û\ ’™û˜ ‘™û¨ –™ûÌ3™ûØ ’™ûð ™üˆ ›™ü¨ –™ü¼3™üÈ ’™üà ™üø3™ý ’™ý ™ý$ ’™ý8 ’™ýFÄ�ýP –™ýbÄ�ýl –™ýæÚþÜþ6Þþ^àþ†âþä™ÿ÷™ÿ*ä�ÿ,=™ÿT ƒ™ÿl#™ÿ„ \™ÿ”÷™ÿ´™ÿÄ÷™ r™àg™ìg™g™ìi™ r™4 r™  r™ð¹™ P™NÜ�  r™Ð r™ô r™° r™Ô r™Ô r™ø r™ D r™ h r™ `¯™ x r™ ȱ™ 8 r™ \ r™ œ r™ À r™à r™ r™P r™x©™ðµ™Jæ�bè�žê�¢ì�¦î�Ð º™†î�Šì�âì�êð�2î�&ê�0 b™ È™ ƒ™†ô�šÈ�¢ê�´ ™Ä ƒ™"ô�6È�Zê�d ™zê�€ ™� ƒ™Ð ƒ™"ô�2È�:ê�P ™` ƒ™Öô�êÈ� ê� ™&ê�>ê�D ™Vê�²ô�ÆÈ�Úê�ä ™îö�þê� ™ö�Šô�šÈ�žê�° ™ºö�~ò´›™ì›™"ø�8 ¦™� 2™¢È�¦ø�° ™ÎÜ�˜¹™æÈ�êø�ø ™"È�&ø�8 ™\ Í™l™þÈ� ø�  ™ \2™!ú!T ð™!–ü#²Þ�#Ì õ™$Þ�$8&™$|&™%êÞ�& õ™&VÞ�&l.™&¤.™'&þ'`�™'®�(šÈ�(ž�(¢�(¼ ™(È U™(Ô ™)�)&�), U™)¼ b™*�*B�*\ Z™*x Z™+ ™+ ™+z�+¢�+¨ ú™+²�+À ™+Þ�+â�+ð ™,�,�,�,$ ™,>�,N�,\ ™,v�,z�,ˆ ™,¢�,¦�,´ ™,ø K™-D ™-V�-’�-Þ�.*�.RÈ�.ÂÈ�.ä x™.ö�.ú�.þ�/ ™/ ÿ™/x û™/˜&™/Ò�0�0j�0| ‚™0Ž�0’�0¤ ™0° ÿ™0Ú �0Þ�12�1@÷™1J�1T b™1jÈ�1n�1¬ ‚™1¾�1ÂÈ�1Ô ™1à ÿ™1ì U™2 �2X ƒ™2p _™3Š�3ª�3î�4&�4*�4@ ¦™4N�4R�4` ™4j�4€ ¦™4� _™4¢Þ�4Ä Z™4Ü Z™4ð Z™5 Z™5, Z™5~�5À ’™5Ú�5ö�6 ™6�6 ™6*�68 ™6L ™6\ Z™6l ’™6²�6Ö�7 ’™7�7�7J�7N�7V�7d ™7~ �7Š�7œ ™7Æ�7Ê�7Ø ™8 ’™8Z�8� ’™8ž�8®�9 �9* �96�9H ™9d ™9p U™9š�9ž�9¬ ™9¼ ’™9þ�:.�:6 �:ˆ ™:¢�:Ö�:òÈ�;6�;N�;j�;n�;r�;~�<8 y™> y™>t ™>¢�>â�?�?6�?–�?Þ@ @@ _@BºAJg g ý$ý(ý,ý0ý4ý8ý<ý@ýDýHýLýPýTýXý\ý`ýdýhýlýpýtýxý|ý€¿Œ»�ǔŘÜÁ'H�'L�'P�'T�'d·'h¹'p·'t·'x·'|·'€·'„·'ˆ·'Œ·'�·'”·'˜·'œ·' ·'¤·'¨·'¬·'°·'´·'¸·'¼·'Èó'Ìó'Ðó'Ôó'Øó'Üó'àó'äó'èó'ìó'ðó'ôó'øó'üó(ó(ó(ó( ó(ó(ó(ó*à+\8+¨ +¬ +Ä +Ì +äE+è¸+ðc+ô¸+ü3,¸,×, ¸,G,¸, I,$¸,,K,0¸,8M,<¸,DO,H¸,PQ,T¸,\S,`¸,hU,l¸,tW,x¸,€Y,„¸,Œ[,�¸,˜],œ¸,¤_,¨¸,°a,´¸,¼c,À¸,Èe,̸,Ôg,ظ,ài,ä¸,ìk,ð¸,øm,ü¸-o-¸-q-¸-s- ¸-(u-,¸-4w-8¸-@y-D¸-L{-P¸-X}-\¸-d-h¸-p�-t¸-|ƒ-€¸-ˆ…-Œ¸-”‡-˜¸- ‰-¤¸-¬‹-°¸-¸�-¼¸-Ä�-ȸ-Б-Ô¸-Ü“-à¸-è•-ì¸-ô—-ø¸.™.¸. ›.¸.�.¸.$Ÿ.(¸.0¡.4¸.<£.@¸.H¥.L¸.T§.X¸.`©.d¸.l«.p¸.x­.|¸.„¯.ˆ¸.�±.”¸.œ³. ¸.¨µ.¬¸.´ß.¸¸.ÀÛ.ĸ.Ì.и.Ø}.ܸ.äŸ.è¸.ðg.ô¸.üc/¸/}/ ¸/Ý/¸/ á/$¸/,÷/0¸/8I/<¸/DC/H¸/P?/T¸/\/`¸/hõ/l¸/t§/x¸/€E/„¸/ŒG/�¸/˜ç/œ¸/¤£/¨¸/°�/´¸/¼K/À¸/Èi/̸/Ô/ظ/àñ/ä¸/ì�/ð¸/øM/ü¸0�0¸0o0¸00 ¸0(30,¸04708¸0@+0D¸0LQ0P¸0XÁ0\¸0dA0h¸0p…0t¸0|‹0€¸0ˆ0Œ¸0”‡0˜¸0 y0¤¸0¬•0°¸0¸—0¼¸0ĉ0ȸ0Ðu0Ô¸0܃0à¸0èq0ì¸0ôs0ø¸1w1¸1 y1¸1{1¸1$}1(¸10ÿ14¸1<½1@¸1H¿1L¸1TÃ1X¸1`Å1d¸1lÇ1p¸1xÉ1|¸1„Ë1ˆ¸1�å1”¸1œ 1 ¸1¨1¬¸1´_1¸¸1À/1ĸ1ÌA1и1Øe1ܸ1ä 1è¸1ðƒ1ô¸1ü¥2¸2�2 ¸2—2¸2 o2$¸2,320¸28µ2<¸2D·2H¸2P¹2T¸2\»2`¸2h½2l¸2t¿2x¸2€Á2„¸2ŒÃ2�¸2˜Å2œ¸2¤Ç2¨¸2°É2´¸2¼ñ2À¸2Èû2̸2Ô 2ظ2à 2ä¸2ìI2ð¸2ø2ü¸3!3¸3#3¸3C3 ¸3(E3,¸34G38¸3@I3D¸3LK3P¸3Xs3\¸3d‘3h¸3p‡3t¸3|=3€¸3ˆq3Œ¸3”�3˜¸3 ‹3¤¸3¬›3°¸3¸�3¼¸3ij3ȸ3е3Ô¸3Ü·3à¸3è¹3ì¸3ô»3ø¸4½4¸4 ¿4¸4Ù4¸4$ó4(¸4044¸4<4@¸4H4L¸4T4X¸4`4d¸4l!4p¸4x/4|¸4„14ˆ¸4�34”¸4œ54 ¸4¨E4¬¸4´[4¸¸4À]4ĸ4Ì_4и4Øa4ܸ4äc4è¸4ðe4ô¸4ü{5¸5³5 ¸5µ5¸5 ©5$¸5,“50¸58¥5<¸5D§5H¸5P«5T¸5\­5`¸5h¯5l¸5t±5x¸5€Ï5„¸5ŒÑ5�¸5˜Ý5œ¸5¤ß5¨¸5°á5´¸5¼ã5À¸5Èå5̸5Ôç5ظ5àé5ä¸5ì 5ð¸5ø-5ü¸616¸656¸696 ¸6(;6,¸64·68¸6@¹6D¸6LÛ6P¸6XG6\¸6d³6h¸6pµ6t¸6|k6€¸6ˆc6Œ¸6”e6˜¸6 m6¤¸6¬o6°¸6¸q6¼¸6Äs6ȸ6Ðu6Ô¸6Üw6à¸6èy6ì¸6ô›6ø¸7�7¸7 µ7¸7·7¸7$Ã7(¸70Å74¸7<Ç7@¸7HÙ7L¸7TÝ7X¸7`ß7d¸7lá7p¸7x)7|¸7„37ˆ¸7�K7”¸7œM7 ¸7¨i7¬¸7´s7¸¸7À›7ĸ7Ì�7и7Ø©7ܸ7äÿ7è¸7ð 7ô¸7ü 8¸8 8 ¸8 8¸8 8$¸8, 80¸88 8<¸8D 8H¸8P 8T¸8\ 8`¸8h 8l¸8t"8x>8|:8€<8„8ˆ[8ŒQ8�48”N8˜j8œW8 †8¤e8¨S8¬T8°8´8¸Ï8¼S8À88Ä·8Èh8Ì�8ÐY8Ô^8Ø|8Üz8àM8äš8èU8ì%8ð8ôŽ8ø÷8ü€9®9P969 5919M9ž9O9 @9$l9(¡9,H90\94D98¢9<…9@‡9DZ9H9L¹9P»9Tn9X÷9\‘9`9d 9h°9l9p 9t9xR9|J9€d9„X9ˆO9Œ9�9”a9˜c9œ9  9¤9¨9¬E9°B9´˜9¸œ9¼~9ÀF9Ä9È9Ì9Ð=9Ô�9ØA9Ü¿9à»9ä'9è%9ì¶9ð?9ôG9ø‚9ü„:’:ã:”: –:å:Œ::/: C:$½:(´:,¿:0:4ª:8²:<Í:@ O:D Q:L V:P¤:Tç:X¬:\:`™:d¦:hK:lt:p�:t‘:x“:|:€Á:„#:ˆ!:Œ:�:”=:˜;:œ: Ñ:¤:¨L:¬:°:´Š:¸ˆ:¼`:À¨:Äv:ÈG:Ì{:Ð}:ÔŸ:Ø£:Ü¡:à§:äf:è©:ì«:ðÉ:ôx:ør:üb; ; ; ; ; ;p; ;V; -;$ 3;( 7;,Õcompress  errnoaccess chdir close getpid  poll select unlink socket connect shutdown  $ / <__mulh1.__mulh1__divus2€.__divus2€__quoss3.__quoss3__quous3€.__quous3€_iob_Errno exit free malloc strlen fopen64 open64 realloc getenv atoi write memset fflush fclose fcntl vsprintf vfprintf sprintf printf fprintf strchr fwrite __divu64 read strncmp strrchr fputc fgets signal perror memchr sleep fread atol endpwent getpwnam getpwuid lstat64 fstat64 stat64 fputs fseeko64 ftello64 qsort getcwd strstr opendir readdir closedir geteuid memcmp getlogin fdopen time puts R mkstemp ferror _ getpass realpath i s � strtol TOC8tk<8tkstrlen8xkfree8|kmalloc8€kerrno8„kmy_errno8ˆk�8Œk_iob8�kfflush8”kfputc8˜k¨8œkfputs8 k8¤k´8¨kvsprintf8¬kÇ8°kgloberrs8´kÑ8¸k_dig_vec8¼kexit8Àk8Äkstrrchr8Èk8Ìkhome_dir8Ðkstrchr8Ôkgetpwnam8Økendpwent8Ük8àkmemcmp8äkcurr_dir8èk8ìkchdir8ðkgetcwd8ôk8øklstat648ükrealpath9kfclose9k_Errno9k9 kæ9kó9kfdopen9k9kfopen649 kfgets9$k9(katoi9,kfprintf90krealloc94kputs98k9<k'9@kprintf9Dk9Hk_$STATIC9Lk;9Pksignal9TkL9Xk9\kpoll9`k/9dki9hkshutdown9lkclose9pk9tkfcntl9xkwrite9|kread9€ksprintf9„kZ9ˆkcompress9Œk9�km9”k9˜kconnect9œktime9 kselect9¤k$9¨kmy_umask9¬kopen649°kgeteuid9´kgetlogin9¸kgetpwuid9¼kgetenv9Àkerrbuff9Äk9Èk9Ìk9Ðkstrstr9Ôk�9Øk�9Ük9àk¯9äkÂ9èkstrtol9ìk_$STATIC9ðkÐ9ôkfstat649økstat649ükopendir:k:kreaddir:kclosedir: kÝ:kqsort:k_$STATIC:kè:kö: k:$k�:(k:,ksocket:0k_:4ks:8k:<k:@k_$STATIC:Dk:Hk*:LkR:Pk:Tkgetpass:Xkunlink:\k:`kmkstemp:dk8:hksleep:lkL:pkV:tkwild_one:xkb:|k:€kt:„k‚:ˆk�:Œkš:�k¨:”k³:˜k¾:œkÎ: kã:¤kmemset:¨k:¬kaccess:°kftello64:´kfseeko64:¸kfwrite:¼kferror:Àkfread:Äk:Èkõ:Ìk:Ðk:Ôkoptind:Øk�:Ükoptarg:àkstrncmp:äkopterr:èkoptopt:ìk:ðkatol:ôkmemchr:øk__divu64:ük_$STATIC;k;k;k_db_fp_; kgetpid;kperror;k_db_pfp_;kvfprintf;k_no_db_; k_db_on_;$k_db_pon_;(k;,k ÿþùg.file3ÿþglibmysql.c!;kApc krÐ kŽD kž¸ k®Ü k¹ @ kÎ T kà $ kï ° kù k k$X k9Œ kJÌ kW¨ kg° ks\ k�ˆ kŒ€ k�� °¨ Æ àè íü  @ /€ D D U!< g!\ w!„ ˆ"  ›"ü ª$L ¼%˜ Ð'( æ(  ù)`  )ä *h 2*€ G*˜ ^*´ u*Ì �+x �+œ ™+ø ¨,< ¿,` Ï,„ Þ,Ü ï-4 -œ /x ,/œ 9/ì J0x W1ø k=  ~>œ �?( ™?ä ³@ Ä@ Ð@0 Ý@H ê@` û@€ @  #@¸ 5@Ð E@è YA sA  ~A8 �AP Eˆkt_$STATIC'`kd;+ük  *D*Hž+ä  ±,  Ç,   á,,  î,8  ,D  ,P  0,\  E,h  V,t  h,€  x,Œ  ‰,˜  œ,¤  «,°  ½,¼  Ñ,È  ç,Ô  ú,à   ,ì  ,ø  3-  H-  _-  v-(  ‚-4  Ž-@  š-L  ©-X  À-d  Ð-p  ß-|  ð-ˆ  -”  -   --¬  :-¸  K-Ä  X-Ð  l-Ü  -è  Ž-ô  š.  ´.   Å.  Ñ.$  Þ.0  ë.<  ü.H  .T  $.`  6.l  F.x  Z.„  t.�  .œ  ‘.¨  .filegÿþgnet.c ;ˆèk Àºˆè k7È‹À k7ÕŒ€ k7å�H 7ò�< 7 ’8 7 “, 7 #“ü 7 .”h 7.net_end•H 7 9•” 7Z(æ/P  ó0d  /D  /€  $/Œ  //8  net_end/¼  :/ø  m( ($ F*¸.fileµÿþgviolite.c X;–¨k( r–¨ kk }— k Œ—œ k ™—Ð k.vio_fd˜” k ¨˜¬ k ³˜ä k ½˜ü k Ι k Ù™˜ k ë™ì k úšh k š€ k š  k '›  k 2›X k <›¼ k.vio_newœ$ kN°kB ~0  �0è  š0ô  vio_fd0Ð  ©1  vio_type1   ¾1  Ï1$  Ú0ˆ  ì0  û0Ü  0p  0”  (0Ä  vio_read0|  =/°  vio_new/ì  .fileßÿþgpassword.c H;Ñ`kð bÑ` k¹ rѸ ¹ �Ò@ ¹ ‘ÓÀ ¹ ›Õ< ¹ ´Õ€ ¹ ÌÙ ¹.rndÙl ¹ åÙð ¹Qpk0 s1<  ‚1H  scramble0X  œ1T  µ1`  Í1l  rnd1x  æ1„  .fileëÿþgget_password.c ñ;Ýtkh Ýt ãQÀk 1�  .fileùÿþgerrmsg.c ;ÏXk  7ÏX ïKHkh 8/à  L'ÈT.file ÿþgmy_init.c I;¦Ðkp c¦Ð ký.my_end§„ ý.my_init©\ ýNøkF_$STATIC(<kmy_end1¨  my_init/Ô  .file]ÿþgmy_static.c o;QØk¾*¼ã*Àb*Ä ‰*È ¢*Ìš*Ð�*Ô‚*Øt*ÜÂ(0¯(, ´*à À*èP Ñ+8è(@æ@  Ý+< ù+@ +D +H³+L¨+P =+T O+Xö*@my_umask(( a+\ o+`8+dó'@'D�´ curr_dir@¨home_dir8my_errno.filesÿþgmy_malloc.c €;G@k šG@ a ¥G° a °H a ÂHX a ›.ü  ¦1Ø  ±.ð  Ã/È  .file}ÿþgmy_realloc.c Í;…Økè ç…Ø w è0   .file‡ÿþgmy_create.c ó;Þk� Þ � 1ð  .file‘ÿþgmy_delete.c ;Þ”kˆ 2Þ” ‹ 32  .file�ÿþgmf_tempfile.c =;ßDkˆ WßD •Qøk X2  .file¯ÿþgmy_open.c i;¢`k@ ƒ¢` ¡ �£@ ¡.my_open¤H ¡my_close/¤  Ž1ü  my_open/t  .fileáÿþgmf_casecnv.c £;àôk( ½àô ³ Êá� ³ Öâ  ³ ââ´ ³ ñã4 ³ã´ ³ä€ ³äÀ ³&å, ³.casednå˜ ³.caseupåØ ³ ¾28  Ë2D  ×2P  ã2\  ò2h  2t  2€  2Œ  '2˜  casedn2¤  caseup2°  .fileëÿþgmy_read.c2;¤Èkh.my_read¤È åmy_read/˜  .fileõÿþgmy_write.cL;ækðfæ ïmy_write2¼  .fileÿþgerrors.cp;Nðk ŠNð ùAxkþ‹2È  globerrs `.fileÿþgmy_error.cš;Jàk¸´Jà ÀK ÑKœ µ2Ô  Á2à  my_error1ä  Çerrbuff;0.file-ÿþgmy_getwd.cÛ;spkàõsp t$ uH Kkö2ø  my_setwd3  my_getwd3  .file9ÿþgmy_div.c;|ˆkX6|ˆ 1K(k72,  .file]ÿþgmf_pack.cC;hXk ]hX k=ki, =|i¤ =�jd =žj¬ =¯nL =¿oÀ =Kkl1Ì  }3  Ž3(  Ÿ34  °3@  À3L  Í+h.fileiÿþgmy_messnc.cÛ;I¨kÀõI¨ aApkö+ð  .file{ÿþgmf_dirname.c ;`Xkp%`X m6`Ì mFaT m&2   73ˆ  G3X  .file…ÿþgmf_fn_ext.cT;è4kp.fn_extè4 fn_ext3”  .file•ÿþgmf_wcomp.cn;è¤kpˆè¤ ‰‰3   L+lV+pwild_one+t.file©ÿþgtypelib.c–;}Xkð°}X ™º}” ™Å}ø ™K@kget_type3¬  »3¸  Æ.ä  .fileÓÿþgsafemalloc.cÐ;ëk êë k­÷ìX k­í� ­ ï  ­ïŒ ­._sanityïø ­._myfreeðì ­%ò” ­1ôd ­Rkœ3Ä  3Ð  3Ü  _sanity3è  _myfree3ô  &4  24   Î+x.fileíÿþgmy_alloc.c<;ApkÈVAp ×cAÐ ×pBD ×{CT ׇD” ×W4  d.À  q/  |.´  ˆ/   .fileýÿþgmf_format.c˜;e(k0²e( ñ½eô ñK k³4$  ¾/h  .file ÿþgmf_path.cÈ;÷Lk¨â÷L k.my_pathøH T¸k3my_path40  .fileÿþgmf_unixpath.cõ;úkú 4H  .file)ÿþgmy_fopen.c;xk 7x kCxÔ Ny¸ Yzì D4T  O4`  my_fopen4l  .file?ÿþgmy_fstream.cc;ú4k°}ú4 -‡úh -‘úÌ -œü` -my_ftell4x  my_fseek4„  ’4�  my_fread4œ  .fileKÿþgmf_loadpath.c¦;þ¬kHÀþ¬ CTðkÁ4¨  .fileUÿþgmulalloc.cÎ;ÐkHèÐ Oé0L  .filesÿþgstring.cù;ÁpkXÁp Y ÁÐ Y0Âx Y<Ô YOÄt Y^ÄÄ Y4´  !4À  14Ì  =4Ø  P4ä  _4ð  .file�ÿþgdefault.cs;S(k 0�S( kw¢Yp w²[  wÁ[l wHk £4ü  'H''\³/  Â.Ì  .fileŸÿþgmy_compress.cÐ;ž°kÀêž° ‘ýŸÀ ‘  ¤ ‘ë5,  þ0¬   0¸  .fileÉÿþgarray.c;€˜k@3€˜ £@�  £X�„ £h�ì £u‚h £‚ƒl £�ƒ° £ž„d £®… £458  A5D  Y5   i5P  v5\  ƒ5h  �5t  Ÿ5  ¯5  .file×ÿþgmy_once.cÂ;ǰk Üǰ ÍêÈ  ÍÝ5€  ë5Œ  .fileùÿþglist.cù;ÿôkèÿô Ût Û+¸ Û6t ÛDÌ ÛOH Û\Œ Û5˜  5¤  ,5°  75¼  E5È  P5Ô  list_add5à  .fileÿþgmy_net.cf;� kP€�  ý�10  .fileYÿþgcharset.cŽ;­èkˆ¨­è ·®ø ků¤ kÕ° kè°¸ k±( k±œ k)³� k?´ kM´p k`µ| kwµè kƒ¶€ kœ·( k°¹< kººˆ k˺à kÜ»d î¼H ý¾l  ¾¨ )¿ >¿� S¿è `À” rÁ P@k_$STATIC(4k�=0k©5ì  Ý0@  Ð(8ï5ø  þ1À   6  *0(  ?6  T04  a6  s6(  .file�ÿþghash.c†;Ük¸ Ü k].hashcmpl k]¯< k]à k]Ðô k]Ú, k]åd ]òT ]ÿ ¨ ]  Ø ]œ ]$Ô ]2  ]=¬ ]õ6ˆk  6”k  æ6|  ó6   6¬   6¸  6Ä  %6Ð  36Ü  >6è  .file¯ÿþggetopt.cH;”k èb” k“v„ k“€˜ k“ŠØ “.getoptX “Tøk_�=Pkoptind+€‹6ô  optarg+„opterr+ˆoptopt+Œgetopt7  .file½ÿþggetopt1.cœ;¤kp¶¤ ³ÈÜ ³·7   É7  .fileÑÿþggetvar.cÕ;køï Ál Á ¼ ÁVXk¯ð7$  70  7<  .fileñÿþgmy_lib.c3;ÉxkðMÉx kÕYÉ´ Õ.my_statÉè ÕcË Õ.my_dirËD ÕnÍü ÕQHk$Ý,k  my_fstat7H  my_stat6L  d7T  my_dir7`  o7l  .fileûÿþgstrmov.cƒ;OkX.strmovO õstrmov/,  .fileÿþgstrxmov.c�;dPkØ.strxmovdP ÿstrxmov4<  .fileÿþgstrnmov.c·;ràkh.strnmovrà  strnmov1œ  .fileÿþgstrmake.cÑ;b8kp.strmakeb8 strmake/\  .file#ÿþgstrend.cë;aÈkH.strendaÈ strend0  .file-ÿþgstrnlen.c;!4k`.strnlen!4 'strnlen7x  .file7ÿþgstrfill.c;!¼k8.strfill!¼ 1strfill7„  .fileAÿþgis_prefix.c9;wpkXSwp ;T3|  .fileYÿþgint2str.c^;Ohk(xOh E.int2strP¤ E.my_ltoaR E.my_itoaRL Ey6X  int2str2ì  _dig_vec%my_ltoa7�  my_itoa7œ  .filecÿþgstr2int.c†;ª@k€.str2intª@ ]str2int1´  .filemÿþgstrinstr.c ;!ôk¨º!ô gstrinstr7¨  .filewÿþgstrcont.cÄ;"œkh.strcont"œ qstrcont7´  .file�ÿþgstrcend.cÞ;ˆxkH.strcendˆx {strcend.Ø  .file‹ÿþgbchange.cø;vÐk .bchangevÐ …bchange3p  .file•ÿþgbmove_upp.c;v k0,v  �-3d  .file£ÿþglonglong2str.c7;#k Q# ™d$ü ™R7À  e7Ì  .file­ÿþgllstr.cr;'Lk@.llstr'L §llstr7Ø  .fileÑÿþgctype.cŒ;ÅðkÀ¦Åð ±½ÆD ±ÖÆÔ ±õÇ` ±Exk §6d  �ˆ€ .>¾6p  ×64  ö6@  Ñ€.file ?ÿþgdbug.cK;'ŒkP.Delay'Œ kÕe'  kÕt(x kÕ~(� kÕˆ) kÕ.InList)t kÕ.Indent*  kÕ”*à kÕž+l kÕ¨,à kÕ²-4 kÕ.DoTrace-ˆ kÕ¾.  kÕÉ.¸ kÕ.Clock/d kÕÔ/Ì kÕß0` kÕì1 kÕ.StrDup2H kÕú2œ kÕ3ˆ Õ3¨ Õ%3È Õ05x Õ=6° ÕI6Ð ÕV8T Õb9ø Õl:Ð Õw>  Õ…>à Õ’? ÕWk:_$STATIC+�k<+Ì_db_fp_+Ð_db_pfp_+Ô7ä  7ð  &7ü  18  >8  J8   _no_db_+ØW8,  _db_pop_88  _db_on_+Üm8D  _db_pon_+àx8P  †8\  “8h  .file Sÿþg ÜöÚPk@.truncÚP  C.nearestÚÐ  C.floorÛT  C.fabsÛØ  C.ceilÜ   CQ k_$STATIC*Pke% Xÿþ g0Ü�»*Q¨knoname [ÿþ g._fillR¸ostrcat.s ^ÿþ g.strcatbÀ�)strcpy.s aÿþ g.strcpy@@)strcmp.s dÿþ g.strcmp‡ 0)moveeq.s oÿþ g.bcopyE@×).ovbcopyE@ e._moveeqE` e.memcpyE` e.memmoveE` eptrgl.s vÿþ g._ptrglN˜k0._ptrglN˜ p.$PTRGLN˜ pglink.s {ÿþ g.atoi€Hk(.atoi€H wglink.s €ÿþ g.signalˆÀk(.signalˆÀ |glink.s …ÿþ g.strlenGk(.strlenG �glink.s Šÿþ g.connect¡Àk(.connect¡À †glink.s �ÿþ g.fcntlžk(.fcntlž ‹glink.s ”ÿþ g._Errno|`k(._Errno|` �glink.s ™ÿþ g.time¡èk(.time¡è •glink.s žÿþ g.select¢k(.select¢ šglink.s £ÿþ g;¢8k(;¢8 Ÿglink.s ¨ÿþ g.sprintfžˆk(.sprintfžˆ ¤glink.s ­ÿþ g.geteuid¦0k(.geteuid¦0 ©glink.s ²ÿþ gG¦Xk(G¦X ®glink.s ·ÿþ gQ¦€k(Q¦€ ³glink.s ¼ÿþ g.getenv¦¨k(.getenv¦¨ ¸glink.s Áÿþ g[Ïxk([Ïx ½glink.s Æÿþ g.socketÏ k(.socketÏ  Âglink.s Ëÿþ gjÏÈk(jÏÈ Çglink.s Ðÿþ guÏðk(uÏð Ìglink.s Õÿþ g.pollœÐk(.pollœÐ Ñglink.s Úÿþ g„œøk(„œø Öglink.s ßÿþ g’�˜k(’�˜ Ûglink.s äÿþ g.close�Àk(.close�À àglink.s éÿþ gœ�èk(œ�è åglink.s îÿþ g.writež8k(.writež8 êglink.s óÿþ g.readž`k(.readž` ïglink.s øÿþ g.getpassÝÜk(.getpassÝÜ ôglink.s ýÿþ g¨­Àk(¨­À ùglink.s ÿþ g.fprintf€pk(.fprintf€p þglink.s ÿþ g.exitR�k(.exitR� glink.s ÿþ g.freeIXk(.freeIX glink.s ÿþ g.mallocI€k(.mallocI€ glink.s ÿþ g.realloc†Àk(.realloc†À glink.s ÿþ g.open64¤ k(.open64¤  glink.s ÿþ g.unlinkßk(.unlinkß glink.s %ÿþ g.mkstempàÌk(.mkstempàÌ !glink.s *ÿþ g.sleepè k(.sleepè  &glink.s /ÿþ g³NÈk(³NÈ +glink.s 4ÿþ g.strchrrhk(.strchrrh 0glink.s 9ÿþ g.chdirvPk(.chdirvP 5glink.s >ÿþ g.getcwdvxk(.getcwdvx :glink.s Cÿþ g½r�k(½r� ?glink.s Hÿþ gÇr¸k(Çr¸ Dglink.s Mÿþ g.strrchrbk(.strrchrb Iglink.s Rÿþ g.memcmpsHk(.memcmpsH Nglink.s Wÿþ g.fflushJhk(.fflushJh Sglink.s \ÿþ g.fputcJ�k(.fputcJ� Xglink.s aÿþ g.fputsJ¸k(.fputsJ¸ ]glink.s fÿþ g.memset÷$k(.memset÷$ bglink.s kÿþ g.lstat64wÈk(.lstat64wÈ gglink.s pÿþ gÑwðk(Ñwð lglink.s uÿþ g.accessùôk(.accessùô qglink.s zÿþ g.fclose|8k(.fclose|8 vglink.s ÿþ g.fdopen|àk(.fdopen|à {glink.s „ÿþ g.fopen64}k(.fopen64} €glink.s ‰ÿþ gÛýäk(Ûýä …glink.s Žÿþ gåþ k(åþ  Šglink.s “ÿþ g.fwriteþ4k(.fwriteþ4 �glink.s ˜ÿþ g.ferrorþ\k(.ferrorþ\ ”glink.s �ÿþ g.freadþ„k(.freadþ„ ™glink.s ¢ÿþ g.fgets}0k(.fgets}0 žglink.s §ÿþ g.puts†èk(.puts†è £glink.s ¬ÿþ g.printfˆPk(.printfˆP ¨glink.s ±ÿþ gï¡pk(ï¡p ­glink.s ¶ÿþ gù¡˜k(ù¡˜ ²glink.s »ÿþ g�pk(�p ·glink.s Àÿþ g.strstrÅÈk(.strstrÅÈ ¼glink.s Åÿþ g.strtolÉPk(.strtolÉP Áglink.s Êÿþ g.strncmp|k(.strncmp| Æglink.s Ïÿþ g.atol! k(.atol!  Ëglink.s Ôÿþ g.fstat64Îhk(.fstat64Îh Ðglink.s Ùÿþ g.stat64Î�k(.stat64Î� Õglink.s Þÿþ g.opendirθk(.opendirθ Úglink.s ãÿþ g.readdirÎàk(.readdirÎà ßglink.s èÿþ gÏk(Ï äglink.s íÿþ g.qsortÏ0k(.qsortÏ0 églink.s òÿþ g.memchr!”k(.memchr!” îglink.s ÷ÿþ g'$k('$ óglink.s üÿþ g.getpid?Ük(.getpid?Ü øglink.s ÿþ g.perror@k(.perror@ ýglink.s ÿþ g$AHk($AH glink.sÿÿÿÿÿþ g.ÝLk(.ÝL  backup-file.sql .TP You can read this back into MySQL with: .TP .BR mysql \fP\fIdatabase\fP .BR < backup-file.sql .TP or .TP .BR mysql \-e 'source /patch\-to\-backup/backup\-file.sql' database .TP However, it's also very useful to populate another MySQL server with information from a database: .TP mysqldump \-\-opt \fP\fIdatabase\fP | mysql \-\-host=\fP\fIremote\-host\fP \-C database .TP It is possible to dump several databases with one command: .TP mysqldump \-\-databases database1 [ database2 database3... ] > my_databases.sql .TP If all the databases are wanted, one can use: .TP mysqldump \fP\fI\-\-all\-databases\fP > all_databases.sql .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man pagebles kê¨+Ȥ� w”·:‘�·:‘�·:! `’ ./usr/local/man/man1/mysqlshow.1tmainó/¤�.TH MYSQLSHOW 1 "19 December 2000" .SH NAME .BR mysqlshow \- Shows the structure of a mysql database (databases,tables and columns) .SH USAGE shell> mysqlshow [\fP\fIOPTIONS\fP] [\fP\fIdatabase [table [column]]\fP] .SH SYNOPSIS .B mysqlshow .RB [ \-# | \-\-debug=...] .RB [ \-? | \-\-help ] .RB [ \-c | \-\-character\-sets\-dir=...] .RB [ \-C | \-\-compress ] .RB [ \-h | \-\-host=... ] .RB [ \-i | \-\-status ] .RB [ \-k | \-\-keys ] .RB [ \-p | \-\-password\fP\fI[=...]\fP ] .RB [ \-P | \-\-port=... ] .RB [ \-S | \-\-socket=... ] .RB [ \-u | \-\-user=# ] .RB [ \-V | \-\-version ] .SH DESCRIPTION .TP .BR \-# | \-\-debug=... output debug log. Often this is 'd:t:o,filename` .TP .BR \-? | \-\-help display help and exit .TP .BR \-c | \-\-character\-sets\-dir=... Directory where character sets are .TP .BR \-C | \-\-compress Use compression in server/client protocol .TP .BR \-h | \-\-host=... connect to host .TP .BR \-i | \-\-status Shows a lot of extra information about each table .TP .BR \-k | \-\-keys show keys for table .TP .BR \-p | \-\-password \fP\fI[=...] \fP password to use when connecting to server If password is not given it's asked from the tty. .TP .BR \-P | \-\-port=... Port number to use for connection .TP .BR \-S | \-\-socket=... Socket file to use for connection .TP .BR \-u | \-\-user=# user for login if not current user .TP .BR \-V | \-\-version output version information and exit .SH NOTE If last argument contains a shell or SQL wildcard (*,?,% or _) then only what's matched by the wildcard is shown. If no database is given then all matching databases are shown. If no table is given then all matching tables in database are shown If no column is given then all matching columns and columntypes in table are shown .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill\-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page ysq kêà(Ȥ�#x”·:Œ�·:Œ�·:!R’#./usr/local/man/man1/isamchk.11ó/¤�.TH ISAMCHK 1 "19 December 2000" .SH NAME .BR isamchk \- Description, check and repair of ISAM tables. Used without options all tables on the command will be checked for errors .SH USAGE isamchk [OPTIONS] tables[.ISM] .SH SYNOPSIS .B isamchk .RB [ \-a | \-\-analyze ] .RB [ \-# | \-\-debug=... ] .RB [ \-\-character\-sets\-dir=...] .RB [ \-C | \-\-default\-character\-set=...] .RB [ \-d | \-\-description ] .RB [ \-e | \-\-extend\-check ] .RB [ \-f | \-\-force ] .RB [ \-? | \-\-help ] .RB [ \-i | \-\-information ] .RB [ \-k | \-\-keys\-used=# ] .RB [ \-l | \-\-no\-symlinks] .RB [ \-q | \-\-quick ] .RB [ \-r | \-\-recover ] .RB [ \-o | \-\-safe\-recover ] .RB [ \-O | "\-\-set\-variable var=option"] .RB [ \-s | \-\-silent ] .RB [ \-S | \-\-sort\-index ] .RB [ \-R | \-\-sort\-records=#] .RB [ \-u | \-\-unpack ] .RB [ \-v | \-\-verbose ] .RB [ \-V | \-\-version ] .RB [ \-w | \-\-wait ] .SH DESCRIPTION .TP .BR \-a | \-\-analyze Analyze distribution of keys. Will make some joins in MySQL faster. .TP .BR \-# | \-\-debug=... Output debug log. Often this is 'd:t:o ,filename` .TP .BR \-\-character\-sets\-dir=... Directory where character sets are .TP .BR \-C | \-\-default\-character\-set=... Set the default character set .TP .BR \-d | \-\-description Prints some information about table. .TP .BR \-e | \-\-extend\-check Check the table VERY thoroughly. One need use this only in extreme cases as isamchk should normally find all errors even without this switch .TP .BR \-f | \-\-force Overwrite old temporary files. If one uses \-f when checking tables (running isamchk without \-r), isamchk will automatically restart with \-r on any wrong table. .TP .BR \-? | \-\-help Display help and exit. .TP .BR \-i | \-\-information Print statistics information about the table .TP .BR \-k | \-\-keys\-used=# Used with '\-r'. Tell ISAM to update only the first # keys. This can be used to get faster inserts! .TP .BR \-l | \-\-no\-symlinks Do not follow symbolic links when repairing. Normally isamchk repairs the table a symlink points at. .TP .BR \-q | \-\-quick Used with \-r to get a faster repair. (The data file isn't touched.) One can give a second '\-q' to force isamchk to modify the original datafile. .TP .BR \-r | \-\-recover Can fix almost anything except unique keys that aren't unique. .TP .BR \-o | \-\-safe\-recover Uses old recovery method; slower than '\-r' but can handle a couple of cases that '\-r' cannot handle. .TP .BR \-O | " \-\-set\-variable var=option " Change the value of a variable. .TP .BR \-s | \-\-silent Only print errors. One can use two \-s to make isamchk very silent .TP .BR \-S | \-\-sort\-index Sort index blocks. This speeds up 'read\-next' in applications .TP .BR \-R | \-\-sort\-records=# Sort records according to an index. This makes your data much more localized and may speed up things (It may be VERY slow to do a sort the first time!) .TP .BR \-u | \-\-unpack Unpack file packed with pack_isam. .TP .BR \-v | \-\-verbose Print more information. This can be used with \-d and \-e. Use many \-v for more verbosity! .TP .BR \-V | \-\-version Print version and exit. .TP .BR \-w | \-\-wait Wait if table is locked. .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill\-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page .TP kêЀ-Ȥ�[x”·:��·:��·:! ¦‘[./usr/local/man/man1/isamlog.11ó/¤�.TH ISAMLOG 1 "20 December 2000" .SH NAME isamlog - Write info about whats in a nisam log file. .SH USAGE isamlog [-?iruvIV] [-c #] [-f #] [-F filepath/] [-o #] [-R file recordpos] [-w write_file] [log-filename [table ...]] .SH SYNOPSIS .B isamlog .RB [ -? | -I ] .RB [ -V ] .RB [ -c ] .RB [ -f ] .RB [ -F ] .RB [ -i ] .RB [ -o ] .RB [ "-p #" ] .RB [ -r ] .RB [ -R ] .RB [ -u ] .RB [ -v ] .RB [ -w ] .SH DESCRIPTION .TP .BR isamlog .TP .BR -? | -I info .TP .BR -V version .TP .BR -c do only # commands .TP .BR -f max open files .TP .BR -F file path .TP .BR -i extra info .TP .BR -o offset .TP .BR "-p #" remove # components from path .TP .BR -r recover .TP .BR -R file recordposition .TP .BR -u update .TP .BR -v verbose .TP .BR -w write file .SH NOTE If no file name is given isam.log is used One can give a second and a third '-v' for more verbose. Normaly one does a update (-u). If a recover is done all writes and all possibly updates and deletes is done and errors are only counted. If one gives table names as arguments only these tables will be updated .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page y fil kêî¬*Ȥ�Ž*x”·:��·:��·:!•’Ž*./usr/local/man/man1/mysqld.11ó/¤�.TH MYSQLD 1 "19 December 2000" .SH NAME .BR mysqld \- Starts the MySQL server demon .SH USAGE mysqld [OPTIONS] .SH SYNOPSIS .B mysqld .RB [ \-\-ansi ] .RB [ \-b | \-\-basedir=\fP\fIpath\fP ] .RB [ \-\-big-tables ] .RB [ \-\-bind\-address=IP ] .RB [ \-\-character\-sets\-dir=\fP\fIpath\fP ] .RB [ \-\-chroot=\fP\fIpath\fP ] .RB [ \-h | \-\-datadir=\fP\fIpath\fP ] .RB [ \-\-default\-character\-set=\fP\fIcharset\fP ] .RB [ \-\-default\-table\-type=\fP\fItype \fP] .RB [ \-\-delay\-key\-write\-for\-all\-tables ] .RB [ \-\-enable\-locking ] .RB [ \-T | \-\-exit\-info] .RB [ \-\-flush ] .RB [ \-? | \-\-help ] .RB [ \-\-init\-file=file ] .RB [ \-L | \-\-language=... ] .RB [ \-l | \-\-log[=file] ] .RB [ \-\-log\-isam[=file] ] .RB [ \-\-log\-slow\-queries\fP\fI[=file]\fP ] .RB [ \-\-log\-update\fP\fI[=file]\fP ] .RB [ \-\-log\-long\-format ] .RB [ \-\-low\-priority\-updates ] .RB [ \-\-memlock ] .RB [ " \-\-myisam\-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK." ] .RB [ \-\-pid\-file=\fP\fIpath\fP ] .RB [ \-P | \-\-port=... ] .RB [ \-o | \-\-old\-protocol ] .RB [ \-\-one\-thread ] .RB [ \-O | \-\-set\-variable var=\fP\fIoption\fP ] .RB [ \-Sg | \-\-skip\-grant\-tables ] .RB [ \-\-safe\-mode ] .RB [ \-\-secure ] .RB [ \-\-skip\-concurrent\-insert ] .RB [ \-\-skip\-delay\-key\-write ] .RB [ \-\-skip\-locking ] .RB [ \-\-skip\-name\-resolve ] .RB [ \-\-skip\-networking ] .RB [ \-\-skip\-new ] .RB [ \-\-skip\-host\-cache ] .RB [ \-\-skip\-show\-database ] .RB [ \-\-skip\-thread\-priority ] .RB [ \-\-socket=path ] .RB [ \-t | \-\-tmpdir=\fP\fIpath \fP] .RB [ \-u | \-\-user=\fP\fIuser_name\fP ] .RB [ \-V | \-\-version ] .SH DESCRIPTION .TP .BR --ansi Use ANSI SQL syntax instead of MySQL syntax. See section 5.2 Running MySQL in ANSI Mode. .TP .BR -b | --basedir=\fP\fIpath \fP Path to installation directory. All paths are usually resolved relative to this. .TP .BR --big-tables Allow big result sets by saving all temporary sets on file. It solves most 'table full' errors, but also slows down the queries where in\-memory tables would suffice. Since Version 3.23.2, MySQL is able to solve it automaticaly by using memory for small temporary tables and switching to disk tables where necessary. .TP .BR \-\-bind\-address=\fP\fIIP \fP IP address to bind to. .TP .BR \-\-character\-sets\-dir=\fP\fIpath \fP Directory where character sets are. See section 10.1.1 The Character Set Used for Data and Sorting. .TP .BR \-\-chroot=\fP\fIpath \fP Chroot mysqld daemon during startup. Recommended security measure. It will somewhat limit LOAD DATA INFILE and SELECT ... INTO OUTFILE though. .TP .BR \-h | \-\-datadir=\fP\fIpath \fP Path to the database root. .TP .BR \-\-default\-character\-set=\fP\fIcharset \fP Set the default character set. See section 10.1.1 The Character Set Used for Data and Sorting. .TP .BR \-\-default\-table\-type=\fP\fItype \fP Set the default table type for tables. See section 8 MySQL Table Types. .TP .BR \-\-delay\-key\-write\-for\-all\-tables Don't flush key buffers between writes for any MyISAM table. See Mysql Manual section 12.2.3 Tuning Server Parameters. .TP .BR \-\-enable\-locking Enable system locking. .TP .BR \-T | \-\-exit\-info Print some debug info at exit. .TP .BR \-\-flush Flush all changes to disk after each SQL command. Normally MySQL only does a write of all changes to disk after each SQL command and lets the operating system handle the syncing to disk. See section 20.2 What to Do if MySQL Keeps Crashing. .TP .BR \-? | \-\-help Display short help and exit. .TP .BR \-\-init\-file=\fP\fIfile \fP Read SQL commands from this file at startup. .TP .BR \-L | \-\-language=... Client error messages in given language. May be given as a full path. See Mysql Manual section 10.1 What Languages Are Supported by MySQL?. .TP .BR \-l | \-\-log\fP\fI[=file] \fP Log connections and queries to file. .TP .BR \-\-log\-isam\fP\fI[=file] \fP Log all ISAM/MyISAM changes to file (only used when debugging ISAM/MyISAM). .TP .BR \-\-log\-slow\-queries\fP\fI[=file] \fP Log all queries that have taken more than long_query_time seconds to execute to file. See Mysql Manual section 21.5 The Slow Query Log. .TP .BR \-\-log\-update\fP\fI[=file] \fP Log updates to file.# where # is a unique number if not given. See Mysql Manual section 21.3 The Update Log. .TP .BR \-\-log\-long\-format Log some extra information to update log. If you are using .BR \-\-log\-slow\-queries then queries that are not using indexes are logged to the slow query log. .TP .BR \-\-low\-priority\-updates Table\-modifying operations (INSERT/DELETE/UPDATE) will have lower priority than selects. It can also be done via {INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ... to lower the priority of only one query, or by SET OPTION SQL_LOW_PRIORITY_UPDATES=1 to change the priority in one thread. See Mysql Manual section 12.2.9 Table Locking Issues. .TP .BR \-\-memlock Lock the mysqld process in memory. This works only if your system supports the mlockall() system call. This may help if you have a problem where the operating system is causing mysqld to swap on disk. .TP .BR " \-\-myisam\-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK. " If this option is used, mysqld will on open check if the table is marked as crashed or if if the table wasn't closed properly (The last option only works if you are running with \-\-skip\-locking). If this is the case mysqld will run check on the table. If the table was corrupted, mysqld will attempt to repair it. The following options affects how the repair works. .BR DEFAULT The same as not giving any option to \-\-myisam\-recover. .BR BACKUP If the data table was changed during recover, save a backup of the `table_name.MYD' data file as `table_name\-datetime.BAK'. .BR FORCE Run recover even if we will loose more than one row from the .MYD file. .BR QUICK Don't check the rows in the table if there isn't any delete blocks. Before a table is automaticly repaired, mysqld will add a note about this in the error log. If you want to be able to recover from most things without user intervention, you should use the options BACKUP,FORCE. This will force a repair of a table even if some rows would be deleted, but it will keep the old data file as a backup so that you can later examine what happened. .TP .BR \-\-pid\-file=\fP\fIpath \fP Path to pid file used by safe_mysqld. .TP .BR \-P | \-\-port=... Port number to listen for TCP/IP connections. .TP .BR \-o | \-\-old\-protocol Use the 3.20 protocol for compatibility with some very old clients. See Mysql Manual section 4.17.3 Upgrading from Version 3.20 to Version 3.21. .TP .BR \-\-one\-thread Only use one thread (for debugging under Linux). See Mysql Manual section H.1 Debugging a MySQL server. .TP .BR \-O | " \-\-set\-variable var=\fP\fIoption\fP " Give a variable a value. \-\-help lists variables. You can find a full description for all variables in the SHOW VARIABLES section in this manual. See Mysql Manual section 7.28.4 SHOW VARIABLES. The tuning server parameters section includes information of how to optimize these. See Mysql Manual section 12.2.3 Tuning Server Parameters. .TP .BR \-Sg | \-\-skip\-grant\-tables This option causes the server not to use the privilege system at all. This gives everyone full access to all databases! (You can tell a running server to start using the grant tables again by executing mysqladmin flush\-privileges or mysqladmin reload.) .TP .BR \-\-safe\-mode Skip some optimize stages. Implies .BR \-\-skip\-delay\-key\-write. .TP .BR \-\-secure IP numbers returned by the gethostbyname() system call are checked to make sure they resolve back to the original hostname. This makes it harder for someone on the outside to get access by pretending to be another host. This option also adds some sanity checks of hostnames. The option is turned off by default in MySQL Version 3.21 because sometimes it takes a long time to perform backward resolutions. MySQL Version 3.22 caches hostnames (unless \-\-skip\-host\-cache is used) and has this option enabled by default. .TP .BR \-\-skip\-concurrent\-insert Turn off the ability to select and insert at the same time on MyISAM tables. (This is only to be used if you think you have found a bug in this feature). .TP .BR \-\-skip\-delay\-key\-write Ignore the delay_key_write option for all tables. See Mysql Manual section 12.2.3 Tuning Server Parameters. .TP .BR \-\-skip\-locking Don't use system locking. To use isamchk or myisamchk you must shut down the server. See Mysql Manual section 1.6 How Stable Is MySQL?. Note that in MySQL Version 3.23 you can use REPAIR and CHECK to repair/check MyISAM tables. .TP .BR \-\-skip\-name\-resolve Hostnames are not resolved. All Host column values in the grant tables must be IP numbers or localhost. .TP .BR \-\-skip\-networking Don't listen for TCP/IP connections at all. All interaction with mysqld must be made via Unix sockets. This option is highly recommended for systems where only local requests are allowed. However, this option is unsuitable for systems that use MIT\-pthreads, because the MIT\-pthreads package doesn't support Unix sockets. .TP .BR \-\-skip\-new Don't use new, possible wrong routines. Implies .BR \-\-skip\-delay\-key\-write . This will also set default table type to ISAM. See Mysql Manual section 8.3 ISAM Tables. .TP .BR \-\-skip\-host\-cache Never use host name cache for faster name\-ip resolution, but query DNS server on every connect instead. .TP .BR \-\-skip\-show\-database Don't allow 'SHOW DATABASE' commands, unless the user has process privilege. .TP .BR \-\-skip\-thread\-priority Disable using thread priorities for faster response time. .TP .BR \-\-socket=\fP\fIpath \fP Socket file to use for local connections instead of default /tmp/mysql.sock. .TP .BR \-t | \-\-tmpdir=\fP\fIpath\fP Path for temporary files. It may be useful if your default /tmp directory resides on a partition too small to hold temporary tables. .TP .BR \-u | \-\-user=\fP\fIuser_name \fP Run mysqld daemon as user user_name. This option is mandatory when starting mysqld as root. .TP .BR \-V | \-\-version Output version information and exit. .SH NOTE .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill\-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page ne kê2{/Ȥ�± x”·:��·:��·:! ^’± ./usr/local/man/man1/mysqld_multi.1mainó/¤�.TH MYSQLD_MULTI 1 "20 December 2000" .SH NAME mysqld_multi - is meant for managing several mysqld processes running in different UNIX sockets and TCP/IP ports. .SH USAGE mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...] .SH SYNOPSIS .B mysqld_multi .RB [ --config-file=... ] .RB [ --example ] .RB [ --help ] .RB [ --log=... ] .RB [ --mysqladmin=... ] .RB [ --mysqld=... ] .RB [ --no-log ] .RB [ --password=... ] .RB [ --tcp-ip ] .RB [ --user=... ] .RB [ --version ] .SH DESCRIPTION .TP .BR mysqld_multi .TP .BR --config-file=... Alternative config file. NOTE: This will not affect this program\'s own options (group [mysqld_multi]), but only groups [mysqld#]. Without this option everything will be searched from the ordinary my.cnf file. .TP .BR --example Give an example of a config file. .TP .BR --help Print this help and exit. .TP .BR --log=... Log file. Full path to and the name for the log file. NOTE: If the file exists, everything will be appended. .TP .BR --mysqladmin=... mysqladmin binary to be used for a server shutdown. .TP .BR --mysqld=... mysqld binary to be used. Note that you can give safe_mysqld to this option also. The options are passed to mysqld. Just make sure you have mysqld in your environment variable PATH or fix safe_mysqld. .TP .BR --no-log Print to stdout instead of the log file. By default the log file is turned on. .TP .BR --password=... Password for user for mysqladmin. .TP .BR --tcp-ip Connect to the MySQL server(s) via the TCP/IP port instead of the UNIX socket. This affects stopping and reporting. If a socket file is missing, the server may still be running, but can be accessed only via the TCP/IP port. By default connecting is done via the UNIX socket. .TP .BR --user=... MySQL user for mysqladmin. .TP .BR --version Print the version number and exit. .SH NOTE Please see the mysql manual for more detailed information on this. .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page B (http kê H,Ȥ�sx”·:’�·:’�·:!0þ‘s./usr/local/man/man1/perror.1ltó/¤�.TH PERROR 1 "19 December 2000" .SH NAME .BR perror can be used to display a description for a system error code, or an MyISAM/ISAM table handler error code. The error messages are mostly system dependent. .SH USAGE perror [OPTIONS] [ERRORCODE [ERRORCODE...]] .SH SYNOPSIS .B perror .RB [ \-? | \-\-help ] .RB [ \-I | \-\-info ] .RB [ \-s | \-\-silent ] .RB [ \-v | \-\-verbose ] .RB [ \-V | \-\-version ] .SH DESCRIPTION .TP .BR \-? | \-\-help Displays this help and exits. .TP .BR \-I | \-\-info Synonym for the above. .TP .BR \-s | \-\-silent Only print the error message .TP .BR \-v | \-\-verbose Print error code and message (default). .TP .BR \-V | \-\-version Displays version information and exits. .SH EXAMPLE shell> perror 64 79 Error code 64: Machine is not on the network Error code 79: Can not access a needed shared library .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill\-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page s tur kêœ1Ȥ�ÿx”·:“�·:“�·:! ‡’ÿ./usr/local/man/man1/replace.1tó/¤�.TH REPLACE 1 "20 December 2000" .SH NAME .TP replace - A utility program that is used by msql2mysql, but that has more general applicability as well. replace changes strings in place in files or on the standard input. Uses a finite state machine to match longer strings first. Can be used to swap strings. .SH USAGE replace [-?svIV] from to from to ... -- [files] .TP or .TP replace [-?svIV] from to from to ... < fromfile > tofile .SH SYNOPSIS .B replace .RB [ -? | -I ] .RB [ -s ] .RB [ -v ] .SH DESCRIPTION .TP .BR replace .TP .BR -? | -I info .TP .BR -s silent .TP .BR -v verbose .SH EXTRA INFO .B Special characters in from string: .TP \\^ Match start of line. .TP \\$ Match end of line. .TP \\b Match space-character, start of line or end of line. For a end \\b the next replace starts locking at the end space-character. A \\b alone in a string matches only a space-character. .SH EXAMPLE this command swaps a and b in the given files: .TP shell> replace a b b a -- file1 file2 ... .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page kê|T2Ȥ�èx”·:“�·:“�·:! ‰’è./usr/local/man/man1/safe_mysqld.1mainó/¤�.TH SAFE_MYSQLD 1 "19 December 2000" .SH NAME .BR safe_mysqld is the recommended way to start a mysqld daemon on Unix. safe_mysqld adds some safety features such as restarting the server when an error occurs and logging run-time information to a log file. .SH SYNOPSIS .B safe_mysqld .RB [ \-\-basedir=\fP\fIpath\fP ] .RB [ \-\-core\-file\-size=# ] .RB [ \-\-defaults\-extra\-file=\fP\fIpath\fP ] .RB [ \-\-defaults\-file=\fP\fIpath\fP ] .RB [ \-\-open\-files=# ] .RB [ \-\-datadir=\fP\fIpath\fP ] .RB [ \-\-err\-log=\fP\fIpath \fP] .RB [ \-\-ledir=path ] .RB [ \-\-log=\fP\fIpath\fP ] .RB [ \-\-no\-defaults ] .RB [ \-\-open\-files=# ] .RB [ \-\-pid\-file=\fP\fIpath\fP ] .RB [ \-\-port=# ] .RB [ \-\-socket=\fP\fIpath\fP ] .RB [ \-\-timezone=# ] .RB [ \-\-user=# ] .SH DESCRIPTION .TP .BR \-\-basedir=\fP\fIpath \fP .TP .BR \-\-core\-file\-size=# .TP .BR \-\-defaults\-extra\-file=\fP\fIpath \fP .TP .BR \-\-defaults\-file=\fP\fIpath \fP .TP .BR \-\-open\-files=# Size of the core file mysqld should be able to create. Passed to ulimit \-c. .TP .BR \-\-datadir=\fP\fIpath \fP .TP .BR \-\-err\-log=\fP\fIpath \fP .TP .BR \-\-ledir=\fP\fIpath \fP Path to mysqld .TP .BR \-\-log=\fP\fIpath \fP .TP .BR \-\-no\-defaults .TP .BR \-\-open\-files=# Number of files mysqld should be able to open. Passed to ulimit \-n. .TP .BR \-\-pid\-file=\fP\fIpath \fP .TP .BR \-\-port=# .TP .BR \-\-socket=\fP\fIpath \fP .TP .BR \-\-timezone=# Set the timezone (the TZ) variable to the value of this parameter. .TP .BR \-\-user=# .SH NOTE Note that all options on the command line to safe_mysqld are passed to mysqld. If you wants to use any options in safe_mysqld that mysqld doesn't support, you must specify these in the option file. .SH "SEE ALSO" isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1), .SH AUTHOR Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill\-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com) .\" end of man page kê¶Œy'¤�m x”·:j�·:j�·:! #endif #if defined(HAVE_STRING_H) #include #endif /* Correct some things for UNIXWARE7 */ #ifdef HAVE_UNIXWARE7_THREADS #undef HAVE_STRINGS_H #undef HAVE_MEMORY_H #define HAVE_MEMCPY #ifndef HAVE_MEMMOVE #define HAVE_MEMMOVE #endif #undef HAVE_BCMP #undef bcopy #undef bcmp #undef bzero #endif /* HAVE_UNIXWARE7_THREADS */ #ifdef _AIX #undef HAVE_BCMP #endif /* This is needed for the definitions of bzero... on solaris */ #if defined(HAVE_STRINGS_H) && !defined(HAVE_mit_thread) #include #endif /* This is needed for the definitions of memcpy... on solaris */ #if defined(HAVE_MEMORY_H) && !defined(__cplusplus) #include #endif #if !defined(HAVE_MEMCPY) && !defined(HAVE_MEMMOVE) # define memcpy(d, s, n) bcopy ((s), (d), (n)) # define memset(A,C,B) bfill((A),(B),(C)) # define memmove(d, s, n) bmove ((d), (s), (n)) #elif defined(HAVE_MEMMOVE) # define bmove(d, s, n) memmove((d), (s), (n)) #else # define memmove(d, s, n) bmove((d), (s), (n)) /* our bmove */ #endif #if defined(HAVE_STPCPY) && !defined(HAVE_mit_thread) #define strmov(A,B) stpcpy((A),(B)) #endif /* Unixware 7 */ #if !defined(HAVE_BFILL) # define bfill(A,B,C) memset((A),(C),(B)) # define bmove_allign(A,B,C) memcpy((A),(B),(C)) #endif #if !defined(HAVE_BCMP) # define bcopy(s, d, n) memcpy((d), (s), (n)) # define bcmp(A,B,C) memcmp((A),(B),(C)) # define bzero(A,B) memset((A),0,(B)) # define bmove_allign(A,B,C) memcpy((A),(B),(C)) #endif #ifdef __cplusplus extern "C" { #endif extern char NEAR _dig_vec[]; /* Declared in int2str() */ #ifdef BAD_STRING_COMPILER #define strmov(A,B) (memccpy(A,B,0,INT_MAX)-1) #else #define strmov_overlapp(A,B) strmov(A,B) #define strmake_overlapp(A,B,C) strmake(A,B,C) #endif #ifdef BAD_MEMCPY /* Problem with gcc on Alpha */ #define memcpy_fixed(A,B,C) bmove((A),(B),(C)) #else #define memcpy_fixed(A,B,C) memcpy((A),(B),(C)) #endif #ifdef MSDOS #undef bmove_allign #define bmove512(A,B,C) bmove_allign(A,B,C) #define my_itoa(A,B,C) itoa(A,B,C) #define my_ltoa(A,B,C) ltoa(A,B,C) extern void bmove_allign(gptr dst,const gptr src,uint len); #endif #if (!defined(USE_BMOVE512) || defined(HAVE_purify)) && !defined(bmove512) #define bmove512(A,B,C) memcpy(A,B,C) #endif /* Prototypes for string functions */ #if !defined(bfill) && !defined(HAVE_BFILL) extern void bfill(gptr dst,uint len,pchar fill); #endif #if !defined(bzero) && !defined(HAVE_BZERO) extern void bzero(gptr dst,uint len); #endif #if !defined(bcmp) && !defined(HAVE_BCMP) extern int bcmp(const char *s1,const char *s2,uint len); #ifdef HAVE_purify extern int my_bcmp(const char *s1,const char *s2,uint len); #define bcmp(A,B,C) my_bcmp((A),(B),(C)) #endif #endif #ifndef bmove512 extern void bmove512(gptr dst,const gptr src,uint len); #endif #if !defined(HAVE_BMOVE) && !defined(bmove) extern void bmove(char *dst, const char *src,uint len); #endif extern void bmove_upp(char *dst,const char *src,uint len); extern void bchange(char *dst,uint old_len,const char *src, uint new_len,uint tot_len); extern void strappend(char *s,uint len,pchar fill); extern char *strend(const char *s); extern char *strcend(const char *, pchar); extern char *strfield(char *src,int fields,int chars,int blanks, int tabch); extern char *strfill(my_string s,uint len,pchar fill); extern uint strinstr(const char *str,const char *search); extern uint r_strinstr(reg1 my_string str,int from, reg4 my_string search); extern char *strkey(char *dst,char *head,char *tail,char *flags); extern char *strmake(char *dst,const char *src,uint length); #ifndef strmake_overlapp extern char *strmake_overlapp(char *dst,const char *src, uint length); #endif #ifndef strmov extern char *strmov(char *dst,const char *src); #endif extern char *strnmov(char *dst,const char *src,uint n); extern char *strsuff(const char *src,const char *suffix); extern char *strcont(const char *src,const char *set); extern char *strxcat _VARARGS((char *dst,const char *src, ...)); extern char *strxmov _VARARGS((char *dst,const char *src, ...)); extern char *strxcpy _VARARGS((char *dst,const char *src, ...)); extern char *strxncat _VARARGS((char *dst,uint len, const char *src, ...)); extern char *strxnmov _VARARGS((char *dst,uint len, const char *src, ...)); extern char *strxncpy _VARARGS((char *dst,uint len, const char *src, ...)); /* Prototypes of normal stringfunctions (with may ours) */ #ifdef WANT_STRING_PROTOTYPES extern char *strcat(char *, const char *); extern char *strchr(const char *, pchar); extern char *strrchr(const char *, pchar); extern char *strcpy(char *, const char *); extern int strcmp(const char *, const char *); #ifndef __GNUC__ extern size_t strlen(const char *); #endif #endif #ifndef HAVE_STRNLEN extern uint strnlen(const char *s, uint n); #endif #if !defined(__cplusplus) #ifndef HAVE_STRPBRK extern char *strpbrk(const char *, const char *); #endif #ifndef HAVE_STRSTR extern char *strstr(const char *, const char *); #endif #endif extern int is_prefix(const char *, const char *); /* Conversion rutins */ #ifdef USE_MY_ITOA extern char *my_itoa(int val,char *dst,int radix); extern char *my_ltoa(long val,char *dst,int radix); #endif extern char *llstr(longlong value,char *buff); #ifndef HAVE_STRTOUL extern long strtol(const char *str, char **ptr, int base); extern ulong strtoul(const char *str, char **ptr, int base); #endif extern char *int2str(long val,char *dst,int radix); extern char *int10_to_str(long val,char *dst,int radix); extern char *str2int(const char *src,int radix,long lower,long upper, long *val); #if SIZEOF_LONG == SIZEOF_LONG_LONG #define longlong2str(A,B,C) int2str((A),(B),(C)) #define longlong10_to_str(A,B,C) int10_to_str((A),(B),(C)) #define strtoll(A,B,C) strtol((A),(B),(C)) #define strtoull(A,B,C) strtoul((A),(B),(C)) #ifndef HAVE_STRTOULL #define HAVE_STRTOULL #endif #else #ifdef HAVE_LONG_LONG extern char *longlong2str(longlong val,char *dst,int radix); extern char *longlong10_to_str(longlong val,char *dst,int radix); #if (!defined(HAVE_STRTOULL) || defined(HAVE_mit_thread)) || defined(NO_STRTOLL_PROTO) extern longlong strtoll(const char *str, char **ptr, int base); extern ulonglong strtoull(const char *str, char **ptr, int base); #endif #endif #endif #ifdef __cplusplus } #endif #endif defi kêJfü&¤�¸^x”·:k�·:k�·:!))¸^./usr/local/include/mysql/my_sys.hhainó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef _my_sys_h #define _my_sys_h #ifdef __cplusplus extern "C" { #endif #ifdef HAVE_AIOWAIT #include /* Used by record-cache */ typedef struct my_aio_result { aio_result_t result; int pending; } my_aio_result; #endif #ifndef THREAD extern int NEAR my_errno; /* Last error in mysys */ #else #include #endif #ifndef _m_ctype_h #include /* for CHARSET_INFO */ #endif #include #define MYSYS_PROGRAM_USES_CURSES() { error_handler_hook = my_message_curses; mysys_uses_curses=1; } #define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;} #define MY_INIT(name); { my_progname= name; my_init(); } #define MAXMAPS (4) /* Number of error message maps */ #define ERRMOD (1000) /* Max number of errors in a map */ #define ERRMSGSIZE (SC_MAXWIDTH) /* Max length of a error message */ #define NRERRBUFFS (2) /* Buffers for parameters */ #define MY_FILE_ERROR ((uint) ~0) /* General bitmaps for my_func's */ #define MY_FFNF 1 /* Fatal if file not found */ #define MY_FNABP 2 /* Fatal if not all bytes read/writen */ #define MY_NABP 4 /* Error if not all bytes read/writen */ #define MY_FAE 8 /* Fatal if any error */ #define MY_WME 16 /* Write message on error */ #define MY_WAIT_IF_FULL 32 /* Wait and try again if disk full error */ #define MY_RAID 64 /* Support for RAID (not the "Johnson&Johnson"-s one ;) */ #define MY_DONT_CHECK_FILESIZE 128 /* Option to init_io_cache() */ #define MY_LINK_WARNING 32 /* my_redel() gives warning if links */ #define MY_COPYTIME 64 /* my_redel() copys time */ #define MY_HOLD_ORIGINAL_MODES 128 /* my_copy() holds to file modes */ #define MY_REDEL_MAKE_BACKUP 256 #define MY_SEEK_NOT_DONE 32 /* my_lock may have to do a seek */ #define MY_DONT_WAIT 64 /* my_lock() don't wait if can't lock */ #define MY_ZEROFILL 32 /* my_malloc(), fill array with zero */ #define MY_ALLOW_ZERO_PTR 64 /* my_realloc() ; zero ptr -> malloc */ #define MY_FREE_ON_ERROR 128 /* my_realloc() ; Free old ptr on error */ #define MY_HOLD_ON_ERROR 256 /* my_realloc() ; Return old ptr on error */ #define MY_THREADSAFE 128 /* pread/pwrite: Don't allow interrupts */ #define MY_CHECK_ERROR 1 /* Params to my_end; Check open-close */ #define MY_GIVE_INFO 2 /* Give time info about process*/ #define ME_HIGHBYTE 8 /* Shift for colours */ #define ME_NOCUR 1 /* Don't use curses message */ #define ME_OLDWIN 2 /* Use old window */ #define ME_BELL 4 /* Ring bell then printing message */ #define ME_HOLDTANG 8 /* Don't delete last keys */ #define ME_WAITTOT 16 /* Wait for errtime secs of for a action */ #define ME_WAITTANG 32 /* Wait for a user action */ #define ME_NOREFRESH 64 /* Dont refresh screen */ #define ME_NOINPUT 128 /* Dont use the input libary */ #define ME_COLOUR1 ((1 << ME_HIGHBYTE)) /* Possibly error-colours */ #define ME_COLOUR2 ((2 << ME_HIGHBYTE)) #define ME_COLOUR3 ((3 << ME_HIGHBYTE)) /* My seek flags */ #define MY_SEEK_SET 0 #define MY_SEEK_CUR 1 #define MY_SEEK_END 2 /* My charsets_list flags */ #define MY_NO_SETS 0 #define MY_COMPILED_SETS 1 /* show compiled-in sets */ #define MY_CONFIG_SETS 2 /* sets that have a *.conf file */ #define MY_INDEX_SETS 4 /* all sets listed in the Index file */ #define MY_LOADED_SETS 8 /* the sets that are currently loaded */ /* Some constants */ #define MY_WAIT_FOR_USER_TO_FIX_PANIC 60 /* in seconds */ #define MY_WAIT_GIVE_USER_A_MESSAGE 10 /* Every 10 times of prev */ #define MIN_COMPRESS_LENGTH 50 /* Don't compress small bl. */ #define KEYCACHE_BLOCK_SIZE 1024 /* root_alloc flags */ #define MY_KEEP_PREALLOC 1 /* defines when allocating data */ #ifdef SAFEMALLOC #define my_malloc(SZ,FLAG) _mymalloc( SZ, __FILE__, __LINE__, FLAG ) #define my_realloc(PTR,SZ,FLAG) _myrealloc( PTR, SZ, __FILE__, __LINE__, FLAG ) #define my_checkmalloc() _sanity( __FILE__, __LINE__ ) #define my_free(PTR,FLAG) _myfree( PTR, __FILE__, __LINE__,FLAG) #define my_memdup(A,B,C) _my_memdup(A,B,__FILE__,__LINE__,C) #define my_strdup(A,C) _my_strdup(A,__FILE__,__LINE__,C) #define QUICK_SAFEMALLOC sf_malloc_quick=1 #define NORMAL_SAFEMALLOC sf_malloc_quick=0 extern uint sf_malloc_prehunc,sf_malloc_endhunc,sf_malloc_quick; extern ulonglong safemalloc_mem_limit; #else #define my_checkmalloc() (0) #define TERMINATE(A) {} #define QUICK_SAFEMALLOC #define NORMAL_SAFEMALLOC extern gptr my_malloc(uint Size,myf MyFlags); extern gptr my_realloc(gptr oldpoint,uint Size,myf MyFlags); extern void my_no_flags_free(gptr ptr); extern gptr my_memdup(const byte *from,uint length,myf MyFlags); extern my_string my_strdup(const char *from,myf MyFlags); #define my_free(PTR,FG) my_no_flags_free(PTR) #endif #ifdef HAVE_ALLOCA #define my_alloca(SZ) alloca((size_t) (SZ)) #define my_afree(PTR) {} #else #define my_alloca(SZ) my_malloc(SZ,MYF(0)) #define my_afree(PTR) my_free(PTR,MYF(MY_WME)) #endif /* HAVE_ALLOCA */ #ifdef MSDOS #ifdef __ZTC__ void * __CDECL halloc(long count,size_t length); void __CDECL hfree(void *ptr); #endif #if defined(USE_HALLOC) #if defined(_VCM_) || defined(M_IC80386) #undef USE_HALLOC #endif #endif #ifdef USE_HALLOC #define malloc(a) halloc((long) (a),1) #define free(a) hfree(a) #endif #endif /* MSDOS */ #ifdef HAVE_ERRNO_AS_DEFINE #include /* errno is a define */ #else extern int errno; /* declare errno */ #endif extern const char ** NEAR my_errmsg[]; extern char NEAR errbuff[NRERRBUFFS][ERRMSGSIZE]; extern char *home_dir; /* Home directory for user */ extern char *my_progname; /* program-name (printed in errors) */ extern char NEAR curr_dir[]; /* Current directory for user */ extern int (*error_handler_hook)(uint my_err, const char *str,myf MyFlags); extern int (*fatal_error_handler_hook)(uint my_err, const char *str, myf MyFlags); /* charsets */ extern uint get_charset_number(const char *cs_name); extern const char *get_charset_name(uint cs_number); extern CHARSET_INFO *get_charset(uint cs_number, myf flags); extern my_bool set_default_charset(uint cs, myf flags); extern CHARSET_INFO *get_charset_by_name(const char *cs_name, myf flags); extern my_bool set_default_charset_by_name(const char *cs_name, myf flags); extern void free_charsets(void); extern char *list_charsets(myf want_flags); /* my_free() this string... */ extern char *get_charsets_dir(char *buf); /* statistics */ extern ulong _my_cache_w_requests,_my_cache_write,_my_cache_r_requests, _my_cache_read; extern ulong _my_blocks_used,_my_blocks_changed; extern ulong my_file_opened,my_stream_opened, my_tmp_file_created; extern my_bool key_cache_inited; /* Point to current my_message() */ extern void (*my_sigtstp_cleanup)(void), /* Executed before jump to shell */ (*my_sigtstp_restart)(void), (*my_abort_hook)(int); /* Executed when comming from shell */ extern int NEAR my_umask, /* Default creation mask */ NEAR my_umask_dir, NEAR my_recived_signals, /* Signals we have got */ NEAR my_safe_to_handle_signal, /* Set when allowed to SIGTSTP */ NEAR my_dont_interrupt; /* call remember_intr when set */ extern my_bool NEAR mysys_uses_curses, my_use_symdir; extern long lCurMemory,lMaxMemory; /* from safemalloc */ extern ulong my_default_record_cache_size; extern my_bool NEAR my_disable_locking,NEAR my_disable_async_io, NEAR my_disable_flush_key_blocks; extern char wild_many,wild_one,wild_prefix; extern const char *charsets_dir; extern char *defaults_extra_file; typedef struct wild_file_pack /* Struct to hold info when selecting files */ { uint wilds; /* How many wildcards */ uint not_pos; /* Start of not-theese-files */ my_string *wild; /* Pointer to wildcards */ } WF_PACK; typedef struct st_typelib { /* Different types saved here */ uint count; /* How many types */ const char *name; /* Name of typelib */ const char **type_names; } TYPELIB; enum cache_type {READ_CACHE,WRITE_CACHE,READ_FIFO,READ_NET,WRITE_NET}; enum flush_type { FLUSH_KEEP, FLUSH_RELEASE, FLUSH_IGNORE_CHANGED, FLUSH_FORCE_WRITE}; typedef struct st_record_cache /* Used when cacheing records */ { File file; int rc_seek,error,inited; uint rc_length,read_length,reclength; my_off_t rc_record_pos,end_of_file; byte *rc_buff,*rc_buff2,*rc_pos,*rc_end,*rc_request_pos; #ifdef HAVE_AIOWAIT int use_async_io; my_aio_result aio_result; #endif enum cache_type type; } RECORD_CACHE; enum file_type { UNOPEN = 0, FILE_BY_OPEN, FILE_BY_CREATE, STREAM_BY_FOPEN, STREAM_BY_FDOPEN, FILE_BY_MKSTEMP }; extern struct my_file_info { my_string name; enum file_type type; #if defined(THREAD) && !defined(HAVE_PREAD) pthread_mutex_t mutex; #endif } my_file_info[MY_NFILE]; typedef struct st_dynamic_array { char *buffer; uint elements,max_element; uint alloc_increment; uint size_of_element; } DYNAMIC_ARRAY; typedef struct st_dynamic_string { char *str; uint length,max_length,alloc_increment; } DYNAMIC_STRING; typedef struct st_io_cache /* Used when cacheing files */ { my_off_t pos_in_file,end_of_file; byte *rc_pos,*rc_end,*buffer,*rc_request_pos; int (*read_function)(struct st_io_cache *,byte *,uint); char *file_name; /* if used with 'open_cached_file' */ char *dir,*prefix; File file; int seek_not_done,error; uint buffer_length,read_length; myf myflags; /* Flags used to my_read/my_write */ enum cache_type type; #ifdef HAVE_AIOWAIT uint inited; my_off_t aio_read_pos; my_aio_result aio_result; #endif } IO_CACHE; typedef int (*qsort2_cmp)(const void *, const void *, const void *); /* defines for mf_iocache */ /* Test if buffer is inited */ #define my_b_clear(info) (info)->buffer=0 #define my_b_inited(info) (info)->buffer #define my_b_EOF INT_MIN #define my_b_read(info,Buffer,Count) \ ((info)->rc_pos + (Count) <= (info)->rc_end ?\ (memcpy(Buffer,(info)->rc_pos,(size_t) (Count)), \ ((info)->rc_pos+=(Count)),0) :\ (*(info)->read_function)((info),Buffer,Count)) #define my_b_get(info) \ ((info)->rc_pos != (info)->rc_end ?\ ((info)->rc_pos++, (int) (uchar) (info)->rc_pos[-1]) :\ _my_b_get(info)) #define my_b_write(info,Buffer,Count) \ ((info)->rc_pos + (Count) <= (info)->rc_end ?\ (memcpy((info)->rc_pos,Buffer,(size_t) (Count)), \ ((info)->rc_pos+=(Count)),0) :\ _my_b_write(info,Buffer,Count)) /* my_b_write_byte dosn't have any err-check */ #define my_b_write_byte(info,chr) \ (((info)->rc_pos < (info)->rc_end) ?\ ((*(info)->rc_pos++)=(chr)) :\ (_my_b_write(info,0,0) , ((*(info)->rc_pos++)=(chr)))) #define my_b_fill_cache(info) \ (((info)->rc_end=(info)->rc_pos),(*(info)->read_function)(info,0,0)) #define my_b_tell(info) ((info)->pos_in_file + \ ((info)->rc_pos - (info)->rc_request_pos)) #define my_b_bytes_in_cache(info) ((uint) ((info)->rc_end - (info)->rc_pos)) typedef struct st_changeable_var { const char *name; /* Name of variable */ long *varptr; /* Pointer to variable */ long def_value, /* Default value */ min_value, /* Min allowed value */ max_value, /* Max allowed value */ sub_size, /* Subtract this from given value */ block_size; /* Value should be a mult. of this */ } CHANGEABLE_VAR; /* structs for alloc_root */ #ifndef ST_USED_MEM_DEFINED #define ST_USED_MEM_DEFINED typedef struct st_used_mem { /* struct for once_alloc */ struct st_used_mem *next; /* Next block in use */ unsigned int left; /* memory left in block */ unsigned int size; /* Size of block */ } USED_MEM; typedef struct st_mem_root { USED_MEM *free; USED_MEM *used; USED_MEM *pre_alloc; unsigned int min_malloc; unsigned int block_size; void (*error_handler)(void); } MEM_ROOT; #endif /* Prototypes for mysys and my_func functions */ extern int my_copy(const char *from,const char *to,myf MyFlags); extern int my_append(const char *from,const char *to,myf MyFlags); extern int my_delete(const char *name,myf MyFlags); extern int my_getwd(my_string buf,uint size,myf MyFlags); extern int my_setwd(const char *dir,myf MyFlags); extern int my_lock(File fd,int op,my_off_t start, my_off_t length,myf MyFlags); extern gptr my_once_alloc(uint Size,myf MyFlags); extern void my_once_free(void); extern my_string my_tempnam(const char *dir,const char *pfx,myf MyFlags); extern File my_open(const char *FileName,int Flags,myf MyFlags); extern File my_register_filename(File fd, const char *FileName, enum file_type type_of_file, uint error_message_number, myf MyFlags); extern File my_create(const char *FileName,int CreateFlags, int AccsesFlags, myf MyFlags); extern int my_close(File Filedes,myf MyFlags); extern int my_mkdir(const char *dir, int Flags, myf MyFlags); extern uint my_read(File Filedes,byte *Buffer,uint Count,myf MyFlags); extern uint my_pread(File Filedes,byte *Buffer,uint Count,my_off_t offset, myf MyFlags); extern int my_rename(const char *from,const char *to,myf MyFlags); extern my_off_t my_seek(File fd,my_off_t pos,int whence,myf MyFlags); extern my_off_t my_tell(File fd,myf MyFlags); extern uint my_write(File Filedes,const byte *Buffer,uint Count, myf MyFlags); extern uint my_pwrite(File Filedes,const byte *Buffer,uint Count, my_off_t offset,myf MyFlags); extern uint my_fread(FILE *stream,byte *Buffer,uint Count,myf MyFlags); extern uint my_fwrite(FILE *stream,const byte *Buffer,uint Count, myf MyFlags); extern my_off_t my_fseek(FILE *stream,my_off_t pos,int whence,myf MyFlags); extern my_off_t my_ftell(FILE *stream,myf MyFlags); extern gptr _mymalloc(uint uSize,const char *sFile, uint uLine, myf MyFlag); extern gptr _myrealloc(gptr pPtr,uint uSize,const char *sFile, uint uLine, myf MyFlag); extern gptr my_multi_malloc _VARARGS((myf MyFlags, ...)); extern void _myfree(gptr pPtr,const char *sFile,uint uLine, myf MyFlag); extern int _sanity(const char *sFile,unsigned int uLine); extern gptr _my_memdup(const byte *from,uint length, const char *sFile, uint uLine,myf MyFlag); extern my_string _my_strdup(const char *from, const char *sFile, uint uLine, myf MyFlag); #ifndef TERMINATE extern void TERMINATE(FILE *file); #endif extern void init_glob_errs(void); extern FILE *my_fopen(const char *FileName,int Flags,myf MyFlags); extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags); extern int my_fclose(FILE *fd,myf MyFlags); extern int my_chsize(File fd,my_off_t newlength,myf MyFlags); extern int my_error _VARARGS((int nr,myf MyFlags, ...)); extern int my_printf_error _VARARGS((uint my_err, const char *format, myf MyFlags, ...) __attribute__ ((format (printf, 2, 4)))); extern int my_vsnprintf( char *str, size_t n, const char *format, va_list ap ); extern int my_snprintf(char* to, size_t n, const char* fmt, ...); extern int my_message(uint my_err, const char *str,myf MyFlags); extern int my_message_no_curses(uint my_err, const char *str,myf MyFlags); extern int my_message_curses(uint my_err, const char *str,myf MyFlags); extern void my_init(void); extern void my_end(int infoflag); extern int my_redel(const char *from, const char *to, int MyFlags); extern int my_copystat(const char *from, const char *to, int MyFlags); extern my_string my_filename(File fd); extern void dont_break(void); extern void allow_break(void); extern void my_remember_signal(int signal_number,sig_handler (*func)(int)); extern void caseup(my_string str,uint length); extern void casedn(my_string str,uint length); extern void caseup_str(my_string str); extern void casedn_str(my_string str); extern void case_sort(my_string str,uint length); extern uint dirname_part(my_string to,const char *name); extern uint dirname_length(const char *name); #define base_name(A) (A+dirname_length(A)) extern int test_if_hard_path(const char *dir_name); extern char *convert_dirname(my_string name); extern void to_unix_path(my_string name); extern my_string fn_ext(const char *name); extern my_string fn_same(my_string toname,const char *name,int flag); extern my_string fn_format(my_string to,const char *name,const char *dsk, const char *form,int flag); extern size_s strlength(const char *str); extern void pack_dirname(my_string to,const char *from); extern uint unpack_dirname(my_string to,const char *from); extern uint cleanup_dirname(my_string to,const char *from); extern uint system_filename(my_string to,const char *from); extern my_string unpack_filename(my_string to,const char *from); extern my_string intern_filename(my_string to,const char *from); extern my_string directory_file_name(my_string dst, const char *src); extern int pack_filename(my_string to, const char *name, size_s max_length); extern my_string my_path(my_string to,const char *progname, const char *own_pathname_part); extern my_string my_load_path(my_string to, const char *path, const char *own_path_prefix); extern int wild_compare(const char *str,const char *wildstr); extern my_string my_strcasestr(const char *src,const char *suffix); extern int my_strcasecmp(const char *s,const char *t); extern int my_strsortcmp(const char *s,const char *t); extern int my_casecmp(const char *s,const char *t,uint length); extern int my_sortcmp(const char *s,const char *t,uint length); extern int my_sortncmp(const char *s,uint s_len, const char *t,uint t_len); extern WF_PACK *wf_comp(my_string str); extern int wf_test(struct wild_file_pack *wf_pack,const char *name); extern void wf_end(struct wild_file_pack *buffer); extern size_s stripp_sp(my_string str); extern void get_date(my_string to,int timeflag,time_t use_time); extern void soundex(my_string out_pntr, my_string in_pntr,pbool remove_garbage); extern int init_record_cache(RECORD_CACHE *info,uint cachesize,File file, uint reclength,enum cache_type type, pbool use_async_io); extern int read_cache_record(RECORD_CACHE *info,byte *to); extern int end_record_cache(RECORD_CACHE *info); extern int write_cache_record(RECORD_CACHE *info,my_off_t filepos, const byte *record,uint length); extern int flush_write_cache(RECORD_CACHE *info); extern long my_clock(void); extern sig_handler sigtstp_handler(int signal_number); extern void handle_recived_signals(void); extern int init_key_cache(ulong use_mem,ulong leave_this_much_mem); extern byte *key_cache_read(File file,my_off_t filepos,byte* buff,uint length, uint block_length,int return_buffer); extern int key_cache_write(File file,my_off_t filepos,byte* buff,uint length, uint block_length,int force_write); extern int flush_key_blocks(int file, enum flush_type type); extern void end_key_cache(void); extern sig_handler my_set_alarm_variable(int signo); extern void my_string_ptr_sort(void *base,uint items,size_s size); extern void radixsort_for_str_ptr(uchar* base[], uint number_of_elements, size_s size_of_element,uchar *buffer[]); extern qsort_t qsort2(void *base_ptr, size_t total_elems, size_t size, qsort2_cmp cmp, void *cmp_argument); extern qsort2_cmp get_ptr_compare(uint); extern int init_io_cache(IO_CACHE *info,File file,uint cachesize, enum cache_type type,my_off_t seek_offset, pbool use_async_io, myf cache_myflags); extern my_bool reinit_io_cache(IO_CACHE *info,enum cache_type type, my_off_t seek_offset,pbool use_async_io, pbool clear_cache); extern int _my_b_read(IO_CACHE *info,byte *Buffer,uint Count); extern int _my_b_net_read(IO_CACHE *info,byte *Buffer,uint Count); extern int _my_b_get(IO_CACHE *info); extern int _my_b_async_read(IO_CACHE *info,byte *Buffer,uint Count); extern int _my_b_write(IO_CACHE *info,const byte *Buffer,uint Count); extern int my_block_write(IO_CACHE *info, const byte *Buffer, uint Count, my_off_t pos); extern int flush_io_cache(IO_CACHE *info); extern int end_io_cache(IO_CACHE *info); extern uint my_b_fill(IO_CACHE *info); extern void my_b_seek(IO_CACHE *info,my_off_t pos); extern uint my_b_gets(IO_CACHE *info, char *to, uint max_length); extern uint my_b_printf(IO_CACHE *info, const char* fmt, ...); extern uint my_b_vprintf(IO_CACHE *info, const char* fmt, va_list ap); extern my_bool open_cached_file(IO_CACHE *cache,const char *dir, const char *prefix, uint cache_size, myf cache_myflags); extern my_bool real_open_cached_file(IO_CACHE *cache); extern void close_cached_file(IO_CACHE *cache); File create_temp_file(char *to, const char *dir, const char *pfx, int mode, myf MyFlags); extern my_bool init_dynamic_array(DYNAMIC_ARRAY *array,uint element_size, uint init_alloc,uint alloc_increment); extern my_bool insert_dynamic(DYNAMIC_ARRAY *array,gptr element); extern byte *alloc_dynamic(DYNAMIC_ARRAY *array); extern byte *pop_dynamic(DYNAMIC_ARRAY*); extern my_bool set_dynamic(DYNAMIC_ARRAY *array,gptr element,uint array_index); extern void get_dynamic(DYNAMIC_ARRAY *array,gptr element,uint array_index); extern void delete_dynamic(DYNAMIC_ARRAY *array); extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint array_index); extern void freeze_size(DYNAMIC_ARRAY *array); #define dynamic_array_ptr(array,array_index) ((array)->buffer+(array_index)*(array)->size_of_element) #define dynamic_element(array,array_index,type) ((type)((array)->buffer) +(array_index)) #define push_dynamic(A,B) insert_dynamic(A,B) extern int find_type(my_string x,TYPELIB *typelib,uint full_name); extern void make_type(my_string to,uint nr,TYPELIB *typelib); extern const char *get_type(TYPELIB *typelib,uint nr); extern my_bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str, uint init_alloc,uint alloc_increment); extern my_bool dynstr_append(DYNAMIC_STRING *str, const char *append); my_bool dynstr_append_mem(DYNAMIC_STRING *str, const char *append, uint length); extern my_bool dynstr_set(DYNAMIC_STRING *str, const char *init_str); extern my_bool dynstr_realloc(DYNAMIC_STRING *str, ulong additional_size); extern void dynstr_free(DYNAMIC_STRING *str); void set_all_changeable_vars(CHANGEABLE_VAR *vars); my_bool set_changeable_var(my_string str,CHANGEABLE_VAR *vars); my_bool set_changeable_varval(const char *var, ulong val, CHANGEABLE_VAR *vars); #ifdef HAVE_MLOCK extern byte *my_malloc_lock(uint length,myf flags); extern void my_free_lock(byte *ptr,myf flags); #else #define my_malloc_lock(A,B) my_malloc((A),(B)) #define my_free_lock(A,B) my_free((A),(B)) #endif #define alloc_root_inited(A) ((A)->min_malloc != 0) void init_alloc_root(MEM_ROOT *mem_root, uint block_size, uint pre_alloc_size); gptr alloc_root(MEM_ROOT *mem_root,unsigned int Size); void free_root(MEM_ROOT *root, myf MyFLAGS); char *strdup_root(MEM_ROOT *root,const char *str); char *memdup_root(MEM_ROOT *root,const char *str,uint len); void load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv); void free_defaults(char **argv); void print_defaults(const char *conf_file, const char **groups); my_bool my_compress(byte *, ulong *, ulong *); my_bool my_uncompress(byte *, ulong *, ulong *); byte *my_compress_alloc(const byte *packet, ulong *len, ulong *complen); ulong checksum(const byte *mem, uint count); #if defined(_MSC_VER) && !defined(__WIN__) extern void sleep(int sec); #endif #ifdef __WIN__ extern my_bool have_tcpip; /* Is set if tcpip is used */ #endif #ifdef __cplusplus } #endif #include "raid.h" #endif /* _my_sys_h */ kêÄ)ý&¤�B)x”·:k�·:k�·:!)vB)./usr/local/include/mysql/mysql.hhainó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* defines for the libmysql library */ #ifndef _mysql_h #define _mysql_h #ifndef MYSQL_SERVER #ifdef __cplusplus extern "C" { #endif #endif #ifndef _global_h /* If not standard header */ #include typedef char my_bool; #if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__) #define __WIN__ #endif #if !defined(__WIN__) #define STDCALL #else #define STDCALL __stdcall #endif typedef char * gptr; #ifndef ST_USED_MEM_DEFINED #define ST_USED_MEM_DEFINED typedef struct st_used_mem { /* struct for once_alloc */ struct st_used_mem *next; /* Next block in use */ unsigned int left; /* memory left in block */ unsigned int size; /* size of block */ } USED_MEM; typedef struct st_mem_root { USED_MEM *free; USED_MEM *used; USED_MEM *pre_alloc; unsigned int min_malloc; unsigned int block_size; void (*error_handler)(void); } MEM_ROOT; #endif #ifndef my_socket_defined #ifdef __WIN__ #define my_socket SOCKET #else typedef int my_socket; #endif #endif #endif #include "mysql_com.h" #include "mysql_version.h" extern unsigned int mysql_port; extern char *mysql_unix_port; #define IS_PRI_KEY(n) ((n) & PRI_KEY_FLAG) #define IS_NOT_NULL(n) ((n) & NOT_NULL_FLAG) #define IS_BLOB(n) ((n) & BLOB_FLAG) #define IS_NUM(t) ((t) <= FIELD_TYPE_INT24 || (t) == FIELD_TYPE_YEAR) #define IS_NUM_FIELD(f) ((f)->flags & NUM_FLAG) #define INTERNAL_NUM_FIELD(f) (((f)->type <= FIELD_TYPE_INT24 && ((f)->type != FIELD_TYPE_TIMESTAMP || (f)->length == 14 || (f)->length == 8)) || (f)->type == FIELD_TYPE_YEAR) typedef struct st_mysql_field { char *name; /* Name of column */ char *table; /* Table of column if column was a field */ char *def; /* Default value (set by mysql_list_fields) */ enum enum_field_types type; /* Type of field. Se mysql_com.h for types */ unsigned int length; /* Width of column */ unsigned int max_length; /* Max width of selected set */ unsigned int flags; /* Div flags */ unsigned int decimals; /* Number of decimals in field */ } MYSQL_FIELD; typedef char **MYSQL_ROW; /* return data as array of strings */ typedef unsigned int MYSQL_FIELD_OFFSET; /* offset to current field */ #if defined(NO_CLIENT_LONG_LONG) typedef unsigned long my_ulonglong; #elif defined (__WIN__) typedef unsigned __int64 my_ulonglong; #else typedef unsigned long long my_ulonglong; #endif #define MYSQL_COUNT_ERROR (~(my_ulonglong) 0) typedef struct st_mysql_rows { struct st_mysql_rows *next; /* list of rows */ MYSQL_ROW data; } MYSQL_ROWS; typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; /* offset to current row */ typedef struct st_mysql_data { my_ulonglong rows; unsigned int fields; MYSQL_ROWS *data; MEM_ROOT alloc; } MYSQL_DATA; struct st_mysql_options { unsigned int connect_timeout,client_flag; my_bool compress,named_pipe; unsigned int port; char *host,*init_command,*user,*password,*unix_socket,*db; char *my_cnf_file,*my_cnf_group, *charset_dir, *charset_name; my_bool use_ssl; /* if to use SSL or not */ char *ssl_key; /* PEM key file */ char *ssl_cert; /* PEM cert file */ char *ssl_ca; /* PEM CA file */ char *ssl_capath; /* PEM directory of CA-s? */ }; enum mysql_option { MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE, MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP, MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME}; enum mysql_status { MYSQL_STATUS_READY,MYSQL_STATUS_GET_RESULT, MYSQL_STATUS_USE_RESULT}; typedef struct st_mysql { NET net; /* Communication parameters */ gptr connector_fd; /* ConnectorFd for SSL */ char *host,*user,*passwd,*unix_socket,*server_version,*host_info, *info,*db; unsigned int port,client_flag,server_capabilities; unsigned int protocol_version; unsigned int field_count; unsigned int server_status; unsigned long thread_id; /* Id for connection in server */ my_ulonglong affected_rows; my_ulonglong insert_id; /* id if insert on table with NEXTNR */ my_ulonglong extra_info; /* Used by mysqlshow */ unsigned long packet_length; enum mysql_status status; MYSQL_FIELD *fields; MEM_ROOT field_alloc; my_bool free_me; /* If free in mysql_close */ my_bool reconnect; /* set to 1 if automatic reconnect */ struct st_mysql_options options; char scramble_buff[9]; struct charset_info_st *charset; unsigned int server_language; } MYSQL; typedef struct st_mysql_res { my_ulonglong row_count; unsigned int field_count, current_field; MYSQL_FIELD *fields; MYSQL_DATA *data; MYSQL_ROWS *data_cursor; MEM_ROOT field_alloc; MYSQL_ROW row; /* If unbuffered read */ MYSQL_ROW current_row; /* buffer to current row */ unsigned long *lengths; /* column lengths of current row */ MYSQL *handle; /* for unbuffered reads */ my_bool eof; /* Used my mysql_fetch_row */ } MYSQL_RES; /* Functions to get information from the MYSQL and MYSQL_RES structures */ /* Should definitely be used if one uses shared libraries */ my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res); unsigned int STDCALL mysql_num_fields(MYSQL_RES *res); my_bool STDCALL mysql_eof(MYSQL_RES *res); MYSQL_FIELD *STDCALL mysql_fetch_field_direct(MYSQL_RES *res, unsigned int fieldnr); MYSQL_FIELD * STDCALL mysql_fetch_fields(MYSQL_RES *res); MYSQL_ROWS * STDCALL mysql_row_tell(MYSQL_RES *res); unsigned int STDCALL mysql_field_tell(MYSQL_RES *res); unsigned int STDCALL mysql_field_count(MYSQL *mysql); my_ulonglong STDCALL mysql_affected_rows(MYSQL *mysql); my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql); unsigned int STDCALL mysql_errno(MYSQL *mysql); char * STDCALL mysql_error(MYSQL *mysql); char * STDCALL mysql_info(MYSQL *mysql); unsigned long STDCALL mysql_thread_id(MYSQL *mysql); const char * STDCALL mysql_character_set_name(MYSQL *mysql); MYSQL * STDCALL mysql_init(MYSQL *mysql); #ifdef HAVE_OPENSSL int STDCALL mysql_ssl_set(MYSQL *mysql, const char *key, const char *cert, const char *ca, const char *capath); char * STDCALL mysql_ssl_cipher(MYSQL *mysql); int STDCALL mysql_ssl_clear(MYSQL *mysql); #endif /* HAVE_OPENSSL */ MYSQL * STDCALL mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd); my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user, const char *passwd, const char *db); #if MYSQL_VERSION_ID >= 32200 MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int clientflag); #else MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, unsigned int port, const char *unix_socket, unsigned int clientflag); #endif void STDCALL mysql_close(MYSQL *sock); int STDCALL mysql_select_db(MYSQL *mysql, const char *db); int STDCALL mysql_query(MYSQL *mysql, const char *q); int STDCALL mysql_send_query(MYSQL *mysql, const char *q, unsigned int length); int STDCALL mysql_read_query_result(MYSQL *mysql); int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned int length); int STDCALL mysql_create_db(MYSQL *mysql, const char *DB); int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB); int STDCALL mysql_shutdown(MYSQL *mysql); int STDCALL mysql_dump_debug_info(MYSQL *mysql); int STDCALL mysql_refresh(MYSQL *mysql, unsigned int refresh_options); int STDCALL mysql_kill(MYSQL *mysql,unsigned long pid); int STDCALL mysql_ping(MYSQL *mysql); char * STDCALL mysql_stat(MYSQL *mysql); char * STDCALL mysql_get_server_info(MYSQL *mysql); char * STDCALL mysql_get_client_info(void); char * STDCALL mysql_get_host_info(MYSQL *mysql); unsigned int STDCALL mysql_get_proto_info(MYSQL *mysql); MYSQL_RES * STDCALL mysql_list_dbs(MYSQL *mysql,const char *wild); MYSQL_RES * STDCALL mysql_list_tables(MYSQL *mysql,const char *wild); MYSQL_RES * STDCALL mysql_list_fields(MYSQL *mysql, const char *table, const char *wild); MYSQL_RES * STDCALL mysql_list_processes(MYSQL *mysql); MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql); MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql); int STDCALL mysql_options(MYSQL *mysql,enum mysql_option option, const char *arg); void STDCALL mysql_free_result(MYSQL_RES *result); void STDCALL mysql_data_seek(MYSQL_RES *result, my_ulonglong offset); MYSQL_ROW_OFFSET STDCALL mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET); MYSQL_FIELD_OFFSET STDCALL mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset); MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result); unsigned long * STDCALL mysql_fetch_lengths(MYSQL_RES *result); MYSQL_FIELD * STDCALL mysql_fetch_field(MYSQL_RES *result); unsigned long STDCALL mysql_escape_string(char *to,const char *from, unsigned long from_length); unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql, char *to,const char *from, unsigned long length); void STDCALL mysql_debug(const char *debug); char * STDCALL mysql_odbc_escape_string(MYSQL *mysql, char *to, unsigned long to_length, const char *from, unsigned long from_length, void *param, char * (*extend_buffer) (void *, char *to, unsigned long *length)); void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name); unsigned int STDCALL mysql_thread_safe(void); #define mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT) /* new api functions */ #define HAVE_MYSQL_REAL_CONNECT #ifndef MYSQL_SERVER #ifdef __cplusplus } #endif #endif #endif l); ch kê'þ&¤�–!x”·:l�·:l�·:!/v–!./usr/local/include/mysql/mysql_com.hinó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* ** Common definition between mysql server & client */ #ifndef _mysql_com_h #define _mysql_com_h #define NAME_LEN 64 /* Field/table name length */ #define HOSTNAME_LENGTH 60 #define USERNAME_LENGTH 16 #define SERVER_VERSION_LENGTH 60 #define LOCAL_HOST "localhost" #define LOCAL_HOST_NAMEDPIPE "." #if defined(__WIN__) && !defined( _CUSTOMCONFIG_) #define MYSQL_NAMEDPIPE "MySQL" #define MYSQL_SERVICENAME "MySql" #endif /* __WIN__ */ enum enum_server_command {COM_SLEEP,COM_QUIT,COM_INIT_DB,COM_QUERY, COM_FIELD_LIST,COM_CREATE_DB,COM_DROP_DB,COM_REFRESH, COM_SHUTDOWN,COM_STATISTICS, COM_PROCESS_INFO,COM_CONNECT,COM_PROCESS_KILL, COM_DEBUG,COM_PING,COM_TIME,COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP, COM_TABLE_DUMP, COM_CONNECT_OUT}; #define NOT_NULL_FLAG 1 /* Field can't be NULL */ #define PRI_KEY_FLAG 2 /* Field is part of a primary key */ #define UNIQUE_KEY_FLAG 4 /* Field is part of a unique key */ #define MULTIPLE_KEY_FLAG 8 /* Field is part of a key */ #define BLOB_FLAG 16 /* Field is a blob */ #define UNSIGNED_FLAG 32 /* Field is unsigned */ #define ZEROFILL_FLAG 64 /* Field is zerofill */ #define BINARY_FLAG 128 /* The following are only sent to new clients */ #define ENUM_FLAG 256 /* field is an enum */ #define AUTO_INCREMENT_FLAG 512 /* field is a autoincrement field */ #define TIMESTAMP_FLAG 1024 /* Field is a timestamp */ #define SET_FLAG 2048 /* field is a set */ #define NUM_FLAG 32768 /* Field is num (for clients) */ #define PART_KEY_FLAG 16384 /* Intern; Part of some key */ #define GROUP_FLAG 32768 /* Intern: Group field */ #define UNIQUE_FLAG 65536 /* Intern: Used by sql_yacc */ #define REFRESH_GRANT 1 /* Refresh grant tables */ #define REFRESH_LOG 2 /* Start on new log file */ #define REFRESH_TABLES 4 /* close all tables */ #define REFRESH_HOSTS 8 /* Flush host cache */ #define REFRESH_STATUS 16 /* Flush status variables */ #define REFRESH_THREADS 32 /* Flush status variables */ #define REFRESH_SLAVE 64 /* Reset master info and restart slave thread */ #define REFRESH_MASTER 128 /* Remove all bin logs in the index and truncate the index */ /* The following can't be set with mysql_refresh() */ #define REFRESH_READ_LOCK 16384 /* Lock tables for read */ #define REFRESH_FAST 32768 /* Intern flag */ #define CLIENT_LONG_PASSWORD 1 /* new more secure passwords */ #define CLIENT_FOUND_ROWS 2 /* Found instead of affected rows */ #define CLIENT_LONG_FLAG 4 /* Get all column flags */ #define CLIENT_CONNECT_WITH_DB 8 /* One can specify db on connect */ #define CLIENT_NO_SCHEMA 16 /* Don't allow database.table.column */ #define CLIENT_COMPRESS 32 /* Can use compression protocol */ #define CLIENT_ODBC 64 /* Odbc client */ #define CLIENT_LOCAL_FILES 128 /* Can use LOAD DATA LOCAL */ #define CLIENT_IGNORE_SPACE 256 /* Ignore spaces before '(' */ #define CLIENT_CHANGE_USER 512 /* Support the mysql_change_user() */ #define CLIENT_INTERACTIVE 1024 /* This is an interactive client */ #define CLIENT_SSL 2048 /* Switch to SSL after handshake */ #define CLIENT_IGNORE_SIGPIPE 4096 /* IGNORE sigpipes */ #define CLIENT_TRANSACTIONS 8192 /* Client knows about transactions */ #define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */ #define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */ #define MYSQL_ERRMSG_SIZE 200 #define NET_READ_TIMEOUT 30 /* Timeout on read */ #define NET_WRITE_TIMEOUT 60 /* Timeout on write */ #define NET_WAIT_TIMEOUT 8*60*60 /* Wait for new query */ #ifndef Vio_defined #define Vio_defined #ifdef HAVE_VIO class Vio; /* Fill Vio class in C++ */ #else struct st_vio; /* Only C */ typedef struct st_vio Vio; #endif #endif typedef struct st_net { Vio* vio; my_socket fd; /* For Perl DBI/dbd */ int fcntl; unsigned char *buff,*buff_end,*write_pos,*read_pos; char last_error[MYSQL_ERRMSG_SIZE]; unsigned int last_errno,max_packet,timeout,pkt_nr; unsigned char error; my_bool return_errno,compress; my_bool no_send_ok; /* needed if we are doing several queries in one command ( as in LOAD TABLE ... FROM MASTER ), and do not want to confuse the client with OK at the wrong time */ unsigned long remain_in_buf,length, buf_length, where_b; unsigned int *return_status; unsigned char reading_or_writing; char save_char; } NET; #define packet_error ((unsigned int) -1) enum enum_field_types { FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY, FIELD_TYPE_SHORT, FIELD_TYPE_LONG, FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE, FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP, FIELD_TYPE_LONGLONG,FIELD_TYPE_INT24, FIELD_TYPE_DATE, FIELD_TYPE_TIME, FIELD_TYPE_DATETIME, FIELD_TYPE_YEAR, FIELD_TYPE_NEWDATE, FIELD_TYPE_ENUM=247, FIELD_TYPE_SET=248, FIELD_TYPE_TINY_BLOB=249, FIELD_TYPE_MEDIUM_BLOB=250, FIELD_TYPE_LONG_BLOB=251, FIELD_TYPE_BLOB=252, FIELD_TYPE_VAR_STRING=253, FIELD_TYPE_STRING=254 }; #define FIELD_TYPE_CHAR FIELD_TYPE_TINY /* For compability */ #define FIELD_TYPE_INTERVAL FIELD_TYPE_ENUM /* For compability */ extern unsigned long max_allowed_packet; extern unsigned long net_buffer_length; #define net_new_transaction(net) ((net)->pkt_nr=0) int my_net_init(NET *net, Vio* vio); void net_end(NET *net); void net_clear(NET *net); int net_flush(NET *net); int my_net_write(NET *net,const char *packet,unsigned long len); int net_write_command(NET *net,unsigned char command,const char *packet, unsigned long len); int net_real_write(NET *net,const char *packet,unsigned long len); unsigned int my_net_read(NET *net); struct rand_struct { unsigned long seed1,seed2,max_value; double max_value_dbl; }; /* The following is for user defined functions */ enum Item_result {STRING_RESULT,REAL_RESULT,INT_RESULT}; typedef struct st_udf_args { unsigned int arg_count; /* Number of arguments */ enum Item_result *arg_type; /* Pointer to item_results */ char **args; /* Pointer to argument */ unsigned long *lengths; /* Length of string arguments */ char *maybe_null; /* Set to 1 for all maybe_null args */ } UDF_ARGS; /* This holds information about the result */ typedef struct st_udf_init { my_bool maybe_null; /* 1 if function can return NULL */ unsigned int decimals; /* for real functions */ unsigned int max_length; /* For string functions */ char *ptr; /* free pointer for function data */ my_bool const_item; /* 0 if result is independent of arguments */ } UDF_INIT; /* Constants when using compression */ #define NET_HEADER_SIZE 4 /* standard header size */ #define COMP_HEADER_SIZE 3 /* compression header extra size */ /* Prototypes to password functions */ #ifdef __cplusplus extern "C" { #endif void randominit(struct rand_struct *,unsigned long seed1, unsigned long seed2); double rnd(struct rand_struct *); void make_scrambled_password(char *to,const char *password); void get_salt_from_password(unsigned long *res,const char *password); void make_password_from_salt(char *to, unsigned long *hash_res); char *scramble(char *to,const char *message,const char *password, my_bool old_ver); my_bool check_scramble(const char *, const char *message, unsigned long *salt,my_bool old_ver); char *get_tty_password(char *opt_message); void hash_password(unsigned long *result, const char *password); #ifdef __cplusplus } #endif /* Some other useful functions */ void my_init(void); void load_defaults(const char *conf_file, const char **groups, int *argc, char ***argv); #define NULL_LENGTH ((unsigned long) ~0) /* For net_store_length */ #ifdef __WIN__ #define socket_errno WSAGetLastError() #else #define socket_errno errno #endif #endif *  kê=ÿ&¤�/x”·:l�·:l�·:! v/./usr/local/include/mysql/mysqld_error.hshURCEó/¤�/* Definefile for errormessagenumbers */ #define ER_HASHCHK 1000 #define ER_NISAMCHK 1001 #define ER_NO 1002 #define ER_YES 1003 #define ER_CANT_CREATE_FILE 1004 #define ER_CANT_CREATE_TABLE 1005 #define ER_CANT_CREATE_DB 1006 #define ER_DB_CREATE_EXISTS 1007 #define ER_DB_DROP_EXISTS 1008 #define ER_DB_DROP_DELETE 1009 #define ER_DB_DROP_RMDIR 1010 #define ER_CANT_DELETE_FILE 1011 #define ER_CANT_FIND_SYSTEM_REC 1012 #define ER_CANT_GET_STAT 1013 #define ER_CANT_GET_WD 1014 #define ER_CANT_LOCK 1015 #define ER_CANT_OPEN_FILE 1016 #define ER_FILE_NOT_FOUND 1017 #define ER_CANT_READ_DIR 1018 #define ER_CANT_SET_WD 1019 #define ER_CHECKREAD 1020 #define ER_DISK_FULL 1021 #define ER_DUP_KEY 1022 #define ER_ERROR_ON_CLOSE 1023 #define ER_ERROR_ON_READ 1024 #define ER_ERROR_ON_RENAME 1025 #define ER_ERROR_ON_WRITE 1026 #define ER_FILE_USED 1027 #define ER_FILSORT_ABORT 1028 #define ER_FORM_NOT_FOUND 1029 #define ER_GET_ERRNO 1030 #define ER_ILLEGAL_HA 1031 #define ER_KEY_NOT_FOUND 1032 #define ER_NOT_FORM_FILE 1033 #define ER_NOT_KEYFILE 1034 #define ER_OLD_KEYFILE 1035 #define ER_OPEN_AS_READONLY 1036 #define ER_OUTOFMEMORY 1037 #define ER_OUT_OF_SORTMEMORY 1038 #define ER_UNEXPECTED_EOF 1039 #define ER_CON_COUNT_ERROR 1040 #define ER_OUT_OF_RESOURCES 1041 #define ER_BAD_HOST_ERROR 1042 #define ER_HANDSHAKE_ERROR 1043 #define ER_DBACCESS_DENIED_ERROR 1044 #define ER_ACCESS_DENIED_ERROR 1045 #define ER_NO_DB_ERROR 1046 #define ER_UNKNOWN_COM_ERROR 1047 #define ER_BAD_NULL_ERROR 1048 #define ER_BAD_DB_ERROR 1049 #define ER_TABLE_EXISTS_ERROR 1050 #define ER_BAD_TABLE_ERROR 1051 #define ER_NON_UNIQ_ERROR 1052 #define ER_SERVER_SHUTDOWN 1053 #define ER_BAD_FIELD_ERROR 1054 #define ER_WRONG_FIELD_WITH_GROUP 1055 #define ER_WRONG_GROUP_FIELD 1056 #define ER_WRONG_SUM_SELECT 1057 #define ER_WRONG_VALUE_COUNT 1058 #define ER_TOO_LONG_IDENT 1059 #define ER_DUP_FIELDNAME 1060 #define ER_DUP_KEYNAME 1061 #define ER_DUP_ENTRY 1062 #define ER_WRONG_FIELD_SPEC 1063 #define ER_PARSE_ERROR 1064 #define ER_EMPTY_QUERY 1065 #define ER_NONUNIQ_TABLE 1066 #define ER_INVALID_DEFAULT 1067 #define ER_MULTIPLE_PRI_KEY 1068 #define ER_TOO_MANY_KEYS 1069 #define ER_TOO_MANY_KEY_PARTS 1070 #define ER_TOO_LONG_KEY 1071 #define ER_KEY_COLUMN_DOES_NOT_EXITS 1072 #define ER_BLOB_USED_AS_KEY 1073 #define ER_TOO_BIG_FIELDLENGTH 1074 #define ER_WRONG_AUTO_KEY 1075 #define ER_READY 1076 #define ER_NORMAL_SHUTDOWN 1077 #define ER_GOT_SIGNAL 1078 #define ER_SHUTDOWN_COMPLETE 1079 #define ER_FORCING_CLOSE 1080 #define ER_IPSOCK_ERROR 1081 #define ER_NO_SUCH_INDEX 1082 #define ER_WRONG_FIELD_TERMINATORS 1083 #define ER_BLOBS_AND_NO_TERMINATED 1084 #define ER_TEXTFILE_NOT_READABLE 1085 #define ER_FILE_EXISTS_ERROR 1086 #define ER_LOAD_INFO 1087 #define ER_ALTER_INFO 1088 #define ER_WRONG_SUB_KEY 1089 #define ER_CANT_REMOVE_ALL_FIELDS 1090 #define ER_CANT_DROP_FIELD_OR_KEY 1091 #define ER_INSERT_INFO 1092 #define ER_INSERT_TABLE_USED 1093 #define ER_NO_SUCH_THREAD 1094 #define ER_KILL_DENIED_ERROR 1095 #define ER_NO_TABLES_USED 1096 #define ER_TOO_BIG_SET 1097 #define ER_NO_UNIQUE_LOGFILE 1098 #define ER_TABLE_NOT_LOCKED_FOR_WRITE 1099 #define ER_TABLE_NOT_LOCKED 1100 #define ER_BLOB_CANT_HAVE_DEFAULT 1101 #define ER_WRONG_DB_NAME 1102 #define ER_WRONG_TABLE_NAME 1103 #define ER_TOO_BIG_SELECT 1104 #define ER_UNKNOWN_ERROR 1105 #define ER_UNKNOWN_PROCEDURE 1106 #define ER_WRONG_PARAMCOUNT_TO_PROCEDURE 1107 #define ER_WRONG_PARAMETERS_TO_PROCEDURE 1108 #define ER_UNKNOWN_TABLE 1109 #define ER_FIELD_SPECIFIED_TWICE 1110 #define ER_INVALID_GROUP_FUNC_USE 1111 #define ER_UNSUPPORTED_EXTENSION 1112 #define ER_TABLE_MUST_HAVE_COLUMNS 1113 #define ER_RECORD_FILE_FULL 1114 #define ER_UNKNOWN_CHARACTER_SET 1115 #define ER_TOO_MANY_TABLES 1116 #define ER_TOO_MANY_FIELDS 1117 #define ER_TOO_BIG_ROWSIZE 1118 #define ER_STACK_OVERRUN 1119 #define ER_WRONG_OUTER_JOIN 1120 #define ER_NULL_COLUMN_IN_INDEX 1121 #define ER_CANT_FIND_UDF 1122 #define ER_CANT_INITIALIZE_UDF 1123 #define ER_UDF_NO_PATHS 1124 #define ER_UDF_EXISTS 1125 #define ER_CANT_OPEN_LIBRARY 1126 #define ER_CANT_FIND_DL_ENTRY 1127 #define ER_FUNCTION_NOT_DEFINED 1128 #define ER_HOST_IS_BLOCKED 1129 #define ER_HOST_NOT_PRIVILEGED 1130 #define ER_PASSWORD_ANONYMOUS_USER 1131 #define ER_PASSWORD_NOT_ALLOWED 1132 #define ER_PASSWORD_NO_MATCH 1133 #define ER_UPDATE_INFO 1134 #define ER_CANT_CREATE_THREAD 1135 #define ER_WRONG_VALUE_COUNT_ON_ROW 1136 #define ER_CANT_REOPEN_TABLE 1137 #define ER_INVALID_USE_OF_NULL 1138 #define ER_REGEXP_ERROR 1139 #define ER_MIX_OF_GROUP_FUNC_AND_FIELDS 1140 #define ER_NONEXISTING_GRANT 1141 #define ER_TABLEACCESS_DENIED_ERROR 1142 #define ER_COLUMNACCESS_DENIED_ERROR 1143 #define ER_ILLEGAL_GRANT_FOR_TABLE 1144 #define ER_GRANT_WRONG_HOST_OR_USER 1145 #define ER_NO_SUCH_TABLE 1146 #define ER_NONEXISTING_TABLE_GRANT 1147 #define ER_NOT_ALLOWED_COMMAND 1148 #define ER_SYNTAX_ERROR 1149 #define ER_DELAYED_CANT_CHANGE_LOCK 1150 #define ER_TOO_MANY_DELAYED_THREADS 1151 #define ER_ABORTING_CONNECTION 1152 #define ER_NET_PACKET_TOO_LARGE 1153 #define ER_NET_READ_ERROR_FROM_PIPE 1154 #define ER_NET_FCNTL_ERROR 1155 #define ER_NET_PACKETS_OUT_OF_ORDER 1156 #define ER_NET_UNCOMPRESS_ERROR 1157 #define ER_NET_READ_ERROR 1158 #define ER_NET_READ_INTERRUPTED 1159 #define ER_NET_ERROR_ON_WRITE 1160 #define ER_NET_WRITE_INTERRUPTED 1161 #define ER_TOO_LONG_STRING 1162 #define ER_TABLE_CANT_HANDLE_BLOB 1163 #define ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 1164 #define ER_DELAYED_INSERT_TABLE_LOCKED 1165 #define ER_WRONG_COLUMN_NAME 1166 #define ER_WRONG_KEY_COLUMN 1167 #define ER_WRONG_MRG_TABLE 1168 #define ER_DUP_UNIQUE 1169 #define ER_BLOB_KEY_WITHOUT_LENGTH 1170 #define ER_PRIMARY_CANT_HAVE_NULL 1171 #define ER_TOO_MANY_ROWS 1172 #define ER_REQUIRES_PRIMARY_KEY 1173 #define ER_NO_RAID_COMPILED 1174 #define ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE 1175 #define ER_KEY_DOES_NOT_EXITS 1176 #define ER_CHECK_NO_SUCH_TABLE 1177 #define ER_CHECK_NOT_IMPLEMENTED 1178 #define ER_CANT_DO_THIS_DURING_AN_TRANSACTION 1179 #define ER_ERROR_DURING_COMMIT 1180 #define ER_ERROR_DURING_ROLLBACK 1181 #define ER_ERROR_DURING_FLUSH_LOGS 1182 #define ER_ERROR_DURING_CHECKPOINT 1183 #define ER_NEW_ABORTING_CONNECTION 1184 #define ER_DUMP_NOT_IMPLEMENTED 1185 #define ER_FLUSH_MASTER_BINLOG_CLOSED 1186 #define ER_INDEX_REBUILD 1187 #define ER_MASTER 1188 #define ER_MASTER_NET_READ 1189 #define ER_MASTER_NET_WRITE 1190 #define ER_FT_MATCHING_KEY_NOT_FOUND 1191 #define ER_LOCK_OR_ACTIVE_TRANSACTION 1192 #define ER_UNKNOWN_SYSTEM_VARIABLE 1193 #define ER_CRASHED_ON_USAGE 1194 #define ER_CRASHED_ON_REPAIR 1195 #define ER_WARNING_NOT_COMPLETE_ROLLBACK 1196 #define ER_TRANS_CACHE_FULL 1197 #define ER_SLAVE_MUST_STOP 1198 #define ER_SLAVE_NOT_RUNNING 1199 #define ER_BAD_SLAVE 1200 #define ER_MASTER_INFO 1201 #define ER_SLAVE_THREAD 1202 #define ER_TOO_MANY_USER_CONNECTIONS 1203 #define ER_SET_CONSTANTS_ONLY 1204 #define ER_ERROR_MESSAGES 205 _ kêô‰'¤�+x”·:m�·:m�·:!0 v+./usr/local/include/mysql/my_list.hor.hó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifndef _list_h_ #define _list_h_ #ifdef __cplusplus extern "C" { #endif typedef struct st_list { struct st_list *prev,*next; void *data; } LIST; typedef int (*list_walk_action)(void *,void *); extern LIST *list_add(LIST *root,LIST *element); extern LIST *list_delete(LIST *root,LIST *element); extern LIST *list_cons(void *data,LIST *root); extern LIST *list_reverse(LIST *root); extern void list_free(LIST *root,pbool free_data); extern uint list_length(LIST *list); extern int list_walk(LIST *list,list_walk_action action,gptr argument); #define rest(a) ((a)->next) #define list_push(a,b) (a)=list_cons((b),(a)) #define list_pop(A) {LIST *old=(A); (A)=list_delete(old,old) ; my_free((gptr) old,MYF(MY_FAE)); } #ifdef __cplusplus } #endif #endif T_LEN kê G'¤�ÄPx”·:m�·:m�·:! €xÄP./usr/local/include/mysql/my_pthread.hhó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* Defines to make different thread packages compatible */ #ifndef _my_pthread_h #define _my_pthread_h #include #ifndef ETIME #define ETIME ETIMEDOUT /* For FreeBSD */ #endif #if defined(__WIN__) typedef CRITICAL_SECTION pthread_mutex_t; typedef HANDLE pthread_t; typedef struct thread_attr { DWORD dwStackSize ; DWORD dwCreatingFlag ; int priority ; } pthread_attr_t ; typedef struct { int dummy; } pthread_condattr_t; /* Implementation of posix conditions */ typedef struct st_pthread_link { DWORD thread_id; struct st_pthread_link *next; } pthread_link; typedef struct { uint32 waiting; HANDLE semaphore; } pthread_cond_t; struct timespec { /* For pthread_cond_timedwait() */ time_t tv_sec; long tv_nsec; }; typedef int pthread_mutexattr_t; #define win_pthread_self my_thread_var->pthread_self #define pthread_handler_decl(A,B) void * __cdecl A(void *B) typedef void * (__cdecl *pthread_handler)(void *); void win_pthread_init(void); int win_pthread_setspecific(void *A,void *B,uint length); int pthread_create(pthread_t *,pthread_attr_t *,pthread_handler,void *); int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr); int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, struct timespec *abstime); int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond); int pthread_cond_destroy(pthread_cond_t *cond); int pthread_attr_init(pthread_attr_t *connect_att); int pthread_attr_setstacksize(pthread_attr_t *connect_att,DWORD stack); int pthread_attr_setprio(pthread_attr_t *connect_att,int priority); int pthread_attr_destroy(pthread_attr_t *connect_att); struct tm *localtime_r(const time_t *timep,struct tm *tmp); void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/ #define ETIMEDOUT 145 /* Win32 doesn't have this */ #define getpid() GetCurrentThreadId() #define pthread_self() win_pthread_self #define HAVE_LOCALTIME_R #define _REENTRANT #define HAVE_PTHREAD_ATTR_SETSTACKSIZE #ifdef USE_TLS /* For LIBMYSQL.DLL */ #undef SAFE_MUTEX /* This will cause conflicts */ #define pthread_key(T,V) DWORD V #define pthread_key_create(A,B) ((*A=TlsAlloc())==0xFFFFFFFF) #define pthread_getspecific(A) (TlsGetValue(A)) #define my_pthread_getspecific(T,A) ((T) TlsGetValue(A)) #define my_pthread_getspecific_ptr(T,V) ((T) TlsGetValue(V)) #define my_pthread_setspecific_ptr(T,V) (!TlsSetValue((T),(V))) #define pthread_setspecific(A,B) (!TlsSetValue((A),(B))) #else #define pthread_key(T,V) __declspec(thread) T V #define pthread_key_create(A,B) pthread_dummy(0) #define pthread_getspecific(A) (&(A)) #define my_pthread_getspecific(T,A) (&(A)) #define my_pthread_getspecific_ptr(T,V) (V) #define my_pthread_setspecific_ptr(T,V) ((T)=(V),0) #define pthread_setspecific(A,B) win_pthread_setspecific(&(A),(B),sizeof(A)) #endif /* USE_TLS */ #define pthread_equal(A,B) ((A) == (B)) #define pthread_mutex_init(A,B) InitializeCriticalSection(A) #define pthread_mutex_lock(A) (EnterCriticalSection(A),0) #define pthread_mutex_unlock(A) LeaveCriticalSection(A) #define pthread_mutex_destroy(A) DeleteCriticalSection(A) #define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B)) /* Dummy defines for easier code */ #define pthread_kill(A,B) pthread_dummy(0) #define pthread_attr_setdetachstate(A,B) pthread_dummy(0) #define my_pthread_attr_setprio(A,B) pthread_attr_setprio(A,B) #define pthread_attr_setscope(A,B) #define pthread_detach_this_thread() #define pthread_condattr_init(A) #define pthread_condattr_destroy(A) /*Irena: compiler does not like this: */ /*#define my_pthread_getprio(pthread_t thread_id) pthread_dummy(0) */ #define my_pthread_getprio(thread_id) pthread_dummy(0) #elif defined(HAVE_UNIXWARE7_THREADS) #include #include #ifndef _REENTRANT #define _REENTRANT #endif #define HAVE_NONPOSIX_SIGWAIT #define pthread_t thread_t #define pthread_cond_t cond_t #define pthread_mutex_t mutex_t #define pthread_key_t thread_key_t typedef int pthread_attr_t; /* Needed by Unixware 7.0.0 */ #define pthread_key_create(A,B) thr_keycreate((A),(B)) #define pthread_handler_decl(A,B) void *A(void *B) #define pthread_key(T,V) pthread_key_t V void * my_pthread_getspecific_imp(pthread_key_t key); #define my_pthread_getspecific(A,B) ((A) my_pthread_getspecific_imp(B)) #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,V) #define pthread_setspecific(A,B) thr_setspecific(A,B) #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,V) #define pthread_create(A,B,C,D) thr_create(NULL,65536L,(C),(D),THR_DETACHED,(A)) #define pthread_cond_init(a,b) cond_init((a),USYNC_THREAD,NULL) #define pthread_cond_destroy(a) cond_destroy(a) #define pthread_cond_signal(a) cond_signal(a) #define pthread_cond_wait(a,b) cond_wait((a),(b)) #define pthread_cond_timedwait(a,b,c) cond_timedwait((a),(b),(c)) #define pthread_cond_broadcast(a) cond_broadcast(a) #define pthread_mutex_init(a,b) mutex_init((a),USYNC_THREAD,NULL) #define pthread_mutex_lock(a) mutex_lock(a) #define pthread_mutex_unlock(a) mutex_unlock(a) #define pthread_mutex_destroy(a) mutex_destroy(a) #define pthread_self() thr_self() #define pthread_exit(A) thr_exit(A) #define pthread_equal(A,B) (((A) == (B)) ? 1 : 0) #define pthread_kill(A,B) thr_kill((A),(B)) #define HAVE_PTHREAD_KILL #define pthread_sigmask(A,B,C) thr_sigsetmask((A),(B),(C)) extern int my_sigwait(const sigset_t *set,int *sig); #define pthread_detach_this_thread() pthread_dummy(0) #define pthread_attr_init(A) pthread_dummy(0) #define pthread_attr_destroy(A) pthread_dummy(0) #define pthread_attr_setscope(A,B) pthread_dummy(0) #define pthread_attr_setdetachstate(A,B) pthread_dummy(0) #define my_pthread_setprio(A,B) pthread_dummy (0) #define my_pthread_getprio(A) pthread_dummy (0) #define my_pthread_attr_setprio(A,B) pthread_dummy(0) #else /* Normal threads */ #ifdef HAVE_rts_threads #define sigwait org_sigwait #include #undef sigwait #endif #undef _REENTRANT /* Fix if _REENTRANT is in pthread.h */ #include #ifndef _REENTRANT #define _REENTRANT #endif #ifdef HAVE_THR_SETCONCURRENCY #include /* Probably solaris */ #endif #ifdef HAVE_SCHED_H #include #endif #ifdef HAVE_SYNCH_H #include #endif #if defined(__EMX__) && (!defined(EMX_PTHREAD_REV) || (EMX_PTHREAD_REV < 2)) #error Requires at least rev 2 of EMX pthreads library. #endif extern int my_pthread_getprio(pthread_t thread_id); #define pthread_key(T,V) pthread_key_t V #define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V)) #define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V)) #define pthread_detach_this_thread() #define pthread_handler_decl(A,B) void *A(void *B) typedef void *(* pthread_handler)(void *); /* Test first for RTS or FSU threads */ #if defined(PTHREAD_SCOPE_GLOBAL) && !defined(PTHREAD_SCOPE_SYSTEM) #define HAVE_rts_threads extern int my_pthread_create_detached; #define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C)) #define PTHREAD_CREATE_DETACHED &my_pthread_create_detached #define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_GLOBAL #define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_LOCAL #define USE_ALARM_THREAD #elif defined(HAVE_mit_thread) #define USE_ALARM_THREAD #undef HAVE_LOCALTIME_R #define HAVE_LOCALTIME_R #undef HAVE_PTHREAD_ATTR_SETSCOPE #define HAVE_PTHREAD_ATTR_SETSCOPE #undef HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE /* If we are running linux */ #undef HAVE_RWLOCK_T #undef HAVE_RWLOCK_INIT #undef HAVE_PTHREAD_RWLOCK_RDLOCK #undef HAVE_SNPRINTF #define sigset(A,B) pthread_signal((A),(void (*)(int)) (B)) #define signal(A,B) pthread_signal((A),(void (*)(int)) (B)) #define my_pthread_attr_setprio(A,B) #endif /* defined(PTHREAD_SCOPE_GLOBAL) && !defined(PTHREAD_SCOPE_SYSTEM) */ #if defined(_BSDI_VERSION) && _BSDI_VERSION < 199910 int sigwait(sigset_t *set, int *sig); #endif #if defined(HAVE_UNIXWARE7_POSIX) #undef HAVE_NONPOSIX_SIGWAIT #define HAVE_NONPOSIX_SIGWAIT /* sigwait takes only 1 argument */ #endif #ifndef HAVE_NONPOSIX_SIGWAIT #define my_sigwait(A,B) sigwait((A),(B)) #else int my_sigwait(const sigset_t *set,int *sig); #endif #ifdef HAVE_NONPOSIX_PTHREAD_MUTEX_INIT #ifndef SAFE_MUTEX #define pthread_mutex_init(a,b) my_pthread_mutex_init((a),(b)) extern int my_pthread_mutex_init(pthread_mutex_t *mp, const pthread_mutexattr_t *attr); #endif /* SAFE_MUTEX */ #define pthread_cond_init(a,b) my_pthread_cond_init((a),(b)) extern int my_pthread_cond_init(pthread_cond_t *mp, const pthread_condattr_t *attr); #endif /* HAVE_NONPOSIX_PTHREAD_MUTEX_INIT */ #if defined(HAVE_SIGTHREADMASK) && !defined(HAVE_PTHREAD_SIGMASK) #define pthread_sigmask(A,B,C) sigthreadmask((A),(B),(C)) #endif #if !defined(HAVE_SIGWAIT) && !defined(HAVE_mit_thread) && !defined(HAVE_rts_threads) && !defined(sigwait) && !defined(alpha_linux_port) && !defined(HAVE_NONPOSIX_SIGWAIT) && !defined(HAVE_DEC_3_2_THREADS) && !defined(_AIX) int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */ #endif #if !defined(HAVE_SIGSET) && !defined(HAVE_mit_thread) && !defined(sigset) #define sigset(A,B) do { struct sigaction s; sigset_t set; \ sigemptyset(&set); \ s.sa_handler = (B); \ s.sa_mask = set; \ s.sa_flags = 0; \ sigaction((A), &s, (struct sigaction *) NULL); \ } while (0) #endif #ifndef my_pthread_setprio #if defined(HAVE_PTHREAD_SETPRIO_NP) /* FSU threads */ #define my_pthread_setprio(A,B) pthread_setprio_np((A),(B)) #elif defined(HAVE_PTHREAD_SETPRIO) #define my_pthread_setprio(A,B) pthread_setprio((A),(B)) #else extern void my_pthread_setprio(pthread_t thread_id,int prior); #endif #endif #ifndef my_pthread_attr_setprio #ifdef HAVE_PTHREAD_ATTR_SETPRIO #define my_pthread_attr_setprio(A,B) pthread_attr_setprio((A),(B)) #else extern void my_pthread_attr_setprio(pthread_attr_t *attr, int priority); #endif #endif #if !defined(HAVE_PTHREAD_ATTR_SETSCOPE) || defined(HAVE_DEC_3_2_THREADS) #define pthread_attr_setscope(A,B) #undef HAVE_GETHOSTBYADDR_R /* No definition */ #endif #ifndef HAVE_NONPOSIX_PTHREAD_GETSPECIFIC #define my_pthread_getspecific(A,B) ((A) pthread_getspecific(B)) #else #define my_pthread_getspecific(A,B) ((A) my_pthread_getspecific_imp(B)) void *my_pthread_getspecific_imp(pthread_key_t key); #endif #ifndef HAVE_LOCALTIME_R struct tm *localtime_r(const time_t *clock, struct tm *res); #endif #ifdef HAVE_PTHREAD_CONDATTR_CREATE /* DCE threads on HPUX 10.20 */ #define pthread_condattr_init pthread_condattr_create #define pthread_condattr_destroy pthread_condattr_delete #endif #ifdef HAVE_CTHREADS_WRAPPER /* For MacOSX */ #define pthread_cond_destroy(A) pthread_dummy(0) #define pthread_mutex_destroy(A) pthread_dummy(0) #define pthread_attr_delete(A) pthread_dummy(0) #define pthread_condattr_delete(A) pthread_dummy(0) #define pthread_attr_setstacksize(A,B) pthread_dummy(0) #define pthread_equal(A,B) ((A) == (B)) #define pthread_cond_timedwait(a,b,c) pthread_cond_wait((a),(b)) #define pthread_attr_init(A) pthread_attr_create(A) #define pthread_attr_destroy(A) pthread_attr_delete(A) #define pthread_attr_setdetachstate(A,B) pthread_dummy(0) #define pthread_create(A,B,C,D) pthread_create((A),*(B),(C),(D)) #define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C)) #define pthread_kill(A,B) pthread_dummy(0) #undef pthread_detach_this_thread #define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); } #endif #ifdef HAVE_DARWIN_THREADS #define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C)) #define pthread_kill(A,B) pthread_dummy(0) #define pthread_condattr_init(A) pthread_dummy(0) #define pthread_condattr_destroy(A) pthread_dummy(0) #define pthread_signal(A,B) pthread_dummy(0) #undef pthread_detach_this_thread #define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); } #undef sigset #define sigset(A,B) pthread_signal((A),(void (*)(int)) (B)) #endif #if ((defined(HAVE_PTHREAD_ATTR_CREATE) && !defined(HAVE_SIGWAIT)) || defined(HAVE_DEC_3_2_THREADS)) && !defined(HAVE_CTHREADS_WRAPPER) /* This is set on AIX_3_2 and Siemens unix (and DEC OSF/1 3.2 too) */ #define pthread_key_create(A,B) \ pthread_keycreate(A,(B) ?\ (pthread_destructor_t) (B) :\ (pthread_destructor_t) pthread_dummy) #define pthread_attr_init(A) pthread_attr_create(A) #define pthread_attr_destroy(A) pthread_attr_delete(A) #define pthread_attr_setdetachstate(A,B) pthread_dummy(0) #define pthread_create(A,B,C,D) pthread_create((A),*(B),(C),(D)) #ifndef pthread_sigmask #define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C)) #endif #define pthread_kill(A,B) pthread_dummy(0) #undef pthread_detach_this_thread #define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); } #else /* HAVE_PTHREAD_ATTR_CREATE && !HAVE_SIGWAIT */ #define HAVE_PTHREAD_KILL #endif #if defined(HAVE_PTHREAD_ATTR_CREATE) || defined(_AIX) || defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) #if !defined(HPUX) struct hostent; #endif /* HPUX */ struct hostent *my_gethostbyname_r(const char *name, struct hostent *result, char *buffer, int buflen, int *h_errnop); #if defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) #define GETHOSTBYNAME_BUFF_SIZE 2048 #else #define GETHOSTBYNAME_BUFF_SIZE sizeof(struct hostent_data) #endif /* defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) */ #else #ifdef HAVE_GETHOSTBYNAME_R_RETURN_INT #define GETHOSTBYNAME_BUFF_SIZE sizeof(struct hostent_data) struct hostent *my_gethostbyname_r(const char *name, struct hostent *result, char *buffer, int buflen, int *h_errnop); #else #define GETHOSTBYNAME_BUFF_SIZE 2048 #define my_gethostbyname_r(A,B,C,D,E) gethostbyname_r((A),(B),(C),(D),(E)) #endif /* HAVE_GETHOSTBYNAME_R_RETURN_INT */ #endif /* defined(HAVE_PTHREAD_ATTR_CREATE) || defined(_AIX) || defined(HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE) */ #endif /* defined(__WIN__) */ /* safe_mutex adds checking to mutex for easier debugging */ typedef struct st_safe_mutex_t { pthread_mutex_t global,mutex; char *file; uint line,count; pthread_t thread; } safe_mutex_t; int safe_mutex_init(safe_mutex_t *mp, const pthread_mutexattr_t *attr); int safe_mutex_lock(safe_mutex_t *mp,const char *file, uint line); int safe_mutex_unlock(safe_mutex_t *mp,const char *file, uint line); int safe_mutex_destroy(safe_mutex_t *mp,const char *file, uint line); int safe_cond_wait(pthread_cond_t *cond, safe_mutex_t *mp,const char *file, uint line); int safe_cond_timedwait(pthread_cond_t *cond, safe_mutex_t *mp, struct timespec *abstime, const char *file, uint line); /* Wrappers if safe mutex is actually used */ #ifdef SAFE_MUTEX #undef pthread_mutex_init #undef pthread_mutex_lock #undef pthread_mutex_unlock #undef pthread_mutex_destroy #undef pthread_mutex_wait #undef pthread_mutex_timedwait #undef pthread_mutex_t #undef pthread_cond_wait #undef pthread_cond_timedwait #define pthread_mutex_init(A,B) safe_mutex_init((A),(B)) #define pthread_mutex_lock(A) safe_mutex_lock((A),__FILE__,__LINE__) #define pthread_mutex_unlock(A) safe_mutex_unlock((A),__FILE__,__LINE__) #define pthread_mutex_destroy(A) safe_mutex_destroy((A),__FILE__,__LINE__) #define pthread_cond_wait(A,B) safe_cond_wait((A),(B),__FILE__,__LINE__) #define pthread_cond_timedwait(A,B,C) safe_cond_timedwait((A),(B),(C),__FILE__,__LINE__) #define pthread_mutex_trylock(A) pthread_mutex_lock(A) #define pthread_mutex_t safe_mutex_t #endif /* SAFE_MUTEX */ /* READ-WRITE thread locking */ #if defined(USE_MUTEX_INSTEAD_OF_RW_LOCKS) /* use these defs for simple mutex locking */ #define rw_lock_t pthread_mutex_t #define my_rwlock_init(A,B) pthread_mutex_init((A),(B)) #define rw_rdlock(A) pthread_mutex_lock((A)) #define rw_wrlock(A) pthread_mutex_lock((A)) #define rw_unlock(A) pthread_mutex_unlock((A)) #define rwlock_destroy(A) pthread_mutex_destroy((A)) #elif defined(HAVE_PTHREAD_RWLOCK_RDLOCK) #define rw_lock_t pthread_rwlock_t #define my_rwlock_init(A,B) pthread_rwlock_init((A),(B)) #define rw_rdlock(A) pthread_rwlock_rdlock(A) #define rw_wrlock(A) pthread_rwlock_wrlock(A) #define rw_unlock(A) pthread_rwlock_unlock(A) #define rwlock_destroy(A) pthread_rwlock_destroy(A) #elif defined(HAVE_RWLOCK_INIT) #ifdef HAVE_RWLOCK_T /* For example Solaris 2.6-> */ #define rw_lock_t rwlock_t #endif #define my_rwlock_init(A,B) rwlock_init((A),USYNC_THREAD,0) #else /* Use our own version of read/write locks */ typedef struct _my_rw_lock_t { pthread_mutex_t lock; /* lock for structure */ pthread_cond_t readers; /* waiting readers */ pthread_cond_t writers; /* waiting writers */ int state; /* -1:writer,0:free,>0:readers */ int waiters; /* number of waiting writers */ } my_rw_lock_t; #define rw_lock_t my_rw_lock_t #define rw_rdlock(A) my_rw_rdlock((A)) #define rw_wrlock(A) my_rw_wrlock((A)) #define rw_unlock(A) my_rw_unlock((A)) #define rwlock_destroy(A) my_rwlock_destroy((A)) extern int my_rwlock_init( my_rw_lock_t *, void * ); extern int my_rwlock_destroy( my_rw_lock_t * ); extern int my_rw_rdlock( my_rw_lock_t * ); extern int my_rw_wrlock( my_rw_lock_t * ); extern int my_rw_unlock( my_rw_lock_t * ); #endif /* USE_MUTEX_INSTEAD_OF_RW_LOCKS */ #define GETHOSTBYADDR_BUFF_SIZE 2048 #ifndef HAVE_THR_SETCONCURRENCY #define thr_setconcurrency(A) pthread_dummy(0) #endif #if !defined(HAVE_PTHREAD_ATTR_SETSTACKSIZE) && ! defined(pthread_attr_setstacksize) #define pthread_attr_setstacksize(A,B) pthread_dummy(0) #endif extern my_bool my_thread_global_init(void); extern void my_thread_global_end(void); extern my_bool my_thread_init(void); extern void my_thread_end(void); extern char *my_thread_name(void); extern long my_thread_id(void); extern int pthread_no_free(void *); extern int pthread_dummy(int); /* All thread specific variables are in the following struct */ #define THREAD_NAME_SIZE 10 #if defined(__ia64__) #define DEFAULT_THREAD_STACK (128*1024) #else #define DEFAULT_THREAD_STACK (64*1024) #endif struct st_my_thread_var { int thr_errno; pthread_cond_t suspend, *current_cond; pthread_mutex_t mutex, *current_mutex; pthread_t pthread_self; long id; int cmp_length; volatile int abort; #ifndef DBUG_OFF gptr dbug; char name[THREAD_NAME_SIZE+1]; #endif }; extern struct st_my_thread_var *_my_thread_var(void) __attribute__ ((const)); #define my_thread_var (_my_thread_var()) #define my_errno my_thread_var->thr_errno /* statistics_xxx functions are for not essential statistic */ #ifndef thread_safe_increment #ifdef HAVE_ATOMIC_ADD #define thread_safe_increment(V,L) atomic_add(1,(atomic_t*) &V); #define thread_safe_add(V,C,L) atomic_add((C),(atomic_t*) &V); #define thread_safe_sub(V,C,L) atomic_sub((C),(atomic_t*) &V); #define statistic_increment(V,L) thread_safe_increment((V),(L)) #define statistic_add(V,C,L) thread_safe_add((V),(C),(L)) #else #define thread_safe_increment(V,L) \ pthread_mutex_lock((L)); (V)++; pthread_mutex_unlock((L)); #define thread_safe_add(V,C,L) \ pthread_mutex_lock((L)); (V)+=(C); pthread_mutex_unlock((L)); #define thread_safe_sub(V,C,L) \ pthread_mutex_lock((L)); (V)-=(C); pthread_mutex_unlock((L)); #ifdef SAFE_STATISTICS #define statistic_increment(V,L) thread_safe_increment((V),(L)) #define statistic_add(V,C,L) thread_safe_add((V),(C),(L)) #else #define statistic_increment(V,L) (V)++ #define statistic_add(V,C,L) (V)+=(C) #endif /* SAFE_STATISTICS */ #endif /* HAVE_ATOMIC_ADD */ #endif /* thread_safe_increment */ #endif /* _my_ptread_h */ ) #d kêò\'¤�¶x”·:n�·:n�·:!0 v¶./usr/local/include/mysql/my_no_pthread.hhURCEó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* This undefs some pthread mutex locks when one isn't using threads to make thread safe code, that should also work in single thread environment, easier to use. */ #if !defined(_my_no_pthread_h) && !defined(THREADS) #define _my_no_pthread_h #define pthread_mutex_init(A,B) #define pthread_mutex_lock(A) #define pthread_mutex_unlock(A) #define pthread_mutex_destroy(A) #endif wr kê|n'¤�Ìx”·:n�·:n�·:! 6vÌ./usr/local/include/mysql/raid.hthread.ó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* Parser needs these defines always, even if USE_RAID is not defined */ #define RAID_TYPE_0 1 /* Striping */ #define RAID_TYPE_x 2 /* Some new modes */ #define RAID_TYPE_y 3 #define RAID_DEFAULT_CHUNKS 4 #define RAID_DEFAULT_CHUNKSIZE 256*1024 /* 256kB */ extern const char *raid_type_string[]; #ifdef __cplusplus extern "C" { #endif const char *my_raid_type(int raid_type); #ifdef __cplusplus } #endif #ifdef USE_RAID #ifdef __GNUC__ #pragma interface /* gcc class implementation */ #endif #include "my_dir.h" /* Trap all occurences of my_...() in source and use our wrapper around this function */ #ifdef MAP_TO_USE_RAID #define my_read(A,B,C,D) my_raid_read(A,B,C,D) #define my_write(A,B,C,D) my_raid_write(A,B,C,D) #define my_pwrite(A,B,C,D,E) my_raid_pwrite(A,B,C,D,E) #define my_pread(A,B,C,D,E) my_raid_pread(A,B,C,D,E) #define my_chsize(A,B,C) my_raid_chsize(A,B,C) #define my_close(A,B) my_raid_close(A,B) #define my_tell(A,B) my_raid_tell(A,B) #define my_seek(A,B,C,D) my_raid_seek(A,B,C,D) #define my_lock(A,B,C,D,E) my_raid_lock(A,B,C,D,E) #define my_fstat(A,B,C) my_raid_fstat(A,B,C) #endif /* MAP_TO_USE_RAID */ #ifdef __cplusplus extern "C" { #endif void init_raid(void); void end_raid(void); bool is_raid(File fd); File my_raid_create(const char *FileName, int CreateFlags, int access_flags, uint raid_type, uint raid_chunks, ulong raid_chunksize, myf MyFlags); File my_raid_open(const char *FileName, int Flags, uint raid_type, uint raid_chunks, ulong raid_chunksize, myf MyFlags); int my_raid_rename(const char *from, const char *to, uint raid_chunks, myf MyFlags); int my_raid_delete(const char *from, uint raid_chunks, myf MyFlags); int my_raid_redel(const char *old_name, const char *new_name, uint raid_chunks, myf MyFlags); my_off_t my_raid_seek(File fd, my_off_t pos, int whence, myf MyFlags); my_off_t my_raid_tell(File fd, myf MyFlags); uint my_raid_write(File,const byte *Buffer, uint Count, myf MyFlags); uint my_raid_read(File Filedes, byte *Buffer, uint Count, myf MyFlags); uint my_raid_pread(File Filedes, byte *Buffer, uint Count, my_off_t offset, myf MyFlags); uint my_raid_pwrite(int Filedes, const byte *Buffer, uint Count, my_off_t offset, myf MyFlags); int my_raid_lock(File,int locktype, my_off_t start, my_off_t length, myf MyFlags); int my_raid_chsize(File fd, my_off_t newlength, myf MyFlags); int my_raid_close(File, myf MyFlags); int my_raid_fstat(int Filedes, struct stat *buf, myf MyFlags); #ifdef __cplusplus } class RaidName { public: RaidName(const char *FileName); ~RaidName(); bool IsRaid(); int Rename(const char * from, const char * to, myf MyFlags); private: uint _raid_type; /* RAID_TYPE_0 or RAID_TYPE_1 or RAID_TYPE_5 */ uint _raid_chunks; /* 1..n */ ulong _raid_chunksize; /* 1..n in bytes */ }; class RaidFd { public: RaidFd(uint raid_type, uint raid_chunks , ulong raid_chunksize); ~RaidFd(); File Create(const char *FileName, int CreateFlags, int access_flags, myf MyFlags); File Open(const char *FileName, int Flags, myf MyFlags); my_off_t Seek(my_off_t pos,int whence,myf MyFlags); my_off_t Tell(myf MyFlags); int Write(const byte *Buffer, uint Count, myf MyFlags); int Read(const byte *Buffer, uint Count, myf MyFlags); int Lock(int locktype, my_off_t start, my_off_t length, myf MyFlags); int Chsize(File fd, my_off_t newlength, myf MyFlags); int Fstat(int fd, MY_STAT *stat_area, myf MyFlags ); int Close(myf MyFlags); static bool IsRaid(File fd); static DYNAMIC_ARRAY _raid_map; /* Map of RaidFD* */ private: uint _raid_type; /* RAID_TYPE_0 or RAID_TYPE_1 or RAID_TYPE_5 */ uint _raid_chunks; /* 1..n */ ulong _raid_chunksize; /* 1..n in bytes */ ulong _total_block; /* We are operating with block no x (can be 0..many). */ uint _this_block; /* can be 0.._raid_chunks */ uint _remaining_bytes; /* Maximum bytes that can be written in this block */ my_off_t _position; my_off_t _size; /* Cached file size for faster seek(SEEK_END) */ File _fd; File *_fd_vector; /* Array of File */ off_t *_seek_vector; /* Array of cached seek positions */ inline void Calculate() { DBUG_ENTER("RaidFd::_Calculate"); DBUG_PRINT("info",("_position: %lu _raid_chunksize: %d, _size: %lu", (ulong) _position, _raid_chunksize, (ulong) _size)); _total_block = (ulong) (_position / _raid_chunksize); _this_block = _total_block % _raid_chunks; /* can be 0.._raid_chunks */ _remaining_bytes = (uint) (_raid_chunksize - (_position - _total_block * _raid_chunksize)); DBUG_PRINT("info", ("_total_block: %d this_block: %d _remaining_bytes:%d", _total_block, _this_block, _remaining_bytes)); DBUG_VOID_RETURN; } }; #endif /* __cplusplus */ #endif /* USE_RAID */ B) kêÊË'¤�»y”·:o�·:o�·:! v»./usr/local/include/mysql/errmsg.hread.ó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* Error messages for mysql clients */ /* error messages for the demon is in share/language/errmsg.sys */ #ifdef __cplusplus extern "C" { #endif void init_client_errs(void); extern const char *client_errors[]; /* Error messages */ #ifdef __cplusplus } #endif #define CR_MIN_ERROR 2000 /* For easier client code */ #define CR_MAX_ERROR 2999 #define ER(X) client_errors[(X)-CR_MIN_ERROR] #define CLIENT_ERRMAP 2 /* Errormap used by my_error() */ #define CR_UNKNOWN_ERROR 2000 #define CR_SOCKET_CREATE_ERROR 2001 #define CR_CONNECTION_ERROR 2002 #define CR_CONN_HOST_ERROR 2003 #define CR_IPSOCK_ERROR 2004 #define CR_UNKNOWN_HOST 2005 #define CR_SERVER_GONE_ERROR 2006 #define CR_VERSION_ERROR 2007 #define CR_OUT_OF_MEMORY 2008 #define CR_WRONG_HOST_INFO 2009 #define CR_LOCALHOST_CONNECTION 2010 #define CR_TCP_CONNECTION 2011 #define CR_SERVER_HANDSHAKE_ERR 2012 #define CR_SERVER_LOST 2013 #define CR_COMMANDS_OUT_OF_SYNC 2014 #define CR_NAMEDPIPE_CONNECTION 2015 #define CR_NAMEDPIPEWAIT_ERROR 2016 #define CR_NAMEDPIPEOPEN_ERROR 2017 #define CR_NAMEDPIPESETSTATE_ERROR 2018 #define CR_CANT_READ_CHARSET 2019 #define CR_NET_PACKET_TOO_LARGE 2020 * MAP kê6ï'¤�ßty”·:o�·:o�·:!)3ßt./usr/local/include/mysql/my_global.hd.ó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* This is the main include file that should included 'first' in every C file. */ #ifndef _global_h #define _global_h #if defined( __EMX__) && !defined( MYSQL_SERVER) /* moved here to use below VOID macro redefinition */ #define INCL_BASE #define INCL_NOPMAPI #include #endif /* __EMX__ */ #if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32) #include #else #include #endif #if defined(__cplusplus) #if defined(inline) #undef inline /* fix configure problem */ #endif #endif /* _cplusplus */ /* Fix problem with S_ISLNK() on Linux */ #if defined(HAVE_LINUXTHREADS) #undef _GNU_SOURCE #define _GNU_SOURCE 1 #endif /* The client defines this to avoid all thread code */ #if defined(UNDEF_THREADS_HACK) #undef THREAD #undef HAVE_mit_thread #undef HAVE_LINUXTHREADS #undef HAVE_UNIXWARE7_THREADS #endif #ifdef HAVE_THREADS_WITHOUT_SOCKETS /* MIT pthreads does not work with unix sockets */ #undef HAVE_SYS_UN_H #endif #define __EXTENSIONS__ 1 /* We want some extension */ #ifndef __STDC_EXT__ #define __STDC_EXT__ 1 /* To get large file support on hpux */ #endif #if defined(THREAD) && !defined(__WIN__) #ifndef _POSIX_PTHREAD_SEMANTICS #define _POSIX_PTHREAD_SEMANTICS /* We want posix threads */ #endif /* was #if defined(HAVE_LINUXTHREADS) || defined(HAVE_DEC_THREADS) || defined(HPUX) */ #if !defined(SCO) #define _REENTRANT 1 /* Some thread libraries require this */ #endif #if !defined(_THREAD_SAFE) && !defined(_AIX) #define _THREAD_SAFE /* Required for OSF1 */ #endif #ifndef HAVE_mit_thread #ifdef HAVE_UNIXWARE7_THREADS #include #else #include /* AIX must have this included first */ #endif /* HAVE_UNIXWARE7_THREADS */ #endif /* HAVE_mit_thread */ #if !defined(SCO) && !defined(_REENTRANT) #define _REENTRANT 1 /* Threads requires reentrant code */ #endif #endif /* THREAD */ /* Go around some bugs in different OS and compilers */ #ifdef _AIX /* By soren@t.dk */ #define _H_STRINGS #define _SYS_STREAM_H #define _AIX32_CURSES #endif #ifdef HAVE_BROKEN_SNPRINTF /* HPUX 10.20 don't have this defined */ #undef HAVE_SNPRINTF #endif #ifdef HAVE_BROKEN_PREAD /* These doesn't work on HPUX 11.x */ #undef HAVE_PREAD #undef HAVE_PWRITE #endif #ifdef UNDEF_HAVE_GETHOSTBYNAME_R /* For OSF4.x */ #undef HAVE_GETHOSTBYNAME_R #endif #ifdef UNDEF_HAVE_INITGROUPS /* For AIX 4.3 */ #undef HAVE_INITGROUPS #endif /* Fix a bug in gcc 2.8.0 on IRIX 6.2 */ #if SIZEOF_LONG == 4 && defined(__LONG_MAX__) #undef __LONG_MAX__ /* Is a longlong value in gcc 2.8.0 ??? */ #define __LONG_MAX__ 2147483647 #endif /* egcs 1.1.2 has a problem with memcpy on Alpha */ #if defined(__GNUC__) && defined(__alpha__) && ! (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) #define BAD_MEMCPY #endif /* In Linux-alpha we have atomic.h if we are using gcc */ #if defined(HAVE_LINUXTHREADS) && defined(__GNUC__) && defined(__alpha__) && (__GNUC__ > 2 || ( __GNUC__ == 2 && __GNUC_MINOR__ >= 95)) && !defined(HAVE_ATOMIC_ADD) #define HAVE_ATOMIC_ADD #define HAVE_ATOMIC_SUB #endif /* In Linux-ia64 including atomic.h will give us an error */ #if (defined(HAVE_LINUXTHREADS) && defined(__GNUC__) && defined(__ia64__)) || !defined(THREAD) #undef HAVE_ATOMIC_ADD #undef HAVE_ATOMIC_SUB #endif #if defined(_lint) && !defined(lint) #define lint #endif #if SIZEOF_LONG_LONG > 4 && !defined(_LONG_LONG) #define _LONG_LONG 1 /* For AIX string library */ #endif #ifndef stdin #include #endif #ifdef HAVE_STDLIB_H #include #endif #ifdef HAVE_STDDEF_H #include #endif #include #ifdef HAVE_LIMITS_H #include #endif #ifdef HAVE_FLOAT_H #include #endif #ifdef HAVE_SYS_TYPES_H #include #endif #ifdef HAVE_FCNTL_H #include #endif #ifdef HAVE_SYS_TIMEB_H #include /* Avoid warnings on SCO */ #endif #if TIME_WITH_SYS_TIME # include # include #else # if HAVE_SYS_TIME_H # include # else # include # endif #endif /* TIME_WITH_SYS_TIME */ #ifdef HAVE_UNISTD_H #include #endif #if defined(__cplusplus) && defined(NO_CPLUSPLUS_ALLOCA) #undef HAVE_ALLOCA #undef HAVE_ALLOCA_H #endif #ifdef HAVE_ALLOCA_H #include #endif #ifdef HAVE_ATOMIC_ADD #define __SMP__ #include #endif /* Go around some bugs in different OS and compilers */ #if defined(_HPUX_SOURCE) && defined(HAVE_SYS_STREAM_H) #include /* HPUX 10.20 defines ulong here. UGLY !!! */ #define HAVE_ULONG #endif #ifdef DONT_USE_FINITE /* HPUX 11.x has is_finite() */ #undef HAVE_FINITE #endif /* We can not live without these */ #define USE_MYFUNC 1 /* Must use syscall indirection */ #define MASTER 1 /* Compile without unireg */ #define ENGLISH 1 /* Messages in English */ #define POSIX_MISTAKE 1 /* regexp: Fix stupid spec error */ #define USE_REGEX 1 /* We want the use the regex library */ /* Do not define for ultra sparcs */ #define USE_BMOVE512 1 /* Use this unless the system bmove is faster */ /* Paranoid settings. Define I_AM_PARANOID if you are paranoid */ #ifdef I_AM_PARANOID #define DONT_ALLOW_USER_CHANGE 1 #define DONT_USE_MYSQL_PWD 1 #endif /* #define USE_some_charset 1 was deprecated by changes to configure */ /* my_ctype my_to_upper, my_to_lower, my_sort_order gain theit right value */ /* automagically during configuration */ /* Does the system remember a signal handler after a signal ? */ #ifndef HAVE_BSD_SIGNALS #define DONT_REMEMBER_SIGNAL #endif /* Define void to stop lint from generating "null effekt" comments */ #ifndef DONT_DEFINE_VOID #ifdef _lint int __void__; #define VOID(X) (__void__ = (int) (X)) #else #undef VOID #define VOID(X) (X) #endif #endif /* DONT_DEFINE_VOID */ #if defined(_lint) || defined(FORCE_INIT_OF_VARS) #define LINT_INIT(var) var=0 /* No uninitialize-warning */ #else #define LINT_INIT(var) #endif /* Define som useful general macros */ #if defined(__cplusplus) && defined(__GNUC__) #define max(a, b) ((a) >? (b)) #define min(a, b) ((a) (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) #endif #if defined(__EMX__) || !defined(HAVE_UINT) typedef unsigned int uint; typedef unsigned short ushort; #endif #define sgn(a) (((a) < 0) ? -1 : ((a) > 0) ? 1 : 0) #define swap(t,a,b) { register t dummy; dummy = a; a = b; b = dummy; } #define test(a) ((a) ? 1 : 0) #define set_if_bigger(a,b) { if ((a) < (b)) (a)=(b); } #define set_if_smaller(a,b) { if ((a) > (b)) (a)=(b); } #define test_all_bits(a,b) (((a) & (b)) == (b)) #define array_elements(A) ((uint) (sizeof(A)/sizeof(A[0]))) #ifndef HAVE_RINT #define rint(A) floor((A)+0.5) #endif /* Define som general constants */ #ifndef TRUE #define TRUE (1) /* Logical true */ #define FALSE (0) /* Logical false */ #endif #if defined(__GNUC__) #define function_volatile volatile #define my_reinterpret_cast(A) reinterpret_cast #define my_const_cast(A) const_cast #elif !defined(my_reinterpret_cast) #define my_reinterpret_cast(A) (A) #define my_const_cast(A) (A) #endif #if !defined(__attribute__) && (defined(__cplusplus) || !defined(__GNUC__) || __GNUC__ == 2 && __GNUC_MINOR__ < 8) #define __attribute__(A) #endif /* From old s-system.h */ /* Support macros for non ansi & other old compilers. Since such things are no longer supported we do nothing. We keep then since some of our code may still be needed to upgrade old customers. */ #define _VARARGS(X) X #define _STATIC_VARARGS(X) X #define _PC(X) X #if defined(DBUG_ON) && defined(DBUG_OFF) #undef DBUG_OFF #endif #if defined(_lint) && !defined(DBUG_OFF) #define DBUG_OFF #endif #include #ifndef DBUG_OFF #define dbug_assert(A) assert(A) #else #define dbug_assert(A) #endif #define MIN_ARRAY_SIZE 0 /* Zero or One. Gcc allows zero*/ #define ASCII_BITS_USED 8 /* Bit char used */ #define NEAR_F /* No near function handling */ /* Some types that is different between systems */ typedef int File; /* File descriptor */ #ifndef Socket_defined typedef int my_socket; /* File descriptor for sockets */ #define INVALID_SOCKET -1 #endif typedef RETSIGTYPE sig_handler; /* Function to handle signals */ typedef void (*sig_return)();/* Returns type from signal */ #if defined(__GNUC__) && !defined(_lint) typedef char pchar; /* Mixed prototypes can take char */ typedef char puchar; /* Mixed prototypes can take char */ typedef char pbool; /* Mixed prototypes can take char */ typedef short pshort; /* Mixed prototypes can take short int */ typedef float pfloat; /* Mixed prototypes can take float */ #else typedef int pchar; /* Mixed prototypes can't take char */ typedef uint puchar; /* Mixed prototypes can't take char */ typedef int pbool; /* Mixed prototypes can't take char */ typedef int pshort; /* Mixed prototypes can't take short int */ typedef double pfloat; /* Mixed prototypes can't take float */ #endif typedef int (*qsort_cmp)(const void *,const void *); #ifdef HAVE_mit_thread #define qsort_t void #undef QSORT_TYPE_IS_VOID #define QSORT_TYPE_IS_VOID #else #define qsort_t RETQSORTTYPE /* Broken GCC cant handle typedef !!!! */ #endif #ifdef HAVE_mit_thread #define size_socket socklen_t /* Type of last arg to accept */ #else #ifdef HAVE_SYS_SOCKET_H #include #endif typedef SOCKET_SIZE_TYPE size_socket; #endif #ifndef SOCKOPT_OPTLEN_TYPE #define SOCKOPT_OPTLEN_TYPE size_socket #endif /* file create flags */ #ifndef O_SHARE #define O_SHARE 0 /* Flag to my_open for shared files */ #ifndef O_BINARY #define O_BINARY 0 /* Flag to my_open for binary files */ #endif #define FILE_BINARY 0 /* Flag to my_fopen for binary streams */ #ifdef HAVE_FCNTL #define HAVE_FCNTL_LOCK #define F_TO_EOF 0L /* Param to lockf() to lock rest of file */ #endif #endif /* O_SHARE */ #ifndef O_TEMPORARY #define O_TEMPORARY 0 #endif #ifndef O_SHORT_LIVED #define O_SHORT_LIVED 0 #endif /* #define USE_RECORD_LOCK */ /* Unsigned types supported by the compiler */ #define UNSINT8 /* unsigned int8 (char) */ #define UNSINT16 /* unsigned int16 */ #define UNSINT32 /* unsigned int32 */ /* General constants */ #define SC_MAXWIDTH 256 /* Max width of screen (for error messages) */ #define FN_LEN 256 /* Max file name len */ #define FN_HEADLEN 253 /* Max length of filepart of file name */ #define FN_EXTLEN 20 /* Max length of extension (part of FN_LEN) */ #define FN_REFLEN 512 /* Max length of full path-name */ #define FN_EXTCHAR '.' #define FN_HOMELIB '~' /* ~/ is used as abbrev for home dir */ #define FN_CURLIB '.' /* ./ is used as abbrev for current dir */ #define FN_PARENTDIR ".." /* Parentdirectory; Must be a string */ #define FN_DEVCHAR ':' #ifndef FN_LIBCHAR #ifdef __EMX__ #define FN_LIBCHAR '\\' #define FN_ROOTDIR "\\" #else #define FN_LIBCHAR '/' #define FN_ROOTDIR "/" #endif #define MY_NFILE 1024 /* This is only used to save filenames */ #endif /* #define EXT_IN_LIBNAME */ /* #define FN_NO_CASE_SENCE */ /* #define FN_UPPER_CASE TRUE */ /* Io buffer size; Must be a power of 2 and a multiple of 512. May be smaller what the disk page size. This influences the speed of the isam btree library. eg to big to slow. */ #define IO_SIZE 4096 /* How much overhead does malloc have. The code often allocates something like 1024-MALLOC_OVERHEAD bytes */ #ifdef SAFEMALLOC #define MALLOC_OVERHEAD (8+24+4) #else #define MALLOC_OVERHEAD 8 #endif /* get memory in huncs */ #define ONCE_ALLOC_INIT (uint) (4096-MALLOC_OVERHEAD) /* Typical record cash */ #define RECORD_CACHE_SIZE (uint) (64*1024-MALLOC_OVERHEAD) /* Typical key cash */ #define KEY_CACHE_SIZE (uint) (8*1024*1024-MALLOC_OVERHEAD) /* Some things that this system doesn't have */ #define ONLY_OWN_DATABASES /* We are using only databases by monty */ #define NO_PISAM /* Not needed anymore */ #define NO_MISAM /* Not needed anymore */ #define NO_HASH /* Not needed anymore */ #ifdef __WIN__ #define NO_DIR_LIBRARY /* Not standar dir-library */ #define USE_MY_STAT_STRUCT /* For my_lib */ #endif /* Some things that this system does have */ #ifndef HAVE_ITOA #define USE_MY_ITOA /* There is no itoa */ #endif /* Some defines of functions for portability */ #ifndef HAVE_ATOD #define atod atof #endif #ifdef USE_MY_ATOF #define atof my_atof extern void init_my_atof(void); extern double my_atof(const char*); #endif #undef remove /* Crashes MySQL on SCO 5.0.0 */ #ifndef __WIN__ #define closesocket(A) close(A) #ifndef ulonglong2double #define ulonglong2double(A) ((double) (A)) #define my_off_t2double(A) ((double) (A)) #endif #endif #ifndef offsetof #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #endif #define ulong_to_double(X) ((double) (ulong) (X)) #define SET_STACK_SIZE(X) /* Not needed on real machines */ #if !defined(HAVE_mit_thread) && !defined(HAVE_STRTOK_R) #define strtok_r(A,B,C) strtok((A),(B)) #endif #ifdef HAVE_LINUXTHREADS /* #define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C)) */ /* #define sigset(A,B) signal((A),(B)) */ #endif /* Remove some things that mit_thread break or doesn't support */ #if defined(HAVE_mit_thread) && defined(THREAD) #undef HAVE_PREAD #undef HAVE_REALPATH #undef HAVE_MLOCK #undef HAVE_TEMPNAM /* Use ours */ #undef HAVE_PTHREAD_SETPRIO #undef HAVE_FTRUNCATE #undef HAVE_READLINK #endif /* This is from the old m-machine.h file */ #if SIZEOF_LONG_LONG > 4 #define HAVE_LONG_LONG 1 #endif #if defined(HAVE_LONG_LONG) && !defined(LONGLONG_MIN) #define LONGLONG_MIN ((long long) 0x8000000000000000LL) #define LONGLONG_MAX ((long long) 0x7FFFFFFFFFFFFFFFLL) #endif #if SIZEOF_LONG == 4 #define INT_MIN32 (long) 0x80000000L #define INT_MAX32 (long) 0x7FFFFFFFL #define INT_MIN24 ((long) 0xff800000L) #define INT_MAX24 0x007fffffL #define INT_MIN16 ((short int) 0x8000) #define INT_MAX16 0x7FFF #define INT_MIN8 ((char) 0x80) #define INT_MAX8 ((char) 0x7F) #else /* Probably Alpha */ #define INT_MIN32 ((long) (int) 0x80000000) #define INT_MAX32 ((long) (int) 0x7FFFFFFF) #define INT_MIN24 ((long) (int) 0xff800000) #define INT_MAX24 ((long) (int) 0x007fffff) #define INT_MIN16 ((short int) 0xffff8000) #define INT_MAX16 ((short int) 0x00007FFF) #endif /* From limits.h instead */ #ifndef DBL_MIN #define DBL_MIN 4.94065645841246544e-324 #define FLT_MIN ((float)1.40129846432481707e-45) #endif #ifndef DBL_MAX #define DBL_MAX 1.79769313486231470e+308 #define FLT_MAX ((float)3.40282346638528860e+38) #endif /* Max size that must be added to a so that we know Size to make adressable obj. */ typedef long my_ptrdiff_t; #define MY_ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1)) #define ALIGN_SIZE(A) MY_ALIGN((A),sizeof(double)) /* Size to make adressable obj. */ #define ALIGN_PTR(A, t) ((t*) MY_ALIGN((A),sizeof(t))) /* Offset of filed f in structure t */ #define OFFSET(t, f) ((size_t)(char *)&((t *)0)->f) #define ADD_TO_PTR(ptr,size,type) (type) ((byte*) (ptr)+size) #define PTR_BYTE_DIFF(A,B) (my_ptrdiff_t) ((byte*) (A) - (byte*) (B)) #define NullS (char *) 0 /* Nowdays we do not support MessyDos */ #ifndef NEAR #define NEAR /* Who needs segments ? */ #define FAR /* On a good machine */ #define HUGE_PTR #endif #ifndef STDCALL #define STDCALL #endif /* Typdefs for easyier portability */ #if defined(VOIDTYPE) typedef void *gptr; /* Generic pointer */ #else typedef char *gptr; /* Generic pointer */ #endif #ifndef HAVE_INT_8_16_32 typedef char int8; /* Signed integer >= 8 bits */ typedef short int16; /* Signed integer >= 16 bits */ #endif #ifndef HAVE_UCHAR typedef unsigned char uchar; /* Short for unsigned char */ #endif typedef unsigned char uint8; /* Short for unsigned integer >= 8 bits */ typedef unsigned short uint16; /* Short for unsigned integer >= 16 bits */ #if SIZEOF_INT == 4 #ifndef HAVE_INT_8_16_32 typedef int int32; #endif typedef unsigned int uint32; /* Short for unsigned integer >= 32 bits */ #elif SIZEOF_LONG == 4 #ifndef HAVE_INT_8_16_32 typedef long int32; #endif typedef unsigned long uint32; /* Short for unsigned integer >= 32 bits */ #else error "Neither int or long is of 4 bytes width" #endif #if !defined(HAVE_ULONG) && !defined(HAVE_LINUXTHREADS) && !defined(__USE_MISC) typedef unsigned long ulong; /* Short for unsigned long */ #endif #ifndef longlong_defined #if defined(HAVE_LONG_LONG) && SIZEOF_LONG != 8 typedef unsigned long long ulonglong; /* ulong or unsigned long long */ typedef long long longlong; #else typedef unsigned long ulonglong; /* ulong or unsigned long long */ typedef long longlong; #endif #endif #ifdef USE_RAID /* The following is done with a if to not get problems with pre-processors with late define evaluation */ #if SIZEOF_OFF_T == 4 #define SYSTEM_SIZEOF_OFF_T 4 #else #define SYSTEM_SIZEOF_OFF_T 8 #endif #undef SIZEOF_OFF_T #define SIZEOF_OFF_T 8 #else #define SYSTEM_SIZEOF_OFF_T SIZEOF_OFF_T #endif /* USE_RAID */ #if SIZEOF_OFF_T > 4 typedef ulonglong my_off_t; #else typedef unsigned long my_off_t; #endif #define MY_FILEPOS_ERROR (~(my_off_t) 0) #ifndef __WIN__ typedef off_t os_off_t; #endif typedef uint8 int7; /* Most effective integer 0 <= x <= 127 */ typedef short int15; /* Most effective integer 0 <= x <= 32767 */ typedef char *my_string; /* String of characters */ typedef unsigned long size_s; /* Size of strings (In string-funcs) */ typedef int myf; /* Type of MyFlags in my_funcs */ #ifndef byte_defined typedef char byte; /* Smallest addressable unit */ #endif typedef char my_bool; /* Small bool */ #if !defined(bool) && !defined(bool_defined) && (!defined(HAVE_BOOL) || !defined(__cplusplus)) typedef char bool; /* Ordinary boolean values 0 1 */ #endif /* Macros for converting *constants* to the right type */ #define INT8(v) (int8) (v) #define INT16(v) (int16) (v) #define INT32(v) (int32) (v) #define MYF(v) (myf) (v) /* Defines to make it possible to prioritize register assignments. No longer needed with moder compilers */ #ifndef USING_X #define reg1 register #define reg2 register #define reg3 register #define reg4 register #define reg5 register #define reg6 register #define reg7 register #define reg8 register #define reg9 register #define reg10 register #define reg11 register #define reg12 register #define reg13 register #define reg14 register #define reg15 register #define reg16 register #endif /* Defines for time function */ #define SCALE_SEC 100 #define SCALE_USEC 10000 #define MY_HOW_OFTEN_TO_ALARM 2 /* How often we want info on screen */ #define MY_HOW_OFTEN_TO_WRITE 1000 /* How often we want info on screen */ /* ** Define-funktions for reading and storing in machine independent format ** (low byte first) */ /* Optimized store functions for Intel x86 */ #ifdef __i386__ #define sint2korr(A) (*((int16 *) (A))) #define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \ (((uint32) 255L << 24) | \ (((uint32) (uchar) (A)[2]) << 16) |\ (((uint32) (uchar) (A)[1]) << 8) | \ ((uint32) (uchar) (A)[0])) : \ (((uint32) (uchar) (A)[2]) << 16) |\ (((uint32) (uchar) (A)[1]) << 8) | \ ((uint32) (uchar) (A)[0]))) #define sint4korr(A) (*((long *) (A))) #define uint2korr(A) (*((uint16 *) (A))) #define uint3korr(A) (long) (*((unsigned long *) (A)) & 0xFFFFFF) #define uint4korr(A) (*((unsigned long *) (A))) #define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\ (((uint32) ((uchar) (A)[1])) << 8) +\ (((uint32) ((uchar) (A)[2])) << 16) +\ (((uint32) ((uchar) (A)[3])) << 24)) +\ (((ulonglong) ((uchar) (A)[4])) << 32)) #define uint8korr(A) (*((ulonglong *) (A))) #define sint8korr(A) (*((longlong *) (A))) #define int2store(T,A) *((uint16*) (T))= (uint16) (A) #define int3store(T,A) { *(T)= (uchar) ((A));\ *(T+1)=(uchar) (((uint) (A) >> 8));\ *(T+2)=(uchar) (((A) >> 16)); } #define int4store(T,A) *((long *) (T))= (long) (A) #define int5store(T,A) { *(T)= (uchar)((A));\ *((T)+1)=(uchar) (((A) >> 8));\ *((T)+2)=(uchar) (((A) >> 16));\ *((T)+3)=(uchar) (((A) >> 24)); \ *((T)+4)=(uchar) (((A) >> 32)); } #define int8store(T,A) *((ulonglong *) (T))= (ulonglong) (A) typedef union { double v; long m[2]; } doubleget_union; #define doubleget(V,M) { ((doubleget_union *)&V)->m[0] = *((long*) M); \ ((doubleget_union *)&V)->m[1] = *(((long*) M)+1); } #define doublestore(T,V) { *((long *) T) = ((doubleget_union *)&V)->m[0]; \ *(((long *) T)+1) = ((doubleget_union *)&V)->m[1]; } #define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); } #define float8get(V,M) doubleget((V),(M)) #define float4store(V,M) memcpy((byte*) V,(byte*) (&M),sizeof(float)) #define float8store(V,M) doublestore((V),(M)) #endif /* __i386__ */ #ifndef sint2korr #define sint2korr(A) (int16) (((int16) ((uchar) (A)[0])) +\ ((int16) ((int16) (A)[1]) << 8)) #define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \ (((uint32) 255L << 24) | \ (((uint32) (uchar) (A)[2]) << 16) |\ (((uint32) (uchar) (A)[1]) << 8) | \ ((uint32) (uchar) (A)[0])) : \ (((uint32) (uchar) (A)[2]) << 16) |\ (((uint32) (uchar) (A)[1]) << 8) | \ ((uint32) (uchar) (A)[0]))) #define sint4korr(A) (int32) (((int32) ((uchar) (A)[0])) +\ (((int32) ((uchar) (A)[1]) << 8)) +\ (((int32) ((uchar) (A)[2]) << 16)) +\ (((int32) ((int16) (A)[3]) << 24))) #define sint8korr(A) (longlong) uint8korr(A) #define uint2korr(A) (uint16) (((uint16) ((uchar) (A)[0])) +\ ((uint16) ((uchar) (A)[1]) << 8)) #define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\ (((uint32) ((uchar) (A)[1])) << 8) +\ (((uint32) ((uchar) (A)[2])) << 16)) #define uint4korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\ (((uint32) ((uchar) (A)[1])) << 8) +\ (((uint32) ((uchar) (A)[2])) << 16) +\ (((uint32) ((uchar) (A)[3])) << 24)) #define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\ (((uint32) ((uchar) (A)[1])) << 8) +\ (((uint32) ((uchar) (A)[2])) << 16) +\ (((uint32) ((uchar) (A)[3])) << 24)) +\ (((ulonglong) ((uchar) (A)[4])) << 32)) #define uint8korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\ (((uint32) ((uchar) (A)[1])) << 8) +\ (((uint32) ((uchar) (A)[2])) << 16) +\ (((uint32) ((uchar) (A)[3])) << 24)) +\ (((ulonglong) (((uint32) ((uchar) (A)[4])) +\ (((uint32) ((uchar) (A)[5])) << 8) +\ (((uint32) ((uchar) (A)[6])) << 16) +\ (((uint32) ((uchar) (A)[7])) << 24))) <<\ 32)) #define int2store(T,A) { uint def_temp= (uint) (A) ;\ *((uchar*) (T))= (uchar)(def_temp); \ *((uchar*) (T+1))=(uchar)((def_temp >> 8)); } #define int3store(T,A) { /*lint -save -e734 */\ *((T))=(char) ((A));\ *((T)+1)=(char) (((A) >> 8));\ *((T)+2)=(char) (((A) >> 16)); \ /*lint -restore */} #define int4store(T,A) { *(T)=(char) ((A));\ *((T)+1)=(char) (((A) >> 8));\ *((T)+2)=(char) (((A) >> 16));\ *((T)+3)=(char) (((A) >> 24)); } #define int5store(T,A) { *(T)=((A));\ *((T)+1)=(((A) >> 8));\ *((T)+2)=(((A) >> 16));\ *((T)+3)=(((A) >> 24)); \ *((T)+4)=(((A) >> 32)); } #define int8store(T,A) { uint def_temp= (uint) (A), def_temp2= (uint) ((A) >> 32); \ int4store((T),def_temp); \ int4store((T+4),def_temp2); \ } #ifdef WORDS_BIGENDIAN #define float4store(T,A) { *(T)= ((byte *) &A)[3];\ *((T)+1)=(char) ((byte *) &A)[2];\ *((T)+2)=(char) ((byte *) &A)[1];\ *((T)+3)=(char) ((byte *) &A)[0]; } #define float4get(V,M) { float def_temp;\ ((byte*) &def_temp)[0]=(M)[3];\ ((byte*) &def_temp)[1]=(M)[2];\ ((byte*) &def_temp)[2]=(M)[1];\ ((byte*) &def_temp)[3]=(M)[0];\ (V)=def_temp; } #define float8store(T,V) { *(T)= ((byte *) &V)[7];\ *((T)+1)=(char) ((byte *) &V)[6];\ *((T)+2)=(char) ((byte *) &V)[5];\ *((T)+3)=(char) ((byte *) &V)[4];\ *((T)+4)=(char) ((byte *) &V)[3];\ *((T)+5)=(char) ((byte *) &V)[2];\ *((T)+6)=(char) ((byte *) &V)[1];\ *((T)+7)=(char) ((byte *) &V)[0]; } #define float8get(V,M) { double def_temp;\ ((byte*) &def_temp)[0]=(M)[7];\ ((byte*) &def_temp)[1]=(M)[6];\ ((byte*) &def_temp)[2]=(M)[5];\ ((byte*) &def_temp)[3]=(M)[4];\ ((byte*) &def_temp)[4]=(M)[3];\ ((byte*) &def_temp)[5]=(M)[2];\ ((byte*) &def_temp)[6]=(M)[1];\ ((byte*) &def_temp)[7]=(M)[0];\ (V) = def_temp; } #else #define float4get(V,M) memcpy_fixed((byte*) &V,(byte*) (M),sizeof(float)) #define float4store(V,M) memcpy_fixed((byte*) V,(byte*) (&M),sizeof(float)) #if defined(__FLOAT_WORD_ORDER) && (__FLOAT_WORD_ORDER == __BIG_ENDIAN) #define doublestore(T,V) { *(T)= ((byte *) &V)[4];\ *((T)+1)=(char) ((byte *) &V)[5];\ *((T)+2)=(char) ((byte *) &V)[6];\ *((T)+3)=(char) ((byte *) &V)[7];\ *((T)+4)=(char) ((byte *) &V)[0];\ *((T)+5)=(char) ((byte *) &V)[1];\ *((T)+6)=(char) ((byte *) &V)[2];\ *((T)+7)=(char) ((byte *) &V)[3]; } #define doubleget(V,M) { double def_temp;\ ((byte*) &def_temp)[0]=(M)[4];\ ((byte*) &def_temp)[1]=(M)[5];\ ((byte*) &def_temp)[2]=(M)[6];\ ((byte*) &def_temp)[3]=(M)[7];\ ((byte*) &def_temp)[4]=(M)[0];\ ((byte*) &def_temp)[5]=(M)[1];\ ((byte*) &def_temp)[6]=(M)[2];\ ((byte*) &def_temp)[7]=(M)[3];\ (V) = def_temp; } #endif /* __FLOAT_WORD_ORDER */ #define float8get(V,M) doubleget((V),(M)) #define float8store(V,M) doublestore((V),(M)) #endif /* WORDS_BIGENDIAN */ #endif /* sint2korr */ /* Define-funktions for reading and storing in machine format from/to short/long to/from some place in memory V should be a (not register) variable, M is a pointer to byte */ #ifdef WORDS_BIGENDIAN #define ushortget(V,M) { V = (uint16) (((uint16) ((uchar) (M)[1]))+\ ((uint16) ((uint16) (M)[0]) << 8)); } #define shortget(V,M) { V = (short) (((short) ((uchar) (M)[1]))+\ ((short) ((short) (M)[0]) << 8)); } #define longget(V,M) { int32 def_temp;\ ((byte*) &def_temp)[0]=(M)[0];\ ((byte*) &def_temp)[1]=(M)[1];\ ((byte*) &def_temp)[2]=(M)[2];\ ((byte*) &def_temp)[3]=(M)[3];\ (V)=def_temp; } #define ulongget(V,M) { uint32 def_temp;\ ((byte*) &def_temp)[0]=(M)[0];\ ((byte*) &def_temp)[1]=(M)[1];\ ((byte*) &def_temp)[2]=(M)[2];\ ((byte*) &def_temp)[3]=(M)[3];\ (V)=def_temp; } #define shortstore(T,A) { uint def_temp=(uint) (A) ;\ *(T+1)=(char)(def_temp); \ *(T+0)=(char)(def_temp >> 8); } #define longstore(T,A) { *((T)+3)=((A));\ *((T)+2)=(((A) >> 8));\ *((T)+1)=(((A) >> 16));\ *((T)+0)=(((A) >> 24)); } #define doubleget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(double)) #define doublestore(T,V) memcpy((byte*) (T),(byte*) &V,sizeof(double)) #define longlongget(V,M) memcpy((byte*) &V,(byte*) (M),sizeof(ulonglong)) #define longlongstore(T,V) memcpy((byte*) (T),(byte*) &V,sizeof(ulonglong)) #else #define ushortget(V,M) { V = uint2korr(M); } #define shortget(V,M) { V = sint2korr(M); } #define longget(V,M) { V = sint4korr(M); } #define ulongget(V,M) { V = uint4korr(M); } #define shortstore(T,V) int2store(T,V) #define longstore(T,V) int4store(T,V) #ifndef doubleget #define doubleget(V,M) memcpy_fixed((byte*) &V,(byte*) (M),sizeof(double)) #define doublestore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(double)) #endif /* doubleget */ #define longlongget(V,M) memcpy_fixed((byte*) &V,(byte*) (M),sizeof(ulonglong)) #define longlongstore(T,V) memcpy_fixed((byte*) (T),(byte*) &V,sizeof(ulonglong)) #endif /* WORDS_BIGENDIAN */ /* sprintf does not always return the number of bytes :- */ #ifdef SPRINTF_RETURNS_INT #define my_sprintf(buff,args) sprintf args #else #ifdef SPRINTF_RETURNS_PTR #define my_sprintf(buff,args) ((int)(sprintf args - buff)) #else #define my_sprintf(buff,args) sprintf args,strlen(buff) #endif #endif #ifndef THREAD #define thread_safe_increment(V,L) (V)++ #define thread_safe_add(V,C,L) (V)+=(C) #define thread_safe_sub(V,C,L) (V)-=(C) #define statistic_increment(V,L) (V)++ #define statistic_add(V,C,L) (V)+=(C) #endif #endif /* _global_h */ # kêši'¤�,y”·:p�·:p�·:!0 v,./usr/local/include/mysql/my_net.h.hd.ó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* thread safe version of some common functions */ /* for thread safe my_inet_ntoa */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ #if !defined(MSDOS) && !defined(__WIN__) && !defined(__BEOS__) #ifdef HAVE_SYS_SOCKET_H #include #endif #ifdef HAVE_NETINET_IN_H #include #endif #ifdef HAVE_ARPA_INET_H #include #endif #endif /* !defined(MSDOS) && !defined(__WIN__) */ void my_inet_ntoa(struct in_addr in, char *buf); #ifdef __cplusplus } #endif at)) kê²V'¤�Ey”·:p�·:p�·:!0vE./usr/local/include/mysql/sslopt-case.hó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_OPENSSL case OPT_SSL_SSL: opt_use_ssl = 1; /* true */ break; case OPT_SSL_KEY: opt_use_ssl = 1; /* true */ my_free(opt_ssl_key, MYF(MY_ALLOW_ZERO_PTR)); opt_ssl_key = my_strdup(optarg, MYF(0)); break; case OPT_SSL_CERT: opt_use_ssl = 1; /* true */ my_free(opt_ssl_cert, MYF(MY_ALLOW_ZERO_PTR)); opt_ssl_cert = my_strdup(optarg, MYF(0)); break; case OPT_SSL_CA: opt_use_ssl = 1; /* true */ my_free(opt_ssl_ca, MYF(MY_ALLOW_ZERO_PTR)); opt_ssl_ca = my_strdup(optarg, MYF(0)); break; case OPT_SSL_CAPATH: opt_use_ssl = 1; /* true */ my_free(opt_ssl_ca, MYF(MY_ALLOW_ZERO_PTR)); opt_ssl_ca = my_strdup(optarg, MYF(0)); break; #endif  kêB'¤�y”·:p�·:q�·:!0v./usr/local/include/mysql/sslopt-longopts.hURCEó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_OPENSSL #define OPT_SSL_SSL 200 #define OPT_SSL_KEY 201 #define OPT_SSL_CERT 202 #define OPT_SSL_CA 203 #define OPT_SSL_CAPATH 204 {"ssl", no_argument, 0, OPT_SSL_SSL}, {"ssl-key", required_argument, 0, OPT_SSL_KEY}, {"ssl-cert", required_argument, 0, OPT_SSL_CERT}, {"ssl-ca", required_argument, 0, OPT_SSL_CA}, {"ssl-capath", required_argument, 0, OPT_SSL_CAPATH}, #endif /* HAVE_OPENSSL */  k꘭ '¤�Óy”·:q�·:q�·:!0vÓ./usr/local/include/mysql/sslopt-usage.h.hURCEó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef OPEN_SSL puts("\ --ssl Use SSL for connection (automatically set with other flags\n\ --ssl-key X509 key in PEM format (implies --ssl)\n\ --ssl-cert X509 cert in PEM format (implies --ssl)\n\ --ssl-ca CA file in PEM format (check OpenSSL docs, implies --ssl)\n\ --ssl-capath CA directory (check OpenSSL docs, implies --ssl)"); #endif argum kꆊ '¤�õy”·:q�·:r�·:!0võ./usr/local/include/mysql/sslopt-vars.hó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ #ifdef HAVE_OPENSSL static my_bool opt_use_ssl = 0; static char *opt_ssl_key = 0; static char *opt_ssl_cert = 0; static char *opt_ssl_ca = 0; static char *opt_ssl_capath = 0; #endif  kê '¤�$y”·:r�·:r�·:!0v$./usr/local/include/mysql/mysql_version.hhURCEó/¤�/* Copyright Abandoned 1996, 1999, 2001 MySQL AB This file is public domain and comes with NO WARRANTY of any kind */ /* Version numbers for protocol & mysqld */ #ifdef _CUSTOMCONFIG_ #include #else #define PROTOCOL_VERSION 10 #define MYSQL_SERVER_VERSION "3.23.35" #define MYSQL_SERVER_SUFFIX "" #define FRM_VER 6 #define MYSQL_VERSION_ID 32335 #define MYSQL_PORT 3306 #define MYSQL_UNIX_ADDR "/tmp/mysql.sock" /* mysqld compile time options */ #ifndef MYSQL_CHARSET #define MYSQL_CHARSET "latin1" #endif #endif ary kê> '¤�Öy”·:r�·:r�·:! 9vÖ./usr/local/include/mysql/m_ctype.hion.ó/¤�/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB 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; either version 2 of the License, or (at your option) any later version. 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA */ /* A better inplementation of the UNIX ctype(3) library. Notes: global.h should be included before ctype.h */ #ifndef _m_ctype_h #define _m_ctype_h #ifdef __cplusplus extern "C" { #endif #define CHARSET_DIR "charsets/" typedef struct charset_info_st { uint number; const char *name; uchar *ctype; uchar *to_lower; uchar *to_upper; uchar *sort_order; uint strxfrm_multiply; int (*strcoll)(const uchar *, const uchar *); int (*strxfrm)(uchar *, const uchar *, int); int (*strnncoll)(const uchar *, int, const uchar *, int); int (*strnxfrm)(uchar *, const uchar *, int, int); my_bool (*like_range)(const char *, uint, pchar, uint, char *, char *, uint *, uint *); uint mbmaxlen; int (*ismbchar)(const char *, const char *); my_bool (*ismbhead)(uint); int (*mbcharlen)(uint); } CHARSET_INFO; /* strings/ctype.c */ extern CHARSET_INFO *default_charset_info; extern CHARSET_INFO *find_compiled_charset(uint cs_number); extern CHARSET_INFO *find_compiled_charset_by_name(const char *name); extern CHARSET_INFO compiled_charsets[]; #define MY_CHARSET_UNDEFINED 0 #define MY_CHARSET_CURRENT (default_charset_info->number) #ifdef __WIN__ #include #endif /* Don't include std ctype.h when this is included */ #define _CTYPE_H #define _CTYPE_INCLUDED #define __CTYPE_INCLUDED #define _CTYPE_USING /* Don't put names in global namespace. */ #define _U 01 /* Upper case */ #define _L 02 /* Lower case */ #define _N 04 /* Numeral (digit) */ #define _S 010 /* Spacing character */ #define _P 020 /* Punctuation */ #define _C 040 /* Control character */ #define _B 0100 /* Blank */ #define _X 0200 /* heXadecimal digit */ #define my_ctype (default_charset_info->ctype) #define my_to_upper (default_charset_info->to_upper) #define my_to_lower (default_charset_info->to_lower) #define my_sort_order (default_charset_info->sort_order) #ifndef __WIN__ #define _toupper(c) (char) my_to_upper[(uchar) (c)] #define _tolower(c) (char) my_to_lower[(uchar) (c)] #define toupper(c) (char) my_to_upper[(uchar) (c)] #define tolower(c) (char) my_to_lower[(uchar) (c)] #define isalpha(c) ((my_ctype+1)[(uchar) (c)] & (_U | _L)) #define isupper(c) ((my_ctype+1)[(uchar) (c)] & _U) #define islower(c) ((my_ctype+1)[(uchar) (c)] & _L) #define isdigit(c) ((my_ctype+1)[(uchar) (c)] & _N) #define isxdigit(c) ((my_ctype+1)[(uchar) (c)] & _X) #define isalnum(c) ((my_ctype+1)[(uchar) (c)] & (_U | _L | _N)) #define isspace(c) ((my_ctype+1)[(uchar) (c)] & _S) #define ispunct(c) ((my_ctype+1)[(uchar) (c)] & _P) #define isprint(c) ((my_ctype+1)[(uchar) (c)] & (_P | _U | _L | _N | _B)) #define isgraph(c) ((my_ctype+1)[(uchar) (c)] & (_P | _U | _L | _N)) #define iscntrl(c) ((my_ctype+1)[(uchar) (c)] & _C) #define isascii(c) (!((c) & ~0177)) #define toascii(c) ((c) & 0177) #ifdef ctype #undef ctype #endif /* ctype */ #endif /* __WIN__ */ #define my_isalpha(s, c) (((s)->ctype+1)[(uchar) (c)] & (_U | _L)) #define my_isupper(s, c) (((s)->ctype+1)[(uchar) (c)] & _U) #define my_islower(s, c) (((s)->ctype+1)[(uchar) (c)] & _L) #define my_isdigit(s, c) (((s)->ctype+1)[(uchar) (c)] & _N) #define my_isxdigit(s, c) (((s)->ctype+1)[(uchar) (c)] & _X) #define my_isalnum(s, c) (((s)->ctype+1)[(uchar) (c)] & (_U | _L | _N)) #define my_isspace(s, c) (((s)->ctype+1)[(uchar) (c)] & _S) #define my_ispunct(s, c) (((s)->ctype+1)[(uchar) (c)] & _P) #define my_isprint(s, c) (((s)->ctype+1)[(uchar) (c)] & (_P | _U | _L | _N | _B)) #define my_isgraph(s, c) (((s)->ctype+1)[(uchar) (c)] & (_P | _U | _L | _N)) #define my_iscntrl(s, c) (((s)->ctype+1)[(uchar) (c)] & _C) #define use_strcoll(s) ((s)->strcoll != NULL) #define MY_STRXFRM_MULTIPLY (default_charset_info->strxfrm_multiply) #define my_strnxfrm(s, a, b, c, d) ((s)->strnxfrm((a), (b), (c), (d))) #define my_strnncoll(s, a, b, c, d) ((s)->strnncoll((a), (b), (c), (d))) #define my_strxfrm(s, a, b, c, d) ((s)->strnxfrm((a), (b), (c))) #define my_strcoll(s, a, b) ((s)->strcoll((a), (b))) #define my_like_range(s, a, b, c, d, e, f, g, h) \ ((s)->like_range((a), (b), (c), (d), (e), (f), (g), (h))) #define use_mb(s) ((s)->ismbchar != NULL) #define MBMAXLEN (default_charset_info->mbmaxlen) #define my_ismbchar(s, a, b) ((s)->ismbchar((a), (b))) #define my_ismbhead(s, a) ((s)->ismbhead((a))) #define my_mbcharlen(s, a) ((s)->mbcharlen((a))) /* Some macros that should be cleaned up a little */ #define isvar(c) (isalnum(c) || (c) == '_') #define isvar_start(c) (isalpha(c) || (c) == '_') #define tocntrl(c) ((c) & 31) #define toprint(c) ((c) | 64) /* XXX: still need to take care of this one */ #ifdef MY_CHARSET_TIS620 #error The TIS620 charset is broken at the moment. Tell tim to fix it. #define USE_TIS620 #include "t_ctype.h" #endif #ifdef __cplusplus } #endif #endif /* _m_ctype_h */ AR kê~d '¤�WJy”·:s�·:s�·:!)wWJ./usr/local/include/mysql/my_config.hn.ó/¤�/* config.h. Generated automatically by configure. */ /* config.h.in. Generated automatically from configure.in by autoheader. */ /* Define if using alloca.c. */ /* #undef C_ALLOCA */ /* Define to empty if the keyword does not work. */ /* #undef const */ /* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. This function is required for alloca.c support on those systems. */ /* #undef CRAY_STACKSEG_END */ /* Define if you have alloca, as a function or macro. */ #define HAVE_ALLOCA 1 /* Define if you have and it should be used (not on Ultrix). */ /* #undef HAVE_ALLOCA_H */ /* Define if you don't have vprintf but do have _doprnt. */ /* #undef HAVE_DOPRNT */ /* Define if you have a working `mmap' system call. */ /* #undef HAVE_MMAP */ /* Define if system calls automatically restart after interruption by a signal. */ /* #undef HAVE_RESTARTABLE_SYSCALLS */ /* Define if your struct stat has st_rdev. */ #define HAVE_ST_RDEV 1 /* Define if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define if you don't have tm_zone but do have the external array tzname. */ #define HAVE_TZNAME 1 /* Define if utime(file, NULL) sets file's timestamp to the present. */ #define HAVE_UTIME_NULL 1 /* Define if you have the vprintf function. */ #define HAVE_VPRINTF 1 /* Define as __inline if that's what the C compiler calls it. */ #define inline __inline /* Define to `long' if doesn't define. */ /* #undef off_t */ /* Define as the return type of signal handlers (int or void). */ #define RETSIGTYPE void /* Define to `unsigned' if doesn't define. */ /* #undef size_t */ /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ #define STACK_DIRECTION -1 /* Define if the `S_IS*' macros in do not work properly. */ /* #undef STAT_MACROS_BROKEN */ /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if you can safely include both and . */ #define TIME_WITH_SYS_TIME 1 /* Define if your declares struct tm. */ /* #undef TM_IN_SYS_TIME */ /* Define if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #define WORDS_BIGENDIAN 1 /* Version of .frm files */ #define DOT_FRM_VERSION 6 /* READLINE: */ #define FIONREAD_IN_SYS_IOCTL 1 /* READLINE: Define if your system defines TIOCGWINSZ in sys/ioctl.h. */ #define GWINSZ_IN_SYS_IOCTL 1 /* Do we have FIONREAD */ #define FIONREAD_IN_SYS_IOCTL 1 /* atomic_add() from (Linux only) */ /* #undef HAVE_ATOMIC_ADD */ /* atomic_sub() from (Linux only) */ /* #undef HAVE_ATOMIC_SUB */ /* bool is not defined by all C++ compilators */ #define HAVE_BOOL 1 /* Have berkeley db installed */ /* #undef HAVE_BERKELEY_DB */ /* DSB style signals ? */ /* #undef HAVE_BSD_SIGNALS */ /* Can netinet be included */ /* #undef HAVE_BROKEN_NETINET_INCLUDES */ /* READLINE: */ /* #undef HAVE_BSD_SIGNALS */ /* ZLIB and compress: */ #define HAVE_COMPRESS 1 /* Define if we are using OSF1 DEC threads */ /* #undef HAVE_DEC_THREADS */ /* Define if we are using OSF1 DEC threads on 3.2 */ /* #undef HAVE_DEC_3_2_THREADS */ /* fp_except from ieeefp.h */ /* #undef HAVE_FP_EXCEPT */ /* READLINE: */ /* #undef HAVE_GETPW_DECLS */ /* Solaris define gethostbyname_r with 5 arguments. glibc2 defines this with 6 arguments */ /* #undef HAVE_GETHOSTBYNAME_R_GLIBC2_STYLE */ /* In OSF 4.0f the 3'd argument to gethostname_r is hostent_data * */ #define HAVE_GETHOSTBYNAME_R_RETURN_INT 1 /* Define if int8, int16 and int32 types exist */ #define HAVE_INT_8_16_32 1 /* Using Innobase DB */ /* #undef HAVE_INNOBASE_DB */ /* Define if have -lwrap */ /* #undef HAVE_LIBWRAP */ /* Define if we are using Xavier Leroy's LinuxThreads */ /* #undef HAVE_LINUXTHREADS */ /* Do we use user level threads */ /* #undef HAVE_mit_thread */ /* For some non posix threads */ /* #undef HAVE_NONPOSIX_PTHREAD_GETSPECIFIC */ /* For some non posix threads */ /* #undef HAVE_NONPOSIX_PTHREAD_MUTEX_INIT */ /* READLINE: */ #define HAVE_POSIX_SIGNALS 1 /* sigwait with one argument */ /* #undef HAVE_NONPOSIX_SIGWAIT */ /* pthread_attr_setscope */ #define HAVE_PTHREAD_ATTR_SETSCOPE 1 /* POSIX readdir_r */ #define HAVE_READDIR_R 1 /* POSIX sigwait */ #define HAVE_SIGWAIT 1 /* crypt */ #define HAVE_CRYPT 1 /* Solaris define gethostbyaddr_r with 7 arguments. glibc2 defines this with 8 arguments */ /* #undef HAVE_SOLARIS_STYLE_GETHOST */ /* Timespec has a ts_sec instead of tv_sev */ /* #undef HAVE_TIMESPEC_TS_SEC */ /* Have the tzname variable */ #define HAVE_TZNAME 1 /* Define if the system files define uchar */ #define HAVE_UCHAR 1 /* Define if the system files define uint */ #define HAVE_UINT 1 /* Define if the system files define ulong */ #define HAVE_ULONG 1 /* UNIXWARE7 threads are not posix */ /* #undef HAVE_UNIXWARE7_THREADS */ /* new UNIXWARE7 threads that are not yet posix */ /* #undef HAVE_UNIXWARE7_POSIX */ /* READLINE: */ /* #undef HAVE_USG_SIGHOLD */ /* Define if want -lwrap */ /* #undef LIBWRAP */ /* Define to machine type name eg sun10 */ #define MACHINE_TYPE "powerpc" /* mysql client protocoll version */ #define PROTOCOL_VERSION 10 /* Define if qsort returns void */ #define QSORT_TYPE_IS_VOID 1 /* Define as the return type of qsort (int or void). */ #define RETQSORTTYPE void /* Size of off_t */ #define SIZEOF_OFF_T 8 /* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE socklen_t /* Last argument to get/setsockopt */ /* #undef SOCKOPT_OPTLEN_TYPE */ /* #undef SPEED_T_IN_SYS_TYPES */ /* #undef SPRINTF_RETURNS_PTR */ #define SPRINTF_RETURNS_INT 1 /* #undef SPRINTF_RETURNS_GARBAGE */ /* #undef STRUCT_DIRENT_HAS_D_FILENO */ #define STRUCT_DIRENT_HAS_D_INO 1 /* Define to name of system eg solaris*/ #define SYSTEM_TYPE "ibm-aix4.3.2.0" /* Define if you want to have threaded code. This may be undef on client code */ /* #undef THREAD */ /* Should be client be thread safe */ /* #undef THREAD_SAFE_CLIENT */ /* READLINE: */ /* #undef TIOCSTAT_IN_SYS_IOCTL */ /* Use multi-byte character routines */ /* #undef USE_MB */ /* #undef USE_MB_IDENT */ /* Use MySQL RAID */ /* #undef USE_RAID */ /* Use strcoll() functions when comparing and sorting. */ /* #undef USE_STRCOLL */ /* READLINE: */ #define VOID_SIGHANDLER 1 /* The number of bytes in a char. */ #define SIZEOF_CHAR 1 /* The number of bytes in a int. */ #define SIZEOF_INT 4 /* The number of bytes in a long. */ #define SIZEOF_LONG 4 /* The number of bytes in a long long. */ #define SIZEOF_LONG_LONG 8 /* Define if you have the alarm function. */ #define HAVE_ALARM 1 /* Define if you have the atod function. */ /* #undef HAVE_ATOD */ /* Define if you have the bcmp function. */ #define HAVE_BCMP 1 /* Define if you have the bfill function. */ /* #undef HAVE_BFILL */ /* Define if you have the bmove function. */ /* #undef HAVE_BMOVE */ /* Define if you have the bzero function. */ #define HAVE_BZERO 1 /* Define if you have the chsize function. */ /* #undef HAVE_CHSIZE */ /* Define if you have the cuserid function. */ #define HAVE_CUSERID 1 /* Define if you have the dlerror function. */ #define HAVE_DLERROR 1 /* Define if you have the dlopen function. */ #define HAVE_DLOPEN 1 /* Define if you have the fchmod function. */ #define HAVE_FCHMOD 1 /* Define if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define if you have the fconvert function. */ /* #undef HAVE_FCONVERT */ /* Define if you have the finite function. */ #define HAVE_FINITE 1 /* Define if you have the fpresetsticky function. */ /* #undef HAVE_FPRESETSTICKY */ /* Define if you have the fpsetmask function. */ /* #undef HAVE_FPSETMASK */ /* Define if you have the fseeko function. */ #define HAVE_FSEEKO 1 /* Define if you have the ftruncate function. */ #define HAVE_FTRUNCATE 1 /* Define if you have the getcwd function. */ #define HAVE_GETCWD 1 /* Define if you have the gethostbyaddr_r function. */ #define HAVE_GETHOSTBYADDR_R 1 /* Define if you have the gethostbyname_r function. */ #define HAVE_GETHOSTBYNAME_R 1 /* Define if you have the getpagesize function. */ #define HAVE_GETPAGESIZE 1 /* Define if you have the getpass function. */ #define HAVE_GETPASS 1 /* Define if you have the getpassphrase function. */ /* #undef HAVE_GETPASSPHRASE */ /* Define if you have the getpwnam function. */ #define HAVE_GETPWNAM 1 /* Define if you have the getpwuid function. */ #define HAVE_GETPWUID 1 /* Define if you have the getrlimit function. */ #define HAVE_GETRLIMIT 1 /* Define if you have the getrusage function. */ #define HAVE_GETRUSAGE 1 /* Define if you have the getwd function. */ #define HAVE_GETWD 1 /* Define if you have the index function. */ #define HAVE_INDEX 1 /* Define if you have the initgroups function. */ #define HAVE_INITGROUPS 1 /* Define if you have the localtime_r function. */ #define HAVE_LOCALTIME_R 1 /* Define if you have the locking function. */ /* #undef HAVE_LOCKING */ /* Define if you have the longjmp function. */ #define HAVE_LONGJMP 1 /* Define if you have the lrand48 function. */ #define HAVE_LRAND48 1 /* Define if you have the lstat function. */ #define HAVE_LSTAT 1 /* Define if you have the madvise function. */ #define HAVE_MADVISE 1 /* Define if you have the memcpy function. */ #define HAVE_MEMCPY 1 /* Define if you have the memmove function. */ #define HAVE_MEMMOVE 1 /* Define if you have the mkstemp function. */ #define HAVE_MKSTEMP 1 /* Define if you have the mlockall function. */ #define HAVE_MLOCKALL 1 /* Define if you have the perror function. */ #define HAVE_PERROR 1 /* Define if you have the poll function. */ #define HAVE_POLL 1 /* Define if you have the pread function. */ #define HAVE_PREAD 1 /* Define if you have the pthread_attr_create function. */ /* #undef HAVE_PTHREAD_ATTR_CREATE */ /* Define if you have the pthread_attr_setprio function. */ /* #undef HAVE_PTHREAD_ATTR_SETPRIO */ /* Define if you have the pthread_attr_setschedparam function. */ #define HAVE_PTHREAD_ATTR_SETSCHEDPARAM 1 /* Define if you have the pthread_attr_setstacksize function. */ #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1 /* Define if you have the pthread_condattr_create function. */ /* #undef HAVE_PTHREAD_CONDATTR_CREATE */ /* Define if you have the pthread_getsequence_np function. */ /* #undef HAVE_PTHREAD_GETSEQUENCE_NP */ /* Define if you have the pthread_init function. */ /* #undef HAVE_PTHREAD_INIT */ /* Define if you have the pthread_rwlock_rdlock function. */ #define HAVE_PTHREAD_RWLOCK_RDLOCK 1 /* Define if you have the pthread_setprio function. */ /* #undef HAVE_PTHREAD_SETPRIO */ /* Define if you have the pthread_setprio_np function. */ /* #undef HAVE_PTHREAD_SETPRIO_NP */ /* Define if you have the pthread_setschedparam function. */ #define HAVE_PTHREAD_SETSCHEDPARAM 1 /* Define if you have the pthread_sigmask function. */ #define HAVE_PTHREAD_SIGMASK 1 /* Define if you have the putenv function. */ #define HAVE_PUTENV 1 /* Define if you have the readlink function. */ #define HAVE_READLINK 1 /* Define if you have the realpath function. */ #define HAVE_REALPATH 1 /* Define if you have the rename function. */ #define HAVE_RENAME 1 /* Define if you have the rint function. */ #define HAVE_RINT 1 /* Define if you have the rwlock_init function. */ /* #undef HAVE_RWLOCK_INIT */ /* Define if you have the select function. */ #define HAVE_SELECT 1 /* Define if you have the setenv function. */ /* #undef HAVE_SETENV */ /* Define if you have the setlocale function. */ #define HAVE_SETLOCALE 1 /* Define if you have the setupterm function. */ /* #undef HAVE_SETUPTERM */ /* Define if you have the sighold function. */ #define HAVE_SIGHOLD 1 /* Define if you have the sigset function. */ #define HAVE_SIGSET 1 /* Define if you have the sigthreadmask function. */ #define HAVE_SIGTHREADMASK 1 /* Define if you have the snprintf function. */ #define HAVE_SNPRINTF 1 /* Define if you have the socket function. */ #define HAVE_SOCKET 1 /* Define if you have the stpcpy function. */ /* #undef HAVE_STPCPY */ /* Define if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define if you have the strcoll function. */ #define HAVE_STRCOLL 1 /* Define if you have the strerror function. */ #define HAVE_STRERROR 1 /* Define if you have the strnlen function. */ /* #undef HAVE_STRNLEN */ /* Define if you have the strpbrk function. */ #define HAVE_STRPBRK 1 /* Define if you have the strstr function. */ #define HAVE_STRSTR 1 /* Define if you have the strtok_r function. */ #define HAVE_STRTOK_R 1 /* Define if you have the strtol function. */ #define HAVE_STRTOL 1 /* Define if you have the strtoul function. */ #define HAVE_STRTOUL 1 /* Define if you have the strtoull function. */ #define HAVE_STRTOULL 1 /* Define if you have the tcgetattr function. */ #define HAVE_TCGETATTR 1 /* Define if you have the tell function. */ #define HAVE_TELL 1 /* Define if you have the tempnam function. */ #define HAVE_TEMPNAM 1 /* Define if you have the thr_setconcurrency function. */ /* #undef HAVE_THR_SETCONCURRENCY */ /* Define if you have the vidattr function. */ /* #undef HAVE_VIDATTR */ /* Define if you have the header file. */ /* #undef HAVE_ALLOCA_H */ /* Define if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define if you have the header file. */ /* #undef HAVE_ASM_TERMBITS_H */ /* Define if you have the header file. */ #define HAVE_CRYPT_H 1 /* Define if you have the header file. */ #define HAVE_CURSES_H 1 /* Define if you have the header file. */ #define HAVE_DIRENT_H 1 /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define if you have the header file. */ #define HAVE_FLOAT_H 1 /* Define if you have the header file. */ /* #undef HAVE_FLOATINGPOINT_H */ /* Define if you have the header file. */ #define HAVE_GRP_H 1 /* Define if you have the header file. */ /* #undef HAVE_IEEEFP_H */ /* Define if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define if you have the header file. */ /* #undef HAVE_NDIR_H */ /* Define if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define if you have the header file. */ #define HAVE_PATHS_H 1 /* Define if you have the header file. */ #define HAVE_PWD_H 1 /* Define if you have the header file. */ #define HAVE_SCHED_H 1 /* Define if you have the header file. */ /* #undef HAVE_SELECT_H */ /* Define if you have the header file. */ #define HAVE_STDARG_H 1 /* Define if you have the header file. */ #define HAVE_STDDEF_H 1 /* Define if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYNCH_H */ /* Define if you have the header file. */ #define HAVE_SYS_DIR_H 1 /* Define if you have the header file. */ #define HAVE_SYS_FILE_H 1 /* Define if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define if you have the header file. */ #define HAVE_SYS_MMAN_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_NDIR_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PTE_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PTEM_H */ /* Define if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define if you have the header file. */ #define HAVE_SYS_STREAM_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TIMEB_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define if you have the header file. */ #define HAVE_SYS_UN_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_VADVISE_H */ /* Define if you have the header file. */ #define HAVE_SYS_WAIT_H 1 /* Define if you have the header file. */ #define HAVE_TERM_H 1 /* Define if you have the header file. */ /* #undef HAVE_TERMBITS_H */ /* Define if you have the header file. */ /* #undef HAVE_TERMCAP_H */ /* Define if you have the header file. */ #define HAVE_TERMIO_H 1 /* Define if you have the header file. */ #define HAVE_TERMIOS_H 1 /* Define if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define if you have the header file. */ #define HAVE_UTIME_H 1 /* Define if you have the header file. */ #define HAVE_VARARGS_H 1 /* Define if you have the bind library (-lbind). */ /* #undef HAVE_LIBBIND */ /* Define if you have the c_r library (-lc_r). */ /* #undef HAVE_LIBC_R */ /* Define if you have the compat library (-lcompat). */ /* #undef HAVE_LIBCOMPAT */ /* Define if you have the crypt library (-lcrypt). */ #define HAVE_LIBCRYPT 1 /* Define if you have the dl library (-ldl). */ #define HAVE_LIBDL 1 /* Define if you have the gen library (-lgen). */ /* #undef HAVE_LIBGEN */ /* Define if you have the m library (-lm). */ #define HAVE_LIBM 1 /* Define if you have the nsl library (-lnsl). */ /* #undef HAVE_LIBNSL */ /* Define if you have the nsl_r library (-lnsl_r). */ /* #undef HAVE_LIBNSL_R */ /* Define if you have the pthread library (-lpthread). */ #define HAVE_LIBPTHREAD 1 /* Define if you have the socket library (-lsocket). */ /* #undef HAVE_LIBSOCKET */ /* Name of package */ #define PACKAGE "mysql" /* Version number of package */ #define VERSION "3.23.35" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to make fseeko etc. visible, on some hosts. */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ #define _LARGE_FILES 1 e kꨟ„£ ¤�€y”·:Š�·:Š�·:! ØY€./usr/local/share/mysql/make_binary_distributionó/¤�#!/bin/sh # The default path should be /usr/local # Get some info from configure # chmod +x ./scripts/setsomevars machine=powerpc system=ibm-aix4.3.2.0 version=3.23.35 export machine system version SOURCE=`pwd` CP="cp -p" # Debug option must come first DEBUG=0 if test x$1 = x"--debug" then DEBUG=1 shift 1 fi # Save temporary distribution here (must be full path) TMP=/tmp if test $# -gt 0 then TMP=$1 shift 1 fi # Get optional suffix for distribution SUFFIX="" if test $# -gt 0 then SUFFIX=$1 shift 1 fi #make # This should really be integrated with automake and not duplicate the # installation list. BASE=$TMP/my_dist$SUFFIX if [ -d $BASE ] ; then rm -r -f $BASE fi mkdir $BASE $BASE/bin $BASE/data $BASE/data/mysql $BASE/data/test \ $BASE/include $BASE/lib $BASE/support-files $BASE/share $BASE/share/mysql \ $BASE/tests $BASE/scripts $BASE/sql-bench $BASE/mysql-test \ $BASE/mysql-test/t $BASE/mysql-test/r \ $BASE/mysql-test/include $BASE/mysql-test/std_data chmod o-rwx $BASE/data $BASE/data/* for i in sql/ChangeLog COPYING COPYING.LIB README Docs/INSTALL-BINARY \ Docs/manual.html Docs/manual.txt Docs/manual_toc.html do $CP $i $BASE done for i in extra/comp_err extra/replace extra/perror extra/resolveip \ extra/my_print_defaults isam/isamchk isam/pack_isam myisam/myisamchk \ myisam/myisampack sql/mysqld sql/mysqlbinlog \ client/mysql sql/mysqld client/mysqlshow \ client/mysqladmin client/mysqldump client/mysqlimport client/mysqltest \ client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin \ client/.libs/mysqldump client/.libs/mysqlimport client/.libs/mysqltest do if [ -f $i ] then $CP $i $BASE/bin fi done strip $BASE/bin/* for i in sql/mysqld.sym.gz do if [ -f $i ] then $CP $i $BASE/bin fi done for i in libmysql/.libs/libmysqlclient.a libmysql/.libs/libmysqlclient.so* libmysql/libmysqlclient.* libmysql_r/.libs/libmysqlclient_r.a libmysql_r/.libs/libmysqlclient_r.so* libmysql_r/libmysqlclient_r.* mysys/libmysys.a strings/libmystrings.a dbug/libdbug.a $BASE/lib do if [ -f $i ] then $CP $i $BASE/lib fi done $CP config.h include/* $BASE/include rm $BASE/include/Makefile*; rm $BASE/include/*.in $CP tests/*.res tests/*.tst tests/*.pl $BASE/tests $CP support-files/* $BASE/support-files $CP -r sql/share/* $BASE/share/mysql rm -f $BASE/share/mysql/Makefile* $BASE/share/mysql/*/*.OLD $CP mysql-test/mysql-test-run mysql-test/install_test_db $BASE/mysql-test/ $CP mysql-test/README $BASE/mysql-test/README $CP mysql-test/include/*.inc $BASE/mysql-test/include $CP mysql-test/std_data/*.dat $BASE/mysql-test/std_data $CP mysql-test/t/*.test mysql-test/t/*.opt $BASE/mysql-test/t $CP mysql-test/r/*.result mysql-test/r/*.require $BASE/mysql-test/r $CP scripts/* $BASE/bin rm -f $BASE/bin/Makefile* $BASE/bin/*.in $BASE/bin/*.sh $BASE/bin/mysql_install_db $BASE/bin/make_binary_distribution $BASE/bin/setsomevars $BASE/support-files/Makefile* $BASE/support-files/*.sh $BASE/bin/replace \@localstatedir\@ ./data \@bindir\@ ./bin \@scriptdir\@ ./bin \@libexecdir\@ ./bin \@sbindir\@ ./bin \@prefix\@ . \@HOSTNAME\@ /usr/bin/hostname < $SOURCE/scripts/mysql_install_db.sh > $BASE/scripts/mysql_install_db $BASE/bin/replace \@prefix\@ /usr/local/mysql \@bindir\@ ./bin \@MYSQLD_USER\@ root \@localstatedir\@ /usr/local/mysql/data < $SOURCE/support-files/mysql.server.sh > $BASE/support-files/mysql.server $BASE/bin/replace /my/gnu/bin/hostname /bin/hostname -- $BASE/bin/safe_mysqld mv $BASE/support-files/binary-configure $BASE/configure chmod a+x $BASE/bin/* $BASE/scripts/* $BASE/support-files/mysql-* $BASE/configure $CP -r sql-bench/* $BASE/sql-bench rm -f $BASE/sql-bench/*.sh $BASE/sql-bench/Makefile* $BASE/lib/*.la # Clean up if we did this from a bk tree if [ -d $BASE/sql-bench/SCCS ] ; then find $BASE/share -name SCCS -print | xargs rm -r -f find $BASE/sql-bench -name SCCS -print | xargs rm -r -f fi # Change the distribution to a long descriptive name NEW_NAME=mysql-$version-$system-$machine$SUFFIX BASE2=$TMP/$NEW_NAME rm -r -f $BASE2 mv $BASE $BASE2 BASE=$BASE2 # # If we are compiling with gcc, copy libgcc.a to the distribution as libmygcc.a # if test "yes" = "yes" then cd $BASE/lib gcclib=`xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 --print-libgcc-file` if test $? -ne 0 then print "Warning: Couldn't find libgcc.a!" else $CP $gcclib libmygcc.a fi cd $SOURCE fi #if we are debugging, do not do tar/gz if [ x$DEBUG = x1 ] ; then exit fi # This is needed to prefere gnu tar instead of tar because tar can't # always handle long filenames PATH_DIRS=`echo $PATH | sed -e 's/^:/. /' -e 's/:$/ ./' -e 's/::/ . /g' -e 's/:/ /g' ` which_1 () { for cmd do for d in $PATH_DIRS do for file in $d/$cmd do if test -x $file -a ! -d $file then echo $file exit 0 fi done done done exit 1 } # # Create the result tar file # tar=`which_1 gtar` if test "$?" = "1" -o "$tar" = "" then tar=tar fi echo "Using $tar to create archive" cd $TMP $tar cvf $SOURCE/$NEW_NAME.tar $NEW_NAME cd $SOURCE echo "Compressing archive" gzip -9 $NEW_NAME.tar echo "Removing temporary directory" rm -r -f $BASE echo "$NEW_NAME.tar.gz created" kêB;¡£ ¤�Ëy”·:•�·:•�·:! ÕYË./usr/local/share/mysql/my-small.cnfistó/¤�# Example mysql config file for small systems. # # This is for a system with little memory (<= 64M) where MySQL is only used # from time to time and it's important that the mysqld deamon # doesn't use much resources. # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/mysql) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=16K set-variable = max_allowed_packet=1M set-variable = thread_stack=64K set-variable = table_cache=4 set-variable = sort_buffer=64K set-variable = net_buffer_length=2K server-id = 1 # Uncomment the following if you want to log updates #log-bin # Uncomment the following if you are NOT using BDB tables #skip-bdb # Uncomment the following if you are using Innobase tables #innobase_data_home_dir = /usr/local/share #innobase_log_group_home_dir = /usr/local/share #innobase_log_arch_dir = /usr/local/share #innobase_data_file_path = ibdata1:25M;ibdata2:37M;ibdata3:100M;ibdata4:300M #set-variable = innobase_mirrored_log_groups=1 #set-variable = innobase_log_files_in_group=3 #set-variable = innobase_log_file_size=5M #set-variable = innobase_log_buffer_size=8M #innobase_flush_log_at_trx_commit=1 #innobase_log_archive=0 #set-variable = innobase_buffer_pool_size=16M #set-variable = innobase_additional_mem_pool_size=2M #set-variable = innobase_file_io_threads=4 #set-variable = innobase_lock_wait_timeout=50 [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=8M set-variable = sort_buffer=8M [myisamchk] set-variable = key_buffer=8M set-variable = sort_buffer=8M [mysqlhotcopy] interactive-timeout st te kêJc›£ ¤�è y”·:–�·:–�·:! ÛYè ./usr/local/share/mysql/my-medium.cnfstó/¤�# Example mysql config file for medium systems. # # This is for a system with little memory (32M - 64M) where MySQL plays # a important part and systems up to 128M very MySQL is used together with # other programs (like a web server) # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/mysql) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=16M set-variable = max_allowed_packet=1M set-variable = table_cache=64 set-variable = sort_buffer=512K set-variable = net_buffer_length=8K set-variable = myisam_sort_buffer_size=8M log-bin server-id = 1 # Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname # Uncomment the following if you are using BDB tables #set-variable = bdb_cache_size=4M #set-variable = bdb_max_lock=10000 # Uncomment the following if you are using Innobase tables #innobase_data_home_dir = /usr/local/share #innobase_log_group_home_dir = /usr/local/share #innobase_log_arch_dir = /usr/local/share #innobase_data_file_path = ibdata1:25M;ibdata2:37M;ibdata3:100M;ibdata4:300M #set-variable = innobase_mirrored_log_groups=1 #set-variable = innobase_log_files_in_group=3 #set-variable = innobase_log_file_size=5M #set-variable = innobase_log_buffer_size=8M #innobase_flush_log_at_trx_commit=1 #innobase_log_archive=0 #set-variable = innobase_buffer_pool_size=16M #set-variable = innobase_additional_mem_pool_size=2M #set-variable = innobase_file_io_threads=4 #set-variable = innobase_lock_wait_timeout=50 [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout kê~œ£ ¤�÷ y”·:–�·:–�·:! ÝY÷ ./usr/local/share/mysql/my-large.cnfstó/¤�# Example mysql config file for large systems. # # This is for large system with memory = 512M where the system runs mainly # MySQL. # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/mysql) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=256M set-variable = max_allowed_packet=1M set-variable = table_cache=256 set-variable = sort_buffer=1M set-variable = record_buffer=1M set-variable = myisam_sort_buffer_size=64M set-variable = thread_cache=8 # Try number of CPU's*2 for thread_concurrency set-variable = thread_concurrency=8 log-bin server-id = 1 # Uncomment the following if you are using BDB tables #set-variable = bdb_cache_size=64M #set-variable = bdb_max_lock=100000 # Uncomment the following if you are using Innobase tables #innobase_data_home_dir = /usr/local/share #innobase_log_group_home_dir = /usr/local/share #innobase_log_arch_dir = /usr/local/share #innobase_data_file_path = ibdata1:25M;ibdata2:37M;ibdata3:100M;ibdata4:300M #set-variable = innobase_mirrored_log_groups=1 #set-variable = innobase_log_files_in_group=3 #set-variable = innobase_log_file_size=5M #set-variable = innobase_log_buffer_size=8M #innobase_flush_log_at_trx_commit=1 #innobase_log_archive=0 #set-variable = innobase_buffer_pool_size=16M #set-variable = innobase_additional_mem_pool_size=2M #set-variable = innobase_file_io_threads=4 #set-variable = innobase_lock_wait_timeout=50 # Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=128M set-variable = sort_buffer=128M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=128M set-variable = sort_buffer=128M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout / kê ¼�£ ¤�ÿ y”·:–�·:—�·:! åYÿ ./usr/local/share/mysql/my-huge.cnfstó/¤�# Example mysql config file for very large systems. # # This is for large system with memory of 1G-2G where the system runs mainly # MySQL. # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/mysql) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=384M set-variable = max_allowed_packet=1M set-variable = table_cache=512 set-variable = sort_buffer=2M set-variable = record_buffer=2M set-variable = thread_cache=8 # Try number of CPU's*2 for thread_concurrency set-variable = thread_concurrency=8 set-variable = myisam_sort_buffer_size=64M log-bin server-id = 1 # Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname # Uncomment the following if you are using BDB tables #set-variable = bdb_cache_size=384M #set-variable = bdb_max_lock=100000 # Uncomment the following if you are using Innobase tables #innobase_data_home_dir = /usr/local/share #innobase_log_group_home_dir = /usr/local/share #innobase_log_arch_dir = /usr/local/share #innobase_data_file_path = ibdata1:25M;ibdata2:37M;ibdata3:100M;ibdata4:300M #set-variable = innobase_mirrored_log_groups=1 #set-variable = innobase_log_files_in_group=3 #set-variable = innobase_log_file_size=5M #set-variable = innobase_log_buffer_size=8M #innobase_flush_log_at_trx_commit=1 #innobase_log_archive=0 #set-variable = innobase_buffer_pool_size=16M #set-variable = innobase_additional_mem_pool_size=2M #set-variable = innobase_file_io_threads=4 #set-variable = innobase_lock_wait_timeout=50 [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=256M set-variable = sort_buffer=256M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=256M set-variable = sort_buffer=256M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout / kê|�ž£ ¤�“y”·:—�·:—�·:!0‹Y“./usr/local/share/mysql/mysql-log-rotateibutionó/¤�# This logname is set in mysql.server.sh that ends up in /etc/rc.d/init.d/mysql # # If the root user has a password you have to create a # /root/.my.cnf configuration file with the following # content: # # [mysqladmin] # password = # user= root # # where "" is the password. # # ATTENTION: This /root/.my.cnf should be readable ONLY # for root ! /var/mysql/mysqld.log { # create 600 mysql mysql notifempty daily rotate 3 missingok compress postrotate # just if mysqld is really running if test -n "`ps acx|grep mysqld`"; then /usr/local/bin/mysqladmin flush-logs fi endscript } ck # kê ‹š£ í�¶y”·:”�·:”�·:!µY¶./usr/local/share/mysql/mysql.serverateó/í�#!/bin/sh # Copyright Abandoned 1996 TCX DataKonsult AB & Monty Program KB & Detron HB # This file is public domain and comes with NO WARRANTY of any kind # Mysql daemon start/stop script. # Usually this is put in /etc/init.d (at least on machines SYSV R4 based # systems) and linked to /etc/rc3.d/S99mysql and /etc/rc0.d/S01mysql. # When this is done the mysql server will be started when the machine is # started and shut down when the systems goes down. # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 90 90 # description: A very fast and reliable SQL database engine. # The following variables are only set for letting mysql.server find things. # If you want to affect other MySQL variables, you should make your changes # in the /etc/my.cnf or other configuration files. PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH # Set some defaults datadir=/var/mysql basedir= pid_file= if test -z "$basedir" then basedir=/usr/local bindir=/usr/local/bin else bindir="$basedir/bin" fi if test -z "$pid_file" then pid_file=$datadir/`/usr/bin/hostname`.pid else case "$pid_file" in /* ) ;; * ) pid_file="$datadir/$pid_file" ;; esac fi mode=$1 # start or stop parse_arguments() { for arg do case "$arg" in --basedir=*) basedir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; --datadir=*) datadir=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; --pid-file=*) pid_file=`echo "$arg" | sed -e 's/^[^=]*=//'` ;; esac done } # Get arguments from the my.cfg file, groups [mysqld] and [mysql_server] if test -x ./bin/my_print_defaults then print_defaults="./bin/my_print_defaults" elif test -x $bindir/my_print_defaults then print_defaults="$bindir/my_print_defaults" elif test -x $bindir/mysql_print_defaults then print_defaults="$bindir/mysql_print_defaults" else # Try to find basedir in /etc/my.cnf conf=/etc/my.cnf print_defaults= if test -r $conf then subpat='^[^=]*basedir[^=]*=\(.*\)$' dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf` for d in $dirs do d=`echo $d | sed -e 's/[ ]//g'` if test -x "$d/bin/my_print_defaults" then print_defaults="$d/bin/my_print_defaults" break fi if test -x "$d/bin/mysql_print_defaults" then print_defaults="$d/bin/mysql_print_defaults" break fi done fi # Hope it's in the PATH ... but I doubt it test -z "$print_defaults" && print_defaults="my_print_defaults" fi parse_arguments `$print_defaults $defaults mysqld mysql_server` # Safeguard (relative paths, core dumps..) cd $basedir case "$mode" in 'start') # Start daemon if test -x $bindir/safe_mysqld then # Give extra arguments to mysqld with the my.cnf file. This script may # be overwritten at next upgrade. $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file & # Make lock for RedHat / SuSE if test -w /var/lock/subsys then touch /var/lock/subsys/mysql fi else echo "Can't execute $bindir/safe_mysqld" fi ;; 'stop') # Stop daemon. We use a signal here to avoid having to know the # root password. if test -f "$pid_file" then mysqld_pid=`cat $pid_file` echo "Killing mysqld with pid $mysqld_pid" kill $mysqld_pid # mysqld should remove the pid_file when it exits, so wait for it. sleep 1 while [ -s $pid_file -a "$flags" != aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ] do [ -z "$flags" ] && echo "Wait for mysqld to exit\c" || echo ".\c" flags=a$flags sleep 1 done if [ -s $pid_file ] then echo " gave up waiting!" elif [ -n "$flags" ] then echo " done" fi # delete lock for RedHat / SuSE if test -f /var/lock/subsys/mysql then rm /var/lock/subsys/mysql fi else echo "No mysqld pid file found. Looked for $pid_file." fi ;; *) # usage echo "usage: $0 start|stop" exit 1 ;; esac on kê ÏT¤ ¤�z”·:˜�·:˜�·:!0¸Y./usr/local/share/mysql/binary-configureibutionó/¤�#!/bin/sh if test ! -x ./scripts/mysql_install_db then echo "I didn't find the script './scripts/mysql_install_db'." echo "Please execute this script in the mysql distribution directory!" exit 1; fi echo "NOTE: This is a MySQL binary distribution. It's ready to run, you don't" echo "need to configure it!" echo "" echo "To help you a bit, I am now going to create the needed MySQL databases" echo "and start the MySQL server for you. If you run into any trouble, please" echo "consult the MySQL manual, that you can find in the Docs directory." echo "" ./scripts/mysql_install_db if [ $? = 0 ] then echo "Starting the mysqld server. You can test that it is up and running" echo "with the command:" echo "./bin/mysqladmin version" ./bin/safe_mysqld & fi her kêfzŸ£ ¤�E7z”·:—�·:—�·:!•yE7./usr/local/share/mysql/mysql-3.23.35.specutionó/¤�%define mysql_version 3.23.35 %define shared_lib_version 10:0:0 %define release 1 %define mysqld_user mysql %define see_base For a description of MySQL see the base MySQL RPM or http://www.mysql.com Name: MySQL Summary: MySQL: a very fast and reliable SQL database engine Group: Applications/Databases Summary(pt_BR): MySQL: Um servidor SQL rápido e confiável. Group(pt_BR): Aplicações/Banco_de_Dados Version: 3.23.35 Release: %{release} Copyright: GPL / LGPL Source: http://www.mysql.com/Downloads/MySQL-3.23/mysql-%{mysql_version}.tar.gz Icon: mysql.gif URL: http://www.mysql.com/ Packager: David Axmark Provides: msqlormysql MySQL-server Obsoletes: mysql # Think about what you use here since the first step is to # run a rm -rf BuildRoot: /var/tmp/mysql # From the manual %description MySQL is a true multi-user, multi-threaded SQL (Structured Query Language) database server. MySQL is a client/server implementation that consists of a server daemon (mysqld) and many different client programs/libraries. The main goals of MySQL are speed, robustness and ease of use. MySQL was originally developed because we needed a SQL server that could handle very big databases with magnitude higher speed than what any database vendor could offer to us. And since we did not need all the features that made their server slow we made our own. We have now been using MySQL since 1996 in a environment with more than 40 databases, 10,000 tables, of which more than 500 have more than 7 million rows. This is about 200G of data. The base upon which MySQL is built is a set of routines that have been used in a highly demanding production environment for many years. While MySQL is still in development, it already offers a rich and highly useful function set. See the documentation for more information %description -l pt_BR O MySQL é um servidor de banco de dados SQL realmente multiusuário e\ multi-tarefa. A linguagem SQL é a mais popular linguagem para banco de\ dados no mundo. O MySQL é uma implementação cliente/servidor que\ consiste de um servidor chamado mysqld e diversos\ programas/bibliotecas clientes. Os principais objetivos do MySQL são:\ velocidade, robustez e facilidade de uso. O MySQL foi originalmente\ desenvolvido porque nós na Tcx precisávamos de um servidor SQL que\ pudesse lidar com grandes bases de dados e com uma velocidade muito\ maior do que a que qualquer vendedor podia nos oferecer. Estamos\ usando\ o MySQL desde 1996 em um ambiente com mais de 40 bases de dados com 10.000\ tabelas, das quais mais de 500 têm mais de 7 milhões de linhas. Isto é o\ equivalente a aproximadamente 50G de dados críticos. A base da construção do\ MySQL é uma série de rotinas que foram usadas em um ambiente de produção com\ alta demanda por muitos anos. Mesmo o MySQL estando ainda em desenvolvimento,\ ele já oferece um conjunto de funções muito ricas e úteis. Veja a documentação\ para maiores informações. %package client Release: %{release} Summary: MySQL - Client Group: Applications/Databases Summary(pt_BR): MySQL - Cliente Group(pt_BR): Aplicações/Banco_de_Dados Obsoletes: mysql-client %description client This package contains the standard MySQL clients. %{see_base} %description client -l pt_BR Este pacote contém os clientes padrão para o MySQL. %package bench Release: %{release} Requires: MySQL-client MySQL-DBI-perl-bin perl Summary: MySQL - Benchmarks and test system Group: Applications/Databases Summary(pt_BR): MySQL - Medições de desempenho Group(pt_BR): Aplicações/Banco_de_Dados Obsoletes: mysql-bench %description bench This package contains MySQL benchmark scripts and data. %{see_base} %description bench -l pt_BR Este pacote contém medições de desempenho de scripts e dados do MySQL. %package devel Release: %{release} Requires: MySQL-client Summary: MySQL - Development header files and libraries Group: Applications/Databases Summary(pt_BR): MySQL - Medições de desempenho Group(pt_BR): Aplicações/Banco_de_Dados Obsoletes: mysql-devel %description devel This package contains the development header files and libraries necessary to develop MySQL client applications. %{see_base} %description devel -l pt_BR Este pacote contém os arquivos de cabeçalho (header files) e bibliotecas necessárias para desenvolver aplicações clientes do MySQL. %package shared Release: %{release} Summary: MySQL - Shared libraries Group: Applications/Databases %description shared This package contains the shared libraries (*.so*) which certain languages and applications need to dynamically load and use MySQL. %prep %setup -n mysql-%{mysql_version} %build # The all-static flag is to make the RPM work on different # distributions. This version tries to put shared mysqlclient libraries # in a separate package. BuildMySQL() { # The --enable-assembler simply does nothing on systems that does not # support assembler speedups. sh -c "PATH=\"${MYSQL_BUILD_PATH:-/bin:/usr/bin}\" \ CC=\"${MYSQL_BUILD_CC:-egcs}\" \ CFLAGS=\"${MYSQL_BUILD_CFLAGS:- -O6 -fno-omit-frame-pointer}\" \ CXX=\"${MYSQL_BUILD_CXX:-egcs}\" \ CXXFLAGS=\"${MYSQL_BUILD_CXXFLAGS:- -O6 \ -felide-constructors -fno-exceptions -fno-rtti \ -fno-omit-frame-pointer}\" \ ./configure \ $* \ --enable-assembler \ --with-mysqld-user=%{mysqld_user} \ --with-unix-socket-path=/var/lib/mysql/mysql.sock \ --prefix=/ \ --with-extra-charsets=complex \ --exec-prefix=/usr \ --libexecdir=/usr/sbin \ --sysconfdir=/etc \ --datadir=/usr/share \ --localstatedir=/var/lib/mysql \ --infodir=/usr/info \ --includedir=/usr/include \ --mandir=/usr/man \ --without-berkeley-db \ --without-innobase \ --with-comment=\"Official MySQL RPM\"; # Add this for more debugging support # --with-debug # Add this for MyISAM RAID support: # --with-raid " # benchdir does not fit in above model. Maybe a separate bench distribution make benchdir_root=$RPM_BUILD_ROOT/usr/share/ } # Use the build root for temporary storage of the shared libraries. RBR=$RPM_BUILD_ROOT MBD=$RPM_BUILD_DIR/mysql-%{mysql_version} if test -z "$RBR" -o "$RBR" = "/" then echo "RPM_BUILD_ROOT has stupid value" exit 1 fi rm -rf $RBR mkdir -p $RBR BuildMySQL "--enable-shared --enable-thread-safe-client --without-server" # Save everything for debus tar cf $RBR/all.tar . # Save shared libraries (cd libmysql/.libs; tar cf $RBR/shared-libs.tar *.so*) (cd libmysql_r/.libs; tar rf $RBR/shared-libs.tar *.so*) # Save manual to avoid rebuilding mv Docs/manual.ps Docs/manual.ps.save make distclean mv Docs/manual.ps.save Docs/manual.ps BuildMySQL "--disable-shared" \ "--with-mysqld-ldflags='-all-static'" \ "--with-client-ldflags='-all-static'" %install -n mysql-%{mysql_version} RBR=$RPM_BUILD_ROOT MBD=$RPM_BUILD_DIR/mysql-%{mysql_version} # Ensure that needed directories exists install -d $RBR/etc/{logrotate.d,rc.d/init.d} install -d $RBR/var/lib/mysql/mysql install -d $RBR/usr/share/sql-bench install -d $RBR/usr/share/mysql-test install -d $RBR/usr/{sbin,share,man,include} install -d $RBR/usr/doc/MySQL-%{mysql_version} install -d $RBR/usr/lib # Make install make install DESTDIR=$RBR benchdir_root=/usr/share/ # Install shared libraries (Disable for architectures that don't support it) (cd $RBR/usr/lib; tar xf $RBR/shared-libs.tar) # Install logrotate and autostart install -m644 $MBD/support-files/mysql-log-rotate $RBR/etc/logrotate.d/mysql install -m755 $MBD/support-files/mysql.server $RBR/etc/rc.d/init.d/mysql # Install docs install -m644 $RPM_BUILD_DIR/mysql-%{mysql_version}/Docs/mysql.info \ $RBR/usr/info/mysql.info for file in README COPYING COPYING.LIB Docs/manual_toc.html Docs/manual.html \ Docs/manual.txt Docs/manual.texi Docs/manual.ps \ support-files/my-huge.cnf support-files/my-large.cnf \ support-files/my-medium.cnf support-files/my-small.cnf do b=`basename $file` install -m644 $MBD/$file $RBR/usr/doc/MySQL-%{mysql_version}/$b done %pre if test -x /etc/rc.d/init.d/mysql then /etc/rc.d/init.d/mysql stop > /dev/null 2>&1 echo "Giving mysqld a couple of seconds to exit nicely" sleep 5 fi %post mysql_datadir=/var/lib/mysql # Create data directory if needed if test ! -d $mysql_datadir; then mkdir $mysql_datadir; fi if test ! -d $mysql_datadir/mysql; then mkdir $mysql_datadir/mysql; fi if test ! -d $mysql_datadir/test; then mkdir $mysql_datadir/test; fi # Make MySQL start/shutdown automatically when the machine does it. /sbin/chkconfig --add mysql # Create a MySQL user. Do not report any problems if it already # exists. This is redhat specific and should be handled more portable useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" mysql 2> /dev/null || true # Change permissions so that the user that will run the MySQL daemon # owns all database files. chown -R mysql $mysql_datadir # Initiate databases mysql_install_db -IN-RPM # Change permissions again to fix any new files. chown -R mysql $mysql_datadir # Fix permissions for the permission database so that only the user # can read them. chmod -R og-rw $mysql_datadir/mysql # Restart in the same way that mysqld will be started normally. /etc/rc.d/init.d/mysql start # Allow safe_mysqld to start mysqld and print a message before we exit sleep 2 %preun if test -x /etc/rc.d/init.d/mysql then /etc/rc.d/init.d/mysql stop > /dev/null fi # Remove autostart of mysql if test $1 = 0 then /sbin/chkconfig --del mysql fi # We do not remove the mysql user since it may still own a lot of # database files. %files %attr(-, root, root) %doc /usr/doc/MySQL-%{mysql_version}/ %attr(755, root, root) /usr/bin/isamchk %attr(755, root, root) /usr/bin/isamlog %attr(755, root, root) /usr/bin/pack_isam %attr(755, root, root) /usr/bin/myisamchk %attr(755, root, root) /usr/bin/myisamlog %attr(755, root, root) /usr/bin/myisampack %attr(755, root, root) /usr/bin/mysql_fix_privilege_tables %attr(755, root, root) /usr/bin/mysql_convert_table_format %attr(755, root, root) /usr/bin/mysql_install_db %attr(755, root, root) /usr/bin/mysql_setpermission %attr(755, root, root) /usr/bin/mysql_zap %attr(755, root, root) /usr/bin/mysqlbug %attr(755, root, root) /usr/bin/mysqltest %attr(755, root, root) /usr/bin/mysqlhotcopy %attr(755, root, root) /usr/bin/perror %attr(755, root, root) /usr/bin/replace %attr(755, root, root) /usr/bin/resolveip %attr(755, root, root) /usr/bin/safe_mysqld %attr(755, root, root) /usr/bin/mysqld_multi %attr(755, root, root) /usr/bin/my_print_defaults %attr(644, root, root) /usr/info/mysql.info* %attr(755, root, root) /usr/sbin/mysqld %attr(644, root, root) /etc/logrotate.d/mysql %attr(755, root, root) /etc/rc.d/init.d/mysql %attr(755, root, root) /usr/share/mysql/ %files client %attr(755, root, root) /usr/bin/msql2mysql %attr(755, root, root) /usr/bin/mysql %attr(755, root, root) /usr/bin/mysqlaccess %attr(755, root, root) /usr/bin/mysqladmin %attr(755, root, root) /usr/bin/mysql_find_rows %attr(755, root, root) /usr/bin/mysqldump %attr(755, root, root) /usr/bin/mysqlimport %attr(755, root, root) /usr/bin/mysqlshow %attr(755, root, root) /usr/bin/mysqlbinlog %attr(644, root, man) %doc /usr/man/man1/mysql.1* %attr(644, root, man) %doc /usr/man/man1/isamchk.1* %attr(644, root, man) %doc /usr/man/man1/isamlog.1* %attr(644, root, man) %doc /usr/man/man1/mysql_zap.1* %attr(644, root, man) %doc /usr/man/man1/mysqlaccess.1* %attr(644, root, man) %doc /usr/man/man1/mysqladmin.1* %attr(644, root, man) %doc /usr/man/man1/mysqld.1* %attr(644, root, man) %doc /usr/man/man1/mysqld_multi.1* %attr(644, root, man) %doc /usr/man/man1/mysqldump.1* %attr(644, root, man) %doc /usr/man/man1/mysqlshow.1* %attr(644, root, man) %doc /usr/man/man1/perror.1* %attr(644, root, man) %doc /usr/man/man1/replace.1* %attr(644, root, man) %doc /usr/man/man1/safe_mysqld.1* %post shared /sbin/ldconfig %postun shared /sbin/ldconfig %files devel %attr(755, root, root) /usr/bin/comp_err %attr(755, root, root) /usr/include/mysql/ %attr(755, root, root) /usr/lib/mysql/ %attr(755, root, root) /usr/bin/mysql_config %files shared # Shared libraries (omit for architectures that don't support them) %attr(755, root, root) /usr/lib/*.so* %files bench %attr(-, root, root) /usr/share/sql-bench %attr(-, root, root) /usr/share/mysql-test %changelog * Tue Jan 2 2001 Monty - Added mysql-test to the bench package * Fri Aug 18 2000 Tim Smith - Added separate libmysql_r directory; now both a threaded and non-threaded library is shipped. * Wed Sep 28 1999 David Axmark - Added the support-files/my-example.cnf to the docs directory. - Removed devel dependency on base since it is about client development. * Wed Sep 8 1999 David Axmark - Cleaned up some for 3.23. * Thu Jul 1 1999 David Axmark - Added support for shared libraries in a separate sub package. Original fix by David Fox (dsfox@cogsci.ucsd.edu) - The --enable-assembler switch is now automatically disables on platforms there assembler code is unavailable. This should allow building this RPM on non i386 systems. * Mon Feb 22 1999 David Axmark - Removed unportable cc switches from the spec file. The defaults can now be overridden with environment variables. This feature is used to compile the official RPM with optimal (but compiler version specific) switches. - Removed the repetitive description parts for the sub rpms. Maybe add again if RPM gets a multiline macro capability. - Added support for a pt_BR translation. Translation contributed by Jorge Godoy . * Wed Nov 4 1998 David Axmark - A lot of changes in all the rpm and install scripts. This may even be a working RPM :-) * Sun Aug 16 1998 David Axmark - A developers changelog for MySQL is available in the source RPM. And there is a history of major user visible changed in the Reference Manual. Only RPM specific changes will be documented here. oot kêÈöÍàíAz”·:!Õž:!Õž:!#0MÝ./usr/localsharó/íA kê¸�ÎàíAz”·:‰�·:‰�·:!#0NÝ./usr/local/binó/íA kê0@ð…íAz”·:é�·:é�·:! 0|1./usr/local/libó/íA kêvñ…íAz”·:œŽ·:œŽ·:! 0á1./usr/local/lib/mysql-client-3.23.35.spó/íA kêŒ%ÈíAz”·: Õž: Õž:!0Q³./usr/local/manó/íA kê^¹&ÈíAz”·:“�·:“�·:!0R³./usr/local/man/man1-cló/íA kêv*ù&íAz”·: Õž:!Õž:!0s./usr/local/include-cló/íA kêŽâú&íAz”·:s�·:s�·:!0s./usr/local/include/mysqlnt-3.2ó/íA kêò*˜£ íAz”·:!Õž:!Õž:!0ëm./usr/local/sharee/mysqó/íA kê`晣 íAz”·:½Ž·:½Ž·:!0ým./usr/local/share/mysqló/íAkêŠ threads are not posix */ /* #undef HAVE_UNIXWARE7_THREADS */ /* new UNIXWARE7 threads that are not yet posix */ /* #undef HAVE_UNIXWARE7_POSIX */ /* READLINE: */ /* #undef HAVE_USG_SIGHOLD */ /* Define if want -lwrap */ /* #undef LIBWRAP */ /* Define to machine type name eg sun10 */ #define MACHINE_TYPE "powerpc" /* mysql client protocoll version */ #define PROTOCOL_VERSION 10 /* Define if qsort returns void */ #define QSORT_TYPE_IS_VOID 1 /* Define as the return type of qsort (int or void). */ #define RETQSORTTYPE void /* Size of off_t */ #define SIZEOF_OFF_T 8 /* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE socklen_t /* Last argument to get/setsockopt */ /* #undef SOCKOPT_OPTLEN_TYPE */ /* #undef SPEED_T_IN_SYS_TYPES */ /* #undef SPRINTF_RETURNS_PTR */ #define SPRINTF_RETURNS_INT 1 /* #undef SPRINTF_RETURNS_GARBAGE */ /* #undef STRUCT_DIRENT_HAS_D_FILENO */ #define STRUCT_DIRENT_HAS_D_INO 1 /* Define to name of system eg solaris*/ #define SYSTEM_TYPE "ibm-aix4.3.2.0" /* Define if you want to have threaded code. This may be undef on client code */ /* #undef THREAD */ /* Should be client be thread safe */ /* #undef THREAD_SAFE_CLIENT */ /* READLINE: */ /* #undef TIOCSTAT_IN_SYS_IOCTL */ /* Use multi-byte character routines */ /* #undef USE_MB */ /* #undef USE_MB_IDENT */ /* Use MySQL RAID */ /* #undef USE_RAID */ /* Use strcoll() functions when comparing and sorting. */ /* #undef USE_STRCOLL */ /* READLINE: */ #define VOID_SIGHANDLER 1 /* The number of bytes in a char. */ #define SIZEOF_CHAR 1 /* The number of bytes in a int. */ #define SIZEOF_INT 4 /* The number of bytes in a long. */ #define SIZEOF_LONG 4 /* The number of bytes in a long long. */ #define SIZEOF_LONG_LONG 8 /* Define if you have the alarm function. */ #define HAVE_ALARM 1 /* Define if you have the atod function. */ /* #undef HAVE_ATOD */ /* Define if you have the bcmp function. */ #define HAVE_BCMP 1 /* Define if you have the bfill function. */ /* #undef HAVE_BFILL */ /* Define if you have the bmove function. */ /* #undef HAVE_BMOVE */ /* Define if you have the bzero function. */ #define HAVE_BZERO 1 /* Define if you have the chsize function. */ /* #undef HAVE_CHSIZE */ /* Define if you have the cuserid function. */ #define HAVE_CUSERID 1 /* Define if you have the dlerror function. */ #define HAVE_DLERROR 1 /* Define if you have the dlopen function. */ #define HAVE_DLOPEN 1 /* Define if you have the fchmod function. */ #define HAVE_FCHMOD 1 /* Define if you have the fcntl function. */ #define HAVE_FCNTL 1 /* Define if you have the fconvert function. */ /* #undef HAVE_FCONVERT */ /* Define if you have the finite function. */ #define HAVE_FINITE 1 /* Define if you have the fpresetsticky function. */ /* #undef HAVE_FPRESETSTICKY */ /* Define if you have the fpsetmask function. */ /* #undef HAVE_FPSETMASK */ /* Define if you have the fseeko function. */ #define HAVE_FSEEKO 1 /* Define if you have the ftruncate function. */ #define HAVE_FTRUNCATE 1 /* Define if you have the getcwd function. */ #define HAVE_GETCWD 1 /* Define if you have the gethostbyaddr_r function. */ #define HAVE_GETHOSTBYADDR_R 1 /* Define if you have the gethostbyname_r function. */ #define HAVE_GETHOSTBYNAME_R 1 /* Define if you have the getpagesize function. */ #define HAVE_GETPAGESIZE 1 /* Define if you have the getpass function. */ #define HAVE_GETPASS 1 /* Define if you have the getpassphrase function. */ /* #undef HAVE_GETPASSPHRASE */ /* Define if you have the getpwnam function. */ #define HAVE_GETPWNAM 1 /* Define if you have the getpwuid function. */ #define HAVE_GETPWUID 1 /* Define if you have the getrlimit function. */ #define HAVE_GETRLIMIT 1 /* Define if you have the getrusage function. */ #define HAVE_GETRUSAGE 1 /* Define if you have the getwd function. */ #define HAVE_GETWD 1 /* Define if you have the index function. */ #define HAVE_INDEX 1 /* Define if you have the initgroups function. */ #define HAVE_INITGROUPS 1 /* Define if you have the localtime_r function. */ #define HAVE_LOCALTIME_R 1 /* Define if you have the locking function. */ /* #undef HAVE_LOCKING */ /* Define if you have the longjmp function. */ #define HAVE_LONGJMP 1 /* Define if you have the lrand48 function. */ #define HAVE_LRAND48 1 /* Define if you have the lstat function. */ #define HAVE_LSTAT 1 /* Define if you have the madvise function. */ #define HAVE_MADVISE 1 /* Define if you have the memcpy function. */ #define HAVE_MEMCPY 1 /* Define if you have the memmove function. */ #define HAVE_MEMMOVE 1 /* Define if you have the mkstemp function. */ #define HAVE_MKSTEMP 1 /* Define if you have the mlockall function. */ #define HAVE_MLOCKALL 1 /* Define if you have the perror function. */ #define HAVE_PERROR 1 /* Define if you have the poll function. */ #define HAVE_POLL 1 /* Define if you have the pread function. */ #define HAVE_PREAD 1 /* Define if you have the pthread_attr_create function. */ /* #undef HAVE_PTHREAD_ATTR_CREATE */ /* Define if you have the pthread_attr_setprio function. */ /* #undef HAVE_PTHREAD_ATTR_SETPRIO */ /* Define if you have the pthread_attr_setschedparam function. */ #define HAVE_PTHREAD_ATTR_SETSCHEDPARAM 1 /* Define if you have the pthread_attr_setstacksize function. */ #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1 /* Define if you have the pthread_condattr_create function. */ /* #undef HAVE_PTHREAD_CONDATTR_CREATE */ /* Define if you have the pthread_getsequence_np function. */ /* #undef HAVE_PTHREAD_GETSEQUENCE_NP */ /* Define if you have the pthread_init function. */ /* #undef HAVE_PTHREAD_INIT */ /* Define if you have the pthread_rwlock_rdlock function. */ #define HAVE_PTHREAD_RWLOCK_RDLOCK 1 /* Define if you have the pthread_setprio function. */ /* #undef HAVE_PTHREAD_SETPRIO */ /* Define if you have the pthread_setprio_np function. */ /* #undef HAVE_PTHREAD_SETPRIO_NP */ /* Define if you have the pthread_setschedparam function. */ #define HAVE_PTHREAD_SETSCHEDPARAM 1 /* Define if you have the pthread_sigmask function. */ #define HAVE_PTHREAD_SIGMASK 1 /* Define if you have the putenv function. */ #define HAVE_PUTENV 1 /* Define if you have the readlink function. */ #define HAVE_READLINK 1 /* Define if you have the realpath function. */ #define HAVE_REALPATH 1 /* Define if you have the rename function. */ #define HAVE_RENAME 1 /* Define if you have the rint function. */ #define HAVE_RINT 1 /* Define if you have the rwlock_init function. */ /* #undef HAVE_RWLOCK_INIT */ /* Define if you have the select function. */ #define HAVE_SELECT 1 /* Define if you have the setenv function. */ /* #undef HAVE_SETENV */ /* Define if you have the setlocale function. */ #define HAVE_SETLOCALE 1 /* Define if you have the setupterm function. */ /* #undef HAVE_SETUPTERM */ /* Define if you have the sighold function. */ #define HAVE_SIGHOLD 1 /* Define if you have the sigset function. */ #define HAVE_SIGSET 1 /* Define if you have the sigthreadmask function. */ #define HAVE_SIGTHREADMASK 1 /* Define if you have the snprintf function. */ #define HAVE_SNPRINTF 1 /* Define if you have the socket function. */ #define HAVE_SOCKET 1 /* Define if you have the stpcpy function. */ /* #undef HAVE_STPCPY */ /* Define if you have the strcasecmp function. */ #define HAVE_STRCASECMP 1 /* Define if you have the strcoll function. */ #define HAVE_STRCOLL 1 /* Define if you have the strerror function. */ #define HAVE_STRERROR 1 /* Define if you have the strnlen function. */ /* #undef HAVE_STRNLEN */ /* Define if you have the strpbrk function. */ #define HAVE_STRPBRK 1 /* Define if you have the strstr function. */ #define HAVE_STRSTR 1 /* Define if you have the strtok_r function. */ #define HAVE_STRTOK_R 1 /* Define if you have the strtol function. */ #define HAVE_STRTOL 1 /* Define if you have the strtoul function. */ #define HAVE_STRTOUL 1 /* Define if you have the strtoull function. */ #define HAVE_STRTOULL 1 /* Define if you have the tcgetattr function. */ #define HAVE_TCGETATTR 1 /* Define if you have the tell function. */ #define HAVE_TELL 1 /* Define if you have the tempnam function. */ #define HAVE_TEMPNAM 1 /* Define if you have the thr_setconcurrency function. */ /* #undef HAVE_THR_SETCONCURRENCY */ /* Define if you have the vidattr function. */ /* #undef HAVE_VIDATTR */ /* Define if you have the header file. */ /* #undef HAVE_ALLOCA_H */ /* Define if you have the header file. */ #define HAVE_ARPA_INET_H 1 /* Define if you have the header file. */ /* #undef HAVE_ASM_TERMBITS_H */ /* Define if you have the header file. */ #define HAVE_CRYPT_H 1 /* Define if you have the header file. */ #define HAVE_CURSES_H 1 /* Define if you have the header file. */ #define HAVE_DIRENT_H 1 /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define if you have the header file. */ #define HAVE_FLOAT_H 1 /* Define if you have the header file. */ /* #undef HAVE_FLOATINGPOINT_H */ /* Define if you have the header file. */ #define HAVE_GRP_H 1 /* Define if you have the header file. */ /* #undef HAVE_IEEEFP_H */ /* Define if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define if you have the header file. */ /* #undef HAVE_NDIR_H */ /* Define if you have the header file. */ #define HAVE_NETINET_IN_H 1 /* Define if you have the header file. */ #define HAVE_PATHS_H 1 /* Define if you have the header file. */ #define HAVE_PWD_H 1 /* Define if you have the header file. */ #define HAVE_SCHED_H 1 /* Define if you have the header file. */ /* #undef HAVE_SELECT_H */ /* Define if you have the header file. */ #define HAVE_STDARG_H 1 /* Define if you have the header file. */ #define HAVE_STDDEF_H 1 /* Define if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYNCH_H */ /* Define if you have the header file. */ #define HAVE_SYS_DIR_H 1 /* Define if you have the header file. */ #define HAVE_SYS_FILE_H 1 /* Define if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define if you have the header file. */ #define HAVE_SYS_MMAN_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_NDIR_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PTE_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_PTEM_H */ /* Define if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define if you have the header file. */ #define HAVE_SYS_SOCKET_H 1 /* Define if you have the header file. */ #define HAVE_SYS_STREAM_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TIMEB_H 1 /* Define if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define if you have the header file. */ #define HAVE_SYS_UN_H 1 /* Define if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define if you have the header file. */ /* #undef HAVE_SYS_VADVISE_H */ /* Define if you have the header file. */ #define HAVE_SYS_WAIT_H 1 /* Define if you have the header file. */ #define HAVE_TERM_H 1 /* Define if you have the header file. */ /* #undef HAVE_TERMBITS_H */ /* Define if you have the header file. */ /* #undef HAVE_TERMCAP_H */ /* Define if you have the header file. */ #define HAVE_TERMIO_H 1 /* Define if you have the header file. */ #define HAVE_TERMIOS_H 1 /* Define if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define if you have the header file. */ #define HAVE_UTIME_H 1 /* Define if you have the header file. */ #define HAVE_VARARGS_H 1 /* Define if you have the bind library (-lbind). */ /* #undef HAVE_LIBBIND */ /* Define if you have the c_r library (-lc_r). */ /* #undef HAVE_LIBC_R */ /* Define if you have the compat library (-lcompat). */ /* #undef HAVE_LIBCOMPAT */ /* Define if you have the crypt library (-lcrypt). */ #define HAVE_LIBCRYPT 1 /* Define if you have the dl library (-ldl). */ #define HAVE_LIBDL 1 /* Define if you have the gen library (-lgen). */ /* #undef HAVE_LIBGEN */ /* Define if you have the m library (-lm). */ #define HAVE_LIBM 1 /* Define if you have the nsl library (-lnsl). */ /* #undef HAVE_LIBNSL */ /* Define if you have the nsl_r library (-lnsl_r). */ /* #undef HAVE_LIBNSL_R */ /* Define if you have the pthread library (-lpthread). */ #define HAVE_LIBPTHREAD 1 /* Define if you have the socket library (-lsocket). */ /* #undef HAVE_LIBSOCKET */ /* Name of package */ #define PACKAGE "mysql" /* Version number of package */ #define VERSION "3.23.35" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to make fseeko etc. visible, on some hosts. */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ #define _LARGE_FILES 1 e kꨟ„£ ¤�€y”·:Š�·:Š�·:! ØY€./usr/local/share/mysql/make_binary_distributionó/¤�#!/bin/sh # The default path should be /usr/local # Get some info from configure # chmod +x ./scripts/setsomevars machine=powerpc system=ibm-aix4.3.2.0 version=3.23.35 export machine system version SOURCE=`pwd` CP="cp -p" # Debug option must come first DEBUG=0 if test x$1 = x"--debug" then DEBUG=1 shift 1 fi # Save temporary distribution here (must be full path) TMP=/tmp if test $# -gt 0 then TMP=$1 shift 1 fi # Get optional suffix for distribution SUFFIX="" if test $# -gt 0 then SUFFIX=$1 shift 1 fi #make # This should really be integrated with automake and not duplicate the # installation list. BASE=$TMP/my_dist$SUFFIX if [ -d $BASE ] ; then rm -r -f $BASE fi mkdir $BASE $BASE/bin $BASE/data $BASE/data/mysql $BASE/data/test \ $BASE/include $BASE/lib $BASE/support-files $BASE/share $BASE/share/mysql \ $BASE/tests $BASE/scripts $BASE/sql-bench $BASE/mysql-test \ $BASE/mysql-test/t $BASE/mysql-test/r \ $BASE/mysql-test/include $BASE/mysql-test/std_data chmod o-rwx $BASE/data $BASE/data/* for i in sql/ChangeLog COPYING COPYING.LIB README Docs/INSTALL-BINARY \ Docs/manual.html Docs/manual.txt Docs/manual_toc.html do $CP $i $BASE done for i in extra/comp_err extra/replace extra/perror extra/resolveip \ extra/my_print_defaults isam/isamchk isam/pack_isam myisam/myisamchk \ myisam/myisampack sql/mysqld sql/mysqlbinlog \ client/mysql sql/mysqld client/mysqlshow \ client/mysqladmin client/mysqldump client/mysqlimport client/mysqltest \ client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin \ client/.libs/mysqldump client/.libs/mysqlimport client/.libs/mysqltest do if [ -f $i ] then $CP $i $BASE/bin fi done strip $BASE/bin/* for i in sql/mysqld.sym.gz do if [ -f $i ] then $CP $i $BASE/bin fi done for i in libmysql/.libs/libmysqlclient.a libmysql/.libs/libmysqlclient.so* libmysql/libmysqlclient.* libmysql_r/.libs/libmysqlclient_r.a libmysql_r/.libs/libmysqlclient_r.so* libmysql_r/libmysqlclient_r.* mysys/libmysys.a strings/libmystrings.a dbug/libdbug.a $BASE/lib do if [ -f $i ] then $CP $i $BASE/lib fi done $CP config.h include/* $BASE/include rm $BASE/include/Makefile*; rm $BASE/include/*.in $CP tests/*.res tests/*.tst tests/*.pl $BASE/tests $CP support-files/* $BASE/support-files $CP -r sql/share/* $BASE/share/mysql rm -f $BASE/share/mysql/Makefile* $BASE/share/mysql/*/*.OLD $CP mysql-test/mysql-test-run mysql-test/install_test_db $BASE/mysql-test/ $CP mysql-test/README $BASE/mysql-test/README $CP mysql-test/include/*.inc $BASE/mysql-test/include $CP mysql-test/std_data/*.dat $BASE/mysql-test/std_data $CP mysql-test/t/*.test mysql-test/t/*.opt $BASE/mysql-test/t $CP mysql-test/r/*.result mysql-test/r/*.require $BASE/mysql-test/r $CP scripts/* $BASE/bin rm -f $BASE/bin/Makefile* $BASE/bin/*.in $BASE/bin/*.sh $BASE/bin/mysql_install_db $BASE/bin/make_binary_distribution $BASE/bin/setsomevars $BASE/support-files/Makefile* $BASE/support-files/*.sh $BASE/bin/replace \@localstatedir\@ ./data \@bindir\@ ./bin \@scriptdir\@ ./bin \@libexecdir\@ ./bin \@sbindir\@ ./bin \@prefix\@ . \@HOSTNAME\@ /usr/bin/hostname < $SOURCE/scripts/mysql_install_db.sh > $BASE/scripts/mysql_install_db $BASE/bin/replace \@prefix\@ /usr/local/mysql \@bindir\@ ./bin \@MYSQLD_USER\@ root \@localstatedir\@ /usr/local/mysql/data < $SOURCE/support-files/mysql.server.sh > $BASE/support-files/mysql.server $BASE/bin/replace /my/gnu/bin/hostname /bin/hostname -- $BASE/bin/safe_mysqld mv $BASE/support-files/binary-configure $BASE/configure chmod a+x $BASE/bin/* $BASE/scripts/* $BASE/support-files/mysql-* $BASE/configure $CP -r sql-bench/* $BASE/sql-bench rm -f $BASE/sql-bench/*.sh $BASE/sql-bench/Makefile* $BASE/lib/*.la # Clean up if we did this from a bk tree if [ -d $BASE/sql-bench/SCCS ] ; then find $BASE/share -name SCCS -print | xargs rm -r -f find $BASE/sql-bench -name SCCS -print | xargs rm -r -f fi # Change the distribution to a long descriptive name NEW_NAME=mysql-$version-$system-$machine$SUFFIX BASE2=$TMP/$NEW_NAME rm -r -f $BASE2 mv $BASE $BASE2 BASE=$BASE2 # # If we are compiling with gcc, copy libgcc.a to the distribution as libmygcc.a # if test "yes" = "yes" then cd $BASE/lib gcclib=`xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 --print-libgcc-file` if test $? -ne 0 then print "Warning: Couldn't find libgcc.a!" else $CP $gcclib libmygcc.a fi cd $SOURCE fi #if we are debugging, do not do tar/gz if [ x$DEBUG = x1 ] ; then exit fi # This is needed to prefere gnu tar instead of tar because tar can't # always handle long filenames PATH_DIRS=`echo $PATH | sed -e 's/^:/. /' -e 's/:$/ ./' -e 's/::/ . /g' -e 's/:/ /g' ` which_1 () { for cmd do for d in $PATH_DIRS do for file in $d/$cmd do if test -x $file -a ! -d $file then echo $file exit 0 fi done done done exit 1 } # # Create the result tar file # tar=`which_1 gtar` if test "$?" = "1" -o "$tar" = "" then tar=tar fi echo "Using $tar to create archive" cd $TMP $tar cvf $SOURCE/$NEW_NAME.tar $NEW_NAME cd $SOURCE echo "Compressing archive" gzip -9 $NEW_NAME.tar echo "Removing temporary directory" rm -r -f $BASE echo "$NEW_NAME.tar.gz created" kêB;¡£ ¤�Ëy”·:•�·:•�·:! ÕYË./usr/local/share/mysql/my-small.cnfistó/¤�# Example mysql config file for small systems. # # This is for a system with little memory (<= 64M) where MySQL is only used # from time to time and it's important that the mysqld deamon # doesn't use much resources. # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/mysql) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=16K set-variable = max_allowed_packet=1M set-variable = thread_stack=64K set-variable = table_cache=4 set-variable = sort_buffer=64K set-variable = net_buffer_length=2K server-id = 1 # Uncomment the following if you want to log updates #log-bin # Uncomment the following if you are NOT using BDB tables #skip-bdb # Uncomment the following if you are using Innobase tables #innobase_data_home_dir = /usr/local/share #innobase_log_group_home_dir = /usr/local/share #innobase_log_arch_dir = /usr/local/share #innobase_data_file_path = ibdata1:25M;ibdata2:37M;ibdata3:100M;ibdata4:300M #set-variable = innobase_mirrored_log_groups=1 #set-variable = innobase_log_files_in_group=3 #set-variable = innobase_log_file_size=5M #set-variable = innobase_log_buffer_size=8M #innobase_flush_log_at_trx_commit=1 #innobase_log_archive=0 #set-variable = innobase_buffer_pool_size=16M #set-variable = innobase_additional_mem_pool_size=2M #set-variable = innobase_file_io_threads=4 #set-variable = innobase_lock_wait_timeout=50 [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=8M set-variable = sort_buffer=8M [myisamchk] set-variable = key_buffer=8M set-variable = sort_buffer=8M [mysqlhotcopy] interactive-timeout st te kêJc›£ ¤�è y”·:–�·:–�·:! ÛYè ./usr/local/share/mysql/my-medium.cnfstó/¤�# Example mysql config file for medium systems. # # This is for a system with little memory (32M - 64M) where MySQL plays # a important part and systems up to 128M very MySQL is used together with # other programs (like a web server) # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/mysql) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=16M set-variable = max_allowed_packet=1M set-variable = table_cache=64 set-variable = sort_buffer=512K set-variable = net_buffer_length=8K set-variable = myisam_sort_buffer_size=8M log-bin server-id = 1 # Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname # Uncomment the following if you are using BDB tables #set-variable = bdb_cache_size=4M #set-variable = bdb_max_lock=10000 # Uncomment the following if you are using Innobase tables #innobase_data_home_dir = /usr/local/share #innobase_log_group_home_dir = /usr/local/share #innobase_log_arch_dir = /usr/local/share #innobase_data_file_path = ibdata1:25M;ibdata2:37M;ibdata3:100M;ibdata4:300M #set-variable = innobase_mirrored_log_groups=1 #set-variable = innobase_log_files_in_group=3 #set-variable = innobase_log_file_size=5M #set-variable = innobase_log_buffer_size=8M #innobase_flush_log_at_trx_commit=1 #innobase_log_archive=0 #set-variable = innobase_buffer_pool_size=16M #set-variable = innobase_additional_mem_pool_size=2M #set-variable = innobase_file_io_threads=4 #set-variable = innobase_lock_wait_timeout=50 [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = key_buffer=20M set-variable = sort_buffer=20M set-variable = read_buffer=2M set-variable = write_buffer=2M [mysqlhotcopy] interactive-timeout kê~œ£ ¤�÷ y”·:–�·:–�·:! ÝY÷ ./usr/local/share/mysql/my-large.cnfstó/¤�# Example mysql config file for large systems. # # This is for large system with memory = 512M where the system runs mainly # MySQL. # # You can copy this file to # /etc/mf.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/mysql) or # ~/.my.cnf to set user-specific options. # # One can in this file use all long options that the program supports. # If you want to know which options a program support, run the program # with --help option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-locking set-variable = key_buffer=256M set-variable = max_allowed_packet=1M set-variable = table_cache=256 set-variable = sort_buffer=1M set-variable = record_buffer=1M set-variable = myisam_sort_buffer_size=64M set-variable = thread_cache=8 # Try number of CPU's*2 for thread_concurrency set-variable = thread_concurrency=8 log-bin server-id = 1 # Uncomment the following if you are using BDB tables #set-variable = bdb_cache_size=64M #set-variable = bdb_max_lock=100000 # Uncomment the following if you are using Innobase tables #innobase_data_home_dir = /usr/local/share #innobase_log_group_home_dir = /usr/local/share #innobase_log_arch_dir = /usr/local/share #innobase_data_file_path = ibdata1:25M;ibdata2:37M;ibdata3:100M;ibdata4:300M #set-variable = innobase_mirrored_log_groups=1 #set-variable = innobase_log_files_in_group=3 #set-variable = innobase_log_file_size=5M #set-variable = innobase_log_buffer_size=8M #innobase_flush_log_at_trx_commit=1 #innobase_log_archive=0 #set-variable = innobase_buffer_pool_size=16M #set-variable = innobase_additional_mem_pool_size=2M #set-variable = innobase_file_io_threads=4 #set-variable = innobase_lock_wait_timeout=50 # Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname [mysqldump] quick set-variable = max_allowed_packet=16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] set-variable = key_buffer=128M set-variable = sort_buffer=128M set-variable = read_buffer=2M set-variable = write_buffer=2M [myisamchk] set-variable = ke
%-4s%-20s
%-2s%-20s