From: Bjorn Munch Date: September 8 2010 8:09am Subject: bzr commit into mysql-next-mr-merge branch (bjorn.munch:3206) List-Archive: http://lists.mysql.com/commits/117752 Message-Id: <201009080810.o888A9Cv002970@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1858310925==" --===============1858310925== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/bm136801/my/merge-nx/ based on revid:alik@stripped 3206 Bjorn Munch 2010-09-08 [merge] merge 55178,55413,56383 modified: client/mysqltest.cc mysql-test/lib/mtr_cases.pm mysql-test/mysql-test-run.pl mysql-test/r/mysqltest.result mysql-test/t/mysqltest.test === modified file 'client/mysqltest.cc' --- a/client/mysqltest.cc 2010-08-27 13:00:00 +0000 +++ b/client/mysqltest.cc 2010-09-02 08:06:12 +0000 @@ -5257,8 +5257,10 @@ void do_connect(struct st_command *comma } #endif +#ifndef EMBEDDED_LIBRARY if (opt_protocol) mysql_options(&con_slot->mysql, MYSQL_OPT_PROTOCOL, (char*) &opt_protocol); +#endif #ifdef HAVE_SMEM if (con_shm) @@ -5544,6 +5546,8 @@ int read_line(char *buf, int size) char c, UNINIT_VAR(last_quote), last_char= 0; char *p= buf, *buf_end= buf + size - 1; int skip_char= 0; + my_bool have_slash= FALSE; + enum {R_NORMAL, R_Q, R_SLASH_IN_Q, R_COMMENT, R_LINE_START} state= R_LINE_START; DBUG_ENTER("read_line"); @@ -5615,9 +5619,13 @@ int read_line(char *buf, int size) } else if (c == '\'' || c == '"' || c == '`') { - last_quote= c; - state= R_Q; + if (! have_slash) + { + last_quote= c; + state= R_Q; + } } + have_slash= (c == '\\'); break; case R_COMMENT: @@ -7989,8 +7997,10 @@ int main(int argc, char **argv) mysql_options(&con->mysql, MYSQL_SET_CHARSET_DIR, opt_charsets_dir); +#ifndef EMBEDDED_LIBRARY if (opt_protocol) mysql_options(&con->mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol); +#endif #if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY) === modified file 'mysql-test/lib/mtr_cases.pm' --- a/mysql-test/lib/mtr_cases.pm 2010-08-16 07:30:40 +0000 +++ b/mysql-test/lib/mtr_cases.pm 2010-09-02 08:06:12 +0000 @@ -701,6 +701,13 @@ sub process_opts_file { next; } + $value= mtr_match_prefix($opt, "--testcase-timeout="); + if ( defined $value ) { + # Overrides test case timeout for this test + $tinfo->{'case-timeout'}= $value; + next; + } + # Ok, this was a real option, add it push(@{$tinfo->{$opt_name}}, $opt); } === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2010-08-25 13:59:17 +0000 +++ b/mysql-test/mysql-test-run.pl 2010-09-02 08:06:12 +0000 @@ -231,7 +231,6 @@ my $opt_suite_timeout = $ENV{MTR_SUITE my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds my $opt_start_timeout = $ENV{MTR_START_TIMEOUT} || 180; # seconds -sub testcase_timeout { return $opt_testcase_timeout * 60; }; sub suite_timeout { return $opt_suite_timeout * 60; }; sub check_timeout { return $opt_testcase_timeout * 6; }; @@ -245,6 +244,7 @@ my $opt_repeat= 1; my $opt_retry= 3; my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2); my $opt_reorder= 1; +my $opt_force_restart= 0; my $opt_strace_client; @@ -260,6 +260,17 @@ my $opt_callgrind; my %mysqld_logs; my $opt_debug_sync_timeout= 300; # Default timeout for WAIT_FOR actions. +sub testcase_timeout ($) { + my ($tinfo)= @_; + if (exists $tinfo->{'case-timeout'}) { + # Return test specific timeout if *longer* that the general timeout + my $test_to= $tinfo->{'case-timeout'}; + $test_to*= 10 if $opt_valgrind; + return $test_to * 60 if $test_to > $opt_testcase_timeout; + } + return $opt_testcase_timeout * 60; +} + our $opt_warnings= 1; our $opt_skip_ndbcluster= 0; @@ -934,6 +945,7 @@ sub command_line_setup { 'report-features' => \$opt_report_features, 'comment=s' => \$opt_comment, 'fast' => \$opt_fast, + 'force-restart' => \$opt_force_restart, 'reorder!' => \$opt_reorder, 'enable-disabled' => \&collect_option, 'verbose+' => \$opt_verbose, @@ -3552,7 +3564,7 @@ sub run_testcase ($) { } } - my $test_timeout= start_timer(testcase_timeout()); + my $test_timeout= start_timer(testcase_timeout($tinfo)); do_before_run_mysqltest($tinfo); @@ -3752,7 +3764,7 @@ sub run_testcase ($) { { my $log_file_name= $opt_vardir."/log/".$tinfo->{shortname}.".log"; $tinfo->{comment}= - "Test case timeout after ".testcase_timeout(). + "Test case timeout after ".testcase_timeout($tinfo). " seconds\n\n"; # Add 20 last executed commands from test case log file if (-e $log_file_name) @@ -3761,7 +3773,7 @@ sub run_testcase ($) { "== $log_file_name == \n". mtr_lastlinesfromfile($log_file_name, 20)."\n"; } - $tinfo->{'timeout'}= testcase_timeout(); # Mark as timeout + $tinfo->{'timeout'}= testcase_timeout($tinfo); # Mark as timeout run_on_all($tinfo, 'analyze-timeout'); report_failure_and_restart($tinfo); @@ -4567,6 +4579,11 @@ sub server_need_restart { return 1; } + if ( $opt_force_restart ) { + mtr_verbose_restart($server, "forced restart turned on"); + return 1; + } + if ( $tinfo->{template_path} ne $current_config_name) { mtr_verbose_restart($server, "using different config file"); @@ -5601,6 +5618,7 @@ Misc options servers to exit before finishing the process fast Run as fast as possible, dont't wait for servers to shutdown etc. + force-restart Always restart servers between tests parallel=N Run tests in N parallel threads (default=1) Use parallel=auto for auto-setting of N repeat=N Run each test N number of times === modified file 'mysql-test/r/mysqltest.result' --- a/mysql-test/r/mysqltest.result 2010-08-16 07:30:40 +0000 +++ b/mysql-test/r/mysqltest.result 2010-09-02 08:06:12 +0000 @@ -262,6 +262,9 @@ a long \$where variable content banana = banana Not a banana: ba\$cat\$cat +with\`some"escaped\'quotes +with\`some"escaped\'quotes +single'tick`backtick mysqltest: At line 1: Missing arguments to let mysqltest: At line 1: Missing variable name in let mysqltest: At line 1: Missing assignment operator in let === modified file 'mysql-test/t/mysqltest.test' --- a/mysql-test/t/mysqltest.test 2010-08-16 07:30:40 +0000 +++ b/mysql-test/t/mysqltest.test 2010-09-02 08:06:12 +0000 @@ -701,6 +701,16 @@ echo banana = $cat; let $cat=ba\\\$cat\\\$cat; echo Not a banana: $cat; +# Bug #55413 would cause this to fail +let $escape= with\`some\"escaped\'quotes; +echo $escape; + +--let $escape= with\`some\"escaped\'quotes +echo $escape; + +# This only works with "--let" syntax +--let $tick= single'tick`backtick +echo $tick; # Test illegal uses of let --===============1858310925== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/bjorn.munch@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: bjorn.munch@stripped # target_branch: file:///home/bm136801/my/merge-nx/ # testament_sha1: 6f6681f758149ab5d12b4eefdc2eb0fd98740047 # timestamp: 2010-09-08 10:10:09 +0200 # source_branch: file:///home/bm136801/my/mtr-nx/ # base_revision_id: alik@stripped # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTsUx4gALaVfgHZwfPf//3cm vCX////6YCve4Hntd93giqz3a473XinbvIzz1Tre+93glL2G3d0CirncAdzAMrYOIc6yqVO3Qdqz QudwbtHy7Ae88dDG87XKtZSPq33fXF6+qrn07lCiiSpSiSVQkofatbZAKqgKhpTEwmkZTzKn4oQM QAAaA0AAAASSAAmghBGmkymyJPUAAAAAABKNBEJT0yYQamqMyTINPRPU0ZBoBoADQSaiJoJJqeUj eojTZT2lBoaMQPUNAAAAClKJMRNMmU8Ro1NoNBNTwTU0T1PQxIAyep6m1AqUQCaaAQMgAgETKYnq n6hohoBo2o9Tq4Tq/l+GsXHLg/w9LH92h+0w57y3nzt8/Dq9LPTs4MyWIPbkTlh98BjbuP5CPi4O 9AV9X7uf+X56O+LtGHZ5Jn463Nz5v3ESzf2j+v2/ZqoiIiI/GU32GjXj+kZzGxZHgf3MdDcdfU74 asERu03W9PVVU/7KvcOy146zn0JUuopei9bxUOtLdYFfgfdHH4CaTA4gc1OwlAizcdiW1OxYzn/h DMzbdPgo4nBPeV3cfVD/BULN4khnchKHxXCu+CrH0nSJ0idKHfTi/wfN2ISZdkNmBTwnZLd0MZzZ OGBe22u2Zpy9Ib70pq60zhhxmpTukl5m/Y50jsQtWUbM6DPfGsIumkkGxwfQ/z5NkYa7gq9FnoiE wxBsJlAJ5fc1/GiBjfnE8NKHkdwzdSZiCmaAKQRQjaZQhvJqkwZmZL/gsATqcBmZlczWY3uZ4qro ZK3slYnwwOf9aligopP9nyf1edf3mayPmaj+f9vm+z4WLFVSyzkan4Rx3LYksgg6e4rI5Jwz9u33 hmY+ZiB6zpIiSKKLBGLKkAYyCqiJFGMYDIwioiKikBYIMiCDDHb5CSB5/XoO7UhrdikEqLEYJBkg 4NHneT0lyy30ly7RaBPVWGxqvXuVW1YTzvu4xly0242KmyrN7LLqgp0msKHPVqrJeEVc2suzxmKM b9jXDuMXpEWmWyNR06cipuQqVDjQRprFF5jGVUNoTA+ZFtKIfXERaWYxFa2VKLqozh7hmpCATBeN dy8b3vrfLwlhw65m33uaz07iYTdOkvHHPVURFJx7OoaSpRaQ6uNHJUXM6p3T5cyz6xd+01V8YK6x zzRvqt88YrBsjTVMq2h63unuNZhiXarFnRzESO1411vOMApMxOcQpLp5HzCsUdQaTe7HB+ztlVXI KKqN9HTz7HPv+rOuS4ueLDZ4UGK+qQ8BdWx8Z+QWyW/s+h5BNQWbvLa8bkBT9dCSPwJ4jd5t98UE kQrLL66MkknHD2ERweVZNHImJ/o0VkJIeZo0yYtip0XdtzLetvpa99Z1uD6yb5zbZ+/v78/c+I/Y oaq/Z5p3BZvaJkyGNph8ANiHgTcD2DHQb3jIY8hjzAkbwBovru9q4081VRFTNEzNU9JOqqpqhPVT VV3AGD5PkNz8J7uG+tKn3zMz6T7NxO26mzmnHiNsK5iF4Cb7gTjlT68qXs8vG/IbwJBKaGJBz7ny EwkI8vHUejve/bv28Qh5fxmtCSL+7rMaGuLGDMUXwaPi+TVrMXx7moEdMlJMiSgENj2lAnjWwn4y e2wOw1cA4K/g0rSva7fk1fxZ7nyPe+b52pwHC+/VSxnLcz6ftc7TIrdP7I+kJ6VI/BGYn6JD4I9E kkLEeOHqUnyw+3Jhxn5zAjFFFEXD8vzm4uiY/VGBJwDr1XJ9Un3Coak64uFVtWy+fHy9Jd8YUxGB uMkXHDzDA9tkTdJrHArbMW8lw3RP0DlrHCYwv1lusmyJyhNJ1z9EwTYguAJo/A+169oqZzRoxw7l mi/zEqiS3Ek4E26y0VlRZlDCxVMsU1VaIgfEgT6hAsIHpMEkMe9tKqiqqqWqqiVSGSQySSQkkkJI ZJCSGSXM9O2e3L3ce/JdTMk/NuzjOc5M5mZJmZkm+757uUzdIOZ+YjrCyVtjaYxdX7sCSXipsnSS 9VJMoWw2QJtRU0yBbaphh5JbBSGGAZMnlWTVAGDk8fi6heMkmITARhxd5ytZeoBVVvwTUmq4tcYJ xMLhJ3ixWirKjdTIgylzvRsDS2OA3lpJsVUMiKhhsSIqW2QVyzwwj+pLr5ElApgoGuxnRO2ZvQpo ShFsJRtZCbSGtIFMHviauSMBI05mTiIULUBZdDBR3p5LdK6oXqSrcY4ouEpKBSWsxfdo2ZlepAIh kFcIAriStEOUP3A2j/4LV6BZmuZEWFyMr4m3A41aEXDZFnBuwxZVLoSkbbY0uMxfMxJqIuTRLCTb RDkgkJAZwa5OuTl9HBDZROuYSE7JE3VkS6RrTOprUvxqa2/ZgkhdLkHLFgMCrexLUsYg7Z5AgQ2i EstdiTv67mwFDiJ0M7vixjUnYAkAVJIIa8AzyGC95s3MZi2jAhpwIFecBjKJUQrstiL4gHqIEQCW qqMHUNC2cGdui9hgBuyGs1K1UIl41zjOd0qLy76g8lVyKucRYcxJh0ciMC9E18hYMgGRDyUSVmVV 16f6yZtMbrGnoGKTVehEY3qkbQqc6WBRuSTCskYQmCuFNFqK5qS6jt9Qdffq6ujpn5BpWl+mtWct 9j7X1TdSLZinbML1sMqEL3WqkKuUoXTtSS/eHLkFGhfnqKEU7GSSZXSyaoqozkLC+LphEVwwoSDy AGOwiLglWeRmeW43e4ezjY8gdd7+i0sQ6mUam9Z1lTNnQxmE7cPkQo+QBF3Wx1E2bOaciZ3b2vRt rYX22C6EsSqqCHI9CY0DkkUIgDPJQNMc8EU5iqOBHE1KrIoJBaIkgsgHkVn3WI4wcNzoP/QDyBfo 2N3JY1XY3Wi3OLTAKLTdOZ26KX3zwdiHHY5nXd0QBZ0BvLLbiUyODYdg+GIONgjuxejmaKKeM9iG 5czGuziAknnZmEh46Vj7sBo21M1wehZPQK5cWKnEElIZHBTKwD/FUATcJIlfujM+iBoCdtgi+7SI G8WhuvMEGMBTomA/2cMnMHVam/tSc8BMe+Ft4s3cUmwQ2eG/PaUbCeMJ9jntvn7TuTcRhwN85hyg 3hTB8LuvMzw0MO3kxIz+NtiEMT5QGXZVVcl6TXV8CvbNY1xjjHA3OxDsTTo1NIRJ6E8STBa8hRMD D7hF1CwIywgRAKJJIZZsRLmhLSdIqRyXdMn9pkhxxA0GwkniSjrrhM20vPBwHwKxs2mB1BxwApQ5 foHAYUk50dwMzNHwX1BGbUo5zCDlwh7DrBlnSywaBXgTqsi2349z4mc8lQvoIReNhOEPQKKUEXj4 IaqAtwKT3IGgDh4kyT985f5rYHIFkQ4hJkwDOHqew7ZhWv9M5hEq3JAUYXZmgB83vZE0Jk6Lrduo x/EEaWHKXatOUvlodqmlk5FEmdDcyRWpibbOJIFuTBQyoWcxeLZhV23DICayeB4iHYCZ3a5ms+Mb PCSUkwnyHIzsDgf2uHEALAMeSF57ZSSC4FA0VeEM7DPe4x0PHN2ogqhb7LrWYuW9ya011qNugo+8 TuTHnoopkTjoE6ERNX8gkcSEYdxvEcaYE80NkgZOKC/JJlPcqeSPdGCcPbj3EdEc4TMjBYo4OBYH DqSOebwqmYx2zi2MN2ppZxzHSs4d8qC5HvSLh6izC8R84wmw49OSGwHcNu6TWWCcQm/K46LpJA3Y SBYBQWFIX5die87MKYiqjNID0vkWa5xM9JghwX2QKlh42LAiUhOi1t0JghkFxoBqGWg/LvQE97Pp opgKFwzRvmCLbbVlWqPAL3nH5syKCA0ZDe6LnsA1CbGG7V3XczE3UXD2ah2cOQsuEvq7Y+AjeQtd 3CNmQpNd3m1XmwligE4MAN5OUb9CYMBLAMu7L1AOiGxISy5/dPnsMtRG6k6oG8c7mGaqZPuwPHRl vNwjvQTGCVSSMd73SQV61Y9Axd1Sd1M33ucbb9UiEjAxyBzsC1nIjUo6jQRs2BjOxTXjzdsMUKph rb77x/PW4XcMt5XBGTf8E7zwHj3nkngjhq3JlE93VtI4niPyXoyBwjw79lHNdChdGDEVNXvzpGGg rTM6DGluris4zYnGcWpQUBI9h69WGkLxdCKBe0IFAtFCcNcIHs8SQSwWxmBXNRIVx4ZYPh6E9oWC +RVZIlOp9hDqewKd6zjkr99gMzIc8K6NcWpeDOghUX2YiDw699G222zuz35u2Wu0Q29HEuRynd0M cpKozbuYuB+QPBw5/cqOrteaLrcHkT8HCO5RnIFDRA4cnwSp+QI5or9DZfMty4c4dFAu4jMQwdjb vC1ZdVs9pG8ucYM7ETJICj7RTmIKwgHgKhY01iAFi8MBUOs4NEibjZw/hsANp0HoWKNl9RtEpT35 ZZBlJCpArBxSSWTZw4OFUZZVzJXTgm5x23a/cOCa2fcgvxW2zexUUcgYxDJyJxp5rcMg4CZGhQVB njweRKC+J74D6lk6oSlyNyPEM4uQc4lYxG57MNsDcQD4gY9nNvPs2/tvnlXOX6FWgnCWHpmfR+8o RIojQ3evdhd8ezy5QoCTg3MgRr4cImHuviBbaDCNCclvi9kl3iHx3prmsKLTJtnlUNIhDkKqeEdP TCSl0JKFrDi4jQz5m+zwV/aiAewuhEh8SZhAnQBFIk01UKGWAy6mYMPB45BI5cOYlZOTRLgSdgSl Ldzn0YA6xfhhbqrYoKTtKqB5HeL01jEBxlKucFJhq4PmeqKlXB7jLQ9/u9zR6LPCeNbSWH0IYdDc /TKWT1hmoGX6RwZmfKXx8ZPfE4ERMoF62gwQ2clsy2aDDbFBG4E/LzZeRyJc+iVqlhDkKbt3oHtB xMPUd3KehKaAi5Nym2sxk7gOnEdYaUKm7WSG4hRQTLAxEXDjb9YBxKLGfJfYVk/3FeYxxvyZjTk6 ahJ3Bprl2Gv4Pgzn0FOGFcdeg0lWrsW22vSs7eyr7Thlv1HCz0J0JqT7XJ2pmnuHVE9oS1HXeXmy 4MdA5+sGMDNPKb68n8DbtAldS0PWIiXLqi+zAxurLb+0vhNDCE1Blf8LXllLqrYoSw0XkR0UwoBN gJ1EXXkVMoUKVWWtEJNeTZfmNwRUKQMEAcUk4YgPAy79SuPBhnxoWXqUMUUtsTGvjw1DYY1GGSuK xbE1gVv2BnIw3rYruWVpOLMhQ+XyjbfBUNo8/L0j90TtQaZ24qU28qo1e64juoLvvluy2ah2688L e/j5mxoj0XkZpH5i4XnjwOOtwtQ43DeMsegFWwbvcZboNt6lhwMl6DDBvvgxq8cK21l0tWBaLVKL Y7szENfQLNyiST7SNzdZr9a8ixV1h4HQYD9qFTt1Wr69dd/B2h4T6nZkpBWuLFX3taatL7TUMLKW 8bbdD3C2J9h9wwJhuS4es7iehrI/BPc6kfd18OU5eKzKW26K2S3vu9ObwmKxlOD36mIQ1JDHgczS Qz6yjqs3EajmnBvK95kvwYA9vbaQYD6hIK74bgA+I49g5LaGBvLRm46ZwZwCVhEZ75GJ2XM8Rta0 z0kf2oHtIC62C7GNxEIxaRWFB3gckdueaKe1tn0AY0h24fER0QY495uK0jElbY2Eo7o4fff6zgXC rzgYCXNCQLneCWI/JSM+ADgSQO3a+yfk2OJgpnpFx0SM7ZHvLAeU/E4nI4mOGqMaGiLMwtjV4xAY CwidqQlaUUKg5zhL7HenWgrCbkVD3Jy5k+CPUmO9r7N+bwG9d9V0cmIxJwvpovIrGojSKIjWniai pZaZqYJfaWzINRKoMsreMWkzrFKk1Z8B0UmoMxs4AX8oatucuU1AEb2HcrMg2ckYfGdKyzgC90Hp BOAXrSxJWPX1BX2ET6m+jrJAlhkgNCkxnQ4UFF1JTCzEC1AnOZerDC+5JMlWA1jJtsbvTLCZ51jX DIbhpbQ727996mPsDyx6BXtmfZeKa3R2u1aVDRLXOepEvmhQSVGAgzh0Q1OEZgoiMT7Rob+JoGAO ojN8QCB9JZ5y4Q+xwcmxoPGr04NAdES8zF+2+YAd62JCP1s1THHIrRfwHNpPvmWhFQNlzLWps2xO gb0eQaUScPDv6RORa4Oqmm7UHhgvx27wUiiREizGbslnuZvEVVVrAavOc71jWDO+bdZ0cHEYxHdl Kqqr1gZhjIkDHMsnhIxXNEA0avq+4oRu6q7HakAMGbEDv5Wn5GRLXq5CZhHJ4EP/EQHPY2J7X5Hi 4AdKSMjpde1O1adQHUajx3YehZCfAQBmmiLsoFneKQGiUyR8g3MPFF1yCfrCVG8Dx+KC1ZomikpD 7graCOLDOZiDLbx4pxCOiE4sxuc6oCztY4cCYZIvxozBmk5z6G+7JKTYjC/B1s3gzBS9jvIlVsTg DfHwg8FAymFulV7YbzJom3aoL7q6jVO1Y26p+SkQBuzs5Rsxf5CIZwOZmYZl8NgNbVnIDepexrfb rN412jFj1yDGTvpSkfYj6muk2W7wrCNA0UrJbbJCqhA0CsLgohcGgUrLgs0vssXKcQrCF4aKjIcA ZwKrfVG3S3o0DLfcrlfow3/I63/T7nQ2Xc/Z4NHpcLgfl5g+5Vf0rP4Nax/c1YMVjcm5cwWFUKIa KBRQjIJGE+ae4ioqRSKRVFUUjjMWZlNC1TRNFoRoIwbON/t7Vf7xMZNXJz9we8bHJw3KCNC9VlL+ z9bqv+fAVoZkszCwplJmR/7fpdn7kd9m3W/Sy/+b/pbLdP1vPfq32wmrbbLU4GdbHLcJp+bsGf1e jwjf+rluJ+L6I8l6QxORMIyisWrS4Wo0O3XUqarEwsVs5ew5R95fPnH232WurTvKj974voW3YmY9 /0lTZn88EHzhpGXx7XKBl7voJ6AWaSRP0fK+3P8ADgD3xreHqLV1TmbbRDko+pHvtKtQeb9c4pUD fd0q4EV2/pSXIyMDQeRxECczsUDMCpTO7GrUNyKpla/0zDc3NzDLwk3tZLvAX8rWk5UTYjHf++s8 QQ7Uuz5UcOyuerJVpZ1LKsF+N991ktxy8ZmGuSQ5zkS9+6ecS5V1ieTh1W6F4Q2hyLqR+C+rqKHy ZuVqXyIvTsotP4+akhWUDgeBxSTmmTBPQmLmT/D8f5semTtSxZ7nd1os2l3g7bHk4eiNeGNf+PoY LbuGpjXHMXbjM64nxzyyT0/zTgljRycZKKs2wzL/fO/gqYXZIts9+DV2ROTk1JtG2LPCF6lw2cU0 IcV1PlKEFtKWDBiAJ8TJMB//IPO06JMRQYAjQ1fwbDsv0WqdfjfJ+IfTqZ2Bvrm/LF8lC4LnuB9x b5264Dex2OsajLPg2jzkyXoLnV+D2mWlMaWNKxozQEqgooaglSJKIJUiSpASpElEEoaglRKIlDUE qJREqRJRBKyiqUVkolYoqpX+oax5+Gk/i+2AfOJxMl+auUuEOxOXrDxjmT4XF/koX9m9Yj4Tx2Ed O95js8Rfv88Ftvhd7YX+OElbuSeWtxSEo+xUyRiXwWuRNy3dHwR89shYg39wW+Qc9S4H0FqfcS7U GEBYA4DiFDi/IRkHV4DvoXDTfpsQuP5p5yT0Qsdp2YOTsNOW1Y8jd6iOCtvAEa8wGdm0coIeeT0X h3gBj8wU4qf4O0va9fc29+z+gfMLaBIc3lTFN5KOtLS/BYRHtTxSicQYq8N7VwLeO2J/qR0nzWn6 yhViQp4danX13U8pgsOlXy0AfqrbWxMPljHl8aCZSKwmKwK2rP+dLb/AR685cUJ5yKXqAcBGhs6k jAcRDCSS3fDR0JIPZOaW7dBfu5DbhrDZxfqjdyJucXejnCZHgEhYAPBxz5dWAvLyIibhoHfvKRUD cGpgZSdSk6QBOkP4JPzNofy7azw/Tga92H8LyEfoJRHw78c2XCljasz6uocdtXWT84TdPJJJ9UsR dIepPwk3BuPnGs4VjMPaE5o4fN3DynvfJIsj6OzS5LvUwKmHdLoWJIRHCCXThDcAMCCBQFQuENbN dvPFaXJW9Nyq6BAVFqDQN11q+BjWe4pPRL72JbVPJGdw7NmWYqs2iSmoE11oqoaLQwpWWslJp35i qInNNPG0x0TNVFEkqS8nLaD2rBmaZd3XUbwlTGcSpd8vMXuLxEDwC6Pr9vRuvLv7HXt58aYJIBsd 5gCr3WbT5Y8OJlDHKSKJqbN9l21oOjb2vY6yqp6pI80kdY1En05FgwmkVgoIjFFFkqGAwSRvkkLJ s6UeCVJsGPCm3c9/W212b0r2OnPa1ePP3pTnUiBIk33Fg/ED5jvaz3ukTKh7m3vvu+oEAKE/cFu0 un3kC8h3Bk5Z37P1eM5ycskn3r5HgA1TX07s1vHx+MPpr6zwAMr/Ds5z3jx6/ewtyR5m5N/ZovHJ YxSSy45CxrXJtbwsmafMnEgSwVLH1YnNWrHXPigxzgAFmPgVE9l4HNAyJ2AAT028a32eOVaVuy10 /+BqBup/2m91I7UkngE7KqjcWhHIq6mtq3Nvi9nAHW2bVda39qWvlT1C1jJjbqeIuQuf9xfj8hvD QNp/hlQaBz00QxHpfYu9+WjWsyr8BWt0f4PDL2LyLkkig1HsbR/Jvi0pdZes4biDri+q6puZNJeW 0ThTYx7dCy0jwEKvh8T11Peqq1MTKlNT5UR9HDsQBVnYsfYH4eLAF/0qekAvkFOj8CMTD5r9E+c9 gMHKFuvz6TjoeRxA5Ng6YJc0HknSCtwb9DpF1JkeFkG5VIEDuVtxxEpzibnGI0BxF1JDhHHT/UmJ K0A7WljIT4JmtczmcC7wJgqg7QHM+w9cnGwklu/t2NzAE6tzcYWg5jwcrmVXxix/BU6viqYqcb3R Y0JsTCeHZCc4OkyOJPav8/5zxsg5hpEy4hbHdOUT9UwDYVTXsjzU1flFKpZHal0GlOeLafVFhPsi 6l61eCrFgRhva3nCZ322xYPwmX5SVJuT6KnHq0nrO2dsGpQKHxE9ZJ+kpGrIPuc8DEEMhSVJJKuD /ZRcTHgXPDUlqZxNX5ry5HyiS1PsTGYpiTKWk2cfqTzOxJmO+J1qu0eV4Hsqplc8PIfxW9tDgTsL mieWCe0T+nqtzPUKDeHyJE7rlgdNIpIozRgHxPKPN/uqfbxS5JJk/jOgexmI63ajlIg89qQaTNLp JDgvY9MA8Wd0+Xz9ofEPYG8N25VPNeC44uNVbrT+CT2eKSR/Naj5mUjeHe5Qmt5ka0kafNNk8fRN Qd8/I+X4n0D2TiHj+qP1C7LsCw/xD8wQzR3p8J0HVYTtJtORnQv3bteo6U0poYOQTD521606IuSv MsXJLvl76o+uLlW+XXXImxVtayaGSeCeaPRDe1OrayIeImQGUJgikQc5gH1JuS8PzoE4Jgn2avRy RcdU7pzgjRU57yjRU6XrYft7e0jIdjac01osEbvokldNNA+yP3cA60/NjfqF0ylqHWWxd5buk7l6 LxXkTpXsGsxdqxpSebEQ07eDxlqeo5B8kYBdB0c6h9EcZcUSRQy9eijt8FmWKaBzYHv9ocQeNOIP UnGHCquJV3XkJ0LObW4KYX3LV/T+aIcjAmz36D80HxkyUOKMkZyP5S1oS1DCxYqeVeofBuOtkMx4 fJmzMwNVcCTEQwWga7jQbVonw9AfVqcCq8tby7bkVPYah2BgI+CNcEfE3T8g898ooXOFbKbApeuy 26P92CSfpEvg6qLFIvDCaWuIZP756otmOsR0sC0yqMDcYFvi4pwE5pfRbOReevnmowwZul4emtXB efvl0k4ywTDUT1mE1SbnrCXS+P0iQjWKB1cKUBrFEkniFqSfNctmjhMs0fgqHy/xk3tdodwI6qo0 r4sg8YUe5sCa8J8LCdU8pFO5NToQw4vCE6RPmHMpcKd5MOweWXCcl0e4MVMVGfX8kzSSUHyTWqjM MzSdJ5E70R1pySTtVckeh83xJxDjuwS/bE6icUk8Il47JNyD0m5wJf780vhPJGKOuE/ETn7BwTtR nDwRST4TeiDHwTcnT09BgTwfuuzHii8TyZjveLSy1mXjwb1rtVeu06IsDsDlO28/eLYTik0qlNru DPEa07WxfK0LX1m4kGpu4StXrT2QtfeWh+AsSSbCP4Uw3ujnra16ODwI5ErA8D3TrmoYwEZ0V09s 5dQ5eK05TrL5BzI2zcSm9NlBpEzJaFltwukLXoTdLgnukl2p5YJYpqpWxX6VVZqsFgwdVUK3wnZi zJag9skn4lqDF54b0+adYdcn6pMENcSgcObjEtnKpK9cSm55fl5XoD8cCeyz4QQ4NAiiKoQUEYRX KZlmM8qpu9DHEqm3YqepdVXPkzEFFFiixRYsWCgLIoKDZYe/wX4j5kfisWJiYsWLFgwZuzxHmkD0 OJH4nSAexKJwUgmSyrqqjIdDHS4g0R80m3b6Lz8JrYOCHqPScCV6lsllJpMB40Umc0lnvGxm27sS 9LYW2ilEpgtJcT1RbZzSwPGWQb8VbVWEaL49y0jUvOu+WocfRLhaOPDkDNtyXfVOJW4qYtTG5gqv FUk2lJe8iZ4RLZJqlpPySrNmGFmBPrMAvhxThR+SHvYKCypEfCLJY637L1ixeFe1xKkkWB5xPQmk TqkXDcGzyNp/A4BebCkm9LViKyjaC8L+3uSTUnQj8fUmRrKOxrq6SSHeE6yfmjwTzIe0xL9sTELM 1Zbr/ThYkh8E9CcwwekmXelftF2Hv6E+/xPwmgfUmjUd9Qr3KShRwT9o9zsIoeTiGKGqrjGiTqF5 i/IPYr60Q6+C9lPhMWpPmlsJ7ixskm6iTwpJ6jWGU5keS05lW488Xl8UTUnYddXuXqexezvXOqYB Oy/+yvv5p3k4nKnamxOzekkcSfRMLB9vgvtl03JF4YvrWXMXRF33WXoM7jmI+ZGM1/IunZ1fSEqb vf+6Un3KGtH8pkWHaNfqjYnceZMiL0G5FjtY+xG+J4kdQuI4prTqRekqg8TKJsPIO1KjnFF4dJcj yO6a74JPImkJ7xNEmPVJqDF5IqD7TfVJNhgHvMX4iffaSxHJqo5v1HURtnQmmZNR0nboYKCg5yfD YRzJ1j20+ITikDYF0iLInQnLdvCT4F4bsJ0y4Ryp3++rzK81U78mqE6DFyTs3B1k3IKwl6Ns8Sdi DW0XMukm5O0mn8npr8x7Gn9H3tH0H/4u5IpwoSB2KY8Q --===============1858310925==--