From f2955a4b39e481ddf35b47e3e92048218e1af436 Mon Sep 17 00:00:00 2001 From: Georg Richter Date: Mon, 10 Aug 2015 12:09:14 +0200 Subject: [PATCH] more fixes --- CMakeLists.txt | 37 ++++++++++++----------------- include/mysql/client_plugin.h | 2 +- libmariadb/CMakeLists.txt | 10 ++++---- libmariadb/client_plugin.c | 18 ++++++-------- libmariadb/dbug.c | 2 +- libmariadb/libmariadb.c | 23 ++---------------- libmariadb/ma_ssl.c | 2 +- plugins/trace/trace_example.c | 1 + plugins/trace/trace_example.so | Bin 39879 -> 37355 bytes unittest/libmariadb/CMakeLists.txt | 2 +- unittest/libmariadb/basic-t.c | 1 + 11 files changed, 34 insertions(+), 64 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3499d1dc..232ecc09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,6 @@ # CMakeLists.txt + # This is the LGPL libmariadb project. PROJECT(mariadb-connector-c C) @@ -76,7 +77,7 @@ ENDIF() SET(PROTOCOL_VERSION 10) # we adapted new password option from PHP's mysqlnd ! SET(MYSQL_CLIENT_VERSION_MAJOR "5") SET(MYSQL_CLIENT_VERSION_MINOR "5") -SET(MYSQL_CLIENT_VERSION_PATCH "1") +SET(MYSQL_CLIENT_VERSION_PATCH "2") SET(MYSQL_CLIENT_VERSION "${MYSQL_CLIENT_VERSION_MAJOR}.${MYSQL_CLIENT_VERSION_MINOR}.${MYSQL_CLIENT_VERSION_PATCH}") MATH(EXPR MYSQL_VERSION_ID "${MYSQL_CLIENT_VERSION_MAJOR} * 10000 + ${MYSQL_CLIENT_VERSION_MINOR} * 100 + @@ -88,13 +89,10 @@ IF(NOT MYSQL_UNIX_ADDR) SET(MYSQL_UNIX_ADDR "/tmp/mysql.sock") ENDIF() -FIND_PACKAGE(CURL) -IF(CURL_FOUND) - ADD_DEFINITIONS(-DHAVE_CURL=1) -ENDIF() - INCLUDE("${CMAKE_SOURCE_DIR}/cmake/install.cmake") +# todo: we don't character sets in share - all is compiled in +SET(SHAREDIR "share") SET(DEFAULT_CHARSET_HOME "${CMAKE_INSTALL_PREFIX}") SET(PLUGINDIR "${CMAKE_INSTALL_PREFIX}/lib/plugin") @@ -109,29 +107,22 @@ ENDIF() IF(UNIX) - SEARCH_LIBRARY(DEFAULT_LIB inet_ntoa "c") - # IF(NOT DEFAULT_LIB) - SEARCH_LIBRARY(LIBNSL inet_ntoa "nsl_r;nsl") - # ENDIF() - SEARCH_LIBRARY(DEFAULT_LIB bind "c") - IF(NOT DEFAULT_LIB) - SEARCH_LIBRARY(LIBBIND bind "bind;socket") - ENDIF() - SEARCH_LIBRARY(DEFAULT_LIB setsockopt "c") - IF(NOT DEFAULT_LIB) - SEARCH_LIBRARY(LIBSOCKET setsockopt "socket") - ENDIF() + SEARCH_LIBRARY(LIBNSL inet_ntoa "nsl_r;nsl") + SEARCH_LIBRARY(LIBBIND bind "bind;socket") + SEARCH_LIBRARY(LIBSOCKET setsockopt "socket") SEARCH_LIBRARY(LIBDL dlopen "dl") SEARCH_LIBRARY(LIBM floor m) + # SEARCH_LIBRARY(LIBICONV iconv iconv) SEARCH_LIBRARY(LIBPTHREAD pthread_getspecific "pthread;pthreads") - SET(EXTRA_LIBS "${LIBNSL}" "${LIBBIND}" "${LIBSOCKET}" "${LIBDL}" "${LIBM}" "${LIBPTHREAD}") + SET(EXTRA_LIBS "${LIBNSL}" "${LIBBIND}" "${LIBSOCKET}") FIND_PACKAGE(Threads) + SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${LIBNSL} ${LIBBIND} ${LIBICONV} + ${LIBSOCKET} ${LIBDL} ${LIBM} ${LIBPTHREAD}) #remove possible dups from required libraries - LIST(LENGTH SYS_LIBS rllength) + LIST(LENGTH CMAKE_REQUIRED_LIBRARIES rllength) IF(${rllength} GREATER 0) - LIST(REMOVE_DUPLICATES SYS_LIBS) + LIST(REMOVE_DUPLICATES CMAKE_REQUIRED_LIBRARIES) ENDIF() - SET(CMAKE_REQUIRED_LIBRARIES ${SYS_LIBS}) ENDIF() @@ -189,6 +180,8 @@ IF(WIN32) ENDIF() ENDIF() + + IF(WITH_SQLITE) ADD_DEFINITIONS(-DHAVE_SQLITE) ENDIF() diff --git a/include/mysql/client_plugin.h b/include/mysql/client_plugin.h index bcda3852..0f4059a1 100644 --- a/include/mysql/client_plugin.h +++ b/include/mysql/client_plugin.h @@ -77,7 +77,7 @@ struct st_mysql_client_plugin struct st_mysql; /********* database api plugin specific declarations **********/ -typedef struct st_mariadb_client_plugin_DB +struct st_mariadb_client_plugin_DB { MYSQL_CLIENT_PLUGIN_HEADER /* functions */ diff --git a/libmariadb/CMakeLists.txt b/libmariadb/CMakeLists.txt index be2d3899..7be55991 100644 --- a/libmariadb/CMakeLists.txt +++ b/libmariadb/CMakeLists.txt @@ -8,7 +8,6 @@ ADD_DEFINITIONS(-D LIBMARIADB) ADD_DEFINITIONS(-D THREAD) SET(EXPORT_SYMBOLS - client_errors load_defaults ma_cio_register_callback mariadb_connection @@ -249,8 +248,6 @@ bmove.c bmove_upp.c my_charset.c hash.c -ma_cio.c -ma_ssl.c net.c charset.c ma_time.c @@ -266,8 +263,9 @@ is_prefix.c libmariadb.c list.c llstr.c -longlong2str.c -ma_io.c +longlong2str.c +ma_cio.c +ma_ssl.c mf_dirname.c mf_fn_ext.c mf_format.c @@ -324,7 +322,7 @@ my_stmt.c my_loaddata.c my_stmt_codec.c client_plugin.c -# built in plugins +ma_io.c ${CMAKE_SOURCE_DIR}/plugins/builtin/my_auth.c ${CMAKE_SOURCE_DIR}/plugins/builtin/cio_socket.c ) diff --git a/libmariadb/client_plugin.c b/libmariadb/client_plugin.c index ee6b3410..5186bf2b 100644 --- a/libmariadb/client_plugin.c +++ b/libmariadb/client_plugin.c @@ -132,14 +132,12 @@ static struct st_mysql_client_plugin *find_plugin(const char *name, int type) if (type < 0 || type >= MYSQL_CLIENT_MAX_PLUGINS) return 0; + if (!name) + return plugin_list[type]->plugin; + for (p= plugin_list[type]; p; p= p->next) { - if (name) - { - if (strcmp(p->plugin->name, name) == 0) - return p->plugin; - } - else if (p->plugin->type == type) + if (strcmp(p->plugin->name, name) == 0) return p->plugin; } return NULL; @@ -274,7 +272,7 @@ int mysql_client_plugin_init() MYSQL mysql; struct st_mysql_client_plugin **builtin; va_list unused; - LINT_INIT_STRUCT(unused); + LINT_INIT_STRUCT(unused); if (initialized) return 0; @@ -410,7 +408,7 @@ mysql_load_plugin_v(MYSQL *mysql, const char *name, int type, } - if (!(sym= (int *)dlsym(dlhandle, plugin_declarations_sym))) + if (!(sym= dlsym(dlhandle, plugin_declarations_sym))) { errmsg= "not a plugin"; (void)dlclose(dlhandle); @@ -463,7 +461,6 @@ mysql_load_plugin(MYSQL *mysql, const char *name, int type, int argc, ...) return p; } - /* see for a full description */ struct st_mysql_client_plugin * STDCALL mysql_client_find_plugin(MYSQL *mysql, const char *name, int type) @@ -483,8 +480,7 @@ mysql_client_find_plugin(MYSQL *mysql, const char *name, int type) return p; /* not found, load it */ - if (name) - return mysql_load_plugin(mysql, name, type, 0); + return mysql_load_plugin(mysql, name, type, 0); } diff --git a/libmariadb/dbug.c b/libmariadb/dbug.c index fb7c52ba..5e848c44 100644 --- a/libmariadb/dbug.c +++ b/libmariadb/dbug.c @@ -1811,7 +1811,7 @@ static int DoTrace(CODE_STATE *cs) case INCLUDE: return DO_TRACE; case MATCHED|SUBDIR: case NOT_MATCHED|SUBDIR: - case MATCHED: return framep_trace_flag(cs, cs->framep) ? + case MATCHED: return (framep_trace_flag(cs, cs->framep)) ? DO_TRACE : DONT_TRACE; case EXCLUDE: case NOT_MATCHED: return DONT_TRACE; diff --git a/libmariadb/libmariadb.c b/libmariadb/libmariadb.c index b32990c8..671172f9 100644 --- a/libmariadb/libmariadb.c +++ b/libmariadb/libmariadb.c @@ -544,21 +544,6 @@ mysql_debug(const char *debug __attribute__((unused))) } -/************************************************************************** -** Close the server connection if we get a SIGPIPE - ARGSUSED -**************************************************************************/ - -static sig_handler -pipe_sig_handler(int sig __attribute__((unused))) -{ - DBUG_PRINT("info",("Hit by signal %d",sig)); -#ifdef DONT_REMEMBER_SIGNAL - (void) signal(SIGPIPE,pipe_sig_handler); -#endif -} - - /************************************************************************** ** Shut down connection **************************************************************************/ @@ -1142,10 +1127,6 @@ mysql_init(MYSQL *mysql) mysql->charset= default_charset_info; strmov(mysql->net.sqlstate, "00000"); mysql->net.last_error[0]= mysql->net.last_errno= 0; -#if defined(SIGPIPE) && defined(THREAD) && !defined(_WIN32) - if (!((mysql)->client_flag & CLIENT_IGNORE_SIGPIPE)) - (void) signal(SIGPIPE,pipe_sig_handler); -#endif /* Only enable LOAD DATA INFILE by default if configured with @@ -1685,13 +1666,13 @@ static my_bool mysql_reconnect(MYSQL *mysql) tmp_mysql.options.my_cnf_group= tmp_mysql.options.my_cnf_file= NULL; /* make sure that we reconnect with the same character set */ - /* if (!tmp_mysql.options.charset_name || + if (!tmp_mysql.options.charset_name || strcmp(tmp_mysql.options.charset_name, mysql->charset->csname)) { my_free(tmp_mysql.options.charset_name); tmp_mysql.options.charset_name= my_strdup(mysql->charset->csname, MYF(MY_WME)); } -*/ + tmp_mysql.reconnect= mysql->reconnect; if (!mysql_real_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd, mysql->db, mysql->port, mysql->unix_socket, diff --git a/libmariadb/ma_ssl.c b/libmariadb/ma_ssl.c index 9372a630..7b2e4378 100644 --- a/libmariadb/ma_ssl.c +++ b/libmariadb/ma_ssl.c @@ -35,7 +35,7 @@ #include #include #include -#include +//#include #include #include #include diff --git a/plugins/trace/trace_example.c b/plugins/trace/trace_example.c index 1ce5d1b8..25854e48 100644 --- a/plugins/trace/trace_example.c +++ b/plugins/trace/trace_example.c @@ -52,6 +52,7 @@ mysql_declare_client_plugin(TRACE) "LGPL", &trace_init, &trace_deinit, + NULL mysql_end_client_plugin; static char *commands[]= { diff --git a/plugins/trace/trace_example.so b/plugins/trace/trace_example.so index 2aef86d0c1b31314771fa23fe554997ce749f2b5..5694ab08e411c6d5c0c8fcb024fe6af6e583d747 100755 GIT binary patch literal 37355 zcmeHwdwg6~wf{LYdF*LtlJula)25}<($er~lD4!45J;L%JAot(c|gm<$zvuDn`A;} zrcG6#Sisg=Y!MNVE4|1?RMe`72&m;D6h*9nQoKL!tqRxHf>d5sMDzQ8_hWKqntra{ z`}^bf2dB;Kwbx#2@3q%nd+o>Bv*(&n!zzz$Tjudv=UI#$4Jb^FPB?g#1`yO()mA<} zPqu=RHg`PfIOtRJ6v~7ac=)i4JpAoj#2CY1Mp%_2qt+fB8a@xumQV95$tdAFf{Yy>MitsJq2ap-e3bJaeT>a70m-`2;duD&-&o{pG*rU%JxrlsI@HdM9o+1@k1qk!; zSBgK%KMj8+_?v-0KmN+_$2K4|C{qq0r?3ZuZ5Z#VKvnY2w9)(#|MEX!v7}-C&IH0 zg4vlMKIa7aOgRDmr{I|=|0hp?M>Z3d`_2jIUjp9P3BdHz2`HG3jRVyuz?Y)niR5en zy>=1fnE@GR5$WXtmjq*0z>oxkbF)R{AZ{m@1o7*!iPmFsyJ zF!K>v`B;%i?_hi=l1O%rBqI?k(m&Lnv?4tStVn%ZVK`eQ@M$nZd_w|@x2bPsfnbSC>Dv6UR@?2bX+p14J>c(*k? z(m#~!v3f>gF)KQd*feM*k|RUi!<#g1I`ctAA59GoN4ioyJ+TpMIF;<~>l`7+Kx~LX zG&M|Y!W!uB>aIw{E0$Z4ShO?Q37vH%5=v!24MlbKvC+=K;ei-PtP~+!3-6nvv@65s<*7#eq@M9Xk zI}1N`wrcl#v+$>B{GKd)oyI?yg}+qe_h#X*)cAc__)ly6{w)068h;=Q|2>UAn1z2< z;}2!wf2Z+Bv+!?e{NBo-tT^Wy?s@J$7oPJW^Xzxw>FdpNz=d~DDGs{u+LR^BAs3$W zGV>gD;R_5B;V~D!$b~P}{g=a-nVT^==)!YOWu9^u-ppm0R^`G|7v`yU;q_1{lWJUe z<0F_5cHub}G*7b&@7Cv97oPJ+^K`iIoTHkj&xLo-QHNc4w|>G~UKQc(x!<1`w8Gc# zP39ijj-0|B=fX8CG&I1H?9b8dvffz zmOKT*Eu5=_o7oO|W&(}8#`a%v_!4ALIA=4+t-}{eSQdk}4TiT}bqJhq2SL0Y z^r2%%=7hJ0jxlmh=uj$;kt5v-RkM}^;VoAkvr@nM0o(M4Z0SS2e~04IDfthwpd*!v zr~OcPTMJCgGdxK>7Yo^vq)9+5f>)+J*g!M0GgU=+W2^6+f#?mU_L6b z%AHshMq=T3V!1o9oQZF|m*%W-C)P0W7bX$#(`gv;siLUoqY(e7Rd{^>4VKmoibZ>E zOC8+S{(r*T8uy2HEE|Tq{2^6!sEFdEo8hGJ_V$Cw?+|EuK*M6MMo|yipgmH7RFsyR zW9py#?n%l7wof}iXxlG;NW!uGQlCnIBWHo*$A%6x)cM)STj{)6RwVb!hCsIR=VfNl zY3?qKzkYA(K}0`k$fos4l3)Iim4Lar?EuD+IvU;vBa${b-awEY5magWU!|I%l&21j z5#IKgq}|qBo#xq2{zl~UEU7kuDy`6@|1`Kkk~$_uFYf$cRSd~0~e)E_CCbAL4( z*0O!7hiTG<&?r8U&gvXw^;GCp5+A;kwUlJd)!Rd_A{%=@H2uLzsbcV4p61C1&yg!9 zq6|pNWogP^{{@t*C!+L8%7QfIw@EpB0!p^?Q-|7+ye0H1n-;ZDb~cAHb|b1$AiDx& z;js+&nC;3C(18N8+OOGs~&+}?}1(4i%z^7 z1?&lL-`wmaGy3b6s}7;x-wI`Ix#|%>H!8J(7G}34bT9`D0QTCn=ARs6_Io{Hn>HCb zNXva-FB%;bkJ*I}IE4>9_vmkh&0aw!k0N;VU{M<7HKqEc-9-oc*m7*F@cKL8J|Mqcc>Q8Pkozd*KAM&f{w-TRpt9v7 z$|axd+uNFh|8KMNyR+LS%h=l7Ok^oVrY4^FGc_TTFnpC8bR*Gh30o?IwYzR_vQSqv z4BL_^$cdJ9Y`%RzxLW|qldAS2(Z!`#n3{8fCgbjbs2lq1h1X26KFwDT~-(LEf( zw8MUG+T$V0)t}2jqipbjcOa%}L)ema_yQK7+VFsCqXm*VbRgY42aazZpxn)~e;XXa zme2tR8zWfm<*bXnf9&A) z&CH76 zQrw3AsD$4C7JL|dQnD0^lw;R;+Wkm7;)j?0EXWVtfEY7*s-^?&ZXH>`$aXZGyLyRq z#v93O?>t=mzc3OAHdc7^-mRhMWm$9*FpNjD4dW3Mnl_AYAR-N;@CWUZZQC!|7yn9^ zM@gTm2}63>DDX}M4-X^5OzHtpA6}=MS~@3hsu%2Rrw{%$bvbi_9zei8cff}3FfgH* zZ@!6Q(&kb_JS|gpLNoy^R9WY#pvx@saTfVs$S@OqpO#xSXL7F2OHN~+cq3h>YFUvl zu{L*6C|RPJ&1lnm8y#3R`oAki*57xuW$=^=;Uubzv@Q54Egw#aGpb8dgRc>Ra7xbuFRVwooSH%9b_FnV6Q)s+Le| z*p*ppxV>%VnoFA8sJ7ZRWL{s_>OwZRtf>pNwnplkR;_WN>((?ih3edb7{Uwd8{D;C z8Cuc4+Qryh-{g+A)i;J*sVhSbwd+DFQCe%L#hrUyxVC9^DAEqJi+n|WQ^T6ok(KR@ zZpF6Mu4sTpGLc%~$eMO{wk@I6sBx$TjZ=HETaeba#?i-TBXO>h1x9U2F7AAvudk_tth$z^T8tUdN0QU1s zI!A_(`Psp`_|Q;HqJus0k@3QUL-AyAcqBd?8yVOX>>h|GVh~_K)soSm6<=?~Mn>Wz z)`IHj*}(+~{6~_4%NImX&4^o<4_TLwSeGX)gl;Gl$R%hc@L~ko40dfw#vu2i zpsOzJO&2zyAF+!!);6s~$+FR#y*DdgMS2ya0cMfhig*CFhHL%$m#2ft?!>eqah{gD>S9xbxV{P|)h@bi(U+zLmz`vF@8 zMXL%*FDRV6QEax(pLxz{OXtrcnlvl%xAV2Jv73pgEhxIdQy0kdd>T2a^eE6dkargH zO{aUO+aw_Wb@;PTk82sG`9GHCzZ>XIq_59N?@6aW0sMVPk7cBHq|;vp{!d7k?>N)> zx24l_AlGToTW1FU<>~bKNMDci{*3gfOrHr)FEf%@>!+hc=x6ryyfJhgY@~t848^~$7ar`$lXY!@w_b`bDmAEnGiSWIWiUJ z$#r>e|9vb@6gTtvfqB z*vgiVIY)d@XJqgl8ZdHi)`FWeDyBS~1d#IAXnMRcl5t&}g=LV8=je1SV`aQtm;e7; zV9w2F%e7n^!YUnJtV6zO=d(eFH|X#d9p0nE2Xy$P4u7e`|I(q##j-Z*b~EwpP?`Y_ z?3nY8=6s_$&uH{+_{@1mbAB;>UeOR_h34F%Ij3mOC7N@H=G>taE4bKx;Zy! z&Iy`xf#w{bIrnGI`I&Ql<{Y0nw`b1jnR9vO9G*FMXU^G~b9Lq%ojEu6>Dj7c=3JaP z2WQT`nR9ODT-)lpy0e4jt=Jk3HuMjrMo$f%Sy5fFIJl&0@zScZs?G{t*4y2^=*&p< zqOOt7q3*umNNhuY0-JiEShBRb`UJ{A7~ z?VvuAc1&qf38?bEy}-~<)8!dIvQ|4N6VK$f4i66WBfH{`VUK^XfwID~dMo$LxmLE>rU#|zc?^osm17bCF63vh*APktjj ztT!kB>k^swONq?Qha1bu$;D}EFyx*Doq49g(|NaWi^lUCDBpV>LF7i&=88P=Sw`)= zUn2w0wdhqjRbK)oe?H;|a^GGEortU9>~i1f0@@NM5&r9^35p-W`Q^SxxJVpD6>|SZ zxKxyZDfjP$gJL7Z%pD_K?)z8BlWWV1fNn zknQyCf&a;^uy-JGtM9vvRLaP1-wzn6l979TKVoFDjO_6}!^jeQ5qKW-{bdRwXG+=j z`YK@Axy$VzpqwYH{3lVn(mX4Qn3x4sz4N278{x;)VDR*nxtJtVy3l zpUJ&F|5NB(rMbJQA@MA$^sfXh;b*aTQCC6)sjGXsfG)D~#CqWJ1Px#^?Sggo-vEGE ziXySk8f-DJFCY>iE$nRu+835}H$@SzA)&yVld~SedqvLeNGtpq1j=ub_01CnP=8V3 zE3l9JKF|5cq3{MYZ~m1YRU*$OtQuCcxA&hYDKqv4yIVfwAvjSE-*;$Ls{LU|c2{_v!TY+;f zC3Mb(9TYir;F{u$;nQ*ML_Wn%CFrL*-vG@t=hv8glsNx}PCVVIM9!s79NuMyvo(Nu zk8>4zPMLEa;8{*P-XR#G6(SbaD=ez-* zEyN1c+V?@iMWPg?`_5eil2UOE9ER__=YbE3CS>3{{}|x;;-kdZbb+Qyj6nImT5%G- z4<_;;iEqUt$hk&%A*Zjd82GU8KnCB+8GxIMdxkAvXb!-&;szGAss?a}I30b*x4Hvx zpEb1~+PK#ve&3Gz72_?CB@Pj^#1k+fariR8LL4LF4}^=vVd5oRDrTkOU~x~>5=Y*H zgyrH@XhytREoHt5g(k zG#r(Ob;VKQ`$RpJE#U!iJ9#BMEVjb;h(A$pNzo5`5N~us{84c~@o&;FH;a>Db>b}= z&4ZCk5MIC#gnA@3+34<{txT*F7v-x ze1bH8CH-f`PQvdIzD3NL2Kev2;QidR7hrW_Y?QF4WFHz;SjyXY(A(HI@&q%>6U<(A zRMJkr0kJV#A+`b``*W^U+Jtw7!nSFGGu}k&vQ)}L+X0@&p-+qnVF{ukTXfLz|SooA8dUu`FZ;62-U9L4<2cFu!{ zf47|&6f4c@|`r3pe23=76l90=O&fy0GeK} z6X~AMqI#2N5zPM*Bo9wsxD-yNcxc3$d@41HI^tvUX@qmcm(fU*PiLt@RG@N`&mde> z9PJ1FBEqHOE~=q|^g%HVRhnE$e7X28J||ZZUnS~M>g2_Q&lIl{Ua|tER*N&yB9oW$ zfKZJ!lgUJv5rDiDOd^?HMt3YfkP-$W{{zressH@X0G5^Z*ATSCPauQ8b`e2w670pl zf-n`(g>=uI`0&>e%)b>XtoDbdKp?RcwezncXo(@1gMYO|i${R*hY1&n`RJDZdgfLt z9*3I!7Z47Ln_(vY3mXBKi%rBg5I#d(56$=+1!Sl~>9?`;$Kgl)O?R{O?-rs_{gp72_6HhhJD zfbiwwT3EJ!kZ^~%hDwSPj*5+FC;u?vKJhOBz*iC;kpA31ax=Q-uwb|LCw2foYI$y9 zdnM-~3(pkTv3~=*r{^Y$aP>iCmcImarT*JKMn%!O{kIcTBZ~j?%ZOIBy@NGmLthA- zr#tS8M;c7mXI zlavxJ7gN{?BwQutL0Sb@%f2MhHKH1F`v1iBL|FWmR`CY2X%;V%Rl;k<26lD{cZe_1 zUM1Wo9)RZkZ<2mkoI(6sgh$02G@Q2yZx%nMlX-{mRx!-7{!DnMC?ozD;ade~F#f-= zD!au|!tZj7yjPC9emQo2S$qLDpy02_aoR7((XYyJTEX|pv01@ilVh`jzb+Qg(*E}E zu#i3CI?5?mFb|5gtk)RJ+Ut7-?dZ2`MjrM32BP>qb{({`&-Z(@o8N19A+q1cQN*8P zClEQ{`x%J+xiaOT?-&KoljHUwpX}}V_SGOeYRx)~=E)Om@tIx7nbXlS`5_(r4xo_C zAWzIUL@Z7YV`bEl86WC_oz22!66pH?&-yMT%oCdcp5z61EXO~|{x#||XDF7m{F7}? z4y=+(Swp`R@Lo@eG?{>0aP9GwNTX4)2R$VP^m8h<*Ha=5N5%GeN=~5yRBXSeB#7d4 z?0~1_PL@z0^E~JY(qXH}Ay0{)goRS7qn;A!ev0fvpg-m*c?O-tKgFikvAiW7+NopH zPgQ$MUZWWn%UF%Knjzy(Ry_v^h52<<^{%ne3fGXBF8sAX4sohq``M}EGJ~+M4!+nwEK{0&-=qXr%E(&Zqf8m`aIdAqSHKJso;fI|&-Vpp zko5E-W!T5B?fFxlQA9>j$3v)AAO|0Lf}Wyq7i#7|!@dq0pZhMFd8@y|egJjz{ejt6 zN=wBOkczF6rXqabhw^m9?~@&2vFr#%J}wviOC*1(Zyt?ism)w#KJazfS>*yW@C_DGE!IK@ zfj#VuHF9zk_$J}7oLdLJ^(a`I<+LO4ZFc*$f=UV8FFUB1PTTqp;i&i=J_8SMz0)Ut z!m_@57Mf*Pd=s51@F3w)u@uS)e2;=}7MGI#A?j(r_#9d*@Gx8EfcP1t3OqviB{3hV zfggmybxxz4CMu$AhXvy?el2Mz>ioP;hi>x zB0Wi4FY->i6V!oyBrEq$qt6fgcn8R;ywjG#i~~QJ3Tdmo)6PW@c!ovRc&E`y13#rI z!`^v=R^Zw5k%}+Mc=}l8vI~%qCz|m&lamMjmBsJ@w3Ad2nmfQ#~2Q<@=OPGA+4?%WSOTTUM8XghUid5`lokb0dhC>D!8z`0HdDwPLD zJb{atY5u*?_Hdx}`zS|FGz0ClDodOOMBrjN3?X*21utQRi{z3wu#Wgr@f~XWQZ9>w zVhgS4vX{VBF1*y^>#we0l%{=j+hL5pOpbLy}oD<>@+de_K$nu;-{Us-ZS321!0J+vj1La=~4Id0#_bBMa zN0{*qe_->A1LW;qe1or=qALaS!2bgiFOUX#Kz^2?s?33?;Cg^yMN(U45zo z_$twk!U8*puNGe={f&fc#NF(npC%j@CGeJkU5%h`7FV$?J~IG#tw<5RnKT`ug86** zQ^5C$O2{0zWe?zCQ3xvv+)5cn#f7wo+X!zKFM}&^`;P!`6@O<>|2*NHVgr?Q2jN>q zF=hC|uK@2B%P8}mgzpu+xFxWg@E-9mlpCJWI|SemmcMbR+D@~I++ksNR=l>Ogi3WUZbw%B&8A!@+U;H>eQe?9wd@Fqxw`4>rwl%--8ahzl~&1 zIX(hk;lP?Fr{Qt}OeZd#n(0KUN;LGD985T2C?hbw1LA^YHRQ~>T2&(i^4XkMNFEe) z6<}Eq=NBrYr4Uo)u?S3Ml-f+8Z#2}LbC@h1A(A6G=N>8x+3Q(2O8B|q;cP@DOR+d8 zmq||vb07^1;v}VvE((lO0ZSx@0pr+DC9(_YoQ)Xdc?QXeh|(5)4f1FOVm42`ac$Tp;PMMwUVG19WPIuM(F*uLUjN z0=`6Cr#`+hILqI*>6U z7lGC=flx#>=-LT(HBwLX>Fv#x_Nz0`&lprKQ9?t^dc@AT) zZ_1kh^S^|48}+r`&(|6Wbah|*^LV9TiTlxZzKdT2tlGqPiGL3Da32zVYYCUi_VKMF z929GzCEull%f&ocpYO8M0auAjF$DQ8zW{KxY-isU9|l|_+tc@I()Wpr(ayeZ!o${-@1X)Yz8QSy;`|8-mUAyYZ6}Ix z2NS8&Q0*MwDSTDq$k({eI#k|v?m{`-oTg?cQ>T0(qkCSSw3=CeL(X^=20WGx&{dwe z19Y?b`o-liq#xr4JKqAN&E`9qGFpvtQj$P7<|-uRhhP#x-v!?QEcbnU4YFzlXFlwezVSDfAFl*mMJ;+D4H5*Qq%hoI-Gemlb$%NUK2h@vuU*}hE?0M@bamE(KKt^Yvrukg*jLDrOuRrB^C1c#BDYvrd;nU_~-h_1@pPN-+*>@1T zP}Xahg?V5EVnIPiumt_A?|kM~v13=40P+>NhbW*e@n&zIb9PKtgC9 z1d!E#QH#Hj>n8g}B~HgezOS)gRN}0)PCuE^gD>fP)}`~=&U_^2L3$%p(om0NIknQw<;E3 zo?z$N*_ScecYJQXWmUcly&#p;-d*=yQ^_~rh|{BackRBWQYt9drX%w1y7ih$z7aw? zwd>ur^O`DYmHDwGZPF-lL)cKJ4Oxa9TQf6!EuQ1Z{;dKRk$ls{>!%HM-lO%;=mQKM8k`KS6&ZkQ1 z?OM5W9TMDr6`b@$O31iOUk8$GpE@LXDDIIa;1#3ijnCDA=7Lok>;dysgh-mmPywe?+#4v z6k={#XOeiHPK7?1dh#@_nfayA#DZdbT)U@KKn1KB>xp9eb+^6{Q;H>A$3^x(XoZTURrxTp7LmhH&_?s^U-)_&%hU4}Yc*~=>t zDmTVQ)>jU8j`Vj%yDHV4vX#C4$x40;eQ8BirMes;Q7NxeuqsoDkxHDu#7Rw@Qq_kx z7bWmD?nMJU%vy=Ftd;#k-2H(ACuyL!BZ)(%f;Cvc`2^B ziME@{P9&o^w@}dsJz2?3!?6TFXbtH8IKUhn9_a5f;0JjIHMyvN=sc=_a8smrAl}tE z06O#weI;*vP)Fsr_)St|0Jj9|NTizunH1dPYd~C@JE)0NE9jejk&ZDA-}uLRRnfw8 zdCY9jd(^TYK2Y^Es*q!U=VM}5>T6=|ix)0_c*}uH#Z<8&CFY5_Prs@DJ+g&V-t`Z8 zOYifRR)_)d4bi*dMX`I`l7=e0utuV|^02sbu{ihXw?r?1H@8%Yhly_&(}6A~nAd|( z&rW=Jll;i@R2QExsRl{&JRc~27}-_ozbfyjcu3}S0dv}y=km@ko&n`du82=;+-q5l`LzS`xo$G zotAf=;3A7i)0(Cg4QuKyv=X?WI+DcY(}~nTGSZzIN#HIBB5A!A zZj|mE;QiA5xbJ#HY^1+uQv??|0E%?SMv^K+-og-#$Zi!$#&x>YnbakjN_q(6xQ`v+t3l;)4Lt!oa+3pz5&Q`d0w-Uy5LQ_D-H$1Bj<+7P)o)Kb4{ zT?AK;0E*P{Vv>!W{kXRw9*K{n%ZSvki6lBV#AF8Do!x!0$Z$L%Z^(vtthP%p=K6}- zwzifCEH$u|kIudyeNTg-WCFY72Dmf#w+LbGH zIV(e}YTFyyBDL*pVM{itQE7Z|uoG8lv(c2F&bs>>x6t&&a7VY18+wUAslCZQTt>bo zqIBEUnSe#mQs~)bGq$zV)`iqfG0`q%IK8o?&LuJ!OLj_Q8P_iEjA>g_x2D1B=H?l$ z9Ph_<;R!1Odswe)Asel&zG+oiUWlE=6L~sFl zM44snS{P(RU8BQ%TP@%t-SHF--=~{T)=R2JRt$ns^1gU9fxFMys+&mxYvQ!)E4vwmJuaDrE z@i1dH0kxUfjNFSa=kq>h`Exyz}GeIkPH zmNstH58w%@7hMY-1($&q1i# z(@;6o)wMJ<*J8LB?~4&-X7P=%1~mZ~O!O)rs95D?SLo8irYT&blWY}zUDitWduheE zM9L^#4XMqr|N6Sfg(3HCXYzV9dSz+&Nvo$5PMK2x3-+=y(im!_&C6S+(p@6mQsb>O zJ^)#;n-TuP1&qjI%gffnc+!ud5Nhx49G}z}k3X)RmXLN3((+|j8&0}A>i9)$J;RZB zPY=4Xo{@BpqAXowI)8n4mlj72!yIcYJx}i$=LXGGY<3dWWw5nlEZJV_| z78_PxJ2uoEkFx2MHK&GQ|Humy!;}$Lc{5x`rz>l$iVgeU|Hz2awaf!PJIraFxrRn_t@{W~Wv>Fb-?u&{R_7+EO5#z)1ayRxeY0+}-Bj*PAp_cAs48tv_S@K>v z%%;bG1tvArKWYY54BRlL=n{%U0DW&T{kt>91XeX;9wDtySA|3FB`x*1y3h=`ESJ+s zS)?*<>2)K#gidzx_5H)fW?kAPKfHJP3P3iiyV4ieaww3FIIS@HVh#db@%Vt7mI~ru zTD4|Wwj%L?sOi?cY)<_e4(ntZM^()9g|vaWZ|+NX5Xvkkc;k~WI3o1rJ~^7J;YJIV z&Pm-C$gT?Cf^WHKNJ@f^n3g%BniaFG(IhNke6D61qprR=j0t4MD8%;H1*YfIxR6p# zr_Iz497DZ9`N8k2Qi+%p#|Pna@FP9L>(PF0k0>iCC(4O_{#uV@z-@QB7)oO%U2=V+ z>Ze+kmFAU(<1u-0WHg>qKZ#^kAsi3JX(qhRQ7S#u)ZRGmHQJl%*S2C=iZ4`+#0D`< zhYtDcL}m@v-8tOZ)j!am?8i?iq5H|9TMmR)Z`!%bnsGUTL8Tij0zCnPGGMmSxemwK z4^_8`#^ldEb*sA*)05(!fp{mz39Un26=f!R_BviWbss3ZiS&t)p}1OxfIGdOlfUGo zT^|QbP=c(nHX^6E@)A$>cCP4TXXl`=i<7HG_ZVa)<4G*b<$8yus@|vvAFg!eR7%OG zZHCk1bry^xHqyhNj53oWyS2B?hz90B0ItnE{qtFzAs^)$^hl{jhA5 zV|WCjMHgehL$E{zOI2{D3YKZbw&LQ>mXKNzqnY9uz_=oXXM>B8zjfs@CUswHBtg3v zZv=CbD)t#L=E{Lq?n|&&$jmft#zH|(l#TN-dn#s*as1Vsai|T3u`$w#IVEhVlddYo z68Ps5#&y#v8_2A*l(gyI&J7FBPLupOG2^Yq=L6$u7^LIaW*x6==AE>1UD;5N1$Ly~ zEPJHwz{7IAiFU`Xh}#;~-J{*|hr`V1f!{on>*%zeTGi~Ue;BJ!jnvk}+c-I&$4q3U zx>S`jK5gyeQo3iEa-PFx*@%HijW}xEsEk)G8?)3?YjG}w(KFK_0y$##wz%J#7R}to z8dolt5_J0F+?zsf-mlNzQuLTI%JR*L{7spMFJ%Ytb^F%FRN zq{|hjS2py?W))(ZSynqCJzry}ExcwW_B>*kzq9*F%W|pl_#1&S%Shj^8{z1OExhA@ zQO=bGZ_U+rsG56lX_y<;)vjly0iw9$@i%jIXXHRV>VoK2bm3_B}w ziDa4yO{yo!E7fi$*0|DZs&%+~TLwKFBSyT}Sf3ecI7(xV08?iVps>amIh9KHEV+&6 z+Arzp9!d^a>=!PBAa`A@T%{UQWQ93@!RmxNvfN-8Ut`jUm}jVQMQG(ptQ_^6gOhrw zB)SPhNPjmv!${|*aV0}qOSWN<0PTISw8+vq zP0Ao!m&R*$v*ea#Xnf^|xrAPb>zXCHu}{Tep2LW%*Qj3AxCR#DvVXOc&)UchDCH~V z8y3yV0nF@G%gJK`s}Hrri$k6Cb!yW~{SauZrxWUpaD5UnmaBSE#vsL^RZiTnosk-m zzlh3B1h$)&D7~{Ht$=&E+*Ocsobg2{daw52W-685Ml+_Q_H~9k(;Kd=kh+pS<(j>k z*1`6d-ri7KmGHeuI#1Oa*w`9(5PFTJ<}Q3kMd6eJ)eIR!*#^z1Oc{#}bRVM#*lcXQ zd%{S`WP7Wd;^k&{XEcg-O<3waclJ?ErSudbz5bJ`bQuh1ZEY};tcO2|!zYc_@BPgy zLG!}jybes$X+Uw0^BcaIIv>M#1&+Z@_*CF$V&TQC3iM(X_8AB_$Hyvqhf)>tUZzE; zsEqY>Ci<)jxM=>stPEioGQ}(`+>r>mGIkT&X z^+kHPuN&!$g4e_phaM3mhk-xb4Kh7qKn_g9_)#HCQ90t*YOM+mv)E_^X{;;789ZL; zVLZ`MIU6=fU0pO29m9!-n1Si(G+MJysMCJ}$!5VxSe{Lg&xw9FT_^LjLdLTMF`P_D z^P77BP56kWHhefgB_9*7Kny?b6F23Xdjn0_oJDW=H5#Y)agYjshMy-ZE?j z_<3T6PYwP^YWR1P5RVDXy@U!Y56>7-hGBf752WQc_X3)b^6@eCHRYJF9cjFC(8O!l z7`_7bvnUNIfF}|s;yiqPQX7|AEy74>6ki?Z2qzn@V|GNV&Khe?kAg{hrfx-*53skip$(HYVt7rCS0QV zO}Yt#A5+j~gV15N{-yw*ZhIH)Zp~j~3ess=Q7LqDZy_m_EaW9kJZ<+Bd6CX(5cP8Z~9j2%mlBc2klHW=-c)S+A4UzS*Kjc_{8ef0ubbL_))_=S{StAebF3PqC&ZCJBaxiy2wSbA|Jy`DN z5=3m5-b}yjk@(}=cL(syXLnXUw@Lcr?c_n=C#u&zolo|cx1QJd>@Qm#1l~rwTZ@B$ zaE*uj#7_$%q&((`^3590bmFtWXf_EIBtH8)Tl^v#@!8*=D%bez??&;LKuLexH=j`M zMD^uwC)v2?VJjV|>uHhrMQ@h) z72bOS{P$0Qe-8Mdi{F5MJOMqF3GGa`vgOPNehTa}sOK}yI-?oDJ8+(6es1!gBk?9S z9xgore)S3PmjNFfXHP>PJ^}sJz)ykvyS2XxYmVK(7eW3}Ex*a=-()_1t5JXZO#W6D z67Sda*?QP3@rHXmd{XC={oTRmfDew7rJ?@n}${_}UleNK>QoojHE)Fcz&?zH~X?`c6QE4Y{FywRwYMb~rkP7Z}{`!K?ehO<-}w z@KzZwFXdYRO{!ihjh~})y}(pp`jx(X{hr9)o;?24%<-?O+@~Y5&l98uhg~mhR<&R+ zo<|~}IHg4cM-y?q*=j{ruEP#CPiIEj8tV)-PPDARvEntWR&j4%y)%|?a%yT;H`K4F zi{PsBie=Vt3P-*>M>3Jvh8pS~-js=q)VDQ8##;|XvF+OUdYQQ-vZ!NnYs|c?S-HX- zJ(R739aWw@%VZfI!CRM}OdL;I#k(_ckx1`gT<#y^4Mqg-ekUMNFDWu#n&G7R0Cweg z_zBwNYXa3Y>C;@12sZL~xD6Y-(E;v0%GOcuX06Bt8zL>SUc3~Jjnv^KN&)aVh@wdz1G@$uf6u#YwxqqKKoo1ty|)=ZOdGK>r)nEyF&_7sR=u;(Ex%gwRQoW?E0QC6l~9R1zv`5XRxj^JEYWOrO?zx@-oGlm0e>o2R+2i0(20ntn>??$d zjh6p0Fph?QZh&N4dhsG__3f7h8q%6<(vQLjW9D?^(L=m74H7jlZ8pjw_dj zkLy&OPjFad|Q}Kb6 z>soGCZ&%84+Ywl9ZF9YwNDd@Bx&~9pf#&+^?!Mk+bG)@Xsc559+_v>`W)Sc0`YaeP zSnD?F9ICtHgM-OI%cOJL;@#b?@wPRV+p}Ttif*^9yDQn7a{If7I=XsMbX#|PAfD=i zd{$~8-j;-P?R^$g^|e|316{qTcB_3LnY0q!gByCR!PG!+TmJ^lo6fvP@h66Q`rX!{ z_V(m})jyPK>x>UDMR&57L1L(%*g>nitF^6ku&;EHpA`j;ml>Z- z`}fmn;@YdnAA>K~_>J054c^4>$-?i}cCs@I{~L|pm4$yvTe_baIp5Ryh%9`7jtf^|7Jj0}7iZz;XnZ6K|4EH6$->uZe0dgrwZ>Ou;RiIn zG7G<1<6~L)uV{Q@7XChsUy+4>QsY-=;eV&`omu$THNHO!|B=S8&%%$Hs`R-r3qM)o zug}6S(D<9P@Ums%__uUy0D|YSfRPKQp4Ik_wNV>6{v|j?J2Y--2nCfEe#2@!z2omBO~oihG5<5cm%9WwqJ<212@H_P}dj8oMIH_G^n zj8nx2`(^w&#;Mwat7ZI`j8mlt8)f_n#;MAKl`{S?<5c0na>QfXaw}${&fCsA9YIU% zw4<>te~fK98eZqS>`5r(rRho`Z(nw7KkEyATk(H@dKv!5kNRUdUww^a1avit~A|2?& z&t<>Jy&a79J5RRrDlM3{+2Vy{tEVAZYBq$sc)Aj9atq|Y0BGcOZ0}_UFGdCh(>8+L zI(VUkWigjM$-@5s`Gw6zVq2~}fSTMEf$&=)fAr{~X|b)*ql}yrJunnt+<6 z&q(d0WqK-ll-YpqeJWPUcKF}{iHaW9;uT!`q(Y#OU!V;d;fiGG2NqH!3Yv0IB=}jR zD*BKIlY573H3|Tp$_nTLssKU_fczpjfommZAMyT3(86soxvhc4j}^_|K@S0~?u9x*1N1 zZEe|){0@Mp9Xu@djSr6<+r@S}R0=9e%f0&)C|5Sn*9bw)TPLoUxEFp##$$V>K9vB6 z&O(aI4Ik1`=Vv2trSsj$9SpUGLALTaGBfBjcb>*yyL)ICqNf|Si9)ix@H18d-N$PO zFpiEh;!Kw&igs zcv@Nj_iq&NI^3!(;6DMV2EHKXEoh-B=;u?}*b|CkTZd54qS`IHQP2}erE2=#`$k2} z(IH{ZSMFm~o=3&^ZLJis+hf}%{9MVL`&pHhk2Kj$X%t^bXZ1Z~^;GnAG9Ua$)>5)H zR&0&Fj%@6`(Db?aL*tQVRXWW&q&alOXq+L*d1jiko}5cZ;|xm9aGLW}a!wtElkNP} zfjvi$9orOrolT2cC_9@*8QT!mD6l;Xw%A!u7F=^CdgaC|pH~f=Li0<#_X1G8;&wnv zm-jNsradK>rVV@bmMb5HUGIcl--AxP0|o4iZQa=DXJYi%O;;X3zrP*I+H~ckfNoT3 z124>OQ*?h05&+n3)0)qb+3)tnY}#aWKP~s6-Dq@hJYg3+3~h-)_Qh3cz@}!55c?+ex6pO zOOgiuw@CcJK_9Bb2H;?MzH-mBQXVq7)`c7|YT62S29hvJEtQewzIk zU_bb8ivHhG;olH&t1fYC5Y{cQhXKtQ3+iMDK^0;rHY|QId%=xW`cHT zEWGS(U_bEQJH{SXqus4TvzX&nG@Q43gXxU_1olJr%?HQ-Ul<7lJ63S(?(3t!m1WUM zz%U-qHjGD6XxcEokBBskg2!59vMn#LFMdduM@gTmj6r(YDDX}M5B4L&Ozv)QA6%)M zS~@5HPzRE;ozDGmXccpMs&X|L*yr}y&>aRQ6f>PlN}Ee1@w80Y3DE?wP-UH8eH*j= z3;~~Hk^hMdGtu{Hxm9zfrt7@qG-e?(k@2T0D`Z8!!`j?Qp=60>Hlt1NU36g8=ohMl ztj*@#s$z6V8T}YO-#ZLsbO|*K5S63SJigxy15cyqr`2%w?R0tn`j$4NYcO0LxF4~b zDdE&<*^n?%73TkNwrZs>wC|kzvedfvbo8`T(zO_}$vU)AlTAJ(|=!i6RwRK{> z*lOmIZA8-|YEjp!TiRG>)vsKBQJq`8tlnK-7mYT0;up2lHhZGA4Ykc~&0-JcqLygW zN>6-AZM3e&t*c$`O;+6$t!j>DCah^%)|iQDiY{r2E{}OKTOMm^u32_*gBR6Y)r`z* ztCxF_jZMp{qsy1OwGB&_dC=9%8XBV2UO^1wg|&6wTGvDuw=DG}Y^-hYMw@HvqaJEa zw61Dpv<9Uuk2ZO8uZ~qUERDJ?KzrC1*EZBGTk6)d)O!`%T(!6k8p%Xzf!$>--fWwq zOHt!!6B?)L(_TTAH`h12jZM+Us-_X>=!$4{OY;cy@@NBEXITT}scNqBNGbEGu3NTz zL=v<~)GH2R?y|<_+GUx|0#TMko2$LeS5p8K6m7E2&+2YJ0}&v(~CspcubM@q24w=lwd!=^yCpPY!f%h_rS04JIMLtn&HmBUaxUD>*RGH(<@GNSqy+HHiNpDY#@-;gqvmUQ+Frp}u+c*f9Ra)4o?6~CwHB8K}Q z``id5O;RIu8&+4<(co+Aq9w>BVh!R^4YV0)-H=K`?zs_9U0ND0Y(PI^7q72ss6pjW z>9m}~MSCqua%((aOmzwWF4}K}8AYLAm z#~RJUkbg&Ti?$iOU)O((dtt`Cf1md789ez7Y{Dj_BQN6&`Dah@pA*5jbt)8d5dHw+W`w&C-i`1vgnJO~LHH`dUn0!GaK0DeOoT5WtU>q^!UV!s5N<|z z0O8#T-$1wr;Sq$dBK!bh4n_d$4WvgHKv;utEW!jr2jOOf#R%_4cnZQj2xlUE72)X! zb13BC!q?wKdW1cPksjebgs&nz4+Bq5u4R20;Y@^oL0E%u zHHO0k!hgcx{Y8ZOF{x#Lw#l;B7ur+C=82n8|Ctb-k2ZF`cI?<*gjTq4Nx1lef-&pF zM(g~^=bXM^<_x0AQ-i3FryXuR8&KGw9tXpx+I8(+TK%K(9Cf z{Z-IUIRQNf{VnGN^qHW)cJTQ6s{ws4=(obo()RDWNp=8f|De|(f9`!q)BPveWFUPr z=#^-{t25GnE}i~v(7y%xnhbh-n!X40*FjHa&{wDFuYx`g{Y&nVF#XfloTlgGSk~pB z$1~EeO4Db8{yosUGUy3Op9x$I=tn@m$XmbYCcl5FtRhp%dUk_vD*Tq*lVRlWTX`}g z$@TZ2ziZ&{8u+^g{;q+)YvAu1@M^&9M>G4+42?rBFYayQg$KOyTBzfAHYP8#-_`7C zG5Z&}ua=kD|E9NxS#q@yc(d2V?1STcg_ogYNSD`PUEaHYJ=RCWJ(zRx!YzipHfli5 zL4i4{>FTc4vgF(Wcs!4iSFsK;by1hz7ow9{yszVB?q9IfEHASM=N_Gr!Ix;j$h}bu zZuYjA^8R{E$uBfNp6JN>=;AEgUdi}#x+1vEl<^W>{{L@***BjpS3ny=kq&3;aFGs| z=?4!^9!Z|m?O9V%|i+Nj&j#Ir-$zS!tv_DPz3k!ByH(Yr}!_CcC` zkLi7mh9N67`yI{xMzf#M>|Zqd70v#{)!M+#{zJ3h(CjZX`w7kdL9<`b><={i0nPqD zv)|9`?=$=P%>F&IU(f8%GyCz({yVeZ?#-#HVrD;`**|CY%bERgWguy2CCjmN z8L8{)9a?`{WMOGV>AcAN@_7r&&niDFa%o3f+uVh2#oX3`cyC*0WFWb=YY>ZW;F!Ol zqT({G$8!;?KBsz)@gru>obe;Z4`iv|Izy)K#IH(!k9JV`S$1O5sq(n)ruhF&J22x% zc4-G?;wGI569BZlY11h!EgRf0m`L^ymaVT? zp7JDkqwESwf!=~Q@;}c97k-iV5!n5g>B6waVGVTQJ|l;{a|Zh}>>M`dkqZw=rr5nvsF;I(Wg{^6vnXw+HPC}l64{stU>cJEEh;X5J9(e~oCR{9@MfC!IB^(jAz)=T|5iSYd zkH!vIHY4T1JSMhfq#}3!xGZ;Yufw49P?hn3BfeU3M72LvzWA}ryJ{V@!MfMUzHU{@YbAglW zW<;(Du7C*yifxWXn}Yv=-@wWCE(F&Hw=siR_CJ8_=HRC&L8-kBk=uhgFw8)ijO++T zNhz0+dxCY0%#)Fw!R3t1x91|wuHe^M?S)dd-9Zqnz#{uGl(Wamn*c*C&a)DTiGDOy zo>dRJB`!(BIbuDCc@~Qo;)XO_Xyt!}+W1=DMKG)4zz%9iyh!oBMbHwzrW)_0u7sF| z@hb4`R-g-^%{9OU1Px#e?Sge4dmR8`DT>7Y#$d+-`#d5cX+t9S4^R#)>o2g=fcP^A zVSi4}eUQa3a=334pHv^mZx7?yLL9@f=)1=Ktz0$4aN!FvRq z3(>~;&c(=JjB^lr9P69|Ovq_KFAF;>A!vakV8?~dUty`^oZT$Y*@LpiJCDLxCOGq; zt%=U*u<0UpVe2I4PsqR6c@mgO&KDu`WM?{ZnBsgDX-{@8L(Ws39Y}i$B!zIn-{&Ih zyl;WCKfmH9fW-n(^UvDG?8J*0Me@(#7$d};$S40?!iD1VkRkuPxnL<4E_psB@EZ|5 zkU9VSxqxSiONp;+1y8w{0t3#kIuDo%QGi177e5MlE5&yqPkwa__?Wl^n$NFk0Ngmf zz2C}@HUnHCT8UmV1bDUhB$S=M^fthq)`SEM^d4XEPc4|ijK@8y`{t?NELiL4)NEEy@cPPVQv%)QTN~x8spXCVzg}V-8uNZMyyW5o5UX|+k3=s z7G1>uh48gvfbdbOkI8jDVsXxDWS8gkOhm&w zyV$_ay)+mn4{66ZFG2TXo%0}Q$axc4hMfn&S>S|`f1&dXa(>TthR`T~v7HA%KWaO- zA>sSB!#T?bwzC5TerP){BhQa)=MbFP$F}nBkxp5 zTRdjcEf7fjD{>k$nIPbhfradIW2S5anqDssy6>MM=$MlU<^@o@*w{G>Alvxf0c-4O z)Tkx6QD*Gvgmc6Y8glF>SgH^Y5Kj&jpV5p zP;)s-|0+v=2}%q#+|AP80Jt%p9Lh&Tw)r5=3 zCt9sgoM1#Ofv*d-5-u5^NVZ#{Hp0r!gc3BB3h{UWc#?!G#rY^Z)IkAb;vB-AgzLnO zA;4XP8^sNTFDKkA;_yGAHH24)%URKG!mGqDSh*g;s|9D_T48#jwd|h0Nfhn#`_V#qymu}Ref4ux z6siR-|JO+ntl0A9P=(+A5(wiifP6Wjdk#YJ&cC2OmXm~- zwlfL*KIeQ46MpA>$eH7O5;^BOH^8F>oFY^+&q;wtI9H?epz~8C&36hw9ph{TeylT@ zrt2I+o?$16E>qxq1C=Or*1)L7ITP{gINtId;>mXn$wFMBF=A7?sVr2)MAG7TckSG z`7>I5rgJXvZ(&Q*})}#wWy;}NVroxPI2BLf4{hyJVywx z7j5hh?-Jf9USVH)kMQ-Pl~(r`!Z(X=L2sd>gl`wCq0i9!tjZ4YB<1;lW8^(@+zrXG z^Sh!I)}`Qk`{mfI;0MHKS+9@(6*jX|%%nQy9n3D#P5F

3E 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.client_flag | CLIENT_LOCAL_FILES), "client_flags not correct"); FAIL_IF(thread_id == mysql_thread_id(mysql), "new thread id expected"); + diag("cs: %s", mysql->charset->csname); FAIL_IF(strcmp(mysql->charset->csname, "utf8"), "wrong character set"); } mysql_close(mysql);